summaryrefslogtreecommitdiff
path: root/spec/ruby/optional/capi/ext/util_spec.c
AgeCommit message (Expand)Author
2020-02-28Update to ruby/spec@41bf282Benoit Daloze
2019-10-26Update to ruby/spec@28a728bBenoit Daloze
2019-09-29Fix or suppress keyword argument separation warnings in util_specJeremy Evans
2019-05-29Fix shorten-64-to-32 warningNobuyoshi Nakada
2019-05-28Update to ruby/spec@9a501a8Benoit Daloze
2019-01-20Update to ruby/spec@35a9fbaeregon
2017-09-20Move spec/rubyspec to spec/ruby for consistencyeregon
799ef6caf6da'>.document54
-rw-r--r--.editorconfig30
-rw-r--r--.gdbinit1350
-rw-r--r--.git-blame-ignore-revs23
-rw-r--r--.gitattributes8
-rw-r--r--.github/SECURITY.md9
-rw-r--r--.github/codeql/codeql-config.yml3
-rw-r--r--.github/dependabot.yml6
-rw-r--r--.github/workflows/baseruby.yml80
-rw-r--r--.github/workflows/bundled_gems.yml166
-rw-r--r--.github/workflows/check_dependencies.yml78
-rw-r--r--.github/workflows/codeql-analysis.yml75
-rw-r--r--.github/workflows/compilers.yml281
-rw-r--r--.github/workflows/macos.yml113
-rw-r--r--.github/workflows/mingw.yml179
-rw-r--r--.github/workflows/mjit-bindgen.yml104
-rw-r--r--.github/workflows/mjit.yml113
-rw-r--r--.github/workflows/publish.yml18
-rw-r--r--.github/workflows/scorecards.yml72
-rw-r--r--.github/workflows/spec_guards.yml71
-rw-r--r--.github/workflows/ubuntu.yml146
-rw-r--r--.github/workflows/wasm.yml146
-rw-r--r--.github/workflows/windows.yml149
-rw-r--r--.github/workflows/yjit-ubuntu.yml170
-rw-r--r--.gitignore250
-rw-r--r--.indent.pro32
-rw-r--r--.rdoc_options4
-rw-r--r--.rspec_parallel2
-rw-r--r--BSDL22
-rw-r--r--CONTRIBUTING.md1
-rw-r--r--COPYING366
-rw-r--r--COPYING.ja51
-rw-r--r--ChangeLog8506
-rw-r--r--GPL339
-rw-r--r--KNOWNBUGS.rb7
-rw-r--r--LEGAL1119
-rw-r--r--MANIFEST250
-rw-r--r--Makefile.in276
-rw-r--r--NEWS.md820
-rw-r--r--README152
-rw-r--r--README.EXT1010
-rw-r--r--README.EXT.ja1
-rw-r--r--README.EXT.jp1188
-rw-r--r--README.ja.md182
-rw-r--r--README.jp199
-rw-r--r--README.md91
-rw-r--r--ToDo118
-rw-r--r--aclocal.m4 (renamed from install-sh)0
-rw-r--r--addr2line.c3085
-rw-r--r--addr2line.h20
-rw-r--r--array.c9196
-rw-r--r--array.rb69
-rw-r--r--ast.c773
-rw-r--r--ast.rb276
-rwxr-xr-xautogen.sh17
-rwxr-xr-xbasictest/runner.rb33
-rwxr-xr-xbasictest/test.rb2367
-rw-r--r--benchmark/README.md74
-rw-r--r--benchmark/app_answer.rb15
-rw-r--r--benchmark/app_aobench.rb297
-rw-r--r--benchmark/app_erb.yml23
-rw-r--r--benchmark/app_factorial.rb11
-rw-r--r--benchmark/app_fib.rb10
-rw-r--r--benchmark/app_lc_fizzbuzz.rb52
-rw-r--r--benchmark/app_mandelbrot.rb23
-rw-r--r--benchmark/app_pentomino.rb130
-rw-r--r--benchmark/app_raise.rb8
-rw-r--r--benchmark/app_strconcat.rb5
-rw-r--r--benchmark/app_tak.rb13
-rw-r--r--benchmark/app_tarai.rb10
-rw-r--r--benchmark/app_uri.rb8
-rw-r--r--benchmark/array_flatten.yml19
-rw-r--r--benchmark/array_intersection.yml14
-rw-r--r--benchmark/array_max_float.yml30
-rw-r--r--benchmark/array_max_int.yml31
-rw-r--r--benchmark/array_max_str.yml30
-rw-r--r--benchmark/array_min.yml31
-rw-r--r--benchmark/array_sample.yml4
-rw-r--r--benchmark/array_sample_100k_10.rb2
-rw-r--r--benchmark/array_sample_100k_11.rb2
-rw-r--r--benchmark/array_sample_100k__100.rb2
-rw-r--r--benchmark/array_sample_100k__1k.rb2
-rw-r--r--benchmark/array_sample_100k__6k.rb2
-rw-r--r--benchmark/array_sample_100k___10k.rb2
-rw-r--r--benchmark/array_sample_100k___50k.rb2
-rw-r--r--benchmark/array_shift.rb14
-rw-r--r--benchmark/array_small_and.rb17
-rw-r--r--benchmark/array_small_diff.rb17
-rw-r--r--benchmark/array_small_or.rb17
-rw-r--r--benchmark/array_sort_block.rb2
-rw-r--r--benchmark/array_sort_float.rb2
-rw-r--r--benchmark/array_sort_int.yml15
-rw-r--r--benchmark/array_values_at_int.rb2
-rw-r--r--benchmark/array_values_at_range.rb2
-rw-r--r--benchmark/attr_accessor.yml29
-rw-r--r--benchmark/bighash.rb1
-rw-r--r--benchmark/buffer_each.yml27
-rw-r--r--benchmark/buffer_get.yml25
-rw-r--r--benchmark/cgi_escape_html.yml31
-rw-r--r--benchmark/complex_float_add.yml7
-rw-r--r--benchmark/complex_float_div.yml7
-rw-r--r--benchmark/complex_float_mul.yml7
-rw-r--r--benchmark/complex_float_new.yml7
-rw-r--r--benchmark/complex_float_power.yml7
-rw-r--r--benchmark/complex_float_sub.yml7
-rw-r--r--benchmark/constant_invalidation.rb22
-rw-r--r--benchmark/dir_empty_p.rb5
-rw-r--r--benchmark/enum_lazy_flat_map.yml16
-rw-r--r--benchmark/enum_lazy_grep_v_100.rb4
-rw-r--r--benchmark/enum_lazy_grep_v_20.rb4
-rw-r--r--benchmark/enum_lazy_grep_v_50.rb4
-rw-r--r--benchmark/enum_lazy_uniq_100.rb4
-rw-r--r--benchmark/enum_lazy_uniq_20.rb4
-rw-r--r--benchmark/enum_lazy_uniq_50.rb4
-rw-r--r--benchmark/enum_lazy_zip.yml22
-rw-r--r--benchmark/enum_minmax.yml25
-rw-r--r--benchmark/enum_sort.yml15
-rw-r--r--benchmark/enum_tally.yml4
-rw-r--r--benchmark/erb_escape_html.yml31
-rw-r--r--benchmark/erb_render.yml24
-rw-r--r--benchmark/fiber_chain.yml36
-rw-r--r--benchmark/fiber_locals.yml8
-rw-r--r--benchmark/file_chmod.rb9
-rw-r--r--benchmark/file_rename.rb11
-rw-r--r--benchmark/float_methods.yml14
-rw-r--r--benchmark/float_neg_posi.yml8
-rw-r--r--benchmark/float_to_s.yml7
-rw-r--r--benchmark/gc/aobench.rb1
-rw-r--r--benchmark/gc/binary_trees.rb1
-rw-r--r--benchmark/gc/gcbench.rb57
-rw-r--r--benchmark/gc/hash1.rb11
-rw-r--r--benchmark/gc/hash2.rb7
-rw-r--r--benchmark/gc/null.rb1
-rw-r--r--benchmark/gc/pentomino.rb1
-rw-r--r--benchmark/gc/rdoc.rb13
-rw-r--r--benchmark/gc/redblack.rb366
-rw-r--r--benchmark/gc/ring.rb29
-rw-r--r--benchmark/hash_aref_array.rb5
-rw-r--r--benchmark/hash_aref_dsym.rb4
-rw-r--r--benchmark/hash_aref_dsym_long.rb21
-rw-r--r--benchmark/hash_aref_fix.rb4
-rw-r--r--benchmark/hash_aref_flo.rb4
-rw-r--r--benchmark/hash_aref_miss.rb5
-rw-r--r--benchmark/hash_aref_str.rb4
-rw-r--r--benchmark/hash_aref_sym.rb9
-rw-r--r--benchmark/hash_aref_sym_long.rb13
-rw-r--r--benchmark/hash_defaults.yml6
-rw-r--r--benchmark/hash_dup.yml8
-rw-r--r--benchmark/hash_first.yml11
-rw-r--r--benchmark/hash_flatten.rb9
-rw-r--r--benchmark/hash_ident_flo.rb4
-rw-r--r--benchmark/hash_ident_num.rb4
-rw-r--r--benchmark/hash_ident_obj.rb4
-rw-r--r--benchmark/hash_ident_str.rb4
-rw-r--r--benchmark/hash_ident_sym.rb4
-rw-r--r--benchmark/hash_keys.rb9
-rw-r--r--benchmark/hash_literal_small2.rb3
-rw-r--r--benchmark/hash_literal_small4.rb3
-rw-r--r--benchmark/hash_literal_small8.rb3
-rw-r--r--benchmark/hash_long.rb4
-rw-r--r--benchmark/hash_shift.rb10
-rw-r--r--benchmark/hash_shift_u16.rb10
-rw-r--r--benchmark/hash_shift_u24.rb10
-rw-r--r--benchmark/hash_shift_u32.rb10
-rw-r--r--benchmark/hash_small2.rb1
-rw-r--r--benchmark/hash_small4.rb1
-rw-r--r--benchmark/hash_small8.rb1
-rw-r--r--benchmark/hash_to_proc.rb9
-rw-r--r--benchmark/hash_values.rb9
-rw-r--r--benchmark/int_quo.rb1
-rw-r--r--benchmark/io_copy_stream_write.rb24
-rw-r--r--benchmark/io_copy_stream_write_socket.rb35
-rw-r--r--benchmark/io_file_create.rb13
-rw-r--r--benchmark/io_file_read.rb15
-rw-r--r--benchmark/io_file_write.rb14
-rw-r--r--benchmark/io_nonblock_noex.rb22
-rw-r--r--benchmark/io_nonblock_noex2.rb21
-rw-r--r--benchmark/io_pipe_rw.rb13
-rw-r--r--benchmark/io_select.rb9
-rw-r--r--benchmark/io_select2.rb22
-rw-r--r--benchmark/io_select3.rb21
-rw-r--r--benchmark/io_write.rb22
-rw-r--r--benchmark/irb_color.yml13
-rw-r--r--benchmark/irb_exec.yml10
-rw-r--r--benchmark/iseq_load_from_binary.yml25
-rw-r--r--benchmark/ivar_extend.yml23
-rw-r--r--benchmark/kernel_clone.yml6
-rw-r--r--benchmark/kernel_float.yml5
-rw-r--r--benchmark/kernel_tap.yml6
-rw-r--r--benchmark/kernel_then.yml6
-rw-r--r--benchmark/keyword_arguments.yml13
-rw-r--r--benchmark/lib/benchmark_driver/output/driver.rb36
-rw-r--r--benchmark/lib/benchmark_driver/runner/cstime.rb22
-rw-r--r--benchmark/lib/benchmark_driver/runner/cutime.rb22
-rw-r--r--benchmark/lib/benchmark_driver/runner/mjit.rb34
-rw-r--r--benchmark/lib/benchmark_driver/runner/peak.rb151
-rw-r--r--benchmark/lib/benchmark_driver/runner/ractor.rb122
-rw-r--r--benchmark/lib/benchmark_driver/runner/size.rb25
-rw-r--r--benchmark/lib/benchmark_driver/runner/stime.rb22
-rw-r--r--benchmark/lib/benchmark_driver/runner/total.rb137
-rw-r--r--benchmark/lib/benchmark_driver/runner/utime.rb22
-rw-r--r--benchmark/lib/load.rb18
-rw-r--r--benchmark/loop_for.rb3
-rw-r--r--benchmark/loop_generator.rb14
-rw-r--r--benchmark/loop_times.rb1
-rw-r--r--benchmark/loop_whileloop.rb4
-rw-r--r--benchmark/loop_whileloop2.rb4
-rw-r--r--benchmark/marshal_dump_flo.rb2
-rw-r--r--benchmark/marshal_dump_load_geniv.rb10
-rw-r--r--benchmark/marshal_dump_load_integer.yml22
-rw-r--r--benchmark/marshal_dump_load_time.rb1
-rw-r--r--benchmark/masgn.yml53
-rw-r--r--benchmark/match_gt4.rb1
-rw-r--r--benchmark/match_small.rb1
-rw-r--r--benchmark/method_bind_call.yml16
-rw-r--r--benchmark/mjit_exivar.yml18
-rw-r--r--benchmark/mjit_integer.yml32
-rw-r--r--benchmark/mjit_kernel.yml20
-rw-r--r--benchmark/mjit_leave.yml8
-rw-r--r--benchmark/mjit_opt_cc_insns.yml27
-rw-r--r--benchmark/mjit_struct_aref.yml10
-rw-r--r--benchmark/module_eqq.yml27
-rw-r--r--benchmark/nil_p.yml9
-rw-r--r--benchmark/nilclass.yml6
-rw-r--r--benchmark/num_zero_p.yml8
-rw-r--r--benchmark/numeric_methods.yml29
-rw-r--r--benchmark/object_allocate.yml21
-rw-r--r--benchmark/objspace_dump_all.yml13
-rw-r--r--benchmark/other-lang/ack.pl11
-rw-r--r--benchmark/other-lang/ack.py16
-rw-r--r--benchmark/other-lang/ack.rb12
-rw-r--r--benchmark/other-lang/ack.scm7
-rw-r--r--benchmark/other-lang/eval.rb66
-rw-r--r--benchmark/other-lang/fact.pl13
-rw-r--r--benchmark/other-lang/fact.py18
-rw-r--r--benchmark/other-lang/fact.rb13
-rw-r--r--benchmark/other-lang/fact.scm8
-rw-r--r--benchmark/other-lang/fib.pl11
-rw-r--r--benchmark/other-lang/fib.py7
-rw-r--r--benchmark/other-lang/fib.rb9
-rw-r--r--benchmark/other-lang/fib.scm7
-rw-r--r--benchmark/other-lang/loop.pl3
-rw-r--r--benchmark/other-lang/loop.py2
-rw-r--r--benchmark/other-lang/loop.rb4
-rw-r--r--benchmark/other-lang/loop.scm1
-rw-r--r--benchmark/other-lang/loop2.rb1
-rw-r--r--benchmark/other-lang/tak.pl11
-rw-r--r--benchmark/other-lang/tak.py8
-rw-r--r--benchmark/other-lang/tak.rb13
-rw-r--r--benchmark/other-lang/tak.scm10
-rw-r--r--benchmark/pm_array.yml19
-rw-r--r--benchmark/ractor_const.yml4
-rw-r--r--benchmark/ractor_float_to_s.yml8
-rw-r--r--benchmark/range_last.yml4
-rw-r--r--benchmark/range_min.yml2
-rw-r--r--benchmark/realpath.yml30
-rw-r--r--benchmark/require.yml32
-rw-r--r--benchmark/require_thread.yml40
-rw-r--r--benchmark/securerandom.rb5
-rw-r--r--benchmark/so_ackermann.rb19
-rw-r--r--benchmark/so_array.rb23
-rw-r--r--benchmark/so_binary_trees.rb62
-rw-r--r--benchmark/so_concatenate.rb18
-rw-r--r--benchmark/so_count_words.yml65
-rw-r--r--benchmark/so_exception.rb61
-rw-r--r--benchmark/so_fannkuch.rb45
-rw-r--r--benchmark/so_fasta.rb81
-rw-r--r--benchmark/so_k_nucleotide.yml155
-rw-r--r--benchmark/so_lists.rb47
-rw-r--r--benchmark/so_mandelbrot.rb57
-rw-r--r--benchmark/so_matrix.rb48
-rw-r--r--benchmark/so_meteor_contest.rb563
-rw-r--r--benchmark/so_nbody.rb148
-rw-r--r--benchmark/so_nested_loop.rb24
-rw-r--r--benchmark/so_nsieve.rb35
-rw-r--r--benchmark/so_nsieve_bits.rb43
-rw-r--r--benchmark/so_object.rb56
-rw-r--r--benchmark/so_partial_sums.rb31
-rw-r--r--benchmark/so_pidigits.rb92
-rw-r--r--benchmark/so_random.rb20
-rw-r--r--benchmark/so_reverse_complement.yml137
-rw-r--r--benchmark/so_sieve.rb24
-rw-r--r--benchmark/so_spectralnorm.rb50
-rw-r--r--benchmark/string_capitalize.yml10
-rw-r--r--benchmark/string_casecmp.yml26
-rw-r--r--benchmark/string_casecmp_p.yml26
-rw-r--r--benchmark/string_concat.yml45
-rw-r--r--benchmark/string_downcase.yml18
-rw-r--r--benchmark/string_index.rb3
-rw-r--r--benchmark/string_scan_re.rb2
-rw-r--r--benchmark/string_scan_str.rb2
-rw-r--r--benchmark/string_slice.yml11
-rw-r--r--benchmark/string_split.yml22
-rw-r--r--benchmark/string_swapcase.yml18
-rw-r--r--benchmark/string_upcase.yml18
-rw-r--r--benchmark/time_at.yml7
-rw-r--r--benchmark/time_new.yml4
-rw-r--r--benchmark/time_now.yml3
-rw-r--r--benchmark/time_parse.yml10
-rw-r--r--benchmark/time_strptime.yml13
-rw-r--r--benchmark/time_subsec.rb2
-rw-r--r--benchmark/vm_array.yml4
-rw-r--r--benchmark/vm_attr_ivar.yml14
-rw-r--r--benchmark/vm_attr_ivar_set.yml14
-rw-r--r--benchmark/vm_backtrace.rb22
-rw-r--r--benchmark/vm_bigarray.yml105
-rw-r--r--benchmark/vm_bighash.yml4
-rw-r--r--benchmark/vm_block.yml9
-rw-r--r--benchmark/vm_block_handler.yml27
-rw-r--r--benchmark/vm_blockparam.yml7
-rw-r--r--benchmark/vm_blockparam_call.yml8
-rw-r--r--benchmark/vm_blockparam_pass.yml12
-rw-r--r--benchmark/vm_blockparam_yield.yml8
-rw-r--r--benchmark/vm_case.yml13
-rw-r--r--benchmark/vm_case_classes.yml9
-rw-r--r--benchmark/vm_case_lit.yml23
-rw-r--r--benchmark/vm_clearmethodcache.rb8
-rw-r--r--benchmark/vm_const.yml13
-rw-r--r--benchmark/vm_cvar.yml20
-rw-r--r--benchmark/vm_defined_method.yml8
-rw-r--r--benchmark/vm_dstr.yml6
-rw-r--r--benchmark/vm_dstr_ary.rb6
-rw-r--r--benchmark/vm_dstr_bool.rb7
-rw-r--r--benchmark/vm_dstr_class_module.rb10
-rw-r--r--benchmark/vm_dstr_digit.rb7
-rw-r--r--benchmark/vm_dstr_int.rb5
-rw-r--r--benchmark/vm_dstr_nil.rb6
-rw-r--r--benchmark/vm_dstr_obj.rb6
-rw-r--r--benchmark/vm_dstr_obj_def.rb8
-rw-r--r--benchmark/vm_dstr_str.rb6
-rw-r--r--benchmark/vm_dstr_sym.rb6
-rw-r--r--benchmark/vm_ensure.yml14
-rw-r--r--benchmark/vm_eval.yml4
-rw-r--r--benchmark/vm_fiber_allocate.yml8
-rw-r--r--benchmark/vm_fiber_count.yml10
-rw-r--r--benchmark/vm_fiber_reuse.yml14
-rw-r--r--benchmark/vm_fiber_reuse_gc.yml12
-rw-r--r--benchmark/vm_fiber_switch.yml9
-rw-r--r--benchmark/vm_float_simple.yml8
-rw-r--r--benchmark/vm_freezeobj.yml6
-rw-r--r--benchmark/vm_freezestring.yml10
-rw-r--r--benchmark/vm_gc.rb6
-rw-r--r--benchmark/vm_gc_old_full.rb4
-rw-r--r--benchmark/vm_gc_old_immediate.rb4
-rw-r--r--benchmark/vm_gc_old_lazy.rb4
-rw-r--r--benchmark/vm_gc_short_lived.yml9
-rw-r--r--benchmark/vm_gc_short_with_complex_long.yml25
-rw-r--r--benchmark/vm_gc_short_with_long.yml13
-rw-r--r--benchmark/vm_gc_short_with_symbol.yml13
-rw-r--r--benchmark/vm_gc_wb_ary.yml12
-rw-r--r--benchmark/vm_gc_wb_ary_promoted.yml15
-rw-r--r--benchmark/vm_gc_wb_obj.yml15
-rw-r--r--benchmark/vm_gc_wb_obj_promoted.yml17
-rw-r--r--benchmark/vm_iclass_super.yml20
-rw-r--r--benchmark/vm_ivar.yml6
-rw-r--r--benchmark/vm_ivar_embedded_obj_init.yml14
-rw-r--r--benchmark/vm_ivar_extended_obj_init.yml16
-rw-r--r--benchmark/vm_ivar_generic_get.yml17
-rw-r--r--benchmark/vm_ivar_generic_set.yml14
-rw-r--r--benchmark/vm_ivar_get.yml37
-rw-r--r--benchmark/vm_ivar_get_unintialized.yml12
-rw-r--r--benchmark/vm_ivar_lazy_set.yml12
-rw-r--r--benchmark/vm_ivar_of_class.yml12
-rw-r--r--benchmark/vm_ivar_of_class_set.yml11
-rw-r--r--benchmark/vm_ivar_set.yml5
-rw-r--r--benchmark/vm_ivar_set_on_instance.yml35
-rw-r--r--benchmark/vm_ivar_set_subclass.yml20
-rw-r--r--benchmark/vm_length.yml8
-rw-r--r--benchmark/vm_lvar_cond_set.yml8
-rw-r--r--benchmark/vm_lvar_init.yml21
-rw-r--r--benchmark/vm_lvar_set.yml4
-rw-r--r--benchmark/vm_method.yml8
-rw-r--r--benchmark/vm_method_missing.yml11
-rw-r--r--benchmark/vm_method_with_block.yml8
-rw-r--r--benchmark/vm_module_ann_const_set.yml4
-rw-r--r--benchmark/vm_module_const_set.yml8
-rw-r--r--benchmark/vm_mutex.yml8
-rw-r--r--benchmark/vm_neq.yml7
-rw-r--r--benchmark/vm_newlambda.yml4
-rw-r--r--benchmark/vm_not.yml6
-rw-r--r--benchmark/vm_poly_method.yml24
-rw-r--r--benchmark/vm_poly_method_ov.yml24
-rw-r--r--benchmark/vm_poly_same_method.yml25
-rw-r--r--benchmark/vm_poly_singleton.yml18
-rw-r--r--benchmark/vm_proc.yml12
-rw-r--r--benchmark/vm_raise1.yml16
-rw-r--r--benchmark/vm_raise2.yml16
-rw-r--r--benchmark/vm_regexp.yml8
-rw-r--r--benchmark/vm_rescue.yml6
-rw-r--r--benchmark/vm_send.yml14
-rw-r--r--benchmark/vm_send_cfunc.yml3
-rw-r--r--benchmark/vm_simplereturn.yml7
-rw-r--r--benchmark/vm_string_literal.yml4
-rw-r--r--benchmark/vm_struct_big_aref_hi.yml7
-rw-r--r--benchmark/vm_struct_big_aref_lo.yml7
-rw-r--r--benchmark/vm_struct_big_aset.yml11
-rw-r--r--benchmark/vm_struct_big_href_hi.yml7
-rw-r--r--benchmark/vm_struct_big_href_lo.yml7
-rw-r--r--benchmark/vm_struct_big_hset.yml11
-rw-r--r--benchmark/vm_struct_small_aref.yml7
-rw-r--r--benchmark/vm_struct_small_aset.yml11
-rw-r--r--benchmark/vm_struct_small_href.yml7
-rw-r--r--benchmark/vm_struct_small_hset.yml7
-rw-r--r--benchmark/vm_super.yml17
-rw-r--r--benchmark/vm_swap.yml7
-rw-r--r--benchmark/vm_symbol_block_pass.rb13
-rw-r--r--benchmark/vm_thread_alive_check.yml8
-rw-r--r--benchmark/vm_thread_close.rb6
-rw-r--r--benchmark/vm_thread_condvar1.rb28
-rw-r--r--benchmark/vm_thread_condvar2.rb35
-rw-r--r--benchmark/vm_thread_create_join.rb6
-rw-r--r--benchmark/vm_thread_mutex1.rb21
-rw-r--r--benchmark/vm_thread_mutex2.rb21
-rw-r--r--benchmark/vm_thread_mutex3.rb20
-rw-r--r--benchmark/vm_thread_pass.rb15
-rw-r--r--benchmark/vm_thread_pass_flood.rb10
-rw-r--r--benchmark/vm_thread_pipe.rb17
-rw-r--r--benchmark/vm_thread_queue.rb18
-rw-r--r--benchmark/vm_thread_sized_queue.rb20
-rw-r--r--benchmark/vm_thread_sized_queue2.rb23
-rw-r--r--benchmark/vm_thread_sized_queue3.rb22
-rw-r--r--benchmark/vm_thread_sized_queue4.rb26
-rw-r--r--benchmark/vm_thread_sleep.yml4
-rw-r--r--benchmark/vm_unif1.yml7
-rw-r--r--benchmark/vm_yield.yml13
-rw-r--r--benchmark/vm_zsuper.yml18
-rw-r--r--bignum.c7796
-rwxr-xr-xbin/gem10
-rw-r--r--bootstraptest/pending.rb21
-rwxr-xr-xbootstraptest/runner.rb787
-rw-r--r--bootstraptest/test_attr.rb52
-rw-r--r--bootstraptest/test_autoload.rb70
-rw-r--r--bootstraptest/test_block.rb613
-rw-r--r--bootstraptest/test_class.rb169
-rw-r--r--bootstraptest/test_constant_cache.rb187
-rw-r--r--bootstraptest/test_env.rb12
-rw-r--r--bootstraptest/test_eval.rb356
-rw-r--r--bootstraptest/test_exception.rb432
-rw-r--r--bootstraptest/test_fiber.rb39
-rw-r--r--bootstraptest/test_finalizer.rb8
-rw-r--r--bootstraptest/test_flip.rb1
-rw-r--r--bootstraptest/test_flow.rb601
-rw-r--r--bootstraptest/test_fork.rb77
-rw-r--r--bootstraptest/test_gc.rb34
-rw-r--r--bootstraptest/test_insns.rb440
-rw-r--r--bootstraptest/test_io.rb115
-rw-r--r--bootstraptest/test_jump.rb314
-rw-r--r--bootstraptest/test_literal.rb250
-rw-r--r--bootstraptest/test_literal_suffix.rb54
-rw-r--r--bootstraptest/test_load.rb27
-rw-r--r--bootstraptest/test_marshal.rb5
-rw-r--r--bootstraptest/test_massign.rb183
-rw-r--r--bootstraptest/test_method.rb1192
-rw-r--r--bootstraptest/test_objectspace.rb55
-rw-r--r--bootstraptest/test_proc.rb470
-rw-r--r--bootstraptest/test_ractor.rb1628
-rw-r--r--bootstraptest/test_string.rb3
-rw-r--r--bootstraptest/test_struct.rb5
-rw-r--r--bootstraptest/test_syntax.rb906
-rw-r--r--bootstraptest/test_thread.rb500
-rw-r--r--bootstraptest/test_yjit.rb3530
-rw-r--r--bootstraptest/test_yjit_30k_ifelse.rb241023
-rw-r--r--bootstraptest/test_yjit_30k_methods.rb121018
-rw-r--r--bootstraptest/test_yjit_rust_port.rb422
-rw-r--r--builtin.c69
-rw-r--r--builtin.h121
-rw-r--r--ccan/build_assert/build_assert.h40
-rw-r--r--ccan/check_type/check_type.h63
-rw-r--r--ccan/container_of/container_of.h142
-rw-r--r--ccan/licenses/BSD-MIT17
-rw-r--r--ccan/licenses/CC028
-rw-r--r--ccan/list/list.h789
-rw-r--r--ccan/str/str.h17
-rw-r--r--class.c2753
-rw-r--r--common.mk18378
-rw-r--r--compar.c313
-rw-r--r--compile.c13380
-rw-r--r--complex.c2424
-rw-r--r--config.guess1116
-rw-r--r--config.sub1228
-rw-r--r--configure.ac4570
-rw-r--r--configure.in965
-rw-r--r--constant.h55
-rw-r--r--cont.c3422
-rw-r--r--coroutine/amd64/Context.S46
-rw-r--r--coroutine/amd64/Context.h85
-rw-r--r--coroutine/arm32/Context.S33
-rw-r--r--coroutine/arm32/Context.h59
-rw-r--r--coroutine/arm64/Context.S73
-rw-r--r--coroutine/arm64/Context.h83
-rw-r--r--coroutine/asyncify/Context.c10
-rw-r--r--coroutine/asyncify/Context.h93
-rw-r--r--coroutine/emscripten/Context.c8
-rw-r--r--coroutine/emscripten/Context.h77
-rw-r--r--coroutine/ppc/Context.S90
-rw-r--r--coroutine/ppc/Context.h58
-rw-r--r--coroutine/ppc64/Context.S89
-rw-r--r--coroutine/ppc64/Context.h57
-rw-r--r--coroutine/ppc64le/Context.S75
-rw-r--r--coroutine/ppc64le/Context.h57
-rw-r--r--coroutine/pthread/Context.c272
-rw-r--r--coroutine/pthread/Context.h63
-rw-r--r--coroutine/riscv64/Context.S87
-rw-r--r--coroutine/riscv64/Context.h46
-rw-r--r--coroutine/ucontext/Context.c23
-rw-r--r--coroutine/ucontext/Context.h79
-rw-r--r--coroutine/universal/Context.S16
-rw-r--r--coroutine/universal/Context.h21
-rw-r--r--coroutine/win32/Context.S47
-rw-r--r--coroutine/win32/Context.asm55
-rw-r--r--coroutine/win32/Context.h65
-rw-r--r--coroutine/win64/Context.S77
-rw-r--r--coroutine/win64/Context.asm79
-rw-r--r--coroutine/win64/Context.h75
-rw-r--r--coroutine/x86/Context.S42
-rw-r--r--coroutine/x86/Context.h61
-rw-r--r--coverage/README17
-rw-r--r--cygwin/GNUmakefile.in112
-rw-r--r--darray.h179
-rw-r--r--debug.c633
-rw-r--r--debug_counter.c152
-rw-r--r--debug_counter.h434
-rw-r--r--defines.h84
-rw-r--r--defs/gmake.mk482
-rw-r--r--defs/id.def219
-rw-r--r--defs/keywords53
-rw-r--r--defs/known_errors.def157
-rw-r--r--defs/lex.c.src53
-rw-r--r--defs/opt_insn_unif.def27
-rw-r--r--defs/opt_operand.def22
-rw-r--r--defs/separated_version.mk38
-rw-r--r--defs/universal.mk5
-rw-r--r--dir.c3692
-rw-r--r--dir.rb314
-rw-r--r--djgpp/README.djgpp21
-rw-r--r--djgpp/config.hin72
-rw-r--r--djgpp/config.sed80
-rw-r--r--djgpp/config.status77
-rw-r--r--djgpp/configure.bat21
-rw-r--r--djgpp/mkver.sed1
-rw-r--r--dln.c1925
-rw-r--r--dln.h30
-rw-r--r--dln_find.c292
-rw-r--r--dmydln.c10
-rw-r--r--dmyenc.c10
-rw-r--r--dmyext.c2
-rw-r--r--doc/.document9
-rw-r--r--doc/ChangeLog-0.06_to_0.521147
-rw-r--r--doc/ChangeLog-0.50_to_0.60462
-rw-r--r--doc/ChangeLog-0.60_to_1.13955
-rw-r--r--doc/ChangeLog-1.8.024350
-rw-r--r--doc/ChangeLog-1.9.392772
-rw-r--r--doc/ChangeLog-2.0.024015
-rw-r--r--doc/ChangeLog-2.1.018060
-rw-r--r--doc/ChangeLog-2.2.012157
-rw-r--r--doc/ChangeLog-2.3.012188
-rw-r--r--doc/ChangeLog-2.4.09492
-rw-r--r--doc/ChangeLog-YARV6917
-rw-r--r--doc/NEWS/NEWS-1.8.7669
-rw-r--r--doc/NEWS/NEWS-1.9.1429
-rw-r--r--doc/NEWS/NEWS-1.9.2509
-rw-r--r--doc/NEWS/NEWS-1.9.3341
-rw-r--r--doc/NEWS/NEWS-2.0.0529
-rw-r--r--doc/NEWS/NEWS-2.1.0376
-rw-r--r--doc/NEWS/NEWS-2.2.0359
-rw-r--r--doc/NEWS/NEWS-2.3.0384
-rw-r--r--doc/NEWS/NEWS-2.4.0399
-rw-r--r--doc/NEWS/NEWS-2.5.0565
-rw-r--r--doc/NEWS/NEWS-2.6.0662
-rw-r--r--doc/NEWS/NEWS-2.7.0845
-rw-r--r--doc/NEWS/NEWS-3.0.0.md829
-rw-r--r--doc/NEWS/NEWS-3.1.0.md660
-rw-r--r--doc/bsearch.rdoc120
-rw-r--r--doc/bug_triaging.rdoc79
-rw-r--r--doc/case_mapping.rdoc116
-rw-r--r--doc/character_selectors.rdoc97
-rw-r--r--doc/command_injection.rdoc29
-rw-r--r--doc/contributing.md12
-rw-r--r--doc/contributing/building_ruby.md172
-rw-r--r--doc/contributing/documentation_guide.md435
-rw-r--r--doc/contributing/making_changes_to_ruby.md28
-rw-r--r--doc/contributing/making_changes_to_stdlibs.md49
-rw-r--r--doc/contributing/reporting_issues.md91
-rw-r--r--doc/contributing/testing_ruby.md138
-rw-r--r--doc/csv/arguments/io.rdoc5
-rw-r--r--doc/csv/options/common/col_sep.rdoc63
-rw-r--r--doc/csv/options/common/quote_char.rdoc42
-rw-r--r--doc/csv/options/common/row_sep.rdoc100
-rw-r--r--doc/csv/options/generating/force_quotes.rdoc17
-rw-r--r--doc/csv/options/generating/quote_empty.rdoc12
-rw-r--r--doc/csv/options/generating/write_converters.rdoc33
-rw-r--r--doc/csv/options/generating/write_empty_value.rdoc15
-rw-r--r--doc/csv/options/generating/write_headers.rdoc29
-rw-r--r--doc/csv/options/generating/write_nil_value.rdoc14
-rw-r--r--doc/csv/options/parsing/converters.rdoc46
-rw-r--r--doc/csv/options/parsing/empty_value.rdoc13
-rw-r--r--doc/csv/options/parsing/field_size_limit.rdoc39
-rw-r--r--doc/csv/options/parsing/header_converters.rdoc43
-rw-r--r--doc/csv/options/parsing/headers.rdoc63
-rw-r--r--doc/csv/options/parsing/liberal_parsing.rdoc19
-rw-r--r--doc/csv/options/parsing/nil_value.rdoc12
-rw-r--r--doc/csv/options/parsing/return_headers.rdoc22
-rw-r--r--doc/csv/options/parsing/skip_blanks.rdoc31
-rw-r--r--doc/csv/options/parsing/skip_lines.rdoc37
-rw-r--r--doc/csv/options/parsing/strip.rdoc15
-rw-r--r--doc/csv/options/parsing/unconverted_fields.rdoc27
-rw-r--r--doc/csv/recipes/filtering.rdoc156
-rw-r--r--doc/csv/recipes/generating.rdoc244
-rw-r--r--doc/csv/recipes/parsing.rdoc543
-rw-r--r--doc/csv/recipes/recipes.rdoc6
-rw-r--r--doc/date/calendars.rdoc62
-rw-r--r--doc/dig_methods.rdoc82
-rw-r--r--doc/dtrace_probes.rdoc184
-rw-r--r--doc/encodings.rdoc479
-rw-r--r--doc/examples/files.rdoc26
-rw-r--r--doc/extension.ja.rdoc1869
-rw-r--r--doc/extension.rdoc2221
-rw-r--r--doc/fiber.md232
-rw-r--r--doc/format_specifications.rdoc348
-rw-r--r--doc/forwardable.rd.ja80
-rw-r--r--doc/globals.rdoc69
-rw-r--r--doc/images/boottime-classes.pngbin0 -> 28677 bytes-rw-r--r--doc/implicit_conversion.rdoc221
-rw-r--r--doc/irb/irb-tools.rd.ja184
-rw-r--r--doc/irb/irb.rd.ja427
-rw-r--r--doc/keywords.rdoc162
-rw-r--r--doc/maintainers.rdoc424
-rw-r--r--doc/marshal.rdoc313
-rw-r--r--doc/matchdata/begin.rdoc30
-rw-r--r--doc/matchdata/end.rdoc30
-rw-r--r--doc/matchdata/offset.rdoc31
-rw-r--r--doc/math/math.rdoc117
-rw-r--r--doc/memory_view.md167
-rw-r--r--doc/mjit/mjit.md39
-rw-r--r--doc/net-http/examples.rdoc31
-rw-r--r--doc/net-http/included_getters.rdoc3
-rw-r--r--doc/optparse/.document1
-rw-r--r--doc/optparse/argument_converters.rdoc380
-rw-r--r--doc/optparse/creates_option.rdoc7
-rw-r--r--doc/optparse/option_params.rdoc509
-rw-r--r--doc/optparse/ruby/argument_keywords.rb6
-rw-r--r--doc/optparse/ruby/argument_strings.rb6
-rw-r--r--doc/optparse/ruby/argv.rb2
-rw-r--r--doc/optparse/ruby/array.rb6
-rw-r--r--doc/optparse/ruby/basic.rb17
-rw-r--r--doc/optparse/ruby/block.rb9
-rw-r--r--doc/optparse/ruby/collected_options.rb8
-rw-r--r--doc/optparse/ruby/custom_converter.rb9
-rw-r--r--doc/optparse/ruby/date.rb6
-rw-r--r--doc/optparse/ruby/datetime.rb6
-rw-r--r--doc/optparse/ruby/decimal_integer.rb7
-rw-r--r--doc/optparse/ruby/decimal_numeric.rb7
-rw-r--r--doc/optparse/ruby/default_values.rb8
-rw-r--r--doc/optparse/ruby/descriptions.rb15
-rw-r--r--doc/optparse/ruby/explicit_array_values.rb9
-rw-r--r--doc/optparse/ruby/explicit_hash_values.rb9
-rw-r--r--doc/optparse/ruby/false_class.rb6
-rw-r--r--doc/optparse/ruby/float.rb6
-rw-r--r--doc/optparse/ruby/help.rb18
-rw-r--r--doc/optparse/ruby/help_banner.rb7
-rw-r--r--doc/optparse/ruby/help_format.rb25
-rw-r--r--doc/optparse/ruby/help_program_name.rb7
-rw-r--r--doc/optparse/ruby/integer.rb6
-rw-r--r--doc/optparse/ruby/long_names.rb9
-rw-r--r--doc/optparse/ruby/long_optional.rb6
-rw-r--r--doc/optparse/ruby/long_required.rb6
-rw-r--r--doc/optparse/ruby/long_simple.rb9
-rw-r--r--doc/optparse/ruby/long_with_negation.rb6
-rw-r--r--doc/optparse/ruby/match_converter.rb9
-rw-r--r--doc/optparse/ruby/matched_values.rb6
-rw-r--r--doc/optparse/ruby/method.rb11
-rw-r--r--doc/optparse/ruby/missing_options.rb12
-rw-r--r--doc/optparse/ruby/mixed_names.rb12
-rw-r--r--doc/optparse/ruby/name_abbrev.rb9
-rw-r--r--doc/optparse/ruby/no_abbreviation.rb10
-rw-r--r--doc/optparse/ruby/numeric.rb6
-rw-r--r--doc/optparse/ruby/object.rb6
-rw-r--r--doc/optparse/ruby/octal_integer.rb7
-rw-r--r--doc/optparse/ruby/optional_argument.rb9
-rw-r--r--doc/optparse/ruby/parse.rb13
-rw-r--r--doc/optparse/ruby/parse_bang.rb13
-rw-r--r--doc/optparse/ruby/proc.rb13
-rw-r--r--doc/optparse/ruby/regexp.rb6
-rw-r--r--doc/optparse/ruby/required_argument.rb9
-rw-r--r--doc/optparse/ruby/shellwords.rb6
-rw-r--r--doc/optparse/ruby/short_names.rb9
-rw-r--r--doc/optparse/ruby/short_optional.rb6
-rw-r--r--doc/optparse/ruby/short_range.rb6
-rw-r--r--doc/optparse/ruby/short_required.rb6
-rw-r--r--doc/optparse/ruby/short_simple.rb9
-rw-r--r--doc/optparse/ruby/string.rb6
-rw-r--r--doc/optparse/ruby/terminator.rb6
-rw-r--r--doc/optparse/ruby/time.rb6
-rw-r--r--doc/optparse/ruby/true_class.rb6
-rw-r--r--doc/optparse/ruby/uri.rb6
-rw-r--r--doc/optparse/tutorial.rdoc835
-rw-r--r--doc/packed_data.rdoc590
-rw-r--r--doc/pty/README.expect.ja21
-rw-r--r--doc/pty/README.ja76
-rw-r--r--doc/ractor.md952
-rw-r--r--doc/rdoc/markup_reference.rb1257
-rw-r--r--doc/regexp.rdoc801
-rw-r--r--doc/security.rdoc139
-rw-r--r--doc/signals.rdoc106
-rw-r--r--doc/standard_library.rdoc118
-rw-r--r--doc/strftime_formatting.rdoc527
-rw-r--r--doc/string/b.rdoc14
-rw-r--r--doc/string/bytes.rdoc6
-rw-r--r--doc/string/bytesize.rdoc11
-rw-r--r--doc/string/center.rdoc16
-rw-r--r--doc/string/chars.rdoc5
-rw-r--r--doc/string/chomp.rdoc29
-rw-r--r--doc/string/chop.rdoc16
-rw-r--r--doc/string/codepoints.rdoc6
-rw-r--r--doc/string/delete_prefix.rdoc8
-rw-r--r--doc/string/delete_suffix.rdoc8
-rw-r--r--doc/string/each_byte.rdoc17
-rw-r--r--doc/string/each_char.rdoc17
-rw-r--r--doc/string/each_codepoint.rdoc18
-rw-r--r--doc/string/each_grapheme_cluster.rdoc12
-rw-r--r--doc/string/each_line.rdoc60
-rw-r--r--doc/string/end_with_p.rdoc11
-rw-r--r--doc/string/force_encoding.rdoc20
-rw-r--r--doc/string/grapheme_clusters.rdoc6
-rw-r--r--doc/string/index.rdoc38
-rw-r--r--doc/string/length.rdoc13
-rw-r--r--doc/string/ljust.rdoc16
-rw-r--r--doc/string/new.rdoc51
-rw-r--r--doc/string/ord.rdoc6
-rw-r--r--doc/string/partition.rdoc24
-rw-r--r--doc/string/rjust.rdoc16
-rw-r--r--doc/string/rpartition.rdoc24
-rw-r--r--doc/string/scrub.rdoc25
-rw-r--r--doc/string/split.rdoc86
-rw-r--r--doc/string/start_with_p.rdoc18
-rw-r--r--doc/string/sum.rdoc11
-rw-r--r--doc/symbol/casecmp.rdoc27
-rw-r--r--doc/symbol/casecmp_p.rdoc26
-rw-r--r--doc/syntax.rdoc39
-rw-r--r--doc/syntax/assignment.rdoc483
-rw-r--r--doc/syntax/calling_methods.rdoc429
-rw-r--r--doc/syntax/comments.rdoc253
-rw-r--r--doc/syntax/control_expressions.rdoc571
-rw-r--r--doc/syntax/exceptions.rdoc102
-rw-r--r--doc/syntax/literals.rdoc534
-rw-r--r--doc/syntax/methods.rdoc652
-rw-r--r--doc/syntax/miscellaneous.rdoc136
-rw-r--r--doc/syntax/modules_and_classes.rdoc376
-rw-r--r--doc/syntax/pattern_matching.rdoc540
-rw-r--r--doc/syntax/precedence.rdoc64
-rw-r--r--doc/syntax/refinements.rdoc284
-rw-r--r--doc/timezones.rdoc108
-rw-r--r--doc/transcode.rdoc52
-rw-r--r--doc/yarvarch.en7
-rw-r--r--doc/yarvarch.ja454
-rw-r--r--doc/yjit/yjit.md417
-rw-r--r--doc/yjit/yjit_hacking.md75
-rw-r--r--enc/Makefile.in88
-rw-r--r--enc/ascii.c106
-rw-r--r--enc/big5.c376
-rw-r--r--enc/cesu_8.c469
-rw-r--r--enc/cp949.c222
-rw-r--r--enc/depend10848
-rw-r--r--enc/ebcdic.h11
-rw-r--r--enc/emacs_mule.c342
-rw-r--r--enc/encdb.c26
-rw-r--r--enc/encinit.c.erb38
-rw-r--r--enc/euc_jp.c616
-rw-r--r--enc/euc_kr.c220
-rw-r--r--enc/euc_tw.c228
-rw-r--r--enc/gb18030.c603
-rw-r--r--enc/gb2312.c11
-rw-r--r--enc/gbk.c225
-rw-r--r--enc/iso_2022_jp.h47
-rw-r--r--enc/iso_8859.h1
-rw-r--r--enc/iso_8859_1.c322
-rw-r--r--enc/iso_8859_10.c294
-rw-r--r--enc/iso_8859_11.c114
-rw-r--r--enc/iso_8859_13.c289
-rw-r--r--enc/iso_8859_14.c305
-rw-r--r--enc/iso_8859_15.c296
-rw-r--r--enc/iso_8859_16.c300
-rw-r--r--enc/iso_8859_2.c291
-rw-r--r--enc/iso_8859_3.c301
-rw-r--r--enc/iso_8859_4.c297
-rw-r--r--enc/iso_8859_5.c265
-rw-r--r--enc/iso_8859_6.c110
-rw-r--r--enc/iso_8859_7.c284
-rw-r--r--enc/iso_8859_8.c110
-rw-r--r--enc/iso_8859_9.c290
-rw-r--r--enc/jis/props.h.blt217
-rw-r--r--enc/jis/props.kwd52
-rw-r--r--enc/jis/props.src52
-rw-r--r--enc/koi8_r.c221
-rw-r--r--enc/koi8_u.c224
-rwxr-xr-xenc/make_encmake.rb159
-rw-r--r--enc/mktable.c1184
-rw-r--r--enc/shift_jis.c67
-rw-r--r--enc/shift_jis.h546
-rw-r--r--enc/trans/CP/CP932UDA%UCS.src1912
-rw-r--r--enc/trans/CP/CP932VDC@IBM%UCS.src420
-rw-r--r--enc/trans/CP/CP932VDC@NEC_IBM%UCS.src406
-rw-r--r--enc/trans/CP/UCS%CP932UDA.src1912
-rw-r--r--enc/trans/CP/UCS%CP932VDC@IBM.src420
-rw-r--r--enc/trans/CP/UCS%CP932VDC@NEC_IBM.src406
-rw-r--r--enc/trans/EMOJI/EMOJI_ISO-2022-JP-KDDI%UCS.src658
-rw-r--r--enc/trans/EMOJI/EMOJI_SHIFT_JIS-DOCOMO%UCS.src293
-rw-r--r--enc/trans/EMOJI/EMOJI_SHIFT_JIS-KDDI%UCS.src658
-rw-r--r--enc/trans/EMOJI/EMOJI_SHIFT_JIS-KDDI-UNDOC%UCS.src658
-rw-r--r--enc/trans/EMOJI/EMOJI_SHIFT_JIS-SOFTBANK%UCS.src496
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_ISO-2022-JP-KDDI-UNDOC.src658
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_ISO-2022-JP-KDDI.src658
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_SHIFT_JIS-DOCOMO.src293
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_SHIFT_JIS-KDDI-UNDOC.src658
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_SHIFT_JIS-KDDI.src658
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_SHIFT_JIS-SOFTBANK.src496
-rw-r--r--enc/trans/GB/GB12345%UCS.src7567
-rw-r--r--enc/trans/GB/GB2312%UCS.src7470
-rw-r--r--enc/trans/GB/UCS%GB12345.src7569
-rw-r--r--enc/trans/GB/UCS%GB2312.src7466
-rw-r--r--enc/trans/JIS/JISX0201-KANA%UCS.src124
-rw-r--r--enc/trans/JIS/JISX0208@1990%UCS.src6964
-rw-r--r--enc/trans/JIS/JISX0208@MS%UCS.src6893
-rw-r--r--enc/trans/JIS/JISX0208UDC%UCS.src954
-rw-r--r--enc/trans/JIS/JISX0208VDC@NEC%UCS.src97
-rw-r--r--enc/trans/JIS/JISX0212%UCS.src6159
-rw-r--r--enc/trans/JIS/JISX0212@MS%UCS.src6081
-rw-r--r--enc/trans/JIS/JISX0212UDC%UCS.src954
-rw-r--r--enc/trans/JIS/JISX0212VDC@IBM%UCS.src120
-rw-r--r--enc/trans/JIS/JISX0213-1%UCS@BMP.src1926
-rw-r--r--enc/trans/JIS/JISX0213-1%UCS@SIP.src60
-rw-r--r--enc/trans/JIS/JISX0213-2%UCS@BMP.src2193
-rw-r--r--enc/trans/JIS/JISX0213-2%UCS@SIP.src311
-rw-r--r--enc/trans/JIS/UCS%JISX0201-KANA.src125
-rw-r--r--enc/trans/JIS/UCS%JISX0208@1990.src6965
-rw-r--r--enc/trans/JIS/UCS%JISX0208@MS.src6894
-rw-r--r--enc/trans/JIS/UCS%JISX0208UDC.src955
-rw-r--r--enc/trans/JIS/UCS%JISX0208VDC@NEC.src98
-rw-r--r--enc/trans/JIS/UCS%JISX0212.src6163
-rw-r--r--enc/trans/JIS/UCS%JISX0212@MS.src6082
-rw-r--r--enc/trans/JIS/UCS%JISX0212UDC.src955
-rw-r--r--enc/trans/JIS/UCS%JISX0212VDC@IBM.src121
-rw-r--r--enc/trans/JIS/UCS@BMP%JISX0213-1.src1922
-rw-r--r--enc/trans/JIS/UCS@BMP%JISX0213-2.src2189
-rw-r--r--enc/trans/JIS/UCS@SIP%JISX0213-1.src56
-rw-r--r--enc/trans/JIS/UCS@SIP%JISX0213-2.src307
-rw-r--r--enc/trans/big5-hkscs-tbl.rb37302
-rw-r--r--enc/trans/big5-uao-tbl.rb19784
-rw-r--r--enc/trans/big5.trans32
-rw-r--r--enc/trans/cesu_8.trans85
-rw-r--r--enc/trans/chinese.trans31
-rw-r--r--enc/trans/cp850-tbl.rb130
-rw-r--r--enc/trans/cp852-tbl.rb130
-rw-r--r--enc/trans/cp855-tbl.rb130
-rw-r--r--enc/trans/cp949-tbl.rb8831
-rw-r--r--enc/trans/ebcdic.trans278
-rw-r--r--enc/trans/emoji-exchange-tbl.rb8407
-rw-r--r--enc/trans/emoji.trans36
-rw-r--r--enc/trans/emoji_iso2022_kddi.trans216
-rw-r--r--enc/trans/emoji_sjis_docomo.trans32
-rw-r--r--enc/trans/emoji_sjis_kddi.trans33
-rw-r--r--enc/trans/emoji_sjis_softbank.trans32
-rw-r--r--enc/trans/escape.trans94
-rw-r--r--enc/trans/euckr-tbl.rb8230
-rw-r--r--enc/trans/gb18030-tbl.rb63362
-rw-r--r--enc/trans/gb18030.trans183
-rw-r--r--enc/trans/gbk-tbl.rb21794
-rw-r--r--enc/trans/gbk.trans15
-rw-r--r--enc/trans/ibm437-tbl.rb130
-rw-r--r--enc/trans/ibm720-tbl.rb122
-rw-r--r--enc/trans/ibm737-tbl.rb130
-rw-r--r--enc/trans/ibm775-tbl.rb130
-rw-r--r--enc/trans/ibm852-tbl.rb130
-rw-r--r--enc/trans/ibm855-tbl.rb130
-rw-r--r--enc/trans/ibm857-tbl.rb127
-rw-r--r--enc/trans/ibm860-tbl.rb130
-rw-r--r--enc/trans/ibm861-tbl.rb130
-rw-r--r--enc/trans/ibm862-tbl.rb130
-rw-r--r--enc/trans/ibm863-tbl.rb130
-rw-r--r--enc/trans/ibm865-tbl.rb130
-rw-r--r--enc/trans/ibm866-tbl.rb130
-rw-r--r--enc/trans/ibm869-tbl.rb121
-rw-r--r--enc/trans/iso-8859-1-tbl.rb98
-rw-r--r--enc/trans/iso-8859-10-tbl.rb98
-rw-r--r--enc/trans/iso-8859-11-tbl.rb90
-rw-r--r--enc/trans/iso-8859-13-tbl.rb98
-rw-r--r--enc/trans/iso-8859-14-tbl.rb98
-rw-r--r--enc/trans/iso-8859-15-tbl.rb98
-rw-r--r--enc/trans/iso-8859-16-tbl.rb98
-rw-r--r--enc/trans/iso-8859-2-tbl.rb98
-rw-r--r--enc/trans/iso-8859-3-tbl.rb91
-rw-r--r--enc/trans/iso-8859-4-tbl.rb98
-rw-r--r--enc/trans/iso-8859-5-tbl.rb98
-rw-r--r--enc/trans/iso-8859-6-tbl.rb53
-rw-r--r--enc/trans/iso-8859-7-tbl.rb95
-rw-r--r--enc/trans/iso-8859-8-tbl.rb62
-rw-r--r--enc/trans/iso-8859-9-tbl.rb98
-rw-r--r--enc/trans/iso2022.trans567
-rw-r--r--enc/trans/japanese.trans97
-rw-r--r--enc/trans/japanese_euc.trans57
-rw-r--r--enc/trans/japanese_sjis.trans33
-rw-r--r--enc/trans/koi8-r-tbl.rb130
-rw-r--r--enc/trans/koi8-u-tbl.rb130
-rw-r--r--enc/trans/korean.trans18
-rw-r--r--enc/trans/maccroatian-tbl.rb129
-rw-r--r--enc/trans/maccyrillic-tbl.rb130
-rw-r--r--enc/trans/macgreek-tbl.rb129
-rw-r--r--enc/trans/maciceland-tbl.rb129
-rw-r--r--enc/trans/macroman-tbl.rb129
-rw-r--r--enc/trans/macromania-tbl.rb129
-rw-r--r--enc/trans/macturkish-tbl.rb128
-rw-r--r--enc/trans/macukraine-tbl.rb130
-rw-r--r--enc/trans/newline.trans155
-rw-r--r--enc/trans/single_byte.trans89
-rw-r--r--enc/trans/tis-620-tbl.rb89
-rw-r--r--enc/trans/transdb.c20
-rw-r--r--enc/trans/ucm/glibc-BIG5-2.3.3.ucm14087
-rw-r--r--enc/trans/ucm/glibc-BIG5HKSCS-2.3.3.ucm18332
-rw-r--r--enc/trans/ucm/windows-950-2000.ucm20379
-rw-r--r--enc/trans/ucm/windows-950_hkscs-2001.ucm23446
-rw-r--r--enc/trans/utf8_mac-tbl.rb23154
-rw-r--r--enc/trans/utf8_mac.trans256
-rw-r--r--enc/trans/utf_16_32.trans556
-rw-r--r--enc/trans/windows-1250-tbl.rb125
-rw-r--r--enc/trans/windows-1251-tbl.rb129
-rw-r--r--enc/trans/windows-1252-tbl.rb125
-rw-r--r--enc/trans/windows-1253-tbl.rb113
-rw-r--r--enc/trans/windows-1254-tbl.rb123
-rw-r--r--enc/trans/windows-1255-tbl.rb142
-rw-r--r--enc/trans/windows-1256-tbl.rb130
-rw-r--r--enc/trans/windows-1257-tbl.rb118
-rw-r--r--enc/trans/windows-874-tbl.rb99
-rw-r--r--enc/unicode.c820
-rw-r--r--enc/unicode/15.0.0/casefold.h7629
-rw-r--r--enc/unicode/15.0.0/name2ctype.h45690
-rw-r--r--enc/us_ascii.c41
-rw-r--r--enc/utf_16_32.h5
-rw-r--r--enc/utf_16be.c256
-rw-r--r--enc/utf_16le.c248
-rw-r--r--enc/utf_32be.c206
-rw-r--r--enc/utf_32le.c206
-rw-r--r--enc/utf_7.h5
-rw-r--r--enc/utf_8.c449
-rw-r--r--enc/windows_1250.c271
-rw-r--r--enc/windows_1251.c253
-rw-r--r--enc/windows_1252.c260
-rw-r--r--enc/windows_1253.c297
-rw-r--r--enc/windows_1254.c302
-rw-r--r--enc/windows_1257.c304
-rw-r--r--enc/windows_31j.c81
-rw-r--r--enc/x_emoji.h26
-rw-r--r--encindex.h70
-rw-r--r--encoding.c1965
-rw-r--r--enum.c4933
-rw-r--r--enumerator.c4708
-rw-r--r--env.h60
-rw-r--r--error.c4118
-rw-r--r--eval.c9411
-rw-r--r--eval_error.c549
-rw-r--r--eval_intern.h339
-rw-r--r--eval_jump.c138
-rw-r--r--ext/-test-/RUBY_ALIGNOF/c.c15
-rw-r--r--ext/-test-/RUBY_ALIGNOF/cpp.cpp9
-rw-r--r--ext/-test-/RUBY_ALIGNOF/depend162
-rw-r--r--ext/-test-/RUBY_ALIGNOF/extconf.rb6
-rw-r--r--ext/-test-/abi/abi.c11
-rw-r--r--ext/-test-/abi/extconf.rb4
-rw-r--r--ext/-test-/arith_seq/beg_len_step/beg_len_step.c19
-rw-r--r--ext/-test-/arith_seq/beg_len_step/depend161
-rw-r--r--ext/-test-/arith_seq/beg_len_step/extconf.rb2
-rw-r--r--ext/-test-/arith_seq/extract/depend161
-rw-r--r--ext/-test-/arith_seq/extract/extconf.rb2
-rw-r--r--ext/-test-/arith_seq/extract/extract.c27
-rw-r--r--ext/-test-/array/concat/depend162
-rw-r--r--ext/-test-/array/concat/extconf.rb2
-rw-r--r--ext/-test-/array/concat/to_ary_concat.c38
-rw-r--r--ext/-test-/array/resize/depend161
-rw-r--r--ext/-test-/array/resize/extconf.rb2
-rw-r--r--ext/-test-/array/resize/resize.c16
-rw-r--r--ext/-test-/auto_ext.rb11
-rw-r--r--ext/-test-/bignum/big2str.c53
-rw-r--r--ext/-test-/bignum/bigzero.c26
-rw-r--r--ext/-test-/bignum/depend1122
-rw-r--r--ext/-test-/bignum/div.c35
-rw-r--r--ext/-test-/bignum/extconf.rb3
-rw-r--r--ext/-test-/bignum/init.c11
-rw-r--r--ext/-test-/bignum/intpack.c87
-rw-r--r--ext/-test-/bignum/mul.c65
-rw-r--r--ext/-test-/bignum/str2big.c38
-rw-r--r--ext/-test-/bug-14834/bug-14384.c39
-rw-r--r--ext/-test-/bug-14834/depend162
-rw-r--r--ext/-test-/bug-14834/extconf.rb2
-rw-r--r--ext/-test-/bug-3571/bug.c23
-rw-r--r--ext/-test-/bug-3571/depend162
-rw-r--r--ext/-test-/bug-3571/extconf.rb2
-rw-r--r--ext/-test-/bug-5832/bug.c14
-rw-r--r--ext/-test-/bug-5832/depend162
-rw-r--r--ext/-test-/bug-5832/extconf.rb2
-rw-r--r--ext/-test-/bug_reporter/bug_reporter.c24
-rw-r--r--ext/-test-/bug_reporter/depend162
-rw-r--r--ext/-test-/bug_reporter/extconf.rb2
-rw-r--r--ext/-test-/class/class2name.c14
-rw-r--r--ext/-test-/class/depend321
-rw-r--r--ext/-test-/class/extconf.rb3
-rw-r--r--ext/-test-/class/init.c11
-rw-r--r--ext/-test-/cxxanyargs/cxxanyargs.cpp961
-rw-r--r--ext/-test-/cxxanyargs/depend13
-rw-r--r--ext/-test-/cxxanyargs/extconf.rb46
-rw-r--r--ext/-test-/cxxanyargs/failure.cpp13
-rw-r--r--ext/-test-/cxxanyargs/failurem1.cpp13
-rw-r--r--ext/-test-/debug/depend482
-rw-r--r--ext/-test-/debug/extconf.rb3
-rw-r--r--ext/-test-/debug/init.c11
-rw-r--r--ext/-test-/debug/inspector.c32
-rw-r--r--ext/-test-/debug/profile_frames.c44
-rw-r--r--ext/-test-/dln/empty/depend162
-rw-r--r--ext/-test-/dln/empty/empty.c6
-rw-r--r--ext/-test-/dln/empty/extconf.rb2
-rw-r--r--ext/-test-/econv/append.c15
-rw-r--r--ext/-test-/econv/extconf.rb3
-rw-r--r--ext/-test-/econv/init.c11
-rw-r--r--ext/-test-/enumerator_kw/depend162
-rw-r--r--ext/-test-/enumerator_kw/enumerator_kw.c22
-rw-r--r--ext/-test-/enumerator_kw/extconf.rb1
-rw-r--r--ext/-test-/eval/eval.c13
-rw-r--r--ext/-test-/eval/extconf.rb2
-rw-r--r--ext/-test-/exception/dataerror.c31
-rw-r--r--ext/-test-/exception/depend653
-rw-r--r--ext/-test-/exception/enc_raise.c15
-rw-r--r--ext/-test-/exception/ensured.c39
-rw-r--r--ext/-test-/exception/extconf.rb3
-rw-r--r--ext/-test-/exception/init.c11
-rw-r--r--ext/-test-/fatal/depend162
-rw-r--r--ext/-test-/fatal/extconf.rb2
-rw-r--r--ext/-test-/fatal/rb_fatal.c20
-rw-r--r--ext/-test-/file/depend506
-rw-r--r--ext/-test-/file/extconf.rb18
-rw-r--r--ext/-test-/file/fs.c111
-rw-r--r--ext/-test-/file/init.c11
-rw-r--r--ext/-test-/file/stat.c27
-rw-r--r--ext/-test-/float/depend326
-rw-r--r--ext/-test-/float/extconf.rb3
-rw-r--r--ext/-test-/float/init.c11
-rw-r--r--ext/-test-/float/nextafter.c36
-rw-r--r--ext/-test-/funcall/depend162
-rw-r--r--ext/-test-/funcall/extconf.rb3
-rw-r--r--ext/-test-/funcall/funcall.c72
-rw-r--r--ext/-test-/gvl/call_without_gvl/call_without_gvl.c78
-rw-r--r--ext/-test-/gvl/call_without_gvl/depend162
-rw-r--r--ext/-test-/gvl/call_without_gvl/extconf.rb2
-rw-r--r--ext/-test-/hash/delete.c16
-rw-r--r--ext/-test-/hash/depend322
-rw-r--r--ext/-test-/hash/extconf.rb3
-rw-r--r--ext/-test-/hash/init.c11
-rw-r--r--ext/-test-/integer/core_ext.c36
-rw-r--r--ext/-test-/integer/depend490
-rw-r--r--ext/-test-/integer/extconf.rb3
-rw-r--r--ext/-test-/integer/init.c11
-rw-r--r--ext/-test-/integer/my_integer.c16
-rw-r--r--ext/-test-/iseq_load/depend162
-rw-r--r--ext/-test-/iseq_load/extconf.rb2
-rw-r--r--ext/-test-/iseq_load/iseq_load.c21
-rw-r--r--ext/-test-/iter/break.c25
-rw-r--r--ext/-test-/iter/depend482
-rw-r--r--ext/-test-/iter/extconf.rb3
-rw-r--r--ext/-test-/iter/init.c11
-rw-r--r--ext/-test-/iter/yield.c16
-rw-r--r--ext/-test-/load/dot.dot/depend162
-rw-r--r--ext/-test-/load/dot.dot/dot.dot.c3
-rw-r--r--ext/-test-/load/dot.dot/extconf.rb2
-rw-r--r--ext/-test-/load/protect/depend162
-rw-r--r--ext/-test-/load/protect/extconf.rb1
-rw-r--r--ext/-test-/load/protect/protect.c19
-rw-r--r--ext/-test-/marshal/compat/depend162
-rw-r--r--ext/-test-/marshal/compat/extconf.rb2
-rw-r--r--ext/-test-/marshal/compat/usrcompat.c32
-rw-r--r--ext/-test-/marshal/internal_ivar/depend162
-rw-r--r--ext/-test-/marshal/internal_ivar/extconf.rb2
-rw-r--r--ext/-test-/marshal/internal_ivar/internal_ivar.c45
-rw-r--r--ext/-test-/marshal/usr/depend162
-rw-r--r--ext/-test-/marshal/usr/extconf.rb2
-rw-r--r--ext/-test-/marshal/usr/usrmarshal.c50
-rw-r--r--ext/-test-/memory_status/depend162
-rw-r--r--ext/-test-/memory_status/extconf.rb12
-rw-r--r--ext/-test-/memory_status/memory_status.c80
-rw-r--r--ext/-test-/memory_view/depend163
-rw-r--r--ext/-test-/memory_view/extconf.rb5
-rw-r--r--ext/-test-/memory_view/memory_view.c450
-rw-r--r--ext/-test-/method/arity.c22
-rw-r--r--ext/-test-/method/depend322
-rw-r--r--ext/-test-/method/extconf.rb3
-rw-r--r--ext/-test-/method/init.c11
-rw-r--r--ext/-test-/notimplement/bug.c18
-rw-r--r--ext/-test-/notimplement/depend162
-rw-r--r--ext/-test-/notimplement/extconf.rb2
-rw-r--r--ext/-test-/num2int/depend162
-rw-r--r--ext/-test-/num2int/extconf.rb2
-rw-r--r--ext/-test-/num2int/num2int.c136
-rw-r--r--ext/-test-/path_to_class/depend162
-rw-r--r--ext/-test-/path_to_class/extconf.rb7
-rw-r--r--ext/-test-/path_to_class/path_to_class.c15
-rw-r--r--ext/-test-/popen_deadlock/depend163
-rw-r--r--ext/-test-/popen_deadlock/extconf.rb6
-rw-r--r--ext/-test-/popen_deadlock/infinite_loop_dlsym.c50
-rw-r--r--ext/-test-/postponed_job/depend163
-rw-r--r--ext/-test-/postponed_job/extconf.rb2
-rw-r--r--ext/-test-/postponed_job/postponed_job.c100
-rw-r--r--ext/-test-/printf/depend174
-rw-r--r--ext/-test-/printf/extconf.rb2
-rw-r--r--ext/-test-/printf/printf.c109
-rw-r--r--ext/-test-/proc/depend482
-rw-r--r--ext/-test-/proc/extconf.rb3
-rw-r--r--ext/-test-/proc/init.c11
-rw-r--r--ext/-test-/proc/receiver.c21
-rw-r--r--ext/-test-/proc/super.c27
-rw-r--r--ext/-test-/random/bad_version.c135
-rw-r--r--ext/-test-/random/depend482
-rw-r--r--ext/-test-/random/extconf.rb3
-rw-r--r--ext/-test-/random/init.c11
-rw-r--r--ext/-test-/random/loop.c111
-rw-r--r--ext/-test-/rational/depend179
-rw-r--r--ext/-test-/rational/extconf.rb8
-rw-r--r--ext/-test-/rational/rat.c48
-rw-r--r--ext/-test-/rb_call_super_kw/depend162
-rw-r--r--ext/-test-/rb_call_super_kw/extconf.rb1
-rw-r--r--ext/-test-/rb_call_super_kw/rb_call_super_kw.c15
-rw-r--r--ext/-test-/recursion/depend162
-rw-r--r--ext/-test-/recursion/extconf.rb3
-rw-r--r--ext/-test-/recursion/recursion.c28
-rw-r--r--ext/-test-/regexp/depend323
-rw-r--r--ext/-test-/regexp/extconf.rb3
-rw-r--r--ext/-test-/regexp/init.c11
-rw-r--r--ext/-test-/regexp/parse_depth_limit.c23
-rw-r--r--ext/-test-/scan_args/depend162
-rw-r--r--ext/-test-/scan_args/extconf.rb1
-rw-r--r--ext/-test-/scan_args/scan_args.c305
-rw-r--r--ext/-test-/st/foreach/depend162
-rw-r--r--ext/-test-/st/foreach/extconf.rb2
-rw-r--r--ext/-test-/st/foreach/foreach.c175
-rw-r--r--ext/-test-/st/numhash/depend162
-rw-r--r--ext/-test-/st/numhash/extconf.rb2
-rw-r--r--ext/-test-/st/numhash/numhash.c137
-rw-r--r--ext/-test-/st/update/depend162
-rw-r--r--ext/-test-/st/update/extconf.rb2
-rw-r--r--ext/-test-/st/update/update.c34
-rw-r--r--ext/-test-/string/capacity.c18
-rw-r--r--ext/-test-/string/coderange.c47
-rw-r--r--ext/-test-/string/cstr.c156
-rw-r--r--ext/-test-/string/depend2675
-rw-r--r--ext/-test-/string/ellipsize.c13
-rw-r--r--ext/-test-/string/enc_associate.c22
-rw-r--r--ext/-test-/string/enc_str_buf_cat.c28
-rw-r--r--ext/-test-/string/extconf.rb3
-rw-r--r--ext/-test-/string/fstring.c30
-rw-r--r--ext/-test-/string/init.c11
-rw-r--r--ext/-test-/string/modify.c22
-rw-r--r--ext/-test-/string/new.c21
-rw-r--r--ext/-test-/string/nofree.c13
-rw-r--r--ext/-test-/string/normalize.c17
-rw-r--r--ext/-test-/string/qsort.c61
-rw-r--r--ext/-test-/string/rb_interned_str.c14
-rw-r--r--ext/-test-/string/rb_str_dup.c35
-rw-r--r--ext/-test-/string/set_len.c24
-rw-r--r--ext/-test-/struct/depend642
-rw-r--r--ext/-test-/struct/duplicate.c24
-rw-r--r--ext/-test-/struct/extconf.rb3
-rw-r--r--ext/-test-/struct/init.c11
-rw-r--r--ext/-test-/struct/len.c13
-rw-r--r--ext/-test-/struct/member.c18
-rw-r--r--ext/-test-/symbol/depend322
-rw-r--r--ext/-test-/symbol/extconf.rb4
-rw-r--r--ext/-test-/symbol/init.c39
-rw-r--r--ext/-test-/symbol/type.c78
-rw-r--r--ext/-test-/thread/instrumentation/depend164
-rw-r--r--ext/-test-/thread/instrumentation/extconf.rb2
-rw-r--r--ext/-test-/thread/instrumentation/instrumentation.c141
-rw-r--r--ext/-test-/thread_fd/depend161
-rw-r--r--ext/-test-/thread_fd/extconf.rb2
-rw-r--r--ext/-test-/thread_fd/thread_fd.c30
-rw-r--r--ext/-test-/time/depend487
-rw-r--r--ext/-test-/time/extconf.rb3
-rw-r--r--ext/-test-/time/init.c11
-rw-r--r--ext/-test-/time/leap_second.c15
-rw-r--r--ext/-test-/time/new.c34
-rw-r--r--ext/-test-/tracepoint/depend322
-rw-r--r--ext/-test-/tracepoint/extconf.rb2
-rw-r--r--ext/-test-/tracepoint/gc_hook.c85
-rw-r--r--ext/-test-/tracepoint/tracepoint.c96
-rw-r--r--ext/-test-/typeddata/depend162
-rw-r--r--ext/-test-/typeddata/extconf.rb2
-rw-r--r--ext/-test-/typeddata/typeddata.c44
-rw-r--r--ext/-test-/vm/at_exit.c44
-rw-r--r--ext/-test-/vm/depend162
-rw-r--r--ext/-test-/vm/extconf.rb1
-rw-r--r--ext/-test-/wait/depend174
-rw-r--r--ext/-test-/wait/extconf.rb2
-rw-r--r--ext/-test-/wait/wait.c39
-rw-r--r--ext/-test-/win32/console/attribute.c69
-rw-r--r--ext/-test-/win32/console/depend1
-rw-r--r--ext/-test-/win32/console/extconf.rb5
-rw-r--r--ext/-test-/win32/console/init.c11
-rw-r--r--ext/-test-/win32/dln/depend9
-rw-r--r--ext/-test-/win32/dln/dlntest.c17
-rw-r--r--ext/-test-/win32/dln/extconf.rb33
-rw-r--r--ext/-test-/win32/dln/libdlntest.c4
-rw-r--r--ext/-test-/win32/dln/libdlntest.def2
-rw-r--r--ext/-test-/win32/fd_setsize/depend1
-rw-r--r--ext/-test-/win32/fd_setsize/extconf.rb4
-rw-r--r--ext/-test-/win32/fd_setsize/fd_setsize.c55
-rw-r--r--ext/.document106
-rw-r--r--ext/Setup43
-rw-r--r--ext/Setup.atheos28
-rw-r--r--ext/Setup.dj15
-rw-r--r--ext/Setup.emx16
-rw-r--r--ext/Setup.nt28
-rw-r--r--ext/Setup.x6812
-rw-r--r--ext/Win32API/MANIFEST7
-rw-r--r--ext/Win32API/Win32API.c313
-rw-r--r--ext/Win32API/depend1
-rw-r--r--ext/Win32API/extconf.rb7
-rw-r--r--ext/Win32API/getch.rb5
-rw-r--r--ext/Win32API/point.rb18
-rw-r--r--ext/aix_mksym.rb33
-rw-r--r--ext/bigdecimal/bigdecimal.c7724
-rw-r--r--ext/bigdecimal/bigdecimal.gemspec38
-rw-r--r--ext/bigdecimal/bigdecimal.h313
-rw-r--r--ext/bigdecimal/bits.h141
-rw-r--r--ext/bigdecimal/depend330
-rw-r--r--ext/bigdecimal/extconf.rb87
-rw-r--r--ext/bigdecimal/feature.h68
-rw-r--r--ext/bigdecimal/lib/bigdecimal.rb1
-rw-r--r--ext/bigdecimal/lib/bigdecimal/jacobian.rb90
-rw-r--r--ext/bigdecimal/lib/bigdecimal/ludcmp.rb89
-rw-r--r--ext/bigdecimal/lib/bigdecimal/math.rb232
-rw-r--r--ext/bigdecimal/lib/bigdecimal/newton.rb80
-rw-r--r--ext/bigdecimal/lib/bigdecimal/util.rb185
-rw-r--r--ext/bigdecimal/missing.c27
-rw-r--r--ext/bigdecimal/missing.h196
-rw-r--r--ext/bigdecimal/missing/dtoa.c3462
-rw-r--r--ext/bigdecimal/sample/linear.rb74
-rw-r--r--ext/bigdecimal/sample/nlsolve.rb40
-rw-r--r--ext/bigdecimal/sample/pi.rb21
-rw-r--r--ext/bigdecimal/static_assert.h54
-rw-r--r--ext/cgi/escape/depend174
-rw-r--r--ext/cgi/escape/escape.c466
-rw-r--r--ext/cgi/escape/extconf.rb3
-rw-r--r--ext/configsub.rb32
-rw-r--r--ext/continuation/continuation.c13
-rw-r--r--ext/continuation/depend161
-rw-r--r--ext/continuation/extconf.rb4
-rw-r--r--ext/coverage/coverage.c631
-rw-r--r--ext/coverage/depend195
-rw-r--r--ext/coverage/extconf.rb5
-rw-r--r--ext/coverage/lib/coverage.rb14
-rw-r--r--ext/curses/MANIFEST7
-rw-r--r--ext/curses/curses.c848
-rw-r--r--ext/curses/depend1
-rw-r--r--ext/curses/extconf.rb23
-rw-r--r--ext/curses/hello.rb30
-rw-r--r--ext/curses/rain.rb76
-rw-r--r--ext/curses/view.rb91
-rw-r--r--ext/date/date.gemspec34
-rw-r--r--ext/date/date_core.c10088
-rw-r--r--ext/date/date_parse.c3083
-rw-r--r--ext/date/date_strftime.c638
-rw-r--r--ext/date/date_strptime.c700
-rw-r--r--ext/date/date_tmx.h56
-rw-r--r--ext/date/depend688
-rw-r--r--ext/date/extconf.rb12
-rw-r--r--ext/date/lib/date.rb70
-rw-r--r--ext/date/prereq.mk19
-rw-r--r--ext/date/update-abbr52
-rw-r--r--ext/date/zonetab.h1562
-rw-r--r--ext/date/zonetab.list327
-rw-r--r--ext/dbm/MANIFEST4
-rw-r--r--ext/dbm/dbm.c662
-rw-r--r--ext/dbm/depend1
-rw-r--r--ext/dbm/extconf.rb13
-rw-r--r--ext/digest/bubblebabble/bubblebabble.c147
-rw-r--r--ext/digest/bubblebabble/depend163
-rw-r--r--ext/digest/bubblebabble/extconf.rb4
-rw-r--r--ext/digest/defs.h19
-rw-r--r--ext/digest/depend163
-rw-r--r--ext/digest/digest.c825
-rw-r--r--ext/digest/digest.gemspec44
-rw-r--r--ext/digest/digest.h72
-rw-r--r--ext/digest/digest_conf.rb17
-rw-r--r--ext/digest/extconf.rb11
-rw-r--r--ext/digest/lib/digest.rb123
-rw-r--r--ext/digest/lib/digest/loader.rb3
-rw-r--r--ext/digest/lib/digest/version.rb5
-rw-r--r--ext/digest/md5/depend331
-rw-r--r--ext/digest/md5/extconf.rb17
-rw-r--r--ext/digest/md5/md5.c424
-rw-r--r--ext/digest/md5/md5.h80
-rw-r--r--ext/digest/md5/md5cc.h19
-rw-r--r--ext/digest/md5/md5init.c61
-rw-r--r--ext/digest/rmd160/depend330
-rw-r--r--ext/digest/rmd160/extconf.rb21
-rw-r--r--ext/digest/rmd160/rmd160.c463
-rw-r--r--ext/digest/rmd160/rmd160.h56
-rw-r--r--ext/digest/rmd160/rmd160init.c57
-rw-r--r--ext/digest/sha1/depend331
-rw-r--r--ext/digest/sha1/extconf.rb17
-rw-r--r--ext/digest/sha1/sha1.c271
-rw-r--r--ext/digest/sha1/sha1.h39
-rw-r--r--ext/digest/sha1/sha1cc.h14
-rw-r--r--ext/digest/sha1/sha1init.c63
-rw-r--r--ext/digest/sha2/depend330
-rw-r--r--ext/digest/sha2/extconf.rb19
-rw-r--r--ext/digest/sha2/lib/sha2.rb142
-rw-r--r--ext/digest/sha2/lib/sha2/loader.rb3
-rw-r--r--ext/digest/sha2/sha2.c1081
-rw-r--r--ext/digest/sha2/sha2.h225
-rw-r--r--ext/digest/sha2/sha2cc.h31
-rw-r--r--ext/digest/sha2/sha2init.c53
-rw-r--r--ext/digest/test.sh30
-rw-r--r--ext/erb/escape/escape.c95
-rw-r--r--ext/erb/escape/extconf.rb7
-rw-r--r--ext/etc/MANIFEST6
-rw-r--r--ext/etc/depend182
-rw-r--r--ext/etc/etc.c1180
-rw-r--r--ext/etc/etc.gemspec43
-rw-r--r--ext/etc/etc.txt72
-rw-r--r--ext/etc/etc.txt.jp72
-rw-r--r--ext/etc/extconf.rb74
-rw-r--r--ext/etc/mkconstants.rb340
-rwxr-xr-xext/extmk.rb865
-rw-r--r--ext/extmk.rb.in722
-rw-r--r--ext/fcntl/MANIFEST3
-rw-r--r--ext/fcntl/depend163
-rw-r--r--ext/fcntl/extconf.rb3
-rw-r--r--ext/fcntl/fcntl.c187
-rw-r--r--ext/fcntl/fcntl.gemspec21
-rw-r--r--ext/fiddle/closure.c433
-rw-r--r--ext/fiddle/closure.h8
-rw-r--r--ext/fiddle/conversions.c330
-rw-r--r--ext/fiddle/conversions.h53
-rw-r--r--ext/fiddle/depend1396
-rw-r--r--ext/fiddle/extconf.rb251
-rw-r--r--ext/fiddle/fiddle.c687
-rw-r--r--ext/fiddle/fiddle.gemspec59
-rw-r--r--ext/fiddle/fiddle.h226
-rw-r--r--ext/fiddle/function.c491
-rw-r--r--ext/fiddle/function.h8
-rw-r--r--ext/fiddle/handle.c586
-rw-r--r--ext/fiddle/lib/fiddle.rb103
-rw-r--r--ext/fiddle/lib/fiddle/closure.rb74
-rw-r--r--ext/fiddle/lib/fiddle/cparser.rb264
-rw-r--r--ext/fiddle/lib/fiddle/function.rb29
-rw-r--r--ext/fiddle/lib/fiddle/import.rb320
-rw-r--r--ext/fiddle/lib/fiddle/pack.rb137
-rw-r--r--ext/fiddle/lib/fiddle/struct.rb539
-rw-r--r--ext/fiddle/lib/fiddle/types.rb73
-rw-r--r--ext/fiddle/lib/fiddle/value.rb122
-rw-r--r--ext/fiddle/lib/fiddle/version.rb3
-rw-r--r--ext/fiddle/memory_view.c321
-rw-r--r--ext/fiddle/pinned.c123
-rw-r--r--ext/fiddle/pointer.c853
-rw-r--r--ext/fiddle/win32/fficonfig.h29
-rw-r--r--ext/fiddle/win32/libffi-3.2.1-mswin.patch191
-rwxr-xr-xext/fiddle/win32/libffi-config.rb48
-rw-r--r--ext/fiddle/win32/libffi.mk.tmpl96
-rw-r--r--ext/gdbm/MANIFEST5
-rw-r--r--ext/gdbm/README1
-rw-r--r--ext/gdbm/depend1
-rw-r--r--ext/gdbm/extconf.rb7
-rw-r--r--ext/gdbm/gdbm.c669
-rwxr-xr-xext/io/console/buildgem.sh5
-rw-r--r--ext/io/console/console.c1721
-rw-r--r--ext/io/console/depend197
-rw-r--r--ext/io/console/extconf.rb38
-rw-r--r--ext/io/console/io-console.gemspec41
-rw-r--r--ext/io/console/lib/console/size.rb23
-rw-r--r--ext/io/console/win32_vk.chksum1
-rw-r--r--ext/io/console/win32_vk.inc1390
-rw-r--r--ext/io/console/win32_vk.list166
-rw-r--r--ext/io/nonblock/depend175
-rw-r--r--ext/io/nonblock/extconf.rb9
-rw-r--r--ext/io/nonblock/io-nonblock.gemspec25
-rw-r--r--ext/io/nonblock/nonblock.c185
-rw-r--r--ext/io/wait/depend176
-rw-r--r--ext/io/wait/extconf.rb24
-rw-r--r--ext/io/wait/io-wait.gemspec38
-rw-r--r--ext/io/wait/wait.c430
-rw-r--r--ext/json/VERSION1
-rw-r--r--ext/json/depend2
-rw-r--r--ext/json/extconf.rb3
-rw-r--r--ext/json/fbuffer/fbuffer.h187
-rw-r--r--ext/json/generator/depend182
-rw-r--r--ext/json/generator/extconf.rb4
-rw-r--r--ext/json/generator/generator.c1608
-rw-r--r--ext/json/generator/generator.h174
-rw-r--r--ext/json/json.gemspec67
-rw-r--r--ext/json/lib/json.rb583
-rw-r--r--ext/json/lib/json/add/bigdecimal.rb29
-rw-r--r--ext/json/lib/json/add/complex.rb28
-rw-r--r--ext/json/lib/json/add/core.rb12
-rw-r--r--ext/json/lib/json/add/date.rb34
-rw-r--r--ext/json/lib/json/add/date_time.rb50
-rw-r--r--ext/json/lib/json/add/exception.rb31
-rw-r--r--ext/json/lib/json/add/ostruct.rb31
-rw-r--r--ext/json/lib/json/add/range.rb29
-rw-r--r--ext/json/lib/json/add/rational.rb27
-rw-r--r--ext/json/lib/json/add/regexp.rb30
-rw-r--r--ext/json/lib/json/add/set.rb29
-rw-r--r--ext/json/lib/json/add/struct.rb30
-rw-r--r--ext/json/lib/json/add/symbol.rb25
-rw-r--r--ext/json/lib/json/add/time.rb38
-rw-r--r--ext/json/lib/json/common.rb703
-rw-r--r--ext/json/lib/json/ext.rb15
-rw-r--r--ext/json/lib/json/generic_object.rb71
-rw-r--r--ext/json/lib/json/version.rb9
-rw-r--r--ext/json/parser/depend180
-rw-r--r--ext/json/parser/extconf.rb32
-rw-r--r--ext/json/parser/parser.c3347
-rw-r--r--ext/json/parser/parser.h96
-rw-r--r--ext/json/parser/parser.rl986
-rw-r--r--ext/json/parser/prereq.mk13
-rw-r--r--ext/md5/MANIFEST8
-rw-r--r--ext/md5/depend2
-rw-r--r--ext/md5/extconf.rb3
-rw-r--r--ext/md5/md5.h86
-rw-r--r--ext/md5/md5.txt49
-rw-r--r--ext/md5/md5.txt.jp49
-rw-r--r--ext/md5/md5c.c337
-rw-r--r--ext/md5/md5init.c114
-rw-r--r--ext/monitor/depend161
-rw-r--r--ext/monitor/extconf.rb2
-rw-r--r--ext/monitor/lib/monitor.rb284
-rw-r--r--ext/monitor/monitor.c225
-rw-r--r--ext/nkf/MANIFEST7
-rw-r--r--ext/nkf/depend183
-rw-r--r--ext/nkf/extconf.rb1
-rw-r--r--ext/nkf/lib/kconv.rb288
-rw-r--r--ext/nkf/nkf-utf8/config.h51
-rw-r--r--ext/nkf/nkf-utf8/nkf.c7205
-rw-r--r--ext/nkf/nkf-utf8/nkf.h189
-rw-r--r--ext/nkf/nkf-utf8/utf8tbl.c14638
-rw-r--r--ext/nkf/nkf-utf8/utf8tbl.h72
-rw-r--r--ext/nkf/nkf.c611
-rw-r--r--ext/nkf/nkf.gemspec24
-rw-r--r--ext/nkf/nkf1.7/nkf.c1900
-rw-r--r--ext/nkf/test.rb318
-rw-r--r--ext/objspace/depend582
-rw-r--r--ext/objspace/extconf.rb4
-rw-r--r--ext/objspace/lib/objspace.rb142
-rw-r--r--ext/objspace/lib/objspace/trace.rb45
-rw-r--r--ext/objspace/object_tracing.c586
-rw-r--r--ext/objspace/objspace.c1005
-rw-r--r--ext/objspace/objspace.h20
-rw-r--r--ext/objspace/objspace_dump.c833
-rw-r--r--ext/openssl/History.md676
-rw-r--r--ext/openssl/depend6215
-rw-r--r--ext/openssl/extconf.rb196
-rw-r--r--ext/openssl/lib/openssl.rb37
-rw-r--r--ext/openssl/lib/openssl/bn.rb40
-rw-r--r--ext/openssl/lib/openssl/buffering.rb487
-rw-r--r--ext/openssl/lib/openssl/cipher.rb67
-rw-r--r--ext/openssl/lib/openssl/digest.rb73
-rw-r--r--ext/openssl/lib/openssl/hmac.rb78
-rw-r--r--ext/openssl/lib/openssl/marshal.rb30
-rw-r--r--ext/openssl/lib/openssl/pkcs5.rb22
-rw-r--r--ext/openssl/lib/openssl/pkey.rb471
-rw-r--r--ext/openssl/lib/openssl/ssl.rb547
-rw-r--r--ext/openssl/lib/openssl/version.rb5
-rw-r--r--ext/openssl/lib/openssl/x509.rb391
-rw-r--r--ext/openssl/openssl.gemspec21
-rw-r--r--ext/openssl/openssl_missing.c40
-rw-r--r--ext/openssl/openssl_missing.h238
-rw-r--r--ext/openssl/ossl.c1295
-rw-r--r--ext/openssl/ossl.h201
-rw-r--r--ext/openssl/ossl_asn1.c1891
-rw-r--r--ext/openssl/ossl_asn1.h62
-rw-r--r--ext/openssl/ossl_bio.c42
-rw-r--r--ext/openssl/ossl_bio.h16
-rw-r--r--ext/openssl/ossl_bn.c1344
-rw-r--r--ext/openssl/ossl_bn.h26
-rw-r--r--ext/openssl/ossl_cipher.c1074
-rw-r--r--ext/openssl/ossl_cipher.h20
-rw-r--r--ext/openssl/ossl_config.c460
-rw-r--r--ext/openssl/ossl_config.h16
-rw-r--r--ext/openssl/ossl_digest.c425
-rw-r--r--ext/openssl/ossl_digest.h20
-rw-r--r--ext/openssl/ossl_engine.c568
-rw-r--r--ext/openssl/ossl_engine.h19
-rw-r--r--ext/openssl/ossl_hmac.c310
-rw-r--r--ext/openssl/ossl_hmac.h18
-rw-r--r--ext/openssl/ossl_kdf.c311
-rw-r--r--ext/openssl/ossl_kdf.h6
-rw-r--r--ext/openssl/ossl_ns_spki.c405
-rw-r--r--ext/openssl/ossl_ns_spki.h19
-rw-r--r--ext/openssl/ossl_ocsp.c1965
-rw-r--r--ext/openssl/ossl_ocsp.h23
-rw-r--r--ext/openssl/ossl_pkcs12.c275
-rw-r--r--ext/openssl/ossl_pkcs12.h13
-rw-r--r--ext/openssl/ossl_pkcs7.c1081
-rw-r--r--ext/openssl/ossl_pkcs7.h36
-rw-r--r--ext/openssl/ossl_pkey.c1624
-rw-r--r--ext/openssl/ossl_pkey.h204
-rw-r--r--ext/openssl/ossl_pkey_dh.c440
-rw-r--r--ext/openssl/ossl_pkey_dsa.c359
-rw-r--r--ext/openssl/ossl_pkey_ec.c1655
-rw-r--r--ext/openssl/ossl_pkey_rsa.c579
-rw-r--r--ext/openssl/ossl_rand.c200
-rw-r--r--ext/openssl/ossl_rand.h18
-rw-r--r--ext/openssl/ossl_ssl.c3142
-rw-r--r--ext/openssl/ossl_ssl.h36
-rw-r--r--ext/openssl/ossl_ssl_session.c331
-rw-r--r--ext/openssl/ossl_ts.c1539
-rw-r--r--ext/openssl/ossl_ts.h16
-rw-r--r--ext/openssl/ossl_x509.c256
-rw-r--r--ext/openssl/ossl_x509.h115
-rw-r--r--ext/openssl/ossl_x509attr.c324
-rw-r--r--ext/openssl/ossl_x509cert.c1002
-rw-r--r--ext/openssl/ossl_x509crl.c545
-rw-r--r--ext/openssl/ossl_x509ext.c490
-rw-r--r--ext/openssl/ossl_x509name.c597
-rw-r--r--ext/openssl/ossl_x509req.c444
-rw-r--r--ext/openssl/ossl_x509revoked.c300
-rw-r--r--ext/openssl/ossl_x509store.c986
-rw-r--r--ext/pathname/depend174
-rw-r--r--ext/pathname/extconf.rb4
-rw-r--r--ext/pathname/lib/pathname.rb604
-rw-r--r--ext/pathname/pathname.c1701
-rw-r--r--ext/pathname/pathname.gemspec25
-rw-r--r--ext/psych/.gitignore1
-rw-r--r--ext/psych/depend901
-rw-r--r--ext/psych/extconf.rb53
-rw-r--r--ext/psych/lib/psych.rb741
-rw-r--r--ext/psych/lib/psych/class_loader.rb104
-rw-r--r--ext/psych/lib/psych/coder.rb95
-rw-r--r--ext/psych/lib/psych/core_ext.rb19
-rw-r--r--ext/psych/lib/psych/exception.rb28
-rw-r--r--ext/psych/lib/psych/handler.rb255
-rw-r--r--ext/psych/lib/psych/handlers/document_stream.rb23
-rw-r--r--ext/psych/lib/psych/handlers/recorder.rb40
-rw-r--r--ext/psych/lib/psych/json/ruby_events.rb20
-rw-r--r--ext/psych/lib/psych/json/stream.rb17
-rw-r--r--ext/psych/lib/psych/json/tree_builder.rb13
-rw-r--r--ext/psych/lib/psych/json/yaml_events.rb30
-rw-r--r--ext/psych/lib/psych/nodes.rb78
-rw-r--r--ext/psych/lib/psych/nodes/alias.rb21
-rw-r--r--ext/psych/lib/psych/nodes/document.rb63
-rw-r--r--ext/psych/lib/psych/nodes/mapping.rb59
-rw-r--r--ext/psych/lib/psych/nodes/node.rb75
-rw-r--r--ext/psych/lib/psych/nodes/scalar.rb70
-rw-r--r--ext/psych/lib/psych/nodes/sequence.rb84
-rw-r--r--ext/psych/lib/psych/nodes/stream.rb40
-rw-r--r--ext/psych/lib/psych/omap.rb5
-rw-r--r--ext/psych/lib/psych/parser.rb65
-rw-r--r--ext/psych/lib/psych/scalar_scanner.rb142
-rw-r--r--ext/psych/lib/psych/set.rb5
-rw-r--r--ext/psych/lib/psych/stream.rb38
-rw-r--r--ext/psych/lib/psych/streaming.rb28
-rw-r--r--ext/psych/lib/psych/syntax_error.rb22
-rw-r--r--ext/psych/lib/psych/tree_builder.rb137
-rw-r--r--ext/psych/lib/psych/versions.rb10
-rw-r--r--ext/psych/lib/psych/visitors.rb7
-rw-r--r--ext/psych/lib/psych/visitors/depth_first.rb27
-rw-r--r--ext/psych/lib/psych/visitors/emitter.rb52
-rw-r--r--ext/psych/lib/psych/visitors/json_tree.rb25
-rw-r--r--ext/psych/lib/psych/visitors/to_ruby.rb436
-rw-r--r--ext/psych/lib/psych/visitors/visitor.rb34
-rw-r--r--ext/psych/lib/psych/visitors/yaml_tree.rb587
-rw-r--r--ext/psych/lib/psych/y.rb10
-rw-r--r--ext/psych/psych.c37
-rw-r--r--ext/psych/psych.gemspec66
-rw-r--r--ext/psych/psych.h17
-rw-r--r--ext/psych/psych_emitter.c555
-rw-r--r--ext/psych/psych_emitter.h8
-rw-r--r--ext/psych/psych_parser.c565
-rw-r--r--ext/psych/psych_parser.h6
-rw-r--r--ext/psych/psych_to_ruby.c39
-rw-r--r--ext/psych/psych_to_ruby.h8
-rw-r--r--ext/psych/psych_yaml_tree.c12
-rw-r--r--ext/psych/psych_yaml_tree.h8
-rw-r--r--ext/pty/MANIFEST12
-rw-r--r--ext/pty/README93
-rw-r--r--ext/pty/README.expect22
-rw-r--r--ext/pty/README.expect.jp21
-rw-r--r--ext/pty/README.jp89
-rw-r--r--ext/pty/depend187
-rw-r--r--ext/pty/expect_sample.rb56
-rw-r--r--ext/pty/extconf.rb27
-rw-r--r--ext/pty/lib/expect.rb49
-rw-r--r--ext/pty/pty.c1037
-rw-r--r--ext/pty/script.rb38
-rw-r--r--ext/pty/shl.rb96
-rw-r--r--ext/racc/cparse/README11
-rw-r--r--ext/racc/cparse/cparse.c861
-rw-r--r--ext/racc/cparse/depend162
-rw-r--r--ext/racc/cparse/extconf.rb9
-rw-r--r--ext/rbconfig/sizeof/depend335
-rw-r--r--ext/rbconfig/sizeof/extconf.rb36
-rw-r--r--ext/readline/.gitignore1
-rw-r--r--ext/readline/MANIFEST5
-rw-r--r--ext/readline/README61
-rw-r--r--ext/readline/README.ja386
-rw-r--r--ext/readline/depend176
-rw-r--r--ext/readline/depend-gem4
-rw-r--r--ext/readline/extconf.rb111
-rw-r--r--ext/readline/readline-ext.gemspec22
-rw-r--r--ext/readline/readline.c2163
-rw-r--r--ext/ripper/README30
-rw-r--r--ext/ripper/depend268
-rw-r--r--ext/ripper/eventids2.c294
-rw-r--r--ext/ripper/extconf.rb27
-rw-r--r--ext/ripper/lib/ripper.rb74
-rw-r--r--ext/ripper/lib/ripper/core.rb74
-rw-r--r--ext/ripper/lib/ripper/filter.rb86
-rw-r--r--ext/ripper/lib/ripper/lexer.rb377
-rw-r--r--ext/ripper/lib/ripper/sexp.rb187
-rw-r--r--ext/ripper/tools/dsl.rb88
-rw-r--r--ext/ripper/tools/generate-param-macros.rb15
-rw-r--r--ext/ripper/tools/generate.rb171
-rw-r--r--ext/ripper/tools/preproc.rb107
-rw-r--r--ext/ripper/tools/strip.rb12
-rw-r--r--ext/rubyvm/depend2
-rw-r--r--ext/rubyvm/extconf.rb1
-rw-r--r--ext/rubyvm/lib/forwardable/impl.rb16
-rw-r--r--ext/sdbm/MANIFEST6
-rw-r--r--ext/sdbm/_sdbm.c975
-rw-r--r--ext/sdbm/depend2
-rw-r--r--ext/sdbm/extconf.rb3
-rw-r--r--ext/sdbm/init.c660
-rw-r--r--ext/sdbm/sdbm.h84
-rw-r--r--ext/socket/.document17
-rw-r--r--ext/socket/MANIFEST8
-rw-r--r--ext/socket/addrinfo.h84
-rw-r--r--ext/socket/ancdata.c1738
-rw-r--r--ext/socket/basicsocket.c792
-rw-r--r--ext/socket/constants.c144
-rw-r--r--ext/socket/depend2897
-rw-r--r--ext/socket/extconf.rb817
-rw-r--r--ext/socket/getaddrinfo.c988
-rw-r--r--ext/socket/getnameinfo.c294
-rw-r--r--ext/socket/ifaddr.c478
-rw-r--r--ext/socket/init.c781
-rw-r--r--ext/socket/ipsocket.c403
-rw-r--r--ext/socket/lib/socket.rb1360
-rw-r--r--ext/socket/mkconstants.rb852
-rw-r--r--ext/socket/option.c1477
-rw-r--r--ext/socket/raddrinfo.c2685
-rw-r--r--ext/socket/rubysocket.h470
-rw-r--r--ext/socket/socket.c3785
-rw-r--r--ext/socket/sockport.h84
-rw-r--r--ext/socket/sockssocket.c74
-rw-r--r--ext/socket/tcpserver.c140
-rw-r--r--ext/socket/tcpsocket.c111
-rw-r--r--ext/socket/udpsocket.c250
-rw-r--r--ext/socket/unixserver.c121
-rw-r--r--ext/socket/unixsocket.c595
-rw-r--r--ext/stringio/README.md10
-rw-r--r--ext/stringio/depend175
-rw-r--r--ext/stringio/extconf.rb4
-rw-r--r--ext/stringio/stringio.c1976
-rw-r--r--ext/stringio/stringio.gemspec38
-rw-r--r--ext/strscan/depend176
-rw-r--r--ext/strscan/extconf.rb10
-rw-r--r--ext/strscan/strscan.c1737
-rw-r--r--ext/strscan/strscan.gemspec41
-rw-r--r--ext/syslog/depend162
-rw-r--r--ext/syslog/extconf.rb13
-rw-r--r--ext/syslog/lib/syslog/logger.rb209
-rw-r--r--ext/syslog/syslog.c588
-rw-r--r--ext/syslog/syslog.gemspec23
-rw-r--r--ext/syslog/syslog.txt124
-rw-r--r--ext/tcltklib/MANIFEST16
-rw-r--r--ext/tcltklib/MANUAL.euc124
-rw-r--r--ext/tcltklib/README.euc133
-rw-r--r--ext/tcltklib/demo/lines0.tcl42
-rw-r--r--ext/tcltklib/demo/lines1.rb54
-rw-r--r--ext/tcltklib/demo/lines2.rb50
-rw-r--r--ext/tcltklib/depend2
-rw-r--r--ext/tcltklib/extconf.rb71
-rw-r--r--ext/tcltklib/lib/tcltk.rb367
-rw-r--r--ext/tcltklib/sample/batsu.gifbin538 -> 0 bytes-rw-r--r--ext/tcltklib/sample/maru.gifbin481 -> 0 bytes-rw-r--r--ext/tcltklib/sample/sample0.rb39
-rw-r--r--ext/tcltklib/sample/sample1.rb634
-rw-r--r--ext/tcltklib/sample/sample2.rb449
-rw-r--r--ext/tcltklib/stubs.c86
-rw-r--r--ext/tcltklib/tcltklib.c527
-rw-r--r--ext/tk/MANIFEST25
-rw-r--r--ext/tk/depend1
-rw-r--r--ext/tk/extconf.rb2
-rw-r--r--ext/tk/lib/tk.rb2939
-rw-r--r--ext/tk/lib/tkafter.rb316
-rw-r--r--ext/tk/lib/tkbgerror.rb17
-rw-r--r--ext/tk/lib/tkcanvas.rb878
-rw-r--r--ext/tk/lib/tkclass.rb38
-rw-r--r--ext/tk/lib/tkdialog.rb141
-rw-r--r--ext/tk/lib/tkentry.rb77
-rw-r--r--ext/tk/lib/tkfont.rb1026
-rw-r--r--ext/tk/lib/tkmenubar.rb137
-rw-r--r--ext/tk/lib/tkmngfocus.rb27
-rw-r--r--ext/tk/lib/tkpalette.rb48
-rw-r--r--ext/tk/lib/tkscrollbox.rb29
-rw-r--r--ext/tk/lib/tktext.rb983
-rw-r--r--ext/tk/lib/tkvirtevent.rb66
-rw-r--r--ext/tk/sample/tkbiff.rb149
-rw-r--r--ext/tk/sample/tkbrowse.rb79
-rw-r--r--ext/tk/sample/tkdialog.rb62
-rw-r--r--ext/tk/sample/tkfrom.rb132
-rw-r--r--ext/tk/sample/tkhello.rb10
-rw-r--r--ext/tk/sample/tkline.rb45
-rw-r--r--ext/tk/sample/tktimer.rb50
-rw-r--r--ext/tk/tkutil.c45
-rw-r--r--ext/win32/depend2
-rw-r--r--ext/win32/extconf.rb4
-rw-r--r--ext/win32/lib/win32/registry.rb914
-rw-r--r--ext/win32/lib/win32/resolv.rb135
-rw-r--r--ext/win32/lib/win32/sspi.rb338
-rw-r--r--ext/win32/resolv/depend17
-rw-r--r--ext/win32/resolv/extconf.rb3
-rw-r--r--ext/win32/resolv/resolv.c65
-rw-r--r--ext/win32ole/depend12
-rw-r--r--ext/win32ole/extconf.rb45
-rw-r--r--ext/win32ole/lib/win32ole.rb33
-rw-r--r--ext/win32ole/lib/win32ole/property.rb17
-rw-r--r--ext/win32ole/sample/excel1.rb37
-rw-r--r--ext/win32ole/sample/excel2.rb31
-rw-r--r--ext/win32ole/sample/excel3.rb21
-rw-r--r--ext/win32ole/sample/ie.rb12
-rw-r--r--ext/win32ole/sample/ieconst.rb33
-rw-r--r--ext/win32ole/sample/ienavi.rb41
-rw-r--r--ext/win32ole/sample/ienavi2.rb41
-rw-r--r--ext/win32ole/sample/oledirs.rb24
-rw-r--r--ext/win32ole/sample/olegen.rb348
-rw-r--r--ext/win32ole/sample/xml.rb7307
-rw-r--r--ext/win32ole/win32ole.c4142
-rw-r--r--ext/win32ole/win32ole.gemspec22
-rw-r--r--ext/win32ole/win32ole.h155
-rw-r--r--ext/win32ole/win32ole_error.c87
-rw-r--r--ext/win32ole/win32ole_error.h9
-rw-r--r--ext/win32ole/win32ole_event.c1278
-rw-r--r--ext/win32ole/win32ole_event.h6
-rw-r--r--ext/win32ole/win32ole_method.c953
-rw-r--r--ext/win32ole/win32ole_method.h16
-rw-r--r--ext/win32ole/win32ole_param.c439
-rw-r--r--ext/win32ole/win32ole_param.h8
-rw-r--r--ext/win32ole/win32ole_record.c607
-rw-r--r--ext/win32ole/win32ole_record.h10
-rw-r--r--ext/win32ole/win32ole_type.c918
-rw-r--r--ext/win32ole/win32ole_type.h8
-rw-r--r--ext/win32ole/win32ole_typelib.c847
-rw-r--r--ext/win32ole/win32ole_typelib.h11
-rw-r--r--ext/win32ole/win32ole_variable.c384
-rw-r--r--ext/win32ole/win32ole_variable.h8
-rw-r--r--ext/win32ole/win32ole_variant.c736
-rw-r--r--ext/win32ole/win32ole_variant.h9
-rw-r--r--ext/win32ole/win32ole_variant_m.c151
-rw-r--r--ext/win32ole/win32ole_variant_m.h7
-rw-r--r--ext/zlib/.gitignore1
-rw-r--r--ext/zlib/depend176
-rw-r--r--ext/zlib/extconf.rb139
-rw-r--r--ext/zlib/zlib.c5074
-rw-r--r--ext/zlib/zlib.gemspec31
-rw-r--r--file.c7598
-rw-r--r--gc.c15389
-rw-r--r--gc.h147
-rw-r--r--gc.rb296
-rw-r--r--gem_prelude.rb26
-rw-r--r--gems/bundled_gems16
-rw-r--r--gems/lib/core_assertions.rb1
-rw-r--r--gems/lib/envutil.rb1
-rw-r--r--gems/lib/rake/extensiontask.rb12
-rw-r--r--golf_prelude.rb130
-rw-r--r--goruby.c68
-rw-r--r--hash.c7825
-rw-r--r--hrtime.h227
-rw-r--r--id_table.c326
-rw-r--r--id_table.h39
-rw-r--r--include/ruby.h40
-rw-r--r--include/ruby/assert.h234
-rw-r--r--include/ruby/atomic.h890
-rw-r--r--include/ruby/backward.h25
-rw-r--r--include/ruby/backward/2/assume.h56
-rw-r--r--include/ruby/backward/2/attributes.h165
-rw-r--r--include/ruby/backward/2/bool.h36
-rw-r--r--include/ruby/backward/2/gcc_version_since.h37
-rw-r--r--include/ruby/backward/2/inttypes.h131
-rw-r--r--include/ruby/backward/2/limits.h99
-rw-r--r--include/ruby/backward/2/long_long.h73
-rw-r--r--include/ruby/backward/2/r_cast.h32
-rw-r--r--include/ruby/backward/2/rmodule.h36
-rw-r--r--include/ruby/backward/2/stdalign.h30
-rw-r--r--include/ruby/backward/2/stdarg.h69
-rw-r--r--include/ruby/backward/cxxanyargs.hpp700
-rw-r--r--include/ruby/debug.h667
-rw-r--r--include/ruby/defines.h116
-rw-r--r--include/ruby/encoding.h31
-rw-r--r--include/ruby/fiber/scheduler.h374
-rw-r--r--include/ruby/intern.h64
-rw-r--r--include/ruby/internal/abi.h58
-rw-r--r--include/ruby/internal/anyargs.h398
-rw-r--r--include/ruby/internal/arithmetic.h39
-rw-r--r--include/ruby/internal/arithmetic/char.h81
-rw-r--r--include/ruby/internal/arithmetic/double.h72
-rw-r--r--include/ruby/internal/arithmetic/fixnum.h60
-rw-r--r--include/ruby/internal/arithmetic/gid_t.h41
-rw-r--r--include/ruby/internal/arithmetic/int.h264
-rw-r--r--include/ruby/internal/arithmetic/intptr_t.h74
-rw-r--r--include/ruby/internal/arithmetic/long.h356
-rw-r--r--include/ruby/internal/arithmetic/long_long.h135
-rw-r--r--include/ruby/internal/arithmetic/mode_t.h41
-rw-r--r--include/ruby/internal/arithmetic/off_t.h62
-rw-r--r--include/ruby/internal/arithmetic/pid_t.h41
-rw-r--r--include/ruby/internal/arithmetic/short.h113
-rw-r--r--include/ruby/internal/arithmetic/size_t.h66
-rw-r--r--include/ruby/internal/arithmetic/st_data_t.h75
-rw-r--r--include/ruby/internal/arithmetic/uid_t.h41
-rw-r--r--include/ruby/internal/assume.h87
-rw-r--r--include/ruby/internal/attr/alloc_size.h32
-rw-r--r--include/ruby/internal/attr/artificial.h46
-rw-r--r--include/ruby/internal/attr/cold.h37
-rw-r--r--include/ruby/internal/attr/const.h46
-rw-r--r--include/ruby/internal/attr/constexpr.h84
-rw-r--r--include/ruby/internal/attr/deprecated.h75
-rw-r--r--include/ruby/internal/attr/diagnose_if.h42
-rw-r--r--include/ruby/internal/attr/enum_extensibility.h32
-rw-r--r--include/ruby/internal/attr/error.h32
-rw-r--r--include/ruby/internal/attr/flag_enum.h33
-rw-r--r--include/ruby/internal/attr/forceinline.h40
-rw-r--r--include/ruby/internal/attr/format.h38
-rw-r--r--include/ruby/internal/attr/maybe_unused.h38
-rw-r--r--include/ruby/internal/attr/noalias.h69
-rw-r--r--include/ruby/internal/attr/nodiscard.h45
-rw-r--r--include/ruby/internal/attr/noexcept.h91
-rw-r--r--include/ruby/internal/attr/noinline.h35
-rw-r--r--include/ruby/internal/attr/nonnull.h34
-rw-r--r--include/ruby/internal/attr/nonstring.h32
-rw-r--r--include/ruby/internal/attr/noreturn.h48
-rw-r--r--include/ruby/internal/attr/pure.h43
-rw-r--r--include/ruby/internal/attr/restrict.h44
-rw-r--r--include/ruby/internal/attr/returns_nonnull.h37
-rw-r--r--include/ruby/internal/attr/warning.h32
-rw-r--r--include/ruby/internal/attr/weakref.h32
-rw-r--r--include/ruby/internal/cast.h50
-rw-r--r--include/ruby/internal/compiler_is.h45
-rw-r--r--include/ruby/internal/compiler_is/apple.h40
-rw-r--r--include/ruby/internal/compiler_is/clang.h37
-rw-r--r--include/ruby/internal/compiler_is/gcc.h45
-rw-r--r--include/ruby/internal/compiler_is/intel.h40
-rw-r--r--include/ruby/internal/compiler_is/msvc.h56
-rw-r--r--include/ruby/internal/compiler_is/sunpro.h54
-rw-r--r--include/ruby/internal/compiler_since.h61
-rw-r--r--include/ruby/internal/config.h155
-rw-r--r--include/ruby/internal/constant_p.h38
-rw-r--r--include/ruby/internal/core.h35
-rw-r--r--include/ruby/internal/core/rarray.h585
-rw-r--r--include/ruby/internal/core/rbasic.h158
-rw-r--r--include/ruby/internal/core/rbignum.h80
-rw-r--r--include/ruby/internal/core/rclass.h93
-rw-r--r--include/ruby/internal/core/rdata.h386
-rw-r--r--include/ruby/internal/core/rfile.h51
-rw-r--r--include/ruby/internal/core/rhash.h144
-rw-r--r--include/ruby/internal/core/rmatch.h146
-rw-r--r--include/ruby/internal/core/robject.h176
-rw-r--r--include/ruby/internal/core/rregexp.h168
-rw-r--r--include/ruby/internal/core/rstring.h578
-rw-r--r--include/ruby/internal/core/rstruct.h121
-rw-r--r--include/ruby/internal/core/rtypeddata.h604
-rw-r--r--include/ruby/internal/ctype.h545
-rw-r--r--include/ruby/internal/dllexport.h112
-rw-r--r--include/ruby/internal/dosish.h89
-rw-r--r--include/ruby/internal/encoding/coderange.h202
-rw-r--r--include/ruby/internal/encoding/ctype.h258
-rw-r--r--include/ruby/internal/encoding/encoding.h1060
-rw-r--r--include/ruby/internal/encoding/pathname.h184
-rw-r--r--include/ruby/internal/encoding/re.h46
-rw-r--r--include/ruby/internal/encoding/sprintf.h78
-rw-r--r--include/ruby/internal/encoding/string.h346
-rw-r--r--include/ruby/internal/encoding/symbol.h100
-rw-r--r--include/ruby/internal/encoding/transcode.h562
-rw-r--r--include/ruby/internal/error.h582
-rw-r--r--include/ruby/internal/eval.h400
-rw-r--r--include/ruby/internal/event.h154
-rw-r--r--include/ruby/internal/fl_type.h948
-rw-r--r--include/ruby/internal/gc.h62
-rw-r--r--include/ruby/internal/glob.h113
-rw-r--r--include/ruby/internal/globals.h209
-rw-r--r--include/ruby/internal/has/attribute.h163
-rw-r--r--include/ruby/internal/has/builtin.h117
-rw-r--r--include/ruby/internal/has/c_attribute.h38
-rw-r--r--include/ruby/internal/has/cpp_attribute.h86
-rw-r--r--include/ruby/internal/has/declspec_attribute.h47
-rw-r--r--include/ruby/internal/has/extension.h33
-rw-r--r--include/ruby/internal/has/feature.h31
-rw-r--r--include/ruby/internal/has/warning.h31
-rw-r--r--include/ruby/internal/intern/array.h657
-rw-r--r--include/ruby/internal/intern/bignum.h846
-rw-r--r--include/ruby/internal/intern/class.h394
-rw-r--r--include/ruby/internal/intern/compar.h62
-rw-r--r--include/ruby/internal/intern/complex.h253
-rw-r--r--include/ruby/internal/intern/cont.h282
-rw-r--r--include/ruby/internal/intern/dir.h42
-rw-r--r--include/ruby/internal/intern/enum.h73
-rw-r--r--include/ruby/internal/intern/enumerator.h259
-rw-r--r--include/ruby/internal/intern/error.h287
-rw-r--r--include/ruby/internal/intern/eval.h222
-rw-r--r--include/ruby/internal/intern/file.h213
-rw-r--r--include/ruby/internal/intern/gc.h392
-rw-r--r--include/ruby/internal/intern/hash.h320
-rw-r--r--include/ruby/internal/intern/io.h661
-rw-r--r--include/ruby/internal/intern/load.h218
-rw-r--r--include/ruby/internal/intern/marshal.h112
-rw-r--r--include/ruby/internal/intern/numeric.h208
-rw-r--r--include/ruby/internal/intern/object.h501
-rw-r--r--include/ruby/internal/intern/parse.h194
-rw-r--r--include/ruby/internal/intern/proc.h353
-rw-r--r--include/ruby/internal/intern/process.h273
-rw-r--r--include/ruby/internal/intern/random.h116
-rw-r--r--include/ruby/internal/intern/range.h89
-rw-r--r--include/ruby/internal/intern/rational.h172
-rw-r--r--include/ruby/internal/intern/re.h249
-rw-r--r--include/ruby/internal/intern/ruby.h77
-rw-r--r--include/ruby/internal/intern/select.h86
-rw-r--r--include/ruby/internal/intern/select/largesize.h214
-rw-r--r--include/ruby/internal/intern/select/posix.h144
-rw-r--r--include/ruby/internal/intern/select/win32.h259
-rw-r--r--include/ruby/internal/intern/signal.h152
-rw-r--r--include/ruby/internal/intern/sprintf.h159
-rw-r--r--include/ruby/internal/intern/string.h1757
-rw-r--r--include/ruby/internal/intern/struct.h203
-rw-r--r--include/ruby/internal/intern/thread.h492
-rw-r--r--include/ruby/internal/intern/time.h161
-rw-r--r--include/ruby/internal/intern/variable.h628
-rw-r--r--include/ruby/internal/intern/vm.h431
-rw-r--r--include/ruby/internal/interpreter.h304
-rw-r--r--include/ruby/internal/iterator.h513
-rw-r--r--include/ruby/internal/memory.h666
-rw-r--r--include/ruby/internal/method.h205
-rw-r--r--include/ruby/internal/module.h177
-rw-r--r--include/ruby/internal/newobj.h195
-rw-r--r--include/ruby/internal/rgengc.h443
-rw-r--r--include/ruby/internal/scan_args.h534
-rw-r--r--include/ruby/internal/special_consts.h362
-rw-r--r--include/ruby/internal/static_assert.h77
-rw-r--r--include/ruby/internal/stdalign.h135
-rw-r--r--include/ruby/internal/stdbool.h51
-rw-r--r--include/ruby/internal/symbol.h332
-rw-r--r--include/ruby/internal/value.h133
-rw-r--r--include/ruby/internal/value_type.h449
-rw-r--r--include/ruby/internal/variable.h337
-rw-r--r--include/ruby/internal/warning_push.h124
-rw-r--r--include/ruby/internal/xmalloc.h392
-rw-r--r--include/ruby/io.h1022
-rw-r--r--include/ruby/io/buffer.h92
-rw-r--r--include/ruby/memory_view.h325
-rw-r--r--include/ruby/missing.h342
-rw-r--r--include/ruby/onigmo.h952
-rw-r--r--include/ruby/oniguruma.h8
-rw-r--r--include/ruby/ractor.h264
-rw-r--r--include/ruby/random.h359
-rw-r--r--include/ruby/re.h147
-rw-r--r--include/ruby/regex.h43
-rw-r--r--include/ruby/ruby.h312
-rw-r--r--include/ruby/st.h199
-rw-r--r--include/ruby/subst.h26
-rw-r--r--include/ruby/thread.h235
-rw-r--r--include/ruby/thread_native.h205
-rw-r--r--include/ruby/util.h228
-rw-r--r--include/ruby/version.h159
-rw-r--r--include/ruby/vm.h54
-rw-r--r--include/ruby/win32.h834
-rw-r--r--inits.c162
-rw-r--r--insns.def1547
-rw-r--r--instruby.rb101
-rw-r--r--intern.h379
-rw-r--r--internal.h113
-rw-r--r--internal/array.h163
-rw-r--r--internal/basic_operators.h64
-rw-r--r--internal/bignum.h246
-rw-r--r--internal/bits.h565
-rw-r--r--internal/class.h187
-rw-r--r--internal/cmdlineopt.h61
-rw-r--r--internal/compar.h29
-rw-r--r--internal/compile.h35
-rw-r--r--internal/compilers.h107
-rw-r--r--internal/complex.h29
-rw-r--r--internal/cont.h32
-rw-r--r--internal/dir.h16
-rw-r--r--internal/enc.h19
-rw-r--r--internal/encoding.h32
-rw-r--r--internal/enum.h18
-rw-r--r--internal/enumerator.h21
-rw-r--r--internal/error.h191
-rw-r--r--internal/eval.h33
-rw-r--r--internal/file.h38
-rw-r--r--internal/fixnum.h184
-rw-r--r--internal/gc.h192
-rw-r--r--internal/hash.h244
-rw-r--r--internal/imemo.h242
-rw-r--r--internal/inits.h50
-rw-r--r--internal/io.h38
-rw-r--r--internal/load.h18
-rw-r--r--internal/loadpath.h16
-rw-r--r--internal/math.h23
-rw-r--r--internal/missing.h18
-rw-r--r--internal/numeric.h275
-rw-r--r--internal/object.h61
-rw-r--r--internal/parse.h25
-rw-r--r--internal/proc.h32
-rw-r--r--internal/process.h137
-rw-r--r--internal/ractor.h6
-rw-r--r--internal/random.h16
-rw-r--r--internal/range.h40
-rw-r--r--internal/rational.h72
-rw-r--r--internal/re.h30
-rw-r--r--internal/sanitizers.h190
-rw-r--r--internal/serial.h23
-rw-r--r--internal/signal.h21
-rw-r--r--internal/static_assert.h16
-rw-r--r--internal/string.h147
-rw-r--r--internal/struct.h153
-rw-r--r--internal/symbol.h42
-rw-r--r--internal/thread.h56
-rw-r--r--internal/time.h37
-rw-r--r--internal/transcode.h20
-rw-r--r--internal/util.h27
-rw-r--r--internal/variable.h90
-rw-r--r--internal/vm.h134
-rw-r--r--internal/warnings.h16
-rw-r--r--io.c16551
-rw-r--r--io.rb123
-rw-r--r--io_buffer.c3515
-rw-r--r--iseq.c3999
-rw-r--r--iseq.h330
-rw-r--r--kernel.rb178
-rw-r--r--keywords42
-rw-r--r--lex.c132
-rw-r--r--lex.c.blt303
-rw-r--r--lib/English.gemspec22
-rw-r--r--lib/English.rb160
-rw-r--r--lib/Env.rb30
-rw-r--r--lib/README48
-rw-r--r--lib/abbrev.gemspec22
-rw-r--r--lib/abbrev.rb132
-rw-r--r--lib/base64.gemspec20
-rw-r--r--lib/base64.rb129
-rw-r--r--lib/benchmark.rb582
-rw-r--r--lib/benchmark/benchmark.gemspec29
-rw-r--r--lib/benchmark/version.rb4
-rw-r--r--lib/bundler.rb662
-rw-r--r--lib/bundler/.document1
-rw-r--r--lib/bundler/build_metadata.rb43
-rw-r--r--lib/bundler/bundler.gemspec43
-rw-r--r--lib/bundler/capistrano.rb22
-rw-r--r--lib/bundler/cli.rb894
-rw-r--r--lib/bundler/cli/add.rb47
-rw-r--r--lib/bundler/cli/binstubs.rb57
-rw-r--r--lib/bundler/cli/cache.rb43
-rw-r--r--lib/bundler/cli/check.rb40
-rw-r--r--lib/bundler/cli/clean.rb25
-rw-r--r--lib/bundler/cli/common.rb130
-rw-r--r--lib/bundler/cli/config.rb203
-rw-r--r--lib/bundler/cli/console.rb43
-rw-r--r--lib/bundler/cli/doctor.rb157
-rw-r--r--lib/bundler/cli/exec.rb88
-rw-r--r--lib/bundler/cli/fund.rb36
-rw-r--r--lib/bundler/cli/gem.rb465
-rw-r--r--lib/bundler/cli/info.rb94
-rw-r--r--lib/bundler/cli/init.rb51
-rw-r--r--lib/bundler/cli/inject.rb60
-rw-r--r--lib/bundler/cli/install.rb189
-rw-r--r--lib/bundler/cli/issue.rb41
-rw-r--r--lib/bundler/cli/list.rb66
-rw-r--r--lib/bundler/cli/lock.rb70
-rw-r--r--lib/bundler/cli/open.rb31
-rw-r--r--lib/bundler/cli/outdated.rb297
-rw-r--r--lib/bundler/cli/platform.rb48
-rw-r--r--lib/bundler/cli/plugin.rb41
-rw-r--r--lib/bundler/cli/pristine.rb52
-rw-r--r--lib/bundler/cli/remove.rb17
-rw-r--r--lib/bundler/cli/show.rb75
-rw-r--r--lib/bundler/cli/update.rb122
-rw-r--r--lib/bundler/cli/viz.rb31
-rw-r--r--lib/bundler/compact_index_client.rb119
-rw-r--r--lib/bundler/compact_index_client/cache.rb101
-rw-r--r--lib/bundler/compact_index_client/gem_parser.rb28
-rw-r--r--lib/bundler/compact_index_client/updater.rb117
-rw-r--r--lib/bundler/constants.rb7
-rw-r--r--lib/bundler/current_ruby.rb108
-rw-r--r--lib/bundler/definition.rb961
-rw-r--r--lib/bundler/dependency.rb97
-rw-r--r--lib/bundler/deployment.rb69
-rw-r--r--lib/bundler/deprecate.rb44
-rw-r--r--lib/bundler/digest.rb71
-rw-r--r--lib/bundler/dsl.rb583
-rw-r--r--lib/bundler/endpoint_specification.rb143
-rw-r--r--lib/bundler/env.rb150
-rw-r--r--lib/bundler/environment_preserver.rb86
-rw-r--r--lib/bundler/errors.rb175
-rw-r--r--lib/bundler/feature_flag.rb53
-rw-r--r--lib/bundler/fetcher.rb320
-rw-r--r--lib/bundler/fetcher/base.rb50
-rw-r--r--lib/bundler/fetcher/compact_index.rb133
-rw-r--r--lib/bundler/fetcher/dependency.rb78
-rw-r--r--lib/bundler/fetcher/downloader.rb89
-rw-r--r--lib/bundler/fetcher/index.rb25
-rw-r--r--lib/bundler/force_platform.rb18
-rw-r--r--lib/bundler/friendly_errors.rb126
-rw-r--r--lib/bundler/gem_helper.rb237
-rw-r--r--lib/bundler/gem_helpers.rb117
-rw-r--r--lib/bundler/gem_tasks.rb7
-rw-r--r--lib/bundler/gem_version_promoter.rb145
-rw-r--r--lib/bundler/graph.rb152
-rw-r--r--lib/bundler/index.rb175
-rw-r--r--lib/bundler/injector.rb287
-rw-r--r--lib/bundler/inline.rb73
-rw-r--r--lib/bundler/installer.rb267
-rw-r--r--lib/bundler/installer/gem_installer.rb84
-rw-r--r--lib/bundler/installer/parallel_installer.rb220
-rw-r--r--lib/bundler/installer/standalone.rb103
-rw-r--r--lib/bundler/lazy_specification.rb159
-rw-r--r--lib/bundler/lockfile_generator.rb95
-rw-r--r--lib/bundler/lockfile_parser.rb225
-rw-r--r--lib/bundler/man/.document1
-rw-r--r--lib/bundler/man/bundle-add.182
-rw-r--r--lib/bundler/man/bundle-add.1.ronn58
-rw-r--r--lib/bundler/man/bundle-binstubs.142
-rw-r--r--lib/bundler/man/bundle-binstubs.1.ronn41
-rw-r--r--lib/bundler/man/bundle-cache.161
-rw-r--r--lib/bundler/man/bundle-cache.1.ronn79
-rw-r--r--lib/bundler/man/bundle-check.131
-rw-r--r--lib/bundler/man/bundle-check.1.ronn26
-rw-r--r--lib/bundler/man/bundle-clean.124
-rw-r--r--lib/bundler/man/bundle-clean.1.ronn18
-rw-r--r--lib/bundler/man/bundle-config.1512
-rw-r--r--lib/bundler/man/bundle-config.1.ronn405
-rw-r--r--lib/bundler/man/bundle-console.153
-rw-r--r--lib/bundler/man/bundle-console.1.ronn44
-rw-r--r--lib/bundler/man/bundle-doctor.144
-rw-r--r--lib/bundler/man/bundle-doctor.1.ronn33
-rw-r--r--lib/bundler/man/bundle-exec.1165
-rw-r--r--lib/bundler/man/bundle-exec.1.ronn152
-rw-r--r--lib/bundler/man/bundle-gem.1105
-rw-r--r--lib/bundler/man/bundle-gem.1.ronn117
-rw-r--r--lib/bundler/man/bundle-help.113
-rw-r--r--lib/bundler/man/bundle-help.1.ronn12
-rw-r--r--lib/bundler/man/bundle-info.120
-rw-r--r--lib/bundler/man/bundle-info.1.ronn17
-rw-r--r--lib/bundler/man/bundle-init.129
-rw-r--r--lib/bundler/man/bundle-init.1.ronn31
-rw-r--r--lib/bundler/man/bundle-inject.136
-rw-r--r--lib/bundler/man/bundle-inject.1.ronn24
-rw-r--r--lib/bundler/man/bundle-install.1313
-rw-r--r--lib/bundler/man/bundle-install.1.ronn382
-rw-r--r--lib/bundler/man/bundle-list.150
-rw-r--r--lib/bundler/man/bundle-list.1.ronn33
-rw-r--r--lib/bundler/man/bundle-lock.184
-rw-r--r--lib/bundler/man/bundle-lock.1.ronn94
-rw-r--r--lib/bundler/man/bundle-open.152
-rw-r--r--lib/bundler/man/bundle-open.1.ronn27
-rw-r--r--lib/bundler/man/bundle-outdated.1152
-rw-r--r--lib/bundler/man/bundle-outdated.1.ronn105
-rw-r--r--lib/bundler/man/bundle-platform.171
-rw-r--r--lib/bundler/man/bundle-platform.1.ronn49
-rw-r--r--lib/bundler/man/bundle-plugin.181
-rw-r--r--lib/bundler/man/bundle-plugin.1.ronn59
-rw-r--r--lib/bundler/man/bundle-pristine.134
-rw-r--r--lib/bundler/man/bundle-pristine.1.ronn34
-rw-r--r--lib/bundler/man/bundle-remove.131
-rw-r--r--lib/bundler/man/bundle-remove.1.ronn23
-rw-r--r--lib/bundler/man/bundle-show.123
-rw-r--r--lib/bundler/man/bundle-show.1.ronn21
-rw-r--r--lib/bundler/man/bundle-update.1394
-rw-r--r--lib/bundler/man/bundle-update.1.ronn351
-rw-r--r--lib/bundler/man/bundle-version.135
-rw-r--r--lib/bundler/man/bundle-version.1.ronn24
-rw-r--r--lib/bundler/man/bundle-viz.142
-rw-r--r--lib/bundler/man/bundle-viz.1.ronn32
-rw-r--r--lib/bundler/man/bundle.1141
-rw-r--r--lib/bundler/man/bundle.1.ronn116
-rw-r--r--lib/bundler/man/gemfile.5736
-rw-r--r--lib/bundler/man/gemfile.5.ronn543
-rw-r--r--lib/bundler/man/index.txt29
-rw-r--r--lib/bundler/match_metadata.rb13
-rw-r--r--lib/bundler/match_platform.rb23
-rw-r--r--lib/bundler/match_remote_metadata.rb29
-rw-r--r--lib/bundler/mirror.rb221
-rw-r--r--lib/bundler/plugin.rb352
-rw-r--r--lib/bundler/plugin/api.rb81
-rw-r--r--lib/bundler/plugin/api/source.rb320
-rw-r--r--lib/bundler/plugin/dsl.rb53
-rw-r--r--lib/bundler/plugin/events.rb61
-rw-r--r--lib/bundler/plugin/index.rb185
-rw-r--r--lib/bundler/plugin/installer.rb112
-rw-r--r--lib/bundler/plugin/installer/git.rb34
-rw-r--r--lib/bundler/plugin/installer/rubygems.rb19
-rw-r--r--lib/bundler/plugin/source_list.rb31
-rw-r--r--lib/bundler/process_lock.rb24
-rw-r--r--lib/bundler/remote_specification.rb117
-rw-r--r--lib/bundler/resolver.rb427
-rw-r--r--lib/bundler/resolver/base.rb107
-rw-r--r--lib/bundler/resolver/candidate.rb94
-rw-r--r--lib/bundler/resolver/incompatibility.rb15
-rw-r--r--lib/bundler/resolver/package.rb72
-rw-r--r--lib/bundler/resolver/root.rb25
-rw-r--r--lib/bundler/resolver/spec_group.rb82
-rw-r--r--lib/bundler/retry.rb66
-rw-r--r--lib/bundler/ruby_dsl.rb24
-rw-r--r--lib/bundler/ruby_version.rb124
-rw-r--r--lib/bundler/rubygems_ext.rb355
-rw-r--r--lib/bundler/rubygems_gem_installer.rb172
-rw-r--r--lib/bundler/rubygems_integration.rb562
-rw-r--r--lib/bundler/runtime.rb307
-rw-r--r--lib/bundler/safe_marshal.rb31
-rw-r--r--lib/bundler/self_manager.rb168
-rw-r--r--lib/bundler/settings.rb507
-rw-r--r--lib/bundler/settings/validator.rb102
-rw-r--r--lib/bundler/setup.rb30
-rw-r--r--lib/bundler/shared_helpers.rb343
-rw-r--r--lib/bundler/similarity_detector.rb63
-rw-r--r--lib/bundler/source.rb114
-rw-r--r--lib/bundler/source/gemspec.rb18
-rw-r--r--lib/bundler/source/git.rb379
-rw-r--r--lib/bundler/source/git/git_proxy.rb431
-rw-r--r--lib/bundler/source/metadata.rb62
-rw-r--r--lib/bundler/source/path.rb260
-rw-r--r--lib/bundler/source/path/installer.rb53
-rw-r--r--lib/bundler/source/rubygems.rb512
-rw-r--r--lib/bundler/source/rubygems/remote.rb68
-rw-r--r--lib/bundler/source/rubygems_aggregate.rb68
-rw-r--r--lib/bundler/source_list.rb227
-rw-r--r--lib/bundler/source_map.rb71
-rw-r--r--lib/bundler/spec_set.rb216
-rw-r--r--lib/bundler/stub_specification.rb116
-rw-r--r--lib/bundler/templates/.document1
-rw-r--r--lib/bundler/templates/Executable27
-rw-r--r--lib/bundler/templates/Executable.bundler109
-rw-r--r--lib/bundler/templates/Executable.standalone14
-rw-r--r--lib/bundler/templates/Gemfile5
-rw-r--r--lib/bundler/templates/newgem/CHANGELOG.md.tt5
-rw-r--r--lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt84
-rw-r--r--lib/bundler/templates/newgem/Cargo.toml.tt7
-rw-r--r--lib/bundler/templates/newgem/Gemfile.tt26
-rw-r--r--lib/bundler/templates/newgem/LICENSE.txt.tt21
-rw-r--r--lib/bundler/templates/newgem/README.md.tt45
-rw-r--r--lib/bundler/templates/newgem/Rakefile.tt67
-rw-r--r--lib/bundler/templates/newgem/bin/console.tt11
-rw-r--r--lib/bundler/templates/newgem/bin/setup.tt8
-rw-r--r--lib/bundler/templates/newgem/circleci/config.yml.tt25
-rw-r--r--lib/bundler/templates/newgem/exe/newgem.tt3
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt15
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt10
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt6
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/newgem.c.tt9
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/newgem.h.tt6
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt12
-rw-r--r--lib/bundler/templates/newgem/github/workflows/main.yml.tt37
-rw-r--r--lib/bundler/templates/newgem/gitignore.tt23
-rw-r--r--lib/bundler/templates/newgem/gitlab-ci.yml.tt18
-rw-r--r--lib/bundler/templates/newgem/lib/newgem.rb.tt15
-rw-r--r--lib/bundler/templates/newgem/lib/newgem/version.rb.tt9
-rw-r--r--lib/bundler/templates/newgem/newgem.gemspec.tt51
-rw-r--r--lib/bundler/templates/newgem/rspec.tt3
-rw-r--r--lib/bundler/templates/newgem/rubocop.yml.tt13
-rw-r--r--lib/bundler/templates/newgem/sig/newgem.rbs.tt8
-rw-r--r--lib/bundler/templates/newgem/spec/newgem_spec.rb.tt11
-rw-r--r--lib/bundler/templates/newgem/spec/spec_helper.rb.tt15
-rw-r--r--lib/bundler/templates/newgem/standard.yml.tt3
-rw-r--r--lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt6
-rw-r--r--lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt13
-rw-r--r--lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt15
-rw-r--r--lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt6
-rw-r--r--lib/bundler/ui.rb9
-rw-r--r--lib/bundler/ui/rg_proxy.rb19
-rw-r--r--lib/bundler/ui/shell.rb165
-rw-r--r--lib/bundler/ui/silent.rb85
-rw-r--r--lib/bundler/uri_credentials_filter.rb43
-rw-r--r--lib/bundler/uri_normalizer.rb23
-rw-r--r--lib/bundler/vendor/.document1
-rw-r--r--lib/bundler/vendor/connection_pool/lib/connection_pool.rb128
-rw-r--r--lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb174
-rw-r--r--lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb3
-rw-r--r--lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb56
-rw-r--r--lib/bundler/vendor/fileutils/lib/fileutils.rb2706
-rw-r--r--lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb1073
-rw-r--r--lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb40
-rw-r--r--lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb53
-rw-r--r--lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb79
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub.rb31
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb20
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb189
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb182
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb150
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb43
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb121
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb45
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb19
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb60
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb105
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb3
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb129
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb411
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb248
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb178
-rw-r--r--lib/bundler/vendor/thor/lib/thor.rb516
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions.rb340
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/create_file.rb104
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/create_link.rb61
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/directory.rb108
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb143
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb375
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb119
-rw-r--r--lib/bundler/vendor/thor/lib/thor/base.rb699
-rw-r--r--lib/bundler/vendor/thor/lib/thor/command.rb142
-rw-r--r--lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb103
-rw-r--r--lib/bundler/vendor/thor/lib/thor/error.rb115
-rw-r--r--lib/bundler/vendor/thor/lib/thor/group.rb281
-rw-r--r--lib/bundler/vendor/thor/lib/thor/invocation.rb178
-rw-r--r--lib/bundler/vendor/thor/lib/thor/line_editor.rb17
-rw-r--r--lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb37
-rw-r--r--lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb88
-rw-r--r--lib/bundler/vendor/thor/lib/thor/nested_context.rb29
-rw-r--r--lib/bundler/vendor/thor/lib/thor/parser.rb4
-rw-r--r--lib/bundler/vendor/thor/lib/thor/parser/argument.rb70
-rw-r--r--lib/bundler/vendor/thor/lib/thor/parser/arguments.rb179
-rw-r--r--lib/bundler/vendor/thor/lib/thor/parser/option.rb159
-rw-r--r--lib/bundler/vendor/thor/lib/thor/parser/options.rb255
-rw-r--r--lib/bundler/vendor/thor/lib/thor/rake_compat.rb72
-rw-r--r--lib/bundler/vendor/thor/lib/thor/runner.rb325
-rw-r--r--lib/bundler/vendor/thor/lib/thor/shell.rb81
-rw-r--r--lib/bundler/vendor/thor/lib/thor/shell/basic.rb512
-rw-r--r--lib/bundler/vendor/thor/lib/thor/shell/color.rb157
-rw-r--r--lib/bundler/vendor/thor/lib/thor/shell/html.rb126
-rw-r--r--lib/bundler/vendor/thor/lib/thor/util.rb284
-rw-r--r--lib/bundler/vendor/thor/lib/thor/version.rb3
-rw-r--r--lib/bundler/vendor/tsort/lib/tsort.rb452
-rw-r--r--lib/bundler/vendor/uri/lib/uri.rb104
-rw-r--r--lib/bundler/vendor/uri/lib/uri/common.rb729
-rw-r--r--lib/bundler/vendor/uri/lib/uri/file.rb100
-rw-r--r--lib/bundler/vendor/uri/lib/uri/ftp.rb267
-rw-r--r--lib/bundler/vendor/uri/lib/uri/generic.rb1587
-rw-r--r--lib/bundler/vendor/uri/lib/uri/http.rb125
-rw-r--r--lib/bundler/vendor/uri/lib/uri/https.rb23
-rw-r--r--lib/bundler/vendor/uri/lib/uri/ldap.rb261
-rw-r--r--lib/bundler/vendor/uri/lib/uri/ldaps.rb22
-rw-r--r--lib/bundler/vendor/uri/lib/uri/mailto.rb293
-rw-r--r--lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb539
-rw-r--r--lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb119
-rw-r--r--lib/bundler/vendor/uri/lib/uri/version.rb6
-rw-r--r--lib/bundler/vendor/uri/lib/uri/ws.rb83
-rw-r--r--lib/bundler/vendor/uri/lib/uri/wss.rb23
-rw-r--r--lib/bundler/vendored_fileutils.rb4
-rw-r--r--lib/bundler/vendored_persistent.rb15
-rw-r--r--lib/bundler/vendored_pub_grub.rb4
-rw-r--r--lib/bundler/vendored_thor.rb8
-rw-r--r--lib/bundler/vendored_tsort.rb4
-rw-r--r--lib/bundler/vendored_uri.rb4
-rw-r--r--lib/bundler/version.rb13
-rw-r--r--lib/bundler/vlad.rb17
-rw-r--r--lib/bundler/worker.rb117
-rw-r--r--lib/bundler/yaml_serializer.rb89
-rw-r--r--lib/cgi-lib.rb270
-rw-r--r--lib/cgi.rb2346
-rw-r--r--lib/cgi/cgi.gemspec42
-rw-r--r--lib/cgi/cookie.rb210
-rw-r--r--lib/cgi/core.rb900
-rw-r--r--lib/cgi/html.rb1035
-rw-r--r--lib/cgi/session.rb584
-rw-r--r--lib/cgi/session/pstore.rb88
-rw-r--r--lib/cgi/util.rb252
-rw-r--r--lib/complex.rb502
-rw-r--r--lib/csv.rb2881
-rw-r--r--lib/csv/core_ext/array.rb9
-rw-r--r--lib/csv/core_ext/string.rb9
-rw-r--r--lib/csv/csv.gemspec64
-rw-r--r--lib/csv/delete_suffix.rb18
-rw-r--r--lib/csv/fields_converter.rb89
-rw-r--r--lib/csv/input_record_separator.rb18
-rw-r--r--lib/csv/match_p.rb20
-rw-r--r--lib/csv/parser.rb1289
-rw-r--r--lib/csv/row.rb757
-rw-r--r--lib/csv/table.rb1055
-rw-r--r--lib/csv/version.rb6
-rw-r--r--lib/csv/writer.rb210
-rw-r--r--lib/date.rb346
-rw-r--r--lib/date2.rb5
-rw-r--r--lib/debug.rb789
-rw-r--r--lib/delegate.rb500
-rw-r--r--lib/delegate/delegate.gemspec29
-rw-r--r--lib/did_you_mean.rb155
-rw-r--r--lib/did_you_mean/core_ext/name_error.rb57
-rw-r--r--lib/did_you_mean/did_you_mean.gemspec27
-rw-r--r--lib/did_you_mean/experimental.rb2
-rw-r--r--lib/did_you_mean/formatter.rb44
-rw-r--r--lib/did_you_mean/formatters/plain_formatter.rb4
-rw-r--r--lib/did_you_mean/formatters/verbose_formatter.rb10
-rw-r--r--lib/did_you_mean/jaro_winkler.rb87
-rw-r--r--lib/did_you_mean/levenshtein.rb57
-rw-r--r--lib/did_you_mean/spell_checker.rb46
-rw-r--r--lib/did_you_mean/spell_checkers/key_error_checker.rb20
-rw-r--r--lib/did_you_mean/spell_checkers/method_name_checker.rb79
-rw-r--r--lib/did_you_mean/spell_checkers/name_error_checkers.rb20
-rw-r--r--lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb49
-rw-r--r--lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb85
-rw-r--r--lib/did_you_mean/spell_checkers/null_checker.rb6
-rw-r--r--lib/did_you_mean/spell_checkers/pattern_key_name_checker.rb20
-rw-r--r--lib/did_you_mean/spell_checkers/require_path_checker.rb39
-rw-r--r--lib/did_you_mean/tree_spell_checker.rb109
-rw-r--r--lib/did_you_mean/verbose.rb2
-rw-r--r--lib/did_you_mean/version.rb3
-rw-r--r--lib/drb.rb3
-rw-r--r--lib/drb/acl.rb239
-rw-r--r--lib/drb/drb.gemspec43
-rw-r--r--lib/drb/drb.rb1942
-rw-r--r--lib/drb/eq.rb15
-rw-r--r--lib/drb/extserv.rb44
-rw-r--r--lib/drb/extservm.rb94
-rw-r--r--lib/drb/gw.rb161
-rw-r--r--lib/drb/invokemethod.rb35
-rw-r--r--lib/drb/observer.rb26
-rw-r--r--lib/drb/ssl.rb344
-rw-r--r--lib/drb/timeridconv.rb97
-rw-r--r--lib/drb/unix.rb118
-rw-r--r--lib/drb/version.rb3
-rw-r--r--lib/drb/weakidconv.rb59
-rw-r--r--lib/e2mmap.rb196
-rw-r--r--lib/erb.gemspec38
-rw-r--r--lib/erb.rb506
-rw-r--r--lib/erb/compiler.rb471
-rw-r--r--lib/erb/def_method.rb46
-rw-r--r--lib/erb/util.rb62
-rw-r--r--lib/erb/version.rb5
-rw-r--r--lib/eregex.rb37
-rw-r--r--lib/error_highlight.rb2
-rw-r--r--lib/error_highlight/base.rb514
-rw-r--r--lib/error_highlight/core_ext.rb47
-rw-r--r--lib/error_highlight/error_highlight.gemspec27
-rw-r--r--lib/error_highlight/formatter.rb23
-rw-r--r--lib/error_highlight/version.rb3
-rw-r--r--lib/fileutils.gemspec31
-rw-r--r--lib/fileutils.rb2706
-rw-r--r--lib/final.rb4
-rw-r--r--lib/finalize.rb201
-rw-r--r--lib/find.gemspec24
-rw-r--r--lib/find.rb106
-rw-r--r--lib/forwardable.rb321
-rw-r--r--lib/forwardable/forwardable.gemspec26
-rw-r--r--lib/forwardable/impl.rb17
-rw-r--r--lib/ftools.rb185
-rw-r--r--lib/ftplib.rb14
-rw-r--r--lib/getoptlong.rb739
-rw-r--r--lib/getoptlong/getoptlong.gemspec30
-rw-r--r--lib/getopts.rb127
-rw-r--r--lib/importenv.rb32
-rw-r--r--lib/ipaddr.gemspec36
-rw-r--r--lib/ipaddr.rb783
-rw-r--r--lib/irb.rb989
-rw-r--r--lib/irb/.document1
-rw-r--r--lib/irb/cmd/backtrace.rb21
-rw-r--r--lib/irb/cmd/break.rb21
-rw-r--r--lib/irb/cmd/catch.rb21
-rw-r--r--lib/irb/cmd/chws.rb42
-rw-r--r--lib/irb/cmd/continue.rb17
-rw-r--r--lib/irb/cmd/debug.rb136
-rw-r--r--lib/irb/cmd/delete.rb17
-rw-r--r--lib/irb/cmd/edit.rb61
-rw-r--r--lib/irb/cmd/finish.rb17
-rw-r--r--lib/irb/cmd/fork.rb40
-rw-r--r--lib/irb/cmd/help.rb63
-rw-r--r--lib/irb/cmd/info.rb21
-rw-r--r--lib/irb/cmd/irb_info.rb37
-rw-r--r--lib/irb/cmd/load.rb82
-rw-r--r--lib/irb/cmd/ls.rb116
-rw-r--r--lib/irb/cmd/measure.rb48
-rw-r--r--lib/irb/cmd/next.rb17
-rw-r--r--lib/irb/cmd/nop.rb71
-rw-r--r--lib/irb/cmd/pushws.rb51
-rw-r--r--lib/irb/cmd/show_cmds.rb39
-rw-r--r--lib/irb/cmd/show_source.rb112
-rw-r--r--lib/irb/cmd/step.rb17
-rw-r--r--lib/irb/cmd/subirb.rb71
-rw-r--r--lib/irb/cmd/whereami.rb25
-rw-r--r--lib/irb/color.rb266
-rw-r--r--lib/irb/color_printer.rb50
-rw-r--r--lib/irb/completion.rb512
-rw-r--r--lib/irb/context.rb560
-rw-r--r--lib/irb/easter-egg.rb138
-rw-r--r--lib/irb/ext/change-ws.rb45
-rw-r--r--lib/irb/ext/history.rb155
-rw-r--r--lib/irb/ext/loader.rb155
-rw-r--r--lib/irb/ext/multi-irb.rb264
-rw-r--r--lib/irb/ext/save-history.rb130
-rw-r--r--lib/irb/ext/tracer.rb84
-rw-r--r--lib/irb/ext/use-loader.rb75
-rw-r--r--lib/irb/ext/workspaces.rb66
-rw-r--r--lib/irb/extend-command.rb433
-rw-r--r--lib/irb/frame.rb47
-rw-r--r--lib/irb/help.rb36
-rw-r--r--lib/irb/init.rb450
-rw-r--r--lib/irb/input-method.rb457
-rw-r--r--lib/irb/inspector.rb128
-rw-r--r--lib/irb/irb.gemspec40
-rw-r--r--lib/irb/lc/error.rb68
-rw-r--r--lib/irb/lc/help-message51
-rw-r--r--lib/irb/lc/ja/encoding_aliases.rb13
-rw-r--r--lib/irb/lc/ja/error.rb69
-rw-r--r--lib/irb/lc/ja/help-message45
-rw-r--r--lib/irb/loader.rb118
-rw-r--r--lib/irb/locale.rb191
-rw-r--r--lib/irb/magic-file.rb38
-rw-r--r--lib/irb/main.rb867
-rw-r--r--lib/irb/multi-irb.rb212
-rw-r--r--lib/irb/notifier.rb236
-rw-r--r--lib/irb/output-method.rb92
-rw-r--r--lib/irb/ruby-lex.rb1616
-rw-r--r--lib/irb/ruby-token.rb266
-rw-r--r--lib/irb/ruby_logo.aa37
-rw-r--r--lib/irb/slex.rb279
-rw-r--r--lib/irb/src_encoding.rb7
-rw-r--r--lib/irb/version.rb17
-rw-r--r--lib/irb/workspace-binding-2.rb15
-rw-r--r--lib/irb/workspace-binding.rb77
-rw-r--r--lib/irb/workspace.rb180
-rw-r--r--lib/irb/ws-for-case-2.rb15
-rw-r--r--lib/irb/xmp.rb130
-rw-r--r--lib/jcode.rb209
-rw-r--r--lib/logger.rb745
-rw-r--r--lib/logger/errors.rb9
-rw-r--r--lib/logger/formatter.rb36
-rw-r--r--lib/logger/log_device.rb207
-rw-r--r--lib/logger/logger.gemspec26
-rw-r--r--lib/logger/period.rb47
-rw-r--r--lib/logger/severity.rb19
-rw-r--r--lib/logger/version.rb5
-rw-r--r--lib/mailread.rb48
-rw-r--r--lib/mathn.rb309
-rw-r--r--lib/matrix.rb1024
-rw-r--r--lib/mkmf.rb3149
-rw-r--r--lib/monitor.rb229
-rw-r--r--lib/mutex_m.gemspec27
-rw-r--r--lib/mutex_m.rb175
-rw-r--r--lib/net/ftp.rb671
-rw-r--r--lib/net/http.rb3010
-rw-r--r--lib/net/http/backward.rb40
-rw-r--r--lib/net/http/exceptions.rb34
-rw-r--r--lib/net/http/generic_request.rb414
-rw-r--r--lib/net/http/header.rb981
-rw-r--r--lib/net/http/net-http.gemspec39
-rw-r--r--lib/net/http/proxy_delta.rb17
-rw-r--r--lib/net/http/request.rb88
-rw-r--r--lib/net/http/requests.rb425
-rw-r--r--lib/net/http/response.rb738
-rw-r--r--lib/net/http/responses.rb1174
-rw-r--r--lib/net/http/status.rb84
-rw-r--r--lib/net/https.rb23
-rw-r--r--lib/net/net-protocol.gemspec33
-rw-r--r--lib/net/pop.rb345
-rw-r--r--lib/net/protocol.rb1021
-rw-r--r--lib/net/smtp.rb302
-rw-r--r--lib/net/telnet.rb771
-rw-r--r--lib/observer.rb205
-rw-r--r--lib/observer/observer.gemspec32
-rw-r--r--lib/open-uri.gemspec25
-rw-r--r--lib/open-uri.rb830
-rw-r--r--lib/open3.rb786
-rw-r--r--lib/open3/open3.gemspec33
-rw-r--r--lib/open3/version.rb3
-rw-r--r--lib/optionparser.rb2
-rw-r--r--lib/optparse.rb2324
-rw-r--r--lib/optparse/ac.rb54
-rw-r--r--lib/optparse/date.rb18
-rw-r--r--lib/optparse/kwargs.rb22
-rw-r--r--lib/optparse/optparse.gemspec30
-rw-r--r--lib/optparse/shellwords.rb7
-rw-r--r--lib/optparse/time.rb11
-rw-r--r--lib/optparse/uri.rb7
-rw-r--r--lib/optparse/version.rb71
-rw-r--r--lib/ostruct.rb490
-rw-r--r--lib/ostruct/ostruct.gemspec27
-rw-r--r--lib/parsearg.rb83
-rw-r--r--lib/parsedate.rb176
-rw-r--r--lib/ping.rb62
-rw-r--r--lib/pp.gemspec27
-rw-r--r--lib/pp.rb651
-rw-r--r--lib/prettyprint.gemspec22
-rw-r--r--lib/prettyprint.rb556
-rw-r--r--lib/profile.rb55
-rw-r--r--lib/pstore.rb756
-rw-r--r--lib/pstore/pstore.gemspec32
-rw-r--r--lib/racc.rb6
-rw-r--r--lib/racc/compat.rb33
-rw-r--r--lib/racc/debugflags.rb60
-rw-r--r--lib/racc/exception.rb16
-rw-r--r--lib/racc/grammar.rb1118
-rw-r--r--lib/racc/grammarfileparser.rb561
-rw-r--r--lib/racc/info.rb17
-rw-r--r--lib/racc/iset.rb92
-rw-r--r--lib/racc/logfilegenerator.rb212
-rw-r--r--lib/racc/parser-text.rb637
-rw-r--r--lib/racc/parser.rb632
-rw-r--r--lib/racc/parserfilegenerator.rb468
-rw-r--r--lib/racc/racc.gemspec58
-rw-r--r--lib/racc/sourcetext.rb35
-rw-r--r--lib/racc/state.rb972
-rw-r--r--lib/racc/statetransitiontable.rb311
-rw-r--r--lib/racc/static.rb5
-rw-r--r--lib/random/formatter.rb245
-rw-r--r--lib/rational.rb390
-rw-r--r--lib/rdoc.rb201
-rw-r--r--lib/rdoc/.document2
-rw-r--r--lib/rdoc/alias.rb112
-rw-r--r--lib/rdoc/anon_class.rb11
-rw-r--r--lib/rdoc/any_method.rb364
-rw-r--r--lib/rdoc/attr.rb176
-rw-r--r--lib/rdoc/class_module.rb802
-rw-r--r--lib/rdoc/code_object.rb421
-rw-r--r--lib/rdoc/code_objects.rb5
-rw-r--r--lib/rdoc/comment.rb250
-rw-r--r--lib/rdoc/constant.rb187
-rw-r--r--lib/rdoc/context.rb1264
-rw-r--r--lib/rdoc/context/section.rb234
-rw-r--r--lib/rdoc/cross_reference.rb226
-rw-r--r--lib/rdoc/encoding.rb136
-rw-r--r--lib/rdoc/erb_partial.rb19
-rw-r--r--lib/rdoc/erbio.rb42
-rw-r--r--lib/rdoc/extend.rb10
-rw-r--r--lib/rdoc/generator.rb51
-rw-r--r--lib/rdoc/generator/darkfish.rb790
-rw-r--r--lib/rdoc/generator/json_index.rb300
-rw-r--r--lib/rdoc/generator/markup.rb160
-rw-r--r--lib/rdoc/generator/pot.rb98
-rw-r--r--lib/rdoc/generator/pot/message_extractor.rb68
-rw-r--r--lib/rdoc/generator/pot/po.rb84
-rw-r--r--lib/rdoc/generator/pot/po_entry.rb141
-rw-r--r--lib/rdoc/generator/ri.rb31
-rw-r--r--lib/rdoc/generator/template/darkfish/.document0
-rw-r--r--lib/rdoc/generator/template/darkfish/_footer.rhtml5
-rw-r--r--lib/rdoc/generator/template/darkfish/_head.rhtml20
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml19
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml33
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml15
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml9
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml15
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml15
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml12
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml11
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml32
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml11
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml14
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml11
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml39
-rw-r--r--lib/rdoc/generator/template/darkfish/class.rhtml174
-rw-r--r--lib/rdoc/generator/template/darkfish/css/fonts.css167
-rw-r--r--lib/rdoc/generator/template/darkfish/css/rdoc.css662
-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttfbin0 -> 94668 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttfbin0 -> 94196 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttfbin0 -> 96184 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttfbin0 -> 95316 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttfbin0 -> 138268 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttfbin0 -> 138680 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/add.pngbin0 -> 733 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/arrow_up.pngbin0 -> 372 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/brick.pngbin0 -> 452 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/brick_link.pngbin0 -> 764 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/bug.pngbin0 -> 774 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/bullet_black.pngbin0 -> 211 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.pngbin0 -> 207 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.pngbin0 -> 209 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/date.pngbin0 -> 626 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/delete.pngbin0 -> 715 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/find.pngbin0 -> 659 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/loadingAnimation.gifbin0 -> 5886 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/macFFBgHack.pngbin0 -> 207 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/package.pngbin0 -> 853 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/page_green.pngbin0 -> 621 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/page_white_text.pngbin0 -> 342 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/page_white_width.pngbin0 -> 309 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/plugin.pngbin0 -> 591 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/ruby.pngbin0 -> 592 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/tag_blue.pngbin0 -> 1880 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/tag_green.pngbin0 -> 613 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/transparent.pngbin0 -> 97 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/wrench.pngbin0 -> 610 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/wrench_orange.pngbin0 -> 584 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/zoom.pngbin0 -> 692 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/index.rhtml22
-rw-r--r--lib/rdoc/generator/template/darkfish/js/darkfish.js84
-rw-r--r--lib/rdoc/generator/template/darkfish/js/search.js110
-rw-r--r--lib/rdoc/generator/template/darkfish/page.rhtml18
-rw-r--r--lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml18
-rw-r--r--lib/rdoc/generator/template/darkfish/servlet_root.rhtml62
-rw-r--r--lib/rdoc/generator/template/darkfish/table_of_contents.rhtml58
-rw-r--r--lib/rdoc/generator/template/json_index/.document1
-rw-r--r--lib/rdoc/generator/template/json_index/js/navigation.js105
-rw-r--r--lib/rdoc/generator/template/json_index/js/searcher.js229
-rw-r--r--lib/rdoc/ghost_method.rb7
-rw-r--r--lib/rdoc/i18n.rb10
-rw-r--r--lib/rdoc/i18n/locale.rb102
-rw-r--r--lib/rdoc/i18n/text.rb126
-rw-r--r--lib/rdoc/include.rb10
-rw-r--r--lib/rdoc/known_classes.rb74
-rw-r--r--lib/rdoc/markdown.rb16783
-rw-r--r--lib/rdoc/markdown/entities.rb2132
-rw-r--r--lib/rdoc/markdown/literals.rb455
-rw-r--r--lib/rdoc/markup.rb235
-rw-r--r--lib/rdoc/markup/attr_changer.rb23
-rw-r--r--lib/rdoc/markup/attr_span.rb36
-rw-r--r--lib/rdoc/markup/attribute_manager.rb403
-rw-r--r--lib/rdoc/markup/attributes.rb71
-rw-r--r--lib/rdoc/markup/blank_line.rb28
-rw-r--r--lib/rdoc/markup/block_quote.rb15
-rw-r--r--lib/rdoc/markup/document.rb165
-rw-r--r--lib/rdoc/markup/formatter.rb266
-rw-r--r--lib/rdoc/markup/hard_break.rb32
-rw-r--r--lib/rdoc/markup/heading.rb79
-rw-r--r--lib/rdoc/markup/include.rb43
-rw-r--r--lib/rdoc/markup/indented_paragraph.rb48
-rw-r--r--lib/rdoc/markup/list.rb102
-rw-r--r--lib/rdoc/markup/list_item.rb100
-rw-r--r--lib/rdoc/markup/paragraph.rb29
-rw-r--r--lib/rdoc/markup/parser.rb581
-rw-r--r--lib/rdoc/markup/pre_process.rb298
-rw-r--r--lib/rdoc/markup/raw.rb70
-rw-r--r--lib/rdoc/markup/regexp_handling.rb41
-rw-r--r--lib/rdoc/markup/rule.rb21
-rw-r--r--lib/rdoc/markup/table.rb47
-rw-r--r--lib/rdoc/markup/to_ansi.rb94
-rw-r--r--lib/rdoc/markup/to_bs.rb77
-rw-r--r--lib/rdoc/markup/to_html.rb448
-rw-r--r--lib/rdoc/markup/to_html_crossref.rb176
-rw-r--r--lib/rdoc/markup/to_html_snippet.rb285
-rw-r--r--lib/rdoc/markup/to_joined_paragraph.rb47
-rw-r--r--lib/rdoc/markup/to_label.rb75
-rw-r--r--lib/rdoc/markup/to_markdown.rb192
-rw-r--r--lib/rdoc/markup/to_rdoc.rb345
-rw-r--r--lib/rdoc/markup/to_table_of_contents.rb89
-rw-r--r--lib/rdoc/markup/to_test.rb70
-rw-r--r--lib/rdoc/markup/to_tt_only.rb121
-rw-r--r--lib/rdoc/markup/verbatim.rb84
-rw-r--r--lib/rdoc/meta_method.rb7
-rw-r--r--lib/rdoc/method_attr.rb419
-rw-r--r--lib/rdoc/mixin.rb121
-rw-r--r--lib/rdoc/normal_class.rb93
-rw-r--r--lib/rdoc/normal_module.rb74
-rw-r--r--lib/rdoc/options.rb1329
-rw-r--r--lib/rdoc/parser.rb294
-rw-r--r--lib/rdoc/parser/c.rb1225
-rw-r--r--lib/rdoc/parser/changelog.rb335
-rw-r--r--lib/rdoc/parser/markdown.rb24
-rw-r--r--lib/rdoc/parser/rd.rb23
-rw-r--r--lib/rdoc/parser/ripper_state_lex.rb590
-rw-r--r--lib/rdoc/parser/ruby.rb2360
-rw-r--r--lib/rdoc/parser/ruby_tools.rb167
-rw-r--r--lib/rdoc/parser/simple.rb61
-rw-r--r--lib/rdoc/parser/text.rb12
-rw-r--r--lib/rdoc/rd.rb99
-rw-r--r--lib/rdoc/rd/block_parser.rb1060
-rw-r--r--lib/rdoc/rd/inline.rb72
-rw-r--r--lib/rdoc/rd/inline_parser.rb1208
-rw-r--r--lib/rdoc/rdoc.gemspec233
-rw-r--r--lib/rdoc/rdoc.rb565
-rw-r--r--lib/rdoc/require.rb52
-rw-r--r--lib/rdoc/ri.rb20
-rw-r--r--lib/rdoc/ri/driver.rb1512
-rw-r--r--lib/rdoc/ri/formatter.rb6
-rw-r--r--lib/rdoc/ri/paths.rb171
-rw-r--r--lib/rdoc/ri/store.rb7
-rw-r--r--lib/rdoc/ri/task.rb71
-rw-r--r--lib/rdoc/rubygems_hook.rb248
-rw-r--r--lib/rdoc/servlet.rb451
-rw-r--r--lib/rdoc/single_class.rb31
-rw-r--r--lib/rdoc/stats.rb461
-rw-r--r--lib/rdoc/stats/normal.rb58
-rw-r--r--lib/rdoc/stats/quiet.rb60
-rw-r--r--lib/rdoc/stats/verbose.rb46
-rw-r--r--lib/rdoc/store.rb986
-rw-r--r--lib/rdoc/task.rb329
-rw-r--r--lib/rdoc/text.rb312
-rw-r--r--lib/rdoc/token_stream.rb119
-rw-r--r--lib/rdoc/tom_doc.rb263
-rw-r--r--lib/rdoc/top_level.rb289
-rw-r--r--lib/rdoc/version.rb10
-rw-r--r--lib/readbytes.rb36
-rw-r--r--lib/readline.gemspec33
-rw-r--r--lib/readline.rb7
-rw-r--r--lib/reline.rb600
-rw-r--r--lib/reline/ansi.rb350
-rw-r--r--lib/reline/config.rb401
-rw-r--r--lib/reline/general_io.rb109
-rw-r--r--lib/reline/history.rb76
-rw-r--r--lib/reline/key_actor.rb7
-rw-r--r--lib/reline/key_actor/base.rb19
-rw-r--r--lib/reline/key_actor/emacs.rb517
-rw-r--r--lib/reline/key_actor/vi_command.rb518
-rw-r--r--lib/reline/key_actor/vi_insert.rb517
-rw-r--r--lib/reline/key_stroke.rb105
-rw-r--r--lib/reline/kill_ring.rb125
-rw-r--r--lib/reline/line_editor.rb3357
-rw-r--r--lib/reline/reline.gemspec25
-rw-r--r--lib/reline/terminfo.rb174
-rw-r--r--lib/reline/unicode.rb665
-rw-r--r--lib/reline/unicode/east_asian_width.rb1164
-rw-r--r--lib/reline/version.rb3
-rw-r--r--lib/reline/windows.rb497
-rw-r--r--lib/resolv-replace.gemspec22
-rw-r--r--lib/resolv-replace.rb76
-rw-r--r--lib/resolv.gemspec22
-rw-r--r--lib/resolv.rb2914
-rw-r--r--lib/rinda/rinda.gemspec28
-rw-r--r--lib/rinda/rinda.rb327
-rw-r--r--lib/rinda/ring.rb484
-rw-r--r--lib/rinda/tuplespace.rb641
-rw-r--r--lib/ruby2_keywords.gemspec23
-rw-r--r--lib/ruby_vm/mjit/c_pointer.rb329
-rw-r--r--lib/ruby_vm/mjit/c_type.rb91
-rw-r--r--lib/ruby_vm/mjit/compiler.rb952
-rw-r--r--lib/ruby_vm/mjit/hooks.rb32
-rw-r--r--lib/rubygems.rb1370
-rw-r--r--lib/rubygems/available_set.rb165
-rw-r--r--lib/rubygems/basic_specification.rb346
-rw-r--r--lib/rubygems/bundler_version_finder.rb77
-rw-r--r--lib/rubygems/command.rb672
-rw-r--r--lib/rubygems/command_manager.rb255
-rw-r--r--lib/rubygems/commands/build_command.rb136
-rw-r--r--lib/rubygems/commands/cert_command.rb326
-rw-r--r--lib/rubygems/commands/check_command.rb93
-rw-r--r--lib/rubygems/commands/cleanup_command.rb190
-rw-r--r--lib/rubygems/commands/contents_command.rb189
-rw-r--r--lib/rubygems/commands/dependency_command.rb208
-rw-r--r--lib/rubygems/commands/environment_command.rb178
-rw-r--r--lib/rubygems/commands/exec_command.rb249
-rw-r--r--lib/rubygems/commands/fetch_command.rb95
-rw-r--r--lib/rubygems/commands/generate_index_command.rb86
-rw-r--r--lib/rubygems/commands/help_command.rb375
-rw-r--r--lib/rubygems/commands/info_command.rb38
-rw-r--r--lib/rubygems/commands/install_command.rb281
-rw-r--r--lib/rubygems/commands/list_command.rb42
-rw-r--r--lib/rubygems/commands/lock_command.rb109
-rw-r--r--lib/rubygems/commands/mirror_command.rb26
-rw-r--r--lib/rubygems/commands/open_command.rb85
-rw-r--r--lib/rubygems/commands/outdated_command.rb33
-rw-r--r--lib/rubygems/commands/owner_command.rb126
-rw-r--r--lib/rubygems/commands/pristine_command.rb206
-rw-r--r--lib/rubygems/commands/push_command.rb110
-rw-r--r--lib/rubygems/commands/query_command.rb44
-rw-r--r--lib/rubygems/commands/rdoc_command.rb97
-rw-r--r--lib/rubygems/commands/search_command.rb41
-rw-r--r--lib/rubygems/commands/server_command.rb26
-rw-r--r--lib/rubygems/commands/setup_command.rb671
-rw-r--r--lib/rubygems/commands/signin_command.rb34
-rw-r--r--lib/rubygems/commands/signout_command.rb32
-rw-r--r--lib/rubygems/commands/sources_command.rb227
-rw-r--r--lib/rubygems/commands/specification_command.rb152
-rw-r--r--lib/rubygems/commands/stale_command.rb40
-rw-r--r--lib/rubygems/commands/uninstall_command.rb201
-rw-r--r--lib/rubygems/commands/unpack_command.rb176
-rw-r--r--lib/rubygems/commands/update_command.rb337
-rw-r--r--lib/rubygems/commands/which_command.rb88
-rw-r--r--lib/rubygems/commands/yank_command.rb99
-rw-r--r--lib/rubygems/compatibility.rb42
-rw-r--r--lib/rubygems/config_file.rb542
-rw-r--r--lib/rubygems/core_ext/kernel_gem.rb70
-rw-r--r--lib/rubygems/core_ext/kernel_require.rb169
-rw-r--r--lib/rubygems/core_ext/kernel_warn.rb50
-rw-r--r--lib/rubygems/core_ext/tcpsocket_init.rb54
-rw-r--r--lib/rubygems/defaults.rb292
-rw-r--r--lib/rubygems/dependency.rb354
-rw-r--r--lib/rubygems/dependency_installer.rb340
-rw-r--r--lib/rubygems/dependency_list.rb243
-rw-r--r--lib/rubygems/deprecate.rb165
-rw-r--r--lib/rubygems/doctor.rb132
-rw-r--r--lib/rubygems/errors.rb180
-rw-r--r--lib/rubygems/exceptions.rb299
-rw-r--r--lib/rubygems/ext.rb20
-rw-r--r--lib/rubygems/ext/build_error.rb9
-rw-r--r--lib/rubygems/ext/builder.rb241
-rw-r--r--lib/rubygems/ext/cargo_builder.rb360
-rw-r--r--lib/rubygems/ext/cargo_builder/link_flag_converter.rb27
-rw-r--r--lib/rubygems/ext/cmake_builder.rb16
-rw-r--r--lib/rubygems/ext/configure_builder.rb21
-rw-r--r--lib/rubygems/ext/ext_conf_builder.rb75
-rw-r--r--lib/rubygems/ext/rake_builder.rb34
-rw-r--r--lib/rubygems/gem_runner.rb76
-rw-r--r--lib/rubygems/gemcutter_utilities.rb372
-rw-r--r--lib/rubygems/gemcutter_utilities/webauthn_listener.rb105
-rw-r--r--lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb163
-rw-r--r--lib/rubygems/gemcutter_utilities/webauthn_poller.rb78
-rw-r--r--lib/rubygems/indexer.rb428
-rw-r--r--lib/rubygems/install_default_message.rb13
-rw-r--r--lib/rubygems/install_message.rb13
-rw-r--r--lib/rubygems/install_update_options.rb200
-rw-r--r--lib/rubygems/installer.rb1021
-rw-r--r--lib/rubygems/installer_uninstaller_utils.rb29
-rw-r--r--lib/rubygems/local_remote_options.rb149
-rw-r--r--lib/rubygems/mock_gem_ui.rb86
-rw-r--r--lib/rubygems/name_tuple.rb121
-rw-r--r--lib/rubygems/openssl.rb7
-rw-r--r--lib/rubygems/optparse.rb3
-rw-r--r--lib/rubygems/optparse/.document1
-rw-r--r--lib/rubygems/optparse/lib/optionparser.rb2
-rw-r--r--lib/rubygems/optparse/lib/optparse.rb2308
-rw-r--r--lib/rubygems/optparse/lib/optparse/ac.rb54
-rw-r--r--lib/rubygems/optparse/lib/optparse/date.rb18
-rw-r--r--lib/rubygems/optparse/lib/optparse/kwargs.rb22
-rw-r--r--lib/rubygems/optparse/lib/optparse/shellwords.rb7
-rw-r--r--lib/rubygems/optparse/lib/optparse/time.rb11
-rw-r--r--lib/rubygems/optparse/lib/optparse/uri.rb7
-rw-r--r--lib/rubygems/optparse/lib/optparse/version.rb71
-rw-r--r--lib/rubygems/package.rb720
-rw-r--r--lib/rubygems/package/digest_io.rb63
-rw-r--r--lib/rubygems/package/file_source.rb32
-rw-r--r--lib/rubygems/package/io_source.rb48
-rw-r--r--lib/rubygems/package/old.rb169
-rw-r--r--lib/rubygems/package/source.rb4
-rw-r--r--lib/rubygems/package/tar_header.rb244
-rw-r--r--lib/rubygems/package/tar_reader.rb97
-rw-r--r--lib/rubygems/package/tar_reader/entry.rb249
-rw-r--r--lib/rubygems/package/tar_writer.rb329
-rw-r--r--lib/rubygems/package_task.rb123
-rw-r--r--lib/rubygems/path_support.rb86
-rw-r--r--lib/rubygems/platform.rb246
-rw-r--r--lib/rubygems/psych_tree.rb33
-rw-r--r--lib/rubygems/query_utils.rb351
-rw-r--r--lib/rubygems/rdoc.rb13
-rw-r--r--lib/rubygems/remote_fetcher.rb334
-rw-r--r--lib/rubygems/request.rb295
-rw-r--r--lib/rubygems/request/connection_pools.rb95
-rw-r--r--lib/rubygems/request/http_pool.rb47
-rw-r--r--lib/rubygems/request/https_pool.rb10
-rw-r--r--lib/rubygems/request_set.rb467
-rw-r--r--lib/rubygems/request_set/gem_dependency_api.rb844
-rw-r--r--lib/rubygems/request_set/lockfile.rb240
-rw-r--r--lib/rubygems/request_set/lockfile/parser.rb344
-rw-r--r--lib/rubygems/request_set/lockfile/tokenizer.rb114
-rw-r--r--lib/rubygems/requirement.rb294
-rw-r--r--lib/rubygems/resolver.rb348
-rw-r--r--lib/rubygems/resolver/activation_request.rb163
-rw-r--r--lib/rubygems/resolver/api_set.rb133
-rw-r--r--lib/rubygems/resolver/api_set/gem_parser.rb20
-rw-r--r--lib/rubygems/resolver/api_specification.rb105
-rw-r--r--lib/rubygems/resolver/best_set.rb77
-rw-r--r--lib/rubygems/resolver/composed_set.rb65
-rw-r--r--lib/rubygems/resolver/conflict.rb154
-rw-r--r--lib/rubygems/resolver/current_set.rb12
-rw-r--r--lib/rubygems/resolver/dependency_request.rb119
-rw-r--r--lib/rubygems/resolver/git_set.rb121
-rw-r--r--lib/rubygems/resolver/git_specification.rb57
-rw-r--r--lib/rubygems/resolver/index_set.rb79
-rw-r--r--lib/rubygems/resolver/index_specification.rb101
-rw-r--r--lib/rubygems/resolver/installed_specification.rb57
-rw-r--r--lib/rubygems/resolver/installer_set.rb272
-rw-r--r--lib/rubygems/resolver/local_specification.rb40
-rw-r--r--lib/rubygems/resolver/lock_set.rb81
-rw-r--r--lib/rubygems/resolver/lock_specification.rb86
-rw-r--r--lib/rubygems/resolver/molinillo.rb3
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo.rb11
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb57
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb88
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb255
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb36
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb66
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb62
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb63
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb61
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb126
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb46
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb36
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb164
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb149
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb6
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb112
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb67
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb839
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb46
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/state.rb58
-rw-r--r--lib/rubygems/resolver/requirement_list.rb82
-rw-r--r--lib/rubygems/resolver/set.rb55
-rw-r--r--lib/rubygems/resolver/source_set.rb47
-rw-r--r--lib/rubygems/resolver/spec_specification.rb69
-rw-r--r--lib/rubygems/resolver/specification.rb126
-rw-r--r--lib/rubygems/resolver/stats.rb46
-rw-r--r--lib/rubygems/resolver/vendor_set.rb86
-rw-r--r--lib/rubygems/resolver/vendor_specification.rb23
-rw-r--r--lib/rubygems/s3_uri_signer.rb177
-rw-r--r--lib/rubygems/safe_yaml.rb59
-rw-r--r--lib/rubygems/security.rb629
-rw-r--r--lib/rubygems/security/policies.rb116
-rw-r--r--lib/rubygems/security/policy.rb292
-rw-r--r--lib/rubygems/security/signer.rb204
-rw-r--r--lib/rubygems/security/trust_dir.rb119
-rw-r--r--lib/rubygems/security_option.rb43
-rw-r--r--lib/rubygems/shellwords.rb3
-rw-r--r--lib/rubygems/source.rb241
-rw-r--r--lib/rubygems/source/git.rb241
-rw-r--r--lib/rubygems/source/installed.rb39
-rw-r--r--lib/rubygems/source/local.rb132
-rw-r--r--lib/rubygems/source/lock.rb51
-rw-r--r--lib/rubygems/source/specific_file.rb72
-rw-r--r--lib/rubygems/source/vendor.rb26
-rw-r--r--lib/rubygems/source_list.rb146
-rw-r--r--lib/rubygems/spec_fetcher.rb262
-rw-r--r--lib/rubygems/specification.rb2737
-rw-r--r--lib/rubygems/specification_policy.rb507
-rw-r--r--lib/rubygems/ssl_certs/.document1
-rw-r--r--lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem21
-rw-r--r--lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem21
-rw-r--r--lib/rubygems/stub_specification.rb211
-rw-r--r--lib/rubygems/text.rb86
-rw-r--r--lib/rubygems/tsort.rb3
-rw-r--r--lib/rubygems/tsort/.document1
-rw-r--r--lib/rubygems/tsort/lib/tsort.rb452
-rw-r--r--lib/rubygems/uninstaller.rb411
-rw-r--r--lib/rubygems/unknown_command_spell_checker.rb21
-rw-r--r--lib/rubygems/update_suggestion.rb69
-rw-r--r--lib/rubygems/uri.rb126
-rw-r--r--lib/rubygems/uri_formatter.rb47
-rw-r--r--lib/rubygems/user_interaction.rb656
-rw-r--r--lib/rubygems/util.rb116
-rw-r--r--lib/rubygems/util/licenses.rb545
-rw-r--r--lib/rubygems/util/list.rb38
-rw-r--r--lib/rubygems/validator.rb144
-rw-r--r--lib/rubygems/version.rb417
-rw-r--r--lib/rubygems/version_option.rb83
-rw-r--r--lib/securerandom.gemspec22
-rw-r--r--lib/securerandom.rb93
-rw-r--r--lib/set.rb860
-rw-r--r--lib/set/set.gemspec23
-rw-r--r--lib/set/sorted_set.rb6
-rw-r--r--lib/shellwords.gemspec22
-rw-r--r--lib/shellwords.rb267
-rw-r--r--lib/singleton.rb206
-rw-r--r--lib/singleton/singleton.gemspec30
-rw-r--r--lib/sync.rb313
-rw-r--r--lib/syntax_suggest.rb3
-rw-r--r--lib/syntax_suggest/api.rb201
-rw-r--r--lib/syntax_suggest/around_block_scan.rb232
-rw-r--r--lib/syntax_suggest/block_expand.rb165
-rw-r--r--lib/syntax_suggest/capture/before_after_keyword_ends.rb85
-rw-r--r--lib/syntax_suggest/capture/falling_indent_lines.rb71
-rw-r--r--lib/syntax_suggest/capture_code_context.rb245
-rw-r--r--lib/syntax_suggest/clean_document.rb306
-rw-r--r--lib/syntax_suggest/cli.rb130
-rw-r--r--lib/syntax_suggest/code_block.rb100
-rw-r--r--lib/syntax_suggest/code_frontier.rb178
-rw-r--r--lib/syntax_suggest/code_line.rb237
-rw-r--r--lib/syntax_suggest/code_search.rb139
-rw-r--r--lib/syntax_suggest/core_ext.rb114
-rw-r--r--lib/syntax_suggest/display_code_with_line_numbers.rb70
-rw-r--r--lib/syntax_suggest/display_invalid_blocks.rb83
-rw-r--r--lib/syntax_suggest/explain_syntax.rb103
-rw-r--r--lib/syntax_suggest/left_right_lex_count.rb168
-rw-r--r--lib/syntax_suggest/lex_all.rb55
-rw-r--r--lib/syntax_suggest/lex_value.rb70
-rw-r--r--lib/syntax_suggest/parse_blocks_from_indent_line.rb60
-rw-r--r--lib/syntax_suggest/pathname_from_message.rb59
-rw-r--r--lib/syntax_suggest/priority_engulf_queue.rb63
-rw-r--r--lib/syntax_suggest/priority_queue.rb105
-rw-r--r--lib/syntax_suggest/ripper_errors.rb36
-rw-r--r--lib/syntax_suggest/scan_history.rb134
-rw-r--r--lib/syntax_suggest/syntax_suggest.gemspec32
-rw-r--r--lib/syntax_suggest/unvisited_lines.rb36
-rw-r--r--lib/syntax_suggest/version.rb5
-rw-r--r--lib/telnet.rb9
-rw-r--r--lib/tempfile.gemspec22
-rw-r--r--lib/tempfile.rb472
-rw-r--r--lib/thread.rb274
-rw-r--r--lib/thwait.rb133
-rw-r--r--lib/time.gemspec24
-rw-r--r--lib/time.rb724
-rw-r--r--lib/timeout.rb221
-rw-r--r--lib/timeout/timeout.gemspec30
-rw-r--r--lib/tmpdir.gemspec26
-rw-r--r--lib/tmpdir.rb160
-rw-r--r--lib/tracer.rb163
-rw-r--r--lib/tsort.gemspec22
-rw-r--r--lib/tsort.rb452
-rw-r--r--lib/un.gemspec24
-rw-r--r--lib/un.rb439
-rw-r--r--lib/unicode_normalize/normalize.rb175
-rw-r--r--lib/unicode_normalize/tables.rb9259
-rw-r--r--lib/uri.rb104
-rw-r--r--lib/uri/common.rb731
-rw-r--r--lib/uri/file.rb100
-rw-r--r--lib/uri/ftp.rb267
-rw-r--r--lib/uri/generic.rb1586
-rw-r--r--lib/uri/http.rb125
-rw-r--r--lib/uri/https.rb23
-rw-r--r--lib/uri/ldap.rb261
-rw-r--r--lib/uri/ldaps.rb22
-rw-r--r--lib/uri/mailto.rb293
-rw-r--r--lib/uri/rfc2396_parser.rb539
-rw-r--r--lib/uri/rfc3986_parser.rb119
-rw-r--r--lib/uri/uri.gemspec31
-rw-r--r--lib/uri/version.rb6
-rw-r--r--lib/uri/ws.rb83
-rw-r--r--lib/uri/wss.rb23
-rw-r--r--lib/weakref.rb107
-rw-r--r--lib/weakref/weakref.gemspec34
-rw-r--r--lib/yaml.rb69
-rw-r--r--lib/yaml/dbm.rb280
-rw-r--r--lib/yaml/store.rb86
-rw-r--r--lib/yaml/yaml.gemspec23
-rwxr-xr-xlibexec/bundle38
-rwxr-xr-xlibexec/bundler4
-rwxr-xr-xlibexec/erb164
-rwxr-xr-xlibexec/irb11
-rwxr-xr-xlibexec/racc320
-rwxr-xr-xlibexec/rdoc43
-rwxr-xr-xlibexec/ri12
-rwxr-xr-xlibexec/syntax_suggest7
-rw-r--r--load.c1520
-rw-r--r--loadpath.c91
-rw-r--r--localeinit.c138
-rw-r--r--main.c66
-rw-r--r--man/erb.1160
-rw-r--r--man/goruby.139
-rw-r--r--man/index.txt25
-rw-r--r--man/irb.1250
-rw-r--r--man/ri.1247
-rw-r--r--man/ruby.1666
-rw-r--r--marshal.c2882
-rw-r--r--marshal.rb40
-rw-r--r--math.c1099
-rw-r--r--memory_view.c872
-rw-r--r--method.h255
-rw-r--r--mini_builtin.c97
-rw-r--r--miniinit.c51
-rw-r--r--misc/README11
-rwxr-xr-xmisc/expand_tabs.rb208
-rw-r--r--misc/inf-ruby.el325
-rwxr-xr-xmisc/lldb_cruby.py748
-rw-r--r--misc/lldb_disasm.py250
-rw-r--r--misc/lldb_rb/commands/command_template.py30
-rw-r--r--misc/lldb_rb/commands/heap_page_command.py26
-rw-r--r--misc/lldb_rb/commands/rclass_ext_command.py14
-rw-r--r--misc/lldb_rb/constants.py4
-rw-r--r--misc/lldb_rb/rb_base_command.py69
-rw-r--r--misc/lldb_yjit.py47
-rw-r--r--misc/rb_optparse.bash21
-rw-r--r--misc/rb_optparse.zsh39
-rw-r--r--misc/ruby-mode.el776
-rw-r--r--misc/ruby-style.el94
-rw-r--r--misc/rubydb2x.el104
-rw-r--r--misc/rubydb3x.el115
-rw-r--r--misc/test_lldb_cruby.rb40
-rw-r--r--missing/acosh.c93
-rw-r--r--missing/alloca.c18
-rw-r--r--missing/cbrt.c11
-rw-r--r--missing/close.c72
-rw-r--r--missing/crt_externs.h8
-rw-r--r--missing/crypt.c1159
-rw-r--r--missing/crypt.h247
-rw-r--r--missing/des_tables.c1616
-rw-r--r--missing/dir.h65
-rw-r--r--missing/dtoa.c3470
-rw-r--r--missing/dup2.c61
-rw-r--r--missing/erf.c74
-rw-r--r--missing/explicit_bzero.c94
-rw-r--r--missing/ffs.c49
-rw-r--r--missing/file.h5
-rw-r--r--missing/finite.c6
-rw-r--r--missing/flock.c143
-rw-r--r--missing/hypot.c17
-rw-r--r--missing/isinf.c44
-rw-r--r--missing/isnan.c29
-rw-r--r--missing/langinfo.c148
-rw-r--r--missing/lgamma_r.c80
-rw-r--r--missing/memcmp.c18
-rw-r--r--missing/memmove.c38
-rw-r--r--missing/mkdir.c104
-rw-r--r--missing/mt19937.c158
-rw-r--r--missing/nan.c28
-rw-r--r--missing/nextafter.c77
-rw-r--r--missing/os2.c111
-rw-r--r--missing/procstat_vm.c85
-rw-r--r--missing/setproctitle.c175
-rw-r--r--missing/strcasecmp.c12
-rw-r--r--missing/strchr.c57
-rw-r--r--missing/strerror.c13
-rw-r--r--missing/strftime.c894
-rw-r--r--missing/strlcat.c56
-rw-r--r--missing/strlcpy.c51
-rw-r--r--missing/strncasecmp.c18
-rw-r--r--missing/strstr.c82
-rw-r--r--missing/strtod.c271
-rw-r--r--missing/strtol.c84
-rw-r--r--missing/strtoul.c184
-rw-r--r--missing/tgamma.c82
-rw-r--r--missing/vsnprintf.c1128
-rw-r--r--missing/x68.c38
-rw-r--r--missing/x86_64-chkstk.S10
-rw-r--r--mjit.c1999
-rw-r--r--mjit.h145
-rw-r--r--mjit.rb37
-rw-r--r--mjit_c.c43
-rw-r--r--mjit_c.h97
-rw-r--r--mjit_c.rb807
-rw-r--r--mkconfig.rb126
-rw-r--r--nilclass.rb25
-rw-r--r--node.c1501
-rw-r--r--node.h548
-rw-r--r--numeric.c6680
-rw-r--r--numeric.rb405
-rw-r--r--object.c4733
-rw-r--r--pack.c3155
-rw-r--r--pack.rb31
-rw-r--r--parse.y16177
-rw-r--r--prec.c81
-rw-r--r--prelude.rb31
-rw-r--r--probes.d223
-rw-r--r--probes_helper.h44
-rw-r--r--proc.c4439
-rw-r--r--process.c9637
-rw-r--r--ractor.c3327
-rw-r--r--ractor.rb842
-rw-r--r--ractor_core.h342
-rw-r--r--random.c1906
-rw-r--r--range.c2512
-rw-r--r--rational.c2826
-rw-r--r--re.c5150
-rw-r--r--re.h44
-rw-r--r--regcomp.c6769
-rw-r--r--regenc.c1027
-rw-r--r--regenc.h259
-rw-r--r--regerror.c387
-rw-r--r--regex.c4511
-rw-r--r--regex.h228
-rw-r--r--regexec.c5400
-rw-r--r--regint.h991
-rw-r--r--regparse.c6650
-rw-r--r--regparse.h370
-rw-r--r--regsyntax.c388
-rw-r--r--ruby-runner.c98
-rw-r--r--ruby.1291
-rw-r--r--ruby.c3481
-rw-r--r--ruby.h596
-rw-r--r--ruby_assert.h14
-rw-r--r--ruby_atomic.h23
-rw-r--r--rubyio.h64
-rw-r--r--rubysig.h58
-rw-r--r--rubystub.c61
-rw-r--r--rubytest.rb44
-rw-r--r--sample/README17
-rw-r--r--sample/benchmark.rb19
-rw-r--r--sample/biorhythm.rb152
-rw-r--r--sample/cal.rb243
-rw-r--r--sample/cbreak.rb12
-rw-r--r--sample/cgi-session-pstore.rb11
-rw-r--r--sample/clnt.rb12
-rw-r--r--sample/coverage.rb62
-rw-r--r--sample/dbmtest.rb14
-rw-r--r--sample/delegate.rb31
-rw-r--r--sample/dir.rb6
-rw-r--r--sample/drb/README.ja.rdoc59
-rw-r--r--sample/drb/README.rdoc56
-rw-r--r--sample/drb/acl.rb15
-rw-r--r--sample/drb/darray.rb12
-rw-r--r--sample/drb/darrayc.rb47
-rw-r--r--sample/drb/dbiff.rb51
-rw-r--r--sample/drb/dcdbiff.rb43
-rw-r--r--sample/drb/dchatc.rb41
-rw-r--r--sample/drb/dchats.rb69
-rw-r--r--sample/drb/dhasen.rb41
-rw-r--r--sample/drb/dhasenc.rb14
-rw-r--r--sample/drb/dlogc.rb16
-rw-r--r--sample/drb/dlogd.rb38
-rw-r--r--sample/drb/dqin.rb13
-rw-r--r--sample/drb/dqlib.rb14
-rw-r--r--sample/drb/dqout.rb14
-rw-r--r--sample/drb/dqueue.rb11
-rw-r--r--sample/drb/drbc.rb45
-rw-r--r--sample/drb/drbch.rb48
-rw-r--r--sample/drb/drbm.rb60
-rw-r--r--sample/drb/drbmc.rb22
-rw-r--r--sample/drb/drbs-acl.rb51
-rw-r--r--sample/drb/drbs.rb64
-rw-r--r--sample/drb/drbssl_c.rb19
-rw-r--r--sample/drb/drbssl_s.rb31
-rw-r--r--sample/drb/extserv_test.rb80
-rw-r--r--sample/drb/gw_ct.rb29
-rw-r--r--sample/drb/gw_cu.rb28
-rw-r--r--sample/drb/gw_s.rb10
-rw-r--r--sample/drb/holderc.rb22
-rw-r--r--sample/drb/holders.rb63
-rw-r--r--sample/drb/http0.rb77
-rw-r--r--sample/drb/http0serv.rb120
-rw-r--r--sample/drb/name.rb117
-rw-r--r--sample/drb/namec.rb36
-rw-r--r--sample/drb/old_tuplespace.rb212
-rw-r--r--sample/drb/rinda_ts.rb7
-rw-r--r--sample/drb/rindac.rb17
-rw-r--r--sample/drb/rindas.rb18
-rw-r--r--sample/drb/ring_echo.rb29
-rw-r--r--sample/drb/ring_inspect.rb30
-rw-r--r--sample/drb/ring_place.rb25
-rw-r--r--sample/drb/simpletuple.rb89
-rw-r--r--sample/drb/speedc.rb21
-rw-r--r--sample/drb/speeds.rb31
-rw-r--r--sample/dualstack-fetch.rb48
-rw-r--r--sample/dualstack-httpd.rb54
-rw-r--r--sample/eval.rb17
-rw-r--r--sample/export.rb2
-rw-r--r--sample/exyacc.rb34
-rw-r--r--sample/fact.rb9
-rw-r--r--sample/fib.awk8
-rw-r--r--sample/fib.pl4
-rw-r--r--sample/fib.py2
-rw-r--r--sample/fib.scm6
-rw-r--r--sample/freq.rb12
-rw-r--r--sample/from.rb161
-rw-r--r--sample/fullpath.rb16
-rw-r--r--sample/getoptlong/abbrev.rb9
-rw-r--r--sample/getoptlong/aliases.rb8
-rw-r--r--sample/getoptlong/argv.rb12
-rw-r--r--sample/getoptlong/each.rb12
-rw-r--r--sample/getoptlong/fibonacci.rb62
-rw-r--r--sample/getoptlong/permute.rb12
-rw-r--r--sample/getoptlong/require_order.rb13
-rw-r--r--sample/getoptlong/return_in_order.rb13
-rw-r--r--sample/getoptlong/simple.rb7
-rw-r--r--sample/getoptlong/types.rb10
-rw-r--r--sample/getopts.test36
-rw-r--r--sample/goodfriday.rb48
-rw-r--r--sample/io.rb44
-rw-r--r--sample/irb.rb27
-rw-r--r--sample/iseq_loader.rb243
-rw-r--r--sample/list.rb6
-rw-r--r--sample/list2.rb2
-rw-r--r--sample/list3.rb4
-rw-r--r--sample/logger/app.rb46
-rw-r--r--sample/logger/log.rb27
-rw-r--r--sample/logger/shifting.rb26
-rwxr-xr-x[-rw-r--r--]sample/mine.rb47
-rw-r--r--sample/mkproto.rb30
-rw-r--r--sample/mpart.rb44
-rw-r--r--sample/mrshtest.rb13
-rw-r--r--sample/net-imap.rb167
-rw-r--r--sample/observ.rb11
-rw-r--r--sample/occur.pl8
-rw-r--r--sample/occur.rb6
-rw-r--r--sample/occur2.rb16
-rw-r--r--sample/open3.rb12
-rw-r--r--sample/openssl/c_rehash.rb173
-rw-r--r--sample/openssl/cert2text.rb26
-rw-r--r--sample/openssl/certstore.rb158
-rw-r--r--sample/openssl/cipher.rb54
-rw-r--r--sample/openssl/crlstore.rb122
-rw-r--r--sample/openssl/echo_cli.rb44
-rw-r--r--sample/openssl/echo_svr.rb65
-rw-r--r--sample/openssl/gen_csr.rb49
-rw-r--r--sample/openssl/smime_read.rb22
-rw-r--r--sample/openssl/smime_write.rb22
-rw-r--r--sample/openssl/wget.rb34
-rwxr-xr-xsample/optparse/opttest.rb125
-rwxr-xr-xsample/optparse/subcommand.rb19
-rw-r--r--sample/philos.rb5
-rw-r--r--sample/pi.rb2
-rw-r--r--sample/pstore.rb19
-rw-r--r--sample/pty/expect_sample.rb58
-rw-r--r--sample/pty/script.rb37
-rw-r--r--sample/pty/shl.rb93
-rw-r--r--sample/rbc.rb1015
-rw-r--r--sample/rcs.awk54
-rw-r--r--sample/rcs.rb20
-rw-r--r--sample/rdoc/markup/rdoc2latex.rb15
-rw-r--r--sample/rdoc/markup/sample.rb40
-rw-r--r--sample/regx.rb23
-rw-r--r--sample/rename.rb297
-rw-r--r--sample/rinda-ring.rb22
-rw-r--r--sample/ripper/ruby2html.rb116
-rw-r--r--sample/ripper/strip-comment.rb19
-rw-r--r--sample/sieve.rb2
-rw-r--r--sample/simple-bench.rb140
-rw-r--r--sample/svr.rb14
-rw-r--r--sample/tempfile.rb8
-rw-r--r--sample/test.rb1191
-rw-r--r--sample/time.rb16
-rw-r--r--sample/timeout.rb42
-rw-r--r--sample/trick2013/README.md15
-rw-r--r--sample/trick2013/kinaba/authors.markdown3
-rw-r--r--sample/trick2013/kinaba/entry.rb1
-rw-r--r--sample/trick2013/kinaba/remarks.markdown37
-rw-r--r--sample/trick2013/mame/authors.markdown3
-rw-r--r--sample/trick2013/mame/entry.rb97
-rw-r--r--sample/trick2013/mame/remarks.markdown47
-rw-r--r--sample/trick2013/shinh/authors.markdown2
-rw-r--r--sample/trick2013/shinh/entry.rb10
-rw-r--r--sample/trick2013/shinh/remarks.markdown4
-rw-r--r--sample/trick2013/yhara/authors.markdown3
-rw-r--r--sample/trick2013/yhara/entry.rb28
-rw-r--r--sample/trick2013/yhara/remarks.en.markdown23
-rw-r--r--sample/trick2013/yhara/remarks.markdown24
-rw-r--r--sample/trick2015/README.md16
-rw-r--r--sample/trick2015/eregon/authors.markdown3
-rw-r--r--sample/trick2015/eregon/entry.rb16
-rw-r--r--sample/trick2015/eregon/remarks.markdown70
-rw-r--r--sample/trick2015/kinaba/authors.markdown4
-rw-r--r--sample/trick2015/kinaba/entry.rb150
-rw-r--r--sample/trick2015/kinaba/remarks.markdown85
-rw-r--r--sample/trick2015/ksk_1/authors.markdown3
-rw-r--r--sample/trick2015/ksk_1/entry.rb1
-rw-r--r--sample/trick2015/ksk_1/remarks.markdown120
-rw-r--r--sample/trick2015/ksk_2/abnormal.cnf6
-rw-r--r--sample/trick2015/ksk_2/authors.markdown3
-rw-r--r--sample/trick2015/ksk_2/entry.rb1
-rw-r--r--sample/trick2015/ksk_2/quinn.cnf21
-rw-r--r--sample/trick2015/ksk_2/remarks.markdown204
-rw-r--r--sample/trick2015/ksk_2/sample.cnf9
-rw-r--r--sample/trick2015/ksk_2/uf20-01.cnf99
-rw-r--r--sample/trick2015/ksk_2/unsat.cnf11
-rw-r--r--sample/trick2015/monae/authors.markdown1
-rw-r--r--sample/trick2015/monae/entry.rb26
-rw-r--r--sample/trick2015/monae/remarks.markdown25
-rw-r--r--sample/trick2018/01-kinaba/authors.markdown3
-rw-r--r--sample/trick2018/01-kinaba/entry.rb8
-rw-r--r--sample/trick2018/01-kinaba/remarks.markdown55
-rw-r--r--sample/trick2018/02-mame/authors.markdown3
-rw-r--r--sample/trick2018/02-mame/entry.rb15
-rw-r--r--sample/trick2018/02-mame/remarks.markdown16
-rw-r--r--sample/trick2018/03-tompng/Gemfile2
-rw-r--r--sample/trick2018/03-tompng/Gemfile.lock13
-rw-r--r--sample/trick2018/03-tompng/authors.markdown3
-rw-r--r--sample/trick2018/03-tompng/entry.rb31
-rw-r--r--sample/trick2018/03-tompng/output.txt44
-rw-r--r--sample/trick2018/03-tompng/remarks.markdown19
-rw-r--r--sample/trick2018/03-tompng/trick.pngbin0 -> 5661 bytes-rw-r--r--sample/trick2018/04-colin/authors.markdown3
-rw-r--r--sample/trick2018/04-colin/entry.rb2
-rw-r--r--sample/trick2018/04-colin/remarks.markdown62
-rw-r--r--sample/trick2018/05-tompng/authors.markdown3
-rw-r--r--sample/trick2018/05-tompng/entry.rb41
-rw-r--r--sample/trick2018/05-tompng/preview_of_output.pngbin0 -> 66800 bytes-rw-r--r--sample/trick2018/05-tompng/remarks.markdown31
-rw-r--r--sample/trick2018/README.md16
-rw-r--r--sample/trick2022/01-tompng/Gemfile2
-rw-r--r--sample/trick2022/01-tompng/Gemfile.lock13
-rw-r--r--sample/trick2022/01-tompng/authors.markdown3
-rw-r--r--sample/trick2022/01-tompng/entry.rb40
-rw-r--r--sample/trick2022/01-tompng/remarks.markdown51
-rw-r--r--sample/trick2022/02-tompng/authors.markdown3
-rw-r--r--sample/trick2022/02-tompng/entry.rb32
-rw-r--r--sample/trick2022/02-tompng/remarks.markdown32
-rw-r--r--sample/trick2022/03-mame/authors.markdown3
-rw-r--r--sample/trick2022/03-mame/entry.rb27
-rw-r--r--sample/trick2022/03-mame/remarks.markdown96
-rw-r--r--sample/trick2022/03-mame/test.txt13
-rw-r--r--sample/trick2022/README.md14
-rw-r--r--sample/trojan.rb4
-rw-r--r--sample/tsvr.rb10
-rw-r--r--sample/uumerge.rb14
-rw-r--r--sample/weakref.rb9
-rw-r--r--scheduler.c687
-rw-r--r--shape.c825
-rw-r--r--shape.h232
-rw-r--r--signal.c1823
-rw-r--r--siphash.c493
-rw-r--r--siphash.h48
-rw-r--r--sparc.c40
-rw-r--r--spec/README.md160
-rw-r--r--spec/bundler/bundler/build_metadata_spec.rb49
-rw-r--r--spec/bundler/bundler/bundler_spec.rb378
-rw-r--r--spec/bundler/bundler/cli_spec.rb262
-rw-r--r--spec/bundler/bundler/compact_index_client/updater_spec.rb59
-rw-r--r--spec/bundler/bundler/definition_spec.rb292
-rw-r--r--spec/bundler/bundler/dependency_spec.rb157
-rw-r--r--spec/bundler/bundler/digest_spec.rb24
-rw-r--r--spec/bundler/bundler/dsl_spec.rb308
-rw-r--r--spec/bundler/bundler/endpoint_specification_spec.rb83
-rw-r--r--spec/bundler/bundler/env_spec.rb236
-rw-r--r--spec/bundler/bundler/environment_preserver_spec.rb79
-rw-r--r--spec/bundler/bundler/fetcher/base_spec.rb76
-rw-r--r--spec/bundler/bundler/fetcher/compact_index_spec.rb109
-rw-r--r--spec/bundler/bundler/fetcher/dependency_spec.rb283
-rw-r--r--spec/bundler/bundler/fetcher/downloader_spec.rb255
-rw-r--r--spec/bundler/bundler/fetcher/index_spec.rb82
-rw-r--r--spec/bundler/bundler/fetcher_spec.rb192
-rw-r--r--spec/bundler/bundler/friendly_errors_spec.rb234
-rw-r--r--spec/bundler/bundler/gem_helper_spec.rb451
-rw-r--r--spec/bundler/bundler/gem_version_promoter_spec.rb163
-rw-r--r--spec/bundler/bundler/index_spec.rb36
-rw-r--r--spec/bundler/bundler/installer/gem_installer_spec.rb50
-rw-r--r--spec/bundler/bundler/installer/parallel_installer_spec.rb46
-rw-r--r--spec/bundler/bundler/installer/spec_installation_spec.rb66
-rw-r--r--spec/bundler/bundler/lockfile_parser_spec.rb153
-rw-r--r--spec/bundler/bundler/mirror_spec.rb331
-rw-r--r--spec/bundler/bundler/plugin/api/source_spec.rb88
-rw-r--r--spec/bundler/bundler/plugin/api_spec.rb83
-rw-r--r--spec/bundler/bundler/plugin/dsl_spec.rb38
-rw-r--r--spec/bundler/bundler/plugin/events_spec.rb22
-rw-r--r--spec/bundler/bundler/plugin/index_spec.rb204
-rw-r--r--spec/bundler/bundler/plugin/installer_spec.rb131
-rw-r--r--spec/bundler/bundler/plugin/source_list_spec.rb25
-rw-r--r--spec/bundler/bundler/plugin_spec.rb337
-rw-r--r--spec/bundler/bundler/remote_specification_spec.rb187
-rw-r--r--spec/bundler/bundler/resolver/candidate_spec.rb21
-rw-r--r--spec/bundler/bundler/retry_spec.rb81
-rw-r--r--spec/bundler/bundler/ruby_dsl_spec.rb120
-rw-r--r--spec/bundler/bundler/ruby_version_spec.rb500
-rw-r--r--spec/bundler/bundler/rubygems_integration_spec.rb104
-rw-r--r--spec/bundler/bundler/settings/validator_spec.rb111
-rw-r--r--spec/bundler/bundler/settings_spec.rb337
-rw-r--r--spec/bundler/bundler/shared_helpers_spec.rb506
-rw-r--r--spec/bundler/bundler/source/git/git_proxy_spec.rb150
-rw-r--r--spec/bundler/bundler/source/git_spec.rb73
-rw-r--r--spec/bundler/bundler/source/path_spec.rb31
-rw-r--r--spec/bundler/bundler/source/rubygems/remote_spec.rb172
-rw-r--r--spec/bundler/bundler/source/rubygems_spec.rb47
-rw-r--r--spec/bundler/bundler/source_list_spec.rb459
-rw-r--r--spec/bundler/bundler/source_spec.rb174
-rw-r--r--spec/bundler/bundler/spec_set_spec.rb77
-rw-r--r--spec/bundler/bundler/stub_specification_spec.rb47
-rw-r--r--spec/bundler/bundler/ui/shell_spec.rb60
-rw-r--r--spec/bundler/bundler/ui_spec.rb41
-rw-r--r--spec/bundler/bundler/uri_credentials_filter_spec.rb127
-rw-r--r--spec/bundler/bundler/worker_spec.rb69
-rw-r--r--spec/bundler/bundler/yaml_serializer_spec.rb194
-rw-r--r--spec/bundler/cache/cache_path_spec.rb32
-rw-r--r--spec/bundler/cache/gems_spec.rb327
-rw-r--r--spec/bundler/cache/git_spec.rb276
-rw-r--r--spec/bundler/cache/path_spec.rb169
-rw-r--r--spec/bundler/cache/platform_spec.rb49
-rw-r--r--spec/bundler/commands/add_spec.rb305
-rw-r--r--spec/bundler/commands/binstubs_spec.rb556
-rw-r--r--spec/bundler/commands/cache_spec.rb428
-rw-r--r--spec/bundler/commands/check_spec.rb554
-rw-r--r--spec/bundler/commands/clean_spec.rb916
-rw-r--r--spec/bundler/commands/config_spec.rb580
-rw-r--r--spec/bundler/commands/console_spec.rb141
-rw-r--r--spec/bundler/commands/doctor_spec.rb146
-rw-r--r--spec/bundler/commands/exec_spec.rb1254
-rw-r--r--spec/bundler/commands/fund_spec.rb82
-rw-r--r--spec/bundler/commands/help_spec.rb90
-rw-r--r--spec/bundler/commands/info_spec.rb249
-rw-r--r--spec/bundler/commands/init_spec.rb207
-rw-r--r--spec/bundler/commands/inject_spec.rb117
-rw-r--r--spec/bundler/commands/install_spec.rb1106
-rw-r--r--spec/bundler/commands/issue_spec.rb16
-rw-r--r--spec/bundler/commands/licenses_spec.rb37
-rw-r--r--spec/bundler/commands/list_spec.rb195
-rw-r--r--spec/bundler/commands/lock_spec.rb1273
-rw-r--r--spec/bundler/commands/newgem_spec.rb1662
-rw-r--r--spec/bundler/commands/open_spec.rb176
-rw-r--r--spec/bundler/commands/outdated_spec.rb1368
-rw-r--r--spec/bundler/commands/platform_spec.rb1307
-rw-r--r--spec/bundler/commands/post_bundle_message_spec.rb205
-rw-r--r--spec/bundler/commands/pristine_spec.rb221
-rw-r--r--spec/bundler/commands/remove_spec.rb732
-rw-r--r--spec/bundler/commands/show_spec.rb224
-rw-r--r--spec/bundler/commands/update_spec.rb1715
-rw-r--r--spec/bundler/commands/version_spec.rb47
-rw-r--r--spec/bundler/commands/viz_spec.rb144
-rw-r--r--spec/bundler/install/allow_offline_install_spec.rb99
-rw-r--r--spec/bundler/install/binstubs_spec.rb49
-rw-r--r--spec/bundler/install/bundler_spec.rb268
-rw-r--r--spec/bundler/install/deploy_spec.rb550
-rw-r--r--spec/bundler/install/failure_spec.rb51
-rw-r--r--spec/bundler/install/gemfile/eval_gemfile_spec.rb122
-rw-r--r--spec/bundler/install/gemfile/force_ruby_platform_spec.rb118
-rw-r--r--spec/bundler/install/gemfile/gemspec_spec.rb697
-rw-r--r--spec/bundler/install/gemfile/git_spec.rb1630
-rw-r--r--spec/bundler/install/gemfile/groups_spec.rb403
-rw-r--r--spec/bundler/install/gemfile/install_if_spec.rb44
-rw-r--r--spec/bundler/install/gemfile/lockfile_spec.rb48
-rw-r--r--spec/bundler/install/gemfile/path_spec.rb984
-rw-r--r--spec/bundler/install/gemfile/platform_spec.rb618
-rw-r--r--spec/bundler/install/gemfile/ruby_spec.rb123
-rw-r--r--spec/bundler/install/gemfile/sources_spec.rb1672
-rw-r--r--spec/bundler/install/gemfile/specific_platform_spec.rb971
-rw-r--r--spec/bundler/install/gemfile_spec.rb118
-rw-r--r--spec/bundler/install/gems/compact_index_spec.rb954
-rw-r--r--spec/bundler/install/gems/dependency_api_spec.rb759
-rw-r--r--spec/bundler/install/gems/env_spec.rb107
-rw-r--r--spec/bundler/install/gems/flex_spec.rb370
-rw-r--r--spec/bundler/install/gems/fund_spec.rb164
-rw-r--r--spec/bundler/install/gems/mirror_spec.rb39
-rw-r--r--spec/bundler/install/gems/native_extensions_spec.rb188
-rw-r--r--spec/bundler/install/gems/post_install_spec.rb150
-rw-r--r--spec/bundler/install/gems/resolving_spec.rb600
-rw-r--r--spec/bundler/install/gems/standalone_spec.rb515
-rw-r--r--spec/bundler/install/gems/win32_spec.rb25
-rw-r--r--spec/bundler/install/gemspecs_spec.rb161
-rw-r--r--spec/bundler/install/git_spec.rb174
-rw-r--r--spec/bundler/install/global_cache_spec.rb254
-rw-r--r--spec/bundler/install/path_spec.rb226
-rw-r--r--spec/bundler/install/prereleases_spec.rb54
-rw-r--r--spec/bundler/install/process_lock_spec.rb57
-rw-r--r--spec/bundler/install/redownload_spec.rb91
-rw-r--r--spec/bundler/install/security_policy_spec.rb72
-rw-r--r--spec/bundler/install/yanked_spec.rb233
-rw-r--r--spec/bundler/lock/git_spec.rb162
-rw-r--r--spec/bundler/lock/lockfile_spec.rb1608
-rw-r--r--spec/bundler/other/cli_dispatch_spec.rb20
-rw-r--r--spec/bundler/other/ext_spec.rb65
-rw-r--r--spec/bundler/other/major_deprecation_spec.rb649
-rw-r--r--spec/bundler/plugins/command_spec.rb78
-rw-r--r--spec/bundler/plugins/hook_spec.rb109
-rw-r--r--spec/bundler/plugins/install_spec.rb381
-rw-r--r--spec/bundler/plugins/list_spec.rb60
-rw-r--r--spec/bundler/plugins/source/example_spec.rb452
-rw-r--r--spec/bundler/plugins/source_spec.rb111
-rw-r--r--spec/bundler/plugins/uninstall_spec.rb49
-rw-r--r--spec/bundler/quality_es_spec.rb61
-rw-r--r--spec/bundler/quality_spec.rb245
-rw-r--r--spec/bundler/realworld/dependency_api_spec.rb46
-rw-r--r--spec/bundler/realworld/double_check_spec.rb40
-rw-r--r--spec/bundler/realworld/edgecases_spec.rb516
-rw-r--r--spec/bundler/realworld/ffi_spec.rb57
-rw-r--r--spec/bundler/realworld/fixtures/warbler/.gitignore1
-rw-r--r--spec/bundler/realworld/fixtures/warbler/Gemfile7
-rw-r--r--spec/bundler/realworld/fixtures/warbler/Gemfile.lock30
-rw-r--r--spec/bundler/realworld/fixtures/warbler/bin/warbler-example.rb3
-rw-r--r--spec/bundler/realworld/fixtures/warbler/demo/demo.gemspec10
-rw-r--r--spec/bundler/realworld/gemfile_source_header_spec.rb53
-rw-r--r--spec/bundler/realworld/git_spec.rb11
-rw-r--r--spec/bundler/realworld/mirror_probe_spec.rb131
-rw-r--r--spec/bundler/realworld/parallel_spec.rb66
-rw-r--r--spec/bundler/realworld/slow_perf_spec.rb33
-rw-r--r--spec/bundler/resolver/basic_spec.rb350
-rw-r--r--spec/bundler/resolver/platform_spec.rb427
-rw-r--r--spec/bundler/runtime/executable_spec.rb169
-rw-r--r--spec/bundler/runtime/gem_tasks_spec.rb106
-rw-r--r--spec/bundler/runtime/inline_spec.rb626
-rw-r--r--spec/bundler/runtime/load_spec.rb113
-rw-r--r--spec/bundler/runtime/platform_spec.rb464
-rw-r--r--spec/bundler/runtime/require_spec.rb465
-rw-r--r--spec/bundler/runtime/self_management_spec.rb126
-rw-r--r--spec/bundler/runtime/setup_spec.rb1557
-rw-r--r--spec/bundler/runtime/with_unbundled_env_spec.rb302
-rw-r--r--spec/bundler/spec_helper.rb119
-rw-r--r--spec/bundler/support/artifice/compact_index.rb6
-rw-r--r--spec/bundler/support/artifice/compact_index_api_missing.rb13
-rw-r--r--spec/bundler/support/artifice/compact_index_basic_authentication.rb15
-rw-r--r--spec/bundler/support/artifice/compact_index_checksum_mismatch.rb16
-rw-r--r--spec/bundler/support/artifice/compact_index_concurrent_download.rb32
-rw-r--r--spec/bundler/support/artifice/compact_index_creds_diff_host.rb39
-rw-r--r--spec/bundler/support/artifice/compact_index_extra.rb6
-rw-r--r--spec/bundler/support/artifice/compact_index_extra_api.rb6
-rw-r--r--spec/bundler/support/artifice/compact_index_extra_api_missing.rb17
-rw-r--r--spec/bundler/support/artifice/compact_index_extra_missing.rb17
-rw-r--r--spec/bundler/support/artifice/compact_index_forbidden.rb13
-rw-r--r--spec/bundler/support/artifice/compact_index_host_redirect.rb21
-rw-r--r--spec/bundler/support/artifice/compact_index_no_gem.rb13
-rw-r--r--spec/bundler/support/artifice/compact_index_partial_update.rb38
-rw-r--r--spec/bundler/support/artifice/compact_index_partial_update_no_etag_not_incremental.rb40
-rw-r--r--spec/bundler/support/artifice/compact_index_precompiled_before.rb25
-rw-r--r--spec/bundler/support/artifice/compact_index_range_not_satisfiable.rb34
-rw-r--r--spec/bundler/support/artifice/compact_index_rate_limited.rb48
-rw-r--r--spec/bundler/support/artifice/compact_index_redirects.rb21
-rw-r--r--spec/bundler/support/artifice/compact_index_strict_basic_authentication.rb20
-rw-r--r--spec/bundler/support/artifice/compact_index_wrong_dependencies.rb17
-rw-r--r--spec/bundler/support/artifice/compact_index_wrong_gem_checksum.rb20
-rw-r--r--spec/bundler/support/artifice/endpoint.rb6
-rw-r--r--spec/bundler/support/artifice/endpoint_500.rb17
-rw-r--r--spec/bundler/support/artifice/endpoint_api_forbidden.rb13
-rw-r--r--spec/bundler/support/artifice/endpoint_basic_authentication.rb15
-rw-r--r--spec/bundler/support/artifice/endpoint_creds_diff_host.rb39
-rw-r--r--spec/bundler/support/artifice/endpoint_extra.rb33
-rw-r--r--spec/bundler/support/artifice/endpoint_extra_api.rb34
-rw-r--r--spec/bundler/support/artifice/endpoint_extra_missing.rb17
-rw-r--r--spec/bundler/support/artifice/endpoint_fallback.rb19
-rw-r--r--spec/bundler/support/artifice/endpoint_host_redirect.rb17
-rw-r--r--spec/bundler/support/artifice/endpoint_marshal_fail.rb6
-rw-r--r--spec/bundler/support/artifice/endpoint_marshal_fail_basic_authentication.rb15
-rw-r--r--spec/bundler/support/artifice/endpoint_mirror_source.rb17
-rw-r--r--spec/bundler/support/artifice/endpoint_redirect.rb17
-rw-r--r--spec/bundler/support/artifice/endpoint_strict_basic_authentication.rb20
-rw-r--r--spec/bundler/support/artifice/endpoint_timeout.rb15
-rw-r--r--spec/bundler/support/artifice/fail.rb29
-rw-r--r--spec/bundler/support/artifice/helpers/artifice.rb30
-rw-r--r--spec/bundler/support/artifice/helpers/compact_index.rb118
-rw-r--r--spec/bundler/support/artifice/helpers/compact_index_extra.rb33
-rw-r--r--spec/bundler/support/artifice/helpers/compact_index_extra_api.rb48
-rw-r--r--spec/bundler/support/artifice/helpers/endpoint.rb112
-rw-r--r--spec/bundler/support/artifice/helpers/endpoint_extra.rb29
-rw-r--r--spec/bundler/support/artifice/helpers/endpoint_fallback.rb15
-rw-r--r--spec/bundler/support/artifice/helpers/endpoint_marshal_fail.rb9
-rw-r--r--spec/bundler/support/artifice/helpers/rack_request.rb100
-rw-r--r--spec/bundler/support/artifice/used_cassettes.txt20908
-rw-r--r--spec/bundler/support/artifice/vcr.rb152
-rw-r--r--spec/bundler/support/artifice/windows.rb45
-rw-r--r--spec/bundler/support/build_metadata.rb49
-rw-r--r--spec/bundler/support/builders.rb677
-rw-r--r--spec/bundler/support/bundle.rb10
-rw-r--r--spec/bundler/support/command_execution.rb33
-rw-r--r--spec/bundler/support/filters.rb38
-rw-r--r--spec/bundler/support/hax.rb53
-rw-r--r--spec/bundler/support/helpers.rb597
-rw-r--r--spec/bundler/support/indexes.rb419
-rw-r--r--spec/bundler/support/matchers.rb237
-rw-r--r--spec/bundler/support/path.rb311
-rw-r--r--spec/bundler/support/permissions.rb12
-rw-r--r--spec/bundler/support/platforms.rb106
-rw-r--r--spec/bundler/support/rubygems_ext.rb177
-rw-r--r--spec/bundler/support/rubygems_version_manager.rb120
-rw-r--r--spec/bundler/support/silent_logger.rb10
-rw-r--r--spec/bundler/support/switch_rubygems.rb4
-rw-r--r--spec/bundler/support/the_bundle.rb35
-rw-r--r--spec/bundler/update/gemfile_spec.rb47
-rw-r--r--spec/bundler/update/gems/fund_spec.rb50
-rw-r--r--spec/bundler/update/gems/post_install_spec.rb76
-rw-r--r--spec/bundler/update/git_spec.rb336
-rw-r--r--spec/bundler/update/path_spec.rb19
-rw-r--r--spec/bundler/update/redownload_spec.rb34
-rw-r--r--spec/default.mspec67
-rw-r--r--spec/mspec/.rspec1
-rw-r--r--spec/mspec/Gemfile4
-rw-r--r--spec/mspec/Gemfile.lock26
-rw-r--r--spec/mspec/LICENSE22
-rw-r--r--spec/mspec/README.md84
-rw-r--r--spec/mspec/Rakefile6
-rwxr-xr-xspec/mspec/bin/mkspec7
-rwxr-xr-xspec/mspec/bin/mkspec.bat1
-rwxr-xr-xspec/mspec/bin/mspec7
-rwxr-xr-xspec/mspec/bin/mspec-ci7
-rwxr-xr-xspec/mspec/bin/mspec-ci.bat1
-rwxr-xr-xspec/mspec/bin/mspec-run7
-rwxr-xr-xspec/mspec/bin/mspec-run.bat1
-rwxr-xr-xspec/mspec/bin/mspec-tag7
-rwxr-xr-xspec/mspec/bin/mspec-tag.bat1
-rwxr-xr-xspec/mspec/bin/mspec.bat1
-rw-r--r--spec/mspec/lib/mspec.rb8
-rwxr-xr-xspec/mspec/lib/mspec/commands/mkspec.rb145
-rw-r--r--spec/mspec/lib/mspec/commands/mspec-ci.rb79
-rw-r--r--spec/mspec/lib/mspec/commands/mspec-run.rb87
-rw-r--r--spec/mspec/lib/mspec/commands/mspec-tag.rb133
-rwxr-xr-xspec/mspec/lib/mspec/commands/mspec.rb120
-rw-r--r--spec/mspec/lib/mspec/expectations.rb2
-rw-r--r--spec/mspec/lib/mspec/expectations/expectations.rb39
-rw-r--r--spec/mspec/lib/mspec/expectations/should.rb41
-rw-r--r--spec/mspec/lib/mspec/guards.rb11
-rw-r--r--spec/mspec/lib/mspec/guards/block_device.rb16
-rw-r--r--spec/mspec/lib/mspec/guards/bug.rb29
-rw-r--r--spec/mspec/lib/mspec/guards/conflict.rb23
-rw-r--r--spec/mspec/lib/mspec/guards/endian.rb25
-rw-r--r--spec/mspec/lib/mspec/guards/feature.rb45
-rw-r--r--spec/mspec/lib/mspec/guards/guard.rb141
-rw-r--r--spec/mspec/lib/mspec/guards/platform.rb104
-rw-r--r--spec/mspec/lib/mspec/guards/quarantine.rb11
-rw-r--r--spec/mspec/lib/mspec/guards/superuser.rb25
-rw-r--r--spec/mspec/lib/mspec/guards/support.rb14
-rw-r--r--spec/mspec/lib/mspec/guards/version.rb72
-rw-r--r--spec/mspec/lib/mspec/helpers.rb13
-rw-r--r--spec/mspec/lib/mspec/helpers/argf.rb35
-rw-r--r--spec/mspec/lib/mspec/helpers/argv.rb44
-rw-r--r--spec/mspec/lib/mspec/helpers/datetime.rb48
-rw-r--r--spec/mspec/lib/mspec/helpers/fixture.rb24
-rw-r--r--spec/mspec/lib/mspec/helpers/flunk.rb3
-rw-r--r--spec/mspec/lib/mspec/helpers/fs.rb64
-rw-r--r--spec/mspec/lib/mspec/helpers/io.rb87
-rw-r--r--spec/mspec/lib/mspec/helpers/mock_to_path.rb6
-rw-r--r--spec/mspec/lib/mspec/helpers/numeric.rb80
-rw-r--r--spec/mspec/lib/mspec/helpers/ruby_exe.rb189
-rw-r--r--spec/mspec/lib/mspec/helpers/scratch.rb21
-rw-r--r--spec/mspec/lib/mspec/helpers/tmp.rb48
-rw-r--r--spec/mspec/lib/mspec/helpers/warning.rb21
-rw-r--r--spec/mspec/lib/mspec/matchers.rb37
-rw-r--r--spec/mspec/lib/mspec/matchers/base.rb79
-rw-r--r--spec/mspec/lib/mspec/matchers/be_an_instance_of.rb26
-rw-r--r--spec/mspec/lib/mspec/matchers/be_ancestor_of.rb24
-rw-r--r--spec/mspec/lib/mspec/matchers/be_close.rb29
-rw-r--r--spec/mspec/lib/mspec/matchers/be_computed_by.rb37
-rw-r--r--spec/mspec/lib/mspec/matchers/be_empty.rb20
-rw-r--r--spec/mspec/lib/mspec/matchers/be_false.rb20
-rw-r--r--spec/mspec/lib/mspec/matchers/be_kind_of.rb24
-rw-r--r--spec/mspec/lib/mspec/matchers/be_nan.rb20
-rw-r--r--spec/mspec/lib/mspec/matchers/be_nil.rb20
-rw-r--r--spec/mspec/lib/mspec/matchers/be_true.rb20
-rw-r--r--spec/mspec/lib/mspec/matchers/be_true_or_false.rb20
-rw-r--r--spec/mspec/lib/mspec/matchers/block_caller.rb37
-rw-r--r--spec/mspec/lib/mspec/matchers/complain.rb71
-rw-r--r--spec/mspec/lib/mspec/matchers/eql.rb26
-rw-r--r--spec/mspec/lib/mspec/matchers/equal.rb26
-rw-r--r--spec/mspec/lib/mspec/matchers/equal_element.rb78
-rw-r--r--spec/mspec/lib/mspec/matchers/have_class_variable.rb12
-rw-r--r--spec/mspec/lib/mspec/matchers/have_constant.rb12
-rw-r--r--spec/mspec/lib/mspec/matchers/have_instance_method.rb24
-rw-r--r--spec/mspec/lib/mspec/matchers/have_instance_variable.rb12
-rw-r--r--spec/mspec/lib/mspec/matchers/have_method.rb24
-rw-r--r--spec/mspec/lib/mspec/matchers/have_private_instance_method.rb24
-rw-r--r--spec/mspec/lib/mspec/matchers/have_private_method.rb24
-rw-r--r--spec/mspec/lib/mspec/matchers/have_protected_instance_method.rb24
-rw-r--r--spec/mspec/lib/mspec/matchers/have_public_instance_method.rb24
-rw-r--r--spec/mspec/lib/mspec/matchers/have_singleton_method.rb24
-rw-r--r--spec/mspec/lib/mspec/matchers/include.rb31
-rw-r--r--spec/mspec/lib/mspec/matchers/include_any_of.rb29
-rw-r--r--spec/mspec/lib/mspec/matchers/infinity.rb28
-rw-r--r--spec/mspec/lib/mspec/matchers/match_yaml.rb50
-rw-r--r--spec/mspec/lib/mspec/matchers/method.rb10
-rw-r--r--spec/mspec/lib/mspec/matchers/output.rb67
-rw-r--r--spec/mspec/lib/mspec/matchers/output_to_fd.rb71
-rw-r--r--spec/mspec/lib/mspec/matchers/raise_error.rb93
-rw-r--r--spec/mspec/lib/mspec/matchers/respond_to.rb24
-rw-r--r--spec/mspec/lib/mspec/matchers/signed_zero.rb28
-rw-r--r--spec/mspec/lib/mspec/matchers/skip.rb5
-rw-r--r--spec/mspec/lib/mspec/matchers/variable.rb24
-rw-r--r--spec/mspec/lib/mspec/mocks.rb3
-rw-r--r--spec/mspec/lib/mspec/mocks/mock.rb212
-rw-r--r--spec/mspec/lib/mspec/mocks/object.rb28
-rw-r--r--spec/mspec/lib/mspec/mocks/proxy.rb186
-rw-r--r--spec/mspec/lib/mspec/runner.rb12
-rw-r--r--spec/mspec/lib/mspec/runner/actions.rb6
-rw-r--r--spec/mspec/lib/mspec/runner/actions/constants_leak_checker.rb84
-rw-r--r--spec/mspec/lib/mspec/runner/actions/filter.rb40
-rw-r--r--spec/mspec/lib/mspec/runner/actions/leakchecker.rb319
-rw-r--r--spec/mspec/lib/mspec/runner/actions/profile.rb60
-rw-r--r--spec/mspec/lib/mspec/runner/actions/tag.rb133
-rw-r--r--spec/mspec/lib/mspec/runner/actions/taglist.rb56
-rw-r--r--spec/mspec/lib/mspec/runner/actions/tagpurge.rb56
-rw-r--r--spec/mspec/lib/mspec/runner/actions/tally.rb133
-rw-r--r--spec/mspec/lib/mspec/runner/actions/timeout.rb93
-rw-r--r--spec/mspec/lib/mspec/runner/actions/timer.rb22
-rw-r--r--spec/mspec/lib/mspec/runner/context.rb237
-rw-r--r--spec/mspec/lib/mspec/runner/evaluate.rb54
-rw-r--r--spec/mspec/lib/mspec/runner/example.rb34
-rw-r--r--spec/mspec/lib/mspec/runner/exception.rb54
-rw-r--r--spec/mspec/lib/mspec/runner/filters.rb4
-rw-r--r--spec/mspec/lib/mspec/runner/filters/match.rb18
-rw-r--r--spec/mspec/lib/mspec/runner/filters/profile.rb54
-rw-r--r--spec/mspec/lib/mspec/runner/filters/regexp.rb23
-rw-r--r--spec/mspec/lib/mspec/runner/filters/tag.rb29
-rw-r--r--spec/mspec/lib/mspec/runner/formatters.rb13
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/base.rb144
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/describe.rb23
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/dotted.rb23
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/file.rb24
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/html.rb81
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/junit.rb87
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/method.rb95
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/multi.rb47
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/profile.rb18
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/specdoc.rb41
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/spinner.rb111
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/stats.rb57
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/summary.rb4
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/unit.rb20
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/yaml.rb38
-rw-r--r--spec/mspec/lib/mspec/runner/mspec.rb422
-rw-r--r--spec/mspec/lib/mspec/runner/object.rb26
-rw-r--r--spec/mspec/lib/mspec/runner/parallel.rb98
-rw-r--r--spec/mspec/lib/mspec/runner/shared.rb14
-rw-r--r--spec/mspec/lib/mspec/runner/tag.rb38
-rw-r--r--spec/mspec/lib/mspec/utils/deprecate.rb6
-rw-r--r--spec/mspec/lib/mspec/utils/format.rb24
-rw-r--r--spec/mspec/lib/mspec/utils/name_map.rb126
-rw-r--r--spec/mspec/lib/mspec/utils/options.rb504
-rw-r--r--spec/mspec/lib/mspec/utils/script.rb299
-rw-r--r--spec/mspec/lib/mspec/utils/version.rb52
-rw-r--r--spec/mspec/lib/mspec/utils/warnings.rb53
-rw-r--r--spec/mspec/lib/mspec/version.rb5
-rw-r--r--spec/mspec/spec/commands/fixtures/four.txt0
-rw-r--r--spec/mspec/spec/commands/fixtures/level2/three_spec.rb1
-rw-r--r--spec/mspec/spec/commands/fixtures/one_spec.rb1
-rw-r--r--spec/mspec/spec/commands/fixtures/three.rb1
-rw-r--r--spec/mspec/spec/commands/fixtures/two_spec.rb1
-rw-r--r--spec/mspec/spec/commands/mkspec_spec.rb363
-rw-r--r--spec/mspec/spec/commands/mspec_ci_spec.rb150
-rw-r--r--spec/mspec/spec/commands/mspec_run_spec.rb173
-rw-r--r--spec/mspec/spec/commands/mspec_spec.rb207
-rw-r--r--spec/mspec/spec/commands/mspec_tag_spec.rb414
-rw-r--r--spec/mspec/spec/expectations/expectations_spec.rb29
-rw-r--r--spec/mspec/spec/expectations/should_spec.rb61
-rw-r--r--spec/mspec/spec/fixtures/a_spec.rb15
-rw-r--r--spec/mspec/spec/fixtures/b_spec.rb7
-rw-r--r--spec/mspec/spec/fixtures/chatty_spec.rb8
-rw-r--r--spec/mspec/spec/fixtures/config.mspec8
-rw-r--r--spec/mspec/spec/fixtures/die_spec.rb7
-rwxr-xr-xspec/mspec/spec/fixtures/my_ruby4
-rw-r--r--spec/mspec/spec/fixtures/object_methods_spec.rb8
-rw-r--r--spec/mspec/spec/fixtures/print_interpreter_spec.rb4
-rw-r--r--spec/mspec/spec/fixtures/should.rb75
-rw-r--r--spec/mspec/spec/fixtures/tagging_spec.rb16
-rw-r--r--spec/mspec/spec/guards/block_device_spec.rb46
-rw-r--r--spec/mspec/spec/guards/bug_spec.rb151
-rw-r--r--spec/mspec/spec/guards/conflict_spec.rb53
-rw-r--r--spec/mspec/spec/guards/endian_spec.rb55
-rw-r--r--spec/mspec/spec/guards/feature_spec.rb120
-rw-r--r--spec/mspec/spec/guards/guard_spec.rb421
-rw-r--r--spec/mspec/spec/guards/platform_spec.rb337
-rw-r--r--spec/mspec/spec/guards/quarantine_spec.rb35
-rw-r--r--spec/mspec/spec/guards/superuser_spec.rb35
-rw-r--r--spec/mspec/spec/guards/support_spec.rb54
-rw-r--r--spec/mspec/spec/guards/user_spec.rb20
-rw-r--r--spec/mspec/spec/guards/version_spec.rb112
-rw-r--r--spec/mspec/spec/helpers/argf_spec.rb37
-rw-r--r--spec/mspec/spec/helpers/argv_spec.rb27
-rw-r--r--spec/mspec/spec/helpers/datetime_spec.rb44
-rw-r--r--spec/mspec/spec/helpers/fixture_spec.rb25
-rw-r--r--spec/mspec/spec/helpers/flunk_spec.rb20
-rw-r--r--spec/mspec/spec/helpers/fs_spec.rb195
-rw-r--r--spec/mspec/spec/helpers/io_spec.rb136
-rw-r--r--spec/mspec/spec/helpers/mock_to_path_spec.rb23
-rw-r--r--spec/mspec/spec/helpers/numeric_spec.rb31
-rw-r--r--spec/mspec/spec/helpers/ruby_exe_spec.rb256
-rw-r--r--spec/mspec/spec/helpers/scratch_spec.rb24
-rw-r--r--spec/mspec/spec/helpers/suppress_warning_spec.rb19
-rw-r--r--spec/mspec/spec/helpers/tmp_spec.rb27
-rw-r--r--spec/mspec/spec/integration/interpreter_spec.rb18
-rw-r--r--spec/mspec/spec/integration/object_methods_spec.rb18
-rw-r--r--spec/mspec/spec/integration/run_spec.rb71
-rw-r--r--spec/mspec/spec/integration/tag_spec.rb59
-rw-r--r--spec/mspec/spec/matchers/base_spec.rb228
-rw-r--r--spec/mspec/spec/matchers/be_an_instance_of_spec.rb50
-rw-r--r--spec/mspec/spec/matchers/be_ancestor_of_spec.rb28
-rw-r--r--spec/mspec/spec/matchers/be_close_spec.rb48
-rw-r--r--spec/mspec/spec/matchers/be_computed_by_spec.rb42
-rw-r--r--spec/mspec/spec/matchers/be_empty_spec.rb26
-rw-r--r--spec/mspec/spec/matchers/be_false_spec.rb28
-rw-r--r--spec/mspec/spec/matchers/be_kind_of_spec.rb31
-rw-r--r--spec/mspec/spec/matchers/be_nan_spec.rb28
-rw-r--r--spec/mspec/spec/matchers/be_nil_spec.rb27
-rw-r--r--spec/mspec/spec/matchers/be_true_or_false_spec.rb19
-rw-r--r--spec/mspec/spec/matchers/be_true_spec.rb28
-rw-r--r--spec/mspec/spec/matchers/block_caller_spec.rb13
-rw-r--r--spec/mspec/spec/matchers/complain_spec.rb102
-rw-r--r--spec/mspec/spec/matchers/eql_spec.rb33
-rw-r--r--spec/mspec/spec/matchers/equal_element_spec.rb75
-rw-r--r--spec/mspec/spec/matchers/equal_spec.rb32
-rw-r--r--spec/mspec/spec/matchers/have_class_variable_spec.rb49
-rw-r--r--spec/mspec/spec/matchers/have_constant_spec.rb37
-rw-r--r--spec/mspec/spec/matchers/have_instance_method_spec.rb53
-rw-r--r--spec/mspec/spec/matchers/have_instance_variable_spec.rb50
-rw-r--r--spec/mspec/spec/matchers/have_method_spec.rb55
-rw-r--r--spec/mspec/spec/matchers/have_private_instance_method_spec.rb57
-rw-r--r--spec/mspec/spec/matchers/have_private_method_spec.rb44
-rw-r--r--spec/mspec/spec/matchers/have_protected_instance_method_spec.rb57
-rw-r--r--spec/mspec/spec/matchers/have_public_instance_method_spec.rb53
-rw-r--r--spec/mspec/spec/matchers/have_singleton_method_spec.rb45
-rw-r--r--spec/mspec/spec/matchers/include_any_of_spec.rb42
-rw-r--r--spec/mspec/spec/matchers/include_spec.rb37
-rw-r--r--spec/mspec/spec/matchers/infinity_spec.rb34
-rw-r--r--spec/mspec/spec/matchers/match_yaml_spec.rb39
-rw-r--r--spec/mspec/spec/matchers/output_spec.rb84
-rw-r--r--spec/mspec/spec/matchers/output_to_fd_spec.rb44
-rw-r--r--spec/mspec/spec/matchers/raise_error_spec.rb183
-rw-r--r--spec/mspec/spec/matchers/respond_to_spec.rb33
-rw-r--r--spec/mspec/spec/matchers/signed_zero_spec.rb32
-rw-r--r--spec/mspec/spec/mocks/mock_spec.rb530
-rw-r--r--spec/mspec/spec/mocks/proxy_spec.rb405
-rw-r--r--spec/mspec/spec/runner/actions/filter_spec.rb84
-rw-r--r--spec/mspec/spec/runner/actions/tag_spec.rb313
-rw-r--r--spec/mspec/spec/runner/actions/taglist_spec.rb152
-rw-r--r--spec/mspec/spec/runner/actions/tagpurge_spec.rb154
-rw-r--r--spec/mspec/spec/runner/actions/tally_spec.rb355
-rw-r--r--spec/mspec/spec/runner/actions/timer_spec.rb44
-rw-r--r--spec/mspec/spec/runner/context_spec.rb1028
-rw-r--r--spec/mspec/spec/runner/example_spec.rb117
-rw-r--r--spec/mspec/spec/runner/exception_spec.rb146
-rw-r--r--spec/mspec/spec/runner/filters/a.yaml4
-rw-r--r--spec/mspec/spec/runner/filters/b.yaml11
-rw-r--r--spec/mspec/spec/runner/filters/match_spec.rb34
-rw-r--r--spec/mspec/spec/runner/filters/profile_spec.rb117
-rw-r--r--spec/mspec/spec/runner/filters/regexp_spec.rb31
-rw-r--r--spec/mspec/spec/runner/filters/tag_spec.rb92
-rw-r--r--spec/mspec/spec/runner/formatters/describe_spec.rb67
-rw-r--r--spec/mspec/spec/runner/formatters/dotted_spec.rb284
-rw-r--r--spec/mspec/spec/runner/formatters/file_spec.rb84
-rw-r--r--spec/mspec/spec/runner/formatters/html_spec.rb220
-rw-r--r--spec/mspec/spec/runner/formatters/junit_spec.rb159
-rw-r--r--spec/mspec/spec/runner/formatters/method_spec.rb177
-rw-r--r--spec/mspec/spec/runner/formatters/multi_spec.rb68
-rw-r--r--spec/mspec/spec/runner/formatters/specdoc_spec.rb106
-rw-r--r--spec/mspec/spec/runner/formatters/spinner_spec.rb83
-rw-r--r--spec/mspec/spec/runner/formatters/summary_spec.rb26
-rw-r--r--spec/mspec/spec/runner/formatters/unit_spec.rb73
-rw-r--r--spec/mspec/spec/runner/formatters/yaml_spec.rb134
-rw-r--r--spec/mspec/spec/runner/mspec_spec.rb597
-rw-r--r--spec/mspec/spec/runner/shared_spec.rb90
-rw-r--r--spec/mspec/spec/runner/tag_spec.rb123
-rw-r--r--spec/mspec/spec/runner/tags.txt4
-rw-r--r--spec/mspec/spec/spec_helper.rb68
-rw-r--r--spec/mspec/spec/utils/deprecate_spec.rb17
-rw-r--r--spec/mspec/spec/utils/name_map_spec.rb175
-rw-r--r--spec/mspec/spec/utils/options_spec.rb1302
-rw-r--r--spec/mspec/spec/utils/script_spec.rb470
-rw-r--r--spec/mspec/spec/utils/version_spec.rb45
-rwxr-xr-xspec/mspec/tool/find.rb10
-rwxr-xr-xspec/mspec/tool/pull-latest-mspec-spec26
-rw-r--r--spec/mspec/tool/remove_old_guards.rb70
-rw-r--r--spec/mspec/tool/sync/.gitignore4
-rw-r--r--spec/mspec/tool/sync/sync-rubyspec.rb254
-rwxr-xr-xspec/mspec/tool/tag_from_output.rb63
-rwxr-xr-xspec/mspec/tool/wrap_with_guard.rb28
-rw-r--r--spec/ruby/.gitignore5
-rw-r--r--spec/ruby/.mspec.constants234
-rw-r--r--spec/ruby/.rubocop.yml185
-rw-r--r--spec/ruby/.rubocop_todo.yml137
-rw-r--r--spec/ruby/CONTRIBUTING.md295
-rw-r--r--spec/ruby/LICENSE22
-rw-r--r--spec/ruby/README.md157
-rw-r--r--spec/ruby/TODO8
-rw-r--r--spec/ruby/command_line/backtrace_limit_spec.rb48
-rw-r--r--spec/ruby/command_line/dash_a_spec.rb19
-rw-r--r--spec/ruby/command_line/dash_c_spec.rb13
-rw-r--r--spec/ruby/command_line/dash_d_spec.rb22
-rw-r--r--spec/ruby/command_line/dash_e_spec.rb41
-rw-r--r--spec/ruby/command_line/dash_encoding_spec.rb36
-rw-r--r--spec/ruby/command_line/dash_external_encoding_spec.rb15
-rw-r--r--spec/ruby/command_line/dash_internal_encoding_spec.rb15
-rw-r--r--spec/ruby/command_line/dash_l_spec.rb31
-rw-r--r--spec/ruby/command_line/dash_n_spec.rb36
-rw-r--r--spec/ruby/command_line/dash_p_spec.rb19
-rw-r--r--spec/ruby/command_line/dash_r_spec.rb28
-rw-r--r--spec/ruby/command_line/dash_s_spec.rb52
-rw-r--r--spec/ruby/command_line/dash_upper_c_spec.rb6
-rw-r--r--spec/ruby/command_line/dash_upper_e_spec.rb37
-rw-r--r--spec/ruby/command_line/dash_upper_f_spec.rb13
-rw-r--r--spec/ruby/command_line/dash_upper_i_spec.rb51
-rw-r--r--spec/ruby/command_line/dash_upper_k_spec.rb65
-rw-r--r--spec/ruby/command_line/dash_upper_s_spec.rb29
-rw-r--r--spec/ruby/command_line/dash_upper_u_spec.rb45
-rw-r--r--spec/ruby/command_line/dash_upper_w_spec.rb44
-rw-r--r--spec/ruby/command_line/dash_upper_x_spec.rb6
-rw-r--r--spec/ruby/command_line/dash_v_spec.rb13
-rw-r--r--spec/ruby/command_line/dash_w_spec.rb10
-rw-r--r--spec/ruby/command_line/dash_x_spec.rb21
-rw-r--r--spec/ruby/command_line/error_message_spec.rb11
-rw-r--r--spec/ruby/command_line/feature_spec.rb71
-rw-r--r--spec/ruby/command_line/fixtures/backtrace.rb35
-rw-r--r--spec/ruby/command_line/fixtures/bad_syntax.rb1
-rw-r--r--spec/ruby/command_line/fixtures/bin/bad_embedded_ruby.txt3
-rw-r--r--spec/ruby/command_line/fixtures/bin/dash_s_fail1
-rw-r--r--spec/ruby/command_line/fixtures/bin/embedded_ruby.txt3
-rw-r--r--spec/ruby/command_line/fixtures/bin/hybrid_launcher.sh4
-rwxr-xr-xspec/ruby/command_line/fixtures/bin/launcher.rb2
-rw-r--r--spec/ruby/command_line/fixtures/change_directory_script.rb1
-rw-r--r--spec/ruby/command_line/fixtures/conditional_range.txt5
-rw-r--r--spec/ruby/command_line/fixtures/dash_s_script.rb12
-rw-r--r--spec/ruby/command_line/fixtures/debug.rb10
-rw-r--r--spec/ruby/command_line/fixtures/debug_info.rb11
-rw-r--r--spec/ruby/command_line/fixtures/freeze_flag_across_files.rb3
-rw-r--r--spec/ruby/command_line/fixtures/freeze_flag_across_files_diff_enc.rb3
-rw-r--r--spec/ruby/command_line/fixtures/freeze_flag_one_literal.rb2
-rw-r--r--spec/ruby/command_line/fixtures/freeze_flag_required.rb1
-rw-r--r--spec/ruby/command_line/fixtures/freeze_flag_required_diff_enc.rbbin0 -> 121 bytes-rw-r--r--spec/ruby/command_line/fixtures/freeze_flag_two_literals.rb1
-rw-r--r--spec/ruby/command_line/fixtures/full_names.txt3
-rw-r--r--spec/ruby/command_line/fixtures/loadpath.rb1
-rw-r--r--spec/ruby/command_line/fixtures/names.txt3
-rw-r--r--spec/ruby/command_line/fixtures/passwd_file.txt3
-rw-r--r--spec/ruby/command_line/fixtures/require.rb1
-rw-r--r--spec/ruby/command_line/fixtures/rubyopt.rb1
-rw-r--r--spec/ruby/command_line/fixtures/test_file.rb1
-rw-r--r--spec/ruby/command_line/fixtures/verbose.rb1
-rw-r--r--spec/ruby/command_line/frozen_strings_spec.rb29
-rw-r--r--spec/ruby/command_line/rubylib_spec.rb69
-rw-r--r--spec/ruby/command_line/rubyopt_spec.rb185
-rw-r--r--spec/ruby/command_line/shared/change_directory.rb21
-rw-r--r--spec/ruby/command_line/shared/verbose.rb9
-rw-r--r--spec/ruby/command_line/syntax_error_spec.rb13
-rw-r--r--spec/ruby/core/argf/argf_spec.rb11
-rw-r--r--spec/ruby/core/argf/argv_spec.rb19
-rw-r--r--spec/ruby/core/argf/binmode_spec.rb43
-rw-r--r--spec/ruby/core/argf/bytes_spec.rb16
-rw-r--r--spec/ruby/core/argf/chars_spec.rb16
-rw-r--r--spec/ruby/core/argf/close_spec.rb35
-rw-r--r--spec/ruby/core/argf/closed_spec.rb18
-rw-r--r--spec/ruby/core/argf/codepoints_spec.rb16
-rw-r--r--spec/ruby/core/argf/each_byte_spec.rb6
-rw-r--r--spec/ruby/core/argf/each_char_spec.rb6
-rw-r--r--spec/ruby/core/argf/each_codepoint_spec.rb6
-rw-r--r--spec/ruby/core/argf/each_line_spec.rb6
-rw-r--r--spec/ruby/core/argf/each_spec.rb6
-rw-r--r--spec/ruby/core/argf/eof_spec.rb10
-rw-r--r--spec/ruby/core/argf/file_spec.rb21
-rw-r--r--spec/ruby/core/argf/filename_spec.rb6
-rw-r--r--spec/ruby/core/argf/fileno_spec.rb6
-rw-r--r--spec/ruby/core/argf/fixtures/bin_file.txt2
-rw-r--r--spec/ruby/core/argf/fixtures/file1.txt2
-rw-r--r--spec/ruby/core/argf/fixtures/file2.txt2
-rw-r--r--spec/ruby/core/argf/fixtures/filename.rb3
-rw-r--r--spec/ruby/core/argf/fixtures/lineno.rb5
-rw-r--r--spec/ruby/core/argf/fixtures/rewind.rb5
-rw-r--r--spec/ruby/core/argf/fixtures/stdin.txt2
-rw-r--r--spec/ruby/core/argf/getc_spec.rb20
-rw-r--r--spec/ruby/core/argf/gets_spec.rb49
-rw-r--r--spec/ruby/core/argf/lineno_spec.rb30
-rw-r--r--spec/ruby/core/argf/lines_spec.rb16
-rw-r--r--spec/ruby/core/argf/path_spec.rb6
-rw-r--r--spec/ruby/core/argf/pos_spec.rb38
-rw-r--r--spec/ruby/core/argf/read_nonblock_spec.rb80
-rw-r--r--spec/ruby/core/argf/read_spec.rb85
-rw-r--r--spec/ruby/core/argf/readchar_spec.rb19
-rw-r--r--spec/ruby/core/argf/readline_spec.rb23
-rw-r--r--spec/ruby/core/argf/readlines_spec.rb6
-rw-r--r--spec/ruby/core/argf/readpartial_spec.rb75
-rw-r--r--spec/ruby/core/argf/rewind_spec.rb39
-rw-r--r--spec/ruby/core/argf/seek_spec.rb63
-rw-r--r--spec/ruby/core/argf/set_encoding_spec.rb41
-rw-r--r--spec/ruby/core/argf/shared/each_byte.rb58
-rw-r--r--spec/ruby/core/argf/shared/each_char.rb58
-rw-r--r--spec/ruby/core/argf/shared/each_codepoint.rb58
-rw-r--r--spec/ruby/core/argf/shared/each_line.rb62
-rw-r--r--spec/ruby/core/argf/shared/eof.rb24
-rw-r--r--spec/ruby/core/argf/shared/filename.rb28
-rw-r--r--spec/ruby/core/argf/shared/fileno.rb24
-rw-r--r--spec/ruby/core/argf/shared/getc.rb17
-rw-r--r--spec/ruby/core/argf/shared/gets.rb99
-rw-r--r--spec/ruby/core/argf/shared/pos.rb31
-rw-r--r--spec/ruby/core/argf/shared/read.rb58
-rw-r--r--spec/ruby/core/argf/shared/readlines.rb22
-rw-r--r--spec/ruby/core/argf/skip_spec.rb42
-rw-r--r--spec/ruby/core/argf/tell_spec.rb6
-rw-r--r--spec/ruby/core/argf/to_a_spec.rb6
-rw-r--r--spec/ruby/core/argf/to_i_spec.rb6
-rw-r--r--spec/ruby/core/argf/to_io_spec.rb23
-rw-r--r--spec/ruby/core/argf/to_s_spec.rb14
-rw-r--r--spec/ruby/core/array/allocate_spec.rb19
-rw-r--r--spec/ruby/core/array/any_spec.rb37
-rw-r--r--spec/ruby/core/array/append_spec.rb40
-rw-r--r--spec/ruby/core/array/array_spec.rb7
-rw-r--r--spec/ruby/core/array/assoc_spec.rb40
-rw-r--r--spec/ruby/core/array/at_spec.rb56
-rw-r--r--spec/ruby/core/array/bsearch_index_spec.rb85
-rw-r--r--spec/ruby/core/array/bsearch_spec.rb84
-rw-r--r--spec/ruby/core/array/clear_spec.rb32
-rw-r--r--spec/ruby/core/array/clone_spec.rb31
-rw-r--r--spec/ruby/core/array/collect_spec.rb11
-rw-r--r--spec/ruby/core/array/combination_spec.rb74
-rw-r--r--spec/ruby/core/array/compact_spec.rb51
-rw-r--r--spec/ruby/core/array/comparison_spec.rb97
-rw-r--r--spec/ruby/core/array/concat_spec.rb74
-rw-r--r--spec/ruby/core/array/constructor_spec.rb24
-rw-r--r--spec/ruby/core/array/count_spec.rb15
-rw-r--r--spec/ruby/core/array/cycle_spec.rb101
-rw-r--r--spec/ruby/core/array/deconstruct_spec.rb9
-rw-r--r--spec/ruby/core/array/delete_at_spec.rb41
-rw-r--r--spec/ruby/core/array/delete_if_spec.rb52
-rw-r--r--spec/ruby/core/array/delete_spec.rb46
-rw-r--r--spec/ruby/core/array/difference_spec.rb22
-rw-r--r--spec/ruby/core/array/dig_spec.rb52
-rw-r--r--spec/ruby/core/array/drop_spec.rb64
-rw-r--r--spec/ruby/core/array/drop_while_spec.rb28
-rw-r--r--spec/ruby/core/array/dup_spec.rb31
-rw-r--r--spec/ruby/core/array/each_index_spec.rb42
-rw-r--r--spec/ruby/core/array/each_spec.rb77
-rw-r--r--spec/ruby/core/array/element_reference_spec.rb50
-rw-r--r--spec/ruby/core/array/element_set_spec.rb537
-rw-r--r--spec/ruby/core/array/empty_spec.rb10
-rw-r--r--spec/ruby/core/array/eql_spec.rb19
-rw-r--r--spec/ruby/core/array/equal_value_spec.rb51
-rw-r--r--spec/ruby/core/array/fetch_spec.rb55
-rw-r--r--spec/ruby/core/array/fill_spec.rb336
-rw-r--r--spec/ruby/core/array/filter_spec.rb14
-rw-r--r--spec/ruby/core/array/find_index_spec.rb6
-rw-r--r--spec/ruby/core/array/first_spec.rb93
-rw-r--r--spec/ruby/core/array/fixtures/classes.rb584
-rw-r--r--spec/ruby/core/array/fixtures/encoded_strings.rb69
-rw-r--r--spec/ruby/core/array/flatten_spec.rb278
-rw-r--r--spec/ruby/core/array/frozen_spec.rb16
-rw-r--r--spec/ruby/core/array/hash_spec.rb83
-rw-r--r--spec/ruby/core/array/include_spec.rb33
-rw-r--r--spec/ruby/core/array/index_spec.rb6
-rw-r--r--spec/ruby/core/array/initialize_spec.rb156
-rw-r--r--spec/ruby/core/array/insert_spec.rb78
-rw-r--r--spec/ruby/core/array/inspect_spec.rb7
-rw-r--r--spec/ruby/core/array/intersect_spec.rb17
-rw-r--r--spec/ruby/core/array/intersection_spec.rb19
-rw-r--r--spec/ruby/core/array/join_spec.rb50
-rw-r--r--spec/ruby/core/array/keep_if_spec.rb11
-rw-r--r--spec/ruby/core/array/last_spec.rb87
-rw-r--r--spec/ruby/core/array/length_spec.rb7
-rw-r--r--spec/ruby/core/array/map_spec.rb11
-rw-r--r--spec/ruby/core/array/max_spec.rb116
-rw-r--r--spec/ruby/core/array/min_spec.rb121
-rw-r--r--spec/ruby/core/array/minmax_spec.rb14
-rw-r--r--spec/ruby/core/array/minus_spec.rb7
-rw-r--r--spec/ruby/core/array/multiply_spec.rb104
-rw-r--r--spec/ruby/core/array/new_spec.rb122
-rw-r--r--spec/ruby/core/array/pack/a_spec.rb73
-rw-r--r--spec/ruby/core/array/pack/at_spec.rb30
-rw-r--r--spec/ruby/core/array/pack/b_spec.rb113
-rw-r--r--spec/ruby/core/array/pack/buffer_spec.rb50
-rw-r--r--spec/ruby/core/array/pack/c_spec.rb85
-rw-r--r--spec/ruby/core/array/pack/comment_spec.rb25
-rw-r--r--spec/ruby/core/array/pack/d_spec.rb39
-rw-r--r--spec/ruby/core/array/pack/e_spec.rb25
-rw-r--r--spec/ruby/core/array/pack/empty_spec.rb11
-rw-r--r--spec/ruby/core/array/pack/f_spec.rb39
-rw-r--r--spec/ruby/core/array/pack/g_spec.rb25
-rw-r--r--spec/ruby/core/array/pack/h_spec.rb205
-rw-r--r--spec/ruby/core/array/pack/i_spec.rb133
-rw-r--r--spec/ruby/core/array/pack/j_spec.rb217
-rw-r--r--spec/ruby/core/array/pack/l_spec.rb221
-rw-r--r--spec/ruby/core/array/pack/m_spec.rb317
-rw-r--r--spec/ruby/core/array/pack/n_spec.rb25
-rw-r--r--spec/ruby/core/array/pack/p_spec.rb38
-rw-r--r--spec/ruby/core/array/pack/percent_spec.rb7
-rw-r--r--spec/ruby/core/array/pack/q_spec.rb61
-rw-r--r--spec/ruby/core/array/pack/s_spec.rb133
-rw-r--r--spec/ruby/core/array/pack/shared/basic.rb97
-rw-r--r--spec/ruby/core/array/pack/shared/encodings.rb16
-rw-r--r--spec/ruby/core/array/pack/shared/float.rb287
-rw-r--r--spec/ruby/core/array/pack/shared/integer.rb441
-rw-r--r--spec/ruby/core/array/pack/shared/numeric_basic.rb50
-rw-r--r--spec/ruby/core/array/pack/shared/string.rb48
-rw-r--r--spec/ruby/core/array/pack/shared/taint.rb2
-rw-r--r--spec/ruby/core/array/pack/shared/unicode.rb104
-rw-r--r--spec/ruby/core/array/pack/u_spec.rb140
-rw-r--r--spec/ruby/core/array/pack/v_spec.rb25
-rw-r--r--spec/ruby/core/array/pack/w_spec.rb52
-rw-r--r--spec/ruby/core/array/pack/x_spec.rb65
-rw-r--r--spec/ruby/core/array/pack/z_spec.rb44
-rw-r--r--spec/ruby/core/array/partition_spec.rb43
-rw-r--r--spec/ruby/core/array/permutation_spec.rb138
-rw-r--r--spec/ruby/core/array/plus_spec.rb43
-rw-r--r--spec/ruby/core/array/pop_spec.rb124
-rw-r--r--spec/ruby/core/array/prepend_spec.rb7
-rw-r--r--spec/ruby/core/array/product_spec.rb68
-rw-r--r--spec/ruby/core/array/push_spec.rb7
-rw-r--r--spec/ruby/core/array/rassoc_spec.rb38
-rw-r--r--spec/ruby/core/array/reject_spec.rb143
-rw-r--r--spec/ruby/core/array/repeated_combination_spec.rb84
-rw-r--r--spec/ruby/core/array/repeated_permutation_spec.rb94
-rw-r--r--spec/ruby/core/array/replace_spec.rb7
-rw-r--r--spec/ruby/core/array/reverse_each_spec.rb43
-rw-r--r--spec/ruby/core/array/reverse_spec.rb42
-rw-r--r--spec/ruby/core/array/rindex_spec.rb80
-rw-r--r--spec/ruby/core/array/rotate_spec.rb129
-rw-r--r--spec/ruby/core/array/sample_spec.rb144
-rw-r--r--spec/ruby/core/array/select_spec.rb14
-rw-r--r--spec/ruby/core/array/shared/clone.rb20
-rw-r--r--spec/ruby/core/array/shared/collect.rb109
-rw-r--r--spec/ruby/core/array/shared/delete_if.rb13
-rw-r--r--spec/ruby/core/array/shared/difference.rb78
-rw-r--r--spec/ruby/core/array/shared/enumeratorize.rb5
-rw-r--r--spec/ruby/core/array/shared/eql.rb92
-rw-r--r--spec/ruby/core/array/shared/index.rb37
-rw-r--r--spec/ruby/core/array/shared/inspect.rb107
-rw-r--r--spec/ruby/core/array/shared/intersection.rb84
-rw-r--r--spec/ruby/core/array/shared/join.rb112
-rw-r--r--spec/ruby/core/array/shared/keep_if.rb60
-rw-r--r--spec/ruby/core/array/shared/length.rb11
-rw-r--r--spec/ruby/core/array/shared/push.rb33
-rw-r--r--spec/ruby/core/array/shared/replace.rb60
-rw-r--r--spec/ruby/core/array/shared/select.rb32
-rw-r--r--spec/ruby/core/array/shared/slice.rb889
-rw-r--r--spec/ruby/core/array/shared/union.rb79
-rw-r--r--spec/ruby/core/array/shared/unshift.rb64
-rw-r--r--spec/ruby/core/array/shift_spec.rb120
-rw-r--r--spec/ruby/core/array/shuffle_spec.rb96
-rw-r--r--spec/ruby/core/array/size_spec.rb7
-rw-r--r--spec/ruby/core/array/slice_spec.rb246
-rw-r--r--spec/ruby/core/array/sort_by_spec.rb52
-rw-r--r--spec/ruby/core/array/sort_spec.rb252
-rw-r--r--spec/ruby/core/array/sum_spec.rb71
-rw-r--r--spec/ruby/core/array/take_spec.rb40
-rw-r--r--spec/ruby/core/array/take_while_spec.rb28
-rw-r--r--spec/ruby/core/array/to_a_spec.rb24
-rw-r--r--spec/ruby/core/array/to_ary_spec.rb20
-rw-r--r--spec/ruby/core/array/to_h_spec.rb79
-rw-r--r--spec/ruby/core/array/to_s_spec.rb8
-rw-r--r--spec/ruby/core/array/transpose_spec.rb53
-rw-r--r--spec/ruby/core/array/try_convert_spec.rb50
-rw-r--r--spec/ruby/core/array/union_spec.rb25
-rw-r--r--spec/ruby/core/array/uniq_spec.rb217
-rw-r--r--spec/ruby/core/array/unshift_spec.rb7
-rw-r--r--spec/ruby/core/array/values_at_spec.rb74
-rw-r--r--spec/ruby/core/array/zip_spec.rb71
-rw-r--r--spec/ruby/core/basicobject/__id__spec.rb6
-rw-r--r--spec/ruby/core/basicobject/__send___spec.rb10
-rw-r--r--spec/ruby/core/basicobject/basicobject_spec.rb91
-rw-r--r--spec/ruby/core/basicobject/equal_spec.rb52
-rw-r--r--spec/ruby/core/basicobject/equal_value_spec.rb10
-rw-r--r--spec/ruby/core/basicobject/fixtures/classes.rb33
-rw-r--r--spec/ruby/core/basicobject/fixtures/common.rb9
-rw-r--r--spec/ruby/core/basicobject/fixtures/remove_method_missing.rb9
-rw-r--r--spec/ruby/core/basicobject/fixtures/singleton_method.rb10
-rw-r--r--spec/ruby/core/basicobject/initialize_spec.rb13
-rw-r--r--spec/ruby/core/basicobject/instance_eval_spec.rb248
-rw-r--r--spec/ruby/core/basicobject/instance_exec_spec.rb107
-rw-r--r--spec/ruby/core/basicobject/method_missing_spec.rb39
-rw-r--r--spec/ruby/core/basicobject/not_equal_spec.rb53
-rw-r--r--spec/ruby/core/basicobject/not_spec.rb11
-rw-r--r--spec/ruby/core/basicobject/singleton_method_added_spec.rb145
-rw-r--r--spec/ruby/core/basicobject/singleton_method_removed_spec.rb24
-rw-r--r--spec/ruby/core/basicobject/singleton_method_undefined_spec.rb24
-rw-r--r--spec/ruby/core/binding/clone_spec.rb7
-rw-r--r--spec/ruby/core/binding/dup_spec.rb7
-rw-r--r--spec/ruby/core/binding/eval_spec.rb152
-rw-r--r--spec/ruby/core/binding/fixtures/classes.rb66
-rw-r--r--spec/ruby/core/binding/fixtures/irb.rb3
-rw-r--r--spec/ruby/core/binding/fixtures/irbrc1
-rw-r--r--spec/ruby/core/binding/fixtures/location.rb6
-rw-r--r--spec/ruby/core/binding/irb_spec.rb16
-rw-r--r--spec/ruby/core/binding/local_variable_defined_spec.rb46
-rw-r--r--spec/ruby/core/binding/local_variable_get_spec.rb56
-rw-r--r--spec/ruby/core/binding/local_variable_set_spec.rb71
-rw-r--r--spec/ruby/core/binding/local_variables_spec.rb35
-rw-r--r--spec/ruby/core/binding/receiver_spec.rb11
-rw-r--r--spec/ruby/core/binding/shared/clone.rb34
-rw-r--r--spec/ruby/core/binding/source_location_spec.rb9
-rw-r--r--spec/ruby/core/builtin_constants/builtin_constants_spec.rb49
-rw-r--r--spec/ruby/core/class/allocate_spec.rb41
-rw-r--r--spec/ruby/core/class/attached_object_spec.rb31
-rw-r--r--spec/ruby/core/class/dup_spec.rb64
-rw-r--r--spec/ruby/core/class/fixtures/classes.rb47
-rw-r--r--spec/ruby/core/class/inherited_spec.rb101
-rw-r--r--spec/ruby/core/class/initialize_spec.rb34
-rw-r--r--spec/ruby/core/class/new_spec.rb155
-rw-r--r--spec/ruby/core/class/subclasses_spec.rb60
-rw-r--r--spec/ruby/core/class/superclass_spec.rb27
-rw-r--r--spec/ruby/core/comparable/between_spec.rb25
-rw-r--r--spec/ruby/core/comparable/clamp_spec.rb78
-rw-r--r--spec/ruby/core/comparable/equal_value_spec.rb114
-rw-r--r--spec/ruby/core/comparable/fixtures/classes.rb36
-rw-r--r--spec/ruby/core/comparable/gt_spec.rb43
-rw-r--r--spec/ruby/core/comparable/gte_spec.rb47
-rw-r--r--spec/ruby/core/comparable/lt_spec.rb49
-rw-r--r--spec/ruby/core/comparable/lte_spec.rb46
-rw-r--r--spec/ruby/core/complex/abs2_spec.rb9
-rw-r--r--spec/ruby/core/complex/abs_spec.rb6
-rw-r--r--spec/ruby/core/complex/angle_spec.rb6
-rw-r--r--spec/ruby/core/complex/arg_spec.rb6
-rw-r--r--spec/ruby/core/complex/coerce_spec.rb70
-rw-r--r--spec/ruby/core/complex/comparison_spec.rb25
-rw-r--r--spec/ruby/core/complex/conj_spec.rb6
-rw-r--r--spec/ruby/core/complex/conjugate_spec.rb6
-rw-r--r--spec/ruby/core/complex/constants_spec.rb7
-rw-r--r--spec/ruby/core/complex/denominator_spec.rb13
-rw-r--r--spec/ruby/core/complex/divide_spec.rb6
-rw-r--r--spec/ruby/core/complex/eql_spec.rb31
-rw-r--r--spec/ruby/core/complex/equal_value_spec.rb93
-rw-r--r--spec/ruby/core/complex/exponent_spec.rb61
-rw-r--r--spec/ruby/core/complex/fdiv_spec.rb129
-rw-r--r--spec/ruby/core/complex/finite_spec.rb32
-rw-r--r--spec/ruby/core/complex/hash_spec.rb16
-rw-r--r--spec/ruby/core/complex/imag_spec.rb6
-rw-r--r--spec/ruby/core/complex/imaginary_spec.rb6
-rw-r--r--spec/ruby/core/complex/infinite_spec.rb32
-rw-r--r--spec/ruby/core/complex/inspect_spec.rb16
-rw-r--r--spec/ruby/core/complex/integer_spec.rb11
-rw-r--r--spec/ruby/core/complex/magnitude_spec.rb6
-rw-r--r--spec/ruby/core/complex/marshal_dump_spec.rb11
-rw-r--r--spec/ruby/core/complex/minus_spec.rb45
-rw-r--r--spec/ruby/core/complex/multiply_spec.rb49
-rw-r--r--spec/ruby/core/complex/negative_spec.rb13
-rw-r--r--spec/ruby/core/complex/numerator_spec.rb19
-rw-r--r--spec/ruby/core/complex/phase_spec.rb6
-rw-r--r--spec/ruby/core/complex/plus_spec.rb45
-rw-r--r--spec/ruby/core/complex/polar_spec.rb43
-rw-r--r--spec/ruby/core/complex/positive_spec.rb13
-rw-r--r--spec/ruby/core/complex/quo_spec.rb6
-rw-r--r--spec/ruby/core/complex/rationalize_spec.rb31
-rw-r--r--spec/ruby/core/complex/real_spec.rb28
-rw-r--r--spec/ruby/core/complex/rect_spec.rb10
-rw-r--r--spec/ruby/core/complex/rectangular_spec.rb10
-rw-r--r--spec/ruby/core/complex/shared/abs.rb10
-rw-r--r--spec/ruby/core/complex/shared/arg.rb9
-rw-r--r--spec/ruby/core/complex/shared/conjugate.rb8
-rw-r--r--spec/ruby/core/complex/shared/divide.rb82
-rw-r--r--spec/ruby/core/complex/shared/image.rb8
-rw-r--r--spec/ruby/core/complex/shared/rect.rb94
-rw-r--r--spec/ruby/core/complex/to_c_spec.rb12
-rw-r--r--spec/ruby/core/complex/to_f_spec.rb41
-rw-r--r--spec/ruby/core/complex/to_i_spec.rb41
-rw-r--r--spec/ruby/core/complex/to_r_spec.rb41
-rw-r--r--spec/ruby/core/complex/to_s_spec.rb44
-rw-r--r--spec/ruby/core/complex/uminus_spec.rb11
-rw-r--r--spec/ruby/core/conditionvariable/broadcast_spec.rb40
-rw-r--r--spec/ruby/core/conditionvariable/marshal_dump_spec.rb9
-rw-r--r--spec/ruby/core/conditionvariable/signal_spec.rb77
-rw-r--r--spec/ruby/core/conditionvariable/wait_spec.rb175
-rw-r--r--spec/ruby/core/data/constants_spec.rb35
-rw-r--r--spec/ruby/core/dir/chdir_spec.rb124
-rw-r--r--spec/ruby/core/dir/children_spec.rb134
-rw-r--r--spec/ruby/core/dir/chroot_spec.rb47
-rw-r--r--spec/ruby/core/dir/close_spec.rb19
-rw-r--r--spec/ruby/core/dir/delete_spec.rb15
-rw-r--r--spec/ruby/core/dir/dir_spec.rb7
-rw-r--r--spec/ruby/core/dir/each_child_spec.rb106
-rw-r--r--spec/ruby/core/dir/each_spec.rb64
-rw-r--r--spec/ruby/core/dir/element_reference_spec.rb33
-rw-r--r--spec/ruby/core/dir/empty_spec.rb31
-rw-r--r--spec/ruby/core/dir/entries_spec.rb70
-rw-r--r--spec/ruby/core/dir/exist_spec.rb15
-rw-r--r--spec/ruby/core/dir/fileno_spec.rb37
-rw-r--r--spec/ruby/core/dir/fixtures/common.rb204
-rw-r--r--spec/ruby/core/dir/foreach_spec.rb68
-rw-r--r--spec/ruby/core/dir/getwd_spec.rb15
-rw-r--r--spec/ruby/core/dir/glob_spec.rb253
-rw-r--r--spec/ruby/core/dir/home_spec.rb88
-rw-r--r--spec/ruby/core/dir/initialize_spec.rb23
-rw-r--r--spec/ruby/core/dir/inspect_spec.rb24
-rw-r--r--spec/ruby/core/dir/mkdir_spec.rb107
-rw-r--r--spec/ruby/core/dir/open_spec.rb15
-rw-r--r--spec/ruby/core/dir/path_spec.rb15
-rw-r--r--spec/ruby/core/dir/pos_spec.rb40
-rw-r--r--spec/ruby/core/dir/pwd_spec.rb39
-rw-r--r--spec/ruby/core/dir/read_spec.rb76
-rw-r--r--spec/ruby/core/dir/rewind_spec.rb36
-rw-r--r--spec/ruby/core/dir/rmdir_spec.rb15
-rw-r--r--spec/ruby/core/dir/seek_spec.rb19
-rw-r--r--spec/ruby/core/dir/shared/chroot.rb44
-rw-r--r--spec/ruby/core/dir/shared/closed.rb9
-rw-r--r--spec/ruby/core/dir/shared/delete.rb63
-rw-r--r--spec/ruby/core/dir/shared/exist.rb56
-rw-r--r--spec/ruby/core/dir/shared/glob.rb484
-rw-r--r--spec/ruby/core/dir/shared/open.rb73
-rw-r--r--spec/ruby/core/dir/shared/path.rb30
-rw-r--r--spec/ruby/core/dir/shared/pos.rb51
-rw-r--r--spec/ruby/core/dir/shared/pwd.rb45
-rw-r--r--spec/ruby/core/dir/tell_spec.rb18
-rw-r--r--spec/ruby/core/dir/to_path_spec.rb15
-rw-r--r--spec/ruby/core/dir/unlink_spec.rb15
-rw-r--r--spec/ruby/core/encoding/_dump_spec.rb5
-rw-r--r--spec/ruby/core/encoding/_load_spec.rb5
-rw-r--r--spec/ruby/core/encoding/aliases_spec.rb43
-rw-r--r--spec/ruby/core/encoding/ascii_compatible_spec.rb11
-rw-r--r--spec/ruby/core/encoding/compatible_spec.rb379
-rw-r--r--spec/ruby/core/encoding/converter/asciicompat_encoding_spec.rb37
-rw-r--r--spec/ruby/core/encoding/converter/constants_spec.rb131
-rw-r--r--spec/ruby/core/encoding/converter/convert_spec.rb45
-rw-r--r--spec/ruby/core/encoding/converter/convpath_spec.rb24
-rw-r--r--spec/ruby/core/encoding/converter/destination_encoding_spec.rb11
-rw-r--r--spec/ruby/core/encoding/converter/finish_spec.rb36
-rw-r--r--spec/ruby/core/encoding/converter/insert_output_spec.rb5
-rw-r--r--spec/ruby/core/encoding/converter/inspect_spec.rb13
-rw-r--r--spec/ruby/core/encoding/converter/last_error_spec.rb91
-rw-r--r--spec/ruby/core/encoding/converter/new_spec.rb119
-rw-r--r--spec/ruby/core/encoding/converter/primitive_convert_spec.rb211
-rw-r--r--spec/ruby/core/encoding/converter/primitive_errinfo_spec.rb68
-rw-r--r--spec/ruby/core/encoding/converter/putback_spec.rb56
-rw-r--r--spec/ruby/core/encoding/converter/replacement_spec.rb72
-rw-r--r--spec/ruby/core/encoding/converter/search_convpath_spec.rb30
-rw-r--r--spec/ruby/core/encoding/converter/source_encoding_spec.rb11
-rw-r--r--spec/ruby/core/encoding/default_external_spec.rb71
-rw-r--r--spec/ruby/core/encoding/default_internal_spec.rb74
-rw-r--r--spec/ruby/core/encoding/dummy_spec.rb14
-rw-r--r--spec/ruby/core/encoding/find_spec.rb82
-rw-r--r--spec/ruby/core/encoding/fixtures/classes.rb49
-rw-r--r--spec/ruby/core/encoding/inspect_spec.rb19
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/destination_encoding_name_spec.rb18
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/destination_encoding_spec.rb18
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/error_bytes_spec.rb30
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/incomplete_input_spec.rb28
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/readagain_bytes_spec.rb30
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/source_encoding_name_spec.rb28
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/source_encoding_spec.rb33
-rw-r--r--spec/ruby/core/encoding/list_spec.rb49
-rw-r--r--spec/ruby/core/encoding/locale_charmap_spec.rb56
-rw-r--r--spec/ruby/core/encoding/name_list_spec.rb23
-rw-r--r--spec/ruby/core/encoding/name_spec.rb5
-rw-r--r--spec/ruby/core/encoding/names_spec.rb35
-rw-r--r--spec/ruby/core/encoding/replicate_spec.rb75
-rw-r--r--spec/ruby/core/encoding/shared/name.rb15
-rw-r--r--spec/ruby/core/encoding/to_s_spec.rb5
-rw-r--r--spec/ruby/core/encoding/undefined_conversion_error/destination_encoding_name_spec.rb15
-rw-r--r--spec/ruby/core/encoding/undefined_conversion_error/destination_encoding_spec.rb15
-rw-r--r--spec/ruby/core/encoding/undefined_conversion_error/error_char_spec.rb27
-rw-r--r--spec/ruby/core/encoding/undefined_conversion_error/source_encoding_name_spec.rb28
-rw-r--r--spec/ruby/core/encoding/undefined_conversion_error/source_encoding_spec.rb29
-rw-r--r--spec/ruby/core/enumerable/all_spec.rb181
-rw-r--r--spec/ruby/core/enumerable/any_spec.rb194
-rw-r--r--spec/ruby/core/enumerable/chain_spec.rb23
-rw-r--r--spec/ruby/core/enumerable/chunk_spec.rb72
-rw-r--r--spec/ruby/core/enumerable/chunk_while_spec.rb42
-rw-r--r--spec/ruby/core/enumerable/collect_concat_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/collect_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/compact_spec.rb11
-rw-r--r--spec/ruby/core/enumerable/count_spec.rb59
-rw-r--r--spec/ruby/core/enumerable/cycle_spec.rb104
-rw-r--r--spec/ruby/core/enumerable/detect_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/drop_spec.rb43
-rw-r--r--spec/ruby/core/enumerable/drop_while_spec.rb50
-rw-r--r--spec/ruby/core/enumerable/each_cons_spec.rb105
-rw-r--r--spec/ruby/core/enumerable/each_entry_spec.rb41
-rw-r--r--spec/ruby/core/enumerable/each_slice_spec.rb107
-rw-r--r--spec/ruby/core/enumerable/each_with_index_spec.rb53
-rw-r--r--spec/ruby/core/enumerable/each_with_object_spec.rb41
-rw-r--r--spec/ruby/core/enumerable/entries_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/filter_map_spec.rb24
-rw-r--r--spec/ruby/core/enumerable/filter_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/find_all_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/find_index_spec.rb89
-rw-r--r--spec/ruby/core/enumerable/find_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/first_spec.rb28
-rw-r--r--spec/ruby/core/enumerable/fixtures/classes.rb345
-rw-r--r--spec/ruby/core/enumerable/flat_map_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/grep_spec.rb102
-rw-r--r--spec/ruby/core/enumerable/grep_v_spec.rb91
-rw-r--r--spec/ruby/core/enumerable/group_by_spec.rb37
-rw-r--r--spec/ruby/core/enumerable/include_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/inject_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/lazy_spec.rb10
-rw-r--r--spec/ruby/core/enumerable/map_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/max_by_spec.rb81
-rw-r--r--spec/ruby/core/enumerable/max_spec.rb119
-rw-r--r--spec/ruby/core/enumerable/member_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/min_by_spec.rb81
-rw-r--r--spec/ruby/core/enumerable/min_spec.rb123
-rw-r--r--spec/ruby/core/enumerable/minmax_by_spec.rb44
-rw-r--r--spec/ruby/core/enumerable/minmax_spec.rb20
-rw-r--r--spec/ruby/core/enumerable/none_spec.rb147
-rw-r--r--spec/ruby/core/enumerable/one_spec.rb149
-rw-r--r--spec/ruby/core/enumerable/partition_spec.rb20
-rw-r--r--spec/ruby/core/enumerable/reduce_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/reject_spec.rb25
-rw-r--r--spec/ruby/core/enumerable/reverse_each_spec.rb26
-rw-r--r--spec/ruby/core/enumerable/select_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/shared/collect.rb107
-rw-r--r--spec/ruby/core/enumerable/shared/collect_concat.rb54
-rw-r--r--spec/ruby/core/enumerable/shared/entries.rb16
-rw-r--r--spec/ruby/core/enumerable/shared/enumerable_enumeratorized.rb33
-rw-r--r--spec/ruby/core/enumerable/shared/enumeratorized.rb42
-rw-r--r--spec/ruby/core/enumerable/shared/find.rb77
-rw-r--r--spec/ruby/core/enumerable/shared/find_all.rb31
-rw-r--r--spec/ruby/core/enumerable/shared/include.rb34
-rw-r--r--spec/ruby/core/enumerable/shared/inject.rb77
-rw-r--r--spec/ruby/core/enumerable/shared/take.rb63
-rw-r--r--spec/ruby/core/enumerable/slice_after_spec.rb61
-rw-r--r--spec/ruby/core/enumerable/slice_before_spec.rb64
-rw-r--r--spec/ruby/core/enumerable/slice_when_spec.rb54
-rw-r--r--spec/ruby/core/enumerable/sort_by_spec.rb43
-rw-r--r--spec/ruby/core/enumerable/sort_spec.rb54
-rw-r--r--spec/ruby/core/enumerable/sum_spec.rb50
-rw-r--r--spec/ruby/core/enumerable/take_spec.rb13
-rw-r--r--spec/ruby/core/enumerable/take_while_spec.rb51
-rw-r--r--spec/ruby/core/enumerable/tally_spec.rb80
-rw-r--r--spec/ruby/core/enumerable/to_a_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/to_h_spec.rb88
-rw-r--r--spec/ruby/core/enumerable/uniq_spec.rb78
-rw-r--r--spec/ruby/core/enumerable/zip_spec.rb46
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/begin_spec.rb16
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/each_spec.rb17
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/end_spec.rb16
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/eq_spec.rb18
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/exclude_end_spec.rb17
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/first_spec.rb9
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/hash_spec.rb20
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/inspect_spec.rb20
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/last_spec.rb9
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/new_spec.rb17
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/size_spec.rb17
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/step_spec.rb11
-rw-r--r--spec/ruby/core/enumerator/chain/each_spec.rb15
-rw-r--r--spec/ruby/core/enumerator/chain/initialize_spec.rb31
-rw-r--r--spec/ruby/core/enumerator/chain/inspect_spec.rb14
-rw-r--r--spec/ruby/core/enumerator/chain/rewind_spec.rb51
-rw-r--r--spec/ruby/core/enumerator/chain/size_spec.rb22
-rw-r--r--spec/ruby/core/enumerator/each_spec.rb89
-rw-r--r--spec/ruby/core/enumerator/each_with_index_spec.rb36
-rw-r--r--spec/ruby/core/enumerator/each_with_object_spec.rb6
-rw-r--r--spec/ruby/core/enumerator/enum_for_spec.rb6
-rw-r--r--spec/ruby/core/enumerator/enumerator_spec.rb7
-rw-r--r--spec/ruby/core/enumerator/feed_spec.rb52
-rw-r--r--spec/ruby/core/enumerator/first_spec.rb7
-rw-r--r--spec/ruby/core/enumerator/fixtures/common.rb9
-rw-r--r--spec/ruby/core/enumerator/generator/each_spec.rb40
-rw-r--r--spec/ruby/core/enumerator/generator/initialize_spec.rb26
-rw-r--r--spec/ruby/core/enumerator/initialize_spec.rb65
-rw-r--r--spec/ruby/core/enumerator/inspect_spec.rb17
-rw-r--r--spec/ruby/core/enumerator/lazy/chunk_spec.rb67
-rw-r--r--spec/ruby/core/enumerator/lazy/chunk_while_spec.rb14
-rw-r--r--spec/ruby/core/enumerator/lazy/collect_concat_spec.rb8
-rw-r--r--spec/ruby/core/enumerator/lazy/collect_spec.rb8
-rw-r--r--spec/ruby/core/enumerator/lazy/compact_spec.rb11
-rw-r--r--spec/ruby/core/enumerator/lazy/drop_spec.rb58
-rw-r--r--spec/ruby/core/enumerator/lazy/drop_while_spec.rb66
-rw-r--r--spec/ruby/core/enumerator/lazy/eager_spec.rb27
-rw-r--r--spec/ruby/core/enumerator/lazy/enum_for_spec.rb8
-rw-r--r--spec/ruby/core/enumerator/lazy/filter_map_spec.rb14
-rw-r--r--spec/ruby/core/enumerator/lazy/filter_spec.rb6
-rw-r--r--spec/ruby/core/enumerator/lazy/find_all_spec.rb8
-rw-r--r--spec/ruby/core/enumerator/lazy/fixtures/classes.rb54
-rw-r--r--spec/ruby/core/enumerator/lazy/flat_map_spec.rb16
-rw-r--r--spec/ruby/core/enumerator/lazy/force_spec.rb36
-rw-r--r--spec/ruby/core/enumerator/lazy/grep_spec.rb121
-rw-r--r--spec/ruby/core/enumerator/lazy/grep_v_spec.rb123
-rw-r--r--spec/ruby/core/enumerator/lazy/initialize_spec.rb63
-rw-r--r--spec/ruby/core/enumerator/lazy/lazy_spec.rb32
-rw-r--r--spec/ruby/core/enumerator/lazy/map_spec.rb12
-rw-r--r--spec/ruby/core/enumerator/lazy/reject_spec.rb78
-rw-r--r--spec/ruby/core/enumerator/lazy/select_spec.rb47
-rw-r--r--spec/ruby/core/enumerator/lazy/shared/collect.rb62
-rw-r--r--spec/ruby/core/enumerator/lazy/shared/collect_concat.rb78
-rw-r--r--spec/ruby/core/enumerator/lazy/shared/select.rb66
-rw-r--r--spec/ruby/core/enumerator/lazy/shared/to_enum.rb55
-rw-r--r--spec/ruby/core/enumerator/lazy/slice_after_spec.rb14
-rw-r--r--spec/ruby/core/enumerator/lazy/slice_before_spec.rb14
-rw-r--r--spec/ruby/core/enumerator/lazy/slice_when_spec.rb14
-rw-r--r--spec/ruby/core/enumerator/lazy/take_spec.rb66
-rw-r--r--spec/ruby/core/enumerator/lazy/take_while_spec.rb60
-rw-r--r--spec/ruby/core/enumerator/lazy/to_enum_spec.rb8
-rw-r--r--spec/ruby/core/enumerator/lazy/uniq_spec.rb74
-rw-r--r--spec/ruby/core/enumerator/lazy/with_index_spec.rb36
-rw-r--r--spec/ruby/core/enumerator/lazy/zip_spec.rb86
-rw-r--r--spec/ruby/core/enumerator/new_spec.rb119
-rw-r--r--spec/ruby/core/enumerator/next_spec.rb38
-rw-r--r--spec/ruby/core/enumerator/next_values_spec.rb55
-rw-r--r--spec/ruby/core/enumerator/peek_spec.rb36
-rw-r--r--spec/ruby/core/enumerator/peek_values_spec.rb57
-rw-r--r--spec/ruby/core/enumerator/plus_spec.rb33
-rw-r--r--spec/ruby/core/enumerator/produce_spec.rb34
-rw-r--r--spec/ruby/core/enumerator/rewind_spec.rb70
-rw-r--r--spec/ruby/core/enumerator/size_spec.rb26
-rw-r--r--spec/ruby/core/enumerator/to_enum_spec.rb6
-rw-r--r--spec/ruby/core/enumerator/with_index_spec.rb72
-rw-r--r--spec/ruby/core/enumerator/with_object_spec.rb6
-rw-r--r--spec/ruby/core/enumerator/yielder/append_spec.rb35
-rw-r--r--spec/ruby/core/enumerator/yielder/initialize_spec.rb18
-rw-r--r--spec/ruby/core/enumerator/yielder/to_proc_spec.rb16
-rw-r--r--spec/ruby/core/enumerator/yielder/yield_spec.rb33
-rw-r--r--spec/ruby/core/env/assoc_spec.rb31
-rw-r--r--spec/ruby/core/env/clear_spec.rb20
-rw-r--r--spec/ruby/core/env/delete_if_spec.rb54
-rw-r--r--spec/ruby/core/env/delete_spec.rb49
-rw-r--r--spec/ruby/core/env/each_key_spec.rb34
-rw-r--r--spec/ruby/core/env/each_pair_spec.rb6
-rw-r--r--spec/ruby/core/env/each_spec.rb6
-rw-r--r--spec/ruby/core/env/each_value_spec.rb34
-rw-r--r--spec/ruby/core/env/element_reference_spec.rb76
-rw-r--r--spec/ruby/core/env/element_set_spec.rb6
-rw-r--r--spec/ruby/core/env/empty_spec.rb23
-rw-r--r--spec/ruby/core/env/except_spec.rb36
-rw-r--r--spec/ruby/core/env/fetch_spec.rb63
-rw-r--r--spec/ruby/core/env/filter_spec.rb13
-rw-r--r--spec/ruby/core/env/fixtures/common.rb9
-rw-r--r--spec/ruby/core/env/has_key_spec.rb6
-rw-r--r--spec/ruby/core/env/has_value_spec.rb6
-rw-r--r--spec/ruby/core/env/include_spec.rb6
-rw-r--r--spec/ruby/core/env/index_spec.rb14
-rw-r--r--spec/ruby/core/env/indexes_spec.rb1
-rw-r--r--spec/ruby/core/env/indices_spec.rb1
-rw-r--r--spec/ruby/core/env/inspect_spec.rb11
-rw-r--r--spec/ruby/core/env/invert_spec.rb16
-rw-r--r--spec/ruby/core/env/keep_if_spec.rb54
-rw-r--r--spec/ruby/core/env/key_spec.rb11
-rw-r--r--spec/ruby/core/env/keys_spec.rb14
-rw-r--r--spec/ruby/core/env/length_spec.rb6
-rw-r--r--spec/ruby/core/env/member_spec.rb6
-rw-r--r--spec/ruby/core/env/merge_spec.rb6
-rw-r--r--spec/ruby/core/env/rassoc_spec.rb42
-rw-r--r--spec/ruby/core/env/rehash_spec.rb7
-rw-r--r--spec/ruby/core/env/reject_spec.rb101
-rw-r--r--spec/ruby/core/env/replace_spec.rb51
-rw-r--r--spec/ruby/core/env/select_spec.rb13
-rw-r--r--spec/ruby/core/env/shared/each.rb65
-rw-r--r--spec/ruby/core/env/shared/include.rb23
-rw-r--r--spec/ruby/core/env/shared/key.rb31
-rw-r--r--spec/ruby/core/env/shared/length.rb13
-rw-r--r--spec/ruby/core/env/shared/select.rb61
-rw-r--r--spec/ruby/core/env/shared/store.rb60
-rw-r--r--spec/ruby/core/env/shared/to_hash.rb33
-rw-r--r--spec/ruby/core/env/shared/update.rb106
-rw-r--r--spec/ruby/core/env/shared/value.rb22
-rw-r--r--spec/ruby/core/env/shift_spec.rb47
-rw-r--r--spec/ruby/core/env/size_spec.rb6
-rw-r--r--spec/ruby/core/env/slice_spec.rb27
-rw-r--r--spec/ruby/core/env/spec_helper.rb26
-rw-r--r--spec/ruby/core/env/store_spec.rb6
-rw-r--r--spec/ruby/core/env/to_a_spec.rb18
-rw-r--r--spec/ruby/core/env/to_h_spec.rb58
-rw-r--r--spec/ruby/core/env/to_hash_spec.rb6
-rw-r--r--spec/ruby/core/env/to_s_spec.rb7
-rw-r--r--spec/ruby/core/env/update_spec.rb6
-rw-r--r--spec/ruby/core/env/value_spec.rb6
-rw-r--r--spec/ruby/core/env/values_at_spec.rb38
-rw-r--r--spec/ruby/core/env/values_spec.rb14
-rw-r--r--spec/ruby/core/exception/backtrace_locations_spec.rb39
-rw-r--r--spec/ruby/core/exception/backtrace_spec.rb93
-rw-r--r--spec/ruby/core/exception/case_compare_spec.rb39
-rw-r--r--spec/ruby/core/exception/cause_spec.rb56
-rw-r--r--spec/ruby/core/exception/dup_spec.rb74
-rw-r--r--spec/ruby/core/exception/equal_value_spec.rb68
-rw-r--r--spec/ruby/core/exception/errno_spec.rb67
-rw-r--r--spec/ruby/core/exception/exception_spec.rb69
-rw-r--r--spec/ruby/core/exception/exit_value_spec.rb13
-rw-r--r--spec/ruby/core/exception/fixtures/common.rb95
-rw-r--r--spec/ruby/core/exception/frozen_error_spec.rb22
-rw-r--r--spec/ruby/core/exception/full_message_spec.rb106
-rw-r--r--spec/ruby/core/exception/hierarchy_spec.rb62
-rw-r--r--spec/ruby/core/exception/inspect_spec.rb24
-rw-r--r--spec/ruby/core/exception/interrupt_spec.rb60
-rw-r--r--spec/ruby/core/exception/io_error_spec.rb45
-rw-r--r--spec/ruby/core/exception/key_error_spec.rb19
-rw-r--r--spec/ruby/core/exception/load_error_spec.rb21
-rw-r--r--spec/ruby/core/exception/message_spec.rb27
-rw-r--r--spec/ruby/core/exception/name_error_spec.rb28
-rw-r--r--spec/ruby/core/exception/name_spec.rb43
-rw-r--r--spec/ruby/core/exception/new_spec.rb7
-rw-r--r--spec/ruby/core/exception/no_method_error_spec.rb136
-rw-r--r--spec/ruby/core/exception/reason_spec.rb13
-rw-r--r--spec/ruby/core/exception/receiver_spec.rb58
-rw-r--r--spec/ruby/core/exception/result_spec.rb21
-rw-r--r--spec/ruby/core/exception/set_backtrace_spec.rb56
-rw-r--r--spec/ruby/core/exception/shared/new.rb18
-rw-r--r--spec/ruby/core/exception/signal_exception_spec.rb123
-rw-r--r--spec/ruby/core/exception/signm_spec.rb9
-rw-r--r--spec/ruby/core/exception/signo_spec.rb9
-rw-r--r--spec/ruby/core/exception/standard_error_spec.rb23
-rw-r--r--spec/ruby/core/exception/status_spec.rb9
-rw-r--r--spec/ruby/core/exception/success_spec.rb15
-rw-r--r--spec/ruby/core/exception/system_call_error_spec.rb143
-rw-r--r--spec/ruby/core/exception/system_exit_spec.rb59
-rw-r--r--spec/ruby/core/exception/to_s_spec.rb37
-rw-r--r--spec/ruby/core/exception/top_level_spec.rb45
-rw-r--r--spec/ruby/core/exception/uncaught_throw_error_spec.rb12
-rw-r--r--spec/ruby/core/false/and_spec.rb11
-rw-r--r--spec/ruby/core/false/case_compare_spec.rb14
-rw-r--r--spec/ruby/core/false/dup_spec.rb7
-rw-r--r--spec/ruby/core/false/falseclass_spec.rb15
-rw-r--r--spec/ruby/core/false/inspect_spec.rb7
-rw-r--r--spec/ruby/core/false/or_spec.rb11
-rw-r--r--spec/ruby/core/false/to_s_spec.rb15
-rw-r--r--spec/ruby/core/false/xor_spec.rb11
-rw-r--r--spec/ruby/core/fiber/blocking_spec.rb79
-rw-r--r--spec/ruby/core/fiber/fixtures/classes.rb12
-rw-r--r--spec/ruby/core/fiber/new_spec.rb39
-rw-r--r--spec/ruby/core/fiber/raise_spec.rb119
-rw-r--r--spec/ruby/core/fiber/resume_spec.rb79
-rw-r--r--spec/ruby/core/fiber/shared/blocking.rb41
-rw-r--r--spec/ruby/core/fiber/storage_spec.rb117
-rw-r--r--spec/ruby/core/fiber/yield_spec.rb49
-rw-r--r--spec/ruby/core/file/absolute_path_spec.rb94
-rw-r--r--spec/ruby/core/file/atime_spec.rb57
-rw-r--r--spec/ruby/core/file/basename_spec.rb183
-rw-r--r--spec/ruby/core/file/birthtime_spec.rb60
-rw-r--r--spec/ruby/core/file/blockdev_spec.rb6
-rw-r--r--spec/ruby/core/file/chardev_spec.rb6
-rw-r--r--spec/ruby/core/file/chmod_spec.rb185
-rw-r--r--spec/ruby/core/file/chown_spec.rb144
-rw-r--r--spec/ruby/core/file/constants/constants_spec.rb31
-rw-r--r--spec/ruby/core/file/constants_spec.rb141
-rw-r--r--spec/ruby/core/file/ctime_spec.rb51
-rw-r--r--spec/ruby/core/file/delete_spec.rb6
-rw-r--r--spec/ruby/core/file/directory_spec.rb10
-rw-r--r--spec/ruby/core/file/dirname_spec.rb124
-rw-r--r--spec/ruby/core/file/empty_spec.rb13
-rw-r--r--spec/ruby/core/file/executable_real_spec.rb7
-rw-r--r--spec/ruby/core/file/executable_spec.rb7
-rw-r--r--spec/ruby/core/file/exist_spec.rb6
-rw-r--r--spec/ruby/core/file/expand_path_spec.rb265
-rw-r--r--spec/ruby/core/file/extname_spec.rb76
-rw-r--r--spec/ruby/core/file/file_spec.rb16
-rw-r--r--spec/ruby/core/file/fixtures/common.rb22
-rw-r--r--spec/ruby/core/file/fixtures/do_not_remove1
-rw-r--r--spec/ruby/core/file/fixtures/file_types.rb66
-rw-r--r--spec/ruby/core/file/flock_spec.rb106
-rw-r--r--spec/ruby/core/file/fnmatch_spec.rb10
-rw-r--r--spec/ruby/core/file/ftype_spec.rb82
-rw-r--r--spec/ruby/core/file/grpowned_spec.rb10
-rw-r--r--spec/ruby/core/file/identical_spec.rb6
-rw-r--r--spec/ruby/core/file/initialize_spec.rb19
-rw-r--r--spec/ruby/core/file/inspect_spec.rb17
-rw-r--r--spec/ruby/core/file/join_spec.rb148
-rw-r--r--spec/ruby/core/file/lchmod_spec.rb32
-rw-r--r--spec/ruby/core/file/lchown_spec.rb59
-rw-r--r--spec/ruby/core/file/link_spec.rb39
-rw-r--r--spec/ruby/core/file/lstat_spec.rb33
-rw-r--r--spec/ruby/core/file/lutime_spec.rb38
-rw-r--r--spec/ruby/core/file/mkfifo_spec.rb51
-rw-r--r--spec/ruby/core/file/mtime_spec.rb53
-rw-r--r--spec/ruby/core/file/new_spec.rb162
-rw-r--r--spec/ruby/core/file/null_spec.rb15
-rw-r--r--spec/ruby/core/file/open_spec.rb704
-rw-r--r--spec/ruby/core/file/owned_spec.rb35
-rw-r--r--spec/ruby/core/file/path_spec.rb40
-rw-r--r--spec/ruby/core/file/pipe_spec.rb32
-rw-r--r--spec/ruby/core/file/printf_spec.rb18
-rw-r--r--spec/ruby/core/file/read_spec.rb6
-rw-r--r--spec/ruby/core/file/readable_real_spec.rb7
-rw-r--r--spec/ruby/core/file/readable_spec.rb7
-rw-r--r--spec/ruby/core/file/readlink_spec.rb86
-rw-r--r--spec/ruby/core/file/realdirpath_spec.rb104
-rw-r--r--spec/ruby/core/file/realpath_spec.rb94
-rw-r--r--spec/ruby/core/file/rename_spec.rb37
-rw-r--r--spec/ruby/core/file/reopen_spec.rb32
-rw-r--r--spec/ruby/core/file/setgid_spec.rb36
-rw-r--r--spec/ruby/core/file/setuid_spec.rb38
-rw-r--r--spec/ruby/core/file/shared/fnmatch.rb249
-rw-r--r--spec/ruby/core/file/shared/open.rb12
-rw-r--r--spec/ruby/core/file/shared/path.rb94
-rw-r--r--spec/ruby/core/file/shared/read.rb15
-rw-r--r--spec/ruby/core/file/shared/stat.rb32
-rw-r--r--spec/ruby/core/file/shared/unlink.rb61
-rw-r--r--spec/ruby/core/file/size_spec.rb119
-rw-r--r--spec/ruby/core/file/socket_spec.rb42
-rw-r--r--spec/ruby/core/file/split_spec.rb64
-rw-r--r--spec/ruby/core/file/stat/atime_spec.rb18
-rw-r--r--spec/ruby/core/file/stat/birthtime_spec.rb27
-rw-r--r--spec/ruby/core/file/stat/blksize_spec.rb27
-rw-r--r--spec/ruby/core/file/stat/blockdev_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/blocks_spec.rb27
-rw-r--r--spec/ruby/core/file/stat/chardev_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/comparison_spec.rb66
-rw-r--r--spec/ruby/core/file/stat/ctime_spec.rb18
-rw-r--r--spec/ruby/core/file/stat/dev_major_spec.rb23
-rw-r--r--spec/ruby/core/file/stat/dev_minor_spec.rb23
-rw-r--r--spec/ruby/core/file/stat/dev_spec.rb15
-rw-r--r--spec/ruby/core/file/stat/directory_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/executable_real_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/executable_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/file_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/fixtures/classes.rb5
-rw-r--r--spec/ruby/core/file/stat/ftype_spec.rb64
-rw-r--r--spec/ruby/core/file/stat/gid_spec.rb19
-rw-r--r--spec/ruby/core/file/stat/grpowned_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/ino_spec.rb28
-rw-r--r--spec/ruby/core/file/stat/inspect_spec.rb26
-rw-r--r--spec/ruby/core/file/stat/mode_spec.rb19
-rw-r--r--spec/ruby/core/file/stat/mtime_spec.rb18
-rw-r--r--spec/ruby/core/file/stat/new_spec.rb32
-rw-r--r--spec/ruby/core/file/stat/nlink_spec.rb21
-rw-r--r--spec/ruby/core/file/stat/owned_spec.rb33
-rw-r--r--spec/ruby/core/file/stat/pipe_spec.rb32
-rw-r--r--spec/ruby/core/file/stat/rdev_major_spec.rb31
-rw-r--r--spec/ruby/core/file/stat/rdev_minor_spec.rb31
-rw-r--r--spec/ruby/core/file/stat/rdev_spec.rb15
-rw-r--r--spec/ruby/core/file/stat/readable_real_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/readable_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/setgid_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/setuid_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/size_spec.rb21
-rw-r--r--spec/ruby/core/file/stat/socket_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/sticky_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/symlink_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/uid_spec.rb18
-rw-r--r--spec/ruby/core/file/stat/world_readable_spec.rb11
-rw-r--r--spec/ruby/core/file/stat/world_writable_spec.rb11
-rw-r--r--spec/ruby/core/file/stat/writable_real_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/writable_spec.rb7
-rw-r--r--spec/ruby/core/file/stat/zero_spec.rb7
-rw-r--r--spec/ruby/core/file/stat_spec.rb55
-rw-r--r--spec/ruby/core/file/sticky_spec.rb50
-rw-r--r--spec/ruby/core/file/symlink_spec.rb57
-rw-r--r--spec/ruby/core/file/to_path_spec.rb6
-rw-r--r--spec/ruby/core/file/truncate_spec.rb177
-rw-r--r--spec/ruby/core/file/umask_spec.rb57
-rw-r--r--spec/ruby/core/file/unlink_spec.rb6
-rw-r--r--spec/ruby/core/file/utime_spec.rb104
-rw-r--r--spec/ruby/core/file/world_readable_spec.rb12
-rw-r--r--spec/ruby/core/file/world_writable_spec.rb12
-rw-r--r--spec/ruby/core/file/writable_real_spec.rb7
-rw-r--r--spec/ruby/core/file/writable_spec.rb7
-rw-r--r--spec/ruby/core/file/zero_spec.rb13
-rw-r--r--spec/ruby/core/filetest/blockdev_spec.rb6
-rw-r--r--spec/ruby/core/filetest/chardev_spec.rb6
-rw-r--r--spec/ruby/core/filetest/directory_spec.rb10
-rw-r--r--spec/ruby/core/filetest/executable_real_spec.rb7
-rw-r--r--spec/ruby/core/filetest/executable_spec.rb7
-rw-r--r--spec/ruby/core/filetest/exist_spec.rb6
-rw-r--r--spec/ruby/core/filetest/file_spec.rb10
-rw-r--r--spec/ruby/core/filetest/grpowned_spec.rb10
-rw-r--r--spec/ruby/core/filetest/identical_spec.rb6
-rw-r--r--spec/ruby/core/filetest/owned_spec.rb6
-rw-r--r--spec/ruby/core/filetest/pipe_spec.rb6
-rw-r--r--spec/ruby/core/filetest/readable_real_spec.rb7
-rw-r--r--spec/ruby/core/filetest/readable_spec.rb7
-rw-r--r--spec/ruby/core/filetest/setgid_spec.rb6
-rw-r--r--spec/ruby/core/filetest/setuid_spec.rb6
-rw-r--r--spec/ruby/core/filetest/size_spec.rb34
-rw-r--r--spec/ruby/core/filetest/socket_spec.rb6
-rw-r--r--spec/ruby/core/filetest/sticky_spec.rb7
-rw-r--r--spec/ruby/core/filetest/symlink_spec.rb10
-rw-r--r--spec/ruby/core/filetest/world_readable_spec.rb5
-rw-r--r--spec/ruby/core/filetest/world_writable_spec.rb5
-rw-r--r--spec/ruby/core/filetest/writable_real_spec.rb7
-rw-r--r--spec/ruby/core/filetest/writable_spec.rb7
-rw-r--r--spec/ruby/core/filetest/zero_spec.rb13
-rw-r--r--spec/ruby/core/float/abs_spec.rb6
-rw-r--r--spec/ruby/core/float/angle_spec.rb6
-rw-r--r--spec/ruby/core/float/arg_spec.rb6
-rw-r--r--spec/ruby/core/float/case_compare_spec.rb6
-rw-r--r--spec/ruby/core/float/ceil_spec.rb21
-rw-r--r--spec/ruby/core/float/coerce_spec.rb18
-rw-r--r--spec/ruby/core/float/comparison_spec.rb113
-rw-r--r--spec/ruby/core/float/constants_spec.rb55
-rw-r--r--spec/ruby/core/float/denominator_spec.rb29
-rw-r--r--spec/ruby/core/float/divide_spec.rb43
-rw-r--r--spec/ruby/core/float/divmod_spec.rb43
-rw-r--r--spec/ruby/core/float/dup_spec.rb8
-rw-r--r--spec/ruby/core/float/eql_spec.rb16
-rw-r--r--spec/ruby/core/float/equal_value_spec.rb6
-rw-r--r--spec/ruby/core/float/exponent_spec.rb15
-rw-r--r--spec/ruby/core/float/fdiv_spec.rb6
-rw-r--r--spec/ruby/core/float/finite_spec.rb19
-rw-r--r--spec/ruby/core/float/fixtures/classes.rb4
-rw-r--r--spec/ruby/core/float/fixtures/coerce.rb15
-rw-r--r--spec/ruby/core/float/float_spec.rb19
-rw-r--r--spec/ruby/core/float/floor_spec.rb21
-rw-r--r--spec/ruby/core/float/gt_spec.rb38
-rw-r--r--spec/ruby/core/float/gte_spec.rb38
-rw-r--r--spec/ruby/core/float/hash_spec.rb11
-rw-r--r--spec/ruby/core/float/infinite_spec.rb19
-rw-r--r--spec/ruby/core/float/inspect_spec.rb6
-rw-r--r--spec/ruby/core/float/lt_spec.rb38
-rw-r--r--spec/ruby/core/float/lte_spec.rb39
-rw-r--r--spec/ruby/core/float/magnitude_spec.rb5
-rw-r--r--spec/ruby/core/float/minus_spec.rb12
-rw-r--r--spec/ruby/core/float/modulo_spec.rb10
-rw-r--r--spec/ruby/core/float/multiply_spec.rb17
-rw-r--r--spec/ruby/core/float/nan_spec.rb9
-rw-r--r--spec/ruby/core/float/negative_spec.rb33
-rw-r--r--spec/ruby/core/float/next_float_spec.rb49
-rw-r--r--spec/ruby/core/float/numerator_spec.rb39
-rw-r--r--spec/ruby/core/float/phase_spec.rb6
-rw-r--r--spec/ruby/core/float/plus_spec.rb12
-rw-r--r--spec/ruby/core/float/positive_spec.rb33
-rw-r--r--spec/ruby/core/float/prev_float_spec.rb49
-rw-r--r--spec/ruby/core/float/quo_spec.rb6
-rw-r--r--spec/ruby/core/float/rationalize_spec.rb43
-rw-r--r--spec/ruby/core/float/round_spec.rb194
-rw-r--r--spec/ruby/core/float/shared/abs.rb21
-rw-r--r--spec/ruby/core/float/shared/arg.rb36
-rw-r--r--spec/ruby/core/float/shared/arithmetic_exception_in_coerce.rb11
-rw-r--r--spec/ruby/core/float/shared/comparison_exception_in_coerce.rb11
-rw-r--r--spec/ruby/core/float/shared/equal.rb38
-rw-r--r--spec/ruby/core/float/shared/modulo.rb48
-rw-r--r--spec/ruby/core/float/shared/quo.rb59
-rw-r--r--spec/ruby/core/float/shared/to_i.rb14
-rw-r--r--spec/ruby/core/float/shared/to_s.rb308
-rw-r--r--spec/ruby/core/float/to_f_spec.rb9
-rw-r--r--spec/ruby/core/float/to_i_spec.rb6
-rw-r--r--spec/ruby/core/float/to_int_spec.rb6
-rw-r--r--spec/ruby/core/float/to_r_spec.rb5
-rw-r--r--spec/ruby/core/float/to_s_spec.rb6
-rw-r--r--spec/ruby/core/float/truncate_spec.rb14
-rw-r--r--spec/ruby/core/float/uminus_spec.rb28
-rw-r--r--spec/ruby/core/float/uplus_spec.rb9
-rw-r--r--spec/ruby/core/float/zero_spec.rb9
-rw-r--r--spec/ruby/core/gc/auto_compact_spec.rb26
-rw-r--r--spec/ruby/core/gc/count_spec.rb17
-rw-r--r--spec/ruby/core/gc/disable_spec.rb18
-rw-r--r--spec/ruby/core/gc/enable_spec.rb13
-rw-r--r--spec/ruby/core/gc/garbage_collect_spec.rb15
-rw-r--r--spec/ruby/core/gc/measure_total_time_spec.rb19
-rw-r--r--spec/ruby/core/gc/profiler/clear_spec.rb5
-rw-r--r--spec/ruby/core/gc/profiler/disable_spec.rb16
-rw-r--r--spec/ruby/core/gc/profiler/enable_spec.rb17
-rw-r--r--spec/ruby/core/gc/profiler/enabled_spec.rb21
-rw-r--r--spec/ruby/core/gc/profiler/report_spec.rb5
-rw-r--r--spec/ruby/core/gc/profiler/result_spec.rb7
-rw-r--r--spec/ruby/core/gc/profiler/total_time_spec.rb7
-rw-r--r--spec/ruby/core/gc/start_spec.rb12
-rw-r--r--spec/ruby/core/gc/stat_spec.rb62
-rw-r--r--spec/ruby/core/gc/stress_spec.rb27
-rw-r--r--spec/ruby/core/gc/total_time_spec.rb15
-rw-r--r--spec/ruby/core/hash/allocate_spec.rb15
-rw-r--r--spec/ruby/core/hash/any_spec.rb30
-rw-r--r--spec/ruby/core/hash/assoc_spec.rb50
-rw-r--r--spec/ruby/core/hash/clear_spec.rb32
-rw-r--r--spec/ruby/core/hash/clone_spec.rb12
-rw-r--r--spec/ruby/core/hash/compact_spec.rb59
-rw-r--r--spec/ruby/core/hash/compare_by_identity_spec.rb138
-rw-r--r--spec/ruby/core/hash/constructor_spec.rb110
-rw-r--r--spec/ruby/core/hash/deconstruct_keys_spec.rb23
-rw-r--r--spec/ruby/core/hash/default_proc_spec.rb80
-rw-r--r--spec/ruby/core/hash/default_spec.rb46
-rw-r--r--spec/ruby/core/hash/delete_if_spec.rb44
-rw-r--r--spec/ruby/core/hash/delete_spec.rb44
-rw-r--r--spec/ruby/core/hash/dig_spec.rb66
-rw-r--r--spec/ruby/core/hash/each_key_spec.rb23
-rw-r--r--spec/ruby/core/hash/each_pair_spec.rb11
-rw-r--r--spec/ruby/core/hash/each_spec.rb11
-rw-r--r--spec/ruby/core/hash/each_value_spec.rb23
-rw-r--r--spec/ruby/core/hash/element_reference_spec.rb134
-rw-r--r--spec/ruby/core/hash/element_set_spec.rb7
-rw-r--r--spec/ruby/core/hash/empty_spec.rb15
-rw-r--r--spec/ruby/core/hash/eql_spec.rb9
-rw-r--r--spec/ruby/core/hash/equal_value_spec.rb18
-rw-r--r--spec/ruby/core/hash/except_spec.rb34
-rw-r--r--spec/ruby/core/hash/fetch_spec.rb44
-rw-r--r--spec/ruby/core/hash/fetch_values_spec.rb35
-rw-r--r--spec/ruby/core/hash/filter_spec.rb10
-rw-r--r--spec/ruby/core/hash/fixtures/classes.rb75
-rw-r--r--spec/ruby/core/hash/fixtures/name.rb30
-rw-r--r--spec/ruby/core/hash/flatten_spec.rb62
-rw-r--r--spec/ruby/core/hash/gt_spec.rb42
-rw-r--r--spec/ruby/core/hash/gte_spec.rb42
-rw-r--r--spec/ruby/core/hash/has_key_spec.rb7
-rw-r--r--spec/ruby/core/hash/has_value_spec.rb7
-rw-r--r--spec/ruby/core/hash/hash_spec.rb53
-rw-r--r--spec/ruby/core/hash/include_spec.rb7
-rw-r--r--spec/ruby/core/hash/index_spec.rb9
-rw-r--r--spec/ruby/core/hash/initialize_spec.rb61
-rw-r--r--spec/ruby/core/hash/inspect_spec.rb7
-rw-r--r--spec/ruby/core/hash/invert_spec.rb27
-rw-r--r--spec/ruby/core/hash/keep_if_spec.rb37
-rw-r--r--spec/ruby/core/hash/key_spec.rb12
-rw-r--r--spec/ruby/core/hash/keys_spec.rb23
-rw-r--r--spec/ruby/core/hash/length_spec.rb7
-rw-r--r--spec/ruby/core/hash/lt_spec.rb42
-rw-r--r--spec/ruby/core/hash/lte_spec.rb42
-rw-r--r--spec/ruby/core/hash/member_spec.rb7
-rw-r--r--spec/ruby/core/hash/merge_spec.rb100
-rw-r--r--spec/ruby/core/hash/new_spec.rb36
-rw-r--r--spec/ruby/core/hash/rassoc_spec.rb42
-rw-r--r--spec/ruby/core/hash/rehash_spec.rb84
-rw-r--r--spec/ruby/core/hash/reject_spec.rb95
-rw-r--r--spec/ruby/core/hash/replace_spec.rb7
-rw-r--r--spec/ruby/core/hash/ruby2_keywords_hash_spec.rb59
-rw-r--r--spec/ruby/core/hash/select_spec.rb10
-rw-r--r--spec/ruby/core/hash/shared/comparison.rb15
-rw-r--r--spec/ruby/core/hash/shared/each.rb124
-rw-r--r--spec/ruby/core/hash/shared/eql.rb204
-rw-r--r--spec/ruby/core/hash/shared/equal.rb90
-rw-r--r--spec/ruby/core/hash/shared/greater_than.rb23
-rw-r--r--spec/ruby/core/hash/shared/index.rb37
-rw-r--r--spec/ruby/core/hash/shared/iteration.rb19
-rw-r--r--spec/ruby/core/hash/shared/key.rb38
-rw-r--r--spec/ruby/core/hash/shared/length.rb12
-rw-r--r--spec/ruby/core/hash/shared/less_than.rb23
-rw-r--r--spec/ruby/core/hash/shared/replace.rb51
-rw-r--r--spec/ruby/core/hash/shared/select.rb91
-rw-r--r--spec/ruby/core/hash/shared/store.rb115
-rw-r--r--spec/ruby/core/hash/shared/to_s.rb89
-rw-r--r--spec/ruby/core/hash/shared/update.rb76
-rw-r--r--spec/ruby/core/hash/shared/value.rb14
-rw-r--r--spec/ruby/core/hash/shared/values_at.rb9
-rw-r--r--spec/ruby/core/hash/shift_spec.rb101
-rw-r--r--spec/ruby/core/hash/size_spec.rb7
-rw-r--r--spec/ruby/core/hash/slice_spec.rb53
-rw-r--r--spec/ruby/core/hash/sort_spec.rb17
-rw-r--r--spec/ruby/core/hash/store_spec.rb7
-rw-r--r--spec/ruby/core/hash/to_a_spec.rb39
-rw-r--r--spec/ruby/core/hash/to_h_spec.rb72
-rw-r--r--spec/ruby/core/hash/to_hash_spec.rb14
-rw-r--r--spec/ruby/core/hash/to_proc_spec.rb99
-rw-r--r--spec/ruby/core/hash/to_s_spec.rb7
-rw-r--r--spec/ruby/core/hash/transform_keys_spec.rb147
-rw-r--r--spec/ruby/core/hash/transform_values_spec.rb97
-rw-r--r--spec/ruby/core/hash/try_convert_spec.rb50
-rw-r--r--spec/ruby/core/hash/update_spec.rb7
-rw-r--r--spec/ruby/core/hash/value_spec.rb7
-rw-r--r--spec/ruby/core/hash/values_at_spec.rb7
-rw-r--r--spec/ruby/core/hash/values_spec.rb10
-rw-r--r--spec/ruby/core/integer/abs_spec.rb6
-rw-r--r--spec/ruby/core/integer/allbits_spec.rb37
-rw-r--r--spec/ruby/core/integer/anybits_spec.rb36
-rw-r--r--spec/ruby/core/integer/bit_and_spec.rb97
-rw-r--r--spec/ruby/core/integer/bit_length_spec.rb76
-rw-r--r--spec/ruby/core/integer/bit_or_spec.rb89
-rw-r--r--spec/ruby/core/integer/bit_xor_spec.rb93
-rw-r--r--spec/ruby/core/integer/case_compare_spec.rb6
-rw-r--r--spec/ruby/core/integer/ceil_spec.rb19
-rw-r--r--spec/ruby/core/integer/chr_spec.rb257
-rw-r--r--spec/ruby/core/integer/coerce_spec.rb104
-rw-r--r--spec/ruby/core/integer/comparison_spec.rb177
-rw-r--r--spec/ruby/core/integer/complement_spec.rb20
-rw-r--r--spec/ruby/core/integer/constants_spec.rb41
-rw-r--r--spec/ruby/core/integer/denominator_spec.rb20
-rw-r--r--spec/ruby/core/integer/digits_spec.rb41
-rw-r--r--spec/ruby/core/integer/div_spec.rb146
-rw-r--r--spec/ruby/core/integer/divide_spec.rb89
-rw-r--r--spec/ruby/core/integer/divmod_spec.rb117
-rw-r--r--spec/ruby/core/integer/downto_spec.rb69
-rw-r--r--spec/ruby/core/integer/dup_spec.rb13
-rw-r--r--spec/ruby/core/integer/element_reference_spec.rb188
-rw-r--r--spec/ruby/core/integer/equal_value_spec.rb6
-rw-r--r--spec/ruby/core/integer/even_spec.rb40
-rw-r--r--spec/ruby/core/integer/exponent_spec.rb7
-rw-r--r--spec/ruby/core/integer/fdiv_spec.rb100
-rw-r--r--spec/ruby/core/integer/fixtures/classes.rb4
-rw-r--r--spec/ruby/core/integer/floor_spec.rb19
-rw-r--r--spec/ruby/core/integer/gcd_spec.rb69
-rw-r--r--spec/ruby/core/integer/gcdlcm_spec.rb53
-rw-r--r--spec/ruby/core/integer/gt_spec.rb43
-rw-r--r--spec/ruby/core/integer/gte_spec.rb43
-rw-r--r--spec/ruby/core/integer/integer_spec.rb20
-rw-r--r--spec/ruby/core/integer/lcm_spec.rb58
-rw-r--r--spec/ruby/core/integer/left_shift_spec.rb211
-rw-r--r--spec/ruby/core/integer/lt_spec.rb45
-rw-r--r--spec/ruby/core/integer/lte_spec.rb53
-rw-r--r--spec/ruby/core/integer/magnitude_spec.rb6
-rw-r--r--spec/ruby/core/integer/minus_spec.rb43
-rw-r--r--spec/ruby/core/integer/modulo_spec.rb10
-rw-r--r--spec/ruby/core/integer/multiply_spec.rb45
-rw-r--r--spec/ruby/core/integer/next_spec.rb6
-rw-r--r--spec/ruby/core/integer/nobits_spec.rb36
-rw-r--r--spec/ruby/core/integer/numerator_spec.rb18
-rw-r--r--spec/ruby/core/integer/odd_spec.rb38
-rw-r--r--spec/ruby/core/integer/ord_spec.rb17
-rw-r--r--spec/ruby/core/integer/plus_spec.rb58
-rw-r--r--spec/ruby/core/integer/pow_spec.rb51
-rw-r--r--spec/ruby/core/integer/pred_spec.rb11
-rw-r--r--spec/ruby/core/integer/rationalize_spec.rb39
-rw-r--r--spec/ruby/core/integer/remainder_spec.rb51
-rw-r--r--spec/ruby/core/integer/right_shift_spec.rb233
-rw-r--r--spec/ruby/core/integer/round_spec.rb83
-rw-r--r--spec/ruby/core/integer/shared/abs.rb18
-rw-r--r--spec/ruby/core/integer/shared/arithmetic_coerce.rb31
-rw-r--r--spec/ruby/core/integer/shared/comparison_coerce.rb11
-rw-r--r--spec/ruby/core/integer/shared/equal.rb58
-rw-r--r--spec/ruby/core/integer/shared/exponent.rb126
-rw-r--r--spec/ruby/core/integer/shared/integer_rounding.rb19
-rw-r--r--spec/ruby/core/integer/shared/modulo.rb74
-rw-r--r--spec/ruby/core/integer/shared/next.rb25
-rw-r--r--spec/ruby/core/integer/shared/to_i.rb8
-rw-r--r--spec/ruby/core/integer/size_spec.rb34
-rw-r--r--spec/ruby/core/integer/sqrt_spec.rb31
-rw-r--r--spec/ruby/core/integer/succ_spec.rb6
-rw-r--r--spec/ruby/core/integer/times_spec.rb79
-rw-r--r--spec/ruby/core/integer/to_f_spec.rb23
-rw-r--r--spec/ruby/core/integer/to_i_spec.rb6
-rw-r--r--spec/ruby/core/integer/to_int_spec.rb6
-rw-r--r--spec/ruby/core/integer/to_r_spec.rb26
-rw-r--r--spec/ruby/core/integer/to_s_spec.rb95
-rw-r--r--spec/ruby/core/integer/truncate_spec.rb19
-rw-r--r--spec/ruby/core/integer/try_convert_spec.rb40
-rw-r--r--spec/ruby/core/integer/uminus_spec.rb30
-rw-r--r--spec/ruby/core/integer/upto_spec.rb69
-rw-r--r--spec/ruby/core/integer/zero_spec.rb21
-rw-r--r--spec/ruby/core/io/advise_spec.rb86
-rw-r--r--spec/ruby/core/io/binmode_spec.rb64
-rw-r--r--spec/ruby/core/io/binread_spec.rb47
-rw-r--r--spec/ruby/core/io/binwrite_spec.rb6
-rw-r--r--spec/ruby/core/io/bytes_spec.rb47
-rw-r--r--spec/ruby/core/io/chars_spec.rb30
-rw-r--r--spec/ruby/core/io/close_on_exec_spec.rb76
-rw-r--r--spec/ruby/core/io/close_read_spec.rb60
-rw-r--r--spec/ruby/core/io/close_spec.rb118
-rw-r--r--spec/ruby/core/io/close_write_spec.rb64
-rw-r--r--spec/ruby/core/io/closed_spec.rb20
-rw-r--r--spec/ruby/core/io/codepoints_spec.rb38
-rw-r--r--spec/ruby/core/io/constants_spec.rb19
-rw-r--r--spec/ruby/core/io/copy_stream_spec.rb322
-rw-r--r--spec/ruby/core/io/dup_spec.rb106
-rw-r--r--spec/ruby/core/io/each_byte_spec.rb57
-rw-r--r--spec/ruby/core/io/each_char_spec.rb12
-rw-r--r--spec/ruby/core/io/each_codepoint_spec.rb43
-rw-r--r--spec/ruby/core/io/each_line_spec.rb11
-rw-r--r--spec/ruby/core/io/each_spec.rb11
-rw-r--r--spec/ruby/core/io/eof_spec.rb107
-rw-r--r--spec/ruby/core/io/external_encoding_spec.rb225
-rw-r--r--spec/ruby/core/io/fcntl_spec.rb8
-rw-r--r--spec/ruby/core/io/fdatasync_spec.rb5
-rw-r--r--spec/ruby/core/io/fileno_spec.rb12
-rw-r--r--spec/ruby/core/io/fixtures/bom_UTF-16BE.txtbin0 -> 20 bytes-rw-r--r--spec/ruby/core/io/fixtures/bom_UTF-16LE.txtbin0 -> 20 bytes-rw-r--r--spec/ruby/core/io/fixtures/bom_UTF-32BE.txtbin0 -> 40 bytes-rw-r--r--spec/ruby/core/io/fixtures/bom_UTF-32LE.txtbin0 -> 40 bytes-rw-r--r--spec/ruby/core/io/fixtures/bom_UTF-8.txt1
-rw-r--r--spec/ruby/core/io/fixtures/classes.rb218
-rw-r--r--spec/ruby/core/io/fixtures/copy_in_out.rb2
-rw-r--r--spec/ruby/core/io/fixtures/copy_stream.txt6
-rw-r--r--spec/ruby/core/io/fixtures/empty.txt0
-rw-r--r--spec/ruby/core/io/fixtures/incomplete.txt1
-rw-r--r--spec/ruby/core/io/fixtures/lines.txt9
-rw-r--r--spec/ruby/core/io/fixtures/no_bom_UTF-8.txt1
-rw-r--r--spec/ruby/core/io/fixtures/numbered_lines.txt5
-rw-r--r--spec/ruby/core/io/fixtures/one_byte.txt1
-rw-r--r--spec/ruby/core/io/fixtures/read_binary.txt1
-rw-r--r--spec/ruby/core/io/fixtures/read_euc_jp.txt1
-rw-r--r--spec/ruby/core/io/fixtures/read_text.txt1
-rw-r--r--spec/ruby/core/io/fixtures/reopen_stdout.rb3
-rw-r--r--spec/ruby/core/io/flush_spec.rb37
-rw-r--r--spec/ruby/core/io/for_fd_spec.rb10
-rw-r--r--spec/ruby/core/io/foreach_spec.rb81
-rw-r--r--spec/ruby/core/io/fsync_spec.rb24
-rw-r--r--spec/ruby/core/io/getbyte_spec.rb42
-rw-r--r--spec/ruby/core/io/getc_spec.rb42
-rw-r--r--spec/ruby/core/io/gets_spec.rb315
-rw-r--r--spec/ruby/core/io/initialize_spec.rb49
-rw-r--r--spec/ruby/core/io/inspect_spec.rb23
-rw-r--r--spec/ruby/core/io/internal_encoding_spec.rb147
-rw-r--r--spec/ruby/core/io/io_spec.rb11
-rw-r--r--spec/ruby/core/io/ioctl_spec.rb32
-rw-r--r--spec/ruby/core/io/isatty_spec.rb6
-rw-r--r--spec/ruby/core/io/lineno_spec.rb136
-rw-r--r--spec/ruby/core/io/lines_spec.rb46
-rw-r--r--spec/ruby/core/io/new_spec.rb12
-rw-r--r--spec/ruby/core/io/nonblock_spec.rb70
-rw-r--r--spec/ruby/core/io/open_spec.rb86
-rw-r--r--spec/ruby/core/io/output_spec.rb27
-rw-r--r--spec/ruby/core/io/path_spec.rb14
-rw-r--r--spec/ruby/core/io/pid_spec.rb35
-rw-r--r--spec/ruby/core/io/pipe_spec.rb225
-rw-r--r--spec/ruby/core/io/popen_spec.rb271
-rw-r--r--spec/ruby/core/io/pos_spec.rb11
-rw-r--r--spec/ruby/core/io/pread_spec.rb50
-rw-r--r--spec/ruby/core/io/print_spec.rb66
-rw-r--r--spec/ruby/core/io/printf_spec.rb32
-rw-r--r--spec/ruby/core/io/putc_spec.rb11
-rw-r--r--spec/ruby/core/io/puts_spec.rb139
-rw-r--r--spec/ruby/core/io/pwrite_spec.rb43
-rw-r--r--spec/ruby/core/io/read_nonblock_spec.rb148
-rw-r--r--spec/ruby/core/io/read_spec.rb627
-rw-r--r--spec/ruby/core/io/readbyte_spec.rb24
-rw-r--r--spec/ruby/core/io/readchar_spec.rb110
-rw-r--r--spec/ruby/core/io/readline_spec.rb86
-rw-r--r--spec/ruby/core/io/readlines_spec.rb236
-rw-r--r--spec/ruby/core/io/readpartial_spec.rb111
-rw-r--r--spec/ruby/core/io/reopen_spec.rb313
-rw-r--r--spec/ruby/core/io/rewind_spec.rb53
-rw-r--r--spec/ruby/core/io/seek_spec.rb79
-rw-r--r--spec/ruby/core/io/select_spec.rb120
-rw-r--r--spec/ruby/core/io/set_encoding_by_bom_spec.rb262
-rw-r--r--spec/ruby/core/io/set_encoding_spec.rb238
-rw-r--r--spec/ruby/core/io/shared/binwrite.rb78
-rw-r--r--spec/ruby/core/io/shared/chars.rb73
-rw-r--r--spec/ruby/core/io/shared/codepoints.rb54
-rw-r--r--spec/ruby/core/io/shared/each.rb267
-rw-r--r--spec/ruby/core/io/shared/gets_ascii.rb19
-rw-r--r--spec/ruby/core/io/shared/new.rb404
-rw-r--r--spec/ruby/core/io/shared/pos.rb78
-rw-r--r--spec/ruby/core/io/shared/readlines.rb263
-rw-r--r--spec/ruby/core/io/shared/tty.rb24
-rw-r--r--spec/ruby/core/io/shared/write.rb99
-rw-r--r--spec/ruby/core/io/stat_spec.rb24
-rw-r--r--spec/ruby/core/io/sync_spec.rb64
-rw-r--r--spec/ruby/core/io/sysopen_spec.rb50
-rw-r--r--spec/ruby/core/io/sysread_spec.rb132
-rw-r--r--spec/ruby/core/io/sysseek_spec.rb49
-rw-r--r--spec/ruby/core/io/syswrite_spec.rb81
-rw-r--r--spec/ruby/core/io/tell_spec.rb7
-rw-r--r--spec/ruby/core/io/to_i_spec.rb12
-rw-r--r--spec/ruby/core/io/to_io_spec.rb21
-rw-r--r--spec/ruby/core/io/try_convert_spec.rb49
-rw-r--r--spec/ruby/core/io/tty_spec.rb6
-rw-r--r--spec/ruby/core/io/ungetbyte_spec.rb54
-rw-r--r--spec/ruby/core/io/ungetc_spec.rb148
-rw-r--r--spec/ruby/core/io/write_nonblock_spec.rb95
-rw-r--r--spec/ruby/core/io/write_spec.rb204
-rw-r--r--spec/ruby/core/kernel/Array_spec.rb97
-rw-r--r--spec/ruby/core/kernel/Complex_spec.rb272
-rw-r--r--spec/ruby/core/kernel/Float_spec.rb345
-rw-r--r--spec/ruby/core/kernel/Hash_spec.rb63
-rw-r--r--spec/ruby/core/kernel/Integer_spec.rb801
-rw-r--r--spec/ruby/core/kernel/Rational_spec.rb6
-rw-r--r--spec/ruby/core/kernel/String_spec.rb106
-rw-r--r--spec/ruby/core/kernel/__callee___spec.rb48
-rw-r--r--spec/ruby/core/kernel/__dir___spec.rb37
-rw-r--r--spec/ruby/core/kernel/__method___spec.rb40
-rw-r--r--spec/ruby/core/kernel/abort_spec.rb15
-rw-r--r--spec/ruby/core/kernel/at_exit_spec.rb70
-rw-r--r--spec/ruby/core/kernel/autoload_spec.rb175
-rw-r--r--spec/ruby/core/kernel/backtick_spec.rb84
-rw-r--r--spec/ruby/core/kernel/binding_spec.rb51
-rw-r--r--spec/ruby/core/kernel/block_given_spec.rb38
-rw-r--r--spec/ruby/core/kernel/caller_locations_spec.rb84
-rw-r--r--spec/ruby/core/kernel/caller_spec.rb70
-rw-r--r--spec/ruby/core/kernel/case_compare_spec.rb135
-rw-r--r--spec/ruby/core/kernel/catch_spec.rb127
-rw-r--r--spec/ruby/core/kernel/chomp_spec.rb65
-rw-r--r--spec/ruby/core/kernel/chop_spec.rb53
-rw-r--r--spec/ruby/core/kernel/class_spec.rb26
-rw-r--r--spec/ruby/core/kernel/clone_spec.rb209
-rw-r--r--spec/ruby/core/kernel/comparison_spec.rb31
-rw-r--r--spec/ruby/core/kernel/define_singleton_method_spec.rb114
-rw-r--r--spec/ruby/core/kernel/display_spec.rb6
-rw-r--r--spec/ruby/core/kernel/dup_spec.rb67
-rw-r--r--spec/ruby/core/kernel/enum_for_spec.rb5
-rw-r--r--spec/ruby/core/kernel/eql_spec.rb10
-rw-r--r--spec/ruby/core/kernel/equal_value_spec.rb15
-rw-r--r--spec/ruby/core/kernel/eval_spec.rb439
-rw-r--r--spec/ruby/core/kernel/exec_spec.rb18
-rw-r--r--spec/ruby/core/kernel/exit_spec.rb27
-rw-r--r--spec/ruby/core/kernel/extend_spec.rb79
-rw-r--r--spec/ruby/core/kernel/fail_spec.rb42
-rw-r--r--spec/ruby/core/kernel/fixtures/Complex.rb5
-rw-r--r--spec/ruby/core/kernel/fixtures/__callee__.rb34
-rw-r--r--spec/ruby/core/kernel/fixtures/__dir__.rb2
-rw-r--r--spec/ruby/core/kernel/fixtures/__method__.rb34
-rw-r--r--spec/ruby/core/kernel/fixtures/at_exit.rb3
-rw-r--r--spec/ruby/core/kernel/fixtures/autoload_b.rb5
-rw-r--r--spec/ruby/core/kernel/fixtures/autoload_d.rb5
-rw-r--r--spec/ruby/core/kernel/fixtures/autoload_from_included_module.rb9
-rw-r--r--spec/ruby/core/kernel/fixtures/autoload_from_included_module2.rb9
-rw-r--r--spec/ruby/core/kernel/fixtures/autoload_frozen.rb7
-rw-r--r--spec/ruby/core/kernel/fixtures/caller.rb7
-rw-r--r--spec/ruby/core/kernel/fixtures/caller_at_exit.rb7
-rw-r--r--spec/ruby/core/kernel/fixtures/caller_locations.rb7
-rw-r--r--spec/ruby/core/kernel/fixtures/chomp.rb4
-rw-r--r--spec/ruby/core/kernel/fixtures/chomp_f.rb4
-rw-r--r--spec/ruby/core/kernel/fixtures/chop.rb4
-rw-r--r--spec/ruby/core/kernel/fixtures/chop_f.rb4
-rw-r--r--spec/ruby/core/kernel/fixtures/classes.rb504
-rw-r--r--spec/ruby/core/kernel/fixtures/eval_locals.rb6
-rw-r--r--spec/ruby/core/kernel/fixtures/eval_return_with_lambda.rb12
-rw-r--r--spec/ruby/core/kernel/fixtures/eval_return_without_lambda.rb14
-rw-r--r--spec/ruby/core/kernel/fixtures/singleton_methods.rb13
-rw-r--r--spec/ruby/core/kernel/fixtures/test.rb362
-rw-r--r--spec/ruby/core/kernel/fixtures/warn_core_method.rb14
-rw-r--r--spec/ruby/core/kernel/fixtures/warn_require.rb1
-rw-r--r--spec/ruby/core/kernel/fixtures/warn_require_caller.rb2
-rw-r--r--spec/ruby/core/kernel/fork_spec.rb15
-rw-r--r--spec/ruby/core/kernel/format_spec.rb15
-rw-r--r--spec/ruby/core/kernel/freeze_spec.rb91
-rw-r--r--spec/ruby/core/kernel/frozen_spec.rb76
-rw-r--r--spec/ruby/core/kernel/gets_spec.rb17
-rw-r--r--spec/ruby/core/kernel/global_variables_spec.rb26
-rw-r--r--spec/ruby/core/kernel/gsub_spec.rb96
-rw-r--r--spec/ruby/core/kernel/initialize_clone_spec.rb28
-rw-r--r--spec/ruby/core/kernel/initialize_copy_spec.rb29
-rw-r--r--spec/ruby/core/kernel/initialize_dup_spec.rb20
-rw-r--r--spec/ruby/core/kernel/inspect_spec.rb31
-rw-r--r--spec/ruby/core/kernel/instance_of_spec.rb40
-rw-r--r--spec/ruby/core/kernel/instance_variable_defined_spec.rb41
-rw-r--r--spec/ruby/core/kernel/instance_variable_get_spec.rb111
-rw-r--r--spec/ruby/core/kernel/instance_variable_set_spec.rb105
-rw-r--r--spec/ruby/core/kernel/instance_variables_spec.rb40
-rw-r--r--spec/ruby/core/kernel/is_a_spec.rb6
-rw-r--r--spec/ruby/core/kernel/iterator_spec.rb14
-rw-r--r--spec/ruby/core/kernel/itself_spec.rb9
-rw-r--r--spec/ruby/core/kernel/kind_of_spec.rb6
-rw-r--r--spec/ruby/core/kernel/lambda_spec.rb150
-rw-r--r--spec/ruby/core/kernel/load_spec.rb40
-rw-r--r--spec/ruby/core/kernel/local_variables_spec.rb48
-rw-r--r--spec/ruby/core/kernel/loop_spec.rb79
-rw-r--r--spec/ruby/core/kernel/match_spec.rb30
-rw-r--r--spec/ruby/core/kernel/method_spec.rb61
-rw-r--r--spec/ruby/core/kernel/methods_spec.rb101
-rw-r--r--spec/ruby/core/kernel/nil_spec.rb12
-rw-r--r--spec/ruby/core/kernel/not_match_spec.rb21
-rw-r--r--spec/ruby/core/kernel/object_id_spec.rb6
-rw-r--r--spec/ruby/core/kernel/open_spec.rb167
-rw-r--r--spec/ruby/core/kernel/p_spec.rb85
-rw-r--r--spec/ruby/core/kernel/pp_spec.rb9
-rw-r--r--spec/ruby/core/kernel/print_spec.rb24
-rw-r--r--spec/ruby/core/kernel/printf_spec.rb63
-rw-r--r--spec/ruby/core/kernel/private_methods_spec.rb69
-rw-r--r--spec/ruby/core/kernel/proc_spec.rb58
-rw-r--r--spec/ruby/core/kernel/protected_methods_spec.rb69
-rw-r--r--spec/ruby/core/kernel/public_method_spec.rb32
-rw-r--r--spec/ruby/core/kernel/public_methods_spec.rb76
-rw-r--r--spec/ruby/core/kernel/public_send_spec.rb116
-rw-r--r--spec/ruby/core/kernel/putc_spec.rb39
-rw-r--r--spec/ruby/core/kernel/puts_spec.rb29
-rw-r--r--spec/ruby/core/kernel/raise_spec.rb57
-rw-r--r--spec/ruby/core/kernel/rand_spec.rb197
-rw-r--r--spec/ruby/core/kernel/readline_spec.rb12
-rw-r--r--spec/ruby/core/kernel/readlines_spec.rb12
-rw-r--r--spec/ruby/core/kernel/remove_instance_variable_spec.rb72
-rw-r--r--spec/ruby/core/kernel/require_relative_spec.rb437
-rw-r--r--spec/ruby/core/kernel/require_spec.rb34
-rw-r--r--spec/ruby/core/kernel/respond_to_missing_spec.rb100
-rw-r--r--spec/ruby/core/kernel/respond_to_spec.rb72
-rw-r--r--spec/ruby/core/kernel/select_spec.rb18
-rw-r--r--spec/ruby/core/kernel/send_spec.rb68
-rw-r--r--spec/ruby/core/kernel/set_trace_func_spec.rb12
-rw-r--r--spec/ruby/core/kernel/shared/dup_clone.rb91
-rw-r--r--spec/ruby/core/kernel/shared/kind_of.rb55
-rw-r--r--spec/ruby/core/kernel/shared/lambda.rb11
-rw-r--r--spec/ruby/core/kernel/shared/load.rb207
-rw-r--r--spec/ruby/core/kernel/shared/method.rb56
-rw-r--r--spec/ruby/core/kernel/shared/require.rb808
-rw-r--r--spec/ruby/core/kernel/shared/sprintf.rb993
-rw-r--r--spec/ruby/core/kernel/shared/sprintf_encoding.rb67
-rw-r--r--spec/ruby/core/kernel/shared/then.rb20
-rw-r--r--spec/ruby/core/kernel/singleton_class_spec.rb29
-rw-r--r--spec/ruby/core/kernel/singleton_method_spec.rb41
-rw-r--r--spec/ruby/core/kernel/singleton_methods_spec.rb192
-rw-r--r--spec/ruby/core/kernel/sleep_spec.rb62
-rw-r--r--spec/ruby/core/kernel/spawn_spec.rb25
-rw-r--r--spec/ruby/core/kernel/sprintf_spec.rb24
-rw-r--r--spec/ruby/core/kernel/srand_spec.rb73
-rw-r--r--spec/ruby/core/kernel/sub_spec.rb26
-rw-r--r--spec/ruby/core/kernel/syscall_spec.rb12
-rw-r--r--spec/ruby/core/kernel/system_spec.rb115
-rw-r--r--spec/ruby/core/kernel/taint_spec.rb19
-rw-r--r--spec/ruby/core/kernel/tainted_spec.rb21
-rw-r--r--spec/ruby/core/kernel/tap_spec.rb13
-rw-r--r--spec/ruby/core/kernel/test_spec.rb109
-rw-r--r--spec/ruby/core/kernel/then_spec.rb6
-rw-r--r--spec/ruby/core/kernel/throw_spec.rb80
-rw-r--r--spec/ruby/core/kernel/to_enum_spec.rb5
-rw-r--r--spec/ruby/core/kernel/to_s_spec.rb8
-rw-r--r--spec/ruby/core/kernel/trace_var_spec.rb54
-rw-r--r--spec/ruby/core/kernel/trap_spec.rb9
-rw-r--r--spec/ruby/core/kernel/trust_spec.rb20
-rw-r--r--spec/ruby/core/kernel/untaint_spec.rb20
-rw-r--r--spec/ruby/core/kernel/untrace_var_spec.rb12
-rw-r--r--spec/ruby/core/kernel/untrust_spec.rb19
-rw-r--r--spec/ruby/core/kernel/untrusted_spec.rb20
-rw-r--r--spec/ruby/core/kernel/warn_spec.rb309
-rw-r--r--spec/ruby/core/kernel/yield_self_spec.rb6
-rw-r--r--spec/ruby/core/main/define_method_spec.rb28
-rw-r--r--spec/ruby/core/main/fixtures/classes.rb26
-rw-r--r--spec/ruby/core/main/fixtures/string_refinement.rb7
-rw-r--r--spec/ruby/core/main/fixtures/string_refinement_user.rb11
-rw-r--r--spec/ruby/core/main/fixtures/using.rb1
-rw-r--r--spec/ruby/core/main/fixtures/using_in_main.rb5
-rw-r--r--spec/ruby/core/main/fixtures/using_in_method.rb5
-rw-r--r--spec/ruby/core/main/fixtures/wrapped_include.rb1
-rw-r--r--spec/ruby/core/main/include_spec.rb16
-rw-r--r--spec/ruby/core/main/private_spec.rb52
-rw-r--r--spec/ruby/core/main/public_spec.rb53
-rw-r--r--spec/ruby/core/main/ruby2_keywords_spec.rb9
-rw-r--r--spec/ruby/core/main/to_s_spec.rb7
-rw-r--r--spec/ruby/core/main/using_spec.rb152
-rw-r--r--spec/ruby/core/marshal/dump_spec.rb650
-rw-r--r--spec/ruby/core/marshal/fixtures/classes.rb4
-rw-r--r--spec/ruby/core/marshal/fixtures/marshal_data.rb420
-rw-r--r--spec/ruby/core/marshal/fixtures/random.dumpbin0 -> 2520 bytes-rw-r--r--spec/ruby/core/marshal/float_spec.rb77
-rw-r--r--spec/ruby/core/marshal/load_spec.rb6
-rw-r--r--spec/ruby/core/marshal/major_version_spec.rb7
-rw-r--r--spec/ruby/core/marshal/minor_version_spec.rb7
-rw-r--r--spec/ruby/core/marshal/restore_spec.rb6
-rw-r--r--spec/ruby/core/marshal/shared/load.rb987
-rw-r--r--spec/ruby/core/matchdata/allocate_spec.rb8
-rw-r--r--spec/ruby/core/matchdata/begin_spec.rb104
-rw-r--r--spec/ruby/core/matchdata/captures_spec.rb15
-rw-r--r--spec/ruby/core/matchdata/dup_spec.rb14
-rw-r--r--spec/ruby/core/matchdata/element_reference_spec.rb116
-rw-r--r--spec/ruby/core/matchdata/end_spec.rb104
-rw-r--r--spec/ruby/core/matchdata/eql_spec.rb6
-rw-r--r--spec/ruby/core/matchdata/equal_value_spec.rb6
-rw-r--r--spec/ruby/core/matchdata/fixtures/classes.rb3
-rw-r--r--spec/ruby/core/matchdata/hash_spec.rb5
-rw-r--r--spec/ruby/core/matchdata/inspect_spec.rb23
-rw-r--r--spec/ruby/core/matchdata/length_spec.rb6
-rw-r--r--spec/ruby/core/matchdata/match_length_spec.rb34
-rw-r--r--spec/ruby/core/matchdata/match_spec.rb34
-rw-r--r--spec/ruby/core/matchdata/named_captures_spec.rb15
-rw-r--r--spec/ruby/core/matchdata/names_spec.rb33
-rw-r--r--spec/ruby/core/matchdata/offset_spec.rb30
-rw-r--r--spec/ruby/core/matchdata/post_match_spec.rb26
-rw-r--r--spec/ruby/core/matchdata/pre_match_spec.rb26
-rw-r--r--spec/ruby/core/matchdata/regexp_spec.rb24
-rw-r--r--spec/ruby/core/matchdata/shared/eql.rb26
-rw-r--r--spec/ruby/core/matchdata/shared/length.rb5
-rw-r--r--spec/ruby/core/matchdata/size_spec.rb6
-rw-r--r--spec/ruby/core/matchdata/string_spec.rb25
-rw-r--r--spec/ruby/core/matchdata/to_a_spec.rb15
-rw-r--r--spec/ruby/core/matchdata/to_s_spec.rb15
-rw-r--r--spec/ruby/core/matchdata/values_at_spec.rb76
-rw-r--r--spec/ruby/core/math/acos_spec.rb56
-rw-r--r--spec/ruby/core/math/acosh_spec.rb41
-rw-r--r--spec/ruby/core/math/asin_spec.rb48
-rw-r--r--spec/ruby/core/math/asinh_spec.rb42
-rw-r--r--spec/ruby/core/math/atan2_spec.rb54
-rw-r--r--spec/ruby/core/math/atan_spec.rb40
-rw-r--r--spec/ruby/core/math/atanh_spec.rb14
-rw-r--r--spec/ruby/core/math/cbrt_spec.rb27
-rw-r--r--spec/ruby/core/math/constants_spec.rb22
-rw-r--r--spec/ruby/core/math/cos_spec.rb42
-rw-r--r--spec/ruby/core/math/cosh_spec.rb37
-rw-r--r--spec/ruby/core/math/erf_spec.rb44
-rw-r--r--spec/ruby/core/math/erfc_spec.rb43
-rw-r--r--spec/ruby/core/math/exp_spec.rb37
-rw-r--r--spec/ruby/core/math/fixtures/classes.rb28
-rw-r--r--spec/ruby/core/math/frexp_spec.rb37
-rw-r--r--spec/ruby/core/math/gamma_spec.rb69
-rw-r--r--spec/ruby/core/math/hypot_spec.rb41
-rw-r--r--spec/ruby/core/math/ldexp_spec.rb60
-rw-r--r--spec/ruby/core/math/lgamma_spec.rb54
-rw-r--r--spec/ruby/core/math/log10_spec.rb43
-rw-r--r--spec/ruby/core/math/log2_spec.rb41
-rw-r--r--spec/ruby/core/math/log_spec.rb57
-rw-r--r--spec/ruby/core/math/sin_spec.rb39
-rw-r--r--spec/ruby/core/math/sinh_spec.rb37
-rw-r--r--spec/ruby/core/math/sqrt_spec.rb40
-rw-r--r--spec/ruby/core/math/tan_spec.rb42
-rw-r--r--spec/ruby/core/math/tanh_spec.rb39
-rw-r--r--spec/ruby/core/method/arity_spec.rb222
-rw-r--r--spec/ruby/core/method/call_spec.rb7
-rw-r--r--spec/ruby/core/method/case_compare_spec.rb7
-rw-r--r--spec/ruby/core/method/clone_spec.rb14
-rw-r--r--spec/ruby/core/method/compose_spec.rb100
-rw-r--r--spec/ruby/core/method/curry_spec.rb36
-rw-r--r--spec/ruby/core/method/element_reference_spec.rb7
-rw-r--r--spec/ruby/core/method/eql_spec.rb6
-rw-r--r--spec/ruby/core/method/equal_value_spec.rb6
-rw-r--r--spec/ruby/core/method/fixtures/classes.rb246
-rw-r--r--spec/ruby/core/method/hash_spec.rb15
-rw-r--r--spec/ruby/core/method/inspect_spec.rb6
-rw-r--r--spec/ruby/core/method/name_spec.rb22
-rw-r--r--spec/ruby/core/method/original_name_spec.rb22
-rw-r--r--spec/ruby/core/method/owner_spec.rb32
-rw-r--r--spec/ruby/core/method/parameters_spec.rb270
-rw-r--r--spec/ruby/core/method/private_spec.rb21
-rw-r--r--spec/ruby/core/method/protected_spec.rb21
-rw-r--r--spec/ruby/core/method/public_spec.rb21
-rw-r--r--spec/ruby/core/method/receiver_spec.rb22
-rw-r--r--spec/ruby/core/method/shared/call.rb51
-rw-r--r--spec/ruby/core/method/shared/eql.rb94
-rw-r--r--spec/ruby/core/method/shared/to_s.rb85
-rw-r--r--spec/ruby/core/method/source_location_spec.rb113
-rw-r--r--spec/ruby/core/method/super_method_spec.rb66
-rw-r--r--spec/ruby/core/method/to_proc_spec.rb104
-rw-r--r--spec/ruby/core/method/to_s_spec.rb6
-rw-r--r--spec/ruby/core/method/unbind_spec.rb54
-rw-r--r--spec/ruby/core/module/alias_method_spec.rb173
-rw-r--r--spec/ruby/core/module/ancestors_spec.rb70
-rw-r--r--spec/ruby/core/module/append_features_spec.rb61
-rw-r--r--spec/ruby/core/module/attr_accessor_spec.rb119
-rw-r--r--spec/ruby/core/module/attr_reader_spec.rb80
-rw-r--r--spec/ruby/core/module/attr_spec.rb168
-rw-r--r--spec/ruby/core/module/attr_writer_spec.rb90
-rw-r--r--spec/ruby/core/module/autoload_spec.rb1012
-rw-r--r--spec/ruby/core/module/case_compare_spec.rb31
-rw-r--r--spec/ruby/core/module/class_eval_spec.rb7
-rw-r--r--spec/ruby/core/module/class_exec_spec.rb7
-rw-r--r--spec/ruby/core/module/class_variable_defined_spec.rb72
-rw-r--r--spec/ruby/core/module/class_variable_get_spec.rb76
-rw-r--r--spec/ruby/core/module/class_variable_set_spec.rb62
-rw-r--r--spec/ruby/core/module/class_variables_spec.rb34
-rw-r--r--spec/ruby/core/module/comparison_spec.rb36
-rw-r--r--spec/ruby/core/module/const_added_spec.rb125
-rw-r--r--spec/ruby/core/module/const_defined_spec.rb154
-rw-r--r--spec/ruby/core/module/const_get_spec.rb251
-rw-r--r--spec/ruby/core/module/const_missing_spec.rb36
-rw-r--r--spec/ruby/core/module/const_set_spec.rb142
-rw-r--r--spec/ruby/core/module/const_source_location_spec.rb225
-rw-r--r--spec/ruby/core/module/constants_spec.rb97
-rw-r--r--spec/ruby/core/module/define_method_spec.rb805
-rw-r--r--spec/ruby/core/module/define_singleton_method_spec.rb15
-rw-r--r--spec/ruby/core/module/deprecate_constant_spec.rb61
-rw-r--r--spec/ruby/core/module/eql_spec.rb7
-rw-r--r--spec/ruby/core/module/equal_spec.rb7
-rw-r--r--spec/ruby/core/module/equal_value_spec.rb7
-rw-r--r--spec/ruby/core/module/extend_object_spec.rb56
-rw-r--r--spec/ruby/core/module/extended_spec.rb44
-rw-r--r--spec/ruby/core/module/fixtures/autoload.rb1
-rw-r--r--spec/ruby/core/module/fixtures/autoload_abc.rb11
-rw-r--r--spec/ruby/core/module/fixtures/autoload_c.rb11
-rw-r--r--spec/ruby/core/module/fixtures/autoload_callback.rb2
-rw-r--r--spec/ruby/core/module/fixtures/autoload_concur.rb9
-rw-r--r--spec/ruby/core/module/fixtures/autoload_d.rb11
-rw-r--r--spec/ruby/core/module/fixtures/autoload_during_autoload.rb7
-rw-r--r--spec/ruby/core/module/fixtures/autoload_during_require.rb4
-rw-r--r--spec/ruby/core/module/fixtures/autoload_during_require_current_file.rb5
-rw-r--r--spec/ruby/core/module/fixtures/autoload_e.rb7
-rw-r--r--spec/ruby/core/module/fixtures/autoload_empty.rb1
-rw-r--r--spec/ruby/core/module/fixtures/autoload_ex1.rb16
-rw-r--r--spec/ruby/core/module/fixtures/autoload_exception.rb3
-rw-r--r--spec/ruby/core/module/fixtures/autoload_f.rb7
-rw-r--r--spec/ruby/core/module/fixtures/autoload_g.rb7
-rw-r--r--spec/ruby/core/module/fixtures/autoload_h.rb7
-rw-r--r--spec/ruby/core/module/fixtures/autoload_i.rb5
-rw-r--r--spec/ruby/core/module/fixtures/autoload_j.rb3
-rw-r--r--spec/ruby/core/module/fixtures/autoload_k.rb7
-rw-r--r--spec/ruby/core/module/fixtures/autoload_lm.rb4
-rw-r--r--spec/ruby/core/module/fixtures/autoload_location.rb3
-rw-r--r--spec/ruby/core/module/fixtures/autoload_nested.rb8
-rw-r--r--spec/ruby/core/module/fixtures/autoload_never_set.rb1
-rw-r--r--spec/ruby/core/module/fixtures/autoload_o.rb2
-rw-r--r--spec/ruby/core/module/fixtures/autoload_overridden.rb3
-rw-r--r--spec/ruby/core/module/fixtures/autoload_r.rb4
-rw-r--r--spec/ruby/core/module/fixtures/autoload_raise.rb2
-rw-r--r--spec/ruby/core/module/fixtures/autoload_required_directly.rb7
-rw-r--r--spec/ruby/core/module/fixtures/autoload_required_directly_nested.rb1
-rw-r--r--spec/ruby/core/module/fixtures/autoload_required_directly_no_constant.rb2
-rw-r--r--spec/ruby/core/module/fixtures/autoload_s.rb5
-rw-r--r--spec/ruby/core/module/fixtures/autoload_self_during_require.rb5
-rw-r--r--spec/ruby/core/module/fixtures/autoload_subclass.rb11
-rw-r--r--spec/ruby/core/module/fixtures/autoload_t.rb3
-rw-r--r--spec/ruby/core/module/fixtures/autoload_v.rb7
-rw-r--r--spec/ruby/core/module/fixtures/autoload_w.rb2
-rw-r--r--spec/ruby/core/module/fixtures/autoload_w2.rb1
-rw-r--r--spec/ruby/core/module/fixtures/autoload_x.rb3
-rw-r--r--spec/ruby/core/module/fixtures/autoload_z.rb5
-rw-r--r--spec/ruby/core/module/fixtures/classes.rb627
-rw-r--r--spec/ruby/core/module/fixtures/constant_unicode.rb5
-rw-r--r--spec/ruby/core/module/fixtures/constants_autoload.rb6
-rw-r--r--spec/ruby/core/module/fixtures/constants_autoload_a.rb2
-rw-r--r--spec/ruby/core/module/fixtures/constants_autoload_b.rb2
-rw-r--r--spec/ruby/core/module/fixtures/constants_autoload_c.rb3
-rw-r--r--spec/ruby/core/module/fixtures/constants_autoload_d.rb4
-rw-r--r--spec/ruby/core/module/fixtures/module.rb4
-rw-r--r--spec/ruby/core/module/fixtures/multi/foo.rb6
-rw-r--r--spec/ruby/core/module/fixtures/multi/foo/bar_baz.rb11
-rw-r--r--spec/ruby/core/module/fixtures/name.rb10
-rw-r--r--spec/ruby/core/module/fixtures/path1/load_path.rb9
-rw-r--r--spec/ruby/core/module/fixtures/path2/load_path.rb1
-rw-r--r--spec/ruby/core/module/fixtures/refine.rb25
-rw-r--r--spec/ruby/core/module/fixtures/repeated_concurrent_autoload.rb8
-rw-r--r--spec/ruby/core/module/freeze_spec.rb6
-rw-r--r--spec/ruby/core/module/gt_spec.rb36
-rw-r--r--spec/ruby/core/module/gte_spec.rb33
-rw-r--r--spec/ruby/core/module/include_spec.rb577
-rw-r--r--spec/ruby/core/module/included_modules_spec.rb14
-rw-r--r--spec/ruby/core/module/included_spec.rb44
-rw-r--r--spec/ruby/core/module/initialize_copy_spec.rb18
-rw-r--r--spec/ruby/core/module/initialize_spec.rb18
-rw-r--r--spec/ruby/core/module/instance_method_spec.rb111
-rw-r--r--spec/ruby/core/module/instance_methods_spec.rb61
-rw-r--r--spec/ruby/core/module/lt_spec.rb36
-rw-r--r--spec/ruby/core/module/lte_spec.rb33
-rw-r--r--spec/ruby/core/module/method_added_spec.rb83
-rw-r--r--spec/ruby/core/module/method_defined_spec.rb98
-rw-r--r--spec/ruby/core/module/method_removed_spec.rb33
-rw-r--r--spec/ruby/core/module/method_undefined_spec.rb33
-rw-r--r--spec/ruby/core/module/module_eval_spec.rb7
-rw-r--r--spec/ruby/core/module/module_exec_spec.rb7
-rw-r--r--spec/ruby/core/module/module_function_spec.rb285
-rw-r--r--spec/ruby/core/module/name_spec.rb130
-rw-r--r--spec/ruby/core/module/nesting_spec.rb31
-rw-r--r--spec/ruby/core/module/new_spec.rb31
-rw-r--r--spec/ruby/core/module/prepend_features_spec.rb64
-rw-r--r--spec/ruby/core/module/prepend_spec.rb761
-rw-r--r--spec/ruby/core/module/prepended_spec.rb25
-rw-r--r--spec/ruby/core/module/private_class_method_spec.rb93
-rw-r--r--spec/ruby/core/module/private_constant_spec.rb32
-rw-r--r--spec/ruby/core/module/private_instance_methods_spec.rb54
-rw-r--r--spec/ruby/core/module/private_method_defined_spec.rb120
-rw-r--r--spec/ruby/core/module/private_spec.rb107
-rw-r--r--spec/ruby/core/module/protected_instance_methods_spec.rb57
-rw-r--r--spec/ruby/core/module/protected_method_defined_spec.rb120
-rw-r--r--spec/ruby/core/module/protected_spec.rb69
-rw-r--r--spec/ruby/core/module/public_class_method_spec.rb96
-rw-r--r--spec/ruby/core/module/public_constant_spec.rb38
-rw-r--r--spec/ruby/core/module/public_instance_method_spec.rb65
-rw-r--r--spec/ruby/core/module/public_instance_methods_spec.rb61
-rw-r--r--spec/ruby/core/module/public_method_defined_spec.rb72
-rw-r--r--spec/ruby/core/module/public_spec.rb57
-rw-r--r--spec/ruby/core/module/refine_spec.rb1051
-rw-r--r--spec/ruby/core/module/remove_class_variable_spec.rb44
-rw-r--r--spec/ruby/core/module/remove_const_spec.rb105
-rw-r--r--spec/ruby/core/module/remove_method_spec.rb131
-rw-r--r--spec/ruby/core/module/ruby2_keywords_spec.rb319
-rw-r--r--spec/ruby/core/module/shared/class_eval.rb168
-rw-r--r--spec/ruby/core/module/shared/class_exec.rb29
-rw-r--r--spec/ruby/core/module/shared/equal_value.rb14
-rw-r--r--spec/ruby/core/module/shared/set_visibility.rb186
-rw-r--r--spec/ruby/core/module/singleton_class_spec.rb27
-rw-r--r--spec/ruby/core/module/to_s_spec.rb68
-rw-r--r--spec/ruby/core/module/undef_method_spec.rb181
-rw-r--r--spec/ruby/core/module/using_spec.rb377
-rw-r--r--spec/ruby/core/mutex/lock_spec.rb34
-rw-r--r--spec/ruby/core/mutex/locked_spec.rb36
-rw-r--r--spec/ruby/core/mutex/owned_spec.rb55
-rw-r--r--spec/ruby/core/mutex/sleep_spec.rb103
-rw-r--r--spec/ruby/core/mutex/synchronize_spec.rb66
-rw-r--r--spec/ruby/core/mutex/try_lock_spec.rb32
-rw-r--r--spec/ruby/core/mutex/unlock_spec.rb38
-rw-r--r--spec/ruby/core/nil/and_spec.rb11
-rw-r--r--spec/ruby/core/nil/case_compare_spec.rb13
-rw-r--r--spec/ruby/core/nil/dup_spec.rb7
-rw-r--r--spec/ruby/core/nil/inspect_spec.rb7
-rw-r--r--spec/ruby/core/nil/match_spec.rb21
-rw-r--r--spec/ruby/core/nil/nil_spec.rb7
-rw-r--r--spec/ruby/core/nil/nilclass_spec.rb15
-rw-r--r--spec/ruby/core/nil/or_spec.rb11
-rw-r--r--spec/ruby/core/nil/rationalize_spec.rb16
-rw-r--r--spec/ruby/core/nil/to_a_spec.rb7
-rw-r--r--spec/ruby/core/nil/to_c_spec.rb7
-rw-r--r--spec/ruby/core/nil/to_f_spec.rb11
-rw-r--r--spec/ruby/core/nil/to_h_spec.rb8
-rw-r--r--spec/ruby/core/nil/to_i_spec.rb11
-rw-r--r--spec/ruby/core/nil/to_r_spec.rb7
-rw-r--r--spec/ruby/core/nil/to_s_spec.rb15
-rw-r--r--spec/ruby/core/nil/xor_spec.rb11
-rw-r--r--spec/ruby/core/numeric/abs2_spec.rb34
-rw-r--r--spec/ruby/core/numeric/abs_spec.rb6
-rw-r--r--spec/ruby/core/numeric/angle_spec.rb6
-rw-r--r--spec/ruby/core/numeric/arg_spec.rb6
-rw-r--r--spec/ruby/core/numeric/ceil_spec.rb15
-rw-r--r--spec/ruby/core/numeric/clone_spec.rb32
-rw-r--r--spec/ruby/core/numeric/coerce_spec.rb59
-rw-r--r--spec/ruby/core/numeric/comparison_spec.rb48
-rw-r--r--spec/ruby/core/numeric/conj_spec.rb6
-rw-r--r--spec/ruby/core/numeric/conjugate_spec.rb6
-rw-r--r--spec/ruby/core/numeric/denominator_spec.rb24
-rw-r--r--spec/ruby/core/numeric/div_spec.rb22
-rw-r--r--spec/ruby/core/numeric/divmod_spec.rb15
-rw-r--r--spec/ruby/core/numeric/dup_spec.rb16
-rw-r--r--spec/ruby/core/numeric/eql_spec.rb22
-rw-r--r--spec/ruby/core/numeric/fdiv_spec.rb32
-rw-r--r--spec/ruby/core/numeric/finite_spec.rb8
-rw-r--r--spec/ruby/core/numeric/fixtures/classes.rb17
-rw-r--r--spec/ruby/core/numeric/floor_spec.rb14
-rw-r--r--spec/ruby/core/numeric/i_spec.rb15
-rw-r--r--spec/ruby/core/numeric/imag_spec.rb6
-rw-r--r--spec/ruby/core/numeric/imaginary_spec.rb6
-rw-r--r--spec/ruby/core/numeric/infinite_spec.rb8
-rw-r--r--spec/ruby/core/numeric/integer_spec.rb8
-rw-r--r--spec/ruby/core/numeric/magnitude_spec.rb5
-rw-r--r--spec/ruby/core/numeric/modulo_spec.rb24
-rw-r--r--spec/ruby/core/numeric/negative_spec.rb41
-rw-r--r--spec/ruby/core/numeric/nonzero_spec.rb18
-rw-r--r--spec/ruby/core/numeric/numerator_spec.rb33
-rw-r--r--spec/ruby/core/numeric/numeric_spec.rb7
-rw-r--r--spec/ruby/core/numeric/phase_spec.rb6
-rw-r--r--spec/ruby/core/numeric/polar_spec.rb50
-rw-r--r--spec/ruby/core/numeric/positive_spec.rb41
-rw-r--r--spec/ruby/core/numeric/quo_spec.rb64
-rw-r--r--spec/ruby/core/numeric/real_spec.rb37
-rw-r--r--spec/ruby/core/numeric/rect_spec.rb6
-rw-r--r--spec/ruby/core/numeric/rectangular_spec.rb6
-rw-r--r--spec/ruby/core/numeric/remainder_spec.rb67
-rw-r--r--spec/ruby/core/numeric/round_spec.rb14
-rw-r--r--spec/ruby/core/numeric/shared/abs.rb19
-rw-r--r--spec/ruby/core/numeric/shared/arg.rb38
-rw-r--r--spec/ruby/core/numeric/shared/conj.rb20
-rw-r--r--spec/ruby/core/numeric/shared/imag.rb26
-rw-r--r--spec/ruby/core/numeric/shared/quo.rb7
-rw-r--r--spec/ruby/core/numeric/shared/rect.rb48
-rw-r--r--spec/ruby/core/numeric/shared/step.rb416
-rw-r--r--spec/ruby/core/numeric/singleton_method_added_spec.rb41
-rw-r--r--spec/ruby/core/numeric/step_spec.rb198
-rw-r--r--spec/ruby/core/numeric/to_c_spec.rb45
-rw-r--r--spec/ruby/core/numeric/to_int_spec.rb10
-rw-r--r--spec/ruby/core/numeric/truncate_spec.rb14
-rw-r--r--spec/ruby/core/numeric/uminus_spec.rb31
-rw-r--r--spec/ruby/core/numeric/uplus_spec.rb9
-rw-r--r--spec/ruby/core/numeric/zero_spec.rb18
-rw-r--r--spec/ruby/core/objectspace/_id2ref_spec.rb52
-rw-r--r--spec/ruby/core/objectspace/add_finalizer_spec.rb5
-rw-r--r--spec/ruby/core/objectspace/call_finalizer_spec.rb5
-rw-r--r--spec/ruby/core/objectspace/count_objects_spec.rb5
-rw-r--r--spec/ruby/core/objectspace/define_finalizer_spec.rb194
-rw-r--r--spec/ruby/core/objectspace/each_object_spec.rb213
-rw-r--r--spec/ruby/core/objectspace/finalizers_spec.rb5
-rw-r--r--spec/ruby/core/objectspace/fixtures/classes.rb64
-rw-r--r--spec/ruby/core/objectspace/garbage_collect_spec.rb22
-rw-r--r--spec/ruby/core/objectspace/remove_finalizer_spec.rb5
-rw-r--r--spec/ruby/core/objectspace/undefine_finalizer_spec.rb5
-rw-r--r--spec/ruby/core/objectspace/weakmap/each_key_spec.rb11
-rw-r--r--spec/ruby/core/objectspace/weakmap/each_pair_spec.rb11
-rw-r--r--spec/ruby/core/objectspace/weakmap/each_spec.rb11
-rw-r--r--spec/ruby/core/objectspace/weakmap/each_value_spec.rb11
-rw-r--r--spec/ruby/core/objectspace/weakmap/element_reference_spec.rb24
-rw-r--r--spec/ruby/core/objectspace/weakmap/element_set_spec.rb38
-rw-r--r--spec/ruby/core/objectspace/weakmap/include_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/inspect_spec.rb25
-rw-r--r--spec/ruby/core/objectspace/weakmap/key_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/keys_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/length_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/member_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/shared/each.rb10
-rw-r--r--spec/ruby/core/objectspace/weakmap/shared/include.rb30
-rw-r--r--spec/ruby/core/objectspace/weakmap/shared/members.rb14
-rw-r--r--spec/ruby/core/objectspace/weakmap/shared/size.rb14
-rw-r--r--spec/ruby/core/objectspace/weakmap/size_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/values_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap_spec.rb12
-rw-r--r--spec/ruby/core/proc/allocate_spec.rb9
-rw-r--r--spec/ruby/core/proc/arity_spec.rb640
-rw-r--r--spec/ruby/core/proc/binding_spec.rb21
-rw-r--r--spec/ruby/core/proc/block_pass_spec.rb21
-rw-r--r--spec/ruby/core/proc/call_spec.rb16
-rw-r--r--spec/ruby/core/proc/case_compare_spec.rb16
-rw-r--r--spec/ruby/core/proc/clone_spec.rb6
-rw-r--r--spec/ruby/core/proc/compose_spec.rb162
-rw-r--r--spec/ruby/core/proc/curry_spec.rb180
-rw-r--r--spec/ruby/core/proc/dup_spec.rb6
-rw-r--r--spec/ruby/core/proc/element_reference_spec.rb27
-rw-r--r--spec/ruby/core/proc/eql_spec.rb12
-rw-r--r--spec/ruby/core/proc/equal_value_spec.rb12
-rw-r--r--spec/ruby/core/proc/fixtures/common.rb51
-rw-r--r--spec/ruby/core/proc/fixtures/proc_aref.rb9
-rw-r--r--spec/ruby/core/proc/fixtures/proc_aref_frozen.rb10
-rw-r--r--spec/ruby/core/proc/fixtures/source_location.rb55
-rw-r--r--spec/ruby/core/proc/hash_spec.rb17
-rw-r--r--spec/ruby/core/proc/inspect_spec.rb6
-rw-r--r--spec/ruby/core/proc/lambda_spec.rb60
-rw-r--r--spec/ruby/core/proc/new_spec.rb201
-rw-r--r--spec/ruby/core/proc/parameters_spec.rb118
-rw-r--r--spec/ruby/core/proc/ruby2_keywords_spec.rb78
-rw-r--r--spec/ruby/core/proc/shared/call.rb99
-rw-r--r--spec/ruby/core/proc/shared/call_arguments.rb29
-rw-r--r--spec/ruby/core/proc/shared/compose.rb22
-rw-r--r--spec/ruby/core/proc/shared/dup.rb10
-rw-r--r--spec/ruby/core/proc/shared/equal.rb100
-rw-r--r--spec/ruby/core/proc/shared/to_s.rb60
-rw-r--r--spec/ruby/core/proc/source_location_spec.rb86
-rw-r--r--spec/ruby/core/proc/to_proc_spec.rb9
-rw-r--r--spec/ruby/core/proc/to_s_spec.rb6
-rw-r--r--spec/ruby/core/proc/yield_spec.rb16
-rw-r--r--spec/ruby/core/process/_fork_spec.rb24
-rw-r--r--spec/ruby/core/process/abort_spec.rb6
-rw-r--r--spec/ruby/core/process/clock_getres_spec.rb33
-rw-r--r--spec/ruby/core/process/clock_gettime_spec.rb152
-rw-r--r--spec/ruby/core/process/constants_spec.rb86
-rw-r--r--spec/ruby/core/process/daemon_spec.rb118
-rw-r--r--spec/ruby/core/process/detach_spec.rb75
-rw-r--r--spec/ruby/core/process/egid_spec.rb58
-rw-r--r--spec/ruby/core/process/euid_spec.rb56
-rw-r--r--spec/ruby/core/process/exec_spec.rb241
-rw-r--r--spec/ruby/core/process/exit_spec.rb10
-rw-r--r--spec/ruby/core/process/fixtures/clocks.rb18
-rw-r--r--spec/ruby/core/process/fixtures/common.rb88
-rw-r--r--spec/ruby/core/process/fixtures/daemon.rb111
-rw-r--r--spec/ruby/core/process/fixtures/in.txt1
-rw-r--r--spec/ruby/core/process/fixtures/kill.rb45
-rw-r--r--spec/ruby/core/process/fixtures/map_fd.rb9
-rw-r--r--spec/ruby/core/process/fixtures/setpriority.rb12
-rw-r--r--spec/ruby/core/process/fork_spec.rb6
-rw-r--r--spec/ruby/core/process/getpgid_spec.rb17
-rw-r--r--spec/ruby/core/process/getpgrp_spec.rb7
-rw-r--r--spec/ruby/core/process/getpriority_spec.rb23
-rw-r--r--spec/ruby/core/process/getrlimit_spec.rb100
-rw-r--r--spec/ruby/core/process/gid/change_privilege_spec.rb5
-rw-r--r--spec/ruby/core/process/gid/eid_spec.rb9
-rw-r--r--spec/ruby/core/process/gid/grant_privilege_spec.rb5
-rw-r--r--spec/ruby/core/process/gid/re_exchange_spec.rb5
-rw-r--r--spec/ruby/core/process/gid/re_exchangeable_spec.rb5
-rw-r--r--spec/ruby/core/process/gid/rid_spec.rb5
-rw-r--r--spec/ruby/core/process/gid/sid_available_spec.rb5
-rw-r--r--spec/ruby/core/process/gid/switch_spec.rb5
-rw-r--r--spec/ruby/core/process/gid_spec.rb22
-rw-r--r--spec/ruby/core/process/groups_spec.rb67
-rw-r--r--spec/ruby/core/process/initgroups_spec.rb22
-rw-r--r--spec/ruby/core/process/kill_spec.rb132
-rw-r--r--spec/ruby/core/process/last_status_spec.rb18
-rw-r--r--spec/ruby/core/process/maxgroups_spec.rb19
-rw-r--r--spec/ruby/core/process/pid_spec.rb9
-rw-r--r--spec/ruby/core/process/ppid_spec.rb9
-rw-r--r--spec/ruby/core/process/set_proctitle_spec.rb23
-rw-r--r--spec/ruby/core/process/setpgid_spec.rb29
-rw-r--r--spec/ruby/core/process/setpgrp_spec.rb37
-rw-r--r--spec/ruby/core/process/setpriority_spec.rb60
-rw-r--r--spec/ruby/core/process/setrlimit_spec.rb241
-rw-r--r--spec/ruby/core/process/setsid_spec.rb16
-rw-r--r--spec/ruby/core/process/spawn_spec.rb756
-rw-r--r--spec/ruby/core/process/status/bit_and_spec.rb5
-rw-r--r--spec/ruby/core/process/status/coredump_spec.rb5
-rw-r--r--spec/ruby/core/process/status/equal_value_spec.rb15
-rw-r--r--spec/ruby/core/process/status/exited_spec.rb32
-rw-r--r--spec/ruby/core/process/status/exitstatus_spec.rb25
-rw-r--r--spec/ruby/core/process/status/inspect_spec.rb5
-rw-r--r--spec/ruby/core/process/status/pid_spec.rb15
-rw-r--r--spec/ruby/core/process/status/right_shift_spec.rb5
-rw-r--r--spec/ruby/core/process/status/signaled_spec.rb31
-rw-r--r--spec/ruby/core/process/status/stopped_spec.rb5
-rw-r--r--spec/ruby/core/process/status/stopsig_spec.rb5
-rw-r--r--spec/ruby/core/process/status/success_spec.rb41
-rw-r--r--spec/ruby/core/process/status/termsig_spec.rb43
-rw-r--r--spec/ruby/core/process/status/to_i_spec.rb13
-rw-r--r--spec/ruby/core/process/status/to_int_spec.rb5
-rw-r--r--spec/ruby/core/process/status/to_s_spec.rb5
-rw-r--r--spec/ruby/core/process/status/wait_spec.rb102
-rw-r--r--spec/ruby/core/process/sys/getegid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/geteuid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/getgid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/getuid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/issetugid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/setegid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/seteuid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/setgid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/setregid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/setresgid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/setresuid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/setreuid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/setrgid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/setruid_spec.rb5
-rw-r--r--spec/ruby/core/process/sys/setuid_spec.rb5
-rw-r--r--spec/ruby/core/process/times_spec.rb39
-rw-r--r--spec/ruby/core/process/uid/change_privilege_spec.rb5
-rw-r--r--spec/ruby/core/process/uid/eid_spec.rb9
-rw-r--r--spec/ruby/core/process/uid/grant_privilege_spec.rb5
-rw-r--r--spec/ruby/core/process/uid/re_exchange_spec.rb5
-rw-r--r--spec/ruby/core/process/uid/re_exchangeable_spec.rb5
-rw-r--r--spec/ruby/core/process/uid/rid_spec.rb5
-rw-r--r--spec/ruby/core/process/uid/sid_available_spec.rb5
-rw-r--r--spec/ruby/core/process/uid/switch_spec.rb5
-rw-r--r--spec/ruby/core/process/uid_spec.rb57
-rw-r--r--spec/ruby/core/process/wait2_spec.rb45
-rw-r--r--spec/ruby/core/process/wait_spec.rb91
-rw-r--r--spec/ruby/core/process/waitall_spec.rb48
-rw-r--r--spec/ruby/core/process/waitpid2_spec.rb5
-rw-r--r--spec/ruby/core/process/waitpid_spec.rb13
-rw-r--r--spec/ruby/core/queue/append_spec.rb6
-rw-r--r--spec/ruby/core/queue/clear_spec.rb6
-rw-r--r--spec/ruby/core/queue/close_spec.rb6
-rw-r--r--spec/ruby/core/queue/closed_spec.rb6
-rw-r--r--spec/ruby/core/queue/deq_spec.rb6
-rw-r--r--spec/ruby/core/queue/empty_spec.rb6
-rw-r--r--spec/ruby/core/queue/enq_spec.rb6
-rw-r--r--spec/ruby/core/queue/initialize_spec.rb49
-rw-r--r--spec/ruby/core/queue/length_spec.rb6
-rw-r--r--spec/ruby/core/queue/num_waiting_spec.rb6
-rw-r--r--spec/ruby/core/queue/pop_spec.rb6
-rw-r--r--spec/ruby/core/queue/push_spec.rb6
-rw-r--r--spec/ruby/core/queue/shift_spec.rb6
-rw-r--r--spec/ruby/core/queue/size_spec.rb6
-rw-r--r--spec/ruby/core/random/bytes_spec.rb30
-rw-r--r--spec/ruby/core/random/default_spec.rb45
-rw-r--r--spec/ruby/core/random/equal_value_spec.rb37
-rw-r--r--spec/ruby/core/random/fixtures/classes.rb15
-rw-r--r--spec/ruby/core/random/new_seed_spec.rb24
-rw-r--r--spec/ruby/core/random/new_spec.rb37
-rw-r--r--spec/ruby/core/random/rand_spec.rb224
-rw-r--r--spec/ruby/core/random/random_number_spec.rb8
-rw-r--r--spec/ruby/core/random/seed_spec.rb29
-rw-r--r--spec/ruby/core/random/shared/bytes.rb17
-rw-r--r--spec/ruby/core/random/shared/rand.rb9
-rw-r--r--spec/ruby/core/random/srand_spec.rb39
-rw-r--r--spec/ruby/core/random/urandom_spec.rb25
-rw-r--r--spec/ruby/core/range/begin_spec.rb6
-rw-r--r--spec/ruby/core/range/bsearch_spec.rb436
-rw-r--r--spec/ruby/core/range/case_compare_spec.rb19
-rw-r--r--spec/ruby/core/range/clone_spec.rb26
-rw-r--r--spec/ruby/core/range/count_spec.rb12
-rw-r--r--spec/ruby/core/range/cover_spec.rb10
-rw-r--r--spec/ruby/core/range/dup_spec.rb23
-rw-r--r--spec/ruby/core/range/each_spec.rb114
-rw-r--r--spec/ruby/core/range/end_spec.rb6
-rw-r--r--spec/ruby/core/range/eql_spec.rb10
-rw-r--r--spec/ruby/core/range/equal_value_spec.rb18
-rw-r--r--spec/ruby/core/range/exclude_end_spec.rb19
-rw-r--r--spec/ruby/core/range/first_spec.rb53
-rw-r--r--spec/ruby/core/range/fixtures/classes.rb90
-rw-r--r--spec/ruby/core/range/frozen_spec.rb27
-rw-r--r--spec/ruby/core/range/hash_spec.rb24
-rw-r--r--spec/ruby/core/range/include_spec.rb10
-rw-r--r--spec/ruby/core/range/initialize_spec.rb50
-rw-r--r--spec/ruby/core/range/inspect_spec.rb29
-rw-r--r--spec/ruby/core/range/last_spec.rb59
-rw-r--r--spec/ruby/core/range/max_spec.rb103
-rw-r--r--spec/ruby/core/range/member_spec.rb10
-rw-r--r--spec/ruby/core/range/min_spec.rb88
-rw-r--r--spec/ruby/core/range/minmax_spec.rb132
-rw-r--r--spec/ruby/core/range/new_spec.rb79
-rw-r--r--spec/ruby/core/range/percent_spec.rb16
-rw-r--r--spec/ruby/core/range/range_spec.rb7
-rw-r--r--spec/ruby/core/range/shared/begin.rb10
-rw-r--r--spec/ruby/core/range/shared/cover.rb193
-rw-r--r--spec/ruby/core/range/shared/cover_and_include.rb76
-rw-r--r--spec/ruby/core/range/shared/end.rb10
-rw-r--r--spec/ruby/core/range/shared/equal_value.rb51
-rw-r--r--spec/ruby/core/range/shared/include.rb91
-rw-r--r--spec/ruby/core/range/size_spec.rb65
-rw-r--r--spec/ruby/core/range/step_spec.rb514
-rw-r--r--spec/ruby/core/range/to_a_spec.rb39
-rw-r--r--spec/ruby/core/range/to_s_spec.rb23
-rw-r--r--spec/ruby/core/rational/abs_spec.rb5
-rw-r--r--spec/ruby/core/rational/ceil_spec.rb5
-rw-r--r--spec/ruby/core/rational/coerce_spec.rb5
-rw-r--r--spec/ruby/core/rational/comparison_spec.rb22
-rw-r--r--spec/ruby/core/rational/denominator_spec.rb5
-rw-r--r--spec/ruby/core/rational/div_spec.rb17
-rw-r--r--spec/ruby/core/rational/divide_spec.rb19
-rw-r--r--spec/ruby/core/rational/divmod_spec.rb13
-rw-r--r--spec/ruby/core/rational/equal_value_spec.rb17
-rw-r--r--spec/ruby/core/rational/exponent_spec.rb5
-rw-r--r--spec/ruby/core/rational/fdiv_spec.rb5
-rw-r--r--spec/ruby/core/rational/floor_spec.rb5
-rw-r--r--spec/ruby/core/rational/hash_spec.rb5
-rw-r--r--spec/ruby/core/rational/inspect_spec.rb5
-rw-r--r--spec/ruby/core/rational/integer_spec.rb12
-rw-r--r--spec/ruby/core/rational/magnitude_spec.rb5
-rw-r--r--spec/ruby/core/rational/marshal_dump_spec.rb11
-rw-r--r--spec/ruby/core/rational/minus_spec.rb51
-rw-r--r--spec/ruby/core/rational/modulo_spec.rb5
-rw-r--r--spec/ruby/core/rational/multiply_spec.rb19
-rw-r--r--spec/ruby/core/rational/numerator_spec.rb5
-rw-r--r--spec/ruby/core/rational/plus_spec.rb18
-rw-r--r--spec/ruby/core/rational/quo_spec.rb5
-rw-r--r--spec/ruby/core/rational/rational_spec.rb11
-rw-r--r--spec/ruby/core/rational/rationalize_spec.rb36
-rw-r--r--spec/ruby/core/rational/remainder_spec.rb5
-rw-r--r--spec/ruby/core/rational/round_spec.rb6
-rw-r--r--spec/ruby/core/rational/to_f_spec.rb5
-rw-r--r--spec/ruby/core/rational/to_i_spec.rb5
-rw-r--r--spec/ruby/core/rational/to_r_spec.rb20
-rw-r--r--spec/ruby/core/rational/to_s_spec.rb5
-rw-r--r--spec/ruby/core/rational/truncate_spec.rb5
-rw-r--r--spec/ruby/core/rational/zero_spec.rb13
-rw-r--r--spec/ruby/core/refinement/append_features_spec.rb21
-rw-r--r--spec/ruby/core/refinement/extend_object_spec.rb21
-rw-r--r--spec/ruby/core/refinement/import_methods_spec.rb34
-rw-r--r--spec/ruby/core/refinement/include_spec.rb27
-rw-r--r--spec/ruby/core/refinement/prepend_features_spec.rb21
-rw-r--r--spec/ruby/core/refinement/prepend_spec.rb27
-rw-r--r--spec/ruby/core/regexp/case_compare_spec.rb35
-rw-r--r--spec/ruby/core/regexp/casefold_spec.rb8
-rw-r--r--spec/ruby/core/regexp/compile_spec.rb19
-rw-r--r--spec/ruby/core/regexp/encoding_spec.rb62
-rw-r--r--spec/ruby/core/regexp/eql_spec.rb6
-rw-r--r--spec/ruby/core/regexp/equal_value_spec.rb6
-rw-r--r--spec/ruby/core/regexp/escape_spec.rb6
-rw-r--r--spec/ruby/core/regexp/fixed_encoding_spec.rb36
-rw-r--r--spec/ruby/core/regexp/hash_spec.rb20
-rw-r--r--spec/ruby/core/regexp/initialize_spec.rb23
-rw-r--r--spec/ruby/core/regexp/inspect_spec.rb44
-rw-r--r--spec/ruby/core/regexp/last_match_spec.rb56
-rw-r--r--spec/ruby/core/regexp/match_spec.rb146
-rw-r--r--spec/ruby/core/regexp/named_captures_spec.rb35
-rw-r--r--spec/ruby/core/regexp/names_spec.rb29
-rw-r--r--spec/ruby/core/regexp/new_spec.rb19
-rw-r--r--spec/ruby/core/regexp/options_spec.rb54
-rw-r--r--spec/ruby/core/regexp/quote_spec.rb6
-rw-r--r--spec/ruby/core/regexp/shared/equal_value.rb31
-rw-r--r--spec/ruby/core/regexp/shared/new.rb609
-rw-r--r--spec/ruby/core/regexp/shared/quote.rb41
-rw-r--r--spec/ruby/core/regexp/source_spec.rb47
-rw-r--r--spec/ruby/core/regexp/timeout_spec.rb35
-rw-r--r--spec/ruby/core/regexp/to_s_spec.rb62
-rw-r--r--spec/ruby/core/regexp/try_convert_spec.rb21
-rw-r--r--spec/ruby/core/regexp/union_spec.rb159
-rw-r--r--spec/ruby/core/signal/fixtures/trap_all.rb15
-rw-r--r--spec/ruby/core/signal/list_spec.rb68
-rw-r--r--spec/ruby/core/signal/signame_spec.rb22
-rw-r--r--spec/ruby/core/signal/trap_spec.rb293
-rw-r--r--spec/ruby/core/sizedqueue/append_spec.rb11
-rw-r--r--spec/ruby/core/sizedqueue/clear_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/close_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/closed_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/deq_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/empty_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/enq_spec.rb11
-rw-r--r--spec/ruby/core/sizedqueue/length_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/max_spec.rb10
-rw-r--r--spec/ruby/core/sizedqueue/new_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/num_waiting_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/pop_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/push_spec.rb11
-rw-r--r--spec/ruby/core/sizedqueue/shift_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/size_spec.rb6
-rw-r--r--spec/ruby/core/string/allocate_spec.rb19
-rw-r--r--spec/ruby/core/string/append_spec.rb13
-rw-r--r--spec/ruby/core/string/ascii_only_spec.rb83
-rw-r--r--spec/ruby/core/string/b_spec.rb15
-rw-r--r--spec/ruby/core/string/byteindex_spec.rb16
-rw-r--r--spec/ruby/core/string/bytes_spec.rb55
-rw-r--r--spec/ruby/core/string/bytesize_spec.rb33
-rw-r--r--spec/ruby/core/string/byteslice_spec.rb33
-rw-r--r--spec/ruby/core/string/capitalize_spec.rb216
-rw-r--r--spec/ruby/core/string/case_compare_spec.rb8
-rw-r--r--spec/ruby/core/string/casecmp_spec.rb194
-rw-r--r--spec/ruby/core/string/center_spec.rb130
-rw-r--r--spec/ruby/core/string/chars_spec.rb15
-rw-r--r--spec/ruby/core/string/chomp_spec.rb374
-rw-r--r--spec/ruby/core/string/chop_spec.rb126
-rw-r--r--spec/ruby/core/string/chr_spec.rb42
-rw-r--r--spec/ruby/core/string/clear_spec.rb37
-rw-r--r--spec/ruby/core/string/clone_spec.rb61
-rw-r--r--spec/ruby/core/string/codepoints_spec.rb18
-rw-r--r--spec/ruby/core/string/comparison_spec.rb112
-rw-r--r--spec/ruby/core/string/concat_spec.rb26
-rw-r--r--spec/ruby/core/string/count_spec.rb105
-rw-r--r--spec/ruby/core/string/crypt_spec.rb92
-rw-r--r--spec/ruby/core/string/dedup_spec.rb8
-rw-r--r--spec/ruby/core/string/delete_prefix_spec.rb91
-rw-r--r--spec/ruby/core/string/delete_spec.rb124
-rw-r--r--spec/ruby/core/string/delete_suffix_spec.rb91
-rw-r--r--spec/ruby/core/string/downcase_spec.rb202
-rw-r--r--spec/ruby/core/string/dump_spec.rb404
-rw-r--r--spec/ruby/core/string/dup_spec.rb65
-rw-r--r--spec/ruby/core/string/each_byte_spec.rb61
-rw-r--r--spec/ruby/core/string/each_char_spec.rb7
-rw-r--r--spec/ruby/core/string/each_codepoint_spec.rb8
-rw-r--r--spec/ruby/core/string/each_grapheme_cluster_spec.rb17
-rw-r--r--spec/ruby/core/string/each_line_spec.rb9
-rw-r--r--spec/ruby/core/string/element_reference_spec.rb35
-rw-r--r--spec/ruby/core/string/element_set_spec.rb588
-rw-r--r--spec/ruby/core/string/empty_spec.rb12
-rw-r--r--spec/ruby/core/string/encode_spec.rb226
-rw-r--r--spec/ruby/core/string/encoding_spec.rb188
-rw-r--r--spec/ruby/core/string/end_with_spec.rb8
-rw-r--r--spec/ruby/core/string/eql_spec.rb21
-rw-r--r--spec/ruby/core/string/equal_value_spec.rb8
-rw-r--r--spec/ruby/core/string/fixtures/classes.rb60
-rw-r--r--spec/ruby/core/string/fixtures/freeze_magic_comment.rb3
-rw-r--r--spec/ruby/core/string/fixtures/iso-8859-9-encoding.rb9
-rw-r--r--spec/ruby/core/string/fixtures/to_c.rb5
-rw-r--r--spec/ruby/core/string/fixtures/utf-8-encoding.rb7
-rw-r--r--spec/ruby/core/string/force_encoding_spec.rb71
-rw-r--r--spec/ruby/core/string/freeze_spec.rb17
-rw-r--r--spec/ruby/core/string/getbyte_spec.rb69
-rw-r--r--spec/ruby/core/string/grapheme_clusters_spec.rb13
-rw-r--r--spec/ruby/core/string/gsub_spec.rb625
-rw-r--r--spec/ruby/core/string/hash_spec.rb9
-rw-r--r--spec/ruby/core/string/hex_spec.rb49
-rw-r--r--spec/ruby/core/string/include_spec.rb49
-rw-r--r--spec/ruby/core/string/index_spec.rb321
-rw-r--r--spec/ruby/core/string/initialize_spec.rb26
-rw-r--r--spec/ruby/core/string/insert_spec.rb81
-rw-r--r--spec/ruby/core/string/inspect_spec.rb520
-rw-r--r--spec/ruby/core/string/intern_spec.rb7
-rw-r--r--spec/ruby/core/string/length_spec.rb7
-rw-r--r--spec/ruby/core/string/lines_spec.rb19
-rw-r--r--spec/ruby/core/string/ljust_spec.rb113
-rw-r--r--spec/ruby/core/string/lstrip_spec.rb77
-rw-r--r--spec/ruby/core/string/match_spec.rb167
-rw-r--r--spec/ruby/core/string/modulo_spec.rb778
-rw-r--r--spec/ruby/core/string/multiply_spec.rb7
-rw-r--r--spec/ruby/core/string/new_spec.rb61
-rw-r--r--spec/ruby/core/string/next_spec.rb11
-rw-r--r--spec/ruby/core/string/oct_spec.rb88
-rw-r--r--spec/ruby/core/string/ord_spec.rb33
-rw-r--r--spec/ruby/core/string/partition_spec.rb63
-rw-r--r--spec/ruby/core/string/plus_spec.rb36
-rw-r--r--spec/ruby/core/string/prepend_spec.rb54
-rw-r--r--spec/ruby/core/string/replace_spec.rb7
-rw-r--r--spec/ruby/core/string/reverse_spec.rb79
-rw-r--r--spec/ruby/core/string/rindex_spec.rb387
-rw-r--r--spec/ruby/core/string/rjust_spec.rb113
-rw-r--r--spec/ruby/core/string/rpartition_spec.rb71
-rw-r--r--spec/ruby/core/string/rstrip_spec.rb95
-rw-r--r--spec/ruby/core/string/scan_spec.rb175
-rw-r--r--spec/ruby/core/string/scrub_spec.rb175
-rw-r--r--spec/ruby/core/string/setbyte_spec.rb111
-rw-r--r--spec/ruby/core/string/shared/chars.rb66
-rw-r--r--spec/ruby/core/string/shared/codepoints.rb62
-rw-r--r--spec/ruby/core/string/shared/concat.rb150
-rw-r--r--spec/ruby/core/string/shared/dedup.rb57
-rw-r--r--spec/ruby/core/string/shared/each_char_without_block.rb26
-rw-r--r--spec/ruby/core/string/shared/each_codepoint_without_block.rb33
-rw-r--r--spec/ruby/core/string/shared/each_line.rb172
-rw-r--r--spec/ruby/core/string/shared/each_line_without_block.rb17
-rw-r--r--spec/ruby/core/string/shared/encode.rb247
-rw-r--r--spec/ruby/core/string/shared/eql.rb38
-rw-r--r--spec/ruby/core/string/shared/equal_value.rb29
-rw-r--r--spec/ruby/core/string/shared/grapheme_clusters.rb16
-rw-r--r--spec/ruby/core/string/shared/length.rb55
-rw-r--r--spec/ruby/core/string/shared/partition.rb51
-rw-r--r--spec/ruby/core/string/shared/replace.rb47
-rw-r--r--spec/ruby/core/string/shared/slice.rb562
-rw-r--r--spec/ruby/core/string/shared/strip.rb24
-rw-r--r--spec/ruby/core/string/shared/succ.rb96
-rw-r--r--spec/ruby/core/string/shared/to_a.rb9
-rw-r--r--spec/ruby/core/string/shared/to_s.rb13
-rw-r--r--spec/ruby/core/string/shared/to_sym.rb72
-rw-r--r--spec/ruby/core/string/size_spec.rb7
-rw-r--r--spec/ruby/core/string/slice_spec.rb441
-rw-r--r--spec/ruby/core/string/split_spec.rb614
-rw-r--r--spec/ruby/core/string/squeeze_spec.rb118
-rw-r--r--spec/ruby/core/string/start_with_spec.rb18
-rw-r--r--spec/ruby/core/string/string_spec.rb7
-rw-r--r--spec/ruby/core/string/strip_spec.rb61
-rw-r--r--spec/ruby/core/string/sub_spec.rb522
-rw-r--r--spec/ruby/core/string/succ_spec.rb11
-rw-r--r--spec/ruby/core/string/sum_spec.rb22
-rw-r--r--spec/ruby/core/string/swapcase_spec.rb201
-rw-r--r--spec/ruby/core/string/to_c_spec.rb41
-rw-r--r--spec/ruby/core/string/to_f_spec.rb70
-rw-r--r--spec/ruby/core/string/to_i_spec.rb337
-rw-r--r--spec/ruby/core/string/to_r_spec.rb58
-rw-r--r--spec/ruby/core/string/to_s_spec.rb7
-rw-r--r--spec/ruby/core/string/to_str_spec.rb7
-rw-r--r--spec/ruby/core/string/to_sym_spec.rb7
-rw-r--r--spec/ruby/core/string/tr_s_spec.rb131
-rw-r--r--spec/ruby/core/string/tr_spec.rb126
-rw-r--r--spec/ruby/core/string/try_convert_spec.rb50
-rw-r--r--spec/ruby/core/string/uminus_spec.rb6
-rw-r--r--spec/ruby/core/string/undump_spec.rb441
-rw-r--r--spec/ruby/core/string/unicode_normalize_spec.rb115
-rw-r--r--spec/ruby/core/string/unicode_normalized_spec.rb74
-rw-r--r--spec/ruby/core/string/unpack/a_spec.rb66
-rw-r--r--spec/ruby/core/string/unpack/at_spec.rb29
-rw-r--r--spec/ruby/core/string/unpack/b_spec.rb217
-rw-r--r--spec/ruby/core/string/unpack/c_spec.rb73
-rw-r--r--spec/ruby/core/string/unpack/comment_spec.rb25
-rw-r--r--spec/ruby/core/string/unpack/d_spec.rb28
-rw-r--r--spec/ruby/core/string/unpack/e_spec.rb14
-rw-r--r--spec/ruby/core/string/unpack/f_spec.rb28
-rw-r--r--spec/ruby/core/string/unpack/g_spec.rb14
-rw-r--r--spec/ruby/core/string/unpack/h_spec.rb155
-rw-r--r--spec/ruby/core/string/unpack/i_spec.rb152
-rw-r--r--spec/ruby/core/string/unpack/j_spec.rb272
-rw-r--r--spec/ruby/core/string/unpack/l_spec.rb265
-rw-r--r--spec/ruby/core/string/unpack/m_spec.rb192
-rw-r--r--spec/ruby/core/string/unpack/n_spec.rb18
-rw-r--r--spec/ruby/core/string/unpack/p_spec.rb44
-rw-r--r--spec/ruby/core/string/unpack/percent_spec.rb7
-rw-r--r--spec/ruby/core/string/unpack/q_spec.rb64
-rw-r--r--spec/ruby/core/string/unpack/s_spec.rb152
-rw-r--r--spec/ruby/core/string/unpack/shared/basic.rb21
-rw-r--r--spec/ruby/core/string/unpack/shared/float.rb311
-rw-r--r--spec/ruby/core/string/unpack/shared/integer.rb399
-rw-r--r--spec/ruby/core/string/unpack/shared/string.rb51
-rw-r--r--spec/ruby/core/string/unpack/shared/taint.rb2
-rw-r--r--spec/ruby/core/string/unpack/shared/unicode.rb70
-rw-r--r--spec/ruby/core/string/unpack/u_spec.rb97
-rw-r--r--spec/ruby/core/string/unpack/v_spec.rb18
-rw-r--r--spec/ruby/core/string/unpack/w_spec.rb45
-rw-r--r--spec/ruby/core/string/unpack/x_spec.rb62
-rw-r--r--spec/ruby/core/string/unpack/z_spec.rb28
-rw-r--r--spec/ruby/core/string/unpack1_spec.rb36
-rw-r--r--spec/ruby/core/string/unpack_spec.rb34
-rw-r--r--spec/ruby/core/string/upcase_spec.rb194
-rw-r--r--spec/ruby/core/string/uplus_spec.rb22
-rw-r--r--spec/ruby/core/string/upto_spec.rb104
-rw-r--r--spec/ruby/core/string/valid_encoding/utf_8_spec.rb214
-rw-r--r--spec/ruby/core/string/valid_encoding_spec.rb135
-rw-r--r--spec/ruby/core/struct/clone_spec.rb7
-rw-r--r--spec/ruby/core/struct/deconstruct_keys_spec.rb76
-rw-r--r--spec/ruby/core/struct/deconstruct_spec.rb10
-rw-r--r--spec/ruby/core/struct/dig_spec.rb52
-rw-r--r--spec/ruby/core/struct/dup_spec.rb23
-rw-r--r--spec/ruby/core/struct/each_pair_spec.rb33
-rw-r--r--spec/ruby/core/struct/each_spec.rb27
-rw-r--r--spec/ruby/core/struct/element_reference_spec.rb52
-rw-r--r--spec/ruby/core/struct/element_set_spec.rb29
-rw-r--r--spec/ruby/core/struct/eql_spec.rb13
-rw-r--r--spec/ruby/core/struct/equal_value_spec.rb7
-rw-r--r--spec/ruby/core/struct/filter_spec.rb10
-rw-r--r--spec/ruby/core/struct/fixtures/classes.rb26
-rw-r--r--spec/ruby/core/struct/hash_spec.rb64
-rw-r--r--spec/ruby/core/struct/initialize_spec.rb51
-rw-r--r--spec/ruby/core/struct/inspect_spec.rb12
-rw-r--r--spec/ruby/core/struct/instance_variable_get_spec.rb16
-rw-r--r--spec/ruby/core/struct/instance_variables_spec.rb16
-rw-r--r--spec/ruby/core/struct/keyword_init_spec.rb21
-rw-r--r--spec/ruby/core/struct/length_spec.rb12
-rw-r--r--spec/ruby/core/struct/members_spec.rb13
-rw-r--r--spec/ruby/core/struct/new_spec.rb234
-rw-r--r--spec/ruby/core/struct/select_spec.rb10
-rw-r--r--spec/ruby/core/struct/shared/accessor.rb7
-rw-r--r--spec/ruby/core/struct/shared/dup.rb9
-rw-r--r--spec/ruby/core/struct/shared/equal_value.rb37
-rw-r--r--spec/ruby/core/struct/shared/inspect.rb5
-rw-r--r--spec/ruby/core/struct/shared/select.rb26
-rw-r--r--spec/ruby/core/struct/size_spec.rb11
-rw-r--r--spec/ruby/core/struct/struct_spec.rb43
-rw-r--r--spec/ruby/core/struct/to_a_spec.rb12
-rw-r--r--spec/ruby/core/struct/to_h_spec.rb56
-rw-r--r--spec/ruby/core/struct/to_s_spec.rb12
-rw-r--r--spec/ruby/core/struct/values_at_spec.rb59
-rw-r--r--spec/ruby/core/struct/values_spec.rb11
-rw-r--r--spec/ruby/core/symbol/all_symbols_spec.rb19
-rw-r--r--spec/ruby/core/symbol/capitalize_spec.rb41
-rw-r--r--spec/ruby/core/symbol/case_compare_spec.rb11
-rw-r--r--spec/ruby/core/symbol/casecmp_spec.rb144
-rw-r--r--spec/ruby/core/symbol/comparison_spec.rb51
-rw-r--r--spec/ruby/core/symbol/downcase_spec.rb25
-rw-r--r--spec/ruby/core/symbol/dup_spec.rb7
-rw-r--r--spec/ruby/core/symbol/element_reference_spec.rb6
-rw-r--r--spec/ruby/core/symbol/empty_spec.rb11
-rw-r--r--spec/ruby/core/symbol/encoding_spec.rb23
-rw-r--r--spec/ruby/core/symbol/end_with_spec.rb8
-rw-r--r--spec/ruby/core/symbol/equal_value_spec.rb14
-rw-r--r--spec/ruby/core/symbol/fixtures/classes.rb3
-rw-r--r--spec/ruby/core/symbol/id2name_spec.rb6
-rw-r--r--spec/ruby/core/symbol/inspect_spec.rb105
-rw-r--r--spec/ruby/core/symbol/intern_spec.rb11
-rw-r--r--spec/ruby/core/symbol/length_spec.rb6
-rw-r--r--spec/ruby/core/symbol/match_spec.rb77
-rw-r--r--spec/ruby/core/symbol/name_spec.rb19
-rw-r--r--spec/ruby/core/symbol/next_spec.rb6
-rw-r--r--spec/ruby/core/symbol/shared/id2name.rb16
-rw-r--r--spec/ruby/core/symbol/shared/length.rb23
-rw-r--r--spec/ruby/core/symbol/shared/slice.rb262
-rw-r--r--spec/ruby/core/symbol/shared/succ.rb18
-rw-r--r--spec/ruby/core/symbol/size_spec.rb6
-rw-r--r--spec/ruby/core/symbol/slice_spec.rb6
-rw-r--r--spec/ruby/core/symbol/start_with_spec.rb8
-rw-r--r--spec/ruby/core/symbol/succ_spec.rb6
-rw-r--r--spec/ruby/core/symbol/swapcase_spec.rb29
-rw-r--r--spec/ruby/core/symbol/symbol_spec.rb19
-rw-r--r--spec/ruby/core/symbol/to_proc_spec.rb99
-rw-r--r--spec/ruby/core/symbol/to_s_spec.rb6
-rw-r--r--spec/ruby/core/symbol/to_sym_spec.rb9
-rw-r--r--spec/ruby/core/symbol/upcase_spec.rb21
-rw-r--r--spec/ruby/core/systemexit/initialize_spec.rb26
-rw-r--r--spec/ruby/core/systemexit/success_spec.rb13
-rw-r--r--spec/ruby/core/thread/abort_on_exception_spec.rb106
-rw-r--r--spec/ruby/core/thread/add_trace_func_spec.rb5
-rw-r--r--spec/ruby/core/thread/alive_spec.rb58
-rw-r--r--spec/ruby/core/thread/allocate_spec.rb9
-rw-r--r--spec/ruby/core/thread/backtrace/limit_spec.rb15
-rw-r--r--spec/ruby/core/thread/backtrace/location/absolute_path_spec.rb102
-rw-r--r--spec/ruby/core/thread/backtrace/location/base_label_spec.rb49
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/absolute_path.rb4
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/absolute_path_main.rb2
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/absolute_path_method_added.rb10
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/classes.rb35
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/locations_in_main.rb5
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/locations_in_required.rb3
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/main.rb5
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/path.rb2
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/subdir/absolute_path_main_chdir.rb11
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/subdir/sibling.rb1
-rw-r--r--spec/ruby/core/thread/backtrace/location/inspect_spec.rb13
-rw-r--r--spec/ruby/core/thread/backtrace/location/label_spec.rb37
-rw-r--r--spec/ruby/core/thread/backtrace/location/lineno_spec.rb23
-rw-r--r--spec/ruby/core/thread/backtrace/location/path_spec.rb124
-rw-r--r--spec/ruby/core/thread/backtrace/location/to_s_spec.rb13
-rw-r--r--spec/ruby/core/thread/backtrace_locations_spec.rb79
-rw-r--r--spec/ruby/core/thread/backtrace_spec.rb69
-rw-r--r--spec/ruby/core/thread/current_spec.rb31
-rw-r--r--spec/ruby/core/thread/element_reference_spec.rb44
-rw-r--r--spec/ruby/core/thread/element_set_spec.rb51
-rw-r--r--spec/ruby/core/thread/exclusive_spec.rb49
-rw-r--r--spec/ruby/core/thread/exit_spec.rb15
-rw-r--r--spec/ruby/core/thread/fetch_spec.rb36
-rw-r--r--spec/ruby/core/thread/fixtures/classes.rb297
-rw-r--r--spec/ruby/core/thread/fork_spec.rb9
-rw-r--r--spec/ruby/core/thread/group_spec.rb5
-rw-r--r--spec/ruby/core/thread/handle_interrupt_spec.rb125
-rw-r--r--spec/ruby/core/thread/ignore_deadlock_spec.rb21
-rw-r--r--spec/ruby/core/thread/initialize_spec.rb27
-rw-r--r--spec/ruby/core/thread/inspect_spec.rb6
-rw-r--r--spec/ruby/core/thread/join_spec.rb70
-rw-r--r--spec/ruby/core/thread/key_spec.rb53
-rw-r--r--spec/ruby/core/thread/keys_spec.rb44
-rw-r--r--spec/ruby/core/thread/kill_spec.rb25
-rw-r--r--spec/ruby/core/thread/list_spec.rb55
-rw-r--r--spec/ruby/core/thread/main_spec.rb10
-rw-r--r--spec/ruby/core/thread/name_spec.rb54
-rw-r--r--spec/ruby/core/thread/native_thread_id_spec.rb17
-rw-r--r--spec/ruby/core/thread/new_spec.rb83
-rw-r--r--spec/ruby/core/thread/pass_spec.rb8
-rw-r--r--spec/ruby/core/thread/pending_interrupt_spec.rb32
-rw-r--r--spec/ruby/core/thread/priority_spec.rb72
-rw-r--r--spec/ruby/core/thread/raise_spec.rb232
-rw-r--r--spec/ruby/core/thread/report_on_exception_spec.rb157
-rw-r--r--spec/ruby/core/thread/run_spec.rb8
-rw-r--r--spec/ruby/core/thread/set_trace_func_spec.rb5
-rw-r--r--spec/ruby/core/thread/shared/exit.rb200
-rw-r--r--spec/ruby/core/thread/shared/start.rb41
-rw-r--r--spec/ruby/core/thread/shared/to_s.rb53
-rw-r--r--spec/ruby/core/thread/shared/wakeup.rb62
-rw-r--r--spec/ruby/core/thread/start_spec.rb9
-rw-r--r--spec/ruby/core/thread/status_spec.rb60
-rw-r--r--spec/ruby/core/thread/stop_spec.rb54
-rw-r--r--spec/ruby/core/thread/terminate_spec.rb7
-rw-r--r--spec/ruby/core/thread/thread_variable_get_spec.rb25
-rw-r--r--spec/ruby/core/thread/thread_variable_set_spec.rb26
-rw-r--r--spec/ruby/core/thread/thread_variable_spec.rb21
-rw-r--r--spec/ruby/core/thread/thread_variables_spec.rb29
-rw-r--r--spec/ruby/core/thread/to_s_spec.rb6
-rw-r--r--spec/ruby/core/thread/value_spec.rb31
-rw-r--r--spec/ruby/core/thread/wakeup_spec.rb7
-rw-r--r--spec/ruby/core/threadgroup/add_spec.rb39
-rw-r--r--spec/ruby/core/threadgroup/default_spec.rb11
-rw-r--r--spec/ruby/core/threadgroup/enclose_spec.rb24
-rw-r--r--spec/ruby/core/threadgroup/enclosed_spec.rb14
-rw-r--r--spec/ruby/core/threadgroup/list_spec.rb23
-rw-r--r--spec/ruby/core/time/_dump_spec.rb55
-rw-r--r--spec/ruby/core/time/_load_spec.rb52
-rw-r--r--spec/ruby/core/time/asctime_spec.rb6
-rw-r--r--spec/ruby/core/time/at_spec.rb291
-rw-r--r--spec/ruby/core/time/ceil_spec.rb44
-rw-r--r--spec/ruby/core/time/comparison_spec.rb104
-rw-r--r--spec/ruby/core/time/ctime_spec.rb6
-rw-r--r--spec/ruby/core/time/day_spec.rb6
-rw-r--r--spec/ruby/core/time/dst_spec.rb6
-rw-r--r--spec/ruby/core/time/dup_spec.rb46
-rw-r--r--spec/ruby/core/time/eql_spec.rb29
-rw-r--r--spec/ruby/core/time/fixtures/classes.rb106
-rw-r--r--spec/ruby/core/time/floor_spec.rb36
-rw-r--r--spec/ruby/core/time/friday_spec.rb11
-rw-r--r--spec/ruby/core/time/getgm_spec.rb6
-rw-r--r--spec/ruby/core/time/getlocal_spec.rb167
-rw-r--r--spec/ruby/core/time/getutc_spec.rb6
-rw-r--r--spec/ruby/core/time/gm_spec.rb10
-rw-r--r--spec/ruby/core/time/gmt_offset_spec.rb6
-rw-r--r--spec/ruby/core/time/gmt_spec.rb8
-rw-r--r--spec/ruby/core/time/gmtime_spec.rb6
-rw-r--r--spec/ruby/core/time/gmtoff_spec.rb6
-rw-r--r--spec/ruby/core/time/hash_spec.rb11
-rw-r--r--spec/ruby/core/time/hour_spec.rb17
-rw-r--r--spec/ruby/core/time/inspect_spec.rb33
-rw-r--r--spec/ruby/core/time/isdst_spec.rb6
-rw-r--r--spec/ruby/core/time/local_spec.rb11
-rw-r--r--spec/ruby/core/time/localtime_spec.rb152
-rw-r--r--spec/ruby/core/time/mday_spec.rb6
-rw-r--r--spec/ruby/core/time/min_spec.rb17
-rw-r--r--spec/ruby/core/time/minus_spec.rb121
-rw-r--r--spec/ruby/core/time/mktime_spec.rb11
-rw-r--r--spec/ruby/core/time/mon_spec.rb6
-rw-r--r--spec/ruby/core/time/monday_spec.rb11
-rw-r--r--spec/ruby/core/time/month_spec.rb6
-rw-r--r--spec/ruby/core/time/new_spec.rb458
-rw-r--r--spec/ruby/core/time/now_spec.rb51
-rw-r--r--spec/ruby/core/time/nsec_spec.rb31
-rw-r--r--spec/ruby/core/time/plus_spec.rb118
-rw-r--r--spec/ruby/core/time/round_spec.rb35
-rw-r--r--spec/ruby/core/time/saturday_spec.rb11
-rw-r--r--spec/ruby/core/time/sec_spec.rb7
-rw-r--r--spec/ruby/core/time/shared/asctime.rb6
-rw-r--r--spec/ruby/core/time/shared/day.rb15
-rw-r--r--spec/ruby/core/time/shared/getgm.rb9
-rw-r--r--spec/ruby/core/time/shared/gm.rb70
-rw-r--r--spec/ruby/core/time/shared/gmt_offset.rb59
-rw-r--r--spec/ruby/core/time/shared/gmtime.rb33
-rw-r--r--spec/ruby/core/time/shared/inspect.rb21
-rw-r--r--spec/ruby/core/time/shared/isdst.rb8
-rw-r--r--spec/ruby/core/time/shared/local.rb42
-rw-r--r--spec/ruby/core/time/shared/month.rb15
-rw-r--r--spec/ruby/core/time/shared/now.rb33
-rw-r--r--spec/ruby/core/time/shared/time_params.rb267
-rw-r--r--spec/ruby/core/time/shared/to_i.rb16
-rw-r--r--spec/ruby/core/time/strftime_spec.rb93
-rw-r--r--spec/ruby/core/time/subsec_spec.rb27
-rw-r--r--spec/ruby/core/time/succ_spec.rb39
-rw-r--r--spec/ruby/core/time/sunday_spec.rb11
-rw-r--r--spec/ruby/core/time/thursday_spec.rb11
-rw-r--r--spec/ruby/core/time/time_spec.rb7
-rw-r--r--spec/ruby/core/time/to_a_spec.rb12
-rw-r--r--spec/ruby/core/time/to_f_spec.rb7
-rw-r--r--spec/ruby/core/time/to_i_spec.rb6
-rw-r--r--spec/ruby/core/time/to_r_spec.rb11
-rw-r--r--spec/ruby/core/time/to_s_spec.rb6
-rw-r--r--spec/ruby/core/time/tuesday_spec.rb11
-rw-r--r--spec/ruby/core/time/tv_nsec_spec.rb5
-rw-r--r--spec/ruby/core/time/tv_sec_spec.rb6
-rw-r--r--spec/ruby/core/time/tv_usec_spec.rb5
-rw-r--r--spec/ruby/core/time/usec_spec.rb43
-rw-r--r--spec/ruby/core/time/utc_offset_spec.rb6
-rw-r--r--spec/ruby/core/time/utc_spec.rb58
-rw-r--r--spec/ruby/core/time/wday_spec.rb9
-rw-r--r--spec/ruby/core/time/wednesday_spec.rb11
-rw-r--r--spec/ruby/core/time/yday_spec.rb21
-rw-r--r--spec/ruby/core/time/year_spec.rb17
-rw-r--r--spec/ruby/core/time/zone_spec.rb104
-rw-r--r--spec/ruby/core/tracepoint/allow_reentry_spec.rb32
-rw-r--r--spec/ruby/core/tracepoint/binding_spec.rb21
-rw-r--r--spec/ruby/core/tracepoint/callee_id_spec.rb18
-rw-r--r--spec/ruby/core/tracepoint/defined_class_spec.rb27
-rw-r--r--spec/ruby/core/tracepoint/disable_spec.rb76
-rw-r--r--spec/ruby/core/tracepoint/enable_spec.rb574
-rw-r--r--spec/ruby/core/tracepoint/enabled_spec.rb15
-rw-r--r--spec/ruby/core/tracepoint/eval_script_spec.rb23
-rw-r--r--spec/ruby/core/tracepoint/event_spec.rb22
-rw-r--r--spec/ruby/core/tracepoint/fixtures/classes.rb40
-rw-r--r--spec/ruby/core/tracepoint/inspect_spec.rb134
-rw-r--r--spec/ruby/core/tracepoint/lineno_spec.rb20
-rw-r--r--spec/ruby/core/tracepoint/method_id_spec.rb15
-rw-r--r--spec/ruby/core/tracepoint/new_spec.rb72
-rw-r--r--spec/ruby/core/tracepoint/parameters_spec.rb28
-rw-r--r--spec/ruby/core/tracepoint/path_spec.rb26
-rw-r--r--spec/ruby/core/tracepoint/raised_exception_spec.rb20
-rw-r--r--spec/ruby/core/tracepoint/return_value_spec.rb17
-rw-r--r--spec/ruby/core/tracepoint/self_spec.rb26
-rw-r--r--spec/ruby/core/tracepoint/trace_spec.rb10
-rw-r--r--spec/ruby/core/true/and_spec.rb11
-rw-r--r--spec/ruby/core/true/case_compare_spec.rb13
-rw-r--r--spec/ruby/core/true/dup_spec.rb7
-rw-r--r--spec/ruby/core/true/inspect_spec.rb7
-rw-r--r--spec/ruby/core/true/or_spec.rb11
-rw-r--r--spec/ruby/core/true/to_s_spec.rb15
-rw-r--r--spec/ruby/core/true/trueclass_spec.rb15
-rw-r--r--spec/ruby/core/true/xor_spec.rb11
-rw-r--r--spec/ruby/core/unboundmethod/arity_spec.rb207
-rw-r--r--spec/ruby/core/unboundmethod/bind_call_spec.rb50
-rw-r--r--spec/ruby/core/unboundmethod/bind_spec.rb61
-rw-r--r--spec/ruby/core/unboundmethod/clone_spec.rb12
-rw-r--r--spec/ruby/core/unboundmethod/eql_spec.rb5
-rw-r--r--spec/ruby/core/unboundmethod/equal_value_spec.rb157
-rw-r--r--spec/ruby/core/unboundmethod/fixtures/classes.rb103
-rw-r--r--spec/ruby/core/unboundmethod/hash_spec.rb22
-rw-r--r--spec/ruby/core/unboundmethod/inspect_spec.rb7
-rw-r--r--spec/ruby/core/unboundmethod/name_spec.rb15
-rw-r--r--spec/ruby/core/unboundmethod/original_name_spec.rb22
-rw-r--r--spec/ruby/core/unboundmethod/owner_spec.rb33
-rw-r--r--spec/ruby/core/unboundmethod/parameters_spec.rb5
-rw-r--r--spec/ruby/core/unboundmethod/private_spec.rb21
-rw-r--r--spec/ruby/core/unboundmethod/protected_spec.rb21
-rw-r--r--spec/ruby/core/unboundmethod/public_spec.rb21
-rw-r--r--spec/ruby/core/unboundmethod/shared/to_s.rb44
-rw-r--r--spec/ruby/core/unboundmethod/source_location_spec.rb52
-rw-r--r--spec/ruby/core/unboundmethod/super_method_spec.rb51
-rw-r--r--spec/ruby/core/unboundmethod/to_s_spec.rb7
-rw-r--r--spec/ruby/core/warning/element_reference_spec.rb20
-rw-r--r--spec/ruby/core/warning/element_set_spec.rb35
-rw-r--r--spec/ruby/core/warning/warn_spec.rb90
-rw-r--r--spec/ruby/default.mspec50
-rw-r--r--spec/ruby/fixtures/basicobject/method_missing.rb55
-rw-r--r--spec/ruby/fixtures/class.rb142
-rw-r--r--spec/ruby/fixtures/class_variables.rb58
-rw-r--r--spec/ruby/fixtures/code/a/load_fixture.bundle1
-rw-r--r--spec/ruby/fixtures/code/a/load_fixture.dll1
-rw-r--r--spec/ruby/fixtures/code/a/load_fixture.dylib1
-rw-r--r--spec/ruby/fixtures/code/a/load_fixture.so1
-rw-r--r--spec/ruby/fixtures/code/b/load_fixture.rb1
-rw-r--r--spec/ruby/fixtures/code/c/load_fixture.rb1
-rw-r--r--spec/ruby/fixtures/code/concurrent.rb12
-rw-r--r--spec/ruby/fixtures/code/concurrent2.rb8
-rw-r--r--spec/ruby/fixtures/code/concurrent3.rb2
-rw-r--r--spec/ruby/fixtures/code/concurrent_require_fixture.rb4
-rw-r--r--spec/ruby/fixtures/code/file_fixture.rb1
-rw-r--r--spec/ruby/fixtures/code/gem/load_fixture.rb1
-rw-r--r--spec/ruby/fixtures/code/line_fixture.rb5
-rw-r--r--spec/ruby/fixtures/code/load_ext_fixture.rb1
-rw-r--r--spec/ruby/fixtures/code/load_fixture1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.bundle1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.dll1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.dylib1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.ext1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.ext.bundle1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.ext.dll1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.ext.dylib1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.ext.rb1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.ext.so1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.rb1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.so1
-rw-r--r--spec/ruby/fixtures/code/load_fixture_and__FILE__.rb1
-rw-r--r--spec/ruby/fixtures/code/load_wrap_fixture.rb12
-rw-r--r--spec/ruby/fixtures/code/load_wrap_method_fixture.rb9
-rw-r--r--spec/ruby/fixtures/code/methods_fixture.rb364
-rw-r--r--spec/ruby/fixtures/code/raise_fixture.rb1
-rw-r--r--spec/ruby/fixtures/code/recursive_load_fixture.rb5
-rw-r--r--spec/ruby/fixtures/code/recursive_require_fixture.rb3
-rw-r--r--spec/ruby/fixtures/code/symlink/symlink1.rb1
-rw-r--r--spec/ruby/fixtures/code/symlink/symlink2/symlink2.rb1
-rw-r--r--spec/ruby/fixtures/code_loading.rb41
-rw-r--r--spec/ruby/fixtures/constants.rb323
-rw-r--r--spec/ruby/fixtures/enumerator/classes.rb15
-rw-r--r--spec/ruby/fixtures/math/common.rb3
-rw-r--r--spec/ruby/fixtures/rational.rb14
-rw-r--r--spec/ruby/fixtures/reflection.rb352
-rw-r--r--spec/ruby/language/BEGIN_spec.rb41
-rw-r--r--spec/ruby/language/END_spec.rb15
-rw-r--r--spec/ruby/language/README30
-rw-r--r--spec/ruby/language/alias_spec.rb276
-rw-r--r--spec/ruby/language/and_spec.rb80
-rw-r--r--spec/ruby/language/array_spec.rb162
-rw-r--r--spec/ruby/language/block_spec.rb1102
-rw-r--r--spec/ruby/language/break_spec.rb383
-rw-r--r--spec/ruby/language/case_spec.rb445
-rw-r--r--spec/ruby/language/class_spec.rb363
-rw-r--r--spec/ruby/language/class_variable_spec.rb116
-rw-r--r--spec/ruby/language/comment_spec.rb13
-rw-r--r--spec/ruby/language/constants_spec.rb750
-rw-r--r--spec/ruby/language/def_spec.rb798
-rw-r--r--spec/ruby/language/defined_spec.rb1171
-rw-r--r--spec/ruby/language/delegation_spec.rb65
-rw-r--r--spec/ruby/language/encoding_spec.rb36
-rw-r--r--spec/ruby/language/ensure_spec.rb331
-rw-r--r--spec/ruby/language/execution_spec.rb15
-rw-r--r--spec/ruby/language/file_spec.rb21
-rw-r--r--spec/ruby/language/fixtures/argv_encoding.rb1
-rw-r--r--spec/ruby/language/fixtures/array.rb32
-rw-r--r--spec/ruby/language/fixtures/begin_file.rb3
-rw-r--r--spec/ruby/language/fixtures/binary_symbol.rb4
-rw-r--r--spec/ruby/language/fixtures/block.rb61
-rw-r--r--spec/ruby/language/fixtures/break.rb291
-rw-r--r--spec/ruby/language/fixtures/break_lambda_toplevel.rb9
-rw-r--r--spec/ruby/language/fixtures/break_lambda_toplevel_block.rb23
-rw-r--r--spec/ruby/language/fixtures/break_lambda_toplevel_method.rb17
-rw-r--r--spec/ruby/language/fixtures/bytes_magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/case_magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/classes.rb31
-rw-r--r--spec/ruby/language/fixtures/coding_us_ascii.rb11
-rw-r--r--spec/ruby/language/fixtures/coding_utf_8.rb11
-rw-r--r--spec/ruby/language/fixtures/constant_visibility.rb114
-rw-r--r--spec/ruby/language/fixtures/constants_sclass.rb54
-rw-r--r--spec/ruby/language/fixtures/def.rb14
-rw-r--r--spec/ruby/language/fixtures/defined.rb306
-rw-r--r--spec/ruby/language/fixtures/delegation.rb11
-rw-r--r--spec/ruby/language/fixtures/dollar_zero.rb6
-rw-r--r--spec/ruby/language/fixtures/emacs_magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/ensure.rb121
-rw-r--r--spec/ruby/language/fixtures/file.rb1
-rw-r--r--spec/ruby/language/fixtures/for_scope.rb15
-rw-r--r--spec/ruby/language/fixtures/freeze_magic_comment_across_files.rb5
-rw-r--r--spec/ruby/language/fixtures/freeze_magic_comment_across_files_diff_enc.rb5
-rw-r--r--spec/ruby/language/fixtures/freeze_magic_comment_across_files_no_comment.rb5
-rw-r--r--spec/ruby/language/fixtures/freeze_magic_comment_one_literal.rb4
-rw-r--r--spec/ruby/language/fixtures/freeze_magic_comment_required.rb3
-rw-r--r--spec/ruby/language/fixtures/freeze_magic_comment_required_diff_enc.rbbin0 -> 181 bytes-rw-r--r--spec/ruby/language/fixtures/freeze_magic_comment_required_no_comment.rb1
-rw-r--r--spec/ruby/language/fixtures/freeze_magic_comment_two_literals.rb3
-rw-r--r--spec/ruby/language/fixtures/hash_strings_binary.rb7
-rw-r--r--spec/ruby/language/fixtures/hash_strings_usascii.rb7
-rw-r--r--spec/ruby/language/fixtures/hash_strings_utf8.rb7
-rw-r--r--spec/ruby/language/fixtures/magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/match_operators.rb9
-rw-r--r--spec/ruby/language/fixtures/metaclass.rb33
-rw-r--r--spec/ruby/language/fixtures/module.rb24
-rw-r--r--spec/ruby/language/fixtures/next.rb134
-rw-r--r--spec/ruby/language/fixtures/no_magic_comment.rb1
-rw-r--r--spec/ruby/language/fixtures/precedence.rb16
-rw-r--r--spec/ruby/language/fixtures/print_magic_comment_result_at_exit.rb3
-rw-r--r--spec/ruby/language/fixtures/private.rb59
-rw-r--r--spec/ruby/language/fixtures/rescue.rb67
-rw-r--r--spec/ruby/language/fixtures/rescue_captures.rb107
-rw-r--r--spec/ruby/language/fixtures/return.rb135
-rw-r--r--spec/ruby/language/fixtures/second_line_magic_comment.rb3
-rw-r--r--spec/ruby/language/fixtures/second_token_magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/send.rb141
-rwxr-xr-xspec/ruby/language/fixtures/shebang_magic_comment.rb3
-rw-r--r--spec/ruby/language/fixtures/squiggly_heredoc.rb71
-rw-r--r--spec/ruby/language/fixtures/super.rb742
-rw-r--r--spec/ruby/language/fixtures/utf16-be-nobom.rbbin0 -> 68 bytes-rw-r--r--spec/ruby/language/fixtures/utf16-le-nobom.rbbin0 -> 69 bytes-rw-r--r--spec/ruby/language/fixtures/utf8-bom.rb2
-rw-r--r--spec/ruby/language/fixtures/utf8-nobom.rb2
-rw-r--r--spec/ruby/language/fixtures/variables.rb85
-rw-r--r--spec/ruby/language/fixtures/vim_magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/yield.rb41
-rw-r--r--spec/ruby/language/for_spec.rb182
-rw-r--r--spec/ruby/language/hash_spec.rb258
-rw-r--r--spec/ruby/language/heredoc_spec.rb109
-rw-r--r--spec/ruby/language/if_spec.rb371
-rw-r--r--spec/ruby/language/keyword_arguments_spec.rb397
-rw-r--r--spec/ruby/language/lambda_spec.rb620
-rw-r--r--spec/ruby/language/line_spec.rb45
-rw-r--r--spec/ruby/language/loop_spec.rb67
-rw-r--r--spec/ruby/language/magic_comment_spec.rb92
-rw-r--r--spec/ruby/language/match_spec.rb81
-rw-r--r--spec/ruby/language/metaclass_spec.rb143
-rw-r--r--spec/ruby/language/method_spec.rb1856
-rw-r--r--spec/ruby/language/module_spec.rb110
-rw-r--r--spec/ruby/language/next_spec.rb410
-rw-r--r--spec/ruby/language/not_spec.rb51
-rw-r--r--spec/ruby/language/numbered_parameters_spec.rb118
-rw-r--r--spec/ruby/language/numbers_spec.rb105
-rw-r--r--spec/ruby/language/optional_assignments_spec.rb496
-rw-r--r--spec/ruby/language/or_spec.rb90
-rw-r--r--spec/ruby/language/order_spec.rb75
-rw-r--r--spec/ruby/language/pattern_matching_spec.rb1403
-rw-r--r--spec/ruby/language/precedence_spec.rb445
-rw-r--r--spec/ruby/language/predefined/data_spec.rb48
-rw-r--r--spec/ruby/language/predefined/fixtures/data1.rb4
-rw-r--r--spec/ruby/language/predefined/fixtures/data2.rb3
-rw-r--r--spec/ruby/language/predefined/fixtures/data3.rb6
-rw-r--r--spec/ruby/language/predefined/fixtures/data4.rb4
-rw-r--r--spec/ruby/language/predefined/fixtures/data5.rb5
-rw-r--r--spec/ruby/language/predefined/fixtures/data_offset.rb12
-rw-r--r--spec/ruby/language/predefined/fixtures/data_only.rb2
-rw-r--r--spec/ruby/language/predefined/fixtures/empty_data.rb3
-rw-r--r--spec/ruby/language/predefined/fixtures/print_data.rb3
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_dynamic.rb4
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_dynamic_required.rb2
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_id.rb4
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_id_required.rb1
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_required_before.rb2
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_values.rb9
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_variables.rb4
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_variables_required.rb2
-rw-r--r--spec/ruby/language/predefined/toplevel_binding_spec.rb34
-rw-r--r--spec/ruby/language/predefined_spec.rb1394
-rw-r--r--spec/ruby/language/private_spec.rb67
-rw-r--r--spec/ruby/language/proc_spec.rb247
-rw-r--r--spec/ruby/language/range_spec.rb30
-rw-r--r--spec/ruby/language/redo_spec.rb66
-rw-r--r--spec/ruby/language/regexp/anchors_spec.rb179
-rw-r--r--spec/ruby/language/regexp/back-references_spec.rb140
-rw-r--r--spec/ruby/language/regexp/character_classes_spec.rb642
-rw-r--r--spec/ruby/language/regexp/empty_checks_spec.rb135
-rw-r--r--spec/ruby/language/regexp/encoding_spec.rb148
-rw-r--r--spec/ruby/language/regexp/escapes_spec.rb169
-rw-r--r--spec/ruby/language/regexp/grouping_spec.rb63
-rw-r--r--spec/ruby/language/regexp/interpolation_spec.rb58
-rw-r--r--spec/ruby/language/regexp/modifiers_spec.rb115
-rw-r--r--spec/ruby/language/regexp/repetition_spec.rb142
-rw-r--r--spec/ruby/language/regexp/subexpression_call_spec.rb50
-rw-r--r--spec/ruby/language/regexp_spec.rb169
-rw-r--r--spec/ruby/language/rescue_spec.rb515
-rw-r--r--spec/ruby/language/retry_spec.rb52
-rw-r--r--spec/ruby/language/return_spec.rb490
-rw-r--r--spec/ruby/language/safe_navigator_spec.rb99
-rw-r--r--spec/ruby/language/safe_spec.rb27
-rw-r--r--spec/ruby/language/send_spec.rb570
-rw-r--r--spec/ruby/language/shared/__FILE__.rb23
-rw-r--r--spec/ruby/language/shared/__LINE__.rb15
-rw-r--r--spec/ruby/language/singleton_class_spec.rb293
-rw-r--r--spec/ruby/language/source_encoding_spec.rb61
-rw-r--r--spec/ruby/language/string_spec.rb299
-rw-r--r--spec/ruby/language/super_spec.rb434
-rw-r--r--spec/ruby/language/symbol_spec.rb106
-rw-r--r--spec/ruby/language/throw_spec.rb81
-rw-r--r--spec/ruby/language/undef_spec.rb72
-rw-r--r--spec/ruby/language/unless_spec.rb43
-rw-r--r--spec/ruby/language/until_spec.rb234
-rw-r--r--spec/ruby/language/variables_spec.rb870
-rw-r--r--spec/ruby/language/while_spec.rb344
-rw-r--r--spec/ruby/language/yield_spec.rb225
-rw-r--r--spec/ruby/library/English/English_spec.rb171
-rw-r--r--spec/ruby/library/English/alias_spec.rb14
-rw-r--r--spec/ruby/library/abbrev/abbrev_spec.rb31
-rw-r--r--spec/ruby/library/base64/decode64_spec.rb29
-rw-r--r--spec/ruby/library/base64/encode64_spec.rb23
-rw-r--r--spec/ruby/library/base64/strict_decode64_spec.rb41
-rw-r--r--spec/ruby/library/base64/strict_encode64_spec.rb19
-rw-r--r--spec/ruby/library/base64/urlsafe_decode64_spec.rb19
-rw-r--r--spec/ruby/library/base64/urlsafe_encode64_spec.rb20
-rw-r--r--spec/ruby/library/bigdecimal/BigDecimal_spec.rb269
-rw-r--r--spec/ruby/library/bigdecimal/abs_spec.rb50
-rw-r--r--spec/ruby/library/bigdecimal/add_spec.rb193
-rw-r--r--spec/ruby/library/bigdecimal/case_compare_spec.rb7
-rw-r--r--spec/ruby/library/bigdecimal/ceil_spec.rb104
-rw-r--r--spec/ruby/library/bigdecimal/clone_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/coerce_spec.rb26
-rw-r--r--spec/ruby/library/bigdecimal/comparison_spec.rb81
-rw-r--r--spec/ruby/library/bigdecimal/constants_spec.rb70
-rw-r--r--spec/ruby/library/bigdecimal/div_spec.rb110
-rw-r--r--spec/ruby/library/bigdecimal/divide_spec.rb17
-rw-r--r--spec/ruby/library/bigdecimal/divmod_spec.rb180
-rw-r--r--spec/ruby/library/bigdecimal/double_fig_spec.rb9
-rw-r--r--spec/ruby/library/bigdecimal/dup_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/eql_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/equal_value_spec.rb7
-rw-r--r--spec/ruby/library/bigdecimal/exponent_spec.rb27
-rw-r--r--spec/ruby/library/bigdecimal/finite_spec.rb34
-rw-r--r--spec/ruby/library/bigdecimal/fix_spec.rb57
-rw-r--r--spec/ruby/library/bigdecimal/fixtures/classes.rb17
-rw-r--r--spec/ruby/library/bigdecimal/floor_spec.rb100
-rw-r--r--spec/ruby/library/bigdecimal/frac_spec.rb48
-rw-r--r--spec/ruby/library/bigdecimal/gt_spec.rb96
-rw-r--r--spec/ruby/library/bigdecimal/gte_spec.rb100
-rw-r--r--spec/ruby/library/bigdecimal/hash_spec.rb30
-rw-r--r--spec/ruby/library/bigdecimal/infinite_spec.rb32
-rw-r--r--spec/ruby/library/bigdecimal/inspect_spec.rb30
-rw-r--r--spec/ruby/library/bigdecimal/limit_spec.rb55
-rw-r--r--spec/ruby/library/bigdecimal/lt_spec.rb94
-rw-r--r--spec/ruby/library/bigdecimal/lte_spec.rb100
-rw-r--r--spec/ruby/library/bigdecimal/minus_spec.rb66
-rw-r--r--spec/ruby/library/bigdecimal/mode_spec.rb36
-rw-r--r--spec/ruby/library/bigdecimal/modulo_spec.rb12
-rw-r--r--spec/ruby/library/bigdecimal/mult_spec.rb32
-rw-r--r--spec/ruby/library/bigdecimal/multiply_spec.rb41
-rw-r--r--spec/ruby/library/bigdecimal/nan_spec.rb23
-rw-r--r--spec/ruby/library/bigdecimal/nonzero_spec.rb29
-rw-r--r--spec/ruby/library/bigdecimal/plus_spec.rb54
-rw-r--r--spec/ruby/library/bigdecimal/power_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/precs_spec.rb55
-rw-r--r--spec/ruby/library/bigdecimal/quo_spec.rb12
-rw-r--r--spec/ruby/library/bigdecimal/remainder_spec.rb92
-rw-r--r--spec/ruby/library/bigdecimal/round_spec.rb242
-rw-r--r--spec/ruby/library/bigdecimal/shared/clone.rb13
-rw-r--r--spec/ruby/library/bigdecimal/shared/eql.rb61
-rw-r--r--spec/ruby/library/bigdecimal/shared/modulo.rb125
-rw-r--r--spec/ruby/library/bigdecimal/shared/mult.rb97
-rw-r--r--spec/ruby/library/bigdecimal/shared/power.rb72
-rw-r--r--spec/ruby/library/bigdecimal/shared/quo.rb67
-rw-r--r--spec/ruby/library/bigdecimal/shared/to_int.rb16
-rw-r--r--spec/ruby/library/bigdecimal/sign_spec.rb46
-rw-r--r--spec/ruby/library/bigdecimal/split_spec.rb86
-rw-r--r--spec/ruby/library/bigdecimal/sqrt_spec.rb112
-rw-r--r--spec/ruby/library/bigdecimal/sub_spec.rb70
-rw-r--r--spec/ruby/library/bigdecimal/to_d_spec.rb10
-rw-r--r--spec/ruby/library/bigdecimal/to_f_spec.rb54
-rw-r--r--spec/ruby/library/bigdecimal/to_i_spec.rb7
-rw-r--r--spec/ruby/library/bigdecimal/to_int_spec.rb8
-rw-r--r--spec/ruby/library/bigdecimal/to_r_spec.rb28
-rw-r--r--spec/ruby/library/bigdecimal/to_s_spec.rb97
-rw-r--r--spec/ruby/library/bigdecimal/truncate_spec.rb81
-rw-r--r--spec/ruby/library/bigdecimal/uminus_spec.rb58
-rw-r--r--spec/ruby/library/bigdecimal/uplus_spec.rb17
-rw-r--r--spec/ruby/library/bigdecimal/util_spec.rb40
-rw-r--r--spec/ruby/library/bigdecimal/zero_spec.rb27
-rw-r--r--spec/ruby/library/bigmath/log_spec.rb10
-rw-r--r--spec/ruby/library/cgi/cookie/domain_spec.rb23
-rw-r--r--spec/ruby/library/cgi/cookie/expires_spec.rb23
-rw-r--r--spec/ruby/library/cgi/cookie/initialize_spec.rb147
-rw-r--r--spec/ruby/library/cgi/cookie/name_spec.rb23
-rw-r--r--spec/ruby/library/cgi/cookie/parse_spec.rb26
-rw-r--r--spec/ruby/library/cgi/cookie/path_spec.rb23
-rw-r--r--spec/ruby/library/cgi/cookie/secure_spec.rb70
-rw-r--r--spec/ruby/library/cgi/cookie/to_s_spec.rb33
-rw-r--r--spec/ruby/library/cgi/cookie/value_spec.rb76
-rw-r--r--spec/ruby/library/cgi/escapeElement_spec.rb20
-rw-r--r--spec/ruby/library/cgi/escapeHTML_spec.rb17
-rw-r--r--spec/ruby/library/cgi/escape_spec.rb18
-rw-r--r--spec/ruby/library/cgi/htmlextension/a_spec.rb49
-rw-r--r--spec/ruby/library/cgi/htmlextension/base_spec.rb33
-rw-r--r--spec/ruby/library/cgi/htmlextension/blockquote_spec.rb33
-rw-r--r--spec/ruby/library/cgi/htmlextension/br_spec.rb22
-rw-r--r--spec/ruby/library/cgi/htmlextension/caption_spec.rb33
-rw-r--r--spec/ruby/library/cgi/htmlextension/checkbox_group_spec.rb76
-rw-r--r--spec/ruby/library/cgi/htmlextension/checkbox_spec.rb77
-rw-r--r--spec/ruby/library/cgi/htmlextension/doctype_spec.rb27
-rw-r--r--spec/ruby/library/cgi/htmlextension/file_field_spec.rb72
-rw-r--r--spec/ruby/library/cgi/htmlextension/fixtures/common.rb15
-rw-r--r--spec/ruby/library/cgi/htmlextension/form_spec.rb58
-rw-r--r--spec/ruby/library/cgi/htmlextension/frame_spec.rb14
-rw-r--r--spec/ruby/library/cgi/htmlextension/frameset_spec.rb14
-rw-r--r--spec/ruby/library/cgi/htmlextension/hidden_spec.rb59
-rw-r--r--spec/ruby/library/cgi/htmlextension/html_spec.rb66
-rw-r--r--spec/ruby/library/cgi/htmlextension/image_button_spec.rb69
-rw-r--r--spec/ruby/library/cgi/htmlextension/img_spec.rb83
-rw-r--r--spec/ruby/library/cgi/htmlextension/multipart_form_spec.rb64
-rw-r--r--spec/ruby/library/cgi/htmlextension/password_field_spec.rb84
-rw-r--r--spec/ruby/library/cgi/htmlextension/popup_menu_spec.rb8
-rw-r--r--spec/ruby/library/cgi/htmlextension/radio_button_spec.rb77
-rw-r--r--spec/ruby/library/cgi/htmlextension/radio_group_spec.rb77
-rw-r--r--spec/ruby/library/cgi/htmlextension/reset_spec.rb57
-rw-r--r--spec/ruby/library/cgi/htmlextension/scrolling_list_spec.rb8
-rw-r--r--spec/ruby/library/cgi/htmlextension/shared/popup_menu.rb94
-rw-r--r--spec/ruby/library/cgi/htmlextension/submit_spec.rb57
-rw-r--r--spec/ruby/library/cgi/htmlextension/text_field_spec.rb84
-rw-r--r--spec/ruby/library/cgi/htmlextension/textarea_spec.rb73
-rw-r--r--spec/ruby/library/cgi/http_header_spec.rb8
-rw-r--r--spec/ruby/library/cgi/initialize_spec.rb133
-rw-r--r--spec/ruby/library/cgi/out_spec.rb51
-rw-r--r--spec/ruby/library/cgi/parse_spec.rb24
-rw-r--r--spec/ruby/library/cgi/pretty_spec.rb24
-rw-r--r--spec/ruby/library/cgi/print_spec.rb26
-rw-r--r--spec/ruby/library/cgi/queryextension/accept_charset_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/accept_encoding_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/accept_language_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/accept_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/auth_type_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/cache_control_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/content_length_spec.rb26
-rw-r--r--spec/ruby/library/cgi/queryextension/content_type_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/cookies_spec.rb10
-rw-r--r--spec/ruby/library/cgi/queryextension/element_reference_spec.rb27
-rw-r--r--spec/ruby/library/cgi/queryextension/from_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/gateway_interface_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/has_key_spec.rb7
-rw-r--r--spec/ruby/library/cgi/queryextension/host_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/include_spec.rb7
-rw-r--r--spec/ruby/library/cgi/queryextension/key_spec.rb7
-rw-r--r--spec/ruby/library/cgi/queryextension/keys_spec.rb20
-rw-r--r--spec/ruby/library/cgi/queryextension/multipart_spec.rb40
-rw-r--r--spec/ruby/library/cgi/queryextension/negotiate_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/params_spec.rb37
-rw-r--r--spec/ruby/library/cgi/queryextension/path_info_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/path_translated_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/pragma_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/query_string_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/raw_cookie2_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/raw_cookie_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/referer_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/remote_addr_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/remote_host_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/remote_ident_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/remote_user_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/request_method_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/script_name_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/server_name_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/server_port_spec.rb26
-rw-r--r--spec/ruby/library/cgi/queryextension/server_protocol_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/server_software_spec.rb22
-rw-r--r--spec/ruby/library/cgi/queryextension/shared/has_key.rb19
-rw-r--r--spec/ruby/library/cgi/queryextension/user_agent_spec.rb22
-rw-r--r--spec/ruby/library/cgi/rfc1123_date_spec.rb10
-rw-r--r--spec/ruby/library/cgi/shared/http_header.rb112
-rw-r--r--spec/ruby/library/cgi/unescapeElement_spec.rb20
-rw-r--r--spec/ruby/library/cgi/unescapeHTML_spec.rb44
-rw-r--r--spec/ruby/library/cgi/unescape_spec.rb15
-rw-r--r--spec/ruby/library/coverage/fixtures/eval_code.rb11
-rw-r--r--spec/ruby/library/coverage/fixtures/second_class.rb5
-rw-r--r--spec/ruby/library/coverage/fixtures/some_class.rb16
-rw-r--r--spec/ruby/library/coverage/fixtures/start_coverage.rb3
-rw-r--r--spec/ruby/library/coverage/peek_result_spec.rb64
-rw-r--r--spec/ruby/library/coverage/result_spec.rb141
-rw-r--r--spec/ruby/library/coverage/running_spec.rb20
-rw-r--r--spec/ruby/library/coverage/start_spec.rb12
-rw-r--r--spec/ruby/library/csv/basicwriter/close_on_terminate_spec.rb6
-rw-r--r--spec/ruby/library/csv/basicwriter/initialize_spec.rb6
-rw-r--r--spec/ruby/library/csv/basicwriter/terminate_spec.rb6
-rw-r--r--spec/ruby/library/csv/cell/data_spec.rb6
-rw-r--r--spec/ruby/library/csv/cell/initialize_spec.rb6
-rw-r--r--spec/ruby/library/csv/fixtures/one_line.csv1
-rw-r--r--spec/ruby/library/csv/foreach_spec.rb6
-rw-r--r--spec/ruby/library/csv/generate_line_spec.rb30
-rw-r--r--spec/ruby/library/csv/generate_row_spec.rb6
-rw-r--r--spec/ruby/library/csv/generate_spec.rb32
-rw-r--r--spec/ruby/library/csv/iobuf/close_spec.rb6
-rw-r--r--spec/ruby/library/csv/iobuf/initialize_spec.rb6
-rw-r--r--spec/ruby/library/csv/iobuf/read_spec.rb6
-rw-r--r--spec/ruby/library/csv/iobuf/terminate_spec.rb6
-rw-r--r--spec/ruby/library/csv/ioreader/close_on_terminate_spec.rb6
-rw-r--r--spec/ruby/library/csv/ioreader/get_row_spec.rb6
-rw-r--r--spec/ruby/library/csv/ioreader/initialize_spec.rb6
-rw-r--r--spec/ruby/library/csv/ioreader/terminate_spec.rb6
-rw-r--r--spec/ruby/library/csv/liberal_parsing_spec.rb19
-rw-r--r--spec/ruby/library/csv/open_spec.rb6
-rw-r--r--spec/ruby/library/csv/parse_spec.rb93
-rw-r--r--spec/ruby/library/csv/read_spec.rb6
-rw-r--r--spec/ruby/library/csv/readlines_spec.rb35
-rw-r--r--spec/ruby/library/csv/streambuf/add_buf_spec.rb6
-rw-r--r--spec/ruby/library/csv/streambuf/buf_size_spec.rb6
-rw-r--r--spec/ruby/library/csv/streambuf/drop_spec.rb6
-rw-r--r--spec/ruby/library/csv/streambuf/element_reference_spec.rb6
-rw-r--r--spec/ruby/library/csv/streambuf/get_spec.rb6
-rw-r--r--spec/ruby/library/csv/streambuf/idx_is_eos_spec.rb6
-rw-r--r--spec/ruby/library/csv/streambuf/initialize_spec.rb6
-rw-r--r--spec/ruby/library/csv/streambuf/is_eos_spec.rb6
-rw-r--r--spec/ruby/library/csv/streambuf/read_spec.rb6
-rw-r--r--spec/ruby/library/csv/streambuf/rel_buf_spec.rb6
-rw-r--r--spec/ruby/library/csv/streambuf/terminate_spec.rb6
-rw-r--r--spec/ruby/library/csv/stringreader/get_row_spec.rb6
-rw-r--r--spec/ruby/library/csv/stringreader/initialize_spec.rb6
-rw-r--r--spec/ruby/library/csv/writer/add_row_spec.rb6
-rw-r--r--spec/ruby/library/csv/writer/append_spec.rb6
-rw-r--r--spec/ruby/library/csv/writer/close_spec.rb6
-rw-r--r--spec/ruby/library/csv/writer/create_spec.rb6
-rw-r--r--spec/ruby/library/csv/writer/generate_spec.rb6
-rw-r--r--spec/ruby/library/csv/writer/initialize_spec.rb6
-rw-r--r--spec/ruby/library/csv/writer/terminate_spec.rb6
-rw-r--r--spec/ruby/library/date/accessor_spec.rb91
-rw-r--r--spec/ruby/library/date/add_month_spec.rb38
-rw-r--r--spec/ruby/library/date/add_spec.rb30
-rw-r--r--spec/ruby/library/date/ajd_spec.rb6
-rw-r--r--spec/ruby/library/date/ajd_to_amjd_spec.rb6
-rw-r--r--spec/ruby/library/date/ajd_to_jd_spec.rb6
-rw-r--r--spec/ruby/library/date/amjd_spec.rb6
-rw-r--r--spec/ruby/library/date/amjd_to_ajd_spec.rb6
-rw-r--r--spec/ruby/library/date/append_spec.rb6
-rw-r--r--spec/ruby/library/date/asctime_spec.rb6
-rw-r--r--spec/ruby/library/date/boat_spec.rb24
-rw-r--r--spec/ruby/library/date/case_compare_spec.rb6
-rw-r--r--spec/ruby/library/date/civil_spec.rb7
-rw-r--r--spec/ruby/library/date/commercial_spec.rb17
-rw-r--r--spec/ruby/library/date/commercial_to_jd_spec.rb6
-rw-r--r--spec/ruby/library/date/comparison_spec.rb6
-rw-r--r--spec/ruby/library/date/constants_spec.rb48
-rw-r--r--spec/ruby/library/date/conversions_spec.rb43
-rw-r--r--spec/ruby/library/date/ctime_spec.rb6
-rw-r--r--spec/ruby/library/date/cwday_spec.rb6
-rw-r--r--spec/ruby/library/date/cweek_spec.rb6
-rw-r--r--spec/ruby/library/date/cwyear_spec.rb6
-rw-r--r--spec/ruby/library/date/day_fraction_spec.rb6
-rw-r--r--spec/ruby/library/date/day_fraction_to_time_spec.rb6
-rw-r--r--spec/ruby/library/date/day_spec.rb9
-rw-r--r--spec/ruby/library/date/downto_spec.rb18
-rw-r--r--spec/ruby/library/date/england_spec.rb6
-rw-r--r--spec/ruby/library/date/eql_spec.rb12
-rw-r--r--spec/ruby/library/date/format/bag/method_missing_spec.rb6
-rw-r--r--spec/ruby/library/date/format/bag/to_hash_spec.rb6
-rw-r--r--spec/ruby/library/date/friday_spec.rb12
-rw-r--r--spec/ruby/library/date/gregorian_leap_spec.rb15
-rw-r--r--spec/ruby/library/date/gregorian_spec.rb16
-rw-r--r--spec/ruby/library/date/hash_spec.rb8
-rw-r--r--spec/ruby/library/date/infinity/abs_spec.rb6
-rw-r--r--spec/ruby/library/date/infinity/coerce_spec.rb6
-rw-r--r--spec/ruby/library/date/infinity/comparison_spec.rb6
-rw-r--r--spec/ruby/library/date/infinity/d_spec.rb6
-rw-r--r--spec/ruby/library/date/infinity/finite_spec.rb6
-rw-r--r--spec/ruby/library/date/infinity/infinite_spec.rb6
-rw-r--r--spec/ruby/library/date/infinity/nan_spec.rb6
-rw-r--r--spec/ruby/library/date/infinity/uminus_spec.rb6
-rw-r--r--spec/ruby/library/date/infinity/uplus_spec.rb6
-rw-r--r--spec/ruby/library/date/infinity/zero_spec.rb6
-rw-r--r--spec/ruby/library/date/infinity_spec.rb67
-rw-r--r--spec/ruby/library/date/inspect_spec.rb6
-rw-r--r--spec/ruby/library/date/iso8601_spec.rb35
-rw-r--r--spec/ruby/library/date/italy_spec.rb6
-rw-r--r--spec/ruby/library/date/jd_spec.rb15
-rw-r--r--spec/ruby/library/date/jd_to_ajd_spec.rb6
-rw-r--r--spec/ruby/library/date/jd_to_civil_spec.rb6
-rw-r--r--spec/ruby/library/date/jd_to_commercial_spec.rb6
-rw-r--r--spec/ruby/library/date/jd_to_ld_spec.rb6
-rw-r--r--spec/ruby/library/date/jd_to_mjd_spec.rb6
-rw-r--r--spec/ruby/library/date/jd_to_ordinal_spec.rb6
-rw-r--r--spec/ruby/library/date/jd_to_wday_spec.rb6
-rw-r--r--spec/ruby/library/date/julian_leap_spec.rb15
-rw-r--r--spec/ruby/library/date/julian_spec.rb16
-rw-r--r--spec/ruby/library/date/ld_spec.rb6
-rw-r--r--spec/ruby/library/date/ld_to_jd_spec.rb6
-rw-r--r--spec/ruby/library/date/leap_spec.rb10
-rw-r--r--spec/ruby/library/date/mday_spec.rb6
-rw-r--r--spec/ruby/library/date/minus_month_spec.rb23
-rw-r--r--spec/ruby/library/date/minus_spec.rb30
-rw-r--r--spec/ruby/library/date/mjd_spec.rb6
-rw-r--r--spec/ruby/library/date/mjd_to_jd_spec.rb6
-rw-r--r--spec/ruby/library/date/mon_spec.rb6
-rw-r--r--spec/ruby/library/date/monday_spec.rb8
-rw-r--r--spec/ruby/library/date/month_spec.rb9
-rw-r--r--spec/ruby/library/date/new_spec.rb8
-rw-r--r--spec/ruby/library/date/new_start_spec.rb6
-rw-r--r--spec/ruby/library/date/next_day_spec.rb14
-rw-r--r--spec/ruby/library/date/next_month_spec.rb29
-rw-r--r--spec/ruby/library/date/next_spec.rb6
-rw-r--r--spec/ruby/library/date/next_year_spec.rb12
-rw-r--r--spec/ruby/library/date/ordinal_spec.rb7
-rw-r--r--spec/ruby/library/date/ordinal_to_jd_spec.rb6
-rw-r--r--spec/ruby/library/date/parse_spec.rb159
-rw-r--r--spec/ruby/library/date/plus_spec.rb20
-rw-r--r--spec/ruby/library/date/prev_day_spec.rb14
-rw-r--r--spec/ruby/library/date/prev_month_spec.rb29
-rw-r--r--spec/ruby/library/date/prev_year_spec.rb12
-rw-r--r--spec/ruby/library/date/relationship_spec.rb20
-rw-r--r--spec/ruby/library/date/rfc3339_spec.rb13
-rw-r--r--spec/ruby/library/date/right_shift_spec.rb6
-rw-r--r--spec/ruby/library/date/saturday_spec.rb8
-rw-r--r--spec/ruby/library/date/shared/civil.rb57
-rw-r--r--spec/ruby/library/date/shared/commercial.rb39
-rw-r--r--spec/ruby/library/date/shared/jd.rb14
-rw-r--r--spec/ruby/library/date/shared/new_bang.rb14
-rw-r--r--spec/ruby/library/date/shared/ordinal.rb22
-rw-r--r--spec/ruby/library/date/shared/parse.rb54
-rw-r--r--spec/ruby/library/date/shared/parse_eu.rb37
-rw-r--r--spec/ruby/library/date/shared/parse_us.rb36
-rw-r--r--spec/ruby/library/date/shared/valid_civil.rb36
-rw-r--r--spec/ruby/library/date/shared/valid_commercial.rb34
-rw-r--r--spec/ruby/library/date/shared/valid_jd.rb20
-rw-r--r--spec/ruby/library/date/shared/valid_ordinal.rb26
-rw-r--r--spec/ruby/library/date/start_spec.rb6
-rw-r--r--spec/ruby/library/date/step_spec.rb56
-rw-r--r--spec/ruby/library/date/strftime_spec.rb49
-rw-r--r--spec/ruby/library/date/strptime_spec.rb149
-rw-r--r--spec/ruby/library/date/succ_spec.rb6
-rw-r--r--spec/ruby/library/date/sunday_spec.rb8
-rw-r--r--spec/ruby/library/date/thursday_spec.rb8
-rw-r--r--spec/ruby/library/date/time_to_day_fraction_spec.rb6
-rw-r--r--spec/ruby/library/date/to_s_spec.rb6
-rw-r--r--spec/ruby/library/date/today_spec.rb14
-rw-r--r--spec/ruby/library/date/tuesday_spec.rb8
-rw-r--r--spec/ruby/library/date/upto_spec.rb16
-rw-r--r--spec/ruby/library/date/valid_civil_spec.rb9
-rw-r--r--spec/ruby/library/date/valid_commercial_spec.rb8
-rw-r--r--spec/ruby/library/date/valid_date_spec.rb7
-rw-r--r--spec/ruby/library/date/valid_jd_spec.rb9
-rw-r--r--spec/ruby/library/date/valid_ordinal_spec.rb9
-rw-r--r--spec/ruby/library/date/valid_time_spec.rb6
-rw-r--r--spec/ruby/library/date/wday_spec.rb9
-rw-r--r--spec/ruby/library/date/wednesday_spec.rb8
-rw-r--r--spec/ruby/library/date/yday_spec.rb6
-rw-r--r--spec/ruby/library/date/year_spec.rb9
-rw-r--r--spec/ruby/library/date/zone_to_diff_spec.rb6
-rw-r--r--spec/ruby/library/datetime/_strptime_spec.rb6
-rw-r--r--spec/ruby/library/datetime/add_spec.rb9
-rw-r--r--spec/ruby/library/datetime/civil_spec.rb6
-rw-r--r--spec/ruby/library/datetime/commercial_spec.rb6
-rw-r--r--spec/ruby/library/datetime/hour_spec.rb47
-rw-r--r--spec/ruby/library/datetime/httpdate_spec.rb6
-rw-r--r--spec/ruby/library/datetime/iso8601_spec.rb10
-rw-r--r--spec/ruby/library/datetime/jd_spec.rb6
-rw-r--r--spec/ruby/library/datetime/jisx0301_spec.rb10
-rw-r--r--spec/ruby/library/datetime/min_spec.rb6
-rw-r--r--spec/ruby/library/datetime/minute_spec.rb6
-rw-r--r--spec/ruby/library/datetime/new_offset_spec.rb6
-rw-r--r--spec/ruby/library/datetime/new_spec.rb52
-rw-r--r--spec/ruby/library/datetime/now_spec.rb25
-rw-r--r--spec/ruby/library/datetime/offset_spec.rb6
-rw-r--r--spec/ruby/library/datetime/ordinal_spec.rb6
-rw-r--r--spec/ruby/library/datetime/parse_spec.rb127
-rw-r--r--spec/ruby/library/datetime/rfc2822_spec.rb6
-rw-r--r--spec/ruby/library/datetime/rfc3339_spec.rb10
-rw-r--r--spec/ruby/library/datetime/rfc822_spec.rb6
-rw-r--r--spec/ruby/library/datetime/sec_fraction_spec.rb6
-rw-r--r--spec/ruby/library/datetime/sec_spec.rb6
-rw-r--r--spec/ruby/library/datetime/second_fraction_spec.rb6
-rw-r--r--spec/ruby/library/datetime/second_spec.rb6
-rw-r--r--spec/ruby/library/datetime/shared/min.rb40
-rw-r--r--spec/ruby/library/datetime/shared/sec.rb45
-rw-r--r--spec/ruby/library/datetime/strftime_spec.rb61
-rw-r--r--spec/ruby/library/datetime/strptime_spec.rb6
-rw-r--r--spec/ruby/library/datetime/subtract_spec.rb19
-rw-r--r--spec/ruby/library/datetime/to_date_spec.rb37
-rw-r--r--spec/ruby/library/datetime/to_datetime_spec.rb9
-rw-r--r--spec/ruby/library/datetime/to_s_spec.rb17
-rw-r--r--spec/ruby/library/datetime/to_time_spec.rb50
-rw-r--r--spec/ruby/library/datetime/xmlschema_spec.rb10
-rw-r--r--spec/ruby/library/datetime/zone_spec.rb6
-rw-r--r--spec/ruby/library/delegate/delegate_class/instance_method_spec.rb52
-rw-r--r--spec/ruby/library/delegate/delegate_class/instance_methods_spec.rb26
-rw-r--r--spec/ruby/library/delegate/delegate_class/private_instance_methods_spec.rb23
-rw-r--r--spec/ruby/library/delegate/delegate_class/protected_instance_methods_spec.rb29
-rw-r--r--spec/ruby/library/delegate/delegate_class/public_instance_methods_spec.rb25
-rw-r--r--spec/ruby/library/delegate/delegate_class/respond_to_missing_spec.rb23
-rw-r--r--spec/ruby/library/delegate/delegator/case_compare_spec.rb11
-rw-r--r--spec/ruby/library/delegate/delegator/compare_spec.rb11
-rw-r--r--spec/ruby/library/delegate/delegator/complement_spec.rb11
-rw-r--r--spec/ruby/library/delegate/delegator/eql_spec.rb35
-rw-r--r--spec/ruby/library/delegate/delegator/equal_spec.rb13
-rw-r--r--spec/ruby/library/delegate/delegator/equal_value_spec.rb24
-rw-r--r--spec/ruby/library/delegate/delegator/frozen_spec.rb39
-rw-r--r--spec/ruby/library/delegate/delegator/hash_spec.rb11
-rw-r--r--spec/ruby/library/delegate/delegator/marshal_spec.rb21
-rw-r--r--spec/ruby/library/delegate/delegator/method_spec.rb69
-rw-r--r--spec/ruby/library/delegate/delegator/methods_spec.rb37
-rw-r--r--spec/ruby/library/delegate/delegator/not_equal_spec.rb24
-rw-r--r--spec/ruby/library/delegate/delegator/not_spec.rb11
-rw-r--r--spec/ruby/library/delegate/delegator/private_methods_spec.rb20
-rw-r--r--spec/ruby/library/delegate/delegator/protected_methods_spec.rb18
-rw-r--r--spec/ruby/library/delegate/delegator/public_methods_spec.rb18
-rw-r--r--spec/ruby/library/delegate/delegator/send_spec.rb26
-rw-r--r--spec/ruby/library/delegate/delegator/taint_spec.rb8
-rw-r--r--spec/ruby/library/delegate/delegator/tap_spec.rb16
-rw-r--r--spec/ruby/library/delegate/delegator/trust_spec.rb8
-rw-r--r--spec/ruby/library/delegate/delegator/untaint_spec.rb8
-rw-r--r--spec/ruby/library/delegate/delegator/untrust_spec.rb8
-rw-r--r--spec/ruby/library/delegate/fixtures/classes.rb60
-rw-r--r--spec/ruby/library/digest/bubblebabble_spec.rb29
-rw-r--r--spec/ruby/library/digest/hexencode_spec.rb31
-rw-r--r--spec/ruby/library/digest/instance/append_spec.rb7
-rw-r--r--spec/ruby/library/digest/instance/new_spec.rb19
-rw-r--r--spec/ruby/library/digest/instance/shared/update.rb8
-rw-r--r--spec/ruby/library/digest/instance/update_spec.rb7
-rw-r--r--spec/ruby/library/digest/md5/append_spec.rb7
-rw-r--r--spec/ruby/library/digest/md5/block_length_spec.rb11
-rw-r--r--spec/ruby/library/digest/md5/digest_bang_spec.rb13
-rw-r--r--spec/ruby/library/digest/md5/digest_length_spec.rb11
-rw-r--r--spec/ruby/library/digest/md5/digest_spec.rb32
-rw-r--r--spec/ruby/library/digest/md5/equal_spec.rb37
-rw-r--r--spec/ruby/library/digest/md5/file_spec.rb43
-rw-r--r--spec/ruby/library/digest/md5/hexdigest_bang_spec.rb14
-rw-r--r--spec/ruby/library/digest/md5/hexdigest_spec.rb32
-rw-r--r--spec/ruby/library/digest/md5/inspect_spec.rb11
-rw-r--r--spec/ruby/library/digest/md5/length_spec.rb7
-rw-r--r--spec/ruby/library/digest/md5/reset_spec.rb14
-rw-r--r--spec/ruby/library/digest/md5/shared/constants.rb17
-rw-r--r--spec/ruby/library/digest/md5/shared/length.rb8
-rw-r--r--spec/ruby/library/digest/md5/shared/sample.rb17
-rw-r--r--spec/ruby/library/digest/md5/shared/update.rb7
-rw-r--r--spec/ruby/library/digest/md5/size_spec.rb7
-rw-r--r--spec/ruby/library/digest/md5/to_s_spec.rb24
-rw-r--r--spec/ruby/library/digest/md5/update_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha1/digest_spec.rb20
-rw-r--r--spec/ruby/library/digest/sha1/file_spec.rb43
-rw-r--r--spec/ruby/library/digest/sha1/shared/constants.rb18
-rw-r--r--spec/ruby/library/digest/sha2/hexdigest_spec.rb32
-rw-r--r--spec/ruby/library/digest/sha256/append_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha256/block_length_spec.rb11
-rw-r--r--spec/ruby/library/digest/sha256/digest_bang_spec.rb13
-rw-r--r--spec/ruby/library/digest/sha256/digest_length_spec.rb11
-rw-r--r--spec/ruby/library/digest/sha256/digest_spec.rb32
-rw-r--r--spec/ruby/library/digest/sha256/equal_spec.rb36
-rw-r--r--spec/ruby/library/digest/sha256/file_spec.rb47
-rw-r--r--spec/ruby/library/digest/sha256/hexdigest_bang_spec.rb14
-rw-r--r--spec/ruby/library/digest/sha256/hexdigest_spec.rb32
-rw-r--r--spec/ruby/library/digest/sha256/inspect_spec.rb11
-rw-r--r--spec/ruby/library/digest/sha256/length_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha256/reset_spec.rb14
-rw-r--r--spec/ruby/library/digest/sha256/shared/constants.rb18
-rw-r--r--spec/ruby/library/digest/sha256/shared/length.rb8
-rw-r--r--spec/ruby/library/digest/sha256/shared/update.rb7
-rw-r--r--spec/ruby/library/digest/sha256/size_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha256/to_s_spec.rb21
-rw-r--r--spec/ruby/library/digest/sha256/update_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha384/append_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha384/block_length_spec.rb11
-rw-r--r--spec/ruby/library/digest/sha384/digest_bang_spec.rb13
-rw-r--r--spec/ruby/library/digest/sha384/digest_length_spec.rb11
-rw-r--r--spec/ruby/library/digest/sha384/digest_spec.rb32
-rw-r--r--spec/ruby/library/digest/sha384/equal_spec.rb36
-rw-r--r--spec/ruby/library/digest/sha384/file_spec.rb43
-rw-r--r--spec/ruby/library/digest/sha384/hexdigest_bang_spec.rb14
-rw-r--r--spec/ruby/library/digest/sha384/hexdigest_spec.rb32
-rw-r--r--spec/ruby/library/digest/sha384/inspect_spec.rb11
-rw-r--r--spec/ruby/library/digest/sha384/length_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha384/reset_spec.rb14
-rw-r--r--spec/ruby/library/digest/sha384/shared/constants.rb19
-rw-r--r--spec/ruby/library/digest/sha384/shared/length.rb8
-rw-r--r--spec/ruby/library/digest/sha384/shared/update.rb7
-rw-r--r--spec/ruby/library/digest/sha384/size_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha384/to_s_spec.rb21
-rw-r--r--spec/ruby/library/digest/sha384/update_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha512/append_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha512/block_length_spec.rb11
-rw-r--r--spec/ruby/library/digest/sha512/digest_bang_spec.rb13
-rw-r--r--spec/ruby/library/digest/sha512/digest_length_spec.rb11
-rw-r--r--spec/ruby/library/digest/sha512/digest_spec.rb32
-rw-r--r--spec/ruby/library/digest/sha512/equal_spec.rb36
-rw-r--r--spec/ruby/library/digest/sha512/file_spec.rb43
-rw-r--r--spec/ruby/library/digest/sha512/hexdigest_bang_spec.rb14
-rw-r--r--spec/ruby/library/digest/sha512/hexdigest_spec.rb32
-rw-r--r--spec/ruby/library/digest/sha512/inspect_spec.rb11
-rw-r--r--spec/ruby/library/digest/sha512/length_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha512/reset_spec.rb14
-rw-r--r--spec/ruby/library/digest/sha512/shared/constants.rb18
-rw-r--r--spec/ruby/library/digest/sha512/shared/length.rb8
-rw-r--r--spec/ruby/library/digest/sha512/shared/update.rb7
-rw-r--r--spec/ruby/library/digest/sha512/size_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha512/to_s_spec.rb21
-rw-r--r--spec/ruby/library/digest/sha512/update_spec.rb7
-rw-r--r--spec/ruby/library/drb/fixtures/test_server.rb8
-rw-r--r--spec/ruby/library/drb/start_service_spec.rb28
-rw-r--r--spec/ruby/library/erb/def_class_spec.rb29
-rw-r--r--spec/ruby/library/erb/def_method_spec.rb26
-rw-r--r--spec/ruby/library/erb/def_module_spec.rb27
-rw-r--r--spec/ruby/library/erb/defmethod/def_erb_method_spec.rb64
-rw-r--r--spec/ruby/library/erb/filename_spec.rb40
-rw-r--r--spec/ruby/library/erb/fixtures/classes.rb5
-rw-r--r--spec/ruby/library/erb/new_spec.rb157
-rw-r--r--spec/ruby/library/erb/result_spec.rb86
-rw-r--r--spec/ruby/library/erb/run_spec.rb96
-rw-r--r--spec/ruby/library/erb/src_spec.rb33
-rw-r--r--spec/ruby/library/erb/util/h_spec.rb7
-rw-r--r--spec/ruby/library/erb/util/html_escape_spec.rb7
-rw-r--r--spec/ruby/library/erb/util/shared/html_escape.rb42
-rw-r--r--spec/ruby/library/erb/util/shared/url_encode.rb42
-rw-r--r--spec/ruby/library/erb/util/u_spec.rb7
-rw-r--r--spec/ruby/library/erb/util/url_encode_spec.rb7
-rw-r--r--spec/ruby/library/etc/confstr_spec.rb14
-rw-r--r--spec/ruby/library/etc/endgrent_spec.rb7
-rw-r--r--spec/ruby/library/etc/endpwent_spec.rb7
-rw-r--r--spec/ruby/library/etc/getgrent_spec.rb7
-rw-r--r--spec/ruby/library/etc/getgrgid_spec.rb69
-rw-r--r--spec/ruby/library/etc/getgrnam_spec.rb30
-rw-r--r--spec/ruby/library/etc/getlogin_spec.rb43
-rw-r--r--spec/ruby/library/etc/getpwent_spec.rb7
-rw-r--r--spec/ruby/library/etc/getpwnam_spec.rb28
-rw-r--r--spec/ruby/library/etc/getpwuid_spec.rb36
-rw-r--r--spec/ruby/library/etc/group_spec.rb27
-rw-r--r--spec/ruby/library/etc/nprocessors_spec.rb9
-rw-r--r--spec/ruby/library/etc/passwd_spec.rb15
-rw-r--r--spec/ruby/library/etc/shared/windows.rb7
-rw-r--r--spec/ruby/library/etc/struct_group_spec.rb35
-rw-r--r--spec/ruby/library/etc/struct_passwd_spec.rb43
-rw-r--r--spec/ruby/library/etc/sysconf_spec.rb22
-rw-r--r--spec/ruby/library/etc/sysconfdir_spec.rb8
-rw-r--r--spec/ruby/library/etc/systmpdir_spec.rb8
-rw-r--r--spec/ruby/library/expect/expect_spec.rb62
-rw-r--r--spec/ruby/library/fiber/alive_spec.rb46
-rw-r--r--spec/ruby/library/fiber/current_spec.rb63
-rw-r--r--spec/ruby/library/fiber/resume_spec.rb35
-rw-r--r--spec/ruby/library/fiber/transfer_spec.rb128
-rw-r--r--spec/ruby/library/fiddle/handle/initialize_spec.rb10
-rw-r--r--spec/ruby/library/find/find_spec.rb30
-rw-r--r--spec/ruby/library/find/fixtures/common.rb174
-rw-r--r--spec/ruby/library/find/prune_spec.rb12
-rw-r--r--spec/ruby/library/getoptlong/each_option_spec.rb7
-rw-r--r--spec/ruby/library/getoptlong/each_spec.rb7
-rw-r--r--spec/ruby/library/getoptlong/error_message_spec.rb23
-rw-r--r--spec/ruby/library/getoptlong/get_option_spec.rb7
-rw-r--r--spec/ruby/library/getoptlong/get_spec.rb7
-rw-r--r--spec/ruby/library/getoptlong/initialize_spec.rb28
-rw-r--r--spec/ruby/library/getoptlong/ordering_spec.rb38
-rw-r--r--spec/ruby/library/getoptlong/set_options_spec.rb98
-rw-r--r--spec/ruby/library/getoptlong/shared/each.rb18
-rw-r--r--spec/ruby/library/getoptlong/shared/get.rb62
-rw-r--r--spec/ruby/library/getoptlong/terminate_spec.rb30
-rw-r--r--spec/ruby/library/getoptlong/terminated_spec.rb17
-rw-r--r--spec/ruby/library/io-wait/wait_readable_spec.rb27
-rw-r--r--spec/ruby/library/io-wait/wait_writable_spec.rb20
-rw-r--r--spec/ruby/library/ipaddr/hton_spec.rb30
-rw-r--r--spec/ruby/library/ipaddr/ipv4_conversion_spec.rb44
-rw-r--r--spec/ruby/library/ipaddr/new_spec.rb110
-rw-r--r--spec/ruby/library/ipaddr/operator_spec.rb82
-rw-r--r--spec/ruby/library/ipaddr/reverse_spec.rb27
-rw-r--r--spec/ruby/library/ipaddr/to_s_spec.rb20
-rw-r--r--spec/ruby/library/logger/device/close_spec.rb31
-rw-r--r--spec/ruby/library/logger/device/new_spec.rb47
-rw-r--r--spec/ruby/library/logger/device/write_spec.rb51
-rw-r--r--spec/ruby/library/logger/fixtures/common.rb9
-rw-r--r--spec/ruby/library/logger/logger/add_spec.rb81
-rw-r--r--spec/ruby/library/logger/logger/close_spec.rb20
-rw-r--r--spec/ruby/library/logger/logger/datetime_format_spec.rb60
-rw-r--r--spec/ruby/library/logger/logger/debug_spec.rb52
-rw-r--r--spec/ruby/library/logger/logger/error_spec.rb53
-rw-r--r--spec/ruby/library/logger/logger/fatal_spec.rb53
-rw-r--r--spec/ruby/library/logger/logger/info_spec.rb53
-rw-r--r--spec/ruby/library/logger/logger/new_spec.rb118
-rw-r--r--spec/ruby/library/logger/logger/unknown_spec.rb36
-rw-r--r--spec/ruby/library/logger/logger/warn_spec.rb53
-rw-r--r--spec/ruby/library/logger/severity_spec.rb13
-rw-r--r--spec/ruby/library/matrix/I_spec.rb9
-rw-r--r--spec/ruby/library/matrix/antisymmetric_spec.rb38
-rw-r--r--spec/ruby/library/matrix/build_spec.rb76
-rw-r--r--spec/ruby/library/matrix/clone_spec.rb28
-rw-r--r--spec/ruby/library/matrix/coerce_spec.rb11
-rw-r--r--spec/ruby/library/matrix/collect_spec.rb9
-rw-r--r--spec/ruby/library/matrix/column_size_spec.rb16
-rw-r--r--spec/ruby/library/matrix/column_spec.rb38
-rw-r--r--spec/ruby/library/matrix/column_vector_spec.rb28
-rw-r--r--spec/ruby/library/matrix/column_vectors_spec.rb29
-rw-r--r--spec/ruby/library/matrix/columns_spec.rb45
-rw-r--r--spec/ruby/library/matrix/conj_spec.rb9
-rw-r--r--spec/ruby/library/matrix/conjugate_spec.rb9
-rw-r--r--spec/ruby/library/matrix/constructor_spec.rb68
-rw-r--r--spec/ruby/library/matrix/det_spec.rb10
-rw-r--r--spec/ruby/library/matrix/determinant_spec.rb10
-rw-r--r--spec/ruby/library/matrix/diagonal_spec.rb75
-rw-r--r--spec/ruby/library/matrix/divide_spec.rb57
-rw-r--r--spec/ruby/library/matrix/each_spec.rb77
-rw-r--r--spec/ruby/library/matrix/each_with_index_spec.rb84
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalue_matrix_spec.rb12
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalues_spec.rb25
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/eigenvector_matrix_spec.rb23
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/eigenvectors_spec.rb25
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/initialize_spec.rb27
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/to_a_spec.rb21
-rw-r--r--spec/ruby/library/matrix/element_reference_spec.rb26
-rw-r--r--spec/ruby/library/matrix/empty_spec.rb71
-rw-r--r--spec/ruby/library/matrix/eql_spec.rb14
-rw-r--r--spec/ruby/library/matrix/equal_value_spec.rb14
-rw-r--r--spec/ruby/library/matrix/exponent_spec.rb67
-rw-r--r--spec/ruby/library/matrix/find_index_spec.rb149
-rw-r--r--spec/ruby/library/matrix/fixtures/classes.rb7
-rw-r--r--spec/ruby/library/matrix/hash_spec.rb18
-rw-r--r--spec/ruby/library/matrix/hermitian_spec.rb37
-rw-r--r--spec/ruby/library/matrix/identity_spec.rb9
-rw-r--r--spec/ruby/library/matrix/imag_spec.rb9
-rw-r--r--spec/ruby/library/matrix/imaginary_spec.rb9
-rw-r--r--spec/ruby/library/matrix/inspect_spec.rb30
-rw-r--r--spec/ruby/library/matrix/inv_spec.rb10
-rw-r--r--spec/ruby/library/matrix/inverse_from_spec.rb9
-rw-r--r--spec/ruby/library/matrix/inverse_spec.rb10
-rw-r--r--spec/ruby/library/matrix/lower_triangular_spec.rb27
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/determinant_spec.rb24
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/initialize_spec.rb16
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/l_spec.rb21
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/p_spec.rb21
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/solve_spec.rb56
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/to_a_spec.rb36
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/u_spec.rb21
-rw-r--r--spec/ruby/library/matrix/map_spec.rb9
-rw-r--r--spec/ruby/library/matrix/minor_spec.rb88
-rw-r--r--spec/ruby/library/matrix/minus_spec.rb45
-rw-r--r--spec/ruby/library/matrix/multiply_spec.rb71
-rw-r--r--spec/ruby/library/matrix/new_spec.rb11
-rw-r--r--spec/ruby/library/matrix/normal_spec.rb29
-rw-r--r--spec/ruby/library/matrix/orthogonal_spec.rb29
-rw-r--r--spec/ruby/library/matrix/permutation_spec.rb35
-rw-r--r--spec/ruby/library/matrix/plus_spec.rb45
-rw-r--r--spec/ruby/library/matrix/rank_spec.rb22
-rw-r--r--spec/ruby/library/matrix/real_spec.rb46
-rw-r--r--spec/ruby/library/matrix/rect_spec.rb9
-rw-r--r--spec/ruby/library/matrix/rectangular_spec.rb9
-rw-r--r--spec/ruby/library/matrix/regular_spec.rb34
-rw-r--r--spec/ruby/library/matrix/round_spec.rb24
-rw-r--r--spec/ruby/library/matrix/row_size_spec.rb16
-rw-r--r--spec/ruby/library/matrix/row_spec.rb39
-rw-r--r--spec/ruby/library/matrix/row_vector_spec.rb27
-rw-r--r--spec/ruby/library/matrix/row_vectors_spec.rb29
-rw-r--r--spec/ruby/library/matrix/rows_spec.rb44
-rw-r--r--spec/ruby/library/matrix/scalar/Fail_spec.rb9
-rw-r--r--spec/ruby/library/matrix/scalar/Raise_spec.rb9
-rw-r--r--spec/ruby/library/matrix/scalar/divide_spec.rb9
-rw-r--r--spec/ruby/library/matrix/scalar/exponent_spec.rb9
-rw-r--r--spec/ruby/library/matrix/scalar/included_spec.rb9
-rw-r--r--spec/ruby/library/matrix/scalar/initialize_spec.rb9
-rw-r--r--spec/ruby/library/matrix/scalar/minus_spec.rb9
-rw-r--r--spec/ruby/library/matrix/scalar/multiply_spec.rb9
-rw-r--r--spec/ruby/library/matrix/scalar/plus_spec.rb9
-rw-r--r--spec/ruby/library/matrix/scalar_spec.rb70
-rw-r--r--spec/ruby/library/matrix/shared/collect.rb26
-rw-r--r--spec/ruby/library/matrix/shared/conjugate.rb20
-rw-r--r--spec/ruby/library/matrix/shared/determinant.rb38
-rw-r--r--spec/ruby/library/matrix/shared/equal_value.rb33
-rw-r--r--spec/ruby/library/matrix/shared/identity.rb19
-rw-r--r--spec/ruby/library/matrix/shared/imaginary.rb20
-rw-r--r--spec/ruby/library/matrix/shared/inverse.rb38
-rw-r--r--spec/ruby/library/matrix/shared/rectangular.rb18
-rw-r--r--spec/ruby/library/matrix/shared/trace.rb12
-rw-r--r--spec/ruby/library/matrix/shared/transpose.rb19
-rw-r--r--spec/ruby/library/matrix/singular_spec.rb34
-rw-r--r--spec/ruby/library/matrix/spec_helper.rb35
-rw-r--r--spec/ruby/library/matrix/square_spec.rb31
-rw-r--r--spec/ruby/library/matrix/symmetric_spec.rb32
-rw-r--r--spec/ruby/library/matrix/t_spec.rb9
-rw-r--r--spec/ruby/library/matrix/to_a_spec.rb14
-rw-r--r--spec/ruby/library/matrix/to_s_spec.rb9
-rw-r--r--spec/ruby/library/matrix/tr_spec.rb10
-rw-r--r--spec/ruby/library/matrix/trace_spec.rb10
-rw-r--r--spec/ruby/library/matrix/transpose_spec.rb9
-rw-r--r--spec/ruby/library/matrix/unit_spec.rb9
-rw-r--r--spec/ruby/library/matrix/unitary_spec.rb36
-rw-r--r--spec/ruby/library/matrix/upper_triangular_spec.rb27
-rw-r--r--spec/ruby/library/matrix/vector/cross_product_spec.rb17
-rw-r--r--spec/ruby/library/matrix/vector/each2_spec.rb52
-rw-r--r--spec/ruby/library/matrix/vector/eql_spec.rb19
-rw-r--r--spec/ruby/library/matrix/vector/inner_product_spec.rb25
-rw-r--r--spec/ruby/library/matrix/vector/normalize_spec.rb21
-rw-r--r--spec/ruby/library/matrix/zero_spec.rb55
-rw-r--r--spec/ruby/library/mkmf/mkmf_spec.rb7
-rw-r--r--spec/ruby/library/monitor/enter_spec.rb28
-rw-r--r--spec/ruby/library/monitor/mon_initialize_spec.rb31
-rw-r--r--spec/ruby/library/monitor/new_cond_spec.rb88
-rw-r--r--spec/ruby/library/monitor/synchronize_spec.rb41
-rw-r--r--spec/ruby/library/monitor/try_enter_spec.rb39
-rw-r--r--spec/ruby/library/net/FTPError_spec.rb11
-rw-r--r--spec/ruby/library/net/FTPPermError_spec.rb15
-rw-r--r--spec/ruby/library/net/FTPProtoError_spec.rb15
-rw-r--r--spec/ruby/library/net/FTPReplyError_spec.rb15
-rw-r--r--spec/ruby/library/net/FTPTempError_spec.rb15
-rw-r--r--spec/ruby/library/net/ftp/abort_spec.rb65
-rw-r--r--spec/ruby/library/net/ftp/acct_spec.rb61
-rw-r--r--spec/ruby/library/net/ftp/binary_spec.rb27
-rw-r--r--spec/ruby/library/net/ftp/chdir_spec.rb102
-rw-r--r--spec/ruby/library/net/ftp/close_spec.rb33
-rw-r--r--spec/ruby/library/net/ftp/closed_spec.rb24
-rw-r--r--spec/ruby/library/net/ftp/connect_spec.rb52
-rw-r--r--spec/ruby/library/net/ftp/debug_mode_spec.rb26
-rw-r--r--spec/ruby/library/net/ftp/default_passive_spec.rb11
-rw-r--r--spec/ruby/library/net/ftp/delete_spec.rb62
-rw-r--r--spec/ruby/library/net/ftp/dir_spec.rb11
-rw-r--r--spec/ruby/library/net/ftp/fixtures/default_passive.rb3
-rw-r--r--spec/ruby/library/net/ftp/fixtures/passive.rb2
-rw-r--r--spec/ruby/library/net/ftp/fixtures/putbinaryfile3
-rw-r--r--spec/ruby/library/net/ftp/fixtures/puttextfile3
-rw-r--r--spec/ruby/library/net/ftp/fixtures/server.rb277
-rw-r--r--spec/ruby/library/net/ftp/get_spec.rb24
-rw-r--r--spec/ruby/library/net/ftp/getbinaryfile_spec.rb11
-rw-r--r--spec/ruby/library/net/ftp/getdir_spec.rb10
-rw-r--r--spec/ruby/library/net/ftp/gettextfile_spec.rb11
-rw-r--r--spec/ruby/library/net/ftp/help_spec.rb69
-rw-r--r--spec/ruby/library/net/ftp/initialize_spec.rb408
-rw-r--r--spec/ruby/library/net/ftp/last_response_code_spec.rb11
-rw-r--r--spec/ruby/library/net/ftp/last_response_spec.rb28
-rw-r--r--spec/ruby/library/net/ftp/lastresp_spec.rb11
-rw-r--r--spec/ruby/library/net/ftp/list_spec.rb11
-rw-r--r--spec/ruby/library/net/ftp/login_spec.rb198
-rw-r--r--spec/ruby/library/net/ftp/ls_spec.rb11
-rw-r--r--spec/ruby/library/net/ftp/mdtm_spec.rb41
-rw-r--r--spec/ruby/library/net/ftp/mkdir_spec.rb64
-rw-r--r--spec/ruby/library/net/ftp/mtime_spec.rb53
-rw-r--r--spec/ruby/library/net/ftp/nlst_spec.rb95
-rw-r--r--spec/ruby/library/net/ftp/noop_spec.rb41
-rw-r--r--spec/ruby/library/net/ftp/open_spec.rb58
-rw-r--r--spec/ruby/library/net/ftp/passive_spec.rb31
-rw-r--r--spec/ruby/library/net/ftp/put_spec.rb24
-rw-r--r--spec/ruby/library/net/ftp/putbinaryfile_spec.rb11
-rw-r--r--spec/ruby/library/net/ftp/puttextfile_spec.rb11
-rw-r--r--spec/ruby/library/net/ftp/pwd_spec.rb56
-rw-r--r--spec/ruby/library/net/ftp/quit_spec.rb36
-rw-r--r--spec/ruby/library/net/ftp/rename_spec.rb97
-rw-r--r--spec/ruby/library/net/ftp/resume_spec.rb26
-rw-r--r--spec/ruby/library/net/ftp/retrbinary_spec.rb33
-rw-r--r--spec/ruby/library/net/ftp/retrlines_spec.rb37
-rw-r--r--spec/ruby/library/net/ftp/return_code_spec.rb27
-rw-r--r--spec/ruby/library/net/ftp/rmdir_spec.rb61
-rw-r--r--spec/ruby/library/net/ftp/sendcmd_spec.rb57
-rw-r--r--spec/ruby/library/net/ftp/set_socket_spec.rb11
-rw-r--r--spec/ruby/library/net/ftp/shared/getbinaryfile.rb150
-rw-r--r--spec/ruby/library/net/ftp/shared/gettextfile.rb100
-rw-r--r--spec/ruby/library/net/ftp/shared/last_response_code.rb25
-rw-r--r--spec/ruby/library/net/ftp/shared/list.rb104
-rw-r--r--spec/ruby/library/net/ftp/shared/putbinaryfile.rb167
-rw-r--r--spec/ruby/library/net/ftp/shared/puttextfile.rb120
-rw-r--r--spec/ruby/library/net/ftp/shared/pwd.rb3
-rw-r--r--spec/ruby/library/net/ftp/site_spec.rb56
-rw-r--r--spec/ruby/library/net/ftp/size_spec.rb51
-rw-r--r--spec/ruby/library/net/ftp/spec_helper.rb5
-rw-r--r--spec/ruby/library/net/ftp/status_spec.rb70
-rw-r--r--spec/ruby/library/net/ftp/storbinary_spec.rb51
-rw-r--r--spec/ruby/library/net/ftp/storlines_spec.rb46
-rw-r--r--spec/ruby/library/net/ftp/system_spec.rb51
-rw-r--r--spec/ruby/library/net/ftp/voidcmd_spec.rb57
-rw-r--r--spec/ruby/library/net/ftp/welcome_spec.rb28
-rw-r--r--spec/ruby/library/net/http/HTTPBadResponse_spec.rb8
-rw-r--r--spec/ruby/library/net/http/HTTPClientExcepton_spec.rb12
-rw-r--r--spec/ruby/library/net/http/HTTPError_spec.rb12
-rw-r--r--spec/ruby/library/net/http/HTTPFatalError_spec.rb12
-rw-r--r--spec/ruby/library/net/http/HTTPHeaderSyntaxError_spec.rb8
-rw-r--r--spec/ruby/library/net/http/HTTPRetriableError_spec.rb12
-rw-r--r--spec/ruby/library/net/http/HTTPServerException_spec.rb12
-rw-r--r--spec/ruby/library/net/http/http/Proxy_spec.rb35
-rw-r--r--spec/ruby/library/net/http/http/active_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/address_spec.rb9
-rw-r--r--spec/ruby/library/net/http/http/close_on_empty_response_spec.rb10
-rw-r--r--spec/ruby/library/net/http/http/copy_spec.rb21
-rw-r--r--spec/ruby/library/net/http/http/default_port_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/delete_spec.rb21
-rw-r--r--spec/ruby/library/net/http/http/finish_spec.rb29
-rw-r--r--spec/ruby/library/net/http/http/fixtures/http_server.rb123
-rw-r--r--spec/ruby/library/net/http/http/get2_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/get_print_spec.rb30
-rw-r--r--spec/ruby/library/net/http/http/get_response_spec.rb30
-rw-r--r--spec/ruby/library/net/http/http/get_spec.rb96
-rw-r--r--spec/ruby/library/net/http/http/head2_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/head_spec.rb25
-rw-r--r--spec/ruby/library/net/http/http/http_default_port_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/https_default_port_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/initialize_spec.rb46
-rw-r--r--spec/ruby/library/net/http/http/inspect_spec.rb24
-rw-r--r--spec/ruby/library/net/http/http/is_version_1_1_spec.rb7
-rw-r--r--spec/ruby/library/net/http/http/is_version_1_2_spec.rb7
-rw-r--r--spec/ruby/library/net/http/http/lock_spec.rb21
-rw-r--r--spec/ruby/library/net/http/http/mkcol_spec.rb21
-rw-r--r--spec/ruby/library/net/http/http/move_spec.rb25
-rw-r--r--spec/ruby/library/net/http/http/new_spec.rb86
-rw-r--r--spec/ruby/library/net/http/http/newobj_spec.rb48
-rw-r--r--spec/ruby/library/net/http/http/open_timeout_spec.rb24
-rw-r--r--spec/ruby/library/net/http/http/options_spec.rb25
-rw-r--r--spec/ruby/library/net/http/http/port_spec.rb9
-rw-r--r--spec/ruby/library/net/http/http/post2_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/post_form_spec.rb22
-rw-r--r--spec/ruby/library/net/http/http/post_spec.rb74
-rw-r--r--spec/ruby/library/net/http/http/propfind_spec.rb24
-rw-r--r--spec/ruby/library/net/http/http/proppatch_spec.rb24
-rw-r--r--spec/ruby/library/net/http/http/proxy_address_spec.rb31
-rw-r--r--spec/ruby/library/net/http/http/proxy_class_spec.rb9
-rw-r--r--spec/ruby/library/net/http/http/proxy_pass_spec.rb39
-rw-r--r--spec/ruby/library/net/http/http/proxy_port_spec.rb39
-rw-r--r--spec/ruby/library/net/http/http/proxy_user_spec.rb39
-rw-r--r--spec/ruby/library/net/http/http/put2_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/put_spec.rb24
-rw-r--r--spec/ruby/library/net/http/http/read_timeout_spec.rb24
-rw-r--r--spec/ruby/library/net/http/http/request_get_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/request_head_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/request_post_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/request_put_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/request_spec.rb109
-rw-r--r--spec/ruby/library/net/http/http/request_types_spec.rb254
-rw-r--r--spec/ruby/library/net/http/http/send_request_spec.rb61
-rw-r--r--spec/ruby/library/net/http/http/set_debug_output_spec.rb33
-rw-r--r--spec/ruby/library/net/http/http/shared/request_get.rb41
-rw-r--r--spec/ruby/library/net/http/http/shared/request_head.rb41
-rw-r--r--spec/ruby/library/net/http/http/shared/request_post.rb41
-rw-r--r--spec/ruby/library/net/http/http/shared/request_put.rb41
-rw-r--r--spec/ruby/library/net/http/http/shared/started.rb26
-rw-r--r--spec/ruby/library/net/http/http/shared/version_1_1.rb6
-rw-r--r--spec/ruby/library/net/http/http/shared/version_1_2.rb6
-rw-r--r--spec/ruby/library/net/http/http/socket_type_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/start_spec.rb111
-rw-r--r--spec/ruby/library/net/http/http/started_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/trace_spec.rb24
-rw-r--r--spec/ruby/library/net/http/http/unlock_spec.rb24
-rw-r--r--spec/ruby/library/net/http/http/use_ssl_spec.rb9
-rw-r--r--spec/ruby/library/net/http/http/version_1_1_spec.rb7
-rw-r--r--spec/ruby/library/net/http/http/version_1_2_spec.rb20
-rw-r--r--spec/ruby/library/net/http/httpexceptions/fixtures/classes.rb5
-rw-r--r--spec/ruby/library/net/http/httpexceptions/initialize_spec.rb17
-rw-r--r--spec/ruby/library/net/http/httpexceptions/response_spec.rb10
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/body_exist_spec.rb21
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/body_spec.rb30
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/body_stream_spec.rb32
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/exec_spec.rb131
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/inspect_spec.rb25
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/method_spec.rb15
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/path_spec.rb12
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/request_body_permitted_spec.rb12
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/response_body_permitted_spec.rb12
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/set_body_internal_spec.rb21
-rw-r--r--spec/ruby/library/net/http/httpheader/add_field_spec.rb31
-rw-r--r--spec/ruby/library/net/http/httpheader/basic_auth_spec.rb14
-rw-r--r--spec/ruby/library/net/http/httpheader/canonical_each_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/chunked_spec.rb22
-rw-r--r--spec/ruby/library/net/http/httpheader/content_length_spec.rb54
-rw-r--r--spec/ruby/library/net/http/httpheader/content_range_spec.rb32
-rw-r--r--spec/ruby/library/net/http/httpheader/content_type_spec.rb26
-rw-r--r--spec/ruby/library/net/http/httpheader/delete_spec.rb30
-rw-r--r--spec/ruby/library/net/http/httpheader/each_capitalized_name_spec.rb35
-rw-r--r--spec/ruby/library/net/http/httpheader/each_capitalized_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/each_header_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/each_key_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/each_name_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/each_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/each_value_spec.rb35
-rw-r--r--spec/ruby/library/net/http/httpheader/element_reference_spec.rb39
-rw-r--r--spec/ruby/library/net/http/httpheader/element_set_spec.rb41
-rw-r--r--spec/ruby/library/net/http/httpheader/fetch_spec.rb68
-rw-r--r--spec/ruby/library/net/http/httpheader/fixtures/classes.rb11
-rw-r--r--spec/ruby/library/net/http/httpheader/form_data_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/get_fields_spec.rb39
-rw-r--r--spec/ruby/library/net/http/httpheader/initialize_http_header_spec.rb21
-rw-r--r--spec/ruby/library/net/http/httpheader/key_spec.rb21
-rw-r--r--spec/ruby/library/net/http/httpheader/length_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/main_type_spec.rb24
-rw-r--r--spec/ruby/library/net/http/httpheader/proxy_basic_auth_spec.rb14
-rw-r--r--spec/ruby/library/net/http/httpheader/range_length_spec.rb32
-rw-r--r--spec/ruby/library/net/http/httpheader/range_spec.rb48
-rw-r--r--spec/ruby/library/net/http/httpheader/set_content_type_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/set_form_data_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/set_range_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/shared/each_capitalized.rb31
-rw-r--r--spec/ruby/library/net/http/httpheader/shared/each_header.rb31
-rw-r--r--spec/ruby/library/net/http/httpheader/shared/each_name.rb31
-rw-r--r--spec/ruby/library/net/http/httpheader/shared/set_content_type.rb18
-rw-r--r--spec/ruby/library/net/http/httpheader/shared/set_form_data.rb27
-rw-r--r--spec/ruby/library/net/http/httpheader/shared/set_range.rb89
-rw-r--r--spec/ruby/library/net/http/httpheader/shared/size.rb18
-rw-r--r--spec/ruby/library/net/http/httpheader/size_spec.rb8
-rw-r--r--spec/ruby/library/net/http/httpheader/sub_type_spec.rb32
-rw-r--r--spec/ruby/library/net/http/httpheader/to_hash_spec.rb25
-rw-r--r--spec/ruby/library/net/http/httpheader/type_params_spec.rb24
-rw-r--r--spec/ruby/library/net/http/httprequest/initialize_spec.rb45
-rw-r--r--spec/ruby/library/net/http/httpresponse/body_permitted_spec.rb13
-rw-r--r--spec/ruby/library/net/http/httpresponse/body_spec.rb7
-rw-r--r--spec/ruby/library/net/http/httpresponse/code_spec.rb24
-rw-r--r--spec/ruby/library/net/http/httpresponse/code_type_spec.rb24
-rw-r--r--spec/ruby/library/net/http/httpresponse/entity_spec.rb7
-rw-r--r--spec/ruby/library/net/http/httpresponse/error_spec.rb24
-rw-r--r--spec/ruby/library/net/http/httpresponse/error_type_spec.rb24
-rw-r--r--spec/ruby/library/net/http/httpresponse/exception_type_spec.rb13
-rw-r--r--spec/ruby/library/net/http/httpresponse/header_spec.rb9
-rw-r--r--spec/ruby/library/net/http/httpresponse/http_version_spec.rb12
-rw-r--r--spec/ruby/library/net/http/httpresponse/initialize_spec.rb11
-rw-r--r--spec/ruby/library/net/http/httpresponse/inspect_spec.rb15
-rw-r--r--spec/ruby/library/net/http/httpresponse/message_spec.rb9
-rw-r--r--spec/ruby/library/net/http/httpresponse/msg_spec.rb9
-rw-r--r--spec/ruby/library/net/http/httpresponse/read_body_spec.rb86
-rw-r--r--spec/ruby/library/net/http/httpresponse/read_header_spec.rb9
-rw-r--r--spec/ruby/library/net/http/httpresponse/read_new_spec.rb23
-rw-r--r--spec/ruby/library/net/http/httpresponse/reading_body_spec.rb58
-rw-r--r--spec/ruby/library/net/http/httpresponse/response_spec.rb9
-rw-r--r--spec/ruby/library/net/http/httpresponse/shared/body.rb20
-rw-r--r--spec/ruby/library/net/http/httpresponse/value_spec.rb24
-rw-r--r--spec/ruby/library/objectspace/fixtures/trace.rb5
-rw-r--r--spec/ruby/library/objectspace/memsize_of_all_spec.rb22
-rw-r--r--spec/ruby/library/objectspace/memsize_of_spec.rb34
-rw-r--r--spec/ruby/library/objectspace/reachable_objects_from_spec.rb61
-rw-r--r--spec/ruby/library/objectspace/trace_object_allocations_spec.rb149
-rw-r--r--spec/ruby/library/objectspace/trace_spec.rb15
-rw-r--r--spec/ruby/library/observer/add_observer_spec.rb23
-rw-r--r--spec/ruby/library/observer/count_observers_spec.rb23
-rw-r--r--spec/ruby/library/observer/delete_observer_spec.rb19
-rw-r--r--spec/ruby/library/observer/delete_observers_spec.rb19
-rw-r--r--spec/ruby/library/observer/fixtures/classes.rb17
-rw-r--r--spec/ruby/library/observer/notify_observers_spec.rb31
-rw-r--r--spec/ruby/library/open3/capture2_spec.rb6
-rw-r--r--spec/ruby/library/open3/capture2e_spec.rb6
-rw-r--r--spec/ruby/library/open3/capture3_spec.rb6
-rw-r--r--spec/ruby/library/open3/pipeline_r_spec.rb6
-rw-r--r--spec/ruby/library/open3/pipeline_rw_spec.rb6
-rw-r--r--spec/ruby/library/open3/pipeline_spec.rb6
-rw-r--r--spec/ruby/library/open3/pipeline_start_spec.rb6
-rw-r--r--spec/ruby/library/open3/pipeline_w_spec.rb6
-rw-r--r--spec/ruby/library/open3/popen2_spec.rb6
-rw-r--r--spec/ruby/library/open3/popen2e_spec.rb6
-rw-r--r--spec/ruby/library/open3/popen3_spec.rb41
-rw-r--r--spec/ruby/library/openssl/cipher_spec.rb9
-rw-r--r--spec/ruby/library/openssl/config/freeze_spec.rb22
-rw-r--r--spec/ruby/library/openssl/digest_spec.rb63
-rw-r--r--spec/ruby/library/openssl/hmac/digest_spec.rb16
-rw-r--r--spec/ruby/library/openssl/hmac/hexdigest_spec.rb16
-rw-r--r--spec/ruby/library/openssl/random/pseudo_bytes_spec.rb8
-rw-r--r--spec/ruby/library/openssl/random/random_bytes_spec.rb6
-rw-r--r--spec/ruby/library/openssl/random/shared/random_bytes.rb29
-rw-r--r--spec/ruby/library/openssl/shared/constants.rb11
-rw-r--r--spec/ruby/library/openssl/x509/name/parse_spec.rb48
-rw-r--r--spec/ruby/library/openssl/x509/name/verify_spec.rb78
-rw-r--r--spec/ruby/library/openstruct/delete_field_spec.rb19
-rw-r--r--spec/ruby/library/openstruct/element_reference_spec.rb13
-rw-r--r--spec/ruby/library/openstruct/element_set_spec.rb13
-rw-r--r--spec/ruby/library/openstruct/equal_value_spec.rb28
-rw-r--r--spec/ruby/library/openstruct/fixtures/classes.rb4
-rw-r--r--spec/ruby/library/openstruct/frozen_spec.rb40
-rw-r--r--spec/ruby/library/openstruct/initialize_spec.rb8
-rw-r--r--spec/ruby/library/openstruct/inspect_spec.rb8
-rw-r--r--spec/ruby/library/openstruct/marshal_dump_spec.rb9
-rw-r--r--spec/ruby/library/openstruct/marshal_load_spec.rb12
-rw-r--r--spec/ruby/library/openstruct/method_missing_spec.rb24
-rw-r--r--spec/ruby/library/openstruct/new_spec.rb20
-rw-r--r--spec/ruby/library/openstruct/shared/inspect.rb20
-rw-r--r--spec/ruby/library/openstruct/to_h_spec.rb68
-rw-r--r--spec/ruby/library/openstruct/to_s_spec.rb8
-rw-r--r--spec/ruby/library/optionparser/order_spec.rb28
-rw-r--r--spec/ruby/library/optionparser/parse_spec.rb28
-rw-r--r--spec/ruby/library/pathname/absolute_spec.rb22
-rw-r--r--spec/ruby/library/pathname/birthtime_spec.rb16
-rw-r--r--spec/ruby/library/pathname/divide_spec.rb6
-rw-r--r--spec/ruby/library/pathname/empty_spec.rb32
-rw-r--r--spec/ruby/library/pathname/equal_value_spec.rb14
-rw-r--r--spec/ruby/library/pathname/glob_spec.rb84
-rw-r--r--spec/ruby/library/pathname/hash_spec.rb14
-rw-r--r--spec/ruby/library/pathname/inspect_spec.rb10
-rw-r--r--spec/ruby/library/pathname/join_spec.rb40
-rw-r--r--spec/ruby/library/pathname/new_spec.rb23
-rw-r--r--spec/ruby/library/pathname/parent_spec.rb18
-rw-r--r--spec/ruby/library/pathname/pathname_spec.rb19
-rw-r--r--spec/ruby/library/pathname/plus_spec.rb6
-rw-r--r--spec/ruby/library/pathname/realdirpath_spec.rb10
-rw-r--r--spec/ruby/library/pathname/realpath_spec.rb10
-rw-r--r--spec/ruby/library/pathname/relative_path_from_spec.rb51
-rw-r--r--spec/ruby/library/pathname/relative_spec.rb22
-rw-r--r--spec/ruby/library/pathname/root_spec.rb26
-rw-r--r--spec/ruby/library/pathname/shared/plus.rb8
-rw-r--r--spec/ruby/library/pathname/sub_spec.rb15
-rw-r--r--spec/ruby/library/pp/pp_spec.rb30
-rw-r--r--spec/ruby/library/prime/each_spec.rb170
-rw-r--r--spec/ruby/library/prime/instance_spec.rb24
-rw-r--r--spec/ruby/library/prime/int_from_prime_division_spec.rb16
-rw-r--r--spec/ruby/library/prime/integer/each_prime_spec.rb16
-rw-r--r--spec/ruby/library/prime/integer/from_prime_division_spec.rb16
-rw-r--r--spec/ruby/library/prime/integer/prime_division_spec.rb22
-rw-r--r--spec/ruby/library/prime/integer/prime_spec.rb20
-rw-r--r--spec/ruby/library/prime/next_spec.rb10
-rw-r--r--spec/ruby/library/prime/prime_division_spec.rb28
-rw-r--r--spec/ruby/library/prime/prime_spec.rb20
-rw-r--r--spec/ruby/library/prime/shared/next.rb8
-rw-r--r--spec/ruby/library/prime/succ_spec.rb10
-rw-r--r--spec/ruby/library/rbconfig/rbconfig_spec.rb101
-rw-r--r--spec/ruby/library/rbconfig/sizeof/limits_spec.rb40
-rw-r--r--spec/ruby/library/rbconfig/sizeof/sizeof_spec.rb30
-rw-r--r--spec/ruby/library/rbconfig/unicode_emoji_version_spec.rb23
-rw-r--r--spec/ruby/library/rbconfig/unicode_version_spec.rb23
-rw-r--r--spec/ruby/library/readline/basic_quote_characters_spec.rb18
-rw-r--r--spec/ruby/library/readline/basic_word_break_characters_spec.rb16
-rw-r--r--spec/ruby/library/readline/completer_quote_characters_spec.rb16
-rw-r--r--spec/ruby/library/readline/completer_word_break_characters_spec.rb16
-rw-r--r--spec/ruby/library/readline/completion_append_character_spec.rb16
-rw-r--r--spec/ruby/library/readline/completion_case_fold_spec.rb18
-rw-r--r--spec/ruby/library/readline/completion_proc_spec.rb22
-rw-r--r--spec/ruby/library/readline/constants_spec.rb18
-rw-r--r--spec/ruby/library/readline/emacs_editing_mode_spec.rb11
-rw-r--r--spec/ruby/library/readline/filename_quote_characters_spec.rb18
-rw-r--r--spec/ruby/library/readline/history/append_spec.rb28
-rw-r--r--spec/ruby/library/readline/history/delete_at_spec.rb38
-rw-r--r--spec/ruby/library/readline/history/each_spec.rb23
-rw-r--r--spec/ruby/library/readline/history/element_reference_spec.rb35
-rw-r--r--spec/ruby/library/readline/history/element_set_spec.rb35
-rw-r--r--spec/ruby/library/readline/history/empty_spec.rb13
-rw-r--r--spec/ruby/library/readline/history/history_spec.rb9
-rw-r--r--spec/ruby/library/readline/history/length_spec.rb9
-rw-r--r--spec/ruby/library/readline/history/pop_spec.rb23
-rw-r--r--spec/ruby/library/readline/history/push_spec.rb26
-rw-r--r--spec/ruby/library/readline/history/shared/size.rb14
-rw-r--r--spec/ruby/library/readline/history/shift_spec.rb23
-rw-r--r--spec/ruby/library/readline/history/size_spec.rb9
-rw-r--r--spec/ruby/library/readline/history/to_s_spec.rb9
-rw-r--r--spec/ruby/library/readline/readline_spec.rb26
-rw-r--r--spec/ruby/library/readline/spec_helper.rb11
-rw-r--r--spec/ruby/library/readline/vi_editing_mode_spec.rb11
-rw-r--r--spec/ruby/library/resolv/fixtures/hosts1
-rw-r--r--spec/ruby/library/resolv/get_address_spec.rb19
-rw-r--r--spec/ruby/library/resolv/get_addresses_spec.rb12
-rw-r--r--spec/ruby/library/resolv/get_name_spec.rb18
-rw-r--r--spec/ruby/library/resolv/get_names_spec.rb11
-rw-r--r--spec/ruby/library/rexml/attribute/clone_spec.rb14
-rw-r--r--spec/ruby/library/rexml/attribute/element_spec.rb26
-rw-r--r--spec/ruby/library/rexml/attribute/equal_value_spec.rb21
-rw-r--r--spec/ruby/library/rexml/attribute/hash_spec.rb16
-rw-r--r--spec/ruby/library/rexml/attribute/initialize_spec.rb32
-rw-r--r--spec/ruby/library/rexml/attribute/inspect_spec.rb22
-rw-r--r--spec/ruby/library/rexml/attribute/namespace_spec.rb27
-rw-r--r--spec/ruby/library/rexml/attribute/node_type_spec.rb13
-rw-r--r--spec/ruby/library/rexml/attribute/prefix_spec.rb21
-rw-r--r--spec/ruby/library/rexml/attribute/remove_spec.rb23
-rw-r--r--spec/ruby/library/rexml/attribute/to_s_spec.rb17
-rw-r--r--spec/ruby/library/rexml/attribute/to_string_spec.rb17
-rw-r--r--spec/ruby/library/rexml/attribute/value_spec.rb17
-rw-r--r--spec/ruby/library/rexml/attribute/write_spec.rb26
-rw-r--r--spec/ruby/library/rexml/attribute/xpath_spec.rb22
-rw-r--r--spec/ruby/library/rexml/attributes/add_spec.rb10
-rw-r--r--spec/ruby/library/rexml/attributes/append_spec.rb10
-rw-r--r--spec/ruby/library/rexml/attributes/delete_all_spec.rb34
-rw-r--r--spec/ruby/library/rexml/attributes/delete_spec.rb30
-rw-r--r--spec/ruby/library/rexml/attributes/each_attribute_spec.rb25
-rw-r--r--spec/ruby/library/rexml/attributes/each_spec.rb26
-rw-r--r--spec/ruby/library/rexml/attributes/element_reference_spec.rb21
-rw-r--r--spec/ruby/library/rexml/attributes/element_set_spec.rb28
-rw-r--r--spec/ruby/library/rexml/attributes/get_attribute_ns_spec.rb17
-rw-r--r--spec/ruby/library/rexml/attributes/get_attribute_spec.rb32
-rw-r--r--spec/ruby/library/rexml/attributes/initialize_spec.rb21
-rw-r--r--spec/ruby/library/rexml/attributes/length_spec.rb10
-rw-r--r--spec/ruby/library/rexml/attributes/namespaces_spec.rb9
-rw-r--r--spec/ruby/library/rexml/attributes/prefixes_spec.rb27
-rw-r--r--spec/ruby/library/rexml/attributes/shared/add.rb17
-rw-r--r--spec/ruby/library/rexml/attributes/shared/length.rb13
-rw-r--r--spec/ruby/library/rexml/attributes/size_spec.rb10
-rw-r--r--spec/ruby/library/rexml/attributes/to_a_spec.rb22
-rw-r--r--spec/ruby/library/rexml/cdata/clone_spec.rb13
-rw-r--r--spec/ruby/library/rexml/cdata/initialize_spec.rb27
-rw-r--r--spec/ruby/library/rexml/cdata/shared/to_s.rb11
-rw-r--r--spec/ruby/library/rexml/cdata/to_s_spec.rb10
-rw-r--r--spec/ruby/library/rexml/cdata/value_spec.rb10
-rw-r--r--spec/ruby/library/rexml/document/add_element_spec.rb34
-rw-r--r--spec/ruby/library/rexml/document/add_spec.rb60
-rw-r--r--spec/ruby/library/rexml/document/clone_spec.rb23
-rw-r--r--spec/ruby/library/rexml/document/doctype_spec.rb18
-rw-r--r--spec/ruby/library/rexml/document/encoding_spec.rb25
-rw-r--r--spec/ruby/library/rexml/document/expanded_name_spec.rb19
-rw-r--r--spec/ruby/library/rexml/document/new_spec.rb39
-rw-r--r--spec/ruby/library/rexml/document/node_type_spec.rb11
-rw-r--r--spec/ruby/library/rexml/document/root_spec.rb15
-rw-r--r--spec/ruby/library/rexml/document/stand_alone_spec.rb22
-rw-r--r--spec/ruby/library/rexml/document/version_spec.rb17
-rw-r--r--spec/ruby/library/rexml/document/write_spec.rb38
-rw-r--r--spec/ruby/library/rexml/document/xml_decl_spec.rb18
-rw-r--r--spec/ruby/library/rexml/element/add_attribute_spec.rb44
-rw-r--r--spec/ruby/library/rexml/element/add_attributes_spec.rb25
-rw-r--r--spec/ruby/library/rexml/element/add_element_spec.rb41
-rw-r--r--spec/ruby/library/rexml/element/add_namespace_spec.rb26
-rw-r--r--spec/ruby/library/rexml/element/add_text_spec.rb27
-rw-r--r--spec/ruby/library/rexml/element/attribute_spec.rb20
-rw-r--r--spec/ruby/library/rexml/element/attributes_spec.rb22
-rw-r--r--spec/ruby/library/rexml/element/cdatas_spec.rb27
-rw-r--r--spec/ruby/library/rexml/element/clone_spec.rb32
-rw-r--r--spec/ruby/library/rexml/element/comments_spec.rb23
-rw-r--r--spec/ruby/library/rexml/element/delete_attribute_spec.rb42
-rw-r--r--spec/ruby/library/rexml/element/delete_element_spec.rb52
-rw-r--r--spec/ruby/library/rexml/element/delete_namespace_spec.rb28
-rw-r--r--spec/ruby/library/rexml/element/document_spec.rb19
-rw-r--r--spec/ruby/library/rexml/element/each_element_with_attribute_spec.rb38
-rw-r--r--spec/ruby/library/rexml/element/each_element_with_text_spec.rb34
-rw-r--r--spec/ruby/library/rexml/element/element_reference_spec.rb23
-rw-r--r--spec/ruby/library/rexml/element/get_text_spec.rb21
-rw-r--r--spec/ruby/library/rexml/element/has_attributes_spec.rb20
-rw-r--r--spec/ruby/library/rexml/element/has_elements_spec.rb21
-rw-r--r--spec/ruby/library/rexml/element/has_text_spec.rb19
-rw-r--r--spec/ruby/library/rexml/element/inspect_spec.rb30
-rw-r--r--spec/ruby/library/rexml/element/instructions_spec.rb24
-rw-r--r--spec/ruby/library/rexml/element/namespace_spec.rb30
-rw-r--r--spec/ruby/library/rexml/element/namespaces_spec.rb35
-rw-r--r--spec/ruby/library/rexml/element/new_spec.rb38
-rw-r--r--spec/ruby/library/rexml/element/next_element_spec.rb22
-rw-r--r--spec/ruby/library/rexml/element/node_type_spec.rb11
-rw-r--r--spec/ruby/library/rexml/element/prefixes_spec.rb26
-rw-r--r--spec/ruby/library/rexml/element/previous_element_spec.rb23
-rw-r--r--spec/ruby/library/rexml/element/raw_spec.rb27
-rw-r--r--spec/ruby/library/rexml/element/root_spec.rb31
-rw-r--r--spec/ruby/library/rexml/element/text_spec.rb49
-rw-r--r--spec/ruby/library/rexml/element/texts_spec.rb19
-rw-r--r--spec/ruby/library/rexml/element/whitespace_spec.rb26
-rw-r--r--spec/ruby/library/rexml/node/each_recursive_spec.rb24
-rw-r--r--spec/ruby/library/rexml/node/find_first_recursive_spec.rb28
-rw-r--r--spec/ruby/library/rexml/node/index_in_parent_spec.rb18
-rw-r--r--spec/ruby/library/rexml/node/next_sibling_node_spec.rb24
-rw-r--r--spec/ruby/library/rexml/node/parent_spec.rb23
-rw-r--r--spec/ruby/library/rexml/node/previous_sibling_node_spec.rb24
-rw-r--r--spec/ruby/library/rexml/shared/each_element.rb36
-rw-r--r--spec/ruby/library/rexml/shared/elements_to_a.rb34
-rw-r--r--spec/ruby/library/rexml/text/append_spec.rb13
-rw-r--r--spec/ruby/library/rexml/text/clone_spec.rb13
-rw-r--r--spec/ruby/library/rexml/text/comparison_spec.rb28
-rw-r--r--spec/ruby/library/rexml/text/empty_spec.rb15
-rw-r--r--spec/ruby/library/rexml/text/indent_text_spec.rb26
-rw-r--r--spec/ruby/library/rexml/text/inspect_spec.rb11
-rw-r--r--spec/ruby/library/rexml/text/new_spec.rb51
-rw-r--r--spec/ruby/library/rexml/text/node_type_spec.rb11
-rw-r--r--spec/ruby/library/rexml/text/normalize_spec.rb11
-rw-r--r--spec/ruby/library/rexml/text/read_with_substitution_spec.rb15
-rw-r--r--spec/ruby/library/rexml/text/to_s_spec.rb20
-rw-r--r--spec/ruby/library/rexml/text/unnormalize_spec.rb11
-rw-r--r--spec/ruby/library/rexml/text/value_spec.rb40
-rw-r--r--spec/ruby/library/rexml/text/wrap_spec.rb23
-rw-r--r--spec/ruby/library/rexml/text/write_with_substitution_spec.rb36
-rw-r--r--spec/ruby/library/ripper/lex_spec.rb23
-rw-r--r--spec/ruby/library/ripper/sexp_spec.rb13
-rw-r--r--spec/ruby/library/rubygems/gem/bin_path_spec.rb34
-rw-r--r--spec/ruby/library/rubygems/gem/load_path_insert_index_spec.rb10
-rw-r--r--spec/ruby/library/securerandom/base64_spec.rb55
-rw-r--r--spec/ruby/library/securerandom/bytes_spec.rb8
-rw-r--r--spec/ruby/library/securerandom/hex_spec.rb54
-rw-r--r--spec/ruby/library/securerandom/random_bytes_spec.rb53
-rw-r--r--spec/ruby/library/securerandom/random_number_spec.rb97
-rw-r--r--spec/ruby/library/set/add_spec.rb27
-rw-r--r--spec/ruby/library/set/append_spec.rb7
-rw-r--r--spec/ruby/library/set/case_compare_spec.rb12
-rw-r--r--spec/ruby/library/set/case_equality_spec.rb7
-rw-r--r--spec/ruby/library/set/classify_spec.rb27
-rw-r--r--spec/ruby/library/set/clear_spec.rb17
-rw-r--r--spec/ruby/library/set/collect_spec.rb7
-rw-r--r--spec/ruby/library/set/compare_by_identity_spec.rb143
-rw-r--r--spec/ruby/library/set/comparison_spec.rb29
-rw-r--r--spec/ruby/library/set/constructor_spec.rb15
-rw-r--r--spec/ruby/library/set/delete_if_spec.rb38
-rw-r--r--spec/ruby/library/set/delete_spec.rb37
-rw-r--r--spec/ruby/library/set/difference_spec.rb7
-rw-r--r--spec/ruby/library/set/disjoint_spec.rb23
-rw-r--r--spec/ruby/library/set/divide_spec.rb34
-rw-r--r--spec/ruby/library/set/each_spec.rb26
-rw-r--r--spec/ruby/library/set/empty_spec.rb10
-rw-r--r--spec/ruby/library/set/enumerable/to_set_spec.rb21
-rw-r--r--spec/ruby/library/set/eql_spec.rb15
-rw-r--r--spec/ruby/library/set/equal_value_spec.rb33
-rw-r--r--spec/ruby/library/set/exclusion_spec.rb18
-rw-r--r--spec/ruby/library/set/filter_spec.rb6
-rw-r--r--spec/ruby/library/set/fixtures/set_like.rb31
-rw-r--r--spec/ruby/library/set/flatten_merge_spec.rb23
-rw-r--r--spec/ruby/library/set/flatten_spec.rb53
-rw-r--r--spec/ruby/library/set/hash_spec.rb13
-rw-r--r--spec/ruby/library/set/include_spec.rb7
-rw-r--r--spec/ruby/library/set/initialize_clone_spec.rb18
-rw-r--r--spec/ruby/library/set/initialize_spec.rb73
-rw-r--r--spec/ruby/library/set/inspect_spec.rb7
-rw-r--r--spec/ruby/library/set/intersect_spec.rb23
-rw-r--r--spec/ruby/library/set/intersection_spec.rb11
-rw-r--r--spec/ruby/library/set/join_spec.rb31
-rw-r--r--spec/ruby/library/set/keep_if_spec.rb38
-rw-r--r--spec/ruby/library/set/length_spec.rb7
-rw-r--r--spec/ruby/library/set/map_spec.rb7
-rw-r--r--spec/ruby/library/set/member_spec.rb7
-rw-r--r--spec/ruby/library/set/merge_spec.rb19
-rw-r--r--spec/ruby/library/set/minus_spec.rb7
-rw-r--r--spec/ruby/library/set/plus_spec.rb7
-rw-r--r--spec/ruby/library/set/pretty_print_cycle_spec.rb10
-rw-r--r--spec/ruby/library/set/pretty_print_spec.rb19
-rw-r--r--spec/ruby/library/set/proper_subset_spec.rb41
-rw-r--r--spec/ruby/library/set/proper_superset_spec.rb41
-rw-r--r--spec/ruby/library/set/reject_spec.rb42
-rw-r--r--spec/ruby/library/set/replace_spec.rb17
-rw-r--r--spec/ruby/library/set/select_spec.rb6
-rw-r--r--spec/ruby/library/set/shared/add.rb14
-rw-r--r--spec/ruby/library/set/shared/collect.rb20
-rw-r--r--spec/ruby/library/set/shared/difference.rb15
-rw-r--r--spec/ruby/library/set/shared/include.rb29
-rw-r--r--spec/ruby/library/set/shared/inspect.rb15
-rw-r--r--spec/ruby/library/set/shared/intersection.rb15
-rw-r--r--spec/ruby/library/set/shared/length.rb6
-rw-r--r--spec/ruby/library/set/shared/select.rb42
-rw-r--r--spec/ruby/library/set/shared/union.rb15
-rw-r--r--spec/ruby/library/set/size_spec.rb7
-rw-r--r--spec/ruby/library/set/sortedset/add_spec.rb42
-rw-r--r--spec/ruby/library/set/sortedset/append_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/case_equality_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/classify_spec.rb30
-rw-r--r--spec/ruby/library/set/sortedset/clear_spec.rb20
-rw-r--r--spec/ruby/library/set/sortedset/collect_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/constructor_spec.rb18
-rw-r--r--spec/ruby/library/set/sortedset/delete_if_spec.rb41
-rw-r--r--spec/ruby/library/set/sortedset/delete_spec.rb40
-rw-r--r--spec/ruby/library/set/sortedset/difference_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/divide_spec.rb37
-rw-r--r--spec/ruby/library/set/sortedset/each_spec.rb29
-rw-r--r--spec/ruby/library/set/sortedset/empty_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/eql_spec.rb19
-rw-r--r--spec/ruby/library/set/sortedset/equal_value_spec.rb16
-rw-r--r--spec/ruby/library/set/sortedset/exclusion_spec.rb21
-rw-r--r--spec/ruby/library/set/sortedset/filter_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/flatten_merge_spec.rb11
-rw-r--r--spec/ruby/library/set/sortedset/flatten_spec.rb47
-rw-r--r--spec/ruby/library/set/sortedset/hash_spec.rb16
-rw-r--r--spec/ruby/library/set/sortedset/include_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/initialize_spec.rb33
-rw-r--r--spec/ruby/library/set/sortedset/inspect_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/intersection_spec.rb14
-rw-r--r--spec/ruby/library/set/sortedset/keep_if_spec.rb34
-rw-r--r--spec/ruby/library/set/sortedset/length_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/map_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/member_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/merge_spec.rb22
-rw-r--r--spec/ruby/library/set/sortedset/minus_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/plus_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/pretty_print_cycle_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/pretty_print_spec.rb20
-rw-r--r--spec/ruby/library/set/sortedset/proper_subset_spec.rb36
-rw-r--r--spec/ruby/library/set/sortedset/proper_superset_spec.rb36
-rw-r--r--spec/ruby/library/set/sortedset/reject_spec.rb45
-rw-r--r--spec/ruby/library/set/sortedset/replace_spec.rb20
-rw-r--r--spec/ruby/library/set/sortedset/select_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/shared/add.rb14
-rw-r--r--spec/ruby/library/set/sortedset/shared/collect.rb20
-rw-r--r--spec/ruby/library/set/sortedset/shared/difference.rb15
-rw-r--r--spec/ruby/library/set/sortedset/shared/include.rb7
-rw-r--r--spec/ruby/library/set/sortedset/shared/intersection.rb15
-rw-r--r--spec/ruby/library/set/sortedset/shared/length.rb6
-rw-r--r--spec/ruby/library/set/sortedset/shared/select.rb35
-rw-r--r--spec/ruby/library/set/sortedset/shared/union.rb15
-rw-r--r--spec/ruby/library/set/sortedset/size_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/sortedset_spec.rb22
-rw-r--r--spec/ruby/library/set/sortedset/subset_spec.rb36
-rw-r--r--spec/ruby/library/set/sortedset/subtract_spec.rb20
-rw-r--r--spec/ruby/library/set/sortedset/superset_spec.rb36
-rw-r--r--spec/ruby/library/set/sortedset/to_a_spec.rb20
-rw-r--r--spec/ruby/library/set/sortedset/union_spec.rb14
-rw-r--r--spec/ruby/library/set/subset_spec.rb41
-rw-r--r--spec/ruby/library/set/subtract_spec.rb17
-rw-r--r--spec/ruby/library/set/superset_spec.rb41
-rw-r--r--spec/ruby/library/set/to_a_spec.rb8
-rw-r--r--spec/ruby/library/set/to_s_spec.rb11
-rw-r--r--spec/ruby/library/set/union_spec.rb11
-rw-r--r--spec/ruby/library/shellwords/shellwords_spec.rb34
-rw-r--r--spec/ruby/library/singleton/allocate_spec.rb8
-rw-r--r--spec/ruby/library/singleton/clone_spec.rb8
-rw-r--r--spec/ruby/library/singleton/dump_spec.rb14
-rw-r--r--spec/ruby/library/singleton/dup_spec.rb8
-rw-r--r--spec/ruby/library/singleton/fixtures/classes.rb18
-rw-r--r--spec/ruby/library/singleton/instance_spec.rb30
-rw-r--r--spec/ruby/library/singleton/load_spec.rb21
-rw-r--r--spec/ruby/library/singleton/new_spec.rb8
-rw-r--r--spec/ruby/library/socket/addrinfo/afamily_spec.rb37
-rw-r--r--spec/ruby/library/socket/addrinfo/bind_spec.rb28
-rw-r--r--spec/ruby/library/socket/addrinfo/canonname_spec.rb27
-rw-r--r--spec/ruby/library/socket/addrinfo/connect_from_spec.rb75
-rw-r--r--spec/ruby/library/socket/addrinfo/connect_spec.rb35
-rw-r--r--spec/ruby/library/socket/addrinfo/connect_to_spec.rb75
-rw-r--r--spec/ruby/library/socket/addrinfo/family_addrinfo_spec.rb115
-rw-r--r--spec/ruby/library/socket/addrinfo/foreach_spec.rb9
-rw-r--r--spec/ruby/library/socket/addrinfo/getaddrinfo_spec.rb91
-rw-r--r--spec/ruby/library/socket/addrinfo/getnameinfo_spec.rb42
-rw-r--r--spec/ruby/library/socket/addrinfo/initialize_spec.rb591
-rw-r--r--spec/ruby/library/socket/addrinfo/inspect_sockaddr_spec.rb50
-rw-r--r--spec/ruby/library/socket/addrinfo/inspect_spec.rb65
-rw-r--r--spec/ruby/library/socket/addrinfo/ip_address_spec.rb66
-rw-r--r--spec/ruby/library/socket/addrinfo/ip_port_spec.rb35
-rw-r--r--spec/ruby/library/socket/addrinfo/ip_spec.rb64
-rw-r--r--spec/ruby/library/socket/addrinfo/ip_unpack_spec.rb35
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv4_loopback_spec.rb43
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv4_multicast_spec.rb29
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv4_private_spec.rb47
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv4_spec.rb35
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_linklocal_spec.rb23
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_loopback_spec.rb45
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_mc_global_spec.rb20
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_mc_linklocal_spec.rb19
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_mc_nodelocal_spec.rb18
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_mc_orglocal_spec.rb18
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_mc_sitelocal_spec.rb18
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_multicast_spec.rb48
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_sitelocal_spec.rb23
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_spec.rb35
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_to_ipv4_spec.rb71
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_unique_local_spec.rb18
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_unspecified_spec.rb15
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_v4compat_spec.rb20
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_v4mapped_spec.rb20
-rw-r--r--spec/ruby/library/socket/addrinfo/listen_spec.rb34
-rw-r--r--spec/ruby/library/socket/addrinfo/marshal_dump_spec.rb84
-rw-r--r--spec/ruby/library/socket/addrinfo/marshal_load_spec.rb35
-rw-r--r--spec/ruby/library/socket/addrinfo/pfamily_spec.rb43
-rw-r--r--spec/ruby/library/socket/addrinfo/protocol_spec.rb24
-rw-r--r--spec/ruby/library/socket/addrinfo/shared/to_sockaddr.rb51
-rw-r--r--spec/ruby/library/socket/addrinfo/socktype_spec.rb23
-rw-r--r--spec/ruby/library/socket/addrinfo/tcp_spec.rb34
-rw-r--r--spec/ruby/library/socket/addrinfo/to_s_spec.rb6
-rw-r--r--spec/ruby/library/socket/addrinfo/to_sockaddr_spec.rb6
-rw-r--r--spec/ruby/library/socket/addrinfo/udp_spec.rb36
-rw-r--r--spec/ruby/library/socket/addrinfo/unix_path_spec.rb37
-rw-r--r--spec/ruby/library/socket/addrinfo/unix_spec.rb71
-rw-r--r--spec/ruby/library/socket/ancillarydata/cmsg_is_spec.rb33
-rw-r--r--spec/ruby/library/socket/ancillarydata/data_spec.rb9
-rw-r--r--spec/ruby/library/socket/ancillarydata/family_spec.rb9
-rw-r--r--spec/ruby/library/socket/ancillarydata/initialize_spec.rb284
-rw-r--r--spec/ruby/library/socket/ancillarydata/int_spec.rb43
-rw-r--r--spec/ruby/library/socket/ancillarydata/ip_pktinfo_spec.rb145
-rw-r--r--spec/ruby/library/socket/ancillarydata/ipv6_pktinfo_addr_spec.rb11
-rw-r--r--spec/ruby/library/socket/ancillarydata/ipv6_pktinfo_ifindex_spec.rb11
-rw-r--r--spec/ruby/library/socket/ancillarydata/ipv6_pktinfo_spec.rb89
-rw-r--r--spec/ruby/library/socket/ancillarydata/level_spec.rb9
-rw-r--r--spec/ruby/library/socket/ancillarydata/type_spec.rb9
-rw-r--r--spec/ruby/library/socket/ancillarydata/unix_rights_spec.rb61
-rw-r--r--spec/ruby/library/socket/basicsocket/close_read_spec.rb43
-rw-r--r--spec/ruby/library/socket/basicsocket/close_write_spec.rb48
-rw-r--r--spec/ruby/library/socket/basicsocket/connect_address_spec.rb154
-rw-r--r--spec/ruby/library/socket/basicsocket/do_not_reverse_lookup_spec.rb103
-rw-r--r--spec/ruby/library/socket/basicsocket/for_fd_spec.rb38
-rw-r--r--spec/ruby/library/socket/basicsocket/getpeereid_spec.rb36
-rw-r--r--spec/ruby/library/socket/basicsocket/getpeername_spec.rb25
-rw-r--r--spec/ruby/library/socket/basicsocket/getsockname_spec.rb28
-rw-r--r--spec/ruby/library/socket/basicsocket/getsockopt_spec.rb188
-rw-r--r--spec/ruby/library/socket/basicsocket/ioctl_spec.rb42
-rw-r--r--spec/ruby/library/socket/basicsocket/local_address_spec.rb10
-rw-r--r--spec/ruby/library/socket/basicsocket/read_nonblock_spec.rb44
-rw-r--r--spec/ruby/library/socket/basicsocket/recv_nonblock_spec.rb91
-rw-r--r--spec/ruby/library/socket/basicsocket/recv_spec.rb159
-rw-r--r--spec/ruby/library/socket/basicsocket/recvmsg_nonblock_spec.rb224
-rw-r--r--spec/ruby/library/socket/basicsocket/recvmsg_spec.rb197
-rw-r--r--spec/ruby/library/socket/basicsocket/remote_address_spec.rb10
-rw-r--r--spec/ruby/library/socket/basicsocket/send_spec.rb220
-rw-r--r--spec/ruby/library/socket/basicsocket/sendmsg_nonblock_spec.rb118
-rw-r--r--spec/ruby/library/socket/basicsocket/sendmsg_spec.rb111
-rw-r--r--spec/ruby/library/socket/basicsocket/setsockopt_spec.rb336
-rw-r--r--spec/ruby/library/socket/basicsocket/shutdown_spec.rb155
-rw-r--r--spec/ruby/library/socket/basicsocket/write_nonblock_spec.rb43
-rw-r--r--spec/ruby/library/socket/constants/constants_spec.rb108
-rw-r--r--spec/ruby/library/socket/fixtures/classes.rb164
-rw-r--r--spec/ruby/library/socket/fixtures/send_io.txt1
-rw-r--r--spec/ruby/library/socket/ipsocket/addr_spec.rb105
-rw-r--r--spec/ruby/library/socket/ipsocket/getaddress_spec.rb25
-rw-r--r--spec/ruby/library/socket/ipsocket/peeraddr_spec.rb117
-rw-r--r--spec/ruby/library/socket/ipsocket/recvfrom_spec.rb123
-rw-r--r--spec/ruby/library/socket/option/bool_spec.rb27
-rw-r--r--spec/ruby/library/socket/option/initialize_spec.rb83
-rw-r--r--spec/ruby/library/socket/option/inspect_spec.rb19
-rw-r--r--spec/ruby/library/socket/option/int_spec.rb43
-rw-r--r--spec/ruby/library/socket/option/linger_spec.rb76
-rw-r--r--spec/ruby/library/socket/option/new_spec.rb35
-rw-r--r--spec/ruby/library/socket/shared/address.rb249
-rw-r--r--spec/ruby/library/socket/shared/pack_sockaddr.rb106
-rw-r--r--spec/ruby/library/socket/shared/partially_closable_sockets.rb13
-rw-r--r--spec/ruby/library/socket/shared/socketpair.rb138
-rw-r--r--spec/ruby/library/socket/socket/accept_loop_spec.rb84
-rw-r--r--spec/ruby/library/socket/socket/accept_nonblock_spec.rb141
-rw-r--r--spec/ruby/library/socket/socket/accept_spec.rb121
-rw-r--r--spec/ruby/library/socket/socket/bind_spec.rb150
-rw-r--r--spec/ruby/library/socket/socket/connect_nonblock_spec.rb149
-rw-r--r--spec/ruby/library/socket/socket/connect_spec.rb56
-rw-r--r--spec/ruby/library/socket/socket/for_fd_spec.rb30
-rw-r--r--spec/ruby/library/socket/socket/getaddrinfo_spec.rb373
-rw-r--r--spec/ruby/library/socket/socket/gethostbyaddr_spec.rb124
-rw-r--r--spec/ruby/library/socket/socket/gethostbyname_spec.rb135
-rw-r--r--spec/ruby/library/socket/socket/gethostname_spec.rb8
-rw-r--r--spec/ruby/library/socket/socket/getifaddrs_spec.rb117
-rw-r--r--spec/ruby/library/socket/socket/getnameinfo_spec.rb147
-rw-r--r--spec/ruby/library/socket/socket/getservbyname_spec.rb32
-rw-r--r--spec/ruby/library/socket/socket/getservbyport_spec.rb23
-rw-r--r--spec/ruby/library/socket/socket/initialize_spec.rb87
-rw-r--r--spec/ruby/library/socket/socket/ip_address_list_spec.rb50
-rw-r--r--spec/ruby/library/socket/socket/ipv6only_bang_spec.rb20
-rw-r--r--spec/ruby/library/socket/socket/listen_spec.rb66
-rw-r--r--spec/ruby/library/socket/socket/local_address_spec.rb43
-rw-r--r--spec/ruby/library/socket/socket/new_spec.rb2
-rw-r--r--spec/ruby/library/socket/socket/pack_sockaddr_in_spec.rb7
-rw-r--r--spec/ruby/library/socket/socket/pack_sockaddr_un_spec.rb7
-rw-r--r--spec/ruby/library/socket/socket/pair_spec.rb7
-rw-r--r--spec/ruby/library/socket/socket/recvfrom_nonblock_spec.rb118
-rw-r--r--spec/ruby/library/socket/socket/recvfrom_spec.rb92
-rw-r--r--spec/ruby/library/socket/socket/remote_address_spec.rb54
-rw-r--r--spec/ruby/library/socket/socket/sockaddr_in_spec.rb7
-rw-r--r--spec/ruby/library/socket/socket/sockaddr_un_spec.rb7
-rw-r--r--spec/ruby/library/socket/socket/socket_spec.rb38
-rw-r--r--spec/ruby/library/socket/socket/socketpair_spec.rb7
-rw-r--r--spec/ruby/library/socket/socket/sysaccept_spec.rb91
-rw-r--r--spec/ruby/library/socket/socket/tcp_server_loop_spec.rb54
-rw-r--r--spec/ruby/library/socket/socket/tcp_server_sockets_spec.rb39
-rw-r--r--spec/ruby/library/socket/socket/tcp_spec.rb70
-rw-r--r--spec/ruby/library/socket/socket/udp_server_loop_on_spec.rb47
-rw-r--r--spec/ruby/library/socket/socket/udp_server_loop_spec.rb59
-rw-r--r--spec/ruby/library/socket/socket/udp_server_recv_spec.rb35
-rw-r--r--spec/ruby/library/socket/socket/udp_server_sockets_spec.rb39
-rw-r--r--spec/ruby/library/socket/socket/unix_server_loop_spec.rb58
-rw-r--r--spec/ruby/library/socket/socket/unix_server_socket_spec.rb48
-rw-r--r--spec/ruby/library/socket/socket/unix_spec.rb45
-rw-r--r--spec/ruby/library/socket/socket/unpack_sockaddr_in_spec.rb46
-rw-r--r--spec/ruby/library/socket/socket/unpack_sockaddr_un_spec.rb26
-rw-r--r--spec/ruby/library/socket/spec_helper.rb13
-rw-r--r--spec/ruby/library/socket/tcpserver/accept_nonblock_spec.rb85
-rw-r--r--spec/ruby/library/socket/tcpserver/accept_spec.rb119
-rw-r--r--spec/ruby/library/socket/tcpserver/gets_spec.rb16
-rw-r--r--spec/ruby/library/socket/tcpserver/initialize_spec.rb101
-rw-r--r--spec/ruby/library/socket/tcpserver/listen_spec.rb22
-rw-r--r--spec/ruby/library/socket/tcpserver/new_spec.rb131
-rw-r--r--spec/ruby/library/socket/tcpserver/sysaccept_spec.rb66
-rw-r--r--spec/ruby/library/socket/tcpsocket/gethostbyname_spec.rb119
-rw-r--r--spec/ruby/library/socket/tcpsocket/initialize_spec.rb66
-rw-r--r--spec/ruby/library/socket/tcpsocket/local_address_spec.rb73
-rw-r--r--spec/ruby/library/socket/tcpsocket/open_spec.rb5
-rw-r--r--spec/ruby/library/socket/tcpsocket/partially_closable_spec.rb21
-rw-r--r--spec/ruby/library/socket/tcpsocket/recv_nonblock_spec.rb48
-rw-r--r--spec/ruby/library/socket/tcpsocket/recv_spec.rb28
-rw-r--r--spec/ruby/library/socket/tcpsocket/remote_address_spec.rb72
-rw-r--r--spec/ruby/library/socket/tcpsocket/setsockopt_spec.rb45
-rw-r--r--spec/ruby/library/socket/tcpsocket/shared/new.rb102
-rw-r--r--spec/ruby/library/socket/udpsocket/bind_spec.rb83
-rw-r--r--spec/ruby/library/socket/udpsocket/connect_spec.rb35
-rw-r--r--spec/ruby/library/socket/udpsocket/initialize_spec.rb40
-rw-r--r--spec/ruby/library/socket/udpsocket/inspect_spec.rb17
-rw-r--r--spec/ruby/library/socket/udpsocket/local_address_spec.rb80
-rw-r--r--spec/ruby/library/socket/udpsocket/new_spec.rb34
-rw-r--r--spec/ruby/library/socket/udpsocket/open_spec.rb13
-rw-r--r--spec/ruby/library/socket/udpsocket/recvfrom_nonblock_spec.rb102
-rw-r--r--spec/ruby/library/socket/udpsocket/remote_address_spec.rb79
-rw-r--r--spec/ruby/library/socket/udpsocket/send_spec.rb154
-rw-r--r--spec/ruby/library/socket/udpsocket/write_spec.rb21
-rw-r--r--spec/ruby/library/socket/unixserver/accept_nonblock_spec.rb92
-rw-r--r--spec/ruby/library/socket/unixserver/accept_spec.rb117
-rw-r--r--spec/ruby/library/socket/unixserver/for_fd_spec.rb23
-rw-r--r--spec/ruby/library/socket/unixserver/initialize_spec.rb28
-rw-r--r--spec/ruby/library/socket/unixserver/listen_spec.rb21
-rw-r--r--spec/ruby/library/socket/unixserver/new_spec.rb6
-rw-r--r--spec/ruby/library/socket/unixserver/open_spec.rb26
-rw-r--r--spec/ruby/library/socket/unixserver/shared/new.rb22
-rw-r--r--spec/ruby/library/socket/unixserver/sysaccept_spec.rb52
-rw-r--r--spec/ruby/library/socket/unixsocket/addr_spec.rb36
-rw-r--r--spec/ruby/library/socket/unixsocket/initialize_spec.rb38
-rw-r--r--spec/ruby/library/socket/unixsocket/inspect_spec.rb17
-rw-r--r--spec/ruby/library/socket/unixsocket/local_address_spec.rb96
-rw-r--r--spec/ruby/library/socket/unixsocket/new_spec.rb6
-rw-r--r--spec/ruby/library/socket/unixsocket/open_spec.rb28
-rw-r--r--spec/ruby/library/socket/unixsocket/pair_spec.rb39
-rw-r--r--spec/ruby/library/socket/unixsocket/partially_closable_spec.rb25
-rw-r--r--spec/ruby/library/socket/unixsocket/path_spec.rb28
-rw-r--r--spec/ruby/library/socket/unixsocket/peeraddr_spec.rb30
-rw-r--r--spec/ruby/library/socket/unixsocket/recv_io_spec.rb87
-rw-r--r--spec/ruby/library/socket/unixsocket/recvfrom_spec.rb98
-rw-r--r--spec/ruby/library/socket/unixsocket/remote_address_spec.rb45
-rw-r--r--spec/ruby/library/socket/unixsocket/send_io_spec.rb58
-rw-r--r--spec/ruby/library/socket/unixsocket/shared/new.rb24
-rw-r--r--spec/ruby/library/socket/unixsocket/socketpair_spec.rb40
-rw-r--r--spec/ruby/library/stringio/append_spec.rb81
-rw-r--r--spec/ruby/library/stringio/binmode_spec.rb23
-rw-r--r--spec/ruby/library/stringio/bytes_spec.rb29
-rw-r--r--spec/ruby/library/stringio/chars_spec.rb29
-rw-r--r--spec/ruby/library/stringio/close_read_spec.rb31
-rw-r--r--spec/ruby/library/stringio/close_spec.rb23
-rw-r--r--spec/ruby/library/stringio/close_write_spec.rb31
-rw-r--r--spec/ruby/library/stringio/closed_read_spec.rb12
-rw-r--r--spec/ruby/library/stringio/closed_spec.rb16
-rw-r--r--spec/ruby/library/stringio/closed_write_spec.rb12
-rw-r--r--spec/ruby/library/stringio/codepoints_spec.rb19
-rw-r--r--spec/ruby/library/stringio/each_byte_spec.rb11
-rw-r--r--spec/ruby/library/stringio/each_char_spec.rb11
-rw-r--r--spec/ruby/library/stringio/each_codepoint_spec.rb9
-rw-r--r--spec/ruby/library/stringio/each_line_spec.rb23
-rw-r--r--spec/ruby/library/stringio/each_spec.rb27
-rw-r--r--spec/ruby/library/stringio/eof_spec.rb11
-rw-r--r--spec/ruby/library/stringio/external_encoding_spec.rb25
-rw-r--r--spec/ruby/library/stringio/fcntl_spec.rb8
-rw-r--r--spec/ruby/library/stringio/fileno_spec.rb9
-rw-r--r--spec/ruby/library/stringio/fixtures/classes.rb15
-rw-r--r--spec/ruby/library/stringio/flush_spec.rb9
-rw-r--r--spec/ruby/library/stringio/fsync_spec.rb9
-rw-r--r--spec/ruby/library/stringio/getbyte_spec.rb19
-rw-r--r--spec/ruby/library/stringio/getc_spec.rb19
-rw-r--r--spec/ruby/library/stringio/getch_spec.rb44
-rw-r--r--spec/ruby/library/stringio/getpass_spec.rb11
-rw-r--r--spec/ruby/library/stringio/gets_spec.rb250
-rw-r--r--spec/ruby/library/stringio/initialize_spec.rb307
-rw-r--r--spec/ruby/library/stringio/inspect_spec.rb19
-rw-r--r--spec/ruby/library/stringio/internal_encoding_spec.rb10
-rw-r--r--spec/ruby/library/stringio/isatty_spec.rb7
-rw-r--r--spec/ruby/library/stringio/length_spec.rb7
-rw-r--r--spec/ruby/library/stringio/lineno_spec.rb30
-rw-r--r--spec/ruby/library/stringio/lines_spec.rb53
-rw-r--r--spec/ruby/library/stringio/new_spec.rb8
-rw-r--r--spec/ruby/library/stringio/open_spec.rb215
-rw-r--r--spec/ruby/library/stringio/path_spec.rb8
-rw-r--r--spec/ruby/library/stringio/pid_spec.rb8
-rw-r--r--spec/ruby/library/stringio/pos_spec.rb28
-rw-r--r--spec/ruby/library/stringio/print_spec.rb102
-rw-r--r--spec/ruby/library/stringio/printf_spec.rb91
-rw-r--r--spec/ruby/library/stringio/putc_spec.rb103
-rw-r--r--spec/ruby/library/stringio/puts_spec.rb184
-rw-r--r--spec/ruby/library/stringio/read_nonblock_spec.rb53
-rw-r--r--spec/ruby/library/stringio/read_spec.rb62
-rw-r--r--spec/ruby/library/stringio/readbyte_spec.rb20
-rw-r--r--spec/ruby/library/stringio/readchar_spec.rb20
-rw-r--r--spec/ruby/library/stringio/readline_spec.rb150
-rw-r--r--spec/ruby/library/stringio/readlines_spec.rb118
-rw-r--r--spec/ruby/library/stringio/readpartial_spec.rb80
-rw-r--r--spec/ruby/library/stringio/reopen_spec.rb281
-rw-r--r--spec/ruby/library/stringio/rewind_spec.rb24
-rw-r--r--spec/ruby/library/stringio/seek_spec.rb67
-rw-r--r--spec/ruby/library/stringio/set_encoding_spec.rb20
-rw-r--r--spec/ruby/library/stringio/shared/codepoints.rb45
-rw-r--r--spec/ruby/library/stringio/shared/each.rb163
-rw-r--r--spec/ruby/library/stringio/shared/each_byte.rb48
-rw-r--r--spec/ruby/library/stringio/shared/each_char.rb36
-rw-r--r--spec/ruby/library/stringio/shared/eof.rb24
-rw-r--r--spec/ruby/library/stringio/shared/getc.rb43
-rw-r--r--spec/ruby/library/stringio/shared/isatty.rb5
-rw-r--r--spec/ruby/library/stringio/shared/length.rb5
-rw-r--r--spec/ruby/library/stringio/shared/read.rb127
-rw-r--r--spec/ruby/library/stringio/shared/readchar.rb29
-rw-r--r--spec/ruby/library/stringio/shared/sysread.rb15
-rw-r--r--spec/ruby/library/stringio/shared/tell.rb12
-rw-r--r--spec/ruby/library/stringio/shared/write.rb121
-rw-r--r--spec/ruby/library/stringio/size_spec.rb7
-rw-r--r--spec/ruby/library/stringio/string_spec.rb50
-rw-r--r--spec/ruby/library/stringio/stringio_spec.rb8
-rw-r--r--spec/ruby/library/stringio/sync_spec.rb19
-rw-r--r--spec/ruby/library/stringio/sysread_spec.rb48
-rw-r--r--spec/ruby/library/stringio/syswrite_spec.rb19
-rw-r--r--spec/ruby/library/stringio/tell_spec.rb7
-rw-r--r--spec/ruby/library/stringio/truncate_spec.rb62
-rw-r--r--spec/ruby/library/stringio/tty_spec.rb7
-rw-r--r--spec/ruby/library/stringio/ungetbyte_spec.rb42
-rw-r--r--spec/ruby/library/stringio/ungetc_spec.rb72
-rw-r--r--spec/ruby/library/stringio/write_nonblock_spec.rb25
-rw-r--r--spec/ruby/library/stringio/write_spec.rb19
-rw-r--r--spec/ruby/library/stringscanner/append_spec.rb11
-rw-r--r--spec/ruby/library/stringscanner/beginning_of_line_spec.rb7
-rw-r--r--spec/ruby/library/stringscanner/bol_spec.rb7
-rw-r--r--spec/ruby/library/stringscanner/check_spec.rb25
-rw-r--r--spec/ruby/library/stringscanner/check_until_spec.rb21
-rw-r--r--spec/ruby/library/stringscanner/clear_spec.rb18
-rw-r--r--spec/ruby/library/stringscanner/concat_spec.rb11
-rw-r--r--spec/ruby/library/stringscanner/dup_spec.rb39
-rw-r--r--spec/ruby/library/stringscanner/element_reference_spec.rb60
-rw-r--r--spec/ruby/library/stringscanner/empty_spec.rb18
-rw-r--r--spec/ruby/library/stringscanner/eos_spec.rb7
-rw-r--r--spec/ruby/library/stringscanner/exist_spec.rb30
-rw-r--r--spec/ruby/library/stringscanner/get_byte_spec.rb7
-rw-r--r--spec/ruby/library/stringscanner/getbyte_spec.rb21
-rw-r--r--spec/ruby/library/stringscanner/getch_spec.rb35
-rw-r--r--spec/ruby/library/stringscanner/initialize_spec.rb27
-rw-r--r--spec/ruby/library/stringscanner/inspect_spec.rb20
-rw-r--r--spec/ruby/library/stringscanner/match_spec.rb28
-rw-r--r--spec/ruby/library/stringscanner/matched_size_spec.rb24
-rw-r--r--spec/ruby/library/stringscanner/matched_spec.rb41
-rw-r--r--spec/ruby/library/stringscanner/must_C_version_spec.rb8
-rw-r--r--spec/ruby/library/stringscanner/peek_spec.rb7
-rw-r--r--spec/ruby/library/stringscanner/peep_spec.rb18
-rw-r--r--spec/ruby/library/stringscanner/pointer_spec.rb11
-rw-r--r--spec/ruby/library/stringscanner/pos_spec.rb11
-rw-r--r--spec/ruby/library/stringscanner/post_match_spec.rb28
-rw-r--r--spec/ruby/library/stringscanner/pre_match_spec.rb41
-rw-r--r--spec/ruby/library/stringscanner/reset_spec.rb15
-rw-r--r--spec/ruby/library/stringscanner/rest_size_spec.rb7
-rw-r--r--spec/ruby/library/stringscanner/rest_spec.rb48
-rw-r--r--spec/ruby/library/stringscanner/restsize_spec.rb18
-rw-r--r--spec/ruby/library/stringscanner/scan_full_spec.rb30
-rw-r--r--spec/ruby/library/stringscanner/scan_spec.rb87
-rw-r--r--spec/ruby/library/stringscanner/scan_until_spec.rb29
-rw-r--r--spec/ruby/library/stringscanner/search_full_spec.rb36
-rw-r--r--spec/ruby/library/stringscanner/shared/bol.rb25
-rw-r--r--spec/ruby/library/stringscanner/shared/concat.rb30
-rw-r--r--spec/ruby/library/stringscanner/shared/eos.rb17
-rw-r--r--spec/ruby/library/stringscanner/shared/extract_range.rb11
-rw-r--r--spec/ruby/library/stringscanner/shared/extract_range_matched.rb13
-rw-r--r--spec/ruby/library/stringscanner/shared/get_byte.rb29
-rw-r--r--spec/ruby/library/stringscanner/shared/peek.rb39
-rw-r--r--spec/ruby/library/stringscanner/shared/pos.rb52
-rw-r--r--spec/ruby/library/stringscanner/shared/rest_size.rb18
-rw-r--r--spec/ruby/library/stringscanner/shared/terminate.rb8
-rw-r--r--spec/ruby/library/stringscanner/size_spec.rb17
-rw-r--r--spec/ruby/library/stringscanner/skip_spec.rb18
-rw-r--r--spec/ruby/library/stringscanner/skip_until_spec.rb24
-rw-r--r--spec/ruby/library/stringscanner/string_spec.rb40
-rw-r--r--spec/ruby/library/stringscanner/terminate_spec.rb7
-rw-r--r--spec/ruby/library/stringscanner/unscan_spec.rb28
-rw-r--r--spec/ruby/library/syslog/alert_spec.rb10
-rw-r--r--spec/ruby/library/syslog/close_spec.rb58
-rw-r--r--spec/ruby/library/syslog/constants_spec.rb41
-rw-r--r--spec/ruby/library/syslog/crit_spec.rb10
-rw-r--r--spec/ruby/library/syslog/debug_spec.rb10
-rw-r--r--spec/ruby/library/syslog/emerg_spec.rb16
-rw-r--r--spec/ruby/library/syslog/err_spec.rb10
-rw-r--r--spec/ruby/library/syslog/facility_spec.rb48
-rw-r--r--spec/ruby/library/syslog/ident_spec.rb35
-rw-r--r--spec/ruby/library/syslog/info_spec.rb10
-rw-r--r--spec/ruby/library/syslog/inspect_spec.rb39
-rw-r--r--spec/ruby/library/syslog/instance_spec.rb13
-rw-r--r--spec/ruby/library/syslog/log_spec.rb56
-rw-r--r--spec/ruby/library/syslog/mask_spec.rb113
-rw-r--r--spec/ruby/library/syslog/notice_spec.rb10
-rw-r--r--spec/ruby/library/syslog/open_spec.rb92
-rw-r--r--spec/ruby/library/syslog/opened_spec.rb39
-rw-r--r--spec/ruby/library/syslog/options_spec.rb48
-rw-r--r--spec/ruby/library/syslog/reopen_spec.rb10
-rw-r--r--spec/ruby/library/syslog/shared/log.rb39
-rw-r--r--spec/ruby/library/syslog/shared/reopen.rb40
-rw-r--r--spec/ruby/library/syslog/warning_spec.rb10
-rw-r--r--spec/ruby/library/tempfile/_close_spec.rb21
-rw-r--r--spec/ruby/library/tempfile/callback_spec.rb6
-rw-r--r--spec/ruby/library/tempfile/close_spec.rb57
-rw-r--r--spec/ruby/library/tempfile/delete_spec.rb7
-rw-r--r--spec/ruby/library/tempfile/initialize_spec.rb46
-rw-r--r--spec/ruby/library/tempfile/length_spec.rb7
-rw-r--r--spec/ruby/library/tempfile/open_spec.rb97
-rw-r--r--spec/ruby/library/tempfile/path_spec.rb26
-rw-r--r--spec/ruby/library/tempfile/shared/length.rb21
-rw-r--r--spec/ruby/library/tempfile/shared/unlink.rb12
-rw-r--r--spec/ruby/library/tempfile/size_spec.rb7
-rw-r--r--spec/ruby/library/tempfile/unlink_spec.rb7
-rw-r--r--spec/ruby/library/thread/queue_spec.rb8
-rw-r--r--spec/ruby/library/thread/sizedqueue_spec.rb8
-rw-r--r--spec/ruby/library/time/httpdate_spec.rb21
-rw-r--r--spec/ruby/library/time/iso8601_spec.rb7
-rw-r--r--spec/ruby/library/time/rfc2822_spec.rb7
-rw-r--r--spec/ruby/library/time/rfc822_spec.rb7
-rw-r--r--spec/ruby/library/time/shared/rfc2822.rb65
-rw-r--r--spec/ruby/library/time/shared/xmlschema.rb53
-rw-r--r--spec/ruby/library/time/to_date_spec.rb42
-rw-r--r--spec/ruby/library/time/to_datetime_spec.rb41
-rw-r--r--spec/ruby/library/time/to_time_spec.rb15
-rw-r--r--spec/ruby/library/time/xmlschema_spec.rb7
-rw-r--r--spec/ruby/library/timeout/error_spec.rb8
-rw-r--r--spec/ruby/library/timeout/timeout_spec.rb42
-rw-r--r--spec/ruby/library/tmpdir/dir/mktmpdir_spec.rb117
-rw-r--r--spec/ruby/library/tmpdir/dir/tmpdir_spec.rb10
-rw-r--r--spec/ruby/library/uri/decode_www_form_component_spec.rb6
-rw-r--r--spec/ruby/library/uri/decode_www_form_spec.rb6
-rw-r--r--spec/ruby/library/uri/encode_www_form_component_spec.rb6
-rw-r--r--spec/ruby/library/uri/encode_www_form_spec.rb6
-rw-r--r--spec/ruby/library/uri/eql_spec.rb10
-rw-r--r--spec/ruby/library/uri/equality_spec.rb46
-rw-r--r--spec/ruby/library/uri/escape/decode_spec.rb6
-rw-r--r--spec/ruby/library/uri/escape/encode_spec.rb6
-rw-r--r--spec/ruby/library/uri/escape/escape_spec.rb6
-rw-r--r--spec/ruby/library/uri/escape/unescape_spec.rb6
-rw-r--r--spec/ruby/library/uri/extract_spec.rb86
-rw-r--r--spec/ruby/library/uri/fixtures/classes.rb11
-rw-r--r--spec/ruby/library/uri/fixtures/normalization.rb54
-rw-r--r--spec/ruby/library/uri/ftp/build_spec.rb6
-rw-r--r--spec/ruby/library/uri/ftp/merge_spec.rb6
-rw-r--r--spec/ruby/library/uri/ftp/new2_spec.rb6
-rw-r--r--spec/ruby/library/uri/ftp/path_spec.rb26
-rw-r--r--spec/ruby/library/uri/ftp/set_typecode_spec.rb6
-rw-r--r--spec/ruby/library/uri/ftp/to_s_spec.rb15
-rw-r--r--spec/ruby/library/uri/ftp/typecode_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/absolute_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/build2_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/build_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/coerce_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/component_ary_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/component_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/default_port_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/eql_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/equal_value_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/fragment_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/hash_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/hierarchical_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/host_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/inspect_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/merge_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/minus_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/normalize_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/opaque_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/password_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/path_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/plus_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/port_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/query_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/registry_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/relative_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/route_from_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/route_to_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/scheme_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/select_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/set_fragment_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/set_host_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/set_opaque_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/set_password_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/set_path_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/set_port_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/set_query_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/set_registry_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/set_scheme_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/set_user_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/set_userinfo_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/to_s_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/use_registry_spec.rb6
-rw-r--r--spec/ruby/library/uri/generic/user_spec.rb10
-rw-r--r--spec/ruby/library/uri/generic/userinfo_spec.rb10
-rw-r--r--spec/ruby/library/uri/http/build_spec.rb6
-rw-r--r--spec/ruby/library/uri/http/request_uri_spec.rb16
-rw-r--r--spec/ruby/library/uri/join_spec.rb59
-rw-r--r--spec/ruby/library/uri/ldap/attributes_spec.rb10
-rw-r--r--spec/ruby/library/uri/ldap/build_spec.rb6
-rw-r--r--spec/ruby/library/uri/ldap/dn_spec.rb10
-rw-r--r--spec/ruby/library/uri/ldap/extensions_spec.rb10
-rw-r--r--spec/ruby/library/uri/ldap/filter_spec.rb10
-rw-r--r--spec/ruby/library/uri/ldap/hierarchical_spec.rb6
-rw-r--r--spec/ruby/library/uri/ldap/scope_spec.rb10
-rw-r--r--spec/ruby/library/uri/ldap/set_attributes_spec.rb6
-rw-r--r--spec/ruby/library/uri/ldap/set_dn_spec.rb6
-rw-r--r--spec/ruby/library/uri/ldap/set_extensions_spec.rb6
-rw-r--r--spec/ruby/library/uri/ldap/set_filter_spec.rb6
-rw-r--r--spec/ruby/library/uri/ldap/set_scope_spec.rb6
-rw-r--r--spec/ruby/library/uri/mailto/build_spec.rb92
-rw-r--r--spec/ruby/library/uri/mailto/headers_spec.rb10
-rw-r--r--spec/ruby/library/uri/mailto/set_headers_spec.rb6
-rw-r--r--spec/ruby/library/uri/mailto/set_to_spec.rb6
-rw-r--r--spec/ruby/library/uri/mailto/to_mailtext_spec.rb6
-rw-r--r--spec/ruby/library/uri/mailto/to_rfc822text_spec.rb6
-rw-r--r--spec/ruby/library/uri/mailto/to_s_spec.rb6
-rw-r--r--spec/ruby/library/uri/mailto/to_spec.rb10
-rw-r--r--spec/ruby/library/uri/merge_spec.rb20
-rw-r--r--spec/ruby/library/uri/normalize_spec.rb35
-rw-r--r--spec/ruby/library/uri/parse_spec.rb203
-rw-r--r--spec/ruby/library/uri/parser/escape_spec.rb6
-rw-r--r--spec/ruby/library/uri/parser/extract_spec.rb7
-rw-r--r--spec/ruby/library/uri/parser/inspect_spec.rb6
-rw-r--r--spec/ruby/library/uri/parser/join_spec.rb7
-rw-r--r--spec/ruby/library/uri/parser/make_regexp_spec.rb6
-rw-r--r--spec/ruby/library/uri/parser/parse_spec.rb7
-rw-r--r--spec/ruby/library/uri/parser/split_spec.rb6
-rw-r--r--spec/ruby/library/uri/parser/unescape_spec.rb6
-rw-r--r--spec/ruby/library/uri/plus_spec.rb459
-rw-r--r--spec/ruby/library/uri/regexp_spec.rb18
-rw-r--r--spec/ruby/library/uri/route_from_spec.rb23
-rw-r--r--spec/ruby/library/uri/route_to_spec.rb26
-rw-r--r--spec/ruby/library/uri/select_spec.rb27
-rw-r--r--spec/ruby/library/uri/set_component_spec.rb45
-rw-r--r--spec/ruby/library/uri/shared/eql.rb17
-rw-r--r--spec/ruby/library/uri/shared/extract.rb83
-rw-r--r--spec/ruby/library/uri/shared/join.rb56
-rw-r--r--spec/ruby/library/uri/shared/parse.rb199
-rw-r--r--spec/ruby/library/uri/split_spec.rb6
-rw-r--r--spec/ruby/library/uri/uri_spec.rb29
-rw-r--r--spec/ruby/library/uri/util/make_components_hash_spec.rb6
-rw-r--r--spec/ruby/library/weakref/__getobj___spec.rb17
-rw-r--r--spec/ruby/library/weakref/allocate_spec.rb8
-rw-r--r--spec/ruby/library/weakref/fixtures/classes.rb26
-rw-r--r--spec/ruby/library/weakref/new_spec.rb13
-rw-r--r--spec/ruby/library/weakref/send_spec.rb37
-rw-r--r--spec/ruby/library/weakref/weakref_alive_spec.rb15
-rw-r--r--spec/ruby/library/win32ole/fixtures/classes.rb22
-rw-r--r--spec/ruby/library/win32ole/fixtures/event.xml4
-rw-r--r--spec/ruby/library/win32ole/win32ole/_getproperty_spec.rb14
-rw-r--r--spec/ruby/library/win32ole/win32ole/_invoke_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole/codepage_spec.rb13
-rw-r--r--spec/ruby/library/win32ole/win32ole/connect_spec.rb15
-rw-r--r--spec/ruby/library/win32ole/win32ole/const_load_spec.rb32
-rw-r--r--spec/ruby/library/win32ole/win32ole/constants_spec.rb42
-rw-r--r--spec/ruby/library/win32ole/win32ole/create_guid_spec.rb9
-rw-r--r--spec/ruby/library/win32ole/win32ole/invoke_spec.rb14
-rw-r--r--spec/ruby/library/win32ole/win32ole/locale_spec.rb29
-rw-r--r--spec/ruby/library/win32ole/win32ole/new_spec.rb25
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_func_methods_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_get_methods_spec.rb16
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_method_help_spec.rb10
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_method_spec.rb10
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_methods_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_obj_help_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_put_methods_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole/setproperty_spec.rb10
-rw-r--r--spec/ruby/library/win32ole/win32ole/shared/ole_method.rb19
-rw-r--r--spec/ruby/library/win32ole/win32ole/shared/setproperty.rb23
-rw-r--r--spec/ruby/library/win32ole/win32ole_event/new_spec.rb33
-rw-r--r--spec/ruby/library/win32ole/win32ole_event/on_event_spec.rb70
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/dispid_spec.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/event_interface_spec.rb28
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/event_spec.rb22
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/helpcontext_spec.rb26
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/helpfile_spec.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/helpstring_spec.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/invkind_spec.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/invoke_kind_spec.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/name_spec.rb11
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/new_spec.rb33
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/offset_vtbl_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/params_spec.rb28
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/return_type_detail_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/return_type_spec.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/return_vtype_spec.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/shared/name.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/size_opt_params_spec.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/size_params_spec.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/to_s_spec.rb11
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/visible_spec.rb20
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/default_spec.rb31
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/input_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/name_spec.rb11
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/ole_type_detail_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/ole_type_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/optional_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/retval_spec.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/shared/name.rb21
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/to_s_spec.rb11
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/guid_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/helpcontext_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/helpfile_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/helpstring_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/major_version_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/minor_version_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/name_spec.rb11
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/new_spec.rb40
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/ole_classes_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/ole_methods_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/ole_type_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/progid_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/progids_spec.rb14
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/shared/name.rb19
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/src_type_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/to_s_spec.rb11
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/typekind_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/typelibs_spec.rb22
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/variables_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/visible_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/name_spec.rb11
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/ole_type_detail_spec.rb19
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/ole_type_spec.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/shared/name.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/to_s_spec.rb11
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/value_spec.rb19
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/variable_kind_spec.rb19
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/varkind_spec.rb19
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/visible_spec.rb18
-rw-r--r--spec/ruby/library/yaml/dump_spec.rb56
-rw-r--r--spec/ruby/library/yaml/dump_stream_spec.rb8
-rw-r--r--spec/ruby/library/yaml/fixtures/common.rb4
-rw-r--r--spec/ruby/library/yaml/fixtures/example_class.rb7
-rw-r--r--spec/ruby/library/yaml/fixtures/strings.rb36
-rw-r--r--spec/ruby/library/yaml/fixtures/test_yaml.yml2
-rw-r--r--spec/ruby/library/yaml/load_file_spec.rb13
-rw-r--r--spec/ruby/library/yaml/load_spec.rb10
-rw-r--r--spec/ruby/library/yaml/load_stream_spec.rb8
-rw-r--r--spec/ruby/library/yaml/parse_file_spec.rb8
-rw-r--r--spec/ruby/library/yaml/parse_spec.rb22
-rw-r--r--spec/ruby/library/yaml/shared/each_document.rb18
-rw-r--r--spec/ruby/library/yaml/shared/load.rb136
-rw-r--r--spec/ruby/library/yaml/to_yaml_spec.rb98
-rw-r--r--spec/ruby/library/yaml/unsafe_load_spec.rb9
-rw-r--r--spec/ruby/library/zlib/adler32_spec.rb46
-rw-r--r--spec/ruby/library/zlib/crc32_spec.rb54
-rw-r--r--spec/ruby/library/zlib/crc_table_spec.rb80
-rw-r--r--spec/ruby/library/zlib/deflate/deflate_spec.rb133
-rw-r--r--spec/ruby/library/zlib/deflate/new_spec.rb1
-rw-r--r--spec/ruby/library/zlib/deflate/params_spec.rb17
-rw-r--r--spec/ruby/library/zlib/deflate/set_dictionary_spec.rb14
-rw-r--r--spec/ruby/library/zlib/deflate_spec.rb8
-rw-r--r--spec/ruby/library/zlib/gunzip_spec.rb14
-rw-r--r--spec/ruby/library/zlib/gzip_spec.rb15
-rw-r--r--spec/ruby/library/zlib/gzipfile/close_spec.rb21
-rw-r--r--spec/ruby/library/zlib/gzipfile/closed_spec.rb16
-rw-r--r--spec/ruby/library/zlib/gzipfile/comment_spec.rb26
-rw-r--r--spec/ruby/library/zlib/gzipfile/orig_name_spec.rb26
-rw-r--r--spec/ruby/library/zlib/gzipreader/each_byte_spec.rb51
-rw-r--r--spec/ruby/library/zlib/gzipreader/each_line_spec.rb5
-rw-r--r--spec/ruby/library/zlib/gzipreader/each_spec.rb5
-rw-r--r--spec/ruby/library/zlib/gzipreader/eof_spec.rb54
-rw-r--r--spec/ruby/library/zlib/gzipreader/getc_spec.rb39
-rw-r--r--spec/ruby/library/zlib/gzipreader/gets_spec.rb22
-rw-r--r--spec/ruby/library/zlib/gzipreader/new_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipreader/pos_spec.rb24
-rw-r--r--spec/ruby/library/zlib/gzipreader/read_spec.rb66
-rw-r--r--spec/ruby/library/zlib/gzipreader/readpartial_spec.rb17
-rw-r--r--spec/ruby/library/zlib/gzipreader/rewind_spec.rb47
-rw-r--r--spec/ruby/library/zlib/gzipreader/shared/each.rb49
-rw-r--r--spec/ruby/library/zlib/gzipreader/ungetbyte_spec.rb120
-rw-r--r--spec/ruby/library/zlib/gzipreader/ungetc_spec.rb284
-rw-r--r--spec/ruby/library/zlib/gzipwriter/append_spec.rb15
-rw-r--r--spec/ruby/library/zlib/gzipwriter/mtime_spec.rb38
-rw-r--r--spec/ruby/library/zlib/gzipwriter/write_spec.rb36
-rw-r--r--spec/ruby/library/zlib/inflate/append_spec.rb60
-rw-r--r--spec/ruby/library/zlib/inflate/finish_spec.rb28
-rw-r--r--spec/ruby/library/zlib/inflate/inflate_spec.rb159
-rw-r--r--spec/ruby/library/zlib/inflate/new_spec.rb1
-rw-r--r--spec/ruby/library/zlib/inflate/set_dictionary_spec.rb20
-rw-r--r--spec/ruby/library/zlib/inflate_spec.rb8
-rw-r--r--spec/ruby/library/zlib/zlib_version_spec.rb8
-rw-r--r--spec/ruby/library/zlib/zstream/adler_spec.rb11
-rw-r--r--spec/ruby/library/zlib/zstream/avail_in_spec.rb9
-rw-r--r--spec/ruby/library/zlib/zstream/avail_out_spec.rb9
-rw-r--r--spec/ruby/library/zlib/zstream/data_type_spec.rb9
-rw-r--r--spec/ruby/library/zlib/zstream/flush_next_out_spec.rb14
-rw-r--r--spec/ruby/optional/capi/README13
-rw-r--r--spec/ruby/optional/capi/array_spec.rb497
-rw-r--r--spec/ruby/optional/capi/basic_object_spec.rb24
-rw-r--r--spec/ruby/optional/capi/bignum_spec.rb224
-rw-r--r--spec/ruby/optional/capi/binding_spec.rb28
-rw-r--r--spec/ruby/optional/capi/boolean_spec.rb33
-rw-r--r--spec/ruby/optional/capi/class_spec.rb492
-rw-r--r--spec/ruby/optional/capi/complex_spec.rb45
-rw-r--r--spec/ruby/optional/capi/constants_spec.rb325
-rw-r--r--spec/ruby/optional/capi/data_spec.rb52
-rw-r--r--spec/ruby/optional/capi/debug_spec.rb66
-rw-r--r--spec/ruby/optional/capi/encoding_spec.rb694
-rw-r--r--spec/ruby/optional/capi/enumerator_spec.rb66
-rw-r--r--spec/ruby/optional/capi/exception_spec.rb147
-rw-r--r--spec/ruby/optional/capi/ext/.gitignore9
-rw-r--r--spec/ruby/optional/capi/ext/array_spec.c297
-rw-r--r--spec/ruby/optional/capi/ext/basic_object_spec.c19
-rw-r--r--spec/ruby/optional/capi/ext/bignum_spec.c106
-rw-r--r--spec/ruby/optional/capi/ext/binding_spec.c19
-rw-r--r--spec/ruby/optional/capi/ext/boolean_spec.c33
-rw-r--r--spec/ruby/optional/capi/ext/class_id_under_autoload_spec.c13
-rw-r--r--spec/ruby/optional/capi/ext/class_spec.c179
-rw-r--r--spec/ruby/optional/capi/ext/class_under_autoload_spec.c13
-rw-r--r--spec/ruby/optional/capi/ext/complex_spec.c45
-rw-r--r--spec/ruby/optional/capi/ext/constants_spec.c178
-rw-r--r--spec/ruby/optional/capi/ext/data_spec.c89
-rw-r--r--spec/ruby/optional/capi/ext/debug_spec.c93
-rw-r--r--spec/ruby/optional/capi/ext/encoding_spec.c371
-rw-r--r--spec/ruby/optional/capi/ext/enumerator_spec.c32
-rw-r--r--spec/ruby/optional/capi/ext/exception_spec.c59
-rw-r--r--spec/ruby/optional/capi/ext/fiber_spec.c69
-rw-r--r--spec/ruby/optional/capi/ext/file_spec.c29
-rw-r--r--spec/ruby/optional/capi/ext/fixnum_spec.c26
-rw-r--r--spec/ruby/optional/capi/ext/float_spec.c47
-rw-r--r--spec/ruby/optional/capi/ext/gc_spec.c97
-rw-r--r--spec/ruby/optional/capi/ext/globals_spec.c161
-rw-r--r--spec/ruby/optional/capi/ext/hash_spec.c160
-rw-r--r--spec/ruby/optional/capi/ext/integer_spec.c41
-rw-r--r--spec/ruby/optional/capi/ext/io_spec.c312
-rw-r--r--spec/ruby/optional/capi/ext/kernel_spec.c405
-rw-r--r--spec/ruby/optional/capi/ext/language_spec.c42
-rw-r--r--spec/ruby/optional/capi/ext/marshal_spec.c24
-rw-r--r--spec/ruby/optional/capi/ext/module_spec.c176
-rw-r--r--spec/ruby/optional/capi/ext/module_under_autoload_spec.c15
-rw-r--r--spec/ruby/optional/capi/ext/mutex_spec.c55
-rw-r--r--spec/ruby/optional/capi/ext/numeric_spec.c130
-rw-r--r--spec/ruby/optional/capi/ext/object_spec.c528
-rw-r--r--spec/ruby/optional/capi/ext/proc_spec.c132
-rw-r--r--spec/ruby/optional/capi/ext/range_spec.c50
-rw-r--r--spec/ruby/optional/capi/ext/rational_spec.c54
-rw-r--r--spec/ruby/optional/capi/ext/rbasic_spec.c100
-rw-r--r--spec/ruby/optional/capi/ext/regexp_spec.c74
-rw-r--r--spec/ruby/optional/capi/ext/rubyspec.h37
-rw-r--r--spec/ruby/optional/capi/ext/st_spec.c83
-rw-r--r--spec/ruby/optional/capi/ext/string_spec.c719
-rw-r--r--spec/ruby/optional/capi/ext/struct_spec.c85
-rw-r--r--spec/ruby/optional/capi/ext/symbol_spec.c116
-rw-r--r--spec/ruby/optional/capi/ext/thread_spec.c188
-rw-r--r--spec/ruby/optional/capi/ext/time_spec.c81
-rw-r--r--spec/ruby/optional/capi/ext/tracepoint_spec.c49
-rw-r--r--spec/ruby/optional/capi/ext/typed_data_spec.c189
-rw-r--r--spec/ruby/optional/capi/ext/util_spec.c126
-rw-r--r--spec/ruby/optional/capi/fiber_spec.rb89
-rw-r--r--spec/ruby/optional/capi/file_spec.rb89
-rw-r--r--spec/ruby/optional/capi/fixnum_spec.rb101
-rw-r--r--spec/ruby/optional/capi/fixtures/class.rb104
-rw-r--r--spec/ruby/optional/capi/fixtures/const_get.rb5
-rw-r--r--spec/ruby/optional/capi/fixtures/const_get_at.rb5
-rw-r--r--spec/ruby/optional/capi/fixtures/const_get_from.rb5
-rw-r--r--spec/ruby/optional/capi/fixtures/const_get_object.rb3
-rw-r--r--spec/ruby/optional/capi/fixtures/encoding.rb3
-rw-r--r--spec/ruby/optional/capi/fixtures/foo.rb1
-rw-r--r--spec/ruby/optional/capi/fixtures/module.rb39
-rw-r--r--spec/ruby/optional/capi/fixtures/module_autoload.rb4
-rw-r--r--spec/ruby/optional/capi/fixtures/object.rb29
-rw-r--r--spec/ruby/optional/capi/fixtures/path_to_class.rb6
-rw-r--r--spec/ruby/optional/capi/fixtures/proc.rb20
-rw-r--r--spec/ruby/optional/capi/fixtures/read.txt1
-rw-r--r--spec/ruby/optional/capi/float_spec.rb43
-rw-r--r--spec/ruby/optional/capi/gc_spec.rb105
-rw-r--r--spec/ruby/optional/capi/globals_spec.rb293
-rw-r--r--spec/ruby/optional/capi/hash_spec.rb274
-rw-r--r--spec/ruby/optional/capi/integer_spec.rb290
-rw-r--r--spec/ruby/optional/capi/io_spec.rb418
-rw-r--r--spec/ruby/optional/capi/kernel_spec.rb696
-rw-r--r--spec/ruby/optional/capi/language_spec.rb37
-rw-r--r--spec/ruby/optional/capi/marshal_spec.rb46
-rw-r--r--spec/ruby/optional/capi/module_spec.rb431
-rw-r--r--spec/ruby/optional/capi/mutex_spec.rb89
-rw-r--r--spec/ruby/optional/capi/numeric_spec.rb495
-rw-r--r--spec/ruby/optional/capi/object_spec.rb1007
-rw-r--r--spec/ruby/optional/capi/proc_spec.rb135
-rw-r--r--spec/ruby/optional/capi/rake_helper.rb22
-rw-r--r--spec/ruby/optional/capi/range_spec.rb95
-rw-r--r--spec/ruby/optional/capi/rational_spec.rb57
-rw-r--r--spec/ruby/optional/capi/rbasic_spec.rb42
-rw-r--r--spec/ruby/optional/capi/regexp_spec.rb128
-rw-r--r--spec/ruby/optional/capi/shared/rbasic.rb29
-rw-r--r--spec/ruby/optional/capi/spec_helper.rb147
-rw-r--r--spec/ruby/optional/capi/st_spec.rb41
-rw-r--r--spec/ruby/optional/capi/string_spec.rb1293
-rw-r--r--spec/ruby/optional/capi/struct_spec.rb211
-rw-r--r--spec/ruby/optional/capi/symbol_spec.rb180
-rw-r--r--spec/ruby/optional/capi/thread_spec.rb189
-rw-r--r--spec/ruby/optional/capi/time_spec.rb296
-rw-r--r--spec/ruby/optional/capi/tracepoint_spec.rb56
-rw-r--r--spec/ruby/optional/capi/typed_data_spec.rb88
-rw-r--r--spec/ruby/optional/capi/util_spec.rb326
-rw-r--r--spec/ruby/security/cve_2010_1330_spec.rb19
-rw-r--r--spec/ruby/security/cve_2011_4815_spec.rb47
-rw-r--r--spec/ruby/security/cve_2013_4164_spec.rb15
-rw-r--r--spec/ruby/security/cve_2014_8080_spec.rb34
-rw-r--r--spec/ruby/security/cve_2017_17742_spec.rb37
-rw-r--r--spec/ruby/security/cve_2018_16396_spec.rb7
-rw-r--r--spec/ruby/security/cve_2018_6914_spec.rb55
-rw-r--r--spec/ruby/security/cve_2018_8778_spec.rb10
-rw-r--r--spec/ruby/security/cve_2018_8779_spec.rb30
-rw-r--r--spec/ruby/security/cve_2018_8780_spec.rb43
-rw-r--r--spec/ruby/security/cve_2019_8321_spec.rb20
-rw-r--r--spec/ruby/security/cve_2019_8322_spec.rb21
-rw-r--r--spec/ruby/security/cve_2019_8323_spec.rb36
-rw-r--r--spec/ruby/security/cve_2019_8325_spec.rb46
-rw-r--r--spec/ruby/security/cve_2020_10663_spec.rb39
-rw-r--r--spec/ruby/shared/basicobject/method_missing.rb124
-rw-r--r--spec/ruby/shared/basicobject/send.rb128
-rw-r--r--spec/ruby/shared/enumerable/minmax.rb24
-rw-r--r--spec/ruby/shared/enumerator/enum_for.rb57
-rw-r--r--spec/ruby/shared/enumerator/with_index.rb33
-rw-r--r--spec/ruby/shared/enumerator/with_object.rb42
-rw-r--r--spec/ruby/shared/fiber/resume.rb58
-rw-r--r--spec/ruby/shared/file/blockdev.rb9
-rw-r--r--spec/ruby/shared/file/chardev.rb9
-rw-r--r--spec/ruby/shared/file/directory.rb66
-rw-r--r--spec/ruby/shared/file/executable.rb83
-rw-r--r--spec/ruby/shared/file/executable_real.rb81
-rw-r--r--spec/ruby/shared/file/exist.rb24
-rw-r--r--spec/ruby/shared/file/file.rb45
-rw-r--r--spec/ruby/shared/file/grpowned.rb39
-rw-r--r--spec/ruby/shared/file/identical.rb51
-rw-r--r--spec/ruby/shared/file/owned.rb3
-rw-r--r--spec/ruby/shared/file/pipe.rb3
-rw-r--r--spec/ruby/shared/file/readable.rb49
-rw-r--r--spec/ruby/shared/file/readable_real.rb39
-rw-r--r--spec/ruby/shared/file/setgid.rb2
-rw-r--r--spec/ruby/shared/file/setuid.rb2
-rw-r--r--spec/ruby/shared/file/size.rb124
-rw-r--r--spec/ruby/shared/file/socket.rb3
-rw-r--r--spec/ruby/shared/file/sticky.rb29
-rw-r--r--spec/ruby/shared/file/symlink.rb46
-rw-r--r--spec/ruby/shared/file/world_readable.rb49
-rw-r--r--spec/ruby/shared/file/world_writable.rb49
-rw-r--r--spec/ruby/shared/file/writable.rb44
-rw-r--r--spec/ruby/shared/file/writable_real.rb49
-rw-r--r--spec/ruby/shared/file/zero.rb68
-rw-r--r--spec/ruby/shared/hash/key_error.rb23
-rw-r--r--spec/ruby/shared/io/putc.rb57
-rw-r--r--spec/ruby/shared/kernel/complex.rb133
-rw-r--r--spec/ruby/shared/kernel/equal.rb54
-rw-r--r--spec/ruby/shared/kernel/object_id.rb80
-rw-r--r--spec/ruby/shared/kernel/raise.rb149
-rw-r--r--spec/ruby/shared/math/atanh.rb44
-rw-r--r--spec/ruby/shared/process/abort.rb36
-rw-r--r--spec/ruby/shared/process/exit.rb120
-rw-r--r--spec/ruby/shared/process/fork.rb90
-rw-r--r--spec/ruby/shared/queue/clear.rb12
-rw-r--r--spec/ruby/shared/queue/close.rb14
-rw-r--r--spec/ruby/shared/queue/closed.rb12
-rw-r--r--spec/ruby/shared/queue/deque.rb147
-rw-r--r--spec/ruby/shared/queue/empty.rb12
-rw-r--r--spec/ruby/shared/queue/enque.rb18
-rw-r--r--spec/ruby/shared/queue/length.rb9
-rw-r--r--spec/ruby/shared/queue/num_waiting.rb16
-rw-r--r--spec/ruby/shared/rational/Rational.rb141
-rw-r--r--spec/ruby/shared/rational/abs.rb11
-rw-r--r--spec/ruby/shared/rational/arithmetic_exception_in_coerce.rb11
-rw-r--r--spec/ruby/shared/rational/ceil.rb45
-rw-r--r--spec/ruby/shared/rational/coerce.rb34
-rw-r--r--spec/ruby/shared/rational/comparison.rb95
-rw-r--r--spec/ruby/shared/rational/denominator.rb14
-rw-r--r--spec/ruby/shared/rational/div.rb54
-rw-r--r--spec/ruby/shared/rational/divide.rb71
-rw-r--r--spec/ruby/shared/rational/divmod.rb42
-rw-r--r--spec/ruby/shared/rational/equal_value.rb39
-rw-r--r--spec/ruby/shared/rational/exponent.rb196
-rw-r--r--spec/ruby/shared/rational/fdiv.rb5
-rw-r--r--spec/ruby/shared/rational/floor.rb45
-rw-r--r--spec/ruby/shared/rational/hash.rb9
-rw-r--r--spec/ruby/shared/rational/inspect.rb14
-rw-r--r--spec/ruby/shared/rational/marshal_dump.rb5
-rw-r--r--spec/ruby/shared/rational/marshal_load.rb5
-rw-r--r--spec/ruby/shared/rational/modulo.rb43
-rw-r--r--spec/ruby/shared/rational/multiply.rb62
-rw-r--r--spec/ruby/shared/rational/numerator.rb10
-rw-r--r--spec/ruby/shared/rational/plus.rb48
-rw-r--r--spec/ruby/shared/rational/quo.rb5
-rw-r--r--spec/ruby/shared/rational/remainder.rb5
-rw-r--r--spec/ruby/shared/rational/round.rb106
-rw-r--r--spec/ruby/shared/rational/to_f.rb16
-rw-r--r--spec/ruby/shared/rational/to_i.rb12
-rw-r--r--spec/ruby/shared/rational/to_r.rb11
-rw-r--r--spec/ruby/shared/rational/to_s.rb14
-rw-r--r--spec/ruby/shared/rational/truncate.rb45
-rw-r--r--spec/ruby/shared/sizedqueue/enque.rb113
-rw-r--r--spec/ruby/shared/sizedqueue/max.rb47
-rw-r--r--spec/ruby/shared/sizedqueue/new.rb23
-rw-r--r--spec/ruby/shared/sizedqueue/num_waiting.rb12
-rw-r--r--spec/ruby/shared/string/end_with.rb61
-rw-r--r--spec/ruby/shared/string/start_with.rb76
-rw-r--r--spec/ruby/shared/string/times.rb68
-rw-r--r--spec/ruby/shared/time/strftime_for_date.rb273
-rw-r--r--spec/ruby/shared/time/strftime_for_time.rb181
-rw-r--r--spec/ruby/spec_helper.rb38
-rw-r--r--spec/syntax_suggest/fixtures/derailed_require_tree.rb.txt74
-rwxr-xr-xspec/syntax_suggest/fixtures/rexe.rb.txt569
-rw-r--r--spec/syntax_suggest/fixtures/routes.rb.txt121
-rw-r--r--spec/syntax_suggest/fixtures/ruby_buildpack.rb.txt1344
-rw-r--r--spec/syntax_suggest/fixtures/syntax_tree.rb.txt9234
-rw-r--r--spec/syntax_suggest/fixtures/this_project_extra_def.rb.txt64
-rw-r--r--spec/syntax_suggest/fixtures/webmock.rb.txt35
-rw-r--r--spec/syntax_suggest/integration/exe_cli_spec.rb27
-rw-r--r--spec/syntax_suggest/integration/ruby_command_line_spec.rb193
-rw-r--r--spec/syntax_suggest/integration/syntax_suggest_spec.rb239
-rw-r--r--spec/syntax_suggest/spec_helper.rb104
-rw-r--r--spec/syntax_suggest/unit/api_spec.rb108
-rw-r--r--spec/syntax_suggest/unit/around_block_scan_spec.rb165
-rw-r--r--spec/syntax_suggest/unit/block_expand_spec.rb230
-rw-r--r--spec/syntax_suggest/unit/capture/before_after_keyword_ends_spec.rb47
-rw-r--r--spec/syntax_suggest/unit/capture/falling_indent_lines_spec.rb44
-rw-r--r--spec/syntax_suggest/unit/capture_code_context_spec.rb229
-rw-r--r--spec/syntax_suggest/unit/clean_document_spec.rb260
-rw-r--r--spec/syntax_suggest/unit/cli_spec.rb224
-rw-r--r--spec/syntax_suggest/unit/code_block_spec.rb77
-rw-r--r--spec/syntax_suggest/unit/code_frontier_spec.rb135
-rw-r--r--spec/syntax_suggest/unit/code_line_spec.rb165
-rw-r--r--spec/syntax_suggest/unit/code_search_spec.rb505
-rw-r--r--spec/syntax_suggest/unit/core_ext_spec.rb34
-rw-r--r--spec/syntax_suggest/unit/display_invalid_blocks_spec.rb174
-rw-r--r--spec/syntax_suggest/unit/explain_syntax_spec.rb255
-rw-r--r--spec/syntax_suggest/unit/lex_all_spec.rb29
-rw-r--r--spec/syntax_suggest/unit/pathname_from_message_spec.rb56
-rw-r--r--spec/syntax_suggest/unit/priority_queue_spec.rb95
-rw-r--r--spec/syntax_suggest/unit/scan_history_spec.rb114
-rw-r--r--sprintf.c1784
-rw-r--r--st.c2538
-rw-r--r--st.h46
-rw-r--r--strftime.c1281
-rw-r--r--string.c13209
-rw-r--r--string.rb552
-rw-r--r--struct.c2419
-rw-r--r--symbol.c1268
-rw-r--r--symbol.h119
-rw-r--r--symbol.rb15
-rw-r--r--template/Doxyfile.tmpl2687
-rw-r--r--template/GNUmakefile.in34
-rw-r--r--template/Makefile.in728
-rw-r--r--template/builtin_binary.inc.tmpl30
-rw-r--r--template/call_iseq_optimized.inc.tmpl68
-rw-r--r--template/configure-ext.mk.tmpl46
-rw-r--r--template/depend.tmpl2
-rw-r--r--template/encdb.h.tmpl101
-rw-r--r--template/extinit.c.tmpl17
-rw-r--r--template/exts.mk.tmpl171
-rw-r--r--template/fake.rb.in67
-rw-r--r--template/id.c.tmpl42
-rw-r--r--template/id.h.tmpl93
-rw-r--r--template/known_errors.inc.tmpl14
-rw-r--r--template/limits.c.tmpl97
-rw-r--r--template/prelude.c.tmpl222
-rwxr-xr-xtemplate/ruby-gdb.in6
-rwxr-xr-xtemplate/ruby-lldb.in6
-rw-r--r--template/ruby-runner.h.in9
-rw-r--r--template/ruby.pc.in59
-rw-r--r--template/sizes.c.tmpl54
-rw-r--r--template/transdb.h.tmpl60
-rw-r--r--template/unicode_norm_gen.tmpl220
-rw-r--r--template/verconf.h.tmpl63
-rw-r--r--test/-ext-/arith_seq/test_arith_seq_beg_len_step.rb52
-rw-r--r--test/-ext-/arith_seq/test_arith_seq_extract.rb40
-rw-r--r--test/-ext-/array/test_resize.rb36
-rw-r--r--test/-ext-/array/test_to_ary_concat.rb20
-rw-r--r--test/-ext-/bignum/test_big2str.rb28
-rw-r--r--test/-ext-/bignum/test_bigzero.rb18
-rw-r--r--test/-ext-/bignum/test_div.rb27
-rw-r--r--test/-ext-/bignum/test_mul.rb136
-rw-r--r--test/-ext-/bignum/test_pack.rb396
-rw-r--r--test/-ext-/bignum/test_str2big.rb36
-rw-r--r--test/-ext-/bug_reporter/test_bug_reporter.rb37
-rw-r--r--test/-ext-/class/test_class2name.rb19
-rw-r--r--test/-ext-/debug/test_debug.rb75
-rw-r--r--test/-ext-/debug/test_profile_frames.rb180
-rw-r--r--test/-ext-/econv/test_append.rb23
-rw-r--r--test/-ext-/eval/test_eval.rb12
-rw-r--r--test/-ext-/exception/test_data_error.rb14
-rw-r--r--test/-ext-/exception/test_enc_raise.rb16
-rw-r--r--test/-ext-/exception/test_ensured.rb32
-rw-r--r--test/-ext-/exception/test_exception_at_throwing.rb18
-rw-r--r--test/-ext-/file/test_stat.rb15
-rw-r--r--test/-ext-/float/test_nextafter.rb65
-rw-r--r--test/-ext-/funcall/test_passing_block.rb65
-rw-r--r--test/-ext-/gvl/test_last_thread.rb22
-rw-r--r--test/-ext-/gvl/test_ubf_async_safe.rb20
-rw-r--r--test/-ext-/hash/test_delete.rb20
-rw-r--r--test/-ext-/integer/test_integer.rb26
-rw-r--r--test/-ext-/integer/test_my_integer.rb48
-rw-r--r--test/-ext-/iseq_load/test_iseq_load.rb156
-rw-r--r--test/-ext-/iter/test_iter_break.rb16
-rw-r--r--test/-ext-/iter/test_yield_block.rb34
-rw-r--r--test/-ext-/load/script.rb2
-rw-r--r--test/-ext-/load/test_dot_dot.rb11
-rw-r--r--test/-ext-/load/test_protect.rb14
-rw-r--r--test/-ext-/marshal/test_internal_ivar.rb24
-rw-r--r--test/-ext-/marshal/test_usrmarshal.rb33
-rw-r--r--test/-ext-/method/test_arity.rb38
-rw-r--r--test/-ext-/num2int/test_num2int.rb265
-rw-r--r--test/-ext-/path_to_class/test_path_to_class.rb13
-rw-r--r--test/-ext-/popen_deadlock/test_popen_deadlock.rb36
-rw-r--r--test/-ext-/postponed_job/test_postponed_job.rb35
-rw-r--r--test/-ext-/proc/test_bmethod.rb38
-rw-r--r--test/-ext-/rational/test_rat.rb70
-rw-r--r--test/-ext-/st/test_foreach.rb16
-rw-r--r--test/-ext-/st/test_numhash.rb50
-rw-r--r--test/-ext-/st/test_update.rb51
-rw-r--r--test/-ext-/string/test_capacity.rb79
-rw-r--r--test/-ext-/string/test_coderange.rb60
-rw-r--r--test/-ext-/string/test_cstr.rb168
-rw-r--r--test/-ext-/string/test_ellipsize.rb47
-rw-r--r--test/-ext-/string/test_enc_associate.rb24
-rw-r--r--test/-ext-/string/test_enc_str_buf_cat.rb25
-rw-r--r--test/-ext-/string/test_external_new.rb17
-rw-r--r--test/-ext-/string/test_fstring.rb68
-rw-r--r--test/-ext-/string/test_interned_str.rb12
-rw-r--r--test/-ext-/string/test_modify_expand.rb26
-rw-r--r--test/-ext-/string/test_nofree.rb13
-rw-r--r--test/-ext-/string/test_normalize.rb110
-rw-r--r--test/-ext-/string/test_qsort.rb20
-rw-r--r--test/-ext-/string/test_rb_str_dup.rb18
-rw-r--r--test/-ext-/string/test_set_len.rb66
-rw-r--r--test/-ext-/struct/test_duplicate.rb22
-rw-r--r--test/-ext-/struct/test_len.rb10
-rw-r--r--test/-ext-/struct/test_member.rb14
-rw-r--r--test/-ext-/symbol/noninterned_name.rb17
-rw-r--r--test/-ext-/symbol/test_inadvertent_creation.rb493
-rw-r--r--test/-ext-/symbol/test_type.rb143
-rw-r--r--test/-ext-/test_abi.rb47
-rw-r--r--test/-ext-/test_bug-14834.rb12
-rw-r--r--test/-ext-/test_bug-3571.rb21
-rw-r--r--test/-ext-/test_bug-5832.rb22
-rw-r--r--test/-ext-/test_enumerator_kw.rb11
-rw-r--r--test/-ext-/test_notimplement.rb44
-rw-r--r--test/-ext-/test_printf.rb184
-rw-r--r--test/-ext-/test_random.rb45
-rw-r--r--test/-ext-/test_recursion.rb36
-rw-r--r--test/-ext-/test_scan_args.rb259
-rw-r--r--test/-ext-/thread/test_instrumentation_api.rb91
-rw-r--r--test/-ext-/thread_fd/test_thread_fd_close.rb24
-rw-r--r--test/-ext-/time/test_new.rb44
-rw-r--r--test/-ext-/tracepoint/test_tracepoint.rb88
-rw-r--r--test/-ext-/typeddata/test_typeddata.rb29
-rw-r--r--test/-ext-/vm/test_at_exit.rb19
-rw-r--r--test/-ext-/wait/test_wait.rb36
-rw-r--r--test/-ext-/win32/test_console_attr.rb55
-rw-r--r--test/-ext-/win32/test_dln.rb39
-rw-r--r--test/-ext-/win32/test_fd_setsize.rb25
-rw-r--r--test/base64/test_base64.rb115
-rw-r--r--test/benchmark/test_benchmark.rb167
-rw-r--r--test/bigdecimal/helper.rb39
-rw-r--r--test/bigdecimal/test_bigdecimal.rb2285
-rw-r--r--test/bigdecimal/test_bigdecimal_util.rb141
-rw-r--r--test/bigdecimal/test_bigmath.rb81
-rw-r--r--test/bigdecimal/test_ractor.rb23
-rw-r--r--test/cgi/test_cgi_cookie.rb211
-rw-r--r--test/cgi/test_cgi_core.rb307
-rw-r--r--test/cgi/test_cgi_header.rb192
-rw-r--r--test/cgi/test_cgi_modruby.rb149
-rw-r--r--test/cgi/test_cgi_multipart.rb385
-rw-r--r--test/cgi/test_cgi_session.rb169
-rw-r--r--test/cgi/test_cgi_tag_helper.rb355
-rw-r--r--test/cgi/test_cgi_util.rb303
-rw-r--r--test/cgi/testdata/file1.html10
-rw-r--r--test/cgi/testdata/large.pngbin0 -> 156414 bytes-rw-r--r--test/cgi/testdata/small.pngbin0 -> 82 bytes-rw-r--r--test/cgi/update_env.rb9
-rw-r--r--test/coverage/autostart.rb2
-rw-r--r--test/coverage/main.rb1
-rw-r--r--test/coverage/test_coverage.rb988
-rw-r--r--test/csv/helper.rb42
-rw-r--r--test/csv/interface/test_delegation.rb47
-rw-r--r--test/csv/interface/test_read.rb381
-rw-r--r--test/csv/interface/test_read_write.rb124
-rw-r--r--test/csv/interface/test_write.rb217
-rw-r--r--test/csv/line_endings.gzbin0 -> 59 bytes-rw-r--r--test/csv/parse/test_column_separator.rb40
-rw-r--r--test/csv/parse/test_convert.rb165
-rw-r--r--test/csv/parse/test_each.rb23
-rw-r--r--test/csv/parse/test_general.rb341
-rw-r--r--test/csv/parse/test_header.rb342
-rw-r--r--test/csv/parse/test_inputs_scanner.rb63
-rw-r--r--test/csv/parse/test_invalid.rb52
-rw-r--r--test/csv/parse/test_liberal_parsing.rb171
-rw-r--r--test/csv/parse/test_quote_char_nil.rb93
-rw-r--r--test/csv/parse/test_read.rb27
-rw-r--r--test/csv/parse/test_rewind.rb40
-rw-r--r--test/csv/parse/test_row_separator.rb16
-rw-r--r--test/csv/parse/test_skip_lines.rb118
-rw-r--r--test/csv/parse/test_strip.rb112
-rw-r--r--test/csv/parse/test_unconverted_fields.rb117
-rw-r--r--test/csv/test_data_converters.rb190
-rw-r--r--test/csv/test_encodings.rb403
-rw-r--r--test/csv/test_features.rb359
-rw-r--r--test/csv/test_patterns.rb27
-rw-r--r--test/csv/test_row.rb435
-rw-r--r--test/csv/test_table.rb691
-rw-r--r--test/csv/write/test_converters.rb53
-rw-r--r--test/csv/write/test_force_quotes.rb78
-rw-r--r--test/csv/write/test_general.rb246
-rw-r--r--test/csv/write/test_quote_empty.rb70
-rw-r--r--test/date/test_date.rb207
-rw-r--r--test/date/test_date_arith.rb294
-rw-r--r--test/date/test_date_attr.rb103
-rw-r--r--test/date/test_date_compat.rb22
-rw-r--r--test/date/test_date_conv.rb188
-rw-r--r--test/date/test_date_marshal.rb59
-rw-r--r--test/date/test_date_new.rb332
-rw-r--r--test/date/test_date_parse.rb1316
-rw-r--r--test/date/test_date_ractor.rb27
-rw-r--r--test/date/test_date_strftime.rb439
-rw-r--r--test/date/test_date_strptime.rb523
-rw-r--r--test/date/test_switch_hitter.rb637
-rw-r--r--test/did_you_mean/core_ext/test_name_error_extension.rb55
-rw-r--r--test/did_you_mean/edit_distance/test_jaro_winkler.rb36
-rw-r--r--test/did_you_mean/fixtures/book.rb4
-rw-r--r--test/did_you_mean/fixtures/mini_dir.yml15
-rw-r--r--test/did_you_mean/fixtures/rspec_dir.yml112
-rw-r--r--test/did_you_mean/helper.rb43
-rw-r--r--test/did_you_mean/spell_checking/test_class_name_check.rb81
-rw-r--r--test/did_you_mean/spell_checking/test_key_name_check.rb54
-rw-r--r--test/did_you_mean/spell_checking/test_method_name_check.rb165
-rw-r--r--test/did_you_mean/spell_checking/test_pattern_key_name_check.rb20
-rw-r--r--test/did_you_mean/spell_checking/test_require_path_check.rb32
-rw-r--r--test/did_you_mean/spell_checking/test_uncorrectable_name_check.rb15
-rw-r--r--test/did_you_mean/spell_checking/test_variable_name_check.rb152
-rw-r--r--test/did_you_mean/test_ractor_compatibility.rb117
-rw-r--r--test/did_you_mean/test_spell_checker.rb78
-rw-r--r--test/did_you_mean/test_tree_spell_checker.rb170
-rw-r--r--test/did_you_mean/tree_spell/change_word.rb61
-rw-r--r--test/did_you_mean/tree_spell/human_typo.rb69
-rw-r--r--test/did_you_mean/tree_spell/test_change_word.rb38
-rw-r--r--test/did_you_mean/tree_spell/test_human_typo.rb24
-rw-r--r--test/digest/digest/foo.rb11
-rw-r--r--test/digest/test_digest.rb280
-rw-r--r--test/digest/test_digest_extend.rb164
-rw-r--r--test/digest/test_ractor.rb97
-rw-r--r--test/drb/drbtest.rb396
-rw-r--r--test/drb/ignore_test_drb.rb14
-rw-r--r--test/drb/test_acl.rb207
-rw-r--r--test/drb/test_drb.rb371
-rw-r--r--test/drb/test_drbobject.rb69
-rw-r--r--test/drb/test_drbssl.rb80
-rw-r--r--test/drb/test_drbunix.rb60
-rw-r--r--test/drb/ut_array.rb17
-rw-r--r--test/drb/ut_array_drbssl.rb39
-rw-r--r--test/drb/ut_array_drbunix.rb17
-rw-r--r--test/drb/ut_drb.rb189
-rw-r--r--test/drb/ut_drb_drbssl.rb40
-rw-r--r--test/drb/ut_drb_drbunix.rb18
-rw-r--r--test/drb/ut_eq.rb37
-rw-r--r--test/drb/ut_large.rb62
-rw-r--r--test/drb/ut_port.rb16
-rw-r--r--test/drb/ut_safe1.rb17
-rw-r--r--test/drb/ut_timerholder.rb74
-rw-r--r--test/dtrace/dummy.rb2
-rw-r--r--test/dtrace/helper.rb165
-rw-r--r--test/dtrace/test_array_create.rb36
-rw-r--r--test/dtrace/test_cmethod.rb50
-rw-r--r--test/dtrace/test_function_entry.rb89
-rw-r--r--test/dtrace/test_gc.rb27
-rw-r--r--test/dtrace/test_hash_create.rb53
-rw-r--r--test/dtrace/test_load.rb53
-rw-r--r--test/dtrace/test_method_cache.rb29
-rw-r--r--test/dtrace/test_object_create_start.rb36
-rw-r--r--test/dtrace/test_raise.rb30
-rw-r--r--test/dtrace/test_require.rb41
-rw-r--r--test/dtrace/test_singleton_function.rb57
-rw-r--r--test/dtrace/test_string.rb28
-rw-r--r--test/erb/hello.erb4
-rw-r--r--test/erb/test_erb.rb741
-rw-r--r--test/erb/test_erb_command.rb20
-rw-r--r--test/erb/test_erb_m17n.rb124
-rw-r--r--test/error_highlight/test_error_highlight.rb1290
-rw-r--r--test/etc/test_etc.rb196
-rw-r--r--test/excludes/TestArray.rb1
-rw-r--r--test/excludes/TestException.rb8
-rw-r--r--test/excludes/TestGem.rb4
-rw-r--r--test/excludes/TestIO_Console.rb2
-rw-r--r--test/excludes/TestISeq.rb1
-rw-r--r--test/excludes/TestThread.rb14
-rw-r--r--test/excludes/TestThreadQueue.rb9
-rw-r--r--test/excludes/_appveyor/TestArray.rb7
-rw-r--r--test/fiber/autoload.rb3
-rw-r--r--test/fiber/http.rb54
-rw-r--r--test/fiber/scheduler.rb363
-rw-r--r--test/fiber/test_address_resolve.rb278
-rw-r--r--test/fiber/test_backtrace.rb22
-rw-r--r--test/fiber/test_enumerator.rb53
-rw-r--r--test/fiber/test_io.rb222
-rw-r--r--test/fiber/test_io_buffer.rb158
-rw-r--r--test/fiber/test_mutex.rb240
-rw-r--r--test/fiber/test_process.rb72
-rw-r--r--test/fiber/test_queue.rb54
-rw-r--r--test/fiber/test_ractor.rb23
-rw-r--r--test/fiber/test_scheduler.rb226
-rw-r--r--test/fiber/test_sleep.rb71
-rw-r--r--test/fiber/test_storage.rb115
-rw-r--r--test/fiber/test_thread.rb130
-rw-r--r--test/fiber/test_timeout.rb51
-rw-r--r--test/fiddle/helper.rb184
-rw-r--r--test/fiddle/test_c_struct_builder.rb69
-rw-r--r--test/fiddle/test_c_struct_entry.rb165
-rw-r--r--test/fiddle/test_c_union_entity.rb36
-rw-r--r--test/fiddle/test_closure.rb141
-rw-r--r--test/fiddle/test_cparser.rb374
-rw-r--r--test/fiddle/test_fiddle.rb58
-rw-r--r--test/fiddle/test_func.rb149
-rw-r--r--test/fiddle/test_function.rb239
-rw-r--r--test/fiddle/test_handle.rb215
-rw-r--r--test/fiddle/test_import.rb490
-rw-r--r--test/fiddle/test_memory_view.rb143
-rw-r--r--test/fiddle/test_pack.rb37
-rw-r--r--test/fiddle/test_pinned.rb28
-rw-r--r--test/fiddle/test_pointer.rb290
-rw-r--r--test/fileutils/clobber.rb89
-rw-r--r--test/fileutils/fileasserts.rb112
-rw-r--r--test/fileutils/test_dryrun.rb18
-rw-r--r--test/fileutils/test_fileutils.rb1937
-rw-r--r--test/fileutils/test_nowrite.rb18
-rw-r--r--test/fileutils/test_verbose.rb18
-rw-r--r--test/fileutils/visibility_tests.rb39
-rw-r--r--test/fixtures/fake_sorted_set_gem/sorted_set.rb9
-rw-r--r--test/io/console/test_io_console.rb596
-rw-r--r--test/io/nonblock/test_flush.rb73
-rw-r--r--test/io/wait/test_io_wait.rb207
-rw-r--r--test/io/wait/test_io_wait_uncommon.rb77
-rw-r--r--test/io/wait/test_ractor.rb17
-rw-r--r--test/irb/helper.rb76
-rw-r--r--test/irb/test_cmd.rb692
-rw-r--r--test/irb/test_color.rb291
-rw-r--r--test/irb/test_color_printer.rb69
-rw-r--r--test/irb/test_completion.rb363
-rw-r--r--test/irb/test_context.rb643
-rw-r--r--test/irb/test_debug_cmd.rb303
-rw-r--r--test/irb/test_history.rb209
-rw-r--r--test/irb/test_init.rb177
-rw-r--r--test/irb/test_input_method.rb79
-rw-r--r--test/irb/test_option.rb13
-rw-r--r--test/irb/test_raise_no_backtrace_exception.rb56
-rw-r--r--test/irb/test_ruby_lex.rb725
-rw-r--r--test/irb/test_workspace.rb129
-rw-r--r--test/irb/yamatanooroti/test_rendering.rb249
-rw-r--r--test/json/fixtures/fail10.json1
-rw-r--r--test/json/fixtures/fail11.json1
-rw-r--r--test/json/fixtures/fail12.json1
-rw-r--r--test/json/fixtures/fail13.json1
-rw-r--r--test/json/fixtures/fail14.json1
-rw-r--r--test/json/fixtures/fail18.json1
-rw-r--r--test/json/fixtures/fail19.json1
-rw-r--r--test/json/fixtures/fail2.json1
-rw-r--r--test/json/fixtures/fail20.json1
-rw-r--r--test/json/fixtures/fail21.json1
-rw-r--r--test/json/fixtures/fail22.json1
-rw-r--r--test/json/fixtures/fail23.json1
-rw-r--r--test/json/fixtures/fail24.json1
-rw-r--r--test/json/fixtures/fail25.json1
-rw-r--r--test/json/fixtures/fail27.json2
-rw-r--r--test/json/fixtures/fail28.json2
-rw-r--r--test/json/fixtures/fail29.json1
-rw-r--r--test/json/fixtures/fail3.json1
-rw-r--r--test/json/fixtures/fail30.json1
-rw-r--r--test/json/fixtures/fail31.json1
-rw-r--r--test/json/fixtures/fail32.json1
-rw-r--r--test/json/fixtures/fail4.json1
-rw-r--r--test/json/fixtures/fail5.json1
-rw-r--r--test/json/fixtures/fail6.json1
-rw-r--r--test/json/fixtures/fail7.json1
-rw-r--r--test/json/fixtures/fail8.json1
-rw-r--r--test/json/fixtures/fail9.json1
-rw-r--r--test/json/fixtures/obsolete_fail1.json1
-rw-r--r--test/json/fixtures/pass1.json56
-rw-r--r--test/json/fixtures/pass15.json1
-rw-r--r--test/json/fixtures/pass16.json1
-rw-r--r--test/json/fixtures/pass17.json1
-rw-r--r--test/json/fixtures/pass2.json1
-rw-r--r--test/json/fixtures/pass26.json1
-rw-r--r--test/json/fixtures/pass3.json6
-rw-r--r--test/json/json_addition_test.rb199
-rw-r--r--test/json/json_common_interface_test.rb169
-rw-r--r--test/json/json_encoding_test.rb107
-rw-r--r--test/json/json_ext_parser_test.rb15
-rw-r--r--test/json/json_fixtures_test.rb40
-rw-r--r--test/json/json_generator_test.rb399
-rw-r--r--test/json/json_generic_object_test.rb82
-rw-r--r--test/json/json_parser_test.rb502
-rw-r--r--test/json/json_string_matching_test.rb38
-rw-r--r--test/json/ractor_test.rb30
-rw-r--r--test/json/test_helper.rb17
-rw-r--r--test/lib/jit_support.rb98
-rw-r--r--test/lib/with_different_ofs.rb22
-rw-r--r--test/logger/test_formatter.rb35
-rw-r--r--test/logger/test_logdevice.rb859
-rw-r--r--test/logger/test_logger.rb393
-rw-r--r--test/logger/test_logperiod.rb80
-rw-r--r--test/logger/test_severity.rb26
-rw-r--r--test/mkmf/base.rb153
-rw-r--r--test/mkmf/test_config.rb15
-rw-r--r--test/mkmf/test_constant.rb44
-rw-r--r--test/mkmf/test_convertible.rb33
-rw-r--r--test/mkmf/test_egrep_cpp.rb13
-rw-r--r--test/mkmf/test_find_executable.rb56
-rw-r--r--test/mkmf/test_flags.rb55
-rw-r--r--test/mkmf/test_framework.rb47
-rw-r--r--test/mkmf/test_have_func.rb15
-rw-r--r--test/mkmf/test_have_library.rb54
-rw-r--r--test/mkmf/test_have_macro.rb34
-rw-r--r--test/mkmf/test_install.rb28
-rw-r--r--test/mkmf/test_libs.rb92
-rw-r--r--test/mkmf/test_mkmf.rb13
-rw-r--r--test/mkmf/test_pkg_config.rb66
-rw-r--r--test/mkmf/test_signedness.rb28
-rw-r--r--test/mkmf/test_sizeof.rb46
-rw-r--r--test/monitor/test_monitor.rb355
-rw-r--r--test/net/fixtures/Makefile15
-rw-r--r--test/net/fixtures/cacert.pem24
-rw-r--r--test/net/fixtures/dhparams.pem29
-rw-r--r--test/net/fixtures/server.crt21
-rw-r--r--test/net/fixtures/server.key27
-rw-r--r--test/net/http/test_buffered_io.rb18
-rw-r--r--test/net/http/test_http.rb1370
-rw-r--r--test/net/http/test_http_request.rb93
-rw-r--r--test/net/http/test_httpheader.rb469
-rw-r--r--test/net/http/test_httpresponse.rb754
-rw-r--r--test/net/http/test_httpresponses.rb25
-rw-r--r--test/net/http/test_https.rb310
-rw-r--r--test/net/http/test_https_proxy.rb47
-rw-r--r--test/net/http/utils.rb133
-rw-r--r--test/net/protocol/test_protocol.rb159
-rw-r--r--test/nkf/test_kconv.rb82
-rw-r--r--test/nkf/test_nkf.rb23
-rw-r--r--test/objspace/test_objspace.rb849
-rw-r--r--test/objspace/test_ractor.rb17
-rw-r--r--test/open-uri/test_open-uri.rb915
-rw-r--r--test/open-uri/test_ssl.rb532
-rw-r--r--test/openssl/fixtures/pkey/certificate.derbin0 -> 1325 bytes-rw-r--r--test/openssl/fixtures/pkey/dh-1.pem13
-rw-r--r--test/openssl/fixtures/pkey/dh1024.pem5
-rw-r--r--test/openssl/fixtures/pkey/dsa1024.pem12
-rw-r--r--test/openssl/fixtures/pkey/dsa256.pem8
-rw-r--r--test/openssl/fixtures/pkey/dsa512.pem8
-rw-r--r--test/openssl/fixtures/pkey/empty.der0
-rw-r--r--test/openssl/fixtures/pkey/empty.pem0
-rw-r--r--test/openssl/fixtures/pkey/fullchain.pem56
-rw-r--r--test/openssl/fixtures/pkey/garbage.txt1
-rw-r--r--test/openssl/fixtures/pkey/p256.pem5
-rw-r--r--test/openssl/fixtures/pkey/p256_too_large.pem5
-rw-r--r--test/openssl/fixtures/pkey/p384_invalid.pem6
-rw-r--r--test/openssl/fixtures/pkey/rsa-1.pem51
-rw-r--r--test/openssl/fixtures/pkey/rsa-2.pem51
-rw-r--r--test/openssl/fixtures/pkey/rsa-3.pem51
-rw-r--r--test/openssl/fixtures/pkey/rsa1024.pem15
-rw-r--r--test/openssl/fixtures/pkey/rsa2048.pem27
-rw-r--r--test/openssl/test_asn1.rb709
-rw-r--r--test/openssl/test_bn.rb370
-rw-r--r--test/openssl/test_buffering.rb97
-rw-r--r--test/openssl/test_cipher.rb373
-rw-r--r--test/openssl/test_config.rb292
-rw-r--r--test/openssl/test_digest.rb149
-rw-r--r--test/openssl/test_engine.rb97
-rw-r--r--test/openssl/test_fips.rb30
-rw-r--r--test/openssl/test_hmac.rb75
-rw-r--r--test/openssl/test_kdf.rb183
-rw-r--r--test/openssl/test_ns_spki.rb53
-rw-r--r--test/openssl/test_ocsp.rb304
-rw-r--r--test/openssl/test_ossl.rb65
-rw-r--r--test/openssl/test_pair.rb506
-rw-r--r--test/openssl/test_pkcs12.rb314
-rw-r--r--test/openssl/test_pkcs7.rb327
-rw-r--r--test/openssl/test_pkey.rb177
-rw-r--r--test/openssl/test_pkey_dh.rb166
-rw-r--r--test/openssl/test_pkey_dsa.rb251
-rw-r--r--test/openssl/test_pkey_ec.rb474
-rw-r--r--test/openssl/test_pkey_rsa.rb549
-rw-r--r--test/openssl/test_random.rb19
-rw-r--r--test/openssl/test_ssl.rb1908
-rw-r--r--test/openssl/test_ssl_session.rb393
-rw-r--r--test/openssl/test_ts.rb680
-rw-r--r--test/openssl/test_x509attr.rb94
-rw-r--r--test/openssl/test_x509cert.rb334
-rw-r--r--test/openssl/test_x509crl.rb284
-rw-r--r--test/openssl/test_x509ext.rb104
-rw-r--r--test/openssl/test_x509name.rb469
-rw-r--r--test/openssl/test_x509req.rb166
-rw-r--r--test/openssl/test_x509store.rb373
-rw-r--r--test/openssl/ut_eof.rb137
-rw-r--r--test/openssl/utils.rb361
-rw-r--r--test/optparse/test_acceptable.rb198
-rw-r--r--test/optparse/test_autoconf.rb69
-rw-r--r--test/optparse/test_bash_completion.rb46
-rw-r--r--test/optparse/test_cclass.rb18
-rw-r--r--test/optparse/test_did_you_mean.rb48
-rw-r--r--test/optparse/test_getopts.rb33
-rw-r--r--test/optparse/test_kwargs.rb38
-rw-r--r--test/optparse/test_load.rb141
-rw-r--r--test/optparse/test_noarg.rb79
-rw-r--r--test/optparse/test_optarg.rb60
-rw-r--r--test/optparse/test_optparse.rb123
-rw-r--r--test/optparse/test_placearg.rb76
-rw-r--r--test/optparse/test_reqarg.rb95
-rw-r--r--test/optparse/test_summary.rb81
-rw-r--r--test/optparse/test_zsh_completion.rb21
-rw-r--r--test/ostruct/test_ostruct.rb415
-rw-r--r--test/pathname/test_pathname.rb1553
-rw-r--r--test/pathname/test_ractor.rb22
-rw-r--r--test/psych/handlers/test_recorder.rb26
-rw-r--r--test/psych/helper.rb134
-rw-r--r--test/psych/json/test_stream.rb110
-rw-r--r--test/psych/nodes/test_enumerable.rb44
-rw-r--r--test/psych/test_alias_and_anchor.rb97
-rw-r--r--test/psych/test_array.rb80
-rw-r--r--test/psych/test_boolean.rb37
-rw-r--r--test/psych/test_class.rb37
-rw-r--r--test/psych/test_coder.rb334
-rw-r--r--test/psych/test_date_time.rb90
-rw-r--r--test/psych/test_deprecated.rb91
-rw-r--r--test/psych/test_document.rb47
-rw-r--r--test/psych/test_emitter.rb112
-rw-r--r--test/psych/test_encoding.rb288
-rw-r--r--test/psych/test_exception.rb178
-rw-r--r--test/psych/test_hash.rb169
-rw-r--r--test/psych/test_json_tree.rb66
-rw-r--r--test/psych/test_marshalable.rb63
-rw-r--r--test/psych/test_merge_keys.rb191
-rw-r--r--test/psych/test_nil.rb19
-rw-r--r--test/psych/test_null.rb20
-rw-r--r--test/psych/test_numeric.rb58
-rw-r--r--test/psych/test_object.rb54
-rw-r--r--test/psych/test_object_references.rb76
-rw-r--r--test/psych/test_omap.rb76
-rw-r--r--test/psych/test_parser.rb400
-rw-r--r--test/psych/test_psych.rb441
-rw-r--r--test/psych/test_ractor.rb50
-rw-r--r--test/psych/test_safe_load.rb140
-rw-r--r--test/psych/test_scalar.rb17
-rw-r--r--test/psych/test_scalar_scanner.rb207
-rw-r--r--test/psych/test_serialize_subclasses.rb39
-rw-r--r--test/psych/test_set.rb50
-rw-r--r--test/psych/test_stream.rb110
-rw-r--r--test/psych/test_string.rb244
-rw-r--r--test/psych/test_struct.rb50
-rw-r--r--test/psych/test_symbol.rb26
-rw-r--r--test/psych/test_tree_builder.rb94
-rw-r--r--test/psych/test_yaml.rb1294
-rw-r--r--test/psych/test_yaml_special_cases.rb130
-rw-r--r--test/psych/test_yamldbm.rb193
-rw-r--r--test/psych/test_yamlstore.rb101
-rw-r--r--test/psych/visitors/test_depth_first.rb50
-rw-r--r--test/psych/visitors/test_emitter.rb145
-rw-r--r--test/psych/visitors/test_to_ruby.rb333
-rw-r--r--test/psych/visitors/test_yaml_tree.rb198
-rw-r--r--test/racc/assets/cadenza.y170
-rw-r--r--test/racc/assets/cast.y926
-rw-r--r--test/racc/assets/chk.y126
-rw-r--r--test/racc/assets/conf.y16
-rw-r--r--test/racc/assets/csspool.y729
-rw-r--r--test/racc/assets/digraph.y29
-rw-r--r--test/racc/assets/echk.y118
-rw-r--r--test/racc/assets/edtf.y583
-rw-r--r--test/racc/assets/err.y60
-rw-r--r--test/racc/assets/error_recovery.y35
-rw-r--r--test/racc/assets/expect.y7
-rw-r--r--test/racc/assets/firstline.y4
-rw-r--r--test/racc/assets/huia.y318
-rw-r--r--test/racc/assets/ichk.y102
-rw-r--r--test/racc/assets/ifelse.y14
-rw-r--r--test/racc/assets/intp.y546
-rw-r--r--test/racc/assets/journey.y47
-rw-r--r--test/racc/assets/liquor.y313
-rw-r--r--test/racc/assets/machete.y423
-rw-r--r--test/racc/assets/macruby.y2197
-rw-r--r--test/racc/assets/mailp.y437
-rw-r--r--test/racc/assets/mediacloth.y599
-rw-r--r--test/racc/assets/mof.y649
-rw-r--r--test/racc/assets/namae.y302
-rw-r--r--test/racc/assets/nasl.y626
-rw-r--r--test/racc/assets/newsyn.y25
-rw-r--r--test/racc/assets/noend.y4
-rw-r--r--test/racc/assets/nokogiri-css.y255
-rw-r--r--test/racc/assets/nonass.y41
-rw-r--r--test/racc/assets/normal.y27
-rw-r--r--test/racc/assets/norule.y4
-rw-r--r--test/racc/assets/nullbug1.y25
-rw-r--r--test/racc/assets/nullbug2.y15
-rw-r--r--test/racc/assets/opal.y1807
-rw-r--r--test/racc/assets/opt.y123
-rw-r--r--test/racc/assets/percent.y35
-rw-r--r--test/racc/assets/php_serialization.y98
-rw-r--r--test/racc/assets/recv.y97
-rw-r--r--test/racc/assets/riml.y665
-rw-r--r--test/racc/assets/rrconf.y14
-rw-r--r--test/racc/assets/ruby18.y1943
-rw-r--r--test/racc/assets/ruby19.y2174
-rw-r--r--test/racc/assets/ruby20.y2350
-rw-r--r--test/racc/assets/ruby21.y2359
-rw-r--r--test/racc/assets/ruby22.y2381
-rw-r--r--test/racc/assets/scan.y72
-rw-r--r--test/racc/assets/syntax.y50
-rw-r--r--test/racc/assets/tp_plus.y622
-rw-r--r--test/racc/assets/twowaysql.y278
-rw-r--r--test/racc/assets/unterm.y5
-rw-r--r--test/racc/assets/useless.y12
-rw-r--r--test/racc/assets/yyerr.y46
-rw-r--r--test/racc/bench.y36
-rw-r--r--test/racc/case.rb111
-rw-r--r--test/racc/infini.y8
-rw-r--r--test/racc/regress/README.txt7
-rw-r--r--test/racc/regress/cadenza796
-rw-r--r--test/racc/regress/cast3945
-rw-r--r--test/racc/regress/csspool2314
-rw-r--r--test/racc/regress/edtf1794
-rw-r--r--test/racc/regress/huia1681
-rw-r--r--test/racc/regress/journey222
-rw-r--r--test/racc/regress/liquor885
-rw-r--r--test/racc/regress/machete833
-rw-r--r--test/racc/regress/mediacloth1463
-rw-r--r--test/racc/regress/mof1368
-rw-r--r--test/racc/regress/namae634
-rw-r--r--test/racc/regress/nasl2548
-rw-r--r--test/racc/regress/nokogiri-css836
-rw-r--r--test/racc/regress/opal10107
-rw-r--r--test/racc/regress/php_serialization336
-rw-r--r--test/racc/regress/riml4037
-rw-r--r--test/racc/regress/ruby189945
-rw-r--r--test/racc/regress/ruby2211180
-rw-r--r--test/racc/regress/tp_plus1933
-rw-r--r--test/racc/regress/twowaysql556
-rw-r--r--test/racc/scandata/brace7
-rw-r--r--test/racc/scandata/gvar1
-rw-r--r--test/racc/scandata/normal4
-rw-r--r--test/racc/scandata/percent18
-rw-r--r--test/racc/scandata/slash10
-rw-r--r--test/racc/src.intp34
-rw-r--r--test/racc/start.y20
-rw-r--r--test/racc/test_chk_y.rb52
-rw-r--r--test/racc/test_grammar_file_parser.rb15
-rw-r--r--test/racc/test_racc_command.rb339
-rw-r--r--test/racc/test_scan_y.rb52
-rw-r--r--test/racc/testscanner.rb51
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Amps and angle encoding.text21
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Auto links.text13
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Backslash escapes.text120
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Blockquotes with code blocks.text11
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Code Blocks.text14
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Code Spans.text6
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Hard-wrapped paragraphs with list-like lines.text8
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Horizontal rules.text67
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Inline HTML (Advanced).text15
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Inline HTML (Simple).text69
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Inline HTML comments.text13
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Links, inline style.text12
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Links, reference style.text71
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Links, shortcut references.text20
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Literal quotes in titles.text7
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Markdown Documentation - Basics.text306
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Markdown Documentation - Syntax.text888
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Nested blockquotes.text5
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Ordered and unordered lists.text131
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Strong and em together.text7
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Tabs.text21
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Tidyness.text5
-rw-r--r--test/rdoc/README1
-rw-r--r--test/rdoc/binary.datbin0 -> 1024 bytes-rw-r--r--test/rdoc/helper.rb5
-rw-r--r--test/rdoc/hidden.zip.txt1
-rw-r--r--test/rdoc/support/formatter_test_case.rb764
-rw-r--r--test/rdoc/support/test_case.rb217
-rw-r--r--test/rdoc/support/text_formatter_test_case.rb115
-rw-r--r--test/rdoc/test.ja.largedoc3
-rw-r--r--test/rdoc/test.ja.rdoc10
-rw-r--r--test/rdoc/test.ja.txt8
-rw-r--r--test/rdoc/test.txt1
-rw-r--r--test/rdoc/test_rdoc_alias.rb13
-rw-r--r--test/rdoc/test_rdoc_any_method.rb571
-rw-r--r--test/rdoc/test_rdoc_attr.rb190
-rw-r--r--test/rdoc/test_rdoc_class_module.rb1503
-rw-r--r--test/rdoc/test_rdoc_code_object.rb440
-rw-r--r--test/rdoc/test_rdoc_comment.rb497
-rw-r--r--test/rdoc/test_rdoc_constant.rb182
-rw-r--r--test/rdoc/test_rdoc_context.rb965
-rw-r--r--test/rdoc/test_rdoc_context_section.rb147
-rw-r--r--test/rdoc/test_rdoc_cross_reference.rb219
-rw-r--r--test/rdoc/test_rdoc_encoding.rb184
-rw-r--r--test/rdoc/test_rdoc_extend.rb94
-rw-r--r--test/rdoc/test_rdoc_generator_darkfish.rb344
-rw-r--r--test/rdoc/test_rdoc_generator_json_index.rb361
-rw-r--r--test/rdoc/test_rdoc_generator_markup.rb60
-rw-r--r--test/rdoc/test_rdoc_generator_pot.rb92
-rw-r--r--test/rdoc/test_rdoc_generator_pot_po.rb52
-rw-r--r--test/rdoc/test_rdoc_generator_pot_po_entry.rb140
-rw-r--r--test/rdoc/test_rdoc_generator_ri.rb76
-rw-r--r--test/rdoc/test_rdoc_i18n_locale.rb74
-rw-r--r--test/rdoc/test_rdoc_i18n_text.rb124
-rw-r--r--test/rdoc/test_rdoc_include.rb109
-rw-r--r--test/rdoc/test_rdoc_markdown.rb1090
-rw-r--r--test/rdoc/test_rdoc_markdown_test.rb1883
-rw-r--r--test/rdoc/test_rdoc_markup.rb96
-rw-r--r--test/rdoc/test_rdoc_markup_attribute_manager.rb396
-rw-r--r--test/rdoc/test_rdoc_markup_attributes.rb40
-rw-r--r--test/rdoc/test_rdoc_markup_document.rb208
-rw-r--r--test/rdoc/test_rdoc_markup_formatter.rb175
-rw-r--r--test/rdoc/test_rdoc_markup_hard_break.rb32
-rw-r--r--test/rdoc/test_rdoc_markup_heading.rb30
-rw-r--r--test/rdoc/test_rdoc_markup_include.rb20
-rw-r--r--test/rdoc/test_rdoc_markup_indented_paragraph.rb54
-rw-r--r--test/rdoc/test_rdoc_markup_paragraph.rb33
-rw-r--r--test/rdoc/test_rdoc_markup_parser.rb1684
-rw-r--r--test/rdoc/test_rdoc_markup_pre_process.rb467
-rw-r--r--test/rdoc/test_rdoc_markup_raw.rb23
-rw-r--r--test/rdoc/test_rdoc_markup_to_ansi.rb370
-rw-r--r--test/rdoc/test_rdoc_markup_to_bs.rb352
-rw-r--r--test/rdoc/test_rdoc_markup_to_html.rb960
-rw-r--r--test/rdoc/test_rdoc_markup_to_html_crossref.rb268
-rw-r--r--test/rdoc/test_rdoc_markup_to_html_snippet.rb709
-rw-r--r--test/rdoc/test_rdoc_markup_to_joined_paragraph.rb33
-rw-r--r--test/rdoc/test_rdoc_markup_to_label.rb113
-rw-r--r--test/rdoc/test_rdoc_markup_to_markdown.rb390
-rw-r--r--test/rdoc/test_rdoc_markup_to_rdoc.rb378
-rw-r--r--test/rdoc/test_rdoc_markup_to_table_of_contents.rb127
-rw-r--r--test/rdoc/test_rdoc_markup_to_tt_only.rb247
-rw-r--r--test/rdoc/test_rdoc_markup_verbatim.rb30
-rw-r--r--test/rdoc/test_rdoc_method_attr.rb193
-rw-r--r--test/rdoc/test_rdoc_normal_class.rb47
-rw-r--r--test/rdoc/test_rdoc_normal_module.rb42
-rw-r--r--test/rdoc/test_rdoc_options.rb890
-rw-r--r--test/rdoc/test_rdoc_parser.rb323
-rw-r--r--test/rdoc/test_rdoc_parser_c.rb2071
-rw-r--r--test/rdoc/test_rdoc_parser_changelog.rb485
-rw-r--r--test/rdoc/test_rdoc_parser_markdown.rb62
-rw-r--r--test/rdoc/test_rdoc_parser_rd.rb56
-rw-r--r--test/rdoc/test_rdoc_parser_ruby.rb4361
-rw-r--r--test/rdoc/test_rdoc_parser_simple.rb116
-rw-r--r--test/rdoc/test_rdoc_rd.rb31
-rw-r--r--test/rdoc/test_rdoc_rd_block_parser.rb557
-rw-r--r--test/rdoc/test_rdoc_rd_inline.rb64
-rw-r--r--test/rdoc/test_rdoc_rd_inline_parser.rb178
-rw-r--r--test/rdoc/test_rdoc_rdoc.rb593
-rw-r--r--test/rdoc/test_rdoc_require.rb25
-rw-r--r--test/rdoc/test_rdoc_ri_driver.rb1561
-rw-r--r--test/rdoc/test_rdoc_ri_paths.rb158
-rw-r--r--test/rdoc/test_rdoc_rubygems_hook.rb287
-rw-r--r--test/rdoc/test_rdoc_servlet.rb555
-rw-r--r--test/rdoc/test_rdoc_single_class.rb21
-rw-r--r--test/rdoc/test_rdoc_stats.rb723
-rw-r--r--test/rdoc/test_rdoc_store.rb1012
-rw-r--r--test/rdoc/test_rdoc_task.rb173
-rw-r--r--test/rdoc/test_rdoc_text.rb585
-rw-r--r--test/rdoc/test_rdoc_token_stream.rb58
-rw-r--r--test/rdoc/test_rdoc_tom_doc.rb579
-rw-r--r--test/rdoc/test_rdoc_top_level.rb290
-rw-r--r--test/rdoc/xref_data.rb152
-rw-r--r--test/rdoc/xref_test_case.rb94
-rw-r--r--test/readline/helper.rb29
-rw-r--r--test/readline/test_readline.rb955
-rw-r--r--test/readline/test_readline_history.rb292
-rw-r--r--test/reline/helper.rb125
-rw-r--r--test/reline/test_config.rb412
-rw-r--r--test/reline/test_history.rb308
-rw-r--r--test/reline/test_key_actor_emacs.rb2354
-rw-r--r--test/reline/test_key_actor_vi.rb1465
-rw-r--r--test/reline/test_key_stroke.rb79
-rw-r--r--test/reline/test_kill_ring.rb268
-rw-r--r--test/reline/test_macro.rb41
-rw-r--r--test/reline/test_reline.rb386
-rw-r--r--test/reline/test_reline_key.rb53
-rw-r--r--test/reline/test_string_processing.rb81
-rw-r--r--test/reline/test_terminfo.rb61
-rw-r--r--test/reline/test_unicode.rb25
-rw-r--r--test/reline/test_within_pipe.rb78
-rw-r--r--test/reline/windows/test_key_event_record.rb41
-rwxr-xr-xtest/reline/yamatanooroti/multiline_repl215
-rw-r--r--test/reline/yamatanooroti/termination_checker.rb30
-rw-r--r--test/reline/yamatanooroti/test_rendering.rb1345
-rw-r--r--test/resolv/test_addr.rb67
-rw-r--r--test/resolv/test_dns.rb467
-rw-r--r--test/resolv/test_mdns.rb27
-rw-r--r--test/resolv/test_resource.rb26
-rw-r--r--test/rinda/test_rinda.rb912
-rw-r--r--test/rinda/test_tuplebag.rb173
-rw-r--r--test/ripper/assert_parse_files.rb32
-rw-r--r--test/ripper/dummyparser.rb288
-rw-r--r--test/ripper/test_files_ext.rb8
-rw-r--r--test/ripper/test_files_lib.rb14
-rw-r--r--test/ripper/test_files_sample.rb8
-rw-r--r--test/ripper/test_files_test.rb8
-rw-r--r--test/ripper/test_files_test_1.rb9
-rw-r--r--test/ripper/test_files_test_2.rb9
-rw-r--r--test/ripper/test_filter.rb95
-rw-r--r--test/ripper/test_lexer.rb317
-rw-r--r--test/ripper/test_parser_events.rb1713
-rw-r--r--test/ripper/test_ripper.rb183
-rw-r--r--test/ripper/test_scanner_events.rb1011
-rw-r--r--test/ripper/test_sexp.rb537
-rw-r--r--test/ruby/allpairs.rb103
-rw-r--r--test/ruby/beginmainend.rb79
-rw-r--r--test/ruby/bug-11928.rb14
-rw-r--r--test/ruby/bug-13526.rb22
-rw-r--r--test/ruby/enc/test_big5.rb29
-rw-r--r--test/ruby/enc/test_case_comprehensive.rb307
-rw-r--r--test/ruby/enc/test_case_mapping.rb231
-rw-r--r--test/ruby/enc/test_case_options.rb81
-rw-r--r--test/ruby/enc/test_cesu8.rb113
-rw-r--r--test/ruby/enc/test_cp949.rb29
-rw-r--r--test/ruby/enc/test_emoji.rb443
-rw-r--r--test/ruby/enc/test_emoji_breaks.rb155
-rw-r--r--test/ruby/enc/test_euc_jp.rb25
-rw-r--r--test/ruby/enc/test_euc_kr.rb37
-rw-r--r--test/ruby/enc/test_euc_tw.rb29
-rw-r--r--test/ruby/enc/test_gb18030.rb127
-rw-r--r--test/ruby/enc/test_gbk.rb29
-rw-r--r--test/ruby/enc/test_grapheme_breaks.rb92
-rw-r--r--test/ruby/enc/test_iso_8859.rb166
-rw-r--r--test/ruby/enc/test_koi8.rb23
-rw-r--r--test/ruby/enc/test_regex_casefold.rb120
-rw-r--r--test/ruby/enc/test_shift_jis.rb28
-rw-r--r--test/ruby/enc/test_utf16.rb397
-rw-r--r--test/ruby/enc/test_utf32.rb162
-rw-r--r--test/ruby/enc/test_windows_1251.rb17
-rw-r--r--test/ruby/enc/test_windows_1252.rb26
-rw-r--r--test/ruby/lbtest.rb49
-rw-r--r--test/ruby/marshaltestlib.rb439
-rw-r--r--test/ruby/sentence.rb669
-rw-r--r--test/ruby/test_alias.rb295
-rw-r--r--test/ruby/test_argf.rb1144
-rw-r--r--test/ruby/test_arithmetic_sequence.rb491
-rw-r--r--test/ruby/test_arity.rb70
-rw-r--r--test/ruby/test_array.rb3567
-rw-r--r--test/ruby/test_assignment.rb964
-rw-r--r--test/ruby/test_ast.rb1063
-rw-r--r--test/ruby/test_autoload.rb598
-rw-r--r--test/ruby/test_backtrace.rb431
-rw-r--r--test/ruby/test_basicinstructions.rb725
-rw-r--r--test/ruby/test_beginendblock.rb179
-rw-r--r--test/ruby/test_bignum.rb825
-rw-r--r--test/ruby/test_call.rb118
-rw-r--r--test/ruby/test_case.rb158
-rw-r--r--test/ruby/test_class.rb828
-rw-r--r--test/ruby/test_clone.rb117
-rw-r--r--test/ruby/test_comparable.rb145
-rw-r--r--test/ruby/test_complex.rb1197
-rw-r--r--test/ruby/test_complex2.rb736
-rw-r--r--test/ruby/test_complexrational.rb408
-rw-r--r--test/ruby/test_condition.rb17
-rw-r--r--test/ruby/test_const.rb93
-rw-r--r--test/ruby/test_continuation.rb145
-rw-r--r--test/ruby/test_data.rb249
-rw-r--r--test/ruby/test_default_gems.rb16
-rw-r--r--test/ruby/test_defined.rb419
-rw-r--r--test/ruby/test_dir.rb651
-rw-r--r--test/ruby/test_dir_m17n.rb428
-rw-r--r--test/ruby/test_dup.rb110
-rw-r--r--test/ruby/test_econv.rb943
-rw-r--r--test/ruby/test_encoding.rb177
-rw-r--r--test/ruby/test_enum.rb1337
-rw-r--r--test/ruby/test_enumerator.rb1026
-rw-r--r--test/ruby/test_env.rb1497
-rw-r--r--test/ruby/test_eval.rb606
-rw-r--r--test/ruby/test_exception.rb1525
-rw-r--r--test/ruby/test_fiber.rb496
-rw-r--r--test/ruby/test_file.rb557
-rw-r--r--test/ruby/test_file_exhaustive.rb1799
-rw-r--r--test/ruby/test_fixnum.rb351
-rw-r--r--test/ruby/test_flip.rb75
-rw-r--r--test/ruby/test_float.rb1026
-rw-r--r--test/ruby/test_fnmatch.rb169
-rw-r--r--test/ruby/test_frozen.rb30
-rw-r--r--test/ruby/test_frozen_error.rb57
-rw-r--r--test/ruby/test_gc.rb636
-rw-r--r--test/ruby/test_gc_compact.rb456
-rw-r--r--test/ruby/test_hash.rb2292
-rw-r--r--test/ruby/test_ifunless.rb15
-rw-r--r--test/ruby/test_inlinecache.rb110
-rw-r--r--test/ruby/test_insns_leaf.rb46
-rw-r--r--test/ruby/test_integer.rb737
-rw-r--r--test/ruby/test_integer_comb.rb634
-rw-r--r--test/ruby/test_io.rb4174
-rw-r--r--test/ruby/test_io_buffer.rb562
-rw-r--r--test/ruby/test_io_m17n.rb2757
-rw-r--r--test/ruby/test_io_timeout.rb58
-rw-r--r--test/ruby/test_iseq.rb805
-rw-r--r--test/ruby/test_iterator.rb506
-rw-r--r--test/ruby/test_key_error.rb42
-rw-r--r--test/ruby/test_keyword.rb4418
-rw-r--r--test/ruby/test_lambda.rb354
-rw-r--r--test/ruby/test_lazy_enumerator.rb709
-rw-r--r--test/ruby/test_literal.rb656
-rw-r--r--test/ruby/test_m17n.rb1712
-rw-r--r--test/ruby/test_m17n_comb.rb1674
-rw-r--r--test/ruby/test_marshal.rb958
-rw-r--r--test/ruby/test_math.rb363
-rw-r--r--test/ruby/test_memory_view.rb341
-rw-r--r--test/ruby/test_metaclass.rb168
-rw-r--r--test/ruby/test_method.rb1619
-rw-r--r--test/ruby/test_method_cache.rb76
-rw-r--r--test/ruby/test_mixed_unicode_escapes.rb30
-rw-r--r--test/ruby/test_mjit.rb1327
-rw-r--r--test/ruby/test_mjit_debug.rb17
-rw-r--r--test/ruby/test_module.rb3366
-rw-r--r--test/ruby/test_name_error.rb156
-rw-r--r--test/ruby/test_nomethod_error.rb109
-rw-r--r--test/ruby/test_not.rb13
-rw-r--r--test/ruby/test_numeric.rb488
-rw-r--r--test/ruby/test_object.rb1027
-rw-r--r--test/ruby/test_objectspace.rb282
-rw-r--r--test/ruby/test_optimization.rb950
-rw-r--r--test/ruby/test_pack.rb894
-rw-r--r--test/ruby/test_parse.rb1435
-rw-r--r--test/ruby/test_path.rb267
-rw-r--r--test/ruby/test_pattern_matching.rb1713
-rw-r--r--test/ruby/test_pipe.rb49
-rw-r--r--test/ruby/test_primitive.rb452
-rw-r--r--test/ruby/test_proc.rb1885
-rw-r--r--test/ruby/test_process.rb2777
-rw-r--r--test/ruby/test_rand.rb437
-rw-r--r--test/ruby/test_random_formatter.rb123
-rw-r--r--test/ruby/test_range.rb1081
-rw-r--r--test/ruby/test_rational.rb1098
-rw-r--r--test/ruby/test_rational2.rb1387
-rw-r--r--test/ruby/test_readpartial.rb73
-rw-r--r--test/ruby/test_refinement.rb2634
-rw-r--r--test/ruby/test_regexp.rb1841
-rw-r--r--test/ruby/test_require.rb1013
-rw-r--r--test/ruby/test_require_lib.rb27
-rw-r--r--test/ruby/test_rubyoptions.rb1158
-rw-r--r--test/ruby/test_rubyvm.rb71
-rw-r--r--test/ruby/test_rubyvm_mjit.rb105
-rw-r--r--test/ruby/test_settracefunc.rb2805
-rw-r--r--test/ruby/test_shapes.rb441
-rw-r--r--test/ruby/test_signal.rb388
-rw-r--r--test/ruby/test_sleep.rb17
-rw-r--r--test/ruby/test_sprintf.rb558
-rw-r--r--test/ruby/test_sprintf_comb.rb554
-rw-r--r--test/ruby/test_stack.rb82
-rw-r--r--test/ruby/test_string.rb3511
-rw-r--r--test/ruby/test_stringchar.rb182
-rw-r--r--test/ruby/test_struct.rb561
-rw-r--r--test/ruby/test_super.rb729
-rw-r--r--test/ruby/test_symbol.rb621
-rw-r--r--test/ruby/test_syntax.rb2027
-rw-r--r--test/ruby/test_system.rb204
-rw-r--r--test/ruby/test_thread.rb1527
-rw-r--r--test/ruby/test_thread_cv.rb252
-rw-r--r--test/ruby/test_thread_queue.rb708
-rw-r--r--test/ruby/test_threadgroup.rb57
-rw-r--r--test/ruby/test_time.rb1443
-rw-r--r--test/ruby/test_time_tz.rb829
-rw-r--r--test/ruby/test_trace.rb51
-rw-r--r--test/ruby/test_transcode.rb2311
-rw-r--r--test/ruby/test_undef.rb54
-rw-r--r--test/ruby/test_unicode_escape.rb272
-rw-r--r--test/ruby/test_variable.rb327
-rw-r--r--test/ruby/test_vm_dump.rb23
-rw-r--r--test/ruby/test_weakmap.rb216
-rw-r--r--test/ruby/test_whileuntil.rb83
-rw-r--r--test/ruby/test_yield.rb425
-rw-r--r--test/ruby/test_yjit.rb1333
-rw-r--r--test/ruby/test_yjit_exit_locations.rb110
-rw-r--r--test/ruby/ut_eof.rb129
-rw-r--r--test/rubygems/alternate_cert.pem19
-rw-r--r--test/rubygems/alternate_cert_32.pem19
-rw-r--r--test/rubygems/alternate_key.pem27
-rw-r--r--test/rubygems/bad_rake.rb3
-rw-r--r--test/rubygems/bundler_test_gem.rb421
-rw-r--r--test/rubygems/ca_cert.pem77
-rw-r--r--test/rubygems/child_cert.pem19
-rw-r--r--test/rubygems/child_cert_32.pem19
-rw-r--r--test/rubygems/child_key.pem27
-rw-r--r--test/rubygems/client.pem107
-rw-r--r--test/rubygems/data/excon-0.7.7.gemspec.rzbin0 -> 388 bytes-rw-r--r--test/rubygems/data/gem-private_key.pem27
-rw-r--r--test/rubygems/data/gem-public_cert.pem20
-rw-r--r--test/rubygems/data/null-required-ruby-version.gemspec.rzbin0 -> 403 bytes-rw-r--r--test/rubygems/data/null-required-rubygems-version.gemspec.rzbin0 -> 421 bytes-rw-r--r--test/rubygems/data/pry-0.4.7.gemspec.rzbin0 -> 433 bytes-rw-r--r--test/rubygems/encrypted_private_key.pem30
-rw-r--r--test/rubygems/expired_cert.pem19
-rw-r--r--test/rubygems/fake_certlib/openssl.rb9
-rw-r--r--test/rubygems/foo/discover.rb1
-rw-r--r--test/rubygems/future_cert.pem19
-rw-r--r--test/rubygems/future_cert_32.pem19
-rw-r--r--test/rubygems/good_rake.rb3
-rw-r--r--test/rubygems/grandchild_cert.pem19
-rw-r--r--test/rubygems/grandchild_cert_32.pem19
-rw-r--r--test/rubygems/grandchild_key.pem27
-rw-r--r--test/rubygems/helper.rb1643
-rw-r--r--test/rubygems/installer_test_case.rb248
-rw-r--r--test/rubygems/invalid_client.pem49
-rw-r--r--test/rubygems/invalid_issuer_cert.pem20
-rw-r--r--test/rubygems/invalid_issuer_cert_32.pem20
-rw-r--r--test/rubygems/invalid_key.pem27
-rw-r--r--test/rubygems/invalid_signer_cert.pem19
-rw-r--r--test/rubygems/invalid_signer_cert_32.pem19
-rw-r--r--test/rubygems/invalidchild_cert.pem19
-rw-r--r--test/rubygems/invalidchild_cert_32.pem19
-rw-r--r--test/rubygems/invalidchild_key.pem27
-rw-r--r--test/rubygems/multifactor_auth_utilities.rb111
-rw-r--r--test/rubygems/package/tar_test_case.rb175
-rw-r--r--test/rubygems/packages/Bluebie-legs-0.6.2.gembin0 -> 14336 bytes-rw-r--r--test/rubygems/packages/ascii_binder-0.1.10.1.gembin0 -> 244736 bytes-rw-r--r--test/rubygems/packages/ill-formatted-platform-1.0.0.10.gembin0 -> 10240 bytes-rw-r--r--test/rubygems/plugin/exception/rubygems_plugin.rb4
-rw-r--r--test/rubygems/plugin/load/rubygems_plugin.rb5
-rw-r--r--test/rubygems/plugin/standarderror/rubygems_plugin.rb4
-rw-r--r--test/rubygems/private3072_key.pem40
-rw-r--r--test/rubygems/private_ec_key.pem9
-rw-r--r--test/rubygems/private_key.pem27
-rw-r--r--test/rubygems/public3072_cert.pem25
-rw-r--r--test/rubygems/public_cert.pem20
-rw-r--r--test/rubygems/public_cert_32.pem19
-rw-r--r--test/rubygems/public_key.pem9
-rw-r--r--test/rubygems/rubygems/commands/crash_command.rb5
-rw-r--r--test/rubygems/rubygems_plugin.rb24
-rw-r--r--test/rubygems/sff/discover.rb1
-rw-r--r--test/rubygems/simple_gem.rb68
-rw-r--r--test/rubygems/specifications/bar-0.0.2.gemspec9
-rw-r--r--test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspecbin0 -> 269 bytes-rw-r--r--test/rubygems/specifications/rubyforge-0.0.1.gemspec14
-rw-r--r--test/rubygems/ssl_cert.pem80
-rw-r--r--test/rubygems/ssl_key.pem27
-rw-r--r--test/rubygems/test_bundled_ca.rb61
-rw-r--r--test/rubygems/test_config.rb28
-rw-r--r--test/rubygems/test_deprecate.rb158
-rw-r--r--test/rubygems/test_exit.rb17
-rw-r--r--test/rubygems/test_gem.rb1774
-rw-r--r--test/rubygems/test_gem_available_set.rb130
-rw-r--r--test/rubygems/test_gem_bundler_version_finder.rb127
-rw-r--r--test/rubygems/test_gem_command.rb401
-rw-r--r--test/rubygems/test_gem_command_manager.rb400
-rw-r--r--test/rubygems/test_gem_commands_build_command.rb738
-rw-r--r--test/rubygems/test_gem_commands_cert_command.rb866
-rw-r--r--test/rubygems/test_gem_commands_check_command.rb68
-rw-r--r--test/rubygems/test_gem_commands_cleanup_command.rb292
-rw-r--r--test/rubygems/test_gem_commands_contents_command.rb271
-rw-r--r--test/rubygems/test_gem_commands_dependency_command.rb228
-rw-r--r--test/rubygems/test_gem_commands_environment_command.rb168
-rw-r--r--test/rubygems/test_gem_commands_exec_command.rb853
-rw-r--r--test/rubygems/test_gem_commands_fetch_command.rb258
-rw-r--r--test/rubygems/test_gem_commands_generate_index_command.rb81
-rw-r--r--test/rubygems/test_gem_commands_help_command.rb94
-rw-r--r--test/rubygems/test_gem_commands_info_command.rb70
-rw-r--r--test/rubygems/test_gem_commands_install_command.rb1573
-rw-r--r--test/rubygems/test_gem_commands_list_command.rb33
-rw-r--r--test/rubygems/test_gem_commands_lock_command.rb67
-rw-r--r--test/rubygems/test_gem_commands_mirror.rb20
-rw-r--r--test/rubygems/test_gem_commands_open_command.rb98
-rw-r--r--test/rubygems/test_gem_commands_outdated_command.rb50
-rw-r--r--test/rubygems/test_gem_commands_owner_command.rb503
-rw-r--r--test/rubygems/test_gem_commands_pristine_command.rb708
-rw-r--r--test/rubygems/test_gem_commands_push_command.rb602
-rw-r--r--test/rubygems/test_gem_commands_query_command.rb858
-rw-r--r--test/rubygems/test_gem_commands_search_command.rb16
-rw-r--r--test/rubygems/test_gem_commands_server_command.rb20
-rw-r--r--test/rubygems/test_gem_commands_setup_command.rb474
-rw-r--r--test/rubygems/test_gem_commands_signin_command.rb259
-rw-r--r--test/rubygems/test_gem_commands_signout_command.rb30
-rw-r--r--test/rubygems/test_gem_commands_sources_command.rb534
-rw-r--r--test/rubygems/test_gem_commands_specification_command.rb277
-rw-r--r--test/rubygems/test_gem_commands_stale_command.rb43
-rw-r--r--test/rubygems/test_gem_commands_uninstall_command.rb522
-rw-r--r--test/rubygems/test_gem_commands_unpack_command.rb224
-rw-r--r--test/rubygems/test_gem_commands_update_command.rb836
-rw-r--r--test/rubygems/test_gem_commands_which_command.rb85
-rw-r--r--test/rubygems/test_gem_commands_yank_command.rb299
-rw-r--r--test/rubygems/test_gem_config_file.rb517
-rw-r--r--test/rubygems/test_gem_dependency.rb398
-rw-r--r--test/rubygems/test_gem_dependency_installer.rb1190
-rw-r--r--test/rubygems/test_gem_dependency_list.rb265
-rw-r--r--test/rubygems/test_gem_dependency_resolution_error.rb27
-rw-r--r--test/rubygems/test_gem_doctor.rb195
-rw-r--r--test/rubygems/test_gem_ext_builder.rb337
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder.rb167
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore1
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec10
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock233
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml10
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs27
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb3
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore1
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock247
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml10
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec10
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs51
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb34
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder_unit.rb60
-rw-r--r--test/rubygems/test_gem_ext_cmake_builder.rb84
-rw-r--r--test/rubygems/test_gem_ext_configure_builder.rb80
-rw-r--r--test/rubygems/test_gem_ext_ext_conf_builder.rb229
-rw-r--r--test/rubygems/test_gem_ext_rake_builder.rb113
-rw-r--r--test/rubygems/test_gem_gem_runner.rb119
-rw-r--r--test/rubygems/test_gem_gemcutter_utilities.rb358
-rw-r--r--test/rubygems/test_gem_impossible_dependencies_error.rb60
-rw-r--r--test/rubygems/test_gem_indexer.rb381
-rw-r--r--test/rubygems/test_gem_install_update_options.rb208
-rw-r--r--test/rubygems/test_gem_installer.rb2512
-rw-r--r--test/rubygems/test_gem_local_remote_options.rb133
-rw-r--r--test/rubygems/test_gem_name_tuple.rb43
-rw-r--r--test/rubygems/test_gem_package.rb1190
-rw-r--r--test/rubygems/test_gem_package_old.rb91
-rw-r--r--test/rubygems/test_gem_package_tar_header.rb226
-rw-r--r--test/rubygems/test_gem_package_tar_reader.rb135
-rw-r--r--test/rubygems/test_gem_package_tar_reader_entry.rb298
-rw-r--r--test/rubygems/test_gem_package_tar_writer.rb331
-rw-r--r--test/rubygems/test_gem_package_task.rb118
-rw-r--r--test/rubygems/test_gem_path_support.rb139
-rw-r--r--test/rubygems/test_gem_platform.rb497
-rw-r--r--test/rubygems/test_gem_rdoc.rb137
-rw-r--r--test/rubygems/test_gem_remote_fetcher.rb1227
-rw-r--r--test/rubygems/test_gem_request.rb547
-rw-r--r--test/rubygems/test_gem_request_connection_pools.rb151
-rw-r--r--test/rubygems/test_gem_request_set.rb672
-rw-r--r--test/rubygems/test_gem_request_set_gem_dependency_api.rb846
-rw-r--r--test/rubygems/test_gem_request_set_lockfile.rb469
-rw-r--r--test/rubygems/test_gem_request_set_lockfile_parser.rb544
-rw-r--r--test/rubygems/test_gem_request_set_lockfile_tokenizer.rb307
-rw-r--r--test/rubygems/test_gem_requirement.rb505
-rw-r--r--test/rubygems/test_gem_resolver.rb859
-rw-r--r--test/rubygems/test_gem_resolver_activation_request.rb43
-rw-r--r--test/rubygems/test_gem_resolver_api_set.rb210
-rw-r--r--test/rubygems/test_gem_resolver_api_specification.rb167
-rw-r--r--test/rubygems/test_gem_resolver_best_set.rb159
-rw-r--r--test/rubygems/test_gem_resolver_composed_set.rb44
-rw-r--r--test/rubygems/test_gem_resolver_conflict.rb82
-rw-r--r--test/rubygems/test_gem_resolver_dependency_request.rb83
-rw-r--r--test/rubygems/test_gem_resolver_git_set.rb188
-rw-r--r--test/rubygems/test_gem_resolver_git_specification.rb114
-rw-r--r--test/rubygems/test_gem_resolver_index_set.rb88
-rw-r--r--test/rubygems/test_gem_resolver_index_specification.rb93
-rw-r--r--test/rubygems/test_gem_resolver_installed_specification.rb47
-rw-r--r--test/rubygems/test_gem_resolver_installer_set.rb320
-rw-r--r--test/rubygems/test_gem_resolver_local_specification.rb44
-rw-r--r--test/rubygems/test_gem_resolver_lock_set.rb62
-rw-r--r--test/rubygems/test_gem_resolver_lock_specification.rb98
-rw-r--r--test/rubygems/test_gem_resolver_requirement_list.rb19
-rw-r--r--test/rubygems/test_gem_resolver_specification.rb63
-rw-r--r--test/rubygems/test_gem_resolver_vendor_set.rb82
-rw-r--r--test/rubygems/test_gem_resolver_vendor_specification.rb82
-rw-r--r--test/rubygems/test_gem_security.rb341
-rw-r--r--test/rubygems/test_gem_security_policy.rb535
-rw-r--r--test/rubygems/test_gem_security_signer.rb218
-rw-r--r--test/rubygems/test_gem_security_trust_dir.rb99
-rw-r--r--test/rubygems/test_gem_silent_ui.rb123
-rw-r--r--test/rubygems/test_gem_source.rb254
-rw-r--r--test/rubygems/test_gem_source_fetch_problem.rb37
-rw-r--r--test/rubygems/test_gem_source_git.rb310
-rw-r--r--test/rubygems/test_gem_source_installed.rb35
-rw-r--r--test/rubygems/test_gem_source_list.rb119
-rw-r--r--test/rubygems/test_gem_source_local.rb107
-rw-r--r--test/rubygems/test_gem_source_lock.rb113
-rw-r--r--test/rubygems/test_gem_source_specific_file.rb76
-rw-r--r--test/rubygems/test_gem_source_subpath_problem.rb50
-rw-r--r--test/rubygems/test_gem_source_vendor.rb30
-rw-r--r--test/rubygems/test_gem_spec_fetcher.rb338
-rw-r--r--test/rubygems/test_gem_specification.rb3820
-rw-r--r--test/rubygems/test_gem_stream_ui.rb255
-rw-r--r--test/rubygems/test_gem_stub_specification.rb278
-rw-r--r--test/rubygems/test_gem_text.rb103
-rw-r--r--test/rubygems/test_gem_uninstaller.rb675
-rw-r--r--test/rubygems/test_gem_unsatisfiable_dependency_error.rb31
-rw-r--r--test/rubygems/test_gem_update_suggestion.rb209
-rw-r--r--test/rubygems/test_gem_uri.rb41
-rw-r--r--test/rubygems/test_gem_uri_formatter.rb27
-rw-r--r--test/rubygems/test_gem_util.rb91
-rw-r--r--test/rubygems/test_gem_validator.rb42
-rw-r--r--test/rubygems/test_gem_version.rb303
-rw-r--r--test/rubygems/test_gem_version_option.rb165
-rw-r--r--test/rubygems/test_kernel.rb124
-rw-r--r--test/rubygems/test_project_sanity.rb49
-rw-r--r--test/rubygems/test_remote_fetch_error.rb20
-rw-r--r--test/rubygems/test_require.rb734
-rw-r--r--test/rubygems/test_rubygems.rb76
-rw-r--r--test/rubygems/test_webauthn_listener.rb143
-rw-r--r--test/rubygems/test_webauthn_listener_response.rb93
-rw-r--r--test/rubygems/test_webauthn_poller.rb124
-rw-r--r--test/rubygems/utilities.rb435
-rw-r--r--test/rubygems/wrong_key_cert.pem19
-rw-r--r--test/rubygems/wrong_key_cert_32.pem19
-rw-r--r--test/runner.rb16
-rw-r--r--test/socket/test_addrinfo.rb704
-rw-r--r--test/socket/test_ancdata.rb68
-rw-r--r--test/socket/test_basicsocket.rb228
-rw-r--r--test/socket/test_nonblock.rb399
-rw-r--r--test/socket/test_socket.rb765
-rw-r--r--test/socket/test_sockopt.rb80
-rw-r--r--test/socket/test_tcp.rb143
-rw-r--r--test/socket/test_udp.rb116
-rw-r--r--test/socket/test_unix.rb784
-rw-r--r--test/stringio/test_ractor.rb23
-rw-r--r--test/stringio/test_stringio.rb921
-rw-r--r--test/strscan/test_ractor.rb28
-rw-r--r--test/strscan/test_stringscanner.rb834
-rw-r--r--test/syslog/test_syslog_logger.rb588
-rw-r--r--test/test_abbrev.rb55
-rw-r--r--test/test_delegate.rb402
-rw-r--r--test/test_extlibs.rb79
-rw-r--r--test/test_find.rb334
-rw-r--r--test/test_forwardable.rb402
-rw-r--r--test/test_getoptlong.rb163
-rw-r--r--test/test_ipaddr.rb475
-rw-r--r--test/test_mutex_m.rb58
-rw-r--r--test/test_observer.rb66
-rw-r--r--test/test_open3.rb343
-rw-r--r--test/test_pp.rb244
-rw-r--r--test/test_prettyprint.rb521
-rw-r--r--test/test_pstore.rb182
-rw-r--r--test/test_pty.rb239
-rw-r--r--test/test_rbconfig.rb54
-rw-r--r--test/test_securerandom.rb86
-rw-r--r--test/test_set.rb879
-rw-r--r--test/test_shellwords.rb131
-rw-r--r--test/test_singleton.rb104
-rw-r--r--test/test_sorted_set.rb45
-rw-r--r--test/test_syslog.rb193
-rw-r--r--test/test_tempfile.rb405
-rw-r--r--test/test_time.rb597
-rw-r--r--test/test_timeout.rb175
-rw-r--r--test/test_tmpdir.rb118
-rw-r--r--test/test_trick.rb214
-rw-r--r--test/test_tsort.rb115
-rw-r--r--test/test_unicode_normalize.rb212
-rw-r--r--test/test_weakref.rb72
-rw-r--r--test/uri/test_common.rb297
-rw-r--r--test/uri/test_file.rb67
-rw-r--r--test/uri/test_ftp.rb67
-rw-r--r--test/uri/test_generic.rb1084
-rw-r--r--test/uri/test_http.rb87
-rw-r--r--test/uri/test_ldap.rb105
-rw-r--r--test/uri/test_mailto.rb191
-rw-r--r--test/uri/test_parser.rb104
-rw-r--r--test/uri/test_ws.rb71
-rw-r--r--test/uri/test_wss.rb71
-rw-r--r--test/win32ole/available_ole.rb41
-rw-r--r--test/win32ole/err_in_callback.rb10
-rw-r--r--test/win32ole/orig_data.csv5
-rw-r--r--test/win32ole/test_err_in_callback.rb56
-rw-r--r--test/win32ole/test_folderitem2_invokeverb.rb66
-rw-r--r--test/win32ole/test_nil2vtempty.rb37
-rw-r--r--test/win32ole/test_ole_methods.rb35
-rw-r--r--test/win32ole/test_propertyputref.rb31
-rw-r--r--test/win32ole/test_thread.rb34
-rw-r--r--test/win32ole/test_win32ole.rb534
-rw-r--r--test/win32ole/test_win32ole_event.rb407
-rw-r--r--test/win32ole/test_win32ole_method.rb134
-rw-r--r--test/win32ole/test_win32ole_method_event.rb36
-rw-r--r--test/win32ole/test_win32ole_param.rb98
-rw-r--r--test/win32ole/test_win32ole_param_event.rb30
-rw-r--r--test/win32ole/test_win32ole_record.rb209
-rw-r--r--test/win32ole/test_win32ole_type.rb200
-rw-r--r--test/win32ole/test_win32ole_type_event.rb44
-rw-r--r--test/win32ole/test_win32ole_typelib.rb117
-rw-r--r--test/win32ole/test_win32ole_variable.rb66
-rw-r--r--test/win32ole/test_win32ole_variant.rb722
-rw-r--r--test/win32ole/test_win32ole_variant_m.rb36
-rw-r--r--test/win32ole/test_win32ole_variant_outarg.rb69
-rw-r--r--test/win32ole/test_word.rb73
-rw-r--r--test/yaml/test_store.rb180
-rw-r--r--test/zlib/test_zlib.rb1462
-rw-r--r--thread.c5801
-rw-r--r--thread_none.c284
-rw-r--r--thread_none.h20
-rw-r--r--thread_pthread.c2428
-rw-r--r--thread_pthread.h133
-rw-r--r--thread_sync.c1641
-rw-r--r--thread_sync.rb68
-rw-r--r--thread_win32.c885
-rw-r--r--thread_win32.h63
-rw-r--r--time.c6231
-rw-r--r--timev.h58
-rw-r--r--timev.rb404
-rw-r--r--tool/annocheck/Dockerfile4
-rw-r--r--tool/annocheck/Dockerfile-copy7
-rw-r--r--tool/asm_parse.rb53
-rwxr-xr-xtool/bisect.sh65
-rwxr-xr-xtool/build-transcode16
-rw-r--r--tool/bundler/dev_gems.rb19
-rw-r--r--tool/bundler/dev_gems.rb.lock57
-rw-r--r--tool/bundler/rubocop_gems.rb12
-rw-r--r--tool/bundler/rubocop_gems.rb.lock73
-rw-r--r--tool/bundler/standard_gems.rb12
-rw-r--r--tool/bundler/standard_gems.rb.lock81
-rw-r--r--tool/bundler/test_gems.rb12
-rw-r--r--tool/bundler/test_gems.rb.lock45
-rwxr-xr-xtool/checksum.rb70
-rw-r--r--tool/ci_functions.sh29
-rw-r--r--tool/colors3
-rwxr-xr-xtool/darwin-cc6
-rwxr-xr-xtool/disable_ipv6.sh9
-rw-r--r--tool/downloader.rb461
-rwxr-xr-xtool/enc-case-folding.rb416
-rw-r--r--tool/enc-emoji-citrus-gen.rb131
-rw-r--r--tool/enc-emoji4unicode.rb133
-rwxr-xr-xtool/enc-unicode.rb574
-rw-r--r--tool/eval.rb158
-rwxr-xr-xtool/expand-config.rb43
-rwxr-xr-xtool/extlibs.rb285
-rw-r--r--tool/fake.rb70
-rwxr-xr-xtool/fetch-bundled_gems.rb31
-rwxr-xr-xtool/file2lastrev.rb105
-rwxr-xr-xtool/format-release262
-rwxr-xr-xtool/gen-mailmap.rb47
-rwxr-xr-xtool/gen_dummy_probes.rb32
-rwxr-xr-xtool/gen_ruby_tapset.rb105
-rw-r--r--tool/generic_erb.rb39
-rwxr-xr-xtool/git-refresh46
-rw-r--r--tool/gperf.sed23
-rwxr-xr-xtool/id2token.rb23
-rwxr-xr-xtool/ifchange119
-rwxr-xr-xtool/insns2vm.rb15
-rw-r--r--tool/install-sh17
-rwxr-xr-xtool/intern_ids.rb35
-rwxr-xr-xtool/leaked-globals65
-rw-r--r--tool/lib/-test-/integer.rb14
-rw-r--r--tool/lib/bundled_gem.rb68
-rw-r--r--tool/lib/colorize.rb55
-rw-r--r--tool/lib/core_assertions.rb821
-rw-r--r--tool/lib/envutil.rb380
-rw-r--r--tool/lib/find_executable.rb22
-rw-r--r--tool/lib/gc_checker.rb36
-rw-r--r--tool/lib/iseq_loader_checker.rb81
-rw-r--r--tool/lib/jisx0208.rb86
-rw-r--r--tool/lib/leakchecker.rb321
-rw-r--r--tool/lib/memory_status.rb151
-rw-r--r--tool/lib/output.rb57
-rw-r--r--tool/lib/profile_test_all.rb91
-rw-r--r--tool/lib/test/unit.rb1822
-rw-r--r--tool/lib/test/unit/assertions.rb833
-rw-r--r--tool/lib/test/unit/parallel.rb212
-rw-r--r--tool/lib/test/unit/testcase.rb296
-rw-r--r--tool/lib/tracepointchecker.rb126
-rw-r--r--tool/lib/vcs.rb845
-rw-r--r--tool/lib/vpath.rb92
-rw-r--r--tool/lib/webrick.rb232
-rw-r--r--tool/lib/webrick/.document6
-rw-r--r--tool/lib/webrick/accesslog.rb157
-rw-r--r--tool/lib/webrick/cgi.rb313
-rw-r--r--tool/lib/webrick/compat.rb36
-rw-r--r--tool/lib/webrick/config.rb158
-rw-r--r--tool/lib/webrick/cookie.rb172
-rw-r--r--tool/lib/webrick/htmlutils.rb30
-rw-r--r--tool/lib/webrick/httpauth.rb96
-rw-r--r--tool/lib/webrick/httpauth/authenticator.rb117
-rw-r--r--tool/lib/webrick/httpauth/basicauth.rb116
-rw-r--r--tool/lib/webrick/httpauth/digestauth.rb395
-rw-r--r--tool/lib/webrick/httpauth/htdigest.rb132
-rw-r--r--tool/lib/webrick/httpauth/htgroup.rb97
-rw-r--r--tool/lib/webrick/httpauth/htpasswd.rb158
-rw-r--r--tool/lib/webrick/httpauth/userdb.rb53
-rw-r--r--tool/lib/webrick/httpproxy.rb354
-rw-r--r--tool/lib/webrick/httprequest.rb636
-rw-r--r--tool/lib/webrick/httpresponse.rb564
-rw-r--r--tool/lib/webrick/https.rb152
-rw-r--r--tool/lib/webrick/httpserver.rb293
-rw-r--r--tool/lib/webrick/httpservlet.rb23
-rw-r--r--tool/lib/webrick/httpservlet/abstract.rb152
-rw-r--r--tool/lib/webrick/httpservlet/cgi_runner.rb47
-rw-r--r--tool/lib/webrick/httpservlet/cgihandler.rb126
-rw-r--r--tool/lib/webrick/httpservlet/erbhandler.rb88
-rw-r--r--tool/lib/webrick/httpservlet/filehandler.rb552
-rw-r--r--tool/lib/webrick/httpservlet/prochandler.rb47
-rw-r--r--tool/lib/webrick/httpstatus.rb194
-rw-r--r--tool/lib/webrick/httputils.rb512
-rw-r--r--tool/lib/webrick/httpversion.rb76
-rw-r--r--tool/lib/webrick/log.rb156
-rw-r--r--tool/lib/webrick/server.rb381
-rw-r--r--tool/lib/webrick/ssl.rb215
-rw-r--r--tool/lib/webrick/utils.rb265
-rw-r--r--tool/lib/webrick/version.rb18
-rw-r--r--tool/lib/zombie_hunter.rb10
-rwxr-xr-xtool/ln_sr.rb131
-rw-r--r--tool/m4/_colorize_result_prepare.m434
-rw-r--r--tool/m4/ac_msg_result.m45
-rw-r--r--tool/m4/colorize_result.m49
-rw-r--r--tool/m4/ruby_append_option.m45
-rw-r--r--tool/m4/ruby_append_options.m47
-rw-r--r--tool/m4/ruby_check_builtin_func.m410
-rw-r--r--tool/m4/ruby_check_builtin_setjmp.m427
-rw-r--r--tool/m4/ruby_check_printf_prefix.m429
-rw-r--r--tool/m4/ruby_check_setjmp.m417
-rw-r--r--tool/m4/ruby_check_signedness.m45
-rw-r--r--tool/m4/ruby_check_sizeof.m4108
-rw-r--r--tool/m4/ruby_check_sysconf.m413
-rw-r--r--tool/m4/ruby_cppoutfile.m418
-rw-r--r--tool/m4/ruby_decl_attribute.m445
-rw-r--r--tool/m4/ruby_default_arch.m412
-rw-r--r--tool/m4/ruby_define_if.m46
-rw-r--r--tool/m4/ruby_defint.m440
-rw-r--r--tool/m4/ruby_dtrace_available.m420
-rw-r--r--tool/m4/ruby_dtrace_postprocess.m430
-rw-r--r--tool/m4/ruby_func_attribute.m47
-rw-r--r--tool/m4/ruby_mingw32.m424
-rw-r--r--tool/m4/ruby_prepend_option.m45
-rw-r--r--tool/m4/ruby_prog_gnu_ld.m410
-rw-r--r--tool/m4/ruby_prog_makedirs.m49
-rw-r--r--tool/m4/ruby_replace_funcs.m413
-rw-r--r--tool/m4/ruby_replace_type.m468
-rw-r--r--tool/m4/ruby_require_funcs.m413
-rw-r--r--tool/m4/ruby_rm_recursive.m418
-rw-r--r--tool/m4/ruby_setjmp_type.m452
-rw-r--r--tool/m4/ruby_stack_grow_direction.m430
-rw-r--r--tool/m4/ruby_thread.m480
-rw-r--r--tool/m4/ruby_try_cflags.m419
-rw-r--r--tool/m4/ruby_try_cxxflags.m417
-rw-r--r--tool/m4/ruby_try_ldflags.m415
-rw-r--r--tool/m4/ruby_type_attribute.m48
-rw-r--r--tool/m4/ruby_universal_arch.m4122
-rw-r--r--tool/m4/ruby_wasm_tools.m424
-rw-r--r--tool/m4/ruby_werror_flag.m418
-rwxr-xr-xtool/make-snapshot656
-rw-r--r--tool/make_hgraph.rb94
-rwxr-xr-xtool/mdoc2man.rb505
-rwxr-xr-xtool/merger.rb317
-rwxr-xr-xtool/mjit/bindgen.rb435
-rw-r--r--tool/mjit_archflag.sh40
-rw-r--r--tool/mjit_tabs.rb67
-rw-r--r--tool/mk_builtin_loader.rb411
-rwxr-xr-xtool/mkconfig.rb399
-rwxr-xr-xtool/mkrunnable.rb151
-rwxr-xr-xtool/node_name.rb8
-rwxr-xr-xtool/outdate-bundled-gems.rb135
-rw-r--r--tool/parse.rb16
-rw-r--r--tool/prereq.status44
-rw-r--r--tool/probes_to_wiki.rb16
-rwxr-xr-xtool/rbinstall.rb1107
-rw-r--r--tool/rbs_skip_tests11
-rwxr-xr-xtool/rbuninstall.rb73
-rwxr-xr-xtool/redmine-backporter.rb502
-rwxr-xr-xtool/release.sh19
-rwxr-xr-xtool/releng/gen-mail.rb55
-rwxr-xr-xtool/releng/gen-release-note.rb36
-rwxr-xr-xtool/releng/update-www-meta.rb213
-rwxr-xr-xtool/rmdirs14
-rw-r--r--tool/ruby_vm/controllers/application_controller.rb26
-rw-r--r--tool/ruby_vm/helpers/c_escape.rb128
-rw-r--r--tool/ruby_vm/helpers/dumper.rb114
-rw-r--r--tool/ruby_vm/helpers/scanner.rb53
-rw-r--r--tool/ruby_vm/loaders/insns_def.rb100
-rw-r--r--tool/ruby_vm/loaders/opt_insn_unif_def.rb34
-rw-r--r--tool/ruby_vm/loaders/opt_operand_def.rb56
-rw-r--r--tool/ruby_vm/loaders/vm_opts_h.rb37
-rw-r--r--tool/ruby_vm/models/attribute.rb59
-rwxr-xr-xtool/ruby_vm/models/bare_instructions.rb240
-rw-r--r--tool/ruby_vm/models/c_expr.rb41
-rw-r--r--tool/ruby_vm/models/instructions.rb22
-rw-r--r--tool/ruby_vm/models/instructions_unifications.rb43
-rw-r--r--tool/ruby_vm/models/operands_unifications.rb142
-rw-r--r--tool/ruby_vm/models/trace_instructions.rb71
-rw-r--r--tool/ruby_vm/models/typemap.rb63
-rw-r--r--tool/ruby_vm/scripts/converter.rb29
-rw-r--r--tool/ruby_vm/scripts/insns2vm.rb101
-rw-r--r--tool/ruby_vm/tests/.gitkeep0
-rw-r--r--tool/ruby_vm/views/_attributes.erb35
-rw-r--r--tool/ruby_vm/views/_c_expr.erb17
-rw-r--r--tool/ruby_vm/views/_comptime_insn_stack_increase.erb62
-rw-r--r--tool/ruby_vm/views/_copyright.erb31
-rw-r--r--tool/ruby_vm/views/_insn_entry.erb76
-rw-r--r--tool/ruby_vm/views/_insn_len_info.erb28
-rw-r--r--tool/ruby_vm/views/_insn_name_info.erb44
-rw-r--r--tool/ruby_vm/views/_insn_operand_info.erb53
-rw-r--r--tool/ruby_vm/views/_insn_sp_pc_dependency.erb27
-rw-r--r--tool/ruby_vm/views/_insn_type_chars.erb32
-rw-r--r--tool/ruby_vm/views/_leaf_helpers.erb54
-rw-r--r--tool/ruby_vm/views/_notice.erb22
-rw-r--r--tool/ruby_vm/views/_sp_inc_helpers.erb37
-rw-r--r--tool/ruby_vm/views/_trace_instruction.erb21
-rw-r--r--tool/ruby_vm/views/insns.inc.erb26
-rw-r--r--tool/ruby_vm/views/insns_info.inc.erb22
-rw-r--r--tool/ruby_vm/views/lib/ruby_vm/mjit/instruction.rb.erb40
-rw-r--r--tool/ruby_vm/views/mjit_sp_inc.inc.erb17
-rw-r--r--tool/ruby_vm/views/opt_sc.inc.erb40
-rw-r--r--tool/ruby_vm/views/optinsn.inc.erb71
-rw-r--r--tool/ruby_vm/views/optunifs.inc.erb21
-rw-r--r--tool/ruby_vm/views/vm.inc.erb30
-rw-r--r--tool/ruby_vm/views/vmtc.inc.erb21
-rw-r--r--tool/run-gcov.rb54
-rw-r--r--tool/run-lcov.rb164
-rwxr-xr-xtool/runruby.rb178
-rw-r--r--tool/search-cgvars.rb55
-rwxr-xr-xtool/strip-rdoc.rb14
-rwxr-xr-xtool/sync_default_gems.rb753
-rwxr-xr-xtool/test-annocheck.sh33
-rw-r--r--tool/test-bundled-gems.rb109
-rw-r--r--tool/test-coverage.rb118
-rw-r--r--tool/test/runner.rb23
-rw-r--r--tool/test/test_jisx0208.rb40
-rwxr-xr-xtool/test/test_sync_default_gems.rb76
-rw-r--r--tool/test/testunit/metametameta.rb70
-rw-r--r--tool/test/testunit/test4test_hideskip.rb14
-rw-r--r--tool/test/testunit/test4test_redefinition.rb14
-rw-r--r--tool/test/testunit/test4test_sorting.rb18
-rw-r--r--tool/test/testunit/test_assertion.rb53
-rw-r--r--tool/test/testunit/test_hideskip.rb21
-rw-r--r--tool/test/testunit/test_minitest_unit.rb1488
-rw-r--r--tool/test/testunit/test_parallel.rb219
-rw-r--r--tool/test/testunit/test_redefinition.rb11
-rw-r--r--tool/test/testunit/test_sorting.rb75
-rw-r--r--tool/test/testunit/tests_for_parallel/ptest_first.rb8
-rw-r--r--tool/test/testunit/tests_for_parallel/ptest_forth.rb30
-rw-r--r--tool/test/testunit/tests_for_parallel/ptest_second.rb12
-rw-r--r--tool/test/testunit/tests_for_parallel/ptest_third.rb11
-rw-r--r--tool/test/testunit/tests_for_parallel/runner.rb14
-rw-r--r--tool/test/testunit/tests_for_parallel/test4test_hungup.rb15
-rw-r--r--tool/test/webrick/.htaccess1
-rw-r--r--tool/test/webrick/test_cgi.rb170
-rw-r--r--tool/test/webrick/test_config.rb17
-rw-r--r--tool/test/webrick/test_cookie.rb141
-rw-r--r--tool/test/webrick/test_do_not_reverse_lookup.rb71
-rw-r--r--tool/test/webrick/test_filehandler.rb403
-rw-r--r--tool/test/webrick/test_htgroup.rb19
-rw-r--r--tool/test/webrick/test_htmlutils.rb21
-rw-r--r--tool/test/webrick/test_httpauth.rb366
-rw-r--r--tool/test/webrick/test_httpproxy.rb467
-rw-r--r--tool/test/webrick/test_httprequest.rb488
-rw-r--r--tool/test/webrick/test_httpresponse.rb282
-rw-r--r--tool/test/webrick/test_https.rb112
-rw-r--r--tool/test/webrick/test_httpserver.rb543
-rw-r--r--tool/test/webrick/test_httpstatus.rb35
-rw-r--r--tool/test/webrick/test_httputils.rb101
-rw-r--r--tool/test/webrick/test_httpversion.rb41
-rw-r--r--tool/test/webrick/test_server.rb191
-rw-r--r--tool/test/webrick/test_ssl_server.rb67
-rw-r--r--tool/test/webrick/test_utils.rb110
-rw-r--r--tool/test/webrick/utils.rb84
-rw-r--r--tool/test/webrick/webrick.cgi38
-rw-r--r--tool/test/webrick/webrick.rhtml4
-rw-r--r--tool/test/webrick/webrick_long_filename.cgi36
-rw-r--r--tool/transcode-tblgen.rb1118
-rw-r--r--tool/transform_mjit_header.rb319
-rwxr-xr-xtool/travis_retry.sh13
-rwxr-xr-xtool/travis_wait.sh18
-rw-r--r--tool/update-NEWS-refs.rb37
-rwxr-xr-xtool/update-bundled_gems.rb23
-rwxr-xr-xtool/update-deps651
-rw-r--r--tool/vtlh.rb17
-rwxr-xr-xtool/wasm-clangw9
-rwxr-xr-xtool/ytab.sed80
-rw-r--r--trace_point.rb420
-rw-r--r--transcode.c4609
-rw-r--r--transcode_data.h138
-rw-r--r--transient_heap.c991
-rw-r--r--transient_heap.h65
-rw-r--r--util.c1142
-rw-r--r--util.h53
-rw-r--r--variable.c4433
-rw-r--r--variable.h29
-rw-r--r--version.c180
-rw-r--r--version.h69
-rw-r--r--vm.c4421
-rw-r--r--vm_args.c939
-rw-r--r--vm_backtrace.c1831
-rw-r--r--vm_callinfo.h550
-rw-r--r--vm_core.h2103
-rw-r--r--vm_debug.h122
-rw-r--r--vm_dump.c1232
-rw-r--r--vm_eval.c2615
-rw-r--r--vm_exec.c197
-rw-r--r--vm_exec.h197
-rw-r--r--vm_insnhelper.c6369
-rw-r--r--vm_insnhelper.h266
-rw-r--r--vm_method.c2914
-rw-r--r--vm_opts.h73
-rw-r--r--vm_sync.c301
-rw-r--r--vm_sync.h137
-rw-r--r--vm_trace.c1806
-rw-r--r--vsnprintf.c1303
-rw-r--r--warning.rb53
-rw-r--r--wasm/GNUmakefile.in32
-rw-r--r--wasm/README.md70
-rw-r--r--wasm/asyncify.h23
-rw-r--r--wasm/fiber.c83
-rw-r--r--wasm/fiber.h43
-rw-r--r--wasm/machine.c62
-rw-r--r--wasm/machine.h25
-rw-r--r--wasm/machine_core.S25
-rw-r--r--wasm/missing.c199
-rw-r--r--wasm/runtime.c47
-rw-r--r--wasm/setjmp.c204
-rw-r--r--wasm/setjmp.h95
-rw-r--r--wasm/setjmp_core.S27
-rw-r--r--wasm/tests/fiber_test.c66
-rw-r--r--wasm/tests/machine_test.c115
-rw-r--r--wasm/tests/setjmp_test.c108
-rwxr-xr-xwasm/wasm-opt36
-rw-r--r--win32/.document1
-rw-r--r--win32/Makefile.sub1543
-rw-r--r--win32/README.win32132
-rw-r--r--win32/config.h.in58
-rw-r--r--win32/config.status.in68
-rwxr-xr-xwin32/configure.bat280
-rw-r--r--win32/dir.h50
-rw-r--r--win32/enc-setup.mak10
-rw-r--r--win32/file.c660
-rw-r--r--win32/file.h50
-rwxr-xr-xwin32/ifchange.bat115
-rwxr-xr-xwin32/makedirs.bat3
-rwxr-xr-x[-rw-r--r--]win32/mkexports.rb197
-rwxr-xr-x[-rw-r--r--]win32/resource.rb58
-rwxr-xr-xwin32/rm.bat18
-rwxr-xr-xwin32/rmdirs.bat30
-rwxr-xr-xwin32/rtname.cmd35
-rw-r--r--win32/ruby.manifest8
-rw-r--r--win32/setup.mak304
-rw-r--r--win32/win32.c9403
-rw-r--r--win32/win32.h443
-rw-r--r--win32/winmain.c4
-rw-r--r--x68/_dtos18.c250
-rw-r--r--x68/_round.c45
-rw-r--r--x68/fconvert.c81
-rw-r--r--x68/select.c167
-rw-r--r--yjit.c1109
-rw-r--r--yjit.h70
-rw-r--r--yjit.rb356
-rw-r--r--yjit/.gitignore2
-rw-r--r--yjit/Cargo.lock49
-rw-r--r--yjit/Cargo.toml47
-rw-r--r--yjit/bindgen/Cargo.lock311
-rw-r--r--yjit/bindgen/Cargo.toml10
-rw-r--r--yjit/bindgen/src/main.rs430
-rw-r--r--yjit/not_gmake.mk14
-rw-r--r--yjit/src/asm/arm64/README.md16
-rw-r--r--yjit/src/asm/arm64/arg/bitmask_imm.rs255
-rw-r--r--yjit/src/asm/arm64/arg/condition.rs52
-rw-r--r--yjit/src/asm/arm64/arg/inst_offset.rs47
-rw-r--r--yjit/src/asm/arm64/arg/mod.rs18
-rw-r--r--yjit/src/asm/arm64/arg/sf.rs19
-rw-r--r--yjit/src/asm/arm64/arg/shifted_imm.rs81
-rw-r--r--yjit/src/asm/arm64/arg/sys_reg.rs6
-rw-r--r--yjit/src/asm/arm64/arg/truncate.rs66
-rw-r--r--yjit/src/asm/arm64/inst/atomic.rs86
-rw-r--r--yjit/src/asm/arm64/inst/branch.rs100
-rw-r--r--yjit/src/asm/arm64/inst/branch_cond.rs78
-rw-r--r--yjit/src/asm/arm64/inst/breakpoint.rs55
-rw-r--r--yjit/src/asm/arm64/inst/call.rs104
-rw-r--r--yjit/src/asm/arm64/inst/conditional.rs73
-rw-r--r--yjit/src/asm/arm64/inst/data_imm.rs143
-rw-r--r--yjit/src/asm/arm64/inst/data_reg.rs192
-rw-r--r--yjit/src/asm/arm64/inst/halfword_imm.rs179
-rw-r--r--yjit/src/asm/arm64/inst/load_literal.rs89
-rw-r--r--yjit/src/asm/arm64/inst/load_register.rs108
-rw-r--r--yjit/src/asm/arm64/inst/load_store.rs249
-rw-r--r--yjit/src/asm/arm64/inst/load_store_exclusive.rs109
-rw-r--r--yjit/src/asm/arm64/inst/logical_imm.rs154
-rw-r--r--yjit/src/asm/arm64/inst/logical_reg.rs207
-rw-r--r--yjit/src/asm/arm64/inst/mod.rs50
-rw-r--r--yjit/src/asm/arm64/inst/mov.rs155
-rw-r--r--yjit/src/asm/arm64/inst/nop.rs44
-rw-r--r--yjit/src/asm/arm64/inst/pc_rel.rs107
-rw-r--r--yjit/src/asm/arm64/inst/reg_pair.rs212
-rw-r--r--yjit/src/asm/arm64/inst/sbfm.rs103
-rw-r--r--yjit/src/asm/arm64/inst/shift_imm.rs147
-rw-r--r--yjit/src/asm/arm64/inst/sys_reg.rs86
-rw-r--r--yjit/src/asm/arm64/inst/test_bit.rs133
-rw-r--r--yjit/src/asm/arm64/mod.rs1580
-rw-r--r--yjit/src/asm/arm64/opnd.rs195
-rw-r--r--yjit/src/asm/mod.rs792
-rw-r--r--yjit/src/asm/x86_64/mod.rs1415
-rw-r--r--yjit/src/asm/x86_64/tests.rs449
-rw-r--r--yjit/src/backend/arm64/mod.rs1491
-rw-r--r--yjit/src/backend/ir.rs1576
-rw-r--r--yjit/src/backend/mod.rs8
-rw-r--r--yjit/src/backend/tests.rs331
-rw-r--r--yjit/src/backend/x86_64/mod.rs895
-rw-r--r--yjit/src/codegen.rs7721
-rw-r--r--yjit/src/core.rs2400
-rw-r--r--yjit/src/cruby.rs715
-rw-r--r--yjit/src/cruby_bindings.inc.rs1310
-rw-r--r--yjit/src/disasm.rs269
-rw-r--r--yjit/src/invariants.rs567
-rw-r--r--yjit/src/lib.rs18
-rw-r--r--yjit/src/options.rs174
-rw-r--r--yjit/src/stats.rs640
-rw-r--r--yjit/src/utils.rs274
-rw-r--r--yjit/src/virtualmem.rs443
-rw-r--r--yjit/src/yjit.rs136
-rw-r--r--yjit/yjit.mk69
10422 files changed, 2723848 insertions, 107386 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
new file mode 100644
index 0000000000..05ff204541
--- /dev/null
+++ b/.appveyor.yml
@@ -0,0 +1,134 @@
+---
+version: '{build}'
+init:
+ - git config --global user.name git
+ - git config --global user.email svn-admin@ruby-lang.org
+ - git config --global core.autocrlf false
+ - git config --global core.eol lf
+ - git config --global advice.detachedHead 0
+shallow_clone: true
+clone_depth: 10
+platform:
+ - x64
+skip_commits:
+ message: /\[DOC\]/
+ files:
+ - doc/*
+ - '**/*.md'
+ - '**/*.rdoc'
+ - '**/.document'
+ - '**/*.[1-8]'
+ - '**/*.ronn'
+environment:
+ ruby_version: "24-%Platform%"
+ matrix:
+ # Test only the oldest supported version because AppVeyor is unstable, its concurrency
+ # is limited, and compatibility issues that happen only in newer versions are rare.
+ # You may test some other stuff on GitHub Actions instead.
+ - build: vs
+ vs: 120 # Visual Studio 2013
+ ssl: OpenSSL-v111
+ # The worker image name. This is NOT the Visual Studio version we're using here.
+ APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
+ GEMS_FOR_TEST: ""
+ RELINE_TEST_ENCODING: "UTF-8"
+cache:
+ - c:\Tools\vcpkg\installed\
+for:
+-
+ matrix:
+ only:
+ - build: vs
+ install:
+ - ver
+ - chcp
+ - SET BITS=%Platform:x86=32%
+ - SET BITS=%BITS:x=%
+ - SET OPENSSL_DIR=C:\%ssl%-Win%BITS%
+ - cd C:\Tools\vcpkg
+ - git pull -q
+ - .\bootstrap-vcpkg.bat
+ - ps: Start-FileDownload 'https://github.com/microsoft/vcpkg-tool/releases/download/2023-08-09/vcpkg.exe' -FileName 'C:\Tools\vcpkg\vcpkg.exe'
+ - cd %APPVEYOR_BUILD_FOLDER%
+ - vcpkg --triplet %Platform%-windows install --x-use-aria2 libffi libyaml readline zlib
+ - CALL SET vcvars=%%^VS%VS%COMNTOOLS^%%..\..\VC\vcvarsall.bat
+ - SET vcvars
+ - '"%vcvars%" %Platform:x64=amd64%'
+ - SET ruby_path=C:\Ruby%ruby_version:-x86=%
+ - SET PATH=\usr\local\bin;%ruby_path%\bin;%PATH%;C:\msys64\mingw64\bin;C:\msys64\usr\bin
+ - ruby --version
+ - 'cl'
+ - echo> Makefile srcdir=.
+ - echo>> Makefile MSC_VER=0
+ - echo>> Makefile RT=none
+ - echo>> Makefile RT_VER=0
+ - echo>> Makefile BUILTIN_ENCOBJS=nul
+ - type win32\Makefile.sub >> Makefile
+ - nmake %mflags% up VCSUP="echo Update OK"
+ - nmake %mflags% extract-extlibs
+ - del Makefile
+ - mkdir \usr\local\bin
+ - mkdir \usr\local\include
+ - mkdir \usr\local\lib
+ - for %%I in (%OPENSSL_DIR%\*.dll) do mklink /h \usr\local\bin\%%~nxI %%I
+ - for %%I in (c:\Tools\vcpkg\installed\%Platform%-windows\bin\*.dll) do (
+ if not %%~nI == readline mklink \usr\local\bin\%%~nxI %%I
+ )
+ - attrib +r /s /d
+ - mkdir %Platform%-mswin_%vs%
+ build_script:
+ - set HAVE_GIT=no
+ - cd %APPVEYOR_BUILD_FOLDER%
+ - cd %Platform%-mswin_%vs%
+ - >-
+ ..\win32\configure.bat
+ --with-opt-dir="/usr/local;c:/Tools/vcpkg/installed/%Platform%-windows"
+ --with-openssl-dir=%OPENSSL_DIR:\=/%
+ - nmake -l
+ - nmake install-nodoc
+ - \usr\bin\ruby -v -e "p :locale => Encoding.find('locale'), :filesystem => Encoding.find('filesystem')"
+ - if not "%GEMS_FOR_TEST%" == "" \usr\bin\gem install --no-document %GEMS_FOR_TEST%
+ - \usr\bin\ruby -ropenssl -e "puts 'Build ' + OpenSSL::OPENSSL_VERSION, 'Runtime ' + OpenSSL::OPENSSL_LIBRARY_VERSION"
+ test_script:
+ - set /a JOBS=%NUMBER_OF_PROCESSORS%
+ - nmake -l "TESTOPTS=-v -q" btest
+ - nmake -l "TESTOPTS=-v -q" test-basic
+ - >-
+ nmake -l "TESTOPTS=--timeout-scale=3.0
+ --excludes=../test/excludes/_appveyor -j%JOBS%
+ --exclude win32ole
+ --exclude test_bignum
+ --exclude test_syntax
+ --exclude test_open-uri
+ --exclude test_bundled_ca
+ " test-all
+ # separately execute tests without -j which may crash worker with -j.
+ - >-
+ nmake -l
+ "TESTOPTS=--timeout-scale=3.0 --excludes=../test/excludes/_appveyor"
+ TESTS="
+ ../test/win32ole
+ ../test/ruby/test_bignum.rb
+ ../test/ruby/test_syntax.rb
+ ../test/open-uri/test_open-uri.rb
+ ../test/rubygems/test_bundled_ca.rb
+ " test-all
+ - nmake -l test-spec MSPECOPT=-fs # not using `-j` because sometimes `mspec -j` silently dies on Windows
+notifications:
+ - provider: Webhook
+ method: POST
+ url:
+ secure: CcFlJNDJ/a6to7u3Z4Fnz6dScEPNx7hTha2GkSRlV+1U6dqmxY/7uBcLXYb9gR3jfQk6w+2o/HrjNAyXMNGU/JOka3s2WRI4VKitzM+lQ08owvJIh0R7LxrGH0J2e81U # ruby-lang slack: ruby/simpler-alerts-bot
+ body: >-
+ {{^isPullRequest}}
+ {
+ "ci": "AppVeyor CI",
+ "env": "Visual Studio 2013",
+ "url": "{{buildUrl}}",
+ "commit": "{{commitId}}",
+ "branch": "{{branch}}"
+ }
+ {{/isPullRequest}}
+ on_build_success: false
+ on_build_failure: true
+ on_build_status_changed: false
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index 8fcaffddb2..0000000000
--- a/.cvsignore
+++ /dev/null
@@ -1,19 +0,0 @@
-parse.c
-newver.rb
-ruby
-miniruby
-README.fat-patch
-configure
-config.cache
-config.h
-config.log
-config.status
-Makefile
-ppack
-archive
-extmk.rb
-*.orig
-*.rej
-*.bak
-*.sav
-*~
diff --git a/.dir-locals.el b/.dir-locals.el
new file mode 100644
index 0000000000..8f4b96445c
--- /dev/null
+++ b/.dir-locals.el
@@ -0,0 +1,39 @@
+;; Copyright (c) 2018 Urabe, Shyouhei. All rights reserved.
+;;
+;; This file is a part of the programming language Ruby. Permission is hereby
+;; granted, to either redistribute and/or modify this file, provided that the
+;; conditions mentioned in the file COPYING are met. Consult the file for
+;; details.
+
+((nil .
+ ((indent-tabs-mode . nil)
+ (require-final-newline . t)
+ (tab-width . 8)
+ (show-trailing-whitespace . t)
+ (whitespace-line-column . 80))) ;; See also [Misc #12277]
+
+ ;; (bat-mode . ((buffer-file-coding-system . utf-8-dos)))
+
+ (ruby-mode . ((ruby-indent-level . 2)))
+
+ (rdoc-mode . ((fill-column . 74)))
+
+ (yaml-mode . ((yaml-indent-offset . 2)))
+
+ (makefile-mode . ((indent-tabs-mode . t)))
+
+ (c-mode . ((c-file-style . "ruby")))
+
+ (c++-mode . ((c-file-style . "ruby")))
+
+ (change-log-mode .
+ ((buffer-file-coding-system . us-ascii)
+ (indent-tabs-mode . t)
+ (change-log-indent-text . 2)
+ (add-log-time-format . (lambda (&optional x y)
+ (let* ((time (or x (current-time)))
+ (system-time-locale "C")
+ (diff (+ (cadr time) 32400))
+ (lo (% diff 65536))
+ (hi (+ (car time) (/ diff 65536))))
+ (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t)))))))
diff --git a/.document b/.document
new file mode 100644
index 0000000000..3a6b0c238c
--- /dev/null
+++ b/.document
@@ -0,0 +1,54 @@
+# This file determines which files in the
+# Ruby hierarchy will be processed by the RDoc
+# tool when it is given the top-level directory
+# as an argument
+
+# Process all the C source files
+*.c
+*.y
+
+# prelude
+prelude.rb
+rbconfig.rb
+
+array.rb
+ast.rb
+dir.rb
+gc.rb
+io.rb
+kernel.rb
+marshal.rb
+mjit.rb
+numeric.rb
+nilclass.rb
+pack.rb
+ractor.rb
+string.rb
+symbol.rb
+timev.rb
+thread_sync.rb
+trace_point.rb
+warning.rb
+yjit.rb
+
+# the lib/ directory (which has its own .document file)
+lib
+
+# and some of the ext/ directory (which has its own .document file)
+ext
+
+# rdoc files
+NEWS.md
+
+README.md
+README.ja.md
+
+COPYING
+COPYING.ja
+
+LEGAL
+
+# win32/README.win32 linked from README.md
+win32
+
+doc
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000000..4633a7acae
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,30 @@
+root = true
+
+[*]
+end_of_line = lf
+indent_size = 4
+indent_style = space
+insert_final_newline = true
+tab_width = 8
+trim_trailing_whitespace = true
+
+[*.bat]
+end_of_line = crlf
+
+[*.gemspec]
+indent_size = 2
+
+[*.rb]
+indent_size = 2
+
+[*.yml]
+indent_size = 2
+
+[{*[Mm]akefile*,*.mak,*.mk,depend}]
+indent_style = tab
+
+[enc/*]
+indent_size = 2
+
+[reg*.[ch]]
+indent_size = 2
diff --git a/.gdbinit b/.gdbinit
new file mode 100644
index 0000000000..34d044caf6
--- /dev/null
+++ b/.gdbinit
@@ -0,0 +1,1350 @@
+set startup-with-shell off
+
+define hook-run
+ set $color_type = 0
+ set $color_highlite = 0
+ set $color_end = 0
+end
+
+define ruby_gdb_init
+ if !$color_type
+ set $color_type = "\033[31m"
+ end
+ if !$color_highlite
+ set $color_highlite = "\033[36m"
+ end
+ if !$color_end
+ set $color_end = "\033[m"
+ end
+ if ruby_dummy_gdb_enums.special_consts
+ end
+end
+
+# set prompt \033[36m(gdb)\033[m\040
+
+define rp
+ ruby_gdb_init
+ if (VALUE)($arg0) & RUBY_FIXNUM_FLAG
+ printf "FIXNUM: %ld\n", (long)($arg0) >> 1
+ else
+ if ((VALUE)($arg0) & ~(~(VALUE)0<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG
+ set $id = (($arg0) >> RUBY_SPECIAL_SHIFT)
+ printf "%sSYMBOL%s: ", $color_type, $color_end
+ rp_id $id
+ else
+ if ($arg0) == RUBY_Qfalse
+ echo false\n
+ else
+ if ($arg0) == RUBY_Qtrue
+ echo true\n
+ else
+ if ($arg0) == RUBY_Qnil
+ echo nil\n
+ else
+ if ($arg0) == RUBY_Qundef
+ echo undef\n
+ else
+ if (VALUE)($arg0) & RUBY_IMMEDIATE_MASK
+ if ((VALUE)($arg0) & RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG
+ printf "%sFLONUM%s: %g\n", $color_type, $color_end, (double)rb_float_value($arg0)
+ else
+ echo immediate\n
+ end
+ else
+ set $flags = ((struct RBasic*)($arg0))->flags
+ if ($flags & RUBY_FL_PROMOTED) == RUBY_FL_PROMOTED
+ printf "[PROMOTED] "
+ end
+ if ($flags & RUBY_T_MASK) == RUBY_T_NONE
+ printf "%sT_NONE%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_NIL
+ printf "%sT_NIL%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_OBJECT
+ printf "%sT_OBJECT%s: ", $color_type, $color_end
+ print ((struct RObject *)($arg0))->basic
+ if ($flags & ROBJECT_EMBED)
+ print/x *((VALUE*)((struct RObject*)($arg0))->as.ary) @ (ROBJECT_EMBED_LEN_MAX+0)
+ else
+ print (((struct RObject *)($arg0))->as.heap)
+ if (((struct RObject*)($arg0))->as.heap.numiv) > 0
+ print/x *(((struct RObject*)($arg0))->as.heap.ivptr) @ (((struct RObject*)($arg0))->as.heap.numiv)
+ end
+ end
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_CLASS
+ printf "%sT_CLASS%s%s: ", $color_type, ($flags & RUBY_FL_SINGLETON) ? "*" : "", $color_end
+ rp_class $arg0
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_ICLASS
+ printf "%sT_ICLASS%s: ", $color_type, $color_end
+ rp_class $arg0
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_MODULE
+ printf "%sT_MODULE%s: ", $color_type, $color_end
+ rp_class $arg0
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_FLOAT
+ printf "%sT_FLOAT%s: %.16g ", $color_type, $color_end, (((struct RFloat*)($arg0))->float_value)
+ print (struct RFloat *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_STRING
+ printf "%sT_STRING%s: ", $color_type, $color_end
+ rp_string $arg0 $flags
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_REGEXP
+ set $regsrc = ((struct RRegexp*)($arg0))->src
+ set $rsflags = ((struct RBasic*)$regsrc)->flags
+ printf "%sT_REGEXP%s: ", $color_type, $color_end
+ set $len = ($rsflags & RUBY_FL_USER1) ? \
+ ((struct RString*)$regsrc)->as.heap.len : \
+ (($rsflags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2)
+ set print address off
+ output *(char *)(($rsflags & RUBY_FL_USER1) ? \
+ ((struct RString*)$regsrc)->as.heap.ptr : \
+ ((struct RString*)$regsrc)->as.ary) @ $len
+ set print address on
+ printf " len:%ld ", $len
+ if $flags & RUBY_FL_USER6
+ printf "(none) "
+ end
+ if $flags & RUBY_FL_USER5
+ printf "(literal) "
+ end
+ if $flags & RUBY_FL_USER4
+ printf "(fixed) "
+ end
+ printf "encoding:%d ", ($flags & RUBY_ENCODING_MASK) >> RUBY_ENCODING_SHIFT
+ print (struct RRegexp *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_ARRAY
+ if ($flags & RUBY_FL_USER1)
+ set $len = (($flags & (RUBY_FL_USER3|RUBY_FL_USER4)) >> (RUBY_FL_USHIFT+3))
+ printf "%sT_ARRAY%s: len=%ld ", $color_type, $color_end, $len
+ printf "(embed) "
+ if ($len == 0)
+ printf "{(empty)} "
+ else
+ print/x *((VALUE*)((struct RArray*)($arg0))->as.ary) @ $len
+ printf " "
+ end
+ else
+ set $len = ((struct RArray*)($arg0))->as.heap.len
+ printf "%sT_ARRAY%s: len=%ld ", $color_type, $color_end, $len
+ if ($flags & RUBY_FL_USER2)
+ printf "(shared) shared="
+ output/x ((struct RArray*)($arg0))->as.heap.aux.shared_root
+ printf " "
+ else
+ printf "(ownership) capa=%ld ", ((struct RArray*)($arg0))->as.heap.aux.capa
+ end
+ if ($len == 0)
+ printf "{(empty)} "
+ else
+ print/x *((VALUE*)((struct RArray*)($arg0))->as.heap.ptr) @ $len
+ printf " "
+ end
+ end
+ print (struct RArray *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_FIXNUM
+ printf "%sT_FIXNUM%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_HASH
+ printf "%sT_HASH%s: ", $color_type, $color_end,
+ if (((struct RHash *)($arg0))->basic.flags & RHASH_ST_TABLE_FLAG)
+ printf "st len=%ld ", ((struct RHash *)($arg0))->as.st->num_entries
+ else
+ printf "li len=%ld bound=%ld ", \
+ ((((struct RHash *)($arg0))->basic.flags & RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT), \
+ ((((struct RHash *)($arg0))->basic.flags & RHASH_AR_TABLE_BOUND_MASK) >> RHASH_AR_TABLE_BOUND_SHIFT)
+ end
+ print (struct RHash *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_STRUCT
+ set $len = (($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? \
+ ($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) >> (RUBY_FL_USHIFT+1) : \
+ ((struct RStruct *)($arg0))->as.heap.len)
+ printf "%sT_STRUCT%s: len=%ld ", $color_type, $color_end, $len
+ print (struct RStruct *)($arg0)
+ output/x *(($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? \
+ ((struct RStruct *)($arg0))->as.ary : \
+ ((struct RStruct *)($arg0))->as.heap.ptr) @ $len
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_BIGNUM
+ rp_bignum $arg0
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_RATIONAL
+ printf "%sT_RATIONAL%s: ", $color_type, $color_end
+ print (struct RRational *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_COMPLEX
+ printf "%sT_COMPLEX%s: ", $color_type, $color_end
+ print (struct RComplex *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_FILE
+ printf "%sT_FILE%s: ", $color_type, $color_end
+ print (struct RFile *)($arg0)
+ output *((struct RFile *)($arg0))->fptr
+ printf "\n"
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_TRUE
+ printf "%sT_TRUE%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_FALSE
+ printf "%sT_FALSE%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_DATA
+ if ((struct RTypedData *)($arg0))->typed_flag == 1
+ printf "%sT_DATA%s(%s): ", $color_type, $color_end, ((struct RTypedData *)($arg0))->type->wrap_struct_name
+ print (struct RTypedData *)($arg0)
+ else
+ printf "%sT_DATA%s: ", $color_type, $color_end
+ print (struct RData *)($arg0)
+ end
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_MATCH
+ printf "%sT_MATCH%s: ", $color_type, $color_end
+ print (struct RMatch *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_SYMBOL
+ printf "%sT_SYMBOL%s: ", $color_type, $color_end
+ print (struct RSymbol *)($arg0)
+ set $id_type = ((struct RSymbol *)($arg0))->id & RUBY_ID_SCOPE_MASK
+ if $id_type == RUBY_ID_LOCAL
+ printf "l"
+ else
+ if $id_type == RUBY_ID_INSTANCE
+ printf "i"
+ else
+ if $id_type == RUBY_ID_GLOBAL
+ printf "G"
+ else
+ if $id_type == RUBY_ID_ATTRSET
+ printf "a"
+ else
+ if $id_type == RUBY_ID_CONST
+ printf "C"
+ else
+ if $id_type == RUBY_ID_CLASS
+ printf "c"
+ else
+ printf "j"
+ end
+ end
+ end
+ end
+ end
+ end
+ set $id_fstr = ((struct RSymbol *)($arg0))->fstr
+ rp_string $id_fstr
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_UNDEF
+ printf "%sT_UNDEF%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_IMEMO
+ printf "%sT_IMEMO%s(", $color_type, $color_end
+ output (enum imemo_type)(($flags>>RUBY_FL_USHIFT)&RUBY_IMEMO_MASK)
+ printf "): "
+ rp_imemo $arg0
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_NODE
+ printf "%sT_NODE%s(", $color_type, $color_end
+ output (enum node_type)(($flags&RUBY_NODE_TYPEMASK)>>RUBY_NODE_TYPESHIFT)
+ printf "): "
+ print *(NODE *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_ZOMBIE
+ printf "%sT_ZOMBIE%s: ", $color_type, $color_end
+ print (struct RData *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_MOVED
+ printf "%sT_MOVED%s: ", $color_type, $color_end
+ print *(struct RMoved *)$arg0
+ else
+ printf "%sunknown%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
+document rp
+ Print a Ruby's VALUE.
+end
+
+define rp_id
+ set $id = (ID)$arg0
+ if $id == '!' || $id == '+' || $id == '-' || $id == '*' || $id == '/' || $id == '%' || $id == '<' || $id == '>' || $id == '`'
+ printf "(:%c)\n", $id
+ else
+ if $id == idDot2
+ printf "(:..)\n"
+ else
+ if $id == idDot3
+ printf "(:...)\n"
+ else
+ if $id == idUPlus
+ printf "(:+@)\n"
+ else
+ if $id == idUMinus
+ printf "(:-@)\n"
+ else
+ if $id == idPow
+ printf "(:**)\n"
+ else
+ if $id == idCmp
+ printf "(:<=>)\n"
+ else
+ if $id == idLTLT
+ printf "(:<<)\n"
+ else
+ if $id == idGTGT
+ printf "(:>>)\n"
+ else
+ if $id == idLE
+ printf "(:<=)\n"
+ else
+ if $id == idGE
+ printf "(:>=)\n"
+ else
+ if $id == idEq
+ printf "(:==)\n"
+ else
+ if $id == idEqq
+ printf "(:===)\n"
+ else
+ if $id == idNeq
+ printf "(:!=)\n"
+ else
+ if $id == idEqTilde
+ printf "(:=~)\n"
+ else
+ if $id == idNeqTilde
+ printf "(:!~)\n"
+ else
+ if $id == idAREF
+ printf "(:[])\n"
+ else
+ if $id == idASET
+ printf "(:[]=)\n"
+ else
+ if $id == idCOLON2
+ printf "(:'::')\n"
+ else
+ if $id == idANDOP
+ printf "(:&&)\n"
+ else
+ if $id == idOROP
+ printf "(:||)\n"
+ else
+ if $id == idANDDOT
+ printf "(:&.)\n"
+ else
+ if $id <= tLAST_OP_ID
+ printf "O"
+ else
+ set $id_type = $id & RUBY_ID_SCOPE_MASK
+ if $id_type == RUBY_ID_LOCAL
+ printf "l"
+ else
+ if $id_type == RUBY_ID_INSTANCE
+ printf "i"
+ else
+ if $id_type == RUBY_ID_GLOBAL
+ printf "G"
+ else
+ if $id_type == RUBY_ID_ATTRSET
+ printf "a"
+ else
+ if $id_type == RUBY_ID_CONST
+ printf "C"
+ else
+ if $id_type == RUBY_ID_CLASS
+ printf "c"
+ else
+ printf "j"
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ printf "(%ld): ", $id
+ print_id $id
+ echo \n
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
+document rp_id
+ Print an ID.
+end
+
+define output_string
+ set $flags = ((struct RBasic*)($arg0))->flags
+ set $len = ($flags & RUBY_FL_USER1) ? \
+ ((struct RString*)($arg0))->as.heap.len : \
+ (($flags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2)
+ if $len > 0
+ output *(char *)(($flags & RUBY_FL_USER1) ? \
+ ((struct RString*)($arg0))->as.heap.ptr : \
+ ((struct RString*)($arg0))->as.ary) @ $len
+ else
+ output ""
+ end
+end
+
+define print_string
+ set $flags = ((struct RBasic*)($arg0))->flags
+ set $len = ($flags & RUBY_FL_USER1) ? \
+ ((struct RString*)($arg0))->as.heap.len : \
+ (($flags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2)
+ if $len > 0
+ printf "%s", *(char *)(($flags & RUBY_FL_USER1) ? \
+ ((struct RString*)($arg0))->as.heap.ptr : \
+ ((struct RString*)($arg0))->as.ary) @ $len
+ end
+end
+
+define rp_string
+ output_string $arg0
+ printf " bytesize:%ld ", $len
+ if !($flags & RUBY_FL_USER1)
+ printf "(embed) "
+ else
+ if ($flags & RUBY_FL_USER2)
+ printf "(shared) "
+ end
+ if ($flags & RUBY_FL_USER3)
+ printf "(assoc) "
+ end
+ end
+ printf "encoding:%d ", ($flags & RUBY_ENCODING_MASK) >> RUBY_ENCODING_SHIFT
+ if ($flags & RUBY_ENC_CODERANGE_MASK) == 0
+ printf "coderange:unknown "
+ else
+ if ($flags & RUBY_ENC_CODERANGE_MASK) == RUBY_ENC_CODERANGE_7BIT
+ printf "coderange:7bit "
+ else
+ if ($flags & RUBY_ENC_CODERANGE_MASK) == RUBY_ENC_CODERANGE_VALID
+ printf "coderange:valid "
+ else
+ printf "coderange:broken "
+ end
+ end
+ end
+ print (struct RString *)($arg0)
+end
+document rp_string
+ Print the content of a String.
+end
+
+define rp_bignum
+ set $flags = ((struct RBignum*)($arg0))->basic.flags
+ set $len = (($flags & RUBY_FL_USER2) ? \
+ ($flags & (RUBY_FL_USER5|RUBY_FL_USER4|RUBY_FL_USER3)) >> (RUBY_FL_USHIFT+3) : \
+ ((struct RBignum*)($arg0))->as.heap.len)
+ printf "%sT_BIGNUM%s: sign=%d len=%ld ", $color_type, $color_end, \
+ (($flags & RUBY_FL_USER1) != 0), $len
+ if $flags & RUBY_FL_USER2
+ printf "(embed) "
+ end
+ print (struct RBignum *)($arg0)
+ set $ptr = (($flags & RUBY_FL_USER2) ? \
+ ((struct RBignum*)($arg0))->as.ary : \
+ ((struct RBignum*)($arg0))->as.heap.digits)
+ set $len = $len-1
+ printf "0x%x", $ptr[$len]
+ while $len > 0
+ set $len = $len-1
+ set $val = $ptr[$len]
+ set $w = sizeof($ptr[0])
+ printf "_"
+ if $w > 8
+ printf "%.32x", $val
+ else
+ if $w > 4
+ printf "%.16x", $val
+ else
+ if $w > 2
+ printf "%.8x", $val
+ else
+ if $w > 1
+ printf "%.4x", $val
+ else
+ printf "%.2x", $val
+ end
+ end
+ end
+ end
+ end
+ printf "\n"
+end
+document rp_bignum
+ Print the content of a Bignum.
+end
+
+define rp_class
+ printf "(struct RClass *) %p", (void*)$arg0
+ if RCLASS_ORIGIN((struct RClass *)($arg0)) != $arg0
+ printf " -> %p", RCLASS_ORIGIN((struct RClass *)($arg0))
+ end
+ printf "\n"
+ rb_classname $arg0
+ print/x *(struct RClass *)($arg0)
+ print *RCLASS_EXT((struct RClass *)($arg0))
+end
+document rp_class
+ Print the content of a Class/Module.
+end
+
+define rp_imemo
+ set $flags = (enum imemo_type)((((struct RBasic *)($arg0))->flags >> RUBY_FL_USHIFT) & RUBY_IMEMO_MASK)
+ if $flags == imemo_cref
+ printf "(rb_cref_t *) %p\n", (void*)$arg0
+ print *(rb_cref_t *)$arg0
+ else
+ if $flags == imemo_svar
+ printf "(struct vm_svar *) %p\n", (void*)$arg0
+ print *(struct vm_svar *)$arg0
+ else
+ if $flags == imemo_throw_data
+ printf "(struct vm_throw_data *) %p\n", (void*)$arg0
+ print *(struct vm_throw_data *)$arg0
+ else
+ if $flags == imemo_ifunc
+ printf "(struct vm_ifunc *) %p\n", (void*)$arg0
+ print *(struct vm_ifunc *)$arg0
+ else
+ if $flags == imemo_memo
+ printf "(struct MEMO *) %p\n", (void*)$arg0
+ print *(struct MEMO *)$arg0
+ else
+ if $flags == imemo_ment
+ printf "(rb_method_entry_t *) %p\n", (void*)$arg0
+ print *(rb_method_entry_t *)$arg0
+ else
+ if $flags == imemo_iseq
+ printf "(rb_iseq_t *) %p\n", (void*)$arg0
+ print *(rb_iseq_t *)$arg0
+ else
+ printf "(struct RIMemo *) %p\n", (void*)$arg0
+ print *(struct RIMemo *)$arg0
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
+document rp_imemo
+ Print the content of a memo
+end
+
+define nd_type
+ print (enum node_type)((((NODE*)($arg0))->flags&RUBY_NODE_TYPEMASK)>>RUBY_NODE_TYPESHIFT)
+end
+document nd_type
+ Print a Ruby' node type.
+end
+
+define nd_file
+ print ((NODE*)($arg0))->nd_file
+end
+document nd_file
+ Print the source file name of a node.
+end
+
+define nd_line
+ print ((unsigned int)((((NODE*)($arg0))->flags>>RUBY_NODE_LSHIFT)&RUBY_NODE_LMASK))
+end
+document nd_line
+ Print the source line number of a node.
+end
+
+# Print members of ruby node.
+
+define nd_head
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_alen
+ printf "%su2.argc%s: ", $color_highlite, $color_end
+ p ($arg0).u2.argc
+end
+
+define nd_next
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_cond
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_body
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+define nd_else
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_orig
+ printf "%su3.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.value
+end
+
+
+define nd_resq
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+define nd_ensr
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_1st
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_2nd
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+
+define nd_stts
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+
+define nd_entry
+ printf "%su3.entry%s: ", $color_highlite, $color_end
+ p ($arg0).u3.entry
+end
+
+define nd_vid
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
+define nd_cflag
+ printf "%su2.id%s: ", $color_highlite, $color_end
+ p ($arg0).u2.id
+end
+
+define nd_cval
+ printf "%su3.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.value
+end
+
+define nd_tbl
+ printf "%su1.tbl%s: ", $color_highlite, $color_end
+ p ($arg0).u1.tbl
+end
+
+
+define nd_var
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_ibdy
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+define nd_iter
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_value
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+define nd_aid
+ printf "%su3.id%s: ", $color_highlite, $color_end
+ p ($arg0).u3.id
+end
+
+
+define nd_lit
+ printf "%su1.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.value
+end
+
+define nd_rest
+ printf "%su2.argc%s: ", $color_highlite, $color_end
+ p ($arg0).u2.argc
+end
+
+define nd_opt
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+
+define nd_recv
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_mid
+ printf "%su2.id%s: ", $color_highlite, $color_end
+ p ($arg0).u2.id
+end
+
+define nd_args
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+define nd_defn
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_old
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
+define nd_new
+ printf "%su2.id%s: ", $color_highlite, $color_end
+ p ($arg0).u2.id
+end
+
+
+define nd_cname
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
+define nd_super
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_modl
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
+define nd_clss
+ printf "%su1.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.value
+end
+
+
+define nd_beg
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_end
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+define nd_state
+ printf "%su3.state%s: ", $color_highlite, $color_end
+ p ($arg0).u3.state
+end
+
+define nd_rval
+ printf "%su2.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.value
+end
+
+
+define nd_nth
+ printf "%su2.argc%s: ", $color_highlite, $color_end
+ p ($arg0).u2.argc
+end
+
+
+define nd_tag
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
+define nd_tval
+ printf "%su2.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.value
+end
+
+define nd_tree
+ set $buf = (struct RString *)rb_str_buf_new(0)
+ call dump_node((VALUE)($buf), rb_str_tmp_new(0), 0, ($arg0))
+ printf "%s\n", $buf->as.heap.ptr
+end
+
+define rb_p
+ call rb_p($arg0)
+end
+
+define rb_numtable_entry
+ set $rb_numtable_tbl = $arg0
+ set $rb_numtable_id = (st_data_t)$arg1
+ set $rb_numtable_key = 0
+ set $rb_numtable_rec = 0
+ if $rb_numtable_tbl->entries_packed
+ set $rb_numtable_p = $rb_numtable_tbl->as.packed.bins
+ while $rb_numtable_p && $rb_numtable_p < $rb_numtable_tbl->as.packed.bins+$rb_numtable_tbl->num_entries
+ if $rb_numtable_p.k == $rb_numtable_id
+ set $rb_numtable_key = $rb_numtable_p.k
+ set $rb_numtable_rec = $rb_numtable_p.v
+ set $rb_numtable_p = 0
+ else
+ set $rb_numtable_p = $rb_numtable_p + 1
+ end
+ end
+ else
+ set $rb_numtable_p = $rb_numtable_tbl->as.big.bins[st_numhash($rb_numtable_id) % $rb_numtable_tbl->num_bins]
+ while $rb_numtable_p
+ if $rb_numtable_p->key == $rb_numtable_id
+ set $rb_numtable_key = $rb_numtable_p->key
+ set $rb_numtable_rec = $rb_numtable_p->record
+ set $rb_numtable_p = 0
+ else
+ set $rb_numtable_p = $rb_numtable_p->next
+ end
+ end
+ end
+end
+
+define rb_id2name
+ ruby_gdb_init
+ printf "%sID%s: ", $color_type, $color_end
+ rp_id $arg0
+end
+document rb_id2name
+ Print the name of id
+end
+
+define rb_method_entry
+ set $rb_method_entry_klass = (struct RClass *)$arg0
+ set $rb_method_entry_id = (ID)$arg1
+ set $rb_method_entry_me = (rb_method_entry_t *)0
+ while !$rb_method_entry_me && $rb_method_entry_klass
+ rb_numtable_entry $rb_method_entry_klass->m_tbl_wrapper->tbl $rb_method_entry_id
+ set $rb_method_entry_me = (rb_method_entry_t *)$rb_numtable_rec
+ if !$rb_method_entry_me
+ set $rb_method_entry_klass = (struct RClass *)RCLASS_SUPER($rb_method_entry_klass)
+ end
+ end
+ if $rb_method_entry_me
+ print *$rb_method_entry_klass
+ print *$rb_method_entry_me
+ else
+ echo method not found\n
+ end
+end
+document rb_method_entry
+ Search method entry by class and id
+end
+
+define rb_classname
+ # up to 128bit int
+ set $rb_classname = rb_mod_name($arg0)
+ if $rb_classname != RUBY_Qnil
+ rp $rb_classname
+ else
+ echo anonymous class/module\n
+ end
+end
+
+define rb_ancestors
+ set $rb_ancestors_module = $arg0
+ while $rb_ancestors_module
+ rp_class $rb_ancestors_module
+ set $rb_ancestors_module = RCLASS_SUPER($rb_ancestors_module)
+ end
+end
+document rb_ancestors
+ Print ancestors.
+end
+
+define rb_backtrace
+ call rb_backtrace()
+end
+
+define iseq
+ if ruby_dummy_gdb_enums.special_consts
+ end
+ if ($arg0)->type == ISEQ_ELEMENT_NONE
+ echo [none]\n
+ end
+ if ($arg0)->type == ISEQ_ELEMENT_LABEL
+ print *(LABEL*)($arg0)
+ end
+ if ($arg0)->type == ISEQ_ELEMENT_INSN
+ print *(INSN*)($arg0)
+ if ((INSN*)($arg0))->insn_id != YARVINSN_jump
+ set $i = 0
+ set $operand_size = ((INSN*)($arg0))->operand_size
+ set $operands = ((INSN*)($arg0))->operands
+ while $i < $operand_size
+ rp $operands[$i++]
+ end
+ end
+ end
+ if ($arg0)->type == ISEQ_ELEMENT_ADJUST
+ print *(ADJUST*)($arg0)
+ end
+end
+
+define rb_ps
+ rb_ps_vm ruby_current_vm_ptr
+end
+document rb_ps
+Dump all threads and their callstacks
+end
+
+define rb_ps_vm
+ print $ps_vm = (rb_vm_t*)$arg0
+ set $ps_thread_ln = $ps_vm->ractor.main_ractor.threads.set.n.next
+ set $ps_thread_ln_last = $ps_vm->ractor.main_ractor.threads.set.n.prev
+ while 1
+ set $ps_thread_th = (rb_thread_t *)$ps_thread_ln
+ set $ps_thread = (VALUE)($ps_thread_th->self)
+ rb_ps_thread $ps_thread
+ if $ps_thread_ln == $ps_thread_ln_last
+ loop_break
+ end
+ set $ps_thread_ln = $ps_thread_ln->next
+ end
+end
+document rb_ps_vm
+Dump all threads in a (rb_vm_t*) and their callstacks
+end
+
+define print_lineno
+ set $cfp = $arg0
+ set $iseq = $cfp->iseq
+ set $pos = $cfp->pc - $iseq->body->iseq_encoded
+ if $pos != 0
+ set $pos = $pos - 1
+ end
+
+ set $index = 0
+ set $size = $iseq->body->insns_info.size
+ set $table = $iseq->body->insns_info.body
+ set $positions = $iseq->body->insns_info.positions
+ #printf "size: %d\n", $size
+ if $size == 0
+ else
+ if $size == 1
+ printf "%d", $table[0].line_no
+ else
+ if $positions
+ # get_insn_info_linear_search
+ set $index = 1
+ while $index < $size
+ #printf "table[%d]: position: %d, line: %d, pos: %d\n", $i, $positions[$i], $table[$i].line_no, $pos
+ if $positions[$index] > $pos
+ loop_break
+ end
+ set $index = $index + 1
+ if $positions[$index] == $pos
+ loop_break
+ end
+ end
+ else
+ # get_insn_info_succinct_bitvector
+ set $sd = $iseq->body->insns_info.succ_index_table
+ set $immediate_table_size = sizeof($sd->imm_part) / sizeof(uint64_t) * 9
+ if $pos < $immediate_table_size
+ set $i = $pos / 9
+ set $j = $pos % 9
+ set $index = ((int)($sd->imm_part[$i] >> ($j * 7))) & 0x7f
+ else
+ set $block_index = ($pos - $immediate_table_size) / 512
+ set $block = &$sd->succ_part[$block_index]
+ set $block_bit_index = ($pos - $immediate_table_size) % 512
+ set $small_block_index = $block_bit_index / 64
+ set $small_block_popcount = $small_block_index == 0 ? 0 : (((int)($block->small_block_ranks >> (($small_block_index - 1) * 9))) & 0x1ff)
+ set $x = $block->bits[$small_block_index] << (63 - $block_bit_index % 64)
+ set $x = ($x & 0x5555555555555555) + ($x >> 1 & 0x5555555555555555)
+ set $x = ($x & 0x3333333333333333) + ($x >> 2 & 0x3333333333333333)
+ set $x = ($x & 0x0707070707070707) + ($x >> 4 & 0x0707070707070707)
+ set $x = ($x & 0x001f001f001f001f) + ($x >> 8 & 0x001f001f001f001f)
+ set $x = ($x & 0x0000003f0000003f) + ($x >>16 & 0x0000003f0000003f)
+ set $popcnt = ($x & 0x7f) + ($x >>32 & 0x7f)
+ set $index = $block->rank + $small_block_popcount + $popcnt
+ end
+ end
+ printf "%d", $table[$index-1].line_no
+ end
+ end
+end
+
+define check_method_entry
+ set $imemo = (struct RBasic *)$arg0
+ if $imemo != RUBY_Qfalse
+ set $type = ($imemo->flags >> 12) & 0x07
+ if $type == imemo_ment
+ set $me = (rb_callable_method_entry_t *)$imemo
+ else
+ if $type == imemo_svar
+ set $imemo = ((struct vm_svar *)$imemo)->cref_or_me
+ check_method_entry $imemo
+ end
+ end
+ end
+end
+
+define print_id
+ set $id = $arg0
+ # rb_id_to_serial
+ if $id > tLAST_OP_ID
+ set $serial = (rb_id_serial_t)($id >> RUBY_ID_SCOPE_SHIFT)
+ else
+ set $serial = (rb_id_serial_t)$id
+ end
+ if $serial && $serial <= ruby_global_symbols.last_id
+ set $idx = $serial / ID_ENTRY_UNIT
+ set $ids = (struct RArray *)ruby_global_symbols.ids
+ set $flags = $ids->basic.flags
+ if ($flags & RUBY_FL_USER1)
+ set $idsptr = $ids->as.ary
+ set $idslen = (($flags & (RUBY_FL_USER3|RUBY_FL_USER4)) >> (RUBY_FL_USHIFT+3))
+ else
+ set $idsptr = $ids->as.heap.ptr
+ set $idslen = $ids->as.heap.len
+ end
+ if $idx < $idslen
+ set $t = 0
+ set $ary = (struct RArray *)$idsptr[$idx]
+ if $ary != RUBY_Qnil
+ set $flags = $ary->basic.flags
+ if ($flags & RUBY_FL_USER1)
+ set $aryptr = $ary->as.ary
+ set $arylen = (($flags & (RUBY_FL_USER3|RUBY_FL_USER4)) >> (RUBY_FL_USHIFT+3))
+ else
+ set $aryptr = $ary->as.heap.ptr
+ set $arylen = $ary->as.heap.len
+ end
+ set $result = $aryptr[($serial % ID_ENTRY_UNIT) * ID_ENTRY_SIZE + $t]
+ if $result != RUBY_Qnil
+ print_string $result
+ else
+ echo undef
+ end
+ end
+ end
+ end
+end
+
+define print_pathobj
+ set $flags = ((struct RBasic*)($arg0))->flags
+ if ($flags & RUBY_T_MASK) == RUBY_T_STRING
+ print_string $arg0
+ end
+ if ($flags & RUBY_T_MASK) == RUBY_T_ARRAY
+ if $flags & RUBY_FL_USER1
+ set $str = ((struct RArray*)($arg0))->as.ary[0]
+ else
+ set $str = ((struct RArray*)($arg0))->as.heap.ptr[0]
+ end
+ print_string $str
+ end
+end
+
+define rb_ps_thread
+ set $ps_thread = (struct RTypedData*)$arg0
+ set $ps_thread_th = (rb_thread_t*)$ps_thread->data
+ printf "* #<Thread:%p rb_thread_t:%p native_thread:%p>\n", \
+ $ps_thread, $ps_thread_th, $ps_thread_th->thread_id
+ set $cfp = $ps_thread_th->ec->cfp
+ set $cfpend = (rb_control_frame_t *)($ps_thread_th->ec->vm_stack + $ps_thread_th->ec->vm_stack_size)-1
+ while $cfp < $cfpend
+ if $cfp->iseq
+ if !((VALUE)$cfp->iseq & RUBY_IMMEDIATE_MASK) && (((imemo_ifunc << RUBY_FL_USHIFT) | RUBY_T_IMEMO)==$cfp->iseq->flags & ((RUBY_IMEMO_MASK << RUBY_FL_USHIFT) | RUBY_T_MASK))
+ printf "%d:ifunc ", $cfpend-$cfp
+ set print symbol-filename on
+ output/a $cfp->iseq.body
+ set print symbol-filename off
+ printf "\n"
+ else
+ if $cfp->pc
+ set $location = $cfp->iseq->body->location
+ printf "%d:", $cfpend-$cfp
+ print_pathobj $location.pathobj
+ printf ":"
+ print_lineno $cfp
+ printf ":in `"
+ print_string $location.label
+ printf "'\n"
+ else
+ printf "%d: ???.rb:???:in `???'\n", $cfpend-$cfp
+ end
+ end
+ else
+ # if VM_FRAME_TYPE($cfp->flag) == VM_FRAME_MAGIC_CFUNC
+ set $ep = $cfp->ep
+ if ($ep[0] & 0xffff0001) == 0x55550001
+ #define VM_ENV_FLAG_LOCAL 0x02
+ #define VM_ENV_PREV_EP(ep) GC_GUARDED_PTR_REF(ep[VM_ENV_DATA_INDEX_SPECVAL])
+ set $me = 0
+ set $env_specval = $ep[-1]
+ set $env_me_cref = $ep[-2]
+ while ($env_specval & 0x02) != 0
+ check_method_entry $env_me_cref
+ if $me != 0
+ loop_break
+ end
+ set $ep = $ep[0]
+ set $env_specval = $ep[-1]
+ set $env_me_cref = $ep[-2]
+ end
+ if $me == 0
+ check_method_entry $env_me_cref
+ end
+ printf "%d:", $cfpend-$cfp
+ set print symbol-filename on
+ output/a $me->def->body.cfunc.func
+ set print symbol-filename off
+ set $mid = $me->def->original_id
+ printf ":in `"
+ print_id $mid
+ printf "'\n"
+ else
+ printf "%d:unknown_frame:???:in `???'\n", $cfpend-$cfp
+ end
+ end
+ set $cfp = $cfp + 1
+ end
+end
+
+define rb_count_objects
+ set $objspace = ruby_current_vm_ptr->objspace
+ set $counts_00 = 0
+ set $counts_01 = 0
+ set $counts_02 = 0
+ set $counts_03 = 0
+ set $counts_04 = 0
+ set $counts_05 = 0
+ set $counts_06 = 0
+ set $counts_07 = 0
+ set $counts_08 = 0
+ set $counts_09 = 0
+ set $counts_0a = 0
+ set $counts_0b = 0
+ set $counts_0c = 0
+ set $counts_0d = 0
+ set $counts_0e = 0
+ set $counts_0f = 0
+ set $counts_10 = 0
+ set $counts_11 = 0
+ set $counts_12 = 0
+ set $counts_13 = 0
+ set $counts_14 = 0
+ set $counts_15 = 0
+ set $counts_16 = 0
+ set $counts_17 = 0
+ set $counts_18 = 0
+ set $counts_19 = 0
+ set $counts_1a = 0
+ set $counts_1b = 0
+ set $counts_1c = 0
+ set $counts_1d = 0
+ set $counts_1e = 0
+ set $counts_1f = 0
+ set $total = 0
+ set $i = 0
+ while $i < $objspace->heap_pages.allocated_pages
+ printf "\rcounting... %d/%d", $i, $objspace->heap_pages.allocated_pages
+ set $page = $objspace->heap_pages.sorted[$i]
+ set $p = $page->start
+ set $pend = $p + $page->total_slots
+ while $p < $pend
+ set $flags = $p->as.basic.flags & 0x1f
+ eval "set $counts_%02x = $counts_%02x + 1", $flags, $flags
+ set $p = $p + 1
+ end
+ set $total = $total + $page->total_slots
+ set $i = $i + 1
+ end
+ printf "\rTOTAL: %d, FREE: %d\n", $total, $counts_00
+ printf "T_OBJECT: %d\n", $counts_01
+ printf "T_CLASS: %d\n", $counts_02
+ printf "T_MODULE: %d\n", $counts_03
+ printf "T_FLOAT: %d\n", $counts_04
+ printf "T_STRING: %d\n", $counts_05
+ printf "T_REGEXP: %d\n", $counts_06
+ printf "T_ARRAY: %d\n", $counts_07
+ printf "T_HASH: %d\n", $counts_08
+ printf "T_STRUCT: %d\n", $counts_09
+ printf "T_BIGNUM: %d\n", $counts_0a
+ printf "T_FILE: %d\n", $counts_0b
+ printf "T_DATA: %d\n", $counts_0c
+ printf "T_MATCH: %d\n", $counts_0d
+ printf "T_COMPLEX: %d\n", $counts_0e
+ printf "T_RATIONAL: %d\n", $counts_0f
+ #printf "UNKNOWN_10: %d\n", $counts_10
+ printf "T_NIL: %d\n", $counts_11
+ printf "T_TRUE: %d\n", $counts_12
+ printf "T_FALSE: %d\n", $counts_13
+ printf "T_SYMBOL: %d\n", $counts_14
+ printf "T_FIXNUM: %d\n", $counts_15
+ printf "T_UNDEF: %d\n", $counts_16
+ #printf "UNKNOWN_17: %d\n", $counts_17
+ #printf "UNKNOWN_18: %d\n", $counts_18
+ #printf "UNKNOWN_19: %d\n", $counts_19
+ printf "T_IMEMO: %d\n", $counts_1a
+ printf "T_NODE: %d\n", $counts_1b
+ printf "T_ICLASS: %d\n", $counts_1c
+ printf "T_ZOMBIE: %d\n", $counts_1d
+ #printf "UNKNOWN_1E: %d\n", $counts_1e
+ printf "T_MASK: %d\n", $counts_1f
+end
+document rb_count_objects
+ Counts all objects grouped by type.
+end
+
+# Details: https://bugs.ruby-lang.org/projects/ruby-master/wiki/MachineInstructionsTraceWithGDB
+define trace_machine_instructions
+ set logging on
+ set height 0
+ set width 0
+ display/i $pc
+ while !$exit_code
+ info line *$pc
+ si
+ end
+end
+
+define SDR
+ call rb_vmdebug_stack_dump_raw_current()
+end
+
+define rbi
+ if ((LINK_ELEMENT*)$arg0)->type == ISEQ_ELEMENT_LABEL
+ p *(LABEL*)$arg0
+ else
+ if ((LINK_ELEMENT*)$arg0)->type == ISEQ_ELEMENT_INSN
+ p *(INSN*)$arg0
+ else
+ if ((LINK_ELEMENT*)$arg0)->type == ISEQ_ELEMENT_ADJUST
+ p *(ADJUST*)$arg0
+ else
+ print *$arg0
+ end
+ end
+ end
+end
+
+define dump_node
+ set $str = rb_parser_dump_tree($arg0, 0)
+ set $flags = ((struct RBasic*)($str))->flags
+ printf "%s", (char *)(($flags & RUBY_FL_USER1) ? \
+ ((struct RString*)$str)->as.heap.ptr : \
+ ((struct RString*)$str)->as.ary)
+end
+
+define print_flags
+ printf "RUBY_FL_WB_PROTECTED: %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_WB_PROTECTED ? "1" : "0"
+ printf "RUBY_FL_PROMOTED0 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_PROMOTED0 ? "1" : "0"
+ printf "RUBY_FL_PROMOTED1 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_PROMOTED1 ? "1" : "0"
+ printf "RUBY_FL_FINALIZE : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_FINALIZE ? "1" : "0"
+ printf "RUBY_FL_SHAREABLE : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_SHAREABLE ? "1" : "0"
+ printf "RUBY_FL_EXIVAR : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_EXIVAR ? "1" : "0"
+ printf "RUBY_FL_FREEZE : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_FREEZE ? "1" : "0"
+
+ printf "RUBY_FL_USER0 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER0 ? "1" : "0"
+ printf "RUBY_FL_USER1 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER1 ? "1" : "0"
+ printf "RUBY_FL_USER2 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER2 ? "1" : "0"
+ printf "RUBY_FL_USER3 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER3 ? "1" : "0"
+ printf "RUBY_FL_USER4 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER4 ? "1" : "0"
+ printf "RUBY_FL_USER5 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER5 ? "1" : "0"
+ printf "RUBY_FL_USER6 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER6 ? "1" : "0"
+ printf "RUBY_FL_USER7 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER7 ? "1" : "0"
+ printf "RUBY_FL_USER8 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER8 ? "1" : "0"
+ printf "RUBY_FL_USER9 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER9 ? "1" : "0"
+ printf "RUBY_FL_USER10 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER10 ? "1" : "0"
+ printf "RUBY_FL_USER11 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER11 ? "1" : "0"
+ printf "RUBY_FL_USER12 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER12 ? "1" : "0"
+ printf "RUBY_FL_USER13 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER13 ? "1" : "0"
+ printf "RUBY_FL_USER14 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER14 ? "1" : "0"
+ printf "RUBY_FL_USER15 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER15 ? "1" : "0"
+ printf "RUBY_FL_USER16 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER16 ? "1" : "0"
+ printf "RUBY_FL_USER17 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER17 ? "1" : "0"
+ printf "RUBY_FL_USER18 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER18 ? "1" : "0"
+end
diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
new file mode 100644
index 0000000000..6c5eac5a0f
--- /dev/null
+++ b/.git-blame-ignore-revs
@@ -0,0 +1,23 @@
+# This is a file used by GitHub to ignore the following commits on `git blame`.
+#
+# You can also do the same thing in your local repository with:
+# $ git config --local blame.ignoreRevsFile .git-blame-ignore-revs
+
+# Expand tabs
+5b21e94bebed90180d8ff63dad03b8b948361089
+
+# Enable Style/StringLiterals cop for RubyGems/Bundler
+d7ffd3fea402239b16833cc434404a7af82d44f3
+
+# [ruby/digest] Revert tab-expansion in external files
+48b09aae7ec5632209229dcc294dd0d75a93a17f
+8a65cf3b61c60e4cb886f59a73ff6db44364bfa9
+39dc9f9093901d40d2998653948d5da38b18ee2c
+
+# [ruby/io-nonblock] Revert tab expansion
+f28287d34c03f472ffe90ea262bdde9affd4b965
+0d842fecb4f75ab3b1d4097ebdb8e88f51558041
+4ba2c66761d6a293abdfba409241d31063cefd62
+
+# Make benchmark indentation consistent
+fc4acf8cae82e5196186d3278d831f2438479d91
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000..d0c2d266b4
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,8 @@
+*.gemspec diff=ruby
+*.rb diff=ruby
+bin svn-properties=svn:ignore=ruby
+bin/* diff=ruby
+tool/update-deps diff=ruby
+tool/make-snapshot diff=ruby
+tool/format-release diff=ruby
+tool/leaked-globals diff=ruby
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 0000000000..56baa29942
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,9 @@
+# Security Policy
+
+## Supported Versions
+
+See <https://www.ruby-lang.org/en/downloads/branches/>.
+
+## Reporting a Vulnerability
+
+See <https://www.ruby-lang.org/en/security/>.
diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml
new file mode 100644
index 0000000000..91f82b842b
--- /dev/null
+++ b/.github/codeql/codeql-config.yml
@@ -0,0 +1,3 @@
+name: "CodeQL config for the Ruby language"
+
+languages: cpp
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000..bc63aca35b
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,6 @@
+version: 2
+updates:
+ - package-ecosystem: 'github-actions'
+ directory: '/'
+ schedule:
+ interval: 'monthly'
diff --git a/.github/workflows/baseruby.yml b/.github/workflows/baseruby.yml
new file mode 100644
index 0000000000..ebaafe3bf0
--- /dev/null
+++ b/.github/workflows/baseruby.yml
@@ -0,0 +1,80 @@
+name: BASERUBY Check
+
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ pull_request:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ merge_group:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions:
+ contents: read
+
+jobs:
+ baseruby:
+ name: BASERUBY
+ runs-on: ubuntu-22.04
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
+ strategy:
+ matrix:
+ ruby:
+ - ruby-2.2
+# - ruby-2.3
+# - ruby-2.4
+# - ruby-2.5
+# - ruby-2.6
+# - ruby-2.7
+ - ruby-3.0
+ - ruby-3.1
+
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: .downloaded-cache
+ key: downloaded-cache
+ - uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0
+ with:
+ ruby-version: ${{ matrix.ruby }}
+ bundler: none
+ - run: echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
+ - run: sudo apt-get install build-essential autoconf bison libyaml-dev
+ - run: ./autogen.sh
+ - run: ./configure --disable-install-doc
+ - run: make common-srcs
+ - run: make incs
+ - run: make all
+ - run: make test
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ github.workflow }} / BASERUBY @ ${{ matrix.ruby }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
diff --git a/.github/workflows/bundled_gems.yml b/.github/workflows/bundled_gems.yml
new file mode 100644
index 0000000000..070c0fa1dd
--- /dev/null
+++ b/.github/workflows/bundled_gems.yml
@@ -0,0 +1,166 @@
+name: bundled_gems
+
+on:
+ push:
+ branches: [ "master" ]
+ paths:
+ - '.github/workflows/bundled_gems.yml'
+ - 'gems/bundled_gems'
+ pull_request:
+ branches: [ "master" ]
+ paths:
+ - '.github/workflows/bundled_gems.yml'
+ - 'gems/bundled_gems'
+ merge_group:
+ branches: [ "master" ]
+ paths:
+ - '.github/workflows/bundled_gems.yml'
+ - 'gems/bundled_gems'
+ schedule:
+ - cron: '45 6 * * *'
+ workflow_dispatch:
+
+permissions: # added using https://github.com/step-security/secure-workflows
+ contents: read
+
+jobs:
+ update:
+ permissions:
+ contents: write # for Git to git push
+ if: ${{ github.event_name != 'schedule' || github.repository == 'ruby/ruby' }}
+ name: update ${{ github.workflow }}
+ runs-on: ubuntu-latest
+ steps:
+ - name: git config
+ run: |
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+
+ - name: Set ENV
+ run: |
+ echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
+ echo "TODAY=$(date +%F)" >> $GITHUB_ENV
+
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: .downloaded-cache
+ key: downloaded-cache-${{ github.sha }}
+ restore-keys: |
+ downloaded-cache
+
+ - name: Download previous gems list
+ run: |
+ data=bundled_gems.json
+ mkdir -p .downloaded-cache
+ ln -s .downloaded-cache/$data .
+ curl -O -R -z ./$data https://stdgems.org/$data
+
+ - name: Update bundled gems list
+ run: |
+ ruby -i~ tool/update-bundled_gems.rb gems/bundled_gems
+
+ - name: Maintain updated gems list in NEWS
+ run: |
+ #!ruby
+ require 'json'
+ news = File.read("NEWS.md")
+ prev = news[/since the \*+(\d+\.\d+\.\d+)\*+/, 1]
+ prevs = [prev, prev.sub(/\.\d+\z/, '')]
+ %W[bundled].each do |type|
+ last = JSON.parse(File.read("#{type}_gems.json"))['gems'].filter_map do |g|
+ v = g['versions'].values_at(*prevs).compact.first
+ g = g['gem']
+ g = 'RubyGems' if g == 'rubygems'
+ [g, v] if v
+ end.to_h
+ changed = File.foreach("gems/#{type}_gems").filter_map do |l|
+ next if l.start_with?("#")
+ g, v = l.split(" ", 3)
+ [g, v] unless last[g] == v
+ end
+ changed, added = changed.partition {|g, _| last[g]}
+ news.sub!(/^\*( +)The following #{type} gems? are updated\.\n+\K(?: \1\*( +).*\n)*/) do
+ mark = "#{$1} *#{$2}"
+ changed.map {|g, v|"#{mark}#{g} #{v}\n"}.join("")
+ end or next
+ news.sub!(/^\*( +)The following default gems are now bundled gems\.\n+\K(?: \1\*( +).*\n)*/) do
+ mark = "#{$1} *#{$2}"
+ added.map {|g, v|"#{mark}#{g} #{v}\n"}.join("")
+ end or next unless added.empty?
+ File.write("NEWS.md", news)
+ end
+ shell: ruby {0}
+
+ - name: Check diffs
+ id: diff
+ run: |
+ git add -- NEWS.md
+ git diff --no-ext-diff --ignore-submodules --quiet -- gems/bundled_gems
+ continue-on-error: true
+
+ - name: Install libraries
+ run: |
+ set -x
+ sudo apt-get update -q || :
+ sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev bison autoconf ruby
+ if: ${{ steps.diff.outcome == 'failure' }}
+
+ - name: Build
+ run: |
+ ./autogen.sh
+ ./configure -C --disable-install-doc
+ make
+ if: ${{ steps.diff.outcome == 'failure' }}
+
+ - name: Prepare bundled gems
+ run: |
+ make -s prepare-gems
+ if: ${{ steps.diff.outcome == 'failure' }}
+
+ - name: Test bundled gems
+ run: |
+ make -s test-bundled-gems
+ git add -- gems/bundled_gems
+ timeout-minutes: 30
+ env:
+ RUBY_TESTOPTS: "-q --tty=no"
+ TEST_BUNDLED_GEMS_ALLOW_FAILURES: ""
+ if: ${{ steps.diff.outcome == 'failure' }}
+
+ - name: Show diffs
+ id: show
+ run: |
+ git diff --cached --color --no-ext-diff --ignore-submodules --exit-code --
+ continue-on-error: true
+
+ - name: Commit
+ run: |
+ git pull --ff-only origin ${GITHUB_REF#refs/heads/}
+ message="Update bundled gems list at "
+ if [ ${{ steps.diff.outcome }} = success ]; then
+ git commit --message="${message}${GITHUB_SHA:0:30} [ci skip]"
+ else
+ git commit --message="${message}${TODAY}"
+ fi
+ git push origin ${GITHUB_REF#refs/heads/}
+ env:
+ EMAIL: svn-admin@ruby-lang.org
+ GIT_AUTHOR_NAME: git
+ GIT_COMMITTER_NAME: git
+ if: ${{ github.repository == 'ruby/ruby' && !startsWith(github.event_name, 'pull') && steps.show.outcome == 'failure' }}
+
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ github.workflow }} / update",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
diff --git a/.github/workflows/check_dependencies.yml b/.github/workflows/check_dependencies.yml
new file mode 100644
index 0000000000..79b2916feb
--- /dev/null
+++ b/.github/workflows/check_dependencies.yml
@@ -0,0 +1,78 @@
+name: Check Dependencies
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ pull_request:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ merge_group:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions:
+ contents: read
+
+jobs:
+ update-deps:
+ strategy:
+ matrix:
+ os: [ubuntu-22.04]
+ fail-fast: true
+ runs-on: ${{ matrix.os }}
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
+ steps:
+ - name: Install libraries
+ run: |
+ set -x
+ sudo apt-get update -q || :
+ sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev bison autoconf ruby
+ if: ${{ contains(matrix.os, 'ubuntu') }}
+ - name: Install libraries
+ run: |
+ brew install gmp libffi openssl@1.1 zlib autoconf automake libtool readline
+ if: ${{ contains(matrix.os, 'macos') }}
+ - name: git config
+ run: |
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: .downloaded-cache
+ key: downloaded-cache
+ - run: ./autogen.sh
+ - name: Run configure
+ run: ./configure -C --disable-install-doc --disable-rubygems --with-gcc 'optflags=-O0' 'debugflags=-save-temps=obj -g'
+ - run: make all golf
+ - run: ruby tool/update-deps --fix
+ - run: git diff --no-ext-diff --ignore-submodules --exit-code
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ matrix.os }} / Dependencies need to update",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
new file mode 100644
index 0000000000..8dba76fbe2
--- /dev/null
+++ b/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,75 @@
+name: "Code scanning - action"
+
+on:
+ # push:
+ # paths-ignore:
+ # - 'doc/**'
+ # - '**/man'
+ # - '**.md'
+ # - '**.rdoc'
+ # - '**/.document'
+ # pull_request:
+ # paths-ignore:
+ # - 'doc/**'
+ # - '**/man'
+ # - '**.md'
+ # - '**.rdoc'
+ # - '**/.document'
+ schedule:
+ - cron: '0 12 * * *'
+ workflow_dispatch:
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions: # added using https://github.com/step-security/secure-workflows
+ contents: read
+
+jobs:
+ CodeQL-Build:
+
+ # CodeQL runs on ubuntu-latest and windows-latest
+ permissions:
+ actions: read # for github/codeql-action/init to get workflow details
+ contents: read # for actions/checkout to fetch code
+ security-events: write # for github/codeql-action/autobuild to send a status report
+ runs-on: ubuntu-latest
+ # CodeQL fails to run pull requests from dependabot due to missing write access to upload results.
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') && github.event.head_commit.pusher.name != 'dependabot[bot]' }}
+
+ env:
+ enable_install_doc: no
+
+ steps:
+ - name: Install libraries
+ run: |
+ set -x
+ sudo apt-get update -q || :
+ sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev bison autoconf ruby
+
+ - name: Checkout repository
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: .downloaded-cache
+ key: downloaded-cache
+
+ - name: Remove an obsolete rubygems vendored file
+ run: sudo rm /usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb
+
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@959cbb7472c4d4ad70cdfe6f4976053fe48ab394 # v2.1.37
+ with:
+ config-file: ./.github/codeql/codeql-config.yml
+ trap-caching: false
+
+ - name: Set ENV
+ run: echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
+
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@959cbb7472c4d4ad70cdfe6f4976053fe48ab394 # v2.1.37
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@959cbb7472c4d4ad70cdfe6f4976053fe48ab394 # v2.1.37
diff --git a/.github/workflows/compilers.yml b/.github/workflows/compilers.yml
new file mode 100644
index 0000000000..caf12cc0f4
--- /dev/null
+++ b/.github/workflows/compilers.yml
@@ -0,0 +1,281 @@
+name: Compilations
+
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ pull_request:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.rdoc'
+ - '**/.document'
+ merge_group:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.rdoc'
+ - '**/.document'
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+# GitHub actions does not support YAML anchors. This creative use of
+# environment variables (plus the "echo $GITHUB_ENV" hack) is to reroute that
+# restriction.
+env:
+ default_cc: clang-15
+ append_cc: ''
+
+ # -O1 is faster than -O3 in our tests... Majority of time are consumed trying
+ # to optimize binaries. Also GitHub Actions run on relatively modern CPUs
+ # compared to, say, GCC 4 or Clang 3. We don't specify `-march=native`
+ # because compilers tend not understand what the CPU is.
+ optflags: '-O1'
+
+ # -g0 disables backtraces when SEGV. Do not set that.
+ debugflags: '-ggdb3'
+
+ default_configure: >-
+ --enable-debug-env
+ --disable-install-doc
+ --with-ext=-test-/cxxanyargs,+
+ append_configure: >-
+ --without-valgrind
+ --without-jemalloc
+ --without-gmp
+
+ UPDATE_UNICODE: >-
+ UNICODE_FILES=.
+ UNICODE_PROPERTY_FILES=.
+ UNICODE_AUXILIARY_FILES=.
+ UNICODE_EMOJI_FILES=.
+ CONFIGURE_TTY: never
+ GITPULLOPTIONS: --no-tags origin ${{github.ref}}
+ RUBY_DEBUG: ci rgengc
+ RUBY_TESTOPTS: >-
+ -q
+ --color=always
+ --tty=no
+
+permissions:
+ contents: read
+
+jobs:
+ compile:
+ strategy:
+ fail-fast: false
+ matrix:
+ env:
+ - {}
+ entry:
+ - { name: gcc-12, env: { default_cc: gcc-12 } }
+ - { name: gcc-11, env: { default_cc: gcc-11 } }
+ - { name: gcc-10, env: { default_cc: gcc-10 } }
+ - { name: gcc-9, env: { default_cc: gcc-9 } }
+ - { name: gcc-8, env: { default_cc: gcc-8 } }
+ - { name: gcc-7, env: { default_cc: gcc-7 } }
+ - name: 'gcc-13 LTO'
+ container: gcc-13
+ env:
+ default_cc: 'gcc-13 -flto=auto -ffat-lto-objects -Werror=lto-type-mismatch'
+ optflags: '-O2'
+ shared: disable
+ # check: true
+ - { name: clang-16, env: { default_cc: clang-16 } }
+ - { name: clang-15, env: { default_cc: clang-15 } }
+ - { name: clang-14, env: { default_cc: clang-14 } }
+ - { name: clang-13, env: { default_cc: clang-13 } }
+ - { name: clang-12, env: { default_cc: clang-12 } }
+ - { name: clang-11, env: { default_cc: clang-11 } }
+ - { name: clang-10, env: { default_cc: clang-10 } }
+ # llvm-objcopy<=9 doesn't have --wildcard. It compiles, but leaves Rust symbols in libyjit.o.
+ - { name: clang-9, env: { default_cc: clang-9, append_configure: '--disable-yjit' } }
+ - { name: clang-8, env: { default_cc: clang-8, append_configure: '--disable-yjit' } }
+ - { name: clang-7, env: { default_cc: clang-7, append_configure: '--disable-yjit' } }
+ - { name: clang-6.0, env: { default_cc: clang-6.0, append_configure: '--disable-yjit' } }
+ - name: 'clang-16 LTO'
+ container: clang-16
+ env:
+ default_cc: 'clang-16 -flto=auto'
+ optflags: '-O2'
+ shared: disable
+ # check: true
+
+# - { name: aarch64-linux-gnu, crosshost: aarch64-linux-gnu, container: crossbuild-essential-arm64 }
+# - { name: arm-linux-gnueabi, crosshost: arm-linux-gnueabi }
+# - { name: arm-linux-gnueabihf, crosshost: arm-linux-gnueabihf }
+# - { name: i686-w64-mingw32, crosshost: i686-w64-mingw32 }
+# - { name: powerpc-linux-gnu, crosshost: powerpc-linux-gnu }
+# - { name: powerpc64le-linux-gnu, crosshost: powerpc64le-linux-gnu, container: crossbuild-essential-ppc64el }
+# - { name: s390x-linux-gnu, crosshost: s390x-linux-gnu, container: crossbuild-essential-s390x }
+# - { name: x86_64-w64-mingw32, crosshost: x86_64-w64-mingw32, container: mingw-w64 }
+
+ # -Wno-strict-prototypes is necessary with current clang-15 since
+ # older autoconf generate functions without prototype and -pedantic
+ # now implies strict-prototypes. Disabling the error but leaving the
+ # warning generates a lot of noise from use of ANYARGS in
+ # rb_define_method() and friends.
+ # See: https://github.com/llvm/llvm-project/commit/11da1b53d8cd3507959022cd790d5a7ad4573d94
+ - { name: c99, env: { append_cc: '-std=c99 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } }
+# - { name: c11, env: { append_cc: '-std=c11 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } }
+# - { name: c17, env: { append_cc: '-std=c17 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } }
+ - { name: c2x, env: { append_cc: '-std=c2x -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } }
+ - { name: c++98, env: { CXXFLAGS: '-std=c++98 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
+# - { name: c++11, env: { CXXFLAGS: '-std=c++11 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
+# - { name: c++14, env: { CXXFLAGS: '-std=c++14 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
+# - { name: c++17, env: { CXXFLAGS: '-std=c++17 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
+ - { name: c++2a, env: { CXXFLAGS: '-std=c++2a -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
+
+ - { name: '-O0', env: { optflags: '-O0 -march=x86-64 -mtune=generic' } }
+# - { name: '-O3', env: { optflags: '-O3 -march=x86-64 -mtune=generic' }, check: true }
+
+ - { name: gmp, env: { append_configure: '--with-gmp' } }
+ - { name: jemalloc, env: { append_configure: '--with-jemalloc' } }
+ - { name: valgrind, env: { append_configure: '--with-valgrind' } }
+ - { name: 'coroutine=ucontext', env: { append_configure: '--with-coroutine=ucontext' } }
+ - { name: 'coroutine=pthread', env: { append_configure: '--with-coroutine=pthread' } }
+ - { name: disable-jit-support, env: { append_configure: '--disable-jit-support' } }
+ - { name: disable-dln, env: { append_configure: '--disable-dln' } }
+ - { name: enable-mkmf-verbose, env: { append_configure: '--enable-mkmf-verbose' } }
+ - { name: disable-rubygems, env: { append_configure: '--disable-rubygems' } }
+ - { name: RUBY_DEVEL, env: { append_configure: '--enable-devel' } }
+
+ - { name: OPT_THREADED_CODE=1, env: { cppflags: '-DOPT_THREADED_CODE=1' } }
+ - { name: OPT_THREADED_CODE=2, env: { cppflags: '-DOPT_THREADED_CODE=2' } }
+ - { name: OPT_THREADED_CODE=3, env: { cppflags: '-DOPT_THREADED_CODE=3' } }
+
+ - { name: NDEBUG, env: { cppflags: '-DNDEBUG' } }
+ - { name: RUBY_DEBUG, env: { cppflags: '-DRUBY_DEBUG' } }
+# - { name: ARRAY_DEBUG, env: { cppflags: '-DARRAY_DEBUG' } }
+# - { name: BIGNUM_DEBUG, env: { cppflags: '-DBIGNUM_DEBUG' } }
+# - { name: CCAN_LIST_DEBUG, env: { cppflags: '-DCCAN_LIST_DEBUG' } }
+# - { name: CPDEBUG=-1, env: { cppflags: '-DCPDEBUG=-1' } }
+# - { name: ENC_DEBUG, env: { cppflags: '-DENC_DEBUG' } }
+# - { name: GC_DEBUG, env: { cppflags: '-DGC_DEBUG' } }
+# - { name: HASH_DEBUG, env: { cppflags: '-DHASH_DEBUG' } }
+# - { name: ID_TABLE_DEBUG, env: { cppflags: '-DID_TABLE_DEBUG' } }
+# - { name: RGENGC_DEBUG=-1, env: { cppflags: '-DRGENGC_DEBUG=-1' } }
+# - { name: SYMBOL_DEBUG, env: { cppflags: '-DSYMBOL_DEBUG' } }
+
+# - { name: RGENGC_CHECK_MODE, env: { cppflags: '-DRGENGC_CHECK_MODE' } }
+# - { name: TRANSIENT_HEAP_CHECK_MODE, env: { cppflags: '-DTRANSIENT_HEAP_CHECK_MODE' } }
+# - { name: VM_CHECK_MODE, env: { cppflags: '-DVM_CHECK_MODE' } }
+
+ - { name: USE_EMBED_CI=0, env: { cppflags: '-DUSE_EMBED_CI=0' } }
+ - name: USE_FLONUM=0,
+ env:
+ cppflags: '-DUSE_FLONUM=0'
+ # yjit requires FLONUM for the pointer tagging scheme
+ append_configure: '--disable-yjit'
+# - { name: USE_GC_MALLOC_OBJ_INFO_DETAILS, env: { cppflags: '-DUSE_GC_MALLOC_OBJ_INFO_DETAILS' } }
+ - { name: USE_LAZY_LOAD, env: { cppflags: '-DUSE_LAZY_LOAD' } }
+# - { name: USE_RINCGC=0, env: { cppflags: '-DUSE_RINCGC=0' } }
+# - { name: USE_SYMBOL_GC=0, env: { cppflags: '-DUSE_SYMBOL_GC=0' } }
+# - { name: USE_THREAD_CACHE=0, env: { cppflags: '-DUSE_THREAD_CACHE=0' } }
+# - { name: USE_TRANSIENT_HEAP=0, env: { cppflags: '-DUSE_TRANSIENT_HEAP=0' } }
+# - { name: USE_RUBY_DEBUG_LOG=1, env: { cppflags: '-DUSE_RUBY_DEBUG_LOG=1' } }
+ - { name: USE_RVARGC=0, env: { cppflags: '-DUSE_RVARGC=0' } }
+# - { name: USE_RVARGC=1, env: { cppflags: '-DUSE_RVARGC=1' } }
+# - { name: USE_DEBUG_COUNTER, env: { cppflags: '-DUSE_DEBUG_COUNTER=1', RUBY_DEBUG_COUNTER_DISABLE: '1' } }
+
+ - { name: DEBUG_FIND_TIME_NUMGUESS, env: { cppflags: '-DDEBUG_FIND_TIME_NUMGUESS' } }
+ - { name: DEBUG_INTEGER_PACK, env: { cppflags: '-DDEBUG_INTEGER_PACK' } }
+# - { name: ENABLE_PATH_CHECK, env: { cppflags: '-DENABLE_PATH_CHECK' } }
+
+ - { name: GC_DEBUG_STRESS_TO_CLASS, env: { cppflags: '-DGC_DEBUG_STRESS_TO_CLASS' } }
+# - { name: GC_ENABLE_LAZY_SWEEP=0, env: { cppflags: '-DGC_ENABLE_LAZY_SWEEP=0' } }
+# - { name: GC_PROFILE_DETAIL_MEMOTY, env: { cppflags: '-DGC_PROFILE_DETAIL_MEMOTY' } }
+# - { name: GC_PROFILE_MORE_DETAIL, env: { cppflags: '-DGC_PROFILE_MORE_DETAIL' } }
+
+# - { name: CALC_EXACT_MALLOC_SIZE, env: { cppflags: '-DCALC_EXACT_MALLOC_SIZE' } }
+# - { name: MALLOC_ALLOCATED_SIZE_CHECK, env: { cppflags: '-DMALLOC_ALLOCATED_SIZE_CHECK' } }
+
+# - { name: IBF_ISEQ_ENABLE_LOCAL_BUFFER, env: { cppflags: '-DIBF_ISEQ_ENABLE_LOCAL_BUFFER' } }
+
+# - { name: RGENGC_ESTIMATE_OLDMALLOC, env: { cppflags: '-DRGENGC_ESTIMATE_OLDMALLOC' } }
+# - { name: RGENGC_FORCE_MAJOR_GC, env: { cppflags: '-DRGENGC_FORCE_MAJOR_GC' } }
+# - { name: RGENGC_OBJ_INFO, env: { cppflags: '-DRGENGC_OBJ_INFO' } }
+# - { name: RGENGC_OLD_NEWOBJ_CHECK, env: { cppflags: '-DRGENGC_OLD_NEWOBJ_CHECK' } }
+# - { name: RGENGC_PROFILE, env: { cppflags: '-DRGENGC_PROFILE' } }
+
+# - { name: VM_DEBUG_BP_CHECK, env: { cppflags: '-DVM_DEBUG_BP_CHECK' } }
+# - { name: VM_DEBUG_VERIFY_METHOD_CACHE, env: { cppflags: '-DVM_DEBUG_VERIFY_METHOD_CACHE' } }
+
+ - { name: MJIT_FORCE_ENABLE, env: { cppflags: '-DMJIT_FORCE_ENABLE' } }
+ - { name: YJIT_FORCE_ENABLE, env: { cppflags: '-DYJIT_FORCE_ENABLE' } }
+
+ name: ${{ matrix.entry.name }}
+ runs-on: ubuntu-latest
+ container:
+ image: ghcr.io/ruby/ruby-ci-image:${{ matrix.entry.container || matrix.entry.env.default_cc || 'clang-15' }}
+ options: --user root
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
+ env: ${{ matrix.entry.env || matrix.env }}
+ steps:
+ - run: id
+ working-directory:
+ - run: mkdir build
+ working-directory:
+ - name: setenv
+ run: |
+ echo "GNUMAKEFLAGS=-sj$((1 + $(nproc --all)))" >> $GITHUB_ENV
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ path: src
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: src/.downloaded-cache
+ key: downloaded-cache
+ - run: ./autogen.sh
+ working-directory: src
+ - name: Run configure
+ run: >
+ ../src/configure -C ${default_configure} ${append_configure}
+ --${{
+ matrix.entry.crosshost && 'host' || 'with-gcc'
+ }}=${{
+ matrix.entry.crosshost || '"${default_cc}${append_cc:+ $append_cc}"'
+ }}
+ --${{ matrix.entry.shared || 'enable' }}-shared
+ - run: make extract-extlibs
+ - run: make incs
+ - run: make showflags
+ - run: make
+ - run: make leaked-globals
+ - run: make test
+ - run: make install
+ if: ${{ matrix.entry.check }}
+ - run: make test-tool
+ if: ${{ matrix.entry.check }}
+ - run: make test-all TESTS='-- ruby -ext-'
+ if: ${{ matrix.entry.check }}
+ - run: make test-spec
+ env:
+ CHECK_LEAKS: true
+ if: ${{ matrix.entry.check }}
+ - run: make test-annocheck
+ if: ${{ matrix.entry.check && endsWith(matrix.entry.name, 'annocheck') }}
+
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ github.workflow }} / ${{ matrix.entry.name }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
+
+defaults:
+ run:
+ working-directory: build
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
new file mode 100644
index 0000000000..d8dc58b119
--- /dev/null
+++ b/.github/workflows/macos.yml
@@ -0,0 +1,113 @@
+name: macOS
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ pull_request:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ merge_group:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions:
+ contents: read
+
+jobs:
+ make:
+ strategy:
+ matrix:
+ test_task: ["check"] # "test-bundler-parallel", "test-bundled-gems"
+ os:
+ - macos-13
+ - macos-14
+ - macos-15
+ fail-fast: false
+ env:
+ GITPULLOPTIONS: --no-tags origin ${{github.ref}}
+ runs-on: ${{ matrix.os }}
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
+ steps:
+ - run: mkdir build
+ working-directory:
+ - name: git config
+ run: |
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ path: src
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: src/.downloaded-cache
+ key: downloaded-cache
+ - name: Install libraries
+ run: |
+ brew install gmp libffi openssl@1.1 zlib autoconf automake libtool readline bison
+ working-directory: src
+ - name: Set ENV
+ run: |
+ echo "MAKEFLAGS=-j$((1 + $(sysctl -n hw.activecpu)))" >> $GITHUB_ENV
+ echo "PATH="/usr/local/opt/bison/bin:/opt/homebrew/opt/bison/bin:$PATH"" >> $GITHUB_ENV
+ - run: ./autogen.sh
+ working-directory: src
+ - name: Run configure
+ run: ../src/configure -C --disable-install-doc --with-openssl-dir=$(brew --prefix openssl@1.1) --with-readline-dir=$(brew --prefix readline)
+ - run: make incs
+ - run: make prepare-gems
+ if: ${{ matrix.test_task == 'test-bundled-gems' }}
+ - run: make
+ - run: make leaked-globals
+ if: ${{ matrix.test_task == 'check' }}
+ - name: make ${{ matrix.test_task }}
+ run: |
+ make -s ${{ matrix.test_task }} ${TESTS:+TESTS=`echo "$TESTS" | sed 's| |$$/ -n!/|g;s|^|-n!/|;s|$|$$/|'`}
+ timeout-minutes: 40
+ env:
+ RUBY_TESTOPTS: "-q --tty=no"
+ TESTS: ${{ matrix.test_task == 'check' && matrix.skipped_tests || '' }}
+ TEST_BUNDLED_GEMS_ALLOW_FAILURES: ""
+ PRECHECK_BUNDLED_GEMS: "no"
+ - name: make skipped tests
+ run: |
+ make -s test-all TESTS=`echo "$TESTS" | sed 's| |$$/ -n/|g;s|^|-n/|;s|$|$$/|'`
+ env:
+ GNUMAKEFLAGS: ""
+ RUBY_TESTOPTS: "-v --tty=no"
+ TESTS: ${{ matrix.skipped_tests }}
+ PRECHECK_BUNDLED_GEMS: "no"
+ if: ${{ matrix.test_task == 'check' && matrix.skipped_tests != '' }}
+ continue-on-error: ${{ matrix.continue-on-skipped_tests || false }}
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ matrix.os }} / ${{ matrix.test_task }}${{ matrix.configure }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
+
+defaults:
+ run:
+ working-directory: build
diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml
new file mode 100644
index 0000000000..0df917d3d8
--- /dev/null
+++ b/.github/workflows/mingw.yml
@@ -0,0 +1,179 @@
+name: MinGW
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ pull_request:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ merge_group:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions:
+ contents: read
+
+# Notes:
+# Actions console encoding causes issues, see test-all & test-spec steps
+#
+jobs:
+ make:
+ runs-on: windows-2022
+ name: ${{ github.workflow }} (${{ matrix.msystem }})
+ env:
+ MSYSTEM: ${{ matrix.msystem }}
+ MSYS2_ARCH: x86_64
+ CHOST: "x86_64-w64-mingw32"
+ CFLAGS: "-march=x86-64 -mtune=generic -O3 -pipe"
+ CXXFLAGS: "-march=x86-64 -mtune=generic -O3 -pipe"
+ CPPFLAGS: "-D_FORTIFY_SOURCE=2 -D__USE_MINGW_ANSI_STDIO=1 -DFD_SETSIZE=2048"
+ LDFLAGS: "-pipe"
+ UPDATE_UNICODE: "UNICODE_FILES=. UNICODE_PROPERTY_FILES=. UNICODE_AUXILIARY_FILES=. UNICODE_EMOJI_FILES=."
+ GITPULLOPTIONS: --no-tags origin ${{github.ref}}
+ strategy:
+ matrix:
+ include:
+ # To mitigate flakiness of MinGW CI, we test only one runtime that newer MSYS2 uses.
+ - msystem: "UCRT64"
+ base_ruby: head
+ test_task: "check"
+ test-all-opts: "--name=!/TestObjSpace#test_reachable_objects_during_iteration/"
+ fail-fast: false
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
+ steps:
+ - run: mkdir build
+ working-directory:
+ - name: git config
+ run: |
+ git config --global core.autocrlf false
+ git config --global core.eol lf
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ path: src
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: src/.downloaded-cache
+ key: downloaded-cache
+ - name: Set up Ruby & MSYS2
+ uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0
+ with:
+ ruby-version: ${{ matrix.base_ruby }}
+ - name: set env
+ run: |
+ echo "GNUMAKEFLAGS=-j$((2 * NUMBER_OF_PROCESSORS))" >> $GITHUB_ENV
+
+ - name: where check
+ run: |
+ # show where
+ mv /c/Windows/System32/libcrypto-1_1-x64.dll /c/Windows/System32/libcrypto-1_1-x64.dll_
+ mv /c/Windows/System32/libssl-1_1-x64.dll /c/Windows/System32/libssl-1_1-x64.dll_
+ result=true
+ for e in gcc.exe ragel.exe make.exe bison.exe libcrypto-1_1-x64.dll libssl-1_1-x64.dll; do
+ echo '##['group']'$'\033[93m'$e$'\033[m'
+ where $e || result=false
+ echo '##['endgroup']'
+ done
+ $result
+
+ - name: version check
+ run: |
+ # show version
+ result=true
+ for e in gcc ragel make bison "openssl version"; do
+ case "$e" in *" "*) ;; *) e="$e --version";; esac
+ echo '##['group']'$'\033[93m'$e$'\033[m'
+ $e || result=false
+ echo '##['endgroup']'
+ done
+ $result
+
+ - name: autogen
+ run: |
+ ./autogen.sh
+ working-directory: src
+
+ - name: configure
+ run: >
+ ../src/configure --disable-install-doc --prefix=/.
+ --build=$CHOST --host=$CHOST --target=$CHOST
+
+ - name: update
+ run: |
+ make incs
+
+ - name: download gems
+ run: |
+ make update-gems
+
+ - name: make all
+ timeout-minutes: 30
+ run: |
+ make
+
+ - run: make leaked-globals
+
+ - name: make install
+ run: |
+ make DESTDIR=../install install-nodoc
+
+ - name: test
+ timeout-minutes: 5
+ run: |
+ make test
+ if: ${{matrix.test_task == 'check' || matrix.test_task == 'test'}}
+
+ - name: test-all
+ timeout-minutes: 45
+ run: |
+ # Actions uses UTF8, causes test failures, similar to normal OS setup
+ chcp.com 437
+ make ${{ StartsWith(matrix.test_task, 'test/') && matrix.test_task || 'test-all' }}
+ env:
+ RUBY_TESTOPTS: >-
+ --retry --job-status=normal --show-skip --timeout-scale=1.5
+ ${{ matrix.test-all-opts }}
+ BUNDLER_VERSION:
+ if: ${{matrix.test_task == 'check' || matrix.test_task == 'test-all' || StartsWith(matrix.test_task, 'test/')}}
+
+ - name: test-spec
+ timeout-minutes: 10
+ run: |
+ make ${{ StartsWith(matrix.test_task, 'spec/') && matrix.test_task || 'test-spec' }}
+ if: ${{matrix.test_task == 'check' || matrix.test_task == 'test-spec' || StartsWith(matrix.test_task, 'spec/')}}
+
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ github.workflow }} ${{ matrix.msystem }} / ${{ matrix.test_task }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
+
+defaults:
+ run:
+ working-directory: build
+ shell: sh
diff --git a/.github/workflows/mjit-bindgen.yml b/.github/workflows/mjit-bindgen.yml
new file mode 100644
index 0000000000..26f8a1b2aa
--- /dev/null
+++ b/.github/workflows/mjit-bindgen.yml
@@ -0,0 +1,104 @@
+name: MJIT bindgen
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ pull_request:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ merge_group:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions:
+ contents: read
+
+jobs:
+ make:
+ strategy:
+ matrix:
+ include:
+ - task: mjit-bindgen
+ fail-fast: false
+ runs-on: ubuntu-22.04
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
+ steps:
+ - run: mkdir build
+ working-directory:
+ - name: Set ENV
+ run: |
+ echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
+ - name: Install libraries
+ run: |
+ set -x
+ sudo apt-get update -q || :
+ sudo apt-get install --no-install-recommends -q -y \
+ build-essential \
+ libssl-dev libyaml-dev libreadline6-dev \
+ zlib1g-dev libncurses5-dev libffi-dev \
+ libclang1-14 \
+ bison autoconf
+ sudo apt-get install -q -y pkg-config || :
+ - name: Set up Ruby
+ uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0
+ with:
+ ruby-version: '3.1'
+ - name: git config
+ run: |
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ path: src
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: src/.downloaded-cache
+ key: downloaded-cache
+ - name: Fixed world writable dirs
+ run: |
+ chmod -v go-w $HOME $HOME/.config
+ sudo chmod -R go-w /usr/share
+ sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || :
+ - run: ./autogen.sh
+ working-directory: src
+ - name: Run configure
+ run: ../src/configure -C --disable-install-doc --prefix=$(pwd)/install --enable-yjit=dev_nodebug
+ - run: make incs
+ - run: make
+ - run: make install
+ - run: make ${{ matrix.task }}
+ - run: git diff --exit-code
+ working-directory: src
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ matrix.os }} / ${{ matrix.test_task }}${{ matrix.configure }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
+
+defaults:
+ run:
+ working-directory: build
diff --git a/.github/workflows/mjit.yml b/.github/workflows/mjit.yml
new file mode 100644
index 0000000000..6f7181489a
--- /dev/null
+++ b/.github/workflows/mjit.yml
@@ -0,0 +1,113 @@
+name: MJIT
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ pull_request:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ - '**.[1-8]'
+ - '**.ronn'
+ merge_group:
+ paths-ignore:
+ - 'doc/**'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ - '**.[1-8]'
+ - '**.ronn'
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions:
+ contents: read
+
+jobs:
+ make:
+ strategy:
+ matrix:
+ test_task: [check] # to make job names consistent
+ mjit_opts: [--mjit-wait]
+ fail-fast: false
+ runs-on: ubuntu-latest
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
+ env:
+ TESTOPTS: '-q --tty=no'
+ RUN_OPTS: '--disable-gems ${{ matrix.mjit_opts }} --mjit-debug=-ggdb3'
+ GITPULLOPTIONS: --no-tags origin ${{github.ref}}
+ steps:
+ - run: mkdir build
+ working-directory:
+ - name: Install libraries
+ run: |
+ set -x
+ sudo apt-get update -q || :
+ sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev bison autoconf ruby
+ - name: git config
+ run: |
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ path: src
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: src/.downloaded-cache
+ key: downloaded-cache
+ - name: Fixed world writable dirs
+ run: |
+ chmod -v go-w $HOME $HOME/.config
+ sudo chmod -R go-w /usr/share
+ sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || :
+ - name: Set ENV
+ run: |
+ echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
+ - run: ./autogen.sh
+ working-directory: src
+ - name: Run configure
+ run: ../src/configure -C --disable-install-doc cppflags=-DVM_CHECK_MODE
+ - run: make incs
+ - run: make
+ - run: sudo make -s install
+ - name: Run test
+ run: |
+ unset GNUMAKEFLAGS
+ make -s test RUN_OPTS="$RUN_OPTS"
+ timeout-minutes: 60
+ # - name: Run test-all
+ # run: |
+ # ulimit -c unlimited
+ # make -s test-all RUN_OPTS="$RUN_OPTS"
+ # timeout-minutes: 60
+ - name: Run test-spec
+ run: |
+ unset GNUMAKEFLAGS
+ make -s test-spec RUN_OPTS="$RUN_OPTS"
+ timeout-minutes: 60
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ github.workflow }} / ${{ matrix.test_task }} ${{ matrix.mjit_opts }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
+
+defaults:
+ run:
+ working-directory: build
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
new file mode 100644
index 0000000000..5d4474d978
--- /dev/null
+++ b/.github/workflows/publish.yml
@@ -0,0 +1,18 @@
+name: Start release workflow
+on:
+ push:
+ tags:
+ - '*'
+
+jobs:
+ notify:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Build release package
+ run: |
+ curl -L -X POST \
+ -H "Authorization: Bearer ${{ secrets.MATZBOT_GITHUB_WORKFLOW_TOKEN }}" \
+ -H "Accept: application/vnd.github+json" \
+ -H "X-GitHub-Api-Version: 2022-11-28" \
+ https://api.github.com/repos/ruby/actions/dispatches \
+ -d '{"event_type": "${{ github.ref }}"}'
diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml
new file mode 100644
index 0000000000..c12a95362d
--- /dev/null
+++ b/.github/workflows/scorecards.yml
@@ -0,0 +1,72 @@
+# This workflow uses actions that are not certified by GitHub. They are provided
+# by a third-party and are governed by separate terms of service, privacy
+# policy, and support documentation.
+
+name: Scorecards supply-chain security
+on:
+ # For Branch-Protection check. Only the default branch is supported. See
+ # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
+ branch_protection_rule:
+ # To guarantee Maintained check is occasionally updated. See
+ # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
+ schedule:
+ - cron: '22 4 * * 2'
+ push:
+ branches: [ "master" ]
+
+# Declare default permissions as read only.
+permissions: read-all
+
+jobs:
+ analysis:
+ name: Scorecards analysis
+ runs-on: ubuntu-latest
+ permissions:
+ # Needed to upload the results to code-scanning dashboard.
+ security-events: write
+ # Needed to publish results and get a badge (see publish_results below).
+ id-token: write
+ # Uncomment the permissions below if installing in a private repository.
+ # contents: read
+ # actions: read
+
+ steps:
+ - name: "Checkout code"
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
+
+ - name: "Run analysis"
+ uses: ossf/scorecard-action@ea651e62978af7915d09fe2e282747c798bf2dab # v2.4.1
+ with:
+ results_file: results.sarif
+ results_format: sarif
+ # (Optional) Read-only PAT token. Uncomment the `repo_token` line below if:
+ # - you want to enable the Branch-Protection check on a *public* repository, or
+ # - you are installing Scorecards on a *private* repository
+ # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
+ repo_token: ${{ secrets.SCORECARD_READ_TOKEN }}
+
+ # Public repositories:
+ # - Publish results to OpenSSF REST API for easy access by consumers
+ # - Allows the repository to include the Scorecard badge.
+ # - See https://github.com/ossf/scorecard-action#publishing-results.
+ # For private repositories:
+ # - `publish_results` will always be set to `false`, regardless
+ # of the value entered here.
+ publish_results: true
+
+ # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
+ # format to the repository Actions tab.
+ - name: "Upload artifact"
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ with:
+ name: SARIF file
+ path: results.sarif
+ retention-days: 5
+
+ # Upload the results to GitHub's code scanning dashboard.
+ - name: "Upload to code-scanning"
+ uses: github/codeql-action/upload-sarif@959cbb7472c4d4ad70cdfe6f4976053fe48ab394 # v2.1.27
+ with:
+ sarif_file: results.sarif
diff --git a/.github/workflows/spec_guards.yml b/.github/workflows/spec_guards.yml
new file mode 100644
index 0000000000..4521195a2b
--- /dev/null
+++ b/.github/workflows/spec_guards.yml
@@ -0,0 +1,71 @@
+name: Rubyspec Version Guards Check
+
+on:
+ push:
+ paths:
+ - 'spec/**'
+ - '!spec/*.md'
+ pull_request:
+ paths:
+ - 'spec/**'
+ - '!spec/*.md'
+ merge_group:
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions:
+ contents: read
+
+jobs:
+ rubyspec:
+ name: Rubyspec
+
+ runs-on: ubuntu-22.04
+
+ if: >-
+ ${{!(false
+ || contains(github.event.head_commit.message, '[DOC]')
+ || contains(github.event.head_commit.message, 'Document')
+ || contains(github.event.pull_request.title, '[DOC]')
+ || contains(github.event.pull_request.title, 'Document')
+ || contains(github.event.pull_request.labels.*.name, 'Document')
+ || (github.event_name == 'push' && github.actor == 'dependabot[bot]')
+ )}}
+
+ strategy:
+ matrix:
+ # Specs from ruby/spec should still run on all supported Ruby versions.
+ # This also ensures the needed ruby_version_is guards are there, see spec/README.md.
+ ruby:
+ - ruby-3.1
+ - ruby-3.2
+
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0
+ with:
+ ruby-version: ${{ matrix.ruby }}
+ bundler: none
+
+ - run: gem install webrick
+
+ - run: ruby ../mspec/bin/mspec
+ working-directory: spec/ruby
+ env:
+ CHECK_LEAKS: true
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ github.workflow }} / rubyspec @ ${{ matrix.ruby }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() }}
diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml
new file mode 100644
index 0000000000..4fbca1170e
--- /dev/null
+++ b/.github/workflows/ubuntu.yml
@@ -0,0 +1,146 @@
+name: Ubuntu
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ pull_request:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ merge_group:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions:
+ contents: read
+
+jobs:
+ make:
+ strategy:
+ matrix:
+ # main variables included in the job name
+ test_task: [check]
+ configure: [cppflags=-DRUBY_DEBUG] # default to use more assertions
+ arch: ['']
+ # specify all jobs with `include` to avoid testing duplicated things
+ include:
+ - test_task: check
+ - test_task: check
+ arch: i686
+ configure: '' # test without -DRUBY_DEBUG as well
+ - test_task: check
+ configure: "--enable-shared --enable-load-relative"
+ - test_task: test-all TESTS=--repeat-count=2
+ - test_task: test-bundler-parallel
+ - test_task: test-bundled-gems
+ fail-fast: false
+ env:
+ GITPULLOPTIONS: --no-tags origin ${{github.ref}}
+ RUBY_DEBUG: ci
+ SETARCH: ${{ matrix.arch && format('setarch {0}', matrix.arch) }}
+ runs-on: ubuntu-22.04
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
+ steps:
+ - run: mkdir build
+ working-directory:
+ - name: Set ENV
+ run: |
+ echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
+ - name: Install libraries
+ env:
+ arch: ${{matrix.arch}}
+ run: |
+ set -x
+ arch=${arch:+:${arch/i[3-6]86/i386}}
+ ${arch:+sudo dpkg --add-architecture ${arch#:}}
+ sudo apt-get update -q || :
+ sudo apt-get install --no-install-recommends -q -y \
+ ${arch:+cross}build-essential${arch/:/-} \
+ libssl-dev${arch} libyaml-dev${arch} libreadline6-dev${arch} \
+ zlib1g-dev${arch} libncurses5-dev${arch} libffi-dev${arch} \
+ bison autoconf ruby
+ sudo apt-get install -q -y pkg-config${arch} || :
+ - name: git config
+ run: |
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ path: src
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: src/.downloaded-cache
+ key: downloaded-cache
+ - name: Fixed world writable dirs
+ run: |
+ chmod -v go-w $HOME $HOME/.config
+ sudo chmod -R go-w /usr/share
+ sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || :
+ - run: ./autogen.sh
+ working-directory: src
+ - name: Run configure
+ env:
+ arch: ${{matrix.arch}}
+ run: >-
+ $SETARCH ../src/configure -C --disable-install-doc ${{ matrix.configure }}
+ ${arch:+--target=$arch-$OSTYPE --host=$arch-$OSTYPE}
+ - run: $SETARCH make incs
+ - run: $SETARCH make prepare-gems
+ if: ${{ matrix.test_task == 'test-bundled-gems' }}
+ - run: $SETARCH make
+ - run: $SETARCH make leaked-globals
+ if: ${{ matrix.test_task == 'check' }}
+ - name: Create dummy files in build dir
+ run: |
+ $SETARCH ./miniruby -e '(("a".."z").to_a+("A".."Z").to_a+("0".."9").to_a+%w[foo bar test zzz]).each{|basename|File.write("#{basename}.rb", "raise %(do not load #{basename}.rb)")}'
+ if: ${{ matrix.test_task == 'check' }}
+ - name: make ${{ matrix.test_task }}
+ run: |
+ $SETARCH make -s ${{ matrix.test_task }} ${TESTS:+TESTS=`echo "$TESTS" | sed 's| |$$/ -n!/|g;s|^|-n!/|;s|$|$$/|'`}
+ timeout-minutes: 40
+ env:
+ RUBY_TESTOPTS: "-q --tty=no"
+ TESTS: ${{ matrix.test_task == 'check' && matrix.skipped_tests || '' }}
+ TEST_BUNDLED_GEMS_ALLOW_FAILURES: ""
+ PRECHECK_BUNDLED_GEMS: "no"
+ - name: make skipped tests
+ run: |
+ $SETARCH make -s test-all TESTS=`echo "$TESTS" | sed 's| |$$/ -n/|g;s|^|-n/|;s|$|$$/|'`
+ env:
+ GNUMAKEFLAGS: ""
+ RUBY_TESTOPTS: "-v --tty=no"
+ TESTS: ${{ matrix.skipped_tests }}
+ if: ${{ matrix.test_task == 'check' && matrix.skipped_tests != '' }}
+ continue-on-error: ${{ matrix.continue-on-skipped_tests || false }}
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ github.workflow }} / ${{ matrix.test_task }} ${{ matrix.configure }}${{ matrix.arch }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
+
+defaults:
+ run:
+ working-directory: build
diff --git a/.github/workflows/wasm.yml b/.github/workflows/wasm.yml
new file mode 100644
index 0000000000..27920b5821
--- /dev/null
+++ b/.github/workflows/wasm.yml
@@ -0,0 +1,146 @@
+name: WebAssembly
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ pull_request:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ merge_group:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions: # added using https://github.com/step-security/secure-workflows
+ contents: read
+
+jobs:
+ make:
+ strategy:
+ matrix:
+ entry:
+# # wasmtime can't compile non-optimized Asyncified binary due to locals explosion
+# - { name: O0-debuginfo, optflags: "-O0", debugflags: "-g", wasmoptflags: "-O1" }
+# - { name: O1, optflags: "-O1", debugflags: "" , wasmoptflags: "-O1" }
+ - { name: O2, optflags: "-O2", debugflags: "" , wasmoptflags: "-O2" }
+# - { name: O3, optflags: "-O3", debugflags: "" , wasmoptflags: "-O3" }
+# # -O4 is equivalent to -O3 in clang, but it's different in wasm-opt
+# - { name: O4, optflags: "-O3", debugflags: "" , wasmoptflags: "-O4" }
+# - { name: Oz, optflags: "-Oz", debugflags: "" , wasmoptflags: "-Oz" }
+ fail-fast: false
+ env:
+ RUBY_TESTOPTS: '-q --tty=no'
+ GITPULLOPTIONS: --no-tags origin ${{github.ref}}
+ WASI_SDK_VERSION_MAJOR: 14
+ WASI_SDK_VERSION_MINOR: 0
+ BINARYEN_VERSION: 109
+ WASMTIME_VERSION: v0.33.0
+ runs-on: ubuntu-22.04
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
+ steps:
+ - run: mkdir build
+ working-directory:
+ - name: git config
+ run: |
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ path: src
+ - name: Install libraries
+ run: |
+ set -ex
+ sudo apt-get update -q || :
+ sudo apt-get install --no-install-recommends -q -y ruby bison make autoconf git wget
+
+ wasi_sdk_deb="wasi-sdk_${WASI_SDK_VERSION_MAJOR}.${WASI_SDK_VERSION_MINOR}_amd64.deb"
+ wget "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION_MAJOR}/${wasi_sdk_deb}"
+ sudo dpkg -i "$wasi_sdk_deb"
+ rm -f "$wasi_sdk_deb"
+
+ mkdir build-sdk
+ pushd build-sdk
+
+ wasmtime_url="https://github.com/bytecodealliance/wasmtime/releases/download/${WASMTIME_VERSION}/wasmtime-${WASMTIME_VERSION}-x86_64-linux.tar.xz"
+ wget -O - "$wasmtime_url" | tar xJf -
+ sudo ln -fs "$PWD/wasmtime-${WASMTIME_VERSION}-x86_64-linux/wasmtime" /usr/local/bin/wasmtime
+
+ binaryen_tarball="binaryen-version_${BINARYEN_VERSION}-x86_64-linux.tar.gz"
+ binaryen_url="https://github.com/WebAssembly/binaryen/releases/download/version_${BINARYEN_VERSION}/${binaryen_tarball}"
+ wget -O - "$binaryen_url" | tar xfz -
+ sudo ln -fs "$PWD/binaryen-version_${BINARYEN_VERSION}/bin/wasm-opt" /usr/local/bin/wasm-opt
+ working-directory: src
+ - name: Set ENV
+ run: |
+ echo "MAKEFLAGS=-j$((1 + $(sysctl -n hw.activecpu)))" >> $GITHUB_ENV
+ echo "WASI_SDK_PATH=/opt/wasi-sdk" >> $GITHUB_ENV
+ - run: ./autogen.sh
+ working-directory: src
+
+ - uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0
+ with:
+ ruby-version: '3.0'
+ bundler: none
+
+ - name: Download config.guess with wasi version
+ run: |
+ rm tool/config.guess tool/config.sub
+ ruby tool/downloader.rb -d tool -e gnu config.guess config.sub
+ working-directory: src
+
+ - name: Run configure
+ run: |
+ ../src/configure \
+ --host wasm32-unknown-wasi \
+ --with-static-linked-ext \
+ LDFLAGS=" \
+ -Xlinker --stack-first \
+ -Xlinker -z -Xlinker stack-size=16777216 \
+ " \
+ optflags="${{ matrix.entry.optflags }}" \
+ debugflags="${{ matrix.entry.debugflags }}" \
+ wasmoptflags="${{ matrix.entry.wasmoptflags }} ${{ matrix.entry.debugflags }}"
+
+ # miniruby may not be built when cross-compling
+ - run: make mini ruby
+ - name: Run basictest
+ run: wasmtime run ./../build/miniruby --mapdir /::./ -- basictest/test.rb
+ working-directory: src
+ - name: Run bootstraptest (no thread)
+ run: |
+ NO_THREAD_TESTS="$(grep -L Thread -R ./bootstraptest | awk -F/ '{ print $NF }' | uniq | sed -n 's/test_\(.*\).rb/\1/p' | paste -s -d, -)"
+ ruby ./bootstraptest/runner.rb --ruby="$(which wasmtime) run $PWD/../build/ruby --mapdir /::./ -- " --verbose "--sets=$NO_THREAD_TESTS"
+ working-directory: src
+
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ github.workflow }} / ${{ matrix.name }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
+
+defaults:
+ run:
+ working-directory: build
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
new file mode 100644
index 0000000000..c2bd4881c2
--- /dev/null
+++ b/.github/workflows/windows.yml
@@ -0,0 +1,149 @@
+name: Windows
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ pull_request:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ merge_group:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions:
+ contents: read
+
+jobs:
+ make:
+ strategy:
+ matrix:
+ include:
+ - vs: 2022
+ vcvers: -vcvars_ver=14.2
+ fail-fast: false
+ runs-on: windows-${{ matrix.vs }}
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
+ name: VisualStudio ${{ matrix.vs }}
+ env:
+ GITPULLOPTIONS: --no-tags origin ${{github.ref}}
+ PATCH: C:\msys64\usr\bin\patch.exe
+ OS_VER: windows-${{ matrix.vs }}
+ steps:
+ - run: md build
+ working-directory:
+ - uses: msys2/setup-msys2@61f9e5e925871ba6c9e3e8da24ede83ea27fa91f # v2.27.0
+ id: setup-msys2
+ with:
+ update: true
+ install: bison patch
+ - name: patch path
+ shell: msys2 {0}
+ run: echo PATCH=$(cygpath -wa $(command -v patch)) >> $GITHUB_ENV
+ if: ${{ steps.setup-msys2.outcome == 'success' }}
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: C:\vcpkg\installed
+ key: ${{ runner.os }}-vcpkg-installed-windows-${{ matrix.vs }}-${{ github.sha }}
+ restore-keys: |
+ ${{ runner.os }}-vcpkg-installed-windows-${{ matrix.vs }}-
+ ${{ runner.os }}-vcpkg-installed-windows-
+ - name: Install libraries with vcpkg
+ run: |
+ iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
+ Join-Path (Resolve-Path ~).Path "scoop\shims" >> $Env:GITHUB_PATH
+ scoop install cmake@3.31.6
+ vcpkg --triplet x64-windows install libffi libyaml openssl readline zlib
+ shell:
+ pwsh
+ - name: git config
+ run: |
+ git config --global core.autocrlf false
+ git config --global core.eol lf
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ path: src
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: src/.downloaded-cache
+ key: downloaded-cache
+ - name: setup env
+ # %TEMP% is inconsistent with %TMP% and test-all expects they are consistent.
+ # https://github.com/actions/virtual-environments/issues/712#issuecomment-613004302
+ # msys2/setup-msys2 installs MSYS2 to D:/a/_temp/msys64/usr/bin
+ run: |
+ set Path=D:/a/_temp/msys64/usr/bin;%Path%
+ if not "%VCVARS%" == "" goto :vcset
+ set VCVARS="C:\Program Files (x86)\Microsoft Visual Studio\${{ matrix.vs }}\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
+ if not exist %VCVARS% set VCVARS="C:\Program Files\Microsoft Visual Studio\${{ matrix.vs }}\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
+ :vcset
+ set | C:\msys64\usr\bin\sort > old.env
+ call %VCVARS% ${{ matrix.vcvers || ''}}
+ set TMP=%USERPROFILE%\AppData\Local\Temp
+ set TEMP=%USERPROFILE%\AppData\Local\Temp
+ set /a TEST_JOBS=(15 * %NUMBER_OF_PROCESSORS% / 10) > nul
+ set | C:\msys64\usr\bin\sort > new.env
+ C:\msys64\usr\bin\comm -13 old.env new.env >> %GITHUB_ENV%
+ del *.env
+ - name: compiler version
+ run: cl
+ - name: link libraries
+ run: |
+ for %%I in (C:\vcpkg\installed\x64-windows\bin\*.dll) do (
+ if not %%~nI == readline mklink %%~nxI %%I
+ )
+ for %%I in (libcrypto-1_1-x64 libssl-1_1-x64) do (
+ ren c:\Windows\System32\%%I.dll %%I.dll_
+ )
+ - name: Configure
+ run: >-
+ ../src/win32/configure.bat --disable-install-doc
+ --with-opt-dir=C:/vcpkg/installed/x64-windows
+ - run: nmake incs
+ - run: nmake extract-extlibs
+ - run: nmake
+ env:
+ YACC: bison.exe
+ - run: nmake test
+ timeout-minutes: 5
+ - run: nmake test-spec
+ timeout-minutes: 10
+ - run: nmake test-all
+ env:
+ RUBY_TESTOPTS: -j${{env.TEST_JOBS}} --job-status=normal
+ timeout-minutes: 60
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "VS${{ matrix.vs }} / ${{ matrix.test_task || 'check' }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
+
+defaults:
+ run:
+ working-directory: build
+ shell: cmd
diff --git a/.github/workflows/yjit-ubuntu.yml b/.github/workflows/yjit-ubuntu.yml
new file mode 100644
index 0000000000..0b7b9046e9
--- /dev/null
+++ b/.github/workflows/yjit-ubuntu.yml
@@ -0,0 +1,170 @@
+name: YJIT Ubuntu
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ pull_request:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ merge_group:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions:
+ contents: read
+
+jobs:
+ cargo:
+ name: Rust cargo test
+ # GitHub Action's image seems to already contain a Rust 1.58.0.
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ # For now we can't run cargo test --offline because it complains about the
+ # capstone dependency, even though the dependency is optional
+ #- run: cargo test --offline
+ - run: RUST_BACKTRACE=1 cargo test
+ working-directory: yjit
+ # Also compile and test with all features enabled
+ - run: RUST_BACKTRACE=1 cargo test --all-features
+ working-directory: yjit
+ # Check that we can build in release mode too
+ - run: cargo build --release
+ working-directory: yjit
+ make:
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - test_task: 'yjit-bindgen'
+ hint: 'To fix: use patch in logs'
+ configure: '--with-gcc=clang-14 --enable-yjit=dev'
+ libclang_path: '/usr/lib/llvm-14/lib/libclang.so.1'
+
+ - test_task: "check"
+ # YJIT should be automatically built in release mode on x86-64 Linux with rustc present
+ #configure: "--enable-yjit RUSTC='rustc +1.58.0'"
+ configure: "RUSTC='rustc +1.58.0'"
+ rust_version: "1.58.0"
+
+ - test_task: "check"
+ configure: "--enable-yjit=dev"
+
+ - test_task: "check"
+ configure: "--enable-yjit=dev"
+ yjit_opts: "--yjit-call-threshold=1 --yjit-verify-ctx"
+
+ - test_task: "test-all TESTS=--repeat-count=2"
+ configure: "--enable-yjit=dev"
+
+ - test_task: "test-bundled-gems"
+ configure: "--enable-yjit=dev"
+
+ - test_task: "yjit-bench"
+ configure: "--enable-yjit=dev"
+ yjit_bench_opts: "--yjit-stats"
+ env:
+ GITPULLOPTIONS: --no-tags origin ${{github.ref}}
+ RUN_OPTS: ${{ matrix.yjit_opts }}
+ YJIT_BENCH_OPTS: ${{ matrix.yjit_bench_opts }}
+ RUBY_DEBUG: ci
+ BUNDLE_JOBS: 8 # for yjit-bench
+ runs-on: ubuntu-22.04
+ if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
+ steps:
+ - run: mkdir build
+ working-directory:
+ - name: Install libraries
+ run: |
+ set -x
+ sudo apt-get update -q || :
+ sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev bison autoconf ruby
+ - name: Install Rust
+ if: ${{ matrix.rust_version }}
+ run: rustup install ${{ matrix.rust_version }} --profile minimal
+ - name: git config
+ run: |
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ path: src
+ - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
+ with:
+ path: src/.downloaded-cache
+ key: downloaded-cache
+ - name: Fixed world writable dirs
+ run: |
+ chmod -v go-w $HOME $HOME/.config
+ sudo chmod -R go-w /usr/share
+ sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || :
+ - name: Set ENV
+ run: |
+ echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
+ - run: ./autogen.sh
+ working-directory: src
+ - name: Run configure
+ run: ../src/configure -C --disable-install-doc --prefix=$(pwd)/install ${{ matrix.configure }}
+ - run: make incs
+ - run: make prepare-gems
+ if: ${{ matrix.test_task == 'test-bundled-gems' }}
+ - run: make -j
+ - run: make leaked-globals
+ if: ${{ matrix.test_task == 'check' }}
+ - name: Create dummy files in build dir
+ run: |
+ ./miniruby -e '(("a".."z").to_a+("A".."Z").to_a+("0".."9").to_a+%w[foo bar test zzz]).each{|basename|File.write("#{basename}.rb", "raise %(do not load #{basename}.rb)")}'
+ if: ${{ matrix.test_task == 'check' }}
+ - name: Enable YJIT through ENV
+ run: echo "RUBY_YJIT_ENABLE=1" >> $GITHUB_ENV
+ # Check that the binary was built with YJIT
+ - name: Check YJIT enabled
+ run: ./miniruby --yjit -v | grep "+YJIT"
+ - name: make ${{ matrix.test_task }}
+ run: make -s -j ${{ matrix.test_task }} RUN_OPTS="$RUN_OPTS" YJIT_BENCH_OPTS="$YJIT_BENCH_OPTS"
+ timeout-minutes: 60
+ env:
+ RUBY_TESTOPTS: "-q --tty=no"
+ TEST_BUNDLED_GEMS_ALLOW_FAILURES: ""
+ PRECHECK_BUNDLED_GEMS: "no"
+ LIBCLANG_PATH: ${{ matrix.libclang_path }}
+ continue-on-error: ${{ matrix.test_task == 'yjit-bench' }}
+ - name: Show ${{ github.event.pull_request.base.ref }} GitHub URL for yjit-bench comparison
+ run: echo "https://github.com/${BASE_REPO}/commit/${BASE_SHA}"
+ env:
+ BASE_REPO: ${{ github.event.pull_request.base.repo.full_name }}
+ BASE_SHA: ${{ github.event.pull_request.base.sha }}
+ if: ${{ matrix.test_task == 'yjit-bench' && startsWith(github.event_name, 'pull') }}
+ - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ github.workflow }} / ${{ matrix.test_task }} ${{ matrix.configure }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref_name }}"
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
+
+defaults:
+ run:
+ working-directory: build
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000..99d32a1825
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,250 @@
+*-*-*.def
+*-*-*.exp
+*-*-*.lib
+*.a
+*.bak
+*.bc
+*.bundle
+*.dSYM
+*.dmyh
+*.dylib
+*.elc
+*.i
+*.ii
+*.inc
+*.log
+*.o
+*.o.tmp
+*.obj
+*.old
+*.orig
+*.pch
+*.pdb
+*.rbinc
+*.rej
+*.s
+*.sav
+*.sl
+*.so
+*.so.*
+*.swp
+*.yarb
+*~
+.*.list
+.*.time
+.DS_Store
+.bundle
+.ccmalloc
+.ext
+.pc
+.ppack
+.svn
+.time
+.ruby-version
+Makefile
+cygruby*.def
+extconf.h
+y.output
+y.tab.c
+*.gcda
+*.gcno
+*.gcov
+*.vscode
+lcov*.info
+
+# /
+/*-fake.rb
+/*.dll
+/*.exe
+/*.res
+/*.pc
+/*.rc
+/*_prelude.c
+/.downloaded-cache
+/.top-enc.mk
+/build*/
+/COPYING.LIB
+/ChangeLog
+/Doxyfile
+/GNUmakefile
+/README.atheos
+/README.fat-patch
+/README.v6
+/TAGS
+/archive
+/autom4te*.cache
+/automake
+/benchmark/benchmark-driver
+/beos
+/bmlog-*
+/breakpoints.gdb
+/config.cache
+/config.h
+/config.h.in
+/config.status
+/config.status.lineno
+/configure
+/coverage/simplecov
+/coverage/simplecov-html
+/coverage/doclie
+/coverage/.last_run.json
+/coverage/.resultset.json*
+/coverage/assets
+/coverage/index.html
+/doc/capi
+/enc.mk
+/encdb.h
+/exts.mk
+/goruby
+/id.[ch]
+/largefile.h
+/lcov-c-out
+/lcov-rb-out
+/lcov-out
+/lex.c
+/libruby*.*
+/miniprelude.c
+/miniruby
+/newdate.rb
+/newline.c
+/newver.rb
+/parse.c
+/parse.h
+/patches
+/patches-master
+/pitest.rb
+/ppack
+/prelude.c
+/preview
+/probes.dmyh
+/probes.h
+/rbconfig.rb
+/rename2.h
+/repack
+/revision.h
+/revision.tmp
+/riscos
+/rubicon
+/ruby
+/ruby-runner
+/ruby-runner.h
+/ruby-man.rd.gz
+/rubyspec_temp
+/run.gdb
+/sizes.c
+/static-ruby
+/test.rb
+/test-coverage.dat
+/tmp
+/transdb.h
+/uncommon.mk
+/verconf.h
+/verconf.mk
+/web
+/yasmdata.rb
+
+# /bin/
+
+/bin/*.exe
+/bin/*.dll
+/bin/goruby
+/bin/ruby
+
+# /benchmark/
+/benchmark/bm_require.data
+/benchmark/bmx_*.rb
+/benchmark/fasta.output.*
+/benchmark/wc.input
+
+/enc/*.def
+/enc/*.exp
+/enc/*.lib
+/enc/jis/props.h
+/enc/unicode/data
+
+# /coroutine/
+!/coroutine/**/*.s
+
+# /enc/trans/
+/enc/trans/*.c
+/enc/trans/*.def
+/enc/trans/*.exp
+/enc/trans/*.lib
+
+# /exe/
+/exe/goruby
+/exe/ruby
+
+# /ext/
+/ext/extinit.c
+/ext/configure-ext.mk
+/ext/*/exts.mk
+
+# /ext/-test-/cxxanyargs
+/ext/-test-/cxxanyargs/failure*.failed
+
+# /ext/-test-/win32/dln/
+/ext/-test-/win32/dln/dlntest.dll
+/ext/-test-/win32/dln/dlntest.exp
+/ext/-test-/win32/dln/dlntest.lib
+
+# /ext/-test-/gems
+/ext/-test-/gems
+
+# /ext/etc/
+/ext/etc/constdefs.h
+
+# /ext/fiddle/
+/ext/fiddle/libffi-*
+
+# /ext/rbconfig/
+/ext/rbconfig/sizeof/sizes.c
+/ext/rbconfig/sizeof/limits.c
+
+# /ext/ripper/
+/ext/ripper/eventids1.c
+/ext/ripper/.eventids2-check
+/ext/ripper/eventids2table.c
+/ext/ripper/ripper.*
+/ext/ripper/ids1
+/ext/ripper/ids2
+
+# /ext/socket/
+/ext/socket/constants.h
+/ext/socket/constdefs.h
+/ext/socket/constdefs.c
+
+# /gems
+/gems/*.gem
+/gems/src
+/gems/*-*
+
+# /lib/
+/lib/ruby/[1-9]*.*
+/lib/ruby/vendor_ruby
+
+# /misc/
+/misc/**/__pycache__
+
+# /spec/bundler
+/.rspec_status
+
+# /tool/
+/tool/config.guess
+/tool/config.sub
+
+# /win32/
+/win32/*.ico
+
+# MJIT
+/include/ruby-*/*/rb_mjit_min_header-*.h
+/lib/ruby_vm/mjit/instruction.rb
+/mjit_config.h
+/rb_mjit_header.h
+
+# YJIT
+/yjit-bench
+/yjit_exit_locations.dump
+
+# /wasm/
+/wasm/tests/*.wasm
diff --git a/.indent.pro b/.indent.pro
new file mode 100644
index 0000000000..1d61cbcad1
--- /dev/null
+++ b/.indent.pro
@@ -0,0 +1,32 @@
+-bap
+-nbbb
+-nbc
+-br
+-brs
+-nbs
+-ncdb
+-nce
+-cdw
+-cli2
+-cbi2
+-ndj
+-ncs
+-nfc1
+-i4
+-l120
+-lp
+-npcs
+-psl
+-sc
+-sob
+-sbi4
+-nut
+-par
+
+-TID
+-TVALUE
+-Tst_data_t
+-Tst_index_t
+-Tst_table
+-Trb_data_type_t
+-TFILE
diff --git a/.rdoc_options b/.rdoc_options
new file mode 100644
index 0000000000..760507c7a2
--- /dev/null
+++ b/.rdoc_options
@@ -0,0 +1,4 @@
+---
+page_dir: doc
+main_page: README.md
+title: Documentation for Ruby development version
diff --git a/.rspec_parallel b/.rspec_parallel
new file mode 100644
index 0000000000..aaff198a32
--- /dev/null
+++ b/.rspec_parallel
@@ -0,0 +1,2 @@
+--format progress
+--format ParallelTests::RSpec::RuntimeLogger --out tmp/parallel_runtime_rspec.log
diff --git a/BSDL b/BSDL
new file mode 100644
index 0000000000..66d93598aa
--- /dev/null
+++ b/BSDL
@@ -0,0 +1,22 @@
+Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000000..13df6087ca
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1 @@
+See ["Contributing to Ruby"](https://docs.ruby-lang.org/en/master/contributing_md.html), which includes setup and build instructions.
diff --git a/COPYING b/COPYING
index eeb586b392..48e5a96de7 100644
--- a/COPYING
+++ b/COPYING
@@ -1,340 +1,56 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
+Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
+You can redistribute it and/or modify it under either the terms of the
+2-clause BSDL (see the file BSDL), or the conditions below:
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
+1. You may make and give away verbatim copies of the source form of the
+ software without restriction, provided that you duplicate all of the
+ original copyright notices and associated disclaimers.
- Preamble
+2. You may modify your copy of the software in any way, provided that
+ you do at least ONE of the following:
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
+ a. place your modifications in the Public Domain or otherwise
+ make them Freely Available, such as by posting said
+ modifications to Usenet or an equivalent medium, or by allowing
+ the author to include your modifications in the software.
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
+ b. use the modified software only within your corporation or
+ organization.
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
+ c. give non-standard binaries non-standard names, with
+ instructions on where to get the original software distribution.
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
+ d. make other distribution arrangements with the author.
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
+3. You may distribute the software in object code or binary form,
+ provided that you do at least ONE of the following:
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
+ a. distribute the binaries and library files of the software,
+ together with instructions (in the manual page or equivalent)
+ on where to get the original distribution.
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
+ b. accompany the distribution with the machine-readable source of
+ the software.
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+ c. give non-standard binaries non-standard names, with
+ instructions on where to get the original software distribution.
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
+ d. make other distribution arrangements with the author.
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
+4. You may modify and include the part of the software into any other
+ software (possibly commercial). But some files in the distribution
+ are not written by the author, so that they are not under these terms.
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
+ For the list of those files and their copying conditions, see the
+ file LEGAL.
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
+5. The scripts and library files supplied as input to or produced as
+ output from the software do not automatically fall under the
+ copyright of the software, but belong to whomever generated them,
+ and may be sold commercially, and may be aggregated with this
+ software.
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE.
diff --git a/COPYING.ja b/COPYING.ja
new file mode 100644
index 0000000000..230376bc60
--- /dev/null
+++ b/COPYING.ja
@@ -0,0 +1,51 @@
+本プログラムã¯ãƒ•リーソフトウェアã§ã™ï¼Ž2-clause BSDL
+ã¾ãŸã¯ä»¥ä¸‹ã«ç¤ºã™æ¡ä»¶ã§æœ¬ãƒ—ログラムをå†é…布ã§ãã¾ã™
+2-clause BSDLã«ã¤ã„ã¦ã¯BSDLファイルをå‚ç…§ã—ã¦ä¸‹ã•ã„.
+
+1. 複製ã¯åˆ¶é™ãªã自由ã§ã™ï¼Ž
+
+2. ä»¥ä¸‹ã®æ¡ä»¶ã®ã„ãšã‚Œã‹ã‚’満ãŸã™æ™‚ã«æœ¬ãƒ—ログラムã®ã‚½ãƒ¼ã‚¹ã‚’
+ 自由ã«å¤‰æ›´ã§ãã¾ã™ï¼Ž
+
+ a. ãƒãƒƒãƒˆãƒ‹ãƒ¥ãƒ¼ã‚ºã«ãƒã‚¹ãƒˆã—ãŸã‚Šï¼Œä½œè€…ã«å¤‰æ›´ã‚’é€ä»˜ã™ã‚‹
+ ãªã©ã®æ–¹æ³•ã§ï¼Œå¤‰æ›´ã‚’公開ã™ã‚‹ï¼Ž
+
+ b. 変更ã—ãŸæœ¬ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã‚’è‡ªåˆ†ã®æ‰€å±žã™ã‚‹çµ„織内部ã ã‘ã§
+ 使ã†ï¼Ž
+
+ c. 変更点を明示ã—ãŸã†ãˆï¼Œã‚½ãƒ•トウェアã®åå‰ã‚’変更ã™ã‚‹ï¼Ž
+ ãã®ã‚½ãƒ•トウェアをé…布ã™ã‚‹æ™‚ã«ã¯å¤‰æ›´å‰ã®æœ¬ãƒ—ログラ
+ ãƒ ã‚‚åŒæ™‚ã«é…布ã™ã‚‹ï¼Žã¾ãŸã¯å¤‰æ›´å‰ã®æœ¬ãƒ—ログラムã®ã‚½ãƒ¼
+ スã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
+
+ d. ãã®ä»–ã®å¤‰æ›´æ¡ä»¶ã‚’作者ã¨åˆæ„ã™ã‚‹ï¼Ž
+
+3. ä»¥ä¸‹ã®æ¡ä»¶ã®ã„ãšã‚Œã‹ã‚’満ãŸã™æ™‚ã«æœ¬ãƒ—ログラムをコンパイ
+ ルã—ãŸã‚ªãƒ–ジェクトコードや実行形å¼ã§ã‚‚é…布ã§ãã¾ã™ï¼Ž
+
+ a. ãƒã‚¤ãƒŠãƒªã‚’å—ã‘å–ã£ãŸäººãŒã‚½ãƒ¼ã‚¹ã‚’入手ã§ãるよã†ã«ï¼Œ
+ ソースã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
+
+ b. 機械å¯èª­ãªã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’添付ã™ã‚‹ï¼Ž
+
+ c. 変更を行ã£ãŸãƒã‚¤ãƒŠãƒªã¯åå‰ã‚’変更ã—ãŸã†ãˆï¼Œã‚ªãƒªã‚¸ãƒŠ
+ ルã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
+
+ d. ãã®ä»–ã®é…布æ¡ä»¶ã‚’作者ã¨åˆæ„ã™ã‚‹ï¼Ž
+
+4. ä»–ã®ãƒ—ログラムã¸ã®å¼•用ã¯ã„ã‹ãªã‚‹ç›®çš„ã§ã‚れ自由ã§ã™ï¼ŽãŸ
+ ã ã—,本プログラムã«å«ã¾ã‚Œã‚‹ä»–ã®ä½œè€…ã«ã‚ˆã‚‹ã‚³ãƒ¼ãƒ‰ã¯ï¼Œã
+ れãžã‚Œã®ä½œè€…ã®æ„å‘ã«ã‚ˆã‚‹åˆ¶é™ãŒåŠ ãˆã‚‰ã‚Œã‚‹å ´åˆãŒã‚りã¾ã™ï¼Ž
+
+ ãれらファイルã®ä¸€è¦§ã¨ãれãžã‚Œã®é…布æ¡ä»¶ãªã©ã«ä»˜ã„ã¦ã¯
+ LEGALファイルをå‚ç…§ã—ã¦ãã ã•ã„.
+
+5. 本プログラムã¸ã®å…¥åŠ›ã¨ãªã‚‹ã‚¹ã‚¯ãƒªãƒ—トãŠã‚ˆã³ï¼Œæœ¬ãƒ—ログラ
+ ムã‹ã‚‰ã®å‡ºåŠ›ã®æ¨©åˆ©ã¯æœ¬ãƒ—ログラムã®ä½œè€…ã§ã¯ãªã,ãれãž
+ れã®å…¥å‡ºåŠ›ã‚’ç”Ÿæˆã—ãŸäººã«å±žã—ã¾ã™ï¼Žã¾ãŸï¼Œæœ¬ãƒ—ログラムã«
+ 組ã¿è¾¼ã¾ã‚Œã‚‹ãŸã‚ã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã«ã¤ã„ã¦ã‚‚åŒæ§˜ã§ã™ï¼Ž
+
+6. 本プログラムã¯ç„¡ä¿è¨¼ã§ã™ï¼Žä½œè€…ã¯æœ¬ãƒ—ログラムをサãƒãƒ¼ãƒˆ
+ ã™ã‚‹æ„å¿—ã¯ã‚りã¾ã™ãŒï¼Œãƒ—ログラム自身ã®ãƒã‚°ã‚ã‚‹ã„ã¯æœ¬ãƒ—
+ ログラムã®å®Ÿè¡Œãªã©ã‹ã‚‰ç™ºç”Ÿã™ã‚‹ã„ã‹ãªã‚‹æå®³ã«å¯¾ã—ã¦ã‚‚責
+ 任をæŒã¡ã¾ã›ã‚“.
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index 63ad0140d7..0000000000
--- a/ChangeLog
+++ /dev/null
@@ -1,8506 +0,0 @@
-Mon Oct 2 05:28:58 2000 akira yamada <akira@ruby-lang.org>
-
- * string.c (trnext): minus at the end of pattern.
-
-Sun Oct 1 00:43:34 2000 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * configure.in: exp-name was wrong on cygwin and mingw32.
-
-Thu Sep 28 14:57:09 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * regex.c (re_compile_pattern): should try must_string calculation
- every time.
-
-Tue Sep 19 23:47:44 2000 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
-
- * configure.in, config.guess, config.sub: MacOS X support.
-
-Wed Sep 27 18:40:05 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * stable version 1.6.1 released.
-
-Wed Sep 27 16:13:05 2000 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * mkconfig.rb: variables should be expanded only if /\$\{?\w+\}?/.
-
-Tue Sep 26 18:09:51 2000 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * string.c: include <math.h>
-
-Tue Sep 26 15:59:50 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_mod_dup): metaclasses of class/module should not be
- cleared by rb_obj_dup.
-
-Tue Sep 26 02:44:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * gc.c (GC_MALLOC_LIMIT): size extended.
-
- * regex.c (DOUBLE_STACK): use machine's stack region for regex
- stack if its size is small enough.
-
-Mon Sep 25 18:13:07 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * regex.c: include <defines.h>.
-
- * eval.c (rb_add_method): cache mismatch by method
- definition. need to clear_cache_by_id every time.
-
-Mon Sep 25 13:31:45 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * win32/win32.c (NtCmdGlob): substitute '\\' with '/'.
-
-Mon Sep 25 00:35:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * defines.h: #undef HAVE_SETITIMER on cygwin.
-
-Sun Sep 24 03:01:53 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, http.rb: typo.
-
-Sat Sep 23 07:33:20 2000 Aleksi Niemela <aleksi.niemela@cinnober.com>
-
- * regex.c (re_compile_pattern): nicer regexp error messages for
- invalid patterns.
-
-Sat Sep 23 03:06:25 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * variable.c (rb_autoload_load): should not require already
- provided features.
-
-Fri Sep 22 15:46:21 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/http.rb: too early parameter expantion in string.
-
-Fri Sep 22 13:58:51 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/extmk.rb.in: don't use default $:
-
-Fri Sep 22 13:42:50 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * regex.c (PUSH_FAILURE_COUNT): avoid casting warning on alpha.
-
- * regex.c (PUSH_FAILURE_POINT): ditto.
-
-Fri Sep 22 10:16:21 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * win32/config.h.in: add HAVE_TELLDIR, HAVE_SEEKDIR
-
-Thu Sep 21 19:04:34 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/extmk.rb, lib/mkmf.rb (install_rb): check whether libdir is
- directory or not.
-
-Thu Sep 21 17:23:05 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * file.c (rb_file_s_symlink): use HAVE_SYMLINK.
-
- * file.c (rb_file_s_readlink): use HAVE_READLINK.
-
- * dir.c (dir_tell): use HAVE_TELLDIR.
-
- * dir.c (dir_seek): use HAVE_SEEKDIR.
-
- * configure.in (AC_CHECK_FUNCS): lstat, symlink, readlink,
- telldir, seekdir checks added.
-
- * file.c (lstat): should use stat(2) if lstat(2) is not
- available.
-
-Thu Sep 21 15:59:23 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.29.
-
- * lib/net/http.rb: HTTPReadAdapter -> HTTPResponseReceiver
-
- * lib/net/http.rb (connecting): response is got in receive()
-
-Thu Sep 21 15:49:07 2000 Wayne Scott <wscott@ichips.intel.com>
-
- * lib/find.rb (find): should not follow symbolic links;
- tuned performance too.
-
-Wed Sep 20 23:21:38 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ruby.c (load_file): two Ctrl-D was required to stop ruby at the
- beginning of stdin script read.
-
-Wed Sep 20 14:01:45 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_provided): detect infnite load loop.
-
- * eval.c (rb_provided): too weak filename comparison.
-
- * eval.c (rb_thread_alloc): avoid recycling still referenced
- dvar structures.
-
- * eval.c (rb_callcc): ditto.
-
- * eval.c (THREAD_ALLOC): fiil dyna_vars field by ruby_dyna_vars.
-
-Tue Sep 19 17:47:03 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * stable version 1.6.0 released.
-
-Tue Sep 19 16:24:52 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * marshal.c (Init_marshal): provide marshal.so no more.
-
-Tue Sep 19 14:01:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in, win32/setup.mak: include version number
- in RUBY_SO_NAME.
-
-Tue Sep 19 13:07:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (yylex): was confusing $~ and $_.
-
-Tue Sep 19 13:06:53 2000 GOTOU YUUZOU <gotoyuzo@notwork.org>
-
- * signal.c (rb_f_kill): signum may be a negative number, should be
- treated by signed number.
-
-Tue Sep 19 01:14:56 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_provide): better feature handling.
-
- * eval.c (rb_f_require): loading ruby library may be partial
- state. checks in rb_thread_loading is integrated.
-
- * eval.c (rb_provided): better thread awareness.
-
- * lib/irb/frame.rb: 6 (not 5) parameters for trace_func proc.
-
- * eval.c (error_print): should print error position even if
- get_backtrace() failed.
-
-Sat Sep 16 03:29:59 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_f_require): rb_provided() was called too early; does
- not work well with threads.
-
- * parse.y (ensure): should distinguish empty ensure and non
- existing ensure.
-
- * file.c (Init_File): extending File by class of FileTest was
- serious mistake.
-
-Thu Sep 14 02:46:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_thread_yield): array strip should be done in this
- function.
-
-Wed Sep 13 17:01:03 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * bignum.c (rb_big_eq): imcomplete value compare of bignums.
-
-Wed Sep 13 06:39:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * variable.c (rb_mod_class_variables): Module#class_variables added.
-
-Wed Sep 13 06:09:26 2000 Wakou Aoyama <wakou@fsinet.or.jp>
-
- * lib/cgi.rb: bug fix: CGI::header(): output status header.
-
-Wed Sep 13 01:09:12 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (yylex): allow global variables like '$__a'.
-
-Tue Sep 12 22:28:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/socket/extconf.rb: avoid using terrible <netinet/tcp.h>
- on cygwin 1.1.5.
-
-Tue Sep 12 16:01:58 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * array.c (rb_ary_unshift_m): typo.
-
-Tue Sep 12 15:37:55 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_yield_0): stripped array too much, should remove just
- for proc_call().
-
-Tue Sep 12 07:05:24 2000 Wakou Aoyama <wakou@fsinet.or.jp>
-
- * lib/cgi.rb: version 2.0.0: require ruby1.5.4 or later.
-
- * lib/net/telnet.rb: version 1.6.0
-
-Tue Sep 12 03:26:07 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (massign): use to_ary to get an array if available.
-
- * object.c (rb_Array): ditto.
-
-Mon Sep 11 14:24:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * hash.c (ruby_setenv): should not free the element of
- origenvironment.
-
- * parse.y (command_call): kYIELD moved to this rule to allow
- 'a = yield b'. (ruby-bugs-ja:#PR15)
-
-Mon Sep 11 01:27:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_yield_0): proc#call([]) should pass single value to
- the block.
-
- * eval.c (callargs): reduce array allocation.
-
- * eval.c (massign): precise check for argument number.
-
-Fri Sep 8 10:05:17 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * gc.c (STR_NO_ORIG): should be FL_USER2.
-
-Thu Sep 7 14:17:51 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_cat): should work even for concatenating same
- string.
-
-Wed Sep 6 17:06:38 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * variable.c (rb_cvar_declare): should check superclass's class
- variable first.
-
-Wed Sep 6 10:42:02 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-calculate-indent): shift continuing line
- if previous line ends with modifier keyword.
-
- * misc/ruby-mode.el (ruby-parse-region): should not give up if
- modifiers are at the end of line.
-
- * misc/ruby-mode.el (ruby-expr-beg): indented wrongly if modified
- statement was size 1.
-
-Wed Sep 6 10:41:19 2000 Kenichi Komiya <kom@mail1.accsnet.ne.jp>
-
- * misc/ruby-mode.el (ruby-parse-region): modifier was not handled
- well on emacs19.
-
-Tue Sep 5 17:10:12 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * time.c (time_to_s): fixed zone string UTC for utc time object.
-
-Tue Sep 5 00:26:06 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * regex.c (re_search): range worked wrongly on bm_search().
-
-Mon Sep 4 13:40:40 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: renamed libruby.a to libruby.{cygwin,mingw32}.a
- on cygwin and mingw32.
-
-Sun Sep 3 23:44:04 2000 Noriaki Harada <tenmei@maoh.office.ne.jp>
-
- * io.c (NO_SAFE_RENAME): for BeOS too.
-
-Sun Sep 3 11:31:53 2000 Takaaki Tateishi <ttate@jaist.ac.jp>
-
- * parse.y (rescue): no assignment was done if rescue body was
- empty.
-
-Sat Sep 2 10:52:21 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (call_args,aref_args): block_call can be the last
- argument.
-
- * parse.y (COND_PUSH,COND_POP): maintain condition stack to allow
- kDO2 in parentheses in while/until/for conditions.
-
- * parse.y (yylex): generate kDO2 for EXPR_ARG outside of
- while/until/for condition.
-
-Fri Sep 1 10:36:29 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (aref_args,opt_call_args): add block_call to allow a
- method without parentheses and with block as a last argument.
-
- * hash.c (rb_hash_sort): should not retrun nil.
-
- * re.c (match_aref): should use rb_reg_nth_match().
-
- * eval.c (POP_SCOPE): recycled scopes too much
-
- * eval.c (Init_eval): extend room for stack allowance.
-
- * eval.c (POP_SCOPE): frees scope too much.
-
-Thu Aug 31 14:28:39 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * gc.c (rb_gc_mark): T_SCOPE condition must be more precise.
-
- * eval.c (scope_dup): should not make all duped scope orphan.
-
-Thu Aug 31 10:11:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (stmt): allow stmt_rhs to be right hand side of multiple
- assignment.
-
- * time.c (rb_time_timeval): type error should not mention the word
- 'interval'.
-
-Wed Aug 30 23:21:20 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * numeric.c (rb_num2long): use rb_Integer() instead of independent
- convert routine.
-
- * eval.c (rb_rescue2): now takes arbitrary number of exception types.
-
- * object.c (rb_convert_type): use rb_rescue2 now to handle NameError.
-
- * object.c (rb_convert_type): better error message.
-
-Wed Aug 30 17:09:14 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/Win32API/Win32API.c (Win32API_initialize): AlphaNT support.
-
-Wed Aug 30 14:19:07 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (node_assign): should support NODE_CVASGN2 too.
-
-Wed Aug 30 11:31:47 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * ext/Win32API/Win32API.c (Win32API_initialize): add the
- arguments checking.
-
- * ext/Win32API/Win32API.c (Win32API_initialize): add taint
- checking. allow String object in the third argument.
-
-Wed Aug 30 10:29:40 2000 Masahiro Tomita <tommy@tmtm.org>
-
- * io.c (rb_f_p): flush output buffer.
-
-Tue Aug 29 16:29:15 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (assignable): remove NODE_CVASGN3.
-
- * parse.y (gettable): remove NODE_CVAR3.
-
-Tue Aug 29 02:02:14 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/mkmf.rb (create_makefile): handles create_makefile("a/b").
-
- * ext/extmk.rb.in (create_makefile): ditto
-
-Mon Aug 28 18:43:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (is_defined): now handles class variables.
-
- * eval.c (rb_eval): class variable behavior revisited.
-
- * parse.y (assignable): ditto.
-
- * parse.y (gettable): ditto.
-
- * regex.c (PUSH_FAILURE_COUNT): push/pop interval count on failure
- stack. this fix is inspired by the Emacs21 patch from Stefan
- Monnier <monnier@cs.yale.edu>.
-
-Fri Aug 25 15:24:39 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * variable.c (rb_cvar_get): should not follow __attached__.
-
- * variable.c (rb_cvar_set): ditto.
-
- * variable.c (rb_cvar_declare): ditto.
-
- * variable.c (mod_av_set): second class variable assignment at the
- toplevel should not give warning.
-
-Fri Aug 25 01:18:36 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * io.c (next_argv): prepare path for open file.
-
- * string.c (rb_str_setter): moved from io.c.
-
- * io.c (next_argv): filename should be "-" for refreshed ARGF.
-
-Thu Aug 24 15:27:39 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/socket/socketport.h: use `extern int h_errno' if needed.
-
-Sat Aug 19 01:34:02 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/sdbm/_sdbm.c (sdbm_prep): flags should be or-ed by O_BINARY on
- Win32 too.
-
- * ext/sdbm/_sdbm.c (makroom): fill hole with 0 on Win32 too.
-
-Fri Aug 18 13:23:59 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_eval): should preserve and clear $! value before
- compilation.
-
- * eval.c (eval): ditto.
-
-Fri Aug 18 11:06:19 2000 Shugo Maeda <shugo@ruby-lang.org>
-
- * ext/socket/socket.c (s_accept): start GC on EMFILE/ENFILE.
-
-Thu Aug 17 16:04:48 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (is_defined): should clear ruby_errinfo.
-
-Thu Aug 17 04:26:31 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.27.
-
- * lib/net/protocol.rb: writing methods returns written byte size.
-
- * lib/net/smtp.rb: send_mail accepts many destinations.
-
-Wed Aug 16 00:43:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * time.c (time_s_times): use CLK_TCK for HZ if it's defined.
-
-Tue Aug 15 17:30:59 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (frame_dup): should set flag FRAME_MALLOC after
- argv allocation.
-
- * eval.c (blk_free): should not free argv if GC was called before
- frame_dup.
-
-Tue Aug 15 16:08:40 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: add ac_cv_func_times=yes for mingw32.
-
- * win32/win32.c (mytimes): typo.
-
-Tue Aug 15 01:45:28 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * io.c (argf_eof): should return true at the end of ARGF without
- checking stdout if arguments are given.
-
-Mon Aug 14 10:34:32 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_thread_status): status should return false for normal
- termination, nil for termination by exception.
-
-Fri Aug 11 15:43:46 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_undef): give warning for undefining __id__, __send__.
-
-Thu Aug 10 08:05:03 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_callcc): returned current thread instaed of
- continuation wrongly.
-
-Thu Aug 10 05:40:28 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/extmk.rb.in: $CPPFLAGS should be initialized.
-
- * ext/tcltklib/depend: add stubs.o.
-
- * ext/tcltklib/extconf.rb: use $CPPFLAGS instead of $CFLAGS.
-
-Wed Aug 9 16:31:48 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_callcc): thread status for continuations must be
- THREAD_KILLED, otherwise thread_free() breaks other threads.
-
-Wed Aug 9 13:24:25 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * win32/win32.[ch]: emulate rename(2).
-
-Tue Aug 8 14:01:46 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/tcltklib/tcltklib.c: support --enable-tcltk_stubs
-
- * ext/tcltklib/extconf.rb: ditto.
-
- * ext/tcltklib/stubs.c: created. examine candidate shared libraries.
-
-Mon Aug 7 13:59:12 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ruby.h (CLONESETUP): should copy flags before any potential
- object allocation.
-
- * regex.c (re_match): check for stack depth was needed.
-
-Sat Aug 5 16:43:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * djgpp/*: convert DOS line endings to UNIX style.
-
- * djgpp/config.status: rename to config.sed for SFN.
-
- * lib/ftools.rb (compare, safe_unlink, chmod): avoid warnings.
-
- * lib/ftools.rb (move): typo. not `tpath', but `to'.
-
-Fri Aug 4 23:26:48 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (proc_call): gives warning if a block is supplied.
-
- * eval.c (rb_eval): no warning for discarding if an alias for the
- method is already made.
-
-Fri Aug 4 16:32:29 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_reject_bang): returns nil if no element removed.
-
- * hash.c (rb_hash_reject_bang): returns nil if no element removed.
-
-Thu Aug 3 19:44:26 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_fd_writable): should return integer value.
-
- * array.c (rb_ary_assoc): search array element whose length is
- longer than 0 (not 1).
-
-Wed Aug 2 18:27:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_wait_fd): prohibit thread context switch
- during compilation.
-
- * eval.c (rb_cont_call): prohibit Continuation#call across threads.
-
-Wed Aug 2 08:22:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * gc.c (rb_gc): clear malloc_memories to zero, to avoid potential
- super frequent GC invocation. (ruby-bugs:#PR48)
-
- * gc.c (rb_gc): only add_heap() if GC trigger condition is
- satisfied.
-
-Tue Aug 1 16:41:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (proc_options): global load path setting moved from
- ruby_prog_init().
-
- * ruby.c (incpush): renamed. push path entry at the END of the
- load path array. This makes -I directories sorted in order in
- the arguments.
-
-Sat Jul 29 23:42:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * dir.c (dir_each): should check whether dir is closed during the
- block execution. (ruby-bugs:#PR47)
-
-Sat Jul 29 21:57:30 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ruby.c (rubylib_mangle): provide another buffer for the result.
-
-Wed Jul 26 10:09:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: set SOLIBS to LIBS on Cygwin.
-
- * configure.in: LIBRUBY_SO='$(RUBY_INSTALL_NAME)'.$target_os.dll
- on cygwin and mingw32. ruby-cygwin.dll is bad. why?
-
-Wed Jul 26 10:04:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * gc.c (gc_sweep): avoid full scan during compilation.
-
- * gc.c (rb_gc): add heap during no gc period (including
- compilation).
-
-Tue Jul 25 19:03:04 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * cygwin/GNUmakefile: use puts instead of print, because
- Cygwin DLL's behavior is changed(or bug?).
-
- * configure.in: LIBRUBY_SO='$(RUBY_INSTALL_NAME)'-$target_os.dll
- on cygwin and mingw32.
-
- * cygwin/GNUmakefile: ditto.
-
- * Makefile.in: $(SOLIBS) should be put after dmyext.@OBJEXT@.
-
- * instruby.rb: install $(LIBRUBY) to libdir
- if $(LIBRUBY) != $(LIBRUBY_A_).
-
-Tue Jul 25 15:16:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_p): redirect to $defout.
-
-Mon Jul 24 18:52:55 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * win32/win32.c (win32_getenv): should remove `static'.
-
- * ruby.c (rubylib_mangle): support "/hoge;/foo"
-
-Mon Jul 24 10:28:55 2000 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
-
- * string.c (rb_str_count): raise exception if no argument is
- given.
-
-Sun Jul 23 12:55:04 2000 Dave Thomas <Dave@Thomases.com>
-
- * string.c (rb_str_rindex): Support negative end position.
-
-Fri Jul 21 17:35:01 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (aref_args): command_call now be permitted as
- aref_args.
-
- * process.c (proc_getpriority): getpriority(2) may return valid
- negative number. use errno to detect error.
-
- * marshal.c (dump_ensure): dumped string should be tainted if
- any among target objects is tainted.
-
- * marshal.c (r_regist): restored object should be tainted if and
- only if the source is a file or a tainted string.
-
-Wed Jul 19 15:14:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (bigdivrem): should use rb_int2big(), not rb_uint2big().
-
-Tue Jul 18 14:58:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (ruby_options): should treat SystemExit etc. properly.
-
- * parse.y (yycompile): should check compile_for_eval, not
- ruby_in_eval.
-
-Mon Jul 17 04:29:50 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/mkmf.rb: converts extention of $objs into $OBJEXT.
-
-Sun Jul 16 03:02:34 2000 Dave Thomas <dave@thomases.com>
-
- * lib/weakref.rb: Change to use new ObjectSpace calls.
-
-Sat Jul 15 21:59:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): should not redefine __id__ nor __send__.
-
- * gc.c (define_final): integrate final.rb features into the
- interpreter. define_finalizer and undefine_finalizer was
- added to ObjectSpace. plus, add_finalizer, remove_finalizer,
- and call_finalizer are deprecated now.
-
-Sat Jul 15 01:32:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_mod_method): implements unbound method.
-
- * eval.c (Init_eval): should prohibit `module_function' for class
- Class.
-
-Fri Jul 14 17:19:59 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * cygwin/GNUmakefile.in: use miniruby instead of sed.
-
-Fri Jul 14 12:49:50 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (argf_eof): need to check stdin, when next_p == -1.
-
- * io.c (read_all): use io_fread() instead of fread(3).
-
- * io.c (io_reopen): should clearerr FILE if fd < 3.
-
- * re.c (rb_reg_match_m): the result is exported, so it should be
- declared as busy.
-
- * eval.c (rb_eval): should preserve errinfo even if return, break,
- etc. is called in rescue clause.
-
- * instruby.rb: install irb too.
-
-Wed Jul 12 15:32:57 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (rb_const_get): constants for builtin classes must
- have higher priority than constants from included modules at
- Object class.
-
- * bignum.c (bigdivrem): small embarrassing typo.
-
-Wed Jul 12 15:06:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): use rb_const_get_at().
-
- * variable.c (top_const_get): retrieve toplevel constants only,
- not ones of Object (and its included modules) in general.
-
-Wed Jul 12 15:04:11 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.26.
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb:
- add module Net::NetPrivate and its inner classes
- {Read,Write}Adapter, Command, Socket,
- SMTPCommand, POP3Command, APOPCommand, HTTPCommand
-
-Wed Jul 12 13:10:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (bigdivrem): defer bignorm().
-
- * bignum.c (bignorm): accepts accidental fixnums.
-
-Tue Jul 11 16:54:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): `@<digit>' is no longer a valid instance
- variable name.
-
-Tue Jul 11 01:51:50 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (rb_big_divmod): should not use Integer(float) for
- the right operand.
-
- * bignum.c (rb_big_remainder): ditto.
-
- * bignum.c (rb_big_modulo): ditto.
-
-Mon Jul 10 15:27:16 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * io.c (pipe_finalize): should set rb_last_status when pclose().
-
-Mon Jul 10 09:07:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * error.c (rb_bug): print version number and such too.
-
-Sat Jul 8 23:08:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_start_0): should copy previous scopes to
- prevent rb_gc_force_recylce().
-
-Fri Jul 7 23:36:36 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/socket/addrinfo.h: move IN_EXPERIMENTAL and IN_LOOPBACKNET
- definitions to ext/socket/sockport.h.
-
- * ext/socket/extconf.rb: add getservbyport() and arpa/inet.h check.
-
- * ext/socket/getaddrinfo.c (getaddrinfo): SOCK_RAW may not be
- defined (ex. BeOS, Palm OS 2.x or before).
-
- * ext/socket/getnameinfo.c (getnameinfo): getservbyport() may not
- exist (ex. BeOS, Palm OS).
-
- * ext/socket/sockport.h: add IN_EXPERIMENTAL, IN_CLASSA_NSHIFT,
- IN_LOOPBACKNET, AF_UNSPEC, PF_UNSPEC and PF_INET.
-
-Fri Jul 7 03:30:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (aref_args): should allow Hash[:a=>2] etc.
-
- * numeric.c (fix_aref): convert index by NUM2INT, not FIX2INT.
- (ruby-bugs:#PR37)
-
- * time.c (time_localtime): should prohibit for frozen time.
-
- * time.c (time_gmtime): ditto.
-
-Thu Jul 6 19:12:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_file_s_open): should not terminate fptr; just clear it.
-
- * ruby.c (proc_options): should not call require_libraries()
- twice.
-
- * ruby.c (require_libraries): clear req_list_head.next after
- execution.
-
-Thu Jul 6 13:51:57 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * object.c (rb_to_id): name may not be symbol nor fixnum.
-
- * struct.c (rb_struct_s_def): name may be nil.
-
-Thu Jul 6 02:09:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (bigdivrem): new function to return remainder.
-
- * numeric.c (fixdivmod): now returns modulo, not remainder.
-
- * numeric.c (flodivmod): ditto.
-
- * bignum.c (bigdivmod): ditto.
-
- * numeric.c (num_modulo): new method; alias to '%'.
-
-Thu Jul 6 00:51:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * win32/win32.c (NtCmdGlob): patterns should be separated and
- NUL terminated.
-
-Wed Jul 5 22:27:56 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * cygwin/GNUmakefile: use ruby.def to make rubycw.dll.
-
- * ext/extmk.rb.in: create target.def.
-
- * lib/mkmf.rb: ditto.
-
-Wed Jul 5 09:47:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_arg): Time::local, Time::gm now take 7th optional
- argument for usec.
-
- * numeric.c (num_ceil, etc): default ceil, floor, round, trancate
- implementation for Numeric, using `to_f'.
-
- * io.c (rb_io_reopen): clear fptr->path after free() to prevent
- potential GC crash.
-
- * io.c (rb_file_s_open): terminate fptr unless null.
-
- * io.c (rb_file_initialize): ditto.
-
- * lib/tempfile.rb: specify FILE::CREAT|File::EXCL to open for
- better security.
-
- * numeric.c (flo_truncate): new method.
-
-Wed Jul 5 01:02:53 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/extmk.rb.in: join ' ' -> join(' ').
-
- * lib/mkmf.rb: ditto.
-
-Tue Jul 4 13:51:29 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/dbm/dbm.c: add methods added to Hash in 1.5.x.
-
- * ext/gdbm/gdbm.c: ditto.
-
- * ext/sdbm/init.c: ditto.
-
- * eval.c (proc_call): args may be Qundef (means no argument), do
- not call TYPE() for args.
-
-Tue Jul 4 13:20:56 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/extmk.rb.in: make command line must be single-quoted.
- $(RUBY_INSTALL_NAME) is command substitution in the POSIX sh.
-
-Tue Jul 4 13:16:02 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * util.c (rb_type): should add T_UNDEF.
-
-Tue Jul 4 09:30:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (here_document): supports EOF right after terminator.
-
- * random.c (rb_f_rand): argument is now optional (rand(max=0)).
-
-Tue Jul 4 01:50:49 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * win32/ruby.def: remove ruby_mktemp.
-
-Tue Jul 4 01:27:13 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_rescue2): new function to rescue arbitrary exception.
-
- * numeric.c (do_coerce): should catch NameError explicitly.
-
-Tue Jul 4 00:15:23 2000 Dave Thomas <Dave@thomases.com>
-
- * numeric.c (Init_Numeric): forgot to register Numeric#remainder.
-
-Mon Jul 3 23:46:56 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * win32/win32.c (myselect, myaccept): disable interrupt while
- executing accept() or select() to avoid Ctrl-C causes
- "unknown software exception (0xc0000029)".
-
-Mon Jul 3 18:35:41 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * lib/mkmf.rb: use null device if it exists for cross-compiling.
-
-Mon Jul 3 18:19:51 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.26.
-
- * lib/net/protocol.rb (finish): do nothing unless active.
-
- * lib/net/http.rb: HTTP#{get,post}2 again (for new impl).
-
-Mon Jul 3 16:47:22 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * cygwin/GNUmakefile: librubys.a -> lib$(RUBY_INSTALL_NAME)s.a
-
- * configure.in: use AC_CANONICAL_{HOST,TARGET,BUILD}.
-
-Mon Jul 3 13:15:02 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * numeric.c (fix_divmod): x * d + m = y where d, m = x.divmod(y).
-
- * bignum.c (rb_big_divmod): ditto.
-
- * numeric.c (fixdivmod): does not depend C's undifined %
- behavior. adopt to fmod(3m) behavior.
-
- * numeric.c (flo_mod): modulo now reserves fmod(3m) behavior.
-
- * numeric.c (num_remainder): 'deprecated' warning.
-
-Mon Jul 3 10:27:28 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: use AC_CANONICAL_SYSTEM.
-
-Sun Jul 2 21:17:37 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: support without --enable-shared for cygwin/mingw32.
-
- * cygwin/GNUmakefile: ditto.
-
- * ext/extmk.rb.in: use null device if it exists for cross-compiling.
-
- * lib/mkmf.rb: ditto.
-
- * util.c (ruby_mktemp): remove unused ruby_mktemp().
-
-Sun Jul 2 14:18:04 2000 Koji Arai <JCA02266@nifty.ne.jp>
-
- * eval.c (TMP_PROTECT_END): tmp__protect_tmp may be NULL.
-
-Sun Jul 2 03:37:50 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.25.
-
- * lib/net/protocol.rb (each_crlf_line): beg = 0 is needed in adding{}
-
- * lib/net/smtp.rb: allow String for to_addr of SMTP#sendmail
-
-Sat Jul 1 15:22:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * numeric.c (fix_rshift): should handle shift value more than
- sizeof(long).
-
-Sat Jul 1 15:22:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): the value from RTEST() is not valid Ruby
- objct. result should be either true or false.
-
-Sat Jul 1 09:30:06 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * re.c (rb_reg_initialize): was freeing invalid pointer.
-
-Sat Jul 1 03:25:56 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (call_args): command_call can be the last argument of
- call_args. It had to be the only argument.
-
- * re.c (rb_reg_s_quote): should not dump core even for unsane mbc
- string.
-
-Fri Jun 30 01:36:20 2000 Aleksi Niemela <aleksi.niemela@cinnober.com>
-
- * parse.y (f_norm_arg): better, nicer error message.
-
-Thu Jun 29 07:45:33 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c (udp_send): destination may be packed
- struct sockaddr.
-
- * object.c (rb_Integer): Integer(nil) should be invalid, on the
- other hand, nil.to_i is OK.
-
-Wed Jun 28 17:26:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c (ip_recvfrom): udp_recvfrom and tcp_recvfrom
- is merged and moved to IPSocket#recvfrom.
-
- * ext/socket/socket.c (sock_s_getaddrinfo): family can be a
- strings such as "AF_INET" etc.
-
- * ruby.c (require_libraries): . and RUBYLIB added to $load_path
- just before -r procedure.
-
- * ruby.c (proc_options): -e, - did not exec -r.
-
-Wed Jun 28 14:52:28 2000 Koga Youichirou <y-koga@mms.mt.nec.co.jp>
-
- * config.sub: NetBSD/hpcmips support.
-
-Wed Jun 28 10:11:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * gc.c: gc trigger threshold changed; GC_NEWOBJ_LIMIT removed,
- FREE_MIN is increased to 4096.
-
-Tue Jun 27 22:39:28 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.24.
-
- * lib/net/protocol.rb: modified each_crlf_line again.
-
- * lib/net/protocol.rb: do_write_beg,do_write_end -> writing{}
- do_write_do -> do_write
-
- * lib/net/http.rb: can make proxy connection by passing
- addresses to HTTP.new, start.
-
- * lib/net/http.rb: HTTP.new_implementation, old_implementation:
- can use 1.2 implementation of head, get, post, put.
- (see document)
-
-Tue Jun 27 12:05:10 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * win32.c (myfdclr): new function.
-
- * win32.h: add FD_CLR.
-
-Mon Jun 26 23:41:41 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ruby.h: add cast for ANSI style.
-
- * gc.c (rb_data_object_alloc): use RUBY_DATA_FUNC.
-
-Mon Jun 26 22:20:03 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * win32/win32.c (is_socket, extract_file_fd): New function.
-
- * win32/win32.c (myfdopen): use is_socket().
-
- * win32/win32.c (myselect): return non socket files immediately
- if file and socket handles are mixed.
-
-Mon Jun 26 16:21:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_schedule): wait_for cleared too early.
-
-Mon Jun 26 09:15:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * pack.c: remove obsolete 'F', 'D' specifiers.
-
-Sun Jun 25 00:55:03 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/socket/socket.c (sock_s_getnameinfo): `res' would not
- be assigned if TYPE(sa) == T_STRING.
-
-Sat Jun 24 14:36:29 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * config*.dj, configure.bat, top.sed: move to djgpp/.
-
-Sat Jun 24 02:34:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (load_file): call require_libraries() here to let
- debug.rb work properly.
-
-Fri Jun 23 22:34:51 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * bignum.c (rb_big_lshift): reorder xds assignment to avoid
- reusing `x' as `len' by VC++ 6.0 SP3 compiler with -Ox switch.
-
-Fri Jun 23 01:11:27 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_substr): should return empty string (""),
- if beg == str.size and len == zero, mostly for convenience and
- backward compatibility.
-
- * parse.y (new_super): should tweak block_pass node for super too.
-
- * string.c (rb_str_split_m): last split element should not be nil,
- but "" when limit is specified.
-
-Thu Jun 22 17:27:46 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_substr): str[n,m] now returns nil when n equals
- to str.size.
-
-Thu Jun 22 13:49:02 2000 Uechi Yasumasa <uechi@ryucom.ne.jp>
-
- * lib/net/ftp.rb: support resuming.
-
-Thu Jun 22 13:37:19 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * eval.c (rb_thread_sleep_forever): merge pause() macro.
-
-Wed Jun 21 08:49:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): should not raise exception just by defining
- singleton class.
-
-Wed Jun 21 01:18:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.h: two macros RUBY_DATA_FUNC and RUBY_METHOD_FUNC are added
- to make writing C++ extensions easier.
-
- * array.c (rb_ary_dup): internal classes should not be shared by dup.
-
- * hash.c (rb_hash_dup): ditto.
-
- * object.c (rb_obj_dup): ditto.
-
- * string.c (rb_str_dup): ditto.
-
- * error.c (Init_Exception): renamed NotImplementError to
- NotImplementedError.
-
-Tue Jun 20 16:22:38 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (make_time_t): bug in DST boundary.
-
-Tue Jun 20 10:54:19 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: add eval sitedir.
-
-Tue Jun 20 06:14:43 2000 Wakou Aoyama <wakou@fsinet.or.jp>
-
- * lib/cgi.rb: change: version syntax. old: x.yz, now: x.y.z
-
- * lib/net/telnet.rb: ditto.
-
-Tue Jun 20 00:37:45 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (rb_reg_kcode_m): Regexp#kcode returns nil for code unfixed
- regexp object.
-
- * bignum.c (bigdivmod): bignum zero check was wrong.
-
-Mon Jun 19 10:48:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (rb_cvar_set): forgot to add security check for class
- variable assignment.
-
-Sun Jun 18 22:49:13 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: single quoted sitedir.
-
- * mkconfig.rb: add DESTDIR for cross-compiling.
-
- * lib/mkmf.rb: add DESTDIR.
-
- * ruby.c (load_file): force binmode if fname includes ".exe"
- on DOSISH.
-
-Sat Jun 17 23:22:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sprintf.c (rb_f_sprintf): should ignore negative precision given
- by <%.*>.
-
- * sprintf.c (rb_f_sprintf): should allow zero precision.
-
-Sat Jun 17 03:13:29 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_localtime): avoid unnecessary call of localtime.
-
- * time.c (time_gmtime): avoid unnecessary call of gmtime.
-
- * process.c (proc_wait2): new method.
-
- * process.c (proc_waitpid): second argument made optional.
-
- * process.c (proc_waitpid2): new method.
-
-Sat Jun 17 00:05:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (rb_reg_clone): should initialize member fields.
-
-Fri Jun 16 22:49:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_rewind): set lineno to zero.
-
-Fri Jun 16 22:47:47 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.23.
-
- * lib/net/protocol.rb: too many CRLF in last line.
-
-Fri Jun 16 21:23:59 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: add pause(2) checking.
-
- * eval.c: define pause() if missing.
-
-Fri Jun 16 18:41:58 2000 Koji Arai <JCA02266@nifty.ne.jp>
-
- * process.c (proc_setsid): BSD-style setpgrp() don't return
- process group ID, but 0 or -1.
-
-Fri Jun 16 16:23:35 2000 Koji Arai <JCA02266@nifty.ne.jp>
-
- * file.c (rb_stat_inspect): gives detailed information;
- compatibility with ruby-1.4.x.
-
-Fri Jun 16 05:18:45 2000 Yasuhiro Fukuma <yasuf@bsdclub.org>
-
- * configure.in: FreeBSD: do not link dummy libxpg4 which was
- merged into libc.
-
-Fri Jun 16 03:17:36 2000 Satoshi Nojo <nojo@t-samukawa.or.jp>
-
- * ext/dbm/dbm.c (fdbm_length): use GetDBM. empty?, [] too.
-
- * ext/gdbm/gdbm.c (fgdbm_length): ditto.
-
- * ext/sdbm/init.c (fsdbm_length): ditto.
-
-Fri Jun 16 01:57:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_sleep_forever): pause(2) instead of sleep(3).
-
-Thu Jun 15 10:46:36 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_sub_bang): should probagate taintness from
- replacement string.
-
-Wed Jun 14 17:01:41 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * rubytest.rb: add CONFIG['EXEEXT'] to the executable file name.
-
-Wed Jun 14 14:50:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_f_sub): assign to $_ only if modification happens.
-
- * string.c (rb_f_gsub): ditto.
-
- * string.c (rb_f_chop): ditto.
-
- * string.c (rb_f_chomp): ditto.
-
- * io.c (io_reopen): preserve file position by ftell/fseek, if io
- is a seekable.
-
- * eval.c (method_arity): wrong arity number for the methods with
- optional arguments.
-
- * time.c (make_time_t): opposite timezone shift (should be negative).
-
-Wed Jun 14 14:07:38 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * io.c: typo(ig/if).
-
- * re.c: typo(re/reg). add rb_reg_check().
-
- * time.c: remove unneeded declare(daylight, timezone).
-
- * configure.in: add include <time.h> when daylight checking.
-
-Wed Jun 14 11:36:52 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * marshal.c (r_object): modified for symbols.
-
- * marshal.c (w_object): ditto.
-
-Wed Jun 14 10:04:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (rb_memcmp): should compare according to ruby_ignorecase.
-
- * string.c (rb_str_cmp): use rb_memcmp.
-
- * string.c (rb_str_index): ditto.
-
- * string.c (rb_str_rindex): ditto.
-
- * string.c (rb_str_each_line): ditto.
-
-Wed Jun 14 04:58:53 2000 Dave Thomas <dave@thomases.com>
-
- * io.c (rb_io_set_lineno): should have returned VALUE, not
- integer.
-
-Wed Jun 14 09:29:42 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_dup): dup should always propagate taintness.
-
-Wed Jun 14 00:50:14 2000 Wakou Aoyama <wakou@fsinet.or.jp>
-
- * lib/cgi.rb: read_multipart(): if no content body then raise EOFError.
-
-Tue Jun 13 11:46:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * process.c (proc_setsid): try implement it using setpgrp() and
- ioctl(fd, TIOCNOTTY, NULL).
-
- * re.c (rb_reg_prepare_re): magic variable $= should affect regex
- pattern match.
-
- * time.c (make_time_t): use tm.tm_gmtoff if possible.
-
- * time.c (time_zone): use tm.tm_zone if available.
-
-Tue Jun 13 01:50:57 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.22.
-
- * lib/net/http.rb: HTTPResponse#body returns body.
-
-Mon Jun 12 23:41:54 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in (daylight): avoid GCC optimization.
-
-Mon Jun 12 19:02:27 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: cygwin has strange timezone.
-
- * time.c (time_zone): use tzname and daylight.
-
-Sat Jun 10 23:10:32 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_seek): whence is optional, default is SEEK_SET.
-
-Fri Jun 9 17:00:29 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.21.
-
- * lib/net/http.rb: exception is raised with response object.
-
-Fri Jun 9 15:11:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (make_time_t): supports daylight saving time.
-
- * eval.c (rb_thread_safe_level): should retrieve current $SAFE
- value if a thread is the current thread.
-
-Thu Jun 8 14:25:45 2000 Hiroshi Igarashi <iga@ruby-lang.org>
-
- * lib/mkmf.rb: add target `distclean' in Makefile for extlib.
- target `clean' doesn't remove Makefile.
-
-Thu Jun 8 13:34:03 2000 Dave Thomas <dave@thomases.com>
-
- * numeric.c: add nan?, infinite?, and finite? to Float
-
-Thu Jun 8 00:31:04 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * regex.h: export re_mbctab properly on cygwin.
-
- * dln.c: use dlopen instead of LoadLibrary on cygwin.
-
-Thu Jun 8 13:41:34 2000 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * file.c (rb_file_s_basename): might dump core.
-
-Tue Jun 6 03:29:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * dir.c (dir_foreach): now returns nil for consistency.
-
- * bignum.c (bigdivmod): modulo by small numbers was wrong.
-
-Mon Jun 5 00:18:08 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * bignum.c: avoid conflict with USHORT on mingw32.
-
-Mon Jun 5 00:13:35 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * eval.c (rb_thread_schedule): =/== typo.
-
-Sun Jun 4 03:17:36 2000 Wakou Aoyama <wakou@fsinet.or.jp>
-
- * lib/cgi.rb: improve: CGI::pretty()
-
-Sun Jun 4 02:01:10 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * lib/mkmf.rb: do not need to add -L$(topdir) in --enable-shared case.
-
-Sat Jun 3 13:50:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (rb_id2name): should support constant attrset
- identifiers.
-
- * bignum.c (rb_big_eq): Bignum#== should not raise exception.
-
-Fri Jun 2 11:24:48 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_popen): open with a block returns the value from the
- block. old behavior was back.
-
-Fri Jun 2 00:42:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
-
- * eval.c (rb_thread_cleanup): should clear priority for thread
- termination.
-
-Thu Jun 01 22:39:41 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.20.
-
- * lib/net/http.rb: wrongly closed the socket twice
- when no Content-Length: was given.
-
-Thu Jun 1 00:59:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_yield_0): convert Qundef to [].
-
-Wed May 31 20:45:59 2000 Dave Thomas <Dave@Thomases.com>
-
- * string.c (rb_str_slice_bang): wrong argument number.
-
-Wed May 31 12:37:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_exec_end_proc): print error message from END procs.
-
-Wed May 31 04:06:41 2000 Wakou Aoyama <wakou@fsinet.or.jp>
-
- * lib/cgi.rb: change: CGI#out() if "HEAD" == REQUEST_METHOD then
- output only HTTP header.
-
-Wed May 31 01:54:21 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_schedule): set main_thread->status to
- THREAD_TO_KILL, before raising deadlock error.
-
- * eval.c (rb_thread_deadlock): if curr_thread == main_thread, do
- not call rb_thread_restore_context()
-
-Tue May 30 23:33:41 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * lib/mkmf.rb (create_makefile): add $(TARGET).ilk and *.pdb
- to cleanup files for mswin32.
-
-Mon May 29 10:41:10 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * file.c (rb_file_s_basename): should propagate taintness.
-
-Sun May 28 21:37:13 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * eval.c: bug fix: DLEXT2.
-
-Sun May 28 19:21:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * win32/win32.c: use ruby's glob.
-
- * dir.c: "glob" exported and renamed to "rb_glob".
-
- * ruby.h: ditto.
-
- * main.c: turn off command line mingw32's globbing.
-
-Wed May 25 22:25:13 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/extmk.rb.in: use "ftools" instead of "rm -f".
-
- * lib/mkmf.rb: ditto.
-
-Thu May 25 22:01:32 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * defines.h: mswin32: remove obsolete USHORT definition.
-
- * re.h: mswin32: use EXTERN instead of extern.
-
- * regex.h: mswin32: export re_mbctab properly.
-
- * win32/ruby.def: add ruby_ignorecase and regex.c's exports.
-
-Thu May 25 21:28:44 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * re.c (rb_reg_expr_str): escape un-printable character.
-
-Thu May 25 01:35:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (tokadd_escape): forgot to add `\x' to hexadecimal
- escape sequences.
-
- * object.c (rb_obj_dup): dup for normal object (T_OBJECT) copies
- instance variables only.
-
-Wed May 24 23:49:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (rb_mod_initialize): should provide initialize.
-
-Wed May 24 23:17:50 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * win32/Makefile: remove unnecessary mv and rm command call.
-
-Wed May 24 21:01:04 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/pty/pty.c: use "" instead of <> to include ruby.h and rubyio.h
- for BeOS (PowerPC).
-
- * file.c (rb_find_file): should check dln_find_file() result.
-
- * win32/ruby.def: add rb_block_given_p.
-
-Wed May 24 16:32:45 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_popen): popen does not take 3rd argument anymore.
-
- * re.c (rb_reg_desc): re may be zero, check before dereferencing.
-
-Wed May 24 16:03:06 2000 Wakou Aoyama <wakou@fsinet.or.jp>
-
- * lib/cgi.rb: bug fix: CGI::escape(), CGI::Cookie::new()
-
- * lib/net/telnet.rb: improve: binmode(), telnetmode() interface
-
-Wed May 24 13:12:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * misc/ruby-mode.el (ruby-parse-region): support `while .. do'
- etc. But corresponding keywords must be at the beginning of
- line.
-
-Tue May 23 23:50:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (rb_reg_initialize_m): wrong kcode value.
-
- * re.c (rb_reg_s_new): forgot to initialize re->ptr.
-
-Tue May 23 08:36:24 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): forgot to restore old option
- status by (?ix-ix).
-
- * regex.c (re_compile_fastmap): anychar may match newline if
- RE_OPTION_MULTILINE or RE_OPTION_POSIXLINE is set.
-
-Mon May 22 22:45:06 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.19.
-
- * lib/net/http.rb: do not use Regexp "p" option.
-
-Mon May 22 21:56:43 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * struct.c (rb_struct_getmember): should use ID2SYM, not INT2NUM.
-
-Mon May 22 15:07:37 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * file.c (rb_find_file): should check if the file really exists.
-
-Mon May 22 09:08:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_popen): _exit(0) after processing block under the
- child process.
-
- * io.c (rb_io_popen): flush stdout/stderr before subprocess
- termination.
-
- * eval.c (rb_check_safe_str): insert rb_secure(4); operation
- requires untainted string should be prohibited in level 4.
-
-Sun May 21 21:17:00 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: add Setup.dj for djgpp cross-compiling.
-
- * Setup.dj: add readline.
-
- * instruby.rb: copy win32/win32.h to archlibdir on mingw32.
-
-Sun May 21 20:58:08 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * pack.c: fix OFF16 and OFF32 definitions for Alpha and IRIX64.
-
-Sun May 21 17:31:37 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * instruby.rb: support "make install" for cross-compiling.
-
- * ext/extmk.rb.in: ditto.
-
-Sun May 21 14:22:49 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * Makefile.in: rename prep.rb to fake.rb.
-
- * configure.in: ditto.
-
-Sat May 20 23:29:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * dir.c (dir_s_new): does not take block; "open" does.
-
- * io.c (rb_io_s_new): ditto.
-
-Fri May 19 07:44:26 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * dir.c (dir_s_open): Dir#open does not returns closed Dir if a
- block is given to the method.
-
- * re.c (rb_reg_initialize_m): Regexp::new calls initialize now.
-
- * string.c (Init_String): String#delete_at removed.
-
- * string.c (rb_str_aset_m): should have checked argc != 2.
-
- * eval.c (rb_thread_schedule): select(2) was called too many.
-
- * regex.c (re_compile_pattern): a bug in (?m) support. Pointed
- out by Dave Thomas <Dave@thomases.com>.
-
-Thu May 18 23:55:26 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * dln.c (search_undef): st_lookup()'s 3rd parameter should be
- a pointer of the variable which has the same size and alignment
- as `char *'.
-
- * marshal.c (w_symbol, w_object): ditto.
-
- * parse.y (rb_intern): ditto.
-
-Thu May 18 18:00:35 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.18.
-
- * lib/net/protocol.rb: Net::Version was removed.
-
- * lib/net/smtp.rb: use Socket.gethostname to get local host name.
-
-Thu May 18 13:34:57 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c (ruby_connect): should not have replaced
- thread_write_select() by rb_thread_fd_writable().
-
-Thu May 18 09:01:25 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * configure.in, ext/extmk.rb.in, lib/mkmf.rb: remove BeOS R3 support.
- Make a shared library (libruby.so) only if the --enable-shared
- option is specified.
-
- * instruby.rb: no longer use libruby.so.LIB and import.h.
-
- * io.c: fix READ_DATA_PENDING definition for BeOS (PowerPC).
-
-Wed May 17 14:14:23 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (rb_reg_new_1): use /m instead of /p.
-
-Wed May 17 02:22:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_polling): wait 0.06 second to let other
- processes run.
-
- * process.c (rb_waitpid): avoid busy wait using rb_thread_polling.
-
- * file.c (rb_thread_flock): ditto.
-
- * parse.y (expr): avoid calling value_expr() twice.
-
-Wed May 17 00:45:57 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * io.c (rb_io_binmode): should check PLATFORMs, not O_BINARY, sigh...
-
-Wed May 17 00:40:15 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * win32/config.h: add DLEXT2, now DLEXT on mswin32 is "so".
-
- * win32/config.status: ditto.
-
- * win32/ruby.def: add symbol "rb_big_divmod".
-
-Tue May 16 19:45:32 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * intern.h: use EXTERN instead of extern.
-
- * win32/ruby.def: add rb_defout, rb_stdout, ruby_errinfo,
- ruby_sourceline, ruby_sourcefile to work with eruby
- reported by Hiroshi Saito <HiroshiSaito@pob.org>.
- Export both ruby_xmalloc and xmalloc etc.
-
-Tue May 16 17:00:05 2000 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
-
- * eval.c (rb_thread_select): should check whether fds are null.
-
-Tue May 16 11:51:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (pipe_open): synchronize subprocess stdout/stderr.
-
-Mon May 15 15:38:09 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.h: exported symbols should be for xmalloc etc. are now
- prefixed by 'ruby_', e.g. ruby_xmalloc().
-
- * eval.c (rb_thread_select): remove busy wait for select.
-
- * dir.c (glob): trailing path may be null, e.g. glob("**").
-
-Mon May 15 14:48:41 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * io.c (rb_io_pid): new method; returns nil if no process attached
- to the IO.
-
-Mon May 15 01:18:20 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_s_popen): _exit after Proc execution.
-
-Sun May 14 18:05:59 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * Makefile.in: missing/nt.c -> win32/win32.c
-
- * configure.in: bug fix; static linking on mingw32.
-
- * cygwin/GNUmakefile.in: remove VPATH.
-
- * ext/extmk.rb.in: Makefile set binmode with mingw32 on cygwin32.
-
- * lib/mkmf.rb: ditto.
-
- * win32/config.h: undef HAVE_SYS_FILE_H.
-
-Sun May 14 02:02:48 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * lib/irb/ruby-lex.rb: '/' should be escaped in character class.
-
-Sun May 14 00:54:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in, ...: support mingw32.
-
- * defines.h: ditto. undef EXTERN for tcl/tk on cygwin.
-
- * ext/*/extconf.rb: replace PLATFORM with RUBY_PLATFORM.
-
- * ext/socket/sockport.h: define IN_MULTICAST for missing IN_MULTICAST.
-
- * ext/tcltklib/tcltklib.c: remove declaration of rb_argv0.
-
- * file.c: should check S_IXGRP, S_ISGID, not NT.
-
- * io.c (rb_io_binmode): should check _IOBIN, O_BINARY, not PLATFORMs.
-
-Sat May 13 14:21:15 2000 Koji Arai <JCA02266@nifty.ne.jp>
-
- * io.c (rb_io_s_popen): should check whether a block is given.
-
-Fri May 12 17:33:44 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): charset_not should not exclude
- newline from matching set.
-
-Thu May 11 22:51:05 2000 Ryunosuke Ohshima <ryu@jaist.ac.jp>
-
- * pack.c (pack_pack): Bignum support.
-
- * pack.c (pack_unpack): ditto.
-
-Thu May 11 21:19:29 2000 Hiroshi Igarashi <iga@ruby-lang.org>
-
- * intern.h: add missing declarations of ruby API functions.
-
- * ruby.h: fix function name in declarations.
-
-Thu May 11 22:29:25 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/md5/depend: add $(topdir)/config.h dependency to md5c.o.
-
- * ext/md5/extconf.rb: new file to add -DHAVE_CONFIG_H flag for Alpha.
-
-Thu May 11 10:55:52 2000 Ryunosuke Ohshima <ryu@jaist.ac.jp>
-
- * pack.c (pack_pack): packing BER compressed integer by `w'.
-
- * pack.c (pack_unpack): unpacking BER.
-
-Thu May 11 00:37:55 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (parse_regx): remove in_brack.
-
-Wed May 10 12:51:18 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (proc_options): move adding RUBYLIB and "." to the load
- path after #! line parsing.
-
- * parse.y (parse_regx): should parse backslash escape like `\c['
- here to avoid causing `unterminated regexp' error.
-
-Wed May 10 00:19:53 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * MANIFEST, beos/GNUmakefile.in, configure.in: no longer need
- beos/GNUmakefile.in to support BeOS R4.5.2 (Intel) as a result
- of eban's Makefile.in change.
-
- * io.c: NOFILE is already defined on BeOS R4.5 (Intel) or later.
-
- * lib/matrix.rb: remove debug print.
-
- * regex.c: don't use nested comment.
-
-Tue May 9 17:08:43 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (massign): no longer convert nil into empty array.
-
- * io.c (rb_io_s_popen): optional 3rd argument to give proc, which
- will be executed in spawned child process.
-
-Mon May 8 23:47:39 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * eval.c (rb_callcc): prev & next should be initialized to zero.
-
-Mon May 8 23:17:36 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * dln.c (dln_init): remove possible buffer overrun. This is
- suggested by Aleksi Niemela <aleksi.niemela@cinnober.com>.
-
- * dln.c (init_funcname): ditto.
-
-Sat May 6 23:35:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (lhs): should allow `obj.Attr = 5' type expression.
-
-Sat May 6 15:46:08 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/socket/extconf.rb: add a new configure option to force use
- of the WIDE Project's getaddrinfo(): --enbale-wide-getaddrinfo.
-
-Fri May 5 21:19:22 2000 MOROHOSHI Akihiko <moro@remus.dti.ne.jp>
-
- * parse.y (yylex): allow '$1foo' and such.
-
-Fri May 5 17:57:24 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.17.
-
- * lib/net/http.rb: write also port number in Host: field.
-
- * lib/net/http.rb: see Proxy-Connection: to decide socket connection.
-
-Fri May 5 03:25:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_fastmap): charset_not for multibyte
- characters excluded too many characters.
-
-Tue May 2 13:23:43 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_schedule): little bit more impartial context
- switching.
-
-Tue May 2 09:50:03 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * configure.in: add DLDLIBS to set platform specific library
- for extensions.
-
- * ext/extmk.rb.in: use @DLDLIBS@ instead of RUBY_PLATFORM choice.
-
- * lib/mkmf.rb: use CONFIG["DLDLIBS"] instead of RUBY_PLATFORM choice.
-
- * config_s.dj: add @DLDLIBS@.
-
- * win32/config.status: ditto.
-
- * win32/ruby.def: regular maintenance.
-
-Mon May 1 23:42:44 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in, eval.c: add DLEXT2. now DLEXT on Cygwin is "so".
-
- * defines.h: use dllimport, dllexport for Cygwin 1.1.x.
-
- * ruby.h: ditto.
-
- * cygwin/GNUmakefile.in: ditto.
-
- * ext/Win32API/Win32API.c: directly "call" in asm statement for
- gcc 2.95.x or newer.
-
-Sat Apr 29 04:58:12 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * array.c (rb_ary_unshift_m): performance improvement.
-
-Fri Apr 28 00:19:22 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * array.c (rb_ary_unshift_m): takes items to push.
-
-Wed Apr 26 15:23:02 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_succ): insert carrying character just before
- the leftmost alpha numeric character.
-
- * string.c (rb_str_succ): proper behavior for "".succ and "\377".succ.
-
- * string.c (rb_str_succ): use realloc and memmove.
-
-Tue Apr 25 18:28:45 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.16.
-
- * lib/net/smtp.rb: add SMTP AUTH
-
-Tue Apr 25 14:30:13 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_gets_internal): shortcut when rs == rb_default_rs.
-
-Sat Apr 22 23:14:41 2000 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
-
- * configure.in: MacOS X support.
-
-Sat Apr 22 16:37:10 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.15.
-
- * lib/net/http.rb: closing socket by watching both
- user header and server response
-
-Fri Apr 21 21:44:34 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * io.c (rb_io_s_pipe): should set FMODE_SYNC.
-
-Thu Apr 20 16:59:22 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * eval.c (massign): `*lvalue = false' should assign `[false]' to
- lvalue.
-
-Wed Apr 19 08:35:08 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * class.c (rb_singleton_class): generate singleton class for
- special constants: nil, true, false.
-
-Wed Apr 19 02:09:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * class.c (rb_singleton_class): singleton method for nil, true,
- false is possible now.
-
- * eval.c (rb_eval): ditto.
-
-Tue Apr 18 18:54:25 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.14.
-
- * lib/net/http.rb: new method HTTP#head2.
-
- * lib/net/http.rb: get2/post2 does not raise exceptions.
-
-Mon Apr 17 15:16:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_close): to detect some exceptional status, writable
- IO should be flushed before close;
-
-Sat Apr 15 18:29:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_collect_bang): Array#filter renamed.
-
-Fri Apr 14 19:47:11 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.13.
-
- * lib/net/pop.rb: accept illegal timestamp
-
- * lib/net/http.rb: when body was chunked, does not set Content-Length:
-
-Tue Apr 11 21:14:42 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * config_s.dj: add @sitedir@.
- * configure.in: add --with-sitedir=DIR option.
- * instruby.rb: use CONFIG["sitedir"].
- * lib/mkmf.rb: support 'make site-install'.
- * win32/config.status: add @sitedir@.
-
-Tue Apr 11 16:25:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (rb_big_2comp): unnecessary lvalue cast removed.
-
-Tue Apr 11 02:25:53 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (env_fetch): new method.
-
- * marshal.c (marshal_dump): accepts depth = nil for unlimited depth.
-
-Sun Apr 9 20:49:19 2000 Dave Thomas <Dave@Thomases.com>
-
- * parse.y (str_extend): Allow class variables to be expanded.
-
-Fri Apr 7 02:03:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * error.c (rb_sys_fail): escape non-printable characters.
-
-Thu Apr 6 20:10:47 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/extmk.rb.in (create_makefile): BeOS --program-suffix support.
- * lib/mkmf.rb (create_makefile): ditto.
-
-Thu Apr 6 09:55:26 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * error.c (rb_sys_fail): need rb_exc_new2() call on BeOS.
-
-Mon Apr 3 17:22:27 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_reopen): support tempfile.
-
- * eval.c (catch_i): should supply argument.
-
-Sat Apr 1 22:50:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * marshal.c (r_object): wrong symbol restoration.
-
-Sat Apr 1 21:30:53 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * io.c(rb_io_printf, rb_f_printf): should use rb_io_write.
-
-Sat Apr 1 00:16:05 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * gc.c (rb_gc_call_finalizer_at_exit): should be clear flags
- before calling finalizers.
-
- * eval.c (specific_eval): can be called without SecurityError, if
- $SAFE >= 4.
-
- * object.c (sym_inspect): inspect gives ":sym", to_s gives "sym".
-
-Fri Mar 31 22:07:04 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.12.
-
- * lib/net/protocol.rb: update Net::Protocol::Proxy#connect
-
- * lib/net/protocol.rb: ReplyCode is not a class
-
- * lib/net/http.rb: header value format was change:
- values do not include header name
-
- * lib/net/http.rb: header is not a Hash, but HTTPResponse
-
-Thu Mar 30 12:19:44 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * enum.c (enum_find): rb_eval_cmd() should be called with array.
-
-Tue Mar 28 13:57:05 2000 Clemens Hintze <c.hintze@gmx.net>
-
- * ext/dbm/dbm.c (fdbm_invert): should return new hash.
-
- * ext/gdbm/gdbm.c (fgdbm_invert): ditto.
-
-Tue Mar 28 00:58:03 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.11.
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: does not
- dispatch any commands while dispatching command.
-
- * lib/net/protocol.rb: failed to get error class of
- inherited ReplyCode
-
- * lib/net/http.rb: change feature of "get2", "post2"
-
-Mon Mar 27 01:34:58 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.10.
-
- * lib/net/http.rb: return value of 'head' was wrong.
-
-Sun Mar 26 17:47:35 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.9.
-
- * lib/net/smtp.rb: SMTP#do_ready wrongly took no arguments
-
-Sat Mar 25 23:21:10 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * marshal.c (w_object): symbols should be converted to ID before
- dumping out.
-
-Fri Mar 24 18:26:51 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * file.c (test_check): should have checked exact number of arguments.
-
-Fri Mar 24 21:02:11 2000 Koji Arai <JCA02266@nifty.ne.jp>
-
- * signal.c (trap): should treat some symbols as the signal.
-
-Fri Mar 24 06:58:03 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.8.
-
- * lib/net/http.rb: post, get2, post2, get_body
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: separate
- Command/Socket documentation.
-
-Thu Mar 23 02:26:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_fptr_finalize): fptr may be null.
-
- * io.c (rb_io_s_new): now calls `initialize'.
-
- * io.c (rb_io_initialize): actual open done in this method.
-
- * io.c (rb_file_initialize): ditto.
-
- * eval.c (rb_eval): class variables in singleton class definition
- is now handled properly (I hope).
-
-Wed Mar 22 21:49:36 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * st.c (st_delete_safe): skip already deleted entry.
-
- * hash.c (rb_hash_delete): modify brace miss.
-
-Wed Mar 22 08:53:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (exec_under): do not push cbase if ruby_cbase == under.
-
- * node.h (NEW_CREF0): preserve cbase nesting.
-
-Tue Mar 21 12:57:50 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (rb_class_s_new): Class::new should call `inherited'.
-
-Sat Mar 18 12:36:09 2000 Nobuyoshi Nakada <nobu.nokada@softhome.net>
-
- * eval.c (rb_backtrace, make_backtrace): removed unused variable
- `lev'.
-
- * eval.c (rb_attr): calls `method_added' at attribute definition.
-
- * eval.c (rb_mod_modfunc): calls `singleton_method_added' while
- `module_function'.
-
- * eval.c (rb_eval): parameter to `method_added' and
- `singleton_method_added' is Symbol.
-
- * eval.c (Init_eval): caches IDs for `method_added' and
- `singleton_method_added'.
-
-Sat Mar 18 11:25:10 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (rescue): allows `rescue Error in foo'. experimental.
- which is better this or preparing alias `exception' for `$!'?
-
-Fri Mar 17 15:02:45 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (rb_autoload_id): defining new autoload should be
- prohibited for $SAFE > 4.
-
- * variable.c (rb_autoload_load): autoload should be possible for
- $SAFE > 4.
-
- * eval.c (call_trace_func): should handle T_ICLASS properly.
-
-Fri Mar 17 14:34:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_gsub): forgot to initialize str->orig.
-
-Fri Mar 17 01:24:59 2000 Dave Thomas <Dave@thomases.com>
-
- * string.c (rb_str_clone): forgot to copy str->orig if STR_NO_ORIG
- is set by Array#pack.
-
-Wed Mar 15 21:25:04 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * array.c (rb_ary_join): 'result' is always duplicated
- before concat string.
-
-Wed Mar 15 17:26:05 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (rb_hash_s_create): unexpected recursive call removed.
- this bug was found by Satoshi Nojo <nojo@t-samukawa.or.jp>.
-
-Wed Mar 15 13:12:39 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (Init_Thread): Thread.join removed finally.
-
- * string.c (rb_str_chomp_bang): forgot to call rb_str_modify().
-
-Mon Mar 13 16:12:13 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (block_pass): distinguish real orphan block and still
- on-stack block passed by block argument.
-
-Mon Mar 13 00:20:25 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (f_norm_arg): proper error message when constant comes
- in formal argument list. this message is suggested by Muvaw
- Pnazte <bugathlon@yahoo.com>.
-
- * eval.c (rb_f_raise): proper error message when the first
- argument is not an exception class/object.
-
- * string.c (rb_str_dup): dup now postpone buffer copy as long as
- possible. performance improved by lazy copying.
-
-Sun Mar 12 13:58:52 2000 Koji Arai <JCA02266@nifty.ne.jp>
-
- * signal.c (rb_f_kill): should treat some symbols as the signal.
-
-Sat Mar 11 22:03:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_gsub): performance tune by avoiding buffer copy.
-
- * eval.c (rb_f_missing): check if argv[0] is ID.
-
-Sat Mar 11 15:49:41 2000 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * struct.c (rb_struct_aref): struct aref by symbol.
-
-Sat Mar 11 05:07:11 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * process.c (proc_setpriority): should return 0, not nil.
-
- * process.c (proc_setpgid): ditto.
-
-Fri Mar 10 18:14:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * file.c (path_check_1): confusing buf and path. this bug found
- by <decoux@moulon.inra.fr>.
-
-Fri Mar 10 09:37:49 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * MANIFEST: add beos/GNUmakefile.in.
- * configure.in: support BeOS R4.5.2 (Intel).
- * beos/GNUmakefile.in: new file to support BeOS R4.5.2 (Intel).
-
-Thu Mar 9 11:13:32 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_fastmap): fixed embarrassing brace bug.
-
-Thu Mar 9 01:36:32 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * missing/flock.c: emulate missing flock() with fcntl().
-
-Thu Mar 9 00:29:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (sym_to_s): returns ":sym".
-
- * object.c (sym_id2name): separated from to_s; returns "sym".
-
-Wed Mar 8 19:16:19 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.7.
-
- * lib/net/http.rb (connecting): returns header
-
-Wed Mar 8 02:08:43 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y: escape expansion too early.
-
- * string.c (rb_f_scan): Kernel#scan added.
-
- * regex.c (re_compile_pattern): support \cX et al.
-
-Tue Mar 7 01:44:27 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (set_stdin): simplified procedure, allows $stdin = DATA;
- experimental.
-
- * io.c (set_outfile): ditto.
-
- * re.c (Init_Regexp): new method Regexp#last_match added; it's an
- alternative for $~.
-
- * configure.in (DEFAULT_KCODE): KCODE_NONE should be the default.
-
- * dir.c (dir_s_rmdir): should return 0 on success.
-
- * signal.c: remove CWGUSI support.
-
-Mon Mar 6 12:28:37 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * marshal.c (w_symbol): support symbol object.
-
- * util.c: make symbol as separated class.
-
- * error.c (Init_Exception): new exception RangeError.
-
- * ext/socket/socket.c (ip_addrsetup): should check length of hostname.
-
- * ext/socket/socket.c (ip_addrsetup): check newline at the end of
- hostname. These fixes suggested by Muvaw Pnazte <bugathlon@yahoo.com>.
-
-Sun Mar 5 20:35:45 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/Win32API/Win32API.c (Win32API_initialize): should call
- LoadLibrary() everytime and should assign the hdll to Win32API
- object(protect the hdll from GC).
-
-Sun Mar 5 18:49:06 2000 Nakada.Nobuyoshi <nobu.nokada@softhome.net>
-
- * misc/ruby-mode.el (ruby-parse-region): not treat method `begin'
- and `end' as reserved words.
-
- * misc/ruby-mode.el (ruby-font-lock-docs): ignore after `=begin'
- and `=end'.
-
- * misc/ruby-mode.el (ruby-font-lock-keywords, hilit-set-mode-patterns):
- added `yield' to keywords.
-
- * misc/ruby-mode.el (ruby-font-lock-keywords, hilit-set-mode-patterns):
- matches keywords at end of buffer.
-
-Sun Mar 5 18:08:53 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.6.
-
- * lib/net/http.rb: allow to omit 'start'
-
-Tue Feb 29 01:08:26 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * range.c (range_initialize): initialization done in `initialize';
- `initialize' should not be called more than once.
-
- * object.c (Init_Object): default `initialize' should take zero
- argument.
-
- * time.c (time_s_new): call `initialize' in Time::new.
-
-Sat Feb 26 22:39:31 2000 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * string.c (rb_str_times): fix String#* with huge string.
-
-Sat Feb 26 00:14:59 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * dir.c (dir_s_new): call `initialize' in Dir::new.
-
-Fri Feb 25 23:01:49 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ruby.h: export ruby_safe_level by EXTERN for mswin32.
- * win32/ruby.def: regular maintenance.
-
-Fri Feb 25 22:12:46 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_reopen): IO#reopen should accept path as well.
-
- * string.c (rb_str_s_new): call `initialize' in String::new.
-
- * hash.c (rb_hash_s_new): call `initialize' in Hash::new.
-
- * array.c (rb_ary_s_new): call `initialize' in Array::new.
-
-Fri Feb 25 12:50:20 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_start_timer): interval changed to 10ms from 50ms.
-
-Fri Feb 25 06:42:26 2000 GOTOU YUUZOU <gotoyuzo@notwork.org>
-
- * ext/socket/socket.c (ip_addrsetup): hostp should remain NULL if
- host is nil.
-
-Thu Feb 24 16:53:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_schedule): priority check for sleep expired
- threads needed.
-
-Wed Feb 23 14:22:32 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_join): forgot to initialize a local variable
- `taint'.
-
-Tue Feb 22 07:40:55 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (Init_Regexp): renamed to MatchData, old name MatchingData
- remain as alias.
-
-Tue Feb 22 00:20:21 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.5.
-
- * lib/net/session.rb: rename to protocol.rb
-
- * lib/net/protocol.rb: ProtocolSocket -> Net::Socket
-
- * lib/net/protocol.rb: Net::Socket#write, write_pendstr
- can take block
-
- * lib/net/smtp.rb: new methods SMTP#ready SMTPCommand#write_mail
-
- * lib/net/pop.rb: POPMail#pop can take block
-
-Sat Feb 19 23:58:51 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_match): pop_loop should not pop at forward jump.
-
-Fri Feb 18 17:15:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (method_clone): method objects are now clonable.
-
-Fri Feb 18 00:27:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (rb_shared_variable_declare): shared variable (aka
- class/module variable) introduced. prefix `@@'. experimental.
-
- * class.c (rb_scan_args): new format char '&'.
-
-Thu Feb 17 19:09:05 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * win32/win32.c (mypopen): don't close handle if it is not assigned.
- * win32/win32.c (my_open_osfhandle): support O_NOINHERIT flag.
- * win32/win32.c (win32_getcwd): rename getcwd to win32_getcwd
- in order to avoid using the C/C++ runtime DLL's getcwd.
- Use CharNext() to process directory name.
- * win32/win32.h: map getcwd to win32_getcwd.
-
-Wed Feb 16 00:32:49 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (method_arity): nd_rest is -1 for no rest argument.
-
- * process.c (proc_waitpid): returns nil when waitpid(2) returns 0.
-
-Tue Feb 15 01:47:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * process.c (rb_f_waitpid): pid_t should be signed.
-
-Mon Feb 14 13:59:01 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): yylex yields wrong tokens for `:foo=~expr'.
-
- * ruby.c (load_file): exit if reading file is empty.
-
-Mon Feb 14 03:34:52 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): `foo.bar=1' should be <foo><.><bar><=><1>,
- not <foo><.><bar=><1>.
-
- * eval.c (rb_thread_restore_context): process according to
- RESTORE_* is moved after longjmp().
-
- * eval.c (thread_switch): new function to process RESTORE_*.
-
-Sun Feb 13 16:19:49 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ruby.c (require_libraries): don't access freed memory.
-
- * ruby.c (add_modules): ditto.
-
-Fri Feb 11 12:06:22 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (parse_quotedwords): %w() need to split not only by mere
- spaces, but by all whitespaces.
-
-Thu Feb 10 02:12:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_index_m): did not support negative offset.
-
-Wed Feb 9 21:54:26 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/socket/getaddrinfo.c: gcc --traditional support.
- Rearrange headers to work AC_C_CONST.
- * ext/socket/getnameinfo.c: ditto.
- * ext/socket/socket.c: mswin32: use double instead of long long.
-
-Wed Feb 9 16:30:41 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * numeric.c (num_coerce): should return [y, x].
-
-Wed Feb 9 11:07:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (ruby_prog_init): loadpath structure changed.
-
-Tue Feb 8 02:07:33 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_search): optimize for \G at top.
-
- * regex.c (re_compile_pattern): \G introduced.
-
- * regex.c (re_match): ditto.
-
- * string.c (str_sub_bang): old behavior restored: bang method
- returns nil if string not changed.
-
- * regex.c (re_compile_pattern): support independent subexpression
- `(?>pattern)'.
-
- * regex.c (re_match): ditto.
-
-Mon Feb 7 15:51:08 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_match): now understands interrupts under Ruby.
-
-Mon Feb 7 07:51:52 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_uniq_bang): always return an Array.
-
- * array.c (rb_ary_compact_bang): ditto.
-
- * array.c (rb_ary_flatten_bang): ditto.
-
- * hash.c (rb_hash_reject): returns a Hash, not an Array.
-
- * hash.c (env_reject): ditto.
-
-Fri Feb 4 10:20:25 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (scan_once): scan now leaves information about the last
- successful pattern match in $&.
-
- * io.c (rb_io_close): should not check closed IO.
-
-Fri Feb 4 05:44:01 2000 Kentaro Inagaki <inagaki@tg.rim.or.jp>
-
- * ext/socket/socket.c (s_recv): TRAP_BEG after retry entry.
-
-Wed Feb 2 22:33:45 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * eval.c (rb_thread_start): receives argument from outside, like
- `Thread::start(1,2,3){|a,b,c| ... }'.
-
-Wed Feb 2 22:14:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (rb_reg_regsub): should check regs->num_regs.
-
- * re.c (rb_reg_search): remove matchcache, use static struct
- re_register instead.
-
- * re.c (match_getter): avoid cloning match data.
-
-Wed Feb 2 17:12:15 2000 Dave Thomas <Dave@Thomases.com>
-
- * samples/eval.rb: Rescue new ScriptError exception
-
-Wed Feb 2 02:06:07 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_gsub_bang): gsub! now leaves information about the
- last successful pattern match in $&.
-
-Mon Jan 31 15:24:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_sub_bang): bang method returns string always.
- experimental.
-
-Sun Jan 30 17:58:09 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * eval.c: arrange to use setitimer(2) for BOW, DJGPP
-
- * defines.h: ditto. use random(3) on cygwin b20.1.
-
-Sun Jan 30 17:20:16 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * eval.c: use getrlimit(2) on DJGPP.
-
-Thu Jan 27 01:27:10 2000 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
-
- * dir.c (glob): glob pattern "/*" did not match.
-
-Wed Jan 26 22:30:47 2000 Shigeo Kobayashi <shigeo@tinyforest.gr.jp>
-
- * numeric.c (flo_modulo): wrong result for negative modulo.
-
-Wed Jan 26 02:01:57 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * file.c (test_c): should use S_ISCHR.
-
- * file.c (rb_stat_c): ditto.
-
- * string.c (rb_str_each_line): should propagate tainting.
-
-Tue Jan 25 04:01:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (rb_obj_freeze): all objects made freezable.
-
-Tue Jan 25 00:37:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: use AC_CHECK_TOOL for cross compiling.
-
-Mon Jan 24 19:01:54 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * array.c (rb_protect_inspect): should be checked by id of
- objects; not by object themselves.
-
-Mon Jan 24 18:48:08 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * eval.c (rb_eval): too many warnings; warned on every method
- overriding. should be on method discarding.
-
-Mon Jan 24 02:56:44 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): -2.abs should be `(-2).abs' to accomplish the
- principle of less surprise. `+2' too.
-
- * eval.c (rb_eval): when defining class is already there, and
- superclass differ, throw away the old class.
-
- * variable.c (rb_const_set): gives warning again on constant
- redefinition.
-
- * error.c (Init_Exception): SyntaxError, NameError, LoadError and
- NotImplementError are subclasses of ScriptError<Exception, not
- StandardError. experimental.
-
-Sat Jan 22 00:00:41 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (parse_quotedwords): no longer use `String#split'.
- and enable space escape within quoted word list.
- e.g. %w(a\ b\ c abc) => ["a b c", "abc"].
-
- * string.c (rb_str_slice_bang): new method `slice!'.
-
-Fri Jan 21 21:56:08 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.4.
-
- * lib/net/http.rb: can receive messages which have
- no Content-Length:.
-
-Fri Jan 21 16:15:59 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (thgroup_s_new): new class ThreadGroup.
-
-Tue Jan 18 12:24:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * struct.c (Init_Struct): remove Struct's own hash and eql?.
-
-Sat Jan 15 22:21:08 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * eval.c (search_method): argument klass may be 0.
-
-Sat Jan 15 15:03:46 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * enum.c (enum_index): remove this method.
-
- * enum.c: remove use of pointers to local variables. find,
- find_all, min, max, index, member?, each_with_index,
-
- * eval.c (massign): multiple assignment does not use to_a anymore.
- experimental.
-
-Fri Jan 14 12:22:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_replace): use memmove instead of memcpy for
- overwrapping strings (e.g. a[1] = a).
-
-Thu Jan 13 11:12:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (arg_add): use new node, ARGSPUSH.
-
-Mon Jan 10 18:32:28 2000 Koji Arai <JCA02266@nifty.ne.jp>
-
- * marshal.c (w_object): forgot an argument to call w_ivar().
-
-Sun Jan 9 18:13:51 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * random.c: first was not defined unless HAVE_RANDOM.
-
-Sat Jan 8 19:02:49 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_sysread): raise IOError for buffered IO.
-
- * ext/socket/socket.c (s_recv): ditto.
-
-Fri Jan 7 00:59:29 2000 Masahiro Tomita <tommy@tmtm.org>
-
- * io.c (io_fread): TRAP_BEG/TRAP_END added around getc().
-
-Thu Jan 6 00:39:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * random.c (rb_f_rand): should be initialized unless srand is
- called before.
-
-Wed Jan 5 16:59:34 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.3.
-
- * lib/net/session.rb: Session -> Protocol, ...
-
- * lib/net/http.rb: HTTPCommand implementation was changed.
-
-Wed Jan 5 02:14:46 2000 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * parse.y: Fix SEGV on empty parens with UMINUS or UPLUS.
-
-Tue Jan 4 22:25:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (stmt): `() while cond' dumped core.
-
-Tue Jan 4 06:04:14 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * configure.in: modify for cross-compiling.
- use target_* instead of host_*.
- use AC_CANONICAL_TARGET.
-
- * Makefile.in: ditto.
-
- * cygwin/GNUmakefile.in: ditto.
-
-Sat Jan 1 13:26:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_yield_0): force_recycle ruby_dyna_vars to gain
- performance.
-
- * array.c (rb_ary_delete_at_m): takes same argument pattern with
- rb_ary_aref.
-
-Sat Jan 1 10:12:26 2000 Nobuyoshi Nakada <nobu.nokada@softhome.net>
-
- * ruby.h,util.c (rb_special_const_p): peep hole optimization.
-
- * ruby.h,util.c (rb_test_false_or_nil): removed.
-
- * ruby.h (RTEST, SPECIAL_CONST_P): peep hole optimization.
-
- * ruby.h (FL_ABLE, FL_SET, FL_UNSET, FL_REVERSE): made expressions
- not statements.
-
- * ruby.h (OBJ_INFECT): newly added macro which copies taint from
- `s' to `x'.
-
-Sat Jan 1 02:04:18 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_safe_level): new method.
-
- * eval.c (rb_yield_0): recycle dyna_var_map to reduce object
- allocation.
-
-Fri Dec 31 00:52:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c: thread independent trace_func not needed.
-
-Thu Dec 30 14:47:31 1999 akira yamada <akira@ruby-lang.org>
-
- * configure.in: specifies -soname in LIBRUBY_DLDFLAGS on linux
- platforms.
-
-Thu Dec 30 10:51:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c,io.c,hash,c,re.c,string.c: `_m' suffix instead of
- `_method' for wrapper functions to implement method,
- e.g. `rb_str_join_m()'.
-
-Thu Dec 30 02:08:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (rb_cstr2inum): non-numeric format check added.
- currently it works only with base == 0 (i.e. Integer()).
-
- * bignum.c (rb_str2inum): now takes VALUE to 1st argument. null
- byte check added.
-
- * array.c (rb_ary_replace): unless replacement is an array,
- replacement shall be converted to array by `[replacement]', not
- by `replacement.to_a'.
-
- * array.c (rb_ary_plus): right operand must be an array.
-
- * array.c (rb_ary_concat): argument must be an array.
-
-Mon Dec 27 12:35:47 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/socket/socket.c (sock_finalize): mswin32: fix socket handle leak.
-
- * win32/win32.c (myfdclose): ditto.
-
-Sun Dec 26 23:15:13 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * win32/win32.c (mypopen): raise catchable error instead of rb_fatal.
- * win32/win32.c (mypclose): fix process handle leak.
-
-Sun Dec 26 16:17:11 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/Win32API/Win32API.c (Win32API_initialize): use UINT2NUM
- instead of INT2NUM to set __dll__ and __proc__.
-
-Sat Dec 25 00:08:59 1999 KANEKO Naoshi <wbs01621@mail.wbs.ne.jp>
-
- * ext/Win32API/Win32API.c (Win32API_Call): remove 'dword ptr'
- from _asm.
-
-Fri Dec 24 10:26:47 1999 Koji Oda <oda@bsd1.qnes.nec.co.jp>
-
- * win32/win32.h: use "C++" linkage.
-
-Fri Dec 24 02:00:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (THREAD_ALLOC): should initialize th->trace.
-
-Fri Dec 24 00:43:39 1999 KANEKO Naoshi <wbs01621@mail.wbs.ne.jp>
-
- * io.c (pipe_open): check for `fptr->f == NULL'.
- * win32/win32.c (mypopen): STDERR does not work during ` function.
-
-Wed Dec 22 22:50:40 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.2.
-
- * lib/net/http.rb: HTTP support is enhanced a little
-
- * lib/net/http.rb: support proxy
-
-Tue Dec 21 17:21:28 1999 Koji Oda <oda@bsd1.qnes.nec.co.jp>
-
- * ext/socket/socket.c (sock_finalize): mswin32: fix FILE* leak.
-
-Tue Dec 21 05:33:56 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.1.
-
- * lib/net/http.rb: support HTTP chunk
-
-Mon Dec 20 19:08:12 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * file.c (rb_file_s_expand_path): handle dir separator correctly.
-
-Sun Dec 19 22:56:31 1999 KANEKO Naoshi <wbs01621@mail.wbs.ne.jp>
-
- * lib/find.rb: support dosish root directory.
- * win32/Makefile: ditto.
- * win32/config.status: ditto.
- * win32/win32.c (opendir): ditto.
- * win32/win32.c (opendir): use CharPrev() to get last character
- of the directory name.
-
-Sat Dec 18 03:00:01 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * file.c (path_check_1): check should be done by absolute path.
-
- * marshal.c (r_ivar): should restore generic_ivar too.
-
- * marshal.c (w_ivar): should dump generic_ivar too.
-
-Fri Dec 17 22:46:46 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.0.
-
- * lib/net/http.rb: test release
-
- * lib/net/session.rb: support class swapping
-
- * lib/net/session.rb: Socket#flush_rbuf
-
- * lib/net/session.rb: doquote -> Net.quote
-
-Fri Dec 17 19:27:43 1999 IWAMURO Motonori <iwa@mmp.fujitsu.co.jp>
-
- * eval.c (rb_load): should initialize ruby_frame->last_class.
-
-Wed Dec 15 01:35:29 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (proc_options): option to change directory changed to
- `-C' like tar.
-
- * ruby.c (proc_options): argv boundary check for `-X'.
-
-Mon Dec 13 15:15:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_adjust_startpos): separate startpos adjustment
- because of major performance drawback.
-
- * class.c (rb_singleton_class): tainted status of the singleton
- class must be synchronized with the object.
-
- * eval.c (rb_thread_schedule): implement thread priority.
-
-Sat Dec 11 03:34:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * gc.c (mark_hashentry): key should be VALUE, not ID.
-
- * io.c (argf_eof): should check next_p too.
-
-Thu Dec 9 18:09:13 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * error.c (exc_set_backtrace): forgot to declare a VALUE argument.
-
-Thu Dec 9 14:19:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (rb_obj_taint): explicit tainting must be prohibited at
- level 4 to prevent polluting trusted object by untrusted code.
-
- * file.c: file operations (stat, lstat, chmod, chown, umask,
- truncate, flock) are prohibited in level 2 (was level 4).
-
-Wed Dec 8 11:48:23 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_f_require): prohibiting require() in the secure mode
- cause serious autoloading error.
-
- * variable.c (rb_obj_instance_variables): don't need to prohibit
- to get list of instance variable names of untainted objects.
-
- * variable.c (rb_ivar_get): don't need to prohibit to get instance
- variables of untainted objects.
-
- * variable.c (rb_mod_remove_const): should prohibit constant
- removals too.
-
-Wed Dec 8 09:23:01 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): should try autoloading before defining
- class/module at the toplevel.
-
-Tue Dec 7 22:15:30 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * configure.in: Modified rb_cv_rshift_sign detect routine and
- more simple/fast RSHIFT() for hpux-10.x.
-
-Tue Dec 7 11:16:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (Init_eval): calculate stack limit from rlimit where
- getrlimit(2) is available.
-
-Tue Dec 7 09:57:33 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * file.c (rb_file_ftype): should have removed mode_t.
-
-Mon Dec 6 15:55:30 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * numeric.c (fix_rshift): Fix -1 >> 32 returned 0 (should be -1).
-
- * numeric.c (fix_rshift): Fix 1 >> -1 returned 0 (should be 2).
-
-Mon Dec 6 11:47:23 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sprintf.c (rb_f_sprintf): formatted string must be tainted if
- any of parameters is a tainted string.
-
- * file.c (rb_file_s_expand_path): expanded file path need not to
- be tainted always.
-
-Sun Dec 5 20:25:29 1999 Katsuhiro Ueno <unnie@blue.sky.or.jp>
-
- * eval.c (Init_Proc): simple typo.
-
- * gc.c (add_heap): sizeof(RVALUE*), not sizeof(RVALUE).
-
-Sat Dec 4 01:40:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_search): adjust startpos for multibyte match unless
- the first pattern is forced byte match.
-
- * bignum.c (rb_big_rand): should not use rand/random where drand48
- may be available. RANDOM_NUMBER should be provided from outside.
-
-Fri Dec 3 09:54:59 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (moreswitches): there may be trailing garbage at #!
- line.
-
- * eval.c (rb_f_require): should check require 'feature.o' too.
-
-Thu Dec 2 11:58:15 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * eval.c (rb_thread_loading): should maintain loading_tbl.
-
-Thu Dec 2 10:21:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_loading_done): wrong parameter to st_delete().
-
-Wed Dec 1 11:24:06 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * ruby.c (process_sflag): process -s properly (should not force `--').
-
-Wed Dec 1 09:47:33 1999 Kazunori NISHI <kazunori@swlab.csce.kyushu-u.ac.jp>
-
- * string.c (rb_str_split_method): should increment end too.
-
-Tue Nov 30 18:00:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * marshal.c: MARSHAL_MINOR incremented; format version is 4.2.
-
- * marshal.c (w_object): distinguish class and module.
-
- * marshal.c (w_object): save hash's default value.
-
- * marshal.c (r_object): restore hash's default value.
-
-Tue Nov 30 01:46:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (rb_reg_source): generated source string must be tainted if
- regex is tainted.
-
- * file.c (rb_file_s_basename): basename should not be tainted
- unless the original path is tainted.
-
- * file.c (rb_file_s_dirname): ditto.
-
-Mon Nov 29 20:42:13 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * file.c (stat_new): Struct::Stat -> File::Stat; Stat is no longer
- a Struct.
-
-Mon Nov 29 15:28:52 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (rb_path2class): evaluated value from path should be
- module or class.
-
-Fri Nov 26 18:12:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_exec_end_proc): should remove only end_procs defined
- within load wrapper.
-
- * eval.c (rb_load): save and restore ruby_wrapper around loading.
-
- * eval.c (rb_mark_end_proc): mark end procs registered by END{} or
- at_exit{}.
-
- * eval.c (rb_set_end_proc): should not call rb_global_variable()
- on heap address; it crashed mod_ruby.
-
-Mon Nov 22 14:07:24 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * ruby.c (proc_options): variable e_script should be visited by
- garbage collector.
-
-Sat Nov 20 10:10:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (inspect_i): value may be nil, check revised.
-
-Fri Nov 19 18:06:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * dir.c (glob): recursive wildcard match by `**' ala zsh.
-
-Fri Nov 19 11:44:26 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * variable.c: was returning void value.
-
-Fri Nov 19 03:57:22 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * file.c: add methods Stat struct class to reduce stat(2).
-
-Thu Nov 18 16:18:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * lib/pstore.rb: mutual lock by flock(2).
-
-Thu Nov 18 11:44:13 1999 Masahiro Tomita <tommy@tmtm.org>
-
- * io.c (read_all): should check bytes too.
-
-Wed Nov 17 02:40:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (Init_IO): $defout (alias of $>) added.
-
-Tue Nov 16 09:47:14 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * lib/pstore.rb: add mutual lock using symlink.
-
-Mon Nov 15 16:50:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * enum.c (enum_grep): non matching grep returns an empty array, no
- longer returns nil.
-
- * enum.c (enum_grep): grep with block returns collection of
- evaluated values of block over matched elements.
-
-Mon Nov 15 04:50:33 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * re.c (rb_reg_source): should not call rb_reg_expr_str()
- everytime.
-
-Sat Nov 13 07:34:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (rb_mod_constants): traverse superclasses to collect
- constants.
-
- * eval.c (assign): modified for shared variables.
-
- * eval.c (rb_eval): search nested scope, then superclasses to
- assign shared variables within methods.
-
- * eval.c (rb_eval): remove warnings from constants modification,
- because they are no longer constants.
-
- * parse.y (node_assign): modified for shared variables.
-
- * parse.y (assignable): allow constant assignment in methods;
- constants should be called `shared variable'.
-
-Fri Nov 12 23:52:19 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * process.c (rb_f_system): argument check for NT, __EMX__, DJGPP.
-
-Wed Nov 10 21:54:11 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * hash.c (rb_any_cmp): Fixed return without value.
-
-Wed Nov 10 17:57:06 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sprintf.c: incorporate <yasuf@big.or.jp>'s sprintf patch at
- [ruby-dev:7754].
-
-Wed Nov 10 08:28:53 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_call0): supply class parameter for each invocation.
-
-Tue Nov 9 13:21:04 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * configure.in: AC_MINIX move to before AC_EXEEXT and AC_OBJEXT.
-
-Mon Nov 8 19:52:29 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * configure.in: Renamed AC_CHAR_UNSIGNED to AC_C_CHAR_UNSIGNED.
-
- * configure.in: Added default to AC_CHECK_SIZEOF().
-
-Mon Nov 8 14:28:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (stmt): rescue modifier added to the syntax.
-
- * keywords: kRESCUE_MOD added.
-
- * eval.c (rb_f_eval): fake outer scope when eval() called without
- bindings.
-
- * eval.c (rb_f_binding): should copy last_class in the outer frame too.
-
-Sun Nov 7 18:31:04 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
-
- * eval.c (is_defined): last_class may be 0.
-
-Sat Nov 6 19:26:55 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * Makefile.in: Added depend entry make parse.@OBJEXT@ from parse.c
- for UCB make
-
-Thu Nov 4 17:41:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): \< (wordbeg), \> (wordend) disabled.
-
-Wed Nov 3 08:52:57 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
-
- * io.c (Init_IO): forgot to use INT2FIX() around SEEK_SET, etc.
-
-Wed Nov 3 00:25:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_split_method): use mbclen2() to handle kcode
- option of regexp objects.
-
-Mon Nov 1 14:22:15 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * eval.c (rb_eval): reduce recursive calls to rb_eval()
- case of ||= and &&= .
-
-Sun Oct 31 13:12:42 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * regex.c (re_compile_pattern): wrong [\W] match.
-
-Fri Oct 29 16:57:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/nkf/lib/kconv.rb: new String methods (kconv, tojis, toeuc,
- tosjis).
-
- * time.c (time_s_at): now accepts optional second argument to
- specify micro second.
-
-Thu Oct 28 13:35:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_split_method): should be mbchar aware with
- single char separators.
-
-Wed Oct 27 12:57:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * random.c (rb_f_srand): random seed should be unsigned.
-
-Tue Oct 26 23:58:15 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_collect): collect for better performance.
-
-Tue Oct 26 19:20:54 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * marshal.c (r_object): should register class/module objects.
-
-Sat Oct 23 15:59:39 1999 Takaaki Tateishi <ttate@jaist.ac.jp>
-
- * process.c (rb_f_system): should require at least one argument.
-
-Sat Oct 23 12:42:44 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * enum.c (enum_collect): collect without block will collect
- elements in enumerable.
-
-Thu Oct 21 16:14:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (moreswitches): function to process string option;
- the name is stolen from perl (not implementation).
-
- * ruby.c (proc_options): use RUBYOPT environment variable to
- retrieve the default options.
-
- * dir.c (fnmatch): use eban's fnmatch; do not depend on systems's
- fnmatch (which may have portability problem) anymore.
-
-Wed Oct 20 15:14:24 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * marshal.c (marshal_load): should protect the generated object
- table (arg->data) from GC.
-
-Mon Oct 18 16:15:52 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/nkf/nkf.c (rb_nkf_kconv): output should be NUL terminated.
-
-Mon Oct 18 09:03:01 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/session.rb, smtp.rb, pop.rb: 1.0.3
-
- * lib/net/pop.rb: new methods POP3Command#uidl, POPMail#uidl.
-
-Sun Oct 17 03:35:33 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
-
- * array.c (rb_ary_pop): forgot some freeze checks.
-
-Sat Oct 16 12:57:53 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * array.c (rb_ary_sort): always returns the copied array.
-
-Fri Oct 15 22:50:41 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * error.c (sys_nerr): on CYGWIN, it is _sys_nerr.
-
-Fri Oct 15 01:32:31 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * io.c (rb_io_ctl) :need to use NUM2ULONG, not NUM2INT.
-
- * ext/Win32API/Win32API.c (Win32API_Call): need to use NUM2ULONG,
- not NUM2INT.
-
-Fri Oct 15 00:22:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (Init_Regexp): super class of the MatchingData, which was
- Data, to be Object.
-
- * eval.c (ruby_run): evaluate required libraries before load &
- compiling the script.
-
- * parse.y (lex_getline): retrieve a line from the stream, saving
- lines in the table in debug mode.
-
- * eval.c (call_trace_func): treat the case ruby_sourcefile is null.
-
-Thu Oct 14 02:00:10 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (string): compile time string concatenation.
-
-Wed Oct 13 07:28:09 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/session.rb, smtp.rb, pop.rb: 1.0.2
-
- * lib/net/session.rb: new method Session#set_pipe.
-
- * lib/net/session.rb, smtp.rb, pop.rb: add RD documentation.
-
-Wed Oct 13 02:17:05 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * array.c (rb_ary_plus): remove recursion.
-
- * array.c (rb_ary_sort_bang): detect modify attempt.
-
-Wed Oct 13 02:17:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (block_pass): should copy block to prevent modifications.
- tag in the structure should be updated from latest prot_tag.
-
- * eval.c (proc_s_new): tag in struct BLOCK should not point into
- unused stack.
-
- * dir.c (dir_s_glob): iterate over generated matching filenames if
- the block is given to the method.
-
- * array.c (rb_ary_at): new methods; at, first, last.
-
- * hash.c (rb_hash_fetch): raises exception unless the default
- value is supplied.
-
- * hash.c (rb_hash_s_create): need not remove nil from value.
-
- * hash.c (rb_hash_aset): setting value to nil does not remove key
- anymore.
-
-Tue Oct 12 22:29:04 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_read): length may be 0 or negative.
-
-Tue Oct 12 13:26:27 1999 Jun-ichiro itojun Hagino <itojun@itojun.org>
-
- * signal.c (posix_signal): RETSIGTYPE may be void.
-
-Tue Oct 12 03:28:03 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * array.c (rb_ary_delete_at): allows negative position.
-
-Mon Oct 11 17:42:25 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * parse.y (rb_intern): should generate distinct ID_ATTRSET symbols
- for the name with multiple `='s at the end.
-
- * Makefile.in (CPPFLAGS): separate cpp flags from CFLAGS.
-
-Mon Oct 11 07:27:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): should not execute the `else' clause on the
- case the exceptions are handled by the `rescue' clause.
-
- * signal.c (Init_signal): ignore SIGPIPE by default.
-
-Wed Oct 6 17:13:19 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * ruby.c (addpath): rubylib_mangled_path() modified.
-
-Mon Oct 4 12:42:32 1999 Kazuhiko Izawa <izawa@erec.che.tohoku.ac.jp>
-
- * pack.c (pack_unpack): % in printf format should be %%.
-
-Mon Oct 4 10:01:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (rb_obj_instance_variables): should always return
- array for all object can have instance variables now.
-
-Mon Oct 4 00:08:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * pack.c (OFF16): need to adjust pointer address to pack/unpack on
- 64bit machines.
-
-Sun Oct 03 03:05:59 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * time.c (time_arg): mktime y2k problem.
-
-Sun Sep 26 16:54:45 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * parse.y (here_document): `\r' handling for here documents.
-
-Wed Sep 22 09:20:11 1999 Masahiro Tomita <tommy@tmtm.org>
-
- * ext/socket/socket.c: SOCKS5 support.
-
-Wed Sep 22 07:33:23 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/session.rb, smtp.rb, pop.rb: 1.0.1
-
- * lib/net/pop.rb: APOP did not work.
-
- * lib/net/pop.rb: modify the way to make APOP challenge.
-
-Wed Sep 22 00:35:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_include): should return boolean value.
-
- * regex.c (re_compile_fastmap): wrong comparison with mbc.
-
- * eval.c (specific_eval): default sourcefile name should be
- "(eval)" for module_eval etc.
-
-Wed Sep 22 00:06:07 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * win32/Makefile: update rules.
-
- * io.c (io_fread): should not assign in char, it maybe -1.
-
-Tue Sep 21 23:57:54 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (call_trace_func): should not propagate retval in
- trace_func.
-
-Mon Sep 20 21:35:39 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * win32/win32.c (myselect): assume non socket files are always
- readable/writable.
-
-Mon Sep 20 01:08:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_fread): should not block other threads.
-
- * io.c (rb_io_synchronized): renamed from rb_io_unbuffered(); do
- not call setbuf(NULL) anymore.
-
-Sat Sep 18 13:45:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * stable version 1.4.2 released.
-
-Fri Sep 17 23:24:17 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * eval.c (rb_f_missing): dumped core if no argument given.
-
-Fri Sep 17 23:21:06 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * win32/win32.c (myselect): translate WSAEINTR, WSAENOTSOCK into
- UNIX errno constants.
-
-Fri Sep 17 00:52:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (arg): assignable() may return 0.
-
-Thu Sep 16 20:46:23 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * eval.c (rb_eval): was doubly evaluating the return expression.
-
-Thu Sep 16 18:40:08 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * stable version 1.4.1 released.
-
-Thu Sep 16 11:33:22 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * string.c (rb_str_match): should return nil.
-
-Wed Sep 15 22:46:37 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (rb_reg_s_quote): should quote `-' too.
-
-Tue Sep 14 15:23:22 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * parse.y (yylex): no need to ignore `\r' here.
-
- * parse.y (nextc): strip `\r' from text.
-
- * parse.y (nextc): support `__END__\r\n' type terminator.
-
-Mon Sep 13 10:49:19 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * eval.c (rb_eval): needless RTEST(ruby_verbose) removed.
-
-Mon Sep 13 09:10:11 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/net/session.rb, smtp.rb, pop.rb: 1.0.0
-
-Wed Sep 8 11:37:38 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * time.c (make_time_t): bit more strict comparison.
-
-Tue Sep 7 00:50:56 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * range.c (range_each): use rb_str_upto() for strings.
-
- * string.c (rb_str_upto): set upper limit by comparing curr <= end.
-
- * range.c (range_each): should check equality to handle magic
- increment.
-
-Mon Sep 6 22:43:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): break/next/redo available within -n/-p loop.
-
-Fri Sep 3 11:14:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * compar.c (cmp_equal): should not raise exception; protect by
- rb_rescue().
-
-Thu Sep 2 05:23:05 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * file.c (rb_file_s_expand_path): use dirsep, instead of character
- literal '/'.
-
- * file.c (rb_file_s_expand_path): reduce multiple dirsep at the top.
-
-Wed Sep 1 00:28:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_call): call rb_undefined() if a method appears not to
- be exist explicitly from cache.
-
- * eval.c (rb_method_boundp): check method cache before calling
- rb_get_method_body().
-
- * eval.c (rb_get_method_body): store method non-existence
- information in the cache.
-
- * random.c (rb_f_srand): use getpid(2) to generate seed.
-
- * regex.c (re_match): do not apply partial mbc match for
- charset_not.
-
- * regex.c (re_compile_pattern): put extended literal prefix (0xff)
- only before numeric literals, not before all >0x80 char.
-
- * regex.c (re_compile_pattern): put numeric literal in extended
- charset region, not normal charset bits.
-
- * regex.c (re_compile_fastmap): calculate fastmap for charset and
- charset_not to treat numeric literal (e.g. \246) specially.
-
-Fri Aug 28 17:32:55 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
-
- * eval.c (rb_eval): should set return value (nil) explicitly if a
- value is omitted for return statement.
-
-Thu Aug 26 15:06:11 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
-
- * gc.c (rb_gc): local variables may be placed beyond stack_end, so
- use an address from alloca(1) on non C_ALLOCA platforms.
-
-Thu Aug 26 01:24:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sprintf.c (rb_f_sprintf): "%%" is legal, but "%3.14%" is not.
-
-Mon Aug 23 00:00:54 1999 Tsukada Takuya <tsukada@fminn.nagano.nagano.jp>
-
- * regex.c (re_compile_fastmap): wrong macro caused memory leak.
-
-Sat Aug 21 11:30:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (ADJ): should not adjust addresses to data on heap.
-
-Fri Aug 20 20:50:58 1999 Kenji Nagasawa <kenn@hma.att.ne.jp>
-
- * defines.h (PATH_SEP): path separator is ";" for OS/2.
-
-Thu Aug 19 10:50:43 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * gc.c (rb_gc): add volatile to avoid GCC optimize bug(?).
-
-Wed Aug 18 23:48:10 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * due to disk trouble, some change records were lost. several
- modification made to eval.c, gc.c, io.c, pack.c,
- ext/extmk.rb.in, and lib/mkmf.rb.
-
-Fri Aug 13 15:41:39 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * stable version 1.4.0 released.
-
-Fri Aug 13 03:16:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (argf_forward): since $stdout may be non-IO, ARGF.file is
- not guaranteed to be IO. check and forwarding added to every ARGF
- method.
-
- * io.c (set_outfile): $stdout/$stderr may not be IO now.
-
- * io.c (set_stdin): $stdin may not be IO now.
-
- * range.c (rb_range_beg_len): round `end' to length as documented.
-
- * io.c (Init_IO): preserve original stdin/stdout/stderr.
-
-Thu Aug 12 13:44:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (Init_load): require receives 1 argument.
-
- * eval.c (frame_dup): should clear tmp to avoid dangling
- references.
-
-Wed Aug 11 13:33:13 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * eval.c (rb_eval): no automatic aggregate initialization.
-
- * eval.c (module_setup): ditto.
-
-Wed Aug 11 18:18:41 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * eval.c (yield_under_i): automatic aggregate initialization is an
- ANSI feature.
-
-Wed Aug 11 10:10:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): parse `[].length==0' as `([].length)==0', not
- `([].length=)=0'
-
- * parse.y (yylex): parse `[].length!=0' as `([].length)!=0', not
- `([].length!)=0'
-
- * parse.y (peek): peek-in lexical buffer.
-
-Wed Aug 11 00:34:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_match): bug on backward jump adjustment concerning
- stop_paren.
-
-Tue Aug 10 14:54:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/nkf/nkf.c (rb_nkf_guess): binary detection was wrong.
-
-Tue Aug 10 00:07:36 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_clone): should use CLONESETUP().
-
-Mon Aug 9 23:57:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.h (CLONESETUP): should have copied generic instance
- variables too.
-
-Mon Aug 9 10:46:54 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/socket/extconf.rb: add check for <arpa/nameser.h> and
- <resolv.h>.
-
-Sat Aug 7 13:19:06 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * numeric.c (flo_cmp): comparing NaN should not return value.
- raises FloatDomainError.
-
-Sat Aug 7 03:09:08 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (blk_free): free copied frames too.
-
- * eval.c (frame_dup): should copy previous frames from stack to
- heap to preserve frame information.
-
-Fri Aug 6 15:01:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.3.7 - version 1.4 beta
-
- * ext/socket/socket.c (s_recv): UDPsocket#recvfrom now returns
- IPsocket#addr information.
-
- * array.c (rb_ary_subary): ary[-3,3] should not return nil.
-
-Thu Aug 5 10:58:01 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (thread_mark): protect old ruby_frame from GC during it
- replaced by eval().
-
- * eval.c (eval): do not modify frame.prev; binding should preserve
- information about calling() too.
-
- * eval.c (rb_yield_0): no arity check for mere yield; but only for
- Proc#call.
-
-Tue Aug 3 22:07:13 1999 Kazuhiro HIWADA <hiwada@kuee.kyoto-u.ac.jp>
-
- * object.c (rb_mod_clone): should check if iv_tbl, m_tbl are
- initialized.
-
-Tue Aug 3 19:03:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (rb_any_cmp): use rb_with_disable_interrupt() to ensure
- clearance of rb_prohibit_interrupt even on failure.
-
- * eval.c (rb_with_disable_interrupt): new function added.
-
-Sat Jul 31 23:23:44 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_create_0): set THREAD_RAISED flag on thread
- termination by exception.
-
- * eval.c (rb_thread_join): `$!' may not be nil for the threads
- created in rescue clause.
-
- * eval.c (rb_thread_status): ditto.
-
- * eval.c (rb_thread_join): should re-raise exception for already
- dead threads too.
-
-Fri Jul 30 17:56:54 1999 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
-
- * object.c (rb_mod_ge): wrong comparison.
-
-Fri Jul 30 12:15:44 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/tcltklib/extconf.rb: win32 support.
-
- * lib/mkmf.rb: use append_library().
-
- * ext/extmk.rb.in: ditto.
-
-Fri Jul 30 02:11:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_delete): should return nil for deleting non
- existing item.
-
- * io.c (rb_io_close): call rb_sys_wait() on explicit close.
-
- * io.c (rb_io_fptr_close): do not call rb_sys_wait() on finalize.
-
- * eval.c (yield_under_i): cbase context should be maintained for
- Module#module_eval(). suggested by <inaba@st.rim.or.jp>.
-
-Wed Jul 28 01:18:28 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * Makefile.in: add -I$(hdrdir)/lib to install using ftools.
-
- * util.c: use HAVE_FCNTL_H, not HAVE_FCNTL
-
-Wed Jul 28 18:24:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.3.6 - version 1.4 alpha
-
-Tue Jul 27 09:38:08 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * eval.c (rb_eval): reduce recursive rb_eval() calls by
- NODE_BLOCKs.
-
-Tue Jul 27 01:20:40 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * file.c (rb_file_s_expand_path): drive letter patch.
-
-Mon Jul 26 02:36:31 1999 Shugo Maeda <shugo@netlab.co.jp>
-
- * eval.c (rb_load): should clear ruby_nerr.
-
- * eval.c (rb_thread_join): oldbt should not be empty to unshift.
-
-Sun Jul 25 12:09:16 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * dir.c (push_braces): should treat nested braces.
-
-Fri Jul 23 02:49:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (rb_hash_clear): dummy argument added; suggested by
- <eguchi@shizuokanet.ne.jp>. thanks.
-
-Thu Jul 22 19:37:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_join): get_backtrace() may return Qnil.
- typecheck added.
-
-Tue Jul 20 14:36:43 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * range.c (range_each): do not treat String specially (for future
- override).
-
-Tue Jul 20 02:28:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_gets): $_ should be nil, when get returns nil.
-
- * io.c (rb_f_gets): ditto.
-
-Mon Jul 19 17:13:09 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_fastmap): should continue fastmap compile
- for anychar_repeat, for it's repeat anyway.
-
-Mon Jul 26 13:33:45 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * lib/jcode.rb: replaced by faster code.
-
-Mon Jul 19 01:57:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * lib/mkmf.rb: no longer use install program.
-
- * ext/extmk.rb.in: use miniruby to install programs.
-
-Sat Jul 17 00:06:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c (ipaddr): don't do reverse lookup if
- attribute do_not_reverse_lookup is set for socket classes.
- Experimental. Note this is a global attribute.
-
-Fri Jul 16 22:18:29 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_eof): use feof() to check EOF already met.
-
- * io.c (read_all): should return nil at EOF.
-
-Fri Jul 16 13:39:42 1999 Wakou Aoyama <wakou@fsinet.or.jp>
-
- * lib/telnet.rb: version 0.231.
-
-Fri Jul 16 10:58:22 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * regex.c (re_match): debug print removed.
-
-Fri Jul 16 09:58:15 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * many files: clean up unused variables found by gcc -Wall.
-
- * lib/mkmf.rb: better cygwin support etc.
-
- * ext/extmk.rb.in: ditto.
-
- * instruby.rb: ditto.
-
-Fri Jul 16 01:37:50 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * string.c (rb_str_squeeze_bang): the type of local variable `c'
- should be int, not char.
-
- * string.c (rb_str_reverse): should always return copy.
-
-Thu Jul 15 23:25:57 1999 NAKAMURA Hiroshi <nakahiro@sarion.co.jp>
-
- * lib/debug.rb: better display & frame treatment.
-
-Thu Jul 15 21:16:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_each): returns self for normal termination;
- returns nil for break.
-
- * string.c: non bang methods (e.g. String#sub) should always
- return copy of the receiver.
-
-Thu Jul 15 21:09:15 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
-
- * eval.c (find_file): do not add empty string to the path.
-
- * configure.in (with-search-path): should not add empty string if
- the option is not supplied.
-
-Thu Jul 15 17:49:08 1999 Ryo HAYASAKA <hayasaka@univ21.u-aizu.ac.jp>
-
- * ext/tcltklib/tcltklib.c: move `#include "ruby.h"' forward.
-
-Thu Jul 15 16:54:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.3.5 - version 1.4 alpha
-
-Wed Jul 14 23:45:33 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * eval.c (ruby_init): initialize for the first time only.
-
-Tue Jul 13 00:15:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (rb_hash_index): re-defined; method to retrieve a key
- from the value.
-
- * hash.c (Init_Hash): member? should be re-defined for Hash.
-
-Tue Jul 12 13:54:51 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * io.c (rb_file_sysopen): wrong number of argument.
-
-Mon Jul 12 11:52:35 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_f_missing): class name included in message.
-
- * eval.c (print_undef): better error message.
-
-Sun Jul 11 05:36:17 1999 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
-
- * lib/debug.rb: patch to show proper position.
-
-Fri Jul 9 23:56:14 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * dln.c (dln_find_1): path conv. moved to conv_to_posix_path.
-
- * dln.c (conv_to_posix_path): path conv. should be done.
-
-Fri Jul 9 10:26:47 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * random.c (RANDOM_NUMBER): should place parentheses.
-
-Fri Jul 8 11:00:51 1999 Shugo Maeda <shugo@netlab.co.jp>
-
- * numeric.c (fix_div): division may be out of fixnum range.
-
- * bignum.c (bigdivmod): proper sign calculation to result.
-
-Wed Jul 7 18:27:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * st.c (st_delete_safe): was modifying wrong slot.
-
-Mon Jul 5 13:17:46 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * gc.c (rb_gc_call_finalizer_at_exit): close all files at exit.
-
-Fri Jul 2 18:00:21 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * lib/Mail/README: Mail-0.3.0 added to the distribution.
-
-Fri Jul 2 01:45:32 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_fastmap): avoid allocation of register
- variables for each invocation of re_match(). Suggested by
- Zasukhin Ruslan <ruslan@paradigmasoft.com>. Thanks.
-
-Tue Jun 29 20:39:24 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * ext/tk/lib/tk.rb (TkVariable): bug fix; should value type check
- be added?
-
- * string.c (rb_str_each_line): a bug in paragraph mode.
-
- * ruby.c (load_file): shifted too much to skip #!.
-
-Tue Jun 29 06:50:21 1999 Wakou Aoyama <wakou@fsinet.or.jp>
-
- * lib/CGI.rb: 0.30 - cleanup release, incompatible.
-
- * lib/telnet.rb: 0.22 - timeout added.
-
-Tue Jun 29 10:49:25 1999 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
-
- * configure.in: better Rhapsody support.
-
- * lib/mkmf.rb: Rhapsody/NEXTSTEP support.
-
-Tue Jun 29 01:42:13 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/pty/pty.c (chld_changed): should use POSIX.1 style wait.
-
-Mon Jun 28 21:07:36 1999 KIMURA Koichi <kbk@kt.rim.or.jp>
-
- * ext/extmk.rb.nt: wrong result for have_library().
-
-Mon Jun 28 15:24:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * missing/isinf.c: OSF/1 raises SIGFPE on one()/zero().
-
- * regex.c (re_search): should search til EOS, for patterns may
- match beyond the end of range.
-
-Mon Jun 28 12:49:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_f_select): should not accept Time objects as an
- argument for it is time interval.
-
- * process.c (rb_f_sleep): ditto.
-
- * file.c (test_s): should return nil for false condition.
-
-Mon Jun 28 12:23:52 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * bignum.c (rb_dbl2big): typo.
-
- * file.c (rb_f_test): ditto.
-
- * string.c (rb_str_crypt): wrong message.
-
-Sun Jun 27 19:50:11 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * eval.c (rb_f_exit): should have treat signed integer status, not
- VALUE.
-
- * process.c (rb_f_exit_bang): should work like exit().
-
-Sun Jun 27 16:21:32 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * string.c (rb_str_rindex): wrong position to search.
-
-Sat Jun 26 04:05:30 1999 Takaaki Tateishi <ttate@jaist.ac.jp>
-
- * configure.in (configure_args): --with-search-path to specify
- additional ruby search path.
-
- * ruby.c (ruby_prog_init): additional search path.
-
-Fri Jun 25 13:09:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * pack.c (pack_unpack): needed to initialize natint.
-
- * regex.c (re_compile_pattern): add start_paren to avoid too much
- finalization on maybe_finalize_jump.
-
-Fri Jun 25 13:07:20 1999 Koji Oda <oda@bsd1.qnes.nec.co.jp>
-
- * missing/isinf.c: include "config.h" added.
-
-Fri Jun 25 07:25:05 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * lib/mkmf.rb: initialize $(topdir).
-
- * ext/extmk.rb.in (install_rb): install lib/*.rb properly.
-
- * configure.in (linux): specifies -rpath on --enable-shared.
-
- * configure.in (aix): ruby.imp must reside in $(topdir).
-
-Thu Jun 24 19:11:29 1999 Yoshida Masato <yoshidam@yoshidam.net>
-
- * parse.y (rb_str_extend): multi-byte identifier in expression
- interpolation in strings.
-
- * parse.y (yylex): support multi-byte char identifiers.
-
-Thu Jun 24 15:27:13 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (f_arg): check duplicate argument names.
-
- * gc.c (rb_gc_mark): marking wrong member for NODE_ARGS.
-
- * string.c (rb_str_rindex): POSITION specifies start point, not
- end point.
-
-Thu Jun 24 13:00:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (print_mbc): wrong boundary.
-
- * pack.c (uv_to_utf8): raises ArgError for too big value.
-
-Thu Jun 24 11:02:51 1999 Yoshida Masato <yoshidam@yoshidam.net>
-
- * pack.c (uv_to_utf8): mask needed.
-
-Wed Jun 23 21:03:56 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * ruby.h (struct RFile): remove iv_tbl from struct. instance
- variables are handled as generic ivs.
-
-Wed Jun 23 22:06:26 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * pack.c (utf8_to_uv): pack to 7 bytes sequence.
-
- * pack.c (uv_to_utf8): wrong boundary.
-
- * pack.c (pack_unpack): should treat as unsigned long.
-
-Wed Jun 23 15:10:11 1999 Inaba Hiroto <inaba@sdd.tokyo-sc.toshiba.co.jp>
-
- * parse.y (parse_string): failed to parse nested braces.
-
- * parse.y (parse_regx): nested braces within #{} available.
-
-Wed Jun 23 11:18:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (slow_search): wrong shift width for mbcs.
-
- * eval.c (rb_thread_save_context): should not clear th->locals.
-
-Wed Jun 23 02:06:14 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): UMINUS binds too tight with digits. changed so
- that -2**2 => -4.
-
- * parse.y (close_paren): `do' for expr termination now works it
- used to be.
-
-Wed Jun 22 18:26:42 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * pack.c (pack_pack): should initialize local variable `j'.
-
-Wed Jun 22 15:24:59 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * parse.y (here_document): a bug for multiline heredoc.
-
-Tue Jun 22 15:06:36 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ext/socket/socket.c (ruby_socket): forgot to return fd
- explicitly.
-
-Tue Jun 22 13:34:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * rubyio.h (MakeOpenFile): should initialize member `iv_tbl'.
-
-Wed Jun 22 10:35:51 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * io.c (rb_io_gets_internal): getc(3) may not set errno on
- interrupt.
-
-Mon Jun 21 22:39:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (call_required_libraries): ruby_sourceline should be
- cleared before loading libraries.
-
- * io.c (set_stdin): do not use reopen(), so that we don't need to
- dup original stdin before assigning $stdin.
-
-Mon Jun 21 18:04:27 1999 Ryo HAYASAKA <hayasaka@univ21.u-aizu.ac.jp>
-
- * ext/dbm/dbm.c: include <cdefs.h> for solaris 2.6.
-
-Mon Jun 21 15:59:47 1999 Nobuyoshi Nakada <nobu.nokada@softhome.net>
-
- * ext/socket/socket.c (ip_addrsetup): forgot to put `else'.
-
-Mon Jun 21 15:38:37 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (fptr_finalize): remove rb_syswait() invocation to avoid
- wait4(2) within GC. rb_syswait() moved to rb_io_fptr_close().
-
-Mon Jun 21 12:05:59 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * dir.c (dir_s_glob): remove MAXPATHLEN restriction.
-
- * ext/md5/md5init.c (md5_hexdigest): should have used "%02x".
-
-Sun Jun 20 19:50:38 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * string.c (rb_str_each_line): should have checked string
- boundary.
-
-Sat Jun 19 22:24:12 1999 Kenji Nagasawa <kenn@hma.att.ne.jp>
-
- * OS/2 patch improved.
-
-Fri Jun 18 08:30:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * marshal.c (r_byte): add data length check.
-
- * ext/tcltklib/tcltklib.c (_timer_for_tcl): was doing busy-wait.
-
-Tue Jun 15 10:01:21 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * configure.in: remove trailing slash from interpreter embedded
- shared library path.
-
- * configure.in (INSTALL_DLLIB): install shared lib with 0555.
-
- * instruby.rb: changed mode for shared library into 0555.
-
-Fri Jun 11 23:27:00 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * ext/etc/etc.c (etc_passwd): should return nil, not exception for
- call after last passwd entry.
-
-Fri Jun 11 15:21:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * gc.c (rb_gc_mark_locations): add safety margin 1.
-
- * eval.c (ruby_run): should protect toplevel node tree.
-
- * ext/etc/etc.c (etc_group): dumps core if there's no more group.
-
-Fri Jun 11 01:50:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (ruby_run): Init_stack() was called too late; local
- variables happened to be higher (or lower) than stack_start.
-
-Thu Jun 10 16:41:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c: do not call `initialize' for IO objects. So with Array,
- Hash, Range, and Time objects.
-
- * ext/curses/curses.c (curses_getch): made thread aware using
- rb_read_check().
-
- * ext/curses/curses.c (window_getch): ditto.
-
- * ext/curses/curses.c (curses_getstr): made (partially) thread
- aware using rb_read_check().
-
- * ext/curses/curses.c (window_getstr): ditto.
-
- * io.c (rb_read_check): new function to help making something
- (like extension libraries) thread aware.
-
- * eval.c (is_defined): `defined? super' should be true even for
- private superclass methods.
-
-Fri Jun 10 13:42:10 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * pack.c (pack_pack): template `Z' should be allowed.
-
-Wed Jun 9 13:26:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_loading): modified to avoid nested race
- condition of require().
-
- * ext/tcltklib/tcltklib.c (ip_invoke): queue invocation on non
- main threads.
-
- * ext/tcltklib/tcltklib.c (lib_mainloop): flush invocation
- queues periodically.
-
- * version.c (ruby_show_version): now print the message to stdout.
-
- * version.c (ruby_show_copyright): ditto.
-
-Tue Jun 8 00:00:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * pack.c (pack_unpack): append sentinel (NUL) to the string.
-
- * ext/md5/md5init.c (md5_hexdigest): new method to obtain
- printable hash string.
-
- * ext/md5/md5init.c (md5_update): should return self.
-
- * pack.c (pack_pack): undocumented template 'U' for UTF8.
-
- * pack.c (pack_unpack): ditto.
-
- * marshal.c (r_byte): should replace getc() with rb_getc().
-
- * io.c (rb_getc): getc() replacement uses READ_DATA_PENDING() and
- rb_thread_wait_fd().
-
-Mon Jun 7 23:23:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (rb_mod_clone): should call CLOSESETUP().
-
- * eval.c (bind_clone): should call CLONESETUP() for new clone.
-
-Sat Jun 5 10:32:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_oct): binary (e.g. 0b10111) support.
-
- * variable.c (rb_const_set): raise warning, not exception.
-
- * parse.y (yycompile): initialize parser internal variables.
-
- * parse.y (close_paren): set lex_state to EXPR_PAREN after closing
- parenthesis.
-
- * parse.y (yylex): returns kDO for `do' right after method_call.
-
-Thu Jun 3 11:05:30 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * regex.c (read_backslash): should decode \b within class.
-
-Thu Jun 3 01:06:18 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * dln.c (dln_load): AIX improvement (aix_findmain removed).
-
-Wed Jun 2 00:41:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * pack.c (pack_unpack): new undocumented template Z which strips
- stuff after first null.
-
- * pack.c (pack_pack): should preserve specified length of the
- resulting string.
-
-Tue Jun 1 15:29:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c (ruby_socket): retry after GC, if socket(2)
- failed on EMFILE or ENFILE.
-
- * ext/socket/socket.c (sock_s_socketpair): ditto.
-
- * eval.c (module_setup): need to add PUSH_VAR/POP_VAR to clear
- dyna vars link list.
-
- * version.h (RUBY_RELEASE_CODE): integer macro constant for source
- version detection.
-
-Sun May 30 22:19:12 1999 Kenji Nagasawa <kenn@tcp-ip.or.jp>
-
- * ext/socket/socket.c: emx/gcc 0.9d now fixes things about
- AF_UNIX.
-
- * process.c: OS/2 EMX kludge.
-
- * Makefile.in (strncasecmp.o): added dependency.
-
-Mon May 31 16:06:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.3.4 - preliminary release for 1.4
-
-Mon May 31 15:57:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_fptr_close): close on IO which main_thread is
- waiting cause serious exception, that vanishes the actual fd
- closing. Invocation of rb_thread_fd_close() is deferred
- a little.
-
-Sat May 29 18:27:13 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * regex.c (re_match): stack boundary check needed.
-
-Sat May 29 12:27:00 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/tcltklib/tcltklib.c (ip_invoke): proper ref count management
- to avoid leak. I HATE REF COUNTING!!
-
- * eval.c (ruby_run): moved ruby_require_libraries() to handle `-r'
- from ruby_options() to avoid stack corruption for threads
- created in libraries.
-
-Sat May 29 02:22:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_yield_0): when `for' appeared in blocks, it
- introduced new scope for local variables.
-
-Fri May 28 17:16:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_squeeze_bang): squeeze AND of the arguments.
- UNDOCUMENTED.
-
- * string.c (rb_str_count): new UNDOCUMENTED method.
-
- * string.c (rb_str_delete_bang): delete AND of the arg ranges.
- UNDOCUMENTED FEATURE for 1.3.x.
-
- * ext/socket/socket.c (setipaddr): re-wrote using ip_addrsetup().
-
- * ext/socket/socket.c (ip_addrsetup): decode symbolic address
- <broadcast>.
-
-Thu May 27 12:27:42 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (tr_trans): should handle NUL (\0) within strings.
-
-Tue May 25 16:45:11 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_f_syscall): syscall may return values other than zero
- on success.
-
- * regex.c (re_match): handle empty loop properly (hopefully).
-
- * regex.c (re_match): remove empty group check, because it does
- not help non-grouping parentheses (?:..).
-
- * regex.c (re_compile_fastmap): treating try_next, finalize_push
- wrong way.
-
- * regex.c: remove some obsolete functions such as
- group_match_null_string_p().
-
-Mon May 24 14:47:54 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (read_backslash): read backslash by regex.
-
-Sun May 23 19:44:58 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/pty/pty.c (getDevice): portability patch.
-
-Fri May 21 23:01:26 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/socket/getaddrinfo.c (GET_AI): should set error code.
-
-Thu May 20 03:43:44 1999 Jun-ichiro itojun Hagino <itojun@itojun.org>
-
- * ext/socket/socket.c: you should use sockaddr_storage to handle
- IPv6 addresses.
-
- * ext/socket/getaddrinfo.c (getaddrinfo): prevent retrieving
- AF_INET6 address if hints.ai_flags == AI_PASSIVE.
-
-Wed May 19 12:27:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (exec_end_proc): should protect exceptions.
-
- * gc.c (run_final): ditto.
-
- * parse.y (f_rest_arg): allow just * for rest arg.
-
- * parse.y (mlhs_basic): allow * without formal argument.
-
- * regex.c (re_match): the variable `part' should be initialized.
-
-Tue May 18 15:25:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_search): a bug in range adjustment.
-
-Tue May 18 11:35:59 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * dln.c (conv_to_posix_path): path_len argument added.
-
-Mon May 17 12:26:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * numeric.c (fix_rev): should treat Fixnum as signed long.
-
- * eval.c (massign): add strict number check for yield (and call).
-
- * eval.c (proc_arity): new method to return number of arguments.
-
- * eval.c (method_arity): new method to return number of arguments.
-
- * parse.y (read_escape): char may be unsigned.
-
- * string.c (rb_str_succ): ditto.
-
- * string.c (tr_trans): ditto.
-
- * object.c (Init_Object): methods `&', `|', `^' are added to nil.
-
- * range.c (rb_range_beg_len): it should be OK for [0..-len-1].
-
- * regex.c (re_search): search for byte literal within mbcs.
-
- * regex.c (is_in_list): parsh
-
- * regex.c (re_compile_fastmap): should have not alter the loop
- variable `j' if TRASLATE_P().
-
- * regex.c (re_compile_pattern): escaped characters should be read
- by PATFETCH_RAW(c).
-
-Sat May 15 11:23:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_match): endline2 (\Z) should not match at the point
- between a newline and end-of-line, like endline ($).
-
- * class.c (include_class_new): should initialize iv_tbl to share
- between module and iclass.
-
-Fri May 14 08:50:27 1999 Akira Endo <akendo@t3.rim.or.jp>
-
- * regex.c (re_compile_fastmap): it should be k != 0 to skip.
-
-Fri May 14 12:46:56 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_load): a bug in old marshal format support.
-
- * instruby.rb: make site_ruby directory.
-
-Fri May 14 10:18:02 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * regex.c (re_match): a bug in inline `.*' etc.
-
-Fri May 14 09:58:46 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-
- * ruby.c (addpath): should have specified string length.
-
-Thu May 13 10:40:44 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval_string_wrap): new function.
-
- * regex.c (re_compile_pattern): POSIX line match should alter
- behavior for `^' and `$' to begbuf and endbuf2 respectively.
-
- * ext/pty/pty.c: un-ANSI-fy function arguments.
-
-Wed May 12 14:19:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * struct.c (iv_get): in case of inheritance of generated struct
- class, __member__ and __size__ should also be inherited.
- Thanks for Pros Yeboah <yeboah@tu-harburg.de>.
-
- * io.c (rb_f_gets_internal): should check number of arguments
- before checking rb_rs == rb_default_rs. Thanks for Koji Arai
- <JCA02266@nifty.ne.jp>.
-
-Tue May 11 08:29:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): .?, .+ did not work.
-
-Mon May 10 00:59:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * lib/jcode.rb: forgot to squeeze on reverse (complement) case.
-
- * string.c (tr_squeeze): should not set modify flag to be honest,
- if the string is not modified.
-
- * signal.c (Init_signal): SIGTERM should not be handled.
-
- * regex.c (re_match): seeking for longest match is now optional,
- which can be set using RE_OPTION_POSIXMATCH. This satisfies
- POSIX longest match as much as Emacs's posix-* functions, which
- are known to be incomplete.
-
-Sun May 9 13:04:01 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/socket/socket.c (sock_s_getaddrinfo): conversion from
- Fixnums to C integers needed.
-
-Sun May 9 11:51:43 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * range.c (range_eqq): reverse condition.
-
- * range.c (range_s_new): default should be end inclusive.
-
-Sat May 8 03:27:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c (thread_connect): replace nasty
- rb_thread_fd_writable() with rb_thread_select().
-
-Fri May 7 20:49:00 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * ext/socket/getaddrinfo.c (inet_pton): wrong parameter to
- inet_aton().
-
- * ext/socket/addrinfo.h (__P): silly cut and paste typo.
-
-Fri May 7 17:03:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * dir.c (glob): removed GPL'ed glob.c completely.
-
-Fri May 7 08:17:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/sdbm/extconf.rb: sdbm extension added to the distribution.
-
-Fri May 7 01:42:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c (tcp_s_gethostbyname): avoid using struct
- sockaddr_storage.
-
-Thu May 6 13:21:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_indexes): should not use rb_ary_concat().
-
-Thu May 4 12:34:18 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * parse.y (parse_string): there should be newline escape by
- backslashes in strings.
-
- * parse.y (parse_qstring): ditto.
-
-Mon May 3 04:37:20 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * ext/tcltklib/extconf.rb: better search for libX11.
-
- * range.c (range_s_new): embarrassing =/== typo.
-
- * re.c (Init_Regexp): failed to set default kcode.
-
-Mon May 3 02:39:55 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * ext/socket/socket.c (open_inet): typo (res and res0).
-
-Tue May 4 02:07:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * mkconfig.rb: leave undefined $(VARIABLE) unexpanded in the
- Config::CONFIG hash table.
-
-Mon May 3 09:37:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): expand exactn{n} at compile time.
- handles stop_paren specially.
-
- * regex.c (re_compile_pattern): expand x{n} at compile time.
-
- * regex.c (re_search): posix line match should be checked.
-
- * regex.c (re_search): a bug in anchor condition.
-
-Fri Apr 30 18:57:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.3.3
-
- * string.c (rb_str_rindex): position should be END point, not
- START point.
-
- * re.c (rb_reg_search): pos means end point on reverse now.
-
- * array.c (rb_ary_s_create): should clear ary->ptr to avoid
- potential gc crash.
-
-Fri Apr 30 15:24:58 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/addrinfo.h: compatibility hack for ipv4.
-
- * ext/socket/socket.c: itojun's ipv6 patches applied.
-
- * ext/socket/extconf.rb: detect ipv6 features based on itojun's
- ipv6 patches.
-
- * ext/extmk.rb.in (enable_config): can handle --enable-xxx now.
-
- * lib/mkmf.rb (enable_config): ditto.
-
-Fri Apr 30 05:22:23 1999 Shugo Maeda <shugo@netlab.co.jp>
-
- * string.c (rb_str_aset): last index should not append.
-
-Thu Apr 29 18:55:31 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * dln.c (conv_to_posix_path): remove const from args.
-
- * ruby.c (rubylib_mangle): remove Fatal(), the obsolete function.
-
-Tue Apr 27 14:11:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (fname): lazy workaround for keywords did not work well.
-
- * ext/extmk.rb.in: `--with-xxx=yyy' argument configuration.
-
- * lib/mkmf.rb: ditto.
-
- * misc/ruby-mode.el: forgot to handle $`.
-
- * ext/extmk.rb.in: better AIX link support proposed by
- <komatsu@sarion.co.jp>.
-
-Mon Apr 26 16:46:59 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/extmk.rb.in: AIX shared library support modified.
-
- * ext/aix_mksym.rb: ditto.
-
- * configure.in: ditto.
-
- * sprintf.c (rb_f_sprintf): should allocate proper sized buffer
- for float numbers.
-
-Sat Apr 24 00:00:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (operation): syntax like `a.[]=(1,2)' is allowed.
-
-Fri Apr 23 23:54:09 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (argf_binmode): binmode method added to ARGF.
-
-Fri Apr 23 13:55:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_f_chomp): should assign the result to $_. or maybe
- sub/gsub/chop/chomp should NOT assign $_ altogether.
-
-Thu Apr 22 16:50:54 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_callcc): call scope_dup() for all scopes in
- the interpreter stack.
-
-Tue Apr 20 11:24:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_dump): `#' should be escaped.
-
-Tue Apr 20 02:32:42 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (parse_regx): option /p for posix match added.
-
- * re.c (rb_reg_desc): did not print options properly.
-
- * io.c (rb_file_s_open): initialize was called twice.
-
-Mon Apr 19 18:56:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * configure.in (DEFAULT_KCODE): can specify default code for
- $KCODE by --with-default-kcode=(euc|sjis|utf8|none).
-
- * regex.c (IS_A_LETTER): a byte sequence shorter than mbc should
- not match with \w etc.
-
-Mon Apr 19 13:49:11 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (eval): should restore ruby_dyna_vars.
-
-Fri Apr 16 21:40:43 1999 Nobuyoshi Nakada <gea02117@nifty.ne.jp>
-
- * io.c (f_backquote): pipe_open may return nil.
-
- * io.c (f_open): rb_io_open may return nil.
-
- * io.c (io_s_foreach): ditto.
-
- * io.c (io_s_readlines): ditto.
-
- * io.c (io_defset): wrong message.
-
-Fri Apr 16 15:09:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (rb_str2inum): strtoul() returns long, not int.
-
- * eval.c (rb_load): size of VALUE and ID may be different.
-
- * util.c (mmprepare): int is too small to cast from pointers.
-
- * config.guess: avoid 'linux-gnu' for alpha-unknown-linux.
-
-Thu Apr 15 23:46:20 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ruby.c (rubylib_mangle): mangle path by RUBYLIB_PREFIX.
-
-Wed Apr 14 23:52:51 1999 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
-
- * node.h (NODE_LMASK): should be long to avoid overflow.
-
-Wed Apr 14 13:14:35 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
-
- * dln.c: AIX dynamic link.
-
- * ext/aix_ld.rb: ditto.
-
-Wed Apr 14 12:19:09 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * lib/thread.rb: Queue#{enq,deq} added.
-
-Tue Apr 13 17:43:56 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (rb_hash_s_create): Hash::[] acts more like casting.
-
-Tue Apr 13 00:33:52 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_stdio_set): warning for assignment to the variables
- $std{in,out,err}.
-
-Mon Apr 12 23:12:32 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_reopen): check for reopening same IO.
-
-Fri Apr 9 17:45:11 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (rb_compile_string): bug for nested eval().
-
- * regex.c (re_match): should pop non-greedy stack items on
- failure, after best_regs are fixed.
-
-Thu Apr 8 17:30:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * pack.c (PACK_LENGTH_ADJUST): need to adjust for `*' length.
-
-Tue Apr 6 23:28:44 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (void_check): add void context checks.
-
-Mon Apr 5 12:23:42 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_s_at): should copy gmt-mode.
-
- * eval.c (eval_node): preserve ruby_eval_tree.
-
-Fri Apr 2 14:00:34 1999 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
-
- * lib/debug.rb: wrong command interpreting.
-
-Fri Apr 2 11:46:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.3.2
-
-Fri Apr 2 10:40:04 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_s_pipe): forgot to define IO::pipe.
-
-Thu Apr 1 14:40:46 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (assign): modified for rhs change.
-
- * parse.y (stmt): unparenthesisized method calls can be right hand
- side expression of the assignment.
-
-Sat Mar 27 22:42:47 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * ext/nkf/nkf.c (rb_nkf_kconv): check size output_ctr before
- decrement.
-
-Thu Mar 25 09:11:03 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_s_at): preserve gmt-mode for result.
-
- * parse.y (rb_compile_string): do not use cur_mid, use
- compile_for_eval instead.
-
- * st.c (PTR_NOT_EQUAL): wrong logical condition.
-
-Wed Mar 24 13:06:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yycompile): should clear cur_mid after compilation.
-
- * io.c (next_argv): need to check type for ARGV.shift.
-
- * eval.c (blk_copy_prev): need to preserve outer scope as well as
- outer frames.
-
- * parse.y (rb_compile_string): return can appear within eval().
-
-Tue Mar 23 10:15:07 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * configure.in: AC_C_CONST check added.
-
-Tue Mar 23 02:07:35 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_plus): preserve gmt-mode for result.
-
-Mon Mar 22 01:32:37 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): adjust line numbers before expression
- interpolation within strings.
-
- * eval.c (rb_eval): defined? returns nil for false condition.
-
- * numeric.c (num_nonzero_p): returns nil for false condition.
-
-Sat Mar 20 13:07:43 1999 Keiju Ishitsuka <keiju@rational.com>
-
- * lib/weakref.rb: avoid leak for two weakrefs for one object.
-
-Fri Mar 19 11:26:45 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * eval.c (ruby_run): needed to eval END{} on exit.
-
- * eval.c (rb_exit): ditto.
-
-Fri Mar 19 02:17:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * signal.c (Init_signal): handles terminating signals HUP, TERM,
- QUIT, PIPE, etc.
-
-Thu Mar 18 15:47:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (rb_big_and): bug in sign calculation.
-
- * bignum.c (rb_big_or): ditto.
-
- * io.c (rb_f_select): forgot to use to_io to retrieve IO, after
- calling select(2).
-
-Tue Mar 16 19:54:31 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ext/extmk.rb.in: static linking cause infinite make loop.
-
-Tue Mar 16 18:50:04 1999 Yoshida Masato <yoshidam@yoshidam.net>
-
- * ext/socket/socket.c (tcp_s_gethostbyname): typo, not NUM2INT(),
- but INT2NUM().
-
- * ext/socket/socket.c (mkhostent): ditto.
-
-Tue Mar 16 12:31:44 1999 Ryo HAYASAKA <hayasaka@cheer.u-aizu.ac.jp>
-
- * file.c (utime_internal): suppress warning by const.
-
- * time.c (time_gmtime): ditto.
-
-Tue Mar 16 10:23:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_clone): Time object can be cloned.
-
-Tue Mar 16 03:13:10 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * ruby.c (load_file): argv[argc] should be NULL.
-
-Mon Mar 15 22:12:08 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * sprintf.c (rb_f_sprintf): typo in arg_num check at exit.
-
-Mon Mar 15 16:42:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_dup): dup2 should copy class too.
-
-Mon Mar 15 15:12:53 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
-
- * lib/mkmf.rb: install program relative path check.
-
-Mon Mar 15 14:05:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (rb_reg_s_new): 2nd argument is now option.
- Regexp::EXTENDED can be specified.
-
-Fri Mar 12 10:47:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_index): str.index("") should always match at
- offset point.
-
- * string.c (rb_str_upto): can specify end point exclusion.
-
- * string.c (rb_str_index): negative offset.
-
- * regex.c (re_match): begline should not match at the point
- between a newline and end-of-string. endline neither.
-
- * regex.c (re_compile_pattern): context_indep_anchors .
-
- * parse.y (parse_regx): need not to push backslashes before
- escaped characters.
-
- * eval.c (rb_thread_join): re-raises exception within target.
-
-Fri Mar 12 01:09:36 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * ext/readline/readline.c (readline_s_vi_editing_mode): wrong
- number of arguments.
-
-Fri Mar 12 02:12:50 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * pack.c (PACK_ITEM_ADJUST): "a".unpack("C3") => [97, nil, nil]
-
-Thu Mar 11 18:23:50 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * ext/socket/socket.c (Init_socket): UDPsocket was omitted.
-
-Thu Mar 11 16:43:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * pack.c (PACK_LENGTH_ADJUST): push fixed number of items per
- template to result array.
-
- * pack.c (pack_unpack): I/N/C etc. push nil in the array for "".
-
-Tue Mar 9 00:19:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (ruby_unsetenv): use ruby_setenv(name, 0).
-
- * hash.c (env_delete): ditto.
-
- * string.c (rb_str_upto): do not check `beg<end' to generate
- strings for the pattern like "a".upto("#a").
-
- * range.c (range_each): treat strings as special case.
-
- * range.c (range_each): no longer use upto for generic cases.
-
-Sun Mar 7 14:21:32 1999 IKARASHI Akira <ikarashi@itlb.te.noda.sut.ac.jp>
-
- * string.c (rb_str_index): wrong end point calculation.
-
-Sat Mar 6 02:19:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (match_index): MatchingData#index(n) added.
-
- * array.c (rb_ary_subseq): ary[n..-1] returns an sub-array unless
- n is too small negative index.
-
- * re.c (rb_reg_match_method): Regexp#match(str) added.
-
- * array.c (rb_ary_indexes): understands ranges as indexes.
-
- * re.c (match_size): MatchingData#size added.
-
-Fri Mar 5 01:04:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_fill): modified for range.
-
- * array.c (rb_ary_aset): a[n..m] revisited.
-
-Thu Mar 4 14:23:29 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_subseq): a[n..m] revisited.
-
- * parse.y (method_call): allow Const::method{}.
-
- * array.c (rb_ary_replace_method): should replace original array.
-
-Thu Mar 4 02:30:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * configure.in: remove --disable-thread, thread feature is no
- longer optional.
-
-Thu Mar 4 00:32:17 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
-
- * parse.y (read_escape): wrong arguments for scan_oct,scan_hex.
-
-Wed Mar 3 11:51:53 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c (Init_socket): rename class names as
- TCPsocket -> TCPSocket etc.
-
-Tue Mar 2 19:46:42 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * configure.in (LDSHARED): use gcc -Wl,-G for solaris with gcc.
-
-Tue Mar 2 17:04:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): backslashes do not concatenate comment lines
- anymore.
-
-Mon Mar 1 14:05:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_call0): adjust argv for optional arguments. super
- without arguments emit superclass method with the value from
- optional arguments. enabled as experiment.
-
-Sun Feb 28 14:04:07 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * parse.y (nextc): backslash at the eof cause infinite loop
-
-Sun Feb 28 11:01:26 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * time.c (make_time_t): month range check added.
-
-Sat Feb 27 02:36:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (Init_Regexp): add escape as alias of quote.
-
- * re.c (rb_reg_s_quote): char-code can be specified now.
-
-Fri Feb 26 18:45:36 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
-
- * eval.c (error_print): bug for error message with newlines.
-
-Fri Feb 26 12:00:04 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (make_time_t): future check modified to allow 1969-12-31
- at certain timezone.
-
- * time.c (time_arg): year >= 1000 should be past.
-
- * version.c (Init_version): constant RELEASE_DATE added.
-
-Fri Feb 26 01:08:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_substr): returns nil for out-of-range access.
-
- * array.c (rb_ary_subseq): returns nil for out-of-range access.
-
- * array.c (rb_ary_store): negative index message has changed.
-
- * string.c (rb_str_aset): reallocation needed.
-
- * string.c (rb_str_aset): allow char append to the string.
-
-Thu Feb 25 23:30:17 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * time.c (time_load): tm_year should be packed in 17 bits, not 18.
-
-Thu Feb 25 12:50:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * missing/dup2.c: replaced by public domain version.
-
- * time.c (make_time_t): add `future check' in loops.
-
- * object.c (rb_num2dbl): forbid implicit conversion from nil, or
- strings. thus `Time.now + str' should raise error.
-
- * object.c (rb_Float): convert nil into 0.0.
-
- * object.c (rb_Integer): conversion method improved.
-
-Thu Feb 25 03:27:50 1999 Shugo Maeda <shugo@netlab.co.jp>
-
- * eval.c (rb_call): should handle T_ICLASS properly.
-
-Thu Feb 25 00:04:00 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * error.c (Init_Exception): global function Exception() removed.
-
- * variable.c (rb_class2name): returns "nil"/"true"/"false" for them.
-
- * time.c (time_dump): time marshaling format compressed size from
- 11 bytes to 8 bytes. thanx to tadf@kt.rim.or.jp.
-
- * eval.c (rb_obj_call_init): should specify arguments explicitly.
-
-Wed Feb 24 15:43:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): comment concatenation requires preceding space
- before backslash at the end of line.
-
- * io.c (rb_f_pipe): global pipe is obsolete now.
-
- * object.c (Init_Object): remove true.to_i, false.to_i.
-
-Tue Feb 23 14:21:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): warn if identifier! immediately followed by `='.
-
-Tue Feb 23 12:32:41 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * eval.c (rb_load): tilde expansion moved to find_file.
-
- * eval.c (find_file): tilde expansion added.
-
-Tue Feb 23 10:50:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (require_method): require can handle multiple fnames.
-
- * hash.c (rb_hash_foreach_iter): hash key may be nil.
-
-Mon Feb 22 17:44:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_match): should not pop failure point on success for
- non-greedy matches.
-
- * io.c (Init_IO): remove global_functions getc, readchar, ungetc,
- seek, tell, rewind.
-
-Sat Feb 20 22:54:26 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * numeric.c (rb_num2long): no implicit conversion from boolean.
-
-Sat Feb 20 09:58:42 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * numeric.c (flo_to_s): portable Infinity and NaN support.
-
-Sat Feb 20 07:13:31 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * io.c (rb_file_sysopen): forgot to initialize a local variable.
-
-Fri Feb 19 23:05:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_subseq): range check changed.
-
- * marshal.c: increment MARSHAL_MINOR for Time format change.
-
- * time.c (time_old_load): support old marshal format.
-
- * time.c (time_load): changed for new format Y/M/D/h/m/s/usec.
-
- * time.c (time_dump): marshal dump format has changed.
-
-Fri Feb 19 00:25:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_arg): should reject "sep\0" and such.
-
- * time.c (time_plus): Time#+ should not receive Time object
- operand.
-
- * string.c (rb_str_substr): negative length raises exception now.
-
- * array.c (beg_len): if end == -1, it points end of the array.
-
- * array.c (rb_ary_subseq): negative length raises exception now.
-
-Thu Feb 18 20:57:04 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * time.c (rb_strftime): strftime() may return 0 on success too.
-
- * time.c (time_strftime): `\0' within format string should not be
- omitted in the result.
-
- * time.c (rb_strftime): zero length format.
-
- * time.c (time_to_a): yday start with 1 now.
-
- * time.c (time_zone): support for long timezone name.
-
- * time.c (time_yday): yday start with 1 now.
-
- * time.c (time_minus): minus calculation was wrong.
-
- * time.c (time_minus): sec, usec should be at least `long', maybe
- they should be `time_t'.
-
- * time.c (time_plus): addition with float was wrong.
-
- * time.c (time_to_s): support for long timezone name.
-
- * time.c (time_gm_or_local): too far future check moved.
-
- * time.c (time_arg): treat 2 digit year as 69-99 => 1969-1999,
- 00-68 => 2000-2068
-
-Thu Feb 18 03:56:47 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * missing/fnmatch.c: moved to missing directory.
-
-Wed Feb 17 16:22:26 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * struct.c (rb_struct_alloc): actual initialization now be done in
- `initialize'.
-
-Wed Feb 17 09:47:15 1999 okabe katsuyuki <hgc02147@nifty.ne.jp>
-
- * regex.c (re_search): use mbclen() instead of ismbchar().
-
- * re.c (rb_reg_s_quote): should handle mbchars properly.
-
-Wed Feb 17 01:25:26 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): stop comment concatenation by backslash follows
- after >= 0x80 char. may cause problem with Latin chars.
-
- * eval.c (error_print): exception in rb_obj_as_string() caused
- SEGV. protect it by PUSH_TAG/POP_TAG.
-
- * error.c (exc_exception): `Exception#exception' should return self.
-
-Wed Feb 17 01:12:22 1999 Hirotaka Ichikawa <hirotaka.ichikawa@tosmec.toshiba.co.jp>
-
- * configure.in: BeOS patch.
-
-Tue Feb 16 14:25:00 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): should reallocate mbc space for
- character class unless current_mbctype is ASCII.
-
-Mon Feb 15 15:48:30 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * configure.in: specify `-Wl,-E' only for GNU ld.
-
-Mon Feb 15 11:43:22 1999 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
-
- * array.c (rb_inspecting_p): should return Qfalse.
-
-Sun Feb 14 22:36:40 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * sprintf.c (rb_f_sprintf): `%G' was omitted.
-
-Sun Feb 14 12:47:48 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * numeric.c (Init_Numeric): allow divide by zero on FreeBSD.
-
- * numeric.c (Init_Numeric): FloatDomainError added.
-
- * configure.in (AC_REPLACE_FUNCS): add checks for functions
- isinf, isnan, and finite.
-
-Sat Feb 13 01:24:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_create_0): should protect th->thread.
-
-Fri Feb 12 16:16:47 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
-
- * string.c (rb_str_inspect): wrong mbc position.
-
-Fri Feb 12 16:21:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_fd_close):
-
- * io.c (rb_io_fptr_close): tell scheduler that fd is closed.
-
- * io.c (rb_io_reopen): ditto.
-
- * io.c (READ_CHECK): check if closed after thread context switch.
-
- * ext/socket/socket.c (bsock_close_read): do not check
- the return value from shutdown(2).
-
- * ext/socket/socket.c (bsock_close_write): ditto.
-
- * ext/socket/socket.c (sock_new): need to dup(fd) for close_read
- and close_write.
-
- * parse.y (here_document): handle newlines within #{}.
-
- * regex.h: should replace symbols for ruby.
-
-Fri Feb 12 00:46:28 1999 Shugo Maeda <shugo@netlab.co.jp>
-
- * marshal.c (r_object): should update the method name in message.
-
- * marshal.c (w_object): limit should be converted into Fixnum.
-
-Wed Feb 10 15:20:03 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_match): empty pattern should not cause infinite
- pattern match loop.
-
- * regex.c (re_compile_pattern): RE_OPTIMIZE_ANCHOR for /.*/, not
- for /(.|\n)/.
-
- * numeric.c (fix_pow): `fixnum**nil' should raise TypeError.
-
- * bignum.c (rb_big_pow): need to normalize results.
-
-Wed Feb 10 01:42:41 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * numeric.c (fix_pow): `(5**1).type' should be Integer.
-
-Tue Feb 9 01:22:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): do not ignore newlines in mbchars.
-
- * io.c (rb_file_s_open): mode can be specified by flags like
- open(2), e.g. File::open(path, File::CREAT|File::WRONLY).
-
- * io.c (rb_f_open): bit-wise mode flags for pipes
-
- * io.c (Init_IO): bit flags for open.
-
-Sat Feb 6 22:56:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_sub_bang): should not overwrite match data by
- regexp match within the block.
-
- * string.c (rb_str_gsub_bang): ditto.
-
-Sat Feb 6 03:06:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (match_getter): accessing $~ without matching caused SEGV.
-
-Fri Feb 5 22:11:08 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * parse.y (yylex): binary literal support, like 0b01001.
-
- * parse.y (yylex): octal numbers can contain `_'s.
-
- * parse.y (yylex): warns if non-octal number follows immediately
- after octal literal.
-
- * parse.y (yylex): now need at least one digit after prefix such
- as 0x, or 0b.
-
- * bignum.c (rb_str2inum): recognize binary numbers like 0b0101.
-
-Fri Feb 5 03:26:56 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
-
- * ruby.c (proc_options): -e without program prints error.
-
-Fri Feb 5 00:01:50 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (terms): needed to clear heredoc_end.
-
- * numeric.c (flo_div): allow float division by zero.
-
-Thu Feb 4 11:56:24 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * missing/strtod.c: for compatibility.
-
- * configure.in (strtod): add strtod compatible check.
-
- * numeric.c (rb_num2long): missing/vsnprintf.c does not support
- floating points.
-
- * numeric.c (flo_to_s): ditto.
-
-Wed Feb 3 23:02:12 1999 Yoshida Masato <yoshidam@yoshidam.net>
-
- * regex.c (re_compile_pattern): use ismbchar() to get next char.
-
- * regex.c (re_search): wrong mbchar shift.
-
- * re.c (rb_reg_search): needed to reset $KCODE after match.
-
- * regex.c (re_compile_fastmap): mbchars should match with \w.
-
-Wed Feb 3 22:35:12 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * parse.y (yylex): too big float raise warning, not error.
-
-Tue Feb 2 23:41:42 1999 Yoshida Masato <yoshidam@yoshidam.net>
-
- * regex.c (re_match): wrong boundary.
-
- * regex.c (IS_A_LETTER): re_mbctab[c] may not be 1 for mbc.
-
- * regex.c (re_search): mbchar support for shifting ranges.
-
- * regex.c (MBC2WC): wrong conversion.
-
-Wed Feb 3 15:03:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (parse_regx): need to escape parens if terminators are
- not any kind of parenthesis.
-
- * parse.y (parse_qstring): ditto.
-
- * parse.y (parse_string): ditto.
-
-Tue Feb 2 17:11:26 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * string.c (rb_str_gsub_bang): too small realloc condition.
-
-Mon Feb 1 10:01:17 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * parse.y (yylex): range check for the float literal.
-
-Sat Jan 30 18:34:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (usage): -h option to show brief command description.
-
-Sat Jan 30 08:45:16 1999 IKARASHI Akira <ikarashi@itlb.te.noda.sut.ac.jp>
-
- * lib/cgi-lib.rb: cookie support added.
-
-Sat Jan 30 13:38:24 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): mbchars should match with \w
- within character class. Was matching with \W.
-
- * regex.c (re_match): \w should match with multi byte characters,
- not its first byte.
-
-Sat Jan 30 10:06:41 1999 Yoshida Masato <yoshidam@yoshidam.net>
-
- * re.c (rb_reg_s_new): UTF-8 flag handle (/u, /U).
-
- * re.c (rb_kcode): $KCODE handle for UTF-8.
-
-Sat Jan 30 01:51:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_delete_if): RTEST() missing.
-
- * hash.c (delete_if_i): ditto.
-
- * enum.c (Init_Enumerable): select (=find_all), detect (=find)
- added as aliases.
-
-Fri Jan 29 21:32:19 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * hash.c (rb_f_setenv): SEGV caused by small typo.
-
-Fri Jan 29 00:15:58 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * lib/parsedate.rb (parsedate): support date format like
- 23-Feb-93, which is required by HTTP/1.1.
-
- * variable.c (find_class_path): avoid calling rb_iv_set().
-
- * eval.c (backtrace): do not need to modify $SAFE internally.
-
- * variable.c (classname): inline __classid__ access.
-
- * eval.c (THREAD_ALLOC): needed to initialize wrapper.
-
- * lib/ftools.rb (makedirs): allows slash at the end of the path.
-
- * numeric.c (rb_fix_induced_from): ensure result to be Fixnum.
-
-Thu Jan 28 17:31:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * numeric.c (flo_to_s): float format changed to "%16.10g".
-
-Thu Jan 28 02:13:11 1999 Yoshinori Toki <toki@freedom.ne.jp>
-
- * array.c (rb_ary_store): expand allocated buffer by 3/2.
-
-Wed Jan 27 17:50:02 1999 Kazuhiro HIWADA <hiwada@kuee.kyoto-u.ac.jp>
-
- * bignum.c (dbl2big): raised error if double is too big to cast
- into long. check added.
-
-Wed Jan 27 03:16:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (rb_mod_const_at): can't list constants of the
- untainted objects in safe mode.
-
- * class.c (method_list): can't list methods of untainted objects
- in safe mode.
-
-Tue Jan 26 02:40:41 1999 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
-
- * prec.c: Precision support for numbers.
-
-Thu Jan 21 19:08:14 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_f_raise): calls `exception' method, not `new'.
-
- * error.c (exc_exception): renamed from `new'.
-
-Wed Jan 20 03:39:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yycompile): rb_in_compile renamed to ruby_in_compile.
-
- * ruby.c (load_file): define DATA if __END__ appeared in script.
-
-Tue Jan 19 14:57:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (here_document): need to protect lex_lastline.
-
- * parse.y (yylex): disable %//, %'', %``.
-
-Tue Jan 19 05:01:16 1999 Koji Arai <JCA02266@nifty.ne.jp>
-
- * array.c (beg_len): round range value too much.
-
-Mon Jan 18 13:02:27 1999 Kuroda Jun <jkuro@dwe.co.jp>
-
- * hash.c (env_keys): strchr() may return NULL.
-
-Mon Jan 18 17:51:47 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * instruby.rb (wdir): install libruby.a in archdir.
-
- * lib/ftools.rb (install): removes file before installing.
-
-Mon Jan 18 16:55:31 1999 MAEDA shugo <shugo@aianet.ne.jp>
-
- * eval.c (rb_callcc): experimental continuation support.
-
-Sun Jan 17 19:45:37 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * pack.c (pack_pack): nil packing caused SEGV.
-
-Sat Jan 16 13:18:03 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_concat): character (fixnum) can be append to
- strings
-
- * array.c (rb_ary_unshift): unshift returns array.
-
-Sat Jan 16 01:39:19 1999 Yoshida Masato <yoshidam@tau.bekkoame.ne.jp>
-
- * string.c (rb_str_split_method): UTF-8 support.
-
- * regex.c: UTF-8 support.
-
-Thu Jan 14 00:42:55 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_gsub_bang): forget to add offset for null match.
-
- * eval.c (rb_thread_local_aset): can't modify in tainted mode.
-
- * hash.c (env_each_key): avoid generating temporary array.
-
-Wed Jan 13 23:58:50 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (rb_f_setenv): name and value can be tainted.
-
-Wed Jan 6 02:42:08 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (Init_Bignum): forgot to define Bignum#===.
-
- * gc.c (gc_sweep): if add_heap() is called during GC, objects on
- allocated heap page(s) are not marked, should not be recycled.
-
- * gc.c (gc_sweep): should refer latest freelist.
-
- * gc.c (id2ref): modified to support performance patch.
-
- * object.c (rb_obj_id): performance patch (no bignum for id).
-
-Tue Jan 5 01:56:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * config.guess: merge up-to-date from autoconf 2.12.
-
- * array.c (rb_ary_join): avoid calling rb_protect_inspect() till
- it is really needed.
-
- * object.c (rb_obj_inspect): show detailed information for the
- instance variables (infinite loop can avoid now).
-
- * struct.c (rb_struct_inspect): avoid infinite loop.
-
-Sun Jan 3 01:37:58 1999 Takao KAWAMURA <kawamura@ike.tottori-u.ac.jp>
-
- * misc/ruby-mode.el (ruby-end-of-defun): moved too much.
-
- * misc/ruby-mode.el (ruby-mode-variables): set paragraph-separator
- for the mode.
-
- * misc/ruby-mode.el: proper font-lock for `def' and `nil' etc.
-
-Sat Jan 2 17:09:06 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_jump_tag): new api to invoke JUMP_TAG. tag values
- can obtained from rb_eval_string_protect()/rb_load_protect().
-
- * eval.c (rb_rescue): now catches all exceptions but SystemExit.
-
- * eval.c (rb_eval_string_protect): eval string with protection.
-
- * eval.c (rb_load_protect): load file with protection.
-
- * io.c (rb_io_puts): avoid infinite loop for cyclic arrays.
-
- * eval.c (rb_thread_local_aref): thread local hash tables.
-
- * object.c (rb_equal): check exact equal before calling `=='.
-
-Thu Dec 31 22:28:53 1998 MAEDA shugo <shugo@aianet.ne.jp>
-
- * eval.c (rb_f_require): feature names should be provided with
- DLEXT extension.
-
- * marshal.c (Init_marshal): need to provide `marshal.so'.
-
-Wed Dec 30 02:29:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (classname): do not call rb_ivar_set().
-
- * eval.c (ruby_run): finalizers were called too early.
-
-Fri Dec 25 12:19:30 1998 Fukuda Masaki <fukuda@wni.co.jp>
-
- * gc.c (rb_gc_mark): should not return on FL_EXIVAR.
-
-Fri Dec 25 11:56:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * gc.c (gc_mark): proper scanning for temporary region.
-
- * eval.c (TMP_ALLOC): protection for C_ALLOCA was broken.
-
-Thu Dec 24 18:26:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * development version 1.3 released.
-
-Thu Dec 24 00:17:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_load): top self should be set properly.
-
- * variable.c (classname): check __classpath__ if it is defined.
-
- * variable.c (classname): invalid warning at -v with static linked
- ruby interpreter.
-
- * eval.c (is_defined): modified for expr::Const support.
-
- * eval.c (rb_eval): invoke method expr::Const if expr is not class
- nor module.
-
- * parse.y (primary): enable expr::identifier as method
- invocation.
-
-Wed Dec 23 03:04:36 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_match): avoid too many loop pops for (?:..).
-
-Tue Dec 22 18:01:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental version 1.1d1 released.
-
-Mon Dec 21 01:33:03 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (TMP_PROTECT): add volatile to ensure GC protection.
-
- * string.c (rb_str_gsub_bang): calculate buffer size properly.
-
- * parse.y (lex_get_str): needed to return Qnil at EOS.
-
- * eval.c (find_file): check policy modified, raise exception
- immediately for tainted load_path.
-
- * hash.c (rb_f_setenv): do not depend on setenv() nor putenv().
-
-Thu Dec 17 06:29:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/tk/tkutil.c (tk_s_new): use rb_obj_instance_eval(), instead
- of rb_yield_0().
-
- * eval.c (rb_f_require): forgot to call find_file in some cases.
-
- * eval.c (rb_f_require): `require "feature.so"' to load dynamic
- libraries. old `require "feature.o"' is still OK.
-
- * eval.c (rb_eval): yield without value dumped core.
-
-Wed Dec 16 16:28:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental version 1.1d0 (pre1.2) released.
-
-Wed Dec 16 10:43:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_search): bound check before calling re_match().
-
-Tue Dec 15 13:59:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * error.c (exc_to_s): returns class name for unset mesg.
-
- * error.c (exc_initialize): do not initialize @mesg by "".
-
- * parse.y (nextc): __END__ should handle CR+LF newlines.
-
-Wed Dec 9 13:37:12 1998 MAEDA shugo <shugo@aianet.ne.jp>
-
- * pack.c (encodes): use buffering for B-encoding.
-
- * pack.c (pack_pack): Q-encoding by 'M'.
-
-Tue Dec 8 14:10:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (generic_ivar_get): any object can have instance
- variables now. great improvement.
-
- * variable.c (rb_name_class): do not set __classpath__ by default,
- use __classid__ instead.
-
-Mon Dec 7 22:08:22 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.h (struct RFile): IO objects can have instance variables now.
-
- * parse.y (primary): allows `def obj::foo; .. end'.
-
-Mon Dec 7 18:24:50 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * ruby.c (set_arg0): $0 support for HP-UX.
-
-Mon Dec 7 01:30:28 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * dln.c (dln_strerror): better error messages on win32.
-
-Sat Dec 5 23:27:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (here_document): indentable here-doc delimiter by
- `<<-'. Proposed by Clemens <c.hintze@gmx.net>. Thanks.
-
-Thu Dec 3 16:50:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/extmk.rb.in (realclean): trouble on install.
-
-Sun Nov 29 22:25:39 1998 Takaaki Tateishi <ttate@jaist.ac.jp>
-
- * process.c (f_exec): check number of argument.
-
-Thu Nov 26 17:27:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1c9 released.
-
-Wed Nov 25 13:07:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_dup): do not copy additional data (STR_NO_ORIG).
-
- * parse.y (yycompile): reduce known memory leak (hard to remove).
-
-Wed Nov 25 03:41:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * st.c (st_init_table_with_size): round size up to prime number.
-
-Sat Nov 21 23:27:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (rb_hash_aset): reduce copying key strings.
-
- * gc.c (looks_pointerp): declare as inline function if possible.
-
- * st.c (PTR_NOT_EQUAL): compare hash values first before calling
- comparing function.
-
- * st.c (ADD_DIRECT): save hash value in entries to reduce hash
- calculation.
-
- * string.c (rb_str_gsub_bang): avoid rb_scan_args() to speed-up.
-
- * string.c (rb_str_sub_bang): ditto.
-
-Sat Nov 21 18:44:06 1998 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
-
- * time.c (time_s_now): had memory leak.
-
- * ext/md5/md5init.c (md5_new): had memory leak.
-
- * ext/md5/md5init.c (md5_clone): ditto.
-
-Fri Nov 20 23:23:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * lib/delegate.rb: do not propagate hash and eql?.
-
-Thu Nov 19 01:40:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sample/ruby-mode.el (ruby-expr-beg): failed to find reserved
- word boundary.
-
- * eval.c (rb_eval): avoid calling `concat' method. calls
- rb_ary_concat() directly for efficiency.
-
- * eval.c (rb_eval): actual rest arguments extended arrays too much.
-
-Wed Nov 18 14:30:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * class.c (rb_define_global_function): global functions now be
- module function of the Kernel.
-
-Wed Nov 18 10:48:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (read_all): SEGV on large files.
-
-Tue Nov 17 18:11:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1c8 released.
-
-Tue Nov 17 16:58:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (arg): assignment to attribute name start with capital
- should be allowed.
-
- * eval.c (thread_alloc): needed to mark terminated threads too.
-
-Tue Nov 17 12:33:48 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
-
- * ext/extmk.rb.in (create_makefile): Set `libdir' to `@libdir@',
- Set `pkglibdir' to `$libdir/$(RUBY_INSTALL_NAME)'.
-
-Tue Nov 17 10:30:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sprintf.c (f_sprintf): %l%%c -> %%l%c
-
-Tue Nov 17 01:08:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (ret_args): distinguish `a' and `*a' for the arguments
- of yield and return.
-
- * eval.c (rb_eval): flip3 should work like sed.
-
- * eval.c (rb_eval): flip{2,3} now have independent state for each
- scope to work fine with thread.
-
-Mon Nov 16 23:26:29 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (primary): exec else clause if no exception raised.
-
-Sun Nov 15 15:44:07 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * ext/extmk.rb.in (install): bug in target.
-
-Sat Nov 14 11:02:05 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
-
- * Makefile.in (install): Give the argument `$(DESTDIR)' to
- `instruby.rb'.
- * instruby.rb: Recognize ARG[0] as `destdir'.
- * instruby.rb: Give the argument `destdir' to `extmk.rb'.
- * ext/extmk.rb.in: Recognize ARG[1] as `$destdir'.
-
- * instruby.rb: Create the installation directories (bindir, libdir,
- archdir, pkglibdir, archdir, and mandir) under `destdir', and
- install all files under there.
- * ext/extmk.rb.in: Likewise.
-
-Sat Nov 14 10:56:55 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
-
- * instruby.rb: Add the variable `pkglibdir'.
- * instruby.rb: Set the variable `libdir' to `$(libdir)', not
- `$(libdir)/$(ruby_install_name)'. `libruby.so' and `libruby.so.LIB'
- are installed at `libdir'.
- * instruby.rb: Set the variable `archdir' to `$(pkglibdir)/$(arch)'.
-
-Fri Nov 13 19:43:29 1998 KIMURA Koichi <kbk@kt.rim.or.jp>
-
- * missing/nt.c (SafeFree): wrong free offset.
-
-Thu Nov 12 20:11:53 1998 Koji Arai <JCA02266@nifty.ne.jp>
-
- * sample/ruby-mode.el: wrong highlight.
-
- * parse.y (parse_regx): newline in regexp was ignored.
-
-Wed Nov 11 10:54:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (here_document): <<'FOO' should not escape anything.
-
- * parse.y (here_document): bare << here-doc available, even though
- it's deprecated.
-
- * file.c (rb_file_s_readlink): return value should be tainted.
-
- * ext/etc/etc.c (setup_passwd): information (eg. GCOS name) should
- be tainted (modified at Perl Conference).
-
-Tue Nov 10 00:22:11 1998 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * configure.in: elf support for FreeBSD 3.x
-
-Tue Nov 10 00:05:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): here document available in eval.
-
-Mon Nov 9 17:55:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1c7 released.
-
-Fri Nov 6 19:25:27 1998 Takao KAWAMURA <kawamura@ike.tottori-u.ac.jp>
-
- * sample/ruby-mode.el: font-lock patch.
-
-Thu Nov 5 15:42:22 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sample/README, lib/README: simple description for each file.
-
-Wed Nov 4 18:14:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (assign): attribute assignment should be called as public.
-
-Tue Nov 3 23:36:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_dump): dumps core for negative char value.
-
- * regex.c (re_compile_pattern): out of boundary access for empty
- regexp.
-
-Mon Nov 2 22:54:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_aset): `str[str]' replaces first match.
-
-Mon Nov 2 18:24:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (thread_create): was accessing modified status.
-
-Sun Nov 1 01:18:52 1998 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * gc.c (xrealloc): size 0 needs round up to 1.
-
-Sat Oct 31 23:18:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_split_method): negative LIMIT means number of
- splitted fields are unlimited, as in perl.
-
- * string.c (rb_str_split_method): if LIMIT is unspecified,
- trailing null fields are stripped.
-
-Sat Oct 31 04:16:14 1998 Inaba Hiroto <inaba@st.rim.or.jp>
-
- * string.c (str_aref): regexp index SEGVed.
-
-Fri Oct 30 14:33:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (reg_match): returns nil for unmatch.
-
- * dir.c (dir_entries): new method.
-
- * eval.c (block_pass): do not push block, substitute it.
-
-Fri Oct 30 01:28:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * range.c (range_check): avoid <=> check for Fixnums.
-
- * array.c (rb_ary_aset): accept negative index.
-
-Wed Oct 28 22:00:54 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_match): access out of boundary fixed.
-
-Wed Oct 28 11:37:42 1998 TAMITO <tommy@valley.ne.jp>
-
- * io.c (f_select): fd number comparison bug.
-
-Tue Oct 27 23:07:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sample/ruby-mode.el (ruby-parse-region): forgot to support %w()
- style array literal.
-
- * eval.c (rb_eval): unused block raises warning.
-
-Mon Oct 26 09:37:53 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (dvar_asgn_push): dvar pushed too many times if
- variable-in-block first appear in loops.
-
-Sun Oct 25 22:59:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (set_list_bits): was using wrong offset.
-
-Thu Oct 22 00:07:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_obj_method): method retrieved from tainted object
- should be tainted too.
-
- * eval.c (method_call): safe_level should be restored during
- Method#call.
-
-Wed Oct 21 14:21:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (Init_IO): new constants IO::SEEK_{SET,CUR,END}.
-
- * io.c (rb_f_ungetc): ungetc pushes a char back into STDIN.
-
-Mon Oct 19 11:50:00 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
-
- * ext/extmk.rb: Load '@top_srcdir@/lib/find.rb', not
- '../lib/find.rb'.
- * ext/extmk.rb: Distinguish between `top_srcdir' and `topdir'.
- * Makefile.in (CFLAGS): Add `-I.'.
- * Makefile.in (lex.c): Give `@srcdir@/keywords' to gperf, not
- `keywords'.
- * instruby.rb: Use `CONFIG["bindir"]', instead of `prefix + "/bin"'.
- * instruby.rb: Use `CONFIG["libdir"]', instead of `prefix + "/lib"'.
- * instruby.rb Use `CONFIG["mandir"]', instead of `prefix + "/man"'.
- * instruby.rb (wdir): Add the variable to preserve the current
- working directory.
- * instruby.rb: Chdir to wdir before install `config.h' and
- `rbconfig.rb'.
-
-Mon Oct 19 10:07:01 1998 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
-
- * eval.c (rb_eval): reduce recursive calls to rb_eval().
-
-Fri Oct 16 15:31:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_new_internal): timeval must be positive.
-
-Thu Oct 15 13:54:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (arg): local variables can be accessed within right side
- expression in assignment, notably in blocks.
-
-Wed Oct 14 00:18:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (Init_Array): Array#=== is now for equal check, not
- inclusion check.
-
- * parse.y (when_args): `when a, *b' style new syntax for array
- expansion in `case'.
-
-Tue Oct 13 14:30:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (rb_obj_untaint): taint marks can be unset.
-
- * eval.c (rb_eval): taint propagation for embedded strings.
-
-Mon Oct 12 13:27:15 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_call0): check stack depth more frequently.
-
-Mon Oct 12 08:08:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_p): can print even in secure mode.
-
-Sun Oct 11 22:50:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (rb_const_set): taint check for modification.
-
- * variable.c (rb_ivar_set): taint check for modification.
-
- * string.c (rb_str_modify): taint check for modification.
-
- * hash.c (rb_hash_modify): taint check for modification.
-
- * array.c (rb_ary_modify): taint check for modification.
-
- * ruby.h (FL_TAINT): taint for all objects, not only strings.
-
-Fri Oct 9 17:01:14 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (read_all): read() returns "" at immediate EOF.
-
- * io.c (io_read): read(nil) read all until EOF.
-
-Thu Oct 8 13:32:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_dump): marshal can dump Time object now.
-
- * marshal.c (Init_marshal): rename marshal methods `_dump_to' to
- `_dump', `_load_from' to `_load'.
-
- * parse.y (rb_intern): "+=".intern generates proper symbol.
-
-Mon Oct 5 18:31:53 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1c6 released.
-
-Fri Oct 2 14:22:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_search): `/\s*(--)$/ =~ "- --"' did not match,
- because of wrong optimize condition.
-
-Mon Oct 1 01:55:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (rb_intern): should not raise exceptions.
-
- * parse.y (yylex): symbol like `:foo?=' should not be allowed.
-
- * ext/extmk.rb.in: makes *.a for static link modules.
-
-Wed Sep 30 14:13:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_start): supports making a subclass of the
- Thread class.
-
-Tue Sep 29 17:46:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_thread_join): join is now an instance method.
-
-Fri Sep 25 12:01:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): `@foo!' should be an error.
-
-Thu Sep 24 14:55:06 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * ext/etc/etc.c (Init_etc): wrong field definition.
-
-Thu Sep 17 17:09:05 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_reopen): was creating FILE* for wrong fd.
-
-Tue Sep 15 05:28:11 1998 Koji Arai <JCA02266@nifty.ne.jp>
-
- * regex.c (re_compile_pattern): forgot to fixup for the pattern
- like (?=(A)|(B)).
-
-Tue Sep 15 01:06:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (rb_io_gets_internal): do not set $_ by default, only
- gets/readline set the variable.
-
- * eval.c (rb_f_load): load toplevel class is set to anonymous
- module if safe_level >= 5, to encapsulate modification.
-
- * eval.c (rb_f_load): set frame properly.
-
- * string.c (rb_str_each_line): do not set $_.
-
-Mon Sep 14 14:42:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_match): beginning and end of the string, do not
- automatically match `\b'.
-
- * string.c (scan_once): consume at least on character.
-
- * regex.c (re_search): wrong behavior for negative range.
-
-Sat Sep 12 21:21:26 1998 Koji Arai <JCA02266@nifty.ne.jp>
-
- * regex.c (re_search): range value should be maintained.
-
-Thu Sep 10 10:55:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (backref_error): yyerror does not understand formats.
-
-Tue Sep 8 18:05:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1c5 released.
-
-Tue Sep 8 10:03:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_each_line): wrong line splitting with newline at
- top of the string.
-
- * string.c: non bang methods return copied string.
-
- * eval.c (f_END): needed to initialize frame->argc;
-
-Fri Sep 4 11:27:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (bigadd): proper sign combination.
-
- * regex.c (re_search): wrong return value for \A.
-
-Thu Sep 3 14:08:14 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1c4 released.
-
-Tue Sep 1 10:47:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (slow_search): do not compare llen and blen. llen may
- be longer than blen, if little contains 0xff.
-
- * regex.c (mbctab_euc): set 0x8e as multibyte character.
-
- * string.c (str_inspect): mask character for octal output.
-
-Mon Aug 31 15:32:41 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_search): use calculated offset if exactn is the
- first opcode in the compiled regexp.
-
- * regex.c (bm_search): use Boyer-Moore search for simple search.
-
- * regex.c (must_instr): wrong length check if pattern includes
- byte escape by 0xff.
-
- * regex.c (re_compile_pattern): need not to check current_mbctype.
-
-Sat Aug 29 16:31:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_check_safe_str): avoid calling rb_id2name() in normal
- cases to speed-up.
-
- * eval.c (thread_raise): do not save context of terminated thread.
-
- * regex.c (re_compile_pattern): mask \nnn over 256.
-
-Sat Aug 29 02:09:46 1998 Koji Arai <JCA02266@nifty.ne.jp>
-
- * sprintf.c (f_sprintf): wrong buffer size check.
-
-Fri Aug 28 01:57:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): accepts (?ix-ix) and (?ix-ix:...).
-
-Fri Aug 28 12:25:33 1998 Hiroshi Igarashi <igarashi@ueda.info.waseda.ac.jp>
-
- * ruby.c (ruby_require_modules): load modules in appearing order.
-
-Fri Aug 28 01:57:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): accepts (?ix-ix) and (?ix-ix:...).
-
-Thu Aug 27 12:54:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1c3 released.
-
-Wed Aug 26 14:40:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): check whether ruby_class is properly set,
- before accessing it.
-
- * eval.c (rb_obj_instance_eval): ruby_class should be Qnil for
- special objects like Fixnums.
-
- * ext/tkutil/tkutil.c (Init_tkutil): removes calls to
- rb_yield_0(). used instance_eval() instead in the tk.rb.
-
-Wed Aug 26 11:47:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_match): pop non-greedy stack elements on success.
-
-Wed Aug 26 09:25:35 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ruby.h: add #define environ for cygwin32.
-
-Tue Aug 25 08:57:41 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (rb_ary_sort_bang): temporarily freeze sorting array.
-
-Mon Aug 24 18:46:44 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * dln.c (dln_find_1): path check was too strict.
-
-Mon Aug 24 15:28:11 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * parse.y (f_arglist): opt_nl added after f_args.
-
-Fri Aug 21 01:06:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c: grand renaming on socket.c.
-
- * ext/socket/socket.c (inet_aton): supply inet_aton for those
- systems that do not have it.
-
- * ext/socket/socket.c (setipaddr): use inet_aton instead of
- inet_addr.
-
- * ext/socket/socket.c (tcp_s_gethostbyname): new method: works
- like Socket.gethostbyname but returning array contains ip-addrs
- as octet decimal string format like "127.0.0.1".
-
- * ext/socket/socket.c (mkhostent): return format changed to
- [host, aliases, type, ipaddr..] as documented.
-
-Wed Aug 19 00:31:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_ctl): forgot to place TRAP_END at right position.
-
-Fri Aug 14 11:01:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (call_trace_func): save __FILE__, __LINE__ before
- executing trace_func, since trace function should not corrupt
- line number information.
-
-Thu Aug 13 15:09:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (ary_s_new): was marking unallocated region on GC.
-
-Tue Aug 11 11:57:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1c2 released.
-
-Mon Aug 10 14:05:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * process.c (f_system): removed fflush(stdin).
-
-Fri Aug 7 17:44:44 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * error.c (err_snprintf): replace sprintf for fixed sized buffer,
- with snprintf to avoid buffer over-run. For systems which does
- dot provide snprintf, missing/snprintf.c added.
-
-Wed Aug 5 00:47:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (rb_reg_search): recycle match object.
-
-Mon Aug 3 09:17:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (rb_str_gsub_bang): do not allocate temporary string.
-
- * string.c (rb_str_sub_bang): use inline replace.
-
-Wed Jul 29 00:36:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (hash_s_new): the default value can be specified.
-
- * hash.c (hash_default): method to set the default value.
-
- * hash.c (hash_aref): now returns the default value.
-
-Tue Jul 28 13:03:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (ary_s_new): argument to specify initial value is added.
-
- * array.c (ary_s_new): specifies size, not capacity.
-
-Mon Jul 27 12:39:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_replace): zero fill for expansion gap.
-
- * regex.c (mbctab_euc): set flags on for 0xA1-0xFE. suggested by
- <inaba@st.rim.or.jp>.
-
- * string.c (str_inspect): consider current_mbctype.
-
-Sun Jul 26 15:37:11 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * array.c (ary_s_new): Array.new(1<<30) dumps core.
-
-Fri Jul 24 13:40:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1c1 released.
-
-Fri Jul 24 02:10:22 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * marshal.c (r_bytes2): allocated buffer size was too short.
-
- * marshal.c (w_object): saves all options, not only casefold flag.
-
- * re.c (reg_clone): now copies options properly.
-
- * re.c (reg_get_kcode): code number was wrong.
-
-Thu Jul 23 13:11:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_attr): argument should be symbol or string.
-
-Wed Jul 22 11:59:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (calculate_must_string): wrong offset added.
-
-Wed Jul 22 11:59:59 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * st.c (rehash): still had a GC problem. fixed.
-
-Tue Jul 21 13:19:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (gc_mark_threads): crashed on GC before thread allocation.
-
- * st.c (rehash): GC during rehash caused SEGV.
-
-Tue Jul 21 01:25:10 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sprintf.c (f_sprintf): integer formatter totally re-written.
-
- * sprintf.c (remove_sign_bits): support uppercase hexadecimal.
-
-Sat Jul 18 00:14:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sprintf.c (f_sprintf): proper sign position for %X and %O.
-
-Fri Jul 17 14:10:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1c0 released.
-
-Fri Jul 17 08:01:49 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * process.c (f_exec): Check_SafeStr() added.
-
- * process.c (f_system): Check_SafeStr() moved before fork().
-
-Thu Jul 16 22:58:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (scan_once): substrings to the block should not be
- tainted. use reg_nth_match(), not str_substr().
-
- * string.c (str_substr): needed to transfer taint.
-
-Thu Jul 16 16:15:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * gc.c (xmalloc): object allocation count added to GC trigger.
-
- * eval.c (thread_save_context): avoid marking uninitialized stack
- in thread_mark. GC may be triggered by REALLOC_N().
-
-Wed Jul 15 15:11:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_31.
-
-Wed Jul 15 15:05:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (thread_create): exit() and abort() in threads now
- forwarded to main_thread.
-
-Tue Jul 14 14:03:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (obj_instance_variables): list names that is not
- instance variables.
-
- * gc.c (GC_MALLOC_LIMIT): choose smaller limit value.
-
-Mon Jul 13 12:39:38 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (str2cstr): should not return NULL.
-
-Fri Jul 10 11:51:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (gettable): needed to add dyna_in_block() check.
-
-Thu Jul 9 17:38:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_30.
-
-Thu Jul 9 16:01:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sprintf.c (fmt_setup): format specifier for long needed.
-
- * sprintf.c (f_sprintf): ditto.
-
- * numeric.c (fix2str): ditto.
-
- * eval.c (thread_create): no more ITIMER_REAL.
-
- * eval.c (thread_create): thread finalization needed before
- aborting thread if thread_abort is set.
-
-Wed Jul 8 18:17:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (big_pow): abandon power by bignum (too big).
-
-Tue Jul 7 13:58:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_catch): add C level catch/throw feature.
-
-Mon Jul 6 15:18:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (arg): proper return values for `||=' and `&&='.
-
-Fri Jul 3 16:05:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_29.
-
-Fri Jul 3 11:20:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * marshal.c (r_byte): byte should not extend sign bit.
-
- * numeric.c (fix_mul): use FIX2LONG() instead of FIX2INT() for
- 64bit architectures.
-
- * marshal.c (r_bytes): remove weird casting between pointer and int.
-
- * process.c (proc_setsid): new method Process#setsid().
-
-Thu Jul 2 12:49:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * marshal.c (w_object): remove `write_bignum' label for 64bit
- architectures.
-
- * marshal.c (r_bytes): needs int, not long.
-
-Wed Jul 1 14:21:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * numeric.c (flo_plus): should not allow addition with strings.
-
-Wed Jul 1 13:09:01 1998 Keiju ISHITSUKA <keiju@rational.com>
-
- * numeric.c (num_uminus): wrong coerce direction.
-
-Tue Jun 30 10:13:44 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (f_p): accepts arbitrary number of arguments.
-
- * eval.c (rb_yield_0): there's some case that iterator_p() returns
- true even if the_block was not set. check added.
-
-Tue Jun 30 01:05:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (BEGIN_CALLARGS): adjust the_block before evaluating the
- receiver's value and the arguments.
-
-Fri Jun 26 18:02:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_28.
-
-Fri Jun 26 11:01:26 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * string.c (str_aset_method): needed to convert to string.
-
-Thu Jun 25 02:05:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_search): optimize for `.*' at beginning of the
- pattern.
-
- * regex.c (re_search): optimize for character class repeat at
- beginning of the pattern.
-
- * regex.c (re_compile_pattern): detect optimization potential for
- the compiled patterns.
-
-Thu Jun 25 00:02:26 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * re.c (reg_s_new): flag value was wrong.
-
-Wed Jun 24 23:45:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_search): wrong anchor handling for reverse search.
-
-Wed Jun 24 02:18:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (mlhs): `((a,b)),c = [[1,2]],3' assigns a=1,b=2,c=3.
-
-Tue Jun 23 11:46:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): `&&=' and `||=' added.
-
-Sat Jun 20 02:53:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (assignable): nesting local variables should have higher
- priority than normal local variables for assignment too.
-
-Fri Jun 19 18:28:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_27.
-
-Fri Jun 19 14:34:49 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (assign): support hack for nested multiple assignment.
-
- * parse.y (mlhs): nested multiple assignment.
-
- * eval.c (rb_eval): in-block variables now honors static scope.
-
- * configure.in: RSHIFT check moved to configure.
-
-Thu Jun 18 16:46:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_26.
-
-Thu Jun 18 13:37:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * file.c (file_s_ftype): uses lstat(2) instead of stat(2).
-
- * dir.c (dir_s_glob): there can be buffer overrun, check added.
-
- * eval.c (f_binding): handles in-block variables declared after
- binding's generation.
-
- * numeric.c (flo_floor): floor, ceil, round added to Float.
-
-Wed Jun 17 11:20:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (gettable): nesting local variables should have higher
- priority than normal local variables.
-
-Tue Jun 16 12:30:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (str2inum): handles `+ddd'.
-
- * struct.c (make_struct): name parameter can be nil for unnamed
- structures.
-
-Mon Jun 15 16:30:10 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (class_s_inherited): prohibiting to make subclass of
- class Class.
-
- * object.c (module_s_new): support for making subclass of Module.
-
- * parse.y (yycompile): clear eval_tree before compiling.
-
-Fri Jun 12 17:58:18 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (eval): write back the_dyna_var into the block.
-
-Thu Jun 11 18:19:18 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_25.
-
- * eval.c (dvar_add_compiling): register dyna_var at compile time.
-
- * regex.c (re_compile_pattern): RE_DUP_MAX iteration is too big.
-
-Wed Jun 10 15:12:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_eof): do not block other threads.
-
- * signal.c (trap): reserve SIGALRM for thread.
-
- * eval.c (thread_create): use ITIMER_REAL also to avoid system
- call blocking.
-
- * io.c (f_syscall): add TRAP_BEG, TRAP_END around system calls.
-
- * io.c (io_ctl): add TRAP_BEG, TRAP_END around system calls.
-
- * enum.c (enum_collect): did not collect false values.
-
- * array.c (ary_new2): forgot to initialize capa field.
-
-Tue Jun 9 18:36:15 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * string.c (str_split_method): split dumped core for "\xff".
-
-Tue Jun 9 16:22:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_24.
-
-Tue Jun 9 16:04:07 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ext/kconv/kconv.c (kconv_guess): more precise decision for EUC,
- using jless algorithm (3 sequential EUC hiragana characters).
-
-Tue Jun 9 15:12:44 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/kconv/kconv.c (kconv_guess): wrong guess for EUC as SJIS in
- some cases (0xe0 - 0xef).
-
- * gc.c (xmalloc): insert size check for big (negative in signed)
- allocation size.
-
-Tue Jun 9 02:54:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * lib/parsedate.rb: wday moved to the last in the return values.
-
-Mon Jun 8 10:40:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_split_method): split dumped core for "\0".
-
-Sat Jun 6 22:50:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (calculate_must_string): wrong condition for
- {start,stop}_nowidth.
-
- * regex.c (re_match): various features imported from GNU regex.c
- 0.12, such as nested grouping, avoiding infinite loop with empty
- match, etc.
-
- * regex.c (register_info_type): now use union.
-
- * regex.c (re_search): more precise anchor(^) check.
-
-Wed Jun 3 18:07:54 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (reg_raise): check rb_in_compile, not rb_in_eval.
-
-Mon Jun 1 05:26:06 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * string.c (trnext): casting to signed char* needed.
-
-Tue Jun 2 16:00:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c (udp_addrsetup): error check enhanced.
-
- * ext/socket/socket.c (sock_s_getservbyaname): use strtoul(), if
- possible.
-
-Sat May 30 07:10:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (reg_prepare_re): no more needless regular expression
- recompile on casefold conditions.
-
-Thu May 28 18:02:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (nil_plus): no more `+' method for nil.
-
-Wed May 27 17:33:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (hash_fetch): new method.
-
- * regex.c (re_search): check whether translate table is set.
-
-Tue May 26 11:39:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_23.
-
- * parse.y (yylex): no UPLUS/UMINUS for 1st argument if
- parenthesises are omitted.
-
-Tue May 26 01:09:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): (?XI) for turns off the
- corresponding option.
-
-Mon May 25 12:38:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): inline i option (?i).
-
- * regex.c (re_compile_pattern): inline x option (?x).
-
- * regex.c (re_compile_pattern): x option for regexp.
-
- * dir.c (dir_s_open): returns block's evaluated value.
-
- * io.c (f_open): returns block's evaluated value.
-
- * ext/curses/curses.c (curses_addstr): nil argument caused SEGV.
-
-Fri May 22 11:52:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): push mark on (?:), so that
- laststart check for {a,b} can be done.
-
-Thu May 21 17:31:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_match): wrong match (too non-greedy) for `{a,b}?'.
-
- * io.c (io_lineno): new method IO#lineno, IO#lineno=.
-
-Wed May 20 06:04:43 1998 MAEDA shugo <shugo@aianet.ne.jp>
-
- * BeOS patch.
-
-Wed May 20 16:32:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (BIGDN): use RSHIFT(), instead of mere `>>'.
-
-Tue May 19 16:36:26 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_22.
-
-Tue May 19 16:31:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (assignable): specification changed for in-block
- variable definition.
-
- * eval.c (dyna_var_asgn): error in in-block variables' compile
- time definition.
-
- * parse.y (str_extend): wrong nesting detection.
-
-Tue May 19 09:47:55 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * numeric.c (num2int): re-defined (extensions may use this).
-
-Mon May 18 16:40:50 1998 MAEDA shugo <shugo@aianet.ne.jp>
-
- * error.c (get_syserr): BeOS support.
-
- * configure.in: modified for BeOS.
-
- * string.c (str_dump): do not call isascii().
-
- * sprintf.c (remove_sign_bits): forgot to initialize end pointer.
-
- * glob.c: #include <alloca.h> added.
-
-Mon May 18 14:52:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_21.
-
-Mon May 18 03:27:57 1998 MAEDA shugo <shugo@aianet.ne.jp>
-
- * file.c (file_s_expand_path): optional second argument
- `default_directory' added.
-
-Sat May 16 22:06:52 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * error.c (RAISE_ERROR): wrong error message
-
-Fri May 15 14:43:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_20.
-
-Thu May 14 14:44:21 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * sun4 cc patches for intern.h and regex.h.
-
-Thu May 14 14:03:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * random.c (RANDOM_MAX): guessing proper maximum value for random
- numbers.
-
- * random.c (f_rand): use drand48 if possible.
-
-Wed May 13 19:05:20 1998 MAEDA shugo <shugo@aianet.ne.jp>
-
- * BeOS patches for io.c, error.c and config.guess.
-
-Wed May 13 14:56:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_19.
-
- * most of the Mac and BeOS patches merged, except path separators.
-
- * error.c (err_append): generated SyntaxError was String.
-
- * ruby.h: xxx2INT, xxx2UINT checks values as int, not long.
-
- * ruby.h: remove typedef's. INT, UINT, UCHAR, USHORT.
-
-Tue May 12 17:38:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_18.
-
-Tue May 12 11:38:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * error.c (syserr_errno): returns errno of the SystemCallError.
-
- * error.c (rb_sys_fail): saves errno in the Exception.
-
- * error.c (set_syserr): no need to protect syserr_list.
-
- * error.c (rb_sys_fail): no more bufsize limit.
-
- * error.c (set_syserr): integer value of errno can be accessed by
- Errno::EXXX::Errno.
-
-Sun May 10 03:10:33 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
-
- * io.c (io_tell etc.): moved from File class to IO class.
-
-Fri May 8 12:26:37 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * pack.c (pack_unpack): should be unsigned int (was signed int).
-
-Thu May 7 16:34:10 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * pack.c (pack_pack): `V', `N' uses newly created NUM2UINT().
-
- * ruby.h (NUM2UINT): new macro.
-
- * bignum.c (big2uint): try to convert bignum into UINT.
-
- * re.c (reg_match): needed to return false for match with nil.
-
- * gc.c (obj_free): wrong condition to free string.
-
-Wed May 6 21:08:08 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ruby.c (ruby_process_options): modified for DJGPP.
-
-Wed May 6 15:48:03 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_17.
-
-Wed May 6 01:37:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c: remove global variable `errat'.
-
- * eval.c (rb_longjmp): embed error position information in the
- exception object.
-
-Sat May 2 12:20:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (reg_search): supports reverse search.
-
- * string.c (str_index_method): does update $~ etc.
-
- * eval.c (f_load): needed to clear the_dyna_vars.
-
- * eval.c (dyna_var_asgn): do not push dyna_var, which is id == 0.
-
- * error.c (Init_Exception): NotImplementError is no longer
- StandardError, which is not handled by default rescue.
-
-Fri May 1 00:35:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (proc_options): `-d' turns on verbose flag too.
-
- * error.c (exception): last argument may be the superclass of the
- defining exception(s).
-
- * io.c (Init_IO): EOFError is now subclass of the IOError.
-
- * io.c (Init_IO): forgot to define IOError.
-
- * error.c (Init_Exception): old Exception class renamed to
- StandardError. Exception now replaces old GlobalExit.
-
- * error.c (Init_Exception): Exception is now the root of the
- Global Exits. There's no longer GlobalExit class.
-
- * util.c (ruby_mktemp): check TMP, TMPDIR first.
-
-Thu Apr 30 01:08:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * lib/tk.rb: call 'unknown', if proc not defined.
-
- * eval.c (handle_rescue): default rescue handles `Exceptional' not
- only the instance of the `Exception's.
-
- * eval.c (f_raise): exception can be any object.
-
- * time.c (time_gm_or_local): call time_gmtime or time_localtime.
-
- * eval.c (f_raise): raises TypeError if the class which is not a
- subclass of String is specified (checked in exc_new()).
-
- * error.c (exc_new): need to check whether invalid class (not a
- subclass of String) is specified.
-
-Wed Apr 29 21:05:44 1998 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ruby.c (proc_options): option '-e' via tempfile.
-
-Tue Apr 28 15:27:58 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_16.
-
-Tue Apr 28 00:07:38 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (obj_is_proc): type check predicate.
-
- * eval.c (obj_is_block): ditto.
-
-Mon Apr 27 16:59:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/gtk/gtk.c (Init_gtk): use timeout, not idle to avoid
- consuming CPU too much.
-
- * lib/tk.rb: use tcltklib#_invoke instead of `_eval'.
-
-Mon Apr 27 16:59:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (ary_sort): use dup, not clone.
-
-Mon Apr 27 13:46:27 1998 Tadahiro Maebashi <maebashi@iij.ad.jp>
-
- * ext/tcltklib/tcltklib.c (ip_invoke): invoke tcl command
- directly. need not worry about escaping tcl characters.
-
-Mon Apr 27 12:04:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * random.c (f_rand): do not call srand() implicitly.
-
-Fri Apr 24 14:35:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_15.
-
- * parse.y (assignable): dyna_var_asgn actually defines nested
- local variables in outer context.
-
- * random.c (f_rand): call srand(), if it has not called yet.
-
- * random.c (f_srand): use tv_usec as the default seed.
-
- * eval.c (rb_eval): values of nested local variables should be
- independent.
-
- * eval.c (rb_yield_0): local variables wrong nested conditions.
-
-Wed Apr 22 23:27:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (select_get_io): get IO object by `to_io'.
-
- * io.c (io_to_io): method to retrieve IO object, from delegating
- object for example.
-
-Wed Apr 22 16:52:37 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_14.
-
- * string.c (str_modify): check for embedded pointer reference.
-
- * gc.c (obj_free): ditto.
-
- * pack.c (pack_pack): p/P template to embed pointers.
-
-Wed Apr 22 00:07:10 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * array.c (ary_rindex): embarrassing typo.
-
-Tue Apr 21 12:31:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_13.
-
- * configure.in (RUBY_LIB): supports --program-{prefix,suffix}.
-
- * array.c (ary_rindex): new method.
-
- * io.c (io_binmode): should return self.
-
-Tue Apr 21 08:23:04 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * parse.y (here_document): calling parse_string with wrong
- arguments.
-
- * struct.c (struct_aset): problem member assignment with name.
-
-Mon Apr 20 14:47:49 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_12.
-
- * time.c (time_arg): args may be string (support for reduced
- implicit type conversion).
-
- * lib/base64.rb: changed to use pack/unpack with `m' template.
-
-Mon Apr 20 06:23:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (mod_remove_const): new method.
-
-Sat Apr 18 03:53:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (hash_each_with_index): removed. use Enumerable's
- each_with_index instead.
-
- * class.c (rb_include_module): check for super modules, since
- module's included modules may be changed.
-
-Fri Apr 17 21:50:47 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * marshal.c (r_long): r_byte() may return signed byte.
-
-Fri Apr 17 11:58:30 1998 NAGAI Hidetoshi <nagai@dumbo.ai.kyutech.ac.jp>
-
- * ext/tcltklib/tcltklib.c (lib_mainloop): thread and interrupt check.
-
-Fri Apr 17 11:06:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (find_file): try to fopen() to check whether file exists.
-
- * ruby.c (load_file): ditto.
-
- * struct.c (struct_aset): struct member can be set by member name.
-
-Fri Apr 17 00:47:19 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ext/extmk.rb.in: added m68k-human support
-
- * file.c (LOCK_SH): defines moved.
-
- * array.c (ary_flatten_bang): simplified loop.
-
-Thu Apr 16 16:52:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_11.
-
- * lib/tk.rb: thread support (experimental - maybe slow).
-
- * eval.c (rb_longjmp): trace event on exception in raising
- context, just before raising exception.
-
- * struct.c (struct_s_members): forgot to check singletons.
-
- * struct.c (struct_aref): members can be accessed by names too.
-
- * array.c (ary_flatten): new method.
-
- * eval.c (rb_longjmp): prints exception information with `-d'.
-
- * object.c (any_to_s): remove class name restriction.
-
-Thu Apr 16 01:38:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * file.c (thread_flock): do not block other threads.
-
- * eval.c (thread_trap_eval): signals are now delivered to the
- current thread again. In case that the current thread is dead,
- signals are forwarded to the main thread.
-
- * string.c (str_new4): need not to duplicate frozen strings.
-
-Wed Apr 15 08:33:47 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * struct.c (struct_inspect): remove restriction for struct names.
-
-Wed Apr 15 02:55:02 1998 Kazuya 'Sharl' Masuda <sharl@www.ufo.co.jp>
-
- * x68 patches to config.sub, ext/extmk.rb.in
-
-Wed Apr 15 01:22:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_dup_frozen): do not duplicate frozen strings.
-
- * parse.y (yylex): allow nested parenthesises.
-
- * io.c (obj_displayln): prints newline after `display'ing the
- receiver.
-
- * io.c (io_puts): avoid generating "\n" each time. use RS_default
- instead.
-
- * io.c (f_p): ditto.
-
-Tue Apr 14 22:18:17 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * struct.c (struct_aref): should not subtract negative index.
-
-Tue Apr 14 11:34:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_10.
-
- * parse.y: token names prefixed by `t'.
-
- * struct.c (struct_s_def): supports subclassing of Struct.
-
- * io.c (io_s_new): supports subclassing of IO.
-
-Mon Apr 13 11:07:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (f_binding): need to restore method name.
-
- * eval.c (rb_call0): raises SystemStackError, not Fatal.
-
- * io.c (obj_display): same as `print self'.
-
- * io.c (f_p): can now be called in the method form.
-
- * re.c (reg_regsub): needed to be mbchar aware.
-
-Mon Apr 13 13:18:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (thread_trap_eval): all signals delivered to main_thread.
-
-Mon Apr 13 12:47:03 1998 TAKAHASHI Masayoshi <maki@inac.co.jp>
-
- * re.c (kcode_set_option): did not set SJIS on SJIS condition.
-
-Sun Apr 12 22:14:07 1998 Kazunori NISHI <kazunori@swlab.csce.kyushu-u.ac.jp>
-
- * array.c (ary_uniq_bang): should be `==', not `='. embarrassing.
-
-Sat Apr 11 02:13:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (ary_subseq): SEGVed for `[][1,1]'.
-
-Fri Apr 10 21:29:06 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * array.c (ary_subseq): add check for beg larger than array length.
-
-Wed Apr 8 17:24:11 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
-
- * dir.c (dir_s_open): can be called with block (like IO#open).
-
- * dir.c (dir_s_chdir): print directory path on error.
-
- * dir.c (dir_s_chroot): ditto
-
- * dir.c (Init_Dir): needed to override `new'.
-
-Thu Apr 9 18:24:58 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_09.
-
- * string.c (str_cmp): do not depend on sentinel at the end of the
- strings.
-
- * string.c (str_chomp_bang): forgot to set the sentinel.
-
-Wed Apr 8 00:59:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * bignum.c (big2int): converted int may be too big to fit in
- signed int.
-
- * parse.y (arg): `foo += 1' should not cause an error.
-
- * variable.c (rb_const_defined): returned false even if the
- constant is defined at the top level.
-
- * eval.c (f_local_variables): dyna_var->id may be null. should
- have checked before calling str_new2().
-
-Tue Apr 7 01:15:15 1998 Kaneko Naoshi <wbs01621@mail.wbs.or.jp>
-
- * re.c (reg_regsub): need to check string boundary.
-
-Tue Apr 7 19:19:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_cmp): returns either 1, 0, -1.
-
- * array.c (ary_cmp): should check array length, too
-
-Tue Apr 7 18:50:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_08.
-
-Tue Apr 7 18:31:27 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * instruby.rb (mandir): dll installation for cygwin32
-
-Tue Apr 7 01:16:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * config.sub (maybe_os): TOWNS support?
-
- * config.guess: too strict check for libc versions on linuxes.
-
- * experimental release 1.1b9_07.
-
- * array.c (ary_cmp): compare each element using `<=>'.
-
- * hash.c (hash_each_with_index): yields [value, key] pair.
-
- * class.c (class_protected_instance_methods): list protected
- method names.
-
- * class.c (ins_methods_i): exclude protected methods.
-
- * eval.c (PUSH_BLOCK): dynamic variables can be accessed from
- eval() with bindings.
-
-Mon Apr 6 14:49:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (thread_yield): must return evaluated value.
-
-Fri Apr 3 13:07:29 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (thread_schedule): context switch bypassed on wrong
- conditions.
-
- * variable.c (rb_name_class): set classname by id before String
- class is initialized (1.0 behavior restored).
-
-Fri Apr 3 11:25:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * numeric.c (num2int): no implicit conversion from string.
-
- * numeric.c (num2int): check whether `to_i' returns an Integer.
-
- * numeric.c (num_zero_p): new method.
-
- * numeric.c (num_nonzero_p): new method. returns the receiver if
- it's not zero.
-
- * eval.c (obj_instance_eval): the_class should be the object's
- singleton class.
-
- * error.c (exc_s_new): message is converted into a string.
-
-Thu Apr 2 18:31:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (obj_call_init): every object call `initialize'.
-
-Wed Apr 1 08:51:53 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * parse.y (stmt): UNTIL_MOD should be for stmt, not only for expr.
-
-Wed Apr 1 01:20:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (true_and): boolean operators &, | and ^.
-
-Tue Mar 31 13:23:58 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (ary_compact_bang): returns nil, if it does not modify
- the array like String's bang methods.
-
- * array.c (ary_uniq_bang): new method to remove duplicate items.
-
- * eval.c (bind_s_new): new method.
-
- * numeric.c (num2int): raise exception if Fixnums too big to
- convert into `int' in case that sizeof(int) < sizeof(INT).
-
- * string.c (str_center): SEGV on negative width.
-
- * eval.c (eval): forgot to set sourcefile.
-
-Mon Mar 30 11:12:29 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * file.c (f_test): raises exception for unknown command.
-
- * eval.c (Init_eval): `class_eval': alias to the module_eval.
-
-Mon Mar 30 18:50:42 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * string.c (str_capitalize_bang): did not check string modification.
-
- * string.c (str_delete_bang): wrong conversion.
-
- * string.c (str_intern): typo in error message.
-
-Mon Mar 30 01:44:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (obj_instance_eval): accepts block as evaluation body.
- No compilation needed each time.
-
- * eval.c (mod_module_eval): ditto
-
- * file.c (file_s_umask): umask did not return old values, if no
- argument given.
-
-Sun Mar 29 00:54:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (f_throw): nil returned always.
-
-Sat Mar 28 20:40:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_06.
-
-Sat Mar 28 16:07:11 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * io.c (io_closed): should not cause exception for closed IO.
-
- * string.c (str_tr): returned nil for success.
-
-Sat Mar 28 00:47:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (f_local_variables): new method to return an array of
- local variable names.
-
- * variable.c (obj_instance_variables): now returns an array of
- variable names, as described in the reference.
-
- * eval.c (rb_attr): honors default method visibility of the
- current scope.
-
-Fri Mar 27 13:49:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_05.
-
- * ruby.c (ruby_prog_init): `site_ruby' added to load_path.
-
- * ruby.c (ruby_prog_init): load-path order changed. Paths in
- the RUBYLIB environment variable comes first in non-tainted
- mode.
-
-Thu Mar 26 11:51:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_call): new feature: `protected' methods.
-
- * string.c (str_dump): new method.
-
- * eval.c (block_pass): block argument can be nil, which means no
- block is supplied for the method.
-
-Wed Mar 25 21:20:13 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * string.c (str_reverse_bang): string copied to wrong place.
-
-Wed Mar 25 08:12:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * numeric.c (flo_modulo): caused SEGV if left operand is not a
- float value.
-
- * eval.c (f_eval): optional third and fourth argument to specify
- file-name and line-number.
-
- * eval.c (eval): file-name and line-number set properly.
-
- * parse.y (assign_in_cond): literal assignment is now warning, not
- compile error.
-
- * error.c (Warn): Warn() always print message, OTOH Waring()
- prints when verbose flag is set.
-
-Tue Mar 24 12:50:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (ruby_prog_init): `.' should come last in the load-path.
-
- * eval.c (Init_eval): `__send__', alias for `send'.
-
-Mon Mar 23 12:44:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_chomp_bang): now takes `rs' as an argument.
-
- * eval.c (thread_free): main_thread should not be freed.
-
-Fri Mar 20 16:40:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_chomp_bang): chomp! (and other ! methods) returns
- nil if it does not modify the string.
-
- * string.c (str_sub_iter_s): should check last pattern since it
- may be matched to null.
-
-Thu Mar 19 13:48:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_04.
-
- * parse.y (yylex): `10e0.9' should cause syntax error.
-
-Wed Mar 18 17:46:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (load_file): new file object constant DATA. Only
- available for the script from the file.
-
- * regex.c (re_match): forwarding failure point popped too much.
-
-Tue Mar 17 18:23:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * math.c (math_frexp): newly added.
-
- * math.c (math_ldexp): ditto.
-
- * bignum.c (bigdivmod): calculates modulo.
-
- * numeric.c (fix_remainder): returns reminder, formerly introduced
- as modulo.
-
- * numeric.c (fix_modulo): calculates proper `modulo'.
-
- * bignum.c (bigdivmod): wrong sign for reminder.
-
-Mon Mar 16 17:07:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_03.
-
-Mon Mar 16 16:33:53 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * io.c (pipe_finalize): needed to add pipe_finalize to pipes on
- cygwin32.
-
-Mon Mar 16 14:11:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * class.c (ins_methods_i): needed to consider NOEX_UNDEF.
-
-Mon Mar 16 13:23:53 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * io.c (io_check_closed): check for `fptr->f2 == NULL'.
-
- * io.c (io_fptr_close): ditto.
-
-Mon Mar 16 11:49:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (pipe_atexit): free()ing referencing pipe_list.
-
- * range.c (range_length): returns zero, if the first is greater
- than the last.
-
- * signal.c (trap_restore_mask): restore signal mask before raising
- exceptions and throws.
-
-Fri Mar 13 13:49:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_02.
-
- * object.c (mod_clone): need to dups constants and instance
- variables.
-
- * eval.c (rb_eval): forgot to initialize body for NODE_DEFS.
-
- * eval.c (rb_eval): retrieve self from calling frame, since self
- changes sometimes.
-
- * env.h (FRAME): need to save self in the calling frame.
-
- * io.c (f_gets_method): rs should be initialized by RS.
-
-Thu Mar 12 15:33:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * experimental release 1.1b9_01.
-
- * range.c (range_s_new): check values by `first <= last'.
-
- * parse.y (lastline_set): fixed offset for $_ and $~ in the local
- variable space.
-
-Wed Mar 11 02:14:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_gets): handle normal case specially for speed.
-
- * eval.c (rb_disable_super): function to disable superclass's
- method explicitly.
-
- * eval.c (rb_eval): inherits previous method definition's
- NOEX_UNDEF-ness, if exists.
-
- * class.c (rb_define_method): disables superclass's overriding
- method by default.
-
-Wed Mar 11 01:40:48 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
-
- * numeric.c (flo_gt,etc.): do not depend on `<=>', to handle NaN.
-
-Tue Mar 10 00:03:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (load_file): understands multiple options in #! line.
-
- * regex.c (re_compile_pattern): support for [:alpha:] etc.
-
-Mon Mar 9 16:53:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.h (GetOpenFile): embed io_check_closed in GetOpenFile.
-
- * sprintf.c (f_sprintf): zero padding failed for negative
- integers.
-
- * sprintf.c (remove_sign_bits): failed to remove some bits.
-
-Sat Mar 7 21:51:46 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
-
- * class.c (ins_methods_i): body may be NULL for some case.
-
-Fri Mar 6 17:23:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (mbcinit): table driven mbchar detection.
-
- * object.c (obj_alloc): check for allocating instance for the
- primitive classes (mostly perfect).
-
- * ext/curses/curses.c (curses_finalize): restore original state at
- interpreter termination.
-
- * ext/curses/curses.c (curses_addstr): forgot to check argument
- type (caused SEGV). now uses STR2CSTR() macro.
-
-Thu Mar 5 13:47:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (block_pass): accepts method object as block args.
-
- * eval.c (f_missing): use any_to_s() for stringify.
-
-Wed Mar 4 01:39:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (block_arg): new syntax - block argument in the
- calling arglist.
-
- * eval.c (rb_call): no module search. simplified a lot.
-
- * eval.c (rb_eval): block arg support.
-
- * parse.y (f_block_arg): new syntax - block argument in the
- formal arglist.
-
-Tue Mar 3 14:20:15 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (obj_method): returns bound method object.
-
- * eval.c (rb_call): argument check for empty methods.
-
- * ruby.h (NUM2CHR): new macro, originally from curses module.
-
-Tue Mar 3 13:03:35 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
-
- * io.c (io_putc): new method.
-
-Tue Mar 3 11:21:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_inspect): more strict charcode detection.
-
- * eval.c (thread_stop): stopping only thread raises ThreadError
- exception.
-
-Tue Mar 3 08:04:56 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
-
- * struct.c (struct_alloc): incomplete struct initialization made
- GC to access unallocated addresses.
-
-Mon Mar 2 16:28:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (thread_stop_method): remove Thread#stop.
-
-Fri Feb 27 18:16:26 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1b9 released.
-
-Fri Feb 27 09:36:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (hash_delete_nil): needed to compare value to nil, since
- nil is the valid key for hashes.
-
- * hash.c (hash_foreach_iter): rehashing causes IndexError.
-
- * hash.c (hash_foreach_iter): rehash check by pointer comparison.
-
-Thu Feb 26 17:22:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (fname): convert reswords into symbols.
-
- * parse.y (reswords): reserved words are now embedded in the
- syntax (sigh).
-
- * parse.y: now reserved words can be method names safely.
-
-Wed Feb 25 15:50:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (mod_module_eval): clear the_scope's PRIVATE flag before
- calling eval().
-
- * gc.c (gc_call_finalizer_at_exit): run finalizers before any data
- object being freed.
-
- * eval.c (rb_eval): needed to keep prot_tag->retval before
- evaluating the ensure clause.
-
-Tue Feb 24 11:16:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): reserved words can be appear as method names at
- right after 'def' and `.'(dot), like foo.next.
-
- * eval.c (return_check): checks for return out of thread (formerly
- done in return_value).
-
- * eval.c (POP_TAG): copy retval to outer level.
-
- * eval.c (return_value): just set retval, no check, no unwinding.
-
- * parse.y (nextc): line continuation by backslash at end of line.
-
- * regex.c (re_compile_pattern): forgot to clear pending_exact on
- closing parentheses.
-
- * parse.y (assignable): should not assign dyna_var to true, if it
- is already defined.
-
-Mon Feb 23 14:35:03 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (obj_is_kind_of): no longer accepts true/false/nil.
-
- * object.c ({true,false,nil}_to_i): can be converted into integers.
-
-Mon Feb 23 12:11:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (reg_s_quote): needed to be mbchar aware.
-
- * eval.c (proc_s_new): wrong iter mark.
-
-Sat Feb 21 22:59:30 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
-
- * io.c (f_syscall): no argument check.
-
-Fri Feb 20 10:17:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1b8 released.
-
- * ext/kconv/kconv.c (kconv_kconv): default output code now be
- determined according to the value of $KCODE.
-
- * re.c (rb_get_kcode): can retrieve $KCODE from C code.
-
- * parse.y (stmt): if/unless modifiers returns nil, if condition is
- not established.
-
-Thu Feb 19 11:06:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/kconv/kconv.c (kconv_kconv): charcode can be specified by
- code name (JIS, SJIS, EUC like value of $KCODE).
-
- * regex.c (re_compile_pattern): forgot to fixup_jump for (?:..).
-
- * regex.c (re_compile_pattern): needed to clear pending_exact on
- non-registering grouping (?:...).
-
-Wed Feb 18 19:54:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (here_document): needed to set lex_state to EXPR_END.
-
-Wed Feb 18 18:45:10 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * patches for cygwin32 applied.
-
-Wed Feb 18 00:41:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_sub_s): needed to be mbchar aware to increment one
- character.
-
- * regex.c (re_match): \Z matches newline just before the end of
- the string.
-
-Tue Feb 17 00:04:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_arg): Time.gm and Time.local now understands
- Time#to_a format.
-
- * string.c (str_sub_s): replace happened twice for null pattern.
-
- * regex.c (re_search): null pattern should not match after newline
- at the end of string.
-
- * time.c (time_isdst): now returns boolean value.
-
- * error.c (rb_check_type): treat special constants in messages.
-
- * parse.y (yylex): new form `::Const' to see toplevel constants.
-
- * parse.y (cond): SEGV on `if ()'.
-
- * gc.c (obj_free): some data needed explicit free().
-
-Mon Feb 16 23:55:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (blk_free): release duplicated block informations.
-
- * eval.c (blk_copy_prev): duplicate outer block information into
- the heap, when proc/binding created.
-
-Mon Feb 16 14:38:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_mon): now 1 for January and so on.
-
- * time.c (time_year): year in 19xx (no + 1900 needed anymore).
-
-Mon Feb 16 13:28:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): need to fetch mbchar's second byte
- without translation.
-
-Mon Feb 16 12:29:27 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
-
- * eval.c (f_pass_block): pass iterator block to other method.
-
-Fri Feb 13 08:16:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (parse_regx): handle \s before read_escape().
-
- * parse.y (read_escape): `\s' in strings as space.
-
-Tue Feb 10 17:29:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1b7 released.
-
- * string.c (str_aset): string insertion by `str[n] = str2'.
-
- * string.c (str_oct): does recognize `0x'.
-
- * sprintf.c (f_sprintf): use base 10 for conversion from string to
- integer.
-
-Mon Feb 9 14:51:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * numeric.c (do_coerce): proper error message.
-
- * string.c (str_sum): bug - masked by wrong value. (sigh..)
-
-Sat Feb 7 15:11:14 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_empty): new method
-
-Fri Feb 6 01:42:15 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c (time_asctime): use asctime(3), not strftime(3).
-
-Thu Feb 5 18:58:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_fptr_close): do not free path on close().
-
- * array.c (ary_filter): new method.
-
- * enum.c (enum_each_with_index): new method.
-
-Thu Feb 5 14:10:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (primary): singleton class def can be appeared inside
- method bodies.
-
- * hash.c (hash_replace): replace content.
-
- * string.c (str_replace_method): replace content.
-
- * array.c (ary_replace_method): replace elements.
-
- * string.c (str_succ_bang): String#succ!
-
-Thu Feb 5 18:20:30 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * string.c (str_upcase_bang): multi byte character support.
-
-Wed Feb 4 13:55:26 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (ary_reverse): SEGV on empty array reverse.
-
-Tue Feb 3 12:24:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (match_to_a): non matching element should be nil.
-
- * ruby.c (ruby_load_script): load script after all initialization.
-
- * bignum.c (str2inum): need to interpret prefix `0' of `0x'.
-
-Tue Feb 3 10:00:18 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * numeric.c (fix_rshift): use `sizeof(INT)*8' instead of 32.
-
-Mon Feb 2 14:09:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (set_arg0): grab environment region too.
-
-Thu Jan 29 18:36:25 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * process.c (rb_proc_exec): check `sh' to be exist.
-
-Thu Jan 29 18:18:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_stdio_set): assignment to $stdin or $stdout does
- reopen() as well as $stderr.
-
-Thu Jan 29 14:18:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * class.c (mod_ancestors): should not include singleton classes.
-
- * object.c (obj_type): should not return internal class.
-
- * io.c (io_reopen): unwillingly closes stdio streams.
-
-Thu Jan 29 11:50:35 1998 Toshihiko SHIMOKAWA <toshi@csce.kyushu-u.ac.jp>
-
- * ext/socket/socket.c (udp_addrsetup): forgot to use htons().
-
-Tue Jan 27 23:15:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * keywords: __FILE__, __LINE__ are available again.
-
-Fri Jan 23 14:19:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1b6 released.
-
- * object.c (mod_to_s): need to duplicate classpath.
-
- * error.c (exc_inspect): need to duplicate classpath.
-
-Thu Jan 22 00:37:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.h (STR2CSTR): new macro to retrieve char*.
-
- * class.c (rb_define_method): `initialize' should always be
- private, even if it defined by C extensions.
-
- * eval.c (rb_eval): `initialize' should always be private.
-
-Thu Jan 22 16:21:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): some singleton class def cause SEGV.
-
- * eval.c (TMP_ALLOC): replace ALLOCA_N, where thread context
- switch may happen.
-
-Wed Jan 21 01:43:42 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (PUSH_FRAME): do not use ALLOCA_N(). crash on some
- platforms that use missing/alloca.c.
-
- * regex.c (re_compile_pattern): too many pops for non register
- subexpr.
-
- * parse.y (yylex): open parentheses after identifiers are argument
- list, even if whitespaces have seen.
-
-Tue Jan 20 15:19:59 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (terms): quoted word list by %w(a b c).
-
- * ext/tcltklib/extconf.rb: more accurate check for tcl/tk libs.
-
- * file.c (rb_stat): most of the FileTest methods (and function
- `test') accept File objects as the argument.
-
-Tue Jan 19 18:19:24 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ext/extmk.rb.in (install): there should be no newline after install:
-
- * re.c (MIN): renamed from min(). there's a local variable named
- min in the file, so that some cpp will raise an error.
-
-Mon Jan 19 16:30:05 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1b5 released.
-
- * process.c (rb_syswait): no exception raised.
-
-Fri Jan 16 00:43:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.h (CLONESETUP): copies its singleton classes too.
-
- * class.c (singleton_class_attached): saves binded object in the
- singleton classes.
-
- * eval.c (rb_eval): calls singleton_method_added even in the
- singleton class clauses.
-
-Fri Jan 15 23:22:43 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ruby.c (proc_options): -S does not recognize PATH.
-
-Thu Jan 15 02:03:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_clear_cache_by_id): clear only affected cache
- entries.
-
-Wed Jan 14 02:14:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c: new UDP/IP socket classes.
-
-Tue Jan 13 10:00:18 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_cmp): ignorecase($=) works wrong.
-
-Fri Jan 9 13:19:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1b4 released.
-
- * eval.c (f_missing): class name omitted from the error message.
-
- * error.c (exc_inspect): description changed.
-
- * string.c (Init_String): GlobalExit's superclass did not filled,
- since GlobalExit created earlier than String.
-
-Thu Jan 8 12:10:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (aryset): expr in the brackets can be null.
-
-Wed Jan 7 21:13:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_reopen): keep stderr unclosed.
-
- * io.c (io_errset): keep stderr unclosed.
-
-Tue Jan 6 00:27:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y: syntax modified for `while expr do .. end' etc.
-
- * process.c (f_exec,f_system): can supply arbitrary name for the
- new process.
-
-Mon Jan 5 16:59:13 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * file.c (file_s_basename): removes any extension by ".*".
-
-Sun Jan 4 19:36:22 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * parse.y (yylex): needed to update lex_p (reading point).
-
-Sat Jan 3 19:14:14 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * class.c,object.c: duplicate defines mKernel and cFinxnum.
-
-Fri Jan 2 20:38:59 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/curses/curses.c (NUM2CHAR): uses the first character for
- string arguments.
-
- * array.c (ary_fill): did not extend array for ranges.
-
- * array.c (beg_len): did not return end pos bigger than size.
-
-Fri Jan 2 02:09:16 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * dir.c (dir_s_chdir): bug in nil check.
-
- * array.c (ary_fill): bug in nil check.
-
-Tue Dec 30 11:46:23 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * hash.c (env_path_tainted): checks directories in PATH
- environment variable are not world writable.
-
- * ruby.c (load_file): invoke specified interpreter if the #! line
- does not contain the word `ruby'.
-
-Fri Dec 26 03:26:41 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (uscore_get): type information included in the error
- message.
-
- * variable.c (f_untrace_var): does not free trace-data within
- trace procedure.
-
-Thu Dec 25 02:50:29 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1b3 released.
-
- * ruby.h: inlining some functions on gcc 2.x
-
-Tue Dec 23 02:47:33 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): public/private information kept in the current
- scope, to remove undesired state from the class/module.
-
- * time.c (time_strftime): remove hidden limit of 100 bytes of
- result string, using malloc'ed buffer.
-
- * hash.c (hash_update): merges the contents of another hash,
- overriding existing keys.
-
- * regex.c (must_instr): totally re-written.
-
- * io.c (read_all): try to allocate proper sized buffer using
- fstat(2) for speedup.
-
-Sat Dec 20 00:27:28 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (must_instr): need to skip 2 bytes for mbchars.
-
-Fri Dec 19 01:18:29 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1b2 released.
-
- * eval.c (check_errat): check and convert (if necessary) traceback
- information before assigning to the variable $@.
-
- * eval.c (f_raise): optional third argument to specify traceback
- information.
-
- * io.c (f_open): prevent infinite recursive call.
-
-Thu Dec 18 19:33:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_rindex): now accepts regexp as index.
-
-Thu Dec 18 18:42:50 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ext/socket/extconf.rb: modified to detect win32 socket lib.
-
-Thu Dec 18 00:25:03 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * re.c (reg_equal): checks for source and casefold and kcode matching.
-
- * marshal.c: became built-in module.
-
- * ext/marshal/marshal.c (r_object): displays struct name for
- non-compatible struct.
-
- * string.c (str_index_method): now searches character (fixnum) in
- the string.
-
- * string.c (str_include): redefine `include?'.
-
- * regex.c (re_match): start_nowidth saves current stack position
- to stop_nowidth.
-
- * regex.c (re_compile_pattern): add space to stop_nowidth to save
- runtime stack position.
-
-Tue Dec 16 14:57:43 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (scan_once): wrong exception for regexp that match with
- null string (use substr instead of subseq).
-
-Sat Dec 13 00:13:32 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (expr): remove bare assocs from expr rule.
-
- * rbconfig.rb: renamed from config.rb (it was too generic name).
-
-Fri Dec 12 00:50:25 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (expr): warns if BEGIN or END appear in the method
- bodies.
-
- * string.c (str_match): calls y =~ x if y is neither String nor
- Regexp so that eregex.rb works.
-
- * eval.c (f_at_exit): to register end proc.
-
- * class.c (rb_define_module_function): define 'function' method
- for the Module, not private method.
-
- * class.c (rb_define_function): function to define `function' method.
-
- * eval.c (rb_eval): inherit visibility from superclass's method
- except when it is set to `function'
-
- * eval.c (rb_eval): new visibility status `function'.
-
- * parse.y (yycompile): do not clear eval_tree. thus enable multiple
- command line script by option `-e'.
-
- * eval.c (rb_eval): END execute just once.
-
- * parse.y (expr): BEGIN/END built in the syntax.
-
-Thu Dec 11 13:14:35 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (mod_le): Module (or Class) comparison.
-
- * eval.c (rb_remove_method): raises NameError if named method does
- not exist.
-
- * ext/curses/curses.c: remove CHECK macro for BSD curses.
-
-Thu Dec 11 12:44:01 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * pack.c: sun4 cc patch
-
-Wed Dec 10 15:21:36 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/marshal/marshal.c (marshal_load): can supply evolution proc
- object as optional second argument.
-
- * re.c (reg_source): get source string of the regular expression.
-
-Tue Dec 9 10:05:17 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1b1 released.
-
- * parse.y (tokadd): token buffer overrun.
-
- * ruby.c (ruby_prog_init): forgot to protect rb_argv0 from gc.
-
- * eval.c (ruby_run): call finalizers at process termination.
-
- * gc.c (gc_call_finalizer_at_exit): call free proc for every Data
- Wrapper, and finalizer for specified objects at termination.
-
- * version.c (show_version): version format changed.
-
- * regex.c (re_match): wrong match with non-greedy if they appear
- more than once in regular expressions.
-
- * sample/ruby-mode.el (ruby-expr-beg): forgot to handle modifiers.
-
-Mon Dec 8 19:00:15 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_puts): just put a newline if no argument given.
-
- * ext/tcltklib/tcltklib.c (lib_mainloop): thread-aware tk handle
- when $tk_thread_safe is set.
-
- * ext/tcltklib/tcltklib.c (lib_mainloop): use Tcl_DoOneEvent()
- instead of Tk_MainLoop().
-
-Mon Dec 6 07:11:16 1997 MAEDA shugo <shugo@po.aianet.ne.jp>
-
- * io.c (io_puts): core dumped without any argument.
-
-Fri Dec 5 18:17:17 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (mod_remove_method): remove (not undef) a method from the
- class/module.
-
- * variable.c (obj_remove_instance_variable): method to remove
- instance variables.
-
-Thu Dec 4 13:50:29 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1b0 released.
-
- * string.c (str_aref): called str_index for regexp.
-
-Mon Dec 1 15:24:41 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * compar.c (cmp_between): wrong comparison made.
-
-Wed Nov 26 18:18:05 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * lib/mkmf.rb: generate Makefile for extension modules out of ruby
- source tree. use like `ruby -r mkmf extconf.rb'.
-
- * numeric.c (fix2str): enlarge buffer to prevent overflow on some
- machines.
-
- * parse.y (here_document): wrong line number generated after here-doc.
-
-Fri Nov 21 13:17:12 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (yylex): skip multibyte characters in comments.
-
-Wed Nov 19 17:19:20 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (nil_to_a): nil.to_a => [].
-
- * parse.y (call_args): wrong node generation.
-
-Tue Nov 18 10:13:08 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * array.c (Init_Array): Array#=== works as Array#include?
-
- * regex.c (re_compile_pattern): insert initialize code for jump_n,
- before entering loops.
-
- * re.c (reg_search): does not save registers unless $& etc appear
- in the script.
-
-Mon Nov 17 13:01:43 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (is_defined): add defined? check for receivers and
- arguments for calls.
-
- * re.c (reg_search): cache last match object.
-
- * re.c (match_aref): $[0] etc. are available.
-
-Sat Nov 15 00:11:36 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * io.c (io_s_popen): "rb" detection
-
-Fri Nov 14 18:28:40 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (scan_once): returns whole match if the pattern does
- not contain any parentheses.
-
-Thu Nov 13 14:39:06 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (str_sub): returns copy of the receiver string, even if
- any substitution occurred.
-
- * regex.c (re_compile_pattern): no-width match by (?=..), (?!..).
-
-Wed Nov 12 13:44:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * time.c: remove coerce from Time class.
-
- * regex.c (re_match): non-greedy match by ??, *? +?, {n,m}?.
-
-Mon Nov 10 11:24:51 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): non-resitering parens (?:..).
-
- * regex.c (re_compile_pattern): new meta character \< (wordbeg)
- and \> (wordend).
-
- * regex.c (re_compile_pattern): embedded comment for regular
- expression by (?#...).
-
-Fri Nov 7 16:58:24 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * regex.c (re_compile_pattern): perl5 regxp \A and \Z available.
-
- * regex.c (re_compile_pattern): can expand compile stack dynamically.
-
- * regex.c (PUSH_FAILURE_POINT): wrong compare condition.
-
-Wed Nov 2 16:00:00 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * string.c (str_sub_s): "".sub! "", "" => "\000"
-
-Fri Oct 31 15:52:10 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (assoc): keyword assoc like {fg->"black"}.
-
-Thu Oct 30 17:33:38 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_println): print with newline, which is not affected by
- the values of $/ and $\.
-
-Thu Oct 30 16:54:01 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * string.c (str_chop_bang): "".chop caused SEGV.
-
- * string.c (str_chomp_bang): method to chop out last newline.
-
-Mon Oct 27 13:49:13 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/extmk.rb.in: library may have pathname contains `.'
-
- * eval.c (rb_rescue): should not protect SystemError.
-
-Fri Oct 24 10:58:53 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_s_with_open_stream): ensures to close stream.
-
-Thu Oct 23 11:17:44 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_errset): value of $stderr can be changed (to any IO
- object).
-
- * io.c (next_argv): $< can be anything that responds to `write'.
-
- * file.c (file_s_with_open_file): ensures to close file.
-
- * error.c (exception): create error under the current class/module.
-
- * range.c (range_eqq): fixnum check for last needed too.
-
-Wed Oct 22 12:52:30 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/socket/socket.c: Socket::Constants added.
-
- * file.c: File::Constants added for inclusion.
-
- * array.c (ary_join): call ary_join() recursively for the 1st
- array element.
-
-Mon Oct 20 12:18:29 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ruby.c (load_file): wrong condition for #! check with -x.
-
- * file.c (file_s_dirname): did return "" for "/a".
-
-Fri Oct 17 14:29:09 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c: now works on alpha-linux.
-
- * bignum.c (bigadd): some undefined side effect order assumed.
-
-Wed Oct 15 17:49:24 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * intern.h: function prototypes added.
-
-Mon Oct 13 16:54:18 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * class.c (rb_define_class_id): call superclass's `inherited'
- method when making subclasses.
-
- * parse.y (nextc): clear lex_lastline at the end of file.
-
- * object.c (Init_Object): need to undef Class#append_features.
-
- * eval.c (rb_eval): no warning on extending classes or modules.
-
-Thu Oct 9 11:17:50 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (error_print): the exception name follows after the error
- message.
-
- * eval.c (compile_error): error message slightly changed.
-
- * parse.y (nextc): script parsing will be terminated by __END__ at
- beginning of line.
-
- * eval.c (compile_error): `__END__' is no longer a keyword.
-
- * parse.y (nextc): protect lastline read from script stream.
-
-Tue Oct 7 14:06:06 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1 alpha9 released.
-
- * eval.c (mod_append_features): renamed from extend_class.
-
- * eval.c (rb_eval): defining method calls `method_added'.
-
- * eval.c (ruby_options): exception while processing options must
- terminate the interpreter.
-
- * error.c (Init_Exception): wrong method configuration. `new'
- should have been a singleton method.
-
-Mon Oct 6 18:55:38 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/kconv/kconv.c (kconv_guess): code to guess character code
- from string.
-
-Mon Oct 6 18:38:17 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * pack.c: now encode/decode base64 by `m' template.
-
-Fri Oct 3 10:51:10 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * MANIFEST: needed to include lex.c in the distribution.
-
- * eval.c (ruby_options): f_require() called too early.
-
- * eval.c (rb_provide): module extensions should always be `.o'.
-
-Thu Oct 2 11:38:31 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1 alpha8 released.
-
- * ext/marshal/marshal.c (r_object): remove temporal regist for
- structs. (caused problem if structs form cycles.)
-
- * parse.y (match_gen): static binding for match(=~) calls
- with regexp literals.
-
-Wed Oct 1 15:26:55 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c: protect retval in struct tag from GC for C_ALLOCA.
-
- * eval.c: no more pointer value from setjmp/longjmp.
-
-Wed Oct 1 14:01:49 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ext/marshal/marshal.c (w_byte): argument must be char.
-
-Wed Oct 1 10:30:22 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (mod_const_at): global constants now belongs to the
- class Object.
-
- * object.c (Init_Object): new global constant NIL.
-
- * ext/marshal/marshal.c (marshal_dump): try to set binmode.
-
- * ext/marshal/marshal.c (r_object): forgot to re-regist structs in
- the object table.
-
- * eval.c (ruby_options): call Init_ext() before any require()
- calls by `-r'.
-
-Fri Sep 30 14:29:22 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ext/marshal/marshal.c (w_object): marshal dumped core.
-
-Tue Sep 30 10:27:39 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sample/test.rb: bignum test suits added.
-
- * eval.c (rb_eval): new pseudo variable `true' and `false'.
-
- * parse.y: new keywords `true' and `false' added.
-
-Mon Sep 29 13:37:58 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (forbid_setid): forbid some options in suid mode.
-
- * ruby.h (NUM2DBL): new macro to convert into doubles.
-
-Mon Sep 27 09:53:48 1997 EGUCHI Osamu <eguchi@shizuokanet.or.jp>
-
- * bignum.c: modified for speeding.
-
-Fri Sep 26 18:27:59 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * sample/from.rb: some extensions.
-
-Mon Sep 29 13:15:56 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (lhs): no more syntax error on `obj.CONSTANT = value'.
-
-Fri Sep 26 14:41:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (ruby_run): deferred calling Init_ext() just before eval_node.
-
-Fri Sep 26 13:27:24 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * io.c (io_isatty): forgot to return TRUE value.
-
-Fri Sep 25 11:10:58 1997 EGUCHI Osamu <eguchi@shizuokanet.or.jp>
-
- * eval.c: use _setjmp/_longjmp instead of setjmp/longjmp on some
- platforms.
-
-Wed Sep 24 17:43:13 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * string.c (Init_String): String#taint and String#taint? added.
-
- * class.c (mod_ancestors): ancestors include the class itself.
-
-Wed Sep 24 00:57:00 1997 Katsuyuki Okabe <HGC02147@niftyserve.or.jp>
-
- * X68000 patch.
-
-Tue Sep 23 20:42:30 1997 EGUCHI Osamu <eguchi@shizuokanet.or.jp>
-
- * parse.y (node_newnode): SEGV on null node setup.
-
-Mon Sep 22 11:22:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (ruby_prog_init): wrong safe condition check.
-
-Sun Sep 21 14:46:02 1997 MAEDA shugo <shugo@po.aianet.ne.jp>
-
- * error.c (exc_inspect): garbage added to classpath.
-
-Fri Sep 19 11:49:23 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (newtok): forgot to adjust buffer size when shrinking
- the token buffer.
-
- * enum.c (enum_find): rb_eval_cmd() does not return value.
-
- * io.c (pipe_open): close fds on pipe exec. fcntl(fd, F_SETFD, 1)
- no longer used.
-
-Tue Sep 16 17:54:25 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * file.c (f_test): problem if wrong command specified.
-
- * ruby.c (ruby_prog_init): close stdaux and stdprn for MSDOS.
-
- * ruby.c (ruby_prog_init): should not add path from environment
- variable, if ruby is running under seuid.
-
- * process.c (init_ids): check suid check for setuid/seteuid etc.
-
-Mon Sep 15 00:42:04 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * regex.c (re_compile_pattern): \w{3} and \W{3} did not work.
-
-Thu Sep 11 10:31:48 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1 alpha7 released.
-
- * ext/socket/socket.c (sock_new): no setbuf() for NT.
-
- * io.c (rb_fopen,rb_fdopen): set close-on-exec for every fd.
-
-Wed Sep 10 15:55:31 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ext/marshal/marshal.c (r_bytes0): extra big length check.
-
-Tue Sep 9 16:27:14 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (pipe_fptr_atexit): clean up popen()'ed fptr.
-
- * error.c (set_syserr): some system has error code that is bigger
- than sys_nerr. grrr.
-
-Mon Sep 8 18:33:33 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * io.c (io_s_new): dereferenced nil for optional mode.
-
-Fri Sep 5 10:26:03 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * class.c (class_instance_methods): do not include methods which
- are changed to private in subclasses.
-
-Thu Sep 4 12:38:53 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * variable.c (f_global_variables): list name of the global
- variables.
-
- * object.c (obj_id): returns unique integer.
-
-Wed Sep 3 14:05:16 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1 alpha6 released.
-
- * eval.c (mod_s_constants): context sensitive constant list.
-
- * variable.c (mod_constants): no more `all' option.
-
- * variable.c (mod_const_of): the values for autoload classes are
- their name strings.
-
- * class.c (class_instance_methods): no special treatment for
- singleton classes.
-
- * object.c (obj_singleton_methods): returns list of singleton
- method names.
-
- * parse.y (yylex): no here document after `class' keyword.
-
- * eval.c (f_load): expand path if fname begins with `~'.
-
-Tue Sep 2 13:19:48 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * class.c (ins_methods_i): do not list undef'ed methods.
-
-Mon Sep 1 13:42:48 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1 alpha5 released.
-
- * object.c (mod_attr_reader): create methods to define attribute
- reader/write/accessor.
-
- * class.c (rb_define_attr): always defines accessors.
-
- * eval.c (rb_call): alias occurred in the module body caused SEGV.
-
- * parse.y: did not generate here document strings properly.
-
-Mon Sep 1 11:43:57 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * parse.y (yylex): heredoc dropped an extra character.
-
-Fri Aug 29 11:10:21 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * class.c (class_instance_methods): same method names should not
- appear more than once.
-
- * parse.y (yylex): spaces can follow =begin/=end.
-
- * variable.c (find_class_path): look for class_tbl also for
- unnamed fundamental classes, such as Object, String, etc.
-
- * variable.c (rb_name_class): can't name class before String class
- is initialized.
-
- * inits.c (rb_call_inits): unrecognized dependency from GC to
- Array.
-
- * variable.c (find_class_path): could not find class if Object's
- iv_tbl is NULL.
-
-Thu Aug 28 13:12:05 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1 alpha4 released.
-
- * variable.c (mod_constants): wrong condition for singleton
- class.
-
- * parse.y (yylex): revised `=begin' skip code.
-
- * parse.y (here_document): forgot to free(eos).
-
- * parse.y (yylex): spaces after `<<' prohibited for here
- documents to avoid confusing with operator `<<'.
-
- * eval.c (is_defined): separated from rb_eval().
-
-Wed Aug 27 11:32:42 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1 alpha3 released.
-
- * variable.c (mod_name): returns name of the class/module.
-
- * parse.y (here_document): finally here document available now.
-
- * variable.c (fc_i): some classes/modules does not have iv_tbl.
-
- * variable.c (find_class_path): avoid infinite loop.
-
-Tue Aug 26 13:43:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (rb_eval): undef'ing non-existing method will raise
- NameError exception.
-
- * object.c (class_s_new): needed to create metaclass too.
-
- * eval.c (error_print): no class name print for anonymous class.
-
- * eval.c (rb_longjmp): proper exception raised if raise() called
- without arguments, with $! or $@ set.
-
- * object.c (Init_Object): superclass()'s method argument setting
- was wrong again.
-
- * class.c (mod_ancestors): list superclasses and included modules
- in priority order.
-
-Mon Aug 25 11:53:11 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1 alpha2 released.
-
- * sample/ruby-mode.el (ruby-parse-region): auto-indent now
- supports "\\" in the strings.
-
- * struct.c (struct_getmember): new API to get member value from C
- language side.
-
-Sat Aug 23 21:39:05 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * parse.y (assignable): remove unnecessary local variable
- initialize by nil.
-
-Fri Aug 22 14:26:40 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (error_print): modified exception print format.
-
-Thu Aug 21 16:10:58 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * sample/ruby-mode.el (ruby-calculate-indent): wrong indent level
- calculated with keyword operators.
-
-Thu Aug 21 11:36:58 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * parse.y (arg): ary[0] += 1 cause SEGV
-
-Wed Aug 20 17:28:50 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * ruby.c (ruby_process_options): require() all modules after
- processing all options
-
- * process.c (rb_proc_exec): more security checks added.
-
- * process.c (rb_proc_exec): insecure path on exec.
-
- * hash.c (f_getenv): PATH modification security check.
-
-Tue Aug 19 00:15:38 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1 alpha1 released.
-
- * eval.c (mod_eval): work as normal eval() if second binding
- argument given.
-
- * eval.c (rb_call): did not raise ArgumentError if too many
- arguments more than optional arguments (without rest arg).
-
- * eval.c (rb_eval): did not work well for op_asgn2 (attribute
- self assignment).
-
- * eval.c (Init_Thread): returns main thread.
-
-Mon Aug 18 09:25:56 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * object.c (inspect_i): did not display T_DATA instance variables.
-
- * parse.y: provides more accurate line number information.
-
- * eval.c (thread_value): include value's backtrace information in
- the variable `$@'.
-
- * eval.c (f_abort): print backtrace and exit.
-
-Sat Aug 16 00:17:44 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (class_new_instance): do not make instance from virtual
- classes.
-
- * object.c (class_s_new): do not make subclass of singleton class.
-
-Fri Aug 15 15:49:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * eval.c (call_trace_func): block context switch in the trace
- function.
-
- * eval.c (rb_eval): clear method cache at class extension.
-
- * object.c (obj_type): returns object's class even if it defines
- singleton methods.
-
-Fri Aug 15 19:40:43 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
-
- * ext/socket/socket.c (Init_socket): small typo caused SEGV.
-
-Wed Aug 13 17:51:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
-
- * version 1.1 alpha0 released.
-
diff --git a/GPL b/GPL
new file mode 100644
index 0000000000..d159169d10
--- /dev/null
+++ b/GPL
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/KNOWNBUGS.rb b/KNOWNBUGS.rb
new file mode 100644
index 0000000000..35a8e75876
--- /dev/null
+++ b/KNOWNBUGS.rb
@@ -0,0 +1,7 @@
+#
+# IMPORTANT: Always keep the first 7 lines (comments),
+# even if this file is otherwise empty.
+#
+# This test file includes tests which point out known bugs.
+# So all tests will cause failure.
+#
diff --git a/LEGAL b/LEGAL
new file mode 100644
index 0000000000..0423d57ac9
--- /dev/null
+++ b/LEGAL
@@ -0,0 +1,1119 @@
+# -*- rdoc -*-
+
+= LEGAL NOTICE INFORMATION
+--------------------------
+
+All the files in this distribution are covered under either the Ruby's
+license (see the file COPYING) or public-domain except some files
+mentioned below.
+
+[addr2line.c]
+
+ A part of this file is from FreeBSD.
+
+ >>>
+ Copyright (c) 1986, 1988, 1991, 1993::
+ The Regents of the University of California. All rights reserved.
+
+ (c) UNIX System Laboratories, Inc.
+
+ All or some portions of this file are derived from material licensed
+ to the University of California by American Telephone and Telegraph
+ Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ the permission of UNIX System Laboratories, Inc.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 4. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ @(#)subr_prf.c 8.3 (Berkeley) 1/21/94
+
+
+[ccan/build_assert/build_assert.h]
+[ccan/check_type/check_type.h]
+[ccan/container_of/container_of.h]
+[ccan/str/str.h]
+
+ These files are licensed under the {CC0}[https://creativecommons.org/choose/zero/].
+
+[ccan/list/list.h]
+
+ This file is licensed under the {MIT License}[rdoc-label:label-MIT+License].
+
+[coroutine]
+
+ Unless otherwise specified, these files are licensed under the
+ {MIT License}[rdoc-label:label-MIT+License].
+
+[include/ruby/onigmo.h]
+[include/ruby/oniguruma.h]
+[regcomp.c]
+[regenc.c]
+[regenc.h]
+[regerror.c]
+[regexec.c]
+[regint.h]
+[regparse.c]
+[regparse.h]
+[enc/ascii.c]
+[enc/big5.c]
+[enc/cp949.c]
+[enc/emacs_mule.c]
+[enc/encdb.c]
+[enc/euc_jp.c]
+[enc/euc_kr.c]
+[enc/euc_tw.c]
+[enc/gb18030.c]
+[enc/gb2312.c]
+[enc/gbk.c]
+[enc/iso_8859_1.c]
+[enc/iso_8859_10.c]
+[enc/iso_8859_11.c]
+[enc/iso_8859_13.c]
+[enc/iso_8859_14.c]
+[enc/iso_8859_15.c]
+[enc/iso_8859_16.c]
+[enc/iso_8859_2.c]
+[enc/iso_8859_3.c]
+[enc/iso_8859_4.c]
+[enc/iso_8859_5.c]
+[enc/iso_8859_6.c]
+[enc/iso_8859_7.c]
+[enc/iso_8859_8.c]
+[enc/iso_8859_9.c]
+[enc/koi8_r.c]
+[enc/koi8_u.c]
+[enc/shift_jis.c]
+[enc/unicode.c]
+[enc/us_ascii.c]
+[enc/utf_16be.c]
+[enc/utf_16le.c]
+[enc/utf_32be.c]
+[enc/utf_32le.c]
+[enc/utf_8.c]
+[enc/windows_1251.c]
+[enc/windows_31j.c]
+
+ Onigmo (Oniguruma-mod) LICENSE
+
+ >>>
+ Copyright (c) 2002-2009:: K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ Copyright (c) 2011-2014:: K.Takata <kentkt AT csc DOT jp>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ Oniguruma LICENSE
+
+ >>>
+ Copyright (c) 2002-2009:: K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ * https://github.com/k-takata/Onigmo/
+ * https://github.com/kkos/oniguruma
+ * https://svnweb.freebsd.org/ports/head/devel/oniguruma/
+
+ When this software is partly used or it is distributed with Ruby,
+ this of Ruby follows the license of Ruby.
+
+[enc/windows_1250.c]
+[enc/windows_1252.c]
+
+ >>>
+ Copyright (c) 2006-2007:: Byte <byte AT mail DOT kna DOT ru>
+ K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+[enc/cesu_8.c]
+[enc/windows_1253.c]
+[enc/windows_1254.c]
+[enc/windows_1257.c]
+
+ >>>
+ Copyright (c) 2002-2007:: K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+[enc/trans/GB/GB12345%UCS.src]
+[enc/trans/GB/UCS%GB12345.src]
+[enc/trans/GB/GB2312%UCS.src]
+[enc/trans/GB/UCS%GB2312.src]
+
+ These files have this explanatory texts.
+
+ >>>
+ This mapping data was created from files provided by Unicode, Inc.
+ (The Unicode Consortium). The files were used to create a product supporting
+ Unicode, as explicitly permitted in the files' copyright notices.
+ Please note that Unicode, Inc. never made any claims as to fitness of these
+ files for any particular purpose, and has ceased to publish the files many
+ years ago.
+
+[enc/trans/JIS/JISX0201-KANA%UCS.src]
+[enc/trans/JIS/JISX0208\@1990%UCS.src]
+[enc/trans/JIS/JISX0212%UCS.src]
+[enc/trans/JIS/UCS%JISX0201-KANA.src]
+[enc/trans/JIS/UCS%JISX0208@1990.src]
+[enc/trans/JIS/UCS%JISX0212.src]
+
+ These files are copyrighted as the following.
+
+ >>>
+ © 2015 Unicode®, Inc.
+
+ For terms of use, see http://www.unicode.org/terms_of_use.html
+
+[enc/trans/JIS/JISX0213-1%UCS@BMP.src]
+[enc/trans/JIS/JISX0213-1%UCS@SIP.src]
+[enc/trans/JIS/JISX0213-2%UCS@BMP.src]
+[enc/trans/JIS/JISX0213-2%UCS@SIP.src]
+
+ These files are copyrighted as the following.
+
+ >>>
+ Copyright (C) 2001:: earthian@tama.or.jp, All Rights Reserved.
+ Copyright (C) 2001:: I'O, All Rights Reserved.
+ Copyright (C) 2006:: Project X0213, All Rights Reserved.
+ You can use, modify, distribute this table freely.
+
+[enc/trans/JIS/UCS@BMP%JISX0213-1.src]
+[enc/trans/JIS/UCS@BMP%JISX0213-2.src]
+[enc/trans/JIS/UCS@SIP%JISX0213-1.src]
+[enc/trans/JIS/UCS@SIP%JISX0213-2.src]
+
+ These files are copyrighted as the following.
+
+ >>>
+ Copyright (C) 2001:: earthian@tama.or.jp, All Rights Reserved.
+ Copyright (C) 2001:: I'O, All Rights Reserved.
+ You can use, modify, distribute this table freely.
+
+[enc/trans/ucm/glibc-BIG5-2.3.3.ucm]
+[enc/trans/ucm/glibc-BIG5HKSCS-2.3.3.ucm]
+
+ >>>
+ Copyright (C) 2001-2005:: International Business Machines
+ Corporation and others. All Rights Reserved.
+
+[enc/trans/ucm/windows-950-2000.ucm]
+[enc/trans/ucm/windows-950_hkscs-2001.ucm]
+
+ >>>
+ Copyright (C) 2001-2002:: International Business Machines
+ Corporation and others. All Rights Reserved.
+
+
+[configure]
+
+ This file is free software.
+
+ >>>
+ Copyright (C) 1992-1996, 1998-2012:: Free Software Foundation, Inc.
+
+ This configure script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it.
+
+[tool/config.guess]
+[tool/config.sub]
+
+ As long as you distribute these files with the file configure, they
+ are covered under the Ruby's license.
+
+ >>>
+ Copyright 1992-2018:: Free Software Foundation, Inc.
+
+ This file is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>.
+
+ As a special exception to the GNU General Public License, if you
+ distribute this file as part of a program that contains a
+ configuration script generated by Autoconf, you may include it under
+ the same distribution terms that you use for the rest of that
+ program. This Exception is an additional permission under section 7
+ of the GNU General Public License, version 3 ("GPLv3").
+
+[tool/lib/test/*]
+[tool/lib/core_assertions.rb]
+
+ Some of methods on these files are based on MiniTest 4. MiniTest 4 is
+ distributed under the MIT License.
+
+ >>>
+ Copyright (c) Ryan Davis, seattle.rb
+
+ 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.
+
+[parse.c]
+[parse.h]
+
+ These files are licensed under the GPL, but are incorporated into Ruby and
+ redistributed under the terms of the Ruby license, as permitted by the
+ exception to the GPL below.
+
+ >>>
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018:: Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison.
+
+[missing/dtoa.c]
+
+ This file is under these licenses.
+
+ >>>
+ Copyright (c) 1991, 2000, 2001:: by Lucent Technologies.
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose without fee is hereby granted, provided that this entire notice
+ is included in all copies of any software which is or includes a copy
+ or modification of this software and in all copies of the supporting
+ documentation for such software.
+
+ THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY
+ REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
+ OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+
+ >>>
+ Copyright (c) 2004-2008:: David Schultz <das@FreeBSD.ORG>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+[win32/win32.c]
+[include/ruby/win32.h]
+
+ You can apply the Artistic License to these files. (or GPL,
+ alternatively)
+
+ >>>
+ Copyright (c) 1993:: Intergraph Corporation
+
+ You may distribute under the terms of either the GNU General Public
+ License or the Artistic License, as specified in the perl README file.
+
+[missing/mt19937.c]
+
+ This file is under the new-style BSD license.
+
+ >>>
+ A C-program for MT19937, with initialization improved 2002/2/10.::
+ Coded by Takuji Nishimura and Makoto Matsumoto.
+
+ This is a faster version by taking Shawn Cokus's optimization,
+ Matthe Bellew's simplification, Isaku Wada's real version.
+
+ Before using, initialize the state by using init_genrand(seed)
+ or init_by_array(init_key, key_length).
+
+ Copyright (C) 1997 - 2002:: Makoto Matsumoto and Takuji Nishimura,
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. The names of its contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ Any feedback is very welcome.
+ http://www.math.keio.ac.jp/matumoto/emt.html
+ email: matumoto@math.keio.ac.jp
+
+ The Wayback Machine url: http://web.archive.org/web/19990429082237/http://www.math.keio.ac.jp/matumoto/emt.html
+
+[missing/procstat_vm.c]
+
+ This file is under the new-style BSD license.
+
+ >>>
+ Copyright (c) 2007:: Robert N. M. Watson
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ $FreeBSD: head/usr.bin/procstat/procstat_vm.c 261780 2014-02-11 21:57:37Z jhb $
+
+[vsnprintf.c]
+
+ This file is under the {old-style BSD license}[rdoc-label:label-Old-style+BSD+license].
+
+ >>>
+ Copyright (c) 1990, 1993::
+ The Regents of the University of California. All rights reserved.
+
+ This code is derived from software contributed to Berkeley by
+ Chris Torek.
+
+[st.c]
+[strftime.c]
+[include/ruby/st.h]
+[missing/acosh.c]
+[missing/alloca.c]
+[missing/erf.c]
+[missing/hypot.c]
+[missing/lgamma_r.c]
+[missing/memcmp.c]
+[missing/memmove.c]
+[missing/strchr.c]
+[missing/strerror.c]
+[missing/strstr.c]
+[missing/tgamma.c]
+[ext/date/date_strftime.c]
+[ext/digest/sha1/sha1.c]
+[ext/digest/sha1/sha1.h]
+
+ These files are all under public domain.
+
+[missing/crypt.c]
+
+ This file is under the {old-style BSD license}[rdoc-label:label-Old-style+BSD+license].
+
+ >>>
+ Copyright (c) 1989, 1993::
+ The Regents of the University of California. All rights reserved.
+
+ This code is derived from software contributed to Berkeley by
+ Tom Truscott.
+
+[missing/setproctitle.c]
+
+ This file is under the {old-style BSD license}[rdoc-label:label-Old-style+BSD+license].
+
+ >>>
+ Copyright 2003:: Damien Miller
+ Copyright (c) 1983, 1995-1997:: Eric P. Allman
+ Copyright (c) 1988, 1993::
+ The Regents of the University of California. All rights reserved.
+
+[missing/strlcat.c]
+[missing/strlcpy.c]
+
+ These files are under an ISC-style license.
+
+ >>>
+ Copyright (c) 1998, 2015:: Todd C. Miller <Todd.Miller@courtesan.com>
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+[missing/langinfo.c]
+
+ This file is from http://www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c.
+ Ruby uses a modified version. The file contains the following
+ author/copyright notice:
+
+ >>>
+ Markus.Kuhn@cl.cam.ac.uk -- 2002-03-11::
+ Permission to use, copy, modify, and distribute this software
+ for any purpose and without fee is hereby granted. The author
+ disclaims all warranties with regard to this software.
+
+[ext/digest/md5/md5.c]
+[ext/digest/md5/md5.h]
+
+ These files are under the following license. Ruby uses modified
+ versions of them.
+
+ >>>
+ Copyright (C) 1999, 2000:: Aladdin Enterprises. All rights reserved.
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ L. Peter Deutsch
+ ghost@aladdin.com
+
+[ext/digest/rmd160/rmd160.c]
+[ext/digest/rmd160/rmd160.h]
+
+ These files have the following copyright information, and by the
+ author we are allowed to use it under the new-style BSD license.
+
+ >>>
+ AUTHOR:: Antoon Bosselaers, ESAT-COSIC
+ (Arranged for libc by Todd C. Miller)
+ DATE:: 1 March 1996
+
+ Copyright (c):: Katholieke Universiteit Leuven
+ 1996, All Rights Reserved
+
+[ext/digest/sha2/sha2.c]
+[ext/digest/sha2/sha2.h]
+
+ These files are under the new-style BSD license.
+
+ >>>
+ Copyright 2000:: Aaron D. Gifford. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the copyright holder nor the names of contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) AND CONTRIBUTOR(S) ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) OR CONTRIBUTOR(S) BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+[ext/json/generator/generator.c]
+
+ The file contains the following copyright notice.
+
+ >>>
+ Copyright 2001-2004:: Unicode, Inc.
+
+ Disclaimer::
+
+ This source code is provided as is by Unicode, Inc. No claims are
+ made as to fitness for any particular purpose. No warranties of any
+ kind are expressed or implied. The recipient agrees to determine
+ applicability of information provided. If this file has been
+ purchased on magnetic or optical media from Unicode, Inc., the
+ sole remedy for any claim will be exchange of defective media
+ within 90 days of receipt.
+
+ Limitations on Rights to Redistribute This Code::
+
+ Unicode, Inc. hereby grants the right to freely use the information
+ supplied in this file in the creation of products supporting the
+ Unicode Standard, and to make copies of this file in any form
+ for internal or external distribution as long as this notice
+ remains attached.
+
+[ext/nkf/nkf-utf8/config.h]
+[ext/nkf/nkf-utf8/nkf.c]
+[ext/nkf/nkf-utf8/utf8tbl.c]
+
+ These files are under the following license. So to speak, it is
+ copyrighted semi-public-domain software.
+
+ >>>
+ Copyright (C) 1987:: Fujitsu LTD. (Itaru ICHIKAWA)
+
+ Everyone is permitted to do anything on this program
+ including copying, modifying, improving,
+ as long as you don't try to pretend that you wrote it.
+ i.e., the above copyright notice has to appear in all copies.
+ Binary distribution requires original version messages.
+ You don't have to ask before copying, redistribution or publishing.
+ THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
+
+[ext/psych]
+[test/psych]
+
+ The files under these directories are under the following license, except for
+ ext/psych/yaml.
+
+ >>>
+ Copyright 2009:: Aaron Patterson, et al.
+
+ 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.
+
+[ext/psych/yaml]
+
+ The files under this directory are under the following license.
+
+ >>>
+ Copyright (c) 2006:: Kirill Simonov
+
+ 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.
+
+[ext/pty/pty.c]
+
+ >>>
+ C) Copyright 1998:: by Akinori Ito.
+
+ This software may be redistributed freely for this purpose, in full
+ or in part, provided that this entire copyright notice is included
+ on any copies of this software and applications and derivations thereof.
+
+ This software is provided on an "as is" basis, without warranty of any
+ kind, either expressed or implied, as to any matter including, but not
+ limited to warranty of fitness of purpose, or merchantability, or
+ results obtained from use of this software.
+
+[ext/socket/addrinfo.h]
+[ext/socket/getaddrinfo.c]
+[ext/socket/getnameinfo.c]
+
+ These files are under the new-style BSD license.
+
+ >>>
+ Copyright (C) 1995, 1996, 1997, 1998, and 1999:: WIDE Project.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the project nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+[ext/win32ole/win32ole.c]
+
+ You can apply the Artistic License to this file. (or GPL,
+ alternatively)
+
+ >>>
+ (c) 1995:: Microsoft Corporation. All rights reserved.
+ Developed by ActiveWare Internet Corp., http://www.ActiveWare.com
+
+ Other modifications Copyright (c) 1997, 1998:: by Gurusamy Sarathy
+ <gsar@umich.edu> and Jan Dubois <jan.dubois@ibm.net>
+
+ You may distribute under the terms of either the GNU General Public
+ License or the Artistic License, as specified in the README file
+ of the Perl distribution.
+
+ The Wayback Machine url: http://web.archive.org/web/19970607104352/http://www.activeware.com:80/
+
+[lib/rdoc/generator/template/darkfish/css/fonts.css]
+
+ This file is licensed under the {SIL Open Font License}[http://scripts.sil.org/OFL].
+
+[spec/mspec]
+[spec/ruby]
+
+ The files under these directories are under the following license.
+
+ >>>
+ Copyright (c) 2008:: Engine Yard, Inc. All rights reserved.
+
+ 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.
+
+[lib/rubygems.rb]
+[lib/rubygems]
+[test/rubygems]
+
+ RubyGems is under the following license.
+
+ >>>
+ RubyGems is copyrighted free software by Chad Fowler, Rich Kilmer, Jim
+ Weirich and others. You can redistribute it and/or modify it under
+ either the terms of the {MIT license}[rdoc-label:label-MIT+License], or the conditions
+ below:
+
+ 1. You may make and give away verbatim copies of the source form of the
+ software without restriction, provided that you duplicate all of the
+ original copyright notices and associated disclaimers.
+
+ 2. You may modify your copy of the software in any way, provided that
+ you do at least ONE of the following:
+
+ a. place your modifications in the Public Domain or otherwise
+ make them Freely Available, such as by posting said
+ modifications to Usenet or an equivalent medium, or by allowing
+ the author to include your modifications in the software.
+
+ b. use the modified software only within your corporation or
+ organization.
+
+ c. give non-standard executables non-standard names, with
+ instructions on where to get the original software distribution.
+
+ d. make other distribution arrangements with the author.
+
+ 3. You may distribute the software in object code or executable
+ form, provided that you do at least ONE of the following:
+
+ a. distribute the executables and library files of the software,
+ together with instructions (in the manual page or equivalent)
+ on where to get the original distribution.
+
+ b. accompany the distribution with the machine-readable source of
+ the software.
+
+ c. give non-standard executables non-standard names, with
+ instructions on where to get the original software distribution.
+
+ d. make other distribution arrangements with the author.
+
+ 4. You may modify and include the part of the software into any other
+ software (possibly commercial).
+
+ 5. The scripts and library files supplied as input to or produced as
+ output from the software do not automatically fall under the
+ copyright of the software, but belong to whomever generated them,
+ and may be sold commercially, and may be aggregated with this
+ software.
+
+ 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE.
+
+[lib/bundler]
+[lib/bundler.rb]
+[spec/bundler]
+
+ Bundler is under the following license.
+
+ >>>
+ Portions copyright (c) 2010:: Andre Arko
+ Portions copyright (c) 2009:: Engine Yard
+
+ {MIT License}[rdoc-label:label-MIT+License]
+
+[lib/bundler/vendor/thor]
+
+ Thor is under the following license.
+
+ >>>
+ Copyright (c) 2008 Yehuda Katz, Eric Hodel, et al.
+
+ {MIT License}[rdoc-label:label-MIT+License]
+
+[lib/rubygems/resolver/molinillo]
+
+ molinillo is under the following license.
+
+ >>>
+ Copyright (c) 2014 Samuel E. Giddins segiddins@segiddins.me
+
+ {MIT License}[rdoc-label:label-MIT+License]
+
+[lib/bundler/vendor/pub_grub]
+
+ pub_grub is under the following license.
+
+ >>>
+ Copyright (c) 2018 John Hawthorn
+
+ {MIT License}[rdoc-label:label-MIT+License]
+
+[lib/bundler/vendor/connection_pool]
+
+ connection_pool is under the following license.
+
+ >>>
+ Copyright (c) 2011 Mike Perham
+
+ {MIT License}[rdoc-label:label-MIT+License]
+
+[lib/bundler/vendor/net-http-persistent]
+
+ net-http-persistent is under the following license.
+
+ >>>
+ Copyright (c) Eric Hodel, Aaron Patterson
+
+ {MIT License}[rdoc-label:label-MIT+License]
+
+[lib/did_you_mean]
+[lib/did_you_mean.rb]
+[test/did_you_mean]
+
+ did_you_mean is under the following license.
+
+ >>>
+ Copyright (c) 2014-2016 Yuki Nishijima
+
+ {MIT License}[rdoc-label:label-MIT+License]
+
+[lib/error_highlight]
+[lib/error_highlight.rb]
+[test/error_highlight]
+
+ error_highlight is under the following license.
+
+ >>>
+ Copyright (c) 2021 Yusuke Endoh
+
+ {MIT License}[rdoc-label:label-MIT+License]
+
+[benchmark/so_ackermann.rb]
+[benchmark/so_array.rb]
+[benchmark/so_binary_trees.rb]
+[benchmark/so_concatenate.rb]
+[benchmark/so_count_words.yml]
+[benchmark/so_exception.rb]
+[benchmark/so_fannkuch.rb]
+[benchmark/so_fasta.rb]
+[benchmark/so_k_nucleotide.yml]
+[benchmark/so_lists.rb]
+[benchmark/so_mandelbrot.rb]
+[benchmark/so_matrix.rb]
+[benchmark/so_meteor_contest.rb]
+[benchmark/so_nbody.rb]
+[benchmark/so_nested_loop.rb]
+[benchmark/so_nsieve.rb]
+[benchmark/so_nsieve_bits.rb]
+[benchmark/so_object.rb]
+[benchmark/so_partial_sums.rb]
+[benchmark/so_pidigits.rb]
+[benchmark/so_random.rb]
+[benchmark/so_reverse_complement.yml]
+[benchmark/so_sieve.rb]
+[benchmark/so_spectralnorm.rb]
+
+ These files are very old copy of then-called "The Great Computer Language
+ Shootout". LEGAL SITUATION OF THESE FILES ARE UNCLEAR because the original
+ site has been lost. Upstream diverged to delete several benchmarks listed
+ above.
+
+== MIT License
+>>>
+ 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.
+
+== Old-style BSD license
+>>>
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ IMPORTANT NOTE::
+
+ From ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
+ paragraph 3 above is now null and void.
diff --git a/MANIFEST b/MANIFEST
deleted file mode 100644
index 67124920ff..0000000000
--- a/MANIFEST
+++ /dev/null
@@ -1,250 +0,0 @@
-COPYING
-COPYING.LIB
-ChangeLog
-MANIFEST
-Makefile.in
-README
-README.jp
-README.EXT
-README.EXT.jp
-ToDo
-array.c
-bignum.c
-class.c
-compar.c
-configure
-configure.in
-config.guess
-config.sub
-defines.h
-dir.c
-dln.c
-dln.h
-dmyext.c
-enum.c
-env.h
-error.c
-eval.c
-file.c
-gc.c
-hash.c
-inits.c
-install-sh
-instruby.rb
-intern.h
-io.c
-keywords
-lex.c
-main.c
-marshal.c
-math.c
-mkconfig.rb
-node.h
-numeric.c
-object.c
-pack.c
-parse.c
-parse.y
-prec.c
-process.c
-random.c
-range.c
-re.c
-re.h
-regex.c
-regex.h
-ruby.1
-ruby.c
-ruby.h
-rubyio.h
-rubysig.h
-rubytest.rb
-signal.c
-sprintf.c
-st.c
-st.h
-string.c
-struct.c
-time.c
-util.h
-util.c
-variable.c
-version.c
-version.h
-djgpp/README.djgpp
-djgpp/config.hin
-djgpp/config.sed
-djgpp/configure.bat
-djgpp/mkver.sed
-cygwin/GNUmakefile.in
-ext/Setup
-ext/Setup.dj
-ext/Setup.emx
-ext/Setup.x68
-ext/aix_mksym.rb
-ext/configsub.rb
-ext/extmk.rb.in
-lib/English.rb
-lib/Env.rb
-lib/README
-lib/base64.rb
-lib/cgi.rb
-lib/cgi/session.rb
-lib/cgi-lib.rb
-lib/complex.rb
-lib/date.rb
-lib/date2.rb
-lib/debug.rb
-lib/delegate.rb
-lib/e2mmap.rb
-lib/eregex.rb
-lib/find.rb
-lib/final.rb
-lib/finalize.rb
-lib/ftplib.rb
-lib/ftools.rb
-lib/getopts.rb
-lib/getoptlong.rb
-lib/importenv.rb
-lib/irb/completion.rb
-lib/irb/frame.rb
-lib/irb/input-method.rb
-lib/irb/irb.rb
-lib/irb/loader.rb
-lib/irb/main.rb
-lib/irb/multi-irb.rb
-lib/irb/ruby-lex.rb
-lib/irb/ruby-token.rb
-lib/irb/slex.rb
-lib/irb/version.rb
-lib/irb/workspace-binding-2.rb
-lib/irb/workspace-binding.rb
-lib/irb/xmp.rb
-lib/jcode.rb
-lib/mailread.rb
-lib/mathn.rb
-lib/matrix.rb
-lib/mkmf.rb
-lib/monitor.rb
-lib/mutex_m.rb
-lib/net/ftp.rb
-lib/net/http.rb
-lib/net/pop.rb
-lib/net/protocol.rb
-lib/net/smtp.rb
-lib/net/telnet.rb
-lib/observer.rb
-lib/open3.rb
-lib/ostruct.rb
-lib/parsearg.rb
-lib/parsedate.rb
-lib/ping.rb
-lib/profile.rb
-lib/pstore.rb
-lib/rational.rb
-lib/readbytes.rb
-lib/shellwords.rb
-lib/singleton.rb
-lib/sync.rb
-lib/telnet.rb
-lib/tempfile.rb
-lib/thread.rb
-lib/thwait.rb
-lib/timeout.rb
-lib/tracer.rb
-lib/weakref.rb
-misc/README
-misc/inf-ruby.el
-misc/ruby-mode.el
-misc/rubydb2x.el
-misc/rubydb3x.el
-missing/alloca.c
-missing/crypt.c
-missing/dir.h
-missing/dup2.c
-missing/file.h
-missing/finite.c
-missing/flock.c
-missing/isinf.c
-missing/isnan.c
-missing/memcmp.c
-missing/memmove.c
-missing/mkdir.c
-missing/os2.c
-missing/strcasecmp.c
-missing/strncasecmp.c
-missing/strchr.c
-missing/strdup.c
-missing/strerror.c
-missing/strftime.c
-missing/strstr.c
-missing/strtod.c
-missing/strtol.c
-missing/strtoul.c
-missing/vsnprintf.c
-missing/x68.c
-sample/README
-sample/biorhythm.rb
-sample/cal.rb
-sample/cbreak.rb
-sample/clnt.rb
-sample/dbmtest.rb
-sample/dir.rb
-sample/dualstack-fetch.rb
-sample/dualstack-httpd.rb
-sample/eval.rb
-sample/export.rb
-sample/exyacc.rb
-sample/fact.rb
-sample/fib.awk
-sample/fib.pl
-sample/fib.py
-sample/fib.rb
-sample/fib.scm
-sample/freq.rb
-sample/from.rb
-sample/fullpath.rb
-sample/getopts.test
-sample/goodfriday.rb
-sample/irb.rb
-sample/less.rb
-sample/list.rb
-sample/list2.rb
-sample/list3.rb
-sample/mine.rb
-sample/mkproto.rb
-sample/mpart.rb
-sample/mrshtest.rb
-sample/observ.rb
-sample/occur.pl
-sample/occur.rb
-sample/occur2.rb
-sample/philos.rb
-sample/pi.rb
-sample/rename.rb
-sample/rcs.awk
-sample/rcs.dat
-sample/rcs.rb
-sample/regx.rb
-sample/sieve.rb
-sample/svr.rb
-sample/test.rb
-sample/time.rb
-sample/trojan.rb
-sample/tsvr.rb
-sample/uumerge.rb
-win32/Makefile.sub
-win32/README.win32
-win32/config.h.in
-win32/config.status.in
-win32/configure.bat
-win32/mkexports.rb
-win32/resource.rb
-win32/setup.mak
-win32/win32.c
-win32/win32.h
-win32/winmain.c
-x68/fconvert.c
-x68/select.c
-x68/_dtos18.c
-x68/_round.c
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index a2901c2bdd..0000000000
--- a/Makefile.in
+++ /dev/null
@@ -1,276 +0,0 @@
-SHELL = /bin/sh
-
-#### Start of system configuration section. ####
-
-srcdir = @srcdir@
-VPATH = $(srcdir):$(srcdir)/missing
-
-CC = @CC@
-YACC = @YACC@
-PURIFY =
-AUTOCONF = autoconf
-@SET_MAKE@
-
-prefix = @prefix@
-CFLAGS = @CFLAGS@
-CPPFLAGS = -I. -I$(srcdir) -I@includedir@
-LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
-XLDFLAGS = @XLDFLAGS@
-EXTLIBS =
-LIBS = @LIBS@ $(EXTLIBS)
-MISSING = @LIBOBJS@ @ALLOCA@
-LDSHARED = @LIBRUBY_LDSHARED@
-DLDFLAGS = @LIBRUBY_DLDFLAGS@
-SOLIBS = @SOLIBS@
-
-RUBY_INSTALL_NAME=@RUBY_INSTALL_NAME@
-RUBY_SO_NAME=@RUBY_SO_NAME@
-EXEEXT = @EXEEXT@
-PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
-
-#### End of system configuration section. ####
-
-MAJOR= @MAJOR@
-MINOR= @MINOR@
-TEENY= @TEENY@
-
-LIBRUBY_A = @LIBRUBY_A@
-LIBRUBY_SO = @LIBRUBY_SO@
-LIBRUBY_ALIASES= @LIBRUBY_ALIASES@
-LIBRUBY = @LIBRUBY@
-LIBRUBYARG = @LIBRUBYARG@
-
-EXTOBJS =
-
-MAINOBJ = main.@OBJEXT@
-
-OBJS = array.@OBJEXT@ \
- bignum.@OBJEXT@ \
- class.@OBJEXT@ \
- compar.@OBJEXT@ \
- dir.@OBJEXT@ \
- dln.@OBJEXT@ \
- enum.@OBJEXT@ \
- error.@OBJEXT@ \
- eval.@OBJEXT@ \
- file.@OBJEXT@ \
- gc.@OBJEXT@ \
- hash.@OBJEXT@ \
- inits.@OBJEXT@ \
- io.@OBJEXT@ \
- marshal.@OBJEXT@ \
- math.@OBJEXT@ \
- numeric.@OBJEXT@ \
- object.@OBJEXT@ \
- pack.@OBJEXT@ \
- parse.@OBJEXT@ \
- process.@OBJEXT@ \
- prec.@OBJEXT@ \
- random.@OBJEXT@ \
- range.@OBJEXT@ \
- re.@OBJEXT@ \
- regex.@OBJEXT@ \
- ruby.@OBJEXT@ \
- signal.@OBJEXT@ \
- sprintf.@OBJEXT@ \
- st.@OBJEXT@ \
- string.@OBJEXT@ \
- struct.@OBJEXT@ \
- time.@OBJEXT@ \
- util.@OBJEXT@ \
- variable.@OBJEXT@ \
- version.@OBJEXT@ \
- $(MISSING)
-
-all: miniruby$(EXEEXT) @PREP@ rbconfig.rb $(LIBRUBY)
- @@MINIRUBY@ -Xext extmk.rb @EXTSTATIC@
-
-miniruby$(EXEEXT): config.status $(LIBRUBY_A) $(MAINOBJ) dmyext.@OBJEXT@
- @rm -f $@
- $(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) dmyext.@OBJEXT@ $(LIBRUBY_A) $(LIBS) -o $@
-
-$(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(EXTOBJS)
- @rm -f $@
- $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@
-
-$(LIBRUBY_A): $(OBJS) dmyext.@OBJEXT@
- @AR@ rcu $@ $(OBJS) dmyext.@OBJEXT@
- @-@RANLIB@ $@ 2> /dev/null || true
-
-$(LIBRUBY_SO): $(OBJS) dmyext.@OBJEXT@
- $(LDSHARED) $(DLDFLAGS) $(OBJS) dmyext.@OBJEXT@ $(SOLIBS) -o $@
- @-@MINIRUBY@ -e 'ARGV.each{|link| File.delete link if File.exist? link; \
- File.symlink "$(LIBRUBY_SO)", link}' \
- $(LIBRUBY_ALIASES) || true
-
-install: rbconfig.rb
- @MINIRUBY@ $(srcdir)/instruby.rb $(DESTDIR)
-
-clean:; @rm -f $(OBJS) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY_ALIASES) $(MAINOBJ) rbconfig.rb
- @rm -f ext/extinit.c ext/extinit.@OBJEXT@ dmyext.@OBJEXT@
- @-@MINIRUBY@ -Xext extmk.rb clean 2> /dev/null || true
- @rm -f $(PROGRAM) miniruby$(EXEEXT)
-
-distclean: clean
- @rm -f Makefile ext/extmk.rb config.h
- @rm -f ext/config.cache config.cache config.log config.status
- @rm -f *~ core *.core gmon.out y.tab.c y.output ruby.imp
-
-realclean: distclean
- @rm -f parse.c
- @rm -f lex.c
-
-test: miniruby$(EXEEXT)
- @./miniruby$(EXEEXT) $(srcdir)/rubytest.rb
-
-rbconfig.rb: miniruby$(EXEEXT)
- @@MINIRUBY@ $(srcdir)/mkconfig.rb rbconfig.rb
-
-fake.rb: miniruby$(EXEEXT)
- @echo ' \
- class Object; \
- remove_const :RUBY_PLATFORM; \
- RUBY_PLATFORM = "@arch@"; \
- if defined? PLATFORM; \
- remove_const :PLATFORM; \
- PLATFORM = "@arch@"; \
- end; \
- CROSS_COMPILING = true; \
- end \
- ' > $@
-
-config.status: $(srcdir)/configure
- $(SHELL) ./config.status --recheck
-
-$(srcdir)/configure: $(srcdir)/configure.in
- cd $(srcdir) && $(AUTOCONF)
-
-.c.@OBJEXT@:
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
-
-lex.c: keywords
- gperf -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$$ $(srcdir)/keywords > lex.c
-
-parse.c: parse.y
- $(YACC) $<
- mv -f y.tab.c parse.c
-
-parse.@OBJEXT@: parse.c
-
-alloca.@OBJEXT@: $(srcdir)/missing/alloca.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/alloca.c
-
-crypt.@OBJEXT@: $(srcdir)/missing/crypt.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/crypt.c
-
-dup2.@OBJEXT@: $(srcdir)/missing/dup2.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/dup2.c
-
-finite.@OBJEXT@: $(srcdir)/missing/finite.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/finite.c
-
-flock.@OBJEXT@: $(srcdir)/missing/flock.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/flock.c
-
-isinf.@OBJEXT@: $(srcdir)/missing/isinf.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/isinf.c
-
-isnan.@OBJEXT@: $(srcdir)/missing/isnan.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/isnan.c
-
-fnmatch.@OBJEXT@: $(srcdir)/missing/fnmatch.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/fnmatch.c
-
-memcmp.@OBJEXT@: $(srcdir)/missing/memcmp.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/memcmp.c
-
-memmove.@OBJEXT@: $(srcdir)/missing/memmove.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/memmove.c
-
-mkdir.@OBJEXT@: $(srcdir)/missing/mkdir.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/mkdir.c
-
-vsnprintf.@OBJEXT@: $(srcdir)/missing/vsnprintf.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/vsnprintf.c
-
-strcasecmp.@OBJEXT@: $(srcdir)/missing/strcasecmp.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strcasecmp.c
-
-strncasecmp.@OBJEXT@: $(srcdir)/missing/strncasecmp.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strncasecmp.c
-
-strchr.@OBJEXT@: $(srcdir)/missing/strchr.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strchr.c
-
-strerror.@OBJEXT@: $(srcdir)/missing/strerror.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strerror.c
-
-strftime.@OBJEXT@: $(srcdir)/missing/strftime.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strftime.c
-
-strstr.@OBJEXT@: $(srcdir)/missing/strstr.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strstr.c
-
-strtod.@OBJEXT@: $(srcdir)/missing/strtod.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strtod.c
-
-strtol.@OBJEXT@: $(srcdir)/missing/strtol.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strtol.c
-
-strtoul.@OBJEXT@: $(srcdir)/missing/strtoul.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strtoul.c
-
-x68.@OBJEXT@: $(srcdir)/missing/x68.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/x68.c
-
-os2.@OBJEXT@: $(srcdir)/missing/os2.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/os2.c
-
-dl_os2.@OBJEXT@: $(srcdir)/missing/dl_os2.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/dl_os2.c
-
-win32.@OBJEXT@: $(srcdir)/win32/win32.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/win32/win32.c
-
-# Prevent GNU make v3 from overflowing arg limit on SysV.
-.NOEXPORT:
-###
-parse.@OBJEXT@: parse.y ruby.h config.h defines.h intern.h env.h node.h st.h regex.h util.h lex.c
-###
-array.@OBJEXT@: array.c ruby.h config.h defines.h intern.h
-bignum.@OBJEXT@: bignum.c ruby.h config.h defines.h intern.h
-class.@OBJEXT@: class.c ruby.h config.h defines.h intern.h node.h st.h
-compar.@OBJEXT@: compar.c ruby.h config.h defines.h intern.h
-dir.@OBJEXT@: dir.c ruby.h config.h defines.h intern.h
-dln.@OBJEXT@: dln.c config.h defines.h dln.h
-dmyext.@OBJEXT@: dmyext.c
-enum.@OBJEXT@: enum.c ruby.h config.h defines.h intern.h
-error.@OBJEXT@: error.c ruby.h config.h defines.h intern.h env.h
-eval.@OBJEXT@: eval.c ruby.h config.h defines.h intern.h node.h env.h rubysig.h st.h dln.h
-file.@OBJEXT@: file.c ruby.h config.h defines.h intern.h rubyio.h rubysig.h
-gc.@OBJEXT@: gc.c ruby.h config.h defines.h intern.h rubysig.h st.h node.h env.h re.h regex.h
-hash.@OBJEXT@: hash.c ruby.h config.h defines.h intern.h st.h rubysig.h util.h
-inits.@OBJEXT@: inits.c ruby.h config.h defines.h intern.h
-io.@OBJEXT@: io.c ruby.h config.h defines.h intern.h rubyio.h rubysig.h env.h
-main.@OBJEXT@: main.c ruby.h config.h defines.h intern.h
-marshal.@OBJEXT@: marshal.c ruby.h config.h defines.h intern.h rubyio.h st.h
-prec.@OBJEXT@: prec.c ruby.h config.h defines.h intern.h
-math.@OBJEXT@: math.c ruby.h config.h defines.h intern.h
-numeric.@OBJEXT@: numeric.c ruby.h config.h defines.h intern.h
-object.@OBJEXT@: object.c ruby.h config.h defines.h intern.h st.h
-pack.@OBJEXT@: pack.c ruby.h config.h defines.h intern.h
-process.@OBJEXT@: process.c ruby.h config.h defines.h intern.h rubysig.h st.h
-random.@OBJEXT@: random.c ruby.h config.h defines.h intern.h
-range.@OBJEXT@: range.c ruby.h config.h defines.h intern.h
-re.@OBJEXT@: re.c ruby.h config.h defines.h intern.h re.h regex.h
-regex.@OBJEXT@: regex.c config.h regex.h util.h
-ruby.@OBJEXT@: ruby.c ruby.h config.h defines.h intern.h dln.h util.h
-signal.@OBJEXT@: signal.c ruby.h config.h defines.h intern.h rubysig.h
-sprintf.@OBJEXT@: sprintf.c ruby.h config.h defines.h intern.h
-st.@OBJEXT@: st.c config.h st.h
-string.@OBJEXT@: string.c ruby.h config.h defines.h intern.h re.h regex.h
-struct.@OBJEXT@: struct.c ruby.h config.h defines.h intern.h
-time.@OBJEXT@: time.c ruby.h config.h defines.h intern.h
-util.@OBJEXT@: util.c ruby.h config.h defines.h intern.h util.h
-variable.@OBJEXT@: variable.c ruby.h config.h defines.h intern.h env.h node.h st.h
-version.@OBJEXT@: version.c ruby.h config.h defines.h intern.h version.h
diff --git a/NEWS.md b/NEWS.md
new file mode 100644
index 0000000000..f6c3c6fc97
--- /dev/null
+++ b/NEWS.md
@@ -0,0 +1,820 @@
+# NEWS for Ruby 3.2.0
+
+This document is a list of user-visible feature changes
+since the **3.1.0** release, except for bug fixes.
+
+Note that each entry is kept to a minimum, see links for details.
+
+## Language changes
+
+* Anonymous rest and keyword rest arguments can now be passed as
+ arguments, instead of just used in method parameters.
+ [[Feature #18351]]
+
+ ```ruby
+ def foo(*)
+ bar(*)
+ end
+ def baz(**)
+ quux(**)
+ end
+ ```
+
+* A proc that accepts a single positional argument and keywords will
+ no longer autosplat. [[Bug #18633]]
+
+ ```ruby
+ proc{|a, **k| a}.call([1, 2])
+ # Ruby 3.1 and before
+ # => 1
+ # Ruby 3.2 and after
+ # => [1, 2]
+ ```
+
+* Constant assignment evaluation order for constants set on explicit
+ objects has been made consistent with single attribute assignment
+ evaluation order. With this code:
+
+ ```ruby
+ foo::BAR = baz
+ ```
+
+ `foo` is now called before `baz`. Similarly, for multiple assignments
+ to constants, left-to-right evaluation order is used. With this
+ code:
+
+ ```ruby
+ foo1::BAR1, foo2::BAR2 = baz1, baz2
+ ```
+
+ The following evaluation order is now used:
+
+ 1. `foo1`
+ 2. `foo2`
+ 3. `baz1`
+ 4. `baz2`
+
+ [[Bug #15928]]
+
+* "Find pattern" is no longer experimental.
+ [[Feature #18585]]
+
+* Methods taking a rest parameter (like `*args`) and wishing to delegate keyword
+ arguments through `foo(*args)` must now be marked with `ruby2_keywords`
+ (if not already the case). In other words, all methods wishing to delegate
+ keyword arguments through `*args` must now be marked with `ruby2_keywords`,
+ with no exception. This will make it easier to transition to other ways of
+ delegation once a library can require Ruby 3+. Previously, the `ruby2_keywords`
+ flag was kept if the receiving method took `*args`, but this was a bug and an
+ inconsistency. A good technique to find the potentially-missing `ruby2_keywords`
+ is to run the test suite, for where it fails find the last method which must
+ receive keyword arguments, use `puts nil, caller, nil` there, and check each
+ method/block on the call chain which must delegate keywords is correctly marked
+ as `ruby2_keywords`. [[Bug #18625]] [[Bug #16466]]
+
+ ```ruby
+ def target(**kw)
+ end
+
+ # Accidentally worked without ruby2_keywords in Ruby 2.7-3.1, ruby2_keywords
+ # needed in 3.2+. Just like (*args, **kwargs) or (...) would be needed on
+ # both #foo and #bar when migrating away from ruby2_keywords.
+ ruby2_keywords def bar(*args)
+ target(*args)
+ end
+
+ ruby2_keywords def foo(*args)
+ bar(*args)
+ end
+
+ foo(k: 1)
+ ```
+
+## Core classes updates
+
+Note: We're only listing outstanding class updates.
+
+* Fiber
+
+ * Introduce Fiber.[] and Fiber.[]= for inheritable fiber storage.
+ Introduce Fiber#storage and Fiber#storage= (experimental) for
+ getting and resetting the current storage. Introduce
+ `Fiber.new(storage:)` for setting the storage when creating a
+ fiber. [[Feature #19078]]
+
+ Existing Thread and Fiber local variables can be tricky to use.
+ Thread-local variables are shared between all fibers, making it
+ hard to isolate, while Fiber-local variables can be hard to
+ share. It is often desirable to define unit of execution
+ ("execution context") such that some state is shared between all
+ fibers and threads created in that context. This is what Fiber
+ storage provides.
+
+ ```ruby
+ def log(message)
+ puts "#{Fiber[:request_id]}: #{message}"
+ end
+
+ def handle_requests
+ while request = read_request
+ Fiber.schedule do
+ Fiber[:request_id] = SecureRandom.uuid
+
+ request.messages.each do |message|
+ Fiber.schedule do
+ log("Handling #{message}") # Log includes inherited request_id.
+ end
+ end
+ end
+ end
+ end
+ ```
+
+ You should generally consider Fiber storage for any state which
+ you want to be shared implicitly between all fibers and threads
+ created in a given context, e.g. a connection pool, a request
+ id, a logger level, environment variables, configuration, etc.
+
+* Fiber::Scheduler
+
+ * Introduce `Fiber::Scheduler#io_select` for non-blocking IO.select.
+ [[Feature #19060]]
+
+* IO
+
+ * Introduce IO#timeout= and IO#timeout which can cause
+ IO::TimeoutError to be raised if a blocking operation exceeds the
+ specified timeout. [[Feature #18630]]
+
+ ```ruby
+ STDIN.timeout = 1
+ STDIN.read # => Blocking operation timed out! (IO::TimeoutError)
+ ```
+
+ * Introduce `IO.new(..., path:)` and promote `File#path` to `IO#path`.
+ [[Feature #19036]]
+
+* Class
+
+ * Class#attached_object, which returns the object for which
+ the receiver is the singleton class. Raises TypeError if the
+ receiver is not a singleton class.
+ [[Feature #12084]]
+
+ ```ruby
+ class Foo; end
+
+ Foo.singleton_class.attached_object #=> Foo
+ Foo.new.singleton_class.attached_object #=> #<Foo:0x000000010491a370>
+ Foo.attached_object #=> TypeError: `Foo' is not a singleton class
+ nil.singleton_class.attached_object #=> TypeError: `NilClass' is not a singleton class
+ ```
+
+* Data
+
+ * New core class to represent simple immutable value object. The class is
+ similar to Struct and partially shares an implementation, but has more
+ lean and strict API. [[Feature #16122]]
+
+ ```ruby
+ Measure = Data.define(:amount, :unit)
+ distance = Measure.new(100, 'km') #=> #<data Measure amount=100, unit="km">
+ weight = Measure.new(amount: 50, unit: 'kg') #=> #<data Measure amount=50, unit="kg">
+ weight.with(amount: 40) #=> #<data Measure amount=40, unit="kg">
+ weight.amount #=> 50
+ weight.amount = 40 #=> NoMethodError: undefined method `amount='
+ ```
+
+* Encoding
+
+ * Encoding#replicate has been deprecated and will be removed in 3.3. [[Feature #18949]]
+ * The dummy `Encoding::UTF_16` and `Encoding::UTF_32` encodings no longer
+ try to dynamically guess the endian based on a byte order mark.
+ Use `Encoding::UTF_16BE`/`UTF_16LE` and `Encoding::UTF_32BE`/`UTF_32LE` instead.
+ This change speeds up getting the encoding of a String. [[Feature #18949]]
+ * Limit maximum encoding set size by 256.
+ If exceeding maximum size, `EncodingError` will be raised. [[Feature #18949]]
+
+* Enumerator
+
+ * Enumerator.product has been added. Enumerator::Product is the implementation. [[Feature #18685]]
+
+* Exception
+
+ * Exception#detailed_message has been added.
+ The default error printer calls this method on the Exception object
+ instead of #message. [[Feature #18564]]
+
+* Hash
+
+ * Hash#shift now always returns nil if the hash is
+ empty, instead of returning the default value or
+ calling the default proc. [[Bug #16908]]
+
+* Integer
+
+ * Integer#ceildiv has been added. [[Feature #18809]]
+
+* Kernel
+
+ * Kernel#binding raises RuntimeError if called from a non-Ruby frame
+ (such as a method defined in C). [[Bug #18487]]
+
+* MatchData
+
+ * MatchData#byteoffset has been added. [[Feature #13110]]
+ * MatchData#deconstruct has been added. [[Feature #18821]]
+ * MatchData#deconstruct_keys has been added. [[Feature #18821]]
+
+* Module
+
+ * Module.used_refinements has been added. [[Feature #14332]]
+ * Module#refinements has been added. [[Feature #12737]]
+ * Module#const_added has been added. [[Feature #17881]]
+ * Module#undefined_instance_methods has been added. [[Feature #12655]]
+
+* Proc
+
+ * Proc#dup returns an instance of subclass. [[Bug #17545]]
+ * Proc#parameters now accepts lambda keyword. [[Feature #15357]]
+
+* Process
+ * Added `RLIMIT_NPTS` constant to FreeBSD platform
+
+* Regexp
+
+ * The cache-based optimization is introduced.
+ Many (but not all) Regexp matching is now in linear time, which
+ will prevent regular expression denial of service (ReDoS)
+ vulnerability. [[Feature #19104]]
+
+ * Regexp.linear_time? is introduced. [[Feature #19194]]
+
+ * Regexp.new now supports passing the regexp flags not only as an Integer,
+ but also as a String. Unknown flags raise ArgumentError.
+ Otherwise, anything other than `true`, `false`, `nil` or Integer will be warned.
+ [[Feature #18788]]
+
+ * Regexp.timeout= has been added. Also, Regexp.new new supports timeout keyword.
+ See [[Feature #17837]]
+
+* Refinement
+
+ * Refinement#refined_class has been added. [[Feature #12737]]
+
+* RubyVM::AbstractSyntaxTree
+
+ * Add `error_tolerant` option for `parse`, `parse_file` and `of`. [[Feature #19013]]
+ With this option
+
+ 1. SyntaxError is suppressed
+ 2. AST is returned for invalid input
+ 3. `end` is complemented when a parser reaches to the end of input but `end` is insufficient
+ 4. `end` is treated as keyword based on indent
+
+ ```ruby
+ # Without error_tolerant option
+ root = RubyVM::AbstractSyntaxTree.parse(<<~RUBY)
+ def m
+ a = 10
+ if
+ end
+ RUBY
+ # => <internal:ast>:33:in `parse': syntax error, unexpected `end' (SyntaxError)
+
+ # With error_tolerant option
+ root = RubyVM::AbstractSyntaxTree.parse(<<~RUBY, error_tolerant: true)
+ def m
+ a = 10
+ if
+ end
+ RUBY
+ p root # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-4:3>
+
+ # `end` is treated as keyword based on indent
+ root = RubyVM::AbstractSyntaxTree.parse(<<~RUBY, error_tolerant: true)
+ module Z
+ class Foo
+ foo.
+ end
+
+ def bar
+ end
+ end
+ RUBY
+ p root.children[-1].children[-1].children[-1].children[-2..-1]
+ # => [#<RubyVM::AbstractSyntaxTree::Node:CLASS@2:2-4:5>, #<RubyVM::AbstractSyntaxTree::Node:DEFN@6:2-7:5>]
+ ```
+
+ * Add `keep_tokens` option for `parse`, `parse_file` and `of`. Add `#tokens` and `#all_tokens`
+ for RubyVM::AbstractSyntaxTree::Node [[Feature #19070]]
+
+ ```ruby
+ root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true)
+ root.tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
+ root.tokens.map{_1[2]}.join # => "x = 1 + 2"
+ ```
+
+* Set
+
+ * Set is now available as a built-in class without the need for `require "set"`. [[Feature #16989]]
+ It is currently autoloaded via the Set constant or a call to Enumerable#to_set.
+
+* String
+
+ * String#byteindex and String#byterindex have been added. [[Feature #13110]]
+ * Update Unicode to Version 15.0.0 and Emoji Version 15.0. [[Feature #18639]]
+ (also applies to Regexp)
+ * String#bytesplice has been added. [[Feature #18598]]
+ * String#dedup has been added as an alias to String#-@. [[Feature #18595]]
+
+* Struct
+
+ * A Struct class can also be initialized with keyword arguments
+ without `keyword_init: true` on Struct.new [[Feature #16806]]
+
+ ```ruby
+ Post = Struct.new(:id, :name)
+ Post.new(1, "hello") #=> #<struct Post id=1, name="hello">
+ # From Ruby 3.2, the following code also works without keyword_init: true.
+ Post.new(id: 1, name: "hello") #=> #<struct Post id=1, name="hello">
+ ```
+
+* Thread
+
+ * Thread.each_caller_location is added. [[Feature #16663]]
+
+* Thread::Queue
+
+ * Thread::Queue#pop(timeout: sec) is added. [[Feature #18774]]
+
+* Thread::SizedQueue
+
+ * Thread::SizedQueue#pop(timeout: sec) is added. [[Feature #18774]]
+ * Thread::SizedQueue#push(timeout: sec) is added. [[Feature #18944]]
+
+* Time
+
+ * Time#deconstruct_keys is added, allowing to use Time instances
+ in pattern-matching expressions [[Feature #19071]]
+
+ * Time.new now can parse a string like generated by Time#inspect
+ and return a Time instance based on the given argument.
+ [[Feature #18033]]
+
+* SyntaxError
+ * SyntaxError#path has been added. [[Feature #19138]]
+
+* TracePoint
+
+ * TracePoint#binding now returns `nil` for `c_call`/`c_return` TracePoints.
+ [[Bug #18487]]
+ * TracePoint#enable `target_thread` keyword argument now defaults to the
+ current thread if a block is given and `target` and `target_line` keyword
+ arguments are not passed. [[Bug #16889]]
+
+* UnboundMethod
+
+ * `UnboundMethod#==` returns `true` if the actual method is same. For example,
+ `String.instance_method(:object_id) == Array.instance_method(:object_id)`
+ returns `true`. [[Feature #18798]]
+
+ * `UnboundMethod#inspect` does not show the receiver of `instance_method`.
+ For example `String.instance_method(:object_id).inspect` returns
+ `"#<UnboundMethod: Kernel#object_id()>"`
+ (was `"#<UnboundMethod: String(Kernel)#object_id()>"`).
+
+* GC
+
+ * Expose `need_major_gc` via `GC.latest_gc_info`. [GH-6791]
+
+* ObjectSpace
+
+ * `ObjectSpace.dump_all` dump shapes as well. [GH-6868]
+
+## Stdlib updates
+
+* Bundler
+
+ * Bundler now uses [PubGrub] resolver instead of [Molinillo] for performance improvement.
+ * Add --ext=rust support to bundle gem for creating simple gems with Rust extensions.
+ [[GH-rubygems-6149]]
+ * Make cloning git repos faster [[GH-rubygems-4475]]
+
+* RubyGems
+
+ * Add mswin support for cargo builder. [[GH-rubygems-6167]]
+
+* CGI
+
+ * `CGI.escapeURIComponent` and `CGI.unescapeURIComponent` are added.
+ [[Feature #18822]]
+
+* Coverage
+
+ * `Coverage.setup` now accepts `eval: true`. By this, `eval` and related methods are
+ able to generate code coverage. [[Feature #19008]]
+
+ * `Coverage.supported?(mode)` enables detection of what coverage modes are
+ supported. [[Feature #19026]]
+
+* Date
+
+ * Added `Date#deconstruct_keys` and `DateTime#deconstruct_keys` same as [[Feature #19071]]
+
+* ERB
+
+ * `ERB::Util.html_escape` is made faster than `CGI.escapeHTML`.
+ * It no longer allocates a String object when no character needs to be escaped.
+ * It skips calling `#to_s` method when an argument is already a String.
+ * `ERB::Escape.html_escape` is added as an alias to `ERB::Util.html_escape`,
+ which has not been monkey-patched by Rails.
+ * `ERB::Util.url_encode` is made faster using `CGI.escapeURIComponent`.
+ * `-S` option is removed from `erb` command.
+
+* FileUtils
+
+ * Add FileUtils.ln_sr method and `relative:` option to FileUtils.ln_s.
+ [[Feature #18925]]
+
+* IRB
+
+ * debug.gem integration commands have been added: `debug`, `break`, `catch`,
+ `next`, `delete`, `step`, `continue`, `finish`, `backtrace`, `info`
+ * They work even if you don't have `gem "debug"` in your Gemfile.
+ * See also: [What's new in Ruby 3.2's IRB?](https://st0012.dev/whats-new-in-ruby-3-2-irb)
+ * More Pry-like commands and features have been added.
+ * `edit` and `show_cmds` (like Pry's `help`) are added.
+ * `ls` takes `-g` or `-G` option to filter out outputs.
+ * `show_source` is aliased from `$` and accepts unquoted inputs.
+ * `whereami` is aliased from `@`.
+
+* Net::Protocol
+
+ * Improve `Net::BufferedIO` performance. [[GH-net-protocol-14]]
+
+* Pathname
+
+ * Added `Pathname#lutime`. [[GH-pathname-20]]
+
+* Socket
+
+ * Added the following constants for supported platforms.
+ * `SO_INCOMING_CPU`
+ * `SO_INCOMING_NAPI_ID`
+ * `SO_RTABLE`
+ * `SO_SETFIB`
+ * `SO_USER_COOKIE`
+ * `TCP_KEEPALIVE`
+ * `TCP_CONNECTION_INFO`
+
+* SyntaxSuggest
+
+ * The feature of `syntax_suggest` formerly `dead_end` is integrated in Ruby.
+ [[Feature #18159]]
+
+* UNIXSocket
+
+ * Add support for UNIXSocket on Windows. Emulate anonymous sockets. Add
+ support for File.socket? and File::Stat#socket? where possible.
+ [[Feature #19135]]
+
+* The following default gems are updated.
+
+ * RubyGems 3.4.1
+ * abbrev 0.1.1
+ * benchmark 0.2.1
+ * bigdecimal 3.1.3
+ * bundler 2.4.1
+ * cgi 0.3.6
+ * csv 3.2.6
+ * date 3.3.3
+ * delegate 0.3.0
+ * did_you_mean 1.6.3
+ * digest 3.1.1
+ * drb 2.1.1
+ * english 0.7.2
+ * erb 4.0.2
+ * error_highlight 0.5.1
+ * etc 1.4.2
+ * fcntl 1.0.2
+ * fiddle 1.1.1
+ * fileutils 1.7.0
+ * forwardable 1.3.3
+ * getoptlong 0.2.0
+ * io-console 0.6.0
+ * io-nonblock 0.2.0
+ * io-wait 0.3.0
+ * ipaddr 1.2.5
+ * irb 1.6.2
+ * json 2.6.3
+ * logger 1.5.3
+ * mutex_m 0.1.2
+ * net-http 0.4.0
+ * net-protocol 0.2.1
+ * nkf 0.1.2
+ * open-uri 0.3.0
+ * open3 0.1.2
+ * openssl 3.1.0
+ * optparse 0.3.1
+ * ostruct 0.5.5
+ * pathname 0.2.1
+ * pp 0.4.0
+ * pstore 0.1.2
+ * psych 5.0.1
+ * racc 1.6.2
+ * rdoc 6.5.0
+ * readline-ext 0.1.5
+ * reline 0.3.2
+ * resolv 0.2.2
+ * resolv-replace 0.1.1
+ * securerandom 0.2.2
+ * set 1.0.3
+ * stringio 3.0.4
+ * strscan 3.0.5
+ * syntax_suggest 1.0.2
+ * syslog 0.1.1
+ * tempfile 0.1.3
+ * time 0.2.1
+ * timeout 0.3.1
+ * tmpdir 0.1.3
+ * tsort 0.1.1
+ * un 0.2.1
+ * uri 0.12.0
+ * weakref 0.1.2
+ * win32ole 1.8.9
+ * yaml 0.2.1
+ * zlib 3.0.0
+
+* The following bundled gems are updated.
+
+ * minitest 5.16.3
+ * power_assert 2.0.3
+ * test-unit 3.5.7
+ * net-ftp 0.2.0
+ * net-imap 0.3.4
+ * net-pop 0.1.2
+ * net-smtp 0.3.3
+ * rbs 2.8.2
+ * typeprof 0.21.3
+ * debug 1.7.1
+
+See GitHub releases like [GitHub Releases of Logger](https://github.com/ruby/logger/releases) or changelog for details of the default gems or bundled gems.
+
+## Supported platforms
+
+* WebAssembly/WASI is added. See [wasm/README.md] and [ruby.wasm] for more details. [[Feature #18462]]
+
+## Compatibility issues
+
+* `String#to_c` currently treat a sequence of underscores as an end of Complex
+ string. [[Bug #19087]]
+
+* Now `ENV.clone` raises `TypeError` as well as `ENV.dup` [[Bug #17767]]
+
+### Removed constants
+
+The following deprecated constants are removed.
+
+* `Fixnum` and `Bignum` [[Feature #12005]]
+* `Random::DEFAULT` [[Feature #17351]]
+* `Struct::Group`
+* `Struct::Passwd`
+
+### Removed methods
+
+The following deprecated methods are removed.
+
+* `Dir.exists?` [[Feature #17391]]
+* `File.exists?` [[Feature #17391]]
+* `Kernel#=~` [[Feature #15231]]
+* `Kernel#taint`, `Kernel#untaint`, `Kernel#tainted?`
+ [[Feature #16131]]
+* `Kernel#trust`, `Kernel#untrust`, `Kernel#untrusted?`
+ [[Feature #16131]]
+* `Method#public?`, `Method#private?`, `Method#protected?`,
+ `UnboundMethod#public?`, `UnboundMethod#private?`, `UnboundMethod#protected?`
+ [[Bug #18729]] [[Bug #18751]] [[Bug #18435]]
+
+### Source code incompatibility of extension libraries
+
+* Extension libraries provide PRNG, subclasses of Random, need updates.
+ See [PRNG update] below for more information. [[Bug #19100]]
+
+### Error printer
+
+* Ruby no longer escapes control characters and backslashes in an
+ error message. [[Feature #18367]]
+
+### Constant lookup when defining a class/module
+
+* When defining a class/module directly under the Object class by class/module
+ statement, if there is already a class/module defined by `Module#include`
+ with the same name, the statement was handled as "open class" in Ruby 3.1 or before.
+ Since Ruby 3.2, a new class is defined instead. [[Feature #18832]]
+
+## Stdlib compatibility issues
+
+* Psych no longer bundles libyaml sources.
+ And also Fiddle no longer bundles libffi sources.
+ Users need to install the libyaml/libffi library themselves via the package
+ manager like apt, yum, brew, etc.
+
+ Psych and fiddle supported the static build with specific version of libyaml
+ and libffi sources. You can build psych with libyaml-0.2.5 like this.
+
+ ```bash
+ $ ./configure --with-libyaml-source-dir=/path/to/libyaml-0.2.5
+ ```
+
+ And you can build fiddle with libffi-3.4.4 like this.
+
+ ```bash
+ $ ./configure --with-libffi-source-dir=/path/to/libffi-3.4.4
+ ```
+
+ [[Feature #18571]]
+
+* Check cookie name/path/domain characters in `CGI::Cookie`. [[CVE-2021-33621]]
+
+* `URI.parse` return empty string in host instead of nil. [[sec-156615]]
+
+## C API updates
+
+### Updated C APIs
+
+The following APIs are updated.
+
+* PRNG update
+
+ `rb_random_interface_t` in ruby/random.h updated and versioned.
+ Extension libraries which use this interface and built for older
+ versions need to rebuild with adding `init_int32` function.
+
+### Added C APIs
+
+* `VALUE rb_hash_new_capa(long capa)` was added to created hashes with the desired capacity.
+* `rb_internal_thread_add_event_hook` and `rb_internal_thread_add_event_hook` were added to instrument threads scheduling.
+ The following events are available:
+ * `RUBY_INTERNAL_THREAD_EVENT_STARTED`
+ * `RUBY_INTERNAL_THREAD_EVENT_READY`
+ * `RUBY_INTERNAL_THREAD_EVENT_RESUMED`
+ * `RUBY_INTERNAL_THREAD_EVENT_SUSPENDED`
+ * `RUBY_INTERNAL_THREAD_EVENT_EXITED`
+* `rb_debug_inspector_current_depth` and `rb_debug_inspector_frame_depth` are added for debuggers.
+
+### Removed C APIs
+
+The following deprecated APIs are removed.
+
+* `rb_cData` variable.
+* "taintedness" and "trustedness" functions. [[Feature #16131]]
+
+## Implementation improvements
+
+* Fixed several race conditions in Kernel#autoload. [[Bug #18782]]
+* Cache invalidation for expressions referencing constants is now
+ more fine-grained. `RubyVM.stat(:global_constant_state)` was
+ removed because it was closely tied to the previous caching scheme
+ where setting any constant invalidates all caches in the system.
+ New keys, `:constant_cache_invalidations` and `:constant_cache_misses`,
+ were introduced to help with use cases for `:global_constant_state`.
+ [[Feature #18589]]
+* The cache-based optimization for Regexp matching is introduced.
+ [[Feature #19104]]
+* [Variable Width Allocation](https://shopify.engineering/ruby-variable-width-allocation)
+ is now enabled by default. [[Feature #18239]]
+* Added a new instance variable caching mechanism, called object shapes, which
+ improves inline cache hits for most objects and allows us to generate very
+ efficient JIT code. Objects whose instance variables are defined in a
+ consistent order will see the most performance benefits.
+ [[Feature #18776]]
+* Speed up marking instruction sequences by using a bitmap to find "markable"
+ objects. This change results in faster major collections.
+ [[Feature #18875]]
+
+## JIT
+
+### YJIT
+
+* YJIT is no longer experimental
+ * Has been tested on production workloads for over a year and proven to be quite stable.
+* YJIT now supports both x86-64 and arm64/aarch64 CPUs on Linux, MacOS, BSD and other UNIX platforms.
+ * This release brings support for Mac M1/M2, AWS Graviton and Raspberry Pi 4.
+* Building YJIT now requires Rust 1.58.0+. [[Feature #18481]]
+ * In order to ensure that CRuby is built with YJIT, please install `rustc` >= 1.58.0
+ before running `./configure`
+ * Please reach out to the YJIT team should you run into any issues.
+* Physical memory for JIT code is lazily allocated. Unlike Ruby 3.1,
+ the RSS of a Ruby process is minimized because virtual memory pages
+ allocated by `--yjit-exec-mem-size` will not be mapped to physical
+ memory pages until actually utilized by JIT code.
+* Introduce Code GC that frees all code pages when the memory consumption
+ by JIT code reaches `--yjit-exec-mem-size`.
+ * `RubyVM::YJIT.runtime_stats` returns Code GC metrics in addition to
+ existing `inline_code_size` and `outlined_code_size` keys:
+ `code_gc_count`, `live_page_count`, `freed_page_count`, and `freed_code_size`.
+* Most of the statistics produced by `RubyVM::YJIT.runtime_stats` are now available in release builds.
+ * Simply run ruby with `--yjit-stats` to compute and dump stats (incurs some run-time overhead).
+* YJIT is now optimized to take advantage of object shapes. [[Feature #18776]]
+* Take advantage of finer-grained constant invalidation to invalidate less code when defining new constants. [[Feature #18589]]
+* The default `--yjit-exec-mem-size` is changed to 64 (MiB).
+* The default `--yjit-call-threshold` is changed to 30.
+
+### MJIT
+
+* The MJIT compiler is re-implemented in Ruby as `ruby_vm/mjit/compiler`.
+* MJIT compiler is executed under a forked Ruby process instead of
+ doing it in a native thread called MJIT worker. [[Feature #18968]]
+ * As a result, Microsoft Visual Studio (MSWIN) is no longer supported.
+* MinGW is no longer supported. [[Feature #18824]]
+* Rename `--mjit-min-calls` to `--mjit-call-threshold`.
+* Change default `--mjit-max-cache` back from 10000 to 100.
+
+[Feature #12005]: https://bugs.ruby-lang.org/issues/12005
+[Feature #12084]: https://bugs.ruby-lang.org/issues/12084
+[Feature #12655]: https://bugs.ruby-lang.org/issues/12655
+[Feature #12737]: https://bugs.ruby-lang.org/issues/12737
+[Feature #13110]: https://bugs.ruby-lang.org/issues/13110
+[Feature #14332]: https://bugs.ruby-lang.org/issues/14332
+[Feature #15231]: https://bugs.ruby-lang.org/issues/15231
+[Feature #15357]: https://bugs.ruby-lang.org/issues/15357
+[Bug #15928]: https://bugs.ruby-lang.org/issues/15928
+[Feature #16122]: https://bugs.ruby-lang.org/issues/16122
+[Feature #16131]: https://bugs.ruby-lang.org/issues/16131
+[Bug #16466]: https://bugs.ruby-lang.org/issues/16466
+[Feature #16663]: https://bugs.ruby-lang.org/issues/16663
+[Feature #16806]: https://bugs.ruby-lang.org/issues/16806
+[Bug #16889]: https://bugs.ruby-lang.org/issues/16889
+[Bug #16908]: https://bugs.ruby-lang.org/issues/16908
+[Feature #16989]: https://bugs.ruby-lang.org/issues/16989
+[Feature #17351]: https://bugs.ruby-lang.org/issues/17351
+[Feature #17391]: https://bugs.ruby-lang.org/issues/17391
+[Bug #17545]: https://bugs.ruby-lang.org/issues/17545
+[Bug #17767]: https://bugs.ruby-lang.org/issues/17767
+[Feature #17837]: https://bugs.ruby-lang.org/issues/17837
+[Feature #17881]: https://bugs.ruby-lang.org/issues/17881
+[Feature #18033]: https://bugs.ruby-lang.org/issues/18033
+[Feature #18159]: https://bugs.ruby-lang.org/issues/18159
+[Feature #18239]: https://bugs.ruby-lang.org/issues/18239#note-17
+[Feature #18351]: https://bugs.ruby-lang.org/issues/18351
+[Feature #18367]: https://bugs.ruby-lang.org/issues/18367
+[Bug #18435]: https://bugs.ruby-lang.org/issues/18435
+[Feature #18462]: https://bugs.ruby-lang.org/issues/18462
+[Feature #18481]: https://bugs.ruby-lang.org/issues/18481
+[Bug #18487]: https://bugs.ruby-lang.org/issues/18487
+[Feature #18564]: https://bugs.ruby-lang.org/issues/18564
+[Feature #18571]: https://bugs.ruby-lang.org/issues/18571
+[Feature #18585]: https://bugs.ruby-lang.org/issues/18585
+[Feature #18589]: https://bugs.ruby-lang.org/issues/18589
+[Feature #18595]: https://bugs.ruby-lang.org/issues/18595
+[Feature #18598]: https://bugs.ruby-lang.org/issues/18598
+[Bug #18625]: https://bugs.ruby-lang.org/issues/18625
+[Feature #18630]: https://bugs.ruby-lang.org/issues/18630
+[Bug #18633]: https://bugs.ruby-lang.org/issues/18633
+[Feature #18639]: https://bugs.ruby-lang.org/issues/18639
+[Feature #18685]: https://bugs.ruby-lang.org/issues/18685
+[Bug #18729]: https://bugs.ruby-lang.org/issues/18729
+[Bug #18751]: https://bugs.ruby-lang.org/issues/18751
+[Feature #18774]: https://bugs.ruby-lang.org/issues/18774
+[Feature #18776]: https://bugs.ruby-lang.org/issues/18776
+[Bug #18782]: https://bugs.ruby-lang.org/issues/18782
+[Feature #18788]: https://bugs.ruby-lang.org/issues/18788
+[Feature #18798]: https://bugs.ruby-lang.org/issues/18798
+[Feature #18809]: https://bugs.ruby-lang.org/issues/18809
+[Feature #18821]: https://bugs.ruby-lang.org/issues/18821
+[Feature #18822]: https://bugs.ruby-lang.org/issues/18822
+[Feature #18824]: https://bugs.ruby-lang.org/issues/18824
+[Feature #18832]: https://bugs.ruby-lang.org/issues/18832
+[Feature #18875]: https://bugs.ruby-lang.org/issues/18875
+[Feature #18925]: https://bugs.ruby-lang.org/issues/18925
+[Feature #18944]: https://bugs.ruby-lang.org/issues/18944
+[Feature #18949]: https://bugs.ruby-lang.org/issues/18949
+[Feature #18968]: https://bugs.ruby-lang.org/issues/18968
+[Feature #19008]: https://bugs.ruby-lang.org/issues/19008
+[Feature #19013]: https://bugs.ruby-lang.org/issues/19013
+[Feature #19026]: https://bugs.ruby-lang.org/issues/19026
+[Feature #19036]: https://bugs.ruby-lang.org/issues/19036
+[Feature #19060]: https://bugs.ruby-lang.org/issues/19060
+[Feature #19070]: https://bugs.ruby-lang.org/issues/19070
+[Feature #19071]: https://bugs.ruby-lang.org/issues/19071
+[Feature #19078]: https://bugs.ruby-lang.org/issues/19078
+[Bug #19087]: https://bugs.ruby-lang.org/issues/19087
+[Bug #19100]: https://bugs.ruby-lang.org/issues/19100
+[Feature #19104]: https://bugs.ruby-lang.org/issues/19104
+[Feature #19135]: https://bugs.ruby-lang.org/issues/19135
+[Feature #19138]: https://bugs.ruby-lang.org/issues/19138
+[Feature #19194]: https://bugs.ruby-lang.org/issues/19194
+[Molinillo]: https://github.com/CocoaPods/Molinillo
+[PubGrub]: https://github.com/jhawthorn/pub_grub
+[GH-net-protocol-14]: https://github.com/ruby/net-protocol/pull/14
+[GH-pathname-20]: https://github.com/ruby/pathname/pull/20
+[GH-6791]: https://github.com/ruby/ruby/pull/6791
+[GH-6868]: https://github.com/ruby/ruby/pull/6868
+[GH-rubygems-4475]: https://github.com/rubygems/rubygems/pull/4475
+[GH-rubygems-6149]: https://github.com/rubygems/rubygems/pull/6149
+[GH-rubygems-6167]: https://github.com/rubygems/rubygems/pull/6167
+[sec-156615]: https://hackerone.com/reports/156615
+[CVE-2021-33621]: https://www.ruby-lang.org/en/news/2022/11/22/http-response-splitting-in-cgi-cve-2021-33621/
+[wasm/README.md]: https://github.com/ruby/ruby/blob/master/wasm/README.md
+[ruby.wasm]: https://github.com/ruby/ruby.wasm
diff --git a/README b/README
deleted file mode 100644
index 5794f5daf6..0000000000
--- a/README
+++ /dev/null
@@ -1,152 +0,0 @@
-* What's Ruby
-
-Ruby is the interpreted scripting language for quick and
-easy object-oriented programming. It has many features to
-process text files and to do system management tasks (as in
-Perl). It is simple, straight-forward, and extensible.
-
-* Features of Ruby
-
- + Simple Syntax
- + *Normal* Object-Oriented features(ex. class, method calls)
- + *Advanced* Object-Oriented features(ex. Mix-in, Singleton-method)
- + Operator Overloading
- + Exception Handling
- + Iterators and Closures
- + Garbage Collection
- + Dynamic Loading of Object files(on some architecture)
- + Highly Portable(works on many UNIX machines, and on DOS,
- Windows, Mac, BeOS etc.)
-
-* How to get Ruby
-
-The Ruby distribution can be found on:
-
- ftp://ftp.netlab.co.jp/pub/lang/ruby/
-
-You can get it by anonymous CVS. How to check out is:
-
- $ cvs -d :pserver:anonymous@cvs.netlab.co.jp:/home/cvs login
- (Logging in to anonymous@cvs.netlab.co.jp)
- CVS password: guest
- $ cvs -d :pserver:anonymous@cvs.netlab.co.jp:/home/cvs checkout ruby
-
-* Mailing list
-
-There is a mailing list to talk about Ruby.
-To subscribe this list, please send the following phrase
-
- subscribe YourFirstName YourFamilyName
-e.g.
- subscribe Joseph Smith
-
-in the mail body (not subject) to the address <ruby-talk-ctl@netlab.co.jp>.
-
-* How to compile and install
-
-This is what you need to do to compile and install Ruby:
-
- 1. Run ./configure, which will generate config.h and Makefile.
-
- 2. Edit defines.h if you need. Probably this step will not need.
-
- 3. Remove comment mark(#) before the module names from ext/Setup (or
- add module names if not present), if you want to link modules
- statically.
-
- If you don't want to compile non static extension modules
- (probably on architectures which does not allow dynamic loading),
- remove comment mark from the line "#option nodynamic" in
- ext/Setup.
-
- 4. Run make.
-
- 5. Optionally, run 'make test' to check whether the compiled Ruby
- interpreter works well. If you see the message "test succeeded",
- your ruby works as it should (hopefully).
-
- 6. Run 'make install'
-
- You may have to be a super user to install ruby.
-
-If you fail to compile ruby, please send the detailed error report with
-the error log and machine/OS type, to help others.
-
-* Copying
-
-Ruby is copyrighted free software by Yukihiro Matsumoto <matz@zetabits.com>.
-You can redistribute it and/or modify it under either the terms of the GPL
-(see COPYING file), or the conditions below:
-
- 1. You may make and give away verbatim copies of the source form of the
- software without restriction, provided that you duplicate all of the
- original copyright notices and associated disclaimers.
-
- 2. You may modify your copy of the software in any way, provided that
- you do at least ONE of the following:
-
- a) place your modifications in the Public Domain or otherwise
- make them Freely Available, such as by posting said
- modifications to Usenet or an equivalent medium, or by allowing
- the author to include your modifications in the software.
-
- b) use the modified software only within your corporation or
- organization.
-
- c) rename any non-standard executables so the names do not conflict
- with standard executables, which must also be provided.
-
- d) make other distribution arrangements with the author.
-
- 3. You may distribute the software in object code or executable
- form, provided that you do at least ONE of the following:
-
- a) distribute the executables and library files of the software,
- together with instructions (in the manual page or equivalent)
- on where to get the original distribution.
-
- b) accompany the distribution with the machine-readable source of
- the software.
-
- c) give non-standard executables non-standard names, with
- instructions on where to get the original software distribution.
-
- d) make other distribution arrangements with the author.
-
- 4. You may modify and include the part of the software into any other
- software (possibly commercial). But some files in the distribution
- are not written by the author, so that they are not under this terms.
-
- They are gc.c(partly), utils.c(partly), regex.[ch], st.[ch] and some
- files under the ./missing directory. See each file for the copying
- condition.
-
- 5. The scripts and library files supplied as input to or produced as
- output from the software do not automatically fall under the
- copyright of the software, but belong to whomever generated them,
- and may be sold commercially, and may be aggregated with this
- software.
-
- 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE.
-
-* Ruby home-page
-
-The URL of the Ruby home-page is:
-
- http://www.ruby-lang.org/
-
-* The Author
-
-Feel free to send comments and bug reports to the author. Here is the
-author's latest mail address:
-
- matz@zetabits.com
-
--------------------------------------------------------
-created at: Thu Aug 3 11:57:36 JST 1995
-Local variables:
-mode: indented-text
-end:
diff --git a/README.EXT b/README.EXT
index 12d379e09b..48b8d964c4 100644
--- a/README.EXT
+++ b/README.EXT
@@ -1,1009 +1 @@
-.\" README.EXT - -*- Text -*- created at: Mon Aug 7 16:45:54 JST 1995
-
-This document explains how to make extension libraries for Ruby.
-
-1. Basic knowledge
-
-In C, variables have types and data do not have types. In contrast,
-Ruby variables do not have static type and data themselves have
-types. So, data need to be converted across the languages.
-
-Data in Ruby represented C type `VALUE'. Each VALUE data have its
-data-type.
-
-To retrieve an C data from the VALUE, you need to:
-
- (1) Identify VALUE's data type
- (2) Convert VALUE into C data
-
-Converting to wrong data type may cause serious problems.
-
-
-1.1 Data-types
-
-Ruby interpreter has data-types as below:
-
- T_NIL nil
- T_OBJECT ordinary object
- T_CLASS class
- T_MODULE module
- T_FLOAT floating point number
- T_STRING string
- T_REGEXP regular expression
- T_ARRAY array
- T_FIXNUM Fixnum(31bit integer)
- T_HASH associative array
- T_STRUCT (Ruby) structure
- T_BIGNUM multi precision integer
- T_TRUE true
- T_FALSE false
- T_DATA data
-
-Otherwise, there are several other types used internally:
-
- T_ICLASS
- T_MATCH
- T_VARMAP
- T_SCOPE
- T_NODE
-
-Most of the types are represented by C structures.
-
-1.2 Check Data Type of the VALUE
-
-The macro TYPE() defined in ruby.h shows data-type of the VALUE.
-TYPE() returns the constant number T_XXXX described above. To handle
-data-types, the code will be like:
-
- switch (TYPE(obj)) {
- case T_FIXNUM:
- /* process Fixnum */
- break;
- case T_STRING:
- /* process String */
- break;
- case T_ARRAY:
- /* process Array */
- break;
- default:
- /* raise exception */
- rb_raise(rb_eTypeError, "not valid value");
- break;
- }
-
-There is the data-type check function.
-
- void Check_Type(VALUE value, int type)
-
-It raises an exception, if the VALUE does not have the type specified.
-
-There are faster check-macros for fixnums and nil.
-
- FIXNUM_P(obj)
- NIL_P(obj)
-
-1.3 Convert VALUE into C data
-
-The data for type T_NIL, T_FALSE, T_TRUE are nil, true, false
-respectively. They are singletons for the data type.
-
-The T_FIXNUM data is the 31bit length fixed integer (63bit length on
-some machines), which can be convert to the C integer by using
-FIX2INT() macro. There also be NUM2INT() which converts any Ruby
-numbers into C integer. The NUM2INT() macro includes type check, so
-the exception will be raised if conversion failed.
-
-Other data types have corresponding C structures, e.g. struct RArray
-for T_ARRAY etc. VALUE of the type which has corresponding structure
-can be cast to retrieve the pointer to the struct. The casting macro
-RXXXX for each data type like RARRAY(obj). see "ruby.h".
-
-For example, `RSTRING(size)->len' is the way to get the size of the
-Ruby String object. The allocated region can be accessed by
-`RSTRING(str)->ptr'. For arrays, `RARRAY(ary)->len' and
-`RARRAY(ary)->ptr' respectively.
-
-Notice: Do not change the value of the structure directly, unless you
-are responsible about the result. It will be the cause of interesting
-bugs.
-
-1.4 Convert C data into VALUE
-
-To convert C data to the values of Ruby:
-
- * FIXNUM
-
- left shift 1 bit, and turn on LSB.
-
- * Other pointer values
-
- cast to VALUE.
-
-You can determine whether VALUE is pointer or not, by checking LSB.
-
-Notice Ruby does not allow arbitrary pointer value to be VALUE. They
-should be pointers to the structures which Ruby knows. The known
-structures are defined in <ruby.h>.
-
-To convert C numbers to Ruby value, use these macros.
-
- INT2FIX() for integers within 31bits.
- INT2NUM() for arbitrary sized integer.
-
-INT2NUM() converts integers into Bignums, if it is out of FIXNUM
-range, but bit slower.
-
-1.5 Manipulate Ruby data
-
-As I already told, it is not recommended to modify object's internal
-structure. To manipulate objects, use functions supplied by Ruby
-interpreter. Useful functions are listed below (not all):
-
- String functions
-
- rb_str_new(char *ptr, int len)
-
- Creates a new Ruby string.
-
- rb_str_new2(char *ptr)
-
- Creates a new Ruby string from C string. This is equivalent to
- rb_str_new(ptr, strlen(ptr)).
-
- rb_tainted_str_new(char *ptr, int len)
-
- Creates a new tainted Ruby string. Strings from external data
- should be tainted.
-
- rb_tainted_str_new2(char *ptr)
-
- Creates a new tainted Ruby string from C string.
-
- rb_str_cat(VALUE str, char *ptr, int len)
-
- Appends len bytes data from ptr to the Ruby string.
-
- Array functions
-
- rb_ary_new()
-
- Creates an array with no element.
-
- rb_ary_new2(int len)
-
- Creates an array with no element, with allocating internal buffer
- for len elements.
-
- rb_ary_new3(int n, ...)
-
- Creates an n-elements array from arguments.
-
- rb_ary_new4(int n, VALUE *elts)
-
- Creates an n-elements array from C array.
-
- rb_ary_push(VALUE ary, VALUE val)
- rb_ary_pop(VALUE ary)
- rb_ary_shift(VALUE ary)
- rb_ary_unshift(VALUE ary, VALUE val)
- rb_ary_entry(VALUE ary, int idx)
-
- Array operations. The first argument to each functions must be an
- array. They may dump core if other types given.
-
-2. Extend Ruby with C
-
-2.1 Add new features to Ruby
-
-You can add new features (classes, methods, etc.) to the Ruby
-interpreter. Ruby provides the API to define things below:
-
- * Classes, Modules
- * Methods, Singleton Methods
- * Constants
-
-2.1.1 Class/module definition
-
-To define class or module, use functions below:
-
- VALUE rb_define_class(char *name, VALUE super)
- VALUE rb_define_module(char *name)
-
-These functions return the newly created class or module. You may
-want to save this reference into the variable to use later.
-
-To define nested class or module, use functions below:
-
- VALUE rb_define_class_under(VALUE outer, char *name, VALUE super)
- VALUE rb_define_module_under(VALUE outer, char *name)
-
-2.1.2 Method/singleton method definition
-
-To define methods or singleton methods, use functions below:
-
- void rb_define_method(VALUE klass, char *name,
- VALUE (*func)(), int argc)
-
- void rb_define_singleton_method(VALUE object, char *name,
- VALUE (*func)(), int argc)
-
-The `argc' represents the number of the arguments to the C function,
-which must be less than 17. But I believe you don't need that much. :-)
-
-If `argc' is negative, it specifies calling sequence, not number of
-the arguments.
-
-If argc is -1, the function will be called like:
-
- VALUE func(int argc, VALUE *argv, VALUE obj)
-
-where argc is the actual number of arguments, argv is the C array of
-the arguments, and obj is the receiver.
-
-if argc is -2, the arguments are passed in Ruby array. The function
-will be called like:
-
- VALUE func(VALUE obj, VALUE args)
-
-where obj is the receiver, and args is the Ruby array containing
-actual arguments.
-
-There're two more functions to define method. One is to define
-private method:
-
- void rb_define_private_method(VALUE klass, char *name,
- VALUE (*func)(), int argc)
-
-The other is to define module function, which is private AND singleton
-method of the module. For example, sqrt is the module function
-defined in Math module. It can be call in the form like:
-
- Math.sqrt(4)
-
-or
-
- include Math
- sqrt(4)
-
-To define module function
-
- void rb_define_module_function(VALUE module, char *name,
- VALUE (*func)(), int argc)
-
-Oh, in addition, function-like method, which is private method defined
-in Kernel module, can be defined using:
-
- void rb_define_global_function(char *name, VALUE (*func)(), int argc)
-
-To define alias to the method,
-
- void rb_define_alias(VALUE module, const char* new, const char* old);
-
-2.1.3 Constant definition
-
-We have 2 functions to define constants:
-
- void rb_define_const(VALUE klass, char *name, VALUE val)
- void rb_define_global_const(char *name, VALUE val)
-
-The former is to define constant under specified class/module. The
-latter is to define global constant.
-
-2.2 Use Ruby features from C
-
-There are several ways to invoke Ruby's features from C code.
-
-2.2.1 Evaluate Ruby Program in String
-
-Easiest way to call Ruby's function from C program is to evaluate the
-string as Ruby program. This function will do the job.
-
- VALUE rb_eval_string(char *str)
-
-Evaluation is done under current context, thus current local variables
-of the innermost method (which is defined by Ruby) can be accessed.
-
-2.2.2 ID or Symbol
-
-You can invoke methods directly, without parsing the string. First I
-need to explain about symbols (which data type is ID). ID is the
-integer number to represent Ruby's identifiers such as variable names.
-It can be accessed from Ruby in the form like:
-
- :Identifier
-
-You can get the symbol value from string within C code, by using
-
- rb_intern(char *name)
-
-In addition, the symbols for one character operators (e.g +) is the
-code for that character.
-
-2.2.3 Invoke Ruby method from C
-
-To invoke methods directly, you can use the function below
-
- VALUE rb_funcall(VALUE recv, ID mid, int argc, ...)
-
-This function invokes the method of the recv, which name is specified
-by the symbol mid.
-
-2.2.4 Accessing the variables and constants
-
-You can access class variables, and instance variables using access
-functions. Also, global variables can be shared between both worlds.
-There's no way to access Ruby's local variables.
-
-The functions to access/modify instance variables are below:
-
- VALUE rb_ivar_get(VALUE obj, ID id)
- VALUE rb_ivar_set(VALUE obj, ID id, VALUE val)
-
-id must be the symbol, which can be retrieved by rb_intern().
-
-To access the constants of the class/module:
-
- VALUE rb_const_get(VALUE obj, ID id)
-
-See 2.1.3 for defining new constant.
-
-3. Information sharing between Ruby and C
-
-3.1 Ruby constant that C can be accessed from C
-
-Following Ruby constants can be referred from C.
-
- Qtrue
- Qfalse
-
-Boolean values. Qfalse is false in the C also (i.e. 0).
-
- Qnil
-
-Ruby nil in C scope.
-
-3.2 Global variables shared between C and Ruby
-
-Information can be shared between two worlds, using shared global
-variables. To define them, you can use functions listed below:
-
- void rb_define_variable(char *name, VALUE *var)
-
-This function defines the variable which is shared by the both world.
-The value of the global variable pointed by `var', can be accessed
-through Ruby's global variable named `name'.
-
-You can define read-only (from Ruby, of course) variable by the
-function below.
-
- void rb_define_readonly_variable(char *name, VALUE *var)
-
-You can defined hooked variables. The accessor functions (getter and
-setter) are called on access to the hooked variables.
-
- void rb_define_hooked_variable(char *name, VALUE *var,
- VALUE (*getter)(), VALUE (*setter)())
-
-If you need to supply either setter or getter, just supply 0 for the
-hook you don't need. If both hooks are 0, rb_define_hooked_variable()
-works just like rb_define_variable().
-
- void rb_define_virtual_variable(char *name,
- VALUE (*getter)(), VALUE (*setter)())
-
-This function defines the Ruby global variable without corresponding C
-variable. The value of the variable will be set/get only by hooks.
-
-The prototypes of the getter and setter functions are as following:
-
- (*getter)(ID id, void *data, struct global_entry* entry);
- (*setter)(VALUE val, ID id, void *data, struct global_entry* entry);
-
-3.3 Encapsulate C data into Ruby object
-
-To wrapping and objectify the C pointer as Ruby object (so called
-DATA), use Data_Wrap_Struct().
-
- Data_Wrap_Struct(klass, mark, free, ptr)
-
-Data_Wrap_Struct() returns a created DATA object. The klass argument
-is the class for the DATA object. The mark argument is the function
-to mark Ruby objects pointed by this data. The free argument is the
-function to free the pointer allocation. The functions, mark and
-free, will be called from garbage collector.
-
-You can allocate and wrap the structure in one step.
-
- Data_Make_Struct(klass, type, mark, free, sval)
-
-This macro returns an allocated Data object, wrapping the pointer to
-the structure, which is also allocated. This macro works like:
-
- (sval = ALLOC(type), Data_Wrap_Struct(klass, mark, free, sval))
-
-Arguments, klass, mark, free, works like their counterpart of
-Data_Wrap_Struct(). The pointer to allocated structure will be
-assigned to sval, which should be the pointer to the type specified.
-
-To retrieve the C pointer from the Data object, use the macro
-Data_Get_Struct().
-
- Data_Get_Struct(obj, type, sval)
-
-The pointer to the structure will be assigned to the variable sval.
-
-See example below for detail.
-
-4. Example - Creating dbm extension
-
-OK, here's the example to make extension library. This is the
-extension to access dbm. The full source is included in ext/
-directory in the Ruby's source tree.
-
-(1) make the directory
-
- % mkdir ext/dbm
-
-Make a directory for the extension library under ext directory.
-
-(2) create MANIFEST file
-
- % cd ext/dbm
- % touch MANIFEST
-
-There should be MANIFEST file in the directory for the extension
-library. Make empty file now.
-
-(3) design the library
-
-You need to design the library features, before making it.
-
-(4) write C code.
-
-You need to write C code for your extension library. If your library
-has only one source file, choosing ``LIBRARY.c'' as a file name is
-preferred. On the other hand, in case your library has plural source
-files, avoid choosing ``LIBRARY.c'' for a file name. It may conflict
-with intermediate file ``LIBRARY.o'' on some platforms.
-
-Ruby will execute the initializing function named ``Init_LIBRARY'' in
-the library. For example, ``Init_dbm()'' will be executed when loading
-the library.
-
-Here's the example of an initializing function.
-
---
-Init_dbm()
-{
- /* define DBM class */
- cDBM = rb_define_class("DBM", rb_cObject);
- /* DBM includes Enumerate module */
- rb_include_module(cDBM, rb_mEnumerable);
-
- /* DBM has class method open(): arguments are received as C array */
- rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);
-
- /* DBM instance method close(): no args */
- rb_define_method(cDBM, "close", fdbm_close, 0);
- /* DBM instance method []: 1 argument */
- rb_define_method(cDBM, "[]", fdbm_fetch, 1);
- :
-
-}
---
-
-The dbm extension wrap dbm struct in C world using Data_Make_Struct.
-
---
-struct dbmdata {
- int di_size;
- DBM *di_dbm;
-};
-
-
-obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);
---
-
-This code wraps dbmdata structure into Ruby object. We avoid wrapping
-DBM* directly, because we want to cache size information.
-
-To retrieve dbmdata structure from Ruby object, we define the macro below:
-
---
-#define GetDBM(obj, dbmp) {\
- Data_Get_Struct(obj, struct dbmdata, dbmp);\
- if (dbmp->di_dbm == 0) closed_dbm();\
-}
---
-
-This sort of complicated macro do the retrieving and close check for
-the DBM.
-
-There are three kind of way to receiving method arguments. First, the
-methods with fixed number of arguments receives arguments like this:
-
---
-static VALUE
-fdbm_delete(obj, keystr)
- VALUE obj, keystr;
-{
- :
-}
---
-
-The first argument of the C function is the self, the rest are the
-arguments to the method.
-
-Second, the methods with arbitrary number of arguments receives
-arguments like this:
-
---
-static VALUE
-fdbm_s_open(argc, argv, klass)
- int argc;
- VALUE *argv;
- VALUE klass;
-{
- :
- if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
- mode = 0666; /* default value */
- }
- :
-}
---
-
-The first argument is the number of method arguments. the second
-argument is the C array of the method arguments. And the third
-argument is the receiver of the method.
-
-You can use the function rb_scan_args() to check and retrieve the
-arguments. For example "11" means, the method requires at least one
-argument, and at most receives two arguments.
-
-The methods with arbitrary number of arguments can receives arguments
-by Ruby's array, like this:
-
---
-static VALUE
-fdbm_indexes(obj, args)
- VALUE obj, args;
-{
- :
-}
---
-
-The first argument is the receiver, the second one is the Ruby array
-which contains the arguments to the method.
-
-** Notice
-
-GC should know about global variables which refers Ruby's objects, but
-not exported to the Ruby world. You need to protect them by
-
- void rb_global_variable(VALUE *var)
-
-(5) prepare extconf.rb
-
-If there exists the file named extconf.rb, it will be executed to
-generate Makefile. If not, compilation scheme try to generate
-Makefile anyway.
-
-The extconf.rb is the file to check compilation condition etc. You
-need to put
-
- require 'mkmf'
-
-at the top of the file. You can use the functions below to check the
-condition.
-
- have_library(lib, func): check whether library containing function exists.
- have_func(func, header): check whether function exists
- have_header(header): check whether header file exists
- create_makefile(target): generate Makefile
-
-The value of variables below will affect Makefile.
-
- $CFLAGS: included in CFLAGS make variable (such as -I)
- $LDFLAGS: included in LDFLAGS make variable (such as -L)
-
-If compilation condition is not fulfilled, you do not call
-``create_makefile''. Makefile will not generated, compilation will
-not be done.
-
-(6) prepare depend (optional)
-
-If the file named depend exists, Makefile will include that file to
-check dependency. You can make this file by invoking
-
- % gcc -MM *.c > depend
-
-It's no harm. Prepare it.
-
-(7) put file names into MANIFEST (optional)
-
- % find * -type f -print > MANIFEST
- % vi MANIFEST
-
-Append file names into MANIFEST. The compilation scheme requires
-MANIFEST only to be exist. But, you'd better take this step to
-distinguish required files.
-
-(8) generate Makefile
-
-Try generate Makefile by:
-
- ruby extconf.rb
-
-You don't need this step, if you put extension library under ext
-directory of the ruby source tree. In that case, compilation of the
-interpreter will do this step for you.
-
-(9) make
-
-Type
-
- make
-
-to compile your extension. You don't need this step neither, if you
-put extension library under ext directory of the ruby source tree.
-
-(9) debug
-
-You may need to rb_debug the extension. The extensions can be linked
-statically by adding directory name in the ext/Setup file, so that you
-can inspect the extension with the debugger.
-
-(10) done, now you have the extension library
-
-You can do anything you want with your library. The author of Ruby
-will not claim any restriction about your code depending Ruby API.
-Feel free to use, modify, distribute or sell your program.
-
-Appendix A. Ruby source files overview
-
-ruby language core
-
- class.c
- error.c
- eval.c
- gc.c
- object.c
- parse.y
- variable.c
-
-utility functions
-
- dln.c
- regex.c
- st.c
- util.c
-
-ruby interpreter implementation
-
- dmyext.c
- inits.c
- main.c
- ruby.c
- version.c
-
-class library
-
- array.c
- bignum.c
- compar.c
- dir.c
- enum.c
- file.c
- hash.c
- io.c
- marshal.c
- math.c
- numeric.c
- pack.c
- prec.c
- process.c
- random.c
- range.c
- re.c
- signal.c
- sprintf.c
- string.c
- struct.c
- time.c
-
-Appendix B. Ruby extension API reference
-
-** Types
-
- VALUE
-
-The type for Ruby object. Actual structures are defined in ruby.h,
-such as struct RString, etc. To refer the values in structures, use
-casting macros like RSTRING(obj).
-
-** Variables and constants
-
- Qnil
-
-const: nil object
-
- Qtrue
-
-const: true object(default true value)
-
- Qfalse
-
-const: false object
-
-** C pointer wrapping
-
- Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval)
-
-Wrap C pointer into Ruby object. If object has references to other
-Ruby object, they should be marked by using mark function during GC
-process. Otherwise, mark should be 0. When this object is no longer
-referred by anywhere, the pointer will be discarded by free function.
-
- Data_Make_Struct(klass, type, mark, free, sval)
-
-This macro allocates memory using malloc(), assigns it to the variable
-sval, and returns the DATA encapsulating the pointer to memory region.
-
- Data_Get_Struct(data, type, sval)
-
-This macro retrieves the pointer value from DATA, and assigns it to
-the variable sval.
-
-** defining class/module
-
- VALUE rb_define_class(char *name, VALUE super)
-
-Defines new Ruby class as subclass of super.
-
- VALUE rb_define_class_under(VALUE module, char *name, VALUE super)
-
-Creates new Ruby class as subclass of super, under the module's
-namespace.
-
- VALUE rb_define_module(char *name)
-
-Defines new Ruby module.
-
- VALUE rb_define_module_under(VALUE module, char *name, VALUE super)
-
-Defines new Ruby module, under the module's namespace.
-
- void rb_include_module(VALUE klass, VALUE module)
-
-Includes module into class. If class already includes it, just
-ignore.
-
- void rb_extend_object(VALUE object, VALUE module)
-
-Extend the object with module's attribute.
-
-** Defining Global Variables
-
- void rb_define_variable(char *name, VALUE *var)
-
-Defines a global variable which is shared between C and Ruby. If name
-contains the character which is not allowed to be part of the symbol,
-it can't be seen from Ruby programs.
-
- void rb_define_readonly_variable(char *name, VALUE *var)
-
-Defines a read-only global variable. Works just like
-rb_define_variable(), except defined variable is read-only.
-
- void rb_define_virtual_variable(char *name,
- VALUE (*getter)(), VALUE (*setter)())
-
-Defines a virtual variable, whose behavior is defined by pair of C
-functions. The getter function is called when the variable is
-referred. The setter function is called when the value is set to the
-variable. The prototype for getter/setter functions are:
-
- VALUE getter(ID id)
- void setter(VALUE val, ID id)
-
-The getter function must return the value for the access.
-
- void rb_define_hooked_variable(char *name, VALUE *var,
- VALUE (*getter)(), VALUE (*setter)())
-
-Defines hooked variable. It's virtual variable with C variable. The
-getter is called as
-
- VALUE getter(ID id, VALUE *var)
-
-returning new value. The setter is called as
-
- void setter(VALUE val, ID id, VALUE *var)
-
-GC requires to mark the C global variables which hold Ruby values.
-
- void rb_global_variable(VALUE *var)
-
-Tells GC to protect these variables.
-
-** Constant Definition
-
- void rb_define_const(VALUE klass, char *name, VALUE val)
-
-Defines a new constant under the class/module.
-
- void rb_define_global_const(char *name, VALUE val)
-
-Defines global constant. This is just work as
-
- rb_define_const(cKernal, name, val)
-
-** Method Definition
-
- rb_define_method(VALUE klass, char *name, VALUE (*func)(), int argc)
-
-Defines a method for the class. func is the function pointer. argc
-is the number of arguments. if argc is -1, the function will receive
-3 arguments argc, argv, and self. if argc is -2, the function will
-receive 2 arguments, self and args, where args is the Ruby array of
-the method arguments.
-
- rb_define_private_method(VALUE klass, char *name, VALUE (*func)(), int argc)
-
-Defines a private method for the class. Arguments are same as
-rb_define_method().
-
- rb_define_singleton_method(VALUE klass, char *name, VALUE (*func)(), int argc)
-
-Defines a singleton method. Arguments are same as rb_define_method().
-
- rb_scan_args(int argc, VALUE *argv, char *fmt, ...)
-
-Retrieve argument from argc, argv. The fmt is the format string for
-the arguments, such as "12" for 1 non-optional argument, 2 optional
-arguments. If `*' appears at the end of fmt, it means the rest of
-the arguments are assigned to corresponding variable, packed in
-array.
-
-** Invoking Ruby method
-
- VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
-
-Invokes the method. To retrieve mid from method name, use rb_intern().
-
- VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
-
-Invokes method, passing arguments by array of values.
-
- VALUE rb_eval_string(char *str)
-
-Compiles and executes the string as Ruby program.
-
- ID rb_intern(char *name)
-
-Returns ID corresponding the name.
-
- char *rb_id2name(ID id)
-
-Returns the name corresponding ID.
-
- char *rb_class2name(VALUE klass)
-
-Returns the name of the class.
-
- int rb_respond_to(VALUE object, ID id)
-
-Returns true if the object responds to the message specified by id.
-
-** Instance Variables
-
- VALUE rb_iv_get(VALUE obj, char *name)
-
-Retrieve the value of the instance variable. If the name is not
-prefixed by `@', that variable shall be inaccessible from Ruby.
-
- VALUE rb_iv_set(VALUE obj, char *name, VALUE val)
-
-Sets the value of the instance variable.
-
-** Control Structure
-
- VALUE rb_iterate(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2)
-
-Calls the function func1, supplying func2 as the block. func1 will be
-called with the argument arg1. func2 receives the value from yield as
-the first argument, arg2 as the second argument.
-
- VALUE rb_yield(VALUE val)
-
-Evaluates the block with value val.
-
- VALUE rb_rescue(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2)
-
-Calls the function func1, with arg1 as the argument. If exception
-occurs during func1, it calls func2 with arg2 as the argument. The
-return value of rb_rescue() is the return value from func1 if no
-exception occurs, from func2 otherwise.
-
- VALUE rb_ensure(VALUE (*func1)(), void *arg1, void (*func2)(), void *arg2)
-
-Calls the function func1 with arg1 as the argument, then calls func2
-with arg2, whenever execution terminated. The return value from
-rb_ensure() is that of func1.
-
-** Exceptions and Errors
-
- void rb_warn(char *fmt, ...)
-
-Prints warning message according to the printf-like format.
-
- void rb_warning(char *fmt, ...)
-
-Prints warning message according to the printf-like format, if
-$VERBOSE is true.
-
- void rb_raise(VALUE exception, char *fmt, ...)
-
-Raises an exception of class exception. The fmt is the format string
-just like printf().
-
- void rb_fatal(char *fmt, ...)
-
-Raises fatal error, terminates the interpreter. No exception handling
-will be done for fatal error, but ensure blocks will be executed.
-
- void rb_bug(char *fmt, ...)
-
-Terminates the interpreter immediately. This function should be
-called under the situation caused by the bug in the interpreter. No
-exception handling nor ensure execution will be done.
-
-** Initialize and Starts the Interpreter
-
-The embedding API are below (not needed for extension libraries):
-
- void ruby_init()
-
-Initializes the interpreter.
-
- void ruby_options(int argc, char **argv)
-
-Process command line arguments for the interpreter.
-
- void ruby_run()
-
-Starts execution of the interpreter.
-
- void ruby_script(char *name)
-
-Specifies the name of the script ($0).
-
-Appendix B. Functions Available in extconf.rb
-
-These functions are available in extconf.rb:
-
- have_library(lib, func)
-
-Checks whether library which contains specified function exists.
-Returns true if the library exists.
-
- have_func(func, header)
-
-Checks whether func exists with header. Returns true if the function
-exists. To check functions in the additional library, you need to
-check that library first using have_library().
-
- have_header(header)
-
-Checks for the header files. Returns true if the header file exists.
-
- create_makefile(target)
-
-Generates the Makefile for the extension library. If you don't invoke
-this method, the compilation will not be done.
-
-/*
- * Local variables:
- * fill-column: 70
- * end:
- */
+Moved to doc/extension.rdoc
diff --git a/README.EXT.ja b/README.EXT.ja
new file mode 100644
index 0000000000..f884ecbb0e
--- /dev/null
+++ b/README.EXT.ja
@@ -0,0 +1 @@
+doc/extension.ja.rdocã«ç§»å‹•ã—ã¾ã—ãŸ
diff --git a/README.EXT.jp b/README.EXT.jp
deleted file mode 100644
index e8be946d68..0000000000
--- a/README.EXT.jp
+++ /dev/null
@@ -1,1188 +0,0 @@
-.\" README.EXT - -*- Text -*- created at: Mon Aug 7 16:45:54 JST 1995
-
-Ruby¤Î³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Îºî¤êÊý¤òÀâÌÀ¤·¤Þ¤¹¡¥
-
-1¡¥´ðÁÃÃμ±
-
-C¤ÎÊÑ¿ô¤Ë¤Ï·¿¤¬¤¢¤ê¡¤¥Ç¡¼¥¿¤Ë¤Ï·¿¤¬¤¢¤ê¤Þ¤»¤ó¡¥¤Ç¤¹¤«¤é¡¤¤¿
-¤È¤¨¤Ð¥Ý¥¤¥ó¥¿¤òint¤ÎÊÑ¿ô¤ËÂåÆþ¤¹¤ë¤È¡¤¤½¤ÎÃͤÏÀ°¿ô¤È¤·¤Æ¼è
-¤ê°·¤ï¤ì¤Þ¤¹¡¥µÕ¤ËRuby¤ÎÊÑ¿ô¤Ë¤Ï·¿¤¬¤Ê¤¯¡¤¥Ç¡¼¥¿¤Ë·¿¤¬¤¢¤ê¤Þ
-¤¹¡¥¤³¤Î°ã¤¤¤Î¤¿¤á¡¤C¤ÈRuby¤ÏÁê¸ß¤ËÊÑ´¹¤·¤Ê¤±¤ì¤Ð¡¤¤ª¸ß¤¤¤Î
-¥Ç¡¼¥¿¤ò¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤»¤ó¡¥
-
-Ruby¤Î¥Ç¡¼¥¿¤ÏVALUE¤È¤¤¤¦C¤Î·¿¤Çɽ¸½¤µ¤ì¤Þ¤¹¡¥VALUE·¿¤Î¥Ç¡¼
-¥¿¤Ï¤½¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤ò¼«Ê¬¤ÇÃΤäƤ¤¤Þ¤¹¡¥¤³¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤È
-¤¤¤¦¤Î¤Ï¥Ç¡¼¥¿(¥ª¥Ö¥¸¥§¥¯¥È)¤Î¼ÂºÝ¤Î¹½Â¤¤ò°ÕÌ£¤·¤Æ¤¤¤Æ¡¤Ruby
-¤Î¥¯¥é¥¹¤È¤Ï¤Þ¤¿°ã¤Ã¤¿¤â¤Î¤Ç¤¹¡¥
-
-VALUE¤«¤éC¤Ë¤È¤Ã¤Æ°ÕÌ£¤Î¤¢¤ë¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¤¿¤á¤Ë¤Ï
-
- (1) VALUE¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤òÃΤë
- (2) VALUE¤òC¤Î¥Ç¡¼¥¿¤ËÊÑ´¹¤¹¤ë
-
-¤ÎξÊý¤¬É¬ÍפǤ¹¡¥(1)¤ò˺¤ì¤ë¤È´Ö°ã¤Ã¤¿¥Ç¡¼¥¿¤ÎÊÑ´¹¤¬¹Ô¤ï¤ì
-¤Æ¡¤ºÇ°­¥×¥í¥°¥é¥à¤¬core dump¤·¤Þ¤¹¡¥
-
-1.1 ¥Ç¡¼¥¿¥¿¥¤¥×
-
-Ruby¤Ë¤Ï¥æ¡¼¥¶¤¬»È¤¦²ÄǽÀ­¤Î¤¢¤ë°Ê²¼¤Î¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹¡¥
-
- T_NIL nil
- T_OBJECT Ä̾ï¤Î¥ª¥Ö¥¸¥§¥¯¥È
- T_CLASS ¥¯¥é¥¹
- T_MODULE ¥â¥¸¥å¡¼¥ë
- T_FLOAT ÉâÆ°¾®¿ôÅÀ¿ô
- T_STRING ʸ»úÎó
- T_REGEXP Àµµ¬É½¸½
- T_ARRAY ÇÛÎó
- T_FIXNUM Fixnum(31bitĹÀ°¿ô)
- T_HASH Ï¢ÁÛÇÛÎó
- T_STRUCT (Ruby¤Î)¹½Â¤ÂÎ
- T_BIGNUM ¿ÇÜĹÀ°¿ô
- T_FILE Æþ½ÐÎÏ
- T_TRUE ¿¿
- T_FALSE µ¶
- T_DATA ¥Ç¡¼¥¿
-
-¤½¤Î¾¤ËÆâÉô¤ÇÍøÍѤµ¤ì¤Æ¤¤¤ë°Ê²¼¤Î¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹¡¥
-
- T_ICLASS
- T_MATCH
- T_VARMAP
- T_SCOPE
- T_NODE
-
-¤Û¤È¤ó¤É¤Î¥¿¥¤¥×¤ÏC¤Î¹½Â¤ÂΤǼÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
-
-1.2 VALUE¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤ò¥Á¥§¥Ã¥¯¤¹¤ë
-
-ruby.h¤Ç¤ÏTYPE()¤È¤¤¤¦¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Æ¡¤VALUE¤Î¥Ç¡¼¥¿
-¥¿¥¤¥×¤òÃΤ뤳¤È¤¬½ÐÍè¤Þ¤¹¡¥TYPE()¥Þ¥¯¥í¤Ï¾å¤Ç¾Ò²ð¤·¤¿T_XXXX
-¤Î·Á¼°¤ÎÄê¿ô¤òÊÖ¤·¤Þ¤¹¡¥VALUE¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤Ë±þ¤¸¤Æ½èÍý¤¹¤ë
-¾ì¹ç¤Ë¤Ï¡¤TYPE()¤ÎÃͤÇʬ´ô¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥
-
- switch (TYPE(obj)) {
- case T_FIXNUM:
- /* FIXNUM¤Î½èÍý */
- break;
- case T_STRING:
- /* ʸ»úÎó¤Î½èÍý */
- break;
- case T_ARRAY:
- /* ÇÛÎó¤Î½èÍý */
- break;
- default:
- /* Îã³°¤òȯÀ¸¤µ¤»¤ë */
- rb_raise(rb_eTypeError, "not valid value");
- break;
- }
-
-¤½¤ì¤È¥Ç¡¼¥¿¥¿¥¤¥×¤ò¥Á¥§¥Ã¥¯¤·¤Æ¡¤Àµ¤·¤¯¤Ê¤±¤ì¤ÐÎã³°¤òȯÀ¸¤¹
-¤ë´Ø¿ô¤¬ÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡¥
-
- void Check_Type(VALUE value, int type)
-
-¤³¤Î´Ø¿ô¤Ïvalue¤¬type¤Ç̵¤±¤ì¤Ð¡¤Îã³°¤òȯÀ¸¤µ¤»¤Þ¤¹¡¥°ú¿ô¤È
-¤·¤ÆÍ¿¤¨¤é¤ì¤¿VALUE¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤¬Àµ¤·¤¤¤«¤É¤¦¤«¥Á¥§¥Ã¥¯¤¹
-¤ë¤¿¤á¤Ë¤Ï¡¤¤³¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
-
-FIXNUM¤ÈNIL¤Ë´Ø¤·¤Æ¤Ï¤è¤ê¹â®¤ÊȽÊÌ¥Þ¥¯¥í¤¬ÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡¥
-
- FIXNUM_P(obj)
- NIL_P(obj)
-
-1.3 VALUE¤òC¤Î¥Ç¡¼¥¿¤ËÊÑ´¹¤¹¤ë
-
-¥Ç¡¼¥¿¥¿¥¤¥×¤¬T_NIL, T_FALSE, T_TRUE¤Ç¤¢¤ë»þ¡¤¥Ç¡¼¥¿¤Ï¤½¤ì¤¾
-¤ìnil, false, true¤Ç¤¹¡¥¤³¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤Ò¤È
-¤Ä¤º¤Ä¤·¤«Â¸ºß¤·¤Þ¤»¤ó¡¥
-
-¥Ç¡¼¥¿¥¿¥¤¥×¤¬T_FIXNUM¤Î»þ¡¤¤³¤ì¤Ï31bit¤Î¥µ¥¤¥º¤ò»ý¤ÄÀ°¿ô¤Ç
-¤¹¡¥FIXNUM¤òC¤ÎÀ°¿ô¤ËÊÑ´¹¤¹¤ë¤¿¤á¤Ë¤Ï¥Þ¥¯¥í¡ÖFIX2INT()¡×¤ò»È
-¤¤¤Þ¤¹¡¥¤½¤ì¤«¤é¡¤FIXNUM¤Ë¸Â¤é¤ºRuby¤Î¥Ç¡¼¥¿¤òÀ°¿ô¤ËÊÑ´¹¤¹¤ë
-¡ÖNUM2INT()¡×¤È¤¤¤¦¥Þ¥¯¥í¤¬¤¢¤ê¤Þ¤¹¡¥¤³¤Î¥Þ¥¯¥í¤Ï¥Ç¡¼¥¿¥¿¥¤
-¥×¤Î¥Á¥§¥Ã¥¯Ìµ¤·¤Ç»È¤¨¤Þ¤¹(À°¿ô¤ËÊÑ´¹¤Ç¤­¤Ê¤¤¾ì¹ç¤Ë¤ÏÎã³°¤¬
-ȯÀ¸¤¹¤ë)¡¥
-
-ƱÍͤ˥Á¥§¥Ã¥¯Ìµ¤·¤Ç»È¤¨¤ëÊÑ´¹¥Þ¥¯¥í¤Ïdouble¤ò¼è¤ê½Ð¤¹
-¡ÖNUM2DBL()¡×¤Èchar*¤ò¼è¤ê½Ð¤¹¡ÖSTR2CSTR()¡×¤¬¤¢¤ê¤Þ¤¹¡¥
-
-¤½¤ì°Ê³°¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤ÏÂбþ¤¹¤ëC¤Î¹½Â¤ÂΤ¬¤¢¤ê¤Þ¤¹¡¥Âбþ¤¹
-¤ë¹½Â¤ÂΤΤ¢¤ëVALUE¤Ï¤½¤Î¤Þ¤Þ¥­¥ã¥¹¥È(·¿ÊÑ´¹)¤¹¤ì¤Ð¹½Â¤ÂΤÎ
-¥Ý¥¤¥ó¥¿¤ËÊÑ´¹¤Ç¤­¤Þ¤¹¡¥
-
-¹½Â¤ÂΤϡÖstruct RXxxxx¡×¤È¤¤¤¦Ì¾Á°¤Çruby.h¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ
-¤¹¡¥Î㤨¤Ðʸ»úÎó¤Ï¡Östruct RString¡×¤Ç¤¹¡¥¼ÂºÝ¤Ë»È¤¦²ÄǽÀ­¤¬
-¤¢¤ë¤Î¤Ïʸ»úÎó¤ÈÇÛÎ󤯤餤¤À¤È»×¤¤¤Þ¤¹¡¥
-
-ruby.h¤Ç¤Ï¹½Â¤ÂΤإ­¥ã¥¹¥È¤¹¤ë¥Þ¥¯¥í¤â¡ÖRXXXXX()¡×(Á´ÉôÂçʸ
-»ú¤Ë¤·¤¿¤â¤Î)¤È¤¤¤¦Ì¾Á°¤ÇÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹(Îã: RSTRING())¡¥
-
-Î㤨¤Ð¡¤Ê¸»úÎóstr¤ÎŤµ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡ÖRSTRING(str)->len¡×¤È
-¤·¡¤Ê¸»úÎóstr¤òchar*¤È¤·¤ÆÆÀ¤ë¤¿¤á¤Ë¤Ï¡ÖRSTRING(str)->ptr¡×
-¤È¤·¤Þ¤¹¡¥ÇÛÎó¤Î¾ì¹ç¤Ë¤Ï¡¤¤½¤ì¤¾¤ì¡ÖRARRAY(ary)->len¡×¡¤
-¡ÖRARRAY(ary)->ptr¡×¤È¤Ê¤ê¤Þ¤¹¡¥
-
-Ruby¤Î¹½Â¤ÂΤòľÀÜ¥¢¥¯¥»¥¹¤¹¤ë»þ¤Ëµ¤¤ò¤Ä¤±¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³
-¤È¤Ï¡¤ÇÛÎó¤äʸ»úÎó¤Î¹½Â¤ÂΤÎÃæ¿È¤Ï»²¾È¤¹¤ë¤À¤±¤Ç¡¤Ä¾ÀÜÊѹ¹¤·
-¤Ê¤¤¤³¤È¤Ç¤¹¡¥Ä¾ÀÜÊѹ¹¤·¤¿¾ì¹ç¡¤¥ª¥Ö¥¸¥§¥¯¥È¤ÎÆâÍÆ¤ÎÀ°¹çÀ­¤¬
-¤È¤ì¤Ê¤¯¤Ê¤Ã¤Æ¡¤»×¤ï¤Ì¥Ð¥°¤Î¸¶°ø¤Ë¤Ê¤ê¤Þ¤¹¡¥
-
-1.4 C¤Î¥Ç¡¼¥¿¤òVALUE¤ËÊÑ´¹¤¹¤ë
-
-VALUE¤Î¼ÂºÝ¤Î¹½Â¤¤Ï
-
- * FIXNUM¤Î¾ì¹ç
-
- 1bitº¸¥·¥Õ¥È¤·¤Æ¡¤LSB¤òΩ¤Æ¤ë¡¥
-
- * ¤½¤Î¾¤Î¥Ý¥¤¥ó¥¿¤Î¾ì¹ç
-
- ¤½¤Î¤Þ¤ÞVALUE¤Ë¥­¥ã¥¹¥È¤¹¤ë¡¥
-
-¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥¤è¤Ã¤Æ¡¤LSB¤ò¥Á¥§¥Ã¥¯¤¹¤ì¤ÐVALUE¤¬FIXNUM¤«¤É
-¤¦¤«¤ï¤«¤ë¤ï¤±¤Ç¤¹(¥Ý¥¤¥ó¥¿¤ÎLSB¤¬Î©¤Ã¤Æ¤¤¤Ê¤¤¤³¤È¤ò²¾Äꤷ¤Æ
-¤¤¤ë)¡¥
-
-¤Ç¤¹¤«¤é¡¤FIXNUM°Ê³°¤ÎRuby¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¹½Â¤ÂΤÏñ¤ËVALUE
-¤Ë¥­¥ã¥¹¥È¤¹¤ë¤À¤±¤ÇVALUE¤ËÊÑ´¹½ÐÍè¤Þ¤¹¡¥¤¿¤À¤·¡¤Ç¤°Õ¤Î¹½Â¤
-ÂΤ¬VALUE¤Ë¥­¥ã¥¹¥È½ÐÍè¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¥­¥ã¥¹¥È¤¹¤ë¤Î
-¤ÏRuby¤ÎÃΤäƤ¤¤ë¹½Â¤ÂÎ(ruby.h¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëstruct RXxxx
-¤Î¤â¤Î)¤À¤±¤Ç¤¹¡¥
-
-FIXNUM¤Ë´Ø¤·¤Æ¤ÏÊÑ´¹¥Þ¥¯¥í¤ò·Ðͳ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥C¤ÎÀ°¿ô
-¤«¤éVALUE¤ËÊÑ´¹¤¹¤ë¥Þ¥¯¥í¤Ï°Ê²¼¤Î¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡¥É¬Íפ˱þ¤¸
-¤Æ»È¤¤Ê¬¤±¤Æ¤¯¤À¤µ¤¤¡¥
-
- INT2FIX() ¤â¤È¤ÎÀ°¿ô¤¬31bit°ÊÆâ¤Ë¼ý¤Þ¤ë¼«¿®¤¬¤¢¤ë»þ
- INT2NUM() Ǥ°Õ¤ÎÀ°¿ô¤«¤éVALUE¤Ø
-
-INT2NUM()¤ÏÀ°¿ô¤¬FIXNUM¤ÎÈϰϤ˼ý¤Þ¤é¤Ê¤¤¾ì¹ç¡¤Bignum¤ËÊÑ´¹
-¤·¤Æ¤¯¤ì¤Þ¤¹(¤¬¡¤¾¯¤·ÃÙ¤¤)¡¥
-
-1.5 Ruby¤Î¥Ç¡¼¥¿¤òÁàºî¤¹¤ë
-
-ÀèÄø¤â½Ò¤Ù¤¿Ä̤ꡤRuby¤Î¹½Â¤ÂΤò¥¢¥¯¥»¥¹¤¹¤ë»þ¤ËÆâÍÆ¤Î¹¹¿·¤ò
-¹Ô¤¦¤³¤È¤Ï´«¤á¤é¤ì¤Þ¤»¤ó¡¥¤Ç¡¤Ruby¤Î¥Ç¡¼¥¿¤òÁàºî¤¹¤ë»þ¤Ë¤Ï
-Ruby¤¬ÍѰդ·¤Æ¤¤¤ë´Ø¿ô¤òÍѤ¤¤Æ¤¯¤À¤µ¤¤¡¥
-
-¤³¤³¤Ç¤Ï¤â¤Ã¤È¤â»È¤ï¤ì¤ë¤Ç¤¢¤í¤¦Ê¸»úÎó¤ÈÇÛÎó¤ÎÀ¸À®/Áàºî¤ò¹Ô
-¤¤´Ø¿ô¤ò¤¢¤²¤Þ¤¹(Á´Éô¤Ç¤Ï¤Ê¤¤¤Ç¤¹)¡¥
-
- ʸ»úÎó¤ËÂФ¹¤ë´Ø¿ô
-
- rb_str_new(char *ptr, int len)
-
- ¿·¤·¤¤Ruby¤Îʸ»úÎó¤òÀ¸À®¤¹¤ë¡¥
-
- rb_str_new2(char *ptr)
-
- C¤Îʸ»úÎ󤫤éRuby¤Îʸ»úÎó¤òÀ¸À®¤¹¤ë¡¥¤³¤Î´Ø¿ô¤Îµ¡Ç½¤Ï
- rb_str_new(ptr, strlen(ptr))¤ÈƱÅù¤Ç¤¢¤ë¡¥
-
- rb_tainted_str_new(char *ptr, int len)
-
- ±øÀ÷¥Þ¡¼¥¯¤¬Éղ䵤줿¿·¤·¤¤Ruby¤Îʸ»úÎó¤òÀ¸À®¤¹¤ë¡¥³°Éô
- ¤«¤é¤Î¥Ç¡¼¥¿¤Ë´ð¤Å¤¯Ê¸»úÎó¤Ë¤Ï±øÀ÷¥Þ¡¼¥¯¤¬Éղ䵤ì¤ë¤Ù¤­
- ¤Ç¤¢¤ë¡¥
-
- rb_tainted_str_new2(char *ptr)
-
- C¤Îʸ»úÎ󤫤鱸À÷¥Þ¡¼¥¯¤¬Éղ䵤줿Ruby¤Îʸ»úÎó¤òÀ¸À®¤¹¤ë¡¥
-
- rb_str_cat(VALUE str, char *ptr, int len)
-
- Ruby¤Îʸ»úÎóstr¤Ëlen¥Ð¥¤¥È¤Îʸ»úÎóptr¤òÄɲ乤롥
-
- ÇÛÎó¤ËÂФ¹¤ë´Ø¿ô
-
- rb_ary_new()
-
- Í×ÁǤ¬0¤ÎÇÛÎó¤òÀ¸À®¤¹¤ë¡¥
-
- rb_ary_new2(int len)
-
- Í×ÁǤ¬0¤ÎÇÛÎó¤òÀ¸À®¤¹¤ë¡¥lenÍ×ÁÇʬ¤ÎÎΰè¤ò¤¢¤é¤«¤¸¤á³ä¤ê
- Åö¤Æ¤Æ¤ª¤¯¡¥
-
- rb_ary_new3(int n, ...)
-
- °ú¿ô¤Ç»ØÄꤷ¤¿nÍ×ÁǤò´Þ¤àÇÛÎó¤òÀ¸À®¤¹¤ë¡¥
-
- rb_ary_new4(int n, VALUE *elts)
-
- ÇÛÎó¤ÇÍ¿¤¨¤¿nÍ×ÁǤÎÇÛÎó¤òÀ¸À®¤¹¤ë¡¥
-
- rb_ary_push(VALUE ary, VALUE val)
- rb_ary_pop(VALUE ary)
- rb_ary_shift(VALUE ary)
- rb_ary_unshift(VALUE ary, VALUE val)
- rb_ary_entry(VALUE ary, int idx)
-
- Array¤ÎƱ̾¤Î¥á¥½¥Ã¥É¤ÈƱ¤¸Æ¯¤­¤ò¤¹¤ë´Ø¿ô¡¥Âè1°ú¿ô¤Ïɬ¤º
- ÇÛÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡¥
-
-2¡¥Ruby¤Îµ¡Ç½¤ò»È¤¦
-
-¸¶ÍýŪ¤ËRuby¤Ç½ñ¤±¤ë¤³¤È¤ÏC¤Ç¤â½ñ¤±¤Þ¤¹¡¥Ruby¤½¤Î¤â¤Î¤¬C¤Çµ­
-½Ò¤µ¤ì¤Æ¤¤¤ë¤ó¤Ç¤¹¤«¤é¡¤ÅöÁ³¤È¤¤¤¨¤ÐÅöÁ³¤Ê¤ó¤Ç¤¹¤±¤É¡¥¤³¤³¤Ç
-¤ÏRuby¤Î³ÈÄ¥¤Ë»È¤¦¤³¤È¤¬Â¿¤¤¤À¤í¤¦¤Èͽ¬¤µ¤ì¤ëµ¡Ç½¤òÃæ¿´¤Ë¾Ò
-²ð¤·¤Þ¤¹¡¥
-
-2.1 Ruby¤Ëµ¡Ç½¤òÄɲ乤ë
-
-Ruby¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¨¤ÐRuby¥¤¥ó¥¿¥×¥ê¥¿¤Ë¿·¤·¤¤µ¡Ç½
-¤òÄɲ乤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡¥Ruby¤Ç¤Ï°Ê²¼¤Îµ¡Ç½¤òÄɲä¹¤ë´Ø¿ô¤¬
-Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
-
- * ¥¯¥é¥¹¡¤¥â¥¸¥å¡¼¥ë
- * ¥á¥½¥Ã¥É¡¤ÆÃ°Û¥á¥½¥Ã¥É¤Ê¤É
- * Äê¿ô
-
-¤Ç¤Ï½ç¤Ë¾Ò²ð¤·¤Þ¤¹¡¥
-
-2.1.1 ¥¯¥é¥¹/¥â¥¸¥å¡¼¥ëÄêµÁ
-
-¥¯¥é¥¹¤ä¥â¥¸¥å¡¼¥ë¤òÄêµÁ¤¹¤ë¤¿¤á¤Ë¤Ï¡¤°Ê²¼¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
-
- VALUE rb_define_class(char *name, VALUE super)
- VALUE rb_define_module(char *name)
-
-¤³¤ì¤é¤Î´Ø¿ô¤Ï¿·¤·¤¯ÄêµÁ¤µ¤ì¤¿¥¯¥é¥¹¤ä¥â¥¸¥å¡¼¥ë¤òÊÖ¤·¤Þ¤¹¡¥
-¥á¥½¥Ã¥É¤äÄê¿ô¤ÎÄêµÁ¤Ë¤³¤ì¤é¤ÎÃͤ¬É¬ÍפʤΤǡ¤¤Û¤È¤ó¤É¤Î¾ì¹ç
-¤ÏÌá¤êÃͤòÊÑ¿ô¤Ë³ÊǼ¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡¥
-
-¥¯¥é¥¹¤ä¥â¥¸¥å¡¼¥ë¤ò¾¤Î¥¯¥é¥¹¤ÎÆâÉô¤Ë¥Í¥¹¥È¤·¤ÆÄêµÁ¤¹¤ë»þ¤Ë
-¤Ï°Ê²¼¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
-
- VALUE rb_define_class_under(VALUE outer, char *name, VALUE super)
- VALUE rb_define_module_under(VALUE outer, char *name)
-
-2.1.2 ¥á¥½¥Ã¥É/ÆÃ°Û¥á¥½¥Ã¥ÉÄêµÁ
-
-¥á¥½¥Ã¥É¤äÆÃ°Û¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¤Ë¤Ï°Ê²¼¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
-
- void rb_define_method(VALUE klass, char *name,
- VALUE (*func)(), int argc)
-
- void rb_define_singleton_method(VALUE object, char *name,
- VALUE (*func)(), int argc)
-
-
-ǰ¤Î¤¿¤áÀâÌÀ¤¹¤ë¤È¡ÖÆÃ°Û¥á¥½¥Ã¥É¡×¤È¤Ï¡¤¤½¤ÎÆÃÄê¤Î¥ª¥Ö¥¸¥§¥¯
-¥È¤ËÂФ·¤Æ¤À¤±Í­¸ú¤Ê¥á¥½¥Ã¥É¤Ç¤¹¡¥Ruby¤Ç¤Ï¤è¤¯Smalltalk¤Ë¤ª
-¤±¤ë¥¯¥é¥¹¥á¥½¥Ã¥É¤È¤·¤Æ¡¤¥¯¥é¥¹¤ËÂФ¹¤ëÆÃ°Û¥á¥½¥Ã¥É¤¬»È¤ï¤ì
-¤Þ¤¹¡¥
-
-¤³¤ì¤é¤Î´Ø¿ô¤Î argc¤È¤¤¤¦°ú¿ô¤ÏC¤Î´Ø¿ô¤ØÅϤµ¤ì¤ë°ú¿ô¤Î¿ô(¤È
-·Á¼°)¤ò·è¤á¤Þ¤¹¡¥argc¤¬0°Ê¾å¤Î»þ¤Ï´Ø¿ô¤Ë°ú¤­ÅϤ¹°ú¿ô¤Î¿ô¤ò°Õ
-Ì£¤·¤Þ¤¹¡¥16¸Ä°Ê¾å¤Î°ú¿ô¤Ï»È¤¨¤Þ¤»¤ó(¤¬¡¤Íפê¤Þ¤»¤ó¤è¤Í¡¤¤½
-¤ó¤Ê¤Ë)¡¥¼ÂºÝ¤Î´Ø¿ô¤Ë¤ÏÀèÆ¬¤Î°ú¿ô¤È¤·¤Æself¤¬Í¿¤¨¤é¤ì¤Þ¤¹¤Î
-¤Ç¡¤»ØÄꤷ¤¿¿ô¤è¤ê1¿¤¤°ú¿ô¤ò»ý¤Ä¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥
-
-argc¤¬Éé¤Î»þ¤Ï°ú¿ô¤Î¿ô¤Ç¤Ï¤Ê¤¯¡¤·Á¼°¤ò»ØÄꤷ¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥
-argc¤¬-1¤Î»þ¤Ï°ú¿ô¤òÇÛÎó¤ËÆþ¤ì¤ÆÅϤµ¤ì¤Þ¤¹¡¥argc¤¬-2¤Î»þ¤Ï°ú
-¿ô¤ÏRuby¤ÎÇÛÎó¤È¤·¤ÆÅϤµ¤ì¤Þ¤¹¡¥
-
-¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë´Ø¿ô¤Ï¤â¤¦Æó¤Ä¤¢¤ê¤Þ¤¹¡¥¤Ò¤È¤Ä¤Ïprivate¥á
-¥½¥Ã¥É¤òÄêµÁ¤¹¤ë´Ø¿ô¤Ç¡¤°ú¿ô¤Ïrb_define_method()¤ÈƱ¤¸¤Ç¤¹¡¥
-
- void rb_define_private_method(VALUE klass, char *name,
- VALUE (*func)(), int argc)
-
-private¥á¥½¥Ã¥É¤È¤Ï´Ø¿ô·Á¼°¤Ç¤·¤«¸Æ¤Ó½Ð¤¹¤³¤È¤Î½ÐÍè¤Ê¤¤¥á¥½¥Ã
-¥É¤Ç¤¹¡¥
-
-¤â¤¦¤Ò¤È¤Ä¤Ï¥â¥¸¥å¡¼¥ë´Ø¿ô¤òÄêµÁ¤¹¤ë¤â¤Î¤Ç¤¹¡¥¥â¥¸¥å¡¼¥ë´Ø¿ô
-¤È¤Ï¥â¥¸¥å¡¼¥ë¤ÎÆÃ°Û¥á¥½¥Ã¥É¤Ç¤¢¤ê¡¤Æ±»þ¤Ëprivate¥á¥½¥Ã¥É¤Ç
-¤â¤¢¤ë¤â¤Î¤Ç¤¹¡¥Îã¤ò¤¢¤²¤ë¤ÈMath¥â¥¸¥å¡¼¥ë¤Îsqrt()¤Ê¤É¤¬¤¢¤²
-¤é¤ì¤Þ¤¹¡¥¤³¤Î¥á¥½¥Ã¥É¤Ï
-
- Math.sqrt(4)
-
-¤È¤¤¤¦·Á¼°¤Ç¤â
-
- include Math
- sqrt(4)
-
-¤È¤¤¤¦·Á¼°¤Ç¤â»È¤¨¤Þ¤¹¡¥¥â¥¸¥å¡¼¥ë´Ø¿ô¤òÄêµÁ¤¹¤ë´Ø¿ô¤Ï°Ê²¼¤Î
-Ä̤ê¤Ç¤¹¡¥
-
- void rb_define_module_function(VALUE module, char *name,
- VALUE (*func)(), int argc)
-
-´Ø¿ôŪ¥á¥½¥Ã¥É(Kernel¥â¥¸¥å¡¼¥ë¤Îprivate method)¤òÄêµÁ¤¹¤ë¤¿
-¤á¤Î´Ø¿ô¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡¥
-
- void rb_define_global_function(char *name, VALUE (*func)(), int argc)
-
-
-¥á¥½¥Ã¥É¤ÎÊÌ̾¤òÄêµÁ¤¹¤ë¤¿¤á¤Î´Ø¿ô¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
-
- void rb_define_alias(VALUE module, const char* new, const char* old);
-
-2.1.3 Äê¿ôÄêµÁ
-
-³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤¬É¬ÍפÊÄê¿ô¤Ï¤¢¤é¤«¤¸¤áÄêµÁ¤·¤Æ¤ª¤¤¤¿Êý¤¬Îɤ¤
-¤Ç¤·¤ç¤¦¡¥Äê¿ô¤òÄêµÁ¤¹¤ë´Ø¿ô¤ÏÆó¤Ä¤¢¤ê¤Þ¤¹¡¥
-
- void rb_define_const(VALUE klass, char *name, VALUE val)
- void rb_define_global_const(char *name, VALUE val)
-
-Á°¼Ô¤ÏÆÃÄê¤Î¥¯¥é¥¹/¥â¥¸¥å¡¼¥ë¤Ë°¤¹¤ëÄê¿ô¤òÄêµÁ¤¹¤ë¤â¤Î¡¤¸å
-¼Ô¤Ï¥°¥í¡¼¥Ð¥ë¤ÊÄê¿ô¤òÄêµÁ¤¹¤ë¤â¤Î¤Ç¤¹¡¥
-
-2.2 Ruby¤Îµ¡Ç½¤òC¤«¤é¸Æ¤Ó½Ð¤¹
-
-´û¤Ë¡Ø1.5 Ruby¤Î¥Ç¡¼¥¿¤òÁàºî¤¹¤ë¡Ù¤Ç°ìÉô¾Ò²ð¤·¤¿¤è¤¦¤Ê´Ø¿ô¤ò
-»È¤¨¤Ð¡¤Ruby¤Îµ¡Ç½¤ò¼Â¸½¤·¤Æ¤¤¤ë´Ø¿ô¤òľÀܸƤӽФ¹¤³¤È¤¬½ÐÍè
-¤Þ¤¹¡¥
-
-# ¤³¤Î¤è¤¦¤Ê´Ø¿ô¤Î°ìÍ÷ɽ¤Ï¤¤¤Þ¤Î¤È¤³¤í¤¢¤ê¤Þ¤»¤ó¡¥¥½¡¼¥¹¤ò¸«
-# ¤ë¤·¤«¤Ê¤¤¤Ç¤¹¤Í¡¥
-
-¤½¤ì°Ê³°¤Ë¤âRuby¤Îµ¡Ç½¤ò¸Æ¤Ó½Ð¤¹ÊýË¡¤Ï¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡¥
-
-2.2.1 Ruby¤Î¥×¥í¥°¥é¥à¤òeval¤¹¤ë
-
-C¤«¤éRuby¤Îµ¡Ç½¤ò¸Æ¤Ó½Ð¤¹¤â¤Ã¤È¤â´Êñ¤ÊÊýË¡¤È¤·¤Æ¡¤Ê¸»úÎó¤Ç
-Í¿¤¨¤é¤ì¤¿Ruby¤Î¥×¥í¥°¥é¥à¤òɾ²Á¤¹¤ë°Ê²¼¤Î´Ø¿ô¤¬¤¢¤ê¤Þ¤¹¡¥
-
- VALUE rb_eval_string(char *str)
-
-¤³¤Îɾ²Á¤Ï¸½ºß¤Î´Ä¶­¤Ç¹Ô¤ï¤ì¤Þ¤¹¡¥¤Ä¤Þ¤ê¡¤¸½ºß¤Î¥í¡¼¥«¥ëÊÑ¿ô
-¤Ê¤É¤ò¼õ¤±·Ñ¤®¤Þ¤¹¡¥
-
-2.2.2 ID¤Þ¤¿¤Ï¥·¥ó¥Ü¥ë
-
-C¤«¤éʸ»úÎó¤ò·Ðͳ¤»¤º¤ËRuby¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤â¤Ç¤­¤Þ
-¤¹¡¥¤½¤ÎÁ°¤Ë¡¤Ruby¥¤¥ó¥¿¥×¥ê¥¿Æâ¤Ç¥á¥½¥Ã¥É¤äÊÑ¿ô̾¤ò»ØÄꤹ¤ë
-»þ¤Ë»È¤ï¤ì¤Æ¤¤¤ëID¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡¥
-
-ID¤È¤ÏÊÑ¿ô̾¡¤¥á¥½¥Ã¥É̾¤òɽ¤¹À°¿ô¤Ç¤¹¡¥Ruby¤ÎÃæ¤Ç¤Ï
-
- :¼±ÊÌ»Ò
-
-¤Ç¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤¹¡¥C¤«¤é¤³¤ÎÀ°¿ô¤òÆÀ¤ë¤¿¤á¤Ë¤Ï´Ø¿ô
-
- rb_intern(char *name)
-
-¤ò»È¤¤¤Þ¤¹¡¥¤Þ¤¿°ìʸ»ú¤Î±é»»»Ò¤Ï¤½¤Îʸ»ú¥³¡¼¥É¤¬¤½¤Î¤Þ¤Þ¥·¥ó
-¥Ü¥ë¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥Ruby¤«¤é°ú¿ô¤È¤·¤ÆÍ¿¤¨¤é¤ì¤¿¥·¥ó¥Ü¥ë(¤Þ
-¤¿¤Ïʸ»úÎó)¤òID¤ËÊÑ´¹¤¹¤ë¤Ë¤Ï°Ê²¼¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
-
- rb_to_id(VALUE symbol)
-
-2.2.3 C¤«¤éRuby¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹
-
-C¤«¤éʸ»úÎó¤ò·Ðͳ¤»¤º¤ËRuby¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤¿¤á¤Ë¤Ï°Ê²¼
-¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
-
- VALUE rb_funcall(VALUE recv, ID mid, int argc, ...)
-
-¤³¤Î´Ø¿ô¤Ï¥ª¥Ö¥¸¥§¥¯¥Èrecv¤Îmid¤Ç»ØÄꤵ¤ì¤ë¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð
-¤·¤Þ¤¹¡¥¤½¤Î¾¤Ë°ú¿ô¤Î»ØÄê¤Î»ÅÊý¤¬°ã¤¦°Ê²¼¤Î´Ø¿ô¤â¤¢¤ê¤Þ¤¹¡¥
-
- VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
- VALUE rb_apply(VALUE recv, ID mid, VALUE args)
-
-apply¤Ë¤Ï°ú¿ô¤È¤·¤ÆRuby¤ÎÇÛÎó¤òÍ¿¤¨¤Þ¤¹¡¥
-
-2.2.4 ÊÑ¿ô/Äê¿ô¤ò»²¾È/¹¹¿·¤¹¤ë
-
-C¤«¤é´Ø¿ô¤ò»È¤Ã¤Æ»²¾È¡¦¹¹¿·¤Ç¤­¤ë¤Î¤Ï¡¤Äê¿ô¡¤¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ
-¿ô¤Ç¤¹¡¥Âç°èÊÑ¿ô¤Ï°ìÉô¤Î¤â¤Î¤ÏC¤ÎÂç°èÊÑ¿ô¤È¤·¤Æ¥¢¥¯¥»¥¹¤Ç¤­
-¤Þ¤¹¡¥¥í¡¼¥«¥ëÊÑ¿ô¤ò»²¾È¤¹¤ëÊýË¡¤Ï¸ø³«¤·¤Æ¤¤¤Þ¤»¤ó¡¥
-
-¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤ò»²¾È¡¦¹¹¿·¤¹¤ë´Ø¿ô¤Ï°Ê²¼¤ÎÄÌ
-¤ê¤Ç¤¹¡¥
-
- VALUE rb_ivar_get(VALUE obj, ID id)
- VALUE rb_ivar_set(VALUE obj, ID id, VALUE val)
-
-id¤Ïrb_intern()¤ÇÆÀ¤é¤ì¤ë¤â¤Î¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
-
-Äê¿ô¤ò»²¾È¤¹¤ë¤Ë¤Ï°Ê²¼¤Î´Ø¿ô¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
-
- VALUE rb_const_get(VALUE obj, ID id)
-
-Äê¿ô¤ò¿·¤·¤¯ÄêµÁ¤¹¤ë¤¿¤á¤Ë¤Ï¡Ø2.1.3 Äê¿ôÄêµÁ¡Ù¤Ç¾Ò²ð¤µ
-¤ì¤Æ¤¤¤ë´Ø¿ô¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
-
-3¡¥Ruby¤ÈC¤È¤Î¾ðÊó¶¦Í­
-
-C¸À¸ì¤ÈRuby¤Î´Ö¤Ç¾ðÊó¤ò¶¦Í­¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ²òÀ⤷¤Þ¤¹¡¥
-
-3.1 C¤«¤é»²¾È¤Ç¤­¤ëRuby¤ÎÄê¿ô
-
-°Ê²¼¤ÎRuby¤ÎÄê¿ô¤ÏC¤Î¥ì¥Ù¥ë¤«¤é»²¾È¤Ç¤­¤Þ¤¹¡¥
-
- Qtrue
- Qfalse
-
- ¿¿µ¶ÃÍ¡¥Qfalse¤ÏC¸À¸ì¤Ç¤âµ¶¤È¤ß¤Ê¤µ¤ì¤Þ¤¹(¤Ä¤Þ¤ê0)¡¥
-
- Qnil
-
- C¸À¸ì¤«¤é¸«¤¿¡Önil¡×¡¥
-
-3.2 C¤ÈRuby¤Ç¶¦Í­¤µ¤ì¤ëÂç°èÊÑ¿ô
-
-C¤ÈRuby¤ÇÂç°èÊÑ¿ô¤ò»È¤Ã¤Æ¾ðÊó¤ò¶¦Í­¤Ç¤­¤Þ¤¹¡¥¶¦Í­¤Ç¤­¤ëÂç°è
-ÊÑ¿ô¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¼ïÎब¤¢¤ê¤Þ¤¹¡¥¤½¤Î¤Ê¤«¤Ç¤â¤Ã¤È¤âÎɤ¯»È¤ï
-¤ì¤ë¤È»×¤ï¤ì¤ë¤Î¤Ïrb_define_variable()¤Ç¤¹¡¥
-
- void rb_define_variable(char *name, VALUE *var)
-
-¤³¤Î´Ø¿ô¤ÏRuby¤ÈC¤È¤Ç¶¦Í­¤¹¤ëÂç°èÊÑ¿ô¤òÄêµÁ¤·¤Þ¤¹¡¥ÊÑ¿ô̾¤¬
-`$'¤Ç»Ï¤Þ¤é¤Ê¤¤»þ¤Ë¤Ï¼«Æ°Åª¤ËÄɲ䵤ì¤Þ¤¹¡¥¤³¤ÎÊÑ¿ô¤ÎÃͤòÊÑ
-¹¹¤¹¤ë¤È¼«Æ°Åª¤ËRuby¤ÎÂбþ¤¹¤ëÊÑ¿ô¤ÎÃͤâÊѤï¤ê¤Þ¤¹¡¥
-
-¤Þ¤¿Ruby¦¤«¤é¤Ï¹¹¿·¤Ç¤­¤Ê¤¤ÊÑ¿ô¤â¤¢¤ê¤Þ¤¹¡¥¤³¤Îread only¤Î
-ÊÑ¿ô¤Ï°Ê²¼¤Î´Ø¿ô¤ÇÄêµÁ¤·¤Þ¤¹¡¥
-
- void rb_define_readonly_variable(char *name, VALUE *var)
-
-¤³¤ì¤éÊÑ¿ô¤Î¾¤Ëhook¤ò¤Ä¤±¤¿Âç°èÊÑ¿ô¤òÄêµÁ¤Ç¤­¤Þ¤¹¡¥hookÉÕ¤­
-¤ÎÂç°èÊÑ¿ô¤Ï°Ê²¼¤Î´Ø¿ô¤òÍѤ¤¤ÆÄêµÁ¤·¤Þ¤¹¡¥hookÉÕ¤­Âç°èÊÑ¿ô¤Î
-Ãͤλ²¾È¤äÀßÄê¤Ïhook¤Ç¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥
-
- void rb_define_hooked_variable(char *name, VALUE *var,
- VALUE (*getter)(), VALUE (*setter)())
-
-¤³¤Î´Ø¿ô¤ÏC¤Î´Ø¿ô¤Ë¤è¤Ã¤Æhook¤Î¤Ä¤±¤é¤ì¤¿Âç°èÊÑ¿ô¤òÄêµÁ¤·¤Þ
-¤¹¡¥ÊÑ¿ô¤¬»²¾È¤µ¤ì¤¿»þ¤Ë¤Ï´Ø¿ôgetter¤¬¡¤ÊÑ¿ô¤ËÃͤ¬¥»¥Ã¥È¤µ¤ì
-¤¿»þ¤Ë¤Ï´Ø¿ôsetter¤¬¸Æ¤Ð¤ì¤ë¡¥hook¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ïgetter¤ä
-setter¤Ë0¤ò»ØÄꤷ¤Þ¤¹¡¥
-
-# getter¤âsetter¤â0¤Ê¤é¤Ðrb_define_variable()¤ÈƱ¤¸¤Ë¤Ê¤ë¡¥
-
-¤½¤ì¤«¤é¡¤C¤Î´Ø¿ô¤Ë¤è¤Ã¤Æ¼Â¸½¤µ¤ì¤ëRuby¤ÎÂç°èÊÑ¿ô¤òÄêµÁ¤¹¤ë
-´Ø¿ô¤¬¤¢¤ê¤Þ¤¹¡¥
-
- void rb_define_virtual_variable(char *name,
- VALUE (*getter)(), VALUE (*setter)())
-
-¤³¤Î´Ø¿ô¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤¿Ruby¤ÎÂç°èÊÑ¿ô¤¬»²¾È¤µ¤ì¤¿»þ¤Ë¤Ï
-getter¤¬¡¤ÊÑ¿ô¤ËÃͤ¬¥»¥Ã¥È¤µ¤ì¤¿»þ¤Ë¤Ïsetter¤¬¸Æ¤Ð¤ì¤Þ¤¹¡¥
-
-getter¤Èsetter¤Î»ÅÍͤϰʲ¼¤ÎÄ̤ê¤Ç¤¹¡¥
-
- (*getter)(ID id, void *data, struct global_entry* entry);
- (*setter)(VALUE val, ID id, void *data, struct global_entry* entry);
-
-3.3 C¤Î¥Ç¡¼¥¿¤òRuby¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¹¤ë
-
-C¤ÎÀ¤³¦¤ÇÄêµÁ¤µ¤ì¤¿¥Ç¡¼¥¿(¹½Â¤ÂÎ)¤òRuby¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ
-¼è¤ê°·¤¤¤¿¤¤¾ì¹ç¤¬¤¢¤ê¤¨¤Þ¤¹¡¥¤³¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï¡¤Data¤È¤¤¤¦
-Ruby¥ª¥Ö¥¸¥§¥¯¥È¤ËC¤Î¹½Â¤ÂÎ(¤Ø¤Î¥Ý¥¤¥ó¥¿)¤ò¤¯¤ë¤à¤³¤È¤ÇRuby
-¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ¼è¤ê°·¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥
-
-Data¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¤Æ¹½Â¤ÂΤòRuby¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥«¥×¥»¥ë
-²½¤¹¤ë¤¿¤á¤Ë¤Ï¡¤°Ê²¼¤Î¥Þ¥¯¥í¤ò»È¤¤¤Þ¤¹¡¥
-
- Data_Wrap_Struct(klass, mark, free, ptr)
-
-¤³¤Î¥Þ¥¯¥í¤ÎÌá¤êÃͤÏÀ¸À®¤µ¤ì¤¿Data¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡¥
-
-klass¤Ï¤³¤ÎData¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¯¥é¥¹¤Ç¤¹¡¥ptr¤Ï¥«¥×¥»¥ë²½¤¹¤ë
-C¤Î¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¹¡¥mark¤Ï¤³¤Î¹½Â¤ÂΤ¬Ruby¤Î¥ª¥Ö¥¸¥§
-¥¯¥È¤Ø¤Î»²¾È¤¬¤¢¤ë»þ¤Ë»È¤¦´Ø¿ô¤Ç¤¹¡¥¤½¤Î¤è¤¦¤Ê»²¾È¤ò´Þ¤Þ¤Ê¤¤
-»þ¤Ë¤Ï0¤ò»ØÄꤷ¤Þ¤¹¡¥
-
-# ¤½¤Î¤è¤¦¤Ê»²¾È¤Ï´«¤á¤é¤ì¤Þ¤»¤ó¡¥
-
-free¤Ï¤³¤Î¹½Â¤ÂΤ¬¤â¤¦ÉÔÍפˤʤä¿»þ¤Ë¸Æ¤Ð¤ì¤ë´Ø¿ô¤Ç¤¹¡¥¤³¤Î
-´Ø¿ô¤¬¥¬¡¼¥Ù¡¼¥¸¥³¥ì¥¯¥¿¤«¤é¸Æ¤Ð¤ì¤Þ¤¹¡¥
-
-C¤Î¹½Â¤ÂΤγäÅö¤ÈData¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®¤òƱ»þ¤Ë¹Ô¤¦¥Þ¥¯¥í¤È
-¤·¤Æ°Ê²¼¤Î¤â¤Î¤¬Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
-
- Data_Make_Struct(klass, type, mark, free, sval)
-
-¤³¤Î¥Þ¥¯¥í¤ÎÌá¤êÃͤÏÀ¸À®¤µ¤ì¤¿Data¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡¥
-
-klass, mark, free¤ÏData_Wrap_Struct¤ÈƱ¤¸Æ¯¤­¤ò¤·¤Þ¤¹¡¥type
-¤Ï³ä¤êÅö¤Æ¤ëC¹½Â¤ÂΤη¿¤Ç¤¹¡¥³ä¤êÅö¤Æ¤é¤ì¤¿¹½Â¤ÂΤÏÊÑ¿ôsval
-¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡¥¤³¤ÎÊÑ¿ô¤Î·¿¤Ï (type*) ¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥
-
-Data¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¥Ý¥¤¥ó¥¿¤ò¼è¤ê½Ð¤¹¤Î¤Ï°Ê²¼¤Î¥Þ¥¯¥í¤òÍѤ¤
-¤Þ¤¹¡¥
-
- Data_Get_Struct(obj, type, sval)
-
-C¤Î¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤ÏÊÑ¿ôsval¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡¥
-
-¤³¤ì¤é¤ÎData¤Î»È¤¤Êý¤Ï¤Á¤ç¤Ã¤Èʬ¤«¤ê¤Ë¤¯¤¤¤Î¤Ç¡¤¸å¤ÇÀâÌÀ¤¹¤ë
-ÎãÂê¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
-
-4¡¥ÎãÂê - dbm¥Ñ¥Ã¥±¡¼¥¸¤òºî¤ë
-
-¤³¤³¤Þ¤Ç¤ÎÀâÌÀ¤Ç¤È¤ê¤¢¤¨¤º³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Ïºî¤ì¤ë¤Ï¤º¤Ç¤¹¡¥
-Ruby¤Îext¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¹¤Ç¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ëdbm¥é¥¤¥Ö¥é¥ê¤òÎã¤Ë
-¤·¤ÆÃʳ¬Åª¤ËÀâÌÀ¤·¤Þ¤¹¡¥
-
-(1) ¥Ç¥£¥ì¥¯¥È¥ê¤òºî¤ë
-
- % mkdir ext/dbm
-
-Ruby 1.1¤«¤é¤ÏǤ°Õ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç¥À¥¤¥Ê¥ß¥Ã¥¯¥é¥¤¥Ö¥é¥ê¤òºî
-¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡¥Ruby¤ËÀÅŪ¤Ë¥ê¥ó¥¯¤¹¤ë¾ì¹ç¤Ë
-¤ÏRuby¤òŸ³«¤·¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¡¤ext¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë³ÈÄ¥
-¥é¥¤¥Ö¥é¥êÍѤΥǥ£¥ì¥¯¥È¥ê¤òºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥Ì¾Á°¤ÏŬÅö¤Ë
-Áª¤ó¤Ç¹½¤¤¤Þ¤»¤ó¡¥
-
-(2) MANIFEST¥Õ¥¡¥¤¥ë¤òºî¤ë
-
- % cd ext/dbm
- % touch MANIFEST
-
-³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤Ë¤ÏMANIFEST¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬
-ɬÍפʤΤǡ¤¤È¤ê¤¢¤¨¤º¶õ¤Î¥Õ¥¡¥¤¥ë¤òºî¤Ã¤Æ¤ª¤­¤Þ¤¹¡¥¸å¤Ç¤³¤Î
-¥Õ¥¡¥¤¥ë¤Ë¤ÏɬÍפʥե¡¥¤¥ë°ìÍ÷¤¬Æþ¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥
-
-MANIFEST¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ï¡¤ÀÅŪ¥ê¥ó¥¯¤Îmake¤Î»þ¤Ë¥Ç¥£¥ì¥¯¥È¥ê
-¤¬³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤ò´Þ¤ó¤Ç¤¤¤ë¤«¤É¤¦¤«È½Äꤹ¤ë¤¿¤á¤Ë»È¤ï¤ì¤ì¤Æ
-¤¤¤Þ¤¹¡¥¥À¥¤¥Ê¥ß¥Ã¥¯¥é¥¤¥Ö¥é¥ê¤òºî¤ë¾ì¹ç¤Ë¤Ïɬ¤º¤·¤âɬÍפǤÏ
-¤¢¤ê¤Þ¤»¤ó¡¥
-
-(3) À߷פ¹¤ë
-
-¤Þ¤¢¡¤ÅöÁ³¤Ê¤ó¤Ç¤¹¤±¤É¡¤¤É¤¦¤¤¤¦µ¡Ç½¤ò¼Â¸½¤¹¤ë¤«¤É¤¦¤«¤Þ¤ºÀß
-·×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¤É¤ó¤Ê¥¯¥é¥¹¤ò¤Ä¤¯¤ë¤«¡¤¤½¤Î¥¯¥é¥¹¤Ë¤Ï
-¤É¤ó¤Ê¥á¥½¥Ã¥É¤¬¤¢¤ë¤«¡¤¥¯¥é¥¹¤¬Ä󶡤¹¤ëÄê¿ô¤Ê¤É¤Ë¤Ä¤¤¤ÆÀß·×
-¤·¤Þ¤¹¡¥dbm¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¤Ïext/dbm.doc¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
-
-(4) C¥³¡¼¥É¤ò½ñ¤¯
-
-³ÈÄ¥¥é¥¤¥Ö¥é¥êËÜÂΤȤʤëC¸À¸ì¤Î¥½¡¼¥¹¤ò½ñ¤­¤Þ¤¹¡¥C¸À¸ì¤Î¥½¡¼
-¥¹¤¬¤Ò¤È¤Ä¤Î»þ¤Ë¤Ï¡Ö¥é¥¤¥Ö¥é¥ê̾.c¡×¤òÁª¤Ö¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡¥C
-¸À¸ì¤Î¥½¡¼¥¹¤¬Ê£¿ô¤Î¾ì¹ç¤Ë¤ÏµÕ¤Ë¡Ö¥é¥¤¥Ö¥é¥ê̾.c¡×¤È¤¤¤¦¥Õ¥¡
-¥¤¥ë̾¤ÏÈò¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤È¥â¥¸¥å¡¼
-¥ëÀ¸À®»þ¤ËÃæ´ÖŪ¤ËÀ¸À®¤µ¤ì¤ë¡Ö¥é¥¤¥Ö¥é¥ê̾.o¡×¤È¤¤¤¦¥Õ¥¡¥¤¥ë
-¤È¤¬¾×ÆÍ¤¹¤ë¤«¤é¤Ç¤¹¡¥
-
-Ruby¤Ï³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤¹¤ë»þ¤Ë¡ÖInit_¥é¥¤¥Ö¥é¥ê̾¡×¤È
-¤¤¤¦´Ø¿ô¤ò¼«Æ°Åª¤Ë¼Â¹Ô¤·¤Þ¤¹¡¥dbm¥é¥¤¥Ö¥é¥ê¤Î¾ì¹ç¡ÖInit_dbm¡×
-¤Ç¤¹¡¥¤³¤Î´Ø¿ô¤ÎÃæ¤Ç¥¯¥é¥¹¡¤¥â¥¸¥å¡¼¥ë¡¤¥á¥½¥Ã¥É¡¤Äê¿ô¤Ê¤É¤Î
-ÄêµÁ¤ò¹Ô¤¤¤Þ¤¹¡¥dbm.c¤«¤é°ìÉô°úÍѤ·¤Þ¤¹¡¥
-
---
-Init_dbm()
-{
- /* DBM¥¯¥é¥¹¤òÄêµÁ¤¹¤ë */
- cDBM = rb_define_class("DBM", rb_cObject);
- /* DBM¤ÏEnumerate¥â¥¸¥å¡¼¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë */
- rb_include_module(cDBM, rb_mEnumerable);
-
- /* DBM¥¯¥é¥¹¤Î¥¯¥é¥¹¥á¥½¥Ã¥Éopen(): °ú¿ô¤ÏC¤ÎÇÛÎó¤Ç¼õ¤±¤ë */
- rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);
-
- /* DBM¥¯¥é¥¹¤Î¥á¥½¥Ã¥Éclose(): °ú¿ô¤Ï¤Ê¤· */
- rb_define_method(cDBM, "close", fdbm_close, 0);
- /* DBM¥¯¥é¥¹¤Î¥á¥½¥Ã¥É[]: °ú¿ô¤Ï1¸Ä */
- rb_define_method(cDBM, "[]", fdbm_fetch, 1);
- :
-
- /* DBM¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ë¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô̾¤Î¤¿¤á¤ÎID */
- id_dbm = rb_intern("dbm");
-}
---
-
-DBM¥é¥¤¥Ö¥é¥ê¤Ïdbm¤Î¥Ç¡¼¥¿¤ÈÂбþ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ê¤ë¤Ï¤º¤Ç
-¤¹¤«¤é¡¤C¤ÎÀ¤³¦¤Îdbm¤òRuby¤ÎÀ¤³¦¤Ë¼è¤ê¹þ¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡¥
-
-
-dbm.c¤Ç¤ÏData_Make_Struct¤ò°Ê²¼¤Î¤è¤¦¤Ë»È¤Ã¤Æ¤¤¤Þ¤¹¡¥
-
---
-struct dbmdata {
- int di_size;
- DBM *di_dbm;
-};
-
-
-obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);
---
-
-¤³¤³¤Ç¤Ïdbmstruct¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤òData¤Ë¥«¥×¥»¥ë²½¤·¤Æ¤¤
-¤Þ¤¹¡¥DBM*¤òľÀÜ¥«¥×¥»¥ë²½¤·¤Ê¤¤¤Î¤Ïclose()¤·¤¿»þ¤Î½èÍý¤ò¹Í
-¤¨¤Æ¤Î¤³¤È¤Ç¤¹¡¥
-
-Data¥ª¥Ö¥¸¥§¥¯¥È¤«¤édbmstruct¹½Â¤ÂΤΥݥ¤¥ó¥¿¤ò¼è¤ê½Ð¤¹¤¿¤á
-¤Ë°Ê²¼¤Î¥Þ¥¯¥í¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡¥
-
---
-#define GetDBM(obj, dbmp) {\
- Data_Get_Struct(obj, struct dbmdata, dbmp);\
- if (dbmp->di_dbm == 0) closed_dbm();\
-}
---
-
-¤Á¤ç¤Ã¤ÈÊ£»¨¤Ê¥Þ¥¯¥í¤Ç¤¹¤¬¡¤Íפ¹¤ë¤Ëdbmdata¹½Â¤ÂΤΥݥ¤¥ó¥¿
-¤Î¼è¤ê½Ð¤·¤È¡¤close¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤ò¤Þ¤È¤á¤Æ¤¤
-¤ë¤À¤±¤Ç¤¹¡¥
-
-DBM¥¯¥é¥¹¤Ë¤Ï¤¿¤¯¤µ¤ó¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¤¬¡¤Ê¬Îह¤ë¤È3¼ïÎà¤Î
-°ú¿ô¤Î¼õ¤±Êý¤¬¤¢¤ê¤Þ¤¹¡¥¤Ò¤È¤Ä¤Ï°ú¿ô¤Î¿ô¤¬¸ÇÄê¤Î¤â¤Î¤Ç¡¤Îã¤È
-¤·¤Æ¤Ïdelete¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡¥delete¥á¥½¥Ã¥É¤ò¼ÂÁõ¤·¤Æ¤¤¤ë
-fdbm_delete()¤Ï¤³¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥
-
---
-static VALUE
-fdbm_delete(obj, keystr)
- VALUE obj, keystr;
-{
- :
-}
---
-
-°ú¿ô¤Î¿ô¤¬¸ÇÄê¤Î¥¿¥¤¥×¤ÏÂè1°ú¿ô¤¬self¡¤Âè2°ú¿ô°Ê¹ß¤¬¥á¥½¥Ã¥É
-¤Î°ú¿ô¤È¤Ê¤ê¤Þ¤¹¡¥
-
-°ú¿ô¤Î¿ô¤¬ÉÔÄê¤Î¤â¤Î¤ÏC¤ÎÇÛÎó¤Ç¼õ¤±¤ë¤â¤Î¤ÈRuby¤ÎÇÛÎó¤Ç¼õ¤±
-¤ë¤â¤Î¤È¤¬¤¢¤ê¤Þ¤¹¡¥dbm¥é¥¤¥Ö¥é¥ê¤ÎÃæ¤Ç¡¤C¤ÎÇÛÎó¤Ç¼õ¤±¤ë¤â¤Î
-¤ÏDBM¤Î¥¯¥é¥¹¥á¥½¥Ã¥É¤Ç¤¢¤ëopen()¤Ç¤¹¡¥¤³¤ì¤ò¼ÂÁõ¤·¤Æ¤¤¤ë´Ø
-¿ôfdbm_s_open()¤Ï¤³¤¦¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥
-
---
-static VALUE
-fdbm_s_open(argc, argv, klass)
- int argc;
- VALUE *argv;
- VALUE klass;
-{
- :
- if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
- mode = 0666; /* default value */
- }
- :
-}
---
-
-¤³¤Î¥¿¥¤¥×¤Î´Ø¿ô¤ÏÂè1°ú¿ô¤¬Í¿¤¨¤é¤ì¤¿°ú¿ô¤Î¿ô¡¤Âè2°ú¿ô¤¬Í¿¤¨
-¤é¤ì¤¿°ú¿ô¤ÎÆþ¤Ã¤Æ¤¤¤ëÇÛÎó¤Ë¤Ê¤ê¤Þ¤¹¡¥self¤ÏÂè3°ú¿ô¤È¤·¤ÆÍ¿
-¤¨¤é¤ì¤Þ¤¹¡¥
-
-¤³¤ÎÇÛÎó¤ÇÍ¿¤¨¤é¤ì¤¿°ú¿ô¤ò²òÀϤ¹¤ë¤¿¤á¤Î´Ø¿ô¤¬open()¤Ç¤â»È¤ï
-¤ì¤Æ¤¤¤ërb_scan_args()¤Ç¤¹¡¥Âè3°ú¿ô¤Ë»ØÄꤷ¤¿¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë
-½¾¤¤¡¤Âè4ÊÑ¿ô°Ê¹ß¤Ë»ØÄꤷ¤¿ÊÑ¿ô¤ËÃͤòÂåÆþ¤·¤Æ¤¯¤ì¤Þ¤¹¡¥¤³¤Î
-¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¤Âè1ʸ»úÌܤ¬¾Êά¤Ç¤­¤Ê¤¤°ú¿ô¤Î¿ô¡¤Âè2ʸ»úÌܤ¬
-¾Êά¤Ç¤­¤ë°ú¿ô¤Î¿ô¡¤Âè3ʸ»úÌܤ¬Âбþ¤¹¤ëÁê¼ê¤¬Ìµ¤¤¤¢¤Þ¤ê¤Î°ú
-¿ô¤¬¤¢¤ë¤«¤É¤¦¤«¤ò¼¨¤¹"*"¤Ç¤¹¡¥2ʸ»úÌܤÈ3ʸ»úÌܤϾÊά¤Ç¤­¤Þ
-¤¹¡¥dbm.c¤ÎÎã¤Ç¤Ï¡¤¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï"11"¤Ç¤¹¤«¤é¡¤°ú¿ô¤ÏºÇÄã1¤Ä
-¤Ç¡¤2¤Ä¤Þ¤Çµö¤µ¤ì¤ë¤È¤¤¤¦°ÕÌ£¤Ë¤Ê¤ê¤Þ¤¹¡¥¾Êά¤µ¤ì¤Æ¤¤¤ë»þ¤Î
-ÊÑ¿ô¤ÎÃͤÏnil(C¸À¸ì¤Î¥ì¥Ù¥ë¤Ç¤ÏQnil)¤Ë¤Ê¤ê¤Þ¤¹¡¥
-
-Ruby¤ÎÇÛÎó¤Ç°ú¿ô¤ò¼õ¤±¼è¤ë¤â¤Î¤Ïindexes¤¬¤¢¤ê¤Þ¤¹¡¥¼ÂÁõ¤Ï¤³
-¤¦¤Ç¤¹¡¥
-
---
-static VALUE
-fdbm_indexes(obj, args)
- VALUE obj, args;
-{
- :
-}
---
-
-Âè1°ú¿ô¤Ïself¡¤Âè2°ú¿ô¤ÏRuby¤ÎÇÛÎó¤Ç¤¹¡¥
-
-** Ãí°Õ»ö¹à
-
-Ruby¤È¶¦Í­¤Ï¤·¤Ê¤¤¤¬Ruby¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò³ÊǼ¤¹¤ë²ÄǽÀ­¤Î¤¢¤ë
-C¤ÎÂç°èÊÑ¿ô¤Ï°Ê²¼¤Î´Ø¿ô¤ò»È¤Ã¤ÆRuby¥¤¥ó¥¿¥×¥ê¥¿¤ËÊÑ¿ô¤Î¸ºß
-¤ò¶µ¤¨¤Æ¤¢¤²¤Æ¤¯¤À¤µ¤¤¡¥¤Ç¤Ê¤¤¤ÈGC¤Ç¥È¥é¥Ö¥ë¤òµ¯¤³¤·¤Þ¤¹¡¥
-
- void rb_global_variable(VALUE *var)
-
-(5) extconf.rb¤òÍѰդ¹¤ë
-
-Makefile¤òºî¤ë¾ì¹ç¤Î¿÷·¿¤Ë¤Ê¤ëextconf.rb¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤òºî¤ê
-¤Þ¤¹¡¥extconf.rb¤Ï¥é¥¤¥Ö¥é¥ê¤Î¥³¥ó¥Ñ¥¤¥ë¤ËɬÍפʾò·ï¤Î¥Á¥§¥Ã
-¥¯¤Ê¤É¤ò¹Ô¤¦¤³¤È¤¬ÌÜŪ¤Ç¤¹¡¥¤Þ¤º¡¤
-
- require 'mkmf'
-
-¤òextconf.rb¤ÎÀèÆ¬¤ËÃÖ¤­¤Þ¤¹¡¥extconf.rb¤ÎÃæ¤Ç¤Ï°Ê²¼¤ÎRuby´Ø
-¿ô¤ò»È¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡¥
-
- have_library(lib, func): ¥é¥¤¥Ö¥é¥ê¤Î¸ºß¥Á¥§¥Ã¥¯
- have_func(func, header): ´Ø¿ô¤Î¸ºß¥Á¥§¥Ã¥¯
- have_header(header): ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¸ºß¥Á¥§¥Ã¥¯
- create_makefile(target): Makefile¤ÎÀ¸À®
-
-°Ê²¼¤ÎÊÑ¿ô¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥
-
- $CFLAGS: ¥³¥ó¥Ñ¥¤¥ë»þ¤ËÄɲÃŪ¤Ë»ØÄꤹ¤ë¥Õ¥é¥°(-I¤Ê¤É)
- $LDFLAGS: ¥ê¥ó¥¯»þ¤ËÄɲÃŪ¤Ë»ØÄꤹ¤ë¥Õ¥é¥°(-L¤Ê¤É)
-
-¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ò·ï¤¬Â·¤ï¤º¡¤¤½¤Î¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó
-¥Ñ¥¤¥ë¤·¤Ê¤¤»þ¤Ë¤Ïcreate_makefile¤ò¸Æ¤Ð¤Ê¤±¤ì¤ÐMakefile¤ÏÀ¸
-À®¤µ¤ì¤º¡¤¥³¥ó¥Ñ¥¤¥ë¤â¹Ô¤ï¤ì¤Þ¤»¤ó¡¥
-
-(6) depend¤òÍѰդ¹¤ë
-
-¤â¤·¡¤¥Ç¥£¥ì¥¯¥È¥ê¤Ëdepend¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ì¤Ð¡¤
-Makefile¤¬°Í¸´Ø·¸¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤ì¤Þ¤¹¡¥
-
- % gcc -MM *.c > depend
-
-¤Ê¤É¤Çºî¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡¥¤¢¤Ã¤ÆÂ»¤Ï̵¤¤¤Ç¤·¤ç¤¦¡¥
-
-(7) MANIFEST¥Õ¥¡¥¤¥ë¤Ë¥Õ¥¡¥¤¥ë̾¤òÆþ¤ì¤ë
-
- % find * -type f -print > MANIFEST
- % vi MANIFEST
-
-*.o, *~¤Ê¤ÉÉÔɬÍפʥե¡¥¤¥ë°Ê³°¤ÏMANIFEST¤ËÄɲ䷤Ƥª¤­¤Þ¤¹¡¥
-make»þ¤Ë¤ÏMANIFEST¤ÎÆâÍÆ¤Ï»²¾È¤·¤Þ¤»¤ó¤Î¤Ç¡¤¶õ¤Î¤Þ¤Þ¤Ç¤âÌäÂê
-¤Ïµ¯¤­¤Þ¤»¤ó¤¬¡¤¥Ñ¥Ã¥±¡¼¥¸¥ó¥°¤Î»þ¤Ë»²¾È¤¹¤ë¤³¤È¤¬¤¢¤ë¤Î¤È¡¤
-ɬÍפʥե¡¥¤¥ë¤ò¶èÊ̤Ǥ­¤ë¤Î¤Ç¡¤ÍѰդ·¤Æ¤ª¤¤¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç
-¤¦¡¥
-
-(8) Makefile¤òÀ¸À®¤¹¤ë
-
-Makefile¤ò¼ÂºÝ¤ËÀ¸À®¤¹¤ë¤¿¤á¤Ë¤Ï
-
- ruby extconf.rb
-
-¤È¤·¤Þ¤¹¡¥extconf.rb¤Ë require 'mkmf' ¤Î¹Ô¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¥¨¥é¡¼
-¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¤°ú¿ô¤òÄɲä·¤Æ
-
- ruby -r mkmf extconf.rb
-
-¤È¤·¤Æ¤¯¤À¤µ¤¤¡¥
-
-¥Ç¥£¥ì¥¯¥È¥ê¤òext°Ê²¼¤ËÍѰդ·¤¿¾ì¹ç¤Ë¤ÏRubyÁ´ÂΤÎmake¤Î»þ¤Ë
-¼«Æ°Åª¤ËMakefile¤¬À¸À®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¤¤³¤Î¥¹¥Æ¥Ã¥×¤ÏÉÔÍפǤ¹¡¥
-
-(9) make¤¹¤ë
-
-ưŪ¥ê¥ó¥¯¥é¥¤¥Ö¥é¥ê¤òÀ¸À®¤¹¤ë¾ì¹ç¤Ë¤Ï¤½¤Î¾ì¤Çmake¤·¤Æ¤¯¤À¤µ
-¤¤¡¥É¬ÍפǤ¢¤ì¤Ð make install ¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡¥
-
-ext°Ê²¼¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤òÍѰդ·¤¿¾ì¹ç¤Ï¡¤Ruby¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç
-make¤ò¼Â¹Ô¤¹¤ë¤ÈMakefile¤òÀ¸À®¤«¤émake¡¤É¬Íפˤè¤Ã¤Æ¤Ï¤½¤Î¥â
-¥¸¥å¡¼¥ë¤ÎRuby¤Ø¤Î¥ê¥ó¥¯¤Þ¤Ç¼«Æ°Åª¤Ë¼Â¹Ô¤·¤Æ¤¯¤ì¤Þ¤¹¡¥
-extconf.rb¤ò½ñ¤­´¹¤¨¤ë¤Ê¤É¤·¤ÆMakefile¤ÎºÆÀ¸À®¤¬É¬Íפʻþ¤Ï¤Þ
-¤¿Ruby¥Ç¥£¥ì¥¯¥È¥ê¤Çmake¤·¤Æ¤¯¤À¤µ¤¤¡¥
-
-³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Ïmake install¤ÇRuby¥é¥¤¥Ö¥é¥ê¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î
-²¼¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡¥¤â¤·³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤È¶¨Ä´¤·¤Æ»È¤¦Ruby¤Çµ­
-½Ò¤µ¤ì¤¿¥×¥í¥°¥é¥à¤¬¤¢¤ê¡¤Ruby¥é¥¤¥Ö¥é¥ê¤ËÃÖ¤­¤¿¤¤¾ì¹ç¤Ë¤Ï¡¤
-³ÈÄ¥¥é¥¤¥Ö¥é¥êÍѤΥǥ£¥ì¥¯¥È¥ê¤Î²¼¤Ë lib ¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê
-¤òºî¤ê¡¤¤½¤³¤Ë ³ÈÄ¥»Ò .rb ¤Î¥Õ¥¡¥¤¥ë¤òÃÖ¤¤¤Æ¤ª¤±¤ÐƱ»þ¤Ë¥¤¥ó
-¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡¥
-
-(10) ¥Ç¥Ð¥Ã¥°
-
-¤Þ¤¢¡¤¥Ç¥Ð¥Ã¥°¤·¤Ê¤¤¤Èư¤«¤Ê¤¤¤Ç¤·¤ç¤¦¤Í¡¥ext/Setup¤Ë¥Ç¥£¥ì
-¥¯¥È¥ê̾¤ò½ñ¤¯¤ÈÀÅŪ¤Ë¥ê¥ó¥¯¤¹¤ë¤Î¤Ç¥Ç¥Ð¥Ã¥¬¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê
-¤ê¤Þ¤¹¡¥¤½¤Îʬ¥³¥ó¥Ñ¥¤¥ë¤¬ÃÙ¤¯¤Ê¤ê¤Þ¤¹¤±¤É¡¥
-
-(11) ¤Ç¤­¤¢¤¬¤ê
-
-¸å¤Ï¤³¤Ã¤½¤ê»È¤¦¤Ê¤ê¡¤¹­¤¯¸ø³«¤¹¤ë¤Ê¤ê¡¤Çä¤ë¤Ê¤ê¡¤¤´¼«Í³¤Ë¤ª
-»È¤¤¤¯¤À¤µ¤¤¡¥Ruby¤Îºî¼Ô¤Ï³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Ë´Ø¤·¤Æ°ìÀڤθ¢Íø¤ò
-¼çÄ¥¤·¤Þ¤»¤ó¡¥
-
-Appendix A. Ruby¤Î¥½¡¼¥¹¥³¡¼¥É¤ÎʬÎà
-
-Ruby¤Î¥½¡¼¥¹¤Ï¤¤¤¯¤Ä¤«¤ËʬÎह¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡¥¤³¤Î¤¦¤Á¥¯¥é
-¥¹¥é¥¤¥Ö¥é¥ê¤ÎÉôʬ¤Ï´ðËÜŪ¤Ë³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤ÈƱ¤¸ºî¤êÊý¤Ë¤Ê¤Ã
-¤Æ¤¤¤Þ¤¹¡¥¤³¤ì¤é¤Î¥½¡¼¥¹¤Ïº£¤Þ¤Ç¤ÎÀâÌÀ¤Ç¤Û¤È¤ó¤ÉÍý²ò¤Ç¤­¤ë¤È
-»×¤¤¤Þ¤¹¡¥
-
-Ruby¸À¸ì¤Î¥³¥¢
-
- class.c
- error.c
- eval.c
- gc.c
- object.c
- parse.y
- variable.c
-
-¥æ¡¼¥Æ¥£¥ê¥Æ¥£´Ø¿ô
-
- dln.c
- regex.c
- st.c
- util.c
-
-Ruby¥³¥Þ¥ó¥É¤Î¼ÂÁõ
-
- dmyext.c
- inits.c
- main.c
- ruby.c
- version.c
-
-¥¯¥é¥¹¥é¥¤¥Ö¥é¥ê
-
- array.c
- bignum.c
- compar.c
- dir.c
- enum.c
- file.c
- hash.c
- io.c
- marshal.c
- math.c
- numeric.c
- pack.c
- prec.c
- process.c
- random.c
- range.c
- re.c
- signal.c
- sprintf.c
- string.c
- struct.c
- time.c
-
-Appendix B. ³ÈÄ¥ÍÑ´Ø¿ô¥ê¥Õ¥¡¥ì¥ó¥¹
-
-C¸À¸ì¤«¤éRuby¤Îµ¡Ç½¤òÍøÍѤ¹¤ëAPI¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë¡¥
-
-** ·¿
-
-VALUE
-
- Ruby¥ª¥Ö¥¸¥§¥¯¥È¤òɽ¸½¤¹¤ë·¿¡¥É¬Íפ˱þ¤¸¤Æ¥­¥ã¥¹¥È¤·¤ÆÍѤ¤¤ë¡¥
- ÁȤ߹þ¤ß·¿¤òɽ¸½¤¹¤ëC¤Î·¿¤Ïruby.h¤Ëµ­½Ò¤·¤Æ¤¢¤ëR¤Ç»Ï¤Þ¤ë¹½Â¤
- ÂΤǤ¢¤ë¡¥VALUE·¿¤ò¤³¤ì¤é¤Ë¥­¥ã¥¹¥È¤¹¤ë¤¿¤á¤ËR¤Ç»Ï¤Þ¤ë¹½Â¤ÂÎ
- ̾¤òÁ´¤ÆÂçʸ»ú¤Ë¤·¤¿Ì¾Á°¤Î¥Þ¥¯¥í¤¬ÍѰդµ¤ì¤Æ¤¤¤ë¡¥
-
-** ÊÑ¿ô¡¦Äê¿ô
-
-Qnil
-
- Äê¿ô: nil¥ª¥Ö¥¸¥§¥¯¥È
-
-Qtrue
-
- Äê¿ô: true¥ª¥Ö¥¸¥§¥¯¥È(¿¿¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ)
-
-Qfalse
-
- Äê¿ô: false¥ª¥Ö¥¸¥§¥¯¥È
-
-** C¥Ç¡¼¥¿¤Î¥«¥×¥»¥ë²½
-
-Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval)
-
- C¤ÎǤ°Õ¤Î¥Ý¥¤¥ó¥¿¤ò¥«¥×¥»¥ë²½¤·¤¿Ruby¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤¹¡¥¤³
- ¤Î¥Ý¥¤¥ó¥¿¤¬Ruby¤«¤é¥¢¥¯¥»¥¹¤µ¤ì¤Ê¤¯¤Ê¤Ã¤¿»þ¡¤free¤Ç»ØÄꤷ¤¿
- ´Ø¿ô¤¬¸Æ¤Ð¤ì¤ë¡¥¤Þ¤¿¡¤¤³¤Î¥Ý¥¤¥ó¥¿¤Î»Ø¤¹¥Ç¡¼¥¿¤¬Â¾¤ÎRuby¥ª¥Ö
- ¥¸¥§¥¯¥È¤ò»Ø¤·¤Æ¤¤¤ë¾ì¹ç¡¤mark¤Ë»ØÄꤹ¤ë´Ø¿ô¤Ç¥Þ¡¼¥¯¤¹¤ëɬÍ×
- ¤¬¤¢¤ë¡¥
-
-Data_Make_Struct(klass, type, mark, free, sval)
-
- type·¿¤Î¥á¥â¥ê¤òmalloc¤·¡¤ÊÑ¿ôsval¤ËÂåÆþ¤·¤¿¸å¡¤¤½¤ì¤ò¥«¥×¥»
- ¥ë²½¤·¤¿¥Ç¡¼¥¿¤òÊÖ¤¹¥Þ¥¯¥í¡¥
-
-Data_Get_Struct(data, type, sval)
-
- data¤«¤étype·¿¤Î¥Ý¥¤¥ó¥¿¤ò¼è¤ê½Ð¤·ÊÑ¿ôsval¤ËÂåÆþ¤¹¤ë¥Þ¥¯¥í¡¥
-
-** ·¿¥Á¥§¥Ã¥¯
-
-TYPE(value)
-FIXNUM_P(value)
-NIL_P(value)
-void Check_Type(VALUE value, int type)
-void Check_SafeStr(VALUE value)
-
-** ·¿ÊÑ´¹
-
-FIX2INT(value)
-INT2FIX(i)
-NUM2INT(value)
-INT2NUM(i)
-NUM2DBL(value)
-rb_float_new(f)
-STR2CSTR(value)
-rb_str_new2(s)
-
-** ¥¯¥é¥¹/¥â¥¸¥å¡¼¥ëÄêµÁ
-
-VALUE rb_define_class(char *name, VALUE super)
-
- super¤Î¥µ¥Ö¥¯¥é¥¹¤È¤·¤Æ¿·¤·¤¤Ruby¥¯¥é¥¹¤òÄêµÁ¤¹¤ë¡¥
-
-VALUE rb_define_class_under(VALUE module, char *name, VALUE super)
-
- super¤Î¥µ¥Ö¥¯¥é¥¹¤È¤·¤Æ¿·¤·¤¤Ruby¥¯¥é¥¹¤òÄêµÁ¤·¡¤module¤Î
- Äê¿ô¤È¤·¤ÆÄêµÁ¤¹¤ë¡¥
-
-VALUE rb_define_module(char *name)
-
- ¿·¤·¤¤Ruby¥â¥¸¥å¡¼¥ë¤òÄêµÁ¤¹¤ë¡¥
-
-VALUE rb_define_module_under(VALUE module, char *name, VALUE super)
-
- ¿·¤·¤¤Ruby¥â¥¸¥å¡¼¥ë¤òÄêµÁ¤·¡¤module¤ÎÄê¿ô¤È¤·¤ÆÄêµÁ¤¹¤ë¡¥
-
-void rb_include_module(VALUE klass, VALUE module)
-
- ¥â¥¸¥å¡¼¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¡¥class¤¬¤¹¤Ç¤Ëmodule¤ò¥¤¥ó¥¯
- ¥ë¡¼¥É¤·¤Æ¤¤¤ë»þ¤Ë¤Ï²¿¤â¤·¤Ê¤¤(¿½Å¥¤¥ó¥¯¥ë¡¼¥É¤Î¶Ø»ß)¡¥
-
-void rb_extend_object(VALUE object, VALUE module)
-
- ¥ª¥Ö¥¸¥§¥¯¥È¤ò¥â¥¸¥å¡¼¥ë(¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É)¤Ç³ÈÄ¥¤¹¤ë¡¥
-
-** Âç°èÊÑ¿ôÄêµÁ
-
-void rb_define_variable(char *name, VALUE *var)
-
- Ruby¤ÈC¤È¤Ç¶¦Í­¤¹¤ë¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥ÊÑ¿ô̾¤¬`$'¤Ç
- »Ï¤Þ¤é¤Ê¤¤»þ¤Ë¤Ï¼«Æ°Åª¤ËÄɲ䵤ì¤ë¡¥name¤È¤·¤ÆRuby¤Î¼±ÊÌ»Ò
- ¤È¤·¤Æµö¤µ¤ì¤Ê¤¤Ê¸»ú(Î㤨¤Ð` ')¤ò´Þ¤à¾ì¹ç¤Ë¤ÏRuby¥×¥í¥°¥é
- ¥à¤«¤é¤Ï¸«¤¨¤Ê¤¯¤Ê¤ë¡¥
-
-void rb_define_readonly_variable(char *name, VALUE *var)
-
- Ruby¤ÈC¤È¤Ç¶¦Í­¤¹¤ëread only¤Î¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥
- read only¤Ç¤¢¤ë¤³¤È°Ê³°¤Ïrb_define_variable()¤ÈƱ¤¸¡¥
-
-void rb_define_virtual_variable(char *name,
- VALUE (*getter)(), VALUE (*setter)())
-
- ´Ø¿ô¤Ë¤è¤Ã¤Æ¼Â¸½¤µ¤ì¤ëRubyÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥ÊÑ¿ô¤¬»²¾È¤µ¤ì¤¿
- »þ¤Ë¤Ïgetter¤¬¡¤ÊÑ¿ô¤ËÃͤ¬¥»¥Ã¥È¤µ¤ì¤¿»þ¤Ë¤Ïsetter¤¬¸Æ¤Ð¤ì
- ¤ë¡¥
-
-void rb_define_hooked_variable(char *name, VALUE *var,
- VALUE (*getter)(), VALUE (*setter)())
-
- ´Ø¿ô¤Ë¤è¤Ã¤Æhook¤Î¤Ä¤±¤é¤ì¤¿¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥ÊÑ¿ô
- ¤¬»²¾È¤µ¤ì¤¿»þ¤Ë¤Ïgetter¤¬¡¤´Ø¿ô¤ËÃͤ¬¥»¥Ã¥È¤µ¤ì¤¿»þ¤Ë¤Ï
- setter¤¬¸Æ¤Ð¤ì¤ë¡¥getter¤äsetter¤Ë0¤ò»ØÄꤷ¤¿»þ¤Ë¤Ïhook¤ò
- »ØÄꤷ¤Ê¤¤¤Î¤ÈƱ¤¸»ö¤Ë¤Ê¤ë¡¥
-
-void rb_global_variable(VALUE *var)
-
- GC¤Î¤¿¤á¡¤Ruby¥×¥í¥°¥é¥à¤«¤é¤Ï¥¢¥¯¥»¥¹¤µ¤ì¤Ê¤¤¤¬, Ruby¥ª¥Ö
- ¥¸¥§¥¯¥È¤ò´Þ¤àÂç°èÊÑ¿ô¤ò¥Þ¡¼¥¯¤¹¤ë¡¥
-
-** Äê¿ô
-
-void rb_define_const(VALUE klass, char *name, VALUE val)
-
- Äê¿ô¤òÄêµÁ¤¹¤ë¡¥
-
-void rb_define_global_const(char *name, VALUE val)
-
- Âç°èÄê¿ô¤òÄêµÁ¤¹¤ë¡¥
-
- rb_define_const(cKernal, name, val)
-
- ¤ÈƱ¤¸°ÕÌ£¡¥
-
-** ¥á¥½¥Ã¥ÉÄêµÁ
-
-rb_define_method(VALUE klass, char *name, VALUE (*func)(), int argc)
-
- ¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¡¥argc¤Ïself¤ò½ü¤¯°ú¿ô¤Î¿ô¡¥argc¤¬-1¤Î»þ,
- ´Ø¿ô¤Ë¤Ï°ú¿ô¤Î¿ô(self¤ò´Þ¤Þ¤Ê¤¤)¤òÂè1°ú¿ô, °ú¿ô¤ÎÇÛÎó¤òÂè2
- °ú¿ô¤È¤¹¤ë·Á¼°¤ÇÍ¿¤¨¤é¤ì¤ë(Âè3°ú¿ô¤Ïself)¡¥argc¤¬-2¤Î»þ,
- Âè1°ú¿ô¤¬self, Âè2°ú¿ô¤¬args(args¤Ï°ú¿ô¤ò´Þ¤àRuby¤ÎÇÛÎó)¤È
- ¤¤¤¦·Á¼°¤ÇÍ¿¤¨¤é¤ì¤ë¡¥
-
-rb_define_private_method(VALUE klass, char *name, VALUE (*func)(), int argc)
-
- private¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¡¥°ú¿ô¤Ïrb_define_method()¤ÈƱ¤¸¡¥
-
-rb_define_singleton_method(VALUE klass, char *name, VALUE (*func)(), int argc)
-
- ÆÃ°Û¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¡¥°ú¿ô¤Ïrb_define_method()¤ÈƱ¤¸¡¥
-
-rb_scan_args(int argc, VALUE *argv, char *fmt, ...)
-
- argc, argv·Á¼°¤ÇÍ¿¤¨¤é¤ì¤¿°ú¿ô¤òʬ²ò¤¹¤ë¡¥fmt¤Ïɬ¿Ü°ú¿ô¤Î¿ô,
- Éղðú¿ô¤Î¿ô, »Ä¤ê¤Î°ú¿ô¤¬¤¢¤ë¤«¤ò»ØÄꤹ¤ëʸ»úÎó¤Ç, "¿ô»ú
- ¿ô»ú*"¤È¤¤¤¦·Á¼°¤Ç¤¢¤ë¡¥ 2 ÈÖÌܤοô»ú¤È"*"¤Ï¤½¤ì¤¾¤ì¾Êά²Ä
- ǽ¤Ç¤¢¤ë¡¥É¬¿Ü°ú¿ô¤¬°ì¤Ä¤â¤Ê¤¤¾ì¹ç¤Ï0¤ò»ØÄꤹ¤ë¡¥Âè3°ú¿ô°Ê
- ¹ß¤ÏÊÑ¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç, ³ºÅö¤¹¤ëÍ×ÁǤ¬¤½¤ÎÊÑ¿ô¤Ë³ÊǼ¤µ¤ì¤ë¡¥
- Éղðú¿ô¤ËÂбþ¤¹¤ë°ú¿ô¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤ÏÊÑ¿ô¤ËQnil¤¬
- ÂåÆþ¤µ¤ì¤ë¡¥
-
-** Ruby¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·
-
-VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
-
- ¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¡¥Ê¸»úÎ󤫤émid¤òÆÀ¤ë¤¿¤á¤Ë¤Ïrb_intern()¤ò
- »È¤¦¡¥
-
-VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
-
- ¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¡¥°ú¿ô¤òargc, argv·Á¼°¤ÇÅϤ¹¡¥
-
-VALUE rb_eval_string(char *str)
-
- ʸ»úÎó¤òRuby¥¹¥¯¥ê¥×¥È¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¡¦¼Â¹Ô¤¹¤ë¡¥
-
-ID rb_intern(char *name)
-
- ʸ»úÎó¤ËÂбþ¤¹¤ëID¤òÊÖ¤¹¡¥
-
-char *rb_id2name(ID id)
-
- ID¤ËÂбþ¤¹¤ëʸ»úÎó¤òÊÖ¤¹(¥Ç¥Ð¥Ã¥°ÍÑ)¡¥
-
-char *rb_class2name(VALUE klass)
-
- ¥¯¥é¥¹¤Î̾Á°¤òÊÖ¤¹(¥Ç¥Ð¥Ã¥°ÍÑ)¡¥¥¯¥é¥¹¤¬Ì¾Á°¤ò»ý¤¿¤Ê¤¤»þ¤Ë¤Ï,
- ÁÄÀè¤òÁ̤äÆÌ¾Á°¤ò»ý¤Ä¥¯¥é¥¹¤Î̾Á°¤òÊÖ¤¹¡¥
-
-int rb_respond_to(VALUE obj, ID id)
-
- obj¤¬id¤Ç¼¨¤µ¤ì¤ë¥á¥½¥Ã¥É¤ò»ý¤Ä¤«¤É¤¦¤«¤òÊÖ¤¹¡£
-
-** ¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô
-
-VALUE rb_iv_get(VALUE obj, char *name)
-
- obj¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤ÎÃͤòÆÀ¤ë¡¥`@'¤Ç»Ï¤Þ¤é¤Ê¤¤¥¤¥ó¥¹¥¿¥ó
- ¥¹ÊÑ¿ô¤Ï Ruby¥×¥í¥°¥é¥à¤«¤é¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡Ö±£¤ì¤¿¡×¥¤¥ó
- ¥¹¥¿¥ó¥¹ÊÑ¿ô¤Ë¤Ê¤ë¡¥Äê¿ô¤ÏÂçʸ»ú¤Î̾Á°¤ò»ý¤Ä¥¯¥é¥¹(¤Þ¤¿¤Ï
- ¥â¥¸¥å¡¼¥ë)¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤È¤·¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¡¥
-
-VALUE rb_iv_set(VALUE obj, char *name, VALUE val)
-
- obj¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤òval¤Ë¥»¥Ã¥È¤¹¤ë¡¥
-
-** À©¸æ¹½Â¤
-
-VALUE rb_iterate(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2)
-
- func2¤ò¥Ö¥í¥Ã¥¯¤È¤·¤ÆÀßÄꤷ, func1¤ò¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¸Æ¤Ö¡¥
- func1¤Ë¤Ï arg1¤¬°ú¿ô¤È¤·¤ÆÅϤµ¤ì, func2¤Ë¤ÏÂè1°ú¿ô¤Ë¥¤¥Æ¥ì¡¼
- ¥¿¤«¤éÍ¿¤¨¤é¤ì¤¿ÃÍ, Âè2°ú¿ô¤Ëarg2¤¬ÅϤµ¤ì¤ë¡¥
-
-VALUE rb_yield(VALUE val)
-
- val¤òÃͤȤ·¤Æ¥¤¥Æ¥ì¡¼¥¿¥Ö¥í¥Ã¥¯¤ò¸Æ¤Ó½Ð¤¹¡¥
-
-VALUE rb_rescue(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2)
-
- ´Ø¿ôfunc1¤òarg1¤ò°ú¿ô¤Ë¸Æ¤Ó½Ð¤¹¡¥func1¤Î¼Â¹ÔÃæ¤ËÎã³°¤¬È¯À¸
- ¤·¤¿»þ¤Ë¤Ï func2¤òarg2¤ò°ú¿ô¤È¤·¤Æ¸Æ¤Ö¡¥Ìá¤êÃͤÏÎã³°¤¬È¯À¸
- ¤·¤Ê¤«¤Ã¤¿»þ¤Ïfunc1¤ÎÌá¤êÃÍ, Îã³°¤¬È¯À¸¤·¤¿»þ¤Ë¤Ïfunc2¤ÎÌá
- ¤êÃͤǤ¢¤ë¡¥
-
-VALUE rb_ensure(VALUE (*func1)(), void *arg1, void (*func2)(), void *arg2)
-
- ´Ø¿ôfunc1¤òarg1¤ò°ú¿ô¤È¤·¤Æ¼Â¹Ô¤·, ¼Â¹Ô½ªÎ»¸å(¤¿¤È¤¨Îã³°¤¬
- ȯÀ¸¤·¤Æ¤â) func2¤òarg2¤ò°ú¿ô¤È¤·¤Æ¼Â¹Ô¤¹¤ë¡¥Ìá¤êÃͤÏfunc1
- ¤ÎÌá¤êÃͤǤ¢¤ë(Îã³°¤¬È¯À¸¤·¤¿»þ¤ÏÌá¤é¤Ê¤¤)¡¥
-
-** Îã³°¡¦¥¨¥é¡¼
-
-void rb_warning(char *fmt, ...)
-
- rb_verbose»þ¤Ëɸ½à¥¨¥é¡¼½ÐÎϤ˷ٹð¾ðÊó¤òɽ¼¨¤¹¤ë¡¥°ú¿ô¤Ï
- printf()¤ÈƱ¤¸¡¥
-
-void rb_raise(rb_eRuntimeError, char *fmt, ...)
-
- RuntimeErrorÎã³°¤òȯÀ¸¤µ¤»¤ë¡¥°ú¿ô¤Ïprintf()¤ÈƱ¤¸¡¥
-
-void rb_raise(VALUE exception, char *fmt, ...)
-
- exception¤Ç»ØÄꤷ¤¿Îã³°¤òȯÀ¸¤µ¤»¤ë¡¥fmt°Ê²¼¤Î°ú¿ô¤Ï
- printf()¤ÈƱ¤¸¡¥
-
-void rb_fatal(char *fmt, ...)
-
- Ã×̿ŪÎã³°¤òȯÀ¸¤µ¤»¤ë¡¥Ä̾ï¤ÎÎã³°½èÍý¤Ï¹Ô¤Ê¤ï¤ì¤º, ¥¤¥ó¥¿¡¼
- ¥×¥ê¥¿¤¬½ªÎ»¤¹¤ë(¤¿¤À¤·ensure¤Ç»ØÄꤵ¤ì¤¿¥³¡¼¥É¤Ï½ªÎ»Á°¤Ë
- ¼Â¹Ô¤µ¤ì¤ë)¡¥
-
-void rb_bug(char *fmt, ...)
-
- ¥¤¥ó¥¿¡¼¥×¥ê¥¿¤Ê¤É¥×¥í¥°¥é¥à¤Î¥Ð¥°¤Ç¤·¤«È¯À¸¤¹¤ë¤Ï¤º¤Î¤Ê¤¤
- ¾õ¶·¤Î»þ¸Æ¤Ö¡¥¥¤¥ó¥¿¡¼¥×¥ê¥¿¤Ï¥³¥¢¥À¥ó¥×¤·Ä¾¤Á¤Ë½ªÎ»¤¹¤ë¡¥
- Îã³°½èÍý¤Ï°ìÀڹԤʤï¤ì¤Ê¤¤¡¥
-
-** Ruby¤Î½é´ü²½¡¦¼Â¹Ô
-
-Ruby¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËËä¤á¹þ¤à¾ì¹ç¤Ë¤Ï°Ê²¼¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹
-¤ò»È¤¦¡¥Ä̾ï¤Î³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Ë¤ÏɬÍפʤ¤¡¥
-
-void ruby_init()
-
- Ruby¥¤¥ó¥¿¥×¥ê¥¿¤Î½é´ü²½¤ò¹Ô¤Ê¤¦¡¥
-
-void ruby_options(int argc, char **argv)
-
- Ruby¥¤¥ó¥¿¥×¥ê¥¿¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤Î½èÍý¤ò¹Ô¤Ê¤¦¡¥
-
-void ruby_run()
-
- Ruby¥¤¥ó¥¿¥×¥ê¥¿¤ò¼Â¹Ô¤¹¤ë¡¥
-
-void ruby_script(char *name)
-
- Ruby¤Î¥¹¥¯¥ê¥×¥È̾($0)¤òÀßÄꤹ¤ë¡¥
-
-
-Appendix B. extconf.rb¤Ç»È¤¨¤ë´Ø¿ô¤¿¤Á
-
-extconf.rb¤ÎÃæ¤Ç¤ÏÍøÍѲÄǽ¤Ê¥³¥ó¥Ñ¥¤¥ë¾ò·ï¥Á¥§¥Ã¥¯¤Î´Ø¿ô¤Ï°Ê
-²¼¤ÎÄ̤ê¤Ç¤¢¤ë¡¥
-
-have_library(lib, func)
-
- ´Ø¿ôfunc¤òÄêµÁ¤·¤Æ¤¤¤ë¥é¥¤¥Ö¥é¥êlib¤Î¸ºß¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡¥
- ¥é¥¤¥Ö¥é¥ê¤¬Â¸ºß¤¹¤ë»þ¡¤true¤òÊÖ¤¹¡¥
-
-find_library(lib, func, path...)
-
- ´Ø¿ôfunc¤òÄêµÁ¤·¤Æ¤¤¤ë¥é¥¤¥Ö¥é¥êlib¤Î¸ºß¤ò -Lpath ¤òÄɲÃ
- ¤·¤Ê¤¬¤é¥Á¥§¥Ã¥¯¤¹¤ë¡¥¥é¥¤¥Ö¥é¥ê¤¬¸«ÉÕ¤«¤Ã¤¿»þ¡¤true¤òÊÖ¤¹¡¥
-
-have_func(func, header)
-
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ëheader¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ´Ø¿ôfunc¤Î¸ºß¤ò¥Á¥§¥Ã
- ¥¯¤¹¤ë¡¥func¤¬É¸½à¤Ç¤Ï¥ê¥ó¥¯¤µ¤ì¤Ê¤¤¥é¥¤¥Ö¥é¥êÆâ¤Î¤â¤Î¤Ç¤¢
- ¤ë»þ¤Ë¤ÏÀè¤Ëhave_library¤Ç¤½¤Î¥é¥¤¥Ö¥é¥ê¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤ª¤¯
- »ö¡¥´Ø¿ô¤¬Â¸ºß¤¹¤ë»þtrue¤òÊÖ¤¹¡¥
-
-have_header(header)
-
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¸ºß¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡¥¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹
- ¤ë»þtrue¤òÊÖ¤¹¡¥
-
-find_header(header)
-
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¸ºß¤ò -Ipath ¤òÄɲ䷤ʤ¬¤é¥Á¥§¥Ã¥¯¤¹¤ë¡¥
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬¸«ÉÕ¤«¤Ã¤¿»þtrue¤òÊÖ¤¹¡¥
-
-create_makefile(target)
-
- ³ÈÄ¥¥é¥¤¥Ö¥é¥êÍѤÎMakefile¤òÀ¸À®¤¹¤ë¡¥¤³¤Î´Ø¿ô¤ò¸Æ¤Ð¤Ê¤±¤ì
- ¤Ð¤½¤Î¥é¥¤¥Ö¥é¥ê¤Ï¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Ê¤¤¡¥target¤Ï¥â¥¸¥å¡¼¥ë̾
- ¤òɽ¤¹¡¥
-
-with_config(withval[, default=nil])
-
- --with-<withval>¤Ç»ØÄꤵ¤ì¤¿¥ª¥×¥·¥ç¥óÃͤòÆÀ¤ë¡¥
-
-dir_config(target)
-
- --with-<target>-dir, --with-<target>-include, --with-<target>-lib
- ¤Î¤¤¤º¤ì¤«¤Ç»ØÄꤵ¤ì¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò $CFLAGS ¤ä $LDFLAGS
- ¤ËÄɲ乤롥
-
-/*
- * Local variables:
- * fill-column: 60
- * end:
- */
diff --git a/README.ja.md b/README.ja.md
new file mode 100644
index 0000000000..93c0131690
--- /dev/null
+++ b/README.ja.md
@@ -0,0 +1,182 @@
+[![Actions Status: MinGW](https://github.com/ruby/ruby/workflows/MinGW/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"MinGW")
+[![Actions Status: MJIT](https://github.com/ruby/ruby/workflows/MJIT/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"MJIT")
+[![Actions Status: Ubuntu](https://github.com/ruby/ruby/workflows/Ubuntu/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"Ubuntu")
+[![Actions Status: Windows](https://github.com/ruby/ruby/workflows/Windows/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"Windows")
+[![AppVeyor status](https://ci.appveyor.com/api/projects/status/0sy8rrxut4o0k960/branch/master?svg=true)](https://ci.appveyor.com/project/ruby/ruby/branch/master)
+[![Travis Status](https://app.travis-ci.com/ruby/ruby.svg?branch=master)](https://app.travis-ci.com/ruby/ruby)
+
+# Rubyã¨ã¯
+
+Rubyã¯ã‚·ãƒ³ãƒ—ルã‹ã¤å¼·åŠ›ãªã‚ªãƒ–ジェクト指å‘スクリプト言語ã§ã™ï¼Ž Rubyã¯ç´”粋ãªã‚ªãƒ–ジェクト指å‘言語ã¨ã—ã¦è¨­è¨ˆã•れã¦ã„ã‚‹ã®ã§ï¼Œ
+オブジェクト指å‘プログラミングを手軽ã«è¡Œã†äº‹ãŒå‡ºæ¥ã¾ã™ï¼Žã‚‚ã¡ã‚ã‚“æ™®é€šã®æ‰‹ç¶šãåž‹ã®ãƒ—ログラミングもå¯èƒ½ã§ã™ï¼Ž
+
+Rubyã¯ãƒ†ã‚­ã‚¹ãƒˆå‡¦ç†é–¢ä¿‚ã®èƒ½åŠ›ãªã©ã«å„ªã‚Œï¼ŒPerlã¨åŒã˜ãらã„強力ã§ã™ï¼Žã•らã«ã‚·ãƒ³ãƒ—ãƒ«ãªæ–‡æ³•ã¨ï¼Œ
+例外処ç†ã‚„イテレータãªã©ã®æ©Ÿæ§‹ã«ã‚ˆã£ã¦ï¼Œã‚ˆã‚Šåˆ†ã‹ã‚Šã‚„ã™ã„プログラミングãŒå‡ºæ¥ã¾ã™ï¼Ž
+
+## Rubyã®ç‰¹é•·
+
+* ã‚·ãƒ³ãƒ—ãƒ«ãªæ–‡æ³•
+* 普通ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæŒ‡å‘æ©Ÿèƒ½(クラス,メソッドコールãªã©)
+* 特殊ãªã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæŒ‡å‘æ©Ÿèƒ½(Mixin,特異メソッドãªã©)
+* 演算å­ã‚ªãƒ¼ãƒãƒ¼ãƒ­ãƒ¼ãƒ‰
+* ä¾‹å¤–å‡¦ç†æ©Ÿèƒ½
+* イテレータã¨ã‚¯ãƒ­ãƒ¼ã‚¸ãƒ£
+* ガーベージコレクタ
+* ダイナミックローディング (アーキテクãƒãƒ£ã«ã‚ˆã‚‹)
+* ç§»æ¤æ€§ãŒé«˜ã„.多ãã®Unix-like/POSIX互æ›ãƒ—ラットフォーム上ã§å‹•ãã ã‘ã§ãªã,Windows, macOS,
+ Haikuãªã©ã®ä¸Šã§ã‚‚å‹•ã cf.
+ https://github.com/ruby/ruby/blob/master/doc/contributing.rdoc#platform-maintainers
+
+
+## 入手法
+
+サードパーティーツールを使ã£ãŸæ–¹æ³•ã‚’å«ã‚€Rubyã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ–¹æ³•ã®ä¸€è¦§ã¯
+
+https://www.ruby-lang.org/ja/downloads/
+
+ã‚’å‚ç…§ã—ã¦ãã ã•ã„.
+
+### Git
+
+ミラーをGitHubã«å…¬é–‹ã—ã¦ã„ã¾ã™ï¼Ž 以下ã®ã‚³ãƒžãƒ³ãƒ‰ã§ãƒªãƒã‚¸ãƒˆãƒªã‚’å–å¾—ã§ãã¾ã™ï¼Ž
+
+ $ git clone https://github.com/ruby/ruby.git
+
+ä»–ã®ãƒ–ランãƒã®ä¸€è¦§ã¯æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã§è¦‹ã‚‰ã‚Œã¾ã™ï¼Ž
+
+ $ git ls-remote https://github.com/ruby/ruby.git
+
+Rubyリãƒã‚¸ãƒˆãƒªã®æœ¬æ¥ã®master㯠https://git.ruby-lang.org/ruby.git ã«ã‚りã¾ã™ï¼Ž
+コミッタã¯ã“ã¡ã‚‰ã‚’使ã„ã¾ã™ï¼Ž
+
+### Subversion
+
+å¤ã„Rubyã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã§ã‚‚å–å¾—ã§ãã¾ã™ï¼Ž
+
+ $ svn co https://svn.ruby-lang.org/repos/ruby/branches/ruby_2_6/ ruby
+
+ä»–ã®ãƒ–ランãƒã®ä¸€è¦§ã¯æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã§è¦‹ã‚‰ã‚Œã¾ã™ï¼Ž
+
+ $ svn ls https://svn.ruby-lang.org/repos/ruby/branches/
+
+
+## ホームページ
+
+Rubyã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸ã®URLã¯
+
+https://www.ruby-lang.org/
+
+ã§ã™ï¼Ž
+
+## メーリングリスト
+
+Rubyã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆãŒã‚りã¾ã™ï¼Žå‚åŠ å¸Œæœ›ã®æ–¹ã¯ [ruby-list-request@ruby-lang.org] ã¾ã§æœ¬æ–‡ã«
+
+ subscribe
+
+ã¨æ›¸ã„ã¦é€ã£ã¦ä¸‹ã•ã„.
+
+Ruby開発者å‘ã‘メーリングリストもã‚りã¾ã™ï¼Žã“ã¡ã‚‰ã§ã¯rubyã®ãƒã‚°ï¼Œå°†æ¥ã®ä»•様拡張ãªã©å®Ÿè£…上ã®å•題ã«ã¤ã„ã¦è­°è«–ã•れã¦ã„ã¾ã™ï¼Ž
+å‚åŠ å¸Œæœ›ã®æ–¹ã¯ [ruby-dev-request@ruby-lang.org] ã¾ã§ruby-listã¨åŒæ§˜ã®æ–¹æ³•ã§ãƒ¡ãƒ¼ãƒ«ã—ã¦ãã ã•ã„.
+
+Ruby拡張モジュールã«ã¤ã„ã¦è©±ã—åˆã†ruby-extãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã¨æ•°å­¦é–¢ä¿‚ã®è©±é¡Œã«ã¤ã„ã¦è©±ã—åˆã†ruby-mathメーリングリストã¨
+英語ã§rubyã«ã¤ã„ã¦è©±ã—åˆã†ruby-talkメーリングリストもã‚りã¾ã™ï¼Žå‚加方法ã¯ã©ã‚Œã‚‚åŒã˜ã§ã™ï¼Ž
+
+[ruby-list-request@ruby-lang.org]: mailto:ruby-list-request@ruby-lang.org?subject=Join%20Ruby%20Mailing%20List&body=subscribe
+[ruby-dev-request@ruby-lang.org]: mailto:ruby-dev-request@ruby-lang.org?subject=Join%20Ruby%20Mailing%20List&body=subscribe
+
+## コンパイル・インストール
+
+ä»¥ä¸‹ã®æ‰‹é †ã§è¡Œã£ã¦ãã ã•ã„.
+
+1. (Gitリãƒã‚¸ãƒˆãƒªã‹ã‚‰å–å¾—ã—ãŸã‚½ãƒ¼ã‚¹ã‚’ビルドã™ã‚‹å ´åˆ) `./autogen.sh` を実行ã—ã¦æ–°ã—ã `configure` を生æˆã™ã‚‹
+
+2. `configure` を実行ã—㦠`Makefile` ãªã©ã‚’生æˆã™ã‚‹
+
+ 環境ã«ã‚ˆã£ã¦ã¯ãƒ‡ãƒ•ォルトã®Cコンパイラ用オプションãŒä»˜ãã¾ã™ï¼Ž `configure` オプション㧠`optflags=..`
+ `warnflags=..` ç­‰ã§ä¸Šæ›¸ãã§ãã¾ã™ï¼Ž
+
+3. (å¿…è¦ãªã‚‰ã°)`include/ruby/defines.h` を編集ã™ã‚‹
+
+ 多分,必è¦ç„¡ã„ã¨æ€ã„ã¾ã™ï¼Ž
+
+4. (å¿…è¦ãªã‚‰ã°)`ext/Setup` ã«é™çš„ã«ãƒªãƒ³ã‚¯ã™ã‚‹æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’指定ã™ã‚‹
+
+ `ext/Setup` ã«è¨˜è¿°ã—ãŸãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯é™çš„ã«ãƒªãƒ³ã‚¯ã•れã¾ã™ï¼Ž
+
+ ダイナミックローディングをサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„アーキテクãƒãƒ£ã§ã¯ `Setup` ã®1行目ã®ã€Œ`option nodynamic`ã€ã¨ã„ã†è¡Œã®ã‚³
+ メントを外ã™å¿…è¦ãŒã‚りã¾ã™ï¼Ž
+ ã¾ãŸï¼Œã“ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’利用ã™ã‚‹ãŸã‚ã«ã¯ï¼Œã‚らã‹ã˜ã‚é™çš„ã«ãƒªãƒ³ã‚¯ã‚’ã—ã¦ãŠãå¿…è¦ãŒã‚りã¾ã™ï¼Ž
+
+5. `make` を実行ã—ã¦ã‚³ãƒ³ãƒ‘イルã™ã‚‹
+
+6. `make check`ã§ãƒ†ã‚¹ãƒˆã‚’行ã†ï¼Ž
+
+ 「`check succeeded`ã€ã¨è¡¨ç¤ºã•ã‚Œã‚Œã°æˆåŠŸã§ã™ï¼ŽãŸã ã—ãƒ†ã‚¹ãƒˆã«æˆåŠŸã—ã¦ã‚‚完璧ã ã¨ä¿è¨¼ã•れã¦ã„る訳ã§ã¯ã‚りã¾ã›ã‚“.
+
+7. `make install`
+
+ 以下ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’作ã£ã¦ï¼Œãã“ã«ãƒ•ァイルをインストー ルã—ã¾ã™ï¼Ž
+
+ * `${DESTDIR}${prefix}/bin`
+ * `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}`
+ * `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
+ * `${DESTDIR}${prefix}/lib`
+ * `${DESTDIR}${prefix}/lib/ruby`
+ * `${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}`
+ * `${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
+ * `${DESTDIR}${prefix}/lib/ruby/site_ruby`
+ * `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}`
+ * `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
+ * `${DESTDIR}${prefix}/lib/ruby/vendor_ruby`
+ * `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}`
+ * `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
+ * `${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}`
+ * `${DESTDIR}${prefix}/share/man/man1`
+ * `${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system`
+
+
+ Rubyã®APIãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒ'*x.y.z*'ã§ã‚れã°ï¼Œ`${MAJOR}`ã¯
+ '*x*'ã§ï¼Œ`${MINOR}`ã¯'*y*',`${TEENY}`ã¯'*z*'ã§ã™ï¼Ž
+
+ **注æ„**: APIãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® `teeny` ã¯ï¼ŒRubyプログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ã¯ç•°ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ï¼Ž
+
+ `root` ã§ä½œæ¥­ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“.
+
+
+ã‚‚ã—,コンパイル時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆã«ã¯ã‚¨ãƒ©ãƒ¼ã®ãƒ­ã‚°ã¨ãƒžã‚·ãƒ³ï¼ŒOSã®ç¨®é¡žã‚’å«ã‚€ã§ãã‚‹ã ã‘詳ã—ã„レãƒãƒ¼ãƒˆã‚’作者ã«é€ã£ã¦ä¸‹ã•ã‚‹ã¨ä»–ã®æ–¹ã®ãŸã‚ã«ã‚‚ãªã‚Šã¾ã™ï¼Ž
+
+## ç§»æ¤
+
+UNIXã§ã‚れ㰠`configure` ãŒã»ã¨ã‚“ã©ã®å·®ç•°ã‚’å¸åŽã—ã¦ãれるã¯ãšã§ã™ãŒï¼Œæ€ã‚ã¬è¦‹è½ã¨ã—ãŒã‚ã£ãŸå ´åˆ(ã‚る事ãŒå¤šã„),作者ã«ãã®
+ã“ã¨ã‚’報告ã™ã‚Œã°ï¼Œè§£æ±ºã§ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ï¼Ž
+
+アーキテクãƒãƒ£ã«ã‚‚ã£ã¨ã‚‚ä¾å­˜ã™ã‚‹ã®ã¯GC部ã§ã™ï¼ŽRubyã®GCã¯å¯¾è±¡
+ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ãŒ`setjmp()`ã¾ãŸã¯`getcontext()`ã«ã‚ˆã£ã¦å…¨ã¦ã®ãƒ¬ã‚¸ã‚¹ã‚¿ã‚’ `jmp_buf` ã‚„ `ucontext_t`
+ã«æ ¼ç´ã™ã‚‹ã“ã¨ã¨ï¼Œ `jmp_buf` ã‚„ `ucontext_t` ã¨ã‚¹ã‚¿ãƒƒã‚¯ãŒ32bitアラインメントã•れã¦ã„ã‚‹ã“ã¨ã‚’仮定
+ã—ã¦ã„ã¾ã™ï¼Žç‰¹ã«å‰è€…ãŒæˆç«‹ã—ãªã„å ´åˆã®å¯¾å¿œã¯éžå¸¸ã«å›°é›£ã§ã—ょã†ï¼Ž 後者ã®è§£æ±ºã¯æ¯”較的簡å˜ã§ï¼Œ `gc.c` ã§ã‚¹ã‚¿ãƒƒã‚¯ã‚’マークã—ã¦ã„ã‚‹
+部分ã«ã‚¢ãƒ©ã‚¤ãƒ³ãƒ¡ãƒ³ãƒˆã®ãƒã‚¤ãƒˆæ•°ã ã‘ãšã‚‰ã—ã¦ãƒžãƒ¼ã‚¯ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’追加ã™ã‚‹ã ã‘ã§æ¸ˆã¿ã¾ã™ï¼Ž`defined(__mc68000__)`ã§æ‹¬ã‚‰ã‚Œã¦ã„
+る部分をå‚考ã«ã—ã¦ãã ã•ã„.
+
+レジスタウィンドウをæŒã¤CPUã§ã¯ï¼Œãƒ¬ã‚¸ã‚¹ã‚¿ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’スタックã«ãƒ•ラッシュã™ã‚‹ã‚¢ã‚»ãƒ³ãƒ–ラコードを追加ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“.
+
+## é…布æ¡ä»¶
+
+[COPYING.ja](COPYING.ja) ファイルをå‚ç…§ã—ã¦ãã ã•ã„.
+
+## フィードãƒãƒƒã‚¯
+
+Rubyã«é–¢ã™ã‚‹è³ªå•㯠[Ruby-Talk](英語)や [Ruby-List](日本語)や,
+[stackoverflow] ãªã©ã®Webã‚µã‚¤ãƒˆã«æŠ•ç¨¿ã—ã¦ãã ã•ã„.
+
+ãƒã‚°å ±å‘Šã¯ https://bugs.ruby-lang.org ã§å—ã‘付ã‘ã¦ã„ã¾ã™ï¼Ž
+
+[Ruby-Talk]: https://www.ruby-lang.org/en/community/mailing-lists
+[Ruby-List]: https://www.ruby-lang.org/ja/community/mailing-lists
+[stackoverflow]: https://ja.stackoverflow.com/
+
+## 著者
+
+Rubyã®ã‚ªãƒªã‚¸ãƒŠãƒ«ç‰ˆã¯ï¼Œ1995å¹´ã«ã¾ã¤ã‚‚ã¨ã‚†ãã²ã‚æ°ã«ã‚ˆã£ã¦è¨­è¨ˆãƒ»é–‹ç™ºã•れã¾ã—ãŸï¼Ž
+
+<mailto:matz@ruby-lang.org>
diff --git a/README.jp b/README.jp
deleted file mode 100644
index fccedb2f99..0000000000
--- a/README.jp
+++ /dev/null
@@ -1,199 +0,0 @@
-* Ruby¤È¤Ï
-
-Ruby¤Ï¥·¥ó¥×¥ë¤«¤Ä¶¯ÎϤʥª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥¹¥¯¥ê¥×¥È¸À¸ì¤Ç¤¹¡¥
-Ruby¤ÏºÇ½é¤«¤é½ã¿è¤Ê¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¸À¸ì¤È¤·¤ÆÀ߷פµ¤ì¤Æ¤¤¤Þ
-¤¹¤«¤é¡¤¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥°¤ò¼ê·Ú¤Ë¹Ô¤¦»ö¤¬½ÐÍè¤Þ
-¤¹¡¥¤â¤Á¤í¤óÄ̾ï¤Î¼ê³¤­·¿¤Î¥×¥í¥°¥é¥ß¥ó¥°¤â²Äǽ¤Ç¤¹¡¥
-
-Ruby¤Ï¥Æ¥­¥¹¥È½èÍý´Ø·¸¤ÎǽÎϤʤɤËÍ¥¤ì¡¤Perl¤ÈƱ¤¸¤¯¤é¤¤¶¯ÎÏ
-¤Ç¤¹¡¥¤µ¤é¤Ë¥·¥ó¥×¥ë¤Êʸˡ¤È¡¤Îã³°½èÍý¤ä¥¤¥Æ¥ì¡¼¥¿¤Ê¤É¤Îµ¡¹½
-¤Ë¤è¤Ã¤Æ¡¤¤è¤êʬ¤«¤ê¤ä¤¹¤¤¥×¥í¥°¥é¥ß¥ó¥°¤¬½ÐÍè¤Þ¤¹¡¥
-
-
-* Ruby¤ÎÆÃĹ
-
- + ¥·¥ó¥×¥ë¤Êʸˡ
- + ÉáÄ̤Υª¥Ö¥¸¥§¥¯¥È»Ø¸þµ¡Ç½(¥¯¥é¥¹¡¤¥á¥½¥Ã¥É¥³¡¼¥ë¤Ê¤É)
- + ÆÃ¼ì¤Ê¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þµ¡Ç½(Mixin, ÆÃ°Û¥á¥½¥Ã¥É¤Ê¤É)
- + ±é»»»Ò¥ª¡¼¥Ð¡¼¥í¡¼¥É
- + Îã³°½èÍýµ¡Ç½
- + ¥¤¥Æ¥ì¡¼¥¿¤È¥¯¥í¡¼¥¸¥ã
- + ¥¬¡¼¥Ù¡¼¥¸¥³¥ì¥¯¥¿
- + ¥À¥¤¥Ê¥ß¥Ã¥¯¥í¡¼¥Ç¥£¥ó¥° (¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ë¤è¤ë)
- + °Ü¿¢À­¤¬¹â¤¤¡¥Â¿¤¯¤ÎUNIX¾å¤Çư¤¯¤À¤±¤Ç¤Ê¤¯¡¤DOS¤äWindows¡¤
- Mac¡¤BeOS¤Ê¤É¤Î¾å¤Ç¤âư¤¯
-
-
-* Æþ¼êË¡
-
-** ftp¤Ç
-
-°Ê²¼¤Î¾ì½ê¤Ë¤ª¤¤¤Æ¤¢¤ê¤Þ¤¹¡¥
-
- ftp://ftp.netlab.co.jp/pub/lang/ruby/
-
-** CVS¤Ç
-
- $ cvs -d :pserver:anonymous@cvs.netlab.co.jp:/home/cvs login
- (Logging in to anonymous@cvs.netlab.co.jp)
- CVS password: guest
- $ cvs -d :pserver:anonymous@cvs.netlab.co.jp:/home/cvs checkout ruby
-
-
-* ¥Û¡¼¥à¥Ú¡¼¥¸
-
-Ruby¤Î¥Û¡¼¥à¥Ú¡¼¥¸¤ÎURL¤Ï
-
- http://www.ruby-lang.org/
-
-¤Ç¤¹¡¥
-
-
-* ¥á¡¼¥ê¥ó¥°¥ê¥¹¥È
-
-Ruby¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤¬¤¢¤ê¤Þ¤¹¡£»²²Ã´õ˾¤ÎÊý¤Ï
-
- ruby-list-ctl@netlab.co.jp
-
-¤Þ¤ÇËÜʸ¤Ë
-
- subscribe YourFirstName YourFamilyName
-
-¤È½ñ¤¤¤ÆÁ÷¤Ã¤Æ²¼¤µ¤¤¡£
-
-Ruby³«È¯¼Ô¸þ¤±¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤â¤¢¤ê¤Þ¤¹¡£¤³¤Á¤é¤Ç¤Ïruby¤Î¥Ð
-¥°¡¢¾­Íè¤Î»ÅÍͳÈÄ¥¤Ê¤É¼ÂÁõ¾å¤ÎÌäÂê¤Ë¤Ä¤¤¤ÆµÄÏÀ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
-»²²Ã´õ˾¤ÎÊý¤Ï
-
- ruby-dev-ctl@netlab.co.jp
-
-¤Þ¤Çruby-list¤ÈƱÍͤÎÊýË¡¤Ç¥á¡¼¥ë¤·¤Æ¤¯¤À¤µ¤¤¡£
-
-Ruby³ÈÄ¥¥â¥¸¥å¡¼¥ë¤Ë¤Ä¤¤¤ÆÏ䷹礦ruby-ext¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤È
-±Ñ¸ì¤ÇÏ䷹礦ruby-talk¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤â¤¢¤ê¤Þ¤¹¡£»²²ÃÊýË¡
-¤Ï¤É¤ì¤âƱ¤¸¤Ç¤¹¡£
-
-
-* ¥³¥ó¥Ñ¥¤¥ë¡¦¥¤¥ó¥¹¥È¡¼¥ë
-
-°Ê²¼¤Î¼ê½ç¤Ç¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
-
- 1. configure¤ò¼Â¹Ô¤·¤ÆMakefile¤Ê¤É¤òÀ¸À®¤¹¤ë
-
- 2. (ɬÍפʤé¤Ð)defines.h¤òÊÔ½¸¤¹¤ë
-
- ¿ʬ¡¤É¬Í×̵¤¤¤È»×¤¤¤Þ¤¹¡¥
-
- 3. (ɬÍפʤé¤Ð)ext/Setup¤ËÀÅŪ¤Ë¥ê¥ó¥¯¤¹¤ë³ÈÄ¥¥â¥¸¥å¡¼¥ë¤ò
- »ØÄꤹ¤ë
-
- ext/Setup¤Ëµ­½Ò¤·¤¿¥â¥¸¥å¡¼¥ë¤ÏÀÅŪ¤Ë¥ê¥ó¥¯¤µ¤ì¤Þ¤¹¡¥
-
- ¥À¥¤¥Ê¥ß¥Ã¥¯¥í¡¼¥Ç¥£¥ó¥°¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¥¢¡¼¥­¥Æ¥¯
- ¥Á¥ã¤Ç¤ÏSetup¤Î1¹ÔÌܤΡÖoption nodynamic¡×¤È¤¤¤¦¹Ô¤Î¥³
- ¥á¥ó¥È¤ò³°¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥¤Þ¤¿¡¤¤³¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ç
- ³ÈÄ¥¥â¥¸¥å¡¼¥ë¤òÍøÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¤¤¢¤é¤«¤¸¤áÀÅŪ¤Ë¥ê¥ó
- ¥¯¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥
-
- 4. make¤ò¼Â¹Ô¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë
-
- 5. make test¤Ç¥Æ¥¹¥È¤ò¹Ô¤¦¡¥
-
- ¡Ötest succeeded¡×¤Èɽ¼¨¤µ¤ì¤ì¤ÐÀ®¸ù¤Ç¤¹¡¥¤¿¤À¤·¥Æ¥¹¥È
- ¤ËÀ®¸ù¤·¤Æ¤â´°àú¤À¤ÈÊݾڤµ¤ì¤Æ¤¤¤ëÌõ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥
-
- 6. make install
-
- root¤Çºî¶È¤¹¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡¥
-
-¤â¤·¡¤¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ë¤Ï¥¨¥é¡¼¤Î¥í¥°¤È¥Þ
-¥·¥ó¡¤OS¤Î¼ïÎà¤ò´Þ¤à¤Ç¤­¤ë¤À¤±¾Ü¤·¤¤¥ì¥Ý¡¼¥È¤òºî¼Ô¤ËÁ÷¤Ã¤Æ¤¯
-¤À¤µ¤ë¤È¾¤ÎÊý¤Î¤¿¤á¤Ë¤â¤Ê¤ê¤Þ¤¹¡¥
-
-
-* °Ü¿¢
-
-UNIX¤Ç¤¢¤ì¤Ðconfigure¤¬¤Û¤È¤ó¤É¤Îº¹°Û¤òµÛ¼ý¤·¤Æ¤¯¤ì¤ë¤Ï¤º¤Ç
-¤¹¤¬¡¤»×¤ï¤Ì¸«Íî¤È¤·¤¬¤¢¤Ã¤¿¾ì¹ç(¤¢¤ë¤Ë°ã¤¤¤Ê¤¤)¡¤ºî¼Ô¤Ë¤½¤Î
-¤³¤È¤ò¥ì¥Ý¡¼¥È¤¹¤ì¤Ð¡¤²ò·è¤Ç¤­¤ë¤«¤âÃΤì¤Þ¤»¤ó¡¥
-
-¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ë¤â¤Ã¤È¤â°Í¸¤¹¤ë¤Î¤ÏGCÉô¤Ç¤¹¡¥Ruby¤ÎGC¤ÏÂоÝ
-¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤¬setjmp()¤Ë¤è¤Ã¤ÆÁ´¤Æ¤Î¥ì¥¸¥¹¥¿¤ò jmp_buf¤Ë
-³ÊǼ¤¹¤ë¤³¤È¤È¡¤jmp_buf¤È¥¹¥¿¥Ã¥¯¤¬32bit¥¢¥é¥¤¥ó¥á¥ó¥È¤µ¤ì¤Æ
-¤¤¤ë¤³¤È¤ò²¾Äꤷ¤Æ¤¤¤Þ¤¹¡¥ÆÃ¤ËÁ°¼Ô¤¬À®Î©¤·¤Ê¤¤¾ì¹ç¤ÎÂбþ¤ÏÈó
-¾ï¤Ëº¤Æñ¤Ç¤·¤ç¤¦¡¥¸å¼Ô¤Î²ò·è¤ÏÈæ³ÓŪ´Êñ¤Ç¡¤gc.c¤Ç¥¹¥¿¥Ã¥¯¤ò
-¥Þ¡¼¥¯¤·¤Æ¤¤¤ëÉôʬ¤Ë¥¢¥é¥¤¥ó¥á¥ó¥È¤Î¥Ð¥¤¥È¿ô¤À¤±¤º¤é¤·¤Æ¥Þ¡¼
-¥¯¤¹¤ë¥³¡¼¥É¤òÄɲ乤ë¤À¤±¤ÇºÑ¤ß¤Þ¤¹¡¥¡Ödefined(THINK_C)¡×¤Ç
-³ç¤é¤ì¤Æ¤¤¤ëÉôʬ¤ò»²¹Í¤Ë¤·¤Æ¤¯¤À¤µ¤¤
-
-# ¼ÂºÝ¤Ë¤ÏRuby¤ÏThink C¤Ç¤Ï¥³¥ó¥Ñ¥¤¥ë¤Ç¤­¤Þ¤»¤ó¡¥
-
-¥ì¥¸¥¹¥¿¥¦¥£¥ó¥É¥¦¤ò»ý¤ÄCPU¤Ç¤Ï¡¤¥ì¥¸¥¹¥¿¥¦¥£¥ó¥É¥¦¤ò¥¹¥¿¥Ã
-¥¯¤Ë¥Õ¥é¥Ã¥·¥å¤¹¤ë¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤òÄɲ乤ëɬÍפ¬¤¢¤ë¤«¤âÃÎ
-¤ì¤Þ¤»¤ó¡¥
-
-
-* ÇÛÉÛ¾ò·ï
-
-ËÜ¥×¥í¥°¥é¥à¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡¥GPL(the GNU General
-Public License)¤Þ¤¿¤Ï°Ê²¼¤Ë¼¨¤¹¾ò·ï¤ÇËÜ¥×¥í¥°¥é¥à¤òºÆÇÛÉÛ¤Ç
-¤­¤Þ¤¹¡¥GPL¤Ë¤Ä¤¤¤Æ¤ÏCOPYING¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡¥
-
- 1. Ê£À½¤ÏÀ©¸Â¤Ê¤¯¼«Í³¤Ç¤¹¡¥
-
- 2. °Ê²¼¤Î¾ò·ï¤Î¤¤¤º¤ì¤«¤òËþ¤¿¤¹»þ¤ËËÜ¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹¤ò
- ¼«Í³¤ËÊѹ¹¤Ç¤­¤Þ¤¹¡¥
-
- (a) ¥Í¥Ã¥È¥Ë¥å¡¼¥º¤Ë¥Ý¥¹¥È¤·¤¿¤ê¡¤ºî¼Ô¤ËÊѹ¹¤òÁ÷ÉÕ¤¹¤ë
- ¤Ê¤É¤ÎÊýË¡¤Ç¡¤Êѹ¹¤ò¸ø³«¤¹¤ë¡¥
-
- (b) Êѹ¹¤·¤¿ËÜ¥×¥í¥°¥é¥à¤ò¼«Ê¬¤Î½ê°¤¹¤ëÁÈ¿¥ÆâÉô¤À¤±¤Ç
- »È¤¦¡¥
-
- (c) Êѹ¹ÅÀ¤òÌÀ¼¨¤·¤¿¤¦¤¨¡¤¥½¥Õ¥È¥¦¥§¥¢¤Î̾Á°¤òÊѹ¹¤¹¤ë¡¥
- ¤½¤Î¥½¥Õ¥È¥¦¥§¥¢¤òÇÛÉÛ¤¹¤ë»þ¤Ë¤ÏÊѹ¹Á°¤ÎËÜ¥×¥í¥°¥é
- ¥à¤âƱ»þ¤ËÇÛÉÛ¤¹¤ë¡¥¤Þ¤¿¤ÏÊѹ¹Á°¤ÎËÜ¥×¥í¥°¥é¥à¤Î¥½¡¼
- ¥¹¤ÎÆþ¼êË¡¤òÌÀ¼¨¤¹¤ë¡¥
-
- (d) ¤½¤Î¾¤ÎÊѹ¹¾ò·ï¤òºî¼Ô¤È¹ç°Õ¤¹¤ë¡¥
-
- 3. °Ê²¼¤Î¾ò·ï¤Î¤¤¤º¤ì¤«¤òËþ¤¿¤¹»þ¤ËËÜ¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤
- ¥ë¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¥³¡¼¥É¤ä¼Â¹Ô·Á¼°¤Ç¤âÇÛÉۤǤ­¤Þ¤¹¡¥
-
- (a) ¥Ð¥¤¥Ê¥ê¤ò¼õ¤±¼è¤Ã¤¿¿Í¤¬¥½¡¼¥¹¤òÆþ¼ê¤Ç¤­¤ë¤è¤¦¤Ë¡¤
- ¥½¡¼¥¹¤ÎÆþ¼êË¡¤òÌÀ¼¨¤¹¤ë¡¥
-
- (b) µ¡³£²ÄÆÉ¤Ê¥½¡¼¥¹¥³¡¼¥É¤òźÉÕ¤¹¤ë¡¥
-
- (c) Êѹ¹¤ò¹Ô¤Ã¤¿¥Ð¥¤¥Ê¥ê¤Ï̾Á°¤òÊѹ¹¤·¤¿¤¦¤¨¡¤¥ª¥ê¥¸¥Ê
- ¥ë¤Î¥½¡¼¥¹¥³¡¼¥É¤ÎÆþ¼êË¡¤òÌÀ¼¨¤¹¤ë¡¥
-
- (d) ¤½¤Î¾¤ÎÇÛÉÛ¾ò·ï¤òºî¼Ô¤È¹ç°Õ¤¹¤ë¡¥
-
- 4. ¾¤Î¥×¥í¥°¥é¥à¤Ø¤Î°úÍѤϤ¤¤«¤Ê¤ëÌÜŪ¤Ç¤¢¤ì¼«Í³¤Ç¤¹¡¥¤¿
- ¤À¤·¡¤ËÜ¥×¥í¥°¥é¥à¤Ë´Þ¤Þ¤ì¤ë¾¤Îºî¼Ô¤Ë¤è¤ë¥³¡¼¥É¤Ï¡¤¤½
- ¤ì¤¾¤ì¤Îºî¼Ô¤Î°Õ¸þ¤Ë¤è¤ëÀ©¸Â¤¬²Ã¤¨¤é¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡¥
-
- ¶ñÂÎŪ¤Ë¤Ïgc.c(°ìÉô)¡¤util.c(°ìÉô)¡¤st.[ch]¡¤regex.[ch]
- ¤ª¤è¤Ó ./missing¥Ç¥£¥ì¥¯¥È¥ê²¼¤Î¥Õ¥¡¥¤¥ë·²¤¬³ºÅö¤·¤Þ¤¹¡¥
- ¤½¤ì¤¾¤ì¤ÎÇÛÉÛ¾ò·ï¤Ê¤É¤ËÉÕ¤¤¤Æ¤Ï³Æ¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¤¯
- ¤À¤µ¤¤¡¥
-
- 5. ËÜ¥×¥í¥°¥é¥à¤Ø¤ÎÆþÎϤȤʤ륹¥¯¥ê¥×¥È¤ª¤è¤Ó¡¤ËÜ¥×¥í¥°¥é
- ¥à¤«¤é¤Î½ÐÎϤθ¢Íø¤ÏËÜ¥×¥í¥°¥é¥à¤Îºî¼Ô¤Ç¤Ï¤Ê¤¯¡¤¤½¤ì¤¾
- ¤ì¤ÎÆþ½ÐÎϤòÀ¸À®¤·¤¿¿Í¤Ë°¤·¤Þ¤¹¡¥¤Þ¤¿¡¤ËÜ¥×¥í¥°¥é¥à¤Ë
- ÁȤ߹þ¤Þ¤ì¤ë¤¿¤á¤Î³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Ë¤Ä¤¤¤Æ¤âƱÍͤǤ¹¡¥
-
- 6. ËÜ¥×¥í¥°¥é¥à¤Ï̵ÊݾڤǤ¹¡¥ºî¼Ô¤ÏËÜ¥×¥í¥°¥é¥à¤ò¥µ¥Ý¡¼¥È
- ¤¹¤ë°Õ»Ö¤Ï¤¢¤ê¤Þ¤¹¤¬¡¤¥×¥í¥°¥é¥à¼«¿È¤Î¥Ð¥°¤¢¤ë¤¤¤ÏËÜ¥×
- ¥í¥°¥é¥à¤Î¼Â¹Ô¤Ê¤É¤«¤éȯÀ¸¤¹¤ë¤¤¤«¤Ê¤ë»³²¤ËÂФ·¤Æ¤âÀÕ
- Ǥ¤ò»ý¤Á¤Þ¤»¤ó¡¥
-
-* Ãø¼Ô
-
-¥³¥á¥ó¥È¡¤¥Ð¥°¥ì¥Ý¡¼¥È¤½¤Î¾¤Ï matz@zetabits.com ¤Þ¤Ç¡¥
--------------------------------------------------------
-created at: Thu Aug 3 11:57:36 JST 1995
-Local variables:
-mode: indented-text
-end:
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000..c445448c71
--- /dev/null
+++ b/README.md
@@ -0,0 +1,91 @@
+[![Actions Status: MinGW](https://github.com/ruby/ruby/workflows/MinGW/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"MinGW")
+[![Actions Status: MJIT](https://github.com/ruby/ruby/workflows/MJIT/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"MJIT")
+[![Actions Status: Ubuntu](https://github.com/ruby/ruby/workflows/Ubuntu/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"Ubuntu")
+[![Actions Status: Windows](https://github.com/ruby/ruby/workflows/Windows/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"Windows")
+[![AppVeyor status](https://ci.appveyor.com/api/projects/status/0sy8rrxut4o0k960/branch/master?svg=true)](https://ci.appveyor.com/project/ruby/ruby/branch/master)
+[![Travis Status](https://app.travis-ci.com/ruby/ruby.svg?branch=master)](https://app.travis-ci.com/ruby/ruby)
+
+# What is Ruby?
+
+Ruby is an interpreted object-oriented programming language often
+used for web development. It also offers many scripting features
+to process plain text and serialized files, or manage system tasks.
+It is simple, straightforward, and extensible.
+
+## Features of Ruby
+
+* Simple Syntax
+* **Normal** Object-oriented Features (e.g. class, method calls)
+* **Advanced** Object-oriented Features (e.g. mix-in, singleton-method)
+* Operator Overloading
+* Exception Handling
+* Iterators and Closures
+* Garbage Collection
+* Dynamic Loading of Object Files (on some architectures)
+* Highly Portable (works on many Unix-like/POSIX compatible platforms as
+ well as Windows, macOS, etc.) cf.
+ https://github.com/ruby/ruby/blob/master/doc/maintainers.rdoc#label-Platform+Maintainers
+
+## How to get Ruby with Git
+
+For a complete list of ways to install Ruby, including using third-party tools
+like rvm, see:
+
+https://www.ruby-lang.org/en/downloads/
+
+The mirror of the Ruby source tree can be checked out with the following command:
+
+ $ git clone https://github.com/ruby/ruby.git
+
+There are some other branches under development. Try the following command
+to see the list of branches:
+
+ $ git ls-remote https://github.com/ruby/ruby.git
+
+You may also want to use https://git.ruby-lang.org/ruby.git (actual master of Ruby source)
+if you are a committer.
+
+## How to build
+
+see [Building Ruby](doc/contributing/building_ruby.md)
+
+## Ruby home page
+
+https://www.ruby-lang.org/
+
+## Documentation
+
+- [English](https://docs.ruby-lang.org/en/master/index.html)
+- [Japanese](https://docs.ruby-lang.org/ja/master/index.html)
+
+## Mailing list
+
+There is a mailing list to discuss Ruby. To subscribe to this list, please
+send the following phrase:
+
+ subscribe
+
+in the mail body (not subject) to the address [ruby-talk-request@ruby-lang.org].
+
+[ruby-talk-request@ruby-lang.org]: mailto:ruby-talk-request@ruby-lang.org?subject=Join%20Ruby%20Mailing%20List&body=subscribe
+
+## Copying
+
+See the file [COPYING](rdoc-ref:COPYING).
+
+## Feedback
+
+Questions about the Ruby language can be asked on the [Ruby-Talk](https://www.ruby-lang.org/en/community/mailing-lists) mailing list
+or on websites like https://stackoverflow.com.
+
+Bugs should be reported at https://bugs.ruby-lang.org. Read ["Reporting Issues"](https://docs.ruby-lang.org/en/master/contributing/reporting_issues_md.html) for more information.
+
+## Contributing
+
+See ["Contributing to Ruby"](https://docs.ruby-lang.org/en/master/contributing_md.html), which includes setup and build instructions.
+
+## The Author
+
+Ruby was originally designed and developed by Yukihiro Matsumoto (Matz) in 1995.
+
+<matz@ruby-lang.org>
diff --git a/ToDo b/ToDo
deleted file mode 100644
index 6992c4ccc6..0000000000
--- a/ToDo
+++ /dev/null
@@ -1,118 +0,0 @@
-Language Spec.
-
-- def foo; .. rescue .. end
-- compile time string concatenation, "hello" "world" => "helloworld"
-- rescue modifier; a rescue b => begin a rescue; b end
-- %w(a\ b\ c abc) => ["a b c", "abc"]
-- objectify symbols
-- class variable (prefix @@)
-- rescue RuntimeError => err
-* operator !! for rescue. ???
-* objectify characters
-* ../... outside condition invokes operator method too.
-* ... inside condition turns off just before right condition.???
-* package or access control for global variables??
-* named arguments like foo(nation:="german") or foo(nation: "german").
-* method to retrieve argument information (needs new C API)
-* multiple return values, yield values. maybe incompatible ???
-* cascading method invocation ???
-* def Class#method .. end ??
-* class Foo::Bar<Baz .. end, module Boo::Bar .. end
-* def Foo::Bar::baz() .. end ??
-* I18N (or M17N) script/string/regexp
-* Fixnum 0 as false ????
-* discourage use of symbol variable (e.g. $/, etc.) in manual
-* discourage use of Perlish features by giving warnings.
-* `exception' method to be alternative for `$!'. ??
-* non confusing in-block local variable (is it possible?)
- + remove scope by block
- + variables appears within block may have independent values.
-
-Hacking Interpreter
-
-- use eban's fnmatch
-- RUBYOPT environment variable
-- alias $defout $>
-- retrieve STACK_LEVEL_MAX from users' limit.
-- remove end_proc registered out of require only
-- all object made freezable
-* non-blocking open (e.g. for named pipe) for thread
-* avoid blocking with gethostbyname/gethostbyaddr (use fork ???)
-* objectify interpreters ???
-* remove rb_eval() recursions
-* syntax tree -> bytecode ???
-* scrambled script, or script filter
-* setuid ruby
-* performance tune for in-block (dynamic) local variables.
-* generational GC ?
-* give warnings to assign magic variables.
-* export rb_io_{addstr,printf,puts,print}
-* autoload should work with threads [ruby-talk:4589]
-
-Standard Libraries
-
-- hash[key] = nil does not remove entry; hashes may have nil as the value.
-- hash.fetch(key) raises exception if key is not found.
-- Array#{first,last,at}
-- Dir.glob(pat){|f|...}
-- sprintf/printf's $ to specify argument order
-- Dir.glob("**/*.c") ala zsh
-- Remove Enumerable#{size,length}
-- Array#slice, Array#slice!
-- String#slice, String#slice!
-- Marshal should handle generic instance variables.
-- debugger for thread programming
-- SyntaxError, NameError, LoadError and NotImplementedError are subclasses of
- ScriptError<Exception, not StandardError.
-- Thread::start gives arguments, not a thread object to the block
-- regexp: (?>..), \G
-- Struct::new([name,]member,...)
-- IO#reopen accepts path as well
-- Kernel#scan
-- call initialize for builtin classes too
-- performance tune for String's non-bang methods.
-- 'w' template for pack/unpack
-- alternative for interator? => block_given?
-- regex - /p (make obsolete), /m (new)
-- consistent /, %, divmod
-- unbound method object
-- integrate final.rb into the core.
-* Enumerable#sort_by for Schwartzian transformation
-* String#scanf(?)
-* Object#fmt(?)
-* Integer#{bin,oct,hex,heX}
-* Time::strptime
-* Integer[num], Float[num]; Fixnum[num]?
-* method to retrieve non-number trailer for to_i/to_f.
-* Stream or Port, abstract superclass of IO ?
-* String#{pred,prev}, String#downto
-* optional stepsize argument for succ()
-* Ruby module -- Ruby::Version, Ruby::Interpreter
-* introduce Boolean class; super of TrueClass, FalseClass
-* Process::waitall [ruby-talk:4557]
-* synchronized method - synchronized{...}, synchronized :foo, :bar
-* move Time::times to Process.
-
-Extension Libraries
-
-- FastCGI ruby
-* ptk.rb pTk wrapper that is compatible to tk.rb
-* Berkeley DB extension
-* BitVector
-
-Ruby Libraries
-
-- net/http.rb
-* add uri.rb
-* urllib.rb, nttplib.rb, etc.
-* format like perl's
-
-Tools
-
-- extension library maker using SWIG
-* freeze or undump to bundle everything
-
-Misc
-
-- publish Ruby books
-* publish Ruby books in English
diff --git a/install-sh b/aclocal.m4
index e69de29bb2..e69de29bb2 100644
--- a/install-sh
+++ b/aclocal.m4
diff --git a/addr2line.c b/addr2line.c
new file mode 100644
index 0000000000..e5f25293e2
--- /dev/null
+++ b/addr2line.c
@@ -0,0 +1,3085 @@
+/**********************************************************************
+
+ addr2line.c -
+
+ $Author$
+
+ Copyright (C) 2010 Shinichiro Hamaji
+
+**********************************************************************/
+
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wgnu-empty-initializer"
+#pragma clang diagnostic ignored "-Wgcc-compat"
+#endif
+
+#include "ruby/internal/config.h"
+#include "ruby/defines.h"
+#include "ruby/missing.h"
+#include "addr2line.h"
+
+#include <stdio.h>
+#include <errno.h>
+
+#ifdef HAVE_LIBPROC_H
+#include <libproc.h>
+#endif
+
+#include "ruby/internal/stdbool.h"
+
+#if defined(USE_ELF) || defined(HAVE_MACH_O_LOADER_H)
+
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+/* Make alloca work the best possible way. */
+#ifdef __GNUC__
+# ifndef alloca
+# define alloca __builtin_alloca
+# endif
+#else
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef _AIX
+#pragma alloca
+# else
+# ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca();
+# endif
+# endif /* AIX */
+# endif /* HAVE_ALLOCA_H */
+#endif /* __GNUC__ */
+
+#ifdef HAVE_DLADDR
+# include <dlfcn.h>
+#endif
+
+#ifdef HAVE_MACH_O_LOADER_H
+# include <crt_externs.h>
+# include <mach-o/fat.h>
+# include <mach-o/loader.h>
+# include <mach-o/nlist.h>
+# include <mach-o/stab.h>
+#endif
+
+#ifdef USE_ELF
+# ifdef __OpenBSD__
+# include <elf_abi.h>
+# else
+# include <elf.h>
+# endif
+
+#ifndef ElfW
+# if SIZEOF_VOIDP == 8
+# define ElfW(x) Elf64##_##x
+# else
+# define ElfW(x) Elf32##_##x
+# endif
+#endif
+#ifndef ELF_ST_TYPE
+# if SIZEOF_VOIDP == 8
+# define ELF_ST_TYPE ELF64_ST_TYPE
+# else
+# define ELF_ST_TYPE ELF32_ST_TYPE
+# endif
+#endif
+#endif
+
+#ifdef SHF_COMPRESSED
+# if defined(ELFCOMPRESS_ZLIB) && defined(HAVE_LIBZ)
+ /* FreeBSD 11.0 lacks ELFCOMPRESS_ZLIB */
+# include <zlib.h>
+# define SUPPORT_COMPRESSED_DEBUG_LINE
+# endif
+#else /* compatibility with glibc < 2.22 */
+# define SHF_COMPRESSED 0
+#endif
+
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
+
+#define DW_LNS_copy 0x01
+#define DW_LNS_advance_pc 0x02
+#define DW_LNS_advance_line 0x03
+#define DW_LNS_set_file 0x04
+#define DW_LNS_set_column 0x05
+#define DW_LNS_negate_stmt 0x06
+#define DW_LNS_set_basic_block 0x07
+#define DW_LNS_const_add_pc 0x08
+#define DW_LNS_fixed_advance_pc 0x09
+#define DW_LNS_set_prologue_end 0x0a /* DWARF3 */
+#define DW_LNS_set_epilogue_begin 0x0b /* DWARF3 */
+#define DW_LNS_set_isa 0x0c /* DWARF3 */
+
+/* Line number extended opcode name. */
+#define DW_LNE_end_sequence 0x01
+#define DW_LNE_set_address 0x02
+#define DW_LNE_define_file 0x03
+#define DW_LNE_set_discriminator 0x04 /* DWARF4 */
+
+PRINTF_ARGS(static int kprintf(const char *fmt, ...), 1, 2);
+
+typedef struct line_info {
+ const char *dirname;
+ const char *filename;
+ const char *path; /* object path */
+ int line;
+
+ uintptr_t base_addr;
+ uintptr_t saddr;
+ const char *sname; /* function name */
+
+ struct line_info *next;
+} line_info_t;
+
+struct dwarf_section {
+ char *ptr;
+ size_t size;
+ uint64_t flags;
+};
+
+typedef struct obj_info {
+ const char *path; /* object path */
+ char *mapped;
+ size_t mapped_size;
+ void *uncompressed;
+ uintptr_t base_addr;
+ uintptr_t vmaddr;
+ struct dwarf_section debug_abbrev;
+ struct dwarf_section debug_info;
+ struct dwarf_section debug_line;
+ struct dwarf_section debug_ranges;
+ struct dwarf_section debug_str_offsets;
+ struct dwarf_section debug_addr;
+ struct dwarf_section debug_rnglists;
+ struct dwarf_section debug_str;
+ struct dwarf_section debug_line_str;
+ struct obj_info *next;
+} obj_info_t;
+
+#define DWARF_SECTION_COUNT 9
+
+static struct dwarf_section *
+obj_dwarf_section_at(obj_info_t *obj, int n)
+{
+ struct dwarf_section *ary[] = {
+ &obj->debug_abbrev,
+ &obj->debug_info,
+ &obj->debug_line,
+ &obj->debug_ranges,
+ &obj->debug_str_offsets,
+ &obj->debug_addr,
+ &obj->debug_rnglists,
+ &obj->debug_str,
+ &obj->debug_line_str
+ };
+ if (n < 0 || DWARF_SECTION_COUNT <= n) {
+ abort();
+ }
+ return ary[n];
+}
+
+struct debug_section_definition {
+ const char *name;
+ struct dwarf_section *dwarf;
+};
+
+/* Avoid consuming stack as this module may be used from signal handler */
+static char binary_filename[PATH_MAX + 1];
+
+static unsigned long
+uleb128(const char **p)
+{
+ unsigned long r = 0;
+ int s = 0;
+ for (;;) {
+ unsigned char b = (unsigned char)*(*p)++;
+ if (b < 0x80) {
+ r += (unsigned long)b << s;
+ break;
+ }
+ r += (b & 0x7f) << s;
+ s += 7;
+ }
+ return r;
+}
+
+static long
+sleb128(const char **p)
+{
+ long r = 0;
+ int s = 0;
+ for (;;) {
+ unsigned char b = (unsigned char)*(*p)++;
+ if (b < 0x80) {
+ if (b & 0x40) {
+ r -= (0x80 - b) << s;
+ }
+ else {
+ r += (b & 0x3f) << s;
+ }
+ break;
+ }
+ r += (b & 0x7f) << s;
+ s += 7;
+ }
+ return r;
+}
+
+static const char *
+get_nth_dirname(unsigned long dir, const char *p)
+{
+ if (!dir--) {
+ return "";
+ }
+ while (dir--) {
+ while (*p) p++;
+ p++;
+ if (!*p) {
+ kprintf("Unexpected directory number %lu in %s\n",
+ dir, binary_filename);
+ return "";
+ }
+ }
+ return p;
+}
+
+static const char *parse_ver5_debug_line_header(const char *p, int idx, uint8_t format, obj_info_t *obj, const char **out_path, uint64_t *out_directory_index);
+
+static void
+fill_filename(int file, uint8_t format, uint16_t version, const char *include_directories, const char *filenames, line_info_t *line, obj_info_t *obj)
+{
+ int i;
+ const char *p = filenames;
+ const char *filename;
+ unsigned long dir;
+ if (version >= 5) {
+ const char *path;
+ uint64_t directory_index = -1;
+ parse_ver5_debug_line_header(filenames, file, format, obj, &path, &directory_index);
+ line->filename = path;
+ parse_ver5_debug_line_header(include_directories, (int)directory_index, format, obj, &path, NULL);
+ line->dirname = path;
+ }
+ else {
+ for (i = 1; i <= file; i++) {
+ filename = p;
+ if (!*p) {
+ /* Need to output binary file name? */
+ kprintf("Unexpected file number %d in %s at %tx\n",
+ file, binary_filename, filenames - obj->mapped);
+ return;
+ }
+ while (*p) p++;
+ p++;
+ dir = uleb128(&p);
+ /* last modified. */
+ uleb128(&p);
+ /* size of the file. */
+ uleb128(&p);
+
+ if (i == file) {
+ line->filename = filename;
+ line->dirname = get_nth_dirname(dir, include_directories);
+ }
+ }
+ }
+}
+
+static void
+fill_line(int num_traces, void **traces, uintptr_t addr, int file, int line,
+ uint8_t format, uint16_t version, const char *include_directories, const char *filenames,
+ obj_info_t *obj, line_info_t *lines, int offset)
+{
+ int i;
+ addr += obj->base_addr - obj->vmaddr;
+ for (i = offset; i < num_traces; i++) {
+ uintptr_t a = (uintptr_t)traces[i];
+ /* We assume one line code doesn't result >100 bytes of native code.
+ We may want more reliable way eventually... */
+ if (addr < a && a < addr + 100) {
+ fill_filename(file, format, version, include_directories, filenames, &lines[i], obj);
+ lines[i].line = line;
+ }
+ }
+}
+
+struct LineNumberProgramHeader {
+ uint64_t unit_length;
+ uint16_t version;
+ uint8_t format; /* 4 or 8 */
+ uint64_t header_length;
+ uint8_t minimum_instruction_length;
+ uint8_t maximum_operations_per_instruction;
+ uint8_t default_is_stmt;
+ int8_t line_base;
+ uint8_t line_range;
+ uint8_t opcode_base;
+ /* uint8_t standard_opcode_lengths[opcode_base-1]; */
+ const char *include_directories;
+ const char *filenames;
+ const char *cu_start;
+ const char *cu_end;
+};
+
+static int
+parse_debug_line_header(obj_info_t *obj, const char **pp, struct LineNumberProgramHeader *header)
+{
+ const char *p = *pp;
+ header->unit_length = *(uint32_t *)p;
+ p += sizeof(uint32_t);
+
+ header->format = 4;
+ if (header->unit_length == 0xffffffff) {
+ header->unit_length = *(uint64_t *)p;
+ p += sizeof(uint64_t);
+ header->format = 8;
+ }
+
+ header->cu_end = p + header->unit_length;
+
+ header->version = *(uint16_t *)p;
+ p += sizeof(uint16_t);
+ if (header->version > 5) return -1;
+
+ if (header->version >= 5) {
+ /* address_size = *(uint8_t *)p++; */
+ /* segment_selector_size = *(uint8_t *)p++; */
+ p += 2;
+ }
+
+ header->header_length = header->format == 4 ? *(uint32_t *)p : *(uint64_t *)p;
+ p += header->format;
+ header->cu_start = p + header->header_length;
+
+ header->minimum_instruction_length = *(uint8_t *)p++;
+
+ if (header->version >= 4) {
+ /* maximum_operations_per_instruction = *(uint8_t *)p; */
+ if (*p != 1) return -1; /* For non-VLIW architectures, this field is 1 */
+ p++;
+ }
+
+ header->default_is_stmt = *(uint8_t *)p++;
+ header->line_base = *(int8_t *)p++;
+ header->line_range = *(uint8_t *)p++;
+ header->opcode_base = *(uint8_t *)p++;
+ /* header->standard_opcode_lengths = (uint8_t *)p - 1; */
+ p += header->opcode_base - 1;
+
+ if (header->version >= 5) {
+ header->include_directories = p;
+ p = parse_ver5_debug_line_header(p, -1, header->format, obj, NULL, NULL);
+ header->filenames = p;
+ }
+ else {
+ header->include_directories = p;
+
+ /* temporary measure for compress-debug-sections */
+ if (p >= header->cu_end) return -1;
+
+ /* skip include directories */
+ while (*p) {
+ p = memchr(p, '\0', header->cu_end - p);
+ if (!p) return -1;
+ p++;
+ }
+ p++;
+
+ header->filenames = p;
+ }
+
+ *pp = header->cu_start;
+
+ return 0;
+}
+
+static int
+parse_debug_line_cu(int num_traces, void **traces, const char **debug_line,
+ obj_info_t *obj, line_info_t *lines, int offset)
+{
+ const char *p = (const char *)*debug_line;
+ struct LineNumberProgramHeader header;
+
+ /* The registers. */
+ unsigned long addr = 0;
+ unsigned int file = 1;
+ unsigned int line = 1;
+ /* unsigned int column = 0; */
+ int is_stmt;
+ /* int basic_block = 0; */
+ /* int end_sequence = 0; */
+ /* int prologue_end = 0; */
+ /* int epilogue_begin = 0; */
+ /* unsigned int isa = 0; */
+
+ if (parse_debug_line_header(obj, &p, &header))
+ return -1;
+ is_stmt = header.default_is_stmt;
+
+#define FILL_LINE() \
+ do { \
+ fill_line(num_traces, traces, addr, file, line, \
+ header.format, \
+ header.version, \
+ header.include_directories, \
+ header.filenames, \
+ obj, lines, offset); \
+ /*basic_block = prologue_end = epilogue_begin = 0;*/ \
+ } while (0)
+
+ while (p < header.cu_end) {
+ unsigned long a;
+ unsigned char op = *p++;
+ switch (op) {
+ case DW_LNS_copy:
+ FILL_LINE();
+ break;
+ case DW_LNS_advance_pc:
+ a = uleb128(&p) * header.minimum_instruction_length;
+ addr += a;
+ break;
+ case DW_LNS_advance_line: {
+ long a = sleb128(&p);
+ line += a;
+ break;
+ }
+ case DW_LNS_set_file:
+ file = (unsigned int)uleb128(&p);
+ break;
+ case DW_LNS_set_column:
+ /*column = (unsigned int)*/(void)uleb128(&p);
+ break;
+ case DW_LNS_negate_stmt:
+ is_stmt = !is_stmt;
+ break;
+ case DW_LNS_set_basic_block:
+ /*basic_block = 1; */
+ break;
+ case DW_LNS_const_add_pc:
+ a = ((255UL - header.opcode_base) / header.line_range) *
+ header.minimum_instruction_length;
+ addr += a;
+ break;
+ case DW_LNS_fixed_advance_pc:
+ a = *(uint16_t *)p;
+ p += sizeof(uint16_t);
+ addr += a;
+ break;
+ case DW_LNS_set_prologue_end:
+ /* prologue_end = 1; */
+ break;
+ case DW_LNS_set_epilogue_begin:
+ /* epilogue_begin = 1; */
+ break;
+ case DW_LNS_set_isa:
+ /* isa = (unsigned int)*/(void)uleb128(&p);
+ break;
+ case 0:
+ a = uleb128(&p);
+ op = *p++;
+ switch (op) {
+ case DW_LNE_end_sequence:
+ /* end_sequence = 1; */
+ FILL_LINE();
+ addr = 0;
+ file = 1;
+ line = 1;
+ /* column = 0; */
+ is_stmt = header.default_is_stmt;
+ /* end_sequence = 0; */
+ /* isa = 0; */
+ break;
+ case DW_LNE_set_address:
+ addr = *(unsigned long *)p;
+ p += sizeof(unsigned long);
+ break;
+ case DW_LNE_define_file:
+ kprintf("Unsupported operation in %s\n",
+ binary_filename);
+ break;
+ case DW_LNE_set_discriminator:
+ /* TODO:currently ignore */
+ uleb128(&p);
+ break;
+ default:
+ kprintf("Unknown extended opcode: %d in %s\n",
+ op, binary_filename);
+ }
+ break;
+ default: {
+ uint8_t adjusted_opcode = op - header.opcode_base;
+ uint8_t operation_advance = adjusted_opcode / header.line_range;
+ /* NOTE: this code doesn't support VLIW */
+ addr += operation_advance * header.minimum_instruction_length;
+ line += header.line_base + (adjusted_opcode % header.line_range);
+ FILL_LINE();
+ }
+ }
+ }
+ *debug_line = (char *)p;
+ return 0;
+}
+
+static int
+parse_debug_line(int num_traces, void **traces,
+ const char *debug_line, unsigned long size,
+ obj_info_t *obj, line_info_t *lines, int offset)
+{
+ const char *debug_line_end = debug_line + size;
+ while (debug_line < debug_line_end) {
+ if (parse_debug_line_cu(num_traces, traces, &debug_line, obj, lines, offset))
+ return -1;
+ }
+ if (debug_line != debug_line_end) {
+ kprintf("Unexpected size of .debug_line in %s\n",
+ binary_filename);
+ }
+ return 0;
+}
+
+/* read file and fill lines */
+static uintptr_t
+fill_lines(int num_traces, void **traces, int check_debuglink,
+ obj_info_t **objp, line_info_t *lines, int offset);
+
+static void
+append_obj(obj_info_t **objp)
+{
+ obj_info_t *newobj = calloc(1, sizeof(obj_info_t));
+ if (*objp) (*objp)->next = newobj;
+ *objp = newobj;
+}
+
+#ifdef USE_ELF
+/* Ideally we should check 4 paths to follow gnu_debuglink:
+ *
+ * - /usr/lib/debug/.build-id/ab/cdef1234.debug
+ * - /usr/bin/ruby.debug
+ * - /usr/bin/.debug/ruby.debug
+ * - /usr/lib/debug/usr/bin/ruby.debug.
+ *
+ * but we handle only two cases for now as the two formats are
+ * used by some linux distributions.
+ *
+ * See GDB's info for detail.
+ * https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html
+ */
+
+// check the path pattern of "/usr/lib/debug/usr/bin/ruby.debug"
+static void
+follow_debuglink(const char *debuglink, int num_traces, void **traces,
+ obj_info_t **objp, line_info_t *lines, int offset)
+{
+ static const char global_debug_dir[] = "/usr/lib/debug";
+ const size_t global_debug_dir_len = sizeof(global_debug_dir) - 1;
+ char *p;
+ obj_info_t *o1 = *objp, *o2;
+ size_t len;
+
+ p = strrchr(binary_filename, '/');
+ if (!p) {
+ return;
+ }
+ p[1] = '\0';
+
+ len = strlen(binary_filename);
+ if (len >= PATH_MAX - global_debug_dir_len)
+ len = PATH_MAX - global_debug_dir_len - 1;
+ memmove(binary_filename + global_debug_dir_len, binary_filename, len);
+ memcpy(binary_filename, global_debug_dir, global_debug_dir_len);
+ len += global_debug_dir_len;
+ strlcpy(binary_filename + len, debuglink, PATH_MAX - len);
+
+ append_obj(objp);
+ o2 = *objp;
+ o2->base_addr = o1->base_addr;
+ o2->path = o1->path;
+ fill_lines(num_traces, traces, 0, objp, lines, offset);
+}
+
+// check the path pattern of "/usr/lib/debug/.build-id/ab/cdef1234.debug"
+static void
+follow_debuglink_build_id(const char *build_id, size_t build_id_size, int num_traces, void **traces,
+ obj_info_t **objp, line_info_t *lines, int offset)
+{
+ static const char global_debug_dir[] = "/usr/lib/debug/.build-id/";
+ const size_t global_debug_dir_len = sizeof(global_debug_dir) - 1;
+ char *p;
+ obj_info_t *o1 = *objp, *o2;
+ size_t i;
+
+ if (PATH_MAX < global_debug_dir_len + 1 + build_id_size * 2 + 6) return;
+
+ memcpy(binary_filename, global_debug_dir, global_debug_dir_len);
+ p = binary_filename + global_debug_dir_len;
+ for (i = 0; i < build_id_size; i++) {
+ static const char tbl[] = "0123456789abcdef";
+ unsigned char n = build_id[i];
+ *p++ = tbl[n / 16];
+ *p++ = tbl[n % 16];
+ if (i == 0) *p++ = '/';
+ }
+ strcpy(p, ".debug");
+
+ append_obj(objp);
+ o2 = *objp;
+ o2->base_addr = o1->base_addr;
+ o2->path = o1->path;
+ fill_lines(num_traces, traces, 0, objp, lines, offset);
+}
+#endif
+
+enum
+{
+ DW_TAG_compile_unit = 0x11,
+ DW_TAG_inlined_subroutine = 0x1d,
+ DW_TAG_subprogram = 0x2e,
+};
+
+/* Attributes encodings */
+enum
+{
+ DW_AT_sibling = 0x01,
+ DW_AT_location = 0x02,
+ DW_AT_name = 0x03,
+ /* Reserved 0x04 */
+ /* Reserved 0x05 */
+ /* Reserved 0x06 */
+ /* Reserved 0x07 */
+ /* Reserved 0x08 */
+ DW_AT_ordering = 0x09,
+ /* Reserved 0x0a */
+ DW_AT_byte_size = 0x0b,
+ /* Reserved 0x0c */
+ DW_AT_bit_size = 0x0d,
+ /* Reserved 0x0e */
+ /* Reserved 0x0f */
+ DW_AT_stmt_list = 0x10,
+ DW_AT_low_pc = 0x11,
+ DW_AT_high_pc = 0x12,
+ DW_AT_language = 0x13,
+ /* Reserved 0x14 */
+ DW_AT_discr = 0x15,
+ DW_AT_discr_value = 0x16,
+ DW_AT_visibility = 0x17,
+ DW_AT_import = 0x18,
+ DW_AT_string_length = 0x19,
+ DW_AT_common_reference = 0x1a,
+ DW_AT_comp_dir = 0x1b,
+ DW_AT_const_value = 0x1c,
+ DW_AT_containing_type = 0x1d,
+ DW_AT_default_value = 0x1e,
+ /* Reserved 0x1f */
+ DW_AT_inline = 0x20,
+ DW_AT_is_optional = 0x21,
+ DW_AT_lower_bound = 0x22,
+ /* Reserved 0x23 */
+ /* Reserved 0x24 */
+ DW_AT_producer = 0x25,
+ /* Reserved 0x26 */
+ DW_AT_prototyped = 0x27,
+ /* Reserved 0x28 */
+ /* Reserved 0x29 */
+ DW_AT_return_addr = 0x2a,
+ /* Reserved 0x2b */
+ DW_AT_start_scope = 0x2c,
+ /* Reserved 0x2d */
+ DW_AT_bit_stride = 0x2e,
+ DW_AT_upper_bound = 0x2f,
+ /* Reserved 0x30 */
+ DW_AT_abstract_origin = 0x31,
+ DW_AT_accessibility = 0x32,
+ DW_AT_address_class = 0x33,
+ DW_AT_artificial = 0x34,
+ DW_AT_base_types = 0x35,
+ DW_AT_calling_convention = 0x36,
+ DW_AT_count = 0x37,
+ DW_AT_data_member_location = 0x38,
+ DW_AT_decl_column = 0x39,
+ DW_AT_decl_file = 0x3a,
+ DW_AT_decl_line = 0x3b,
+ DW_AT_declaration = 0x3c,
+ DW_AT_discr_list = 0x3d,
+ DW_AT_encoding = 0x3e,
+ DW_AT_external = 0x3f,
+ DW_AT_frame_base = 0x40,
+ DW_AT_friend = 0x41,
+ DW_AT_identifier_case = 0x42,
+ /* Reserved 0x43 */
+ DW_AT_namelist_item = 0x44,
+ DW_AT_priority = 0x45,
+ DW_AT_segment = 0x46,
+ DW_AT_specification = 0x47,
+ DW_AT_static_link = 0x48,
+ DW_AT_type = 0x49,
+ DW_AT_use_location = 0x4a,
+ DW_AT_variable_parameter = 0x4b,
+ DW_AT_virtuality = 0x4c,
+ DW_AT_vtable_elem_location = 0x4d,
+ DW_AT_allocated = 0x4e,
+ DW_AT_associated = 0x4f,
+ DW_AT_data_location = 0x50,
+ DW_AT_byte_stride = 0x51,
+ DW_AT_entry_pc = 0x52,
+ DW_AT_use_UTF8 = 0x53,
+ DW_AT_extension = 0x54,
+ DW_AT_ranges = 0x55,
+ DW_AT_trampoline = 0x56,
+ DW_AT_call_column = 0x57,
+ DW_AT_call_file = 0x58,
+ DW_AT_call_line = 0x59,
+ DW_AT_description = 0x5a,
+ DW_AT_binary_scale = 0x5b,
+ DW_AT_decimal_scale = 0x5c,
+ DW_AT_small = 0x5d,
+ DW_AT_decimal_sign = 0x5e,
+ DW_AT_digit_count = 0x5f,
+ DW_AT_picture_string = 0x60,
+ DW_AT_mutable = 0x61,
+ DW_AT_threads_scaled = 0x62,
+ DW_AT_explicit = 0x63,
+ DW_AT_object_pointer = 0x64,
+ DW_AT_endianity = 0x65,
+ DW_AT_elemental = 0x66,
+ DW_AT_pure = 0x67,
+ DW_AT_recursive = 0x68,
+ DW_AT_signature = 0x69,
+ DW_AT_main_subprogram = 0x6a,
+ DW_AT_data_bit_offset = 0x6b,
+ DW_AT_const_expr = 0x6c,
+ DW_AT_enum_class = 0x6d,
+ DW_AT_linkage_name = 0x6e,
+ DW_AT_string_length_bit_size = 0x6f,
+ DW_AT_string_length_byte_size = 0x70,
+ DW_AT_rank = 0x71,
+ DW_AT_str_offsets_base = 0x72,
+ DW_AT_addr_base = 0x73,
+ DW_AT_rnglists_base = 0x74,
+ /* Reserved 0x75 */
+ DW_AT_dwo_name = 0x76,
+ DW_AT_reference = 0x77,
+ DW_AT_rvalue_reference = 0x78,
+ DW_AT_macros = 0x79,
+ DW_AT_call_all_calls = 0x7a,
+ DW_AT_call_all_source_calls = 0x7b,
+ DW_AT_call_all_tail_calls = 0x7c,
+ DW_AT_call_return_pc = 0x7d,
+ DW_AT_call_value = 0x7e,
+ DW_AT_call_origin = 0x7f,
+ DW_AT_call_parameter = 0x80,
+ DW_AT_call_pc = 0x81,
+ DW_AT_call_tail_call = 0x82,
+ DW_AT_call_target = 0x83,
+ DW_AT_call_target_clobbered = 0x84,
+ DW_AT_call_data_location = 0x85,
+ DW_AT_call_data_value = 0x86,
+ DW_AT_noreturn = 0x87,
+ DW_AT_alignment = 0x88,
+ DW_AT_export_symbols = 0x89,
+ DW_AT_deleted = 0x8a,
+ DW_AT_defaulted = 0x8b,
+ DW_AT_loclists_base = 0x8c,
+ DW_AT_lo_user = 0x2000,
+ DW_AT_hi_user = 0x3fff
+};
+
+/* Attribute form encodings */
+enum
+{
+ DW_FORM_addr = 0x01,
+ /* Reserved 0x02 */
+ DW_FORM_block2 = 0x03,
+ DW_FORM_block4 = 0x04,
+ DW_FORM_data2 = 0x05,
+ DW_FORM_data4 = 0x06,
+ DW_FORM_data8 = 0x07,
+ DW_FORM_string = 0x08,
+ DW_FORM_block = 0x09,
+ DW_FORM_block1 = 0x0a,
+ DW_FORM_data1 = 0x0b,
+ DW_FORM_flag = 0x0c,
+ DW_FORM_sdata = 0x0d,
+ DW_FORM_strp = 0x0e,
+ DW_FORM_udata = 0x0f,
+ DW_FORM_ref_addr = 0x10,
+ DW_FORM_ref1 = 0x11,
+ DW_FORM_ref2 = 0x12,
+ DW_FORM_ref4 = 0x13,
+ DW_FORM_ref8 = 0x14,
+ DW_FORM_ref_udata = 0x15,
+ DW_FORM_indirect = 0x16,
+ DW_FORM_sec_offset = 0x17,
+ DW_FORM_exprloc = 0x18,
+ DW_FORM_flag_present = 0x19,
+ DW_FORM_strx = 0x1a,
+ DW_FORM_addrx = 0x1b,
+ DW_FORM_ref_sup4 = 0x1c,
+ DW_FORM_strp_sup = 0x1d,
+ DW_FORM_data16 = 0x1e,
+ DW_FORM_line_strp = 0x1f,
+ DW_FORM_ref_sig8 = 0x20,
+ DW_FORM_implicit_const = 0x21,
+ DW_FORM_loclistx = 0x22,
+ DW_FORM_rnglistx = 0x23,
+ DW_FORM_ref_sup8 = 0x24,
+ DW_FORM_strx1 = 0x25,
+ DW_FORM_strx2 = 0x26,
+ DW_FORM_strx3 = 0x27,
+ DW_FORM_strx4 = 0x28,
+ DW_FORM_addrx1 = 0x29,
+ DW_FORM_addrx2 = 0x2a,
+ DW_FORM_addrx3 = 0x2b,
+ DW_FORM_addrx4 = 0x2c
+};
+
+/* Range list entry encodings */
+enum {
+ DW_RLE_end_of_list = 0x00,
+ DW_RLE_base_addressx = 0x01,
+ DW_RLE_startx_endx = 0x02,
+ DW_RLE_startx_length = 0x03,
+ DW_RLE_offset_pair = 0x04,
+ DW_RLE_base_address = 0x05,
+ DW_RLE_start_end = 0x06,
+ DW_RLE_start_length = 0x07
+};
+
+enum {
+ VAL_none = 0,
+ VAL_cstr = 1,
+ VAL_data = 2,
+ VAL_uint = 3,
+ VAL_int = 4,
+ VAL_addr = 5
+};
+
+# define ABBREV_TABLE_SIZE 256
+typedef struct {
+ obj_info_t *obj;
+ const char *file;
+ uint8_t current_version;
+ const char *current_cu;
+ uint64_t current_low_pc;
+ uint64_t current_str_offsets_base;
+ uint64_t current_addr_base;
+ uint64_t current_rnglists_base;
+ const char *debug_line_cu_end;
+ uint8_t debug_line_format;
+ uint16_t debug_line_version;
+ const char *debug_line_files;
+ const char *debug_line_directories;
+ const char *p;
+ const char *cu_end;
+ const char *pend;
+ const char *q0;
+ const char *q;
+ int format; // 4 or 8
+ uint8_t address_size;
+ int level;
+ const char *abbrev_table[ABBREV_TABLE_SIZE];
+} DebugInfoReader;
+
+typedef struct {
+ ptrdiff_t pos;
+ int tag;
+ int has_children;
+} DIE;
+
+typedef struct {
+ union {
+ const char *ptr;
+ uint64_t uint64;
+ int64_t int64;
+ uint64_t addr_idx;
+ } as;
+ uint64_t off;
+ uint64_t at;
+ uint64_t form;
+ size_t size;
+ int type;
+} DebugInfoValue;
+
+#if defined(WORDS_BIGENDIAN)
+#define MERGE_2INTS(a,b,sz) (((uint64_t)(a)<<sz)|(b))
+#else
+#define MERGE_2INTS(a,b,sz) (((uint64_t)(b)<<sz)|(a))
+#endif
+
+static uint16_t
+get_uint16(const uint8_t *p)
+{
+ return (uint16_t)MERGE_2INTS(p[0],p[1],8);
+}
+
+static uint32_t
+get_uint32(const uint8_t *p)
+{
+ return (uint32_t)MERGE_2INTS(get_uint16(p),get_uint16(p+2),16);
+}
+
+static uint64_t
+get_uint64(const uint8_t *p)
+{
+ return MERGE_2INTS(get_uint32(p),get_uint32(p+4),32);
+}
+
+static uint8_t
+read_uint8(const char **ptr)
+{
+ const char *p = *ptr;
+ *ptr = (p + 1);
+ return (uint8_t)*p;
+}
+
+static uint16_t
+read_uint16(const char **ptr)
+{
+ const char *p = *ptr;
+ *ptr = (p + 2);
+ return get_uint16((const uint8_t *)p);
+}
+
+static uint32_t
+read_uint24(const char **ptr)
+{
+ const char *p = *ptr;
+ *ptr = (p + 3);
+ return ((uint8_t)*p << 16) | get_uint16((const uint8_t *)p+1);
+}
+
+static uint32_t
+read_uint32(const char **ptr)
+{
+ const char *p = *ptr;
+ *ptr = (p + 4);
+ return get_uint32((const uint8_t *)p);
+}
+
+static uint64_t
+read_uint64(const char **ptr)
+{
+ const unsigned char *p = (const unsigned char *)*ptr;
+ *ptr = (char *)(p + 8);
+ return get_uint64(p);
+}
+
+static uintptr_t
+read_uintptr(const char **ptr)
+{
+ const unsigned char *p = (const unsigned char *)*ptr;
+ *ptr = (char *)(p + SIZEOF_VOIDP);
+#if SIZEOF_VOIDP == 8
+ return get_uint64(p);
+#else
+ return get_uint32(p);
+#endif
+}
+
+static uint64_t
+read_uint(DebugInfoReader *reader)
+{
+ if (reader->format == 4) {
+ return read_uint32(&reader->p);
+ } else { /* 64 bit */
+ return read_uint64(&reader->p);
+ }
+}
+
+static uint64_t
+read_uleb128(DebugInfoReader *reader)
+{
+ return uleb128(&reader->p);
+}
+
+static int64_t
+read_sleb128(DebugInfoReader *reader)
+{
+ return sleb128(&reader->p);
+}
+
+static void
+debug_info_reader_init(DebugInfoReader *reader, obj_info_t *obj)
+{
+ reader->file = obj->mapped;
+ reader->obj = obj;
+ reader->p = obj->debug_info.ptr;
+ reader->pend = obj->debug_info.ptr + obj->debug_info.size;
+ reader->debug_line_cu_end = obj->debug_line.ptr;
+ reader->current_low_pc = 0;
+ reader->current_str_offsets_base = 0;
+ reader->current_addr_base = 0;
+ reader->current_rnglists_base = 0;
+}
+
+static void
+di_skip_die_attributes(const char **p)
+{
+ for (;;) {
+ uint64_t at = uleb128(p);
+ uint64_t form = uleb128(p);
+ if (!at && !form) break;
+ switch (form) {
+ default:
+ break;
+ case DW_FORM_implicit_const:
+ sleb128(p);
+ break;
+ }
+ }
+}
+
+static void
+di_read_debug_abbrev_cu(DebugInfoReader *reader)
+{
+ uint64_t prev = 0;
+ const char *p = reader->q0;
+ for (;;) {
+ uint64_t abbrev_number = uleb128(&p);
+ if (abbrev_number <= prev) break;
+ if (abbrev_number < ABBREV_TABLE_SIZE) {
+ reader->abbrev_table[abbrev_number] = p;
+ }
+ prev = abbrev_number;
+ uleb128(&p); /* tag */
+ p++; /* has_children */
+ di_skip_die_attributes(&p);
+ }
+}
+
+static int
+di_read_debug_line_cu(DebugInfoReader *reader)
+{
+ const char *p;
+ struct LineNumberProgramHeader header;
+
+ p = (const char *)reader->debug_line_cu_end;
+ if (parse_debug_line_header(reader->obj, &p, &header))
+ return -1;
+
+ reader->debug_line_cu_end = (char *)header.cu_end;
+ reader->debug_line_format = header.format;
+ reader->debug_line_version = header.version;
+ reader->debug_line_directories = (char *)header.include_directories;
+ reader->debug_line_files = (char *)header.filenames;
+
+ return 0;
+}
+
+static void
+set_addr_idx_value(DebugInfoValue *v, uint64_t n)
+{
+ v->as.addr_idx = n;
+ v->type = VAL_addr;
+}
+
+static void
+set_uint_value(DebugInfoValue *v, uint64_t n)
+{
+ v->as.uint64 = n;
+ v->type = VAL_uint;
+}
+
+static void
+set_int_value(DebugInfoValue *v, int64_t n)
+{
+ v->as.int64 = n;
+ v->type = VAL_int;
+}
+
+static void
+set_cstr_value(DebugInfoValue *v, const char *s)
+{
+ v->as.ptr = s;
+ v->off = 0;
+ v->type = VAL_cstr;
+}
+
+static void
+set_cstrp_value(DebugInfoValue *v, const char *s, uint64_t off)
+{
+ v->as.ptr = s;
+ v->off = off;
+ v->type = VAL_cstr;
+}
+
+static void
+set_data_value(DebugInfoValue *v, const char *s)
+{
+ v->as.ptr = s;
+ v->type = VAL_data;
+}
+
+static const char *
+get_cstr_value(DebugInfoValue *v)
+{
+ if (v->as.ptr) {
+ return v->as.ptr + v->off;
+ } else {
+ return NULL;
+ }
+}
+
+static const char *
+resolve_strx(DebugInfoReader *reader, uint64_t idx)
+{
+ const char *p = reader->obj->debug_str_offsets.ptr + reader->current_str_offsets_base;
+ uint64_t off;
+ if (reader->format == 4) {
+ off = ((uint32_t *)p)[idx];
+ }
+ else {
+ off = ((uint64_t *)p)[idx];
+ }
+ return reader->obj->debug_str.ptr + off;
+}
+
+static void
+debug_info_reader_read_addr_value(DebugInfoReader *reader, DebugInfoValue *v)
+{
+ if (reader->address_size == 4) {
+ set_uint_value(v, read_uint32(&reader->p));
+ } else if (reader->address_size == 8) {
+ set_uint_value(v, read_uint64(&reader->p));
+ } else {
+ fprintf(stderr,"unknown address_size:%d", reader->address_size);
+ abort();
+ }
+}
+
+static void
+debug_info_reader_read_value(DebugInfoReader *reader, uint64_t form, DebugInfoValue *v)
+{
+ switch (form) {
+ case DW_FORM_addr:
+ debug_info_reader_read_addr_value(reader, v);
+ break;
+ case DW_FORM_block2:
+ v->size = read_uint16(&reader->p);
+ set_data_value(v, reader->p);
+ reader->p += v->size;
+ break;
+ case DW_FORM_block4:
+ v->size = read_uint32(&reader->p);
+ set_data_value(v, reader->p);
+ reader->p += v->size;
+ break;
+ case DW_FORM_data2:
+ set_uint_value(v, read_uint16(&reader->p));
+ break;
+ case DW_FORM_data4:
+ set_uint_value(v, read_uint32(&reader->p));
+ break;
+ case DW_FORM_data8:
+ set_uint_value(v, read_uint64(&reader->p));
+ break;
+ case DW_FORM_string:
+ v->size = strlen(reader->p);
+ set_cstr_value(v, reader->p);
+ reader->p += v->size + 1;
+ break;
+ case DW_FORM_block:
+ v->size = uleb128(&reader->p);
+ set_data_value(v, reader->p);
+ reader->p += v->size;
+ break;
+ case DW_FORM_block1:
+ v->size = read_uint8(&reader->p);
+ set_data_value(v, reader->p);
+ reader->p += v->size;
+ break;
+ case DW_FORM_data1:
+ set_uint_value(v, read_uint8(&reader->p));
+ break;
+ case DW_FORM_flag:
+ set_uint_value(v, read_uint8(&reader->p));
+ break;
+ case DW_FORM_sdata:
+ set_int_value(v, read_sleb128(reader));
+ break;
+ case DW_FORM_strp:
+ set_cstrp_value(v, reader->obj->debug_str.ptr, read_uint(reader));
+ break;
+ case DW_FORM_udata:
+ set_uint_value(v, read_uleb128(reader));
+ break;
+ case DW_FORM_ref_addr:
+ if (reader->current_version <= 2) {
+ // DWARF Version 2 specifies that references have
+ // the same size as an address on the target system
+ debug_info_reader_read_addr_value(reader, v);
+ } else {
+ if (reader->format == 4) {
+ set_uint_value(v, read_uint32(&reader->p));
+ } else if (reader->format == 8) {
+ set_uint_value(v, read_uint64(&reader->p));
+ } else {
+ fprintf(stderr,"unknown format:%d", reader->format);
+ abort();
+ }
+ }
+ break;
+ case DW_FORM_ref1:
+ set_uint_value(v, read_uint8(&reader->p));
+ break;
+ case DW_FORM_ref2:
+ set_uint_value(v, read_uint16(&reader->p));
+ break;
+ case DW_FORM_ref4:
+ set_uint_value(v, read_uint32(&reader->p));
+ break;
+ case DW_FORM_ref8:
+ set_uint_value(v, read_uint64(&reader->p));
+ break;
+ case DW_FORM_ref_udata:
+ set_uint_value(v, uleb128(&reader->p));
+ break;
+ case DW_FORM_indirect:
+ /* TODO: read the referred value */
+ set_uint_value(v, uleb128(&reader->p));
+ break;
+ case DW_FORM_sec_offset:
+ set_uint_value(v, read_uint(reader)); /* offset */
+ /* addrptr: debug_addr */
+ /* lineptr: debug_line */
+ /* loclist: debug_loclists */
+ /* loclistptr: debug_loclists */
+ /* macptr: debug_macro */
+ /* rnglist: debug_rnglists */
+ /* rnglistptr: debug_rnglists */
+ /* stroffsetsptr: debug_str_offsets */
+ break;
+ case DW_FORM_exprloc:
+ v->size = (size_t)read_uleb128(reader);
+ set_data_value(v, reader->p);
+ reader->p += v->size;
+ break;
+ case DW_FORM_flag_present:
+ set_uint_value(v, 1);
+ break;
+ case DW_FORM_strx:
+ set_cstr_value(v, resolve_strx(reader, uleb128(&reader->p)));
+ break;
+ case DW_FORM_addrx:
+ set_addr_idx_value(v, uleb128(&reader->p));
+ break;
+ case DW_FORM_ref_sup4:
+ set_uint_value(v, read_uint32(&reader->p));
+ break;
+ case DW_FORM_strp_sup:
+ set_uint_value(v, read_uint(reader));
+ /* *p = reader->sup_file + reader->sup_str->sh_offset + ret; */
+ break;
+ case DW_FORM_data16:
+ v->size = 16;
+ set_data_value(v, reader->p);
+ reader->p += v->size;
+ break;
+ case DW_FORM_line_strp:
+ set_cstrp_value(v, reader->obj->debug_line_str.ptr, read_uint(reader));
+ break;
+ case DW_FORM_ref_sig8:
+ set_uint_value(v, read_uint64(&reader->p));
+ break;
+ case DW_FORM_implicit_const:
+ set_int_value(v, sleb128(&reader->q));
+ break;
+ case DW_FORM_loclistx:
+ set_uint_value(v, read_uleb128(reader));
+ break;
+ case DW_FORM_rnglistx:
+ set_uint_value(v, read_uleb128(reader));
+ break;
+ case DW_FORM_ref_sup8:
+ set_uint_value(v, read_uint64(&reader->p));
+ break;
+ case DW_FORM_strx1:
+ set_cstr_value(v, resolve_strx(reader, read_uint8(&reader->p)));
+ break;
+ case DW_FORM_strx2:
+ set_cstr_value(v, resolve_strx(reader, read_uint16(&reader->p)));
+ break;
+ case DW_FORM_strx3:
+ set_cstr_value(v, resolve_strx(reader, read_uint24(&reader->p)));
+ break;
+ case DW_FORM_strx4:
+ set_cstr_value(v, resolve_strx(reader, read_uint32(&reader->p)));
+ break;
+ case DW_FORM_addrx1:
+ set_addr_idx_value(v, read_uint8(&reader->p));
+ break;
+ case DW_FORM_addrx2:
+ set_addr_idx_value(v, read_uint16(&reader->p));
+ break;
+ case DW_FORM_addrx3:
+ set_addr_idx_value(v, read_uint24(&reader->p));
+ break;
+ case DW_FORM_addrx4:
+ set_addr_idx_value(v, read_uint32(&reader->p));
+ break;
+ case 0:
+ goto fail;
+ break;
+ }
+ return;
+
+ fail:
+ fprintf(stderr, "%d: unsupported form: %#"PRIx64"\n", __LINE__, form);
+ exit(1);
+}
+
+/* find abbrev in current compilation unit */
+static const char *
+di_find_abbrev(DebugInfoReader *reader, uint64_t abbrev_number)
+{
+ const char *p;
+ if (abbrev_number < ABBREV_TABLE_SIZE) {
+ return reader->abbrev_table[abbrev_number];
+ }
+ p = reader->abbrev_table[ABBREV_TABLE_SIZE-1];
+ /* skip 255th record */
+ uleb128(&p); /* tag */
+ p++; /* has_children */
+ di_skip_die_attributes(&p);
+ for (uint64_t n = uleb128(&p); abbrev_number != n; n = uleb128(&p)) {
+ if (n == 0) {
+ fprintf(stderr,"%d: Abbrev Number %"PRId64" not found\n",__LINE__, abbrev_number);
+ exit(1);
+ }
+ uleb128(&p); /* tag */
+ p++; /* has_children */
+ di_skip_die_attributes(&p);
+ }
+ return p;
+}
+
+#if 0
+static void
+hexdump0(const unsigned char *p, size_t n)
+{
+ size_t i;
+ fprintf(stderr, " 0 1 2 3 4 5 6 7 8 9 A B C D E F\n");
+ for (i=0; i < n; i++){
+ switch (i & 15) {
+ case 0:
+ fprintf(stderr, "%02" PRIdSIZE ": %02X ", i/16, p[i]);
+ break;
+ case 15:
+ fprintf(stderr, "%02X\n", p[i]);
+ break;
+ default:
+ fprintf(stderr, "%02X ", p[i]);
+ break;
+ }
+ }
+ if ((i & 15) != 15) {
+ fprintf(stderr, "\n");
+ }
+}
+#define hexdump(p,n) hexdump0((const unsigned char *)p, n)
+
+static void
+div_inspect(DebugInfoValue *v)
+{
+ switch (v->type) {
+ case VAL_uint:
+ fprintf(stderr,"%d: type:%d size:%" PRIxSIZE " v:%"PRIx64"\n",__LINE__,v->type,v->size,v->as.uint64);
+ break;
+ case VAL_int:
+ fprintf(stderr,"%d: type:%d size:%" PRIxSIZE " v:%"PRId64"\n",__LINE__,v->type,v->size,(int64_t)v->as.uint64);
+ break;
+ case VAL_cstr:
+ fprintf(stderr,"%d: type:%d size:%" PRIxSIZE " v:'%s'\n",__LINE__,v->type,v->size,v->as.ptr);
+ break;
+ case VAL_data:
+ fprintf(stderr,"%d: type:%d size:%" PRIxSIZE " v:\n",__LINE__,v->type,v->size);
+ hexdump(v->as.ptr, 16);
+ break;
+ }
+}
+#endif
+
+static DIE *
+di_read_die(DebugInfoReader *reader, DIE *die)
+{
+ uint64_t abbrev_number = uleb128(&reader->p);
+ if (abbrev_number == 0) {
+ reader->level--;
+ return NULL;
+ }
+
+ reader->q = di_find_abbrev(reader, abbrev_number);
+
+ die->pos = reader->p - reader->obj->debug_info.ptr - 1;
+ die->tag = (int)uleb128(&reader->q); /* tag */
+ die->has_children = *reader->q++; /* has_children */
+ if (die->has_children) {
+ reader->level++;
+ }
+ return die;
+}
+
+static DebugInfoValue *
+di_read_record(DebugInfoReader *reader, DebugInfoValue *vp)
+{
+ uint64_t at = uleb128(&reader->q);
+ uint64_t form = uleb128(&reader->q);
+ if (!at || !form) return NULL;
+ vp->at = at;
+ vp->form = form;
+ debug_info_reader_read_value(reader, form, vp);
+ return vp;
+}
+
+static void
+di_skip_records(DebugInfoReader *reader)
+{
+ for (;;) {
+ DebugInfoValue v = {{}};
+ uint64_t at = uleb128(&reader->q);
+ uint64_t form = uleb128(&reader->q);
+ if (!at || !form) return;
+ debug_info_reader_read_value(reader, form, &v);
+ }
+}
+
+typedef struct addr_header {
+ const char *ptr;
+ uint64_t unit_length;
+ uint8_t format;
+ uint8_t address_size;
+ /* uint8_t segment_selector_size; */
+} addr_header_t;
+
+static void
+addr_header_init(obj_info_t *obj, addr_header_t *header) {
+ const char *p = obj->debug_addr.ptr;
+
+ header->ptr = p;
+
+ if (!p) return;
+
+ header->unit_length = *(uint32_t *)p;
+ p += sizeof(uint32_t);
+
+ header->format = 4;
+ if (header->unit_length == 0xffffffff) {
+ header->unit_length = *(uint64_t *)p;
+ p += sizeof(uint64_t);
+ header->format = 8;
+ }
+
+ p += 2; /* version */
+ header->address_size = *p++;
+ p++; /* segment_selector_size */
+}
+
+static uint64_t
+read_addr(addr_header_t *header, uint64_t addr_base, uint64_t idx) {
+ if (header->address_size == 4) {
+ return ((uint32_t*)(header->ptr + addr_base))[idx];
+ }
+ else {
+ return ((uint64_t*)(header->ptr + addr_base))[idx];
+ }
+}
+
+typedef struct rnglists_header {
+ uint64_t unit_length;
+ uint8_t format;
+ uint8_t address_size;
+ uint32_t offset_entry_count;
+} rnglists_header_t;
+
+static void
+rnglists_header_init(obj_info_t *obj, rnglists_header_t *header) {
+ const char *p = obj->debug_rnglists.ptr;
+
+ if (!p) return;
+
+ header->unit_length = *(uint32_t *)p;
+ p += sizeof(uint32_t);
+
+ header->format = 4;
+ if (header->unit_length == 0xffffffff) {
+ header->unit_length = *(uint64_t *)p;
+ p += sizeof(uint64_t);
+ header->format = 8;
+ }
+
+ p += 2; /* version */
+ header->address_size = *p++;
+ p++; /* segment_selector_size */
+ header->offset_entry_count = *(uint32_t *)p;
+}
+
+typedef struct {
+ uint64_t low_pc;
+ uint64_t high_pc;
+ uint64_t ranges;
+ bool low_pc_set;
+ bool high_pc_set;
+ bool ranges_set;
+} ranges_t;
+
+static void
+ranges_set(ranges_t *ptr, DebugInfoValue *v, addr_header_t *addr_header, uint64_t addr_base)
+{
+ uint64_t n = 0;
+ if (v->type == VAL_uint) {
+ n = v->as.uint64;
+ }
+ else if (v->type == VAL_addr) {
+ n = read_addr(addr_header, addr_base, v->as.addr_idx);
+ }
+ switch (v->at) {
+ case DW_AT_low_pc:
+ ptr->low_pc = n;
+ ptr->low_pc_set = true;
+ break;
+ case DW_AT_high_pc:
+ if (v->form == DW_FORM_addr) {
+ ptr->high_pc = n;
+ }
+ else {
+ ptr->high_pc = ptr->low_pc + n;
+ }
+ ptr->high_pc_set = true;
+ break;
+ case DW_AT_ranges:
+ ptr->ranges = n;
+ ptr->ranges_set = true;
+ break;
+ }
+}
+
+static uint64_t
+read_dw_form_addr(DebugInfoReader *reader, const char **ptr)
+{
+ const char *p = *ptr;
+ *ptr = p + reader->address_size;
+ if (reader->address_size == 4) {
+ return read_uint32(&p);
+ } else if (reader->address_size == 8) {
+ return read_uint64(&p);
+ } else {
+ fprintf(stderr,"unknown address_size:%d", reader->address_size);
+ abort();
+ }
+}
+
+static uintptr_t
+ranges_include(DebugInfoReader *reader, ranges_t *ptr, uint64_t addr, rnglists_header_t *rnglists_header)
+{
+ if (ptr->high_pc_set) {
+ if (ptr->ranges_set || !ptr->low_pc_set) {
+ exit(1);
+ }
+ if (ptr->low_pc <= addr && addr <= ptr->high_pc) {
+ return (uintptr_t)ptr->low_pc;
+ }
+ }
+ else if (ptr->ranges_set) {
+ /* TODO: support base address selection entry */
+ const char *p;
+ uint64_t base = ptr->low_pc_set ? ptr->low_pc : reader->current_low_pc;
+ bool base_valid = true;
+ if (reader->current_version >= 5) {
+ if (rnglists_header->offset_entry_count == 0) {
+ // DW_FORM_sec_offset
+ p = reader->obj->debug_rnglists.ptr + ptr->ranges + reader->current_rnglists_base;
+ }
+ else {
+ // DW_FORM_rnglistx
+ const char *offset_array = reader->obj->debug_rnglists.ptr + reader->current_rnglists_base;
+ if (rnglists_header->format == 4) {
+ p = offset_array + ((uint32_t *)offset_array)[ptr->ranges];
+ }
+ else {
+ p = offset_array + ((uint64_t *)offset_array)[ptr->ranges];
+ }
+ }
+ for (;;) {
+ uint8_t rle = read_uint8(&p);
+ uintptr_t from = 0, to = 0;
+ if (rle == DW_RLE_end_of_list) break;
+ switch (rle) {
+ case DW_RLE_base_addressx:
+ uleb128(&p);
+ base_valid = false; /* not supported yet */
+ break;
+ case DW_RLE_startx_endx:
+ uleb128(&p);
+ uleb128(&p);
+ break;
+ case DW_RLE_startx_length:
+ uleb128(&p);
+ uleb128(&p);
+ break;
+ case DW_RLE_offset_pair:
+ if (!base_valid) break;
+ from = (uintptr_t)base + uleb128(&p);
+ to = (uintptr_t)base + uleb128(&p);
+ break;
+ case DW_RLE_base_address:
+ base = read_dw_form_addr(reader, &p);
+ base_valid = true;
+ break;
+ case DW_RLE_start_end:
+ from = (uintptr_t)read_dw_form_addr(reader, &p);
+ to = (uintptr_t)read_dw_form_addr(reader, &p);
+ break;
+ case DW_RLE_start_length:
+ from = (uintptr_t)read_dw_form_addr(reader, &p);
+ to = from + uleb128(&p);
+ break;
+ }
+ if (from <= addr && addr < to) {
+ return from;
+ }
+ }
+ return false;
+ }
+ p = reader->obj->debug_ranges.ptr + ptr->ranges;
+ for (;;) {
+ uintptr_t from = read_uintptr(&p);
+ uintptr_t to = read_uintptr(&p);
+ if (!from && !to) break;
+ if (from == UINTPTR_MAX) {
+ /* base address selection entry */
+ base = to;
+ }
+ else if (base + from <= addr && addr < base + to) {
+ return (uintptr_t)base + from;
+ }
+ }
+ }
+ else if (ptr->low_pc_set) {
+ if (ptr->low_pc == addr) {
+ return (uintptr_t)ptr->low_pc;
+ }
+ }
+ return false;
+}
+
+#if 0
+static void
+ranges_inspect(DebugInfoReader *reader, ranges_t *ptr)
+{
+ if (ptr->high_pc_set) {
+ if (ptr->ranges_set || !ptr->low_pc_set) {
+ fprintf(stderr,"low_pc_set:%d high_pc_set:%d ranges_set:%d\n",ptr->low_pc_set,ptr->high_pc_set,ptr->ranges_set);
+ exit(1);
+ }
+ fprintf(stderr,"low_pc:%"PRIx64" high_pc:%"PRIx64"\n",ptr->low_pc,ptr->high_pc);
+ }
+ else if (ptr->ranges_set) {
+ char *p = reader->obj->debug_ranges.ptr + ptr->ranges;
+ fprintf(stderr,"low_pc:%"PRIx64" ranges:%"PRIx64" %lx ",ptr->low_pc,ptr->ranges, p-reader->obj->mapped);
+ for (;;) {
+ uintptr_t from = read_uintptr(&p);
+ uintptr_t to = read_uintptr(&p);
+ if (!from && !to) break;
+ fprintf(stderr,"%"PRIx64"-%"PRIx64" ",ptr->low_pc+from,ptr->low_pc+to);
+ }
+ fprintf(stderr,"\n");
+ }
+ else if (ptr->low_pc_set) {
+ fprintf(stderr,"low_pc:%"PRIx64"\n",ptr->low_pc);
+ }
+ else {
+ fprintf(stderr,"empty\n");
+ }
+}
+#endif
+
+static int
+di_read_cu(DebugInfoReader *reader)
+{
+ uint64_t unit_length;
+ uint16_t version;
+ uint64_t debug_abbrev_offset;
+ reader->format = 4;
+ reader->current_cu = reader->p;
+ unit_length = read_uint32(&reader->p);
+ if (unit_length == 0xffffffff) {
+ unit_length = read_uint64(&reader->p);
+ reader->format = 8;
+ }
+ reader->cu_end = reader->p + unit_length;
+ version = read_uint16(&reader->p);
+ reader->current_version = version;
+ if (version > 5) {
+ return -1;
+ }
+ else if (version == 5) {
+ /* unit_type = */ read_uint8(&reader->p);
+ reader->address_size = read_uint8(&reader->p);
+ debug_abbrev_offset = read_uint(reader);
+ }
+ else {
+ debug_abbrev_offset = read_uint(reader);
+ reader->address_size = read_uint8(&reader->p);
+ }
+ reader->q0 = reader->obj->debug_abbrev.ptr + debug_abbrev_offset;
+
+ reader->level = 0;
+ di_read_debug_abbrev_cu(reader);
+ if (di_read_debug_line_cu(reader)) return -1;
+
+#if defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER_BUILD_DATE)
+ /* Though DWARF specifies "the applicable base address defaults to the base
+ address of the compilation unit", but GCC seems to use zero as default */
+#else
+ do {
+ DIE die;
+
+ if (!di_read_die(reader, &die)) continue;
+
+ if (die.tag != DW_TAG_compile_unit) {
+ di_skip_records(reader);
+ break;
+ }
+
+ reader->current_str_offsets_base = 0;
+ reader->current_addr_base = 0;
+ reader->current_rnglists_base = 0;
+
+ DebugInfoValue low_pc = {{}};
+ /* enumerate abbrev */
+ for (;;) {
+ DebugInfoValue v = {{}};
+ if (!di_read_record(reader, &v)) break;
+ switch (v.at) {
+ case DW_AT_low_pc:
+ // clang may output DW_AT_addr_base after DW_AT_low_pc.
+ // We need to resolve the DW_FORM_addr* after DW_AT_addr_base is parsed.
+ low_pc = v;
+ break;
+ case DW_AT_str_offsets_base:
+ reader->current_str_offsets_base = v.as.uint64;
+ break;
+ case DW_AT_addr_base:
+ reader->current_addr_base = v.as.uint64;
+ break;
+ case DW_AT_rnglists_base:
+ reader->current_rnglists_base = v.as.uint64;
+ break;
+ }
+ }
+ // Resolve the DW_FORM_addr of DW_AT_low_pc
+ switch (low_pc.type) {
+ case VAL_uint:
+ reader->current_low_pc = low_pc.as.uint64;
+ break;
+ case VAL_addr:
+ {
+ addr_header_t header;
+ addr_header_init(reader->obj, &header);
+ reader->current_low_pc = read_addr(&header, reader->current_addr_base, low_pc.as.addr_idx);
+ }
+ break;
+ }
+ } while (0);
+#endif
+ return 0;
+}
+
+static void
+read_abstract_origin(DebugInfoReader *reader, uint64_t form, uint64_t abstract_origin, line_info_t *line)
+{
+ const char *p = reader->p;
+ const char *q = reader->q;
+ int level = reader->level;
+ DIE die;
+
+ switch (form) {
+ case DW_FORM_ref1:
+ case DW_FORM_ref2:
+ case DW_FORM_ref4:
+ case DW_FORM_ref8:
+ case DW_FORM_ref_udata:
+ reader->p = reader->current_cu + abstract_origin;
+ break;
+ case DW_FORM_ref_addr:
+ goto finish; /* not supported yet */
+ case DW_FORM_ref_sig8:
+ goto finish; /* not supported yet */
+ case DW_FORM_ref_sup4:
+ case DW_FORM_ref_sup8:
+ goto finish; /* not supported yet */
+ default:
+ goto finish;
+ }
+ if (!di_read_die(reader, &die)) goto finish;
+
+ /* enumerate abbrev */
+ for (;;) {
+ DebugInfoValue v = {{}};
+ if (!di_read_record(reader, &v)) break;
+ switch (v.at) {
+ case DW_AT_name:
+ line->sname = get_cstr_value(&v);
+ break;
+ }
+ }
+
+ finish:
+ reader->p = p;
+ reader->q = q;
+ reader->level = level;
+}
+
+static void
+debug_info_read(DebugInfoReader *reader, int num_traces, void **traces,
+ line_info_t *lines, int offset) {
+
+ addr_header_t addr_header = {};
+ addr_header_init(reader->obj, &addr_header);
+
+ rnglists_header_t rnglists_header = {};
+ rnglists_header_init(reader->obj, &rnglists_header);
+
+ while (reader->p < reader->cu_end) {
+ DIE die;
+ ranges_t ranges = {};
+ line_info_t line = {};
+
+ if (!di_read_die(reader, &die)) continue;
+ /* fprintf(stderr,"%d:%tx: <%d>\n",__LINE__,die.pos,reader->level,die.tag); */
+
+ if (die.tag != DW_TAG_subprogram && die.tag != DW_TAG_inlined_subroutine) {
+ skip_die:
+ di_skip_records(reader);
+ continue;
+ }
+
+ /* enumerate abbrev */
+ for (;;) {
+ DebugInfoValue v = {{}};
+ /* ptrdiff_t pos = reader->p - reader->p0; */
+ if (!di_read_record(reader, &v)) break;
+ /* fprintf(stderr,"\n%d:%tx: AT:%lx FORM:%lx\n",__LINE__,pos,v.at,v.form); */
+ /* div_inspect(&v); */
+ switch (v.at) {
+ case DW_AT_name:
+ line.sname = get_cstr_value(&v);
+ break;
+ case DW_AT_call_file:
+ fill_filename((int)v.as.uint64, reader->debug_line_format, reader->debug_line_version, reader->debug_line_directories, reader->debug_line_files, &line, reader->obj);
+ break;
+ case DW_AT_call_line:
+ line.line = (int)v.as.uint64;
+ break;
+ case DW_AT_low_pc:
+ case DW_AT_high_pc:
+ case DW_AT_ranges:
+ ranges_set(&ranges, &v, &addr_header, reader->current_addr_base);
+ break;
+ case DW_AT_declaration:
+ goto skip_die;
+ case DW_AT_inline:
+ /* 1 or 3 */
+ break; /* goto skip_die; */
+ case DW_AT_abstract_origin:
+ read_abstract_origin(reader, v.form, v.as.uint64, &line);
+ break; /* goto skip_die; */
+ }
+ }
+ /* ranges_inspect(reader, &ranges); */
+ /* fprintf(stderr,"%d:%tx: %x ",__LINE__,diepos,die.tag); */
+ for (int i=offset; i < num_traces; i++) {
+ uintptr_t addr = (uintptr_t)traces[i];
+ uintptr_t offset = addr - reader->obj->base_addr + reader->obj->vmaddr;
+ uintptr_t saddr = ranges_include(reader, &ranges, offset, &rnglists_header);
+ if (saddr) {
+ /* fprintf(stdout, "%d:%tx: %d %lx->%lx %x %s: %s/%s %d %s %s %s\n",__LINE__,die.pos, i,addr,offset, die.tag,line.sname,line.dirname,line.filename,line.line,reader->obj->path,line.sname,lines[i].sname); */
+ if (lines[i].sname) {
+ line_info_t *lp = malloc(sizeof(line_info_t));
+ memcpy(lp, &lines[i], sizeof(line_info_t));
+ lines[i].next = lp;
+ lp->dirname = line.dirname;
+ lp->filename = line.filename;
+ lp->line = line.line;
+ lp->saddr = 0;
+ }
+ lines[i].path = reader->obj->path;
+ lines[i].base_addr = line.base_addr;
+ lines[i].sname = line.sname;
+ lines[i].saddr = saddr + reader->obj->base_addr - reader->obj->vmaddr;
+ }
+ }
+ }
+}
+
+// This function parses the following attributes of Line Number Program Header in DWARF 5:
+//
+// * directory_entry_format_count
+// * directory_entry_format
+// * directories_count
+// * directories
+//
+// or
+//
+// * file_name_entry_format_count
+// * file_name_entry_format
+// * file_names_count
+// * file_names
+//
+// It records DW_LNCT_path and DW_LNCT_directory_index at the index "idx".
+static const char *
+parse_ver5_debug_line_header(const char *p, int idx, uint8_t format, obj_info_t *obj, const char **out_path, uint64_t *out_directory_index) {
+ int i, j;
+ int entry_format_count = *(uint8_t *)p++;
+ const char *entry_format = p;
+
+ /* skip the part of entry_format */
+ for (i = 0; i < entry_format_count * 2; i++) uleb128(&p);
+
+ int entry_count = (int)uleb128(&p);
+
+ DebugInfoReader reader;
+ debug_info_reader_init(&reader, obj);
+ reader.format = format;
+ reader.p = p;
+ for (j = 0; j < entry_count; j++) {
+ const char *format = entry_format;
+ for (i = 0; i < entry_format_count; i++) {
+ DebugInfoValue v = {{}};
+ unsigned long dw_lnct = uleb128(&format);
+ unsigned long dw_form = uleb128(&format);
+ debug_info_reader_read_value(&reader, dw_form, &v);
+ if (dw_lnct == 1 /* DW_LNCT_path */ && v.type == VAL_cstr && out_path)
+ *out_path = v.as.ptr + v.off;
+ if (dw_lnct == 2 /* DW_LNCT_directory_index */ && v.type == VAL_uint && out_directory_index)
+ *out_directory_index = v.as.uint64;
+ }
+ if (j == idx) return 0;
+ }
+
+ return reader.p;
+}
+
+#ifdef USE_ELF
+static unsigned long
+uncompress_debug_section(ElfW(Shdr) *shdr, char *file, char **ptr)
+{
+ *ptr = NULL;
+#ifdef SUPPORT_COMPRESSED_DEBUG_LINE
+ ElfW(Chdr) *chdr = (ElfW(Chdr) *)(file + shdr->sh_offset);
+ unsigned long destsize = chdr->ch_size;
+ int ret = 0;
+
+ if (chdr->ch_type != ELFCOMPRESS_ZLIB) {
+ /* unsupported compression type */
+ return 0;
+ }
+
+ *ptr = malloc(destsize);
+ if (!*ptr) return 0;
+ ret = uncompress((Bytef *)*ptr, &destsize,
+ (const Bytef*)chdr + sizeof(ElfW(Chdr)),
+ shdr->sh_size - sizeof(ElfW(Chdr)));
+ if (ret != Z_OK) goto fail;
+ return destsize;
+
+fail:
+ free(*ptr);
+ *ptr = NULL;
+#endif
+ return 0;
+}
+
+/* read file and fill lines */
+static uintptr_t
+fill_lines(int num_traces, void **traces, int check_debuglink,
+ obj_info_t **objp, line_info_t *lines, int offset)
+{
+ int i, j;
+ char *shstr;
+ ElfW(Ehdr) *ehdr;
+ ElfW(Shdr) *shdr, *shstr_shdr;
+ ElfW(Shdr) *gnu_debuglink_shdr = NULL;
+ ElfW(Shdr) *note_gnu_build_id = NULL;
+ int fd;
+ off_t filesize;
+ char *file;
+ ElfW(Shdr) *symtab_shdr = NULL, *strtab_shdr = NULL;
+ ElfW(Shdr) *dynsym_shdr = NULL, *dynstr_shdr = NULL;
+ obj_info_t *obj = *objp;
+ uintptr_t dladdr_fbase = 0;
+
+ fd = open(binary_filename, O_RDONLY);
+ if (fd < 0) {
+ goto fail;
+ }
+ filesize = lseek(fd, 0, SEEK_END);
+ if (filesize < 0) {
+ int e = errno;
+ close(fd);
+ kprintf("lseek: %s\n", strerror(e));
+ goto fail;
+ }
+#if SIZEOF_OFF_T > SIZEOF_SIZE_T
+ if (filesize > (off_t)SIZE_MAX) {
+ close(fd);
+ kprintf("Too large file %s\n", binary_filename);
+ goto fail;
+ }
+#endif
+ lseek(fd, 0, SEEK_SET);
+ /* async-signal unsafe */
+ file = (char *)mmap(NULL, (size_t)filesize, PROT_READ, MAP_SHARED, fd, 0);
+ if (file == MAP_FAILED) {
+ int e = errno;
+ close(fd);
+ kprintf("mmap: %s\n", strerror(e));
+ goto fail;
+ }
+ close(fd);
+
+ ehdr = (ElfW(Ehdr) *)file;
+ if (memcmp(ehdr->e_ident, "\177ELF", 4) != 0) {
+ /*
+ * Huh? Maybe filename was overridden by setproctitle() and
+ * it match non-elf file.
+ */
+ goto fail;
+ }
+ obj->mapped = file;
+ obj->mapped_size = (size_t)filesize;
+
+ shdr = (ElfW(Shdr) *)(file + ehdr->e_shoff);
+
+ shstr_shdr = shdr + ehdr->e_shstrndx;
+ shstr = file + shstr_shdr->sh_offset;
+
+ for (i = 0; i < ehdr->e_shnum; i++) {
+ char *section_name = shstr + shdr[i].sh_name;
+ switch (shdr[i].sh_type) {
+ case SHT_STRTAB:
+ if (!strcmp(section_name, ".strtab")) {
+ strtab_shdr = shdr + i;
+ }
+ else if (!strcmp(section_name, ".dynstr")) {
+ dynstr_shdr = shdr + i;
+ }
+ break;
+ case SHT_SYMTAB:
+ /* if (!strcmp(section_name, ".symtab")) */
+ symtab_shdr = shdr + i;
+ break;
+ case SHT_DYNSYM:
+ /* if (!strcmp(section_name, ".dynsym")) */
+ dynsym_shdr = shdr + i;
+ break;
+ case SHT_NOTE:
+ if (!strcmp(section_name, ".note.gnu.build-id")) {
+ note_gnu_build_id = shdr + i;
+ }
+ break;
+ case SHT_PROGBITS:
+ if (!strcmp(section_name, ".gnu_debuglink")) {
+ gnu_debuglink_shdr = shdr + i;
+ }
+ else {
+ const char *debug_section_names[] = {
+ ".debug_abbrev",
+ ".debug_info",
+ ".debug_line",
+ ".debug_ranges",
+ ".debug_str_offsets",
+ ".debug_addr",
+ ".debug_rnglists",
+ ".debug_str",
+ ".debug_line_str"
+ };
+
+ for (j=0; j < DWARF_SECTION_COUNT; j++) {
+ struct dwarf_section *s = obj_dwarf_section_at(obj, j);
+
+ if (strcmp(section_name, debug_section_names[j]) != 0)
+ continue;
+
+ s->ptr = file + shdr[i].sh_offset;
+ s->size = shdr[i].sh_size;
+ s->flags = shdr[i].sh_flags;
+ if (s->flags & SHF_COMPRESSED) {
+ s->size = uncompress_debug_section(&shdr[i], file, &s->ptr);
+ if (!s->size) goto fail;
+ }
+ break;
+ }
+ }
+ break;
+ }
+ }
+
+ if (offset == -1) {
+ /* main executable */
+ offset = 0;
+ if (dynsym_shdr && dynstr_shdr) {
+ char *strtab = file + dynstr_shdr->sh_offset;
+ ElfW(Sym) *symtab = (ElfW(Sym) *)(file + dynsym_shdr->sh_offset);
+ int symtab_count = (int)(dynsym_shdr->sh_size / sizeof(ElfW(Sym)));
+ void *handle = dlopen(NULL, RTLD_NOW|RTLD_LOCAL);
+ if (handle) {
+ for (j = 0; j < symtab_count; j++) {
+ ElfW(Sym) *sym = &symtab[j];
+ Dl_info info;
+ void *s;
+ if (ELF_ST_TYPE(sym->st_info) != STT_FUNC || sym->st_size == 0) continue;
+ s = dlsym(handle, strtab + sym->st_name);
+ if (s && dladdr(s, &info)) {
+ obj->base_addr = dladdr_fbase;
+ dladdr_fbase = (uintptr_t)info.dli_fbase;
+ break;
+ }
+ }
+ dlclose(handle);
+ }
+ if (ehdr->e_type == ET_EXEC) {
+ obj->base_addr = 0;
+ }
+ else {
+ /* PIE (position-independent executable) */
+ obj->base_addr = dladdr_fbase;
+ }
+ }
+ }
+
+ if (obj->debug_info.ptr && obj->debug_abbrev.ptr) {
+ DebugInfoReader reader;
+ debug_info_reader_init(&reader, obj);
+ i = 0;
+ while (reader.p < reader.pend) {
+ /* fprintf(stderr, "%d:%tx: CU[%d]\n", __LINE__, reader.p - reader.obj->debug_info.ptr, i++); */
+ if (di_read_cu(&reader)) goto use_symtab;
+ debug_info_read(&reader, num_traces, traces, lines, offset);
+ }
+ }
+ else {
+ /* This file doesn't have dwarf, use symtab or dynsym */
+use_symtab:
+ if (!symtab_shdr) {
+ /* This file doesn't have symtab, use dynsym instead */
+ symtab_shdr = dynsym_shdr;
+ strtab_shdr = dynstr_shdr;
+ }
+
+ if (symtab_shdr && strtab_shdr) {
+ char *strtab = file + strtab_shdr->sh_offset;
+ ElfW(Sym) *symtab = (ElfW(Sym) *)(file + symtab_shdr->sh_offset);
+ int symtab_count = (int)(symtab_shdr->sh_size / sizeof(ElfW(Sym)));
+ for (j = 0; j < symtab_count; j++) {
+ ElfW(Sym) *sym = &symtab[j];
+ uintptr_t saddr = (uintptr_t)sym->st_value + obj->base_addr;
+ if (ELF_ST_TYPE(sym->st_info) != STT_FUNC) continue;
+ for (i = offset; i < num_traces; i++) {
+ uintptr_t d = (uintptr_t)traces[i] - saddr;
+ if (lines[i].line > 0 || d > (uintptr_t)sym->st_size)
+ continue;
+ /* fill symbol name and addr from .symtab */
+ if (!lines[i].sname) lines[i].sname = strtab + sym->st_name;
+ lines[i].saddr = saddr;
+ lines[i].path = obj->path;
+ lines[i].base_addr = obj->base_addr;
+ }
+ }
+ }
+ }
+
+ if (!obj->debug_line.ptr) {
+ /* This file doesn't have .debug_line section,
+ let's check .gnu_debuglink section instead. */
+ if (gnu_debuglink_shdr && check_debuglink) {
+ follow_debuglink(file + gnu_debuglink_shdr->sh_offset,
+ num_traces, traces,
+ objp, lines, offset);
+ }
+ if (note_gnu_build_id && check_debuglink) {
+ ElfW(Nhdr) *nhdr = (ElfW(Nhdr)*) (file + note_gnu_build_id->sh_offset);
+ const char *build_id = (char *)(nhdr + 1) + nhdr->n_namesz;
+ follow_debuglink_build_id(build_id, nhdr->n_descsz,
+ num_traces, traces,
+ objp, lines, offset);
+ }
+ goto finish;
+ }
+
+ if (parse_debug_line(num_traces, traces,
+ obj->debug_line.ptr,
+ obj->debug_line.size,
+ obj, lines, offset) == -1)
+ goto fail;
+
+finish:
+ return dladdr_fbase;
+fail:
+ return (uintptr_t)-1;
+}
+#else /* Mach-O */
+/* read file and fill lines */
+static uintptr_t
+fill_lines(int num_traces, void **traces, int check_debuglink,
+ obj_info_t **objp, line_info_t *lines, int offset)
+{
+# ifdef __LP64__
+# define LP(x) x##_64
+# else
+# define LP(x) x
+# endif
+ int fd;
+ off_t filesize;
+ char *file, *p = NULL;
+ obj_info_t *obj = *objp;
+ struct LP(mach_header) *header;
+ uintptr_t dladdr_fbase = 0;
+
+ {
+ char *s = binary_filename;
+ char *base = strrchr(binary_filename, '/')+1;
+ size_t max = PATH_MAX;
+ size_t size = strlen(binary_filename);
+ size_t basesize = size - (base - binary_filename);
+ s += size;
+ max -= size;
+ p = s;
+ size = strlcpy(s, ".dSYM/Contents/Resources/DWARF/", max);
+ if (size == 0) goto fail;
+ s += size;
+ max -= size;
+ if (max <= basesize) goto fail;
+ memcpy(s, base, basesize);
+ s[basesize] = 0;
+
+ fd = open(binary_filename, O_RDONLY);
+ if (fd < 0) {
+ *p = 0; /* binary_filename becomes original file name */
+ fd = open(binary_filename, O_RDONLY);
+ if (fd < 0) {
+ goto fail;
+ }
+ }
+ }
+
+ filesize = lseek(fd, 0, SEEK_END);
+ if (filesize < 0) {
+ int e = errno;
+ close(fd);
+ kprintf("lseek: %s\n", strerror(e));
+ goto fail;
+ }
+#if SIZEOF_OFF_T > SIZEOF_SIZE_T
+ if (filesize > (off_t)SIZE_MAX) {
+ close(fd);
+ kprintf("Too large file %s\n", binary_filename);
+ goto fail;
+ }
+#endif
+ lseek(fd, 0, SEEK_SET);
+ /* async-signal unsafe */
+ file = (char *)mmap(NULL, (size_t)filesize, PROT_READ, MAP_SHARED, fd, 0);
+ if (file == MAP_FAILED) {
+ int e = errno;
+ close(fd);
+ kprintf("mmap: %s\n", strerror(e));
+ goto fail;
+ }
+ close(fd);
+
+ obj->mapped = file;
+ obj->mapped_size = (size_t)filesize;
+
+ header = (struct LP(mach_header) *)file;
+ if (header->magic == LP(MH_MAGIC)) {
+ /* non universal binary */
+ p = file;
+ }
+ else if (header->magic == FAT_CIGAM) {
+ struct LP(mach_header) *mhp = _NSGetMachExecuteHeader();
+ struct fat_header *fat = (struct fat_header *)file;
+ char *q = file + sizeof(*fat);
+ uint32_t nfat_arch = __builtin_bswap32(fat->nfat_arch);
+ /* fprintf(stderr,"%d: fat:%s %d\n",__LINE__, binary_filename,nfat_arch); */
+ for (uint32_t i = 0; i < nfat_arch; i++) {
+ struct fat_arch *arch = (struct fat_arch *)q;
+ cpu_type_t cputype = __builtin_bswap32(arch->cputype);
+ cpu_subtype_t cpusubtype = __builtin_bswap32(arch->cpusubtype);
+ uint32_t offset = __builtin_bswap32(arch->offset);
+ /* fprintf(stderr,"%d: fat %d %x/%x %x/%x\n",__LINE__, i, mhp->cputype,mhp->cpusubtype, cputype,cpusubtype); */
+ if (mhp->cputype == cputype &&
+ (cpu_subtype_t)(mhp->cpusubtype & ~CPU_SUBTYPE_MASK) == cpusubtype) {
+ p = file + offset;
+ file = p;
+ header = (struct LP(mach_header) *)p;
+ if (header->magic == LP(MH_MAGIC)) {
+ goto found_mach_header;
+ }
+ break;
+ }
+ q += sizeof(*arch);
+ }
+ kprintf("'%s' is not a Mach-O universal binary file!\n",binary_filename);
+ close(fd);
+ goto fail;
+ }
+ else {
+ kprintf("'%s' is not a "
+# ifdef __LP64__
+ "64"
+# else
+ "32"
+# endif
+ "-bit Mach-O file!\n",binary_filename);
+ close(fd);
+ goto fail;
+ }
+found_mach_header:
+ p += sizeof(*header);
+
+ for (uint32_t i = 0; i < (uint32_t)header->ncmds; i++) {
+ struct load_command *lcmd = (struct load_command *)p;
+ switch (lcmd->cmd) {
+ case LP(LC_SEGMENT):
+ {
+ static const char *debug_section_names[] = {
+ "__debug_abbrev",
+ "__debug_info",
+ "__debug_line",
+ "__debug_ranges",
+ "__debug_str_offsets",
+ "__debug_addr",
+ "__debug_rnglists",
+ "__debug_str",
+ "__debug_line_str",
+ };
+ struct LP(segment_command) *scmd = (struct LP(segment_command) *)lcmd;
+ if (strcmp(scmd->segname, "__TEXT") == 0) {
+ obj->vmaddr = scmd->vmaddr;
+ }
+ else if (strcmp(scmd->segname, "__DWARF") == 0) {
+ p += sizeof(struct LP(segment_command));
+ for (uint64_t i = 0; i < scmd->nsects; i++) {
+ struct LP(section) *sect = (struct LP(section) *)p;
+ p += sizeof(struct LP(section));
+ for (int j=0; j < DWARF_SECTION_COUNT; j++) {
+ struct dwarf_section *s = obj_dwarf_section_at(obj, j);
+
+ if (strcmp(sect->sectname, debug_section_names[j]) != 0)
+ continue;
+
+ s->ptr = file + sect->offset;
+ s->size = sect->size;
+ s->flags = sect->flags;
+ if (s->flags & SHF_COMPRESSED) {
+ goto fail;
+ }
+ break;
+ }
+ }
+ }
+ }
+ break;
+
+ case LC_SYMTAB:
+ {
+ struct symtab_command *cmd = (struct symtab_command *)lcmd;
+ struct LP(nlist) *nl = (struct LP(nlist) *)(file + cmd->symoff);
+ char *strtab = file + cmd->stroff, *sname = 0;
+ uint32_t j;
+ uintptr_t saddr = 0;
+ /* kprintf("[%2d]: %x/symtab %p\n", i, cmd->cmd, (void *)p); */
+ for (j = 0; j < cmd->nsyms; j++) {
+ uintptr_t symsize, d;
+ struct LP(nlist) *e = &nl[j];
+ /* kprintf("[%2d][%4d]: %02x/%x/%x: %s %llx\n", i, j, e->n_type,e->n_sect,e->n_desc,strtab+e->n_un.n_strx,e->n_value); */
+ if (e->n_type != N_FUN) continue;
+ if (e->n_sect) {
+ saddr = (uintptr_t)e->n_value + obj->base_addr - obj->vmaddr;
+ sname = strtab + e->n_un.n_strx;
+ /* kprintf("[%2d][%4d]: %02x/%x/%x: %s %llx\n", i, j, e->n_type,e->n_sect,e->n_desc,strtab+e->n_un.n_strx,e->n_value); */
+ continue;
+ }
+ for (int k = offset; k < num_traces; k++) {
+ d = (uintptr_t)traces[k] - saddr;
+ symsize = e->n_value;
+ /* kprintf("%lx %lx %lx\n",saddr,symsize,traces[k]); */
+ if (lines[k].line > 0 || d > (uintptr_t)symsize)
+ continue;
+ /* fill symbol name and addr from .symtab */
+ if (!lines[k].sname) lines[k].sname = sname;
+ lines[k].saddr = saddr;
+ lines[k].path = obj->path;
+ lines[k].base_addr = obj->base_addr;
+ }
+ }
+ }
+ }
+ p += lcmd->cmdsize;
+ }
+
+ if (obj->debug_info.ptr && obj->debug_abbrev.ptr) {
+ DebugInfoReader reader;
+ debug_info_reader_init(&reader, obj);
+ while (reader.p < reader.pend) {
+ if (di_read_cu(&reader)) goto fail;
+ debug_info_read(&reader, num_traces, traces, lines, offset);
+ }
+ }
+
+ if (parse_debug_line(num_traces, traces,
+ obj->debug_line.ptr,
+ obj->debug_line.size,
+ obj, lines, offset) == -1)
+ goto fail;
+
+ return dladdr_fbase;
+fail:
+ return (uintptr_t)-1;
+}
+#endif
+
+#define HAVE_MAIN_EXE_PATH
+#if defined(__FreeBSD__) || defined(__DragonFly__)
+# include <sys/sysctl.h>
+#endif
+/* ssize_t main_exe_path(void)
+ *
+ * store the path of the main executable to `binary_filename`,
+ * and returns strlen(binary_filename).
+ * it is NUL terminated.
+ */
+#if defined(__linux__) || defined(__NetBSD__)
+static ssize_t
+main_exe_path(void)
+{
+# if defined(__linux__)
+# define PROC_SELF_EXE "/proc/self/exe"
+# elif defined(__NetBSD__)
+# define PROC_SELF_EXE "/proc/curproc/exe"
+# endif
+ ssize_t len = readlink(PROC_SELF_EXE, binary_filename, PATH_MAX);
+ if (len < 0) return 0;
+ binary_filename[len] = 0;
+ return len;
+}
+#elif defined(__FreeBSD__) || defined(__DragonFly__)
+static ssize_t
+main_exe_path(void)
+{
+ int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
+ size_t len = PATH_MAX;
+ int err = sysctl(mib, 4, binary_filename, &len, NULL, 0);
+ if (err) {
+ kprintf("Can't get the path of ruby");
+ return -1;
+ }
+ len--; /* sysctl sets strlen+1 */
+ return len;
+}
+#elif defined(HAVE_LIBPROC_H)
+static ssize_t
+main_exe_path(void)
+{
+ int len = proc_pidpath(getpid(), binary_filename, PATH_MAX);
+ if (len == 0) return 0;
+ binary_filename[len] = 0;
+ return len;
+}
+#else
+#undef HAVE_MAIN_EXE_PATH
+#endif
+
+static void
+print_line0(line_info_t *line, void *address)
+{
+ uintptr_t addr = (uintptr_t)address;
+ uintptr_t d = addr - line->saddr;
+ if (!address) {
+ /* inlined */
+ if (line->dirname && line->dirname[0]) {
+ kprintf("%s(%s) %s/%s:%d\n", line->path, line->sname, line->dirname, line->filename, line->line);
+ }
+ else {
+ kprintf("%s(%s) %s:%d\n", line->path, line->sname, line->filename, line->line);
+ }
+ }
+ else if (!line->path) {
+ kprintf("[0x%"PRIxPTR"]\n", addr);
+ }
+ else if (!line->sname) {
+ kprintf("%s(0x%"PRIxPTR") [0x%"PRIxPTR"]\n", line->path, addr-line->base_addr, addr);
+ }
+ else if (!line->saddr) {
+ kprintf("%s(%s) [0x%"PRIxPTR"]\n", line->path, line->sname, addr);
+ }
+ else if (line->line <= 0) {
+ kprintf("%s(%s+0x%"PRIxPTR") [0x%"PRIxPTR"]\n", line->path, line->sname,
+ d, addr);
+ }
+ else if (!line->filename) {
+ kprintf("%s(%s+0x%"PRIxPTR") [0x%"PRIxPTR"] ???:%d\n", line->path, line->sname,
+ d, addr, line->line);
+ }
+ else if (line->dirname && line->dirname[0]) {
+ kprintf("%s(%s+0x%"PRIxPTR") [0x%"PRIxPTR"] %s/%s:%d\n", line->path, line->sname,
+ d, addr, line->dirname, line->filename, line->line);
+ }
+ else {
+ kprintf("%s(%s+0x%"PRIxPTR") [0x%"PRIxPTR"] %s:%d\n", line->path, line->sname,
+ d, addr, line->filename, line->line);
+ }
+}
+
+static void
+print_line(line_info_t *line, void *address)
+{
+ print_line0(line, address);
+ if (line->next) {
+ print_line(line->next, NULL);
+ }
+}
+
+void
+rb_dump_backtrace_with_lines(int num_traces, void **traces)
+{
+ int i;
+ /* async-signal unsafe */
+ line_info_t *lines = (line_info_t *)calloc(num_traces, sizeof(line_info_t));
+ obj_info_t *obj = NULL;
+ /* 2 is NULL + main executable */
+ void **dladdr_fbases = (void **)calloc(num_traces+2, sizeof(void *));
+
+#ifdef HAVE_MAIN_EXE_PATH
+ char *main_path = NULL; /* used on printing backtrace */
+ ssize_t len;
+ if ((len = main_exe_path()) > 0) {
+ main_path = (char *)alloca(len + 1);
+ if (main_path) {
+ uintptr_t addr;
+ memcpy(main_path, binary_filename, len+1);
+ append_obj(&obj);
+ obj->path = main_path;
+ addr = fill_lines(num_traces, traces, 1, &obj, lines, -1);
+ if (addr != (uintptr_t)-1) {
+ dladdr_fbases[0] = (void *)addr;
+ }
+ }
+ }
+#endif
+
+ /* fill source lines by reading dwarf */
+ for (i = 0; i < num_traces; i++) {
+ Dl_info info;
+ if (lines[i].line) continue;
+ if (dladdr(traces[i], &info)) {
+ const char *path;
+ void **p;
+
+ /* skip symbols which is in already checked objects */
+ /* if the binary is strip-ed, this may effect */
+ for (p=dladdr_fbases; *p; p++) {
+ if (*p == info.dli_fbase) {
+ if (info.dli_fname) lines[i].path = info.dli_fname;
+ if (info.dli_sname) lines[i].sname = info.dli_sname;
+ goto next_line;
+ }
+ }
+ *p = info.dli_fbase;
+
+ append_obj(&obj);
+ obj->base_addr = (uintptr_t)info.dli_fbase;
+ path = info.dli_fname;
+ obj->path = path;
+ if (path) lines[i].path = path;
+ if (info.dli_sname) {
+ lines[i].sname = info.dli_sname;
+ lines[i].saddr = (uintptr_t)info.dli_saddr;
+ }
+ strlcpy(binary_filename, path, PATH_MAX);
+ if (fill_lines(num_traces, traces, 1, &obj, lines, i) == (uintptr_t)-1)
+ break;
+ }
+next_line:
+ continue;
+ }
+
+ /* output */
+ for (i = 0; i < num_traces; i++) {
+ print_line(&lines[i], traces[i]);
+
+ /* FreeBSD's backtrace may show _start and so on */
+ if (lines[i].sname && strcmp("main", lines[i].sname) == 0)
+ break;
+ }
+
+ /* free */
+ while (obj) {
+ obj_info_t *o = obj;
+ for (i=0; i < DWARF_SECTION_COUNT; i++) {
+ struct dwarf_section *s = obj_dwarf_section_at(obj, i);
+ if (s->flags & SHF_COMPRESSED) {
+ free(s->ptr);
+ }
+ }
+ if (obj->mapped_size) {
+ munmap(obj->mapped, obj->mapped_size);
+ }
+ obj = o->next;
+ free(o);
+ }
+ for (i = 0; i < num_traces; i++) {
+ line_info_t *line = lines[i].next;
+ while (line) {
+ line_info_t *l = line;
+ line = line->next;
+ free(l);
+ }
+ }
+ free(lines);
+ free(dladdr_fbases);
+}
+
+/* From FreeBSD's lib/libstand/printf.c */
+/*-
+ * Copyright (c) 1986, 1988, 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)subr_prf.c 8.3 (Berkeley) 1/21/94
+ */
+
+#include <stdarg.h>
+#define MAXNBUF (sizeof(intmax_t) * CHAR_BIT + 1)
+static inline int toupper(int c) { return ('A' <= c && c <= 'Z') ? (c&0x5f) : c; }
+#define hex2ascii(hex) (hex2ascii_data[hex])
+static const char hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz";
+static inline int imax(int a, int b) { return (a > b ? a : b); }
+static int kvprintf(char const *fmt, void (*func)(int), void *arg, int radix, va_list ap);
+
+static void putce(int c)
+{
+ char s[1];
+ ssize_t ret;
+
+ s[0] = (char)c;
+ ret = write(2, s, 1);
+ (void)ret;
+}
+
+static int
+kprintf(const char *fmt, ...)
+{
+ va_list ap;
+ int retval;
+
+ va_start(ap, fmt);
+ retval = kvprintf(fmt, putce, NULL, 10, ap);
+ va_end(ap);
+ return retval;
+}
+
+/*
+ * Put a NUL-terminated ASCII number (base <= 36) in a buffer in reverse
+ * order; return an optional length and a pointer to the last character
+ * written in the buffer (i.e., the first character of the string).
+ * The buffer pointed to by `nbuf' must have length >= MAXNBUF.
+ */
+static char *
+ksprintn(char *nbuf, uintmax_t num, int base, int *lenp, int upper)
+{
+ char *p, c;
+
+ p = nbuf;
+ *p = '\0';
+ do {
+ c = hex2ascii(num % base);
+ *++p = upper ? toupper(c) : c;
+ } while (num /= base);
+ if (lenp)
+ *lenp = (int)(p - nbuf);
+ return (p);
+}
+
+/*
+ * Scaled down version of printf(3).
+ *
+ * Two additional formats:
+ *
+ * The format %b is supported to decode error registers.
+ * Its usage is:
+ *
+ * printf("reg=%b\n", regval, "<base><arg>*");
+ *
+ * where <base> is the output base expressed as a control character, e.g.
+ * \10 gives octal; \20 gives hex. Each arg is a sequence of characters,
+ * the first of which gives the bit number to be inspected (origin 1), and
+ * the next characters (up to a control character, i.e. a character <= 32),
+ * give the name of the register. Thus:
+ *
+ * kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n");
+ *
+ * would produce output:
+ *
+ * reg=3<BITTWO,BITONE>
+ *
+ * XXX: %D -- Hexdump, takes pointer and separator string:
+ * ("%6D", ptr, ":") -> XX:XX:XX:XX:XX:XX
+ * ("%*D", len, ptr, " " -> XX XX XX XX ...
+ */
+static int
+kvprintf(char const *fmt, void (*func)(int), void *arg, int radix, va_list ap)
+{
+#define PCHAR(c) {int cc=(c); if (func) (*func)(cc); else *d++ = cc; retval++; }
+ char nbuf[MAXNBUF];
+ char *d;
+ const char *p, *percent, *q;
+ unsigned char *up;
+ int ch, n;
+ uintmax_t num;
+ int base, lflag, qflag, tmp, width, ladjust, sharpflag, neg, sign, dot;
+ int cflag, hflag, jflag, tflag, zflag;
+ int dwidth, upper;
+ char padc;
+ int stop = 0, retval = 0;
+
+ num = 0;
+ if (!func)
+ d = (char *) arg;
+ else
+ d = NULL;
+
+ if (fmt == NULL)
+ fmt = "(fmt null)\n";
+
+ if (radix < 2 || radix > 36)
+ radix = 10;
+
+ for (;;) {
+ padc = ' ';
+ width = 0;
+ while ((ch = (unsigned char)*fmt++) != '%' || stop) {
+ if (ch == '\0')
+ return (retval);
+ PCHAR(ch);
+ }
+ percent = fmt - 1;
+ qflag = 0; lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
+ sign = 0; dot = 0; dwidth = 0; upper = 0;
+ cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
+reswitch: switch (ch = (unsigned char)*fmt++) {
+ case '.':
+ dot = 1;
+ goto reswitch;
+ case '#':
+ sharpflag = 1;
+ goto reswitch;
+ case '+':
+ sign = 1;
+ goto reswitch;
+ case '-':
+ ladjust = 1;
+ goto reswitch;
+ case '%':
+ PCHAR(ch);
+ break;
+ case '*':
+ if (!dot) {
+ width = va_arg(ap, int);
+ if (width < 0) {
+ ladjust = !ladjust;
+ width = -width;
+ }
+ } else {
+ dwidth = va_arg(ap, int);
+ }
+ goto reswitch;
+ case '0':
+ if (!dot) {
+ padc = '0';
+ goto reswitch;
+ }
+ case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ for (n = 0;; ++fmt) {
+ n = n * 10 + ch - '0';
+ ch = *fmt;
+ if (ch < '0' || ch > '9')
+ break;
+ }
+ if (dot)
+ dwidth = n;
+ else
+ width = n;
+ goto reswitch;
+ case 'b':
+ num = (unsigned int)va_arg(ap, int);
+ p = va_arg(ap, char *);
+ for (q = ksprintn(nbuf, num, *p++, NULL, 0); *q;)
+ PCHAR(*q--);
+
+ if (num == 0)
+ break;
+
+ for (tmp = 0; *p;) {
+ n = *p++;
+ if (num & (1 << (n - 1))) {
+ PCHAR(tmp ? ',' : '<');
+ for (; (n = *p) > ' '; ++p)
+ PCHAR(n);
+ tmp = 1;
+ } else
+ for (; *p > ' '; ++p)
+ continue;
+ }
+ if (tmp)
+ PCHAR('>');
+ break;
+ case 'c':
+ PCHAR(va_arg(ap, int));
+ break;
+ case 'D':
+ up = va_arg(ap, unsigned char *);
+ p = va_arg(ap, char *);
+ if (!width)
+ width = 16;
+ while(width--) {
+ PCHAR(hex2ascii(*up >> 4));
+ PCHAR(hex2ascii(*up & 0x0f));
+ up++;
+ if (width)
+ for (q=p;*q;q++)
+ PCHAR(*q);
+ }
+ break;
+ case 'd':
+ case 'i':
+ base = 10;
+ sign = 1;
+ goto handle_sign;
+ case 'h':
+ if (hflag) {
+ hflag = 0;
+ cflag = 1;
+ } else
+ hflag = 1;
+ goto reswitch;
+ case 'j':
+ jflag = 1;
+ goto reswitch;
+ case 'l':
+ if (lflag) {
+ lflag = 0;
+ qflag = 1;
+ } else
+ lflag = 1;
+ goto reswitch;
+ case 'n':
+ if (jflag)
+ *(va_arg(ap, intmax_t *)) = retval;
+ else if (qflag)
+ *(va_arg(ap, int64_t *)) = retval;
+ else if (lflag)
+ *(va_arg(ap, long *)) = retval;
+ else if (zflag)
+ *(va_arg(ap, size_t *)) = retval;
+ else if (hflag)
+ *(va_arg(ap, short *)) = retval;
+ else if (cflag)
+ *(va_arg(ap, char *)) = retval;
+ else
+ *(va_arg(ap, int *)) = retval;
+ break;
+ case 'o':
+ base = 8;
+ goto handle_nosign;
+ case 'p':
+ base = 16;
+ sharpflag = (width == 0);
+ sign = 0;
+ num = (uintptr_t)va_arg(ap, void *);
+ goto number;
+ case 'q':
+ qflag = 1;
+ goto reswitch;
+ case 'r':
+ base = radix;
+ if (sign)
+ goto handle_sign;
+ goto handle_nosign;
+ case 's':
+ p = va_arg(ap, char *);
+ if (p == NULL)
+ p = "(null)";
+ if (!dot)
+ n = (int)strlen (p);
+ else
+ for (n = 0; n < dwidth && p[n]; n++)
+ continue;
+
+ width -= n;
+
+ if (!ladjust && width > 0)
+ while (width--)
+ PCHAR(padc);
+ while (n--)
+ PCHAR(*p++);
+ if (ladjust && width > 0)
+ while (width--)
+ PCHAR(padc);
+ break;
+ case 't':
+ tflag = 1;
+ goto reswitch;
+ case 'u':
+ base = 10;
+ goto handle_nosign;
+ case 'X':
+ upper = 1;
+ case 'x':
+ base = 16;
+ goto handle_nosign;
+ case 'y':
+ base = 16;
+ sign = 1;
+ goto handle_sign;
+ case 'z':
+ zflag = 1;
+ goto reswitch;
+handle_nosign:
+ sign = 0;
+ if (jflag)
+ num = va_arg(ap, uintmax_t);
+ else if (qflag)
+ num = va_arg(ap, uint64_t);
+ else if (tflag)
+ num = va_arg(ap, ptrdiff_t);
+ else if (lflag)
+ num = va_arg(ap, unsigned long);
+ else if (zflag)
+ num = va_arg(ap, size_t);
+ else if (hflag)
+ num = (unsigned short)va_arg(ap, int);
+ else if (cflag)
+ num = (unsigned char)va_arg(ap, int);
+ else
+ num = va_arg(ap, unsigned int);
+ goto number;
+handle_sign:
+ if (jflag)
+ num = va_arg(ap, intmax_t);
+ else if (qflag)
+ num = va_arg(ap, int64_t);
+ else if (tflag)
+ num = va_arg(ap, ptrdiff_t);
+ else if (lflag)
+ num = va_arg(ap, long);
+ else if (zflag)
+ num = va_arg(ap, ssize_t);
+ else if (hflag)
+ num = (short)va_arg(ap, int);
+ else if (cflag)
+ num = (char)va_arg(ap, int);
+ else
+ num = va_arg(ap, int);
+number:
+ if (sign && (intmax_t)num < 0) {
+ neg = 1;
+ num = -(intmax_t)num;
+ }
+ p = ksprintn(nbuf, num, base, &n, upper);
+ tmp = 0;
+ if (sharpflag && num != 0) {
+ if (base == 8)
+ tmp++;
+ else if (base == 16)
+ tmp += 2;
+ }
+ if (neg)
+ tmp++;
+
+ if (!ladjust && padc == '0')
+ dwidth = width - tmp;
+ width -= tmp + imax(dwidth, n);
+ dwidth -= n;
+ if (!ladjust)
+ while (width-- > 0)
+ PCHAR(' ');
+ if (neg)
+ PCHAR('-');
+ if (sharpflag && num != 0) {
+ if (base == 8) {
+ PCHAR('0');
+ } else if (base == 16) {
+ PCHAR('0');
+ PCHAR('x');
+ }
+ }
+ while (dwidth-- > 0)
+ PCHAR('0');
+
+ while (*p)
+ PCHAR(*p--);
+
+ if (ladjust)
+ while (width-- > 0)
+ PCHAR(' ');
+
+ break;
+ default:
+ while (percent < fmt)
+ PCHAR(*percent++);
+ /*
+ * Since we ignore an formatting argument it is no
+ * longer safe to obey the remaining formatting
+ * arguments as the arguments will no longer match
+ * the format specs.
+ */
+ stop = 1;
+ break;
+ }
+ }
+#undef PCHAR
+}
+#else /* defined(USE_ELF) */
+#error not supported
+#endif
diff --git a/addr2line.h b/addr2line.h
new file mode 100644
index 0000000000..f09b665800
--- /dev/null
+++ b/addr2line.h
@@ -0,0 +1,20 @@
+#ifndef RUBY_ADDR2LINE_H
+#define RUBY_ADDR2LINE_H
+/**********************************************************************
+
+ addr2line.h -
+
+ $Author$
+
+ Copyright (C) 2010 Shinichiro Hamaji
+
+**********************************************************************/
+
+#if (defined(USE_ELF) || defined(HAVE_MACH_O_LOADER_H))
+
+void
+rb_dump_backtrace_with_lines(int num_traces, void **traces);
+
+#endif /* USE_ELF */
+
+#endif /* RUBY_ADDR2LINE_H */
diff --git a/array.c b/array.c
index 09c3a0489d..b76e9a64a3 100644
--- a/array.c
+++ b/array.c
@@ -3,1650 +3,8889 @@
array.c -
$Author$
- $Date$
created at: Fri Aug 6 09:46:12 JST 1993
- Copyright (C) 1993-2000 Yukihiro Matsumoto
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
Copyright (C) 2000 Network Applied Communication Laboratory, Inc.
Copyright (C) 2000 Information-technology Promotion Agency, Japan
**********************************************************************/
-#include "ruby.h"
-#include "util.h"
+#include "debug_counter.h"
+#include "id.h"
+#include "internal.h"
+#include "internal/array.h"
+#include "internal/compar.h"
+#include "internal/enum.h"
+#include "internal/gc.h"
+#include "internal/hash.h"
+#include "internal/numeric.h"
+#include "internal/object.h"
+#include "internal/proc.h"
+#include "internal/rational.h"
+#include "internal/vm.h"
+#include "probes.h"
+#include "ruby/encoding.h"
+#include "ruby/st.h"
+#include "ruby/util.h"
+#include "transient_heap.h"
+#include "builtin.h"
+
+#if !ARRAY_DEBUG
+# undef NDEBUG
+# define NDEBUG
+#endif
+#include "ruby_assert.h"
VALUE rb_cArray;
+/* Flags of RArray
+ *
+ * 1: RARRAY_EMBED_FLAG
+ * The array is embedded (its contents follow the header, rather than
+ * being on a separately allocated buffer).
+ * 2: RARRAY_SHARED_FLAG (equal to ELTS_SHARED)
+ * The array is shared. The buffer this array points to is owned by
+ * another array (the shared root).
+ * if USE_RVARGC
+ * 3-9: RARRAY_EMBED_LEN
+ * The length of the array when RARRAY_EMBED_FLAG is set.
+ * else
+ * 3-4: RARRAY_EMBED_LEN
+ * The length of the array when RARRAY_EMBED_FLAG is set.
+ * endif
+ * 12: RARRAY_SHARED_ROOT_FLAG
+ * The array is a shared root that does reference counting. The buffer
+ * this array points to is owned by this array but may be pointed to
+ * by other arrays.
+ * Note: Frozen arrays may be a shared root without this flag being
+ * set. Frozen arrays do not have reference counting because
+ * they cannot be modified. Not updating the reference count
+ * improves copy-on-write performance. Their reference count is
+ * assumed to be infinity.
+ * 13: RARRAY_TRANSIENT_FLAG
+ * The buffer of the array is allocated on the transient heap.
+ * 14: RARRAY_PTR_IN_USE_FLAG
+ * The buffer of the array is in use. This is only used during
+ * debugging.
+ */
+
+/* for OPTIMIZED_CMP: */
+#define id_cmp idCmp
+
#define ARY_DEFAULT_SIZE 16
+#define ARY_MAX_SIZE (LONG_MAX / (int)sizeof(VALUE))
+#define SMALL_ARRAY_LEN 16
+
+RBIMPL_ATTR_MAYBE_UNUSED()
+static int
+should_be_T_ARRAY(VALUE ary)
+{
+ return RB_TYPE_P(ary, T_ARRAY);
+}
+
+#define ARY_HEAP_PTR(a) (assert(!ARY_EMBED_P(a)), RARRAY(a)->as.heap.ptr)
+#define ARY_HEAP_LEN(a) (assert(!ARY_EMBED_P(a)), RARRAY(a)->as.heap.len)
+#define ARY_HEAP_CAPA(a) (assert(!ARY_EMBED_P(a)), assert(!ARY_SHARED_ROOT_P(a)), \
+ RARRAY(a)->as.heap.aux.capa)
+
+#define ARY_EMBED_PTR(a) (assert(ARY_EMBED_P(a)), RARRAY(a)->as.ary)
+#define ARY_EMBED_LEN(a) \
+ (assert(ARY_EMBED_P(a)), \
+ (long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & \
+ (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)))
+#define ARY_HEAP_SIZE(a) (assert(!ARY_EMBED_P(a)), assert(ARY_OWNS_HEAP_P(a)), ARY_CAPA(a) * sizeof(VALUE))
+
+#define ARY_OWNS_HEAP_P(a) (assert(should_be_T_ARRAY((VALUE)(a))), \
+ !FL_TEST_RAW((a), RARRAY_SHARED_FLAG|RARRAY_EMBED_FLAG))
+
+#define FL_SET_EMBED(a) do { \
+ assert(!ARY_SHARED_P(a)); \
+ FL_SET((a), RARRAY_EMBED_FLAG); \
+ RARY_TRANSIENT_UNSET(a); \
+ ary_verify(a); \
+} while (0)
+
+#define FL_UNSET_EMBED(ary) FL_UNSET((ary), RARRAY_EMBED_FLAG|RARRAY_EMBED_LEN_MASK)
+#define FL_SET_SHARED(ary) do { \
+ assert(!ARY_EMBED_P(ary)); \
+ FL_SET((ary), RARRAY_SHARED_FLAG); \
+} while (0)
+#define FL_UNSET_SHARED(ary) FL_UNSET((ary), RARRAY_SHARED_FLAG)
+
+#define ARY_SET_PTR(ary, p) do { \
+ assert(!ARY_EMBED_P(ary)); \
+ assert(!OBJ_FROZEN(ary)); \
+ RARRAY(ary)->as.heap.ptr = (p); \
+} while (0)
+#define ARY_SET_EMBED_LEN(ary, n) do { \
+ long tmp_n = (n); \
+ assert(ARY_EMBED_P(ary)); \
+ RBASIC(ary)->flags &= ~RARRAY_EMBED_LEN_MASK; \
+ RBASIC(ary)->flags |= (tmp_n) << RARRAY_EMBED_LEN_SHIFT; \
+} while (0)
+#define ARY_SET_HEAP_LEN(ary, n) do { \
+ assert(!ARY_EMBED_P(ary)); \
+ RARRAY(ary)->as.heap.len = (n); \
+} while (0)
+#define ARY_SET_LEN(ary, n) do { \
+ if (ARY_EMBED_P(ary)) { \
+ ARY_SET_EMBED_LEN((ary), (n)); \
+ } \
+ else { \
+ ARY_SET_HEAP_LEN((ary), (n)); \
+ } \
+ assert(RARRAY_LEN(ary) == (n)); \
+} while (0)
+#define ARY_INCREASE_PTR(ary, n) do { \
+ assert(!ARY_EMBED_P(ary)); \
+ assert(!OBJ_FROZEN(ary)); \
+ RARRAY(ary)->as.heap.ptr += (n); \
+} while (0)
+#define ARY_INCREASE_LEN(ary, n) do { \
+ assert(!OBJ_FROZEN(ary)); \
+ if (ARY_EMBED_P(ary)) { \
+ ARY_SET_EMBED_LEN((ary), RARRAY_LEN(ary)+(n)); \
+ } \
+ else { \
+ RARRAY(ary)->as.heap.len += (n); \
+ } \
+} while (0)
+
+#define ARY_CAPA(ary) (ARY_EMBED_P(ary) ? ary_embed_capa(ary) : \
+ ARY_SHARED_ROOT_P(ary) ? RARRAY_LEN(ary) : ARY_HEAP_CAPA(ary))
+#define ARY_SET_CAPA(ary, n) do { \
+ assert(!ARY_EMBED_P(ary)); \
+ assert(!ARY_SHARED_P(ary)); \
+ assert(!OBJ_FROZEN(ary)); \
+ RARRAY(ary)->as.heap.aux.capa = (n); \
+} while (0)
+
+#define ARY_SET_SHARED(ary, value) do { \
+ const VALUE _ary_ = (ary); \
+ const VALUE _value_ = (value); \
+ assert(!ARY_EMBED_P(_ary_)); \
+ assert(ARY_SHARED_P(_ary_)); \
+ assert(!OBJ_FROZEN(_ary_)); \
+ assert(ARY_SHARED_ROOT_P(_value_) || OBJ_FROZEN(_value_)); \
+ RB_OBJ_WRITE(_ary_, &RARRAY(_ary_)->as.heap.aux.shared_root, _value_); \
+} while (0)
+
+#define ARY_SHARED_ROOT_OCCUPIED(ary) (!OBJ_FROZEN(ary) && ARY_SHARED_ROOT_REFCNT(ary) == 1)
+#define ARY_SET_SHARED_ROOT_REFCNT(ary, value) do { \
+ assert(ARY_SHARED_ROOT_P(ary)); \
+ assert(!OBJ_FROZEN(ary)); \
+ assert((value) >= 0); \
+ RARRAY(ary)->as.heap.aux.capa = (value); \
+} while (0)
+#define FL_SET_SHARED_ROOT(ary) do { \
+ assert(!OBJ_FROZEN(ary)); \
+ assert(!ARY_EMBED_P(ary)); \
+ assert(!RARRAY_TRANSIENT_P(ary)); \
+ FL_SET((ary), RARRAY_SHARED_ROOT_FLAG); \
+} while (0)
+
+static inline void
+ARY_SET(VALUE a, long i, VALUE v)
+{
+ assert(!ARY_SHARED_P(a));
+ assert(!OBJ_FROZEN(a));
+
+ RARRAY_ASET(a, i, v);
+}
+#undef RARRAY_ASET
+
+static long
+ary_embed_capa(VALUE ary)
+{
+#if USE_RVARGC
+ size_t size = rb_gc_obj_slot_size(ary) - offsetof(struct RArray, as.ary);
+ assert(size % sizeof(VALUE) == 0);
+ return size / sizeof(VALUE);
+#else
+ return RARRAY_EMBED_LEN_MAX;
+#endif
+}
+
+static size_t
+ary_embed_size(long capa)
+{
+ return offsetof(struct RArray, as.ary) + (sizeof(VALUE) * capa);
+}
+
+static bool
+ary_embeddable_p(long capa)
+{
+#if USE_RVARGC
+ return rb_gc_size_allocatable_p(ary_embed_size(capa));
+#else
+ return capa <= RARRAY_EMBED_LEN_MAX;
+#endif
+}
+
+bool
+rb_ary_embeddable_p(VALUE ary)
+{
+ /* An array cannot be turned embeddable when the array is:
+ * - Shared root: other objects may point to the buffer of this array
+ * so we cannot make it embedded.
+ * - Frozen: this array may also be a shared root without the shared root
+ * flag.
+ * - Shared: we don't want to re-embed an array that points to a shared
+ * root (to save memory).
+ */
+ return !(ARY_SHARED_ROOT_P(ary) || OBJ_FROZEN(ary) || ARY_SHARED_P(ary));
+}
+
+size_t
+rb_ary_size_as_embedded(VALUE ary)
+{
+ size_t real_size;
+
+ if (ARY_EMBED_P(ary)) {
+ real_size = ary_embed_size(ARY_EMBED_LEN(ary));
+ }
+ else if (rb_ary_embeddable_p(ary)) {
+ real_size = ary_embed_size(ARY_HEAP_CAPA(ary));
+ }
+ else {
+ real_size = sizeof(struct RArray);
+ }
+ return real_size;
+}
+
+
+#if ARRAY_DEBUG
+#define ary_verify(ary) ary_verify_(ary, __FILE__, __LINE__)
+
+static VALUE
+ary_verify_(VALUE ary, const char *file, int line)
+{
+ assert(RB_TYPE_P(ary, T_ARRAY));
+
+ if (ARY_SHARED_P(ary)) {
+ VALUE root = ARY_SHARED_ROOT(ary);
+ const VALUE *ptr = ARY_HEAP_PTR(ary);
+ const VALUE *root_ptr = RARRAY_CONST_PTR_TRANSIENT(root);
+ long len = ARY_HEAP_LEN(ary), root_len = RARRAY_LEN(root);
+ assert(ARY_SHARED_ROOT_P(root) || OBJ_FROZEN(root));
+ assert(root_ptr <= ptr && ptr + len <= root_ptr + root_len);
+ ary_verify(root);
+ }
+ else if (ARY_EMBED_P(ary)) {
+ assert(!RARRAY_TRANSIENT_P(ary));
+ assert(!ARY_SHARED_P(ary));
+ assert(RARRAY_LEN(ary) <= ary_embed_capa(ary));
+ }
+ else {
+#if 1
+ const VALUE *ptr = RARRAY_CONST_PTR_TRANSIENT(ary);
+ long i, len = RARRAY_LEN(ary);
+ volatile VALUE v;
+ if (len > 1) len = 1; /* check only HEAD */
+ for (i=0; i<len; i++) {
+ v = ptr[i]; /* access check */
+ }
+ v = v;
+#endif
+ }
+
+#if USE_TRANSIENT_HEAP
+ if (RARRAY_TRANSIENT_P(ary)) {
+ assert(rb_transient_heap_managed_ptr_p(RARRAY_CONST_PTR_TRANSIENT(ary)));
+ }
+#endif
+
+ rb_transient_heap_verify();
+
+ return ary;
+}
void
-rb_mem_clear(mem, size)
- register VALUE *mem;
- register size_t size;
+rb_ary_verify(VALUE ary)
+{
+ ary_verify(ary);
+}
+#else
+#define ary_verify(ary) ((void)0)
+#endif
+
+VALUE *
+rb_ary_ptr_use_start(VALUE ary)
+{
+#if ARRAY_DEBUG
+ FL_SET_RAW(ary, RARRAY_PTR_IN_USE_FLAG);
+#endif
+ return (VALUE *)RARRAY_CONST_PTR_TRANSIENT(ary);
+}
+
+void
+rb_ary_ptr_use_end(VALUE ary)
+{
+#if ARRAY_DEBUG
+ FL_UNSET_RAW(ary, RARRAY_PTR_IN_USE_FLAG);
+#endif
+}
+
+void
+rb_mem_clear(VALUE *mem, long size)
{
while (size--) {
- *mem++ = Qnil;
+ *mem++ = Qnil;
}
}
static void
-memfill(mem, size, val)
- register VALUE *mem;
- register size_t size;
- register VALUE val;
+ary_mem_clear(VALUE ary, long beg, long size)
+{
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
+ rb_mem_clear(ptr + beg, size);
+ });
+}
+
+static inline void
+memfill(register VALUE *mem, register long size, register VALUE val)
{
while (size--) {
- *mem++ = val;
+ *mem++ = val;
}
}
-#define ARY_TMPLOCK FL_USER1
+static void
+ary_memfill(VALUE ary, long beg, long size, VALUE val)
+{
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
+ memfill(ptr + beg, size, val);
+ RB_OBJ_WRITTEN(ary, Qundef, val);
+ });
+}
static void
-rb_ary_modify(ary)
- VALUE ary;
+ary_memcpy0(VALUE ary, long beg, long argc, const VALUE *argv, VALUE buff_owner_ary)
+{
+ assert(!ARY_SHARED_P(buff_owner_ary));
+
+ if (argc > (int)(128/sizeof(VALUE)) /* is magic number (cache line size) */) {
+ rb_gc_writebarrier_remember(buff_owner_ary);
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
+ MEMCPY(ptr+beg, argv, VALUE, argc);
+ });
+ }
+ else {
+ int i;
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
+ for (i=0; i<argc; i++) {
+ RB_OBJ_WRITE(buff_owner_ary, &ptr[i+beg], argv[i]);
+ }
+ });
+ }
+}
+
+static void
+ary_memcpy(VALUE ary, long beg, long argc, const VALUE *argv)
{
- if (OBJ_FROZEN(ary)) rb_error_frozen("array");
- if (FL_TEST(ary, ARY_TMPLOCK))
- rb_raise(rb_eTypeError, "can't modify array during sort");
- if (!OBJ_TAINTED(ary) && rb_safe_level() >= 4)
- rb_raise(rb_eSecurityError, "Insecure: can't modify array");
+ ary_memcpy0(ary, beg, argc, argv, ary);
+}
+
+static VALUE *
+ary_heap_alloc(VALUE ary, size_t capa)
+{
+ VALUE *ptr = rb_transient_heap_alloc(ary, sizeof(VALUE) * capa);
+
+ if (ptr != NULL) {
+ RARY_TRANSIENT_SET(ary);
+ }
+ else {
+ RARY_TRANSIENT_UNSET(ary);
+ ptr = ALLOC_N(VALUE, capa);
+ }
+
+ return ptr;
}
+static void
+ary_heap_free_ptr(VALUE ary, const VALUE *ptr, long size)
+{
+ if (RARRAY_TRANSIENT_P(ary)) {
+ /* ignore it */
+ }
+ else {
+ ruby_sized_xfree((void *)ptr, size);
+ }
+}
+
+static void
+ary_heap_free(VALUE ary)
+{
+ if (RARRAY_TRANSIENT_P(ary)) {
+ RARY_TRANSIENT_UNSET(ary);
+ }
+ else {
+ ary_heap_free_ptr(ary, ARY_HEAP_PTR(ary), ARY_HEAP_SIZE(ary));
+ }
+}
+
+static size_t
+ary_heap_realloc(VALUE ary, size_t new_capa)
+{
+ size_t alloc_capa = new_capa;
+ size_t old_capa = ARY_HEAP_CAPA(ary);
+
+ if (RARRAY_TRANSIENT_P(ary)) {
+ if (new_capa <= old_capa) {
+ /* do nothing */
+ alloc_capa = old_capa;
+ }
+ else {
+ VALUE *new_ptr = rb_transient_heap_alloc(ary, sizeof(VALUE) * new_capa);
+
+ if (new_ptr == NULL) {
+ new_ptr = ALLOC_N(VALUE, new_capa);
+ RARY_TRANSIENT_UNSET(ary);
+ }
+
+ MEMCPY(new_ptr, ARY_HEAP_PTR(ary), VALUE, old_capa);
+ ARY_SET_PTR(ary, new_ptr);
+ }
+ }
+ else {
+ SIZED_REALLOC_N(RARRAY(ary)->as.heap.ptr, VALUE, new_capa, old_capa);
+ }
+ ary_verify(ary);
+
+ return alloc_capa;
+}
+
+#if USE_TRANSIENT_HEAP
+static inline void
+rb_ary_transient_heap_evacuate_(VALUE ary, int transient, int promote)
+{
+ if (transient) {
+ assert(!ARY_SHARED_ROOT_P(ary));
+
+ VALUE *new_ptr;
+ const VALUE *old_ptr = ARY_HEAP_PTR(ary);
+ long capa = ARY_HEAP_CAPA(ary);
+
+ assert(ARY_OWNS_HEAP_P(ary));
+ assert(RARRAY_TRANSIENT_P(ary));
+ assert(!ARY_PTR_USING_P(ary));
+
+ if (promote) {
+ new_ptr = ALLOC_N(VALUE, capa);
+ RARY_TRANSIENT_UNSET(ary);
+ }
+ else {
+ new_ptr = ary_heap_alloc(ary, capa);
+ }
+
+ MEMCPY(new_ptr, old_ptr, VALUE, capa);
+ /* do not use ARY_SET_PTR() because they assert !frozen */
+ RARRAY(ary)->as.heap.ptr = new_ptr;
+ }
+
+ ary_verify(ary);
+}
+
+void
+rb_ary_transient_heap_evacuate(VALUE ary, int promote)
+{
+ rb_ary_transient_heap_evacuate_(ary, RARRAY_TRANSIENT_P(ary), promote);
+}
+
+void
+rb_ary_detransient(VALUE ary)
+{
+ assert(RARRAY_TRANSIENT_P(ary));
+ rb_ary_transient_heap_evacuate_(ary, TRUE, TRUE);
+}
+#else
+void
+rb_ary_detransient(VALUE ary)
+{
+ /* do nothing */
+}
+#endif
+
+void
+rb_ary_make_embedded(VALUE ary)
+{
+ assert(rb_ary_embeddable_p(ary));
+ if (!ARY_EMBED_P(ary)) {
+ const VALUE *buf = ARY_HEAP_PTR(ary);
+ long len = ARY_HEAP_LEN(ary);
+ bool was_transient = RARRAY_TRANSIENT_P(ary);
+
+ // FL_SET_EMBED also unsets the transient flag
+ FL_SET_EMBED(ary);
+ ARY_SET_EMBED_LEN(ary, len);
+
+ MEMCPY((void *)ARY_EMBED_PTR(ary), (void *)buf, VALUE, len);
+
+ if (!was_transient) {
+ ary_heap_free_ptr(ary, buf, len * sizeof(VALUE));
+ }
+ }
+}
+
+static void
+ary_resize_capa(VALUE ary, long capacity)
+{
+ assert(RARRAY_LEN(ary) <= capacity);
+ assert(!OBJ_FROZEN(ary));
+ assert(!ARY_SHARED_P(ary));
+
+ if (capacity > ary_embed_capa(ary)) {
+ size_t new_capa = capacity;
+ if (ARY_EMBED_P(ary)) {
+ long len = ARY_EMBED_LEN(ary);
+ VALUE *ptr = ary_heap_alloc(ary, capacity);
+
+ MEMCPY(ptr, ARY_EMBED_PTR(ary), VALUE, len);
+ FL_UNSET_EMBED(ary);
+ ARY_SET_PTR(ary, ptr);
+ ARY_SET_HEAP_LEN(ary, len);
+ }
+ else {
+ new_capa = ary_heap_realloc(ary, capacity);
+ }
+ ARY_SET_CAPA(ary, new_capa);
+ }
+ else {
+ if (!ARY_EMBED_P(ary)) {
+ long len = ARY_HEAP_LEN(ary);
+ long old_capa = ARY_HEAP_CAPA(ary);
+ const VALUE *ptr = ARY_HEAP_PTR(ary);
+
+ if (len > capacity) len = capacity;
+ MEMCPY((VALUE *)RARRAY(ary)->as.ary, ptr, VALUE, len);
+ ary_heap_free_ptr(ary, ptr, old_capa);
+
+ FL_SET_EMBED(ary);
+ ARY_SET_LEN(ary, len);
+ }
+ }
+
+ ary_verify(ary);
+}
+
+static inline void
+ary_shrink_capa(VALUE ary)
+{
+ long capacity = ARY_HEAP_LEN(ary);
+ long old_capa = ARY_HEAP_CAPA(ary);
+ assert(!ARY_SHARED_P(ary));
+ assert(old_capa >= capacity);
+ if (old_capa > capacity) ary_heap_realloc(ary, capacity);
+
+ ary_verify(ary);
+}
+
+static void
+ary_double_capa(VALUE ary, long min)
+{
+ long new_capa = ARY_CAPA(ary) / 2;
+
+ if (new_capa < ARY_DEFAULT_SIZE) {
+ new_capa = ARY_DEFAULT_SIZE;
+ }
+ if (new_capa >= ARY_MAX_SIZE - min) {
+ new_capa = (ARY_MAX_SIZE - min) / 2;
+ }
+ new_capa += min;
+ ary_resize_capa(ary, new_capa);
+
+ ary_verify(ary);
+}
+
+static void
+rb_ary_decrement_share(VALUE shared_root)
+{
+ if (!OBJ_FROZEN(shared_root)) {
+ long num = ARY_SHARED_ROOT_REFCNT(shared_root);
+ ARY_SET_SHARED_ROOT_REFCNT(shared_root, num - 1);
+ }
+}
+
+static void
+rb_ary_unshare(VALUE ary)
+{
+ VALUE shared_root = ARY_SHARED_ROOT(ary);
+ rb_ary_decrement_share(shared_root);
+ FL_UNSET_SHARED(ary);
+}
+
+static void
+rb_ary_reset(VALUE ary)
+{
+ if (ARY_OWNS_HEAP_P(ary)) {
+ ary_heap_free(ary);
+ }
+ else if (ARY_SHARED_P(ary)) {
+ rb_ary_unshare(ary);
+ }
+
+ FL_SET_EMBED(ary);
+ ARY_SET_EMBED_LEN(ary, 0);
+}
+
+static VALUE
+rb_ary_increment_share(VALUE shared_root)
+{
+ if (!OBJ_FROZEN(shared_root)) {
+ long num = ARY_SHARED_ROOT_REFCNT(shared_root);
+ assert(num >= 0);
+ ARY_SET_SHARED_ROOT_REFCNT(shared_root, num + 1);
+ }
+ return shared_root;
+}
+
+static void
+rb_ary_set_shared(VALUE ary, VALUE shared_root)
+{
+ rb_ary_increment_share(shared_root);
+ FL_SET_SHARED(ary);
+ RB_DEBUG_COUNTER_INC(obj_ary_shared_create);
+ ARY_SET_SHARED(ary, shared_root);
+}
+
+static inline void
+rb_ary_modify_check(VALUE ary)
+{
+ rb_check_frozen(ary);
+ ary_verify(ary);
+}
+
+void
+rb_ary_cancel_sharing(VALUE ary)
+{
+ if (ARY_SHARED_P(ary)) {
+ long shared_len, len = RARRAY_LEN(ary);
+ VALUE shared_root = ARY_SHARED_ROOT(ary);
+
+ ary_verify(shared_root);
+
+ if (len <= ary_embed_capa(ary)) {
+ const VALUE *ptr = ARY_HEAP_PTR(ary);
+ FL_UNSET_SHARED(ary);
+ FL_SET_EMBED(ary);
+ MEMCPY((VALUE *)ARY_EMBED_PTR(ary), ptr, VALUE, len);
+ rb_ary_decrement_share(shared_root);
+ ARY_SET_EMBED_LEN(ary, len);
+ }
+ else if (ARY_SHARED_ROOT_OCCUPIED(shared_root) && len > ((shared_len = RARRAY_LEN(shared_root))>>1)) {
+ long shift = RARRAY_CONST_PTR_TRANSIENT(ary) - RARRAY_CONST_PTR_TRANSIENT(shared_root);
+ FL_UNSET_SHARED(ary);
+ ARY_SET_PTR(ary, RARRAY_CONST_PTR_TRANSIENT(shared_root));
+ ARY_SET_CAPA(ary, shared_len);
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
+ MEMMOVE(ptr, ptr+shift, VALUE, len);
+ });
+ FL_SET_EMBED(shared_root);
+ rb_ary_decrement_share(shared_root);
+ }
+ else {
+ VALUE *ptr = ary_heap_alloc(ary, len);
+ MEMCPY(ptr, ARY_HEAP_PTR(ary), VALUE, len);
+ rb_ary_unshare(ary);
+ ARY_SET_CAPA(ary, len);
+ ARY_SET_PTR(ary, ptr);
+ }
+
+ rb_gc_writebarrier_remember(ary);
+ }
+ ary_verify(ary);
+}
+
+void
+rb_ary_modify(VALUE ary)
+{
+ rb_ary_modify_check(ary);
+ rb_ary_cancel_sharing(ary);
+}
+
+static VALUE
+ary_ensure_room_for_push(VALUE ary, long add_len)
+{
+ long old_len = RARRAY_LEN(ary);
+ long new_len = old_len + add_len;
+ long capa;
+
+ if (old_len > ARY_MAX_SIZE - add_len) {
+ rb_raise(rb_eIndexError, "index %ld too big", new_len);
+ }
+ if (ARY_SHARED_P(ary)) {
+ if (new_len > ary_embed_capa(ary)) {
+ VALUE shared_root = ARY_SHARED_ROOT(ary);
+ if (ARY_SHARED_ROOT_OCCUPIED(shared_root)) {
+ if (ARY_HEAP_PTR(ary) - RARRAY_CONST_PTR_TRANSIENT(shared_root) + new_len <= RARRAY_LEN(shared_root)) {
+ rb_ary_modify_check(ary);
+
+ ary_verify(ary);
+ ary_verify(shared_root);
+ return shared_root;
+ }
+ else {
+ /* if array is shared, then it is likely it participate in push/shift pattern */
+ rb_ary_modify(ary);
+ capa = ARY_CAPA(ary);
+ if (new_len > capa - (capa >> 6)) {
+ ary_double_capa(ary, new_len);
+ }
+ ary_verify(ary);
+ return ary;
+ }
+ }
+ }
+ ary_verify(ary);
+ rb_ary_modify(ary);
+ }
+ else {
+ rb_ary_modify_check(ary);
+ }
+ capa = ARY_CAPA(ary);
+ if (new_len > capa) {
+ ary_double_capa(ary, new_len);
+ }
+
+ ary_verify(ary);
+ return ary;
+}
+
+/*
+ * call-seq:
+ * array.freeze -> self
+ *
+ * Freezes +self+; returns +self+:
+ *
+ * a = []
+ * a.frozen? # => false
+ * a.freeze
+ * a.frozen? # => true
+ *
+ * An attempt to modify a frozen \Array raises FrozenError.
+ */
+
VALUE
-rb_ary_freeze(ary)
- VALUE ary;
+rb_ary_freeze(VALUE ary)
{
return rb_obj_freeze(ary);
}
-static VALUE
-rb_ary_frozen_p(ary)
- VALUE ary;
+/* This can be used to take a snapshot of an array (with
+ e.g. rb_ary_replace) and check later whether the array has been
+ modified from the snapshot. The snapshot is cheap, though if
+ something does modify the array it will pay the cost of copying
+ it. If Array#pop or Array#shift has been called, the array will
+ be still shared with the snapshot, but the array length will
+ differ. */
+VALUE
+rb_ary_shared_with_p(VALUE ary1, VALUE ary2)
{
- if (FL_TEST(ary, FL_FREEZE|ARY_TMPLOCK))
- return Qtrue;
+ if (!ARY_EMBED_P(ary1) && ARY_SHARED_P(ary1) &&
+ !ARY_EMBED_P(ary2) && ARY_SHARED_P(ary2) &&
+ ARY_SHARED_ROOT(ary1) == ARY_SHARED_ROOT(ary2) &&
+ ARY_HEAP_LEN(ary1) == ARY_HEAP_LEN(ary2)) {
+ return Qtrue;
+ }
return Qfalse;
}
-VALUE
-rb_ary_new2(len)
- long len;
+static VALUE
+ary_alloc_embed(VALUE klass, long capa)
{
- NEWOBJ(ary, struct RArray);
- OBJSETUP(ary, rb_cArray, T_ARRAY);
+ size_t size = ary_embed_size(capa);
+ assert(rb_gc_size_allocatable_p(size));
+#if !USE_RVARGC
+ assert(size <= sizeof(struct RArray));
+#endif
+ RVARGC_NEWOBJ_OF(ary, struct RArray, klass,
+ T_ARRAY | RARRAY_EMBED_FLAG | (RGENGC_WB_PROTECTED_ARRAY ? FL_WB_PROTECTED : 0),
+ size);
+ /* Created array is:
+ * FL_SET_EMBED((VALUE)ary);
+ * ARY_SET_EMBED_LEN((VALUE)ary, 0);
+ */
+ return (VALUE)ary;
+}
- if (len < 0) {
- rb_raise(rb_eArgError, "negative array size (or size too big)");
+static VALUE
+ary_alloc_heap(VALUE klass)
+{
+ RVARGC_NEWOBJ_OF(ary, struct RArray, klass,
+ T_ARRAY | (RGENGC_WB_PROTECTED_ARRAY ? FL_WB_PROTECTED : 0),
+ sizeof(struct RArray));
+ return (VALUE)ary;
+}
+
+static VALUE
+empty_ary_alloc(VALUE klass)
+{
+ RUBY_DTRACE_CREATE_HOOK(ARRAY, 0);
+ return ary_alloc_embed(klass, 0);
+}
+
+static VALUE
+ary_new(VALUE klass, long capa)
+{
+ VALUE ary,*ptr;
+
+ if (capa < 0) {
+ rb_raise(rb_eArgError, "negative array size (or size too big)");
}
- if (len > 0 && len*sizeof(VALUE) <= 0) {
- rb_raise(rb_eArgError, "array size too big");
+ if (capa > ARY_MAX_SIZE) {
+ rb_raise(rb_eArgError, "array size too big");
}
- ary->len = 0;
- ary->capa = len;
- ary->ptr = 0;
- if (len == 0) len++;
- ary->ptr = ALLOC_N(VALUE, len);
- return (VALUE)ary;
+ RUBY_DTRACE_CREATE_HOOK(ARRAY, capa);
+
+ if (ary_embeddable_p(capa)) {
+ ary = ary_alloc_embed(klass, capa);
+ }
+ else {
+ ary = ary_alloc_heap(klass);
+ ARY_SET_CAPA(ary, capa);
+ assert(!ARY_EMBED_P(ary));
+
+ ptr = ary_heap_alloc(ary, capa);
+ ARY_SET_PTR(ary, ptr);
+ ARY_SET_HEAP_LEN(ary, 0);
+ }
+
+ return ary;
}
VALUE
-rb_ary_new()
+rb_ary_new_capa(long capa)
{
- return rb_ary_new2(ARY_DEFAULT_SIZE);
+ return ary_new(rb_cArray, capa);
}
-#ifdef HAVE_STDARG_PROTOTYPES
-#include <stdarg.h>
-#define va_init_list(a,b) va_start(a,b)
-#else
-#include <varargs.h>
-#define va_init_list(a,b) va_start(a)
-#endif
+VALUE
+rb_ary_new(void)
+{
+ return rb_ary_new_capa(0);
+}
VALUE
-#ifdef HAVE_STDARG_PROTOTYPES
-rb_ary_new3(long n, ...)
-#else
-rb_ary_new3(n, va_alist)
- long n;
- va_dcl
-#endif
+(rb_ary_new_from_args)(long n, ...)
{
va_list ar;
VALUE ary;
long i;
- if (n < 0) {
- rb_raise(rb_eIndexError, "negative number of items(%d)", n);
- }
- ary = rb_ary_new2(n<ARY_DEFAULT_SIZE?ARY_DEFAULT_SIZE:n);
+ ary = rb_ary_new2(n);
- va_init_list(ar, n);
+ va_start(ar, n);
for (i=0; i<n; i++) {
- RARRAY(ary)->ptr[i] = va_arg(ar, VALUE);
+ ARY_SET(ary, i, va_arg(ar, VALUE));
}
va_end(ar);
- RARRAY(ary)->len = n;
+ ARY_SET_LEN(ary, n);
return ary;
}
-VALUE
-rb_ary_new4(n, elts)
- long n;
- VALUE *elts;
+MJIT_FUNC_EXPORTED VALUE
+rb_ary_tmp_new_from_values(VALUE klass, long n, const VALUE *elts)
{
VALUE ary;
- ary = rb_ary_new2(n);
- if (elts) {
- MEMCPY(RARRAY(ary)->ptr, elts, VALUE, n);
+ ary = ary_new(klass, n);
+ if (n > 0 && elts) {
+ ary_memcpy(ary, 0, n, elts);
+ ARY_SET_LEN(ary, n);
+ }
+
+ return ary;
+}
+
+VALUE
+rb_ary_new_from_values(long n, const VALUE *elts)
+{
+ return rb_ary_tmp_new_from_values(rb_cArray, n, elts);
+}
+
+static VALUE
+ec_ary_alloc_embed(rb_execution_context_t *ec, VALUE klass, long capa)
+{
+ size_t size = ary_embed_size(capa);
+ assert(rb_gc_size_allocatable_p(size));
+#if !USE_RVARGC
+ assert(size <= sizeof(struct RArray));
+#endif
+ RB_RVARGC_EC_NEWOBJ_OF(ec, ary, struct RArray, klass,
+ T_ARRAY | RARRAY_EMBED_FLAG | (RGENGC_WB_PROTECTED_ARRAY ? FL_WB_PROTECTED : 0),
+ size);
+ /* Created array is:
+ * FL_SET_EMBED((VALUE)ary);
+ * ARY_SET_EMBED_LEN((VALUE)ary, 0);
+ */
+ return (VALUE)ary;
+}
+
+static VALUE
+ec_ary_alloc_heap(rb_execution_context_t *ec, VALUE klass)
+{
+ RB_RVARGC_EC_NEWOBJ_OF(ec, ary, struct RArray, klass,
+ T_ARRAY | (RGENGC_WB_PROTECTED_ARRAY ? FL_WB_PROTECTED : 0),
+ sizeof(struct RArray));
+ return (VALUE)ary;
+}
+
+static VALUE
+ec_ary_new(rb_execution_context_t *ec, VALUE klass, long capa)
+{
+ VALUE ary,*ptr;
+
+ if (capa < 0) {
+ rb_raise(rb_eArgError, "negative array size (or size too big)");
+ }
+ if (capa > ARY_MAX_SIZE) {
+ rb_raise(rb_eArgError, "array size too big");
+ }
+
+ RUBY_DTRACE_CREATE_HOOK(ARRAY, capa);
+
+ if (ary_embeddable_p(capa)) {
+ ary = ec_ary_alloc_embed(ec, klass, capa);
+ }
+ else {
+ ary = ec_ary_alloc_heap(ec, klass);
+ ARY_SET_CAPA(ary, capa);
+ assert(!ARY_EMBED_P(ary));
+
+ ptr = ary_heap_alloc(ary, capa);
+ ARY_SET_PTR(ary, ptr);
+ ARY_SET_HEAP_LEN(ary, 0);
}
- RARRAY(ary)->len = n;
return ary;
}
VALUE
-rb_assoc_new(car, cdr)
- VALUE car, cdr;
+rb_ec_ary_new_from_values(rb_execution_context_t *ec, long n, const VALUE *elts)
{
VALUE ary;
- ary = rb_ary_new2(2);
- RARRAY(ary)->ptr[0] = car;
- RARRAY(ary)->ptr[1] = cdr;
- RARRAY(ary)->len = 2;
+ ary = ec_ary_new(ec, rb_cArray, n);
+ if (n > 0 && elts) {
+ ary_memcpy(ary, 0, n, elts);
+ ARY_SET_LEN(ary, n);
+ }
return ary;
}
-static VALUE
-rb_ary_s_new(argc, argv, klass)
- int argc;
- VALUE *argv;
- VALUE klass;
+VALUE
+rb_ary_hidden_new(long capa)
{
- VALUE ary = rb_ary_new();
- OBJSETUP(ary, klass, T_ARRAY);
- rb_obj_call_init(ary, argc, argv);
+ VALUE ary = ary_new(0, capa);
+ rb_ary_transient_heap_evacuate(ary, TRUE);
+ return ary;
+}
+VALUE
+rb_ary_hidden_new_fill(long capa)
+{
+ VALUE ary = rb_ary_hidden_new(capa);
+ ary_memfill(ary, 0, capa, Qnil);
+ ARY_SET_LEN(ary, capa);
return ary;
}
+void
+rb_ary_free(VALUE ary)
+{
+ if (ARY_OWNS_HEAP_P(ary)) {
+ if (USE_DEBUG_COUNTER &&
+ !ARY_SHARED_ROOT_P(ary) &&
+ ARY_HEAP_CAPA(ary) > RARRAY_LEN(ary)) {
+ RB_DEBUG_COUNTER_INC(obj_ary_extracapa);
+ }
+
+ if (RARRAY_TRANSIENT_P(ary)) {
+ RB_DEBUG_COUNTER_INC(obj_ary_transient);
+ }
+ else {
+ RB_DEBUG_COUNTER_INC(obj_ary_ptr);
+ ary_heap_free(ary);
+ }
+ }
+ else {
+ RB_DEBUG_COUNTER_INC(obj_ary_embed);
+ }
+
+ if (ARY_SHARED_P(ary)) {
+ RB_DEBUG_COUNTER_INC(obj_ary_shared);
+ }
+ if (ARY_SHARED_ROOT_P(ary) && ARY_SHARED_ROOT_OCCUPIED(ary)) {
+ RB_DEBUG_COUNTER_INC(obj_ary_shared_root_occupied);
+ }
+}
+
+RUBY_FUNC_EXPORTED size_t
+rb_ary_memsize(VALUE ary)
+{
+ if (ARY_OWNS_HEAP_P(ary)) {
+ return ARY_CAPA(ary) * sizeof(VALUE);
+ }
+ else {
+ return 0;
+ }
+}
+
static VALUE
-rb_ary_initialize(argc, argv, ary)
- int argc;
- VALUE *argv;
- VALUE ary;
+ary_make_shared(VALUE ary)
{
- long len;
- VALUE size, val;
+ assert(USE_RVARGC || !ARY_EMBED_P(ary));
+ ary_verify(ary);
- if (rb_scan_args(argc, argv, "02", &size, &val) == 0) {
- return ary;
+ if (ARY_SHARED_P(ary)) {
+ return ARY_SHARED_ROOT(ary);
+ }
+ else if (ARY_SHARED_ROOT_P(ary)) {
+ return ary;
+ }
+ else if (OBJ_FROZEN(ary)) {
+ if (!ARY_EMBED_P(ary)) {
+ rb_ary_transient_heap_evacuate(ary, TRUE);
+ ary_shrink_capa(ary);
+ }
+ return ary;
}
+ else {
+ rb_ary_transient_heap_evacuate(ary, TRUE);
+
+ long capa = ARY_CAPA(ary);
+ long len = RARRAY_LEN(ary);
+
+ /* Shared roots cannot be embedded because the reference count
+ * (refcnt) is stored in as.heap.aux.capa. */
+ VALUE shared = ary_alloc_heap(0);
+ FL_SET_SHARED_ROOT(shared);
+
+ if (ARY_EMBED_P(ary)) {
+ /* Cannot use ary_heap_alloc because we don't want to allocate
+ * on the transient heap. */
+ VALUE *ptr = ALLOC_N(VALUE, capa);
+ ARY_SET_PTR(shared, ptr);
+ ary_memcpy(shared, 0, len, RARRAY_PTR(ary));
+
+ FL_UNSET_EMBED(ary);
+ ARY_SET_HEAP_LEN(ary, len);
+ ARY_SET_PTR(ary, ptr);
+ }
+ else {
+ ARY_SET_PTR(shared, RARRAY_PTR(ary));
+ }
+
+ ARY_SET_LEN(shared, capa);
+ ary_mem_clear(shared, len, capa - len);
+ ARY_SET_SHARED_ROOT_REFCNT(shared, 1);
+ FL_SET_SHARED(ary);
+ RB_DEBUG_COUNTER_INC(obj_ary_shared_create);
+ ARY_SET_SHARED(ary, shared);
+
+ ary_verify(shared);
+ ary_verify(ary);
+
+ return shared;
+ }
+}
- rb_ary_modify(ary);
- len = NUM2LONG(size);
- if (len < 0) {
- rb_raise(rb_eArgError, "negative array size");
+static VALUE
+ary_make_substitution(VALUE ary)
+{
+ long len = RARRAY_LEN(ary);
+
+ if (ary_embeddable_p(len)) {
+ VALUE subst = rb_ary_new_capa(len);
+ assert(ARY_EMBED_P(subst));
+
+ ary_memcpy(subst, 0, len, RARRAY_CONST_PTR_TRANSIENT(ary));
+ ARY_SET_EMBED_LEN(subst, len);
+ return subst;
+ }
+ else {
+ return rb_ary_increment_share(ary_make_shared(ary));
}
- if (len > 0 && len*sizeof(VALUE) <= 0) {
- rb_raise(rb_eArgError, "array size too big");
+}
+
+VALUE
+rb_assoc_new(VALUE car, VALUE cdr)
+{
+ return rb_ary_new3(2, car, cdr);
+}
+
+VALUE
+rb_to_array_type(VALUE ary)
+{
+ return rb_convert_type_with_id(ary, T_ARRAY, "Array", idTo_ary);
+}
+#define to_ary rb_to_array_type
+
+VALUE
+rb_check_array_type(VALUE ary)
+{
+ return rb_check_convert_type_with_id(ary, T_ARRAY, "Array", idTo_ary);
+}
+
+MJIT_FUNC_EXPORTED VALUE
+rb_check_to_array(VALUE ary)
+{
+ return rb_check_convert_type_with_id(ary, T_ARRAY, "Array", idTo_a);
+}
+
+VALUE
+rb_to_array(VALUE ary)
+{
+ return rb_convert_type_with_id(ary, T_ARRAY, "Array", idTo_a);
+}
+
+/*
+ * call-seq:
+ * Array.try_convert(object) -> object, new_array, or nil
+ *
+ * If +object+ is an \Array object, returns +object+.
+ *
+ * Otherwise if +object+ responds to <tt>:to_ary</tt>,
+ * calls <tt>object.to_ary</tt> and returns the result.
+ *
+ * Returns +nil+ if +object+ does not respond to <tt>:to_ary</tt>
+ *
+ * Raises an exception unless <tt>object.to_ary</tt> returns an \Array object.
+ */
+
+static VALUE
+rb_ary_s_try_convert(VALUE dummy, VALUE ary)
+{
+ return rb_check_array_type(ary);
+}
+
+/* :nodoc: */
+static VALUE
+rb_ary_s_new(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE ary;
+
+ if (klass == rb_cArray) {
+ long size = 0;
+ if (argc > 0 && FIXNUM_P(argv[0])) {
+ size = FIX2LONG(argv[0]);
+ if (size < 0) size = 0;
+ }
+
+ ary = ary_new(klass, size);
+
+ rb_obj_call_init_kw(ary, argc, argv, RB_PASS_CALLED_KEYWORDS);
}
- if (len > RARRAY(ary)->capa) {
- RARRAY(ary)->capa = len;
- REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->capa);
+ else {
+ ary = rb_class_new_instance_pass_kw(argc, argv, klass);
}
- memfill(RARRAY(ary)->ptr, len, val);
- RARRAY(ary)->len = len;
return ary;
}
+/*
+ * call-seq:
+ * Array.new -> new_empty_array
+ * Array.new(array) -> new_array
+ * Array.new(size) -> new_array
+ * Array.new(size, default_value) -> new_array
+ * Array.new(size) {|index| ... } -> new_array
+ *
+ * Returns a new \Array.
+ *
+ * With no block and no arguments, returns a new empty \Array object.
+ *
+ * With no block and a single \Array argument +array+,
+ * returns a new \Array formed from +array+:
+ *
+ * a = Array.new([:foo, 'bar', 2])
+ * a.class # => Array
+ * a # => [:foo, "bar", 2]
+ *
+ * With no block and a single \Integer argument +size+,
+ * returns a new \Array of the given size
+ * whose elements are all +nil+:
+ *
+ * a = Array.new(3)
+ * a # => [nil, nil, nil]
+ *
+ * With no block and arguments +size+ and +default_value+,
+ * returns an \Array of the given size;
+ * each element is that same +default_value+:
+ *
+ * a = Array.new(3, 'x')
+ * a # => ['x', 'x', 'x']
+ *
+ * With a block and argument +size+,
+ * returns an \Array of the given size;
+ * the block is called with each successive integer +index+;
+ * the element for that +index+ is the return value from the block:
+ *
+ * a = Array.new(3) {|index| "Element #{index}" }
+ * a # => ["Element 0", "Element 1", "Element 2"]
+ *
+ * Raises ArgumentError if +size+ is negative.
+ *
+ * With a block and no argument,
+ * or a single argument +0+,
+ * ignores the block and returns a new empty \Array.
+ */
+
static VALUE
-rb_ary_s_create(argc, argv, klass)
- int argc;
- VALUE *argv;
- VALUE klass;
+rb_ary_initialize(int argc, VALUE *argv, VALUE ary)
{
- NEWOBJ(ary, struct RArray);
- OBJSETUP(ary, klass, T_ARRAY);
+ long len;
+ VALUE size, val;
- ary->len = ary->capa = 0;
+ rb_ary_modify(ary);
if (argc == 0) {
- ary->ptr = 0;
+ rb_ary_reset(ary);
+ assert(ARY_EMBED_P(ary));
+ assert(ARY_EMBED_LEN(ary) == 0);
+ if (rb_block_given_p()) {
+ rb_warning("given block not used");
+ }
+ return ary;
+ }
+ rb_scan_args(argc, argv, "02", &size, &val);
+ if (argc == 1 && !FIXNUM_P(size)) {
+ val = rb_check_array_type(size);
+ if (!NIL_P(val)) {
+ rb_ary_replace(ary, val);
+ return ary;
+ }
+ }
+
+ len = NUM2LONG(size);
+ /* NUM2LONG() may call size.to_int, ary can be frozen, modified, etc */
+ if (len < 0) {
+ rb_raise(rb_eArgError, "negative array size");
+ }
+ if (len > ARY_MAX_SIZE) {
+ rb_raise(rb_eArgError, "array size too big");
+ }
+ /* recheck after argument conversion */
+ rb_ary_modify(ary);
+ ary_resize_capa(ary, len);
+ if (rb_block_given_p()) {
+ long i;
+
+ if (argc == 2) {
+ rb_warn("block supersedes default value argument");
+ }
+ for (i=0; i<len; i++) {
+ rb_ary_store(ary, i, rb_yield(LONG2NUM(i)));
+ ARY_SET_LEN(ary, i + 1);
+ }
}
else {
- ary->ptr = ALLOC_N(VALUE, argc);
- MEMCPY(ary->ptr, argv, VALUE, argc);
+ ary_memfill(ary, 0, len, val);
+ ARY_SET_LEN(ary, len);
}
- ary->len = ary->capa = argc;
+ return ary;
+}
- return (VALUE)ary;
+/*
+ * Returns a new array populated with the given objects.
+ *
+ * Array.[]( 1, 'a', /^A/) # => [1, "a", /^A/]
+ * Array[ 1, 'a', /^A/ ] # => [1, "a", /^A/]
+ * [ 1, 'a', /^A/ ] # => [1, "a", /^A/]
+ */
+
+static VALUE
+rb_ary_s_create(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE ary = ary_new(klass, argc);
+ if (argc > 0 && argv) {
+ ary_memcpy(ary, 0, argc, argv);
+ ARY_SET_LEN(ary, argc);
+ }
+
+ return ary;
}
void
-rb_ary_store(ary, idx, val)
- VALUE ary;
- long idx;
- VALUE val;
+rb_ary_store(VALUE ary, long idx, VALUE val)
{
- rb_ary_modify(ary);
+ long len = RARRAY_LEN(ary);
+
if (idx < 0) {
- idx += RARRAY(ary)->len;
- if (idx < 0) {
- rb_raise(rb_eIndexError, "index %d out of array",
- idx - RARRAY(ary)->len);
- }
+ idx += len;
+ if (idx < 0) {
+ rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
+ idx - len, -len);
+ }
+ }
+ else if (idx >= ARY_MAX_SIZE) {
+ rb_raise(rb_eIndexError, "index %ld too big", idx);
}
- if (idx >= RARRAY(ary)->capa) {
- long capa_inc = RARRAY(ary)->capa / 2;
- if (capa_inc < ARY_DEFAULT_SIZE) {
- capa_inc = ARY_DEFAULT_SIZE;
- }
- RARRAY(ary)->capa = idx + capa_inc;
- REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->capa);
+ rb_ary_modify(ary);
+ if (idx >= ARY_CAPA(ary)) {
+ ary_double_capa(ary, idx);
}
- if (idx > RARRAY(ary)->len) {
- rb_mem_clear(RARRAY(ary)->ptr+RARRAY(ary)->len,
- idx-RARRAY(ary)->len+1);
+ if (idx > len) {
+ ary_mem_clear(ary, len, idx - len + 1);
}
- if (idx >= RARRAY(ary)->len) {
- RARRAY(ary)->len = idx + 1;
+ if (idx >= len) {
+ ARY_SET_LEN(ary, idx + 1);
}
- RARRAY(ary)->ptr[idx] = val;
+ ARY_SET(ary, idx, val);
}
-VALUE
-rb_ary_push(ary, item)
- VALUE ary;
- VALUE item;
+static VALUE
+ary_make_partial(VALUE ary, VALUE klass, long offset, long len)
{
- rb_ary_store(ary, RARRAY(ary)->len, item);
- return ary;
+ assert(offset >= 0);
+ assert(len >= 0);
+ assert(offset+len <= RARRAY_LEN(ary));
+
+ const size_t rarray_embed_capa_max = (sizeof(struct RArray) - offsetof(struct RArray, as.ary)) / sizeof(VALUE);
+
+ if ((size_t)len <= rarray_embed_capa_max && ary_embeddable_p(len)) {
+ VALUE result = ary_alloc_embed(klass, len);
+ ary_memcpy(result, 0, len, RARRAY_CONST_PTR_TRANSIENT(ary) + offset);
+ ARY_SET_EMBED_LEN(result, len);
+ return result;
+ }
+ else {
+ VALUE shared = ary_make_shared(ary);
+
+ VALUE result = ary_alloc_heap(klass);
+ assert(!ARY_EMBED_P(result));
+
+ ARY_SET_PTR(result, RARRAY_CONST_PTR_TRANSIENT(ary));
+ ARY_SET_LEN(result, RARRAY_LEN(ary));
+ rb_ary_set_shared(result, shared);
+
+ ARY_INCREASE_PTR(result, offset);
+ ARY_SET_LEN(result, len);
+
+ ary_verify(shared);
+ ary_verify(result);
+ return result;
+ }
}
static VALUE
-rb_ary_push_m(argc, argv, ary)
- int argc;
- VALUE *argv;
- VALUE ary;
+ary_make_partial_step(VALUE ary, VALUE klass, long offset, long len, long step)
+{
+ assert(offset >= 0);
+ assert(len >= 0);
+ assert(offset+len <= RARRAY_LEN(ary));
+ assert(step != 0);
+
+ const VALUE *values = RARRAY_CONST_PTR_TRANSIENT(ary);
+ const long orig_len = len;
+
+ if (step > 0 && step >= len) {
+ VALUE result = ary_new(klass, 1);
+ VALUE *ptr = (VALUE *)ARY_EMBED_PTR(result);
+ RB_OBJ_WRITE(result, ptr, values[offset]);
+ ARY_SET_EMBED_LEN(result, 1);
+ return result;
+ }
+ else if (step < 0 && step < -len) {
+ step = -len;
+ }
+
+ long ustep = (step < 0) ? -step : step;
+ len = roomof(len, ustep);
+
+ long i;
+ long j = offset + ((step > 0) ? 0 : (orig_len - 1));
+
+ VALUE result = ary_new(klass, len);
+ if (ARY_EMBED_P(result)) {
+ VALUE *ptr = (VALUE *)ARY_EMBED_PTR(result);
+ for (i = 0; i < len; ++i) {
+ RB_OBJ_WRITE(result, ptr+i, values[j]);
+ j += step;
+ }
+ ARY_SET_EMBED_LEN(result, len);
+ }
+ else {
+ RARRAY_PTR_USE_TRANSIENT(result, ptr, {
+ for (i = 0; i < len; ++i) {
+ RB_OBJ_WRITE(result, ptr+i, values[j]);
+ j += step;
+ }
+ });
+ ARY_SET_LEN(result, len);
+ }
+
+ return result;
+}
+
+static VALUE
+ary_make_shared_copy(VALUE ary)
{
- if (argc > 0) {
- long len = RARRAY(ary)->len;
+ return ary_make_partial(ary, rb_cArray, 0, RARRAY_LEN(ary));
+}
- --argc;
- /* make rooms by copying the last item */
- rb_ary_store(ary, len + argc, argv[argc]);
+enum ary_take_pos_flags
+{
+ ARY_TAKE_FIRST = 0,
+ ARY_TAKE_LAST = 1
+};
- if (argc) /* if any rest */
- MEMCPY(RARRAY(ary)->ptr + len, argv, VALUE, argc);
+static VALUE
+ary_take_first_or_last(int argc, const VALUE *argv, VALUE ary, enum ary_take_pos_flags last)
+{
+ long n;
+ long len;
+ long offset = 0;
+
+ argc = rb_check_arity(argc, 0, 1);
+ /* the case optional argument is omitted should be handled in
+ * callers of this function. if another arity case is added,
+ * this arity check needs to rewrite. */
+ RUBY_ASSERT_ALWAYS(argc == 1);
+
+ n = NUM2LONG(argv[0]);
+ len = RARRAY_LEN(ary);
+ if (n > len) {
+ n = len;
+ }
+ else if (n < 0) {
+ rb_raise(rb_eArgError, "negative array size");
}
+ if (last) {
+ offset = len - n;
+ }
+ return ary_make_partial(ary, rb_cArray, offset, n);
+}
+
+/*
+ * call-seq:
+ * array << object -> self
+ *
+ * Appends +object+ to +self+; returns +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a << :baz # => [:foo, "bar", 2, :baz]
+ *
+ * Appends +object+ as one element, even if it is another \Array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a1 = a << [3, 4]
+ * a1 # => [:foo, "bar", 2, [3, 4]]
+ *
+ */
+
+VALUE
+rb_ary_push(VALUE ary, VALUE item)
+{
+ long idx = RARRAY_LEN((ary_verify(ary), ary));
+ VALUE target_ary = ary_ensure_room_for_push(ary, 1);
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
+ RB_OBJ_WRITE(target_ary, &ptr[idx], item);
+ });
+ ARY_SET_LEN(ary, idx + 1);
+ ary_verify(ary);
return ary;
}
VALUE
-rb_ary_pop(ary)
- VALUE ary;
+rb_ary_cat(VALUE ary, const VALUE *argv, long len)
{
- rb_ary_modify(ary);
- if (RARRAY(ary)->len == 0) return Qnil;
- if (RARRAY(ary)->len * 10 < RARRAY(ary)->capa && RARRAY(ary)->capa > ARY_DEFAULT_SIZE) {
- RARRAY(ary)->capa = RARRAY(ary)->len * 2;
- REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->capa);
- }
- return RARRAY(ary)->ptr[--RARRAY(ary)->len];
+ long oldlen = RARRAY_LEN(ary);
+ VALUE target_ary = ary_ensure_room_for_push(ary, len);
+ ary_memcpy0(ary, oldlen, len, argv, target_ary);
+ ARY_SET_LEN(ary, oldlen + len);
+ return ary;
+}
+
+/*
+ * call-seq:
+ * array.push(*objects) -> self
+ *
+ * Appends trailing elements.
+ *
+ * Appends each argument in +objects+ to +self+; returns +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.push(:baz, :bat) # => [:foo, "bar", 2, :baz, :bat]
+ *
+ * Appends each argument as one element, even if it is another \Array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a1 = a.push([:baz, :bat], [:bam, :bad])
+ * a1 # => [:foo, "bar", 2, [:baz, :bat], [:bam, :bad]]
+ *
+ * Array#append is an alias for Array#push.
+ *
+ * Related: #pop, #shift, #unshift.
+ */
+
+static VALUE
+rb_ary_push_m(int argc, VALUE *argv, VALUE ary)
+{
+ return rb_ary_cat(ary, argv, argc);
}
VALUE
-rb_ary_shift(ary)
- VALUE ary;
+rb_ary_pop(VALUE ary)
{
- VALUE top;
+ long n;
+ rb_ary_modify_check(ary);
+ n = RARRAY_LEN(ary);
+ if (n == 0) return Qnil;
+ if (ARY_OWNS_HEAP_P(ary) &&
+ n * 3 < ARY_CAPA(ary) &&
+ ARY_CAPA(ary) > ARY_DEFAULT_SIZE)
+ {
+ ary_resize_capa(ary, n * 2);
+ }
+ --n;
+ ARY_SET_LEN(ary, n);
+ ary_verify(ary);
+ return RARRAY_AREF(ary, n);
+}
- rb_ary_modify(ary);
- if (RARRAY(ary)->len == 0) return Qnil;
+/*
+ * call-seq:
+ * array.pop -> object or nil
+ * array.pop(n) -> new_array
+ *
+ * Removes and returns trailing elements.
+ *
+ * When no argument is given and +self+ is not empty,
+ * removes and returns the last element:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.pop # => 2
+ * a # => [:foo, "bar"]
+ *
+ * Returns +nil+ if the array is empty.
+ *
+ * When a non-negative \Integer argument +n+ is given and is in range,
+ *
+ * removes and returns the last +n+ elements in a new \Array:
+ * a = [:foo, 'bar', 2]
+ * a.pop(2) # => ["bar", 2]
+ *
+ * If +n+ is positive and out of range,
+ * removes and returns all elements:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.pop(50) # => [:foo, "bar", 2]
+ *
+ * Related: #push, #shift, #unshift.
+ */
- top = RARRAY(ary)->ptr[0];
- RARRAY(ary)->len--;
+static VALUE
+rb_ary_pop_m(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE result;
- /* sliding items */
- MEMMOVE(RARRAY(ary)->ptr, RARRAY(ary)->ptr+1, VALUE, RARRAY(ary)->len);
- if (RARRAY(ary)->len * 10 < RARRAY(ary)->capa && RARRAY(ary)->capa > ARY_DEFAULT_SIZE) {
- RARRAY(ary)->capa = RARRAY(ary)->len * 2;
- REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->capa);
+ if (argc == 0) {
+ return rb_ary_pop(ary);
}
- return top;
+ rb_ary_modify_check(ary);
+ result = ary_take_first_or_last(argc, argv, ary, ARY_TAKE_LAST);
+ ARY_INCREASE_LEN(ary, -RARRAY_LEN(result));
+ ary_verify(ary);
+ return result;
}
VALUE
-rb_ary_unshift(ary, item)
- VALUE ary, item;
+rb_ary_shift(VALUE ary)
{
- rb_ary_modify(ary);
- if (RARRAY(ary)->len >= RARRAY(ary)->capa) {
- long capa_inc = RARRAY(ary)->capa / 2;
- if (capa_inc < ARY_DEFAULT_SIZE) {
- capa_inc = ARY_DEFAULT_SIZE;
- }
- RARRAY(ary)->capa+=capa_inc;
- REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->capa);
+ VALUE top;
+ long len = RARRAY_LEN(ary);
+
+ if (len == 0) {
+ rb_ary_modify_check(ary);
+ return Qnil;
}
- /* sliding items */
- MEMMOVE(RARRAY(ary)->ptr+1, RARRAY(ary)->ptr, VALUE, RARRAY(ary)->len);
+ top = RARRAY_AREF(ary, 0);
- RARRAY(ary)->len++;
- RARRAY(ary)->ptr[0] = item;
+ rb_ary_behead(ary, 1);
- return ary;
+ return top;
}
+/*
+ * call-seq:
+ * array.shift -> object or nil
+ * array.shift(n) -> new_array
+ *
+ * Removes and returns leading elements.
+ *
+ * When no argument is given, removes and returns the first element:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.shift # => :foo
+ * a # => ['bar', 2]
+ *
+ * Returns +nil+ if +self+ is empty.
+ *
+ * When positive \Integer argument +n+ is given, removes the first +n+ elements;
+ * returns those elements in a new \Array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.shift(2) # => [:foo, 'bar']
+ * a # => [2]
+ *
+ * If +n+ is as large as or larger than <tt>self.length</tt>,
+ * removes all elements; returns those elements in a new \Array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.shift(3) # => [:foo, 'bar', 2]
+ *
+ * If +n+ is zero, returns a new empty \Array; +self+ is unmodified.
+ *
+ * Related: #push, #pop, #unshift.
+ */
+
static VALUE
-rb_ary_unshift_m(argc, argv, ary)
- int argc;
- VALUE *argv;
- VALUE ary;
+rb_ary_shift_m(int argc, VALUE *argv, VALUE ary)
{
+ VALUE result;
+ long n;
+
if (argc == 0) {
- rb_raise(rb_eArgError, "wrong # of arguments(at least 1)");
+ return rb_ary_shift(ary);
}
- if (argc > 0) {
- long len = RARRAY(ary)->len;
- /* make rooms by setting the last item */
- rb_ary_store(ary, len + argc - 1, Qnil);
+ rb_ary_modify_check(ary);
+ result = ary_take_first_or_last(argc, argv, ary, ARY_TAKE_FIRST);
+ n = RARRAY_LEN(result);
+ rb_ary_behead(ary,n);
+
+ return result;
+}
- /* sliding items */
- MEMMOVE(RARRAY(ary)->ptr + argc, RARRAY(ary)->ptr, VALUE, len);
- MEMCPY(RARRAY(ary)->ptr, argv, VALUE, argc);
+MJIT_FUNC_EXPORTED VALUE
+rb_ary_behead(VALUE ary, long n)
+{
+ if (n <= 0) {
+ return ary;
+ }
+
+ rb_ary_modify_check(ary);
+
+ if (!ARY_SHARED_P(ary)) {
+ if (ARY_EMBED_P(ary) || RARRAY_LEN(ary) < ARY_DEFAULT_SIZE) {
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
+ MEMMOVE(ptr, ptr + n, VALUE, RARRAY_LEN(ary) - n);
+ }); /* WB: no new reference */
+ ARY_INCREASE_LEN(ary, -n);
+ ary_verify(ary);
+ return ary;
+ }
+
+ ary_mem_clear(ary, 0, n);
+ ary_make_shared(ary);
+ }
+ else if (ARY_SHARED_ROOT_OCCUPIED(ARY_SHARED_ROOT(ary))) {
+ ary_mem_clear(ary, 0, n);
}
+
+ ARY_INCREASE_PTR(ary, n);
+ ARY_INCREASE_LEN(ary, -n);
+ ary_verify(ary);
+
return ary;
}
-VALUE
-rb_ary_entry(ary, offset)
- VALUE ary;
- long offset;
+static VALUE
+make_room_for_unshift(VALUE ary, const VALUE *head, VALUE *sharedp, int argc, long capa, long len)
+{
+ if (head - sharedp < argc) {
+ long room = capa - len - argc;
+
+ room -= room >> 4;
+ MEMMOVE((VALUE *)sharedp + argc + room, head, VALUE, len);
+ head = sharedp + argc + room;
+ }
+ ARY_SET_PTR(ary, head - argc);
+ assert(ARY_SHARED_ROOT_OCCUPIED(ARY_SHARED_ROOT(ary)));
+
+ ary_verify(ary);
+ return ARY_SHARED_ROOT(ary);
+}
+
+static VALUE
+ary_modify_for_unshift(VALUE ary, int argc)
{
- if (RARRAY(ary)->len == 0) return Qnil;
+ long len = RARRAY_LEN(ary);
+ long new_len = len + argc;
+ long capa;
+ const VALUE *head, *sharedp;
- if (offset < 0) {
- offset = RARRAY(ary)->len + offset;
+ rb_ary_modify(ary);
+ capa = ARY_CAPA(ary);
+ if (capa - (capa >> 6) <= new_len) {
+ ary_double_capa(ary, new_len);
}
- if (offset < 0 || RARRAY(ary)->len <= offset) {
- return Qnil;
+
+ /* use shared array for big "queues" */
+ if (new_len > ARY_DEFAULT_SIZE * 4 && !ARY_EMBED_P(ary)) {
+ ary_verify(ary);
+
+ /* make a room for unshifted items */
+ capa = ARY_CAPA(ary);
+ ary_make_shared(ary);
+
+ head = sharedp = RARRAY_CONST_PTR_TRANSIENT(ary);
+ return make_room_for_unshift(ary, head, (void *)sharedp, argc, capa, len);
}
+ else {
+ /* sliding items */
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
+ MEMMOVE(ptr + argc, ptr, VALUE, len);
+ });
- return RARRAY(ary)->ptr[offset];
+ ary_verify(ary);
+ return ary;
+ }
}
static VALUE
-rb_ary_subseq(ary, beg, len)
- VALUE ary;
- long beg, len;
+ary_ensure_room_for_unshift(VALUE ary, int argc)
{
- VALUE ary2;
+ long len = RARRAY_LEN(ary);
+ long new_len = len + argc;
- if (beg > RARRAY(ary)->len) return Qnil;
- if (beg < 0) {
- len += beg;
- beg = 0;
+ if (len > ARY_MAX_SIZE - argc) {
+ rb_raise(rb_eIndexError, "index %ld too big", new_len);
}
- if (len < 0) return Qnil;
- if (beg + len > RARRAY(ary)->len) {
- len = RARRAY(ary)->len - beg;
+ else if (! ARY_SHARED_P(ary)) {
+ return ary_modify_for_unshift(ary, argc);
}
- if (len < 0) {
- len = 0;
+ else {
+ VALUE shared_root = ARY_SHARED_ROOT(ary);
+ long capa = RARRAY_LEN(shared_root);
+
+ if (! ARY_SHARED_ROOT_OCCUPIED(shared_root)) {
+ return ary_modify_for_unshift(ary, argc);
+ }
+ else if (new_len > capa) {
+ return ary_modify_for_unshift(ary, argc);
+ }
+ else {
+ const VALUE * head = RARRAY_CONST_PTR_TRANSIENT(ary);
+ void *sharedp = (void *)RARRAY_CONST_PTR_TRANSIENT(shared_root);
+
+ rb_ary_modify_check(ary);
+ return make_room_for_unshift(ary, head, sharedp, argc, capa, len);
+ }
}
- if (len == 0) return rb_ary_new2(0);
+}
- ary2 = rb_ary_new2(len);
- MEMCPY(RARRAY(ary2)->ptr, RARRAY(ary)->ptr+beg, VALUE, len);
- RARRAY(ary2)->len = len;
+/*
+ * call-seq:
+ * array.unshift(*objects) -> self
+ *
+ * Prepends the given +objects+ to +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.unshift(:bam, :bat) # => [:bam, :bat, :foo, "bar", 2]
+ *
+ * Array#prepend is an alias for Array#unshift.
+ *
+ * Related: #push, #pop, #shift.
+ */
- return ary2;
+static VALUE
+rb_ary_unshift_m(int argc, VALUE *argv, VALUE ary)
+{
+ long len = RARRAY_LEN(ary);
+ VALUE target_ary;
+
+ if (argc == 0) {
+ rb_ary_modify_check(ary);
+ return ary;
+ }
+
+ target_ary = ary_ensure_room_for_unshift(ary, argc);
+ ary_memcpy0(ary, 0, argc, argv, target_ary);
+ ARY_SET_LEN(ary, len + argc);
+ return ary;
}
VALUE
-rb_ary_aref(argc, argv, ary)
- int argc;
- VALUE *argv;
- VALUE ary;
+rb_ary_unshift(VALUE ary, VALUE item)
{
- VALUE arg1, arg2;
- long beg, len;
+ return rb_ary_unshift_m(1,&item,ary);
+}
- if (rb_scan_args(argc, argv, "11", &arg1, &arg2) == 2) {
- beg = NUM2LONG(arg1);
- len = NUM2LONG(arg2);
- if (beg < 0) {
- beg = RARRAY(ary)->len + beg;
- }
- return rb_ary_subseq(ary, beg, len);
+/* faster version - use this if you don't need to treat negative offset */
+static inline VALUE
+rb_ary_elt(VALUE ary, long offset)
+{
+ long len = RARRAY_LEN(ary);
+ if (len == 0) return Qnil;
+ if (offset < 0 || len <= offset) {
+ return Qnil;
}
+ return RARRAY_AREF(ary, offset);
+}
- /* special case - speeding up */
- if (FIXNUM_P(arg1)) {
- return rb_ary_entry(ary, FIX2LONG(arg1));
- }
- else if (TYPE(arg1) == T_BIGNUM) {
- rb_raise(rb_eIndexError, "index too big");
+VALUE
+rb_ary_entry(VALUE ary, long offset)
+{
+ return rb_ary_entry_internal(ary, offset);
+}
+
+VALUE
+rb_ary_subseq_step(VALUE ary, long beg, long len, long step)
+{
+ VALUE klass;
+ long alen = RARRAY_LEN(ary);
+
+ if (beg > alen) return Qnil;
+ if (beg < 0 || len < 0) return Qnil;
+
+ if (alen < len || alen < beg + len) {
+ len = alen - beg;
}
- else {
- /* check if idx is Range */
- switch (rb_range_beg_len(arg1, &beg, &len, RARRAY(ary)->len, 0)) {
- case Qfalse:
- break;
- case Qnil:
- return Qnil;
- default:
- return rb_ary_subseq(ary, beg, len);
- }
+ klass = rb_cArray;
+ if (len == 0) return ary_new(klass, 0);
+ if (step == 0)
+ rb_raise(rb_eArgError, "slice step cannot be zero");
+ if (step == 1)
+ return ary_make_partial(ary, klass, beg, len);
+ else
+ return ary_make_partial_step(ary, klass, beg, len, step);
+}
+
+VALUE
+rb_ary_subseq(VALUE ary, long beg, long len)
+{
+ return rb_ary_subseq_step(ary, beg, len, 1);
+}
+
+static VALUE rb_ary_aref2(VALUE ary, VALUE b, VALUE e);
+
+/*
+ * call-seq:
+ * array[index] -> object or nil
+ * array[start, length] -> object or nil
+ * array[range] -> object or nil
+ * array[aseq] -> object or nil
+ * array.slice(index) -> object or nil
+ * array.slice(start, length) -> object or nil
+ * array.slice(range) -> object or nil
+ * array.slice(aseq) -> object or nil
+ *
+ * Returns elements from +self+; does not modify +self+.
+ *
+ * When a single \Integer argument +index+ is given, returns the element at offset +index+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[0] # => :foo
+ * a[2] # => 2
+ * a # => [:foo, "bar", 2]
+ *
+ * If +index+ is negative, counts relative to the end of +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[-1] # => 2
+ * a[-2] # => "bar"
+ *
+ * If +index+ is out of range, returns +nil+.
+ *
+ * When two \Integer arguments +start+ and +length+ are given,
+ * returns a new \Array of size +length+ containing successive elements beginning at offset +start+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[0, 2] # => [:foo, "bar"]
+ * a[1, 2] # => ["bar", 2]
+ *
+ * If <tt>start + length</tt> is greater than <tt>self.length</tt>,
+ * returns all elements from offset +start+ to the end:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[0, 4] # => [:foo, "bar", 2]
+ * a[1, 3] # => ["bar", 2]
+ * a[2, 2] # => [2]
+ *
+ * If <tt>start == self.size</tt> and <tt>length >= 0</tt>,
+ * returns a new empty \Array.
+ *
+ * If +length+ is negative, returns +nil+.
+ *
+ * When a single \Range argument +range+ is given,
+ * treats <tt>range.min</tt> as +start+ above
+ * and <tt>range.size</tt> as +length+ above:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[0..1] # => [:foo, "bar"]
+ * a[1..2] # => ["bar", 2]
+ *
+ * Special case: If <tt>range.start == a.size</tt>, returns a new empty \Array.
+ *
+ * If <tt>range.end</tt> is negative, calculates the end index from the end:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[0..-1] # => [:foo, "bar", 2]
+ * a[0..-2] # => [:foo, "bar"]
+ * a[0..-3] # => [:foo]
+ *
+ * If <tt>range.start</tt> is negative, calculates the start index from the end:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[-1..2] # => [2]
+ * a[-2..2] # => ["bar", 2]
+ * a[-3..2] # => [:foo, "bar", 2]
+ *
+ * If <tt>range.start</tt> is larger than the array size, returns +nil+.
+ *
+ * a = [:foo, 'bar', 2]
+ * a[4..1] # => nil
+ * a[4..0] # => nil
+ * a[4..-1] # => nil
+ *
+ * When a single Enumerator::ArithmeticSequence argument +aseq+ is given,
+ * returns an \Array of elements corresponding to the indexes produced by
+ * the sequence.
+ *
+ * a = ['--', 'data1', '--', 'data2', '--', 'data3']
+ * a[(1..).step(2)] # => ["data1", "data2", "data3"]
+ *
+ * Unlike slicing with range, if the start or the end of the arithmetic sequence
+ * is larger than array size, throws RangeError.
+ *
+ * a = ['--', 'data1', '--', 'data2', '--', 'data3']
+ * a[(1..11).step(2)]
+ * # RangeError (((1..11).step(2)) out of range)
+ * a[(7..).step(2)]
+ * # RangeError (((7..).step(2)) out of range)
+ *
+ * If given a single argument, and its type is not one of the listed, tries to
+ * convert it to Integer, and raises if it is impossible:
+ *
+ * a = [:foo, 'bar', 2]
+ * # Raises TypeError (no implicit conversion of Symbol into Integer):
+ * a[:foo]
+ *
+ * Array#slice is an alias for Array#[].
+ */
+
+VALUE
+rb_ary_aref(int argc, const VALUE *argv, VALUE ary)
+{
+ rb_check_arity(argc, 1, 2);
+ if (argc == 2) {
+ return rb_ary_aref2(ary, argv[0], argv[1]);
}
- return rb_ary_entry(ary, NUM2LONG(arg1));
+ return rb_ary_aref1(ary, argv[0]);
}
static VALUE
-rb_ary_at(ary, pos)
- VALUE ary, pos;
+rb_ary_aref2(VALUE ary, VALUE b, VALUE e)
+{
+ long beg = NUM2LONG(b);
+ long len = NUM2LONG(e);
+ if (beg < 0) {
+ beg += RARRAY_LEN(ary);
+ }
+ return rb_ary_subseq(ary, beg, len);
+}
+
+MJIT_FUNC_EXPORTED VALUE
+rb_ary_aref1(VALUE ary, VALUE arg)
+{
+ long beg, len, step;
+
+ /* special case - speeding up */
+ if (FIXNUM_P(arg)) {
+ return rb_ary_entry(ary, FIX2LONG(arg));
+ }
+ /* check if idx is Range or ArithmeticSequence */
+ switch (rb_arithmetic_sequence_beg_len_step(arg, &beg, &len, &step, RARRAY_LEN(ary), 0)) {
+ case Qfalse:
+ break;
+ case Qnil:
+ return Qnil;
+ default:
+ return rb_ary_subseq_step(ary, beg, len, step);
+ }
+
+ return rb_ary_entry(ary, NUM2LONG(arg));
+}
+
+/*
+ * call-seq:
+ * array.at(index) -> object
+ *
+ * Returns the element at \Integer offset +index+; does not modify +self+.
+ * a = [:foo, 'bar', 2]
+ * a.at(0) # => :foo
+ * a.at(2) # => 2
+ *
+ */
+
+VALUE
+rb_ary_at(VALUE ary, VALUE pos)
{
return rb_ary_entry(ary, NUM2LONG(pos));
}
+/*
+ * call-seq:
+ * array.first -> object or nil
+ * array.first(n) -> new_array
+ *
+ * Returns elements from +self+; does not modify +self+.
+ *
+ * When no argument is given, returns the first element:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.first # => :foo
+ * a # => [:foo, "bar", 2]
+ *
+ * If +self+ is empty, returns +nil+.
+ *
+ * When non-negative \Integer argument +n+ is given,
+ * returns the first +n+ elements in a new \Array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.first(2) # => [:foo, "bar"]
+ *
+ * If <tt>n >= array.size</tt>, returns all elements:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.first(50) # => [:foo, "bar", 2]
+ *
+ * If <tt>n == 0</tt> returns an new empty \Array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.first(0) # []
+ *
+ * Related: #last.
+ */
static VALUE
-rb_ary_first(ary)
- VALUE ary;
+rb_ary_first(int argc, VALUE *argv, VALUE ary)
{
- if (RARRAY(ary)->len == 0) return Qnil;
- return RARRAY(ary)->ptr[0];
+ if (argc == 0) {
+ if (RARRAY_LEN(ary) == 0) return Qnil;
+ return RARRAY_AREF(ary, 0);
+ }
+ else {
+ return ary_take_first_or_last(argc, argv, ary, ARY_TAKE_FIRST);
+ }
+}
+
+/*
+ * call-seq:
+ * array.last -> object or nil
+ * array.last(n) -> new_array
+ *
+ * Returns elements from +self+; +self+ is not modified.
+ *
+ * When no argument is given, returns the last element:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.last # => 2
+ * a # => [:foo, "bar", 2]
+ *
+ * If +self+ is empty, returns +nil+.
+ *
+ * When non-negative \Integer argument +n+ is given,
+ * returns the last +n+ elements in a new \Array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.last(2) # => ["bar", 2]
+ *
+ * If <tt>n >= array.size</tt>, returns all elements:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.last(50) # => [:foo, "bar", 2]
+ *
+ * If <tt>n == 0</tt>, returns an new empty \Array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.last(0) # []
+ *
+ * Related: #first.
+ */
+
+VALUE
+rb_ary_last(int argc, const VALUE *argv, VALUE ary)
+{
+ if (argc == 0) {
+ long len = RARRAY_LEN(ary);
+ if (len == 0) return Qnil;
+ return RARRAY_AREF(ary, len-1);
+ }
+ else {
+ return ary_take_first_or_last(argc, argv, ary, ARY_TAKE_LAST);
+ }
}
+/*
+ * call-seq:
+ * array.fetch(index) -> element
+ * array.fetch(index, default_value) -> element
+ * array.fetch(index) {|index| ... } -> element
+ *
+ * Returns the element at offset +index+.
+ *
+ * With the single \Integer argument +index+,
+ * returns the element at offset +index+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.fetch(1) # => "bar"
+ *
+ * If +index+ is negative, counts from the end of the array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.fetch(-1) # => 2
+ * a.fetch(-2) # => "bar"
+ *
+ * With arguments +index+ and +default_value+,
+ * returns the element at offset +index+ if index is in range,
+ * otherwise returns +default_value+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.fetch(1, nil) # => "bar"
+ *
+ * With argument +index+ and a block,
+ * returns the element at offset +index+ if index is in range
+ * (and the block is not called); otherwise calls the block with index and returns its return value:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.fetch(1) {|index| raise 'Cannot happen' } # => "bar"
+ * a.fetch(50) {|index| "Value for #{index}" } # => "Value for 50"
+ *
+ */
+
static VALUE
-rb_ary_last(ary)
- VALUE ary;
+rb_ary_fetch(int argc, VALUE *argv, VALUE ary)
{
- if (RARRAY(ary)->len == 0) return Qnil;
- return RARRAY(ary)->ptr[RARRAY(ary)->len-1];
+ VALUE pos, ifnone;
+ long block_given;
+ long idx;
+
+ rb_scan_args(argc, argv, "11", &pos, &ifnone);
+ block_given = rb_block_given_p();
+ if (block_given && argc == 2) {
+ rb_warn("block supersedes default value argument");
+ }
+ idx = NUM2LONG(pos);
+
+ if (idx < 0) {
+ idx += RARRAY_LEN(ary);
+ }
+ if (idx < 0 || RARRAY_LEN(ary) <= idx) {
+ if (block_given) return rb_yield(pos);
+ if (argc == 1) {
+ rb_raise(rb_eIndexError, "index %ld outside of array bounds: %ld...%ld",
+ idx - (idx < 0 ? RARRAY_LEN(ary) : 0), -RARRAY_LEN(ary), RARRAY_LEN(ary));
+ }
+ return ifnone;
+ }
+ return RARRAY_AREF(ary, idx);
}
+/*
+ * call-seq:
+ * array.index(object) -> integer or nil
+ * array.index {|element| ... } -> integer or nil
+ * array.index -> new_enumerator
+ *
+ * Returns the index of a specified element.
+ *
+ * When argument +object+ is given but no block,
+ * returns the index of the first element +element+
+ * for which <tt>object == element</tt>:
+ *
+ * a = [:foo, 'bar', 2, 'bar']
+ * a.index('bar') # => 1
+ *
+ * Returns +nil+ if no such element found.
+ *
+ * When both argument +object+ and a block are given,
+ * calls the block with each successive element;
+ * returns the index of the first element for which the block returns a truthy value:
+ *
+ * a = [:foo, 'bar', 2, 'bar']
+ * a.index {|element| element == 'bar' } # => 1
+ *
+ * Returns +nil+ if the block never returns a truthy value.
+ *
+ * When neither an argument nor a block is given, returns a new Enumerator:
+ *
+ * a = [:foo, 'bar', 2]
+ * e = a.index
+ * e # => #<Enumerator: [:foo, "bar", 2]:index>
+ * e.each {|element| element == 'bar' } # => 1
+ *
+ * Array#find_index is an alias for Array#index.
+ *
+ * Related: #rindex.
+ */
+
static VALUE
-rb_ary_index(ary, val)
- VALUE ary;
- VALUE val;
+rb_ary_index(int argc, VALUE *argv, VALUE ary)
{
+ VALUE val;
long i;
- for (i=0; i<RARRAY(ary)->len; i++) {
- if (rb_equal(RARRAY(ary)->ptr[i], val))
- return INT2NUM(i);
+ if (argc == 0) {
+ RETURN_ENUMERATOR(ary, 0, 0);
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
+ return LONG2NUM(i);
+ }
+ }
+ return Qnil;
+ }
+ rb_check_arity(argc, 0, 1);
+ val = argv[0];
+ if (rb_block_given_p())
+ rb_warn("given block not used");
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ VALUE e = RARRAY_AREF(ary, i);
+ if (rb_equal(e, val)) {
+ return LONG2NUM(i);
+ }
}
return Qnil;
}
+/*
+ * call-seq:
+ * array.rindex(object) -> integer or nil
+ * array.rindex {|element| ... } -> integer or nil
+ * array.rindex -> new_enumerator
+ *
+ * Returns the index of the last element for which <tt>object == element</tt>.
+ *
+ * When argument +object+ is given but no block, returns the index of the last such element found:
+ *
+ * a = [:foo, 'bar', 2, 'bar']
+ * a.rindex('bar') # => 3
+ *
+ * Returns +nil+ if no such object found.
+ *
+ * When a block is given but no argument, calls the block with each successive element;
+ * returns the index of the last element for which the block returns a truthy value:
+ *
+ * a = [:foo, 'bar', 2, 'bar']
+ * a.rindex {|element| element == 'bar' } # => 3
+ *
+ * Returns +nil+ if the block never returns a truthy value.
+ *
+ * When neither an argument nor a block is given, returns a new \Enumerator:
+ *
+ * a = [:foo, 'bar', 2, 'bar']
+ * e = a.rindex
+ * e # => #<Enumerator: [:foo, "bar", 2, "bar"]:rindex>
+ * e.each {|element| element == 'bar' } # => 3
+ *
+ * Related: #index.
+ */
+
static VALUE
-rb_ary_rindex(ary, val)
- VALUE ary;
- VALUE val;
+rb_ary_rindex(int argc, VALUE *argv, VALUE ary)
{
- long i = RARRAY(ary)->len;
+ VALUE val;
+ long i = RARRAY_LEN(ary), len;
+ if (argc == 0) {
+ RETURN_ENUMERATOR(ary, 0, 0);
+ while (i--) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i))))
+ return LONG2NUM(i);
+ if (i > (len = RARRAY_LEN(ary))) {
+ i = len;
+ }
+ }
+ return Qnil;
+ }
+ rb_check_arity(argc, 0, 1);
+ val = argv[0];
+ if (rb_block_given_p())
+ rb_warn("given block not used");
while (i--) {
- if (rb_equal(RARRAY(ary)->ptr[i], val))
- return INT2NUM(i);
+ VALUE e = RARRAY_AREF(ary, i);
+ if (rb_equal(e, val)) {
+ return LONG2NUM(i);
+ }
+ if (i > RARRAY_LEN(ary)) {
+ break;
+ }
}
return Qnil;
}
-static VALUE
-rb_ary_indexes(argc, argv, ary)
- int argc;
- VALUE *argv;
- VALUE ary;
+VALUE
+rb_ary_to_ary(VALUE obj)
{
- VALUE new_ary;
- long i;
-
- new_ary = rb_ary_new2(argc);
- for (i=0; i<argc; i++) {
- rb_ary_push(new_ary, rb_ary_aref(1, argv+i, ary));
- }
+ VALUE tmp = rb_check_array_type(obj);
- return new_ary;
+ if (!NIL_P(tmp)) return tmp;
+ return rb_ary_new3(1, obj);
}
static void
-rb_ary_replace(ary, beg, len, rpl)
- VALUE ary, rpl;
- long beg, len;
+rb_ary_splice(VALUE ary, long beg, long len, const VALUE *rptr, long rlen)
{
- if (len < 0) rb_raise(rb_eIndexError, "negative length %d", len);
+ long olen;
+ long rofs;
+
+ if (len < 0) rb_raise(rb_eIndexError, "negative length (%ld)", len);
+ olen = RARRAY_LEN(ary);
if (beg < 0) {
- beg += RARRAY(ary)->len;
+ beg += olen;
+ if (beg < 0) {
+ rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
+ beg - olen, -olen);
+ }
}
- if (beg < 0) {
- beg -= RARRAY(ary)->len;
- rb_raise(rb_eIndexError, "index %d out of array", beg);
+ if (olen < len || olen < beg + len) {
+ len = olen - beg;
}
- if (beg + len > RARRAY(ary)->len) {
- len = RARRAY(ary)->len - beg;
+
+ {
+ const VALUE *optr = RARRAY_CONST_PTR_TRANSIENT(ary);
+ rofs = (rptr >= optr && rptr < optr + olen) ? rptr - optr : -1;
}
- if (NIL_P(rpl)) {
- rpl = rb_ary_new2(0);
+ if (beg >= olen) {
+ VALUE target_ary;
+ if (beg > ARY_MAX_SIZE - rlen) {
+ rb_raise(rb_eIndexError, "index %ld too big", beg);
+ }
+ target_ary = ary_ensure_room_for_push(ary, rlen-len); /* len is 0 or negative */
+ len = beg + rlen;
+ ary_mem_clear(ary, olen, beg - olen);
+ if (rlen > 0) {
+ if (rofs != -1) rptr = RARRAY_CONST_PTR_TRANSIENT(ary) + rofs;
+ ary_memcpy0(ary, beg, rlen, rptr, target_ary);
+ }
+ ARY_SET_LEN(ary, len);
}
- else if (TYPE(rpl) != T_ARRAY) {
- rpl = rb_ary_new3(1, rpl);
+ else {
+ long alen;
+
+ if (olen - len > ARY_MAX_SIZE - rlen) {
+ rb_raise(rb_eIndexError, "index %ld too big", olen + rlen - len);
+ }
+ rb_ary_modify(ary);
+ alen = olen + rlen - len;
+ if (alen >= ARY_CAPA(ary)) {
+ ary_double_capa(ary, alen);
+ }
+
+ if (len != rlen) {
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr,
+ MEMMOVE(ptr + beg + rlen, ptr + beg + len,
+ VALUE, olen - (beg + len)));
+ ARY_SET_LEN(ary, alen);
+ }
+ if (rlen > 0) {
+ if (rofs != -1) rptr = RARRAY_CONST_PTR_TRANSIENT(ary) + rofs;
+ /* give up wb-protected ary */
+ RB_OBJ_WB_UNPROTECT_FOR(ARRAY, ary);
+
+ /* do not use RARRAY_PTR() because it can causes GC.
+ * ary can contain T_NONE object because it is not cleared.
+ */
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr,
+ MEMMOVE(ptr + beg, rptr, VALUE, rlen));
+ }
}
+}
+
+void
+rb_ary_set_len(VALUE ary, long len)
+{
+ long capa;
+
+ rb_ary_modify_check(ary);
+ if (ARY_SHARED_P(ary)) {
+ rb_raise(rb_eRuntimeError, "can't set length of shared ");
+ }
+ if (len > (capa = (long)ARY_CAPA(ary))) {
+ rb_bug("probable buffer overflow: %ld for %ld", len, capa);
+ }
+ ARY_SET_LEN(ary, len);
+}
+
+VALUE
+rb_ary_resize(VALUE ary, long len)
+{
+ long olen;
rb_ary_modify(ary);
- if (beg >= RARRAY(ary)->len) {
- len = beg + RARRAY(rpl)->len;
- if (len >= RARRAY(ary)->capa) {
- RARRAY(ary)->capa=len;
- REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->capa);
- }
- rb_mem_clear(RARRAY(ary)->ptr+RARRAY(ary)->len, beg-RARRAY(ary)->len);
- MEMCPY(RARRAY(ary)->ptr+beg, RARRAY(rpl)->ptr, VALUE, RARRAY(rpl)->len);
- RARRAY(ary)->len = len;
+ olen = RARRAY_LEN(ary);
+ if (len == olen) return ary;
+ if (len > ARY_MAX_SIZE) {
+ rb_raise(rb_eIndexError, "index %ld too big", len);
}
- else {
- long alen;
+ if (len > olen) {
+ if (len >= ARY_CAPA(ary)) {
+ ary_double_capa(ary, len);
+ }
+ ary_mem_clear(ary, olen, len - olen);
+ ARY_SET_LEN(ary, len);
+ }
+ else if (ARY_EMBED_P(ary)) {
+ ARY_SET_EMBED_LEN(ary, len);
+ }
+ else if (len <= ary_embed_capa(ary)) {
+ const VALUE *ptr = ARY_HEAP_PTR(ary);
+ long ptr_capa = ARY_HEAP_SIZE(ary);
+ bool is_malloc_ptr = !ARY_SHARED_P(ary) && !RARRAY_TRANSIENT_P(ary);
- if (beg + len > RARRAY(ary)->len) {
- len = RARRAY(ary)->len - beg;
- }
+ FL_UNSET(ary, RARRAY_TRANSIENT_FLAG);
+ FL_SET_EMBED(ary);
- alen = RARRAY(ary)->len + RARRAY(rpl)->len - len;
- if (alen >= RARRAY(ary)->capa) {
- RARRAY(ary)->capa=alen;
- REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->capa);
- }
+ MEMCPY((VALUE *)ARY_EMBED_PTR(ary), ptr, VALUE, len); /* WB: no new reference */
+ ARY_SET_EMBED_LEN(ary, len);
- if (len != RARRAY(rpl)->len) {
- MEMMOVE(RARRAY(ary)->ptr+beg+RARRAY(rpl)->len, RARRAY(ary)->ptr+beg+len,
- VALUE, RARRAY(ary)->len-(beg+len));
- RARRAY(ary)->len = alen;
- }
- MEMCPY(RARRAY(ary)->ptr+beg, RARRAY(rpl)->ptr, VALUE, RARRAY(rpl)->len);
+ if (is_malloc_ptr) ruby_sized_xfree((void *)ptr, ptr_capa);
+ }
+ else {
+ if (olen > len + ARY_DEFAULT_SIZE) {
+ size_t new_capa = ary_heap_realloc(ary, len);
+ ARY_SET_CAPA(ary, new_capa);
+ }
+ ARY_SET_HEAP_LEN(ary, len);
}
+ ary_verify(ary);
+ return ary;
}
static VALUE
-rb_ary_aset(argc, argv, ary)
- int argc;
- VALUE *argv;
- VALUE ary;
+ary_aset_by_rb_ary_store(VALUE ary, long key, VALUE val)
+{
+ rb_ary_store(ary, key, val);
+ return val;
+}
+
+static VALUE
+ary_aset_by_rb_ary_splice(VALUE ary, long beg, long len, VALUE val)
+{
+ VALUE rpl = rb_ary_to_ary(val);
+ rb_ary_splice(ary, beg, len, RARRAY_CONST_PTR_TRANSIENT(rpl), RARRAY_LEN(rpl));
+ RB_GC_GUARD(rpl);
+ return val;
+}
+
+/*
+ * call-seq:
+ * array[index] = object -> object
+ * array[start, length] = object -> object
+ * array[range] = object -> object
+ *
+ * Assigns elements in +self+; returns the given +object+.
+ *
+ * When \Integer argument +index+ is given, assigns +object+ to an element in +self+.
+ *
+ * If +index+ is non-negative, assigns +object+ the element at offset +index+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[0] = 'foo' # => "foo"
+ * a # => ["foo", "bar", 2]
+ *
+ * If +index+ is greater than <tt>self.length</tt>, extends the array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[7] = 'foo' # => "foo"
+ * a # => [:foo, "bar", 2, nil, nil, nil, nil, "foo"]
+ *
+ * If +index+ is negative, counts backwards from the end of the array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[-1] = 'two' # => "two"
+ * a # => [:foo, "bar", "two"]
+ *
+ * When \Integer arguments +start+ and +length+ are given and +object+ is not an \Array,
+ * removes <tt>length - 1</tt> elements beginning at offset +start+,
+ * and assigns +object+ at offset +start+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[0, 2] = 'foo' # => "foo"
+ * a # => ["foo", 2]
+ *
+ * If +start+ is negative, counts backwards from the end of the array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[-2, 2] = 'foo' # => "foo"
+ * a # => [:foo, "foo"]
+ *
+ * If +start+ is non-negative and outside the array (<tt> >= self.size</tt>),
+ * extends the array with +nil+, assigns +object+ at offset +start+,
+ * and ignores +length+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[6, 50] = 'foo' # => "foo"
+ * a # => [:foo, "bar", 2, nil, nil, nil, "foo"]
+ *
+ * If +length+ is zero, shifts elements at and following offset +start+
+ * and assigns +object+ at offset +start+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[1, 0] = 'foo' # => "foo"
+ * a # => [:foo, "foo", "bar", 2]
+ *
+ * If +length+ is too large for the existing array, does not extend the array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[1, 5] = 'foo' # => "foo"
+ * a # => [:foo, "foo"]
+ *
+ * When \Range argument +range+ is given and +object+ is an \Array,
+ * removes <tt>length - 1</tt> elements beginning at offset +start+,
+ * and assigns +object+ at offset +start+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[0..1] = 'foo' # => "foo"
+ * a # => ["foo", 2]
+ *
+ * if <tt>range.begin</tt> is negative, counts backwards from the end of the array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[-2..2] = 'foo' # => "foo"
+ * a # => [:foo, "foo"]
+ *
+ * If the array length is less than <tt>range.begin</tt>,
+ * assigns +object+ at offset <tt>range.begin</tt>, and ignores +length+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[6..50] = 'foo' # => "foo"
+ * a # => [:foo, "bar", 2, nil, nil, nil, "foo"]
+ *
+ * If <tt>range.end</tt> is zero, shifts elements at and following offset +start+
+ * and assigns +object+ at offset +start+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[1..0] = 'foo' # => "foo"
+ * a # => [:foo, "foo", "bar", 2]
+ *
+ * If <tt>range.end</tt> is negative, assigns +object+ at offset +start+,
+ * retains <tt>range.end.abs -1</tt> elements past that, and removes those beyond:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[1..-1] = 'foo' # => "foo"
+ * a # => [:foo, "foo"]
+ * a = [:foo, 'bar', 2]
+ * a[1..-2] = 'foo' # => "foo"
+ * a # => [:foo, "foo", 2]
+ * a = [:foo, 'bar', 2]
+ * a[1..-3] = 'foo' # => "foo"
+ * a # => [:foo, "foo", "bar", 2]
+ * a = [:foo, 'bar', 2]
+ *
+ * If <tt>range.end</tt> is too large for the existing array,
+ * replaces array elements, but does not extend the array with +nil+ values:
+ *
+ * a = [:foo, 'bar', 2]
+ * a[1..5] = 'foo' # => "foo"
+ * a # => [:foo, "foo"]
+ *
+ */
+
+static VALUE
+rb_ary_aset(int argc, VALUE *argv, VALUE ary)
{
long offset, beg, len;
+ rb_check_arity(argc, 2, 3);
+ rb_ary_modify_check(ary);
if (argc == 3) {
- rb_ary_replace(ary, NUM2LONG(argv[0]), NUM2LONG(argv[1]), argv[2]);
- return argv[2];
- }
- if (argc != 2) {
- rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)", argc);
+ beg = NUM2LONG(argv[0]);
+ len = NUM2LONG(argv[1]);
+ return ary_aset_by_rb_ary_splice(ary, beg, len, argv[2]);
}
if (FIXNUM_P(argv[0])) {
- offset = FIX2LONG(argv[0]);
- goto fixnum;
- }
- else if (rb_range_beg_len(argv[0], &beg, &len, RARRAY(ary)->len, 1)) {
- /* check if idx is Range */
- rb_ary_replace(ary, beg, len, argv[1]);
- return argv[1];
+ offset = FIX2LONG(argv[0]);
+ return ary_aset_by_rb_ary_store(ary, offset, argv[1]);
}
- if (TYPE(argv[0]) == T_BIGNUM) {
- rb_raise(rb_eIndexError, "index too big");
+ if (rb_range_beg_len(argv[0], &beg, &len, RARRAY_LEN(ary), 1)) {
+ /* check if idx is Range */
+ return ary_aset_by_rb_ary_splice(ary, beg, len, argv[1]);
}
offset = NUM2LONG(argv[0]);
- fixnum:
- rb_ary_store(ary, offset, argv[1]);
- return argv[1];
+ return ary_aset_by_rb_ary_store(ary, offset, argv[1]);
+}
+
+/*
+ * call-seq:
+ * array.insert(index, *objects) -> self
+ *
+ * Inserts given +objects+ before or after the element at \Integer index +offset+;
+ * returns +self+.
+ *
+ * When +index+ is non-negative, inserts all given +objects+
+ * before the element at offset +index+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.insert(1, :bat, :bam) # => [:foo, :bat, :bam, "bar", 2]
+ *
+ * Extends the array if +index+ is beyond the array (<tt>index >= self.size</tt>):
+ *
+ * a = [:foo, 'bar', 2]
+ * a.insert(5, :bat, :bam)
+ * a # => [:foo, "bar", 2, nil, nil, :bat, :bam]
+ *
+ * Does nothing if no objects given:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.insert(1)
+ * a.insert(50)
+ * a.insert(-50)
+ * a # => [:foo, "bar", 2]
+ *
+ * When +index+ is negative, inserts all given +objects+
+ * _after_ the element at offset <tt>index+self.size</tt>:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.insert(-2, :bat, :bam)
+ * a # => [:foo, "bar", :bat, :bam, 2]
+ *
+ */
+
+static VALUE
+rb_ary_insert(int argc, VALUE *argv, VALUE ary)
+{
+ long pos;
+
+ rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS);
+ rb_ary_modify_check(ary);
+ pos = NUM2LONG(argv[0]);
+ if (argc == 1) return ary;
+ if (pos == -1) {
+ pos = RARRAY_LEN(ary);
+ }
+ else if (pos < 0) {
+ long minpos = -RARRAY_LEN(ary) - 1;
+ if (pos < minpos) {
+ rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
+ pos, minpos);
+ }
+ pos++;
+ }
+ rb_ary_splice(ary, pos, 0, argv + 1, argc - 1);
+ return ary;
+}
+
+static VALUE
+rb_ary_length(VALUE ary);
+
+static VALUE
+ary_enum_length(VALUE ary, VALUE args, VALUE eobj)
+{
+ return rb_ary_length(ary);
}
+/*
+ * call-seq:
+ * array.each {|element| ... } -> self
+ * array.each -> Enumerator
+ *
+ * Iterates over array elements.
+ *
+ * When a block given, passes each successive array element to the block;
+ * returns +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.each {|element| puts "#{element.class} #{element}" }
+ *
+ * Output:
+ *
+ * Symbol foo
+ * String bar
+ * Integer 2
+ *
+ * Allows the array to be modified during iteration:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.each {|element| puts element; a.clear if element.to_s.start_with?('b') }
+ *
+ * Output:
+ *
+ * foo
+ * bar
+ *
+ * When no block given, returns a new \Enumerator:
+ * a = [:foo, 'bar', 2]
+ *
+ * e = a.each
+ * e # => #<Enumerator: [:foo, "bar", 2]:each>
+ * a1 = e.each {|element| puts "#{element.class} #{element}" }
+ *
+ * Output:
+ *
+ * Symbol foo
+ * String bar
+ * Integer 2
+ *
+ * Related: #each_index, #reverse_each.
+ */
+
VALUE
-rb_ary_each(ary)
- VALUE ary;
+rb_ary_each(VALUE ary)
{
long i;
-
- for (i=0; i<RARRAY(ary)->len; i++) {
- rb_yield(RARRAY(ary)->ptr[i]);
+ ary_verify(ary);
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ rb_yield(RARRAY_AREF(ary, i));
}
return ary;
}
+/*
+ * call-seq:
+ * array.each_index {|index| ... } -> self
+ * array.each_index -> Enumerator
+ *
+ * Iterates over array indexes.
+ *
+ * When a block given, passes each successive array index to the block;
+ * returns +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.each_index {|index| puts "#{index} #{a[index]}" }
+ *
+ * Output:
+ *
+ * 0 foo
+ * 1 bar
+ * 2 2
+ *
+ * Allows the array to be modified during iteration:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.each_index {|index| puts index; a.clear if index > 0 }
+ *
+ * Output:
+ *
+ * 0
+ * 1
+ *
+ * When no block given, returns a new \Enumerator:
+ *
+ * a = [:foo, 'bar', 2]
+ * e = a.each_index
+ * e # => #<Enumerator: [:foo, "bar", 2]:each_index>
+ * a1 = e.each {|index| puts "#{index} #{a[index]}"}
+ *
+ * Output:
+ *
+ * 0 foo
+ * 1 bar
+ * 2 2
+ *
+ * Related: #each, #reverse_each.
+ */
+
static VALUE
-rb_ary_each_index(ary)
- VALUE ary;
+rb_ary_each_index(VALUE ary)
{
long i;
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
- for (i=0; i<RARRAY(ary)->len; i++) {
- rb_yield(INT2NUM(i));
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ rb_yield(LONG2NUM(i));
}
return ary;
}
+/*
+ * call-seq:
+ * array.reverse_each {|element| ... } -> self
+ * array.reverse_each -> Enumerator
+ *
+ * Iterates backwards over array elements.
+ *
+ * When a block given, passes, in reverse order, each element to the block;
+ * returns +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.reverse_each {|element| puts "#{element.class} #{element}" }
+ *
+ * Output:
+ *
+ * Integer 2
+ * String bar
+ * Symbol foo
+ *
+ * Allows the array to be modified during iteration:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.reverse_each {|element| puts element; a.clear if element.to_s.start_with?('b') }
+ *
+ * Output:
+ *
+ * 2
+ * bar
+ *
+ * When no block given, returns a new \Enumerator:
+ *
+ * a = [:foo, 'bar', 2]
+ * e = a.reverse_each
+ * e # => #<Enumerator: [:foo, "bar", 2]:reverse_each>
+ * a1 = e.each {|element| puts "#{element.class} #{element}" }
+ *
+ * Output:
+ *
+ * Integer 2
+ * String bar
+ * Symbol foo
+ *
+ * Related: #each, #each_index.
+ */
+
static VALUE
-rb_ary_reverse_each(ary)
- VALUE ary;
+rb_ary_reverse_each(VALUE ary)
{
- long len = RARRAY(ary)->len;
+ long len;
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ len = RARRAY_LEN(ary);
while (len--) {
- rb_yield(RARRAY(ary)->ptr[len]);
+ long nlen;
+ rb_yield(RARRAY_AREF(ary, len));
+ nlen = RARRAY_LEN(ary);
+ if (nlen < len) {
+ len = nlen;
+ }
}
return ary;
}
+/*
+ * call-seq:
+ * array.length -> an_integer
+ *
+ * Returns the count of elements in +self+.
+ */
+
static VALUE
-rb_ary_length(ary)
- VALUE ary;
+rb_ary_length(VALUE ary)
{
- return INT2NUM(RARRAY(ary)->len);
+ long len = RARRAY_LEN(ary);
+ return LONG2NUM(len);
}
+/*
+ * call-seq:
+ * array.empty? -> true or false
+ *
+ * Returns +true+ if the count of elements in +self+ is zero,
+ * +false+ otherwise.
+ */
+
static VALUE
-rb_ary_empty_p(ary)
- VALUE ary;
+rb_ary_empty_p(VALUE ary)
{
- if (RARRAY(ary)->len == 0)
- return Qtrue;
- return Qfalse;
+ return RBOOL(RARRAY_LEN(ary) == 0);
}
-static VALUE
-rb_ary_clone(ary)
- VALUE ary;
+VALUE
+rb_ary_dup(VALUE ary)
{
- VALUE clone = rb_ary_new2(RARRAY(ary)->len);
-
- CLONESETUP(clone, ary);
- MEMCPY(RARRAY(clone)->ptr, RARRAY(ary)->ptr, VALUE, RARRAY(ary)->len);
- RARRAY(clone)->len = RARRAY(ary)->len;
- return clone;
+ long len = RARRAY_LEN(ary);
+ VALUE dup = rb_ary_new2(len);
+ ary_memcpy(dup, 0, len, RARRAY_CONST_PTR_TRANSIENT(ary));
+ ARY_SET_LEN(dup, len);
+
+ ary_verify(ary);
+ ary_verify(dup);
+ return dup;
}
-static VALUE
-to_ary(ary)
- VALUE ary;
+VALUE
+rb_ary_resurrect(VALUE ary)
{
- return rb_convert_type(ary, T_ARRAY, "Array", "to_ary");
+ return ary_make_partial(ary, rb_cArray, 0, RARRAY_LEN(ary));
}
extern VALUE rb_output_fs;
+static void ary_join_1(VALUE obj, VALUE ary, VALUE sep, long i, VALUE result, int *first);
+
static VALUE
-inspect_join(ary, arg)
- VALUE ary;
- VALUE *arg;
+recursive_join(VALUE obj, VALUE argp, int recur)
{
- return rb_ary_join(arg[0], arg[1]);
+ VALUE *arg = (VALUE *)argp;
+ VALUE ary = arg[0];
+ VALUE sep = arg[1];
+ VALUE result = arg[2];
+ int *first = (int *)arg[3];
+
+ if (recur) {
+ rb_raise(rb_eArgError, "recursive array join");
+ }
+ else {
+ ary_join_1(obj, ary, sep, 0, result, first);
+ }
+ return Qnil;
}
-VALUE
-rb_ary_join(ary, sep)
- VALUE ary, sep;
+static long
+ary_join_0(VALUE ary, VALUE sep, long max, VALUE result)
{
long i;
- int taint = 0;
- VALUE result, tmp;
-
- if (RARRAY(ary)->len == 0) return rb_str_new(0, 0);
- if (OBJ_TAINTED(ary)) taint = 1;
- if (OBJ_TAINTED(sep)) taint = 1;
-
- tmp = RARRAY(ary)->ptr[0];
- if (OBJ_TAINTED(tmp)) taint = 1;
- switch (TYPE(tmp)) {
- case T_STRING:
- result = rb_str_dup(tmp);
- break;
- case T_ARRAY:
- if (rb_inspecting_p(tmp)) {
- result = rb_str_new2("[...]");
- }
- else {
- VALUE args[2];
-
- args[0] = tmp;
- args[1] = sep;
- result = rb_protect_inspect(inspect_join, ary, (VALUE)args);
- }
- break;
- default:
- result = rb_str_dup(rb_obj_as_string(tmp));
- break;
- }
-
- for (i=1; i<RARRAY(ary)->len; i++) {
- tmp = RARRAY(ary)->ptr[i];
- switch (TYPE(tmp)) {
- case T_STRING:
- break;
- case T_ARRAY:
- if (rb_inspecting_p(tmp)) {
- tmp = rb_str_new2("[...]");
- }
- else {
- VALUE args[2];
-
- args[0] = tmp;
- args[1] = sep;
- tmp = rb_protect_inspect(inspect_join, ary, (VALUE)args);
- }
- break;
- default:
- tmp = rb_obj_as_string(tmp);
- }
- if (!NIL_P(sep)) rb_str_append(result, sep);
- rb_str_append(result, tmp);
- if (OBJ_TAINTED(tmp)) taint = 1;
- }
-
- if (taint) OBJ_TAINT(result);
+ VALUE val;
+
+ if (max > 0) rb_enc_copy(result, RARRAY_AREF(ary, 0));
+ for (i=0; i<max; i++) {
+ val = RARRAY_AREF(ary, i);
+ if (!RB_TYPE_P(val, T_STRING)) break;
+ if (i > 0 && !NIL_P(sep))
+ rb_str_buf_append(result, sep);
+ rb_str_buf_append(result, val);
+ }
+ return i;
+}
+
+static void
+ary_join_1_str(VALUE dst, VALUE src, int *first)
+{
+ rb_str_buf_append(dst, src);
+ if (*first) {
+ rb_enc_copy(dst, src);
+ *first = FALSE;
+ }
+}
+
+static void
+ary_join_1_ary(VALUE obj, VALUE ary, VALUE sep, VALUE result, VALUE val, int *first)
+{
+ if (val == ary) {
+ rb_raise(rb_eArgError, "recursive array join");
+ }
+ else {
+ VALUE args[4];
+
+ *first = FALSE;
+ args[0] = val;
+ args[1] = sep;
+ args[2] = result;
+ args[3] = (VALUE)first;
+ rb_exec_recursive(recursive_join, obj, (VALUE)args);
+ }
+}
+
+static void
+ary_join_1(VALUE obj, VALUE ary, VALUE sep, long i, VALUE result, int *first)
+{
+ VALUE val, tmp;
+
+ for (; i<RARRAY_LEN(ary); i++) {
+ if (i > 0 && !NIL_P(sep))
+ rb_str_buf_append(result, sep);
+
+ val = RARRAY_AREF(ary, i);
+ if (RB_TYPE_P(val, T_STRING)) {
+ ary_join_1_str(result, val, first);
+ }
+ else if (RB_TYPE_P(val, T_ARRAY)) {
+ ary_join_1_ary(val, ary, sep, result, val, first);
+ }
+ else if (!NIL_P(tmp = rb_check_string_type(val))) {
+ ary_join_1_str(result, tmp, first);
+ }
+ else if (!NIL_P(tmp = rb_check_array_type(val))) {
+ ary_join_1_ary(val, ary, sep, result, tmp, first);
+ }
+ else {
+ ary_join_1_str(result, rb_obj_as_string(val), first);
+ }
+ }
+}
+
+VALUE
+rb_ary_join(VALUE ary, VALUE sep)
+{
+ long len = 1, i;
+ VALUE val, tmp, result;
+
+ if (RARRAY_LEN(ary) == 0) return rb_usascii_str_new(0, 0);
+
+ if (!NIL_P(sep)) {
+ StringValue(sep);
+ len += RSTRING_LEN(sep) * (RARRAY_LEN(ary) - 1);
+ }
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ val = RARRAY_AREF(ary, i);
+ tmp = rb_check_string_type(val);
+
+ if (NIL_P(tmp) || tmp != val) {
+ int first;
+ long n = RARRAY_LEN(ary);
+ if (i > n) i = n;
+ result = rb_str_buf_new(len + (n-i)*10);
+ rb_enc_associate(result, rb_usascii_encoding());
+ i = ary_join_0(ary, sep, i, result);
+ first = i == 0;
+ ary_join_1(ary, ary, sep, i, result, &first);
+ return result;
+ }
+
+ len += RSTRING_LEN(tmp);
+ }
+
+ result = rb_str_new(0, len);
+ rb_str_set_len(result, 0);
+
+ ary_join_0(ary, sep, RARRAY_LEN(ary), result);
+
return result;
}
+/*
+ * call-seq:
+ * array.join ->new_string
+ * array.join(separator = $,) -> new_string
+ *
+ * Returns the new \String formed by joining the array elements after conversion.
+ * For each element +element+:
+ *
+ * - Uses <tt>element.to_s</tt> if +element+ is not a <tt>kind_of?(Array)</tt>.
+ * - Uses recursive <tt>element.join(separator)</tt> if +element+ is a <tt>kind_of?(Array)</tt>.
+ *
+ * With no argument, joins using the output field separator, <tt>$,</tt>:
+ *
+ * a = [:foo, 'bar', 2]
+ * $, # => nil
+ * a.join # => "foobar2"
+ *
+ * With \string argument +separator+, joins using that separator:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.join("\n") # => "foo\nbar\n2"
+ *
+ * Joins recursively for nested Arrays:
+ *
+ * a = [:foo, [:bar, [:baz, :bat]]]
+ * a.join # => "foobarbazbat"
+ *
+ */
static VALUE
-rb_ary_join_m(argc, argv, ary)
- int argc;
- VALUE *argv;
- VALUE ary;
+rb_ary_join_m(int argc, VALUE *argv, VALUE ary)
{
VALUE sep;
- rb_scan_args(argc, argv, "01", &sep);
- if (NIL_P(sep)) sep = rb_output_fs;
+ if (rb_check_arity(argc, 0, 1) == 0 || NIL_P(sep = argv[0])) {
+ sep = rb_output_fs;
+ if (!NIL_P(sep)) {
+ rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "$, is set to non-nil value");
+ }
+ }
+
return rb_ary_join(ary, sep);
}
-VALUE
-rb_ary_to_s(ary)
- VALUE ary;
+static VALUE
+inspect_ary(VALUE ary, VALUE dummy, int recur)
{
- VALUE str;
+ long i;
+ VALUE s, str;
- if (RARRAY(ary)->len == 0) return rb_str_new(0, 0);
- str = rb_ary_join(ary, rb_output_fs);
- if (NIL_P(str)) return rb_str_new(0, 0);
+ if (recur) return rb_usascii_str_new_cstr("[...]");
+ str = rb_str_buf_new2("[");
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ s = rb_inspect(RARRAY_AREF(ary, i));
+ if (i > 0) rb_str_buf_cat2(str, ", ");
+ else rb_enc_copy(str, s);
+ rb_str_buf_append(str, s);
+ }
+ rb_str_buf_cat2(str, "]");
return str;
}
-static ID inspect_key;
+/*
+ * call-seq:
+ * array.inspect -> new_string
+ *
+ * Returns the new \String formed by calling method <tt>#inspect</tt>
+ * on each array element:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.inspect # => "[:foo, \"bar\", 2]"
+ *
+ * Array#to_s is an alias for Array#inspect.
+ */
-struct inspect_arg {
- VALUE (*func)();
- VALUE arg1, arg2;
-};
+static VALUE
+rb_ary_inspect(VALUE ary)
+{
+ if (RARRAY_LEN(ary) == 0) return rb_usascii_str_new2("[]");
+ return rb_exec_recursive(inspect_ary, ary, 0);
+}
VALUE
-inspect_call(arg)
- struct inspect_arg *arg;
+rb_ary_to_s(VALUE ary)
{
- return (*arg->func)(arg->arg1, arg->arg2);
+ return rb_ary_inspect(ary);
}
+/*
+ * call-seq:
+ * to_a -> self or new_array
+ *
+ * When +self+ is an instance of \Array, returns +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.to_a # => [:foo, "bar", 2]
+ *
+ * Otherwise, returns a new \Array containing the elements of +self+:
+ *
+ * class MyArray < Array; end
+ * a = MyArray.new(['foo', 'bar', 'two'])
+ * a.instance_of?(Array) # => false
+ * a.kind_of?(Array) # => true
+ * a1 = a.to_a
+ * a1 # => ["foo", "bar", "two"]
+ * a1.class # => Array # Not MyArray
+ *
+ */
+
static VALUE
-inspect_ensure(obj)
- VALUE obj;
+rb_ary_to_a(VALUE ary)
{
- VALUE inspect_tbl;
+ if (rb_obj_class(ary) != rb_cArray) {
+ VALUE dup = rb_ary_new2(RARRAY_LEN(ary));
+ rb_ary_replace(dup, ary);
+ return dup;
+ }
+ return ary;
+}
+
+/*
+ * call-seq:
+ * array.to_h -> new_hash
+ * array.to_h {|item| ... } -> new_hash
+ *
+ * Returns a new \Hash formed from +self+.
+ *
+ * When a block is given, calls the block with each array element;
+ * the block must return a 2-element \Array whose two elements
+ * form a key-value pair in the returned \Hash:
+ *
+ * a = ['foo', :bar, 1, [2, 3], {baz: 4}]
+ * h = a.to_h {|item| [item, item] }
+ * h # => {"foo"=>"foo", :bar=>:bar, 1=>1, [2, 3]=>[2, 3], {:baz=>4}=>{:baz=>4}}
+ *
+ * When no block is given, +self+ must be an \Array of 2-element sub-arrays,
+ * each sub-array is formed into a key-value pair in the new \Hash:
+ *
+ * [].to_h # => {}
+ * a = [['foo', 'zero'], ['bar', 'one'], ['baz', 'two']]
+ * h = a.to_h
+ * h # => {"foo"=>"zero", "bar"=>"one", "baz"=>"two"}
+ *
+ */
- inspect_tbl = rb_thread_local_aref(rb_thread_current(), inspect_key);
- rb_ary_pop(inspect_tbl);
- return 0;
+static VALUE
+rb_ary_to_h(VALUE ary)
+{
+ long i;
+ VALUE hash = rb_hash_new_with_size(RARRAY_LEN(ary));
+ int block_given = rb_block_given_p();
+
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ const VALUE e = rb_ary_elt(ary, i);
+ const VALUE elt = block_given ? rb_yield_force_blockarg(e) : e;
+ const VALUE key_value_pair = rb_check_array_type(elt);
+ if (NIL_P(key_value_pair)) {
+ rb_raise(rb_eTypeError, "wrong element type %"PRIsVALUE" at %ld (expected array)",
+ rb_obj_class(elt), i);
+ }
+ if (RARRAY_LEN(key_value_pair) != 2) {
+ rb_raise(rb_eArgError, "wrong array length at %ld (expected 2, was %ld)",
+ i, RARRAY_LEN(key_value_pair));
+ }
+ rb_hash_aset(hash, RARRAY_AREF(key_value_pair, 0), RARRAY_AREF(key_value_pair, 1));
+ }
+ return hash;
}
-VALUE
-rb_protect_inspect(func, obj, arg)
- VALUE (*func)();
- VALUE obj, arg;
+/*
+ * call-seq:
+ * array.to_ary -> self
+ *
+ * Returns +self+.
+ */
+
+static VALUE
+rb_ary_to_ary_m(VALUE ary)
{
- struct inspect_arg iarg;
- VALUE inspect_tbl;
- VALUE id;
+ return ary;
+}
- if (!inspect_key) {
- inspect_key = rb_intern("__inspect_key__");
- }
- inspect_tbl = rb_thread_local_aref(rb_thread_current(), inspect_key);
- if (NIL_P(inspect_tbl)) {
- inspect_tbl = rb_ary_new();
- rb_thread_local_aset(rb_thread_current(), inspect_key, inspect_tbl);
- }
- id = rb_obj_id(obj);
- if (rb_ary_includes(inspect_tbl, id)) {
- return (*func)(obj, arg);
+static void
+ary_reverse(VALUE *p1, VALUE *p2)
+{
+ while (p1 < p2) {
+ VALUE tmp = *p1;
+ *p1++ = *p2;
+ *p2-- = tmp;
}
- rb_ary_push(inspect_tbl, id);
- iarg.func = func;
- iarg.arg1 = obj;
- iarg.arg2 = arg;
-
- return rb_ensure(inspect_call, (VALUE)&iarg, inspect_ensure, obj);
}
VALUE
-rb_inspecting_p(obj)
- VALUE obj;
+rb_ary_reverse(VALUE ary)
{
- VALUE inspect_tbl;
+ VALUE *p2;
+ long len = RARRAY_LEN(ary);
- if (!inspect_key) return Qfalse;
- inspect_tbl = rb_thread_local_aref(rb_thread_current(), inspect_key);
- if (NIL_P(inspect_tbl)) return Qfalse;
- return rb_ary_includes(inspect_tbl, rb_obj_id(obj));
+ rb_ary_modify(ary);
+ if (len > 1) {
+ RARRAY_PTR_USE_TRANSIENT(ary, p1, {
+ p2 = p1 + len - 1; /* points last item */
+ ary_reverse(p1, p2);
+ }); /* WB: no new reference */
+ }
+ return ary;
}
+/*
+ * call-seq:
+ * array.reverse! -> self
+ *
+ * Reverses +self+ in place:
+ *
+ * a = ['foo', 'bar', 'two']
+ * a.reverse! # => ["two", "bar", "foo"]
+ *
+ */
+
static VALUE
-inspect_ary(ary)
- VALUE ary;
+rb_ary_reverse_bang(VALUE ary)
{
- int tainted = OBJ_TAINTED(ary);
- long i = 0;
- VALUE s, str;
+ return rb_ary_reverse(ary);
+}
- str = rb_str_new2("[");
+/*
+ * call-seq:
+ * array.reverse -> new_array
+ *
+ * Returns a new \Array with the elements of +self+ in reverse order:
+ *
+ * a = ['foo', 'bar', 'two']
+ * a1 = a.reverse
+ * a1 # => ["two", "bar", "foo"]
+ *
+ */
- for (i=0; i<RARRAY(ary)->len; i++) {
- s = rb_inspect(RARRAY(ary)->ptr[i]);
- tainted = OBJ_TAINTED(s);
- if (i > 0) rb_str_cat2(str, ", ");
- rb_str_append(str, s);
- }
- rb_str_cat(str, "]", 1);
+static VALUE
+rb_ary_reverse_m(VALUE ary)
+{
+ long len = RARRAY_LEN(ary);
+ VALUE dup = rb_ary_new2(len);
- if (tainted) OBJ_TAINT(str);
- return str;
+ if (len > 0) {
+ const VALUE *p1 = RARRAY_CONST_PTR_TRANSIENT(ary);
+ VALUE *p2 = (VALUE *)RARRAY_CONST_PTR_TRANSIENT(dup) + len - 1;
+ do *p2-- = *p1++; while (--len > 0);
+ }
+ ARY_SET_LEN(dup, RARRAY_LEN(ary));
+ return dup;
}
-static VALUE
-rb_ary_inspect(ary)
- VALUE ary;
+static inline long
+rotate_count(long cnt, long len)
{
- if (RARRAY(ary)->len == 0) return rb_str_new2("[]");
- if (rb_inspecting_p(ary)) return rb_str_new2("[...]");
- return rb_protect_inspect(inspect_ary, ary, 0);
+ return (cnt < 0) ? (len - (~cnt % len) - 1) : (cnt % len);
}
-static VALUE
-rb_ary_to_a(ary)
- VALUE ary;
+static void
+ary_rotate_ptr(VALUE *ptr, long len, long cnt)
{
- return ary;
+ if (cnt == 1) {
+ VALUE tmp = *ptr;
+ memmove(ptr, ptr + 1, sizeof(VALUE)*(len - 1));
+ *(ptr + len - 1) = tmp;
+ }
+ else if (cnt == len - 1) {
+ VALUE tmp = *(ptr + len - 1);
+ memmove(ptr + 1, ptr, sizeof(VALUE)*(len - 1));
+ *ptr = tmp;
+ }
+ else {
+ --len;
+ if (cnt < len) ary_reverse(ptr + cnt, ptr + len);
+ if (--cnt > 0) ary_reverse(ptr, ptr + cnt);
+ if (len > 0) ary_reverse(ptr, ptr + len);
+ }
}
VALUE
-rb_ary_reverse(ary)
- VALUE ary;
+rb_ary_rotate(VALUE ary, long cnt)
{
- VALUE *p1, *p2;
- VALUE tmp;
-
- if (RARRAY(ary)->len <= 1) return ary;
rb_ary_modify(ary);
- p1 = RARRAY(ary)->ptr;
- p2 = p1 + RARRAY(ary)->len - 1; /* points last item */
-
- while (p1 < p2) {
- tmp = *p1;
- *p1 = *p2;
- *p2 = tmp;
- p1++; p2--;
+ if (cnt != 0) {
+ long len = RARRAY_LEN(ary);
+ if (len > 1 && (cnt = rotate_count(cnt, len)) > 0) {
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr, ary_rotate_ptr(ptr, len, cnt));
+ return ary;
+ }
}
+ return Qnil;
+}
+/*
+ * call-seq:
+ * array.rotate! -> self
+ * array.rotate!(count) -> self
+ *
+ * Rotates +self+ in place by moving elements from one end to the other; returns +self+.
+ *
+ * When no argument given, rotates the first element to the last position:
+ *
+ * a = [:foo, 'bar', 2, 'bar']
+ * a.rotate! # => ["bar", 2, "bar", :foo]
+ *
+ * When given a non-negative \Integer +count+,
+ * rotates +count+ elements from the beginning to the end:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.rotate!(2)
+ * a # => [2, :foo, "bar"]
+ *
+ * If +count+ is large, uses <tt>count % array.size</tt> as the count:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.rotate!(20)
+ * a # => [2, :foo, "bar"]
+ *
+ * If +count+ is zero, returns +self+ unmodified:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.rotate!(0)
+ * a # => [:foo, "bar", 2]
+ *
+ * When given a negative Integer +count+, rotates in the opposite direction,
+ * from end to beginning:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.rotate!(-2)
+ * a # => ["bar", 2, :foo]
+ *
+ * If +count+ is small (far from zero), uses <tt>count % array.size</tt> as the count:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.rotate!(-5)
+ * a # => ["bar", 2, :foo]
+ *
+ */
+
+static VALUE
+rb_ary_rotate_bang(int argc, VALUE *argv, VALUE ary)
+{
+ long n = (rb_check_arity(argc, 0, 1) ? NUM2LONG(argv[0]) : 1);
+ rb_ary_rotate(ary, n);
return ary;
}
+/*
+ * call-seq:
+ * array.rotate -> new_array
+ * array.rotate(count) -> new_array
+ *
+ * Returns a new \Array formed from +self+ with elements
+ * rotated from one end to the other.
+ *
+ * When no argument given, returns a new \Array that is like +self+,
+ * except that the first element has been rotated to the last position:
+ *
+ * a = [:foo, 'bar', 2, 'bar']
+ * a1 = a.rotate
+ * a1 # => ["bar", 2, "bar", :foo]
+ *
+ * When given a non-negative \Integer +count+,
+ * returns a new \Array with +count+ elements rotated from the beginning to the end:
+ *
+ * a = [:foo, 'bar', 2]
+ * a1 = a.rotate(2)
+ * a1 # => [2, :foo, "bar"]
+ *
+ * If +count+ is large, uses <tt>count % array.size</tt> as the count:
+ *
+ * a = [:foo, 'bar', 2]
+ * a1 = a.rotate(20)
+ * a1 # => [2, :foo, "bar"]
+ *
+ * If +count+ is zero, returns a copy of +self+, unmodified:
+ *
+ * a = [:foo, 'bar', 2]
+ * a1 = a.rotate(0)
+ * a1 # => [:foo, "bar", 2]
+ *
+ * When given a negative \Integer +count+, rotates in the opposite direction,
+ * from end to beginning:
+ *
+ * a = [:foo, 'bar', 2]
+ * a1 = a.rotate(-2)
+ * a1 # => ["bar", 2, :foo]
+ *
+ * If +count+ is small (far from zero), uses <tt>count % array.size</tt> as the count:
+ *
+ * a = [:foo, 'bar', 2]
+ * a1 = a.rotate(-5)
+ * a1 # => ["bar", 2, :foo]
+ *
+ */
+
static VALUE
-rb_ary_reverse_bang(ary)
- VALUE ary;
+rb_ary_rotate_m(int argc, VALUE *argv, VALUE ary)
{
- if (RARRAY(ary)->len <= 1) return Qnil;
- return rb_ary_reverse(ary);
+ VALUE rotated;
+ const VALUE *ptr;
+ long len;
+ long cnt = (rb_check_arity(argc, 0, 1) ? NUM2LONG(argv[0]) : 1);
+
+ len = RARRAY_LEN(ary);
+ rotated = rb_ary_new2(len);
+ if (len > 0) {
+ cnt = rotate_count(cnt, len);
+ ptr = RARRAY_CONST_PTR_TRANSIENT(ary);
+ len -= cnt;
+ ary_memcpy(rotated, 0, len, ptr + cnt);
+ ary_memcpy(rotated, len, cnt, ptr);
+ }
+ ARY_SET_LEN(rotated, RARRAY_LEN(ary));
+ return rotated;
}
-static VALUE
-rb_ary_reverse_m(ary)
+struct ary_sort_data {
VALUE ary;
+ VALUE receiver;
+};
+
+static VALUE
+sort_reentered(VALUE ary)
{
- return rb_ary_reverse(rb_obj_dup(ary));
+ if (RBASIC(ary)->klass) {
+ rb_raise(rb_eRuntimeError, "sort reentered");
+ }
+ return Qnil;
}
-static ID cmp;
+static void
+sort_returned(struct ary_sort_data *data)
+{
+ if (rb_obj_frozen_p(data->receiver)) {
+ rb_raise(rb_eFrozenError, "array frozen during sort");
+ }
+ sort_reentered(data->ary);
+}
static int
-sort_1(a, b)
- VALUE *a, *b;
+sort_1(const void *ap, const void *bp, void *dummy)
{
- VALUE retval = rb_yield(rb_assoc_new(*a, *b));
- return NUM2INT(retval);
+ struct ary_sort_data *data = dummy;
+ VALUE retval = sort_reentered(data->ary);
+ VALUE a = *(const VALUE *)ap, b = *(const VALUE *)bp;
+ VALUE args[2];
+ int n;
+
+ args[0] = a;
+ args[1] = b;
+ retval = rb_yield_values2(2, args);
+ n = rb_cmpint(retval, a, b);
+ sort_returned(data);
+ return n;
}
static int
-sort_2(a, b)
- VALUE *a, *b;
+sort_2(const void *ap, const void *bp, void *dummy)
{
- VALUE retval;
-
- if (FIXNUM_P(*a)) {
- if (FIXNUM_P(*b)) return *a - *b;
+ struct ary_sort_data *data = dummy;
+ VALUE retval = sort_reentered(data->ary);
+ VALUE a = *(const VALUE *)ap, b = *(const VALUE *)bp;
+ int n;
+
+ if (FIXNUM_P(a) && FIXNUM_P(b) && CMP_OPTIMIZABLE(INTEGER)) {
+ if ((long)a > (long)b) return 1;
+ if ((long)a < (long)b) return -1;
+ return 0;
}
- else if (TYPE(*a) == T_STRING && TYPE(*b) == T_STRING) {
- return rb_str_cmp(*a, *b);
+ if (STRING_P(a) && STRING_P(b) && CMP_OPTIMIZABLE(STRING)) {
+ return rb_str_cmp(a, b);
}
+ if (RB_FLOAT_TYPE_P(a) && CMP_OPTIMIZABLE(FLOAT)) {
+ return rb_float_cmp(a, b);
+ }
+
+ retval = rb_funcallv(a, id_cmp, 1, &b);
+ n = rb_cmpint(retval, a, b);
+ sort_returned(data);
- retval = rb_funcall(*a, cmp, 1, *b);
- return NUM2INT(retval);
+ return n;
}
-static VALUE
-sort_internal(ary)
- VALUE ary;
+/*
+ * call-seq:
+ * array.sort! -> self
+ * array.sort! {|a, b| ... } -> self
+ *
+ * Returns +self+ with its elements sorted in place.
+ *
+ * With no block, compares elements using operator <tt><=></tt>
+ * (see Comparable):
+ *
+ * a = 'abcde'.split('').shuffle
+ * a # => ["e", "b", "d", "a", "c"]
+ * a.sort!
+ * a # => ["a", "b", "c", "d", "e"]
+ *
+ * With a block, calls the block with each element pair;
+ * for each element pair +a+ and +b+, the block should return an integer:
+ *
+ * - Negative when +b+ is to follow +a+.
+ * - Zero when +a+ and +b+ are equivalent.
+ * - Positive when +a+ is to follow +b+.
+ *
+ * Example:
+ *
+ * a = 'abcde'.split('').shuffle
+ * a # => ["e", "b", "d", "a", "c"]
+ * a.sort! {|a, b| a <=> b }
+ * a # => ["a", "b", "c", "d", "e"]
+ * a.sort! {|a, b| b <=> a }
+ * a # => ["e", "d", "c", "b", "a"]
+ *
+ * When the block returns zero, the order for +a+ and +b+ is indeterminate,
+ * and may be unstable:
+ *
+ * a = 'abcde'.split('').shuffle
+ * a # => ["e", "b", "d", "a", "c"]
+ * a.sort! {|a, b| 0 }
+ * a # => ["d", "e", "c", "a", "b"]
+ *
+ */
+
+VALUE
+rb_ary_sort_bang(VALUE ary)
{
- qsort(RARRAY(ary)->ptr, RARRAY(ary)->len, sizeof(VALUE),
- rb_block_given_p()?sort_1:sort_2);
+ rb_ary_modify(ary);
+ assert(!ARY_SHARED_P(ary));
+ if (RARRAY_LEN(ary) > 1) {
+ VALUE tmp = ary_make_substitution(ary); /* only ary refers tmp */
+ struct ary_sort_data data;
+ long len = RARRAY_LEN(ary);
+ RBASIC_CLEAR_CLASS(tmp);
+ data.ary = tmp;
+ data.receiver = ary;
+ RARRAY_PTR_USE(tmp, ptr, {
+ ruby_qsort(ptr, len, sizeof(VALUE),
+ rb_block_given_p()?sort_1:sort_2, &data);
+ }); /* WB: no new reference */
+ rb_ary_modify(ary);
+ if (ARY_EMBED_P(tmp)) {
+ if (ARY_SHARED_P(ary)) { /* ary might be destructively operated in the given block */
+ rb_ary_unshare(ary);
+ FL_SET_EMBED(ary);
+ }
+ ary_memcpy(ary, 0, ARY_EMBED_LEN(tmp), ARY_EMBED_PTR(tmp));
+ ARY_SET_LEN(ary, ARY_EMBED_LEN(tmp));
+ }
+ else {
+ if (!ARY_EMBED_P(ary) && ARY_HEAP_PTR(ary) == ARY_HEAP_PTR(tmp)) {
+ FL_UNSET_SHARED(ary);
+ ARY_SET_CAPA(ary, RARRAY_LEN(tmp));
+ }
+ else {
+ assert(!ARY_SHARED_P(tmp));
+ if (ARY_EMBED_P(ary)) {
+ FL_UNSET_EMBED(ary);
+ }
+ else if (ARY_SHARED_P(ary)) {
+ /* ary might be destructively operated in the given block */
+ rb_ary_unshare(ary);
+ }
+ else {
+ ary_heap_free(ary);
+ }
+ ARY_SET_PTR(ary, ARY_HEAP_PTR(tmp));
+ ARY_SET_HEAP_LEN(ary, len);
+ ARY_SET_CAPA(ary, ARY_HEAP_LEN(tmp));
+ }
+ /* tmp was lost ownership for the ptr */
+ FL_UNSET(tmp, FL_FREEZE);
+ FL_SET_EMBED(tmp);
+ ARY_SET_EMBED_LEN(tmp, 0);
+ FL_SET(tmp, FL_FREEZE);
+ }
+ /* tmp will be GC'ed. */
+ RBASIC_SET_CLASS_RAW(tmp, rb_cArray); /* rb_cArray must be marked */
+ }
+ ary_verify(ary);
return ary;
}
-static VALUE
-sort_unlock(ary)
- VALUE ary;
+/*
+ * call-seq:
+ * array.sort -> new_array
+ * array.sort {|a, b| ... } -> new_array
+ *
+ * Returns a new \Array whose elements are those from +self+, sorted.
+ *
+ * With no block, compares elements using operator <tt><=></tt>
+ * (see Comparable):
+ *
+ * a = 'abcde'.split('').shuffle
+ * a # => ["e", "b", "d", "a", "c"]
+ * a1 = a.sort
+ * a1 # => ["a", "b", "c", "d", "e"]
+ *
+ * With a block, calls the block with each element pair;
+ * for each element pair +a+ and +b+, the block should return an integer:
+ *
+ * - Negative when +b+ is to follow +a+.
+ * - Zero when +a+ and +b+ are equivalent.
+ * - Positive when +a+ is to follow +b+.
+ *
+ * Example:
+ *
+ * a = 'abcde'.split('').shuffle
+ * a # => ["e", "b", "d", "a", "c"]
+ * a1 = a.sort {|a, b| a <=> b }
+ * a1 # => ["a", "b", "c", "d", "e"]
+ * a2 = a.sort {|a, b| b <=> a }
+ * a2 # => ["e", "d", "c", "b", "a"]
+ *
+ * When the block returns zero, the order for +a+ and +b+ is indeterminate,
+ * and may be unstable:
+ *
+ * a = 'abcde'.split('').shuffle
+ * a # => ["e", "b", "d", "a", "c"]
+ * a1 = a.sort {|a, b| 0 }
+ * a1 # => ["c", "e", "b", "d", "a"]
+ *
+ * Related: Enumerable#sort_by.
+ */
+
+VALUE
+rb_ary_sort(VALUE ary)
{
- FL_UNSET(ary, ARY_TMPLOCK);
+ ary = rb_ary_dup(ary);
+ rb_ary_sort_bang(ary);
return ary;
}
-VALUE
-rb_ary_sort_bang(ary)
- VALUE ary;
+static VALUE rb_ary_bsearch_index(VALUE ary);
+
+/*
+ * call-seq:
+ * array.bsearch {|element| ... } -> object
+ * array.bsearch -> new_enumerator
+ *
+ * Returns an element from +self+ selected by a binary search.
+ *
+ * See {Binary Searching}[rdoc-ref:bsearch.rdoc].
+ */
+
+static VALUE
+rb_ary_bsearch(VALUE ary)
{
- rb_ary_modify(ary);
- if (RARRAY(ary)->len <= 1) return Qnil;
+ VALUE index_result = rb_ary_bsearch_index(ary);
- FL_SET(ary, ARY_TMPLOCK); /* prohibit modification during sort */
- rb_ensure(sort_internal, ary, sort_unlock, ary);
- return ary;
+ if (FIXNUM_P(index_result)) {
+ return rb_ary_entry(ary, FIX2LONG(index_result));
+ }
+ return index_result;
}
-VALUE
-rb_ary_sort(ary)
- VALUE ary;
+/*
+ * call-seq:
+ * array.bsearch_index {|element| ... } -> integer or nil
+ * array.bsearch_index -> new_enumerator
+ *
+ * Searches +self+ as described at method #bsearch,
+ * but returns the _index_ of the found element instead of the element itself.
+ */
+
+static VALUE
+rb_ary_bsearch_index(VALUE ary)
{
- ary = rb_obj_dup(ary);
- rb_ary_sort_bang(ary);
+ long low = 0, high = RARRAY_LEN(ary), mid;
+ int smaller = 0, satisfied = 0;
+ VALUE v, val;
+
+ RETURN_ENUMERATOR(ary, 0, 0);
+ while (low < high) {
+ mid = low + ((high - low) / 2);
+ val = rb_ary_entry(ary, mid);
+ v = rb_yield(val);
+ if (FIXNUM_P(v)) {
+ if (v == INT2FIX(0)) return INT2FIX(mid);
+ smaller = (SIGNED_VALUE)v < 0; /* Fixnum preserves its sign-bit */
+ }
+ else if (v == Qtrue) {
+ satisfied = 1;
+ smaller = 1;
+ }
+ else if (!RTEST(v)) {
+ smaller = 0;
+ }
+ else if (rb_obj_is_kind_of(v, rb_cNumeric)) {
+ const VALUE zero = INT2FIX(0);
+ switch (rb_cmpint(rb_funcallv(v, id_cmp, 1, &zero), v, zero)) {
+ case 0: return INT2FIX(mid);
+ case 1: smaller = 0; break;
+ case -1: smaller = 1;
+ }
+ }
+ else {
+ rb_raise(rb_eTypeError, "wrong argument type %"PRIsVALUE
+ " (must be numeric, true, false or nil)",
+ rb_obj_class(v));
+ }
+ if (smaller) {
+ high = mid;
+ }
+ else {
+ low = mid + 1;
+ }
+ }
+ if (!satisfied) return Qnil;
+ return INT2FIX(low);
+}
+
+
+static VALUE
+sort_by_i(RB_BLOCK_CALL_FUNC_ARGLIST(i, dummy))
+{
+ return rb_yield(i);
+}
+
+/*
+ * call-seq:
+ * array.sort_by! {|element| ... } -> self
+ * array.sort_by! -> new_enumerator
+ *
+ * Sorts the elements of +self+ in place,
+ * using an ordering determined by the block; returns self.
+ *
+ * Calls the block with each successive element;
+ * sorts elements based on the values returned from the block.
+ *
+ * For duplicates returned by the block, the ordering is indeterminate, and may be unstable.
+ *
+ * This example sorts strings based on their sizes:
+ *
+ * a = ['aaaa', 'bbb', 'cc', 'd']
+ * a.sort_by! {|element| element.size }
+ * a # => ["d", "cc", "bbb", "aaaa"]
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = ['aaaa', 'bbb', 'cc', 'd']
+ * a.sort_by! # => #<Enumerator: ["aaaa", "bbb", "cc", "d"]:sort_by!>
+ *
+ */
+
+static VALUE
+rb_ary_sort_by_bang(VALUE ary)
+{
+ VALUE sorted;
+
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ rb_ary_modify(ary);
+ sorted = rb_block_call(ary, rb_intern("sort_by"), 0, 0, sort_by_i, 0);
+ rb_ary_replace(ary, sorted);
return ary;
}
+
+/*
+ * call-seq:
+ * array.map {|element| ... } -> new_array
+ * array.map -> new_enumerator
+ *
+ * Calls the block, if given, with each element of +self+;
+ * returns a new \Array whose elements are the return values from the block:
+ *
+ * a = [:foo, 'bar', 2]
+ * a1 = a.map {|element| element.class }
+ * a1 # => [Symbol, String, Integer]
+ *
+ * Returns a new \Enumerator if no block given:
+ * a = [:foo, 'bar', 2]
+ * a1 = a.map
+ * a1 # => #<Enumerator: [:foo, "bar", 2]:map>
+ *
+ * Array#collect is an alias for Array#map.
+ */
+
static VALUE
-rb_ary_collect(ary)
- VALUE ary;
+rb_ary_collect(VALUE ary)
{
- long len, i;
+ long i;
VALUE collect;
- if (!rb_block_given_p()) {
- return rb_obj_dup(ary);
- }
-
- len = RARRAY(ary)->len;
- collect = rb_ary_new2(len);
- for (i=0; i<len; i++) {
- rb_ary_push(collect, rb_yield(RARRAY(ary)->ptr[i]));
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ collect = rb_ary_new2(RARRAY_LEN(ary));
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_ary_push(collect, rb_yield(RARRAY_AREF(ary, i)));
}
return collect;
}
+
+/*
+ * call-seq:
+ * array.map! {|element| ... } -> self
+ * array.map! -> new_enumerator
+ *
+ * Calls the block, if given, with each element;
+ * replaces the element with the block's return value:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.map! { |element| element.class } # => [Symbol, String, Integer]
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = [:foo, 'bar', 2]
+ * a1 = a.map!
+ * a1 # => #<Enumerator: [:foo, "bar", 2]:map!>
+ *
+ * Array#collect! is an alias for Array#map!.
+ */
+
static VALUE
-rb_ary_collect_bang(ary)
- VALUE ary;
+rb_ary_collect_bang(VALUE ary)
{
long i;
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
rb_ary_modify(ary);
- for (i = 0; i < RARRAY(ary)->len; i++) {
- RARRAY(ary)->ptr[i] = rb_yield(RARRAY(ary)->ptr[i]);
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_ary_store(ary, i, rb_yield(RARRAY_AREF(ary, i)));
}
return ary;
}
+VALUE
+rb_get_values_at(VALUE obj, long olen, int argc, const VALUE *argv, VALUE (*func) (VALUE, long))
+{
+ VALUE result = rb_ary_new2(argc);
+ long beg, len, i, j;
+
+ for (i=0; i<argc; i++) {
+ if (FIXNUM_P(argv[i])) {
+ rb_ary_push(result, (*func)(obj, FIX2LONG(argv[i])));
+ continue;
+ }
+ /* check if idx is Range */
+ if (rb_range_beg_len(argv[i], &beg, &len, olen, 1)) {
+ long end = olen < beg+len ? olen : beg+len;
+ for (j = beg; j < end; j++) {
+ rb_ary_push(result, (*func)(obj, j));
+ }
+ if (beg + len > j)
+ rb_ary_resize(result, RARRAY_LEN(result) + (beg + len) - j);
+ continue;
+ }
+ rb_ary_push(result, (*func)(obj, NUM2LONG(argv[i])));
+ }
+ return result;
+}
+
static VALUE
-rb_ary_filter(ary)
- VALUE ary;
+append_values_at_single(VALUE result, VALUE ary, long olen, VALUE idx)
{
- rb_warn("Array#filter is deprecated; use Array#collect!");
- return rb_ary_collect_bang(ary);
+ long beg, len;
+ if (FIXNUM_P(idx)) {
+ beg = FIX2LONG(idx);
+ }
+ /* check if idx is Range */
+ else if (rb_range_beg_len(idx, &beg, &len, olen, 1)) {
+ if (len > 0) {
+ const VALUE *const src = RARRAY_CONST_PTR_TRANSIENT(ary);
+ const long end = beg + len;
+ const long prevlen = RARRAY_LEN(result);
+ if (beg < olen) {
+ rb_ary_cat(result, src + beg, end > olen ? olen-beg : len);
+ }
+ if (end > olen) {
+ rb_ary_store(result, prevlen + len - 1, Qnil);
+ }
+ }
+ return result;
+ }
+ else {
+ beg = NUM2LONG(idx);
+ }
+ return rb_ary_push(result, rb_ary_entry(ary, beg));
}
-VALUE
-rb_ary_delete(ary, item)
+/*
+ * call-seq:
+ * array.values_at(*indexes) -> new_array
+ *
+ * Returns a new \Array whose elements are the elements
+ * of +self+ at the given \Integer or \Range +indexes+.
+ *
+ * For each positive +index+, returns the element at offset +index+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.values_at(0, 2) # => [:foo, 2]
+ * a.values_at(0..1) # => [:foo, "bar"]
+ *
+ * The given +indexes+ may be in any order, and may repeat:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.values_at(2, 0, 1, 0, 2) # => [2, :foo, "bar", :foo, 2]
+ * a.values_at(1, 0..2) # => ["bar", :foo, "bar", 2]
+ *
+ * Assigns +nil+ for an +index+ that is too large:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.values_at(0, 3, 1, 3) # => [:foo, nil, "bar", nil]
+ *
+ * Returns a new empty \Array if no arguments given.
+ *
+ * For each negative +index+, counts backward from the end of the array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.values_at(-1, -3) # => [2, :foo]
+ *
+ * Assigns +nil+ for an +index+ that is too small:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.values_at(0, -5, 1, -6, 2) # => [:foo, nil, "bar", nil, 2]
+ *
+ * The given +indexes+ may have a mixture of signs:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.values_at(0, -2, 1, -1) # => [:foo, "bar", "bar", 2]
+ *
+ */
+
+static VALUE
+rb_ary_values_at(int argc, VALUE *argv, VALUE ary)
+{
+ long i, olen = RARRAY_LEN(ary);
+ VALUE result = rb_ary_new_capa(argc);
+ for (i = 0; i < argc; ++i) {
+ append_values_at_single(result, ary, olen, argv[i]);
+ }
+ RB_GC_GUARD(ary);
+ return result;
+}
+
+
+/*
+ * call-seq:
+ * array.select {|element| ... } -> new_array
+ * array.select -> new_enumerator
+ *
+ * Calls the block, if given, with each element of +self+;
+ * returns a new \Array containing those elements of +self+
+ * for which the block returns a truthy value:
+ *
+ * a = [:foo, 'bar', 2, :bam]
+ * a1 = a.select {|element| element.to_s.start_with?('b') }
+ * a1 # => ["bar", :bam]
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = [:foo, 'bar', 2, :bam]
+ * a.select # => #<Enumerator: [:foo, "bar", 2, :bam]:select>
+ *
+ * Array#filter is an alias for Array#select.
+ */
+
+static VALUE
+rb_ary_select(VALUE ary)
+{
+ VALUE result;
+ long i;
+
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ result = rb_ary_new2(RARRAY_LEN(ary));
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
+ rb_ary_push(result, rb_ary_elt(ary, i));
+ }
+ }
+ return result;
+}
+
+struct select_bang_arg {
VALUE ary;
- VALUE item;
+ long len[2];
+};
+
+static VALUE
+select_bang_i(VALUE a)
{
+ volatile struct select_bang_arg *arg = (void *)a;
+ VALUE ary = arg->ary;
long i1, i2;
+ for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); arg->len[0] = ++i1) {
+ VALUE v = RARRAY_AREF(ary, i1);
+ if (!RTEST(rb_yield(v))) continue;
+ if (i1 != i2) {
+ rb_ary_store(ary, i2, v);
+ }
+ arg->len[1] = ++i2;
+ }
+ return (i1 == i2) ? Qnil : ary;
+}
+
+static VALUE
+select_bang_ensure(VALUE a)
+{
+ volatile struct select_bang_arg *arg = (void *)a;
+ VALUE ary = arg->ary;
+ long len = RARRAY_LEN(ary);
+ long i1 = arg->len[0], i2 = arg->len[1];
+
+ if (i2 < len && i2 < i1) {
+ long tail = 0;
+ rb_ary_modify(ary);
+ if (i1 < len) {
+ tail = len - i1;
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
+ MEMMOVE(ptr + i2, ptr + i1, VALUE, tail);
+ });
+ }
+ ARY_SET_LEN(ary, i2 + tail);
+ }
+ return ary;
+}
+
+/*
+ * call-seq:
+ * array.select! {|element| ... } -> self or nil
+ * array.select! -> new_enumerator
+ *
+ * Calls the block, if given with each element of +self+;
+ * removes from +self+ those elements for which the block returns +false+ or +nil+.
+ *
+ * Returns +self+ if any elements were removed:
+ *
+ * a = [:foo, 'bar', 2, :bam]
+ * a.select! {|element| element.to_s.start_with?('b') } # => ["bar", :bam]
+ *
+ * Returns +nil+ if no elements were removed.
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = [:foo, 'bar', 2, :bam]
+ * a.select! # => #<Enumerator: [:foo, "bar", 2, :bam]:select!>
+ *
+ * Array#filter! is an alias for Array#select!.
+ */
+
+static VALUE
+rb_ary_select_bang(VALUE ary)
+{
+ struct select_bang_arg args;
+
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ rb_ary_modify(ary);
+
+ args.ary = ary;
+ args.len[0] = args.len[1] = 0;
+ return rb_ensure(select_bang_i, (VALUE)&args, select_bang_ensure, (VALUE)&args);
+}
+
+/*
+ * call-seq:
+ * array.keep_if {|element| ... } -> self
+ * array.keep_if -> new_enumeration
+ *
+ * Retains those elements for which the block returns a truthy value;
+ * deletes all other elements; returns +self+:
+ *
+ * a = [:foo, 'bar', 2, :bam]
+ * a.keep_if {|element| element.to_s.start_with?('b') } # => ["bar", :bam]
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = [:foo, 'bar', 2, :bam]
+ * a.keep_if # => #<Enumerator: [:foo, "bar", 2, :bam]:keep_if>
+ *
+ */
+
+static VALUE
+rb_ary_keep_if(VALUE ary)
+{
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ rb_ary_select_bang(ary);
+ return ary;
+}
+
+static void
+ary_resize_smaller(VALUE ary, long len)
+{
rb_ary_modify(ary);
- for (i1 = i2 = 0; i1 < RARRAY(ary)->len; i1++) {
- if (rb_equal(RARRAY(ary)->ptr[i1], item)) continue;
- if (i1 != i2) {
- RARRAY(ary)->ptr[i2] = RARRAY(ary)->ptr[i1];
- }
- i2++;
- }
- if (RARRAY(ary)->len == i2) {
- if (rb_block_given_p()) {
- return rb_yield(item);
- }
- return Qnil;
+ if (RARRAY_LEN(ary) > len) {
+ ARY_SET_LEN(ary, len);
+ if (len * 2 < ARY_CAPA(ary) &&
+ ARY_CAPA(ary) > ARY_DEFAULT_SIZE) {
+ ary_resize_capa(ary, len * 2);
+ }
}
- else {
- RARRAY(ary)->len = i2;
+}
+
+/*
+ * call-seq:
+ * array.delete(obj) -> deleted_object
+ * array.delete(obj) {|nosuch| ... } -> deleted_object or block_return
+ *
+ * Removes zero or more elements from +self+.
+ *
+ * When no block is given,
+ * removes from +self+ each element +ele+ such that <tt>ele == obj</tt>;
+ * returns the last deleted element:
+ *
+ * s1 = 'bar'; s2 = 'bar'
+ * a = [:foo, s1, 2, s2]
+ * a.delete('bar') # => "bar"
+ * a # => [:foo, 2]
+ *
+ * Returns +nil+ if no elements removed.
+ *
+ * When a block is given,
+ * removes from +self+ each element +ele+ such that <tt>ele == obj</tt>.
+ *
+ * If any such elements are found, ignores the block
+ * and returns the last deleted element:
+ *
+ * s1 = 'bar'; s2 = 'bar'
+ * a = [:foo, s1, 2, s2]
+ * deleted_obj = a.delete('bar') {|obj| fail 'Cannot happen' }
+ * a # => [:foo, 2]
+ *
+ * If no such elements are found, returns the block's return value:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.delete(:nosuch) {|obj| "#{obj} not found" } # => "nosuch not found"
+ *
+ */
+
+VALUE
+rb_ary_delete(VALUE ary, VALUE item)
+{
+ VALUE v = item;
+ long i1, i2;
+
+ for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
+ VALUE e = RARRAY_AREF(ary, i1);
+
+ if (rb_equal(e, item)) {
+ v = e;
+ continue;
+ }
+ if (i1 != i2) {
+ rb_ary_store(ary, i2, e);
+ }
+ i2++;
}
+ if (RARRAY_LEN(ary) == i2) {
+ if (rb_block_given_p()) {
+ return rb_yield(item);
+ }
+ return Qnil;
+ }
+
+ ary_resize_smaller(ary, i2);
- return item;
+ ary_verify(ary);
+ return v;
+}
+
+void
+rb_ary_delete_same(VALUE ary, VALUE item)
+{
+ long i1, i2;
+
+ for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
+ VALUE e = RARRAY_AREF(ary, i1);
+
+ if (e == item) {
+ continue;
+ }
+ if (i1 != i2) {
+ rb_ary_store(ary, i2, e);
+ }
+ i2++;
+ }
+ if (RARRAY_LEN(ary) == i2) {
+ return;
+ }
+
+ ary_resize_smaller(ary, i2);
}
VALUE
-rb_ary_delete_at(ary, pos)
- VALUE ary;
- long pos;
+rb_ary_delete_at(VALUE ary, long pos)
{
- long i, len = RARRAY(ary)->len;
- VALUE del = Qnil;
+ long len = RARRAY_LEN(ary);
+ VALUE del;
- rb_ary_modify(ary);
if (pos >= len) return Qnil;
- if (pos < 0) pos += len;
- if (pos < 0) return Qnil;
-
- del = RARRAY(ary)->ptr[pos];
- for (i = pos + 1; i < len; i++, pos++) {
- RARRAY(ary)->ptr[pos] = RARRAY(ary)->ptr[i];
+ if (pos < 0) {
+ pos += len;
+ if (pos < 0) return Qnil;
}
- RARRAY(ary)->len = pos;
+ rb_ary_modify(ary);
+ del = RARRAY_AREF(ary, pos);
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
+ MEMMOVE(ptr+pos, ptr+pos+1, VALUE, len-pos-1);
+ });
+ ARY_INCREASE_LEN(ary, -1);
+ ary_verify(ary);
return del;
}
-VALUE
-rb_ary_delete_at_m(ary, pos)
- VALUE ary, pos;
+/*
+ * call-seq:
+ * array.delete_at(index) -> deleted_object or nil
+ *
+ * Deletes an element from +self+, per the given \Integer +index+.
+ *
+ * When +index+ is non-negative, deletes the element at offset +index+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.delete_at(1) # => "bar"
+ * a # => [:foo, 2]
+ *
+ * If index is too large, returns +nil+.
+ *
+ * When +index+ is negative, counts backward from the end of the array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.delete_at(-2) # => "bar"
+ * a # => [:foo, 2]
+ *
+ * If +index+ is too small (far from zero), returns nil.
+ */
+
+static VALUE
+rb_ary_delete_at_m(VALUE ary, VALUE pos)
{
return rb_ary_delete_at(ary, NUM2LONG(pos));
}
static VALUE
-rb_ary_slice_bang(argc, argv, ary)
- int argc;
- VALUE *argv;
- VALUE ary;
+ary_slice_bang_by_rb_ary_splice(VALUE ary, long pos, long len)
{
- VALUE arg1, arg2;
- long pos, len, i;
+ const long orig_len = RARRAY_LEN(ary);
- rb_ary_modify(ary);
- if (rb_scan_args(argc, argv, "11", &arg1, &arg2) == 2) {
- pos = NUM2LONG(arg1);
- len = NUM2LONG(arg2);
- delete_pos_len:
- if (pos < 0) {
- pos = RARRAY(ary)->len + pos;
- }
- arg2 = rb_ary_subseq(ary, pos, len);
- rb_ary_replace(ary, pos, len, Qnil); /* Qnil/rb_ary_new2(0) */
- return arg2;
+ if (len < 0) {
+ return Qnil;
}
-
- if (!FIXNUM_P(arg1) && rb_range_beg_len(arg1, &pos, &len, RARRAY(ary)->len, 1)) {
- goto delete_pos_len;
+ else if (pos < -orig_len) {
+ return Qnil;
+ }
+ else if (pos < 0) {
+ pos += orig_len;
+ }
+ else if (orig_len < pos) {
+ return Qnil;
+ }
+ if (orig_len < pos + len) {
+ len = orig_len - pos;
+ }
+ if (len == 0) {
+ return rb_ary_new2(0);
}
+ else {
+ VALUE arg2 = rb_ary_new4(len, RARRAY_CONST_PTR_TRANSIENT(ary)+pos);
+ rb_ary_splice(ary, pos, len, 0, 0);
+ return arg2;
+ }
+}
- pos = NUM2LONG(arg1);
- len = RARRAY(ary)->len;
+/*
+ * call-seq:
+ * array.slice!(n) -> object or nil
+ * array.slice!(start, length) -> new_array or nil
+ * array.slice!(range) -> new_array or nil
+ *
+ * Removes and returns elements from +self+.
+ *
+ * When the only argument is an \Integer +n+,
+ * removes and returns the _nth_ element in +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.slice!(1) # => "bar"
+ * a # => [:foo, 2]
+ *
+ * If +n+ is negative, counts backwards from the end of +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.slice!(-1) # => 2
+ * a # => [:foo, "bar"]
+ *
+ * If +n+ is out of range, returns +nil+.
+ *
+ * When the only arguments are Integers +start+ and +length+,
+ * removes +length+ elements from +self+ beginning at offset +start+;
+ * returns the deleted objects in a new \Array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.slice!(0, 2) # => [:foo, "bar"]
+ * a # => [2]
+ *
+ * If <tt>start + length</tt> exceeds the array size,
+ * removes and returns all elements from offset +start+ to the end:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.slice!(1, 50) # => ["bar", 2]
+ * a # => [:foo]
+ *
+ * If <tt>start == a.size</tt> and +length+ is non-negative,
+ * returns a new empty \Array.
+ *
+ * If +length+ is negative, returns +nil+.
+ *
+ * When the only argument is a \Range object +range+,
+ * treats <tt>range.min</tt> as +start+ above and <tt>range.size</tt> as +length+ above:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.slice!(1..2) # => ["bar", 2]
+ * a # => [:foo]
+ *
+ * If <tt>range.start == a.size</tt>, returns a new empty \Array.
+ *
+ * If <tt>range.start</tt> is larger than the array size, returns +nil+.
+ *
+ * If <tt>range.end</tt> is negative, counts backwards from the end of the array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.slice!(0..-2) # => [:foo, "bar"]
+ * a # => [2]
+ *
+ * If <tt>range.start</tt> is negative,
+ * calculates the start index backwards from the end of the array:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.slice!(-2..2) # => ["bar", 2]
+ * a # => [:foo]
+ *
+ */
- if (pos >= len) return Qnil;
- if (pos < 0) pos += len;
- if (pos < 0) return Qnil;
+static VALUE
+rb_ary_slice_bang(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE arg1;
+ long pos, len;
- arg2 = RARRAY(ary)->ptr[pos];
- for (i = pos + 1; i < len; i++, pos++) {
- RARRAY(ary)->ptr[pos] = RARRAY(ary)->ptr[i];
+ rb_ary_modify_check(ary);
+ rb_check_arity(argc, 1, 2);
+ arg1 = argv[0];
+
+ if (argc == 2) {
+ pos = NUM2LONG(argv[0]);
+ len = NUM2LONG(argv[1]);
+ return ary_slice_bang_by_rb_ary_splice(ary, pos, len);
+ }
+
+ if (!FIXNUM_P(arg1)) {
+ switch (rb_range_beg_len(arg1, &pos, &len, RARRAY_LEN(ary), 0)) {
+ case Qtrue:
+ /* valid range */
+ return ary_slice_bang_by_rb_ary_splice(ary, pos, len);
+ case Qnil:
+ /* invalid range */
+ return Qnil;
+ default:
+ /* not a range */
+ break;
+ }
}
- RARRAY(ary)->len = pos;
- return arg2;
+ return rb_ary_delete_at(ary, NUM2LONG(arg1));
}
static VALUE
-rb_ary_reject_bang(ary)
- VALUE ary;
+ary_reject(VALUE orig, VALUE result)
+{
+ long i;
+
+ for (i = 0; i < RARRAY_LEN(orig); i++) {
+ VALUE v = RARRAY_AREF(orig, i);
+
+ if (!RTEST(rb_yield(v))) {
+ rb_ary_push(result, v);
+ }
+ }
+ return result;
+}
+
+static VALUE
+reject_bang_i(VALUE a)
{
+ volatile struct select_bang_arg *arg = (void *)a;
+ VALUE ary = arg->ary;
long i1, i2;
- rb_ary_modify(ary);
- for (i1 = i2 = 0; i1 < RARRAY(ary)->len; i1++) {
- if (RTEST(rb_yield(RARRAY(ary)->ptr[i1]))) continue;
- if (i1 != i2) {
- RARRAY(ary)->ptr[i2] = RARRAY(ary)->ptr[i1];
- }
- i2++;
+ for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); arg->len[0] = ++i1) {
+ VALUE v = RARRAY_AREF(ary, i1);
+ if (RTEST(rb_yield(v))) continue;
+ if (i1 != i2) {
+ rb_ary_store(ary, i2, v);
+ }
+ arg->len[1] = ++i2;
}
- if (RARRAY(ary)->len == i2) return Qnil;
- RARRAY(ary)->len = i2;
+ return (i1 == i2) ? Qnil : ary;
+}
- return ary;
+static VALUE
+ary_reject_bang(VALUE ary)
+{
+ struct select_bang_arg args;
+ rb_ary_modify_check(ary);
+ args.ary = ary;
+ args.len[0] = args.len[1] = 0;
+ return rb_ensure(reject_bang_i, (VALUE)&args, select_bang_ensure, (VALUE)&args);
}
+/*
+ * call-seq:
+ * array.reject! {|element| ... } -> self or nil
+ * array.reject! -> new_enumerator
+ *
+ * Removes each element for which the block returns a truthy value.
+ *
+ * Returns +self+ if any elements removed:
+ *
+ * a = [:foo, 'bar', 2, 'bat']
+ * a.reject! {|element| element.to_s.start_with?('b') } # => [:foo, 2]
+ *
+ * Returns +nil+ if no elements removed.
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.reject! # => #<Enumerator: [:foo, "bar", 2]:reject!>
+ *
+ */
+
static VALUE
-rb_ary_delete_if(ary)
- VALUE ary;
+rb_ary_reject_bang(VALUE ary)
{
- rb_ary_reject_bang(ary);
- return ary;
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ rb_ary_modify(ary);
+ return ary_reject_bang(ary);
}
+/*
+ * call-seq:
+ * array.reject {|element| ... } -> new_array
+ * array.reject -> new_enumerator
+ *
+ * Returns a new \Array whose elements are all those from +self+
+ * for which the block returns +false+ or +nil+:
+ *
+ * a = [:foo, 'bar', 2, 'bat']
+ * a1 = a.reject {|element| element.to_s.start_with?('b') }
+ * a1 # => [:foo, 2]
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.reject # => #<Enumerator: [:foo, "bar", 2]:reject>
+ *
+ */
+
static VALUE
-rb_ary_replace_m(ary, ary2)
- VALUE ary, ary2;
+rb_ary_reject(VALUE ary)
{
- ary2 = to_ary(ary2);
- rb_ary_replace(ary, 0, RARRAY(ary)->len, ary2);
+ VALUE rejected_ary;
+
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ rejected_ary = rb_ary_new();
+ ary_reject(ary, rejected_ary);
+ return rejected_ary;
+}
+
+/*
+ * call-seq:
+ * array.delete_if {|element| ... } -> self
+ * array.delete_if -> Enumerator
+ *
+ * Removes each element in +self+ for which the block returns a truthy value;
+ * returns +self+:
+ *
+ * a = [:foo, 'bar', 2, 'bat']
+ * a.delete_if {|element| element.to_s.start_with?('b') } # => [:foo, 2]
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.delete_if # => #<Enumerator: [:foo, "bar", 2]:delete_if>
+ *
+3 */
+
+static VALUE
+rb_ary_delete_if(VALUE ary)
+{
+ ary_verify(ary);
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ ary_reject_bang(ary);
return ary;
}
static VALUE
-rb_ary_clear(ary)
- VALUE ary;
+take_i(RB_BLOCK_CALL_FUNC_ARGLIST(val, cbarg))
{
- rb_ary_modify(ary);
- RARRAY(ary)->len = 0;
- if (ARY_DEFAULT_SIZE*3 < RARRAY(ary)->capa) {
- RARRAY(ary)->capa = ARY_DEFAULT_SIZE * 2;
- REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->capa);
+ VALUE *args = (VALUE *)cbarg;
+ if (argc > 1) val = rb_ary_new4(argc, argv);
+ rb_ary_push(args[0], val);
+ if (--args[1] == 0) rb_iter_break();
+ return Qnil;
+}
+
+static VALUE
+take_items(VALUE obj, long n)
+{
+ VALUE result = rb_check_array_type(obj);
+ VALUE args[2];
+
+ if (n == 0) return result;
+ if (!NIL_P(result)) return rb_ary_subseq(result, 0, n);
+ result = rb_ary_new2(n);
+ args[0] = result; args[1] = (VALUE)n;
+ if (UNDEF_P(rb_check_block_call(obj, idEach, 0, 0, take_i, (VALUE)args)))
+ rb_raise(rb_eTypeError, "wrong argument type %"PRIsVALUE" (must respond to :each)",
+ rb_obj_class(obj));
+ return result;
+}
+
+
+/*
+ * call-seq:
+ * array.zip(*other_arrays) -> new_array
+ * array.zip(*other_arrays) {|other_array| ... } -> nil
+ *
+ * When no block given, returns a new \Array +new_array+ of size <tt>self.size</tt>
+ * whose elements are Arrays.
+ *
+ * Each nested array <tt>new_array[n]</tt> is of size <tt>other_arrays.size+1</tt>,
+ * and contains:
+ *
+ * - The _nth_ element of +self+.
+ * - The _nth_ element of each of the +other_arrays+.
+ *
+ * If all +other_arrays+ and +self+ are the same size:
+ *
+ * a = [:a0, :a1, :a2, :a3]
+ * b = [:b0, :b1, :b2, :b3]
+ * c = [:c0, :c1, :c2, :c3]
+ * d = a.zip(b, c)
+ * d # => [[:a0, :b0, :c0], [:a1, :b1, :c1], [:a2, :b2, :c2], [:a3, :b3, :c3]]
+ *
+ * If any array in +other_arrays+ is smaller than +self+,
+ * fills to <tt>self.size</tt> with +nil+:
+ *
+ * a = [:a0, :a1, :a2, :a3]
+ * b = [:b0, :b1, :b2]
+ * c = [:c0, :c1]
+ * d = a.zip(b, c)
+ * d # => [[:a0, :b0, :c0], [:a1, :b1, :c1], [:a2, :b2, nil], [:a3, nil, nil]]
+ *
+ * If any array in +other_arrays+ is larger than +self+,
+ * its trailing elements are ignored:
+ *
+ * a = [:a0, :a1, :a2, :a3]
+ * b = [:b0, :b1, :b2, :b3, :b4]
+ * c = [:c0, :c1, :c2, :c3, :c4, :c5]
+ * d = a.zip(b, c)
+ * d # => [[:a0, :b0, :c0], [:a1, :b1, :c1], [:a2, :b2, :c2], [:a3, :b3, :c3]]
+ *
+ * When a block is given, calls the block with each of the sub-arrays (formed as above); returns +nil+:
+ *
+ * a = [:a0, :a1, :a2, :a3]
+ * b = [:b0, :b1, :b2, :b3]
+ * c = [:c0, :c1, :c2, :c3]
+ * a.zip(b, c) {|sub_array| p sub_array} # => nil
+ *
+ * Output:
+ *
+ * [:a0, :b0, :c0]
+ * [:a1, :b1, :c1]
+ * [:a2, :b2, :c2]
+ * [:a3, :b3, :c3]
+ *
+ */
+
+static VALUE
+rb_ary_zip(int argc, VALUE *argv, VALUE ary)
+{
+ int i, j;
+ long len = RARRAY_LEN(ary);
+ VALUE result = Qnil;
+
+ for (i=0; i<argc; i++) {
+ argv[i] = take_items(argv[i], len);
+ }
+
+ if (rb_block_given_p()) {
+ int arity = rb_block_arity();
+
+ if (arity > 1) {
+ VALUE work, *tmp;
+
+ tmp = ALLOCV_N(VALUE, work, argc+1);
+
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ tmp[0] = RARRAY_AREF(ary, i);
+ for (j=0; j<argc; j++) {
+ tmp[j+1] = rb_ary_elt(argv[j], i);
+ }
+ rb_yield_values2(argc+1, tmp);
+ }
+
+ if (work) ALLOCV_END(work);
+ }
+ else {
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ VALUE tmp = rb_ary_new2(argc+1);
+
+ rb_ary_push(tmp, RARRAY_AREF(ary, i));
+ for (j=0; j<argc; j++) {
+ rb_ary_push(tmp, rb_ary_elt(argv[j], i));
+ }
+ rb_yield(tmp);
+ }
+ }
+ }
+ else {
+ result = rb_ary_new_capa(len);
+
+ for (i=0; i<len; i++) {
+ VALUE tmp = rb_ary_new_capa(argc+1);
+
+ rb_ary_push(tmp, RARRAY_AREF(ary, i));
+ for (j=0; j<argc; j++) {
+ rb_ary_push(tmp, rb_ary_elt(argv[j], i));
+ }
+ rb_ary_push(result, tmp);
+ }
+ }
+
+ return result;
+}
+
+/*
+ * call-seq:
+ * array.transpose -> new_array
+ *
+ * Transposes the rows and columns in an \Array of Arrays;
+ * the nested Arrays must all be the same size:
+ *
+ * a = [[:a0, :a1], [:b0, :b1], [:c0, :c1]]
+ * a.transpose # => [[:a0, :b0, :c0], [:a1, :b1, :c1]]
+ *
+ */
+
+static VALUE
+rb_ary_transpose(VALUE ary)
+{
+ long elen = -1, alen, i, j;
+ VALUE tmp, result = 0;
+
+ alen = RARRAY_LEN(ary);
+ if (alen == 0) return rb_ary_dup(ary);
+ for (i=0; i<alen; i++) {
+ tmp = to_ary(rb_ary_elt(ary, i));
+ if (elen < 0) { /* first element */
+ elen = RARRAY_LEN(tmp);
+ result = rb_ary_new2(elen);
+ for (j=0; j<elen; j++) {
+ rb_ary_store(result, j, rb_ary_new2(alen));
+ }
+ }
+ else if (elen != RARRAY_LEN(tmp)) {
+ rb_raise(rb_eIndexError, "element size differs (%ld should be %ld)",
+ RARRAY_LEN(tmp), elen);
+ }
+ for (j=0; j<elen; j++) {
+ rb_ary_store(rb_ary_elt(result, j), i, rb_ary_elt(tmp, j));
+ }
+ }
+ return result;
+}
+
+/*
+ * call-seq:
+ * array.replace(other_array) -> self
+ *
+ * Replaces the content of +self+ with the content of +other_array+; returns +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.replace(['foo', :bar, 3]) # => ["foo", :bar, 3]
+ *
+ */
+
+VALUE
+rb_ary_replace(VALUE copy, VALUE orig)
+{
+ rb_ary_modify_check(copy);
+ orig = to_ary(orig);
+ if (copy == orig) return copy;
+
+ rb_ary_reset(copy);
+
+ /* orig has enough space to embed the contents of orig. */
+ if (RARRAY_LEN(orig) <= ary_embed_capa(copy)) {
+ assert(ARY_EMBED_P(copy));
+ ary_memcpy(copy, 0, RARRAY_LEN(orig), RARRAY_CONST_PTR_TRANSIENT(orig));
+ ARY_SET_EMBED_LEN(copy, RARRAY_LEN(orig));
+ }
+#if USE_RVARGC
+ /* orig is embedded but copy does not have enough space to embed the
+ * contents of orig. */
+ else if (ARY_EMBED_P(orig)) {
+ long len = ARY_EMBED_LEN(orig);
+ VALUE *ptr = ary_heap_alloc(copy, len);
+
+ FL_UNSET_EMBED(copy);
+ ARY_SET_PTR(copy, ptr);
+ ARY_SET_LEN(copy, len);
+ ARY_SET_CAPA(copy, len);
+
+ // No allocation and exception expected that could leave `copy` in a
+ // bad state from the edits above.
+ ary_memcpy(copy, 0, len, RARRAY_CONST_PTR_TRANSIENT(orig));
+ }
+#endif
+ /* Otherwise, orig is on heap and copy does not have enough space to embed
+ * the contents of orig. */
+ else {
+ VALUE shared_root = ary_make_shared(orig);
+ FL_UNSET_EMBED(copy);
+ ARY_SET_PTR(copy, ARY_HEAP_PTR(orig));
+ ARY_SET_LEN(copy, ARY_HEAP_LEN(orig));
+ rb_ary_set_shared(copy, shared_root);
+ }
+ ary_verify(copy);
+ return copy;
+}
+
+/*
+ * call-seq:
+ * array.clear -> self
+ *
+ * Removes all elements from +self+:
+ *
+ * a = [:foo, 'bar', 2]
+ * a.clear # => []
+ *
+ */
+
+VALUE
+rb_ary_clear(VALUE ary)
+{
+ rb_ary_modify_check(ary);
+ if (ARY_SHARED_P(ary)) {
+ if (!ARY_EMBED_P(ary)) {
+ rb_ary_unshare(ary);
+ FL_SET_EMBED(ary);
+ ARY_SET_EMBED_LEN(ary, 0);
+ }
+ }
+ else {
+ ARY_SET_LEN(ary, 0);
+ if (ARY_DEFAULT_SIZE * 2 < ARY_CAPA(ary)) {
+ ary_resize_capa(ary, ARY_DEFAULT_SIZE * 2);
+ }
}
+ ary_verify(ary);
return ary;
}
+/*
+ * call-seq:
+ * array.fill(obj) -> self
+ * array.fill(obj, start) -> self
+ * array.fill(obj, start, length) -> self
+ * array.fill(obj, range) -> self
+ * array.fill {|index| ... } -> self
+ * array.fill(start) {|index| ... } -> self
+ * array.fill(start, length) {|index| ... } -> self
+ * array.fill(range) {|index| ... } -> self
+ *
+ * Replaces specified elements in +self+ with specified objects; returns +self+.
+ *
+ * With argument +obj+ and no block given, replaces all elements with that one object:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a # => ["a", "b", "c", "d"]
+ * a.fill(:X) # => [:X, :X, :X, :X]
+ *
+ * With arguments +obj+ and \Integer +start+, and no block given,
+ * replaces elements based on the given start.
+ *
+ * If +start+ is in range (<tt>0 <= start < array.size</tt>),
+ * replaces all elements from offset +start+ through the end:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, 2) # => ["a", "b", :X, :X]
+ *
+ * If +start+ is too large (<tt>start >= array.size</tt>), does nothing:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, 4) # => ["a", "b", "c", "d"]
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, 5) # => ["a", "b", "c", "d"]
+ *
+ * If +start+ is negative, counts from the end (starting index is <tt>start + array.size</tt>):
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, -2) # => ["a", "b", :X, :X]
+ *
+ * If +start+ is too small (less than and far from zero), replaces all elements:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, -6) # => [:X, :X, :X, :X]
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, -50) # => [:X, :X, :X, :X]
+ *
+ * With arguments +obj+, \Integer +start+, and \Integer +length+, and no block given,
+ * replaces elements based on the given +start+ and +length+.
+ *
+ * If +start+ is in range, replaces +length+ elements beginning at offset +start+:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, 1, 1) # => ["a", :X, "c", "d"]
+ *
+ * If +start+ is negative, counts from the end:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, -2, 1) # => ["a", "b", :X, "d"]
+ *
+ * If +start+ is large (<tt>start >= array.size</tt>), extends +self+ with +nil+:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, 5, 0) # => ["a", "b", "c", "d", nil]
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, 5, 2) # => ["a", "b", "c", "d", nil, :X, :X]
+ *
+ * If +length+ is zero or negative, replaces no elements:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, 1, 0) # => ["a", "b", "c", "d"]
+ * a.fill(:X, 1, -1) # => ["a", "b", "c", "d"]
+ *
+ * With arguments +obj+ and \Range +range+, and no block given,
+ * replaces elements based on the given range.
+ *
+ * If the range is positive and ascending (<tt>0 < range.begin <= range.end</tt>),
+ * replaces elements from <tt>range.begin</tt> to <tt>range.end</tt>:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, (1..1)) # => ["a", :X, "c", "d"]
+ *
+ * If <tt>range.first</tt> is negative, replaces no elements:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, (-1..1)) # => ["a", "b", "c", "d"]
+ *
+ * If <tt>range.last</tt> is negative, counts from the end:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, (0..-2)) # => [:X, :X, :X, "d"]
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, (1..-2)) # => ["a", :X, :X, "d"]
+ *
+ * If <tt>range.last</tt> and <tt>range.last</tt> are both negative,
+ * both count from the end of the array:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, (-1..-1)) # => ["a", "b", "c", :X]
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(:X, (-2..-2)) # => ["a", "b", :X, "d"]
+ *
+ * With no arguments and a block given, calls the block with each index;
+ * replaces the corresponding element with the block's return value:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "new_3"]
+ *
+ * With argument +start+ and a block given, calls the block with each index
+ * from offset +start+ to the end; replaces the corresponding element
+ * with the block's return value.
+ *
+ * If start is in range (<tt>0 <= start < array.size</tt>),
+ * replaces from offset +start+ to the end:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(1) { |index| "new_#{index}" } # => ["a", "new_1", "new_2", "new_3"]
+ *
+ * If +start+ is too large(<tt>start >= array.size</tt>), does nothing:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(4) { |index| fail 'Cannot happen' } # => ["a", "b", "c", "d"]
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(4) { |index| fail 'Cannot happen' } # => ["a", "b", "c", "d"]
+ *
+ * If +start+ is negative, counts from the end:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(-2) { |index| "new_#{index}" } # => ["a", "b", "new_2", "new_3"]
+ *
+ * If start is too small (<tt>start <= -array.size</tt>, replaces all elements:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(-6) { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "new_3"]
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(-50) { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "new_3"]
+ *
+ * With arguments +start+ and +length+, and a block given,
+ * calls the block for each index specified by start length;
+ * replaces the corresponding element with the block's return value.
+ *
+ * If +start+ is in range, replaces +length+ elements beginning at offset +start+:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(1, 1) { |index| "new_#{index}" } # => ["a", "new_1", "c", "d"]
+ *
+ * If start is negative, counts from the end:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(-2, 1) { |index| "new_#{index}" } # => ["a", "b", "new_2", "d"]
+ *
+ * If +start+ is large (<tt>start >= array.size</tt>), extends +self+ with +nil+:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(5, 0) { |index| "new_#{index}" } # => ["a", "b", "c", "d", nil]
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(5, 2) { |index| "new_#{index}" } # => ["a", "b", "c", "d", nil, "new_5", "new_6"]
+ *
+ * If +length+ is zero or less, replaces no elements:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(1, 0) { |index| "new_#{index}" } # => ["a", "b", "c", "d"]
+ * a.fill(1, -1) { |index| "new_#{index}" } # => ["a", "b", "c", "d"]
+ *
+ * With arguments +obj+ and +range+, and a block given,
+ * calls the block with each index in the given range;
+ * replaces the corresponding element with the block's return value.
+ *
+ * If the range is positive and ascending (<tt>range 0 < range.begin <= range.end</tt>,
+ * replaces elements from <tt>range.begin</tt> to <tt>range.end</tt>:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(1..1) { |index| "new_#{index}" } # => ["a", "new_1", "c", "d"]
+ *
+ * If +range.first+ is negative, does nothing:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(-1..1) { |index| fail 'Cannot happen' } # => ["a", "b", "c", "d"]
+ *
+ * If <tt>range.last</tt> is negative, counts from the end:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(0..-2) { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "d"]
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(1..-2) { |index| "new_#{index}" } # => ["a", "new_1", "new_2", "d"]
+ *
+ * If <tt>range.first</tt> and <tt>range.last</tt> are both negative,
+ * both count from the end:
+ *
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(-1..-1) { |index| "new_#{index}" } # => ["a", "b", "c", "new_3"]
+ * a = ['a', 'b', 'c', 'd']
+ * a.fill(-2..-2) { |index| "new_#{index}" } # => ["a", "b", "new_2", "d"]
+ *
+ */
+
static VALUE
-rb_ary_fill(argc, argv, ary)
- int argc;
- VALUE *argv;
- VALUE ary;
+rb_ary_fill(int argc, VALUE *argv, VALUE ary)
{
- VALUE item, arg1, arg2;
- long beg, end, len;
- VALUE *p, *pend;
+ VALUE item = Qundef, arg1, arg2;
+ long beg = 0, end = 0, len = 0;
- rb_scan_args(argc, argv, "12", &item, &arg1, &arg2);
+ if (rb_block_given_p()) {
+ rb_scan_args(argc, argv, "02", &arg1, &arg2);
+ argc += 1; /* hackish */
+ }
+ else {
+ rb_scan_args(argc, argv, "12", &item, &arg1, &arg2);
+ }
switch (argc) {
case 1:
- beg = 0;
- len = RARRAY(ary)->len - beg;
- break;
+ beg = 0;
+ len = RARRAY_LEN(ary);
+ break;
case 2:
- if (rb_range_beg_len(arg1, &beg, &len, RARRAY(ary)->len, 1)) {
- break;
- }
- /* fall through */
+ if (rb_range_beg_len(arg1, &beg, &len, RARRAY_LEN(ary), 1)) {
+ break;
+ }
+ /* fall through */
case 3:
- beg = NIL_P(arg1)?0:NUM2LONG(arg1);
- if (beg < 0) {
- beg = RARRAY(ary)->len + beg;
- if (beg < 0) beg = 0;
- }
- len = NIL_P(arg2)?RARRAY(ary)->len - beg:NUM2LONG(arg2);
- break;
+ beg = NIL_P(arg1) ? 0 : NUM2LONG(arg1);
+ if (beg < 0) {
+ beg = RARRAY_LEN(ary) + beg;
+ if (beg < 0) beg = 0;
+ }
+ len = NIL_P(arg2) ? RARRAY_LEN(ary) - beg : NUM2LONG(arg2);
+ break;
}
rb_ary_modify(ary);
+ if (len < 0) {
+ return ary;
+ }
+ if (beg >= ARY_MAX_SIZE || len > ARY_MAX_SIZE - beg) {
+ rb_raise(rb_eArgError, "argument too big");
+ }
end = beg + len;
- if (end > RARRAY(ary)->len) {
- if (end >= RARRAY(ary)->capa) {
- RARRAY(ary)->capa=end;
- REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->capa);
- }
- if (beg > RARRAY(ary)->len) {
- rb_mem_clear(RARRAY(ary)->ptr+RARRAY(ary)->len,end-RARRAY(ary)->len);
- }
- RARRAY(ary)->len = end;
+ if (RARRAY_LEN(ary) < end) {
+ if (end >= ARY_CAPA(ary)) {
+ ary_resize_capa(ary, end);
+ }
+ ary_mem_clear(ary, RARRAY_LEN(ary), end - RARRAY_LEN(ary));
+ ARY_SET_LEN(ary, end);
}
- p = RARRAY(ary)->ptr + beg; pend = p + len;
- while (p < pend) {
- *p++ = item;
+ if (UNDEF_P(item)) {
+ VALUE v;
+ long i;
+
+ for (i=beg; i<end; i++) {
+ v = rb_yield(LONG2NUM(i));
+ if (i>=RARRAY_LEN(ary)) break;
+ ARY_SET(ary, i, v);
+ }
+ }
+ else {
+ ary_memfill(ary, beg, len, item);
}
return ary;
}
+/*
+ * call-seq:
+ * array + other_array -> new_array
+ *
+ * Returns a new \Array containing all elements of +array+
+ * followed by all elements of +other_array+:
+ *
+ * a = [0, 1] + [2, 3]
+ * a # => [0, 1, 2, 3]
+ *
+ * Related: #concat.
+ */
+
VALUE
-rb_ary_plus(x, y)
- VALUE x, y;
+rb_ary_plus(VALUE x, VALUE y)
{
VALUE z;
+ long len, xlen, ylen;
- Check_Type(y, T_ARRAY);
+ y = to_ary(y);
+ xlen = RARRAY_LEN(x);
+ ylen = RARRAY_LEN(y);
+ len = xlen + ylen;
+ z = rb_ary_new2(len);
- z = rb_ary_new2(RARRAY(x)->len + RARRAY(y)->len);
- MEMCPY(RARRAY(z)->ptr, RARRAY(x)->ptr, VALUE, RARRAY(x)->len);
- MEMCPY(RARRAY(z)->ptr+RARRAY(x)->len, RARRAY(y)->ptr, VALUE, RARRAY(y)->len);
- RARRAY(z)->len = RARRAY(x)->len + RARRAY(y)->len;
+ ary_memcpy(z, 0, xlen, RARRAY_CONST_PTR_TRANSIENT(x));
+ ary_memcpy(z, xlen, ylen, RARRAY_CONST_PTR_TRANSIENT(y));
+ ARY_SET_LEN(z, len);
return z;
}
-VALUE
-rb_ary_concat(x, y)
- VALUE x, y;
+static VALUE
+ary_append(VALUE x, VALUE y)
{
- Check_Type(y, T_ARRAY);
-
- rb_ary_push_m(RARRAY(y)->len, RARRAY(y)->ptr, x);
+ long n = RARRAY_LEN(y);
+ if (n > 0) {
+ rb_ary_splice(x, RARRAY_LEN(x), 0, RARRAY_CONST_PTR_TRANSIENT(y), n);
+ }
+ RB_GC_GUARD(y);
return x;
}
+/*
+ * call-seq:
+ * array.concat(*other_arrays) -> self
+ *
+ * Adds to +array+ all elements from each \Array in +other_arrays+; returns +self+:
+ *
+ * a = [0, 1]
+ * a.concat([2, 3], [4, 5]) # => [0, 1, 2, 3, 4, 5]
+ */
+
static VALUE
-rb_ary_times(ary, times)
- VALUE ary;
- VALUE times;
+rb_ary_concat_multi(int argc, VALUE *argv, VALUE ary)
{
- VALUE ary2;
- long i, len;
+ rb_ary_modify_check(ary);
- if (TYPE(times) == T_STRING) {
- return rb_ary_join(ary, times);
+ if (argc == 1) {
+ rb_ary_concat(ary, argv[0]);
}
-
- len = NUM2LONG(times);
- if (len < 0) {
- rb_raise(rb_eArgError, "negative argument");
+ else if (argc > 1) {
+ int i;
+ VALUE args = rb_ary_hidden_new(argc);
+ for (i = 0; i < argc; i++) {
+ rb_ary_concat(args, argv[i]);
+ }
+ ary_append(ary, args);
}
- len *= RARRAY(ary)->len;
- ary2 = rb_ary_new2(len);
- RARRAY(ary2)->len = len;
+ ary_verify(ary);
+ return ary;
+}
+
+VALUE
+rb_ary_concat(VALUE x, VALUE y)
+{
+ return ary_append(x, to_ary(y));
+}
+
+/*
+ * call-seq:
+ * array * n -> new_array
+ * array * string_separator -> new_string
+ *
+ * When non-negative argument \Integer +n+ is given,
+ * returns a new \Array built by concatenating the +n+ copies of +self+:
+ *
+ * a = ['x', 'y']
+ * a * 3 # => ["x", "y", "x", "y", "x", "y"]
+ *
+ * When \String argument +string_separator+ is given,
+ * equivalent to <tt>array.join(string_separator)</tt>:
+ *
+ * [0, [0, 1], {foo: 0}] * ', ' # => "0, 0, 1, {:foo=>0}"
+ *
+ */
+
+static VALUE
+rb_ary_times(VALUE ary, VALUE times)
+{
+ VALUE ary2, tmp;
+ const VALUE *ptr;
+ long t, len;
- for (i=0; i<len; i+=RARRAY(ary)->len) {
- MEMCPY(RARRAY(ary2)->ptr+i, RARRAY(ary)->ptr, VALUE, RARRAY(ary)->len);
+ tmp = rb_check_string_type(times);
+ if (!NIL_P(tmp)) {
+ return rb_ary_join(ary, tmp);
}
+ len = NUM2LONG(times);
+ if (len == 0) {
+ ary2 = ary_new(rb_cArray, 0);
+ goto out;
+ }
+ if (len < 0) {
+ rb_raise(rb_eArgError, "negative argument");
+ }
+ if (ARY_MAX_SIZE/len < RARRAY_LEN(ary)) {
+ rb_raise(rb_eArgError, "argument too big");
+ }
+ len *= RARRAY_LEN(ary);
+
+ ary2 = ary_new(rb_cArray, len);
+ ARY_SET_LEN(ary2, len);
+
+ ptr = RARRAY_CONST_PTR_TRANSIENT(ary);
+ t = RARRAY_LEN(ary);
+ if (0 < t) {
+ ary_memcpy(ary2, 0, t, ptr);
+ while (t <= len/2) {
+ ary_memcpy(ary2, t, t, RARRAY_CONST_PTR_TRANSIENT(ary2));
+ t *= 2;
+ }
+ if (t < len) {
+ ary_memcpy(ary2, t, len-t, RARRAY_CONST_PTR_TRANSIENT(ary2));
+ }
+ }
+ out:
return ary2;
}
+/*
+ * call-seq:
+ * array.assoc(obj) -> found_array or nil
+ *
+ * Returns the first element in +self+ that is an \Array
+ * whose first element <tt>==</tt> +obj+:
+ *
+ * a = [{foo: 0}, [2, 4], [4, 5, 6], [4, 5]]
+ * a.assoc(4) # => [4, 5, 6]
+ *
+ * Returns +nil+ if no such element is found.
+ *
+ * Related: #rassoc.
+ */
+
VALUE
-rb_ary_assoc(ary, key)
- VALUE ary;
- VALUE key;
+rb_ary_assoc(VALUE ary, VALUE key)
{
- VALUE *p, *pend;
+ long i;
+ VALUE v;
- p = RARRAY(ary)->ptr; pend = p + RARRAY(ary)->len;
- while (p < pend) {
- if (TYPE(*p) == T_ARRAY
- && RARRAY(*p)->len > 0
- && rb_equal(RARRAY(*p)->ptr[0], key))
- return *p;
- p++;
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ v = rb_check_array_type(RARRAY_AREF(ary, i));
+ if (!NIL_P(v) && RARRAY_LEN(v) > 0 &&
+ rb_equal(RARRAY_AREF(v, 0), key))
+ return v;
}
return Qnil;
}
+/*
+ * call-seq:
+ * array.rassoc(obj) -> found_array or nil
+ *
+ * Returns the first element in +self+ that is an \Array
+ * whose second element <tt>==</tt> +obj+:
+ *
+ * a = [{foo: 0}, [2, 4], [4, 5, 6], [4, 5]]
+ * a.rassoc(4) # => [2, 4]
+ *
+ * Returns +nil+ if no such element is found.
+ *
+ * Related: #assoc.
+ */
+
VALUE
-rb_ary_rassoc(ary, value)
- VALUE ary;
- VALUE value;
+rb_ary_rassoc(VALUE ary, VALUE value)
{
- VALUE *p, *pend;
+ long i;
+ VALUE v;
- p = RARRAY(ary)->ptr; pend = p + RARRAY(ary)->len;
- while (p < pend) {
- if (TYPE(*p) == T_ARRAY
- && RARRAY(*p)->len > 1
- && rb_equal(RARRAY(*p)->ptr[1], value))
- return *p;
- p++;
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ v = RARRAY_AREF(ary, i);
+ if (RB_TYPE_P(v, T_ARRAY) &&
+ RARRAY_LEN(v) > 1 &&
+ rb_equal(RARRAY_AREF(v, 1), value))
+ return v;
}
return Qnil;
}
static VALUE
-rb_ary_equal(ary1, ary2)
- VALUE ary1, ary2;
+recursive_equal(VALUE ary1, VALUE ary2, int recur)
{
- long i;
-
- if (TYPE(ary2) != T_ARRAY) return Qfalse;
- if (RARRAY(ary1)->len != RARRAY(ary2)->len) return Qfalse;
- for (i=0; i<RARRAY(ary1)->len; i++) {
- if (!rb_equal(RARRAY(ary1)->ptr[i], RARRAY(ary2)->ptr[i]))
- return Qfalse;
+ long i, len1;
+ const VALUE *p1, *p2;
+
+ if (recur) return Qtrue; /* Subtle! */
+
+ /* rb_equal() can evacuate ptrs */
+ p1 = RARRAY_CONST_PTR(ary1);
+ p2 = RARRAY_CONST_PTR(ary2);
+ len1 = RARRAY_LEN(ary1);
+
+ for (i = 0; i < len1; i++) {
+ if (*p1 != *p2) {
+ if (rb_equal(*p1, *p2)) {
+ len1 = RARRAY_LEN(ary1);
+ if (len1 != RARRAY_LEN(ary2))
+ return Qfalse;
+ if (len1 < i)
+ return Qtrue;
+ p1 = RARRAY_CONST_PTR(ary1) + i;
+ p2 = RARRAY_CONST_PTR(ary2) + i;
+ }
+ else {
+ return Qfalse;
+ }
+ }
+ p1++;
+ p2++;
}
return Qtrue;
}
+/*
+ * call-seq:
+ * array == other_array -> true or false
+ *
+ * Returns +true+ if both <tt>array.size == other_array.size</tt>
+ * and for each index +i+ in +array+, <tt>array[i] == other_array[i]</tt>:
+ *
+ * a0 = [:foo, 'bar', 2]
+ * a1 = [:foo, 'bar', 2.0]
+ * a1 == a0 # => true
+ * [] == [] # => true
+ *
+ * Otherwise, returns +false+.
+ *
+ * This method is different from method Array#eql?,
+ * which compares elements using <tt>Object#eql?</tt>.
+ */
+
+static VALUE
+rb_ary_equal(VALUE ary1, VALUE ary2)
+{
+ if (ary1 == ary2) return Qtrue;
+ if (!RB_TYPE_P(ary2, T_ARRAY)) {
+ if (!rb_respond_to(ary2, idTo_ary)) {
+ return Qfalse;
+ }
+ return rb_equal(ary2, ary1);
+ }
+ if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return Qfalse;
+ if (RARRAY_CONST_PTR_TRANSIENT(ary1) == RARRAY_CONST_PTR_TRANSIENT(ary2)) return Qtrue;
+ return rb_exec_recursive_paired(recursive_equal, ary1, ary2, ary2);
+}
+
static VALUE
-rb_ary_eql(ary1, ary2)
- VALUE ary1, ary2;
+recursive_eql(VALUE ary1, VALUE ary2, int recur)
{
long i;
- if (TYPE(ary2) != T_ARRAY) return Qfalse;
- if (RARRAY(ary1)->len != RARRAY(ary2)->len)
- return Qfalse;
- for (i=0; i<RARRAY(ary1)->len; i++) {
- if (!rb_eql(RARRAY(ary1)->ptr[i], RARRAY(ary2)->ptr[i]))
- return Qfalse;
+ if (recur) return Qtrue; /* Subtle! */
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ if (!rb_eql(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
+ return Qfalse;
}
return Qtrue;
}
+/*
+ * call-seq:
+ * array.eql? other_array -> true or false
+ *
+ * Returns +true+ if +self+ and +other_array+ are the same size,
+ * and if, for each index +i+ in +self+, <tt>self[i].eql? other_array[i]</tt>:
+ *
+ * a0 = [:foo, 'bar', 2]
+ * a1 = [:foo, 'bar', 2]
+ * a1.eql?(a0) # => true
+ *
+ * Otherwise, returns +false+.
+ *
+ * This method is different from method Array#==,
+ * which compares using method <tt>Object#==</tt>.
+ */
+
static VALUE
-rb_ary_hash(ary)
- VALUE ary;
+rb_ary_eql(VALUE ary1, VALUE ary2)
{
- long i;
- int n, h;
+ if (ary1 == ary2) return Qtrue;
+ if (!RB_TYPE_P(ary2, T_ARRAY)) return Qfalse;
+ if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return Qfalse;
+ if (RARRAY_CONST_PTR_TRANSIENT(ary1) == RARRAY_CONST_PTR_TRANSIENT(ary2)) return Qtrue;
+ return rb_exec_recursive_paired(recursive_eql, ary1, ary2, ary2);
+}
+
+/*
+ * call-seq:
+ * array.hash -> integer
+ *
+ * Returns the integer hash value for +self+.
+ *
+ * Two arrays with the same content will have the same hash code (and will compare using eql?):
+ *
+ * [0, 1, 2].hash == [0, 1, 2].hash # => true
+ * [0, 1, 2].hash == [0, 1, 3].hash # => false
+ *
+ */
- h = RARRAY(ary)->len;
- for (i=0; i<RARRAY(ary)->len; i++) {
- h = (h<<1) | (h<0 ? 1 : 0);
- n = rb_hash(RARRAY(ary)->ptr[i]);
- h ^= NUM2LONG(n);
+static VALUE
+rb_ary_hash(VALUE ary)
+{
+ long i;
+ st_index_t h;
+ VALUE n;
+
+ h = rb_hash_start(RARRAY_LEN(ary));
+ h = rb_hash_uint(h, (st_index_t)rb_ary_hash);
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ n = rb_hash(RARRAY_AREF(ary, i));
+ h = rb_hash_uint(h, NUM2LONG(n));
}
- return INT2FIX(h);
+ h = rb_hash_end(h);
+ return ST2FIX(h);
}
+/*
+ * call-seq:
+ * array.include?(obj) -> true or false
+ *
+ * Returns +true+ if for some index +i+ in +self+, <tt>obj == self[i]</tt>;
+ * otherwise +false+:
+ *
+ * [0, 1, 2].include?(2) # => true
+ * [0, 1, 2].include?(3) # => false
+ */
+
VALUE
-rb_ary_includes(ary, item)
- VALUE ary;
- VALUE item;
+rb_ary_includes(VALUE ary, VALUE item)
{
long i;
- for (i=0; i<RARRAY(ary)->len; i++) {
- if (rb_equal(RARRAY(ary)->ptr[i], item)) {
- return Qtrue;
- }
+ VALUE e;
+
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ e = RARRAY_AREF(ary, i);
+ if (rb_equal(e, item)) {
+ return Qtrue;
+ }
}
return Qfalse;
}
static VALUE
-rb_ary_cmp(ary, ary2)
- VALUE ary;
- VALUE ary2;
+rb_ary_includes_by_eql(VALUE ary, VALUE item)
+{
+ long i;
+ VALUE e;
+
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ e = RARRAY_AREF(ary, i);
+ if (rb_eql(item, e)) {
+ return Qtrue;
+ }
+ }
+ return Qfalse;
+}
+
+static VALUE
+recursive_cmp(VALUE ary1, VALUE ary2, int recur)
{
long i, len;
- ary2 = to_ary(ary2);
- len = RARRAY(ary)->len;
- if (len > RARRAY(ary2)->len) {
- len = RARRAY(ary2)->len;
+ if (recur) return Qundef; /* Subtle! */
+ len = RARRAY_LEN(ary1);
+ if (len > RARRAY_LEN(ary2)) {
+ len = RARRAY_LEN(ary2);
}
for (i=0; i<len; i++) {
- VALUE v = rb_funcall(RARRAY(ary)->ptr[i],cmp,1,RARRAY(ary2)->ptr[i]);
- if (v != INT2FIX(0)) {
- return v;
- }
+ VALUE e1 = rb_ary_elt(ary1, i), e2 = rb_ary_elt(ary2, i);
+ VALUE v = rb_funcallv(e1, id_cmp, 1, &e2);
+ if (v != INT2FIX(0)) {
+ return v;
+ }
}
- len = RARRAY(ary)->len - RARRAY(ary2)->len;
+ return Qundef;
+}
+
+/*
+ * call-seq:
+ * array <=> other_array -> -1, 0, or 1
+ *
+ * Returns -1, 0, or 1 as +self+ is less than, equal to, or greater than +other_array+.
+ * For each index +i+ in +self+, evaluates <tt>result = self[i] <=> other_array[i]</tt>.
+ *
+ * Returns -1 if any result is -1:
+ *
+ * [0, 1, 2] <=> [0, 1, 3] # => -1
+ *
+ * Returns 1 if any result is 1:
+ *
+ * [0, 1, 2] <=> [0, 1, 1] # => 1
+ *
+ * When all results are zero:
+ *
+ * - Returns -1 if +array+ is smaller than +other_array+:
+ *
+ * [0, 1, 2] <=> [0, 1, 2, 3] # => -1
+ *
+ * - Returns 1 if +array+ is larger than +other_array+:
+ *
+ * [0, 1, 2] <=> [0, 1] # => 1
+ *
+ * - Returns 0 if +array+ and +other_array+ are the same size:
+ *
+ * [0, 1, 2] <=> [0, 1, 2] # => 0
+ *
+ */
+
+VALUE
+rb_ary_cmp(VALUE ary1, VALUE ary2)
+{
+ long len;
+ VALUE v;
+
+ ary2 = rb_check_array_type(ary2);
+ if (NIL_P(ary2)) return Qnil;
+ if (ary1 == ary2) return INT2FIX(0);
+ v = rb_exec_recursive_paired(recursive_cmp, ary1, ary2, ary2);
+ if (!UNDEF_P(v)) return v;
+ len = RARRAY_LEN(ary1) - RARRAY_LEN(ary2);
if (len == 0) return INT2FIX(0);
if (len > 0) return INT2FIX(1);
return INT2FIX(-1);
}
static VALUE
-rb_ary_diff(ary1, ary2)
- VALUE ary1, ary2;
+ary_add_hash(VALUE hash, VALUE ary)
+{
+ long i;
+
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ VALUE elt = RARRAY_AREF(ary, i);
+ rb_hash_add_new_element(hash, elt, elt);
+ }
+ return hash;
+}
+
+static inline VALUE
+ary_tmp_hash_new(VALUE ary)
+{
+ long size = RARRAY_LEN(ary);
+ VALUE hash = rb_hash_new_with_size(size);
+
+ RBASIC_CLEAR_CLASS(hash);
+ return hash;
+}
+
+static VALUE
+ary_make_hash(VALUE ary)
+{
+ VALUE hash = ary_tmp_hash_new(ary);
+ return ary_add_hash(hash, ary);
+}
+
+static VALUE
+ary_add_hash_by(VALUE hash, VALUE ary)
+{
+ long i;
+
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ VALUE v = rb_ary_elt(ary, i), k = rb_yield(v);
+ rb_hash_add_new_element(hash, k, v);
+ }
+ return hash;
+}
+
+static VALUE
+ary_make_hash_by(VALUE ary)
+{
+ VALUE hash = ary_tmp_hash_new(ary);
+ return ary_add_hash_by(hash, ary);
+}
+
+static inline void
+ary_recycle_hash(VALUE hash)
+{
+ assert(RBASIC_CLASS(hash) == 0);
+ if (RHASH_ST_TABLE_P(hash)) {
+ st_table *tbl = RHASH_ST_TABLE(hash);
+ st_free_table(tbl);
+ RHASH_ST_CLEAR(hash);
+ }
+}
+
+/*
+ * call-seq:
+ * array - other_array -> new_array
+ *
+ * Returns a new \Array containing only those elements from +array+
+ * that are not found in \Array +other_array+;
+ * items are compared using <tt>eql?</tt>;
+ * the order from +array+ is preserved:
+ *
+ * [0, 1, 1, 2, 1, 1, 3, 1, 1] - [1] # => [0, 2, 3]
+ * [0, 1, 2, 3] - [3, 0] # => [1, 2]
+ * [0, 1, 2] - [4] # => [0, 1, 2]
+ *
+ * Related: Array#difference.
+ */
+
+VALUE
+rb_ary_diff(VALUE ary1, VALUE ary2)
{
VALUE ary3;
+ VALUE hash;
long i;
ary2 = to_ary(ary2);
+ if (RARRAY_LEN(ary2) == 0) { return ary_make_shared_copy(ary1); }
ary3 = rb_ary_new();
- for (i=0; i<RARRAY(ary1)->len; i++) {
- if (rb_ary_includes(ary2, RARRAY(ary1)->ptr[i])) continue;
- if (rb_ary_includes(ary3, RARRAY(ary1)->ptr[i])) continue;
- rb_ary_push(ary3, RARRAY(ary1)->ptr[i]);
+
+ if (RARRAY_LEN(ary1) <= SMALL_ARRAY_LEN || RARRAY_LEN(ary2) <= SMALL_ARRAY_LEN) {
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ VALUE elt = rb_ary_elt(ary1, i);
+ if (rb_ary_includes_by_eql(ary2, elt)) continue;
+ rb_ary_push(ary3, elt);
+ }
+ return ary3;
+ }
+
+ hash = ary_make_hash(ary2);
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ if (rb_hash_stlike_lookup(hash, RARRAY_AREF(ary1, i), NULL)) continue;
+ rb_ary_push(ary3, rb_ary_elt(ary1, i));
}
+ ary_recycle_hash(hash);
return ary3;
}
+/*
+ * call-seq:
+ * array.difference(*other_arrays) -> new_array
+ *
+ * Returns a new \Array containing only those elements from +self+
+ * that are not found in any of the Arrays +other_arrays+;
+ * items are compared using <tt>eql?</tt>; order from +self+ is preserved:
+ *
+ * [0, 1, 1, 2, 1, 1, 3, 1, 1].difference([1]) # => [0, 2, 3]
+ * [0, 1, 2, 3].difference([3, 0], [1, 3]) # => [2]
+ * [0, 1, 2].difference([4]) # => [0, 1, 2]
+ *
+ * Returns a copy of +self+ if no arguments given.
+ *
+ * Related: Array#-.
+ */
+
static VALUE
-rb_ary_and(ary1, ary2)
- VALUE ary1, ary2;
+rb_ary_difference_multi(int argc, VALUE *argv, VALUE ary)
{
- VALUE ary3;
+ VALUE ary_diff;
+ long i, length;
+ volatile VALUE t0;
+ bool *is_hash = ALLOCV_N(bool, t0, argc);
+ ary_diff = rb_ary_new();
+ length = RARRAY_LEN(ary);
+
+ for (i = 0; i < argc; i++) {
+ argv[i] = to_ary(argv[i]);
+ is_hash[i] = (length > SMALL_ARRAY_LEN && RARRAY_LEN(argv[i]) > SMALL_ARRAY_LEN);
+ if (is_hash[i]) argv[i] = ary_make_hash(argv[i]);
+ }
+
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ int j;
+ VALUE elt = rb_ary_elt(ary, i);
+ for (j = 0; j < argc; j++) {
+ if (is_hash[j]) {
+ if (rb_hash_stlike_lookup(argv[j], RARRAY_AREF(ary, i), NULL))
+ break;
+ }
+ else {
+ if (rb_ary_includes_by_eql(argv[j], elt)) break;
+ }
+ }
+ if (j == argc) rb_ary_push(ary_diff, elt);
+ }
+
+ ALLOCV_END(t0);
+
+ return ary_diff;
+}
+
+
+/*
+ * call-seq:
+ * array & other_array -> new_array
+ *
+ * Returns a new \Array containing each element found in both +array+ and \Array +other_array+;
+ * duplicates are omitted; items are compared using <tt>eql?</tt>:
+ *
+ * [0, 1, 2, 3] & [1, 2] # => [1, 2]
+ * [0, 1, 0, 1] & [0, 1] # => [0, 1]
+ *
+ * Preserves order from +array+:
+ *
+ * [0, 1, 2] & [3, 2, 1, 0] # => [0, 1, 2]
+ *
+ * Related: Array#intersection.
+ */
+
+
+static VALUE
+rb_ary_and(VALUE ary1, VALUE ary2)
+{
+ VALUE hash, ary3, v;
+ st_data_t vv;
long i;
ary2 = to_ary(ary2);
ary3 = rb_ary_new();
- for (i=0; i<RARRAY(ary1)->len; i++) {
- if (rb_ary_includes(ary2, RARRAY(ary1)->ptr[i])
- && !rb_ary_includes(ary3, RARRAY(ary1)->ptr[i])) {
- rb_ary_push(ary3, RARRAY(ary1)->ptr[i]);
- }
+ if (RARRAY_LEN(ary1) == 0 || RARRAY_LEN(ary2) == 0) return ary3;
+
+ if (RARRAY_LEN(ary1) <= SMALL_ARRAY_LEN && RARRAY_LEN(ary2) <= SMALL_ARRAY_LEN) {
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ v = RARRAY_AREF(ary1, i);
+ if (!rb_ary_includes_by_eql(ary2, v)) continue;
+ if (rb_ary_includes_by_eql(ary3, v)) continue;
+ rb_ary_push(ary3, v);
+ }
+ return ary3;
}
+
+ hash = ary_make_hash(ary2);
+
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ v = RARRAY_AREF(ary1, i);
+ vv = (st_data_t)v;
+ if (rb_hash_stlike_delete(hash, &vv, 0)) {
+ rb_ary_push(ary3, v);
+ }
+ }
+ ary_recycle_hash(hash);
+
return ary3;
}
+/*
+ * call-seq:
+ * array.intersection(*other_arrays) -> new_array
+ *
+ * Returns a new \Array containing each element found both in +self+
+ * and in all of the given Arrays +other_arrays+;
+ * duplicates are omitted; items are compared using <tt>eql?</tt>:
+ *
+ * [0, 1, 2, 3].intersection([0, 1, 2], [0, 1, 3]) # => [0, 1]
+ * [0, 0, 1, 1, 2, 3].intersection([0, 1, 2], [0, 1, 3]) # => [0, 1]
+ *
+ * Preserves order from +self+:
+ *
+ * [0, 1, 2].intersection([2, 1, 0]) # => [0, 1, 2]
+ *
+ * Returns a copy of +self+ if no arguments given.
+ *
+ * Related: Array#&.
+ */
+
static VALUE
-rb_ary_or(ary1, ary2)
- VALUE ary1, ary2;
+rb_ary_intersection_multi(int argc, VALUE *argv, VALUE ary)
{
- VALUE ary3;
- long i;
+ VALUE result = rb_ary_dup(ary);
+ int i;
- if (TYPE(ary2) != T_ARRAY) {
- if (rb_ary_includes(ary1, ary2)) return ary1;
- else return rb_ary_push(ary1, ary2);
+ for (i = 0; i < argc; i++) {
+ result = rb_ary_and(result, argv[i]);
}
- ary3 = rb_ary_new();
- for (i=0; i<RARRAY(ary1)->len; i++) {
- if (!rb_ary_includes(ary3, RARRAY(ary1)->ptr[i]))
- rb_ary_push(ary3, RARRAY(ary1)->ptr[i]);
+ return result;
+}
+
+static int
+ary_hash_orset(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
+{
+ if (existing) return ST_STOP;
+ *key = *value = (VALUE)arg;
+ return ST_CONTINUE;
+}
+
+static void
+rb_ary_union(VALUE ary_union, VALUE ary)
+{
+ long i;
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ VALUE elt = rb_ary_elt(ary, i);
+ if (rb_ary_includes_by_eql(ary_union, elt)) continue;
+ rb_ary_push(ary_union, elt);
+ }
+}
+
+static void
+rb_ary_union_hash(VALUE hash, VALUE ary2)
+{
+ long i;
+ for (i = 0; i < RARRAY_LEN(ary2); i++) {
+ VALUE elt = RARRAY_AREF(ary2, i);
+ if (!rb_hash_stlike_update(hash, (st_data_t)elt, ary_hash_orset, (st_data_t)elt)) {
+ RB_OBJ_WRITTEN(hash, Qundef, elt);
+ }
}
- for (i=0; i<RARRAY(ary2)->len; i++) {
- if (!rb_ary_includes(ary3, RARRAY(ary2)->ptr[i]))
- rb_ary_push(ary3, RARRAY(ary2)->ptr[i]);
+}
+
+/*
+ * call-seq:
+ * array | other_array -> new_array
+ *
+ * Returns the union of +array+ and \Array +other_array+;
+ * duplicates are removed; order is preserved;
+ * items are compared using <tt>eql?</tt>:
+ *
+ * [0, 1] | [2, 3] # => [0, 1, 2, 3]
+ * [0, 1, 1] | [2, 2, 3] # => [0, 1, 2, 3]
+ * [0, 1, 2] | [3, 2, 1, 0] # => [0, 1, 2, 3]
+ *
+ * Related: Array#union.
+ */
+
+static VALUE
+rb_ary_or(VALUE ary1, VALUE ary2)
+{
+ VALUE hash, ary3;
+
+ ary2 = to_ary(ary2);
+ if (RARRAY_LEN(ary1) + RARRAY_LEN(ary2) <= SMALL_ARRAY_LEN) {
+ ary3 = rb_ary_new();
+ rb_ary_union(ary3, ary1);
+ rb_ary_union(ary3, ary2);
+ return ary3;
}
+
+ hash = ary_make_hash(ary1);
+ rb_ary_union_hash(hash, ary2);
+
+ ary3 = rb_hash_values(hash);
+ ary_recycle_hash(hash);
return ary3;
}
+/*
+ * call-seq:
+ * array.union(*other_arrays) -> new_array
+ *
+ * Returns a new \Array that is the union of +self+ and all given Arrays +other_arrays+;
+ * duplicates are removed; order is preserved; items are compared using <tt>eql?</tt>:
+ *
+ * [0, 1, 2, 3].union([4, 5], [6, 7]) # => [0, 1, 2, 3, 4, 5, 6, 7]
+ * [0, 1, 1].union([2, 1], [3, 1]) # => [0, 1, 2, 3]
+ * [0, 1, 2, 3].union([3, 2], [1, 0]) # => [0, 1, 2, 3]
+ *
+ * Returns a copy of +self+ if no arguments given.
+ *
+ * Related: Array#|.
+ */
+
static VALUE
-rb_ary_uniq_bang(ary)
- VALUE ary;
+rb_ary_union_multi(int argc, VALUE *argv, VALUE ary)
+{
+ int i;
+ long sum;
+ VALUE hash, ary_union;
+
+ sum = RARRAY_LEN(ary);
+ for (i = 0; i < argc; i++) {
+ argv[i] = to_ary(argv[i]);
+ sum += RARRAY_LEN(argv[i]);
+ }
+
+ if (sum <= SMALL_ARRAY_LEN) {
+ ary_union = rb_ary_new();
+
+ rb_ary_union(ary_union, ary);
+ for (i = 0; i < argc; i++) rb_ary_union(ary_union, argv[i]);
+
+ return ary_union;
+ }
+
+ hash = ary_make_hash(ary);
+ for (i = 0; i < argc; i++) rb_ary_union_hash(hash, argv[i]);
+
+ ary_union = rb_hash_values(hash);
+ ary_recycle_hash(hash);
+ return ary_union;
+}
+
+/*
+ * call-seq:
+ * ary.intersect?(other_ary) -> true or false
+ *
+ * Returns +true+ if the array and +other_ary+ have at least one element in
+ * common, otherwise returns +false+:
+ *
+ * a = [ 1, 2, 3 ]
+ * b = [ 3, 4, 5 ]
+ * c = [ 5, 6, 7 ]
+ * a.intersect?(b) #=> true
+ * a.intersect?(c) #=> false
+ *
+ */
+
+static VALUE
+rb_ary_intersect_p(VALUE ary1, VALUE ary2)
{
- VALUE *p, *q, *t, *end;
+ VALUE hash, v, result, shorter, longer;
+ st_data_t vv;
+ long i;
+
+ ary2 = to_ary(ary2);
+ if (RARRAY_LEN(ary1) == 0 || RARRAY_LEN(ary2) == 0) return Qfalse;
+
+ if (RARRAY_LEN(ary1) <= SMALL_ARRAY_LEN && RARRAY_LEN(ary2) <= SMALL_ARRAY_LEN) {
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ v = RARRAY_AREF(ary1, i);
+ if (rb_ary_includes_by_eql(ary2, v)) return Qtrue;
+ }
+ return Qfalse;
+ }
+
+ shorter = ary1;
+ longer = ary2;
+ if (RARRAY_LEN(ary1) > RARRAY_LEN(ary2)) {
+ longer = ary1;
+ shorter = ary2;
+ }
+
+ hash = ary_make_hash(shorter);
+ result = Qfalse;
+
+ for (i=0; i<RARRAY_LEN(longer); i++) {
+ v = RARRAY_AREF(longer, i);
+ vv = (st_data_t)v;
+ if (rb_hash_stlike_lookup(hash, vv, 0)) {
+ result = Qtrue;
+ break;
+ }
+ }
+ ary_recycle_hash(hash);
+
+ return result;
+}
+
+static VALUE
+ary_max_generic(VALUE ary, long i, VALUE vmax)
+{
+ RUBY_ASSERT(i > 0 && i < RARRAY_LEN(ary));
+
VALUE v;
+ for (; i < RARRAY_LEN(ary); ++i) {
+ v = RARRAY_AREF(ary, i);
- rb_ary_modify(ary);
- p = RARRAY(ary)->ptr;
- end = p + RARRAY(ary)->len;
+ if (rb_cmpint(rb_funcallv(vmax, id_cmp, 1, &v), vmax, v) < 0) {
+ vmax = v;
+ }
+ }
+
+ return vmax;
+}
+
+static VALUE
+ary_max_opt_fixnum(VALUE ary, long i, VALUE vmax)
+{
+ const long n = RARRAY_LEN(ary);
+ RUBY_ASSERT(i > 0 && i < n);
+ RUBY_ASSERT(FIXNUM_P(vmax));
- while (p < end) {
- v = *p++;
- q = t = p;
- while (q < end) {
- if (rb_equal(*q, v)) q++;
- else *t++ = *q++;
- }
- end = t;
+ VALUE v;
+ for (; i < n; ++i) {
+ v = RARRAY_AREF(ary, i);
+
+ if (FIXNUM_P(v)) {
+ if ((long)vmax < (long)v) {
+ vmax = v;
+ }
+ }
+ else {
+ return ary_max_generic(ary, i, vmax);
+ }
}
- if (RARRAY(ary)->len == (end - RARRAY(ary)->ptr)) {
- return Qnil;
+
+ return vmax;
+}
+
+static VALUE
+ary_max_opt_float(VALUE ary, long i, VALUE vmax)
+{
+ const long n = RARRAY_LEN(ary);
+ RUBY_ASSERT(i > 0 && i < n);
+ RUBY_ASSERT(RB_FLOAT_TYPE_P(vmax));
+
+ VALUE v;
+ for (; i < n; ++i) {
+ v = RARRAY_AREF(ary, i);
+
+ if (RB_FLOAT_TYPE_P(v)) {
+ if (rb_float_cmp(vmax, v) < 0) {
+ vmax = v;
+ }
+ }
+ else {
+ return ary_max_generic(ary, i, vmax);
+ }
}
- RARRAY(ary)->len = (end - RARRAY(ary)->ptr);
+ return vmax;
+}
- return ary;
+static VALUE
+ary_max_opt_string(VALUE ary, long i, VALUE vmax)
+{
+ const long n = RARRAY_LEN(ary);
+ RUBY_ASSERT(i > 0 && i < n);
+ RUBY_ASSERT(STRING_P(vmax));
+
+ VALUE v;
+ for (; i < n; ++i) {
+ v = RARRAY_AREF(ary, i);
+
+ if (STRING_P(v)) {
+ if (rb_str_cmp(vmax, v) < 0) {
+ vmax = v;
+ }
+ }
+ else {
+ return ary_max_generic(ary, i, vmax);
+ }
+ }
+
+ return vmax;
}
+/*
+ * call-seq:
+ * array.max -> element
+ * array.max {|a, b| ... } -> element
+ * array.max(n) -> new_array
+ * array.max(n) {|a, b| ... } -> new_array
+ *
+ * Returns one of the following:
+ *
+ * - The maximum-valued element from +self+.
+ * - A new \Array of maximum-valued elements selected from +self+.
+ *
+ * When no block is given, each element in +self+ must respond to method <tt><=></tt>
+ * with an \Integer.
+ *
+ * With no argument and no block, returns the element in +self+
+ * having the maximum value per method <tt><=></tt>:
+ *
+ * [0, 1, 2].max # => 2
+ *
+ * With an argument \Integer +n+ and no block, returns a new \Array with at most +n+ elements,
+ * in descending order per method <tt><=></tt>:
+ *
+ * [0, 1, 2, 3].max(3) # => [3, 2, 1]
+ * [0, 1, 2, 3].max(6) # => [3, 2, 1, 0]
+ *
+ * When a block is given, the block must return an \Integer.
+ *
+ * With a block and no argument, calls the block <tt>self.size-1</tt> times to compare elements;
+ * returns the element having the maximum value per the block:
+ *
+ * ['0', '00', '000'].max {|a, b| a.size <=> b.size } # => "000"
+ *
+ * With an argument +n+ and a block, returns a new \Array with at most +n+ elements,
+ * in descending order per the block:
+ *
+ * ['0', '00', '000'].max(2) {|a, b| a.size <=> b.size } # => ["000", "00"]
+ *
+ */
static VALUE
-rb_ary_uniq(ary)
- VALUE ary;
+rb_ary_max(int argc, VALUE *argv, VALUE ary)
{
- ary = rb_obj_dup(ary);
- rb_ary_uniq_bang(ary);
+ VALUE result = Qundef, v;
+ VALUE num;
+ long i;
+
+ if (rb_check_arity(argc, 0, 1) && !NIL_P(num = argv[0]))
+ return rb_nmin_run(ary, num, 0, 1, 1);
+
+ const long n = RARRAY_LEN(ary);
+ if (rb_block_given_p()) {
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ v = RARRAY_AREF(ary, i);
+ if (UNDEF_P(result) || rb_cmpint(rb_yield_values(2, v, result), v, result) > 0) {
+ result = v;
+ }
+ }
+ }
+ else if (n > 0) {
+ result = RARRAY_AREF(ary, 0);
+ if (n > 1) {
+ if (FIXNUM_P(result) && CMP_OPTIMIZABLE(INTEGER)) {
+ return ary_max_opt_fixnum(ary, 1, result);
+ }
+ else if (STRING_P(result) && CMP_OPTIMIZABLE(STRING)) {
+ return ary_max_opt_string(ary, 1, result);
+ }
+ else if (RB_FLOAT_TYPE_P(result) && CMP_OPTIMIZABLE(FLOAT)) {
+ return ary_max_opt_float(ary, 1, result);
+ }
+ else {
+ return ary_max_generic(ary, 1, result);
+ }
+ }
+ }
+ if (UNDEF_P(result)) return Qnil;
+ return result;
+}
+
+static VALUE
+ary_min_generic(VALUE ary, long i, VALUE vmin)
+{
+ RUBY_ASSERT(i > 0 && i < RARRAY_LEN(ary));
+
+ VALUE v;
+ for (; i < RARRAY_LEN(ary); ++i) {
+ v = RARRAY_AREF(ary, i);
+
+ if (rb_cmpint(rb_funcallv(vmin, id_cmp, 1, &v), vmin, v) > 0) {
+ vmin = v;
+ }
+ }
+
+ return vmin;
+}
+
+static VALUE
+ary_min_opt_fixnum(VALUE ary, long i, VALUE vmin)
+{
+ const long n = RARRAY_LEN(ary);
+ RUBY_ASSERT(i > 0 && i < n);
+ RUBY_ASSERT(FIXNUM_P(vmin));
+
+ VALUE a;
+ for (; i < n; ++i) {
+ a = RARRAY_AREF(ary, i);
+
+ if (FIXNUM_P(a)) {
+ if ((long)vmin > (long)a) {
+ vmin = a;
+ }
+ }
+ else {
+ return ary_min_generic(ary, i, vmin);
+ }
+ }
+
+ return vmin;
+}
+
+static VALUE
+ary_min_opt_float(VALUE ary, long i, VALUE vmin)
+{
+ const long n = RARRAY_LEN(ary);
+ RUBY_ASSERT(i > 0 && i < n);
+ RUBY_ASSERT(RB_FLOAT_TYPE_P(vmin));
+
+ VALUE a;
+ for (; i < n; ++i) {
+ a = RARRAY_AREF(ary, i);
+
+ if (RB_FLOAT_TYPE_P(a)) {
+ if (rb_float_cmp(vmin, a) > 0) {
+ vmin = a;
+ }
+ }
+ else {
+ return ary_min_generic(ary, i, vmin);
+ }
+ }
+
+ return vmin;
+}
+
+static VALUE
+ary_min_opt_string(VALUE ary, long i, VALUE vmin)
+{
+ const long n = RARRAY_LEN(ary);
+ RUBY_ASSERT(i > 0 && i < n);
+ RUBY_ASSERT(STRING_P(vmin));
+
+ VALUE a;
+ for (; i < n; ++i) {
+ a = RARRAY_AREF(ary, i);
+
+ if (STRING_P(a)) {
+ if (rb_str_cmp(vmin, a) > 0) {
+ vmin = a;
+ }
+ }
+ else {
+ return ary_min_generic(ary, i, vmin);
+ }
+ }
+
+ return vmin;
+}
+
+/*
+ * call-seq:
+ * array.min -> element
+ * array.min { |a, b| ... } -> element
+ * array.min(n) -> new_array
+ * array.min(n) { |a, b| ... } -> new_array
+ *
+ * Returns one of the following:
+ *
+ * - The minimum-valued element from +self+.
+ * - A new \Array of minimum-valued elements selected from +self+.
+ *
+ * When no block is given, each element in +self+ must respond to method <tt><=></tt>
+ * with an \Integer.
+ *
+ * With no argument and no block, returns the element in +self+
+ * having the minimum value per method <tt><=></tt>:
+ *
+ * [0, 1, 2].min # => 0
+ *
+ * With \Integer argument +n+ and no block, returns a new \Array with at most +n+ elements,
+ * in ascending order per method <tt><=></tt>:
+ *
+ * [0, 1, 2, 3].min(3) # => [0, 1, 2]
+ * [0, 1, 2, 3].min(6) # => [0, 1, 2, 3]
+ *
+ * When a block is given, the block must return an Integer.
+ *
+ * With a block and no argument, calls the block <tt>self.size-1</tt> times to compare elements;
+ * returns the element having the minimum value per the block:
+ *
+ * ['0', '00', '000'].min { |a, b| a.size <=> b.size } # => "0"
+ *
+ * With an argument +n+ and a block, returns a new \Array with at most +n+ elements,
+ * in ascending order per the block:
+ *
+ * ['0', '00', '000'].min(2) {|a, b| a.size <=> b.size } # => ["0", "00"]
+ *
+ */
+static VALUE
+rb_ary_min(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE result = Qundef, v;
+ VALUE num;
+ long i;
+
+ if (rb_check_arity(argc, 0, 1) && !NIL_P(num = argv[0]))
+ return rb_nmin_run(ary, num, 0, 0, 1);
+
+ const long n = RARRAY_LEN(ary);
+ if (rb_block_given_p()) {
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ v = RARRAY_AREF(ary, i);
+ if (UNDEF_P(result) || rb_cmpint(rb_yield_values(2, v, result), v, result) < 0) {
+ result = v;
+ }
+ }
+ }
+ else if (n > 0) {
+ result = RARRAY_AREF(ary, 0);
+ if (n > 1) {
+ if (FIXNUM_P(result) && CMP_OPTIMIZABLE(INTEGER)) {
+ return ary_min_opt_fixnum(ary, 1, result);
+ }
+ else if (STRING_P(result) && CMP_OPTIMIZABLE(STRING)) {
+ return ary_min_opt_string(ary, 1, result);
+ }
+ else if (RB_FLOAT_TYPE_P(result) && CMP_OPTIMIZABLE(FLOAT)) {
+ return ary_min_opt_float(ary, 1, result);
+ }
+ else {
+ return ary_min_generic(ary, 1, result);
+ }
+ }
+ }
+ if (UNDEF_P(result)) return Qnil;
+ return result;
+}
+
+/*
+ * call-seq:
+ * array.minmax -> [min_val, max_val]
+ * array.minmax {|a, b| ... } -> [min_val, max_val]
+ *
+ * Returns a new 2-element \Array containing the minimum and maximum values
+ * from +self+, either per method <tt><=></tt> or per a given block:.
+ *
+ * When no block is given, each element in +self+ must respond to method <tt><=></tt>
+ * with an \Integer;
+ * returns a new 2-element \Array containing the minimum and maximum values
+ * from +self+, per method <tt><=></tt>:
+ *
+ * [0, 1, 2].minmax # => [0, 2]
+ *
+ * When a block is given, the block must return an \Integer;
+ * the block is called <tt>self.size-1</tt> times to compare elements;
+ * returns a new 2-element \Array containing the minimum and maximum values
+ * from +self+, per the block:
+ *
+ * ['0', '00', '000'].minmax {|a, b| a.size <=> b.size } # => ["0", "000"]
+ *
+ */
+static VALUE
+rb_ary_minmax(VALUE ary)
+{
+ if (rb_block_given_p()) {
+ return rb_call_super(0, NULL);
+ }
+ return rb_assoc_new(rb_ary_min(0, 0, ary), rb_ary_max(0, 0, ary));
+}
+
+static int
+push_value(st_data_t key, st_data_t val, st_data_t ary)
+{
+ rb_ary_push((VALUE)ary, (VALUE)val);
+ return ST_CONTINUE;
+}
+
+/*
+ * call-seq:
+ * array.uniq! -> self or nil
+ * array.uniq! {|element| ... } -> self or nil
+ *
+ * Removes duplicate elements from +self+, the first occurrence always being retained;
+ * returns +self+ if any elements removed, +nil+ otherwise.
+ *
+ * With no block given, identifies and removes elements using method <tt>eql?</tt>
+ * to compare.
+ *
+ * Returns +self+ if any elements removed:
+ *
+ * a = [0, 0, 1, 1, 2, 2]
+ * a.uniq! # => [0, 1, 2]
+ *
+ * Returns +nil+ if no elements removed.
+ *
+ * With a block given, calls the block for each element;
+ * identifies (using method <tt>eql?</tt>) and removes
+ * elements for which the block returns duplicate values.
+ *
+ * Returns +self+ if any elements removed:
+ *
+ * a = ['a', 'aa', 'aaa', 'b', 'bb', 'bbb']
+ * a.uniq! {|element| element.size } # => ['a', 'aa', 'aaa']
+ *
+ * Returns +nil+ if no elements removed.
+ */
+static VALUE
+rb_ary_uniq_bang(VALUE ary)
+{
+ VALUE hash;
+ long hash_size;
+
+ rb_ary_modify_check(ary);
+ if (RARRAY_LEN(ary) <= 1)
+ return Qnil;
+ if (rb_block_given_p())
+ hash = ary_make_hash_by(ary);
+ else
+ hash = ary_make_hash(ary);
+
+ hash_size = RHASH_SIZE(hash);
+ if (RARRAY_LEN(ary) == hash_size) {
+ return Qnil;
+ }
+ rb_ary_modify_check(ary);
+ ARY_SET_LEN(ary, 0);
+ if (ARY_SHARED_P(ary) && !ARY_EMBED_P(ary)) {
+ rb_ary_unshare(ary);
+ FL_SET_EMBED(ary);
+ }
+ ary_resize_capa(ary, hash_size);
+ rb_hash_foreach(hash, push_value, ary);
+ ary_recycle_hash(hash);
+
return ary;
}
+/*
+ * call-seq:
+ * array.uniq -> new_array
+ * array.uniq {|element| ... } -> new_array
+ *
+ * Returns a new \Array containing those elements from +self+ that are not duplicates,
+ * the first occurrence always being retained.
+ *
+ * With no block given, identifies and omits duplicates using method <tt>eql?</tt>
+ * to compare:
+ *
+ * a = [0, 0, 1, 1, 2, 2]
+ * a.uniq # => [0, 1, 2]
+ *
+ * With a block given, calls the block for each element;
+ * identifies (using method <tt>eql?</tt>) and omits duplicate values,
+ * that is, those elements for which the block returns the same value:
+ *
+ * a = ['a', 'aa', 'aaa', 'b', 'bb', 'bbb']
+ * a.uniq {|element| element.size } # => ["a", "aa", "aaa"]
+ *
+ */
+
+static VALUE
+rb_ary_uniq(VALUE ary)
+{
+ VALUE hash, uniq;
+
+ if (RARRAY_LEN(ary) <= 1) {
+ hash = 0;
+ uniq = rb_ary_dup(ary);
+ }
+ else if (rb_block_given_p()) {
+ hash = ary_make_hash_by(ary);
+ uniq = rb_hash_values(hash);
+ }
+ else {
+ hash = ary_make_hash(ary);
+ uniq = rb_hash_values(hash);
+ }
+ if (hash) {
+ ary_recycle_hash(hash);
+ }
+
+ return uniq;
+}
+
+/*
+ * call-seq:
+ * array.compact! -> self or nil
+ *
+ * Removes all +nil+ elements from +self+.
+ *
+ * Returns +self+ if any elements removed, otherwise +nil+.
+ */
+
static VALUE
-rb_ary_compact_bang(ary)
- VALUE ary;
+rb_ary_compact_bang(VALUE ary)
{
VALUE *p, *t, *end;
+ long n;
rb_ary_modify(ary);
- p = t = RARRAY(ary)->ptr;
- end = p + RARRAY(ary)->len;
+ p = t = (VALUE *)RARRAY_CONST_PTR_TRANSIENT(ary); /* WB: no new reference */
+ end = p + RARRAY_LEN(ary);
+
while (t < end) {
- if (NIL_P(*t)) t++;
- else *p++ = *t++;
+ if (NIL_P(*t)) t++;
+ else *p++ = *t++;
}
- if (RARRAY(ary)->len == (p - RARRAY(ary)->ptr)) {
- return Qnil;
+ n = p - RARRAY_CONST_PTR_TRANSIENT(ary);
+ if (RARRAY_LEN(ary) == n) {
+ return Qnil;
}
- RARRAY(ary)->len = RARRAY(ary)->capa = (p - RARRAY(ary)->ptr);
- REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->len);
+ ary_resize_smaller(ary, n);
return ary;
}
+/*
+ * call-seq:
+ * array.compact -> new_array
+ *
+ * Returns a new \Array containing all non-+nil+ elements from +self+:
+ *
+ * a = [nil, 0, nil, 1, nil, 2, nil]
+ * a.compact # => [0, 1, 2]
+ */
+
static VALUE
-rb_ary_compact(ary)
- VALUE ary;
+rb_ary_compact(VALUE ary)
{
- ary = rb_obj_dup(ary);
+ ary = rb_ary_dup(ary);
rb_ary_compact_bang(ary);
return ary;
}
+/*
+ * call-seq:
+ * array.count -> an_integer
+ * array.count(obj) -> an_integer
+ * array.count {|element| ... } -> an_integer
+ *
+ * Returns a count of specified elements.
+ *
+ * With no argument and no block, returns the count of all elements:
+ *
+ * [0, 1, 2].count # => 3
+ * [].count # => 0
+ *
+ * With argument +obj+, returns the count of elements <tt>==</tt> to +obj+:
+ *
+ * [0, 1, 2, 0.0].count(0) # => 2
+ * [0, 1, 2].count(3) # => 0
+ *
+ * With no argument and a block given, calls the block with each element;
+ * returns the count of elements for which the block returns a truthy value:
+ *
+ * [0, 1, 2, 3].count {|element| element > 1} # => 2
+ *
+ * With argument +obj+ and a block given, issues a warning, ignores the block,
+ * and returns the count of elements <tt>==</tt> to +obj+.
+ */
+
static VALUE
-rb_ary_nitems(ary)
- VALUE ary;
+rb_ary_count(int argc, VALUE *argv, VALUE ary)
{
- long n = 0;
- VALUE *p, *pend;
+ long i, n = 0;
- p = RARRAY(ary)->ptr;
- pend = p + RARRAY(ary)->len;
- while (p < pend) {
- if (!NIL_P(*p)) n++;
- p++;
+ if (rb_check_arity(argc, 0, 1) == 0) {
+ VALUE v;
+
+ if (!rb_block_given_p())
+ return LONG2NUM(RARRAY_LEN(ary));
+
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ v = RARRAY_AREF(ary, i);
+ if (RTEST(rb_yield(v))) n++;
+ }
+ }
+ else {
+ VALUE obj = argv[0];
+
+ if (rb_block_given_p()) {
+ rb_warn("given block not used");
+ }
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ if (rb_equal(RARRAY_AREF(ary, i), obj)) n++;
+ }
}
- return INT2NUM(n);
+
+ return LONG2NUM(n);
}
static VALUE
-rb_ary_flatten_bang(ary)
- VALUE ary;
+flatten(VALUE ary, int level)
{
long i;
- int mod = 0;
- VALUE flattening = Qnil;
+ VALUE stack, result, tmp = 0, elt, vmemo;
+ st_table *memo = 0;
+ st_data_t id;
+
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ elt = RARRAY_AREF(ary, i);
+ tmp = rb_check_array_type(elt);
+ if (!NIL_P(tmp)) {
+ break;
+ }
+ }
+ if (i == RARRAY_LEN(ary)) {
+ return ary;
+ }
+
+ result = ary_new(0, RARRAY_LEN(ary));
+ ary_memcpy(result, 0, i, RARRAY_CONST_PTR_TRANSIENT(ary));
+ ARY_SET_LEN(result, i);
+
+ stack = ary_new(0, ARY_DEFAULT_SIZE);
+ rb_ary_push(stack, ary);
+ rb_ary_push(stack, LONG2NUM(i + 1));
+
+ if (level < 0) {
+ vmemo = rb_hash_new();
+ RBASIC_CLEAR_CLASS(vmemo);
+ memo = st_init_numtable();
+ rb_hash_st_table_set(vmemo, memo);
+ st_insert(memo, (st_data_t)ary, (st_data_t)Qtrue);
+ st_insert(memo, (st_data_t)tmp, (st_data_t)Qtrue);
+ }
+
+ ary = tmp;
+ i = 0;
+
+ while (1) {
+ while (i < RARRAY_LEN(ary)) {
+ elt = RARRAY_AREF(ary, i++);
+ if (level >= 0 && RARRAY_LEN(stack) / 2 >= level) {
+ rb_ary_push(result, elt);
+ continue;
+ }
+ tmp = rb_check_array_type(elt);
+ if (RBASIC(result)->klass) {
+ if (memo) {
+ RB_GC_GUARD(vmemo);
+ st_clear(memo);
+ }
+ rb_raise(rb_eRuntimeError, "flatten reentered");
+ }
+ if (NIL_P(tmp)) {
+ rb_ary_push(result, elt);
+ }
+ else {
+ if (memo) {
+ id = (st_data_t)tmp;
+ if (st_is_member(memo, id)) {
+ st_clear(memo);
+ rb_raise(rb_eArgError, "tried to flatten recursive array");
+ }
+ st_insert(memo, id, (st_data_t)Qtrue);
+ }
+ rb_ary_push(stack, ary);
+ rb_ary_push(stack, LONG2NUM(i));
+ ary = tmp;
+ i = 0;
+ }
+ }
+ if (RARRAY_LEN(stack) == 0) {
+ break;
+ }
+ if (memo) {
+ id = (st_data_t)ary;
+ st_delete(memo, &id, 0);
+ }
+ tmp = rb_ary_pop(stack);
+ i = NUM2LONG(tmp);
+ ary = rb_ary_pop(stack);
+ }
+
+ if (memo) {
+ st_clear(memo);
+ }
+
+ RBASIC_SET_CLASS(result, rb_cArray);
+ return result;
+}
+
+/*
+ * call-seq:
+ * array.flatten! -> self or nil
+ * array.flatten!(level) -> self or nil
+ *
+ * Replaces each nested \Array in +self+ with the elements from that \Array;
+ * returns +self+ if any changes, +nil+ otherwise.
+ *
+ * With non-negative \Integer argument +level+, flattens recursively through +level+ levels:
+ *
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten!(1) # => [0, 1, [2, 3], 4, 5]
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten!(2) # => [0, 1, 2, 3, 4, 5]
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten!(3) # => [0, 1, 2, 3, 4, 5]
+ * [0, 1, 2].flatten!(1) # => nil
+ *
+ * With no argument, a +nil+ argument, or with negative argument +level+, flattens all levels:
+ *
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten! # => [0, 1, 2, 3, 4, 5]
+ * [0, 1, 2].flatten! # => nil
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten!(-1) # => [0, 1, 2, 3, 4, 5]
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten!(-2) # => [0, 1, 2, 3, 4, 5]
+ * [0, 1, 2].flatten!(-1) # => nil
+ *
+ */
+
+static VALUE
+rb_ary_flatten_bang(int argc, VALUE *argv, VALUE ary)
+{
+ int mod = 0, level = -1;
+ VALUE result, lv;
+
+ lv = (rb_check_arity(argc, 0, 1) ? argv[0] : Qnil);
+ rb_ary_modify_check(ary);
+ if (!NIL_P(lv)) level = NUM2INT(lv);
+ if (level == 0) return Qnil;
+
+ result = flatten(ary, level);
+ if (result == ary) {
+ return Qnil;
+ }
+ if (!(mod = ARY_EMBED_P(result))) rb_obj_freeze(result);
+ rb_ary_replace(ary, result);
+ if (mod) ARY_SET_EMBED_LEN(result, 0);
+
+ return ary;
+}
+
+/*
+ * call-seq:
+ * array.flatten -> new_array
+ * array.flatten(level) -> new_array
+ *
+ * Returns a new \Array that is a recursive flattening of +self+:
+ * - Each non-Array element is unchanged.
+ * - Each \Array is replaced by its individual elements.
+ *
+ * With non-negative \Integer argument +level+, flattens recursively through +level+ levels:
+ *
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten(0) # => [0, [1, [2, 3], 4], 5]
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten(1) # => [0, 1, [2, 3], 4, 5]
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten(2) # => [0, 1, 2, 3, 4, 5]
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten(3) # => [0, 1, 2, 3, 4, 5]
+ *
+ * With no argument, a +nil+ argument, or with negative argument +level+, flattens all levels:
+ *
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten # => [0, 1, 2, 3, 4, 5]
+ * [0, 1, 2].flatten # => [0, 1, 2]
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten(-1) # => [0, 1, 2, 3, 4, 5]
+ * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
+ * a.flatten(-2) # => [0, 1, 2, 3, 4, 5]
+ * [0, 1, 2].flatten(-1) # => [0, 1, 2]
+ *
+ */
+
+static VALUE
+rb_ary_flatten(int argc, VALUE *argv, VALUE ary)
+{
+ int level = -1;
+ VALUE result;
+
+ if (rb_check_arity(argc, 0, 1) && !NIL_P(argv[0])) {
+ level = NUM2INT(argv[0]);
+ if (level == 0) return ary_make_shared_copy(ary);
+ }
+
+ result = flatten(ary, level);
+ if (result == ary) {
+ result = ary_make_shared_copy(ary);
+ }
+
+ return result;
+}
+
+#define RAND_UPTO(max) (long)rb_random_ulong_limited((randgen), (max)-1)
+
+static VALUE
+rb_ary_shuffle_bang(rb_execution_context_t *ec, VALUE ary, VALUE randgen)
+{
+ long i, len;
rb_ary_modify(ary);
- for (i=0; i<RARRAY(ary)->len; i++) {
- VALUE ary2 = RARRAY(ary)->ptr[i];
- if (TYPE(ary2) == T_ARRAY) {
- if (ary == ary2) {
- ary2 = Qnil;
- } else {
- VALUE id;
-
- if (NIL_P(flattening)) {
- flattening = rb_ary_new();
- }
- id = rb_obj_id(ary2);
- if (rb_ary_includes(flattening, id)) {
- rb_raise(rb_eArgError, "tryed to flatten recursive array");
- }
- rb_ary_push(flattening, id);
- }
- rb_ary_replace(ary, i--, 1, ary2);
- mod = 1;
- }
- }
- if (mod == 0) return Qnil;
+ i = len = RARRAY_LEN(ary);
+ RARRAY_PTR_USE(ary, ptr, {
+ while (i) {
+ long j = RAND_UPTO(i);
+ VALUE tmp;
+ if (len != RARRAY_LEN(ary) || ptr != RARRAY_CONST_PTR_TRANSIENT(ary)) {
+ rb_raise(rb_eRuntimeError, "modified during shuffle");
+ }
+ tmp = ptr[--i];
+ ptr[i] = ptr[j];
+ ptr[j] = tmp;
+ }
+ }); /* WB: no new reference */
return ary;
}
static VALUE
-rb_ary_flatten(ary)
- VALUE ary;
+rb_ary_shuffle(rb_execution_context_t *ec, VALUE ary, VALUE randgen)
{
- ary = rb_obj_dup(ary);
- rb_ary_flatten_bang(ary);
+ ary = rb_ary_dup(ary);
+ rb_ary_shuffle_bang(ec, ary, randgen);
return ary;
}
+static VALUE
+ary_sample(rb_execution_context_t *ec, VALUE ary, VALUE randgen, VALUE nv, VALUE to_array)
+{
+ VALUE result;
+ long n, len, i, j, k, idx[10];
+ long rnds[numberof(idx)];
+ long memo_threshold;
+
+ len = RARRAY_LEN(ary);
+ if (!to_array) {
+ if (len < 2)
+ i = 0;
+ else
+ i = RAND_UPTO(len);
+
+ return rb_ary_elt(ary, i);
+ }
+ n = NUM2LONG(nv);
+ if (n < 0) rb_raise(rb_eArgError, "negative sample number");
+ if (n > len) n = len;
+ if (n <= numberof(idx)) {
+ for (i = 0; i < n; ++i) {
+ rnds[i] = RAND_UPTO(len - i);
+ }
+ }
+ k = len;
+ len = RARRAY_LEN(ary);
+ if (len < k && n <= numberof(idx)) {
+ for (i = 0; i < n; ++i) {
+ if (rnds[i] >= len) return rb_ary_new_capa(0);
+ }
+ }
+ if (n > len) n = len;
+ switch (n) {
+ case 0:
+ return rb_ary_new_capa(0);
+ case 1:
+ i = rnds[0];
+ return rb_ary_new_from_args(1, RARRAY_AREF(ary, i));
+ case 2:
+ i = rnds[0];
+ j = rnds[1];
+ if (j >= i) j++;
+ return rb_ary_new_from_args(2, RARRAY_AREF(ary, i), RARRAY_AREF(ary, j));
+ case 3:
+ i = rnds[0];
+ j = rnds[1];
+ k = rnds[2];
+ {
+ long l = j, g = i;
+ if (j >= i) l = i, g = ++j;
+ if (k >= l && (++k >= g)) ++k;
+ }
+ return rb_ary_new_from_args(3, RARRAY_AREF(ary, i), RARRAY_AREF(ary, j), RARRAY_AREF(ary, k));
+ }
+ memo_threshold =
+ len < 2560 ? len / 128 :
+ len < 5120 ? len / 64 :
+ len < 10240 ? len / 32 :
+ len / 16;
+ if (n <= numberof(idx)) {
+ long sorted[numberof(idx)];
+ sorted[0] = idx[0] = rnds[0];
+ for (i=1; i<n; i++) {
+ k = rnds[i];
+ for (j = 0; j < i; ++j) {
+ if (k < sorted[j]) break;
+ ++k;
+ }
+ memmove(&sorted[j+1], &sorted[j], sizeof(sorted[0])*(i-j));
+ sorted[j] = idx[i] = k;
+ }
+ result = rb_ary_new_capa(n);
+ RARRAY_PTR_USE_TRANSIENT(result, ptr_result, {
+ for (i=0; i<n; i++) {
+ ptr_result[i] = RARRAY_AREF(ary, idx[i]);
+ }
+ });
+ }
+ else if (n <= memo_threshold / 2) {
+ long max_idx = 0;
+#undef RUBY_UNTYPED_DATA_WARNING
+#define RUBY_UNTYPED_DATA_WARNING 0
+ VALUE vmemo = Data_Wrap_Struct(0, 0, st_free_table, 0);
+ st_table *memo = st_init_numtable_with_size(n);
+ DATA_PTR(vmemo) = memo;
+ result = rb_ary_new_capa(n);
+ RARRAY_PTR_USE(result, ptr_result, {
+ for (i=0; i<n; i++) {
+ long r = RAND_UPTO(len-i) + i;
+ ptr_result[i] = r;
+ if (r > max_idx) max_idx = r;
+ }
+ len = RARRAY_LEN(ary);
+ if (len <= max_idx) n = 0;
+ else if (n > len) n = len;
+ RARRAY_PTR_USE_TRANSIENT(ary, ptr_ary, {
+ for (i=0; i<n; i++) {
+ long j2 = j = ptr_result[i];
+ long i2 = i;
+ st_data_t value;
+ if (st_lookup(memo, (st_data_t)i, &value)) i2 = (long)value;
+ if (st_lookup(memo, (st_data_t)j, &value)) j2 = (long)value;
+ st_insert(memo, (st_data_t)j, (st_data_t)i2);
+ ptr_result[i] = ptr_ary[j2];
+ }
+ });
+ });
+ DATA_PTR(vmemo) = 0;
+ st_free_table(memo);
+ }
+ else {
+ result = rb_ary_dup(ary);
+ RBASIC_CLEAR_CLASS(result);
+ RB_GC_GUARD(ary);
+ RARRAY_PTR_USE(result, ptr_result, {
+ for (i=0; i<n; i++) {
+ j = RAND_UPTO(len-i) + i;
+ nv = ptr_result[j];
+ ptr_result[j] = ptr_result[i];
+ ptr_result[i] = nv;
+ }
+ });
+ RBASIC_SET_CLASS_RAW(result, rb_cArray);
+ }
+ ARY_SET_LEN(result, n);
+
+ return result;
+}
+
+static VALUE
+ary_sample0(rb_execution_context_t *ec, VALUE ary)
+{
+ return ary_sample(ec, ary, rb_cRandom, Qfalse, Qfalse);
+}
+
+static VALUE
+rb_ary_cycle_size(VALUE self, VALUE args, VALUE eobj)
+{
+ long mul;
+ VALUE n = Qnil;
+ if (args && (RARRAY_LEN(args) > 0)) {
+ n = RARRAY_AREF(args, 0);
+ }
+ if (RARRAY_LEN(self) == 0) return INT2FIX(0);
+ if (NIL_P(n)) return DBL2NUM(HUGE_VAL);
+ mul = NUM2LONG(n);
+ if (mul <= 0) return INT2FIX(0);
+ n = LONG2FIX(mul);
+ return rb_fix_mul_fix(rb_ary_length(self), n);
+}
+
+/*
+ * call-seq:
+ * array.cycle {|element| ... } -> nil
+ * array.cycle(count) {|element| ... } -> nil
+ * array.cycle -> new_enumerator
+ * array.cycle(count) -> new_enumerator
+ *
+ * When called with positive \Integer argument +count+ and a block,
+ * calls the block with each element, then does so again,
+ * until it has done so +count+ times; returns +nil+:
+ *
+ * output = []
+ * [0, 1].cycle(2) {|element| output.push(element) } # => nil
+ * output # => [0, 1, 0, 1]
+ *
+ * If +count+ is zero or negative, does not call the block:
+ *
+ * [0, 1].cycle(0) {|element| fail 'Cannot happen' } # => nil
+ * [0, 1].cycle(-1) {|element| fail 'Cannot happen' } # => nil
+ *
+ * When a block is given, and argument is omitted or +nil+, cycles forever:
+ *
+ * # Prints 0 and 1 forever.
+ * [0, 1].cycle {|element| puts element }
+ * [0, 1].cycle(nil) {|element| puts element }
+ *
+ * When no block is given, returns a new \Enumerator:
+ *
+ * [0, 1].cycle(2) # => #<Enumerator: [0, 1]:cycle(2)>
+ * [0, 1].cycle # => # => #<Enumerator: [0, 1]:cycle>
+ * [0, 1].cycle.first(5) # => [0, 1, 0, 1, 0]
+ *
+ */
+static VALUE
+rb_ary_cycle(int argc, VALUE *argv, VALUE ary)
+{
+ long n, i;
+
+ rb_check_arity(argc, 0, 1);
+
+ RETURN_SIZED_ENUMERATOR(ary, argc, argv, rb_ary_cycle_size);
+ if (argc == 0 || NIL_P(argv[0])) {
+ n = -1;
+ }
+ else {
+ n = NUM2LONG(argv[0]);
+ if (n <= 0) return Qnil;
+ }
+
+ while (RARRAY_LEN(ary) > 0 && (n < 0 || 0 < n--)) {
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ rb_yield(RARRAY_AREF(ary, i));
+ }
+ }
+ return Qnil;
+}
+
+/*
+ * Build a ruby array of the corresponding values and yield it to the
+ * associated block.
+ * Return the class of +values+ for reentry check.
+ */
+static int
+yield_indexed_values(const VALUE values, const long r, const long *const p)
+{
+ const VALUE result = rb_ary_new2(r);
+ long i;
+
+ for (i = 0; i < r; i++) ARY_SET(result, i, RARRAY_AREF(values, p[i]));
+ ARY_SET_LEN(result, r);
+ rb_yield(result);
+ return !RBASIC(values)->klass;
+}
+
+/*
+ * Compute permutations of +r+ elements of the set <code>[0..n-1]</code>.
+ *
+ * When we have a complete permutation of array indices, copy the values
+ * at those indices into a new array and yield that array.
+ *
+ * n: the size of the set
+ * r: the number of elements in each permutation
+ * p: the array (of size r) that we're filling in
+ * used: an array of booleans: whether a given index is already used
+ * values: the Ruby array that holds the actual values to permute
+ */
+static void
+permute0(const long n, const long r, long *const p, char *const used, const VALUE values)
+{
+ long i = 0, index = 0;
+
+ for (;;) {
+ const char *const unused = memchr(&used[i], 0, n-i);
+ if (!unused) {
+ if (!index) break;
+ i = p[--index]; /* pop index */
+ used[i++] = 0; /* index unused */
+ }
+ else {
+ i = unused - used;
+ p[index] = i;
+ used[i] = 1; /* mark index used */
+ ++index;
+ if (index < r-1) { /* if not done yet */
+ p[index] = i = 0;
+ continue;
+ }
+ for (i = 0; i < n; ++i) {
+ if (used[i]) continue;
+ p[index] = i;
+ if (!yield_indexed_values(values, r, p)) {
+ rb_raise(rb_eRuntimeError, "permute reentered");
+ }
+ }
+ i = p[--index]; /* pop index */
+ used[i] = 0; /* index unused */
+ p[index] = ++i;
+ }
+ }
+}
+
+/*
+ * Returns the product of from, from-1, ..., from - how_many + 1.
+ * https://en.wikipedia.org/wiki/Pochhammer_symbol
+ */
+static VALUE
+descending_factorial(long from, long how_many)
+{
+ VALUE cnt;
+ if (how_many > 0) {
+ cnt = LONG2FIX(from);
+ while (--how_many > 0) {
+ long v = --from;
+ cnt = rb_int_mul(cnt, LONG2FIX(v));
+ }
+ }
+ else {
+ cnt = LONG2FIX(how_many == 0);
+ }
+ return cnt;
+}
+
+static VALUE
+binomial_coefficient(long comb, long size)
+{
+ VALUE r;
+ long i;
+ if (comb > size-comb) {
+ comb = size-comb;
+ }
+ if (comb < 0) {
+ return LONG2FIX(0);
+ }
+ else if (comb == 0) {
+ return LONG2FIX(1);
+ }
+ r = LONG2FIX(size);
+ for (i = 1; i < comb; ++i) {
+ r = rb_int_mul(r, LONG2FIX(size - i));
+ r = rb_int_idiv(r, LONG2FIX(i + 1));
+ }
+ return r;
+}
+
+static VALUE
+rb_ary_permutation_size(VALUE ary, VALUE args, VALUE eobj)
+{
+ long n = RARRAY_LEN(ary);
+ long k = (args && (RARRAY_LEN(args) > 0)) ? NUM2LONG(RARRAY_AREF(args, 0)) : n;
+
+ return descending_factorial(n, k);
+}
+
+/*
+ * call-seq:
+ * array.permutation {|element| ... } -> self
+ * array.permutation(n) {|element| ... } -> self
+ * array.permutation -> new_enumerator
+ * array.permutation(n) -> new_enumerator
+ *
+ * When invoked with a block, yield all permutations of elements of +self+; returns +self+.
+ * The order of permutations is indeterminate.
+ *
+ * When a block and an in-range positive \Integer argument +n+ (<tt>0 < n <= self.size</tt>)
+ * are given, calls the block with all +n+-tuple permutations of +self+.
+ *
+ * Example:
+ *
+ * a = [0, 1, 2]
+ * a.permutation(2) {|permutation| p permutation }
+ *
+ * Output:
+ *
+ * [0, 1]
+ * [0, 2]
+ * [1, 0]
+ * [1, 2]
+ * [2, 0]
+ * [2, 1]
+ *
+ * Another example:
+ *
+ * a = [0, 1, 2]
+ * a.permutation(3) {|permutation| p permutation }
+ *
+ * Output:
+ *
+ * [0, 1, 2]
+ * [0, 2, 1]
+ * [1, 0, 2]
+ * [1, 2, 0]
+ * [2, 0, 1]
+ * [2, 1, 0]
+ *
+ * When +n+ is zero, calls the block once with a new empty \Array:
+ *
+ * a = [0, 1, 2]
+ * a.permutation(0) {|permutation| p permutation }
+ *
+ * Output:
+ *
+ * []
+ *
+ * When +n+ is out of range (negative or larger than <tt>self.size</tt>),
+ * does not call the block:
+ *
+ * a = [0, 1, 2]
+ * a.permutation(-1) {|permutation| fail 'Cannot happen' }
+ * a.permutation(4) {|permutation| fail 'Cannot happen' }
+ *
+ * When a block given but no argument,
+ * behaves the same as <tt>a.permutation(a.size)</tt>:
+ *
+ * a = [0, 1, 2]
+ * a.permutation {|permutation| p permutation }
+ *
+ * Output:
+ *
+ * [0, 1, 2]
+ * [0, 2, 1]
+ * [1, 0, 2]
+ * [1, 2, 0]
+ * [2, 0, 1]
+ * [2, 1, 0]
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = [0, 1, 2]
+ * a.permutation # => #<Enumerator: [0, 1, 2]:permutation>
+ * a.permutation(2) # => #<Enumerator: [0, 1, 2]:permutation(2)>
+ *
+ */
+
+static VALUE
+rb_ary_permutation(int argc, VALUE *argv, VALUE ary)
+{
+ long r, n, i;
+
+ n = RARRAY_LEN(ary); /* Array length */
+ RETURN_SIZED_ENUMERATOR(ary, argc, argv, rb_ary_permutation_size); /* Return enumerator if no block */
+ r = n;
+ if (rb_check_arity(argc, 0, 1) && !NIL_P(argv[0]))
+ r = NUM2LONG(argv[0]); /* Permutation size from argument */
+
+ if (r < 0 || n < r) {
+ /* no permutations: yield nothing */
+ }
+ else if (r == 0) { /* exactly one permutation: the zero-length array */
+ rb_yield(rb_ary_new2(0));
+ }
+ else if (r == 1) { /* this is a special, easy case */
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
+ }
+ else { /* this is the general case */
+ volatile VALUE t0;
+ long *p = ALLOCV_N(long, t0, r+roomof(n, sizeof(long)));
+ char *used = (char*)(p + r);
+ VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
+ RBASIC_CLEAR_CLASS(ary0);
+
+ MEMZERO(used, char, n); /* initialize array */
+
+ permute0(n, r, p, used, ary0); /* compute and yield permutations */
+ ALLOCV_END(t0);
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
+ }
+ return ary;
+}
+
+static void
+combinate0(const long len, const long n, long *const stack, const VALUE values)
+{
+ long lev = 0;
+
+ MEMZERO(stack+1, long, n);
+ stack[0] = -1;
+ for (;;) {
+ for (lev++; lev < n; lev++) {
+ stack[lev+1] = stack[lev]+1;
+ }
+ if (!yield_indexed_values(values, n, stack+1)) {
+ rb_raise(rb_eRuntimeError, "combination reentered");
+ }
+ do {
+ if (lev == 0) return;
+ stack[lev--]++;
+ } while (stack[lev+1]+n == len+lev+1);
+ }
+}
+
+static VALUE
+rb_ary_combination_size(VALUE ary, VALUE args, VALUE eobj)
+{
+ long n = RARRAY_LEN(ary);
+ long k = NUM2LONG(RARRAY_AREF(args, 0));
+
+ return binomial_coefficient(k, n);
+}
+
+/*
+ * call-seq:
+ * array.combination(n) {|element| ... } -> self
+ * array.combination(n) -> new_enumerator
+ *
+ * Calls the block, if given, with combinations of elements of +self+;
+ * returns +self+. The order of combinations is indeterminate.
+ *
+ * When a block and an in-range positive \Integer argument +n+ (<tt>0 < n <= self.size</tt>)
+ * are given, calls the block with all +n+-tuple combinations of +self+.
+ *
+ * Example:
+ *
+ * a = [0, 1, 2]
+ * a.combination(2) {|combination| p combination }
+ *
+ * Output:
+ *
+ * [0, 1]
+ * [0, 2]
+ * [1, 2]
+ *
+ * Another example:
+ *
+ * a = [0, 1, 2]
+ * a.combination(3) {|combination| p combination }
+ *
+ * Output:
+ *
+ * [0, 1, 2]
+ *
+ * When +n+ is zero, calls the block once with a new empty \Array:
+ *
+ * a = [0, 1, 2]
+ * a1 = a.combination(0) {|combination| p combination }
+ *
+ * Output:
+ *
+ * []
+ *
+ * When +n+ is out of range (negative or larger than <tt>self.size</tt>),
+ * does not call the block:
+ *
+ * a = [0, 1, 2]
+ * a.combination(-1) {|combination| fail 'Cannot happen' }
+ * a.combination(4) {|combination| fail 'Cannot happen' }
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = [0, 1, 2]
+ * a.combination(2) # => #<Enumerator: [0, 1, 2]:combination(2)>
+ *
+ */
+
+static VALUE
+rb_ary_combination(VALUE ary, VALUE num)
+{
+ long i, n, len;
+
+ n = NUM2LONG(num);
+ RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_combination_size);
+ len = RARRAY_LEN(ary);
+ if (n < 0 || len < n) {
+ /* yield nothing */
+ }
+ else if (n == 0) {
+ rb_yield(rb_ary_new2(0));
+ }
+ else if (n == 1) {
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
+ }
+ else {
+ VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
+ volatile VALUE t0;
+ long *stack = ALLOCV_N(long, t0, n+1);
+
+ RBASIC_CLEAR_CLASS(ary0);
+ combinate0(len, n, stack, ary0);
+ ALLOCV_END(t0);
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
+ }
+ return ary;
+}
+
+/*
+ * Compute repeated permutations of +r+ elements of the set
+ * <code>[0..n-1]</code>.
+ *
+ * When we have a complete repeated permutation of array indices, copy the
+ * values at those indices into a new array and yield that array.
+ *
+ * n: the size of the set
+ * r: the number of elements in each permutation
+ * p: the array (of size r) that we're filling in
+ * values: the Ruby array that holds the actual values to permute
+ */
+static void
+rpermute0(const long n, const long r, long *const p, const VALUE values)
+{
+ long i = 0, index = 0;
+
+ p[index] = i;
+ for (;;) {
+ if (++index < r-1) {
+ p[index] = i = 0;
+ continue;
+ }
+ for (i = 0; i < n; ++i) {
+ p[index] = i;
+ if (!yield_indexed_values(values, r, p)) {
+ rb_raise(rb_eRuntimeError, "repeated permute reentered");
+ }
+ }
+ do {
+ if (index <= 0) return;
+ } while ((i = ++p[--index]) >= n);
+ }
+}
+
+static VALUE
+rb_ary_repeated_permutation_size(VALUE ary, VALUE args, VALUE eobj)
+{
+ long n = RARRAY_LEN(ary);
+ long k = NUM2LONG(RARRAY_AREF(args, 0));
+
+ if (k < 0) {
+ return LONG2FIX(0);
+ }
+ if (n <= 0) {
+ return LONG2FIX(!k);
+ }
+ return rb_int_positive_pow(n, (unsigned long)k);
+}
+
+/*
+ * call-seq:
+ * array.repeated_permutation(n) {|permutation| ... } -> self
+ * array.repeated_permutation(n) -> new_enumerator
+ *
+ * Calls the block with each repeated permutation of length +n+ of the elements of +self+;
+ * each permutation is an \Array;
+ * returns +self+. The order of the permutations is indeterminate.
+ *
+ * When a block and a positive \Integer argument +n+ are given, calls the block with each
+ * +n+-tuple repeated permutation of the elements of +self+.
+ * The number of permutations is <tt>self.size**n</tt>.
+ *
+ * +n+ = 1:
+ *
+ * a = [0, 1, 2]
+ * a.repeated_permutation(1) {|permutation| p permutation }
+ *
+ * Output:
+ *
+ * [0]
+ * [1]
+ * [2]
+ *
+ * +n+ = 2:
+ *
+ * a.repeated_permutation(2) {|permutation| p permutation }
+ *
+ * Output:
+ *
+ * [0, 0]
+ * [0, 1]
+ * [0, 2]
+ * [1, 0]
+ * [1, 1]
+ * [1, 2]
+ * [2, 0]
+ * [2, 1]
+ * [2, 2]
+ *
+ * If +n+ is zero, calls the block once with an empty \Array.
+ *
+ * If +n+ is negative, does not call the block:
+ *
+ * a.repeated_permutation(-1) {|permutation| fail 'Cannot happen' }
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = [0, 1, 2]
+ * a.repeated_permutation(2) # => #<Enumerator: [0, 1, 2]:permutation(2)>
+ *
+ * Using Enumerators, it's convenient to show the permutations and counts
+ * for some values of +n+:
+ *
+ * e = a.repeated_permutation(0)
+ * e.size # => 1
+ * e.to_a # => [[]]
+ * e = a.repeated_permutation(1)
+ * e.size # => 3
+ * e.to_a # => [[0], [1], [2]]
+ * e = a.repeated_permutation(2)
+ * e.size # => 9
+ * e.to_a # => [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
+ *
+ */
+static VALUE
+rb_ary_repeated_permutation(VALUE ary, VALUE num)
+{
+ long r, n, i;
+
+ n = RARRAY_LEN(ary); /* Array length */
+ RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_repeated_permutation_size); /* Return Enumerator if no block */
+ r = NUM2LONG(num); /* Permutation size from argument */
+
+ if (r < 0) {
+ /* no permutations: yield nothing */
+ }
+ else if (r == 0) { /* exactly one permutation: the zero-length array */
+ rb_yield(rb_ary_new2(0));
+ }
+ else if (r == 1) { /* this is a special, easy case */
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
+ }
+ else { /* this is the general case */
+ volatile VALUE t0;
+ long *p = ALLOCV_N(long, t0, r);
+ VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
+ RBASIC_CLEAR_CLASS(ary0);
+
+ rpermute0(n, r, p, ary0); /* compute and yield repeated permutations */
+ ALLOCV_END(t0);
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
+ }
+ return ary;
+}
+
+static void
+rcombinate0(const long n, const long r, long *const p, const long rest, const VALUE values)
+{
+ long i = 0, index = 0;
+
+ p[index] = i;
+ for (;;) {
+ if (++index < r-1) {
+ p[index] = i;
+ continue;
+ }
+ for (; i < n; ++i) {
+ p[index] = i;
+ if (!yield_indexed_values(values, r, p)) {
+ rb_raise(rb_eRuntimeError, "repeated combination reentered");
+ }
+ }
+ do {
+ if (index <= 0) return;
+ } while ((i = ++p[--index]) >= n);
+ }
+}
+
+static VALUE
+rb_ary_repeated_combination_size(VALUE ary, VALUE args, VALUE eobj)
+{
+ long n = RARRAY_LEN(ary);
+ long k = NUM2LONG(RARRAY_AREF(args, 0));
+ if (k == 0) {
+ return LONG2FIX(1);
+ }
+ return binomial_coefficient(k, n + k - 1);
+}
+
+/*
+ * call-seq:
+ * array.repeated_combination(n) {|combination| ... } -> self
+ * array.repeated_combination(n) -> new_enumerator
+ *
+ * Calls the block with each repeated combination of length +n+ of the elements of +self+;
+ * each combination is an \Array;
+ * returns +self+. The order of the combinations is indeterminate.
+ *
+ * When a block and a positive \Integer argument +n+ are given, calls the block with each
+ * +n+-tuple repeated combination of the elements of +self+.
+ * The number of combinations is <tt>(n+1)(n+2)/2</tt>.
+ *
+ * +n+ = 1:
+ *
+ * a = [0, 1, 2]
+ * a.repeated_combination(1) {|combination| p combination }
+ *
+ * Output:
+ *
+ * [0]
+ * [1]
+ * [2]
+ *
+ * +n+ = 2:
+ *
+ * a.repeated_combination(2) {|combination| p combination }
+ *
+ * Output:
+ *
+ * [0, 0]
+ * [0, 1]
+ * [0, 2]
+ * [1, 1]
+ * [1, 2]
+ * [2, 2]
+ *
+ * If +n+ is zero, calls the block once with an empty \Array.
+ *
+ * If +n+ is negative, does not call the block:
+ *
+ * a.repeated_combination(-1) {|combination| fail 'Cannot happen' }
+ *
+ * Returns a new \Enumerator if no block given:
+ *
+ * a = [0, 1, 2]
+ * a.repeated_combination(2) # => #<Enumerator: [0, 1, 2]:combination(2)>
+ *
+ * Using Enumerators, it's convenient to show the combinations and counts
+ * for some values of +n+:
+ *
+ * e = a.repeated_combination(0)
+ * e.size # => 1
+ * e.to_a # => [[]]
+ * e = a.repeated_combination(1)
+ * e.size # => 3
+ * e.to_a # => [[0], [1], [2]]
+ * e = a.repeated_combination(2)
+ * e.size # => 6
+ * e.to_a # => [[0, 0], [0, 1], [0, 2], [1, 1], [1, 2], [2, 2]]
+ *
+ */
+
+static VALUE
+rb_ary_repeated_combination(VALUE ary, VALUE num)
+{
+ long n, i, len;
+
+ n = NUM2LONG(num); /* Combination size from argument */
+ RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_repeated_combination_size); /* Return enumerator if no block */
+ len = RARRAY_LEN(ary);
+ if (n < 0) {
+ /* yield nothing */
+ }
+ else if (n == 0) {
+ rb_yield(rb_ary_new2(0));
+ }
+ else if (n == 1) {
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
+ }
+ else if (len == 0) {
+ /* yield nothing */
+ }
+ else {
+ volatile VALUE t0;
+ long *p = ALLOCV_N(long, t0, n);
+ VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
+ RBASIC_CLEAR_CLASS(ary0);
+
+ rcombinate0(len, n, p, n, ary0); /* compute and yield repeated combinations */
+ ALLOCV_END(t0);
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
+ }
+ return ary;
+}
+
+/*
+ * call-seq:
+ * array.product(*other_arrays) -> new_array
+ * array.product(*other_arrays) {|combination| ... } -> self
+ *
+ * Computes and returns or yields all combinations of elements from all the Arrays,
+ * including both +self+ and +other_arrays+:
+ *
+ * - The number of combinations is the product of the sizes of all the arrays,
+ * including both +self+ and +other_arrays+.
+ * - The order of the returned combinations is indeterminate.
+ *
+ * When no block is given, returns the combinations as an \Array of Arrays:
+ *
+ * a = [0, 1, 2]
+ * a1 = [3, 4]
+ * a2 = [5, 6]
+ * p = a.product(a1)
+ * p.size # => 6 # a.size * a1.size
+ * p # => [[0, 3], [0, 4], [1, 3], [1, 4], [2, 3], [2, 4]]
+ * p = a.product(a1, a2)
+ * p.size # => 12 # a.size * a1.size * a2.size
+ * p # => [[0, 3, 5], [0, 3, 6], [0, 4, 5], [0, 4, 6], [1, 3, 5], [1, 3, 6], [1, 4, 5], [1, 4, 6], [2, 3, 5], [2, 3, 6], [2, 4, 5], [2, 4, 6]]
+ *
+ * If any argument is an empty \Array, returns an empty \Array.
+ *
+ * If no argument is given, returns an \Array of 1-element Arrays,
+ * each containing an element of +self+:
+ *
+ * a.product # => [[0], [1], [2]]
+ *
+ * When a block is given, yields each combination as an \Array; returns +self+:
+ *
+ * a.product(a1) {|combination| p combination }
+ *
+ * Output:
+ *
+ * [0, 3]
+ * [0, 4]
+ * [1, 3]
+ * [1, 4]
+ * [2, 3]
+ * [2, 4]
+ *
+ * If any argument is an empty \Array, does not call the block:
+ *
+ * a.product(a1, a2, []) {|combination| fail 'Cannot happen' }
+ *
+ * If no argument is given, yields each element of +self+ as a 1-element \Array:
+ *
+ * a.product {|combination| p combination }
+ *
+ * Output:
+ *
+ * [0]
+ * [1]
+ * [2]
+ *
+ */
+
+static VALUE
+rb_ary_product(int argc, VALUE *argv, VALUE ary)
+{
+ int n = argc+1; /* How many arrays we're operating on */
+ volatile VALUE t0 = rb_ary_hidden_new(n);
+ volatile VALUE t1 = Qundef;
+ VALUE *arrays = RARRAY_PTR(t0); /* The arrays we're computing the product of */
+ int *counters = ALLOCV_N(int, t1, n); /* The current position in each one */
+ VALUE result = Qnil; /* The array we'll be returning, when no block given */
+ long i,j;
+ long resultlen = 1;
+
+ RBASIC_CLEAR_CLASS(t0);
+
+ /* initialize the arrays of arrays */
+ ARY_SET_LEN(t0, n);
+ arrays[0] = ary;
+ for (i = 1; i < n; i++) arrays[i] = Qnil;
+ for (i = 1; i < n; i++) arrays[i] = to_ary(argv[i-1]);
+
+ /* initialize the counters for the arrays */
+ for (i = 0; i < n; i++) counters[i] = 0;
+
+ /* Otherwise, allocate and fill in an array of results */
+ if (rb_block_given_p()) {
+ /* Make defensive copies of arrays; exit if any is empty */
+ for (i = 0; i < n; i++) {
+ if (RARRAY_LEN(arrays[i]) == 0) goto done;
+ arrays[i] = ary_make_shared_copy(arrays[i]);
+ }
+ }
+ else {
+ /* Compute the length of the result array; return [] if any is empty */
+ for (i = 0; i < n; i++) {
+ long k = RARRAY_LEN(arrays[i]);
+ if (k == 0) {
+ result = rb_ary_new2(0);
+ goto done;
+ }
+ if (MUL_OVERFLOW_LONG_P(resultlen, k))
+ rb_raise(rb_eRangeError, "too big to product");
+ resultlen *= k;
+ }
+ result = rb_ary_new2(resultlen);
+ }
+ for (;;) {
+ int m;
+ /* fill in one subarray */
+ VALUE subarray = rb_ary_new2(n);
+ for (j = 0; j < n; j++) {
+ rb_ary_push(subarray, rb_ary_entry(arrays[j], counters[j]));
+ }
+
+ /* put it on the result array */
+ if (NIL_P(result)) {
+ FL_SET(t0, RARRAY_SHARED_ROOT_FLAG);
+ rb_yield(subarray);
+ if (!FL_TEST(t0, RARRAY_SHARED_ROOT_FLAG)) {
+ rb_raise(rb_eRuntimeError, "product reentered");
+ }
+ else {
+ FL_UNSET(t0, RARRAY_SHARED_ROOT_FLAG);
+ }
+ }
+ else {
+ rb_ary_push(result, subarray);
+ }
+
+ /*
+ * Increment the last counter. If it overflows, reset to 0
+ * and increment the one before it.
+ */
+ m = n-1;
+ counters[m]++;
+ while (counters[m] == RARRAY_LEN(arrays[m])) {
+ counters[m] = 0;
+ /* If the first counter overflows, we are done */
+ if (--m < 0) goto done;
+ counters[m]++;
+ }
+ }
+
+done:
+ ALLOCV_END(t1);
+
+ return NIL_P(result) ? ary : result;
+}
+
+/*
+ * call-seq:
+ * array.take(n) -> new_array
+ *
+ * Returns a new \Array containing the first +n+ element of +self+,
+ * where +n+ is a non-negative \Integer;
+ * does not modify +self+.
+ *
+ * Examples:
+ *
+ * a = [0, 1, 2, 3, 4, 5]
+ * a.take(1) # => [0]
+ * a.take(2) # => [0, 1]
+ * a.take(50) # => [0, 1, 2, 3, 4, 5]
+ * a # => [0, 1, 2, 3, 4, 5]
+ *
+ */
+
+static VALUE
+rb_ary_take(VALUE obj, VALUE n)
+{
+ long len = NUM2LONG(n);
+ if (len < 0) {
+ rb_raise(rb_eArgError, "attempt to take negative size");
+ }
+ return rb_ary_subseq(obj, 0, len);
+}
+
+/*
+ * call-seq:
+ * array.take_while {|element| ... } -> new_array
+ * array.take_while -> new_enumerator
+ *
+ * Returns a new \Array containing zero or more leading elements of +self+;
+ * does not modify +self+.
+ *
+ * With a block given, calls the block with each successive element of +self+;
+ * stops if the block returns +false+ or +nil+;
+ * returns a new \Array containing those elements for which the block returned a truthy value:
+ *
+ * a = [0, 1, 2, 3, 4, 5]
+ * a.take_while {|element| element < 3 } # => [0, 1, 2]
+ * a.take_while {|element| true } # => [0, 1, 2, 3, 4, 5]
+ * a # => [0, 1, 2, 3, 4, 5]
+ *
+ * With no block given, returns a new \Enumerator:
+ *
+ * [0, 1].take_while # => #<Enumerator: [0, 1]:take_while>
+ *
+ */
+
+static VALUE
+rb_ary_take_while(VALUE ary)
+{
+ long i;
+
+ RETURN_ENUMERATOR(ary, 0, 0);
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ if (!RTEST(rb_yield(RARRAY_AREF(ary, i)))) break;
+ }
+ return rb_ary_take(ary, LONG2FIX(i));
+}
+
+/*
+ * call-seq:
+ * array.drop(n) -> new_array
+ *
+ * Returns a new \Array containing all but the first +n+ element of +self+,
+ * where +n+ is a non-negative \Integer;
+ * does not modify +self+.
+ *
+ * Examples:
+ *
+ * a = [0, 1, 2, 3, 4, 5]
+ * a.drop(0) # => [0, 1, 2, 3, 4, 5]
+ * a.drop(1) # => [1, 2, 3, 4, 5]
+ * a.drop(2) # => [2, 3, 4, 5]
+ *
+ */
+
+static VALUE
+rb_ary_drop(VALUE ary, VALUE n)
+{
+ VALUE result;
+ long pos = NUM2LONG(n);
+ if (pos < 0) {
+ rb_raise(rb_eArgError, "attempt to drop negative size");
+ }
+
+ result = rb_ary_subseq(ary, pos, RARRAY_LEN(ary));
+ if (NIL_P(result)) result = rb_ary_new();
+ return result;
+}
+
+/*
+ * call-seq:
+ * array.drop_while {|element| ... } -> new_array
+ * array.drop_while -> new_enumerator
+
+ * Returns a new \Array containing zero or more trailing elements of +self+;
+ * does not modify +self+.
+ *
+ * With a block given, calls the block with each successive element of +self+;
+ * stops if the block returns +false+ or +nil+;
+ * returns a new \Array _omitting_ those elements for which the block returned a truthy value:
+ *
+ * a = [0, 1, 2, 3, 4, 5]
+ * a.drop_while {|element| element < 3 } # => [3, 4, 5]
+ *
+ * With no block given, returns a new \Enumerator:
+ *
+ * [0, 1].drop_while # => # => #<Enumerator: [0, 1]:drop_while>
+ *
+ */
+
+static VALUE
+rb_ary_drop_while(VALUE ary)
+{
+ long i;
+
+ RETURN_ENUMERATOR(ary, 0, 0);
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ if (!RTEST(rb_yield(RARRAY_AREF(ary, i)))) break;
+ }
+ return rb_ary_drop(ary, LONG2FIX(i));
+}
+
+/*
+ * call-seq:
+ * array.any? -> true or false
+ * array.any? {|element| ... } -> true or false
+ * array.any?(obj) -> true or false
+ *
+ * Returns +true+ if any element of +self+ meets a given criterion.
+ *
+ * With no block given and no argument, returns +true+ if +self+ has any truthy element,
+ * +false+ otherwise:
+ *
+ * [nil, 0, false].any? # => true
+ * [nil, false].any? # => false
+ * [].any? # => false
+ *
+ * With a block given and no argument, calls the block with each element in +self+;
+ * returns +true+ if the block returns any truthy value, +false+ otherwise:
+ *
+ * [0, 1, 2].any? {|element| element > 1 } # => true
+ * [0, 1, 2].any? {|element| element > 2 } # => false
+ *
+ * If argument +obj+ is given, returns +true+ if +obj+.<tt>===</tt> any element,
+ * +false+ otherwise:
+ *
+ * ['food', 'drink'].any?(/foo/) # => true
+ * ['food', 'drink'].any?(/bar/) # => false
+ * [].any?(/foo/) # => false
+ * [0, 1, 2].any?(1) # => true
+ * [0, 1, 2].any?(3) # => false
+ *
+ * Related: Enumerable#any?
+ */
+
+static VALUE
+rb_ary_any_p(int argc, VALUE *argv, VALUE ary)
+{
+ long i, len = RARRAY_LEN(ary);
+
+ rb_check_arity(argc, 0, 1);
+ if (!len) return Qfalse;
+ if (argc) {
+ if (rb_block_given_p()) {
+ rb_warn("given block not used");
+ }
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ if (RTEST(rb_funcall(argv[0], idEqq, 1, RARRAY_AREF(ary, i)))) return Qtrue;
+ }
+ }
+ else if (!rb_block_given_p()) {
+ for (i = 0; i < len; ++i) {
+ if (RTEST(RARRAY_AREF(ary, i))) return Qtrue;
+ }
+ }
+ else {
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) return Qtrue;
+ }
+ }
+ return Qfalse;
+}
+
+/*
+ * call-seq:
+ * array.all? -> true or false
+ * array.all? {|element| ... } -> true or false
+ * array.all?(obj) -> true or false
+ *
+ * Returns +true+ if all elements of +self+ meet a given criterion.
+ *
+ * With no block given and no argument, returns +true+ if +self+ contains only truthy elements,
+ * +false+ otherwise:
+ *
+ * [0, 1, :foo].all? # => true
+ * [0, nil, 2].all? # => false
+ * [].all? # => true
+ *
+ * With a block given and no argument, calls the block with each element in +self+;
+ * returns +true+ if the block returns only truthy values, +false+ otherwise:
+ *
+ * [0, 1, 2].all? { |element| element < 3 } # => true
+ * [0, 1, 2].all? { |element| element < 2 } # => false
+ *
+ * If argument +obj+ is given, returns +true+ if <tt>obj.===</tt> every element, +false+ otherwise:
+ *
+ * ['food', 'fool', 'foot'].all?(/foo/) # => true
+ * ['food', 'drink'].all?(/bar/) # => false
+ * [].all?(/foo/) # => true
+ * [0, 0, 0].all?(0) # => true
+ * [0, 1, 2].all?(1) # => false
+ *
+ * Related: Enumerable#all?
+ */
+
+static VALUE
+rb_ary_all_p(int argc, VALUE *argv, VALUE ary)
+{
+ long i, len = RARRAY_LEN(ary);
+
+ rb_check_arity(argc, 0, 1);
+ if (!len) return Qtrue;
+ if (argc) {
+ if (rb_block_given_p()) {
+ rb_warn("given block not used");
+ }
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ if (!RTEST(rb_funcall(argv[0], idEqq, 1, RARRAY_AREF(ary, i)))) return Qfalse;
+ }
+ }
+ else if (!rb_block_given_p()) {
+ for (i = 0; i < len; ++i) {
+ if (!RTEST(RARRAY_AREF(ary, i))) return Qfalse;
+ }
+ }
+ else {
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ if (!RTEST(rb_yield(RARRAY_AREF(ary, i)))) return Qfalse;
+ }
+ }
+ return Qtrue;
+}
+
+/*
+ * call-seq:
+ * array.none? -> true or false
+ * array.none? {|element| ... } -> true or false
+ * array.none?(obj) -> true or false
+ *
+ * Returns +true+ if no element of +self+ meet a given criterion.
+ *
+ * With no block given and no argument, returns +true+ if +self+ has no truthy elements,
+ * +false+ otherwise:
+ *
+ * [nil, false].none? # => true
+ * [nil, 0, false].none? # => false
+ * [].none? # => true
+ *
+ * With a block given and no argument, calls the block with each element in +self+;
+ * returns +true+ if the block returns no truthy value, +false+ otherwise:
+ *
+ * [0, 1, 2].none? {|element| element > 3 } # => true
+ * [0, 1, 2].none? {|element| element > 1 } # => false
+ *
+ * If argument +obj+ is given, returns +true+ if <tt>obj.===</tt> no element, +false+ otherwise:
+ *
+ * ['food', 'drink'].none?(/bar/) # => true
+ * ['food', 'drink'].none?(/foo/) # => false
+ * [].none?(/foo/) # => true
+ * [0, 1, 2].none?(3) # => true
+ * [0, 1, 2].none?(1) # => false
+ *
+ * Related: Enumerable#none?
+ */
+
+static VALUE
+rb_ary_none_p(int argc, VALUE *argv, VALUE ary)
+{
+ long i, len = RARRAY_LEN(ary);
+
+ rb_check_arity(argc, 0, 1);
+ if (!len) return Qtrue;
+ if (argc) {
+ if (rb_block_given_p()) {
+ rb_warn("given block not used");
+ }
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ if (RTEST(rb_funcall(argv[0], idEqq, 1, RARRAY_AREF(ary, i)))) return Qfalse;
+ }
+ }
+ else if (!rb_block_given_p()) {
+ for (i = 0; i < len; ++i) {
+ if (RTEST(RARRAY_AREF(ary, i))) return Qfalse;
+ }
+ }
+ else {
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) return Qfalse;
+ }
+ }
+ return Qtrue;
+}
+
+/*
+ * call-seq:
+ * array.one? -> true or false
+ * array.one? {|element| ... } -> true or false
+ * array.one?(obj) -> true or false
+ *
+ * Returns +true+ if exactly one element of +self+ meets a given criterion.
+ *
+ * With no block given and no argument, returns +true+ if +self+ has exactly one truthy element,
+ * +false+ otherwise:
+ *
+ * [nil, 0].one? # => true
+ * [0, 0].one? # => false
+ * [nil, nil].one? # => false
+ * [].one? # => false
+ *
+ * With a block given and no argument, calls the block with each element in +self+;
+ * returns +true+ if the block a truthy value for exactly one element, +false+ otherwise:
+ *
+ * [0, 1, 2].one? {|element| element > 0 } # => false
+ * [0, 1, 2].one? {|element| element > 1 } # => true
+ * [0, 1, 2].one? {|element| element > 2 } # => false
+ *
+ * If argument +obj+ is given, returns +true+ if <tt>obj.===</tt> exactly one element,
+ * +false+ otherwise:
+ *
+ * [0, 1, 2].one?(0) # => true
+ * [0, 0, 1].one?(0) # => false
+ * [1, 1, 2].one?(0) # => false
+ * ['food', 'drink'].one?(/bar/) # => false
+ * ['food', 'drink'].one?(/foo/) # => true
+ * [].one?(/foo/) # => false
+ *
+ * Related: Enumerable#one?
+ */
+
+static VALUE
+rb_ary_one_p(int argc, VALUE *argv, VALUE ary)
+{
+ long i, len = RARRAY_LEN(ary);
+ VALUE result = Qfalse;
+
+ rb_check_arity(argc, 0, 1);
+ if (!len) return Qfalse;
+ if (argc) {
+ if (rb_block_given_p()) {
+ rb_warn("given block not used");
+ }
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ if (RTEST(rb_funcall(argv[0], idEqq, 1, RARRAY_AREF(ary, i)))) {
+ if (result) return Qfalse;
+ result = Qtrue;
+ }
+ }
+ }
+ else if (!rb_block_given_p()) {
+ for (i = 0; i < len; ++i) {
+ if (RTEST(RARRAY_AREF(ary, i))) {
+ if (result) return Qfalse;
+ result = Qtrue;
+ }
+ }
+ }
+ else {
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
+ if (result) return Qfalse;
+ result = Qtrue;
+ }
+ }
+ }
+ return result;
+}
+
+/*
+ * call-seq:
+ * array.dig(index, *identifiers) -> object
+ *
+ * Finds and returns the object in nested objects
+ * that is specified by +index+ and +identifiers+.
+ * The nested objects may be instances of various classes.
+ * See {Dig Methods}[rdoc-ref:dig_methods.rdoc].
+ *
+ * Examples:
+ *
+ * a = [:foo, [:bar, :baz, [:bat, :bam]]]
+ * a.dig(1) # => [:bar, :baz, [:bat, :bam]]
+ * a.dig(1, 2) # => [:bat, :bam]
+ * a.dig(1, 2, 0) # => :bat
+ * a.dig(1, 2, 3) # => nil
+ *
+ */
+
+static VALUE
+rb_ary_dig(int argc, VALUE *argv, VALUE self)
+{
+ rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS);
+ self = rb_ary_at(self, *argv);
+ if (!--argc) return self;
+ ++argv;
+ return rb_obj_dig(argc, argv, self, Qnil);
+}
+
+static inline VALUE
+finish_exact_sum(long n, VALUE r, VALUE v, int z)
+{
+ if (n != 0)
+ v = rb_fix_plus(LONG2FIX(n), v);
+ if (!UNDEF_P(r)) {
+ v = rb_rational_plus(r, v);
+ }
+ else if (!n && z) {
+ v = rb_fix_plus(LONG2FIX(0), v);
+ }
+ return v;
+}
+
+/*
+ * call-seq:
+ * array.sum(init = 0) -> object
+ * array.sum(init = 0) {|element| ... } -> object
+ *
+ * When no block is given, returns the object equivalent to:
+ *
+ * sum = init
+ * array.each {|element| sum += element }
+ * sum
+ *
+ * For example, <tt>[e1, e2, e3].sum</tt> returns <tt>init + e1 + e2 + e3</tt>.
+ *
+ * Examples:
+ *
+ * a = [0, 1, 2, 3]
+ * a.sum # => 6
+ * a.sum(100) # => 106
+ *
+ * The elements need not be numeric, but must be <tt>+</tt>-compatible
+ * with each other and with +init+:
+ *
+ * a = ['abc', 'def', 'ghi']
+ * a.sum('jkl') # => "jklabcdefghi"
+ *
+ * When a block is given, it is called with each element
+ * and the block's return value (instead of the element itself) is used as the addend:
+ *
+ * a = ['zero', 1, :two]
+ * s = a.sum('Coerced and concatenated: ') {|element| element.to_s }
+ * s # => "Coerced and concatenated: zero1two"
+ *
+ * Notes:
+ *
+ * - Array#join and Array#flatten may be faster than Array#sum
+ * for an \Array of Strings or an \Array of Arrays.
+ * - Array#sum method may not respect method redefinition of "+" methods such as Integer#+.
+ *
+ */
+
+static VALUE
+rb_ary_sum(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE e, v, r;
+ long i, n;
+ int block_given;
+
+ v = (rb_check_arity(argc, 0, 1) ? argv[0] : LONG2FIX(0));
+
+ block_given = rb_block_given_p();
+
+ if (RARRAY_LEN(ary) == 0)
+ return v;
+
+ n = 0;
+ r = Qundef;
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ e = RARRAY_AREF(ary, i);
+ if (block_given)
+ e = rb_yield(e);
+ if (FIXNUM_P(e)) {
+ n += FIX2LONG(e); /* should not overflow long type */
+ if (!FIXABLE(n)) {
+ v = rb_big_plus(LONG2NUM(n), v);
+ n = 0;
+ }
+ }
+ else if (RB_BIGNUM_TYPE_P(e))
+ v = rb_big_plus(e, v);
+ else if (RB_TYPE_P(e, T_RATIONAL)) {
+ if (UNDEF_P(r))
+ r = e;
+ else
+ r = rb_rational_plus(r, e);
+ }
+ else
+ goto not_exact;
+ }
+ v = finish_exact_sum(n, r, v, argc!=0);
+ return v;
+
+ not_exact:
+ v = finish_exact_sum(n, r, v, i!=0);
+
+ if (RB_FLOAT_TYPE_P(e)) {
+ /*
+ * Kahan-Babuska balancing compensated summation algorithm
+ * See https://link.springer.com/article/10.1007/s00607-005-0139-x
+ */
+ double f, c;
+ double x, t;
+
+ f = NUM2DBL(v);
+ c = 0.0;
+ goto has_float_value;
+ for (; i < RARRAY_LEN(ary); i++) {
+ e = RARRAY_AREF(ary, i);
+ if (block_given)
+ e = rb_yield(e);
+ if (RB_FLOAT_TYPE_P(e))
+ has_float_value:
+ x = RFLOAT_VALUE(e);
+ else if (FIXNUM_P(e))
+ x = FIX2LONG(e);
+ else if (RB_BIGNUM_TYPE_P(e))
+ x = rb_big2dbl(e);
+ else if (RB_TYPE_P(e, T_RATIONAL))
+ x = rb_num2dbl(e);
+ else
+ goto not_float;
+
+ if (isnan(f)) continue;
+ if (isnan(x)) {
+ f = x;
+ continue;
+ }
+ if (isinf(x)) {
+ if (isinf(f) && signbit(x) != signbit(f))
+ f = NAN;
+ else
+ f = x;
+ continue;
+ }
+ if (isinf(f)) continue;
+
+ t = f + x;
+ if (fabs(f) >= fabs(x))
+ c += ((f - t) + x);
+ else
+ c += ((x - t) + f);
+ f = t;
+ }
+ f += c;
+ return DBL2NUM(f);
+
+ not_float:
+ v = DBL2NUM(f);
+ }
+
+ goto has_some_value;
+ for (; i < RARRAY_LEN(ary); i++) {
+ e = RARRAY_AREF(ary, i);
+ if (block_given)
+ e = rb_yield(e);
+ has_some_value:
+ v = rb_funcall(v, idPLUS, 1, e);
+ }
+ return v;
+}
+
+static VALUE
+rb_ary_deconstruct(VALUE ary)
+{
+ return ary;
+}
+
+/*
+ * An \Array is an ordered, integer-indexed collection of objects, called _elements_.
+ * Any object (even another array) may be an array element,
+ * and an array can contain objects of different types.
+ *
+ * == \Array Indexes
+ *
+ * \Array indexing starts at 0, as in C or Java.
+ *
+ * A positive index is an offset from the first element:
+ *
+ * - Index 0 indicates the first element.
+ * - Index 1 indicates the second element.
+ * - ...
+ *
+ * A negative index is an offset, backwards, from the end of the array:
+ *
+ * - Index -1 indicates the last element.
+ * - Index -2 indicates the next-to-last element.
+ * - ...
+ *
+ * A non-negative index is <i>in range</i> if and only if it is smaller than
+ * the size of the array. For a 3-element array:
+ *
+ * - Indexes 0 through 2 are in range.
+ * - Index 3 is out of range.
+ *
+ * A negative index is <i>in range</i> if and only if its absolute value is
+ * not larger than the size of the array. For a 3-element array:
+ *
+ * - Indexes -1 through -3 are in range.
+ * - Index -4 is out of range.
+ *
+ * Although the effective index into an array is always an integer,
+ * some methods (both within and outside of class \Array)
+ * accept one or more non-integer arguments that are
+ * {integer-convertible objects}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects].
+ *
+ *
+ * == Creating Arrays
+ *
+ * You can create an \Array object explicitly with:
+ *
+ * - An {array literal}[rdoc-ref:literals.rdoc@Array+Literals]:
+ *
+ * [1, 'one', :one, [2, 'two', :two]]
+ *
+ * - A {%w or %W: string-array Literal}[rdoc-ref:literals.rdoc@25w+and+-25W-3A+String-Array+Literals]:
+ *
+ * %w[foo bar baz] # => ["foo", "bar", "baz"]
+ * %w[1 % *] # => ["1", "%", "*"]
+ *
+ * - A {%i pr %I: symbol-array Literal}[rdoc-ref:literals.rdoc@25i+and+-25I-3A+Symbol-Array+Literals]:
+ *
+ * %i[foo bar baz] # => [:foo, :bar, :baz]
+ * %i[1 % *] # => [:"1", :%, :*]
+ *
+ * - \Method Kernel#Array:
+ *
+ * Array(["a", "b"]) # => ["a", "b"]
+ * Array(1..5) # => [1, 2, 3, 4, 5]
+ * Array(key: :value) # => [[:key, :value]]
+ * Array(nil) # => []
+ * Array(1) # => [1]
+ * Array({:a => "a", :b => "b"}) # => [[:a, "a"], [:b, "b"]]
+ *
+ * - \Method Array.new:
+ *
+ * Array.new # => []
+ * Array.new(3) # => [nil, nil, nil]
+ * Array.new(4) {Hash.new} # => [{}, {}, {}, {}]
+ * Array.new(3, true) # => [true, true, true]
+ *
+ * Note that the last example above populates the array
+ * with references to the same object.
+ * This is recommended only in cases where that object is a natively immutable object
+ * such as a symbol, a numeric, +nil+, +true+, or +false+.
+ *
+ * Another way to create an array with various objects, using a block;
+ * this usage is safe for mutable objects such as hashes, strings or
+ * other arrays:
+ *
+ * Array.new(4) {|i| i.to_s } # => ["0", "1", "2", "3"]
+ *
+ * Here is a way to create a multi-dimensional array:
+ *
+ * Array.new(3) {Array.new(3)}
+ * # => [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
+ *
+ * A number of Ruby methods, both in the core and in the standard library,
+ * provide instance method +to_a+, which converts an object to an array.
+ *
+ * - ARGF#to_a
+ * - Array#to_a
+ * - Enumerable#to_a
+ * - Hash#to_a
+ * - MatchData#to_a
+ * - NilClass#to_a
+ * - OptionParser#to_a
+ * - Range#to_a
+ * - Set#to_a
+ * - Struct#to_a
+ * - Time#to_a
+ * - Benchmark::Tms#to_a
+ * - CSV::Table#to_a
+ * - Enumerator::Lazy#to_a
+ * - Gem::List#to_a
+ * - Gem::NameTuple#to_a
+ * - Gem::Platform#to_a
+ * - Gem::RequestSet::Lockfile::Tokenizer#to_a
+ * - Gem::SourceList#to_a
+ * - OpenSSL::X509::Extension#to_a
+ * - OpenSSL::X509::Name#to_a
+ * - Racc::ISet#to_a
+ * - Rinda::RingFinger#to_a
+ * - Ripper::Lexer::Elem#to_a
+ * - RubyVM::InstructionSequence#to_a
+ * - YAML::DBM#to_a
+ *
+ * == Example Usage
+ *
+ * In addition to the methods it mixes in through the Enumerable module, the
+ * \Array class has proprietary methods for accessing, searching and otherwise
+ * manipulating arrays.
+ *
+ * Some of the more common ones are illustrated below.
+ *
+ * == Accessing Elements
+ *
+ * Elements in an array can be retrieved using the Array#[] method. It can
+ * take a single integer argument (a numeric index), a pair of arguments
+ * (start and length) or a range. Negative indices start counting from the end,
+ * with -1 being the last element.
+ *
+ * arr = [1, 2, 3, 4, 5, 6]
+ * arr[2] #=> 3
+ * arr[100] #=> nil
+ * arr[-3] #=> 4
+ * arr[2, 3] #=> [3, 4, 5]
+ * arr[1..4] #=> [2, 3, 4, 5]
+ * arr[1..-3] #=> [2, 3, 4]
+ *
+ * Another way to access a particular array element is by using the #at method
+ *
+ * arr.at(0) #=> 1
+ *
+ * The #slice method works in an identical manner to Array#[].
+ *
+ * To raise an error for indices outside of the array bounds or else to
+ * provide a default value when that happens, you can use #fetch.
+ *
+ * arr = ['a', 'b', 'c', 'd', 'e', 'f']
+ * arr.fetch(100) #=> IndexError: index 100 outside of array bounds: -6...6
+ * arr.fetch(100, "oops") #=> "oops"
+ *
+ * The special methods #first and #last will return the first and last
+ * elements of an array, respectively.
+ *
+ * arr.first #=> 1
+ * arr.last #=> 6
+ *
+ * To return the first +n+ elements of an array, use #take
+ *
+ * arr.take(3) #=> [1, 2, 3]
+ *
+ * #drop does the opposite of #take, by returning the elements after +n+
+ * elements have been dropped:
+ *
+ * arr.drop(3) #=> [4, 5, 6]
+ *
+ * == Obtaining Information about an \Array
+ *
+ * Arrays keep track of their own length at all times. To query an array
+ * about the number of elements it contains, use #length, #count or #size.
+ *
+ * browsers = ['Chrome', 'Firefox', 'Safari', 'Opera', 'IE']
+ * browsers.length #=> 5
+ * browsers.count #=> 5
+ *
+ * To check whether an array contains any elements at all
+ *
+ * browsers.empty? #=> false
+ *
+ * To check whether a particular item is included in the array
+ *
+ * browsers.include?('Konqueror') #=> false
+ *
+ * == Adding Items to Arrays
+ *
+ * Items can be added to the end of an array by using either #push or #<<
+ *
+ * arr = [1, 2, 3, 4]
+ * arr.push(5) #=> [1, 2, 3, 4, 5]
+ * arr << 6 #=> [1, 2, 3, 4, 5, 6]
+ *
+ * #unshift will add a new item to the beginning of an array.
+ *
+ * arr.unshift(0) #=> [0, 1, 2, 3, 4, 5, 6]
+ *
+ * With #insert you can add a new element to an array at any position.
+ *
+ * arr.insert(3, 'apple') #=> [0, 1, 2, 'apple', 3, 4, 5, 6]
+ *
+ * Using the #insert method, you can also insert multiple values at once:
+ *
+ * arr.insert(3, 'orange', 'pear', 'grapefruit')
+ * #=> [0, 1, 2, "orange", "pear", "grapefruit", "apple", 3, 4, 5, 6]
+ *
+ * == Removing Items from an \Array
+ *
+ * The method #pop removes the last element in an array and returns it:
+ *
+ * arr = [1, 2, 3, 4, 5, 6]
+ * arr.pop #=> 6
+ * arr #=> [1, 2, 3, 4, 5]
+ *
+ * To retrieve and at the same time remove the first item, use #shift:
+ *
+ * arr.shift #=> 1
+ * arr #=> [2, 3, 4, 5]
+ *
+ * To delete an element at a particular index:
+ *
+ * arr.delete_at(2) #=> 4
+ * arr #=> [2, 3, 5]
+ *
+ * To delete a particular element anywhere in an array, use #delete:
+ *
+ * arr = [1, 2, 2, 3]
+ * arr.delete(2) #=> 2
+ * arr #=> [1,3]
+ *
+ * A useful method if you need to remove +nil+ values from an array is
+ * #compact:
+ *
+ * arr = ['foo', 0, nil, 'bar', 7, 'baz', nil]
+ * arr.compact #=> ['foo', 0, 'bar', 7, 'baz']
+ * arr #=> ['foo', 0, nil, 'bar', 7, 'baz', nil]
+ * arr.compact! #=> ['foo', 0, 'bar', 7, 'baz']
+ * arr #=> ['foo', 0, 'bar', 7, 'baz']
+ *
+ * Another common need is to remove duplicate elements from an array.
+ *
+ * It has the non-destructive #uniq, and destructive method #uniq!
+ *
+ * arr = [2, 5, 6, 556, 6, 6, 8, 9, 0, 123, 556]
+ * arr.uniq #=> [2, 5, 6, 556, 8, 9, 0, 123]
+ *
+ * == Iterating over Arrays
+ *
+ * Like all classes that include the Enumerable module, \Array has an each
+ * method, which defines what elements should be iterated over and how. In
+ * case of Array's #each, all elements in the \Array instance are yielded to
+ * the supplied block in sequence.
+ *
+ * Note that this operation leaves the array unchanged.
+ *
+ * arr = [1, 2, 3, 4, 5]
+ * arr.each {|a| print a -= 10, " "}
+ * # prints: -9 -8 -7 -6 -5
+ * #=> [1, 2, 3, 4, 5]
+ *
+ * Another sometimes useful iterator is #reverse_each which will iterate over
+ * the elements in the array in reverse order.
+ *
+ * words = %w[first second third fourth fifth sixth]
+ * str = ""
+ * words.reverse_each {|word| str += "#{word} "}
+ * p str #=> "sixth fifth fourth third second first "
+ *
+ * The #map method can be used to create a new array based on the original
+ * array, but with the values modified by the supplied block:
+ *
+ * arr.map {|a| 2*a} #=> [2, 4, 6, 8, 10]
+ * arr #=> [1, 2, 3, 4, 5]
+ * arr.map! {|a| a**2} #=> [1, 4, 9, 16, 25]
+ * arr #=> [1, 4, 9, 16, 25]
+ *
+ *
+ * == Selecting Items from an \Array
+ *
+ * Elements can be selected from an array according to criteria defined in a
+ * block. The selection can happen in a destructive or a non-destructive
+ * manner. While the destructive operations will modify the array they were
+ * called on, the non-destructive methods usually return a new array with the
+ * selected elements, but leave the original array unchanged.
+ *
+ * === Non-destructive Selection
+ *
+ * arr = [1, 2, 3, 4, 5, 6]
+ * arr.select {|a| a > 3} #=> [4, 5, 6]
+ * arr.reject {|a| a < 3} #=> [3, 4, 5, 6]
+ * arr.drop_while {|a| a < 4} #=> [4, 5, 6]
+ * arr #=> [1, 2, 3, 4, 5, 6]
+ *
+ * === Destructive Selection
+ *
+ * #select! and #reject! are the corresponding destructive methods to #select
+ * and #reject
+ *
+ * Similar to #select vs. #reject, #delete_if and #keep_if have the exact
+ * opposite result when supplied with the same block:
+ *
+ * arr.delete_if {|a| a < 4} #=> [4, 5, 6]
+ * arr #=> [4, 5, 6]
+ *
+ * arr = [1, 2, 3, 4, 5, 6]
+ * arr.keep_if {|a| a < 4} #=> [1, 2, 3]
+ * arr #=> [1, 2, 3]
+ *
+ * == What's Here
+ *
+ * First, what's elsewhere. \Class \Array:
+ *
+ * - Inherits from {class Object}[rdoc-ref:Object@What-27s+Here].
+ * - Includes {module Enumerable}[rdoc-ref:Enumerable@What-27s+Here],
+ * which provides dozens of additional methods.
+ *
+ * Here, class \Array provides methods that are useful for:
+ *
+ * - {Creating an Array}[rdoc-ref:Array@Methods+for+Creating+an+Array]
+ * - {Querying}[rdoc-ref:Array@Methods+for+Querying]
+ * - {Comparing}[rdoc-ref:Array@Methods+for+Comparing]
+ * - {Fetching}[rdoc-ref:Array@Methods+for+Fetching]
+ * - {Assigning}[rdoc-ref:Array@Methods+for+Assigning]
+ * - {Deleting}[rdoc-ref:Array@Methods+for+Deleting]
+ * - {Combining}[rdoc-ref:Array@Methods+for+Combining]
+ * - {Iterating}[rdoc-ref:Array@Methods+for+Iterating]
+ * - {Converting}[rdoc-ref:Array@Methods+for+Converting]
+ * - {And more....}[rdoc-ref:Array@Other+Methods]
+ *
+ * === Methods for Creating an \Array
+ *
+ * - ::[]: Returns a new array populated with given objects.
+ * - ::new: Returns a new array.
+ * - ::try_convert: Returns a new array created from a given object.
+ *
+ * === Methods for Querying
+ *
+ * - #length, #size: Returns the count of elements.
+ * - #include?: Returns whether any element <tt>==</tt> a given object.
+ * - #empty?: Returns whether there are no elements.
+ * - #all?: Returns whether all elements meet a given criterion.
+ * - #any?: Returns whether any element meets a given criterion.
+ * - #none?: Returns whether no element <tt>==</tt> a given object.
+ * - #one?: Returns whether exactly one element <tt>==</tt> a given object.
+ * - #count: Returns the count of elements that meet a given criterion.
+ * - #find_index, #index: Returns the index of the first element that meets a given criterion.
+ * - #rindex: Returns the index of the last element that meets a given criterion.
+ * - #hash: Returns the integer hash code.
+ *
+ * === Methods for Comparing
+ *
+ * - #<=>: Returns -1, 0, or 1 * as +self+ is less than, equal to, or
+ * greater than a given object.
+ * - #==: Returns whether each element in +self+ is <tt>==</tt> to the corresponding element
+ * in a given object.
+ * - #eql?: Returns whether each element in +self+ is <tt>eql?</tt> to the corresponding
+ * element in a given object.
+
+ * === Methods for Fetching
+ *
+ * These methods do not modify +self+.
+ *
+ * - #[]: Returns one or more elements.
+ * - #fetch: Returns the element at a given offset.
+ * - #first: Returns one or more leading elements.
+ * - #last: Returns one or more trailing elements.
+ * - #max: Returns one or more maximum-valued elements,
+ * as determined by <tt><=></tt> or a given block.
+ * - #min: Returns one or more minimum-valued elements,
+ * as determined by <tt><=></tt> or a given block.
+ * - #minmax: Returns the minimum-valued and maximum-valued elements,
+ * as determined by <tt><=></tt> or a given block.
+ * - #assoc: Returns the first element that is an array
+ * whose first element <tt>==</tt> a given object.
+ * - #rassoc: Returns the first element that is an array
+ * whose second element <tt>==</tt> a given object.
+ * - #at: Returns the element at a given offset.
+ * - #values_at: Returns the elements at given offsets.
+ * - #dig: Returns the object in nested objects
+ * that is specified by a given index and additional arguments.
+ * - #drop: Returns trailing elements as determined by a given index.
+ * - #take: Returns leading elements as determined by a given index.
+ * - #drop_while: Returns trailing elements as determined by a given block.
+ * - #take_while: Returns leading elements as determined by a given block.
+ * - #slice: Returns consecutive elements as determined by a given argument.
+ * - #sort: Returns all elements in an order determined by <tt><=></tt> or a given block.
+ * - #reverse: Returns all elements in reverse order.
+ * - #compact: Returns an array containing all non-+nil+ elements.
+ * - #select, #filter: Returns an array containing elements selected by a given block.
+ * - #uniq: Returns an array containing non-duplicate elements.
+ * - #rotate: Returns all elements with some rotated from one end to the other.
+ * - #bsearch: Returns an element selected via a binary search
+ * as determined by a given block.
+ * - #bsearch_index: Returns the index of an element selected via a binary search
+ * as determined by a given block.
+ * - #sample: Returns one or more random elements.
+ * - #shuffle: Returns elements in a random order.
+ *
+ * === Methods for Assigning
+ *
+ * These methods add, replace, or reorder elements in +self+.
+ *
+ * - #[]=: Assigns specified elements with a given object.
+ * - #push, #append, #<<: Appends trailing elements.
+ * - #unshift, #prepend: Prepends leading elements.
+ * - #insert: Inserts given objects at a given offset; does not replace elements.
+ * - #concat: Appends all elements from given arrays.
+ * - #fill: Replaces specified elements with specified objects.
+ * - #replace: Replaces the content of +self+ with the content of a given array.
+ * - #reverse!: Replaces +self+ with its elements reversed.
+ * - #rotate!: Replaces +self+ with its elements rotated.
+ * - #shuffle!: Replaces +self+ with its elements in random order.
+ * - #sort!: Replaces +self+ with its elements sorted,
+ * as determined by <tt><=></tt> or a given block.
+ * - #sort_by!: Replaces +self+ with its elements sorted, as determined by a given block.
+ *
+ * === Methods for Deleting
+ *
+ * Each of these methods removes elements from +self+:
+ *
+ * - #pop: Removes and returns the last element.
+ * - #shift: Removes and returns the first element.
+ * - #compact!: Removes all +nil+ elements.
+ * - #delete: Removes elements equal to a given object.
+ * - #delete_at: Removes the element at a given offset.
+ * - #delete_if: Removes elements specified by a given block.
+ * - #keep_if: Removes elements not specified by a given block.
+ * - #reject!: Removes elements specified by a given block.
+ * - #select!, #filter!: Removes elements not specified by a given block.
+ * - #slice!: Removes and returns a sequence of elements.
+ * - #uniq!: Removes duplicates.
+ *
+ * === Methods for Combining
+ *
+ * - #&: Returns an array containing elements found both in +self+ and a given array.
+ * - #intersection: Returns an array containing elements found both in +self+
+ * and in each given array.
+ * - #+: Returns an array containing all elements of +self+ followed by all elements of a given array.
+ * - #-: Returns an array containing all elements of +self+ that are not found in a given array.
+ * - #|: Returns an array containing all elements of +self+ and all elements of a given array,
+ * duplicates removed.
+ * - #union: Returns an array containing all elements of +self+ and all elements of given arrays,
+ * duplicates removed.
+ * - #difference: Returns an array containing all elements of +self+ that are not found
+ * in any of the given arrays..
+ * - #product: Returns or yields all combinations of elements from +self+ and given arrays.
+ *
+ * === Methods for Iterating
+ *
+ * - #each: Passes each element to a given block.
+ * - #reverse_each: Passes each element, in reverse order, to a given block.
+ * - #each_index: Passes each element index to a given block.
+ * - #cycle: Calls a given block with each element, then does so again,
+ * for a specified number of times, or forever.
+ * - #combination: Calls a given block with combinations of elements of +self+;
+ * a combination does not use the same element more than once.
+ * - #permutation: Calls a given block with permutations of elements of +self+;
+ * a permutation does not use the same element more than once.
+ * - #repeated_combination: Calls a given block with combinations of elements of +self+;
+ * a combination may use the same element more than once.
+ * - #repeated_permutation: Calls a given block with permutations of elements of +self+;
+ * a permutation may use the same element more than once.
+ *
+ * === Methods for Converting
+ *
+ * - #map, #collect: Returns an array containing the block return-value for each element.
+ * - #map!, #collect!: Replaces each element with a block return-value.
+ * - #flatten: Returns an array that is a recursive flattening of +self+.
+ * - #flatten!: Replaces each nested array in +self+ with the elements from that array.
+ * - #inspect, #to_s: Returns a new String containing the elements.
+ * - #join: Returns a newsString containing the elements joined by the field separator.
+ * - #to_a: Returns +self+ or a new array containing all elements.
+ * - #to_ary: Returns +self+.
+ * - #to_h: Returns a new hash formed from the elements.
+ * - #transpose: Transposes +self+, which must be an array of arrays.
+ * - #zip: Returns a new array of arrays containing +self+ and given arrays;
+ * follow the link for details.
+ *
+ * === Other Methods
+ *
+ * - #*: Returns one of the following:
+ *
+ * - With integer argument +n+, a new array that is the concatenation
+ * of +n+ copies of +self+.
+ * - With string argument +field_separator+, a new string that is equivalent to
+ * <tt>join(field_separator)</tt>.
+ *
+ * - #abbrev: Returns a hash of unambiguous abbreviations for elements.
+ * - #pack: Packs the elements into a binary sequence.
+ * - #sum: Returns a sum of elements according to either <tt>+</tt> or a given block.
+ */
+
void
-Init_Array()
+Init_Array(void)
{
rb_cArray = rb_define_class("Array", rb_cObject);
rb_include_module(rb_cArray, rb_mEnumerable);
+ rb_define_alloc_func(rb_cArray, empty_ary_alloc);
rb_define_singleton_method(rb_cArray, "new", rb_ary_s_new, -1);
rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1);
+ rb_define_singleton_method(rb_cArray, "try_convert", rb_ary_s_try_convert, 1);
rb_define_method(rb_cArray, "initialize", rb_ary_initialize, -1);
- rb_define_method(rb_cArray, "to_s", rb_ary_to_s, 0);
+ rb_define_method(rb_cArray, "initialize_copy", rb_ary_replace, 1);
+
rb_define_method(rb_cArray, "inspect", rb_ary_inspect, 0);
+ rb_define_alias(rb_cArray, "to_s", "inspect");
rb_define_method(rb_cArray, "to_a", rb_ary_to_a, 0);
- rb_define_method(rb_cArray, "to_ary", rb_ary_to_a, 0);
- rb_define_method(rb_cArray, "frozen?", rb_ary_frozen_p, 0);
+ rb_define_method(rb_cArray, "to_h", rb_ary_to_h, 0);
+ rb_define_method(rb_cArray, "to_ary", rb_ary_to_ary_m, 0);
rb_define_method(rb_cArray, "==", rb_ary_equal, 1);
rb_define_method(rb_cArray, "eql?", rb_ary_eql, 1);
rb_define_method(rb_cArray, "hash", rb_ary_hash, 0);
- rb_define_method(rb_cArray, "===", rb_ary_equal, 1);
rb_define_method(rb_cArray, "[]", rb_ary_aref, -1);
rb_define_method(rb_cArray, "[]=", rb_ary_aset, -1);
rb_define_method(rb_cArray, "at", rb_ary_at, 1);
- rb_define_method(rb_cArray, "first", rb_ary_first, 0);
- rb_define_method(rb_cArray, "last", rb_ary_last, 0);
- rb_define_method(rb_cArray, "concat", rb_ary_concat, 1);
+ rb_define_method(rb_cArray, "fetch", rb_ary_fetch, -1);
+ rb_define_method(rb_cArray, "first", rb_ary_first, -1);
+ rb_define_method(rb_cArray, "last", rb_ary_last, -1);
+ rb_define_method(rb_cArray, "concat", rb_ary_concat_multi, -1);
+ rb_define_method(rb_cArray, "union", rb_ary_union_multi, -1);
+ rb_define_method(rb_cArray, "difference", rb_ary_difference_multi, -1);
+ rb_define_method(rb_cArray, "intersection", rb_ary_intersection_multi, -1);
+ rb_define_method(rb_cArray, "intersect?", rb_ary_intersect_p, 1);
rb_define_method(rb_cArray, "<<", rb_ary_push, 1);
rb_define_method(rb_cArray, "push", rb_ary_push_m, -1);
- rb_define_method(rb_cArray, "pop", rb_ary_pop, 0);
- rb_define_method(rb_cArray, "shift", rb_ary_shift, 0);
+ rb_define_alias(rb_cArray, "append", "push");
+ rb_define_method(rb_cArray, "pop", rb_ary_pop_m, -1);
+ rb_define_method(rb_cArray, "shift", rb_ary_shift_m, -1);
rb_define_method(rb_cArray, "unshift", rb_ary_unshift_m, -1);
+ rb_define_alias(rb_cArray, "prepend", "unshift");
+ rb_define_method(rb_cArray, "insert", rb_ary_insert, -1);
rb_define_method(rb_cArray, "each", rb_ary_each, 0);
rb_define_method(rb_cArray, "each_index", rb_ary_each_index, 0);
rb_define_method(rb_cArray, "reverse_each", rb_ary_reverse_each, 0);
rb_define_method(rb_cArray, "length", rb_ary_length, 0);
- rb_define_alias(rb_cArray, "size", "length");
+ rb_define_method(rb_cArray, "size", rb_ary_length, 0);
rb_define_method(rb_cArray, "empty?", rb_ary_empty_p, 0);
- rb_define_method(rb_cArray, "index", rb_ary_index, 1);
- rb_define_method(rb_cArray, "rindex", rb_ary_rindex, 1);
- rb_define_method(rb_cArray, "indexes", rb_ary_indexes, -1);
- rb_define_method(rb_cArray, "indices", rb_ary_indexes, -1);
- rb_define_method(rb_cArray, "clone", rb_ary_clone, 0);
+ rb_define_method(rb_cArray, "find_index", rb_ary_index, -1);
+ rb_define_method(rb_cArray, "index", rb_ary_index, -1);
+ rb_define_method(rb_cArray, "rindex", rb_ary_rindex, -1);
rb_define_method(rb_cArray, "join", rb_ary_join_m, -1);
rb_define_method(rb_cArray, "reverse", rb_ary_reverse_m, 0);
rb_define_method(rb_cArray, "reverse!", rb_ary_reverse_bang, 0);
+ rb_define_method(rb_cArray, "rotate", rb_ary_rotate_m, -1);
+ rb_define_method(rb_cArray, "rotate!", rb_ary_rotate_bang, -1);
rb_define_method(rb_cArray, "sort", rb_ary_sort, 0);
rb_define_method(rb_cArray, "sort!", rb_ary_sort_bang, 0);
+ rb_define_method(rb_cArray, "sort_by!", rb_ary_sort_by_bang, 0);
rb_define_method(rb_cArray, "collect", rb_ary_collect, 0);
rb_define_method(rb_cArray, "collect!", rb_ary_collect_bang, 0);
+ rb_define_method(rb_cArray, "map", rb_ary_collect, 0);
rb_define_method(rb_cArray, "map!", rb_ary_collect_bang, 0);
- rb_define_method(rb_cArray, "filter", rb_ary_filter, 0);
+ rb_define_method(rb_cArray, "select", rb_ary_select, 0);
+ rb_define_method(rb_cArray, "select!", rb_ary_select_bang, 0);
+ rb_define_method(rb_cArray, "filter", rb_ary_select, 0);
+ rb_define_method(rb_cArray, "filter!", rb_ary_select_bang, 0);
+ rb_define_method(rb_cArray, "keep_if", rb_ary_keep_if, 0);
+ rb_define_method(rb_cArray, "values_at", rb_ary_values_at, -1);
rb_define_method(rb_cArray, "delete", rb_ary_delete, 1);
rb_define_method(rb_cArray, "delete_at", rb_ary_delete_at_m, 1);
rb_define_method(rb_cArray, "delete_if", rb_ary_delete_if, 0);
+ rb_define_method(rb_cArray, "reject", rb_ary_reject, 0);
rb_define_method(rb_cArray, "reject!", rb_ary_reject_bang, 0);
- rb_define_method(rb_cArray, "replace", rb_ary_replace_m, 1);
+ rb_define_method(rb_cArray, "zip", rb_ary_zip, -1);
+ rb_define_method(rb_cArray, "transpose", rb_ary_transpose, 0);
+ rb_define_method(rb_cArray, "replace", rb_ary_replace, 1);
rb_define_method(rb_cArray, "clear", rb_ary_clear, 0);
rb_define_method(rb_cArray, "fill", rb_ary_fill, -1);
rb_define_method(rb_cArray, "include?", rb_ary_includes, 1);
@@ -1665,13 +8904,38 @@ Init_Array()
rb_define_method(rb_cArray, "&", rb_ary_and, 1);
rb_define_method(rb_cArray, "|", rb_ary_or, 1);
+ rb_define_method(rb_cArray, "max", rb_ary_max, -1);
+ rb_define_method(rb_cArray, "min", rb_ary_min, -1);
+ rb_define_method(rb_cArray, "minmax", rb_ary_minmax, 0);
+
rb_define_method(rb_cArray, "uniq", rb_ary_uniq, 0);
rb_define_method(rb_cArray, "uniq!", rb_ary_uniq_bang, 0);
rb_define_method(rb_cArray, "compact", rb_ary_compact, 0);
rb_define_method(rb_cArray, "compact!", rb_ary_compact_bang, 0);
- rb_define_method(rb_cArray, "flatten", rb_ary_flatten, 0);
- rb_define_method(rb_cArray, "flatten!", rb_ary_flatten_bang, 0);
- rb_define_method(rb_cArray, "nitems", rb_ary_nitems, 0);
-
- cmp = rb_intern("<=>");
+ rb_define_method(rb_cArray, "flatten", rb_ary_flatten, -1);
+ rb_define_method(rb_cArray, "flatten!", rb_ary_flatten_bang, -1);
+ rb_define_method(rb_cArray, "count", rb_ary_count, -1);
+ rb_define_method(rb_cArray, "cycle", rb_ary_cycle, -1);
+ rb_define_method(rb_cArray, "permutation", rb_ary_permutation, -1);
+ rb_define_method(rb_cArray, "combination", rb_ary_combination, 1);
+ rb_define_method(rb_cArray, "repeated_permutation", rb_ary_repeated_permutation, 1);
+ rb_define_method(rb_cArray, "repeated_combination", rb_ary_repeated_combination, 1);
+ rb_define_method(rb_cArray, "product", rb_ary_product, -1);
+
+ rb_define_method(rb_cArray, "take", rb_ary_take, 1);
+ rb_define_method(rb_cArray, "take_while", rb_ary_take_while, 0);
+ rb_define_method(rb_cArray, "drop", rb_ary_drop, 1);
+ rb_define_method(rb_cArray, "drop_while", rb_ary_drop_while, 0);
+ rb_define_method(rb_cArray, "bsearch", rb_ary_bsearch, 0);
+ rb_define_method(rb_cArray, "bsearch_index", rb_ary_bsearch_index, 0);
+ rb_define_method(rb_cArray, "any?", rb_ary_any_p, -1);
+ rb_define_method(rb_cArray, "all?", rb_ary_all_p, -1);
+ rb_define_method(rb_cArray, "none?", rb_ary_none_p, -1);
+ rb_define_method(rb_cArray, "one?", rb_ary_one_p, -1);
+ rb_define_method(rb_cArray, "dig", rb_ary_dig, -1);
+ rb_define_method(rb_cArray, "sum", rb_ary_sum, -1);
+
+ rb_define_method(rb_cArray, "deconstruct", rb_ary_deconstruct, 0);
}
+
+#include "array.rbinc"
diff --git a/array.rb b/array.rb
new file mode 100644
index 0000000000..b9fa9844e6
--- /dev/null
+++ b/array.rb
@@ -0,0 +1,69 @@
+class Array
+ # call-seq:
+ # array.shuffle!(random: Random) -> array
+ #
+ # Shuffles the elements of +self+ in place.
+ # a = [1, 2, 3] #=> [1, 2, 3]
+ # a.shuffle! #=> [2, 3, 1]
+ # a #=> [2, 3, 1]
+ #
+ # The optional +random+ argument will be used as the random number generator:
+ # a.shuffle!(random: Random.new(1)) #=> [1, 3, 2]
+ def shuffle!(random: Random)
+ Primitive.rb_ary_shuffle_bang(random)
+ end
+
+ # call-seq:
+ # array.shuffle(random: Random) -> new_ary
+ #
+ # Returns a new array with elements of +self+ shuffled.
+ # a = [1, 2, 3] #=> [1, 2, 3]
+ # a.shuffle #=> [2, 3, 1]
+ # a #=> [1, 2, 3]
+ #
+ # The optional +random+ argument will be used as the random number generator:
+ # a.shuffle(random: Random.new(1)) #=> [1, 3, 2]
+ def shuffle(random: Random)
+ Primitive.rb_ary_shuffle(random)
+ end
+
+ # call-seq:
+ # array.sample(random: Random) -> object
+ # array.sample(n, random: Random) -> new_ary
+ #
+ # Returns random elements from +self+.
+ #
+ # When no arguments are given, returns a random element from +self+:
+ # a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+ # a.sample # => 3
+ # a.sample # => 8
+ # If +self+ is empty, returns +nil+.
+ #
+ # When argument +n+ is given, returns a new \Array containing +n+ random
+ # elements from +self+:
+ # a.sample(3) # => [8, 9, 2]
+ # a.sample(6) # => [9, 6, 10, 3, 1, 4]
+ # Returns no more than <tt>a.size</tt> elements
+ # (because no new duplicates are introduced):
+ # a.sample(a.size * 2) # => [6, 4, 1, 8, 5, 9, 10, 2, 3, 7]
+ # But +self+ may contain duplicates:
+ # a = [1, 1, 1, 2, 2, 3]
+ # a.sample(a.size * 2) # => [1, 1, 3, 2, 1, 2]
+ # The argument +n+ must be a non-negative numeric value.
+ # The order of the result array is unrelated to the order of +self+.
+ # Returns a new empty \Array if +self+ is empty.
+ #
+ # The optional +random+ argument will be used as the random number generator:
+ # a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+ # a.sample(random: Random.new(1)) #=> 6
+ # a.sample(4, random: Random.new(1)) #=> [6, 10, 9, 2]
+ def sample(n = (ary = false), random: Random)
+ if Primitive.mandatory_only?
+ # Primitive.cexpr! %{ rb_ary_sample(self, rb_cRandom, Qfalse, Qfalse) }
+ Primitive.ary_sample0
+ else
+ # Primitive.cexpr! %{ rb_ary_sample(self, random, n, ary) }
+ Primitive.ary_sample(random, n, ary)
+ end
+ end
+end
diff --git a/ast.c b/ast.c
new file mode 100644
index 0000000000..adb7287ed3
--- /dev/null
+++ b/ast.c
@@ -0,0 +1,773 @@
+/* indent-tabs-mode: nil */
+#include "internal.h"
+#include "internal/parse.h"
+#include "internal/symbol.h"
+#include "internal/warnings.h"
+#include "iseq.h"
+#include "node.h"
+#include "ruby.h"
+#include "ruby/encoding.h"
+#include "ruby/util.h"
+#include "vm_core.h"
+
+#include "builtin.h"
+
+static VALUE rb_mAST;
+static VALUE rb_cNode;
+
+struct ASTNodeData {
+ rb_ast_t *ast;
+ const NODE *node;
+};
+
+static void
+node_gc_mark(void *ptr)
+{
+ struct ASTNodeData *data = (struct ASTNodeData *)ptr;
+ rb_gc_mark((VALUE)data->ast);
+}
+
+static size_t
+node_memsize(const void *ptr)
+{
+ struct ASTNodeData *data = (struct ASTNodeData *)ptr;
+ return rb_ast_memsize(data->ast);
+}
+
+static const rb_data_type_t rb_node_type = {
+ "AST/node",
+ {node_gc_mark, RUBY_TYPED_DEFAULT_FREE, node_memsize,},
+ 0, 0,
+ RUBY_TYPED_FREE_IMMEDIATELY,
+};
+
+static VALUE rb_ast_node_alloc(VALUE klass);
+
+static void
+setup_node(VALUE obj, rb_ast_t *ast, const NODE *node)
+{
+ struct ASTNodeData *data;
+
+ TypedData_Get_Struct(obj, struct ASTNodeData, &rb_node_type, data);
+ data->ast = ast;
+ data->node = node;
+}
+
+static VALUE
+ast_new_internal(rb_ast_t *ast, const NODE *node)
+{
+ VALUE obj;
+
+ obj = rb_ast_node_alloc(rb_cNode);
+ setup_node(obj, ast, node);
+
+ return obj;
+}
+
+static VALUE rb_ast_parse_str(VALUE str, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens);
+static VALUE rb_ast_parse_file(VALUE path, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens);
+
+static VALUE
+ast_parse_new(void)
+{
+ return rb_parser_set_context(rb_parser_new(), NULL, 0);
+}
+
+static VALUE
+ast_parse_done(rb_ast_t *ast)
+{
+ if (!ast->body.root) {
+ rb_ast_dispose(ast);
+ rb_exc_raise(GET_EC()->errinfo);
+ }
+
+ return ast_new_internal(ast, (NODE *)ast->body.root);
+}
+
+static VALUE
+ast_s_parse(rb_execution_context_t *ec, VALUE module, VALUE str, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
+{
+ return rb_ast_parse_str(str, keep_script_lines, error_tolerant, keep_tokens);
+}
+
+static VALUE
+rb_ast_parse_str(VALUE str, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
+{
+ rb_ast_t *ast = 0;
+
+ StringValue(str);
+ VALUE vparser = ast_parse_new();
+ if (RTEST(keep_script_lines)) rb_parser_keep_script_lines(vparser);
+ if (RTEST(error_tolerant)) rb_parser_error_tolerant(vparser);
+ if (RTEST(keep_tokens)) rb_parser_keep_tokens(vparser);
+ ast = rb_parser_compile_string_path(vparser, Qnil, str, 1);
+ return ast_parse_done(ast);
+}
+
+static VALUE
+ast_s_parse_file(rb_execution_context_t *ec, VALUE module, VALUE path, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
+{
+ return rb_ast_parse_file(path, keep_script_lines, error_tolerant, keep_tokens);
+}
+
+static VALUE
+rb_ast_parse_file(VALUE path, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
+{
+ VALUE f;
+ rb_ast_t *ast = 0;
+ rb_encoding *enc = rb_utf8_encoding();
+
+ FilePathValue(path);
+ f = rb_file_open_str(path, "r");
+ rb_funcall(f, rb_intern("set_encoding"), 2, rb_enc_from_encoding(enc), rb_str_new_cstr("-"));
+ VALUE vparser = ast_parse_new();
+ if (RTEST(keep_script_lines)) rb_parser_keep_script_lines(vparser);
+ if (RTEST(error_tolerant)) rb_parser_error_tolerant(vparser);
+ if (RTEST(keep_tokens)) rb_parser_keep_tokens(vparser);
+ ast = rb_parser_compile_file_path(vparser, Qnil, f, 1);
+ rb_io_close(f);
+ return ast_parse_done(ast);
+}
+
+static VALUE
+lex_array(VALUE array, int index)
+{
+ VALUE str = rb_ary_entry(array, index);
+ if (!NIL_P(str)) {
+ StringValue(str);
+ if (!rb_enc_asciicompat(rb_enc_get(str))) {
+ rb_raise(rb_eArgError, "invalid source encoding");
+ }
+ }
+ return str;
+}
+
+static VALUE
+rb_ast_parse_array(VALUE array, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
+{
+ rb_ast_t *ast = 0;
+
+ array = rb_check_array_type(array);
+ VALUE vparser = ast_parse_new();
+ if (RTEST(keep_script_lines)) rb_parser_keep_script_lines(vparser);
+ if (RTEST(error_tolerant)) rb_parser_error_tolerant(vparser);
+ if (RTEST(keep_tokens)) rb_parser_keep_tokens(vparser);
+ ast = rb_parser_compile_generic(vparser, lex_array, Qnil, array, 1);
+ return ast_parse_done(ast);
+}
+
+static VALUE node_children(rb_ast_t*, const NODE*);
+
+static VALUE
+node_find(VALUE self, const int node_id)
+{
+ VALUE ary;
+ long i;
+ struct ASTNodeData *data;
+ TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
+
+ if (nd_node_id(data->node) == node_id) return self;
+
+ ary = node_children(data->ast, data->node);
+
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ VALUE child = RARRAY_AREF(ary, i);
+
+ if (CLASS_OF(child) == rb_cNode) {
+ VALUE result = node_find(child, node_id);
+ if (RTEST(result)) return result;
+ }
+ }
+
+ return Qnil;
+}
+
+extern VALUE rb_e_script;
+
+static VALUE
+script_lines(VALUE path)
+{
+ VALUE hash, lines;
+ ID script_lines;
+ CONST_ID(script_lines, "SCRIPT_LINES__");
+ if (!rb_const_defined_at(rb_cObject, script_lines)) return Qnil;
+ hash = rb_const_get_at(rb_cObject, script_lines);
+ if (!RB_TYPE_P(hash, T_HASH)) return Qnil;
+ lines = rb_hash_lookup(hash, path);
+ if (!RB_TYPE_P(lines, T_ARRAY)) return Qnil;
+ return lines;
+}
+
+static VALUE
+node_id_for_backtrace_location(rb_execution_context_t *ec, VALUE module, VALUE location)
+{
+ int node_id;
+
+ if (!rb_frame_info_p(location)) {
+ rb_raise(rb_eTypeError, "Thread::Backtrace::Location object expected");
+ }
+
+ node_id = rb_get_node_id_from_frame_info(location);
+ if (node_id == -1) {
+ return Qnil;
+ }
+
+ return INT2NUM(node_id);
+}
+
+static VALUE
+ast_s_of(rb_execution_context_t *ec, VALUE module, VALUE body, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
+{
+ VALUE node, lines = Qnil;
+ const rb_iseq_t *iseq;
+ int node_id;
+
+ if (rb_frame_info_p(body)) {
+ iseq = rb_get_iseq_from_frame_info(body);
+ node_id = rb_get_node_id_from_frame_info(body);
+ }
+ else {
+ iseq = NULL;
+
+ if (rb_obj_is_proc(body)) {
+ iseq = vm_proc_iseq(body);
+
+ if (!rb_obj_is_iseq((VALUE)iseq)) return Qnil;
+ }
+ else {
+ iseq = rb_method_iseq(body);
+ }
+ if (iseq) {
+ node_id = ISEQ_BODY(iseq)->location.node_id;
+ }
+ }
+
+ if (!iseq) {
+ return Qnil;
+ }
+ lines = ISEQ_BODY(iseq)->variable.script_lines;
+
+ VALUE path = rb_iseq_path(iseq);
+ int e_option = RSTRING_LEN(path) == 2 && memcmp(RSTRING_PTR(path), "-e", 2) == 0;
+
+ if (NIL_P(lines) && rb_iseq_from_eval_p(iseq) && !e_option) {
+ rb_raise(rb_eArgError, "cannot get AST for method defined in eval");
+ }
+
+ if (!NIL_P(lines) || !NIL_P(lines = script_lines(path))) {
+ node = rb_ast_parse_array(lines, keep_script_lines, error_tolerant, keep_tokens);
+ }
+ else if (e_option) {
+ node = rb_ast_parse_str(rb_e_script, keep_script_lines, error_tolerant, keep_tokens);
+ }
+ else {
+ node = rb_ast_parse_file(path, keep_script_lines, error_tolerant, keep_tokens);
+ }
+
+ return node_find(node, node_id);
+}
+
+static VALUE
+rb_ast_node_alloc(VALUE klass)
+{
+ struct ASTNodeData *data;
+ VALUE obj = TypedData_Make_Struct(klass, struct ASTNodeData, &rb_node_type, data);
+
+ return obj;
+}
+
+static const char*
+node_type_to_str(const NODE *node)
+{
+ return (ruby_node_name(nd_type(node)) + rb_strlen_lit("NODE_"));
+}
+
+static VALUE
+ast_node_type(rb_execution_context_t *ec, VALUE self)
+{
+ struct ASTNodeData *data;
+ TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
+
+ return rb_sym_intern_ascii_cstr(node_type_to_str(data->node));
+}
+
+static VALUE
+ast_node_node_id(rb_execution_context_t *ec, VALUE self)
+{
+ struct ASTNodeData *data;
+ TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
+
+ return INT2FIX(nd_node_id(data->node));
+}
+
+#define NEW_CHILD(ast, node) node ? ast_new_internal(ast, node) : Qnil
+
+static VALUE
+rb_ary_new_from_node_args(rb_ast_t *ast, long n, ...)
+{
+ va_list ar;
+ VALUE ary;
+ long i;
+
+ ary = rb_ary_new2(n);
+
+ va_start(ar, n);
+ for (i=0; i<n; i++) {
+ NODE *node;
+ node = va_arg(ar, NODE *);
+ rb_ary_push(ary, NEW_CHILD(ast, node));
+ }
+ va_end(ar);
+ return ary;
+}
+
+static VALUE
+dump_block(rb_ast_t *ast, const NODE *node)
+{
+ VALUE ary = rb_ary_new();
+ do {
+ rb_ary_push(ary, NEW_CHILD(ast, node->nd_head));
+ } while (node->nd_next &&
+ nd_type_p(node->nd_next, NODE_BLOCK) &&
+ (node = node->nd_next, 1));
+ if (node->nd_next) {
+ rb_ary_push(ary, NEW_CHILD(ast, node->nd_next));
+ }
+
+ return ary;
+}
+
+static VALUE
+dump_array(rb_ast_t *ast, const NODE *node)
+{
+ VALUE ary = rb_ary_new();
+ rb_ary_push(ary, NEW_CHILD(ast, node->nd_head));
+
+ while (node->nd_next && nd_type_p(node->nd_next, NODE_LIST)) {
+ node = node->nd_next;
+ rb_ary_push(ary, NEW_CHILD(ast, node->nd_head));
+ }
+ rb_ary_push(ary, NEW_CHILD(ast, node->nd_next));
+
+ return ary;
+}
+
+static VALUE
+var_name(ID id)
+{
+ if (!id) return Qnil;
+ if (!rb_id2str(id)) return Qnil;
+ return ID2SYM(id);
+}
+
+static VALUE
+no_name_rest(void)
+{
+ ID rest;
+ CONST_ID(rest, "NODE_SPECIAL_NO_NAME_REST");
+ return ID2SYM(rest);
+}
+
+static VALUE
+rest_arg(rb_ast_t *ast, const NODE *rest_arg)
+{
+ return NODE_NAMED_REST_P(rest_arg) ? NEW_CHILD(ast, rest_arg) : no_name_rest();
+}
+
+static VALUE
+node_children(rb_ast_t *ast, const NODE *node)
+{
+ char name[DECIMAL_SIZE_OF_BITS(sizeof(long) * CHAR_BIT) + 2]; /* including '$' */
+
+ enum node_type type = nd_type(node);
+ switch (type) {
+ case NODE_BLOCK:
+ return dump_block(ast, node);
+ case NODE_IF:
+ return rb_ary_new_from_node_args(ast, 3, node->nd_cond, node->nd_body, node->nd_else);
+ case NODE_UNLESS:
+ return rb_ary_new_from_node_args(ast, 3, node->nd_cond, node->nd_body, node->nd_else);
+ case NODE_CASE:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
+ case NODE_CASE2:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
+ case NODE_CASE3:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
+ case NODE_WHEN:
+ return rb_ary_new_from_node_args(ast, 3, node->nd_head, node->nd_body, node->nd_next);
+ case NODE_IN:
+ return rb_ary_new_from_node_args(ast, 3, node->nd_head, node->nd_body, node->nd_next);
+ case NODE_WHILE:
+ case NODE_UNTIL:
+ return rb_ary_push(rb_ary_new_from_node_args(ast, 2, node->nd_cond, node->nd_body),
+ RBOOL(node->nd_state));
+ case NODE_ITER:
+ case NODE_FOR:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_iter, node->nd_body);
+ case NODE_FOR_MASGN:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_var);
+ case NODE_BREAK:
+ case NODE_NEXT:
+ case NODE_RETURN:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_stts);
+ case NODE_REDO:
+ return rb_ary_new_from_node_args(ast, 0);
+ case NODE_RETRY:
+ return rb_ary_new_from_node_args(ast, 0);
+ case NODE_BEGIN:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_body);
+ case NODE_RESCUE:
+ return rb_ary_new_from_node_args(ast, 3, node->nd_head, node->nd_resq, node->nd_else);
+ case NODE_RESBODY:
+ return rb_ary_new_from_node_args(ast, 3, node->nd_args, node->nd_body, node->nd_head);
+ case NODE_ENSURE:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_ensr);
+ case NODE_AND:
+ case NODE_OR:
+ {
+ VALUE ary = rb_ary_new();
+
+ while (1) {
+ rb_ary_push(ary, NEW_CHILD(ast, node->nd_1st));
+ if (!node->nd_2nd || !nd_type_p(node->nd_2nd, type))
+ break;
+ node = node->nd_2nd;
+ }
+ rb_ary_push(ary, NEW_CHILD(ast, node->nd_2nd));
+ return ary;
+ }
+ case NODE_MASGN:
+ if (NODE_NAMED_REST_P(node->nd_args)) {
+ return rb_ary_new_from_node_args(ast, 3, node->nd_value, node->nd_head, node->nd_args);
+ }
+ else {
+ return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_value),
+ NEW_CHILD(ast, node->nd_head),
+ no_name_rest());
+ }
+ case NODE_LASGN:
+ case NODE_DASGN:
+ case NODE_IASGN:
+ case NODE_CVASGN:
+ case NODE_GASGN:
+ if (NODE_REQUIRED_KEYWORD_P(node)) {
+ return rb_ary_new_from_args(2, var_name(node->nd_vid), ID2SYM(rb_intern("NODE_SPECIAL_REQUIRED_KEYWORD")));
+ }
+ return rb_ary_new_from_args(2, var_name(node->nd_vid), NEW_CHILD(ast, node->nd_value));
+ case NODE_CDECL:
+ if (node->nd_vid) {
+ return rb_ary_new_from_args(2, ID2SYM(node->nd_vid), NEW_CHILD(ast, node->nd_value));
+ }
+ return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_else), ID2SYM(node->nd_else->nd_mid), NEW_CHILD(ast, node->nd_value));
+ case NODE_OP_ASGN1:
+ return rb_ary_new_from_args(4, NEW_CHILD(ast, node->nd_recv),
+ ID2SYM(node->nd_mid),
+ NEW_CHILD(ast, node->nd_args->nd_head),
+ NEW_CHILD(ast, node->nd_args->nd_body));
+ case NODE_OP_ASGN2:
+ return rb_ary_new_from_args(5, NEW_CHILD(ast, node->nd_recv),
+ RBOOL(node->nd_next->nd_aid),
+ ID2SYM(node->nd_next->nd_vid),
+ ID2SYM(node->nd_next->nd_mid),
+ NEW_CHILD(ast, node->nd_value));
+ case NODE_OP_ASGN_AND:
+ return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_head), ID2SYM(idANDOP),
+ NEW_CHILD(ast, node->nd_value));
+ case NODE_OP_ASGN_OR:
+ return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_head), ID2SYM(idOROP),
+ NEW_CHILD(ast, node->nd_value));
+ case NODE_OP_CDECL:
+ return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_head),
+ ID2SYM(node->nd_aid),
+ NEW_CHILD(ast, node->nd_value));
+ case NODE_CALL:
+ case NODE_OPCALL:
+ case NODE_QCALL:
+ return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_recv),
+ ID2SYM(node->nd_mid),
+ NEW_CHILD(ast, node->nd_args));
+ case NODE_FCALL:
+ return rb_ary_new_from_args(2, ID2SYM(node->nd_mid),
+ NEW_CHILD(ast, node->nd_args));
+ case NODE_VCALL:
+ return rb_ary_new_from_args(1, ID2SYM(node->nd_mid));
+ case NODE_SUPER:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_args);
+ case NODE_ZSUPER:
+ return rb_ary_new_from_node_args(ast, 0);
+ case NODE_LIST:
+ case NODE_VALUES:
+ return dump_array(ast, node);
+ case NODE_ZLIST:
+ return rb_ary_new_from_node_args(ast, 0);
+ case NODE_HASH:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_head);
+ case NODE_YIELD:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_head);
+ case NODE_LVAR:
+ case NODE_DVAR:
+ return rb_ary_new_from_args(1, var_name(node->nd_vid));
+ case NODE_IVAR:
+ case NODE_CONST:
+ case NODE_CVAR:
+ case NODE_GVAR:
+ return rb_ary_new_from_args(1, ID2SYM(node->nd_vid));
+ case NODE_NTH_REF:
+ snprintf(name, sizeof(name), "$%ld", node->nd_nth);
+ return rb_ary_new_from_args(1, ID2SYM(rb_intern(name)));
+ case NODE_BACK_REF:
+ name[0] = '$';
+ name[1] = (char)node->nd_nth;
+ name[2] = '\0';
+ return rb_ary_new_from_args(1, ID2SYM(rb_intern(name)));
+ case NODE_MATCH2:
+ if (node->nd_args) {
+ return rb_ary_new_from_node_args(ast, 3, node->nd_recv, node->nd_value, node->nd_args);
+ }
+ return rb_ary_new_from_node_args(ast, 2, node->nd_recv, node->nd_value);
+ case NODE_MATCH3:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_recv, node->nd_value);
+ case NODE_MATCH:
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_XSTR:
+ return rb_ary_new_from_args(1, node->nd_lit);
+ case NODE_ONCE:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_body);
+ case NODE_DSTR:
+ case NODE_DXSTR:
+ case NODE_DREGX:
+ case NODE_DSYM:
+ {
+ NODE *n = node->nd_next;
+ VALUE head = Qnil, next = Qnil;
+ if (n) {
+ head = NEW_CHILD(ast, n->nd_head);
+ next = NEW_CHILD(ast, n->nd_next);
+ }
+ return rb_ary_new_from_args(3, node->nd_lit, head, next);
+ }
+ case NODE_EVSTR:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_body);
+ case NODE_ARGSCAT:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
+ case NODE_ARGSPUSH:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
+ case NODE_SPLAT:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_head);
+ case NODE_BLOCK_PASS:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
+ case NODE_DEFN:
+ return rb_ary_new_from_args(2, ID2SYM(node->nd_mid), NEW_CHILD(ast, node->nd_defn));
+ case NODE_DEFS:
+ return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_recv), ID2SYM(node->nd_mid), NEW_CHILD(ast, node->nd_defn));
+ case NODE_ALIAS:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_1st, node->nd_2nd);
+ case NODE_VALIAS:
+ return rb_ary_new_from_args(2, ID2SYM(node->nd_alias), ID2SYM(node->nd_orig));
+ case NODE_UNDEF:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_undef);
+ case NODE_CLASS:
+ return rb_ary_new_from_node_args(ast, 3, node->nd_cpath, node->nd_super, node->nd_body);
+ case NODE_MODULE:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_cpath, node->nd_body);
+ case NODE_SCLASS:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_recv, node->nd_body);
+ case NODE_COLON2:
+ return rb_ary_new_from_args(2, NEW_CHILD(ast, node->nd_head), ID2SYM(node->nd_mid));
+ case NODE_COLON3:
+ return rb_ary_new_from_args(1, ID2SYM(node->nd_mid));
+ case NODE_DOT2:
+ case NODE_DOT3:
+ case NODE_FLIP2:
+ case NODE_FLIP3:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_beg, node->nd_end);
+ case NODE_SELF:
+ return rb_ary_new_from_node_args(ast, 0);
+ case NODE_NIL:
+ return rb_ary_new_from_node_args(ast, 0);
+ case NODE_TRUE:
+ return rb_ary_new_from_node_args(ast, 0);
+ case NODE_FALSE:
+ return rb_ary_new_from_node_args(ast, 0);
+ case NODE_ERRINFO:
+ return rb_ary_new_from_node_args(ast, 0);
+ case NODE_DEFINED:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_head);
+ case NODE_POSTEXE:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_body);
+ case NODE_ATTRASGN:
+ return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_recv), ID2SYM(node->nd_mid), NEW_CHILD(ast, node->nd_args));
+ case NODE_LAMBDA:
+ return rb_ary_new_from_node_args(ast, 1, node->nd_body);
+ case NODE_OPT_ARG:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_body, node->nd_next);
+ case NODE_KW_ARG:
+ return rb_ary_new_from_node_args(ast, 2, node->nd_body, node->nd_next);
+ case NODE_POSTARG:
+ if (NODE_NAMED_REST_P(node->nd_1st)) {
+ return rb_ary_new_from_node_args(ast, 2, node->nd_1st, node->nd_2nd);
+ }
+ return rb_ary_new_from_args(2, no_name_rest(),
+ NEW_CHILD(ast, node->nd_2nd));
+ case NODE_ARGS:
+ {
+ struct rb_args_info *ainfo = node->nd_ainfo;
+ return rb_ary_new_from_args(10,
+ INT2NUM(ainfo->pre_args_num),
+ NEW_CHILD(ast, ainfo->pre_init),
+ NEW_CHILD(ast, ainfo->opt_args),
+ var_name(ainfo->first_post_arg),
+ INT2NUM(ainfo->post_args_num),
+ NEW_CHILD(ast, ainfo->post_init),
+ (ainfo->rest_arg == NODE_SPECIAL_EXCESSIVE_COMMA
+ ? ID2SYM(rb_intern("NODE_SPECIAL_EXCESSIVE_COMMA"))
+ : var_name(ainfo->rest_arg)),
+ (ainfo->no_kwarg ? Qfalse : NEW_CHILD(ast, ainfo->kw_args)),
+ (ainfo->no_kwarg ? Qfalse : NEW_CHILD(ast, ainfo->kw_rest_arg)),
+ var_name(ainfo->block_arg));
+ }
+ case NODE_SCOPE:
+ {
+ rb_ast_id_table_t *tbl = node->nd_tbl;
+ int i, size = tbl ? tbl->size : 0;
+ VALUE locals = rb_ary_new_capa(size);
+ for (i = 0; i < size; i++) {
+ rb_ary_push(locals, var_name(tbl->ids[i]));
+ }
+ return rb_ary_new_from_args(3, locals, NEW_CHILD(ast, node->nd_args), NEW_CHILD(ast, node->nd_body));
+ }
+ case NODE_ARYPTN:
+ {
+ struct rb_ary_pattern_info *apinfo = node->nd_apinfo;
+ VALUE rest = rest_arg(ast, apinfo->rest_arg);
+ return rb_ary_new_from_args(4,
+ NEW_CHILD(ast, node->nd_pconst),
+ NEW_CHILD(ast, apinfo->pre_args),
+ rest,
+ NEW_CHILD(ast, apinfo->post_args));
+ }
+ case NODE_FNDPTN:
+ {
+ struct rb_fnd_pattern_info *fpinfo = node->nd_fpinfo;
+ VALUE pre_rest = rest_arg(ast, fpinfo->pre_rest_arg);
+ VALUE post_rest = rest_arg(ast, fpinfo->post_rest_arg);
+ return rb_ary_new_from_args(4,
+ NEW_CHILD(ast, node->nd_pconst),
+ pre_rest,
+ NEW_CHILD(ast, fpinfo->args),
+ post_rest);
+ }
+ case NODE_HSHPTN:
+ {
+ VALUE kwrest = node->nd_pkwrestarg == NODE_SPECIAL_NO_REST_KEYWORD ? ID2SYM(rb_intern("NODE_SPECIAL_NO_REST_KEYWORD")) :
+ NEW_CHILD(ast, node->nd_pkwrestarg);
+
+ return rb_ary_new_from_args(3,
+ NEW_CHILD(ast, node->nd_pconst),
+ NEW_CHILD(ast, node->nd_pkwargs),
+ kwrest);
+ }
+ case NODE_ERROR:
+ return rb_ary_new_from_node_args(ast, 0);
+ case NODE_ARGS_AUX:
+ case NODE_LAST:
+ break;
+ }
+
+ rb_bug("node_children: unknown node: %s", ruby_node_name(type));
+}
+
+static VALUE
+ast_node_children(rb_execution_context_t *ec, VALUE self)
+{
+ struct ASTNodeData *data;
+ TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
+
+ return node_children(data->ast, data->node);
+}
+
+static VALUE
+ast_node_first_lineno(rb_execution_context_t *ec, VALUE self)
+{
+ struct ASTNodeData *data;
+ TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
+
+ return INT2NUM(nd_first_lineno(data->node));
+}
+
+static VALUE
+ast_node_first_column(rb_execution_context_t *ec, VALUE self)
+{
+ struct ASTNodeData *data;
+ TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
+
+ return INT2NUM(nd_first_column(data->node));
+}
+
+static VALUE
+ast_node_last_lineno(rb_execution_context_t *ec, VALUE self)
+{
+ struct ASTNodeData *data;
+ TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
+
+ return INT2NUM(nd_last_lineno(data->node));
+}
+
+static VALUE
+ast_node_last_column(rb_execution_context_t *ec, VALUE self)
+{
+ struct ASTNodeData *data;
+ TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
+
+ return INT2NUM(nd_last_column(data->node));
+}
+
+static VALUE
+ast_node_all_tokens(rb_execution_context_t *ec, VALUE self)
+{
+ struct ASTNodeData *data;
+ TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
+
+ return rb_ast_tokens(data->ast);
+}
+
+static VALUE
+ast_node_inspect(rb_execution_context_t *ec, VALUE self)
+{
+ VALUE str;
+ VALUE cname;
+ struct ASTNodeData *data;
+ TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
+
+ cname = rb_class_path(rb_obj_class(self));
+ str = rb_str_new2("#<");
+
+ rb_str_append(str, cname);
+ rb_str_catf(str, ":%s@%d:%d-%d:%d>",
+ node_type_to_str(data->node),
+ nd_first_lineno(data->node), nd_first_column(data->node),
+ nd_last_lineno(data->node), nd_last_column(data->node));
+
+ return str;
+}
+
+static VALUE
+ast_node_script_lines(rb_execution_context_t *ec, VALUE self)
+{
+ struct ASTNodeData *data;
+ TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
+ VALUE ret = data->ast->body.script_lines;
+ if (!RB_TYPE_P(ret, T_ARRAY)) return Qnil;
+ return ret;
+}
+
+#include "ast.rbinc"
+
+void
+Init_ast(void)
+{
+ rb_mAST = rb_define_module_under(rb_cRubyVM, "AbstractSyntaxTree");
+ rb_cNode = rb_define_class_under(rb_mAST, "Node", rb_cObject);
+ rb_undef_alloc_func(rb_cNode);
+}
diff --git a/ast.rb b/ast.rb
new file mode 100644
index 0000000000..f3f72c747f
--- /dev/null
+++ b/ast.rb
@@ -0,0 +1,276 @@
+# for ast.c
+
+# AbstractSyntaxTree provides methods to parse Ruby code into
+# abstract syntax trees. The nodes in the tree
+# are instances of RubyVM::AbstractSyntaxTree::Node.
+#
+# This module is MRI specific as it exposes implementation details
+# of the MRI abstract syntax tree.
+#
+# This module is experimental and its API is not stable, therefore it might
+# change without notice. As examples, the order of children nodes is not
+# guaranteed, the number of children nodes might change, there is no way to
+# access children nodes by name, etc.
+#
+# If you are looking for a stable API or an API working under multiple Ruby
+# implementations, consider using the _parser_ gem or Ripper. If you would
+# like to make RubyVM::AbstractSyntaxTree stable, please join the discussion
+# at https://bugs.ruby-lang.org/issues/14844.
+#
+module RubyVM::AbstractSyntaxTree
+
+ # call-seq:
+ # RubyVM::AbstractSyntaxTree.parse(string, keep_script_lines: false, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
+ #
+ # Parses the given _string_ into an abstract syntax tree,
+ # returning the root node of that tree.
+ #
+ # RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
+ # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-1:9>
+ #
+ # If <tt>keep_script_lines: true</tt> option is provided, the text of the parsed
+ # source is associated with nodes and is available via Node#script_lines.
+ #
+ # If <tt>keep_tokens: true</tt> option is provided, Node#tokens are populated.
+ #
+ # SyntaxError is raised if the given _string_ is invalid syntax. To overwrite this
+ # behavior, <tt>error_tolerant: true</tt> can be provided. In this case, the parser
+ # will produce a tree where expressions with syntax errors would be represented by
+ # Node with <tt>type=:ERROR</tt>.
+ #
+ # root = RubyVM::AbstractSyntaxTree.parse("x = 1; p(x; y=2")
+ # # <internal:ast>:33:in `parse': syntax error, unexpected ';', expecting ')' (SyntaxError)
+ # # x = 1; p(x; y=2
+ # # ^
+ #
+ # root = RubyVM::AbstractSyntaxTree.parse("x = 1; p(x; y=2", error_tolerant: true)
+ # # (SCOPE@1:0-1:15
+ # # tbl: [:x, :y]
+ # # args: nil
+ # # body: (BLOCK@1:0-1:15 (LASGN@1:0-1:5 :x (LIT@1:4-1:5 1)) (ERROR@1:7-1:11) (LASGN@1:12-1:15 :y (LIT@1:14-1:15 2))))
+ # root.children.last.children
+ # # [(LASGN@1:0-1:5 :x (LIT@1:4-1:5 1)),
+ # # (ERROR@1:7-1:11),
+ # # (LASGN@1:12-1:15 :y (LIT@1:14-1:15 2))]
+ #
+ # Note that parsing continues even after the errored expresion.
+ #
+ def self.parse string, keep_script_lines: false, error_tolerant: false, keep_tokens: false
+ Primitive.ast_s_parse string, keep_script_lines, error_tolerant, keep_tokens
+ end
+
+ # call-seq:
+ # RubyVM::AbstractSyntaxTree.parse_file(pathname, keep_script_lines: false, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
+ #
+ # Reads the file from _pathname_, then parses it like ::parse,
+ # returning the root node of the abstract syntax tree.
+ #
+ # SyntaxError is raised if _pathname_'s contents are not
+ # valid Ruby syntax.
+ #
+ # RubyVM::AbstractSyntaxTree.parse_file("my-app/app.rb")
+ # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-31:3>
+ #
+ # See ::parse for explanation of keyword argument meaning and usage.
+ def self.parse_file pathname, keep_script_lines: false, error_tolerant: false, keep_tokens: false
+ Primitive.ast_s_parse_file pathname, keep_script_lines, error_tolerant, keep_tokens
+ end
+
+ # call-seq:
+ # RubyVM::AbstractSyntaxTree.of(proc, keep_script_lines: false, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
+ # RubyVM::AbstractSyntaxTree.of(method, keep_script_lines: false, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
+ #
+ # Returns AST nodes of the given _proc_ or _method_.
+ #
+ # RubyVM::AbstractSyntaxTree.of(proc {1 + 2})
+ # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:35-1:42>
+ #
+ # def hello
+ # puts "hello, world"
+ # end
+ #
+ # RubyVM::AbstractSyntaxTree.of(method(:hello))
+ # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-3:3>
+ #
+ # See ::parse for explanation of keyword argument meaning and usage.
+ def self.of body, keep_script_lines: false, error_tolerant: false, keep_tokens: false
+ Primitive.ast_s_of body, keep_script_lines, error_tolerant, keep_tokens
+ end
+
+ # call-seq:
+ # RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(backtrace_location) -> integer
+ #
+ # Returns the node id for the given backtrace location.
+ #
+ # begin
+ # raise
+ # rescue => e
+ # loc = e.backtrace_locations.first
+ # RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(loc)
+ # end # => 0
+ def self.node_id_for_backtrace_location backtrace_location
+ Primitive.node_id_for_backtrace_location backtrace_location
+ end
+
+ # RubyVM::AbstractSyntaxTree::Node instances are created by parse methods in
+ # RubyVM::AbstractSyntaxTree.
+ #
+ # This class is MRI specific.
+ #
+ class Node
+
+ # call-seq:
+ # node.type -> symbol
+ #
+ # Returns the type of this node as a symbol.
+ #
+ # root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
+ # root.type # => :SCOPE
+ # lasgn = root.children[2]
+ # lasgn.type # => :LASGN
+ # call = lasgn.children[1]
+ # call.type # => :OPCALL
+ def type
+ Primitive.ast_node_type
+ end
+
+ # call-seq:
+ # node.first_lineno -> integer
+ #
+ # The line number in the source code where this AST's text began.
+ def first_lineno
+ Primitive.ast_node_first_lineno
+ end
+
+ # call-seq:
+ # node.first_column -> integer
+ #
+ # The column number in the source code where this AST's text began.
+ def first_column
+ Primitive.ast_node_first_column
+ end
+
+ # call-seq:
+ # node.last_lineno -> integer
+ #
+ # The line number in the source code where this AST's text ended.
+ def last_lineno
+ Primitive.ast_node_last_lineno
+ end
+
+ # call-seq:
+ # node.last_column -> integer
+ #
+ # The column number in the source code where this AST's text ended.
+ def last_column
+ Primitive.ast_node_last_column
+ end
+
+ # call-seq:
+ # node.tokens -> array
+ #
+ # Returns tokens corresponding to the location of the node.
+ # Returns +nil+ if +keep_tokens+ is not enabled when #parse method is called.
+ #
+ # root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true)
+ # root.tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
+ # root.tokens.map{_1[2]}.join # => "x = 1 + 2"
+ #
+ # Token is an array of:
+ #
+ # - id
+ # - token type
+ # - source code text
+ # - location [ first_lineno, first_column, last_lineno, last_column ]
+ def tokens
+ return nil unless all_tokens
+
+ all_tokens.each_with_object([]) do |token, a|
+ loc = token.last
+ if ([first_lineno, first_column] <=> [loc[0], loc[1]]) <= 0 &&
+ ([last_lineno, last_column] <=> [loc[2], loc[3]]) >= 0
+ a << token
+ end
+ end
+ end
+
+ # call-seq:
+ # node.all_tokens -> array
+ #
+ # Returns all tokens for the input script regardless the receiver node.
+ # Returns +nil+ if +keep_tokens+ is not enabled when #parse method is called.
+ #
+ # root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true)
+ # root.all_tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
+ # root.children[-1].all_tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
+ def all_tokens
+ Primitive.ast_node_all_tokens
+ end
+
+ # call-seq:
+ # node.children -> array
+ #
+ # Returns AST nodes under this one. Each kind of node
+ # has different children, depending on what kind of node it is.
+ #
+ # The returned array may contain other nodes or <code>nil</code>.
+ def children
+ Primitive.ast_node_children
+ end
+
+ # call-seq:
+ # node.inspect -> string
+ #
+ # Returns debugging information about this node as a string.
+ def inspect
+ Primitive.ast_node_inspect
+ end
+
+ # call-seq:
+ # node.node_id -> integer
+ #
+ # Returns an internal node_id number.
+ # Note that this is an API for ruby internal use, debugging,
+ # and research. Do not use this for any other purpose.
+ # The compatibility is not guaranteed.
+ def node_id
+ Primitive.ast_node_node_id
+ end
+
+ # call-seq:
+ # node.script_lines -> array
+ #
+ # Returns the original source code as an array of lines.
+ #
+ # Note that this is an API for ruby internal use, debugging,
+ # and research. Do not use this for any other purpose.
+ # The compatibility is not guaranteed.
+ def script_lines
+ Primitive.ast_node_script_lines
+ end
+
+ # call-seq:
+ # node.source -> string
+ #
+ # Returns the code fragment that corresponds to this AST.
+ #
+ # Note that this is an API for ruby internal use, debugging,
+ # and research. Do not use this for any other purpose.
+ # The compatibility is not guaranteed.
+ #
+ # Also note that this API may return an incomplete code fragment
+ # that does not parse; for example, a here document following
+ # an expression may be dropped.
+ def source
+ lines = script_lines
+ if lines
+ lines = lines[first_lineno - 1 .. last_lineno - 1]
+ lines[-1] = lines[-1][0...last_column]
+ lines[0] = lines[0][first_column..-1]
+ lines.join
+ else
+ nil
+ end
+ end
+ end
+end
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000000..f8cdf3c0c1
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+PWD=
+case "$0" in
+*/*) srcdir=`dirname $0`;;
+*) srcdir="";;
+esac
+
+symlink='--install --symlink'
+case " $* " in
+ *" -i "*|*" --install "*)
+ # reset to copy missing standard auxiliary files, instead of symlinks
+ symlink=
+ ;;
+esac
+
+exec ${AUTORECONF:-autoreconf} ${symlink} "$@" ${srcdir:+"$srcdir"}
diff --git a/basictest/runner.rb b/basictest/runner.rb
new file mode 100755
index 0000000000..0f398e7acc
--- /dev/null
+++ b/basictest/runner.rb
@@ -0,0 +1,33 @@
+#! ./miniruby
+
+exit if defined?(CROSS_COMPILING) and CROSS_COMPILING
+ruby = ENV["RUBY"]
+unless ruby
+ load './rbconfig.rb'
+ ruby = "./#{RbConfig::CONFIG['ruby_install_name']}#{RbConfig::CONFIG['EXEEXT']}"
+end
+unless File.exist? ruby
+ print "#{ruby} is not found.\n"
+ print "Try `make' first, then `make test', please.\n"
+ exit false
+end
+ARGV[0] and opt = ARGV[0][/\A--run-opt=(.*)/, 1] and ARGV.shift
+
+$stderr.reopen($stdout)
+error = ''
+
+srcdir = File.expand_path('..', File.dirname(__FILE__))
+if env = ENV["RUBYOPT"]
+ ENV["RUBYOPT"] = env + " -W1"
+end
+`#{ruby} #{opt} -W1 #{srcdir}/basictest/test.rb #{ARGV.join(' ')}`.each_line do |line|
+ if line =~ /^end of test/
+ print "\ntest succeeded\n"
+ exit true
+ end
+ error << line if %r:^(basictest/test.rb|not): =~ line
+end
+puts
+print error
+print "test failed\n"
+exit false
diff --git a/basictest/test.rb b/basictest/test.rb
new file mode 100755
index 0000000000..95875b52a6
--- /dev/null
+++ b/basictest/test.rb
@@ -0,0 +1,2367 @@
+#! /usr/bin/env ruby
+# -*- coding: us-ascii -*-
+
+$testnum=0
+$ntest=0
+$failed = 0
+class Progress
+ def initialize
+ @color = nil
+ @tty = nil
+ @quiet = nil
+ @verbose = nil
+ ARGV.each do |arg|
+ case arg
+ when /\A--color(?:=(?:always|(auto)|(never)|(.*)))?\z/
+ warn "unknown --color argument: #$3" if $3
+ @color = $1 ? nil : !$2
+ when /\A--tty(=(?:yes|(no)|(.*)))?\z/
+ warn "unknown --tty argument: #$3" if $3
+ @tty = !$1 || !$2
+ true
+ when /\A-(q|-quiet)\z/
+ @quiet = true
+ when /\A-(v|-verbose)\z/
+ @verbose = true
+ end
+ end
+ @tty = STDERR.tty? && !STDOUT.tty? && /dumb/ !~ ENV["TERM"] if @tty.nil?
+ @eol = @tty && !@verbose ? "\r\e[K\r" : "\n"
+ case @color
+ when nil
+ @color = @tty
+ end
+ if @color
+ # dircolors-like style
+ colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:\n]*)/)] : {}
+ begin
+ File.read(File.join(__dir__, "../tool/colors")).scan(/(\w+)=([^:\n]*)/) do |n, c|
+ colors[n] ||= c
+ end
+ rescue
+ end
+ @passed = "\e[;#{colors["pass"] || "32"}m"
+ @failed = "\e[;#{colors["fail"] || "31"}m"
+ @reset = "\e[m"
+ else
+ @passed = @failed = @reset = ""
+ end
+ extend(Rotator) if @tty
+ end
+
+ def passed_string
+ "."
+ end
+ def failed_string
+ "#{@failed}F#{@reset}"
+ end
+ def init_string
+ end
+ def finish_string
+ if @quiet
+ @eol
+ else
+ "#{@passed}#{@ok ? 'OK' : ''} #{$testnum}#{@reset}#{@eol}"
+ end
+ end
+ def pass
+ STDERR.print passed_string
+ end
+ def fail
+ @ok = false
+ STDERR.print failed_string
+ end
+ def init
+ @ok = true
+ STDERR.print init_string
+ end
+ def finish
+ STDERR.print finish_string
+ end
+
+ module Rotator
+ ROTATOR = %w[- \\ | /]
+ BS = "\b" * ROTATOR[0].size
+ def passed_string
+ "#{BS}#{ROTATOR[(@count += 1) % ROTATOR.size]}"
+ end
+ def failed_string
+ "#{BS}#{super}#{ROTATOR[@count % ROTATOR.size]}"
+ end
+ def init_string
+ @count = 0
+ " "
+ end
+ def finish_string
+ s = "#{BS}#{' ' * BS.size}#{BS}#{super}"
+ s.gsub!(/\n/, "\r\e[2K\r") if @quiet
+ s
+ end
+ end
+end
+PROGRESS = Progress.new
+
+def test_check(what)
+ unless $ntest.zero?
+ PROGRESS.finish
+ end
+ STDERR.print "#{$0}:#{what} "
+ PROGRESS.init
+ $what = what
+ $testnum = 0
+end
+
+def test_ok(cond,n=1)
+ $testnum+=1
+ $ntest+=1
+ where = (st = caller(n)) ? st[0] : "caller error! (n=#{n}, trace=#{caller(0).join(', ')}"
+ if cond
+ PROGRESS.pass
+ printf "ok %d (%s)\n", $testnum, where
+ else
+ PROGRESS.fail
+ printf "not ok %s %d -- %s\n", $what, $testnum, where
+ $failed+=1
+ end
+ STDOUT.flush
+ STDERR.flush
+end
+
+# make sure conditional operators work
+
+test_check "assignment"
+
+a=[]; a[0] ||= "bar";
+test_ok(a[0] == "bar")
+h={}; h["foo"] ||= "bar";
+test_ok(h["foo"] == "bar")
+
+aa = 5
+aa ||= 25
+test_ok(aa == 5)
+bb ||= 25
+test_ok(bb == 25)
+cc &&=33
+test_ok(cc == nil)
+cc = 5
+cc &&=44
+test_ok(cc == 44)
+
+a = nil; test_ok(a == nil)
+a = 1; test_ok(a == 1)
+a = []; test_ok(a == [])
+a = [1]; test_ok(a == [1])
+a = [nil]; test_ok(a == [nil])
+a = [[]]; test_ok(a == [[]])
+a = [1,2]; test_ok(a == [1,2])
+a = [*[]]; test_ok(a == [])
+a = [*[1]]; test_ok(a == [1])
+a = [*[1,2]]; test_ok(a == [1,2])
+
+a = *[]; test_ok(a == [])
+a = *[1]; test_ok(a == [1])
+a = *[nil]; test_ok(a == [nil])
+a = *[[]]; test_ok(a == [[]])
+a = *[1,2]; test_ok(a == [1,2])
+a = *[*[]]; test_ok(a == [])
+a = *[*[1]]; test_ok(a == [1])
+a = *[*[1,2]]; test_ok(a == [1,2])
+
+a, = nil; test_ok(a == nil)
+a, = 1; test_ok(a == 1)
+a, = []; test_ok(a == nil)
+a, = [1]; test_ok(a == 1)
+a, = [nil]; test_ok(a == nil)
+a, = [[]]; test_ok(a == [])
+a, = 1,2; test_ok(a == 1)
+a, = [1,2]; test_ok(a == 1)
+a, = [*[]]; test_ok(a == nil)
+a, = [*[1]]; test_ok(a == 1)
+a, = *[1,2]; test_ok(a == 1)
+a, = [*[1,2]]; test_ok(a == 1)
+
+a, = *[]; test_ok(a == nil)
+a, = *[1]; test_ok(a == 1)
+a, = *[nil]; test_ok(a == nil)
+a, = *[[]]; test_ok(a == [])
+a, = *[1,2]; test_ok(a == 1)
+a, = *[*[]]; test_ok(a == nil)
+a, = *[*[1]]; test_ok(a == 1)
+a, = *[*[1,2]]; test_ok(a == 1)
+
+*a = nil; test_ok(a == [nil])
+*a = 1; test_ok(a == [1])
+*a = []; test_ok(a == [])
+*a = [1]; test_ok(a == [1])
+*a = [nil]; test_ok(a == [nil])
+*a = [[]]; test_ok(a == [[]])
+*a = [1,2]; test_ok(a == [1,2])
+*a = [*[]]; test_ok(a == [])
+*a = [*[1]]; test_ok(a == [1])
+*a = [*[1,2]]; test_ok(a == [1,2])
+
+*a = *[]; test_ok(a == [])
+*a = *[1]; test_ok(a == [1])
+*a = *[nil]; test_ok(a == [nil])
+*a = *[[]]; test_ok(a == [[]])
+*a = *[1,2]; test_ok(a == [1,2])
+*a = *[*[]]; test_ok(a == [])
+*a = *[*[1]]; test_ok(a == [1])
+*a = *[*[1,2]]; test_ok(a == [1,2])
+
+a,b,*c = nil; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = 1; test_ok([a,b,c] == [1,nil,[]])
+a,b,*c = []; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = [1]; test_ok([a,b,c] == [1,nil,[]])
+a,b,*c = [nil]; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = [[]]; test_ok([a,b,c] == [[],nil,[]])
+a,b,*c = [1,2]; test_ok([a,b,c] == [1,2,[]])
+a,b,*c = [*[]]; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = [*[1]]; test_ok([a,b,c] == [1,nil,[]])
+a,b,*c = [*[1,2]]; test_ok([a,b,c] == [1,2,[]])
+
+a,b,*c = *[]; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = *[1]; test_ok([a,b,c] == [1,nil,[]])
+a,b,*c = *[nil]; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = *[[]]; test_ok([a,b,c] == [[],nil,[]])
+a,b,*c = *[1,2]; test_ok([a,b,c] == [1,2,[]])
+a,b,*c = *[*[]]; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = *[*[1]]; test_ok([a,b,c] == [1,nil,[]])
+a,b,*c = *[*[1,2]]; test_ok([a,b,c] == [1,2,[]])
+
+def f; yield nil; end; f {|a| test_ok(a == nil)}
+def f; yield 1; end; f {|a| test_ok(a == 1)}
+def f; yield []; end; f {|a| test_ok(a == [])}
+def f; yield [1]; end; f {|a| test_ok(a == [1])}
+def f; yield [nil]; end; f {|a| test_ok(a == [nil])}
+def f; yield [[]]; end; f {|a| test_ok(a == [[]])}
+def f; yield [*[]]; end; f {|a| test_ok(a == [])}
+def f; yield [*[1]]; end; f {|a| test_ok(a == [1])}
+def f; yield [*[1,2]]; end; f {|a| test_ok(a == [1,2])}
+def f; yield *[]; end; f {|a| test_ok(a == nil)}
+def f; yield *[1]; end; f {|a| test_ok(a == 1)}
+def f; yield *[nil]; end; f {|a| test_ok(a == nil)}
+def f; yield *[[]]; end; f {|a| test_ok(a == [])}
+def f; yield *[*[]]; end; f {|a| test_ok(a == nil)}
+def f; yield *[*[1]]; end; f {|a| test_ok(a == 1)}
+def f; yield *[*[1,2]]; end; f {|a| test_ok(a == 1)}
+
+def f; yield; end; f {|a,| test_ok(a == nil)}
+def f; yield nil; end; f {|a,| test_ok(a == nil)}
+def f; yield 1; end; f {|a,| test_ok(a == 1)}
+def f; yield []; end; f {|a,| test_ok(a == nil)}
+def f; yield [1]; end; f {|a,| test_ok(a == 1)}
+def f; yield [nil]; end; f {|a,| test_ok(a == nil)}
+def f; yield [[]]; end; f {|a,| test_ok(a == [])}
+def f; yield [*[]]; end; f {|a,| test_ok(a == nil)}
+def f; yield [*[1]]; end; f {|a,| test_ok(a == 1)}
+def f; yield [*[1,2]]; end; f {|a,| test_ok(a == 1)}
+
+def f; yield *[]; end; f {|a,| test_ok(a == nil)}
+def f; yield *[1]; end; f {|a,| test_ok(a == 1)}
+def f; yield *[nil]; end; f {|a,| test_ok(a == nil)}
+def f; yield *[[]]; end; f {|a,| test_ok(a == nil)}
+def f; yield *[*[]]; end; f {|a,| test_ok(a == nil)}
+def f; yield *[*[1]]; end; f {|a,| test_ok(a == 1)}
+def f; yield *[*[1,2]]; end; f {|a,| test_ok(a == 1)}
+
+def f; yield; end; f {|*a| test_ok(a == [])}
+def f; yield nil; end; f {|*a| test_ok(a == [nil])}
+def f; yield 1; end; f {|*a| test_ok(a == [1])}
+def f; yield []; end; f {|*a| test_ok(a == [[]])}
+def f; yield [1]; end; f {|*a| test_ok(a == [[1]])}
+def f; yield [nil]; end; f {|*a| test_ok(a == [[nil]])}
+def f; yield [[]]; end; f {|*a| test_ok(a == [[[]]])}
+def f; yield [1,2]; end; f {|*a| test_ok(a == [[1,2]])}
+def f; yield [*[]]; end; f {|*a| test_ok(a == [[]])}
+def f; yield [*[1]]; end; f {|*a| test_ok(a == [[1]])}
+def f; yield [*[1,2]]; end; f {|*a| test_ok(a == [[1,2]])}
+
+def f; yield *[]; end; f {|*a| test_ok(a == [])}
+def f; yield *[1]; end; f {|*a| test_ok(a == [1])}
+def f; yield *[nil]; end; f {|*a| test_ok(a == [nil])}
+def f; yield *[[]]; end; f {|*a| test_ok(a == [[]])}
+def f; yield *[*[]]; end; f {|*a| test_ok(a == [])}
+def f; yield *[*[1]]; end; f {|*a| test_ok(a == [1])}
+def f; yield *[*[1,2]]; end; f {|*a| test_ok(a == [1,2])}
+
+def f; yield; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
+def f; yield nil; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
+def f; yield 1; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}
+def f; yield []; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
+def f; yield [1]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}
+def f; yield [nil]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
+def f; yield [[]]; end; f {|a,b,*c| test_ok([a,b,c] == [[],nil,[]])}
+def f; yield [*[]]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
+def f; yield [*[1]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}
+def f; yield [*[1,2]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,2,[]])}
+
+def f; yield *[]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
+def f; yield *[1]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}
+def f; yield *[nil]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
+def f; yield *[[]]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
+def f; yield *[*[]]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
+def f; yield *[*[1]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}
+def f; yield *[*[1,2]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,2,[]])}
+
+def r; return; end; a = r(); test_ok(a == nil)
+def r; return nil; end; a = r(); test_ok(a == nil)
+def r; return 1; end; a = r(); test_ok(a == 1)
+def r; return []; end; a = r(); test_ok(a == [])
+def r; return [1]; end; a = r(); test_ok(a == [1])
+def r; return [nil]; end; a = r(); test_ok(a == [nil])
+def r; return [[]]; end; a = r(); test_ok(a == [[]])
+def r; return [*[]]; end; a = r(); test_ok(a == [])
+def r; return [*[1]]; end; a = r(); test_ok(a == [1])
+def r; return [*[1,2]]; end; a = r(); test_ok(a == [1,2])
+
+def r; return *[]; end; a = r(); test_ok(a == [])
+def r; return *[1]; end; a = r(); test_ok(a == [1])
+def r; return *[nil]; end; a = r(); test_ok(a == [nil])
+def r; return *[[]]; end; a = r(); test_ok(a == [[]])
+def r; return *[*[]]; end; a = r(); test_ok(a == [])
+def r; return *[*[1]]; end; a = r(); test_ok(a == [1])
+def r; return *[*[1,2]]; end; a = r(); test_ok(a == [1,2])
+
+def r; return *[[]]; end; a = *r(); test_ok(a == [[]])
+def r; return *[*[1,2]]; end; a = *r(); test_ok(a == [1,2])
+
+def r; return; end; *a = r(); test_ok(a == [nil])
+def r; return nil; end; *a = r(); test_ok(a == [nil])
+def r; return 1; end; *a = r(); test_ok(a == [1])
+def r; return []; end; *a = r(); test_ok(a == [])
+def r; return [1]; end; *a = r(); test_ok(a == [1])
+def r; return [nil]; end; *a = r(); test_ok(a == [nil])
+def r; return [[]]; end; *a = r(); test_ok(a == [[]])
+def r; return [1,2]; end; *a = r(); test_ok(a == [1,2])
+def r; return [*[]]; end; *a = r(); test_ok(a == [])
+def r; return [*[1]]; end; *a = r(); test_ok(a == [1])
+def r; return [*[1,2]]; end; *a = r(); test_ok(a == [1,2])
+
+def r; return *[]; end; *a = r(); test_ok(a == [])
+def r; return *[1]; end; *a = r(); test_ok(a == [1])
+def r; return *[nil]; end; *a = r(); test_ok(a == [nil])
+def r; return *[[]]; end; *a = r(); test_ok(a == [[]])
+def r; return *[1,2]; end; *a = r(); test_ok(a == [1,2])
+def r; return *[*[]]; end; *a = r(); test_ok(a == [])
+def r; return *[*[1]]; end; *a = r(); test_ok(a == [1])
+def r; return *[*[1,2]]; end; *a = r(); test_ok(a == [1,2])
+
+def r; return *[[]]; end; *a = *r(); test_ok(a == [[]])
+def r; return *[1,2]; end; *a = *r(); test_ok(a == [1,2])
+def r; return *[*[1,2]]; end; *a = *r(); test_ok(a == [1,2])
+
+def r; return; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
+def r; return nil; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
+def r; return 1; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])
+def r; return []; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
+def r; return [1]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])
+def r; return [nil]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
+def r; return [[]]; end; a,b,*c = r(); test_ok([a,b,c] == [[],nil,[]])
+def r; return [1,2]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])
+def r; return [*[]]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
+def r; return [*[1]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])
+def r; return [*[1,2]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])
+
+def r; return *[]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
+def r; return *[1]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])
+def r; return *[nil]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
+def r; return *[[]]; end; a,b,*c = r(); test_ok([a,b,c] == [[],nil,[]])
+def r; return *[1,2]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])
+def r; return *[*[]]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
+def r; return *[*[1]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])
+def r; return *[*[1,2]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])
+
+f = lambda {|r,| test_ok([] == r)}
+f.call([], *[])
+
+f = lambda {|r,*l| test_ok([] == r); test_ok([1] == l)}
+f.call([], *[1])
+
+f = lambda{|x| x}
+test_ok(f.call(42) == 42)
+test_ok(f.call([42]) == [42])
+test_ok(f.call([[42]]) == [[42]])
+test_ok(f.call([42,55]) == [42,55])
+
+f = lambda{|x,| x}
+test_ok(f.call(42) == 42)
+test_ok(f.call([42]) == [42])
+test_ok(f.call([[42]]) == [[42]])
+test_ok(f.call([42,55]) == [42,55])
+
+f = lambda{|*x| x}
+test_ok(f.call(42) == [42])
+test_ok(f.call([42]) == [[42]])
+test_ok(f.call([[42]]) == [[[42]]])
+test_ok(f.call([42,55]) == [[42,55]])
+test_ok(f.call(42,55) == [42,55])
+
+f = lambda { |a, b=42, *c| [a,b,c] }
+test_ok(f.call(1 ) == [1,42,[ ]] )
+test_ok(f.call(1,43 ) == [1,43,[ ]] )
+test_ok(f.call(1,43,44) == [1,43,[44]] )
+
+f = lambda { |a, b=(a|16), *c, &block| [a,b,c,block&&block[]] }
+test_ok(f.call(8 ) == [8,24,[ ],nil] )
+test_ok(f.call(8,43 ) == [8,43,[ ],nil] )
+test_ok(f.call(8,43,44) == [8,43,[44],nil] )
+test_ok(f.call(8 ){45} == [8,24,[ ],45 ] )
+test_ok(f.call(8,43 ){45} == [8,43,[ ],45 ] )
+test_ok(f.call(8,43,44){45} == [8,43,[44],45 ] )
+
+f = lambda { |a, b=42, *c, d| [a,b,c,d] }
+test_ok(f.call(1 ,99) == [1,42,[ ],99] )
+test_ok(f.call(1,43 ,99) == [1,43,[ ],99] )
+test_ok(f.call(1,43,44,99) == [1,43,[44],99] )
+
+f = lambda { |a, b=(a|16), &block| [a,b,block&&block[]] }
+test_ok(f.call(8 ) == [8,24,nil] )
+test_ok(f.call(8,43) == [8,43,nil] )
+test_ok(f.call(8,43) == [8,43,nil] )
+test_ok(f.call(8 ){45} == [8,24,45 ] )
+test_ok(f.call(8,43){45} == [8,43,45 ] )
+test_ok(f.call(8,43){45} == [8,43,45 ] )
+
+f = lambda { |a, b=42, d| [a,b,d] }
+test_ok(f.call(1 ,99) == [1,42,99] )
+test_ok(f.call(1,43,99) == [1,43,99] )
+test_ok(f.call(1,43,99) == [1,43,99] )
+
+f = lambda { |b=42, *c, &block| [b,c,block&&block[]] }
+test_ok(f.call( ) == [42,[ ],nil] )
+test_ok(f.call(43 ) == [43,[ ],nil] )
+test_ok(f.call(43,44) == [43,[44],nil] )
+test_ok(f.call( ){45} == [42,[ ],45 ] )
+test_ok(f.call(43 ){45} == [43,[ ],45 ] )
+test_ok(f.call(43,44){45} == [43,[44],45 ] )
+
+f = lambda { |b=42, *c, d| [b,c,d] }
+test_ok(f.call( 99) == [42,[ ],99] )
+test_ok(f.call(43 ,99) == [43,[ ],99] )
+test_ok(f.call(43,44,99) == [43,[44],99] )
+
+f = lambda { |b=42, &block| [b,block&&block[]] }
+test_ok(f.call( ) == [42,nil] )
+test_ok(f.call(43) == [43,nil] )
+test_ok(f.call(43) == [43,nil] )
+test_ok(f.call( ){45} == [42,45 ] )
+test_ok(f.call(43){45} == [43,45 ] )
+test_ok(f.call(43){45} == [43,45 ] )
+
+f = lambda { |b=42, d| [b,d] }
+test_ok(f.call( 99) == [42,99] )
+test_ok(f.call(43,99) == [43,99] )
+test_ok(f.call(43,99) == [43,99] )
+
+
+a,=*[1]
+test_ok(a == 1)
+a,=*[[1]]
+test_ok(a == [1])
+a,=*[[[1]]]
+test_ok(a == [[1]])
+
+x, (y, z) = 1, 2, 3
+test_ok([1,2,nil] == [x,y,z])
+x, (y, z) = 1, [2,3]
+test_ok([1,2,3] == [x,y,z])
+x, (y, z) = 1, [2]
+test_ok([1,2,nil] == [x,y,z])
+
+a = loop do break; end; test_ok(a == nil)
+a = loop do break nil; end; test_ok(a == nil)
+a = loop do break 1; end; test_ok(a == 1)
+a = loop do break []; end; test_ok(a == [])
+a = loop do break [1]; end; test_ok(a == [1])
+a = loop do break [nil]; end; test_ok(a == [nil])
+a = loop do break [[]]; end; test_ok(a == [[]])
+a = loop do break [*[]]; end; test_ok(a == [])
+a = loop do break [*[1]]; end; test_ok(a == [1])
+a = loop do break [*[1,2]]; end; test_ok(a == [1,2])
+
+a = loop do break *[]; end; test_ok(a == [])
+a = loop do break *[1]; end; test_ok(a == [1])
+a = loop do break *[nil]; end; test_ok(a == [nil])
+a = loop do break *[[]]; end; test_ok(a == [[]])
+a = loop do break *[*[]]; end; test_ok(a == [])
+a = loop do break *[*[1]]; end; test_ok(a == [1])
+a = loop do break *[*[1,2]]; end; test_ok(a == [1,2])
+
+*a = loop do break; end; test_ok(a == [nil])
+*a = loop do break nil; end; test_ok(a == [nil])
+*a = loop do break 1; end; test_ok(a == [1])
+*a = loop do break []; end; test_ok(a == [])
+*a = loop do break [1]; end; test_ok(a == [1])
+*a = loop do break [nil]; end; test_ok(a == [nil])
+*a = loop do break [[]]; end; test_ok(a == [[]])
+*a = loop do break [1,2]; end; test_ok(a == [1,2])
+*a = loop do break [*[]]; end; test_ok(a == [])
+*a = loop do break [*[1]]; end; test_ok(a == [1])
+*a = loop do break [*[1,2]]; end; test_ok(a == [1,2])
+
+*a = loop do break *[]; end; test_ok(a == [])
+*a = loop do break *[1]; end; test_ok(a == [1])
+*a = loop do break *[nil]; end; test_ok(a == [nil])
+*a = loop do break *[[]]; end; test_ok(a == [[]])
+*a = loop do break *[1,2]; end; test_ok(a == [1,2])
+*a = loop do break *[*[]]; end; test_ok(a == [])
+*a = loop do break *[*[1]]; end; test_ok(a == [1])
+*a = loop do break *[*[1,2]]; end; test_ok(a == [1,2])
+
+*a = *loop do break *[[]]; end; test_ok(a == [[]])
+*a = *loop do break *[1,2]; end; test_ok(a == [1,2])
+*a = *loop do break *[*[1,2]]; end; test_ok(a == [1,2])
+
+a,b,*c = loop do break; end; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = loop do break nil; end; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = loop do break 1; end; test_ok([a,b,c] == [1,nil,[]])
+a,b,*c = loop do break []; end; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = loop do break [1]; end; test_ok([a,b,c] == [1,nil,[]])
+a,b,*c = loop do break [nil]; end; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = loop do break [[]]; end; test_ok([a,b,c] == [[],nil,[]])
+a,b,*c = loop do break [1,2]; end; test_ok([a,b,c] == [1,2,[]])
+a,b,*c = loop do break [*[]]; end; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = loop do break [*[1]]; end; test_ok([a,b,c] == [1,nil,[]])
+a,b,*c = loop do break [*[1,2]]; end; test_ok([a,b,c] == [1,2,[]])
+
+a,b,*c = loop do break *[]; end; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = loop do break *[1]; end; test_ok([a,b,c] == [1,nil,[]])
+a,b,*c = loop do break *[nil]; end; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = loop do break *[[]]; end; test_ok([a,b,c] == [[],nil,[]])
+a,b,*c = loop do break *[1,2]; end; test_ok([a,b,c] == [1,2,[]])
+a,b,*c = loop do break *[*[]]; end; test_ok([a,b,c] == [nil,nil,[]])
+a,b,*c = loop do break *[*[1]]; end; test_ok([a,b,c] == [1,nil,[]])
+a,b,*c = loop do break *[*[1,2]]; end; test_ok([a,b,c] == [1,2,[]])
+
+def r(val); a = yield(); test_ok(a == val, 2); end
+r(nil){next}
+r(nil){next nil}
+r(1){next 1}
+r([]){next []}
+r([1]){next [1]}
+r([nil]){next [nil]}
+r([[]]){next [[]]}
+r([]){next [*[]]}
+r([1]){next [*[1]]}
+r([1,2]){next [*[1,2]]}
+
+r([]){next *[]}
+r([1]){next *[1]}
+r([nil]){next *[nil]}
+r([[]]){next *[[]]}
+r([]){next *[*[]]}
+r([1]){next *[*[1]]}
+r([1,2]){next *[*[1,2]]}
+
+def r(val); *a = yield(); test_ok(a == val, 2); end
+r([nil]){next}
+r([nil]){next nil}
+r([1]){next 1}
+r([]){next []}
+r([1]){next [1]}
+r([nil]){next [nil]}
+r([[]]){next [[]]}
+r([1,2]){next [1,2]}
+r([]){next [*[]]}
+r([1]){next [*[1]]}
+r([1,2]){next [*[1,2]]}
+
+def r(val); *a = *yield(); test_ok(a == val, 2); end
+r([[]]){next *[[]]}
+r([1,2]){next *[1,2]}
+r([1,2]){next *[*[1,2]]}
+
+def r(val); a,b,*c = yield(); test_ok([a,b,c] == val, 2); end
+r([nil,nil,[]]){next}
+r([nil,nil,[]]){next nil}
+r([1,nil,[]]){next 1}
+r([nil,nil,[]]){next []}
+r([1,nil,[]]){next [1]}
+r([nil,nil,[]]){next [nil]}
+r([[],nil,[]]){next [[]]}
+r([1,2,[]]){next [1,2]}
+r([nil,nil,[]]){next [*[]]}
+r([1,nil,[]]){next [*[1]]}
+r([1,2,[]]){next [*[1,2]]}
+
+def r(val); a,b,*c = *yield(); test_ok([a,b,c] == val, 2); end
+r([[],nil,[]]){next *[[]]}
+r([1,2,[]]){next *[1,2]}
+r([1,2,[]]){next *[*[1,2]]}
+
+test_check "condition"
+
+$x = '0';
+
+$x == $x && test_ok(true)
+$x != $x && test_ok(false)
+$x == $x || test_ok(false)
+$x != $x || test_ok(true)
+
+# first test to see if we can run the tests.
+
+test_check "if/unless";
+
+$x = 'test';
+test_ok(if $x == $x then true else false end)
+$bad = false
+unless $x == $x
+ $bad = true
+end
+test_ok(!$bad)
+test_ok(unless $x != $x then true else false end)
+
+test_check "case"
+
+case 5
+when 1, 2, 3, 4, 6, 7, 8
+ test_ok(false)
+when 5
+ test_ok(true)
+end
+
+case 5
+when 5
+ test_ok(true)
+when 1..10
+ test_ok(false)
+end
+
+case 5
+when 1..10
+ test_ok(true)
+else
+ test_ok(false)
+end
+
+case 5
+when 5
+ test_ok(true)
+else
+ test_ok(false)
+end
+
+case "foobar"
+when /^f.*r$/
+ test_ok(true)
+else
+ test_ok(false)
+end
+
+test_check "while/until";
+
+while_tmp = "while_tmp.#{$$}"
+tmp = open(while_tmp, "w")
+tmp.print "tvi925\n";
+tmp.print "tvi920\n";
+tmp.print "vt100\n";
+tmp.print "Amiga\n";
+tmp.print "paper\n";
+tmp.close
+
+# test break
+
+tmp = open(while_tmp, "r")
+test_ok(tmp.kind_of?(File))
+
+while line = tmp.gets()
+ break if /vt100/ =~ line
+end
+
+test_ok(!tmp.eof? && /vt100/ =~ line)
+tmp.close
+
+# test next
+$bad = false
+tmp = open(while_tmp, "r")
+while line = tmp.gets()
+ next if /vt100/ =~ line
+ $bad = 1 if /vt100/ =~ line
+end
+test_ok(!(!tmp.eof? || /vt100/ =~ line || $bad))
+tmp.close
+
+# test redo
+$bad = false
+tmp = open(while_tmp, "r")
+while line = tmp.gets()
+ lastline = line
+ line = line.gsub(/vt100/, 'VT100')
+ if lastline != line
+ line.gsub!('VT100', 'Vt100')
+ redo
+ end
+ $bad = 1 if /vt100/ =~ line
+ $bad = 1 if /VT100/ =~ line
+end
+test_ok(tmp.eof? && !$bad)
+tmp.close
+
+sum=0
+for i in 1..10
+ sum += i
+ i -= 1
+ if i > 0
+ redo
+ end
+end
+test_ok(sum == 220)
+
+# test interval
+$bad = false
+tmp = open(while_tmp, "r")
+while line = tmp.gets()
+ break if 3
+ case line
+ when /vt100/, /Amiga/, /paper/
+ $bad = true
+ end
+end
+test_ok(!$bad)
+tmp.close
+
+File.unlink while_tmp or `/bin/rm -f "#{while_tmp}"`
+test_ok(!File.exist?(while_tmp))
+
+i = 0
+until i>4
+ i+=1
+end
+test_ok(i>4)
+
+
+# exception handling
+test_check "exception";
+
+begin
+ raise "this must be handled"
+ test_ok(false)
+rescue
+ test_ok(true)
+end
+
+$bad = true
+begin
+ raise "this must be handled no.2"
+rescue
+ if $bad
+ $bad = false
+ retry
+ test_ok(false)
+ end
+end
+test_ok(true)
+
+# exception in rescue clause
+$string = "this must be handled no.3"
+begin
+ begin
+ raise "exception in rescue clause"
+ rescue
+ raise $string
+ end
+ test_ok(false)
+rescue => e
+ test_ok($! == e)
+ test_ok(e.message == $string)
+ test_ok(e != $string)
+end
+
+# exception in ensure clause
+begin
+ begin
+ raise "this must be handled no.4"
+ ensure
+ raise "exception in ensure clause"
+ end
+ test_ok(false)
+rescue
+ test_ok(true)
+end
+
+$bad = true
+begin
+ begin
+ raise "this must be handled no.5"
+ ensure
+ $bad = false
+ end
+rescue
+end
+test_ok(!$bad)
+
+$bad = true
+begin
+ begin
+ raise "this must be handled no.6"
+ ensure
+ $bad = false
+ end
+rescue
+end
+test_ok(!$bad)
+
+$bad = true
+while true
+ begin
+ break
+ ensure
+ $bad = false
+ end
+end
+test_ok(!$bad)
+
+test_ok(catch(:foo) {
+ loop do
+ loop do
+ throw :foo, true
+ break
+ end
+ break
+ test_ok(false) # should not reach here
+ end
+ false
+ })
+
+test_check "array"
+test_ok([1, 2] + [3, 4] == [1, 2, 3, 4])
+test_ok([1, 2] * 2 == [1, 2, 1, 2])
+test_ok([1, 2] * ":" == "1:2")
+
+test_ok([1, 2].hash == [1, 2].hash)
+
+test_ok([1,2,3] & [2,3,4] == [2,3])
+test_ok([1,2,3] | [2,3,4] == [1,2,3,4])
+test_ok([1,2,3] - [2,3] == [1])
+
+$x = [0, 1, 2, 3, 4, 5]
+test_ok($x[2] == 2)
+test_ok($x[1..3] == [1, 2, 3])
+test_ok($x[1,3] == [1, 2, 3])
+
+$x[0, 2] = 10
+test_ok($x[0] == 10 && $x[1] == 2)
+
+$x[0, 0] = -1
+test_ok($x[0] == -1 && $x[1] == 10)
+
+$x[-1, 1] = 20
+test_ok($x[-1] == 20 && $x.pop == 20)
+
+# array and/or
+test_ok(([1,2,3]&[2,4,6]) == [2])
+test_ok(([1,2,3]|[2,4,6]) == [1,2,3,4,6])
+
+# compact
+$x = [nil, 1, nil, nil, 5, nil, nil]
+$x.compact!
+test_ok($x == [1, 5])
+
+# uniq
+$x = [1, 1, 4, 2, 5, 4, 5, 1, 2]
+$x.uniq!
+test_ok($x == [1, 4, 2, 5])
+
+# empty?
+test_ok(!$x.empty?)
+$x = []
+test_ok($x.empty?)
+
+# sort
+$x = ["it", "came", "to", "pass", "that", "..."]
+$x = $x.sort.join(" ")
+test_ok($x == "... came it pass that to")
+$x = [2,5,3,1,7]
+$x.sort!{|a,b| a<=>b} # sort with condition
+test_ok($x == [1,2,3,5,7])
+$x.sort!{|a,b| b-a} # reverse sort
+test_ok($x == [7,5,3,2,1])
+
+# split test
+$x = "The Book of Mormon"
+test_ok($x.split(//).reverse!.join == $x.reverse)
+test_ok($x.reverse == $x.reverse!)
+test_ok("1 byte string".split(//).reverse.join(":") == "g:n:i:r:t:s: :e:t:y:b: :1")
+$x = "a b c d"
+test_ok($x.split == ['a', 'b', 'c', 'd'])
+test_ok($x.split(' ') == ['a', 'b', 'c', 'd'])
+test_ok(defined? "a".chomp)
+test_ok("abc".scan(/./) == ["a", "b", "c"])
+test_ok("1a2b3c".scan(/(\d.)/) == [["1a"], ["2b"], ["3c"]])
+# non-greedy match
+test_ok("a=12;b=22".scan(/(.*?)=(\d*);?/) == [["a", "12"], ["b", "22"]])
+
+$x = [1]
+test_ok(($x * 5).join(":") == '1:1:1:1:1')
+test_ok(($x * 1).join(":") == '1')
+test_ok(($x * 0).join(":") == '')
+
+*$x = *(1..7).to_a
+test_ok($x.size == 7)
+test_ok($x == [1, 2, 3, 4, 5, 6, 7])
+
+$x = [1,2,3]
+$x[1,0] = $x
+test_ok($x == [1,1,2,3,2,3])
+
+$x = [1,2,3]
+$x[-1,0] = $x
+test_ok($x == [1,2,1,2,3,3])
+
+$x = [1,2,3]
+$x.concat($x)
+test_ok($x == [1,2,3,1,2,3])
+
+test_check "hash"
+$x = {1=>2, 2=>4, 3=>6}
+
+test_ok($x[1] == 2)
+
+test_ok(begin
+ for k,v in $x
+ raise if k*2 != v
+ end
+ true
+ rescue
+ false
+ end)
+
+test_ok($x.length == 3)
+test_ok($x.has_key?(1))
+test_ok($x.has_value?(4))
+test_ok($x.values_at(2,3) == [4,6])
+test_ok($x == {1=>2, 2=>4, 3=>6})
+
+$z = $x.keys.sort.join(":")
+test_ok($z == "1:2:3")
+
+$z = $x.values.sort.join(":")
+test_ok($z == "2:4:6")
+test_ok($x == $x)
+
+$x.shift
+test_ok($x.length == 2)
+
+$z = [1,2]
+$x[$z] = 256
+test_ok($x[$z] == 256)
+
+$x = Hash.new(0)
+$x[1] = 1
+test_ok($x[1] == 1)
+test_ok($x[2] == 0)
+
+$x = Hash.new([])
+test_ok($x[22] == [])
+test_ok($x[22].equal?($x[22]))
+
+$x = Hash.new{[]}
+test_ok($x[22] == [])
+test_ok(!$x[22].equal?($x[22]))
+
+$x = Hash.new{|h,k| $z = k; h[k] = k*2}
+$z = 0
+test_ok($x[22] == 44)
+test_ok($z == 22)
+$z = 0
+test_ok($x[22] == 44)
+test_ok($z == 0)
+$x.default = 5
+test_ok($x[23] == 5)
+
+$x = Hash.new
+def $x.default(k)
+ $z = k
+ self[k] = k*2
+end
+$z = 0
+test_ok($x[22] == 44)
+test_ok($z == 22)
+$z = 0
+test_ok($x[22] == 44)
+test_ok($z == 0)
+
+test_check "iterator"
+
+# yield at top level
+test_ok(!defined?(yield))
+
+$x = [1, 2, 3, 4]
+$y = []
+
+# iterator over array
+for i in $x
+ $y.push i
+end
+test_ok($x == $y)
+
+# nested iterator
+def tt
+ 1.upto(10) {|i|
+ yield i
+ }
+end
+
+i=0
+tt{|i| break if i == 5}
+test_ok(i == 0)
+
+def tt2(dummy)
+ yield 1
+end
+
+def tt3(&block)
+ tt2(raise(ArgumentError,""),&block)
+end
+
+$x = false
+begin
+ tt3{}
+rescue ArgumentError
+ $x = true
+rescue Exception
+end
+test_ok($x)
+
+def tt4 &block
+ tt2(raise(ArgumentError,""),&block)
+end
+$x = false
+begin
+ tt4{}
+rescue ArgumentError
+ $x = true
+rescue Exception
+end
+test_ok($x)
+
+# iterator break/redo/next/retry
+done = true
+loop{
+ break
+ done = false # should not reach here
+}
+test_ok(done)
+
+done = false
+$bad = false
+loop {
+ break if done
+ done = true
+ next
+ $bad = true # should not reach here
+}
+test_ok(!$bad)
+
+done = false
+$bad = false
+loop {
+ break if done
+ done = true
+ redo
+ $bad = true # should not reach here
+}
+test_ok(!$bad)
+
+$x = []
+for i in 1 .. 7
+ $x.push i
+end
+test_ok($x.size == 7)
+test_ok($x == [1, 2, 3, 4, 5, 6, 7])
+
+# append method to built-in class
+class Array
+ def iter_test1
+ collect{|e| [e, yield(e)]}.sort{|a,b|a[1]<=>b[1]}
+ end
+ def iter_test2
+ a = collect{|e| [e, yield(e)]}
+ a.sort{|a,b|a[1]<=>b[1]}
+ end
+end
+$x = [[1,2],[3,4],[5,6]]
+test_ok($x.iter_test1{|x|x} == $x.iter_test2{|x|x})
+
+class IterTest
+ def initialize(e); @body = e; end
+
+ def each0(&block); @body.each(&block); end
+ def each1(&block); @body.each {|*x| block.call(*x) } end
+ def each2(&block); @body.each {|*x| block.call(x) } end
+ def each3(&block); @body.each {|x| block.call(*x) } end
+ def each4(&block); @body.each {|x| block.call(x) } end
+ def each5; @body.each {|*x| yield(*x) } end
+ def each6; @body.each {|*x| yield(x) } end
+ def each7; @body.each {|x| yield(*x) } end
+ def each8; @body.each {|x| yield(x) } end
+
+ def f(a)
+ a
+ end
+end
+test_ok(IterTest.new(nil).method(:f).to_proc.call([1]) == [1])
+m = /\w+/.match("abc")
+test_ok(IterTest.new(nil).method(:f).to_proc.call([m]) == [m])
+
+IterTest.new([0]).each0 {|x| test_ok(x == 0)}
+IterTest.new([1]).each1 {|x| test_ok(x == 1)}
+IterTest.new([2]).each2 {|x| test_ok(x == [2])}
+#IterTest.new([3]).each3 {|x| test_ok(x == 3)}
+IterTest.new([4]).each4 {|x| test_ok(x == 4)}
+IterTest.new([5]).each5 {|x| test_ok(x == 5)}
+IterTest.new([6]).each6 {|x| test_ok(x == [6])}
+#IterTest.new([7]).each7 {|x| test_ok(x == 7)}
+IterTest.new([8]).each8 {|x| test_ok(x == 8)}
+
+IterTest.new([[0]]).each0 {|x| test_ok(x == [0])}
+IterTest.new([[1]]).each1 {|x| test_ok(x == [1])}
+IterTest.new([[2]]).each2 {|x| test_ok(x == [[2]])}
+IterTest.new([[3]]).each3 {|x| test_ok(x == 3)}
+IterTest.new([[4]]).each4 {|x| test_ok(x == [4])}
+IterTest.new([[5]]).each5 {|x| test_ok(x == [5])}
+IterTest.new([[6]]).each6 {|x| test_ok(x == [[6]])}
+IterTest.new([[7]]).each7 {|x| test_ok(x == 7)}
+IterTest.new([[8]]).each8 {|x| test_ok(x == [8])}
+
+IterTest.new([[0,0]]).each0 {|*x| test_ok(x == [[0,0]])}
+IterTest.new([[8,8]]).each8 {|*x| test_ok(x == [[8,8]])}
+
+def m0(v)
+ v
+end
+
+def m1
+ m0(block_given?)
+end
+test_ok(m1{p 'test'})
+test_ok(!m1)
+
+def m
+ m0(block_given?,&Proc.new{})
+end
+test_ok(m1{p 'test'})
+test_ok(!m1)
+
+class C
+ include Enumerable
+ def initialize
+ @a = [1,2,3]
+ end
+ def each(&block)
+ @a.each(&block)
+ end
+end
+
+test_ok(C.new.collect{|n| n} == [1,2,3])
+
+test_ok(Proc == lambda{}.class)
+test_ok(Proc == Proc.new{}.class)
+lambda{|a|test_ok(a==1)}.call(1)
+def block_test(klass, &block)
+ test_ok(klass === block)
+end
+
+block_test(NilClass)
+block_test(Proc){}
+
+def call_argument_test(state, proc, *args)
+ x = state
+ begin
+ proc.call(*args)
+ rescue ArgumentError
+ x = !x
+ end
+ test_ok(x,2)
+end
+
+call_argument_test(true, lambda{||})
+call_argument_test(false, lambda{||}, 1)
+call_argument_test(true, lambda{|a,|}, 1)
+call_argument_test(false, lambda{|a,|})
+call_argument_test(false, lambda{|a,|}, 1,2)
+
+call_argument_test(true, Proc.new{||})
+call_argument_test(true, Proc.new{||}, 1)
+call_argument_test(true, Proc.new{|a,|}, 1)
+call_argument_test(true, Proc.new{|a,|})
+call_argument_test(true, Proc.new{|a,|}, 1,2)
+
+def block_get(&block)
+ block
+end
+
+test_ok(Proc == block_get{}.class)
+call_argument_test(true, block_get{||})
+call_argument_test(true, block_get{||}, 1)
+call_argument_test(true, block_get{|a,|}, 1)
+call_argument_test(true, block_get{|a,|})
+call_argument_test(true, block_get{|a,|}, 1,2)
+
+call_argument_test(true, block_get(&lambda{||}))
+call_argument_test(false, block_get(&lambda{||}),1)
+call_argument_test(true, block_get(&lambda{|a,|}),1)
+call_argument_test(false, block_get(&lambda{|a,|}),1,2)
+
+blk = block_get{11}
+test_ok(blk.class == Proc)
+test_ok(blk.to_proc.class == Proc)
+test_ok(blk.clone.call == 11)
+test_ok(block_get(&blk).class == Proc)
+
+lmd = lambda{44}
+test_ok(lmd.class == Proc)
+test_ok(lmd.to_proc.class == Proc)
+test_ok(lmd.clone.call == 44)
+test_ok(block_get(&lmd).class == Proc)
+
+test_ok(Proc.new{|a,| a}.yield(1,2,3) == 1)
+call_argument_test(true, Proc.new{|a,|}, 1,2)
+
+test_ok(Proc.new{|&b| b.call(10)}.call {|x| x} == 10)
+test_ok(Proc.new{|a,&b| b.call(a)}.call(12) {|x| x} == 12)
+
+def test_return1
+ Proc.new {
+ return 55
+ }.yield + 5
+end
+test_ok(test_return1() == 55)
+def test_return2
+ lambda {
+ return 55
+ }.call + 5
+end
+test_ok(test_return2() == 60)
+
+def proc_call(&b)
+ b.call
+end
+def proc_yield()
+ yield
+end
+def proc_return1
+ lambda{return 42}.call+1
+end
+test_ok(proc_return1() == 43)
+def proc_return2
+ ->{return 42}.call+1
+end
+test_ok(proc_return2() == 43)
+def proc_return3
+ proc_call{return 42}+1
+end
+test_ok(proc_return3() == 42)
+def proc_return4
+ proc_yield{return 42}+1
+end
+test_ok(proc_return4() == 42)
+
+def ljump_test(state, proc, *args)
+ x = state
+ begin
+ proc.call(*args)
+ rescue LocalJumpError
+ x = !x
+ end
+ test_ok(x,2)
+end
+
+ljump_test(false, block_get{break})
+ljump_test(true, lambda{break})
+
+def exit_value_test(&block)
+ block.call
+rescue LocalJumpError
+ $!.exit_value
+end
+
+test_ok(45 == exit_value_test{break 45})
+
+test_ok(55 == begin
+ block_get{break 55}.call
+ rescue LocalJumpError
+ $!.exit_value
+ end)
+
+def block_call(&block)
+ block.call
+end
+
+def test_b1
+ block_call{break 11}
+end
+test_ok(test_b1() == 11)
+
+def ljump_rescue(r)
+ begin
+ yield
+ rescue LocalJumpError => e
+ r if /from proc-closure/ =~ e.message
+ end
+end
+
+def test_b2
+ ljump_rescue(22) do
+ block_get{break 21}.call
+ end
+end
+test_ok(test_b2() == 22)
+
+def test_b3
+ ljump_rescue(33) do
+ Proc.new{break 31}.yield
+ end
+end
+test_ok(test_b3() == 33)
+
+def test_b4
+ lambda{break 44}.call
+end
+test_ok(test_b4() == 44)
+
+def test_b5
+ ljump_rescue(55) do
+ b = block_get{break 54}
+ block_call(&b)
+ end
+end
+test_ok(test_b5() == 55)
+
+def test_b6
+ b = lambda{break 67}
+ block_call(&b)
+ 66
+end
+test_ok(test_b6() == 66)
+
+def util_r7
+ block_get{break 78}
+end
+
+def test_b7
+ b = util_r7()
+ ljump_rescue(77) do
+ block_call(&b)
+ end
+end
+test_ok(test_b7() == 77)
+
+def util_b8(&block)
+ block_call(&block)
+end
+
+def test_b8
+ util_b8{break 88}
+end
+test_ok(test_b8() == 88)
+
+def util_b9(&block)
+ lambda{block.call; 98}.call
+end
+
+def test_b9
+ util_b9{break 99}
+end
+test_ok(test_b9() == 99)
+
+def util_b10
+ util_b9{break 100}
+end
+
+def test_b10
+ util_b10()
+end
+test_ok(test_b10() == 100)
+
+def test_b11
+ ljump_rescue(111) do
+ loop do
+ Proc.new{break 110}.yield
+ break 112
+ end
+ end
+end
+test_ok(test_b11() == 111)
+
+def test_b12
+ loop do
+ break lambda{break 122}.call
+ break 121
+ end
+end
+test_ok(test_b12() == 122)
+
+def test_b13
+ ljump_rescue(133) do
+ while true
+ Proc.new{break 130}.yield
+ break 131
+ end
+ end
+end
+test_ok(test_b13() == 133)
+
+def test_b14
+ while true
+ break lambda{break 144}.call
+ break 143
+ end
+end
+test_ok(test_b14() == 144)
+
+def test_b15
+ [0].each {|c| yield 1 }
+ 156
+end
+test_ok(test_b15{|e| break 155 } == 155)
+
+def marity_test(m)
+ method = method(m)
+ test_ok(method.arity == method.to_proc.arity, 2)
+end
+marity_test(:test_ok)
+marity_test(:marity_test)
+marity_test(:p)
+
+class ITER_TEST1
+ def a
+ block_given?
+ end
+end
+
+class ITER_TEST2 < ITER_TEST1
+ def a
+ test_ok(super)
+ super
+ end
+end
+test_ok(ITER_TEST2.new.a {})
+
+class ITER_TEST3
+ def foo x
+ return yield if block_given?
+ x
+ end
+end
+
+class ITER_TEST4 < ITER_TEST3
+ def foo x
+ test_ok(super == yield)
+ test_ok(super(x, &nil) == x)
+ end
+end
+
+ITER_TEST4.new.foo(44){55}
+
+class ITER_TEST5
+ def tt(aa)
+ aa
+ end
+
+ def uu(a)
+ class << self
+ define_method(:tt) do |sym|
+ super(sym)
+ end
+ end
+ end
+
+ def xx(*x)
+ x.size
+ end
+end
+
+a = ITER_TEST5.new
+a.uu(12)
+test_ok(a.tt(1) == 1)
+
+class ITER_TEST6 < ITER_TEST5
+ def xx(*a)
+ a << 12
+ super
+ end
+end
+
+test_ok(ITER_TEST6.new.xx([24]) == 2)
+
+test_check "float"
+test_ok(2.6.floor == 2)
+test_ok((-2.6).floor == -3)
+test_ok(2.6.ceil == 3)
+test_ok((-2.6).ceil == -2)
+test_ok(2.6.truncate == 2)
+test_ok((-2.6).truncate == -2)
+test_ok(2.6.round == 3)
+test_ok((-2.4).truncate == -2)
+test_ok((13.4 % 1 - 0.4).abs < 0.0001)
+nan = 0.0/0
+def nan_test(x,y)
+ test_ok(x != y)
+ test_ok((x < y) == false)
+ test_ok((x > y) == false)
+ test_ok((x <= y) == false)
+ test_ok((x >= y) == false)
+end
+nan_test(nan, nan)
+nan_test(nan, 0)
+nan_test(nan, 1)
+nan_test(nan, -1)
+nan_test(nan, 1000)
+nan_test(nan, -1000)
+nan_test(nan, 1_000_000_000_000)
+nan_test(nan, -1_000_000_000_000)
+nan_test(nan, 100.0);
+nan_test(nan, -100.0);
+nan_test(nan, 0.001);
+nan_test(nan, -0.001);
+nan_test(nan, 1.0/0);
+nan_test(nan, -1.0/0);
+
+#s = "3.7517675036461267e+17"
+#test_ok(s == sprintf("%.16e", s.to_f))
+f = 3.7517675036461267e+17
+test_ok(f == sprintf("%.16e", f).to_f)
+
+
+test_check "bignum"
+def fact(n)
+ return 1 if n == 0
+ f = 1
+ while n>0
+ f *= n
+ n -= 1
+ end
+ return f
+end
+$x = fact(40)
+test_ok($x == $x)
+test_ok($x == fact(40))
+test_ok($x < $x+2)
+test_ok($x > $x-2)
+test_ok($x == 815915283247897734345611269596115894272000000000)
+test_ok($x != 815915283247897734345611269596115894272000000001)
+test_ok($x+1 == 815915283247897734345611269596115894272000000001)
+test_ok($x/fact(20) == 335367096786357081410764800000)
+$x = -$x
+test_ok($x == -815915283247897734345611269596115894272000000000)
+test_ok(2-(2**32) == -(2**32-2))
+test_ok(2**32 - 5 == (2**32-3)-2)
+
+$good = true;
+for i in 1000..1014
+ $good = false if ((1 << i) != (2**i))
+end
+test_ok($good)
+
+$good = true;
+n1= 1 << 1000
+for i in 1000..1014
+ $good = false if ((1 << i) != n1)
+ n1 *= 2
+end
+test_ok($good)
+
+$good = true;
+n2=n1
+for i in 1..10
+ n1 = n1 / 2
+ n2 = n2 >> 1
+ $good = false if (n1 != n2)
+end
+test_ok($good)
+
+$good = true;
+for i in 4000..4096
+ n1 = 1 << i;
+ if (n1**2-1) / (n1+1) != (n1-1)
+ $good = false
+ end
+end
+test_ok($good)
+
+b = 10**80
+a = b * 9 + 7
+test_ok(7 == a.modulo(b))
+test_ok(-b + 7 == a.modulo(-b))
+test_ok(b + -7 == (-a).modulo(b))
+test_ok(-7 == (-a).modulo(-b))
+test_ok(7 == a.remainder(b))
+test_ok(7 == a.remainder(-b))
+test_ok(-7 == (-a).remainder(b))
+test_ok(-7 == (-a).remainder(-b))
+
+test_ok(10**40+10**20 == 10000000000000000000100000000000000000000)
+test_ok(10**40/10**20 == 100000000000000000000)
+
+a = 677330545177305025495135714080
+b = 14269972710765292560
+test_ok(a % b == 0)
+test_ok(-a % b == 0)
+
+def shift_test(a)
+ b = a / (2 ** 32)
+ c = a >> 32
+ test_ok(b == c)
+
+ b = a * (2 ** 32)
+ c = a << 32
+ test_ok(b == c)
+end
+
+shift_test(-4518325415524767873)
+shift_test(-0xfffffffffffffffff)
+
+test_check "string & char"
+
+test_ok("abcd" == "abcd")
+test_ok("abcd" =~ /abcd/)
+test_ok("abcd" === "abcd")
+# compile time string concatenation
+test_ok("ab" "cd" == "abcd")
+test_ok("#{22}aa" "cd#{44}" == "22aacd44")
+test_ok("#{22}aa" "cd#{44}" "55" "#{66}" == "22aacd445566")
+test_ok("abc" !~ /^$/)
+test_ok("abc\n" !~ /^$/)
+test_ok("abc" !~ /^d*$/)
+test_ok(("abc" =~ /d*$/) == 3)
+test_ok("" =~ /^$/)
+test_ok("\n" =~ /^$/)
+test_ok("a\n\n" =~ /^$/)
+test_ok("abcabc" =~ /.*a/ && $& == "abca")
+test_ok("abcabc" =~ /.*c/ && $& == "abcabc")
+test_ok("abcabc" =~ /.*?a/ && $& == "a")
+test_ok("abcabc" =~ /.*?c/ && $& == "abc")
+test_ok(/(.|\n)*?\n(b|\n)/ =~ "a\nb\n\n" && $& == "a\nb")
+
+test_ok(/^(ab+)+b/ =~ "ababb" && $& == "ababb")
+test_ok(/^(?:ab+)+b/ =~ "ababb" && $& == "ababb")
+test_ok(/^(ab+)+/ =~ "ababb" && $& == "ababb")
+test_ok(/^(?:ab+)+/ =~ "ababb" && $& == "ababb")
+
+test_ok(/(\s+\d+){2}/ =~ " 1 2" && $& == " 1 2")
+test_ok(/(?:\s+\d+){2}/ =~ " 1 2" && $& == " 1 2")
+
+$x = <<END;
+ABCD
+ABCD
+END
+$x.gsub!(/((.|\n)*?)B((.|\n)*?)D/, '\1\3')
+test_ok($x == "AC\nAC\n")
+
+test_ok("foobar" =~ /foo(?=(bar)|(baz))/)
+test_ok("foobaz" =~ /foo(?=(bar)|(baz))/)
+
+$foo = "abc"
+test_ok("#$foo = abc" == "abc = abc")
+test_ok("#{$foo} = abc" == "abc = abc")
+
+foo = "abc"
+test_ok("#{foo} = abc" == "abc = abc")
+
+test_ok('-' * 5 == '-----')
+test_ok('-' * 1 == '-')
+test_ok('-' * 0 == '')
+
+foo = '-'
+test_ok(foo * 5 == '-----')
+test_ok(foo * 1 == '-')
+test_ok(foo * 0 == '')
+
+$x = "a.gif"
+test_ok($x.sub(/.*\.([^\.]+)$/, '\1') == "gif")
+test_ok($x.sub(/.*\.([^\.]+)$/, 'b.\1') == "b.gif")
+test_ok($x.sub(/.*\.([^\.]+)$/, '\2') == "")
+test_ok($x.sub(/.*\.([^\.]+)$/, 'a\2b') == "ab")
+test_ok($x.sub(/.*\.([^\.]+)$/, '<\&>') == "<a.gif>")
+
+# character constants(assumes ASCII)
+test_ok("a"[0] == ?a)
+test_ok(?a == ?a)
+test_ok(?\C-a == "\1")
+test_ok(?\M-a == "\341")
+test_ok(?\M-\C-a == "\201")
+test_ok("a".upcase![0] == ?A)
+test_ok("A".downcase![0] == ?a)
+test_ok("abc".tr!("a-z", "A-Z") == "ABC")
+test_ok("aabbcccc".tr_s!("a-z", "A-Z") == "ABC")
+test_ok("abcc".squeeze!("a-z") == "abc")
+test_ok("abcd".delete!("bc") == "ad")
+
+$x = "abcdef"
+$y = [ ?a, ?b, ?c, ?d, ?e, ?f ]
+$bad = false
+$x.each_byte {|i|
+ if i.chr != $y.shift
+ $bad = true
+ break
+ end
+}
+test_ok(!$bad)
+
+s = "a string"
+s[0..s.size]="another string"
+test_ok(s == "another string")
+
+s = <<EOS
+#{
+[1,2,3].join(",")
+}
+EOS
+test_ok(s == "1,2,3\n")
+test_ok("Just".to_i(36) == 926381)
+test_ok("-another".to_i(36) == -23200231779)
+test_ok(1299022.to_s(36) == "ruby")
+test_ok(-1045307475.to_s(36) == "-hacker")
+test_ok("Just_another_Ruby_hacker".to_i(36) == 265419172580680477752431643787347)
+test_ok(-265419172580680477752431643787347.to_s(36) == "-justanotherrubyhacker")
+
+a = []
+(0..255).each {|n|
+ ch = [n].pack("C")
+ a.push ch if /a#{Regexp.quote ch}b/x =~ "ab"
+}
+test_ok(a.size == 0)
+
+test_check "assignment"
+a = nil
+test_ok(defined?(a))
+test_ok(a == nil)
+
+# multiple assignment
+a, b = 1, 2
+test_ok(a == 1 && b == 2)
+
+a, b = b, a
+test_ok(a == 2 && b == 1)
+
+a, = 1,2
+test_ok(a == 1)
+
+a, *b = 1, 2, 3
+test_ok(a == 1 && b == [2, 3])
+
+a, (b, c), d = 1, [2, 3], 4
+test_ok(a == 1 && b == 2 && c == 3 && d == 4)
+
+*a = 1, 2, 3
+test_ok(a == [1, 2, 3])
+
+*a = 4
+test_ok(a == [4])
+
+*a = nil
+test_ok(a == [nil])
+
+test_check "call"
+def aaa(a, b=100, *rest)
+ res = [a, b]
+ res += rest if rest
+ return res
+end
+
+# not enough argument
+begin
+ aaa() # need at least 1 arg
+ test_ok(false)
+rescue
+ test_ok(true)
+end
+
+begin
+ aaa # no arg given (exception raised)
+ test_ok(false)
+rescue
+ test_ok(true)
+end
+
+test_ok(aaa(1) == [1, 100])
+test_ok(aaa(1, 2) == [1, 2])
+test_ok(aaa(1, 2, 3, 4) == [1, 2, 3, 4])
+test_ok(aaa(1, *[2, 3, 4]) == [1, 2, 3, 4])
+
+test_check "proc"
+$proc = Proc.new{|i| i}
+test_ok($proc.call(2) == 2)
+test_ok($proc.call(3) == 3)
+
+$proc = Proc.new{|i| i*2}
+test_ok($proc.call(2) == 4)
+test_ok($proc.call(3) == 6)
+
+Proc.new{
+ iii=5 # nested local variable
+ $proc = Proc.new{|i|
+ iii = i
+ }
+ $proc2 = Proc.new {
+ $x = iii # nested variables shared by procs
+ }
+ # scope of nested variables
+ test_ok(defined?(iii))
+}.call
+test_ok(!defined?(iii)) # out of scope
+
+loop{iii=5; test_ok(eval("defined? iii")); break}
+loop {
+ iii = 10
+ def dyna_var_check
+ loop {
+ test_ok(!defined?(iii))
+ break
+ }
+ end
+ dyna_var_check
+ break
+}
+$x=0
+$proc.call(5)
+$proc2.call
+test_ok($x == 5)
+
+if defined? Process.kill
+ test_check "signal"
+
+ $x = 0
+ trap "SIGINT", Proc.new{|sig| $x = 2}
+ Process.kill "SIGINT", $$
+ 100.times {
+ sleep 0.1
+ break if $x != 0
+ }
+ test_ok($x == 2)
+
+ trap "SIGINT", Proc.new{raise "Interrupt"}
+
+ x = false
+ begin
+ Process.kill "SIGINT", $$
+ sleep 0.1
+ rescue
+ x = $!
+ end
+ test_ok(x && /Interrupt/ =~ x.message)
+end
+
+test_check "eval"
+test_ok(eval("") == nil)
+$bad=false
+eval 'while false; $bad = true; print "foo\n" end'
+test_ok(!$bad)
+
+test_ok(eval('Object'))
+test_ok(eval('true'))
+test_ok(!eval('nil'))
+test_ok(!eval('false'))
+
+$foo = 'test_ok(true)'
+begin
+ eval $foo
+rescue
+ test_ok(false)
+end
+
+test_ok(eval("$foo") == 'test_ok(true)')
+test_ok(eval("true") == true)
+i = 5
+test_ok(eval("i == 5"))
+test_ok(eval("i") == 5)
+test_ok(eval("defined? i"))
+
+# eval with binding
+def test_ev
+ local1 = "local1"
+ lambda {
+ local2 = "local2"
+ return binding
+ }.call
+end
+
+$x = test_ev
+test_ok(eval("local1", $x) == "local1") # normal local var
+test_ok(eval("local2", $x) == "local2") # nested local var
+$bad = true
+begin
+ p eval("local1")
+rescue NameError # must raise error
+ $bad = false
+end
+test_ok(!$bad)
+
+module EvTest
+ EVTEST1 = 25
+ evtest2 = 125
+ $x = binding
+end
+test_ok(eval("EVTEST1", $x) == 25) # constant in module
+test_ok(eval("evtest2", $x) == 125) # local var in module
+$bad = true
+begin
+ eval("EVTEST1")
+rescue NameError # must raise error
+ $bad = false
+end
+test_ok(!$bad)
+
+x = binding #! YARV Limitation: Proc.new{}
+eval "i4 = 1", x
+test_ok(eval("i4", x) == 1)
+x = Proc.new{binding}.call #! YARV Limitation: Proc.new{Proc.new{}}.call
+eval "i4 = 22", x
+test_ok(eval("i4", x) == 22)
+$x = []
+x = Proc.new{binding}.call #! YARV Limitation: Proc.new{Proc.new{}}.call
+eval "(0..9).each{|i5| $x[i5] = Proc.new{i5*2}}", x
+test_ok($x[4].call == 8)
+
+x = binding
+eval "i = 1", x
+test_ok(eval("i", x) == 1)
+x = Proc.new{binding}.call
+eval "i = 22", x
+test_ok(eval("i", x) == 22)
+$x = []
+x = Proc.new{binding}.call
+eval "(0..9).each{|i5| $x[i5] = Proc.new{i5*2}}", x
+test_ok($x[4].call == 8)
+x = Proc.new{binding}.call
+eval "for i6 in 1..1; j6=i6; end", x
+test_ok(eval("defined? i6", x))
+test_ok(eval("defined? j6", x))
+
+Proc.new {
+ p = binding
+ eval "foo11 = 1", p
+ foo22 = 5
+ Proc.new{foo11=22}.call
+ Proc.new{foo22=55}.call
+ test_ok(eval("foo11", p) == eval("foo11"))
+ test_ok(eval("foo11") == 1)
+ test_ok(eval("foo22", p) == eval("foo22"))
+ test_ok(eval("foo22") == 55)
+}.call if false #! YARV Limitation
+
+#! YARV Limitation: p1 = Proc.new{i7 = 0; Proc.new{i7}}.call
+p1 = Proc.new{i7 = 0; binding}.call
+#! YARV Limitation: test_ok(p1.call == 0)
+eval "i7=5", p1
+#! YARV Limitation: test_ok(p1.call == 5)
+test_ok(!defined?(i7))
+
+if false #! YARV Limitation
+p1 = Proc.new{i7 = 0; Proc.new{i7}}.call
+i7 = nil
+test_ok(p1.call == 0)
+eval "i7=1", p1
+test_ok(p1.call == 1)
+eval "i7=5", p1
+test_ok(p1.call == 5)
+test_ok(i7 == nil)
+end
+
+# WASI doesn't support spawning a new process for now.
+unless /wasi/ =~ RUBY_PLATFORM
+test_check "system"
+test_ok(`echo foobar` == "foobar\n")
+test_ok(`./miniruby -e 'print "foobar"'` == 'foobar')
+
+script_tmp = "script_tmp.#{$$}"
+tmp = open(script_tmp, "w")
+tmp.print "print $zzz\n";
+tmp.close
+
+test_ok(`./miniruby -s #{script_tmp} -zzz` == 'true')
+test_ok(`./miniruby -s #{script_tmp} -zzz=555` == '555')
+
+tmp = open(script_tmp, "w")
+tmp.print "#! /usr/local/bin/ruby -s\n";
+tmp.print "print $zzz\n";
+tmp.close
+
+test_ok(`./miniruby #{script_tmp} -zzz=678` == '678')
+
+tmp = open(script_tmp, "w")
+tmp.print "this is a leading junk\n";
+tmp.print "#! /usr/local/bin/ruby -s\n";
+tmp.print "print $zzz\n";
+tmp.print "__END__\n";
+tmp.print "this is a trailing junk\n";
+tmp.close
+
+test_ok(`./miniruby -x #{script_tmp}` == '')
+test_ok(`./miniruby -x #{script_tmp} -zzz=555` == '555')
+
+tmp = open(script_tmp, "w")
+for i in 1..5
+ tmp.print i, "\n"
+end
+tmp.close
+
+`./miniruby -i.bak -pe '$_.sub!(/^[0-9]+$/){$&.to_i * 5}' #{script_tmp}`
+done = true
+tmp = open(script_tmp, "r")
+while tmp.gets
+ if $_.to_i % 5 != 0
+ done = false
+ break
+ end
+end
+tmp.close
+test_ok(done)
+
+File.unlink script_tmp or `/bin/rm -f "#{script_tmp}"`
+File.unlink "#{script_tmp}.bak" or `/bin/rm -f "#{script_tmp}.bak"`
+end # not /wasi/ =~ RUBY_PLATFORM
+
+test_check "const"
+TEST1 = 1
+TEST2 = 2
+
+module Const
+ TEST3 = 3
+ TEST4 = 4
+end
+
+module Const2
+ TEST3 = 6
+ TEST4 = 8
+end
+
+include Const
+
+test_ok([TEST1,TEST2,TEST3,TEST4] == [1,2,3,4])
+
+include Const2
+STDERR.print "intentionally redefines TEST3, TEST4\n" if $VERBOSE
+test_ok([TEST1,TEST2,TEST3,TEST4] == [1,2,6,8])
+
+
+test_ok((String <=> Object) == -1)
+test_ok((Object <=> String) == 1)
+test_ok((Array <=> String) == nil)
+
+test_check "clone"
+foo = Object.new
+def foo.test
+ "test"
+end
+bar = foo.clone
+def bar.test2
+ "test2"
+end
+
+test_ok(bar.test2 == "test2")
+test_ok(bar.test == "test")
+test_ok(foo.test == "test")
+
+begin
+ foo.test2
+ test_ok false
+rescue NoMethodError
+ test_ok true
+end
+
+module M001; end
+module M002; end
+module M003; include M002; end
+module M002; include M001; end
+module M003; include M002; end
+
+test_ok(M003.ancestors == [M003, M002, M001])
+
+test_check "marshal"
+$x = [1,2,3,[4,5,"foo"],{1=>"bar"},2.5,fact(30)]
+$y = Marshal.dump($x)
+test_ok($x == Marshal.load($y))
+
+StrClone=String.clone;
+test_ok(Marshal.load(Marshal.dump(StrClone.new("abc"))).class == StrClone)
+
+[[1,2,3,4], [81, 2, 118, 3146]].each { |w,x,y,z|
+ a = (x.to_f + y.to_f / z.to_f) * Math.exp(w.to_f / (x.to_f + y.to_f / z.to_f))
+ ma = Marshal.dump(a)
+ b = Marshal.load(ma)
+ test_ok(a == b)
+}
+
+test_check "pack"
+
+$format = "c2x5CCxsdils_l_a6";
+# Need the expression in here to force ary[5] to be numeric. This avoids
+# test2 failing because ary2 goes str->numeric->str and ary does not.
+ary = [1,-100,127,128,32767,987.654321098 / 100.0,12345,123456,-32767,-123456,"abcdef"]
+$x = ary.pack($format)
+ary2 = $x.unpack($format)
+
+test_ok(ary.length == ary2.length)
+test_ok(ary.join(':') == ary2.join(':'))
+test_ok($x =~ /def/)
+
+$x = [-1073741825]
+test_ok($x.pack("q").unpack("q") == $x)
+
+test_check "math"
+test_ok(Math.sqrt(4) == 2)
+
+include Math
+test_ok(sqrt(4) == 2)
+
+test_check "struct"
+struct_test = Struct.new("Test", :foo, :bar)
+test_ok(struct_test == Struct::Test)
+
+test = struct_test.new(1, 2)
+test_ok(test.foo == 1 && test.bar == 2)
+test_ok(test[0] == 1 && test[1] == 2)
+
+a, b = test.to_a
+test_ok(a == 1 && b == 2)
+
+test[0] = 22
+test_ok(test.foo == 22)
+
+test.bar = 47
+test_ok(test.bar == 47)
+
+test_check "variable"
+test_ok($$.instance_of?(Integer))
+
+# read-only variable
+begin
+ $$ = 5
+ test_ok false
+rescue NameError
+ test_ok true
+end
+
+foobar = "foobar"
+$_ = foobar
+test_ok($_ == foobar)
+
+class Gods
+ @@rule = "Uranus"
+ def ruler0
+ @@rule
+ end
+
+ def self.ruler1 # <= per method definition style
+ @@rule
+ end
+ class << self # <= multiple method definition style
+ def ruler2
+ @@rule
+ end
+ end
+end
+
+module Olympians
+ @@rule ="Zeus"
+ def ruler3
+ @@rule
+ end
+end
+
+class Titans < Gods
+ @@rule = "Cronus" # modifies @@rule in Gods
+ include Olympians
+ def ruler4
+ @@rule
+ end
+end
+
+test_ok(Gods.new.ruler0 == "Cronus")
+test_ok(Gods.ruler1 == "Cronus")
+test_ok(Gods.ruler2 == "Cronus")
+test_ok(Titans.ruler1 == "Cronus")
+test_ok(Titans.ruler2 == "Cronus")
+atlas = Titans.new
+test_ok(atlas.ruler0 == "Cronus")
+test_ok(atlas.ruler3 == "Zeus")
+begin
+ atlas.ruler4
+rescue RuntimeError => e
+ test_ok(e.message.include?("class variable @@rule of Olympians is overtaken by Gods"))
+else
+ test_ok(false)
+end
+test_ok(atlas.ruler3 == "Zeus")
+
+test_check "trace"
+$x = 1234
+$y = 0
+trace_var :$x, Proc.new{$y = $x}
+$x = 40414
+test_ok($y == $x)
+
+untrace_var :$x
+$x = 19660208
+test_ok($y != $x)
+
+trace_var :$x, Proc.new{$x *= 2}
+$x = 5
+test_ok($x == 10)
+
+untrace_var :$x
+
+test_check "defined?"
+
+test_ok(defined?($x)) # global variable
+test_ok(defined?($x) == 'global-variable')# returns description
+
+foo=5
+test_ok(defined?(foo)) # local variable
+
+test_ok(defined?(Array)) # constant
+test_ok(defined?(Object.new)) # method
+test_ok(!defined?(Object.print))# private method
+test_ok(defined?(1 == 2)) # operator expression
+
+class Foo
+ def foo
+ p :foo
+ end
+ protected :foo
+ def bar(f)
+ test_ok(defined?(self.foo))
+ test_ok(defined?(f.foo))
+ end
+end
+f = Foo.new
+test_ok(defined?(f.foo) == nil)
+f.bar(f)
+
+def defined_test
+ return !defined?(yield)
+end
+
+test_ok(defined_test) # not iterator
+test_ok(!defined_test{}) # called as iterator
+
+test_check "alias"
+class Alias0
+ def foo; "foo" end
+end
+class Alias1 < Alias0
+ alias bar foo
+ def foo; "foo+" + super end
+end
+class Alias2 < Alias1
+ alias baz foo
+ undef foo
+end
+
+x = Alias2.new
+test_ok(x.bar == "foo")
+test_ok(x.baz == "foo+foo")
+
+# test_check for cache
+test_ok(x.baz == "foo+foo")
+
+class Alias3 < Alias2
+ def foo
+ defined? super
+ end
+ def bar
+ defined? super
+ end
+ def quux
+ defined? super
+ end
+end
+x = Alias3.new
+test_ok(!x.foo)
+test_ok(x.bar)
+test_ok(!x.quux)
+
+test_check "path"
+test_ok(File.basename("a") == "a")
+test_ok(File.basename("a/b") == "b")
+test_ok(File.basename("a/b/") == "b")
+test_ok(File.basename("/") == "/")
+test_ok(File.basename("//") == "/")
+test_ok(File.basename("///") == "/")
+test_ok(File.basename("a/b////") == "b")
+test_ok(File.basename("a.rb", ".rb") == "a")
+test_ok(File.basename("a.rb///", ".rb") == "a")
+test_ok(File.basename("a.rb///", ".*") == "a")
+test_ok(File.basename("a.rb///", ".c") == "a.rb")
+test_ok(File.dirname("a") == ".")
+test_ok(File.dirname("/") == "/")
+test_ok(File.dirname("/a") == "/")
+test_ok(File.dirname("a/b") == "a")
+test_ok(File.dirname("a/b/c") == "a/b")
+test_ok(File.dirname("/a/b/c") == "/a/b")
+test_ok(File.dirname("/a/b/") == "/a")
+test_ok(File.dirname("/a/b///") == "/a")
+case Dir.pwd
+when %r'\A\w:'
+ test_ok(/\A\w:\/\z/ =~ File.expand_path(".", "/"))
+ test_ok(/\A\w:\/a\z/ =~ File.expand_path("a", "/"))
+ dosish = true
+when %r'\A//'
+ test_ok(%r'\A//[^/]+/[^/]+\z' =~ File.expand_path(".", "/"))
+ test_ok(%r'\A//[^/]+/[^/]+/a\z' =~ File.expand_path(".", "/"))
+ dosish = true
+else
+ test_ok(File.expand_path(".", "/") == "/")
+ test_ok(File.expand_path("sub", "/") == "/sub")
+end
+if dosish
+ test_ok(File.expand_path("/", "//machine/share/sub") == "//machine/share")
+ test_ok(File.expand_path("/dir", "//machine/share/sub") == "//machine/share/dir")
+ test_ok(File.expand_path("/", "z:/sub") == "z:/")
+ test_ok(File.expand_path("/dir", "z:/sub") == "z:/dir")
+end
+test_ok(File.expand_path(".", "//") == "//")
+test_ok(File.expand_path("sub", "//") == "//sub")
+
+# test_check "Proc#binding"
+ObjectSpace.each_object(Proc){|o|
+ begin
+ b = o.binding
+ eval 'self', b
+ rescue ArgumentError
+ end
+}
+
+test_check "gc"
+begin
+ 1.upto(10000) {
+ tmp = [0,1,2,3,4,5,6,7,8,9]
+ }
+ tmp = nil
+ test_ok true
+rescue
+ test_ok false
+end
+class S
+ def initialize(a)
+ @a = a
+ end
+end
+l=nil
+100000.times {
+ l = S.new(l)
+}
+GC.start
+test_ok true # reach here or dumps core
+l = []
+100000.times {
+ l.push([l])
+}
+GC.start
+test_ok true # reach here or dumps core
+
+ObjectSpace.each_object{|o|
+ o.class.name
+}
+
+test_ok true # reach here or dumps core
+
+PROGRESS.finish
+if $failed > 0
+ printf "not ok/test: %d failed %d\n", $ntest, $failed
+else
+ printf "end of test(test: %d)\n", $ntest
+end
diff --git a/benchmark/README.md b/benchmark/README.md
new file mode 100644
index 0000000000..e11381cad9
--- /dev/null
+++ b/benchmark/README.md
@@ -0,0 +1,74 @@
+# ruby/benchmark
+
+This directory has benchmark definitions to be run with
+[benchmark\_driver.gem](https://github.com/benchmark-driver/benchmark-driver).
+
+## Normal usage
+
+Execute `gem install benchmark_driver` and run a command like:
+
+```bash
+# Run a benchmark script with the ruby in the $PATH
+benchmark-driver benchmark/app_fib.rb
+
+# Run benchmark scripts with multiple Ruby executables or options
+benchmark-driver benchmark/*.rb -e /path/to/ruby -e '/path/to/ruby --jit'
+
+# Or compare Ruby versions managed by rbenv
+benchmark-driver benchmark/*.rb --rbenv '2.5.1;2.6.0-preview2 --jit'
+
+# You can collect many metrics in many ways
+benchmark-driver benchmark/*.rb --runner memory --output markdown
+
+# Some are defined with YAML for complex setup or accurate measurement
+benchmark-driver benchmark/*.yml
+```
+
+See also:
+
+```console
+Usage: benchmark-driver [options] RUBY|YAML...
+ -r, --runner TYPE Specify runner type: ips, time, memory, once, block (default: ips)
+ -o, --output TYPE Specify output type: compare, simple, markdown, record, all (default: compare)
+ -e, --executables EXECS Ruby executables (e1::path1 arg1; e2::path2 arg2;...)
+ --rbenv VERSIONS Ruby executables in rbenv (x.x.x arg1;y.y.y arg2;...)
+ --repeat-count NUM Try benchmark NUM times and use the fastest result or the worst memory usage
+ --repeat-result TYPE Yield "best", "average" or "worst" result with --repeat-count (default: best)
+ --alternate Alternate executables instead of running the same executable in a row with --repeat-count
+ --bundler Install and use gems specified in Gemfile
+ --filter REGEXP Filter out benchmarks with given regexp
+ --run-duration SECONDS Warmup estimates loop_count to run for this duration (default: 3)
+ --timeout SECONDS Timeout ruby command execution with timeout(1)
+ -v, --verbose Verbose mode. Multiple -v options increase visilibity (max: 2)
+```
+
+## make benchmark
+
+Using `make benchmark`, `make update-benchmark-driver` automatically downloads
+the supported version of benchmark\_driver, and it runs benchmarks with the downloaded
+benchmark\_driver.
+
+```bash
+# Run all benchmarks with the ruby in the $PATH and the built ruby
+make benchmark
+
+# Or compare with specific ruby binary
+make benchmark COMPARE_RUBY="/path/to/ruby --jit"
+
+# Run vm benchmarks
+make benchmark ITEM=vm
+
+# Run some limited benchmarks in ITEM-matched files
+make benchmark ITEM=vm OPTS=--filter=block
+
+# You can specify the benchmark by an exact filename instead of using the default argument:
+# ARGS = $$(find $(srcdir)/benchmark -maxdepth 1 -name '*$(ITEM)*.yml' -o -name '*$(ITEM)*.rb')
+make benchmark ARGS=benchmark/erb_render.yml
+
+# You can specify any option via $OPTS
+make benchmark OPTS="--help"
+
+# With `make benchmark`, some special runner plugins are available:
+# -r peak, -r size, -r total, -r utime, -r stime, -r cutime, -r cstime
+make benchmark ITEM=vm_bigarray OPTS="-r peak"
+```
diff --git a/benchmark/app_answer.rb b/benchmark/app_answer.rb
new file mode 100644
index 0000000000..3cd8a8fd37
--- /dev/null
+++ b/benchmark/app_answer.rb
@@ -0,0 +1,15 @@
+def ack(m, n)
+ if m == 0 then
+ n + 1
+ elsif n == 0 then
+ ack(m - 1, 1)
+ else
+ ack(m - 1, ack(m, n - 1))
+ end
+end
+
+def the_answer_to_life_the_universe_and_everything
+ (ack(3,7).to_s.split(//).inject(0){|s,x| s+x.to_i}.to_s + "2" ).to_i
+end
+
+answer = the_answer_to_life_the_universe_and_everything
diff --git a/benchmark/app_aobench.rb b/benchmark/app_aobench.rb
new file mode 100644
index 0000000000..16296af12b
--- /dev/null
+++ b/benchmark/app_aobench.rb
@@ -0,0 +1,297 @@
+# coding: US-ASCII
+
+# AO render benchmark
+# Original program (C) Syoyo Fujita in Javascript (and other languages)
+# https://code.google.com/p/aobench/
+# Ruby(yarv2llvm) version by Hideki Miura
+#
+
+IMAGE_WIDTH = 256
+IMAGE_HEIGHT = 256
+NSUBSAMPLES = 2
+NAO_SAMPLES = 8
+
+srand(0)
+
+class Vec
+ def initialize(x, y, z)
+ @x = x
+ @y = y
+ @z = z
+ end
+
+ attr_accessor :x, :y, :z
+
+ def vadd(b)
+ Vec.new(@x + b.x, @y + b.y, @z + b.z)
+ end
+
+ def vsub(b)
+ Vec.new(@x - b.x, @y - b.y, @z - b.z)
+ end
+
+ def vcross(b)
+ Vec.new(@y * b.z - @z * b.y,
+ @z * b.x - @x * b.z,
+ @x * b.y - @y * b.x)
+ end
+
+ def vdot(b)
+ @x * b.x + @y * b.y + @z * b.z
+ end
+
+ def vlength
+ Math.sqrt(@x * @x + @y * @y + @z * @z)
+ end
+
+ def vnormalize
+ len = vlength
+ v = Vec.new(@x, @y, @z)
+ if len > 1.0e-17 then
+ v.x = v.x / len
+ v.y = v.y / len
+ v.z = v.z / len
+ end
+ v
+ end
+end
+
+
+class Sphere
+ def initialize(center, radius)
+ @center = center
+ @radius = radius
+ end
+
+ attr_reader :center, :radius
+
+ def intersect(ray, isect)
+ rs = ray.org.vsub(@center)
+ b = rs.vdot(ray.dir)
+ c = rs.vdot(rs) - (@radius * @radius)
+ d = b * b - c
+ if d > 0.0 then
+ t = - b - Math.sqrt(d)
+
+ if t > 0.0 and t < isect.t then
+ isect.t = t
+ isect.hit = true
+ isect.pl = Vec.new(ray.org.x + ray.dir.x * t,
+ ray.org.y + ray.dir.y * t,
+ ray.org.z + ray.dir.z * t)
+ n = isect.pl.vsub(@center)
+ isect.n = n.vnormalize
+ else
+ 0.0
+ end
+ end
+ nil
+ end
+end
+
+class Plane
+ def initialize(p, n)
+ @p = p
+ @n = n
+ end
+
+ def intersect(ray, isect)
+ d = -@p.vdot(@n)
+ v = ray.dir.vdot(@n)
+ v0 = v
+ if v < 0.0 then
+ v0 = -v
+ end
+ if v0 < 1.0e-17 then
+ return
+ end
+
+ t = -(ray.org.vdot(@n) + d) / v
+
+ if t > 0.0 and t < isect.t then
+ isect.hit = true
+ isect.t = t
+ isect.n = @n
+ isect.pl = Vec.new(ray.org.x + t * ray.dir.x,
+ ray.org.y + t * ray.dir.y,
+ ray.org.z + t * ray.dir.z)
+ end
+ nil
+ end
+end
+
+class Ray
+ def initialize(org, dir)
+ @org = org
+ @dir = dir
+ end
+
+ attr_accessor :org, :dir
+end
+
+class Isect
+ def initialize
+ @t = 10000000.0
+ @hit = false
+ @pl = Vec.new(0.0, 0.0, 0.0)
+ @n = Vec.new(0.0, 0.0, 0.0)
+ end
+
+ attr_accessor :t, :hit, :pl, :n
+end
+
+def clamp(f)
+ i = f * 255.5
+ if i > 255.0 then
+ i = 255.0
+ end
+ if i < 0.0 then
+ i = 0.0
+ end
+ i.to_i
+end
+
+def otherBasis(basis, n)
+ basis[2] = Vec.new(n.x, n.y, n.z)
+ basis[1] = Vec.new(0.0, 0.0, 0.0)
+
+ if n.x < 0.6 and n.x > -0.6 then
+ basis[1].x = 1.0
+ elsif n.y < 0.6 and n.y > -0.6 then
+ basis[1].y = 1.0
+ elsif n.z < 0.6 and n.z > -0.6 then
+ basis[1].z = 1.0
+ else
+ basis[1].x = 1.0
+ end
+
+ basis[0] = basis[1].vcross(basis[2])
+ basis[0] = basis[0].vnormalize
+
+ basis[1] = basis[2].vcross(basis[0])
+ basis[1] = basis[1].vnormalize
+end
+
+class Scene
+ def initialize
+ @spheres = Array.new
+ @spheres[0] = Sphere.new(Vec.new(-2.0, 0.0, -3.5), 0.5)
+ @spheres[1] = Sphere.new(Vec.new(-0.5, 0.0, -3.0), 0.5)
+ @spheres[2] = Sphere.new(Vec.new(1.0, 0.0, -2.2), 0.5)
+ @plane = Plane.new(Vec.new(0.0, -0.5, 0.0), Vec.new(0.0, 1.0, 0.0))
+ end
+
+ def ambient_occlusion(isect)
+ basis = Array.new
+ otherBasis(basis, isect.n)
+
+ ntheta = NAO_SAMPLES
+ nphi = NAO_SAMPLES
+ eps = 0.0001
+ occlusion = 0.0
+
+ p0 = Vec.new(isect.pl.x + eps * isect.n.x,
+ isect.pl.y + eps * isect.n.y,
+ isect.pl.z + eps * isect.n.z)
+ nphi.times do |j|
+ ntheta.times do |i|
+ r = rand
+ phi = 2.0 * 3.14159265 * rand
+ x = Math.cos(phi) * Math.sqrt(1.0 - r)
+ y = Math.sin(phi) * Math.sqrt(1.0 - r)
+ z = Math.sqrt(r)
+
+ rx = x * basis[0].x + y * basis[1].x + z * basis[2].x
+ ry = x * basis[0].y + y * basis[1].y + z * basis[2].y
+ rz = x * basis[0].z + y * basis[1].z + z * basis[2].z
+
+ raydir = Vec.new(rx, ry, rz)
+ ray = Ray.new(p0, raydir)
+
+ occisect = Isect.new
+ @spheres[0].intersect(ray, occisect)
+ @spheres[1].intersect(ray, occisect)
+ @spheres[2].intersect(ray, occisect)
+ @plane.intersect(ray, occisect)
+ if occisect.hit then
+ occlusion = occlusion + 1.0
+ else
+ 0.0
+ end
+ end
+ end
+
+ occlusion = (ntheta.to_f * nphi.to_f - occlusion) / (ntheta.to_f * nphi.to_f)
+
+ Vec.new(occlusion, occlusion, occlusion)
+ end
+
+ def render(w, h, nsubsamples)
+ cnt = 0
+ nsf = nsubsamples.to_f
+ h.times do |y|
+ w.times do |x|
+ rad = Vec.new(0.0, 0.0, 0.0)
+
+ # Subsampling
+ nsubsamples.times do |v|
+ nsubsamples.times do |u|
+
+ cnt = cnt + 1
+ wf = w.to_f
+ hf = h.to_f
+ xf = x.to_f
+ yf = y.to_f
+ uf = u.to_f
+ vf = v.to_f
+
+ px = (xf + (uf / nsf) - (wf / 2.0)) / (wf / 2.0)
+ py = -(yf + (vf / nsf) - (hf / 2.0)) / (hf / 2.0)
+
+ eye = Vec.new(px, py, -1.0).vnormalize
+
+ ray = Ray.new(Vec.new(0.0, 0.0, 0.0), eye)
+
+ isect = Isect.new
+ @spheres[0].intersect(ray, isect)
+ @spheres[1].intersect(ray, isect)
+ @spheres[2].intersect(ray, isect)
+ @plane.intersect(ray, isect)
+ if isect.hit then
+ col = ambient_occlusion(isect)
+ rad.x = rad.x + col.x
+ rad.y = rad.y + col.y
+ rad.z = rad.z + col.z
+ end
+ end
+ end
+
+ r = rad.x / (nsf * nsf)
+ g = rad.y / (nsf * nsf)
+ b = rad.z / (nsf * nsf)
+ printf("%c", clamp(r))
+ printf("%c", clamp(g))
+ printf("%c", clamp(b))
+ end
+ nil
+ end
+
+ nil
+ end
+end
+
+alias printf_orig printf
+def printf *args
+ # $fp.printf(*args)
+end
+
+# File.open("ao.ppm", "w") do |fp|
+ # $fp = fp
+ printf("P6\n")
+ printf("%d %d\n", IMAGE_WIDTH, IMAGE_HEIGHT)
+ printf("255\n")
+ Scene.new.render(IMAGE_WIDTH, IMAGE_HEIGHT, NSUBSAMPLES)
+# end
+
+undef printf
+alias printf printf_orig
diff --git a/benchmark/app_erb.yml b/benchmark/app_erb.yml
new file mode 100644
index 0000000000..31e29b7644
--- /dev/null
+++ b/benchmark/app_erb.yml
@@ -0,0 +1,23 @@
+#
+# Create many HTML strings with ERB.
+#
+prelude: |
+ require 'erb'
+
+ data = <<erb
+ <html>
+ <head> <%= title %> </head>
+ <body>
+ <h1> <%= title %> </h1>
+ <p>
+ <%= content %>
+ </p>
+ </body>
+ </html>
+ erb
+
+ title = "hello world!"
+ content = "hello world!\n" * 10
+benchmark:
+ app_erb: ERB.new(data).result(binding)
+loop_count: 15000
diff --git a/benchmark/app_factorial.rb b/benchmark/app_factorial.rb
new file mode 100644
index 0000000000..45f471dfdb
--- /dev/null
+++ b/benchmark/app_factorial.rb
@@ -0,0 +1,11 @@
+def fact(n)
+ if(n > 1)
+ n * fact(n-1)
+ else
+ 1
+ end
+end
+
+100.times {
+ fact(5000)
+}
diff --git a/benchmark/app_fib.rb b/benchmark/app_fib.rb
new file mode 100644
index 0000000000..34a7b2e725
--- /dev/null
+++ b/benchmark/app_fib.rb
@@ -0,0 +1,10 @@
+def fib n
+ if n < 3
+ 1
+ else
+ fib(n-1) + fib(n-2)
+ end
+end
+
+fib(34)
+
diff --git a/benchmark/app_lc_fizzbuzz.rb b/benchmark/app_lc_fizzbuzz.rb
new file mode 100644
index 0000000000..f09574bbeb
--- /dev/null
+++ b/benchmark/app_lc_fizzbuzz.rb
@@ -0,0 +1,52 @@
+#
+# FizzBuzz program using only lambda calculus
+#
+# This program is quoted from
+# "Understanding Computation" by Tom Stuart
+# http://computationbook.com/
+#
+# You can understand why this program works fine by reading this book.
+#
+
+solution = -> k { -> f { -> f { -> x { f[-> y { x[x][y] }] }[-> x { f[-> y { x[x][y] }] }] }[-> f { -> l { -> x { -> g { -> b { b }[-> p { p[-> x { -> y { x } }] }[l]][x][-> y { g[f[-> l { -> p { p[-> x { -> y { y } }] }[-> p { p[-> x { -> y { y } }] }[l]] }[l]][x][g]][-> l { -> p { p[-> x { -> y { x } }] }[-> p { p[-> x { -> y { y } }] }[l]] }[l]][y] }] } } } }][k][-> x { -> y { -> f { f[x][y] } } }[-> x { -> y { x } }][-> x { -> y { x } }]][-> l { -> x { -> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[l][f[x]] } }] } }[-> f { -> x { f[-> y { x[x][y] }] }[-> x { f[-> y { x[x][y] }] }] }[-> f { -> m { -> n { -> b { b }[-> m { -> n { -> n { n[-> x { -> x { -> y { y } } }][-> x { -> y { x } }] }[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]] } }[m][n]][-> x { -> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[f[-> n { -> p { -> x { p[n[p][x]] } } }[m]][n]][m][x] }][-> x { -> y { -> f { f[x][y] } } }[-> x { -> y { x } }][-> x { -> y { x } }]] } } }][-> p { -> x { p[x] } }][-> p { -> x { p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[x]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] } }]][-> n { -> b { b }[-> n { n[-> x { -> x { -> y { y } } }][-> x { -> y { x } }] }[-> f { -> x { f[-> y { x[x][y] }] }[-> x { f[-> y { x[x][y] }] }] }[-> f { -> m { -> n { -> b { b }[-> m { -> n { -> n { n[-> x { -> x { -> y { y } } }][-> x { -> y { x } }] }[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]] } }[n][m]][-> x { f[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]][n][x] }][m] } } }][n][-> p { -> x { p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[x]]]]]]]]]]]]]]] } }]]][-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> x { -> y { -> f { f[x][y] } } }[-> x { -> y { x } }][-> x { -> y { x } }]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]]]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]]]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]]][-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]]]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]]]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]][-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]][-> b { b }[-> n { n[-> x { -> x { -> y { y } } }][-> x { -> y { x } }] }[-> f { -> x { f[-> y { x[x][y] }] }[-> x { f[-> y { x[x][y] }] }] }[-> f { -> m { -> n { -> b { b }[-> m { -> n { -> n { n[-> x { -> x { -> y { y } } }][-> x { -> y { x } }] }[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]] } }[n][m]][-> x { f[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]][n][x] }][m] } } }][n][-> p { -> x { p[p[p[x]]] } }]]][-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> x { -> y { -> f { f[x][y] } } }[-> x { -> y { x } }][-> x { -> y { x } }]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]]]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]]]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]][-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]][-> b { b }[-> n { n[-> x { -> x { -> y { y } } }][-> x { -> y { x } }] }[-> f { -> x { f[-> y { x[x][y] }] }[-> x { f[-> y { x[x][y] }] }] }[-> f { -> m { -> n { -> b { b }[-> m { -> n { -> n { n[-> x { -> x { -> y { y } } }][-> x { -> y { x } }] }[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]] } }[n][m]][-> x { f[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]][n][x] }][m] } } }][n][-> p { -> x { p[p[p[p[p[x]]]]] } }]]][-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> x { -> y { -> f { f[x][y] } } }[-> x { -> y { x } }][-> x { -> y { x } }]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]]]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]]]][-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> n { -> p { -> x { p[n[p][x]] } } }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]]]][-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]][-> f { -> x { f[-> y { x[x][y] }] }[-> x { f[-> y { x[x][y] }] }] }[-> f { -> n { -> l { -> x { -> f { -> x { f[-> y { x[x][y] }] }[-> x { f[-> y { x[x][y] }] }] }[-> f { -> l { -> x { -> g { -> b { b }[-> p { p[-> x { -> y { x } }] }[l]][x][-> y { g[f[-> l { -> p { p[-> x { -> y { y } }] }[-> p { p[-> x { -> y { y } }] }[l]] }[l]][x][g]][-> l { -> p { p[-> x { -> y { x } }] }[-> p { p[-> x { -> y { y } }] }[l]] }[l]][y] }] } } } }][l][-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }[-> x { -> y { -> f { f[x][y] } } }[-> x { -> y { x } }][-> x { -> y { x } }]][x]][-> l { -> x { -> x { -> y { -> f { f[x][y] } } }[-> x { -> y { y } }][-> x { -> y { -> f { f[x][y] } } }[x][l]] } }] } }[-> b { b }[-> m { -> n { -> n { n[-> x { -> x { -> y { y } } }][-> x { -> y { x } }] }[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]] } }[n][-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }[-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]]][-> x { -> y { -> f { f[x][y] } } }[-> x { -> y { x } }][-> x { -> y { x } }]][-> x { f[-> f { -> x { f[-> y { x[x][y] }] }[-> x { f[-> y { x[x][y] }] }] }[-> f { -> m { -> n { -> b { b }[-> m { -> n { -> n { n[-> x { -> x { -> y { y } } }][-> x { -> y { x } }] }[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]] } }[n][m]][-> x { -> n { -> p { -> x { p[n[p][x]] } } }[f[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]][n]][x] }][-> p { -> x { x } }] } } }][n][-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]][x] }]][-> f { -> x { f[-> y { x[x][y] }] }[-> x { f[-> y { x[x][y] }] }] }[-> f { -> m { -> n { -> b { b }[-> m { -> n { -> n { n[-> x { -> x { -> y { y } } }][-> x { -> y { x } }] }[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]] } }[n][m]][-> x { f[-> m { -> n { n[-> n { -> p { p[-> x { -> y { x } }] }[n[-> p { -> x { -> y { -> f { f[x][y] } } }[-> p { p[-> x { -> y { y } }] }[p]][-> n { -> p { -> x { p[n[p][x]] } } }[-> p { p[-> x { -> y { y } }] }[p]]] }][-> x { -> y { -> f { f[x][y] } } }[-> p { -> x { x } }][-> p { -> x { x } }]]] }][m] } }[m][n]][n][x] }][m] } } }][n][-> m { -> n { n[-> m { -> n { n[-> n { -> p { -> x { p[n[p][x]] } } }][m] } }[m]][-> p { -> x { x } }] } }[-> p { -> x { p[p[x]] } }][-> p { -> x { p[p[p[p[p[x]]]]] } }]]] } }][n]]]] }]
+
+FIRST = -> l { LEFT[RIGHT[l]] }
+IF = -> b { b }
+LEFT = -> p { p[-> x { -> y { x } } ] }
+RIGHT = -> p { p[-> x { -> y { y } } ] }
+IS_EMPTY = LEFT
+REST = -> l { RIGHT[RIGHT[l]] }
+
+def to_integer(proc)
+ proc[-> n { n + 1 }][0]
+end
+
+def to_boolean(proc)
+ IF[proc][true][false]
+end
+
+def to_array(proc)
+ array = []
+
+ until to_boolean(IS_EMPTY[proc])
+ array.push(FIRST[proc])
+ proc = REST[proc]
+ end
+
+ array
+end
+
+def to_char(c)
+ '0123456789BFiuz'.slice(to_integer(c))
+end
+
+def to_string(s)
+ to_array(s).map { |c| to_char(c) }.join
+end
+
+answer = to_array(solution).map do |p|
+ to_string(p)
+end
+
+answer_ary = answer.to_a
+# puts answer_ary
diff --git a/benchmark/app_mandelbrot.rb b/benchmark/app_mandelbrot.rb
new file mode 100644
index 0000000000..801b75e8e2
--- /dev/null
+++ b/benchmark/app_mandelbrot.rb
@@ -0,0 +1,23 @@
+require 'complex'
+
+def mandelbrot? z
+ i = 0
+ while i<100
+ i += 1
+ z = z * z
+ return false if z.abs > 2
+ end
+ true
+end
+
+ary = []
+
+(0..1000).each{|dx|
+ (0..1000).each{|dy|
+ x = dx / 50.0
+ y = dy / 50.0
+ c = Complex(x, y)
+ ary << c if mandelbrot?(c)
+ }
+}
+
diff --git a/benchmark/app_pentomino.rb b/benchmark/app_pentomino.rb
new file mode 100644
index 0000000000..47be7b203f
--- /dev/null
+++ b/benchmark/app_pentomino.rb
@@ -0,0 +1,130 @@
+#!/usr/local/bin/ruby
+# This program is contributed by Shin Nishiyama
+
+
+# modified by K.Sasada
+
+NP = 5
+ROW = 8 + NP
+COL = 8
+
+$p = []
+$b = []
+$no = 0
+
+def piece(n, a, nb)
+ nb.each{|x|
+ a[n] = x
+ if n == NP-1
+ $p << [a.sort]
+ else
+ nbc=nb.dup
+ [-ROW, -1, 1, ROW].each{|d|
+ if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
+ nbc << x+d
+ end
+ }
+ nbc.delete x
+ piece(n+1,a[0..n],nbc)
+ end
+ }
+end
+
+def kikaku(a)
+ a.collect {|x| x - a[0]}
+end
+def ud(a)
+ kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
+end
+def rl(a)
+ kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
+end
+def xy(a)
+ kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
+end
+
+def mkpieces
+ piece(0,[],[0])
+ $p.each do |a|
+ a0 = a[0]
+ a[1] = ud(a0)
+ a[2] = rl(a0)
+ a[3] = ud(rl(a0))
+ a[4] = xy(a0)
+ a[5] = ud(xy(a0))
+ a[6] = rl(xy(a0))
+ a[7] = ud(rl(xy(a0)))
+ a.sort!
+ a.uniq!
+ end
+ $p.uniq!.sort! {|x,y| x[0] <=> y[0] }
+end
+
+def mkboard
+ (0...ROW*COL).each{|i|
+ if i % ROW >= ROW-NP
+ $b[i] = -2
+ else
+ $b[i] = -1
+ end
+ $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
+ }
+end
+
+def pboard
+ return # skip print
+ print "No. #$no\n"
+ (0...COL).each{|i|
+ print "|"
+ (0...ROW-NP).each{|j|
+ x = $b[i*ROW+j]
+ if x < 0
+ print "..|"
+ else
+ printf "%2d|",x+1
+ end
+ }
+ print "\n"
+ }
+ print "\n"
+end
+
+$pnum=[]
+def setpiece(a,pos)
+ if a.length == $p.length then
+ $no += 1
+ pboard
+ return
+ end
+ while $b[pos] != -1
+ pos += 1
+ end
+ ($pnum - a).each do |i|
+ $p[i].each do |x|
+ f = 0
+ x.each{|s|
+ if $b[pos+s] != -1
+ f=1
+ break
+ end
+ }
+ if f == 0 then
+ x.each{|s|
+ $b[pos+s] = i
+ }
+ a << i
+ setpiece(a.dup, pos)
+ a.pop
+ x.each{|s|
+ $b[pos+s] = -1
+ }
+ end
+ end
+ end
+end
+
+mkpieces
+mkboard
+$p[4] = [$p[4][0]]
+$pnum = (0...$p.length).to_a
+setpiece([],0)
diff --git a/benchmark/app_raise.rb b/benchmark/app_raise.rb
new file mode 100644
index 0000000000..5db8f95d50
--- /dev/null
+++ b/benchmark/app_raise.rb
@@ -0,0 +1,8 @@
+i = 0
+while i<300000
+ i += 1
+ begin
+ raise
+ rescue
+ end
+end
diff --git a/benchmark/app_strconcat.rb b/benchmark/app_strconcat.rb
new file mode 100644
index 0000000000..7eed7c1aed
--- /dev/null
+++ b/benchmark/app_strconcat.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<2_000_000
+ "#{1+1} #{1+1} #{1+1}"
+ i += 1
+end
diff --git a/benchmark/app_tak.rb b/benchmark/app_tak.rb
new file mode 100644
index 0000000000..efe5380f4e
--- /dev/null
+++ b/benchmark/app_tak.rb
@@ -0,0 +1,13 @@
+
+def tak x, y, z
+ unless y < x
+ z
+ else
+ tak( tak(x-1, y, z),
+ tak(y-1, z, x),
+ tak(z-1, x, y))
+ end
+end
+
+tak(18, 9, 0)
+
diff --git a/benchmark/app_tarai.rb b/benchmark/app_tarai.rb
new file mode 100644
index 0000000000..4c146f5ccf
--- /dev/null
+++ b/benchmark/app_tarai.rb
@@ -0,0 +1,10 @@
+def tarai( x, y, z )
+ if x <= y
+ then y
+ else tarai(tarai(x-1, y, z),
+ tarai(y-1, z, x),
+ tarai(z-1, x, y))
+ end
+end
+
+tarai(12, 6, 0)
diff --git a/benchmark/app_uri.rb b/benchmark/app_uri.rb
new file mode 100644
index 0000000000..586edfd5dc
--- /dev/null
+++ b/benchmark/app_uri.rb
@@ -0,0 +1,8 @@
+require 'uri'
+
+100_000.times{
+ uri = URI.parse('http://www.ruby-lang.org')
+ uri.scheme
+ uri.host
+ uri.port
+}
diff --git a/benchmark/array_flatten.yml b/benchmark/array_flatten.yml
new file mode 100644
index 0000000000..88ef544ba0
--- /dev/null
+++ b/benchmark/array_flatten.yml
@@ -0,0 +1,19 @@
+prelude: |
+ small_flat_ary = 5.times.to_a
+ large_flat_ary = 100.times.to_a
+ small_pairs_ary = [[1, 2]] * 5
+ large_pairs_ary = [[1, 2]] * 100
+ mostly_flat_ary = 100.times.to_a.push([101, 102])
+
+benchmark:
+ small_flat_ary.flatten: small_flat_ary.flatten
+ small_flat_ary.flatten!: small_flat_ary.flatten!
+ large_flat_ary.flatten: large_flat_ary.flatten
+ large_flat_ary.flatten!: large_flat_ary.flatten!
+ small_pairs_ary.flatten: small_pairs_ary.flatten
+ small_pairs_ary.flatten!: small_pairs_ary.dup.flatten!
+ large_pairs_ary.flatten: large_pairs_ary.flatten
+ large_pairs_ary.flatten!: large_pairs_ary.dup.flatten!
+ mostly_flat_ary.flatten: mostly_flat_ary.flatten
+ mostly_flat_ary.flatten!: mostly_flat_ary.dup.flatten!
+loop_count: 10000
diff --git a/benchmark/array_intersection.yml b/benchmark/array_intersection.yml
new file mode 100644
index 0000000000..26705323fd
--- /dev/null
+++ b/benchmark/array_intersection.yml
@@ -0,0 +1,14 @@
+prelude: |
+ small1 = [1, 2, 3]
+ small2 = [1, 2, 3, 4, 5]
+ small3 = [2, 3, 4, 5]
+ small4 = [2]
+ big1 = [1, 2, 3, 4] * 64
+ big2 = [1, 2, 3] * 64
+ big3 = [1, 2] * 64
+
+benchmark:
+ small-&: small1 & small2 & small3 & small4
+ small-intersection: small1.intersection(small2, small3, small4)
+ big-&: big1 & big2 & big3
+ big-intersection: big1.intersection(big2, big3)
diff --git a/benchmark/array_max_float.yml b/benchmark/array_max_float.yml
new file mode 100644
index 0000000000..ace1ae2e14
--- /dev/null
+++ b/benchmark/array_max_float.yml
@@ -0,0 +1,30 @@
+prelude: |
+ ary2 = 2.times.map(&:to_f).shuffle
+ ary10 = 10.times.map(&:to_f).shuffle
+ ary100 = 100.times.map(&:to_f).shuffle
+ ary500 = 500.times.map(&:to_f).shuffle
+ ary1000 = 1000.times.map(&:to_f).shuffle
+ ary2000 = 2500.times.map(&:to_f).shuffle
+ ary3000 = 2500.times.map(&:to_f).shuffle
+ ary5000 = 5000.times.map(&:to_f).shuffle
+ ary10000 = 10000.times.map(&:to_f).shuffle
+ ary20000 = 20000.times.map(&:to_f).shuffle
+ ary50000 = 50000.times.map(&:to_f).shuffle
+ ary100000 = 100000.times.map(&:to_f).shuffle
+
+benchmark:
+ ary2.max: ary2.max
+ ary10.max: ary10.max
+ ary100.max: ary100.max
+ ary500.max: ary500.max
+ ary1000.max: ary1000.max
+ ary2000.max: ary2000.max
+ ary3000.max: ary3000.max
+ ary5000.max: ary5000.max
+ ary10000.max: ary10000.max
+ ary20000.max: ary20000.max
+ ary50000.max: ary50000.max
+ ary100000.max: ary100000.max
+
+loop_count: 10000
+
diff --git a/benchmark/array_max_int.yml b/benchmark/array_max_int.yml
new file mode 100644
index 0000000000..acd83684d0
--- /dev/null
+++ b/benchmark/array_max_int.yml
@@ -0,0 +1,31 @@
+prelude: |
+ ary2 = 2.times.to_a.shuffle
+ ary10 = 10.times.to_a.shuffle
+ ary100 = 100.times.to_a.shuffle
+ ary500 = 500.times.to_a.shuffle
+ ary1000 = 1000.times.to_a.shuffle
+ ary2000 = 2500.times.to_a.shuffle
+ ary3000 = 2500.times.to_a.shuffle
+ ary5000 = 5000.times.to_a.shuffle
+ ary10000 = 10000.times.to_a.shuffle
+ ary20000 = 20000.times.to_a.shuffle
+ ary50000 = 50000.times.to_a.shuffle
+ ary100000 = 100000.times.to_a.shuffle
+ ary1000000 = 1000000.times.to_a.shuffle
+
+benchmark:
+ ary2.max: ary2.max
+ ary10.max: ary10.max
+ ary100.max: ary100.max
+ ary500.max: ary500.max
+ ary1000.max: ary1000.max
+ ary2000.max: ary2000.max
+ ary3000.max: ary3000.max
+ ary5000.max: ary5000.max
+ ary10000.max: ary10000.max
+ ary20000.max: ary20000.max
+ ary50000.max: ary50000.max
+ ary100000.max: ary100000.max
+ ary1000000.max: ary1000000.max
+
+loop_count: 10000
diff --git a/benchmark/array_max_str.yml b/benchmark/array_max_str.yml
new file mode 100644
index 0000000000..2aeed010f2
--- /dev/null
+++ b/benchmark/array_max_str.yml
@@ -0,0 +1,30 @@
+prelude: |
+ ary2 = 2.times.map(&:to_s).shuffle
+ ary10 = 10.times.map(&:to_s).shuffle
+ ary100 = 100.times.map(&:to_s).shuffle
+ ary500 = 500.times.map(&:to_s).shuffle
+ ary1000 = 1000.times.map(&:to_s).shuffle
+ ary2000 = 2500.times.map(&:to_s).shuffle
+ ary3000 = 2500.times.map(&:to_s).shuffle
+ ary5000 = 5000.times.map(&:to_s).shuffle
+ ary10000 = 10000.times.map(&:to_s).shuffle
+ ary20000 = 20000.times.map(&:to_s).shuffle
+ ary50000 = 50000.times.map(&:to_s).shuffle
+ ary100000 = 100000.times.map(&:to_s).shuffle
+
+benchmark:
+ ary2.max: ary2.max
+ ary10.max: ary10.max
+ ary100.max: ary100.max
+ ary500.max: ary500.max
+ ary1000.max: ary1000.max
+ ary2000.max: ary2000.max
+ ary3000.max: ary3000.max
+ ary5000.max: ary5000.max
+ ary10000.max: ary10000.max
+ ary20000.max: ary20000.max
+ ary50000.max: ary50000.max
+ ary100000.max: ary100000.max
+
+loop_count: 10000
+
diff --git a/benchmark/array_min.yml b/benchmark/array_min.yml
new file mode 100644
index 0000000000..53e5072b14
--- /dev/null
+++ b/benchmark/array_min.yml
@@ -0,0 +1,31 @@
+prelude: |
+ ary2 = 2.times.to_a.shuffle
+ ary10 = 10.times.to_a.shuffle
+ ary100 = 100.times.to_a.shuffle
+ ary500 = 500.times.to_a.shuffle
+ ary1000 = 1000.times.to_a.shuffle
+ ary2000 = 2500.times.to_a.shuffle
+ ary3000 = 2500.times.to_a.shuffle
+ ary5000 = 5000.times.to_a.shuffle
+ ary10000 = 10000.times.to_a.shuffle
+ ary20000 = 20000.times.to_a.shuffle
+ ary50000 = 50000.times.to_a.shuffle
+ ary100000 = 100000.times.to_a.shuffle
+ ary1000000 = 1000000.times.to_a.shuffle
+
+benchmark:
+ ary2.min: ary2.min
+ ary10.min: ary10.min
+ ary100.min: ary100.min
+ ary500.min: ary500.min
+ ary1000.min: ary1000.min
+ ary2000.min: ary2000.min
+ ary3000.min: ary3000.min
+ ary5000.min: ary5000.min
+ ary10000.min: ary10000.min
+ ary20000.min: ary20000.min
+ ary50000.min: ary50000.min
+ ary100000.min: ary100000.min
+ ary1000000.min: ary1000000.min
+
+loop_count: 10000
diff --git a/benchmark/array_sample.yml b/benchmark/array_sample.yml
new file mode 100644
index 0000000000..1cd2b34794
--- /dev/null
+++ b/benchmark/array_sample.yml
@@ -0,0 +1,4 @@
+prelude: ary = (1..10_000).to_a
+benchmark:
+ - ary.sample
+ - ary.sample(2)
diff --git a/benchmark/array_sample_100k_10.rb b/benchmark/array_sample_100k_10.rb
new file mode 100644
index 0000000000..5f41ecc32b
--- /dev/null
+++ b/benchmark/array_sample_100k_10.rb
@@ -0,0 +1,2 @@
+arr = [*0...100000]
+10_000.times {arr.sample 10}
diff --git a/benchmark/array_sample_100k_11.rb b/benchmark/array_sample_100k_11.rb
new file mode 100644
index 0000000000..18b1715319
--- /dev/null
+++ b/benchmark/array_sample_100k_11.rb
@@ -0,0 +1,2 @@
+arr = [*0...100000]
+10_000.times {arr.sample 11}
diff --git a/benchmark/array_sample_100k__100.rb b/benchmark/array_sample_100k__100.rb
new file mode 100644
index 0000000000..22863afe89
--- /dev/null
+++ b/benchmark/array_sample_100k__100.rb
@@ -0,0 +1,2 @@
+arr = [*0...100000]
+10_000.times {arr.sample 100}
diff --git a/benchmark/array_sample_100k__1k.rb b/benchmark/array_sample_100k__1k.rb
new file mode 100644
index 0000000000..4cd79e6c67
--- /dev/null
+++ b/benchmark/array_sample_100k__1k.rb
@@ -0,0 +1,2 @@
+arr = [*0...100000]
+10_000.times {arr.sample 1000}
diff --git a/benchmark/array_sample_100k__6k.rb b/benchmark/array_sample_100k__6k.rb
new file mode 100644
index 0000000000..b3d264249e
--- /dev/null
+++ b/benchmark/array_sample_100k__6k.rb
@@ -0,0 +1,2 @@
+arr = [*0...100000]
+10_000.times {arr.sample 6000}
diff --git a/benchmark/array_sample_100k___10k.rb b/benchmark/array_sample_100k___10k.rb
new file mode 100644
index 0000000000..5dd55ec058
--- /dev/null
+++ b/benchmark/array_sample_100k___10k.rb
@@ -0,0 +1,2 @@
+arr = [*0...100000]
+10_000.times {arr.sample 10_000}
diff --git a/benchmark/array_sample_100k___50k.rb b/benchmark/array_sample_100k___50k.rb
new file mode 100644
index 0000000000..1506732c3c
--- /dev/null
+++ b/benchmark/array_sample_100k___50k.rb
@@ -0,0 +1,2 @@
+arr = [*0...100000]
+10_000.times {arr.sample 50_000}
diff --git a/benchmark/array_shift.rb b/benchmark/array_shift.rb
new file mode 100644
index 0000000000..798bb9e3f4
--- /dev/null
+++ b/benchmark/array_shift.rb
@@ -0,0 +1,14 @@
+require 'benchmark'
+
+Benchmark.bm do |x|
+ [10_000,1_000_000,100_000_000].each do |n|
+ ary = Array.new(n,0)
+ GC.start
+ x.report("#{n}:shift"){ ary.shift }
+ (0..4).each do |i|
+ ary = Array.new(n,0)
+ GC.start
+ x.report("#{n}:shift(#{i})"){ ary.shift(i) }
+ end
+ end
+end
diff --git a/benchmark/array_small_and.rb b/benchmark/array_small_and.rb
new file mode 100644
index 0000000000..e53a6edae6
--- /dev/null
+++ b/benchmark/array_small_and.rb
@@ -0,0 +1,17 @@
+MIN_SIZE = ENV.fetch('SMALL_ARRAY_MIN', 0).to_i
+MAX_SIZE = ENV.fetch('SMALL_ARRAY_MAX', 16).to_i
+ITERATIONS = ENV.fetch('SMALL_ARRAY_ITERATIONS', 100).to_i
+
+ARRAYS = (MIN_SIZE..MAX_SIZE).map do |size1|
+ (MIN_SIZE..MAX_SIZE).map do |size2|
+ [Array.new(size1) { rand(MAX_SIZE) }, Array.new(size2) { rand(MAX_SIZE) }]
+ end
+end
+
+ITERATIONS.times do
+ ARRAYS.each do |group|
+ group.each do |arr1, arr2|
+ arr1 & arr2
+ end
+ end
+end
diff --git a/benchmark/array_small_diff.rb b/benchmark/array_small_diff.rb
new file mode 100644
index 0000000000..9661ee48db
--- /dev/null
+++ b/benchmark/array_small_diff.rb
@@ -0,0 +1,17 @@
+MIN_SIZE = ENV.fetch('SMALL_ARRAY_MIN', 0).to_i
+MAX_SIZE = ENV.fetch('SMALL_ARRAY_MAX', 16).to_i
+ITERATIONS = ENV.fetch('SMALL_ARRAY_ITERATIONS', 100).to_i
+
+ARRAYS = (MIN_SIZE..MAX_SIZE).map do |size1|
+ (MIN_SIZE..MAX_SIZE).map do |size2|
+ [Array.new(size1) { rand(MAX_SIZE) }, Array.new(size2) { rand(MAX_SIZE) }]
+ end
+end
+
+ITERATIONS.times do
+ ARRAYS.each do |group|
+ group.each do |arr1, arr2|
+ arr1 - arr2
+ end
+ end
+end
diff --git a/benchmark/array_small_or.rb b/benchmark/array_small_or.rb
new file mode 100644
index 0000000000..c58b5fd1ff
--- /dev/null
+++ b/benchmark/array_small_or.rb
@@ -0,0 +1,17 @@
+MIN_SIZE = ENV.fetch('SMALL_ARRAY_MIN', 0).to_i
+MAX_SIZE = ENV.fetch('SMALL_ARRAY_MAX', 16).to_i
+ITERATIONS = ENV.fetch('SMALL_ARRAY_ITERATIONS', 100).to_i
+
+ARRAYS = (MIN_SIZE..MAX_SIZE).map do |size1|
+ (MIN_SIZE..MAX_SIZE).map do |size2|
+ [Array.new(size1) { rand(MAX_SIZE) }, Array.new(size2) { rand(MAX_SIZE) }]
+ end
+end
+
+ITERATIONS.times do
+ ARRAYS.each do |group|
+ group.each do |arr1, arr2|
+ arr1 | arr2
+ end
+ end
+end
diff --git a/benchmark/array_sort_block.rb b/benchmark/array_sort_block.rb
new file mode 100644
index 0000000000..3579786056
--- /dev/null
+++ b/benchmark/array_sort_block.rb
@@ -0,0 +1,2 @@
+ary = Array.new(1000) { rand(1000) }
+10000.times { ary.sort { |a, b| a <=> b } }
diff --git a/benchmark/array_sort_float.rb b/benchmark/array_sort_float.rb
new file mode 100644
index 0000000000..9a6e2f8bd2
--- /dev/null
+++ b/benchmark/array_sort_float.rb
@@ -0,0 +1,2 @@
+arr = Array.new(1000) { rand }
+10000.times { arr.sort }
diff --git a/benchmark/array_sort_int.yml b/benchmark/array_sort_int.yml
new file mode 100644
index 0000000000..7b9027ebf7
--- /dev/null
+++ b/benchmark/array_sort_int.yml
@@ -0,0 +1,15 @@
+prelude: |
+ ary2 = 2.times.to_a.shuffle
+ ary10 = 10.times.to_a.shuffle
+ ary100 = 100.times.to_a.shuffle
+ ary1000 = 1000.times.to_a.shuffle
+ ary10000 = 10000.times.to_a.shuffle
+
+benchmark:
+ ary2.sort: ary2.sort
+ ary10.sort: ary10.sort
+ ary100.sort: ary100.sort
+ ary1000.sort: ary1000.sort
+ ary10000.sort: ary10000.sort
+
+loop_count: 10000
diff --git a/benchmark/array_values_at_int.rb b/benchmark/array_values_at_int.rb
new file mode 100644
index 0000000000..6cb394cb9f
--- /dev/null
+++ b/benchmark/array_values_at_int.rb
@@ -0,0 +1,2 @@
+ary = Array.new(10000) {|i| i}
+100000.times { ary.values_at(500) }
diff --git a/benchmark/array_values_at_range.rb b/benchmark/array_values_at_range.rb
new file mode 100644
index 0000000000..5b53806d1c
--- /dev/null
+++ b/benchmark/array_values_at_range.rb
@@ -0,0 +1,2 @@
+ary = Array.new(10000) {|i| i}
+100000.times { ary.values_at(1..2000) }
diff --git a/benchmark/attr_accessor.yml b/benchmark/attr_accessor.yml
new file mode 100644
index 0000000000..82134cdf9b
--- /dev/null
+++ b/benchmark/attr_accessor.yml
@@ -0,0 +1,29 @@
+prelude: |
+ class C
+ attr_accessor :x
+ def initialize
+ @x = nil
+ end
+ class_eval <<-END
+ def ar
+ #{'x;'*256}
+ end
+ def aw
+ #{'self.x = nil;'*256}
+ end
+ def arm
+ m = method(:x)
+ #{'m.call;'*256}
+ end
+ def awm
+ m = method(:x=)
+ #{'m.call(nil);'*256}
+ end
+ END
+ end
+ obj = C.new
+benchmark:
+ attr_reader: "obj.ar"
+ attr_writer: "obj.aw"
+ attr_reader_method: "obj.arm"
+ attr_writer_method: "obj.awm"
diff --git a/benchmark/bighash.rb b/benchmark/bighash.rb
new file mode 100644
index 0000000000..e2ad5a5c94
--- /dev/null
+++ b/benchmark/bighash.rb
@@ -0,0 +1 @@
+h = {}; 5000000.times {|n| h[n] = n }
diff --git a/benchmark/buffer_each.yml b/benchmark/buffer_each.yml
new file mode 100644
index 0000000000..417941104e
--- /dev/null
+++ b/benchmark/buffer_each.yml
@@ -0,0 +1,27 @@
+prelude: |
+ # frozen_string_literal: true
+ Warning[:experimental] = false
+ string = "The quick brown fox jumped over the lazy dog."
+ array = string.bytes
+ buffer = IO::Buffer.for(string)
+benchmark:
+ string.each_byte: |
+ upcased = String.new
+ string.each_byte do |byte|
+ upcased << (byte ^ 32)
+ end
+ array.each: |
+ upcased = String.new
+ array.each do |byte|
+ upcased << (byte ^ 32)
+ end
+ buffer.each: |
+ upcased = String.new
+ buffer.each(:U8) do |offset, byte|
+ upcased << (byte ^ 32)
+ end
+ buffer.each_byte: |
+ upcased = String.new
+ buffer.each_byte do |byte|
+ upcased << (byte ^ 32)
+ end
diff --git a/benchmark/buffer_get.yml b/benchmark/buffer_get.yml
new file mode 100644
index 0000000000..9e1f99d64e
--- /dev/null
+++ b/benchmark/buffer_get.yml
@@ -0,0 +1,25 @@
+prelude: |
+ # frozen_string_literal: true
+ Warning[:experimental] = false
+ string = "The quick brown fox jumped over the lazy dog."
+ buffer = IO::Buffer.for(string)
+ format = [:U32, :U32, :U32, :U32]
+benchmark:
+ string.unpack1: |
+ [
+ string.unpack1("N"),
+ string.unpack1("N", offset: 4),
+ string.unpack1("N", offset: 8),
+ string.unpack1("N", offset: 12),
+ ]
+ buffer.get_value: |
+ [
+ buffer.get_value(:U32, 0),
+ buffer.get_value(:U32, 4),
+ buffer.get_value(:U32, 8),
+ buffer.get_value(:U32, 12),
+ ]
+ buffer.get_values: |
+ buffer.get_values(format, 0)
+ string.unpack: |
+ string.unpack("NNNN")
diff --git a/benchmark/cgi_escape_html.yml b/benchmark/cgi_escape_html.yml
new file mode 100644
index 0000000000..655be9d7d8
--- /dev/null
+++ b/benchmark/cgi_escape_html.yml
@@ -0,0 +1,31 @@
+prelude: |
+ # frozen_string_literal: true
+ require 'cgi/escape'
+benchmark:
+ - script: CGI.escapeHTML("")
+ loop_count: 20000000
+ - script: CGI.escapeHTML("abcde")
+ loop_count: 20000000
+ - script: CGI.escapeHTML("abcd<")
+ loop_count: 20000000
+ - script: CGI.escapeHTML("'&\"<>")
+ loop_count: 5000000
+ - prelude: long_no_escape = "abcde" * 300
+ script: CGI.escapeHTML(long_no_escape)
+ loop_count: 1000000
+ - prelude: long_all_escape = "'&\"<>" * 10
+ script: CGI.escapeHTML(long_all_escape)
+ loop_count: 1000000
+ - prelude: | # http://example.com/
+ example_html = <<~HTML
+ <body>
+ <div>
+ <h1>Example Domain</h1>
+ <p>This domain is established to be used for illustrative examples in documents. You may use this
+ domain in examples without prior coordination or asking for permission.</p>
+ <p><a href="http://www.iana.org/domains/example">More information...</a></p>
+ </div>
+ </body>
+ HTML
+ script: CGI.escapeHTML(example_html)
+ loop_count: 1000000
diff --git a/benchmark/complex_float_add.yml b/benchmark/complex_float_add.yml
new file mode 100644
index 0000000000..d0150c5e5b
--- /dev/null
+++ b/benchmark/complex_float_add.yml
@@ -0,0 +1,7 @@
+prelude: |
+ max, min = 1000.0, -1000.0
+ a = Complex(rand(max)+min, rand(max)+min)
+ b = Complex(rand(max)+min, rand(max)+min)
+benchmark:
+ complex_float_add: c = a + b
+loop_count: 1000000
diff --git a/benchmark/complex_float_div.yml b/benchmark/complex_float_div.yml
new file mode 100644
index 0000000000..b9f5e1d51c
--- /dev/null
+++ b/benchmark/complex_float_div.yml
@@ -0,0 +1,7 @@
+prelude: |
+ max, min = 1000.0, -1000.0
+ a = Complex(rand(max)+min, rand(max)+min)
+ b = Complex(rand(max)+min, rand(max)+min)
+benchmark:
+ complex_float_div: c = a / b
+loop_count: 1000000
diff --git a/benchmark/complex_float_mul.yml b/benchmark/complex_float_mul.yml
new file mode 100644
index 0000000000..59b096a6dc
--- /dev/null
+++ b/benchmark/complex_float_mul.yml
@@ -0,0 +1,7 @@
+prelude: |
+ max, min = 1000.0, -1000.0
+ a = Complex(rand(max)+min, rand(max)+min)
+ b = Complex(rand(max)+min, rand(max)+min)
+benchmark:
+ complex_float_mul: c = a * b
+loop_count: 1000000
diff --git a/benchmark/complex_float_new.yml b/benchmark/complex_float_new.yml
new file mode 100644
index 0000000000..6fcde3125b
--- /dev/null
+++ b/benchmark/complex_float_new.yml
@@ -0,0 +1,7 @@
+prelude: |
+ max, min = 1000.0, -1000.0
+ a = Complex(rand(max)+min, rand(max)+min)
+ b = Complex(rand(max)+min, rand(max)+min)
+benchmark:
+ complex_float_new: c = Complex(a, b)
+loop_count: 1000000
diff --git a/benchmark/complex_float_power.yml b/benchmark/complex_float_power.yml
new file mode 100644
index 0000000000..c40a31ab55
--- /dev/null
+++ b/benchmark/complex_float_power.yml
@@ -0,0 +1,7 @@
+prelude: |
+ max, min = 1000.0, -1000.0
+ a = Complex(rand(max)+min, rand(max)+min)
+ b = Complex(rand(max)+min, rand(max)+min)
+benchmark:
+ complex_float_power: c = a ** b
+loop_count: 1000000
diff --git a/benchmark/complex_float_sub.yml b/benchmark/complex_float_sub.yml
new file mode 100644
index 0000000000..3fafe7cdbe
--- /dev/null
+++ b/benchmark/complex_float_sub.yml
@@ -0,0 +1,7 @@
+prelude: |
+ max, min = 1000.0, -1000.0
+ a = Complex(rand(max)+min, rand(max)+min)
+ b = Complex(rand(max)+min, rand(max)+min)
+benchmark:
+ complex_float_sub: c = a - b
+loop_count: 1000000
diff --git a/benchmark/constant_invalidation.rb b/benchmark/constant_invalidation.rb
new file mode 100644
index 0000000000..a95ec6f37e
--- /dev/null
+++ b/benchmark/constant_invalidation.rb
@@ -0,0 +1,22 @@
+$VERBOSE = nil
+
+CONSTANT1 = 1
+CONSTANT2 = 1
+CONSTANT3 = 1
+CONSTANT4 = 1
+CONSTANT5 = 1
+
+def constants
+ [CONSTANT1, CONSTANT2, CONSTANT3, CONSTANT4, CONSTANT5]
+end
+
+500_000.times do
+ constants
+
+ # With previous behavior, this would cause all of the constant caches
+ # associated with the constant lookups listed above to invalidate, meaning
+ # they would all have to be fetched again. With current behavior, it only
+ # invalidates when a name matches, so the following constant set shouldn't
+ # impact the constant lookups listed above.
+ INVALIDATE = true
+end
diff --git a/benchmark/dir_empty_p.rb b/benchmark/dir_empty_p.rb
new file mode 100644
index 0000000000..8329c757cf
--- /dev/null
+++ b/benchmark/dir_empty_p.rb
@@ -0,0 +1,5 @@
+require 'tmpdir'
+max = 100_000
+Dir.mktmpdir('bm_dir_empty_p') do |dir|
+ max.times { Dir.empty?(dir) }
+end
diff --git a/benchmark/enum_lazy_flat_map.yml b/benchmark/enum_lazy_flat_map.yml
new file mode 100644
index 0000000000..0ee390a441
--- /dev/null
+++ b/benchmark/enum_lazy_flat_map.yml
@@ -0,0 +1,16 @@
+prelude: |
+ num = (1..).lazy.take(100)
+ ary2 = [[1,2]].cycle.lazy.take(10)
+ ary10 = [[*1..10]].cycle.lazy.take(10)
+ ary20 = [[*1..20]].cycle.lazy.take(10)
+ ary50 = [[*1..50]].cycle.lazy.take(10)
+ ary100 = [[*1..100]].cycle.lazy.take(10)
+
+benchmark:
+ num3: num.flat_map {|x| x}.take(3).to_a
+ num10: num.flat_map {|x| x}.take(3).to_a
+ ary2: ary2.flat_map {|x| x}.take(3).to_a
+ ary10: ary10.flat_map {|x| x}.take(3).to_a
+ ary20: ary20.flat_map {|x| x}.take(3).to_a
+ ary50: ary50.flat_map {|x| x}.take(3).to_a
+ ary100: ary100.flat_map {|x| x}.take(3).to_a
diff --git a/benchmark/enum_lazy_grep_v_100.rb b/benchmark/enum_lazy_grep_v_100.rb
new file mode 100644
index 0000000000..8832392e65
--- /dev/null
+++ b/benchmark/enum_lazy_grep_v_100.rb
@@ -0,0 +1,4 @@
+grep_data = (1..10).to_a * 1000
+N = 100
+enum = grep_data.lazy.grep_v(->(i){i == 0}).grep_v(->(i){i == 0})
+N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_grep_v_20.rb b/benchmark/enum_lazy_grep_v_20.rb
new file mode 100644
index 0000000000..329509fa8f
--- /dev/null
+++ b/benchmark/enum_lazy_grep_v_20.rb
@@ -0,0 +1,4 @@
+grep_data = (1..10).to_a * 1000
+N = 100
+enum = grep_data.lazy.grep_v(->(i){i > 2}).grep_v(->(i){i > 2})
+N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_grep_v_50.rb b/benchmark/enum_lazy_grep_v_50.rb
new file mode 100644
index 0000000000..02ea4d4e71
--- /dev/null
+++ b/benchmark/enum_lazy_grep_v_50.rb
@@ -0,0 +1,4 @@
+grep_data = (1..10).to_a * 1000
+N = 100
+enum = grep_data.lazy.grep_v(->(i){i > 5}).grep_v(->(i){i > 5})
+N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_uniq_100.rb b/benchmark/enum_lazy_uniq_100.rb
new file mode 100644
index 0000000000..2e6434d9c4
--- /dev/null
+++ b/benchmark/enum_lazy_uniq_100.rb
@@ -0,0 +1,4 @@
+uniq_data = (1..10_000).to_a
+N = 100
+enum = uniq_data.lazy.uniq {|i| i % 10000}.uniq {|i| i % 10000}
+N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_uniq_20.rb b/benchmark/enum_lazy_uniq_20.rb
new file mode 100644
index 0000000000..75e6398fee
--- /dev/null
+++ b/benchmark/enum_lazy_uniq_20.rb
@@ -0,0 +1,4 @@
+uniq_data = (1..10_000).to_a
+N = 100
+enum = uniq_data.lazy.uniq {|i| i % 2000}.uniq {|i| i % 2000}
+N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_uniq_50.rb b/benchmark/enum_lazy_uniq_50.rb
new file mode 100644
index 0000000000..59a39b78ff
--- /dev/null
+++ b/benchmark/enum_lazy_uniq_50.rb
@@ -0,0 +1,4 @@
+uniq_data = (1..10_000).to_a
+N = 100
+enum = uniq_data.lazy.uniq {|i| i % 5000}.uniq {|i| i % 5000}
+N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_zip.yml b/benchmark/enum_lazy_zip.yml
new file mode 100644
index 0000000000..4566ff0261
--- /dev/null
+++ b/benchmark/enum_lazy_zip.yml
@@ -0,0 +1,22 @@
+prelude: |
+ a = (1..3).lazy
+ b = a.map {|x| x}
+
+benchmark:
+ first_ary: a.zip(["a", "b", "c"]).first
+ first_nonary: a.zip("a".."c").first
+ first_noarg: a.zip.first
+
+ take3_ary: a.zip(["a", "b", "c"]).take(3).force
+ take3_nonary: a.zip("a".."c").take(3).force
+ take3_noarg: a.zip.take(3).force
+
+ chain-first_ary: b.zip(["a", "b", "c"]).first
+ chain-first_nonary: b.zip("a".."c").first
+ chain-first_noarg: b.zip.first
+
+ chain-take3_ary: b.zip(["a", "b", "c"]).take(3).force
+ chain-take3_nonary: b.zip("a".."c").take(3).force
+ chain-take3_noarg: b.zip.take(3).force
+
+ block: a.zip("a".."c") {|x, y| [x, y]}
diff --git a/benchmark/enum_minmax.yml b/benchmark/enum_minmax.yml
new file mode 100644
index 0000000000..9d01731abb
--- /dev/null
+++ b/benchmark/enum_minmax.yml
@@ -0,0 +1,25 @@
+prelude: |
+ set2 = 2.times.to_a.shuffle.to_set
+ set10 = 10.times.to_a.shuffle.to_set
+ set100 = 100.times.to_a.shuffle.to_set
+ set1000 = 1000.times.to_a.shuffle.to_set
+ set10000 = 10000.times.to_a.shuffle.to_set
+
+benchmark:
+ set2.min: set2.min
+ set10.min: set10.min
+ set100.min: set100.min
+ set1000.min: set1000.min
+ set10000.min: set10000.min
+ set2.max: set2.max
+ set10.max: set10.max
+ set100.max: set100.max
+ set1000.max: set1000.max
+ set10000.max: set10000.max
+ set2.minmax: set2.minmax
+ set10.minmax: set10.minmax
+ set100.minmax: set100.minmax
+ set1000.minmax: set1000.minmax
+ set10000.minmax: set10000.minmax
+
+loop_count: 10000
diff --git a/benchmark/enum_sort.yml b/benchmark/enum_sort.yml
new file mode 100644
index 0000000000..6f26e748c6
--- /dev/null
+++ b/benchmark/enum_sort.yml
@@ -0,0 +1,15 @@
+prelude: |
+ set2 = 2.times.to_a.shuffle.to_set
+ set10 = 10.times.to_a.shuffle.to_set
+ set100 = 100.times.to_a.shuffle.to_set
+ set1000 = 1000.times.to_a.shuffle.to_set
+ set10000 = 10000.times.to_a.shuffle.to_set
+
+benchmark:
+ set2.sort_by: set2.sort_by { 0 }
+ set10.sort_by: set10.sort_by { 0 }
+ set100.sort_by: set100.sort_by { 0 }
+ set1000.sort_by: set1000.sort_by { 0 }
+ set10000.sort_by: set10000.sort_by { 0 }
+
+loop_count: 10000
diff --git a/benchmark/enum_tally.yml b/benchmark/enum_tally.yml
new file mode 100644
index 0000000000..edd2e040a0
--- /dev/null
+++ b/benchmark/enum_tally.yml
@@ -0,0 +1,4 @@
+prelude: |
+ list = ("aaa".."zzz").to_a*10
+benchmark:
+ tally: list.tally
diff --git a/benchmark/erb_escape_html.yml b/benchmark/erb_escape_html.yml
new file mode 100644
index 0000000000..ca28d756e7
--- /dev/null
+++ b/benchmark/erb_escape_html.yml
@@ -0,0 +1,31 @@
+prelude: |
+ # frozen_string_literal: true
+ require 'erb'
+benchmark:
+ - script: ERB::Util.html_escape("")
+ loop_count: 20000000
+ - script: ERB::Util.html_escape("abcde")
+ loop_count: 20000000
+ - script: ERB::Util.html_escape("abcd<")
+ loop_count: 20000000
+ - script: ERB::Util.html_escape("'&\"<>")
+ loop_count: 5000000
+ - prelude: long_no_escape = "abcde" * 300
+ script: ERB::Util.html_escape(long_no_escape)
+ loop_count: 1000000
+ - prelude: long_all_escape = "'&\"<>" * 10
+ script: ERB::Util.html_escape(long_all_escape)
+ loop_count: 1000000
+ - prelude: | # http://example.com/
+ example_html = <<~HTML
+ <body>
+ <div>
+ <h1>Example Domain</h1>
+ <p>This domain is established to be used for illustrative examples in documents. You may use this
+ domain in examples without prior coordination or asking for permission.</p>
+ <p><a href="http://www.iana.org/domains/example">More information...</a></p>
+ </div>
+ </body>
+ HTML
+ script: ERB::Util.html_escape(example_html)
+ loop_count: 1000000
diff --git a/benchmark/erb_render.yml b/benchmark/erb_render.yml
new file mode 100644
index 0000000000..15f6c3880b
--- /dev/null
+++ b/benchmark/erb_render.yml
@@ -0,0 +1,24 @@
+prelude: |
+ require 'erb'
+
+ data = <<erb
+ <html>
+ <head> <%= title %> </head>
+ <body>
+ <h1> <%= title %> </h1>
+ <p>
+ <%= content %>
+ </p>
+ </body>
+ </html>
+ erb
+
+ title = "hello world!"
+ content = "hello world!\n" * 10
+
+ src = "def self.render(title, content); #{ERB.new(data).src}; end"
+ mod = Module.new
+ mod.instance_eval(src, "(ERB)")
+benchmark:
+ erb_render: mod.render(title, content)
+loop_count: 1500000
diff --git a/benchmark/fiber_chain.yml b/benchmark/fiber_chain.yml
new file mode 100644
index 0000000000..a36c759f8e
--- /dev/null
+++ b/benchmark/fiber_chain.yml
@@ -0,0 +1,36 @@
+prelude: |
+ def make_link(previous)
+ Fiber.new do
+ while message = previous.resume
+ Fiber.yield(message)
+ end
+ end
+ end
+
+ def make_chain(length = 1000, &block)
+ chain = Fiber.new(&block)
+
+ (length - 1).times do
+ chain = make_link(chain)
+ end
+
+ return chain
+ end
+
+ message = "Hello World!"
+
+ chain = make_chain do
+ while true
+ Fiber.yield(message)
+ end
+ end
+benchmark:
+ make_chain: |
+ make_chain(100) do
+ while true
+ Fiber.yield(message)
+ end
+ end
+ resume_chain: |
+ chain.resume
+loop_count: 5000
diff --git a/benchmark/fiber_locals.yml b/benchmark/fiber_locals.yml
new file mode 100644
index 0000000000..8588686477
--- /dev/null
+++ b/benchmark/fiber_locals.yml
@@ -0,0 +1,8 @@
+prelude: |
+ th = Thread.current
+ th[:key] = :val
+benchmark:
+ key?: th.key?(:key)
+ []: th[:key]
+ keys: th.keys
+loop_count: 1_000_000
diff --git a/benchmark/file_chmod.rb b/benchmark/file_chmod.rb
new file mode 100644
index 0000000000..1cd4760c9d
--- /dev/null
+++ b/benchmark/file_chmod.rb
@@ -0,0 +1,9 @@
+# chmod file
+require 'tempfile'
+max = 200_000
+tmp = Tempfile.new('chmod')
+path = tmp.path
+max.times do
+ File.chmod(0777, path)
+end
+tmp.close!
diff --git a/benchmark/file_rename.rb b/benchmark/file_rename.rb
new file mode 100644
index 0000000000..bbb44aebac
--- /dev/null
+++ b/benchmark/file_rename.rb
@@ -0,0 +1,11 @@
+# rename file
+require 'tempfile'
+
+max = 100_000
+tmp = [ Tempfile.new('rename-a'), Tempfile.new('rename-b') ]
+a, b = tmp.map { |x| x.path }
+tmp.each { |t| t.close } # Windows can't rename files without closing them
+max.times do
+ File.rename(a, b)
+ File.rename(b, a)
+end
diff --git a/benchmark/float_methods.yml b/benchmark/float_methods.yml
new file mode 100644
index 0000000000..56ea41effc
--- /dev/null
+++ b/benchmark/float_methods.yml
@@ -0,0 +1,14 @@
+prelude: |
+ flo = 4.2
+benchmark:
+ to_f: |
+ flo.to_f
+ abs: |
+ flo.abs
+ magnitude: |
+ flo.magnitude
+ -@: |
+ -flo
+ zero?: |
+ flo.zero?
+loop_count: 20000000
diff --git a/benchmark/float_neg_posi.yml b/benchmark/float_neg_posi.yml
new file mode 100644
index 0000000000..172db1bf6d
--- /dev/null
+++ b/benchmark/float_neg_posi.yml
@@ -0,0 +1,8 @@
+prelude: |
+ flo = 4.2
+benchmark:
+ negative?: |
+ flo.negative?
+ positive?: |
+ flo.positive?
+loop_count: 20000000
diff --git a/benchmark/float_to_s.yml b/benchmark/float_to_s.yml
new file mode 100644
index 0000000000..0abae5cdb8
--- /dev/null
+++ b/benchmark/float_to_s.yml
@@ -0,0 +1,7 @@
+prelude: |
+ floats = [*0.0.step(1.0, 0.0001)]
+
+benchmark:
+ to_s: floats.each {|f| f.to_s}
+
+loop_count: 1000
diff --git a/benchmark/gc/aobench.rb b/benchmark/gc/aobench.rb
new file mode 100644
index 0000000000..275f58b924
--- /dev/null
+++ b/benchmark/gc/aobench.rb
@@ -0,0 +1 @@
+require_relative '../app_aobench'
diff --git a/benchmark/gc/binary_trees.rb b/benchmark/gc/binary_trees.rb
new file mode 100644
index 0000000000..83347cdd20
--- /dev/null
+++ b/benchmark/gc/binary_trees.rb
@@ -0,0 +1 @@
+require_relative '../so_binary_trees'
diff --git a/benchmark/gc/gcbench.rb b/benchmark/gc/gcbench.rb
new file mode 100644
index 0000000000..23d0b91c6c
--- /dev/null
+++ b/benchmark/gc/gcbench.rb
@@ -0,0 +1,57 @@
+require 'benchmark'
+require 'pp'
+require 'optparse'
+
+$list = true
+$gcprof = false
+
+opt = OptionParser.new
+opt.on('-q'){$list = false}
+opt.on('-d'){$gcprof = false}
+opt.on('-p'){$gcprof = true}
+opt.parse!(ARGV)
+
+script = File.join(File.dirname(__FILE__), ARGV.shift)
+script += '.rb' unless FileTest.exist?(script)
+raise "#{script} not found" unless FileTest.exist?(script)
+
+puts "Script: #{script}"
+
+if $gcprof
+ GC::Profiler.enable
+end
+
+tms = Benchmark.measure{|x|
+ load script
+}
+
+gc_time = 0
+
+if $gcprof
+ gc_time = GC::Profiler.total_time
+ GC::Profiler.report if $list and RUBY_VERSION >= '2.0.0' # before 1.9.3, report() may run infinite loop
+ GC::Profiler.disable
+end
+
+pp GC.stat
+
+puts "#{RUBY_DESCRIPTION} #{GC::OPTS.inspect}" if defined?(GC::OPTS)
+
+desc = "#{RUBY_VERSION}#{RUBY_PATCHLEVEL >= 0 ? "p#{RUBY_PATCHLEVEL}" : "dev"}"
+name = File.basename(script, '.rb')
+
+puts
+puts script
+puts Benchmark::CAPTION
+puts tms
+puts "GC total time (sec): #{gc_time}"
+
+# show High-Water Mark on Linux
+if File.exist?('/proc/self/status') && /VmHWM:\s*(\d+.+)/ =~ File.read('/proc/self/status')
+ puts
+ puts "VmHWM: #{$1.chomp}"
+end
+
+puts
+puts "Summary of #{name} on #{desc}\t#{tms.real}\t#{gc_time}\t#{GC.count}"
+puts " (real time in sec, GC time in sec, GC count)"
diff --git a/benchmark/gc/hash1.rb b/benchmark/gc/hash1.rb
new file mode 100644
index 0000000000..cb030d458d
--- /dev/null
+++ b/benchmark/gc/hash1.rb
@@ -0,0 +1,11 @@
+value = 0.01
+h = {}
+n = 50_000
+
+1.upto(n){|i|
+ h["%020d" % i] = "v-#{i}"
+}
+
+(n * 1_000).times{
+ ''
+}
diff --git a/benchmark/gc/hash2.rb b/benchmark/gc/hash2.rb
new file mode 100644
index 0000000000..e8c943fb21
--- /dev/null
+++ b/benchmark/gc/hash2.rb
@@ -0,0 +1,7 @@
+value = 0.01
+h = {}
+n = 4*(10**6)
+
+1.upto(n){|i|
+ h["%020d" % i] = value * i
+}
diff --git a/benchmark/gc/null.rb b/benchmark/gc/null.rb
new file mode 100644
index 0000000000..c05a79f561
--- /dev/null
+++ b/benchmark/gc/null.rb
@@ -0,0 +1 @@
+# null
diff --git a/benchmark/gc/pentomino.rb b/benchmark/gc/pentomino.rb
new file mode 100644
index 0000000000..8ebdff7d1d
--- /dev/null
+++ b/benchmark/gc/pentomino.rb
@@ -0,0 +1 @@
+require_relative '../app_pentomino'
diff --git a/benchmark/gc/rdoc.rb b/benchmark/gc/rdoc.rb
new file mode 100644
index 0000000000..14c89f5611
--- /dev/null
+++ b/benchmark/gc/rdoc.rb
@@ -0,0 +1,13 @@
+require 'rdoc/rdoc'
+require 'tmpdir'
+
+srcdir = File.expand_path('../..', __dir__)
+
+Dir.mktmpdir('rdocbench-'){|d|
+ dir = File.join(d, 'rdocbench')
+ args = %W(--root #{srcdir} --page-dir #{srcdir}/doc --encoding=UTF-8 --no-force-update --all --ri --debug --quiet #{srcdir})
+ args << '--op' << dir
+
+ r = RDoc::RDoc.new
+ r.document args
+}
diff --git a/benchmark/gc/redblack.rb b/benchmark/gc/redblack.rb
new file mode 100644
index 0000000000..c66290140a
--- /dev/null
+++ b/benchmark/gc/redblack.rb
@@ -0,0 +1,366 @@
+# This benchmark is imported from https://github.com/jruby/rubybench/blob/master/time/bench_red_black.rb
+# License is License is Apache-2
+
+require 'benchmark'
+
+# Algorithm based on "Introduction to Algorithms" by Cormen and others
+class RedBlackTree
+ class Node
+ attr_accessor :color
+ attr_accessor :key
+ attr_accessor :left
+ attr_accessor :right
+ attr_accessor :parent
+
+ RED = :red
+ BLACK = :black
+ COLORS = [RED, BLACK].freeze
+
+ def initialize(key, color = RED)
+ raise ArgumentError, "Bad value for color parameter" unless COLORS.include?(color)
+ @color = color
+ @key = key
+ @left = @right = @parent = NilNode.instance
+ end
+
+ def black?
+ return color == BLACK
+ end
+
+ def red?
+ return color == RED
+ end
+ end
+
+ class NilNode < Node
+ class << self
+ private :new
+
+ # it's not thread safe
+ def instance
+ @instance ||= begin
+ def instance
+ return @instance
+ end
+
+ new
+ end
+ end
+ end
+
+ def initialize
+ self.color = BLACK
+ self.key = 0
+ self.left = nil
+ self.right = nil
+ self.parent = nil
+ end
+
+ def nil?
+ return true
+ end
+ end
+
+ include Enumerable
+
+ attr_accessor :root
+ attr_accessor :size
+
+ def initialize
+ self.root = NilNode.instance
+ self.size = 0
+ end
+
+ def add(key)
+ insert(Node.new(key))
+ end
+
+ def insert(x)
+ insert_helper(x)
+
+ x.color = Node::RED
+ while x != root && x.parent.color == Node::RED
+ if x.parent == x.parent.parent.left
+ y = x.parent.parent.right
+ if !y.nil? && y.color == Node::RED
+ x.parent.color = Node::BLACK
+ y.color = Node::BLACK
+ x.parent.parent.color = Node::RED
+ x = x.parent.parent
+ else
+ if x == x.parent.right
+ x = x.parent
+ left_rotate(x)
+ end
+ x.parent.color = Node::BLACK
+ x.parent.parent.color = Node::RED
+ right_rotate(x.parent.parent)
+ end
+ else
+ y = x.parent.parent.left
+ if !y.nil? && y.color == Node::RED
+ x.parent.color = Node::BLACK
+ y.color = Node::BLACK
+ x.parent.parent.color = Node::RED
+ x = x.parent.parent
+ else
+ if x == x.parent.left
+ x = x.parent
+ right_rotate(x)
+ end
+ x.parent.color = Node::BLACK
+ x.parent.parent.color = Node::RED
+ left_rotate(x.parent.parent)
+ end
+ end
+ end
+ root.color = Node::BLACK
+ end
+
+ alias << insert
+
+ def delete(z)
+ y = (z.left.nil? || z.right.nil?) ? z : successor(z)
+ x = y.left.nil? ? y.right : y.left
+ x.parent = y.parent
+
+ if y.parent.nil?
+ self.root = x
+ else
+ if y == y.parent.left
+ y.parent.left = x
+ else
+ y.parent.right = x
+ end
+ end
+
+ z.key = y.key if y != z
+
+ if y.color == Node::BLACK
+ delete_fixup(x)
+ end
+
+ self.size -= 1
+ return y
+ end
+
+ def minimum(x = root)
+ while !x.left.nil?
+ x = x.left
+ end
+ return x
+ end
+
+ def maximum(x = root)
+ while !x.right.nil?
+ x = x.right
+ end
+ return x
+ end
+
+ def successor(x)
+ if !x.right.nil?
+ return minimum(x.right)
+ end
+ y = x.parent
+ while !y.nil? && x == y.right
+ x = y
+ y = y.parent
+ end
+ return y
+ end
+
+ def predecessor(x)
+ if !x.left.nil?
+ return maximum(x.left)
+ end
+ y = x.parent
+ while !y.nil? && x == y.left
+ x = y
+ y = y.parent
+ end
+ return y
+ end
+
+ def inorder_walk(x = root)
+ x = self.minimum
+ while !x.nil?
+ yield x.key
+ x = successor(x)
+ end
+ end
+
+ alias each inorder_walk
+
+ def reverse_inorder_walk(x = root)
+ x = self.maximum
+ while !x.nil?
+ yield x.key
+ x = predecessor(x)
+ end
+ end
+
+ alias reverse_each reverse_inorder_walk
+
+ def search(key, x = root)
+ while !x.nil? && x.key != key
+ key < x.key ? x = x.left : x = x.right
+ end
+ return x
+ end
+
+ def empty?
+ return self.root.nil?
+ end
+
+ def black_height(x = root)
+ height = 0
+ while !x.nil?
+ x = x.left
+ height +=1 if x.nil? || x.black?
+ end
+ return height
+ end
+
+private
+
+ def left_rotate(x)
+ raise "x.right is nil!" if x.right.nil?
+ y = x.right
+ x.right = y.left
+ y.left.parent = x if !y.left.nil?
+ y.parent = x.parent
+ if x.parent.nil?
+ self.root = y
+ else
+ if x == x.parent.left
+ x.parent.left = y
+ else
+ x.parent.right = y
+ end
+ end
+ y.left = x
+ x.parent = y
+ end
+
+ def right_rotate(x)
+ raise "x.left is nil!" if x.left.nil?
+ y = x.left
+ x.left = y.right
+ y.right.parent = x if !y.right.nil?
+ y.parent = x.parent
+ if x.parent.nil?
+ self.root = y
+ else
+ if x == x.parent.left
+ x.parent.left = y
+ else
+ x.parent.right = y
+ end
+ end
+ y.right = x
+ x.parent = y
+ end
+
+ def insert_helper(z)
+ y = NilNode.instance
+ x = root
+ while !x.nil?
+ y = x
+ z.key < x.key ? x = x.left : x = x.right
+ end
+ z.parent = y
+ if y.nil?
+ self.root = z
+ else
+ z.key < y.key ? y.left = z : y.right = z
+ end
+ self.size += 1
+ end
+
+ def delete_fixup(x)
+ while x != root && x.color == Node::BLACK
+ if x == x.parent.left
+ w = x.parent.right
+ if w.color == Node::RED
+ w.color = Node::BLACK
+ x.parent.color = Node::RED
+ left_rotate(x.parent)
+ w = x.parent.right
+ end
+ if w.left.color == Node::BLACK && w.right.color == Node::BLACK
+ w.color = Node::RED
+ x = x.parent
+ else
+ if w.right.color == Node::BLACK
+ w.left.color = Node::BLACK
+ w.color = Node::RED
+ right_rotate(w)
+ w = x.parent.right
+ end
+ w.color = x.parent.color
+ x.parent.color = Node::BLACK
+ w.right.color = Node::BLACK
+ left_rotate(x.parent)
+ x = root
+ end
+ else
+ w = x.parent.left
+ if w.color == Node::RED
+ w.color = Node::BLACK
+ x.parent.color = Node::RED
+ right_rotate(x.parent)
+ w = x.parent.left
+ end
+ if w.right.color == Node::BLACK && w.left.color == Node::BLACK
+ w.color = Node::RED
+ x = x.parent
+ else
+ if w.left.color == Node::BLACK
+ w.right.color = Node::BLACK
+ w.color = Node::RED
+ left_rotate(w)
+ w = x.parent.left
+ end
+ w.color = x.parent.color
+ x.parent.color = Node::BLACK
+ w.left.color = Node::BLACK
+ right_rotate(x.parent)
+ x = root
+ end
+ end
+ end
+ x.color = Node::BLACK
+ end
+end
+
+def rbt_bm
+ n = 100_000
+ a1 = []; n.times { a1 << rand(999_999) }
+ a2 = []; n.times { a2 << rand(999_999) }
+
+ start = Time.now
+
+ tree = RedBlackTree.new
+
+ n.times {|i| tree.add(i) }
+ n.times { tree.delete(tree.root) }
+
+ tree = RedBlackTree.new
+ a1.each {|e| tree.add(e) }
+ a2.each {|e| tree.search(e) }
+ tree.inorder_walk {|key| key + 1 }
+ tree.reverse_inorder_walk {|key| key + 1 }
+ n.times { tree.minimum }
+ n.times { tree.maximum }
+
+ return Time.now - start
+end
+
+N = (ARGV[0] || 10).to_i
+
+N.times do
+ # puts rbt_bm.to_f
+ rbt_bm.to_f
+ # puts "GC.count = #{GC.count}" if GC.respond_to?(:count)
+end
diff --git a/benchmark/gc/ring.rb b/benchmark/gc/ring.rb
new file mode 100644
index 0000000000..be2c7b7250
--- /dev/null
+++ b/benchmark/gc/ring.rb
@@ -0,0 +1,29 @@
+# create many old objects
+
+max = 30_000_000
+
+class Ring
+ attr_reader :next_ring
+ def initialize n = nil
+ @next_ring = n
+ end
+
+
+ def size
+ s = 1
+ ring = self
+ while ring.next_ring
+ s += 1
+ ring = ring.next_ring
+ end
+ s
+ end
+end
+
+ring = Ring.new
+
+max.times{
+ ring = Ring.new(ring)
+}
+
+# p ring.size
diff --git a/benchmark/hash_aref_array.rb b/benchmark/hash_aref_array.rb
new file mode 100644
index 0000000000..ac7a683d95
--- /dev/null
+++ b/benchmark/hash_aref_array.rb
@@ -0,0 +1,5 @@
+h = {}
+arrays = (0..99).each_slice(10).to_a
+#STDERR.puts arrays.inspect
+arrays.each { |s| h[s] = s }
+200_000.times { arrays.each { |s| h[s] } }
diff --git a/benchmark/hash_aref_dsym.rb b/benchmark/hash_aref_dsym.rb
new file mode 100644
index 0000000000..af4f8c36d4
--- /dev/null
+++ b/benchmark/hash_aref_dsym.rb
@@ -0,0 +1,4 @@
+h = {}
+syms = ('a'..'z').map { |s| s.to_sym }
+syms.each { |s| h[s] = 1 }
+200_000.times { syms.each { |s| h[s] } }
diff --git a/benchmark/hash_aref_dsym_long.rb b/benchmark/hash_aref_dsym_long.rb
new file mode 100644
index 0000000000..9d7759379e
--- /dev/null
+++ b/benchmark/hash_aref_dsym_long.rb
@@ -0,0 +1,21 @@
+# [ruby-core:70129] [Bug #11396]
+collection_size = 200000
+sample_size = 10000
+
+values = (1..collection_size).to_a.map do |x|
+ "THIS IS A LONGER STRING THAT IS ALSO UNIQUE #{x}"
+end
+
+symbol_hash = {}
+
+values.each do |x|
+ symbol_hash[x.to_sym] = 1
+end
+
+# use the same samples each time to minimize deviations
+rng = Random.new(0)
+symbol_sample_array = values.sample(sample_size, random: rng).map(&:to_sym)
+
+3000.times do
+ symbol_sample_array.each { |x| symbol_hash[x] }
+end
diff --git a/benchmark/hash_aref_fix.rb b/benchmark/hash_aref_fix.rb
new file mode 100644
index 0000000000..1346890582
--- /dev/null
+++ b/benchmark/hash_aref_fix.rb
@@ -0,0 +1,4 @@
+h = {}
+nums = (1..26).to_a
+nums.each { |i| h[i] = i }
+200_000.times { nums.each { |s| h[s] } }
diff --git a/benchmark/hash_aref_flo.rb b/benchmark/hash_aref_flo.rb
new file mode 100644
index 0000000000..2217274c82
--- /dev/null
+++ b/benchmark/hash_aref_flo.rb
@@ -0,0 +1,4 @@
+h = {}
+strs = [*1..10000].map! {|i| i.fdiv(10)}
+strs.each { |s| h[s] = s }
+50.times { strs.each { |s| h[s] } }
diff --git a/benchmark/hash_aref_miss.rb b/benchmark/hash_aref_miss.rb
new file mode 100644
index 0000000000..b0913dd4bb
--- /dev/null
+++ b/benchmark/hash_aref_miss.rb
@@ -0,0 +1,5 @@
+h = {}
+strs = ('a'..'z').to_a.map!(&:freeze)
+strs.each { |s| h[s] = s }
+strs = ('A'..'Z').to_a
+200_000.times { strs.each { |s| h[s] } }
diff --git a/benchmark/hash_aref_str.rb b/benchmark/hash_aref_str.rb
new file mode 100644
index 0000000000..19439b061b
--- /dev/null
+++ b/benchmark/hash_aref_str.rb
@@ -0,0 +1,4 @@
+h = {}
+strs = ('a'..'z').to_a.map!(&:freeze)
+strs.each { |s| h[s] = s }
+200_000.times { strs.each { |s| h[s] } }
diff --git a/benchmark/hash_aref_sym.rb b/benchmark/hash_aref_sym.rb
new file mode 100644
index 0000000000..f75d163fe6
--- /dev/null
+++ b/benchmark/hash_aref_sym.rb
@@ -0,0 +1,9 @@
+h = {}
+syms = ('a'..'z').to_a
+begin
+ syms = eval("%i[#{syms.join(' ')}]")
+rescue SyntaxError # <= 1.9.3
+ syms.map!(&:to_sym)
+end
+syms.each { |s| h[s] = s }
+200_000.times { syms.each { |s| h[s] } }
diff --git a/benchmark/hash_aref_sym_long.rb b/benchmark/hash_aref_sym_long.rb
new file mode 100644
index 0000000000..9dab8df7be
--- /dev/null
+++ b/benchmark/hash_aref_sym_long.rb
@@ -0,0 +1,13 @@
+h = {}
+syms = %w[puts warn syswrite write stat bacon lettuce tomato
+some symbols in this array may already be interned others should not be
+hash browns make good breakfast but not cooked using prime numbers
+shift for division entries delete_if keys exist?
+]
+begin
+ syms = eval("%i[#{syms.join(' ')}]")
+rescue SyntaxError # <= 1.9.3
+ syms.map!(&:to_sym)
+end
+syms.each { |s| h[s] = s }
+200_000.times { syms.each { |s| h[s] } }
diff --git a/benchmark/hash_defaults.yml b/benchmark/hash_defaults.yml
new file mode 100644
index 0000000000..833f10e1c7
--- /dev/null
+++ b/benchmark/hash_defaults.yml
@@ -0,0 +1,6 @@
+prelude: |
+ h = Hash.new { :foo }
+benchmark:
+ default_aref: h[1]
+ default_method: h.default(1)
+loop_count: 1000000
diff --git a/benchmark/hash_dup.yml b/benchmark/hash_dup.yml
new file mode 100644
index 0000000000..65f521ec94
--- /dev/null
+++ b/benchmark/hash_dup.yml
@@ -0,0 +1,8 @@
+prelude: |
+ small_hash = { a: 1 }
+ larger_hash = 20.times.map { |i| [('a'.ord + i).chr.to_sym, i] }.to_h
+
+benchmark:
+ dup_small: small_hash.dup
+ dup_larger: larger_hash.dup
+loop_count: 10000
diff --git a/benchmark/hash_first.yml b/benchmark/hash_first.yml
new file mode 100644
index 0000000000..c26df1a7ed
--- /dev/null
+++ b/benchmark/hash_first.yml
@@ -0,0 +1,11 @@
+prelude: |
+ hash1 = 1_000_000.times.to_h { [rand, true]}
+ hash2 = hash1.dup
+ hash2.keys[1..100_000].each { hash2.delete _1 }
+ hash2.delete hash2.first[0]
+
+benchmark:
+ hash1: hash1.first
+ hash2: hash2.first
+
+loop_count: 100_000
diff --git a/benchmark/hash_flatten.rb b/benchmark/hash_flatten.rb
new file mode 100644
index 0000000000..e944aae9f2
--- /dev/null
+++ b/benchmark/hash_flatten.rb
@@ -0,0 +1,9 @@
+h = {}
+
+10000.times do |i|
+ h[i] = nil
+end
+
+1000.times do
+ h.flatten
+end
diff --git a/benchmark/hash_ident_flo.rb b/benchmark/hash_ident_flo.rb
new file mode 100644
index 0000000000..0c7edfed3e
--- /dev/null
+++ b/benchmark/hash_ident_flo.rb
@@ -0,0 +1,4 @@
+h = {}.compare_by_identity
+strs = (1..10000).to_a.map!(&:to_f)
+strs.each { |s| h[s] = s }
+50.times { strs.each { |s| h[s] } }
diff --git a/benchmark/hash_ident_num.rb b/benchmark/hash_ident_num.rb
new file mode 100644
index 0000000000..b226736c6f
--- /dev/null
+++ b/benchmark/hash_ident_num.rb
@@ -0,0 +1,4 @@
+h = {}.compare_by_identity
+nums = (1..26).to_a
+nums.each { |n| h[n] = n }
+200_000.times { nums.each { |n| h[n] } }
diff --git a/benchmark/hash_ident_obj.rb b/benchmark/hash_ident_obj.rb
new file mode 100644
index 0000000000..4b3b58edec
--- /dev/null
+++ b/benchmark/hash_ident_obj.rb
@@ -0,0 +1,4 @@
+h = {}.compare_by_identity
+objs = 26.times.map { Object.new }
+objs.each { |o| h[o] = o }
+200_000.times { objs.each { |o| h[o] } }
diff --git a/benchmark/hash_ident_str.rb b/benchmark/hash_ident_str.rb
new file mode 100644
index 0000000000..8582b38e31
--- /dev/null
+++ b/benchmark/hash_ident_str.rb
@@ -0,0 +1,4 @@
+h = {}.compare_by_identity
+strs = ('a'..'z').to_a
+strs.each { |s| h[s] = s }
+200_000.times { strs.each { |s| h[s] } }
diff --git a/benchmark/hash_ident_sym.rb b/benchmark/hash_ident_sym.rb
new file mode 100644
index 0000000000..4c81e3d28e
--- /dev/null
+++ b/benchmark/hash_ident_sym.rb
@@ -0,0 +1,4 @@
+h = {}.compare_by_identity
+syms = ('a'..'z').to_a.map(&:to_sym)
+syms.each { |s| h[s] = s }
+200_000.times { syms.each { |s| h[s] } }
diff --git a/benchmark/hash_keys.rb b/benchmark/hash_keys.rb
new file mode 100644
index 0000000000..6863cd01f9
--- /dev/null
+++ b/benchmark/hash_keys.rb
@@ -0,0 +1,9 @@
+h = {}
+
+10000.times do |i|
+ h[i] = nil
+end
+
+5000.times do
+ h.keys
+end
diff --git a/benchmark/hash_literal_small2.rb b/benchmark/hash_literal_small2.rb
new file mode 100644
index 0000000000..c188529260
--- /dev/null
+++ b/benchmark/hash_literal_small2.rb
@@ -0,0 +1,3 @@
+# frozen_string_literal: true
+
+1_000_000.times.map { { "foo" => "bar", "bar" => "baz" } }
diff --git a/benchmark/hash_literal_small4.rb b/benchmark/hash_literal_small4.rb
new file mode 100644
index 0000000000..739f71b5b0
--- /dev/null
+++ b/benchmark/hash_literal_small4.rb
@@ -0,0 +1,3 @@
+# frozen_string_literal: true
+
+1_000_000.times.map { { "foo" => "bar", "bar" => "baz", "baz" => "lol", "lol" => "lgtm" } }
diff --git a/benchmark/hash_literal_small8.rb b/benchmark/hash_literal_small8.rb
new file mode 100644
index 0000000000..53d80af535
--- /dev/null
+++ b/benchmark/hash_literal_small8.rb
@@ -0,0 +1,3 @@
+# frozen_string_literal: true
+
+1_000_000.times.map { { "foo" => "bar", "bar" => "baz", "baz" => "lol", "lol" => "lgtm", "lgtm" => "nope", "nope" => "ok", "ok" => "again", "again" => "wait" } }
diff --git a/benchmark/hash_long.rb b/benchmark/hash_long.rb
new file mode 100644
index 0000000000..03d9109602
--- /dev/null
+++ b/benchmark/hash_long.rb
@@ -0,0 +1,4 @@
+k1 = "Ping Pong Ping Pong Ping Pong Ping Pong Ping Pong Ping Pong Ping Pong Ping Pong Ping Pong Ping Pong";
+k2 = "Pong Ping Pong Ping Pong Ping Pong Ping Pong Ping Pong Ping Pong Ping Pong Ping Pong Ping Pong Ping";
+h = {k1 => 0, k2 => 0};
+3000000.times{|i| k = i % 2 ? k2 : k1; h [k] = h[k] + 1}
diff --git a/benchmark/hash_shift.rb b/benchmark/hash_shift.rb
new file mode 100644
index 0000000000..a645671a5b
--- /dev/null
+++ b/benchmark/hash_shift.rb
@@ -0,0 +1,10 @@
+h = {}
+
+10000.times do |i|
+ h[i] = nil
+end
+
+50000.times do
+ k, v = h.shift
+ h[k] = v
+end
diff --git a/benchmark/hash_shift_u16.rb b/benchmark/hash_shift_u16.rb
new file mode 100644
index 0000000000..ec800d0342
--- /dev/null
+++ b/benchmark/hash_shift_u16.rb
@@ -0,0 +1,10 @@
+h = {}
+
+(16384..65536).each do |i|
+ h[i] = nil
+end
+
+300000.times do
+ k, v = h.shift
+ h[k] = v
+end
diff --git a/benchmark/hash_shift_u24.rb b/benchmark/hash_shift_u24.rb
new file mode 100644
index 0000000000..de4e0fa696
--- /dev/null
+++ b/benchmark/hash_shift_u24.rb
@@ -0,0 +1,10 @@
+h = {}
+
+(0xff4000..0xffffff).each do |i|
+ h[i] = nil
+end
+
+300000.times do
+ k, v = h.shift
+ h[k] = v
+end
diff --git a/benchmark/hash_shift_u32.rb b/benchmark/hash_shift_u32.rb
new file mode 100644
index 0000000000..656aa55583
--- /dev/null
+++ b/benchmark/hash_shift_u32.rb
@@ -0,0 +1,10 @@
+h = {}
+
+(0xffff4000..0xffffffff).each do |i|
+ h[i] = nil
+end
+
+300000.times do
+ k, v = h.shift
+ h[k] = v
+end
diff --git a/benchmark/hash_small2.rb b/benchmark/hash_small2.rb
new file mode 100644
index 0000000000..45485d9c71
--- /dev/null
+++ b/benchmark/hash_small2.rb
@@ -0,0 +1 @@
+1000000.times.map{|i| a={}; 2.times{|j| a[j]=j}; a}
diff --git a/benchmark/hash_small4.rb b/benchmark/hash_small4.rb
new file mode 100644
index 0000000000..acd4084334
--- /dev/null
+++ b/benchmark/hash_small4.rb
@@ -0,0 +1 @@
+1000000.times.map{|i| a={}; 4.times{|j| a[j]=j}; a}
diff --git a/benchmark/hash_small8.rb b/benchmark/hash_small8.rb
new file mode 100644
index 0000000000..9cffcc91b6
--- /dev/null
+++ b/benchmark/hash_small8.rb
@@ -0,0 +1 @@
+1000000.times.map{|i| a={}; 8.times{|j| a[j]=j}; a}
diff --git a/benchmark/hash_to_proc.rb b/benchmark/hash_to_proc.rb
new file mode 100644
index 0000000000..2b675bf509
--- /dev/null
+++ b/benchmark/hash_to_proc.rb
@@ -0,0 +1,9 @@
+h = {}
+
+10000.times do |i|
+ h[i] = nil
+end
+
+5000.times do |i|
+ [i].map(&h)
+end
diff --git a/benchmark/hash_values.rb b/benchmark/hash_values.rb
new file mode 100644
index 0000000000..069441302f
--- /dev/null
+++ b/benchmark/hash_values.rb
@@ -0,0 +1,9 @@
+h = {}
+
+10000.times do |i|
+ h[i] = nil
+end
+
+5000.times do
+ h.values
+end
diff --git a/benchmark/int_quo.rb b/benchmark/int_quo.rb
new file mode 100644
index 0000000000..e22a3f8c30
--- /dev/null
+++ b/benchmark/int_quo.rb
@@ -0,0 +1 @@
+5000000.times { 42.quo(3) }
diff --git a/benchmark/io_copy_stream_write.rb b/benchmark/io_copy_stream_write.rb
new file mode 100644
index 0000000000..3fd87250a4
--- /dev/null
+++ b/benchmark/io_copy_stream_write.rb
@@ -0,0 +1,24 @@
+# The goal of this is to use a synthetic (non-IO) reader
+# to trigger the read/write loop of IO.copy_stream,
+# bypassing in-kernel mechanisms like sendfile for zero copy,
+# so we wrap the /dev/zero IO object:
+
+class Zero
+ def initialize
+ @n = 100000
+ @in = File.open('/dev/zero', 'rb')
+ end
+
+ def read(len, buf)
+ return if (@n -= 1) == 0
+ @in.read(len, buf)
+ end
+end
+
+begin
+ src = Zero.new
+ dst = File.open(IO::NULL, 'wb')
+ n = IO.copy_stream(src, dst)
+rescue Errno::ENOENT
+ # not *nix
+end if IO.respond_to?(:copy_stream) && IO.const_defined?(:NULL)
diff --git a/benchmark/io_copy_stream_write_socket.rb b/benchmark/io_copy_stream_write_socket.rb
new file mode 100644
index 0000000000..11f369bd0d
--- /dev/null
+++ b/benchmark/io_copy_stream_write_socket.rb
@@ -0,0 +1,35 @@
+# The goal of this is to use a synthetic (non-IO) reader
+# to trigger the read/write loop of IO.copy_stream,
+# bypassing in-kernel mechanisms like sendfile for zero copy,
+# so we wrap the /dev/zero IO object:
+class Zero
+ def initialize
+ @n = 100000
+ @in = File.open('/dev/zero', 'rb')
+ end
+
+ def read(len, buf)
+ return if (@n -= 1) == 0
+ @in.read(len, buf)
+ end
+end
+
+begin
+ require 'socket'
+ src = Zero.new
+ rd, wr = UNIXSocket.pair
+ pid = fork do
+ wr.close
+ buf = String.new
+ while rd.read(16384, buf)
+ end
+ end
+ rd.close
+ IO.copy_stream(src, wr)
+rescue Errno::ENOENT, NotImplementedError, NameError
+ # not *nix: missing /dev/zero, fork, or UNIXSocket
+rescue LoadError # no socket?
+ensure
+ wr.close if wr
+ Process.waitpid(pid) if pid
+end if IO.respond_to?(:copy_stream)
diff --git a/benchmark/io_file_create.rb b/benchmark/io_file_create.rb
new file mode 100644
index 0000000000..2f205c1333
--- /dev/null
+++ b/benchmark/io_file_create.rb
@@ -0,0 +1,13 @@
+#
+# Create files
+#
+
+max = 200_000
+file = './tmpfile_of_bm_io_file_create'
+
+max.times{
+ f = open(file, 'w')
+ f.close#(true)
+}
+File.unlink(file)
+
diff --git a/benchmark/io_file_read.rb b/benchmark/io_file_read.rb
new file mode 100644
index 0000000000..b9e796ed30
--- /dev/null
+++ b/benchmark/io_file_read.rb
@@ -0,0 +1,15 @@
+#
+# Seek and Read file.
+#
+
+require 'tempfile'
+
+max = 200_000
+str = "Hello world! " * 1000
+f = Tempfile.new('yarv-benchmark')
+f.write str
+
+max.times{
+ f.seek 0
+ f.read
+}
diff --git a/benchmark/io_file_write.rb b/benchmark/io_file_write.rb
new file mode 100644
index 0000000000..aa1be0e5fe
--- /dev/null
+++ b/benchmark/io_file_write.rb
@@ -0,0 +1,14 @@
+#
+# Seek and Write file.
+#
+
+require 'tempfile'
+
+max = 200_000
+str = "Hello world! " * 1000
+f = Tempfile.new('yarv-benchmark')
+
+max.times{
+ f.seek 0
+ f.write str
+}
diff --git a/benchmark/io_nonblock_noex.rb b/benchmark/io_nonblock_noex.rb
new file mode 100644
index 0000000000..da9357fdc6
--- /dev/null
+++ b/benchmark/io_nonblock_noex.rb
@@ -0,0 +1,22 @@
+nr = 1_000_000
+i = 0
+msg = '.'
+buf = '.'
+noex = { exception: false }
+begin
+ r, w = IO.pipe
+ while i < nr
+ i += 1
+ w.write_nonblock(msg, noex)
+ r.read_nonblock(1, buf, noex)
+ end
+rescue ArgumentError # old Rubies
+ while i < nr
+ i += 1
+ w.write_nonblock(msg)
+ r.read_nonblock(1, buf)
+ end
+ensure
+ r.close
+ w.close
+end
diff --git a/benchmark/io_nonblock_noex2.rb b/benchmark/io_nonblock_noex2.rb
new file mode 100644
index 0000000000..56819d049b
--- /dev/null
+++ b/benchmark/io_nonblock_noex2.rb
@@ -0,0 +1,21 @@
+nr = 1_000_000
+i = 0
+msg = '.'
+buf = '.'
+begin
+ r, w = IO.pipe
+ while i < nr
+ i += 1
+ w.write_nonblock(msg, exception: false)
+ r.read_nonblock(1, buf, exception: false)
+ end
+rescue ArgumentError # old Rubies
+ while i < nr
+ i += 1
+ w.write_nonblock(msg)
+ r.read_nonblock(1, buf)
+ end
+ensure
+ r.close
+ w.close
+end
diff --git a/benchmark/io_pipe_rw.rb b/benchmark/io_pipe_rw.rb
new file mode 100644
index 0000000000..6862a8ae61
--- /dev/null
+++ b/benchmark/io_pipe_rw.rb
@@ -0,0 +1,13 @@
+# Measure uncontended GVL performance via read/write with 1:1 threading
+# If we switch to M:N threading, this will benchmark something else...
+r, w = IO.pipe
+src = '0'.freeze
+dst = String.new
+i = 0
+while i < 1_000_000
+ i += 1
+ w.write(src)
+ r.read(1, dst)
+end
+w.close
+r.close
diff --git a/benchmark/io_select.rb b/benchmark/io_select.rb
new file mode 100644
index 0000000000..19248daeb1
--- /dev/null
+++ b/benchmark/io_select.rb
@@ -0,0 +1,9 @@
+# IO.select performance
+
+w = [ IO.pipe[1] ];
+
+nr = 1000000
+nr.times {
+ IO.select nil, w
+}
+
diff --git a/benchmark/io_select2.rb b/benchmark/io_select2.rb
new file mode 100644
index 0000000000..10e37d71b2
--- /dev/null
+++ b/benchmark/io_select2.rb
@@ -0,0 +1,22 @@
+# IO.select performance. worst case of single fd.
+
+ios = []
+nr = 1000000
+if defined?(Process::RLIMIT_NOFILE)
+ max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
+else
+ max = 64
+end
+puts "max fd: #{max} (results not apparent with <= 1024 max fd)"
+
+((max / 2) - 10).times do
+ ios.concat IO.pipe
+end
+
+last = [ ios[-1] ]
+puts "last IO: #{last[0].inspect}"
+
+nr.times do
+ IO.select nil, last
+end
+
diff --git a/benchmark/io_select3.rb b/benchmark/io_select3.rb
new file mode 100644
index 0000000000..7d0ba1f092
--- /dev/null
+++ b/benchmark/io_select3.rb
@@ -0,0 +1,21 @@
+# IO.select performance. a lot of fd
+
+ios = []
+nr = 100
+if defined?(Process::RLIMIT_NOFILE)
+ max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
+else
+ max = 64
+end
+puts "max fd: #{max} (results not apparent with <= 1024 max fd)"
+
+(max - 10).times do
+ r, w = IO.pipe
+ r.close
+ ios.push w
+end
+
+nr.times do
+ IO.select nil, ios
+end
+
diff --git a/benchmark/io_write.rb b/benchmark/io_write.rb
new file mode 100644
index 0000000000..cdb409948b
--- /dev/null
+++ b/benchmark/io_write.rb
@@ -0,0 +1,22 @@
+#!/usr/bin/env ruby
+
+require 'benchmark'
+
+i, o = IO.pipe
+o.sync = true
+
+DOT = ".".freeze
+
+chunks = 100_000.times.collect{DOT}
+
+thread = Thread.new do
+ while i.read(1024)
+ end
+end
+
+100.times do
+ o.write(*chunks)
+end
+
+o.close
+thread.join
diff --git a/benchmark/irb_color.yml b/benchmark/irb_color.yml
new file mode 100644
index 0000000000..ebdc8d7e8b
--- /dev/null
+++ b/benchmark/irb_color.yml
@@ -0,0 +1,13 @@
+prelude: |
+ require 'irb/color'
+ code = <<~'CODE'
+ def self.foo # bar
+ :"erb #{ERB.new("<%= self %>", trim_mode: ?-).result}"
+ end
+ CODE
+benchmark:
+ irb_color_complete: |
+ IRB::Color.colorize_code(code, complete: true)
+ irb_color_incomplete: |
+ IRB::Color.colorize_code(code, complete: false)
+loop_count: 2000000
diff --git a/benchmark/irb_exec.yml b/benchmark/irb_exec.yml
new file mode 100644
index 0000000000..28933f8b38
--- /dev/null
+++ b/benchmark/irb_exec.yml
@@ -0,0 +1,10 @@
+prelude: |
+ # frozen_string_literal: true
+ require 'rbconfig'
+ irb_f = [File.join(File.dirname(RbConfig.ruby), 'irb'), '-f']
+benchmark:
+ irb_exec: |
+ IO.popen(irb_f, 'w') do |io|
+ io.write('exit')
+ end
+loop_count: 30
diff --git a/benchmark/iseq_load_from_binary.yml b/benchmark/iseq_load_from_binary.yml
new file mode 100644
index 0000000000..7e9d73bdd4
--- /dev/null
+++ b/benchmark/iseq_load_from_binary.yml
@@ -0,0 +1,25 @@
+prelude: |
+ symbol = RubyVM::InstructionSequence.compile(":foo; :bar; :baz; :egg; :spam").to_binary
+
+ define_method = RubyVM::InstructionSequence.compile(%{
+ def foo; end
+ def bar; end
+ def baz; end
+ def egg; end
+ def spam; end
+ }).to_binary
+
+ all = RubyVM::InstructionSequence.compile(%{
+ module Foo; def foo; :foo; end; end
+ module Bar; def bar; :bar; end; end
+ module Baz; def baz; :baz; end; end
+ class Egg; def egg; :egg; end; end
+ class Spaml; def spam; :spam; end; end
+ }).to_binary
+
+benchmark:
+ symbol: RubyVM::InstructionSequence.load_from_binary(symbol)
+ define_method: RubyVM::InstructionSequence.load_from_binary(define_method)
+ all: RubyVM::InstructionSequence.load_from_binary(all)
+
+loop_count: 100_000
diff --git a/benchmark/ivar_extend.yml b/benchmark/ivar_extend.yml
new file mode 100644
index 0000000000..eb9ee923f5
--- /dev/null
+++ b/benchmark/ivar_extend.yml
@@ -0,0 +1,23 @@
+prelude: |
+ class Embedded
+ def initialize
+ @a = 1
+ @b = 1
+ @c = 1
+ end
+ end
+
+ class Extended
+ def initialize
+ @a = 1
+ @b = 1
+ @c = 1
+ @d = 1
+ @e = 1
+ @f = 1
+ end
+ end
+benchmark:
+ embedded: Embedded.new
+ extended: Extended.new
+loop_count: 20_000_000
diff --git a/benchmark/kernel_clone.yml b/benchmark/kernel_clone.yml
new file mode 100644
index 0000000000..069b23abcd
--- /dev/null
+++ b/benchmark/kernel_clone.yml
@@ -0,0 +1,6 @@
+prelude: "object = Object.new"
+benchmark:
+ clone: "object.clone"
+ clone_true: "object.clone(freeze: true)"
+ clone_false: "object.clone(freeze: false)"
+loop_count: 10000
diff --git a/benchmark/kernel_float.yml b/benchmark/kernel_float.yml
new file mode 100644
index 0000000000..215f6750fc
--- /dev/null
+++ b/benchmark/kernel_float.yml
@@ -0,0 +1,5 @@
+benchmark:
+ float: "Float(42)"
+ float_true: "Float(42, exception: true)"
+ float_false: "Float(42, exception: false)"
+loop_count: 10000
diff --git a/benchmark/kernel_tap.yml b/benchmark/kernel_tap.yml
new file mode 100644
index 0000000000..4dcbb31b4d
--- /dev/null
+++ b/benchmark/kernel_tap.yml
@@ -0,0 +1,6 @@
+prelude: |
+ obj = Object.new
+ x = nil
+benchmark:
+ kernel_tap: obj.tap { |o| x = o }
+loop_count: 20000000
diff --git a/benchmark/kernel_then.yml b/benchmark/kernel_then.yml
new file mode 100644
index 0000000000..85f7341e33
--- /dev/null
+++ b/benchmark/kernel_then.yml
@@ -0,0 +1,6 @@
+benchmark:
+ kernel_then: 1.then { |i| i + 1 }
+ kernel_then_enum: 1.then
+ kernel_yield_self: 1.yield_self { |i| i + 1 }
+ kernel_yield_self_enum: 1.yield_self
+loop_count: 20000000
diff --git a/benchmark/keyword_arguments.yml b/benchmark/keyword_arguments.yml
new file mode 100644
index 0000000000..fce6bce0b8
--- /dev/null
+++ b/benchmark/keyword_arguments.yml
@@ -0,0 +1,13 @@
+prelude: |
+ h = {a: 1}
+ def kw(a: 1) a end
+ def kws(**kw) kw end
+benchmark:
+ kw_to_kw: "kw(a: 1)"
+ kw_splat_to_kw: "kw(**h)"
+ kw_to_kw_splat: "kws(a: 1)"
+ kw_splat_to_kw_splat: "kws(**h)"
+ kw_and_splat_to_kw: "kw(a: 1, **h)"
+ kw_splats_to_kw: "kw(**h, **h)"
+ kw_and_splat_to_kw_splat: "kws(a: 1, **h)"
+ kw_splats_to_kw_splat: "kws(**h, **h)"
diff --git a/benchmark/lib/benchmark_driver/output/driver.rb b/benchmark/lib/benchmark_driver/output/driver.rb
new file mode 100644
index 0000000000..d22236e9fb
--- /dev/null
+++ b/benchmark/lib/benchmark_driver/output/driver.rb
@@ -0,0 +1,36 @@
+require 'benchmark_driver/output/simple'
+
+# This replicates the legacy benchmark/driver.rb behavior.
+class BenchmarkDriver::Output::Driver < BenchmarkDriver::Output::Simple
+ def initialize(*)
+ super
+ @stdout = $stdout
+ @strio = StringIO.new
+ $stdout = IOMultiplexer.new(@stdout, @strio)
+ end
+
+ def with_benchmark(*)
+ super
+ ensure
+ logfile = "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}.log"
+ puts "\nLog file: #{logfile}"
+
+ $stdout = @stdout
+ File.write(logfile, @strio.tap(&:rewind).read)
+ end
+
+ class IOMultiplexer
+ def initialize(io1, io2)
+ @io1 = io1
+ @io2 = io2
+ end
+
+ [:write, :sync, :sync=, :puts, :print, :flush].each do |method|
+ define_method(method) do |*args|
+ @io1.send(method, *args)
+ @io2.send(method, *args)
+ end
+ end
+ end
+ private_constant :IOMultiplexer
+end
diff --git a/benchmark/lib/benchmark_driver/runner/cstime.rb b/benchmark/lib/benchmark_driver/runner/cstime.rb
new file mode 100644
index 0000000000..3c3453e527
--- /dev/null
+++ b/benchmark/lib/benchmark_driver/runner/cstime.rb
@@ -0,0 +1,22 @@
+require 'benchmark_driver/runner/total'
+
+class BenchmarkDriver::Runner::Cstime < BenchmarkDriver::Runner::Total
+ METRIC = BenchmarkDriver::Metric.new(name: 'cstime', unit: 's', larger_better: false)
+
+ # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
+ Job = Class.new(BenchmarkDriver::DefaultJob)
+ # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
+ JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
+
+ private
+
+ # Overriding BenchmarkDriver::Runner::Total#metric
+ def metric
+ METRIC
+ end
+
+ # Overriding BenchmarkDriver::Runner::Total#target
+ def target
+ :cstime
+ end
+end
diff --git a/benchmark/lib/benchmark_driver/runner/cutime.rb b/benchmark/lib/benchmark_driver/runner/cutime.rb
new file mode 100644
index 0000000000..e139962ef2
--- /dev/null
+++ b/benchmark/lib/benchmark_driver/runner/cutime.rb
@@ -0,0 +1,22 @@
+require 'benchmark_driver/runner/total'
+
+class BenchmarkDriver::Runner::Cutime < BenchmarkDriver::Runner::Total
+ METRIC = BenchmarkDriver::Metric.new(name: 'cutime', unit: 's', larger_better: false)
+
+ # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
+ Job = Class.new(BenchmarkDriver::DefaultJob)
+ # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
+ JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
+
+ private
+
+ # Overriding BenchmarkDriver::Runner::Total#metric
+ def metric
+ METRIC
+ end
+
+ # Overriding BenchmarkDriver::Runner::Total#target
+ def target
+ :cutime
+ end
+end
diff --git a/benchmark/lib/benchmark_driver/runner/mjit.rb b/benchmark/lib/benchmark_driver/runner/mjit.rb
new file mode 100644
index 0000000000..3a58a620de
--- /dev/null
+++ b/benchmark/lib/benchmark_driver/runner/mjit.rb
@@ -0,0 +1,34 @@
+require 'benchmark_driver/struct'
+require 'benchmark_driver/metric'
+require 'erb'
+
+# A runner to measure after-JIT performance easily
+class BenchmarkDriver::Runner::Mjit < BenchmarkDriver::Runner::Ips
+ # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
+ Job = Class.new(BenchmarkDriver::DefaultJob)
+
+ # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
+ JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC]).extend(Module.new{
+ def parse(**)
+ jobs = super
+ jobs.map do |job|
+ job = job.dup
+ job.prelude = "#{job.prelude}\n#{<<~EOS}"
+ if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
+ __bmdv_ruby_i = 0
+ while __bmdv_ruby_i < 10000 # MJIT call threshold
+ #{job.script}
+ __bmdv_ruby_i += 1
+ end
+ RubyVM::MJIT.pause # compile
+ #{job.script}
+ RubyVM::MJIT.resume; RubyVM::MJIT.pause # recompile
+ #{job.script}
+ RubyVM::MJIT.resume; RubyVM::MJIT.pause # recompile 2
+ end
+ EOS
+ job
+ end
+ end
+ })
+end
diff --git a/benchmark/lib/benchmark_driver/runner/peak.rb b/benchmark/lib/benchmark_driver/runner/peak.rb
new file mode 100644
index 0000000000..d04f2e51ff
--- /dev/null
+++ b/benchmark/lib/benchmark_driver/runner/peak.rb
@@ -0,0 +1,151 @@
+require 'benchmark_driver/struct'
+require 'benchmark_driver/metric'
+require 'benchmark_driver/default_job'
+require 'benchmark_driver/default_job_parser'
+require 'tempfile'
+
+class BenchmarkDriver::Runner::Peak
+ METRIC = BenchmarkDriver::Metric.new(
+ name: 'Peak memory usage', unit: 'bytes', larger_better: false, worse_word: 'larger',
+ )
+
+ # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
+ Job = Class.new(BenchmarkDriver::DefaultJob)
+ # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
+ JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
+
+ # @param [BenchmarkDriver::Config::RunnerConfig] config
+ # @param [BenchmarkDriver::Output] output
+ # @param [BenchmarkDriver::Context] contexts
+ def initialize(config:, output:, contexts:)
+ @config = config
+ @output = output
+ @contexts = contexts
+ end
+
+ # This method is dynamically called by `BenchmarkDriver::JobRunner.run`
+ # @param [Array<BenchmarkDriver::Runner::Peak::Job>] jobs
+ def run(jobs)
+ if jobs.any? { |job| job.loop_count.nil? }
+ jobs = jobs.map do |job|
+ job.loop_count ? job : Job.new(job.to_h.merge(loop_count: 1))
+ end
+ end
+
+ @output.with_benchmark do
+ jobs.each do |job|
+ @output.with_job(name: job.name) do
+ job.runnable_contexts(@contexts).each do |context|
+ value = BenchmarkDriver::Repeater.with_repeat(config: @config, larger_better: false) do
+ run_benchmark(job, context: context)
+ end
+ @output.with_context(name: context.name, executable: context.executable, gems: context.gems, prelude: context.prelude) do
+ @output.report(values: { metric => value }, loop_count: job.loop_count)
+ end
+ end
+ end
+ end
+ end
+ end
+
+ private
+
+ # @param [BenchmarkDriver::Runner::Ips::Job] job - loop_count is not nil
+ # @param [BenchmarkDriver::Context] context
+ # @return [BenchmarkDriver::Metrics]
+ def run_benchmark(job, context:)
+ benchmark = BenchmarkScript.new(
+ preludes: [context.prelude, job.prelude],
+ script: job.script,
+ teardown: job.teardown,
+ loop_count: job.loop_count,
+ )
+
+ memory_status = File.expand_path('../../../../tool/lib/memory_status', __dir__)
+ Tempfile.open(['benchmark_driver-', '.rb']) do |f|
+ with_script(benchmark.render) do |path|
+ output = IO.popen([*context.executable.command, path, f.path, target, memory_status], &:read)
+ if $?.success?
+ Integer(f.read)
+ else
+ $stdout.print(output)
+ BenchmarkDriver::Result::ERROR
+ end
+ end
+ end
+ end
+
+ # Overridden by BenchmarkDriver::Runner::Size
+ def target
+ 'peak'
+ end
+
+ # Overridden by BenchmarkDriver::Runner::Size
+ def metric
+ METRIC
+ end
+
+ def with_script(script)
+ if @config.verbose >= 2
+ sep = '-' * 30
+ $stdout.puts "\n\n#{sep}[Script begin]#{sep}\n#{script}#{sep}[Script end]#{sep}\n\n"
+ end
+
+ Tempfile.open(['benchmark_driver-', '.rb']) do |f|
+ f.puts script
+ f.close
+ return yield(f.path)
+ end
+ end
+
+ # @param [String] prelude
+ # @param [String] script
+ # @param [String] teardown
+ # @param [Integer] loop_count
+ BenchmarkScript = ::BenchmarkDriver::Struct.new(:preludes, :script, :teardown, :loop_count) do
+ def render
+ prelude = preludes.reject(&:nil?).reject(&:empty?).join("\n")
+ <<-RUBY
+#{prelude}
+#{while_loop(script, loop_count)}
+#{teardown}
+
+result_file, target, memory_status = ARGV
+require_relative memory_status
+
+ms = Memory::Status.new
+case target.to_sym
+when :peak
+ key = ms.respond_to?(:hwm) ? :hwm : :peak
+when :size
+ key = ms.respond_to?(:rss) ? :rss : :size
+else
+ raise('unexpected target: ' + target)
+end
+
+File.write(result_file, ms[key])
+ RUBY
+ end
+
+ private
+
+ def while_loop(content, times)
+ if !times.is_a?(Integer) || times <= 0
+ raise ArgumentError.new("Unexpected times: #{times.inspect}")
+ end
+
+ if times > 1
+ <<-RUBY
+__bmdv_i = 0
+while __bmdv_i < #{times}
+ #{content}
+ __bmdv_i += 1
+end
+ RUBY
+ else
+ content
+ end
+ end
+ end
+ private_constant :BenchmarkScript
+end
diff --git a/benchmark/lib/benchmark_driver/runner/ractor.rb b/benchmark/lib/benchmark_driver/runner/ractor.rb
new file mode 100644
index 0000000000..c730b8e4a5
--- /dev/null
+++ b/benchmark/lib/benchmark_driver/runner/ractor.rb
@@ -0,0 +1,122 @@
+require 'erb'
+
+# A runner to measure performance *inside* Ractor
+class BenchmarkDriver::Runner::Ractor < BenchmarkDriver::Runner::Ips
+ # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
+ Job = Class.new(BenchmarkDriver::DefaultJob) do
+ attr_accessor :ractor
+ end
+
+ # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
+ JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC]).extend(Module.new{
+ def parse(ractor: 1, **kwargs)
+ super(**kwargs).each do |job|
+ job.ractor = ractor
+ end
+ end
+ })
+
+ private
+
+ unless private_instance_methods.include?(:run_benchmark)
+ raise "#run_benchmark is no longer defined in BenchmarkDriver::Runner::Ips"
+ end
+
+ # @param [BenchmarkDriver::Runner::Ips::Job] job - loop_count is not nil
+ # @param [BenchmarkDriver::Context] context
+ # @return [BenchmarkDriver::Metrics]
+ def run_benchmark(job, context:)
+ benchmark = BenchmarkScript.new(
+ preludes: [context.prelude, job.prelude],
+ script: job.script,
+ teardown: job.teardown,
+ loop_count: job.loop_count,
+ )
+
+ results = job.ractor.times.map do
+ Tempfile.open('benchmark_driver_result')
+ end
+ duration = with_script(benchmark.render(results: results.map(&:path))) do |path|
+ success = execute(*context.executable.command, path, exception: false)
+ if success && ((value = results.map { |f| Float(f.read) }.max) > 0)
+ value
+ else
+ BenchmarkDriver::Result::ERROR
+ end
+ end
+ results.each(&:close)
+
+ value_duration(
+ loop_count: job.loop_count,
+ duration: duration,
+ )
+ end
+
+ # @param [String] prelude
+ # @param [String] script
+ # @param [String] teardown
+ # @param [Integer] loop_count
+ BenchmarkScript = ::BenchmarkDriver::Struct.new(:preludes, :script, :teardown, :loop_count) do
+ # @param [String] result - A file to write result
+ def render(results:)
+ prelude = preludes.reject(&:nil?).reject(&:empty?).join("\n")
+ ERB.new(<<-RUBY).result_with_hash(results: results)
+Warning[:experimental] = false
+# shareable-constant-value: experimental_everything
+#{prelude}
+
+if #{loop_count} == 1
+ __bmdv_loop_before = 0
+ __bmdv_loop_after = 0
+else
+ __bmdv_loop_before = Time.new
+ #{while_loop('', loop_count, id: 0)}
+ __bmdv_loop_after = Time.new
+end
+
+__bmdv_ractors = []
+<% results.size.times do %>
+__bmdv_ractors << Ractor.new(__bmdv_loop_after - __bmdv_loop_before) { |__bmdv_loop_time|
+ __bmdv_time = Time
+ __bmdv_script_before = __bmdv_time.new
+ #{while_loop(script, loop_count, id: 1)}
+ __bmdv_script_after = __bmdv_time.new
+
+ (__bmdv_script_after - __bmdv_script_before) - __bmdv_loop_time
+}
+<% end %>
+
+# Wait for all Ractors before executing code to write results
+__bmdv_ractors.map!(&:take)
+
+<% results.each do |result| %>
+File.write(<%= result.dump %>, __bmdv_ractors.shift)
+<% end %>
+
+#{teardown}
+ RUBY
+ end
+
+ private
+
+ # id is to prevent:
+ # can not isolate a Proc because it accesses outer variables (__bmdv_i)
+ def while_loop(content, times, id:)
+ if !times.is_a?(Integer) || times <= 0
+ raise ArgumentError.new("Unexpected times: #{times.inspect}")
+ elsif times == 1
+ return content
+ end
+
+ # TODO: execute in batch
+ <<-RUBY
+__bmdv_i#{id} = 0
+while __bmdv_i#{id} < #{times}
+ #{content}
+ __bmdv_i#{id} += 1
+end
+ RUBY
+ end
+ end
+ private_constant :BenchmarkScript
+end
diff --git a/benchmark/lib/benchmark_driver/runner/size.rb b/benchmark/lib/benchmark_driver/runner/size.rb
new file mode 100644
index 0000000000..1b31f901c7
--- /dev/null
+++ b/benchmark/lib/benchmark_driver/runner/size.rb
@@ -0,0 +1,25 @@
+require 'benchmark_driver/runner/peak'
+
+# Actually the same as BenchmarkDriver::Runner::Memory
+class BenchmarkDriver::Runner::Size < BenchmarkDriver::Runner::Peak
+ METRIC = BenchmarkDriver::Metric.new(
+ name: 'Max resident set size', unit: 'bytes', larger_better: false, worse_word: 'larger',
+ )
+
+ # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
+ Job = Class.new(BenchmarkDriver::DefaultJob)
+ # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
+ JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
+
+ private
+
+ # Overriding BenchmarkDriver::Runner::Peak#metric
+ def metric
+ METRIC
+ end
+
+ # Overriding BenchmarkDriver::Runner::Peak#target
+ def target
+ 'size'
+ end
+end
diff --git a/benchmark/lib/benchmark_driver/runner/stime.rb b/benchmark/lib/benchmark_driver/runner/stime.rb
new file mode 100644
index 0000000000..4577fb0bf8
--- /dev/null
+++ b/benchmark/lib/benchmark_driver/runner/stime.rb
@@ -0,0 +1,22 @@
+require 'benchmark_driver/runner/total'
+
+class BenchmarkDriver::Runner::Stime < BenchmarkDriver::Runner::Total
+ METRIC = BenchmarkDriver::Metric.new(name: 'stime', unit: 's', larger_better: false)
+
+ # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
+ Job = Class.new(BenchmarkDriver::DefaultJob)
+ # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
+ JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
+
+ private
+
+ # Overriding BenchmarkDriver::Runner::Total#metric
+ def metric
+ METRIC
+ end
+
+ # Overriding BenchmarkDriver::Runner::Total#target
+ def target
+ :stime
+ end
+end
diff --git a/benchmark/lib/benchmark_driver/runner/total.rb b/benchmark/lib/benchmark_driver/runner/total.rb
new file mode 100644
index 0000000000..64dc14f84e
--- /dev/null
+++ b/benchmark/lib/benchmark_driver/runner/total.rb
@@ -0,0 +1,137 @@
+require 'benchmark_driver/struct'
+require 'benchmark_driver/metric'
+require 'benchmark_driver/default_job'
+require 'benchmark_driver/default_job_parser'
+require 'tempfile'
+
+class BenchmarkDriver::Runner::Total
+ METRIC = BenchmarkDriver::Metric.new(name: 'Total time', unit: 's', larger_better: false)
+
+ # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
+ Job = Class.new(BenchmarkDriver::DefaultJob)
+ # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
+ JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
+
+ # @param [BenchmarkDriver::Config::RunnerConfig] config
+ # @param [BenchmarkDriver::Output] output
+ # @param [BenchmarkDriver::Context] contexts
+ def initialize(config:, output:, contexts:)
+ @config = config
+ @output = output
+ @contexts = contexts
+ end
+
+ # This method is dynamically called by `BenchmarkDriver::JobRunner.run`
+ # @param [Array<BenchmarkDriver::Runner::Total::Job>] jobs
+ def run(jobs)
+ if jobs.any? { |job| job.loop_count.nil? }
+ raise 'missing loop_count is not supported in Ruby repository'
+ end
+
+ @output.with_benchmark do
+ jobs.each do |job|
+ @output.with_job(name: job.name) do
+ job.runnable_contexts(@contexts).each do |context|
+ duration = BenchmarkDriver::Repeater.with_repeat(config: @config, larger_better: false) do
+ run_benchmark(job, context: context)
+ end
+ @output.with_context(name: context.name, executable: context.executable, gems: context.gems, prelude: context.prelude) do
+ @output.report(values: { metric => duration }, duration: duration, loop_count: job.loop_count)
+ end
+ end
+ end
+ end
+ end
+ end
+
+ private
+
+ # @param [BenchmarkDriver::Runner::Ips::Job] job - loop_count is not nil
+ # @param [BenchmarkDriver::Context] context
+ # @return [BenchmarkDriver::Metrics]
+ def run_benchmark(job, context:)
+ benchmark = BenchmarkScript.new(
+ preludes: [context.prelude, job.prelude],
+ script: job.script,
+ teardown: job.teardown,
+ loop_count: job.loop_count,
+ )
+
+ Tempfile.open(['benchmark_driver-', '.rb']) do |f|
+ with_script(benchmark.render(result: f.path, target: target)) do |path|
+ IO.popen([*context.executable.command, path], &:read) # TODO: print stdout if verbose=2
+ if $?.success?
+ Float(f.read)
+ else
+ BenchmarkDriver::Result::ERROR
+ end
+ end
+ end
+ end
+
+ # This method is overridden by some subclasses
+ def metric
+ METRIC
+ end
+
+ # This method is overridden by some subclasses
+ def target
+ :total
+ end
+
+ def with_script(script)
+ if @config.verbose >= 2
+ sep = '-' * 30
+ $stdout.puts "\n\n#{sep}[Script begin]#{sep}\n#{script}#{sep}[Script end]#{sep}\n\n"
+ end
+
+ Tempfile.open(['benchmark_driver-', '.rb']) do |f|
+ f.puts script
+ f.close
+ return yield(f.path)
+ end
+ end
+
+ # @param [String] prelude
+ # @param [String] script
+ # @param [String] teardown
+ # @param [Integer] loop_count
+ BenchmarkScript = ::BenchmarkDriver::Struct.new(:preludes, :script, :teardown, :loop_count) do
+ # @param [String] result - A file to write result
+ def render(result:, target:)
+ prelude = preludes.reject(&:nil?).reject(&:empty?).join("\n")
+ <<-RUBY
+#{prelude}
+
+require 'benchmark'
+__bmdv_result = Benchmark.measure {
+ #{while_loop(script, loop_count)}
+}
+
+#{teardown}
+
+File.write(#{result.dump}, __bmdv_result.#{target})
+ RUBY
+ end
+
+ private
+
+ def while_loop(content, times)
+ if !times.is_a?(Integer) || times <= 0
+ raise ArgumentError.new("Unexpected times: #{times.inspect}")
+ elsif times == 1
+ return content
+ end
+
+ # TODO: execute in batch
+ <<-RUBY
+__bmdv_i = 0
+while __bmdv_i < #{times}
+ #{content}
+ __bmdv_i += 1
+end
+ RUBY
+ end
+ end
+ private_constant :BenchmarkScript
+end
diff --git a/benchmark/lib/benchmark_driver/runner/utime.rb b/benchmark/lib/benchmark_driver/runner/utime.rb
new file mode 100644
index 0000000000..b61d83a188
--- /dev/null
+++ b/benchmark/lib/benchmark_driver/runner/utime.rb
@@ -0,0 +1,22 @@
+require 'benchmark_driver/runner/total'
+
+class BenchmarkDriver::Runner::Utime < BenchmarkDriver::Runner::Total
+ METRIC = BenchmarkDriver::Metric.new(name: 'utime', unit: 's', larger_better: false)
+
+ # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
+ Job = Class.new(BenchmarkDriver::DefaultJob)
+ # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
+ JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
+
+ private
+
+ # Overriding BenchmarkDriver::Runner::Total#metric
+ def metric
+ METRIC
+ end
+
+ # Overriding BenchmarkDriver::Runner::Total#target
+ def target
+ :utime
+ end
+end
diff --git a/benchmark/lib/load.rb b/benchmark/lib/load.rb
new file mode 100644
index 0000000000..31b770c484
--- /dev/null
+++ b/benchmark/lib/load.rb
@@ -0,0 +1,18 @@
+# How to use this file:
+# 1. write a `$(srcdir)/test.rb` like:
+=begin
+require_relative 'benchmark/lib/load'
+
+Benchmark.driver(repeat_count: 5){|x|
+ x.executable name: 'clean-miniruby', command: %w'../clean-trunk/miniruby'
+ x.executable name: 'modif-miniruby', command: %w'./miniruby'
+
+ x.report %q{
+ h = {a: 1, b: 2, c: 3, d: 4}
+ }
+}
+=end
+#
+# 2. `make run`
+$:.unshift(File.join(__dir__, '../benchmark-driver/lib'))
+require 'benchmark_driver'
diff --git a/benchmark/loop_for.rb b/benchmark/loop_for.rb
new file mode 100644
index 0000000000..0fc4cc1511
--- /dev/null
+++ b/benchmark/loop_for.rb
@@ -0,0 +1,3 @@
+for i in 1..30_000_000
+ #
+end
diff --git a/benchmark/loop_generator.rb b/benchmark/loop_generator.rb
new file mode 100644
index 0000000000..d3375c744c
--- /dev/null
+++ b/benchmark/loop_generator.rb
@@ -0,0 +1,14 @@
+max = 600000
+
+if defined? Fiber
+ gen = (1..max).each
+ loop do
+ gen.next
+ end
+else
+ require 'generator'
+ gen = Generator.new((0..max))
+ while gen.next?
+ gen.next
+ end
+end
diff --git a/benchmark/loop_times.rb b/benchmark/loop_times.rb
new file mode 100644
index 0000000000..521f72ad1a
--- /dev/null
+++ b/benchmark/loop_times.rb
@@ -0,0 +1 @@
+30_000_000.times{|e|}
diff --git a/benchmark/loop_whileloop.rb b/benchmark/loop_whileloop.rb
new file mode 100644
index 0000000000..0072822c06
--- /dev/null
+++ b/benchmark/loop_whileloop.rb
@@ -0,0 +1,4 @@
+i = 0
+while i<30_000_000 # benchmark loop 1
+ i += 1
+end
diff --git a/benchmark/loop_whileloop2.rb b/benchmark/loop_whileloop2.rb
new file mode 100644
index 0000000000..47d02dffc4
--- /dev/null
+++ b/benchmark/loop_whileloop2.rb
@@ -0,0 +1,4 @@
+i = 0
+while i< 6_000_000 # benchmark loop 2
+ i += 1
+end
diff --git a/benchmark/marshal_dump_flo.rb b/benchmark/marshal_dump_flo.rb
new file mode 100644
index 0000000000..9b8d0c6afb
--- /dev/null
+++ b/benchmark/marshal_dump_flo.rb
@@ -0,0 +1,2 @@
+bug10761 = 10000.times.map { |x| x.to_f }
+100.times { Marshal.dump(bug10761) }
diff --git a/benchmark/marshal_dump_load_geniv.rb b/benchmark/marshal_dump_load_geniv.rb
new file mode 100644
index 0000000000..8252ad90fa
--- /dev/null
+++ b/benchmark/marshal_dump_load_geniv.rb
@@ -0,0 +1,10 @@
+a = ''
+a.instance_eval do
+ @a = :a
+ @b = :b
+ @c = :c
+end
+100000.times do
+ a = Marshal.load(Marshal.dump(a))
+end
+#p(a.instance_eval { @a == :a && @b == :b && @c == :c })
diff --git a/benchmark/marshal_dump_load_integer.yml b/benchmark/marshal_dump_load_integer.yml
new file mode 100644
index 0000000000..78ebf823d2
--- /dev/null
+++ b/benchmark/marshal_dump_load_integer.yml
@@ -0,0 +1,22 @@
+prelude: |
+ smallint_array = 1000.times.map { |x| x }
+ bigint32_array = 1000.times.map { |x| x + 2**32 }
+ bigint64_array = 1000.times.map { |x| x + 2**64 }
+
+ smallint_dump = Marshal.dump(smallint_array)
+ bigint32_dump = Marshal.dump(bigint32_array)
+ bigint64_dump = Marshal.dump(bigint64_array)
+benchmark:
+ marshal_dump_integer_small: |
+ Marshal.dump(smallint_array)
+ marshal_dump_integer_over_32_bit: |
+ Marshal.dump(bigint32_array)
+ marshal_dump_integer_over_64_bit: |
+ Marshal.dump(bigint64_array)
+ marshal_load_integer_small: |
+ Marshal.load(smallint_dump)
+ marshal_load_integer_over_32_bit: |
+ Marshal.load(bigint32_dump)
+ marshal_load_integer_over_64_bit: |
+ Marshal.load(bigint64_dump)
+loop_count: 4000
diff --git a/benchmark/marshal_dump_load_time.rb b/benchmark/marshal_dump_load_time.rb
new file mode 100644
index 0000000000..e29743b791
--- /dev/null
+++ b/benchmark/marshal_dump_load_time.rb
@@ -0,0 +1 @@
+100000.times { Marshal.load(Marshal.dump(Time.now)) }
diff --git a/benchmark/masgn.yml b/benchmark/masgn.yml
new file mode 100644
index 0000000000..31cb8ee4a3
--- /dev/null
+++ b/benchmark/masgn.yml
@@ -0,0 +1,53 @@
+prelude: |
+ a = [nil] * 3
+ b = Class.new{attr_writer :a, :b, :c}.new
+ c = d = e = f = g = h = i = nil
+benchmark:
+ array2_2: "c = (a[0], a[1] = 1, 2)"
+ array2_3: "c = (a[0], a[1] = 1, 2, 3)"
+ array3_2: "c = (a[0], a[1], a[2] = 1, 2)"
+ array3_3: "c = (a[0], a[1], a[2] = 1, 2, 3)"
+ attr2_2: "c = (b.a, b.b = 1, 2)"
+ attr2_3: "c = (b.a, b.b = 1, 2, 3)"
+ attr3_2: "c = (b.a, b.b, b.c = 1, 2)"
+ attr3_3: "c = (b.a, b.b, b.c = 1, 2, 3)"
+ lvar2_2: "c = (d, e = 1, 2)"
+ lvar2_3: "c = (d, e = 1, 2, 3)"
+ lvar3_2: "c = (d, e, f = 1, 2)"
+ lvar3_3: "c = (d, e, f = 1, 2, 3)"
+ array2_2p: "(a[0], a[1] = 1, 2; nil)"
+ array2_3p: "(a[0], a[1] = 1, 2, 3; nil)"
+ array3_2p: "(a[0], a[1], a[2] = 1, 2; nil)"
+ array3_3p: "(a[0], a[1], a[2] = 1, 2, 3; nil)"
+ attr2_2p: "(b.a, b.b = 1, 2; nil)"
+ attr2_3p: "(b.a, b.b = 1, 2, 3; nil)"
+ attr3_2p: "(b.a, b.b, b.c = 1, 2; nil)"
+ attr3_3p: "(b.a, b.b, b.c = 1, 2, 3; nil)"
+ lvar2_2p: "(d, e = 1, 2; nil)"
+ lvar2_3p: "(d, e = 1, 2, 3; nil)"
+ lvar3_2p: "(d, e, f = 1, 2; nil)"
+ lvar3_3p: "(d, e, f = 1, 2, 3; nil)"
+ array2_2lv: "c = (a[0], a[1] = g, h)"
+ array2_ilv: "c = (a[0], a[1] = g, h, i)"
+ arrayi_2lv: "c = (a[0], a[1], a[2] = g, h)"
+ arrayi_ilv: "c = (a[0], a[1], a[2] = g, h, i)"
+ attr2_2lv: "c = (b.a, b.b = g, h)"
+ attr2_ilv: "c = (b.a, b.b = g, h, i)"
+ attri_2lv: "c = (b.a, b.b, b.c = g, h)"
+ attri_ilv: "c = (b.a, b.b, b.c = g, h, i)"
+ lvar2_2lv: "c = (d, e = g, h)"
+ lvar2_ilv: "c = (d, e = g, h, i)"
+ lvari_2lv: "c = (d, e, f = g, h)"
+ lvari_ilv: "c = (d, e, f = g, h, i)"
+ array2_2plv: "(a[0], a[1] = g, h; nil)"
+ array2_iplv: "(a[0], a[1] = g, h, i; nil)"
+ arrayi_2plv: "(a[0], a[1], a[2] = g, h; nil)"
+ arrayi_iplv: "(a[0], a[1], a[2] = g, h, i; nil)"
+ attr2_2plv: "(b.a, b.b = g, h; nil)"
+ attr2_iplv: "(b.a, b.b = g, h, i; nil)"
+ attri_2plv: "(b.a, b.b, b.c = g, h; nil)"
+ attri_iplv: "(b.a, b.b, b.c = g, h, i; nil)"
+ lvar2_2plv: "(d, e = g, h; nil)"
+ lvar2_iplv: "(d, e = g, h, i; nil)"
+ lvari_2plv: "(d, e, f = g, h; nil)"
+ lvari_iplv: "(d, e, f = g, h, i; nil)"
diff --git a/benchmark/match_gt4.rb b/benchmark/match_gt4.rb
new file mode 100644
index 0000000000..ffda109912
--- /dev/null
+++ b/benchmark/match_gt4.rb
@@ -0,0 +1 @@
+1000000.times { /(.)(.)(\d+)(\d)/.match("THX1138.") }
diff --git a/benchmark/match_small.rb b/benchmark/match_small.rb
new file mode 100644
index 0000000000..3b743d484a
--- /dev/null
+++ b/benchmark/match_small.rb
@@ -0,0 +1 @@
+1000000.times { 'haystack'.match(/hay/) }
diff --git a/benchmark/method_bind_call.yml b/benchmark/method_bind_call.yml
new file mode 100644
index 0000000000..9e0e046ed4
--- /dev/null
+++ b/benchmark/method_bind_call.yml
@@ -0,0 +1,16 @@
+prelude: |
+ named_module = Kernel
+
+ module FakeName
+ def self.name
+ "NotMyame".freeze
+ end
+ end
+
+ MOD_NAME = Module.instance_method(:name)
+
+benchmark:
+ fastpath: MOD_NAME.bind_call(Kernel)
+ slowpath: MOD_NAME.bind_call(FakeName)
+
+loop_count: 100_000
diff --git a/benchmark/mjit_exivar.yml b/benchmark/mjit_exivar.yml
new file mode 100644
index 0000000000..2584fa6410
--- /dev/null
+++ b/benchmark/mjit_exivar.yml
@@ -0,0 +1,18 @@
+type: lib/benchmark_driver/runner/mjit
+prelude: |
+ class Bench < Hash
+ def initialize
+ @exivar = nil
+ end
+
+ def exivar
+ @exivar
+ end
+ end
+
+ bench = Bench.new
+
+benchmark:
+ mjit_exivar: bench.exivar
+
+loop_count: 200000000
diff --git a/benchmark/mjit_integer.yml b/benchmark/mjit_integer.yml
new file mode 100644
index 0000000000..a6b5c9ee16
--- /dev/null
+++ b/benchmark/mjit_integer.yml
@@ -0,0 +1,32 @@
+type: lib/benchmark_driver/runner/mjit
+prelude: |
+ def mjit_abs(int) int.abs end
+ def mjit_bit_length(int) int.bit_length end
+ def mjit_comp(int) ~int end
+ def mjit_even?(int) int.even? end
+ def mjit_integer?(int) int.integer? end
+ def mjit_magnitude(int) int.magnitude end
+ def mjit_odd?(int) int.odd? end
+ def mjit_ord(int) int.ord end
+ def mjit_size(int) int.size end
+ def mjit_to_i(int) int.to_i end
+ def mjit_to_int(int) int.to_int end
+ def mjit_uminus(int) -int end
+ def mjit_zero?(int) int.zero? end
+
+benchmark:
+ - mjit_abs(-1)
+ - mjit_bit_length(100)
+ - mjit_comp(1)
+ - mjit_even?(2)
+ - mjit_integer?(0)
+ - mjit_magnitude(-1)
+ - mjit_odd?(1)
+ - mjit_ord(1)
+ - mjit_size(1)
+ - mjit_to_i(1)
+ - mjit_to_int(1)
+ - mjit_uminus(1)
+ - mjit_zero?(0)
+
+loop_count: 40000000
diff --git a/benchmark/mjit_kernel.yml b/benchmark/mjit_kernel.yml
new file mode 100644
index 0000000000..7720e65c2c
--- /dev/null
+++ b/benchmark/mjit_kernel.yml
@@ -0,0 +1,20 @@
+type: lib/benchmark_driver/runner/mjit
+prelude: |
+ def mjit_class(obj)
+ obj.class
+ end
+
+ def mjit_frozen?(obj)
+ obj.frozen?
+ end
+
+ str = ""
+ fstr = "".freeze
+
+benchmark:
+ - mjit_class(self)
+ - mjit_class(1)
+ - mjit_frozen?(str)
+ - mjit_frozen?(fstr)
+
+loop_count: 40000000
diff --git a/benchmark/mjit_leave.yml b/benchmark/mjit_leave.yml
new file mode 100644
index 0000000000..9ac68b164b
--- /dev/null
+++ b/benchmark/mjit_leave.yml
@@ -0,0 +1,8 @@
+type: lib/benchmark_driver/runner/mjit
+prelude: |
+ def leave
+ nil
+ end
+benchmark:
+ mjit_leave: leave
+loop_count: 200000000
diff --git a/benchmark/mjit_opt_cc_insns.yml b/benchmark/mjit_opt_cc_insns.yml
new file mode 100644
index 0000000000..fed6d34bd5
--- /dev/null
+++ b/benchmark/mjit_opt_cc_insns.yml
@@ -0,0 +1,27 @@
+# opt_* insns using vm_method_cfunc_is with send-compatible operands:
+# * opt_nil_p
+# * opt_not
+# * opt_eq
+type: lib/benchmark_driver/runner/mjit
+prelude: |
+ def mjit_nil?(obj)
+ obj.nil?
+ end
+
+ def mjit_not(obj)
+ !obj
+ end
+
+ def mjit_eq(a, b)
+ a == b
+ end
+
+benchmark:
+ - script: mjit_nil?(1)
+ loop_count: 40000000
+ - script: mjit_not(1)
+ loop_count: 40000000
+ - script: mjit_eq(1, nil)
+ loop_count: 8000000
+ - script: mjit_eq(nil, 1)
+ loop_count: 8000000
diff --git a/benchmark/mjit_struct_aref.yml b/benchmark/mjit_struct_aref.yml
new file mode 100644
index 0000000000..bfba1323f2
--- /dev/null
+++ b/benchmark/mjit_struct_aref.yml
@@ -0,0 +1,10 @@
+type: lib/benchmark_driver/runner/mjit
+prelude: |
+ def mjit_struct_aref(struct)
+ struct.aa
+ end
+ struct = Struct.new(:a0, :a1, :a2, :a3, :a4, :a5, :a6, :a7, :a8, :a9, :aa).new
+
+benchmark: mjit_struct_aref(struct)
+
+loop_count: 40000000
diff --git a/benchmark/module_eqq.yml b/benchmark/module_eqq.yml
new file mode 100644
index 0000000000..a561fb86dc
--- /dev/null
+++ b/benchmark/module_eqq.yml
@@ -0,0 +1,27 @@
+prelude: |
+ class SimpleClass; end
+ class MediumClass
+ 10.times { include Module.new }
+ end
+ class LargeClass
+ 100.times { include Module.new }
+ end
+ class HugeClass
+ 300.times { include Module.new }
+ end
+ SimpleObj = SimpleClass.new
+ MediumObj = MediumClass.new
+ LargeObj = LargeClass.new
+ HugeObj = HugeClass.new
+benchmark:
+ simple_class_eqq_simple_obj: |
+ SimpleClass === SimpleObj
+ medium_class_eqq_simple_obj: |
+ MediumClass === SimpleObj
+ simple_class_eqq_medium_obj: |
+ SimpleClass === MediumObj
+ simple_class_eqq_large_obj: |
+ SimpleClass === LargeObj
+ simple_class_eqq_huge_obj: |
+ SimpleClass === HugeObj
+loop_count: 20000000
diff --git a/benchmark/nil_p.yml b/benchmark/nil_p.yml
new file mode 100644
index 0000000000..79ba4f2177
--- /dev/null
+++ b/benchmark/nil_p.yml
@@ -0,0 +1,9 @@
+prelude: |
+ class Niller; def nil?; true; end; end
+ xnil, notnil = nil, Object.new
+ niller = Niller.new
+benchmark:
+ - xnil.nil?
+ - notnil.nil?
+ - niller.nil?
+loop_count: 10000000
diff --git a/benchmark/nilclass.yml b/benchmark/nilclass.yml
new file mode 100644
index 0000000000..fba67a5f6a
--- /dev/null
+++ b/benchmark/nilclass.yml
@@ -0,0 +1,6 @@
+benchmark:
+ to_i: |
+ nil.to_i
+ to_f: |
+ nil.to_f
+loop_count: 100000
diff --git a/benchmark/num_zero_p.yml b/benchmark/num_zero_p.yml
new file mode 100644
index 0000000000..2195963433
--- /dev/null
+++ b/benchmark/num_zero_p.yml
@@ -0,0 +1,8 @@
+benchmark:
+ - 0.zero?
+ - 1.zero?
+ - 0r.zero?
+ - 1r.zero?
+ - 0i.zero?
+ - 1i.zero?
+loop_count: 50000000
diff --git a/benchmark/numeric_methods.yml b/benchmark/numeric_methods.yml
new file mode 100644
index 0000000000..1384902935
--- /dev/null
+++ b/benchmark/numeric_methods.yml
@@ -0,0 +1,29 @@
+prelude: |
+ int = 42
+ flo = 4.2
+benchmark:
+ real?: |
+ int.real?
+ integer?: |
+ flo.integer?
+ finite?: |
+ int.finite?
+ infinite?: |
+ int.infinite?
+ integer_real: |
+ int.real
+ float_real: |
+ flo.real
+ integr_imag: |
+ int.imag
+ float_imag: |
+ flo.imag
+ integer_conj: |
+ int.conj
+ float_conj: |
+ flo.conj
+ integer_numerator: |
+ int.numerator
+ integer_denominator: |
+ int.denominator
+loop_count: 20000000
diff --git a/benchmark/object_allocate.yml b/benchmark/object_allocate.yml
new file mode 100644
index 0000000000..93ff463e41
--- /dev/null
+++ b/benchmark/object_allocate.yml
@@ -0,0 +1,21 @@
+prelude: |
+ class Eight
+ 8.times { include(Module.new) }
+ end
+ class ThirtyTwo
+ 32.times { include(Module.new) }
+ end
+ class SixtyFour
+ 64.times { include(Module.new) }
+ end
+ class OneTwentyEight
+ 128.times { include(Module.new) }
+ end
+ # Disable GC to see raw throughput:
+ GC.disable
+benchmark:
+ allocate_8_deep: Eight.new
+ allocate_32_deep: ThirtyTwo.new
+ allocate_64_deep: SixtyFour.new
+ allocate_128_deep: OneTwentyEight.new
+loop_count: 100000
diff --git a/benchmark/objspace_dump_all.yml b/benchmark/objspace_dump_all.yml
new file mode 100644
index 0000000000..ebab562d2e
--- /dev/null
+++ b/benchmark/objspace_dump_all.yml
@@ -0,0 +1,13 @@
+prelude: |
+ require 'objspace'
+ require 'tempfile'
+ $objs = 1_000.times.map { Object.new }
+ $strings = 1_000.times.map { |i| "string #{i}" }
+ $file = Tempfile.new('heap')
+ $dev_null = File.open(File::NULL, 'w+')
+
+benchmark:
+ dump_all_string: "ObjectSpace.dump_all(output: :string)"
+ dump_all_file: "ObjectSpace.dump_all(output: $file)"
+ dump_all_dev_null: "ObjectSpace.dump_all(output: $dev_null)"
+loop_count: 1
diff --git a/benchmark/other-lang/ack.pl b/benchmark/other-lang/ack.pl
new file mode 100644
index 0000000000..201e22ddfa
--- /dev/null
+++ b/benchmark/other-lang/ack.pl
@@ -0,0 +1,11 @@
+use integer;
+
+sub Ack {
+ return $_[0] ? ($_[1] ? Ack($_[0]-1, Ack($_[0], $_[1]-1))
+ : Ack($_[0]-1, 1))
+ : $_[1]+1;
+}
+
+my $NUM = 9;
+$NUM = 1 if ($NUM < 1);
+my $ack = Ack(3, $NUM);
diff --git a/benchmark/other-lang/ack.py b/benchmark/other-lang/ack.py
new file mode 100644
index 0000000000..9968e7cfcf
--- /dev/null
+++ b/benchmark/other-lang/ack.py
@@ -0,0 +1,16 @@
+import sys
+sys.setrecursionlimit(5000000)
+
+def Ack(M, N):
+ if (not M):
+ return( N + 1 )
+ if (not N):
+ return( Ack(M-1, 1) )
+ return( Ack(M-1, Ack(M, N-1)) )
+
+def main():
+ NUM = 9
+ sys.setrecursionlimit(10000)
+ Ack(3, NUM)
+
+main()
diff --git a/benchmark/other-lang/ack.rb b/benchmark/other-lang/ack.rb
new file mode 100644
index 0000000000..7451bed6c4
--- /dev/null
+++ b/benchmark/other-lang/ack.rb
@@ -0,0 +1,12 @@
+def ack(m, n)
+ if m == 0 then
+ n + 1
+ elsif n == 0 then
+ ack(m - 1, 1)
+ else
+ ack(m - 1, ack(m, n - 1))
+ end
+end
+
+NUM = 9
+ack(3, NUM)
diff --git a/benchmark/other-lang/ack.scm b/benchmark/other-lang/ack.scm
new file mode 100644
index 0000000000..a80b73ba55
--- /dev/null
+++ b/benchmark/other-lang/ack.scm
@@ -0,0 +1,7 @@
+(define (ack m n)
+ (cond ((zero? m) (+ n 1))
+ ((zero? n) (ack (- m 1) 1))
+ (else (ack (- m 1) (ack m (- n 1))))))
+
+(ack 3 9)
+
diff --git a/benchmark/other-lang/eval.rb b/benchmark/other-lang/eval.rb
new file mode 100644
index 0000000000..48a2cea019
--- /dev/null
+++ b/benchmark/other-lang/eval.rb
@@ -0,0 +1,66 @@
+
+Bench = %w(
+ loop
+ ack
+ fib
+ tak
+ fact
+)
+
+Lang = <<EOP.map{|l| l.strip}
+ ruby-cyg
+ ../../../test6/miniruby
+ perl
+ python
+ gosh
+EOP
+
+Bench.replace ['loop2']
+Lang.replace ['ruby-cyg']
+
+Ext = %w(
+ .rb
+ .rb
+ .pl
+ .py
+ .scm
+)
+
+p Bench
+p Lang
+
+require 'benchmark'
+
+def bench cmd
+ m = Benchmark.measure{
+ #p cmd
+ system(cmd)
+ }
+ [m.utime, m.real]
+end
+
+Result = []
+Bench.each{|b|
+ r = []
+ Lang.each_with_index{|l, idx|
+ cmd = "#{l} #{b}#{Ext[idx]}"
+ r << bench(cmd)
+ }
+ Result << r
+}
+
+require 'pp'
+# utime
+puts Lang.join("\t")
+Bench.each_with_index{|b, bi|
+ print b, "\t"
+ puts Result[bi].map{|e| e[0]}.join("\t")
+}
+
+# rtime
+puts Lang.join("\t")
+Bench.each_with_index{|b, bi|
+ print b, "\t"
+ puts Result[bi].map{|e| e[1]}.join("\t")
+}
+
diff --git a/benchmark/other-lang/fact.pl b/benchmark/other-lang/fact.pl
new file mode 100644
index 0000000000..a9b0b69cdf
--- /dev/null
+++ b/benchmark/other-lang/fact.pl
@@ -0,0 +1,13 @@
+sub fact{
+ my $n = @_[0];
+ if($n < 2){
+ return 1;
+ }
+ else{
+ return $n * fact($n-1);
+ }
+}
+
+for($i=0; $i<10000; $i++){
+ &fact(100);
+}
diff --git a/benchmark/other-lang/fact.py b/benchmark/other-lang/fact.py
new file mode 100644
index 0000000000..1ce9f76275
--- /dev/null
+++ b/benchmark/other-lang/fact.py
@@ -0,0 +1,18 @@
+#import sys
+#sys.setrecursionlimit(1000)
+
+def factL(n):
+ r = 1
+ for x in range(2, n+1):
+ r *= x
+ return r
+
+def factR(n):
+ if n < 2:
+ return 1
+ else:
+ return n * factR(n-1)
+
+for i in range(10000):
+ factR(100)
+
diff --git a/benchmark/other-lang/fact.rb b/benchmark/other-lang/fact.rb
new file mode 100644
index 0000000000..6cedc752cd
--- /dev/null
+++ b/benchmark/other-lang/fact.rb
@@ -0,0 +1,13 @@
+def fact(n)
+ if n < 2
+ 1
+ else
+ n * fact(n-1)
+ end
+end
+
+i = 0
+while i<10000
+ i += 1
+ fact(100)
+end
diff --git a/benchmark/other-lang/fact.scm b/benchmark/other-lang/fact.scm
new file mode 100644
index 0000000000..c98a7fedd3
--- /dev/null
+++ b/benchmark/other-lang/fact.scm
@@ -0,0 +1,8 @@
+(define (fact n)
+ (if (< n 2)
+ 1
+ (* n (fact (- n 1)))))
+
+(dotimes (i 10000)
+ (fact 100))
+
diff --git a/benchmark/other-lang/fib.pl b/benchmark/other-lang/fib.pl
new file mode 100644
index 0000000000..a46f666d1e
--- /dev/null
+++ b/benchmark/other-lang/fib.pl
@@ -0,0 +1,11 @@
+sub fib{
+ my $n = $_[0];
+ if($n < 3){
+ return 1;
+ }
+ else{
+ return fib($n-1) + fib($n-2);
+ }
+};
+
+&fib(34);
diff --git a/benchmark/other-lang/fib.py b/benchmark/other-lang/fib.py
new file mode 100644
index 0000000000..45f2bceb8d
--- /dev/null
+++ b/benchmark/other-lang/fib.py
@@ -0,0 +1,7 @@
+def fib(n):
+ if n < 3:
+ return 1
+ else:
+ return fib(n-1) + fib(n-2)
+
+fib(34)
diff --git a/benchmark/other-lang/fib.rb b/benchmark/other-lang/fib.rb
new file mode 100644
index 0000000000..ec587eabe0
--- /dev/null
+++ b/benchmark/other-lang/fib.rb
@@ -0,0 +1,9 @@
+def fib n
+ if n < 3
+ 1
+ else
+ fib(n-1) + fib(n-2)
+ end
+end
+
+fib(34)
diff --git a/benchmark/other-lang/fib.scm b/benchmark/other-lang/fib.scm
new file mode 100644
index 0000000000..2fc4e225bd
--- /dev/null
+++ b/benchmark/other-lang/fib.scm
@@ -0,0 +1,7 @@
+(define (fib n)
+ (if (< n 3)
+ 1
+ (+ (fib (- n 1)) (fib (- n 2)))))
+
+(fib 34)
+
diff --git a/benchmark/other-lang/loop.pl b/benchmark/other-lang/loop.pl
new file mode 100644
index 0000000000..2777490aaa
--- /dev/null
+++ b/benchmark/other-lang/loop.pl
@@ -0,0 +1,3 @@
+for($i=0; $i<30000000; $i++){
+}
+
diff --git a/benchmark/other-lang/loop.py b/benchmark/other-lang/loop.py
new file mode 100644
index 0000000000..003749bf3a
--- /dev/null
+++ b/benchmark/other-lang/loop.py
@@ -0,0 +1,2 @@
+for i in xrange(30000000):
+ pass
diff --git a/benchmark/other-lang/loop.rb b/benchmark/other-lang/loop.rb
new file mode 100644
index 0000000000..b367b9dbf3
--- /dev/null
+++ b/benchmark/other-lang/loop.rb
@@ -0,0 +1,4 @@
+i = 0
+while i<30000000
+ i += 1
+end
diff --git a/benchmark/other-lang/loop.scm b/benchmark/other-lang/loop.scm
new file mode 100644
index 0000000000..3364f7e679
--- /dev/null
+++ b/benchmark/other-lang/loop.scm
@@ -0,0 +1 @@
+(dotimes (x 30000000))
diff --git a/benchmark/other-lang/loop2.rb b/benchmark/other-lang/loop2.rb
new file mode 100644
index 0000000000..df8fffc1ff
--- /dev/null
+++ b/benchmark/other-lang/loop2.rb
@@ -0,0 +1 @@
+30000000.times{}
diff --git a/benchmark/other-lang/tak.pl b/benchmark/other-lang/tak.pl
new file mode 100644
index 0000000000..7e748a67c6
--- /dev/null
+++ b/benchmark/other-lang/tak.pl
@@ -0,0 +1,11 @@
+sub tak {
+ local($x, $y, $z) = @_;
+ if (!($y < $x)) {
+ return $z;
+ } else {
+ return &tak(&tak($x - 1, $y, $z),
+ &tak($y - 1, $z, $x),
+ &tak($z - 1, $x, $y));
+ }
+}
+&tak(18, 9, 0);
diff --git a/benchmark/other-lang/tak.py b/benchmark/other-lang/tak.py
new file mode 100644
index 0000000000..04f3f6829c
--- /dev/null
+++ b/benchmark/other-lang/tak.py
@@ -0,0 +1,8 @@
+def tak(x, y, z):
+ if not(y<x):
+ return z
+ else:
+ return tak(tak(x-1, y, z),
+ tak(y-1, z, x),
+ tak(z-1, x, y))
+tak(18, 9, 0)
diff --git a/benchmark/other-lang/tak.rb b/benchmark/other-lang/tak.rb
new file mode 100644
index 0000000000..efe5380f4e
--- /dev/null
+++ b/benchmark/other-lang/tak.rb
@@ -0,0 +1,13 @@
+
+def tak x, y, z
+ unless y < x
+ z
+ else
+ tak( tak(x-1, y, z),
+ tak(y-1, z, x),
+ tak(z-1, x, y))
+ end
+end
+
+tak(18, 9, 0)
+
diff --git a/benchmark/other-lang/tak.scm b/benchmark/other-lang/tak.scm
new file mode 100644
index 0000000000..52a7629ee5
--- /dev/null
+++ b/benchmark/other-lang/tak.scm
@@ -0,0 +1,10 @@
+(define (tak x y z)
+ (if (not (< y x))
+ z
+ (tak (tak (- x 1) y z)
+ (tak (- y 1) z x)
+ (tak (- z 1) x y))))
+
+(tak 18 9 0)
+
+
diff --git a/benchmark/pm_array.yml b/benchmark/pm_array.yml
new file mode 100644
index 0000000000..babb65a289
--- /dev/null
+++ b/benchmark/pm_array.yml
@@ -0,0 +1,19 @@
+prelude: |
+ def call(*val)
+ case val
+ in [String => body]
+ [200, {}, [body]]
+ in [Integer => status]
+ [status, {}, [""]]
+ in [Integer, String] => response
+ [response[0], {}, [response[1]]]
+ in [Integer, Hash, String] => response
+ [response[0], response[1], [response[2]]]
+ end
+ end
+
+benchmark:
+ first_match: call("ok")
+ second_match: call(401)
+ third_match: call(200, "ok")
+ fourth_match: call(201, {}, "created")
diff --git a/benchmark/ractor_const.yml b/benchmark/ractor_const.yml
new file mode 100644
index 0000000000..d7ab74bdca
--- /dev/null
+++ b/benchmark/ractor_const.yml
@@ -0,0 +1,4 @@
+type: lib/benchmark_driver/runner/ractor
+benchmark:
+ ractor_const: Object
+ractor: 1
diff --git a/benchmark/ractor_float_to_s.yml b/benchmark/ractor_float_to_s.yml
new file mode 100644
index 0000000000..8f492be668
--- /dev/null
+++ b/benchmark/ractor_float_to_s.yml
@@ -0,0 +1,8 @@
+type: lib/benchmark_driver/runner/ractor
+prelude: |
+ FLOATS = [*0.0.step(1.0, 0.001)]
+benchmark:
+ ractor_float_to_s: |
+ FLOATS.each {|f| f.to_s}
+loop_count: 100
+ractor: 2
diff --git a/benchmark/range_last.yml b/benchmark/range_last.yml
new file mode 100644
index 0000000000..a6674f82ee
--- /dev/null
+++ b/benchmark/range_last.yml
@@ -0,0 +1,4 @@
+benchmark:
+ - (1..1_000_000).last(100)
+ - (1..1_000_000).last(1000)
+ - (1..1_000_000).last(10000)
diff --git a/benchmark/range_min.yml b/benchmark/range_min.yml
new file mode 100644
index 0000000000..9e60dd7308
--- /dev/null
+++ b/benchmark/range_min.yml
@@ -0,0 +1,2 @@
+benchmark:
+ - (1..10).min
diff --git a/benchmark/realpath.yml b/benchmark/realpath.yml
new file mode 100644
index 0000000000..90a029d5b9
--- /dev/null
+++ b/benchmark/realpath.yml
@@ -0,0 +1,30 @@
+prelude: |
+ f = File
+ pwd = Dir.pwd
+ Dir.mkdir('b') unless f.directory?('b')
+ f.write('b/a', '') unless f.file?('b/a')
+
+ relative = 'b/a'
+ absolute = File.join(pwd, relative)
+ dir = 'b'
+ file = 'a'
+
+ relative_dir = 'b/c'
+ absolute_dir = File.join(pwd, relative_dir)
+ file_dir = 'c'
+benchmark:
+ relative_nil: "f.realpath(relative, nil)"
+ absolute_nil: "f.realpath(absolute, nil)"
+ relative_relative: "f.realpath(file, dir)"
+ absolute_relative: "f.realpath(absolute, dir)"
+ relative_absolute: "f.realpath(relative, pwd)"
+ relative_nil_dir: "f.realdirpath(relative_dir, nil)"
+ absolute_nil_dir: "f.realdirpath(absolute_dir, nil)"
+ relative_relative_dir: "f.realdirpath(file_dir, dir)"
+ absolute_relative_dir: "f.realdirpath(absolute_dir, dir)"
+ relative_absolute_dir: "f.realdirpath(relative_dir, pwd)"
+ relative_nil_notexist: "f.realpath(relative_dir, nil) rescue nil"
+ absolute_nil_notexist: "f.realpath(absolute_dir, nil) rescue nil"
+ relative_relative_notexist: "f.realpath(file_dir, dir) rescue nil"
+ absolute_relative_notexist: "f.realpath(absolute_dir, dir) rescue nil"
+ relative_absolute_notexist: "f.realpath(relative_dir, pwd) rescue nil"
diff --git a/benchmark/require.yml b/benchmark/require.yml
new file mode 100644
index 0000000000..09f218cf08
--- /dev/null
+++ b/benchmark/require.yml
@@ -0,0 +1,32 @@
+prelude: |
+ require "fileutils"
+
+ def prepare
+ num_files = 10000
+
+ basename = File.dirname($0)
+ data_dir = File.join(basename, "bm_require.data")
+
+ # skip if all of files exists
+ if File.exist?(File.join(data_dir, "c#{num_files}.rb"))
+ return
+ end
+
+ FileUtils.mkdir_p(data_dir)
+
+ 1.upto(num_files) do |i|
+ File.write("#{data_dir}/c#{i}.rb", "class C#{i}\n""end\n")
+ end
+ end
+
+ prepare
+benchmark:
+ require: |
+ $:.push File.join(File.dirname(__FILE__), "bm_require.data")
+
+ 1.upto(10000) do |i|
+ require "c#{i}"
+ end
+
+ $:.pop
+loop_count: 1
diff --git a/benchmark/require_thread.yml b/benchmark/require_thread.yml
new file mode 100644
index 0000000000..0c63257106
--- /dev/null
+++ b/benchmark/require_thread.yml
@@ -0,0 +1,40 @@
+prelude: |
+ require "fileutils"
+
+ def prepare
+ num_files = 10000
+
+ basename = File.dirname($0)
+ data_dir = File.join(basename, "bm_require.data")
+
+ # skip if all of files exists
+ if File.exist?(File.join(data_dir, "c#{num_files}.rb"))
+ return
+ end
+
+ FileUtils.mkdir_p(data_dir)
+
+ 1.upto(num_files) do |i|
+ File.write("#{data_dir}/c#{i}.rb", "class C#{i}\n""end\n")
+ end
+ end
+
+ prepare
+benchmark:
+ require_thread: |
+ $:.push File.join(File.dirname(__FILE__), "bm_require.data")
+
+ i=0
+ t = Thread.new do
+ while true
+ i = i+1 # dummy loop
+ end
+ end
+
+ 1.upto(100) do |i|
+ require "c#{i}"
+ end
+
+ $:.pop
+ t.kill
+loop_count: 1
diff --git a/benchmark/securerandom.rb b/benchmark/securerandom.rb
new file mode 100644
index 0000000000..a082ea6d5b
--- /dev/null
+++ b/benchmark/securerandom.rb
@@ -0,0 +1,5 @@
+require "securerandom"
+
+20_0000.times do
+ SecureRandom.random_number(100)
+end
diff --git a/benchmark/so_ackermann.rb b/benchmark/so_ackermann.rb
new file mode 100644
index 0000000000..4effa1ecaf
--- /dev/null
+++ b/benchmark/so_ackermann.rb
@@ -0,0 +1,19 @@
+#!/usr/bin/ruby
+# -*- Ruby -*-
+# $Id: ackermann-ruby.code,v 1.4 2004/11/13 07:40:41 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+
+def ack(m, n)
+ if m == 0 then
+ n + 1
+ elsif n == 0 then
+ ack(m - 1, 1)
+ else
+ ack(m - 1, ack(m, n - 1))
+ end
+end
+
+NUM = 9
+ack(3, NUM)
+
+
diff --git a/benchmark/so_array.rb b/benchmark/so_array.rb
new file mode 100644
index 0000000000..767e03db5f
--- /dev/null
+++ b/benchmark/so_array.rb
@@ -0,0 +1,23 @@
+#!/usr/bin/ruby
+# -*- Ruby -*-
+# $Id: ary-ruby.code,v 1.4 2004/11/13 07:41:27 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# with help from Paul Brannan and Mark Hubbart
+
+n = 9000 # Integer(ARGV.shift || 1)
+
+x = Array.new(n)
+y = Array.new(n, 0)
+
+n.times{|bi|
+ x[bi] = bi + 1
+}
+
+(0 .. 999).each do |e|
+ (n-1).step(0,-1) do |bi|
+ y[bi] += x.at(bi)
+ end
+end
+# puts "#{y.first} #{y.last}"
+
+
diff --git a/benchmark/so_binary_trees.rb b/benchmark/so_binary_trees.rb
new file mode 100644
index 0000000000..b1693e4109
--- /dev/null
+++ b/benchmark/so_binary_trees.rb
@@ -0,0 +1,62 @@
+# The Computer Language Shootout Benchmarks
+# http://shootout.alioth.debian.org
+#
+# contributed by Jesse Millikan
+
+# disable output
+alias puts_orig puts
+def puts str
+ # disable puts
+end
+
+def item_check(tree)
+ if tree[0] == nil
+ tree[1]
+ else
+ tree[1] + item_check(tree[0]) - item_check(tree[2])
+ end
+end
+
+def bottom_up_tree(item, depth)
+ if depth > 0
+ item_item = 2 * item
+ depth -= 1
+ [bottom_up_tree(item_item - 1, depth), item, bottom_up_tree(item_item, depth)]
+ else
+ [nil, item, nil]
+ end
+end
+
+max_depth = 16 # ARGV[0].to_i
+min_depth = 4
+
+max_depth = min_depth + 2 if min_depth + 2 > max_depth
+
+stretch_depth = max_depth + 1
+stretch_tree = bottom_up_tree(0, stretch_depth)
+
+puts "stretch tree of depth #{stretch_depth}\t check: #{item_check(stretch_tree)}"
+stretch_tree = nil
+
+long_lived_tree = bottom_up_tree(0, max_depth)
+
+min_depth.step(max_depth + 1, 2) do |depth|
+ iterations = 2**(max_depth - depth + min_depth)
+
+ check = 0
+
+ for i in 1..iterations
+ temp_tree = bottom_up_tree(i, depth)
+ check += item_check(temp_tree)
+
+ temp_tree = bottom_up_tree(-i, depth)
+ check += item_check(temp_tree)
+ end
+
+ puts "#{iterations * 2}\t trees of depth #{depth}\t check: #{check}"
+end
+
+puts "long lived tree of depth #{max_depth}\t check: #{item_check(long_lived_tree)}"
+
+undef puts
+alias puts puts_orig
diff --git a/benchmark/so_concatenate.rb b/benchmark/so_concatenate.rb
new file mode 100644
index 0000000000..4468e20ac8
--- /dev/null
+++ b/benchmark/so_concatenate.rb
@@ -0,0 +1,18 @@
+#!/usr/bin/ruby
+# -*- Ruby -*-
+# $Id: strcat-ruby.code,v 1.4 2004/11/13 07:43:28 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# based on code from Aristarkh A Zagorodnikov and Dat Nguyen
+
+STUFF = "hello\n"
+i = 0
+while i<10
+ i += 1
+ hello = ''
+ 4_000_000.times do |e|
+ hello << STUFF
+ end
+end
+# puts hello.length
+
+
diff --git a/benchmark/so_count_words.yml b/benchmark/so_count_words.yml
new file mode 100644
index 0000000000..99683505f9
--- /dev/null
+++ b/benchmark/so_count_words.yml
@@ -0,0 +1,65 @@
+prelude: |
+ #!/usr/bin/ruby
+
+ wc_input_base = <<EOS
+ Subject: Re: Who was Izchak Miller?
+ From: "Jane D. Anonymous" <nobody@yale.edu>
+ Date: 1996/04/28
+ Message-Id: <4lv7bc$oh@news.ycc.yale.edu>
+ References: <317C405E.5DFA@panix.com> <4lk6vl$gde@ns.oar.net>
+ To: 75176.2330@compuserve.com
+ Content-Type: text/plain; charset=us-ascii
+ Organization: Yale University
+ X-Url: news:4lk6vl$gde@ns.oar.net
+ Mime-Version: 1.0
+ Newsgroups: rec.games.roguelike.nethack
+ X-Mailer: Mozilla 1.1N (Macintosh; I; 68K)
+
+ Hello there, Izchak Miller was my father. When I was younger I spent
+ many a night, hunched over the keyboard with a cup of tea, playing
+ nethack with him and my brother. my dad was a philosopher with a strong
+ weakness for fantasy/sci fi. I remember when he started to get involved
+ with the Nethack team- my brother's Dungeons and Dragons monster book
+ found a regular place beside my dad's desk. it's nice to see him living
+ on in the game he loved so much :-).
+ Tamar Miller
+
+ The following is a really long word of 5000 characters:
+
+ wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+ EOS
+
+ # prepare 'wc.input'
+
+ def prepare_wc_input(wcbase)
+ wcinput = File.join(File.dirname($0), 'wc.input')
+ unless FileTest.exist?(wcinput)
+ data = wcbase.dup
+ 13.times{
+ data << data
+ }
+ open(wcinput, 'w'){|f| f.write data}
+ end
+ end
+
+ prepare_wc_input(wc_input_base)
+
+benchmark:
+ so_count_words: |
+ # $Id: wc-ruby.code,v 1.4 2004/11/13 07:43:32 bfulgham Exp $
+ # http://www.bagley.org/~doug/shootout/
+ # with help from Paul Brannan
+ input = open(File.join(File.dirname($0), 'wc.input'), 'rb')
+
+ nl = nw = nc = 0
+ while true
+ tmp = input.read(4096) or break
+ data = tmp << (input.gets || "")
+ nc += data.length
+ nl += data.count("\n")
+ ((data.strip! || data).tr!("\n", " ") || data).squeeze!
+ nw += data.count(" ") + 1
+ end
+ # STDERR.puts "#{nl} #{nw} #{nc}"
+
+loop_count: 1
diff --git a/benchmark/so_exception.rb b/benchmark/so_exception.rb
new file mode 100644
index 0000000000..eb205b4df1
--- /dev/null
+++ b/benchmark/so_exception.rb
@@ -0,0 +1,61 @@
+#!/usr/bin/ruby
+# -*- Ruby -*-
+# $Id: except-ruby.code,v 1.4 2004/11/13 07:41:33 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+
+$HI = 0
+$LO = 0
+NUM = 250000 # Integer(ARGV[0] || 1)
+
+
+class Lo_Exception < Exception
+ def initialize(num)
+ @value = num
+ end
+end
+
+class Hi_Exception < Exception
+ def initialize(num)
+ @value = num
+ end
+end
+
+def some_function(num)
+ begin
+ hi_function(num)
+ rescue
+ print "We shouldn't get here, exception is: #{$!.type}\n"
+ end
+end
+
+def hi_function(num)
+ begin
+ lo_function(num)
+ rescue Hi_Exception
+ $HI = $HI + 1
+ end
+end
+
+def lo_function(num)
+ begin
+ blowup(num)
+ rescue Lo_Exception
+ $LO = $LO + 1
+ end
+end
+
+def blowup(num)
+ if num % 2 == 0
+ raise Lo_Exception.new(num)
+ else
+ raise Hi_Exception.new(num)
+ end
+end
+
+
+i = 1
+max = NUM+1
+while i < max
+ i += 1
+ some_function(i+1)
+end
diff --git a/benchmark/so_fannkuch.rb b/benchmark/so_fannkuch.rb
new file mode 100644
index 0000000000..bac5ecd44c
--- /dev/null
+++ b/benchmark/so_fannkuch.rb
@@ -0,0 +1,45 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org/
+# Contributed by Sokolov Yura
+# Modified by Ryan Williams
+
+def fannkuch(n)
+ maxFlips, m, r, check = 0, n-1, n, 0
+ count = (1..n).to_a
+ perm = (1..n).to_a
+
+ while true
+ if check < 30
+ puts "#{perm}"
+ check += 1
+ end
+
+ while r != 1
+ count[r-1] = r
+ r -= 1
+ end
+
+ if perm[0] != 1 and perm[m] != n
+ perml = perm.clone #.dup
+ flips = 0
+ while (k = perml.first ) != 1
+ perml = perml.slice!(0, k).reverse + perml
+ flips += 1
+ end
+ maxFlips = flips if flips > maxFlips
+ end
+ while true
+ if r==n then return maxFlips end
+ perm.insert r,perm.shift
+ break if (count[r] -= 1) > 0
+ r += 1
+ end
+ end
+end
+
+def puts *args
+end
+
+N = 9 # (ARGV[0] || 1).to_i
+puts "Pfannkuchen(#{N}) = #{fannkuch(N)}"
+
diff --git a/benchmark/so_fasta.rb b/benchmark/so_fasta.rb
new file mode 100644
index 0000000000..dcc6b39507
--- /dev/null
+++ b/benchmark/so_fasta.rb
@@ -0,0 +1,81 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org/
+# Contributed by Sokolov Yura
+
+$last = 42.0
+def gen_random(max, im=139968, ia=3877, ic=29573)
+ (max * ($last = ($last * ia + ic) % im)) / im
+end
+
+alu =
+ "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG"+
+ "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA"+
+ "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT"+
+ "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA"+
+ "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG"+
+ "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC"+
+ "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"
+
+iub = [
+ ["a", 0.27],
+ ["c", 0.12],
+ ["g", 0.12],
+ ["t", 0.27],
+
+ ["B", 0.02],
+ ["D", 0.02],
+ ["H", 0.02],
+ ["K", 0.02],
+ ["M", 0.02],
+ ["N", 0.02],
+ ["R", 0.02],
+ ["S", 0.02],
+ ["V", 0.02],
+ ["W", 0.02],
+ ["Y", 0.02],
+]
+homosapiens = [
+ ["a", 0.3029549426680],
+ ["c", 0.1979883004921],
+ ["g", 0.1975473066391],
+ ["t", 0.3015094502008],
+]
+
+def make_repeat_fasta(id, desc, src, n)
+ puts ">#{id} #{desc}"
+ v = nil
+ width = 60
+ l = src.length
+ s = src * ((n / l) + 1)
+ s.slice!(n, l)
+ puts(s.scan(/.{1,#{width}}/).join("\n"))
+end
+
+def make_random_fasta(id, desc, table, n)
+ puts ">#{id} #{desc}"
+ rand, v = nil,nil
+ width = 60
+ chunk = 1 * width
+ prob = 0.0
+ table.each{|v| v[1]= (prob += v[1])}
+ for i in 1..(n/width)
+ puts((1..width).collect{
+ rand = gen_random(1.0)
+ table.find{|v| v[1]>rand}[0]
+ }.join)
+ end
+ if n%width != 0
+ puts((1..(n%width)).collect{
+ rand = gen_random(1.0)
+ table.find{|v| v[1]>rand}[0]
+ }.join)
+ end
+end
+
+
+n = (ARGV[0] or 250_000).to_i
+
+make_repeat_fasta('ONE', 'Homo sapiens alu', alu, n*2)
+make_random_fasta('TWO', 'IUB ambiguity codes', iub, n*3)
+make_random_fasta('THREE', 'Homo sapiens frequency', homosapiens, n*5)
+
diff --git a/benchmark/so_k_nucleotide.yml b/benchmark/so_k_nucleotide.yml
new file mode 100644
index 0000000000..d7df086c39
--- /dev/null
+++ b/benchmark/so_k_nucleotide.yml
@@ -0,0 +1,155 @@
+prelude: |
+ bm_so_fasta = <<'EOS'
+ # The Computer Language Shootout
+ # http://shootout.alioth.debian.org/
+ # Contributed by Sokolov Yura
+
+ $last = 42.0
+ def gen_random(max, im=139968, ia=3877, ic=29573)
+ (max * ($last = ($last * ia + ic) % im)) / im
+ end
+
+ alu =
+ "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG"+
+ "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA"+
+ "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT"+
+ "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA"+
+ "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG"+
+ "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC"+
+ "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"
+
+ iub = [
+ ["a", 0.27],
+ ["c", 0.12],
+ ["g", 0.12],
+ ["t", 0.27],
+
+ ["B", 0.02],
+ ["D", 0.02],
+ ["H", 0.02],
+ ["K", 0.02],
+ ["M", 0.02],
+ ["N", 0.02],
+ ["R", 0.02],
+ ["S", 0.02],
+ ["V", 0.02],
+ ["W", 0.02],
+ ["Y", 0.02],
+ ]
+ homosapiens = [
+ ["a", 0.3029549426680],
+ ["c", 0.1979883004921],
+ ["g", 0.1975473066391],
+ ["t", 0.3015094502008],
+ ]
+
+ def make_repeat_fasta(id, desc, src, n)
+ puts ">#{id} #{desc}"
+ v = nil
+ width = 60
+ l = src.length
+ s = src * ((n / l) + 1)
+ s.slice!(n, l)
+ puts(s.scan(/.{1,#{width}}/).join("\n"))
+ end
+
+ def make_random_fasta(id, desc, table, n)
+ puts ">#{id} #{desc}"
+ rand, v = nil,nil
+ width = 60
+ chunk = 1 * width
+ prob = 0.0
+ table.each{|v| v[1]= (prob += v[1])}
+ for i in 1..(n/width)
+ puts((1..width).collect{
+ rand = gen_random(1.0)
+ table.find{|v| v[1]>rand}[0]
+ }.join)
+ end
+ if n%width != 0
+ puts((1..(n%width)).collect{
+ rand = gen_random(1.0)
+ table.find{|v| v[1]>rand}[0]
+ }.join)
+ end
+ end
+
+
+ n = (ARGV[0] or 250_000).to_i
+
+ make_repeat_fasta('ONE', 'Homo sapiens alu', alu, n*2)
+ make_random_fasta('TWO', 'IUB ambiguity codes', iub, n*3)
+ make_random_fasta('THREE', 'Homo sapiens frequency', homosapiens, n*5)
+ EOS
+benchmark:
+ - name: so_k_nucleotide
+ prelude: |
+ script = File.join(File.dirname($0), 'bm_so_fasta.rb')
+ File.write(script, bm_so_fasta)
+
+ def prepare_fasta_output n
+ filebase = File.join(File.dirname($0), 'fasta.output')
+ script = File.join(File.dirname($0), 'bm_so_fasta.rb')
+ file = "#{filebase}.#{n}"
+
+ unless FileTest.exist?(file)
+ STDERR.puts "preparing #{file}"
+
+ open(file, 'w'){|f|
+ ARGV[0] = n
+ $stdout = f
+ load script
+ $stdout = STDOUT
+ }
+ end
+ end
+ prepare_fasta_output(100_000)
+ script: |
+ # The Computer Language Shootout
+ # http://shootout.alioth.debian.org
+ #
+ # contributed by jose fco. gonzalez
+ # modified by Sokolov Yura
+
+ seq = String.new
+
+ def frecuency( seq,length )
+ n, table = seq.length - length + 1, Hash.new(0)
+ f, i = nil, nil
+ (0 ... length).each do |f|
+ (f ... n).step(length) do |i|
+ table[seq[i,length]] += 1
+ end
+ end
+ [n,table]
+
+ end
+
+ def sort_by_freq( seq,length )
+ n,table = frecuency( seq,length )
+ a, b, v = nil, nil, nil
+ table.sort{|a,b| b[1] <=> a[1]}.each do |v|
+ puts "%s %.3f" % [v[0].upcase,((v[1]*100).to_f/n)]
+ end
+ puts
+ end
+
+ def find_seq( seq,s )
+ n,table = frecuency( seq,s.length )
+ puts "#{table[s].to_s}\t#{s.upcase}"
+ end
+
+ input = open(File.join(File.dirname($0), 'fasta.output.100000'), 'rb')
+
+ line = input.gets while line !~ /^>THREE/
+ line = input.gets
+
+ while (line !~ /^>/) & line do
+ seq << line.chomp
+ line = input.gets
+ end
+
+ [1,2].each {|i| sort_by_freq( seq,i ) }
+
+ %w(ggt ggta ggtatt ggtattttaatt ggtattttaatttatagt).each{|s| find_seq( seq,s) }
+ loop_count: 1
diff --git a/benchmark/so_lists.rb b/benchmark/so_lists.rb
new file mode 100644
index 0000000000..e8f4a2a5f7
--- /dev/null
+++ b/benchmark/so_lists.rb
@@ -0,0 +1,47 @@
+#from http://www.bagley.org/~doug/shootout/bench/lists/lists.ruby
+
+NUM = 300
+SIZE = 10000
+
+def test_lists()
+ # create a list of integers (Li1) from 1 to SIZE
+ li1 = (1..SIZE).to_a
+ # copy the list to li2 (not by individual items)
+ li2 = li1.dup
+ # remove each individual item from left side of li2 and
+ # append to right side of li3 (preserving order)
+ li3 = Array.new
+ while (not li2.empty?)
+ li3.push(li2.shift)
+ end
+ # li2 must now be empty
+ # remove each individual item from right side of li3 and
+ # append to right side of li2 (reversing list)
+ while (not li3.empty?)
+ li2.push(li3.pop)
+ end
+ # li3 must now be empty
+ # reverse li1 in place
+ li1.reverse!
+ # check that first item is now SIZE
+ if li1[0] != SIZE then
+ p "not SIZE"
+ 0
+ else
+ # compare li1 and li2 for equality
+ if li1 != li2 then
+ return(0)
+ else
+ # return the length of the list
+ li1.length
+ end
+ end
+end
+
+i = 0
+while i<NUM
+ i += 1
+ result = test_lists()
+end
+
+result
diff --git a/benchmark/so_mandelbrot.rb b/benchmark/so_mandelbrot.rb
new file mode 100644
index 0000000000..76331c64b8
--- /dev/null
+++ b/benchmark/so_mandelbrot.rb
@@ -0,0 +1,57 @@
+# The Computer Language Benchmarks Game
+# http://shootout.alioth.debian.org/
+#
+# contributed by Karl von Laudermann
+# modified by Jeremy Echols
+
+size = 600 # ARGV[0].to_i
+
+puts "P4\n#{size} #{size}"
+
+ITER = 49 # Iterations - 1 for easy for..in looping
+LIMIT_SQUARED = 4.0 # Presquared limit
+
+byte_acc = 0
+bit_num = 0
+
+count_size = size - 1 # Precomputed size for easy for..in looping
+
+# For..in loops are faster than .upto, .downto, .times, etc.
+for y in 0..count_size
+ for x in 0..count_size
+ zr = 0.0
+ zi = 0.0
+ cr = (2.0*x/size)-1.5
+ ci = (2.0*y/size)-1.0
+ escape = false
+
+ # To make use of the for..in code, we use a dummy variable,
+ # like one would in C
+ for dummy in 0..ITER
+ tr = zr*zr - zi*zi + cr
+ ti = 2*zr*zi + ci
+ zr, zi = tr, ti
+
+ if (zr*zr+zi*zi) > LIMIT_SQUARED
+ escape = true
+ break
+ end
+ end
+
+ byte_acc = (byte_acc << 1) | (escape ? 0b0 : 0b1)
+ bit_num += 1
+
+ # Code is very similar for these cases, but using separate blocks
+ # ensures we skip the shifting when it's unnecessary, which is most cases.
+ if (bit_num == 8)
+ print byte_acc.chr
+ byte_acc = 0
+ bit_num = 0
+ elsif (x == count_size)
+ byte_acc <<= (8 - bit_num)
+ print byte_acc.chr
+ byte_acc = 0
+ bit_num = 0
+ end
+ end
+end
diff --git a/benchmark/so_matrix.rb b/benchmark/so_matrix.rb
new file mode 100644
index 0000000000..2d1e72bda9
--- /dev/null
+++ b/benchmark/so_matrix.rb
@@ -0,0 +1,48 @@
+#!/usr/bin/ruby
+# -*- Ruby -*-
+# $Id: matrix-ruby.code,v 1.4 2004/11/13 07:42:14 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+
+n = 60 #Integer(ARGV.shift || 1)
+
+size = 40
+
+def mkmatrix(rows, cols)
+ count = 1
+ mx = Array.new(rows)
+ (0 .. (rows - 1)).each do |bi|
+ row = Array.new(cols, 0)
+ (0 .. (cols - 1)).each do |j|
+ row[j] = count
+ count += 1
+ end
+ mx[bi] = row
+ end
+ mx
+end
+
+def mmult(rows, cols, m1, m2)
+ m3 = Array.new(rows)
+ (0 .. (rows - 1)).each do |bi|
+ row = Array.new(cols, 0)
+ (0 .. (cols - 1)).each do |j|
+ val = 0
+ (0 .. (cols - 1)).each do |k|
+ val += m1.at(bi).at(k) * m2.at(k).at(j)
+ end
+ row[j] = val
+ end
+ m3[bi] = row
+ end
+ m3
+end
+
+m1 = mkmatrix(size, size)
+m2 = mkmatrix(size, size)
+mm = Array.new
+n.times do
+ mm = mmult(size, size, m1, m2)
+end
+# puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}"
+
+
diff --git a/benchmark/so_meteor_contest.rb b/benchmark/so_meteor_contest.rb
new file mode 100644
index 0000000000..8c136baa6c
--- /dev/null
+++ b/benchmark/so_meteor_contest.rb
@@ -0,0 +1,563 @@
+#!/usr/bin/env ruby
+#
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org
+# contributed by Kevin Barnes (Ruby novice)
+
+# PROGRAM: the main body is at the bottom.
+# 1) read about the problem here: http://www-128.ibm.com/developerworks/java/library/j-javaopt/
+# 2) see how I represent a board as a bitmask by reading the blank_board comments
+# 3) read as your mental paths take you
+
+def print *args
+end
+
+# class to represent all information about a particular rotation of a particular piece
+class Rotation
+ # an array (by location) containing a bit mask for how the piece maps at the given location.
+ # if the rotation is invalid at that location the mask will contain false
+ attr_reader :start_masks
+
+ # maps a direction to a relative location. these differ depending on whether it is an even or
+ # odd row being mapped from
+ @@rotation_even_adder = { :west => -1, :east => 1, :nw => -7, :ne => -6, :sw => 5, :se => 6 }
+ @@rotation_odd_adder = { :west => -1, :east => 1, :nw => -6, :ne => -5, :sw => 6, :se => 7 }
+
+ def initialize( directions )
+ @even_offsets, @odd_offsets = normalize_offsets( get_values( directions ))
+
+ @even_mask = mask_for_offsets( @even_offsets)
+ @odd_mask = mask_for_offsets( @odd_offsets)
+
+ @start_masks = Array.new(60)
+
+ # create the rotational masks by placing the base mask at the location and seeing if
+ # 1) it overlaps the boundaries and 2) it produces a prunable board. if either of these
+ # is true the piece cannot be placed
+ 0.upto(59) do | offset |
+ mask = is_even(offset) ? (@even_mask << offset) : (@odd_mask << offset)
+ if (blank_board & mask == 0 && !prunable(blank_board | mask, 0, true)) then
+ imask = compute_required( mask, offset)
+ @start_masks[offset] = [ mask, imask, imask | mask ]
+ else
+ @start_masks[offset] = false
+ end
+ end
+ end
+
+ def compute_required( mask, offset )
+ board = blank_board
+ 0.upto(offset) { | i | board |= 1 << i }
+ board |= mask
+ return 0 if (!prunable(board | mask, offset))
+ board = flood_fill(board,58)
+ count = 0
+ imask = 0
+ 0.upto(59) do | i |
+ if (board[i] == 0) then
+ imask |= (1 << i)
+ count += 1
+ end
+ end
+ (count > 0 && count < 5) ? imask : 0
+ end
+
+ def flood_fill( board, location)
+ return board if (board[location] == 1)
+ board |= 1 << location
+ row, col = location.divmod(6)
+ board = flood_fill( board, location - 1) if (col > 0)
+ board = flood_fill( board, location + 1) if (col < 4)
+ if (row % 2 == 0) then
+ board = flood_fill( board, location - 7) if (col > 0 && row > 0)
+ board = flood_fill( board, location - 6) if (row > 0)
+ board = flood_fill( board, location + 6) if (row < 9)
+ board = flood_fill( board, location + 5) if (col > 0 && row < 9)
+ else
+ board = flood_fill( board, location - 5) if (col < 4 && row > 0)
+ board = flood_fill( board, location - 6) if (row > 0)
+ board = flood_fill( board, location + 6) if (row < 9)
+ board = flood_fill( board, location + 7) if (col < 4 && row < 9)
+ end
+ board
+ end
+
+ # given a location, produces a list of relative locations covered by the piece at this rotation
+ def offsets( location)
+ if is_even( location) then
+ @even_offsets.collect { | value | value + location }
+ else
+ @odd_offsets.collect { | value | value + location }
+ end
+ end
+
+ # returns a set of offsets relative to the top-left most piece of the rotation (by even or odd rows)
+ # this is hard to explain. imagine we have this partial board:
+ # 0 0 0 0 0 x [positions 0-5]
+ # 0 0 1 1 0 x [positions 6-11]
+ # 0 0 1 0 0 x [positions 12-17]
+ # 0 1 0 0 0 x [positions 18-23]
+ # 0 1 0 0 0 x [positions 24-29]
+ # 0 0 0 0 0 x [positions 30-35]
+ # ...
+ # The top-left of the piece is at position 8, the
+ # board would be passed as a set of positions (values array) containing [8,9,14,19,25] not necessarily in that
+ # sorted order. Since that array starts on an odd row, the offsets for an odd row are: [0,1,6,11,17] obtained
+ # by subtracting 8 from everything. Now imagine the piece shifted up and to the right so it's on an even row:
+ # 0 0 0 1 1 x [positions 0-5]
+ # 0 0 1 0 0 x [positions 6-11]
+ # 0 0 1 0 0 x [positions 12-17]
+ # 0 1 0 0 0 x [positions 18-23]
+ # 0 0 0 0 0 x [positions 24-29]
+ # 0 0 0 0 0 x [positions 30-35]
+ # ...
+ # Now the positions are [3,4,8,14,19] which after subtracting the lowest value (3) gives [0,1,5,11,16] thus, the
+ # offsets for this particular piece are (in even, odd order) [0,1,5,11,16],[0,1,6,11,17] which is what
+ # this function would return
+ def normalize_offsets( values)
+ min = values.min
+ even_min = is_even(min)
+ other_min = even_min ? min + 6 : min + 7
+ other_values = values.collect do | value |
+ if is_even(value) then
+ value + 6 - other_min
+ else
+ value + 7 - other_min
+ end
+ end
+ values.collect! { | value | value - min }
+
+ if even_min then
+ [values, other_values]
+ else
+ [other_values, values]
+ end
+ end
+
+ # produce a bitmask representation of an array of offset locations
+ def mask_for_offsets( offsets )
+ mask = 0
+ offsets.each { | value | mask = mask + ( 1 << value ) }
+ mask
+ end
+
+ # finds a "safe" position that a position as described by a list of directions can be placed
+ # without falling off any edge of the board. the values returned a location to place the first piece
+ # at so it will fit after making the described moves
+ def start_adjust( directions )
+ south = east = 0;
+ directions.each do | direction |
+ east += 1 if ( direction == :sw || direction == :nw || direction == :west )
+ south += 1 if ( direction == :nw || direction == :ne )
+ end
+ south * 6 + east
+ end
+
+ # given a set of directions places the piece (as defined by a set of directions) on the board at
+ # a location that will not take it off the edge
+ def get_values( directions )
+ start = start_adjust(directions)
+ values = [ start ]
+ directions.each do | direction |
+ if (start % 12 >= 6) then
+ start += @@rotation_odd_adder[direction]
+ else
+ start += @@rotation_even_adder[direction]
+ end
+ values += [ start ]
+ end
+
+ # some moves take you back to an existing location, we'll strip duplicates
+ values.uniq
+ end
+end
+
+# describes a piece and caches information about its rotations to as to be efficient for iteration
+# ATTRIBUTES:
+# rotations -- all the rotations of the piece
+# type -- a numeic "name" of the piece
+# masks -- an array by location of all legal rotational masks (a n inner array) for that location
+# placed -- the mask that this piece was last placed at (not a location, but the actual mask used)
+class Piece
+ attr_reader :rotations, :type, :masks
+ attr_accessor :placed
+
+ # transform hashes that change one direction into another when you either flip or rotate a set of directions
+ @@flip_converter = { :west => :west, :east => :east, :nw => :sw, :ne => :se, :sw => :nw, :se => :ne }
+ @@rotate_converter = { :west => :nw, :east => :se, :nw => :ne, :ne => :east, :sw => :west, :se => :sw }
+
+ def initialize( directions, type )
+ @type = type
+ @rotations = Array.new();
+ @map = {}
+
+ generate_rotations( directions )
+ directions.collect! { | value | @@flip_converter[value] }
+ generate_rotations( directions )
+
+ # creates the masks AND a map that returns [location, rotation] for any given mask
+ # this is used when a board is found and we want to draw it, otherwise the map is unused
+ @masks = Array.new();
+ 0.upto(59) do | i |
+ even = true
+ @masks[i] = @rotations.collect do | rotation |
+ mask = rotation.start_masks[i]
+ @map[mask[0]] = [ i, rotation ] if (mask)
+ mask || nil
+ end
+ @masks[i].compact!
+ end
+ end
+
+ # rotates a set of directions through all six angles and adds a Rotation to the list for each one
+ def generate_rotations( directions )
+ 6.times do
+ rotations.push( Rotation.new(directions))
+ directions.collect! { | value | @@rotate_converter[value] }
+ end
+ end
+
+ # given a board string, adds this piece to the board at whatever location/rotation
+ # important: the outbound board string is 5 wide, the normal location notation is six wide (padded)
+ def fill_string( board_string)
+ location, rotation = @map[@placed]
+ rotation.offsets(location).each do | offset |
+ row, col = offset.divmod(6)
+ board_string[ row*5 + col, 1 ] = @type.to_s
+ end
+ end
+end
+
+# a blank bit board having this form:
+#
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 1 1 1 1 1 1
+#
+# where left lest significant bit is the top left and the most significant is the lower right
+# the actual board only consists of the 0 places, the 1 places are blockers to keep things from running
+# off the edges or bottom
+def blank_board
+ 0b111111100000100000100000100000100000100000100000100000100000100000
+end
+
+def full_board
+ 0b111111111111111111111111111111111111111111111111111111111111111111
+end
+
+# determines if a location (bit position) is in an even row
+def is_even( location)
+ (location % 12) < 6
+end
+
+# support function that create three utility maps:
+# $converter -- for each row an array that maps a five bit row (via array mapping)
+# to the a five bit representation of the bits below it
+# $bit_count -- maps a five bit row (via array mapping) to the number of 1s in the row
+# @@new_regions -- maps a five bit row (via array mapping) to an array of "region" arrays
+# a region array has three values the first is a mask of bits in the region,
+# the second is the count of those bits and the third is identical to the first
+# examples:
+# 0b10010 => [ 0b01100, 2, 0b01100 ], [ 0b00001, 1, 0b00001]
+# 0b01010 => [ 0b10000, 1, 0b10000 ], [ 0b00100, 1, 0b00100 ], [ 0b00001, 1, 0b00001]
+# 0b10001 => [ 0b01110, 3, 0b01110 ]
+def create_collector_support
+ odd_map = [0b11, 0b110, 0b1100, 0b11000, 0b10000]
+ even_map = [0b1, 0b11, 0b110, 0b1100, 0b11000]
+
+ all_odds = Array.new(0b100000)
+ all_evens = Array.new(0b100000)
+ bit_counts = Array.new(0b100000)
+ new_regions = Array.new(0b100000)
+ 0.upto(0b11111) do | i |
+ bit_count = odd = even = 0
+ 0.upto(4) do | bit |
+ if (i[bit] == 1) then
+ bit_count += 1
+ odd |= odd_map[bit]
+ even |= even_map[bit]
+ end
+ end
+ all_odds[i] = odd
+ all_evens[i] = even
+ bit_counts[i] = bit_count
+ new_regions[i] = create_regions( i)
+ end
+
+ $converter = []
+ 10.times { | row | $converter.push((row % 2 == 0) ? all_evens : all_odds) }
+ $bit_counts = bit_counts
+ $regions = new_regions.collect { | set | set.collect { | value | [ value, bit_counts[value], value] } }
+end
+
+# determines if a board is punable, meaning that there is no possibility that it
+# can be filled up with pieces. A board is prunable if there is a grouping of unfilled spaces
+# that are not a multiple of five. The following board is an example of a prunable board:
+# 0 0 1 0 0
+# 0 1 0 0 0
+# 1 1 0 0 0
+# 0 1 0 0 0
+# 0 0 0 0 0
+# ...
+#
+# This board is prunable because the top left corner is only 3 bits in area, no piece will ever fit it
+# parameters:
+# board -- an initial bit board (6 bit padded rows, see blank_board for format)
+# location -- starting location, everything above and to the left is already full
+# slotting -- set to true only when testing initial pieces, when filling normally
+# additional assumptions are possible
+#
+# Algorithm:
+# The algorithm starts at the top row (as determined by location) and iterates a row at a time
+# maintainng counts of active open areas (kept in the collector array) each collector contains
+# three values at the start of an iteration:
+# 0: mask of bits that would be adjacent to the collector in this row
+# 1: the number of bits collected so far
+# 2: a scratch space starting as zero, but used during the computation to represent
+# the empty bits in the new row that are adjacent (position 0)
+# The exact procedure is described in-code
+def prunable( board, location, slotting = false)
+ collectors = []
+ # loop across the rows
+ (location / 6).to_i.upto(9) do | row_on |
+ # obtain a set of regions representing the bits of the current row.
+ regions = $regions[(board >> (row_on * 6)) & 0b11111]
+ converter = $converter[row_on]
+
+ # track the number of collectors at the start of the cycle so that
+ # we don't compute against newly created collectors, only existing collectors
+ initial_collector_count = collectors.length
+
+ # loop against the regions. For each region of the row
+ # we will see if it connects to one or more existing collectors.
+ # if it connects to 1 collector, the bits from the region are added to the
+ # bits of the collector and the mask is placed in collector[2]
+ # If the region overlaps more than one collector then all the collectors
+ # it overlaps with are merged into the first one (the others are set to nil in the array)
+ # if NO collectors are found then the region is copied as a new collector
+ regions.each do | region |
+ collector_found = nil
+ region_mask = region[2]
+ initial_collector_count.times do | collector_num |
+ collector = collectors[collector_num]
+ if (collector) then
+ collector_mask = collector[0]
+ if (collector_mask & region_mask != 0) then
+ if (collector_found) then
+ collector_found[0] |= collector_mask
+ collector_found[1] += collector[1]
+ collector_found[2] |= collector[2]
+ collectors[collector_num] = nil
+ else
+ collector_found = collector
+ collector[1] += region[1]
+ collector[2] |= region_mask
+ end
+ end
+ end
+ end
+ if (collector_found == nil) then
+ collectors.push(Array.new(region))
+ end
+ end
+
+ # check the existing collectors, if any collector overlapped no bits in the region its [2] value will
+ # be zero. The size of any such reaason is tested if it is not a multiple of five true is returned since
+ # the board is prunable. if it is a multiple of five it is removed.
+ # Collector that are still active have a new adjacent value [0] set based n the matched bits
+ # and have [2] cleared out for the next cycle.
+ collectors.length.times do | collector_num |
+ collector = collectors[collector_num]
+ if (collector) then
+ if (collector[2] == 0) then
+ return true if (collector[1] % 5 != 0)
+ collectors[collector_num] = nil
+ else
+ # if a collector matches all bits in the row then we can return unprunable early for the
+ # following reasons:
+ # 1) there can be no more unavailable bits bince we fill from the top left downward
+ # 2) all previous regions have been closed or joined so only this region can fail
+ # 3) this region must be good since there can never be only 1 region that is nuot
+ # a multiple of five
+ # this rule only applies when filling normally, so we ignore the rule if we are "slotting"
+ # in pieces to see what configurations work for them (the only other time this algorithm is used).
+ return false if (collector[2] == 0b11111 && !slotting)
+ collector[0] = converter[collector[2]]
+ collector[2] = 0
+ end
+ end
+ end
+
+ # get rid of all the empty converters for the next round
+ collectors.compact!
+ end
+ return false if (collectors.length <= 1) # 1 collector or less and the region is fine
+ collectors.any? { | collector | (collector[1] % 5) != 0 } # more than 1 and we test them all for bad size
+end
+
+# creates a region given a row mask. see prunable for what a "region" is
+def create_regions( value )
+ regions = []
+ cur_region = 0
+ 5.times do | bit |
+ if (value[bit] == 0) then
+ cur_region |= 1 << bit
+ else
+ if (cur_region != 0 ) then
+ regions.push( cur_region)
+ cur_region = 0;
+ end
+ end
+ end
+ regions.push(cur_region) if (cur_region != 0)
+ regions
+end
+
+# find up to the counted number of solutions (or all solutions) and prints the final result
+def find_all
+ find_top( 1)
+ find_top( 0)
+ print_results
+end
+
+# show the board
+def print_results
+ print "#{@boards_found} solutions found\n\n"
+ print_full_board( @min_board)
+ print "\n"
+ print_full_board( @max_board)
+ print "\n"
+end
+
+# finds solutions. This special version of the main function is only used for the top level
+# the reason for it is basically to force a particular ordering on how the rotations are tested for
+# the first piece. It is called twice, first looking for placements of the odd rotations and then
+# looking for placements of the even locations.
+#
+# WHY?
+# Since any found solution has an inverse we want to maximize finding solutions that are not already found
+# as an inverse. The inverse will ALWAYS be 3 one of the piece configurations that is exactly 3 rotations away
+# (an odd number). Checking even vs odd then produces a higher probability of finding more pieces earlier
+# in the cycle. We still need to keep checking all the permutations, but our probability of finding one will
+# diminsh over time. Since we are TOLD how many to search for this lets us exit before checking all pieces
+# this bennifit is very great when seeking small numbers of solutions and is 0 when looking for more than the
+# maximum number
+def find_top( rotation_skip)
+ board = blank_board
+ (@pieces.length-1).times do
+ piece = @pieces.shift
+ piece.masks[0].each do | mask, imask, cmask |
+ if ((rotation_skip += 1) % 2 == 0) then
+ piece.placed = mask
+ find( 1, 1, board | mask)
+ end
+ end
+ @pieces.push(piece)
+ end
+ piece = @pieces.shift
+ @pieces.push(piece)
+end
+
+# the normail find routine, iterates through the available pieces, checks all rotations at the current location
+# and adds any boards found. depth is achieved via recursion. the overall approach is described
+# here: http://www-128.ibm.com/developerworks/java/library/j-javaopt/
+# parameters:
+# start_location -- where to start looking for place for the next piece at
+# placed -- number of pieces placed
+# board -- current state of the board
+#
+# see in-code comments
+def find( start_location, placed, board)
+ # find the next location to place a piece by looking for an empty bit
+ while board[start_location] == 1
+ start_location += 1
+ end
+
+ @pieces.length.times do
+ piece = @pieces.shift
+ piece.masks[start_location].each do | mask, imask, cmask |
+ if ( board & cmask == imask) then
+ piece.placed = mask
+ if (placed == 9) then
+ add_board
+ else
+ find( start_location + 1, placed + 1, board | mask)
+ end
+ end
+ end
+ @pieces.push(piece)
+ end
+end
+
+# print the board
+def print_full_board( board_string)
+ 10.times do | row |
+ print " " if (row % 2 == 1)
+ 5.times do | col |
+ print "#{board_string[row*5 + col,1]} "
+ end
+ print "\n"
+ end
+end
+
+# when a board is found we "draw it" into a string and then flip that string, adding both to
+# the list (hash) of solutions if they are unique.
+def add_board
+ board_string = "99999999999999999999999999999999999999999999999999"
+ @all_pieces.each { | piece | piece.fill_string( board_string ) }
+ save( board_string)
+ save( board_string.reverse)
+end
+
+# adds a board string to the list (if new) and updates the current best/worst board
+def save( board_string)
+ if (@all_boards[board_string] == nil) then
+ @min_board = board_string if (board_string < @min_board)
+ @max_board = board_string if (board_string > @max_board)
+ @all_boards.store(board_string,true)
+ @boards_found += 1
+
+ # the exit motif is a time saver. Ideally the function should return, but those tests
+ # take noticeable time (performance).
+ if (@boards_found == @stop_count) then
+ print_results
+ exit(0)
+ end
+ end
+end
+
+
+##
+## MAIN BODY :)
+##
+create_collector_support
+@pieces = [
+ Piece.new( [ :nw, :ne, :east, :east ], 2),
+ Piece.new( [ :ne, :se, :east, :ne ], 7),
+ Piece.new( [ :ne, :east, :ne, :nw ], 1),
+ Piece.new( [ :east, :sw, :sw, :se ], 6),
+ Piece.new( [ :east, :ne, :se, :ne ], 5),
+ Piece.new( [ :east, :east, :east, :se ], 0),
+ Piece.new( [ :ne, :nw, :se, :east, :se ], 4),
+ Piece.new( [ :se, :se, :se, :west ], 9),
+ Piece.new( [ :se, :se, :east, :se ], 8),
+ Piece.new( [ :east, :east, :sw, :se ], 3)
+ ];
+
+@all_pieces = Array.new( @pieces)
+
+@min_board = "99999999999999999999999999999999999999999999999999"
+@max_board = "00000000000000000000000000000000000000000000000000"
+@stop_count = ARGV[0].to_i || 2089
+@all_boards = {}
+@boards_found = 0
+
+find_all ######## DO IT!!!
diff --git a/benchmark/so_nbody.rb b/benchmark/so_nbody.rb
new file mode 100644
index 0000000000..9884fc4edc
--- /dev/null
+++ b/benchmark/so_nbody.rb
@@ -0,0 +1,148 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org
+#
+# Optimized for Ruby by Jesse Millikan
+# From version ported by Michael Neumann from the C gcc version,
+# which was written by Christoph Bauer.
+
+SOLAR_MASS = 4 * Math::PI**2
+DAYS_PER_YEAR = 365.24
+
+def _puts *args
+end
+
+class Planet
+ attr_accessor :x, :y, :z, :vx, :vy, :vz, :mass
+
+ def initialize(x, y, z, vx, vy, vz, mass)
+ @x, @y, @z = x, y, z
+ @vx, @vy, @vz = vx * DAYS_PER_YEAR, vy * DAYS_PER_YEAR, vz * DAYS_PER_YEAR
+ @mass = mass * SOLAR_MASS
+ end
+
+ def move_from_i(bodies, nbodies, dt, i)
+ while i < nbodies
+ b2 = bodies[i]
+ dx = @x - b2.x
+ dy = @y - b2.y
+ dz = @z - b2.z
+
+ distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
+ mag = dt / (distance * distance * distance)
+ b_mass_mag, b2_mass_mag = @mass * mag, b2.mass * mag
+
+ @vx -= dx * b2_mass_mag
+ @vy -= dy * b2_mass_mag
+ @vz -= dz * b2_mass_mag
+ b2.vx += dx * b_mass_mag
+ b2.vy += dy * b_mass_mag
+ b2.vz += dz * b_mass_mag
+ i += 1
+ end
+
+ @x += dt * @vx
+ @y += dt * @vy
+ @z += dt * @vz
+ end
+end
+
+def energy(bodies)
+ e = 0.0
+ nbodies = bodies.size
+
+ for i in 0 ... nbodies
+ b = bodies[i]
+ e += 0.5 * b.mass * (b.vx * b.vx + b.vy * b.vy + b.vz * b.vz)
+ for j in (i + 1) ... nbodies
+ b2 = bodies[j]
+ dx = b.x - b2.x
+ dy = b.y - b2.y
+ dz = b.z - b2.z
+ distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
+ e -= (b.mass * b2.mass) / distance
+ end
+ end
+ e
+end
+
+def offset_momentum(bodies)
+ px, py, pz = 0.0, 0.0, 0.0
+
+ for b in bodies
+ m = b.mass
+ px += b.vx * m
+ py += b.vy * m
+ pz += b.vz * m
+ end
+
+ b = bodies[0]
+ b.vx = - px / SOLAR_MASS
+ b.vy = - py / SOLAR_MASS
+ b.vz = - pz / SOLAR_MASS
+end
+
+BODIES = [
+ # sun
+ Planet.new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0),
+
+ # jupiter
+ Planet.new(
+ 4.84143144246472090e+00,
+ -1.16032004402742839e+00,
+ -1.03622044471123109e-01,
+ 1.66007664274403694e-03,
+ 7.69901118419740425e-03,
+ -6.90460016972063023e-05,
+ 9.54791938424326609e-04),
+
+ # saturn
+ Planet.new(
+ 8.34336671824457987e+00,
+ 4.12479856412430479e+00,
+ -4.03523417114321381e-01,
+ -2.76742510726862411e-03,
+ 4.99852801234917238e-03,
+ 2.30417297573763929e-05,
+ 2.85885980666130812e-04),
+
+ # uranus
+ Planet.new(
+ 1.28943695621391310e+01,
+ -1.51111514016986312e+01,
+ -2.23307578892655734e-01,
+ 2.96460137564761618e-03,
+ 2.37847173959480950e-03,
+ -2.96589568540237556e-05,
+ 4.36624404335156298e-05),
+
+ # neptune
+ Planet.new(
+ 1.53796971148509165e+01,
+ -2.59193146099879641e+01,
+ 1.79258772950371181e-01,
+ 2.68067772490389322e-03,
+ 1.62824170038242295e-03,
+ -9.51592254519715870e-05,
+ 5.15138902046611451e-05)
+]
+
+init = 200_000 # ARGV[0]
+n = Integer(init)
+
+offset_momentum(BODIES)
+
+puts "%.9f" % energy(BODIES)
+
+nbodies = BODIES.size
+dt = 0.01
+
+n.times do
+ i = 0
+ while i < nbodies
+ b = BODIES[i]
+ b.move_from_i(BODIES, nbodies, dt, i + 1)
+ i += 1
+ end
+end
+
+puts "%.9f" % energy(BODIES)
diff --git a/benchmark/so_nested_loop.rb b/benchmark/so_nested_loop.rb
new file mode 100644
index 0000000000..766fcf7b84
--- /dev/null
+++ b/benchmark/so_nested_loop.rb
@@ -0,0 +1,24 @@
+#!/usr/bin/ruby
+# -*- Ruby -*-
+# $Id: nestedloop-ruby.code,v 1.4 2004/11/13 07:42:22 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# from Avi Bryant
+
+n = 16 # Integer(ARGV.shift || 1)
+x = 0
+n.times do
+ n.times do
+ n.times do
+ n.times do
+ n.times do
+ n.times do
+ x += 1
+ end
+ end
+ end
+ end
+ end
+end
+# puts x
+
+
diff --git a/benchmark/so_nsieve.rb b/benchmark/so_nsieve.rb
new file mode 100644
index 0000000000..a65cc78233
--- /dev/null
+++ b/benchmark/so_nsieve.rb
@@ -0,0 +1,35 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org/
+#
+# contributed by Glenn Parker, March 2005
+# modified by Evan Phoenix, Sept 2006
+
+def sieve(m)
+ flags = Flags.dup[0,m]
+ count = 0
+ pmax = m - 1
+ p = 2
+ while p <= pmax
+ unless flags[p].zero?
+ count += 1
+ mult = p
+ while mult <= pmax
+ flags[mult] = 0
+ mult += p
+ end
+ end
+ p += 1
+ end
+ count
+end
+
+n = 9 # (ARGV[0] || 2).to_i
+Flags = ("\x1" * ( 2 ** n * 10_000)).unpack("c*")
+
+n.downto(n-2) do |exponent|
+ break if exponent < 0
+ m = (1 << exponent) * 10_000
+ # m = (2 ** exponent) * 10_000
+ count = sieve(m)
+ printf "Primes up to %8d %8d\n", m, count
+end
diff --git a/benchmark/so_nsieve_bits.rb b/benchmark/so_nsieve_bits.rb
new file mode 100644
index 0000000000..6f958ee44e
--- /dev/null
+++ b/benchmark/so_nsieve_bits.rb
@@ -0,0 +1,43 @@
+#!/usr/bin/ruby
+#coding: us-ascii
+#
+# The Great Computer Language Shootout
+# http://shootout.alioth.debian.org/
+#
+# nsieve-bits in Ruby
+# Contributed by Glenn Parker, March 2005
+
+CharExponent = 3
+BitsPerChar = 1 << CharExponent
+LowMask = BitsPerChar - 1
+
+def sieve(m)
+ items = "\xFF" * ((m / BitsPerChar) + 1)
+ masks = ""
+ BitsPerChar.times do |b|
+ masks << (1 << b).chr
+ end
+
+ count = 0
+ pmax = m - 1
+ 2.step(pmax, 1) do |p|
+ if items[p >> CharExponent][p & LowMask] == 1
+ count += 1
+ p.step(pmax, p) do |mult|
+ a = mult >> CharExponent
+ b = mult & LowMask
+ items[a] -= masks[b] if items[a][b] != 0
+ end
+ end
+ end
+ count
+end
+
+n = 9 # (ARGV[0] || 2).to_i
+n.step(n - 2, -1) do |exponent|
+ break if exponent < 0
+ m = 2 ** exponent * 10_000
+ count = sieve(m)
+ printf "Primes up to %8d %8d\n", m, count
+end
+
diff --git a/benchmark/so_object.rb b/benchmark/so_object.rb
new file mode 100644
index 0000000000..131f44624c
--- /dev/null
+++ b/benchmark/so_object.rb
@@ -0,0 +1,56 @@
+#!/usr/bin/ruby
+# -*- Ruby -*-
+# $Id: objinst-ruby.code,v 1.4 2004/11/13 07:42:25 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# with help from Aristarkh Zagorodnikov
+
+class Toggle
+ def initialize(start_state)
+ @bool = start_state
+ end
+
+ def value
+ @bool
+ end
+
+ def activate
+ @bool = !@bool
+ self
+ end
+end
+
+class NthToggle < Toggle
+ def initialize(start_state, max_counter)
+ super start_state
+ @count_max = max_counter
+ @counter = 0
+ end
+
+ def activate
+ @counter += 1
+ if @counter >= @count_max
+ @bool = !@bool
+ @counter = 0
+ end
+ self
+ end
+end
+
+n = 1500000 # (ARGV.shift || 1).to_i
+
+toggle = Toggle.new 1
+5.times do
+ toggle.activate.value ? 'true' : 'false'
+end
+n.times do
+ toggle = Toggle.new 1
+end
+
+ntoggle = NthToggle.new 1, 3
+8.times do
+ ntoggle.activate.value ? 'true' : 'false'
+end
+n.times do
+ ntoggle = NthToggle.new 1, 3
+end
+
diff --git a/benchmark/so_partial_sums.rb b/benchmark/so_partial_sums.rb
new file mode 100644
index 0000000000..630b45cb8d
--- /dev/null
+++ b/benchmark/so_partial_sums.rb
@@ -0,0 +1,31 @@
+n = 2_500_000 # (ARGV.shift || 1).to_i
+
+alt = 1.0 ; s0 = s1 = s2 = s3 = s4 = s5 = s6 = s7 = s8 = 0.0
+
+1.upto(n) do |d|
+ d = d.to_f ; d2 = d * d ; d3 = d2 * d ; ds = Math.sin(d) ; dc = Math.cos(d)
+
+ s0 += (2.0 / 3.0) ** (d - 1.0)
+ s1 += 1.0 / Math.sqrt(d)
+ s2 += 1.0 / (d * (d + 1.0))
+ s3 += 1.0 / (d3 * ds * ds)
+ s4 += 1.0 / (d3 * dc * dc)
+ s5 += 1.0 / d
+ s6 += 1.0 / d2
+ s7 += alt / d
+ s8 += alt / (2.0 * d - 1.0)
+
+ alt = -alt
+end
+
+if false
+ printf("%.9f\t(2/3)^k\n", s0)
+ printf("%.9f\tk^-0.5\n", s1)
+ printf("%.9f\t1/k(k+1)\n", s2)
+ printf("%.9f\tFlint Hills\n", s3)
+ printf("%.9f\tCookson Hills\n", s4)
+ printf("%.9f\tHarmonic\n", s5)
+ printf("%.9f\tRiemann Zeta\n", s6)
+ printf("%.9f\tAlternating Harmonic\n", s7)
+ printf("%.9f\tGregory\n", s8)
+end
diff --git a/benchmark/so_pidigits.rb b/benchmark/so_pidigits.rb
new file mode 100644
index 0000000000..9a537b2d1c
--- /dev/null
+++ b/benchmark/so_pidigits.rb
@@ -0,0 +1,92 @@
+# The Great Computer Language Shootout
+# http://shootout.alioth.debian.org/
+#
+# contributed by Gabriele Renzi
+
+class PiDigitSpigot
+
+ def initialize()
+ @z = Transformation.new 1,0,0,1
+ @x = Transformation.new 0,0,0,0
+ @inverse = Transformation.new 0,0,0,0
+ end
+
+ def next!
+ @y = @z.extract(3)
+ if safe? @y
+ @z = produce(@y)
+ @y
+ else
+ @z = consume @x.next!()
+ next!()
+ end
+ end
+
+ def safe?(digit)
+ digit == @z.extract(4)
+ end
+
+ def produce(i)
+ @inverse.qrst(10,-10*i,0,1).compose(@z)
+ end
+
+ def consume(a)
+ @z.compose(a)
+ end
+end
+
+
+class Transformation
+ attr_reader :q, :r, :s, :t
+ def initialize(q, r, s, t)
+ @q,@r,@s,@t,@k = q,r,s,t,0
+ end
+
+ def next!()
+ @q = @k = @k + 1
+ @r = 4 * @k + 2
+ @s = 0
+ @t = 2 * @k + 1
+ self
+ end
+
+ def extract(j)
+ (@q * j + @r) / (@s * j + @t)
+ end
+
+ def compose(a)
+ self.class.new( @q * a.q,
+ @q * a.r + r * a.t,
+ @s * a.q + t * a.s,
+ @s * a.r + t * a.t
+ )
+ end
+
+ def qrst *args
+ initialize *args
+ self
+ end
+
+
+end
+
+
+WIDTH = 10
+n = 2_500 # Integer(ARGV[0])
+j = 0
+
+digits = PiDigitSpigot.new
+
+while n > 0
+ if n >= WIDTH
+ WIDTH.times {print digits.next!}
+ j += WIDTH
+ else
+ n.times {print digits.next!}
+ (WIDTH-n).times {print " "}
+ j += n
+ end
+ puts "\t:"+j.to_s
+ n -= WIDTH
+end
+
diff --git a/benchmark/so_random.rb b/benchmark/so_random.rb
new file mode 100644
index 0000000000..a66b9e8e63
--- /dev/null
+++ b/benchmark/so_random.rb
@@ -0,0 +1,20 @@
+# from http://www.bagley.org/~doug/shootout/bench/random/random.ruby
+
+IM = 139968.0
+IA = 3877.0
+IC = 29573.0
+
+$last = 42.0
+
+def gen_random(max)
+ (max * ($last = ($last * IA + IC) % IM)) / IM
+end
+
+N = 3_000_000
+
+i = 0
+while i<N
+ i +=1
+ gen_random(100.0)
+end
+# "%.9f" % gen_random(100.0)
diff --git a/benchmark/so_reverse_complement.yml b/benchmark/so_reverse_complement.yml
new file mode 100644
index 0000000000..de05eedfc4
--- /dev/null
+++ b/benchmark/so_reverse_complement.yml
@@ -0,0 +1,137 @@
+prelude: |
+ bm_so_fasta = <<'EOS'
+ # The Computer Language Shootout
+ # http://shootout.alioth.debian.org/
+ # Contributed by Sokolov Yura
+
+ $last = 42.0
+ def gen_random(max, im=139968, ia=3877, ic=29573)
+ (max * ($last = ($last * ia + ic) % im)) / im
+ end
+
+ alu =
+ "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG"+
+ "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA"+
+ "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT"+
+ "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA"+
+ "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG"+
+ "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC"+
+ "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"
+
+ iub = [
+ ["a", 0.27],
+ ["c", 0.12],
+ ["g", 0.12],
+ ["t", 0.27],
+
+ ["B", 0.02],
+ ["D", 0.02],
+ ["H", 0.02],
+ ["K", 0.02],
+ ["M", 0.02],
+ ["N", 0.02],
+ ["R", 0.02],
+ ["S", 0.02],
+ ["V", 0.02],
+ ["W", 0.02],
+ ["Y", 0.02],
+ ]
+ homosapiens = [
+ ["a", 0.3029549426680],
+ ["c", 0.1979883004921],
+ ["g", 0.1975473066391],
+ ["t", 0.3015094502008],
+ ]
+
+ def make_repeat_fasta(id, desc, src, n)
+ puts ">#{id} #{desc}"
+ v = nil
+ width = 60
+ l = src.length
+ s = src * ((n / l) + 1)
+ s.slice!(n, l)
+ puts(s.scan(/.{1,#{width}}/).join("\n"))
+ end
+
+ def make_random_fasta(id, desc, table, n)
+ puts ">#{id} #{desc}"
+ rand, v = nil,nil
+ width = 60
+ chunk = 1 * width
+ prob = 0.0
+ table.each{|v| v[1]= (prob += v[1])}
+ for i in 1..(n/width)
+ puts((1..width).collect{
+ rand = gen_random(1.0)
+ table.find{|v| v[1]>rand}[0]
+ }.join)
+ end
+ if n%width != 0
+ puts((1..(n%width)).collect{
+ rand = gen_random(1.0)
+ table.find{|v| v[1]>rand}[0]
+ }.join)
+ end
+ end
+
+
+ n = (ARGV[0] or 250_000).to_i
+
+ make_repeat_fasta('ONE', 'Homo sapiens alu', alu, n*2)
+ make_random_fasta('TWO', 'IUB ambiguity codes', iub, n*3)
+ make_random_fasta('THREE', 'Homo sapiens frequency', homosapiens, n*5)
+ EOS
+benchmark:
+ - name: so_reverse_complement
+ prelude: |
+ script = File.join(File.dirname($0), 'bm_so_fasta.rb')
+ File.write(script, bm_so_fasta)
+
+ def prepare_fasta_output n
+ filebase = File.join(File.dirname($0), 'fasta.output')
+ script = File.join(File.dirname($0), 'bm_so_fasta.rb')
+ file = "#{filebase}.#{n}"
+
+ unless FileTest.exist?(file)
+ STDERR.puts "preparing #{file}"
+
+ open(file, 'w'){|f|
+ ARGV[0] = n
+ $stdout = f
+ load script
+ $stdout = STDOUT
+ }
+ end
+ end
+ prepare_fasta_output(2_500_000)
+ script: |
+ # The Great Computer Language Shootout
+ # http://shootout.alioth.debian.org/
+ #
+ # Contributed by Peter Bjarke Olsen
+ # Modified by Doug King
+
+ seq=Array.new
+
+ def revcomp(seq)
+ seq.reverse!.tr!('wsatugcyrkmbdhvnATUGCYRKMBDHVN','WSTAACGRYMKVHDBNTAACGRYMKVHDBN')
+ stringlen=seq.length
+ 0.step(stringlen-1,60) {|x| print seq.slice(x,60) , "\n"}
+ end
+
+ input = open(File.join(File.dirname($0), 'fasta.output.2500000'), 'rb')
+
+ while input.gets
+ if $_ =~ />/
+ if seq.length != 0
+ revcomp(seq.join)
+ seq=Array.new
+ end
+ puts $_
+ else
+ $_.sub(/\n/,'')
+ seq.push $_
+ end
+ end
+ revcomp(seq.join)
+ loop_count: 1
diff --git a/benchmark/so_sieve.rb b/benchmark/so_sieve.rb
new file mode 100644
index 0000000000..43dc302648
--- /dev/null
+++ b/benchmark/so_sieve.rb
@@ -0,0 +1,24 @@
+# from http://www.bagley.org/~doug/shootout/bench/sieve/sieve.ruby
+num = 500
+count = i = j = 0
+flags0 = Array.new(8192,1)
+k = 0
+while k < num
+ k += 1
+ count = 0
+ flags = flags0.dup
+ i = 2
+ while i<8192
+ i += 1
+ if flags[i]
+ # remove all multiples of prime: i
+ j = i*i
+ while j < 8192
+ j += i
+ flags[j] = nil
+ end
+ count += 1
+ end
+ end
+end
+count
diff --git a/benchmark/so_spectralnorm.rb b/benchmark/so_spectralnorm.rb
new file mode 100644
index 0000000000..6b97206689
--- /dev/null
+++ b/benchmark/so_spectralnorm.rb
@@ -0,0 +1,50 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org/
+# Contributed by Sokolov Yura
+
+def eval_A(i,j)
+ return 1.0/((i+j)*(i+j+1)/2+i+1)
+end
+
+def eval_A_times_u(u)
+ v, i = nil, nil
+ (0..u.length-1).collect { |i|
+ v = 0
+ for j in 0..u.length-1
+ v += eval_A(i,j)*u[j]
+ end
+ v
+ }
+end
+
+def eval_At_times_u(u)
+ v, i = nil, nil
+ (0..u.length-1).collect{|i|
+ v = 0
+ for j in 0..u.length-1
+ v += eval_A(j,i)*u[j]
+ end
+ v
+ }
+end
+
+def eval_AtA_times_u(u)
+ return eval_At_times_u(eval_A_times_u(u))
+end
+
+n = 500 # ARGV[0].to_i
+
+u=[1]*n
+for i in 1..10
+ v=eval_AtA_times_u(u)
+ u=eval_AtA_times_u(v)
+end
+vBv=0
+vv=0
+for i in 0..n-1
+ vBv += u[i]*v[i]
+ vv += v[i]*v[i]
+end
+
+str = "%0.9f" % (Math.sqrt(vBv/vv)), "\n"
+# print str
diff --git a/benchmark/string_capitalize.yml b/benchmark/string_capitalize.yml
new file mode 100644
index 0000000000..7d23fd3d35
--- /dev/null
+++ b/benchmark/string_capitalize.yml
@@ -0,0 +1,10 @@
+prelude: |
+ str1 = [*"a".."m",*"N".."Z",*"0".."9"].join("")
+ str10 = str1 * 10
+ str100 = str10 * 10
+ str1000 = str100 * 10
+benchmark:
+ capitalize-1: str1.capitalize
+ capitalize-10: str10.capitalize
+ capitalize-100: str100.capitalize
+ capitalize-1000: str1000.capitalize
diff --git a/benchmark/string_casecmp.yml b/benchmark/string_casecmp.yml
new file mode 100644
index 0000000000..2354040a04
--- /dev/null
+++ b/benchmark/string_casecmp.yml
@@ -0,0 +1,26 @@
+prelude: |
+ lstr1 = [*"a".."z",*"0".."9"].join("")
+ lstr10 = lstr1 * 10
+ lstr100 = lstr10 * 10
+ lstr1000 = lstr100 * 10
+ lnonascii1 = [*"\u{e0}".."\u{ff}"].join("")
+ lnonascii10 = lnonascii1 * 10
+ lnonascii100 = lnonascii10 * 10
+ lnonascii1000 = lnonascii100 * 10
+ ustr1 = [*"A".."Z",*"0".."9"].join("")
+ ustr10 = ustr1 * 10
+ ustr100 = ustr10 * 10
+ ustr1000 = ustr100 * 10
+ unonascii1 = [*"\u{c0}".."\u{df}"].join("")
+ unonascii10 = unonascii1 * 10
+ unonascii100 = unonascii10 * 10
+ unonascii1000 = unonascii100 * 10
+benchmark:
+ casecmp-1: lstr1.casecmp(ustr1)
+ casecmp-10: lstr10.casecmp(ustr10)
+ casecmp-100: lstr100.casecmp(ustr100)
+ casecmp-1000: lstr1000.casecmp(ustr1000)
+ casecmp-nonascii1: lnonascii1.casecmp(unonascii1)
+ casecmp-nonascii10: lnonascii10.casecmp(unonascii10)
+ casecmp-nonascii100: lnonascii100.casecmp(unonascii100)
+ casecmp-nonascii1000: lnonascii1000.casecmp(unonascii1000)
diff --git a/benchmark/string_casecmp_p.yml b/benchmark/string_casecmp_p.yml
new file mode 100644
index 0000000000..a790ce7d55
--- /dev/null
+++ b/benchmark/string_casecmp_p.yml
@@ -0,0 +1,26 @@
+prelude: |
+ lstr1 = [*"a".."z",*"0".."9"].join("")
+ lstr10 = lstr1 * 10
+ lstr100 = lstr10 * 10
+ lstr1000 = lstr100 * 10
+ lnonascii1 = [*"\u{e0}".."\u{ff}"].join("")
+ lnonascii10 = lnonascii1 * 10
+ lnonascii100 = lnonascii10 * 10
+ lnonascii1000 = lnonascii100 * 10
+ ustr1 = [*"A".."Z",*"0".."9"].join("")
+ ustr10 = ustr1 * 10
+ ustr100 = ustr10 * 10
+ ustr1000 = ustr100 * 10
+ unonascii1 = [*"\u{c0}".."\u{df}"].join("")
+ unonascii10 = unonascii1 * 10
+ unonascii100 = unonascii10 * 10
+ unonascii1000 = unonascii100 * 10
+benchmark:
+ casecmp_p-1: lstr1.casecmp?(ustr1)
+ casecmp_p-10: lstr10.casecmp?(ustr10)
+ casecmp_p-100: lstr100.casecmp?(ustr100)
+ casecmp_p-1000: lstr1000.casecmp?(ustr1000)
+ casecmp_p-nonascii1: lnonascii1.casecmp?(unonascii1)
+ casecmp_p-nonascii10: lnonascii10.casecmp?(unonascii10)
+ casecmp_p-nonascii100: lnonascii100.casecmp?(unonascii100)
+ casecmp_p-nonascii1000: lnonascii1000.casecmp?(unonascii1000)
diff --git a/benchmark/string_concat.yml b/benchmark/string_concat.yml
new file mode 100644
index 0000000000..e65c00cca9
--- /dev/null
+++ b/benchmark/string_concat.yml
@@ -0,0 +1,45 @@
+prelude: |
+ CHUNK = "a" * 64
+ UCHUNK = "é" * 32
+ GC.disable # GC causes a lot of variance
+benchmark:
+ binary_concat_7bit: |
+ buffer = String.new(capacity: 4096, encoding: Encoding::BINARY)
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ utf8_concat_7bit: |
+ buffer = String.new(capacity: 4096, encoding: Encoding::UTF_8)
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ utf8_concat_UTF8: |
+ buffer = String.new(capacity: 4096, encoding: Encoding::UTF_8)
+ buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
+ buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
+ buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
+ buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
+ buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
+ buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
+ buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
+ buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
+ interpolation: |
+ buffer = "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
+ "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
+ "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
+ "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
+ "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
+ "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
+ "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
+ "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
+ "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}"
diff --git a/benchmark/string_downcase.yml b/benchmark/string_downcase.yml
new file mode 100644
index 0000000000..1fea6afbec
--- /dev/null
+++ b/benchmark/string_downcase.yml
@@ -0,0 +1,18 @@
+prelude: |
+ str1 = [*"A".."Z",*"0".."9"].join("")
+ str10 = str1 * 10
+ str100 = str10 * 10
+ str1000 = str100 * 10
+ nonascii1 = [*"\u{c0}".."\u{df}"].join("")
+ nonascii10 = nonascii1 * 10
+ nonascii100 = nonascii10 * 10
+ nonascii1000 = nonascii100 * 10
+benchmark:
+ downcase-1: str1.upcase
+ downcase-10: str10.upcase
+ downcase-100: str100.upcase
+ downcase-1000: str1000.upcase
+ downcase-nonascii1: nonascii1.downcase
+ downcase-nonascii10: nonascii10.downcase
+ downcase-nonascii100: nonascii100.downcase
+ downcase-nonascii1000: nonascii1000.downcase
diff --git a/benchmark/string_index.rb b/benchmark/string_index.rb
new file mode 100644
index 0000000000..7783111082
--- /dev/null
+++ b/benchmark/string_index.rb
@@ -0,0 +1,3 @@
+str1 = "ã‚" * 1024 + "ã„" # not single byte optimizable
+str2 = "ã„"
+100_000.times { str1.index(str2) }
diff --git a/benchmark/string_scan_re.rb b/benchmark/string_scan_re.rb
new file mode 100644
index 0000000000..b0d60201a9
--- /dev/null
+++ b/benchmark/string_scan_re.rb
@@ -0,0 +1,2 @@
+str = Array.new(1_000, 'abc').join(',')
+1_000.times { str.scan(/abc/) }
diff --git a/benchmark/string_scan_str.rb b/benchmark/string_scan_str.rb
new file mode 100644
index 0000000000..42440bd948
--- /dev/null
+++ b/benchmark/string_scan_str.rb
@@ -0,0 +1,2 @@
+str = Array.new(1_000, 'abc').join(',')
+1_000.times { str.scan('abc') }
diff --git a/benchmark/string_slice.yml b/benchmark/string_slice.yml
new file mode 100644
index 0000000000..fc2393c5d1
--- /dev/null
+++ b/benchmark/string_slice.yml
@@ -0,0 +1,11 @@
+prelude: |
+ long_string = "x"*1000+"-hår"
+benchmark:
+ regexp-short: |
+ "x-hår".slice!(/-(.)(.)(.)/, 3)
+ regexp-long: |
+ long_string.dup.slice!(/-(.)(.)(.)/, 3)
+ string-short: |
+ "x-hår".slice!("r")
+ string-long: |
+ long_string.dup.slice!("r")
diff --git a/benchmark/string_split.yml b/benchmark/string_split.yml
new file mode 100644
index 0000000000..cc2c7d7855
--- /dev/null
+++ b/benchmark/string_split.yml
@@ -0,0 +1,22 @@
+prelude: |
+ str1 = [*0..5].join(" ") + " "
+ str10 = str1 * 10
+ str100 = str10 * 10
+ str1000 = str100 * 10
+benchmark:
+ to_chars-1: str1.split('')
+ to_chars-10: str10.split('')
+ to_chars-100: str100.split('')
+ to_chars-1000: str1000.split('')
+ to_words-1: str1.split(' ')
+ to_words-10: str10.split(' ')
+ to_words-100: str100.split(' ')
+ to_words-1000: str1000.split(' ')
+ re_chars-1: str1.split(//)
+ re_chars-10: str10.split(//)
+ re_chars-100: str100.split(//)
+ re_chars-1000: str1000.split(//)
+ re_space-1: str1.split(/ /)
+ re_space-10: str10.split(/ /)
+ re_space-100: str100.split(/ /)
+ re_space-1000: str1000.split(/ /)
diff --git a/benchmark/string_swapcase.yml b/benchmark/string_swapcase.yml
new file mode 100644
index 0000000000..eeb5928907
--- /dev/null
+++ b/benchmark/string_swapcase.yml
@@ -0,0 +1,18 @@
+prelude: |
+ str1 = [*"A".."M",*"n".."z",*"0".."9"].join("")
+ str10 = str1 * 10
+ str100 = str10 * 10
+ str1000 = str100 * 10
+ nonascii1 = [*"\u{c0}".."\u{cf}",*"\u{f0}".."\u{ff}"].join("")
+ nonascii10 = nonascii1 * 10
+ nonascii100 = nonascii10 * 10
+ nonascii1000 = nonascii100 * 10
+benchmark:
+ swapcase-1: str1.swapcase
+ swapcase-10: str10.swapcase
+ swapcase-100: str100.swapcase
+ swapcase-1000: str1000.swapcase
+ swapcase-nonascii1: nonascii1.swapcase
+ swapcase-nonascii10: nonascii10.swapcase
+ swapcase-nonascii100: nonascii100.swapcase
+ swapcase-nonascii1000: nonascii1000.swapcase
diff --git a/benchmark/string_upcase.yml b/benchmark/string_upcase.yml
new file mode 100644
index 0000000000..dab84bbde2
--- /dev/null
+++ b/benchmark/string_upcase.yml
@@ -0,0 +1,18 @@
+prelude: |
+ str1 = [*"a".."z",*"0".."9"].join("")
+ str10 = str1 * 10
+ str100 = str10 * 10
+ str1000 = str100 * 10
+ nonascii1 = [*"\u{e0}".."\u{ff}"].join("")
+ nonascii10 = nonascii1 * 10
+ nonascii100 = nonascii10 * 10
+ nonascii1000 = nonascii100 * 10
+benchmark:
+ upcase-1: str1.upcase
+ upcase-10: str10.upcase
+ upcase-100: str100.upcase
+ upcase-1000: str1000.upcase
+ upcase-nonascii1: nonascii1.upcase
+ upcase-nonascii10: nonascii10.upcase
+ upcase-nonascii100: nonascii100.upcase
+ upcase-nonascii1000: nonascii1000.upcase
diff --git a/benchmark/time_at.yml b/benchmark/time_at.yml
new file mode 100644
index 0000000000..3247efbe77
--- /dev/null
+++ b/benchmark/time_at.yml
@@ -0,0 +1,7 @@
+prelude: |
+ # frozen_string_literal: true
+benchmark:
+ - 'Time.at(0)'
+ - 'Time.at(0, 500)'
+ - 'Time.at(0, in: "+09:00")'
+ - 'Time.at(0, 500, in: "+09:00")'
diff --git a/benchmark/time_new.yml b/benchmark/time_new.yml
new file mode 100644
index 0000000000..5947dd3a41
--- /dev/null
+++ b/benchmark/time_new.yml
@@ -0,0 +1,4 @@
+benchmark:
+ - 'Time.new(2021)'
+ - 'Time.new(2021, 8, 22)'
+ - 'Time.new(2021, 8, 22, in: "+09:00")'
diff --git a/benchmark/time_now.yml b/benchmark/time_now.yml
new file mode 100644
index 0000000000..f6d6a31489
--- /dev/null
+++ b/benchmark/time_now.yml
@@ -0,0 +1,3 @@
+benchmark:
+ - 'Time.now'
+ - 'Time.now(in: "+09:00")'
diff --git a/benchmark/time_parse.yml b/benchmark/time_parse.yml
new file mode 100644
index 0000000000..6060b58bc6
--- /dev/null
+++ b/benchmark/time_parse.yml
@@ -0,0 +1,10 @@
+prelude: |
+ require 'time'
+ inspect = "2021-08-23 09:57:02 +0900"
+ iso8601 = "2021-08-23T09:57:02+09:00"
+benchmark:
+ - Time.iso8601(iso8601)
+ - Time.parse(iso8601)
+ - Time.parse(inspect)
+ - Time.new(iso8601) rescue Time.iso8601(iso8601)
+ - Time.new(inspect) rescue Time.parse(inspect)
diff --git a/benchmark/time_strptime.yml b/benchmark/time_strptime.yml
new file mode 100644
index 0000000000..8d89ebb7a7
--- /dev/null
+++ b/benchmark/time_strptime.yml
@@ -0,0 +1,13 @@
+prelude: |
+ require 'time'
+benchmark:
+ - Time.strptime("28/Aug/2005:06:54:20 +0000", "%d/%b/%Y:%T %z")
+ - Time.strptime("1", "%s")
+ - Time.strptime("0 +0100", "%s %z")
+ - Time.strptime("0 UTC", "%s %z")
+ - Time.strptime("1.5", "%s.%N")
+ - Time.strptime("1.000000000001", "%s.%N")
+ - Time.strptime("20010203 -0200", "%Y%m%d %z")
+ - Time.strptime("20010203 UTC", "%Y%m%d %z")
+ - Time.strptime("2018-365", "%Y-%j")
+ - Time.strptime("2018-091", "%Y-%j")
diff --git a/benchmark/time_subsec.rb b/benchmark/time_subsec.rb
new file mode 100644
index 0000000000..505021c701
--- /dev/null
+++ b/benchmark/time_subsec.rb
@@ -0,0 +1,2 @@
+t = Time.now
+4000000.times { t.subsec }
diff --git a/benchmark/vm_array.yml b/benchmark/vm_array.yml
new file mode 100644
index 0000000000..2a177237ef
--- /dev/null
+++ b/benchmark/vm_array.yml
@@ -0,0 +1,4 @@
+benchmark:
+ vm_array: |
+ a = [1,2,3,4,5,6,7,8,9,10]
+loop_count: 6000000
diff --git a/benchmark/vm_attr_ivar.yml b/benchmark/vm_attr_ivar.yml
new file mode 100644
index 0000000000..75b803478e
--- /dev/null
+++ b/benchmark/vm_attr_ivar.yml
@@ -0,0 +1,14 @@
+prelude: |
+ class C
+ attr_reader :a, :b
+ def initialize
+ @a = nil
+ @b = nil
+ end
+ end
+ obj = C.new
+benchmark:
+ vm_attr_ivar: |
+ j = obj.a
+ k = obj.b
+loop_count: 30000000
diff --git a/benchmark/vm_attr_ivar_set.yml b/benchmark/vm_attr_ivar_set.yml
new file mode 100644
index 0000000000..a0d379b18a
--- /dev/null
+++ b/benchmark/vm_attr_ivar_set.yml
@@ -0,0 +1,14 @@
+prelude: |
+ class C
+ attr_accessor :a, :b
+ def initialize
+ @a = nil
+ @b = nil
+ end
+ end
+ obj = C.new
+benchmark:
+ vm_attr_ivar_set: |
+ obj.a = 1
+ obj.b = 2
+loop_count: 30000000
diff --git a/benchmark/vm_backtrace.rb b/benchmark/vm_backtrace.rb
new file mode 100644
index 0000000000..0fbf73e1ca
--- /dev/null
+++ b/benchmark/vm_backtrace.rb
@@ -0,0 +1,22 @@
+# get last backtrace
+
+begin
+ caller(0, 0)
+rescue ArgumentError
+ alias caller_orig caller
+ def caller lev, n
+ caller_orig(lev)[0..n]
+ end
+end
+
+def rec n
+ if n < 0
+ 100_000.times{
+ caller(0, 1)
+ }
+ else
+ rec(n-1)
+ end
+end
+
+rec 50
diff --git a/benchmark/vm_bigarray.yml b/benchmark/vm_bigarray.yml
new file mode 100644
index 0000000000..8b2d3f3443
--- /dev/null
+++ b/benchmark/vm_bigarray.yml
@@ -0,0 +1,105 @@
+benchmark:
+ vm_bigarray: |
+ a = [
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ ]
+loop_count: 6000000
diff --git a/benchmark/vm_bighash.yml b/benchmark/vm_bighash.yml
new file mode 100644
index 0000000000..4dacfde793
--- /dev/null
+++ b/benchmark/vm_bighash.yml
@@ -0,0 +1,4 @@
+benchmark:
+ vm_bighash: |
+ a = {0=>0, 1=>1, 2=>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7, 8=>8, 9=>9, 10=>10, 11=>11, 12=>12, 13=>13, 14=>14, 15=>15, 16=>16, 17=>17, 18=>18, 19=>19, 20=>20, 21=>21, 22=>22, 23=>23, 24=>24, 25=>25, 26=>26, 27=>27, 28=>28, 29=>29, 30=>30, 31=>31, 32=>32, 33=>33, 34=>34, 35=>35, 36=>36, 37=>37, 38=>38, 39=>39, 40=>40, 41=>41, 42=>42, 43=>43, 44=>44, 45=>45, 46=>46, 47=>47, 48=>48, 49=>49, 50=>50, 51=>51, 52=>52, 53=>53, 54=>54, 55=>55, 56=>56, 57=>57, 58=>58, 59=>59, 60=>60, 61=>61, 62=>62, 63=>63, 64=>64, 65=>65, 66=>66, 67=>67, 68=>68, 69=>69, 70=>70, 71=>71, 72=>72, 73=>73, 74=>74, 75=>75, 76=>76, 77=>77, 78=>78, 79=>79, 80=>80, 81=>81, 82=>82, 83=>83, 84=>84, 85=>85, 86=>86, 87=>87, 88=>88, 89=>89, 90=>90, 91=>91, 92=>92, 93=>93, 94=>94, 95=>95, 96=>96, 97=>97, 98=>98, 99=>99, 100=>100, 101=>101, 102=>102, 103=>103, 104=>104, 105=>105, 106=>106, 107=>107, 108=>108, 109=>109, 110=>110, 111=>111, 112=>112, 113=>113, 114=>114, 115=>115, 116=>116, 117=>117, 118=>118, 119=>119, 120=>120, 121=>121, 122=>122, 123=>123, 124=>124, 125=>125, 126=>126, 127=>127, 128=>128, 129=>129, 130=>130, 131=>131, 132=>132, 133=>133, 134=>134, 135=>135, 136=>136, 137=>137, 138=>138, 139=>139, 140=>140, 141=>141, 142=>142, 143=>143, 144=>144, 145=>145, 146=>146, 147=>147, 148=>148, 149=>149, 150=>150, 151=>151, 152=>152, 153=>153, 154=>154, 155=>155, 156=>156, 157=>157, 158=>158, 159=>159, 160=>160, 161=>161, 162=>162, 163=>163, 164=>164, 165=>165, 166=>166, 167=>167, 168=>168, 169=>169, 170=>170, 171=>171, 172=>172, 173=>173, 174=>174, 175=>175, 176=>176, 177=>177, 178=>178, 179=>179, 180=>180, 181=>181, 182=>182, 183=>183, 184=>184, 185=>185, 186=>186, 187=>187, 188=>188, 189=>189, 190=>190, 191=>191, 192=>192, 193=>193, 194=>194, 195=>195, 196=>196, 197=>197, 198=>198, 199=>199, 200=>200, 201=>201, 202=>202, 203=>203, 204=>204, 205=>205, 206=>206, 207=>207, 208=>208, 209=>209, 210=>210, 211=>211, 212=>212, 213=>213, 214=>214, 215=>215, 216=>216, 217=>217, 218=>218, 219=>219, 220=>220, 221=>221, 222=>222, 223=>223, 224=>224, 225=>225, 226=>226, 227=>227, 228=>228, 229=>229, 230=>230, 231=>231, 232=>232, 233=>233, 234=>234, 235=>235, 236=>236, 237=>237, 238=>238, 239=>239, 240=>240, 241=>241, 242=>242, 243=>243, 244=>244, 245=>245, 246=>246, 247=>247, 248=>248, 249=>249, 250=>250, 251=>251, 252=>252, 253=>253, 254=>254, 255=>255, 256=>256, 257=>257, 258=>258, 259=>259, 260=>260, 261=>261, 262=>262, 263=>263, 264=>264, 265=>265, 266=>266, 267=>267, 268=>268, 269=>269, 270=>270, 271=>271, 272=>272, 273=>273, 274=>274, 275=>275, 276=>276, 277=>277, 278=>278, 279=>279, 280=>280, 281=>281, 282=>282, 283=>283, 284=>284, 285=>285, 286=>286, 287=>287, 288=>288, 289=>289, 290=>290, 291=>291, 292=>292, 293=>293, 294=>294, 295=>295, 296=>296, 297=>297, 298=>298, 299=>299, 300=>300, 301=>301, 302=>302, 303=>303, 304=>304, 305=>305, 306=>306, 307=>307, 308=>308, 309=>309, 310=>310, 311=>311, 312=>312, 313=>313, 314=>314, 315=>315, 316=>316, 317=>317, 318=>318, 319=>319, 320=>320, 321=>321, 322=>322, 323=>323, 324=>324, 325=>325, 326=>326, 327=>327, 328=>328, 329=>329, 330=>330, 331=>331, 332=>332, 333=>333, 334=>334, 335=>335, 336=>336, 337=>337, 338=>338, 339=>339, 340=>340, 341=>341, 342=>342, 343=>343, 344=>344, 345=>345, 346=>346, 347=>347, 348=>348, 349=>349, 350=>350, 351=>351, 352=>352, 353=>353, 354=>354, 355=>355, 356=>356, 357=>357, 358=>358, 359=>359, 360=>360, 361=>361, 362=>362, 363=>363, 364=>364, 365=>365, 366=>366, 367=>367, 368=>368, 369=>369, 370=>370, 371=>371, 372=>372, 373=>373, 374=>374, 375=>375, 376=>376, 377=>377, 378=>378, 379=>379, 380=>380, 381=>381, 382=>382, 383=>383, 384=>384, 385=>385, 386=>386, 387=>387, 388=>388, 389=>389, 390=>390, 391=>391, 392=>392, 393=>393, 394=>394, 395=>395, 396=>396, 397=>397, 398=>398, 399=>399, 400=>400, 401=>401, 402=>402, 403=>403, 404=>404, 405=>405, 406=>406, 407=>407, 408=>408, 409=>409, 410=>410, 411=>411, 412=>412, 413=>413, 414=>414, 415=>415, 416=>416, 417=>417, 418=>418, 419=>419, 420=>420, 421=>421, 422=>422, 423=>423, 424=>424, 425=>425, 426=>426, 427=>427, 428=>428, 429=>429, 430=>430, 431=>431, 432=>432, 433=>433, 434=>434, 435=>435, 436=>436, 437=>437, 438=>438, 439=>439, 440=>440, 441=>441, 442=>442, 443=>443, 444=>444, 445=>445, 446=>446, 447=>447, 448=>448, 449=>449, 450=>450, 451=>451, 452=>452, 453=>453, 454=>454, 455=>455, 456=>456, 457=>457, 458=>458, 459=>459, 460=>460, 461=>461, 462=>462, 463=>463, 464=>464, 465=>465, 466=>466, 467=>467, 468=>468, 469=>469, 470=>470, 471=>471, 472=>472, 473=>473, 474=>474, 475=>475, 476=>476, 477=>477, 478=>478, 479=>479, 480=>480, 481=>481, 482=>482, 483=>483, 484=>484, 485=>485, 486=>486, 487=>487, 488=>488, 489=>489, 490=>490, 491=>491, 492=>492, 493=>493, 494=>494, 495=>495, 496=>496, 497=>497, 498=>498, 499=>499, 500=>500,}
+loop_count: 60000
diff --git a/benchmark/vm_block.yml b/benchmark/vm_block.yml
new file mode 100644
index 0000000000..68b3e40bf5
--- /dev/null
+++ b/benchmark/vm_block.yml
@@ -0,0 +1,9 @@
+prelude: |
+ def m
+ yield
+ end
+benchmark:
+ vm_block: |
+ m{
+ }
+loop_count: 30000000
diff --git a/benchmark/vm_block_handler.yml b/benchmark/vm_block_handler.yml
new file mode 100644
index 0000000000..461d7953ad
--- /dev/null
+++ b/benchmark/vm_block_handler.yml
@@ -0,0 +1,27 @@
+# :FIXME: is there a way to benchmark block_handler_type_ifunc?
+
+prelude: |
+ p = proc{_1}
+ o = Object.new
+ def o.each
+ i = 0
+ while i < 3_000_000 do
+ yield i
+ i += 1
+ end
+ end
+
+benchmark:
+ - name: block_handler_type_iseq
+ script: |
+ o.each{_1}
+
+ - name: block_handler_type_symbol
+ script: |
+ o.each(&:itself)
+
+ - name: block_handler_type_proc
+ script: |
+ o.each(&p)
+
+loop_count: 1
diff --git a/benchmark/vm_blockparam.yml b/benchmark/vm_blockparam.yml
new file mode 100644
index 0000000000..5e5a0170a2
--- /dev/null
+++ b/benchmark/vm_blockparam.yml
@@ -0,0 +1,7 @@
+prelude: |
+ def m &b
+ end
+benchmark:
+ vm_blockparam: |
+ m{}
+loop_count: 30000000
diff --git a/benchmark/vm_blockparam_call.yml b/benchmark/vm_blockparam_call.yml
new file mode 100644
index 0000000000..a7d8d366ea
--- /dev/null
+++ b/benchmark/vm_blockparam_call.yml
@@ -0,0 +1,8 @@
+prelude: |
+ def m &b
+ b.call
+ end
+benchmark:
+ vm_blockparam_call: |
+ m{}
+loop_count: 30000000
diff --git a/benchmark/vm_blockparam_pass.yml b/benchmark/vm_blockparam_pass.yml
new file mode 100644
index 0000000000..841f5e7a63
--- /dev/null
+++ b/benchmark/vm_blockparam_pass.yml
@@ -0,0 +1,12 @@
+prelude: |
+ def bp_yield
+ yield
+ end
+
+ def bp_pass &b
+ bp_yield &b
+ end
+benchmark:
+ vm_blockparam_pass: |
+ bp_pass{}
+loop_count: 30000000
diff --git a/benchmark/vm_blockparam_yield.yml b/benchmark/vm_blockparam_yield.yml
new file mode 100644
index 0000000000..8ea9b46ed2
--- /dev/null
+++ b/benchmark/vm_blockparam_yield.yml
@@ -0,0 +1,8 @@
+prelude: |
+ def bp_yield &b
+ yield
+ end
+benchmark:
+ vm_blockparam_yield: |
+ bp_yield{}
+loop_count: 30000000
diff --git a/benchmark/vm_case.yml b/benchmark/vm_case.yml
new file mode 100644
index 0000000000..b26a491a15
--- /dev/null
+++ b/benchmark/vm_case.yml
@@ -0,0 +1,13 @@
+benchmark:
+ vm_case: |
+ case :foo
+ when :bar
+ raise
+ when :baz
+ raise
+ when :boo
+ raise
+ when :foo
+ # noop
+ end
+loop_count: 6000000
diff --git a/benchmark/vm_case_classes.yml b/benchmark/vm_case_classes.yml
new file mode 100644
index 0000000000..cacc4f0464
--- /dev/null
+++ b/benchmark/vm_case_classes.yml
@@ -0,0 +1,9 @@
+benchmark:
+ vm_case_classes: |
+ case :foo
+ when Hash
+ raise
+ when Array
+ raise
+ end
+loop_count: 6000000
diff --git a/benchmark/vm_case_lit.yml b/benchmark/vm_case_lit.yml
new file mode 100644
index 0000000000..9f91801544
--- /dev/null
+++ b/benchmark/vm_case_lit.yml
@@ -0,0 +1,23 @@
+# loop_count is not utilized since `i` is involved in the script
+benchmark:
+ vm_case_lit: |
+ i = 0
+ @ret = [ "foo", true, false, :sym, 6, nil, 0.1, 0xffffffffffffffff ]
+ def foo(i)
+ @ret[i % @ret.size]
+ end
+
+ while i<6_000_000
+ case foo(i)
+ when "foo" then :foo
+ when true then true
+ when false then false
+ when :sym then :sym
+ when 6 then :fix
+ when nil then nil
+ when 0.1 then :float
+ when 0xffffffffffffffff then :big
+ end
+ i += 1
+ end
+loop_count: 1
diff --git a/benchmark/vm_clearmethodcache.rb b/benchmark/vm_clearmethodcache.rb
new file mode 100644
index 0000000000..9661323cd2
--- /dev/null
+++ b/benchmark/vm_clearmethodcache.rb
@@ -0,0 +1,8 @@
+i = 0
+while i<200_000
+ i += 1
+
+ Class.new{
+ def m; end
+ }
+end
diff --git a/benchmark/vm_const.yml b/benchmark/vm_const.yml
new file mode 100644
index 0000000000..8939ca0cd3
--- /dev/null
+++ b/benchmark/vm_const.yml
@@ -0,0 +1,13 @@
+prelude: |
+ Const = 1
+ A = B = C = D = E = F = G = H = I = J = K = L = M = N = O = P = Q = R = S = T = U = V = W = X = Y = Z = 1
+ def foo
+ A; B; C; D; E; F; G; H; I; J; K; L; M; N; O; P; Q; R; S; T; U; V; W; X; Y; Z
+ end
+benchmark:
+ vm_const: |
+ j = Const
+ k = Const
+ vm_const_many: |
+ foo
+loop_count: 30000000
diff --git a/benchmark/vm_cvar.yml b/benchmark/vm_cvar.yml
new file mode 100644
index 0000000000..1d0e161829
--- /dev/null
+++ b/benchmark/vm_cvar.yml
@@ -0,0 +1,20 @@
+prelude: |
+ class A
+ @@foo = 1
+
+ def self.foo
+ @@foo
+ end
+
+ ("A".."Z").each do |module_name|
+ eval <<-EOM
+ module #{module_name}
+ end
+
+ include #{module_name}
+ EOM
+ end
+ end
+benchmark:
+ vm_cvar: A.foo
+loop_count: 600000
diff --git a/benchmark/vm_defined_method.yml b/benchmark/vm_defined_method.yml
new file mode 100644
index 0000000000..347e0cfd33
--- /dev/null
+++ b/benchmark/vm_defined_method.yml
@@ -0,0 +1,8 @@
+prelude: |
+ class Object
+ define_method(:m){}
+ end
+benchmark:
+ vm_defined_method: |
+ m; m; m; m; m; m; m; m;
+loop_count: 6000000
diff --git a/benchmark/vm_dstr.yml b/benchmark/vm_dstr.yml
new file mode 100644
index 0000000000..30c7a3193c
--- /dev/null
+++ b/benchmark/vm_dstr.yml
@@ -0,0 +1,6 @@
+prelude: |
+ x = y = 'z'
+benchmark:
+ vm_dstr: |
+ str = "foo#{x}bar#{y}baz"
+loop_count: 6000000
diff --git a/benchmark/vm_dstr_ary.rb b/benchmark/vm_dstr_ary.rb
new file mode 100644
index 0000000000..1d3aa3b97b
--- /dev/null
+++ b/benchmark/vm_dstr_ary.rb
@@ -0,0 +1,6 @@
+i = 0
+x = y = []
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{x}bar#{y}baz"
+end
diff --git a/benchmark/vm_dstr_bool.rb b/benchmark/vm_dstr_bool.rb
new file mode 100644
index 0000000000..631ca54755
--- /dev/null
+++ b/benchmark/vm_dstr_bool.rb
@@ -0,0 +1,7 @@
+i = 0
+x = true
+y = false
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{x}bar#{y}baz"
+end
diff --git a/benchmark/vm_dstr_class_module.rb b/benchmark/vm_dstr_class_module.rb
new file mode 100644
index 0000000000..becf0861c7
--- /dev/null
+++ b/benchmark/vm_dstr_class_module.rb
@@ -0,0 +1,10 @@
+i = 0
+class A; end unless defined?(A)
+module B; end unless defined?(B)
+x = A
+y = B
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{x}bar#{y}baz"
+end
+
diff --git a/benchmark/vm_dstr_digit.rb b/benchmark/vm_dstr_digit.rb
new file mode 100644
index 0000000000..caaa395192
--- /dev/null
+++ b/benchmark/vm_dstr_digit.rb
@@ -0,0 +1,7 @@
+i = 0
+x = 0
+y = 9
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{x}bar#{y}baz"
+end
diff --git a/benchmark/vm_dstr_int.rb b/benchmark/vm_dstr_int.rb
new file mode 100644
index 0000000000..ed380d7595
--- /dev/null
+++ b/benchmark/vm_dstr_int.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{i}bar#{i}baz"
+end
diff --git a/benchmark/vm_dstr_nil.rb b/benchmark/vm_dstr_nil.rb
new file mode 100644
index 0000000000..ec4f5d6c67
--- /dev/null
+++ b/benchmark/vm_dstr_nil.rb
@@ -0,0 +1,6 @@
+i = 0
+x = y = nil
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{x}bar#{y}baz"
+end
diff --git a/benchmark/vm_dstr_obj.rb b/benchmark/vm_dstr_obj.rb
new file mode 100644
index 0000000000..fb78637ead
--- /dev/null
+++ b/benchmark/vm_dstr_obj.rb
@@ -0,0 +1,6 @@
+i = 0
+x = y = Object.new
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{x}bar#{y}baz"
+end
diff --git a/benchmark/vm_dstr_obj_def.rb b/benchmark/vm_dstr_obj_def.rb
new file mode 100644
index 0000000000..99ff7b98fb
--- /dev/null
+++ b/benchmark/vm_dstr_obj_def.rb
@@ -0,0 +1,8 @@
+i = 0
+o = Object.new
+def o.to_s; -""; end
+x = y = o
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{x}bar#{y}baz"
+end
diff --git a/benchmark/vm_dstr_str.rb b/benchmark/vm_dstr_str.rb
new file mode 100644
index 0000000000..45fc107892
--- /dev/null
+++ b/benchmark/vm_dstr_str.rb
@@ -0,0 +1,6 @@
+i = 0
+x = y = ""
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{x}bar#{y}baz"
+end
diff --git a/benchmark/vm_dstr_sym.rb b/benchmark/vm_dstr_sym.rb
new file mode 100644
index 0000000000..484b8f8150
--- /dev/null
+++ b/benchmark/vm_dstr_sym.rb
@@ -0,0 +1,6 @@
+i = 0
+x = y = :z
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{x}bar#{y}baz"
+end
diff --git a/benchmark/vm_ensure.yml b/benchmark/vm_ensure.yml
new file mode 100644
index 0000000000..4ea62f30de
--- /dev/null
+++ b/benchmark/vm_ensure.yml
@@ -0,0 +1,14 @@
+# Not utilizing loop_count since using it for this is too unstable for now
+benchmark:
+ vm_ensure: |
+ i = 0
+ while i<30_000_000
+ i += 1
+ begin
+ begin
+ ensure
+ end
+ ensure
+ end
+ end
+loop_count: 1
diff --git a/benchmark/vm_eval.yml b/benchmark/vm_eval.yml
new file mode 100644
index 0000000000..7ba1a8d1de
--- /dev/null
+++ b/benchmark/vm_eval.yml
@@ -0,0 +1,4 @@
+benchmark:
+ vm_eval: |
+ eval("1")
+loop_count: 6000000
diff --git a/benchmark/vm_fiber_allocate.yml b/benchmark/vm_fiber_allocate.yml
new file mode 100644
index 0000000000..b5a54e1ddf
--- /dev/null
+++ b/benchmark/vm_fiber_allocate.yml
@@ -0,0 +1,8 @@
+prelude: |
+ # Disable GC to see raw throughput:
+ GC.disable
+benchmark:
+ vm_fiber_allocate: |
+ fiber = Fiber.new{Fiber.yield}
+ fiber.resume
+loop_count: 100000
diff --git a/benchmark/vm_fiber_count.yml b/benchmark/vm_fiber_count.yml
new file mode 100644
index 0000000000..b83d3152d4
--- /dev/null
+++ b/benchmark/vm_fiber_count.yml
@@ -0,0 +1,10 @@
+# On Linux, you will need to increase the maximum number of memory maps:
+# sudo sysctl -w vm.max_map_count=200000
+prelude: |
+ fibers = []
+benchmark:
+ vm_fiber_count: |
+ fiber = Fiber.new{Fiber.yield}
+ fibers << fiber
+ fiber.resume
+loop_count: 100000
diff --git a/benchmark/vm_fiber_reuse.yml b/benchmark/vm_fiber_reuse.yml
new file mode 100644
index 0000000000..4ca41085b1
--- /dev/null
+++ b/benchmark/vm_fiber_reuse.yml
@@ -0,0 +1,14 @@
+prelude: |
+ GC.disable
+ fibers = []
+benchmark:
+ vm_fiber_reuse: |
+ 1024.times do
+ fiber = Fiber.new{Fiber.yield}
+ fibers << fiber
+ fiber.resume
+ end
+
+ fibers.clear
+ GC.start
+loop_count: 200
diff --git a/benchmark/vm_fiber_reuse_gc.yml b/benchmark/vm_fiber_reuse_gc.yml
new file mode 100644
index 0000000000..892622f121
--- /dev/null
+++ b/benchmark/vm_fiber_reuse_gc.yml
@@ -0,0 +1,12 @@
+# https://bugs.ruby-lang.org/issues/16009
+prelude: |
+ fibers = []
+benchmark:
+ vm_fiber_reuse_gc: |
+ 2000.times do
+ fiber = Fiber.new{Fiber.yield}
+ fibers << fiber
+ fiber.resume
+ end
+ fibers.clear
+loop_count: 100
diff --git a/benchmark/vm_fiber_switch.yml b/benchmark/vm_fiber_switch.yml
new file mode 100644
index 0000000000..3de36b66eb
--- /dev/null
+++ b/benchmark/vm_fiber_switch.yml
@@ -0,0 +1,9 @@
+prelude: |
+ # based on benchmark for [ruby-core:65518] [Feature #10341] by Knut Franke
+ fib = Fiber.new do
+ loop { Fiber.yield }
+ end
+benchmark:
+ vm_fiber_switch: |
+ fib.resume
+loop_count: 20000000
diff --git a/benchmark/vm_float_simple.yml b/benchmark/vm_float_simple.yml
new file mode 100644
index 0000000000..92f5fd52ab
--- /dev/null
+++ b/benchmark/vm_float_simple.yml
@@ -0,0 +1,8 @@
+prelude: |
+ f = 0.0
+benchmark:
+ vm_float_simple: |
+ f += 0.1; f -= 0.1
+ f += 0.1; f -= 0.1
+ f += 0.1; f -= 0.1
+loop_count: 30000000
diff --git a/benchmark/vm_freezeobj.yml b/benchmark/vm_freezeobj.yml
new file mode 100644
index 0000000000..69a795a354
--- /dev/null
+++ b/benchmark/vm_freezeobj.yml
@@ -0,0 +1,6 @@
+prelude: |
+ objs = 100000.times.map { Object.new }
+benchmark:
+ vm_freeze_obj: |
+ objs.map(&:freeze)
+loop_count: 600
diff --git a/benchmark/vm_freezestring.yml b/benchmark/vm_freezestring.yml
new file mode 100644
index 0000000000..facc9aa043
--- /dev/null
+++ b/benchmark/vm_freezestring.yml
@@ -0,0 +1,10 @@
+prelude: |
+ class String
+ def freeze
+ -self
+ end
+ end
+benchmark:
+ vm_freezestring: |
+ "tXnL1BP5T1WPXMjuFNLQtallEtRcay1t2lHtJSrlVsDgvunlbtfpr/DGdH0NGYE9".freeze
+loop_count: 6000000
diff --git a/benchmark/vm_gc.rb b/benchmark/vm_gc.rb
new file mode 100644
index 0000000000..e668026915
--- /dev/null
+++ b/benchmark/vm_gc.rb
@@ -0,0 +1,6 @@
+5000.times do
+ 100.times do
+ {"xxxx"=>"yyyy"}
+ end
+ GC.start
+end
diff --git a/benchmark/vm_gc_old_full.rb b/benchmark/vm_gc_old_full.rb
new file mode 100644
index 0000000000..cfdfc8c5a5
--- /dev/null
+++ b/benchmark/vm_gc_old_full.rb
@@ -0,0 +1,4 @@
+old_object = Array.new(1_000_000){''}
+100.times do
+ GC.start
+end
diff --git a/benchmark/vm_gc_old_immediate.rb b/benchmark/vm_gc_old_immediate.rb
new file mode 100644
index 0000000000..ad22feb655
--- /dev/null
+++ b/benchmark/vm_gc_old_immediate.rb
@@ -0,0 +1,4 @@
+old_object = Array.new(1_000_000){''}
+30_000.times do
+ GC.start(full_mark: false, immediate_sweep: true)
+end
diff --git a/benchmark/vm_gc_old_lazy.rb b/benchmark/vm_gc_old_lazy.rb
new file mode 100644
index 0000000000..b74d44baf1
--- /dev/null
+++ b/benchmark/vm_gc_old_lazy.rb
@@ -0,0 +1,4 @@
+old_object = Array.new(1_000_000){''}
+30_000.times do
+ GC.start(full_mark: false, immediate_sweep: false)
+end
diff --git a/benchmark/vm_gc_short_lived.yml b/benchmark/vm_gc_short_lived.yml
new file mode 100644
index 0000000000..29c803fee3
--- /dev/null
+++ b/benchmark/vm_gc_short_lived.yml
@@ -0,0 +1,9 @@
+benchmark:
+ vm_gc_short_lived: |
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+loop_count: 30000000
diff --git a/benchmark/vm_gc_short_with_complex_long.yml b/benchmark/vm_gc_short_with_complex_long.yml
new file mode 100644
index 0000000000..4b6c3ed7b9
--- /dev/null
+++ b/benchmark/vm_gc_short_with_complex_long.yml
@@ -0,0 +1,25 @@
+prelude: |
+ def nested_hash h, n
+ if n == 0
+ ''
+ else
+ 10.times{
+ h[Object.new] = nested_hash(h, n-1)
+ }
+ end
+ end
+
+ long_lived = Hash.new
+ nested_hash long_lived, 6
+
+ GC.start
+ GC.start
+benchmark:
+ vm_gc_short_with_complex_long: |
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+loop_count: 30000000
diff --git a/benchmark/vm_gc_short_with_long.yml b/benchmark/vm_gc_short_with_long.yml
new file mode 100644
index 0000000000..03ba0f95a9
--- /dev/null
+++ b/benchmark/vm_gc_short_with_long.yml
@@ -0,0 +1,13 @@
+prelude: |
+ long_lived = Array.new(1_000_000){|i| "#{i}"}
+ GC.start
+ GC.start
+benchmark:
+ vm_gc_short_with_long: |
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+loop_count: 30000000
diff --git a/benchmark/vm_gc_short_with_symbol.yml b/benchmark/vm_gc_short_with_symbol.yml
new file mode 100644
index 0000000000..129b8bf4ed
--- /dev/null
+++ b/benchmark/vm_gc_short_with_symbol.yml
@@ -0,0 +1,13 @@
+prelude: |
+ 50_000.times{|i| sym = "sym#{i}".to_sym}
+ GC.start
+ GC.start
+benchmark:
+ vm_gc_short_with_symbol: |
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+loop_count: 30000000
diff --git a/benchmark/vm_gc_wb_ary.yml b/benchmark/vm_gc_wb_ary.yml
new file mode 100644
index 0000000000..e3293e72d0
--- /dev/null
+++ b/benchmark/vm_gc_wb_ary.yml
@@ -0,0 +1,12 @@
+prelude: |
+ short_lived_ary = []
+
+ if RUBY_VERSION >= "2.2.0"
+ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true)
+ end
+
+ short_lived = ''
+benchmark:
+ vm_gc_wb_ary: |
+ short_lived_ary[0] = short_lived # write barrier
+loop_count: 30000000
diff --git a/benchmark/vm_gc_wb_ary_promoted.yml b/benchmark/vm_gc_wb_ary_promoted.yml
new file mode 100644
index 0000000000..003995945b
--- /dev/null
+++ b/benchmark/vm_gc_wb_ary_promoted.yml
@@ -0,0 +1,15 @@
+prelude: |
+ long_lived = []
+
+ if RUBY_VERSION > "2.2.0"
+ 3.times{ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true) }
+ elsif
+ GC.start
+ end
+
+ short_lived = ''
+
+benchmark:
+ vm_gc_wb_ary_promoted: |
+ long_lived[0] = short_lived # write barrier
+loop_count: 30000000
diff --git a/benchmark/vm_gc_wb_obj.yml b/benchmark/vm_gc_wb_obj.yml
new file mode 100644
index 0000000000..a2a2ce2d18
--- /dev/null
+++ b/benchmark/vm_gc_wb_obj.yml
@@ -0,0 +1,15 @@
+prelude: |
+ class C
+ attr_accessor :foo
+ end
+ short_lived_obj = C.new
+
+ if RUBY_VERSION >= "2.2.0"
+ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true)
+ end
+
+ short_lived = ''
+benchmark:
+ vm_gc_wb_obj: |
+ short_lived_obj.foo = short_lived # write barrier
+loop_count: 30000000
diff --git a/benchmark/vm_gc_wb_obj_promoted.yml b/benchmark/vm_gc_wb_obj_promoted.yml
new file mode 100644
index 0000000000..00a454ba72
--- /dev/null
+++ b/benchmark/vm_gc_wb_obj_promoted.yml
@@ -0,0 +1,17 @@
+prelude: |
+ class C
+ attr_accessor :foo
+ end
+ long_lived = C.new
+
+ if RUBY_VERSION >= "2.2.0"
+ 3.times{ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true) }
+ elsif
+ GC.start
+ end
+
+ short_lived = ''
+benchmark:
+ vm_gc_wb_obj_promoted: |
+ long_lived.foo = short_lived # write barrier
+loop_count: 30000000
diff --git a/benchmark/vm_iclass_super.yml b/benchmark/vm_iclass_super.yml
new file mode 100644
index 0000000000..21bb7db247
--- /dev/null
+++ b/benchmark/vm_iclass_super.yml
@@ -0,0 +1,20 @@
+prelude: |
+ class C
+ def m
+ 1
+ end
+
+ ("A".."M").each do |module_name|
+ eval <<-EOM
+ module #{module_name}
+ def m; super; end
+ end
+ prepend #{module_name}
+ EOM
+ end
+ end
+
+ obj = C.new
+benchmark:
+ vm_iclass_super: obj.m
+loop_count: 6000000
diff --git a/benchmark/vm_ivar.yml b/benchmark/vm_ivar.yml
new file mode 100644
index 0000000000..119531d5ef
--- /dev/null
+++ b/benchmark/vm_ivar.yml
@@ -0,0 +1,6 @@
+prelude: "@a = 1\n"
+benchmark:
+ vm_ivar: |
+ j = @a
+ k = @a
+loop_count: 30000000
diff --git a/benchmark/vm_ivar_embedded_obj_init.yml b/benchmark/vm_ivar_embedded_obj_init.yml
new file mode 100644
index 0000000000..74fe20a630
--- /dev/null
+++ b/benchmark/vm_ivar_embedded_obj_init.yml
@@ -0,0 +1,14 @@
+prelude: |
+ class C
+ def set_ivars
+ @a = nil
+ @b = nil
+ @c = nil
+ end
+ end
+
+ c = C.new
+benchmark:
+ vm_ivar_embedded_obj_init: |
+ c.set_ivars
+loop_count: 30000000
diff --git a/benchmark/vm_ivar_extended_obj_init.yml b/benchmark/vm_ivar_extended_obj_init.yml
new file mode 100644
index 0000000000..f054bab282
--- /dev/null
+++ b/benchmark/vm_ivar_extended_obj_init.yml
@@ -0,0 +1,16 @@
+prelude: |
+ class C
+ def set_ivars
+ @a = nil
+ @b = nil
+ @c = nil
+ @d = nil
+ @e = nil
+ end
+ end
+
+ c = C.new
+benchmark:
+ vm_ivar_extended_obj_init: |
+ c.set_ivars
+loop_count: 30000000
diff --git a/benchmark/vm_ivar_generic_get.yml b/benchmark/vm_ivar_generic_get.yml
new file mode 100644
index 0000000000..dae2d37671
--- /dev/null
+++ b/benchmark/vm_ivar_generic_get.yml
@@ -0,0 +1,17 @@
+prelude: |
+ class C < Array
+ attr_reader :a, :b, :c
+ def initialize
+ @a = nil
+ @b = nil
+ @c = nil
+ end
+ end
+
+ c = C.new
+benchmark:
+ vm_ivar_generic_get: |
+ c.a
+ c.b
+ c.c
+loop_count: 30000000
diff --git a/benchmark/vm_ivar_generic_set.yml b/benchmark/vm_ivar_generic_set.yml
new file mode 100644
index 0000000000..102a6577fb
--- /dev/null
+++ b/benchmark/vm_ivar_generic_set.yml
@@ -0,0 +1,14 @@
+prelude: |
+ class C < Array
+ def set_ivars
+ @a = nil
+ @b = nil
+ @c = nil
+ end
+ end
+
+ c = C.new
+benchmark:
+ vm_ivar_generic_set: |
+ c.set_ivars
+loop_count: 30000000
diff --git a/benchmark/vm_ivar_get.yml b/benchmark/vm_ivar_get.yml
new file mode 100644
index 0000000000..9174af6965
--- /dev/null
+++ b/benchmark/vm_ivar_get.yml
@@ -0,0 +1,37 @@
+prelude: |
+ class Example
+ def initialize
+ @v0 = 1
+ @v1 = 2
+ @v3 = 3
+ @levar = 1
+ end
+
+ def get_value_loop
+ sum = 0
+
+ i = 0
+ while i < 1000000
+ # 10 times to de-emphasize loop overhead
+ sum += @levar
+ sum += @levar
+ sum += @levar
+ sum += @levar
+ sum += @levar
+ sum += @levar
+ sum += @levar
+ sum += @levar
+ sum += @levar
+ sum += @levar
+ i += 1
+ end
+
+ return sum
+ end
+ end
+
+ obj = Example.new
+benchmark:
+ vm_ivar_get: |
+ obj.get_value_loop
+loop_count: 100
diff --git a/benchmark/vm_ivar_get_unintialized.yml b/benchmark/vm_ivar_get_unintialized.yml
new file mode 100644
index 0000000000..a1ccfb06ce
--- /dev/null
+++ b/benchmark/vm_ivar_get_unintialized.yml
@@ -0,0 +1,12 @@
+prelude: |
+ class Example
+ def read
+ @uninitialized
+ end
+ end
+
+ obj = Example.new
+benchmark:
+ vm_ivar_get_uninitialized: |
+ obj.read
+loop_count: 30000000
diff --git a/benchmark/vm_ivar_lazy_set.yml b/benchmark/vm_ivar_lazy_set.yml
new file mode 100644
index 0000000000..7372ffcfbc
--- /dev/null
+++ b/benchmark/vm_ivar_lazy_set.yml
@@ -0,0 +1,12 @@
+prelude: |
+ class Example
+ def lazy_set
+ @uninitialized ||= 123
+ end
+ end
+
+ objs = 10000000.times.map { Example.new }
+benchmark:
+ vm_ivar_lazy_set: |
+ objs.each(&:lazy_set)
+loop_count: 1
diff --git a/benchmark/vm_ivar_of_class.yml b/benchmark/vm_ivar_of_class.yml
new file mode 100644
index 0000000000..172e28b2fd
--- /dev/null
+++ b/benchmark/vm_ivar_of_class.yml
@@ -0,0 +1,12 @@
+prelude: |
+ class C
+ @a = 1
+ def self.a
+ _a = @a; _a = @a; _a = @a; _a = @a; _a = @a;
+ _a = @a; _a = @a; _a = @a; _a = @a; _a = @a;
+ end
+ end
+benchmark:
+ vm_ivar_of_class: |
+ a = C.a
+loop_count: 30000000
diff --git a/benchmark/vm_ivar_of_class_set.yml b/benchmark/vm_ivar_of_class_set.yml
new file mode 100644
index 0000000000..2ea5199423
--- /dev/null
+++ b/benchmark/vm_ivar_of_class_set.yml
@@ -0,0 +1,11 @@
+prelude: |
+ class C
+ @a = 1
+ def self.a o
+ @a = o; @a = o; @a = o; @a = o; @a = o; @a = o;
+ end
+ end
+benchmark:
+ vm_ivar_of_class_set: |
+ a = C.a(nil)
+loop_count: 30000000
diff --git a/benchmark/vm_ivar_set.yml b/benchmark/vm_ivar_set.yml
new file mode 100644
index 0000000000..8bbb60043b
--- /dev/null
+++ b/benchmark/vm_ivar_set.yml
@@ -0,0 +1,5 @@
+benchmark:
+ vm_ivar_set: |
+ @a = 1
+ @b = 2
+loop_count: 30000000
diff --git a/benchmark/vm_ivar_set_on_instance.yml b/benchmark/vm_ivar_set_on_instance.yml
new file mode 100644
index 0000000000..91857b7742
--- /dev/null
+++ b/benchmark/vm_ivar_set_on_instance.yml
@@ -0,0 +1,35 @@
+prelude: |
+ class TheClass
+ def initialize
+ @v0 = 1
+ @v1 = 2
+ @v3 = 3
+ @levar = 1
+ end
+
+ def set_value_loop
+ # 1M
+ i = 0
+ while i < 1000000
+ # 10 times to de-emphasize loop overhead
+ @levar = i
+ @levar = i
+ @levar = i
+ @levar = i
+ @levar = i
+ @levar = i
+ @levar = i
+ @levar = i
+ @levar = i
+ @levar = i
+ i += 1
+ end
+ end
+ end
+
+ obj = TheClass.new
+
+benchmark:
+ vm_ivar_set_on_instance: |
+ obj.set_value_loop
+loop_count: 100
diff --git a/benchmark/vm_ivar_set_subclass.yml b/benchmark/vm_ivar_set_subclass.yml
new file mode 100644
index 0000000000..bc8bf5bf6b
--- /dev/null
+++ b/benchmark/vm_ivar_set_subclass.yml
@@ -0,0 +1,20 @@
+prelude: |
+ class A
+ def set_ivars
+ @a = nil
+ @b = nil
+ @c = nil
+ @d = nil
+ @e = nil
+ end
+ end
+ class B < A; end
+ class C < A; end
+
+ b = B.new
+ c = C.new
+benchmark:
+ vm_ivar_init_subclass: |
+ b.set_ivars
+ c.set_ivars
+loop_count: 3000000
diff --git a/benchmark/vm_length.yml b/benchmark/vm_length.yml
new file mode 100644
index 0000000000..5fd94e7d86
--- /dev/null
+++ b/benchmark/vm_length.yml
@@ -0,0 +1,8 @@
+prelude: |
+ a = 'abc'
+ b = [1, 2, 3]
+benchmark:
+ vm_length: |
+ a.length
+ b.length
+loop_count: 30000000
diff --git a/benchmark/vm_lvar_cond_set.yml b/benchmark/vm_lvar_cond_set.yml
new file mode 100644
index 0000000000..1845f9d12e
--- /dev/null
+++ b/benchmark/vm_lvar_cond_set.yml
@@ -0,0 +1,8 @@
+benchmark:
+ vm_lvar_cond_set: |
+ a ||= 1
+ b ||= 1
+ c ||= 1
+ d ||= 1
+ nil
+loop_count: 30000000
diff --git a/benchmark/vm_lvar_init.yml b/benchmark/vm_lvar_init.yml
new file mode 100644
index 0000000000..70a9b1c0ca
--- /dev/null
+++ b/benchmark/vm_lvar_init.yml
@@ -0,0 +1,21 @@
+# while loop cost is not removed because `i` is used in the script
+benchmark:
+ vm_lvar_init: |
+ def m v
+ unless v
+ # unreachable code
+ v1 = v2 = v3 = v4 = v5 = v6 = v7 = v8 = v9 = v10 =
+ v11 = v12 = v13 = v14 = v15 = v16 = v17 = v18 = v19 = v20 =
+ v21 = v22 = v23 = v24 = v25 = v26 = v27 = v28 = v29 = v30 =
+ v31 = v32 = v33 = v34 = v35 = v36 = v37 = v38 = v39 = v40 =
+ v41 = v42 = v43 = v44 = v45 = v46 = v47 = v48 = v49 = v50 = 1
+ end
+ end
+
+ i = 0
+
+ while i<30_000_000
+ i += 1
+ m i
+ end
+loop_count: 1
diff --git a/benchmark/vm_lvar_set.yml b/benchmark/vm_lvar_set.yml
new file mode 100644
index 0000000000..f29f763d81
--- /dev/null
+++ b/benchmark/vm_lvar_set.yml
@@ -0,0 +1,4 @@
+benchmark:
+ vm_lvar_set: |
+ a = b = c = d = e = f = g = h = j = k = l = m = n = o = p = q = r = 1
+loop_count: 30000000
diff --git a/benchmark/vm_method.yml b/benchmark/vm_method.yml
new file mode 100644
index 0000000000..d45e4ec572
--- /dev/null
+++ b/benchmark/vm_method.yml
@@ -0,0 +1,8 @@
+prelude: |
+ def m
+ nil
+ end
+benchmark:
+ vm_method: |
+ m; m; m; m; m; m; m; m;
+loop_count: 6000000
diff --git a/benchmark/vm_method_missing.yml b/benchmark/vm_method_missing.yml
new file mode 100644
index 0000000000..3da456c0bb
--- /dev/null
+++ b/benchmark/vm_method_missing.yml
@@ -0,0 +1,11 @@
+prelude: |
+ class C
+ def method_missing mid
+ end
+ end
+
+ obj = C.new
+benchmark:
+ vm_method_missing: |
+ obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m;
+loop_count: 6000000
diff --git a/benchmark/vm_method_with_block.yml b/benchmark/vm_method_with_block.yml
new file mode 100644
index 0000000000..281a481394
--- /dev/null
+++ b/benchmark/vm_method_with_block.yml
@@ -0,0 +1,8 @@
+prelude: |
+ def m
+ nil
+ end
+benchmark:
+ vm_method_with_block: |
+ m{}; m{}; m{}; m{}; m{}; m{}; m{}; m{};
+loop_count: 6000000
diff --git a/benchmark/vm_module_ann_const_set.yml b/benchmark/vm_module_ann_const_set.yml
new file mode 100644
index 0000000000..243229ba4a
--- /dev/null
+++ b/benchmark/vm_module_ann_const_set.yml
@@ -0,0 +1,4 @@
+benchmark:
+ vm_module_ann_const_set: |
+ Module.new.const_set(:X, Module.new)
+loop_count: 6000000
diff --git a/benchmark/vm_module_const_set.yml b/benchmark/vm_module_const_set.yml
new file mode 100644
index 0000000000..e5a24181a9
--- /dev/null
+++ b/benchmark/vm_module_const_set.yml
@@ -0,0 +1,8 @@
+prelude: |
+ module M
+ end
+ $VERBOSE = nil
+benchmark:
+ vm_module_const_set: |
+ M.const_set(:X, Module.new)
+loop_count: 6000000
diff --git a/benchmark/vm_mutex.yml b/benchmark/vm_mutex.yml
new file mode 100644
index 0000000000..abcf1e28ce
--- /dev/null
+++ b/benchmark/vm_mutex.yml
@@ -0,0 +1,8 @@
+prelude: |
+ require 'thread'
+
+ m = Thread::Mutex.new
+benchmark:
+ vm_mutex: |
+ m.synchronize{}
+loop_count: 6000000
diff --git a/benchmark/vm_neq.yml b/benchmark/vm_neq.yml
new file mode 100644
index 0000000000..fb04d15ae8
--- /dev/null
+++ b/benchmark/vm_neq.yml
@@ -0,0 +1,7 @@
+prelude: |
+ obj1 = Object.new
+ obj2 = Object.new
+benchmark:
+ vm_neq: |
+ obj1 != obj2
+loop_count: 30000000
diff --git a/benchmark/vm_newlambda.yml b/benchmark/vm_newlambda.yml
new file mode 100644
index 0000000000..0b9787d91a
--- /dev/null
+++ b/benchmark/vm_newlambda.yml
@@ -0,0 +1,4 @@
+benchmark:
+ vm_newlambda: |
+ lambda {}
+loop_count: 6000000
diff --git a/benchmark/vm_not.yml b/benchmark/vm_not.yml
new file mode 100644
index 0000000000..c68dde3c50
--- /dev/null
+++ b/benchmark/vm_not.yml
@@ -0,0 +1,6 @@
+prelude: |
+ obj = Object.new
+benchmark:
+ vm_not: |
+ !obj
+loop_count: 30000000
diff --git a/benchmark/vm_poly_method.yml b/benchmark/vm_poly_method.yml
new file mode 100644
index 0000000000..dd2f4e71de
--- /dev/null
+++ b/benchmark/vm_poly_method.yml
@@ -0,0 +1,24 @@
+# loop_count is not utilized since `i` is involved in the script
+benchmark:
+ vm_poly_method: |
+ class C1
+ def m
+ 1
+ end
+ end
+ class C2
+ def m
+ 2
+ end
+ end
+
+ o1 = C1.new
+ o2 = C2.new
+
+ i = 0
+ while i<6_000_000
+ o = (i % 2 == 0) ? o1 : o2
+ o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
+ i += 1
+ end
+loop_count: 1
diff --git a/benchmark/vm_poly_method_ov.yml b/benchmark/vm_poly_method_ov.yml
new file mode 100644
index 0000000000..bca1b62729
--- /dev/null
+++ b/benchmark/vm_poly_method_ov.yml
@@ -0,0 +1,24 @@
+# loop_count is not utilized since `i` is involved in the script
+benchmark:
+ vm_poly_method_ov: |
+ class C1
+ def m
+ 1
+ end
+ end
+ class C2
+ def m
+ 2
+ end
+ end
+
+ o1 = C1.new
+ o2 = C2.new
+
+ i = 0
+ while i<6_000_000
+ o = (i % 2 == 0) ? o1 : o2
+ # o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
+ i += 1
+ end
+loop_count: 1
diff --git a/benchmark/vm_poly_same_method.yml b/benchmark/vm_poly_same_method.yml
new file mode 100644
index 0000000000..6c5404ac84
--- /dev/null
+++ b/benchmark/vm_poly_same_method.yml
@@ -0,0 +1,25 @@
+prelude: |
+ module AR; end
+ class AR::Base
+ def create_or_update
+ nil
+ end
+ def save
+ create_or_update
+ end
+ end
+ class Foo < AR::Base; end
+ class Bar < AR::Base; end
+ o1 = Foo.new
+ o2 = Bar.new
+benchmark:
+ vm_poly_same_method: |
+ o1.save; o2.save;
+ o1.save; o2.save;
+ o1.save; o2.save;
+ o1.save; o2.save;
+ o1.save; o2.save;
+ o1.save; o2.save;
+ o1.save; o2.save;
+ o1.save; o2.save;
+loop_count: 6000000
diff --git a/benchmark/vm_poly_singleton.yml b/benchmark/vm_poly_singleton.yml
new file mode 100644
index 0000000000..c7923160fb
--- /dev/null
+++ b/benchmark/vm_poly_singleton.yml
@@ -0,0 +1,18 @@
+# loop_count is not utilized since `i` is involved in the script
+benchmark:
+ vm_poly_singleton: |
+ class C1
+ def m; 1; end
+ end
+
+ o1 = C1.new
+ o2 = C1.new
+ o2.singleton_class
+
+ i = 0
+ while i<6_000_000 # benchmark loop 2
+ o = (i % 2 == 0) ? o1 : o2
+ o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
+ i += 1
+ end
+loop_count: 1
diff --git a/benchmark/vm_proc.yml b/benchmark/vm_proc.yml
new file mode 100644
index 0000000000..2f8de6c272
--- /dev/null
+++ b/benchmark/vm_proc.yml
@@ -0,0 +1,12 @@
+prelude: |
+ def m &b
+ b
+ end
+
+ pr = m{
+ a = 1
+ }
+benchmark:
+ vm_proc: |
+ pr.call
+loop_count: 6000000
diff --git a/benchmark/vm_raise1.yml b/benchmark/vm_raise1.yml
new file mode 100644
index 0000000000..247d9f70ee
--- /dev/null
+++ b/benchmark/vm_raise1.yml
@@ -0,0 +1,16 @@
+prelude: |
+ def rec n
+ if n > 0
+ rec n-1
+ else
+ raise
+ end
+ end
+benchmark:
+ vm_raise1: |
+ begin
+ rec 1
+ rescue
+ # ignore
+ end
+loop_count: 6000000
diff --git a/benchmark/vm_raise2.yml b/benchmark/vm_raise2.yml
new file mode 100644
index 0000000000..f0fa047b3c
--- /dev/null
+++ b/benchmark/vm_raise2.yml
@@ -0,0 +1,16 @@
+prelude: |
+ def rec n
+ if n > 0
+ rec n-1
+ else
+ raise
+ end
+ end
+benchmark:
+ vm_raise2: |
+ begin
+ rec 10
+ rescue
+ # ignore
+ end
+loop_count: 6000000
diff --git a/benchmark/vm_regexp.yml b/benchmark/vm_regexp.yml
new file mode 100644
index 0000000000..2aa3d94dbd
--- /dev/null
+++ b/benchmark/vm_regexp.yml
@@ -0,0 +1,8 @@
+prelude: |
+ str = 'xxxhogexxx'
+benchmark:
+ vm_regexp: |
+ /hoge/ =~ str
+ vm_regexp_invert: |
+ str =~ /hoge/
+loop_count: 6000000
diff --git a/benchmark/vm_rescue.yml b/benchmark/vm_rescue.yml
new file mode 100644
index 0000000000..b4a0af521f
--- /dev/null
+++ b/benchmark/vm_rescue.yml
@@ -0,0 +1,6 @@
+benchmark:
+ vm_rescue: |
+ begin
+ rescue
+ end
+loop_count: 30000000
diff --git a/benchmark/vm_send.yml b/benchmark/vm_send.yml
new file mode 100644
index 0000000000..f31bc7ac89
--- /dev/null
+++ b/benchmark/vm_send.yml
@@ -0,0 +1,14 @@
+prelude: |
+ class C
+ def m
+ end
+ end
+
+ o = C.new
+ m = :m
+benchmark:
+ vm_send: |
+ o.__send__ :m
+ vm_send_var: |
+ o.__send__ m
+loop_count: 6000000
diff --git a/benchmark/vm_send_cfunc.yml b/benchmark/vm_send_cfunc.yml
new file mode 100644
index 0000000000..b114ac317d
--- /dev/null
+++ b/benchmark/vm_send_cfunc.yml
@@ -0,0 +1,3 @@
+benchmark:
+ vm_send_cfunc: self.class
+loop_count: 100000000
diff --git a/benchmark/vm_simplereturn.yml b/benchmark/vm_simplereturn.yml
new file mode 100644
index 0000000000..c9829cff0b
--- /dev/null
+++ b/benchmark/vm_simplereturn.yml
@@ -0,0 +1,7 @@
+prelude: |
+ def m
+ return 1
+ end
+benchmark:
+ vm_simplereturn: m
+loop_count: 30000000
diff --git a/benchmark/vm_string_literal.yml b/benchmark/vm_string_literal.yml
new file mode 100644
index 0000000000..64439c7980
--- /dev/null
+++ b/benchmark/vm_string_literal.yml
@@ -0,0 +1,4 @@
+benchmark:
+ vm_string_literal: |
+ x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+loop_count: 6000000
diff --git a/benchmark/vm_struct_big_aref_hi.yml b/benchmark/vm_struct_big_aref_hi.yml
new file mode 100644
index 0000000000..4cf78970cb
--- /dev/null
+++ b/benchmark/vm_struct_big_aref_hi.yml
@@ -0,0 +1,7 @@
+prelude: |
+ s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+ x = s.new
+benchmark:
+ vm_struct_big_aref_hi: |
+ x.z # x[25]
+loop_count: 6000000
diff --git a/benchmark/vm_struct_big_aref_lo.yml b/benchmark/vm_struct_big_aref_lo.yml
new file mode 100644
index 0000000000..c91af27fa5
--- /dev/null
+++ b/benchmark/vm_struct_big_aref_lo.yml
@@ -0,0 +1,7 @@
+prelude: |
+ s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+ x = s.new
+benchmark:
+ vm_struct_big_aref_lo: |
+ x.k # x[10]
+loop_count: 6000000
diff --git a/benchmark/vm_struct_big_aset.yml b/benchmark/vm_struct_big_aset.yml
new file mode 100644
index 0000000000..69550d14ea
--- /dev/null
+++ b/benchmark/vm_struct_big_aset.yml
@@ -0,0 +1,11 @@
+# loop_count is not utilized since `i` is involved in the script
+benchmark:
+ vm_struct_big_aset: |
+ s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+ x = s.new
+ i = 0
+ while i<6_000_000
+ i += 1
+ x.k = i # x[10] = i
+ end
+loop_count: 1
diff --git a/benchmark/vm_struct_big_href_hi.yml b/benchmark/vm_struct_big_href_hi.yml
new file mode 100644
index 0000000000..09b764dd13
--- /dev/null
+++ b/benchmark/vm_struct_big_href_hi.yml
@@ -0,0 +1,7 @@
+prelude: |
+ s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+ x = s.new
+benchmark:
+ vm_struct_big_href_hi: |
+ x[:z]
+loop_count: 6000000
diff --git a/benchmark/vm_struct_big_href_lo.yml b/benchmark/vm_struct_big_href_lo.yml
new file mode 100644
index 0000000000..d2f00b220f
--- /dev/null
+++ b/benchmark/vm_struct_big_href_lo.yml
@@ -0,0 +1,7 @@
+prelude: |
+ s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+ x = s.new
+benchmark:
+ vm_struct_big_href_lo: |
+ x[:k]
+loop_count: 6000000
diff --git a/benchmark/vm_struct_big_hset.yml b/benchmark/vm_struct_big_hset.yml
new file mode 100644
index 0000000000..fc45cbee9c
--- /dev/null
+++ b/benchmark/vm_struct_big_hset.yml
@@ -0,0 +1,11 @@
+# loop_count is not utilized since `i` is involved in the script
+benchmark:
+ vm_struct_big_hset: |
+ s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+ x = s.new
+ i = 0
+ while i<6_000_000
+ i += 1
+ x[:k] = i
+ end
+loop_count: 1
diff --git a/benchmark/vm_struct_small_aref.yml b/benchmark/vm_struct_small_aref.yml
new file mode 100644
index 0000000000..5a83251d1e
--- /dev/null
+++ b/benchmark/vm_struct_small_aref.yml
@@ -0,0 +1,7 @@
+prelude: |
+ s = Struct.new(:a, :b, :c)
+ x = s.new
+benchmark:
+ vm_struct_small_aref: |
+ x.a
+loop_count: 6000000
diff --git a/benchmark/vm_struct_small_aset.yml b/benchmark/vm_struct_small_aset.yml
new file mode 100644
index 0000000000..74f435f126
--- /dev/null
+++ b/benchmark/vm_struct_small_aset.yml
@@ -0,0 +1,11 @@
+# loop_count is not utilized since `i` is involved in the script
+benchmark:
+ vm_struct_small_aset: |
+ s = Struct.new(:a, :b, :c)
+ x = s.new
+ i = 0
+ while i<6_000_000
+ i += 1
+ x.a = i
+ end
+loop_count: 1
diff --git a/benchmark/vm_struct_small_href.yml b/benchmark/vm_struct_small_href.yml
new file mode 100644
index 0000000000..6b7d7f39e7
--- /dev/null
+++ b/benchmark/vm_struct_small_href.yml
@@ -0,0 +1,7 @@
+prelude: |
+ s = Struct.new(:a, :b, :c)
+ x = s.new
+benchmark:
+ vm_struct_small_href: |
+ x[:a]
+loop_count: 6000000
diff --git a/benchmark/vm_struct_small_hset.yml b/benchmark/vm_struct_small_hset.yml
new file mode 100644
index 0000000000..5d43b150de
--- /dev/null
+++ b/benchmark/vm_struct_small_hset.yml
@@ -0,0 +1,7 @@
+prelude: |
+ s = Struct.new(:a, :b, :c)
+ x = s.new
+benchmark:
+ vm_struct_small_hset: |
+ x[:a] = 1
+loop_count: 6000000
diff --git a/benchmark/vm_super.yml b/benchmark/vm_super.yml
new file mode 100644
index 0000000000..0d1e965c6e
--- /dev/null
+++ b/benchmark/vm_super.yml
@@ -0,0 +1,17 @@
+prelude: |
+ class C
+ def m
+ 1
+ end
+ end
+
+ class CC < C
+ def m
+ super()
+ end
+ end
+
+ obj = CC.new
+benchmark:
+ vm_super: obj.m
+loop_count: 6000000
diff --git a/benchmark/vm_swap.yml b/benchmark/vm_swap.yml
new file mode 100644
index 0000000000..e824a65e0a
--- /dev/null
+++ b/benchmark/vm_swap.yml
@@ -0,0 +1,7 @@
+prelude: |
+ a = 1
+ b = 2
+benchmark:
+ vm_swap: |
+ a, b = b, a
+loop_count: 30000000
diff --git a/benchmark/vm_symbol_block_pass.rb b/benchmark/vm_symbol_block_pass.rb
new file mode 100644
index 0000000000..1d433353e1
--- /dev/null
+++ b/benchmark/vm_symbol_block_pass.rb
@@ -0,0 +1,13 @@
+class C
+ 1000.times {|i|
+ eval("def i#{i};end")
+ }
+end
+
+c = C.new
+m = C.instance_methods(false)
+5_000.times do
+ m.each do |n|
+ c.tap(&n)
+ end
+end
diff --git a/benchmark/vm_thread_alive_check.yml b/benchmark/vm_thread_alive_check.yml
new file mode 100644
index 0000000000..d21737d3e8
--- /dev/null
+++ b/benchmark/vm_thread_alive_check.yml
@@ -0,0 +1,8 @@
+benchmark:
+ vm_thread_alive_check: |
+ t = Thread.new{}
+ while t.alive?
+ Thread.pass
+ end
+loop_count: 50_000
+
diff --git a/benchmark/vm_thread_close.rb b/benchmark/vm_thread_close.rb
new file mode 100644
index 0000000000..3e9a265ce8
--- /dev/null
+++ b/benchmark/vm_thread_close.rb
@@ -0,0 +1,6 @@
+1000.times { Thread.new { sleep } }
+i = 0
+while i<100_000 # benchmark loop 3
+ i += 1
+ IO.pipe.each(&:close)
+end
diff --git a/benchmark/vm_thread_condvar1.rb b/benchmark/vm_thread_condvar1.rb
new file mode 100644
index 0000000000..feed27c3ad
--- /dev/null
+++ b/benchmark/vm_thread_condvar1.rb
@@ -0,0 +1,28 @@
+# two threads, two mutex, two condvar ping-pong
+require 'thread'
+m1 = Thread::Mutex.new
+m2 = Thread::Mutex.new
+cv1 = Thread::ConditionVariable.new
+cv2 = Thread::ConditionVariable.new
+max = 100000
+i = 0
+wait = nil
+m2.synchronize do
+ wait = Thread.new do
+ m1.synchronize do
+ m2.synchronize { cv2.signal }
+ while (i += 1) < max
+ cv1.wait(m1)
+ cv2.signal
+ end
+ end
+ end
+ cv2.wait(m2)
+end
+m1.synchronize do
+ while i < max
+ cv1.signal
+ cv2.wait(m1)
+ end
+end
+wait.join
diff --git a/benchmark/vm_thread_condvar2.rb b/benchmark/vm_thread_condvar2.rb
new file mode 100644
index 0000000000..6590c4134b
--- /dev/null
+++ b/benchmark/vm_thread_condvar2.rb
@@ -0,0 +1,35 @@
+# many threads, one mutex, many condvars
+require 'thread'
+m = Thread::Mutex.new
+cv1 = Thread::ConditionVariable.new
+cv2 = Thread::ConditionVariable.new
+max = 1000
+n = 100
+waiting = 0
+scvs = []
+waiters = n.times.map do |i|
+ start_cv = Thread::ConditionVariable.new
+ scvs << start_cv
+ start_mtx = Thread::Mutex.new
+ start_mtx.synchronize do
+ th = Thread.new(start_mtx, start_cv) do |sm, scv|
+ m.synchronize do
+ sm.synchronize { scv.signal }
+ max.times do
+ cv2.signal if (waiting += 1) == n
+ cv1.wait(m)
+ end
+ end
+ end
+ start_cv.wait(start_mtx)
+ th
+ end
+end
+m.synchronize do
+ max.times do
+ cv2.wait(m) until waiting == n
+ waiting = 0
+ cv1.broadcast
+ end
+end
+waiters.each(&:join)
diff --git a/benchmark/vm_thread_create_join.rb b/benchmark/vm_thread_create_join.rb
new file mode 100644
index 0000000000..393cd45df9
--- /dev/null
+++ b/benchmark/vm_thread_create_join.rb
@@ -0,0 +1,6 @@
+i = 0
+while i<100_000 # benchmark loop 3
+ i += 1
+ Thread.new{
+ }.join
+end
diff --git a/benchmark/vm_thread_mutex1.rb b/benchmark/vm_thread_mutex1.rb
new file mode 100644
index 0000000000..66e42c85e1
--- /dev/null
+++ b/benchmark/vm_thread_mutex1.rb
@@ -0,0 +1,21 @@
+# one thread, one mutex (no contention)
+
+require 'thread'
+m = Thread::Mutex.new
+r = 0
+max = 2000
+lmax = max * max
+(1..1).map{
+ Thread.new{
+ i = 0
+ while i<lmax
+ i += 1
+ m.synchronize{
+ r += 1
+ }
+ end
+ }
+}.each{|e|
+ e.join
+}
+raise r.to_s if r != max * max
diff --git a/benchmark/vm_thread_mutex2.rb b/benchmark/vm_thread_mutex2.rb
new file mode 100644
index 0000000000..6e6c804c31
--- /dev/null
+++ b/benchmark/vm_thread_mutex2.rb
@@ -0,0 +1,21 @@
+# two threads, one mutex
+
+require 'thread'
+m = Thread::Mutex.new
+r = 0
+max = 2000
+lmax = (max * max)/2
+(1..2).map{
+ Thread.new{
+ i = 0
+ while i<lmax
+ i += 1
+ m.synchronize{
+ r += 1
+ }
+ end
+ }
+}.each{|e|
+ e.join
+}
+raise r.to_s if r != max * max
diff --git a/benchmark/vm_thread_mutex3.rb b/benchmark/vm_thread_mutex3.rb
new file mode 100644
index 0000000000..c750dc542a
--- /dev/null
+++ b/benchmark/vm_thread_mutex3.rb
@@ -0,0 +1,20 @@
+# 1000 threads, one mutex
+
+require 'thread'
+m = Thread::Mutex.new
+r = 0
+max = 2000
+(1..max).map{
+ Thread.new{
+ i = 0
+ while i<max
+ i += 1
+ m.synchronize{
+ r += 1
+ }
+ end
+ }
+}.each{|e|
+ e.join
+}
+raise r.to_s if r != max * max
diff --git a/benchmark/vm_thread_pass.rb b/benchmark/vm_thread_pass.rb
new file mode 100644
index 0000000000..438bd08d45
--- /dev/null
+++ b/benchmark/vm_thread_pass.rb
@@ -0,0 +1,15 @@
+# Plenty Thread.pass
+# A performance may depend on GVL implementation.
+
+tmax = (ARGV.shift || 8).to_i
+lmax = 400_000 / tmax
+
+(1..tmax).map{
+ Thread.new{
+ lmax.times{
+ Thread.pass
+ }
+ }
+}.each{|t| t.join}
+
+
diff --git a/benchmark/vm_thread_pass_flood.rb b/benchmark/vm_thread_pass_flood.rb
new file mode 100644
index 0000000000..65df8e6154
--- /dev/null
+++ b/benchmark/vm_thread_pass_flood.rb
@@ -0,0 +1,10 @@
+# n.b. this is a good test for GVL when pinned to a single CPU
+
+5_000.times{
+ Thread.new{loop{Thread.pass}}
+}
+
+i = 0
+while i<10_000
+ i += 1
+end
diff --git a/benchmark/vm_thread_pipe.rb b/benchmark/vm_thread_pipe.rb
new file mode 100644
index 0000000000..112a621905
--- /dev/null
+++ b/benchmark/vm_thread_pipe.rb
@@ -0,0 +1,17 @@
+# Measure small and plenty pipe read/write.
+# A performance may depend on GVL implementation.
+
+lmax = 100_000
+r, w = IO.pipe
+[Thread.new{
+ lmax.times{
+ w.write('a')
+ }
+ p "w:exit"
+}, Thread.new{
+ lmax.times{
+ r.read(1)
+ }
+ p "r:exit"
+}].each{|t| t.join}
+
diff --git a/benchmark/vm_thread_queue.rb b/benchmark/vm_thread_queue.rb
new file mode 100644
index 0000000000..1dd3696a3c
--- /dev/null
+++ b/benchmark/vm_thread_queue.rb
@@ -0,0 +1,18 @@
+require 'thread'
+
+n = 10_000_000
+q = Thread::Queue.new
+consumer = Thread.new{
+ while q.pop
+ # consuming
+ end
+}
+
+producer = Thread.new{
+ n.times{
+ q.push true
+ }
+ q.push nil
+}
+
+consumer.join
diff --git a/benchmark/vm_thread_sized_queue.rb b/benchmark/vm_thread_sized_queue.rb
new file mode 100644
index 0000000000..7b9af5482b
--- /dev/null
+++ b/benchmark/vm_thread_sized_queue.rb
@@ -0,0 +1,20 @@
+require 'thread'
+# on producer, one consumer
+
+n = 1_000_000
+q = Thread::SizedQueue.new(100)
+consumer = Thread.new{
+ while q.pop
+ # consuming
+ end
+}
+
+producer = Thread.new{
+ while n > 0
+ q.push true
+ n -= 1
+ end
+ q.push nil
+}
+
+consumer.join
diff --git a/benchmark/vm_thread_sized_queue2.rb b/benchmark/vm_thread_sized_queue2.rb
new file mode 100644
index 0000000000..de9f55e978
--- /dev/null
+++ b/benchmark/vm_thread_sized_queue2.rb
@@ -0,0 +1,23 @@
+require 'thread'
+# one producer, many consumers
+n = 1_000_000
+m = 10
+q = Thread::SizedQueue.new(100)
+consumers = m.times.map do
+ Thread.new do
+ while q.pop
+ # consuming
+ end
+ end
+end
+
+producer = Thread.new do
+ while n > 0
+ q.push true
+ n -= 1
+ end
+ m.times { q.push nil }
+end
+
+producer.join
+consumers.each(&:join)
diff --git a/benchmark/vm_thread_sized_queue3.rb b/benchmark/vm_thread_sized_queue3.rb
new file mode 100644
index 0000000000..ce5f1796d8
--- /dev/null
+++ b/benchmark/vm_thread_sized_queue3.rb
@@ -0,0 +1,22 @@
+require 'thread'
+# many producers, one consumer
+n = 1_000_000
+m = 10
+q = Thread::SizedQueue.new(100)
+consumer = Thread.new do
+ while q.pop
+ # consuming
+ end
+end
+
+producers = m.times.map do
+ Thread.new do
+ while n > 0
+ q.push true
+ n -= 1
+ end
+ end
+end
+producers.each(&:join)
+q.push nil
+consumer.join
diff --git a/benchmark/vm_thread_sized_queue4.rb b/benchmark/vm_thread_sized_queue4.rb
new file mode 100644
index 0000000000..a9b7d80ec0
--- /dev/null
+++ b/benchmark/vm_thread_sized_queue4.rb
@@ -0,0 +1,26 @@
+require 'thread'
+# many producers, many consumers
+nr = 1_000_000
+n = 10
+m = 10
+q = Thread::SizedQueue.new(100)
+consumers = n.times.map do
+ Thread.new do
+ while q.pop
+ # consuming
+ end
+ end
+end
+
+producers = m.times.map do
+ Thread.new do
+ while nr > 0
+ q.push true
+ nr -= 1
+ end
+ end
+end
+
+producers.each(&:join)
+n.times { q.push nil }
+consumers.each(&:join)
diff --git a/benchmark/vm_thread_sleep.yml b/benchmark/vm_thread_sleep.yml
new file mode 100644
index 0000000000..96901d8466
--- /dev/null
+++ b/benchmark/vm_thread_sleep.yml
@@ -0,0 +1,4 @@
+benchmark:
+ vm_thread_sleep: |
+ Thread.new { sleep }
+loop_count: 10_000
diff --git a/benchmark/vm_unif1.yml b/benchmark/vm_unif1.yml
new file mode 100644
index 0000000000..04187bb0e2
--- /dev/null
+++ b/benchmark/vm_unif1.yml
@@ -0,0 +1,7 @@
+prelude: |
+ def m a, b
+ end
+benchmark:
+ vm_unif1: |
+ m 100, 200
+loop_count: 6000000
diff --git a/benchmark/vm_yield.yml b/benchmark/vm_yield.yml
new file mode 100644
index 0000000000..230be3d84f
--- /dev/null
+++ b/benchmark/vm_yield.yml
@@ -0,0 +1,13 @@
+# while loop cost is not removed due to benchmark_driver.gem's limitation
+benchmark:
+ vm_yield: |
+ def m
+ i = 0
+ while i<30_000_000
+ i += 1
+ yield
+ end
+ end
+
+ m{}
+loop_count: 1
diff --git a/benchmark/vm_zsuper.yml b/benchmark/vm_zsuper.yml
new file mode 100644
index 0000000000..bfb5837578
--- /dev/null
+++ b/benchmark/vm_zsuper.yml
@@ -0,0 +1,18 @@
+prelude: |
+ class C
+ def m a
+ 1
+ end
+ end
+
+ class CC < C
+ def m a
+ super
+ end
+ end
+
+ obj = CC.new
+benchmark:
+ vm_zsuper: |
+ obj.m 10
+loop_count: 6000000
diff --git a/bignum.c b/bignum.c
index 3a5fed571c..cb2c3b6f07 100644
--- a/bignum.c
+++ b/bignum.c
@@ -3,974 +3,6145 @@
bignum.c -
$Author$
- $Date$
created at: Fri Jun 10 00:48:55 JST 1994
- Copyright (C) 1993-2000 Yukihiro Matsumoto
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
**********************************************************************/
-#include "ruby.h"
-#include <math.h>
+#include "ruby/internal/config.h"
+
#include <ctype.h>
+#include <float.h>
+#include <math.h>
-VALUE rb_cBignum;
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
-#if defined __MINGW32__
-#define USHORT _USHORT
+#ifdef HAVE_IEEEFP_H
+# include <ieeefp.h>
#endif
-typedef unsigned short USHORT;
+#if !defined(USE_GMP)
+#if defined(HAVE_LIBGMP) && defined(HAVE_GMP_H)
+# define USE_GMP 1
+#else
+# define USE_GMP 0
+#endif
+#endif
+#if USE_GMP
+# include <gmp.h>
+#endif
-#define BDIGITS(x) ((USHORT*)RBIGNUM(x)->digits)
-#define BITSPERDIG (sizeof(short)*CHAR_BIT)
-#define BIGRAD (1L << BITSPERDIG)
-#define DIGSPERLONG ((unsigned int)(sizeof(long)/sizeof(short)))
-#define BIGUP(x) ((unsigned long)(x) << BITSPERDIG)
-#define BIGDN(x) RSHIFT(x,BITSPERDIG)
-#define BIGLO(x) ((USHORT)((x) & (BIGRAD-1)))
+#include "id.h"
+#include "internal.h"
+#include "internal/bignum.h"
+#include "internal/complex.h"
+#include "internal/gc.h"
+#include "internal/numeric.h"
+#include "internal/object.h"
+#include "internal/sanitizers.h"
+#include "internal/variable.h"
+#include "internal/warnings.h"
+#include "ruby/thread.h"
+#include "ruby/util.h"
+#include "ruby_assert.h"
+
+const char ruby_digitmap[] = "0123456789abcdefghijklmnopqrstuvwxyz";
+
+#ifndef SIZEOF_BDIGIT_DBL
+# if SIZEOF_INT*2 <= SIZEOF_LONG_LONG
+# define SIZEOF_BDIGIT_DBL SIZEOF_LONG_LONG
+# else
+# define SIZEOF_BDIGIT_DBL SIZEOF_LONG
+# endif
+#endif
-static VALUE
-bignew_1(klass, len, sign)
- VALUE klass;
- long len;
- char sign;
+STATIC_ASSERT(sizeof_bdigit_dbl, sizeof(BDIGIT_DBL) == SIZEOF_BDIGIT_DBL);
+STATIC_ASSERT(sizeof_bdigit_dbl_signed, sizeof(BDIGIT_DBL_SIGNED) == SIZEOF_BDIGIT_DBL);
+STATIC_ASSERT(sizeof_bdigit, SIZEOF_BDIGIT <= sizeof(BDIGIT));
+STATIC_ASSERT(sizeof_bdigit_and_dbl, SIZEOF_BDIGIT*2 <= SIZEOF_BDIGIT_DBL);
+STATIC_ASSERT(bdigit_signedness, 0 < (BDIGIT)-1);
+STATIC_ASSERT(bdigit_dbl_signedness, 0 < (BDIGIT_DBL)-1);
+STATIC_ASSERT(bdigit_dbl_signed_signedness, 0 > (BDIGIT_DBL_SIGNED)-1);
+STATIC_ASSERT(rbignum_embed_len_max, BIGNUM_EMBED_LEN_MAX <= (BIGNUM_EMBED_LEN_MASK >> BIGNUM_EMBED_LEN_SHIFT));
+
+#if SIZEOF_BDIGIT < SIZEOF_LONG
+STATIC_ASSERT(sizeof_long_and_sizeof_bdigit, SIZEOF_LONG % SIZEOF_BDIGIT == 0);
+#else
+STATIC_ASSERT(sizeof_long_and_sizeof_bdigit, SIZEOF_BDIGIT % SIZEOF_LONG == 0);
+#endif
+
+#ifdef WORDS_BIGENDIAN
+# define HOST_BIGENDIAN_P 1
+#else
+# define HOST_BIGENDIAN_P 0
+#endif
+/* (!LSHIFTABLE(d, n) ? 0 : (n)) is the same as n but suppress a warning, C4293, by Visual Studio. */
+#define LSHIFTABLE(d, n) ((n) < sizeof(d) * CHAR_BIT)
+#define LSHIFTX(d, n) (!LSHIFTABLE(d, n) ? 0 : ((d) << (!LSHIFTABLE(d, n) ? 0 : (n))))
+#define CLEAR_LOWBITS(d, numbits) ((d) & LSHIFTX(~((d)*0), (numbits)))
+#define FILL_LOWBITS(d, numbits) ((d) | (LSHIFTX(((d)*0+1), (numbits))-1))
+#define POW2_P(x) (((x)&((x)-1))==0)
+
+#define BDIGITS(x) (BIGNUM_DIGITS(x))
+#define BITSPERDIG (SIZEOF_BDIGIT*CHAR_BIT)
+#define BIGRAD ((BDIGIT_DBL)1 << BITSPERDIG)
+#define BIGRAD_HALF ((BDIGIT)(BIGRAD >> 1))
+#define BDIGIT_MSB(d) (((d) & BIGRAD_HALF) != 0)
+#define BIGUP(x) LSHIFTX(((x) + (BDIGIT_DBL)0), BITSPERDIG)
+#define BIGDN(x) RSHIFT((x),BITSPERDIG)
+#define BIGLO(x) ((BDIGIT)((x) & BDIGMAX))
+#define BDIGMAX ((BDIGIT)(BIGRAD-1))
+#define BDIGIT_DBL_MAX (~(BDIGIT_DBL)0)
+
+#if SIZEOF_BDIGIT == 2
+# define swap_bdigit(x) swap16(x)
+#elif SIZEOF_BDIGIT == 4
+# define swap_bdigit(x) swap32(x)
+#elif SIZEOF_BDIGIT == 8
+# define swap_bdigit(x) swap64(x)
+#endif
+
+#define BIGZEROP(x) (BIGNUM_LEN(x) == 0 || \
+ (BDIGITS(x)[0] == 0 && \
+ (BIGNUM_LEN(x) == 1 || bigzero_p(x))))
+#define BIGSIZE(x) (BIGNUM_LEN(x) == 0 ? (size_t)0 : \
+ BDIGITS(x)[BIGNUM_LEN(x)-1] ? \
+ (size_t)(BIGNUM_LEN(x)*SIZEOF_BDIGIT - nlz(BDIGITS(x)[BIGNUM_LEN(x)-1])/CHAR_BIT) : \
+ rb_absint_size(x, NULL))
+
+#define BIGDIVREM_EXTRA_WORDS 1
+#define bdigit_roomof(n) roomof(n, SIZEOF_BDIGIT)
+#define BARY_ARGS(ary) ary, numberof(ary)
+
+#define BARY_ADD(z, x, y) bary_add(BARY_ARGS(z), BARY_ARGS(x), BARY_ARGS(y))
+#define BARY_SUB(z, x, y) bary_sub(BARY_ARGS(z), BARY_ARGS(x), BARY_ARGS(y))
+#define BARY_SHORT_MUL(z, x, y) bary_short_mul(BARY_ARGS(z), BARY_ARGS(x), BARY_ARGS(y))
+#define BARY_DIVMOD(q, r, x, y) bary_divmod(BARY_ARGS(q), BARY_ARGS(r), BARY_ARGS(x), BARY_ARGS(y))
+#define BARY_ZERO_P(x) bary_zero_p(BARY_ARGS(x))
+
+#define BIGNUM_SET_NEGATIVE_SIGN(b) BIGNUM_SET_SIGN(b, 0)
+#define BIGNUM_SET_POSITIVE_SIGN(b) BIGNUM_SET_SIGN(b, 1)
+
+#define bignew(len,sign) bignew_1(rb_cInteger,(len),(sign))
+
+#define BDIGITS_ZERO(ptr, n) do { \
+ BDIGIT *bdigitz_zero_ptr = (ptr); \
+ size_t bdigitz_zero_n = (n); \
+ while (bdigitz_zero_n) { \
+ *bdigitz_zero_ptr++ = 0; \
+ bdigitz_zero_n--; \
+ } \
+} while (0)
+
+#define BARY_TRUNC(ds, n) do { \
+ while (0 < (n) && (ds)[(n)-1] == 0) \
+ (n)--; \
+ } while (0)
+
+#define KARATSUBA_BALANCED(xn, yn) ((yn)/2 < (xn))
+#define TOOM3_BALANCED(xn, yn) (((yn)+2)/3 * 2 < (xn))
+
+#define GMP_MUL_DIGITS 20
+#define KARATSUBA_MUL_DIGITS 70
+#define TOOM3_MUL_DIGITS 150
+
+#define GMP_DIV_DIGITS 20
+#define GMP_BIG2STR_DIGITS 20
+#define GMP_STR2BIG_DIGITS 20
+#if USE_GMP
+# define NAIVE_MUL_DIGITS GMP_MUL_DIGITS
+#else
+# define NAIVE_MUL_DIGITS KARATSUBA_MUL_DIGITS
+#endif
+
+typedef void (mulfunc_t)(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn);
+
+static mulfunc_t bary_mul_toom3_start;
+static mulfunc_t bary_mul_karatsuba_start;
+static BDIGIT bigdivrem_single(BDIGIT *qds, const BDIGIT *xds, size_t xn, BDIGIT y);
+
+static VALUE bignew_1(VALUE klass, size_t len, int sign);
+static inline VALUE bigtrunc(VALUE x);
+
+static VALUE bigsq(VALUE x);
+static inline VALUE power_cache_get_power(int base, int power_level, size_t *numdigits_ret);
+
+#if SIZEOF_BDIGIT <= SIZEOF_INT
+static int nlz(BDIGIT x) { return nlz_int((unsigned int)x) - (SIZEOF_INT-SIZEOF_BDIGIT) * CHAR_BIT; }
+#elif SIZEOF_BDIGIT <= SIZEOF_LONG
+static int nlz(BDIGIT x) { return nlz_long((unsigned long)x) - (SIZEOF_LONG-SIZEOF_BDIGIT) * CHAR_BIT; }
+#elif SIZEOF_BDIGIT <= SIZEOF_LONG_LONG
+static int nlz(BDIGIT x) { return nlz_long_long((unsigned LONG_LONG)x) - (SIZEOF_LONG_LONG-SIZEOF_BDIGIT) * CHAR_BIT; }
+#elif SIZEOF_BDIGIT <= SIZEOF_INT128_T
+static int nlz(BDIGIT x) { return nlz_int128((uint128_t)x) - (SIZEOF_INT128_T-SIZEOF_BDIGIT) * CHAR_BIT; }
+#endif
+
+#define U16(a) ((uint16_t)(a))
+#define U32(a) ((uint32_t)(a))
+#ifdef HAVE_UINT64_T
+#define U64(a,b) (((uint64_t)(a) << 32) | (b))
+#endif
+#ifdef HAVE_UINT128_T
+#define U128(a,b,c,d) (((uint128_t)U64(a,b) << 64) | U64(c,d))
+#endif
+
+/* The following script, maxpow.rb, generates the tables follows.
+
+def big(n, bits)
+ ns = []
+ ((bits+31)/32).times {
+ ns << sprintf("0x%08x", n & 0xffff_ffff)
+ n >>= 32
+ }
+ "U#{bits}(" + ns.reverse.join(",") + ")"
+end
+def values(ary, width, indent)
+ lines = [""]
+ ary.each {|e|
+ lines << "" if !ary.last.empty? && width < (lines.last + e + ", ").length
+ lines.last << e + ", "
+ }
+ lines.map {|line| " " * indent + line.chomp(" ") + "\n" }.join
+end
+[16,32,64,128].each {|bits|
+ max = 2**bits-1
+ exps = []
+ nums = []
+ 2.upto(36) {|base|
+ exp = 0
+ n = 1
+ while n * base <= max
+ exp += 1
+ n *= base
+ end
+ exps << exp.to_s
+ nums << big(n, bits)
+ }
+ puts "#ifdef HAVE_UINT#{bits}_T"
+ puts "static const int maxpow#{bits}_exp[35] = {"
+ print values(exps, 70, 4)
+ puts "};"
+ puts "static const uint#{bits}_t maxpow#{bits}_num[35] = {"
+ print values(nums, 70, 4)
+ puts "};"
+ puts "#endif"
+}
+
+ */
+
+#if SIZEOF_BDIGIT_DBL == 2
+static const int maxpow16_exp[35] = {
+ 15, 10, 7, 6, 6, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+};
+static const uint16_t maxpow16_num[35] = {
+ U16(0x00008000), U16(0x0000e6a9), U16(0x00004000), U16(0x00003d09),
+ U16(0x0000b640), U16(0x000041a7), U16(0x00008000), U16(0x0000e6a9),
+ U16(0x00002710), U16(0x00003931), U16(0x00005100), U16(0x00006f91),
+ U16(0x00009610), U16(0x0000c5c1), U16(0x00001000), U16(0x00001331),
+ U16(0x000016c8), U16(0x00001acb), U16(0x00001f40), U16(0x0000242d),
+ U16(0x00002998), U16(0x00002f87), U16(0x00003600), U16(0x00003d09),
+ U16(0x000044a8), U16(0x00004ce3), U16(0x000055c0), U16(0x00005f45),
+ U16(0x00006978), U16(0x0000745f), U16(0x00008000), U16(0x00008c61),
+ U16(0x00009988), U16(0x0000a77b), U16(0x0000b640),
+};
+#elif SIZEOF_BDIGIT_DBL == 4
+static const int maxpow32_exp[35] = {
+ 31, 20, 15, 13, 12, 11, 10, 10, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7,
+ 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+};
+static const uint32_t maxpow32_num[35] = {
+ U32(0x80000000), U32(0xcfd41b91), U32(0x40000000), U32(0x48c27395),
+ U32(0x81bf1000), U32(0x75db9c97), U32(0x40000000), U32(0xcfd41b91),
+ U32(0x3b9aca00), U32(0x8c8b6d2b), U32(0x19a10000), U32(0x309f1021),
+ U32(0x57f6c100), U32(0x98c29b81), U32(0x10000000), U32(0x18754571),
+ U32(0x247dbc80), U32(0x3547667b), U32(0x4c4b4000), U32(0x6b5a6e1d),
+ U32(0x94ace180), U32(0xcaf18367), U32(0x0b640000), U32(0x0e8d4a51),
+ U32(0x1269ae40), U32(0x17179149), U32(0x1cb91000), U32(0x23744899),
+ U32(0x2b73a840), U32(0x34e63b41), U32(0x40000000), U32(0x4cfa3cc1),
+ U32(0x5c13d840), U32(0x6d91b519), U32(0x81bf1000),
+};
+#elif SIZEOF_BDIGIT_DBL == 8 && defined HAVE_UINT64_T
+static const int maxpow64_exp[35] = {
+ 63, 40, 31, 27, 24, 22, 21, 20, 19, 18, 17, 17, 16, 16, 15, 15, 15,
+ 15, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12,
+ 12,
+};
+static const uint64_t maxpow64_num[35] = {
+ U64(0x80000000,0x00000000), U64(0xa8b8b452,0x291fe821),
+ U64(0x40000000,0x00000000), U64(0x6765c793,0xfa10079d),
+ U64(0x41c21cb8,0xe1000000), U64(0x36427987,0x50226111),
+ U64(0x80000000,0x00000000), U64(0xa8b8b452,0x291fe821),
+ U64(0x8ac72304,0x89e80000), U64(0x4d28cb56,0xc33fa539),
+ U64(0x1eca170c,0x00000000), U64(0x780c7372,0x621bd74d),
+ U64(0x1e39a505,0x7d810000), U64(0x5b27ac99,0x3df97701),
+ U64(0x10000000,0x00000000), U64(0x27b95e99,0x7e21d9f1),
+ U64(0x5da0e1e5,0x3c5c8000), U64(0xd2ae3299,0xc1c4aedb),
+ U64(0x16bcc41e,0x90000000), U64(0x2d04b7fd,0xd9c0ef49),
+ U64(0x5658597b,0xcaa24000), U64(0xa0e20737,0x37609371),
+ U64(0x0c29e980,0x00000000), U64(0x14adf4b7,0x320334b9),
+ U64(0x226ed364,0x78bfa000), U64(0x383d9170,0xb85ff80b),
+ U64(0x5a3c23e3,0x9c000000), U64(0x8e651373,0x88122bcd),
+ U64(0xdd41bb36,0xd259e000), U64(0x0aee5720,0xee830681),
+ U64(0x10000000,0x00000000), U64(0x172588ad,0x4f5f0981),
+ U64(0x211e44f7,0xd02c1000), U64(0x2ee56725,0xf06e5c71),
+ U64(0x41c21cb8,0xe1000000),
+};
+#elif SIZEOF_BDIGIT_DBL == 16 && defined HAVE_UINT128_T
+static const int maxpow128_exp[35] = {
+ 127, 80, 63, 55, 49, 45, 42, 40, 38, 37, 35, 34, 33, 32, 31, 31, 30,
+ 30, 29, 29, 28, 28, 27, 27, 27, 26, 26, 26, 26, 25, 25, 25, 25, 24,
+ 24,
+};
+static const uint128_t maxpow128_num[35] = {
+ U128(0x80000000,0x00000000,0x00000000,0x00000000),
+ U128(0x6f32f1ef,0x8b18a2bc,0x3cea5978,0x9c79d441),
+ U128(0x40000000,0x00000000,0x00000000,0x00000000),
+ U128(0xd0cf4b50,0xcfe20765,0xfff4b4e3,0xf741cf6d),
+ U128(0x6558e2a0,0x921fe069,0x42860000,0x00000000),
+ U128(0x5080c7b7,0xd0e31ba7,0x5911a67d,0xdd3d35e7),
+ U128(0x40000000,0x00000000,0x00000000,0x00000000),
+ U128(0x6f32f1ef,0x8b18a2bc,0x3cea5978,0x9c79d441),
+ U128(0x4b3b4ca8,0x5a86c47a,0x098a2240,0x00000000),
+ U128(0xffd1390a,0x0adc2fb8,0xdabbb817,0x4d95c99b),
+ U128(0x2c6fdb36,0x4c25e6c0,0x00000000,0x00000000),
+ U128(0x384bacd6,0x42c343b4,0xe90c4272,0x13506d29),
+ U128(0x31f5db32,0xa34aced6,0x0bf13a0e,0x00000000),
+ U128(0x20753ada,0xfd1e839f,0x53686d01,0x3143ee01),
+ U128(0x10000000,0x00000000,0x00000000,0x00000000),
+ U128(0x68ca11d6,0xb4f6d1d1,0xfaa82667,0x8073c2f1),
+ U128(0x223e493b,0xb3bb69ff,0xa4b87d6c,0x40000000),
+ U128(0xad62418d,0x14ea8247,0x01c4b488,0x6cc66f59),
+ U128(0x2863c1f5,0xcdae42f9,0x54000000,0x00000000),
+ U128(0xa63fd833,0xb9386b07,0x36039e82,0xbe651b25),
+ U128(0x1d1f7a9c,0xd087a14d,0x28cdf3d5,0x10000000),
+ U128(0x651b5095,0xc2ea8fc1,0xb30e2c57,0x77aaf7e1),
+ U128(0x0ddef20e,0xff760000,0x00000000,0x00000000),
+ U128(0x29c30f10,0x29939b14,0x6664242d,0x97d9f649),
+ U128(0x786a435a,0xe9558b0e,0x6aaf6d63,0xa8000000),
+ U128(0x0c5afe6f,0xf302bcbf,0x94fd9829,0xd87f5079),
+ U128(0x1fce575c,0xe1692706,0x07100000,0x00000000),
+ U128(0x4f34497c,0x8597e144,0x36e91802,0x00528229),
+ U128(0xbf3a8e1d,0x41ef2170,0x7802130d,0x84000000),
+ U128(0x0e7819e1,0x7f1eb0fb,0x6ee4fb89,0x01d9531f),
+ U128(0x20000000,0x00000000,0x00000000,0x00000000),
+ U128(0x4510460d,0xd9e879c0,0x14a82375,0x2f22b321),
+ U128(0x91abce3c,0x4b4117ad,0xe76d35db,0x22000000),
+ U128(0x08973ea3,0x55d75bc2,0x2e42c391,0x727d69e1),
+ U128(0x10e425c5,0x6daffabc,0x35c10000,0x00000000),
+};
+#endif
+
+static BDIGIT_DBL
+maxpow_in_bdigit_dbl(int base, int *exp_ret)
+{
+ BDIGIT_DBL maxpow;
+ int exponent;
+
+ assert(2 <= base && base <= 36);
+
+ {
+#if SIZEOF_BDIGIT_DBL == 2
+ maxpow = maxpow16_num[base-2];
+ exponent = maxpow16_exp[base-2];
+#elif SIZEOF_BDIGIT_DBL == 4
+ maxpow = maxpow32_num[base-2];
+ exponent = maxpow32_exp[base-2];
+#elif SIZEOF_BDIGIT_DBL == 8 && defined HAVE_UINT64_T
+ maxpow = maxpow64_num[base-2];
+ exponent = maxpow64_exp[base-2];
+#elif SIZEOF_BDIGIT_DBL == 16 && defined HAVE_UINT128_T
+ maxpow = maxpow128_num[base-2];
+ exponent = maxpow128_exp[base-2];
+#else
+ maxpow = base;
+ exponent = 1;
+ while (maxpow <= BDIGIT_DBL_MAX / base) {
+ maxpow *= base;
+ exponent++;
+ }
+#endif
+ }
+
+ *exp_ret = exponent;
+ return maxpow;
+}
+
+static inline BDIGIT_DBL
+bary2bdigitdbl(const BDIGIT *ds, size_t n)
+{
+ assert(n <= 2);
+
+ if (n == 2)
+ return ds[0] | BIGUP(ds[1]);
+ if (n == 1)
+ return ds[0];
+ return 0;
+}
+
+static inline void
+bdigitdbl2bary(BDIGIT *ds, size_t n, BDIGIT_DBL num)
+{
+ assert(n == 2);
+
+ ds[0] = BIGLO(num);
+ ds[1] = (BDIGIT)BIGDN(num);
+}
+
+static int
+bary_cmp(const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ size_t i;
+ BARY_TRUNC(xds, xn);
+ BARY_TRUNC(yds, yn);
+
+ if (xn < yn)
+ return -1;
+ if (xn > yn)
+ return 1;
+
+ for (i = 0; i < xn; i++)
+ if (xds[xn - i - 1] != yds[yn - i - 1])
+ break;
+ if (i == xn)
+ return 0;
+ return xds[xn - i - 1] < yds[yn - i - 1] ? -1 : 1;
+}
+
+static BDIGIT
+bary_small_lshift(BDIGIT *zds, const BDIGIT *xds, size_t n, int shift)
+{
+ size_t i;
+ BDIGIT_DBL num = 0;
+ assert(0 <= shift && shift < BITSPERDIG);
+
+ for (i=0; i<n; i++) {
+ num = num | (BDIGIT_DBL)*xds++ << shift;
+ *zds++ = BIGLO(num);
+ num = BIGDN(num);
+ }
+ return BIGLO(num);
+}
+
+static void
+bary_small_rshift(BDIGIT *zds, const BDIGIT *xds, size_t n, int shift, BDIGIT higher_bdigit)
+{
+ size_t i;
+ BDIGIT_DBL num = 0;
+
+ assert(0 <= shift && shift < BITSPERDIG);
+
+ num = BIGUP(higher_bdigit);
+ for (i = 0; i < n; i++) {
+ BDIGIT x = xds[n - i - 1];
+ num = (num | x) >> shift;
+ zds[n - i - 1] = BIGLO(num);
+ num = BIGUP(x);
+ }
+}
+
+static int
+bary_zero_p(const BDIGIT *xds, size_t xn)
+{
+ if (xn == 0)
+ return 1;
+ do {
+ if (xds[--xn]) return 0;
+ } while (xn);
+ return 1;
+}
+
+static void
+bary_neg(BDIGIT *ds, size_t n)
+{
+ size_t i;
+ for (i = 0; i < n; i++)
+ ds[n - i - 1] = BIGLO(~ds[n - i - 1]);
+}
+
+static int
+bary_2comp(BDIGIT *ds, size_t n)
+{
+ size_t i;
+ for (i = 0; i < n; i++) {
+ if (ds[i] != 0) {
+ goto non_zero;
+ }
+ }
+ return 1;
+
+ non_zero:
+ ds[i] = BIGLO(~ds[i] + 1);
+ i++;
+ for (; i < n; i++) {
+ ds[i] = BIGLO(~ds[i]);
+ }
+ return 0;
+}
+
+static void
+bary_swap(BDIGIT *ds, size_t num_bdigits)
+{
+ BDIGIT *p1 = ds;
+ BDIGIT *p2 = ds + num_bdigits - 1;
+ for (; p1 < p2; p1++, p2--) {
+ BDIGIT tmp = *p1;
+ *p1 = *p2;
+ *p2 = tmp;
+ }
+}
+
+#define INTEGER_PACK_WORDORDER_MASK \
+ (INTEGER_PACK_MSWORD_FIRST | \
+ INTEGER_PACK_LSWORD_FIRST)
+#define INTEGER_PACK_BYTEORDER_MASK \
+ (INTEGER_PACK_MSBYTE_FIRST | \
+ INTEGER_PACK_LSBYTE_FIRST | \
+ INTEGER_PACK_NATIVE_BYTE_ORDER)
+
+static void
+validate_integer_pack_format(size_t numwords, size_t wordsize, size_t nails, int flags, int supported_flags)
+{
+ int wordorder_bits = flags & INTEGER_PACK_WORDORDER_MASK;
+ int byteorder_bits = flags & INTEGER_PACK_BYTEORDER_MASK;
+
+ if (flags & ~supported_flags) {
+ rb_raise(rb_eArgError, "unsupported flags specified");
+ }
+ if (wordorder_bits == 0) {
+ if (1 < numwords)
+ rb_raise(rb_eArgError, "word order not specified");
+ }
+ else if (wordorder_bits != INTEGER_PACK_MSWORD_FIRST &&
+ wordorder_bits != INTEGER_PACK_LSWORD_FIRST)
+ rb_raise(rb_eArgError, "unexpected word order");
+ if (byteorder_bits == 0) {
+ rb_raise(rb_eArgError, "byte order not specified");
+ }
+ else if (byteorder_bits != INTEGER_PACK_MSBYTE_FIRST &&
+ byteorder_bits != INTEGER_PACK_LSBYTE_FIRST &&
+ byteorder_bits != INTEGER_PACK_NATIVE_BYTE_ORDER)
+ rb_raise(rb_eArgError, "unexpected byte order");
+ if (wordsize == 0)
+ rb_raise(rb_eArgError, "invalid wordsize: %"PRI_SIZE_PREFIX"u", wordsize);
+ if (SSIZE_MAX < wordsize)
+ rb_raise(rb_eArgError, "too big wordsize: %"PRI_SIZE_PREFIX"u", wordsize);
+ if (wordsize <= nails / CHAR_BIT)
+ rb_raise(rb_eArgError, "too big nails: %"PRI_SIZE_PREFIX"u", nails);
+ if (SIZE_MAX / wordsize < numwords)
+ rb_raise(rb_eArgError, "too big numwords * wordsize: %"PRI_SIZE_PREFIX"u * %"PRI_SIZE_PREFIX"u", numwords, wordsize);
+}
+
+static void
+integer_pack_loop_setup(
+ size_t numwords, size_t wordsize, size_t nails, int flags,
+ size_t *word_num_fullbytes_ret,
+ int *word_num_partialbits_ret,
+ size_t *word_start_ret,
+ ssize_t *word_step_ret,
+ size_t *word_last_ret,
+ size_t *byte_start_ret,
+ int *byte_step_ret)
+{
+ int wordorder_bits = flags & INTEGER_PACK_WORDORDER_MASK;
+ int byteorder_bits = flags & INTEGER_PACK_BYTEORDER_MASK;
+ size_t word_num_fullbytes;
+ int word_num_partialbits;
+ size_t word_start;
+ ssize_t word_step;
+ size_t word_last;
+ size_t byte_start;
+ int byte_step;
+
+ word_num_partialbits = CHAR_BIT - (int)(nails % CHAR_BIT);
+ if (word_num_partialbits == CHAR_BIT)
+ word_num_partialbits = 0;
+ word_num_fullbytes = wordsize - (nails / CHAR_BIT);
+ if (word_num_partialbits != 0) {
+ word_num_fullbytes--;
+ }
+
+ if (wordorder_bits == INTEGER_PACK_MSWORD_FIRST) {
+ word_start = wordsize*(numwords-1);
+ word_step = -(ssize_t)wordsize;
+ word_last = 0;
+ }
+ else {
+ word_start = 0;
+ word_step = wordsize;
+ word_last = wordsize*(numwords-1);
+ }
+
+ if (byteorder_bits == INTEGER_PACK_NATIVE_BYTE_ORDER) {
+#ifdef WORDS_BIGENDIAN
+ byteorder_bits = INTEGER_PACK_MSBYTE_FIRST;
+#else
+ byteorder_bits = INTEGER_PACK_LSBYTE_FIRST;
+#endif
+ }
+ if (byteorder_bits == INTEGER_PACK_MSBYTE_FIRST) {
+ byte_start = wordsize-1;
+ byte_step = -1;
+ }
+ else {
+ byte_start = 0;
+ byte_step = 1;
+ }
+
+ *word_num_partialbits_ret = word_num_partialbits;
+ *word_num_fullbytes_ret = word_num_fullbytes;
+ *word_start_ret = word_start;
+ *word_step_ret = word_step;
+ *word_last_ret = word_last;
+ *byte_start_ret = byte_start;
+ *byte_step_ret = byte_step;
+}
+
+static inline void
+integer_pack_fill_dd(BDIGIT **dpp, BDIGIT **dep, BDIGIT_DBL *ddp, int *numbits_in_dd_p)
+{
+ if (*dpp < *dep && BITSPERDIG <= (int)sizeof(*ddp) * CHAR_BIT - *numbits_in_dd_p) {
+ *ddp |= (BDIGIT_DBL)(*(*dpp)++) << *numbits_in_dd_p;
+ *numbits_in_dd_p += BITSPERDIG;
+ }
+ else if (*dpp == *dep) {
+ /* higher bits are infinity zeros */
+ *numbits_in_dd_p = (int)sizeof(*ddp) * CHAR_BIT;
+ }
+}
+
+static inline BDIGIT_DBL
+integer_pack_take_lowbits(int n, BDIGIT_DBL *ddp, int *numbits_in_dd_p)
+{
+ BDIGIT_DBL ret;
+ ret = (*ddp) & (((BDIGIT_DBL)1 << n) - 1);
+ *ddp >>= n;
+ *numbits_in_dd_p -= n;
+ return ret;
+}
+
+#if !defined(WORDS_BIGENDIAN)
+static int
+bytes_2comp(unsigned char *buf, size_t len)
+{
+ size_t i;
+ for (i = 0; i < len; i++) {
+ signed char c = buf[i];
+ signed int d = ~c;
+ unsigned int e = d & 0xFF;
+ buf[i] = e;
+ }
+ for (i = 0; i < len; i++) {
+ buf[i]++;
+ if (buf[i] != 0)
+ return 0;
+ }
+ return 1;
+}
+#endif
+
+static int
+bary_pack(int sign, BDIGIT *ds, size_t num_bdigits, void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
+{
+ BDIGIT *dp, *de;
+ unsigned char *buf, *bufend;
+
+ dp = ds;
+ de = ds + num_bdigits;
+
+ validate_integer_pack_format(numwords, wordsize, nails, flags,
+ INTEGER_PACK_MSWORD_FIRST|
+ INTEGER_PACK_LSWORD_FIRST|
+ INTEGER_PACK_MSBYTE_FIRST|
+ INTEGER_PACK_LSBYTE_FIRST|
+ INTEGER_PACK_NATIVE_BYTE_ORDER|
+ INTEGER_PACK_2COMP|
+ INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION);
+
+ while (dp < de && de[-1] == 0)
+ de--;
+ if (dp == de) {
+ sign = 0;
+ }
+
+ if (!(flags & INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION)) {
+ if (sign == 0) {
+ MEMZERO(words, unsigned char, numwords * wordsize);
+ return 0;
+ }
+ if (nails == 0 && numwords == 1) {
+ int need_swap = wordsize != 1 &&
+ (flags & INTEGER_PACK_BYTEORDER_MASK) != INTEGER_PACK_NATIVE_BYTE_ORDER &&
+ ((flags & INTEGER_PACK_MSBYTE_FIRST) ? !HOST_BIGENDIAN_P : HOST_BIGENDIAN_P);
+ if (0 < sign || !(flags & INTEGER_PACK_2COMP)) {
+ BDIGIT d;
+ if (wordsize == 1) {
+ *((unsigned char *)words) = (unsigned char)(d = dp[0]);
+ return ((1 < de - dp || CLEAR_LOWBITS(d, 8) != 0) ? 2 : 1) * sign;
+ }
+#if defined(HAVE_UINT16_T) && 2 <= SIZEOF_BDIGIT
+ if (wordsize == 2 && (uintptr_t)words % RUBY_ALIGNOF(uint16_t) == 0) {
+ uint16_t u = (uint16_t)(d = dp[0]);
+ if (need_swap) u = swap16(u);
+ *((uint16_t *)words) = u;
+ return ((1 < de - dp || CLEAR_LOWBITS(d, 16) != 0) ? 2 : 1) * sign;
+ }
+#endif
+#if defined(HAVE_UINT32_T) && 4 <= SIZEOF_BDIGIT
+ if (wordsize == 4 && (uintptr_t)words % RUBY_ALIGNOF(uint32_t) == 0) {
+ uint32_t u = (uint32_t)(d = dp[0]);
+ if (need_swap) u = swap32(u);
+ *((uint32_t *)words) = u;
+ return ((1 < de - dp || CLEAR_LOWBITS(d, 32) != 0) ? 2 : 1) * sign;
+ }
+#endif
+#if defined(HAVE_UINT64_T) && 8 <= SIZEOF_BDIGIT
+ if (wordsize == 8 && (uintptr_t)words % RUBY_ALIGNOF(uint64_t) == 0) {
+ uint64_t u = (uint64_t)(d = dp[0]);
+ if (need_swap) u = swap64(u);
+ *((uint64_t *)words) = u;
+ return ((1 < de - dp || CLEAR_LOWBITS(d, 64) != 0) ? 2 : 1) * sign;
+ }
+#endif
+ }
+ else { /* sign < 0 && (flags & INTEGER_PACK_2COMP) */
+ BDIGIT_DBL_SIGNED d;
+ if (wordsize == 1) {
+ *((unsigned char *)words) = (unsigned char)(d = -(BDIGIT_DBL_SIGNED)dp[0]);
+ return (1 < de - dp || FILL_LOWBITS(d, 8) != -1) ? -2 : -1;
+ }
+#if defined(HAVE_UINT16_T) && 2 <= SIZEOF_BDIGIT
+ if (wordsize == 2 && (uintptr_t)words % RUBY_ALIGNOF(uint16_t) == 0) {
+ uint16_t u = (uint16_t)(d = -(BDIGIT_DBL_SIGNED)dp[0]);
+ if (need_swap) u = swap16(u);
+ *((uint16_t *)words) = u;
+ return (wordsize == SIZEOF_BDIGIT && de - dp == 2 && dp[1] == 1 && dp[0] == 0) ? -1 :
+ (1 < de - dp || FILL_LOWBITS(d, 16) != -1) ? -2 : -1;
+ }
+#endif
+#if defined(HAVE_UINT32_T) && 4 <= SIZEOF_BDIGIT
+ if (wordsize == 4 && (uintptr_t)words % RUBY_ALIGNOF(uint32_t) == 0) {
+ uint32_t u = (uint32_t)(d = -(BDIGIT_DBL_SIGNED)dp[0]);
+ if (need_swap) u = swap32(u);
+ *((uint32_t *)words) = u;
+ return (wordsize == SIZEOF_BDIGIT && de - dp == 2 && dp[1] == 1 && dp[0] == 0) ? -1 :
+ (1 < de - dp || FILL_LOWBITS(d, 32) != -1) ? -2 : -1;
+ }
+#endif
+#if defined(HAVE_UINT64_T) && 8 <= SIZEOF_BDIGIT
+ if (wordsize == 8 && (uintptr_t)words % RUBY_ALIGNOF(uint64_t) == 0) {
+ uint64_t u = (uint64_t)(d = -(BDIGIT_DBL_SIGNED)dp[0]);
+ if (need_swap) u = swap64(u);
+ *((uint64_t *)words) = u;
+ return (wordsize == SIZEOF_BDIGIT && de - dp == 2 && dp[1] == 1 && dp[0] == 0) ? -1 :
+ (1 < de - dp || FILL_LOWBITS(d, 64) != -1) ? -2 : -1;
+ }
+#endif
+ }
+ }
+#if !defined(WORDS_BIGENDIAN)
+ if (nails == 0 && SIZEOF_BDIGIT == sizeof(BDIGIT) &&
+ (flags & INTEGER_PACK_WORDORDER_MASK) == INTEGER_PACK_LSWORD_FIRST &&
+ (flags & INTEGER_PACK_BYTEORDER_MASK) != INTEGER_PACK_MSBYTE_FIRST) {
+ size_t src_size = (de - dp) * SIZEOF_BDIGIT;
+ size_t dst_size = numwords * wordsize;
+ int overflow = 0;
+ while (0 < src_size && ((unsigned char *)ds)[src_size-1] == 0)
+ src_size--;
+ if (src_size <= dst_size) {
+ MEMCPY(words, dp, char, src_size);
+ MEMZERO((char*)words + src_size, char, dst_size - src_size);
+ }
+ else {
+ MEMCPY(words, dp, char, dst_size);
+ overflow = 1;
+ }
+ if (sign < 0 && (flags & INTEGER_PACK_2COMP)) {
+ int zero_p = bytes_2comp(words, dst_size);
+ if (zero_p && overflow) {
+ unsigned char *p = (unsigned char *)dp;
+ if (dst_size == src_size-1 &&
+ p[dst_size] == 1) {
+ overflow = 0;
+ }
+ }
+ }
+ if (overflow)
+ sign *= 2;
+ return sign;
+ }
+#endif
+ if (nails == 0 && SIZEOF_BDIGIT == sizeof(BDIGIT) &&
+ wordsize % SIZEOF_BDIGIT == 0 && (uintptr_t)words % RUBY_ALIGNOF(BDIGIT) == 0) {
+ size_t bdigits_per_word = wordsize / SIZEOF_BDIGIT;
+ size_t src_num_bdigits = de - dp;
+ size_t dst_num_bdigits = numwords * bdigits_per_word;
+ int overflow = 0;
+ int mswordfirst_p = (flags & INTEGER_PACK_MSWORD_FIRST) != 0;
+ int msbytefirst_p = (flags & INTEGER_PACK_NATIVE_BYTE_ORDER) ? HOST_BIGENDIAN_P :
+ (flags & INTEGER_PACK_MSBYTE_FIRST) != 0;
+ if (src_num_bdigits <= dst_num_bdigits) {
+ MEMCPY(words, dp, BDIGIT, src_num_bdigits);
+ BDIGITS_ZERO((BDIGIT*)words + src_num_bdigits, dst_num_bdigits - src_num_bdigits);
+ }
+ else {
+ MEMCPY(words, dp, BDIGIT, dst_num_bdigits);
+ overflow = 1;
+ }
+ if (sign < 0 && (flags & INTEGER_PACK_2COMP)) {
+ int zero_p = bary_2comp(words, dst_num_bdigits);
+ if (zero_p && overflow &&
+ dst_num_bdigits == src_num_bdigits-1 &&
+ dp[dst_num_bdigits] == 1)
+ overflow = 0;
+ }
+ if (msbytefirst_p != HOST_BIGENDIAN_P) {
+ size_t i;
+ for (i = 0; i < dst_num_bdigits; i++) {
+ BDIGIT d = ((BDIGIT*)words)[i];
+ ((BDIGIT*)words)[i] = swap_bdigit(d);
+ }
+ }
+ if (mswordfirst_p ? !msbytefirst_p : msbytefirst_p) {
+ size_t i;
+ BDIGIT *p = words;
+ for (i = 0; i < numwords; i++) {
+ bary_swap(p, bdigits_per_word);
+ p += bdigits_per_word;
+ }
+ }
+ if (mswordfirst_p) {
+ bary_swap(words, dst_num_bdigits);
+ }
+ if (overflow)
+ sign *= 2;
+ return sign;
+ }
+ }
+
+ buf = words;
+ bufend = buf + numwords * wordsize;
+
+ if (buf == bufend) {
+ /* overflow if non-zero*/
+ if (!(flags & INTEGER_PACK_2COMP) || 0 <= sign)
+ sign *= 2;
+ else {
+ if (de - dp == 1 && dp[0] == 1)
+ sign = -1; /* val == -1 == -2**(numwords*(wordsize*CHAR_BIT-nails)) */
+ else
+ sign = -2; /* val < -1 == -2**(numwords*(wordsize*CHAR_BIT-nails)) */
+ }
+ }
+ else if (dp == de) {
+ memset(buf, '\0', bufend - buf);
+ }
+ else if (dp < de && buf < bufend) {
+ int word_num_partialbits;
+ size_t word_num_fullbytes;
+
+ ssize_t word_step;
+ size_t byte_start;
+ int byte_step;
+
+ size_t word_start, word_last;
+ unsigned char *wordp, *last_wordp;
+ BDIGIT_DBL dd;
+ int numbits_in_dd;
+
+ integer_pack_loop_setup(numwords, wordsize, nails, flags,
+ &word_num_fullbytes, &word_num_partialbits,
+ &word_start, &word_step, &word_last, &byte_start, &byte_step);
+
+ wordp = buf + word_start;
+ last_wordp = buf + word_last;
+
+ dd = 0;
+ numbits_in_dd = 0;
+
+#define FILL_DD \
+ integer_pack_fill_dd(&dp, &de, &dd, &numbits_in_dd)
+#define TAKE_LOWBITS(n) \
+ integer_pack_take_lowbits(n, &dd, &numbits_in_dd)
+
+ while (1) {
+ size_t index_in_word = 0;
+ unsigned char *bytep = wordp + byte_start;
+ while (index_in_word < word_num_fullbytes) {
+ FILL_DD;
+ *bytep = TAKE_LOWBITS(CHAR_BIT);
+ bytep += byte_step;
+ index_in_word++;
+ }
+ if (word_num_partialbits) {
+ FILL_DD;
+ *bytep = TAKE_LOWBITS(word_num_partialbits);
+ bytep += byte_step;
+ index_in_word++;
+ }
+ while (index_in_word < wordsize) {
+ *bytep = 0;
+ bytep += byte_step;
+ index_in_word++;
+ }
+
+ if (wordp == last_wordp)
+ break;
+
+ wordp += word_step;
+ }
+ FILL_DD;
+ /* overflow tests */
+ if (dp != de || 1 < dd) {
+ /* 2**(numwords*(wordsize*CHAR_BIT-nails)+1) <= abs(val) */
+ sign *= 2;
+ }
+ else if (dd == 1) {
+ /* 2**(numwords*(wordsize*CHAR_BIT-nails)) <= abs(val) < 2**(numwords*(wordsize*CHAR_BIT-nails)+1) */
+ if (!(flags & INTEGER_PACK_2COMP) || 0 <= sign)
+ sign *= 2;
+ else { /* overflow_2comp && sign == -1 */
+ /* test lower bits are all zero. */
+ dp = ds;
+ while (dp < de && *dp == 0)
+ dp++;
+ if (de - dp == 1 && /* only one non-zero word. */
+ POW2_P(*dp)) /* *dp contains only one bit set. */
+ sign = -1; /* val == -2**(numwords*(wordsize*CHAR_BIT-nails)) */
+ else
+ sign = -2; /* val < -2**(numwords*(wordsize*CHAR_BIT-nails)) */
+ }
+ }
+ }
+
+ if ((flags & INTEGER_PACK_2COMP) && (sign < 0 && numwords != 0)) {
+ int word_num_partialbits;
+ size_t word_num_fullbytes;
+
+ ssize_t word_step;
+ size_t byte_start;
+ int byte_step;
+
+ size_t word_start, word_last;
+ unsigned char *wordp, *last_wordp;
+
+ unsigned int partialbits_mask;
+ int carry;
+
+ integer_pack_loop_setup(numwords, wordsize, nails, flags,
+ &word_num_fullbytes, &word_num_partialbits,
+ &word_start, &word_step, &word_last, &byte_start, &byte_step);
+
+ partialbits_mask = (1 << word_num_partialbits) - 1;
+
+ buf = words;
+ wordp = buf + word_start;
+ last_wordp = buf + word_last;
+
+ carry = 1;
+ while (1) {
+ size_t index_in_word = 0;
+ unsigned char *bytep = wordp + byte_start;
+ while (index_in_word < word_num_fullbytes) {
+ carry += (unsigned char)~*bytep;
+ *bytep = (unsigned char)carry;
+ carry >>= CHAR_BIT;
+ bytep += byte_step;
+ index_in_word++;
+ }
+ if (word_num_partialbits) {
+ carry += (*bytep & partialbits_mask) ^ partialbits_mask;
+ *bytep = carry & partialbits_mask;
+ carry >>= word_num_partialbits;
+ bytep += byte_step;
+ index_in_word++;
+ }
+
+ if (wordp == last_wordp)
+ break;
+
+ wordp += word_step;
+ }
+ }
+
+ return sign;
+#undef FILL_DD
+#undef TAKE_LOWBITS
+}
+
+static size_t
+integer_unpack_num_bdigits_small(size_t numwords, size_t wordsize, size_t nails, int *nlp_bits_ret)
+{
+ /* nlp_bits stands for number of leading padding bits */
+ size_t num_bits = (wordsize * CHAR_BIT - nails) * numwords;
+ size_t num_bdigits = roomof(num_bits, BITSPERDIG);
+ *nlp_bits_ret = (int)(num_bdigits * BITSPERDIG - num_bits);
+ return num_bdigits;
+}
+
+static size_t
+integer_unpack_num_bdigits_generic(size_t numwords, size_t wordsize, size_t nails, int *nlp_bits_ret)
+{
+ /* BITSPERDIG = SIZEOF_BDIGIT * CHAR_BIT */
+ /* num_bits = (wordsize * CHAR_BIT - nails) * numwords */
+ /* num_bdigits = roomof(num_bits, BITSPERDIG) */
+
+ /* num_bits = CHAR_BIT * (wordsize * numwords) - nails * numwords = CHAR_BIT * num_bytes1 - nails * numwords */
+ size_t num_bytes1 = wordsize * numwords;
+
+ /* q1 * CHAR_BIT + r1 = numwords */
+ size_t q1 = numwords / CHAR_BIT;
+ size_t r1 = numwords % CHAR_BIT;
+
+ /* num_bits = CHAR_BIT * num_bytes1 - nails * (q1 * CHAR_BIT + r1) = CHAR_BIT * num_bytes2 - nails * r1 */
+ size_t num_bytes2 = num_bytes1 - nails * q1;
+
+ /* q2 * CHAR_BIT + r2 = nails */
+ size_t q2 = nails / CHAR_BIT;
+ size_t r2 = nails % CHAR_BIT;
+
+ /* num_bits = CHAR_BIT * num_bytes2 - (q2 * CHAR_BIT + r2) * r1 = CHAR_BIT * num_bytes3 - r1 * r2 */
+ size_t num_bytes3 = num_bytes2 - q2 * r1;
+
+ /* q3 * BITSPERDIG + r3 = num_bytes3 */
+ size_t q3 = num_bytes3 / BITSPERDIG;
+ size_t r3 = num_bytes3 % BITSPERDIG;
+
+ /* num_bits = CHAR_BIT * (q3 * BITSPERDIG + r3) - r1 * r2 = BITSPERDIG * num_digits1 + CHAR_BIT * r3 - r1 * r2 */
+ size_t num_digits1 = CHAR_BIT * q3;
+
+ /*
+ * if CHAR_BIT * r3 >= r1 * r2
+ * CHAR_BIT * r3 - r1 * r2 = CHAR_BIT * BITSPERDIG - (CHAR_BIT * BITSPERDIG - (CHAR_BIT * r3 - r1 * r2))
+ * q4 * BITSPERDIG + r4 = CHAR_BIT * BITSPERDIG - (CHAR_BIT * r3 - r1 * r2)
+ * num_bits = BITSPERDIG * num_digits1 + CHAR_BIT * BITSPERDIG - (q4 * BITSPERDIG + r4) = BITSPERDIG * num_digits2 - r4
+ * else
+ * q4 * BITSPERDIG + r4 = -(CHAR_BIT * r3 - r1 * r2)
+ * num_bits = BITSPERDIG * num_digits1 - (q4 * BITSPERDIG + r4) = BITSPERDIG * num_digits2 - r4
+ * end
+ */
+
+ if (CHAR_BIT * r3 >= r1 * r2) {
+ size_t tmp1 = CHAR_BIT * BITSPERDIG - (CHAR_BIT * r3 - r1 * r2);
+ size_t q4 = tmp1 / BITSPERDIG;
+ int r4 = (int)(tmp1 % BITSPERDIG);
+ size_t num_digits2 = num_digits1 + CHAR_BIT - q4;
+ *nlp_bits_ret = r4;
+ return num_digits2;
+ }
+ else {
+ size_t tmp1 = r1 * r2 - CHAR_BIT * r3;
+ size_t q4 = tmp1 / BITSPERDIG;
+ int r4 = (int)(tmp1 % BITSPERDIG);
+ size_t num_digits2 = num_digits1 - q4;
+ *nlp_bits_ret = r4;
+ return num_digits2;
+ }
+}
+
+static size_t
+integer_unpack_num_bdigits(size_t numwords, size_t wordsize, size_t nails, int *nlp_bits_ret)
+{
+ size_t num_bdigits;
+
+ if (numwords <= (SIZE_MAX - (BITSPERDIG-1)) / CHAR_BIT / wordsize) {
+ num_bdigits = integer_unpack_num_bdigits_small(numwords, wordsize, nails, nlp_bits_ret);
+#ifdef DEBUG_INTEGER_PACK
+ {
+ int nlp_bits1;
+ size_t num_bdigits1 = integer_unpack_num_bdigits_generic(numwords, wordsize, nails, &nlp_bits1);
+ assert(num_bdigits == num_bdigits1);
+ assert(*nlp_bits_ret == nlp_bits1);
+ (void)num_bdigits1;
+ }
+#endif
+ }
+ else {
+ num_bdigits = integer_unpack_num_bdigits_generic(numwords, wordsize, nails, nlp_bits_ret);
+ }
+ return num_bdigits;
+}
+
+static inline void
+integer_unpack_push_bits(int data, int numbits, BDIGIT_DBL *ddp, int *numbits_in_dd_p, BDIGIT **dpp)
+{
+ (*ddp) |= ((BDIGIT_DBL)data) << (*numbits_in_dd_p);
+ *numbits_in_dd_p += numbits;
+ while (BITSPERDIG <= *numbits_in_dd_p) {
+ *(*dpp)++ = BIGLO(*ddp);
+ *ddp = BIGDN(*ddp);
+ *numbits_in_dd_p -= BITSPERDIG;
+ }
+}
+
+static int
+integer_unpack_single_bdigit(BDIGIT u, size_t size, int flags, BDIGIT *dp)
+{
+ int sign;
+ if (flags & INTEGER_PACK_2COMP) {
+ sign = (flags & INTEGER_PACK_NEGATIVE) ?
+ ((size == SIZEOF_BDIGIT && u == 0) ? -2 : -1) :
+ ((u >> (size * CHAR_BIT - 1)) ? -1 : 1);
+ if (sign < 0) {
+ u |= LSHIFTX(BDIGMAX, size * CHAR_BIT);
+ u = BIGLO(1 + ~u);
+ }
+ }
+ else
+ sign = (flags & INTEGER_PACK_NEGATIVE) ? -1 : 1;
+ *dp = u;
+ return sign;
+}
+
+#ifdef HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED
+#define reinterpret_cast(type, value) (type) \
+ __builtin_assume_aligned((value), sizeof(*(type)NULL));
+#else
+#define reinterpret_cast(type, value) (type)value
+#endif
+
+static int
+bary_unpack_internal(BDIGIT *bdigits, size_t num_bdigits, const void *words, size_t numwords, size_t wordsize, size_t nails, int flags, int nlp_bits)
+{
+ int sign;
+ const unsigned char *buf = words;
+ BDIGIT *dp;
+ BDIGIT *de;
+
+ dp = bdigits;
+ de = dp + num_bdigits;
+
+ if (!(flags & INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION)) {
+ if (nails == 0 && numwords == 1) {
+ int need_swap = wordsize != 1 &&
+ (flags & INTEGER_PACK_BYTEORDER_MASK) != INTEGER_PACK_NATIVE_BYTE_ORDER &&
+ ((flags & INTEGER_PACK_MSBYTE_FIRST) ? !HOST_BIGENDIAN_P : HOST_BIGENDIAN_P);
+ if (wordsize == 1) {
+ return integer_unpack_single_bdigit(*(uint8_t *)buf, sizeof(uint8_t), flags, dp);
+ }
+#if defined(HAVE_UINT16_T) && 2 <= SIZEOF_BDIGIT
+ if (wordsize == 2 && (uintptr_t)words % RUBY_ALIGNOF(uint16_t) == 0) {
+ uint16_t u = *reinterpret_cast(const uint16_t *, buf);
+ return integer_unpack_single_bdigit(need_swap ? swap16(u) : u, sizeof(uint16_t), flags, dp);
+ }
+#endif
+#if defined(HAVE_UINT32_T) && 4 <= SIZEOF_BDIGIT
+ if (wordsize == 4 && (uintptr_t)words % RUBY_ALIGNOF(uint32_t) == 0) {
+ uint32_t u = *reinterpret_cast(const uint32_t *, buf);
+ return integer_unpack_single_bdigit(need_swap ? swap32(u) : u, sizeof(uint32_t), flags, dp);
+ }
+#endif
+#if defined(HAVE_UINT64_T) && 8 <= SIZEOF_BDIGIT
+ if (wordsize == 8 && (uintptr_t)words % RUBY_ALIGNOF(uint64_t) == 0) {
+ uint64_t u = *reinterpret_cast(const uint64_t *, buf);
+ return integer_unpack_single_bdigit(need_swap ? swap64(u) : u, sizeof(uint64_t), flags, dp);
+ }
+#endif
+#undef reinterpret_cast
+ }
+#if !defined(WORDS_BIGENDIAN)
+ if (nails == 0 && SIZEOF_BDIGIT == sizeof(BDIGIT) &&
+ (flags & INTEGER_PACK_WORDORDER_MASK) == INTEGER_PACK_LSWORD_FIRST &&
+ (flags & INTEGER_PACK_BYTEORDER_MASK) != INTEGER_PACK_MSBYTE_FIRST) {
+ size_t src_size = numwords * wordsize;
+ size_t dst_size = num_bdigits * SIZEOF_BDIGIT;
+ MEMCPY(dp, words, char, src_size);
+ if (flags & INTEGER_PACK_2COMP) {
+ if (flags & INTEGER_PACK_NEGATIVE) {
+ int zero_p;
+ memset((char*)dp + src_size, 0xff, dst_size - src_size);
+ zero_p = bary_2comp(dp, num_bdigits);
+ sign = zero_p ? -2 : -1;
+ }
+ else if (buf[src_size-1] >> (CHAR_BIT-1)) {
+ memset((char*)dp + src_size, 0xff, dst_size - src_size);
+ bary_2comp(dp, num_bdigits);
+ sign = -1;
+ }
+ else {
+ MEMZERO((char*)dp + src_size, char, dst_size - src_size);
+ sign = 1;
+ }
+ }
+ else {
+ MEMZERO((char*)dp + src_size, char, dst_size - src_size);
+ sign = (flags & INTEGER_PACK_NEGATIVE) ? -1 : 1;
+ }
+ return sign;
+ }
+#endif
+ if (nails == 0 && SIZEOF_BDIGIT == sizeof(BDIGIT) &&
+ wordsize % SIZEOF_BDIGIT == 0) {
+ size_t bdigits_per_word = wordsize / SIZEOF_BDIGIT;
+ int mswordfirst_p = (flags & INTEGER_PACK_MSWORD_FIRST) != 0;
+ int msbytefirst_p = (flags & INTEGER_PACK_NATIVE_BYTE_ORDER) ? HOST_BIGENDIAN_P :
+ (flags & INTEGER_PACK_MSBYTE_FIRST) != 0;
+ MEMCPY(dp, words, BDIGIT, numwords*bdigits_per_word);
+ if (mswordfirst_p) {
+ bary_swap(dp, num_bdigits);
+ }
+ if (mswordfirst_p ? !msbytefirst_p : msbytefirst_p) {
+ size_t i;
+ BDIGIT *p = dp;
+ for (i = 0; i < numwords; i++) {
+ bary_swap(p, bdigits_per_word);
+ p += bdigits_per_word;
+ }
+ }
+ if (msbytefirst_p != HOST_BIGENDIAN_P) {
+ BDIGIT *p;
+ for (p = dp; p < de; p++) {
+ BDIGIT d = *p;
+ *p = swap_bdigit(d);
+ }
+ }
+ if (flags & INTEGER_PACK_2COMP) {
+ if (flags & INTEGER_PACK_NEGATIVE) {
+ int zero_p = bary_2comp(dp, num_bdigits);
+ sign = zero_p ? -2 : -1;
+ }
+ else if (BDIGIT_MSB(de[-1])) {
+ bary_2comp(dp, num_bdigits);
+ sign = -1;
+ }
+ else {
+ sign = 1;
+ }
+ }
+ else {
+ sign = (flags & INTEGER_PACK_NEGATIVE) ? -1 : 1;
+ }
+ return sign;
+ }
+ }
+
+ if (num_bdigits != 0) {
+ int word_num_partialbits;
+ size_t word_num_fullbytes;
+
+ ssize_t word_step;
+ size_t byte_start;
+ int byte_step;
+
+ size_t word_start, word_last;
+ const unsigned char *wordp, *last_wordp;
+ BDIGIT_DBL dd;
+ int numbits_in_dd;
+
+ integer_pack_loop_setup(numwords, wordsize, nails, flags,
+ &word_num_fullbytes, &word_num_partialbits,
+ &word_start, &word_step, &word_last, &byte_start, &byte_step);
+
+ wordp = buf + word_start;
+ last_wordp = buf + word_last;
+
+ dd = 0;
+ numbits_in_dd = 0;
+
+#define PUSH_BITS(data, numbits) \
+ integer_unpack_push_bits(data, numbits, &dd, &numbits_in_dd, &dp)
+
+ while (1) {
+ size_t index_in_word = 0;
+ const unsigned char *bytep = wordp + byte_start;
+ while (index_in_word < word_num_fullbytes) {
+ PUSH_BITS(*bytep, CHAR_BIT);
+ bytep += byte_step;
+ index_in_word++;
+ }
+ if (word_num_partialbits) {
+ PUSH_BITS(*bytep & ((1 << word_num_partialbits) - 1), word_num_partialbits);
+ bytep += byte_step;
+ index_in_word++;
+ }
+
+ if (wordp == last_wordp)
+ break;
+
+ wordp += word_step;
+ }
+ if (dd)
+ *dp++ = (BDIGIT)dd;
+ assert(dp <= de);
+ while (dp < de)
+ *dp++ = 0;
+#undef PUSH_BITS
+ }
+
+ if (!(flags & INTEGER_PACK_2COMP)) {
+ sign = (flags & INTEGER_PACK_NEGATIVE) ? -1 : 1;
+ }
+ else {
+ if (nlp_bits) {
+ if ((flags & INTEGER_PACK_NEGATIVE) ||
+ (bdigits[num_bdigits-1] >> (BITSPERDIG - nlp_bits - 1))) {
+ bdigits[num_bdigits-1] |= BIGLO(BDIGMAX << (BITSPERDIG - nlp_bits));
+ sign = -1;
+ }
+ else {
+ sign = 1;
+ }
+ }
+ else {
+ if (flags & INTEGER_PACK_NEGATIVE) {
+ sign = bary_zero_p(bdigits, num_bdigits) ? -2 : -1;
+ }
+ else {
+ if (num_bdigits != 0 && BDIGIT_MSB(bdigits[num_bdigits-1]))
+ sign = -1;
+ else
+ sign = 1;
+ }
+ }
+ if (sign == -1 && num_bdigits != 0) {
+ bary_2comp(bdigits, num_bdigits);
+ }
+ }
+
+ return sign;
+}
+
+static void
+bary_unpack(BDIGIT *bdigits, size_t num_bdigits, const void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
+{
+ size_t num_bdigits0;
+ int nlp_bits;
+ int sign;
+
+ validate_integer_pack_format(numwords, wordsize, nails, flags,
+ INTEGER_PACK_MSWORD_FIRST|
+ INTEGER_PACK_LSWORD_FIRST|
+ INTEGER_PACK_MSBYTE_FIRST|
+ INTEGER_PACK_LSBYTE_FIRST|
+ INTEGER_PACK_NATIVE_BYTE_ORDER|
+ INTEGER_PACK_2COMP|
+ INTEGER_PACK_FORCE_BIGNUM|
+ INTEGER_PACK_NEGATIVE|
+ INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION);
+
+ num_bdigits0 = integer_unpack_num_bdigits(numwords, wordsize, nails, &nlp_bits);
+
+ assert(num_bdigits0 <= num_bdigits);
+
+ sign = bary_unpack_internal(bdigits, num_bdigits0, words, numwords, wordsize, nails, flags, nlp_bits);
+
+ if (num_bdigits0 < num_bdigits) {
+ BDIGITS_ZERO(bdigits + num_bdigits0, num_bdigits - num_bdigits0);
+ if (sign == -2) {
+ bdigits[num_bdigits0] = 1;
+ }
+ }
+}
+
+static int
+bary_subb(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, int borrow)
+{
+ BDIGIT_DBL_SIGNED num;
+ size_t i;
+ size_t sn;
+
+ assert(xn <= zn);
+ assert(yn <= zn);
+
+ sn = xn < yn ? xn : yn;
+
+ num = borrow ? -1 : 0;
+ for (i = 0; i < sn; i++) {
+ num += (BDIGIT_DBL_SIGNED)xds[i] - yds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ if (yn <= xn) {
+ for (; i < xn; i++) {
+ if (num == 0) goto num_is_zero;
+ num += xds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ }
+ else {
+ for (; i < yn; i++) {
+ num -= yds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ }
+ if (num == 0) goto num_is_zero;
+ for (; i < zn; i++) {
+ zds[i] = BDIGMAX;
+ }
+ return 1;
+
+ num_is_zero:
+ if (xds == zds && xn == zn)
+ return 0;
+ for (; i < xn; i++) {
+ zds[i] = xds[i];
+ }
+ for (; i < zn; i++) {
+ zds[i] = 0;
+ }
+ return 0;
+}
+
+static int
+bary_sub(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ return bary_subb(zds, zn, xds, xn, yds, yn, 0);
+}
+
+static int
+bary_sub_one(BDIGIT *zds, size_t zn)
+{
+ return bary_subb(zds, zn, zds, zn, NULL, 0, 1);
+}
+
+static int
+bary_addc(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, int carry)
+{
+ BDIGIT_DBL num;
+ size_t i;
+
+ assert(xn <= zn);
+ assert(yn <= zn);
+
+ if (xn > yn) {
+ const BDIGIT *tds;
+ tds = xds; xds = yds; yds = tds;
+ i = xn; xn = yn; yn = i;
+ }
+
+ num = carry ? 1 : 0;
+ for (i = 0; i < xn; i++) {
+ num += (BDIGIT_DBL)xds[i] + yds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ for (; i < yn; i++) {
+ if (num == 0) goto num_is_zero;
+ num += yds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ for (; i < zn; i++) {
+ if (num == 0) goto num_is_zero;
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ return num != 0;
+
+ num_is_zero:
+ if (yds == zds && yn == zn)
+ return 0;
+ for (; i < yn; i++) {
+ zds[i] = yds[i];
+ }
+ for (; i < zn; i++) {
+ zds[i] = 0;
+ }
+ return 0;
+}
+
+static int
+bary_add(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ return bary_addc(zds, zn, xds, xn, yds, yn, 0);
+}
+
+static int
+bary_add_one(BDIGIT *ds, size_t n)
+{
+ size_t i;
+ for (i = 0; i < n; i++) {
+ BDIGIT_DBL n = ds[i];
+ n += 1;
+ ds[i] = BIGLO(n);
+ if (ds[i] != 0)
+ return 0;
+ }
+ return 1;
+}
+
+static void
+bary_mul_single(BDIGIT *zds, size_t zn, BDIGIT x, BDIGIT y)
+{
+ BDIGIT_DBL n;
+
+ assert(2 <= zn);
+
+ n = (BDIGIT_DBL)x * y;
+ bdigitdbl2bary(zds, 2, n);
+ BDIGITS_ZERO(zds + 2, zn - 2);
+}
+
+static int
+bary_muladd_1xN(BDIGIT *zds, size_t zn, BDIGIT x, const BDIGIT *yds, size_t yn)
+{
+ BDIGIT_DBL n;
+ BDIGIT_DBL dd;
+ size_t j;
+
+ assert(zn > yn);
+
+ if (x == 0)
+ return 0;
+ dd = x;
+ n = 0;
+ for (j = 0; j < yn; j++) {
+ BDIGIT_DBL ee = n + dd * yds[j];
+ if (ee) {
+ n = zds[j] + ee;
+ zds[j] = BIGLO(n);
+ n = BIGDN(n);
+ }
+ else {
+ n = 0;
+ }
+
+ }
+ for (; j < zn; j++) {
+ if (n == 0)
+ break;
+ n += zds[j];
+ zds[j] = BIGLO(n);
+ n = BIGDN(n);
+ }
+ return n != 0;
+}
+
+static BDIGIT_DBL_SIGNED
+bigdivrem_mulsub(BDIGIT *zds, size_t zn, BDIGIT x, const BDIGIT *yds, size_t yn)
+{
+ size_t i;
+ BDIGIT_DBL t2;
+ BDIGIT_DBL_SIGNED num;
+
+ assert(zn == yn + 1);
+
+ num = 0;
+ t2 = 0;
+ i = 0;
+
+ do {
+ BDIGIT_DBL_SIGNED ee;
+ t2 += (BDIGIT_DBL)yds[i] * x;
+ ee = num - BIGLO(t2);
+ num = (BDIGIT_DBL_SIGNED)zds[i] + ee;
+ if (ee) zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ t2 = BIGDN(t2);
+ } while (++i < yn);
+ num -= (BDIGIT_DBL_SIGNED)t2;
+ num += (BDIGIT_DBL_SIGNED)zds[yn]; /* borrow from high digit; don't update */
+ return num;
+}
+
+static int
+bary_mulsub_1xN(BDIGIT *zds, size_t zn, BDIGIT x, const BDIGIT *yds, size_t yn)
{
- NEWOBJ(big, struct RBignum);
- OBJSETUP(big, klass, T_BIGNUM);
- big->sign = sign;
- big->len = len;
- big->digits = ALLOC_N(USHORT, len);
+ BDIGIT_DBL_SIGNED num;
- return (VALUE)big;
+ assert(zn == yn + 1);
+
+ num = bigdivrem_mulsub(zds, zn, x, yds, yn);
+ zds[yn] = BIGLO(num);
+ if (BIGDN(num))
+ return 1;
+ return 0;
}
-#define bignew(len,sign) bignew_1(rb_cBignum,len,sign)
+static void
+bary_mul_normal(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ size_t i;
+
+ assert(xn + yn <= zn);
+
+ BDIGITS_ZERO(zds, zn);
+ for (i = 0; i < xn; i++) {
+ bary_muladd_1xN(zds+i, zn-i, xds[i], yds, yn);
+ }
+}
VALUE
-rb_big_clone(x)
- VALUE x;
+rb_big_mul_normal(VALUE x, VALUE y)
{
- VALUE z = bignew_1(CLASS_OF(x), RBIGNUM(x)->len, RBIGNUM(x)->sign);
+ size_t xn = BIGNUM_LEN(x), yn = BIGNUM_LEN(y), zn = xn + yn;
+ VALUE z = bignew(zn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+ bary_mul_normal(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
- MEMCPY(BDIGITS(z), BDIGITS(x), USHORT, RBIGNUM(x)->len);
+/* efficient squaring (2 times faster than normal multiplication)
+ * ref: Handbook of Applied Cryptography, Algorithm 14.16
+ * https://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf
+ */
+static void
+bary_sq_fast(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn)
+{
+ size_t i, j;
+ BDIGIT_DBL c, v, w;
+ BDIGIT vl;
+ int vh;
+
+ assert(xn * 2 <= zn);
+
+ BDIGITS_ZERO(zds, zn);
+
+ if (xn == 0)
+ return;
+
+ for (i = 0; i < xn-1; i++) {
+ v = (BDIGIT_DBL)xds[i];
+ if (!v)
+ continue;
+ c = (BDIGIT_DBL)zds[i + i] + v * v;
+ zds[i + i] = BIGLO(c);
+ c = BIGDN(c);
+ v *= 2;
+ vl = BIGLO(v);
+ vh = (int)BIGDN(v);
+ for (j = i + 1; j < xn; j++) {
+ w = (BDIGIT_DBL)xds[j];
+ c += (BDIGIT_DBL)zds[i + j] + vl * w;
+ zds[i + j] = BIGLO(c);
+ c = BIGDN(c);
+ if (vh)
+ c += w;
+ }
+ if (c) {
+ c += (BDIGIT_DBL)zds[i + xn];
+ zds[i + xn] = BIGLO(c);
+ c = BIGDN(c);
+ if (c)
+ zds[i + xn + 1] += (BDIGIT)c;
+ }
+ }
+
+ /* i == xn-1 */
+ v = (BDIGIT_DBL)xds[i];
+ if (!v)
+ return;
+ c = (BDIGIT_DBL)zds[i + i] + v * v;
+ zds[i + i] = BIGLO(c);
+ c = BIGDN(c);
+ if (c) {
+ zds[i + xn] += BIGLO(c);
+ }
+}
+
+VALUE
+rb_big_sq_fast(VALUE x)
+{
+ size_t xn = BIGNUM_LEN(x), zn = 2 * xn;
+ VALUE z = bignew(zn, 1);
+ bary_sq_fast(BDIGITS(z), zn, BDIGITS(x), xn);
+ RB_GC_GUARD(x);
return z;
}
-void
-rb_big_2comp(x) /* get 2's complement */
- VALUE x;
+static inline size_t
+max_size(size_t a, size_t b)
+{
+ return (a > b ? a : b);
+}
+
+/* balancing multiplication by slicing larger argument */
+static void
+bary_mul_balance_with_mulfunc(BDIGIT *const zds, const size_t zn,
+ const BDIGIT *const xds, const size_t xn,
+ const BDIGIT *const yds, const size_t yn,
+ BDIGIT *wds, size_t wn, mulfunc_t *const mulfunc)
+{
+ VALUE work = 0;
+ size_t n;
+
+ assert(xn + yn <= zn);
+ assert(xn <= yn);
+ assert(!KARATSUBA_BALANCED(xn, yn) || !TOOM3_BALANCED(xn, yn));
+
+ BDIGITS_ZERO(zds, xn);
+
+ if (wn < xn) {
+ /* The condition when a new buffer is needed:
+ * 1. (2(xn+r) > zn-(yn-r)) => (2xn+r > zn-yn), at the last
+ * iteration (or r == 0)
+ * 2. (2(xn+xn) > zn-(yn-r-xn)) => (3xn-r > zn-yn), at the
+ * previous iteration.
+ */
+ const size_t r = yn % xn;
+ if (2*xn + yn + max_size(xn-r, r) > zn) {
+ wn = xn;
+ wds = ALLOCV_N(BDIGIT, work, wn);
+ }
+ }
+
+ n = 0;
+ while (yn > n) {
+ const size_t r = (xn > (yn - n) ? (yn - n) : xn);
+ const size_t tn = (xn + r);
+ if (2 * (xn + r) <= zn - n) {
+ BDIGIT *const tds = zds + n + xn + r;
+ mulfunc(tds, tn, xds, xn, yds + n, r, wds, wn);
+ BDIGITS_ZERO(zds + n + xn, r);
+ bary_add(zds + n, tn,
+ zds + n, tn,
+ tds, tn);
+ }
+ else {
+ BDIGIT *const tds = zds + n;
+ if (wn < xn) {
+ /* xn is invariant, only once here */
+#if 0
+ wn = xn;
+ wds = ALLOCV_N(BDIGIT, work, wn);
+#else
+ rb_bug("wds is not enough: %" PRIdSIZE " for %" PRIdSIZE, wn, xn);
+#endif
+ }
+ MEMCPY(wds, zds + n, BDIGIT, xn);
+ mulfunc(tds, tn, xds, xn, yds + n, r, wds+xn, wn-xn);
+ bary_add(zds + n, tn,
+ zds + n, tn,
+ wds, xn);
+ }
+ n += r;
+ }
+ BDIGITS_ZERO(zds+xn+yn, zn - (xn+yn));
+
+ if (work)
+ ALLOCV_END(work);
+}
+
+VALUE
+rb_big_mul_balance(VALUE x, VALUE y)
+{
+ size_t xn = BIGNUM_LEN(x), yn = BIGNUM_LEN(y), zn = xn + yn;
+ VALUE z = bignew(zn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+ bary_mul_balance_with_mulfunc(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn, NULL, 0, bary_mul_toom3_start);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
+
+/* multiplication by karatsuba method */
+static void
+bary_mul_karatsuba(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
+{
+ VALUE work = 0;
+
+ size_t n;
+ int sub_p, borrow, carry1, carry2, carry3;
+
+ int odd_y = 0;
+ int odd_xy = 0;
+ int sq;
+
+ const BDIGIT *xds0, *xds1, *yds0, *yds1;
+ BDIGIT *zds0, *zds1, *zds2, *zds3;
+
+ assert(xn + yn <= zn);
+ assert(xn <= yn);
+ assert(yn < 2 * xn);
+
+ sq = xds == yds && xn == yn;
+
+ if (yn & 1) {
+ odd_y = 1;
+ yn--;
+ if (yn < xn) {
+ odd_xy = 1;
+ xn--;
+ }
+ }
+
+ n = yn / 2;
+
+ assert(n < xn);
+
+ if (wn < n) {
+ /* This function itself needs only n BDIGITs for work area.
+ * However this function calls bary_mul_karatsuba and
+ * bary_mul_balance recursively.
+ * 2n BDIGITs are enough to avoid allocations in
+ * the recursively called functions.
+ */
+ wn = 2*n;
+ wds = ALLOCV_N(BDIGIT, work, wn);
+ }
+
+ /* Karatsuba algorithm:
+ *
+ * x = x0 + r*x1
+ * y = y0 + r*y1
+ * z = x*y
+ * = (x0 + r*x1) * (y0 + r*y1)
+ * = x0*y0 + r*(x1*y0 + x0*y1) + r*r*x1*y1
+ * = x0*y0 + r*(x0*y0 + x1*y1 - (x1-x0)*(y1-y0)) + r*r*x1*y1
+ * = x0*y0 + r*(x0*y0 + x1*y1 - (x0-x1)*(y0-y1)) + r*r*x1*y1
+ */
+
+ xds0 = xds;
+ xds1 = xds + n;
+ yds0 = yds;
+ yds1 = yds + n;
+ zds0 = zds;
+ zds1 = zds + n;
+ zds2 = zds + 2*n;
+ zds3 = zds + 3*n;
+
+ sub_p = 1;
+
+ /* zds0:? zds1:? zds2:? zds3:? wds:? */
+
+ if (bary_sub(zds0, n, xds, n, xds+n, xn-n)) {
+ bary_2comp(zds0, n);
+ sub_p = !sub_p;
+ }
+
+ /* zds0:|x1-x0| zds1:? zds2:? zds3:? wds:? */
+
+ if (sq) {
+ sub_p = 1;
+ bary_mul_karatsuba_start(zds1, 2*n, zds0, n, zds0, n, wds, wn);
+ }
+ else {
+ if (bary_sub(wds, n, yds, n, yds+n, n)) {
+ bary_2comp(wds, n);
+ sub_p = !sub_p;
+ }
+
+ /* zds0:|x1-x0| zds1:? zds2:? zds3:? wds:|y1-y0| */
+
+ bary_mul_karatsuba_start(zds1, 2*n, zds0, n, wds, n, wds+n, wn-n);
+ }
+
+ /* zds0:|x1-x0| zds1,zds2:|x1-x0|*|y1-y0| zds3:? wds:|y1-y0| */
+
+ borrow = 0;
+ if (sub_p) {
+ borrow = !bary_2comp(zds1, 2*n);
+ }
+ /* zds0:|x1-x0| zds1,zds2:-?|x1-x0|*|y1-y0| zds3:? wds:|y1-y0| */
+
+ MEMCPY(wds, zds1, BDIGIT, n);
+
+ /* zds0:|x1-x0| zds1,zds2:-?|x1-x0|*|y1-y0| zds3:? wds:lo(-?|x1-x0|*|y1-y0|) */
+
+ bary_mul_karatsuba_start(zds0, 2*n, xds0, n, yds0, n, wds+n, wn-n);
+
+ /* zds0,zds1:x0*y0 zds2:hi(-?|x1-x0|*|y1-y0|) zds3:? wds:lo(-?|x1-x0|*|y1-y0|) */
+
+ carry1 = bary_add(wds, n, wds, n, zds0, n);
+ carry1 = bary_addc(zds2, n, zds2, n, zds1, n, carry1);
+
+ /* zds0,zds1:x0*y0 zds2:hi(x0*y0-?|x1-x0|*|y1-y0|) zds3:? wds:lo(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ carry2 = bary_add(zds1, n, zds1, n, wds, n);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|) zds2:hi(x0*y0-?|x1-x0|*|y1-y0|) zds3:? wds:lo(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ MEMCPY(wds, zds2, BDIGIT, n);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|) zds2:_ zds3:? wds:hi(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ bary_mul_karatsuba_start(zds2, zn-2*n, xds1, xn-n, yds1, n, wds+n, wn-n);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|) zds2,zds3:x1*y1 wds:hi(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ carry3 = bary_add(zds1, n, zds1, n, zds2, n);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|)+lo(x1*y1) zds2,zds3:x1*y1 wds:hi(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ carry3 = bary_addc(zds2, n, zds2, n, zds3, (4*n < zn ? n : zn-3*n), carry3);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|)+lo(x1*y1) zds2,zds3:x1*y1+hi(x1*y1) wds:hi(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ bary_add(zds2, zn-2*n, zds2, zn-2*n, wds, n);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|)+lo(x1*y1) zds2,zds3:x1*y1+hi(x1*y1)+hi(x0*y0-?|x1-x0|*|y1-y0|) wds:_ */
+
+ if (carry2)
+ bary_add_one(zds2, zn-2*n);
+
+ if (carry1 + carry3 - borrow < 0)
+ bary_sub_one(zds3, zn-3*n);
+ else if (carry1 + carry3 - borrow > 0) {
+ BDIGIT c = carry1 + carry3 - borrow;
+ bary_add(zds3, zn-3*n, zds3, zn-3*n, &c, 1);
+ }
+
+ /*
+ if (SIZEOF_BDIGIT * zn <= 16) {
+ uint128_t z, x, y;
+ ssize_t i;
+ for (x = 0, i = xn-1; 0 <= i; i--) { x <<= SIZEOF_BDIGIT*CHAR_BIT; x |= xds[i]; }
+ for (y = 0, i = yn-1; 0 <= i; i--) { y <<= SIZEOF_BDIGIT*CHAR_BIT; y |= yds[i]; }
+ for (z = 0, i = zn-1; 0 <= i; i--) { z <<= SIZEOF_BDIGIT*CHAR_BIT; z |= zds[i]; }
+ assert(z == x * y);
+ }
+ */
+
+ if (odd_xy) {
+ bary_muladd_1xN(zds+yn, zn-yn, yds[yn], xds, xn);
+ bary_muladd_1xN(zds+xn, zn-xn, xds[xn], yds, yn+1);
+ }
+ else if (odd_y) {
+ bary_muladd_1xN(zds+yn, zn-yn, yds[yn], xds, xn);
+ }
+
+ if (work)
+ ALLOCV_END(work);
+}
+
+VALUE
+rb_big_mul_karatsuba(VALUE x, VALUE y)
+{
+ size_t xn = BIGNUM_LEN(x), yn = BIGNUM_LEN(y), zn = xn + yn;
+ VALUE z = bignew(zn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+ if (!((xn <= yn && yn < 2) || KARATSUBA_BALANCED(xn, yn)))
+ rb_raise(rb_eArgError, "unexpected bignum length for karatsuba");
+ bary_mul_karatsuba(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn, NULL, 0);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
+
+static void
+bary_mul_toom3(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
+{
+ size_t n;
+ size_t wnc;
+ VALUE work = 0;
+
+ /* "p" stands for "positive". Actually it means "non-negative", though. */
+ size_t x0n; const BDIGIT *x0ds;
+ size_t x1n; const BDIGIT *x1ds;
+ size_t x2n; const BDIGIT *x2ds;
+ size_t y0n; const BDIGIT *y0ds;
+ size_t y1n; const BDIGIT *y1ds;
+ size_t y2n; const BDIGIT *y2ds;
+
+ size_t u1n; BDIGIT *u1ds; int u1p;
+ size_t u2n; BDIGIT *u2ds; int u2p;
+ size_t u3n; BDIGIT *u3ds; int u3p;
+
+ size_t v1n; BDIGIT *v1ds; int v1p;
+ size_t v2n; BDIGIT *v2ds; int v2p;
+ size_t v3n; BDIGIT *v3ds; int v3p;
+
+ size_t t0n; BDIGIT *t0ds; int t0p;
+ size_t t1n; BDIGIT *t1ds; int t1p;
+ size_t t2n; BDIGIT *t2ds; int t2p;
+ size_t t3n; BDIGIT *t3ds; int t3p;
+ size_t t4n; BDIGIT *t4ds; int t4p;
+
+ size_t z0n; BDIGIT *z0ds;
+ size_t z1n; BDIGIT *z1ds; int z1p;
+ size_t z2n; BDIGIT *z2ds; int z2p;
+ size_t z3n; BDIGIT *z3ds; int z3p;
+ size_t z4n; BDIGIT *z4ds;
+
+ size_t zzn; BDIGIT *zzds;
+
+ int sq = xds == yds && xn == yn;
+
+ assert(xn <= yn); /* assume y >= x */
+ assert(xn + yn <= zn);
+
+ n = (yn + 2) / 3;
+ assert(2*n < xn);
+
+ wnc = 0;
+
+ wnc += (u1n = n+1); /* BITSPERDIG*n+2 bits */
+ wnc += (u2n = n+1); /* BITSPERDIG*n+1 bits */
+ wnc += (u3n = n+1); /* BITSPERDIG*n+3 bits */
+ wnc += (v1n = n+1); /* BITSPERDIG*n+2 bits */
+ wnc += (v2n = n+1); /* BITSPERDIG*n+1 bits */
+ wnc += (v3n = n+1); /* BITSPERDIG*n+3 bits */
+
+ wnc += (t0n = 2*n); /* BITSPERDIG*2*n bits */
+ wnc += (t1n = 2*n+2); /* BITSPERDIG*2*n+4 bits but bary_mul needs u1n+v1n */
+ wnc += (t2n = 2*n+2); /* BITSPERDIG*2*n+2 bits but bary_mul needs u2n+v2n */
+ wnc += (t3n = 2*n+2); /* BITSPERDIG*2*n+6 bits but bary_mul needs u3n+v3n */
+ wnc += (t4n = 2*n); /* BITSPERDIG*2*n bits */
+
+ wnc += (z1n = 2*n+1); /* BITSPERDIG*2*n+5 bits */
+ wnc += (z2n = 2*n+1); /* BITSPERDIG*2*n+6 bits */
+ wnc += (z3n = 2*n+1); /* BITSPERDIG*2*n+8 bits */
+
+ if (wn < wnc) {
+ wn = wnc * 3 / 2; /* Allocate working memory for whole recursion at once. */
+ wds = ALLOCV_N(BDIGIT, work, wn);
+ }
+
+ u1ds = wds; wds += u1n;
+ u2ds = wds; wds += u2n;
+ u3ds = wds; wds += u3n;
+
+ v1ds = wds; wds += v1n;
+ v2ds = wds; wds += v2n;
+ v3ds = wds; wds += v3n;
+
+ t0ds = wds; wds += t0n;
+ t1ds = wds; wds += t1n;
+ t2ds = wds; wds += t2n;
+ t3ds = wds; wds += t3n;
+ t4ds = wds; wds += t4n;
+
+ z1ds = wds; wds += z1n;
+ z2ds = wds; wds += z2n;
+ z3ds = wds; wds += z3n;
+
+ wn -= wnc;
+
+ zzds = u1ds;
+ zzn = 6*n+1;
+
+ x0n = n;
+ x1n = n;
+ x2n = xn - 2*n;
+ x0ds = xds;
+ x1ds = xds + n;
+ x2ds = xds + 2*n;
+
+ if (sq) {
+ y0n = x0n;
+ y1n = x1n;
+ y2n = x2n;
+ y0ds = x0ds;
+ y1ds = x1ds;
+ y2ds = x2ds;
+ }
+ else {
+ y0n = n;
+ y1n = n;
+ y2n = yn - 2*n;
+ y0ds = yds;
+ y1ds = yds + n;
+ y2ds = yds + 2*n;
+ }
+
+ /*
+ * ref. https://en.wikipedia.org/wiki/Toom%E2%80%93Cook_multiplication
+ *
+ * x(b) = x0 * b^0 + x1 * b^1 + x2 * b^2
+ * y(b) = y0 * b^0 + y1 * b^1 + y2 * b^2
+ *
+ * z(b) = x(b) * y(b)
+ * z(b) = z0 * b^0 + z1 * b^1 + z2 * b^2 + z3 * b^3 + z4 * b^4
+ * where:
+ * z0 = x0 * y0
+ * z1 = x0 * y1 + x1 * y0
+ * z2 = x0 * y2 + x1 * y1 + x2 * y0
+ * z3 = x1 * y2 + x2 * y1
+ * z4 = x2 * y2
+ *
+ * Toom3 method (a.k.a. Toom-Cook method):
+ * (Step1) calculating 5 points z(b0), z(b1), z(b2), z(b3), z(b4),
+ * where:
+ * b0 = 0, b1 = 1, b2 = -1, b3 = -2, b4 = inf,
+ * z(0) = x(0) * y(0) = x0 * y0
+ * z(1) = x(1) * y(1) = (x0 + x1 + x2) * (y0 + y1 + y2)
+ * z(-1) = x(-1) * y(-1) = (x0 - x1 + x2) * (y0 - y1 + y2)
+ * z(-2) = x(-2) * y(-2) = (x0 - 2 * (x1 - 2 * x2)) * (y0 - 2 * (y1 - 2 * y2))
+ * z(inf) = x(inf) * y(inf) = x2 * y2
+ *
+ * (Step2) interpolating z0, z1, z2, z3 and z4.
+ *
+ * (Step3) Substituting base value into b of the polynomial z(b),
+ */
+
+ /*
+ * [Step1] calculating 5 points z(b0), z(b1), z(b2), z(b3), z(b4)
+ */
+
+ /* u1 <- x0 + x2 */
+ bary_add(u1ds, u1n, x0ds, x0n, x2ds, x2n);
+ u1p = 1;
+
+ /* x(-1) : u2 <- u1 - x1 = x0 - x1 + x2 */
+ if (bary_sub(u2ds, u2n, u1ds, u1n, x1ds, x1n)) {
+ bary_2comp(u2ds, u2n);
+ u2p = 0;
+ }
+ else {
+ u2p = 1;
+ }
+
+ /* x(1) : u1 <- u1 + x1 = x0 + x1 + x2 */
+ bary_add(u1ds, u1n, u1ds, u1n, x1ds, x1n);
+
+ /* x(-2) : u3 <- 2 * (u2 + x2) - x0 = x0 - 2 * (x1 - 2 * x2) */
+ u3p = 1;
+ if (u2p) {
+ bary_add(u3ds, u3n, u2ds, u2n, x2ds, x2n);
+ }
+ else if (bary_sub(u3ds, u3n, x2ds, x2n, u2ds, u2n)) {
+ bary_2comp(u3ds, u3n);
+ u3p = 0;
+ }
+ bary_small_lshift(u3ds, u3ds, u3n, 1);
+ if (!u3p) {
+ bary_add(u3ds, u3n, u3ds, u3n, x0ds, x0n);
+ }
+ else if (bary_sub(u3ds, u3n, u3ds, u3n, x0ds, x0n)) {
+ bary_2comp(u3ds, u3n);
+ u3p = 0;
+ }
+
+ if (sq) {
+ v1n = u1n; v1ds = u1ds; v1p = u1p;
+ v2n = u2n; v2ds = u2ds; v2p = u2p;
+ v3n = u3n; v3ds = u3ds; v3p = u3p;
+ }
+ else {
+ /* v1 <- y0 + y2 */
+ bary_add(v1ds, v1n, y0ds, y0n, y2ds, y2n);
+ v1p = 1;
+
+ /* y(-1) : v2 <- v1 - y1 = y0 - y1 + y2 */
+ v2p = 1;
+ if (bary_sub(v2ds, v2n, v1ds, v1n, y1ds, y1n)) {
+ bary_2comp(v2ds, v2n);
+ v2p = 0;
+ }
+
+ /* y(1) : v1 <- v1 + y1 = y0 + y1 + y2 */
+ bary_add(v1ds, v1n, v1ds, v1n, y1ds, y1n);
+
+ /* y(-2) : v3 <- 2 * (v2 + y2) - y0 = y0 - 2 * (y1 - 2 * y2) */
+ v3p = 1;
+ if (v2p) {
+ bary_add(v3ds, v3n, v2ds, v2n, y2ds, y2n);
+ }
+ else if (bary_sub(v3ds, v3n, y2ds, y2n, v2ds, v2n)) {
+ bary_2comp(v3ds, v3n);
+ v3p = 0;
+ }
+ bary_small_lshift(v3ds, v3ds, v3n, 1);
+ if (!v3p) {
+ bary_add(v3ds, v3n, v3ds, v3n, y0ds, y0n);
+ }
+ else if (bary_sub(v3ds, v3n, v3ds, v3n, y0ds, y0n)) {
+ bary_2comp(v3ds, v3n);
+ v3p = 0;
+ }
+ }
+
+ /* z(0) : t0 <- x0 * y0 */
+ bary_mul_toom3_start(t0ds, t0n, x0ds, x0n, y0ds, y0n, wds, wn);
+ t0p = 1;
+
+ /* z(1) : t1 <- u1 * v1 */
+ bary_mul_toom3_start(t1ds, t1n, u1ds, u1n, v1ds, v1n, wds, wn);
+ t1p = u1p == v1p;
+ assert(t1ds[t1n-1] == 0);
+ t1n--;
+
+ /* z(-1) : t2 <- u2 * v2 */
+ bary_mul_toom3_start(t2ds, t2n, u2ds, u2n, v2ds, v2n, wds, wn);
+ t2p = u2p == v2p;
+ assert(t2ds[t2n-1] == 0);
+ t2n--;
+
+ /* z(-2) : t3 <- u3 * v3 */
+ bary_mul_toom3_start(t3ds, t3n, u3ds, u3n, v3ds, v3n, wds, wn);
+ t3p = u3p == v3p;
+ assert(t3ds[t3n-1] == 0);
+ t3n--;
+
+ /* z(inf) : t4 <- x2 * y2 */
+ bary_mul_toom3_start(t4ds, t4n, x2ds, x2n, y2ds, y2n, wds, wn);
+ t4p = 1;
+
+ /*
+ * [Step2] interpolating z0, z1, z2, z3 and z4.
+ */
+
+ /* z0 <- z(0) == t0 */
+ z0n = t0n; z0ds = t0ds;
+
+ /* z4 <- z(inf) == t4 */
+ z4n = t4n; z4ds = t4ds;
+
+ /* z3 <- (z(-2) - z(1)) / 3 == (t3 - t1) / 3 */
+ if (t3p == t1p) {
+ z3p = t3p;
+ if (bary_sub(z3ds, z3n, t3ds, t3n, t1ds, t1n)) {
+ bary_2comp(z3ds, z3n);
+ z3p = !z3p;
+ }
+ }
+ else {
+ z3p = t3p;
+ bary_add(z3ds, z3n, t3ds, t3n, t1ds, t1n);
+ }
+ bigdivrem_single(z3ds, z3ds, z3n, 3);
+
+ /* z1 <- (z(1) - z(-1)) / 2 == (t1 - t2) / 2 */
+ if (t1p == t2p) {
+ z1p = t1p;
+ if (bary_sub(z1ds, z1n, t1ds, t1n, t2ds, t2n)) {
+ bary_2comp(z1ds, z1n);
+ z1p = !z1p;
+ }
+ }
+ else {
+ z1p = t1p;
+ bary_add(z1ds, z1n, t1ds, t1n, t2ds, t2n);
+ }
+ bary_small_rshift(z1ds, z1ds, z1n, 1, 0);
+
+ /* z2 <- z(-1) - z(0) == t2 - t0 */
+ if (t2p == t0p) {
+ z2p = t2p;
+ if (bary_sub(z2ds, z2n, t2ds, t2n, t0ds, t0n)) {
+ bary_2comp(z2ds, z2n);
+ z2p = !z2p;
+ }
+ }
+ else {
+ z2p = t2p;
+ bary_add(z2ds, z2n, t2ds, t2n, t0ds, t0n);
+ }
+
+ /* z3 <- (z2 - z3) / 2 + 2 * z(inf) == (z2 - z3) / 2 + 2 * t4 */
+ if (z2p == z3p) {
+ z3p = z2p;
+ if (bary_sub(z3ds, z3n, z2ds, z2n, z3ds, z3n)) {
+ bary_2comp(z3ds, z3n);
+ z3p = !z3p;
+ }
+ }
+ else {
+ z3p = z2p;
+ bary_add(z3ds, z3n, z2ds, z2n, z3ds, z3n);
+ }
+ bary_small_rshift(z3ds, z3ds, z3n, 1, 0);
+ if (z3p == t4p) {
+ bary_muladd_1xN(z3ds, z3n, 2, t4ds, t4n);
+ }
+ else {
+ if (bary_mulsub_1xN(z3ds, z3n, 2, t4ds, t4n)) {
+ bary_2comp(z3ds, z3n);
+ z3p = !z3p;
+ }
+ }
+
+ /* z2 <- z2 + z1 - z(inf) == z2 + z1 - t4 */
+ if (z2p == z1p) {
+ bary_add(z2ds, z2n, z2ds, z2n, z1ds, z1n);
+ }
+ else {
+ if (bary_sub(z2ds, z2n, z2ds, z2n, z1ds, z1n)) {
+ bary_2comp(z2ds, z2n);
+ z2p = !z2p;
+ }
+ }
+
+ if (z2p == t4p) {
+ if (bary_sub(z2ds, z2n, z2ds, z2n, t4ds, t4n)) {
+ bary_2comp(z2ds, z2n);
+ z2p = !z2p;
+ }
+ }
+ else {
+ bary_add(z2ds, z2n, z2ds, z2n, t4ds, t4n);
+ }
+
+ /* z1 <- z1 - z3 */
+ if (z1p == z3p) {
+ if (bary_sub(z1ds, z1n, z1ds, z1n, z3ds, z3n)) {
+ bary_2comp(z1ds, z1n);
+ z1p = !z1p;
+ }
+ }
+ else {
+ bary_add(z1ds, z1n, z1ds, z1n, z3ds, z3n);
+ }
+
+ /*
+ * [Step3] Substituting base value into b of the polynomial z(b),
+ */
+
+ MEMCPY(zzds, z0ds, BDIGIT, z0n);
+ BDIGITS_ZERO(zzds + z0n, 4*n - z0n);
+ MEMCPY(zzds + 4*n, z4ds, BDIGIT, z4n);
+ BDIGITS_ZERO(zzds + 4*n + z4n, zzn - (4*n + z4n));
+ if (z1p)
+ bary_add(zzds + n, zzn - n, zzds + n, zzn - n, z1ds, z1n);
+ else
+ bary_sub(zzds + n, zzn - n, zzds + n, zzn - n, z1ds, z1n);
+ if (z2p)
+ bary_add(zzds + 2*n, zzn - 2*n, zzds + 2*n, zzn - 2*n, z2ds, z2n);
+ else
+ bary_sub(zzds + 2*n, zzn - 2*n, zzds + 2*n, zzn - 2*n, z2ds, z2n);
+ if (z3p)
+ bary_add(zzds + 3*n, zzn - 3*n, zzds + 3*n, zzn - 3*n, z3ds, z3n);
+ else
+ bary_sub(zzds + 3*n, zzn - 3*n, zzds + 3*n, zzn - 3*n, z3ds, z3n);
+
+ BARY_TRUNC(zzds, zzn);
+ MEMCPY(zds, zzds, BDIGIT, zzn);
+ BDIGITS_ZERO(zds + zzn, zn - zzn);
+
+ if (work)
+ ALLOCV_END(work);
+}
+
+VALUE
+rb_big_mul_toom3(VALUE x, VALUE y)
+{
+ size_t xn = BIGNUM_LEN(x), yn = BIGNUM_LEN(y), zn = xn + yn;
+ VALUE z = bignew(zn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+ if (xn > yn || yn < 3 || !TOOM3_BALANCED(xn,yn))
+ rb_raise(rb_eArgError, "unexpected bignum length for toom3");
+ bary_mul_toom3(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn, NULL, 0);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
+
+#if USE_GMP
+static inline void
+bdigits_to_mpz(mpz_t mp, const BDIGIT *digits, size_t len)
+{
+ const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGIT)*CHAR_BIT;
+ mpz_import(mp, len, -1, sizeof(BDIGIT), 0, nails, digits);
+}
+
+static inline void
+bdigits_from_mpz(mpz_t mp, BDIGIT *digits, size_t *len)
+{
+ const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGIT)*CHAR_BIT;
+ mpz_export(digits, len, -1, sizeof(BDIGIT), 0, nails, mp);
+}
+
+static void
+bary_mul_gmp(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ mpz_t x, y, z;
+ size_t count;
+
+ assert(xn + yn <= zn);
+
+ mpz_init(x);
+ mpz_init(y);
+ mpz_init(z);
+ bdigits_to_mpz(x, xds, xn);
+ if (xds == yds && xn == yn) {
+ mpz_mul(z, x, x);
+ }
+ else {
+ bdigits_to_mpz(y, yds, yn);
+ mpz_mul(z, x, y);
+ }
+ bdigits_from_mpz(z, zds, &count);
+ BDIGITS_ZERO(zds+count, zn-count);
+ mpz_clear(x);
+ mpz_clear(y);
+ mpz_clear(z);
+}
+
+VALUE
+rb_big_mul_gmp(VALUE x, VALUE y)
+{
+ size_t xn = BIGNUM_LEN(x), yn = BIGNUM_LEN(y), zn = xn + yn;
+ VALUE z = bignew(zn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+ bary_mul_gmp(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
+#endif
+
+static void
+bary_short_mul(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ assert(xn + yn <= zn);
+
+ if (xn == 1 && yn == 1) {
+ bary_mul_single(zds, zn, xds[0], yds[0]);
+ }
+ else {
+ bary_mul_normal(zds, zn, xds, xn, yds, yn);
+ rb_thread_check_ints();
+ }
+}
+
+/* determine whether a bignum is sparse or not by random sampling */
+static inline int
+bary_sparse_p(const BDIGIT *ds, size_t n)
+{
+ long c = 0;
+
+ if ( ds[2 * n / 5]) c++;
+ if (c <= 1 && ds[ n / 2]) c++;
+ if (c <= 1 && ds[3 * n / 5]) c++;
+
+ return (c <= 1) ? 1 : 0;
+}
+
+static int
+bary_mul_precheck(BDIGIT **zdsp, size_t *znp, const BDIGIT **xdsp, size_t *xnp, const BDIGIT **ydsp, size_t *ynp)
+{
+ size_t nlsz; /* number of least significant zero BDIGITs */
+
+ BDIGIT *zds = *zdsp;
+ size_t zn = *znp;
+ const BDIGIT *xds = *xdsp;
+ size_t xn = *xnp;
+ const BDIGIT *yds = *ydsp;
+ size_t yn = *ynp;
+
+ assert(xn + yn <= zn);
+
+ nlsz = 0;
+
+ while (0 < xn) {
+ if (xds[xn-1] == 0) {
+ xn--;
+ }
+ else {
+ do {
+ if (xds[0] != 0)
+ break;
+ xds++;
+ xn--;
+ nlsz++;
+ } while (0 < xn);
+ break;
+ }
+ }
+
+ while (0 < yn) {
+ if (yds[yn-1] == 0) {
+ yn--;
+ }
+ else {
+ do {
+ if (yds[0] != 0)
+ break;
+ yds++;
+ yn--;
+ nlsz++;
+ } while (0 < yn);
+ break;
+ }
+ }
+
+ if (nlsz) {
+ BDIGITS_ZERO(zds, nlsz);
+ zds += nlsz;
+ zn -= nlsz;
+ }
+
+ /* make sure that y is longer than x */
+ if (xn > yn) {
+ const BDIGIT *tds;
+ size_t tn;
+ tds = xds; xds = yds; yds = tds;
+ tn = xn; xn = yn; yn = tn;
+ }
+ assert(xn <= yn);
+
+ if (xn <= 1) {
+ if (xn == 0) {
+ BDIGITS_ZERO(zds, zn);
+ return 1;
+ }
+
+ if (xds[0] == 1) {
+ MEMCPY(zds, yds, BDIGIT, yn);
+ BDIGITS_ZERO(zds+yn, zn-yn);
+ return 1;
+ }
+ if (POW2_P(xds[0])) {
+ zds[yn] = bary_small_lshift(zds, yds, yn, bit_length(xds[0])-1);
+ BDIGITS_ZERO(zds+yn+1, zn-yn-1);
+ return 1;
+ }
+ if (yn == 1 && yds[0] == 1) {
+ zds[0] = xds[0];
+ BDIGITS_ZERO(zds+1, zn-1);
+ return 1;
+ }
+ bary_mul_normal(zds, zn, xds, xn, yds, yn);
+ return 1;
+ }
+
+ *zdsp = zds;
+ *znp = zn;
+ *xdsp = xds;
+ *xnp = xn;
+ *ydsp = yds;
+ *ynp = yn;
+
+ return 0;
+}
+
+static void
+bary_mul_karatsuba_branch(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
+{
+ /* normal multiplication when x is small */
+ if (xn < KARATSUBA_MUL_DIGITS) {
+ goto normal;
+ }
+
+ /* normal multiplication when x or y is a sparse bignum */
+ if (bary_sparse_p(xds, xn)) goto normal;
+ if (bary_sparse_p(yds, yn)) {
+ bary_short_mul(zds, zn, yds, yn, xds, xn);
+ return;
+ }
+
+ /* balance multiplication by slicing y when x is much smaller than y */
+ if (!KARATSUBA_BALANCED(xn, yn)) {
+ bary_mul_balance_with_mulfunc(zds, zn, xds, xn, yds, yn, wds, wn, bary_mul_karatsuba_start);
+ return;
+ }
+
+ /* multiplication by karatsuba method */
+ bary_mul_karatsuba(zds, zn, xds, xn, yds, yn, wds, wn);
+ return;
+
+ normal:
+ if (xds == yds && xn == yn) {
+ bary_sq_fast(zds, zn, xds, xn);
+ }
+ else {
+ bary_short_mul(zds, zn, xds, xn, yds, yn);
+ }
+}
+
+static void
+bary_mul_karatsuba_start(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
{
- long i = RBIGNUM(x)->len;
- USHORT *ds = BDIGITS(x);
- long num;
+ if (bary_mul_precheck(&zds, &zn, &xds, &xn, &yds, &yn))
+ return;
+
+ bary_mul_karatsuba_branch(zds, zn, xds, xn, yds, yn, wds, wn);
+}
+
+static void
+bary_mul_toom3_branch(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
+{
+ if (xn < TOOM3_MUL_DIGITS) {
+ bary_mul_karatsuba_branch(zds, zn, xds, xn, yds, yn, wds, wn);
+ return;
+ }
+
+ if (!TOOM3_BALANCED(xn, yn)) {
+ bary_mul_balance_with_mulfunc(zds, zn, xds, xn, yds, yn, wds, wn, bary_mul_toom3_start);
+ return;
+ }
+
+ bary_mul_toom3(zds, zn, xds, xn, yds, yn, wds, wn);
+}
+
+static void
+bary_mul_toom3_start(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
+{
+ if (bary_mul_precheck(&zds, &zn, &xds, &xn, &yds, &yn))
+ return;
+
+ bary_mul_toom3_branch(zds, zn, xds, xn, yds, yn, wds, wn);
+}
+
+static void
+bary_mul(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ if (xn <= yn) {
+ if (xn < NAIVE_MUL_DIGITS) {
+ if (xds == yds && xn == yn)
+ bary_sq_fast(zds, zn, xds, xn);
+ else
+ bary_short_mul(zds, zn, xds, xn, yds, yn);
+ return;
+ }
+ }
+ else {
+ if (yn < NAIVE_MUL_DIGITS) {
+ bary_short_mul(zds, zn, yds, yn, xds, xn);
+ return;
+ }
+ }
+
+#if USE_GMP
+ bary_mul_gmp(zds, zn, xds, xn, yds, yn);
+#else
+ bary_mul_toom3_start(zds, zn, xds, xn, yds, yn, NULL, 0);
+#endif
+}
+
+struct big_div_struct {
+ size_t yn, zn;
+ BDIGIT *yds, *zds;
+ volatile VALUE stop;
+};
+
+static void *
+bigdivrem1(void *ptr)
+{
+ struct big_div_struct *bds = (struct big_div_struct*)ptr;
+ size_t yn = bds->yn;
+ size_t zn = bds->zn;
+ BDIGIT *yds = bds->yds, *zds = bds->zds;
+ BDIGIT_DBL_SIGNED num;
+ BDIGIT q;
- while (i--) ds[i] = ~ds[i];
- i = 0; num = 1;
do {
- num += ds[i];
- ds[i++] = BIGLO(num);
- num = BIGDN(num);
- } while (i < RBIGNUM(x)->len);
- if (ds[0] == 1 || ds[0] == 0) {
- for (i=1; i<RBIGNUM(x)->len; i++) {
- if (ds[i] != 0) return;
- }
- REALLOC_N(RBIGNUM(x)->digits, USHORT, RBIGNUM(x)->len++);
- ds = BDIGITS(x);
- ds[RBIGNUM(x)->len-1] = 1;
+ if (bds->stop) {
+ bds->zn = zn;
+ return 0;
+ }
+ if (zds[zn-1] == yds[yn-1]) q = BDIGMAX;
+ else q = (BDIGIT)((BIGUP(zds[zn-1]) + zds[zn-2])/yds[yn-1]);
+ if (q) {
+ num = bigdivrem_mulsub(zds+zn-(yn+1), yn+1,
+ q,
+ yds, yn);
+ while (num) { /* "add back" required */
+ q--;
+ num = bary_add(zds+zn-(yn+1), yn,
+ zds+zn-(yn+1), yn,
+ yds, yn);
+ num--;
+ }
+ }
+ zn--;
+ zds[zn] = q;
+ } while (zn > yn);
+ return 0;
+}
+
+/* async-signal-safe */
+static void
+rb_big_stop(void *ptr)
+{
+ struct big_div_struct *bds = ptr;
+ bds->stop = Qtrue;
+}
+
+static BDIGIT
+bigdivrem_single1(BDIGIT *qds, const BDIGIT *xds, size_t xn, BDIGIT x_higher_bdigit, BDIGIT y)
+{
+ assert(0 < xn);
+ assert(x_higher_bdigit < y);
+ if (POW2_P(y)) {
+ BDIGIT r;
+ r = xds[0] & (y-1);
+ bary_small_rshift(qds, xds, xn, bit_length(y)-1, x_higher_bdigit);
+ return r;
}
+ else {
+ size_t i;
+ BDIGIT_DBL t2;
+ t2 = x_higher_bdigit;
+ for (i = 0; i < xn; i++) {
+ t2 = BIGUP(t2) + xds[xn - i - 1];
+ qds[xn - i - 1] = (BDIGIT)(t2 / y);
+ t2 %= y;
+ }
+ return (BDIGIT)t2;
+ }
+}
+
+static BDIGIT
+bigdivrem_single(BDIGIT *qds, const BDIGIT *xds, size_t xn, BDIGIT y)
+{
+ return bigdivrem_single1(qds, xds, xn, 0, y);
+}
+
+static void
+bigdivrem_restoring(BDIGIT *zds, size_t zn, BDIGIT *yds, size_t yn)
+{
+ struct big_div_struct bds;
+ size_t ynzero;
+
+ assert(yn < zn);
+ assert(BDIGIT_MSB(yds[yn-1]));
+ assert(zds[zn-1] < yds[yn-1]);
+
+ for (ynzero = 0; !yds[ynzero]; ynzero++);
+
+ if (ynzero+1 == yn) {
+ BDIGIT r;
+ r = bigdivrem_single1(zds+yn, zds+ynzero, zn-yn, zds[zn-1], yds[ynzero]);
+ zds[ynzero] = r;
+ return;
+ }
+
+ bds.yn = yn - ynzero;
+ bds.zds = zds + ynzero;
+ bds.yds = yds + ynzero;
+ bds.stop = Qfalse;
+ bds.zn = zn - ynzero;
+ if (bds.zn > 10000 || bds.yn > 10000) {
+ retry:
+ bds.stop = Qfalse;
+ rb_nogvl(bigdivrem1, &bds, rb_big_stop, &bds, RB_NOGVL_UBF_ASYNC_SAFE);
+
+ if (bds.stop == Qtrue) {
+ /* execute trap handler, but exception was not raised. */
+ goto retry;
+ }
+ }
+ else {
+ bigdivrem1(&bds);
+ }
+}
+
+static void
+bary_divmod_normal(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ int shift;
+ BDIGIT *zds, *yyds;
+ size_t zn;
+ VALUE tmpyz = 0;
+
+ assert(yn < xn || (xn == yn && yds[yn - 1] <= xds[xn - 1]));
+ assert(qds ? (xn - yn + 1) <= qn : 1);
+ assert(rds ? yn <= rn : 1);
+
+ zn = xn + BIGDIVREM_EXTRA_WORDS;
+
+ shift = nlz(yds[yn-1]);
+ if (shift) {
+ int alloc_y = !rds;
+ int alloc_z = !qds || qn < zn;
+ if (alloc_y && alloc_z) {
+ yyds = ALLOCV_N(BDIGIT, tmpyz, yn+zn);
+ zds = yyds + yn;
+ }
+ else {
+ yyds = alloc_y ? ALLOCV_N(BDIGIT, tmpyz, yn) : rds;
+ zds = alloc_z ? ALLOCV_N(BDIGIT, tmpyz, zn) : qds;
+ }
+ zds[xn] = bary_small_lshift(zds, xds, xn, shift);
+ bary_small_lshift(yyds, yds, yn, shift);
+ }
+ else {
+ if (qds && zn <= qn)
+ zds = qds;
+ else
+ zds = ALLOCV_N(BDIGIT, tmpyz, zn);
+ MEMCPY(zds, xds, BDIGIT, xn);
+ zds[xn] = 0;
+ /* bigdivrem_restoring will not modify y.
+ * So use yds directly. */
+ yyds = (BDIGIT *)yds;
+ }
+
+ bigdivrem_restoring(zds, zn, yyds, yn);
+
+ if (rds) {
+ if (shift)
+ bary_small_rshift(rds, zds, yn, shift, 0);
+ else
+ MEMCPY(rds, zds, BDIGIT, yn);
+ BDIGITS_ZERO(rds+yn, rn-yn);
+ }
+
+ if (qds) {
+ size_t j = zn - yn;
+ MEMMOVE(qds, zds+yn, BDIGIT, j);
+ BDIGITS_ZERO(qds+j, qn-j);
+ }
+
+ if (tmpyz)
+ ALLOCV_END(tmpyz);
+}
+
+VALUE
+rb_big_divrem_normal(VALUE x, VALUE y)
+{
+ size_t xn = BIGNUM_LEN(x), yn = BIGNUM_LEN(y), qn, rn;
+ BDIGIT *xds = BDIGITS(x), *yds = BDIGITS(y), *qds, *rds;
+ VALUE q, r;
+
+ BARY_TRUNC(yds, yn);
+ if (yn == 0)
+ rb_num_zerodiv();
+ BARY_TRUNC(xds, xn);
+
+ if (xn < yn || (xn == yn && xds[xn - 1] < yds[yn - 1]))
+ return rb_assoc_new(LONG2FIX(0), x);
+
+ qn = xn + BIGDIVREM_EXTRA_WORDS;
+ q = bignew(qn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+ qds = BDIGITS(q);
+
+ rn = yn;
+ r = bignew(rn, BIGNUM_SIGN(x));
+ rds = BDIGITS(r);
+
+ bary_divmod_normal(qds, qn, rds, rn, xds, xn, yds, yn);
+
+ bigtrunc(q);
+ bigtrunc(r);
+
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+
+ return rb_assoc_new(q, r);
+}
+
+#if USE_GMP
+static void
+bary_divmod_gmp(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ mpz_t x, y, q, r;
+ size_t count;
+
+ assert(yn < xn || (xn == yn && yds[yn - 1] <= xds[xn - 1]));
+ assert(qds ? (xn - yn + 1) <= qn : 1);
+ assert(rds ? yn <= rn : 1);
+ assert(qds || rds);
+
+ mpz_init(x);
+ mpz_init(y);
+ if (qds) mpz_init(q);
+ if (rds) mpz_init(r);
+
+ bdigits_to_mpz(x, xds, xn);
+ bdigits_to_mpz(y, yds, yn);
+
+ if (!rds) {
+ mpz_fdiv_q(q, x, y);
+ }
+ else if (!qds) {
+ mpz_fdiv_r(r, x, y);
+ }
+ else {
+ mpz_fdiv_qr(q, r, x, y);
+ }
+
+ mpz_clear(x);
+ mpz_clear(y);
+
+ if (qds) {
+ bdigits_from_mpz(q, qds, &count);
+ BDIGITS_ZERO(qds+count, qn-count);
+ mpz_clear(q);
+ }
+
+ if (rds) {
+ bdigits_from_mpz(r, rds, &count);
+ BDIGITS_ZERO(rds+count, rn-count);
+ mpz_clear(r);
+ }
+}
+
+VALUE
+rb_big_divrem_gmp(VALUE x, VALUE y)
+{
+ size_t xn = BIGNUM_LEN(x), yn = BIGNUM_LEN(y), qn, rn;
+ BDIGIT *xds = BDIGITS(x), *yds = BDIGITS(y), *qds, *rds;
+ VALUE q, r;
+
+ BARY_TRUNC(yds, yn);
+ if (yn == 0)
+ rb_num_zerodiv();
+ BARY_TRUNC(xds, xn);
+
+ if (xn < yn || (xn == yn && xds[xn - 1] < yds[yn - 1]))
+ return rb_assoc_new(LONG2FIX(0), x);
+
+ qn = xn - yn + 1;
+ q = bignew(qn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+ qds = BDIGITS(q);
+
+ rn = yn;
+ r = bignew(rn, BIGNUM_SIGN(x));
+ rds = BDIGITS(r);
+
+ bary_divmod_gmp(qds, qn, rds, rn, xds, xn, yds, yn);
+
+ bigtrunc(q);
+ bigtrunc(r);
+
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+
+ return rb_assoc_new(q, r);
+}
+#endif
+
+static void
+bary_divmod_branch(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+#if USE_GMP
+ if (GMP_DIV_DIGITS < xn) {
+ bary_divmod_gmp(qds, qn, rds, rn, xds, xn, yds, yn);
+ return;
+ }
+#endif
+ bary_divmod_normal(qds, qn, rds, rn, xds, xn, yds, yn);
+}
+
+static void
+bary_divmod(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ assert(xn <= qn);
+ assert(yn <= rn);
+
+ BARY_TRUNC(yds, yn);
+ if (yn == 0)
+ rb_num_zerodiv();
+
+ BARY_TRUNC(xds, xn);
+ if (xn == 0) {
+ BDIGITS_ZERO(qds, qn);
+ BDIGITS_ZERO(rds, rn);
+ return;
+ }
+
+ if (xn < yn || (xn == yn && xds[xn - 1] < yds[yn - 1])) {
+ MEMCPY(rds, xds, BDIGIT, xn);
+ BDIGITS_ZERO(rds+xn, rn-xn);
+ BDIGITS_ZERO(qds, qn);
+ }
+ else if (yn == 1) {
+ MEMCPY(qds, xds, BDIGIT, xn);
+ BDIGITS_ZERO(qds+xn, qn-xn);
+ rds[0] = bigdivrem_single(qds, xds, xn, yds[0]);
+ BDIGITS_ZERO(rds+1, rn-1);
+ }
+ else if (xn == 2 && yn == 2) {
+ BDIGIT_DBL x = bary2bdigitdbl(xds, 2);
+ BDIGIT_DBL y = bary2bdigitdbl(yds, 2);
+ BDIGIT_DBL q = x / y;
+ BDIGIT_DBL r = x % y;
+ qds[0] = BIGLO(q);
+ qds[1] = BIGLO(BIGDN(q));
+ BDIGITS_ZERO(qds+2, qn-2);
+ rds[0] = BIGLO(r);
+ rds[1] = BIGLO(BIGDN(r));
+ BDIGITS_ZERO(rds+2, rn-2);
+ }
+ else {
+ bary_divmod_branch(qds, qn, rds, rn, xds, xn, yds, yn);
+ }
+}
+
+
+#ifndef BIGNUM_DEBUG
+# define BIGNUM_DEBUG (0+RUBY_DEBUG)
+#endif
+
+static int
+bigzero_p(VALUE x)
+{
+ return bary_zero_p(BDIGITS(x), BIGNUM_LEN(x));
+}
+
+int
+rb_bigzero_p(VALUE x)
+{
+ return BIGZEROP(x);
+}
+
+int
+rb_cmpint(VALUE val, VALUE a, VALUE b)
+{
+ if (NIL_P(val)) {
+ rb_cmperr(a, b);
+ }
+ if (FIXNUM_P(val)) {
+ long l = FIX2LONG(val);
+ if (l > 0) return 1;
+ if (l < 0) return -1;
+ return 0;
+ }
+ if (RB_BIGNUM_TYPE_P(val)) {
+ if (BIGZEROP(val)) return 0;
+ if (BIGNUM_SIGN(val)) return 1;
+ return -1;
+ }
+ if (RTEST(rb_funcall(val, '>', 1, INT2FIX(0)))) return 1;
+ if (RTEST(rb_funcall(val, '<', 1, INT2FIX(0)))) return -1;
+ return 0;
+}
+
+#define BIGNUM_SET_LEN(b,l) \
+ (BIGNUM_EMBED_P(b) ? \
+ (void)(RBASIC(b)->flags = \
+ (RBASIC(b)->flags & ~BIGNUM_EMBED_LEN_MASK) | \
+ ((l) << BIGNUM_EMBED_LEN_SHIFT)) : \
+ (void)(RBIGNUM(b)->as.heap.len = (l)))
+
+static void
+rb_big_realloc(VALUE big, size_t len)
+{
+ BDIGIT *ds;
+ if (BIGNUM_EMBED_P(big)) {
+ if (BIGNUM_EMBED_LEN_MAX < len) {
+ ds = ALLOC_N(BDIGIT, len);
+ MEMCPY(ds, RBIGNUM(big)->as.ary, BDIGIT, BIGNUM_EMBED_LEN_MAX);
+ RBIGNUM(big)->as.heap.len = BIGNUM_LEN(big);
+ RBIGNUM(big)->as.heap.digits = ds;
+ FL_UNSET_RAW(big, BIGNUM_EMBED_FLAG);
+ }
+ }
+ else {
+ if (len <= BIGNUM_EMBED_LEN_MAX) {
+ ds = RBIGNUM(big)->as.heap.digits;
+ FL_SET_RAW(big, BIGNUM_EMBED_FLAG);
+ BIGNUM_SET_LEN(big, len);
+ (void)VALGRIND_MAKE_MEM_UNDEFINED((void*)RBIGNUM(big)->as.ary, sizeof(RBIGNUM(big)->as.ary));
+ if (ds) {
+ MEMCPY(RBIGNUM(big)->as.ary, ds, BDIGIT, len);
+ xfree(ds);
+ }
+ }
+ else {
+ if (BIGNUM_LEN(big) == 0) {
+ RBIGNUM(big)->as.heap.digits = ALLOC_N(BDIGIT, len);
+ }
+ else {
+ REALLOC_N(RBIGNUM(big)->as.heap.digits, BDIGIT, len);
+ }
+ }
+ }
+}
+
+void
+rb_big_resize(VALUE big, size_t len)
+{
+ rb_big_realloc(big, len);
+ BIGNUM_SET_LEN(big, len);
}
static VALUE
-bignorm(x)
- VALUE x;
+bignew_1(VALUE klass, size_t len, int sign)
+{
+ NEWOBJ_OF(big, struct RBignum, klass, T_BIGNUM | (RGENGC_WB_PROTECTED_BIGNUM ? FL_WB_PROTECTED : 0));
+ VALUE bigv = (VALUE)big;
+ BIGNUM_SET_SIGN(bigv, sign);
+ if (len <= BIGNUM_EMBED_LEN_MAX) {
+ FL_SET_RAW(bigv, BIGNUM_EMBED_FLAG);
+ BIGNUM_SET_LEN(bigv, len);
+ (void)VALGRIND_MAKE_MEM_UNDEFINED((void*)big->as.ary, sizeof(big->as.ary));
+ }
+ else {
+ big->as.heap.digits = ALLOC_N(BDIGIT, len);
+ big->as.heap.len = len;
+ }
+ OBJ_FREEZE(bigv);
+ return bigv;
+}
+
+VALUE
+rb_big_new(size_t len, int sign)
+{
+ return bignew(len, sign != 0);
+}
+
+VALUE
+rb_big_clone(VALUE x)
+{
+ size_t len = BIGNUM_LEN(x);
+ VALUE z = bignew_1(CLASS_OF(x), len, BIGNUM_SIGN(x));
+
+ MEMCPY(BDIGITS(z), BDIGITS(x), BDIGIT, len);
+ return z;
+}
+
+static void
+big_extend_carry(VALUE x)
+{
+ rb_big_resize(x, BIGNUM_LEN(x)+1);
+ BDIGITS(x)[BIGNUM_LEN(x)-1] = 1;
+}
+
+/* modify a bignum by 2's complement */
+static void
+get2comp(VALUE x)
+{
+ long i = BIGNUM_LEN(x);
+ BDIGIT *ds = BDIGITS(x);
+
+ if (bary_2comp(ds, i)) {
+ big_extend_carry(x);
+ }
+}
+
+void
+rb_big_2comp(VALUE x) /* get 2's complement */
+{
+ get2comp(x);
+}
+
+static BDIGIT
+abs2twocomp(VALUE *xp, long *n_ret)
{
- if (!FIXNUM_P(x)) {
- long len = RBIGNUM(x)->len;
- USHORT *ds = BDIGITS(x);
-
- while (len-- && !ds[len]) ;
- RBIGNUM(x)->len = ++len;
-
- if (len*sizeof(USHORT) <= sizeof(VALUE)) {
- long num = 0;
- while (len--) {
- num = BIGUP(num) + ds[len];
- }
- if (num >= 0) {
- if (RBIGNUM(x)->sign) {
- if (POSFIXABLE(num)) return INT2FIX(num);
- }
- else if (NEGFIXABLE(-(long)num)) return INT2FIX(-(long)num);
- }
- }
+ VALUE x = *xp;
+ long n = BIGNUM_LEN(x);
+ BDIGIT *ds = BDIGITS(x);
+ BDIGIT hibits = 0;
+
+ BARY_TRUNC(ds, n);
+
+ if (n != 0 && BIGNUM_NEGATIVE_P(x)) {
+ VALUE z = bignew_1(CLASS_OF(x), n, 0);
+ MEMCPY(BDIGITS(z), ds, BDIGIT, n);
+ bary_2comp(BDIGITS(z), n);
+ hibits = BDIGMAX;
+ *xp = z;
+ }
+ *n_ret = n;
+ return hibits;
+}
+
+static void
+twocomp2abs_bang(VALUE x, int hibits)
+{
+ BIGNUM_SET_SIGN(x, !hibits);
+ if (hibits) {
+ get2comp(x);
+ }
+}
+
+static inline VALUE
+bigtrunc(VALUE x)
+{
+ size_t len = BIGNUM_LEN(x);
+ BDIGIT *ds = BDIGITS(x);
+
+ if (len == 0) return x;
+ while (--len && !ds[len]);
+ if (BIGNUM_LEN(x) > len+1) {
+ rb_big_resize(x, len+1);
+ }
+ return x;
+}
+
+static inline VALUE
+bigfixize(VALUE x)
+{
+ size_t n = BIGNUM_LEN(x);
+ BDIGIT *ds = BDIGITS(x);
+#if SIZEOF_BDIGIT < SIZEOF_LONG
+ unsigned long u;
+#else
+ BDIGIT u;
+#endif
+
+ BARY_TRUNC(ds, n);
+
+ if (n == 0) return INT2FIX(0);
+
+#if SIZEOF_BDIGIT < SIZEOF_LONG
+ if (sizeof(long)/SIZEOF_BDIGIT < n)
+ goto return_big;
+ else {
+ int i = (int)n;
+ u = 0;
+ while (i--) {
+ u = (unsigned long)(BIGUP(u) + ds[i]);
+ }
+ }
+#else /* SIZEOF_BDIGIT >= SIZEOF_LONG */
+ if (1 < n)
+ goto return_big;
+ else
+ u = ds[0];
+#endif
+
+ if (BIGNUM_POSITIVE_P(x)) {
+ if (POSFIXABLE(u)) return LONG2FIX((long)u);
+ }
+ else {
+ if (u <= -FIXNUM_MIN) return LONG2FIX(-(long)u);
+ }
+
+ return_big:
+ rb_big_resize(x, n);
+ return x;
+}
+
+static VALUE
+bignorm(VALUE x)
+{
+ if (RB_BIGNUM_TYPE_P(x)) {
+ x = bigfixize(x);
}
return x;
}
VALUE
-rb_big_norm(x)
- VALUE x;
+rb_big_norm(VALUE x)
{
return bignorm(x);
}
VALUE
-rb_uint2big(n)
- unsigned long n;
+rb_uint2big(uintptr_t n)
{
- unsigned int i = 0;
- USHORT *digits;
- VALUE big;
-
- i = 0;
- big = bignew(DIGSPERLONG, 1);
- digits = BDIGITS(big);
- while (i < DIGSPERLONG) {
- digits[i++] = BIGLO(n);
- n = BIGDN(n);
+ long i;
+ VALUE big = bignew(bdigit_roomof(SIZEOF_VALUE), 1);
+ BDIGIT *digits = BDIGITS(big);
+
+#if SIZEOF_BDIGIT >= SIZEOF_VALUE
+ digits[0] = n;
+#else
+ for (i = 0; i < bdigit_roomof(SIZEOF_VALUE); i++) {
+ digits[i] = BIGLO(n);
+ n = BIGDN(n);
}
+#endif
- i = DIGSPERLONG;
- while (i-- && !digits[i]) ;
- RBIGNUM(big)->len = i+1;
+ i = bdigit_roomof(SIZEOF_VALUE);
+ while (--i && !digits[i]) ;
+ BIGNUM_SET_LEN(big, i+1);
return big;
}
VALUE
-rb_int2big(n)
- long n;
+rb_int2big(intptr_t n)
{
long neg = 0;
+ VALUE u;
VALUE big;
if (n < 0) {
- n = -n;
- neg = 1;
+ u = 1 + (VALUE)(-(n + 1)); /* u = -n avoiding overflow */
+ neg = 1;
+ }
+ else {
+ u = n;
}
- big = rb_uint2big(n);
+ big = rb_uint2big(u);
if (neg) {
- RBIGNUM(big)->sign = 0;
+ BIGNUM_SET_NEGATIVE_SIGN(big);
}
return big;
}
VALUE
-rb_uint2inum(n)
- unsigned long n;
+rb_uint2inum(uintptr_t n)
{
- if (POSFIXABLE(n)) return INT2FIX(n);
+ if (POSFIXABLE(n)) return LONG2FIX(n);
return rb_uint2big(n);
}
VALUE
-rb_int2inum(n)
- long n;
+rb_int2inum(intptr_t n)
{
- if (FIXABLE(n)) return INT2FIX(n);
+ if (FIXABLE(n)) return LONG2FIX(n);
return rb_int2big(n);
}
+void
+rb_big_pack(VALUE val, unsigned long *buf, long num_longs)
+{
+ rb_integer_pack(val, buf, num_longs, sizeof(long), 0,
+ INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_NATIVE_BYTE_ORDER|
+ INTEGER_PACK_2COMP);
+}
+
VALUE
-rb_cstr2inum(str, base)
- const char *str;
- int base;
+rb_big_unpack(unsigned long *buf, long num_longs)
{
- const char *s = str;
- char *end;
- int badcheck = (base==0)?1:0;
- char sign = 1, c;
- unsigned long num;
- long len, blen = 1;
- long i;
+ return rb_integer_unpack(buf, num_longs, sizeof(long), 0,
+ INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_NATIVE_BYTE_ORDER|
+ INTEGER_PACK_2COMP);
+}
+
+/*
+ * Calculate the number of bytes to be required to represent
+ * the absolute value of the integer given as _val_.
+ *
+ * [val] an integer.
+ * [nlz_bits_ret] number of leading zero bits in the most significant byte is returned if not NULL.
+ *
+ * This function returns ((val_numbits * CHAR_BIT + CHAR_BIT - 1) / CHAR_BIT)
+ * where val_numbits is the number of bits of abs(val).
+ * This function should not overflow.
+ *
+ * If nlz_bits_ret is not NULL,
+ * (return_value * CHAR_BIT - val_numbits) is stored in *nlz_bits_ret.
+ * In this case, 0 <= *nlz_bits_ret < CHAR_BIT.
+ *
+ */
+size_t
+rb_absint_size(VALUE val, int *nlz_bits_ret)
+{
+ BDIGIT *dp;
+ BDIGIT *de;
+ BDIGIT fixbuf[bdigit_roomof(sizeof(long))];
+
+ int num_leading_zeros;
+
+ val = rb_to_int(val);
+
+ if (FIXNUM_P(val)) {
+ long v = FIX2LONG(val);
+ if (v < 0) {
+ v = -v;
+ }
+#if SIZEOF_BDIGIT >= SIZEOF_LONG
+ fixbuf[0] = v;
+#else
+ {
+ int i;
+ for (i = 0; i < numberof(fixbuf); i++) {
+ fixbuf[i] = BIGLO(v);
+ v = BIGDN(v);
+ }
+ }
+#endif
+ dp = fixbuf;
+ de = fixbuf + numberof(fixbuf);
+ }
+ else {
+ dp = BDIGITS(val);
+ de = dp + BIGNUM_LEN(val);
+ }
+ while (dp < de && de[-1] == 0)
+ de--;
+ if (dp == de) {
+ if (nlz_bits_ret)
+ *nlz_bits_ret = 0;
+ return 0;
+ }
+ num_leading_zeros = nlz(de[-1]);
+ if (nlz_bits_ret)
+ *nlz_bits_ret = num_leading_zeros % CHAR_BIT;
+ return (de - dp) * SIZEOF_BDIGIT - num_leading_zeros / CHAR_BIT;
+}
+
+static size_t
+absint_numwords_small(size_t numbytes, int nlz_bits_in_msbyte, size_t word_numbits, size_t *nlz_bits_ret)
+{
+ size_t val_numbits = numbytes * CHAR_BIT - nlz_bits_in_msbyte;
+ size_t div = val_numbits / word_numbits;
+ size_t mod = val_numbits % word_numbits;
+ size_t numwords;
+ size_t nlz_bits;
+ numwords = mod == 0 ? div : div + 1;
+ nlz_bits = mod == 0 ? 0 : word_numbits - mod;
+ *nlz_bits_ret = nlz_bits;
+ return numwords;
+}
+
+static size_t
+absint_numwords_generic(size_t numbytes, int nlz_bits_in_msbyte, size_t word_numbits, size_t *nlz_bits_ret)
+{
+ static const BDIGIT char_bit[1] = { CHAR_BIT };
+ BDIGIT numbytes_bary[bdigit_roomof(sizeof(numbytes))];
+ BDIGIT val_numbits_bary[bdigit_roomof(sizeof(numbytes) + 1)];
+ BDIGIT nlz_bits_in_msbyte_bary[1];
+ BDIGIT word_numbits_bary[bdigit_roomof(sizeof(word_numbits))];
+ BDIGIT div_bary[numberof(val_numbits_bary) + BIGDIVREM_EXTRA_WORDS];
+ BDIGIT mod_bary[numberof(word_numbits_bary)];
+ BDIGIT one[1] = { 1 };
+ size_t nlz_bits;
+ size_t mod;
+ int sign;
+ size_t numwords;
+
+ nlz_bits_in_msbyte_bary[0] = nlz_bits_in_msbyte;
+
+ /*
+ * val_numbits = numbytes * CHAR_BIT - nlz_bits_in_msbyte
+ * div, mod = val_numbits.divmod(word_numbits)
+ * numwords = mod == 0 ? div : div + 1
+ * nlz_bits = mod == 0 ? 0 : word_numbits - mod
+ */
+
+ bary_unpack(BARY_ARGS(numbytes_bary), &numbytes, 1, sizeof(numbytes), 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER);
+ BARY_SHORT_MUL(val_numbits_bary, numbytes_bary, char_bit);
+ if (nlz_bits_in_msbyte)
+ BARY_SUB(val_numbits_bary, val_numbits_bary, nlz_bits_in_msbyte_bary);
+ bary_unpack(BARY_ARGS(word_numbits_bary), &word_numbits, 1, sizeof(word_numbits), 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER);
+ BARY_DIVMOD(div_bary, mod_bary, val_numbits_bary, word_numbits_bary);
+ if (BARY_ZERO_P(mod_bary)) {
+ nlz_bits = 0;
+ }
+ else {
+ BARY_ADD(div_bary, div_bary, one);
+ bary_pack(+1, BARY_ARGS(mod_bary), &mod, 1, sizeof(mod), 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER);
+ nlz_bits = word_numbits - mod;
+ }
+ sign = bary_pack(+1, BARY_ARGS(div_bary), &numwords, 1, sizeof(numwords), 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER);
+
+ if (sign == 2) {
+#if defined __GNUC__ && (__GNUC__ == 4 && __GNUC_MINOR__ == 4)
+ *nlz_bits_ret = 0;
+#endif
+ return (size_t)-1;
+ }
+ *nlz_bits_ret = nlz_bits;
+ return numwords;
+}
+
+/*
+ * Calculate the number of words to be required to represent
+ * the absolute value of the integer given as _val_.
+ *
+ * [val] an integer.
+ * [word_numbits] number of bits in a word.
+ * [nlz_bits_ret] number of leading zero bits in the most significant word is returned if not NULL.
+ *
+ * This function returns ((val_numbits * CHAR_BIT + word_numbits - 1) / word_numbits)
+ * where val_numbits is the number of bits of abs(val).
+ *
+ * This function can overflow.
+ * When overflow occur, (size_t)-1 is returned.
+ *
+ * If nlz_bits_ret is not NULL and overflow is not occur,
+ * (return_value * word_numbits - val_numbits) is stored in *nlz_bits_ret.
+ * In this case, 0 <= *nlz_bits_ret < word_numbits.
+ *
+ */
+size_t
+rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret)
+{
+ size_t numbytes;
+ int nlz_bits_in_msbyte;
+ size_t numwords;
+ size_t nlz_bits = 0;
+
+ if (word_numbits == 0)
+ return (size_t)-1;
+
+ numbytes = rb_absint_size(val, &nlz_bits_in_msbyte);
+
+ if (numbytes <= SIZE_MAX / CHAR_BIT) {
+ numwords = absint_numwords_small(numbytes, nlz_bits_in_msbyte, word_numbits, &nlz_bits);
+#ifdef DEBUG_INTEGER_PACK
+ {
+ size_t numwords0, nlz_bits0;
+ numwords0 = absint_numwords_generic(numbytes, nlz_bits_in_msbyte, word_numbits, &nlz_bits0);
+ assert(numwords0 == numwords);
+ assert(nlz_bits0 == nlz_bits);
+ (void)numwords0;
+ }
+#endif
+ }
+ else {
+ numwords = absint_numwords_generic(numbytes, nlz_bits_in_msbyte, word_numbits, &nlz_bits);
+ }
+ if (numwords == (size_t)-1)
+ return numwords;
+
+ if (nlz_bits_ret)
+ *nlz_bits_ret = nlz_bits;
+
+ return numwords;
+}
+
+/* Test abs(val) consists only a bit or not.
+ *
+ * Returns 1 if abs(val) == 1 << n for some n >= 0.
+ * Returns 0 otherwise.
+ *
+ * rb_absint_singlebit_p can be used to determine required buffer size
+ * for rb_integer_pack used with INTEGER_PACK_2COMP (two's complement).
+ *
+ * Following example calculates number of bits required to
+ * represent val in two's complement number, without sign bit.
+ *
+ * size_t size;
+ * int neg = FIXNUM_P(val) ? FIX2LONG(val) < 0 : BIGNUM_NEGATIVE_P(val);
+ * size = rb_absint_numwords(val, 1, NULL)
+ * if (size == (size_t)-1) ...overflow...
+ * if (neg && rb_absint_singlebit_p(val))
+ * size--;
+ *
+ * Following example calculates number of bytes required to
+ * represent val in two's complement number, with sign bit.
+ *
+ * size_t size;
+ * int neg = FIXNUM_P(val) ? FIX2LONG(val) < 0 : BIGNUM_NEGATIVE_P(val);
+ * int nlz_bits;
+ * size = rb_absint_size(val, &nlz_bits);
+ * if (nlz_bits == 0 && !(neg && rb_absint_singlebit_p(val)))
+ * size++;
+ */
+int
+rb_absint_singlebit_p(VALUE val)
+{
+ BDIGIT *dp;
+ BDIGIT *de;
+ BDIGIT fixbuf[bdigit_roomof(sizeof(long))];
+ BDIGIT d;
+
+ val = rb_to_int(val);
+
+ if (FIXNUM_P(val)) {
+ long v = FIX2LONG(val);
+ if (v < 0) {
+ v = -v;
+ }
+#if SIZEOF_BDIGIT >= SIZEOF_LONG
+ fixbuf[0] = v;
+#else
+ {
+ int i;
+ for (i = 0; i < numberof(fixbuf); i++) {
+ fixbuf[i] = BIGLO(v);
+ v = BIGDN(v);
+ }
+ }
+#endif
+ dp = fixbuf;
+ de = fixbuf + numberof(fixbuf);
+ }
+ else {
+ dp = BDIGITS(val);
+ de = dp + BIGNUM_LEN(val);
+ }
+ while (dp < de && de[-1] == 0)
+ de--;
+ while (dp < de && dp[0] == 0)
+ dp++;
+ if (dp == de) /* no bit set. */
+ return 0;
+ if (dp != de-1) /* two non-zero words. two bits set, at least. */
+ return 0;
+ d = *dp;
+ return POW2_P(d);
+}
+
+
+/*
+ * Export an integer into a buffer.
+ *
+ * This function fills the buffer specified by _words_ and _numwords_ as
+ * val in the format specified by _wordsize_, _nails_ and _flags_.
+ *
+ * [val] Fixnum, Bignum or another integer like object which has to_int method.
+ * [words] buffer to export abs(val).
+ * [numwords] the size of given buffer as number of words.
+ * [wordsize] the size of word as number of bytes.
+ * [nails] number of padding bits in a word.
+ * Most significant nails bits of each word are filled by zero.
+ * [flags] bitwise or of constants which name starts "INTEGER_PACK_".
+ *
+ * flags:
+ * [INTEGER_PACK_MSWORD_FIRST] Store the most significant word as the first word.
+ * [INTEGER_PACK_LSWORD_FIRST] Store the least significant word as the first word.
+ * [INTEGER_PACK_MSBYTE_FIRST] Store the most significant byte in a word as the first byte in the word.
+ * [INTEGER_PACK_LSBYTE_FIRST] Store the least significant byte in a word as the first byte in the word.
+ * [INTEGER_PACK_NATIVE_BYTE_ORDER] INTEGER_PACK_MSBYTE_FIRST or INTEGER_PACK_LSBYTE_FIRST corresponding to the host's endian.
+ * [INTEGER_PACK_2COMP] Use 2's complement representation.
+ * [INTEGER_PACK_LITTLE_ENDIAN] Same as INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_LSBYTE_FIRST
+ * [INTEGER_PACK_BIG_ENDIAN] Same as INTEGER_PACK_MSWORD_FIRST|INTEGER_PACK_MSBYTE_FIRST
+ * [INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION] Use generic implementation (for test and debug).
+ *
+ * This function fills the buffer specified by _words_
+ * as abs(val) if INTEGER_PACK_2COMP is not specified in _flags_.
+ * If INTEGER_PACK_2COMP is specified, 2's complement representation of val is
+ * filled in the buffer.
+ *
+ * This function returns the signedness and overflow condition.
+ * The overflow condition depends on INTEGER_PACK_2COMP.
+ *
+ * INTEGER_PACK_2COMP is not specified:
+ * -2 : negative overflow. val <= -2**(numwords*(wordsize*CHAR_BIT-nails))
+ * -1 : negative without overflow. -2**(numwords*(wordsize*CHAR_BIT-nails)) < val < 0
+ * 0 : zero. val == 0
+ * 1 : positive without overflow. 0 < val < 2**(numwords*(wordsize*CHAR_BIT-nails))
+ * 2 : positive overflow. 2**(numwords*(wordsize*CHAR_BIT-nails)) <= val
+ *
+ * INTEGER_PACK_2COMP is specified:
+ * -2 : negative overflow. val < -2**(numwords*(wordsize*CHAR_BIT-nails))
+ * -1 : negative without overflow. -2**(numwords*(wordsize*CHAR_BIT-nails)) <= val < 0
+ * 0 : zero. val == 0
+ * 1 : positive without overflow. 0 < val < 2**(numwords*(wordsize*CHAR_BIT-nails))
+ * 2 : positive overflow. 2**(numwords*(wordsize*CHAR_BIT-nails)) <= val
+ *
+ * The value, -2**(numwords*(wordsize*CHAR_BIT-nails)), is representable
+ * in 2's complement representation but not representable in absolute value.
+ * So -1 is returned for the value if INTEGER_PACK_2COMP is specified
+ * but returns -2 if INTEGER_PACK_2COMP is not specified.
+ *
+ * The least significant words are filled in the buffer when overflow occur.
+ */
+
+int
+rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
+{
+ int sign;
+ BDIGIT *ds;
+ size_t num_bdigits;
+ BDIGIT fixbuf[bdigit_roomof(sizeof(long))];
+
+ RB_GC_GUARD(val) = rb_to_int(val);
+
+ if (FIXNUM_P(val)) {
+ long v = FIX2LONG(val);
+ if (v < 0) {
+ sign = -1;
+ v = -v;
+ }
+ else {
+ sign = 1;
+ }
+#if SIZEOF_BDIGIT >= SIZEOF_LONG
+ fixbuf[0] = v;
+#else
+ {
+ int i;
+ for (i = 0; i < numberof(fixbuf); i++) {
+ fixbuf[i] = BIGLO(v);
+ v = BIGDN(v);
+ }
+ }
+#endif
+ ds = fixbuf;
+ num_bdigits = numberof(fixbuf);
+ }
+ else {
+ sign = BIGNUM_POSITIVE_P(val) ? 1 : -1;
+ ds = BDIGITS(val);
+ num_bdigits = BIGNUM_LEN(val);
+ }
+
+ return bary_pack(sign, ds, num_bdigits, words, numwords, wordsize, nails, flags);
+}
+
+/*
+ * Import an integer from a buffer.
+ *
+ * [words] buffer to import.
+ * [numwords] the size of given buffer as number of words.
+ * [wordsize] the size of word as number of bytes.
+ * [nails] number of padding bits in a word.
+ * Most significant nails bits of each word are ignored.
+ * [flags] bitwise or of constants which name starts "INTEGER_PACK_".
+ *
+ * flags:
+ * [INTEGER_PACK_MSWORD_FIRST] Interpret the first word as the most significant word.
+ * [INTEGER_PACK_LSWORD_FIRST] Interpret the first word as the least significant word.
+ * [INTEGER_PACK_MSBYTE_FIRST] Interpret the first byte in a word as the most significant byte in the word.
+ * [INTEGER_PACK_LSBYTE_FIRST] Interpret the first byte in a word as the least significant byte in the word.
+ * [INTEGER_PACK_NATIVE_BYTE_ORDER] INTEGER_PACK_MSBYTE_FIRST or INTEGER_PACK_LSBYTE_FIRST corresponding to the host's endian.
+ * [INTEGER_PACK_2COMP] Use 2's complement representation.
+ * [INTEGER_PACK_LITTLE_ENDIAN] Same as INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_LSBYTE_FIRST
+ * [INTEGER_PACK_BIG_ENDIAN] Same as INTEGER_PACK_MSWORD_FIRST|INTEGER_PACK_MSBYTE_FIRST
+ * [INTEGER_PACK_FORCE_BIGNUM] the result will be a Bignum
+ * even if it is representable as a Fixnum.
+ * [INTEGER_PACK_NEGATIVE] Returns non-positive value.
+ * (Returns non-negative value if not specified.)
+ * [INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION] Use generic implementation (for test and debug).
+ *
+ * This function returns the imported integer as Fixnum or Bignum.
+ *
+ * The range of the result value depends on INTEGER_PACK_2COMP and INTEGER_PACK_NEGATIVE.
+ *
+ * INTEGER_PACK_2COMP is not set:
+ * 0 <= val < 2**(numwords*(wordsize*CHAR_BIT-nails)) if !INTEGER_PACK_NEGATIVE
+ * -2**(numwords*(wordsize*CHAR_BIT-nails)) < val <= 0 if INTEGER_PACK_NEGATIVE
+ *
+ * INTEGER_PACK_2COMP is set:
+ * -2**(numwords*(wordsize*CHAR_BIT-nails)-1) <= val <= 2**(numwords*(wordsize*CHAR_BIT-nails)-1)-1 if !INTEGER_PACK_NEGATIVE
+ * -2**(numwords*(wordsize*CHAR_BIT-nails)) <= val <= -1 if INTEGER_PACK_NEGATIVE
+ *
+ * INTEGER_PACK_2COMP without INTEGER_PACK_NEGATIVE means sign extension.
+ * INTEGER_PACK_2COMP with INTEGER_PACK_NEGATIVE mean assuming the higher bits are 1.
+ *
+ * Note that this function returns 0 when numwords is zero and
+ * INTEGER_PACK_2COMP is set but INTEGER_PACK_NEGATIVE is not set.
+ */
+
+VALUE
+rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
+{
+ VALUE val;
+ size_t num_bdigits;
+ int sign;
+ int nlp_bits;
+ BDIGIT *ds;
+ BDIGIT fixbuf[2] = { 0, 0 };
+
+ validate_integer_pack_format(numwords, wordsize, nails, flags,
+ INTEGER_PACK_MSWORD_FIRST|
+ INTEGER_PACK_LSWORD_FIRST|
+ INTEGER_PACK_MSBYTE_FIRST|
+ INTEGER_PACK_LSBYTE_FIRST|
+ INTEGER_PACK_NATIVE_BYTE_ORDER|
+ INTEGER_PACK_2COMP|
+ INTEGER_PACK_FORCE_BIGNUM|
+ INTEGER_PACK_NEGATIVE|
+ INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION);
+
+ num_bdigits = integer_unpack_num_bdigits(numwords, wordsize, nails, &nlp_bits);
+
+ if (LONG_MAX-1 < num_bdigits)
+ rb_raise(rb_eArgError, "too big to unpack as an integer");
+ if (num_bdigits <= numberof(fixbuf) && !(flags & INTEGER_PACK_FORCE_BIGNUM)) {
+ val = Qfalse;
+ ds = fixbuf;
+ }
+ else {
+ val = bignew((long)num_bdigits, 0);
+ ds = BDIGITS(val);
+ }
+ sign = bary_unpack_internal(ds, num_bdigits, words, numwords, wordsize, nails, flags, nlp_bits);
+
+ if (sign == -2) {
+ if (val) {
+ big_extend_carry(val);
+ }
+ else if (num_bdigits == numberof(fixbuf)) {
+ val = bignew((long)num_bdigits+1, 0);
+ MEMCPY(BDIGITS(val), fixbuf, BDIGIT, num_bdigits);
+ BDIGITS(val)[num_bdigits++] = 1;
+ }
+ else {
+ ds[num_bdigits++] = 1;
+ }
+ }
+
+ if (!val) {
+ BDIGIT_DBL u = fixbuf[0] + BIGUP(fixbuf[1]);
+ if (u == 0)
+ return LONG2FIX(0);
+ if (0 < sign && POSFIXABLE(u))
+ return LONG2FIX((long)u);
+ if (sign < 0 && BDIGIT_MSB(fixbuf[1]) == 0 &&
+ NEGFIXABLE(-(BDIGIT_DBL_SIGNED)u))
+ return LONG2FIX((long)-(BDIGIT_DBL_SIGNED)u);
+ val = bignew((long)num_bdigits, 0 <= sign);
+ MEMCPY(BDIGITS(val), fixbuf, BDIGIT, num_bdigits);
+ }
+
+ if ((flags & INTEGER_PACK_FORCE_BIGNUM) && sign != 0 &&
+ bary_zero_p(BDIGITS(val), BIGNUM_LEN(val)))
+ sign = 0;
+ BIGNUM_SET_SIGN(val, 0 <= sign);
+
+ if (flags & INTEGER_PACK_FORCE_BIGNUM)
+ return bigtrunc(val);
+ return bignorm(val);
+}
+
+#define conv_digit(c) (ruby_digit36_to_number_table[(unsigned char)(c)])
+
+NORETURN(static inline void invalid_radix(int base));
+NORETURN(static inline void invalid_integer(VALUE s));
+
+static inline int
+valid_radix_p(int base)
+{
+ return (1 < base && base <= 36);
+}
+
+static inline void
+invalid_radix(int base)
+{
+ rb_raise(rb_eArgError, "invalid radix %d", base);
+}
+
+static inline void
+invalid_integer(VALUE s)
+{
+ rb_raise(rb_eArgError, "invalid value for Integer(): %+"PRIsVALUE, s);
+}
+
+static int
+str2big_scan_digits(const char *s, const char *str, int base, int badcheck, size_t *num_digits_p, ssize_t *len_p)
+{
+ char nondigit = 0;
+ size_t num_digits = 0;
+ const char *digits_start = str;
+ const char *digits_end = str;
+ ssize_t len = *len_p;
+
+ int c;
+
+ if (!len) {
+ *num_digits_p = 0;
+ *len_p = 0;
+ return TRUE;
+ }
+
+ if (badcheck && *str == '_') return FALSE;
+
+ while ((c = *str++) != 0) {
+ if (c == '_') {
+ if (nondigit) {
+ if (badcheck) return FALSE;
+ break;
+ }
+ nondigit = (char) c;
+ }
+ else if ((c = conv_digit(c)) < 0 || c >= base) {
+ break;
+ }
+ else {
+ nondigit = 0;
+ num_digits++;
+ digits_end = str;
+ }
+ if (len > 0 && !--len) break;
+ }
+ if (badcheck && nondigit) return FALSE;
+ if (badcheck && len) {
+ str--;
+ while (*str && ISSPACE(*str)) {
+ str++;
+ if (len > 0 && !--len) break;
+ }
+ if (len && *str) {
+ return FALSE;
+ }
+ }
+ *num_digits_p = num_digits;
+ *len_p = digits_end - digits_start;
+ return TRUE;
+}
+
+static VALUE
+str2big_poweroftwo(
+ int sign,
+ const char *digits_start,
+ const char *digits_end,
+ size_t num_digits,
+ int bits_per_digit)
+{
+ BDIGIT *dp;
+ BDIGIT_DBL dd;
+ int numbits;
+
+ size_t num_bdigits;
+ const char *p;
+ int c;
VALUE z;
- USHORT *zds;
-
- while (*str && ISSPACE(*str)) str++;
-
- if (*str == '+') {
- str++;
- }
- else if (*str == '-') {
- str++;
- sign = 0;
- }
- if (base == 0) {
- if (*str == '0') {
- str++;
- if (*str == 'x' || *str == 'X') {
- str++;
- base = 16;
- }
- else if (*str == 'b' || *str == 'B') {
- str++;
- base = 2;
- }
- else {
- base = 8;
- if (!*str) return INT2FIX(0);
- }
- }
- else {
- base = 10;
- if (!*str) return INT2FIX(0);
- }
- }
- if (base == 8) {
- while (str[0] == '0') str++;
- len = 3*strlen(str)*sizeof(char);
- }
- else { /* base == 10, 2 or 16 */
- if (base == 16 && str[0] == '0' && (str[1] == 'x'||str[1] == 'X')) {
- str += 2;
- }
- if (base == 2 && str[0] == '0' && (str[1] == 'b'||str[1] == 'B')) {
- str += 2;
- }
- while (*str && *str == '0') str++;
- if (!*str) str--;
- len = 4*strlen(str)*sizeof(char);
- }
-
- if (len <= (sizeof(VALUE)*CHAR_BIT)) {
- unsigned long val = strtoul((char*)str, &end, base);
-
- if (badcheck) {
- if (end == str || *end)
- goto bad;
- while (*end && ISSPACE(*end)) end++;
- if (*end) {
- bad:
- rb_raise(rb_eArgError, "invalid literal for Integer: %s", s);
- }
- }
-
- if (POSFIXABLE(val)) {
- if (sign) return INT2FIX(val);
- else {
- long result = -(long)val;
- return INT2FIX(result);
- }
- }
- else {
- VALUE big = rb_uint2big(val);
- RBIGNUM(big)->sign = sign;
- return big;
- }
- }
- len = (len/BITSPERDIG)+1;
- z = bignew(len, sign);
+ num_bdigits = (num_digits / BITSPERDIG) * bits_per_digit + roomof((num_digits % BITSPERDIG) * bits_per_digit, BITSPERDIG);
+ z = bignew(num_bdigits, sign);
+ dp = BDIGITS(z);
+ dd = 0;
+ numbits = 0;
+ for (p = digits_end; digits_start < p; p--) {
+ if ((c = conv_digit(p[-1])) < 0)
+ continue;
+ dd |= (BDIGIT_DBL)c << numbits;
+ numbits += bits_per_digit;
+ if (BITSPERDIG <= numbits) {
+ *dp++ = BIGLO(dd);
+ dd = BIGDN(dd);
+ numbits -= BITSPERDIG;
+ }
+ }
+ if (numbits) {
+ *dp++ = BIGLO(dd);
+ }
+ assert((size_t)(dp - BDIGITS(z)) == num_bdigits);
+
+ return z;
+}
+
+static VALUE
+str2big_normal(
+ int sign,
+ const char *digits_start,
+ const char *digits_end,
+ size_t num_bdigits,
+ int base)
+{
+ size_t blen = 1;
+ BDIGIT *zds;
+ BDIGIT_DBL num;
+
+ size_t i;
+ const char *p;
+ int c;
+ VALUE z;
+
+ z = bignew(num_bdigits, sign);
zds = BDIGITS(z);
- for (i=len;i--;) zds[i]=0;
- while (c = *str++) {
- switch (c) {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- c = c - '0';
- break;
- case 'a': case 'b': case 'c':
- case 'd': case 'e': case 'f':
- c = c - 'a' + 10;
- break;
- case 'A': case 'B': case 'C':
- case 'D': case 'E': case 'F':
- c = c - 'A' + 10;
- break;
- default:
- c = base;
- if (badcheck) {
- if (ISSPACE(c)) {
- while (*str && ISSPACE(*str)) str++;
- if (*str) {
- break;
- }
- }
- rb_raise(rb_eArgError, "invalid literal for Integer: %s", s);
- }
- break;
- }
- if (c >= base) break;
- i = 0;
- num = c;
- for (;;) {
- while (i<blen) {
- num += zds[i]*base;
- zds[i++] = BIGLO(num);
- num = BIGDN(num);
- }
- if (num) {
- blen++;
- continue;
- }
- break;
- }
+ BDIGITS_ZERO(zds, num_bdigits);
+
+ for (p = digits_start; p < digits_end; p++) {
+ if ((c = conv_digit(*p)) < 0)
+ continue;
+ num = c;
+ i = 0;
+ for (;;) {
+ while (i<blen) {
+ num += (BDIGIT_DBL)zds[i]*base;
+ zds[i++] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ if (num) {
+ blen++;
+ continue;
+ }
+ break;
+ }
+ assert(blen <= num_bdigits);
+ }
+
+ return z;
+}
+
+static VALUE
+str2big_karatsuba(
+ int sign,
+ const char *digits_start,
+ const char *digits_end,
+ size_t num_digits,
+ size_t num_bdigits,
+ int digits_per_bdigits_dbl,
+ int base)
+{
+ VALUE powerv;
+ size_t unit;
+ VALUE tmpuv = 0;
+ BDIGIT *uds, *vds, *tds;
+ BDIGIT_DBL dd;
+ BDIGIT_DBL current_base;
+ int m;
+ int power_level = 0;
+
+ size_t i;
+ const char *p;
+ int c;
+ VALUE z;
+
+ uds = ALLOCV_N(BDIGIT, tmpuv, 2*num_bdigits);
+ vds = uds + num_bdigits;
+
+ powerv = power_cache_get_power(base, power_level, NULL);
+
+ i = 0;
+ dd = 0;
+ current_base = 1;
+ m = digits_per_bdigits_dbl;
+ if (num_digits < (size_t)m)
+ m = (int)num_digits;
+ for (p = digits_end; digits_start < p; p--) {
+ if ((c = conv_digit(p[-1])) < 0)
+ continue;
+ dd = dd + c * current_base;
+ current_base *= base;
+ num_digits--;
+ m--;
+ if (m == 0) {
+ uds[i++] = BIGLO(dd);
+ uds[i++] = (BDIGIT)BIGDN(dd);
+ dd = 0;
+ m = digits_per_bdigits_dbl;
+ if (num_digits < (size_t)m)
+ m = (int)num_digits;
+ current_base = 1;
+ }
+ }
+ assert(i == num_bdigits);
+ for (unit = 2; unit < num_bdigits; unit *= 2) {
+ for (i = 0; i < num_bdigits; i += unit*2) {
+ if (2*unit <= num_bdigits - i) {
+ bary_mul(vds+i, unit*2, BDIGITS(powerv), BIGNUM_LEN(powerv), uds+i+unit, unit);
+ bary_add(vds+i, unit*2, vds+i, unit*2, uds+i, unit);
+ }
+ else if (unit <= num_bdigits - i) {
+ bary_mul(vds+i, num_bdigits-i, BDIGITS(powerv), BIGNUM_LEN(powerv), uds+i+unit, num_bdigits-(i+unit));
+ bary_add(vds+i, num_bdigits-i, vds+i, num_bdigits-i, uds+i, unit);
+ }
+ else {
+ MEMCPY(vds+i, uds+i, BDIGIT, num_bdigits-i);
+ }
+ }
+ power_level++;
+ powerv = power_cache_get_power(base, power_level, NULL);
+ tds = vds;
+ vds = uds;
+ uds = tds;
+ }
+ BARY_TRUNC(uds, num_bdigits);
+ z = bignew(num_bdigits, sign);
+ MEMCPY(BDIGITS(z), uds, BDIGIT, num_bdigits);
+
+ if (tmpuv)
+ ALLOCV_END(tmpuv);
+
+ return z;
+}
+
+#if USE_GMP
+static VALUE
+str2big_gmp(
+ int sign,
+ const char *digits_start,
+ const char *digits_end,
+ size_t num_digits,
+ size_t num_bdigits,
+ int base)
+{
+ char *buf, *p;
+ const char *q;
+ VALUE tmps;
+ mpz_t mz;
+ VALUE z;
+ BDIGIT *zds;
+ size_t zn, count;
+
+ buf = ALLOCV_N(char, tmps, num_digits+1);
+ p = buf;
+ for (q = digits_start; q < digits_end; q++) {
+ if (conv_digit(*q) < 0)
+ continue;
+ *p++ = *q;
+ }
+ *p = '\0';
+
+ mpz_init(mz);
+ mpz_set_str(mz, buf, base);
+ zn = num_bdigits;
+ z = bignew(zn, sign);
+ zds = BDIGITS(z);
+ bdigits_from_mpz(mz, BDIGITS(z), &count);
+ BDIGITS_ZERO(zds+count, zn-count);
+ mpz_clear(mz);
+
+ if (tmps)
+ ALLOCV_END(tmps);
+
+ return z;
+}
+#endif
+
+static VALUE rb_cstr_parse_inum(const char *str, ssize_t len, char **endp, int base);
+
+/*
+ * Parse +str+ as Ruby Integer, i.e., underscores, 0d and 0b prefixes.
+ *
+ * str: pointer to the string to be parsed.
+ * should be NUL-terminated.
+ * base: base of conversion, must be 2..36, or -36..0.
+ * if +base+ > 0, the conversion is done according to the +base+
+ * and unmatched prefix is parsed as a part of the result if
+ * present.
+ * if +base+ <= 0, the conversion is done according to the
+ * prefix if present, in base <code>-base</code> if +base+ < -1,
+ * or in base 10.
+ * badcheck: if non-zero, +ArgumentError+ is raised when +str+ is not
+ * valid as an Integer. if zero, Fixnum 0 is returned in
+ * that case.
+ */
+VALUE
+rb_cstr_to_inum(const char *str, int base, int badcheck)
+{
+ char *end;
+ VALUE ret = rb_cstr_parse_inum(str, -1, (badcheck ? NULL : &end), base);
+ if (NIL_P(ret)) {
+ if (badcheck) rb_invalid_str(str, "Integer()");
+ ret = INT2FIX(0);
+ }
+ return ret;
+}
+
+/*
+ * Parse +str+ as Ruby Integer, i.e., underscores, 0d and 0b prefixes.
+ *
+ * str: pointer to the string to be parsed.
+ * should be NUL-terminated if +len+ is negative.
+ * len: length of +str+ if >= 0. if +len+ is negative, +str+ should
+ * be NUL-terminated.
+ * endp: if non-NULL, the address after parsed part is stored. if
+ * NULL, Qnil is returned when +str+ is not valid as an Integer.
+ * ndigits: if non-NULL, the number of parsed digits is stored.
+ * base: see +rb_cstr_to_inum+
+ * flags: bitwise OR of below flags:
+ * RB_INT_PARSE_SIGN: allow preceding spaces and +/- sign
+ * RB_INT_PARSE_UNDERSCORE: allow an underscore between digits
+ * RB_INT_PARSE_PREFIX: allow preceding prefix
+ */
+
+VALUE
+rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits,
+ int base, int flags)
+{
+ const char *const s = str;
+ char sign = 1;
+ int c;
+ VALUE z = Qnil;
+
+ unsigned long val;
+ int ov;
+
+ const char *digits_start, *digits_end;
+ size_t num_digits = 0;
+ size_t num_bdigits;
+ const ssize_t len0 = len;
+ const int badcheck = !endp;
+
+#define ADV(n) do {\
+ if (len > 0 && len <= (n)) goto bad; \
+ str += (n); \
+ len -= (n); \
+ } while (0)
+#define ASSERT_LEN() do {\
+ assert(len != 0); \
+ if (len0 >= 0) assert(s + len0 == str + len); \
+ } while (0)
+
+ if (!str) {
+ goto bad;
+ }
+ if (len && (flags & RB_INT_PARSE_SIGN)) {
+ while (ISSPACE(*str)) ADV(1);
+
+ if (str[0] == '+') {
+ ADV(1);
+ }
+ else if (str[0] == '-') {
+ ADV(1);
+ sign = 0;
+ }
+ ASSERT_LEN();
+ }
+ if (base <= 0) {
+ if (str[0] == '0' && len > 1) {
+ switch (str[1]) {
+ case 'x': case 'X':
+ base = 16;
+ ADV(2);
+ break;
+ case 'b': case 'B':
+ base = 2;
+ ADV(2);
+ break;
+ case 'o': case 'O':
+ base = 8;
+ ADV(2);
+ break;
+ case 'd': case 'D':
+ base = 10;
+ ADV(2);
+ break;
+ default:
+ base = 8;
+ }
+ }
+ else if (base < -1) {
+ base = -base;
+ }
+ else {
+ base = 10;
+ }
+ }
+ else if (len == 1 || !(flags & RB_INT_PARSE_PREFIX)) {
+ /* no prefix */
+ }
+ else if (base == 2) {
+ if (str[0] == '0' && (str[1] == 'b'||str[1] == 'B')) {
+ ADV(2);
+ }
+ }
+ else if (base == 8) {
+ if (str[0] == '0' && (str[1] == 'o'||str[1] == 'O')) {
+ ADV(2);
+ }
+ }
+ else if (base == 10) {
+ if (str[0] == '0' && (str[1] == 'd'||str[1] == 'D')) {
+ ADV(2);
+ }
+ }
+ else if (base == 16) {
+ if (str[0] == '0' && (str[1] == 'x'||str[1] == 'X')) {
+ ADV(2);
+ }
+ }
+ if (!valid_radix_p(base)) {
+ invalid_radix(base);
+ }
+ if (!len) goto bad;
+ num_digits = str - s;
+ if (*str == '0' && len != 1) { /* squeeze preceding 0s */
+ int us = 0;
+ const char *end = len < 0 ? NULL : str + len;
+ ++num_digits;
+ while ((c = *++str) == '0' ||
+ ((flags & RB_INT_PARSE_UNDERSCORE) && c == '_')) {
+ if (c == '_') {
+ if (++us >= 2)
+ break;
+ }
+ else {
+ ++num_digits;
+ us = 0;
+ }
+ if (str == end) break;
+ }
+ if (!c || ISSPACE(c)) --str;
+ if (end) len = end - str;
+ }
+ c = *str;
+ c = conv_digit(c);
+ if (c < 0 || c >= base) {
+ if (!badcheck && num_digits) z = INT2FIX(0);
+ goto bad;
+ }
+
+ if (ndigits) *ndigits = num_digits;
+ val = ruby_scan_digits(str, len, base, &num_digits, &ov);
+ if (!ov) {
+ const char *end = &str[num_digits];
+ if (num_digits > 0 && *end == '_' && (flags & RB_INT_PARSE_UNDERSCORE))
+ goto bigparse;
+ if (endp) *endp = (char *)end;
+ if (ndigits) *ndigits += num_digits;
+ if (badcheck) {
+ if (num_digits == 0) return Qnil; /* no number */
+ while (len < 0 ? *end : end < str + len) {
+ if (!ISSPACE(*end)) return Qnil; /* trailing garbage */
+ end++;
+ }
+ }
+
+ if (POSFIXABLE(val)) {
+ if (sign) return LONG2FIX(val);
+ else {
+ long result = -(long)val;
+ return LONG2FIX(result);
+ }
+ }
+ else {
+ VALUE big = rb_uint2big(val);
+ BIGNUM_SET_SIGN(big, sign);
+ return bignorm(big);
+ }
+ }
+
+ bigparse:
+ digits_start = str;
+ if (!str2big_scan_digits(s, str, base, badcheck, &num_digits, &len))
+ goto bad;
+ if (endp) *endp = (char *)(str + len);
+ if (ndigits) *ndigits += num_digits;
+ digits_end = digits_start + len;
+
+ if (POW2_P(base)) {
+ z = str2big_poweroftwo(sign, digits_start, digits_end, num_digits,
+ bit_length(base-1));
+ }
+ else {
+ int digits_per_bdigits_dbl;
+ maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
+ num_bdigits = roomof(num_digits, digits_per_bdigits_dbl)*2;
+
+#if USE_GMP
+ if (GMP_STR2BIG_DIGITS < num_bdigits) {
+ z = str2big_gmp(sign, digits_start, digits_end, num_digits,
+ num_bdigits, base);
+ }
+ else
+#endif
+ if (num_bdigits < KARATSUBA_MUL_DIGITS) {
+ z = str2big_normal(sign, digits_start, digits_end,
+ num_bdigits, base);
+ }
+ else {
+ z = str2big_karatsuba(sign, digits_start, digits_end, num_digits,
+ num_bdigits, digits_per_bdigits_dbl, base);
+ }
}
return bignorm(z);
+
+ bad:
+ if (endp) *endp = (char *)str;
+ if (ndigits) *ndigits = num_digits;
+ return z;
+}
+
+static VALUE
+rb_cstr_parse_inum(const char *str, ssize_t len, char **endp, int base)
+{
+ return rb_int_parse_cstr(str, len, endp, NULL, base,
+ RB_INT_PARSE_DEFAULT);
}
VALUE
-rb_str2inum(str, base)
- VALUE str;
- int base;
+rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception)
{
- char *s;
- int len;
+ VALUE ret;
+ const char *s;
+ long len;
+ char *end;
- s = rb_str2cstr(str, &len);
- if (len != strlen(s)) {
- rb_raise(rb_eArgError, "string for Integer contains null byte");
+ StringValue(str);
+ rb_must_asciicompat(str);
+ RSTRING_GETMEM(str, s, len);
+ ret = rb_cstr_parse_inum(s, len, (badcheck ? NULL : &end), base);
+ if (NIL_P(ret)) {
+ if (badcheck) {
+ if (!raise_exception) return Qnil;
+ invalid_integer(str);
+ }
+ ret = INT2FIX(0);
}
- return rb_cstr2inum(s, base);
+ return ret;
}
-static char hexmap[] = "0123456789abcdef";
VALUE
-rb_big2str(x, base)
- VALUE x;
+rb_str_to_inum(VALUE str, int base, int badcheck)
+{
+ return rb_str_convert_to_inum(str, base, badcheck, TRUE);
+}
+
+VALUE
+rb_str2big_poweroftwo(VALUE arg, int base, int badcheck)
+{
+ int positive_p = 1;
+ const char *s, *str;
+ const char *digits_start, *digits_end;
+ size_t num_digits;
+ ssize_t len;
+ VALUE z;
+
+ if (!valid_radix_p(base) || !POW2_P(base)) {
+ invalid_radix(base);
+ }
+
+ rb_must_asciicompat(arg);
+ s = str = StringValueCStr(arg);
+ len = RSTRING_LEN(arg);
+ if (*str == '-') {
+ len--;
+ str++;
+ positive_p = 0;
+ }
+
+ digits_start = str;
+ if (!str2big_scan_digits(s, str, base, badcheck, &num_digits, &len))
+ invalid_integer(arg);
+ digits_end = digits_start + len;
+
+ z = str2big_poweroftwo(positive_p, digits_start, digits_end, num_digits,
+ bit_length(base-1));
+
+ RB_GC_GUARD(arg);
+
+ return bignorm(z);
+}
+
+VALUE
+rb_str2big_normal(VALUE arg, int base, int badcheck)
+{
+ int positive_p = 1;
+ const char *s, *str;
+ const char *digits_start, *digits_end;
+ size_t num_digits;
+ ssize_t len;
+ VALUE z;
+
+ int digits_per_bdigits_dbl;
+ size_t num_bdigits;
+
+ if (!valid_radix_p(base)) {
+ invalid_radix(base);
+ }
+
+ rb_must_asciicompat(arg);
+ s = str = StringValuePtr(arg);
+ len = RSTRING_LEN(arg);
+ if (len > 0 && *str == '-') {
+ len--;
+ str++;
+ positive_p = 0;
+ }
+
+ digits_start = str;
+ if (!str2big_scan_digits(s, str, base, badcheck, &num_digits, &len))
+ invalid_integer(arg);
+ digits_end = digits_start + len;
+
+ maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
+ num_bdigits = roomof(num_digits, digits_per_bdigits_dbl)*2;
+
+ z = str2big_normal(positive_p, digits_start, digits_end,
+ num_bdigits, base);
+
+ RB_GC_GUARD(arg);
+
+ return bignorm(z);
+}
+
+VALUE
+rb_str2big_karatsuba(VALUE arg, int base, int badcheck)
+{
+ int positive_p = 1;
+ const char *s, *str;
+ const char *digits_start, *digits_end;
+ size_t num_digits;
+ ssize_t len;
+ VALUE z;
+
+ int digits_per_bdigits_dbl;
+ size_t num_bdigits;
+
+ if (!valid_radix_p(base)) {
+ invalid_radix(base);
+ }
+
+ rb_must_asciicompat(arg);
+ s = str = StringValuePtr(arg);
+ len = RSTRING_LEN(arg);
+ if (len > 0 && *str == '-') {
+ len--;
+ str++;
+ positive_p = 0;
+ }
+
+ digits_start = str;
+ if (!str2big_scan_digits(s, str, base, badcheck, &num_digits, &len))
+ invalid_integer(arg);
+ digits_end = digits_start + len;
+
+ maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
+ num_bdigits = roomof(num_digits, digits_per_bdigits_dbl)*2;
+
+ z = str2big_karatsuba(positive_p, digits_start, digits_end, num_digits,
+ num_bdigits, digits_per_bdigits_dbl, base);
+
+ RB_GC_GUARD(arg);
+
+ return bignorm(z);
+}
+
+#if USE_GMP
+VALUE
+rb_str2big_gmp(VALUE arg, int base, int badcheck)
+{
+ int positive_p = 1;
+ const char *s, *str;
+ const char *digits_start, *digits_end;
+ size_t num_digits;
+ ssize_t len;
+ VALUE z;
+
+ int digits_per_bdigits_dbl;
+ size_t num_bdigits;
+
+ if (!valid_radix_p(base)) {
+ invalid_radix(base);
+ }
+
+ rb_must_asciicompat(arg);
+ s = str = StringValuePtr(arg);
+ len = RSTRING_LEN(arg);
+ if (len > 0 && *str == '-') {
+ len--;
+ str++;
+ positive_p = 0;
+ }
+
+ digits_start = str;
+ if (!str2big_scan_digits(s, str, base, badcheck, &num_digits, &len))
+ invalid_integer(arg);
+ digits_end = digits_start + len;
+
+ maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
+ num_bdigits = roomof(num_digits, digits_per_bdigits_dbl)*2;
+
+ z = str2big_gmp(positive_p, digits_start, digits_end, num_digits, num_bdigits, base);
+
+ RB_GC_GUARD(arg);
+
+ return bignorm(z);
+}
+#endif
+
+#if HAVE_LONG_LONG
+
+static VALUE
+rb_ull2big(unsigned LONG_LONG n)
+{
+ long i;
+ VALUE big = bignew(bdigit_roomof(SIZEOF_LONG_LONG), 1);
+ BDIGIT *digits = BDIGITS(big);
+
+#if SIZEOF_BDIGIT >= SIZEOF_LONG_LONG
+ digits[0] = n;
+#else
+ for (i = 0; i < bdigit_roomof(SIZEOF_LONG_LONG); i++) {
+ digits[i] = BIGLO(n);
+ n = BIGDN(n);
+ }
+#endif
+
+ i = bdigit_roomof(SIZEOF_LONG_LONG);
+ while (i-- && !digits[i]) ;
+ BIGNUM_SET_LEN(big, i+1);
+ return big;
+}
+
+static VALUE
+rb_ll2big(LONG_LONG n)
+{
+ long neg = 0;
+ unsigned LONG_LONG u;
+ VALUE big;
+
+ if (n < 0) {
+ u = 1 + (unsigned LONG_LONG)(-(n + 1)); /* u = -n avoiding overflow */
+ neg = 1;
+ }
+ else {
+ u = n;
+ }
+ big = rb_ull2big(u);
+ if (neg) {
+ BIGNUM_SET_NEGATIVE_SIGN(big);
+ }
+ return big;
+}
+
+VALUE
+rb_ull2inum(unsigned LONG_LONG n)
+{
+ if (POSFIXABLE(n)) return LONG2FIX((long)n);
+ return rb_ull2big(n);
+}
+
+VALUE
+rb_ll2inum(LONG_LONG n)
+{
+ if (FIXABLE(n)) return LONG2FIX((long)n);
+ return rb_ll2big(n);
+}
+
+#endif /* HAVE_LONG_LONG */
+
+#ifdef HAVE_INT128_T
+static VALUE
+rb_uint128t2big(uint128_t n)
+{
+ long i;
+ VALUE big = bignew(bdigit_roomof(SIZEOF_INT128_T), 1);
+ BDIGIT *digits = BDIGITS(big);
+
+ for (i = 0; i < bdigit_roomof(SIZEOF_INT128_T); i++) {
+ digits[i] = BIGLO(RSHIFT(n ,BITSPERDIG*i));
+ }
+
+ i = bdigit_roomof(SIZEOF_INT128_T);
+ while (i-- && !digits[i]) ;
+ BIGNUM_SET_LEN(big, i+1);
+ return big;
+}
+
+MJIT_FUNC_EXPORTED VALUE
+rb_int128t2big(int128_t n)
+{
+ int neg = 0;
+ uint128_t u;
+ VALUE big;
+
+ if (n < 0) {
+ u = 1 + (uint128_t)(-(n + 1)); /* u = -n avoiding overflow */
+ neg = 1;
+ }
+ else {
+ u = n;
+ }
+ big = rb_uint128t2big(u);
+ if (neg) {
+ BIGNUM_SET_NEGATIVE_SIGN(big);
+ }
+ return big;
+}
+#endif
+
+VALUE
+rb_cstr2inum(const char *str, int base)
+{
+ return rb_cstr_to_inum(str, base, base==0);
+}
+
+VALUE
+rb_str2inum(VALUE str, int base)
+{
+ return rb_str_to_inum(str, base, base==0);
+}
+
+static VALUE
+big_shift3(VALUE x, int lshift_p, size_t shift_numdigits, int shift_numbits)
+{
+ BDIGIT *xds, *zds;
+ long s1;
+ int s2;
+ VALUE z;
+ long xn;
+
+ if (lshift_p) {
+ if (LONG_MAX < shift_numdigits) {
+ too_big:
+ rb_raise(rb_eRangeError, "shift width too big");
+ }
+ s1 = shift_numdigits;
+ s2 = shift_numbits;
+ if ((size_t)s1 != shift_numdigits) goto too_big;
+ xn = BIGNUM_LEN(x);
+ if (LONG_MAX/SIZEOF_BDIGIT <= xn+s1) goto too_big;
+ z = bignew(xn+s1+1, BIGNUM_SIGN(x));
+ zds = BDIGITS(z);
+ BDIGITS_ZERO(zds, s1);
+ xds = BDIGITS(x);
+ zds[xn+s1] = bary_small_lshift(zds+s1, xds, xn, s2);
+ }
+ else {
+ long zn;
+ BDIGIT hibitsx;
+ if (LONG_MAX < shift_numdigits || (size_t)BIGNUM_LEN(x) <= shift_numdigits) {
+ if (BIGNUM_POSITIVE_P(x) ||
+ bary_zero_p(BDIGITS(x), BIGNUM_LEN(x)))
+ return INT2FIX(0);
+ else
+ return INT2FIX(-1);
+ }
+ s1 = shift_numdigits;
+ s2 = shift_numbits;
+ hibitsx = abs2twocomp(&x, &xn);
+ xds = BDIGITS(x);
+ if (xn <= s1) {
+ return hibitsx ? INT2FIX(-1) : INT2FIX(0);
+ }
+ zn = xn - s1;
+ z = bignew(zn, 0);
+ zds = BDIGITS(z);
+ bary_small_rshift(zds, xds+s1, zn, s2, hibitsx != 0 ? BDIGMAX : 0);
+ twocomp2abs_bang(z, hibitsx != 0);
+ }
+ RB_GC_GUARD(x);
+ return z;
+}
+
+static VALUE
+big_shift2(VALUE x, int lshift_p, VALUE y)
+{
+ int sign;
+ size_t lens[2];
+ size_t shift_numdigits;
+ int shift_numbits;
+
+ assert(POW2_P(CHAR_BIT));
+ assert(POW2_P(BITSPERDIG));
+
+ if (BIGZEROP(x))
+ return INT2FIX(0);
+ sign = rb_integer_pack(y, lens, numberof(lens), sizeof(size_t), 0,
+ INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_NATIVE_BYTE_ORDER);
+ if (sign < 0) {
+ lshift_p = !lshift_p;
+ sign = -sign;
+ }
+ if (lshift_p) {
+ if (1 < sign || CHAR_BIT <= lens[1])
+ rb_raise(rb_eRangeError, "shift width too big");
+ }
+ else {
+ if (1 < sign || CHAR_BIT <= lens[1])
+ return BIGNUM_POSITIVE_P(x) ? INT2FIX(0) : INT2FIX(-1);
+ }
+ shift_numbits = (int)(lens[0] & (BITSPERDIG-1));
+ shift_numdigits = (lens[0] >> bit_length(BITSPERDIG-1)) |
+ (lens[1] << (CHAR_BIT*SIZEOF_SIZE_T - bit_length(BITSPERDIG-1)));
+ return big_shift3(x, lshift_p, shift_numdigits, shift_numbits);
+}
+
+static VALUE
+big_lshift(VALUE x, unsigned long shift)
+{
+ long s1 = shift/BITSPERDIG;
+ int s2 = (int)(shift%BITSPERDIG);
+ return big_shift3(x, 1, s1, s2);
+}
+
+static VALUE
+big_rshift(VALUE x, unsigned long shift)
+{
+ long s1 = shift/BITSPERDIG;
+ int s2 = (int)(shift%BITSPERDIG);
+ return big_shift3(x, 0, s1, s2);
+}
+
+#define MAX_BASE36_POWER_TABLE_ENTRIES (SIZEOF_SIZE_T * CHAR_BIT + 1)
+
+static VALUE base36_power_cache[35][MAX_BASE36_POWER_TABLE_ENTRIES];
+static size_t base36_numdigits_cache[35][MAX_BASE36_POWER_TABLE_ENTRIES];
+
+static void
+power_cache_init(void)
+{
+}
+
+static inline VALUE
+power_cache_get_power(int base, int power_level, size_t *numdigits_ret)
+{
+ /*
+ * MAX_BASE36_POWER_TABLE_ENTRIES is big enough to that
+ * base36_power_cache[base][MAX_BASE36_POWER_TABLE_ENTRIES-1] fills whole memory.
+ * So MAX_BASE36_POWER_TABLE_ENTRIES <= power_level is not possible to calculate.
+ *
+ * number-of-bytes =
+ * log256(base36_power_cache[base][MAX_BASE36_POWER_TABLE_ENTRIES-1]) =
+ * log256(maxpow_in_bdigit_dbl(base)**(2**(MAX_BASE36_POWER_TABLE_ENTRIES-1))) =
+ * log256(maxpow_in_bdigit_dbl(base)**(2**(SIZEOF_SIZE_T*CHAR_BIT))) =
+ * (2**(SIZEOF_SIZE_T*CHAR_BIT))*log256(maxpow_in_bdigit_dbl(base)) =
+ * (256**SIZEOF_SIZE_T)*log256(maxpow_in_bdigit_dbl(base)) >
+ * (256**SIZEOF_SIZE_T)*(sizeof(BDIGIT_DBL)-1) >
+ * 256**SIZEOF_SIZE_T
+ */
+ if (MAX_BASE36_POWER_TABLE_ENTRIES <= power_level)
+ rb_bug("too big power number requested: maxpow_in_bdigit_dbl(%d)**(2**%d)", base, power_level);
+
+ VALUE power = base36_power_cache[base - 2][power_level];
+ if (!power) {
+ size_t numdigits;
+ if (power_level == 0) {
+ int numdigits0;
+ BDIGIT_DBL dd = maxpow_in_bdigit_dbl(base, &numdigits0);
+ power = bignew(2, 1);
+ bdigitdbl2bary(BDIGITS(power), 2, dd);
+ numdigits = numdigits0;
+ }
+ else {
+ power = bigtrunc(bigsq(power_cache_get_power(base, power_level - 1, &numdigits)));
+ numdigits *= 2;
+ }
+ rb_obj_hide(power);
+ base36_power_cache[base - 2][power_level] = power;
+ base36_numdigits_cache[base - 2][power_level] = numdigits;
+ rb_gc_register_mark_object(power);
+ }
+ if (numdigits_ret)
+ *numdigits_ret = base36_numdigits_cache[base - 2][power_level];
+ return power;
+}
+
+struct big2str_struct {
+ int negative;
int base;
+ BDIGIT_DBL hbase2;
+ int hbase2_numdigits;
+ VALUE result;
+ char *ptr;
+};
+
+static void
+big2str_alloc(struct big2str_struct *b2s, size_t len)
{
- VALUE t;
- USHORT *ds;
- unsigned long i, j, hbase;
- VALUE ss;
- char *s, c;
+ if (LONG_MAX-1 < len)
+ rb_raise(rb_eArgError, "too big number");
+ b2s->result = rb_usascii_str_new(0, (long)(len + 1)); /* plus one for sign */
+ b2s->ptr = RSTRING_PTR(b2s->result);
+ if (b2s->negative)
+ *b2s->ptr++ = '-';
+}
- if (FIXNUM_P(x)) {
- return rb_fix2str(x, base);
+static void
+big2str_2bdigits(struct big2str_struct *b2s, BDIGIT *xds, size_t xn, size_t taillen)
+{
+ size_t j;
+ BDIGIT_DBL num;
+ char buf[SIZEOF_BDIGIT_DBL*CHAR_BIT], *p;
+ int beginning = !b2s->ptr;
+ size_t len = 0;
+
+ assert(xn <= 2);
+ num = bary2bdigitdbl(xds, xn);
+
+ if (beginning) {
+ if (num == 0)
+ return;
+ p = buf;
+ j = sizeof(buf);
+ do {
+ BDIGIT_DBL idx = num % b2s->base;
+ num /= b2s->base;
+ p[--j] = ruby_digitmap[idx];
+ } while (num);
+ len = sizeof(buf) - j;
+ big2str_alloc(b2s, len + taillen);
+ MEMCPY(b2s->ptr, buf + j, char, len);
}
- i = RBIGNUM(x)->len;
- if (i == 0) return rb_str_new2("0");
- if (base == 10) {
- j = (sizeof(USHORT)/sizeof(char)*CHAR_BIT*i*241L)/800+2;
- hbase = 10000;
+ else {
+ p = b2s->ptr;
+ j = b2s->hbase2_numdigits;
+ do {
+ BDIGIT_DBL idx = num % b2s->base;
+ num /= b2s->base;
+ p[--j] = ruby_digitmap[idx];
+ } while (j);
+ len = b2s->hbase2_numdigits;
}
- else if (base == 16) {
- j = (sizeof(USHORT)/sizeof(char)*CHAR_BIT*i)/4+2;
- hbase = 0x10000;
+ b2s->ptr += len;
+}
+
+static void
+big2str_karatsuba(struct big2str_struct *b2s, BDIGIT *xds, size_t xn, size_t wn,
+ int power_level, size_t taillen)
+{
+ VALUE b;
+ size_t half_numdigits, lower_numdigits;
+ int lower_power_level;
+ size_t bn;
+ const BDIGIT *bds;
+ size_t len;
+
+ /*
+ * Precondition:
+ * abs(x) < maxpow**(2**power_level)
+ * where
+ * maxpow = maxpow_in_bdigit_dbl(base, &numdigits)
+ *
+ * This function generates sequence of zeros, and then stringized abs(x) into b2s->ptr.
+ *
+ * b2s->ptr can be NULL.
+ * It is allocated when the first character is generated via big2str_alloc.
+ *
+ * The prefix zeros should be generated if and only if b2s->ptr is not NULL.
+ * When the zeros are generated, the zeros and abs(x) consists
+ * numdigits*(2**power_level) characters at total.
+ *
+ * Note:
+ * power_cache_get_power(base, power_level, &len) may not be cached yet. It should not be called.
+ * power_cache_get_power(base, power_level-1, &len) should be cached already if 0 <= power_level-1.
+ */
+
+ if (xn == 0 || bary_zero_p(xds, xn)) {
+ if (b2s->ptr) {
+ /* When x is zero, power_cache_get_power(base, power_level) should be cached already. */
+ power_cache_get_power(b2s->base, power_level, &len);
+ memset(b2s->ptr, '0', len);
+ b2s->ptr += len;
+ }
+ return;
}
- else if (base == 8) {
- j = (sizeof(USHORT)/sizeof(char)*CHAR_BIT*i)+2;
- hbase = 010000;
+
+ if (power_level == 0) {
+ big2str_2bdigits(b2s, xds, xn, taillen);
+ return;
+ }
+
+ lower_power_level = power_level-1;
+ b = power_cache_get_power(b2s->base, lower_power_level, &lower_numdigits);
+ bn = BIGNUM_LEN(b);
+ bds = BDIGITS(b);
+
+ half_numdigits = lower_numdigits;
+
+ while (0 < lower_power_level &&
+ (xn < bn ||
+ (xn == bn && bary_cmp(xds, xn, bds, bn) < 0))) {
+ lower_power_level--;
+ b = power_cache_get_power(b2s->base, lower_power_level, &lower_numdigits);
+ bn = BIGNUM_LEN(b);
+ bds = BDIGITS(b);
+ }
+
+ if (lower_power_level == 0 &&
+ (xn < bn ||
+ (xn == bn && bary_cmp(xds, xn, bds, bn) < 0))) {
+ if (b2s->ptr) {
+ len = half_numdigits * 2 - lower_numdigits;
+ memset(b2s->ptr, '0', len);
+ b2s->ptr += len;
+ }
+ big2str_2bdigits(b2s, xds, xn, taillen);
+ }
+ else {
+ BDIGIT *qds, *rds;
+ size_t qn, rn;
+ BDIGIT *tds;
+ int shift;
+
+ if (lower_power_level != power_level-1 && b2s->ptr) {
+ len = (half_numdigits - lower_numdigits) * 2;
+ memset(b2s->ptr, '0', len);
+ b2s->ptr += len;
+ }
+
+ shift = nlz(bds[bn-1]);
+
+ qn = xn + BIGDIVREM_EXTRA_WORDS;
+
+ if (shift == 0) {
+ /* bigdivrem_restoring will not modify y.
+ * So use bds directly. */
+ tds = (BDIGIT *)bds;
+ xds[xn] = 0;
+ }
+ else {
+ /* bigdivrem_restoring will modify y.
+ * So use temporary buffer. */
+ tds = xds + qn;
+ assert(qn + bn <= xn + wn);
+ bary_small_lshift(tds, bds, bn, shift);
+ xds[xn] = bary_small_lshift(xds, xds, xn, shift);
+ }
+
+ bigdivrem_restoring(xds, qn, tds, bn);
+
+ rds = xds;
+ rn = bn;
+
+ qds = xds + bn;
+ qn = qn - bn;
+
+ if (shift) {
+ bary_small_rshift(rds, rds, rn, shift, 0);
+ }
+
+ BARY_TRUNC(qds, qn);
+ assert(qn <= bn);
+ big2str_karatsuba(b2s, qds, qn, xn+wn - (rn+qn), lower_power_level, lower_numdigits+taillen);
+ BARY_TRUNC(rds, rn);
+ big2str_karatsuba(b2s, rds, rn, xn+wn - rn, lower_power_level, taillen);
}
- else if (base == 2) {
- j = (sizeof(USHORT)*CHAR_BIT*i)+2;
- hbase = 020;
- }
- else {
- j = 0;
- hbase = 0;
- rb_raise(rb_eArgError, "bignum cannot treat base %d", base);
- }
-
- t = rb_big_clone(x);
- ds = BDIGITS(t);
- ss = rb_str_new(0, j);
- s = RSTRING(ss)->ptr;
-
- s[0] = RBIGNUM(x)->sign ? '+' : '-';
- while (i && j) {
- long k = i;
- unsigned long num = 0;
- while (k--) {
- num = BIGUP(num) + ds[k];
- ds[k] = (USHORT)(num / hbase);
- num %= hbase;
- }
- if (ds[i-1] == 0) i--;
- k = 4;
- while (k--) {
- c = (char)(num % base);
- s[--j] = hexmap[(int)c];
- num /= base;
- if (i == 0 && num == 0) break;
- }
- }
- while (s[j] == '0') j++;
- RSTRING(ss)->len -= RBIGNUM(x)->sign?j:j-1;
- memmove(RBIGNUM(x)->sign?s:s+1, s+j, RSTRING(ss)->len);
- s[RSTRING(ss)->len] = '\0';
-
- return ss;
}
static VALUE
-rb_big_to_s(x)
- VALUE x;
+big2str_base_poweroftwo(VALUE x, int base)
+{
+ int word_numbits = ffs(base) - 1;
+ size_t numwords;
+ VALUE result;
+ char *ptr;
+ numwords = rb_absint_numwords(x, word_numbits, NULL);
+ if (BIGNUM_NEGATIVE_P(x)) {
+ if (LONG_MAX-1 < numwords)
+ rb_raise(rb_eArgError, "too big number");
+ result = rb_usascii_str_new(0, 1+numwords);
+ ptr = RSTRING_PTR(result);
+ *ptr++ = BIGNUM_POSITIVE_P(x) ? '+' : '-';
+ }
+ else {
+ if (LONG_MAX < numwords)
+ rb_raise(rb_eArgError, "too big number");
+ result = rb_usascii_str_new(0, numwords);
+ ptr = RSTRING_PTR(result);
+ }
+ rb_integer_pack(x, ptr, numwords, 1, CHAR_BIT-word_numbits,
+ INTEGER_PACK_BIG_ENDIAN);
+ while (0 < numwords) {
+ *ptr = ruby_digitmap[*(unsigned char *)ptr];
+ ptr++;
+ numwords--;
+ }
+ return result;
+}
+
+VALUE
+rb_big2str_poweroftwo(VALUE x, int base)
{
- return rb_big2str(x, 10);
+ return big2str_base_poweroftwo(x, base);
+}
+
+static VALUE
+big2str_generic(VALUE x, int base)
+{
+ BDIGIT *xds;
+ size_t xn;
+ struct big2str_struct b2s_data;
+ int power_level;
+ VALUE power;
+
+ xds = BDIGITS(x);
+ xn = BIGNUM_LEN(x);
+ BARY_TRUNC(xds, xn);
+
+ if (xn == 0) {
+ return rb_usascii_str_new2("0");
+ }
+
+ if (!valid_radix_p(base))
+ invalid_radix(base);
+
+ if (xn >= LONG_MAX/BITSPERDIG) {
+ rb_raise(rb_eRangeError, "bignum too big to convert into `string'");
+ }
+
+ power_level = 0;
+ power = power_cache_get_power(base, power_level, NULL);
+ while (power_level < MAX_BASE36_POWER_TABLE_ENTRIES &&
+ (size_t)BIGNUM_LEN(power) <= (xn+1)/2) {
+ power_level++;
+ power = power_cache_get_power(base, power_level, NULL);
+ }
+ assert(power_level != MAX_BASE36_POWER_TABLE_ENTRIES);
+
+ if ((size_t)BIGNUM_LEN(power) <= xn) {
+ /*
+ * This increment guarantees x < power_cache_get_power(base, power_level)
+ * without invoking it actually.
+ * (power_cache_get_power(base, power_level) can be slow and not used
+ * in big2str_karatsuba.)
+ *
+ * Although it is possible that x < power_cache_get_power(base, power_level-1),
+ * it is no problem because big2str_karatsuba checks it and
+ * doesn't affect the result when b2s_data.ptr is NULL.
+ */
+ power_level++;
+ }
+
+ b2s_data.negative = BIGNUM_NEGATIVE_P(x);
+ b2s_data.base = base;
+ b2s_data.hbase2 = maxpow_in_bdigit_dbl(base, &b2s_data.hbase2_numdigits);
+
+ b2s_data.result = Qnil;
+ b2s_data.ptr = NULL;
+
+ if (power_level == 0) {
+ big2str_2bdigits(&b2s_data, xds, xn, 0);
+ }
+ else {
+ VALUE tmpw = 0;
+ BDIGIT *wds;
+ size_t wn;
+ wn = power_level * BIGDIVREM_EXTRA_WORDS + BIGNUM_LEN(power);
+ wds = ALLOCV_N(BDIGIT, tmpw, xn + wn);
+ MEMCPY(wds, xds, BDIGIT, xn);
+ big2str_karatsuba(&b2s_data, wds, xn, wn, power_level, 0);
+ if (tmpw)
+ ALLOCV_END(tmpw);
+ }
+ RB_GC_GUARD(x);
+
+ *b2s_data.ptr = '\0';
+ rb_str_resize(b2s_data.result, (long)(b2s_data.ptr - RSTRING_PTR(b2s_data.result)));
+
+ RB_GC_GUARD(x);
+ return b2s_data.result;
+}
+
+VALUE
+rb_big2str_generic(VALUE x, int base)
+{
+ return big2str_generic(x, base);
+}
+
+#if USE_GMP
+static VALUE
+big2str_gmp(VALUE x, int base)
+{
+ mpz_t mx;
+ size_t size;
+ VALUE str;
+ BDIGIT *xds = BDIGITS(x);
+ size_t xn = BIGNUM_LEN(x);
+
+ mpz_init(mx);
+ bdigits_to_mpz(mx, xds, xn);
+
+ size = mpz_sizeinbase(mx, base);
+
+ if (BIGNUM_NEGATIVE_P(x)) {
+ mpz_neg(mx, mx);
+ str = rb_usascii_str_new(0, size+1);
+ }
+ else {
+ str = rb_usascii_str_new(0, size);
+ }
+ mpz_get_str(RSTRING_PTR(str), base, mx);
+ mpz_clear(mx);
+
+ if (RSTRING_PTR(str)[RSTRING_LEN(str)-1] == '\0') {
+ rb_str_set_len(str, RSTRING_LEN(str)-1);
+ }
+
+ RB_GC_GUARD(x);
+ return str;
+}
+
+VALUE
+rb_big2str_gmp(VALUE x, int base)
+{
+ return big2str_gmp(x, base);
+}
+#endif
+
+static VALUE
+rb_big2str1(VALUE x, int base)
+{
+ BDIGIT *xds;
+ size_t xn;
+
+ if (FIXNUM_P(x)) {
+ return rb_fix2str(x, base);
+ }
+
+ bigtrunc(x);
+ xds = BDIGITS(x);
+ xn = BIGNUM_LEN(x);
+ BARY_TRUNC(xds, xn);
+
+ if (xn == 0) {
+ return rb_usascii_str_new2("0");
+ }
+
+ if (!valid_radix_p(base))
+ invalid_radix(base);
+
+ if (xn >= LONG_MAX/BITSPERDIG) {
+ rb_raise(rb_eRangeError, "bignum too big to convert into `string'");
+ }
+
+ if (POW2_P(base)) {
+ /* base == 2 || base == 4 || base == 8 || base == 16 || base == 32 */
+ return big2str_base_poweroftwo(x, base);
+ }
+
+#if USE_GMP
+ if (GMP_BIG2STR_DIGITS < xn) {
+ return big2str_gmp(x, base);
+ }
+#endif
+
+ return big2str_generic(x, base);
+}
+
+VALUE
+rb_big2str(VALUE x, int base)
+{
+ return rb_big2str1(x, base);
}
static unsigned long
-big2ulong(x, type)
- VALUE x;
- char *type;
+big2ulong(VALUE x, const char *type)
{
+#if SIZEOF_LONG > SIZEOF_BDIGIT
+ size_t i;
+#endif
+ size_t len = BIGNUM_LEN(x);
unsigned long num;
- long len = RBIGNUM(x)->len;
- USHORT *ds;
+ BDIGIT *ds;
- if (len > sizeof(long)/sizeof(USHORT))
- rb_raise(rb_eRangeError, "bignum too big to convert into `%s'", type);
+ if (len == 0)
+ return 0;
+ if (BIGSIZE(x) > sizeof(long)) {
+ rb_raise(rb_eRangeError, "bignum too big to convert into `%s'", type);
+ }
ds = BDIGITS(x);
+#if SIZEOF_LONG <= SIZEOF_BDIGIT
+ num = (unsigned long)ds[0];
+#else
num = 0;
- while (len--) {
- num = BIGUP(num);
- num += ds[len];
+ for (i = 0; i < len; i++) {
+ num <<= BITSPERDIG;
+ num += (unsigned long)ds[len - i - 1]; /* overflow is already checked */
}
+#endif
return num;
}
unsigned long
-rb_big2ulong(x)
- VALUE x;
+rb_big2ulong(VALUE x)
{
unsigned long num = big2ulong(x, "unsigned long");
- if (!RBIGNUM(x)->sign) return -num;
- return num;
+ if (BIGNUM_POSITIVE_P(x)) {
+ return num;
+ }
+ else {
+ if (num <= 1+(unsigned long)(-(LONG_MIN+1)))
+ return -(long)(num-1)-1;
+ }
+ rb_raise(rb_eRangeError, "bignum out of range of unsigned long");
}
long
-rb_big2long(x)
- VALUE x;
+rb_big2long(VALUE x)
{
- unsigned long num = big2ulong(x, "int");
+ unsigned long num = big2ulong(x, "long");
- if ((long)num < 0) {
- rb_raise(rb_eRangeError, "bignum too big to convert into `int'");
+ if (BIGNUM_POSITIVE_P(x)) {
+ if (num <= LONG_MAX)
+ return num;
+ }
+ else {
+ if (num <= 1+(unsigned long)(-(LONG_MIN+1)))
+ return -(long)(num-1)-1;
+ }
+ rb_raise(rb_eRangeError, "bignum too big to convert into `long'");
+}
+
+#if HAVE_LONG_LONG
+
+static unsigned LONG_LONG
+big2ull(VALUE x, const char *type)
+{
+#if SIZEOF_LONG_LONG > SIZEOF_BDIGIT
+ size_t i;
+#endif
+ size_t len = BIGNUM_LEN(x);
+ unsigned LONG_LONG num;
+ BDIGIT *ds = BDIGITS(x);
+
+ if (len == 0)
+ return 0;
+ if (BIGSIZE(x) > SIZEOF_LONG_LONG)
+ rb_raise(rb_eRangeError, "bignum too big to convert into `%s'", type);
+#if SIZEOF_LONG_LONG <= SIZEOF_BDIGIT
+ num = (unsigned LONG_LONG)ds[0];
+#else
+ num = 0;
+ for (i = 0; i < len; i++) {
+ num = BIGUP(num);
+ num += ds[len - i - 1];
}
- if (!RBIGNUM(x)->sign) return -(long)num;
+#endif
return num;
}
+unsigned LONG_LONG
+rb_big2ull(VALUE x)
+{
+ unsigned LONG_LONG num = big2ull(x, "unsigned long long");
+
+ if (BIGNUM_POSITIVE_P(x)) {
+ return num;
+ }
+ else {
+ if (num <= 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))
+ return -(LONG_LONG)(num-1)-1;
+ }
+ rb_raise(rb_eRangeError, "bignum out of range of unsigned long long");
+}
+
+LONG_LONG
+rb_big2ll(VALUE x)
+{
+ unsigned LONG_LONG num = big2ull(x, "long long");
+
+ if (BIGNUM_POSITIVE_P(x)) {
+ if (num <= LLONG_MAX)
+ return num;
+ }
+ else {
+ if (num <= 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))
+ return -(LONG_LONG)(num-1)-1;
+ }
+ rb_raise(rb_eRangeError, "bignum too big to convert into `long long'");
+}
+
+#endif /* HAVE_LONG_LONG */
+
static VALUE
-dbl2big(d)
- double d;
+dbl2big(double d)
{
- unsigned long i = 0;
- long c;
- USHORT *digits;
+ long i = 0;
+ BDIGIT c;
+ BDIGIT *digits;
VALUE z;
double u = (d < 0)?-d:d;
if (isinf(d)) {
- rb_raise(rb_eFloatDomainError, d < 0 ? "-Infinity" : "Infinity");
+ rb_raise(rb_eFloatDomainError, d < 0 ? "-Infinity" : "Infinity");
}
if (isnan(d)) {
- rb_raise(rb_eFloatDomainError, "NaN");
+ rb_raise(rb_eFloatDomainError, "NaN");
}
- while (!POSFIXABLE(u) || 0 != (long)u) {
- u /= (double)(BIGRAD);
- i++;
+ while (1.0 <= u) {
+ u /= (double)(BIGRAD);
+ i++;
}
z = bignew(i, d>=0);
digits = BDIGITS(z);
while (i--) {
- u *= BIGRAD;
- c = (long)u;
- u -= c;
- digits[i] = (USHORT)c;
+ u *= BIGRAD;
+ c = (BDIGIT)u;
+ u -= c;
+ digits[i] = c;
}
return z;
}
VALUE
-rb_dbl2big(d)
- double d;
+rb_dbl2big(double d)
{
return bignorm(dbl2big(d));
}
-double
-rb_big2dbl(x)
- VALUE x;
+static double
+big2dbl(VALUE x)
{
double d = 0.0;
- long i = RBIGNUM(x)->len;
- USHORT *ds = BDIGITS(x);
+ long i = (bigtrunc(x), BIGNUM_LEN(x)), lo = 0, bits;
+ BDIGIT *ds = BDIGITS(x), dl;
+
+ if (i) {
+ bits = i * BITSPERDIG - nlz(ds[i-1]);
+ if (bits > DBL_MANT_DIG+DBL_MAX_EXP) {
+ d = HUGE_VAL;
+ }
+ else {
+ if (bits > DBL_MANT_DIG+1)
+ lo = (bits -= DBL_MANT_DIG+1) / BITSPERDIG;
+ else
+ bits = 0;
+ while (--i > lo) {
+ d = ds[i] + BIGRAD*d;
+ }
+ dl = ds[i];
+ if (bits && (dl & ((BDIGIT)1 << (bits %= BITSPERDIG)))) {
+ int carry = (dl & ~(BDIGMAX << bits)) != 0;
+ if (!carry) {
+ while (i-- > 0) {
+ carry = ds[i] != 0;
+ if (carry) break;
+ }
+ }
+ if (carry) {
+ BDIGIT mask = BDIGMAX;
+ BDIGIT bit = 1;
+ mask <<= bits;
+ bit <<= bits;
+ dl &= mask;
+ dl += bit;
+ dl = BIGLO(dl);
+ if (!dl) d += 1;
+ }
+ }
+ d = dl + BIGRAD*d;
+ if (lo) {
+ if (lo > INT_MAX / BITSPERDIG)
+ d = HUGE_VAL;
+ else if (lo < INT_MIN / BITSPERDIG)
+ d = 0.0;
+ else
+ d = ldexp(d, (int)(lo * BITSPERDIG));
+ }
+ }
+ }
+ if (BIGNUM_NEGATIVE_P(x)) d = -d;
+ return d;
+}
- while (i--) {
- d = ds[i] + BIGRAD*d;
+double
+rb_big2dbl(VALUE x)
+{
+ double d = big2dbl(x);
+
+ if (isinf(d)) {
+ rb_warning("Integer out of Float range");
+ if (d < 0.0)
+ d = -HUGE_VAL;
+ else
+ d = HUGE_VAL;
}
- if (!RBIGNUM(x)->sign) d = -d;
return d;
}
-static VALUE
-rb_big_to_f(x)
- VALUE x;
+VALUE
+rb_integer_float_cmp(VALUE x, VALUE y)
{
- return rb_float_new(rb_big2dbl(x));
+ double yd = RFLOAT_VALUE(y);
+ double yi, yf;
+ VALUE rel;
+
+ if (isnan(yd))
+ return Qnil;
+ if (isinf(yd)) {
+ if (yd > 0.0) return INT2FIX(-1);
+ else return INT2FIX(1);
+ }
+ yf = modf(yd, &yi);
+ if (FIXNUM_P(x)) {
+#if SIZEOF_LONG * CHAR_BIT < DBL_MANT_DIG /* assume FLT_RADIX == 2 */
+ double xd = (double)FIX2LONG(x);
+ if (xd < yd)
+ return INT2FIX(-1);
+ if (xd > yd)
+ return INT2FIX(1);
+ return INT2FIX(0);
+#else
+ long xn, yn;
+ if (yi < FIXNUM_MIN)
+ return INT2FIX(1);
+ if (FIXNUM_MAX+1 <= yi)
+ return INT2FIX(-1);
+ xn = FIX2LONG(x);
+ yn = (long)yi;
+ if (xn < yn)
+ return INT2FIX(-1);
+ if (xn > yn)
+ return INT2FIX(1);
+ if (yf < 0.0)
+ return INT2FIX(1);
+ if (0.0 < yf)
+ return INT2FIX(-1);
+ return INT2FIX(0);
+#endif
+ }
+ y = rb_dbl2big(yi);
+ rel = rb_big_cmp(x, y);
+ if (yf == 0.0 || rel != INT2FIX(0))
+ return rel;
+ if (yf < 0.0)
+ return INT2FIX(1);
+ return INT2FIX(-1);
}
-static VALUE
-rb_big_cmp(x, y)
- VALUE x, y;
+#if SIZEOF_LONG * CHAR_BIT >= DBL_MANT_DIG /* assume FLT_RADIX == 2 */
+COMPILER_WARNING_PUSH
+#if __has_warning("-Wimplicit-int-float-conversion")
+COMPILER_WARNING_IGNORED(-Wimplicit-int-float-conversion)
+#endif
+static const double LONG_MAX_as_double = LONG_MAX;
+COMPILER_WARNING_POP
+#endif
+
+VALUE
+rb_integer_float_eq(VALUE x, VALUE y)
{
- long xlen = RBIGNUM(x)->len;
+ double yd = RFLOAT_VALUE(y);
+ double yi, yf;
+
+ if (!isfinite(yd))
+ return Qfalse;
+ yf = modf(yd, &yi);
+ if (yf != 0)
+ return Qfalse;
+ if (FIXNUM_P(x)) {
+#if SIZEOF_LONG * CHAR_BIT < DBL_MANT_DIG /* assume FLT_RADIX == 2 */
+ double xd = (double)FIX2LONG(x);
+ return RBOOL(xd == yd);
+#else
+ long xn, yn;
+ if (yi < LONG_MIN || LONG_MAX_as_double <= yi)
+ return Qfalse;
+ xn = FIX2LONG(x);
+ yn = (long)yi;
+ return RBOOL(xn == yn);
+#endif
+ }
+ y = rb_dbl2big(yi);
+ return rb_big_eq(x, y);
+}
+
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = rb_int2big(FIX2LONG(y));
- break;
+VALUE
+rb_big_cmp(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(y)) {
+ x = bigfixize(x);
+ if (FIXNUM_P(x)) {
+ /* SIGNED_VALUE and Fixnum have same sign-bits, same
+ * order */
+ SIGNED_VALUE sx = (SIGNED_VALUE)x, sy = (SIGNED_VALUE)y;
+ if (sx < sy) return INT2FIX(-1);
+ return INT2FIX(sx > sy);
+ }
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ if (BIGNUM_SIGN(x) == BIGNUM_SIGN(y)) {
+ int cmp = bary_cmp(BDIGITS(x), BIGNUM_LEN(x), BDIGITS(y), BIGNUM_LEN(y));
+ return INT2FIX(BIGNUM_SIGN(x) ? cmp : -cmp);
+ }
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ return rb_integer_float_cmp(x, y);
+ }
+ else {
+ return rb_num_coerce_cmp(x, y, idCmp);
+ }
+ return INT2FIX(BIGNUM_SIGN(x) ? 1 : -1);
+}
- case T_BIGNUM:
- break;
+enum big_op_t {
+ big_op_gt,
+ big_op_ge,
+ big_op_lt,
+ big_op_le
+};
- case T_FLOAT:
- y = dbl2big(RFLOAT(y)->value);
- break;
+static VALUE
+big_op(VALUE x, VALUE y, enum big_op_t op)
+{
+ VALUE rel;
+ int n;
- default:
- return rb_num_coerce_bin(x, y);
+ if (RB_INTEGER_TYPE_P(y)) {
+ rel = rb_big_cmp(x, y);
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ rel = rb_integer_float_cmp(x, y);
+ }
+ else {
+ ID id = 0;
+ switch (op) {
+ case big_op_gt: id = '>'; break;
+ case big_op_ge: id = idGE; break;
+ case big_op_lt: id = '<'; break;
+ case big_op_le: id = idLE; break;
+ }
+ return rb_num_coerce_relop(x, y, id);
}
- if (RBIGNUM(x)->sign > RBIGNUM(y)->sign) return INT2FIX(1);
- if (RBIGNUM(x)->sign < RBIGNUM(y)->sign) return INT2FIX(-1);
- if (xlen < RBIGNUM(y)->len)
- return (RBIGNUM(x)->sign) ? INT2FIX(-1) : INT2FIX(1);
- if (xlen > RBIGNUM(y)->len)
- return (RBIGNUM(x)->sign) ? INT2FIX(1) : INT2FIX(-1);
+ if (NIL_P(rel)) return Qfalse;
+ n = FIX2INT(rel);
- while(xlen-- && (BDIGITS(x)[xlen]==BDIGITS(y)[xlen]));
- if (-1 == xlen) return INT2FIX(0);
- return (BDIGITS(x)[xlen] > BDIGITS(y)[xlen]) ?
- (RBIGNUM(x)->sign ? INT2FIX(1) : INT2FIX(-1)) :
- (RBIGNUM(x)->sign ? INT2FIX(-1) : INT2FIX(1));
+ switch (op) {
+ case big_op_gt: return RBOOL(n > 0);
+ case big_op_ge: return RBOOL(n >= 0);
+ case big_op_lt: return RBOOL(n < 0);
+ case big_op_le: return RBOOL(n <= 0);
+ }
+ return Qundef;
}
-static VALUE
-rb_big_eq(x, y)
- VALUE x, y;
-{
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = rb_int2big(FIX2LONG(y));
- break;
- case T_BIGNUM:
- break;
- case T_FLOAT:
- y = dbl2big(RFLOAT(y)->value);
- break;
- default:
- return Qfalse;
- }
- if (RBIGNUM(x)->sign != RBIGNUM(y)->sign) return Qfalse;
- if (RBIGNUM(x)->len != RBIGNUM(y)->len) return Qfalse;
- if (MEMCMP(BDIGITS(x),BDIGITS(y),USHORT,RBIGNUM(y)->len) != 0) return Qfalse;
- return Qtrue;
+VALUE
+rb_big_gt(VALUE x, VALUE y)
+{
+ return big_op(x, y, big_op_gt);
}
-static VALUE
-rb_big_uminus(x)
- VALUE x;
+VALUE
+rb_big_ge(VALUE x, VALUE y)
+{
+ return big_op(x, y, big_op_ge);
+}
+
+VALUE
+rb_big_lt(VALUE x, VALUE y)
+{
+ return big_op(x, y, big_op_lt);
+}
+
+VALUE
+rb_big_le(VALUE x, VALUE y)
+{
+ return big_op(x, y, big_op_le);
+}
+
+/*
+ * call-seq:
+ * big == obj -> true or false
+ *
+ * Returns <code>true</code> only if <i>obj</i> has the same value
+ * as <i>big</i>. Contrast this with Integer#eql?, which requires
+ * <i>obj</i> to be an Integer.
+ *
+ * 68719476736 == 68719476736.0 #=> true
+ */
+
+VALUE
+rb_big_eq(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(y)) {
+ return RBOOL(bignorm(x) == y);
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ return rb_integer_float_eq(x, y);
+ }
+ else {
+ return rb_equal(y, x);
+ }
+ if (BIGNUM_SIGN(x) != BIGNUM_SIGN(y)) return Qfalse;
+ if (BIGNUM_LEN(x) != BIGNUM_LEN(y)) return Qfalse;
+ return RBOOL(MEMCMP(BDIGITS(x),BDIGITS(y),BDIGIT,BIGNUM_LEN(y)) == 0);
+}
+
+VALUE
+rb_big_eql(VALUE x, VALUE y)
+{
+ if (!RB_BIGNUM_TYPE_P(y)) return Qfalse;
+ if (BIGNUM_SIGN(x) != BIGNUM_SIGN(y)) return Qfalse;
+ if (BIGNUM_LEN(x) != BIGNUM_LEN(y)) return Qfalse;
+ return RBOOL(MEMCMP(BDIGITS(x),BDIGITS(y),BDIGIT,BIGNUM_LEN(y)) == 0);
+}
+
+VALUE
+rb_big_uminus(VALUE x)
{
VALUE z = rb_big_clone(x);
- RBIGNUM(z)->sign = !RBIGNUM(x)->sign;
+ BIGNUM_NEGATE(z);
return bignorm(z);
}
-static VALUE
-rb_big_neg(x)
- VALUE x;
+VALUE
+rb_big_comp(VALUE x)
{
VALUE z = rb_big_clone(x);
- long i = RBIGNUM(x)->len;
- USHORT *ds = BDIGITS(z);
+ BDIGIT *ds = BDIGITS(z);
+ long n = BIGNUM_LEN(z);
- if (!RBIGNUM(x)->sign) rb_big_2comp(z);
- while (i--) ds[i] = ~ds[i];
- if (RBIGNUM(x)->sign) rb_big_2comp(z);
- RBIGNUM(z)->sign = !RBIGNUM(z)->sign;
+ if (!n) return INT2FIX(-1);
+
+ if (BIGNUM_POSITIVE_P(z)) {
+ if (bary_add_one(ds, n)) {
+ big_extend_carry(z);
+ }
+ BIGNUM_SET_NEGATIVE_SIGN(z);
+ }
+ else {
+ bary_neg(ds, n);
+ if (bary_add_one(ds, n))
+ return INT2FIX(-1);
+ bary_neg(ds, n);
+ BIGNUM_SET_POSITIVE_SIGN(z);
+ }
return bignorm(z);
}
static VALUE
-bigsub(x, y)
- VALUE x, y;
+bigsub(VALUE x, VALUE y)
{
- VALUE z = 0;
- USHORT *zds;
- long num;
- long i;
+ VALUE z;
+ BDIGIT *xds, *yds, *zds;
+ long xn, yn, zn;
+
+ xn = BIGNUM_LEN(x);
+ yn = BIGNUM_LEN(y);
+ zn = xn < yn ? yn : xn;
- i = RBIGNUM(x)->len;
- /* if x is larger than y, swap */
- if (RBIGNUM(x)->len < RBIGNUM(y)->len) {
- z = x; x = y; y = z; /* swap x y */
- }
- else if (RBIGNUM(x)->len == RBIGNUM(y)->len) {
- while (i > 0) {
- i--;
- if (BDIGITS(x)[i] > BDIGITS(y)[i]) {
- break;
- }
- if (BDIGITS(x)[i] < BDIGITS(y)[i]) {
- z = x; x = y; y = z; /* swap x y */
- break;
- }
- }
- }
-
- z = bignew(RBIGNUM(x)->len, (z == 0)?1:0);
+ z = bignew(zn, 1);
+
+ xds = BDIGITS(x);
+ yds = BDIGITS(y);
zds = BDIGITS(z);
- for (i = 0, num = 0; i < RBIGNUM(y)->len; i++) {
- num += (long)BDIGITS(x)[i] - BDIGITS(y)[i];
- zds[i] = BIGLO(num);
- num = BIGDN(num);
- }
- while (num && i < RBIGNUM(x)->len) {
- num += BDIGITS(x)[i];
- zds[i++] = BIGLO(num);
- num = BIGDN(num);
- }
- while (i < RBIGNUM(x)->len) {
- zds[i] = BDIGITS(x)[i];
- i++;
- }
-
+ if (bary_sub(zds, zn, xds, xn, yds, yn)) {
+ bary_2comp(zds, zn);
+ BIGNUM_SET_NEGATIVE_SIGN(z);
+ }
+
return z;
}
+static VALUE bigadd_int(VALUE x, long y);
+
static VALUE
-bigadd(x, y, sign)
- VALUE x, y;
- char sign;
+bigsub_int(VALUE x, long y0)
{
VALUE z;
- long num;
- long i, len;
+ BDIGIT *xds, *zds;
+ long xn, zn;
+ BDIGIT_DBL_SIGNED num;
+ long i, y;
+
+ y = y0;
+ xds = BDIGITS(x);
+ xn = BIGNUM_LEN(x);
+
+ if (xn == 0)
+ return LONG2NUM(-y0);
- sign = (sign == RBIGNUM(y)->sign);
- if (RBIGNUM(x)->sign != sign) {
- if (sign) return bigsub(y, x);
- return bigsub(x, y);
+ zn = xn;
+#if SIZEOF_BDIGIT < SIZEOF_LONG
+ if (zn < bdigit_roomof(SIZEOF_LONG))
+ zn = bdigit_roomof(SIZEOF_LONG);
+#endif
+ z = bignew(zn, BIGNUM_SIGN(x));
+ zds = BDIGITS(z);
+
+#if SIZEOF_BDIGIT >= SIZEOF_LONG
+ assert(xn == zn);
+ num = (BDIGIT_DBL_SIGNED)xds[0] - y;
+ if (xn == 1 && num < 0) {
+ BIGNUM_NEGATE(z);
+ zds[0] = (BDIGIT)-num;
+ RB_GC_GUARD(x);
+ return bignorm(z);
}
+ zds[0] = BIGLO(num);
+ num = BIGDN(num);
+ i = 1;
+ if (i < xn)
+ goto y_is_zero_x;
+ goto finish;
+#else
+ num = 0;
+ for (i=0; i < xn; i++) {
+ if (y == 0) goto y_is_zero_x;
+ num += (BDIGIT_DBL_SIGNED)xds[i] - BIGLO(y);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ y = BIGDN(y);
+ }
+ for (; i < zn; i++) {
+ if (y == 0) goto y_is_zero_z;
+ num -= BIGLO(y);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ y = BIGDN(y);
+ }
+ goto finish;
+#endif
- if (RBIGNUM(x)->len > RBIGNUM(y)->len) {
- len = RBIGNUM(x)->len + 1;
- z = x; x = y; y = z;
+ for (; i < xn; i++) {
+ y_is_zero_x:
+ if (num == 0) goto num_is_zero_x;
+ num += xds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
}
- else {
- len = RBIGNUM(y)->len + 1;
+#if SIZEOF_BDIGIT < SIZEOF_LONG
+ for (; i < zn; i++) {
+ y_is_zero_z:
+ if (num == 0) goto num_is_zero_z;
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
}
- z = bignew(len, sign);
+#endif
+ goto finish;
- len = RBIGNUM(x)->len;
- for (i = 0, num = 0; i < len; i++) {
- num += BDIGITS(x)[i] + BDIGITS(y)[i];
- BDIGITS(z)[i] = BIGLO(num);
- num = BIGDN(num);
+ for (; i < xn; i++) {
+ num_is_zero_x:
+ zds[i] = xds[i];
}
- len = RBIGNUM(y)->len;
- while (num && i < len) {
- num += BDIGITS(y)[i];
- BDIGITS(z)[i++] = BIGLO(num);
- num = BIGDN(num);
+#if SIZEOF_BDIGIT < SIZEOF_LONG
+ for (; i < zn; i++) {
+ num_is_zero_z:
+ zds[i] = 0;
}
- while (i < len) {
- BDIGITS(z)[i] = BDIGITS(y)[i];
- i++;
+#endif
+ goto finish;
+
+ finish:
+ assert(num == 0 || num == -1);
+ if (num < 0) {
+ get2comp(z);
+ BIGNUM_NEGATE(z);
}
- BDIGITS(z)[i] = (USHORT)num;
+ RB_GC_GUARD(x);
+ return bignorm(z);
+}
- return z;
+static VALUE
+bigadd_int(VALUE x, long y)
+{
+ VALUE z;
+ BDIGIT *xds, *zds;
+ long xn, zn;
+ BDIGIT_DBL num;
+ long i;
+
+ xds = BDIGITS(x);
+ xn = BIGNUM_LEN(x);
+
+ if (xn == 0)
+ return LONG2NUM(y);
+
+ zn = xn;
+#if SIZEOF_BDIGIT < SIZEOF_LONG
+ if (zn < bdigit_roomof(SIZEOF_LONG))
+ zn = bdigit_roomof(SIZEOF_LONG);
+#endif
+ zn++;
+
+ z = bignew(zn, BIGNUM_SIGN(x));
+ zds = BDIGITS(z);
+
+#if SIZEOF_BDIGIT >= SIZEOF_LONG
+ num = (BDIGIT_DBL)xds[0] + y;
+ zds[0] = BIGLO(num);
+ num = BIGDN(num);
+ i = 1;
+ if (i < xn)
+ goto y_is_zero_x;
+ goto y_is_zero_z;
+#else
+ num = 0;
+ for (i=0; i < xn; i++) {
+ if (y == 0) goto y_is_zero_x;
+ num += (BDIGIT_DBL)xds[i] + BIGLO(y);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ y = BIGDN(y);
+ }
+ for (; i < zn; i++) {
+ if (y == 0) goto y_is_zero_z;
+ num += BIGLO(y);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ y = BIGDN(y);
+ }
+ goto finish;
+
+#endif
+
+ for (;i < xn; i++) {
+ y_is_zero_x:
+ if (num == 0) goto num_is_zero_x;
+ num += (BDIGIT_DBL)xds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ for (; i < zn; i++) {
+ y_is_zero_z:
+ if (num == 0) goto num_is_zero_z;
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ goto finish;
+
+ for (;i < xn; i++) {
+ num_is_zero_x:
+ zds[i] = xds[i];
+ }
+ for (; i < zn; i++) {
+ num_is_zero_z:
+ zds[i] = 0;
+ }
+ goto finish;
+
+ finish:
+ RB_GC_GUARD(x);
+ return bignorm(z);
}
-VALUE
-rb_big_plus(x, y)
- VALUE x, y;
+static VALUE
+bigadd(VALUE x, VALUE y, int sign)
{
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = rb_int2big(FIX2LONG(y));
- /* fall through */
- case T_BIGNUM:
- return bignorm(bigadd(x, y, 1));
+ VALUE z;
+ size_t len;
- case T_FLOAT:
- return rb_float_new(rb_big2dbl(x) + RFLOAT(y)->value);
+ sign = (sign == BIGNUM_SIGN(y));
+ if (BIGNUM_SIGN(x) != sign) {
+ if (sign) return bigsub(y, x);
+ return bigsub(x, y);
+ }
- default:
- return rb_num_coerce_bin(x, y);
+ if (BIGNUM_LEN(x) > BIGNUM_LEN(y)) {
+ len = BIGNUM_LEN(x) + 1;
+ }
+ else {
+ len = BIGNUM_LEN(y) + 1;
}
+ z = bignew(len, sign);
+
+ bary_add(BDIGITS(z), BIGNUM_LEN(z),
+ BDIGITS(x), BIGNUM_LEN(x),
+ BDIGITS(y), BIGNUM_LEN(y));
+
+ return z;
}
VALUE
-rb_big_minus(x, y)
- VALUE x, y;
+rb_big_plus(VALUE x, VALUE y)
{
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = rb_int2big(FIX2LONG(y));
- /* fall through */
- case T_BIGNUM:
- return bignorm(bigadd(x, y, 0));
-
- case T_FLOAT:
- return rb_float_new(rb_big2dbl(x) - RFLOAT(y)->value);
+ long n;
- default:
- return rb_num_coerce_bin(x, y);
+ if (FIXNUM_P(y)) {
+ n = FIX2LONG(y);
+ if ((n > 0) != BIGNUM_SIGN(x)) {
+ if (n < 0) {
+ n = -n;
+ }
+ return bigsub_int(x, n);
+ }
+ if (n < 0) {
+ n = -n;
+ }
+ return bigadd_int(x, n);
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ return bignorm(bigadd(x, y, 1));
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ return DBL2NUM(rb_big2dbl(x) + RFLOAT_VALUE(y));
+ }
+ else {
+ return rb_num_coerce_bin(x, y, '+');
}
}
VALUE
-rb_big_mul(x, y)
- VALUE x, y;
+rb_big_minus(VALUE x, VALUE y)
{
- long i, j;
- unsigned long n = 0;
+ long n;
+
+ if (FIXNUM_P(y)) {
+ n = FIX2LONG(y);
+ if ((n > 0) != BIGNUM_SIGN(x)) {
+ if (n < 0) {
+ n = -n;
+ }
+ return bigadd_int(x, n);
+ }
+ if (n < 0) {
+ n = -n;
+ }
+ return bigsub_int(x, n);
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ return bignorm(bigadd(x, y, 0));
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ return DBL2NUM(rb_big2dbl(x) - RFLOAT_VALUE(y));
+ }
+ else {
+ return rb_num_coerce_bin(x, y, '-');
+ }
+}
+
+static VALUE
+bigsq(VALUE x)
+{
+ long xn, zn;
VALUE z;
- USHORT *zds;
+ BDIGIT *xds, *zds;
+
+ xn = BIGNUM_LEN(x);
+ zn = 2 * xn;
- if (FIXNUM_P(x)) x = rb_int2big(FIX2LONG(x));
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = rb_int2big(FIX2LONG(y));
- break;
+ z = bignew(zn, 1);
- case T_BIGNUM:
- break;
+ xds = BDIGITS(x);
+ zds = BDIGITS(z);
- case T_FLOAT:
- return rb_float_new(rb_big2dbl(x) * RFLOAT(y)->value);
+ if (xn < NAIVE_MUL_DIGITS)
+ bary_sq_fast(zds, zn, xds, xn);
+ else
+ bary_mul(zds, zn, xds, xn, xds, xn);
- default:
- return rb_num_coerce_bin(x, y);
- }
+ RB_GC_GUARD(x);
+ return z;
+}
- j = RBIGNUM(x)->len + RBIGNUM(y)->len + 1;
- z = bignew(j, RBIGNUM(x)->sign==RBIGNUM(y)->sign);
+static VALUE
+bigmul0(VALUE x, VALUE y)
+{
+ long xn, yn, zn;
+ VALUE z;
+ BDIGIT *xds, *yds, *zds;
+
+ if (x == y)
+ return bigsq(x);
+
+ xn = BIGNUM_LEN(x);
+ yn = BIGNUM_LEN(y);
+ zn = xn + yn;
+
+ z = bignew(zn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+
+ xds = BDIGITS(x);
+ yds = BDIGITS(y);
zds = BDIGITS(z);
- while (j--) zds[j] = 0;
- for (i = 0; i < RBIGNUM(x)->len; i++) {
- unsigned long dd = BDIGITS(x)[i];
- if (dd == 0) continue;
- n = 0;
- for (j = 0; j < RBIGNUM(y)->len; j++) {
- int ee = n + dd * BDIGITS(y)[j];
- n = zds[i + j] + ee;
- if (ee) zds[i + j] = BIGLO(n);
- n = BIGDN(n);
- }
- if (n) {
- zds[i + j] = n;
- }
+
+ bary_mul(zds, zn, xds, xn, yds, yn);
+
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
+
+VALUE
+rb_big_mul(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ return DBL2NUM(rb_big2dbl(x) * RFLOAT_VALUE(y));
+ }
+ else {
+ return rb_num_coerce_bin(x, y, '*');
}
- return bignorm(z);
+ return bignorm(bigmul0(x, y));
}
-static void
-bigdivrem(x, y, divp, modp)
- VALUE x, y;
- VALUE *divp, *modp;
-{
- long nx = RBIGNUM(x)->len, ny = RBIGNUM(y)->len;
- long i, j;
- VALUE yy, z;
- USHORT *xds, *yds, *zds, *tds;
- unsigned long t2;
- long num;
- USHORT dd, q;
+static VALUE
+bigdivrem(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp)
+{
+ long xn = BIGNUM_LEN(x), yn = BIGNUM_LEN(y);
+ VALUE z;
+ BDIGIT *xds, *yds, *zds;
+ BDIGIT dd;
+
+ VALUE q = Qnil, r = Qnil;
+ BDIGIT *qds, *rds;
+ long qn, rn;
yds = BDIGITS(y);
- if (ny == 0 && yds[0] == 0) rb_num_zerodiv();
- if (nx < ny || nx == ny && BDIGITS(x)[nx - 1] < BDIGITS(y)[ny - 1]) {
- if (divp) *divp = rb_int2big(0);
- if (modp) *modp = x;
- return;
- }
+ BARY_TRUNC(yds, yn);
+ if (yn == 0)
+ rb_num_zerodiv();
+
xds = BDIGITS(x);
- if (ny == 1) {
- dd = yds[0];
- z = rb_big_clone(x);
- zds = BDIGITS(z);
- t2 = 0; i = nx;
- while (i--) {
- t2 = BIGUP(t2) + zds[i];
- zds[i] = (USHORT)(t2 / dd);
- t2 %= dd;
- }
- RBIGNUM(z)->sign = RBIGNUM(x)->sign==RBIGNUM(y)->sign;
- if (!RBIGNUM(x)->sign) t2 = -(long)t2;
- if (modp) *modp = rb_int2big((long)t2);
- if (divp) *divp = z;
- return;
- }
- z = bignew(nx==ny?nx+2:nx+1, RBIGNUM(x)->sign==RBIGNUM(y)->sign);
- zds = BDIGITS(z);
- if (nx==ny) zds[nx+1] = 0;
- while (!yds[ny-1]) ny--;
- if ((dd = BIGRAD/(int)(yds[ny-1]+1)) != 1) {
- yy = rb_big_clone(y);
- tds = BDIGITS(yy);
- j = 0;
- num = 0;
- while (j<ny) {
- num += (long)yds[j]*dd;
- tds[j++] = BIGLO(num);
- num = BIGDN(num);
- }
- yds = tds;
- j = 0;
- num = 0;
- while (j<nx) {
- num += (long)xds[j]*dd;
- zds[j++] = BIGLO(num);
- num = BIGDN(num);
- }
- zds[j] = (USHORT)num;
- }
- else {
- zds[nx] = 0;
- j = nx;
- while (j--) zds[j] = xds[j];
- }
- j = nx==ny?nx+1:nx;
- do {
- if (zds[j] == yds[ny-1]) q = BIGRAD-1;
- else q = (USHORT)((BIGUP(zds[j]) + zds[j-1])/yds[ny-1]);
- if (q) {
- i = 0; num = 0; t2 = 0;
- do { /* multiply and subtract */
- int ee;
- t2 += (long)yds[i] * q;
- ee = num - BIGLO(t2);
- num = zds[j - ny + i] + ee;
- if (ee) zds[j - ny + i] = BIGLO(num);
- num = BIGDN(num);
- t2 = BIGDN(t2);
- } while (++i < ny);
- num += zds[j - ny + i] - t2; /* borrow from high digit; don't update */
- while (num) { /* "add back" required */
- i = 0; num = 0; q--;
- do {
- int ee = num + yds[i];
- num = (long) zds[j - ny + i] + ee;
- if (ee) zds[j - ny + i] = BIGLO(num);
- num = BIGDN(num);
- } while (++i < ny);
- num--;
- }
- }
- zds[j] = q;
- } while (--j >= ny);
- if (divp) { /* move quotient down in z */
- *divp = rb_big_clone(z);
- zds = BDIGITS(*divp);
- j = (nx==ny ? nx+2 : nx+1) - ny;
- for (i = 0;i < j;i++) zds[i] = zds[i+ny];
- RBIGNUM(*divp)->len = i;
- }
- if (modp) { /* just normalize remainder */
- *modp = rb_big_clone(z);
- if (dd) {
- zds = BDIGITS(*modp);
- t2 = 0; i = ny;
- while(i--) {
- t2 = BIGUP(t2) + zds[i];
- zds[i] = (USHORT)(t2 / dd);
- t2 %= dd;
- }
- }
- RBIGNUM(*modp)->len = ny;
- RBIGNUM(*modp)->sign = RBIGNUM(x)->sign;
+ BARY_TRUNC(xds, xn);
+
+ if (xn < yn || (xn == yn && xds[xn - 1] < yds[yn - 1])) {
+ if (divp) *divp = rb_int2big(0);
+ if (modp) *modp = x;
+ return Qnil;
}
+ if (yn == 1) {
+ dd = yds[0];
+ z = bignew(xn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+ zds = BDIGITS(z);
+ dd = bigdivrem_single(zds, xds, xn, dd);
+ if (modp) {
+ *modp = rb_uint2big((uintptr_t)dd);
+ BIGNUM_SET_SIGN(*modp, BIGNUM_SIGN(x));
+ }
+ if (divp) *divp = z;
+ return Qnil;
+ }
+ if (xn == 2 && yn == 2) {
+ BDIGIT_DBL x0 = bary2bdigitdbl(xds, 2);
+ BDIGIT_DBL y0 = bary2bdigitdbl(yds, 2);
+ BDIGIT_DBL q0 = x0 / y0;
+ BDIGIT_DBL r0 = x0 % y0;
+ if (divp) {
+ z = bignew(bdigit_roomof(sizeof(BDIGIT_DBL)), BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+ zds = BDIGITS(z);
+ zds[0] = BIGLO(q0);
+ zds[1] = BIGLO(BIGDN(q0));
+ *divp = z;
+ }
+ if (modp) {
+ z = bignew(bdigit_roomof(sizeof(BDIGIT_DBL)), BIGNUM_SIGN(x));
+ zds = BDIGITS(z);
+ zds[0] = BIGLO(r0);
+ zds[1] = BIGLO(BIGDN(r0));
+ *modp = z;
+ }
+ return Qnil;
+ }
+
+ if (divp) {
+ qn = xn + BIGDIVREM_EXTRA_WORDS;
+ q = bignew(qn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+ qds = BDIGITS(q);
+ }
+ else {
+ qn = 0;
+ qds = NULL;
+ }
+
+ if (modp) {
+ rn = yn;
+ r = bignew(rn, BIGNUM_SIGN(x));
+ rds = BDIGITS(r);
+ }
+ else {
+ rn = 0;
+ rds = NULL;
+ }
+
+ bary_divmod_branch(qds, qn, rds, rn, xds, xn, yds, yn);
+
+ if (divp) {
+ bigtrunc(q);
+ *divp = q;
+ }
+ if (modp) {
+ bigtrunc(r);
+ *modp = r;
+ }
+
+ return Qnil;
}
static void
-bigdivmod(x, y, divp, modp)
- VALUE x, y;
- VALUE *divp, *modp;
+bigdivmod(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp)
{
VALUE mod;
bigdivrem(x, y, divp, &mod);
- if (RBIGNUM(x)->sign != RBIGNUM(y)->sign && RBIGNUM(mod)->len > 0) {
- if (divp) *divp = bigadd(*divp, rb_int2big(1), 0);
- if (modp) *modp = bigadd(mod, y, 1);
+ if (BIGNUM_SIGN(x) != BIGNUM_SIGN(y) && !BIGZEROP(mod)) {
+ if (divp) *divp = bigadd(*divp, rb_int2big(1), 0);
+ if (modp) *modp = bigadd(mod, y, 1);
}
- else {
- if (divp) *divp = *divp;
- if (modp) *modp = mod;
+ else if (modp) {
+ *modp = mod;
}
}
+
static VALUE
-rb_big_div(x, y)
- VALUE x, y;
+rb_big_divide(VALUE x, VALUE y, ID op)
{
VALUE z;
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = rb_int2big(FIX2LONG(y));
- break;
-
- case T_BIGNUM:
- break;
-
- case T_FLOAT:
- return rb_float_new(rb_big2dbl(x) / RFLOAT(y)->value);
-
- default:
- return rb_num_coerce_bin(x, y);
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ if (op == '/') {
+ double dx = rb_big2dbl(x);
+ return rb_flo_div_flo(DBL2NUM(dx), y);
+ }
+ else {
+ VALUE v;
+ double dy = RFLOAT_VALUE(y);
+ if (dy == 0.0) rb_num_zerodiv();
+ v = rb_big_divide(x, y, '/');
+ return rb_dbl2big(RFLOAT_VALUE(v));
+ }
+ }
+ else {
+ return rb_num_coerce_bin(x, y, op);
}
bigdivmod(x, y, &z, 0);
return bignorm(z);
}
-
-static VALUE
-rb_big_modulo(x, y)
- VALUE x, y;
+VALUE
+rb_big_div(VALUE x, VALUE y)
{
- VALUE z;
+ return rb_big_divide(x, y, '/');
+}
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = rb_int2big(FIX2LONG(y));
- break;
+VALUE
+rb_big_idiv(VALUE x, VALUE y)
+{
+ return rb_big_divide(x, y, idDiv);
+}
- case T_BIGNUM:
- break;
+VALUE
+rb_big_modulo(VALUE x, VALUE y)
+{
+ VALUE z;
- default:
- return rb_num_coerce_bin(x, y);
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (!RB_BIGNUM_TYPE_P(y)) {
+ return rb_num_coerce_bin(x, y, '%');
}
bigdivmod(x, y, 0, &z);
return bignorm(z);
}
-static VALUE
-rb_big_remainder(x, y)
- VALUE x, y;
+VALUE
+rb_big_remainder(VALUE x, VALUE y)
{
VALUE z;
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = rb_int2big(FIX2LONG(y));
- break;
-
- case T_BIGNUM:
- break;
-
- default:
- return rb_num_coerce_bin(x, y);
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (!RB_BIGNUM_TYPE_P(y)) {
+ return rb_num_coerce_bin(x, y, rb_intern("remainder"));
}
bigdivrem(x, y, 0, &z);
@@ -978,428 +6149,1053 @@ rb_big_remainder(x, y)
}
VALUE
-rb_big_divmod(x, y)
- VALUE x, y;
+rb_big_divmod(VALUE x, VALUE y)
{
VALUE div, mod;
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = rb_int2big(FIX2LONG(y));
- break;
-
- case T_BIGNUM:
- break;
-
- default:
- return rb_num_coerce_bin(x, y);
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (!RB_BIGNUM_TYPE_P(y)) {
+ return rb_num_coerce_bin(x, y, idDivmod);
}
bigdivmod(x, y, &div, &mod);
return rb_assoc_new(bignorm(div), bignorm(mod));
}
-VALUE
-rb_big_pow(x, y)
- VALUE x, y;
+static VALUE
+big_shift(VALUE x, long n)
{
- double d;
- long yy;
-
- if (y == INT2FIX(0)) return INT2FIX(1);
- switch (TYPE(y)) {
- case T_FLOAT:
- d = RFLOAT(y)->value;
- break;
-
- case T_BIGNUM:
- rb_warn("in a**b, b may be too big");
- d = rb_big2dbl(y);
- break;
-
- case T_FIXNUM:
- yy = NUM2LONG(y);
- if (yy > 0) {
- VALUE z;
-
- z = x;
- for (;;) {
- yy = yy - 1;
- if (yy == 0) break;
- while (yy % 2 == 0) {
- yy = yy / 2;
- x = rb_big_mul(x, x);
- }
- z = rb_big_mul(z, x);
- }
- if (!FIXNUM_P(z)) z = bignorm(z);
- return z;
- }
- d = (double)yy;
- break;
-
- default:
- return rb_num_coerce_bin(x, y);
- }
- return rb_float_new(pow(rb_big2dbl(x), d));
-}
-
-VALUE
-rb_big_and(x, y)
- VALUE x, y;
+ if (n < 0)
+ return big_lshift(x, 1+(unsigned long)(-(n+1)));
+ else if (n > 0)
+ return big_rshift(x, (unsigned long)n);
+ return x;
+}
+
+enum {DBL_BIGDIG = ((DBL_MANT_DIG + BITSPERDIG) / BITSPERDIG)};
+
+static double
+big_fdiv(VALUE x, VALUE y, long ey)
{
VALUE z;
- USHORT *ds1, *ds2, *zds;
- long i, l1, l2;
- char sign;
+ long l, ex;
+
+ bigtrunc(x);
+ l = BIGNUM_LEN(x);
+ ex = l * BITSPERDIG - nlz(BDIGITS(x)[l-1]);
+ ex -= 2 * DBL_BIGDIG * BITSPERDIG;
+ if (ex > BITSPERDIG) ex -= BITSPERDIG;
+ else if (ex > 0) ex = 0;
+ if (ex) x = big_shift(x, ex);
+
+ bigdivrem(x, y, &z, 0);
+ l = ex - ey;
+#if SIZEOF_LONG > SIZEOF_INT
+ {
+ /* Visual C++ can't be here */
+ if (l > INT_MAX) return HUGE_VAL;
+ if (l < INT_MIN) return 0.0;
+ }
+#endif
+ return ldexp(big2dbl(z), (int)l);
+}
+
+static double
+big_fdiv_int(VALUE x, VALUE y)
+{
+ long l, ey;
+ bigtrunc(y);
+ l = BIGNUM_LEN(y);
+ ey = l * BITSPERDIG - nlz(BDIGITS(y)[l-1]);
+ ey -= DBL_BIGDIG * BITSPERDIG;
+ if (ey) y = big_shift(y, ey);
+ return big_fdiv(x, y, ey);
+}
+
+static double
+big_fdiv_float(VALUE x, VALUE y)
+{
+ int i;
+ y = dbl2big(ldexp(frexp(RFLOAT_VALUE(y), &i), DBL_MANT_DIG));
+ return big_fdiv(x, y, i - DBL_MANT_DIG);
+}
+
+double
+rb_big_fdiv_double(VALUE x, VALUE y)
+{
+ double dx, dy;
+ VALUE v;
+ dx = big2dbl(x);
if (FIXNUM_P(y)) {
- y = rb_int2big(FIX2LONG(y));
+ dy = (double)FIX2LONG(y);
+ if (isinf(dx))
+ return big_fdiv_int(x, rb_int2big(FIX2LONG(y)));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ return big_fdiv_int(x, y);
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ dy = RFLOAT_VALUE(y);
+ if (isnan(dy))
+ return dy;
+ if (isinf(dx))
+ return big_fdiv_float(x, y);
}
else {
- Check_Type(y, T_BIGNUM);
+ return NUM2DBL(rb_num_coerce_bin(x, y, idFdiv));
}
+ v = rb_flo_div_flo(DBL2NUM(dx), DBL2NUM(dy));
+ return NUM2DBL(v);
+}
- if (!RBIGNUM(y)->sign) {
- y = rb_big_clone(y);
- rb_big_2comp(y);
+VALUE
+rb_big_fdiv(VALUE x, VALUE y)
+{
+ return DBL2NUM(rb_big_fdiv_double(x, y));
+}
+
+VALUE
+rb_big_pow(VALUE x, VALUE y)
+{
+ double d;
+ SIGNED_VALUE yy;
+
+ again:
+ if (y == INT2FIX(0)) return INT2FIX(1);
+ if (y == INT2FIX(1)) return x;
+ if (RB_FLOAT_TYPE_P(y)) {
+ d = RFLOAT_VALUE(y);
+ if ((BIGNUM_NEGATIVE_P(x) && !BIGZEROP(x))) {
+ return rb_dbl_complex_new_polar_pi(pow(-rb_big2dbl(x), d), d);
+ }
}
- if (!RBIGNUM(x)->sign) {
- x = rb_big_clone(x);
- rb_big_2comp(x);
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ y = bignorm(y);
+ if (FIXNUM_P(y))
+ goto again;
+ rb_warn("in a**b, b may be too big");
+ d = rb_big2dbl(y);
}
- if (RBIGNUM(x)->len > RBIGNUM(y)->len) {
- l1 = RBIGNUM(y)->len;
- l2 = RBIGNUM(x)->len;
- ds1 = BDIGITS(y);
- ds2 = BDIGITS(x);
- sign = RBIGNUM(y)->sign;
+ else if (FIXNUM_P(y)) {
+ yy = FIX2LONG(y);
+
+ if (yy < 0) {
+ x = rb_big_pow(x, LONG2NUM(-yy));
+ if (RB_INTEGER_TYPE_P(x))
+ return rb_rational_raw(INT2FIX(1), x);
+ else
+ return DBL2NUM(1.0 / NUM2DBL(x));
+ }
+ else {
+ VALUE z = 0;
+ SIGNED_VALUE mask;
+ const size_t xbits = rb_absint_numwords(x, 1, NULL);
+ const size_t BIGLEN_LIMIT = 32*1024*1024;
+
+ if (xbits == (size_t)-1 ||
+ (xbits > BIGLEN_LIMIT) ||
+ (xbits * yy > BIGLEN_LIMIT)) {
+ rb_warn("in a**b, b may be too big");
+ d = (double)yy;
+ }
+ else {
+ for (mask = FIXNUM_MAX + 1; mask; mask >>= 1) {
+ if (z) z = bigsq(z);
+ if (yy & mask) {
+ z = z ? bigtrunc(bigmul0(z, x)) : x;
+ }
+ }
+ return bignorm(z);
+ }
+ }
}
else {
- l1 = RBIGNUM(x)->len;
- l2 = RBIGNUM(y)->len;
- ds1 = BDIGITS(x);
- ds2 = BDIGITS(y);
- sign = RBIGNUM(x)->sign;
+ return rb_num_coerce_bin(x, y, idPow);
+ }
+ return DBL2NUM(pow(rb_big2dbl(x), d));
+}
+
+static VALUE
+bigand_int(VALUE x, long xn, BDIGIT hibitsx, long y)
+{
+ VALUE z;
+ BDIGIT *xds, *zds;
+ long zn;
+ long i;
+ BDIGIT hibitsy;
+
+ if (y == 0) return INT2FIX(0);
+ if (xn == 0) return hibitsx ? LONG2NUM(y) : 0;
+ hibitsy = 0 <= y ? 0 : BDIGMAX;
+ xds = BDIGITS(x);
+#if SIZEOF_BDIGIT >= SIZEOF_LONG
+ if (!hibitsy) {
+ y &= xds[0];
+ return LONG2NUM(y);
}
- z = bignew(l2, RBIGNUM(x)->sign || RBIGNUM(y)->sign);
+#endif
+
+ zn = xn;
+#if SIZEOF_BDIGIT < SIZEOF_LONG
+ if (hibitsx && zn < bdigit_roomof(SIZEOF_LONG))
+ zn = bdigit_roomof(SIZEOF_LONG);
+#endif
+
+ z = bignew(zn, 0);
zds = BDIGITS(z);
- for (i=0; i<l1; i++) {
- zds[i] = ds1[i] & ds2[i];
+#if SIZEOF_BDIGIT >= SIZEOF_LONG
+ i = 1;
+ zds[0] = xds[0] & BIGLO(y);
+#else
+ for (i=0; i < xn; i++) {
+ if (y == 0 || y == -1) break;
+ zds[i] = xds[i] & BIGLO(y);
+ y = BIGDN(y);
+ }
+ for (; i < zn; i++) {
+ if (y == 0 || y == -1) break;
+ zds[i] = hibitsx & BIGLO(y);
+ y = BIGDN(y);
}
- for (; i<l2; i++) {
- zds[i] = sign?0:ds2[i];
+#endif
+ for (;i < xn; i++) {
+ zds[i] = xds[i] & hibitsy;
}
- if (!RBIGNUM(z)->sign) rb_big_2comp(z);
+ for (;i < zn; i++) {
+ zds[i] = hibitsx & hibitsy;
+ }
+ twocomp2abs_bang(z, hibitsx && hibitsy);
+ RB_GC_GUARD(x);
return bignorm(z);
}
VALUE
-rb_big_or(x, y)
- VALUE x, y;
+rb_big_and(VALUE x, VALUE y)
{
VALUE z;
- USHORT *ds1, *ds2, *zds;
- unsigned long i, l1, l2;
- char sign;
+ BDIGIT *ds1, *ds2, *zds;
+ long i, xn, yn, n1, n2;
+ BDIGIT hibitsx, hibitsy;
+ BDIGIT hibits1, hibits2;
+ VALUE tmpv;
+ BDIGIT tmph;
+ long tmpn;
+
+ if (!RB_INTEGER_TYPE_P(y)) {
+ return rb_num_coerce_bit(x, y, '&');
+ }
+ hibitsx = abs2twocomp(&x, &xn);
if (FIXNUM_P(y)) {
- y = rb_int2big(FIX2LONG(y));
+ return bigand_int(x, xn, hibitsx, FIX2LONG(y));
}
- else {
- Check_Type(y, T_BIGNUM);
+ hibitsy = abs2twocomp(&y, &yn);
+ if (xn > yn) {
+ tmpv = x; x = y; y = tmpv;
+ tmpn = xn; xn = yn; yn = tmpn;
+ tmph = hibitsx; hibitsx = hibitsy; hibitsy = tmph;
}
+ n1 = xn;
+ n2 = yn;
+ ds1 = BDIGITS(x);
+ ds2 = BDIGITS(y);
+ hibits1 = hibitsx;
+ hibits2 = hibitsy;
+
+ if (!hibits1)
+ n2 = n1;
- if (!RBIGNUM(y)->sign) {
- y = rb_big_clone(y);
- rb_big_2comp(y);
+ z = bignew(n2, 0);
+ zds = BDIGITS(z);
+
+ for (i=0; i<n1; i++) {
+ zds[i] = ds1[i] & ds2[i];
}
- if (!RBIGNUM(x)->sign) {
- x = rb_big_clone(x);
- rb_big_2comp(x);
+ for (; i<n2; i++) {
+ zds[i] = hibits1 & ds2[i];
}
- if (RBIGNUM(x)->len > RBIGNUM(y)->len) {
- l1 = RBIGNUM(y)->len;
- l2 = RBIGNUM(x)->len;
- ds1 = BDIGITS(y);
- ds2 = BDIGITS(x);
- sign = RBIGNUM(y)->sign;
+ twocomp2abs_bang(z, hibits1 && hibits2);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return bignorm(z);
+}
+
+static VALUE
+bigor_int(VALUE x, long xn, BDIGIT hibitsx, long y)
+{
+ VALUE z;
+ BDIGIT *xds, *zds;
+ long zn;
+ long i;
+ BDIGIT hibitsy;
+
+ if (y == -1) return INT2FIX(-1);
+ if (xn == 0) return hibitsx ? INT2FIX(-1) : LONG2FIX(y);
+ hibitsy = 0 <= y ? 0 : BDIGMAX;
+ xds = BDIGITS(x);
+
+ zn = BIGNUM_LEN(x);
+#if SIZEOF_BDIGIT < SIZEOF_LONG
+ if (zn < bdigit_roomof(SIZEOF_LONG))
+ zn = bdigit_roomof(SIZEOF_LONG);
+#endif
+ z = bignew(zn, 0);
+ zds = BDIGITS(z);
+
+#if SIZEOF_BDIGIT >= SIZEOF_LONG
+ i = 1;
+ zds[0] = xds[0] | BIGLO(y);
+ if (i < zn)
+ goto y_is_fixed_point;
+ goto finish;
+#else
+ for (i=0; i < xn; i++) {
+ if (y == 0 || y == -1) goto y_is_fixed_point;
+ zds[i] = xds[i] | BIGLO(y);
+ y = BIGDN(y);
}
- else {
- l1 = RBIGNUM(x)->len;
- l2 = RBIGNUM(y)->len;
- ds1 = BDIGITS(x);
- ds2 = BDIGITS(y);
- sign = RBIGNUM(x)->sign;
+ if (hibitsx)
+ goto fill_hibits;
+ for (; i < zn; i++) {
+ if (y == 0 || y == -1) goto y_is_fixed_point;
+ zds[i] = BIGLO(y);
+ y = BIGDN(y);
}
- z = bignew(l2, RBIGNUM(x)->sign && RBIGNUM(y)->sign);
- zds = BDIGITS(z);
+ goto finish;
+#endif
- for (i=0; i<l1; i++) {
- zds[i] = ds1[i] | ds2[i];
+ y_is_fixed_point:
+ if (hibitsy)
+ goto fill_hibits;
+ for (; i < xn; i++) {
+ zds[i] = xds[i];
}
- for (; i<l2; i++) {
- zds[i] = sign?ds2[i]:(BIGRAD-1);
+ if (hibitsx)
+ goto fill_hibits;
+ for (; i < zn; i++) {
+ zds[i] = 0;
}
- if (!RBIGNUM(z)->sign) rb_big_2comp(z);
+ goto finish;
+ fill_hibits:
+ for (; i < zn; i++) {
+ zds[i] = BDIGMAX;
+ }
+
+ finish:
+ twocomp2abs_bang(z, hibitsx || hibitsy);
+ RB_GC_GUARD(x);
return bignorm(z);
}
VALUE
-rb_big_xor(x, y)
- VALUE x, y;
+rb_big_or(VALUE x, VALUE y)
{
VALUE z;
- USHORT *ds1, *ds2, *zds;
- unsigned int i, l1, l2;
- char sign;
+ BDIGIT *ds1, *ds2, *zds;
+ long i, xn, yn, n1, n2;
+ BDIGIT hibitsx, hibitsy;
+ BDIGIT hibits1, hibits2;
+ VALUE tmpv;
+ BDIGIT tmph;
+ long tmpn;
+
+ if (!RB_INTEGER_TYPE_P(y)) {
+ return rb_num_coerce_bit(x, y, '|');
+ }
+ hibitsx = abs2twocomp(&x, &xn);
if (FIXNUM_P(y)) {
- y = rb_int2big(FIX2LONG(y));
+ return bigor_int(x, xn, hibitsx, FIX2LONG(y));
}
- else {
- Check_Type(y, T_BIGNUM);
+ hibitsy = abs2twocomp(&y, &yn);
+ if (xn > yn) {
+ tmpv = x; x = y; y = tmpv;
+ tmpn = xn; xn = yn; yn = tmpn;
+ tmph = hibitsx; hibitsx = hibitsy; hibitsy = tmph;
}
+ n1 = xn;
+ n2 = yn;
+ ds1 = BDIGITS(x);
+ ds2 = BDIGITS(y);
+ hibits1 = hibitsx;
+ hibits2 = hibitsy;
- if (!RBIGNUM(y)->sign) {
- y = rb_big_clone(y);
- rb_big_2comp(y);
- }
- if (!RBIGNUM(x)->sign) {
- x = rb_big_clone(x);
- rb_big_2comp(x);
- }
- if (RBIGNUM(x)->len > RBIGNUM(y)->len) {
- l1 = RBIGNUM(y)->len;
- l2 = RBIGNUM(x)->len;
- ds1 = BDIGITS(y);
- ds2 = BDIGITS(x);
- sign = RBIGNUM(y)->sign;
- }
- else {
- l1 = RBIGNUM(x)->len;
- l2 = RBIGNUM(y)->len;
- ds1 = BDIGITS(x);
- ds2 = BDIGITS(y);
- sign = RBIGNUM(x)->sign;
- }
- RBIGNUM(x)->sign = RBIGNUM(x)->sign?1:0;
- RBIGNUM(y)->sign = RBIGNUM(y)->sign?1:0;
- z = bignew(l2, !(RBIGNUM(x)->sign ^ RBIGNUM(y)->sign));
+ if (hibits1)
+ n2 = n1;
+
+ z = bignew(n2, 0);
zds = BDIGITS(z);
- for (i=0; i<l1; i++) {
- zds[i] = ds1[i] ^ ds2[i];
+ for (i=0; i<n1; i++) {
+ zds[i] = ds1[i] | ds2[i];
}
- for (; i<l2; i++) {
- zds[i] = sign?ds2[i]:~ds2[i];
+ for (; i<n2; i++) {
+ zds[i] = hibits1 | ds2[i];
}
- if (!RBIGNUM(z)->sign) rb_big_2comp(z);
-
+ twocomp2abs_bang(z, hibits1 || hibits2);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
return bignorm(z);
}
-static VALUE rb_big_rshift _((VALUE,VALUE));
-
-VALUE
-rb_big_lshift(x, y)
- VALUE x, y;
+static VALUE
+bigxor_int(VALUE x, long xn, BDIGIT hibitsx, long y)
{
- USHORT *xds, *zds;
- int shift = NUM2INT(y);
- int s1 = shift/BITSPERDIG;
- int s2 = shift%BITSPERDIG;
VALUE z;
- unsigned long num = 0;
- long len, i;
+ BDIGIT *xds, *zds;
+ long zn;
+ long i;
+ BDIGIT hibitsy;
- if (shift < 0) return rb_big_rshift(x, INT2FIX(-shift));
- len = RBIGNUM(x)->len;
- z = bignew(len+s1+1, RBIGNUM(x)->sign);
+ hibitsy = 0 <= y ? 0 : BDIGMAX;
+ xds = BDIGITS(x);
+ zn = BIGNUM_LEN(x);
+#if SIZEOF_BDIGIT < SIZEOF_LONG
+ if (zn < bdigit_roomof(SIZEOF_LONG))
+ zn = bdigit_roomof(SIZEOF_LONG);
+#endif
+ z = bignew(zn, 0);
zds = BDIGITS(z);
- for (i=0; i<s1; i++) {
- *zds++ = 0;
+
+#if SIZEOF_BDIGIT >= SIZEOF_LONG
+ i = 1;
+ zds[0] = xds[0] ^ BIGLO(y);
+#else
+ for (i = 0; i < xn; i++) {
+ zds[i] = xds[i] ^ BIGLO(y);
+ y = BIGDN(y);
}
- xds = BDIGITS(x);
- for (i=0; i<len; i++) {
- num = num | *xds++<<s2;
- *zds++ = BIGLO(num);
- num = BIGDN(num);
+ for (; i < zn; i++) {
+ zds[i] = hibitsx ^ BIGLO(y);
+ y = BIGDN(y);
}
- *zds = BIGLO(num);
+#endif
+ for (; i < xn; i++) {
+ zds[i] = xds[i] ^ hibitsy;
+ }
+ for (; i < zn; i++) {
+ zds[i] = hibitsx ^ hibitsy;
+ }
+ twocomp2abs_bang(z, (hibitsx ^ hibitsy) != 0);
+ RB_GC_GUARD(x);
return bignorm(z);
}
-static VALUE
-rb_big_rshift(x, y)
- VALUE x, y;
+VALUE
+rb_big_xor(VALUE x, VALUE y)
{
- USHORT *xds, *zds;
- int shift = NUM2INT(y);
- int s1 = shift/BITSPERDIG;
- int s2 = shift%BITSPERDIG;
VALUE z;
- unsigned long num = 0;
- long i = RBIGNUM(x)->len;
- long j;
+ BDIGIT *ds1, *ds2, *zds;
+ long i, xn, yn, n1, n2;
+ BDIGIT hibitsx, hibitsy;
+ BDIGIT hibits1, hibits2;
+ VALUE tmpv;
+ BDIGIT tmph;
+ long tmpn;
+
+ if (!RB_INTEGER_TYPE_P(y)) {
+ return rb_num_coerce_bit(x, y, '^');
+ }
- if (shift < 0) return rb_big_lshift(x, INT2FIX(-shift));
- if (s1 > RBIGNUM(x)->len) {
- if (RBIGNUM(x)->sign)
- return INT2FIX(0);
- else
- return INT2FIX(-1);
+ hibitsx = abs2twocomp(&x, &xn);
+ if (FIXNUM_P(y)) {
+ return bigxor_int(x, xn, hibitsx, FIX2LONG(y));
}
- xds = BDIGITS(x);
- i = RBIGNUM(x)->len; j = i - s1;
- z = bignew(j, RBIGNUM(x)->sign);
+ hibitsy = abs2twocomp(&y, &yn);
+ if (xn > yn) {
+ tmpv = x; x = y; y = tmpv;
+ tmpn = xn; xn = yn; yn = tmpn;
+ tmph = hibitsx; hibitsx = hibitsy; hibitsy = tmph;
+ }
+ n1 = xn;
+ n2 = yn;
+ ds1 = BDIGITS(x);
+ ds2 = BDIGITS(y);
+ hibits1 = hibitsx;
+ hibits2 = hibitsy;
+
+ z = bignew(n2, 0);
zds = BDIGITS(z);
- while (i--, j--) {
- num = (num | xds[i]) >> s2;
- zds[j] = BIGLO(num);
- num = BIGUP(xds[i]);
+
+ for (i=0; i<n1; i++) {
+ zds[i] = ds1[i] ^ ds2[i];
}
+ for (; i<n2; i++) {
+ zds[i] = hibitsx ^ ds2[i];
+ }
+ twocomp2abs_bang(z, (hibits1 ^ hibits2) != 0);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
return bignorm(z);
}
-static VALUE
-rb_big_aref(x, y)
- VALUE x, y;
+VALUE
+rb_big_lshift(VALUE x, VALUE y)
{
- USHORT *xds;
- int shift = NUM2INT(y);
- int s1, s2;
+ int lshift_p;
+ size_t shift_numdigits;
+ int shift_numbits;
+
+ for (;;) {
+ if (FIXNUM_P(y)) {
+ long l = FIX2LONG(y);
+ unsigned long shift;
+ if (0 <= l) {
+ lshift_p = 1;
+ shift = l;
+ }
+ else {
+ lshift_p = 0;
+ shift = 1+(unsigned long)(-(l+1));
+ }
+ shift_numbits = (int)(shift & (BITSPERDIG-1));
+ shift_numdigits = shift >> bit_length(BITSPERDIG-1);
+ return bignorm(big_shift3(x, lshift_p, shift_numdigits, shift_numbits));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ return bignorm(big_shift2(x, 1, y));
+ }
+ y = rb_to_int(y);
+ }
+}
- if (shift < 0) return INT2FIX(0);
- s1 = shift/BITSPERDIG;
- s2 = shift%BITSPERDIG;
+VALUE
+rb_big_rshift(VALUE x, VALUE y)
+{
+ int lshift_p;
+ size_t shift_numdigits;
+ int shift_numbits;
+
+ for (;;) {
+ if (FIXNUM_P(y)) {
+ long l = FIX2LONG(y);
+ unsigned long shift;
+ if (0 <= l) {
+ lshift_p = 0;
+ shift = l;
+ }
+ else {
+ lshift_p = 1;
+ shift = 1+(unsigned long)(-(l+1));
+ }
+ shift_numbits = (int)(shift & (BITSPERDIG-1));
+ shift_numdigits = shift >> bit_length(BITSPERDIG-1);
+ return bignorm(big_shift3(x, lshift_p, shift_numdigits, shift_numbits));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ return bignorm(big_shift2(x, 0, y));
+ }
+ y = rb_to_int(y);
+ }
+}
- if (!RBIGNUM(x)->sign) {
- if (s1 >= RBIGNUM(x)->len) return INT2FIX(1);
- x = rb_big_clone(x);
- rb_big_2comp(x);
+VALUE
+rb_big_aref(VALUE x, VALUE y)
+{
+ BDIGIT *xds;
+ size_t shift;
+ size_t i, s1, s2;
+ long l;
+ BDIGIT bit;
+
+ if (RB_BIGNUM_TYPE_P(y)) {
+ if (BIGNUM_NEGATIVE_P(y))
+ return INT2FIX(0);
+ bigtrunc(y);
+ if (BIGSIZE(y) > sizeof(size_t)) {
+ return BIGNUM_SIGN(x) ? INT2FIX(0) : INT2FIX(1);
+ }
+#if SIZEOF_SIZE_T <= SIZEOF_LONG
+ shift = big2ulong(y, "long");
+#else
+ shift = big2ull(y, "long long");
+#endif
}
else {
- if (s1 >= RBIGNUM(x)->len) return INT2FIX(0);
+ l = NUM2LONG(y);
+ if (l < 0) return INT2FIX(0);
+ shift = (size_t)l;
}
+ s1 = shift/BITSPERDIG;
+ s2 = shift%BITSPERDIG;
+ bit = (BDIGIT)1 << s2;
+
+ if (s1 >= BIGNUM_LEN(x))
+ return BIGNUM_SIGN(x) ? INT2FIX(0) : INT2FIX(1);
+
xds = BDIGITS(x);
- if (xds[s1] & (1<<s2))
- return INT2FIX(1);
- return INT2FIX(0);
+ if (BIGNUM_POSITIVE_P(x))
+ return (xds[s1] & bit) ? INT2FIX(1) : INT2FIX(0);
+ if (xds[s1] & (bit-1))
+ return (xds[s1] & bit) ? INT2FIX(0) : INT2FIX(1);
+ for (i = 0; i < s1; i++)
+ if (xds[i])
+ return (xds[s1] & bit) ? INT2FIX(0) : INT2FIX(1);
+ return (xds[s1] & bit) ? INT2FIX(1) : INT2FIX(0);
}
-static VALUE
-rb_big_hash(x)
- VALUE x;
+VALUE
+rb_big_hash(VALUE x)
{
- long i, len;
- int key;
- USHORT *digits;
+ st_index_t hash;
- key = 0; digits = BDIGITS(x);
- for (i=0,len=RBIGNUM(x)->len; i<RBIGNUM(x)->len; i++) {
- key ^= *digits++;
- }
- return INT2FIX(key);
+ hash = rb_memhash(BDIGITS(x), sizeof(BDIGIT)*BIGNUM_LEN(x)) ^ BIGNUM_SIGN(x);
+ return ST2FIX(hash);
}
+/*
+ * call-seq:
+ * int.coerce(numeric) -> array
+ *
+ * Returns an array with both a +numeric+ and a +int+ represented as
+ * Integer objects or Float objects.
+ *
+ * This is achieved by converting +numeric+ to an Integer or a Float.
+ *
+ * A TypeError is raised if the +numeric+ is not an Integer or a Float
+ * type.
+ *
+ * (0x3FFFFFFFFFFFFFFF+1).coerce(42) #=> [42, 4611686018427387904]
+ */
+
static VALUE
-rb_big_coerce(x, y)
- VALUE x, y;
+rb_int_coerce(VALUE x, VALUE y)
{
- if (FIXNUM_P(y)) {
- return rb_assoc_new(rb_int2big(FIX2LONG(y)), x);
+ if (RB_INTEGER_TYPE_P(y)) {
+ return rb_assoc_new(y, x);
}
else {
- rb_raise(rb_eTypeError, "Can't coerce %s to Bignum",
- rb_class2name(CLASS_OF(y)));
+ x = rb_Float(x);
+ y = rb_Float(y);
+ return rb_assoc_new(y, x);
}
- /* not reached */
- return Qnil;
}
-static VALUE
-rb_big_abs(x)
- VALUE x;
+VALUE
+rb_big_abs(VALUE x)
{
- if (!RBIGNUM(x)->sign) {
- x = rb_big_clone(x);
- RBIGNUM(x)->sign = 1;
+ if (BIGNUM_NEGATIVE_P(x)) {
+ x = rb_big_clone(x);
+ BIGNUM_SET_POSITIVE_SIGN(x);
}
return x;
}
-/* !!!warnig!!!!
- this is not really a random number!!
-*/
+int
+rb_big_sign(VALUE x)
+{
+ return BIGNUM_SIGN(x);
+}
+
+size_t
+rb_big_size(VALUE big)
+{
+ return BIGSIZE(big);
+}
VALUE
-rb_big_rand(max, rand)
- VALUE max;
- double rand;
+rb_big_size_m(VALUE big)
{
- VALUE v;
- long len;
+ return SIZET2NUM(rb_big_size(big));
+}
+
+VALUE
+rb_big_bit_length(VALUE big)
+{
+ int nlz_bits;
+ size_t numbytes;
+
+ static const BDIGIT char_bit[1] = { CHAR_BIT };
+ BDIGIT numbytes_bary[bdigit_roomof(sizeof(size_t))];
+ BDIGIT nlz_bary[1];
+ BDIGIT result_bary[bdigit_roomof(sizeof(size_t)+1)];
+
+ numbytes = rb_absint_size(big, &nlz_bits);
+
+ if (numbytes == 0)
+ return LONG2FIX(0);
+
+ if (BIGNUM_NEGATIVE_P(big) && rb_absint_singlebit_p(big)) {
+ if (nlz_bits != CHAR_BIT-1) {
+ nlz_bits++;
+ }
+ else {
+ nlz_bits = 0;
+ numbytes--;
+ }
+ }
+
+ if (numbytes <= SIZE_MAX / CHAR_BIT) {
+ return SIZET2NUM(numbytes * CHAR_BIT - nlz_bits);
+ }
+
+ nlz_bary[0] = nlz_bits;
+
+ bary_unpack(BARY_ARGS(numbytes_bary), &numbytes, 1, sizeof(numbytes), 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER);
+ BARY_SHORT_MUL(result_bary, numbytes_bary, char_bit);
+ BARY_SUB(result_bary, result_bary, nlz_bary);
+
+ return rb_integer_unpack(result_bary, numberof(result_bary), sizeof(BDIGIT), 0,
+ INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_NATIVE_BYTE_ORDER);
+}
+
+VALUE
+rb_big_odd_p(VALUE num)
+{
+ return RBOOL(BIGNUM_LEN(num) != 0 && BDIGITS(num)[0] & 1);
+}
+
+VALUE
+rb_big_even_p(VALUE num)
+{
+ if (BIGNUM_LEN(num) != 0 && BDIGITS(num)[0] & 1) {
+ return Qfalse;
+ }
+ return Qtrue;
+}
+
+unsigned long rb_ulong_isqrt(unsigned long);
+#if SIZEOF_BDIGIT*2 > SIZEOF_LONG
+BDIGIT rb_bdigit_dbl_isqrt(BDIGIT_DBL);
+# ifdef ULL_TO_DOUBLE
+# define BDIGIT_DBL_TO_DOUBLE(n) ULL_TO_DOUBLE(n)
+# endif
+#else
+# define rb_bdigit_dbl_isqrt(x) (BDIGIT)rb_ulong_isqrt(x)
+#endif
+#ifndef BDIGIT_DBL_TO_DOUBLE
+# define BDIGIT_DBL_TO_DOUBLE(n) (double)(n)
+#endif
+
+static BDIGIT *
+estimate_initial_sqrt(VALUE *xp, const size_t xn, const BDIGIT *nds, size_t len)
+{
+ enum {dbl_per_bdig = roomof(DBL_MANT_DIG,BITSPERDIG)};
+ const int zbits = nlz(nds[len-1]);
+ VALUE x = *xp = bignew_1(0, xn, 1); /* division may release the GVL */
+ BDIGIT *xds = BDIGITS(x);
+ BDIGIT_DBL d = bary2bdigitdbl(nds+len-dbl_per_bdig, dbl_per_bdig);
+ BDIGIT lowbits = 1;
+ int rshift = (int)((BITSPERDIG*2-zbits+(len&BITSPERDIG&1) - DBL_MANT_DIG + 1) & ~1);
+ double f;
+
+ if (rshift > 0) {
+ lowbits = (BDIGIT)d & ~(~(BDIGIT)1U << rshift);
+ d >>= rshift;
+ }
+ else if (rshift < 0) {
+ d <<= -rshift;
+ d |= nds[len-dbl_per_bdig-1] >> (BITSPERDIG+rshift);
+ }
+ f = sqrt(BDIGIT_DBL_TO_DOUBLE(d));
+ d = (BDIGIT_DBL)ceil(f);
+ if (BDIGIT_DBL_TO_DOUBLE(d) == f) {
+ if (lowbits || (lowbits = !bary_zero_p(nds, len-dbl_per_bdig)))
+ ++d;
+ }
+ else {
+ lowbits = 1;
+ }
+ rshift /= 2;
+ rshift += (2-(len&1))*BITSPERDIG/2;
+ if (rshift >= 0) {
+ if (nlz((BDIGIT)d) + rshift >= BITSPERDIG) {
+ /* (d << rshift) does cause overflow.
+ * example: Integer.sqrt(0xffff_ffff_ffff_ffff ** 2)
+ */
+ d = ~(BDIGIT_DBL)0;
+ }
+ else {
+ d <<= rshift;
+ }
+ }
+ BDIGITS_ZERO(xds, xn-2);
+ bdigitdbl2bary(&xds[xn-2], 2, d);
+
+ if (!lowbits) return NULL; /* special case, exact result */
+ return xds;
+}
+
+VALUE
+rb_big_isqrt(VALUE n)
+{
+ BDIGIT *nds = BDIGITS(n);
+ size_t len = BIGNUM_LEN(n);
+ size_t xn = (len+1) / 2;
+ VALUE x;
+ BDIGIT *xds;
+
+ if (len <= 2) {
+ BDIGIT sq = rb_bdigit_dbl_isqrt(bary2bdigitdbl(nds, len));
+#if SIZEOF_BDIGIT > SIZEOF_LONG
+ return ULL2NUM(sq);
+#else
+ return ULONG2NUM(sq);
+#endif
+ }
+ else if ((xds = estimate_initial_sqrt(&x, xn, nds, len)) != 0) {
+ size_t tn = xn + BIGDIVREM_EXTRA_WORDS;
+ VALUE t = bignew_1(0, tn, 1);
+ BDIGIT *tds = BDIGITS(t);
+ tn = BIGNUM_LEN(t);
+
+ /* t = n/x */
+ while (bary_divmod_branch(tds, tn, NULL, 0, nds, len, xds, xn),
+ bary_cmp(tds, tn, xds, xn) < 0) {
+ int carry;
+ BARY_TRUNC(tds, tn);
+ /* x = (x+t)/2 */
+ carry = bary_add(xds, xn, xds, xn, tds, tn);
+ bary_small_rshift(xds, xds, xn, 1, carry);
+ tn = BIGNUM_LEN(t);
+ }
+ }
+ RBASIC_SET_CLASS_RAW(x, rb_cInteger);
+ return x;
+}
+
+#if USE_GMP
+static void
+bary_powm_gmp(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, const BDIGIT *mds, size_t mn)
+{
+ mpz_t z, x, y, m;
+ size_t count;
+ mpz_init(x);
+ mpz_init(y);
+ mpz_init(m);
+ mpz_init(z);
+ bdigits_to_mpz(x, xds, xn);
+ bdigits_to_mpz(y, yds, yn);
+ bdigits_to_mpz(m, mds, mn);
+ mpz_powm(z, x, y, m);
+ bdigits_from_mpz(z, zds, &count);
+ BDIGITS_ZERO(zds+count, zn-count);
+ mpz_clear(x);
+ mpz_clear(y);
+ mpz_clear(m);
+ mpz_clear(z);
+}
+#endif
+
+static VALUE
+int_pow_tmp3(VALUE x, VALUE y, VALUE m, int nega_flg)
+{
+#if USE_GMP
+ VALUE z;
+ size_t xn, yn, mn, zn;
+
+ if (FIXNUM_P(x)) {
+ x = rb_int2big(FIX2LONG(x));
+ }
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ assert(RB_BIGNUM_TYPE_P(m));
+ xn = BIGNUM_LEN(x);
+ yn = BIGNUM_LEN(y);
+ mn = BIGNUM_LEN(m);
+ zn = mn;
+ z = bignew(zn, 1);
+ bary_powm_gmp(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn, BDIGITS(m), mn);
+ if (nega_flg & BIGNUM_POSITIVE_P(z)) {
+ z = rb_big_minus(z, m);
+ }
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ RB_GC_GUARD(m);
+ return rb_big_norm(z);
+#else
+ VALUE tmp = LONG2FIX(1L);
+ long yy;
- len = RBIGNUM(max)->len;
- v = bignew(len,1);
- while (len--) {
- BDIGITS(v)[len] = ((USHORT)~0) * rand;
+ for (/*NOP*/; ! FIXNUM_P(y); y = rb_big_rshift(y, LONG2FIX(1L))) {
+ if (RTEST(rb_int_odd_p(y))) {
+ tmp = rb_int_mul(tmp, x);
+ tmp = rb_int_modulo(tmp, m);
+ }
+ x = rb_int_mul(x, x);
+ x = rb_int_modulo(x, m);
+ }
+ for (yy = FIX2LONG(y); yy; yy >>= 1L) {
+ if (yy & 1L) {
+ tmp = rb_int_mul(tmp, x);
+ tmp = rb_int_modulo(tmp, m);
+ }
+ x = rb_int_mul(x, x);
+ x = rb_int_modulo(x, m);
}
- return rb_big_modulo((VALUE)v, max);
+ if (nega_flg && rb_int_positive_p(tmp)) {
+ tmp = rb_int_minus(tmp, m);
+ }
+ return tmp;
+#endif
}
+/*
+ * Integer#pow
+ */
+
static VALUE
-rb_big_size(big)
- VALUE big;
+int_pow_tmp1(VALUE x, VALUE y, long mm, int nega_flg)
{
- return INT2FIX(RBIGNUM(big)->len*sizeof(USHORT));
+ long xx = FIX2LONG(x);
+ long tmp = 1L;
+ long yy;
+
+ for (/*NOP*/; ! FIXNUM_P(y); y = rb_big_rshift(y, LONG2FIX(1L))) {
+ if (RTEST(rb_int_odd_p(y))) {
+ tmp = (tmp * xx) % mm;
+ }
+ xx = (xx * xx) % mm;
+ }
+ for (yy = FIX2LONG(y); yy; yy >>= 1L) {
+ if (yy & 1L) {
+ tmp = (tmp * xx) % mm;
+ }
+ xx = (xx * xx) % mm;
+ }
+
+ if (nega_flg && tmp) {
+ tmp -= mm;
+ }
+ return LONG2FIX(tmp);
}
static VALUE
-rb_big_zero_p(big)
- VALUE big;
+int_pow_tmp2(VALUE x, VALUE y, long mm, int nega_flg)
{
- return Qfalse;
+ long tmp = 1L;
+ long yy;
+#ifdef DLONG
+ const DLONG m = mm;
+ long tmp2 = tmp;
+ long xx = FIX2LONG(x);
+# define MUL_MODULO(a, b, c) (long)(((DLONG)(a) * (DLONG)(b)) % (c))
+#else
+ const VALUE m = LONG2FIX(mm);
+ VALUE tmp2 = LONG2FIX(tmp);
+ VALUE xx = x;
+# define MUL_MODULO(a, b, c) rb_int_modulo(rb_fix_mul_fix((a), (b)), (c))
+#endif
+
+ for (/*NOP*/; ! FIXNUM_P(y); y = rb_big_rshift(y, LONG2FIX(1L))) {
+ if (RTEST(rb_int_odd_p(y))) {
+ tmp2 = MUL_MODULO(tmp2, xx, m);
+ }
+ xx = MUL_MODULO(xx, xx, m);
+ }
+ for (yy = FIX2LONG(y); yy; yy >>= 1L) {
+ if (yy & 1L) {
+ tmp2 = MUL_MODULO(tmp2, xx, m);
+ }
+ xx = MUL_MODULO(xx, xx, m);
+ }
+
+#ifdef DLONG
+ tmp = tmp2;
+#else
+ tmp = FIX2LONG(tmp2);
+#endif
+ if (nega_flg && tmp) {
+ tmp -= mm;
+ }
+ return LONG2FIX(tmp);
}
+/*
+ * Document-method: Integer#pow
+ * call-seq:
+ * integer.pow(numeric) -> numeric
+ * integer.pow(integer, integer) -> integer
+ *
+ * Returns (modular) exponentiation as:
+ *
+ * a.pow(b) #=> same as a**b
+ * a.pow(b, m) #=> same as (a**b) % m, but avoids huge temporary values
+ */
+VALUE
+rb_int_powm(int const argc, VALUE * const argv, VALUE const num)
+{
+ rb_check_arity(argc, 1, 2);
+
+ if (argc == 1) {
+ return rb_int_pow(num, argv[0]);
+ }
+ else {
+ VALUE const a = num;
+ VALUE const b = argv[0];
+ VALUE m = argv[1];
+ int nega_flg = 0;
+ if ( ! RB_INTEGER_TYPE_P(b)) {
+ rb_raise(rb_eTypeError, "Integer#pow() 2nd argument not allowed unless a 1st argument is integer");
+ }
+ if (rb_int_negative_p(b)) {
+ rb_raise(rb_eRangeError, "Integer#pow() 1st argument cannot be negative when 2nd argument specified");
+ }
+ if (!RB_INTEGER_TYPE_P(m)) {
+ rb_raise(rb_eTypeError, "Integer#pow() 2nd argument not allowed unless all arguments are integers");
+ }
+
+ if (rb_int_negative_p(m)) {
+ m = rb_int_uminus(m);
+ nega_flg = 1;
+ }
+
+ if (FIXNUM_P(m)) {
+ long const half_val = (long)HALF_LONG_MSB;
+ long const mm = FIX2LONG(m);
+ if (!mm) rb_num_zerodiv();
+ if (mm == 1) return INT2FIX(0);
+ if (mm <= half_val) {
+ return int_pow_tmp1(rb_int_modulo(a, m), b, mm, nega_flg);
+ }
+ else {
+ return int_pow_tmp2(rb_int_modulo(a, m), b, mm, nega_flg);
+ }
+ }
+ else {
+ if (rb_bigzero_p(m)) rb_num_zerodiv();
+ if (bignorm(m) == INT2FIX(1)) return INT2FIX(0);
+ return int_pow_tmp3(rb_int_modulo(a, m), b, m, nega_flg);
+ }
+ }
+ UNREACHABLE_RETURN(Qnil);
+}
+
+/*
+ * Bignum objects hold integers outside the range of
+ * Fixnum. Bignum objects are created
+ * automatically when integer calculations would otherwise overflow a
+ * Fixnum. When a calculation involving
+ * Bignum objects returns a result that will fit in a
+ * Fixnum, the result is automatically converted.
+ *
+ * For the purposes of the bitwise operations and <code>[]</code>, a
+ * Bignum is treated as if it were an infinite-length
+ * bitstring with 2's complement representation.
+ *
+ * While Fixnum values are immediate, Bignum
+ * objects are not---assignment and parameter passing work with
+ * references to objects, not the objects themselves.
+ *
+ */
+
void
-Init_Bignum()
-{
- rb_cBignum = rb_define_class("Bignum", rb_cInteger);
-
- rb_undef_method(CLASS_OF(rb_cBignum), "new");
-
- rb_define_method(rb_cBignum, "to_s", rb_big_to_s, 0);
- rb_define_method(rb_cBignum, "coerce", rb_big_coerce, 1);
- rb_define_method(rb_cBignum, "-@", rb_big_uminus, 0);
- rb_define_method(rb_cBignum, "+", rb_big_plus, 1);
- rb_define_method(rb_cBignum, "-", rb_big_minus, 1);
- rb_define_method(rb_cBignum, "*", rb_big_mul, 1);
- rb_define_method(rb_cBignum, "/", rb_big_div, 1);
- rb_define_method(rb_cBignum, "%", rb_big_modulo, 1);
- rb_define_method(rb_cBignum, "divmod", rb_big_divmod, 1);
- rb_define_method(rb_cBignum, "modulo", rb_big_modulo, 1);
- rb_define_method(rb_cBignum, "remainder", rb_big_remainder, 1);
- rb_define_method(rb_cBignum, "**", rb_big_pow, 1);
- rb_define_method(rb_cBignum, "&", rb_big_and, 1);
- rb_define_method(rb_cBignum, "|", rb_big_or, 1);
- rb_define_method(rb_cBignum, "^", rb_big_xor, 1);
- rb_define_method(rb_cBignum, "~", rb_big_neg, 0);
- rb_define_method(rb_cBignum, "<<", rb_big_lshift, 1);
- rb_define_method(rb_cBignum, ">>", rb_big_rshift, 1);
- rb_define_method(rb_cBignum, "[]", rb_big_aref, 1);
-
- rb_define_method(rb_cBignum, "<=>", rb_big_cmp, 1);
- rb_define_method(rb_cBignum, "==", rb_big_eq, 1);
- rb_define_method(rb_cBignum, "===", rb_big_eq, 1);
- rb_define_method(rb_cBignum, "eql?", rb_big_eq, 1);
- rb_define_method(rb_cBignum, "hash", rb_big_hash, 0);
- rb_define_method(rb_cBignum, "to_f", rb_big_to_f, 0);
- rb_define_method(rb_cBignum, "abs", rb_big_abs, 0);
- rb_define_method(rb_cBignum, "size", rb_big_size, 0);
- rb_define_method(rb_cBignum, "zero?", rb_big_zero_p, 0);
+Init_Bignum(void)
+{
+ rb_define_method(rb_cInteger, "coerce", rb_int_coerce, 1);
+
+#if USE_GMP
+ /* The version of loaded GMP. */
+ rb_define_const(rb_cInteger, "GMP_VERSION", rb_sprintf("GMP %s", gmp_version));
+#endif
+
+ power_cache_init();
}
diff --git a/bin/gem b/bin/gem
new file mode 100755
index 0000000000..1c16ea7ddd
--- /dev/null
+++ b/bin/gem
@@ -0,0 +1,10 @@
+#!/usr/bin/env ruby
+#--
+# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
+# All rights reserved.
+# See LICENSE.txt for permissions.
+#++
+
+require "rubygems/gem_runner"
+
+Gem::GemRunner.new.run ARGV.clone
diff --git a/bootstraptest/pending.rb b/bootstraptest/pending.rb
new file mode 100644
index 0000000000..2c4b85a419
--- /dev/null
+++ b/bootstraptest/pending.rb
@@ -0,0 +1,21 @@
+assert_equal 'ok', %q{
+ def m
+ lambda{
+ proc{
+ return :ng1
+ }
+ }.call.call
+ :ng2
+ end
+
+ begin
+ m()
+ rescue LocalJumpError
+ :ok
+ end
+}
+
+# This randomly fails on mswin.
+assert_equal %q{[]}, %q{
+ Thread.new{sleep}.backtrace
+}
diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb
new file mode 100755
index 0000000000..f9b3e919b8
--- /dev/null
+++ b/bootstraptest/runner.rb
@@ -0,0 +1,787 @@
+"exec" "${RUBY-ruby}" "-x" "$0" "$@" || true # -*- Ruby -*-
+#!./ruby
+# $Id$
+
+# NOTE:
+# Never use optparse in this file.
+# Never use test/unit in this file.
+# Never use Ruby extensions in this file.
+# Maintain Ruby 1.8 compatibility for now
+
+$start_time = Time.now
+
+begin
+ require 'fileutils'
+ require 'tmpdir'
+rescue LoadError
+ $:.unshift File.join(File.dirname(__FILE__), '../lib')
+ retry
+end
+
+if !Dir.respond_to?(:mktmpdir)
+ # copied from lib/tmpdir.rb
+ def Dir.mktmpdir(prefix_suffix=nil, tmpdir=nil)
+ case prefix_suffix
+ when nil
+ prefix = "d"
+ suffix = ""
+ when String
+ prefix = prefix_suffix
+ suffix = ""
+ when Array
+ prefix = prefix_suffix[0]
+ suffix = prefix_suffix[1]
+ else
+ raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}"
+ end
+ tmpdir ||= Dir.tmpdir
+ t = Time.now.strftime("%Y%m%d")
+ n = nil
+ begin
+ path = "#{tmpdir}/#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
+ path << "-#{n}" if n
+ path << suffix
+ Dir.mkdir(path, 0700)
+ rescue Errno::EEXIST
+ n ||= 0
+ n += 1
+ retry
+ end
+
+ if block_given?
+ begin
+ yield path
+ ensure
+ FileUtils.remove_entry_secure path
+ end
+ else
+ path
+ end
+ end
+end
+
+# Configuration
+bt = Struct.new(:ruby,
+ :verbose,
+ :color,
+ :tty,
+ :quiet,
+ :wn,
+ :progress,
+ :progress_bs,
+ :passed,
+ :failed,
+ :reset,
+ :columns,
+ :window_width,
+ :width,
+ :indent,
+ :platform,
+ )
+BT = Class.new(bt) do
+ def indent=(n)
+ super
+ if (self.columns ||= 0) < n
+ $stderr.print(' ' * (n - self.columns))
+ end
+ self.columns = indent
+ end
+
+ def putc(c)
+ unless self.quiet
+ if self.window_width == nil
+ unless w = ENV["COLUMNS"] and (w = w.to_i) > 0
+ w = 80
+ end
+ w -= 1
+ self.window_width = w
+ end
+ if self.window_width and self.columns >= self.window_width
+ $stderr.print "\n", " " * (self.indent ||= 0)
+ self.columns = indent
+ end
+ $stderr.print c
+ $stderr.flush
+ self.columns += 1
+ end
+ end
+
+ def wn=(wn)
+ unless wn == 1
+ if /(?:\A|\s)--jobserver-(?:auth|fds)=(?:(\d+),(\d+)|fifo:((?:\\.|\S)+))/ =~ ENV.delete("MAKEFLAGS")
+ begin
+ if fifo = $3
+ fifo.gsub!(/\\(?=.)/, '')
+ r = File.open(fifo, IO::RDONLY|IO::NONBLOCK|IO::BINARY)
+ w = File.open(fifo, IO::WRONLY|IO::NONBLOCK|IO::BINARY)
+ else
+ r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
+ w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
+ end
+ rescue => e
+ r.close if r
+ else
+ r.close_on_exec = true
+ w.close_on_exec = true
+ tokens = r.read_nonblock(wn > 0 ? wn : 1024, exception: false)
+ r.close
+ if String === tokens
+ tokens.freeze
+ auth = w
+ w = nil
+ at_exit {auth << tokens; auth.close}
+ wn = tokens.size + 1
+ else
+ w.close
+ wn = 1
+ end
+ end
+ end
+ if wn <= 0
+ require 'etc'
+ wn = [Etc.nprocessors / 2, 1].max
+ end
+ end
+ super wn
+ end
+end.new
+
+BT_STATE = Struct.new(:count, :error).new
+
+def main
+ BT.ruby = File.expand_path('miniruby')
+ BT.verbose = false
+ $VERBOSE = false
+ $stress = false
+ BT.color = nil
+ BT.tty = nil
+ BT.quiet = false
+ # BT.wn = 1
+ dir = nil
+ quiet = false
+ tests = nil
+ ARGV.delete_if {|arg|
+ case arg
+ when /\A--ruby=(.*)/
+ ruby = $1
+ ruby.gsub!(/^([^ ]*)/){File.expand_path($1)}
+ ruby.gsub!(/(\s+-I\s*)((?!(?:\.\/)*-(?:\s|\z))\S+)/){$1+File.expand_path($2)}
+ ruby.gsub!(/(\s+-r\s*)(\.\.?\/\S+)/){$1+File.expand_path($2)}
+ BT.ruby = ruby
+ true
+ when /\A--sets=(.*)/
+ tests = Dir.glob("#{File.dirname($0)}/test_{#{$1}}*.rb").sort
+ puts tests.map {|path| File.basename(path) }.inspect
+ true
+ when /\A--dir=(.*)/
+ dir = $1
+ true
+ when /\A(--stress|-s)/
+ $stress = true
+ when /\A--color(?:=(?:always|(auto)|(never)|(.*)))?\z/
+ warn "unknown --color argument: #$3" if $3
+ BT.color = color = $1 ? nil : !$2
+ true
+ when /\A--tty(=(?:yes|(no)|(.*)))?\z/
+ warn "unknown --tty argument: #$3" if $3
+ BT.tty = !$1 || !$2
+ true
+ when /\A(-q|--q(uiet))\z/
+ quiet = true
+ BT.quiet = true
+ true
+ when /\A-j(\d+)?/
+ BT.wn = $1.to_i
+ true
+ when /\A(-v|--v(erbose))\z/
+ BT.verbose = true
+ BT.quiet = false
+ true
+ when /\A(-h|--h(elp)?)\z/
+ puts(<<-End)
+Usage: #{File.basename($0, '.*')} --ruby=PATH [--sets=NAME,NAME,...]
+ --sets=NAME,NAME,... Name of test sets.
+ --dir=DIRECTORY Working directory.
+ default: /tmp/bootstraptestXXXXX.tmpwd
+ --color[=WHEN] Colorize the output. WHEN defaults to 'always'
+ or can be 'never' or 'auto'.
+ -s, --stress stress test.
+ -v, --verbose Output test name before exec.
+ -q, --quiet Don\'t print header message.
+ -h, --help Print this message and quit.
+End
+ exit true
+ when /\A-j/
+ true
+ else
+ false
+ end
+ }
+ if tests and not ARGV.empty?
+ abort "--sets and arguments are exclusive"
+ end
+ tests ||= ARGV
+ tests = Dir.glob("#{File.dirname($0)}/test_*.rb").sort if tests.empty?
+ pathes = tests.map {|path| File.expand_path(path) }
+
+ BT.progress = %w[- \\ | /]
+ BT.progress_bs = "\b" * BT.progress[0].size
+ BT.tty = $stderr.tty? if BT.tty.nil?
+ BT.wn ||= /-j(\d+)?/ =~ (ENV["MAKEFLAGS"] || ENV["MFLAGS"]) ? $1.to_i : 1
+
+ case BT.color
+ when nil
+ BT.color = BT.tty && /dumb/ !~ ENV["TERM"]
+ end
+ BT.tty &&= !BT.verbose
+ if BT.color
+ # dircolors-like style
+ colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:\n]*)/)] : {}
+ begin
+ File.read(File.join(__dir__, "../tool/colors")).scan(/(\w+)=([^:\n]*)/) do |n, c|
+ colors[n] ||= c
+ end
+ rescue
+ end
+ BT.passed = "\e[;#{colors["pass"] || "32"}m"
+ BT.failed = "\e[;#{colors["fail"] || "31"}m"
+ BT.reset = "\e[m"
+ else
+ BT.passed = BT.failed = BT.reset = ""
+ end
+ target_version = `#{BT.ruby} -v`.chomp
+ BT.platform = target_version[/\[(.*)\]\z/, 1]
+ unless quiet
+ puts $start_time
+ if defined?(RUBY_DESCRIPTION)
+ puts "Driver is #{RUBY_DESCRIPTION}"
+ elsif defined?(RUBY_PATCHLEVEL)
+ puts "Driver is ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}#{RUBY_PLATFORM}) [#{RUBY_PLATFORM}]"
+ else
+ puts "Driver is ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
+ end
+ puts "Target is #{target_version}"
+ puts
+ $stdout.flush
+ end
+
+ in_temporary_working_directory(dir) do
+ exec_test pathes
+ end
+end
+
+def erase(e = true)
+ if e and BT.columns > 0 and BT.tty and !BT.verbose
+ "\e[1K\r"
+ else
+ ""
+ end
+end
+
+def load_test pathes
+ pathes.each do |path|
+ load File.expand_path(path)
+ end
+end
+
+def concurrent_exec_test
+ aq = Queue.new
+ rq = Queue.new
+
+ ts = BT.wn.times.map do
+ Thread.new do
+ while as = aq.pop
+ as.call
+ rq << as
+ end
+ ensure
+ rq << nil
+ end
+ end
+
+ Assertion.all.to_a.shuffle.each do |path, assertions|
+ assertions.each do |as|
+ aq << as
+ end
+ end
+
+ BT.indent = 1
+ aq.close
+ i = 1
+ term_wn = 0
+ begin
+ while BT.wn != term_wn
+ if r = rq.pop
+ case
+ when BT.quiet
+ when BT.tty
+ $stderr.print "#{BT.progress_bs}#{BT.progress[(i+=1) % BT.progress.size]}"
+ else
+ BT.putc '.'
+ end
+ else
+ term_wn += 1
+ end
+ end
+ ensure
+ ts.each(&:kill)
+ ts.each(&:join)
+ end
+end
+
+def exec_test(pathes)
+ # setup
+ load_test pathes
+ BT_STATE.count = 0
+ BT_STATE.error = 0
+ BT.columns = 0
+ BT.width = pathes.map {|path| File.basename(path).size}.max + 2
+
+ # execute tests
+ if BT.wn > 1
+ concurrent_exec_test
+ else
+ prev_basename = nil
+ Assertion.all.each do |basename, assertions|
+ if !BT.quiet && basename != prev_basename
+ prev_basename = basename
+ $stderr.printf("%s%-*s ", erase(BT.quiet), BT.width, basename)
+ $stderr.flush
+ end
+ BT.columns = BT.width + 1
+ $stderr.puts if BT.verbose
+ count = BT_STATE.count
+ error = BT_STATE.error
+
+ assertions.each do |assertion|
+ BT_STATE.count += 1
+ assertion.call
+ end
+
+ if BT.tty
+ if BT_STATE.error == error
+ msg = "PASS #{BT_STATE.count-count}"
+ BT.columns += msg.size - 1
+ $stderr.print "#{BT.progress_bs}#{BT.passed}#{msg}#{BT.reset}" unless BT.quiet
+ else
+ msg = "FAIL #{BT_STATE.error-error}/#{BT_STATE.count-count}"
+ $stderr.print "#{BT.progress_bs}#{BT.failed}#{msg}#{BT.reset}"
+ BT.columns = 0
+ end
+ end
+ $stderr.puts if !BT.quiet and (BT.tty or BT_STATE.error == error)
+ end
+ end
+
+ # show results
+ unless BT.quiet
+ $stderr.puts(erase)
+
+ sec = Time.now - $start_time
+ $stderr.puts "Finished in #{'%.2f' % sec} sec\n\n" if Assertion.count > 0
+ end
+
+ Assertion.errbuf.each do |msg|
+ $stderr.puts msg
+ end
+
+ out = BT.quiet ? $stdout : $stderr
+
+ if BT_STATE.error == 0
+ if Assertion.count == 0
+ out.puts "No tests, no problem" unless BT.quiet
+ else
+ out.puts "#{BT.passed}PASS#{BT.reset} all #{Assertion.count} tests"
+ end
+ true
+ else
+ $stderr.puts "#{BT.failed}FAIL#{BT.reset} #{BT_STATE.error}/#{BT_STATE.count} tests failed"
+ false
+ end
+end
+
+def target_platform
+ BT.platform or RUBY_PLATFORM
+end
+
+class Assertion < Struct.new(:src, :path, :lineno, :proc)
+ @count = 0
+ @all = Hash.new{|h, k| h[k] = []}
+ @errbuf = []
+
+ class << self
+ attr_reader :count, :errbuf
+
+ def all
+ @all
+ end
+
+ def add as
+ @all[as.path] << as
+ as.id = (@count += 1)
+ end
+ end
+
+ attr_accessor :id
+ attr_reader :err, :category
+
+ def initialize(*args)
+ super
+ self.class.add self
+ @category = self.path.match(/test_(.+)\.rb/)[1]
+ end
+
+ def call
+ self.proc.call self
+ end
+
+ def assert_check(message = '', opt = '', **argh)
+ show_progress(message) {
+ result = get_result_string(opt, **argh)
+ yield(result)
+ }
+ end
+
+ def with_stderr
+ out = err = nil
+ r, w = IO.pipe
+ @err = w
+ err_reader = Thread.new{ r.read }
+
+ begin
+ out = yield
+ ensure
+ w.close
+ err = err_reader.value
+ r.close rescue nil
+ end
+
+ return out, err
+ end
+
+ def show_error(msg, additional_message)
+ msg = "#{BT.failed}\##{self.id} #{self.path}:#{self.lineno}#{BT.reset}: #{msg} #{additional_message}"
+ if BT.tty
+ $stderr.puts "#{erase}#{msg}"
+ else
+ Assertion.errbuf << msg
+ end
+ BT_STATE.error += 1
+ end
+
+
+ def show_progress(message = '')
+ if BT.quiet || BT.wn > 1
+ # do nothing
+ elsif BT.verbose
+ $stderr.print "\##{@id} #{self.path}:#{self.lineno} "
+ elsif BT.tty
+ $stderr.print "#{BT.progress_bs}#{BT.progress[BT_STATE.count % BT.progress.size]}"
+ end
+
+ t = Time.now if BT.verbose
+ faildesc, errout = with_stderr {yield}
+ t = Time.now - t if BT.verbose
+
+ if !faildesc
+ # success
+ if BT.quiet || BT.wn > 1
+ # do nothing
+ elsif BT.tty
+ $stderr.print "#{BT.progress_bs}#{BT.progress[BT_STATE.count % BT.progress.size]}"
+ elsif BT.verbose
+ $stderr.printf(". %.3f\n", t)
+ else
+ BT.putc '.'
+ end
+ else
+ $stderr.print "#{BT.failed}F"
+ $stderr.printf(" %.3f", t) if BT.verbose
+ $stderr.print BT.reset
+ $stderr.puts if BT.verbose
+ show_error faildesc, message
+ unless errout.empty?
+ $stderr.print "#{BT.failed}stderr output is not empty#{BT.reset}\n", adjust_indent(errout)
+ end
+
+ if BT.tty and !BT.verbose and BT.wn == 1
+ $stderr.printf("%-*s%s", BT.width, path, BT.progress[BT_STATE.count % BT.progress.size])
+ end
+ end
+ rescue Interrupt
+ $stderr.puts "\##{@id} #{path}:#{lineno}"
+ raise
+ rescue Exception => err
+ $stderr.print 'E'
+ $stderr.puts if BT.verbose
+ show_error err.message, message
+ ensure
+ begin
+ check_coredump
+ rescue CoreDumpError => err
+ $stderr.print 'E'
+ $stderr.puts if BT.verbose
+ show_error err.message, message
+ cleanup_coredump
+ end
+ end
+
+ def get_result_string(opt = '', **argh)
+ if BT.ruby
+ filename = make_srcfile(**argh)
+ begin
+ kw = self.err ? {err: self.err} : {}
+ out = IO.popen("#{BT.ruby} -W0 #{opt} #{filename}", **kw)
+ pid = out.pid
+ out.read.tap{ Process.waitpid(pid); out.close }
+ ensure
+ raise Interrupt if $? and $?.signaled? && $?.termsig == Signal.list["INT"]
+
+ begin
+ Process.kill :KILL, pid
+ rescue Errno::ESRCH
+ # OK
+ end
+ end
+ else
+ eval(src).to_s
+ end
+ end
+
+ def make_srcfile(frozen_string_literal: nil)
+ filename = "bootstraptest.#{self.path}_#{self.lineno}_#{self.id}.rb"
+ File.open(filename, 'w') {|f|
+ f.puts "#frozen_string_literal:true" if frozen_string_literal
+ f.puts "GC.stress = true" if $stress
+ f.puts "print(begin; #{self.src}; end)"
+ }
+ filename
+ end
+end
+
+def add_assertion src, pr
+ loc = caller_locations(2, 1).first
+ lineno = loc.lineno
+ path = File.basename(loc.path)
+
+ Assertion.new(src, path, lineno, pr)
+end
+
+def assert_equal(expected, testsrc, message = '', opt = '', **argh)
+ add_assertion testsrc, -> as do
+ as.assert_check(message, opt, **argh) {|result|
+ if expected == result
+ nil
+ else
+ desc = "#{result.inspect} (expected #{expected.inspect})"
+ pretty(testsrc, desc, result)
+ end
+ }
+ end
+end
+
+def assert_match(expected_pattern, testsrc, message = '')
+ add_assertion testsrc, -> as do
+ as.assert_check(message) {|result|
+ if expected_pattern =~ result
+ nil
+ else
+ desc = "#{expected_pattern.inspect} expected to be =~\n#{result.inspect}"
+ pretty(testsrc, desc, result)
+ end
+ }
+ end
+end
+
+def assert_not_match(unexpected_pattern, testsrc, message = '')
+ add_assertion testsrc, -> as do
+ as.assert_check(message) {|result|
+ if unexpected_pattern !~ result
+ nil
+ else
+ desc = "#{unexpected_pattern.inspect} expected to be !~\n#{result.inspect}"
+ pretty(testsrc, desc, result)
+ end
+ }
+ end
+end
+
+def assert_valid_syntax(testsrc, message = '')
+ add_assertion testsrc, -> as do
+ as.assert_check(message, '-c') {|result|
+ result if /Syntax OK/ !~ result
+ }
+ end
+end
+
+def assert_normal_exit(testsrc, *rest, timeout: nil, **opt)
+ add_assertion testsrc, -> as do
+ message, ignore_signals = rest
+ message ||= ''
+ as.show_progress(message) {
+ faildesc = nil
+ filename = as.make_srcfile
+ timeout_signaled = false
+ logfile = "assert_normal_exit.#{as.path}.#{as.lineno}.log"
+
+ begin
+ err = open(logfile, "w")
+ io = IO.popen("#{BT.ruby} -W0 #{filename}", err: err)
+ pid = io.pid
+ th = Thread.new {
+ io.read
+ io.close
+ $?
+ }
+ if !th.join(timeout)
+ Process.kill :KILL, pid
+ timeout_signaled = true
+ end
+ status = th.value
+ ensure
+ err.close
+ end
+ if status && status.signaled?
+ signo = status.termsig
+ signame = Signal.list.invert[signo]
+ unless ignore_signals and ignore_signals.include?(signame)
+ sigdesc = "signal #{signo}"
+ if signame
+ sigdesc = "SIG#{signame} (#{sigdesc})"
+ end
+ if timeout_signaled
+ sigdesc << " (timeout)"
+ end
+ faildesc = pretty(testsrc, "killed by #{sigdesc}", nil)
+ stderr_log = File.read(logfile)
+ if !stderr_log.empty?
+ faildesc << "\n" if /\n\z/ !~ faildesc
+ stderr_log << "\n" if /\n\z/ !~ stderr_log
+ stderr_log.gsub!(/^.*\n/) { '| ' + $& }
+ faildesc << stderr_log
+ end
+ end
+ end
+ faildesc
+ }
+ end
+end
+
+def assert_finish(timeout_seconds, testsrc, message = '')
+ add_assertion testsrc, -> as do
+ if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait
+ timeout_seconds *= 3
+ end
+
+ as.show_progress(message) {
+ faildesc = nil
+ filename = as.make_srcfile
+ io = IO.popen("#{BT.ruby} -W0 #{filename}", err: as.err)
+ pid = io.pid
+ waited = false
+ tlimit = Time.now + timeout_seconds
+ diff = timeout_seconds
+ while diff > 0
+ if Process.waitpid pid, Process::WNOHANG
+ waited = true
+ break
+ end
+ if io.respond_to?(:read_nonblock)
+ if IO.select([io], nil, nil, diff)
+ begin
+ io.read_nonblock(1024)
+ rescue Errno::EAGAIN, IO::WaitReadable, EOFError
+ break
+ end while true
+ end
+ else
+ sleep 0.1
+ end
+ diff = tlimit - Time.now
+ end
+ if !waited
+ Process.kill(:KILL, pid)
+ Process.waitpid pid
+ faildesc = pretty(testsrc, "not finished in #{timeout_seconds} seconds", nil)
+ end
+ io.close
+ faildesc
+ }
+ end
+end
+
+def flunk(message = '')
+ add_assertion '', -> as do
+ as.show_progress('') { message }
+ end
+end
+
+def show_limit(testsrc, opt = '', **argh)
+ return if BT.quiet
+
+ add_assertion testsrc, -> as do
+ result = as.get_result_string(opt, **argh)
+ Assertion.errbuf << result
+ end
+end
+
+def pretty(src, desc, result)
+ src = src.sub(/\A\s*\n/, '')
+ (/\n/ =~ src ? "\n#{adjust_indent(src)}" : src) + " #=> #{desc}"
+end
+
+INDENT = 27
+
+def adjust_indent(src)
+ untabify(src).gsub(/^ {#{INDENT}}/o, '').gsub(/^/, ' ').sub(/\s*\z/, "\n")
+end
+
+def untabify(str)
+ str.gsub(/^\t+/) {' ' * (8 * $&.size) }
+end
+
+def in_temporary_working_directory(dir)
+ if dir
+ Dir.mkdir dir
+ Dir.chdir(dir) {
+ yield
+ }
+ else
+ Dir.mktmpdir(["bootstraptest", ".tmpwd"]) {|d|
+ Dir.chdir(d) {
+ yield
+ }
+ }
+ end
+end
+
+def cleanup_coredump
+ if File.file?('core')
+ require 'time'
+ Dir.glob('/tmp/bootstraptest-core.*').each do |f|
+ if Time.now - File.mtime(f) > 7 * 24 * 60 * 60 # 7 days
+ warn "Deleting an old core file: #{f}"
+ FileUtils.rm(f)
+ end
+ end
+ core_path = "/tmp/bootstraptest-core.#{Time.now.utc.iso8601}"
+ warn "A core file is found. Saving it at: #{core_path.dump}"
+ FileUtils.mv('core', core_path)
+ cmd = ['gdb', BT.ruby, '-c', core_path, '-ex', 'bt', '-batch']
+ p cmd # debugging why it's not working
+ system(*cmd)
+ end
+ FileUtils.rm_f Dir.glob('core.*')
+ FileUtils.rm_f BT.ruby+'.stackdump' if BT.ruby
+end
+
+class CoreDumpError < StandardError; end
+
+def check_coredump
+ if File.file?('core') or not Dir.glob('core.*').empty? or
+ (BT.ruby and File.exist?(BT.ruby+'.stackdump'))
+ raise CoreDumpError, "core dumped"
+ end
+end
+
+exit main
diff --git a/bootstraptest/test_attr.rb b/bootstraptest/test_attr.rb
new file mode 100644
index 0000000000..3cb9d3eb39
--- /dev/null
+++ b/bootstraptest/test_attr.rb
@@ -0,0 +1,52 @@
+assert_equal 'ok', %q{
+ module M
+ class A
+ class << self
+ attr_accessor :at
+ def workflow_rule
+ yield self
+ end
+
+ def eval_str(str)
+ eval(str)
+ end
+ end
+ end
+ end
+ begin
+ M::A.eval_str(<<-END)
+ workflow_rule do |r|
+ r.at 1
+ end
+ END
+ rescue ArgumentError => e
+ print "ok"
+ end
+}, '[ruby-core:14641]'
+
+assert_equal %{ok}, %{
+ class A
+ attr :m
+ end
+ begin
+ A.new.m(3)
+ rescue ArgumentError => e
+ print "ok"
+ end
+}, '[ruby-core:15120]'
+
+assert_equal %{ok}, %{
+ class Big
+ attr_reader :foo
+ def initialize
+ @foo = "ok"
+ end
+ end
+
+ obj = Big.new
+ 100.times do |i|
+ obj.instance_variable_set(:"@ivar_\#{i}", i)
+ end
+
+ Big.new.foo
+}
diff --git a/bootstraptest/test_autoload.rb b/bootstraptest/test_autoload.rb
new file mode 100644
index 0000000000..9e0850bc52
--- /dev/null
+++ b/bootstraptest/test_autoload.rb
@@ -0,0 +1,70 @@
+assert_equal 'ok', %q{
+ File.unlink('zzz1.rb') if File.file?('zzz1.rb')
+ instance_eval do
+ autoload :ZZZ, './zzz1.rb'
+ begin
+ ZZZ
+ rescue LoadError
+ :ok
+ end
+ end
+}, '[ruby-dev:43816]'
+
+assert_equal 'ok', %q{
+ open('zzz2.rb', 'w') {|f| f.puts '' }
+ instance_eval do
+ autoload :ZZZ, './zzz2.rb'
+ begin
+ ZZZ
+ rescue NameError
+ :ok
+ end
+ end
+}, '[ruby-dev:43816]'
+
+assert_equal 'ok', %q{
+ open('zzz3.rb', 'w') {|f| f.puts 'class ZZZ; def self.ok;:ok;end;end'}
+ instance_eval do
+ autoload :ZZZ, './zzz3.rb'
+ ZZZ.ok
+ end
+}, '[ruby-dev:43816]'
+
+assert_equal 'ok', %q{
+ open("zzz4.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
+ autoload :ZZZ, "./zzz4.rb"
+ ZZZ.ok
+}
+
+assert_equal 'ok', %q{
+ open("zzz5.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
+ autoload :ZZZ, "./zzz5.rb"
+ require "./zzz5.rb"
+ ZZZ.ok
+}
+
+assert_equal 'okok', %q{
+ open("zzz6.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
+ autoload :ZZZ, "./zzz6.rb"
+ t1 = Thread.new {ZZZ.ok}
+ t2 = Thread.new {ZZZ.ok}
+ [t1.value, t2.value].join
+}
+
+assert_finish 5, %q{
+ autoload :ZZZ, File.expand_path(__FILE__)
+ begin
+ ZZZ
+ rescue NameError
+ end
+}, '[ruby-core:21696]'
+
+assert_equal 'A::C', %q{
+ open("zzz7.rb", "w") {}
+ class A
+ autoload :C, "./zzz7"
+ class C
+ end
+ C
+ end
+}
diff --git a/bootstraptest/test_block.rb b/bootstraptest/test_block.rb
new file mode 100644
index 0000000000..cdc5960a59
--- /dev/null
+++ b/bootstraptest/test_block.rb
@@ -0,0 +1,613 @@
+assert_equal %q{1}, %q{
+ 1.times{
+ begin
+ a = 1
+ ensure
+ foo = nil
+ end
+ }
+}
+assert_equal %q{2}, %q{
+ [1,2,3].find{|x| x == 2}
+}
+assert_equal %q{2}, %q{
+ class E
+ include Enumerable
+ def each(&block)
+ [1, 2, 3].each(&block)
+ end
+ end
+ E.new.find {|x| x == 2 }
+}
+assert_equal %q{6}, %q{
+ sum = 0
+ for x in [1, 2, 3]
+ sum += x
+ end
+ sum
+}
+assert_equal %q{15}, %q{
+ sum = 0
+ for x in (1..5)
+ sum += x
+ end
+ sum
+}
+assert_equal %q{0}, %q{
+ sum = 0
+ for x in []
+ sum += x
+ end
+ sum
+}
+assert_equal %q{1}, %q{
+ ans = []
+ 1.times{
+ for n in 1..3
+ a = n
+ ans << a
+ end
+ }
+}
+assert_equal %q{1..3}, %q{
+ ans = []
+ for m in 1..3
+ for n in 1..3
+ a = [m, n]
+ ans << a
+ end
+ end
+}
+assert_equal %q{[1, 2, 3]}, %q{
+ (1..3).to_a
+}
+assert_equal %q{[4, 8, 12]}, %q{
+ (1..3).map{|e|
+ e * 4
+ }
+}
+assert_equal %q{[1, 2, 3]}, %q{
+ class C
+ include Enumerable
+ def each
+ [1,2,3].each{|e|
+ yield e
+ }
+ end
+ end
+
+ C.new.to_a
+}
+assert_equal %q{[4, 5, 6]}, %q{
+ class C
+ include Enumerable
+ def each
+ [1,2,3].each{|e|
+ yield e
+ }
+ end
+ end
+
+ C.new.map{|e|
+ e + 3
+ }
+}
+assert_equal %q{100}, %q{
+ def m
+ yield
+ end
+ def n
+ yield
+ end
+
+ m{
+ n{
+ 100
+ }
+ }
+}
+assert_equal %q{20}, %q{
+ def m
+ yield 1
+ end
+
+ m{|ib|
+ m{|jb|
+ i = 20
+ }
+ }
+}
+assert_equal %q{2}, %q{
+ def m
+ yield 1
+ end
+
+ m{|ib|
+ m{|jb|
+ ib = 20
+ kb = 2
+ }
+ }
+}
+assert_equal %q{3}, %q{
+ def iter1
+ iter2{
+ yield
+ }
+ end
+
+ def iter2
+ yield
+ end
+
+ iter1{
+ jb = 2
+ iter1{
+ jb = 3
+ }
+ jb
+ }
+}
+assert_equal %q{2}, %q{
+ def iter1
+ iter2{
+ yield
+ }
+ end
+
+ def iter2
+ yield
+ end
+
+ iter1{
+ jb = 2
+ iter1{
+ jb
+ }
+ jb
+ }
+}
+assert_equal %q{2}, %q{
+ def m
+ yield 1
+ end
+ m{|ib|
+ ib*2
+ }
+}
+assert_equal %q{92580}, %q{
+ def m
+ yield 12345, 67890
+ end
+ m{|ib,jb|
+ ib*2+jb
+ }
+}
+assert_equal %q{[10, nil]}, %q{
+ def iter
+ yield 10
+ end
+
+ a = nil
+ [iter{|a|
+ a
+ }, a]
+}
+assert_equal %q{21}, %q{
+ def iter
+ yield 10
+ end
+
+ iter{|a|
+ iter{|a|
+ a + 1
+ } + a
+ }
+}
+assert_equal %q{[10, 20, 30, 40, nil, nil, nil, nil]}, %q{
+ def iter
+ yield 10, 20, 30, 40
+ end
+
+ a = b = c = d = nil
+ iter{|a, b, c, d|
+ [a, b, c, d]
+ } + [a, b, c, d]
+}
+assert_equal %q{[10, 20, 30, 40, nil, nil]}, %q{
+ def iter
+ yield 10, 20, 30, 40
+ end
+
+ a = b = nil
+ iter{|a, b, c, d|
+ [a, b, c, d]
+ } + [a, b]
+}
+assert_equal %q{[1]}, %q{
+ $a = []
+
+ def iter
+ yield 1
+ end
+
+ def m
+ x = iter{|x|
+ $a << x
+ y = 0
+ }
+ end
+ m
+ $a
+}
+assert_equal %q{[1, [2]]}, %q{
+ def iter
+ yield 1, 2
+ end
+
+ iter{|a, *b|
+ [a, b]
+ }
+}
+assert_equal %q{[[1, 2]]}, %q{
+ def iter
+ yield 1, 2
+ end
+
+ iter{|*a|
+ [a]
+ }
+}
+assert_equal %q{[1, 2, []]}, %q{
+ def iter
+ yield 1, 2
+ end
+
+ iter{|a, b, *c|
+ [a, b, c]
+ }
+}
+assert_equal %q{[1, 2, nil, []]}, %q{
+ def iter
+ yield 1, 2
+ end
+
+ iter{|a, b, c, *d|
+ [a, b, c, d]
+ }
+}
+assert_equal %q{1}, %q{
+ def m
+ yield
+ end
+ m{
+ 1
+ }
+}
+assert_equal %q{15129}, %q{
+ def m
+ yield 123
+ end
+ m{|ib|
+ m{|jb|
+ ib*jb
+ }
+ }
+}
+assert_equal %q{2}, %q{
+ def m a
+ yield a
+ end
+ m(1){|ib|
+ m(2){|jb|
+ ib*jb
+ }
+ }
+}
+assert_equal %q{9}, %q{
+ sum = 0
+ 3.times{|ib|
+ 2.times{|jb|
+ sum += ib + jb
+ }}
+ sum
+}
+assert_equal %q{10}, %q{
+ 3.times{|bl|
+ break 10
+ }
+}
+assert_equal %q{[1, 2]}, %q{
+ def iter
+ yield 1,2,3
+ end
+
+ iter{|i, j|
+ [i, j]
+ }
+}
+assert_equal %q{[1, nil]}, %q{
+ def iter
+ yield 1
+ end
+
+ iter{|i, j|
+ [i, j]
+ }
+}
+
+assert_equal '0', %q{
+def m()
+end
+m {|(v0,*,(*)),|}
+m {|(*v0,(*)),|}
+m {|(v0,*v1,(*)),|}
+m {|((v0,*v1,v2)),|}
+m {|(v0,*v1,v2),|}
+m {|(v0,*v1,(v2)),|}
+m {|((*),*v0,v1),|}
+m {|((v0),*v1,v2),|}
+m {|(v0,v1,*v2,v3),|}
+m {|v0,(v1,*v2,v3),|}
+m {|(v0,*v1,v2),v3,|}
+m {|(v0,*v1,v2)|}
+m {|(v0,*v1,v2),&v3|}
+m {|(v0,*v1,v2),*|}
+m {|(v0,*v1,v2),*,&v3|}
+m {|*,(v0,*v1,v2)|}
+m {|*,(v0,*v1,v2),&v3|}
+m {|v0,*,(v1,*v2,v3)|}
+m {|v0,*,(v1,*v2,v3),&v4|}
+m {|(v0,*v1,v2),*,v3|}
+m {|(v0,*v1,v2),*,v3,&v4|}
+m {|(v0, *v1, v2)|}
+m {|(*,v)|}
+0
+}, "block parameter (shouldn't SEGV: [ruby-dev:31143])"
+
+assert_equal 'nil', %q{
+ def m
+ yield
+ end
+ m{|&b| b}.inspect
+}, '[ruby-dev:31147]'
+
+assert_equal 'nil', %q{
+ def m()
+ yield
+ end
+ m {|(v,(*))|}.inspect
+}, '[ruby-dev:31160]'
+
+assert_equal 'nil', %q{
+ def m()
+ yield
+ end
+ m {|(*,a,b)|}.inspect
+}, '[ruby-dev:31153]'
+
+assert_equal 'nil', %q{
+ def m()
+ yield
+ end
+ m {|((*))|}.inspect
+}
+
+assert_equal %q{[1, 1, [1, nil], [1, nil], [1, nil], [1, nil], [1, 1], 1, [1, nil], [1, nil], [1, nil], [1, nil], [[1, 1], [1, 1]], [1, 1], [1, 1], [1, 1], [1, nil], [1, nil], [[[1, 1], [1, 1]], [[1, 1], [1, 1]]], [[1, 1], [1, 1]], [[1, 1], [1, 1]], [[1, 1], [1, 1]], [1, 1], [1, 1], [[[[1, 1], [1, 1]], [[1, 1], [1, 1]]], [[[1, 1], [1, 1]], [[1, 1], [1, 1]]]], [[[1, 1], [1, 1]], [[1, 1], [1, 1]]], [[[1, 1], [1, 1]], [[1, 1], [1, 1]]], [[[1, 1], [1, 1]], [[1, 1], [1, 1]]], [[1, 1], [1, 1]], [[1, 1], [1, 1]]]}, %q{
+def m(ary = [])
+ yield(ary)
+end
+
+$ans = []
+o = 1
+5.times{
+ v,(*) = o; $ans << o
+ m(o){|(v,(*))| $ans << v}
+ ((x, y)) = o; $ans << [x, y]
+ m(o){|((x, y))| $ans << [x, y]}
+ (((x, y))) = o; $ans << [x, y]
+ m(o){|(((x, y)))| $ans << [x, y]}
+ o = [o, o]
+}; $ans
+}
+
+assert_equal '0', %q{
+ def m()
+ yield [0]
+ end
+ m {|*,v| v}.inspect
+}, '[ruby-dev:31437]'
+assert_equal '[0]', %q{
+ def m
+ yield [0]
+ end
+ m{|v, &b| v}.inspect
+}, '[ruby-dev:31440]'
+assert_equal 'ok', %q{
+ begin
+ lambda{|a|}.call(1, 2)
+ rescue ArgumentError
+ :ok
+ else
+ :ng
+ end
+}, '[ruby-dev:31464]'
+assert_equal 'ok', %q{
+ begin
+ lambda{|&b|}.call(3)
+ rescue ArgumentError
+ :ok
+ else
+ :ng
+ end
+}, '[ruby-dev:31472]'
+assert_equal 'ok', %q{
+ class C
+ def each
+ yield [1,2]
+ yield 1,2
+ end
+ end
+ vs1 = []
+ C.new.each {|*v| vs1 << v }
+ vs2 = []
+ C.new.to_enum.each {|*v| vs2 << v }
+ vs1 == vs2 ? :ok : :ng
+}, '[ruby-dev:32329]'
+
+assert_normal_exit %q{
+ e = [1,2,3].each
+ 10000.times {
+ e = [e].each
+ }
+ Thread.new { GC.start }.join
+}, '[ruby-dev:32604]'
+
+
+assert_equal '[nil, []]', %q{
+ def m() yield nil,[] end
+ l = lambda {|*v| v}
+ GC.stress=true
+ r = m(&l)
+ GC.stress=false
+ r.inspect
+}, '[ruby-dev:32567]'
+
+assert_equal NilClass.to_s, %q{
+ r = false; 1.times{|&b| r = b}; r.class
+}
+
+assert_equal 'ok', %q{
+ class C
+ define_method(:foo) do |arg, &block|
+ if block then block.call else arg end
+ end
+ end
+ C.new.foo("ng") {"ok"}
+}, '[ruby-talk:266422]'
+
+assert_equal 'ok', %q{
+ class C
+ define_method(:xyz) do |o, k, &block|
+ block.call(o, k)
+ end
+ end
+ C.new.xyz("o","k") {|o, k| o+k}
+}, '[ruby-core:20544]'
+
+assert_equal 'ok', %q{
+ class C
+ define_method(:xyz) do |*args, &block|
+ block.call(*args)
+ end
+ end
+ C.new.xyz("o","k") {|*args| args.join("")}
+}, '[ruby-core:20544]'
+
+assert_equal 'ok', %q{
+ STDERR.reopen(STDOUT)
+ class C
+ define_method(:foo) do |&block|
+ block.call if block
+ end
+ result = "ng"
+ new.foo() {result = "ok"}
+ result
+ end
+}
+
+assert_equal "ok", %q{
+ class Bar
+ def bar; :ok; end
+ end
+ def foo
+ yield(Bar.new) if block_given?
+ end
+ foo(&:bar)
+}, '[ruby-core:14279]'
+
+assert_normal_exit %q{
+ class Controller
+ def respond_to(&block)
+ responder = Responder.new
+ block.call(responder)
+ responder.respond
+ end
+ def test_for_bug
+ respond_to{|format|
+ format.js{
+ puts "in test"
+ render{|obj|
+ puts obj
+ }
+ }
+ }
+ end
+ def render(&block)
+ puts "in render"
+ end
+ end
+
+ class Responder
+ def method_missing(symbol, &block)
+ puts "enter method_missing"
+ @response = Proc.new{
+ puts 'in method missing'
+ block.call
+ }
+ puts "leave method_missing"
+ end
+ def respond
+ @response.call
+ end
+ end
+ t = Controller.new
+ t.test_for_bug
+}, '[ruby-core:14395]'
+
+assert_equal 'true', %q{
+ class C0
+ def foo
+ block_given?
+ end
+ end
+
+ class C1 < C0
+ def foo
+ super
+ end
+ end
+
+ C1.new.foo{}
+}
+
+assert_equal 'true', %q{
+ class C0
+ def foo
+ block_given?
+ end
+ end
+
+ class C1 < C0
+ def foo
+ super()
+ end
+ end
+
+ C1.new.foo{}
+}
+
+assert_equal 'ok', %q{
+ 1.times do
+ begin
+ raise
+ rescue
+ begin
+ raise
+ rescue
+ break
+ end
+ end
+ end
+ 'ok'
+}
diff --git a/bootstraptest/test_class.rb b/bootstraptest/test_class.rb
new file mode 100644
index 0000000000..b7fe0a1acd
--- /dev/null
+++ b/bootstraptest/test_class.rb
@@ -0,0 +1,169 @@
+# class
+assert_equal 'true', %q( class C; end
+ Object.const_defined?(:C) )
+assert_equal 'Class', %q( class C; end
+ C.class )
+assert_equal 'C', %q( class C; end
+ C.name )
+assert_equal 'C', %q( class C; end
+ C.new.class )
+assert_equal 'C', %q( class C; end
+ C.new.class.name )
+assert_equal 'Class', %q( class C; end
+ C.new.class.class )
+assert_equal 'true', %q( Object.__send__(:remove_const, :TrueClass)
+ GC.start
+ true.inspect)
+assert_equal 'false', %q( Object.__send__(:remove_const, :FalseClass)
+ GC.start
+ false.inspect)
+assert_equal 'nil', %q( Object.__send__(:remove_const, :NilClass)
+ GC.start
+ nil.inspect)
+
+
+# inherited class
+assert_equal 'true', %q( class A; end
+ class C < A; end
+ Object.const_defined?(:C) )
+assert_equal 'Class', %q( class A; end
+ class C < A; end
+ C.class )
+assert_equal 'C', %q( class A; end
+ class C < A; end
+ C.name )
+assert_equal 'C', %q( class A; end
+ class C < A; end
+ C.new.class )
+assert_equal 'C', %q( class A; end
+ class C < A; end
+ C.new.class.name )
+assert_equal 'Class', %q( class A; end
+ class C < A; end
+ C.new.class.class )
+
+# module
+assert_equal 'true', %q( module M; end
+ Object.const_defined?(:M) )
+assert_equal 'Module', %q( module M; end
+ M.class )
+assert_equal 'M', %q( module M; end
+ M.name )
+assert_equal 'C', %q( module M; end
+ class C; include M; end
+ C.new.class )
+
+# nested class
+assert_equal 'A::B', %q( class A; end
+ class A::B; end
+ A::B )
+assert_equal 'A::B', %q( class A; end
+ class A::B; end
+ A::B.name )
+assert_equal 'A::B', %q( class A; end
+ class A::B; end
+ A::B.new.class )
+assert_equal 'Class', %q( class A; end
+ class A::B; end
+ A::B.new.class.class )
+assert_equal 'A::B::C', %q( class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C )
+assert_equal 'A::B::C', %q( class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C.name )
+assert_equal 'Class', %q( class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C.class )
+assert_equal 'A::B::C', %q( class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C.new.class )
+assert_equal 'Class', %q( class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C.new.class.class )
+assert_equal 'A::B2', %q( class A; end
+ class A::B; end
+ class A::B2 < A::B; end
+ A::B2 )
+assert_equal 'Class', %q( class A; end
+ class A::B; end
+ class A::B2 < A::B; end
+ A::B2.class )
+
+# reopen
+assert_equal 'true', %q( class C; end; c1 = ::C
+ class C; end; c2 = ::C
+ c1.equal?(c2) )
+assert_equal '1', %q( class C; end
+ class A; end
+ begin class C < A; end; rescue TypeError; 1 end )
+assert_equal '1', %q( class C; end
+ begin module C; end; rescue TypeError; 1 end )
+assert_equal '1', %q( C = 1 # [yarv-dev:782]
+ begin class C; end; rescue TypeError; 1 end )
+assert_equal '1', %q( C = 1 # [yarv-dev:800]
+ begin module C; end; rescue TypeError; 1 end )
+
+# colon2, colon3
+assert_equal '1', %q( class A; end; A::C = 1; A::C )
+assert_equal '1', %q( A = 7; begin A::C = 7; rescue TypeError; 1 end )
+assert_equal '1', %q( begin 7::C = 7; rescue TypeError; 1 end )
+assert_equal 'C', %q( class A; class ::C; end end; C )
+assert_equal 'Class', %q( class A; class ::C; end end; C.class )
+assert_equal 'OK', %q( class A; ::C = "OK"; end; C )
+assert_equal 'String', %q( class A; ::C = "OK"; end; C.class )
+
+# class/module dup
+assert_equal 'Class', %q( class C; end; C.dup.class )
+assert_equal 'Module', %q( module M; end; M.dup.class )
+
+
+assert_equal "ok", %q{
+ module Foo
+ end
+
+ begin
+ def foo(&b)
+ Foo.module_eval &b
+ end
+ foo{
+ def bar
+ end
+ }
+ bar()
+ rescue NameError
+ :ok
+ end
+}, '[ruby-core:14378]'
+
+assert_equal '3', %q{
+ $i = 0
+ class C
+ def self.const_missing *args
+ $i+=1
+ end
+ end
+
+ 3.times{
+ C::FOO
+ }
+ $i
+}
+
+assert_match /::C\z/, %q{
+ c = nil
+ Module.new{|m| c = class m::C; name; end}
+ c
+}, '[ruby-dev:38456]'
+
+assert_normal_exit %q{
+ s = Symbol.dup
+ class << s
+ end
+ s.allocate.to_s
+}, '[ruby-core:30843]'
diff --git a/bootstraptest/test_constant_cache.rb b/bootstraptest/test_constant_cache.rb
new file mode 100644
index 0000000000..1fa83256ed
--- /dev/null
+++ b/bootstraptest/test_constant_cache.rb
@@ -0,0 +1,187 @@
+# Constant lookup is cached.
+assert_equal '1', %q{
+ CONST = 1
+
+ def const
+ CONST
+ end
+
+ const
+ const
+}
+
+# Invalidate when a constant is set.
+assert_equal '2', %q{
+ CONST = 1
+
+ def const
+ CONST
+ end
+
+ const
+
+ CONST = 2
+
+ const
+}
+
+# Invalidate when a constant of the same name is set.
+assert_equal '1', %q{
+ CONST = 1
+
+ def const
+ CONST
+ end
+
+ const
+
+ class Container
+ CONST = 2
+ end
+
+ const
+}
+
+# Invalidate when a constant is removed.
+assert_equal 'missing', %q{
+ class Container
+ CONST = 1
+
+ def const
+ CONST
+ end
+
+ def self.const_missing(name)
+ 'missing'
+ end
+
+ new.const
+ remove_const :CONST
+ end
+
+ Container.new.const
+}
+
+# Invalidate when a constant's visibility changes.
+assert_equal 'missing', %q{
+ class Container
+ CONST = 1
+
+ def self.const_missing(name)
+ 'missing'
+ end
+ end
+
+ def const
+ Container::CONST
+ end
+
+ const
+
+ Container.private_constant :CONST
+
+ const
+}
+
+# Invalidate when a constant's visibility changes even if the call to the
+# visibility change method fails.
+assert_equal 'missing', %q{
+ class Container
+ CONST1 = 1
+
+ def self.const_missing(name)
+ 'missing'
+ end
+ end
+
+ def const1
+ Container::CONST1
+ end
+
+ const1
+
+ begin
+ Container.private_constant :CONST1, :CONST2
+ rescue NameError
+ end
+
+ const1
+}
+
+# Invalidate when a module is included.
+assert_equal 'INCLUDE', %q{
+ module Include
+ CONST = :INCLUDE
+ end
+
+ class Parent
+ CONST = :PARENT
+ end
+
+ class Child < Parent
+ def const
+ CONST
+ end
+
+ new.const
+
+ include Include
+ end
+
+ Child.new.const
+}
+
+# Invalidate when const_missing is hit.
+assert_equal '2', %q{
+ module Container
+ Foo = 1
+ Bar = 2
+
+ class << self
+ attr_accessor :count
+
+ def const_missing(name)
+ @count += 1
+ @count == 1 ? Foo : Bar
+ end
+ end
+
+ @count = 0
+ end
+
+ def const
+ Container::Baz
+ end
+
+ const
+ const
+}
+
+# Invalidate when the iseq gets cleaned up.
+assert_equal '2', %q{
+ CONSTANT = 1
+
+ iseq = RubyVM::InstructionSequence.compile(<<~RUBY)
+ CONSTANT
+ RUBY
+
+ iseq.eval
+ iseq = nil
+
+ GC.start
+ CONSTANT = 2
+}
+
+# Invalidate when the iseq gets cleaned up even if it was never in the cache.
+assert_equal '2', %q{
+ CONSTANT = 1
+
+ iseq = RubyVM::InstructionSequence.compile(<<~RUBY)
+ CONSTANT
+ RUBY
+
+ iseq = nil
+
+ GC.start
+ CONSTANT = 2
+}
diff --git a/bootstraptest/test_env.rb b/bootstraptest/test_env.rb
new file mode 100644
index 0000000000..7d1b45b75e
--- /dev/null
+++ b/bootstraptest/test_env.rb
@@ -0,0 +1,12 @@
+assert_equal "true", %q{
+ ENV["ENVTEST"] = "\u{e9 3042 d76c}"
+ env = ENV["ENVTEST"]
+ env.valid_encoding?
+}
+
+# different encoding is used for PATH
+assert_equal "true", %q{
+ ENV["PATH"] = "\u{e9 3042 d76c}"
+ env = ENV["PATH"]
+ env.valid_encoding?
+}
diff --git a/bootstraptest/test_eval.rb b/bootstraptest/test_eval.rb
new file mode 100644
index 0000000000..a9f389c673
--- /dev/null
+++ b/bootstraptest/test_eval.rb
@@ -0,0 +1,356 @@
+assert_equal %q{ok}, %q{
+ def m
+ a = :ok
+ $b = binding
+ end
+ m
+ eval('a', $b)
+}
+assert_equal %q{[:ok, :ok2]}, %q{
+ def m
+ a = :ok
+ $b = binding
+ end
+ m
+ eval('b = :ok2', $b)
+ eval('[a, b]', $b)
+}
+assert_equal %q{[nil, 1]}, %q{
+ $ans = []
+ def m
+ $b = binding
+ end
+ m
+ $ans << eval(%q{
+ $ans << eval(%q{
+ a
+ }, $b)
+ a = 1
+ }, $b)
+ $ans
+}
+assert_equal %q{C}, %q{
+ Const = :top
+ class C
+ Const = :C
+ def m
+ binding
+ end
+ end
+ eval('Const', C.new.m)
+}
+assert_equal %q{top}, %q{
+ Const = :top
+ a = 1
+ class C
+ Const = :C
+ def m
+ eval('Const', TOPLEVEL_BINDING)
+ end
+ end
+ C.new.m
+}
+assert_equal %q{:ok
+ok}, %q{
+ class C
+ $b = binding
+ end
+ eval %q{
+ def m
+ :ok
+ end
+ }, $b
+ p C.new.m
+}
+assert_equal %q{ok}, %q{
+ b = proc{
+ a = :ok
+ binding
+ }.call
+ a = :ng
+ eval("a", b)
+}
+assert_equal %q{C}, %q{
+ class C
+ def foo
+ binding
+ end
+ end
+ C.new.foo.eval("self.class.to_s")
+}
+assert_equal %q{1}, %q{
+ eval('1')
+}
+assert_equal %q{1}, %q{
+ eval('a=1; a')
+}
+assert_equal %q{1}, %q{
+ a = 1
+ eval('a')
+}
+assert_equal %q{ok}, %q{
+ __send__ :eval, %{
+ :ok
+ }
+}
+assert_equal %q{ok}, %q{
+ 1.__send__ :instance_eval, %{
+ :ok
+ }
+}
+assert_equal %q{1}, %q{
+ 1.instance_eval{
+ self
+ }
+}
+assert_equal %q{foo}, %q{
+ 'foo'.instance_eval{
+ self
+ }
+}
+assert_equal %q{1}, %q{
+ class Integer
+ Const = 1
+ end
+ 1.instance_eval %{
+ Const
+ }
+}
+assert_equal %q{1}, %q{
+ class TrueClass
+ Const = 1
+ end
+ true.instance_eval %{
+ Const
+ }
+}
+assert_equal %q{[:Const]}, %q{
+ mod = Module.new
+ mod.instance_eval %{
+ Const = 1
+ }
+ raise if defined?(Module::Const)
+ mod.singleton_class.constants
+}
+assert_equal %q{can't define singleton}, %q{
+ begin
+ 123.instance_eval %{
+ Const = 1
+ }
+ "bad"
+ rescue TypeError => e
+ raise "bad" if defined?(Integer::Const)
+ e.message
+ end
+}
+assert_equal %q{top}, %q{
+ Const = :top
+ class C
+ Const = :C
+ end
+ C.module_eval{
+ Const
+ }
+}
+assert_equal %q{C}, %q{
+ Const = :top
+ class C
+ Const = :C
+ end
+ C.class_eval %{
+ def m
+ Const
+ end
+ }
+ C.new.m
+}
+assert_equal %q{top}, %q{
+ Const = :top
+ class C
+ Const = :C
+ end
+ C.class_eval{
+ def m
+ Const
+ end
+ }
+ C.new.m
+}
+assert_equal %q{[:top, :C, :top, :C]}, %q{
+ Const = :top
+ class C
+ Const = :C
+ end
+ $nest = false
+ $ans = []
+ def m
+ $ans << Const
+ C.module_eval %{
+ $ans << Const
+ Boo = false unless defined? Boo
+ unless $nest
+ $nest = true
+ m
+ end
+ }
+ end
+ m
+ $ans
+}
+assert_equal %q{[10, main]}, %q{
+ $nested = false
+ $ans = []
+ $pr = proc{
+ $ans << self
+ unless $nested
+ $nested = true
+ $pr.call
+ end
+ }
+ class C
+ def initialize &b
+ 10.instance_eval(&b)
+ end
+ end
+ C.new(&$pr)
+ $ans
+}
+
+%w[break next redo].each do |keyword|
+ assert_match %r"Can't escape from eval with #{keyword}\b", %{
+ $stderr = STDOUT
+ begin
+ eval "0 rescue #{keyword}"
+ rescue SyntaxError => e
+ e.message
+ end
+ }, '[ruby-dev:31372]'
+end
+
+assert_normal_exit %q{
+ $stderr = STDOUT
+ class Foo
+ def self.add_method
+ class_eval("def some-bad-name; puts 'hello' unless @some_variable.some_function(''); end")
+ end
+ end
+ Foo.add_method
+}, '[ruby-core:14556] reported by Frederick Cheung'
+
+assert_equal 'ok', %q{
+ class Module
+ def my_module_eval(&block)
+ module_eval(&block)
+ end
+ end
+ class String
+ Integer.my_module_eval do
+ def hoge; end
+ end
+ end
+ if Integer.instance_methods(false).map{|m|m.to_sym}.include?(:hoge) &&
+ !String.instance_methods(false).map{|m|m.to_sym}.include?(:hoge)
+ :ok
+ else
+ :ng
+ end
+}, "[ruby-dev:34236]"
+
+assert_equal 'ok', %q{
+ begin
+ eval("class nil::Foo; end")
+ :ng
+ rescue Exception
+ :ok
+ end
+}
+
+assert_equal 'ok', %q{
+ begin
+ 0.instance_eval { def m() :m end }
+ 1.m
+ :ng
+ rescue Exception
+ :ok
+ end
+}, '[ruby-dev:34579]'
+
+assert_equal 'ok', %q{
+ begin
+ class A
+ 12.instance_eval { @@a }
+ end
+ rescue NameError
+ :ok
+ end
+}, '[ruby-core:16794]'
+
+assert_equal 'ok', %q{
+ begin
+ class A
+ 12.instance_exec { @@a }
+ end
+ rescue NameError
+ :ok
+ end
+}, '[ruby-core:16794]'
+
+assert_equal 'ok', %q{
+ nil.instance_eval {
+ def defd_using_instance_eval() :ok end
+ }
+ nil.defd_using_instance_eval
+}, '[ruby-core:28324]'
+
+assert_equal 'ok', %q{
+ nil.instance_exec {
+ def defd_using_instance_exec() :ok end
+ }
+ nil.defd_using_instance_exec
+}, '[ruby-core:28324]'
+
+assert_normal_exit %q{
+ eval("", method(:proc).call {}.binding)
+}
+
+assert_equal "", %q{
+ b = binding
+ 10.times{
+ eval('', b)
+ }
+ begin
+ eval('1.times{raise}', b)
+ rescue => e
+ e.message
+ end
+}, '[ruby-dev:35392]'
+
+assert_equal "[:x]", %q{
+ def kaboom!
+ yield.eval("local_variables")
+ end
+
+ for x in enum_for(:kaboom!)
+ binding
+ end
+}, '[ruby-core:25125]'
+
+assert_normal_exit %q{
+ hash = {}
+ ("aaaa".."matz").each_with_index do |s, i|
+ hash[s] = i
+ end
+ begin
+ eval "class C; @@h = #{hash.inspect}; end"
+ end
+}, '[ruby-core:25714]'
+
+assert_normal_exit %q{
+ begin
+ eval("# encoding:utf-16le\nfoo")
+ rescue Exception => e
+ p e
+ RubyVM::InstructionSequence.compile("p:hello")
+ end
+}, 'check escaping the internal value th->base_block'
+
diff --git a/bootstraptest/test_exception.rb b/bootstraptest/test_exception.rb
new file mode 100644
index 0000000000..0fb6f552b8
--- /dev/null
+++ b/bootstraptest/test_exception.rb
@@ -0,0 +1,432 @@
+assert_equal %q{2}, %q{
+ begin
+ 1+1
+ ensure
+ 2+2
+ end
+}
+assert_equal %q{4}, %q{
+ begin
+ 1+1
+ begin
+ 2+2
+ ensure
+ 3+3
+ end
+ ensure
+ 4+4
+ end
+}
+assert_equal %q{4}, %q{
+ begin
+ 1+1
+ begin
+ 2+2
+ ensure
+ 3+3
+ end
+ ensure
+ 4+4
+ begin
+ 5+5
+ ensure
+ 6+6
+ end
+ end
+}
+assert_equal %q{NilClass}, %q{
+ a = nil
+ 1.times{|e|
+ begin
+ rescue => err
+ end
+ a = err.class
+ }
+ a
+}
+assert_equal %q{RuntimeError}, %q{
+ a = nil
+ 1.times{|e|
+ begin
+ raise
+ rescue => err
+ end
+ a = err.class
+ }
+ a
+}
+assert_equal %q{}, %q{
+ $!
+}
+assert_equal %q{FOO}, %q{
+ begin
+ raise "FOO"
+ rescue
+ $!
+ end
+}
+assert_equal %q{FOO}, %q{
+ def m
+ $!
+ end
+ begin
+ raise "FOO"
+ rescue
+ m()
+ end
+}
+assert_equal %q{[#<RuntimeError: BAR>, #<RuntimeError: FOO>]}, %q{
+ $ans = []
+ def m
+ $!
+ end
+ begin
+ raise "FOO"
+ rescue
+ begin
+ raise "BAR"
+ rescue
+ $ans << m()
+ end
+ $ans << m()
+ end
+ $ans
+}
+assert_equal %q{[#<RuntimeError: FOO>, #<RuntimeError: FOO>]}, %q{
+ $ans = []
+ def m
+ $!
+ end
+
+ begin
+ begin
+ raise "FOO"
+ ensure
+ $ans << m()
+ end
+ rescue
+ $ans << m()
+ end
+}
+assert_equal %q{[nil]}, %q{
+ $ans = []
+ def m
+ $!
+ end
+ def m2
+ 1.times{
+ begin
+ return
+ ensure
+ $ans << m
+ end
+ }
+ end
+ m2
+ $ans
+}
+assert_equal %q{ok}, %q{
+ begin
+ raise
+ rescue
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ begin
+ raise
+ rescue
+ :ok
+ ensure
+ :ng
+ end
+}
+assert_equal %q{RuntimeError}, %q{
+ begin
+ raise
+ rescue => e
+ e.class
+ end
+}
+assert_equal %q{ng}, %q{
+ begin
+ raise
+ rescue StandardError
+ :ng
+ rescue Exception
+ :ok
+ end
+}
+assert_equal %q{c}, %q{
+ begin
+ begin
+ raise "a"
+ rescue
+ raise "b"
+ ensure
+ raise "c"
+ end
+ rescue => e
+ e.message
+ end
+}
+assert_equal %q{33}, %q{
+ def m a, b
+ a + b
+ end
+ m(1, begin
+ raise
+ rescue
+ 2
+ end) +
+ m(10, begin
+ raise
+ rescue
+ 20
+ ensure
+ 30
+ end)
+}
+assert_equal %q{3}, %q{
+ def m a, b
+ a + b
+ end
+ m(begin
+ raise
+ rescue
+ 1
+ end,
+ begin
+ raise
+ rescue
+ 2
+ end)
+}
+assert_equal %q{ok3}, %q{
+ class E1 < Exception
+ end
+
+ def m
+ yield
+ end
+
+ begin
+ begin
+ begin
+ m{
+ raise
+ }
+ rescue E1
+ :ok2
+ ensure
+ end
+ rescue
+ :ok3
+ ensure
+ end
+ rescue E1
+ :ok
+ ensure
+ end
+}
+assert_equal %q{7}, %q{
+ $i = 0
+ def m
+ iter{
+ begin
+ $i += 1
+ begin
+ $i += 2
+ break
+ ensure
+
+ end
+ ensure
+ $i += 4
+ end
+ $i = 0
+ }
+ end
+
+ def iter
+ yield
+ end
+ m
+ $i
+}
+assert_equal %q{10}, %q{
+ $i = 0
+ def m
+ begin
+ $i += 1
+ begin
+ $i += 2
+ return
+ ensure
+ $i += 3
+ end
+ ensure
+ $i += 4
+ end
+ p :end
+ end
+ m
+ $i
+}
+assert_equal %q{1}, %q{
+ begin
+ 1
+ rescue
+ 2
+ end
+}
+assert_equal %q{4}, %q{
+ begin
+ 1
+ begin
+ 2
+ rescue
+ 3
+ end
+ 4
+ rescue
+ 5
+ end
+}
+assert_equal %q{3}, %q{
+ begin
+ 1
+ rescue
+ 2
+ else
+ 3
+ end
+}
+assert_equal %q{2}, %q{
+ begin
+ 1+1
+ rescue
+ 2+2
+ ensure
+ 3+3
+ end
+ }
+assert_equal %q{2}, %q{
+ begin
+ 1+1
+ rescue
+ 2+2
+ ensure
+ 3+3
+ end
+ }
+assert_equal %q{6}, %q{
+ begin
+ 1+1
+ rescue
+ 2+2
+ else
+ 3+3
+ ensure
+ 4+4
+ end
+ }
+assert_equal %q{12}, %q{
+ begin
+ 1+1
+ begin
+ 2+2
+ rescue
+ 3+3
+ else
+ 4+4
+ end
+ rescue
+ 5+5
+ else
+ 6+6
+ ensure
+ 7+7
+ end
+ }
+assert_equal %q{ok}, %q{ #
+ proc{
+ begin
+ raise
+ break
+ rescue
+ :ok
+ end
+ }.call
+}
+assert_equal %q{}, %q{
+ proc do
+ begin
+ raise StandardError
+ redo
+ rescue StandardError
+ end
+ end.call
+}
+
+##
+assert_match /undefined method `foo\'/, %q{#`
+ STDERR.reopen(STDOUT)
+ class C
+ def inspect
+ bar {}
+ end
+
+ def bar
+ raise
+ ensure
+ end
+ end
+ C.new.foo
+}, "[ruby-dev:31407]"
+
+assert_equal 'nil', %q{
+ doit = false
+ exc = nil
+ t = Thread.new {
+ begin
+ doit = true
+ sleep 10
+ ensure
+ exc = $!
+ end
+ }
+ Thread.pass until doit
+ t.kill
+ t.join
+ exc.inspect
+}, '[ruby-dev:32608]'
+
+assert_equal 'divided by 0', %q{
+ class ZeroDivisionError
+ def self.new(message)
+ 42
+ end
+ end
+ begin
+ 1/0
+ rescue Exception => e
+ e.message
+ end
+}, '[ruby-core:24767]'
+
+assert_equal 'ok', %q{
+ class C
+ def ===(o)
+ true
+ end
+ end
+ begin
+ begin
+ raise
+ rescue C.new
+ end
+ rescue TypeError
+ :ok
+ end
+}
diff --git a/bootstraptest/test_fiber.rb b/bootstraptest/test_fiber.rb
new file mode 100644
index 0000000000..2614dd13bf
--- /dev/null
+++ b/bootstraptest/test_fiber.rb
@@ -0,0 +1,39 @@
+show_limit %q{
+ fibers = []
+ begin
+ fiber = Fiber.new{Fiber.yield}
+ fiber.resume
+ fibers << fiber
+
+ raise Exception, "skipping" if fibers.count >= 10_000
+ rescue Exception => error
+ puts "Fiber count: #{fibers.count} (#{error})"
+ break
+ end while true
+}
+
+assert_equal %q{ok}, %q{
+ Fiber.new{
+ }.resume
+ :ok
+}
+
+assert_equal %q{ok}, %q{
+ 100.times.collect{Fiber.new{}}
+ :ok
+}
+
+assert_equal %q{ok}, %q{
+ fibers = 1000.times.collect{Fiber.new{Fiber.yield}}
+ fibers.each(&:resume)
+ fibers.each(&:resume)
+ :ok
+}
+
+assert_normal_exit %q{
+ at_exit { Fiber.new{}.resume }
+}
+
+assert_normal_exit %q{
+ Fiber.new(&Object.method(:class_eval)).resume("foo")
+}, '[ruby-dev:34128]'
diff --git a/bootstraptest/test_finalizer.rb b/bootstraptest/test_finalizer.rb
new file mode 100644
index 0000000000..22a16b1220
--- /dev/null
+++ b/bootstraptest/test_finalizer.rb
@@ -0,0 +1,8 @@
+assert_normal_exit %q{
+a1,a2,b1,b2=Array.new(4){""}
+ObjectSpace.define_finalizer(b2,proc{})
+ObjectSpace.define_finalizer(b1,proc{b1.inspect})
+
+ObjectSpace.define_finalizer(a2,proc{a1.inspect})
+ObjectSpace.define_finalizer(a1,proc{})
+}, '[ruby-dev:35778]'
diff --git a/bootstraptest/test_flip.rb b/bootstraptest/test_flip.rb
new file mode 100644
index 0000000000..ff194868b2
--- /dev/null
+++ b/bootstraptest/test_flip.rb
@@ -0,0 +1 @@
+assert_equal %q{E}, %q{$_ = "E"; eval("nil if true..~/^E/",nil,"-e"); $_}
diff --git a/bootstraptest/test_flow.rb b/bootstraptest/test_flow.rb
new file mode 100644
index 0000000000..35f19db588
--- /dev/null
+++ b/bootstraptest/test_flow.rb
@@ -0,0 +1,601 @@
+assert_equal %q{[1, 2, 4, 5, 6, 7, 8]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each{; $a << 2
+ break; $a << 3
+ }; $a << 4
+ begin; $a << 5
+ ensure; $a << 6
+ end; $a << 7
+; $a << 8
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 6, 7, 8]}, %q{$a = []; begin; ; $a << 1
+ begin; $a << 2
+ [1,2].each do; $a << 3
+ break; $a << 4
+ end; $a << 5
+ ensure; $a << 6
+ end; $a << 7
+; $a << 8
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{ok}, %q{
+ ["a"].inject("ng"){|x,y|
+ break :ok
+ }
+}
+assert_equal %q{ok}, %q{
+ unless ''.respond_to? :lines
+ class String
+ def lines
+ self
+ end
+ end
+ end
+
+ ('a').lines.map{|e|
+ break :ok
+ }
+}
+assert_equal %q{[1, 2, 4, 5]}, %q{$a = []; begin; ; $a << 1
+ ["a"].inject("ng"){|x,y|; $a << 2
+ break :ok; $a << 3
+ }; $a << 4
+; $a << 5
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 4, 5]}, %q{$a = []; begin; ; $a << 1
+ ('a'..'b').map{|e|; $a << 2
+ break :ok; $a << 3
+ }; $a << 4
+; $a << 5
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 7, 8]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ break; $a << 4
+ ensure; $a << 5
+ end; $a << 6
+ end; $a << 7
+; $a << 8
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 6, 9, 10]}, %q{$a = []; begin; ; $a << 1
+ i=0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ begin; $a << 5
+ ensure; $a << 6
+ break; $a << 7
+ end; $a << 8
+ end; $a << 9
+; $a << 10
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 7, 10, 11]}, %q{$a = []; begin; ; $a << 1
+ i=0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ begin; $a << 5
+ raise; $a << 6
+ ensure; $a << 7
+ break; $a << 8
+ end; $a << 9
+ end; $a << 10
+; $a << 11
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 7, 10, 11]}, %q{$a = []; begin; ; $a << 1
+ i=0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ begin; $a << 5
+ raise; $a << 6
+ rescue; $a << 7
+ break; $a << 8
+ end; $a << 9
+ end; $a << 10
+; $a << 11
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ raise StandardError; $a << 4
+ ensure; $a << 5
+ break; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ raise StandardError; $a << 4
+ rescue; $a << 5
+ break; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 6, 8, 10, 11]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ begin; $a << 4
+ break; $a << 5
+ ensure; $a << 6
+ end; $a << 7
+ ensure; $a << 8
+ end; $a << 9
+ end; $a << 10
+; $a << 11
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 14, 15]}, %q{$a = []; begin; ; $a << 1
+ i = 0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ j = 0; $a << 5
+ while j<3; $a << 6
+ j+=1; $a << 7
+ begin; $a << 8
+ raise; $a << 9
+ rescue; $a << 10
+ break; $a << 11
+ end; $a << 12
+ end; $a << 13
+ end; $a << 14
+; $a << 15
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 16, 17]}, %q{$a = []; begin; ; $a << 1
+ i = 0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ j = 0; $a << 5
+ while j<3; $a << 6
+ j+=1; $a << 7
+ 1.times{; $a << 8
+ begin; $a << 9
+ raise; $a << 10
+ rescue; $a << 11
+ break; $a << 12
+ end; $a << 13
+ }; $a << 14
+ end; $a << 15
+ end; $a << 16
+; $a << 17
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 14, 15]}, %q{$a = []; begin; ; $a << 1
+ i = 0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ j = 0; $a << 5
+ while j<3; $a << 6
+ j+=1; $a << 7
+ begin; $a << 8
+ raise; $a << 9
+ ensure; $a << 10
+ break; $a << 11
+ end; $a << 12
+ end; $a << 13
+ end; $a << 14
+; $a << 15
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 16, 17]}, %q{$a = []; begin; ; $a << 1
+ i = 0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ j = 0; $a << 5
+ while j<3; $a << 6
+ j+=1; $a << 7
+ 1.times{; $a << 8
+ begin; $a << 9
+ raise; $a << 10
+ ensure; $a << 11
+ break; $a << 12
+ end; $a << 13
+ }; $a << 14
+ end; $a << 15
+ end; $a << 16
+; $a << 17
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ while true; $a << 2
+ begin; $a << 3
+ break; $a << 4
+ ensure; $a << 5
+ break; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 99]}, %q{
+$a = [];
+begin; ; $a << 1
+ while true; $a << 2
+ begin; $a << 3
+ break; $a << 4
+ ensure; $a << 5
+ raise; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 6, 8, 9, 10, 11]}, %q{$a = []; begin; ; $a << 1
+ begin; $a << 2
+ [1,2].each do; $a << 3
+ begin; $a << 4
+ break; $a << 5
+ ensure; $a << 6
+ end; $a << 7
+ end; $a << 8
+ ensure; $a << 9
+ end; $a << 10
+; $a << 11
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 4, 99]}, %q{$a = []; begin; ; $a << 1
+ begin; $a << 2
+ raise StandardError; $a << 3
+ ensure; $a << 4
+ end; $a << 5
+; $a << 6
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4]}, %q{$a = []; begin; ; $a << 1
+ begin; $a << 2
+ ensure; $a << 3
+ end ; $a << 4
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 99]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ break; $a << 4
+ ensure; $a << 5
+ raise StandardError; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{3}, %q{
+ def m a, b
+ a + b
+ end
+ m(1,
+ while true
+ break 2
+ end
+ )
+}
+assert_equal %q{4}, %q{
+ def m a, b
+ a + b
+ end
+ m(1,
+ (i=0; while i<2
+ i+=1
+ class C
+ next 2
+ end
+ end; 3)
+ )
+}
+assert_equal %q{34}, %q{
+ def m a, b
+ a+b
+ end
+ m(1, 1.times{break 3}) +
+ m(10, (1.times{next 3}; 20))
+}
+assert_equal %q{[1, 2, 3, 6, 7]}, %q{$a = []; begin; ; $a << 1
+ 3.times{; $a << 2
+ class C; $a << 3
+ break; $a << 4
+ end; $a << 5
+ }; $a << 6
+; $a << 7
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ 3.times{; $a << 2
+ class A; $a << 3
+ class B; $a << 4
+ break; $a << 5
+ end; $a << 6
+ end; $a << 7
+ }; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 2, 3, 2, 3, 6, 7]}, %q{$a = []; begin; ; $a << 1
+ 3.times{; $a << 2
+ class C; $a << 3
+ next; $a << 4
+ end; $a << 5
+ }; $a << 6
+; $a << 7
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 2, 3, 4, 2, 3, 4, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ 3.times{; $a << 2
+ class C; $a << 3
+ class D; $a << 4
+ next; $a << 5
+ end; $a << 6
+ end; $a << 7
+ }; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 6, 7]}, %q{$a = []; begin; ; $a << 1
+ while true; $a << 2
+ class C; $a << 3
+ break; $a << 4
+ end; $a << 5
+ end; $a << 6
+; $a << 7
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ while true; $a << 2
+ class C; $a << 3
+ class D; $a << 4
+ break; $a << 5
+ end; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 3, 4, 5, 3, 4, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ i=0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ class C; $a << 5
+ next 10; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{1}, %q{
+ 1.times{
+ while true
+ class C
+ begin
+ break
+ ensure
+ break
+ end
+ end
+ end
+ }
+}
+assert_equal %q{[1, 2, 3, 5, 2, 3, 5, 7, 8]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ next; $a << 4
+ ensure; $a << 5
+ end; $a << 6
+ end; $a << 7
+; $a << 8
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 6, 3, 5, 7, 8]}, %q{$a = []; begin; ; $a << 1
+ o = "test"; $a << 2
+ def o.test(a); $a << 3
+ return a; $a << 4
+ ensure; $a << 5
+ end; $a << 6
+ o.test(123); $a << 7
+; $a << 8
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 4, 7, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ def m1 *args; $a << 2
+ ; $a << 3
+ end; $a << 4
+ def m2; $a << 5
+ m1(:a, :b, (return 1; :c)); $a << 6
+ end; $a << 7
+ m2; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 8, 2, 3, 4, 5, 9, 10]}, %q{$a = []; begin; ; $a << 1
+ def m(); $a << 2
+ begin; $a << 3
+ 2; $a << 4
+ ensure; $a << 5
+ return 3; $a << 6
+ end; $a << 7
+ end; $a << 8
+ m; $a << 9
+; $a << 10
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 3, 11, 4, 5, 6, 7, 12, 13]}, %q{$a = []; begin; ; $a << 1
+ def m2; $a << 2
+ end; $a << 3
+ def m(); $a << 4
+ m2(begin; $a << 5
+ 2; $a << 6
+ ensure; $a << 7
+ return 3; $a << 8
+ end); $a << 9
+ 4; $a << 10
+ end; $a << 11
+ m(); $a << 12
+; $a << 13
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 16, 2, 3, 4, 5, 6, 7, 10, 11, 17, 18]}, %q{$a = []; begin; ; $a << 1
+ def m; $a << 2
+ 1; $a << 3
+ 1.times{; $a << 4
+ 2; $a << 5
+ begin; $a << 6
+ 3; $a << 7
+ return; $a << 8
+ 4; $a << 9
+ ensure; $a << 10
+ 5; $a << 11
+ end; $a << 12
+ 6; $a << 13
+ }; $a << 14
+ 7; $a << 15
+ end; $a << 16
+ m(); $a << 17
+; $a << 18
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[:ok, :ok2, :last]}, %q{
+ a = []
+ i = 0
+ begin
+ while i < 1
+ i+=1
+ begin
+ begin
+ next
+ ensure
+ a << :ok
+ end
+ ensure
+ a << :ok2
+ end
+ end
+ ensure
+ a << :last
+ end
+ a
+}
+assert_equal %q{[:ok, :ok2, :last]}, %q{
+ a = []
+ i = 0
+ begin
+ while i < 1
+ i+=1
+ begin
+ begin
+ break
+ ensure
+ a << :ok
+ end
+ ensure
+ a << :ok2
+ end
+ end
+ ensure
+ a << :last
+ end
+ a
+}
+assert_equal %q{[:ok, :ok2, :last]}, %q{
+ a = []
+ i = 0
+ begin
+ while i < 1
+ if i>0
+ break
+ end
+ i+=1
+ begin
+ begin
+ redo
+ ensure
+ a << :ok
+ end
+ ensure
+ a << :ok2
+ end
+ end
+ ensure
+ a << :last
+ end
+ a
+}
+assert_equal %Q{ENSURE\n}, %q{
+ def test
+ while true
+ return
+ end
+ ensure
+ puts("ENSURE")
+ end
+ test
+}, '[ruby-dev:37967]'
+
+[['[ruby-core:28129]', %q{
+ class Bug2728
+ include Enumerable
+ define_method(:dynamic_method) do
+ "dynamically defined method"
+ end
+ def each
+ begin
+ yield :foo
+ ensure
+ dynamic_method
+ end
+ end
+ end
+ e = Bug2728.new
+}],
+ ['[ruby-core:28132]', %q{
+ class Bug2729
+ include Enumerable
+ def each
+ begin
+ yield :foo
+ ensure
+ proc {}.call
+ end
+ end
+ end
+ e = Bug2729.new
+}],
+ ['[ruby-core:39125]', %q{
+ class Bug5234
+ include Enumerable
+ def each(&block)
+ begin
+ yield :foo
+ ensure
+ proc(&block)
+ end
+ end
+ end
+ e = Bug5234.new
+}],
+ ['[ruby-dev:45656]', %q{
+ class Bug6460
+ include Enumerable
+ def each(&block)
+ begin
+ yield :foo
+ ensure
+ 1.times { Proc.new(&block) }
+ end
+ end
+ end
+ e = Bug6460.new
+}]].each do |bug, src|
+ assert_equal "foo", src + %q{e.detect {true}}, bug
+ assert_equal "true", src + %q{e.any? {true}}, bug
+ assert_equal "false", src + %q{e.all? {false}}, bug
+ assert_equal "true", src + %q{e.include?(:foo)}, bug
+end
+
+assert_equal "foo", %q{
+ class Bug6460
+ def m1
+ m2 {|e|
+ return e
+ }
+ end
+
+ def m2
+ begin
+ yield :foo
+ ensure
+ begin
+ begin
+ yield :foo
+ ensure
+ Proc.new
+ raise ''
+ end
+ rescue
+ end
+ end
+ end
+ end
+ Bug6460.new.m1
+}, '[ruby-dev:46372]'
+
+assert_equal "foo", %q{
+ obj = "foo"
+ if obj || any1
+ any2 = any2
+ else
+ raise obj.inspect
+ end
+ obj
+}, '[ruby-core:87830]'
diff --git a/bootstraptest/test_fork.rb b/bootstraptest/test_fork.rb
new file mode 100644
index 0000000000..83923dad97
--- /dev/null
+++ b/bootstraptest/test_fork.rb
@@ -0,0 +1,77 @@
+assert_equal '0', %q{
+ begin
+ GC.stress = true
+ pid = fork {}
+ Process.wait pid
+ $?.to_i
+ rescue NotImplementedError
+ 0
+ end
+}, '[ruby-dev:32404]'
+
+assert_finish 10, %q{
+ begin
+ children = (1..10).map{
+ Thread.start{fork{}}.value
+ }
+ while !children.empty? and pid = Process.wait
+ children.delete(pid)
+ end
+ rescue NotImplementedError
+ end
+}, '[ruby-core:22158]'
+
+# temporarily stop this test to enable explicit failure when
+# timer thread couldn't be created (r61706 and r61717).
+assert_normal_exit(<<'End', '[ruby-dev:37934]') if false
+ main = Thread.current
+ Thread.new { sleep 0.01 until main.stop?; Thread.kill main }
+ Process.setrlimit(:NPROC, 1) if defined?(Process::RLIMIT_NPROC)
+ fork {}
+End
+
+assert_equal 'ok', %q{
+ begin
+ r, w = IO.pipe
+ if pid1 = fork
+ w.close
+ r.read(1)
+ Process.kill("USR1", pid1)
+ _, s = Process.wait2(pid1)
+ s.success? ? :ok : :ng
+ else
+ r.close
+ if pid2 = fork
+ trap("USR1") { Time.now.to_s; Process.kill("USR2", pid2) }
+ w.close
+ Process.wait2(pid2)
+ else
+ w.close
+ sleep 0.2
+ end
+ exit true
+ end
+ rescue NotImplementedError
+ :ok
+ end
+}, '[ruby-core:28924]'
+
+assert_equal '[1, 2]', %q{
+ a = []
+ main = Thread.current
+ trap(:INT) { a.push(1).size == 2 and main.wakeup }
+ trap(:TERM) { a.push(2).size == 2 and main.wakeup }
+ pid = $$
+ begin
+ pid = fork do
+ Process.kill(:INT, pid)
+ Process.kill(:TERM, pid)
+ end
+ Process.wait(pid)
+ 100.times {break if a.size > 1; sleep 0.001}
+ a.sort
+ rescue NotImplementedError
+ [1, 2]
+ end
+}, '[ruby-dev:44005] [Ruby 1.9 - Bug #4950]'
+
diff --git a/bootstraptest/test_gc.rb b/bootstraptest/test_gc.rb
new file mode 100644
index 0000000000..eb68c9845e
--- /dev/null
+++ b/bootstraptest/test_gc.rb
@@ -0,0 +1,34 @@
+assert_normal_exit %q{
+a = []
+ms = "a".."k"
+("A".."Z").each do |mod|
+ mod = eval("module #{mod}; self; end")
+ ms.each do |meth|
+ iseq = RubyVM::InstructionSequence.compile("module #{mod}; def #{meth}; end; end")
+ GC.stress = true
+ iseq.eval
+ GC.stress = false
+ end
+ o = Object.new.extend(mod)
+ ms.each do |meth|
+ o.send(meth)
+ end
+end
+}, '[ruby-dev:39453]'
+
+assert_normal_exit %q{
+a = []
+ms = "a".."k"
+("A".."Z").each do |mod|
+ mod = eval("module #{mod}; self; end")
+ ms.each do |meth|
+ GC.stress = true
+ mod.module_eval {define_method(meth) {}}
+ GC.stress = false
+ end
+ o = Object.new.extend(mod)
+ ms.each do |meth|
+ o.send(meth)
+ end
+end
+}, '[ruby-dev:39453]'
diff --git a/bootstraptest/test_insns.rb b/bootstraptest/test_insns.rb
new file mode 100644
index 0000000000..91fba9b011
--- /dev/null
+++ b/bootstraptest/test_insns.rb
@@ -0,0 +1,440 @@
+# C0 coverage of each instructions
+
+# :NOTE: This is for development purpose; never consider this file as
+# ISeq compilation specification.
+
+begin
+ # This library brings some additional coverage.
+ # Not mandatory.
+ require 'rbconfig/sizeof'
+rescue LoadError
+ # OK, just skip
+else
+ if defined? RbConfig::LIMITS
+ $FIXNUM_MAX = RbConfig::LIMITS["FIXNUM_MAX"]
+ $FIXNUM_MIN = RbConfig::LIMITS["FIXNUM_MIN"]
+ end
+end
+
+fsl = { frozen_string_literal: true } # used later
+tests = [
+ # insn , expression to generate such insn
+ [ 'nop', %q{ raise rescue true }, ],
+
+ [ 'setlocal *, 0', %q{ x = true }, ],
+ [ 'setlocal *, 1', %q{ x = nil; -> { x = true }.call }, ],
+ [ 'setlocal', %q{ x = nil; -> { -> { x = true }.() }.() }, ],
+ [ 'getlocal *, 0', %q{ x = true; x }, ],
+ [ 'getlocal *, 1', %q{ x = true; -> { x }.call }, ],
+ [ 'getlocal', %q{ x = true; -> { -> { x }.() }.() }, ],
+
+ [ 'setblockparam', <<-'},', ], # {
+ def m&b
+ b = # here
+ proc { true }
+ end
+ m { false }.call
+ },
+ [ 'getblockparam', <<-'},', ], # {
+ def m&b
+ b # here
+ end
+ m { true }.call
+ },
+ [ 'getblockparamproxy', <<-'},', ], # {
+ def m&b
+ b # here
+ .call
+ end
+ m { true }
+ },
+
+ [ 'setspecial', %q{ true if true..true }, ],
+ [ 'getspecial', %q{ $&.nil? }, ],
+ [ 'getspecial', %q{ $`.nil? }, ],
+ [ 'getspecial', %q{ $'.nil? }, ],
+ [ 'getspecial', %q{ $+.nil? }, ],
+ [ 'getspecial', %q{ $1.nil? }, ],
+ [ 'getspecial', %q{ $128.nil? }, ],
+
+ [ 'getglobal', %q{ String === $0 }, ],
+ [ 'getglobal', %q{ $_.nil? }, ],
+ [ 'setglobal', %q{ $0 = "true" }, ],
+
+ [ 'setinstancevariable', %q{ @x = true }, ],
+ [ 'getinstancevariable', %q{ @x = true; @x }, ],
+
+ [ 'setclassvariable', %q{ class A; @@x = true; end }, ],
+ [ 'getclassvariable', %q{ class A; @@x = true; @@x end }, ],
+
+ [ 'setconstant', %q{ X = true }, ],
+ [ 'setconstant', %q{ Object::X = true }, ],
+ [ 'getconstant', %q{ X = true; X }, ],
+ [ 'getconstant', %q{ X = true; Object::X }, ],
+
+ [ 'getinlinecache / setinlinecache', %q{ def x; X; end; X = true; x; x; x }, ],
+
+ [ 'putnil', %q{ $~ == nil }, ],
+ [ 'putself', %q{ $~ != self }, ],
+ [ 'putobject INT2FIX(0)', %q{ $~ != 0 }, ],
+ [ 'putobject INT2FIX(1)', %q{ $~ != 1 }, ],
+ [ 'putobject', %q{ $~ != -1 }, ],
+ [ 'putobject', %q{ $~ != /x/ }, ],
+ [ 'putobject', %q{ $~ != :x }, ],
+ [ 'putobject', %q{ $~ != (1..2) }, ],
+ [ 'putobject', %q{ $~ != true }, ],
+ [ 'putobject', %q{ /(?<x>x)/ =~ "x"; x == "x" }, ],
+
+ [ 'putspecialobject', %q{ {//=>true}[//] }, ],
+ [ 'putstring', %q{ "true" }, ],
+ [ 'tostring / concatstrings', %q{ "#{true}" }, ],
+ [ 'toregexp', %q{ /#{true}/ =~ "true" && $~ }, ],
+ [ 'intern', %q{ :"#{true}" }, ],
+
+ [ 'newarray', %q{ ["true"][0] }, ],
+ [ 'newarraykwsplat', %q{ [**{x:'true'}][0][:x] }, ],
+ [ 'duparray', %q{ [ true ][0] }, ],
+ [ 'expandarray', %q{ y = [ true, false, nil ]; x, = y; x }, ],
+ [ 'expandarray', %q{ y = [ true, false, nil ]; x, *z = y; x }, ],
+ [ 'expandarray', %q{ y = [ true, false, nil ]; x, *z, w = y; x }, ],
+ [ 'splatarray', %q{ x, = *(y = true), false; x }, ],
+ [ 'concatarray', %q{ ["t", "r", *x = "u", "e"].join }, ],
+ [ 'concatarray', <<-'},', ], # {
+ class X; def to_a; ['u']; end; end
+ ['t', 'r', *X.new, 'e'].join
+ },
+ [ 'concatarray', <<-'},', ], # {
+ r = false
+ t = [true, nil]
+ q, w, e = r, *t # here
+ w
+ },
+
+ [ 'newhash', %q{ x = {}; x[x] = true }, ],
+ [ 'newhash', %q{ x = true; { x => x }[x] }, ],
+ [ 'newhashfromarray', %q{ { a: true }[:a] }, ],
+ [ 'newrange', %q{ x = 1; [*(0..x)][0] == 0 }, ],
+ [ 'newrange', %q{ x = 1; [*(0...x)][0] == 0 }, ],
+
+ [ 'pop', %q{ def x; true; end; x }, ],
+ [ 'dup', %q{ x = y = true; x }, ],
+ [ 'dupn', %q{ Object::X ||= true }, ],
+ [ 'reverse', %q{ q, (w, e), r = 1, [2, 3], 4; e == 3 }, ],
+ [ 'swap', %q{ !!defined?([[]]) }, ],
+ [ 'swap', <<-'},', ], # {
+ x = [[false, true]]
+ for i, j in x # here
+ ;
+ end
+ j
+ },
+
+ [ 'topn', %q{ x, y = [], 0; x[*y], = [true, false]; x[0] }, ],
+ [ 'setn', %q{ x, y = [], 0; x[*y] = true ; x[0] }, ],
+ [ 'adjuststack', %q{ x = [true]; x[0] ||= nil; x[0] }, ],
+
+ [ 'defined', %q{ !defined?(x) }, ],
+ [ 'checkkeyword', %q{ def x x:rand;x end; x x: true }, ],
+ [ 'checktype', %q{ x = true; "#{x}" }, ],
+ [ 'checkmatch', <<-'},', ], # {
+ x = y = true
+ case x
+ when false
+ y = false
+ when true # here
+ y = nil
+ end
+ y == nil
+ },
+ [ 'checkmatch', <<-'},', ], # {
+ x, y = true, [false]
+ case x
+ when *y # here
+ z = false
+ else
+ z = true
+ end
+ z
+ },
+ [ 'checkmatch', <<-'},', ], # {
+ x = false
+ begin
+ raise
+ rescue # here
+ x = true
+ end
+ x
+ },
+
+ [ 'defineclass', %q{ module X; true end }, ],
+ [ 'defineclass', %q{ X = Module.new; module X; true end }, ],
+ [ 'defineclass', %q{ class X; true end }, ],
+ [ 'defineclass', %q{ X = Class.new; class X; true end }, ],
+ [ 'defineclass', %q{ X = Class.new; class Y < X; true end }, ],
+ [ 'defineclass', %q{ X = Class.new; class << X; true end }, ],
+ [ 'defineclass', <<-'},', ], # {
+ X = Class.new
+ Y = Class.new(X)
+ class Y < X
+ true
+ end
+ },
+
+ [ 'opt_send_without_block', %q{ true.to_s }, ],
+ [ 'send', %q{ true.tap {|i| i.to_s } }, ],
+ [ 'leave', %q{ def x; true; end; x }, ],
+ [ 'invokesuper', <<-'},', ], # {
+ class X < String
+ def empty?
+ super # here
+ end
+ end
+ X.new.empty?
+ },
+ [ 'invokeblock', <<-'},', ], # {
+ def x
+ return yield self # here
+ end
+ x do
+ true
+ end
+ },
+
+ [ 'opt_str_freeze', %q{ 'true'.freeze }, ],
+ [ 'opt_nil_p', %q{ nil.nil? }, ],
+ [ 'opt_nil_p', %q{ !Object.nil? }, ],
+ [ 'opt_nil_p', %q{ Class.new{def nil?; true end}.new.nil? }, ],
+ [ 'opt_str_uminus', %q{ -'true' }, ],
+ [ 'opt_str_freeze', <<-'},', ], # {
+ class String
+ def freeze
+ true
+ end
+ end
+ 'true'.freeze
+ },
+
+ [ 'opt_newarray_max', %q{ [ ].max.nil? }, ],
+ [ 'opt_newarray_max', %q{ [1, x = 2, 3].max == 3 }, ],
+ [ 'opt_newarray_max', <<-'},', ], # {
+ class Array
+ def max
+ true
+ end
+ end
+ [1, x = 2, 3].max
+ },
+ [ 'opt_newarray_min', %q{ [ ].min.nil? }, ],
+ [ 'opt_newarray_min', %q{ [3, x = 2, 1].min == 1 }, ],
+ [ 'opt_newarray_min', <<-'},', ], # {
+ class Array
+ def min
+ true
+ end
+ end
+ [3, x = 2, 1].min
+ },
+
+ [ 'throw', %q{ false.tap { break true } }, ],
+ [ 'branchif', %q{ x = nil; x ||= true }, ],
+ [ 'branchif', %q{ x = true; x ||= nil; x }, ],
+ [ 'branchunless', %q{ x = 1; x &&= true }, ],
+ [ 'branchunless', %q{ x = nil; x &&= true; x.nil? }, ],
+ [ 'branchnil', %q{ x = true; x&.to_s }, ],
+ [ 'branchnil', %q{ x = nil; (x&.to_s).nil? }, ],
+ [ 'jump', <<-'},', ], # {
+ y = 1
+ x = if y == 0 then nil elsif y == 1 then true else nil end
+ x
+ },
+ [ 'jump', <<-'},', ], # {
+ # ultra complicated situation: this ||= assignment only generates
+ # 15 instructions, not including the class definition.
+ class X; attr_accessor :x; end
+ x = X.new
+ x&.x ||= true # here
+ },
+
+ [ 'once', %q{ /#{true}/o =~ "true" && $~ }, ],
+ [ 'once', <<-'},', ], # {
+ def once expr
+ return /#{expr}/o # here
+ end
+ x = once(true); x = once(false); x = once(nil);
+ x =~ "true" && $~
+ },
+ [ 'once', <<-'},', ], # {
+ # recursive once
+ def once n
+ return %r/#{
+ if n == 0
+ true
+ else
+ once(n-1) # here
+ end
+ }/ox
+ end
+ x = once(128); x = once(7); x = once(16);
+ x =~ "true" && $~
+ },
+ [ 'once', <<-'},', ], # {
+ # inter-thread lockup situation
+ def once n
+ return Thread.start n do |m|
+ Thread.pass
+ next %r/#{
+ sleep m # here
+ true
+ }/ox
+ end
+ end
+ x = once(1); y = once(0.1); z = y.value
+ z =~ "true" && $~
+ },
+
+ [ 'opt_case_dispatch', %q{ case 0 when 1.1 then false else true end }, ],
+ [ 'opt_case_dispatch', %q{ case 1.0 when 1.1 then false else true end }, ],
+
+ [ 'opt_plus', %q{ 1 + 1 == 2 }, ],
+ if defined? $FIXNUM_MAX then
+ [ 'opt_plus', %Q{ #{ $FIXNUM_MAX } + 1 == #{ $FIXNUM_MAX + 1 } }, ]
+ end,
+ [ 'opt_plus', %q{ 1.0 + 1.0 == 2.0 }, ],
+ [ 'opt_plus', %q{ x = +0.0.next_float; x + x >= x }, ],
+ [ 'opt_plus', %q{ 't' + 'rue' }, ],
+ [ 'opt_plus', %q{ ( ['t'] + ['r', ['u', ['e'], ], ] ).join }, ],
+ [ 'opt_plus', %q{ Time.at(1) + 1 == Time.at(2) }, ],
+ [ 'opt_minus', %q{ 1 - 1 == 0 }, ],
+ if defined? $FIXNUM_MIN then
+ [ 'opt_minus', %Q{ #{ $FIXNUM_MIN } - 1 == #{ $FIXNUM_MIN - 1 } }, ]
+ end,
+ [ 'opt_minus', %q{ 1.0 - 1.0 == 0.0 }, ],
+ [ 'opt_minus', %q{ x = -0.0.prev_float; x - x == 0.0 }, ],
+ [ 'opt_minus', %q{ ( [false, true] - [false] )[0] }, ],
+ [ 'opt_mult', %q{ 1 * 1 == 1 }, ],
+ [ 'opt_mult', %q{ 1.0 * 1.0 == 1.0 }, ],
+ [ 'opt_mult', %q{ x = +0.0.next_float; x * x <= x }, ],
+ [ 'opt_mult', %q{ ( "ruet" * 3 )[7,4] }, ],
+ [ 'opt_div', %q{ 1 / 1 == 1 }, ],
+ [ 'opt_div', %q{ 1.0 / 1.0 == 1.0 }, ],
+ [ 'opt_div', %q{ x = +0.0.next_float; x / x >= x }, ],
+ [ 'opt_div', %q{ x = 1/2r; x / x == 1 }, ],
+ [ 'opt_mod', %q{ 1 % 1 == 0 }, ],
+ [ 'opt_mod', %q{ 1.0 % 1.0 == 0.0 }, ],
+ [ 'opt_mod', %q{ x = +0.0.next_float; x % x == 0.0 }, ],
+ [ 'opt_mod', %q{ '%s' % [ true ] }, ],
+
+ [ 'opt_eq', %q{ 1 == 1 }, ],
+ [ 'opt_eq', <<-'},', ], # {
+ class X; def == other; true; end; end
+ X.new == true
+ },
+ [ 'opt_neq', %q{ 1 != 0 }, ],
+ [ 'opt_neq', <<-'},', ], # {
+ class X; def != other; true; end; end
+ X.new != true
+ },
+
+ [ 'opt_lt', %q{ -1 < 0 }, ],
+ [ 'opt_lt', %q{ -1.0 < 0.0 }, ],
+ [ 'opt_lt', %q{ -0.0.prev_float < 0.0 }, ],
+ [ 'opt_lt', %q{ ?a < ?z }, ],
+ [ 'opt_le', %q{ -1 <= 0 }, ],
+ [ 'opt_le', %q{ -1.0 <= 0.0 }, ],
+ [ 'opt_le', %q{ -0.0.prev_float <= 0.0 }, ],
+ [ 'opt_le', %q{ ?a <= ?z }, ],
+ [ 'opt_gt', %q{ 1 > 0 }, ],
+ [ 'opt_gt', %q{ 1.0 > 0.0 }, ],
+ [ 'opt_gt', %q{ +0.0.next_float > 0.0 }, ],
+ [ 'opt_gt', %q{ ?z > ?a }, ],
+ [ 'opt_ge', %q{ 1 >= 0 }, ],
+ [ 'opt_ge', %q{ 1.0 >= 0.0 }, ],
+ [ 'opt_ge', %q{ +0.0.next_float >= 0.0 }, ],
+ [ 'opt_ge', %q{ ?z >= ?a }, ],
+
+ [ 'opt_ltlt', %q{ '' << 'true' }, ],
+ [ 'opt_ltlt', %q{ ([] << 'true').join }, ],
+ [ 'opt_ltlt', %q{ (1 << 31) == 2147483648 }, ],
+
+ [ 'opt_aref', %q{ ['true'][0] }, ],
+ [ 'opt_aref', %q{ { 0 => 'true'}[0] }, ],
+ [ 'opt_aref', %q{ 'true'[0] == ?t }, ],
+ [ 'opt_aset', %q{ [][0] = true }, ],
+ [ 'opt_aset', %q{ {}[0] = true }, ],
+ [ 'opt_aset', %q{ x = 'frue'; x[0] = 't'; x }, ],
+ [ 'opt_aset', <<-'},', ], # {
+ # opt_aref / opt_aset mixup situation
+ class X; def x; {}; end; end
+ x = X.new
+ x&.x[true] ||= true # here
+ },
+
+ [ 'opt_aref_with', %q{ { 'true' => true }['true'] }, ],
+ [ 'opt_aref_with', %q{ Struct.new(:nil).new['nil'].nil? }, ],
+ [ 'opt_aset_with', %q{ {}['true'] = true }, ],
+ [ 'opt_aset_with', %q{ Struct.new(:true).new['true'] = true }, ],
+
+ [ 'opt_length', %q{ 'true' .length == 4 }, ],
+ [ 'opt_length', %q{ :true .length == 4 }, ],
+ [ 'opt_length', %q{ [ 'true' ] .length == 1 }, ],
+ [ 'opt_length', %q{ { 'true' => 1 }.length == 1 }, ],
+ [ 'opt_size', %q{ 'true' .size == 4 }, ],
+ [ 'opt_size', %q{ 1.size >= 4 }, ],
+ [ 'opt_size', %q{ [ 'true' ] .size == 1 }, ],
+ [ 'opt_size', %q{ { 'true' => 1 }.size == 1 }, ],
+ [ 'opt_empty_p', %q{ ''.empty? }, ],
+ [ 'opt_empty_p', %q{ [].empty? }, ],
+ [ 'opt_empty_p', %q{ {}.empty? }, ],
+ [ 'opt_empty_p', %q{ Thread::Queue.new.empty? }, ],
+
+ [ 'opt_succ', %q{ 1.succ == 2 }, ],
+ if defined? $FIXNUM_MAX then
+ [ 'opt_succ',%Q{ #{ $FIXNUM_MAX }.succ == #{ $FIXNUM_MAX + 1 } }, ]
+ end,
+ [ 'opt_succ', %q{ '1'.succ == '2' }, ],
+
+ [ 'opt_not', %q{ ! false }, ],
+ [ 'opt_neq', <<-'},', ], # {
+ class X; def !; true; end; end
+ ! X.new
+ },
+
+ [ 'opt_regexpmatch2', %q{ /true/ =~ 'true' && $~ }, ],
+ [ 'opt_regexpmatch2', <<-'},', ], # {
+ class Regexp; def =~ other; true; end; end
+ /true/ =~ 'true'
+ },
+ [ 'opt_regexpmatch2', %q{ 'true' =~ /true/ && $~ }, ],
+ [ 'opt_regexpmatch2', <<-'},', ], # {
+ class String; def =~ other; true; end; end
+ 'true' =~ /true/
+ },
+]
+
+# normal path
+tests.compact.each do |(insn, expr, *a)|
+ if a.last.is_a?(Hash)
+ a = a.dup
+ kw = a.pop
+ assert_equal 'true', expr, insn, *a, **kw
+ else
+ assert_equal 'true', expr, insn, *a
+ end
+end
+
+# with trace
+tests.compact.each {|(insn, expr, *a)|
+ progn = "set_trace_func(proc{})\n" + expr
+ if a.last.is_a?(Hash)
+ a = a.dup
+ kw = a.pop
+ assert_equal 'true', progn, 'trace_' + insn, *a, **kw
+ else
+ assert_equal 'true', progn, 'trace_' + insn, *a
+ end
+}
+
+assert_normal_exit("#{<<-"begin;"}\n#{<<-'end;'}")
+begin;
+ RubyVM::InstructionSequence.compile("", debug_level: 5)
+end;
diff --git a/bootstraptest/test_io.rb b/bootstraptest/test_io.rb
new file mode 100644
index 0000000000..666e5a011b
--- /dev/null
+++ b/bootstraptest/test_io.rb
@@ -0,0 +1,115 @@
+/freebsd/ =~ RUBY_PLATFORM or
+assert_finish 5, %q{
+ r, w = IO.pipe
+ t1 = Thread.new { r.sysread(1) }
+ t2 = Thread.new { r.sysread(1) }
+ sleep 0.01 until t1.stop? and t2.stop?
+ w.write "a"
+ w.write "a"
+}, '[ruby-dev:31866]'
+
+assert_finish 10, %q{
+ begin
+ require "io/nonblock"
+ require "timeout"
+ timeout(3) do
+ r, w = IO.pipe
+ w.nonblock?
+ w.nonblock = true
+ w.write_nonblock("a" * 100000)
+ w.nonblock = false
+ t1 = Thread.new { w.write("b" * 4096) }
+ t2 = Thread.new { w.write("c" * 4096) }
+ sleep 0.5
+ r.sysread(4096).length
+ sleep 0.5
+ r.sysread(4096).length
+ t1.join
+ t2.join
+ end
+ rescue LoadError, Timeout::Error, NotImplementedError
+ end
+}, '[ruby-dev:32566]'
+
+/freebsd/ =~ RUBY_PLATFORM or
+assert_finish 5, %q{
+ r, w = IO.pipe
+ Thread.new {
+ w << "ab"
+ sleep 0.01
+ w << "ab"
+ }
+ r.gets("abab")
+}
+
+assert_equal 'ok', %q{
+ require 'tmpdir'
+ begin
+ tmpname = "#{Dir.tmpdir}/ruby-btest-#{$$}-#{rand(0x100000000).to_s(36)}"
+ rw = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL)
+ rescue Errno::EEXIST
+ retry
+ end
+ save = STDIN.dup
+ STDIN.reopen(rw)
+ STDIN.reopen(save)
+ rw.close
+ File.unlink(tmpname)
+ :ok
+}
+
+assert_equal 'ok', %q{
+ require 'tmpdir'
+ begin
+ tmpname = "#{Dir.tmpdir}/ruby-btest-#{$$}-#{rand(0x100000000).to_s(36)}"
+ rw = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL)
+ rescue Errno::EEXIST
+ retry
+ end
+ save = STDIN.dup
+ STDIN.reopen(rw)
+ STDIN.print "a"
+ STDIN.reopen(save)
+ rw.close
+ File.unlink(tmpname)
+ :ok
+}
+
+assert_equal 'ok', %q{
+ dup = STDIN.dup
+ dupfd = dup.fileno
+ dupfd == STDIN.dup.fileno ? :ng : :ok
+}, '[ruby-dev:46834]'
+
+assert_normal_exit %q{
+ ARGF.set_encoding "foo"
+}
+
+/freebsd/ =~ RUBY_PLATFORM or
+10.times do
+ assert_normal_exit %q{
+ at_exit { p :foo }
+
+ megacontent = "abc" * 12345678
+ #File.open("megasrc", "w") {|f| f << megacontent }
+
+ t0 = Thread.main
+ Thread.new { sleep 0.001 until t0.stop?; Process.kill(:INT, $$) }
+
+ r1, w1 = IO.pipe
+ r2, w2 = IO.pipe
+ t1 = Thread.new { w1 << megacontent; w1.close }
+ t2 = Thread.new { r2.read; r2.close }
+ IO.copy_stream(r1, w2) rescue nil
+ w2.close
+ r1.close
+ t1.join
+ t2.join
+ }, 'megacontent-copy_stream', ["INT"], :timeout => 10 or break
+end
+
+assert_normal_exit %q{
+ r, w = IO.pipe
+ STDOUT.reopen(w)
+ STDOUT.reopen(__FILE__, "r")
+}, '[ruby-dev:38131]'
diff --git a/bootstraptest/test_jump.rb b/bootstraptest/test_jump.rb
new file mode 100644
index 0000000000..d07c47a56d
--- /dev/null
+++ b/bootstraptest/test_jump.rb
@@ -0,0 +1,314 @@
+assert_equal %q{ok}, %q{
+ def m
+ :ng1
+ mm{
+ yield
+ }
+ :ng2
+ end
+
+ def mm
+ :ng3
+ yield
+ :ng4
+ end
+
+ m{
+ break :ok
+ }
+}
+assert_equal %q{ok}, %q{
+ 3.times{
+ break :ok
+ }
+}
+assert_equal %q{}, %q{
+ catch(:foo){
+ throw :foo
+ }
+}
+assert_equal %q{false}, %q{
+ catch(:foo){
+ throw :foo, false
+ }
+}
+assert_equal %q{}, %q{
+ catch(:foo){
+ throw :foo, nil
+ }
+}
+assert_equal %q{ok}, %q{
+ catch(:foo){
+ throw :foo, :ok
+ }
+}
+assert_equal %q{}, %q{
+ catch(:foo){
+ 1.times{
+ throw :foo
+ }
+ }
+}
+assert_equal %q{ok}, %q{
+ catch(:foo){
+ 1.times{
+ throw :foo, :ok
+ }
+ }
+}
+assert_equal %q{ok}, %q{
+ catch(:foo){
+ catch(:bar){
+ throw :foo, :ok
+ }
+ :ng
+ }
+}
+assert_equal %q{ok}, %q{
+ catch(:foo){
+ catch(:bar){
+ 1.times{
+ throw :foo, :ok
+ }
+ }
+ :ng
+ }
+}
+assert_equal %q{2}, %q{
+ module Enumerable
+ def all_?
+ self.each{|e|
+ unless yield(e)
+ return false
+ end
+ }
+ true
+ end
+ end
+
+ xxx = 0
+ [1,2].each{|bi|
+ [3,4].each{|bj|
+ [true, nil, true].all_?{|be| be}
+ break
+ }
+ xxx += 1
+ }
+ xxx
+}
+assert_equal %q{ok}, %q{
+ def m
+ yield
+ end
+
+ m{
+ begin
+ ensure
+ break :ok
+ end
+ }
+}
+assert_equal %q{ok}, %q{
+ def m
+ yield
+ :ok
+ end
+ i=0
+ m{
+ if i>10
+ i*i
+ else
+ i+=1
+ next
+ end
+ }
+}
+assert_equal %q{ok}, %q{
+ def m
+ yield
+ end
+
+ m{
+ next :ok
+ }
+}
+assert_equal %q{131}, %q{
+ def m
+ yield + 10
+ end
+ i=0
+ m{
+ if i>10
+ i*i
+ else
+ i+=1
+ redo
+ end
+ }
+}
+assert_match %r{Invalid retry}, %q{
+$stderr = STDOUT
+begin
+ eval %q{
+ 1.times{
+ retry
+ }
+ }
+rescue SyntaxError => e
+ e.message
+end
+}
+assert_equal %q{3}, %q{
+ def m
+ return 3
+ end
+ m
+}
+assert_equal %q{ok}, %q{
+ def m
+ :ng1
+ mm{
+ return :ok
+ }
+ :ng2
+ end
+
+ def mm
+ :ng3
+ yield
+ :ng4
+ end
+ m
+}
+assert_equal %q{100}, %q{
+ $i = 0
+ def m
+ begin
+ iter{
+ return
+ }
+ ensure
+ $i = 100
+ end
+ end
+
+ def iter
+ yield
+ end
+ m
+ $i
+}
+assert_equal %q{ok}, %q{
+ def m
+ begin
+ raise
+ rescue
+ return :ok
+ end
+ :ng
+ end
+ m
+}
+assert_equal %q{1}, %q{
+ def m
+ begin
+ raise
+ rescue
+ return 1
+ end
+ end
+
+ m
+}
+assert_equal %q{1}, %q{
+ def m
+ begin
+ #
+ ensure
+ return 1
+ end
+ end
+
+ m
+}
+assert_equal 'ok', %q{
+ begin
+ catch {|t| throw t, :ok }
+ rescue ArgumentError
+ :ng
+ end
+}, '[ruby-dev:31609]'
+
+assert_equal "1", %q{
+ catch do |t|
+ begin
+ throw t, 1
+ 2
+ ensure
+ 3
+ end
+ end
+}, "[ruby-dev:31698]"
+
+assert_normal_exit %q{
+ f = 0
+ 1.times do
+ begin
+ f += 1
+ ensure
+ redo unless f > 2
+ end
+ end
+}
+
+assert_normal_exit %q{
+ -> do
+ 1.times do
+ begin
+ raise
+ rescue
+ return
+ end
+ end
+ end.call
+}
+
+assert_normal_exit %q{
+ while true
+ begin
+ raise
+ next
+ rescue
+ end
+ break
+ end
+}, '[ruby-core:28172]'
+
+assert_equal "true", %q{
+ class Object
+ def return_eigenclass
+ class << self
+ return self
+ end
+ end
+ end
+ s = "foo"
+ s.return_eigenclass == class << s; self; end
+}, '[ruby-core:21379]'
+
+assert_match %r{Invalid yield}, %q{
+$stderr = STDOUT
+begin
+ eval %q{
+ class Object
+ def yield_eigenclass
+ class << self
+ yield self
+ end
+ end
+ end
+ }
+rescue SyntaxError => e
+ e.message
+end
+}
diff --git a/bootstraptest/test_literal.rb b/bootstraptest/test_literal.rb
new file mode 100644
index 0000000000..a0d4ee08c6
--- /dev/null
+++ b/bootstraptest/test_literal.rb
@@ -0,0 +1,250 @@
+# empty program
+assert_equal '', ''
+assert_equal '', ' '
+assert_equal '', "\n"
+
+# special const
+assert_equal 'true', 'true'
+assert_equal 'TrueClass', 'true.class'
+assert_equal 'false', 'false'
+assert_equal 'FalseClass', 'false.class'
+assert_equal '', 'nil'
+assert_equal 'nil', 'nil.inspect'
+assert_equal 'NilClass', 'nil.class'
+assert_equal 'sym', ':sym'
+assert_equal ':sym', ':sym.inspect'
+assert_equal 'Symbol', ':sym.class'
+assert_equal '1234', '1234'
+assert_equal 'Integer', '1234.class'
+assert_equal '1234', '1_2_3_4'
+assert_equal 'Integer', '1_2_3_4.class'
+assert_equal '18', '0x12'
+assert_equal 'Integer', '0x12.class'
+assert_equal '15', '0o17'
+assert_equal 'Integer', '0o17.class'
+assert_equal '5', '0b101'
+assert_equal 'Integer', '0b101.class'
+assert_equal '123456789012345678901234567890', '123456789012345678901234567890'
+assert_equal 'Integer', '123456789012345678901234567890.class'
+assert_equal '2.0', '2.0'
+assert_equal 'Float', '1.3.class'
+
+# self
+assert_equal 'main', 'self'
+assert_equal 'Object', 'self.class'
+
+# string literal
+assert_equal 'a', '?a'
+assert_equal 'String', '?a.class'
+assert_equal 'A', '?A'
+assert_equal 'String', '?A.class'
+assert_equal "\n", '?\n'
+assert_equal 'String', '?\n.class'
+assert_equal ' ', '?\ '
+assert_equal 'String', '?\ .class'
+assert_equal 'string', "'string'"
+assert_equal 'string', '"string"'
+assert_equal 'string', '%(string)'
+assert_equal 'string', '%q(string)'
+assert_equal 'string', '%Q(string)'
+assert_equal 'string string', '"string string"'
+assert_equal ' ', '" "'
+assert_equal "\0", '"\0"'
+assert_equal "\1", '"\1"'
+assert_equal "3", '"\x33"'
+assert_equal "\n", '"\n"'
+
+# dynamic string literal
+assert_equal '2', '"#{1 + 1}"'
+assert_equal '16', '"#{2 ** 4}"'
+assert_equal 'string', 's = "string"; "#{s}"'
+
+# dynamic symbol literal
+assert_equal 'a3c', ':"a#{1+2}c"'
+assert_equal ':a3c', ':"a#{1+2}c".inspect'
+assert_equal 'Symbol', ':"a#{1+2}c".class'
+
+# xstring
+# WASI doesn't support spawning a new process for now.
+if /wasi/ !~ target_platform
+ assert_equal "foo\n", %q(`echo foo`)
+ assert_equal "foo\n", %q(s = "foo"; `echo #{s}`)
+end
+
+# regexp
+assert_equal '', '//.source'
+assert_equal 'Regexp', '//.class'
+assert_equal '0', '// =~ "a"'
+assert_equal '0', '// =~ ""'
+assert_equal 'a', '/a/.source'
+assert_equal 'Regexp', '/a/.class'
+assert_equal '0', '/a/ =~ "a"'
+assert_equal '0', '/test/ =~ "test"'
+assert_equal '', '/test/ =~ "tes"'
+assert_equal '0', 're = /test/; re =~ "test"'
+assert_equal '0', 'str = "test"; /test/ =~ str'
+assert_equal '0', 're = /test/; str = "test"; re =~ str'
+
+# dynamic regexp
+assert_equal 'regexp', %q(/re#{'ge'}xp/.source)
+assert_equal 'Regexp', %q(/re#{'ge'}xp/.class)
+
+# array
+assert_equal 'Array', '[].class'
+assert_equal '0', '[].size'
+assert_equal '0', '[].length'
+assert_equal '[]', '[].inspect'
+assert_equal 'Array', '[0].class'
+assert_equal '1', '[3].size'
+assert_equal '[3]', '[3].inspect'
+assert_equal '3', 'a = [3]; a[0]'
+assert_equal 'Array', '[1,2].class'
+assert_equal '2', '[1,2].size'
+assert_equal '[1, 2]', '[1,2].inspect'
+assert_equal 'Array', '[1,2,3,4,5].class'
+assert_equal '5', '[1,2,3,4,5].size'
+assert_equal '[1, 2, 3, 4, 5]', '[1,2,3,4,5].inspect'
+assert_equal '1', 'a = [1,2]; a[0]'
+assert_equal '2', 'a = [1,2]; a[1]'
+assert_equal 'Array', 'a = [1 + 2, 3 + 4, 5 + 6]; a.class'
+assert_equal '[3, 7, 11]', 'a = [1 + 2, 3 + 4, 5 + 6]; a.inspect'
+assert_equal '7', 'a = [1 + 2, 3 + 4, 5 + 6]; a[1]'
+assert_equal '1', '([0][0] += 1)'
+assert_equal '1', '([2][0] -= 1)'
+assert_equal 'Array', 'a = [obj = Object.new]; a.class'
+assert_equal '1', 'a = [obj = Object.new]; a.size'
+assert_equal 'true', 'a = [obj = Object.new]; a[0] == obj'
+assert_equal '5', 'a = [1,2,3]; a[1] = 5; a[1]'
+assert_equal 'bar', '[*:foo];:bar'
+assert_equal '[1, 2]', 'def nil.to_a; [2]; end; [1, *nil]'
+assert_equal '[1, 2]', 'def nil.to_a; [1, 2]; end; [*nil]'
+assert_equal '[0, 1, {2=>3}]', '[0, *[1], 2=>3]', "[ruby-dev:31592]"
+
+
+# hash
+assert_equal 'Hash', '{}.class'
+assert_equal '{}', '{}.inspect'
+assert_equal 'Hash', '{1=>2}.class'
+assert_equal '{1=>2}', '{1=>2}.inspect'
+assert_equal '2', 'h = {1 => 2}; h[1]'
+assert_equal '0', 'h = {1 => 2}; h.delete(1); h.size'
+assert_equal '', 'h = {1 => 2}; h.delete(1); h[1]'
+assert_equal '2', 'h = {"string" => "literal", "goto" => "hell"}; h.size'
+assert_equal 'literal', 'h = {"string"=>"literal", "goto"=>"hell"}; h["string"]'
+assert_equal 'hell', 'h = {"string"=>"literal", "goto"=>"hell"}; h["goto"]'
+
+# range
+assert_equal 'Range', '(1..2).class'
+assert_equal '1..2', '(1..2).inspect'
+assert_equal '1', '(1..2).begin'
+assert_equal '2', '(1..2).end'
+assert_equal 'false', '(1..2).exclude_end?'
+assert_equal 'Range', 'r = 1..2; r.class'
+assert_equal '1..2', 'r = 1..2; r.inspect'
+assert_equal '1', 'r = 1..2; r.begin'
+assert_equal '2', 'r = 1..2; r.end'
+assert_equal 'false', 'r = 1..2; r.exclude_end?'
+assert_equal 'Range', '(1...3).class'
+assert_equal '1...3', '(1...3).inspect'
+assert_equal '1', '(1...3).begin'
+assert_equal '3', '(1...3).end'
+assert_equal 'true', '(1...3).exclude_end?'
+assert_equal 'Range', 'r = (1...3); r.class'
+assert_equal '1...3', 'r = (1...3); r.inspect'
+assert_equal '1', 'r = (1...3); r.begin'
+assert_equal '3', 'r = (1...3); r.end'
+assert_equal 'true', 'r = (1...3); r.exclude_end?'
+assert_equal 'Range', 'r = (1+2 .. 3+4); r.class'
+assert_equal '3..7', 'r = (1+2 .. 3+4); r.inspect'
+assert_equal '3', 'r = (1+2 .. 3+4); r.begin'
+assert_equal '7', 'r = (1+2 .. 3+4); r.end'
+assert_equal 'false', 'r = (1+2 .. 3+4); r.exclude_end?'
+assert_equal 'Range', 'r = (1+2 ... 3+4); r.class'
+assert_equal '3...7', 'r = (1+2 ... 3+4); r.inspect'
+assert_equal '3', 'r = (1+2 ... 3+4); r.begin'
+assert_equal '7', 'r = (1+2 ... 3+4); r.end'
+assert_equal 'true', 'r = (1+2 ... 3+4); r.exclude_end?'
+assert_equal 'Range', 'r = ("a".."c"); r.class'
+assert_equal '"a".."c"', 'r = ("a".."c"); r.inspect'
+assert_equal 'a', 'r = ("a".."c"); r.begin'
+assert_equal 'c', 'r = ("a".."c"); r.end'
+
+assert_equal 'String', '__FILE__.class'
+assert_equal 'Integer', '__LINE__.class'
+
+###
+
+assert_equal 'ok', %q{
+ # this cause "called on terminated object".
+ ObjectSpace.each_object(Module) {|m| m.name.inspect }
+ :ok
+}
+
+assert_normal_exit %q{
+ begin
+ r = 0**-1
+ r + r
+ rescue
+ end
+}, '[ruby-dev:34524]'
+
+assert_normal_exit %q{
+ begin
+ r = Marshal.load("\x04\bU:\rRational[\ai\x06i\x05")
+ r + r
+ rescue
+ end
+}, '[ruby-dev:34536]'
+
+assert_equal 'ok', %q{
+ "#{}""#{}ok"
+}, '[ruby-dev:38968]'
+
+assert_equal 'ok', %q{
+ "#{}o""#{}k""#{}"
+}, '[ruby-core:25284]'
+
+assert_equal 'ok', %q{ # long array literal
+ x = nil
+ eval "a = [#{(1..10_000).map{'x'}.join(", ")}]"
+ :ok
+}
+
+assert_equal 'ok', %q{ # long array literal (optimized)
+ eval "a = [#{(1..10_000).to_a.join(", ")}]"
+ :ok
+}
+
+assert_equal 'ok', %q{ # long hash literal
+ x = nil
+ eval "a = {#{(1..10_000).map{|n| "#{n} => x"}.join(', ')}}"
+ :ok
+}
+
+assert_equal 'ok', %q{ # long hash literal (optimized)
+ eval "a = {#{(1..10_000).map{|n| "#{n} => #{n}"}.join(', ')}}"
+ :ok
+}
+
+assert_equal 'ok', %q{ # Bug #15536
+ eval <<-END
+ {
+ **{
+ a0: nil, a1: nil, a2: nil, a3: nil, a4: nil, a5: nil, a6: nil, a7: nil, a8: nil,
+ },
+ a0: nil, a1: nil, a2: nil, a3: nil, a4: nil, a5: nil, a6: nil, a7: nil, a8: nil,
+ **{
+ c: nil
+ },
+ b0: nil, b1: nil, b2: nil, b3: nil, b4: nil, b5: nil, b6: nil, b7: nil, b8: nil,
+ b9: nil, b10: nil, b11: nil, b12: nil, b13: nil, b14: nil, b15: nil, b16: nil,
+ b17: nil, b18: nil, b19: nil, b20: nil, b21: nil,
+ }
+ END
+ :ok
+}
+
+assert_equal 'ok', %q{
+ [print(:ok), exit] # void literal with side-effect
+ :dummy
+}
diff --git a/bootstraptest/test_literal_suffix.rb b/bootstraptest/test_literal_suffix.rb
new file mode 100644
index 0000000000..c36fa7078f
--- /dev/null
+++ b/bootstraptest/test_literal_suffix.rb
@@ -0,0 +1,54 @@
+# numbers with suffix
+assert_equal '0/1', '0r'
+assert_equal 'Rational', '0r.class'
+assert_equal '1/1', '1r'
+assert_equal 'Rational', '1r.class'
+assert_equal '-1/1', '-1r'
+assert_equal 'Rational', '(-1r).class'
+assert_equal '1/1', '0x1r'
+assert_equal 'Rational', '0x1r.class'
+assert_equal '1/1', '0b1r'
+assert_equal 'Rational', '0b1r.class'
+assert_equal '1/1', '0d1r'
+assert_equal 'Rational', '0d1r.class'
+assert_equal '1/1', '0o1r'
+assert_equal 'Rational', '0o1r.class'
+assert_equal '1/1', '01r'
+assert_equal 'Rational', '01r.class'
+assert_equal '6/5', '1.2r'
+assert_equal 'Rational', '1.2r.class'
+assert_equal '-6/5', '-1.2r'
+assert_equal 'Rational', '(-1.2r).class'
+assert_equal '0+0i', '0i'
+assert_equal 'Complex', '0i.class'
+assert_equal '0+1i', '1i'
+assert_equal 'Complex', '1i.class'
+assert_equal '0+1i', '0x1i'
+assert_equal 'Complex', '0x1i.class'
+assert_equal '0+1i', '0b1i'
+assert_equal 'Complex', '0b1i.class'
+assert_equal '0+1i', '0d1i'
+assert_equal 'Complex', '0d1i.class'
+assert_equal '0+1i', '0o1i'
+assert_equal 'Complex', '0o1i.class'
+assert_equal '0+1i', '01i'
+assert_equal 'Complex', '01i.class'
+assert_equal '0+1.2i', '1.2i'
+assert_equal 'Complex', '1.2i.class'
+assert_equal '0+1/1i', '1ri'
+assert_equal 'Complex', '1ri.class'
+assert_equal '0+6/5i', '1.2ri'
+assert_equal 'Complex', '1.2ri.class'
+assert_equal '0+10.0i', '1e1i'
+assert_equal 'Complex', '1e1i.class'
+assert_equal '1', '1if true'
+assert_equal '1', '1rescue nil'
+assert_equal '10000000000000000001/10000000000000000000',
+ '1.0000000000000000001r'
+
+assert_equal 'syntax error, unexpected local variable or method, expecting end-of-input',
+ %q{begin eval('1ir', nil, '', 0); rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end}
+assert_equal 'syntax error, unexpected local variable or method, expecting end-of-input',
+ %q{begin eval('1.2ir', nil, '', 0); rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end}
+assert_equal 'syntax error, unexpected local variable or method, expecting end-of-input',
+ %q{begin eval('1e1r', nil, '', 0); rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end}
diff --git a/bootstraptest/test_load.rb b/bootstraptest/test_load.rb
new file mode 100644
index 0000000000..e63c93a8f4
--- /dev/null
+++ b/bootstraptest/test_load.rb
@@ -0,0 +1,27 @@
+assert_equal 'ok', %q{
+ open("require-lock-test.rb", "w") {|f|
+ f.puts "sleep 0.1"
+ f.puts "module M"
+ f.puts "end"
+ }
+ $:.unshift Dir.pwd
+ vs = (1..2).map {|i|
+ Thread.start {
+ require "require-lock-test"
+ M
+ }
+ }.map {|t| t.value }
+ vs[0] == M && vs[1] == M ? :ok : :ng
+}, '[ruby-dev:32048]'
+
+assert_equal 'ok', %q{
+ %w[a a/foo b].each {|d| Dir.mkdir(d)}
+ open("b/foo", "w") {|f| f.puts "$ok = :ok"}
+ $:.replace(%w[a b])
+ begin
+ load "foo"
+ $ok
+ rescue => e
+ e.message
+ end
+}, '[ruby-dev:38097]'
diff --git a/bootstraptest/test_marshal.rb b/bootstraptest/test_marshal.rb
new file mode 100644
index 0000000000..7e34176169
--- /dev/null
+++ b/bootstraptest/test_marshal.rb
@@ -0,0 +1,5 @@
+
+assert_normal_exit %q{
+ Marshal.load(Marshal.dump({"k"=>"v"}), lambda {|v| v})
+}
+
diff --git a/bootstraptest/test_massign.rb b/bootstraptest/test_massign.rb
new file mode 100644
index 0000000000..0f63dd424a
--- /dev/null
+++ b/bootstraptest/test_massign.rb
@@ -0,0 +1,183 @@
+assert_equal '[[1], 2, 3]', '*v1, (a, b) = [1,[2, 3]]; [v1, a, b]'
+assert_equal '[[1], 2, 3]', '*v1,(*), (a, b) = [1,:x,[2, 3]]; [v1, a, b]'
+
+assert_equal '[]', '*a = *nil; a'
+assert_equal '[nil]', '*a = nil; a'
+assert_equal '2', 'a, a = 1, 2; a', "[ruby-dev:31522]"
+assert_equal '[1, 2]', 'a, b = 1, 2'
+assert_equal '[1, 2]', %q{
+ ans = []
+ trace_var(:$a){|v| ans << v}
+ trace_var(:$b){|v| ans << v}
+ $a, $b = 1, 2
+ ans
+}
+
+assert_equal 'ok', %q{
+ r = :ok
+ :ng.tap {|(r)|}
+ r
+}, '[ruby-dev:31507]'
+
+=begin
+# generated by this script:
+
+3.times{|i|
+ 8.times{|e|
+ ary = (0...e).to_a
+ a,b,c,d,e,f = nil
+ vals = %w(a b c d e f)
+ vals[i] = '*' + vals[i]
+ program = "#{vals.join(", ")} = *ary"
+ eval(program)
+ ans = [a,b,c,d,e,f]
+ puts %Q{
+ assert_equal "#{ans.inspect}", %q{
+ ary = #{ary.inspect}
+ #{program}; [a, b, c, d, e, f]
+ }}
+ }
+}
+=end
+
+ assert_equal "[[], nil, nil, nil, nil, nil]", %q{
+ ary = []
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[], 0, nil, nil, nil, nil]", %q{
+ ary = [0]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[], 0, 1, nil, nil, nil]", %q{
+ ary = [0, 1]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[], 0, 1, 2, nil, nil]", %q{
+ ary = [0, 1, 2]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[], 0, 1, 2, 3, nil]", %q{
+ ary = [0, 1, 2, 3]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[], 0, 1, 2, 3, 4]", %q{
+ ary = [0, 1, 2, 3, 4]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[0], 1, 2, 3, 4, 5]", %q{
+ ary = [0, 1, 2, 3, 4, 5]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[0, 1], 2, 3, 4, 5, 6]", %q{
+ ary = [0, 1, 2, 3, 4, 5, 6]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[nil, [], nil, nil, nil, nil]", %q{
+ ary = []
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [], nil, nil, nil, nil]", %q{
+ ary = [0]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [], 1, nil, nil, nil]", %q{
+ ary = [0, 1]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [], 1, 2, nil, nil]", %q{
+ ary = [0, 1, 2]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [], 1, 2, 3, nil]", %q{
+ ary = [0, 1, 2, 3]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [], 1, 2, 3, 4]", %q{
+ ary = [0, 1, 2, 3, 4]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [1], 2, 3, 4, 5]", %q{
+ ary = [0, 1, 2, 3, 4, 5]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [1, 2], 3, 4, 5, 6]", %q{
+ ary = [0, 1, 2, 3, 4, 5, 6]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[nil, nil, [], nil, nil, nil]", %q{
+ ary = []
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, nil, [], nil, nil, nil]", %q{
+ ary = [0]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [], nil, nil, nil]", %q{
+ ary = [0, 1]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [], 2, nil, nil]", %q{
+ ary = [0, 1, 2]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [], 2, 3, nil]", %q{
+ ary = [0, 1, 2, 3]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [], 2, 3, 4]", %q{
+ ary = [0, 1, 2, 3, 4]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [2], 3, 4, 5]", %q{
+ ary = [0, 1, 2, 3, 4, 5]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [2, 3], 4, 5, 6]", %q{
+ ary = [0, 1, 2, 3, 4, 5, 6]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+
+#
+assert_equal 'ok', %q{
+ a,s=[],"aaa"
+ 300.times { a<<s; s=s.succ }
+ eval <<-END__
+ GC.stress=true
+ Fiber.new do
+ #{ a.join(",") },*zzz=1
+ end.resume
+ END__
+ :ok
+}, '[ruby-dev:32581]'
+
+assert_equal 'ok', %q{
+ while true
+ *, z = 1
+ break
+ end
+ :ok
+}, '[ruby-dev:32892]'
diff --git a/bootstraptest/test_method.rb b/bootstraptest/test_method.rb
new file mode 100644
index 0000000000..04c9eb2d11
--- /dev/null
+++ b/bootstraptest/test_method.rb
@@ -0,0 +1,1192 @@
+# regular argument
+assert_equal '1', 'def m() 1 end; m()'
+assert_equal '1', 'def m(a) a end; m(1)'
+assert_equal '[1, 2]', 'def m(a,b) [a, b] end; m(1,2)'
+assert_equal '[1, 2, 3]', 'def m(a,b,c) [a, b, c] end; m(1,2,3)'
+assert_match /\Awrong number of arguments \(.*\b1\b.* 0\)\z/, %q{
+ def m; end
+ begin
+ m(1)
+ rescue => e
+ e.message
+ end
+}
+
+assert_match /\Awrong number of arguments \(.*\b0\b.* 1\)\z/, %q{
+ def m a; end
+ begin
+ m
+ rescue => e
+ e.message
+ end
+}
+
+# default argument
+assert_equal '1', 'def m(x=1) x end; m();'
+assert_equal '1', 'def m(x=7) x end; m(1)'
+assert_equal '1', 'def m(a,x=1) x end; m(7)'
+assert_equal '1', 'def m(a,x=7) x end; m(7,1)'
+assert_equal '1', 'def m(a,b,x=1) x end; m(7,7)'
+assert_equal '1', 'def m(a,b,x=7) x end; m(7,7,1)'
+assert_equal '1', 'def m(a,x=1,y=1) x end; m(7)'
+assert_equal '1', 'def m(a,x=1,y=1) y end; m(7)'
+assert_equal '1', 'def m(a,x=7,y=1) x end; m(7,1)'
+assert_equal '1', 'def m(a,x=7,y=1) y end; m(7,1)'
+assert_equal '1', 'def m(a,x=7,y=7) x end; m(7,1,1)'
+assert_equal '1', 'def m(a,x=7,y=7) y end; m(7,1,1)'
+
+# rest argument
+assert_equal '[]', 'def m(*a) a end; m().inspect'
+assert_equal '[1]', 'def m(*a) a end; m(1).inspect'
+assert_equal '[1, 2]', 'def m(*a) a end; m(1,2).inspect'
+assert_equal '[]', 'def m(x,*a) a end; m(7).inspect'
+assert_equal '[1]', 'def m(x,*a) a end; m(7,1).inspect'
+assert_equal '[1, 2]', 'def m(x,*a) a end; m(7,1,2).inspect'
+assert_equal '[]', 'def m(x,y,*a) a end; m(7,7).inspect'
+assert_equal '[1]', 'def m(x,y,*a) a end; m(7,7,1).inspect'
+assert_equal '[1, 2]', 'def m(x,y,*a) a end; m(7,7,1,2).inspect'
+assert_equal '[]', 'def m(x,y=7,*a) a end; m(7).inspect'
+assert_equal '[]', 'def m(x,y,z=7,*a) a end; m(7,7).inspect'
+assert_equal '[]', 'def m(x,y,z=7,*a) a end; m(7,7,7).inspect'
+assert_equal '[]', 'def m(x,y,z=7,zz=7,*a) a end; m(7,7,7).inspect'
+assert_equal '[]', 'def m(x,y,z=7,zz=7,*a) a end; m(7,7,7,7).inspect'
+assert_equal '1', 'def m(x,y,z=7,zz=1,*a) zz end; m(7,7,7).inspect'
+assert_equal '1', 'def m(x,y,z=7,zz=1,*a) zz end; m(7,7,7).inspect'
+assert_equal '1', 'def m(x,y,z=7,zz=7,*a) zz end; m(7,7,7,1).inspect'
+
+# block argument
+assert_equal 'Proc', 'def m(&block) block end; m{}.class'
+assert_equal 'nil', 'def m(&block) block end; m().inspect'
+assert_equal 'Proc', 'def m(a,&block) block end; m(7){}.class'
+assert_equal 'nil', 'def m(a,&block) block end; m(7).inspect'
+assert_equal '1', 'def m(a,&block) a end; m(1){}'
+assert_equal 'Proc', 'def m(a,b=nil,&block) block end; m(7){}.class'
+assert_equal 'nil', 'def m(a,b=nil,&block) block end; m(7).inspect'
+assert_equal 'Proc', 'def m(a,b=nil,&block) block end; m(7,7){}.class'
+assert_equal '1', 'def m(a,b=nil,&block) b end; m(7,1){}'
+assert_equal 'Proc', 'def m(a,b=nil,*c,&block) block end; m(7){}.class'
+assert_equal 'nil', 'def m(a,b=nil,*c,&block) block end; m(7).inspect'
+assert_equal '1', 'def m(a,b=nil,*c,&block) a end; m(1).inspect'
+assert_equal '1', 'def m(a,b=1,*c,&block) b end; m(7).inspect'
+assert_equal '1', 'def m(a,b=7,*c,&block) b end; m(7,1).inspect'
+assert_equal '[1]', 'def m(a,b=7,*c,&block) c end; m(7,7,1).inspect'
+
+# splat
+assert_equal '1', 'def m(a) a end; m(*[1])'
+assert_equal '1', 'def m(x,a) a end; m(7,*[1])'
+assert_equal '1', 'def m(x,y,a) a end; m(7,7,*[1])'
+assert_equal '1', 'def m(a,b) a end; m(*[1,7])'
+assert_equal '1', 'def m(a,b) b end; m(*[7,1])'
+assert_equal '1', 'def m(x,a,b) b end; m(7,*[7,1])'
+assert_equal '1', 'def m(x,y,a,b) b end; m(7,7,*[7,1])'
+assert_equal '1', 'def m(a,b,c) a end; m(*[1,7,7])'
+assert_equal '1', 'def m(a,b,c) b end; m(*[7,1,7])'
+assert_equal '1', 'def m(a,b,c) c end; m(*[7,7,1])'
+assert_equal '1', 'def m(x,a,b,c) a end; m(7,*[1,7,7])'
+assert_equal '1', 'def m(x,y,a,b,c) a end; m(7,7,*[1,7,7])'
+
+# hash argument
+assert_equal '1', 'def m(h) h end; m(7=>1)[7]'
+assert_equal '1', 'def m(h) h end; m(7=>1).size'
+assert_equal '1', 'def m(h) h end; m(7=>1, 8=>7)[7]'
+assert_equal '2', 'def m(h) h end; m(7=>1, 8=>7).size'
+assert_equal '1', 'def m(h) h end; m(7=>1, 8=>7, 9=>7)[7]'
+assert_equal '3', 'def m(h) h end; m(7=>1, 8=>7, 9=>7).size'
+assert_equal '1', 'def m(x,h) h end; m(7, 7=>1)[7]'
+assert_equal '1', 'def m(x,h) h end; m(7, 7=>1, 8=>7)[7]'
+assert_equal '1', 'def m(x,h) h end; m(7, 7=>1, 8=>7, 9=>7)[7]'
+assert_equal '1', 'def m(x,y,h) h end; m(7,7, 7=>1)[7]'
+assert_equal '1', 'def m(x,y,h) h end; m(7,7, 7=>1, 8=>7)[7]'
+assert_equal '1', 'def m(x,y,h) h end; m(7,7, 7=>1, 8=>7, 9=>7)[7]'
+
+# block argument
+assert_equal '1', %q(def m(&block) mm(&block) end
+ def mm() yield 1 end
+ m {|a| a })
+assert_equal '1', %q(def m(x,&block) mm(x,&block) end
+ def mm(x) yield 1 end
+ m(7) {|a| a })
+assert_equal '1', %q(def m(x,y,&block) mm(x,y,&block) end
+ def mm(x,y) yield 1 end
+ m(7,7) {|a| a })
+
+# recursive call
+assert_equal '1', %q(def m(n) n == 0 ? 1 : m(n-1) end; m(5))
+
+# instance method
+assert_equal '1', %q(class C; def m() 1 end end; C.new.m)
+assert_equal '1', %q(class C; def m(a) a end end; C.new.m(1))
+assert_equal '1', %q(class C; def m(a = 1) a end end; C.new.m)
+assert_equal '[1]', %q(class C; def m(*a) a end end; C.new.m(1).inspect)
+assert_equal '1', %q( class C
+ def m() mm() end
+ def mm() 1 end
+ end
+ C.new.m )
+
+# singleton method (const)
+assert_equal '1', %q(class C; def C.m() 1 end end; C.m)
+assert_equal '1', %q(class C; def C.m(a) a end end; C.m(1))
+assert_equal '1', %q(class C; def C.m(a = 1) a end end; C.m)
+assert_equal '[1]', %q(class C; def C.m(*a) a end end; C.m(1).inspect)
+assert_equal '1', %q(class C; end; def C.m() 1 end; C.m)
+assert_equal '1', %q(class C; end; def C.m(a) a end; C.m(1))
+assert_equal '1', %q(class C; end; def C.m(a = 1) a end; C.m)
+assert_equal '[1]', %q(class C; end; def C.m(*a) a end; C.m(1).inspect)
+assert_equal '1', %q(class C; def m() 7 end end; def C.m() 1 end; C.m)
+assert_equal '1', %q( class C
+ def C.m() mm() end
+ def C.mm() 1 end
+ end
+ C.m )
+
+# singleton method (lvar)
+assert_equal '1', %q(obj = Object.new; def obj.m() 1 end; obj.m)
+assert_equal '1', %q(obj = Object.new; def obj.m(a) a end; obj.m(1))
+assert_equal '1', %q(obj = Object.new; def obj.m(a=1) a end; obj.m)
+assert_equal '[1]', %q(obj = Object.new; def obj.m(*a) a end; obj.m(1))
+assert_equal '1', %q(class C; def m() 7 end; end
+ obj = C.new
+ def obj.m() 1 end
+ obj.m)
+
+# inheritance
+assert_equal '1', %q(class A; def m(a) a end end
+ class B < A; end
+ B.new.m(1))
+assert_equal '1', %q(class A; end
+ class B < A; def m(a) a end end
+ B.new.m(1))
+assert_equal '1', %q(class A; def m(a) a end end
+ class B < A; end
+ class C < B; end
+ C.new.m(1))
+
+# include
+assert_equal '1', %q(class A; def m(a) a end end
+ module M; end
+ class B < A; include M; end
+ B.new.m(1))
+assert_equal '1', %q(class A; end
+ module M; def m(a) a end end
+ class B < A; include M; end
+ B.new.m(1))
+
+# alias
+assert_equal '1', %q( def a() 1 end
+ alias m a
+ m() )
+assert_equal '1', %q( class C
+ def a() 1 end
+ alias m a
+ end
+ C.new.m )
+assert_equal '1', %q( class C
+ def a() 1 end
+ alias :m a
+ end
+ C.new.m )
+assert_equal '1', %q( class C
+ def a() 1 end
+ alias m :a
+ end
+ C.new.m )
+assert_equal '1', %q( class C
+ def a() 1 end
+ alias :m :a
+ end
+ C.new.m )
+assert_equal '1', %q( class C
+ def a() 1 end
+ alias m a
+ undef a
+ end
+ C.new.m )
+
+# undef
+assert_equal '1', %q( class C
+ def m() end
+ undef m
+ end
+ begin C.new.m; rescue NoMethodError; 1 end )
+assert_equal '1', %q( class A
+ def m() end
+ end
+ class C < A
+ def m() end
+ undef m
+ end
+ begin C.new.m; rescue NoMethodError; 1 end )
+assert_equal '1', %q( class A; def a() end end # [yarv-dev:999]
+ class B < A
+ def b() end
+ undef a, b
+ end
+ begin B.new.a; rescue NoMethodError; 1 end )
+assert_equal '1', %q( class A; def a() end end # [yarv-dev:999]
+ class B < A
+ def b() end
+ undef a, b
+ end
+ begin B.new.b; rescue NoMethodError; 1 end )
+
+assert_equal '3', %q{
+ def m1
+ 1
+ end
+ alias m2 m1
+ alias :"#{'m3'}" m1
+ m1 + m2 + m3
+}, '[ruby-dev:32308]'
+assert_equal '1', %q{
+ def foobar
+ end
+ undef :"foo#{:bar}"
+ 1
+}, '[ruby-dev:32308]'
+assert_equal '1', %q{
+ def foobar
+ 1
+ end
+ alias :"bar#{:baz}" :"foo#{:bar}"
+ barbaz
+}, '[ruby-dev:32308]'
+
+# private
+assert_equal '1', %q( class C
+ def m() mm() end
+ def mm() 1 end
+ private :mm
+ end
+ C.new.m )
+assert_equal '1', %q( class C
+ def m() 7 end
+ private :m
+ end
+ begin C.m; rescue NoMethodError; 1 end )
+assert_equal '1', %q( class C
+ def C.m() mm() end
+ def C.mm() 1 end
+ private_class_method :mm
+ end
+ C.m )
+assert_equal '1', %q( class C
+ def C.m() 7 end
+ private_class_method :m
+ end
+ begin C.m; rescue NoMethodError; 1 end )
+assert_equal '1', %q( class C; def m() 1 end end
+ C.new.m # cache
+ class C
+ alias mm m; private :mm
+ end
+ C.new.m
+ begin C.new.mm; 7; rescue NoMethodError; 1 end )
+
+# nested method
+assert_equal '1', %q( class C
+ def m
+ def mm() 1 end
+ end
+ end
+ C.new.m
+ C.new.mm )
+assert_equal '1', %q( class C
+ def m
+ def mm() 1 end
+ end
+ end
+ instance_eval "C.new.m; C.new.mm" )
+
+# method_missing
+assert_equal ':m', %q( class C
+ def method_missing(mid, *args) mid end
+ end
+ C.new.m.inspect )
+assert_equal ':mm', %q( class C
+ def method_missing(mid, *args) mid end
+ end
+ C.new.mm.inspect )
+assert_equal '[1, 2]', %q( class C
+ def method_missing(mid, *args) args end
+ end
+ C.new.m(1,2).inspect )
+assert_equal '1', %q( class C
+ def method_missing(mid, *args) yield 1 end
+ end
+ C.new.m {|a| a })
+assert_equal 'nil', %q( class C
+ def method_missing(mid, *args, &block) block end
+ end
+ C.new.m.inspect )
+
+# send
+assert_equal '1', %q( class C; def m() 1 end end;
+ C.new.__send__(:m) )
+assert_equal '1', %q( class C; def m() 1 end end;
+ C.new.send(:m) )
+assert_equal '1', %q( class C; def m(a) a end end;
+ C.new.send(:m,1) )
+assert_equal '1', %q( class C; def m(a,b) a end end;
+ C.new.send(:m,1,7) )
+assert_equal '1', %q( class C; def m(x,a=1) a end end;
+ C.new.send(:m,7) )
+assert_equal '1', %q( class C; def m(x,a=7) a end end;
+ C.new.send(:m,7,1) )
+assert_equal '[1, 2]', %q( class C; def m(*a) a end end;
+ C.new.send(:m,1,2).inspect )
+assert_equal '1', %q( class C; def m() 7 end; private :m end
+ begin C.new.public_send(:m); rescue NoMethodError; 1 end )
+assert_equal '1', %q( class C; def m() 1 end; private :m end
+ C.new.send(:m) )
+
+# with block
+assert_equal '[[:ok1, :foo], [:ok2, :foo, :bar]]',
+%q{
+ class C
+ def [](a)
+ $ary << [yield, a]
+ end
+ def []=(a, b)
+ $ary << [yield, a, b]
+ end
+ end
+
+ $ary = []
+ C.new[:foo, &lambda{:ok1}]
+ C.new[:foo, &lambda{:ok2}] = :bar
+ $ary
+}
+
+# with
+assert_equal '[:ok1, [:ok2, 11]]', %q{
+ class C
+ def []
+ $ary << :ok1
+ 10
+ end
+ def []=(a)
+ $ary << [:ok2, a]
+ end
+ end
+ $ary = []
+ C.new[]+=1
+ $ary
+}
+
+# splat and block arguments
+assert_equal %q{[[[:x, :y, :z], NilClass], [[1, :x, :y, :z], NilClass], [[1, 2, :x, :y, :z], NilClass], [[:obj], NilClass], [[1, :obj], NilClass], [[1, 2, :obj], NilClass], [[], Proc], [[1], Proc], [[1, 2], Proc], [[], Proc], [[1], Proc], [[1, 2], Proc], [[:x, :y, :z], Proc], [[1, :x, :y, :z], Proc], [[1, 2, :x, :y, :z], Proc]]}, %q{
+def m(*args, &b)
+ $result << [args, b.class]
+end
+$result = []
+ary = [:x, :y, :z]
+obj = :obj
+b = Proc.new{}
+
+m(*ary)
+m(1,*ary)
+m(1,2,*ary)
+m(*obj)
+m(1,*obj)
+m(1,2,*obj)
+m(){}
+m(1){}
+m(1,2){}
+m(&b)
+m(1,&b)
+m(1,2,&b)
+m(*ary,&b)
+m(1,*ary,&b)
+m(1,2,*ary,&b)
+$result
+}
+
+# aset and splat
+assert_equal '4', %q{class Foo;def []=(a,b,c,d);end;end;Foo.new[1,*a=[2,3]]=4}
+assert_equal '4', %q{class Foo;def []=(a,b,c,d);end;end;def m(&blk)Foo.new[1,*a=[2,3],&blk]=4;end;m{}}
+
+# post test
+assert_equal %q{[1, 2, :o1, :o2, [], 3, 4, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4)}
+
+assert_equal %q{[1, 2, 3, :o2, [], 4, 5, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5)}
+
+assert_equal %q{[1, 2, 3, 4, [], 5, 6, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6)}
+
+assert_equal %q{[1, 2, 3, 4, [5], 6, 7, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7)}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6], 7, 8, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8)}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7], 8, 9, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9)}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7, 8], 9, 10, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7, 8, 9], 10, 11, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)}
+
+assert_equal %q{[1, 2, :o1, :o2, [], 3, 4, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4){}}
+
+assert_equal %q{[1, 2, 3, :o2, [], 4, 5, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5){}}
+
+assert_equal %q{[1, 2, 3, 4, [], 5, 6, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6){}}
+
+assert_equal %q{[1, 2, 3, 4, [5], 6, 7, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7){}}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6], 7, 8, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8){}}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7], 8, 9, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9){}}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7, 8], 9, 10, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9, 10){}}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7, 8, 9], 10, 11, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11){}}
+
+assert_equal %q{[1, 2, :o1, :o2, [], 3, 4, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, x, y]
+end
+; m(1, 2, 3, 4)}
+
+assert_equal %q{[1, 2, 3, :o2, [], 4, 5, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, x, y]
+end
+; m(1, 2, 3, 4, 5)}
+
+assert_equal %q{[1, 2, 3, 4, [], 5, 6, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, x, y]
+end
+; m(1, 2, 3, 4, 5, 6)}
+
+
+#
+# super
+#
+=begin
+# below programs are generated by this program:
+
+BASE = <<EOS__
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; <TEST>; super; end; end
+EOS__
+
+tests = {
+%q{
+ def m
+} => %q{
+ C1.new.m
+},
+#
+%q{
+ def m a
+} => %q{
+ C1.new.m 1
+},
+%q{
+ def m a
+ a = :a
+} => %q{
+ C1.new.m 1
+},
+#
+%q{
+ def m a, o=:o
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+},
+%q{
+ def m a, o=:o
+ a = :a
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+},
+%q{
+ def m a, o=:o
+ o = :x
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+},
+#
+%q{
+ def m a, *r
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+ C1.new.m 1, 2, 3
+},
+%q{
+ def m a, *r
+ r = [:x, :y]
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+ C1.new.m 1, 2, 3
+},
+#
+%q{
+ def m a, o=:o, *r
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+ C1.new.m 1, 2, 3
+ C1.new.m 1, 2, 3, 4
+},
+#
+%q{
+ def m a, o=:o, *r, &b
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+ C1.new.m 1, 2, 3
+ C1.new.m 1, 2, 3, 4
+ C1.new.m(1){}
+ C1.new.m(1, 2){}
+ C1.new.m(1, 2, 3){}
+ C1.new.m(1, 2, 3, 4){}
+},
+#
+"def m(m1, m2, o1=:o1, o2=:o2, p1, p2)" =>
+%q{
+C1.new.m(1,2,3,4)
+C1.new.m(1,2,3,4,5)
+C1.new.m(1,2,3,4,5,6)
+},
+#
+"def m(m1, m2, *r, p1, p2)" =>
+%q{
+C1.new.m(1,2,3,4)
+C1.new.m(1,2,3,4,5)
+C1.new.m(1,2,3,4,5,6)
+C1.new.m(1,2,3,4,5,6,7)
+C1.new.m(1,2,3,4,5,6,7,8)
+},
+#
+"def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2)" =>
+%q{
+C1.new.m(1,2,3,4)
+C1.new.m(1,2,3,4,5)
+C1.new.m(1,2,3,4,5,6)
+C1.new.m(1,2,3,4,5,6,7)
+C1.new.m(1,2,3,4,5,6,7,8)
+C1.new.m(1,2,3,4,5,6,7,8,9)
+},
+
+###
+}
+
+
+tests.each{|setup, methods| setup = setup.dup; setup.strip!
+ setup = BASE.gsub(/<TEST>/){setup}
+ methods.split(/\n/).each{|m| m = m.dup; m.strip!
+ next if m.empty?
+ expr = "#{setup}; #{m}"
+ result = eval(expr)
+ puts "assert_equal %q{#{result.inspect}}, %q{\n#{expr}}"
+ puts
+ }
+}
+
+=end
+
+assert_equal %q{[:C0_m, [1, 2, :o1, :o2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, p1, p2); super; end; end
+; C1.new.m(1,2,3,4)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, :o2, 4, 5]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6)}
+
+assert_equal %q{[:C0_m, [1, :o]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [1, 2, 3]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r; super; end; end
+; C1.new.m 1, 2, 3}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r; super; end; end
+; C1.new.m 1, 2, 3, 4}
+
+assert_equal %q{[:C0_m, [:a]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a
+ a = :a; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6, 7]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6,7)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6, 7, 8]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6,7,8)}
+
+assert_equal %q{[:C0_m, [1, :o]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [1, 2, 3]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m 1, 2, 3}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m 1, 2, 3, 4}
+
+assert_equal %q{[:C0_m, [1, :o]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m(1){}}
+
+assert_equal %q{[:C0_m, [1, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m(1, 2){}}
+
+assert_equal %q{[:C0_m, [1, 2, 3]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m(1, 2, 3){}}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m(1, 2, 3, 4){}}
+
+assert_equal %q{[:C0_m, [1, :x]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o
+ o = :x; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, :x]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o
+ o = :x; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [:a, :o]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o
+ a = :a; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [:a, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o
+ a = :a; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [1]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, :x, :y]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r
+ r = [:x, :y]; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, :x, :y]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r
+ r = [:x, :y]; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [1, :x, :y]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r
+ r = [:x, :y]; super; end; end
+; C1.new.m 1, 2, 3}
+
+assert_equal %q{[:C0_m, [1, 2, :o1, :o2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, :o2, 4, 5]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6, 7]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6,7)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6, 7, 8]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6,7,8)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6, 7, 8, 9]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6,7,8,9)}
+
+assert_equal %q{[:C0_m, [1]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [1, 2, 3]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r; super; end; end
+; C1.new.m 1, 2, 3}
+
+assert_equal %q{[:C0_m, []]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m; super; end; end
+; C1.new.m}
+
+assert_equal %q{[:C0_m, [1, :o]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal 'ok', %q{
+ class C
+ def x=(n)
+ end
+ def m
+ self.x = :ok
+ end
+ end
+ C.new.m
+}
+
+assert_equal 'ok', %q{
+ proc{
+ $SAFE = 1
+ class C
+ def m
+ :ok
+ end
+ end
+ }.call
+ C.new.m
+}, '[ruby-core:11998]'
+
+assert_equal 'ok', %q{
+ class B
+ def m() :fail end
+ end
+ class C < B
+ undef m
+ begin
+ remove_method :m
+ rescue NameError
+ end
+ end
+ begin
+ C.new.m
+ rescue NameError
+ :ok
+ end
+}, '[ruby-dev:31816], [ruby-dev:31817]'
+
+assert_normal_exit %q{
+ begin
+ Process.setrlimit(Process::RLIMIT_STACK, 4_206_592)
+ # FreeBSD SEGVs this less than 4M + 12K bytes.
+ rescue Exception
+ exit
+ end
+ class C
+ attr "a" * (10*1024*1024)
+ end
+}, '[ruby-dev:31818]'
+
+assert_equal 'ok', %q{
+ class Module
+ def define_method2(name, &block)
+ define_method(name, &block)
+ end
+ end
+ class C
+ define_method2(:m) {|x, y| :fail }
+ end
+ begin
+ C.new.m([1,2])
+ rescue ArgumentError
+ :ok
+ end
+}
+
+assert_not_match /method_missing/, %q{
+ STDERR.reopen(STDOUT)
+ variable_or_mehtod_not_exist
+}
+
+assert_equal '[false, false, false, false, true, true]', %q{
+ class C
+ define_method(:foo) {
+ block_given?
+ }
+ end
+
+ C.new.foo {}
+
+ class D
+ def foo
+ D.module_eval{
+ define_method(:m1){
+ block_given?
+ }
+ }
+ end
+ def bar
+ D.module_eval{
+ define_method(:m2){
+ block_given?
+ }
+ }
+ end
+ end
+
+ D.new.foo
+ D.new.bar{}
+ [C.new.foo, C.new.foo{}, D.new.m1, D.new.m1{}, D.new.m2, D.new.m2{}]
+}, '[ruby-core:14813]'
+
+assert_equal 'ok', %q{
+ class Foo
+ define_method(:foo) do |&b|
+ b.call
+ end
+ end
+ Foo.new.foo do
+ break :ok
+ end
+}, '[ruby-dev:36028]'
+
+assert_equal '[1, 2, [3, 4]]', %q{
+ def regular(a, b, *c)
+ [a, b, c]
+ end
+ regular(*[], 1, *[], *[2, 3], *[], 4)
+}, '[ruby-core:19413]'
+
+assert_equal '[1, [:foo, 3, 4, :foo]]', %q{
+ def regular(a, *b)
+ [a, b]
+ end
+ a = b = [:foo]
+ regular(1, *a, *[3, 4], *b)
+}
+
+assert_equal '["B", "A"]', %q{
+ class A
+ def m
+ 'A'
+ end
+ end
+
+ class B < A
+ define_method(:m) do
+ ['B', super()]
+ end
+ end
+
+ class C < B
+ end
+
+ C.new.m
+}
+
+assert_equal 'ok', %q{
+ module Foo
+ def foo
+ begin
+ super
+ rescue NoMethodError
+ :ok
+ end
+ end
+ module_function :foo
+ end
+ Foo.foo
+}, '[ruby-dev:37587]'
+
+assert_equal 'Object#foo', %q{
+ class Object
+ def self.foo
+ "Object.foo"
+ end
+ def foo
+ "Object#foo"
+ end
+ end
+
+ module Foo
+ def foo
+ begin
+ super
+ rescue NoMethodError
+ :ok
+ end
+ end
+ module_function :foo
+ end
+ Foo.foo
+}, '[ruby-dev:37587]'
+
+assert_normal_exit %q{
+ class BasicObject
+ remove_method :method_missing
+ end
+ begin
+ "a".lalala!
+ rescue NoMethodError => e
+ e.message == "undefined method `lalala!' for \"a\":String" ? :ok : :ng
+ end
+}, '[ruby-core:22298]'
+
+assert_equal 'ok', %q{
+ "hello"[0] ||= "H"
+ "ok"
+}
+
+assert_equal 'ok', %q{
+ "hello"[0, 1] ||= "H"
+ "ok"
+}
+
+assert_equal 'ok', %q{
+ class C
+ define_method(:foo) do
+ C.class_eval { remove_method(:foo) }
+ super()
+ end
+ end
+ begin
+ C.new.foo
+ rescue NoMethodError
+ 'ok'
+ end
+}
+assert_equal 'ok', %q{
+ [0][0, &proc{}] += 21
+ 'ok'
+}, '[ruby-core:30534]'
+
+# should not cache when splat
+assert_equal 'ok', %q{
+ class C
+ attr_reader :a
+ def initialize
+ @a = 1
+ end
+ end
+
+ def m *args
+ C.new.a(*args)
+ end
+
+ m()
+ begin
+ m(1)
+ rescue ArgumentError
+ 'ok'
+ end
+}
+
+assert_equal 'DC', %q{
+ $result = []
+
+ class C
+ def foo *args
+ $result << 'C'
+ end
+ end
+ class D
+ def foo *args
+ $result << 'D'
+ end
+ end
+
+ o1 = $o1 = C.new
+ o2 = $o2 = D.new
+
+ args = Object.new
+ def args.to_a
+ test1 $o2, nil
+ []
+ end
+ def test1 o, args
+ o.foo(*args)
+ end
+ test1 o1, args
+ $result.join
+}
+
+assert_equal 'DC', %q{
+ $result = []
+
+ class C
+ def foo *args
+ $result << 'C'
+ end
+ end
+ class D
+ def foo *args
+ $result << 'D'
+ end
+ end
+
+ o1 = $o1 = C.new
+ o2 = $o2 = D.new
+
+ block = Object.new
+ def block.to_proc
+ test2 $o2, %w(a, b, c), nil
+ Proc.new{}
+ end
+ def test2 o, args, block
+ o.foo(*args, &block)
+ end
+ test2 o1, [], block
+ $result.join
+}
diff --git a/bootstraptest/test_objectspace.rb b/bootstraptest/test_objectspace.rb
new file mode 100644
index 0000000000..63a8d99322
--- /dev/null
+++ b/bootstraptest/test_objectspace.rb
@@ -0,0 +1,55 @@
+assert_normal_exit %q{
+ eval("", TOPLEVEL_BINDING)
+ minobj = ObjectSpace.to_enum(:each_object).min_by {|a| a.object_id }
+ maxobj = ObjectSpace.to_enum(:each_object).max_by {|a| a.object_id }
+ (((minobj.object_id-100)..(minobj.object_id+100))+
+ ((maxobj.object_id-100)..(maxobj.object_id+100))).each {|id|
+ begin
+ o = ObjectSpace._id2ref(id)
+ rescue RangeError
+ next
+ end
+ o.inspect if defined?(o.inspect)
+ }
+}, '[ruby-dev:31911]'
+
+assert_normal_exit %q{
+ ary = (1..10).to_a
+ ary.permutation(2) {|x|
+ if x == [1,2]
+ ObjectSpace.each_object(String) {|s|
+ s.clear if !s.frozen? && (s.length == 40 || s.length == 80)
+ }
+ end
+ }
+}, '[ruby-dev:31982]'
+
+assert_normal_exit %q{
+ ary = (1..100).to_a
+ ary.permutation(2) {|x|
+ if x == [1,2]
+ ObjectSpace.each_object(Array) {|o| o.clear if o == ary && o.object_id != ary.object_id }
+ end
+ }
+}, '[ruby-dev:31985]'
+
+assert_normal_exit %q{
+ ObjectSpace.define_finalizer("") do
+ Thread::Mutex.new.lock
+ end
+}, '[ruby-dev:44049]'
+
+assert_normal_exit %q{
+ ObjectSpace.define_finalizer("") do
+ Thread.new {}
+ end
+}, '[ruby-core:37858]'
+
+assert_equal 'ok', %q{
+ objects_and_ids = 1000.times.map { o = Object.new; [o, o.object_id] }
+ objects_and_ids.each { |expected, id|
+ actual = ObjectSpace._id2ref(id)
+ raise "expected #{expected.inspect}, got #{actual.inspect}" unless actual.equal?(expected)
+ }
+ 'ok'
+}
diff --git a/bootstraptest/test_proc.rb b/bootstraptest/test_proc.rb
new file mode 100644
index 0000000000..637603243d
--- /dev/null
+++ b/bootstraptest/test_proc.rb
@@ -0,0 +1,470 @@
+assert_equal %q{[1, 2, 3]}, %q{
+ def getproc &b
+ b
+ end
+
+ def m
+ yield
+ end
+
+ m{
+ i = 1
+ m{
+ j = 2
+ m{
+ k = 3
+ getproc{
+ [i, j, k]
+ }
+ }
+ }
+ }.call
+}
+assert_equal %q{7}, %q{
+ def make_proc(&b)
+ b
+ end
+
+ def make_closure
+ a = 0
+ make_proc{
+ a+=1
+ }
+ end
+
+ cl = make_closure
+ cl.call + cl.call * cl.call
+}
+assert_equal %q{ok}, %q{
+ class C
+ def foo
+ :ok
+ end
+ end
+
+ def block
+ C.method(:new).to_proc
+ end
+ b = block()
+ b.call.foo
+}
+assert_equal %q{[0, 1, :last, 0, 2, :last]}, %q{
+ def proc &b
+ b
+ end
+
+ pr = []
+ proc{|i_b|
+ p3 = proc{|j_b|
+ pr << proc{|k_b|
+ [i_b, j_b, k_b]
+ }
+ }
+ p3.call(1)
+ p3.call(2)
+ }.call(0)
+
+ pr[0].call(:last).concat pr[1].call(:last)
+}
+assert_equal %q{12}, %q{
+ def iter
+ yield
+ end
+
+ def getproc &b
+ b
+ end
+
+ iter{
+ bvar = 3
+ getproc{
+ bvar2 = 4
+ bvar * bvar2
+ }
+ }.call
+}
+assert_equal %q{200}, %q{
+ def iter
+ yield
+ end
+
+ def getproc &b
+ b
+ end
+
+ loc1 = 0
+ pr1 = iter{
+ bl1 = 1
+ getproc{
+ loc1 += 1
+ bl1 += 1
+ loc1 + bl1
+ }
+ }
+
+ pr2 = iter{
+ bl1 = 1
+ getproc{
+ loc1 += 1
+ bl1 += 1
+ loc1 + bl1
+ }
+ }
+
+ pr1.call; pr2.call
+ pr1.call; pr2.call
+ pr1.call; pr2.call
+ (pr1.call + pr2.call) * loc1
+}
+assert_equal %q{[1, 2]}, %q{
+ def proc(&pr)
+ pr
+ end
+
+ def m
+ a = 1
+ m2{
+ a
+ }
+ end
+
+ def m2
+ b = 2
+ proc{
+ [yield, b]
+ }
+ end
+
+ pr = m
+ x = ['a', 1,2,3,4,5,6,7,8,9,0,
+ 1,2,3,4,5,6,7,8,9,0,
+ 1,2,3,4,5,6,7,8,9,0,
+ 1,2,3,4,5,6,7,8,9,0,
+ 1,2,3,4,5,6,7,8,9,0,]
+ pr.call
+}
+assert_equal %q{1}, %q{
+ def proc(&pr)
+ pr
+ end
+
+ def m
+ a = 1
+ m2{
+ a
+ }
+ end
+
+ def m2
+ b = 2
+ proc{
+ [yield, b]
+ }
+ 100000.times{|x|
+ "#{x}"
+ }
+ yield
+ end
+ m
+}
+assert_equal %q{[:C, :C]}, %q{
+ Const = :top
+ class C
+ Const = :C
+ $pr = proc{
+ (1..2).map{
+ Const
+ }
+ }
+ end
+ $pr.call
+}
+assert_equal %q{top}, %q{
+ Const = :top
+ class C
+ Const = :C
+ end
+ pr = proc{
+ Const
+ }
+ C.class_eval %q{
+ pr.call
+ }
+}
+assert_equal %q{1}, %q{
+ def m(&b)
+ b
+ end
+
+ m{|e_proctest| e_proctest}.call(1)
+}
+assert_equal %q{12}, %q{
+ def m(&b)
+ b
+ end
+
+ m{|e_proctest1, e_proctest2|
+ a = e_proctest1 * e_proctest2 * 2
+ a * 3
+ }.call(1, 2)
+}
+assert_equal %q{[[], [1], [1, 2], [1, 2, 3]]}, %q{
+ [
+ Proc.new{|*args| args}.call(),
+ Proc.new{|*args| args}.call(1),
+ Proc.new{|*args| args}.call(1, 2),
+ Proc.new{|*args| args}.call(1, 2, 3),
+ ]
+}
+assert_equal %q{[[nil, []], [1, []], [1, [2]], [1, [2, 3]]]}, %q{
+ [
+ Proc.new{|a, *b| [a, b]}.call(),
+ Proc.new{|a, *b| [a, b]}.call(1),
+ Proc.new{|a, *b| [a, b]}.call(1, 2),
+ Proc.new{|a, *b| [a, b]}.call(1, 2, 3),
+ ]
+}
+assert_equal %q{1}, %q{
+ def m(&b)
+ b
+ end
+ m{1}.call
+}
+assert_equal %q{3}, %q{
+ def m(&b)
+ b
+ end
+
+ m{
+ a = 1
+ a + 2
+ }.call
+}
+assert_equal %Q{ok\n}, %q{
+ class A; def get_block; proc {puts "ok"} end end
+ block = A.new.get_block
+ GC.start
+ block.call
+}, '[ruby-core:14885]'
+
+assert_equal 'ok', %q{
+ a = lambda {|x, y, &b| b }
+ b = a.curry[1]
+ if b.call(2){} == nil
+ :ng
+ else
+ :ok
+ end
+}, '[ruby-core:15551]'
+
+assert_equal 'ok', %q{
+ lambda {
+ break :ok
+ :ng
+ }.call
+}, '[ruby-dev:34646]'
+
+assert_equal %q{[:bar, :foo]}, %q{
+ def foo
+ klass = Class.new do
+ define_method(:bar) do
+ return :bar
+ end
+ end
+ [klass.new.bar, :foo]
+ end
+ foo
+}, "[ ruby-Bugs-19304 ]"
+
+assert_equal 'ok', %q{
+ $x = :ok
+ def def7(x, y)
+ x[y]
+ $x = :ng
+ end
+ def test_def7
+ def7(lambda {|x| x.call}, Proc.new {return})
+ $x = :ng
+ end
+ test_def7
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ lambda { a = lambda { return }; $x = :ng; a[]; $x = :ok }.call
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ lambda { a = lambda { break }; $x = :ng; a[]; $x = :ok }.call
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ def def8
+ $x = :ng
+ lambda { a = Proc.new { return }; a[]}.call
+ $x = :ok
+ end
+ def8
+ $x
+}, '[ruby-core:17164]'
+
+
+assert_equal 'ok', %q{
+ def def9
+ lambda {|a| $x = :ok; a[]; $x = :ng }.call(Proc.new { return })
+ $x = :ng
+ end
+ def9
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ def def10
+ $x = :ng
+ lambda { 1.times { return } }.call
+ $x = :ok
+ end
+ $x = :ok
+ def10
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ def def11
+ yield
+ end
+ begin
+ lambda { def11 { return } }.call
+ rescue LocalJumpError
+ :ng
+ else
+ :ok
+ end
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ def def12
+ b = Proc.new { $x = :ng; lambda { return }.call; $x = :ok }.call
+ end
+ def12
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ def m
+ pr = proc{
+ proc{
+ return :ok
+ }
+ }.call
+ pr.call
+ :ng
+ end
+ m()
+}
+
+assert_equal 'ok', %q{
+ class Foo
+ def call_it(&block)
+ p = Proc.new(&block)
+ p.call
+ end
+ end
+
+ def give_it
+ proc { :ok }
+ end
+
+ f = Foo.new
+ a_proc = give_it
+ f.call_it(&give_it())
+}, '[ruby-core:15711]'
+
+assert_equal 'foo!', %q{
+ class FooProc < Proc
+ def initialize
+ @foo = "foo!"
+ end
+
+ def bar
+ @foo
+ end
+ end
+
+ def bar
+ FooProc.new &lambda{
+ p 1
+ }
+ end
+
+ fp = bar(&lambda{
+ p 2
+ })
+
+ fp.bar
+}, 'Subclass of Proc'
+
+assert_equal 'ok', %q{
+ o = Object.new
+ def o.write(s); end
+ $stderr = o
+ at_exit{
+ print $!.message
+ }
+ raise "ok"
+}
+
+assert_equal 'ok', %q{
+ lambda do
+ class A
+ class B
+ proc{return :ng}.call
+ end
+ end
+ end.call
+ :ok
+}
+
+assert_equal 'ok', %q{
+ $proc = proc{return}
+ begin
+ lambda do
+ class A
+ class B
+ $proc.call
+ end
+ end
+ end.call
+ :ng
+ rescue LocalJumpError
+ :ok
+ end
+}
+
+assert_equal 'ok', %q{
+ def x
+ binding
+ end
+ b = x{|a| a }
+ b.eval('yield("ok")')
+}, '[Bug #5634]'
+
+assert_equal 'ok', %q{
+ def x
+ binding
+ end
+ eval("x { 'ok' }").eval "yield"
+}, '[Bug #5634]'
+
+assert_equal 'ok', %q{
+ def x
+ binding
+ end
+ def m
+ x{ 'ok' }
+ end
+ eval('yield', m)
+}, '[Bug #5634]'
+
diff --git a/bootstraptest/test_ractor.rb b/bootstraptest/test_ractor.rb
new file mode 100644
index 0000000000..67e66b03ee
--- /dev/null
+++ b/bootstraptest/test_ractor.rb
@@ -0,0 +1,1628 @@
+# Ractor.current returns a current ractor
+assert_equal 'Ractor', %q{
+ Ractor.current.class
+}
+
+# Ractor.new returns new Ractor
+assert_equal 'Ractor', %q{
+ Ractor.new{}.class
+}
+
+# Ractor.allocate is not supported
+assert_equal "[:ok, :ok]", %q{
+ rs = []
+ begin
+ Ractor.allocate
+ rescue => e
+ rs << :ok if e.message == 'allocator undefined for Ractor'
+ end
+
+ begin
+ Ractor.new{}.dup
+ rescue
+ rs << :ok if e.message == 'allocator undefined for Ractor'
+ end
+
+ rs
+}
+
+# A Ractor can have a name
+assert_equal 'test-name', %q{
+ r = Ractor.new name: 'test-name' do
+ end
+ r.name
+}
+
+# If Ractor doesn't have a name, Ractor#name returns nil.
+assert_equal 'nil', %q{
+ r = Ractor.new do
+ end
+ r.name.inspect
+}
+
+# Raises exceptions if initialize with an invalid name
+assert_equal 'ok', %q{
+ begin
+ r = Ractor.new(name: [{}]) {}
+ rescue TypeError => e
+ 'ok'
+ end
+}
+
+# Ractor.new must call with a block
+assert_equal "must be called with a block", %q{
+ begin
+ Ractor.new
+ rescue ArgumentError => e
+ e.message
+ end
+}
+
+# Ractor#inspect
+# Return only id and status for main ractor
+assert_equal "#<Ractor:#1 running>", %q{
+ Ractor.current.inspect
+}
+
+# Return id, loc, and status for no-name ractor
+assert_match /^#<Ractor:#([^ ]*?) .+:[0-9]+ terminated>$/, %q{
+ r = Ractor.new { '' }
+ r.take
+ sleep 0.1 until r.inspect =~ /terminated/
+ r.inspect
+}
+
+# Return id, name, loc, and status for named ractor
+assert_match /^#<Ractor:#([^ ]*?) Test Ractor .+:[0-9]+ terminated>$/, %q{
+ r = Ractor.new(name: 'Test Ractor') { '' }
+ r.take
+ sleep 0.1 until r.inspect =~ /terminated/
+ r.inspect
+}
+
+# A return value of a Ractor block will be a message from the Ractor.
+assert_equal 'ok', %q{
+ # join
+ r = Ractor.new do
+ 'ok'
+ end
+ r.take
+}
+
+# Passed arguments to Ractor.new will be a block parameter
+# The values are passed with Ractor-communication pass.
+assert_equal 'ok', %q{
+ # ping-pong with arg
+ r = Ractor.new 'ok' do |msg|
+ msg
+ end
+ r.take
+}
+
+# Pass multiple arguments to Ractor.new
+assert_equal 'ok', %q{
+ # ping-pong with two args
+ r = Ractor.new 'ping', 'pong' do |msg, msg2|
+ [msg, msg2]
+ end
+ 'ok' if r.take == ['ping', 'pong']
+}
+
+# Ractor#send passes an object with copy to a Ractor
+# and Ractor.receive in the Ractor block can receive the passed value.
+assert_equal 'ok', %q{
+ r = Ractor.new do
+ msg = Ractor.receive
+ end
+ r.send 'ok'
+ r.take
+}
+
+# Ractor#receive_if can filter the message
+assert_equal '[2, 3, 1]', %q{
+ r = Ractor.new Ractor.current do |main|
+ main << 1
+ main << 2
+ main << 3
+ end
+ a = []
+ a << Ractor.receive_if{|msg| msg == 2}
+ a << Ractor.receive_if{|msg| msg == 3}
+ a << Ractor.receive
+}
+
+# Ractor#receive_if with break
+assert_equal '[2, [1, :break], 3]', %q{
+ r = Ractor.new Ractor.current do |main|
+ main << 1
+ main << 2
+ main << 3
+ end
+
+ a = []
+ a << Ractor.receive_if{|msg| msg == 2}
+ a << Ractor.receive_if{|msg| break [msg, :break]}
+ a << Ractor.receive
+}
+
+# Ractor#receive_if can't be called recursively
+assert_equal '[[:e1, 1], [:e2, 2]]', %q{
+ r = Ractor.new Ractor.current do |main|
+ main << 1
+ main << 2
+ main << 3
+ end
+
+ a = []
+
+ Ractor.receive_if do |msg|
+ begin
+ Ractor.receive
+ rescue Ractor::Error
+ a << [:e1, msg]
+ end
+ true # delete 1 from queue
+ end
+
+ Ractor.receive_if do |msg|
+ begin
+ Ractor.receive_if{}
+ rescue Ractor::Error
+ a << [:e2, msg]
+ end
+ true # delete 2 from queue
+ end
+
+ a #
+}
+
+# dtoa race condition
+assert_equal '[:ok, :ok, :ok]', %q{
+ n = 3
+ n.times.map{
+ Ractor.new{
+ 10_000.times{ rand.to_s }
+ :ok
+ }
+ }.map(&:take)
+}
+
+# Ractor.make_shareable issue for locals in proc [Bug #18023]
+assert_equal '[:a, :b, :c, :d, :e]', %q{
+ v1, v2, v3, v4, v5 = :a, :b, :c, :d, :e
+ closure = Ractor.current.instance_eval{ Proc.new { [v1, v2, v3, v4, v5] } }
+
+ Ractor.make_shareable(closure).call
+}
+
+# Ractor.make_shareable issue for locals in proc [Bug #18023]
+assert_equal '[:a, :b, :c, :d, :e, :f, :g]', %q{
+ a = :a
+ closure = Ractor.current.instance_eval do
+ -> {
+ b, c, d = :b, :c, :d
+ -> {
+ e, f, g = :e, :f, :g
+ -> { [a, b, c, d, e, f, g] }
+ }.call
+ }.call
+ end
+
+ Ractor.make_shareable(closure).call
+}
+
+# Now autoload in non-main Ractor is not supported
+assert_equal 'ok', %q{
+ autoload :Foo, 'foo.rb'
+ r = Ractor.new do
+ p Foo
+ rescue Ractor::UnsafeError
+ :ok
+ end
+ r.take
+}
+
+###
+###
+# Ractor still has several memory corruption so skip huge number of tests
+if ENV['GITHUB_WORKFLOW'] &&
+ ENV['GITHUB_WORKFLOW'] == 'Compilations'
+ # ignore the follow
+else
+
+# Ractor.select(*ractors) receives a values from a ractors.
+# It is similar to select(2) and Go's select syntax.
+# The return value is [ch, received_value]
+assert_equal 'ok', %q{
+ # select 1
+ r1 = Ractor.new{'r1'}
+ r, obj = Ractor.select(r1)
+ 'ok' if r == r1 and obj == 'r1'
+}
+
+# Ractor.select from two ractors.
+assert_equal '["r1", "r2"]', %q{
+ # select 2
+ r1 = Ractor.new{'r1'}
+ r2 = Ractor.new{'r2'}
+ rs = [r1, r2]
+ as = []
+ r, obj = Ractor.select(*rs)
+ rs.delete(r)
+ as << obj
+ r, obj = Ractor.select(*rs)
+ as << obj
+ as.sort #=> ["r1", "r2"]
+}
+
+# Ractor.select from multiple ractors.
+assert_equal 30.times.map { 'ok' }.to_s, %q{
+ def test n
+ rs = (1..n).map do |i|
+ Ractor.new(i) do |i|
+ "r#{i}"
+ end
+ end
+ as = []
+ all_rs = rs.dup
+
+ n.times{
+ r, obj = Ractor.select(*rs)
+ as << [r, obj]
+ rs.delete(r)
+ }
+
+ if as.map{|r, o| r.object_id}.sort == all_rs.map{|r| r.object_id}.sort &&
+ as.map{|r, o| o}.sort == (1..n).map{|i| "r#{i}"}.sort
+ 'ok'
+ else
+ 'ng'
+ end
+ end
+
+ 30.times.map{|i|
+ test i
+ }
+} unless ENV['RUN_OPTS'] =~ /--mjit-call-threshold=5/ || # This always fails with --mjit-wait --mjit-call-threshold=5
+ (ENV.key?('TRAVIS') && ENV['TRAVIS_CPU_ARCH'] == 'arm64') || # https://bugs.ruby-lang.org/issues/17878
+ true # too flaky everywhere http://ci.rvm.jp/results/trunk@ruby-sp1/4321096
+
+# Exception for empty select
+assert_match /specify at least one ractor/, %q{
+ begin
+ Ractor.select
+ rescue ArgumentError => e
+ e.message
+ end
+}
+
+# Outgoing port of a ractor will be closed when the Ractor is terminated.
+assert_equal 'ok', %q{
+ r = Ractor.new do
+ 'finish'
+ end
+
+ r.take
+ sleep 0.1 until r.inspect =~ /terminated/
+
+ begin
+ o = r.take
+ rescue Ractor::ClosedError
+ 'ok'
+ else
+ "ng: #{o}"
+ end
+}
+
+# Raise Ractor::ClosedError when try to send into a terminated ractor
+assert_equal 'ok', %q{
+ r = Ractor.new do
+ end
+
+ r.take # closed
+ sleep 0.1 until r.inspect =~ /terminated/
+
+ begin
+ r.send(1)
+ rescue Ractor::ClosedError
+ 'ok'
+ else
+ 'ng'
+ end
+}
+
+# Raise Ractor::ClosedError when try to send into a closed actor
+assert_equal 'ok', %q{
+ r = Ractor.new { Ractor.receive }
+ r.close_incoming
+
+ begin
+ r.send(1)
+ rescue Ractor::ClosedError
+ 'ok'
+ else
+ 'ng'
+ end
+}
+
+# Raise Ractor::ClosedError when try to take from closed actor
+assert_equal 'ok', %q{
+ r = Ractor.new do
+ Ractor.yield 1
+ Ractor.receive
+ end
+
+ r.close_outgoing
+ begin
+ r.take
+ rescue Ractor::ClosedError
+ 'ok'
+ else
+ 'ng'
+ end
+}
+
+# Can mix with Thread#interrupt and Ractor#take [Bug #17366]
+assert_equal 'err', %q{
+ Ractor.new{
+ t = Thread.current
+ begin
+ Thread.new{ t.raise "err" }.join
+ rescue => e
+ e.message
+ end
+ }.take
+}
+
+# Killed Ractor's thread yields nil
+assert_equal 'nil', %q{
+ Ractor.new{
+ t = Thread.current
+ Thread.new{ t.kill }.join
+ }.take.inspect #=> nil
+}
+
+# Ractor.yield raises Ractor::ClosedError when outgoing port is closed.
+assert_equal 'ok', %q{
+ r = Ractor.new Ractor.current do |main|
+ Ractor.receive
+ main << true
+ Ractor.yield 1
+ end
+
+ r.close_outgoing
+ r << true
+ Ractor.receive
+
+ begin
+ r.take
+ rescue Ractor::ClosedError
+ 'ok'
+ else
+ 'ng'
+ end
+}
+
+# Raise Ractor::ClosedError when try to send into a ractor with closed incoming port
+assert_equal 'ok', %q{
+ r = Ractor.new { Ractor.receive }
+ r.close_incoming
+
+ begin
+ r.send(1)
+ rescue Ractor::ClosedError
+ 'ok'
+ else
+ 'ng'
+ end
+}
+
+# A ractor with closed incoming port still can send messages out
+assert_equal '[1, 2]', %q{
+ r = Ractor.new do
+ Ractor.yield 1
+ 2
+ end
+ r.close_incoming
+
+ [r.take, r.take]
+}
+
+# Raise Ractor::ClosedError when try to take from a ractor with closed outgoing port
+assert_equal 'ok', %q{
+ r = Ractor.new do
+ Ractor.yield 1
+ Ractor.receive
+ end
+
+ sleep 0.01 # wait for Ractor.yield in r
+ r.close_outgoing
+ begin
+ r.take
+ rescue Ractor::ClosedError
+ 'ok'
+ else
+ 'ng'
+ end
+}
+
+# A ractor with closed outgoing port still can receive messages from incoming port
+assert_equal 'ok', %q{
+ r = Ractor.new do
+ Ractor.receive
+ end
+
+ r.close_outgoing
+ begin
+ r.send(1)
+ rescue Ractor::ClosedError
+ 'ng'
+ else
+ 'ok'
+ end
+}
+
+# Ractor.main returns main ractor
+assert_equal 'true', %q{
+ Ractor.new{
+ Ractor.main
+ }.take == Ractor.current
+}
+
+# a ractor with closed outgoing port should terminate
+assert_equal 'ok', %q{
+ Ractor.new do
+ close_outgoing
+ end
+
+ true until Ractor.count == 1
+ :ok
+}
+
+# multiple Ractors can receive (wait) from one Ractor
+assert_equal '[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]', %q{
+ pipe = Ractor.new do
+ loop do
+ Ractor.yield Ractor.receive
+ end
+ end
+
+ RN = 10
+ rs = RN.times.map{|i|
+ Ractor.new pipe, i do |pipe, i|
+ msg = pipe.take
+ msg # ping-pong
+ end
+ }
+ RN.times{|i|
+ pipe << i
+ }
+ RN.times.map{
+ r, n = Ractor.select(*rs)
+ rs.delete r
+ n
+ }.sort
+} unless /mswin/ =~ RUBY_PLATFORM # randomly hangs on mswin https://github.com/ruby/ruby/actions/runs/3753871445/jobs/6377551069#step:20:131
+
+# Ractor.select also support multiple take, receive and yield
+assert_equal '[true, true, true]', %q{
+ RN = 10
+ CR = Ractor.current
+
+ rs = (1..RN).map{
+ Ractor.new do
+ CR.send 'send' + CR.take #=> 'sendyield'
+ 'take'
+ end
+ }
+ received = []
+ take = []
+ yielded = []
+ until rs.empty?
+ r, v = Ractor.select(CR, *rs, yield_value: 'yield')
+ case r
+ when :receive
+ received << v
+ when :yield
+ yielded << v
+ else
+ take << v
+ rs.delete r
+ end
+ end
+ [received.all?('sendyield'), yielded.all?(nil), take.all?('take')]
+}
+
+# multiple Ractors can send to one Ractor
+assert_equal '[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]', %q{
+ pipe = Ractor.new do
+ loop do
+ Ractor.yield Ractor.receive
+ end
+ end
+
+ RN = 10
+ RN.times.map{|i|
+ Ractor.new pipe, i do |pipe, i|
+ pipe << i
+ end
+ }
+ RN.times.map{
+ pipe.take
+ }.sort
+}
+
+# an exception in a Ractor will be re-raised at Ractor#receive
+assert_equal '[RuntimeError, "ok", true]', %q{
+ r = Ractor.new do
+ raise 'ok' # exception will be transferred receiver
+ end
+ begin
+ r.take
+ rescue Ractor::RemoteError => e
+ [e.cause.class, #=> RuntimeError
+ e.cause.message, #=> 'ok'
+ e.ractor == r] #=> true
+ end
+}
+
+# threads in a ractor will killed
+assert_equal '{:ok=>3}', %q{
+ Ractor.new Ractor.current do |main|
+ q = Thread::Queue.new
+ Thread.new do
+ q << true
+ loop{}
+ ensure
+ main << :ok
+ end
+
+ Thread.new do
+ q << true
+ while true
+ end
+ ensure
+ main << :ok
+ end
+
+ Thread.new do
+ q << true
+ sleep 1
+ ensure
+ main << :ok
+ end
+
+ # wait for the start of all threads
+ 3.times{q.pop}
+ end
+
+ 3.times.map{Ractor.receive}.tally
+}
+
+# unshareable object are copied
+assert_equal 'false', %q{
+ obj = 'str'.dup
+ r = Ractor.new obj do |msg|
+ msg.object_id
+ end
+
+ obj.object_id == r.take
+}
+
+# To copy the object, now Marshal#dump is used
+assert_equal "allocator undefined for Thread", %q{
+ obj = Thread.new{}
+ begin
+ r = Ractor.new obj do |msg|
+ msg
+ end
+ rescue TypeError => e
+ e.message #=> no _dump_data is defined for class Thread
+ else
+ 'ng'
+ end
+}
+
+# send shareable and unshareable objects
+assert_equal "ok", %q{
+ echo_ractor = Ractor.new do
+ loop do
+ v = Ractor.receive
+ Ractor.yield v
+ end
+ end
+
+ class C; end
+ module M; end
+ S = Struct.new(:a, :b, :c, :d)
+
+ shareable_objects = [
+ true,
+ false,
+ nil,
+ 1,
+ 1.1, # Float
+ 1+2r, # Rational
+ 3+4i, # Complex
+ 2**128, # Bignum
+ :sym, # Symbol
+ 'xyzzy'.to_sym, # dynamic symbol
+ 'frozen'.freeze, # frozen String
+ /regexp/, # regexp literal
+ /reg{true}exp/.freeze, # frozen dregexp
+ [1, 2].freeze, # frozen Array which only refers to shareable
+ {a: 1}.freeze, # frozen Hash which only refers to shareable
+ [{a: 1}.freeze, 'str'.freeze].freeze, # nested frozen container
+ S.new(1, 2).freeze, # frozen Struct
+ S.new(1, 2, 3, 4).freeze, # frozen Struct
+ (1..2), # Range on Struct
+ (1..), # Range on Struct
+ (..1), # Range on Struct
+ C, # class
+ M, # module
+ Ractor.current, # Ractor
+ ]
+
+ unshareable_objects = [
+ 'mutable str'.dup,
+ [:array],
+ {hash: true},
+ S.new(1, 2),
+ S.new(1, 2, 3, 4),
+ S.new("a", 2).freeze, # frozen, but refers to an unshareable object
+ ]
+
+ results = []
+
+ shareable_objects.map{|o|
+ echo_ractor << o
+ o2 = echo_ractor.take
+ results << "#{o} is copied" unless o.object_id == o2.object_id
+ }
+
+ unshareable_objects.map{|o|
+ echo_ractor << o
+ o2 = echo_ractor.take
+ results << "#{o.inspect} is not copied" if o.object_id == o2.object_id
+ }
+
+ if results.empty?
+ :ok
+ else
+ results.inspect
+ end
+}
+
+# frozen Objects are shareable
+assert_equal [false, true, false].inspect, %q{
+ class C
+ def initialize freeze
+ @a = 1
+ @b = :sym
+ @c = 'frozen_str'
+ @c.freeze if freeze
+ @d = true
+ end
+ end
+
+ def check obj1
+ obj2 = Ractor.new obj1 do |obj|
+ obj
+ end.take
+
+ obj1.object_id == obj2.object_id
+ end
+
+ results = []
+ results << check(C.new(true)) # false
+ results << check(C.new(true).freeze) # true
+ results << check(C.new(false).freeze) # false
+}
+
+# move example2: String
+# touching moved object causes an error
+assert_equal 'hello world', %q{
+ # move
+ r = Ractor.new do
+ obj = Ractor.receive
+ obj << ' world'
+ end
+
+ str = 'hello'
+ r.send str, move: true
+ modified = r.take
+
+ begin
+ str << ' exception' # raise Ractor::MovedError
+ rescue Ractor::MovedError
+ modified #=> 'hello world'
+ else
+ raise 'unreachable'
+ end
+}
+
+# move example2: Array
+assert_equal '[0, 1]', %q{
+ r = Ractor.new do
+ ary = Ractor.receive
+ ary << 1
+ end
+
+ a1 = [0]
+ r.send a1, move: true
+ a2 = r.take
+ begin
+ a1 << 2 # raise Ractor::MovedError
+ rescue Ractor::MovedError
+ a2.inspect
+ end
+}
+
+# move with yield
+assert_equal 'hello', %q{
+ r = Ractor.new do
+ Thread.current.report_on_exception = false
+ obj = 'hello'
+ Ractor.yield obj, move: true
+ obj << 'world'
+ end
+
+ str = r.take
+ begin
+ r.take
+ rescue Ractor::RemoteError
+ str #=> "hello"
+ end
+}
+
+# yield/move should not make moved object when the yield is not succeeded
+assert_equal '"str"', %q{
+ R = Ractor.new{}
+ M = Ractor.current
+ r = Ractor.new do
+ s = 'str'
+ selected_r, v = Ractor.select R, yield_value: s, move: true
+ raise if selected_r != R # taken from R
+ M.send s.inspect # s should not be a moved object
+ end
+
+ Ractor.receive
+}
+
+# yield/move can fail
+assert_equal "allocator undefined for Thread", %q{
+ r = Ractor.new do
+ obj = Thread.new{}
+ Ractor.yield obj
+ rescue => e
+ e.message
+ end
+ r.take
+}
+
+# Access to global-variables are prohibited
+assert_equal 'can not access global variables $gv from non-main Ractors', %q{
+ $gv = 1
+ r = Ractor.new do
+ $gv
+ end
+
+ begin
+ r.take
+ rescue Ractor::RemoteError => e
+ e.cause.message
+ end
+}
+
+# Access to global-variables are prohibited
+assert_equal 'can not access global variables $gv from non-main Ractors', %q{
+ r = Ractor.new do
+ $gv = 1
+ end
+
+ begin
+ r.take
+ rescue Ractor::RemoteError => e
+ e.cause.message
+ end
+}
+
+# $stdin,out,err is Ractor local, but shared fds
+assert_equal 'ok', %q{
+ r = Ractor.new do
+ [$stdin, $stdout, $stderr].map{|io|
+ [io.object_id, io.fileno]
+ }
+ end
+
+ [$stdin, $stdout, $stderr].zip(r.take){|io, (oid, fno)|
+ raise "should not be different object" if io.object_id == oid
+ raise "fd should be same" unless io.fileno == fno
+ }
+ 'ok'
+}
+
+# $stdin,out,err belong to Ractor
+assert_equal 'ok', %q{
+ r = Ractor.new do
+ $stdin.itself
+ $stdout.itself
+ $stderr.itself
+ 'ok'
+ end
+
+ r.take
+}
+
+# $DEBUG, $VERBOSE are Ractor local
+assert_equal 'true', %q{
+ $DEBUG = true
+ $VERBOSE = true
+
+ def ractor_local_globals
+ /a(b)(c)d/ =~ 'abcd' # for $~
+ `echo foo` unless /solaris/ =~ RUBY_PLATFORM
+
+ {
+ # ractor-local (derived from created ractor): debug
+ '$DEBUG' => $DEBUG,
+ '$-d' => $-d,
+
+ # ractor-local (derived from created ractor): verbose
+ '$VERBOSE' => $VERBOSE,
+ '$-w' => $-w,
+ '$-W' => $-W,
+ '$-v' => $-v,
+
+ # process-local (readonly): other commandline parameters
+ '$-p' => $-p,
+ '$-l' => $-l,
+ '$-a' => $-a,
+
+ # process-local (readonly): getpid
+ '$$' => $$,
+
+ # thread local: process result
+ '$?' => $?,
+
+ # scope local: match
+ '$~' => $~.inspect,
+ '$&' => $&,
+ '$`' => $`,
+ '$\'' => $',
+ '$+' => $+,
+ '$1' => $1,
+
+ # scope local: last line
+ '$_' => $_,
+
+ # scope local: last backtrace
+ '$@' => $@,
+ '$!' => $!,
+
+ # ractor local: stdin, out, err
+ '$stdin' => $stdin.inspect,
+ '$stdout' => $stdout.inspect,
+ '$stderr' => $stderr.inspect,
+ }
+ end
+
+ h = Ractor.new do
+ ractor_local_globals
+ end.take
+ ractor_local_globals == h #=> true
+}
+
+# selfs are different objects
+assert_equal 'false', %q{
+ r = Ractor.new do
+ self.object_id
+ end
+ r.take == self.object_id #=> false
+}
+
+# self is a Ractor instance
+assert_equal 'true', %q{
+ r = Ractor.new do
+ self.object_id
+ end
+ r.object_id == r.take #=> true
+}
+
+# given block Proc will be isolated, so can not access outer variables.
+assert_equal 'ArgumentError', %q{
+ begin
+ a = true
+ r = Ractor.new do
+ a
+ end
+ rescue => e
+ e.class
+ end
+}
+
+# ivar in shareable-objects are not allowed to access from non-main Ractor
+assert_equal "can not get unshareable values from instance variables of classes/modules from non-main Ractors", %q{
+ class C
+ @iv = 'str'
+ end
+
+ r = Ractor.new do
+ class C
+ p @iv
+ end
+ end
+
+
+ begin
+ r.take
+ rescue Ractor::RemoteError => e
+ e.cause.message
+ end
+}
+
+# ivar in shareable-objects are not allowed to access from non-main Ractor
+assert_equal 'can not access instance variables of shareable objects from non-main Ractors', %q{
+ shared = Ractor.new{}
+ shared.instance_variable_set(:@iv, 'str')
+
+ r = Ractor.new shared do |shared|
+ p shared.instance_variable_get(:@iv)
+ end
+
+ begin
+ r.take
+ rescue Ractor::RemoteError => e
+ e.cause.message
+ end
+}
+
+# ivar in shareable-objects are not allowed to access from non-main Ractor, by @iv (get)
+assert_equal 'can not access instance variables of shareable objects from non-main Ractors', %q{
+ class Ractor
+ def setup
+ @foo = ''
+ end
+
+ def foo
+ @foo
+ end
+ end
+
+ shared = Ractor.new{}
+ shared.setup
+
+ r = Ractor.new shared do |shared|
+ p shared.foo
+ end
+
+ begin
+ r.take
+ rescue Ractor::RemoteError => e
+ e.cause.message
+ end
+}
+
+# ivar in shareable-objects are not allowed to access from non-main Ractor, by @iv (set)
+assert_equal 'can not access instance variables of shareable objects from non-main Ractors', %q{
+ class Ractor
+ def setup
+ @foo = ''
+ end
+ end
+
+ shared = Ractor.new{}
+
+ r = Ractor.new shared do |shared|
+ p shared.setup
+ end
+
+ begin
+ r.take
+ rescue Ractor::RemoteError => e
+ e.cause.message
+ end
+}
+
+# But a shareable object is frozen, it is allowed to access ivars from non-main Ractor
+assert_equal '11', %q{
+ [Object.new, [], ].map{|obj|
+ obj.instance_variable_set('@a', 1)
+ Ractor.make_shareable obj = obj.freeze
+
+ Ractor.new obj do |obj|
+ obj.instance_variable_get('@a')
+ end.take.to_s
+ }.join
+}
+
+# and instance variables of classes/modules are accessible if they refer shareable objects
+assert_equal '333', %q{
+ class C
+ @int = 1
+ @str = '-1000'.dup
+ @fstr = '100'.freeze
+
+ def self.int = @int
+ def self.str = @str
+ def self.fstr = @fstr
+ end
+
+ module M
+ @int = 2
+ @str = '-2000'.dup
+ @fstr = '200'.freeze
+
+ def self.int = @int
+ def self.str = @str
+ def self.fstr = @fstr
+ end
+
+ a = Ractor.new{ C.int }.take
+ b = Ractor.new do
+ C.str.to_i
+ rescue Ractor::IsolationError
+ 10
+ end.take
+ c = Ractor.new do
+ C.fstr.to_i
+ end.take
+
+ d = Ractor.new{ M.int }.take
+ e = Ractor.new do
+ M.str.to_i
+ rescue Ractor::IsolationError
+ 20
+ end.take
+ f = Ractor.new do
+ M.fstr.to_i
+ end.take
+
+
+ # 1 + 10 + 100 + 2 + 20 + 200
+ a + b + c + d + e + f
+}
+
+# cvar in shareable-objects are not allowed to access from non-main Ractor
+assert_equal 'can not access class variables from non-main Ractors', %q{
+ class C
+ @@cv = 'str'
+ end
+
+ r = Ractor.new do
+ class C
+ p @@cv
+ end
+ end
+
+ begin
+ r.take
+ rescue Ractor::RemoteError => e
+ e.cause.message
+ end
+}
+
+# also cached cvar in shareable-objects are not allowed to access from non-main Ractor
+assert_equal 'can not access class variables from non-main Ractors', %q{
+ class C
+ @@cv = 'str'
+ def self.cv
+ @@cv
+ end
+ end
+
+ C.cv # cache
+
+ r = Ractor.new do
+ C.cv
+ end
+
+ begin
+ r.take
+ rescue Ractor::RemoteError => e
+ e.cause.message
+ end
+}
+
+# Getting non-shareable objects via constants by other Ractors is not allowed
+assert_equal 'can not access non-shareable objects in constant C::CONST by non-main Ractor.', %q{
+ class C
+ CONST = 'str'
+ end
+ r = Ractor.new do
+ C::CONST
+ end
+ begin
+ r.take
+ rescue Ractor::RemoteError => e
+ e.cause.message
+ end
+}
+
+# Constant cache should care about non-sharable constants
+assert_equal "can not access non-shareable objects in constant Object::STR by non-main Ractor.", %q{
+ STR = "hello"
+ def str; STR; end
+ s = str() # fill const cache
+ begin
+ Ractor.new{ str() }.take
+ rescue Ractor::RemoteError => e
+ e.cause.message
+ end
+}
+
+# Setting non-shareable objects into constants by other Ractors is not allowed
+assert_equal 'can not set constants with non-shareable objects by non-main Ractors', %q{
+ class C
+ end
+ r = Ractor.new do
+ C::CONST = 'str'
+ end
+ begin
+ r.take
+ rescue Ractor::RemoteError => e
+ e.cause.message
+ end
+}
+
+# define_method is not allowed
+assert_equal "defined with an un-shareable Proc in a different Ractor", %q{
+ str = "foo"
+ define_method(:buggy){|i| str << "#{i}"}
+ begin
+ Ractor.new{buggy(10)}.take
+ rescue => e
+ e.cause.message
+ end
+}
+
+# Immutable Array and Hash are shareable, so it can be shared with constants
+assert_equal '[1000, 3]', %q{
+ A = Array.new(1000).freeze # [nil, ...]
+ H = {a: 1, b: 2, c: 3}.freeze
+
+ Ractor.new{ [A.size, H.size] }.take
+}
+
+# Ractor.count
+assert_equal '[1, 4, 3, 2, 1]', %q{
+ counts = []
+ counts << Ractor.count
+ ractors = (1..3).map { Ractor.new { Ractor.receive } }
+ counts << Ractor.count
+
+ ractors[0].send('End 0').take
+ sleep 0.1 until ractors[0].inspect =~ /terminated/
+ counts << Ractor.count
+
+ ractors[1].send('End 1').take
+ sleep 0.1 until ractors[1].inspect =~ /terminated/
+ counts << Ractor.count
+
+ ractors[2].send('End 2').take
+ sleep 0.1 until ractors[2].inspect =~ /terminated/
+ counts << Ractor.count
+
+ counts.inspect
+}
+
+# ObjectSpace.each_object can not handle unshareable objects with Ractors
+assert_equal '0', %q{
+ Ractor.new{
+ n = 0
+ ObjectSpace.each_object{|o| n += 1 unless Ractor.shareable?(o)}
+ n
+ }.take
+}
+
+# ObjectSpace._id2ref can not handle unshareable objects with Ractors
+assert_equal 'ok', %q{
+ s = 'hello'
+
+ Ractor.new s.object_id do |id ;s|
+ begin
+ s = ObjectSpace._id2ref(id)
+ rescue => e
+ :ok
+ end
+ end.take
+}
+
+# Ractor.make_shareable(obj)
+assert_equal 'true', %q{
+ class C
+ def initialize
+ @a = 'foo'
+ @b = 'bar'
+ end
+
+ def freeze
+ @c = [:freeze_called]
+ super
+ end
+
+ attr_reader :a, :b, :c
+ end
+ S = Struct.new(:s1, :s2)
+ str = "hello"
+ str.instance_variable_set("@iv", "hello")
+ /a/ =~ 'a'
+ m = $~
+ class N < Numeric
+ def /(other)
+ 1
+ end
+ end
+ ary = []; ary << ary
+
+ a = [[1, ['2', '3']],
+ {Object.new => "hello"},
+ C.new,
+ S.new("x", "y"),
+ ("a".."b"),
+ str,
+ ary, # cycle
+ /regexp/,
+ /#{'r'.upcase}/,
+ m,
+ Complex(N.new,0),
+ Rational(N.new,0),
+ true,
+ false,
+ nil,
+ 1, 1.2, 1+3r, 1+4i, # Numeric
+ ]
+ Ractor.make_shareable(a)
+
+ # check all frozen
+ a.each{|o|
+ raise o.inspect unless o.frozen?
+
+ case o
+ when C
+ raise o.a.inspect unless o.a.frozen?
+ raise o.b.inspect unless o.b.frozen?
+ raise o.c.inspect unless o.c.frozen? && o.c == [:freeze_called]
+ when Rational
+ raise o.numerator.inspect unless o.numerator.frozen?
+ when Complex
+ raise o.real.inspect unless o.real.frozen?
+ when Array
+ if o[0] == 1
+ raise o[1][1].inspect unless o[1][1].frozen?
+ end
+ when Hash
+ o.each{|k, v|
+ raise k.inspect unless k.frozen?
+ raise v.inspect unless v.frozen?
+ }
+ end
+ }
+
+ Ractor.shareable?(a)
+}
+
+# Ractor.make_shareable(obj) doesn't freeze shareable objects
+assert_equal 'true', %q{
+ r = Ractor.new{}
+ Ractor.make_shareable(a = [r])
+ [a.frozen?, a[0].frozen?] == [true, false]
+}
+
+# Ractor.make_shareable(a_proc) makes a proc shareable.
+assert_equal 'true', %q{
+ a = [1, [2, 3], {a: "4"}]
+
+ pr = Ractor.current.instance_eval do
+ Proc.new do
+ a
+ end
+ end
+
+ Ractor.make_shareable(a) # referred value should be shareable
+ Ractor.make_shareable(pr)
+ Ractor.shareable?(pr)
+}
+
+# Ractor.shareable?(recursive_objects)
+assert_equal '[false, false]', %q{
+ y = []
+ x = [y, {}].freeze
+ y << x
+ y.freeze
+ [Ractor.shareable?(x), Ractor.shareable?(y)]
+}
+
+# Ractor.make_shareable(recursive_objects)
+assert_equal '[:ok, false, false]', %q{
+ o = Object.new
+ def o.freeze; raise; end
+ y = []
+ x = [y, o].freeze
+ y << x
+ y.freeze
+ [(Ractor.make_shareable(x) rescue :ok), Ractor.shareable?(x), Ractor.shareable?(y)]
+}
+
+# Ractor.make_shareable with Class/Module
+assert_equal '[C, M]', %q{
+ class C; end
+ module M; end
+
+ Ractor.make_shareable(ary = [C, M])
+}
+
+# define_method() can invoke different Ractor's proc if the proc is shareable.
+assert_equal '1', %q{
+ class C
+ a = 1
+ define_method "foo", Ractor.make_shareable(Proc.new{ a })
+ a = 2
+ end
+
+ Ractor.new{ C.new.foo }.take
+}
+
+# Ractor.make_shareable(a_proc) makes a proc shareable.
+assert_equal 'can not make a Proc shareable because it accesses outer variables (a).', %q{
+ a = b = nil
+ pr = Ractor.current.instance_eval do
+ Proc.new do
+ c = b # assign to a is okay because c is block local variable
+ # reading b is okay
+ a = b # assign to a is not allowed #=> Ractor::Error
+ end
+ end
+
+ begin
+ Ractor.make_shareable(pr)
+ rescue => e
+ e.message
+ end
+}
+
+# Ractor.make_shareable(obj, copy: true) makes copied shareable object.
+assert_equal '[false, false, true, true]', %q{
+ r = []
+ o1 = [1, 2, ["3"]]
+
+ o2 = Ractor.make_shareable(o1, copy: true)
+ r << Ractor.shareable?(o1) # false
+ r << (o1.object_id == o2.object_id) # false
+
+ o3 = Ractor.make_shareable(o1)
+ r << Ractor.shareable?(o1) # true
+ r << (o1.object_id == o3.object_id) # false
+ r
+}
+
+# TracePoint with normal Proc should be Ractor local
+assert_equal '[4, 8]', %q{
+ rs = []
+ TracePoint.new(:line){|tp| rs << tp.lineno if tp.path == __FILE__}.enable do
+ Ractor.new{ # line 4
+ a = 1
+ b = 2
+ }.take
+ c = 3 # line 8
+ end
+ rs
+}
+
+# Ractor deep copies frozen objects (ary)
+assert_equal '[true, false]', %q{
+ Ractor.new([[]].freeze) { |ary|
+ [ary.frozen?, ary.first.frozen? ]
+ }.take
+}
+
+# Ractor deep copies frozen objects (str)
+assert_equal '[true, false]', %q{
+ s = String.new.instance_eval { @x = []; freeze}
+ Ractor.new(s) { |s|
+ [s.frozen?, s.instance_variable_get(:@x).frozen?]
+ }.take
+}
+
+# Can not trap with not isolated Proc on non-main ractor
+assert_equal '[:ok, :ok]', %q{
+ a = []
+ Ractor.new{
+ trap(:INT){p :ok}
+ }.take
+ a << :ok
+
+ begin
+ Ractor.new{
+ s = 'str'
+ trap(:INT){p s}
+ }.take
+ rescue => Ractor::RemoteError
+ a << :ok
+ end
+}
+
+# Ractor-local storage
+assert_equal '[nil, "b", "a"]', %q{
+ ans = []
+ Ractor.current[:key] = 'a'
+ r = Ractor.new{
+ Ractor.yield self[:key]
+ self[:key] = 'b'
+ self[:key]
+ }
+ ans << r.take
+ ans << r.take
+ ans << Ractor.current[:key]
+}
+
+###
+### Synchronization tests
+###
+
+N = 100_000
+
+# fstring pool
+assert_equal "#{N}#{N}", %Q{
+ N = #{N}
+ 2.times.map{
+ Ractor.new{
+ N.times{|i| -(i.to_s)}
+ }
+ }.map{|r| r.take}.join
+}
+
+# enc_table
+assert_equal "100", %Q{
+ Ractor.new do
+ loop do
+ Encoding.find("test-enc-#{rand(5_000)}").inspect
+ rescue ArgumentError => e
+ end
+ end
+
+ src = Encoding.find("UTF-8")
+ 100.times{|i|
+ src.replicate("test-enc-\#{i}")
+ }
+}
+
+# Generic ivtbl
+n = N/2
+assert_equal "#{n}#{n}", %Q{
+ 2.times.map{
+ Ractor.new do
+ #{n}.times do
+ obj = ''
+ obj.instance_variable_set("@a", 1)
+ obj.instance_variable_set("@b", 1)
+ obj.instance_variable_set("@c", 1)
+ obj.instance_variable_defined?("@a")
+ end
+ end
+ }.map{|r| r.take}.join
+}
+
+# NameError
+assert_equal "ok", %q{
+ begin
+ bar
+ rescue => err
+ end
+ begin
+ Ractor.new{} << err
+ rescue TypeError
+ 'ok'
+ end
+}
+
+assert_equal "ok", %q{
+ GC.disable
+ Ractor.new {}
+ raise "not ok" unless GC.disable
+
+ foo = []
+ 10.times { foo << 1 }
+
+ GC.start
+
+ 'ok'
+}
+
+# Can yield back values while GC is sweeping [Bug #18117]
+assert_equal "ok", %q{
+ workers = (0...8).map do
+ Ractor.new do
+ loop do
+ 10_000.times.map { Object.new }
+ Ractor.yield Time.now
+ end
+ end
+ end
+
+ 1_000.times { idle_worker, tmp_reporter = Ractor.select(*workers) }
+ "ok"
+}
+
+assert_equal "ok", %q{
+ def foo(*); ->{ super }; end
+ begin
+ Ractor.make_shareable(foo)
+ rescue Ractor::IsolationError
+ "ok"
+ end
+}
+
+assert_equal "ok", %q{
+ def foo(**); ->{ super }; end
+ begin
+ Ractor.make_shareable(foo)
+ rescue Ractor::IsolationError
+ "ok"
+ end
+}
+
+assert_equal "ok", %q{
+ def foo(...); ->{ super }; end
+ begin
+ Ractor.make_shareable(foo)
+ rescue Ractor::IsolationError
+ "ok"
+ end
+}
+
+assert_equal "ok", %q{
+ def foo((x), (y)); ->{ super }; end
+ begin
+ Ractor.make_shareable(foo([], []))
+ rescue Ractor::IsolationError
+ "ok"
+ end
+}
+
+assert_equal "ok", %q{
+ module M
+ def foo
+ @foo
+ end
+ end
+
+ class A
+ include M
+
+ def initialize
+ 100.times { |i| instance_variable_set(:"@var_#{i}", "bad: #{i}") }
+ @foo = 2
+ end
+ end
+
+ class B
+ include M
+
+ def initialize
+ @foo = 1
+ end
+ end
+
+ Ractor.new do
+ b = B.new
+ 100_000.times do
+ raise unless b.foo == 1
+ end
+ end
+
+ a = A.new
+ 100_000.times do
+ raise unless a.foo == 2
+ end
+
+ "ok"
+}
+
+assert_match /\Atest_ractor\.rb:1:\s+warning:\s+Ractor is experimental/, %q{
+ Warning[:experimental] = $VERBOSE = true
+ STDERR.reopen(STDOUT)
+ eval("Ractor.new{}.take", nil, "test_ractor.rb", 1)
+}
+
+end # if !ENV['GITHUB_WORKFLOW']
diff --git a/bootstraptest/test_string.rb b/bootstraptest/test_string.rb
new file mode 100644
index 0000000000..849dcd45b0
--- /dev/null
+++ b/bootstraptest/test_string.rb
@@ -0,0 +1,3 @@
+assert_normal_exit %q{
+ inspect.clear
+}, '[ruby-core:68110]'
diff --git a/bootstraptest/test_struct.rb b/bootstraptest/test_struct.rb
new file mode 100644
index 0000000000..a65964d5f9
--- /dev/null
+++ b/bootstraptest/test_struct.rb
@@ -0,0 +1,5 @@
+assert_equal 'Struct::Foo', %q{
+ Struct.instance_eval { const_set(:Foo, nil) }
+ Struct.new("Foo")
+ Struct::Foo
+}
diff --git a/bootstraptest/test_syntax.rb b/bootstraptest/test_syntax.rb
new file mode 100644
index 0000000000..948e2d7809
--- /dev/null
+++ b/bootstraptest/test_syntax.rb
@@ -0,0 +1,906 @@
+assert_equal %q{4}, %q{1 && 2 && 3 && 4}
+assert_equal %q{}, %q{1 && nil && 3 && 4}
+assert_equal %q{}, %q{1 && 2 && 3 && nil}
+assert_equal %q{false}, %q{1 && 2 && 3 && false}
+assert_equal %q{4}, %q{1 and 2 and 3 and 4}
+assert_equal %q{}, %q{1 and nil and 3 and 4}
+assert_equal %q{}, %q{1 and 2 and 3 and nil}
+assert_equal %q{false}, %q{1 and 2 and 3 and false}
+assert_equal %q{}, %q{nil && true}
+assert_equal %q{false}, %q{false && true}
+assert_equal %q{}, %q{
+ case 1
+ when 2
+ :ng
+ end}
+assert_equal %q{ok}, %q{
+ case 1
+ when 10,20,30
+ :ng1
+ when 1,2,3
+ :ok
+ when 100,200,300
+ :ng2
+ else
+ :elseng
+ end}
+assert_equal %q{elseok}, %q{
+ case 123
+ when 10,20,30
+ :ng1
+ when 1,2,3
+ :ng2
+ when 100,200,300
+ :ng3
+ else
+ :elseok
+ end
+}
+assert_equal %q{ok}, %q{
+ case 'test'
+ when /testx/
+ :ng1
+ when /test/
+ :ok
+ when /tetxx/
+ :ng2
+ else
+ :ng_else
+ end
+}
+assert_equal %q{ok}, %q{
+ case Object.new
+ when Object
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ case Object
+ when Object.new
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ case 'test'
+ when 'tes'
+ :ng
+ when 'te'
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ case 'test'
+ when 'tes'
+ :ng
+ when 'te'
+ :ng
+ when 'test'
+ :ok
+ end
+}
+assert_equal %q{ng}, %q{
+ case 'test'
+ when 'tes'
+ :ng
+ when /te/
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ case 'test'
+ when 'tes'
+ :ng
+ when /test/
+ :ok
+ else
+ :ng
+ end
+}
+assert_equal %q{100}, %q{
+ def test(arg)
+ case 1
+ when 2
+ 3
+ end
+ return arg
+ end
+
+ test(100)
+}
+assert_equal %q{ok}, %q{
+ ary = [1, 2]
+ case 1
+ when *ary
+ :ok
+ else
+ :ng
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [1, 2]
+ case 3
+ when *ary
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [1, 2]
+ case 1
+ when :x, *ary
+ :ok
+ when :z
+ :ng1
+ else
+ :ng2
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [1, 2]
+ case 3
+ when :x, *ary
+ :ng1
+ when :z
+ :ng2
+ else
+ :ok
+ end
+}
+assert_equal %q{[:false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep]}, %q{
+
+ def make_perm ary, num
+ if num == 1
+ ary.map{|e| [e]}
+ else
+ base = make_perm(ary, num-1)
+ res = []
+ base.each{|b|
+ ary.each{|e|
+ res << [e] + b
+ }
+ }
+ res
+ end
+ end
+
+ def each_test
+ conds = make_perm(['fv', 'tv'], 3)
+ bangs = make_perm(['', '!'], 3)
+ exprs = make_perm(['and', 'or'], 3)
+ ['if', 'unless'].each{|syn|
+ conds.each{|cs|
+ bangs.each{|bs|
+ exprs.each{|es|
+ yield(syn, cs, bs, es)
+ }
+ }
+ }
+ }
+ end
+
+ fv = false
+ tv = true
+
+ $ans = []
+ each_test{|syn, conds, bangs, exprs|
+ c1, c2, c3 = conds
+ bang1, bang2, bang3 = bangs
+ e1, e2 = exprs
+ eval %Q{
+ #{syn} #{bang1}#{c1} #{e1} #{bang2}#{c2} #{e2} #{bang3}#{c3}
+ $ans << :then
+ else
+ $ans << :false
+ end
+ }
+ }
+
+ each_test{|syn, conds, bangs, exprs|
+ c1, c2, c3 = conds
+ bang1, bang2, bang3 = bangs
+ e1, e2 = exprs
+ eval %Q{
+ #{syn} #{bang1}#{c1} #{e1} #{bang2}#{c2} #{e2} #{bang3}#{c3}
+ $ans << :then
+ end
+ $ans << :sep
+ }
+ }
+ $ans
+}
+assert_equal %q{}, %q{
+ defined?(m)
+}
+assert_equal %q{method}, %q{
+ def m
+ end
+ defined?(m)
+}
+assert_equal %q{}, %q{
+ defined?(a.class)
+}
+assert_equal %q{method}, %q{
+ a = 1
+ defined?(a.class)
+}
+assert_equal %q{["method", "method", "method", "method", nil, nil, "method", "method", "method", nil]}, %q{
+ class C
+ def test
+ [defined?(m1()), defined?(self.m1), defined?(C.new.m1),
+ defined?(m2()), defined?(self.m2), defined?(C.new.m2),
+ defined?(m3()), defined?(self.m3), defined?(C.new.m3)]
+ end
+ def m1
+ end
+ private
+ def m2
+ end
+ protected
+ def m3
+ end
+ end
+ C.new.test + [defined?(C.new.m3)]
+}
+assert_equal %q{[nil, nil, nil, nil, "global-variable", "global-variable", nil, nil]}, %q{
+ $ans = [defined?($1), defined?($2), defined?($3), defined?($4)]
+ /(a)(b)/ =~ 'ab'
+ $ans + [defined?($1), defined?($2), defined?($3), defined?($4)]
+}
+assert_equal %q{nilselftruefalse}, %q{
+ defined?(nil) + defined?(self) +
+ defined?(true) + defined?(false)
+}
+assert_equal %q{}, %q{
+ defined?(@a)
+}
+assert_equal %q{instance-variable}, %q{
+ @a = 1
+ defined?(@a)
+}
+assert_equal %q{}, %q{
+ defined?(@@a)
+}
+assert_equal %q{class variable}, %q{
+ class A
+ @@a = 1
+ defined?(@@a)
+ end
+}
+assert_equal %q{}, %q{
+ defined?($a)
+}
+assert_equal %q{global-variable}, %q{
+ $a = 1
+ defined?($a)
+}
+assert_equal %q{}, %q{
+ defined?(C_definedtest)
+}
+assert_equal %q{constant}, %q{
+ C_definedtest = 1
+ defined?(C_definedtest)
+}
+assert_equal %q{}, %q{
+ defined?(::C_definedtest)
+}
+assert_equal %q{constant}, %q{
+ C_definedtest = 1
+ defined?(::C_definedtest)
+}
+assert_equal %q{}, %q{
+ defined?(C_definedtestA::C_definedtestB::C_definedtestC)
+}
+assert_equal %q{constant}, %q{
+ class C_definedtestA
+ class C_definedtestB
+ C_definedtestC = 1
+ end
+ end
+ defined?(C_definedtestA::C_definedtestB::C_definedtestC)
+}
+assert_equal %q{30}, %q{
+ sum = 0
+ 30.times{|ib|
+ if ib % 10 == 0 .. true
+ sum += ib
+ end
+ }
+ sum
+}
+assert_equal %q{63}, %q{
+ sum = 0
+ 30.times{|ib|
+ if ib % 10 == 0 ... true
+ sum += ib
+ end
+ }
+ sum
+}
+assert_equal %q{[["NUM", "Type: NUM\n"], ["NUM", "123\n"], ["NUM", "456\n"], ["NUM", "Type: ARP\n"], ["NUM", "aaa\n"], ["NUM", "bbb\n"], ["NUM", "\f\n"], ["ARP", "Type: ARP\n"], ["ARP", "aaa\n"], ["ARP", "bbb\n"]]}, %q{
+ t = nil
+ unless ''.respond_to? :lines
+ class String
+ def lines
+ self
+ end
+ end
+ end
+ ary = []
+"this must not print
+Type: NUM
+123
+456
+Type: ARP
+aaa
+bbb
+\f
+this must not print
+hoge
+Type: ARP
+aaa
+bbb
+".lines.each{|l|
+ if (t = l[/^Type: (.*)/, 1])..(/^\f/ =~ l)
+ ary << [t, l]
+ end
+ }
+ ary
+}
+assert_equal %q{1}, %q{if true then 1 ; end}
+assert_equal %q{}, %q{if false then 1 ; end}
+assert_equal %q{1}, %q{if true then 1 ; else; 2; end}
+assert_equal %q{2}, %q{if false then 1 ; else; 2; end}
+assert_equal %q{}, %q{if true then ; elsif true then ; 1 ; end}
+assert_equal %q{1}, %q{if false then ; elsif true then ; 1 ; end}
+assert_equal %q{}, %q{unless true then 1 ; end}
+assert_equal %q{1}, %q{unless false then 1 ; end}
+assert_equal %q{2}, %q{unless true then 1 ; else; 2; end}
+assert_equal %q{1}, %q{unless false then 1 ; else; 2; end}
+assert_equal %q{1}, %q{1 if true}
+assert_equal %q{}, %q{1 if false}
+assert_equal %q{}, %q{1 if nil}
+assert_equal %q{}, %q{1 unless true}
+assert_equal %q{1}, %q{1 unless false}
+assert_equal %q{1}, %q{1 unless nil}
+assert_equal %q{1}, %q{1 || 2 || 3 || 4}
+assert_equal %q{1}, %q{1 || false || 3 || 4}
+assert_equal %q{2}, %q{nil || 2 || 3 || 4}
+assert_equal %q{2}, %q{false || 2 || 3 || 4}
+assert_equal %q{false}, %q{nil || false || nil || false}
+assert_equal %q{1}, %q{1 or 2 or 3 or 4}
+assert_equal %q{1}, %q{1 or false or 3 or 4}
+assert_equal %q{2}, %q{nil or 2 or 3 or 4}
+assert_equal %q{2}, %q{false or 2 or 3 or 4}
+assert_equal %q{1}, %q{if true && ""; then 1; end}
+assert_equal %q{1}, %q{if nil || true; then 1; end}
+assert_equal %q{false}, %q{nil or false or nil or false}
+assert_equal %q{elseng}, %q{
+ case
+ when 1==2, 2==3
+ :ng1
+ when false, 4==5
+ :ok
+ when false
+ :ng2
+ else
+ :elseng
+ end
+}
+assert_equal %q{ok}, %q{
+ case
+ when nil, nil
+ :ng1
+ when 1,2,3
+ :ok
+ when false, false
+ :ng2
+ else
+ :elseng
+ end
+}
+assert_equal %q{elseok}, %q{
+ case
+ when nil
+ :ng1
+ when false
+ :ng2
+ else
+ :elseok
+ end}
+assert_equal %q{}, %q{
+ case
+ when 1
+ end
+}
+assert_equal %q{ok}, %q{
+ r = nil
+ ary = []
+ case
+ when false
+ r = :ng1
+ when false, false
+ r = :ng2
+ when *ary
+ r = :ng3
+ when false, *ary
+ r = :ng4
+ when true, *ary
+ r = :ok
+ end
+ r
+}
+assert_equal %q{ok}, %q{
+ ary = []
+ case
+ when false, *ary
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [false, nil]
+ case
+ when *ary
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [false, nil]
+ case
+ when *ary
+ :ng
+ when true
+ :ok
+ else
+ :ng2
+ end
+}
+assert_equal %q{ng}, %q{
+ ary = [false, nil]
+ case
+ when *ary
+ :ok
+ else
+ :ng
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [false, true]
+ case
+ when *ary
+ :ok
+ else
+ :ng
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [false, true]
+ case
+ when false, false
+ when false, *ary
+ :ok
+ else
+ :ng
+ end
+}
+assert_equal %q{}, %q{
+ i = 0
+ while i < 10
+ i+=1
+ end}
+assert_equal %q{10}, %q{
+ i = 0
+ while i < 10
+ i+=1
+ end; i}
+assert_equal %q{}, %q{
+ i = 0
+ until i > 10
+ i+=1
+ end}
+assert_equal %q{11}, %q{
+ i = 0
+ until i > 10
+ i+=1
+ end; i}
+assert_equal %q{1}, %q{
+ i = 0
+ begin
+ i+=1
+ end while false
+ i
+}
+assert_equal %q{1}, %q{
+ i = 0
+ begin
+ i+=1
+ end until true
+ i
+}
+def assert_syntax_error expected, code, message = ''
+ assert_equal "#{expected}",
+ "begin eval(%q{#{code}}, nil, '', 0)"'; rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end', message
+end
+assert_syntax_error "unterminated string meets end of file", '().."', '[ruby-dev:29732]'
+assert_equal %q{[]}, %q{$&;[]}, '[ruby-dev:31068]'
+assert_syntax_error "syntax error, unexpected *, expecting '}'", %q{{*0}}, '[ruby-dev:31072]'
+assert_syntax_error "`@0' is not allowed as an instance variable name", %q{@0..0}, '[ruby-dev:31095]'
+assert_syntax_error "identifier $00 is not valid to get", %q{$00..0}, '[ruby-dev:31100]'
+assert_syntax_error "identifier $00 is not valid to set", %q{0..$00=1}
+assert_equal %q{0}, %q{[*0];0}, '[ruby-dev:31102]'
+assert_syntax_error "syntax error, unexpected ')'", %q{v0,(*,v1,) = 0}, '[ruby-dev:31104]'
+assert_equal %q{1}, %q{
+ class << (ary=[]); def []; 0; end; def []=(x); super(0,x);end;end; ary[]+=1
+}, '[ruby-dev:31110]'
+assert_syntax_error "Can't set variable $1", %q{0..$1=1}, '[ruby-dev:31118]'
+assert_valid_syntax %q{1.times{1+(1&&next)}}, '[ruby-dev:31119]'
+assert_valid_syntax %q{x=-1;loop{x+=1&&redo if (x+=1).zero?}}, '[ruby-dev:31119]'
+assert_syntax_error %q{syntax error, unexpected end-of-input}, %q{!}, '[ruby-dev:31243]'
+assert_equal %q{[nil]}, %q{[()]}, '[ruby-dev:31252]'
+assert_equal %q{true}, %q{!_=()}, '[ruby-dev:31263]'
+assert_equal 'ok', %q{while true; redo; end if 1 == 2; :ok}, '[ruby-dev:31360]'
+assert_equal 'ok', %q{
+ 1.times {
+ begin
+ ensure
+ next
+ end
+ }; :ok
+}, '[ruby-dev:31373]'
+assert_equal 'ok', %q{
+ flag = false
+ 1.times {
+ next if flag
+ flag = true
+ begin
+ ensure
+ redo
+ end
+ }; :ok
+}, '[ruby-dev:31373]'
+
+assert_equal 'ok', %q{
+ 1.times{
+ p(1, (next; 2))
+ }; :ok
+}
+assert_equal '3', %q{
+ i = 0
+ 1 + (while true
+ break 2 if (i+=1) > 1
+ next
+ end)
+}
+assert_equal '3', %q{
+ i = 0
+ 1 + (while true
+ break 2 if (i+=1) > 1
+ p(1, (next; 2))
+ end)
+}
+# redo
+assert_equal 'ok', %q{
+ i = 0
+ 1.times{
+ break if i>1
+ i+=1
+ p(1, (redo; 2))
+ }; :ok
+}
+assert_equal '3', %q{
+ i = 0
+ 1 + (while true
+ break 2 if (i+=1) > 1
+ redo
+ end)
+}
+assert_equal '3', %q{
+ i = 0
+ 1 + (while true
+ break 2 if (i+=1) > 1
+ p(1, (redo; 2))
+ end)
+}
+assert_equal '1', %q{
+ a = [0]
+ a[*a]+=1
+}
+assert_equal '2', %q{
+ ary = [0]
+ case 1
+ when *ary, 1
+ 1
+ end +
+ case
+ when *ary
+ 1
+ end
+}
+
+assert_match /invalid multibyte char/, %q{
+ $stderr = STDOUT
+ eval("\"\xf0".force_encoding("utf-8"))
+}, '[ruby-dev:32429]'
+
+# method ! and !=
+assert_equal 'true', %q{!false}
+assert_equal 'true', %q{1 == 1}
+assert_equal 'true', %q{1 != 2}
+assert_equal 'true', %q{
+ class C; def !=(obj); true; end; end
+ C.new != 1
+}
+assert_equal 'true', %q{
+ class C; def !@; true; end; end
+ !C.new
+}
+assert_normal_exit %q{
+ eval "while true; return; end rescue p $!"
+}, '[ruby-dev:31663]'
+assert_equal '1', %q{
+ def bar
+ raise
+ end
+
+ def foo
+ 1.times{
+ begin
+ return bar
+ rescue
+ :ok
+ end
+ }
+ end
+
+ foo
+}
+
+assert_equal 'ok', %q{
+ counter = 2
+ while true
+ counter -= 1
+ next if counter != 0
+ break
+ end
+ :ok
+}, '[ruby-core:14385]'
+
+assert_equal 'ok', %q{
+ counter = 2
+ while true
+ counter -= 1
+ next if counter != 0
+ break :ok
+ end # direct
+}, '[ruby-core:14385]'
+
+assert_equal 'ok', %q{
+ counter = 2
+ while true
+ counter -= 1
+ break if counter == 0
+ "#{next}"
+ end
+ :ok
+}, 'reported by Yusuke ENDOH'
+
+assert_equal 'ok', %q{
+ counter = 2
+ while true
+ counter -= 1
+ break if counter == 0
+ next
+ redo
+ end
+ :ok
+}, 'reported by Yusuke ENDOH'
+
+assert_equal 'ok', %q{
+ counter = 2
+ while true
+ counter -= 1
+ break if counter == 0
+ next
+ "#{ redo }"
+ end
+ :ok
+}, 'reported by Yusuke ENDOH'
+
+assert_normal_exit %q{
+ begin
+ raise
+ rescue
+ counter = 2
+ while true
+ counter -= 1
+ break if counter == 0
+ next
+ retry
+ end
+ end
+}, 'reported by Yusuke ENDOH'
+
+assert_normal_exit %q{
+ counter = 2
+ while true
+ counter -= 1
+ break if counter == 0
+ next
+ "#{ break }"
+ end
+}, 'reported by Yusuke ENDOH'
+
+assert_normal_exit %q{
+ counter = 2
+ while true
+ counter -= 1
+ next if counter != 0
+ "#{ break }"
+ end
+}, 'reported by Yusuke ENDOH'
+
+assert_equal 'ok', %q{
+ 1.times do
+ [
+ 1, 2, 3, 4, 5, 6, 7, 8,
+ begin
+ false ? next : p
+ break while true
+ end
+ ]
+ end
+ :ok
+}, '[ruby-dev:32882]'
+
+assert_equal "1\n2\n", %q{
+ i = 0
+ while i<2
+ i += 1
+ next p(i)
+ end
+}
+
+assert_valid_syntax('1.times {|i|print (42),1;}', '[ruby-list:44479]')
+
+assert_equal 'ok', %q{
+ def a() end
+ begin
+ if defined?(a(1).a)
+ :ng
+ else
+ :ok
+ end
+ rescue
+ :ng
+ end
+}, '[ruby-core:16010]'
+
+assert_equal 'ok', %q{
+ def a() end
+ begin
+ if defined?(a::B)
+ :ng
+ else
+ :ok
+ end
+ rescue
+ :ng
+ end
+}, '[ruby-core:16010]'
+
+assert_normal_exit %q{
+ defined? C && 0
+}
+
+assert_normal_exit %q{
+ class C
+ def m
+ defined?(super())
+ end
+ end
+ C.new.m
+}
+
+assert_equal 'ok', %q{
+ class X < RuntimeError;end
+ x = [X]
+ begin
+ raise X
+ rescue *x
+ :ok
+ end
+}, '[ruby-core:14537]'
+
+assert_equal 'ok', %q{
+ a = [false]
+ (a[0] &&= true) == false ? :ok : :ng
+}, '[ruby-dev:34679]'
+
+assert_normal_exit %q{
+ a = []
+ 100.times {|i| a << i << nil << nil }
+ p a.compact!
+}
+
+assert_equal 'ok', %q{
+ "#{}""#{}ok"
+}, '[ruby-dev:38968]'
+
+
+assert_equal 'ok', %q{
+ "o" "#{}k"
+}, '[ruby-dev:38980]'
+
+bug2415 = '[ruby-core:26961]'
+assert_normal_exit %q{
+ 0.times do
+ 0.times do
+ def x(a=1, b, *rest); nil end
+ end
+ end
+}, bug2415
+
+assert_normal_exit %q{
+ 0.times do
+ 0.times do
+ def x@; nil end
+ end
+ end
+}, bug2415
+
+assert_normal_exit %q{
+ 0.times do
+ 0.times do
+ def x(a = 0.times do
+ def y(a=1, b, *rest); nil; end
+ end)
+ nil
+ end
+ end
+ end
+}, bug2415
+
+assert_normal_exit %q{
+ 0.times do
+ 0.times do
+ def x(a = 0.times do
+ def x@; nil; end
+ end)
+ nil
+ end
+ end
+ end
+}, bug2415
+
+assert_normal_exit %q{
+ a {
+ b {|c.d| }
+ e
+ }
+}, '[ruby-dev:39861]'
+
+bug1240 = '[ruby-core:22637]'
+assert_valid_syntax('x y { "#{}".z { } }', bug1240)
+assert_valid_syntax('x y { "#{}".z do end }', bug1240)
+
+assert_valid_syntax('y "#{a 1}" do end', '[ruby-core:29579]')
+assert_normal_exit %q{
+ def foo(&block)
+ yield
+ end
+
+ foo do
+ s = defined?(raise + 1)
+ Class
+ end
+}, '[ruby-core:30293]'
diff --git a/bootstraptest/test_thread.rb b/bootstraptest/test_thread.rb
new file mode 100644
index 0000000000..5361828403
--- /dev/null
+++ b/bootstraptest/test_thread.rb
@@ -0,0 +1,500 @@
+show_limit %q{
+ threads = []
+ begin
+ threads << Thread.new{sleep}
+
+ raise Exception, "skipping" if threads.count >= 10_000
+ rescue Exception => error
+ puts "Thread count: #{threads.count} (#{error})"
+ break
+ end while true
+} if false # disable to pass CI
+
+assert_equal %q{ok}, %q{
+ Thread.new{
+ }.join
+ :ok
+}
+assert_equal %q{ok}, %q{
+ Thread.new{
+ :ok
+ }.value
+}
+assert_equal %q{ok}, %q{
+begin
+ v = 0
+ (1..200).map{|i|
+ Thread.new{
+ i
+ }
+ }.each{|t|
+ v += t.value
+ }
+ v == 20100 ? :ok : v
+rescue ThreadError => e
+ :ok if /can't create Thread/ =~ e.message
+end
+}
+assert_equal %q{ok}, %q{
+begin
+ :ok if 5000 == 5000.times{|e|
+ (1..2).map{
+ Thread.new{
+ }
+ }.each{|e|
+ e.join()
+ }
+ }
+rescue ThreadError => e
+ /can't create Thread/ =~ e.message ? :ok : e.message
+end
+}
+assert_equal %q{ok}, %q{
+begin
+ :ok if 5000 == 5000.times{|e|
+ (1..2).map{
+ Thread.new{
+ }
+ }.each{|e|
+ e.join(1000000000)
+ }
+ }
+rescue ThreadError => e
+ /can't create Thread/ =~ e.message ? :ok : e.message
+end
+}
+assert_equal %q{ok}, %q{
+begin
+ :ok if 5000 == 5000.times{
+ t = Thread.new{}
+ while t.alive?
+ Thread.pass
+ end
+ }
+rescue NoMemoryError
+ :ok
+end
+}
+assert_equal %q{100}, %q{
+ 100.times{
+ Thread.new{loop{Thread.pass}}
+ }
+}
+assert_equal %q{ok}, %q{
+ Thread.new{
+ :ok
+ }.join.value
+}
+assert_equal %q{ok}, %q{
+ begin
+ Thread.new{
+ raise "ok"
+ }.join
+ rescue => e
+ e
+ end
+}
+assert_equal %q{ok}, %q{
+ ans = nil
+ t = Thread.new{
+ begin
+ sleep 0.5
+ ensure
+ ans = :ok
+ end
+ }
+ Thread.pass until t.stop?
+ t.kill
+ t.join
+ ans
+}
+assert_equal %q{ok}, %q{
+ t = Thread.new{
+ sleep
+ }
+ sleep 0.1
+ t.raise
+ begin
+ t.join
+ :ng
+ rescue
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ t = Thread.new{
+ loop{}
+ }
+ Thread.pass
+ t.raise
+ begin
+ t.join
+ :ng
+ rescue
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ t = Thread.new{
+ }
+ Thread.pass
+ t.join
+ t.raise # raise to exited thread
+ begin
+ t.join
+ :ok
+ rescue
+ :ng
+ end
+}
+assert_equal %q{run}, %q{
+ t = Thread.new{
+ loop{}
+ }
+ st = t.status
+ t.kill
+ st
+}
+assert_equal %q{sleep}, %q{
+ t = Thread.new{
+ sleep
+ }
+ sleep 0.1
+ st = t.status
+ t.kill
+ st
+}
+assert_equal %q{false}, %q{
+ t = Thread.new{
+ }
+ t.kill
+ sleep 0.1
+ t.status
+}
+assert_equal %q{[ThreadGroup, true]}, %q{
+ ptg = Thread.current.group
+ Thread.new{
+ ctg = Thread.current.group
+ [ctg.class, ctg == ptg]
+ }.value
+}
+assert_equal %q{[1, 1]}, %q{
+ thg = ThreadGroup.new
+
+ t = Thread.new{
+ thg.add Thread.current
+ sleep
+ }
+ sleep 0.1
+ [thg.list.size, ThreadGroup::Default.list.size]
+}
+assert_equal %q{true}, %q{
+ thg = ThreadGroup.new
+
+ t = Thread.new{sleep 5}
+ thg.add t
+ thg.list.include?(t)
+}
+assert_equal %q{[true, nil, true]}, %q{
+ /a/ =~ 'a'
+ $a = $~
+ Thread.new{
+ $b = $~
+ /b/ =~ 'b'
+ $c = $~
+ }.join
+ $d = $~
+ [$a == $d, $b, $c != $d]
+}
+assert_equal %q{11}, %q{
+ Thread.current[:a] = 1
+ Thread.new{
+ Thread.current[:a] = 10
+ Thread.pass
+ Thread.current[:a]
+ }.value + Thread.current[:a]
+}
+assert_normal_exit %q{
+ begin
+ 100.times do |i|
+ begin
+ th = Thread.start(Thread.current) {|u| u.raise }
+ raise
+ rescue
+ ensure
+ th.join
+ end
+ end
+ rescue
+ end
+}, '[ruby-dev:31371]'
+
+assert_equal 'true', %{
+ t = Thread.new { loop {} }
+ begin
+ pid = fork {
+ exit t.status != "run"
+ }
+ Process.wait pid
+ $?.success?
+ rescue NotImplementedError
+ true
+ end
+}
+
+assert_equal 'ok', %{
+ open("zzz_t1.rb", "w") do |f|
+ f.puts <<-END
+ begin
+ Thread.new { fork { GC.start } }.join
+ pid, status = Process.wait2
+ $result = status.success? ? :ok : :ng
+ rescue NotImplementedError
+ $result = :ok
+ end
+ END
+ end
+ require "./zzz_t1.rb"
+ $result
+}
+
+assert_finish 3, %{
+ th = Thread.new {sleep 0.2}
+ th.join(0.1)
+ th.join
+}
+
+assert_finish 3, %{
+ require 'timeout'
+ th = Thread.new {sleep 0.2}
+ begin
+ Timeout.timeout(0.1) {th.join}
+ rescue Timeout::Error
+ end
+ th.join
+}
+
+assert_normal_exit %q{
+ STDERR.reopen(STDOUT)
+ exec "/"
+}
+
+assert_normal_exit %q{
+ (0..10).map {
+ Thread.new {
+ 10000.times {
+ Object.new.to_s
+ }
+ }
+ }.each {|t|
+ t.join
+ }
+}
+
+assert_equal 'ok', %q{
+ def m
+ t = Thread.new { while true; // =~ "" end }
+ sleep 0.01
+ 10.times {
+ if /((ab)*(ab)*)*(b)/ =~ "ab"*7
+ return :ng if !$4
+ return :ng if $~.size != 5
+ end
+ }
+ :ok
+ ensure
+ Thread.kill t
+ end
+ m
+}, '[ruby-dev:34492]'
+
+assert_normal_exit %q{
+ g = enum_for(:local_variables)
+ loop { g.next }
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
+ g = enum_for(:block_given?)
+ loop { g.next }
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
+ g = enum_for(:binding)
+ loop { g.next }
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
+ g = "abc".enum_for(:scan, /./)
+ loop { g.next }
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
+ g = Module.enum_for(:new)
+ loop { g.next }
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
+ Thread.new("foo", &Object.method(:class_eval)).join
+}, '[ruby-dev:34128]'
+
+assert_equal 'ok', %q{
+ begin
+ Thread.new { Thread.stop }
+ Thread.stop
+ :ng
+ rescue Exception
+ :ok
+ end
+}
+
+assert_equal 'ok', %q{
+ begin
+ m1, m2 = Thread::Mutex.new, Thread::Mutex.new
+ f1 = f2 = false
+ Thread.new { m1.lock; f2 = true; sleep 0.001 until f1; m2.lock }
+ m2.lock; f1 = true; sleep 0.001 until f2; m1.lock
+ :ng
+ rescue Exception
+ :ok
+ end
+}
+
+assert_equal 'ok', %q{
+ m = Thread::Mutex.new
+ Thread.new { m.lock }; sleep 0.1; m.lock
+ :ok
+}
+
+assert_equal 'ok', %q{
+ m = Thread::Mutex.new
+ Thread.new { m.lock }; m.lock
+ :ok
+}
+
+assert_equal 'ok', %q{
+ m = Thread::Mutex.new
+ Thread.new { m.lock }.join; m.lock
+ :ok
+}
+
+assert_equal 'ok', %q{
+ m = Thread::Mutex.new
+ Thread.new { m.lock; sleep 0.2 }
+ sleep 0.1; m.lock
+ :ok
+}
+
+assert_equal 'ok', %q{
+ m = Thread::Mutex.new
+ Thread.new { m.lock; sleep 0.2; m.unlock }
+ sleep 0.1; m.lock
+ :ok
+}
+
+assert_equal 'ok', %q{
+ t = Thread.new {`echo`}
+ t.join
+ $? ? :ng : :ok
+}, '[ruby-dev:35414]'
+
+assert_equal 'ok', %q{
+ begin
+ 100.times{
+ (1..100).map{ Thread.new(true) {|x| x == false } }.each{|th| th.join}
+ }
+ rescue NoMemoryError, StandardError
+ end
+ :ok
+}
+
+assert_equal 'ok', %{
+ open("zzz_t2.rb", "w") do |f|
+ f.puts <<-'end;' # do
+ begin
+ m = Thread::Mutex.new
+ parent = Thread.current
+ th1 = Thread.new { m.lock; sleep }
+ sleep 0.01 until th1.stop?
+ Thread.new do
+ sleep 0.01 until parent.stop?
+ begin
+ fork { GC.start }
+ rescue Exception
+ parent.raise $!
+ end
+ th1.run
+ end
+ m.lock
+ pid, status = Process.wait2
+ $result = status.success? ? :ok : :ng
+ rescue NotImplementedError
+ $result = :ok
+ end
+ end;
+ end
+ require "./zzz_t2.rb"
+ $result
+}
+
+assert_finish 3, %q{
+ require 'thread'
+
+ lock = Thread::Mutex.new
+ cond = Thread::ConditionVariable.new
+ t = Thread.new do
+ lock.synchronize do
+ cond.wait(lock)
+ end
+ end
+
+ begin
+ pid = fork do
+ # Child
+ STDOUT.write "This is the child process.\n"
+ STDOUT.write "Child process exiting.\n"
+ end
+ Process.waitpid(pid)
+ rescue NotImplementedError
+ end
+}, '[ruby-core:23572]'
+
+assert_equal 'ok', %q{
+ begin
+ Process.waitpid2(fork {})[1].success? ? 'ok' : 'ng'
+ rescue NotImplementedError
+ 'ok'
+ end
+}
+
+assert_equal 'foo', %q{
+ i = 0
+ Thread.start {sleep 1; exit!}
+ f = proc {|s, c| /#{c.call; s}/o }
+ th2 = Thread.new {
+ sleep 0.01 until i == 1
+ i = 2
+ f.call("bar", proc {sleep 2});
+ nil
+ }
+ th1 = Thread.new {
+ f.call("foo", proc {i = 1; sleep 0.01 until i == 2; sleep 0.01})
+ nil
+ }
+ [th1, th2].each {|t| t.join }
+ GC.start
+ f.call.source
+}
+assert_normal_exit %q{
+ class C
+ def inspect
+ sleep 0.5
+ 'C!!'
+ end
+ end
+ Thread.new{
+ loop{
+ p C.new
+ }
+ }
+ sleep 0.1
+}, timeout: 5
diff --git a/bootstraptest/test_yjit.rb b/bootstraptest/test_yjit.rb
new file mode 100644
index 0000000000..5c655b8f25
--- /dev/null
+++ b/bootstraptest/test_yjit.rb
@@ -0,0 +1,3530 @@
+# Regression test for yielding with autosplat to block with
+# optional parameters. https://github.com/Shopify/yjit/issues/313
+assert_equal '[:a, :b, :a, :b]', %q{
+ def yielder(arg) = yield(arg) + yield(arg)
+
+ yielder([:a, :b]) do |c = :c, d = :d|
+ [c, d]
+ end
+}
+
+# Regression test for GC mishap while doing shape transition
+assert_equal '[:ok]', %q{
+ # [Bug #19601]
+ class RegressionTest
+ def initialize
+ @a = @b = @fourth_ivar_does_shape_transition = nil
+ end
+
+ def extender
+ @first_extended_ivar = [:ok]
+ end
+ end
+
+ GC.stress = true
+
+ # Used to crash due to GC run in rb_ensure_iv_list_size()
+ # not marking the newly allocated [:ok].
+ RegressionTest.new.extender.itself
+}
+
+assert_equal 'true', %q{
+ # regression test for tracking type of locals for too long
+ def local_setting_cmp(five)
+ victim = 5
+ five.define_singleton_method(:respond_to?) do |_, _|
+ victim = nil
+ end
+
+ # +1 makes YJIT track that victim is a number and
+ # defined? calls respond_to? from above indirectly
+ unless (victim + 1) && defined?(five.something)
+ # Would return wrong result if we still think `five` is a number
+ victim.nil?
+ end
+ end
+
+ local_setting_cmp(Object.new)
+ local_setting_cmp(Object.new)
+}
+
+assert_equal '18374962167983112447', %q{
+ # regression test for incorrectly discarding 32 bits of a pointer when it
+ # comes to default values.
+ def large_literal_default(n: 0xff00_fabcafe0_00ff)
+ n
+ end
+
+ def call_graph_root
+ large_literal_default
+ end
+
+ call_graph_root
+ call_graph_root
+}
+
+assert_normal_exit %q{
+ # regression test for a leak caught by an assert on --yjit-call-threshold=2
+ Foo = 1
+
+ eval("def foo = [#{(['Foo,']*256).join}]")
+
+ foo
+ foo
+
+ Object.send(:remove_const, :Foo)
+}
+
+assert_normal_exit %q{
+ # Test to ensure send on overriden c functions
+ # doesn't corrupt the stack
+ class Bar
+ def bar(x)
+ x
+ end
+ end
+
+ class Foo
+ def bar
+ Bar.new
+ end
+ end
+
+ foo = Foo.new
+ # before this change, this line would error
+ # because "s" would still be on the stack
+ # String.to_s is the overridden method here
+ p foo.bar.bar("s".__send__(:to_s))
+}
+
+
+assert_equal '[nil, nil, nil, nil, nil, nil]', %q{
+ [NilClass, TrueClass, FalseClass, Integer, Float, Symbol].each do |klass|
+ klass.class_eval("def foo = @foo")
+ end
+
+ [nil, true, false, 0xFABCAFE, 0.42, :cake].map do |instance|
+ instance.foo
+ instance.foo
+ end
+}
+
+assert_equal '0', %q{
+ # This is a regression test for incomplete invalidation from
+ # opt_setinlinecache. This test might be brittle, so
+ # feel free to remove it in the future if it's too annoying.
+ # This test assumes --yjit-call-threshold=2.
+ module M
+ Foo = 1
+ def foo
+ Foo
+ end
+
+ def pin_self_type_then_foo
+ _ = @foo
+ foo
+ end
+
+ def only_ints
+ 1 + self
+ foo
+ end
+ end
+
+ class Integer
+ include M
+ end
+
+ class Sub
+ include M
+ end
+
+ foo_method = M.instance_method(:foo)
+
+ dbg = ->(message) do
+ return # comment this out to get printouts
+
+ $stderr.puts RubyVM::YJIT.disasm(foo_method)
+ $stderr.puts message
+ end
+
+ 2.times { 42.only_ints }
+
+ dbg["There should be two versions of getinlineache"]
+
+ module M
+ remove_const(:Foo)
+ end
+
+ dbg["There should be no getinlinecaches"]
+
+ 2.times do
+ 42.only_ints
+ rescue NameError => err
+ _ = "caught name error #{err}"
+ end
+
+ dbg["There should be one version of getinlineache"]
+
+ 2.times do
+ Sub.new.pin_self_type_then_foo
+ rescue NameError
+ _ = 'second specialization'
+ end
+
+ dbg["There should be two versions of getinlineache"]
+
+ module M
+ Foo = 1
+ end
+
+ dbg["There should still be two versions of getinlineache"]
+
+ 42.only_ints
+
+ dbg["There should be no getinlinecaches"]
+
+ # Find name of the first VM instruction in M#foo.
+ insns = RubyVM::InstructionSequence.of(foo_method).to_a
+ if defined?(RubyVM::YJIT.blocks_for) && (insns.last.find { Array === _1 }&.first == :opt_getinlinecache)
+ RubyVM::YJIT.blocks_for(RubyVM::InstructionSequence.of(foo_method))
+ .filter { _1.iseq_start_index == 0 }.count
+ else
+ 0 # skip the test
+ end
+}
+
+# Check that frozen objects are respected
+assert_equal 'great', %q{
+ class Foo
+ attr_accessor :bar
+ def initialize
+ @bar = 1
+ freeze
+ end
+ end
+
+ foo = Foo.new
+
+ 5.times do
+ begin
+ foo.bar = 2
+ rescue FrozenError
+ end
+ end
+
+ foo.bar == 1 ? "great" : "NG"
+}
+
+# Check that global variable set works
+assert_equal 'string', %q{
+ def foo
+ $foo = "string"
+ end
+
+ foo
+}
+
+# Check that exceptions work when setting global variables
+assert_equal 'rescued', %q{
+ def set_var
+ $var = 100
+ rescue
+ :rescued
+ end
+
+ set_var
+ trace_var(:$var) { raise }
+ set_var
+}
+
+# Check that global variables work
+assert_equal 'string', %q{
+ $foo = "string"
+
+ def foo
+ $foo
+ end
+
+ foo
+}
+
+# Check that exceptions work when getting global variable
+assert_equal 'rescued', %q{
+ Warning[:deprecated] = true
+
+ module Warning
+ def warn(message)
+ raise
+ end
+ end
+
+ def get_var
+ $=
+ rescue
+ :rescued
+ end
+
+ $VERBOSE = true
+ get_var
+ get_var
+}
+
+# Check that global tracepoints work
+assert_equal 'true', %q{
+ def foo
+ 1
+ end
+
+ foo
+ foo
+ foo
+
+ called = false
+
+ tp = TracePoint.new(:return) { |event|
+ if event.method_id == :foo
+ called = true
+ end
+ }
+ tp.enable
+ foo
+ tp.disable
+ called
+}
+
+# Check that local tracepoints work
+assert_equal 'true', %q{
+ def foo
+ 1
+ end
+
+ foo
+ foo
+ foo
+
+ called = false
+
+ tp = TracePoint.new(:return) { |_| called = true }
+ tp.enable(target: method(:foo))
+ foo
+ tp.disable
+ called
+}
+
+# Make sure that optional param methods return the correct value
+assert_equal '1', %q{
+ def m(ary = [])
+ yield(ary)
+ end
+
+ # Warm the JIT with a 0 param call
+ 2.times { m { } }
+ m(1) { |v| v }
+}
+
+# Test for topn
+assert_equal 'array', %q{
+ def threequals(a)
+ case a
+ when Array
+ "array"
+ when Hash
+ "hash"
+ else
+ "unknown"
+ end
+ end
+
+ threequals([])
+ threequals([])
+ threequals([])
+}
+
+# Test for opt_mod
+assert_equal '2', %q{
+ def mod(a, b)
+ a % b
+ end
+
+ mod(7, 5)
+ mod(7, 5)
+}
+
+# Test for opt_mult
+assert_equal '12', %q{
+ def mult(a, b)
+ a * b
+ end
+
+ mult(6, 2)
+ mult(6, 2)
+}
+
+# Test for opt_div
+assert_equal '3', %q{
+ def div(a, b)
+ a / b
+ end
+
+ div(6, 2)
+ div(6, 2)
+}
+
+# BOP redefined methods work when JIT compiled
+assert_equal 'false', %q{
+ def less_than x
+ x < 10
+ end
+
+ class Integer
+ def < x
+ false
+ end
+ end
+
+ less_than 2
+ less_than 2
+ less_than 2
+}
+
+# BOP redefinition works on Integer#<
+assert_equal 'false', %q{
+ def less_than x
+ x < 10
+ end
+
+ less_than 2
+ less_than 2
+
+ class Integer
+ def < x
+ false
+ end
+ end
+
+ less_than 2
+}
+
+# Putobject, less-than operator, fixnums
+assert_equal '2', %q{
+ def check_index(index)
+ if 0x40000000 < index
+ raise "wat? #{index}"
+ end
+ index
+ end
+ check_index 2
+ check_index 2
+}
+
+# foo leaves a temp on the stack before the call
+assert_equal '6', %q{
+ def bar
+ return 5
+ end
+
+ def foo
+ return 1 + bar
+ end
+
+ foo()
+ retval = foo()
+}
+
+# Method with one arguments
+# foo leaves a temp on the stack before the call
+assert_equal '7', %q{
+ def bar(a)
+ return a + 1
+ end
+
+ def foo
+ return 1 + bar(5)
+ end
+
+ foo()
+ retval = foo()
+}
+
+# Method with two arguments
+# foo leaves a temp on the stack before the call
+assert_equal '0', %q{
+ def bar(a, b)
+ return a - b
+ end
+
+ def foo
+ return 1 + bar(1, 2)
+ end
+
+ foo()
+ retval = foo()
+}
+
+# Passing argument types to callees
+assert_equal '8.5', %q{
+ def foo(x, y)
+ x + y
+ end
+
+ def bar
+ foo(7, 1.5)
+ end
+
+ bar
+ bar
+}
+
+# Recursive Ruby-to-Ruby calls
+assert_equal '21', %q{
+ def fib(n)
+ if n < 2
+ return n
+ end
+
+ return fib(n-1) + fib(n-2)
+ end
+
+ r = fib(8)
+}
+
+# Ruby-to-Ruby call and C call
+assert_normal_exit %q{
+ def bar
+ puts('hi!')
+ end
+
+ def foo
+ bar
+ end
+
+ foo()
+ foo()
+}
+
+# Method aliasing
+assert_equal '42', %q{
+ class Foo
+ def method_a
+ 42
+ end
+
+ alias method_b method_a
+
+ def method_a
+ :somethingelse
+ end
+ end
+
+ @obj = Foo.new
+
+ def test
+ @obj.method_b
+ end
+
+ test
+ test
+}
+
+# Method aliasing with method from parent class
+assert_equal '777', %q{
+ class A
+ def method_a
+ 777
+ end
+ end
+
+ class B < A
+ alias method_b method_a
+ end
+
+ @obj = B.new
+
+ def test
+ @obj.method_b
+ end
+
+ test
+ test
+}
+
+# The hash method is a C function and uses the self argument
+assert_equal 'true', %q{
+ def lehashself
+ hash
+ end
+
+ a = lehashself
+ b = lehashself
+ a == b
+}
+
+# Method redefinition (code invalidation) test
+assert_equal '1', %q{
+ def ret1
+ return 1
+ end
+
+ klass = Class.new do
+ def alias_then_hash(klass, method_to_redefine)
+ # Redefine the method to be ret1
+ klass.alias_method(method_to_redefine, :ret1)
+ hash
+ end
+ end
+
+ instance = klass.new
+
+ i = 0
+ while i < 12
+ if i < 11
+ # Redefine the bar method
+ instance.alias_then_hash(klass, :bar)
+ else
+ # Redefine the hash method to be ret1
+ retval = instance.alias_then_hash(klass, :hash)
+ end
+ i += 1
+ end
+
+ retval
+}
+
+# Code invalidation and opt_getinlinecache
+assert_normal_exit %q{
+ class Foo; end
+
+ # Uses the class constant Foo
+ def use_constant(arg)
+ [Foo.new, arg]
+ end
+
+ def propagate_type
+ i = Array.new
+ i.itself # make it remember that i is on-heap
+ use_constant(i)
+ end
+
+ propagate_type
+ propagate_type
+ use_constant(Foo.new)
+ class Jo; end # bump global constant state
+ use_constant(3)
+}
+
+# Method redefinition (code invalidation) and GC
+assert_equal '7', %q{
+ def bar()
+ return 5
+ end
+
+ def foo()
+ bar()
+ end
+
+ foo()
+ foo()
+
+ def bar()
+ return 7
+ end
+
+ 4.times { GC.start }
+
+ foo()
+ foo()
+}
+
+# Method redefinition with two block versions
+assert_equal '7', %q{
+ def bar()
+ return 5
+ end
+
+ def foo(n)
+ return ((n < 5)? 5:false), bar()
+ end
+
+ foo(4)
+ foo(4)
+ foo(10)
+ foo(10)
+
+ def bar()
+ return 7
+ end
+
+ 4.times { GC.start }
+
+ foo(4)
+ foo(4)[1]
+}
+
+# Method redefinition while the method is on the stack
+assert_equal '[777, 1]', %q{
+ def foo
+ redef()
+ 777
+ end
+
+ def redef
+ # Redefine the global foo
+ eval("def foo; 1; end", TOPLEVEL_BINDING)
+
+ # Collect dead code
+ GC.stress = true
+ GC.start
+
+ # But we will return to the original foo,
+ # which remains alive because it's on the stack
+ end
+
+ # Must produce [777, 1]
+ [foo, foo]
+}
+
+# Test for GC safety. Don't invalidate dead iseqs.
+assert_normal_exit %q{
+ Class.new do
+ def foo
+ itself
+ end
+
+ new.foo
+ new.foo
+ new.foo
+ new.foo
+ end
+
+ 4.times { GC.start }
+ def itself
+ self
+ end
+}
+
+# test setinstancevariable on extended objects
+assert_equal '1', %q{
+ class Extended
+ attr_reader :one
+
+ def write_many
+ @a = 1
+ @b = 2
+ @c = 3
+ @d = 4
+ @one = 1
+ end
+ end
+
+ foo = Extended.new
+ foo.write_many
+ foo.write_many
+ foo.write_many
+}
+
+# test setinstancevariable on embedded objects
+assert_equal '1', %q{
+ class Embedded
+ attr_reader :one
+
+ def write_one
+ @one = 1
+ end
+ end
+
+ foo = Embedded.new
+ foo.write_one
+ foo.write_one
+ foo.write_one
+}
+
+# test setinstancevariable after extension
+assert_equal '[10, 11, 12, 13, 1]', %q{
+ class WillExtend
+ attr_reader :one
+
+ def make_extended
+ @foo1 = 10
+ @foo2 = 11
+ @foo3 = 12
+ @foo4 = 13
+ end
+
+ def write_one
+ @one = 1
+ end
+
+ def read_all
+ [@foo1, @foo2, @foo3, @foo4, @one]
+ end
+ end
+
+ foo = WillExtend.new
+ foo.write_one
+ foo.write_one
+ foo.make_extended
+ foo.write_one
+ foo.read_all
+}
+
+# test setinstancevariable on frozen object
+assert_equal 'object was not modified', %q{
+ class WillFreeze
+ def write
+ @ivar = 1
+ end
+ end
+
+ wf = WillFreeze.new
+ wf.write
+ wf.write
+ wf.freeze
+
+ begin
+ wf.write
+ rescue FrozenError
+ "object was not modified"
+ end
+}
+
+# Test getinstancevariable and inline caches
+assert_equal '6', %q{
+ class Foo
+ def initialize
+ @x1 = 1
+ @x2 = 1
+ @x2 = 1
+ @x3 = 1
+ @x4 = 3
+ end
+
+ def bar
+ x = 1
+ @x4 + @x4
+ end
+ end
+
+ f = Foo.new
+ f.bar
+ f.bar
+}
+
+# Test that getinstancevariable codegen checks for extended table size
+assert_equal "nil\n", %q{
+ class A
+ def read
+ @ins1000
+ end
+ end
+
+ ins = A.new
+ other = A.new
+ 10.times { other.instance_variable_set(:"@otr#{_1}", 'value') }
+ 1001.times { ins.instance_variable_set(:"@ins#{_1}", 'value') }
+
+ ins.read
+ ins.read
+ ins.read
+
+ p other.read
+}
+
+# Test that opt_aref checks the class of the receiver
+assert_equal 'special', %q{
+ def foo(array)
+ array[30]
+ end
+
+ foo([])
+ foo([])
+
+ special = []
+ def special.[](idx)
+ 'special'
+ end
+
+ foo(special)
+}
+
+# Test that object references in generated code get marked and moved
+assert_equal "good", %q{
+ def bar
+ "good"
+ end
+
+ def foo
+ bar
+ end
+
+ foo
+ foo
+
+ begin
+ GC.verify_compaction_references(expand_heap: true, toward: :empty)
+ rescue NotImplementedError
+ # in case compaction isn't supported
+ end
+
+ foo
+}
+
+# Test polymorphic getinstancevariable. T_OBJECT -> T_STRING
+assert_equal 'ok', %q{
+ @hello = @h1 = @h2 = @h3 = @h4 = 'ok'
+ str = ""
+ str.instance_variable_set(:@hello, 'ok')
+
+ public def get
+ @hello
+ end
+
+ get
+ get
+ str.get
+ str.get
+}
+
+# Test polymorphic getinstancevariable, two different classes
+assert_equal 'ok', %q{
+ class Embedded
+ def initialize
+ @ivar = 0
+ end
+
+ def get
+ @ivar
+ end
+ end
+
+ class Extended < Embedded
+ def initialize
+ @v1 = @v2 = @v3 = @v4 = @ivar = 'ok'
+ end
+ end
+
+ embed = Embedded.new
+ extend = Extended.new
+
+ embed.get
+ embed.get
+ extend.get
+ extend.get
+}
+
+# Test megamorphic getinstancevariable
+assert_equal 'ok', %q{
+ parent = Class.new do
+ def initialize
+ @hello = @h1 = @h2 = @h3 = @h4 = 'ok'
+ end
+
+ def get
+ @hello
+ end
+ end
+
+ subclasses = 300.times.map { Class.new(parent) }
+ subclasses.each { _1.new.get }
+ parent.new.get
+}
+
+# Test polymorphic opt_aref. array -> hash
+assert_equal '[42, :key]', %q{
+ def index(obj, idx)
+ obj[idx]
+ end
+
+ index([], 0) # get over compilation threshold
+
+ [
+ index([42], 0),
+ index({0=>:key}, 0),
+ ]
+}
+
+# Test polymorphic opt_aref. hash -> array -> custom class
+assert_equal '[nil, nil, :custom]', %q{
+ def index(obj, idx)
+ obj[idx]
+ end
+
+ custom = Object.new
+ def custom.[](_idx)
+ :custom
+ end
+
+ index({}, 0) # get over compilation threshold
+
+ [
+ index({}, 0),
+ index([], 0),
+ index(custom, 0)
+ ]
+}
+
+# Test polymorphic opt_aref. array -> custom class
+assert_equal '[42, :custom]', %q{
+ def index(obj, idx)
+ obj[idx]
+ end
+
+ custom = Object.new
+ def custom.[](_idx)
+ :custom
+ end
+
+ index([], 0) # get over compilation threshold
+
+ [
+ index([42], 0),
+ index(custom, 0)
+ ]
+}
+
+# Test custom hash method with opt_aref
+assert_equal '[nil, :ok]', %q{
+ def index(obj, idx)
+ obj[idx]
+ end
+
+ custom = Object.new
+ def custom.hash
+ 42
+ end
+
+ h = {custom => :ok}
+
+ [
+ index(h, 0),
+ index(h, custom)
+ ]
+}
+
+# Test default value block for Hash with opt_aref
+assert_equal '[42, :default]', %q{
+ def index(obj, idx)
+ obj[idx]
+ end
+
+ h = Hash.new { :default }
+ h[0] = 42
+
+ [
+ index(h, 0),
+ index(h, 1)
+ ]
+}
+
+# A regression test for making sure cfp->sp is proper when
+# hitting stubs. See :stub-sp-flush:
+assert_equal 'ok', %q{
+ class D
+ def foo
+ Object.new
+ end
+ end
+
+ GC.stress = true
+ 10.times do
+ D.new.foo
+ # ^
+ # This hits a stub with sp_offset > 0
+ end
+
+ :ok
+}
+
+# Test polymorphic callsite, cfunc -> iseq
+assert_equal '[Cfunc, Iseq]', %q{
+ public def call_itself
+ itself # the polymorphic callsite
+ end
+
+ class Cfunc; end
+
+ class Iseq
+ def itself
+ self
+ end
+ end
+
+ call_itself # cross threshold
+
+ [Cfunc.call_itself, Iseq.call_itself]
+}
+
+# Test polymorphic callsite, iseq -> cfunc
+assert_equal '[Iseq, Cfunc]', %q{
+ public def call_itself
+ itself # the polymorphic callsite
+ end
+
+ class Cfunc; end
+
+ class Iseq
+ def itself
+ self
+ end
+ end
+
+ call_itself # cross threshold
+
+ [Iseq.call_itself, Cfunc.call_itself]
+}
+
+# attr_reader method
+assert_equal '[100, 299]', %q{
+ class A
+ attr_reader :foo
+
+ def initialize
+ @foo = 100
+ end
+
+ # Make it extended
+ def fill!
+ @bar = @jojo = @as = @sdfsdf = @foo = 299
+ end
+ end
+
+ def bar(ins)
+ ins.foo
+ end
+
+ ins = A.new
+ oth = A.new
+ oth.fill!
+
+ bar(ins)
+ bar(oth)
+
+ [bar(ins), bar(oth)]
+}
+
+# get ivar on object, then on hash
+assert_equal '[42, 100]', %q{
+ class Hash
+ attr_accessor :foo
+ end
+
+ class A
+ attr_reader :foo
+
+ def initialize
+ @foo = 42
+ end
+ end
+
+ def use(val)
+ val.foo
+ end
+
+
+ h = {}
+ h.foo = 100
+ obj = A.new
+
+ use(obj)
+ [use(obj), use(h)]
+}
+
+# get ivar on String
+assert_equal '[nil, nil, 42, 42]', %q{
+ # @foo to exercise the getinstancevariable instruction
+ public def get_foo
+ @foo
+ end
+
+ get_foo
+ get_foo # compile it for the top level object
+
+ class String
+ attr_reader :foo
+ end
+
+ def run
+ str = String.new
+
+ getter = str.foo
+ insn = str.get_foo
+
+ str.instance_variable_set(:@foo, 42)
+
+ [getter, insn, str.foo, str.get_foo]
+ end
+
+ run
+ run
+}
+
+# splatting an empty array on a getter
+assert_equal '42', %q{
+ @foo = 42
+ module Kernel
+ attr_reader :foo
+ end
+
+ def run
+ foo(*[])
+ end
+
+ run
+ run
+}
+
+# splatting an empty array on a specialized method
+assert_equal 'ok', %q{
+ def run
+ "ok".to_s(*[])
+ end
+
+ run
+ run
+}
+
+# splatting an single element array on a specialized method
+assert_equal '[1]', %q{
+ def run
+ [].<<(*[1])
+ end
+
+ run
+ run
+}
+
+# specialized method with wrong args
+assert_equal 'ok', %q{
+ def run(x)
+ "bad".to_s(123) if x
+ rescue
+ :ok
+ end
+
+ run(false)
+ run(true)
+}
+
+# getinstancevariable on Symbol
+assert_equal '[nil, nil]', %q{
+ # @foo to exercise the getinstancevariable instruction
+ public def get_foo
+ @foo
+ end
+
+ dyn_sym = ("a" + "b").to_sym
+ sym = :static
+
+ # compile get_foo
+ dyn_sym.get_foo
+ dyn_sym.get_foo
+
+ [dyn_sym.get_foo, sym.get_foo]
+}
+
+# attr_reader on Symbol
+assert_equal '[nil, nil]', %q{
+ class Symbol
+ attr_reader :foo
+ end
+
+ public def get_foo
+ foo
+ end
+
+ dyn_sym = ("a" + "b").to_sym
+ sym = :static
+
+ # compile get_foo
+ dyn_sym.get_foo
+ dyn_sym.get_foo
+
+ [dyn_sym.get_foo, sym.get_foo]
+}
+
+# passing too few arguments to method with optional parameters
+assert_equal 'raised', %q{
+ def opt(a, b = 0)
+ end
+
+ def use
+ opt
+ end
+
+ use rescue nil
+ begin
+ use
+ :ng
+ rescue ArgumentError
+ :raised
+ end
+}
+
+# passing too many arguments to method with optional parameters
+assert_equal 'raised', %q{
+ def opt(a, b = 0)
+ end
+
+ def use
+ opt(1, 2, 3, 4)
+ end
+
+ use rescue nil
+ begin
+ use
+ :ng
+ rescue ArgumentError
+ :raised
+ end
+}
+
+# test calling Ruby method with a block
+assert_equal '[1, 2, 42]', %q{
+ def thing(a, b)
+ [a, b, yield]
+ end
+
+ def use
+ thing(1,2) { 42 }
+ end
+
+ use
+ use
+}
+
+# test calling C method with a block
+assert_equal '[42, 42]', %q{
+ def use(array, initial)
+ array.reduce(initial) { |a, b| a + b }
+ end
+
+ use([], 0)
+ [use([2, 2], 38), use([14, 14, 14], 0)]
+}
+
+# test calling block param
+assert_equal '[1, 2, 42]', %q{
+ def foo(&block)
+ block.call
+ end
+
+ [foo {1}, foo {2}, foo {42}]
+}
+
+# test calling without block param
+assert_equal '[1, false, 2, false]', %q{
+ def bar
+ block_given? && yield
+ end
+
+ def foo(&block)
+ bar(&block)
+ end
+
+ [foo { 1 }, foo, foo { 2 }, foo]
+}
+
+# test calling block param failing
+assert_equal '42', %q{
+ def foo(&block)
+ block.call
+ end
+
+ foo {} # warmup
+
+ begin
+ foo
+ rescue NoMethodError => e
+ 42 if nil == e.receiver
+ end
+}
+
+# test calling method taking block param
+assert_equal '[Proc, 1, 2, 3, Proc]', %q{
+ def three(a, b, c, &block)
+ [a, b, c, block.class]
+ end
+
+ def zero(&block)
+ block.class
+ end
+
+ def use_three
+ three(1, 2, 3) {}
+ end
+
+ def use_zero
+ zero {}
+ end
+
+ use_three
+ use_zero
+
+ [use_zero] + use_three
+}
+
+# test building empty array
+assert_equal '[]', %q{
+ def build_arr
+ []
+ end
+
+ build_arr
+ build_arr
+}
+
+# test building array of one element
+assert_equal '[5]', %q{
+ def build_arr(val)
+ [val]
+ end
+
+ build_arr(5)
+ build_arr(5)
+}
+
+# test building array of several element
+assert_equal '[5, 5, 5, 5, 5]', %q{
+ def build_arr(val)
+ [val, val, val, val, val]
+ end
+
+ build_arr(5)
+ build_arr(5)
+}
+
+# test building empty hash
+assert_equal '{}', %q{
+ def build_hash
+ {}
+ end
+
+ build_hash
+ build_hash
+}
+
+# test building hash with values
+assert_equal '{:foo=>:bar}', %q{
+ def build_hash(val)
+ { foo: val }
+ end
+
+ build_hash(:bar)
+ build_hash(:bar)
+}
+
+# test string interpolation with known types
+assert_equal 'foobar', %q{
+ def make_str
+ foo = -"foo"
+ bar = -"bar"
+ "#{foo}#{bar}"
+ end
+
+ make_str
+ make_str
+}
+
+# test string interpolation with unknown types
+assert_equal 'foobar', %q{
+ def make_str(foo, bar)
+ "#{foo}#{bar}"
+ end
+
+ make_str("foo", "bar")
+ make_str("foo", "bar")
+}
+
+# test string interpolation with known non-strings
+assert_equal 'foo123', %q{
+ def make_str
+ foo = -"foo"
+ bar = 123
+ "#{foo}#{bar}"
+ end
+
+ make_str
+ make_str
+}
+
+# test string interpolation with unknown non-strings
+assert_equal 'foo123', %q{
+ def make_str(foo, bar)
+ "#{foo}#{bar}"
+ end
+
+ make_str("foo", 123)
+ make_str("foo", 123)
+}
+
+# test that invalidation of String#to_s doesn't crash
+assert_equal 'meh', %q{
+ def inval_method
+ "".to_s
+ end
+
+ inval_method
+
+ class String
+ def to_s
+ "meh"
+ end
+ end
+
+ inval_method
+}
+
+# test that overriding to_s on a String subclass works consistently
+assert_equal 'meh', %q{
+ class MyString < String
+ def to_s
+ "meh"
+ end
+ end
+
+ def test_to_s(obj)
+ obj.to_s
+ end
+
+ OBJ = MyString.new
+
+ # Should return '' both times
+ test_to_s("")
+ test_to_s("")
+
+ # Can return '' if YJIT optimises String#to_s too aggressively
+ test_to_s(OBJ)
+ test_to_s(OBJ)
+}
+
+# test string interpolation with overridden to_s
+assert_equal 'foo', %q{
+ class String
+ def to_s
+ "bad"
+ end
+ end
+
+ def make_str(foo)
+ "#{foo}"
+ end
+
+ make_str("foo")
+ make_str("foo")
+}
+
+# Test that String unary plus returns the same object ID for an unfrozen string.
+assert_equal 'true', %q{
+ def jittable_method
+ str = "bar"
+
+ old_obj_id = str.object_id
+ uplus_str = +str
+
+ uplus_str.object_id == old_obj_id
+ end
+ jittable_method
+}
+
+# Test that String unary plus returns a different unfrozen string when given a frozen string
+assert_equal 'false', %q{
+ # Logic needs to be inside an ISEQ, such as a method, for YJIT to compile it
+ def jittable_method
+ frozen_str = "foo".freeze
+
+ old_obj_id = frozen_str.object_id
+ uplus_str = +frozen_str
+
+ uplus_str.object_id == old_obj_id || uplus_str.frozen?
+ end
+
+ jittable_method
+}
+
+# String-subclass objects should behave as expected inside string-interpolation via concatstrings
+assert_equal 'monkeys / monkeys, yo!', %q{
+ class MyString < String
+ # This is a terrible idea in production code, but we'd like YJIT to match CRuby
+ def to_s
+ super + ", yo!"
+ end
+ end
+
+ def jittable_method
+ m = MyString.new('monkeys')
+ "#{m} / #{m.to_s}"
+ end
+
+ jittable_method
+}
+
+# String-subclass objects should behave as expected for string equality
+assert_equal 'false', %q{
+ class MyString < String
+ # This is a terrible idea in production code, but we'd like YJIT to match CRuby
+ def ==(b)
+ "#{self}_" == b
+ end
+ end
+
+ def jittable_method
+ ma = MyString.new("a")
+
+ # Check equality with string-subclass receiver
+ ma == "a" || ma != "a_" ||
+ # Check equality with string receiver
+ "a_" == ma || "a" != ma ||
+ # Check equality between string subclasses
+ ma != MyString.new("a_") ||
+ # Make sure "string always equals itself" check isn't used with overridden equality
+ ma == ma
+ end
+ jittable_method
+}
+
+# Test to_s duplicates a string subclass object but not a string
+assert_equal 'false', %q{
+ class MyString < String; end
+
+ def jittable_method
+ a = "a"
+ ma = MyString.new("a")
+
+ a.object_id != a.to_s.object_id ||
+ ma.object_id == ma.to_s.object_id
+ end
+ jittable_method
+}
+
+# Test freeze on string subclass
+assert_equal 'true', %q{
+ class MyString < String; end
+
+ def jittable_method
+ fma = MyString.new("a").freeze
+
+ # Freezing a string subclass should not duplicate it
+ fma.object_id == fma.freeze.object_id
+ end
+ jittable_method
+}
+
+# Test unary minus on string subclass
+assert_equal 'true', %q{
+ class MyString < String; end
+
+ def jittable_method
+ ma = MyString.new("a")
+ fma = MyString.new("a").freeze
+
+ # Unary minus on frozen string subclass should not duplicate it
+ fma.object_id == (-fma).object_id &&
+ # Unary minus on unfrozen string subclass should duplicate it
+ ma.object_id != (-ma).object_id
+ end
+ jittable_method
+}
+
+# Test unary plus on string subclass
+assert_equal 'true', %q{
+ class MyString < String; end
+
+ def jittable_method
+ fma = MyString.new("a").freeze
+
+ # Unary plus on frozen string subclass should not duplicate it
+ fma.object_id != (+fma).object_id
+ end
+ jittable_method
+}
+
+# Test << operator on string subclass
+assert_equal 'abab', %q{
+ class MyString < String; end
+
+ def jittable_method
+ a = -"a"
+ mb = MyString.new("b")
+
+ buf = String.new
+ mbuf = MyString.new
+
+ buf << a << mb
+ mbuf << a << mb
+
+ buf + mbuf
+ end
+ jittable_method
+}
+
+# test invokebuiltin as used in struct assignment
+assert_equal '123', %q{
+ def foo(obj)
+ obj.foo = 123
+ end
+
+ struct = Struct.new(:foo)
+ obj = struct.new
+ foo(obj)
+ foo(obj)
+}
+
+# test invokebuiltin_delegate as used inside Dir.open
+assert_equal '.', %q{
+ def foo(path)
+ Dir.open(path).path
+ end
+
+ foo(".")
+ foo(".")
+}
+
+# test invokebuiltin_delegate_leave in method called from jit
+assert_normal_exit %q{
+ def foo(obj)
+ obj.clone
+ end
+
+ foo(Object.new)
+ foo(Object.new)
+}
+
+# test invokebuiltin_delegate_leave in method called from cfunc
+assert_normal_exit %q{
+ def foo(obj)
+ [obj].map(&:clone)
+ end
+
+ foo(Object.new)
+ foo(Object.new)
+}
+
+# defining TrueClass#!
+assert_equal '[false, false, :ok]', %q{
+ def foo(obj)
+ !obj
+ end
+
+ x = foo(true)
+ y = foo(true)
+
+ class TrueClass
+ def !
+ :ok
+ end
+ end
+
+ z = foo(true)
+
+ [x, y, z]
+}
+
+# defining FalseClass#!
+assert_equal '[true, true, :ok]', %q{
+ def foo(obj)
+ !obj
+ end
+
+ x = foo(false)
+ y = foo(false)
+
+ class FalseClass
+ def !
+ :ok
+ end
+ end
+
+ z = foo(false)
+
+ [x, y, z]
+}
+
+# defining NilClass#!
+assert_equal '[true, true, :ok]', %q{
+ def foo(obj)
+ !obj
+ end
+
+ x = foo(nil)
+ y = foo(nil)
+
+ class NilClass
+ def !
+ :ok
+ end
+ end
+
+ z = foo(nil)
+
+ [x, y, z]
+}
+
+# polymorphic opt_not
+assert_equal '[true, true, false, false, false, false, false]', %q{
+ def foo(obj)
+ !obj
+ end
+
+ foo(0)
+ [foo(nil), foo(false), foo(true), foo([]), foo(0), foo(4.2), foo(:sym)]
+}
+
+# getlocal with 2 levels
+assert_equal '7', %q{
+ def foo(foo, bar)
+ while foo > 0
+ while bar > 0
+ return foo + bar
+ end
+ end
+ end
+
+ foo(5,2)
+ foo(5,2)
+}
+
+# test pattern matching
+assert_equal '[:ok, :ok]', %q{
+ class C
+ def destructure_keys
+ {}
+ end
+ end
+
+ pattern_match = ->(i) do
+ case i
+ in a: 0
+ :ng
+ else
+ :ok
+ end
+ end
+
+ [{}, C.new].map(&pattern_match)
+}
+
+# Call to object with singleton
+assert_equal '123', %q{
+ obj = Object.new
+ def obj.foo
+ 123
+ end
+
+ def foo(obj)
+ obj.foo()
+ end
+
+ foo(obj)
+ foo(obj)
+}
+
+# Call method on an object that has a non-material
+# singleton class.
+# TODO: assert that it takes no side exits? This
+# test case revealed that we were taking exits unnecessarily.
+assert_normal_exit %q{
+ def foo(obj)
+ obj.itself
+ end
+
+ o = Object.new.singleton_class
+ foo(o)
+ foo(o)
+}
+
+# Call to singleton class
+assert_equal '123', %q{
+ class Foo
+ def self.foo
+ 123
+ end
+ end
+
+ def foo(obj)
+ obj.foo()
+ end
+
+ foo(Foo)
+ foo(Foo)
+}
+
+# invokesuper edge case
+assert_equal '[:A, [:A, :B]]', %q{
+ class B
+ def foo = :B
+ end
+
+ class A < B
+ def foo = [:A, super()]
+ end
+
+ A.new.foo
+ A.new.foo # compile A#foo
+
+ class C < A
+ define_method(:bar, A.instance_method(:foo))
+ end
+
+ C.new.bar
+}
+
+# Same invokesuper bytecode, multiple destinations
+assert_equal '[:Forward, :SecondTerminus]', %q{
+ module Terminus
+ def foo = :Terminus
+ end
+
+ module SecondTerminus
+ def foo = :SecondTerminus
+ end
+
+
+ module Forward
+ def foo = [:Forward, super]
+ end
+
+ class B
+ include SecondTerminus
+ end
+
+ class A < B
+ include Terminus
+ include Forward
+ end
+
+ A.new.foo
+ A.new.foo # compile
+
+ class B
+ include Forward
+ alias bar foo
+ end
+
+ # A.ancestors.take(5) == [A, Forward, Terminus, B, Forward, SecondTerminus]
+
+ A.new.bar
+}
+
+# invokesuper calling into itself
+assert_equal '[:B, [:B, :m]]', %q{
+ module M
+ def foo = :m
+ end
+
+ class B
+ include M
+ def foo = [:B, super]
+ end
+
+ ins = B.new
+ ins.singleton_class # materialize the singleton class
+ ins.foo
+ ins.foo # compile
+
+ ins.singleton_class.define_method(:bar, B.instance_method(:foo))
+ ins.bar
+}
+
+# invokesuper changed ancestor
+assert_equal '[:A, [:M, :B]]', %q{
+ class B
+ def foo
+ :B
+ end
+ end
+
+ class A < B
+ def foo
+ [:A, super]
+ end
+ end
+
+ module M
+ def foo
+ [:M, super]
+ end
+ end
+
+ ins = A.new
+ ins.foo
+ ins.foo
+ A.include(M)
+ ins.foo
+}
+
+# invokesuper changed ancestor via prepend
+assert_equal '[:A, [:M, :B]]', %q{
+ class B
+ def foo
+ :B
+ end
+ end
+
+ class A < B
+ def foo
+ [:A, super]
+ end
+ end
+
+ module M
+ def foo
+ [:M, super]
+ end
+ end
+
+ ins = A.new
+ ins.foo
+ ins.foo
+ B.prepend(M)
+ ins.foo
+}
+
+# invokesuper replaced method
+assert_equal '[:A, :Btwo]', %q{
+ class B
+ def foo
+ :B
+ end
+ end
+
+ class A < B
+ def foo
+ [:A, super]
+ end
+ end
+
+ ins = A.new
+ ins.foo
+ ins.foo
+ class B
+ def foo
+ :Btwo
+ end
+ end
+ ins.foo
+}
+
+# Call to fixnum
+assert_equal '[true, false]', %q{
+ def is_odd(obj)
+ obj.odd?
+ end
+
+ is_odd(1)
+ is_odd(1)
+
+ [is_odd(123), is_odd(456)]
+}
+
+# Call to bignum
+assert_equal '[true, false]', %q{
+ def is_odd(obj)
+ obj.odd?
+ end
+
+ bignum = 99999999999999999999
+ is_odd(bignum)
+ is_odd(bignum)
+
+ [is_odd(bignum), is_odd(bignum+1)]
+}
+
+# Call to fixnum and bignum
+assert_equal '[true, false, true, false]', %q{
+ def is_odd(obj)
+ obj.odd?
+ end
+
+ bignum = 99999999999999999999
+ is_odd(bignum)
+ is_odd(bignum)
+ is_odd(123)
+ is_odd(123)
+
+ [is_odd(123), is_odd(456), is_odd(bignum), is_odd(bignum+1)]
+}
+
+# Call to static and dynamic symbol
+assert_equal 'bar', %q{
+ def to_string(obj)
+ obj.to_s
+ end
+
+ to_string(:foo)
+ to_string(:foo)
+ to_string((-"bar").to_sym)
+ to_string((-"bar").to_sym)
+}
+
+# Call to flonum and heap float
+assert_equal '[nil, nil, nil, 1]', %q{
+ def is_inf(obj)
+ obj.infinite?
+ end
+
+ is_inf(0.0)
+ is_inf(0.0)
+ is_inf(1e256)
+ is_inf(1e256)
+
+ [
+ is_inf(0.0),
+ is_inf(1.0),
+ is_inf(1e256),
+ is_inf(1.0/0.0)
+ ]
+}
+
+assert_equal '[1, 2, 3, 4, 5]', %q{
+ def splatarray
+ [*(1..5)]
+ end
+
+ splatarray
+ splatarray
+}
+
+assert_equal '[1, 1, 2, 1, 2, 3]', %q{
+ def expandarray
+ arr = [1, 2, 3]
+
+ a, = arr
+ b, c, = arr
+ d, e, f = arr
+
+ [a, b, c, d, e, f]
+ end
+
+ expandarray
+ expandarray
+}
+
+assert_equal '[1, 1]', %q{
+ def expandarray_useless_splat
+ arr = (1..10).to_a
+
+ a, * = arr
+ b, (*) = arr
+
+ [a, b]
+ end
+
+ expandarray_useless_splat
+ expandarray_useless_splat
+}
+
+assert_equal '[:not_heap, nil, nil]', %q{
+ def expandarray_not_heap
+ a, b, c = :not_heap
+ [a, b, c]
+ end
+
+ expandarray_not_heap
+ expandarray_not_heap
+}
+
+assert_equal '[:not_array, nil, nil]', %q{
+ def expandarray_not_array(obj)
+ a, b, c = obj
+ [a, b, c]
+ end
+
+ obj = Object.new
+ def obj.to_ary
+ [:not_array]
+ end
+
+ expandarray_not_array(obj)
+ expandarray_not_array(obj)
+}
+
+assert_equal '[1, 2, nil]', %q{
+ def expandarray_rhs_too_small
+ a, b, c = [1, 2]
+ [a, b, c]
+ end
+
+ expandarray_rhs_too_small
+ expandarray_rhs_too_small
+}
+
+assert_equal '[1, [2]]', %q{
+ def expandarray_splat
+ a, *b = [1, 2]
+ [a, b]
+ end
+
+ expandarray_splat
+ expandarray_splat
+}
+
+assert_equal '2', %q{
+ def expandarray_postarg
+ *, a = [1, 2]
+ a
+ end
+
+ expandarray_postarg
+ expandarray_postarg
+}
+
+assert_equal '10', %q{
+ obj = Object.new
+ val = nil
+ obj.define_singleton_method(:to_ary) { val = 10; [] }
+
+ def expandarray_always_call_to_ary(object)
+ * = object
+ end
+
+ expandarray_always_call_to_ary(obj)
+ expandarray_always_call_to_ary(obj)
+
+ val
+}
+
+# regression test of local type change
+assert_equal '1.1', %q{
+def bar(baz, quux)
+ if baz.integer?
+ baz, quux = quux, nil
+ end
+ baz.to_s
+end
+
+bar(123, 1.1)
+bar(123, 1.1)
+}
+
+# test enabling a line TracePoint in a C method call
+assert_equal '[[:line, true]]', %q{
+ events = []
+ events.instance_variable_set(
+ :@tp,
+ TracePoint.new(:line) { |tp| events << [tp.event, tp.lineno] if tp.path == __FILE__ }
+ )
+ def events.to_str
+ @tp.enable; ''
+ end
+
+ # Stay in generated code while enabling tracing
+ def events.compiled(obj)
+ String(obj)
+ @tp.disable; __LINE__
+ end
+
+ line = events.compiled(events)
+ events[0][-1] = (events[0][-1] == line)
+
+ events
+}
+
+# test enabling a c_return TracePoint in a C method call
+assert_equal '[[:c_return, :String, :string_alias, "events_to_str"]]', %q{
+ events = []
+ events.instance_variable_set(:@tp, TracePoint.new(:c_return) { |tp| events << [tp.event, tp.method_id, tp.callee_id, tp.return_value] })
+ def events.to_str
+ @tp.enable; 'events_to_str'
+ end
+
+ # Stay in generated code while enabling tracing
+ alias string_alias String
+ def events.compiled(obj)
+ string_alias(obj)
+ @tp.disable
+ end
+
+ events.compiled(events)
+
+ events
+} unless defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # MJIT calls extra Ruby methods
+
+# test enabling a TracePoint that targets a particular line in a C method call
+assert_equal '[true]', %q{
+ events = []
+ events.instance_variable_set(:@tp, TracePoint.new(:line) { |tp| events << tp.lineno })
+ def events.to_str
+ @tp.enable(target: method(:compiled))
+ ''
+ end
+
+ # Stay in generated code while enabling tracing
+ def events.compiled(obj)
+ String(obj)
+ __LINE__
+ end
+
+ line = events.compiled(events)
+ events[0] = (events[0] == line)
+
+ events
+}
+
+# test enabling tracing in the middle of splatarray
+assert_equal '[true]', %q{
+ events = []
+ obj = Object.new
+ obj.instance_variable_set(:@tp, TracePoint.new(:line) { |tp| events << tp.lineno })
+ def obj.to_a
+ @tp.enable(target: method(:compiled))
+ []
+ end
+
+ # Enable tracing in the middle of the splatarray instruction
+ def obj.compiled(obj)
+ * = *obj
+ __LINE__
+ end
+
+ obj.compiled([])
+ line = obj.compiled(obj)
+ events[0] = (events[0] == line)
+
+ events
+}
+
+# test enabling tracing in the middle of opt_aref. Different since the codegen
+# for it ends in a jump.
+assert_equal '[true]', %q{
+ def lookup(hash, tp)
+ hash[42]
+ tp.disable; __LINE__
+ end
+
+ lines = []
+ tp = TracePoint.new(:line) { lines << _1.lineno if _1.path == __FILE__ }
+
+ lookup(:foo, tp)
+ lookup({}, tp)
+
+ enable_tracing_on_missing = Hash.new { tp.enable }
+
+ expected_line = lookup(enable_tracing_on_missing, tp)
+
+ lines[0] = true if lines[0] == expected_line
+
+ lines
+}
+
+# test enabling c_call tracing before compiling
+assert_equal '[[:c_call, :itself]]', %q{
+ def shouldnt_compile
+ itself
+ end
+
+ events = []
+ tp = TracePoint.new(:c_call) { |tp| events << [tp.event, tp.method_id] }
+
+ # assume first call compiles
+ tp.enable { shouldnt_compile }
+
+ events
+} unless defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # MJIT calls extra Ruby methods
+
+# test enabling c_return tracing before compiling
+assert_equal '[[:c_return, :itself, main]]', %q{
+ def shouldnt_compile
+ itself
+ end
+
+ events = []
+ tp = TracePoint.new(:c_return) { |tp| events << [tp.event, tp.method_id, tp.return_value] }
+
+ # assume first call compiles
+ tp.enable { shouldnt_compile }
+
+ events
+} unless defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # MJIT calls extra Ruby methods
+
+# test c_call invalidation
+assert_equal '[[:c_call, :itself]]', %q{
+ # enable the event once to make sure invalidation
+ # happens the second time we enable it
+ TracePoint.new(:c_call) {}.enable{}
+
+ def compiled
+ itself
+ end
+
+ # assume first call compiles
+ compiled
+
+ events = []
+ tp = TracePoint.new(:c_call) { |tp| events << [tp.event, tp.method_id] }
+ tp.enable { compiled }
+
+ events
+}
+
+# test enabling tracing for a suspended fiber
+assert_equal '[[:return, 42]]', %q{
+ def traced_method
+ Fiber.yield
+ 42
+ end
+
+ events = []
+ tp = TracePoint.new(:return) { events << [_1.event, _1.return_value] }
+ # assume first call compiles
+ fiber = Fiber.new { traced_method }
+ fiber.resume
+ tp.enable(target: method(:traced_method))
+ fiber.resume
+
+ events
+}
+
+# test compiling on non-tracing ractor then running on a tracing one
+assert_equal '[:itself]', %q{
+ def traced_method
+ itself
+ end
+
+ tracing_ractor = Ractor.new do
+ # 1: start tracing
+ events = []
+ tp = TracePoint.new(:c_call) { events << _1.method_id }
+ tp.enable
+ Ractor.yield(nil)
+
+ # 3: run compiled method on tracing ractor
+ Ractor.yield(nil)
+ traced_method
+
+ events
+ ensure
+ tp&.disable
+ end
+
+ tracing_ractor.take
+
+ # 2: compile on non tracing ractor
+ traced_method
+
+ tracing_ractor.take
+ tracing_ractor.take
+}
+
+# Try to hit a lazy branch stub while another ractor enables tracing
+assert_equal '42', %q{
+ def compiled(arg)
+ if arg
+ arg + 1
+ else
+ itself
+ itself
+ end
+ end
+
+ ractor = Ractor.new do
+ compiled(false)
+ Ractor.yield(nil)
+ compiled(41)
+ end
+
+ tp = TracePoint.new(:line) { itself }
+ ractor.take
+ tp.enable
+
+ ractor.take
+}
+
+# Test equality with changing types
+assert_equal '[true, false, false, false]', %q{
+ def eq(a, b)
+ a == b
+ end
+
+ [
+ eq("foo", "foo"),
+ eq("foo", "bar"),
+ eq(:foo, "bar"),
+ eq("foo", :bar)
+ ]
+}
+
+# Redefined String eq
+assert_equal 'true', %q{
+ class String
+ def ==(other)
+ true
+ end
+ end
+
+ def eq(a, b)
+ a == b
+ end
+
+ eq("foo", "bar")
+ eq("foo", "bar")
+}
+
+# Redefined Integer eq
+assert_equal 'true', %q{
+ class Integer
+ def ==(other)
+ true
+ end
+ end
+
+ def eq(a, b)
+ a == b
+ end
+
+ eq(1, 2)
+ eq(1, 2)
+}
+
+# aset on array with invalid key
+assert_normal_exit %q{
+ def foo(arr)
+ arr[:foo] = 123
+ end
+
+ foo([1]) rescue nil
+ foo([1]) rescue nil
+}
+
+# test ractor exception on when setting ivar
+assert_equal '42', %q{
+ class A
+ def self.foo
+ _foo = 1
+ _bar = 2
+ begin
+ @bar = _foo + _bar
+ rescue Ractor::IsolationError
+ 42
+ end
+ end
+ end
+
+ A.foo
+ A.foo
+
+ Ractor.new { A.foo }.take
+}
+
+assert_equal '["plain", "special", "sub", "plain"]', %q{
+ def foo(arg)
+ arg.to_s
+ end
+
+ class Sub < String
+ end
+
+ special = String.new("special")
+ special.singleton_class
+
+ [
+ foo("plain"),
+ foo(special),
+ foo(Sub.new("sub")),
+ foo("plain")
+ ]
+}
+
+assert_equal '["sub", "sub"]', %q{
+ def foo(arg)
+ arg.to_s
+ end
+
+ class Sub < String
+ def to_s
+ super
+ end
+ end
+
+ sub = Sub.new("sub")
+
+ [foo(sub), foo(sub)]
+}
+
+assert_equal '[1]', %q{
+ def kwargs(value:)
+ value
+ end
+
+ 5.times.map { kwargs(value: 1) }.uniq
+}
+
+assert_equal '[:ok]', %q{
+ def kwargs(value:)
+ value
+ end
+
+ 5.times.map { kwargs() rescue :ok }.uniq
+}
+
+assert_equal '[:ok]', %q{
+ def kwargs(a:, b: nil)
+ value
+ end
+
+ 5.times.map { kwargs(b: 123) rescue :ok }.uniq
+}
+
+assert_equal '[[1, 2]]', %q{
+ def kwargs(left:, right:)
+ [left, right]
+ end
+
+ 5.times.flat_map do
+ [
+ kwargs(left: 1, right: 2),
+ kwargs(right: 2, left: 1)
+ ]
+ end.uniq
+}
+
+assert_equal '[[1, 2]]', %q{
+ def kwargs(lead, kwarg:)
+ [lead, kwarg]
+ end
+
+ 5.times.map { kwargs(1, kwarg: 2) }.uniq
+}
+
+# optional and keyword args
+assert_equal '[[1, 2, 3]]', %q{
+ def opt_and_kwargs(a, b=2, c: nil)
+ [a,b,c]
+ end
+
+ 5.times.map { opt_and_kwargs(1, c: 3) }.uniq
+}
+
+assert_equal '[[1, 2, 3]]', %q{
+ def opt_and_kwargs(a, b=nil, c: nil)
+ [a,b,c]
+ end
+
+ 5.times.map { opt_and_kwargs(1, 2, c: 3) }.uniq
+}
+
+# Bug #18453
+assert_equal '[[1, nil, 2]]', %q{
+ def opt_and_kwargs(a = {}, b: nil, c: nil)
+ [a, b, c]
+ end
+
+ 5.times.map { opt_and_kwargs(1, c: 2) }.uniq
+}
+
+assert_equal '[[{}, nil, 1]]', %q{
+ def opt_and_kwargs(a = {}, b: nil, c: nil)
+ [a, b, c]
+ end
+
+ 5.times.map { opt_and_kwargs(c: 1) }.uniq
+}
+
+# leading and keyword arguments are swapped into the right order
+assert_equal '[[1, 2, 3, 4, 5, 6]]', %q{
+ def kwargs(five, six, a:, b:, c:, d:)
+ [a, b, c, d, five, six]
+ end
+
+ 5.times.flat_map do
+ [
+ kwargs(5, 6, a: 1, b: 2, c: 3, d: 4),
+ kwargs(5, 6, a: 1, b: 2, d: 4, c: 3),
+ kwargs(5, 6, a: 1, c: 3, b: 2, d: 4),
+ kwargs(5, 6, a: 1, c: 3, d: 4, b: 2),
+ kwargs(5, 6, a: 1, d: 4, b: 2, c: 3),
+ kwargs(5, 6, a: 1, d: 4, c: 3, b: 2),
+ kwargs(5, 6, b: 2, a: 1, c: 3, d: 4),
+ kwargs(5, 6, b: 2, a: 1, d: 4, c: 3),
+ kwargs(5, 6, b: 2, c: 3, a: 1, d: 4),
+ kwargs(5, 6, b: 2, c: 3, d: 4, a: 1),
+ kwargs(5, 6, b: 2, d: 4, a: 1, c: 3),
+ kwargs(5, 6, b: 2, d: 4, c: 3, a: 1),
+ kwargs(5, 6, c: 3, a: 1, b: 2, d: 4),
+ kwargs(5, 6, c: 3, a: 1, d: 4, b: 2),
+ kwargs(5, 6, c: 3, b: 2, a: 1, d: 4),
+ kwargs(5, 6, c: 3, b: 2, d: 4, a: 1),
+ kwargs(5, 6, c: 3, d: 4, a: 1, b: 2),
+ kwargs(5, 6, c: 3, d: 4, b: 2, a: 1),
+ kwargs(5, 6, d: 4, a: 1, b: 2, c: 3),
+ kwargs(5, 6, d: 4, a: 1, c: 3, b: 2),
+ kwargs(5, 6, d: 4, b: 2, a: 1, c: 3),
+ kwargs(5, 6, d: 4, b: 2, c: 3, a: 1),
+ kwargs(5, 6, d: 4, c: 3, a: 1, b: 2),
+ kwargs(5, 6, d: 4, c: 3, b: 2, a: 1)
+ ]
+ end.uniq
+}
+
+# implicit hashes get skipped and don't break compilation
+assert_equal '[[:key]]', %q{
+ def implicit(hash)
+ hash.keys
+ end
+
+ 5.times.map { implicit(key: :value) }.uniq
+}
+
+# default values on keywords don't mess up argument order
+assert_equal '[2]', %q{
+ def default_value
+ 1
+ end
+
+ def default_expression(value: default_value)
+ value
+ end
+
+ 5.times.map { default_expression(value: 2) }.uniq
+}
+
+# constant default values on keywords
+assert_equal '[3]', %q{
+ def default_expression(value: 3)
+ value
+ end
+
+ 5.times.map { default_expression }.uniq
+}
+
+# non-constant default values on keywords
+assert_equal '[3]', %q{
+ def default_value
+ 3
+ end
+
+ def default_expression(value: default_value)
+ value
+ end
+
+ 5.times.map { default_expression }.uniq
+}
+
+# reordered optional kwargs
+assert_equal '[[100, 1]]', %q{
+ def foo(capacity: 100, max: nil)
+ [capacity, max]
+ end
+
+ 5.times.map { foo(max: 1) }.uniq
+}
+
+# invalid lead param
+assert_equal 'ok', %q{
+ def bar(baz: 2)
+ baz
+ end
+
+ def foo
+ bar(1, baz: 123)
+ end
+
+ begin
+ foo
+ foo
+ rescue ArgumentError => e
+ print "ok"
+ end
+}
+
+# reordered required kwargs
+assert_equal '[[1, 2, 3, 4]]', %q{
+ def foo(default1: 1, required1:, default2: 3, required2:)
+ [default1, required1, default2, required2]
+ end
+
+ 5.times.map { foo(required1: 2, required2: 4) }.uniq
+}
+
+# reordered default expression kwargs
+assert_equal '[[:one, :two, 3]]', %q{
+ def foo(arg1: (1+0), arg2: (2+0), arg3: (3+0))
+ [arg1, arg2, arg3]
+ end
+
+ 5.times.map { foo(arg2: :two, arg1: :one) }.uniq
+}
+
+# complex kwargs
+assert_equal '[[1, 2, 3, 4]]', %q{
+ def foo(required:, specified: 999, simple_default: 3, complex_default: "4".to_i)
+ [required, specified, simple_default, complex_default]
+ end
+
+ 5.times.map { foo(specified: 2, required: 1) }.uniq
+}
+
+# cfunc kwargs
+assert_equal '{:foo=>123}', %q{
+ def foo(bar)
+ bar.store(:value, foo: 123)
+ bar[:value]
+ end
+
+ foo({})
+ foo({})
+}
+
+# cfunc kwargs
+assert_equal '{:foo=>123}', %q{
+ def foo(bar)
+ bar.replace(foo: 123)
+ end
+
+ foo({})
+ foo({})
+}
+
+# cfunc kwargs
+assert_equal '{:foo=>123, :bar=>456}', %q{
+ def foo(bar)
+ bar.replace(foo: 123, bar: 456)
+ end
+
+ foo({})
+ foo({})
+}
+
+# variadic cfunc kwargs
+assert_equal '{:foo=>123}', %q{
+ def foo(bar)
+ bar.merge(foo: 123)
+ end
+
+ foo({})
+ foo({})
+}
+
+# optimized cfunc kwargs
+assert_equal 'false', %q{
+ def foo
+ :foo.eql?(foo: :foo)
+ end
+
+ foo
+ foo
+}
+
+# attr_reader on frozen object
+assert_equal 'false', %q{
+ class Foo
+ attr_reader :exception
+
+ def failed?
+ !exception.nil?
+ end
+ end
+
+ foo = Foo.new.freeze
+ foo.failed?
+ foo.failed?
+}
+
+# regression test for doing kwarg shuffle before checking for interrupts
+assert_equal 'ok', %q{
+ def new_media_drop(attributes:, product_drop:, context:, sources:)
+ nil.nomethod rescue nil # force YJIT to bail to side exit
+
+ [attributes, product_drop, context, sources]
+ end
+
+ def load_medias(product_drop: nil, raw_medias:, context:)
+ raw_medias.map do |raw_media|
+ case new_media_drop(context: context, attributes: raw_media, product_drop: product_drop, sources: [])
+ in [Hash, ProductDrop, Context, Array]
+ else
+ raise "bad shuffle"
+ end
+ end
+ end
+
+ class Context; end
+
+ class ProductDrop
+ attr_reader :title
+ def initialize(title)
+ @title = title
+ end
+ end
+
+ # Make a thread so we have thread switching interrupts
+ th = Thread.new do
+ while true; end
+ end
+ 1_000.times do |i|
+ load_medias(product_drop: ProductDrop.new("foo"), raw_medias: [{}, {}], context: Context.new)
+ end
+ th.kill.join
+
+ :ok
+}
+
+# regression test for tracing attr_accessor methods.
+assert_equal "true", %q{
+ c = Class.new do
+ attr_accessor :x
+ alias y x
+ alias y= x=
+ end
+ obj = c.new
+
+ ar_meth = obj.method(:x)
+ aw_meth = obj.method(:x=)
+ aar_meth = obj.method(:y)
+ aaw_meth = obj.method(:y=)
+ events = []
+ trace = TracePoint.new(:c_call, :c_return){|tp|
+ next if tp.path != __FILE__
+ next if tp.method_id == :call
+ case tp.event
+ when :c_call
+ events << [tp.event, tp.method_id, tp.callee_id]
+ when :c_return
+ events << [tp.event, tp.method_id, tp.callee_id, tp.return_value]
+ end
+ }
+ test_proc = proc do
+ obj.x = 1
+ obj.x
+ obj.y = 2
+ obj.y
+ aw_meth.call(1)
+ ar_meth.call
+ aaw_meth.call(2)
+ aar_meth.call
+ end
+ test_proc.call # populate call caches
+ trace.enable(&test_proc)
+ expected = [
+ [:c_call, :x=, :x=],
+ [:c_return, :x=, :x=, 1],
+ [:c_call, :x, :x],
+ [:c_return, :x, :x, 1],
+ [:c_call, :x=, :y=],
+ [:c_return, :x=, :y=, 2],
+ [:c_call, :x, :y],
+ [:c_return, :x, :y, 2],
+ ] * 2
+
+ expected == events
+}
+
+# duphash
+assert_equal '{:foo=>123}', %q{
+ def foo
+ {foo: 123}
+ end
+
+ foo
+ foo
+}
+
+# newhash
+assert_equal '{:foo=>2}', %q{
+ def foo
+ {foo: 1+1}
+ end
+
+ foo
+ foo
+}
+
+# block invalidation edge case
+assert_equal 'undef', %q{
+ class A
+ def foo(arg)
+ arg.times { A.remove_method(:bar) }
+ self
+ end
+
+ def bar
+ 4
+ end
+
+ def use(arg)
+ # two consecutive sends. When bar is removed, the return address
+ # for calling it is already on foo's control frame
+ foo(arg).bar
+ rescue NoMethodError
+ :undef
+ end
+ end
+
+ A.new.use 0
+ A.new.use 0
+ A.new.use 1
+}
+
+# block invalidation edge case
+assert_equal 'ok', %q{
+ class A
+ Good = :ng
+ def foo(arg)
+ arg.times { A.const_set(:Good, :ok) }
+ self
+ end
+
+ def id(arg)
+ arg
+ end
+
+ def use(arg)
+ # send followed by an opt_getinlinecache.
+ # The return address remains on the control frame
+ # when opt_getinlinecache is invalidated.
+ foo(arg).id(Good)
+ end
+ end
+
+ A.new.use 0
+ A.new.use 0
+ A.new.use 1
+}
+
+assert_equal 'ok', %q{
+ # test hitting a branch stub when out of memory
+ def nimai(jita)
+ if jita
+ :ng
+ else
+ :ok
+ end
+ end
+
+ nimai(true)
+ nimai(true)
+
+ RubyVM::YJIT.simulate_oom! if defined?(RubyVM::YJIT)
+
+ nimai(false)
+}
+
+assert_equal 'new', %q{
+ # test block invalidation while out of memory
+ def foo
+ :old
+ end
+
+ def test
+ foo
+ end
+
+ def bar
+ :bar
+ end
+
+
+ test
+ test
+
+ RubyVM::YJIT.simulate_oom! if defined?(RubyVM::YJIT)
+
+ # Old simulat_omm! leaves one byte of space and this fills it up
+ bar
+ bar
+
+ def foo
+ :new
+ end
+
+ test
+}
+
+assert_equal 'ok', %q{
+ # Try to compile new method while OOM
+ def foo
+ :ok
+ end
+
+ RubyVM::YJIT.simulate_oom! if defined?(RubyVM::YJIT)
+
+ foo
+ foo
+}
+
+# struct aref embedded
+assert_equal '2', %q{
+ def foo(s)
+ s.foo
+ end
+
+ S = Struct.new(:foo)
+ foo(S.new(1))
+ foo(S.new(2))
+}
+
+# struct aref non-embedded
+assert_equal '4', %q{
+ def foo(s)
+ s.d
+ end
+
+ S = Struct.new(:a, :b, :c, :d, :e)
+ foo(S.new(1,2,3,4,5))
+ foo(S.new(1,2,3,4,5))
+}
+
+# struct aset embedded
+assert_equal '123', %q{
+ def foo(s)
+ s.foo = 123
+ end
+
+ s = Struct.new(:foo).new
+ foo(s)
+ s = Struct.new(:foo).new
+ foo(s)
+ s.foo
+}
+
+# struct aset non-embedded
+assert_equal '[1, 2, 3, 4, 5]', %q{
+ def foo(s)
+ s.a = 1
+ s.b = 2
+ s.c = 3
+ s.d = 4
+ s.e = 5
+ end
+
+ S = Struct.new(:a, :b, :c, :d, :e)
+ s = S.new
+ foo(s)
+ s = S.new
+ foo(s)
+ [s.a, s.b, s.c, s.d, s.e]
+}
+
+# struct aref too many args
+assert_equal 'ok', %q{
+ def foo(s)
+ s.foo(:bad)
+ end
+
+ s = Struct.new(:foo).new
+ foo(s) rescue :ok
+ foo(s) rescue :ok
+}
+
+# struct aset too many args
+assert_equal 'ok', %q{
+ def foo(s)
+ s.set_foo(123, :bad)
+ end
+
+ s = Struct.new(:foo) do
+ alias :set_foo :foo=
+ end
+ foo(s) rescue :ok
+ foo(s) rescue :ok
+}
+
+# File.join is a cfunc accepting variable arguments as a Ruby array (argc = -2)
+assert_equal 'foo/bar', %q{
+ def foo
+ File.join("foo", "bar")
+ end
+
+ foo
+ foo
+}
+
+# File.join is a cfunc accepting variable arguments as a Ruby array (argc = -2)
+assert_equal '', %q{
+ def foo
+ File.join()
+ end
+
+ foo
+ foo
+}
+
+# Make sure we're correctly reading RStruct's as.ary union for embedded RStructs
+assert_equal '3,12', %q{
+ pt_struct = Struct.new(:x, :y)
+ p = pt_struct.new(3, 12)
+ def pt_inspect(pt)
+ "#{pt.x},#{pt.y}"
+ end
+
+ # Make sure pt_inspect is JITted
+ 10.times { pt_inspect(p) }
+
+ # Make sure it's returning '3,12' instead of e.g. '3,false'
+ pt_inspect(p)
+}
+
+# Regression test for deadlock between branch_stub_hit and ractor_receive_if
+assert_equal '10', %q{
+ r = Ractor.new Ractor.current do |main|
+ main << 1
+ main << 2
+ main << 3
+ main << 4
+ main << 5
+ main << 6
+ main << 7
+ main << 8
+ main << 9
+ main << 10
+ end
+
+ a = []
+ a << Ractor.receive_if{|msg| msg == 10}
+ a << Ractor.receive_if{|msg| msg == 9}
+ a << Ractor.receive_if{|msg| msg == 8}
+ a << Ractor.receive_if{|msg| msg == 7}
+ a << Ractor.receive_if{|msg| msg == 6}
+ a << Ractor.receive_if{|msg| msg == 5}
+ a << Ractor.receive_if{|msg| msg == 4}
+ a << Ractor.receive_if{|msg| msg == 3}
+ a << Ractor.receive_if{|msg| msg == 2}
+ a << Ractor.receive_if{|msg| msg == 1}
+
+ a.length
+}
+
+# checktype
+assert_equal 'false', %q{
+ def function()
+ [1, 2] in [Integer, String]
+ end
+ function()
+}
+
+# opt_send_without_block (VM_METHOD_TYPE_ATTRSET)
+assert_equal 'foo', %q{
+ class Foo
+ attr_writer :foo
+
+ def foo()
+ self.foo = "foo"
+ end
+ end
+ foo = Foo.new
+ foo.foo
+}
+
+# anytostring, intern
+assert_equal 'true', %q{
+ def foo()
+ :"#{true}"
+ end
+ foo()
+}
+
+# toregexp, objtostring
+assert_equal '/true/', %q{
+ def foo()
+ /#{true}/
+ end
+ foo().inspect
+}
+
+# concatstrings, objtostring
+assert_equal '9001', %q{
+ def foo()
+ "#{9001}"
+ end
+ foo()
+}
+
+# opt_send_without_block (VM_METHOD_TYPE_CFUNC)
+assert_equal 'nil', %q{
+ def foo
+ nil.inspect # argc: 0
+ end
+ foo
+}
+assert_equal '4', %q{
+ def foo
+ 2.pow(2) # argc: 1
+ end
+ foo
+}
+assert_equal 'aba', %q{
+ def foo
+ "abc".tr("c", "a") # argc: 2
+ end
+ foo
+}
+assert_equal 'true', %q{
+ def foo
+ respond_to?(:inspect) # argc: -1
+ end
+ foo
+}
+assert_equal '["a", "b"]', %q{
+ def foo
+ "a\nb".lines(chomp: true) # kwargs
+ end
+ foo
+}
+
+# invokebuiltin
+assert_equal '123', %q{
+ def foo(obj)
+ obj.foo = 123
+ end
+
+ struct = Struct.new(:foo)
+ obj = struct.new
+ foo(obj)
+}
+
+# invokebuiltin_delegate
+assert_equal '.', %q{
+ def foo(path)
+ Dir.open(path).path
+ end
+ foo(".")
+}
+
+# opt_invokebuiltin_delegate_leave
+assert_equal '[0]', %q{"\x00".unpack("c")}
+
+# opt_send_without_block (VM_METHOD_TYPE_ISEQ)
+assert_equal '1', %q{
+ def foo = 1
+ def bar = foo
+ bar
+}
+assert_equal '[1, 2, 3]', %q{
+ def foo(a, b) = [1, a, b]
+ def bar = foo(2, 3)
+ bar
+}
+assert_equal '[1, 2, 3, 4, 5, 6]', %q{
+ def foo(a, b, c:, d:, e: 0, f: 6) = [a, b, c, d, e, f]
+ def bar = foo(1, 2, c: 3, d: 4, e: 5)
+ bar
+}
+assert_equal '[1, 2, 3, 4]', %q{
+ def foo(a, b = 2) = [a, b]
+ def bar = foo(1) + foo(3, 4)
+ bar
+}
+
+assert_equal '1', %q{
+ def foo(a) = a
+ def bar = foo(1) { 2 }
+ bar
+}
+assert_equal '[1, 2]', %q{
+ def foo(a, &block) = [a, block.call]
+ def bar = foo(1) { 2 }
+ bar
+}
+
+# opt_send_without_block (VM_METHOD_TYPE_IVAR)
+assert_equal 'foo', %q{
+ class Foo
+ attr_reader :foo
+
+ def initialize
+ @foo = "foo"
+ end
+ end
+ Foo.new.foo
+}
+
+# opt_send_without_block (VM_METHOD_TYPE_OPTIMIZED)
+assert_equal 'foo', %q{
+ Foo = Struct.new(:bar)
+ Foo.new("bar").bar = "foo"
+}
+assert_equal 'foo', %q{
+ Foo = Struct.new(:bar)
+ Foo.new("foo").bar
+}
+
+# getblockparamproxy
+assert_equal 'foo', %q{
+ def foo(&block)
+ block.call
+ end
+ foo { "foo" }
+}
+
+# getblockparam
+assert_equal 'foo', %q{
+ def foo(&block)
+ block
+ end
+ foo { "foo" }.call
+}
+
+assert_equal '[1, 2]', %q{
+ def foo
+ x = [2]
+ [1, *x]
+ end
+
+ foo
+ foo
+}
+
+# respond_to? with changing symbol
+assert_equal 'false', %q{
+ def foo(name)
+ :sym.respond_to?(name)
+ end
+ foo(:to_s)
+ foo(:to_s)
+ foo(:not_exist)
+}
+
+# respond_to? with method being defined
+assert_equal 'true', %q{
+ def foo
+ :sym.respond_to?(:not_yet_defined)
+ end
+ foo
+ foo
+ module Kernel
+ def not_yet_defined = true
+ end
+ foo
+}
+
+# respond_to? with undef method
+assert_equal 'false', %q{
+ module Kernel
+ def to_be_removed = true
+ end
+ def foo
+ :sym.respond_to?(:to_be_removed)
+ end
+ foo
+ foo
+ class Object
+ undef_method :to_be_removed
+ end
+ foo
+}
+
+# respond_to? with respond_to_missing?
+assert_equal 'true', %q{
+ class Foo
+ end
+ def foo(x)
+ x.respond_to?(:bar)
+ end
+ foo(Foo.new)
+ foo(Foo.new)
+ class Foo
+ def respond_to_missing?(*) = true
+ end
+ foo(Foo.new)
+}
+
+# bmethod
+assert_equal '[1, 2, 3]', %q{
+ one = 1
+ define_method(:foo) do
+ one
+ end
+
+ 3.times.map { |i| foo + i }
+}
+
+# return inside bmethod
+assert_equal 'ok', %q{
+ define_method(:foo) do
+ 1.tap { return :ok }
+ end
+
+ foo
+}
+
+# bmethod optional and keywords
+assert_equal '[[1, nil, 2]]', %q{
+ define_method(:opt_and_kwargs) do |a = {}, b: nil, c: nil|
+ [a, b, c]
+ end
+
+ 5.times.map { opt_and_kwargs(1, c: 2) }.uniq
+}
+
+# bmethod with forwarded block
+assert_equal '2', %q{
+ define_method(:foo) do |&block|
+ block.call
+ end
+
+ def bar(&block)
+ foo(&block)
+ end
+
+ bar { 1 }
+ bar { 2 }
+}
+
+# bmethod with forwarded block and arguments
+assert_equal '5', %q{
+ define_method(:foo) do |n, &block|
+ n + block.call
+ end
+
+ def bar(n, &block)
+ foo(n, &block)
+ end
+
+ bar(0) { 1 }
+ bar(3) { 2 }
+}
+
+# bmethod with forwarded unwanted block
+assert_equal '1', %q{
+ one = 1
+ define_method(:foo) do
+ one
+ end
+
+ def bar(&block)
+ foo(&block)
+ end
+
+ bar { }
+ bar { }
+}
+
+# test for return stub lifetime issue
+assert_equal '1', %q{
+ def foo(n)
+ if n == 2
+ return 1.times { Object.define_method(:foo) {} }
+ end
+
+ foo(n + 1)
+ end
+
+ foo(1)
+}
+
+# case-when with redefined ===
+assert_equal 'ok', %q{
+ class Symbol
+ def ===(a)
+ true
+ end
+ end
+
+ def cw(arg)
+ case arg
+ when :b
+ :ok
+ when 4
+ :ng
+ end
+ end
+
+ cw(4)
+}
+
+assert_normal_exit %{
+ class Bug20997
+ def foo(&) = self.class.name(&)
+
+ new.foo
+ end
+}
diff --git a/bootstraptest/test_yjit_30k_ifelse.rb b/bootstraptest/test_yjit_30k_ifelse.rb
new file mode 100644
index 0000000000..c3afa95e4d
--- /dev/null
+++ b/bootstraptest/test_yjit_30k_ifelse.rb
@@ -0,0 +1,241023 @@
+# This is a torture test for the JIT.
+# There are 30K tiny methods with if-else statements in a 30-deep call hierarchy.
+assert_equal '100000', %q{
+
+def fun_l0_n0(x)
+ if (x < 1)
+ fun_l1_n310(x)
+ else
+ fun_l1_n485(x)
+ end
+end
+
+def fun_l0_n1(x)
+ if (x < 1)
+ fun_l1_n930(x)
+ else
+ fun_l1_n418(x)
+ end
+end
+
+def fun_l0_n2(x)
+ if (x < 1)
+ fun_l1_n549(x)
+ else
+ fun_l1_n44(x)
+ end
+end
+
+def fun_l0_n3(x)
+ if (x < 1)
+ fun_l1_n394(x)
+ else
+ fun_l1_n447(x)
+ end
+end
+
+def fun_l0_n4(x)
+ if (x < 1)
+ fun_l1_n683(x)
+ else
+ fun_l1_n547(x)
+ end
+end
+
+def fun_l0_n5(x)
+ if (x < 1)
+ fun_l1_n320(x)
+ else
+ fun_l1_n896(x)
+ end
+end
+
+def fun_l0_n6(x)
+ if (x < 1)
+ fun_l1_n649(x)
+ else
+ fun_l1_n243(x)
+ end
+end
+
+def fun_l0_n7(x)
+ if (x < 1)
+ fun_l1_n100(x)
+ else
+ fun_l1_n243(x)
+ end
+end
+
+def fun_l0_n8(x)
+ if (x < 1)
+ fun_l1_n839(x)
+ else
+ fun_l1_n720(x)
+ end
+end
+
+def fun_l0_n9(x)
+ if (x < 1)
+ fun_l1_n177(x)
+ else
+ fun_l1_n555(x)
+ end
+end
+
+def fun_l0_n10(x)
+ if (x < 1)
+ fun_l1_n814(x)
+ else
+ fun_l1_n900(x)
+ end
+end
+
+def fun_l0_n11(x)
+ if (x < 1)
+ fun_l1_n585(x)
+ else
+ fun_l1_n901(x)
+ end
+end
+
+def fun_l0_n12(x)
+ if (x < 1)
+ fun_l1_n952(x)
+ else
+ fun_l1_n270(x)
+ end
+end
+
+def fun_l0_n13(x)
+ if (x < 1)
+ fun_l1_n172(x)
+ else
+ fun_l1_n209(x)
+ end
+end
+
+def fun_l0_n14(x)
+ if (x < 1)
+ fun_l1_n514(x)
+ else
+ fun_l1_n414(x)
+ end
+end
+
+def fun_l0_n15(x)
+ if (x < 1)
+ fun_l1_n190(x)
+ else
+ fun_l1_n100(x)
+ end
+end
+
+def fun_l0_n16(x)
+ if (x < 1)
+ fun_l1_n696(x)
+ else
+ fun_l1_n997(x)
+ end
+end
+
+def fun_l0_n17(x)
+ if (x < 1)
+ fun_l1_n568(x)
+ else
+ fun_l1_n820(x)
+ end
+end
+
+def fun_l0_n18(x)
+ if (x < 1)
+ fun_l1_n837(x)
+ else
+ fun_l1_n588(x)
+ end
+end
+
+def fun_l0_n19(x)
+ if (x < 1)
+ fun_l1_n206(x)
+ else
+ fun_l1_n126(x)
+ end
+end
+
+def fun_l0_n20(x)
+ if (x < 1)
+ fun_l1_n317(x)
+ else
+ fun_l1_n722(x)
+ end
+end
+
+def fun_l0_n21(x)
+ if (x < 1)
+ fun_l1_n614(x)
+ else
+ fun_l1_n372(x)
+ end
+end
+
+def fun_l0_n22(x)
+ if (x < 1)
+ fun_l1_n530(x)
+ else
+ fun_l1_n862(x)
+ end
+end
+
+def fun_l0_n23(x)
+ if (x < 1)
+ fun_l1_n889(x)
+ else
+ fun_l1_n271(x)
+ end
+end
+
+def fun_l0_n24(x)
+ if (x < 1)
+ fun_l1_n996(x)
+ else
+ fun_l1_n717(x)
+ end
+end
+
+def fun_l0_n25(x)
+ if (x < 1)
+ fun_l1_n726(x)
+ else
+ fun_l1_n939(x)
+ end
+end
+
+def fun_l0_n26(x)
+ if (x < 1)
+ fun_l1_n316(x)
+ else
+ fun_l1_n293(x)
+ end
+end
+
+def fun_l0_n27(x)
+ if (x < 1)
+ fun_l1_n90(x)
+ else
+ fun_l1_n596(x)
+ end
+end
+
+def fun_l0_n28(x)
+ if (x < 1)
+ fun_l1_n743(x)
+ else
+ fun_l1_n782(x)
+ end
+end
+
+def fun_l0_n29(x)
+ if (x < 1)
+ fun_l1_n896(x)
+ else
+ fun_l1_n247(x)
+ end
+end
+
+def fun_l0_n30(x)
+ if (x < 1)
+ fun_l1_n2(x)
+ else
+ fun_l1_n377(x)
+ end
+end
+
+def fun_l0_n31(x)
+ if (x < 1)
+ fun_l1_n380(x)
+ else
+ fun_l1_n655(x)
+ end
+end
+
+def fun_l0_n32(x)
+ if (x < 1)
+ fun_l1_n572(x)
+ else
+ fun_l1_n778(x)
+ end
+end
+
+def fun_l0_n33(x)
+ if (x < 1)
+ fun_l1_n485(x)
+ else
+ fun_l1_n282(x)
+ end
+end
+
+def fun_l0_n34(x)
+ if (x < 1)
+ fun_l1_n703(x)
+ else
+ fun_l1_n179(x)
+ end
+end
+
+def fun_l0_n35(x)
+ if (x < 1)
+ fun_l1_n281(x)
+ else
+ fun_l1_n572(x)
+ end
+end
+
+def fun_l0_n36(x)
+ if (x < 1)
+ fun_l1_n48(x)
+ else
+ fun_l1_n286(x)
+ end
+end
+
+def fun_l0_n37(x)
+ if (x < 1)
+ fun_l1_n539(x)
+ else
+ fun_l1_n86(x)
+ end
+end
+
+def fun_l0_n38(x)
+ if (x < 1)
+ fun_l1_n918(x)
+ else
+ fun_l1_n778(x)
+ end
+end
+
+def fun_l0_n39(x)
+ if (x < 1)
+ fun_l1_n832(x)
+ else
+ fun_l1_n94(x)
+ end
+end
+
+def fun_l0_n40(x)
+ if (x < 1)
+ fun_l1_n213(x)
+ else
+ fun_l1_n580(x)
+ end
+end
+
+def fun_l0_n41(x)
+ if (x < 1)
+ fun_l1_n413(x)
+ else
+ fun_l1_n793(x)
+ end
+end
+
+def fun_l0_n42(x)
+ if (x < 1)
+ fun_l1_n451(x)
+ else
+ fun_l1_n779(x)
+ end
+end
+
+def fun_l0_n43(x)
+ if (x < 1)
+ fun_l1_n118(x)
+ else
+ fun_l1_n778(x)
+ end
+end
+
+def fun_l0_n44(x)
+ if (x < 1)
+ fun_l1_n162(x)
+ else
+ fun_l1_n901(x)
+ end
+end
+
+def fun_l0_n45(x)
+ if (x < 1)
+ fun_l1_n157(x)
+ else
+ fun_l1_n280(x)
+ end
+end
+
+def fun_l0_n46(x)
+ if (x < 1)
+ fun_l1_n748(x)
+ else
+ fun_l1_n881(x)
+ end
+end
+
+def fun_l0_n47(x)
+ if (x < 1)
+ fun_l1_n529(x)
+ else
+ fun_l1_n732(x)
+ end
+end
+
+def fun_l0_n48(x)
+ if (x < 1)
+ fun_l1_n417(x)
+ else
+ fun_l1_n483(x)
+ end
+end
+
+def fun_l0_n49(x)
+ if (x < 1)
+ fun_l1_n743(x)
+ else
+ fun_l1_n525(x)
+ end
+end
+
+def fun_l0_n50(x)
+ if (x < 1)
+ fun_l1_n14(x)
+ else
+ fun_l1_n309(x)
+ end
+end
+
+def fun_l0_n51(x)
+ if (x < 1)
+ fun_l1_n436(x)
+ else
+ fun_l1_n304(x)
+ end
+end
+
+def fun_l0_n52(x)
+ if (x < 1)
+ fun_l1_n623(x)
+ else
+ fun_l1_n590(x)
+ end
+end
+
+def fun_l0_n53(x)
+ if (x < 1)
+ fun_l1_n696(x)
+ else
+ fun_l1_n53(x)
+ end
+end
+
+def fun_l0_n54(x)
+ if (x < 1)
+ fun_l1_n807(x)
+ else
+ fun_l1_n523(x)
+ end
+end
+
+def fun_l0_n55(x)
+ if (x < 1)
+ fun_l1_n607(x)
+ else
+ fun_l1_n609(x)
+ end
+end
+
+def fun_l0_n56(x)
+ if (x < 1)
+ fun_l1_n721(x)
+ else
+ fun_l1_n994(x)
+ end
+end
+
+def fun_l0_n57(x)
+ if (x < 1)
+ fun_l1_n472(x)
+ else
+ fun_l1_n818(x)
+ end
+end
+
+def fun_l0_n58(x)
+ if (x < 1)
+ fun_l1_n30(x)
+ else
+ fun_l1_n954(x)
+ end
+end
+
+def fun_l0_n59(x)
+ if (x < 1)
+ fun_l1_n223(x)
+ else
+ fun_l1_n148(x)
+ end
+end
+
+def fun_l0_n60(x)
+ if (x < 1)
+ fun_l1_n761(x)
+ else
+ fun_l1_n40(x)
+ end
+end
+
+def fun_l0_n61(x)
+ if (x < 1)
+ fun_l1_n57(x)
+ else
+ fun_l1_n858(x)
+ end
+end
+
+def fun_l0_n62(x)
+ if (x < 1)
+ fun_l1_n114(x)
+ else
+ fun_l1_n767(x)
+ end
+end
+
+def fun_l0_n63(x)
+ if (x < 1)
+ fun_l1_n287(x)
+ else
+ fun_l1_n752(x)
+ end
+end
+
+def fun_l0_n64(x)
+ if (x < 1)
+ fun_l1_n16(x)
+ else
+ fun_l1_n229(x)
+ end
+end
+
+def fun_l0_n65(x)
+ if (x < 1)
+ fun_l1_n230(x)
+ else
+ fun_l1_n954(x)
+ end
+end
+
+def fun_l0_n66(x)
+ if (x < 1)
+ fun_l1_n98(x)
+ else
+ fun_l1_n320(x)
+ end
+end
+
+def fun_l0_n67(x)
+ if (x < 1)
+ fun_l1_n878(x)
+ else
+ fun_l1_n985(x)
+ end
+end
+
+def fun_l0_n68(x)
+ if (x < 1)
+ fun_l1_n32(x)
+ else
+ fun_l1_n648(x)
+ end
+end
+
+def fun_l0_n69(x)
+ if (x < 1)
+ fun_l1_n453(x)
+ else
+ fun_l1_n466(x)
+ end
+end
+
+def fun_l0_n70(x)
+ if (x < 1)
+ fun_l1_n787(x)
+ else
+ fun_l1_n802(x)
+ end
+end
+
+def fun_l0_n71(x)
+ if (x < 1)
+ fun_l1_n656(x)
+ else
+ fun_l1_n347(x)
+ end
+end
+
+def fun_l0_n72(x)
+ if (x < 1)
+ fun_l1_n358(x)
+ else
+ fun_l1_n336(x)
+ end
+end
+
+def fun_l0_n73(x)
+ if (x < 1)
+ fun_l1_n291(x)
+ else
+ fun_l1_n536(x)
+ end
+end
+
+def fun_l0_n74(x)
+ if (x < 1)
+ fun_l1_n795(x)
+ else
+ fun_l1_n606(x)
+ end
+end
+
+def fun_l0_n75(x)
+ if (x < 1)
+ fun_l1_n21(x)
+ else
+ fun_l1_n720(x)
+ end
+end
+
+def fun_l0_n76(x)
+ if (x < 1)
+ fun_l1_n513(x)
+ else
+ fun_l1_n300(x)
+ end
+end
+
+def fun_l0_n77(x)
+ if (x < 1)
+ fun_l1_n358(x)
+ else
+ fun_l1_n332(x)
+ end
+end
+
+def fun_l0_n78(x)
+ if (x < 1)
+ fun_l1_n712(x)
+ else
+ fun_l1_n906(x)
+ end
+end
+
+def fun_l0_n79(x)
+ if (x < 1)
+ fun_l1_n555(x)
+ else
+ fun_l1_n850(x)
+ end
+end
+
+def fun_l0_n80(x)
+ if (x < 1)
+ fun_l1_n320(x)
+ else
+ fun_l1_n892(x)
+ end
+end
+
+def fun_l0_n81(x)
+ if (x < 1)
+ fun_l1_n191(x)
+ else
+ fun_l1_n187(x)
+ end
+end
+
+def fun_l0_n82(x)
+ if (x < 1)
+ fun_l1_n457(x)
+ else
+ fun_l1_n718(x)
+ end
+end
+
+def fun_l0_n83(x)
+ if (x < 1)
+ fun_l1_n314(x)
+ else
+ fun_l1_n697(x)
+ end
+end
+
+def fun_l0_n84(x)
+ if (x < 1)
+ fun_l1_n459(x)
+ else
+ fun_l1_n500(x)
+ end
+end
+
+def fun_l0_n85(x)
+ if (x < 1)
+ fun_l1_n912(x)
+ else
+ fun_l1_n992(x)
+ end
+end
+
+def fun_l0_n86(x)
+ if (x < 1)
+ fun_l1_n523(x)
+ else
+ fun_l1_n201(x)
+ end
+end
+
+def fun_l0_n87(x)
+ if (x < 1)
+ fun_l1_n30(x)
+ else
+ fun_l1_n829(x)
+ end
+end
+
+def fun_l0_n88(x)
+ if (x < 1)
+ fun_l1_n223(x)
+ else
+ fun_l1_n799(x)
+ end
+end
+
+def fun_l0_n89(x)
+ if (x < 1)
+ fun_l1_n289(x)
+ else
+ fun_l1_n289(x)
+ end
+end
+
+def fun_l0_n90(x)
+ if (x < 1)
+ fun_l1_n961(x)
+ else
+ fun_l1_n694(x)
+ end
+end
+
+def fun_l0_n91(x)
+ if (x < 1)
+ fun_l1_n423(x)
+ else
+ fun_l1_n848(x)
+ end
+end
+
+def fun_l0_n92(x)
+ if (x < 1)
+ fun_l1_n612(x)
+ else
+ fun_l1_n358(x)
+ end
+end
+
+def fun_l0_n93(x)
+ if (x < 1)
+ fun_l1_n148(x)
+ else
+ fun_l1_n312(x)
+ end
+end
+
+def fun_l0_n94(x)
+ if (x < 1)
+ fun_l1_n771(x)
+ else
+ fun_l1_n205(x)
+ end
+end
+
+def fun_l0_n95(x)
+ if (x < 1)
+ fun_l1_n573(x)
+ else
+ fun_l1_n692(x)
+ end
+end
+
+def fun_l0_n96(x)
+ if (x < 1)
+ fun_l1_n66(x)
+ else
+ fun_l1_n936(x)
+ end
+end
+
+def fun_l0_n97(x)
+ if (x < 1)
+ fun_l1_n429(x)
+ else
+ fun_l1_n949(x)
+ end
+end
+
+def fun_l0_n98(x)
+ if (x < 1)
+ fun_l1_n737(x)
+ else
+ fun_l1_n338(x)
+ end
+end
+
+def fun_l0_n99(x)
+ if (x < 1)
+ fun_l1_n335(x)
+ else
+ fun_l1_n739(x)
+ end
+end
+
+def fun_l0_n100(x)
+ if (x < 1)
+ fun_l1_n989(x)
+ else
+ fun_l1_n735(x)
+ end
+end
+
+def fun_l0_n101(x)
+ if (x < 1)
+ fun_l1_n559(x)
+ else
+ fun_l1_n478(x)
+ end
+end
+
+def fun_l0_n102(x)
+ if (x < 1)
+ fun_l1_n261(x)
+ else
+ fun_l1_n162(x)
+ end
+end
+
+def fun_l0_n103(x)
+ if (x < 1)
+ fun_l1_n400(x)
+ else
+ fun_l1_n156(x)
+ end
+end
+
+def fun_l0_n104(x)
+ if (x < 1)
+ fun_l1_n747(x)
+ else
+ fun_l1_n361(x)
+ end
+end
+
+def fun_l0_n105(x)
+ if (x < 1)
+ fun_l1_n717(x)
+ else
+ fun_l1_n522(x)
+ end
+end
+
+def fun_l0_n106(x)
+ if (x < 1)
+ fun_l1_n513(x)
+ else
+ fun_l1_n150(x)
+ end
+end
+
+def fun_l0_n107(x)
+ if (x < 1)
+ fun_l1_n710(x)
+ else
+ fun_l1_n602(x)
+ end
+end
+
+def fun_l0_n108(x)
+ if (x < 1)
+ fun_l1_n866(x)
+ else
+ fun_l1_n111(x)
+ end
+end
+
+def fun_l0_n109(x)
+ if (x < 1)
+ fun_l1_n725(x)
+ else
+ fun_l1_n448(x)
+ end
+end
+
+def fun_l0_n110(x)
+ if (x < 1)
+ fun_l1_n703(x)
+ else
+ fun_l1_n127(x)
+ end
+end
+
+def fun_l0_n111(x)
+ if (x < 1)
+ fun_l1_n420(x)
+ else
+ fun_l1_n666(x)
+ end
+end
+
+def fun_l0_n112(x)
+ if (x < 1)
+ fun_l1_n647(x)
+ else
+ fun_l1_n567(x)
+ end
+end
+
+def fun_l0_n113(x)
+ if (x < 1)
+ fun_l1_n543(x)
+ else
+ fun_l1_n992(x)
+ end
+end
+
+def fun_l0_n114(x)
+ if (x < 1)
+ fun_l1_n12(x)
+ else
+ fun_l1_n470(x)
+ end
+end
+
+def fun_l0_n115(x)
+ if (x < 1)
+ fun_l1_n25(x)
+ else
+ fun_l1_n917(x)
+ end
+end
+
+def fun_l0_n116(x)
+ if (x < 1)
+ fun_l1_n201(x)
+ else
+ fun_l1_n110(x)
+ end
+end
+
+def fun_l0_n117(x)
+ if (x < 1)
+ fun_l1_n222(x)
+ else
+ fun_l1_n747(x)
+ end
+end
+
+def fun_l0_n118(x)
+ if (x < 1)
+ fun_l1_n990(x)
+ else
+ fun_l1_n794(x)
+ end
+end
+
+def fun_l0_n119(x)
+ if (x < 1)
+ fun_l1_n712(x)
+ else
+ fun_l1_n5(x)
+ end
+end
+
+def fun_l0_n120(x)
+ if (x < 1)
+ fun_l1_n28(x)
+ else
+ fun_l1_n89(x)
+ end
+end
+
+def fun_l0_n121(x)
+ if (x < 1)
+ fun_l1_n341(x)
+ else
+ fun_l1_n983(x)
+ end
+end
+
+def fun_l0_n122(x)
+ if (x < 1)
+ fun_l1_n123(x)
+ else
+ fun_l1_n452(x)
+ end
+end
+
+def fun_l0_n123(x)
+ if (x < 1)
+ fun_l1_n514(x)
+ else
+ fun_l1_n949(x)
+ end
+end
+
+def fun_l0_n124(x)
+ if (x < 1)
+ fun_l1_n280(x)
+ else
+ fun_l1_n281(x)
+ end
+end
+
+def fun_l0_n125(x)
+ if (x < 1)
+ fun_l1_n512(x)
+ else
+ fun_l1_n772(x)
+ end
+end
+
+def fun_l0_n126(x)
+ if (x < 1)
+ fun_l1_n911(x)
+ else
+ fun_l1_n693(x)
+ end
+end
+
+def fun_l0_n127(x)
+ if (x < 1)
+ fun_l1_n633(x)
+ else
+ fun_l1_n574(x)
+ end
+end
+
+def fun_l0_n128(x)
+ if (x < 1)
+ fun_l1_n318(x)
+ else
+ fun_l1_n266(x)
+ end
+end
+
+def fun_l0_n129(x)
+ if (x < 1)
+ fun_l1_n677(x)
+ else
+ fun_l1_n10(x)
+ end
+end
+
+def fun_l0_n130(x)
+ if (x < 1)
+ fun_l1_n994(x)
+ else
+ fun_l1_n48(x)
+ end
+end
+
+def fun_l0_n131(x)
+ if (x < 1)
+ fun_l1_n335(x)
+ else
+ fun_l1_n473(x)
+ end
+end
+
+def fun_l0_n132(x)
+ if (x < 1)
+ fun_l1_n641(x)
+ else
+ fun_l1_n48(x)
+ end
+end
+
+def fun_l0_n133(x)
+ if (x < 1)
+ fun_l1_n914(x)
+ else
+ fun_l1_n818(x)
+ end
+end
+
+def fun_l0_n134(x)
+ if (x < 1)
+ fun_l1_n479(x)
+ else
+ fun_l1_n761(x)
+ end
+end
+
+def fun_l0_n135(x)
+ if (x < 1)
+ fun_l1_n186(x)
+ else
+ fun_l1_n692(x)
+ end
+end
+
+def fun_l0_n136(x)
+ if (x < 1)
+ fun_l1_n325(x)
+ else
+ fun_l1_n279(x)
+ end
+end
+
+def fun_l0_n137(x)
+ if (x < 1)
+ fun_l1_n493(x)
+ else
+ fun_l1_n293(x)
+ end
+end
+
+def fun_l0_n138(x)
+ if (x < 1)
+ fun_l1_n788(x)
+ else
+ fun_l1_n364(x)
+ end
+end
+
+def fun_l0_n139(x)
+ if (x < 1)
+ fun_l1_n565(x)
+ else
+ fun_l1_n63(x)
+ end
+end
+
+def fun_l0_n140(x)
+ if (x < 1)
+ fun_l1_n128(x)
+ else
+ fun_l1_n299(x)
+ end
+end
+
+def fun_l0_n141(x)
+ if (x < 1)
+ fun_l1_n782(x)
+ else
+ fun_l1_n195(x)
+ end
+end
+
+def fun_l0_n142(x)
+ if (x < 1)
+ fun_l1_n696(x)
+ else
+ fun_l1_n117(x)
+ end
+end
+
+def fun_l0_n143(x)
+ if (x < 1)
+ fun_l1_n263(x)
+ else
+ fun_l1_n683(x)
+ end
+end
+
+def fun_l0_n144(x)
+ if (x < 1)
+ fun_l1_n633(x)
+ else
+ fun_l1_n92(x)
+ end
+end
+
+def fun_l0_n145(x)
+ if (x < 1)
+ fun_l1_n626(x)
+ else
+ fun_l1_n201(x)
+ end
+end
+
+def fun_l0_n146(x)
+ if (x < 1)
+ fun_l1_n296(x)
+ else
+ fun_l1_n425(x)
+ end
+end
+
+def fun_l0_n147(x)
+ if (x < 1)
+ fun_l1_n395(x)
+ else
+ fun_l1_n750(x)
+ end
+end
+
+def fun_l0_n148(x)
+ if (x < 1)
+ fun_l1_n164(x)
+ else
+ fun_l1_n580(x)
+ end
+end
+
+def fun_l0_n149(x)
+ if (x < 1)
+ fun_l1_n904(x)
+ else
+ fun_l1_n264(x)
+ end
+end
+
+def fun_l0_n150(x)
+ if (x < 1)
+ fun_l1_n383(x)
+ else
+ fun_l1_n558(x)
+ end
+end
+
+def fun_l0_n151(x)
+ if (x < 1)
+ fun_l1_n522(x)
+ else
+ fun_l1_n735(x)
+ end
+end
+
+def fun_l0_n152(x)
+ if (x < 1)
+ fun_l1_n496(x)
+ else
+ fun_l1_n562(x)
+ end
+end
+
+def fun_l0_n153(x)
+ if (x < 1)
+ fun_l1_n374(x)
+ else
+ fun_l1_n561(x)
+ end
+end
+
+def fun_l0_n154(x)
+ if (x < 1)
+ fun_l1_n314(x)
+ else
+ fun_l1_n368(x)
+ end
+end
+
+def fun_l0_n155(x)
+ if (x < 1)
+ fun_l1_n456(x)
+ else
+ fun_l1_n189(x)
+ end
+end
+
+def fun_l0_n156(x)
+ if (x < 1)
+ fun_l1_n46(x)
+ else
+ fun_l1_n620(x)
+ end
+end
+
+def fun_l0_n157(x)
+ if (x < 1)
+ fun_l1_n259(x)
+ else
+ fun_l1_n742(x)
+ end
+end
+
+def fun_l0_n158(x)
+ if (x < 1)
+ fun_l1_n881(x)
+ else
+ fun_l1_n786(x)
+ end
+end
+
+def fun_l0_n159(x)
+ if (x < 1)
+ fun_l1_n607(x)
+ else
+ fun_l1_n177(x)
+ end
+end
+
+def fun_l0_n160(x)
+ if (x < 1)
+ fun_l1_n824(x)
+ else
+ fun_l1_n415(x)
+ end
+end
+
+def fun_l0_n161(x)
+ if (x < 1)
+ fun_l1_n443(x)
+ else
+ fun_l1_n787(x)
+ end
+end
+
+def fun_l0_n162(x)
+ if (x < 1)
+ fun_l1_n124(x)
+ else
+ fun_l1_n529(x)
+ end
+end
+
+def fun_l0_n163(x)
+ if (x < 1)
+ fun_l1_n696(x)
+ else
+ fun_l1_n96(x)
+ end
+end
+
+def fun_l0_n164(x)
+ if (x < 1)
+ fun_l1_n775(x)
+ else
+ fun_l1_n549(x)
+ end
+end
+
+def fun_l0_n165(x)
+ if (x < 1)
+ fun_l1_n860(x)
+ else
+ fun_l1_n212(x)
+ end
+end
+
+def fun_l0_n166(x)
+ if (x < 1)
+ fun_l1_n378(x)
+ else
+ fun_l1_n904(x)
+ end
+end
+
+def fun_l0_n167(x)
+ if (x < 1)
+ fun_l1_n15(x)
+ else
+ fun_l1_n640(x)
+ end
+end
+
+def fun_l0_n168(x)
+ if (x < 1)
+ fun_l1_n771(x)
+ else
+ fun_l1_n861(x)
+ end
+end
+
+def fun_l0_n169(x)
+ if (x < 1)
+ fun_l1_n468(x)
+ else
+ fun_l1_n586(x)
+ end
+end
+
+def fun_l0_n170(x)
+ if (x < 1)
+ fun_l1_n477(x)
+ else
+ fun_l1_n674(x)
+ end
+end
+
+def fun_l0_n171(x)
+ if (x < 1)
+ fun_l1_n509(x)
+ else
+ fun_l1_n64(x)
+ end
+end
+
+def fun_l0_n172(x)
+ if (x < 1)
+ fun_l1_n612(x)
+ else
+ fun_l1_n828(x)
+ end
+end
+
+def fun_l0_n173(x)
+ if (x < 1)
+ fun_l1_n440(x)
+ else
+ fun_l1_n204(x)
+ end
+end
+
+def fun_l0_n174(x)
+ if (x < 1)
+ fun_l1_n259(x)
+ else
+ fun_l1_n947(x)
+ end
+end
+
+def fun_l0_n175(x)
+ if (x < 1)
+ fun_l1_n402(x)
+ else
+ fun_l1_n588(x)
+ end
+end
+
+def fun_l0_n176(x)
+ if (x < 1)
+ fun_l1_n245(x)
+ else
+ fun_l1_n540(x)
+ end
+end
+
+def fun_l0_n177(x)
+ if (x < 1)
+ fun_l1_n869(x)
+ else
+ fun_l1_n249(x)
+ end
+end
+
+def fun_l0_n178(x)
+ if (x < 1)
+ fun_l1_n830(x)
+ else
+ fun_l1_n210(x)
+ end
+end
+
+def fun_l0_n179(x)
+ if (x < 1)
+ fun_l1_n692(x)
+ else
+ fun_l1_n222(x)
+ end
+end
+
+def fun_l0_n180(x)
+ if (x < 1)
+ fun_l1_n220(x)
+ else
+ fun_l1_n281(x)
+ end
+end
+
+def fun_l0_n181(x)
+ if (x < 1)
+ fun_l1_n523(x)
+ else
+ fun_l1_n618(x)
+ end
+end
+
+def fun_l0_n182(x)
+ if (x < 1)
+ fun_l1_n44(x)
+ else
+ fun_l1_n422(x)
+ end
+end
+
+def fun_l0_n183(x)
+ if (x < 1)
+ fun_l1_n944(x)
+ else
+ fun_l1_n230(x)
+ end
+end
+
+def fun_l0_n184(x)
+ if (x < 1)
+ fun_l1_n678(x)
+ else
+ fun_l1_n121(x)
+ end
+end
+
+def fun_l0_n185(x)
+ if (x < 1)
+ fun_l1_n73(x)
+ else
+ fun_l1_n398(x)
+ end
+end
+
+def fun_l0_n186(x)
+ if (x < 1)
+ fun_l1_n121(x)
+ else
+ fun_l1_n689(x)
+ end
+end
+
+def fun_l0_n187(x)
+ if (x < 1)
+ fun_l1_n946(x)
+ else
+ fun_l1_n613(x)
+ end
+end
+
+def fun_l0_n188(x)
+ if (x < 1)
+ fun_l1_n987(x)
+ else
+ fun_l1_n785(x)
+ end
+end
+
+def fun_l0_n189(x)
+ if (x < 1)
+ fun_l1_n181(x)
+ else
+ fun_l1_n644(x)
+ end
+end
+
+def fun_l0_n190(x)
+ if (x < 1)
+ fun_l1_n623(x)
+ else
+ fun_l1_n679(x)
+ end
+end
+
+def fun_l0_n191(x)
+ if (x < 1)
+ fun_l1_n784(x)
+ else
+ fun_l1_n274(x)
+ end
+end
+
+def fun_l0_n192(x)
+ if (x < 1)
+ fun_l1_n71(x)
+ else
+ fun_l1_n773(x)
+ end
+end
+
+def fun_l0_n193(x)
+ if (x < 1)
+ fun_l1_n516(x)
+ else
+ fun_l1_n496(x)
+ end
+end
+
+def fun_l0_n194(x)
+ if (x < 1)
+ fun_l1_n608(x)
+ else
+ fun_l1_n460(x)
+ end
+end
+
+def fun_l0_n195(x)
+ if (x < 1)
+ fun_l1_n25(x)
+ else
+ fun_l1_n437(x)
+ end
+end
+
+def fun_l0_n196(x)
+ if (x < 1)
+ fun_l1_n410(x)
+ else
+ fun_l1_n674(x)
+ end
+end
+
+def fun_l0_n197(x)
+ if (x < 1)
+ fun_l1_n949(x)
+ else
+ fun_l1_n708(x)
+ end
+end
+
+def fun_l0_n198(x)
+ if (x < 1)
+ fun_l1_n714(x)
+ else
+ fun_l1_n119(x)
+ end
+end
+
+def fun_l0_n199(x)
+ if (x < 1)
+ fun_l1_n41(x)
+ else
+ fun_l1_n865(x)
+ end
+end
+
+def fun_l0_n200(x)
+ if (x < 1)
+ fun_l1_n383(x)
+ else
+ fun_l1_n90(x)
+ end
+end
+
+def fun_l0_n201(x)
+ if (x < 1)
+ fun_l1_n581(x)
+ else
+ fun_l1_n273(x)
+ end
+end
+
+def fun_l0_n202(x)
+ if (x < 1)
+ fun_l1_n350(x)
+ else
+ fun_l1_n425(x)
+ end
+end
+
+def fun_l0_n203(x)
+ if (x < 1)
+ fun_l1_n259(x)
+ else
+ fun_l1_n922(x)
+ end
+end
+
+def fun_l0_n204(x)
+ if (x < 1)
+ fun_l1_n448(x)
+ else
+ fun_l1_n741(x)
+ end
+end
+
+def fun_l0_n205(x)
+ if (x < 1)
+ fun_l1_n86(x)
+ else
+ fun_l1_n618(x)
+ end
+end
+
+def fun_l0_n206(x)
+ if (x < 1)
+ fun_l1_n412(x)
+ else
+ fun_l1_n646(x)
+ end
+end
+
+def fun_l0_n207(x)
+ if (x < 1)
+ fun_l1_n196(x)
+ else
+ fun_l1_n496(x)
+ end
+end
+
+def fun_l0_n208(x)
+ if (x < 1)
+ fun_l1_n777(x)
+ else
+ fun_l1_n150(x)
+ end
+end
+
+def fun_l0_n209(x)
+ if (x < 1)
+ fun_l1_n20(x)
+ else
+ fun_l1_n718(x)
+ end
+end
+
+def fun_l0_n210(x)
+ if (x < 1)
+ fun_l1_n934(x)
+ else
+ fun_l1_n416(x)
+ end
+end
+
+def fun_l0_n211(x)
+ if (x < 1)
+ fun_l1_n803(x)
+ else
+ fun_l1_n636(x)
+ end
+end
+
+def fun_l0_n212(x)
+ if (x < 1)
+ fun_l1_n93(x)
+ else
+ fun_l1_n791(x)
+ end
+end
+
+def fun_l0_n213(x)
+ if (x < 1)
+ fun_l1_n76(x)
+ else
+ fun_l1_n172(x)
+ end
+end
+
+def fun_l0_n214(x)
+ if (x < 1)
+ fun_l1_n103(x)
+ else
+ fun_l1_n381(x)
+ end
+end
+
+def fun_l0_n215(x)
+ if (x < 1)
+ fun_l1_n433(x)
+ else
+ fun_l1_n349(x)
+ end
+end
+
+def fun_l0_n216(x)
+ if (x < 1)
+ fun_l1_n154(x)
+ else
+ fun_l1_n740(x)
+ end
+end
+
+def fun_l0_n217(x)
+ if (x < 1)
+ fun_l1_n927(x)
+ else
+ fun_l1_n886(x)
+ end
+end
+
+def fun_l0_n218(x)
+ if (x < 1)
+ fun_l1_n804(x)
+ else
+ fun_l1_n6(x)
+ end
+end
+
+def fun_l0_n219(x)
+ if (x < 1)
+ fun_l1_n921(x)
+ else
+ fun_l1_n121(x)
+ end
+end
+
+def fun_l0_n220(x)
+ if (x < 1)
+ fun_l1_n732(x)
+ else
+ fun_l1_n224(x)
+ end
+end
+
+def fun_l0_n221(x)
+ if (x < 1)
+ fun_l1_n818(x)
+ else
+ fun_l1_n105(x)
+ end
+end
+
+def fun_l0_n222(x)
+ if (x < 1)
+ fun_l1_n162(x)
+ else
+ fun_l1_n700(x)
+ end
+end
+
+def fun_l0_n223(x)
+ if (x < 1)
+ fun_l1_n57(x)
+ else
+ fun_l1_n734(x)
+ end
+end
+
+def fun_l0_n224(x)
+ if (x < 1)
+ fun_l1_n283(x)
+ else
+ fun_l1_n87(x)
+ end
+end
+
+def fun_l0_n225(x)
+ if (x < 1)
+ fun_l1_n623(x)
+ else
+ fun_l1_n363(x)
+ end
+end
+
+def fun_l0_n226(x)
+ if (x < 1)
+ fun_l1_n962(x)
+ else
+ fun_l1_n660(x)
+ end
+end
+
+def fun_l0_n227(x)
+ if (x < 1)
+ fun_l1_n255(x)
+ else
+ fun_l1_n536(x)
+ end
+end
+
+def fun_l0_n228(x)
+ if (x < 1)
+ fun_l1_n377(x)
+ else
+ fun_l1_n249(x)
+ end
+end
+
+def fun_l0_n229(x)
+ if (x < 1)
+ fun_l1_n527(x)
+ else
+ fun_l1_n691(x)
+ end
+end
+
+def fun_l0_n230(x)
+ if (x < 1)
+ fun_l1_n781(x)
+ else
+ fun_l1_n494(x)
+ end
+end
+
+def fun_l0_n231(x)
+ if (x < 1)
+ fun_l1_n889(x)
+ else
+ fun_l1_n967(x)
+ end
+end
+
+def fun_l0_n232(x)
+ if (x < 1)
+ fun_l1_n509(x)
+ else
+ fun_l1_n910(x)
+ end
+end
+
+def fun_l0_n233(x)
+ if (x < 1)
+ fun_l1_n354(x)
+ else
+ fun_l1_n5(x)
+ end
+end
+
+def fun_l0_n234(x)
+ if (x < 1)
+ fun_l1_n423(x)
+ else
+ fun_l1_n788(x)
+ end
+end
+
+def fun_l0_n235(x)
+ if (x < 1)
+ fun_l1_n632(x)
+ else
+ fun_l1_n705(x)
+ end
+end
+
+def fun_l0_n236(x)
+ if (x < 1)
+ fun_l1_n955(x)
+ else
+ fun_l1_n908(x)
+ end
+end
+
+def fun_l0_n237(x)
+ if (x < 1)
+ fun_l1_n329(x)
+ else
+ fun_l1_n2(x)
+ end
+end
+
+def fun_l0_n238(x)
+ if (x < 1)
+ fun_l1_n767(x)
+ else
+ fun_l1_n766(x)
+ end
+end
+
+def fun_l0_n239(x)
+ if (x < 1)
+ fun_l1_n304(x)
+ else
+ fun_l1_n507(x)
+ end
+end
+
+def fun_l0_n240(x)
+ if (x < 1)
+ fun_l1_n845(x)
+ else
+ fun_l1_n777(x)
+ end
+end
+
+def fun_l0_n241(x)
+ if (x < 1)
+ fun_l1_n69(x)
+ else
+ fun_l1_n260(x)
+ end
+end
+
+def fun_l0_n242(x)
+ if (x < 1)
+ fun_l1_n194(x)
+ else
+ fun_l1_n412(x)
+ end
+end
+
+def fun_l0_n243(x)
+ if (x < 1)
+ fun_l1_n974(x)
+ else
+ fun_l1_n922(x)
+ end
+end
+
+def fun_l0_n244(x)
+ if (x < 1)
+ fun_l1_n532(x)
+ else
+ fun_l1_n530(x)
+ end
+end
+
+def fun_l0_n245(x)
+ if (x < 1)
+ fun_l1_n554(x)
+ else
+ fun_l1_n656(x)
+ end
+end
+
+def fun_l0_n246(x)
+ if (x < 1)
+ fun_l1_n253(x)
+ else
+ fun_l1_n235(x)
+ end
+end
+
+def fun_l0_n247(x)
+ if (x < 1)
+ fun_l1_n754(x)
+ else
+ fun_l1_n775(x)
+ end
+end
+
+def fun_l0_n248(x)
+ if (x < 1)
+ fun_l1_n89(x)
+ else
+ fun_l1_n129(x)
+ end
+end
+
+def fun_l0_n249(x)
+ if (x < 1)
+ fun_l1_n284(x)
+ else
+ fun_l1_n642(x)
+ end
+end
+
+def fun_l0_n250(x)
+ if (x < 1)
+ fun_l1_n67(x)
+ else
+ fun_l1_n867(x)
+ end
+end
+
+def fun_l0_n251(x)
+ if (x < 1)
+ fun_l1_n926(x)
+ else
+ fun_l1_n442(x)
+ end
+end
+
+def fun_l0_n252(x)
+ if (x < 1)
+ fun_l1_n196(x)
+ else
+ fun_l1_n583(x)
+ end
+end
+
+def fun_l0_n253(x)
+ if (x < 1)
+ fun_l1_n966(x)
+ else
+ fun_l1_n810(x)
+ end
+end
+
+def fun_l0_n254(x)
+ if (x < 1)
+ fun_l1_n984(x)
+ else
+ fun_l1_n752(x)
+ end
+end
+
+def fun_l0_n255(x)
+ if (x < 1)
+ fun_l1_n941(x)
+ else
+ fun_l1_n744(x)
+ end
+end
+
+def fun_l0_n256(x)
+ if (x < 1)
+ fun_l1_n785(x)
+ else
+ fun_l1_n610(x)
+ end
+end
+
+def fun_l0_n257(x)
+ if (x < 1)
+ fun_l1_n622(x)
+ else
+ fun_l1_n730(x)
+ end
+end
+
+def fun_l0_n258(x)
+ if (x < 1)
+ fun_l1_n453(x)
+ else
+ fun_l1_n641(x)
+ end
+end
+
+def fun_l0_n259(x)
+ if (x < 1)
+ fun_l1_n407(x)
+ else
+ fun_l1_n818(x)
+ end
+end
+
+def fun_l0_n260(x)
+ if (x < 1)
+ fun_l1_n252(x)
+ else
+ fun_l1_n205(x)
+ end
+end
+
+def fun_l0_n261(x)
+ if (x < 1)
+ fun_l1_n940(x)
+ else
+ fun_l1_n678(x)
+ end
+end
+
+def fun_l0_n262(x)
+ if (x < 1)
+ fun_l1_n350(x)
+ else
+ fun_l1_n496(x)
+ end
+end
+
+def fun_l0_n263(x)
+ if (x < 1)
+ fun_l1_n688(x)
+ else
+ fun_l1_n193(x)
+ end
+end
+
+def fun_l0_n264(x)
+ if (x < 1)
+ fun_l1_n366(x)
+ else
+ fun_l1_n790(x)
+ end
+end
+
+def fun_l0_n265(x)
+ if (x < 1)
+ fun_l1_n592(x)
+ else
+ fun_l1_n93(x)
+ end
+end
+
+def fun_l0_n266(x)
+ if (x < 1)
+ fun_l1_n189(x)
+ else
+ fun_l1_n467(x)
+ end
+end
+
+def fun_l0_n267(x)
+ if (x < 1)
+ fun_l1_n813(x)
+ else
+ fun_l1_n7(x)
+ end
+end
+
+def fun_l0_n268(x)
+ if (x < 1)
+ fun_l1_n516(x)
+ else
+ fun_l1_n271(x)
+ end
+end
+
+def fun_l0_n269(x)
+ if (x < 1)
+ fun_l1_n0(x)
+ else
+ fun_l1_n121(x)
+ end
+end
+
+def fun_l0_n270(x)
+ if (x < 1)
+ fun_l1_n634(x)
+ else
+ fun_l1_n726(x)
+ end
+end
+
+def fun_l0_n271(x)
+ if (x < 1)
+ fun_l1_n192(x)
+ else
+ fun_l1_n468(x)
+ end
+end
+
+def fun_l0_n272(x)
+ if (x < 1)
+ fun_l1_n278(x)
+ else
+ fun_l1_n355(x)
+ end
+end
+
+def fun_l0_n273(x)
+ if (x < 1)
+ fun_l1_n354(x)
+ else
+ fun_l1_n87(x)
+ end
+end
+
+def fun_l0_n274(x)
+ if (x < 1)
+ fun_l1_n643(x)
+ else
+ fun_l1_n806(x)
+ end
+end
+
+def fun_l0_n275(x)
+ if (x < 1)
+ fun_l1_n389(x)
+ else
+ fun_l1_n559(x)
+ end
+end
+
+def fun_l0_n276(x)
+ if (x < 1)
+ fun_l1_n283(x)
+ else
+ fun_l1_n539(x)
+ end
+end
+
+def fun_l0_n277(x)
+ if (x < 1)
+ fun_l1_n0(x)
+ else
+ fun_l1_n351(x)
+ end
+end
+
+def fun_l0_n278(x)
+ if (x < 1)
+ fun_l1_n813(x)
+ else
+ fun_l1_n513(x)
+ end
+end
+
+def fun_l0_n279(x)
+ if (x < 1)
+ fun_l1_n501(x)
+ else
+ fun_l1_n967(x)
+ end
+end
+
+def fun_l0_n280(x)
+ if (x < 1)
+ fun_l1_n727(x)
+ else
+ fun_l1_n232(x)
+ end
+end
+
+def fun_l0_n281(x)
+ if (x < 1)
+ fun_l1_n946(x)
+ else
+ fun_l1_n693(x)
+ end
+end
+
+def fun_l0_n282(x)
+ if (x < 1)
+ fun_l1_n260(x)
+ else
+ fun_l1_n525(x)
+ end
+end
+
+def fun_l0_n283(x)
+ if (x < 1)
+ fun_l1_n957(x)
+ else
+ fun_l1_n817(x)
+ end
+end
+
+def fun_l0_n284(x)
+ if (x < 1)
+ fun_l1_n91(x)
+ else
+ fun_l1_n735(x)
+ end
+end
+
+def fun_l0_n285(x)
+ if (x < 1)
+ fun_l1_n71(x)
+ else
+ fun_l1_n24(x)
+ end
+end
+
+def fun_l0_n286(x)
+ if (x < 1)
+ fun_l1_n594(x)
+ else
+ fun_l1_n747(x)
+ end
+end
+
+def fun_l0_n287(x)
+ if (x < 1)
+ fun_l1_n869(x)
+ else
+ fun_l1_n414(x)
+ end
+end
+
+def fun_l0_n288(x)
+ if (x < 1)
+ fun_l1_n182(x)
+ else
+ fun_l1_n835(x)
+ end
+end
+
+def fun_l0_n289(x)
+ if (x < 1)
+ fun_l1_n188(x)
+ else
+ fun_l1_n949(x)
+ end
+end
+
+def fun_l0_n290(x)
+ if (x < 1)
+ fun_l1_n35(x)
+ else
+ fun_l1_n259(x)
+ end
+end
+
+def fun_l0_n291(x)
+ if (x < 1)
+ fun_l1_n593(x)
+ else
+ fun_l1_n810(x)
+ end
+end
+
+def fun_l0_n292(x)
+ if (x < 1)
+ fun_l1_n680(x)
+ else
+ fun_l1_n564(x)
+ end
+end
+
+def fun_l0_n293(x)
+ if (x < 1)
+ fun_l1_n57(x)
+ else
+ fun_l1_n91(x)
+ end
+end
+
+def fun_l0_n294(x)
+ if (x < 1)
+ fun_l1_n945(x)
+ else
+ fun_l1_n807(x)
+ end
+end
+
+def fun_l0_n295(x)
+ if (x < 1)
+ fun_l1_n442(x)
+ else
+ fun_l1_n123(x)
+ end
+end
+
+def fun_l0_n296(x)
+ if (x < 1)
+ fun_l1_n536(x)
+ else
+ fun_l1_n987(x)
+ end
+end
+
+def fun_l0_n297(x)
+ if (x < 1)
+ fun_l1_n519(x)
+ else
+ fun_l1_n657(x)
+ end
+end
+
+def fun_l0_n298(x)
+ if (x < 1)
+ fun_l1_n204(x)
+ else
+ fun_l1_n437(x)
+ end
+end
+
+def fun_l0_n299(x)
+ if (x < 1)
+ fun_l1_n289(x)
+ else
+ fun_l1_n385(x)
+ end
+end
+
+def fun_l0_n300(x)
+ if (x < 1)
+ fun_l1_n629(x)
+ else
+ fun_l1_n803(x)
+ end
+end
+
+def fun_l0_n301(x)
+ if (x < 1)
+ fun_l1_n576(x)
+ else
+ fun_l1_n921(x)
+ end
+end
+
+def fun_l0_n302(x)
+ if (x < 1)
+ fun_l1_n466(x)
+ else
+ fun_l1_n475(x)
+ end
+end
+
+def fun_l0_n303(x)
+ if (x < 1)
+ fun_l1_n658(x)
+ else
+ fun_l1_n333(x)
+ end
+end
+
+def fun_l0_n304(x)
+ if (x < 1)
+ fun_l1_n728(x)
+ else
+ fun_l1_n749(x)
+ end
+end
+
+def fun_l0_n305(x)
+ if (x < 1)
+ fun_l1_n68(x)
+ else
+ fun_l1_n552(x)
+ end
+end
+
+def fun_l0_n306(x)
+ if (x < 1)
+ fun_l1_n633(x)
+ else
+ fun_l1_n958(x)
+ end
+end
+
+def fun_l0_n307(x)
+ if (x < 1)
+ fun_l1_n79(x)
+ else
+ fun_l1_n386(x)
+ end
+end
+
+def fun_l0_n308(x)
+ if (x < 1)
+ fun_l1_n831(x)
+ else
+ fun_l1_n176(x)
+ end
+end
+
+def fun_l0_n309(x)
+ if (x < 1)
+ fun_l1_n770(x)
+ else
+ fun_l1_n334(x)
+ end
+end
+
+def fun_l0_n310(x)
+ if (x < 1)
+ fun_l1_n21(x)
+ else
+ fun_l1_n643(x)
+ end
+end
+
+def fun_l0_n311(x)
+ if (x < 1)
+ fun_l1_n673(x)
+ else
+ fun_l1_n298(x)
+ end
+end
+
+def fun_l0_n312(x)
+ if (x < 1)
+ fun_l1_n753(x)
+ else
+ fun_l1_n817(x)
+ end
+end
+
+def fun_l0_n313(x)
+ if (x < 1)
+ fun_l1_n299(x)
+ else
+ fun_l1_n350(x)
+ end
+end
+
+def fun_l0_n314(x)
+ if (x < 1)
+ fun_l1_n190(x)
+ else
+ fun_l1_n519(x)
+ end
+end
+
+def fun_l0_n315(x)
+ if (x < 1)
+ fun_l1_n934(x)
+ else
+ fun_l1_n416(x)
+ end
+end
+
+def fun_l0_n316(x)
+ if (x < 1)
+ fun_l1_n695(x)
+ else
+ fun_l1_n377(x)
+ end
+end
+
+def fun_l0_n317(x)
+ if (x < 1)
+ fun_l1_n194(x)
+ else
+ fun_l1_n747(x)
+ end
+end
+
+def fun_l0_n318(x)
+ if (x < 1)
+ fun_l1_n145(x)
+ else
+ fun_l1_n761(x)
+ end
+end
+
+def fun_l0_n319(x)
+ if (x < 1)
+ fun_l1_n223(x)
+ else
+ fun_l1_n237(x)
+ end
+end
+
+def fun_l0_n320(x)
+ if (x < 1)
+ fun_l1_n907(x)
+ else
+ fun_l1_n653(x)
+ end
+end
+
+def fun_l0_n321(x)
+ if (x < 1)
+ fun_l1_n216(x)
+ else
+ fun_l1_n67(x)
+ end
+end
+
+def fun_l0_n322(x)
+ if (x < 1)
+ fun_l1_n658(x)
+ else
+ fun_l1_n948(x)
+ end
+end
+
+def fun_l0_n323(x)
+ if (x < 1)
+ fun_l1_n358(x)
+ else
+ fun_l1_n926(x)
+ end
+end
+
+def fun_l0_n324(x)
+ if (x < 1)
+ fun_l1_n533(x)
+ else
+ fun_l1_n252(x)
+ end
+end
+
+def fun_l0_n325(x)
+ if (x < 1)
+ fun_l1_n284(x)
+ else
+ fun_l1_n670(x)
+ end
+end
+
+def fun_l0_n326(x)
+ if (x < 1)
+ fun_l1_n327(x)
+ else
+ fun_l1_n298(x)
+ end
+end
+
+def fun_l0_n327(x)
+ if (x < 1)
+ fun_l1_n837(x)
+ else
+ fun_l1_n890(x)
+ end
+end
+
+def fun_l0_n328(x)
+ if (x < 1)
+ fun_l1_n941(x)
+ else
+ fun_l1_n794(x)
+ end
+end
+
+def fun_l0_n329(x)
+ if (x < 1)
+ fun_l1_n859(x)
+ else
+ fun_l1_n970(x)
+ end
+end
+
+def fun_l0_n330(x)
+ if (x < 1)
+ fun_l1_n282(x)
+ else
+ fun_l1_n569(x)
+ end
+end
+
+def fun_l0_n331(x)
+ if (x < 1)
+ fun_l1_n33(x)
+ else
+ fun_l1_n525(x)
+ end
+end
+
+def fun_l0_n332(x)
+ if (x < 1)
+ fun_l1_n847(x)
+ else
+ fun_l1_n540(x)
+ end
+end
+
+def fun_l0_n333(x)
+ if (x < 1)
+ fun_l1_n485(x)
+ else
+ fun_l1_n756(x)
+ end
+end
+
+def fun_l0_n334(x)
+ if (x < 1)
+ fun_l1_n396(x)
+ else
+ fun_l1_n781(x)
+ end
+end
+
+def fun_l0_n335(x)
+ if (x < 1)
+ fun_l1_n225(x)
+ else
+ fun_l1_n417(x)
+ end
+end
+
+def fun_l0_n336(x)
+ if (x < 1)
+ fun_l1_n906(x)
+ else
+ fun_l1_n301(x)
+ end
+end
+
+def fun_l0_n337(x)
+ if (x < 1)
+ fun_l1_n863(x)
+ else
+ fun_l1_n409(x)
+ end
+end
+
+def fun_l0_n338(x)
+ if (x < 1)
+ fun_l1_n103(x)
+ else
+ fun_l1_n460(x)
+ end
+end
+
+def fun_l0_n339(x)
+ if (x < 1)
+ fun_l1_n787(x)
+ else
+ fun_l1_n434(x)
+ end
+end
+
+def fun_l0_n340(x)
+ if (x < 1)
+ fun_l1_n308(x)
+ else
+ fun_l1_n875(x)
+ end
+end
+
+def fun_l0_n341(x)
+ if (x < 1)
+ fun_l1_n146(x)
+ else
+ fun_l1_n566(x)
+ end
+end
+
+def fun_l0_n342(x)
+ if (x < 1)
+ fun_l1_n837(x)
+ else
+ fun_l1_n770(x)
+ end
+end
+
+def fun_l0_n343(x)
+ if (x < 1)
+ fun_l1_n668(x)
+ else
+ fun_l1_n60(x)
+ end
+end
+
+def fun_l0_n344(x)
+ if (x < 1)
+ fun_l1_n305(x)
+ else
+ fun_l1_n388(x)
+ end
+end
+
+def fun_l0_n345(x)
+ if (x < 1)
+ fun_l1_n796(x)
+ else
+ fun_l1_n920(x)
+ end
+end
+
+def fun_l0_n346(x)
+ if (x < 1)
+ fun_l1_n257(x)
+ else
+ fun_l1_n229(x)
+ end
+end
+
+def fun_l0_n347(x)
+ if (x < 1)
+ fun_l1_n740(x)
+ else
+ fun_l1_n372(x)
+ end
+end
+
+def fun_l0_n348(x)
+ if (x < 1)
+ fun_l1_n698(x)
+ else
+ fun_l1_n63(x)
+ end
+end
+
+def fun_l0_n349(x)
+ if (x < 1)
+ fun_l1_n4(x)
+ else
+ fun_l1_n119(x)
+ end
+end
+
+def fun_l0_n350(x)
+ if (x < 1)
+ fun_l1_n186(x)
+ else
+ fun_l1_n352(x)
+ end
+end
+
+def fun_l0_n351(x)
+ if (x < 1)
+ fun_l1_n619(x)
+ else
+ fun_l1_n583(x)
+ end
+end
+
+def fun_l0_n352(x)
+ if (x < 1)
+ fun_l1_n2(x)
+ else
+ fun_l1_n275(x)
+ end
+end
+
+def fun_l0_n353(x)
+ if (x < 1)
+ fun_l1_n843(x)
+ else
+ fun_l1_n986(x)
+ end
+end
+
+def fun_l0_n354(x)
+ if (x < 1)
+ fun_l1_n865(x)
+ else
+ fun_l1_n64(x)
+ end
+end
+
+def fun_l0_n355(x)
+ if (x < 1)
+ fun_l1_n732(x)
+ else
+ fun_l1_n332(x)
+ end
+end
+
+def fun_l0_n356(x)
+ if (x < 1)
+ fun_l1_n642(x)
+ else
+ fun_l1_n559(x)
+ end
+end
+
+def fun_l0_n357(x)
+ if (x < 1)
+ fun_l1_n385(x)
+ else
+ fun_l1_n532(x)
+ end
+end
+
+def fun_l0_n358(x)
+ if (x < 1)
+ fun_l1_n672(x)
+ else
+ fun_l1_n721(x)
+ end
+end
+
+def fun_l0_n359(x)
+ if (x < 1)
+ fun_l1_n663(x)
+ else
+ fun_l1_n590(x)
+ end
+end
+
+def fun_l0_n360(x)
+ if (x < 1)
+ fun_l1_n240(x)
+ else
+ fun_l1_n743(x)
+ end
+end
+
+def fun_l0_n361(x)
+ if (x < 1)
+ fun_l1_n301(x)
+ else
+ fun_l1_n943(x)
+ end
+end
+
+def fun_l0_n362(x)
+ if (x < 1)
+ fun_l1_n108(x)
+ else
+ fun_l1_n975(x)
+ end
+end
+
+def fun_l0_n363(x)
+ if (x < 1)
+ fun_l1_n554(x)
+ else
+ fun_l1_n135(x)
+ end
+end
+
+def fun_l0_n364(x)
+ if (x < 1)
+ fun_l1_n360(x)
+ else
+ fun_l1_n821(x)
+ end
+end
+
+def fun_l0_n365(x)
+ if (x < 1)
+ fun_l1_n992(x)
+ else
+ fun_l1_n158(x)
+ end
+end
+
+def fun_l0_n366(x)
+ if (x < 1)
+ fun_l1_n439(x)
+ else
+ fun_l1_n506(x)
+ end
+end
+
+def fun_l0_n367(x)
+ if (x < 1)
+ fun_l1_n229(x)
+ else
+ fun_l1_n714(x)
+ end
+end
+
+def fun_l0_n368(x)
+ if (x < 1)
+ fun_l1_n459(x)
+ else
+ fun_l1_n874(x)
+ end
+end
+
+def fun_l0_n369(x)
+ if (x < 1)
+ fun_l1_n799(x)
+ else
+ fun_l1_n406(x)
+ end
+end
+
+def fun_l0_n370(x)
+ if (x < 1)
+ fun_l1_n791(x)
+ else
+ fun_l1_n669(x)
+ end
+end
+
+def fun_l0_n371(x)
+ if (x < 1)
+ fun_l1_n99(x)
+ else
+ fun_l1_n344(x)
+ end
+end
+
+def fun_l0_n372(x)
+ if (x < 1)
+ fun_l1_n585(x)
+ else
+ fun_l1_n388(x)
+ end
+end
+
+def fun_l0_n373(x)
+ if (x < 1)
+ fun_l1_n35(x)
+ else
+ fun_l1_n369(x)
+ end
+end
+
+def fun_l0_n374(x)
+ if (x < 1)
+ fun_l1_n41(x)
+ else
+ fun_l1_n378(x)
+ end
+end
+
+def fun_l0_n375(x)
+ if (x < 1)
+ fun_l1_n372(x)
+ else
+ fun_l1_n406(x)
+ end
+end
+
+def fun_l0_n376(x)
+ if (x < 1)
+ fun_l1_n247(x)
+ else
+ fun_l1_n563(x)
+ end
+end
+
+def fun_l0_n377(x)
+ if (x < 1)
+ fun_l1_n998(x)
+ else
+ fun_l1_n302(x)
+ end
+end
+
+def fun_l0_n378(x)
+ if (x < 1)
+ fun_l1_n955(x)
+ else
+ fun_l1_n333(x)
+ end
+end
+
+def fun_l0_n379(x)
+ if (x < 1)
+ fun_l1_n554(x)
+ else
+ fun_l1_n863(x)
+ end
+end
+
+def fun_l0_n380(x)
+ if (x < 1)
+ fun_l1_n248(x)
+ else
+ fun_l1_n297(x)
+ end
+end
+
+def fun_l0_n381(x)
+ if (x < 1)
+ fun_l1_n85(x)
+ else
+ fun_l1_n726(x)
+ end
+end
+
+def fun_l0_n382(x)
+ if (x < 1)
+ fun_l1_n75(x)
+ else
+ fun_l1_n990(x)
+ end
+end
+
+def fun_l0_n383(x)
+ if (x < 1)
+ fun_l1_n353(x)
+ else
+ fun_l1_n218(x)
+ end
+end
+
+def fun_l0_n384(x)
+ if (x < 1)
+ fun_l1_n103(x)
+ else
+ fun_l1_n192(x)
+ end
+end
+
+def fun_l0_n385(x)
+ if (x < 1)
+ fun_l1_n659(x)
+ else
+ fun_l1_n996(x)
+ end
+end
+
+def fun_l0_n386(x)
+ if (x < 1)
+ fun_l1_n528(x)
+ else
+ fun_l1_n654(x)
+ end
+end
+
+def fun_l0_n387(x)
+ if (x < 1)
+ fun_l1_n857(x)
+ else
+ fun_l1_n638(x)
+ end
+end
+
+def fun_l0_n388(x)
+ if (x < 1)
+ fun_l1_n311(x)
+ else
+ fun_l1_n877(x)
+ end
+end
+
+def fun_l0_n389(x)
+ if (x < 1)
+ fun_l1_n406(x)
+ else
+ fun_l1_n191(x)
+ end
+end
+
+def fun_l0_n390(x)
+ if (x < 1)
+ fun_l1_n464(x)
+ else
+ fun_l1_n684(x)
+ end
+end
+
+def fun_l0_n391(x)
+ if (x < 1)
+ fun_l1_n878(x)
+ else
+ fun_l1_n635(x)
+ end
+end
+
+def fun_l0_n392(x)
+ if (x < 1)
+ fun_l1_n863(x)
+ else
+ fun_l1_n486(x)
+ end
+end
+
+def fun_l0_n393(x)
+ if (x < 1)
+ fun_l1_n587(x)
+ else
+ fun_l1_n387(x)
+ end
+end
+
+def fun_l0_n394(x)
+ if (x < 1)
+ fun_l1_n553(x)
+ else
+ fun_l1_n789(x)
+ end
+end
+
+def fun_l0_n395(x)
+ if (x < 1)
+ fun_l1_n420(x)
+ else
+ fun_l1_n148(x)
+ end
+end
+
+def fun_l0_n396(x)
+ if (x < 1)
+ fun_l1_n802(x)
+ else
+ fun_l1_n845(x)
+ end
+end
+
+def fun_l0_n397(x)
+ if (x < 1)
+ fun_l1_n749(x)
+ else
+ fun_l1_n742(x)
+ end
+end
+
+def fun_l0_n398(x)
+ if (x < 1)
+ fun_l1_n929(x)
+ else
+ fun_l1_n458(x)
+ end
+end
+
+def fun_l0_n399(x)
+ if (x < 1)
+ fun_l1_n908(x)
+ else
+ fun_l1_n188(x)
+ end
+end
+
+def fun_l0_n400(x)
+ if (x < 1)
+ fun_l1_n932(x)
+ else
+ fun_l1_n854(x)
+ end
+end
+
+def fun_l0_n401(x)
+ if (x < 1)
+ fun_l1_n29(x)
+ else
+ fun_l1_n666(x)
+ end
+end
+
+def fun_l0_n402(x)
+ if (x < 1)
+ fun_l1_n877(x)
+ else
+ fun_l1_n518(x)
+ end
+end
+
+def fun_l0_n403(x)
+ if (x < 1)
+ fun_l1_n639(x)
+ else
+ fun_l1_n618(x)
+ end
+end
+
+def fun_l0_n404(x)
+ if (x < 1)
+ fun_l1_n177(x)
+ else
+ fun_l1_n487(x)
+ end
+end
+
+def fun_l0_n405(x)
+ if (x < 1)
+ fun_l1_n536(x)
+ else
+ fun_l1_n860(x)
+ end
+end
+
+def fun_l0_n406(x)
+ if (x < 1)
+ fun_l1_n626(x)
+ else
+ fun_l1_n894(x)
+ end
+end
+
+def fun_l0_n407(x)
+ if (x < 1)
+ fun_l1_n533(x)
+ else
+ fun_l1_n367(x)
+ end
+end
+
+def fun_l0_n408(x)
+ if (x < 1)
+ fun_l1_n146(x)
+ else
+ fun_l1_n546(x)
+ end
+end
+
+def fun_l0_n409(x)
+ if (x < 1)
+ fun_l1_n872(x)
+ else
+ fun_l1_n387(x)
+ end
+end
+
+def fun_l0_n410(x)
+ if (x < 1)
+ fun_l1_n726(x)
+ else
+ fun_l1_n973(x)
+ end
+end
+
+def fun_l0_n411(x)
+ if (x < 1)
+ fun_l1_n168(x)
+ else
+ fun_l1_n783(x)
+ end
+end
+
+def fun_l0_n412(x)
+ if (x < 1)
+ fun_l1_n895(x)
+ else
+ fun_l1_n901(x)
+ end
+end
+
+def fun_l0_n413(x)
+ if (x < 1)
+ fun_l1_n235(x)
+ else
+ fun_l1_n593(x)
+ end
+end
+
+def fun_l0_n414(x)
+ if (x < 1)
+ fun_l1_n328(x)
+ else
+ fun_l1_n693(x)
+ end
+end
+
+def fun_l0_n415(x)
+ if (x < 1)
+ fun_l1_n882(x)
+ else
+ fun_l1_n290(x)
+ end
+end
+
+def fun_l0_n416(x)
+ if (x < 1)
+ fun_l1_n433(x)
+ else
+ fun_l1_n220(x)
+ end
+end
+
+def fun_l0_n417(x)
+ if (x < 1)
+ fun_l1_n966(x)
+ else
+ fun_l1_n74(x)
+ end
+end
+
+def fun_l0_n418(x)
+ if (x < 1)
+ fun_l1_n750(x)
+ else
+ fun_l1_n547(x)
+ end
+end
+
+def fun_l0_n419(x)
+ if (x < 1)
+ fun_l1_n94(x)
+ else
+ fun_l1_n794(x)
+ end
+end
+
+def fun_l0_n420(x)
+ if (x < 1)
+ fun_l1_n68(x)
+ else
+ fun_l1_n970(x)
+ end
+end
+
+def fun_l0_n421(x)
+ if (x < 1)
+ fun_l1_n663(x)
+ else
+ fun_l1_n388(x)
+ end
+end
+
+def fun_l0_n422(x)
+ if (x < 1)
+ fun_l1_n686(x)
+ else
+ fun_l1_n67(x)
+ end
+end
+
+def fun_l0_n423(x)
+ if (x < 1)
+ fun_l1_n210(x)
+ else
+ fun_l1_n64(x)
+ end
+end
+
+def fun_l0_n424(x)
+ if (x < 1)
+ fun_l1_n375(x)
+ else
+ fun_l1_n205(x)
+ end
+end
+
+def fun_l0_n425(x)
+ if (x < 1)
+ fun_l1_n832(x)
+ else
+ fun_l1_n325(x)
+ end
+end
+
+def fun_l0_n426(x)
+ if (x < 1)
+ fun_l1_n819(x)
+ else
+ fun_l1_n601(x)
+ end
+end
+
+def fun_l0_n427(x)
+ if (x < 1)
+ fun_l1_n588(x)
+ else
+ fun_l1_n875(x)
+ end
+end
+
+def fun_l0_n428(x)
+ if (x < 1)
+ fun_l1_n682(x)
+ else
+ fun_l1_n523(x)
+ end
+end
+
+def fun_l0_n429(x)
+ if (x < 1)
+ fun_l1_n972(x)
+ else
+ fun_l1_n891(x)
+ end
+end
+
+def fun_l0_n430(x)
+ if (x < 1)
+ fun_l1_n90(x)
+ else
+ fun_l1_n655(x)
+ end
+end
+
+def fun_l0_n431(x)
+ if (x < 1)
+ fun_l1_n393(x)
+ else
+ fun_l1_n454(x)
+ end
+end
+
+def fun_l0_n432(x)
+ if (x < 1)
+ fun_l1_n435(x)
+ else
+ fun_l1_n860(x)
+ end
+end
+
+def fun_l0_n433(x)
+ if (x < 1)
+ fun_l1_n516(x)
+ else
+ fun_l1_n246(x)
+ end
+end
+
+def fun_l0_n434(x)
+ if (x < 1)
+ fun_l1_n216(x)
+ else
+ fun_l1_n78(x)
+ end
+end
+
+def fun_l0_n435(x)
+ if (x < 1)
+ fun_l1_n357(x)
+ else
+ fun_l1_n61(x)
+ end
+end
+
+def fun_l0_n436(x)
+ if (x < 1)
+ fun_l1_n289(x)
+ else
+ fun_l1_n507(x)
+ end
+end
+
+def fun_l0_n437(x)
+ if (x < 1)
+ fun_l1_n182(x)
+ else
+ fun_l1_n289(x)
+ end
+end
+
+def fun_l0_n438(x)
+ if (x < 1)
+ fun_l1_n69(x)
+ else
+ fun_l1_n549(x)
+ end
+end
+
+def fun_l0_n439(x)
+ if (x < 1)
+ fun_l1_n275(x)
+ else
+ fun_l1_n723(x)
+ end
+end
+
+def fun_l0_n440(x)
+ if (x < 1)
+ fun_l1_n469(x)
+ else
+ fun_l1_n243(x)
+ end
+end
+
+def fun_l0_n441(x)
+ if (x < 1)
+ fun_l1_n595(x)
+ else
+ fun_l1_n624(x)
+ end
+end
+
+def fun_l0_n442(x)
+ if (x < 1)
+ fun_l1_n655(x)
+ else
+ fun_l1_n896(x)
+ end
+end
+
+def fun_l0_n443(x)
+ if (x < 1)
+ fun_l1_n926(x)
+ else
+ fun_l1_n503(x)
+ end
+end
+
+def fun_l0_n444(x)
+ if (x < 1)
+ fun_l1_n875(x)
+ else
+ fun_l1_n110(x)
+ end
+end
+
+def fun_l0_n445(x)
+ if (x < 1)
+ fun_l1_n832(x)
+ else
+ fun_l1_n154(x)
+ end
+end
+
+def fun_l0_n446(x)
+ if (x < 1)
+ fun_l1_n538(x)
+ else
+ fun_l1_n75(x)
+ end
+end
+
+def fun_l0_n447(x)
+ if (x < 1)
+ fun_l1_n183(x)
+ else
+ fun_l1_n718(x)
+ end
+end
+
+def fun_l0_n448(x)
+ if (x < 1)
+ fun_l1_n680(x)
+ else
+ fun_l1_n93(x)
+ end
+end
+
+def fun_l0_n449(x)
+ if (x < 1)
+ fun_l1_n147(x)
+ else
+ fun_l1_n924(x)
+ end
+end
+
+def fun_l0_n450(x)
+ if (x < 1)
+ fun_l1_n702(x)
+ else
+ fun_l1_n830(x)
+ end
+end
+
+def fun_l0_n451(x)
+ if (x < 1)
+ fun_l1_n750(x)
+ else
+ fun_l1_n447(x)
+ end
+end
+
+def fun_l0_n452(x)
+ if (x < 1)
+ fun_l1_n520(x)
+ else
+ fun_l1_n69(x)
+ end
+end
+
+def fun_l0_n453(x)
+ if (x < 1)
+ fun_l1_n132(x)
+ else
+ fun_l1_n877(x)
+ end
+end
+
+def fun_l0_n454(x)
+ if (x < 1)
+ fun_l1_n247(x)
+ else
+ fun_l1_n69(x)
+ end
+end
+
+def fun_l0_n455(x)
+ if (x < 1)
+ fun_l1_n180(x)
+ else
+ fun_l1_n645(x)
+ end
+end
+
+def fun_l0_n456(x)
+ if (x < 1)
+ fun_l1_n658(x)
+ else
+ fun_l1_n487(x)
+ end
+end
+
+def fun_l0_n457(x)
+ if (x < 1)
+ fun_l1_n276(x)
+ else
+ fun_l1_n528(x)
+ end
+end
+
+def fun_l0_n458(x)
+ if (x < 1)
+ fun_l1_n30(x)
+ else
+ fun_l1_n456(x)
+ end
+end
+
+def fun_l0_n459(x)
+ if (x < 1)
+ fun_l1_n986(x)
+ else
+ fun_l1_n552(x)
+ end
+end
+
+def fun_l0_n460(x)
+ if (x < 1)
+ fun_l1_n874(x)
+ else
+ fun_l1_n396(x)
+ end
+end
+
+def fun_l0_n461(x)
+ if (x < 1)
+ fun_l1_n524(x)
+ else
+ fun_l1_n335(x)
+ end
+end
+
+def fun_l0_n462(x)
+ if (x < 1)
+ fun_l1_n471(x)
+ else
+ fun_l1_n578(x)
+ end
+end
+
+def fun_l0_n463(x)
+ if (x < 1)
+ fun_l1_n173(x)
+ else
+ fun_l1_n456(x)
+ end
+end
+
+def fun_l0_n464(x)
+ if (x < 1)
+ fun_l1_n872(x)
+ else
+ fun_l1_n745(x)
+ end
+end
+
+def fun_l0_n465(x)
+ if (x < 1)
+ fun_l1_n387(x)
+ else
+ fun_l1_n776(x)
+ end
+end
+
+def fun_l0_n466(x)
+ if (x < 1)
+ fun_l1_n119(x)
+ else
+ fun_l1_n428(x)
+ end
+end
+
+def fun_l0_n467(x)
+ if (x < 1)
+ fun_l1_n416(x)
+ else
+ fun_l1_n738(x)
+ end
+end
+
+def fun_l0_n468(x)
+ if (x < 1)
+ fun_l1_n762(x)
+ else
+ fun_l1_n694(x)
+ end
+end
+
+def fun_l0_n469(x)
+ if (x < 1)
+ fun_l1_n27(x)
+ else
+ fun_l1_n562(x)
+ end
+end
+
+def fun_l0_n470(x)
+ if (x < 1)
+ fun_l1_n12(x)
+ else
+ fun_l1_n812(x)
+ end
+end
+
+def fun_l0_n471(x)
+ if (x < 1)
+ fun_l1_n865(x)
+ else
+ fun_l1_n94(x)
+ end
+end
+
+def fun_l0_n472(x)
+ if (x < 1)
+ fun_l1_n346(x)
+ else
+ fun_l1_n39(x)
+ end
+end
+
+def fun_l0_n473(x)
+ if (x < 1)
+ fun_l1_n309(x)
+ else
+ fun_l1_n158(x)
+ end
+end
+
+def fun_l0_n474(x)
+ if (x < 1)
+ fun_l1_n828(x)
+ else
+ fun_l1_n229(x)
+ end
+end
+
+def fun_l0_n475(x)
+ if (x < 1)
+ fun_l1_n554(x)
+ else
+ fun_l1_n121(x)
+ end
+end
+
+def fun_l0_n476(x)
+ if (x < 1)
+ fun_l1_n818(x)
+ else
+ fun_l1_n390(x)
+ end
+end
+
+def fun_l0_n477(x)
+ if (x < 1)
+ fun_l1_n88(x)
+ else
+ fun_l1_n73(x)
+ end
+end
+
+def fun_l0_n478(x)
+ if (x < 1)
+ fun_l1_n709(x)
+ else
+ fun_l1_n680(x)
+ end
+end
+
+def fun_l0_n479(x)
+ if (x < 1)
+ fun_l1_n271(x)
+ else
+ fun_l1_n439(x)
+ end
+end
+
+def fun_l0_n480(x)
+ if (x < 1)
+ fun_l1_n493(x)
+ else
+ fun_l1_n562(x)
+ end
+end
+
+def fun_l0_n481(x)
+ if (x < 1)
+ fun_l1_n642(x)
+ else
+ fun_l1_n221(x)
+ end
+end
+
+def fun_l0_n482(x)
+ if (x < 1)
+ fun_l1_n838(x)
+ else
+ fun_l1_n345(x)
+ end
+end
+
+def fun_l0_n483(x)
+ if (x < 1)
+ fun_l1_n411(x)
+ else
+ fun_l1_n266(x)
+ end
+end
+
+def fun_l0_n484(x)
+ if (x < 1)
+ fun_l1_n916(x)
+ else
+ fun_l1_n791(x)
+ end
+end
+
+def fun_l0_n485(x)
+ if (x < 1)
+ fun_l1_n392(x)
+ else
+ fun_l1_n68(x)
+ end
+end
+
+def fun_l0_n486(x)
+ if (x < 1)
+ fun_l1_n834(x)
+ else
+ fun_l1_n783(x)
+ end
+end
+
+def fun_l0_n487(x)
+ if (x < 1)
+ fun_l1_n398(x)
+ else
+ fun_l1_n627(x)
+ end
+end
+
+def fun_l0_n488(x)
+ if (x < 1)
+ fun_l1_n904(x)
+ else
+ fun_l1_n167(x)
+ end
+end
+
+def fun_l0_n489(x)
+ if (x < 1)
+ fun_l1_n54(x)
+ else
+ fun_l1_n28(x)
+ end
+end
+
+def fun_l0_n490(x)
+ if (x < 1)
+ fun_l1_n24(x)
+ else
+ fun_l1_n9(x)
+ end
+end
+
+def fun_l0_n491(x)
+ if (x < 1)
+ fun_l1_n497(x)
+ else
+ fun_l1_n297(x)
+ end
+end
+
+def fun_l0_n492(x)
+ if (x < 1)
+ fun_l1_n951(x)
+ else
+ fun_l1_n534(x)
+ end
+end
+
+def fun_l0_n493(x)
+ if (x < 1)
+ fun_l1_n213(x)
+ else
+ fun_l1_n808(x)
+ end
+end
+
+def fun_l0_n494(x)
+ if (x < 1)
+ fun_l1_n904(x)
+ else
+ fun_l1_n94(x)
+ end
+end
+
+def fun_l0_n495(x)
+ if (x < 1)
+ fun_l1_n799(x)
+ else
+ fun_l1_n817(x)
+ end
+end
+
+def fun_l0_n496(x)
+ if (x < 1)
+ fun_l1_n45(x)
+ else
+ fun_l1_n860(x)
+ end
+end
+
+def fun_l0_n497(x)
+ if (x < 1)
+ fun_l1_n482(x)
+ else
+ fun_l1_n783(x)
+ end
+end
+
+def fun_l0_n498(x)
+ if (x < 1)
+ fun_l1_n78(x)
+ else
+ fun_l1_n785(x)
+ end
+end
+
+def fun_l0_n499(x)
+ if (x < 1)
+ fun_l1_n174(x)
+ else
+ fun_l1_n87(x)
+ end
+end
+
+def fun_l0_n500(x)
+ if (x < 1)
+ fun_l1_n608(x)
+ else
+ fun_l1_n7(x)
+ end
+end
+
+def fun_l0_n501(x)
+ if (x < 1)
+ fun_l1_n157(x)
+ else
+ fun_l1_n718(x)
+ end
+end
+
+def fun_l0_n502(x)
+ if (x < 1)
+ fun_l1_n823(x)
+ else
+ fun_l1_n549(x)
+ end
+end
+
+def fun_l0_n503(x)
+ if (x < 1)
+ fun_l1_n13(x)
+ else
+ fun_l1_n502(x)
+ end
+end
+
+def fun_l0_n504(x)
+ if (x < 1)
+ fun_l1_n119(x)
+ else
+ fun_l1_n191(x)
+ end
+end
+
+def fun_l0_n505(x)
+ if (x < 1)
+ fun_l1_n503(x)
+ else
+ fun_l1_n974(x)
+ end
+end
+
+def fun_l0_n506(x)
+ if (x < 1)
+ fun_l1_n893(x)
+ else
+ fun_l1_n582(x)
+ end
+end
+
+def fun_l0_n507(x)
+ if (x < 1)
+ fun_l1_n403(x)
+ else
+ fun_l1_n228(x)
+ end
+end
+
+def fun_l0_n508(x)
+ if (x < 1)
+ fun_l1_n640(x)
+ else
+ fun_l1_n362(x)
+ end
+end
+
+def fun_l0_n509(x)
+ if (x < 1)
+ fun_l1_n629(x)
+ else
+ fun_l1_n824(x)
+ end
+end
+
+def fun_l0_n510(x)
+ if (x < 1)
+ fun_l1_n84(x)
+ else
+ fun_l1_n330(x)
+ end
+end
+
+def fun_l0_n511(x)
+ if (x < 1)
+ fun_l1_n91(x)
+ else
+ fun_l1_n523(x)
+ end
+end
+
+def fun_l0_n512(x)
+ if (x < 1)
+ fun_l1_n696(x)
+ else
+ fun_l1_n126(x)
+ end
+end
+
+def fun_l0_n513(x)
+ if (x < 1)
+ fun_l1_n905(x)
+ else
+ fun_l1_n496(x)
+ end
+end
+
+def fun_l0_n514(x)
+ if (x < 1)
+ fun_l1_n766(x)
+ else
+ fun_l1_n523(x)
+ end
+end
+
+def fun_l0_n515(x)
+ if (x < 1)
+ fun_l1_n798(x)
+ else
+ fun_l1_n698(x)
+ end
+end
+
+def fun_l0_n516(x)
+ if (x < 1)
+ fun_l1_n124(x)
+ else
+ fun_l1_n356(x)
+ end
+end
+
+def fun_l0_n517(x)
+ if (x < 1)
+ fun_l1_n289(x)
+ else
+ fun_l1_n782(x)
+ end
+end
+
+def fun_l0_n518(x)
+ if (x < 1)
+ fun_l1_n483(x)
+ else
+ fun_l1_n586(x)
+ end
+end
+
+def fun_l0_n519(x)
+ if (x < 1)
+ fun_l1_n878(x)
+ else
+ fun_l1_n37(x)
+ end
+end
+
+def fun_l0_n520(x)
+ if (x < 1)
+ fun_l1_n48(x)
+ else
+ fun_l1_n216(x)
+ end
+end
+
+def fun_l0_n521(x)
+ if (x < 1)
+ fun_l1_n805(x)
+ else
+ fun_l1_n846(x)
+ end
+end
+
+def fun_l0_n522(x)
+ if (x < 1)
+ fun_l1_n422(x)
+ else
+ fun_l1_n190(x)
+ end
+end
+
+def fun_l0_n523(x)
+ if (x < 1)
+ fun_l1_n168(x)
+ else
+ fun_l1_n272(x)
+ end
+end
+
+def fun_l0_n524(x)
+ if (x < 1)
+ fun_l1_n766(x)
+ else
+ fun_l1_n125(x)
+ end
+end
+
+def fun_l0_n525(x)
+ if (x < 1)
+ fun_l1_n56(x)
+ else
+ fun_l1_n224(x)
+ end
+end
+
+def fun_l0_n526(x)
+ if (x < 1)
+ fun_l1_n540(x)
+ else
+ fun_l1_n303(x)
+ end
+end
+
+def fun_l0_n527(x)
+ if (x < 1)
+ fun_l1_n846(x)
+ else
+ fun_l1_n955(x)
+ end
+end
+
+def fun_l0_n528(x)
+ if (x < 1)
+ fun_l1_n571(x)
+ else
+ fun_l1_n640(x)
+ end
+end
+
+def fun_l0_n529(x)
+ if (x < 1)
+ fun_l1_n650(x)
+ else
+ fun_l1_n107(x)
+ end
+end
+
+def fun_l0_n530(x)
+ if (x < 1)
+ fun_l1_n240(x)
+ else
+ fun_l1_n139(x)
+ end
+end
+
+def fun_l0_n531(x)
+ if (x < 1)
+ fun_l1_n975(x)
+ else
+ fun_l1_n970(x)
+ end
+end
+
+def fun_l0_n532(x)
+ if (x < 1)
+ fun_l1_n753(x)
+ else
+ fun_l1_n147(x)
+ end
+end
+
+def fun_l0_n533(x)
+ if (x < 1)
+ fun_l1_n269(x)
+ else
+ fun_l1_n292(x)
+ end
+end
+
+def fun_l0_n534(x)
+ if (x < 1)
+ fun_l1_n791(x)
+ else
+ fun_l1_n69(x)
+ end
+end
+
+def fun_l0_n535(x)
+ if (x < 1)
+ fun_l1_n469(x)
+ else
+ fun_l1_n58(x)
+ end
+end
+
+def fun_l0_n536(x)
+ if (x < 1)
+ fun_l1_n526(x)
+ else
+ fun_l1_n265(x)
+ end
+end
+
+def fun_l0_n537(x)
+ if (x < 1)
+ fun_l1_n681(x)
+ else
+ fun_l1_n646(x)
+ end
+end
+
+def fun_l0_n538(x)
+ if (x < 1)
+ fun_l1_n377(x)
+ else
+ fun_l1_n969(x)
+ end
+end
+
+def fun_l0_n539(x)
+ if (x < 1)
+ fun_l1_n935(x)
+ else
+ fun_l1_n556(x)
+ end
+end
+
+def fun_l0_n540(x)
+ if (x < 1)
+ fun_l1_n498(x)
+ else
+ fun_l1_n439(x)
+ end
+end
+
+def fun_l0_n541(x)
+ if (x < 1)
+ fun_l1_n451(x)
+ else
+ fun_l1_n35(x)
+ end
+end
+
+def fun_l0_n542(x)
+ if (x < 1)
+ fun_l1_n32(x)
+ else
+ fun_l1_n795(x)
+ end
+end
+
+def fun_l0_n543(x)
+ if (x < 1)
+ fun_l1_n732(x)
+ else
+ fun_l1_n530(x)
+ end
+end
+
+def fun_l0_n544(x)
+ if (x < 1)
+ fun_l1_n176(x)
+ else
+ fun_l1_n735(x)
+ end
+end
+
+def fun_l0_n545(x)
+ if (x < 1)
+ fun_l1_n34(x)
+ else
+ fun_l1_n989(x)
+ end
+end
+
+def fun_l0_n546(x)
+ if (x < 1)
+ fun_l1_n534(x)
+ else
+ fun_l1_n705(x)
+ end
+end
+
+def fun_l0_n547(x)
+ if (x < 1)
+ fun_l1_n997(x)
+ else
+ fun_l1_n883(x)
+ end
+end
+
+def fun_l0_n548(x)
+ if (x < 1)
+ fun_l1_n379(x)
+ else
+ fun_l1_n33(x)
+ end
+end
+
+def fun_l0_n549(x)
+ if (x < 1)
+ fun_l1_n454(x)
+ else
+ fun_l1_n516(x)
+ end
+end
+
+def fun_l0_n550(x)
+ if (x < 1)
+ fun_l1_n678(x)
+ else
+ fun_l1_n652(x)
+ end
+end
+
+def fun_l0_n551(x)
+ if (x < 1)
+ fun_l1_n13(x)
+ else
+ fun_l1_n864(x)
+ end
+end
+
+def fun_l0_n552(x)
+ if (x < 1)
+ fun_l1_n178(x)
+ else
+ fun_l1_n996(x)
+ end
+end
+
+def fun_l0_n553(x)
+ if (x < 1)
+ fun_l1_n865(x)
+ else
+ fun_l1_n703(x)
+ end
+end
+
+def fun_l0_n554(x)
+ if (x < 1)
+ fun_l1_n306(x)
+ else
+ fun_l1_n24(x)
+ end
+end
+
+def fun_l0_n555(x)
+ if (x < 1)
+ fun_l1_n110(x)
+ else
+ fun_l1_n123(x)
+ end
+end
+
+def fun_l0_n556(x)
+ if (x < 1)
+ fun_l1_n367(x)
+ else
+ fun_l1_n117(x)
+ end
+end
+
+def fun_l0_n557(x)
+ if (x < 1)
+ fun_l1_n967(x)
+ else
+ fun_l1_n662(x)
+ end
+end
+
+def fun_l0_n558(x)
+ if (x < 1)
+ fun_l1_n68(x)
+ else
+ fun_l1_n47(x)
+ end
+end
+
+def fun_l0_n559(x)
+ if (x < 1)
+ fun_l1_n154(x)
+ else
+ fun_l1_n344(x)
+ end
+end
+
+def fun_l0_n560(x)
+ if (x < 1)
+ fun_l1_n835(x)
+ else
+ fun_l1_n577(x)
+ end
+end
+
+def fun_l0_n561(x)
+ if (x < 1)
+ fun_l1_n393(x)
+ else
+ fun_l1_n419(x)
+ end
+end
+
+def fun_l0_n562(x)
+ if (x < 1)
+ fun_l1_n632(x)
+ else
+ fun_l1_n630(x)
+ end
+end
+
+def fun_l0_n563(x)
+ if (x < 1)
+ fun_l1_n9(x)
+ else
+ fun_l1_n109(x)
+ end
+end
+
+def fun_l0_n564(x)
+ if (x < 1)
+ fun_l1_n65(x)
+ else
+ fun_l1_n123(x)
+ end
+end
+
+def fun_l0_n565(x)
+ if (x < 1)
+ fun_l1_n156(x)
+ else
+ fun_l1_n921(x)
+ end
+end
+
+def fun_l0_n566(x)
+ if (x < 1)
+ fun_l1_n88(x)
+ else
+ fun_l1_n743(x)
+ end
+end
+
+def fun_l0_n567(x)
+ if (x < 1)
+ fun_l1_n92(x)
+ else
+ fun_l1_n27(x)
+ end
+end
+
+def fun_l0_n568(x)
+ if (x < 1)
+ fun_l1_n462(x)
+ else
+ fun_l1_n988(x)
+ end
+end
+
+def fun_l0_n569(x)
+ if (x < 1)
+ fun_l1_n241(x)
+ else
+ fun_l1_n199(x)
+ end
+end
+
+def fun_l0_n570(x)
+ if (x < 1)
+ fun_l1_n429(x)
+ else
+ fun_l1_n530(x)
+ end
+end
+
+def fun_l0_n571(x)
+ if (x < 1)
+ fun_l1_n412(x)
+ else
+ fun_l1_n530(x)
+ end
+end
+
+def fun_l0_n572(x)
+ if (x < 1)
+ fun_l1_n100(x)
+ else
+ fun_l1_n270(x)
+ end
+end
+
+def fun_l0_n573(x)
+ if (x < 1)
+ fun_l1_n326(x)
+ else
+ fun_l1_n191(x)
+ end
+end
+
+def fun_l0_n574(x)
+ if (x < 1)
+ fun_l1_n151(x)
+ else
+ fun_l1_n354(x)
+ end
+end
+
+def fun_l0_n575(x)
+ if (x < 1)
+ fun_l1_n322(x)
+ else
+ fun_l1_n534(x)
+ end
+end
+
+def fun_l0_n576(x)
+ if (x < 1)
+ fun_l1_n995(x)
+ else
+ fun_l1_n658(x)
+ end
+end
+
+def fun_l0_n577(x)
+ if (x < 1)
+ fun_l1_n193(x)
+ else
+ fun_l1_n444(x)
+ end
+end
+
+def fun_l0_n578(x)
+ if (x < 1)
+ fun_l1_n527(x)
+ else
+ fun_l1_n517(x)
+ end
+end
+
+def fun_l0_n579(x)
+ if (x < 1)
+ fun_l1_n885(x)
+ else
+ fun_l1_n218(x)
+ end
+end
+
+def fun_l0_n580(x)
+ if (x < 1)
+ fun_l1_n789(x)
+ else
+ fun_l1_n711(x)
+ end
+end
+
+def fun_l0_n581(x)
+ if (x < 1)
+ fun_l1_n848(x)
+ else
+ fun_l1_n321(x)
+ end
+end
+
+def fun_l0_n582(x)
+ if (x < 1)
+ fun_l1_n389(x)
+ else
+ fun_l1_n360(x)
+ end
+end
+
+def fun_l0_n583(x)
+ if (x < 1)
+ fun_l1_n319(x)
+ else
+ fun_l1_n972(x)
+ end
+end
+
+def fun_l0_n584(x)
+ if (x < 1)
+ fun_l1_n421(x)
+ else
+ fun_l1_n659(x)
+ end
+end
+
+def fun_l0_n585(x)
+ if (x < 1)
+ fun_l1_n462(x)
+ else
+ fun_l1_n302(x)
+ end
+end
+
+def fun_l0_n586(x)
+ if (x < 1)
+ fun_l1_n122(x)
+ else
+ fun_l1_n50(x)
+ end
+end
+
+def fun_l0_n587(x)
+ if (x < 1)
+ fun_l1_n795(x)
+ else
+ fun_l1_n622(x)
+ end
+end
+
+def fun_l0_n588(x)
+ if (x < 1)
+ fun_l1_n719(x)
+ else
+ fun_l1_n390(x)
+ end
+end
+
+def fun_l0_n589(x)
+ if (x < 1)
+ fun_l1_n916(x)
+ else
+ fun_l1_n925(x)
+ end
+end
+
+def fun_l0_n590(x)
+ if (x < 1)
+ fun_l1_n541(x)
+ else
+ fun_l1_n139(x)
+ end
+end
+
+def fun_l0_n591(x)
+ if (x < 1)
+ fun_l1_n610(x)
+ else
+ fun_l1_n509(x)
+ end
+end
+
+def fun_l0_n592(x)
+ if (x < 1)
+ fun_l1_n217(x)
+ else
+ fun_l1_n452(x)
+ end
+end
+
+def fun_l0_n593(x)
+ if (x < 1)
+ fun_l1_n456(x)
+ else
+ fun_l1_n888(x)
+ end
+end
+
+def fun_l0_n594(x)
+ if (x < 1)
+ fun_l1_n987(x)
+ else
+ fun_l1_n462(x)
+ end
+end
+
+def fun_l0_n595(x)
+ if (x < 1)
+ fun_l1_n571(x)
+ else
+ fun_l1_n429(x)
+ end
+end
+
+def fun_l0_n596(x)
+ if (x < 1)
+ fun_l1_n751(x)
+ else
+ fun_l1_n773(x)
+ end
+end
+
+def fun_l0_n597(x)
+ if (x < 1)
+ fun_l1_n181(x)
+ else
+ fun_l1_n340(x)
+ end
+end
+
+def fun_l0_n598(x)
+ if (x < 1)
+ fun_l1_n6(x)
+ else
+ fun_l1_n39(x)
+ end
+end
+
+def fun_l0_n599(x)
+ if (x < 1)
+ fun_l1_n814(x)
+ else
+ fun_l1_n320(x)
+ end
+end
+
+def fun_l0_n600(x)
+ if (x < 1)
+ fun_l1_n931(x)
+ else
+ fun_l1_n535(x)
+ end
+end
+
+def fun_l0_n601(x)
+ if (x < 1)
+ fun_l1_n99(x)
+ else
+ fun_l1_n154(x)
+ end
+end
+
+def fun_l0_n602(x)
+ if (x < 1)
+ fun_l1_n981(x)
+ else
+ fun_l1_n817(x)
+ end
+end
+
+def fun_l0_n603(x)
+ if (x < 1)
+ fun_l1_n975(x)
+ else
+ fun_l1_n364(x)
+ end
+end
+
+def fun_l0_n604(x)
+ if (x < 1)
+ fun_l1_n112(x)
+ else
+ fun_l1_n226(x)
+ end
+end
+
+def fun_l0_n605(x)
+ if (x < 1)
+ fun_l1_n995(x)
+ else
+ fun_l1_n95(x)
+ end
+end
+
+def fun_l0_n606(x)
+ if (x < 1)
+ fun_l1_n930(x)
+ else
+ fun_l1_n77(x)
+ end
+end
+
+def fun_l0_n607(x)
+ if (x < 1)
+ fun_l1_n899(x)
+ else
+ fun_l1_n957(x)
+ end
+end
+
+def fun_l0_n608(x)
+ if (x < 1)
+ fun_l1_n844(x)
+ else
+ fun_l1_n119(x)
+ end
+end
+
+def fun_l0_n609(x)
+ if (x < 1)
+ fun_l1_n861(x)
+ else
+ fun_l1_n74(x)
+ end
+end
+
+def fun_l0_n610(x)
+ if (x < 1)
+ fun_l1_n521(x)
+ else
+ fun_l1_n46(x)
+ end
+end
+
+def fun_l0_n611(x)
+ if (x < 1)
+ fun_l1_n258(x)
+ else
+ fun_l1_n208(x)
+ end
+end
+
+def fun_l0_n612(x)
+ if (x < 1)
+ fun_l1_n620(x)
+ else
+ fun_l1_n427(x)
+ end
+end
+
+def fun_l0_n613(x)
+ if (x < 1)
+ fun_l1_n583(x)
+ else
+ fun_l1_n400(x)
+ end
+end
+
+def fun_l0_n614(x)
+ if (x < 1)
+ fun_l1_n933(x)
+ else
+ fun_l1_n810(x)
+ end
+end
+
+def fun_l0_n615(x)
+ if (x < 1)
+ fun_l1_n154(x)
+ else
+ fun_l1_n879(x)
+ end
+end
+
+def fun_l0_n616(x)
+ if (x < 1)
+ fun_l1_n715(x)
+ else
+ fun_l1_n862(x)
+ end
+end
+
+def fun_l0_n617(x)
+ if (x < 1)
+ fun_l1_n178(x)
+ else
+ fun_l1_n285(x)
+ end
+end
+
+def fun_l0_n618(x)
+ if (x < 1)
+ fun_l1_n458(x)
+ else
+ fun_l1_n217(x)
+ end
+end
+
+def fun_l0_n619(x)
+ if (x < 1)
+ fun_l1_n655(x)
+ else
+ fun_l1_n405(x)
+ end
+end
+
+def fun_l0_n620(x)
+ if (x < 1)
+ fun_l1_n470(x)
+ else
+ fun_l1_n306(x)
+ end
+end
+
+def fun_l0_n621(x)
+ if (x < 1)
+ fun_l1_n755(x)
+ else
+ fun_l1_n425(x)
+ end
+end
+
+def fun_l0_n622(x)
+ if (x < 1)
+ fun_l1_n426(x)
+ else
+ fun_l1_n737(x)
+ end
+end
+
+def fun_l0_n623(x)
+ if (x < 1)
+ fun_l1_n79(x)
+ else
+ fun_l1_n55(x)
+ end
+end
+
+def fun_l0_n624(x)
+ if (x < 1)
+ fun_l1_n437(x)
+ else
+ fun_l1_n79(x)
+ end
+end
+
+def fun_l0_n625(x)
+ if (x < 1)
+ fun_l1_n691(x)
+ else
+ fun_l1_n198(x)
+ end
+end
+
+def fun_l0_n626(x)
+ if (x < 1)
+ fun_l1_n703(x)
+ else
+ fun_l1_n585(x)
+ end
+end
+
+def fun_l0_n627(x)
+ if (x < 1)
+ fun_l1_n966(x)
+ else
+ fun_l1_n425(x)
+ end
+end
+
+def fun_l0_n628(x)
+ if (x < 1)
+ fun_l1_n516(x)
+ else
+ fun_l1_n744(x)
+ end
+end
+
+def fun_l0_n629(x)
+ if (x < 1)
+ fun_l1_n40(x)
+ else
+ fun_l1_n942(x)
+ end
+end
+
+def fun_l0_n630(x)
+ if (x < 1)
+ fun_l1_n528(x)
+ else
+ fun_l1_n440(x)
+ end
+end
+
+def fun_l0_n631(x)
+ if (x < 1)
+ fun_l1_n139(x)
+ else
+ fun_l1_n403(x)
+ end
+end
+
+def fun_l0_n632(x)
+ if (x < 1)
+ fun_l1_n421(x)
+ else
+ fun_l1_n510(x)
+ end
+end
+
+def fun_l0_n633(x)
+ if (x < 1)
+ fun_l1_n718(x)
+ else
+ fun_l1_n388(x)
+ end
+end
+
+def fun_l0_n634(x)
+ if (x < 1)
+ fun_l1_n67(x)
+ else
+ fun_l1_n342(x)
+ end
+end
+
+def fun_l0_n635(x)
+ if (x < 1)
+ fun_l1_n943(x)
+ else
+ fun_l1_n941(x)
+ end
+end
+
+def fun_l0_n636(x)
+ if (x < 1)
+ fun_l1_n170(x)
+ else
+ fun_l1_n527(x)
+ end
+end
+
+def fun_l0_n637(x)
+ if (x < 1)
+ fun_l1_n336(x)
+ else
+ fun_l1_n496(x)
+ end
+end
+
+def fun_l0_n638(x)
+ if (x < 1)
+ fun_l1_n730(x)
+ else
+ fun_l1_n10(x)
+ end
+end
+
+def fun_l0_n639(x)
+ if (x < 1)
+ fun_l1_n939(x)
+ else
+ fun_l1_n940(x)
+ end
+end
+
+def fun_l0_n640(x)
+ if (x < 1)
+ fun_l1_n73(x)
+ else
+ fun_l1_n439(x)
+ end
+end
+
+def fun_l0_n641(x)
+ if (x < 1)
+ fun_l1_n460(x)
+ else
+ fun_l1_n828(x)
+ end
+end
+
+def fun_l0_n642(x)
+ if (x < 1)
+ fun_l1_n90(x)
+ else
+ fun_l1_n113(x)
+ end
+end
+
+def fun_l0_n643(x)
+ if (x < 1)
+ fun_l1_n972(x)
+ else
+ fun_l1_n15(x)
+ end
+end
+
+def fun_l0_n644(x)
+ if (x < 1)
+ fun_l1_n417(x)
+ else
+ fun_l1_n228(x)
+ end
+end
+
+def fun_l0_n645(x)
+ if (x < 1)
+ fun_l1_n876(x)
+ else
+ fun_l1_n152(x)
+ end
+end
+
+def fun_l0_n646(x)
+ if (x < 1)
+ fun_l1_n404(x)
+ else
+ fun_l1_n147(x)
+ end
+end
+
+def fun_l0_n647(x)
+ if (x < 1)
+ fun_l1_n802(x)
+ else
+ fun_l1_n824(x)
+ end
+end
+
+def fun_l0_n648(x)
+ if (x < 1)
+ fun_l1_n771(x)
+ else
+ fun_l1_n421(x)
+ end
+end
+
+def fun_l0_n649(x)
+ if (x < 1)
+ fun_l1_n807(x)
+ else
+ fun_l1_n955(x)
+ end
+end
+
+def fun_l0_n650(x)
+ if (x < 1)
+ fun_l1_n221(x)
+ else
+ fun_l1_n367(x)
+ end
+end
+
+def fun_l0_n651(x)
+ if (x < 1)
+ fun_l1_n955(x)
+ else
+ fun_l1_n401(x)
+ end
+end
+
+def fun_l0_n652(x)
+ if (x < 1)
+ fun_l1_n203(x)
+ else
+ fun_l1_n909(x)
+ end
+end
+
+def fun_l0_n653(x)
+ if (x < 1)
+ fun_l1_n154(x)
+ else
+ fun_l1_n535(x)
+ end
+end
+
+def fun_l0_n654(x)
+ if (x < 1)
+ fun_l1_n420(x)
+ else
+ fun_l1_n393(x)
+ end
+end
+
+def fun_l0_n655(x)
+ if (x < 1)
+ fun_l1_n232(x)
+ else
+ fun_l1_n981(x)
+ end
+end
+
+def fun_l0_n656(x)
+ if (x < 1)
+ fun_l1_n873(x)
+ else
+ fun_l1_n510(x)
+ end
+end
+
+def fun_l0_n657(x)
+ if (x < 1)
+ fun_l1_n919(x)
+ else
+ fun_l1_n706(x)
+ end
+end
+
+def fun_l0_n658(x)
+ if (x < 1)
+ fun_l1_n429(x)
+ else
+ fun_l1_n112(x)
+ end
+end
+
+def fun_l0_n659(x)
+ if (x < 1)
+ fun_l1_n547(x)
+ else
+ fun_l1_n712(x)
+ end
+end
+
+def fun_l0_n660(x)
+ if (x < 1)
+ fun_l1_n498(x)
+ else
+ fun_l1_n695(x)
+ end
+end
+
+def fun_l0_n661(x)
+ if (x < 1)
+ fun_l1_n801(x)
+ else
+ fun_l1_n659(x)
+ end
+end
+
+def fun_l0_n662(x)
+ if (x < 1)
+ fun_l1_n796(x)
+ else
+ fun_l1_n229(x)
+ end
+end
+
+def fun_l0_n663(x)
+ if (x < 1)
+ fun_l1_n11(x)
+ else
+ fun_l1_n620(x)
+ end
+end
+
+def fun_l0_n664(x)
+ if (x < 1)
+ fun_l1_n652(x)
+ else
+ fun_l1_n416(x)
+ end
+end
+
+def fun_l0_n665(x)
+ if (x < 1)
+ fun_l1_n655(x)
+ else
+ fun_l1_n331(x)
+ end
+end
+
+def fun_l0_n666(x)
+ if (x < 1)
+ fun_l1_n846(x)
+ else
+ fun_l1_n1(x)
+ end
+end
+
+def fun_l0_n667(x)
+ if (x < 1)
+ fun_l1_n55(x)
+ else
+ fun_l1_n32(x)
+ end
+end
+
+def fun_l0_n668(x)
+ if (x < 1)
+ fun_l1_n241(x)
+ else
+ fun_l1_n627(x)
+ end
+end
+
+def fun_l0_n669(x)
+ if (x < 1)
+ fun_l1_n234(x)
+ else
+ fun_l1_n996(x)
+ end
+end
+
+def fun_l0_n670(x)
+ if (x < 1)
+ fun_l1_n235(x)
+ else
+ fun_l1_n761(x)
+ end
+end
+
+def fun_l0_n671(x)
+ if (x < 1)
+ fun_l1_n990(x)
+ else
+ fun_l1_n236(x)
+ end
+end
+
+def fun_l0_n672(x)
+ if (x < 1)
+ fun_l1_n970(x)
+ else
+ fun_l1_n595(x)
+ end
+end
+
+def fun_l0_n673(x)
+ if (x < 1)
+ fun_l1_n294(x)
+ else
+ fun_l1_n440(x)
+ end
+end
+
+def fun_l0_n674(x)
+ if (x < 1)
+ fun_l1_n597(x)
+ else
+ fun_l1_n956(x)
+ end
+end
+
+def fun_l0_n675(x)
+ if (x < 1)
+ fun_l1_n942(x)
+ else
+ fun_l1_n352(x)
+ end
+end
+
+def fun_l0_n676(x)
+ if (x < 1)
+ fun_l1_n309(x)
+ else
+ fun_l1_n294(x)
+ end
+end
+
+def fun_l0_n677(x)
+ if (x < 1)
+ fun_l1_n752(x)
+ else
+ fun_l1_n447(x)
+ end
+end
+
+def fun_l0_n678(x)
+ if (x < 1)
+ fun_l1_n890(x)
+ else
+ fun_l1_n497(x)
+ end
+end
+
+def fun_l0_n679(x)
+ if (x < 1)
+ fun_l1_n808(x)
+ else
+ fun_l1_n881(x)
+ end
+end
+
+def fun_l0_n680(x)
+ if (x < 1)
+ fun_l1_n966(x)
+ else
+ fun_l1_n460(x)
+ end
+end
+
+def fun_l0_n681(x)
+ if (x < 1)
+ fun_l1_n104(x)
+ else
+ fun_l1_n262(x)
+ end
+end
+
+def fun_l0_n682(x)
+ if (x < 1)
+ fun_l1_n425(x)
+ else
+ fun_l1_n177(x)
+ end
+end
+
+def fun_l0_n683(x)
+ if (x < 1)
+ fun_l1_n15(x)
+ else
+ fun_l1_n458(x)
+ end
+end
+
+def fun_l0_n684(x)
+ if (x < 1)
+ fun_l1_n760(x)
+ else
+ fun_l1_n997(x)
+ end
+end
+
+def fun_l0_n685(x)
+ if (x < 1)
+ fun_l1_n496(x)
+ else
+ fun_l1_n223(x)
+ end
+end
+
+def fun_l0_n686(x)
+ if (x < 1)
+ fun_l1_n363(x)
+ else
+ fun_l1_n543(x)
+ end
+end
+
+def fun_l0_n687(x)
+ if (x < 1)
+ fun_l1_n758(x)
+ else
+ fun_l1_n473(x)
+ end
+end
+
+def fun_l0_n688(x)
+ if (x < 1)
+ fun_l1_n854(x)
+ else
+ fun_l1_n999(x)
+ end
+end
+
+def fun_l0_n689(x)
+ if (x < 1)
+ fun_l1_n336(x)
+ else
+ fun_l1_n388(x)
+ end
+end
+
+def fun_l0_n690(x)
+ if (x < 1)
+ fun_l1_n930(x)
+ else
+ fun_l1_n478(x)
+ end
+end
+
+def fun_l0_n691(x)
+ if (x < 1)
+ fun_l1_n423(x)
+ else
+ fun_l1_n83(x)
+ end
+end
+
+def fun_l0_n692(x)
+ if (x < 1)
+ fun_l1_n797(x)
+ else
+ fun_l1_n427(x)
+ end
+end
+
+def fun_l0_n693(x)
+ if (x < 1)
+ fun_l1_n907(x)
+ else
+ fun_l1_n1(x)
+ end
+end
+
+def fun_l0_n694(x)
+ if (x < 1)
+ fun_l1_n601(x)
+ else
+ fun_l1_n809(x)
+ end
+end
+
+def fun_l0_n695(x)
+ if (x < 1)
+ fun_l1_n252(x)
+ else
+ fun_l1_n233(x)
+ end
+end
+
+def fun_l0_n696(x)
+ if (x < 1)
+ fun_l1_n36(x)
+ else
+ fun_l1_n796(x)
+ end
+end
+
+def fun_l0_n697(x)
+ if (x < 1)
+ fun_l1_n893(x)
+ else
+ fun_l1_n926(x)
+ end
+end
+
+def fun_l0_n698(x)
+ if (x < 1)
+ fun_l1_n511(x)
+ else
+ fun_l1_n88(x)
+ end
+end
+
+def fun_l0_n699(x)
+ if (x < 1)
+ fun_l1_n573(x)
+ else
+ fun_l1_n718(x)
+ end
+end
+
+def fun_l0_n700(x)
+ if (x < 1)
+ fun_l1_n475(x)
+ else
+ fun_l1_n539(x)
+ end
+end
+
+def fun_l0_n701(x)
+ if (x < 1)
+ fun_l1_n238(x)
+ else
+ fun_l1_n253(x)
+ end
+end
+
+def fun_l0_n702(x)
+ if (x < 1)
+ fun_l1_n731(x)
+ else
+ fun_l1_n225(x)
+ end
+end
+
+def fun_l0_n703(x)
+ if (x < 1)
+ fun_l1_n594(x)
+ else
+ fun_l1_n16(x)
+ end
+end
+
+def fun_l0_n704(x)
+ if (x < 1)
+ fun_l1_n732(x)
+ else
+ fun_l1_n354(x)
+ end
+end
+
+def fun_l0_n705(x)
+ if (x < 1)
+ fun_l1_n812(x)
+ else
+ fun_l1_n218(x)
+ end
+end
+
+def fun_l0_n706(x)
+ if (x < 1)
+ fun_l1_n731(x)
+ else
+ fun_l1_n343(x)
+ end
+end
+
+def fun_l0_n707(x)
+ if (x < 1)
+ fun_l1_n134(x)
+ else
+ fun_l1_n752(x)
+ end
+end
+
+def fun_l0_n708(x)
+ if (x < 1)
+ fun_l1_n899(x)
+ else
+ fun_l1_n854(x)
+ end
+end
+
+def fun_l0_n709(x)
+ if (x < 1)
+ fun_l1_n120(x)
+ else
+ fun_l1_n193(x)
+ end
+end
+
+def fun_l0_n710(x)
+ if (x < 1)
+ fun_l1_n22(x)
+ else
+ fun_l1_n254(x)
+ end
+end
+
+def fun_l0_n711(x)
+ if (x < 1)
+ fun_l1_n527(x)
+ else
+ fun_l1_n921(x)
+ end
+end
+
+def fun_l0_n712(x)
+ if (x < 1)
+ fun_l1_n820(x)
+ else
+ fun_l1_n96(x)
+ end
+end
+
+def fun_l0_n713(x)
+ if (x < 1)
+ fun_l1_n145(x)
+ else
+ fun_l1_n226(x)
+ end
+end
+
+def fun_l0_n714(x)
+ if (x < 1)
+ fun_l1_n643(x)
+ else
+ fun_l1_n407(x)
+ end
+end
+
+def fun_l0_n715(x)
+ if (x < 1)
+ fun_l1_n349(x)
+ else
+ fun_l1_n450(x)
+ end
+end
+
+def fun_l0_n716(x)
+ if (x < 1)
+ fun_l1_n954(x)
+ else
+ fun_l1_n707(x)
+ end
+end
+
+def fun_l0_n717(x)
+ if (x < 1)
+ fun_l1_n723(x)
+ else
+ fun_l1_n762(x)
+ end
+end
+
+def fun_l0_n718(x)
+ if (x < 1)
+ fun_l1_n299(x)
+ else
+ fun_l1_n332(x)
+ end
+end
+
+def fun_l0_n719(x)
+ if (x < 1)
+ fun_l1_n493(x)
+ else
+ fun_l1_n521(x)
+ end
+end
+
+def fun_l0_n720(x)
+ if (x < 1)
+ fun_l1_n39(x)
+ else
+ fun_l1_n17(x)
+ end
+end
+
+def fun_l0_n721(x)
+ if (x < 1)
+ fun_l1_n297(x)
+ else
+ fun_l1_n800(x)
+ end
+end
+
+def fun_l0_n722(x)
+ if (x < 1)
+ fun_l1_n758(x)
+ else
+ fun_l1_n135(x)
+ end
+end
+
+def fun_l0_n723(x)
+ if (x < 1)
+ fun_l1_n471(x)
+ else
+ fun_l1_n351(x)
+ end
+end
+
+def fun_l0_n724(x)
+ if (x < 1)
+ fun_l1_n381(x)
+ else
+ fun_l1_n281(x)
+ end
+end
+
+def fun_l0_n725(x)
+ if (x < 1)
+ fun_l1_n624(x)
+ else
+ fun_l1_n162(x)
+ end
+end
+
+def fun_l0_n726(x)
+ if (x < 1)
+ fun_l1_n143(x)
+ else
+ fun_l1_n417(x)
+ end
+end
+
+def fun_l0_n727(x)
+ if (x < 1)
+ fun_l1_n623(x)
+ else
+ fun_l1_n19(x)
+ end
+end
+
+def fun_l0_n728(x)
+ if (x < 1)
+ fun_l1_n687(x)
+ else
+ fun_l1_n574(x)
+ end
+end
+
+def fun_l0_n729(x)
+ if (x < 1)
+ fun_l1_n225(x)
+ else
+ fun_l1_n871(x)
+ end
+end
+
+def fun_l0_n730(x)
+ if (x < 1)
+ fun_l1_n830(x)
+ else
+ fun_l1_n273(x)
+ end
+end
+
+def fun_l0_n731(x)
+ if (x < 1)
+ fun_l1_n95(x)
+ else
+ fun_l1_n864(x)
+ end
+end
+
+def fun_l0_n732(x)
+ if (x < 1)
+ fun_l1_n902(x)
+ else
+ fun_l1_n522(x)
+ end
+end
+
+def fun_l0_n733(x)
+ if (x < 1)
+ fun_l1_n564(x)
+ else
+ fun_l1_n55(x)
+ end
+end
+
+def fun_l0_n734(x)
+ if (x < 1)
+ fun_l1_n481(x)
+ else
+ fun_l1_n880(x)
+ end
+end
+
+def fun_l0_n735(x)
+ if (x < 1)
+ fun_l1_n87(x)
+ else
+ fun_l1_n693(x)
+ end
+end
+
+def fun_l0_n736(x)
+ if (x < 1)
+ fun_l1_n72(x)
+ else
+ fun_l1_n396(x)
+ end
+end
+
+def fun_l0_n737(x)
+ if (x < 1)
+ fun_l1_n920(x)
+ else
+ fun_l1_n852(x)
+ end
+end
+
+def fun_l0_n738(x)
+ if (x < 1)
+ fun_l1_n342(x)
+ else
+ fun_l1_n959(x)
+ end
+end
+
+def fun_l0_n739(x)
+ if (x < 1)
+ fun_l1_n682(x)
+ else
+ fun_l1_n714(x)
+ end
+end
+
+def fun_l0_n740(x)
+ if (x < 1)
+ fun_l1_n264(x)
+ else
+ fun_l1_n325(x)
+ end
+end
+
+def fun_l0_n741(x)
+ if (x < 1)
+ fun_l1_n621(x)
+ else
+ fun_l1_n339(x)
+ end
+end
+
+def fun_l0_n742(x)
+ if (x < 1)
+ fun_l1_n46(x)
+ else
+ fun_l1_n766(x)
+ end
+end
+
+def fun_l0_n743(x)
+ if (x < 1)
+ fun_l1_n333(x)
+ else
+ fun_l1_n353(x)
+ end
+end
+
+def fun_l0_n744(x)
+ if (x < 1)
+ fun_l1_n930(x)
+ else
+ fun_l1_n964(x)
+ end
+end
+
+def fun_l0_n745(x)
+ if (x < 1)
+ fun_l1_n785(x)
+ else
+ fun_l1_n114(x)
+ end
+end
+
+def fun_l0_n746(x)
+ if (x < 1)
+ fun_l1_n402(x)
+ else
+ fun_l1_n803(x)
+ end
+end
+
+def fun_l0_n747(x)
+ if (x < 1)
+ fun_l1_n878(x)
+ else
+ fun_l1_n870(x)
+ end
+end
+
+def fun_l0_n748(x)
+ if (x < 1)
+ fun_l1_n683(x)
+ else
+ fun_l1_n287(x)
+ end
+end
+
+def fun_l0_n749(x)
+ if (x < 1)
+ fun_l1_n816(x)
+ else
+ fun_l1_n849(x)
+ end
+end
+
+def fun_l0_n750(x)
+ if (x < 1)
+ fun_l1_n523(x)
+ else
+ fun_l1_n555(x)
+ end
+end
+
+def fun_l0_n751(x)
+ if (x < 1)
+ fun_l1_n270(x)
+ else
+ fun_l1_n660(x)
+ end
+end
+
+def fun_l0_n752(x)
+ if (x < 1)
+ fun_l1_n786(x)
+ else
+ fun_l1_n749(x)
+ end
+end
+
+def fun_l0_n753(x)
+ if (x < 1)
+ fun_l1_n567(x)
+ else
+ fun_l1_n325(x)
+ end
+end
+
+def fun_l0_n754(x)
+ if (x < 1)
+ fun_l1_n502(x)
+ else
+ fun_l1_n610(x)
+ end
+end
+
+def fun_l0_n755(x)
+ if (x < 1)
+ fun_l1_n336(x)
+ else
+ fun_l1_n354(x)
+ end
+end
+
+def fun_l0_n756(x)
+ if (x < 1)
+ fun_l1_n435(x)
+ else
+ fun_l1_n484(x)
+ end
+end
+
+def fun_l0_n757(x)
+ if (x < 1)
+ fun_l1_n849(x)
+ else
+ fun_l1_n42(x)
+ end
+end
+
+def fun_l0_n758(x)
+ if (x < 1)
+ fun_l1_n294(x)
+ else
+ fun_l1_n483(x)
+ end
+end
+
+def fun_l0_n759(x)
+ if (x < 1)
+ fun_l1_n14(x)
+ else
+ fun_l1_n9(x)
+ end
+end
+
+def fun_l0_n760(x)
+ if (x < 1)
+ fun_l1_n860(x)
+ else
+ fun_l1_n645(x)
+ end
+end
+
+def fun_l0_n761(x)
+ if (x < 1)
+ fun_l1_n577(x)
+ else
+ fun_l1_n0(x)
+ end
+end
+
+def fun_l0_n762(x)
+ if (x < 1)
+ fun_l1_n28(x)
+ else
+ fun_l1_n834(x)
+ end
+end
+
+def fun_l0_n763(x)
+ if (x < 1)
+ fun_l1_n147(x)
+ else
+ fun_l1_n177(x)
+ end
+end
+
+def fun_l0_n764(x)
+ if (x < 1)
+ fun_l1_n429(x)
+ else
+ fun_l1_n646(x)
+ end
+end
+
+def fun_l0_n765(x)
+ if (x < 1)
+ fun_l1_n474(x)
+ else
+ fun_l1_n22(x)
+ end
+end
+
+def fun_l0_n766(x)
+ if (x < 1)
+ fun_l1_n264(x)
+ else
+ fun_l1_n549(x)
+ end
+end
+
+def fun_l0_n767(x)
+ if (x < 1)
+ fun_l1_n351(x)
+ else
+ fun_l1_n813(x)
+ end
+end
+
+def fun_l0_n768(x)
+ if (x < 1)
+ fun_l1_n798(x)
+ else
+ fun_l1_n684(x)
+ end
+end
+
+def fun_l0_n769(x)
+ if (x < 1)
+ fun_l1_n202(x)
+ else
+ fun_l1_n982(x)
+ end
+end
+
+def fun_l0_n770(x)
+ if (x < 1)
+ fun_l1_n611(x)
+ else
+ fun_l1_n52(x)
+ end
+end
+
+def fun_l0_n771(x)
+ if (x < 1)
+ fun_l1_n754(x)
+ else
+ fun_l1_n7(x)
+ end
+end
+
+def fun_l0_n772(x)
+ if (x < 1)
+ fun_l1_n98(x)
+ else
+ fun_l1_n149(x)
+ end
+end
+
+def fun_l0_n773(x)
+ if (x < 1)
+ fun_l1_n358(x)
+ else
+ fun_l1_n603(x)
+ end
+end
+
+def fun_l0_n774(x)
+ if (x < 1)
+ fun_l1_n604(x)
+ else
+ fun_l1_n318(x)
+ end
+end
+
+def fun_l0_n775(x)
+ if (x < 1)
+ fun_l1_n831(x)
+ else
+ fun_l1_n635(x)
+ end
+end
+
+def fun_l0_n776(x)
+ if (x < 1)
+ fun_l1_n738(x)
+ else
+ fun_l1_n563(x)
+ end
+end
+
+def fun_l0_n777(x)
+ if (x < 1)
+ fun_l1_n570(x)
+ else
+ fun_l1_n671(x)
+ end
+end
+
+def fun_l0_n778(x)
+ if (x < 1)
+ fun_l1_n945(x)
+ else
+ fun_l1_n840(x)
+ end
+end
+
+def fun_l0_n779(x)
+ if (x < 1)
+ fun_l1_n116(x)
+ else
+ fun_l1_n942(x)
+ end
+end
+
+def fun_l0_n780(x)
+ if (x < 1)
+ fun_l1_n835(x)
+ else
+ fun_l1_n244(x)
+ end
+end
+
+def fun_l0_n781(x)
+ if (x < 1)
+ fun_l1_n427(x)
+ else
+ fun_l1_n556(x)
+ end
+end
+
+def fun_l0_n782(x)
+ if (x < 1)
+ fun_l1_n280(x)
+ else
+ fun_l1_n926(x)
+ end
+end
+
+def fun_l0_n783(x)
+ if (x < 1)
+ fun_l1_n674(x)
+ else
+ fun_l1_n560(x)
+ end
+end
+
+def fun_l0_n784(x)
+ if (x < 1)
+ fun_l1_n978(x)
+ else
+ fun_l1_n139(x)
+ end
+end
+
+def fun_l0_n785(x)
+ if (x < 1)
+ fun_l1_n928(x)
+ else
+ fun_l1_n11(x)
+ end
+end
+
+def fun_l0_n786(x)
+ if (x < 1)
+ fun_l1_n829(x)
+ else
+ fun_l1_n239(x)
+ end
+end
+
+def fun_l0_n787(x)
+ if (x < 1)
+ fun_l1_n732(x)
+ else
+ fun_l1_n829(x)
+ end
+end
+
+def fun_l0_n788(x)
+ if (x < 1)
+ fun_l1_n968(x)
+ else
+ fun_l1_n596(x)
+ end
+end
+
+def fun_l0_n789(x)
+ if (x < 1)
+ fun_l1_n214(x)
+ else
+ fun_l1_n158(x)
+ end
+end
+
+def fun_l0_n790(x)
+ if (x < 1)
+ fun_l1_n566(x)
+ else
+ fun_l1_n390(x)
+ end
+end
+
+def fun_l0_n791(x)
+ if (x < 1)
+ fun_l1_n936(x)
+ else
+ fun_l1_n31(x)
+ end
+end
+
+def fun_l0_n792(x)
+ if (x < 1)
+ fun_l1_n291(x)
+ else
+ fun_l1_n835(x)
+ end
+end
+
+def fun_l0_n793(x)
+ if (x < 1)
+ fun_l1_n300(x)
+ else
+ fun_l1_n658(x)
+ end
+end
+
+def fun_l0_n794(x)
+ if (x < 1)
+ fun_l1_n609(x)
+ else
+ fun_l1_n156(x)
+ end
+end
+
+def fun_l0_n795(x)
+ if (x < 1)
+ fun_l1_n419(x)
+ else
+ fun_l1_n534(x)
+ end
+end
+
+def fun_l0_n796(x)
+ if (x < 1)
+ fun_l1_n401(x)
+ else
+ fun_l1_n281(x)
+ end
+end
+
+def fun_l0_n797(x)
+ if (x < 1)
+ fun_l1_n538(x)
+ else
+ fun_l1_n905(x)
+ end
+end
+
+def fun_l0_n798(x)
+ if (x < 1)
+ fun_l1_n427(x)
+ else
+ fun_l1_n978(x)
+ end
+end
+
+def fun_l0_n799(x)
+ if (x < 1)
+ fun_l1_n851(x)
+ else
+ fun_l1_n57(x)
+ end
+end
+
+def fun_l0_n800(x)
+ if (x < 1)
+ fun_l1_n836(x)
+ else
+ fun_l1_n306(x)
+ end
+end
+
+def fun_l0_n801(x)
+ if (x < 1)
+ fun_l1_n414(x)
+ else
+ fun_l1_n679(x)
+ end
+end
+
+def fun_l0_n802(x)
+ if (x < 1)
+ fun_l1_n645(x)
+ else
+ fun_l1_n115(x)
+ end
+end
+
+def fun_l0_n803(x)
+ if (x < 1)
+ fun_l1_n884(x)
+ else
+ fun_l1_n801(x)
+ end
+end
+
+def fun_l0_n804(x)
+ if (x < 1)
+ fun_l1_n713(x)
+ else
+ fun_l1_n974(x)
+ end
+end
+
+def fun_l0_n805(x)
+ if (x < 1)
+ fun_l1_n301(x)
+ else
+ fun_l1_n589(x)
+ end
+end
+
+def fun_l0_n806(x)
+ if (x < 1)
+ fun_l1_n912(x)
+ else
+ fun_l1_n766(x)
+ end
+end
+
+def fun_l0_n807(x)
+ if (x < 1)
+ fun_l1_n656(x)
+ else
+ fun_l1_n765(x)
+ end
+end
+
+def fun_l0_n808(x)
+ if (x < 1)
+ fun_l1_n517(x)
+ else
+ fun_l1_n964(x)
+ end
+end
+
+def fun_l0_n809(x)
+ if (x < 1)
+ fun_l1_n878(x)
+ else
+ fun_l1_n69(x)
+ end
+end
+
+def fun_l0_n810(x)
+ if (x < 1)
+ fun_l1_n527(x)
+ else
+ fun_l1_n841(x)
+ end
+end
+
+def fun_l0_n811(x)
+ if (x < 1)
+ fun_l1_n564(x)
+ else
+ fun_l1_n541(x)
+ end
+end
+
+def fun_l0_n812(x)
+ if (x < 1)
+ fun_l1_n754(x)
+ else
+ fun_l1_n681(x)
+ end
+end
+
+def fun_l0_n813(x)
+ if (x < 1)
+ fun_l1_n21(x)
+ else
+ fun_l1_n561(x)
+ end
+end
+
+def fun_l0_n814(x)
+ if (x < 1)
+ fun_l1_n547(x)
+ else
+ fun_l1_n631(x)
+ end
+end
+
+def fun_l0_n815(x)
+ if (x < 1)
+ fun_l1_n956(x)
+ else
+ fun_l1_n889(x)
+ end
+end
+
+def fun_l0_n816(x)
+ if (x < 1)
+ fun_l1_n817(x)
+ else
+ fun_l1_n957(x)
+ end
+end
+
+def fun_l0_n817(x)
+ if (x < 1)
+ fun_l1_n622(x)
+ else
+ fun_l1_n827(x)
+ end
+end
+
+def fun_l0_n818(x)
+ if (x < 1)
+ fun_l1_n7(x)
+ else
+ fun_l1_n208(x)
+ end
+end
+
+def fun_l0_n819(x)
+ if (x < 1)
+ fun_l1_n411(x)
+ else
+ fun_l1_n742(x)
+ end
+end
+
+def fun_l0_n820(x)
+ if (x < 1)
+ fun_l1_n676(x)
+ else
+ fun_l1_n144(x)
+ end
+end
+
+def fun_l0_n821(x)
+ if (x < 1)
+ fun_l1_n489(x)
+ else
+ fun_l1_n963(x)
+ end
+end
+
+def fun_l0_n822(x)
+ if (x < 1)
+ fun_l1_n645(x)
+ else
+ fun_l1_n953(x)
+ end
+end
+
+def fun_l0_n823(x)
+ if (x < 1)
+ fun_l1_n974(x)
+ else
+ fun_l1_n75(x)
+ end
+end
+
+def fun_l0_n824(x)
+ if (x < 1)
+ fun_l1_n295(x)
+ else
+ fun_l1_n249(x)
+ end
+end
+
+def fun_l0_n825(x)
+ if (x < 1)
+ fun_l1_n141(x)
+ else
+ fun_l1_n633(x)
+ end
+end
+
+def fun_l0_n826(x)
+ if (x < 1)
+ fun_l1_n317(x)
+ else
+ fun_l1_n152(x)
+ end
+end
+
+def fun_l0_n827(x)
+ if (x < 1)
+ fun_l1_n570(x)
+ else
+ fun_l1_n377(x)
+ end
+end
+
+def fun_l0_n828(x)
+ if (x < 1)
+ fun_l1_n392(x)
+ else
+ fun_l1_n477(x)
+ end
+end
+
+def fun_l0_n829(x)
+ if (x < 1)
+ fun_l1_n277(x)
+ else
+ fun_l1_n276(x)
+ end
+end
+
+def fun_l0_n830(x)
+ if (x < 1)
+ fun_l1_n579(x)
+ else
+ fun_l1_n648(x)
+ end
+end
+
+def fun_l0_n831(x)
+ if (x < 1)
+ fun_l1_n8(x)
+ else
+ fun_l1_n25(x)
+ end
+end
+
+def fun_l0_n832(x)
+ if (x < 1)
+ fun_l1_n724(x)
+ else
+ fun_l1_n617(x)
+ end
+end
+
+def fun_l0_n833(x)
+ if (x < 1)
+ fun_l1_n771(x)
+ else
+ fun_l1_n619(x)
+ end
+end
+
+def fun_l0_n834(x)
+ if (x < 1)
+ fun_l1_n23(x)
+ else
+ fun_l1_n127(x)
+ end
+end
+
+def fun_l0_n835(x)
+ if (x < 1)
+ fun_l1_n322(x)
+ else
+ fun_l1_n327(x)
+ end
+end
+
+def fun_l0_n836(x)
+ if (x < 1)
+ fun_l1_n7(x)
+ else
+ fun_l1_n600(x)
+ end
+end
+
+def fun_l0_n837(x)
+ if (x < 1)
+ fun_l1_n796(x)
+ else
+ fun_l1_n782(x)
+ end
+end
+
+def fun_l0_n838(x)
+ if (x < 1)
+ fun_l1_n937(x)
+ else
+ fun_l1_n899(x)
+ end
+end
+
+def fun_l0_n839(x)
+ if (x < 1)
+ fun_l1_n16(x)
+ else
+ fun_l1_n349(x)
+ end
+end
+
+def fun_l0_n840(x)
+ if (x < 1)
+ fun_l1_n622(x)
+ else
+ fun_l1_n960(x)
+ end
+end
+
+def fun_l0_n841(x)
+ if (x < 1)
+ fun_l1_n295(x)
+ else
+ fun_l1_n176(x)
+ end
+end
+
+def fun_l0_n842(x)
+ if (x < 1)
+ fun_l1_n302(x)
+ else
+ fun_l1_n639(x)
+ end
+end
+
+def fun_l0_n843(x)
+ if (x < 1)
+ fun_l1_n342(x)
+ else
+ fun_l1_n373(x)
+ end
+end
+
+def fun_l0_n844(x)
+ if (x < 1)
+ fun_l1_n5(x)
+ else
+ fun_l1_n787(x)
+ end
+end
+
+def fun_l0_n845(x)
+ if (x < 1)
+ fun_l1_n89(x)
+ else
+ fun_l1_n951(x)
+ end
+end
+
+def fun_l0_n846(x)
+ if (x < 1)
+ fun_l1_n954(x)
+ else
+ fun_l1_n982(x)
+ end
+end
+
+def fun_l0_n847(x)
+ if (x < 1)
+ fun_l1_n971(x)
+ else
+ fun_l1_n917(x)
+ end
+end
+
+def fun_l0_n848(x)
+ if (x < 1)
+ fun_l1_n845(x)
+ else
+ fun_l1_n343(x)
+ end
+end
+
+def fun_l0_n849(x)
+ if (x < 1)
+ fun_l1_n684(x)
+ else
+ fun_l1_n683(x)
+ end
+end
+
+def fun_l0_n850(x)
+ if (x < 1)
+ fun_l1_n670(x)
+ else
+ fun_l1_n256(x)
+ end
+end
+
+def fun_l0_n851(x)
+ if (x < 1)
+ fun_l1_n405(x)
+ else
+ fun_l1_n123(x)
+ end
+end
+
+def fun_l0_n852(x)
+ if (x < 1)
+ fun_l1_n809(x)
+ else
+ fun_l1_n691(x)
+ end
+end
+
+def fun_l0_n853(x)
+ if (x < 1)
+ fun_l1_n937(x)
+ else
+ fun_l1_n92(x)
+ end
+end
+
+def fun_l0_n854(x)
+ if (x < 1)
+ fun_l1_n735(x)
+ else
+ fun_l1_n948(x)
+ end
+end
+
+def fun_l0_n855(x)
+ if (x < 1)
+ fun_l1_n684(x)
+ else
+ fun_l1_n566(x)
+ end
+end
+
+def fun_l0_n856(x)
+ if (x < 1)
+ fun_l1_n508(x)
+ else
+ fun_l1_n35(x)
+ end
+end
+
+def fun_l0_n857(x)
+ if (x < 1)
+ fun_l1_n865(x)
+ else
+ fun_l1_n930(x)
+ end
+end
+
+def fun_l0_n858(x)
+ if (x < 1)
+ fun_l1_n937(x)
+ else
+ fun_l1_n241(x)
+ end
+end
+
+def fun_l0_n859(x)
+ if (x < 1)
+ fun_l1_n938(x)
+ else
+ fun_l1_n108(x)
+ end
+end
+
+def fun_l0_n860(x)
+ if (x < 1)
+ fun_l1_n491(x)
+ else
+ fun_l1_n119(x)
+ end
+end
+
+def fun_l0_n861(x)
+ if (x < 1)
+ fun_l1_n991(x)
+ else
+ fun_l1_n198(x)
+ end
+end
+
+def fun_l0_n862(x)
+ if (x < 1)
+ fun_l1_n846(x)
+ else
+ fun_l1_n513(x)
+ end
+end
+
+def fun_l0_n863(x)
+ if (x < 1)
+ fun_l1_n279(x)
+ else
+ fun_l1_n229(x)
+ end
+end
+
+def fun_l0_n864(x)
+ if (x < 1)
+ fun_l1_n52(x)
+ else
+ fun_l1_n765(x)
+ end
+end
+
+def fun_l0_n865(x)
+ if (x < 1)
+ fun_l1_n35(x)
+ else
+ fun_l1_n572(x)
+ end
+end
+
+def fun_l0_n866(x)
+ if (x < 1)
+ fun_l1_n4(x)
+ else
+ fun_l1_n645(x)
+ end
+end
+
+def fun_l0_n867(x)
+ if (x < 1)
+ fun_l1_n112(x)
+ else
+ fun_l1_n758(x)
+ end
+end
+
+def fun_l0_n868(x)
+ if (x < 1)
+ fun_l1_n924(x)
+ else
+ fun_l1_n251(x)
+ end
+end
+
+def fun_l0_n869(x)
+ if (x < 1)
+ fun_l1_n558(x)
+ else
+ fun_l1_n818(x)
+ end
+end
+
+def fun_l0_n870(x)
+ if (x < 1)
+ fun_l1_n804(x)
+ else
+ fun_l1_n746(x)
+ end
+end
+
+def fun_l0_n871(x)
+ if (x < 1)
+ fun_l1_n111(x)
+ else
+ fun_l1_n407(x)
+ end
+end
+
+def fun_l0_n872(x)
+ if (x < 1)
+ fun_l1_n973(x)
+ else
+ fun_l1_n384(x)
+ end
+end
+
+def fun_l0_n873(x)
+ if (x < 1)
+ fun_l1_n102(x)
+ else
+ fun_l1_n199(x)
+ end
+end
+
+def fun_l0_n874(x)
+ if (x < 1)
+ fun_l1_n735(x)
+ else
+ fun_l1_n903(x)
+ end
+end
+
+def fun_l0_n875(x)
+ if (x < 1)
+ fun_l1_n95(x)
+ else
+ fun_l1_n720(x)
+ end
+end
+
+def fun_l0_n876(x)
+ if (x < 1)
+ fun_l1_n864(x)
+ else
+ fun_l1_n970(x)
+ end
+end
+
+def fun_l0_n877(x)
+ if (x < 1)
+ fun_l1_n729(x)
+ else
+ fun_l1_n207(x)
+ end
+end
+
+def fun_l0_n878(x)
+ if (x < 1)
+ fun_l1_n104(x)
+ else
+ fun_l1_n209(x)
+ end
+end
+
+def fun_l0_n879(x)
+ if (x < 1)
+ fun_l1_n566(x)
+ else
+ fun_l1_n918(x)
+ end
+end
+
+def fun_l0_n880(x)
+ if (x < 1)
+ fun_l1_n457(x)
+ else
+ fun_l1_n104(x)
+ end
+end
+
+def fun_l0_n881(x)
+ if (x < 1)
+ fun_l1_n745(x)
+ else
+ fun_l1_n476(x)
+ end
+end
+
+def fun_l0_n882(x)
+ if (x < 1)
+ fun_l1_n346(x)
+ else
+ fun_l1_n642(x)
+ end
+end
+
+def fun_l0_n883(x)
+ if (x < 1)
+ fun_l1_n78(x)
+ else
+ fun_l1_n210(x)
+ end
+end
+
+def fun_l0_n884(x)
+ if (x < 1)
+ fun_l1_n864(x)
+ else
+ fun_l1_n439(x)
+ end
+end
+
+def fun_l0_n885(x)
+ if (x < 1)
+ fun_l1_n0(x)
+ else
+ fun_l1_n414(x)
+ end
+end
+
+def fun_l0_n886(x)
+ if (x < 1)
+ fun_l1_n217(x)
+ else
+ fun_l1_n444(x)
+ end
+end
+
+def fun_l0_n887(x)
+ if (x < 1)
+ fun_l1_n193(x)
+ else
+ fun_l1_n788(x)
+ end
+end
+
+def fun_l0_n888(x)
+ if (x < 1)
+ fun_l1_n30(x)
+ else
+ fun_l1_n793(x)
+ end
+end
+
+def fun_l0_n889(x)
+ if (x < 1)
+ fun_l1_n222(x)
+ else
+ fun_l1_n936(x)
+ end
+end
+
+def fun_l0_n890(x)
+ if (x < 1)
+ fun_l1_n758(x)
+ else
+ fun_l1_n52(x)
+ end
+end
+
+def fun_l0_n891(x)
+ if (x < 1)
+ fun_l1_n796(x)
+ else
+ fun_l1_n424(x)
+ end
+end
+
+def fun_l0_n892(x)
+ if (x < 1)
+ fun_l1_n627(x)
+ else
+ fun_l1_n284(x)
+ end
+end
+
+def fun_l0_n893(x)
+ if (x < 1)
+ fun_l1_n42(x)
+ else
+ fun_l1_n193(x)
+ end
+end
+
+def fun_l0_n894(x)
+ if (x < 1)
+ fun_l1_n90(x)
+ else
+ fun_l1_n158(x)
+ end
+end
+
+def fun_l0_n895(x)
+ if (x < 1)
+ fun_l1_n878(x)
+ else
+ fun_l1_n396(x)
+ end
+end
+
+def fun_l0_n896(x)
+ if (x < 1)
+ fun_l1_n665(x)
+ else
+ fun_l1_n731(x)
+ end
+end
+
+def fun_l0_n897(x)
+ if (x < 1)
+ fun_l1_n618(x)
+ else
+ fun_l1_n152(x)
+ end
+end
+
+def fun_l0_n898(x)
+ if (x < 1)
+ fun_l1_n64(x)
+ else
+ fun_l1_n697(x)
+ end
+end
+
+def fun_l0_n899(x)
+ if (x < 1)
+ fun_l1_n354(x)
+ else
+ fun_l1_n657(x)
+ end
+end
+
+def fun_l0_n900(x)
+ if (x < 1)
+ fun_l1_n79(x)
+ else
+ fun_l1_n794(x)
+ end
+end
+
+def fun_l0_n901(x)
+ if (x < 1)
+ fun_l1_n623(x)
+ else
+ fun_l1_n392(x)
+ end
+end
+
+def fun_l0_n902(x)
+ if (x < 1)
+ fun_l1_n529(x)
+ else
+ fun_l1_n708(x)
+ end
+end
+
+def fun_l0_n903(x)
+ if (x < 1)
+ fun_l1_n900(x)
+ else
+ fun_l1_n830(x)
+ end
+end
+
+def fun_l0_n904(x)
+ if (x < 1)
+ fun_l1_n424(x)
+ else
+ fun_l1_n564(x)
+ end
+end
+
+def fun_l0_n905(x)
+ if (x < 1)
+ fun_l1_n557(x)
+ else
+ fun_l1_n612(x)
+ end
+end
+
+def fun_l0_n906(x)
+ if (x < 1)
+ fun_l1_n725(x)
+ else
+ fun_l1_n166(x)
+ end
+end
+
+def fun_l0_n907(x)
+ if (x < 1)
+ fun_l1_n534(x)
+ else
+ fun_l1_n159(x)
+ end
+end
+
+def fun_l0_n908(x)
+ if (x < 1)
+ fun_l1_n50(x)
+ else
+ fun_l1_n201(x)
+ end
+end
+
+def fun_l0_n909(x)
+ if (x < 1)
+ fun_l1_n568(x)
+ else
+ fun_l1_n276(x)
+ end
+end
+
+def fun_l0_n910(x)
+ if (x < 1)
+ fun_l1_n0(x)
+ else
+ fun_l1_n324(x)
+ end
+end
+
+def fun_l0_n911(x)
+ if (x < 1)
+ fun_l1_n926(x)
+ else
+ fun_l1_n524(x)
+ end
+end
+
+def fun_l0_n912(x)
+ if (x < 1)
+ fun_l1_n498(x)
+ else
+ fun_l1_n650(x)
+ end
+end
+
+def fun_l0_n913(x)
+ if (x < 1)
+ fun_l1_n593(x)
+ else
+ fun_l1_n860(x)
+ end
+end
+
+def fun_l0_n914(x)
+ if (x < 1)
+ fun_l1_n726(x)
+ else
+ fun_l1_n440(x)
+ end
+end
+
+def fun_l0_n915(x)
+ if (x < 1)
+ fun_l1_n422(x)
+ else
+ fun_l1_n627(x)
+ end
+end
+
+def fun_l0_n916(x)
+ if (x < 1)
+ fun_l1_n346(x)
+ else
+ fun_l1_n932(x)
+ end
+end
+
+def fun_l0_n917(x)
+ if (x < 1)
+ fun_l1_n403(x)
+ else
+ fun_l1_n58(x)
+ end
+end
+
+def fun_l0_n918(x)
+ if (x < 1)
+ fun_l1_n989(x)
+ else
+ fun_l1_n579(x)
+ end
+end
+
+def fun_l0_n919(x)
+ if (x < 1)
+ fun_l1_n933(x)
+ else
+ fun_l1_n434(x)
+ end
+end
+
+def fun_l0_n920(x)
+ if (x < 1)
+ fun_l1_n899(x)
+ else
+ fun_l1_n377(x)
+ end
+end
+
+def fun_l0_n921(x)
+ if (x < 1)
+ fun_l1_n17(x)
+ else
+ fun_l1_n637(x)
+ end
+end
+
+def fun_l0_n922(x)
+ if (x < 1)
+ fun_l1_n551(x)
+ else
+ fun_l1_n693(x)
+ end
+end
+
+def fun_l0_n923(x)
+ if (x < 1)
+ fun_l1_n861(x)
+ else
+ fun_l1_n248(x)
+ end
+end
+
+def fun_l0_n924(x)
+ if (x < 1)
+ fun_l1_n171(x)
+ else
+ fun_l1_n75(x)
+ end
+end
+
+def fun_l0_n925(x)
+ if (x < 1)
+ fun_l1_n233(x)
+ else
+ fun_l1_n444(x)
+ end
+end
+
+def fun_l0_n926(x)
+ if (x < 1)
+ fun_l1_n310(x)
+ else
+ fun_l1_n941(x)
+ end
+end
+
+def fun_l0_n927(x)
+ if (x < 1)
+ fun_l1_n363(x)
+ else
+ fun_l1_n567(x)
+ end
+end
+
+def fun_l0_n928(x)
+ if (x < 1)
+ fun_l1_n632(x)
+ else
+ fun_l1_n840(x)
+ end
+end
+
+def fun_l0_n929(x)
+ if (x < 1)
+ fun_l1_n368(x)
+ else
+ fun_l1_n713(x)
+ end
+end
+
+def fun_l0_n930(x)
+ if (x < 1)
+ fun_l1_n37(x)
+ else
+ fun_l1_n355(x)
+ end
+end
+
+def fun_l0_n931(x)
+ if (x < 1)
+ fun_l1_n907(x)
+ else
+ fun_l1_n784(x)
+ end
+end
+
+def fun_l0_n932(x)
+ if (x < 1)
+ fun_l1_n591(x)
+ else
+ fun_l1_n844(x)
+ end
+end
+
+def fun_l0_n933(x)
+ if (x < 1)
+ fun_l1_n996(x)
+ else
+ fun_l1_n943(x)
+ end
+end
+
+def fun_l0_n934(x)
+ if (x < 1)
+ fun_l1_n631(x)
+ else
+ fun_l1_n643(x)
+ end
+end
+
+def fun_l0_n935(x)
+ if (x < 1)
+ fun_l1_n875(x)
+ else
+ fun_l1_n89(x)
+ end
+end
+
+def fun_l0_n936(x)
+ if (x < 1)
+ fun_l1_n842(x)
+ else
+ fun_l1_n595(x)
+ end
+end
+
+def fun_l0_n937(x)
+ if (x < 1)
+ fun_l1_n921(x)
+ else
+ fun_l1_n271(x)
+ end
+end
+
+def fun_l0_n938(x)
+ if (x < 1)
+ fun_l1_n222(x)
+ else
+ fun_l1_n170(x)
+ end
+end
+
+def fun_l0_n939(x)
+ if (x < 1)
+ fun_l1_n567(x)
+ else
+ fun_l1_n463(x)
+ end
+end
+
+def fun_l0_n940(x)
+ if (x < 1)
+ fun_l1_n456(x)
+ else
+ fun_l1_n192(x)
+ end
+end
+
+def fun_l0_n941(x)
+ if (x < 1)
+ fun_l1_n32(x)
+ else
+ fun_l1_n951(x)
+ end
+end
+
+def fun_l0_n942(x)
+ if (x < 1)
+ fun_l1_n14(x)
+ else
+ fun_l1_n135(x)
+ end
+end
+
+def fun_l0_n943(x)
+ if (x < 1)
+ fun_l1_n15(x)
+ else
+ fun_l1_n234(x)
+ end
+end
+
+def fun_l0_n944(x)
+ if (x < 1)
+ fun_l1_n119(x)
+ else
+ fun_l1_n33(x)
+ end
+end
+
+def fun_l0_n945(x)
+ if (x < 1)
+ fun_l1_n859(x)
+ else
+ fun_l1_n497(x)
+ end
+end
+
+def fun_l0_n946(x)
+ if (x < 1)
+ fun_l1_n178(x)
+ else
+ fun_l1_n369(x)
+ end
+end
+
+def fun_l0_n947(x)
+ if (x < 1)
+ fun_l1_n64(x)
+ else
+ fun_l1_n356(x)
+ end
+end
+
+def fun_l0_n948(x)
+ if (x < 1)
+ fun_l1_n279(x)
+ else
+ fun_l1_n244(x)
+ end
+end
+
+def fun_l0_n949(x)
+ if (x < 1)
+ fun_l1_n728(x)
+ else
+ fun_l1_n548(x)
+ end
+end
+
+def fun_l0_n950(x)
+ if (x < 1)
+ fun_l1_n3(x)
+ else
+ fun_l1_n698(x)
+ end
+end
+
+def fun_l0_n951(x)
+ if (x < 1)
+ fun_l1_n665(x)
+ else
+ fun_l1_n198(x)
+ end
+end
+
+def fun_l0_n952(x)
+ if (x < 1)
+ fun_l1_n812(x)
+ else
+ fun_l1_n964(x)
+ end
+end
+
+def fun_l0_n953(x)
+ if (x < 1)
+ fun_l1_n851(x)
+ else
+ fun_l1_n877(x)
+ end
+end
+
+def fun_l0_n954(x)
+ if (x < 1)
+ fun_l1_n415(x)
+ else
+ fun_l1_n379(x)
+ end
+end
+
+def fun_l0_n955(x)
+ if (x < 1)
+ fun_l1_n806(x)
+ else
+ fun_l1_n919(x)
+ end
+end
+
+def fun_l0_n956(x)
+ if (x < 1)
+ fun_l1_n207(x)
+ else
+ fun_l1_n798(x)
+ end
+end
+
+def fun_l0_n957(x)
+ if (x < 1)
+ fun_l1_n269(x)
+ else
+ fun_l1_n416(x)
+ end
+end
+
+def fun_l0_n958(x)
+ if (x < 1)
+ fun_l1_n654(x)
+ else
+ fun_l1_n236(x)
+ end
+end
+
+def fun_l0_n959(x)
+ if (x < 1)
+ fun_l1_n392(x)
+ else
+ fun_l1_n623(x)
+ end
+end
+
+def fun_l0_n960(x)
+ if (x < 1)
+ fun_l1_n889(x)
+ else
+ fun_l1_n279(x)
+ end
+end
+
+def fun_l0_n961(x)
+ if (x < 1)
+ fun_l1_n476(x)
+ else
+ fun_l1_n201(x)
+ end
+end
+
+def fun_l0_n962(x)
+ if (x < 1)
+ fun_l1_n799(x)
+ else
+ fun_l1_n570(x)
+ end
+end
+
+def fun_l0_n963(x)
+ if (x < 1)
+ fun_l1_n802(x)
+ else
+ fun_l1_n114(x)
+ end
+end
+
+def fun_l0_n964(x)
+ if (x < 1)
+ fun_l1_n197(x)
+ else
+ fun_l1_n422(x)
+ end
+end
+
+def fun_l0_n965(x)
+ if (x < 1)
+ fun_l1_n37(x)
+ else
+ fun_l1_n691(x)
+ end
+end
+
+def fun_l0_n966(x)
+ if (x < 1)
+ fun_l1_n775(x)
+ else
+ fun_l1_n854(x)
+ end
+end
+
+def fun_l0_n967(x)
+ if (x < 1)
+ fun_l1_n373(x)
+ else
+ fun_l1_n306(x)
+ end
+end
+
+def fun_l0_n968(x)
+ if (x < 1)
+ fun_l1_n154(x)
+ else
+ fun_l1_n122(x)
+ end
+end
+
+def fun_l0_n969(x)
+ if (x < 1)
+ fun_l1_n497(x)
+ else
+ fun_l1_n456(x)
+ end
+end
+
+def fun_l0_n970(x)
+ if (x < 1)
+ fun_l1_n621(x)
+ else
+ fun_l1_n931(x)
+ end
+end
+
+def fun_l0_n971(x)
+ if (x < 1)
+ fun_l1_n963(x)
+ else
+ fun_l1_n613(x)
+ end
+end
+
+def fun_l0_n972(x)
+ if (x < 1)
+ fun_l1_n613(x)
+ else
+ fun_l1_n508(x)
+ end
+end
+
+def fun_l0_n973(x)
+ if (x < 1)
+ fun_l1_n466(x)
+ else
+ fun_l1_n929(x)
+ end
+end
+
+def fun_l0_n974(x)
+ if (x < 1)
+ fun_l1_n247(x)
+ else
+ fun_l1_n610(x)
+ end
+end
+
+def fun_l0_n975(x)
+ if (x < 1)
+ fun_l1_n674(x)
+ else
+ fun_l1_n609(x)
+ end
+end
+
+def fun_l0_n976(x)
+ if (x < 1)
+ fun_l1_n963(x)
+ else
+ fun_l1_n601(x)
+ end
+end
+
+def fun_l0_n977(x)
+ if (x < 1)
+ fun_l1_n728(x)
+ else
+ fun_l1_n242(x)
+ end
+end
+
+def fun_l0_n978(x)
+ if (x < 1)
+ fun_l1_n515(x)
+ else
+ fun_l1_n113(x)
+ end
+end
+
+def fun_l0_n979(x)
+ if (x < 1)
+ fun_l1_n734(x)
+ else
+ fun_l1_n271(x)
+ end
+end
+
+def fun_l0_n980(x)
+ if (x < 1)
+ fun_l1_n837(x)
+ else
+ fun_l1_n733(x)
+ end
+end
+
+def fun_l0_n981(x)
+ if (x < 1)
+ fun_l1_n326(x)
+ else
+ fun_l1_n213(x)
+ end
+end
+
+def fun_l0_n982(x)
+ if (x < 1)
+ fun_l1_n733(x)
+ else
+ fun_l1_n198(x)
+ end
+end
+
+def fun_l0_n983(x)
+ if (x < 1)
+ fun_l1_n989(x)
+ else
+ fun_l1_n700(x)
+ end
+end
+
+def fun_l0_n984(x)
+ if (x < 1)
+ fun_l1_n266(x)
+ else
+ fun_l1_n348(x)
+ end
+end
+
+def fun_l0_n985(x)
+ if (x < 1)
+ fun_l1_n931(x)
+ else
+ fun_l1_n646(x)
+ end
+end
+
+def fun_l0_n986(x)
+ if (x < 1)
+ fun_l1_n435(x)
+ else
+ fun_l1_n747(x)
+ end
+end
+
+def fun_l0_n987(x)
+ if (x < 1)
+ fun_l1_n474(x)
+ else
+ fun_l1_n638(x)
+ end
+end
+
+def fun_l0_n988(x)
+ if (x < 1)
+ fun_l1_n615(x)
+ else
+ fun_l1_n283(x)
+ end
+end
+
+def fun_l0_n989(x)
+ if (x < 1)
+ fun_l1_n410(x)
+ else
+ fun_l1_n289(x)
+ end
+end
+
+def fun_l0_n990(x)
+ if (x < 1)
+ fun_l1_n633(x)
+ else
+ fun_l1_n77(x)
+ end
+end
+
+def fun_l0_n991(x)
+ if (x < 1)
+ fun_l1_n153(x)
+ else
+ fun_l1_n255(x)
+ end
+end
+
+def fun_l0_n992(x)
+ if (x < 1)
+ fun_l1_n447(x)
+ else
+ fun_l1_n239(x)
+ end
+end
+
+def fun_l0_n993(x)
+ if (x < 1)
+ fun_l1_n837(x)
+ else
+ fun_l1_n582(x)
+ end
+end
+
+def fun_l0_n994(x)
+ if (x < 1)
+ fun_l1_n385(x)
+ else
+ fun_l1_n939(x)
+ end
+end
+
+def fun_l0_n995(x)
+ if (x < 1)
+ fun_l1_n236(x)
+ else
+ fun_l1_n497(x)
+ end
+end
+
+def fun_l0_n996(x)
+ if (x < 1)
+ fun_l1_n63(x)
+ else
+ fun_l1_n721(x)
+ end
+end
+
+def fun_l0_n997(x)
+ if (x < 1)
+ fun_l1_n457(x)
+ else
+ fun_l1_n376(x)
+ end
+end
+
+def fun_l0_n998(x)
+ if (x < 1)
+ fun_l1_n362(x)
+ else
+ fun_l1_n478(x)
+ end
+end
+
+def fun_l0_n999(x)
+ if (x < 1)
+ fun_l1_n554(x)
+ else
+ fun_l1_n422(x)
+ end
+end
+
+def fun_l1_n0(x)
+ if (x < 1)
+ fun_l2_n498(x)
+ else
+ fun_l2_n461(x)
+ end
+end
+
+def fun_l1_n1(x)
+ if (x < 1)
+ fun_l2_n424(x)
+ else
+ fun_l2_n137(x)
+ end
+end
+
+def fun_l1_n2(x)
+ if (x < 1)
+ fun_l2_n325(x)
+ else
+ fun_l2_n95(x)
+ end
+end
+
+def fun_l1_n3(x)
+ if (x < 1)
+ fun_l2_n917(x)
+ else
+ fun_l2_n469(x)
+ end
+end
+
+def fun_l1_n4(x)
+ if (x < 1)
+ fun_l2_n730(x)
+ else
+ fun_l2_n147(x)
+ end
+end
+
+def fun_l1_n5(x)
+ if (x < 1)
+ fun_l2_n796(x)
+ else
+ fun_l2_n907(x)
+ end
+end
+
+def fun_l1_n6(x)
+ if (x < 1)
+ fun_l2_n555(x)
+ else
+ fun_l2_n309(x)
+ end
+end
+
+def fun_l1_n7(x)
+ if (x < 1)
+ fun_l2_n475(x)
+ else
+ fun_l2_n193(x)
+ end
+end
+
+def fun_l1_n8(x)
+ if (x < 1)
+ fun_l2_n317(x)
+ else
+ fun_l2_n284(x)
+ end
+end
+
+def fun_l1_n9(x)
+ if (x < 1)
+ fun_l2_n297(x)
+ else
+ fun_l2_n370(x)
+ end
+end
+
+def fun_l1_n10(x)
+ if (x < 1)
+ fun_l2_n66(x)
+ else
+ fun_l2_n959(x)
+ end
+end
+
+def fun_l1_n11(x)
+ if (x < 1)
+ fun_l2_n833(x)
+ else
+ fun_l2_n250(x)
+ end
+end
+
+def fun_l1_n12(x)
+ if (x < 1)
+ fun_l2_n640(x)
+ else
+ fun_l2_n588(x)
+ end
+end
+
+def fun_l1_n13(x)
+ if (x < 1)
+ fun_l2_n91(x)
+ else
+ fun_l2_n294(x)
+ end
+end
+
+def fun_l1_n14(x)
+ if (x < 1)
+ fun_l2_n166(x)
+ else
+ fun_l2_n943(x)
+ end
+end
+
+def fun_l1_n15(x)
+ if (x < 1)
+ fun_l2_n352(x)
+ else
+ fun_l2_n363(x)
+ end
+end
+
+def fun_l1_n16(x)
+ if (x < 1)
+ fun_l2_n84(x)
+ else
+ fun_l2_n278(x)
+ end
+end
+
+def fun_l1_n17(x)
+ if (x < 1)
+ fun_l2_n308(x)
+ else
+ fun_l2_n341(x)
+ end
+end
+
+def fun_l1_n18(x)
+ if (x < 1)
+ fun_l2_n713(x)
+ else
+ fun_l2_n575(x)
+ end
+end
+
+def fun_l1_n19(x)
+ if (x < 1)
+ fun_l2_n81(x)
+ else
+ fun_l2_n301(x)
+ end
+end
+
+def fun_l1_n20(x)
+ if (x < 1)
+ fun_l2_n516(x)
+ else
+ fun_l2_n164(x)
+ end
+end
+
+def fun_l1_n21(x)
+ if (x < 1)
+ fun_l2_n900(x)
+ else
+ fun_l2_n963(x)
+ end
+end
+
+def fun_l1_n22(x)
+ if (x < 1)
+ fun_l2_n472(x)
+ else
+ fun_l2_n288(x)
+ end
+end
+
+def fun_l1_n23(x)
+ if (x < 1)
+ fun_l2_n587(x)
+ else
+ fun_l2_n515(x)
+ end
+end
+
+def fun_l1_n24(x)
+ if (x < 1)
+ fun_l2_n506(x)
+ else
+ fun_l2_n711(x)
+ end
+end
+
+def fun_l1_n25(x)
+ if (x < 1)
+ fun_l2_n935(x)
+ else
+ fun_l2_n177(x)
+ end
+end
+
+def fun_l1_n26(x)
+ if (x < 1)
+ fun_l2_n485(x)
+ else
+ fun_l2_n368(x)
+ end
+end
+
+def fun_l1_n27(x)
+ if (x < 1)
+ fun_l2_n984(x)
+ else
+ fun_l2_n290(x)
+ end
+end
+
+def fun_l1_n28(x)
+ if (x < 1)
+ fun_l2_n36(x)
+ else
+ fun_l2_n837(x)
+ end
+end
+
+def fun_l1_n29(x)
+ if (x < 1)
+ fun_l2_n752(x)
+ else
+ fun_l2_n311(x)
+ end
+end
+
+def fun_l1_n30(x)
+ if (x < 1)
+ fun_l2_n215(x)
+ else
+ fun_l2_n376(x)
+ end
+end
+
+def fun_l1_n31(x)
+ if (x < 1)
+ fun_l2_n533(x)
+ else
+ fun_l2_n92(x)
+ end
+end
+
+def fun_l1_n32(x)
+ if (x < 1)
+ fun_l2_n386(x)
+ else
+ fun_l2_n283(x)
+ end
+end
+
+def fun_l1_n33(x)
+ if (x < 1)
+ fun_l2_n268(x)
+ else
+ fun_l2_n256(x)
+ end
+end
+
+def fun_l1_n34(x)
+ if (x < 1)
+ fun_l2_n348(x)
+ else
+ fun_l2_n464(x)
+ end
+end
+
+def fun_l1_n35(x)
+ if (x < 1)
+ fun_l2_n25(x)
+ else
+ fun_l2_n33(x)
+ end
+end
+
+def fun_l1_n36(x)
+ if (x < 1)
+ fun_l2_n387(x)
+ else
+ fun_l2_n341(x)
+ end
+end
+
+def fun_l1_n37(x)
+ if (x < 1)
+ fun_l2_n580(x)
+ else
+ fun_l2_n476(x)
+ end
+end
+
+def fun_l1_n38(x)
+ if (x < 1)
+ fun_l2_n33(x)
+ else
+ fun_l2_n33(x)
+ end
+end
+
+def fun_l1_n39(x)
+ if (x < 1)
+ fun_l2_n861(x)
+ else
+ fun_l2_n52(x)
+ end
+end
+
+def fun_l1_n40(x)
+ if (x < 1)
+ fun_l2_n740(x)
+ else
+ fun_l2_n943(x)
+ end
+end
+
+def fun_l1_n41(x)
+ if (x < 1)
+ fun_l2_n956(x)
+ else
+ fun_l2_n159(x)
+ end
+end
+
+def fun_l1_n42(x)
+ if (x < 1)
+ fun_l2_n445(x)
+ else
+ fun_l2_n775(x)
+ end
+end
+
+def fun_l1_n43(x)
+ if (x < 1)
+ fun_l2_n667(x)
+ else
+ fun_l2_n282(x)
+ end
+end
+
+def fun_l1_n44(x)
+ if (x < 1)
+ fun_l2_n185(x)
+ else
+ fun_l2_n210(x)
+ end
+end
+
+def fun_l1_n45(x)
+ if (x < 1)
+ fun_l2_n490(x)
+ else
+ fun_l2_n21(x)
+ end
+end
+
+def fun_l1_n46(x)
+ if (x < 1)
+ fun_l2_n751(x)
+ else
+ fun_l2_n639(x)
+ end
+end
+
+def fun_l1_n47(x)
+ if (x < 1)
+ fun_l2_n431(x)
+ else
+ fun_l2_n917(x)
+ end
+end
+
+def fun_l1_n48(x)
+ if (x < 1)
+ fun_l2_n187(x)
+ else
+ fun_l2_n170(x)
+ end
+end
+
+def fun_l1_n49(x)
+ if (x < 1)
+ fun_l2_n780(x)
+ else
+ fun_l2_n77(x)
+ end
+end
+
+def fun_l1_n50(x)
+ if (x < 1)
+ fun_l2_n546(x)
+ else
+ fun_l2_n759(x)
+ end
+end
+
+def fun_l1_n51(x)
+ if (x < 1)
+ fun_l2_n453(x)
+ else
+ fun_l2_n951(x)
+ end
+end
+
+def fun_l1_n52(x)
+ if (x < 1)
+ fun_l2_n989(x)
+ else
+ fun_l2_n716(x)
+ end
+end
+
+def fun_l1_n53(x)
+ if (x < 1)
+ fun_l2_n652(x)
+ else
+ fun_l2_n36(x)
+ end
+end
+
+def fun_l1_n54(x)
+ if (x < 1)
+ fun_l2_n187(x)
+ else
+ fun_l2_n760(x)
+ end
+end
+
+def fun_l1_n55(x)
+ if (x < 1)
+ fun_l2_n706(x)
+ else
+ fun_l2_n927(x)
+ end
+end
+
+def fun_l1_n56(x)
+ if (x < 1)
+ fun_l2_n666(x)
+ else
+ fun_l2_n295(x)
+ end
+end
+
+def fun_l1_n57(x)
+ if (x < 1)
+ fun_l2_n424(x)
+ else
+ fun_l2_n447(x)
+ end
+end
+
+def fun_l1_n58(x)
+ if (x < 1)
+ fun_l2_n408(x)
+ else
+ fun_l2_n337(x)
+ end
+end
+
+def fun_l1_n59(x)
+ if (x < 1)
+ fun_l2_n567(x)
+ else
+ fun_l2_n765(x)
+ end
+end
+
+def fun_l1_n60(x)
+ if (x < 1)
+ fun_l2_n241(x)
+ else
+ fun_l2_n701(x)
+ end
+end
+
+def fun_l1_n61(x)
+ if (x < 1)
+ fun_l2_n831(x)
+ else
+ fun_l2_n382(x)
+ end
+end
+
+def fun_l1_n62(x)
+ if (x < 1)
+ fun_l2_n634(x)
+ else
+ fun_l2_n908(x)
+ end
+end
+
+def fun_l1_n63(x)
+ if (x < 1)
+ fun_l2_n696(x)
+ else
+ fun_l2_n48(x)
+ end
+end
+
+def fun_l1_n64(x)
+ if (x < 1)
+ fun_l2_n528(x)
+ else
+ fun_l2_n110(x)
+ end
+end
+
+def fun_l1_n65(x)
+ if (x < 1)
+ fun_l2_n767(x)
+ else
+ fun_l2_n973(x)
+ end
+end
+
+def fun_l1_n66(x)
+ if (x < 1)
+ fun_l2_n963(x)
+ else
+ fun_l2_n673(x)
+ end
+end
+
+def fun_l1_n67(x)
+ if (x < 1)
+ fun_l2_n927(x)
+ else
+ fun_l2_n309(x)
+ end
+end
+
+def fun_l1_n68(x)
+ if (x < 1)
+ fun_l2_n851(x)
+ else
+ fun_l2_n160(x)
+ end
+end
+
+def fun_l1_n69(x)
+ if (x < 1)
+ fun_l2_n575(x)
+ else
+ fun_l2_n800(x)
+ end
+end
+
+def fun_l1_n70(x)
+ if (x < 1)
+ fun_l2_n396(x)
+ else
+ fun_l2_n382(x)
+ end
+end
+
+def fun_l1_n71(x)
+ if (x < 1)
+ fun_l2_n508(x)
+ else
+ fun_l2_n763(x)
+ end
+end
+
+def fun_l1_n72(x)
+ if (x < 1)
+ fun_l2_n360(x)
+ else
+ fun_l2_n848(x)
+ end
+end
+
+def fun_l1_n73(x)
+ if (x < 1)
+ fun_l2_n878(x)
+ else
+ fun_l2_n83(x)
+ end
+end
+
+def fun_l1_n74(x)
+ if (x < 1)
+ fun_l2_n573(x)
+ else
+ fun_l2_n284(x)
+ end
+end
+
+def fun_l1_n75(x)
+ if (x < 1)
+ fun_l2_n999(x)
+ else
+ fun_l2_n954(x)
+ end
+end
+
+def fun_l1_n76(x)
+ if (x < 1)
+ fun_l2_n182(x)
+ else
+ fun_l2_n997(x)
+ end
+end
+
+def fun_l1_n77(x)
+ if (x < 1)
+ fun_l2_n802(x)
+ else
+ fun_l2_n409(x)
+ end
+end
+
+def fun_l1_n78(x)
+ if (x < 1)
+ fun_l2_n163(x)
+ else
+ fun_l2_n417(x)
+ end
+end
+
+def fun_l1_n79(x)
+ if (x < 1)
+ fun_l2_n328(x)
+ else
+ fun_l2_n688(x)
+ end
+end
+
+def fun_l1_n80(x)
+ if (x < 1)
+ fun_l2_n699(x)
+ else
+ fun_l2_n356(x)
+ end
+end
+
+def fun_l1_n81(x)
+ if (x < 1)
+ fun_l2_n44(x)
+ else
+ fun_l2_n302(x)
+ end
+end
+
+def fun_l1_n82(x)
+ if (x < 1)
+ fun_l2_n597(x)
+ else
+ fun_l2_n892(x)
+ end
+end
+
+def fun_l1_n83(x)
+ if (x < 1)
+ fun_l2_n494(x)
+ else
+ fun_l2_n547(x)
+ end
+end
+
+def fun_l1_n84(x)
+ if (x < 1)
+ fun_l2_n631(x)
+ else
+ fun_l2_n922(x)
+ end
+end
+
+def fun_l1_n85(x)
+ if (x < 1)
+ fun_l2_n797(x)
+ else
+ fun_l2_n874(x)
+ end
+end
+
+def fun_l1_n86(x)
+ if (x < 1)
+ fun_l2_n209(x)
+ else
+ fun_l2_n365(x)
+ end
+end
+
+def fun_l1_n87(x)
+ if (x < 1)
+ fun_l2_n516(x)
+ else
+ fun_l2_n371(x)
+ end
+end
+
+def fun_l1_n88(x)
+ if (x < 1)
+ fun_l2_n654(x)
+ else
+ fun_l2_n88(x)
+ end
+end
+
+def fun_l1_n89(x)
+ if (x < 1)
+ fun_l2_n70(x)
+ else
+ fun_l2_n521(x)
+ end
+end
+
+def fun_l1_n90(x)
+ if (x < 1)
+ fun_l2_n666(x)
+ else
+ fun_l2_n749(x)
+ end
+end
+
+def fun_l1_n91(x)
+ if (x < 1)
+ fun_l2_n504(x)
+ else
+ fun_l2_n339(x)
+ end
+end
+
+def fun_l1_n92(x)
+ if (x < 1)
+ fun_l2_n734(x)
+ else
+ fun_l2_n277(x)
+ end
+end
+
+def fun_l1_n93(x)
+ if (x < 1)
+ fun_l2_n300(x)
+ else
+ fun_l2_n826(x)
+ end
+end
+
+def fun_l1_n94(x)
+ if (x < 1)
+ fun_l2_n733(x)
+ else
+ fun_l2_n560(x)
+ end
+end
+
+def fun_l1_n95(x)
+ if (x < 1)
+ fun_l2_n834(x)
+ else
+ fun_l2_n644(x)
+ end
+end
+
+def fun_l1_n96(x)
+ if (x < 1)
+ fun_l2_n183(x)
+ else
+ fun_l2_n238(x)
+ end
+end
+
+def fun_l1_n97(x)
+ if (x < 1)
+ fun_l2_n372(x)
+ else
+ fun_l2_n753(x)
+ end
+end
+
+def fun_l1_n98(x)
+ if (x < 1)
+ fun_l2_n208(x)
+ else
+ fun_l2_n543(x)
+ end
+end
+
+def fun_l1_n99(x)
+ if (x < 1)
+ fun_l2_n38(x)
+ else
+ fun_l2_n974(x)
+ end
+end
+
+def fun_l1_n100(x)
+ if (x < 1)
+ fun_l2_n620(x)
+ else
+ fun_l2_n503(x)
+ end
+end
+
+def fun_l1_n101(x)
+ if (x < 1)
+ fun_l2_n248(x)
+ else
+ fun_l2_n189(x)
+ end
+end
+
+def fun_l1_n102(x)
+ if (x < 1)
+ fun_l2_n489(x)
+ else
+ fun_l2_n390(x)
+ end
+end
+
+def fun_l1_n103(x)
+ if (x < 1)
+ fun_l2_n452(x)
+ else
+ fun_l2_n22(x)
+ end
+end
+
+def fun_l1_n104(x)
+ if (x < 1)
+ fun_l2_n542(x)
+ else
+ fun_l2_n135(x)
+ end
+end
+
+def fun_l1_n105(x)
+ if (x < 1)
+ fun_l2_n988(x)
+ else
+ fun_l2_n118(x)
+ end
+end
+
+def fun_l1_n106(x)
+ if (x < 1)
+ fun_l2_n817(x)
+ else
+ fun_l2_n534(x)
+ end
+end
+
+def fun_l1_n107(x)
+ if (x < 1)
+ fun_l2_n812(x)
+ else
+ fun_l2_n206(x)
+ end
+end
+
+def fun_l1_n108(x)
+ if (x < 1)
+ fun_l2_n514(x)
+ else
+ fun_l2_n300(x)
+ end
+end
+
+def fun_l1_n109(x)
+ if (x < 1)
+ fun_l2_n482(x)
+ else
+ fun_l2_n376(x)
+ end
+end
+
+def fun_l1_n110(x)
+ if (x < 1)
+ fun_l2_n571(x)
+ else
+ fun_l2_n758(x)
+ end
+end
+
+def fun_l1_n111(x)
+ if (x < 1)
+ fun_l2_n971(x)
+ else
+ fun_l2_n811(x)
+ end
+end
+
+def fun_l1_n112(x)
+ if (x < 1)
+ fun_l2_n23(x)
+ else
+ fun_l2_n844(x)
+ end
+end
+
+def fun_l1_n113(x)
+ if (x < 1)
+ fun_l2_n865(x)
+ else
+ fun_l2_n149(x)
+ end
+end
+
+def fun_l1_n114(x)
+ if (x < 1)
+ fun_l2_n930(x)
+ else
+ fun_l2_n327(x)
+ end
+end
+
+def fun_l1_n115(x)
+ if (x < 1)
+ fun_l2_n67(x)
+ else
+ fun_l2_n442(x)
+ end
+end
+
+def fun_l1_n116(x)
+ if (x < 1)
+ fun_l2_n278(x)
+ else
+ fun_l2_n653(x)
+ end
+end
+
+def fun_l1_n117(x)
+ if (x < 1)
+ fun_l2_n457(x)
+ else
+ fun_l2_n179(x)
+ end
+end
+
+def fun_l1_n118(x)
+ if (x < 1)
+ fun_l2_n384(x)
+ else
+ fun_l2_n594(x)
+ end
+end
+
+def fun_l1_n119(x)
+ if (x < 1)
+ fun_l2_n361(x)
+ else
+ fun_l2_n770(x)
+ end
+end
+
+def fun_l1_n120(x)
+ if (x < 1)
+ fun_l2_n24(x)
+ else
+ fun_l2_n269(x)
+ end
+end
+
+def fun_l1_n121(x)
+ if (x < 1)
+ fun_l2_n57(x)
+ else
+ fun_l2_n2(x)
+ end
+end
+
+def fun_l1_n122(x)
+ if (x < 1)
+ fun_l2_n421(x)
+ else
+ fun_l2_n339(x)
+ end
+end
+
+def fun_l1_n123(x)
+ if (x < 1)
+ fun_l2_n623(x)
+ else
+ fun_l2_n985(x)
+ end
+end
+
+def fun_l1_n124(x)
+ if (x < 1)
+ fun_l2_n609(x)
+ else
+ fun_l2_n530(x)
+ end
+end
+
+def fun_l1_n125(x)
+ if (x < 1)
+ fun_l2_n565(x)
+ else
+ fun_l2_n155(x)
+ end
+end
+
+def fun_l1_n126(x)
+ if (x < 1)
+ fun_l2_n135(x)
+ else
+ fun_l2_n971(x)
+ end
+end
+
+def fun_l1_n127(x)
+ if (x < 1)
+ fun_l2_n691(x)
+ else
+ fun_l2_n503(x)
+ end
+end
+
+def fun_l1_n128(x)
+ if (x < 1)
+ fun_l2_n555(x)
+ else
+ fun_l2_n67(x)
+ end
+end
+
+def fun_l1_n129(x)
+ if (x < 1)
+ fun_l2_n95(x)
+ else
+ fun_l2_n192(x)
+ end
+end
+
+def fun_l1_n130(x)
+ if (x < 1)
+ fun_l2_n432(x)
+ else
+ fun_l2_n771(x)
+ end
+end
+
+def fun_l1_n131(x)
+ if (x < 1)
+ fun_l2_n993(x)
+ else
+ fun_l2_n539(x)
+ end
+end
+
+def fun_l1_n132(x)
+ if (x < 1)
+ fun_l2_n809(x)
+ else
+ fun_l2_n902(x)
+ end
+end
+
+def fun_l1_n133(x)
+ if (x < 1)
+ fun_l2_n95(x)
+ else
+ fun_l2_n928(x)
+ end
+end
+
+def fun_l1_n134(x)
+ if (x < 1)
+ fun_l2_n781(x)
+ else
+ fun_l2_n832(x)
+ end
+end
+
+def fun_l1_n135(x)
+ if (x < 1)
+ fun_l2_n231(x)
+ else
+ fun_l2_n392(x)
+ end
+end
+
+def fun_l1_n136(x)
+ if (x < 1)
+ fun_l2_n102(x)
+ else
+ fun_l2_n449(x)
+ end
+end
+
+def fun_l1_n137(x)
+ if (x < 1)
+ fun_l2_n196(x)
+ else
+ fun_l2_n909(x)
+ end
+end
+
+def fun_l1_n138(x)
+ if (x < 1)
+ fun_l2_n449(x)
+ else
+ fun_l2_n190(x)
+ end
+end
+
+def fun_l1_n139(x)
+ if (x < 1)
+ fun_l2_n638(x)
+ else
+ fun_l2_n149(x)
+ end
+end
+
+def fun_l1_n140(x)
+ if (x < 1)
+ fun_l2_n523(x)
+ else
+ fun_l2_n297(x)
+ end
+end
+
+def fun_l1_n141(x)
+ if (x < 1)
+ fun_l2_n476(x)
+ else
+ fun_l2_n161(x)
+ end
+end
+
+def fun_l1_n142(x)
+ if (x < 1)
+ fun_l2_n893(x)
+ else
+ fun_l2_n686(x)
+ end
+end
+
+def fun_l1_n143(x)
+ if (x < 1)
+ fun_l2_n958(x)
+ else
+ fun_l2_n899(x)
+ end
+end
+
+def fun_l1_n144(x)
+ if (x < 1)
+ fun_l2_n104(x)
+ else
+ fun_l2_n912(x)
+ end
+end
+
+def fun_l1_n145(x)
+ if (x < 1)
+ fun_l2_n332(x)
+ else
+ fun_l2_n579(x)
+ end
+end
+
+def fun_l1_n146(x)
+ if (x < 1)
+ fun_l2_n40(x)
+ else
+ fun_l2_n468(x)
+ end
+end
+
+def fun_l1_n147(x)
+ if (x < 1)
+ fun_l2_n771(x)
+ else
+ fun_l2_n314(x)
+ end
+end
+
+def fun_l1_n148(x)
+ if (x < 1)
+ fun_l2_n340(x)
+ else
+ fun_l2_n203(x)
+ end
+end
+
+def fun_l1_n149(x)
+ if (x < 1)
+ fun_l2_n952(x)
+ else
+ fun_l2_n265(x)
+ end
+end
+
+def fun_l1_n150(x)
+ if (x < 1)
+ fun_l2_n11(x)
+ else
+ fun_l2_n303(x)
+ end
+end
+
+def fun_l1_n151(x)
+ if (x < 1)
+ fun_l2_n394(x)
+ else
+ fun_l2_n317(x)
+ end
+end
+
+def fun_l1_n152(x)
+ if (x < 1)
+ fun_l2_n140(x)
+ else
+ fun_l2_n906(x)
+ end
+end
+
+def fun_l1_n153(x)
+ if (x < 1)
+ fun_l2_n75(x)
+ else
+ fun_l2_n485(x)
+ end
+end
+
+def fun_l1_n154(x)
+ if (x < 1)
+ fun_l2_n842(x)
+ else
+ fun_l2_n370(x)
+ end
+end
+
+def fun_l1_n155(x)
+ if (x < 1)
+ fun_l2_n346(x)
+ else
+ fun_l2_n833(x)
+ end
+end
+
+def fun_l1_n156(x)
+ if (x < 1)
+ fun_l2_n433(x)
+ else
+ fun_l2_n373(x)
+ end
+end
+
+def fun_l1_n157(x)
+ if (x < 1)
+ fun_l2_n978(x)
+ else
+ fun_l2_n99(x)
+ end
+end
+
+def fun_l1_n158(x)
+ if (x < 1)
+ fun_l2_n540(x)
+ else
+ fun_l2_n987(x)
+ end
+end
+
+def fun_l1_n159(x)
+ if (x < 1)
+ fun_l2_n785(x)
+ else
+ fun_l2_n478(x)
+ end
+end
+
+def fun_l1_n160(x)
+ if (x < 1)
+ fun_l2_n282(x)
+ else
+ fun_l2_n222(x)
+ end
+end
+
+def fun_l1_n161(x)
+ if (x < 1)
+ fun_l2_n29(x)
+ else
+ fun_l2_n946(x)
+ end
+end
+
+def fun_l1_n162(x)
+ if (x < 1)
+ fun_l2_n314(x)
+ else
+ fun_l2_n758(x)
+ end
+end
+
+def fun_l1_n163(x)
+ if (x < 1)
+ fun_l2_n861(x)
+ else
+ fun_l2_n799(x)
+ end
+end
+
+def fun_l1_n164(x)
+ if (x < 1)
+ fun_l2_n403(x)
+ else
+ fun_l2_n413(x)
+ end
+end
+
+def fun_l1_n165(x)
+ if (x < 1)
+ fun_l2_n160(x)
+ else
+ fun_l2_n794(x)
+ end
+end
+
+def fun_l1_n166(x)
+ if (x < 1)
+ fun_l2_n114(x)
+ else
+ fun_l2_n238(x)
+ end
+end
+
+def fun_l1_n167(x)
+ if (x < 1)
+ fun_l2_n806(x)
+ else
+ fun_l2_n233(x)
+ end
+end
+
+def fun_l1_n168(x)
+ if (x < 1)
+ fun_l2_n871(x)
+ else
+ fun_l2_n53(x)
+ end
+end
+
+def fun_l1_n169(x)
+ if (x < 1)
+ fun_l2_n644(x)
+ else
+ fun_l2_n503(x)
+ end
+end
+
+def fun_l1_n170(x)
+ if (x < 1)
+ fun_l2_n172(x)
+ else
+ fun_l2_n289(x)
+ end
+end
+
+def fun_l1_n171(x)
+ if (x < 1)
+ fun_l2_n920(x)
+ else
+ fun_l2_n851(x)
+ end
+end
+
+def fun_l1_n172(x)
+ if (x < 1)
+ fun_l2_n552(x)
+ else
+ fun_l2_n822(x)
+ end
+end
+
+def fun_l1_n173(x)
+ if (x < 1)
+ fun_l2_n747(x)
+ else
+ fun_l2_n265(x)
+ end
+end
+
+def fun_l1_n174(x)
+ if (x < 1)
+ fun_l2_n287(x)
+ else
+ fun_l2_n762(x)
+ end
+end
+
+def fun_l1_n175(x)
+ if (x < 1)
+ fun_l2_n627(x)
+ else
+ fun_l2_n951(x)
+ end
+end
+
+def fun_l1_n176(x)
+ if (x < 1)
+ fun_l2_n459(x)
+ else
+ fun_l2_n962(x)
+ end
+end
+
+def fun_l1_n177(x)
+ if (x < 1)
+ fun_l2_n214(x)
+ else
+ fun_l2_n145(x)
+ end
+end
+
+def fun_l1_n178(x)
+ if (x < 1)
+ fun_l2_n620(x)
+ else
+ fun_l2_n995(x)
+ end
+end
+
+def fun_l1_n179(x)
+ if (x < 1)
+ fun_l2_n136(x)
+ else
+ fun_l2_n283(x)
+ end
+end
+
+def fun_l1_n180(x)
+ if (x < 1)
+ fun_l2_n377(x)
+ else
+ fun_l2_n672(x)
+ end
+end
+
+def fun_l1_n181(x)
+ if (x < 1)
+ fun_l2_n218(x)
+ else
+ fun_l2_n434(x)
+ end
+end
+
+def fun_l1_n182(x)
+ if (x < 1)
+ fun_l2_n522(x)
+ else
+ fun_l2_n525(x)
+ end
+end
+
+def fun_l1_n183(x)
+ if (x < 1)
+ fun_l2_n648(x)
+ else
+ fun_l2_n725(x)
+ end
+end
+
+def fun_l1_n184(x)
+ if (x < 1)
+ fun_l2_n579(x)
+ else
+ fun_l2_n974(x)
+ end
+end
+
+def fun_l1_n185(x)
+ if (x < 1)
+ fun_l2_n10(x)
+ else
+ fun_l2_n514(x)
+ end
+end
+
+def fun_l1_n186(x)
+ if (x < 1)
+ fun_l2_n829(x)
+ else
+ fun_l2_n754(x)
+ end
+end
+
+def fun_l1_n187(x)
+ if (x < 1)
+ fun_l2_n380(x)
+ else
+ fun_l2_n401(x)
+ end
+end
+
+def fun_l1_n188(x)
+ if (x < 1)
+ fun_l2_n839(x)
+ else
+ fun_l2_n453(x)
+ end
+end
+
+def fun_l1_n189(x)
+ if (x < 1)
+ fun_l2_n553(x)
+ else
+ fun_l2_n553(x)
+ end
+end
+
+def fun_l1_n190(x)
+ if (x < 1)
+ fun_l2_n972(x)
+ else
+ fun_l2_n187(x)
+ end
+end
+
+def fun_l1_n191(x)
+ if (x < 1)
+ fun_l2_n275(x)
+ else
+ fun_l2_n11(x)
+ end
+end
+
+def fun_l1_n192(x)
+ if (x < 1)
+ fun_l2_n1(x)
+ else
+ fun_l2_n927(x)
+ end
+end
+
+def fun_l1_n193(x)
+ if (x < 1)
+ fun_l2_n569(x)
+ else
+ fun_l2_n557(x)
+ end
+end
+
+def fun_l1_n194(x)
+ if (x < 1)
+ fun_l2_n380(x)
+ else
+ fun_l2_n187(x)
+ end
+end
+
+def fun_l1_n195(x)
+ if (x < 1)
+ fun_l2_n297(x)
+ else
+ fun_l2_n813(x)
+ end
+end
+
+def fun_l1_n196(x)
+ if (x < 1)
+ fun_l2_n565(x)
+ else
+ fun_l2_n514(x)
+ end
+end
+
+def fun_l1_n197(x)
+ if (x < 1)
+ fun_l2_n473(x)
+ else
+ fun_l2_n64(x)
+ end
+end
+
+def fun_l1_n198(x)
+ if (x < 1)
+ fun_l2_n182(x)
+ else
+ fun_l2_n363(x)
+ end
+end
+
+def fun_l1_n199(x)
+ if (x < 1)
+ fun_l2_n660(x)
+ else
+ fun_l2_n506(x)
+ end
+end
+
+def fun_l1_n200(x)
+ if (x < 1)
+ fun_l2_n834(x)
+ else
+ fun_l2_n348(x)
+ end
+end
+
+def fun_l1_n201(x)
+ if (x < 1)
+ fun_l2_n403(x)
+ else
+ fun_l2_n432(x)
+ end
+end
+
+def fun_l1_n202(x)
+ if (x < 1)
+ fun_l2_n115(x)
+ else
+ fun_l2_n145(x)
+ end
+end
+
+def fun_l1_n203(x)
+ if (x < 1)
+ fun_l2_n637(x)
+ else
+ fun_l2_n4(x)
+ end
+end
+
+def fun_l1_n204(x)
+ if (x < 1)
+ fun_l2_n951(x)
+ else
+ fun_l2_n753(x)
+ end
+end
+
+def fun_l1_n205(x)
+ if (x < 1)
+ fun_l2_n703(x)
+ else
+ fun_l2_n563(x)
+ end
+end
+
+def fun_l1_n206(x)
+ if (x < 1)
+ fun_l2_n614(x)
+ else
+ fun_l2_n563(x)
+ end
+end
+
+def fun_l1_n207(x)
+ if (x < 1)
+ fun_l2_n210(x)
+ else
+ fun_l2_n139(x)
+ end
+end
+
+def fun_l1_n208(x)
+ if (x < 1)
+ fun_l2_n471(x)
+ else
+ fun_l2_n346(x)
+ end
+end
+
+def fun_l1_n209(x)
+ if (x < 1)
+ fun_l2_n922(x)
+ else
+ fun_l2_n54(x)
+ end
+end
+
+def fun_l1_n210(x)
+ if (x < 1)
+ fun_l2_n494(x)
+ else
+ fun_l2_n41(x)
+ end
+end
+
+def fun_l1_n211(x)
+ if (x < 1)
+ fun_l2_n87(x)
+ else
+ fun_l2_n190(x)
+ end
+end
+
+def fun_l1_n212(x)
+ if (x < 1)
+ fun_l2_n458(x)
+ else
+ fun_l2_n885(x)
+ end
+end
+
+def fun_l1_n213(x)
+ if (x < 1)
+ fun_l2_n48(x)
+ else
+ fun_l2_n225(x)
+ end
+end
+
+def fun_l1_n214(x)
+ if (x < 1)
+ fun_l2_n706(x)
+ else
+ fun_l2_n694(x)
+ end
+end
+
+def fun_l1_n215(x)
+ if (x < 1)
+ fun_l2_n116(x)
+ else
+ fun_l2_n233(x)
+ end
+end
+
+def fun_l1_n216(x)
+ if (x < 1)
+ fun_l2_n279(x)
+ else
+ fun_l2_n857(x)
+ end
+end
+
+def fun_l1_n217(x)
+ if (x < 1)
+ fun_l2_n643(x)
+ else
+ fun_l2_n289(x)
+ end
+end
+
+def fun_l1_n218(x)
+ if (x < 1)
+ fun_l2_n535(x)
+ else
+ fun_l2_n833(x)
+ end
+end
+
+def fun_l1_n219(x)
+ if (x < 1)
+ fun_l2_n478(x)
+ else
+ fun_l2_n793(x)
+ end
+end
+
+def fun_l1_n220(x)
+ if (x < 1)
+ fun_l2_n57(x)
+ else
+ fun_l2_n64(x)
+ end
+end
+
+def fun_l1_n221(x)
+ if (x < 1)
+ fun_l2_n36(x)
+ else
+ fun_l2_n74(x)
+ end
+end
+
+def fun_l1_n222(x)
+ if (x < 1)
+ fun_l2_n438(x)
+ else
+ fun_l2_n616(x)
+ end
+end
+
+def fun_l1_n223(x)
+ if (x < 1)
+ fun_l2_n900(x)
+ else
+ fun_l2_n744(x)
+ end
+end
+
+def fun_l1_n224(x)
+ if (x < 1)
+ fun_l2_n780(x)
+ else
+ fun_l2_n213(x)
+ end
+end
+
+def fun_l1_n225(x)
+ if (x < 1)
+ fun_l2_n916(x)
+ else
+ fun_l2_n471(x)
+ end
+end
+
+def fun_l1_n226(x)
+ if (x < 1)
+ fun_l2_n236(x)
+ else
+ fun_l2_n980(x)
+ end
+end
+
+def fun_l1_n227(x)
+ if (x < 1)
+ fun_l2_n28(x)
+ else
+ fun_l2_n291(x)
+ end
+end
+
+def fun_l1_n228(x)
+ if (x < 1)
+ fun_l2_n35(x)
+ else
+ fun_l2_n353(x)
+ end
+end
+
+def fun_l1_n229(x)
+ if (x < 1)
+ fun_l2_n404(x)
+ else
+ fun_l2_n254(x)
+ end
+end
+
+def fun_l1_n230(x)
+ if (x < 1)
+ fun_l2_n641(x)
+ else
+ fun_l2_n464(x)
+ end
+end
+
+def fun_l1_n231(x)
+ if (x < 1)
+ fun_l2_n592(x)
+ else
+ fun_l2_n646(x)
+ end
+end
+
+def fun_l1_n232(x)
+ if (x < 1)
+ fun_l2_n162(x)
+ else
+ fun_l2_n215(x)
+ end
+end
+
+def fun_l1_n233(x)
+ if (x < 1)
+ fun_l2_n219(x)
+ else
+ fun_l2_n772(x)
+ end
+end
+
+def fun_l1_n234(x)
+ if (x < 1)
+ fun_l2_n304(x)
+ else
+ fun_l2_n963(x)
+ end
+end
+
+def fun_l1_n235(x)
+ if (x < 1)
+ fun_l2_n610(x)
+ else
+ fun_l2_n716(x)
+ end
+end
+
+def fun_l1_n236(x)
+ if (x < 1)
+ fun_l2_n151(x)
+ else
+ fun_l2_n498(x)
+ end
+end
+
+def fun_l1_n237(x)
+ if (x < 1)
+ fun_l2_n288(x)
+ else
+ fun_l2_n261(x)
+ end
+end
+
+def fun_l1_n238(x)
+ if (x < 1)
+ fun_l2_n139(x)
+ else
+ fun_l2_n18(x)
+ end
+end
+
+def fun_l1_n239(x)
+ if (x < 1)
+ fun_l2_n559(x)
+ else
+ fun_l2_n148(x)
+ end
+end
+
+def fun_l1_n240(x)
+ if (x < 1)
+ fun_l2_n520(x)
+ else
+ fun_l2_n250(x)
+ end
+end
+
+def fun_l1_n241(x)
+ if (x < 1)
+ fun_l2_n42(x)
+ else
+ fun_l2_n196(x)
+ end
+end
+
+def fun_l1_n242(x)
+ if (x < 1)
+ fun_l2_n16(x)
+ else
+ fun_l2_n540(x)
+ end
+end
+
+def fun_l1_n243(x)
+ if (x < 1)
+ fun_l2_n539(x)
+ else
+ fun_l2_n890(x)
+ end
+end
+
+def fun_l1_n244(x)
+ if (x < 1)
+ fun_l2_n559(x)
+ else
+ fun_l2_n423(x)
+ end
+end
+
+def fun_l1_n245(x)
+ if (x < 1)
+ fun_l2_n110(x)
+ else
+ fun_l2_n711(x)
+ end
+end
+
+def fun_l1_n246(x)
+ if (x < 1)
+ fun_l2_n151(x)
+ else
+ fun_l2_n407(x)
+ end
+end
+
+def fun_l1_n247(x)
+ if (x < 1)
+ fun_l2_n118(x)
+ else
+ fun_l2_n209(x)
+ end
+end
+
+def fun_l1_n248(x)
+ if (x < 1)
+ fun_l2_n764(x)
+ else
+ fun_l2_n932(x)
+ end
+end
+
+def fun_l1_n249(x)
+ if (x < 1)
+ fun_l2_n991(x)
+ else
+ fun_l2_n828(x)
+ end
+end
+
+def fun_l1_n250(x)
+ if (x < 1)
+ fun_l2_n354(x)
+ else
+ fun_l2_n53(x)
+ end
+end
+
+def fun_l1_n251(x)
+ if (x < 1)
+ fun_l2_n63(x)
+ else
+ fun_l2_n292(x)
+ end
+end
+
+def fun_l1_n252(x)
+ if (x < 1)
+ fun_l2_n874(x)
+ else
+ fun_l2_n544(x)
+ end
+end
+
+def fun_l1_n253(x)
+ if (x < 1)
+ fun_l2_n336(x)
+ else
+ fun_l2_n57(x)
+ end
+end
+
+def fun_l1_n254(x)
+ if (x < 1)
+ fun_l2_n302(x)
+ else
+ fun_l2_n90(x)
+ end
+end
+
+def fun_l1_n255(x)
+ if (x < 1)
+ fun_l2_n122(x)
+ else
+ fun_l2_n888(x)
+ end
+end
+
+def fun_l1_n256(x)
+ if (x < 1)
+ fun_l2_n326(x)
+ else
+ fun_l2_n616(x)
+ end
+end
+
+def fun_l1_n257(x)
+ if (x < 1)
+ fun_l2_n77(x)
+ else
+ fun_l2_n622(x)
+ end
+end
+
+def fun_l1_n258(x)
+ if (x < 1)
+ fun_l2_n785(x)
+ else
+ fun_l2_n229(x)
+ end
+end
+
+def fun_l1_n259(x)
+ if (x < 1)
+ fun_l2_n504(x)
+ else
+ fun_l2_n766(x)
+ end
+end
+
+def fun_l1_n260(x)
+ if (x < 1)
+ fun_l2_n857(x)
+ else
+ fun_l2_n823(x)
+ end
+end
+
+def fun_l1_n261(x)
+ if (x < 1)
+ fun_l2_n72(x)
+ else
+ fun_l2_n875(x)
+ end
+end
+
+def fun_l1_n262(x)
+ if (x < 1)
+ fun_l2_n215(x)
+ else
+ fun_l2_n549(x)
+ end
+end
+
+def fun_l1_n263(x)
+ if (x < 1)
+ fun_l2_n232(x)
+ else
+ fun_l2_n96(x)
+ end
+end
+
+def fun_l1_n264(x)
+ if (x < 1)
+ fun_l2_n183(x)
+ else
+ fun_l2_n351(x)
+ end
+end
+
+def fun_l1_n265(x)
+ if (x < 1)
+ fun_l2_n906(x)
+ else
+ fun_l2_n154(x)
+ end
+end
+
+def fun_l1_n266(x)
+ if (x < 1)
+ fun_l2_n234(x)
+ else
+ fun_l2_n547(x)
+ end
+end
+
+def fun_l1_n267(x)
+ if (x < 1)
+ fun_l2_n882(x)
+ else
+ fun_l2_n802(x)
+ end
+end
+
+def fun_l1_n268(x)
+ if (x < 1)
+ fun_l2_n844(x)
+ else
+ fun_l2_n430(x)
+ end
+end
+
+def fun_l1_n269(x)
+ if (x < 1)
+ fun_l2_n781(x)
+ else
+ fun_l2_n738(x)
+ end
+end
+
+def fun_l1_n270(x)
+ if (x < 1)
+ fun_l2_n88(x)
+ else
+ fun_l2_n439(x)
+ end
+end
+
+def fun_l1_n271(x)
+ if (x < 1)
+ fun_l2_n334(x)
+ else
+ fun_l2_n508(x)
+ end
+end
+
+def fun_l1_n272(x)
+ if (x < 1)
+ fun_l2_n871(x)
+ else
+ fun_l2_n562(x)
+ end
+end
+
+def fun_l1_n273(x)
+ if (x < 1)
+ fun_l2_n328(x)
+ else
+ fun_l2_n356(x)
+ end
+end
+
+def fun_l1_n274(x)
+ if (x < 1)
+ fun_l2_n654(x)
+ else
+ fun_l2_n511(x)
+ end
+end
+
+def fun_l1_n275(x)
+ if (x < 1)
+ fun_l2_n309(x)
+ else
+ fun_l2_n840(x)
+ end
+end
+
+def fun_l1_n276(x)
+ if (x < 1)
+ fun_l2_n729(x)
+ else
+ fun_l2_n72(x)
+ end
+end
+
+def fun_l1_n277(x)
+ if (x < 1)
+ fun_l2_n993(x)
+ else
+ fun_l2_n858(x)
+ end
+end
+
+def fun_l1_n278(x)
+ if (x < 1)
+ fun_l2_n664(x)
+ else
+ fun_l2_n50(x)
+ end
+end
+
+def fun_l1_n279(x)
+ if (x < 1)
+ fun_l2_n225(x)
+ else
+ fun_l2_n403(x)
+ end
+end
+
+def fun_l1_n280(x)
+ if (x < 1)
+ fun_l2_n780(x)
+ else
+ fun_l2_n396(x)
+ end
+end
+
+def fun_l1_n281(x)
+ if (x < 1)
+ fun_l2_n114(x)
+ else
+ fun_l2_n114(x)
+ end
+end
+
+def fun_l1_n282(x)
+ if (x < 1)
+ fun_l2_n568(x)
+ else
+ fun_l2_n610(x)
+ end
+end
+
+def fun_l1_n283(x)
+ if (x < 1)
+ fun_l2_n539(x)
+ else
+ fun_l2_n990(x)
+ end
+end
+
+def fun_l1_n284(x)
+ if (x < 1)
+ fun_l2_n773(x)
+ else
+ fun_l2_n622(x)
+ end
+end
+
+def fun_l1_n285(x)
+ if (x < 1)
+ fun_l2_n695(x)
+ else
+ fun_l2_n101(x)
+ end
+end
+
+def fun_l1_n286(x)
+ if (x < 1)
+ fun_l2_n239(x)
+ else
+ fun_l2_n242(x)
+ end
+end
+
+def fun_l1_n287(x)
+ if (x < 1)
+ fun_l2_n191(x)
+ else
+ fun_l2_n839(x)
+ end
+end
+
+def fun_l1_n288(x)
+ if (x < 1)
+ fun_l2_n246(x)
+ else
+ fun_l2_n179(x)
+ end
+end
+
+def fun_l1_n289(x)
+ if (x < 1)
+ fun_l2_n300(x)
+ else
+ fun_l2_n975(x)
+ end
+end
+
+def fun_l1_n290(x)
+ if (x < 1)
+ fun_l2_n436(x)
+ else
+ fun_l2_n14(x)
+ end
+end
+
+def fun_l1_n291(x)
+ if (x < 1)
+ fun_l2_n33(x)
+ else
+ fun_l2_n303(x)
+ end
+end
+
+def fun_l1_n292(x)
+ if (x < 1)
+ fun_l2_n462(x)
+ else
+ fun_l2_n399(x)
+ end
+end
+
+def fun_l1_n293(x)
+ if (x < 1)
+ fun_l2_n782(x)
+ else
+ fun_l2_n521(x)
+ end
+end
+
+def fun_l1_n294(x)
+ if (x < 1)
+ fun_l2_n995(x)
+ else
+ fun_l2_n944(x)
+ end
+end
+
+def fun_l1_n295(x)
+ if (x < 1)
+ fun_l2_n700(x)
+ else
+ fun_l2_n250(x)
+ end
+end
+
+def fun_l1_n296(x)
+ if (x < 1)
+ fun_l2_n866(x)
+ else
+ fun_l2_n566(x)
+ end
+end
+
+def fun_l1_n297(x)
+ if (x < 1)
+ fun_l2_n373(x)
+ else
+ fun_l2_n881(x)
+ end
+end
+
+def fun_l1_n298(x)
+ if (x < 1)
+ fun_l2_n382(x)
+ else
+ fun_l2_n729(x)
+ end
+end
+
+def fun_l1_n299(x)
+ if (x < 1)
+ fun_l2_n878(x)
+ else
+ fun_l2_n192(x)
+ end
+end
+
+def fun_l1_n300(x)
+ if (x < 1)
+ fun_l2_n65(x)
+ else
+ fun_l2_n434(x)
+ end
+end
+
+def fun_l1_n301(x)
+ if (x < 1)
+ fun_l2_n513(x)
+ else
+ fun_l2_n617(x)
+ end
+end
+
+def fun_l1_n302(x)
+ if (x < 1)
+ fun_l2_n972(x)
+ else
+ fun_l2_n482(x)
+ end
+end
+
+def fun_l1_n303(x)
+ if (x < 1)
+ fun_l2_n533(x)
+ else
+ fun_l2_n774(x)
+ end
+end
+
+def fun_l1_n304(x)
+ if (x < 1)
+ fun_l2_n439(x)
+ else
+ fun_l2_n351(x)
+ end
+end
+
+def fun_l1_n305(x)
+ if (x < 1)
+ fun_l2_n181(x)
+ else
+ fun_l2_n74(x)
+ end
+end
+
+def fun_l1_n306(x)
+ if (x < 1)
+ fun_l2_n117(x)
+ else
+ fun_l2_n962(x)
+ end
+end
+
+def fun_l1_n307(x)
+ if (x < 1)
+ fun_l2_n499(x)
+ else
+ fun_l2_n183(x)
+ end
+end
+
+def fun_l1_n308(x)
+ if (x < 1)
+ fun_l2_n358(x)
+ else
+ fun_l2_n226(x)
+ end
+end
+
+def fun_l1_n309(x)
+ if (x < 1)
+ fun_l2_n227(x)
+ else
+ fun_l2_n425(x)
+ end
+end
+
+def fun_l1_n310(x)
+ if (x < 1)
+ fun_l2_n724(x)
+ else
+ fun_l2_n278(x)
+ end
+end
+
+def fun_l1_n311(x)
+ if (x < 1)
+ fun_l2_n784(x)
+ else
+ fun_l2_n888(x)
+ end
+end
+
+def fun_l1_n312(x)
+ if (x < 1)
+ fun_l2_n952(x)
+ else
+ fun_l2_n849(x)
+ end
+end
+
+def fun_l1_n313(x)
+ if (x < 1)
+ fun_l2_n921(x)
+ else
+ fun_l2_n31(x)
+ end
+end
+
+def fun_l1_n314(x)
+ if (x < 1)
+ fun_l2_n469(x)
+ else
+ fun_l2_n856(x)
+ end
+end
+
+def fun_l1_n315(x)
+ if (x < 1)
+ fun_l2_n89(x)
+ else
+ fun_l2_n949(x)
+ end
+end
+
+def fun_l1_n316(x)
+ if (x < 1)
+ fun_l2_n216(x)
+ else
+ fun_l2_n410(x)
+ end
+end
+
+def fun_l1_n317(x)
+ if (x < 1)
+ fun_l2_n591(x)
+ else
+ fun_l2_n203(x)
+ end
+end
+
+def fun_l1_n318(x)
+ if (x < 1)
+ fun_l2_n19(x)
+ else
+ fun_l2_n461(x)
+ end
+end
+
+def fun_l1_n319(x)
+ if (x < 1)
+ fun_l2_n875(x)
+ else
+ fun_l2_n996(x)
+ end
+end
+
+def fun_l1_n320(x)
+ if (x < 1)
+ fun_l2_n696(x)
+ else
+ fun_l2_n987(x)
+ end
+end
+
+def fun_l1_n321(x)
+ if (x < 1)
+ fun_l2_n708(x)
+ else
+ fun_l2_n150(x)
+ end
+end
+
+def fun_l1_n322(x)
+ if (x < 1)
+ fun_l2_n324(x)
+ else
+ fun_l2_n814(x)
+ end
+end
+
+def fun_l1_n323(x)
+ if (x < 1)
+ fun_l2_n427(x)
+ else
+ fun_l2_n472(x)
+ end
+end
+
+def fun_l1_n324(x)
+ if (x < 1)
+ fun_l2_n847(x)
+ else
+ fun_l2_n482(x)
+ end
+end
+
+def fun_l1_n325(x)
+ if (x < 1)
+ fun_l2_n335(x)
+ else
+ fun_l2_n854(x)
+ end
+end
+
+def fun_l1_n326(x)
+ if (x < 1)
+ fun_l2_n635(x)
+ else
+ fun_l2_n276(x)
+ end
+end
+
+def fun_l1_n327(x)
+ if (x < 1)
+ fun_l2_n539(x)
+ else
+ fun_l2_n885(x)
+ end
+end
+
+def fun_l1_n328(x)
+ if (x < 1)
+ fun_l2_n979(x)
+ else
+ fun_l2_n558(x)
+ end
+end
+
+def fun_l1_n329(x)
+ if (x < 1)
+ fun_l2_n35(x)
+ else
+ fun_l2_n696(x)
+ end
+end
+
+def fun_l1_n330(x)
+ if (x < 1)
+ fun_l2_n483(x)
+ else
+ fun_l2_n218(x)
+ end
+end
+
+def fun_l1_n331(x)
+ if (x < 1)
+ fun_l2_n3(x)
+ else
+ fun_l2_n324(x)
+ end
+end
+
+def fun_l1_n332(x)
+ if (x < 1)
+ fun_l2_n396(x)
+ else
+ fun_l2_n718(x)
+ end
+end
+
+def fun_l1_n333(x)
+ if (x < 1)
+ fun_l2_n973(x)
+ else
+ fun_l2_n663(x)
+ end
+end
+
+def fun_l1_n334(x)
+ if (x < 1)
+ fun_l2_n441(x)
+ else
+ fun_l2_n468(x)
+ end
+end
+
+def fun_l1_n335(x)
+ if (x < 1)
+ fun_l2_n511(x)
+ else
+ fun_l2_n455(x)
+ end
+end
+
+def fun_l1_n336(x)
+ if (x < 1)
+ fun_l2_n732(x)
+ else
+ fun_l2_n14(x)
+ end
+end
+
+def fun_l1_n337(x)
+ if (x < 1)
+ fun_l2_n484(x)
+ else
+ fun_l2_n482(x)
+ end
+end
+
+def fun_l1_n338(x)
+ if (x < 1)
+ fun_l2_n604(x)
+ else
+ fun_l2_n683(x)
+ end
+end
+
+def fun_l1_n339(x)
+ if (x < 1)
+ fun_l2_n334(x)
+ else
+ fun_l2_n710(x)
+ end
+end
+
+def fun_l1_n340(x)
+ if (x < 1)
+ fun_l2_n233(x)
+ else
+ fun_l2_n394(x)
+ end
+end
+
+def fun_l1_n341(x)
+ if (x < 1)
+ fun_l2_n948(x)
+ else
+ fun_l2_n473(x)
+ end
+end
+
+def fun_l1_n342(x)
+ if (x < 1)
+ fun_l2_n858(x)
+ else
+ fun_l2_n466(x)
+ end
+end
+
+def fun_l1_n343(x)
+ if (x < 1)
+ fun_l2_n647(x)
+ else
+ fun_l2_n604(x)
+ end
+end
+
+def fun_l1_n344(x)
+ if (x < 1)
+ fun_l2_n872(x)
+ else
+ fun_l2_n965(x)
+ end
+end
+
+def fun_l1_n345(x)
+ if (x < 1)
+ fun_l2_n845(x)
+ else
+ fun_l2_n701(x)
+ end
+end
+
+def fun_l1_n346(x)
+ if (x < 1)
+ fun_l2_n75(x)
+ else
+ fun_l2_n332(x)
+ end
+end
+
+def fun_l1_n347(x)
+ if (x < 1)
+ fun_l2_n873(x)
+ else
+ fun_l2_n575(x)
+ end
+end
+
+def fun_l1_n348(x)
+ if (x < 1)
+ fun_l2_n303(x)
+ else
+ fun_l2_n445(x)
+ end
+end
+
+def fun_l1_n349(x)
+ if (x < 1)
+ fun_l2_n45(x)
+ else
+ fun_l2_n312(x)
+ end
+end
+
+def fun_l1_n350(x)
+ if (x < 1)
+ fun_l2_n751(x)
+ else
+ fun_l2_n316(x)
+ end
+end
+
+def fun_l1_n351(x)
+ if (x < 1)
+ fun_l2_n781(x)
+ else
+ fun_l2_n165(x)
+ end
+end
+
+def fun_l1_n352(x)
+ if (x < 1)
+ fun_l2_n120(x)
+ else
+ fun_l2_n595(x)
+ end
+end
+
+def fun_l1_n353(x)
+ if (x < 1)
+ fun_l2_n221(x)
+ else
+ fun_l2_n827(x)
+ end
+end
+
+def fun_l1_n354(x)
+ if (x < 1)
+ fun_l2_n290(x)
+ else
+ fun_l2_n27(x)
+ end
+end
+
+def fun_l1_n355(x)
+ if (x < 1)
+ fun_l2_n377(x)
+ else
+ fun_l2_n28(x)
+ end
+end
+
+def fun_l1_n356(x)
+ if (x < 1)
+ fun_l2_n474(x)
+ else
+ fun_l2_n811(x)
+ end
+end
+
+def fun_l1_n357(x)
+ if (x < 1)
+ fun_l2_n90(x)
+ else
+ fun_l2_n559(x)
+ end
+end
+
+def fun_l1_n358(x)
+ if (x < 1)
+ fun_l2_n66(x)
+ else
+ fun_l2_n234(x)
+ end
+end
+
+def fun_l1_n359(x)
+ if (x < 1)
+ fun_l2_n526(x)
+ else
+ fun_l2_n674(x)
+ end
+end
+
+def fun_l1_n360(x)
+ if (x < 1)
+ fun_l2_n449(x)
+ else
+ fun_l2_n364(x)
+ end
+end
+
+def fun_l1_n361(x)
+ if (x < 1)
+ fun_l2_n790(x)
+ else
+ fun_l2_n835(x)
+ end
+end
+
+def fun_l1_n362(x)
+ if (x < 1)
+ fun_l2_n335(x)
+ else
+ fun_l2_n22(x)
+ end
+end
+
+def fun_l1_n363(x)
+ if (x < 1)
+ fun_l2_n982(x)
+ else
+ fun_l2_n449(x)
+ end
+end
+
+def fun_l1_n364(x)
+ if (x < 1)
+ fun_l2_n980(x)
+ else
+ fun_l2_n861(x)
+ end
+end
+
+def fun_l1_n365(x)
+ if (x < 1)
+ fun_l2_n673(x)
+ else
+ fun_l2_n267(x)
+ end
+end
+
+def fun_l1_n366(x)
+ if (x < 1)
+ fun_l2_n862(x)
+ else
+ fun_l2_n559(x)
+ end
+end
+
+def fun_l1_n367(x)
+ if (x < 1)
+ fun_l2_n637(x)
+ else
+ fun_l2_n275(x)
+ end
+end
+
+def fun_l1_n368(x)
+ if (x < 1)
+ fun_l2_n370(x)
+ else
+ fun_l2_n763(x)
+ end
+end
+
+def fun_l1_n369(x)
+ if (x < 1)
+ fun_l2_n680(x)
+ else
+ fun_l2_n476(x)
+ end
+end
+
+def fun_l1_n370(x)
+ if (x < 1)
+ fun_l2_n799(x)
+ else
+ fun_l2_n724(x)
+ end
+end
+
+def fun_l1_n371(x)
+ if (x < 1)
+ fun_l2_n331(x)
+ else
+ fun_l2_n927(x)
+ end
+end
+
+def fun_l1_n372(x)
+ if (x < 1)
+ fun_l2_n875(x)
+ else
+ fun_l2_n350(x)
+ end
+end
+
+def fun_l1_n373(x)
+ if (x < 1)
+ fun_l2_n734(x)
+ else
+ fun_l2_n172(x)
+ end
+end
+
+def fun_l1_n374(x)
+ if (x < 1)
+ fun_l2_n657(x)
+ else
+ fun_l2_n765(x)
+ end
+end
+
+def fun_l1_n375(x)
+ if (x < 1)
+ fun_l2_n950(x)
+ else
+ fun_l2_n85(x)
+ end
+end
+
+def fun_l1_n376(x)
+ if (x < 1)
+ fun_l2_n276(x)
+ else
+ fun_l2_n892(x)
+ end
+end
+
+def fun_l1_n377(x)
+ if (x < 1)
+ fun_l2_n430(x)
+ else
+ fun_l2_n173(x)
+ end
+end
+
+def fun_l1_n378(x)
+ if (x < 1)
+ fun_l2_n376(x)
+ else
+ fun_l2_n876(x)
+ end
+end
+
+def fun_l1_n379(x)
+ if (x < 1)
+ fun_l2_n981(x)
+ else
+ fun_l2_n314(x)
+ end
+end
+
+def fun_l1_n380(x)
+ if (x < 1)
+ fun_l2_n680(x)
+ else
+ fun_l2_n600(x)
+ end
+end
+
+def fun_l1_n381(x)
+ if (x < 1)
+ fun_l2_n54(x)
+ else
+ fun_l2_n158(x)
+ end
+end
+
+def fun_l1_n382(x)
+ if (x < 1)
+ fun_l2_n692(x)
+ else
+ fun_l2_n673(x)
+ end
+end
+
+def fun_l1_n383(x)
+ if (x < 1)
+ fun_l2_n393(x)
+ else
+ fun_l2_n723(x)
+ end
+end
+
+def fun_l1_n384(x)
+ if (x < 1)
+ fun_l2_n899(x)
+ else
+ fun_l2_n940(x)
+ end
+end
+
+def fun_l1_n385(x)
+ if (x < 1)
+ fun_l2_n473(x)
+ else
+ fun_l2_n846(x)
+ end
+end
+
+def fun_l1_n386(x)
+ if (x < 1)
+ fun_l2_n291(x)
+ else
+ fun_l2_n864(x)
+ end
+end
+
+def fun_l1_n387(x)
+ if (x < 1)
+ fun_l2_n174(x)
+ else
+ fun_l2_n466(x)
+ end
+end
+
+def fun_l1_n388(x)
+ if (x < 1)
+ fun_l2_n883(x)
+ else
+ fun_l2_n613(x)
+ end
+end
+
+def fun_l1_n389(x)
+ if (x < 1)
+ fun_l2_n808(x)
+ else
+ fun_l2_n169(x)
+ end
+end
+
+def fun_l1_n390(x)
+ if (x < 1)
+ fun_l2_n94(x)
+ else
+ fun_l2_n93(x)
+ end
+end
+
+def fun_l1_n391(x)
+ if (x < 1)
+ fun_l2_n874(x)
+ else
+ fun_l2_n400(x)
+ end
+end
+
+def fun_l1_n392(x)
+ if (x < 1)
+ fun_l2_n473(x)
+ else
+ fun_l2_n239(x)
+ end
+end
+
+def fun_l1_n393(x)
+ if (x < 1)
+ fun_l2_n64(x)
+ else
+ fun_l2_n760(x)
+ end
+end
+
+def fun_l1_n394(x)
+ if (x < 1)
+ fun_l2_n947(x)
+ else
+ fun_l2_n354(x)
+ end
+end
+
+def fun_l1_n395(x)
+ if (x < 1)
+ fun_l2_n833(x)
+ else
+ fun_l2_n563(x)
+ end
+end
+
+def fun_l1_n396(x)
+ if (x < 1)
+ fun_l2_n429(x)
+ else
+ fun_l2_n280(x)
+ end
+end
+
+def fun_l1_n397(x)
+ if (x < 1)
+ fun_l2_n132(x)
+ else
+ fun_l2_n486(x)
+ end
+end
+
+def fun_l1_n398(x)
+ if (x < 1)
+ fun_l2_n28(x)
+ else
+ fun_l2_n135(x)
+ end
+end
+
+def fun_l1_n399(x)
+ if (x < 1)
+ fun_l2_n804(x)
+ else
+ fun_l2_n406(x)
+ end
+end
+
+def fun_l1_n400(x)
+ if (x < 1)
+ fun_l2_n661(x)
+ else
+ fun_l2_n216(x)
+ end
+end
+
+def fun_l1_n401(x)
+ if (x < 1)
+ fun_l2_n681(x)
+ else
+ fun_l2_n849(x)
+ end
+end
+
+def fun_l1_n402(x)
+ if (x < 1)
+ fun_l2_n13(x)
+ else
+ fun_l2_n205(x)
+ end
+end
+
+def fun_l1_n403(x)
+ if (x < 1)
+ fun_l2_n911(x)
+ else
+ fun_l2_n63(x)
+ end
+end
+
+def fun_l1_n404(x)
+ if (x < 1)
+ fun_l2_n518(x)
+ else
+ fun_l2_n845(x)
+ end
+end
+
+def fun_l1_n405(x)
+ if (x < 1)
+ fun_l2_n699(x)
+ else
+ fun_l2_n963(x)
+ end
+end
+
+def fun_l1_n406(x)
+ if (x < 1)
+ fun_l2_n373(x)
+ else
+ fun_l2_n485(x)
+ end
+end
+
+def fun_l1_n407(x)
+ if (x < 1)
+ fun_l2_n402(x)
+ else
+ fun_l2_n582(x)
+ end
+end
+
+def fun_l1_n408(x)
+ if (x < 1)
+ fun_l2_n802(x)
+ else
+ fun_l2_n420(x)
+ end
+end
+
+def fun_l1_n409(x)
+ if (x < 1)
+ fun_l2_n728(x)
+ else
+ fun_l2_n50(x)
+ end
+end
+
+def fun_l1_n410(x)
+ if (x < 1)
+ fun_l2_n189(x)
+ else
+ fun_l2_n588(x)
+ end
+end
+
+def fun_l1_n411(x)
+ if (x < 1)
+ fun_l2_n51(x)
+ else
+ fun_l2_n23(x)
+ end
+end
+
+def fun_l1_n412(x)
+ if (x < 1)
+ fun_l2_n548(x)
+ else
+ fun_l2_n200(x)
+ end
+end
+
+def fun_l1_n413(x)
+ if (x < 1)
+ fun_l2_n763(x)
+ else
+ fun_l2_n581(x)
+ end
+end
+
+def fun_l1_n414(x)
+ if (x < 1)
+ fun_l2_n650(x)
+ else
+ fun_l2_n535(x)
+ end
+end
+
+def fun_l1_n415(x)
+ if (x < 1)
+ fun_l2_n500(x)
+ else
+ fun_l2_n579(x)
+ end
+end
+
+def fun_l1_n416(x)
+ if (x < 1)
+ fun_l2_n573(x)
+ else
+ fun_l2_n154(x)
+ end
+end
+
+def fun_l1_n417(x)
+ if (x < 1)
+ fun_l2_n685(x)
+ else
+ fun_l2_n14(x)
+ end
+end
+
+def fun_l1_n418(x)
+ if (x < 1)
+ fun_l2_n849(x)
+ else
+ fun_l2_n91(x)
+ end
+end
+
+def fun_l1_n419(x)
+ if (x < 1)
+ fun_l2_n629(x)
+ else
+ fun_l2_n698(x)
+ end
+end
+
+def fun_l1_n420(x)
+ if (x < 1)
+ fun_l2_n273(x)
+ else
+ fun_l2_n303(x)
+ end
+end
+
+def fun_l1_n421(x)
+ if (x < 1)
+ fun_l2_n8(x)
+ else
+ fun_l2_n476(x)
+ end
+end
+
+def fun_l1_n422(x)
+ if (x < 1)
+ fun_l2_n294(x)
+ else
+ fun_l2_n338(x)
+ end
+end
+
+def fun_l1_n423(x)
+ if (x < 1)
+ fun_l2_n408(x)
+ else
+ fun_l2_n187(x)
+ end
+end
+
+def fun_l1_n424(x)
+ if (x < 1)
+ fun_l2_n349(x)
+ else
+ fun_l2_n896(x)
+ end
+end
+
+def fun_l1_n425(x)
+ if (x < 1)
+ fun_l2_n950(x)
+ else
+ fun_l2_n186(x)
+ end
+end
+
+def fun_l1_n426(x)
+ if (x < 1)
+ fun_l2_n817(x)
+ else
+ fun_l2_n605(x)
+ end
+end
+
+def fun_l1_n427(x)
+ if (x < 1)
+ fun_l2_n317(x)
+ else
+ fun_l2_n31(x)
+ end
+end
+
+def fun_l1_n428(x)
+ if (x < 1)
+ fun_l2_n804(x)
+ else
+ fun_l2_n547(x)
+ end
+end
+
+def fun_l1_n429(x)
+ if (x < 1)
+ fun_l2_n730(x)
+ else
+ fun_l2_n711(x)
+ end
+end
+
+def fun_l1_n430(x)
+ if (x < 1)
+ fun_l2_n822(x)
+ else
+ fun_l2_n749(x)
+ end
+end
+
+def fun_l1_n431(x)
+ if (x < 1)
+ fun_l2_n412(x)
+ else
+ fun_l2_n366(x)
+ end
+end
+
+def fun_l1_n432(x)
+ if (x < 1)
+ fun_l2_n462(x)
+ else
+ fun_l2_n601(x)
+ end
+end
+
+def fun_l1_n433(x)
+ if (x < 1)
+ fun_l2_n971(x)
+ else
+ fun_l2_n878(x)
+ end
+end
+
+def fun_l1_n434(x)
+ if (x < 1)
+ fun_l2_n551(x)
+ else
+ fun_l2_n172(x)
+ end
+end
+
+def fun_l1_n435(x)
+ if (x < 1)
+ fun_l2_n914(x)
+ else
+ fun_l2_n640(x)
+ end
+end
+
+def fun_l1_n436(x)
+ if (x < 1)
+ fun_l2_n957(x)
+ else
+ fun_l2_n846(x)
+ end
+end
+
+def fun_l1_n437(x)
+ if (x < 1)
+ fun_l2_n622(x)
+ else
+ fun_l2_n995(x)
+ end
+end
+
+def fun_l1_n438(x)
+ if (x < 1)
+ fun_l2_n830(x)
+ else
+ fun_l2_n537(x)
+ end
+end
+
+def fun_l1_n439(x)
+ if (x < 1)
+ fun_l2_n415(x)
+ else
+ fun_l2_n863(x)
+ end
+end
+
+def fun_l1_n440(x)
+ if (x < 1)
+ fun_l2_n637(x)
+ else
+ fun_l2_n354(x)
+ end
+end
+
+def fun_l1_n441(x)
+ if (x < 1)
+ fun_l2_n525(x)
+ else
+ fun_l2_n656(x)
+ end
+end
+
+def fun_l1_n442(x)
+ if (x < 1)
+ fun_l2_n284(x)
+ else
+ fun_l2_n722(x)
+ end
+end
+
+def fun_l1_n443(x)
+ if (x < 1)
+ fun_l2_n485(x)
+ else
+ fun_l2_n794(x)
+ end
+end
+
+def fun_l1_n444(x)
+ if (x < 1)
+ fun_l2_n268(x)
+ else
+ fun_l2_n443(x)
+ end
+end
+
+def fun_l1_n445(x)
+ if (x < 1)
+ fun_l2_n743(x)
+ else
+ fun_l2_n723(x)
+ end
+end
+
+def fun_l1_n446(x)
+ if (x < 1)
+ fun_l2_n651(x)
+ else
+ fun_l2_n544(x)
+ end
+end
+
+def fun_l1_n447(x)
+ if (x < 1)
+ fun_l2_n936(x)
+ else
+ fun_l2_n50(x)
+ end
+end
+
+def fun_l1_n448(x)
+ if (x < 1)
+ fun_l2_n473(x)
+ else
+ fun_l2_n749(x)
+ end
+end
+
+def fun_l1_n449(x)
+ if (x < 1)
+ fun_l2_n218(x)
+ else
+ fun_l2_n266(x)
+ end
+end
+
+def fun_l1_n450(x)
+ if (x < 1)
+ fun_l2_n686(x)
+ else
+ fun_l2_n629(x)
+ end
+end
+
+def fun_l1_n451(x)
+ if (x < 1)
+ fun_l2_n648(x)
+ else
+ fun_l2_n322(x)
+ end
+end
+
+def fun_l1_n452(x)
+ if (x < 1)
+ fun_l2_n380(x)
+ else
+ fun_l2_n720(x)
+ end
+end
+
+def fun_l1_n453(x)
+ if (x < 1)
+ fun_l2_n53(x)
+ else
+ fun_l2_n830(x)
+ end
+end
+
+def fun_l1_n454(x)
+ if (x < 1)
+ fun_l2_n315(x)
+ else
+ fun_l2_n742(x)
+ end
+end
+
+def fun_l1_n455(x)
+ if (x < 1)
+ fun_l2_n902(x)
+ else
+ fun_l2_n111(x)
+ end
+end
+
+def fun_l1_n456(x)
+ if (x < 1)
+ fun_l2_n924(x)
+ else
+ fun_l2_n109(x)
+ end
+end
+
+def fun_l1_n457(x)
+ if (x < 1)
+ fun_l2_n249(x)
+ else
+ fun_l2_n865(x)
+ end
+end
+
+def fun_l1_n458(x)
+ if (x < 1)
+ fun_l2_n650(x)
+ else
+ fun_l2_n960(x)
+ end
+end
+
+def fun_l1_n459(x)
+ if (x < 1)
+ fun_l2_n273(x)
+ else
+ fun_l2_n544(x)
+ end
+end
+
+def fun_l1_n460(x)
+ if (x < 1)
+ fun_l2_n120(x)
+ else
+ fun_l2_n322(x)
+ end
+end
+
+def fun_l1_n461(x)
+ if (x < 1)
+ fun_l2_n366(x)
+ else
+ fun_l2_n534(x)
+ end
+end
+
+def fun_l1_n462(x)
+ if (x < 1)
+ fun_l2_n380(x)
+ else
+ fun_l2_n25(x)
+ end
+end
+
+def fun_l1_n463(x)
+ if (x < 1)
+ fun_l2_n333(x)
+ else
+ fun_l2_n303(x)
+ end
+end
+
+def fun_l1_n464(x)
+ if (x < 1)
+ fun_l2_n16(x)
+ else
+ fun_l2_n239(x)
+ end
+end
+
+def fun_l1_n465(x)
+ if (x < 1)
+ fun_l2_n539(x)
+ else
+ fun_l2_n988(x)
+ end
+end
+
+def fun_l1_n466(x)
+ if (x < 1)
+ fun_l2_n580(x)
+ else
+ fun_l2_n86(x)
+ end
+end
+
+def fun_l1_n467(x)
+ if (x < 1)
+ fun_l2_n406(x)
+ else
+ fun_l2_n706(x)
+ end
+end
+
+def fun_l1_n468(x)
+ if (x < 1)
+ fun_l2_n858(x)
+ else
+ fun_l2_n393(x)
+ end
+end
+
+def fun_l1_n469(x)
+ if (x < 1)
+ fun_l2_n64(x)
+ else
+ fun_l2_n482(x)
+ end
+end
+
+def fun_l1_n470(x)
+ if (x < 1)
+ fun_l2_n654(x)
+ else
+ fun_l2_n833(x)
+ end
+end
+
+def fun_l1_n471(x)
+ if (x < 1)
+ fun_l2_n161(x)
+ else
+ fun_l2_n91(x)
+ end
+end
+
+def fun_l1_n472(x)
+ if (x < 1)
+ fun_l2_n98(x)
+ else
+ fun_l2_n661(x)
+ end
+end
+
+def fun_l1_n473(x)
+ if (x < 1)
+ fun_l2_n574(x)
+ else
+ fun_l2_n133(x)
+ end
+end
+
+def fun_l1_n474(x)
+ if (x < 1)
+ fun_l2_n109(x)
+ else
+ fun_l2_n702(x)
+ end
+end
+
+def fun_l1_n475(x)
+ if (x < 1)
+ fun_l2_n808(x)
+ else
+ fun_l2_n584(x)
+ end
+end
+
+def fun_l1_n476(x)
+ if (x < 1)
+ fun_l2_n495(x)
+ else
+ fun_l2_n708(x)
+ end
+end
+
+def fun_l1_n477(x)
+ if (x < 1)
+ fun_l2_n649(x)
+ else
+ fun_l2_n290(x)
+ end
+end
+
+def fun_l1_n478(x)
+ if (x < 1)
+ fun_l2_n718(x)
+ else
+ fun_l2_n998(x)
+ end
+end
+
+def fun_l1_n479(x)
+ if (x < 1)
+ fun_l2_n557(x)
+ else
+ fun_l2_n359(x)
+ end
+end
+
+def fun_l1_n480(x)
+ if (x < 1)
+ fun_l2_n958(x)
+ else
+ fun_l2_n86(x)
+ end
+end
+
+def fun_l1_n481(x)
+ if (x < 1)
+ fun_l2_n245(x)
+ else
+ fun_l2_n124(x)
+ end
+end
+
+def fun_l1_n482(x)
+ if (x < 1)
+ fun_l2_n510(x)
+ else
+ fun_l2_n170(x)
+ end
+end
+
+def fun_l1_n483(x)
+ if (x < 1)
+ fun_l2_n550(x)
+ else
+ fun_l2_n9(x)
+ end
+end
+
+def fun_l1_n484(x)
+ if (x < 1)
+ fun_l2_n82(x)
+ else
+ fun_l2_n351(x)
+ end
+end
+
+def fun_l1_n485(x)
+ if (x < 1)
+ fun_l2_n760(x)
+ else
+ fun_l2_n560(x)
+ end
+end
+
+def fun_l1_n486(x)
+ if (x < 1)
+ fun_l2_n550(x)
+ else
+ fun_l2_n881(x)
+ end
+end
+
+def fun_l1_n487(x)
+ if (x < 1)
+ fun_l2_n62(x)
+ else
+ fun_l2_n213(x)
+ end
+end
+
+def fun_l1_n488(x)
+ if (x < 1)
+ fun_l2_n336(x)
+ else
+ fun_l2_n855(x)
+ end
+end
+
+def fun_l1_n489(x)
+ if (x < 1)
+ fun_l2_n172(x)
+ else
+ fun_l2_n479(x)
+ end
+end
+
+def fun_l1_n490(x)
+ if (x < 1)
+ fun_l2_n821(x)
+ else
+ fun_l2_n767(x)
+ end
+end
+
+def fun_l1_n491(x)
+ if (x < 1)
+ fun_l2_n388(x)
+ else
+ fun_l2_n307(x)
+ end
+end
+
+def fun_l1_n492(x)
+ if (x < 1)
+ fun_l2_n158(x)
+ else
+ fun_l2_n725(x)
+ end
+end
+
+def fun_l1_n493(x)
+ if (x < 1)
+ fun_l2_n681(x)
+ else
+ fun_l2_n767(x)
+ end
+end
+
+def fun_l1_n494(x)
+ if (x < 1)
+ fun_l2_n799(x)
+ else
+ fun_l2_n458(x)
+ end
+end
+
+def fun_l1_n495(x)
+ if (x < 1)
+ fun_l2_n379(x)
+ else
+ fun_l2_n152(x)
+ end
+end
+
+def fun_l1_n496(x)
+ if (x < 1)
+ fun_l2_n996(x)
+ else
+ fun_l2_n296(x)
+ end
+end
+
+def fun_l1_n497(x)
+ if (x < 1)
+ fun_l2_n752(x)
+ else
+ fun_l2_n481(x)
+ end
+end
+
+def fun_l1_n498(x)
+ if (x < 1)
+ fun_l2_n887(x)
+ else
+ fun_l2_n343(x)
+ end
+end
+
+def fun_l1_n499(x)
+ if (x < 1)
+ fun_l2_n481(x)
+ else
+ fun_l2_n368(x)
+ end
+end
+
+def fun_l1_n500(x)
+ if (x < 1)
+ fun_l2_n738(x)
+ else
+ fun_l2_n349(x)
+ end
+end
+
+def fun_l1_n501(x)
+ if (x < 1)
+ fun_l2_n104(x)
+ else
+ fun_l2_n841(x)
+ end
+end
+
+def fun_l1_n502(x)
+ if (x < 1)
+ fun_l2_n549(x)
+ else
+ fun_l2_n684(x)
+ end
+end
+
+def fun_l1_n503(x)
+ if (x < 1)
+ fun_l2_n726(x)
+ else
+ fun_l2_n41(x)
+ end
+end
+
+def fun_l1_n504(x)
+ if (x < 1)
+ fun_l2_n637(x)
+ else
+ fun_l2_n830(x)
+ end
+end
+
+def fun_l1_n505(x)
+ if (x < 1)
+ fun_l2_n38(x)
+ else
+ fun_l2_n815(x)
+ end
+end
+
+def fun_l1_n506(x)
+ if (x < 1)
+ fun_l2_n284(x)
+ else
+ fun_l2_n599(x)
+ end
+end
+
+def fun_l1_n507(x)
+ if (x < 1)
+ fun_l2_n665(x)
+ else
+ fun_l2_n763(x)
+ end
+end
+
+def fun_l1_n508(x)
+ if (x < 1)
+ fun_l2_n755(x)
+ else
+ fun_l2_n51(x)
+ end
+end
+
+def fun_l1_n509(x)
+ if (x < 1)
+ fun_l2_n860(x)
+ else
+ fun_l2_n273(x)
+ end
+end
+
+def fun_l1_n510(x)
+ if (x < 1)
+ fun_l2_n967(x)
+ else
+ fun_l2_n141(x)
+ end
+end
+
+def fun_l1_n511(x)
+ if (x < 1)
+ fun_l2_n637(x)
+ else
+ fun_l2_n953(x)
+ end
+end
+
+def fun_l1_n512(x)
+ if (x < 1)
+ fun_l2_n784(x)
+ else
+ fun_l2_n941(x)
+ end
+end
+
+def fun_l1_n513(x)
+ if (x < 1)
+ fun_l2_n499(x)
+ else
+ fun_l2_n189(x)
+ end
+end
+
+def fun_l1_n514(x)
+ if (x < 1)
+ fun_l2_n207(x)
+ else
+ fun_l2_n187(x)
+ end
+end
+
+def fun_l1_n515(x)
+ if (x < 1)
+ fun_l2_n174(x)
+ else
+ fun_l2_n316(x)
+ end
+end
+
+def fun_l1_n516(x)
+ if (x < 1)
+ fun_l2_n884(x)
+ else
+ fun_l2_n72(x)
+ end
+end
+
+def fun_l1_n517(x)
+ if (x < 1)
+ fun_l2_n878(x)
+ else
+ fun_l2_n423(x)
+ end
+end
+
+def fun_l1_n518(x)
+ if (x < 1)
+ fun_l2_n452(x)
+ else
+ fun_l2_n733(x)
+ end
+end
+
+def fun_l1_n519(x)
+ if (x < 1)
+ fun_l2_n586(x)
+ else
+ fun_l2_n987(x)
+ end
+end
+
+def fun_l1_n520(x)
+ if (x < 1)
+ fun_l2_n638(x)
+ else
+ fun_l2_n276(x)
+ end
+end
+
+def fun_l1_n521(x)
+ if (x < 1)
+ fun_l2_n186(x)
+ else
+ fun_l2_n498(x)
+ end
+end
+
+def fun_l1_n522(x)
+ if (x < 1)
+ fun_l2_n816(x)
+ else
+ fun_l2_n687(x)
+ end
+end
+
+def fun_l1_n523(x)
+ if (x < 1)
+ fun_l2_n572(x)
+ else
+ fun_l2_n878(x)
+ end
+end
+
+def fun_l1_n524(x)
+ if (x < 1)
+ fun_l2_n528(x)
+ else
+ fun_l2_n188(x)
+ end
+end
+
+def fun_l1_n525(x)
+ if (x < 1)
+ fun_l2_n719(x)
+ else
+ fun_l2_n146(x)
+ end
+end
+
+def fun_l1_n526(x)
+ if (x < 1)
+ fun_l2_n730(x)
+ else
+ fun_l2_n209(x)
+ end
+end
+
+def fun_l1_n527(x)
+ if (x < 1)
+ fun_l2_n998(x)
+ else
+ fun_l2_n544(x)
+ end
+end
+
+def fun_l1_n528(x)
+ if (x < 1)
+ fun_l2_n288(x)
+ else
+ fun_l2_n682(x)
+ end
+end
+
+def fun_l1_n529(x)
+ if (x < 1)
+ fun_l2_n808(x)
+ else
+ fun_l2_n651(x)
+ end
+end
+
+def fun_l1_n530(x)
+ if (x < 1)
+ fun_l2_n674(x)
+ else
+ fun_l2_n643(x)
+ end
+end
+
+def fun_l1_n531(x)
+ if (x < 1)
+ fun_l2_n42(x)
+ else
+ fun_l2_n457(x)
+ end
+end
+
+def fun_l1_n532(x)
+ if (x < 1)
+ fun_l2_n188(x)
+ else
+ fun_l2_n218(x)
+ end
+end
+
+def fun_l1_n533(x)
+ if (x < 1)
+ fun_l2_n529(x)
+ else
+ fun_l2_n541(x)
+ end
+end
+
+def fun_l1_n534(x)
+ if (x < 1)
+ fun_l2_n820(x)
+ else
+ fun_l2_n426(x)
+ end
+end
+
+def fun_l1_n535(x)
+ if (x < 1)
+ fun_l2_n730(x)
+ else
+ fun_l2_n36(x)
+ end
+end
+
+def fun_l1_n536(x)
+ if (x < 1)
+ fun_l2_n187(x)
+ else
+ fun_l2_n96(x)
+ end
+end
+
+def fun_l1_n537(x)
+ if (x < 1)
+ fun_l2_n1(x)
+ else
+ fun_l2_n905(x)
+ end
+end
+
+def fun_l1_n538(x)
+ if (x < 1)
+ fun_l2_n252(x)
+ else
+ fun_l2_n597(x)
+ end
+end
+
+def fun_l1_n539(x)
+ if (x < 1)
+ fun_l2_n959(x)
+ else
+ fun_l2_n26(x)
+ end
+end
+
+def fun_l1_n540(x)
+ if (x < 1)
+ fun_l2_n959(x)
+ else
+ fun_l2_n266(x)
+ end
+end
+
+def fun_l1_n541(x)
+ if (x < 1)
+ fun_l2_n902(x)
+ else
+ fun_l2_n957(x)
+ end
+end
+
+def fun_l1_n542(x)
+ if (x < 1)
+ fun_l2_n244(x)
+ else
+ fun_l2_n407(x)
+ end
+end
+
+def fun_l1_n543(x)
+ if (x < 1)
+ fun_l2_n319(x)
+ else
+ fun_l2_n19(x)
+ end
+end
+
+def fun_l1_n544(x)
+ if (x < 1)
+ fun_l2_n251(x)
+ else
+ fun_l2_n92(x)
+ end
+end
+
+def fun_l1_n545(x)
+ if (x < 1)
+ fun_l2_n482(x)
+ else
+ fun_l2_n177(x)
+ end
+end
+
+def fun_l1_n546(x)
+ if (x < 1)
+ fun_l2_n338(x)
+ else
+ fun_l2_n152(x)
+ end
+end
+
+def fun_l1_n547(x)
+ if (x < 1)
+ fun_l2_n902(x)
+ else
+ fun_l2_n243(x)
+ end
+end
+
+def fun_l1_n548(x)
+ if (x < 1)
+ fun_l2_n943(x)
+ else
+ fun_l2_n930(x)
+ end
+end
+
+def fun_l1_n549(x)
+ if (x < 1)
+ fun_l2_n775(x)
+ else
+ fun_l2_n338(x)
+ end
+end
+
+def fun_l1_n550(x)
+ if (x < 1)
+ fun_l2_n286(x)
+ else
+ fun_l2_n347(x)
+ end
+end
+
+def fun_l1_n551(x)
+ if (x < 1)
+ fun_l2_n611(x)
+ else
+ fun_l2_n108(x)
+ end
+end
+
+def fun_l1_n552(x)
+ if (x < 1)
+ fun_l2_n515(x)
+ else
+ fun_l2_n478(x)
+ end
+end
+
+def fun_l1_n553(x)
+ if (x < 1)
+ fun_l2_n68(x)
+ else
+ fun_l2_n943(x)
+ end
+end
+
+def fun_l1_n554(x)
+ if (x < 1)
+ fun_l2_n16(x)
+ else
+ fun_l2_n280(x)
+ end
+end
+
+def fun_l1_n555(x)
+ if (x < 1)
+ fun_l2_n421(x)
+ else
+ fun_l2_n412(x)
+ end
+end
+
+def fun_l1_n556(x)
+ if (x < 1)
+ fun_l2_n653(x)
+ else
+ fun_l2_n527(x)
+ end
+end
+
+def fun_l1_n557(x)
+ if (x < 1)
+ fun_l2_n181(x)
+ else
+ fun_l2_n179(x)
+ end
+end
+
+def fun_l1_n558(x)
+ if (x < 1)
+ fun_l2_n270(x)
+ else
+ fun_l2_n367(x)
+ end
+end
+
+def fun_l1_n559(x)
+ if (x < 1)
+ fun_l2_n323(x)
+ else
+ fun_l2_n453(x)
+ end
+end
+
+def fun_l1_n560(x)
+ if (x < 1)
+ fun_l2_n699(x)
+ else
+ fun_l2_n904(x)
+ end
+end
+
+def fun_l1_n561(x)
+ if (x < 1)
+ fun_l2_n903(x)
+ else
+ fun_l2_n559(x)
+ end
+end
+
+def fun_l1_n562(x)
+ if (x < 1)
+ fun_l2_n573(x)
+ else
+ fun_l2_n880(x)
+ end
+end
+
+def fun_l1_n563(x)
+ if (x < 1)
+ fun_l2_n674(x)
+ else
+ fun_l2_n420(x)
+ end
+end
+
+def fun_l1_n564(x)
+ if (x < 1)
+ fun_l2_n76(x)
+ else
+ fun_l2_n702(x)
+ end
+end
+
+def fun_l1_n565(x)
+ if (x < 1)
+ fun_l2_n78(x)
+ else
+ fun_l2_n741(x)
+ end
+end
+
+def fun_l1_n566(x)
+ if (x < 1)
+ fun_l2_n542(x)
+ else
+ fun_l2_n762(x)
+ end
+end
+
+def fun_l1_n567(x)
+ if (x < 1)
+ fun_l2_n992(x)
+ else
+ fun_l2_n416(x)
+ end
+end
+
+def fun_l1_n568(x)
+ if (x < 1)
+ fun_l2_n510(x)
+ else
+ fun_l2_n68(x)
+ end
+end
+
+def fun_l1_n569(x)
+ if (x < 1)
+ fun_l2_n36(x)
+ else
+ fun_l2_n152(x)
+ end
+end
+
+def fun_l1_n570(x)
+ if (x < 1)
+ fun_l2_n243(x)
+ else
+ fun_l2_n421(x)
+ end
+end
+
+def fun_l1_n571(x)
+ if (x < 1)
+ fun_l2_n48(x)
+ else
+ fun_l2_n50(x)
+ end
+end
+
+def fun_l1_n572(x)
+ if (x < 1)
+ fun_l2_n647(x)
+ else
+ fun_l2_n614(x)
+ end
+end
+
+def fun_l1_n573(x)
+ if (x < 1)
+ fun_l2_n847(x)
+ else
+ fun_l2_n598(x)
+ end
+end
+
+def fun_l1_n574(x)
+ if (x < 1)
+ fun_l2_n462(x)
+ else
+ fun_l2_n492(x)
+ end
+end
+
+def fun_l1_n575(x)
+ if (x < 1)
+ fun_l2_n805(x)
+ else
+ fun_l2_n23(x)
+ end
+end
+
+def fun_l1_n576(x)
+ if (x < 1)
+ fun_l2_n660(x)
+ else
+ fun_l2_n271(x)
+ end
+end
+
+def fun_l1_n577(x)
+ if (x < 1)
+ fun_l2_n277(x)
+ else
+ fun_l2_n259(x)
+ end
+end
+
+def fun_l1_n578(x)
+ if (x < 1)
+ fun_l2_n645(x)
+ else
+ fun_l2_n638(x)
+ end
+end
+
+def fun_l1_n579(x)
+ if (x < 1)
+ fun_l2_n925(x)
+ else
+ fun_l2_n801(x)
+ end
+end
+
+def fun_l1_n580(x)
+ if (x < 1)
+ fun_l2_n52(x)
+ else
+ fun_l2_n703(x)
+ end
+end
+
+def fun_l1_n581(x)
+ if (x < 1)
+ fun_l2_n126(x)
+ else
+ fun_l2_n511(x)
+ end
+end
+
+def fun_l1_n582(x)
+ if (x < 1)
+ fun_l2_n663(x)
+ else
+ fun_l2_n158(x)
+ end
+end
+
+def fun_l1_n583(x)
+ if (x < 1)
+ fun_l2_n604(x)
+ else
+ fun_l2_n498(x)
+ end
+end
+
+def fun_l1_n584(x)
+ if (x < 1)
+ fun_l2_n889(x)
+ else
+ fun_l2_n197(x)
+ end
+end
+
+def fun_l1_n585(x)
+ if (x < 1)
+ fun_l2_n28(x)
+ else
+ fun_l2_n298(x)
+ end
+end
+
+def fun_l1_n586(x)
+ if (x < 1)
+ fun_l2_n165(x)
+ else
+ fun_l2_n340(x)
+ end
+end
+
+def fun_l1_n587(x)
+ if (x < 1)
+ fun_l2_n89(x)
+ else
+ fun_l2_n947(x)
+ end
+end
+
+def fun_l1_n588(x)
+ if (x < 1)
+ fun_l2_n151(x)
+ else
+ fun_l2_n163(x)
+ end
+end
+
+def fun_l1_n589(x)
+ if (x < 1)
+ fun_l2_n200(x)
+ else
+ fun_l2_n855(x)
+ end
+end
+
+def fun_l1_n590(x)
+ if (x < 1)
+ fun_l2_n749(x)
+ else
+ fun_l2_n232(x)
+ end
+end
+
+def fun_l1_n591(x)
+ if (x < 1)
+ fun_l2_n850(x)
+ else
+ fun_l2_n897(x)
+ end
+end
+
+def fun_l1_n592(x)
+ if (x < 1)
+ fun_l2_n287(x)
+ else
+ fun_l2_n266(x)
+ end
+end
+
+def fun_l1_n593(x)
+ if (x < 1)
+ fun_l2_n547(x)
+ else
+ fun_l2_n937(x)
+ end
+end
+
+def fun_l1_n594(x)
+ if (x < 1)
+ fun_l2_n517(x)
+ else
+ fun_l2_n602(x)
+ end
+end
+
+def fun_l1_n595(x)
+ if (x < 1)
+ fun_l2_n962(x)
+ else
+ fun_l2_n387(x)
+ end
+end
+
+def fun_l1_n596(x)
+ if (x < 1)
+ fun_l2_n959(x)
+ else
+ fun_l2_n885(x)
+ end
+end
+
+def fun_l1_n597(x)
+ if (x < 1)
+ fun_l2_n343(x)
+ else
+ fun_l2_n704(x)
+ end
+end
+
+def fun_l1_n598(x)
+ if (x < 1)
+ fun_l2_n256(x)
+ else
+ fun_l2_n213(x)
+ end
+end
+
+def fun_l1_n599(x)
+ if (x < 1)
+ fun_l2_n653(x)
+ else
+ fun_l2_n630(x)
+ end
+end
+
+def fun_l1_n600(x)
+ if (x < 1)
+ fun_l2_n587(x)
+ else
+ fun_l2_n899(x)
+ end
+end
+
+def fun_l1_n601(x)
+ if (x < 1)
+ fun_l2_n798(x)
+ else
+ fun_l2_n318(x)
+ end
+end
+
+def fun_l1_n602(x)
+ if (x < 1)
+ fun_l2_n286(x)
+ else
+ fun_l2_n586(x)
+ end
+end
+
+def fun_l1_n603(x)
+ if (x < 1)
+ fun_l2_n931(x)
+ else
+ fun_l2_n370(x)
+ end
+end
+
+def fun_l1_n604(x)
+ if (x < 1)
+ fun_l2_n311(x)
+ else
+ fun_l2_n476(x)
+ end
+end
+
+def fun_l1_n605(x)
+ if (x < 1)
+ fun_l2_n998(x)
+ else
+ fun_l2_n953(x)
+ end
+end
+
+def fun_l1_n606(x)
+ if (x < 1)
+ fun_l2_n782(x)
+ else
+ fun_l2_n225(x)
+ end
+end
+
+def fun_l1_n607(x)
+ if (x < 1)
+ fun_l2_n696(x)
+ else
+ fun_l2_n797(x)
+ end
+end
+
+def fun_l1_n608(x)
+ if (x < 1)
+ fun_l2_n344(x)
+ else
+ fun_l2_n247(x)
+ end
+end
+
+def fun_l1_n609(x)
+ if (x < 1)
+ fun_l2_n627(x)
+ else
+ fun_l2_n410(x)
+ end
+end
+
+def fun_l1_n610(x)
+ if (x < 1)
+ fun_l2_n431(x)
+ else
+ fun_l2_n56(x)
+ end
+end
+
+def fun_l1_n611(x)
+ if (x < 1)
+ fun_l2_n307(x)
+ else
+ fun_l2_n857(x)
+ end
+end
+
+def fun_l1_n612(x)
+ if (x < 1)
+ fun_l2_n411(x)
+ else
+ fun_l2_n59(x)
+ end
+end
+
+def fun_l1_n613(x)
+ if (x < 1)
+ fun_l2_n38(x)
+ else
+ fun_l2_n880(x)
+ end
+end
+
+def fun_l1_n614(x)
+ if (x < 1)
+ fun_l2_n945(x)
+ else
+ fun_l2_n723(x)
+ end
+end
+
+def fun_l1_n615(x)
+ if (x < 1)
+ fun_l2_n248(x)
+ else
+ fun_l2_n56(x)
+ end
+end
+
+def fun_l1_n616(x)
+ if (x < 1)
+ fun_l2_n453(x)
+ else
+ fun_l2_n4(x)
+ end
+end
+
+def fun_l1_n617(x)
+ if (x < 1)
+ fun_l2_n599(x)
+ else
+ fun_l2_n966(x)
+ end
+end
+
+def fun_l1_n618(x)
+ if (x < 1)
+ fun_l2_n896(x)
+ else
+ fun_l2_n666(x)
+ end
+end
+
+def fun_l1_n619(x)
+ if (x < 1)
+ fun_l2_n715(x)
+ else
+ fun_l2_n918(x)
+ end
+end
+
+def fun_l1_n620(x)
+ if (x < 1)
+ fun_l2_n663(x)
+ else
+ fun_l2_n144(x)
+ end
+end
+
+def fun_l1_n621(x)
+ if (x < 1)
+ fun_l2_n17(x)
+ else
+ fun_l2_n411(x)
+ end
+end
+
+def fun_l1_n622(x)
+ if (x < 1)
+ fun_l2_n851(x)
+ else
+ fun_l2_n858(x)
+ end
+end
+
+def fun_l1_n623(x)
+ if (x < 1)
+ fun_l2_n552(x)
+ else
+ fun_l2_n503(x)
+ end
+end
+
+def fun_l1_n624(x)
+ if (x < 1)
+ fun_l2_n822(x)
+ else
+ fun_l2_n239(x)
+ end
+end
+
+def fun_l1_n625(x)
+ if (x < 1)
+ fun_l2_n917(x)
+ else
+ fun_l2_n120(x)
+ end
+end
+
+def fun_l1_n626(x)
+ if (x < 1)
+ fun_l2_n640(x)
+ else
+ fun_l2_n603(x)
+ end
+end
+
+def fun_l1_n627(x)
+ if (x < 1)
+ fun_l2_n244(x)
+ else
+ fun_l2_n114(x)
+ end
+end
+
+def fun_l1_n628(x)
+ if (x < 1)
+ fun_l2_n374(x)
+ else
+ fun_l2_n295(x)
+ end
+end
+
+def fun_l1_n629(x)
+ if (x < 1)
+ fun_l2_n761(x)
+ else
+ fun_l2_n920(x)
+ end
+end
+
+def fun_l1_n630(x)
+ if (x < 1)
+ fun_l2_n314(x)
+ else
+ fun_l2_n571(x)
+ end
+end
+
+def fun_l1_n631(x)
+ if (x < 1)
+ fun_l2_n830(x)
+ else
+ fun_l2_n838(x)
+ end
+end
+
+def fun_l1_n632(x)
+ if (x < 1)
+ fun_l2_n523(x)
+ else
+ fun_l2_n453(x)
+ end
+end
+
+def fun_l1_n633(x)
+ if (x < 1)
+ fun_l2_n245(x)
+ else
+ fun_l2_n173(x)
+ end
+end
+
+def fun_l1_n634(x)
+ if (x < 1)
+ fun_l2_n939(x)
+ else
+ fun_l2_n774(x)
+ end
+end
+
+def fun_l1_n635(x)
+ if (x < 1)
+ fun_l2_n17(x)
+ else
+ fun_l2_n166(x)
+ end
+end
+
+def fun_l1_n636(x)
+ if (x < 1)
+ fun_l2_n443(x)
+ else
+ fun_l2_n297(x)
+ end
+end
+
+def fun_l1_n637(x)
+ if (x < 1)
+ fun_l2_n280(x)
+ else
+ fun_l2_n776(x)
+ end
+end
+
+def fun_l1_n638(x)
+ if (x < 1)
+ fun_l2_n761(x)
+ else
+ fun_l2_n866(x)
+ end
+end
+
+def fun_l1_n639(x)
+ if (x < 1)
+ fun_l2_n677(x)
+ else
+ fun_l2_n855(x)
+ end
+end
+
+def fun_l1_n640(x)
+ if (x < 1)
+ fun_l2_n252(x)
+ else
+ fun_l2_n766(x)
+ end
+end
+
+def fun_l1_n641(x)
+ if (x < 1)
+ fun_l2_n3(x)
+ else
+ fun_l2_n115(x)
+ end
+end
+
+def fun_l1_n642(x)
+ if (x < 1)
+ fun_l2_n495(x)
+ else
+ fun_l2_n340(x)
+ end
+end
+
+def fun_l1_n643(x)
+ if (x < 1)
+ fun_l2_n991(x)
+ else
+ fun_l2_n119(x)
+ end
+end
+
+def fun_l1_n644(x)
+ if (x < 1)
+ fun_l2_n379(x)
+ else
+ fun_l2_n519(x)
+ end
+end
+
+def fun_l1_n645(x)
+ if (x < 1)
+ fun_l2_n191(x)
+ else
+ fun_l2_n872(x)
+ end
+end
+
+def fun_l1_n646(x)
+ if (x < 1)
+ fun_l2_n979(x)
+ else
+ fun_l2_n980(x)
+ end
+end
+
+def fun_l1_n647(x)
+ if (x < 1)
+ fun_l2_n918(x)
+ else
+ fun_l2_n455(x)
+ end
+end
+
+def fun_l1_n648(x)
+ if (x < 1)
+ fun_l2_n966(x)
+ else
+ fun_l2_n529(x)
+ end
+end
+
+def fun_l1_n649(x)
+ if (x < 1)
+ fun_l2_n838(x)
+ else
+ fun_l2_n529(x)
+ end
+end
+
+def fun_l1_n650(x)
+ if (x < 1)
+ fun_l2_n542(x)
+ else
+ fun_l2_n42(x)
+ end
+end
+
+def fun_l1_n651(x)
+ if (x < 1)
+ fun_l2_n65(x)
+ else
+ fun_l2_n460(x)
+ end
+end
+
+def fun_l1_n652(x)
+ if (x < 1)
+ fun_l2_n479(x)
+ else
+ fun_l2_n251(x)
+ end
+end
+
+def fun_l1_n653(x)
+ if (x < 1)
+ fun_l2_n243(x)
+ else
+ fun_l2_n77(x)
+ end
+end
+
+def fun_l1_n654(x)
+ if (x < 1)
+ fun_l2_n392(x)
+ else
+ fun_l2_n940(x)
+ end
+end
+
+def fun_l1_n655(x)
+ if (x < 1)
+ fun_l2_n875(x)
+ else
+ fun_l2_n157(x)
+ end
+end
+
+def fun_l1_n656(x)
+ if (x < 1)
+ fun_l2_n279(x)
+ else
+ fun_l2_n237(x)
+ end
+end
+
+def fun_l1_n657(x)
+ if (x < 1)
+ fun_l2_n522(x)
+ else
+ fun_l2_n174(x)
+ end
+end
+
+def fun_l1_n658(x)
+ if (x < 1)
+ fun_l2_n669(x)
+ else
+ fun_l2_n399(x)
+ end
+end
+
+def fun_l1_n659(x)
+ if (x < 1)
+ fun_l2_n251(x)
+ else
+ fun_l2_n56(x)
+ end
+end
+
+def fun_l1_n660(x)
+ if (x < 1)
+ fun_l2_n563(x)
+ else
+ fun_l2_n731(x)
+ end
+end
+
+def fun_l1_n661(x)
+ if (x < 1)
+ fun_l2_n684(x)
+ else
+ fun_l2_n292(x)
+ end
+end
+
+def fun_l1_n662(x)
+ if (x < 1)
+ fun_l2_n952(x)
+ else
+ fun_l2_n1(x)
+ end
+end
+
+def fun_l1_n663(x)
+ if (x < 1)
+ fun_l2_n89(x)
+ else
+ fun_l2_n562(x)
+ end
+end
+
+def fun_l1_n664(x)
+ if (x < 1)
+ fun_l2_n480(x)
+ else
+ fun_l2_n488(x)
+ end
+end
+
+def fun_l1_n665(x)
+ if (x < 1)
+ fun_l2_n398(x)
+ else
+ fun_l2_n493(x)
+ end
+end
+
+def fun_l1_n666(x)
+ if (x < 1)
+ fun_l2_n778(x)
+ else
+ fun_l2_n702(x)
+ end
+end
+
+def fun_l1_n667(x)
+ if (x < 1)
+ fun_l2_n332(x)
+ else
+ fun_l2_n441(x)
+ end
+end
+
+def fun_l1_n668(x)
+ if (x < 1)
+ fun_l2_n866(x)
+ else
+ fun_l2_n442(x)
+ end
+end
+
+def fun_l1_n669(x)
+ if (x < 1)
+ fun_l2_n533(x)
+ else
+ fun_l2_n970(x)
+ end
+end
+
+def fun_l1_n670(x)
+ if (x < 1)
+ fun_l2_n926(x)
+ else
+ fun_l2_n883(x)
+ end
+end
+
+def fun_l1_n671(x)
+ if (x < 1)
+ fun_l2_n204(x)
+ else
+ fun_l2_n769(x)
+ end
+end
+
+def fun_l1_n672(x)
+ if (x < 1)
+ fun_l2_n663(x)
+ else
+ fun_l2_n367(x)
+ end
+end
+
+def fun_l1_n673(x)
+ if (x < 1)
+ fun_l2_n978(x)
+ else
+ fun_l2_n750(x)
+ end
+end
+
+def fun_l1_n674(x)
+ if (x < 1)
+ fun_l2_n296(x)
+ else
+ fun_l2_n608(x)
+ end
+end
+
+def fun_l1_n675(x)
+ if (x < 1)
+ fun_l2_n35(x)
+ else
+ fun_l2_n200(x)
+ end
+end
+
+def fun_l1_n676(x)
+ if (x < 1)
+ fun_l2_n618(x)
+ else
+ fun_l2_n286(x)
+ end
+end
+
+def fun_l1_n677(x)
+ if (x < 1)
+ fun_l2_n98(x)
+ else
+ fun_l2_n264(x)
+ end
+end
+
+def fun_l1_n678(x)
+ if (x < 1)
+ fun_l2_n967(x)
+ else
+ fun_l2_n884(x)
+ end
+end
+
+def fun_l1_n679(x)
+ if (x < 1)
+ fun_l2_n351(x)
+ else
+ fun_l2_n854(x)
+ end
+end
+
+def fun_l1_n680(x)
+ if (x < 1)
+ fun_l2_n397(x)
+ else
+ fun_l2_n56(x)
+ end
+end
+
+def fun_l1_n681(x)
+ if (x < 1)
+ fun_l2_n232(x)
+ else
+ fun_l2_n400(x)
+ end
+end
+
+def fun_l1_n682(x)
+ if (x < 1)
+ fun_l2_n321(x)
+ else
+ fun_l2_n500(x)
+ end
+end
+
+def fun_l1_n683(x)
+ if (x < 1)
+ fun_l2_n315(x)
+ else
+ fun_l2_n509(x)
+ end
+end
+
+def fun_l1_n684(x)
+ if (x < 1)
+ fun_l2_n854(x)
+ else
+ fun_l2_n921(x)
+ end
+end
+
+def fun_l1_n685(x)
+ if (x < 1)
+ fun_l2_n823(x)
+ else
+ fun_l2_n995(x)
+ end
+end
+
+def fun_l1_n686(x)
+ if (x < 1)
+ fun_l2_n42(x)
+ else
+ fun_l2_n92(x)
+ end
+end
+
+def fun_l1_n687(x)
+ if (x < 1)
+ fun_l2_n74(x)
+ else
+ fun_l2_n577(x)
+ end
+end
+
+def fun_l1_n688(x)
+ if (x < 1)
+ fun_l2_n47(x)
+ else
+ fun_l2_n664(x)
+ end
+end
+
+def fun_l1_n689(x)
+ if (x < 1)
+ fun_l2_n709(x)
+ else
+ fun_l2_n92(x)
+ end
+end
+
+def fun_l1_n690(x)
+ if (x < 1)
+ fun_l2_n875(x)
+ else
+ fun_l2_n893(x)
+ end
+end
+
+def fun_l1_n691(x)
+ if (x < 1)
+ fun_l2_n934(x)
+ else
+ fun_l2_n339(x)
+ end
+end
+
+def fun_l1_n692(x)
+ if (x < 1)
+ fun_l2_n194(x)
+ else
+ fun_l2_n915(x)
+ end
+end
+
+def fun_l1_n693(x)
+ if (x < 1)
+ fun_l2_n352(x)
+ else
+ fun_l2_n212(x)
+ end
+end
+
+def fun_l1_n694(x)
+ if (x < 1)
+ fun_l2_n554(x)
+ else
+ fun_l2_n461(x)
+ end
+end
+
+def fun_l1_n695(x)
+ if (x < 1)
+ fun_l2_n372(x)
+ else
+ fun_l2_n652(x)
+ end
+end
+
+def fun_l1_n696(x)
+ if (x < 1)
+ fun_l2_n778(x)
+ else
+ fun_l2_n350(x)
+ end
+end
+
+def fun_l1_n697(x)
+ if (x < 1)
+ fun_l2_n656(x)
+ else
+ fun_l2_n467(x)
+ end
+end
+
+def fun_l1_n698(x)
+ if (x < 1)
+ fun_l2_n799(x)
+ else
+ fun_l2_n983(x)
+ end
+end
+
+def fun_l1_n699(x)
+ if (x < 1)
+ fun_l2_n917(x)
+ else
+ fun_l2_n801(x)
+ end
+end
+
+def fun_l1_n700(x)
+ if (x < 1)
+ fun_l2_n276(x)
+ else
+ fun_l2_n778(x)
+ end
+end
+
+def fun_l1_n701(x)
+ if (x < 1)
+ fun_l2_n562(x)
+ else
+ fun_l2_n558(x)
+ end
+end
+
+def fun_l1_n702(x)
+ if (x < 1)
+ fun_l2_n600(x)
+ else
+ fun_l2_n120(x)
+ end
+end
+
+def fun_l1_n703(x)
+ if (x < 1)
+ fun_l2_n346(x)
+ else
+ fun_l2_n975(x)
+ end
+end
+
+def fun_l1_n704(x)
+ if (x < 1)
+ fun_l2_n139(x)
+ else
+ fun_l2_n241(x)
+ end
+end
+
+def fun_l1_n705(x)
+ if (x < 1)
+ fun_l2_n728(x)
+ else
+ fun_l2_n62(x)
+ end
+end
+
+def fun_l1_n706(x)
+ if (x < 1)
+ fun_l2_n719(x)
+ else
+ fun_l2_n955(x)
+ end
+end
+
+def fun_l1_n707(x)
+ if (x < 1)
+ fun_l2_n752(x)
+ else
+ fun_l2_n122(x)
+ end
+end
+
+def fun_l1_n708(x)
+ if (x < 1)
+ fun_l2_n456(x)
+ else
+ fun_l2_n128(x)
+ end
+end
+
+def fun_l1_n709(x)
+ if (x < 1)
+ fun_l2_n4(x)
+ else
+ fun_l2_n399(x)
+ end
+end
+
+def fun_l1_n710(x)
+ if (x < 1)
+ fun_l2_n20(x)
+ else
+ fun_l2_n746(x)
+ end
+end
+
+def fun_l1_n711(x)
+ if (x < 1)
+ fun_l2_n978(x)
+ else
+ fun_l2_n886(x)
+ end
+end
+
+def fun_l1_n712(x)
+ if (x < 1)
+ fun_l2_n417(x)
+ else
+ fun_l2_n337(x)
+ end
+end
+
+def fun_l1_n713(x)
+ if (x < 1)
+ fun_l2_n394(x)
+ else
+ fun_l2_n713(x)
+ end
+end
+
+def fun_l1_n714(x)
+ if (x < 1)
+ fun_l2_n433(x)
+ else
+ fun_l2_n985(x)
+ end
+end
+
+def fun_l1_n715(x)
+ if (x < 1)
+ fun_l2_n937(x)
+ else
+ fun_l2_n709(x)
+ end
+end
+
+def fun_l1_n716(x)
+ if (x < 1)
+ fun_l2_n963(x)
+ else
+ fun_l2_n842(x)
+ end
+end
+
+def fun_l1_n717(x)
+ if (x < 1)
+ fun_l2_n671(x)
+ else
+ fun_l2_n954(x)
+ end
+end
+
+def fun_l1_n718(x)
+ if (x < 1)
+ fun_l2_n948(x)
+ else
+ fun_l2_n128(x)
+ end
+end
+
+def fun_l1_n719(x)
+ if (x < 1)
+ fun_l2_n682(x)
+ else
+ fun_l2_n973(x)
+ end
+end
+
+def fun_l1_n720(x)
+ if (x < 1)
+ fun_l2_n336(x)
+ else
+ fun_l2_n643(x)
+ end
+end
+
+def fun_l1_n721(x)
+ if (x < 1)
+ fun_l2_n224(x)
+ else
+ fun_l2_n96(x)
+ end
+end
+
+def fun_l1_n722(x)
+ if (x < 1)
+ fun_l2_n907(x)
+ else
+ fun_l2_n776(x)
+ end
+end
+
+def fun_l1_n723(x)
+ if (x < 1)
+ fun_l2_n93(x)
+ else
+ fun_l2_n410(x)
+ end
+end
+
+def fun_l1_n724(x)
+ if (x < 1)
+ fun_l2_n282(x)
+ else
+ fun_l2_n134(x)
+ end
+end
+
+def fun_l1_n725(x)
+ if (x < 1)
+ fun_l2_n938(x)
+ else
+ fun_l2_n603(x)
+ end
+end
+
+def fun_l1_n726(x)
+ if (x < 1)
+ fun_l2_n574(x)
+ else
+ fun_l2_n976(x)
+ end
+end
+
+def fun_l1_n727(x)
+ if (x < 1)
+ fun_l2_n428(x)
+ else
+ fun_l2_n658(x)
+ end
+end
+
+def fun_l1_n728(x)
+ if (x < 1)
+ fun_l2_n828(x)
+ else
+ fun_l2_n226(x)
+ end
+end
+
+def fun_l1_n729(x)
+ if (x < 1)
+ fun_l2_n663(x)
+ else
+ fun_l2_n292(x)
+ end
+end
+
+def fun_l1_n730(x)
+ if (x < 1)
+ fun_l2_n802(x)
+ else
+ fun_l2_n853(x)
+ end
+end
+
+def fun_l1_n731(x)
+ if (x < 1)
+ fun_l2_n142(x)
+ else
+ fun_l2_n339(x)
+ end
+end
+
+def fun_l1_n732(x)
+ if (x < 1)
+ fun_l2_n211(x)
+ else
+ fun_l2_n35(x)
+ end
+end
+
+def fun_l1_n733(x)
+ if (x < 1)
+ fun_l2_n660(x)
+ else
+ fun_l2_n179(x)
+ end
+end
+
+def fun_l1_n734(x)
+ if (x < 1)
+ fun_l2_n174(x)
+ else
+ fun_l2_n224(x)
+ end
+end
+
+def fun_l1_n735(x)
+ if (x < 1)
+ fun_l2_n490(x)
+ else
+ fun_l2_n564(x)
+ end
+end
+
+def fun_l1_n736(x)
+ if (x < 1)
+ fun_l2_n597(x)
+ else
+ fun_l2_n153(x)
+ end
+end
+
+def fun_l1_n737(x)
+ if (x < 1)
+ fun_l2_n633(x)
+ else
+ fun_l2_n358(x)
+ end
+end
+
+def fun_l1_n738(x)
+ if (x < 1)
+ fun_l2_n0(x)
+ else
+ fun_l2_n858(x)
+ end
+end
+
+def fun_l1_n739(x)
+ if (x < 1)
+ fun_l2_n335(x)
+ else
+ fun_l2_n531(x)
+ end
+end
+
+def fun_l1_n740(x)
+ if (x < 1)
+ fun_l2_n736(x)
+ else
+ fun_l2_n653(x)
+ end
+end
+
+def fun_l1_n741(x)
+ if (x < 1)
+ fun_l2_n280(x)
+ else
+ fun_l2_n684(x)
+ end
+end
+
+def fun_l1_n742(x)
+ if (x < 1)
+ fun_l2_n976(x)
+ else
+ fun_l2_n987(x)
+ end
+end
+
+def fun_l1_n743(x)
+ if (x < 1)
+ fun_l2_n519(x)
+ else
+ fun_l2_n633(x)
+ end
+end
+
+def fun_l1_n744(x)
+ if (x < 1)
+ fun_l2_n314(x)
+ else
+ fun_l2_n579(x)
+ end
+end
+
+def fun_l1_n745(x)
+ if (x < 1)
+ fun_l2_n365(x)
+ else
+ fun_l2_n972(x)
+ end
+end
+
+def fun_l1_n746(x)
+ if (x < 1)
+ fun_l2_n902(x)
+ else
+ fun_l2_n715(x)
+ end
+end
+
+def fun_l1_n747(x)
+ if (x < 1)
+ fun_l2_n363(x)
+ else
+ fun_l2_n407(x)
+ end
+end
+
+def fun_l1_n748(x)
+ if (x < 1)
+ fun_l2_n660(x)
+ else
+ fun_l2_n814(x)
+ end
+end
+
+def fun_l1_n749(x)
+ if (x < 1)
+ fun_l2_n415(x)
+ else
+ fun_l2_n162(x)
+ end
+end
+
+def fun_l1_n750(x)
+ if (x < 1)
+ fun_l2_n157(x)
+ else
+ fun_l2_n406(x)
+ end
+end
+
+def fun_l1_n751(x)
+ if (x < 1)
+ fun_l2_n388(x)
+ else
+ fun_l2_n212(x)
+ end
+end
+
+def fun_l1_n752(x)
+ if (x < 1)
+ fun_l2_n733(x)
+ else
+ fun_l2_n283(x)
+ end
+end
+
+def fun_l1_n753(x)
+ if (x < 1)
+ fun_l2_n960(x)
+ else
+ fun_l2_n20(x)
+ end
+end
+
+def fun_l1_n754(x)
+ if (x < 1)
+ fun_l2_n797(x)
+ else
+ fun_l2_n202(x)
+ end
+end
+
+def fun_l1_n755(x)
+ if (x < 1)
+ fun_l2_n113(x)
+ else
+ fun_l2_n953(x)
+ end
+end
+
+def fun_l1_n756(x)
+ if (x < 1)
+ fun_l2_n84(x)
+ else
+ fun_l2_n390(x)
+ end
+end
+
+def fun_l1_n757(x)
+ if (x < 1)
+ fun_l2_n355(x)
+ else
+ fun_l2_n761(x)
+ end
+end
+
+def fun_l1_n758(x)
+ if (x < 1)
+ fun_l2_n823(x)
+ else
+ fun_l2_n37(x)
+ end
+end
+
+def fun_l1_n759(x)
+ if (x < 1)
+ fun_l2_n428(x)
+ else
+ fun_l2_n130(x)
+ end
+end
+
+def fun_l1_n760(x)
+ if (x < 1)
+ fun_l2_n364(x)
+ else
+ fun_l2_n680(x)
+ end
+end
+
+def fun_l1_n761(x)
+ if (x < 1)
+ fun_l2_n718(x)
+ else
+ fun_l2_n885(x)
+ end
+end
+
+def fun_l1_n762(x)
+ if (x < 1)
+ fun_l2_n795(x)
+ else
+ fun_l2_n342(x)
+ end
+end
+
+def fun_l1_n763(x)
+ if (x < 1)
+ fun_l2_n561(x)
+ else
+ fun_l2_n593(x)
+ end
+end
+
+def fun_l1_n764(x)
+ if (x < 1)
+ fun_l2_n714(x)
+ else
+ fun_l2_n168(x)
+ end
+end
+
+def fun_l1_n765(x)
+ if (x < 1)
+ fun_l2_n377(x)
+ else
+ fun_l2_n109(x)
+ end
+end
+
+def fun_l1_n766(x)
+ if (x < 1)
+ fun_l2_n477(x)
+ else
+ fun_l2_n871(x)
+ end
+end
+
+def fun_l1_n767(x)
+ if (x < 1)
+ fun_l2_n596(x)
+ else
+ fun_l2_n81(x)
+ end
+end
+
+def fun_l1_n768(x)
+ if (x < 1)
+ fun_l2_n609(x)
+ else
+ fun_l2_n454(x)
+ end
+end
+
+def fun_l1_n769(x)
+ if (x < 1)
+ fun_l2_n308(x)
+ else
+ fun_l2_n890(x)
+ end
+end
+
+def fun_l1_n770(x)
+ if (x < 1)
+ fun_l2_n761(x)
+ else
+ fun_l2_n342(x)
+ end
+end
+
+def fun_l1_n771(x)
+ if (x < 1)
+ fun_l2_n44(x)
+ else
+ fun_l2_n1(x)
+ end
+end
+
+def fun_l1_n772(x)
+ if (x < 1)
+ fun_l2_n457(x)
+ else
+ fun_l2_n571(x)
+ end
+end
+
+def fun_l1_n773(x)
+ if (x < 1)
+ fun_l2_n88(x)
+ else
+ fun_l2_n622(x)
+ end
+end
+
+def fun_l1_n774(x)
+ if (x < 1)
+ fun_l2_n459(x)
+ else
+ fun_l2_n446(x)
+ end
+end
+
+def fun_l1_n775(x)
+ if (x < 1)
+ fun_l2_n400(x)
+ else
+ fun_l2_n918(x)
+ end
+end
+
+def fun_l1_n776(x)
+ if (x < 1)
+ fun_l2_n752(x)
+ else
+ fun_l2_n696(x)
+ end
+end
+
+def fun_l1_n777(x)
+ if (x < 1)
+ fun_l2_n968(x)
+ else
+ fun_l2_n988(x)
+ end
+end
+
+def fun_l1_n778(x)
+ if (x < 1)
+ fun_l2_n242(x)
+ else
+ fun_l2_n496(x)
+ end
+end
+
+def fun_l1_n779(x)
+ if (x < 1)
+ fun_l2_n106(x)
+ else
+ fun_l2_n637(x)
+ end
+end
+
+def fun_l1_n780(x)
+ if (x < 1)
+ fun_l2_n945(x)
+ else
+ fun_l2_n238(x)
+ end
+end
+
+def fun_l1_n781(x)
+ if (x < 1)
+ fun_l2_n269(x)
+ else
+ fun_l2_n582(x)
+ end
+end
+
+def fun_l1_n782(x)
+ if (x < 1)
+ fun_l2_n523(x)
+ else
+ fun_l2_n201(x)
+ end
+end
+
+def fun_l1_n783(x)
+ if (x < 1)
+ fun_l2_n326(x)
+ else
+ fun_l2_n744(x)
+ end
+end
+
+def fun_l1_n784(x)
+ if (x < 1)
+ fun_l2_n49(x)
+ else
+ fun_l2_n943(x)
+ end
+end
+
+def fun_l1_n785(x)
+ if (x < 1)
+ fun_l2_n975(x)
+ else
+ fun_l2_n560(x)
+ end
+end
+
+def fun_l1_n786(x)
+ if (x < 1)
+ fun_l2_n843(x)
+ else
+ fun_l2_n240(x)
+ end
+end
+
+def fun_l1_n787(x)
+ if (x < 1)
+ fun_l2_n179(x)
+ else
+ fun_l2_n423(x)
+ end
+end
+
+def fun_l1_n788(x)
+ if (x < 1)
+ fun_l2_n536(x)
+ else
+ fun_l2_n112(x)
+ end
+end
+
+def fun_l1_n789(x)
+ if (x < 1)
+ fun_l2_n418(x)
+ else
+ fun_l2_n443(x)
+ end
+end
+
+def fun_l1_n790(x)
+ if (x < 1)
+ fun_l2_n770(x)
+ else
+ fun_l2_n127(x)
+ end
+end
+
+def fun_l1_n791(x)
+ if (x < 1)
+ fun_l2_n425(x)
+ else
+ fun_l2_n364(x)
+ end
+end
+
+def fun_l1_n792(x)
+ if (x < 1)
+ fun_l2_n841(x)
+ else
+ fun_l2_n112(x)
+ end
+end
+
+def fun_l1_n793(x)
+ if (x < 1)
+ fun_l2_n64(x)
+ else
+ fun_l2_n294(x)
+ end
+end
+
+def fun_l1_n794(x)
+ if (x < 1)
+ fun_l2_n837(x)
+ else
+ fun_l2_n325(x)
+ end
+end
+
+def fun_l1_n795(x)
+ if (x < 1)
+ fun_l2_n522(x)
+ else
+ fun_l2_n307(x)
+ end
+end
+
+def fun_l1_n796(x)
+ if (x < 1)
+ fun_l2_n526(x)
+ else
+ fun_l2_n957(x)
+ end
+end
+
+def fun_l1_n797(x)
+ if (x < 1)
+ fun_l2_n71(x)
+ else
+ fun_l2_n871(x)
+ end
+end
+
+def fun_l1_n798(x)
+ if (x < 1)
+ fun_l2_n386(x)
+ else
+ fun_l2_n354(x)
+ end
+end
+
+def fun_l1_n799(x)
+ if (x < 1)
+ fun_l2_n669(x)
+ else
+ fun_l2_n237(x)
+ end
+end
+
+def fun_l1_n800(x)
+ if (x < 1)
+ fun_l2_n455(x)
+ else
+ fun_l2_n549(x)
+ end
+end
+
+def fun_l1_n801(x)
+ if (x < 1)
+ fun_l2_n708(x)
+ else
+ fun_l2_n611(x)
+ end
+end
+
+def fun_l1_n802(x)
+ if (x < 1)
+ fun_l2_n35(x)
+ else
+ fun_l2_n239(x)
+ end
+end
+
+def fun_l1_n803(x)
+ if (x < 1)
+ fun_l2_n890(x)
+ else
+ fun_l2_n27(x)
+ end
+end
+
+def fun_l1_n804(x)
+ if (x < 1)
+ fun_l2_n378(x)
+ else
+ fun_l2_n567(x)
+ end
+end
+
+def fun_l1_n805(x)
+ if (x < 1)
+ fun_l2_n672(x)
+ else
+ fun_l2_n320(x)
+ end
+end
+
+def fun_l1_n806(x)
+ if (x < 1)
+ fun_l2_n207(x)
+ else
+ fun_l2_n691(x)
+ end
+end
+
+def fun_l1_n807(x)
+ if (x < 1)
+ fun_l2_n180(x)
+ else
+ fun_l2_n912(x)
+ end
+end
+
+def fun_l1_n808(x)
+ if (x < 1)
+ fun_l2_n370(x)
+ else
+ fun_l2_n529(x)
+ end
+end
+
+def fun_l1_n809(x)
+ if (x < 1)
+ fun_l2_n436(x)
+ else
+ fun_l2_n465(x)
+ end
+end
+
+def fun_l1_n810(x)
+ if (x < 1)
+ fun_l2_n820(x)
+ else
+ fun_l2_n995(x)
+ end
+end
+
+def fun_l1_n811(x)
+ if (x < 1)
+ fun_l2_n821(x)
+ else
+ fun_l2_n898(x)
+ end
+end
+
+def fun_l1_n812(x)
+ if (x < 1)
+ fun_l2_n376(x)
+ else
+ fun_l2_n999(x)
+ end
+end
+
+def fun_l1_n813(x)
+ if (x < 1)
+ fun_l2_n643(x)
+ else
+ fun_l2_n478(x)
+ end
+end
+
+def fun_l1_n814(x)
+ if (x < 1)
+ fun_l2_n475(x)
+ else
+ fun_l2_n137(x)
+ end
+end
+
+def fun_l1_n815(x)
+ if (x < 1)
+ fun_l2_n117(x)
+ else
+ fun_l2_n685(x)
+ end
+end
+
+def fun_l1_n816(x)
+ if (x < 1)
+ fun_l2_n451(x)
+ else
+ fun_l2_n643(x)
+ end
+end
+
+def fun_l1_n817(x)
+ if (x < 1)
+ fun_l2_n22(x)
+ else
+ fun_l2_n939(x)
+ end
+end
+
+def fun_l1_n818(x)
+ if (x < 1)
+ fun_l2_n586(x)
+ else
+ fun_l2_n206(x)
+ end
+end
+
+def fun_l1_n819(x)
+ if (x < 1)
+ fun_l2_n443(x)
+ else
+ fun_l2_n661(x)
+ end
+end
+
+def fun_l1_n820(x)
+ if (x < 1)
+ fun_l2_n656(x)
+ else
+ fun_l2_n93(x)
+ end
+end
+
+def fun_l1_n821(x)
+ if (x < 1)
+ fun_l2_n794(x)
+ else
+ fun_l2_n354(x)
+ end
+end
+
+def fun_l1_n822(x)
+ if (x < 1)
+ fun_l2_n519(x)
+ else
+ fun_l2_n446(x)
+ end
+end
+
+def fun_l1_n823(x)
+ if (x < 1)
+ fun_l2_n0(x)
+ else
+ fun_l2_n233(x)
+ end
+end
+
+def fun_l1_n824(x)
+ if (x < 1)
+ fun_l2_n376(x)
+ else
+ fun_l2_n186(x)
+ end
+end
+
+def fun_l1_n825(x)
+ if (x < 1)
+ fun_l2_n292(x)
+ else
+ fun_l2_n303(x)
+ end
+end
+
+def fun_l1_n826(x)
+ if (x < 1)
+ fun_l2_n871(x)
+ else
+ fun_l2_n515(x)
+ end
+end
+
+def fun_l1_n827(x)
+ if (x < 1)
+ fun_l2_n227(x)
+ else
+ fun_l2_n232(x)
+ end
+end
+
+def fun_l1_n828(x)
+ if (x < 1)
+ fun_l2_n860(x)
+ else
+ fun_l2_n341(x)
+ end
+end
+
+def fun_l1_n829(x)
+ if (x < 1)
+ fun_l2_n140(x)
+ else
+ fun_l2_n304(x)
+ end
+end
+
+def fun_l1_n830(x)
+ if (x < 1)
+ fun_l2_n796(x)
+ else
+ fun_l2_n943(x)
+ end
+end
+
+def fun_l1_n831(x)
+ if (x < 1)
+ fun_l2_n71(x)
+ else
+ fun_l2_n8(x)
+ end
+end
+
+def fun_l1_n832(x)
+ if (x < 1)
+ fun_l2_n328(x)
+ else
+ fun_l2_n836(x)
+ end
+end
+
+def fun_l1_n833(x)
+ if (x < 1)
+ fun_l2_n322(x)
+ else
+ fun_l2_n653(x)
+ end
+end
+
+def fun_l1_n834(x)
+ if (x < 1)
+ fun_l2_n471(x)
+ else
+ fun_l2_n147(x)
+ end
+end
+
+def fun_l1_n835(x)
+ if (x < 1)
+ fun_l2_n601(x)
+ else
+ fun_l2_n249(x)
+ end
+end
+
+def fun_l1_n836(x)
+ if (x < 1)
+ fun_l2_n105(x)
+ else
+ fun_l2_n63(x)
+ end
+end
+
+def fun_l1_n837(x)
+ if (x < 1)
+ fun_l2_n773(x)
+ else
+ fun_l2_n597(x)
+ end
+end
+
+def fun_l1_n838(x)
+ if (x < 1)
+ fun_l2_n933(x)
+ else
+ fun_l2_n964(x)
+ end
+end
+
+def fun_l1_n839(x)
+ if (x < 1)
+ fun_l2_n123(x)
+ else
+ fun_l2_n533(x)
+ end
+end
+
+def fun_l1_n840(x)
+ if (x < 1)
+ fun_l2_n94(x)
+ else
+ fun_l2_n127(x)
+ end
+end
+
+def fun_l1_n841(x)
+ if (x < 1)
+ fun_l2_n981(x)
+ else
+ fun_l2_n819(x)
+ end
+end
+
+def fun_l1_n842(x)
+ if (x < 1)
+ fun_l2_n743(x)
+ else
+ fun_l2_n747(x)
+ end
+end
+
+def fun_l1_n843(x)
+ if (x < 1)
+ fun_l2_n735(x)
+ else
+ fun_l2_n110(x)
+ end
+end
+
+def fun_l1_n844(x)
+ if (x < 1)
+ fun_l2_n273(x)
+ else
+ fun_l2_n753(x)
+ end
+end
+
+def fun_l1_n845(x)
+ if (x < 1)
+ fun_l2_n316(x)
+ else
+ fun_l2_n391(x)
+ end
+end
+
+def fun_l1_n846(x)
+ if (x < 1)
+ fun_l2_n221(x)
+ else
+ fun_l2_n251(x)
+ end
+end
+
+def fun_l1_n847(x)
+ if (x < 1)
+ fun_l2_n795(x)
+ else
+ fun_l2_n513(x)
+ end
+end
+
+def fun_l1_n848(x)
+ if (x < 1)
+ fun_l2_n986(x)
+ else
+ fun_l2_n472(x)
+ end
+end
+
+def fun_l1_n849(x)
+ if (x < 1)
+ fun_l2_n863(x)
+ else
+ fun_l2_n759(x)
+ end
+end
+
+def fun_l1_n850(x)
+ if (x < 1)
+ fun_l2_n512(x)
+ else
+ fun_l2_n502(x)
+ end
+end
+
+def fun_l1_n851(x)
+ if (x < 1)
+ fun_l2_n561(x)
+ else
+ fun_l2_n697(x)
+ end
+end
+
+def fun_l1_n852(x)
+ if (x < 1)
+ fun_l2_n816(x)
+ else
+ fun_l2_n90(x)
+ end
+end
+
+def fun_l1_n853(x)
+ if (x < 1)
+ fun_l2_n656(x)
+ else
+ fun_l2_n174(x)
+ end
+end
+
+def fun_l1_n854(x)
+ if (x < 1)
+ fun_l2_n439(x)
+ else
+ fun_l2_n90(x)
+ end
+end
+
+def fun_l1_n855(x)
+ if (x < 1)
+ fun_l2_n15(x)
+ else
+ fun_l2_n402(x)
+ end
+end
+
+def fun_l1_n856(x)
+ if (x < 1)
+ fun_l2_n224(x)
+ else
+ fun_l2_n177(x)
+ end
+end
+
+def fun_l1_n857(x)
+ if (x < 1)
+ fun_l2_n675(x)
+ else
+ fun_l2_n113(x)
+ end
+end
+
+def fun_l1_n858(x)
+ if (x < 1)
+ fun_l2_n388(x)
+ else
+ fun_l2_n529(x)
+ end
+end
+
+def fun_l1_n859(x)
+ if (x < 1)
+ fun_l2_n628(x)
+ else
+ fun_l2_n93(x)
+ end
+end
+
+def fun_l1_n860(x)
+ if (x < 1)
+ fun_l2_n67(x)
+ else
+ fun_l2_n90(x)
+ end
+end
+
+def fun_l1_n861(x)
+ if (x < 1)
+ fun_l2_n637(x)
+ else
+ fun_l2_n68(x)
+ end
+end
+
+def fun_l1_n862(x)
+ if (x < 1)
+ fun_l2_n767(x)
+ else
+ fun_l2_n86(x)
+ end
+end
+
+def fun_l1_n863(x)
+ if (x < 1)
+ fun_l2_n50(x)
+ else
+ fun_l2_n777(x)
+ end
+end
+
+def fun_l1_n864(x)
+ if (x < 1)
+ fun_l2_n846(x)
+ else
+ fun_l2_n783(x)
+ end
+end
+
+def fun_l1_n865(x)
+ if (x < 1)
+ fun_l2_n756(x)
+ else
+ fun_l2_n703(x)
+ end
+end
+
+def fun_l1_n866(x)
+ if (x < 1)
+ fun_l2_n972(x)
+ else
+ fun_l2_n249(x)
+ end
+end
+
+def fun_l1_n867(x)
+ if (x < 1)
+ fun_l2_n636(x)
+ else
+ fun_l2_n841(x)
+ end
+end
+
+def fun_l1_n868(x)
+ if (x < 1)
+ fun_l2_n889(x)
+ else
+ fun_l2_n899(x)
+ end
+end
+
+def fun_l1_n869(x)
+ if (x < 1)
+ fun_l2_n55(x)
+ else
+ fun_l2_n45(x)
+ end
+end
+
+def fun_l1_n870(x)
+ if (x < 1)
+ fun_l2_n740(x)
+ else
+ fun_l2_n722(x)
+ end
+end
+
+def fun_l1_n871(x)
+ if (x < 1)
+ fun_l2_n865(x)
+ else
+ fun_l2_n695(x)
+ end
+end
+
+def fun_l1_n872(x)
+ if (x < 1)
+ fun_l2_n54(x)
+ else
+ fun_l2_n581(x)
+ end
+end
+
+def fun_l1_n873(x)
+ if (x < 1)
+ fun_l2_n328(x)
+ else
+ fun_l2_n861(x)
+ end
+end
+
+def fun_l1_n874(x)
+ if (x < 1)
+ fun_l2_n645(x)
+ else
+ fun_l2_n121(x)
+ end
+end
+
+def fun_l1_n875(x)
+ if (x < 1)
+ fun_l2_n71(x)
+ else
+ fun_l2_n329(x)
+ end
+end
+
+def fun_l1_n876(x)
+ if (x < 1)
+ fun_l2_n944(x)
+ else
+ fun_l2_n95(x)
+ end
+end
+
+def fun_l1_n877(x)
+ if (x < 1)
+ fun_l2_n270(x)
+ else
+ fun_l2_n801(x)
+ end
+end
+
+def fun_l1_n878(x)
+ if (x < 1)
+ fun_l2_n115(x)
+ else
+ fun_l2_n414(x)
+ end
+end
+
+def fun_l1_n879(x)
+ if (x < 1)
+ fun_l2_n154(x)
+ else
+ fun_l2_n605(x)
+ end
+end
+
+def fun_l1_n880(x)
+ if (x < 1)
+ fun_l2_n859(x)
+ else
+ fun_l2_n307(x)
+ end
+end
+
+def fun_l1_n881(x)
+ if (x < 1)
+ fun_l2_n443(x)
+ else
+ fun_l2_n267(x)
+ end
+end
+
+def fun_l1_n882(x)
+ if (x < 1)
+ fun_l2_n280(x)
+ else
+ fun_l2_n175(x)
+ end
+end
+
+def fun_l1_n883(x)
+ if (x < 1)
+ fun_l2_n176(x)
+ else
+ fun_l2_n286(x)
+ end
+end
+
+def fun_l1_n884(x)
+ if (x < 1)
+ fun_l2_n422(x)
+ else
+ fun_l2_n469(x)
+ end
+end
+
+def fun_l1_n885(x)
+ if (x < 1)
+ fun_l2_n532(x)
+ else
+ fun_l2_n795(x)
+ end
+end
+
+def fun_l1_n886(x)
+ if (x < 1)
+ fun_l2_n966(x)
+ else
+ fun_l2_n46(x)
+ end
+end
+
+def fun_l1_n887(x)
+ if (x < 1)
+ fun_l2_n446(x)
+ else
+ fun_l2_n944(x)
+ end
+end
+
+def fun_l1_n888(x)
+ if (x < 1)
+ fun_l2_n256(x)
+ else
+ fun_l2_n757(x)
+ end
+end
+
+def fun_l1_n889(x)
+ if (x < 1)
+ fun_l2_n566(x)
+ else
+ fun_l2_n992(x)
+ end
+end
+
+def fun_l1_n890(x)
+ if (x < 1)
+ fun_l2_n55(x)
+ else
+ fun_l2_n121(x)
+ end
+end
+
+def fun_l1_n891(x)
+ if (x < 1)
+ fun_l2_n597(x)
+ else
+ fun_l2_n257(x)
+ end
+end
+
+def fun_l1_n892(x)
+ if (x < 1)
+ fun_l2_n79(x)
+ else
+ fun_l2_n249(x)
+ end
+end
+
+def fun_l1_n893(x)
+ if (x < 1)
+ fun_l2_n436(x)
+ else
+ fun_l2_n738(x)
+ end
+end
+
+def fun_l1_n894(x)
+ if (x < 1)
+ fun_l2_n244(x)
+ else
+ fun_l2_n184(x)
+ end
+end
+
+def fun_l1_n895(x)
+ if (x < 1)
+ fun_l2_n342(x)
+ else
+ fun_l2_n794(x)
+ end
+end
+
+def fun_l1_n896(x)
+ if (x < 1)
+ fun_l2_n588(x)
+ else
+ fun_l2_n235(x)
+ end
+end
+
+def fun_l1_n897(x)
+ if (x < 1)
+ fun_l2_n443(x)
+ else
+ fun_l2_n462(x)
+ end
+end
+
+def fun_l1_n898(x)
+ if (x < 1)
+ fun_l2_n986(x)
+ else
+ fun_l2_n282(x)
+ end
+end
+
+def fun_l1_n899(x)
+ if (x < 1)
+ fun_l2_n61(x)
+ else
+ fun_l2_n516(x)
+ end
+end
+
+def fun_l1_n900(x)
+ if (x < 1)
+ fun_l2_n993(x)
+ else
+ fun_l2_n337(x)
+ end
+end
+
+def fun_l1_n901(x)
+ if (x < 1)
+ fun_l2_n398(x)
+ else
+ fun_l2_n425(x)
+ end
+end
+
+def fun_l1_n902(x)
+ if (x < 1)
+ fun_l2_n177(x)
+ else
+ fun_l2_n741(x)
+ end
+end
+
+def fun_l1_n903(x)
+ if (x < 1)
+ fun_l2_n597(x)
+ else
+ fun_l2_n331(x)
+ end
+end
+
+def fun_l1_n904(x)
+ if (x < 1)
+ fun_l2_n740(x)
+ else
+ fun_l2_n527(x)
+ end
+end
+
+def fun_l1_n905(x)
+ if (x < 1)
+ fun_l2_n138(x)
+ else
+ fun_l2_n248(x)
+ end
+end
+
+def fun_l1_n906(x)
+ if (x < 1)
+ fun_l2_n318(x)
+ else
+ fun_l2_n941(x)
+ end
+end
+
+def fun_l1_n907(x)
+ if (x < 1)
+ fun_l2_n493(x)
+ else
+ fun_l2_n376(x)
+ end
+end
+
+def fun_l1_n908(x)
+ if (x < 1)
+ fun_l2_n899(x)
+ else
+ fun_l2_n745(x)
+ end
+end
+
+def fun_l1_n909(x)
+ if (x < 1)
+ fun_l2_n963(x)
+ else
+ fun_l2_n384(x)
+ end
+end
+
+def fun_l1_n910(x)
+ if (x < 1)
+ fun_l2_n490(x)
+ else
+ fun_l2_n702(x)
+ end
+end
+
+def fun_l1_n911(x)
+ if (x < 1)
+ fun_l2_n712(x)
+ else
+ fun_l2_n810(x)
+ end
+end
+
+def fun_l1_n912(x)
+ if (x < 1)
+ fun_l2_n245(x)
+ else
+ fun_l2_n609(x)
+ end
+end
+
+def fun_l1_n913(x)
+ if (x < 1)
+ fun_l2_n997(x)
+ else
+ fun_l2_n241(x)
+ end
+end
+
+def fun_l1_n914(x)
+ if (x < 1)
+ fun_l2_n428(x)
+ else
+ fun_l2_n697(x)
+ end
+end
+
+def fun_l1_n915(x)
+ if (x < 1)
+ fun_l2_n257(x)
+ else
+ fun_l2_n626(x)
+ end
+end
+
+def fun_l1_n916(x)
+ if (x < 1)
+ fun_l2_n378(x)
+ else
+ fun_l2_n457(x)
+ end
+end
+
+def fun_l1_n917(x)
+ if (x < 1)
+ fun_l2_n378(x)
+ else
+ fun_l2_n958(x)
+ end
+end
+
+def fun_l1_n918(x)
+ if (x < 1)
+ fun_l2_n213(x)
+ else
+ fun_l2_n962(x)
+ end
+end
+
+def fun_l1_n919(x)
+ if (x < 1)
+ fun_l2_n466(x)
+ else
+ fun_l2_n461(x)
+ end
+end
+
+def fun_l1_n920(x)
+ if (x < 1)
+ fun_l2_n835(x)
+ else
+ fun_l2_n460(x)
+ end
+end
+
+def fun_l1_n921(x)
+ if (x < 1)
+ fun_l2_n642(x)
+ else
+ fun_l2_n680(x)
+ end
+end
+
+def fun_l1_n922(x)
+ if (x < 1)
+ fun_l2_n467(x)
+ else
+ fun_l2_n225(x)
+ end
+end
+
+def fun_l1_n923(x)
+ if (x < 1)
+ fun_l2_n752(x)
+ else
+ fun_l2_n462(x)
+ end
+end
+
+def fun_l1_n924(x)
+ if (x < 1)
+ fun_l2_n113(x)
+ else
+ fun_l2_n59(x)
+ end
+end
+
+def fun_l1_n925(x)
+ if (x < 1)
+ fun_l2_n329(x)
+ else
+ fun_l2_n994(x)
+ end
+end
+
+def fun_l1_n926(x)
+ if (x < 1)
+ fun_l2_n815(x)
+ else
+ fun_l2_n249(x)
+ end
+end
+
+def fun_l1_n927(x)
+ if (x < 1)
+ fun_l2_n216(x)
+ else
+ fun_l2_n591(x)
+ end
+end
+
+def fun_l1_n928(x)
+ if (x < 1)
+ fun_l2_n441(x)
+ else
+ fun_l2_n437(x)
+ end
+end
+
+def fun_l1_n929(x)
+ if (x < 1)
+ fun_l2_n433(x)
+ else
+ fun_l2_n185(x)
+ end
+end
+
+def fun_l1_n930(x)
+ if (x < 1)
+ fun_l2_n125(x)
+ else
+ fun_l2_n940(x)
+ end
+end
+
+def fun_l1_n931(x)
+ if (x < 1)
+ fun_l2_n203(x)
+ else
+ fun_l2_n292(x)
+ end
+end
+
+def fun_l1_n932(x)
+ if (x < 1)
+ fun_l2_n986(x)
+ else
+ fun_l2_n234(x)
+ end
+end
+
+def fun_l1_n933(x)
+ if (x < 1)
+ fun_l2_n735(x)
+ else
+ fun_l2_n20(x)
+ end
+end
+
+def fun_l1_n934(x)
+ if (x < 1)
+ fun_l2_n878(x)
+ else
+ fun_l2_n166(x)
+ end
+end
+
+def fun_l1_n935(x)
+ if (x < 1)
+ fun_l2_n123(x)
+ else
+ fun_l2_n52(x)
+ end
+end
+
+def fun_l1_n936(x)
+ if (x < 1)
+ fun_l2_n99(x)
+ else
+ fun_l2_n336(x)
+ end
+end
+
+def fun_l1_n937(x)
+ if (x < 1)
+ fun_l2_n731(x)
+ else
+ fun_l2_n363(x)
+ end
+end
+
+def fun_l1_n938(x)
+ if (x < 1)
+ fun_l2_n988(x)
+ else
+ fun_l2_n978(x)
+ end
+end
+
+def fun_l1_n939(x)
+ if (x < 1)
+ fun_l2_n592(x)
+ else
+ fun_l2_n932(x)
+ end
+end
+
+def fun_l1_n940(x)
+ if (x < 1)
+ fun_l2_n681(x)
+ else
+ fun_l2_n868(x)
+ end
+end
+
+def fun_l1_n941(x)
+ if (x < 1)
+ fun_l2_n863(x)
+ else
+ fun_l2_n457(x)
+ end
+end
+
+def fun_l1_n942(x)
+ if (x < 1)
+ fun_l2_n526(x)
+ else
+ fun_l2_n960(x)
+ end
+end
+
+def fun_l1_n943(x)
+ if (x < 1)
+ fun_l2_n859(x)
+ else
+ fun_l2_n478(x)
+ end
+end
+
+def fun_l1_n944(x)
+ if (x < 1)
+ fun_l2_n947(x)
+ else
+ fun_l2_n889(x)
+ end
+end
+
+def fun_l1_n945(x)
+ if (x < 1)
+ fun_l2_n845(x)
+ else
+ fun_l2_n211(x)
+ end
+end
+
+def fun_l1_n946(x)
+ if (x < 1)
+ fun_l2_n445(x)
+ else
+ fun_l2_n600(x)
+ end
+end
+
+def fun_l1_n947(x)
+ if (x < 1)
+ fun_l2_n932(x)
+ else
+ fun_l2_n534(x)
+ end
+end
+
+def fun_l1_n948(x)
+ if (x < 1)
+ fun_l2_n224(x)
+ else
+ fun_l2_n32(x)
+ end
+end
+
+def fun_l1_n949(x)
+ if (x < 1)
+ fun_l2_n63(x)
+ else
+ fun_l2_n121(x)
+ end
+end
+
+def fun_l1_n950(x)
+ if (x < 1)
+ fun_l2_n55(x)
+ else
+ fun_l2_n90(x)
+ end
+end
+
+def fun_l1_n951(x)
+ if (x < 1)
+ fun_l2_n880(x)
+ else
+ fun_l2_n936(x)
+ end
+end
+
+def fun_l1_n952(x)
+ if (x < 1)
+ fun_l2_n971(x)
+ else
+ fun_l2_n40(x)
+ end
+end
+
+def fun_l1_n953(x)
+ if (x < 1)
+ fun_l2_n880(x)
+ else
+ fun_l2_n200(x)
+ end
+end
+
+def fun_l1_n954(x)
+ if (x < 1)
+ fun_l2_n60(x)
+ else
+ fun_l2_n473(x)
+ end
+end
+
+def fun_l1_n955(x)
+ if (x < 1)
+ fun_l2_n855(x)
+ else
+ fun_l2_n601(x)
+ end
+end
+
+def fun_l1_n956(x)
+ if (x < 1)
+ fun_l2_n282(x)
+ else
+ fun_l2_n542(x)
+ end
+end
+
+def fun_l1_n957(x)
+ if (x < 1)
+ fun_l2_n116(x)
+ else
+ fun_l2_n584(x)
+ end
+end
+
+def fun_l1_n958(x)
+ if (x < 1)
+ fun_l2_n845(x)
+ else
+ fun_l2_n814(x)
+ end
+end
+
+def fun_l1_n959(x)
+ if (x < 1)
+ fun_l2_n443(x)
+ else
+ fun_l2_n239(x)
+ end
+end
+
+def fun_l1_n960(x)
+ if (x < 1)
+ fun_l2_n79(x)
+ else
+ fun_l2_n556(x)
+ end
+end
+
+def fun_l1_n961(x)
+ if (x < 1)
+ fun_l2_n664(x)
+ else
+ fun_l2_n282(x)
+ end
+end
+
+def fun_l1_n962(x)
+ if (x < 1)
+ fun_l2_n273(x)
+ else
+ fun_l2_n393(x)
+ end
+end
+
+def fun_l1_n963(x)
+ if (x < 1)
+ fun_l2_n120(x)
+ else
+ fun_l2_n506(x)
+ end
+end
+
+def fun_l1_n964(x)
+ if (x < 1)
+ fun_l2_n362(x)
+ else
+ fun_l2_n631(x)
+ end
+end
+
+def fun_l1_n965(x)
+ if (x < 1)
+ fun_l2_n219(x)
+ else
+ fun_l2_n260(x)
+ end
+end
+
+def fun_l1_n966(x)
+ if (x < 1)
+ fun_l2_n802(x)
+ else
+ fun_l2_n732(x)
+ end
+end
+
+def fun_l1_n967(x)
+ if (x < 1)
+ fun_l2_n761(x)
+ else
+ fun_l2_n580(x)
+ end
+end
+
+def fun_l1_n968(x)
+ if (x < 1)
+ fun_l2_n529(x)
+ else
+ fun_l2_n783(x)
+ end
+end
+
+def fun_l1_n969(x)
+ if (x < 1)
+ fun_l2_n138(x)
+ else
+ fun_l2_n434(x)
+ end
+end
+
+def fun_l1_n970(x)
+ if (x < 1)
+ fun_l2_n266(x)
+ else
+ fun_l2_n522(x)
+ end
+end
+
+def fun_l1_n971(x)
+ if (x < 1)
+ fun_l2_n352(x)
+ else
+ fun_l2_n51(x)
+ end
+end
+
+def fun_l1_n972(x)
+ if (x < 1)
+ fun_l2_n619(x)
+ else
+ fun_l2_n68(x)
+ end
+end
+
+def fun_l1_n973(x)
+ if (x < 1)
+ fun_l2_n510(x)
+ else
+ fun_l2_n74(x)
+ end
+end
+
+def fun_l1_n974(x)
+ if (x < 1)
+ fun_l2_n442(x)
+ else
+ fun_l2_n258(x)
+ end
+end
+
+def fun_l1_n975(x)
+ if (x < 1)
+ fun_l2_n106(x)
+ else
+ fun_l2_n364(x)
+ end
+end
+
+def fun_l1_n976(x)
+ if (x < 1)
+ fun_l2_n412(x)
+ else
+ fun_l2_n669(x)
+ end
+end
+
+def fun_l1_n977(x)
+ if (x < 1)
+ fun_l2_n394(x)
+ else
+ fun_l2_n435(x)
+ end
+end
+
+def fun_l1_n978(x)
+ if (x < 1)
+ fun_l2_n630(x)
+ else
+ fun_l2_n686(x)
+ end
+end
+
+def fun_l1_n979(x)
+ if (x < 1)
+ fun_l2_n683(x)
+ else
+ fun_l2_n99(x)
+ end
+end
+
+def fun_l1_n980(x)
+ if (x < 1)
+ fun_l2_n352(x)
+ else
+ fun_l2_n394(x)
+ end
+end
+
+def fun_l1_n981(x)
+ if (x < 1)
+ fun_l2_n856(x)
+ else
+ fun_l2_n11(x)
+ end
+end
+
+def fun_l1_n982(x)
+ if (x < 1)
+ fun_l2_n484(x)
+ else
+ fun_l2_n230(x)
+ end
+end
+
+def fun_l1_n983(x)
+ if (x < 1)
+ fun_l2_n609(x)
+ else
+ fun_l2_n882(x)
+ end
+end
+
+def fun_l1_n984(x)
+ if (x < 1)
+ fun_l2_n529(x)
+ else
+ fun_l2_n589(x)
+ end
+end
+
+def fun_l1_n985(x)
+ if (x < 1)
+ fun_l2_n545(x)
+ else
+ fun_l2_n139(x)
+ end
+end
+
+def fun_l1_n986(x)
+ if (x < 1)
+ fun_l2_n679(x)
+ else
+ fun_l2_n938(x)
+ end
+end
+
+def fun_l1_n987(x)
+ if (x < 1)
+ fun_l2_n803(x)
+ else
+ fun_l2_n454(x)
+ end
+end
+
+def fun_l1_n988(x)
+ if (x < 1)
+ fun_l2_n403(x)
+ else
+ fun_l2_n976(x)
+ end
+end
+
+def fun_l1_n989(x)
+ if (x < 1)
+ fun_l2_n364(x)
+ else
+ fun_l2_n96(x)
+ end
+end
+
+def fun_l1_n990(x)
+ if (x < 1)
+ fun_l2_n48(x)
+ else
+ fun_l2_n442(x)
+ end
+end
+
+def fun_l1_n991(x)
+ if (x < 1)
+ fun_l2_n842(x)
+ else
+ fun_l2_n810(x)
+ end
+end
+
+def fun_l1_n992(x)
+ if (x < 1)
+ fun_l2_n237(x)
+ else
+ fun_l2_n145(x)
+ end
+end
+
+def fun_l1_n993(x)
+ if (x < 1)
+ fun_l2_n279(x)
+ else
+ fun_l2_n783(x)
+ end
+end
+
+def fun_l1_n994(x)
+ if (x < 1)
+ fun_l2_n323(x)
+ else
+ fun_l2_n829(x)
+ end
+end
+
+def fun_l1_n995(x)
+ if (x < 1)
+ fun_l2_n904(x)
+ else
+ fun_l2_n738(x)
+ end
+end
+
+def fun_l1_n996(x)
+ if (x < 1)
+ fun_l2_n390(x)
+ else
+ fun_l2_n169(x)
+ end
+end
+
+def fun_l1_n997(x)
+ if (x < 1)
+ fun_l2_n583(x)
+ else
+ fun_l2_n993(x)
+ end
+end
+
+def fun_l1_n998(x)
+ if (x < 1)
+ fun_l2_n752(x)
+ else
+ fun_l2_n240(x)
+ end
+end
+
+def fun_l1_n999(x)
+ if (x < 1)
+ fun_l2_n489(x)
+ else
+ fun_l2_n175(x)
+ end
+end
+
+def fun_l2_n0(x)
+ if (x < 1)
+ fun_l3_n293(x)
+ else
+ fun_l3_n569(x)
+ end
+end
+
+def fun_l2_n1(x)
+ if (x < 1)
+ fun_l3_n310(x)
+ else
+ fun_l3_n785(x)
+ end
+end
+
+def fun_l2_n2(x)
+ if (x < 1)
+ fun_l3_n484(x)
+ else
+ fun_l3_n800(x)
+ end
+end
+
+def fun_l2_n3(x)
+ if (x < 1)
+ fun_l3_n353(x)
+ else
+ fun_l3_n871(x)
+ end
+end
+
+def fun_l2_n4(x)
+ if (x < 1)
+ fun_l3_n100(x)
+ else
+ fun_l3_n796(x)
+ end
+end
+
+def fun_l2_n5(x)
+ if (x < 1)
+ fun_l3_n547(x)
+ else
+ fun_l3_n663(x)
+ end
+end
+
+def fun_l2_n6(x)
+ if (x < 1)
+ fun_l3_n756(x)
+ else
+ fun_l3_n69(x)
+ end
+end
+
+def fun_l2_n7(x)
+ if (x < 1)
+ fun_l3_n393(x)
+ else
+ fun_l3_n333(x)
+ end
+end
+
+def fun_l2_n8(x)
+ if (x < 1)
+ fun_l3_n167(x)
+ else
+ fun_l3_n47(x)
+ end
+end
+
+def fun_l2_n9(x)
+ if (x < 1)
+ fun_l3_n969(x)
+ else
+ fun_l3_n772(x)
+ end
+end
+
+def fun_l2_n10(x)
+ if (x < 1)
+ fun_l3_n667(x)
+ else
+ fun_l3_n62(x)
+ end
+end
+
+def fun_l2_n11(x)
+ if (x < 1)
+ fun_l3_n671(x)
+ else
+ fun_l3_n303(x)
+ end
+end
+
+def fun_l2_n12(x)
+ if (x < 1)
+ fun_l3_n116(x)
+ else
+ fun_l3_n537(x)
+ end
+end
+
+def fun_l2_n13(x)
+ if (x < 1)
+ fun_l3_n363(x)
+ else
+ fun_l3_n426(x)
+ end
+end
+
+def fun_l2_n14(x)
+ if (x < 1)
+ fun_l3_n23(x)
+ else
+ fun_l3_n800(x)
+ end
+end
+
+def fun_l2_n15(x)
+ if (x < 1)
+ fun_l3_n344(x)
+ else
+ fun_l3_n590(x)
+ end
+end
+
+def fun_l2_n16(x)
+ if (x < 1)
+ fun_l3_n759(x)
+ else
+ fun_l3_n531(x)
+ end
+end
+
+def fun_l2_n17(x)
+ if (x < 1)
+ fun_l3_n902(x)
+ else
+ fun_l3_n948(x)
+ end
+end
+
+def fun_l2_n18(x)
+ if (x < 1)
+ fun_l3_n407(x)
+ else
+ fun_l3_n743(x)
+ end
+end
+
+def fun_l2_n19(x)
+ if (x < 1)
+ fun_l3_n360(x)
+ else
+ fun_l3_n953(x)
+ end
+end
+
+def fun_l2_n20(x)
+ if (x < 1)
+ fun_l3_n968(x)
+ else
+ fun_l3_n685(x)
+ end
+end
+
+def fun_l2_n21(x)
+ if (x < 1)
+ fun_l3_n964(x)
+ else
+ fun_l3_n210(x)
+ end
+end
+
+def fun_l2_n22(x)
+ if (x < 1)
+ fun_l3_n346(x)
+ else
+ fun_l3_n902(x)
+ end
+end
+
+def fun_l2_n23(x)
+ if (x < 1)
+ fun_l3_n154(x)
+ else
+ fun_l3_n52(x)
+ end
+end
+
+def fun_l2_n24(x)
+ if (x < 1)
+ fun_l3_n229(x)
+ else
+ fun_l3_n137(x)
+ end
+end
+
+def fun_l2_n25(x)
+ if (x < 1)
+ fun_l3_n390(x)
+ else
+ fun_l3_n445(x)
+ end
+end
+
+def fun_l2_n26(x)
+ if (x < 1)
+ fun_l3_n11(x)
+ else
+ fun_l3_n113(x)
+ end
+end
+
+def fun_l2_n27(x)
+ if (x < 1)
+ fun_l3_n756(x)
+ else
+ fun_l3_n935(x)
+ end
+end
+
+def fun_l2_n28(x)
+ if (x < 1)
+ fun_l3_n567(x)
+ else
+ fun_l3_n984(x)
+ end
+end
+
+def fun_l2_n29(x)
+ if (x < 1)
+ fun_l3_n982(x)
+ else
+ fun_l3_n335(x)
+ end
+end
+
+def fun_l2_n30(x)
+ if (x < 1)
+ fun_l3_n78(x)
+ else
+ fun_l3_n571(x)
+ end
+end
+
+def fun_l2_n31(x)
+ if (x < 1)
+ fun_l3_n93(x)
+ else
+ fun_l3_n455(x)
+ end
+end
+
+def fun_l2_n32(x)
+ if (x < 1)
+ fun_l3_n118(x)
+ else
+ fun_l3_n713(x)
+ end
+end
+
+def fun_l2_n33(x)
+ if (x < 1)
+ fun_l3_n561(x)
+ else
+ fun_l3_n0(x)
+ end
+end
+
+def fun_l2_n34(x)
+ if (x < 1)
+ fun_l3_n153(x)
+ else
+ fun_l3_n77(x)
+ end
+end
+
+def fun_l2_n35(x)
+ if (x < 1)
+ fun_l3_n815(x)
+ else
+ fun_l3_n642(x)
+ end
+end
+
+def fun_l2_n36(x)
+ if (x < 1)
+ fun_l3_n503(x)
+ else
+ fun_l3_n428(x)
+ end
+end
+
+def fun_l2_n37(x)
+ if (x < 1)
+ fun_l3_n780(x)
+ else
+ fun_l3_n301(x)
+ end
+end
+
+def fun_l2_n38(x)
+ if (x < 1)
+ fun_l3_n827(x)
+ else
+ fun_l3_n444(x)
+ end
+end
+
+def fun_l2_n39(x)
+ if (x < 1)
+ fun_l3_n808(x)
+ else
+ fun_l3_n76(x)
+ end
+end
+
+def fun_l2_n40(x)
+ if (x < 1)
+ fun_l3_n216(x)
+ else
+ fun_l3_n943(x)
+ end
+end
+
+def fun_l2_n41(x)
+ if (x < 1)
+ fun_l3_n237(x)
+ else
+ fun_l3_n935(x)
+ end
+end
+
+def fun_l2_n42(x)
+ if (x < 1)
+ fun_l3_n769(x)
+ else
+ fun_l3_n564(x)
+ end
+end
+
+def fun_l2_n43(x)
+ if (x < 1)
+ fun_l3_n108(x)
+ else
+ fun_l3_n180(x)
+ end
+end
+
+def fun_l2_n44(x)
+ if (x < 1)
+ fun_l3_n750(x)
+ else
+ fun_l3_n614(x)
+ end
+end
+
+def fun_l2_n45(x)
+ if (x < 1)
+ fun_l3_n497(x)
+ else
+ fun_l3_n584(x)
+ end
+end
+
+def fun_l2_n46(x)
+ if (x < 1)
+ fun_l3_n364(x)
+ else
+ fun_l3_n218(x)
+ end
+end
+
+def fun_l2_n47(x)
+ if (x < 1)
+ fun_l3_n938(x)
+ else
+ fun_l3_n707(x)
+ end
+end
+
+def fun_l2_n48(x)
+ if (x < 1)
+ fun_l3_n14(x)
+ else
+ fun_l3_n178(x)
+ end
+end
+
+def fun_l2_n49(x)
+ if (x < 1)
+ fun_l3_n923(x)
+ else
+ fun_l3_n493(x)
+ end
+end
+
+def fun_l2_n50(x)
+ if (x < 1)
+ fun_l3_n481(x)
+ else
+ fun_l3_n193(x)
+ end
+end
+
+def fun_l2_n51(x)
+ if (x < 1)
+ fun_l3_n876(x)
+ else
+ fun_l3_n59(x)
+ end
+end
+
+def fun_l2_n52(x)
+ if (x < 1)
+ fun_l3_n930(x)
+ else
+ fun_l3_n813(x)
+ end
+end
+
+def fun_l2_n53(x)
+ if (x < 1)
+ fun_l3_n369(x)
+ else
+ fun_l3_n972(x)
+ end
+end
+
+def fun_l2_n54(x)
+ if (x < 1)
+ fun_l3_n95(x)
+ else
+ fun_l3_n573(x)
+ end
+end
+
+def fun_l2_n55(x)
+ if (x < 1)
+ fun_l3_n148(x)
+ else
+ fun_l3_n369(x)
+ end
+end
+
+def fun_l2_n56(x)
+ if (x < 1)
+ fun_l3_n476(x)
+ else
+ fun_l3_n54(x)
+ end
+end
+
+def fun_l2_n57(x)
+ if (x < 1)
+ fun_l3_n672(x)
+ else
+ fun_l3_n592(x)
+ end
+end
+
+def fun_l2_n58(x)
+ if (x < 1)
+ fun_l3_n648(x)
+ else
+ fun_l3_n169(x)
+ end
+end
+
+def fun_l2_n59(x)
+ if (x < 1)
+ fun_l3_n844(x)
+ else
+ fun_l3_n422(x)
+ end
+end
+
+def fun_l2_n60(x)
+ if (x < 1)
+ fun_l3_n6(x)
+ else
+ fun_l3_n763(x)
+ end
+end
+
+def fun_l2_n61(x)
+ if (x < 1)
+ fun_l3_n35(x)
+ else
+ fun_l3_n316(x)
+ end
+end
+
+def fun_l2_n62(x)
+ if (x < 1)
+ fun_l3_n487(x)
+ else
+ fun_l3_n469(x)
+ end
+end
+
+def fun_l2_n63(x)
+ if (x < 1)
+ fun_l3_n272(x)
+ else
+ fun_l3_n909(x)
+ end
+end
+
+def fun_l2_n64(x)
+ if (x < 1)
+ fun_l3_n266(x)
+ else
+ fun_l3_n347(x)
+ end
+end
+
+def fun_l2_n65(x)
+ if (x < 1)
+ fun_l3_n696(x)
+ else
+ fun_l3_n499(x)
+ end
+end
+
+def fun_l2_n66(x)
+ if (x < 1)
+ fun_l3_n523(x)
+ else
+ fun_l3_n834(x)
+ end
+end
+
+def fun_l2_n67(x)
+ if (x < 1)
+ fun_l3_n966(x)
+ else
+ fun_l3_n454(x)
+ end
+end
+
+def fun_l2_n68(x)
+ if (x < 1)
+ fun_l3_n406(x)
+ else
+ fun_l3_n644(x)
+ end
+end
+
+def fun_l2_n69(x)
+ if (x < 1)
+ fun_l3_n616(x)
+ else
+ fun_l3_n90(x)
+ end
+end
+
+def fun_l2_n70(x)
+ if (x < 1)
+ fun_l3_n158(x)
+ else
+ fun_l3_n910(x)
+ end
+end
+
+def fun_l2_n71(x)
+ if (x < 1)
+ fun_l3_n391(x)
+ else
+ fun_l3_n761(x)
+ end
+end
+
+def fun_l2_n72(x)
+ if (x < 1)
+ fun_l3_n585(x)
+ else
+ fun_l3_n405(x)
+ end
+end
+
+def fun_l2_n73(x)
+ if (x < 1)
+ fun_l3_n227(x)
+ else
+ fun_l3_n583(x)
+ end
+end
+
+def fun_l2_n74(x)
+ if (x < 1)
+ fun_l3_n580(x)
+ else
+ fun_l3_n110(x)
+ end
+end
+
+def fun_l2_n75(x)
+ if (x < 1)
+ fun_l3_n393(x)
+ else
+ fun_l3_n643(x)
+ end
+end
+
+def fun_l2_n76(x)
+ if (x < 1)
+ fun_l3_n935(x)
+ else
+ fun_l3_n593(x)
+ end
+end
+
+def fun_l2_n77(x)
+ if (x < 1)
+ fun_l3_n239(x)
+ else
+ fun_l3_n704(x)
+ end
+end
+
+def fun_l2_n78(x)
+ if (x < 1)
+ fun_l3_n192(x)
+ else
+ fun_l3_n722(x)
+ end
+end
+
+def fun_l2_n79(x)
+ if (x < 1)
+ fun_l3_n119(x)
+ else
+ fun_l3_n426(x)
+ end
+end
+
+def fun_l2_n80(x)
+ if (x < 1)
+ fun_l3_n692(x)
+ else
+ fun_l3_n895(x)
+ end
+end
+
+def fun_l2_n81(x)
+ if (x < 1)
+ fun_l3_n246(x)
+ else
+ fun_l3_n340(x)
+ end
+end
+
+def fun_l2_n82(x)
+ if (x < 1)
+ fun_l3_n368(x)
+ else
+ fun_l3_n255(x)
+ end
+end
+
+def fun_l2_n83(x)
+ if (x < 1)
+ fun_l3_n942(x)
+ else
+ fun_l3_n595(x)
+ end
+end
+
+def fun_l2_n84(x)
+ if (x < 1)
+ fun_l3_n629(x)
+ else
+ fun_l3_n622(x)
+ end
+end
+
+def fun_l2_n85(x)
+ if (x < 1)
+ fun_l3_n415(x)
+ else
+ fun_l3_n615(x)
+ end
+end
+
+def fun_l2_n86(x)
+ if (x < 1)
+ fun_l3_n295(x)
+ else
+ fun_l3_n809(x)
+ end
+end
+
+def fun_l2_n87(x)
+ if (x < 1)
+ fun_l3_n957(x)
+ else
+ fun_l3_n452(x)
+ end
+end
+
+def fun_l2_n88(x)
+ if (x < 1)
+ fun_l3_n490(x)
+ else
+ fun_l3_n184(x)
+ end
+end
+
+def fun_l2_n89(x)
+ if (x < 1)
+ fun_l3_n483(x)
+ else
+ fun_l3_n963(x)
+ end
+end
+
+def fun_l2_n90(x)
+ if (x < 1)
+ fun_l3_n262(x)
+ else
+ fun_l3_n458(x)
+ end
+end
+
+def fun_l2_n91(x)
+ if (x < 1)
+ fun_l3_n277(x)
+ else
+ fun_l3_n30(x)
+ end
+end
+
+def fun_l2_n92(x)
+ if (x < 1)
+ fun_l3_n310(x)
+ else
+ fun_l3_n215(x)
+ end
+end
+
+def fun_l2_n93(x)
+ if (x < 1)
+ fun_l3_n660(x)
+ else
+ fun_l3_n798(x)
+ end
+end
+
+def fun_l2_n94(x)
+ if (x < 1)
+ fun_l3_n761(x)
+ else
+ fun_l3_n10(x)
+ end
+end
+
+def fun_l2_n95(x)
+ if (x < 1)
+ fun_l3_n4(x)
+ else
+ fun_l3_n65(x)
+ end
+end
+
+def fun_l2_n96(x)
+ if (x < 1)
+ fun_l3_n444(x)
+ else
+ fun_l3_n378(x)
+ end
+end
+
+def fun_l2_n97(x)
+ if (x < 1)
+ fun_l3_n119(x)
+ else
+ fun_l3_n96(x)
+ end
+end
+
+def fun_l2_n98(x)
+ if (x < 1)
+ fun_l3_n970(x)
+ else
+ fun_l3_n471(x)
+ end
+end
+
+def fun_l2_n99(x)
+ if (x < 1)
+ fun_l3_n544(x)
+ else
+ fun_l3_n1(x)
+ end
+end
+
+def fun_l2_n100(x)
+ if (x < 1)
+ fun_l3_n253(x)
+ else
+ fun_l3_n332(x)
+ end
+end
+
+def fun_l2_n101(x)
+ if (x < 1)
+ fun_l3_n69(x)
+ else
+ fun_l3_n946(x)
+ end
+end
+
+def fun_l2_n102(x)
+ if (x < 1)
+ fun_l3_n458(x)
+ else
+ fun_l3_n885(x)
+ end
+end
+
+def fun_l2_n103(x)
+ if (x < 1)
+ fun_l3_n732(x)
+ else
+ fun_l3_n601(x)
+ end
+end
+
+def fun_l2_n104(x)
+ if (x < 1)
+ fun_l3_n737(x)
+ else
+ fun_l3_n530(x)
+ end
+end
+
+def fun_l2_n105(x)
+ if (x < 1)
+ fun_l3_n125(x)
+ else
+ fun_l3_n561(x)
+ end
+end
+
+def fun_l2_n106(x)
+ if (x < 1)
+ fun_l3_n717(x)
+ else
+ fun_l3_n660(x)
+ end
+end
+
+def fun_l2_n107(x)
+ if (x < 1)
+ fun_l3_n863(x)
+ else
+ fun_l3_n211(x)
+ end
+end
+
+def fun_l2_n108(x)
+ if (x < 1)
+ fun_l3_n221(x)
+ else
+ fun_l3_n718(x)
+ end
+end
+
+def fun_l2_n109(x)
+ if (x < 1)
+ fun_l3_n100(x)
+ else
+ fun_l3_n673(x)
+ end
+end
+
+def fun_l2_n110(x)
+ if (x < 1)
+ fun_l3_n434(x)
+ else
+ fun_l3_n348(x)
+ end
+end
+
+def fun_l2_n111(x)
+ if (x < 1)
+ fun_l3_n923(x)
+ else
+ fun_l3_n413(x)
+ end
+end
+
+def fun_l2_n112(x)
+ if (x < 1)
+ fun_l3_n253(x)
+ else
+ fun_l3_n461(x)
+ end
+end
+
+def fun_l2_n113(x)
+ if (x < 1)
+ fun_l3_n946(x)
+ else
+ fun_l3_n406(x)
+ end
+end
+
+def fun_l2_n114(x)
+ if (x < 1)
+ fun_l3_n976(x)
+ else
+ fun_l3_n354(x)
+ end
+end
+
+def fun_l2_n115(x)
+ if (x < 1)
+ fun_l3_n205(x)
+ else
+ fun_l3_n798(x)
+ end
+end
+
+def fun_l2_n116(x)
+ if (x < 1)
+ fun_l3_n304(x)
+ else
+ fun_l3_n145(x)
+ end
+end
+
+def fun_l2_n117(x)
+ if (x < 1)
+ fun_l3_n917(x)
+ else
+ fun_l3_n276(x)
+ end
+end
+
+def fun_l2_n118(x)
+ if (x < 1)
+ fun_l3_n880(x)
+ else
+ fun_l3_n532(x)
+ end
+end
+
+def fun_l2_n119(x)
+ if (x < 1)
+ fun_l3_n39(x)
+ else
+ fun_l3_n549(x)
+ end
+end
+
+def fun_l2_n120(x)
+ if (x < 1)
+ fun_l3_n325(x)
+ else
+ fun_l3_n250(x)
+ end
+end
+
+def fun_l2_n121(x)
+ if (x < 1)
+ fun_l3_n953(x)
+ else
+ fun_l3_n259(x)
+ end
+end
+
+def fun_l2_n122(x)
+ if (x < 1)
+ fun_l3_n572(x)
+ else
+ fun_l3_n747(x)
+ end
+end
+
+def fun_l2_n123(x)
+ if (x < 1)
+ fun_l3_n639(x)
+ else
+ fun_l3_n810(x)
+ end
+end
+
+def fun_l2_n124(x)
+ if (x < 1)
+ fun_l3_n954(x)
+ else
+ fun_l3_n814(x)
+ end
+end
+
+def fun_l2_n125(x)
+ if (x < 1)
+ fun_l3_n932(x)
+ else
+ fun_l3_n275(x)
+ end
+end
+
+def fun_l2_n126(x)
+ if (x < 1)
+ fun_l3_n472(x)
+ else
+ fun_l3_n184(x)
+ end
+end
+
+def fun_l2_n127(x)
+ if (x < 1)
+ fun_l3_n725(x)
+ else
+ fun_l3_n497(x)
+ end
+end
+
+def fun_l2_n128(x)
+ if (x < 1)
+ fun_l3_n94(x)
+ else
+ fun_l3_n801(x)
+ end
+end
+
+def fun_l2_n129(x)
+ if (x < 1)
+ fun_l3_n476(x)
+ else
+ fun_l3_n936(x)
+ end
+end
+
+def fun_l2_n130(x)
+ if (x < 1)
+ fun_l3_n706(x)
+ else
+ fun_l3_n738(x)
+ end
+end
+
+def fun_l2_n131(x)
+ if (x < 1)
+ fun_l3_n535(x)
+ else
+ fun_l3_n401(x)
+ end
+end
+
+def fun_l2_n132(x)
+ if (x < 1)
+ fun_l3_n459(x)
+ else
+ fun_l3_n998(x)
+ end
+end
+
+def fun_l2_n133(x)
+ if (x < 1)
+ fun_l3_n158(x)
+ else
+ fun_l3_n288(x)
+ end
+end
+
+def fun_l2_n134(x)
+ if (x < 1)
+ fun_l3_n47(x)
+ else
+ fun_l3_n104(x)
+ end
+end
+
+def fun_l2_n135(x)
+ if (x < 1)
+ fun_l3_n154(x)
+ else
+ fun_l3_n239(x)
+ end
+end
+
+def fun_l2_n136(x)
+ if (x < 1)
+ fun_l3_n634(x)
+ else
+ fun_l3_n718(x)
+ end
+end
+
+def fun_l2_n137(x)
+ if (x < 1)
+ fun_l3_n867(x)
+ else
+ fun_l3_n578(x)
+ end
+end
+
+def fun_l2_n138(x)
+ if (x < 1)
+ fun_l3_n905(x)
+ else
+ fun_l3_n434(x)
+ end
+end
+
+def fun_l2_n139(x)
+ if (x < 1)
+ fun_l3_n596(x)
+ else
+ fun_l3_n516(x)
+ end
+end
+
+def fun_l2_n140(x)
+ if (x < 1)
+ fun_l3_n150(x)
+ else
+ fun_l3_n901(x)
+ end
+end
+
+def fun_l2_n141(x)
+ if (x < 1)
+ fun_l3_n792(x)
+ else
+ fun_l3_n50(x)
+ end
+end
+
+def fun_l2_n142(x)
+ if (x < 1)
+ fun_l3_n539(x)
+ else
+ fun_l3_n206(x)
+ end
+end
+
+def fun_l2_n143(x)
+ if (x < 1)
+ fun_l3_n690(x)
+ else
+ fun_l3_n788(x)
+ end
+end
+
+def fun_l2_n144(x)
+ if (x < 1)
+ fun_l3_n535(x)
+ else
+ fun_l3_n868(x)
+ end
+end
+
+def fun_l2_n145(x)
+ if (x < 1)
+ fun_l3_n869(x)
+ else
+ fun_l3_n865(x)
+ end
+end
+
+def fun_l2_n146(x)
+ if (x < 1)
+ fun_l3_n574(x)
+ else
+ fun_l3_n798(x)
+ end
+end
+
+def fun_l2_n147(x)
+ if (x < 1)
+ fun_l3_n876(x)
+ else
+ fun_l3_n658(x)
+ end
+end
+
+def fun_l2_n148(x)
+ if (x < 1)
+ fun_l3_n582(x)
+ else
+ fun_l3_n694(x)
+ end
+end
+
+def fun_l2_n149(x)
+ if (x < 1)
+ fun_l3_n137(x)
+ else
+ fun_l3_n187(x)
+ end
+end
+
+def fun_l2_n150(x)
+ if (x < 1)
+ fun_l3_n30(x)
+ else
+ fun_l3_n666(x)
+ end
+end
+
+def fun_l2_n151(x)
+ if (x < 1)
+ fun_l3_n264(x)
+ else
+ fun_l3_n236(x)
+ end
+end
+
+def fun_l2_n152(x)
+ if (x < 1)
+ fun_l3_n984(x)
+ else
+ fun_l3_n469(x)
+ end
+end
+
+def fun_l2_n153(x)
+ if (x < 1)
+ fun_l3_n152(x)
+ else
+ fun_l3_n578(x)
+ end
+end
+
+def fun_l2_n154(x)
+ if (x < 1)
+ fun_l3_n452(x)
+ else
+ fun_l3_n807(x)
+ end
+end
+
+def fun_l2_n155(x)
+ if (x < 1)
+ fun_l3_n82(x)
+ else
+ fun_l3_n589(x)
+ end
+end
+
+def fun_l2_n156(x)
+ if (x < 1)
+ fun_l3_n356(x)
+ else
+ fun_l3_n454(x)
+ end
+end
+
+def fun_l2_n157(x)
+ if (x < 1)
+ fun_l3_n814(x)
+ else
+ fun_l3_n376(x)
+ end
+end
+
+def fun_l2_n158(x)
+ if (x < 1)
+ fun_l3_n755(x)
+ else
+ fun_l3_n966(x)
+ end
+end
+
+def fun_l2_n159(x)
+ if (x < 1)
+ fun_l3_n167(x)
+ else
+ fun_l3_n571(x)
+ end
+end
+
+def fun_l2_n160(x)
+ if (x < 1)
+ fun_l3_n919(x)
+ else
+ fun_l3_n771(x)
+ end
+end
+
+def fun_l2_n161(x)
+ if (x < 1)
+ fun_l3_n147(x)
+ else
+ fun_l3_n936(x)
+ end
+end
+
+def fun_l2_n162(x)
+ if (x < 1)
+ fun_l3_n638(x)
+ else
+ fun_l3_n23(x)
+ end
+end
+
+def fun_l2_n163(x)
+ if (x < 1)
+ fun_l3_n349(x)
+ else
+ fun_l3_n46(x)
+ end
+end
+
+def fun_l2_n164(x)
+ if (x < 1)
+ fun_l3_n55(x)
+ else
+ fun_l3_n795(x)
+ end
+end
+
+def fun_l2_n165(x)
+ if (x < 1)
+ fun_l3_n131(x)
+ else
+ fun_l3_n233(x)
+ end
+end
+
+def fun_l2_n166(x)
+ if (x < 1)
+ fun_l3_n324(x)
+ else
+ fun_l3_n215(x)
+ end
+end
+
+def fun_l2_n167(x)
+ if (x < 1)
+ fun_l3_n244(x)
+ else
+ fun_l3_n641(x)
+ end
+end
+
+def fun_l2_n168(x)
+ if (x < 1)
+ fun_l3_n744(x)
+ else
+ fun_l3_n337(x)
+ end
+end
+
+def fun_l2_n169(x)
+ if (x < 1)
+ fun_l3_n760(x)
+ else
+ fun_l3_n82(x)
+ end
+end
+
+def fun_l2_n170(x)
+ if (x < 1)
+ fun_l3_n877(x)
+ else
+ fun_l3_n566(x)
+ end
+end
+
+def fun_l2_n171(x)
+ if (x < 1)
+ fun_l3_n211(x)
+ else
+ fun_l3_n101(x)
+ end
+end
+
+def fun_l2_n172(x)
+ if (x < 1)
+ fun_l3_n143(x)
+ else
+ fun_l3_n537(x)
+ end
+end
+
+def fun_l2_n173(x)
+ if (x < 1)
+ fun_l3_n210(x)
+ else
+ fun_l3_n150(x)
+ end
+end
+
+def fun_l2_n174(x)
+ if (x < 1)
+ fun_l3_n772(x)
+ else
+ fun_l3_n42(x)
+ end
+end
+
+def fun_l2_n175(x)
+ if (x < 1)
+ fun_l3_n482(x)
+ else
+ fun_l3_n606(x)
+ end
+end
+
+def fun_l2_n176(x)
+ if (x < 1)
+ fun_l3_n68(x)
+ else
+ fun_l3_n888(x)
+ end
+end
+
+def fun_l2_n177(x)
+ if (x < 1)
+ fun_l3_n313(x)
+ else
+ fun_l3_n947(x)
+ end
+end
+
+def fun_l2_n178(x)
+ if (x < 1)
+ fun_l3_n116(x)
+ else
+ fun_l3_n812(x)
+ end
+end
+
+def fun_l2_n179(x)
+ if (x < 1)
+ fun_l3_n741(x)
+ else
+ fun_l3_n994(x)
+ end
+end
+
+def fun_l2_n180(x)
+ if (x < 1)
+ fun_l3_n667(x)
+ else
+ fun_l3_n335(x)
+ end
+end
+
+def fun_l2_n181(x)
+ if (x < 1)
+ fun_l3_n994(x)
+ else
+ fun_l3_n502(x)
+ end
+end
+
+def fun_l2_n182(x)
+ if (x < 1)
+ fun_l3_n528(x)
+ else
+ fun_l3_n272(x)
+ end
+end
+
+def fun_l2_n183(x)
+ if (x < 1)
+ fun_l3_n649(x)
+ else
+ fun_l3_n200(x)
+ end
+end
+
+def fun_l2_n184(x)
+ if (x < 1)
+ fun_l3_n105(x)
+ else
+ fun_l3_n897(x)
+ end
+end
+
+def fun_l2_n185(x)
+ if (x < 1)
+ fun_l3_n980(x)
+ else
+ fun_l3_n651(x)
+ end
+end
+
+def fun_l2_n186(x)
+ if (x < 1)
+ fun_l3_n835(x)
+ else
+ fun_l3_n388(x)
+ end
+end
+
+def fun_l2_n187(x)
+ if (x < 1)
+ fun_l3_n769(x)
+ else
+ fun_l3_n162(x)
+ end
+end
+
+def fun_l2_n188(x)
+ if (x < 1)
+ fun_l3_n934(x)
+ else
+ fun_l3_n874(x)
+ end
+end
+
+def fun_l2_n189(x)
+ if (x < 1)
+ fun_l3_n407(x)
+ else
+ fun_l3_n180(x)
+ end
+end
+
+def fun_l2_n190(x)
+ if (x < 1)
+ fun_l3_n594(x)
+ else
+ fun_l3_n929(x)
+ end
+end
+
+def fun_l2_n191(x)
+ if (x < 1)
+ fun_l3_n303(x)
+ else
+ fun_l3_n528(x)
+ end
+end
+
+def fun_l2_n192(x)
+ if (x < 1)
+ fun_l3_n768(x)
+ else
+ fun_l3_n226(x)
+ end
+end
+
+def fun_l2_n193(x)
+ if (x < 1)
+ fun_l3_n618(x)
+ else
+ fun_l3_n821(x)
+ end
+end
+
+def fun_l2_n194(x)
+ if (x < 1)
+ fun_l3_n953(x)
+ else
+ fun_l3_n969(x)
+ end
+end
+
+def fun_l2_n195(x)
+ if (x < 1)
+ fun_l3_n574(x)
+ else
+ fun_l3_n344(x)
+ end
+end
+
+def fun_l2_n196(x)
+ if (x < 1)
+ fun_l3_n943(x)
+ else
+ fun_l3_n304(x)
+ end
+end
+
+def fun_l2_n197(x)
+ if (x < 1)
+ fun_l3_n276(x)
+ else
+ fun_l3_n502(x)
+ end
+end
+
+def fun_l2_n198(x)
+ if (x < 1)
+ fun_l3_n597(x)
+ else
+ fun_l3_n197(x)
+ end
+end
+
+def fun_l2_n199(x)
+ if (x < 1)
+ fun_l3_n517(x)
+ else
+ fun_l3_n34(x)
+ end
+end
+
+def fun_l2_n200(x)
+ if (x < 1)
+ fun_l3_n980(x)
+ else
+ fun_l3_n672(x)
+ end
+end
+
+def fun_l2_n201(x)
+ if (x < 1)
+ fun_l3_n510(x)
+ else
+ fun_l3_n804(x)
+ end
+end
+
+def fun_l2_n202(x)
+ if (x < 1)
+ fun_l3_n735(x)
+ else
+ fun_l3_n367(x)
+ end
+end
+
+def fun_l2_n203(x)
+ if (x < 1)
+ fun_l3_n546(x)
+ else
+ fun_l3_n502(x)
+ end
+end
+
+def fun_l2_n204(x)
+ if (x < 1)
+ fun_l3_n189(x)
+ else
+ fun_l3_n639(x)
+ end
+end
+
+def fun_l2_n205(x)
+ if (x < 1)
+ fun_l3_n396(x)
+ else
+ fun_l3_n862(x)
+ end
+end
+
+def fun_l2_n206(x)
+ if (x < 1)
+ fun_l3_n679(x)
+ else
+ fun_l3_n881(x)
+ end
+end
+
+def fun_l2_n207(x)
+ if (x < 1)
+ fun_l3_n342(x)
+ else
+ fun_l3_n522(x)
+ end
+end
+
+def fun_l2_n208(x)
+ if (x < 1)
+ fun_l3_n173(x)
+ else
+ fun_l3_n323(x)
+ end
+end
+
+def fun_l2_n209(x)
+ if (x < 1)
+ fun_l3_n693(x)
+ else
+ fun_l3_n160(x)
+ end
+end
+
+def fun_l2_n210(x)
+ if (x < 1)
+ fun_l3_n827(x)
+ else
+ fun_l3_n580(x)
+ end
+end
+
+def fun_l2_n211(x)
+ if (x < 1)
+ fun_l3_n213(x)
+ else
+ fun_l3_n100(x)
+ end
+end
+
+def fun_l2_n212(x)
+ if (x < 1)
+ fun_l3_n915(x)
+ else
+ fun_l3_n531(x)
+ end
+end
+
+def fun_l2_n213(x)
+ if (x < 1)
+ fun_l3_n260(x)
+ else
+ fun_l3_n279(x)
+ end
+end
+
+def fun_l2_n214(x)
+ if (x < 1)
+ fun_l3_n468(x)
+ else
+ fun_l3_n257(x)
+ end
+end
+
+def fun_l2_n215(x)
+ if (x < 1)
+ fun_l3_n990(x)
+ else
+ fun_l3_n740(x)
+ end
+end
+
+def fun_l2_n216(x)
+ if (x < 1)
+ fun_l3_n291(x)
+ else
+ fun_l3_n625(x)
+ end
+end
+
+def fun_l2_n217(x)
+ if (x < 1)
+ fun_l3_n493(x)
+ else
+ fun_l3_n726(x)
+ end
+end
+
+def fun_l2_n218(x)
+ if (x < 1)
+ fun_l3_n714(x)
+ else
+ fun_l3_n793(x)
+ end
+end
+
+def fun_l2_n219(x)
+ if (x < 1)
+ fun_l3_n683(x)
+ else
+ fun_l3_n715(x)
+ end
+end
+
+def fun_l2_n220(x)
+ if (x < 1)
+ fun_l3_n249(x)
+ else
+ fun_l3_n266(x)
+ end
+end
+
+def fun_l2_n221(x)
+ if (x < 1)
+ fun_l3_n324(x)
+ else
+ fun_l3_n22(x)
+ end
+end
+
+def fun_l2_n222(x)
+ if (x < 1)
+ fun_l3_n978(x)
+ else
+ fun_l3_n885(x)
+ end
+end
+
+def fun_l2_n223(x)
+ if (x < 1)
+ fun_l3_n821(x)
+ else
+ fun_l3_n412(x)
+ end
+end
+
+def fun_l2_n224(x)
+ if (x < 1)
+ fun_l3_n636(x)
+ else
+ fun_l3_n641(x)
+ end
+end
+
+def fun_l2_n225(x)
+ if (x < 1)
+ fun_l3_n971(x)
+ else
+ fun_l3_n288(x)
+ end
+end
+
+def fun_l2_n226(x)
+ if (x < 1)
+ fun_l3_n429(x)
+ else
+ fun_l3_n323(x)
+ end
+end
+
+def fun_l2_n227(x)
+ if (x < 1)
+ fun_l3_n909(x)
+ else
+ fun_l3_n267(x)
+ end
+end
+
+def fun_l2_n228(x)
+ if (x < 1)
+ fun_l3_n437(x)
+ else
+ fun_l3_n985(x)
+ end
+end
+
+def fun_l2_n229(x)
+ if (x < 1)
+ fun_l3_n131(x)
+ else
+ fun_l3_n298(x)
+ end
+end
+
+def fun_l2_n230(x)
+ if (x < 1)
+ fun_l3_n865(x)
+ else
+ fun_l3_n288(x)
+ end
+end
+
+def fun_l2_n231(x)
+ if (x < 1)
+ fun_l3_n772(x)
+ else
+ fun_l3_n531(x)
+ end
+end
+
+def fun_l2_n232(x)
+ if (x < 1)
+ fun_l3_n30(x)
+ else
+ fun_l3_n422(x)
+ end
+end
+
+def fun_l2_n233(x)
+ if (x < 1)
+ fun_l3_n82(x)
+ else
+ fun_l3_n32(x)
+ end
+end
+
+def fun_l2_n234(x)
+ if (x < 1)
+ fun_l3_n25(x)
+ else
+ fun_l3_n518(x)
+ end
+end
+
+def fun_l2_n235(x)
+ if (x < 1)
+ fun_l3_n313(x)
+ else
+ fun_l3_n179(x)
+ end
+end
+
+def fun_l2_n236(x)
+ if (x < 1)
+ fun_l3_n819(x)
+ else
+ fun_l3_n586(x)
+ end
+end
+
+def fun_l2_n237(x)
+ if (x < 1)
+ fun_l3_n398(x)
+ else
+ fun_l3_n921(x)
+ end
+end
+
+def fun_l2_n238(x)
+ if (x < 1)
+ fun_l3_n667(x)
+ else
+ fun_l3_n795(x)
+ end
+end
+
+def fun_l2_n239(x)
+ if (x < 1)
+ fun_l3_n862(x)
+ else
+ fun_l3_n222(x)
+ end
+end
+
+def fun_l2_n240(x)
+ if (x < 1)
+ fun_l3_n968(x)
+ else
+ fun_l3_n320(x)
+ end
+end
+
+def fun_l2_n241(x)
+ if (x < 1)
+ fun_l3_n559(x)
+ else
+ fun_l3_n50(x)
+ end
+end
+
+def fun_l2_n242(x)
+ if (x < 1)
+ fun_l3_n647(x)
+ else
+ fun_l3_n232(x)
+ end
+end
+
+def fun_l2_n243(x)
+ if (x < 1)
+ fun_l3_n425(x)
+ else
+ fun_l3_n815(x)
+ end
+end
+
+def fun_l2_n244(x)
+ if (x < 1)
+ fun_l3_n752(x)
+ else
+ fun_l3_n690(x)
+ end
+end
+
+def fun_l2_n245(x)
+ if (x < 1)
+ fun_l3_n382(x)
+ else
+ fun_l3_n817(x)
+ end
+end
+
+def fun_l2_n246(x)
+ if (x < 1)
+ fun_l3_n880(x)
+ else
+ fun_l3_n380(x)
+ end
+end
+
+def fun_l2_n247(x)
+ if (x < 1)
+ fun_l3_n444(x)
+ else
+ fun_l3_n75(x)
+ end
+end
+
+def fun_l2_n248(x)
+ if (x < 1)
+ fun_l3_n368(x)
+ else
+ fun_l3_n314(x)
+ end
+end
+
+def fun_l2_n249(x)
+ if (x < 1)
+ fun_l3_n131(x)
+ else
+ fun_l3_n398(x)
+ end
+end
+
+def fun_l2_n250(x)
+ if (x < 1)
+ fun_l3_n376(x)
+ else
+ fun_l3_n449(x)
+ end
+end
+
+def fun_l2_n251(x)
+ if (x < 1)
+ fun_l3_n404(x)
+ else
+ fun_l3_n301(x)
+ end
+end
+
+def fun_l2_n252(x)
+ if (x < 1)
+ fun_l3_n274(x)
+ else
+ fun_l3_n430(x)
+ end
+end
+
+def fun_l2_n253(x)
+ if (x < 1)
+ fun_l3_n734(x)
+ else
+ fun_l3_n255(x)
+ end
+end
+
+def fun_l2_n254(x)
+ if (x < 1)
+ fun_l3_n30(x)
+ else
+ fun_l3_n944(x)
+ end
+end
+
+def fun_l2_n255(x)
+ if (x < 1)
+ fun_l3_n978(x)
+ else
+ fun_l3_n898(x)
+ end
+end
+
+def fun_l2_n256(x)
+ if (x < 1)
+ fun_l3_n175(x)
+ else
+ fun_l3_n477(x)
+ end
+end
+
+def fun_l2_n257(x)
+ if (x < 1)
+ fun_l3_n84(x)
+ else
+ fun_l3_n772(x)
+ end
+end
+
+def fun_l2_n258(x)
+ if (x < 1)
+ fun_l3_n605(x)
+ else
+ fun_l3_n144(x)
+ end
+end
+
+def fun_l2_n259(x)
+ if (x < 1)
+ fun_l3_n51(x)
+ else
+ fun_l3_n542(x)
+ end
+end
+
+def fun_l2_n260(x)
+ if (x < 1)
+ fun_l3_n940(x)
+ else
+ fun_l3_n316(x)
+ end
+end
+
+def fun_l2_n261(x)
+ if (x < 1)
+ fun_l3_n702(x)
+ else
+ fun_l3_n197(x)
+ end
+end
+
+def fun_l2_n262(x)
+ if (x < 1)
+ fun_l3_n164(x)
+ else
+ fun_l3_n21(x)
+ end
+end
+
+def fun_l2_n263(x)
+ if (x < 1)
+ fun_l3_n432(x)
+ else
+ fun_l3_n496(x)
+ end
+end
+
+def fun_l2_n264(x)
+ if (x < 1)
+ fun_l3_n265(x)
+ else
+ fun_l3_n40(x)
+ end
+end
+
+def fun_l2_n265(x)
+ if (x < 1)
+ fun_l3_n951(x)
+ else
+ fun_l3_n723(x)
+ end
+end
+
+def fun_l2_n266(x)
+ if (x < 1)
+ fun_l3_n279(x)
+ else
+ fun_l3_n167(x)
+ end
+end
+
+def fun_l2_n267(x)
+ if (x < 1)
+ fun_l3_n51(x)
+ else
+ fun_l3_n283(x)
+ end
+end
+
+def fun_l2_n268(x)
+ if (x < 1)
+ fun_l3_n389(x)
+ else
+ fun_l3_n264(x)
+ end
+end
+
+def fun_l2_n269(x)
+ if (x < 1)
+ fun_l3_n68(x)
+ else
+ fun_l3_n484(x)
+ end
+end
+
+def fun_l2_n270(x)
+ if (x < 1)
+ fun_l3_n435(x)
+ else
+ fun_l3_n204(x)
+ end
+end
+
+def fun_l2_n271(x)
+ if (x < 1)
+ fun_l3_n717(x)
+ else
+ fun_l3_n763(x)
+ end
+end
+
+def fun_l2_n272(x)
+ if (x < 1)
+ fun_l3_n901(x)
+ else
+ fun_l3_n332(x)
+ end
+end
+
+def fun_l2_n273(x)
+ if (x < 1)
+ fun_l3_n358(x)
+ else
+ fun_l3_n608(x)
+ end
+end
+
+def fun_l2_n274(x)
+ if (x < 1)
+ fun_l3_n885(x)
+ else
+ fun_l3_n490(x)
+ end
+end
+
+def fun_l2_n275(x)
+ if (x < 1)
+ fun_l3_n82(x)
+ else
+ fun_l3_n87(x)
+ end
+end
+
+def fun_l2_n276(x)
+ if (x < 1)
+ fun_l3_n698(x)
+ else
+ fun_l3_n846(x)
+ end
+end
+
+def fun_l2_n277(x)
+ if (x < 1)
+ fun_l3_n690(x)
+ else
+ fun_l3_n457(x)
+ end
+end
+
+def fun_l2_n278(x)
+ if (x < 1)
+ fun_l3_n925(x)
+ else
+ fun_l3_n674(x)
+ end
+end
+
+def fun_l2_n279(x)
+ if (x < 1)
+ fun_l3_n797(x)
+ else
+ fun_l3_n315(x)
+ end
+end
+
+def fun_l2_n280(x)
+ if (x < 1)
+ fun_l3_n73(x)
+ else
+ fun_l3_n2(x)
+ end
+end
+
+def fun_l2_n281(x)
+ if (x < 1)
+ fun_l3_n301(x)
+ else
+ fun_l3_n315(x)
+ end
+end
+
+def fun_l2_n282(x)
+ if (x < 1)
+ fun_l3_n473(x)
+ else
+ fun_l3_n639(x)
+ end
+end
+
+def fun_l2_n283(x)
+ if (x < 1)
+ fun_l3_n812(x)
+ else
+ fun_l3_n241(x)
+ end
+end
+
+def fun_l2_n284(x)
+ if (x < 1)
+ fun_l3_n0(x)
+ else
+ fun_l3_n445(x)
+ end
+end
+
+def fun_l2_n285(x)
+ if (x < 1)
+ fun_l3_n587(x)
+ else
+ fun_l3_n806(x)
+ end
+end
+
+def fun_l2_n286(x)
+ if (x < 1)
+ fun_l3_n169(x)
+ else
+ fun_l3_n546(x)
+ end
+end
+
+def fun_l2_n287(x)
+ if (x < 1)
+ fun_l3_n623(x)
+ else
+ fun_l3_n677(x)
+ end
+end
+
+def fun_l2_n288(x)
+ if (x < 1)
+ fun_l3_n804(x)
+ else
+ fun_l3_n80(x)
+ end
+end
+
+def fun_l2_n289(x)
+ if (x < 1)
+ fun_l3_n812(x)
+ else
+ fun_l3_n197(x)
+ end
+end
+
+def fun_l2_n290(x)
+ if (x < 1)
+ fun_l3_n551(x)
+ else
+ fun_l3_n896(x)
+ end
+end
+
+def fun_l2_n291(x)
+ if (x < 1)
+ fun_l3_n686(x)
+ else
+ fun_l3_n884(x)
+ end
+end
+
+def fun_l2_n292(x)
+ if (x < 1)
+ fun_l3_n427(x)
+ else
+ fun_l3_n251(x)
+ end
+end
+
+def fun_l2_n293(x)
+ if (x < 1)
+ fun_l3_n375(x)
+ else
+ fun_l3_n309(x)
+ end
+end
+
+def fun_l2_n294(x)
+ if (x < 1)
+ fun_l3_n371(x)
+ else
+ fun_l3_n184(x)
+ end
+end
+
+def fun_l2_n295(x)
+ if (x < 1)
+ fun_l3_n332(x)
+ else
+ fun_l3_n250(x)
+ end
+end
+
+def fun_l2_n296(x)
+ if (x < 1)
+ fun_l3_n333(x)
+ else
+ fun_l3_n254(x)
+ end
+end
+
+def fun_l2_n297(x)
+ if (x < 1)
+ fun_l3_n24(x)
+ else
+ fun_l3_n528(x)
+ end
+end
+
+def fun_l2_n298(x)
+ if (x < 1)
+ fun_l3_n96(x)
+ else
+ fun_l3_n653(x)
+ end
+end
+
+def fun_l2_n299(x)
+ if (x < 1)
+ fun_l3_n920(x)
+ else
+ fun_l3_n475(x)
+ end
+end
+
+def fun_l2_n300(x)
+ if (x < 1)
+ fun_l3_n337(x)
+ else
+ fun_l3_n378(x)
+ end
+end
+
+def fun_l2_n301(x)
+ if (x < 1)
+ fun_l3_n778(x)
+ else
+ fun_l3_n216(x)
+ end
+end
+
+def fun_l2_n302(x)
+ if (x < 1)
+ fun_l3_n366(x)
+ else
+ fun_l3_n562(x)
+ end
+end
+
+def fun_l2_n303(x)
+ if (x < 1)
+ fun_l3_n656(x)
+ else
+ fun_l3_n779(x)
+ end
+end
+
+def fun_l2_n304(x)
+ if (x < 1)
+ fun_l3_n526(x)
+ else
+ fun_l3_n783(x)
+ end
+end
+
+def fun_l2_n305(x)
+ if (x < 1)
+ fun_l3_n500(x)
+ else
+ fun_l3_n744(x)
+ end
+end
+
+def fun_l2_n306(x)
+ if (x < 1)
+ fun_l3_n953(x)
+ else
+ fun_l3_n394(x)
+ end
+end
+
+def fun_l2_n307(x)
+ if (x < 1)
+ fun_l3_n385(x)
+ else
+ fun_l3_n937(x)
+ end
+end
+
+def fun_l2_n308(x)
+ if (x < 1)
+ fun_l3_n742(x)
+ else
+ fun_l3_n984(x)
+ end
+end
+
+def fun_l2_n309(x)
+ if (x < 1)
+ fun_l3_n388(x)
+ else
+ fun_l3_n704(x)
+ end
+end
+
+def fun_l2_n310(x)
+ if (x < 1)
+ fun_l3_n252(x)
+ else
+ fun_l3_n585(x)
+ end
+end
+
+def fun_l2_n311(x)
+ if (x < 1)
+ fun_l3_n121(x)
+ else
+ fun_l3_n815(x)
+ end
+end
+
+def fun_l2_n312(x)
+ if (x < 1)
+ fun_l3_n657(x)
+ else
+ fun_l3_n338(x)
+ end
+end
+
+def fun_l2_n313(x)
+ if (x < 1)
+ fun_l3_n115(x)
+ else
+ fun_l3_n748(x)
+ end
+end
+
+def fun_l2_n314(x)
+ if (x < 1)
+ fun_l3_n237(x)
+ else
+ fun_l3_n319(x)
+ end
+end
+
+def fun_l2_n315(x)
+ if (x < 1)
+ fun_l3_n684(x)
+ else
+ fun_l3_n428(x)
+ end
+end
+
+def fun_l2_n316(x)
+ if (x < 1)
+ fun_l3_n416(x)
+ else
+ fun_l3_n499(x)
+ end
+end
+
+def fun_l2_n317(x)
+ if (x < 1)
+ fun_l3_n305(x)
+ else
+ fun_l3_n888(x)
+ end
+end
+
+def fun_l2_n318(x)
+ if (x < 1)
+ fun_l3_n506(x)
+ else
+ fun_l3_n579(x)
+ end
+end
+
+def fun_l2_n319(x)
+ if (x < 1)
+ fun_l3_n324(x)
+ else
+ fun_l3_n459(x)
+ end
+end
+
+def fun_l2_n320(x)
+ if (x < 1)
+ fun_l3_n278(x)
+ else
+ fun_l3_n89(x)
+ end
+end
+
+def fun_l2_n321(x)
+ if (x < 1)
+ fun_l3_n319(x)
+ else
+ fun_l3_n903(x)
+ end
+end
+
+def fun_l2_n322(x)
+ if (x < 1)
+ fun_l3_n96(x)
+ else
+ fun_l3_n334(x)
+ end
+end
+
+def fun_l2_n323(x)
+ if (x < 1)
+ fun_l3_n913(x)
+ else
+ fun_l3_n309(x)
+ end
+end
+
+def fun_l2_n324(x)
+ if (x < 1)
+ fun_l3_n186(x)
+ else
+ fun_l3_n453(x)
+ end
+end
+
+def fun_l2_n325(x)
+ if (x < 1)
+ fun_l3_n223(x)
+ else
+ fun_l3_n761(x)
+ end
+end
+
+def fun_l2_n326(x)
+ if (x < 1)
+ fun_l3_n757(x)
+ else
+ fun_l3_n700(x)
+ end
+end
+
+def fun_l2_n327(x)
+ if (x < 1)
+ fun_l3_n316(x)
+ else
+ fun_l3_n3(x)
+ end
+end
+
+def fun_l2_n328(x)
+ if (x < 1)
+ fun_l3_n680(x)
+ else
+ fun_l3_n275(x)
+ end
+end
+
+def fun_l2_n329(x)
+ if (x < 1)
+ fun_l3_n731(x)
+ else
+ fun_l3_n971(x)
+ end
+end
+
+def fun_l2_n330(x)
+ if (x < 1)
+ fun_l3_n672(x)
+ else
+ fun_l3_n389(x)
+ end
+end
+
+def fun_l2_n331(x)
+ if (x < 1)
+ fun_l3_n947(x)
+ else
+ fun_l3_n778(x)
+ end
+end
+
+def fun_l2_n332(x)
+ if (x < 1)
+ fun_l3_n23(x)
+ else
+ fun_l3_n478(x)
+ end
+end
+
+def fun_l2_n333(x)
+ if (x < 1)
+ fun_l3_n778(x)
+ else
+ fun_l3_n894(x)
+ end
+end
+
+def fun_l2_n334(x)
+ if (x < 1)
+ fun_l3_n198(x)
+ else
+ fun_l3_n830(x)
+ end
+end
+
+def fun_l2_n335(x)
+ if (x < 1)
+ fun_l3_n874(x)
+ else
+ fun_l3_n861(x)
+ end
+end
+
+def fun_l2_n336(x)
+ if (x < 1)
+ fun_l3_n66(x)
+ else
+ fun_l3_n47(x)
+ end
+end
+
+def fun_l2_n337(x)
+ if (x < 1)
+ fun_l3_n65(x)
+ else
+ fun_l3_n849(x)
+ end
+end
+
+def fun_l2_n338(x)
+ if (x < 1)
+ fun_l3_n122(x)
+ else
+ fun_l3_n891(x)
+ end
+end
+
+def fun_l2_n339(x)
+ if (x < 1)
+ fun_l3_n377(x)
+ else
+ fun_l3_n862(x)
+ end
+end
+
+def fun_l2_n340(x)
+ if (x < 1)
+ fun_l3_n278(x)
+ else
+ fun_l3_n495(x)
+ end
+end
+
+def fun_l2_n341(x)
+ if (x < 1)
+ fun_l3_n396(x)
+ else
+ fun_l3_n842(x)
+ end
+end
+
+def fun_l2_n342(x)
+ if (x < 1)
+ fun_l3_n971(x)
+ else
+ fun_l3_n296(x)
+ end
+end
+
+def fun_l2_n343(x)
+ if (x < 1)
+ fun_l3_n137(x)
+ else
+ fun_l3_n815(x)
+ end
+end
+
+def fun_l2_n344(x)
+ if (x < 1)
+ fun_l3_n910(x)
+ else
+ fun_l3_n515(x)
+ end
+end
+
+def fun_l2_n345(x)
+ if (x < 1)
+ fun_l3_n415(x)
+ else
+ fun_l3_n766(x)
+ end
+end
+
+def fun_l2_n346(x)
+ if (x < 1)
+ fun_l3_n816(x)
+ else
+ fun_l3_n169(x)
+ end
+end
+
+def fun_l2_n347(x)
+ if (x < 1)
+ fun_l3_n223(x)
+ else
+ fun_l3_n776(x)
+ end
+end
+
+def fun_l2_n348(x)
+ if (x < 1)
+ fun_l3_n316(x)
+ else
+ fun_l3_n497(x)
+ end
+end
+
+def fun_l2_n349(x)
+ if (x < 1)
+ fun_l3_n116(x)
+ else
+ fun_l3_n536(x)
+ end
+end
+
+def fun_l2_n350(x)
+ if (x < 1)
+ fun_l3_n252(x)
+ else
+ fun_l3_n981(x)
+ end
+end
+
+def fun_l2_n351(x)
+ if (x < 1)
+ fun_l3_n783(x)
+ else
+ fun_l3_n596(x)
+ end
+end
+
+def fun_l2_n352(x)
+ if (x < 1)
+ fun_l3_n72(x)
+ else
+ fun_l3_n978(x)
+ end
+end
+
+def fun_l2_n353(x)
+ if (x < 1)
+ fun_l3_n910(x)
+ else
+ fun_l3_n493(x)
+ end
+end
+
+def fun_l2_n354(x)
+ if (x < 1)
+ fun_l3_n671(x)
+ else
+ fun_l3_n297(x)
+ end
+end
+
+def fun_l2_n355(x)
+ if (x < 1)
+ fun_l3_n820(x)
+ else
+ fun_l3_n456(x)
+ end
+end
+
+def fun_l2_n356(x)
+ if (x < 1)
+ fun_l3_n23(x)
+ else
+ fun_l3_n760(x)
+ end
+end
+
+def fun_l2_n357(x)
+ if (x < 1)
+ fun_l3_n676(x)
+ else
+ fun_l3_n531(x)
+ end
+end
+
+def fun_l2_n358(x)
+ if (x < 1)
+ fun_l3_n849(x)
+ else
+ fun_l3_n592(x)
+ end
+end
+
+def fun_l2_n359(x)
+ if (x < 1)
+ fun_l3_n492(x)
+ else
+ fun_l3_n845(x)
+ end
+end
+
+def fun_l2_n360(x)
+ if (x < 1)
+ fun_l3_n58(x)
+ else
+ fun_l3_n896(x)
+ end
+end
+
+def fun_l2_n361(x)
+ if (x < 1)
+ fun_l3_n427(x)
+ else
+ fun_l3_n434(x)
+ end
+end
+
+def fun_l2_n362(x)
+ if (x < 1)
+ fun_l3_n129(x)
+ else
+ fun_l3_n582(x)
+ end
+end
+
+def fun_l2_n363(x)
+ if (x < 1)
+ fun_l3_n901(x)
+ else
+ fun_l3_n405(x)
+ end
+end
+
+def fun_l2_n364(x)
+ if (x < 1)
+ fun_l3_n577(x)
+ else
+ fun_l3_n550(x)
+ end
+end
+
+def fun_l2_n365(x)
+ if (x < 1)
+ fun_l3_n717(x)
+ else
+ fun_l3_n660(x)
+ end
+end
+
+def fun_l2_n366(x)
+ if (x < 1)
+ fun_l3_n605(x)
+ else
+ fun_l3_n755(x)
+ end
+end
+
+def fun_l2_n367(x)
+ if (x < 1)
+ fun_l3_n875(x)
+ else
+ fun_l3_n784(x)
+ end
+end
+
+def fun_l2_n368(x)
+ if (x < 1)
+ fun_l3_n914(x)
+ else
+ fun_l3_n351(x)
+ end
+end
+
+def fun_l2_n369(x)
+ if (x < 1)
+ fun_l3_n684(x)
+ else
+ fun_l3_n932(x)
+ end
+end
+
+def fun_l2_n370(x)
+ if (x < 1)
+ fun_l3_n796(x)
+ else
+ fun_l3_n920(x)
+ end
+end
+
+def fun_l2_n371(x)
+ if (x < 1)
+ fun_l3_n456(x)
+ else
+ fun_l3_n188(x)
+ end
+end
+
+def fun_l2_n372(x)
+ if (x < 1)
+ fun_l3_n891(x)
+ else
+ fun_l3_n905(x)
+ end
+end
+
+def fun_l2_n373(x)
+ if (x < 1)
+ fun_l3_n906(x)
+ else
+ fun_l3_n993(x)
+ end
+end
+
+def fun_l2_n374(x)
+ if (x < 1)
+ fun_l3_n811(x)
+ else
+ fun_l3_n629(x)
+ end
+end
+
+def fun_l2_n375(x)
+ if (x < 1)
+ fun_l3_n5(x)
+ else
+ fun_l3_n304(x)
+ end
+end
+
+def fun_l2_n376(x)
+ if (x < 1)
+ fun_l3_n240(x)
+ else
+ fun_l3_n859(x)
+ end
+end
+
+def fun_l2_n377(x)
+ if (x < 1)
+ fun_l3_n346(x)
+ else
+ fun_l3_n196(x)
+ end
+end
+
+def fun_l2_n378(x)
+ if (x < 1)
+ fun_l3_n918(x)
+ else
+ fun_l3_n371(x)
+ end
+end
+
+def fun_l2_n379(x)
+ if (x < 1)
+ fun_l3_n112(x)
+ else
+ fun_l3_n269(x)
+ end
+end
+
+def fun_l2_n380(x)
+ if (x < 1)
+ fun_l3_n46(x)
+ else
+ fun_l3_n397(x)
+ end
+end
+
+def fun_l2_n381(x)
+ if (x < 1)
+ fun_l3_n977(x)
+ else
+ fun_l3_n647(x)
+ end
+end
+
+def fun_l2_n382(x)
+ if (x < 1)
+ fun_l3_n788(x)
+ else
+ fun_l3_n418(x)
+ end
+end
+
+def fun_l2_n383(x)
+ if (x < 1)
+ fun_l3_n395(x)
+ else
+ fun_l3_n268(x)
+ end
+end
+
+def fun_l2_n384(x)
+ if (x < 1)
+ fun_l3_n39(x)
+ else
+ fun_l3_n950(x)
+ end
+end
+
+def fun_l2_n385(x)
+ if (x < 1)
+ fun_l3_n301(x)
+ else
+ fun_l3_n241(x)
+ end
+end
+
+def fun_l2_n386(x)
+ if (x < 1)
+ fun_l3_n936(x)
+ else
+ fun_l3_n416(x)
+ end
+end
+
+def fun_l2_n387(x)
+ if (x < 1)
+ fun_l3_n750(x)
+ else
+ fun_l3_n152(x)
+ end
+end
+
+def fun_l2_n388(x)
+ if (x < 1)
+ fun_l3_n210(x)
+ else
+ fun_l3_n824(x)
+ end
+end
+
+def fun_l2_n389(x)
+ if (x < 1)
+ fun_l3_n3(x)
+ else
+ fun_l3_n872(x)
+ end
+end
+
+def fun_l2_n390(x)
+ if (x < 1)
+ fun_l3_n944(x)
+ else
+ fun_l3_n49(x)
+ end
+end
+
+def fun_l2_n391(x)
+ if (x < 1)
+ fun_l3_n645(x)
+ else
+ fun_l3_n604(x)
+ end
+end
+
+def fun_l2_n392(x)
+ if (x < 1)
+ fun_l3_n539(x)
+ else
+ fun_l3_n374(x)
+ end
+end
+
+def fun_l2_n393(x)
+ if (x < 1)
+ fun_l3_n728(x)
+ else
+ fun_l3_n620(x)
+ end
+end
+
+def fun_l2_n394(x)
+ if (x < 1)
+ fun_l3_n538(x)
+ else
+ fun_l3_n233(x)
+ end
+end
+
+def fun_l2_n395(x)
+ if (x < 1)
+ fun_l3_n977(x)
+ else
+ fun_l3_n351(x)
+ end
+end
+
+def fun_l2_n396(x)
+ if (x < 1)
+ fun_l3_n54(x)
+ else
+ fun_l3_n958(x)
+ end
+end
+
+def fun_l2_n397(x)
+ if (x < 1)
+ fun_l3_n237(x)
+ else
+ fun_l3_n54(x)
+ end
+end
+
+def fun_l2_n398(x)
+ if (x < 1)
+ fun_l3_n846(x)
+ else
+ fun_l3_n234(x)
+ end
+end
+
+def fun_l2_n399(x)
+ if (x < 1)
+ fun_l3_n934(x)
+ else
+ fun_l3_n128(x)
+ end
+end
+
+def fun_l2_n400(x)
+ if (x < 1)
+ fun_l3_n15(x)
+ else
+ fun_l3_n288(x)
+ end
+end
+
+def fun_l2_n401(x)
+ if (x < 1)
+ fun_l3_n944(x)
+ else
+ fun_l3_n455(x)
+ end
+end
+
+def fun_l2_n402(x)
+ if (x < 1)
+ fun_l3_n962(x)
+ else
+ fun_l3_n785(x)
+ end
+end
+
+def fun_l2_n403(x)
+ if (x < 1)
+ fun_l3_n408(x)
+ else
+ fun_l3_n689(x)
+ end
+end
+
+def fun_l2_n404(x)
+ if (x < 1)
+ fun_l3_n722(x)
+ else
+ fun_l3_n704(x)
+ end
+end
+
+def fun_l2_n405(x)
+ if (x < 1)
+ fun_l3_n410(x)
+ else
+ fun_l3_n543(x)
+ end
+end
+
+def fun_l2_n406(x)
+ if (x < 1)
+ fun_l3_n953(x)
+ else
+ fun_l3_n351(x)
+ end
+end
+
+def fun_l2_n407(x)
+ if (x < 1)
+ fun_l3_n426(x)
+ else
+ fun_l3_n467(x)
+ end
+end
+
+def fun_l2_n408(x)
+ if (x < 1)
+ fun_l3_n204(x)
+ else
+ fun_l3_n163(x)
+ end
+end
+
+def fun_l2_n409(x)
+ if (x < 1)
+ fun_l3_n418(x)
+ else
+ fun_l3_n896(x)
+ end
+end
+
+def fun_l2_n410(x)
+ if (x < 1)
+ fun_l3_n915(x)
+ else
+ fun_l3_n800(x)
+ end
+end
+
+def fun_l2_n411(x)
+ if (x < 1)
+ fun_l3_n580(x)
+ else
+ fun_l3_n507(x)
+ end
+end
+
+def fun_l2_n412(x)
+ if (x < 1)
+ fun_l3_n672(x)
+ else
+ fun_l3_n938(x)
+ end
+end
+
+def fun_l2_n413(x)
+ if (x < 1)
+ fun_l3_n112(x)
+ else
+ fun_l3_n927(x)
+ end
+end
+
+def fun_l2_n414(x)
+ if (x < 1)
+ fun_l3_n801(x)
+ else
+ fun_l3_n604(x)
+ end
+end
+
+def fun_l2_n415(x)
+ if (x < 1)
+ fun_l3_n773(x)
+ else
+ fun_l3_n951(x)
+ end
+end
+
+def fun_l2_n416(x)
+ if (x < 1)
+ fun_l3_n335(x)
+ else
+ fun_l3_n157(x)
+ end
+end
+
+def fun_l2_n417(x)
+ if (x < 1)
+ fun_l3_n480(x)
+ else
+ fun_l3_n106(x)
+ end
+end
+
+def fun_l2_n418(x)
+ if (x < 1)
+ fun_l3_n523(x)
+ else
+ fun_l3_n969(x)
+ end
+end
+
+def fun_l2_n419(x)
+ if (x < 1)
+ fun_l3_n371(x)
+ else
+ fun_l3_n698(x)
+ end
+end
+
+def fun_l2_n420(x)
+ if (x < 1)
+ fun_l3_n102(x)
+ else
+ fun_l3_n47(x)
+ end
+end
+
+def fun_l2_n421(x)
+ if (x < 1)
+ fun_l3_n64(x)
+ else
+ fun_l3_n574(x)
+ end
+end
+
+def fun_l2_n422(x)
+ if (x < 1)
+ fun_l3_n208(x)
+ else
+ fun_l3_n904(x)
+ end
+end
+
+def fun_l2_n423(x)
+ if (x < 1)
+ fun_l3_n715(x)
+ else
+ fun_l3_n414(x)
+ end
+end
+
+def fun_l2_n424(x)
+ if (x < 1)
+ fun_l3_n455(x)
+ else
+ fun_l3_n219(x)
+ end
+end
+
+def fun_l2_n425(x)
+ if (x < 1)
+ fun_l3_n210(x)
+ else
+ fun_l3_n160(x)
+ end
+end
+
+def fun_l2_n426(x)
+ if (x < 1)
+ fun_l3_n729(x)
+ else
+ fun_l3_n512(x)
+ end
+end
+
+def fun_l2_n427(x)
+ if (x < 1)
+ fun_l3_n159(x)
+ else
+ fun_l3_n482(x)
+ end
+end
+
+def fun_l2_n428(x)
+ if (x < 1)
+ fun_l3_n182(x)
+ else
+ fun_l3_n687(x)
+ end
+end
+
+def fun_l2_n429(x)
+ if (x < 1)
+ fun_l3_n690(x)
+ else
+ fun_l3_n856(x)
+ end
+end
+
+def fun_l2_n430(x)
+ if (x < 1)
+ fun_l3_n494(x)
+ else
+ fun_l3_n365(x)
+ end
+end
+
+def fun_l2_n431(x)
+ if (x < 1)
+ fun_l3_n346(x)
+ else
+ fun_l3_n82(x)
+ end
+end
+
+def fun_l2_n432(x)
+ if (x < 1)
+ fun_l3_n311(x)
+ else
+ fun_l3_n412(x)
+ end
+end
+
+def fun_l2_n433(x)
+ if (x < 1)
+ fun_l3_n824(x)
+ else
+ fun_l3_n494(x)
+ end
+end
+
+def fun_l2_n434(x)
+ if (x < 1)
+ fun_l3_n471(x)
+ else
+ fun_l3_n174(x)
+ end
+end
+
+def fun_l2_n435(x)
+ if (x < 1)
+ fun_l3_n10(x)
+ else
+ fun_l3_n319(x)
+ end
+end
+
+def fun_l2_n436(x)
+ if (x < 1)
+ fun_l3_n223(x)
+ else
+ fun_l3_n518(x)
+ end
+end
+
+def fun_l2_n437(x)
+ if (x < 1)
+ fun_l3_n497(x)
+ else
+ fun_l3_n685(x)
+ end
+end
+
+def fun_l2_n438(x)
+ if (x < 1)
+ fun_l3_n639(x)
+ else
+ fun_l3_n695(x)
+ end
+end
+
+def fun_l2_n439(x)
+ if (x < 1)
+ fun_l3_n898(x)
+ else
+ fun_l3_n114(x)
+ end
+end
+
+def fun_l2_n440(x)
+ if (x < 1)
+ fun_l3_n12(x)
+ else
+ fun_l3_n344(x)
+ end
+end
+
+def fun_l2_n441(x)
+ if (x < 1)
+ fun_l3_n556(x)
+ else
+ fun_l3_n684(x)
+ end
+end
+
+def fun_l2_n442(x)
+ if (x < 1)
+ fun_l3_n403(x)
+ else
+ fun_l3_n528(x)
+ end
+end
+
+def fun_l2_n443(x)
+ if (x < 1)
+ fun_l3_n514(x)
+ else
+ fun_l3_n943(x)
+ end
+end
+
+def fun_l2_n444(x)
+ if (x < 1)
+ fun_l3_n218(x)
+ else
+ fun_l3_n94(x)
+ end
+end
+
+def fun_l2_n445(x)
+ if (x < 1)
+ fun_l3_n0(x)
+ else
+ fun_l3_n731(x)
+ end
+end
+
+def fun_l2_n446(x)
+ if (x < 1)
+ fun_l3_n468(x)
+ else
+ fun_l3_n197(x)
+ end
+end
+
+def fun_l2_n447(x)
+ if (x < 1)
+ fun_l3_n79(x)
+ else
+ fun_l3_n900(x)
+ end
+end
+
+def fun_l2_n448(x)
+ if (x < 1)
+ fun_l3_n706(x)
+ else
+ fun_l3_n250(x)
+ end
+end
+
+def fun_l2_n449(x)
+ if (x < 1)
+ fun_l3_n607(x)
+ else
+ fun_l3_n514(x)
+ end
+end
+
+def fun_l2_n450(x)
+ if (x < 1)
+ fun_l3_n855(x)
+ else
+ fun_l3_n223(x)
+ end
+end
+
+def fun_l2_n451(x)
+ if (x < 1)
+ fun_l3_n824(x)
+ else
+ fun_l3_n426(x)
+ end
+end
+
+def fun_l2_n452(x)
+ if (x < 1)
+ fun_l3_n137(x)
+ else
+ fun_l3_n555(x)
+ end
+end
+
+def fun_l2_n453(x)
+ if (x < 1)
+ fun_l3_n553(x)
+ else
+ fun_l3_n130(x)
+ end
+end
+
+def fun_l2_n454(x)
+ if (x < 1)
+ fun_l3_n350(x)
+ else
+ fun_l3_n545(x)
+ end
+end
+
+def fun_l2_n455(x)
+ if (x < 1)
+ fun_l3_n181(x)
+ else
+ fun_l3_n950(x)
+ end
+end
+
+def fun_l2_n456(x)
+ if (x < 1)
+ fun_l3_n581(x)
+ else
+ fun_l3_n957(x)
+ end
+end
+
+def fun_l2_n457(x)
+ if (x < 1)
+ fun_l3_n688(x)
+ else
+ fun_l3_n560(x)
+ end
+end
+
+def fun_l2_n458(x)
+ if (x < 1)
+ fun_l3_n655(x)
+ else
+ fun_l3_n323(x)
+ end
+end
+
+def fun_l2_n459(x)
+ if (x < 1)
+ fun_l3_n92(x)
+ else
+ fun_l3_n796(x)
+ end
+end
+
+def fun_l2_n460(x)
+ if (x < 1)
+ fun_l3_n68(x)
+ else
+ fun_l3_n152(x)
+ end
+end
+
+def fun_l2_n461(x)
+ if (x < 1)
+ fun_l3_n153(x)
+ else
+ fun_l3_n929(x)
+ end
+end
+
+def fun_l2_n462(x)
+ if (x < 1)
+ fun_l3_n401(x)
+ else
+ fun_l3_n248(x)
+ end
+end
+
+def fun_l2_n463(x)
+ if (x < 1)
+ fun_l3_n4(x)
+ else
+ fun_l3_n906(x)
+ end
+end
+
+def fun_l2_n464(x)
+ if (x < 1)
+ fun_l3_n313(x)
+ else
+ fun_l3_n911(x)
+ end
+end
+
+def fun_l2_n465(x)
+ if (x < 1)
+ fun_l3_n490(x)
+ else
+ fun_l3_n430(x)
+ end
+end
+
+def fun_l2_n466(x)
+ if (x < 1)
+ fun_l3_n537(x)
+ else
+ fun_l3_n470(x)
+ end
+end
+
+def fun_l2_n467(x)
+ if (x < 1)
+ fun_l3_n666(x)
+ else
+ fun_l3_n695(x)
+ end
+end
+
+def fun_l2_n468(x)
+ if (x < 1)
+ fun_l3_n126(x)
+ else
+ fun_l3_n201(x)
+ end
+end
+
+def fun_l2_n469(x)
+ if (x < 1)
+ fun_l3_n111(x)
+ else
+ fun_l3_n741(x)
+ end
+end
+
+def fun_l2_n470(x)
+ if (x < 1)
+ fun_l3_n391(x)
+ else
+ fun_l3_n83(x)
+ end
+end
+
+def fun_l2_n471(x)
+ if (x < 1)
+ fun_l3_n619(x)
+ else
+ fun_l3_n425(x)
+ end
+end
+
+def fun_l2_n472(x)
+ if (x < 1)
+ fun_l3_n637(x)
+ else
+ fun_l3_n865(x)
+ end
+end
+
+def fun_l2_n473(x)
+ if (x < 1)
+ fun_l3_n182(x)
+ else
+ fun_l3_n350(x)
+ end
+end
+
+def fun_l2_n474(x)
+ if (x < 1)
+ fun_l3_n752(x)
+ else
+ fun_l3_n815(x)
+ end
+end
+
+def fun_l2_n475(x)
+ if (x < 1)
+ fun_l3_n184(x)
+ else
+ fun_l3_n683(x)
+ end
+end
+
+def fun_l2_n476(x)
+ if (x < 1)
+ fun_l3_n324(x)
+ else
+ fun_l3_n232(x)
+ end
+end
+
+def fun_l2_n477(x)
+ if (x < 1)
+ fun_l3_n588(x)
+ else
+ fun_l3_n586(x)
+ end
+end
+
+def fun_l2_n478(x)
+ if (x < 1)
+ fun_l3_n320(x)
+ else
+ fun_l3_n599(x)
+ end
+end
+
+def fun_l2_n479(x)
+ if (x < 1)
+ fun_l3_n999(x)
+ else
+ fun_l3_n678(x)
+ end
+end
+
+def fun_l2_n480(x)
+ if (x < 1)
+ fun_l3_n523(x)
+ else
+ fun_l3_n637(x)
+ end
+end
+
+def fun_l2_n481(x)
+ if (x < 1)
+ fun_l3_n291(x)
+ else
+ fun_l3_n347(x)
+ end
+end
+
+def fun_l2_n482(x)
+ if (x < 1)
+ fun_l3_n873(x)
+ else
+ fun_l3_n435(x)
+ end
+end
+
+def fun_l2_n483(x)
+ if (x < 1)
+ fun_l3_n718(x)
+ else
+ fun_l3_n903(x)
+ end
+end
+
+def fun_l2_n484(x)
+ if (x < 1)
+ fun_l3_n188(x)
+ else
+ fun_l3_n751(x)
+ end
+end
+
+def fun_l2_n485(x)
+ if (x < 1)
+ fun_l3_n501(x)
+ else
+ fun_l3_n235(x)
+ end
+end
+
+def fun_l2_n486(x)
+ if (x < 1)
+ fun_l3_n578(x)
+ else
+ fun_l3_n224(x)
+ end
+end
+
+def fun_l2_n487(x)
+ if (x < 1)
+ fun_l3_n757(x)
+ else
+ fun_l3_n145(x)
+ end
+end
+
+def fun_l2_n488(x)
+ if (x < 1)
+ fun_l3_n17(x)
+ else
+ fun_l3_n727(x)
+ end
+end
+
+def fun_l2_n489(x)
+ if (x < 1)
+ fun_l3_n699(x)
+ else
+ fun_l3_n102(x)
+ end
+end
+
+def fun_l2_n490(x)
+ if (x < 1)
+ fun_l3_n518(x)
+ else
+ fun_l3_n15(x)
+ end
+end
+
+def fun_l2_n491(x)
+ if (x < 1)
+ fun_l3_n889(x)
+ else
+ fun_l3_n798(x)
+ end
+end
+
+def fun_l2_n492(x)
+ if (x < 1)
+ fun_l3_n715(x)
+ else
+ fun_l3_n27(x)
+ end
+end
+
+def fun_l2_n493(x)
+ if (x < 1)
+ fun_l3_n237(x)
+ else
+ fun_l3_n130(x)
+ end
+end
+
+def fun_l2_n494(x)
+ if (x < 1)
+ fun_l3_n99(x)
+ else
+ fun_l3_n223(x)
+ end
+end
+
+def fun_l2_n495(x)
+ if (x < 1)
+ fun_l3_n65(x)
+ else
+ fun_l3_n811(x)
+ end
+end
+
+def fun_l2_n496(x)
+ if (x < 1)
+ fun_l3_n457(x)
+ else
+ fun_l3_n527(x)
+ end
+end
+
+def fun_l2_n497(x)
+ if (x < 1)
+ fun_l3_n312(x)
+ else
+ fun_l3_n902(x)
+ end
+end
+
+def fun_l2_n498(x)
+ if (x < 1)
+ fun_l3_n63(x)
+ else
+ fun_l3_n948(x)
+ end
+end
+
+def fun_l2_n499(x)
+ if (x < 1)
+ fun_l3_n652(x)
+ else
+ fun_l3_n752(x)
+ end
+end
+
+def fun_l2_n500(x)
+ if (x < 1)
+ fun_l3_n583(x)
+ else
+ fun_l3_n427(x)
+ end
+end
+
+def fun_l2_n501(x)
+ if (x < 1)
+ fun_l3_n536(x)
+ else
+ fun_l3_n671(x)
+ end
+end
+
+def fun_l2_n502(x)
+ if (x < 1)
+ fun_l3_n122(x)
+ else
+ fun_l3_n170(x)
+ end
+end
+
+def fun_l2_n503(x)
+ if (x < 1)
+ fun_l3_n280(x)
+ else
+ fun_l3_n390(x)
+ end
+end
+
+def fun_l2_n504(x)
+ if (x < 1)
+ fun_l3_n427(x)
+ else
+ fun_l3_n267(x)
+ end
+end
+
+def fun_l2_n505(x)
+ if (x < 1)
+ fun_l3_n241(x)
+ else
+ fun_l3_n345(x)
+ end
+end
+
+def fun_l2_n506(x)
+ if (x < 1)
+ fun_l3_n960(x)
+ else
+ fun_l3_n537(x)
+ end
+end
+
+def fun_l2_n507(x)
+ if (x < 1)
+ fun_l3_n947(x)
+ else
+ fun_l3_n3(x)
+ end
+end
+
+def fun_l2_n508(x)
+ if (x < 1)
+ fun_l3_n974(x)
+ else
+ fun_l3_n597(x)
+ end
+end
+
+def fun_l2_n509(x)
+ if (x < 1)
+ fun_l3_n978(x)
+ else
+ fun_l3_n70(x)
+ end
+end
+
+def fun_l2_n510(x)
+ if (x < 1)
+ fun_l3_n855(x)
+ else
+ fun_l3_n259(x)
+ end
+end
+
+def fun_l2_n511(x)
+ if (x < 1)
+ fun_l3_n987(x)
+ else
+ fun_l3_n182(x)
+ end
+end
+
+def fun_l2_n512(x)
+ if (x < 1)
+ fun_l3_n787(x)
+ else
+ fun_l3_n656(x)
+ end
+end
+
+def fun_l2_n513(x)
+ if (x < 1)
+ fun_l3_n348(x)
+ else
+ fun_l3_n242(x)
+ end
+end
+
+def fun_l2_n514(x)
+ if (x < 1)
+ fun_l3_n530(x)
+ else
+ fun_l3_n718(x)
+ end
+end
+
+def fun_l2_n515(x)
+ if (x < 1)
+ fun_l3_n840(x)
+ else
+ fun_l3_n302(x)
+ end
+end
+
+def fun_l2_n516(x)
+ if (x < 1)
+ fun_l3_n678(x)
+ else
+ fun_l3_n732(x)
+ end
+end
+
+def fun_l2_n517(x)
+ if (x < 1)
+ fun_l3_n160(x)
+ else
+ fun_l3_n344(x)
+ end
+end
+
+def fun_l2_n518(x)
+ if (x < 1)
+ fun_l3_n518(x)
+ else
+ fun_l3_n830(x)
+ end
+end
+
+def fun_l2_n519(x)
+ if (x < 1)
+ fun_l3_n595(x)
+ else
+ fun_l3_n95(x)
+ end
+end
+
+def fun_l2_n520(x)
+ if (x < 1)
+ fun_l3_n939(x)
+ else
+ fun_l3_n954(x)
+ end
+end
+
+def fun_l2_n521(x)
+ if (x < 1)
+ fun_l3_n931(x)
+ else
+ fun_l3_n686(x)
+ end
+end
+
+def fun_l2_n522(x)
+ if (x < 1)
+ fun_l3_n117(x)
+ else
+ fun_l3_n501(x)
+ end
+end
+
+def fun_l2_n523(x)
+ if (x < 1)
+ fun_l3_n727(x)
+ else
+ fun_l3_n712(x)
+ end
+end
+
+def fun_l2_n524(x)
+ if (x < 1)
+ fun_l3_n152(x)
+ else
+ fun_l3_n453(x)
+ end
+end
+
+def fun_l2_n525(x)
+ if (x < 1)
+ fun_l3_n375(x)
+ else
+ fun_l3_n186(x)
+ end
+end
+
+def fun_l2_n526(x)
+ if (x < 1)
+ fun_l3_n835(x)
+ else
+ fun_l3_n465(x)
+ end
+end
+
+def fun_l2_n527(x)
+ if (x < 1)
+ fun_l3_n411(x)
+ else
+ fun_l3_n208(x)
+ end
+end
+
+def fun_l2_n528(x)
+ if (x < 1)
+ fun_l3_n696(x)
+ else
+ fun_l3_n537(x)
+ end
+end
+
+def fun_l2_n529(x)
+ if (x < 1)
+ fun_l3_n606(x)
+ else
+ fun_l3_n682(x)
+ end
+end
+
+def fun_l2_n530(x)
+ if (x < 1)
+ fun_l3_n920(x)
+ else
+ fun_l3_n592(x)
+ end
+end
+
+def fun_l2_n531(x)
+ if (x < 1)
+ fun_l3_n201(x)
+ else
+ fun_l3_n27(x)
+ end
+end
+
+def fun_l2_n532(x)
+ if (x < 1)
+ fun_l3_n643(x)
+ else
+ fun_l3_n642(x)
+ end
+end
+
+def fun_l2_n533(x)
+ if (x < 1)
+ fun_l3_n92(x)
+ else
+ fun_l3_n576(x)
+ end
+end
+
+def fun_l2_n534(x)
+ if (x < 1)
+ fun_l3_n135(x)
+ else
+ fun_l3_n738(x)
+ end
+end
+
+def fun_l2_n535(x)
+ if (x < 1)
+ fun_l3_n706(x)
+ else
+ fun_l3_n810(x)
+ end
+end
+
+def fun_l2_n536(x)
+ if (x < 1)
+ fun_l3_n922(x)
+ else
+ fun_l3_n456(x)
+ end
+end
+
+def fun_l2_n537(x)
+ if (x < 1)
+ fun_l3_n511(x)
+ else
+ fun_l3_n279(x)
+ end
+end
+
+def fun_l2_n538(x)
+ if (x < 1)
+ fun_l3_n541(x)
+ else
+ fun_l3_n826(x)
+ end
+end
+
+def fun_l2_n539(x)
+ if (x < 1)
+ fun_l3_n7(x)
+ else
+ fun_l3_n362(x)
+ end
+end
+
+def fun_l2_n540(x)
+ if (x < 1)
+ fun_l3_n132(x)
+ else
+ fun_l3_n819(x)
+ end
+end
+
+def fun_l2_n541(x)
+ if (x < 1)
+ fun_l3_n600(x)
+ else
+ fun_l3_n155(x)
+ end
+end
+
+def fun_l2_n542(x)
+ if (x < 1)
+ fun_l3_n930(x)
+ else
+ fun_l3_n827(x)
+ end
+end
+
+def fun_l2_n543(x)
+ if (x < 1)
+ fun_l3_n974(x)
+ else
+ fun_l3_n957(x)
+ end
+end
+
+def fun_l2_n544(x)
+ if (x < 1)
+ fun_l3_n912(x)
+ else
+ fun_l3_n503(x)
+ end
+end
+
+def fun_l2_n545(x)
+ if (x < 1)
+ fun_l3_n605(x)
+ else
+ fun_l3_n966(x)
+ end
+end
+
+def fun_l2_n546(x)
+ if (x < 1)
+ fun_l3_n523(x)
+ else
+ fun_l3_n105(x)
+ end
+end
+
+def fun_l2_n547(x)
+ if (x < 1)
+ fun_l3_n352(x)
+ else
+ fun_l3_n762(x)
+ end
+end
+
+def fun_l2_n548(x)
+ if (x < 1)
+ fun_l3_n65(x)
+ else
+ fun_l3_n714(x)
+ end
+end
+
+def fun_l2_n549(x)
+ if (x < 1)
+ fun_l3_n665(x)
+ else
+ fun_l3_n799(x)
+ end
+end
+
+def fun_l2_n550(x)
+ if (x < 1)
+ fun_l3_n624(x)
+ else
+ fun_l3_n131(x)
+ end
+end
+
+def fun_l2_n551(x)
+ if (x < 1)
+ fun_l3_n53(x)
+ else
+ fun_l3_n377(x)
+ end
+end
+
+def fun_l2_n552(x)
+ if (x < 1)
+ fun_l3_n377(x)
+ else
+ fun_l3_n532(x)
+ end
+end
+
+def fun_l2_n553(x)
+ if (x < 1)
+ fun_l3_n302(x)
+ else
+ fun_l3_n593(x)
+ end
+end
+
+def fun_l2_n554(x)
+ if (x < 1)
+ fun_l3_n573(x)
+ else
+ fun_l3_n727(x)
+ end
+end
+
+def fun_l2_n555(x)
+ if (x < 1)
+ fun_l3_n575(x)
+ else
+ fun_l3_n838(x)
+ end
+end
+
+def fun_l2_n556(x)
+ if (x < 1)
+ fun_l3_n92(x)
+ else
+ fun_l3_n137(x)
+ end
+end
+
+def fun_l2_n557(x)
+ if (x < 1)
+ fun_l3_n921(x)
+ else
+ fun_l3_n683(x)
+ end
+end
+
+def fun_l2_n558(x)
+ if (x < 1)
+ fun_l3_n987(x)
+ else
+ fun_l3_n646(x)
+ end
+end
+
+def fun_l2_n559(x)
+ if (x < 1)
+ fun_l3_n574(x)
+ else
+ fun_l3_n493(x)
+ end
+end
+
+def fun_l2_n560(x)
+ if (x < 1)
+ fun_l3_n950(x)
+ else
+ fun_l3_n139(x)
+ end
+end
+
+def fun_l2_n561(x)
+ if (x < 1)
+ fun_l3_n276(x)
+ else
+ fun_l3_n491(x)
+ end
+end
+
+def fun_l2_n562(x)
+ if (x < 1)
+ fun_l3_n226(x)
+ else
+ fun_l3_n840(x)
+ end
+end
+
+def fun_l2_n563(x)
+ if (x < 1)
+ fun_l3_n473(x)
+ else
+ fun_l3_n907(x)
+ end
+end
+
+def fun_l2_n564(x)
+ if (x < 1)
+ fun_l3_n695(x)
+ else
+ fun_l3_n951(x)
+ end
+end
+
+def fun_l2_n565(x)
+ if (x < 1)
+ fun_l3_n415(x)
+ else
+ fun_l3_n12(x)
+ end
+end
+
+def fun_l2_n566(x)
+ if (x < 1)
+ fun_l3_n32(x)
+ else
+ fun_l3_n759(x)
+ end
+end
+
+def fun_l2_n567(x)
+ if (x < 1)
+ fun_l3_n876(x)
+ else
+ fun_l3_n297(x)
+ end
+end
+
+def fun_l2_n568(x)
+ if (x < 1)
+ fun_l3_n520(x)
+ else
+ fun_l3_n713(x)
+ end
+end
+
+def fun_l2_n569(x)
+ if (x < 1)
+ fun_l3_n819(x)
+ else
+ fun_l3_n505(x)
+ end
+end
+
+def fun_l2_n570(x)
+ if (x < 1)
+ fun_l3_n661(x)
+ else
+ fun_l3_n447(x)
+ end
+end
+
+def fun_l2_n571(x)
+ if (x < 1)
+ fun_l3_n538(x)
+ else
+ fun_l3_n532(x)
+ end
+end
+
+def fun_l2_n572(x)
+ if (x < 1)
+ fun_l3_n584(x)
+ else
+ fun_l3_n304(x)
+ end
+end
+
+def fun_l2_n573(x)
+ if (x < 1)
+ fun_l3_n76(x)
+ else
+ fun_l3_n512(x)
+ end
+end
+
+def fun_l2_n574(x)
+ if (x < 1)
+ fun_l3_n22(x)
+ else
+ fun_l3_n328(x)
+ end
+end
+
+def fun_l2_n575(x)
+ if (x < 1)
+ fun_l3_n397(x)
+ else
+ fun_l3_n640(x)
+ end
+end
+
+def fun_l2_n576(x)
+ if (x < 1)
+ fun_l3_n227(x)
+ else
+ fun_l3_n236(x)
+ end
+end
+
+def fun_l2_n577(x)
+ if (x < 1)
+ fun_l3_n743(x)
+ else
+ fun_l3_n974(x)
+ end
+end
+
+def fun_l2_n578(x)
+ if (x < 1)
+ fun_l3_n970(x)
+ else
+ fun_l3_n229(x)
+ end
+end
+
+def fun_l2_n579(x)
+ if (x < 1)
+ fun_l3_n401(x)
+ else
+ fun_l3_n672(x)
+ end
+end
+
+def fun_l2_n580(x)
+ if (x < 1)
+ fun_l3_n837(x)
+ else
+ fun_l3_n804(x)
+ end
+end
+
+def fun_l2_n581(x)
+ if (x < 1)
+ fun_l3_n526(x)
+ else
+ fun_l3_n763(x)
+ end
+end
+
+def fun_l2_n582(x)
+ if (x < 1)
+ fun_l3_n2(x)
+ else
+ fun_l3_n692(x)
+ end
+end
+
+def fun_l2_n583(x)
+ if (x < 1)
+ fun_l3_n561(x)
+ else
+ fun_l3_n394(x)
+ end
+end
+
+def fun_l2_n584(x)
+ if (x < 1)
+ fun_l3_n60(x)
+ else
+ fun_l3_n682(x)
+ end
+end
+
+def fun_l2_n585(x)
+ if (x < 1)
+ fun_l3_n646(x)
+ else
+ fun_l3_n776(x)
+ end
+end
+
+def fun_l2_n586(x)
+ if (x < 1)
+ fun_l3_n466(x)
+ else
+ fun_l3_n91(x)
+ end
+end
+
+def fun_l2_n587(x)
+ if (x < 1)
+ fun_l3_n294(x)
+ else
+ fun_l3_n813(x)
+ end
+end
+
+def fun_l2_n588(x)
+ if (x < 1)
+ fun_l3_n958(x)
+ else
+ fun_l3_n64(x)
+ end
+end
+
+def fun_l2_n589(x)
+ if (x < 1)
+ fun_l3_n703(x)
+ else
+ fun_l3_n937(x)
+ end
+end
+
+def fun_l2_n590(x)
+ if (x < 1)
+ fun_l3_n1(x)
+ else
+ fun_l3_n970(x)
+ end
+end
+
+def fun_l2_n591(x)
+ if (x < 1)
+ fun_l3_n566(x)
+ else
+ fun_l3_n750(x)
+ end
+end
+
+def fun_l2_n592(x)
+ if (x < 1)
+ fun_l3_n905(x)
+ else
+ fun_l3_n840(x)
+ end
+end
+
+def fun_l2_n593(x)
+ if (x < 1)
+ fun_l3_n23(x)
+ else
+ fun_l3_n862(x)
+ end
+end
+
+def fun_l2_n594(x)
+ if (x < 1)
+ fun_l3_n739(x)
+ else
+ fun_l3_n4(x)
+ end
+end
+
+def fun_l2_n595(x)
+ if (x < 1)
+ fun_l3_n818(x)
+ else
+ fun_l3_n117(x)
+ end
+end
+
+def fun_l2_n596(x)
+ if (x < 1)
+ fun_l3_n891(x)
+ else
+ fun_l3_n599(x)
+ end
+end
+
+def fun_l2_n597(x)
+ if (x < 1)
+ fun_l3_n731(x)
+ else
+ fun_l3_n960(x)
+ end
+end
+
+def fun_l2_n598(x)
+ if (x < 1)
+ fun_l3_n323(x)
+ else
+ fun_l3_n811(x)
+ end
+end
+
+def fun_l2_n599(x)
+ if (x < 1)
+ fun_l3_n299(x)
+ else
+ fun_l3_n188(x)
+ end
+end
+
+def fun_l2_n600(x)
+ if (x < 1)
+ fun_l3_n129(x)
+ else
+ fun_l3_n730(x)
+ end
+end
+
+def fun_l2_n601(x)
+ if (x < 1)
+ fun_l3_n412(x)
+ else
+ fun_l3_n353(x)
+ end
+end
+
+def fun_l2_n602(x)
+ if (x < 1)
+ fun_l3_n658(x)
+ else
+ fun_l3_n774(x)
+ end
+end
+
+def fun_l2_n603(x)
+ if (x < 1)
+ fun_l3_n378(x)
+ else
+ fun_l3_n722(x)
+ end
+end
+
+def fun_l2_n604(x)
+ if (x < 1)
+ fun_l3_n482(x)
+ else
+ fun_l3_n949(x)
+ end
+end
+
+def fun_l2_n605(x)
+ if (x < 1)
+ fun_l3_n996(x)
+ else
+ fun_l3_n169(x)
+ end
+end
+
+def fun_l2_n606(x)
+ if (x < 1)
+ fun_l3_n653(x)
+ else
+ fun_l3_n966(x)
+ end
+end
+
+def fun_l2_n607(x)
+ if (x < 1)
+ fun_l3_n179(x)
+ else
+ fun_l3_n113(x)
+ end
+end
+
+def fun_l2_n608(x)
+ if (x < 1)
+ fun_l3_n157(x)
+ else
+ fun_l3_n692(x)
+ end
+end
+
+def fun_l2_n609(x)
+ if (x < 1)
+ fun_l3_n648(x)
+ else
+ fun_l3_n318(x)
+ end
+end
+
+def fun_l2_n610(x)
+ if (x < 1)
+ fun_l3_n979(x)
+ else
+ fun_l3_n642(x)
+ end
+end
+
+def fun_l2_n611(x)
+ if (x < 1)
+ fun_l3_n909(x)
+ else
+ fun_l3_n986(x)
+ end
+end
+
+def fun_l2_n612(x)
+ if (x < 1)
+ fun_l3_n387(x)
+ else
+ fun_l3_n586(x)
+ end
+end
+
+def fun_l2_n613(x)
+ if (x < 1)
+ fun_l3_n99(x)
+ else
+ fun_l3_n690(x)
+ end
+end
+
+def fun_l2_n614(x)
+ if (x < 1)
+ fun_l3_n485(x)
+ else
+ fun_l3_n733(x)
+ end
+end
+
+def fun_l2_n615(x)
+ if (x < 1)
+ fun_l3_n735(x)
+ else
+ fun_l3_n827(x)
+ end
+end
+
+def fun_l2_n616(x)
+ if (x < 1)
+ fun_l3_n496(x)
+ else
+ fun_l3_n912(x)
+ end
+end
+
+def fun_l2_n617(x)
+ if (x < 1)
+ fun_l3_n363(x)
+ else
+ fun_l3_n845(x)
+ end
+end
+
+def fun_l2_n618(x)
+ if (x < 1)
+ fun_l3_n891(x)
+ else
+ fun_l3_n964(x)
+ end
+end
+
+def fun_l2_n619(x)
+ if (x < 1)
+ fun_l3_n266(x)
+ else
+ fun_l3_n189(x)
+ end
+end
+
+def fun_l2_n620(x)
+ if (x < 1)
+ fun_l3_n906(x)
+ else
+ fun_l3_n218(x)
+ end
+end
+
+def fun_l2_n621(x)
+ if (x < 1)
+ fun_l3_n145(x)
+ else
+ fun_l3_n279(x)
+ end
+end
+
+def fun_l2_n622(x)
+ if (x < 1)
+ fun_l3_n797(x)
+ else
+ fun_l3_n328(x)
+ end
+end
+
+def fun_l2_n623(x)
+ if (x < 1)
+ fun_l3_n910(x)
+ else
+ fun_l3_n250(x)
+ end
+end
+
+def fun_l2_n624(x)
+ if (x < 1)
+ fun_l3_n111(x)
+ else
+ fun_l3_n884(x)
+ end
+end
+
+def fun_l2_n625(x)
+ if (x < 1)
+ fun_l3_n852(x)
+ else
+ fun_l3_n985(x)
+ end
+end
+
+def fun_l2_n626(x)
+ if (x < 1)
+ fun_l3_n163(x)
+ else
+ fun_l3_n885(x)
+ end
+end
+
+def fun_l2_n627(x)
+ if (x < 1)
+ fun_l3_n338(x)
+ else
+ fun_l3_n562(x)
+ end
+end
+
+def fun_l2_n628(x)
+ if (x < 1)
+ fun_l3_n300(x)
+ else
+ fun_l3_n245(x)
+ end
+end
+
+def fun_l2_n629(x)
+ if (x < 1)
+ fun_l3_n747(x)
+ else
+ fun_l3_n123(x)
+ end
+end
+
+def fun_l2_n630(x)
+ if (x < 1)
+ fun_l3_n42(x)
+ else
+ fun_l3_n46(x)
+ end
+end
+
+def fun_l2_n631(x)
+ if (x < 1)
+ fun_l3_n256(x)
+ else
+ fun_l3_n960(x)
+ end
+end
+
+def fun_l2_n632(x)
+ if (x < 1)
+ fun_l3_n679(x)
+ else
+ fun_l3_n393(x)
+ end
+end
+
+def fun_l2_n633(x)
+ if (x < 1)
+ fun_l3_n286(x)
+ else
+ fun_l3_n147(x)
+ end
+end
+
+def fun_l2_n634(x)
+ if (x < 1)
+ fun_l3_n62(x)
+ else
+ fun_l3_n994(x)
+ end
+end
+
+def fun_l2_n635(x)
+ if (x < 1)
+ fun_l3_n479(x)
+ else
+ fun_l3_n502(x)
+ end
+end
+
+def fun_l2_n636(x)
+ if (x < 1)
+ fun_l3_n504(x)
+ else
+ fun_l3_n557(x)
+ end
+end
+
+def fun_l2_n637(x)
+ if (x < 1)
+ fun_l3_n716(x)
+ else
+ fun_l3_n763(x)
+ end
+end
+
+def fun_l2_n638(x)
+ if (x < 1)
+ fun_l3_n972(x)
+ else
+ fun_l3_n391(x)
+ end
+end
+
+def fun_l2_n639(x)
+ if (x < 1)
+ fun_l3_n842(x)
+ else
+ fun_l3_n740(x)
+ end
+end
+
+def fun_l2_n640(x)
+ if (x < 1)
+ fun_l3_n854(x)
+ else
+ fun_l3_n52(x)
+ end
+end
+
+def fun_l2_n641(x)
+ if (x < 1)
+ fun_l3_n321(x)
+ else
+ fun_l3_n109(x)
+ end
+end
+
+def fun_l2_n642(x)
+ if (x < 1)
+ fun_l3_n868(x)
+ else
+ fun_l3_n926(x)
+ end
+end
+
+def fun_l2_n643(x)
+ if (x < 1)
+ fun_l3_n864(x)
+ else
+ fun_l3_n98(x)
+ end
+end
+
+def fun_l2_n644(x)
+ if (x < 1)
+ fun_l3_n373(x)
+ else
+ fun_l3_n105(x)
+ end
+end
+
+def fun_l2_n645(x)
+ if (x < 1)
+ fun_l3_n293(x)
+ else
+ fun_l3_n846(x)
+ end
+end
+
+def fun_l2_n646(x)
+ if (x < 1)
+ fun_l3_n24(x)
+ else
+ fun_l3_n83(x)
+ end
+end
+
+def fun_l2_n647(x)
+ if (x < 1)
+ fun_l3_n431(x)
+ else
+ fun_l3_n772(x)
+ end
+end
+
+def fun_l2_n648(x)
+ if (x < 1)
+ fun_l3_n667(x)
+ else
+ fun_l3_n108(x)
+ end
+end
+
+def fun_l2_n649(x)
+ if (x < 1)
+ fun_l3_n93(x)
+ else
+ fun_l3_n394(x)
+ end
+end
+
+def fun_l2_n650(x)
+ if (x < 1)
+ fun_l3_n176(x)
+ else
+ fun_l3_n315(x)
+ end
+end
+
+def fun_l2_n651(x)
+ if (x < 1)
+ fun_l3_n684(x)
+ else
+ fun_l3_n635(x)
+ end
+end
+
+def fun_l2_n652(x)
+ if (x < 1)
+ fun_l3_n554(x)
+ else
+ fun_l3_n88(x)
+ end
+end
+
+def fun_l2_n653(x)
+ if (x < 1)
+ fun_l3_n165(x)
+ else
+ fun_l3_n962(x)
+ end
+end
+
+def fun_l2_n654(x)
+ if (x < 1)
+ fun_l3_n631(x)
+ else
+ fun_l3_n80(x)
+ end
+end
+
+def fun_l2_n655(x)
+ if (x < 1)
+ fun_l3_n529(x)
+ else
+ fun_l3_n711(x)
+ end
+end
+
+def fun_l2_n656(x)
+ if (x < 1)
+ fun_l3_n809(x)
+ else
+ fun_l3_n44(x)
+ end
+end
+
+def fun_l2_n657(x)
+ if (x < 1)
+ fun_l3_n226(x)
+ else
+ fun_l3_n939(x)
+ end
+end
+
+def fun_l2_n658(x)
+ if (x < 1)
+ fun_l3_n355(x)
+ else
+ fun_l3_n750(x)
+ end
+end
+
+def fun_l2_n659(x)
+ if (x < 1)
+ fun_l3_n111(x)
+ else
+ fun_l3_n883(x)
+ end
+end
+
+def fun_l2_n660(x)
+ if (x < 1)
+ fun_l3_n22(x)
+ else
+ fun_l3_n544(x)
+ end
+end
+
+def fun_l2_n661(x)
+ if (x < 1)
+ fun_l3_n334(x)
+ else
+ fun_l3_n58(x)
+ end
+end
+
+def fun_l2_n662(x)
+ if (x < 1)
+ fun_l3_n690(x)
+ else
+ fun_l3_n647(x)
+ end
+end
+
+def fun_l2_n663(x)
+ if (x < 1)
+ fun_l3_n886(x)
+ else
+ fun_l3_n142(x)
+ end
+end
+
+def fun_l2_n664(x)
+ if (x < 1)
+ fun_l3_n713(x)
+ else
+ fun_l3_n710(x)
+ end
+end
+
+def fun_l2_n665(x)
+ if (x < 1)
+ fun_l3_n657(x)
+ else
+ fun_l3_n24(x)
+ end
+end
+
+def fun_l2_n666(x)
+ if (x < 1)
+ fun_l3_n993(x)
+ else
+ fun_l3_n741(x)
+ end
+end
+
+def fun_l2_n667(x)
+ if (x < 1)
+ fun_l3_n265(x)
+ else
+ fun_l3_n143(x)
+ end
+end
+
+def fun_l2_n668(x)
+ if (x < 1)
+ fun_l3_n725(x)
+ else
+ fun_l3_n272(x)
+ end
+end
+
+def fun_l2_n669(x)
+ if (x < 1)
+ fun_l3_n171(x)
+ else
+ fun_l3_n95(x)
+ end
+end
+
+def fun_l2_n670(x)
+ if (x < 1)
+ fun_l3_n409(x)
+ else
+ fun_l3_n774(x)
+ end
+end
+
+def fun_l2_n671(x)
+ if (x < 1)
+ fun_l3_n566(x)
+ else
+ fun_l3_n251(x)
+ end
+end
+
+def fun_l2_n672(x)
+ if (x < 1)
+ fun_l3_n914(x)
+ else
+ fun_l3_n716(x)
+ end
+end
+
+def fun_l2_n673(x)
+ if (x < 1)
+ fun_l3_n889(x)
+ else
+ fun_l3_n339(x)
+ end
+end
+
+def fun_l2_n674(x)
+ if (x < 1)
+ fun_l3_n808(x)
+ else
+ fun_l3_n858(x)
+ end
+end
+
+def fun_l2_n675(x)
+ if (x < 1)
+ fun_l3_n895(x)
+ else
+ fun_l3_n180(x)
+ end
+end
+
+def fun_l2_n676(x)
+ if (x < 1)
+ fun_l3_n674(x)
+ else
+ fun_l3_n183(x)
+ end
+end
+
+def fun_l2_n677(x)
+ if (x < 1)
+ fun_l3_n934(x)
+ else
+ fun_l3_n292(x)
+ end
+end
+
+def fun_l2_n678(x)
+ if (x < 1)
+ fun_l3_n302(x)
+ else
+ fun_l3_n511(x)
+ end
+end
+
+def fun_l2_n679(x)
+ if (x < 1)
+ fun_l3_n847(x)
+ else
+ fun_l3_n70(x)
+ end
+end
+
+def fun_l2_n680(x)
+ if (x < 1)
+ fun_l3_n200(x)
+ else
+ fun_l3_n436(x)
+ end
+end
+
+def fun_l2_n681(x)
+ if (x < 1)
+ fun_l3_n44(x)
+ else
+ fun_l3_n145(x)
+ end
+end
+
+def fun_l2_n682(x)
+ if (x < 1)
+ fun_l3_n929(x)
+ else
+ fun_l3_n605(x)
+ end
+end
+
+def fun_l2_n683(x)
+ if (x < 1)
+ fun_l3_n990(x)
+ else
+ fun_l3_n641(x)
+ end
+end
+
+def fun_l2_n684(x)
+ if (x < 1)
+ fun_l3_n679(x)
+ else
+ fun_l3_n976(x)
+ end
+end
+
+def fun_l2_n685(x)
+ if (x < 1)
+ fun_l3_n405(x)
+ else
+ fun_l3_n658(x)
+ end
+end
+
+def fun_l2_n686(x)
+ if (x < 1)
+ fun_l3_n685(x)
+ else
+ fun_l3_n379(x)
+ end
+end
+
+def fun_l2_n687(x)
+ if (x < 1)
+ fun_l3_n279(x)
+ else
+ fun_l3_n415(x)
+ end
+end
+
+def fun_l2_n688(x)
+ if (x < 1)
+ fun_l3_n234(x)
+ else
+ fun_l3_n634(x)
+ end
+end
+
+def fun_l2_n689(x)
+ if (x < 1)
+ fun_l3_n119(x)
+ else
+ fun_l3_n234(x)
+ end
+end
+
+def fun_l2_n690(x)
+ if (x < 1)
+ fun_l3_n213(x)
+ else
+ fun_l3_n102(x)
+ end
+end
+
+def fun_l2_n691(x)
+ if (x < 1)
+ fun_l3_n744(x)
+ else
+ fun_l3_n31(x)
+ end
+end
+
+def fun_l2_n692(x)
+ if (x < 1)
+ fun_l3_n29(x)
+ else
+ fun_l3_n238(x)
+ end
+end
+
+def fun_l2_n693(x)
+ if (x < 1)
+ fun_l3_n323(x)
+ else
+ fun_l3_n388(x)
+ end
+end
+
+def fun_l2_n694(x)
+ if (x < 1)
+ fun_l3_n70(x)
+ else
+ fun_l3_n356(x)
+ end
+end
+
+def fun_l2_n695(x)
+ if (x < 1)
+ fun_l3_n589(x)
+ else
+ fun_l3_n949(x)
+ end
+end
+
+def fun_l2_n696(x)
+ if (x < 1)
+ fun_l3_n328(x)
+ else
+ fun_l3_n472(x)
+ end
+end
+
+def fun_l2_n697(x)
+ if (x < 1)
+ fun_l3_n705(x)
+ else
+ fun_l3_n709(x)
+ end
+end
+
+def fun_l2_n698(x)
+ if (x < 1)
+ fun_l3_n817(x)
+ else
+ fun_l3_n927(x)
+ end
+end
+
+def fun_l2_n699(x)
+ if (x < 1)
+ fun_l3_n916(x)
+ else
+ fun_l3_n66(x)
+ end
+end
+
+def fun_l2_n700(x)
+ if (x < 1)
+ fun_l3_n461(x)
+ else
+ fun_l3_n648(x)
+ end
+end
+
+def fun_l2_n701(x)
+ if (x < 1)
+ fun_l3_n71(x)
+ else
+ fun_l3_n218(x)
+ end
+end
+
+def fun_l2_n702(x)
+ if (x < 1)
+ fun_l3_n490(x)
+ else
+ fun_l3_n706(x)
+ end
+end
+
+def fun_l2_n703(x)
+ if (x < 1)
+ fun_l3_n480(x)
+ else
+ fun_l3_n665(x)
+ end
+end
+
+def fun_l2_n704(x)
+ if (x < 1)
+ fun_l3_n965(x)
+ else
+ fun_l3_n394(x)
+ end
+end
+
+def fun_l2_n705(x)
+ if (x < 1)
+ fun_l3_n65(x)
+ else
+ fun_l3_n761(x)
+ end
+end
+
+def fun_l2_n706(x)
+ if (x < 1)
+ fun_l3_n690(x)
+ else
+ fun_l3_n50(x)
+ end
+end
+
+def fun_l2_n707(x)
+ if (x < 1)
+ fun_l3_n665(x)
+ else
+ fun_l3_n589(x)
+ end
+end
+
+def fun_l2_n708(x)
+ if (x < 1)
+ fun_l3_n331(x)
+ else
+ fun_l3_n299(x)
+ end
+end
+
+def fun_l2_n709(x)
+ if (x < 1)
+ fun_l3_n656(x)
+ else
+ fun_l3_n966(x)
+ end
+end
+
+def fun_l2_n710(x)
+ if (x < 1)
+ fun_l3_n610(x)
+ else
+ fun_l3_n767(x)
+ end
+end
+
+def fun_l2_n711(x)
+ if (x < 1)
+ fun_l3_n281(x)
+ else
+ fun_l3_n942(x)
+ end
+end
+
+def fun_l2_n712(x)
+ if (x < 1)
+ fun_l3_n474(x)
+ else
+ fun_l3_n373(x)
+ end
+end
+
+def fun_l2_n713(x)
+ if (x < 1)
+ fun_l3_n668(x)
+ else
+ fun_l3_n881(x)
+ end
+end
+
+def fun_l2_n714(x)
+ if (x < 1)
+ fun_l3_n112(x)
+ else
+ fun_l3_n914(x)
+ end
+end
+
+def fun_l2_n715(x)
+ if (x < 1)
+ fun_l3_n276(x)
+ else
+ fun_l3_n946(x)
+ end
+end
+
+def fun_l2_n716(x)
+ if (x < 1)
+ fun_l3_n340(x)
+ else
+ fun_l3_n474(x)
+ end
+end
+
+def fun_l2_n717(x)
+ if (x < 1)
+ fun_l3_n179(x)
+ else
+ fun_l3_n740(x)
+ end
+end
+
+def fun_l2_n718(x)
+ if (x < 1)
+ fun_l3_n830(x)
+ else
+ fun_l3_n139(x)
+ end
+end
+
+def fun_l2_n719(x)
+ if (x < 1)
+ fun_l3_n945(x)
+ else
+ fun_l3_n98(x)
+ end
+end
+
+def fun_l2_n720(x)
+ if (x < 1)
+ fun_l3_n912(x)
+ else
+ fun_l3_n457(x)
+ end
+end
+
+def fun_l2_n721(x)
+ if (x < 1)
+ fun_l3_n4(x)
+ else
+ fun_l3_n798(x)
+ end
+end
+
+def fun_l2_n722(x)
+ if (x < 1)
+ fun_l3_n438(x)
+ else
+ fun_l3_n677(x)
+ end
+end
+
+def fun_l2_n723(x)
+ if (x < 1)
+ fun_l3_n447(x)
+ else
+ fun_l3_n418(x)
+ end
+end
+
+def fun_l2_n724(x)
+ if (x < 1)
+ fun_l3_n936(x)
+ else
+ fun_l3_n572(x)
+ end
+end
+
+def fun_l2_n725(x)
+ if (x < 1)
+ fun_l3_n856(x)
+ else
+ fun_l3_n429(x)
+ end
+end
+
+def fun_l2_n726(x)
+ if (x < 1)
+ fun_l3_n747(x)
+ else
+ fun_l3_n823(x)
+ end
+end
+
+def fun_l2_n727(x)
+ if (x < 1)
+ fun_l3_n908(x)
+ else
+ fun_l3_n446(x)
+ end
+end
+
+def fun_l2_n728(x)
+ if (x < 1)
+ fun_l3_n170(x)
+ else
+ fun_l3_n546(x)
+ end
+end
+
+def fun_l2_n729(x)
+ if (x < 1)
+ fun_l3_n45(x)
+ else
+ fun_l3_n76(x)
+ end
+end
+
+def fun_l2_n730(x)
+ if (x < 1)
+ fun_l3_n688(x)
+ else
+ fun_l3_n826(x)
+ end
+end
+
+def fun_l2_n731(x)
+ if (x < 1)
+ fun_l3_n805(x)
+ else
+ fun_l3_n88(x)
+ end
+end
+
+def fun_l2_n732(x)
+ if (x < 1)
+ fun_l3_n191(x)
+ else
+ fun_l3_n395(x)
+ end
+end
+
+def fun_l2_n733(x)
+ if (x < 1)
+ fun_l3_n161(x)
+ else
+ fun_l3_n600(x)
+ end
+end
+
+def fun_l2_n734(x)
+ if (x < 1)
+ fun_l3_n586(x)
+ else
+ fun_l3_n770(x)
+ end
+end
+
+def fun_l2_n735(x)
+ if (x < 1)
+ fun_l3_n139(x)
+ else
+ fun_l3_n108(x)
+ end
+end
+
+def fun_l2_n736(x)
+ if (x < 1)
+ fun_l3_n719(x)
+ else
+ fun_l3_n210(x)
+ end
+end
+
+def fun_l2_n737(x)
+ if (x < 1)
+ fun_l3_n327(x)
+ else
+ fun_l3_n138(x)
+ end
+end
+
+def fun_l2_n738(x)
+ if (x < 1)
+ fun_l3_n755(x)
+ else
+ fun_l3_n785(x)
+ end
+end
+
+def fun_l2_n739(x)
+ if (x < 1)
+ fun_l3_n499(x)
+ else
+ fun_l3_n998(x)
+ end
+end
+
+def fun_l2_n740(x)
+ if (x < 1)
+ fun_l3_n303(x)
+ else
+ fun_l3_n646(x)
+ end
+end
+
+def fun_l2_n741(x)
+ if (x < 1)
+ fun_l3_n385(x)
+ else
+ fun_l3_n202(x)
+ end
+end
+
+def fun_l2_n742(x)
+ if (x < 1)
+ fun_l3_n290(x)
+ else
+ fun_l3_n617(x)
+ end
+end
+
+def fun_l2_n743(x)
+ if (x < 1)
+ fun_l3_n735(x)
+ else
+ fun_l3_n322(x)
+ end
+end
+
+def fun_l2_n744(x)
+ if (x < 1)
+ fun_l3_n541(x)
+ else
+ fun_l3_n841(x)
+ end
+end
+
+def fun_l2_n745(x)
+ if (x < 1)
+ fun_l3_n124(x)
+ else
+ fun_l3_n927(x)
+ end
+end
+
+def fun_l2_n746(x)
+ if (x < 1)
+ fun_l3_n909(x)
+ else
+ fun_l3_n981(x)
+ end
+end
+
+def fun_l2_n747(x)
+ if (x < 1)
+ fun_l3_n535(x)
+ else
+ fun_l3_n154(x)
+ end
+end
+
+def fun_l2_n748(x)
+ if (x < 1)
+ fun_l3_n804(x)
+ else
+ fun_l3_n837(x)
+ end
+end
+
+def fun_l2_n749(x)
+ if (x < 1)
+ fun_l3_n787(x)
+ else
+ fun_l3_n890(x)
+ end
+end
+
+def fun_l2_n750(x)
+ if (x < 1)
+ fun_l3_n273(x)
+ else
+ fun_l3_n539(x)
+ end
+end
+
+def fun_l2_n751(x)
+ if (x < 1)
+ fun_l3_n397(x)
+ else
+ fun_l3_n630(x)
+ end
+end
+
+def fun_l2_n752(x)
+ if (x < 1)
+ fun_l3_n757(x)
+ else
+ fun_l3_n294(x)
+ end
+end
+
+def fun_l2_n753(x)
+ if (x < 1)
+ fun_l3_n731(x)
+ else
+ fun_l3_n121(x)
+ end
+end
+
+def fun_l2_n754(x)
+ if (x < 1)
+ fun_l3_n391(x)
+ else
+ fun_l3_n640(x)
+ end
+end
+
+def fun_l2_n755(x)
+ if (x < 1)
+ fun_l3_n441(x)
+ else
+ fun_l3_n731(x)
+ end
+end
+
+def fun_l2_n756(x)
+ if (x < 1)
+ fun_l3_n947(x)
+ else
+ fun_l3_n175(x)
+ end
+end
+
+def fun_l2_n757(x)
+ if (x < 1)
+ fun_l3_n294(x)
+ else
+ fun_l3_n732(x)
+ end
+end
+
+def fun_l2_n758(x)
+ if (x < 1)
+ fun_l3_n862(x)
+ else
+ fun_l3_n490(x)
+ end
+end
+
+def fun_l2_n759(x)
+ if (x < 1)
+ fun_l3_n959(x)
+ else
+ fun_l3_n58(x)
+ end
+end
+
+def fun_l2_n760(x)
+ if (x < 1)
+ fun_l3_n245(x)
+ else
+ fun_l3_n201(x)
+ end
+end
+
+def fun_l2_n761(x)
+ if (x < 1)
+ fun_l3_n174(x)
+ else
+ fun_l3_n763(x)
+ end
+end
+
+def fun_l2_n762(x)
+ if (x < 1)
+ fun_l3_n276(x)
+ else
+ fun_l3_n624(x)
+ end
+end
+
+def fun_l2_n763(x)
+ if (x < 1)
+ fun_l3_n130(x)
+ else
+ fun_l3_n452(x)
+ end
+end
+
+def fun_l2_n764(x)
+ if (x < 1)
+ fun_l3_n476(x)
+ else
+ fun_l3_n519(x)
+ end
+end
+
+def fun_l2_n765(x)
+ if (x < 1)
+ fun_l3_n911(x)
+ else
+ fun_l3_n28(x)
+ end
+end
+
+def fun_l2_n766(x)
+ if (x < 1)
+ fun_l3_n290(x)
+ else
+ fun_l3_n528(x)
+ end
+end
+
+def fun_l2_n767(x)
+ if (x < 1)
+ fun_l3_n89(x)
+ else
+ fun_l3_n284(x)
+ end
+end
+
+def fun_l2_n768(x)
+ if (x < 1)
+ fun_l3_n307(x)
+ else
+ fun_l3_n832(x)
+ end
+end
+
+def fun_l2_n769(x)
+ if (x < 1)
+ fun_l3_n204(x)
+ else
+ fun_l3_n358(x)
+ end
+end
+
+def fun_l2_n770(x)
+ if (x < 1)
+ fun_l3_n380(x)
+ else
+ fun_l3_n938(x)
+ end
+end
+
+def fun_l2_n771(x)
+ if (x < 1)
+ fun_l3_n245(x)
+ else
+ fun_l3_n156(x)
+ end
+end
+
+def fun_l2_n772(x)
+ if (x < 1)
+ fun_l3_n77(x)
+ else
+ fun_l3_n842(x)
+ end
+end
+
+def fun_l2_n773(x)
+ if (x < 1)
+ fun_l3_n972(x)
+ else
+ fun_l3_n143(x)
+ end
+end
+
+def fun_l2_n774(x)
+ if (x < 1)
+ fun_l3_n308(x)
+ else
+ fun_l3_n713(x)
+ end
+end
+
+def fun_l2_n775(x)
+ if (x < 1)
+ fun_l3_n714(x)
+ else
+ fun_l3_n329(x)
+ end
+end
+
+def fun_l2_n776(x)
+ if (x < 1)
+ fun_l3_n805(x)
+ else
+ fun_l3_n141(x)
+ end
+end
+
+def fun_l2_n777(x)
+ if (x < 1)
+ fun_l3_n155(x)
+ else
+ fun_l3_n873(x)
+ end
+end
+
+def fun_l2_n778(x)
+ if (x < 1)
+ fun_l3_n551(x)
+ else
+ fun_l3_n293(x)
+ end
+end
+
+def fun_l2_n779(x)
+ if (x < 1)
+ fun_l3_n857(x)
+ else
+ fun_l3_n551(x)
+ end
+end
+
+def fun_l2_n780(x)
+ if (x < 1)
+ fun_l3_n30(x)
+ else
+ fun_l3_n230(x)
+ end
+end
+
+def fun_l2_n781(x)
+ if (x < 1)
+ fun_l3_n958(x)
+ else
+ fun_l3_n463(x)
+ end
+end
+
+def fun_l2_n782(x)
+ if (x < 1)
+ fun_l3_n89(x)
+ else
+ fun_l3_n514(x)
+ end
+end
+
+def fun_l2_n783(x)
+ if (x < 1)
+ fun_l3_n290(x)
+ else
+ fun_l3_n394(x)
+ end
+end
+
+def fun_l2_n784(x)
+ if (x < 1)
+ fun_l3_n582(x)
+ else
+ fun_l3_n927(x)
+ end
+end
+
+def fun_l2_n785(x)
+ if (x < 1)
+ fun_l3_n739(x)
+ else
+ fun_l3_n822(x)
+ end
+end
+
+def fun_l2_n786(x)
+ if (x < 1)
+ fun_l3_n1(x)
+ else
+ fun_l3_n162(x)
+ end
+end
+
+def fun_l2_n787(x)
+ if (x < 1)
+ fun_l3_n88(x)
+ else
+ fun_l3_n800(x)
+ end
+end
+
+def fun_l2_n788(x)
+ if (x < 1)
+ fun_l3_n592(x)
+ else
+ fun_l3_n235(x)
+ end
+end
+
+def fun_l2_n789(x)
+ if (x < 1)
+ fun_l3_n337(x)
+ else
+ fun_l3_n204(x)
+ end
+end
+
+def fun_l2_n790(x)
+ if (x < 1)
+ fun_l3_n481(x)
+ else
+ fun_l3_n361(x)
+ end
+end
+
+def fun_l2_n791(x)
+ if (x < 1)
+ fun_l3_n441(x)
+ else
+ fun_l3_n883(x)
+ end
+end
+
+def fun_l2_n792(x)
+ if (x < 1)
+ fun_l3_n424(x)
+ else
+ fun_l3_n387(x)
+ end
+end
+
+def fun_l2_n793(x)
+ if (x < 1)
+ fun_l3_n961(x)
+ else
+ fun_l3_n710(x)
+ end
+end
+
+def fun_l2_n794(x)
+ if (x < 1)
+ fun_l3_n653(x)
+ else
+ fun_l3_n869(x)
+ end
+end
+
+def fun_l2_n795(x)
+ if (x < 1)
+ fun_l3_n466(x)
+ else
+ fun_l3_n195(x)
+ end
+end
+
+def fun_l2_n796(x)
+ if (x < 1)
+ fun_l3_n30(x)
+ else
+ fun_l3_n137(x)
+ end
+end
+
+def fun_l2_n797(x)
+ if (x < 1)
+ fun_l3_n974(x)
+ else
+ fun_l3_n911(x)
+ end
+end
+
+def fun_l2_n798(x)
+ if (x < 1)
+ fun_l3_n500(x)
+ else
+ fun_l3_n607(x)
+ end
+end
+
+def fun_l2_n799(x)
+ if (x < 1)
+ fun_l3_n964(x)
+ else
+ fun_l3_n425(x)
+ end
+end
+
+def fun_l2_n800(x)
+ if (x < 1)
+ fun_l3_n381(x)
+ else
+ fun_l3_n618(x)
+ end
+end
+
+def fun_l2_n801(x)
+ if (x < 1)
+ fun_l3_n803(x)
+ else
+ fun_l3_n697(x)
+ end
+end
+
+def fun_l2_n802(x)
+ if (x < 1)
+ fun_l3_n372(x)
+ else
+ fun_l3_n331(x)
+ end
+end
+
+def fun_l2_n803(x)
+ if (x < 1)
+ fun_l3_n450(x)
+ else
+ fun_l3_n707(x)
+ end
+end
+
+def fun_l2_n804(x)
+ if (x < 1)
+ fun_l3_n760(x)
+ else
+ fun_l3_n800(x)
+ end
+end
+
+def fun_l2_n805(x)
+ if (x < 1)
+ fun_l3_n695(x)
+ else
+ fun_l3_n426(x)
+ end
+end
+
+def fun_l2_n806(x)
+ if (x < 1)
+ fun_l3_n312(x)
+ else
+ fun_l3_n517(x)
+ end
+end
+
+def fun_l2_n807(x)
+ if (x < 1)
+ fun_l3_n794(x)
+ else
+ fun_l3_n37(x)
+ end
+end
+
+def fun_l2_n808(x)
+ if (x < 1)
+ fun_l3_n591(x)
+ else
+ fun_l3_n933(x)
+ end
+end
+
+def fun_l2_n809(x)
+ if (x < 1)
+ fun_l3_n974(x)
+ else
+ fun_l3_n69(x)
+ end
+end
+
+def fun_l2_n810(x)
+ if (x < 1)
+ fun_l3_n263(x)
+ else
+ fun_l3_n628(x)
+ end
+end
+
+def fun_l2_n811(x)
+ if (x < 1)
+ fun_l3_n647(x)
+ else
+ fun_l3_n133(x)
+ end
+end
+
+def fun_l2_n812(x)
+ if (x < 1)
+ fun_l3_n396(x)
+ else
+ fun_l3_n872(x)
+ end
+end
+
+def fun_l2_n813(x)
+ if (x < 1)
+ fun_l3_n716(x)
+ else
+ fun_l3_n254(x)
+ end
+end
+
+def fun_l2_n814(x)
+ if (x < 1)
+ fun_l3_n181(x)
+ else
+ fun_l3_n786(x)
+ end
+end
+
+def fun_l2_n815(x)
+ if (x < 1)
+ fun_l3_n163(x)
+ else
+ fun_l3_n175(x)
+ end
+end
+
+def fun_l2_n816(x)
+ if (x < 1)
+ fun_l3_n835(x)
+ else
+ fun_l3_n713(x)
+ end
+end
+
+def fun_l2_n817(x)
+ if (x < 1)
+ fun_l3_n54(x)
+ else
+ fun_l3_n280(x)
+ end
+end
+
+def fun_l2_n818(x)
+ if (x < 1)
+ fun_l3_n261(x)
+ else
+ fun_l3_n958(x)
+ end
+end
+
+def fun_l2_n819(x)
+ if (x < 1)
+ fun_l3_n821(x)
+ else
+ fun_l3_n418(x)
+ end
+end
+
+def fun_l2_n820(x)
+ if (x < 1)
+ fun_l3_n541(x)
+ else
+ fun_l3_n547(x)
+ end
+end
+
+def fun_l2_n821(x)
+ if (x < 1)
+ fun_l3_n726(x)
+ else
+ fun_l3_n386(x)
+ end
+end
+
+def fun_l2_n822(x)
+ if (x < 1)
+ fun_l3_n369(x)
+ else
+ fun_l3_n781(x)
+ end
+end
+
+def fun_l2_n823(x)
+ if (x < 1)
+ fun_l3_n392(x)
+ else
+ fun_l3_n357(x)
+ end
+end
+
+def fun_l2_n824(x)
+ if (x < 1)
+ fun_l3_n167(x)
+ else
+ fun_l3_n764(x)
+ end
+end
+
+def fun_l2_n825(x)
+ if (x < 1)
+ fun_l3_n339(x)
+ else
+ fun_l3_n853(x)
+ end
+end
+
+def fun_l2_n826(x)
+ if (x < 1)
+ fun_l3_n613(x)
+ else
+ fun_l3_n767(x)
+ end
+end
+
+def fun_l2_n827(x)
+ if (x < 1)
+ fun_l3_n31(x)
+ else
+ fun_l3_n35(x)
+ end
+end
+
+def fun_l2_n828(x)
+ if (x < 1)
+ fun_l3_n838(x)
+ else
+ fun_l3_n939(x)
+ end
+end
+
+def fun_l2_n829(x)
+ if (x < 1)
+ fun_l3_n344(x)
+ else
+ fun_l3_n568(x)
+ end
+end
+
+def fun_l2_n830(x)
+ if (x < 1)
+ fun_l3_n892(x)
+ else
+ fun_l3_n564(x)
+ end
+end
+
+def fun_l2_n831(x)
+ if (x < 1)
+ fun_l3_n520(x)
+ else
+ fun_l3_n897(x)
+ end
+end
+
+def fun_l2_n832(x)
+ if (x < 1)
+ fun_l3_n986(x)
+ else
+ fun_l3_n523(x)
+ end
+end
+
+def fun_l2_n833(x)
+ if (x < 1)
+ fun_l3_n649(x)
+ else
+ fun_l3_n776(x)
+ end
+end
+
+def fun_l2_n834(x)
+ if (x < 1)
+ fun_l3_n613(x)
+ else
+ fun_l3_n170(x)
+ end
+end
+
+def fun_l2_n835(x)
+ if (x < 1)
+ fun_l3_n657(x)
+ else
+ fun_l3_n790(x)
+ end
+end
+
+def fun_l2_n836(x)
+ if (x < 1)
+ fun_l3_n976(x)
+ else
+ fun_l3_n785(x)
+ end
+end
+
+def fun_l2_n837(x)
+ if (x < 1)
+ fun_l3_n746(x)
+ else
+ fun_l3_n448(x)
+ end
+end
+
+def fun_l2_n838(x)
+ if (x < 1)
+ fun_l3_n911(x)
+ else
+ fun_l3_n978(x)
+ end
+end
+
+def fun_l2_n839(x)
+ if (x < 1)
+ fun_l3_n917(x)
+ else
+ fun_l3_n484(x)
+ end
+end
+
+def fun_l2_n840(x)
+ if (x < 1)
+ fun_l3_n930(x)
+ else
+ fun_l3_n617(x)
+ end
+end
+
+def fun_l2_n841(x)
+ if (x < 1)
+ fun_l3_n753(x)
+ else
+ fun_l3_n587(x)
+ end
+end
+
+def fun_l2_n842(x)
+ if (x < 1)
+ fun_l3_n21(x)
+ else
+ fun_l3_n256(x)
+ end
+end
+
+def fun_l2_n843(x)
+ if (x < 1)
+ fun_l3_n697(x)
+ else
+ fun_l3_n828(x)
+ end
+end
+
+def fun_l2_n844(x)
+ if (x < 1)
+ fun_l3_n59(x)
+ else
+ fun_l3_n855(x)
+ end
+end
+
+def fun_l2_n845(x)
+ if (x < 1)
+ fun_l3_n637(x)
+ else
+ fun_l3_n667(x)
+ end
+end
+
+def fun_l2_n846(x)
+ if (x < 1)
+ fun_l3_n229(x)
+ else
+ fun_l3_n379(x)
+ end
+end
+
+def fun_l2_n847(x)
+ if (x < 1)
+ fun_l3_n908(x)
+ else
+ fun_l3_n53(x)
+ end
+end
+
+def fun_l2_n848(x)
+ if (x < 1)
+ fun_l3_n72(x)
+ else
+ fun_l3_n882(x)
+ end
+end
+
+def fun_l2_n849(x)
+ if (x < 1)
+ fun_l3_n890(x)
+ else
+ fun_l3_n153(x)
+ end
+end
+
+def fun_l2_n850(x)
+ if (x < 1)
+ fun_l3_n301(x)
+ else
+ fun_l3_n404(x)
+ end
+end
+
+def fun_l2_n851(x)
+ if (x < 1)
+ fun_l3_n451(x)
+ else
+ fun_l3_n365(x)
+ end
+end
+
+def fun_l2_n852(x)
+ if (x < 1)
+ fun_l3_n591(x)
+ else
+ fun_l3_n974(x)
+ end
+end
+
+def fun_l2_n853(x)
+ if (x < 1)
+ fun_l3_n534(x)
+ else
+ fun_l3_n649(x)
+ end
+end
+
+def fun_l2_n854(x)
+ if (x < 1)
+ fun_l3_n438(x)
+ else
+ fun_l3_n853(x)
+ end
+end
+
+def fun_l2_n855(x)
+ if (x < 1)
+ fun_l3_n181(x)
+ else
+ fun_l3_n888(x)
+ end
+end
+
+def fun_l2_n856(x)
+ if (x < 1)
+ fun_l3_n856(x)
+ else
+ fun_l3_n139(x)
+ end
+end
+
+def fun_l2_n857(x)
+ if (x < 1)
+ fun_l3_n664(x)
+ else
+ fun_l3_n659(x)
+ end
+end
+
+def fun_l2_n858(x)
+ if (x < 1)
+ fun_l3_n838(x)
+ else
+ fun_l3_n157(x)
+ end
+end
+
+def fun_l2_n859(x)
+ if (x < 1)
+ fun_l3_n542(x)
+ else
+ fun_l3_n512(x)
+ end
+end
+
+def fun_l2_n860(x)
+ if (x < 1)
+ fun_l3_n213(x)
+ else
+ fun_l3_n954(x)
+ end
+end
+
+def fun_l2_n861(x)
+ if (x < 1)
+ fun_l3_n580(x)
+ else
+ fun_l3_n525(x)
+ end
+end
+
+def fun_l2_n862(x)
+ if (x < 1)
+ fun_l3_n649(x)
+ else
+ fun_l3_n376(x)
+ end
+end
+
+def fun_l2_n863(x)
+ if (x < 1)
+ fun_l3_n846(x)
+ else
+ fun_l3_n643(x)
+ end
+end
+
+def fun_l2_n864(x)
+ if (x < 1)
+ fun_l3_n899(x)
+ else
+ fun_l3_n667(x)
+ end
+end
+
+def fun_l2_n865(x)
+ if (x < 1)
+ fun_l3_n326(x)
+ else
+ fun_l3_n664(x)
+ end
+end
+
+def fun_l2_n866(x)
+ if (x < 1)
+ fun_l3_n155(x)
+ else
+ fun_l3_n369(x)
+ end
+end
+
+def fun_l2_n867(x)
+ if (x < 1)
+ fun_l3_n583(x)
+ else
+ fun_l3_n12(x)
+ end
+end
+
+def fun_l2_n868(x)
+ if (x < 1)
+ fun_l3_n637(x)
+ else
+ fun_l3_n711(x)
+ end
+end
+
+def fun_l2_n869(x)
+ if (x < 1)
+ fun_l3_n120(x)
+ else
+ fun_l3_n449(x)
+ end
+end
+
+def fun_l2_n870(x)
+ if (x < 1)
+ fun_l3_n459(x)
+ else
+ fun_l3_n83(x)
+ end
+end
+
+def fun_l2_n871(x)
+ if (x < 1)
+ fun_l3_n298(x)
+ else
+ fun_l3_n6(x)
+ end
+end
+
+def fun_l2_n872(x)
+ if (x < 1)
+ fun_l3_n640(x)
+ else
+ fun_l3_n319(x)
+ end
+end
+
+def fun_l2_n873(x)
+ if (x < 1)
+ fun_l3_n777(x)
+ else
+ fun_l3_n903(x)
+ end
+end
+
+def fun_l2_n874(x)
+ if (x < 1)
+ fun_l3_n16(x)
+ else
+ fun_l3_n50(x)
+ end
+end
+
+def fun_l2_n875(x)
+ if (x < 1)
+ fun_l3_n732(x)
+ else
+ fun_l3_n711(x)
+ end
+end
+
+def fun_l2_n876(x)
+ if (x < 1)
+ fun_l3_n958(x)
+ else
+ fun_l3_n949(x)
+ end
+end
+
+def fun_l2_n877(x)
+ if (x < 1)
+ fun_l3_n992(x)
+ else
+ fun_l3_n592(x)
+ end
+end
+
+def fun_l2_n878(x)
+ if (x < 1)
+ fun_l3_n283(x)
+ else
+ fun_l3_n178(x)
+ end
+end
+
+def fun_l2_n879(x)
+ if (x < 1)
+ fun_l3_n179(x)
+ else
+ fun_l3_n963(x)
+ end
+end
+
+def fun_l2_n880(x)
+ if (x < 1)
+ fun_l3_n345(x)
+ else
+ fun_l3_n585(x)
+ end
+end
+
+def fun_l2_n881(x)
+ if (x < 1)
+ fun_l3_n859(x)
+ else
+ fun_l3_n204(x)
+ end
+end
+
+def fun_l2_n882(x)
+ if (x < 1)
+ fun_l3_n718(x)
+ else
+ fun_l3_n354(x)
+ end
+end
+
+def fun_l2_n883(x)
+ if (x < 1)
+ fun_l3_n58(x)
+ else
+ fun_l3_n34(x)
+ end
+end
+
+def fun_l2_n884(x)
+ if (x < 1)
+ fun_l3_n442(x)
+ else
+ fun_l3_n853(x)
+ end
+end
+
+def fun_l2_n885(x)
+ if (x < 1)
+ fun_l3_n37(x)
+ else
+ fun_l3_n665(x)
+ end
+end
+
+def fun_l2_n886(x)
+ if (x < 1)
+ fun_l3_n468(x)
+ else
+ fun_l3_n283(x)
+ end
+end
+
+def fun_l2_n887(x)
+ if (x < 1)
+ fun_l3_n674(x)
+ else
+ fun_l3_n940(x)
+ end
+end
+
+def fun_l2_n888(x)
+ if (x < 1)
+ fun_l3_n556(x)
+ else
+ fun_l3_n191(x)
+ end
+end
+
+def fun_l2_n889(x)
+ if (x < 1)
+ fun_l3_n451(x)
+ else
+ fun_l3_n33(x)
+ end
+end
+
+def fun_l2_n890(x)
+ if (x < 1)
+ fun_l3_n724(x)
+ else
+ fun_l3_n355(x)
+ end
+end
+
+def fun_l2_n891(x)
+ if (x < 1)
+ fun_l3_n811(x)
+ else
+ fun_l3_n969(x)
+ end
+end
+
+def fun_l2_n892(x)
+ if (x < 1)
+ fun_l3_n122(x)
+ else
+ fun_l3_n956(x)
+ end
+end
+
+def fun_l2_n893(x)
+ if (x < 1)
+ fun_l3_n416(x)
+ else
+ fun_l3_n373(x)
+ end
+end
+
+def fun_l2_n894(x)
+ if (x < 1)
+ fun_l3_n990(x)
+ else
+ fun_l3_n148(x)
+ end
+end
+
+def fun_l2_n895(x)
+ if (x < 1)
+ fun_l3_n52(x)
+ else
+ fun_l3_n605(x)
+ end
+end
+
+def fun_l2_n896(x)
+ if (x < 1)
+ fun_l3_n523(x)
+ else
+ fun_l3_n929(x)
+ end
+end
+
+def fun_l2_n897(x)
+ if (x < 1)
+ fun_l3_n631(x)
+ else
+ fun_l3_n167(x)
+ end
+end
+
+def fun_l2_n898(x)
+ if (x < 1)
+ fun_l3_n366(x)
+ else
+ fun_l3_n666(x)
+ end
+end
+
+def fun_l2_n899(x)
+ if (x < 1)
+ fun_l3_n758(x)
+ else
+ fun_l3_n441(x)
+ end
+end
+
+def fun_l2_n900(x)
+ if (x < 1)
+ fun_l3_n561(x)
+ else
+ fun_l3_n766(x)
+ end
+end
+
+def fun_l2_n901(x)
+ if (x < 1)
+ fun_l3_n323(x)
+ else
+ fun_l3_n348(x)
+ end
+end
+
+def fun_l2_n902(x)
+ if (x < 1)
+ fun_l3_n455(x)
+ else
+ fun_l3_n78(x)
+ end
+end
+
+def fun_l2_n903(x)
+ if (x < 1)
+ fun_l3_n373(x)
+ else
+ fun_l3_n646(x)
+ end
+end
+
+def fun_l2_n904(x)
+ if (x < 1)
+ fun_l3_n595(x)
+ else
+ fun_l3_n742(x)
+ end
+end
+
+def fun_l2_n905(x)
+ if (x < 1)
+ fun_l3_n102(x)
+ else
+ fun_l3_n140(x)
+ end
+end
+
+def fun_l2_n906(x)
+ if (x < 1)
+ fun_l3_n458(x)
+ else
+ fun_l3_n528(x)
+ end
+end
+
+def fun_l2_n907(x)
+ if (x < 1)
+ fun_l3_n970(x)
+ else
+ fun_l3_n841(x)
+ end
+end
+
+def fun_l2_n908(x)
+ if (x < 1)
+ fun_l3_n97(x)
+ else
+ fun_l3_n250(x)
+ end
+end
+
+def fun_l2_n909(x)
+ if (x < 1)
+ fun_l3_n381(x)
+ else
+ fun_l3_n44(x)
+ end
+end
+
+def fun_l2_n910(x)
+ if (x < 1)
+ fun_l3_n812(x)
+ else
+ fun_l3_n225(x)
+ end
+end
+
+def fun_l2_n911(x)
+ if (x < 1)
+ fun_l3_n849(x)
+ else
+ fun_l3_n683(x)
+ end
+end
+
+def fun_l2_n912(x)
+ if (x < 1)
+ fun_l3_n958(x)
+ else
+ fun_l3_n590(x)
+ end
+end
+
+def fun_l2_n913(x)
+ if (x < 1)
+ fun_l3_n858(x)
+ else
+ fun_l3_n140(x)
+ end
+end
+
+def fun_l2_n914(x)
+ if (x < 1)
+ fun_l3_n997(x)
+ else
+ fun_l3_n959(x)
+ end
+end
+
+def fun_l2_n915(x)
+ if (x < 1)
+ fun_l3_n184(x)
+ else
+ fun_l3_n910(x)
+ end
+end
+
+def fun_l2_n916(x)
+ if (x < 1)
+ fun_l3_n369(x)
+ else
+ fun_l3_n180(x)
+ end
+end
+
+def fun_l2_n917(x)
+ if (x < 1)
+ fun_l3_n537(x)
+ else
+ fun_l3_n927(x)
+ end
+end
+
+def fun_l2_n918(x)
+ if (x < 1)
+ fun_l3_n739(x)
+ else
+ fun_l3_n222(x)
+ end
+end
+
+def fun_l2_n919(x)
+ if (x < 1)
+ fun_l3_n640(x)
+ else
+ fun_l3_n406(x)
+ end
+end
+
+def fun_l2_n920(x)
+ if (x < 1)
+ fun_l3_n371(x)
+ else
+ fun_l3_n976(x)
+ end
+end
+
+def fun_l2_n921(x)
+ if (x < 1)
+ fun_l3_n262(x)
+ else
+ fun_l3_n532(x)
+ end
+end
+
+def fun_l2_n922(x)
+ if (x < 1)
+ fun_l3_n772(x)
+ else
+ fun_l3_n368(x)
+ end
+end
+
+def fun_l2_n923(x)
+ if (x < 1)
+ fun_l3_n935(x)
+ else
+ fun_l3_n109(x)
+ end
+end
+
+def fun_l2_n924(x)
+ if (x < 1)
+ fun_l3_n982(x)
+ else
+ fun_l3_n643(x)
+ end
+end
+
+def fun_l2_n925(x)
+ if (x < 1)
+ fun_l3_n849(x)
+ else
+ fun_l3_n266(x)
+ end
+end
+
+def fun_l2_n926(x)
+ if (x < 1)
+ fun_l3_n977(x)
+ else
+ fun_l3_n803(x)
+ end
+end
+
+def fun_l2_n927(x)
+ if (x < 1)
+ fun_l3_n706(x)
+ else
+ fun_l3_n441(x)
+ end
+end
+
+def fun_l2_n928(x)
+ if (x < 1)
+ fun_l3_n781(x)
+ else
+ fun_l3_n374(x)
+ end
+end
+
+def fun_l2_n929(x)
+ if (x < 1)
+ fun_l3_n122(x)
+ else
+ fun_l3_n851(x)
+ end
+end
+
+def fun_l2_n930(x)
+ if (x < 1)
+ fun_l3_n821(x)
+ else
+ fun_l3_n904(x)
+ end
+end
+
+def fun_l2_n931(x)
+ if (x < 1)
+ fun_l3_n379(x)
+ else
+ fun_l3_n211(x)
+ end
+end
+
+def fun_l2_n932(x)
+ if (x < 1)
+ fun_l3_n572(x)
+ else
+ fun_l3_n169(x)
+ end
+end
+
+def fun_l2_n933(x)
+ if (x < 1)
+ fun_l3_n620(x)
+ else
+ fun_l3_n703(x)
+ end
+end
+
+def fun_l2_n934(x)
+ if (x < 1)
+ fun_l3_n238(x)
+ else
+ fun_l3_n220(x)
+ end
+end
+
+def fun_l2_n935(x)
+ if (x < 1)
+ fun_l3_n652(x)
+ else
+ fun_l3_n822(x)
+ end
+end
+
+def fun_l2_n936(x)
+ if (x < 1)
+ fun_l3_n818(x)
+ else
+ fun_l3_n384(x)
+ end
+end
+
+def fun_l2_n937(x)
+ if (x < 1)
+ fun_l3_n560(x)
+ else
+ fun_l3_n875(x)
+ end
+end
+
+def fun_l2_n938(x)
+ if (x < 1)
+ fun_l3_n417(x)
+ else
+ fun_l3_n900(x)
+ end
+end
+
+def fun_l2_n939(x)
+ if (x < 1)
+ fun_l3_n740(x)
+ else
+ fun_l3_n431(x)
+ end
+end
+
+def fun_l2_n940(x)
+ if (x < 1)
+ fun_l3_n1(x)
+ else
+ fun_l3_n147(x)
+ end
+end
+
+def fun_l2_n941(x)
+ if (x < 1)
+ fun_l3_n64(x)
+ else
+ fun_l3_n317(x)
+ end
+end
+
+def fun_l2_n942(x)
+ if (x < 1)
+ fun_l3_n347(x)
+ else
+ fun_l3_n778(x)
+ end
+end
+
+def fun_l2_n943(x)
+ if (x < 1)
+ fun_l3_n819(x)
+ else
+ fun_l3_n446(x)
+ end
+end
+
+def fun_l2_n944(x)
+ if (x < 1)
+ fun_l3_n492(x)
+ else
+ fun_l3_n381(x)
+ end
+end
+
+def fun_l2_n945(x)
+ if (x < 1)
+ fun_l3_n594(x)
+ else
+ fun_l3_n413(x)
+ end
+end
+
+def fun_l2_n946(x)
+ if (x < 1)
+ fun_l3_n580(x)
+ else
+ fun_l3_n838(x)
+ end
+end
+
+def fun_l2_n947(x)
+ if (x < 1)
+ fun_l3_n880(x)
+ else
+ fun_l3_n768(x)
+ end
+end
+
+def fun_l2_n948(x)
+ if (x < 1)
+ fun_l3_n9(x)
+ else
+ fun_l3_n888(x)
+ end
+end
+
+def fun_l2_n949(x)
+ if (x < 1)
+ fun_l3_n365(x)
+ else
+ fun_l3_n322(x)
+ end
+end
+
+def fun_l2_n950(x)
+ if (x < 1)
+ fun_l3_n283(x)
+ else
+ fun_l3_n921(x)
+ end
+end
+
+def fun_l2_n951(x)
+ if (x < 1)
+ fun_l3_n740(x)
+ else
+ fun_l3_n336(x)
+ end
+end
+
+def fun_l2_n952(x)
+ if (x < 1)
+ fun_l3_n827(x)
+ else
+ fun_l3_n683(x)
+ end
+end
+
+def fun_l2_n953(x)
+ if (x < 1)
+ fun_l3_n289(x)
+ else
+ fun_l3_n915(x)
+ end
+end
+
+def fun_l2_n954(x)
+ if (x < 1)
+ fun_l3_n234(x)
+ else
+ fun_l3_n198(x)
+ end
+end
+
+def fun_l2_n955(x)
+ if (x < 1)
+ fun_l3_n364(x)
+ else
+ fun_l3_n152(x)
+ end
+end
+
+def fun_l2_n956(x)
+ if (x < 1)
+ fun_l3_n370(x)
+ else
+ fun_l3_n786(x)
+ end
+end
+
+def fun_l2_n957(x)
+ if (x < 1)
+ fun_l3_n672(x)
+ else
+ fun_l3_n375(x)
+ end
+end
+
+def fun_l2_n958(x)
+ if (x < 1)
+ fun_l3_n423(x)
+ else
+ fun_l3_n448(x)
+ end
+end
+
+def fun_l2_n959(x)
+ if (x < 1)
+ fun_l3_n887(x)
+ else
+ fun_l3_n33(x)
+ end
+end
+
+def fun_l2_n960(x)
+ if (x < 1)
+ fun_l3_n280(x)
+ else
+ fun_l3_n334(x)
+ end
+end
+
+def fun_l2_n961(x)
+ if (x < 1)
+ fun_l3_n535(x)
+ else
+ fun_l3_n524(x)
+ end
+end
+
+def fun_l2_n962(x)
+ if (x < 1)
+ fun_l3_n689(x)
+ else
+ fun_l3_n426(x)
+ end
+end
+
+def fun_l2_n963(x)
+ if (x < 1)
+ fun_l3_n235(x)
+ else
+ fun_l3_n286(x)
+ end
+end
+
+def fun_l2_n964(x)
+ if (x < 1)
+ fun_l3_n116(x)
+ else
+ fun_l3_n308(x)
+ end
+end
+
+def fun_l2_n965(x)
+ if (x < 1)
+ fun_l3_n174(x)
+ else
+ fun_l3_n823(x)
+ end
+end
+
+def fun_l2_n966(x)
+ if (x < 1)
+ fun_l3_n792(x)
+ else
+ fun_l3_n29(x)
+ end
+end
+
+def fun_l2_n967(x)
+ if (x < 1)
+ fun_l3_n755(x)
+ else
+ fun_l3_n689(x)
+ end
+end
+
+def fun_l2_n968(x)
+ if (x < 1)
+ fun_l3_n167(x)
+ else
+ fun_l3_n287(x)
+ end
+end
+
+def fun_l2_n969(x)
+ if (x < 1)
+ fun_l3_n836(x)
+ else
+ fun_l3_n892(x)
+ end
+end
+
+def fun_l2_n970(x)
+ if (x < 1)
+ fun_l3_n201(x)
+ else
+ fun_l3_n677(x)
+ end
+end
+
+def fun_l2_n971(x)
+ if (x < 1)
+ fun_l3_n990(x)
+ else
+ fun_l3_n251(x)
+ end
+end
+
+def fun_l2_n972(x)
+ if (x < 1)
+ fun_l3_n500(x)
+ else
+ fun_l3_n686(x)
+ end
+end
+
+def fun_l2_n973(x)
+ if (x < 1)
+ fun_l3_n969(x)
+ else
+ fun_l3_n819(x)
+ end
+end
+
+def fun_l2_n974(x)
+ if (x < 1)
+ fun_l3_n87(x)
+ else
+ fun_l3_n120(x)
+ end
+end
+
+def fun_l2_n975(x)
+ if (x < 1)
+ fun_l3_n701(x)
+ else
+ fun_l3_n569(x)
+ end
+end
+
+def fun_l2_n976(x)
+ if (x < 1)
+ fun_l3_n128(x)
+ else
+ fun_l3_n310(x)
+ end
+end
+
+def fun_l2_n977(x)
+ if (x < 1)
+ fun_l3_n690(x)
+ else
+ fun_l3_n5(x)
+ end
+end
+
+def fun_l2_n978(x)
+ if (x < 1)
+ fun_l3_n432(x)
+ else
+ fun_l3_n964(x)
+ end
+end
+
+def fun_l2_n979(x)
+ if (x < 1)
+ fun_l3_n198(x)
+ else
+ fun_l3_n161(x)
+ end
+end
+
+def fun_l2_n980(x)
+ if (x < 1)
+ fun_l3_n415(x)
+ else
+ fun_l3_n768(x)
+ end
+end
+
+def fun_l2_n981(x)
+ if (x < 1)
+ fun_l3_n635(x)
+ else
+ fun_l3_n569(x)
+ end
+end
+
+def fun_l2_n982(x)
+ if (x < 1)
+ fun_l3_n326(x)
+ else
+ fun_l3_n338(x)
+ end
+end
+
+def fun_l2_n983(x)
+ if (x < 1)
+ fun_l3_n243(x)
+ else
+ fun_l3_n48(x)
+ end
+end
+
+def fun_l2_n984(x)
+ if (x < 1)
+ fun_l3_n204(x)
+ else
+ fun_l3_n141(x)
+ end
+end
+
+def fun_l2_n985(x)
+ if (x < 1)
+ fun_l3_n805(x)
+ else
+ fun_l3_n577(x)
+ end
+end
+
+def fun_l2_n986(x)
+ if (x < 1)
+ fun_l3_n237(x)
+ else
+ fun_l3_n833(x)
+ end
+end
+
+def fun_l2_n987(x)
+ if (x < 1)
+ fun_l3_n643(x)
+ else
+ fun_l3_n629(x)
+ end
+end
+
+def fun_l2_n988(x)
+ if (x < 1)
+ fun_l3_n911(x)
+ else
+ fun_l3_n712(x)
+ end
+end
+
+def fun_l2_n989(x)
+ if (x < 1)
+ fun_l3_n936(x)
+ else
+ fun_l3_n300(x)
+ end
+end
+
+def fun_l2_n990(x)
+ if (x < 1)
+ fun_l3_n561(x)
+ else
+ fun_l3_n281(x)
+ end
+end
+
+def fun_l2_n991(x)
+ if (x < 1)
+ fun_l3_n226(x)
+ else
+ fun_l3_n203(x)
+ end
+end
+
+def fun_l2_n992(x)
+ if (x < 1)
+ fun_l3_n727(x)
+ else
+ fun_l3_n437(x)
+ end
+end
+
+def fun_l2_n993(x)
+ if (x < 1)
+ fun_l3_n608(x)
+ else
+ fun_l3_n169(x)
+ end
+end
+
+def fun_l2_n994(x)
+ if (x < 1)
+ fun_l3_n30(x)
+ else
+ fun_l3_n980(x)
+ end
+end
+
+def fun_l2_n995(x)
+ if (x < 1)
+ fun_l3_n652(x)
+ else
+ fun_l3_n122(x)
+ end
+end
+
+def fun_l2_n996(x)
+ if (x < 1)
+ fun_l3_n334(x)
+ else
+ fun_l3_n668(x)
+ end
+end
+
+def fun_l2_n997(x)
+ if (x < 1)
+ fun_l3_n241(x)
+ else
+ fun_l3_n515(x)
+ end
+end
+
+def fun_l2_n998(x)
+ if (x < 1)
+ fun_l3_n665(x)
+ else
+ fun_l3_n54(x)
+ end
+end
+
+def fun_l2_n999(x)
+ if (x < 1)
+ fun_l3_n568(x)
+ else
+ fun_l3_n652(x)
+ end
+end
+
+def fun_l3_n0(x)
+ if (x < 1)
+ fun_l4_n169(x)
+ else
+ fun_l4_n923(x)
+ end
+end
+
+def fun_l3_n1(x)
+ if (x < 1)
+ fun_l4_n214(x)
+ else
+ fun_l4_n506(x)
+ end
+end
+
+def fun_l3_n2(x)
+ if (x < 1)
+ fun_l4_n513(x)
+ else
+ fun_l4_n409(x)
+ end
+end
+
+def fun_l3_n3(x)
+ if (x < 1)
+ fun_l4_n133(x)
+ else
+ fun_l4_n293(x)
+ end
+end
+
+def fun_l3_n4(x)
+ if (x < 1)
+ fun_l4_n550(x)
+ else
+ fun_l4_n95(x)
+ end
+end
+
+def fun_l3_n5(x)
+ if (x < 1)
+ fun_l4_n13(x)
+ else
+ fun_l4_n508(x)
+ end
+end
+
+def fun_l3_n6(x)
+ if (x < 1)
+ fun_l4_n607(x)
+ else
+ fun_l4_n140(x)
+ end
+end
+
+def fun_l3_n7(x)
+ if (x < 1)
+ fun_l4_n65(x)
+ else
+ fun_l4_n90(x)
+ end
+end
+
+def fun_l3_n8(x)
+ if (x < 1)
+ fun_l4_n516(x)
+ else
+ fun_l4_n445(x)
+ end
+end
+
+def fun_l3_n9(x)
+ if (x < 1)
+ fun_l4_n713(x)
+ else
+ fun_l4_n487(x)
+ end
+end
+
+def fun_l3_n10(x)
+ if (x < 1)
+ fun_l4_n16(x)
+ else
+ fun_l4_n547(x)
+ end
+end
+
+def fun_l3_n11(x)
+ if (x < 1)
+ fun_l4_n561(x)
+ else
+ fun_l4_n530(x)
+ end
+end
+
+def fun_l3_n12(x)
+ if (x < 1)
+ fun_l4_n866(x)
+ else
+ fun_l4_n187(x)
+ end
+end
+
+def fun_l3_n13(x)
+ if (x < 1)
+ fun_l4_n8(x)
+ else
+ fun_l4_n458(x)
+ end
+end
+
+def fun_l3_n14(x)
+ if (x < 1)
+ fun_l4_n627(x)
+ else
+ fun_l4_n122(x)
+ end
+end
+
+def fun_l3_n15(x)
+ if (x < 1)
+ fun_l4_n988(x)
+ else
+ fun_l4_n4(x)
+ end
+end
+
+def fun_l3_n16(x)
+ if (x < 1)
+ fun_l4_n654(x)
+ else
+ fun_l4_n863(x)
+ end
+end
+
+def fun_l3_n17(x)
+ if (x < 1)
+ fun_l4_n112(x)
+ else
+ fun_l4_n223(x)
+ end
+end
+
+def fun_l3_n18(x)
+ if (x < 1)
+ fun_l4_n808(x)
+ else
+ fun_l4_n161(x)
+ end
+end
+
+def fun_l3_n19(x)
+ if (x < 1)
+ fun_l4_n265(x)
+ else
+ fun_l4_n860(x)
+ end
+end
+
+def fun_l3_n20(x)
+ if (x < 1)
+ fun_l4_n60(x)
+ else
+ fun_l4_n943(x)
+ end
+end
+
+def fun_l3_n21(x)
+ if (x < 1)
+ fun_l4_n707(x)
+ else
+ fun_l4_n990(x)
+ end
+end
+
+def fun_l3_n22(x)
+ if (x < 1)
+ fun_l4_n774(x)
+ else
+ fun_l4_n686(x)
+ end
+end
+
+def fun_l3_n23(x)
+ if (x < 1)
+ fun_l4_n552(x)
+ else
+ fun_l4_n935(x)
+ end
+end
+
+def fun_l3_n24(x)
+ if (x < 1)
+ fun_l4_n752(x)
+ else
+ fun_l4_n279(x)
+ end
+end
+
+def fun_l3_n25(x)
+ if (x < 1)
+ fun_l4_n325(x)
+ else
+ fun_l4_n440(x)
+ end
+end
+
+def fun_l3_n26(x)
+ if (x < 1)
+ fun_l4_n330(x)
+ else
+ fun_l4_n233(x)
+ end
+end
+
+def fun_l3_n27(x)
+ if (x < 1)
+ fun_l4_n112(x)
+ else
+ fun_l4_n399(x)
+ end
+end
+
+def fun_l3_n28(x)
+ if (x < 1)
+ fun_l4_n420(x)
+ else
+ fun_l4_n570(x)
+ end
+end
+
+def fun_l3_n29(x)
+ if (x < 1)
+ fun_l4_n515(x)
+ else
+ fun_l4_n485(x)
+ end
+end
+
+def fun_l3_n30(x)
+ if (x < 1)
+ fun_l4_n694(x)
+ else
+ fun_l4_n279(x)
+ end
+end
+
+def fun_l3_n31(x)
+ if (x < 1)
+ fun_l4_n683(x)
+ else
+ fun_l4_n396(x)
+ end
+end
+
+def fun_l3_n32(x)
+ if (x < 1)
+ fun_l4_n997(x)
+ else
+ fun_l4_n978(x)
+ end
+end
+
+def fun_l3_n33(x)
+ if (x < 1)
+ fun_l4_n260(x)
+ else
+ fun_l4_n895(x)
+ end
+end
+
+def fun_l3_n34(x)
+ if (x < 1)
+ fun_l4_n510(x)
+ else
+ fun_l4_n147(x)
+ end
+end
+
+def fun_l3_n35(x)
+ if (x < 1)
+ fun_l4_n415(x)
+ else
+ fun_l4_n590(x)
+ end
+end
+
+def fun_l3_n36(x)
+ if (x < 1)
+ fun_l4_n164(x)
+ else
+ fun_l4_n990(x)
+ end
+end
+
+def fun_l3_n37(x)
+ if (x < 1)
+ fun_l4_n744(x)
+ else
+ fun_l4_n981(x)
+ end
+end
+
+def fun_l3_n38(x)
+ if (x < 1)
+ fun_l4_n243(x)
+ else
+ fun_l4_n385(x)
+ end
+end
+
+def fun_l3_n39(x)
+ if (x < 1)
+ fun_l4_n874(x)
+ else
+ fun_l4_n941(x)
+ end
+end
+
+def fun_l3_n40(x)
+ if (x < 1)
+ fun_l4_n39(x)
+ else
+ fun_l4_n115(x)
+ end
+end
+
+def fun_l3_n41(x)
+ if (x < 1)
+ fun_l4_n829(x)
+ else
+ fun_l4_n991(x)
+ end
+end
+
+def fun_l3_n42(x)
+ if (x < 1)
+ fun_l4_n234(x)
+ else
+ fun_l4_n359(x)
+ end
+end
+
+def fun_l3_n43(x)
+ if (x < 1)
+ fun_l4_n481(x)
+ else
+ fun_l4_n368(x)
+ end
+end
+
+def fun_l3_n44(x)
+ if (x < 1)
+ fun_l4_n969(x)
+ else
+ fun_l4_n716(x)
+ end
+end
+
+def fun_l3_n45(x)
+ if (x < 1)
+ fun_l4_n858(x)
+ else
+ fun_l4_n446(x)
+ end
+end
+
+def fun_l3_n46(x)
+ if (x < 1)
+ fun_l4_n786(x)
+ else
+ fun_l4_n418(x)
+ end
+end
+
+def fun_l3_n47(x)
+ if (x < 1)
+ fun_l4_n261(x)
+ else
+ fun_l4_n346(x)
+ end
+end
+
+def fun_l3_n48(x)
+ if (x < 1)
+ fun_l4_n422(x)
+ else
+ fun_l4_n710(x)
+ end
+end
+
+def fun_l3_n49(x)
+ if (x < 1)
+ fun_l4_n533(x)
+ else
+ fun_l4_n599(x)
+ end
+end
+
+def fun_l3_n50(x)
+ if (x < 1)
+ fun_l4_n922(x)
+ else
+ fun_l4_n90(x)
+ end
+end
+
+def fun_l3_n51(x)
+ if (x < 1)
+ fun_l4_n718(x)
+ else
+ fun_l4_n854(x)
+ end
+end
+
+def fun_l3_n52(x)
+ if (x < 1)
+ fun_l4_n993(x)
+ else
+ fun_l4_n996(x)
+ end
+end
+
+def fun_l3_n53(x)
+ if (x < 1)
+ fun_l4_n628(x)
+ else
+ fun_l4_n589(x)
+ end
+end
+
+def fun_l3_n54(x)
+ if (x < 1)
+ fun_l4_n735(x)
+ else
+ fun_l4_n258(x)
+ end
+end
+
+def fun_l3_n55(x)
+ if (x < 1)
+ fun_l4_n794(x)
+ else
+ fun_l4_n559(x)
+ end
+end
+
+def fun_l3_n56(x)
+ if (x < 1)
+ fun_l4_n771(x)
+ else
+ fun_l4_n812(x)
+ end
+end
+
+def fun_l3_n57(x)
+ if (x < 1)
+ fun_l4_n106(x)
+ else
+ fun_l4_n144(x)
+ end
+end
+
+def fun_l3_n58(x)
+ if (x < 1)
+ fun_l4_n2(x)
+ else
+ fun_l4_n49(x)
+ end
+end
+
+def fun_l3_n59(x)
+ if (x < 1)
+ fun_l4_n540(x)
+ else
+ fun_l4_n164(x)
+ end
+end
+
+def fun_l3_n60(x)
+ if (x < 1)
+ fun_l4_n638(x)
+ else
+ fun_l4_n984(x)
+ end
+end
+
+def fun_l3_n61(x)
+ if (x < 1)
+ fun_l4_n144(x)
+ else
+ fun_l4_n236(x)
+ end
+end
+
+def fun_l3_n62(x)
+ if (x < 1)
+ fun_l4_n345(x)
+ else
+ fun_l4_n65(x)
+ end
+end
+
+def fun_l3_n63(x)
+ if (x < 1)
+ fun_l4_n112(x)
+ else
+ fun_l4_n216(x)
+ end
+end
+
+def fun_l3_n64(x)
+ if (x < 1)
+ fun_l4_n213(x)
+ else
+ fun_l4_n370(x)
+ end
+end
+
+def fun_l3_n65(x)
+ if (x < 1)
+ fun_l4_n845(x)
+ else
+ fun_l4_n672(x)
+ end
+end
+
+def fun_l3_n66(x)
+ if (x < 1)
+ fun_l4_n951(x)
+ else
+ fun_l4_n415(x)
+ end
+end
+
+def fun_l3_n67(x)
+ if (x < 1)
+ fun_l4_n997(x)
+ else
+ fun_l4_n760(x)
+ end
+end
+
+def fun_l3_n68(x)
+ if (x < 1)
+ fun_l4_n595(x)
+ else
+ fun_l4_n517(x)
+ end
+end
+
+def fun_l3_n69(x)
+ if (x < 1)
+ fun_l4_n776(x)
+ else
+ fun_l4_n550(x)
+ end
+end
+
+def fun_l3_n70(x)
+ if (x < 1)
+ fun_l4_n360(x)
+ else
+ fun_l4_n836(x)
+ end
+end
+
+def fun_l3_n71(x)
+ if (x < 1)
+ fun_l4_n214(x)
+ else
+ fun_l4_n532(x)
+ end
+end
+
+def fun_l3_n72(x)
+ if (x < 1)
+ fun_l4_n138(x)
+ else
+ fun_l4_n881(x)
+ end
+end
+
+def fun_l3_n73(x)
+ if (x < 1)
+ fun_l4_n793(x)
+ else
+ fun_l4_n866(x)
+ end
+end
+
+def fun_l3_n74(x)
+ if (x < 1)
+ fun_l4_n883(x)
+ else
+ fun_l4_n730(x)
+ end
+end
+
+def fun_l3_n75(x)
+ if (x < 1)
+ fun_l4_n525(x)
+ else
+ fun_l4_n188(x)
+ end
+end
+
+def fun_l3_n76(x)
+ if (x < 1)
+ fun_l4_n528(x)
+ else
+ fun_l4_n723(x)
+ end
+end
+
+def fun_l3_n77(x)
+ if (x < 1)
+ fun_l4_n954(x)
+ else
+ fun_l4_n581(x)
+ end
+end
+
+def fun_l3_n78(x)
+ if (x < 1)
+ fun_l4_n614(x)
+ else
+ fun_l4_n941(x)
+ end
+end
+
+def fun_l3_n79(x)
+ if (x < 1)
+ fun_l4_n396(x)
+ else
+ fun_l4_n539(x)
+ end
+end
+
+def fun_l3_n80(x)
+ if (x < 1)
+ fun_l4_n1(x)
+ else
+ fun_l4_n708(x)
+ end
+end
+
+def fun_l3_n81(x)
+ if (x < 1)
+ fun_l4_n626(x)
+ else
+ fun_l4_n418(x)
+ end
+end
+
+def fun_l3_n82(x)
+ if (x < 1)
+ fun_l4_n5(x)
+ else
+ fun_l4_n108(x)
+ end
+end
+
+def fun_l3_n83(x)
+ if (x < 1)
+ fun_l4_n683(x)
+ else
+ fun_l4_n679(x)
+ end
+end
+
+def fun_l3_n84(x)
+ if (x < 1)
+ fun_l4_n613(x)
+ else
+ fun_l4_n596(x)
+ end
+end
+
+def fun_l3_n85(x)
+ if (x < 1)
+ fun_l4_n490(x)
+ else
+ fun_l4_n178(x)
+ end
+end
+
+def fun_l3_n86(x)
+ if (x < 1)
+ fun_l4_n286(x)
+ else
+ fun_l4_n724(x)
+ end
+end
+
+def fun_l3_n87(x)
+ if (x < 1)
+ fun_l4_n989(x)
+ else
+ fun_l4_n711(x)
+ end
+end
+
+def fun_l3_n88(x)
+ if (x < 1)
+ fun_l4_n422(x)
+ else
+ fun_l4_n259(x)
+ end
+end
+
+def fun_l3_n89(x)
+ if (x < 1)
+ fun_l4_n938(x)
+ else
+ fun_l4_n123(x)
+ end
+end
+
+def fun_l3_n90(x)
+ if (x < 1)
+ fun_l4_n589(x)
+ else
+ fun_l4_n231(x)
+ end
+end
+
+def fun_l3_n91(x)
+ if (x < 1)
+ fun_l4_n484(x)
+ else
+ fun_l4_n439(x)
+ end
+end
+
+def fun_l3_n92(x)
+ if (x < 1)
+ fun_l4_n469(x)
+ else
+ fun_l4_n737(x)
+ end
+end
+
+def fun_l3_n93(x)
+ if (x < 1)
+ fun_l4_n93(x)
+ else
+ fun_l4_n907(x)
+ end
+end
+
+def fun_l3_n94(x)
+ if (x < 1)
+ fun_l4_n468(x)
+ else
+ fun_l4_n219(x)
+ end
+end
+
+def fun_l3_n95(x)
+ if (x < 1)
+ fun_l4_n409(x)
+ else
+ fun_l4_n921(x)
+ end
+end
+
+def fun_l3_n96(x)
+ if (x < 1)
+ fun_l4_n952(x)
+ else
+ fun_l4_n167(x)
+ end
+end
+
+def fun_l3_n97(x)
+ if (x < 1)
+ fun_l4_n177(x)
+ else
+ fun_l4_n462(x)
+ end
+end
+
+def fun_l3_n98(x)
+ if (x < 1)
+ fun_l4_n351(x)
+ else
+ fun_l4_n89(x)
+ end
+end
+
+def fun_l3_n99(x)
+ if (x < 1)
+ fun_l4_n869(x)
+ else
+ fun_l4_n502(x)
+ end
+end
+
+def fun_l3_n100(x)
+ if (x < 1)
+ fun_l4_n985(x)
+ else
+ fun_l4_n297(x)
+ end
+end
+
+def fun_l3_n101(x)
+ if (x < 1)
+ fun_l4_n48(x)
+ else
+ fun_l4_n895(x)
+ end
+end
+
+def fun_l3_n102(x)
+ if (x < 1)
+ fun_l4_n92(x)
+ else
+ fun_l4_n36(x)
+ end
+end
+
+def fun_l3_n103(x)
+ if (x < 1)
+ fun_l4_n610(x)
+ else
+ fun_l4_n616(x)
+ end
+end
+
+def fun_l3_n104(x)
+ if (x < 1)
+ fun_l4_n472(x)
+ else
+ fun_l4_n689(x)
+ end
+end
+
+def fun_l3_n105(x)
+ if (x < 1)
+ fun_l4_n75(x)
+ else
+ fun_l4_n161(x)
+ end
+end
+
+def fun_l3_n106(x)
+ if (x < 1)
+ fun_l4_n300(x)
+ else
+ fun_l4_n767(x)
+ end
+end
+
+def fun_l3_n107(x)
+ if (x < 1)
+ fun_l4_n707(x)
+ else
+ fun_l4_n229(x)
+ end
+end
+
+def fun_l3_n108(x)
+ if (x < 1)
+ fun_l4_n761(x)
+ else
+ fun_l4_n97(x)
+ end
+end
+
+def fun_l3_n109(x)
+ if (x < 1)
+ fun_l4_n734(x)
+ else
+ fun_l4_n290(x)
+ end
+end
+
+def fun_l3_n110(x)
+ if (x < 1)
+ fun_l4_n819(x)
+ else
+ fun_l4_n567(x)
+ end
+end
+
+def fun_l3_n111(x)
+ if (x < 1)
+ fun_l4_n904(x)
+ else
+ fun_l4_n322(x)
+ end
+end
+
+def fun_l3_n112(x)
+ if (x < 1)
+ fun_l4_n907(x)
+ else
+ fun_l4_n667(x)
+ end
+end
+
+def fun_l3_n113(x)
+ if (x < 1)
+ fun_l4_n473(x)
+ else
+ fun_l4_n620(x)
+ end
+end
+
+def fun_l3_n114(x)
+ if (x < 1)
+ fun_l4_n278(x)
+ else
+ fun_l4_n998(x)
+ end
+end
+
+def fun_l3_n115(x)
+ if (x < 1)
+ fun_l4_n185(x)
+ else
+ fun_l4_n962(x)
+ end
+end
+
+def fun_l3_n116(x)
+ if (x < 1)
+ fun_l4_n989(x)
+ else
+ fun_l4_n993(x)
+ end
+end
+
+def fun_l3_n117(x)
+ if (x < 1)
+ fun_l4_n140(x)
+ else
+ fun_l4_n456(x)
+ end
+end
+
+def fun_l3_n118(x)
+ if (x < 1)
+ fun_l4_n920(x)
+ else
+ fun_l4_n701(x)
+ end
+end
+
+def fun_l3_n119(x)
+ if (x < 1)
+ fun_l4_n263(x)
+ else
+ fun_l4_n837(x)
+ end
+end
+
+def fun_l3_n120(x)
+ if (x < 1)
+ fun_l4_n54(x)
+ else
+ fun_l4_n964(x)
+ end
+end
+
+def fun_l3_n121(x)
+ if (x < 1)
+ fun_l4_n540(x)
+ else
+ fun_l4_n543(x)
+ end
+end
+
+def fun_l3_n122(x)
+ if (x < 1)
+ fun_l4_n51(x)
+ else
+ fun_l4_n453(x)
+ end
+end
+
+def fun_l3_n123(x)
+ if (x < 1)
+ fun_l4_n726(x)
+ else
+ fun_l4_n785(x)
+ end
+end
+
+def fun_l3_n124(x)
+ if (x < 1)
+ fun_l4_n932(x)
+ else
+ fun_l4_n583(x)
+ end
+end
+
+def fun_l3_n125(x)
+ if (x < 1)
+ fun_l4_n471(x)
+ else
+ fun_l4_n518(x)
+ end
+end
+
+def fun_l3_n126(x)
+ if (x < 1)
+ fun_l4_n351(x)
+ else
+ fun_l4_n825(x)
+ end
+end
+
+def fun_l3_n127(x)
+ if (x < 1)
+ fun_l4_n759(x)
+ else
+ fun_l4_n203(x)
+ end
+end
+
+def fun_l3_n128(x)
+ if (x < 1)
+ fun_l4_n336(x)
+ else
+ fun_l4_n861(x)
+ end
+end
+
+def fun_l3_n129(x)
+ if (x < 1)
+ fun_l4_n573(x)
+ else
+ fun_l4_n568(x)
+ end
+end
+
+def fun_l3_n130(x)
+ if (x < 1)
+ fun_l4_n788(x)
+ else
+ fun_l4_n259(x)
+ end
+end
+
+def fun_l3_n131(x)
+ if (x < 1)
+ fun_l4_n392(x)
+ else
+ fun_l4_n932(x)
+ end
+end
+
+def fun_l3_n132(x)
+ if (x < 1)
+ fun_l4_n919(x)
+ else
+ fun_l4_n650(x)
+ end
+end
+
+def fun_l3_n133(x)
+ if (x < 1)
+ fun_l4_n895(x)
+ else
+ fun_l4_n983(x)
+ end
+end
+
+def fun_l3_n134(x)
+ if (x < 1)
+ fun_l4_n389(x)
+ else
+ fun_l4_n358(x)
+ end
+end
+
+def fun_l3_n135(x)
+ if (x < 1)
+ fun_l4_n732(x)
+ else
+ fun_l4_n747(x)
+ end
+end
+
+def fun_l3_n136(x)
+ if (x < 1)
+ fun_l4_n756(x)
+ else
+ fun_l4_n592(x)
+ end
+end
+
+def fun_l3_n137(x)
+ if (x < 1)
+ fun_l4_n581(x)
+ else
+ fun_l4_n24(x)
+ end
+end
+
+def fun_l3_n138(x)
+ if (x < 1)
+ fun_l4_n932(x)
+ else
+ fun_l4_n599(x)
+ end
+end
+
+def fun_l3_n139(x)
+ if (x < 1)
+ fun_l4_n955(x)
+ else
+ fun_l4_n148(x)
+ end
+end
+
+def fun_l3_n140(x)
+ if (x < 1)
+ fun_l4_n332(x)
+ else
+ fun_l4_n677(x)
+ end
+end
+
+def fun_l3_n141(x)
+ if (x < 1)
+ fun_l4_n152(x)
+ else
+ fun_l4_n696(x)
+ end
+end
+
+def fun_l3_n142(x)
+ if (x < 1)
+ fun_l4_n295(x)
+ else
+ fun_l4_n205(x)
+ end
+end
+
+def fun_l3_n143(x)
+ if (x < 1)
+ fun_l4_n543(x)
+ else
+ fun_l4_n951(x)
+ end
+end
+
+def fun_l3_n144(x)
+ if (x < 1)
+ fun_l4_n656(x)
+ else
+ fun_l4_n494(x)
+ end
+end
+
+def fun_l3_n145(x)
+ if (x < 1)
+ fun_l4_n729(x)
+ else
+ fun_l4_n749(x)
+ end
+end
+
+def fun_l3_n146(x)
+ if (x < 1)
+ fun_l4_n197(x)
+ else
+ fun_l4_n3(x)
+ end
+end
+
+def fun_l3_n147(x)
+ if (x < 1)
+ fun_l4_n519(x)
+ else
+ fun_l4_n36(x)
+ end
+end
+
+def fun_l3_n148(x)
+ if (x < 1)
+ fun_l4_n100(x)
+ else
+ fun_l4_n463(x)
+ end
+end
+
+def fun_l3_n149(x)
+ if (x < 1)
+ fun_l4_n890(x)
+ else
+ fun_l4_n947(x)
+ end
+end
+
+def fun_l3_n150(x)
+ if (x < 1)
+ fun_l4_n512(x)
+ else
+ fun_l4_n982(x)
+ end
+end
+
+def fun_l3_n151(x)
+ if (x < 1)
+ fun_l4_n750(x)
+ else
+ fun_l4_n781(x)
+ end
+end
+
+def fun_l3_n152(x)
+ if (x < 1)
+ fun_l4_n193(x)
+ else
+ fun_l4_n530(x)
+ end
+end
+
+def fun_l3_n153(x)
+ if (x < 1)
+ fun_l4_n189(x)
+ else
+ fun_l4_n209(x)
+ end
+end
+
+def fun_l3_n154(x)
+ if (x < 1)
+ fun_l4_n343(x)
+ else
+ fun_l4_n44(x)
+ end
+end
+
+def fun_l3_n155(x)
+ if (x < 1)
+ fun_l4_n536(x)
+ else
+ fun_l4_n228(x)
+ end
+end
+
+def fun_l3_n156(x)
+ if (x < 1)
+ fun_l4_n475(x)
+ else
+ fun_l4_n790(x)
+ end
+end
+
+def fun_l3_n157(x)
+ if (x < 1)
+ fun_l4_n954(x)
+ else
+ fun_l4_n242(x)
+ end
+end
+
+def fun_l3_n158(x)
+ if (x < 1)
+ fun_l4_n19(x)
+ else
+ fun_l4_n735(x)
+ end
+end
+
+def fun_l3_n159(x)
+ if (x < 1)
+ fun_l4_n900(x)
+ else
+ fun_l4_n456(x)
+ end
+end
+
+def fun_l3_n160(x)
+ if (x < 1)
+ fun_l4_n193(x)
+ else
+ fun_l4_n606(x)
+ end
+end
+
+def fun_l3_n161(x)
+ if (x < 1)
+ fun_l4_n684(x)
+ else
+ fun_l4_n622(x)
+ end
+end
+
+def fun_l3_n162(x)
+ if (x < 1)
+ fun_l4_n260(x)
+ else
+ fun_l4_n582(x)
+ end
+end
+
+def fun_l3_n163(x)
+ if (x < 1)
+ fun_l4_n713(x)
+ else
+ fun_l4_n601(x)
+ end
+end
+
+def fun_l3_n164(x)
+ if (x < 1)
+ fun_l4_n819(x)
+ else
+ fun_l4_n642(x)
+ end
+end
+
+def fun_l3_n165(x)
+ if (x < 1)
+ fun_l4_n45(x)
+ else
+ fun_l4_n777(x)
+ end
+end
+
+def fun_l3_n166(x)
+ if (x < 1)
+ fun_l4_n256(x)
+ else
+ fun_l4_n92(x)
+ end
+end
+
+def fun_l3_n167(x)
+ if (x < 1)
+ fun_l4_n975(x)
+ else
+ fun_l4_n962(x)
+ end
+end
+
+def fun_l3_n168(x)
+ if (x < 1)
+ fun_l4_n579(x)
+ else
+ fun_l4_n208(x)
+ end
+end
+
+def fun_l3_n169(x)
+ if (x < 1)
+ fun_l4_n133(x)
+ else
+ fun_l4_n636(x)
+ end
+end
+
+def fun_l3_n170(x)
+ if (x < 1)
+ fun_l4_n863(x)
+ else
+ fun_l4_n168(x)
+ end
+end
+
+def fun_l3_n171(x)
+ if (x < 1)
+ fun_l4_n396(x)
+ else
+ fun_l4_n654(x)
+ end
+end
+
+def fun_l3_n172(x)
+ if (x < 1)
+ fun_l4_n963(x)
+ else
+ fun_l4_n420(x)
+ end
+end
+
+def fun_l3_n173(x)
+ if (x < 1)
+ fun_l4_n487(x)
+ else
+ fun_l4_n573(x)
+ end
+end
+
+def fun_l3_n174(x)
+ if (x < 1)
+ fun_l4_n847(x)
+ else
+ fun_l4_n476(x)
+ end
+end
+
+def fun_l3_n175(x)
+ if (x < 1)
+ fun_l4_n712(x)
+ else
+ fun_l4_n522(x)
+ end
+end
+
+def fun_l3_n176(x)
+ if (x < 1)
+ fun_l4_n292(x)
+ else
+ fun_l4_n717(x)
+ end
+end
+
+def fun_l3_n177(x)
+ if (x < 1)
+ fun_l4_n945(x)
+ else
+ fun_l4_n146(x)
+ end
+end
+
+def fun_l3_n178(x)
+ if (x < 1)
+ fun_l4_n163(x)
+ else
+ fun_l4_n28(x)
+ end
+end
+
+def fun_l3_n179(x)
+ if (x < 1)
+ fun_l4_n738(x)
+ else
+ fun_l4_n502(x)
+ end
+end
+
+def fun_l3_n180(x)
+ if (x < 1)
+ fun_l4_n8(x)
+ else
+ fun_l4_n56(x)
+ end
+end
+
+def fun_l3_n181(x)
+ if (x < 1)
+ fun_l4_n58(x)
+ else
+ fun_l4_n155(x)
+ end
+end
+
+def fun_l3_n182(x)
+ if (x < 1)
+ fun_l4_n298(x)
+ else
+ fun_l4_n580(x)
+ end
+end
+
+def fun_l3_n183(x)
+ if (x < 1)
+ fun_l4_n860(x)
+ else
+ fun_l4_n176(x)
+ end
+end
+
+def fun_l3_n184(x)
+ if (x < 1)
+ fun_l4_n108(x)
+ else
+ fun_l4_n986(x)
+ end
+end
+
+def fun_l3_n185(x)
+ if (x < 1)
+ fun_l4_n366(x)
+ else
+ fun_l4_n110(x)
+ end
+end
+
+def fun_l3_n186(x)
+ if (x < 1)
+ fun_l4_n177(x)
+ else
+ fun_l4_n158(x)
+ end
+end
+
+def fun_l3_n187(x)
+ if (x < 1)
+ fun_l4_n212(x)
+ else
+ fun_l4_n803(x)
+ end
+end
+
+def fun_l3_n188(x)
+ if (x < 1)
+ fun_l4_n946(x)
+ else
+ fun_l4_n281(x)
+ end
+end
+
+def fun_l3_n189(x)
+ if (x < 1)
+ fun_l4_n610(x)
+ else
+ fun_l4_n691(x)
+ end
+end
+
+def fun_l3_n190(x)
+ if (x < 1)
+ fun_l4_n784(x)
+ else
+ fun_l4_n300(x)
+ end
+end
+
+def fun_l3_n191(x)
+ if (x < 1)
+ fun_l4_n272(x)
+ else
+ fun_l4_n809(x)
+ end
+end
+
+def fun_l3_n192(x)
+ if (x < 1)
+ fun_l4_n812(x)
+ else
+ fun_l4_n633(x)
+ end
+end
+
+def fun_l3_n193(x)
+ if (x < 1)
+ fun_l4_n880(x)
+ else
+ fun_l4_n267(x)
+ end
+end
+
+def fun_l3_n194(x)
+ if (x < 1)
+ fun_l4_n454(x)
+ else
+ fun_l4_n567(x)
+ end
+end
+
+def fun_l3_n195(x)
+ if (x < 1)
+ fun_l4_n919(x)
+ else
+ fun_l4_n184(x)
+ end
+end
+
+def fun_l3_n196(x)
+ if (x < 1)
+ fun_l4_n294(x)
+ else
+ fun_l4_n150(x)
+ end
+end
+
+def fun_l3_n197(x)
+ if (x < 1)
+ fun_l4_n543(x)
+ else
+ fun_l4_n319(x)
+ end
+end
+
+def fun_l3_n198(x)
+ if (x < 1)
+ fun_l4_n91(x)
+ else
+ fun_l4_n378(x)
+ end
+end
+
+def fun_l3_n199(x)
+ if (x < 1)
+ fun_l4_n590(x)
+ else
+ fun_l4_n195(x)
+ end
+end
+
+def fun_l3_n200(x)
+ if (x < 1)
+ fun_l4_n532(x)
+ else
+ fun_l4_n346(x)
+ end
+end
+
+def fun_l3_n201(x)
+ if (x < 1)
+ fun_l4_n340(x)
+ else
+ fun_l4_n129(x)
+ end
+end
+
+def fun_l3_n202(x)
+ if (x < 1)
+ fun_l4_n193(x)
+ else
+ fun_l4_n676(x)
+ end
+end
+
+def fun_l3_n203(x)
+ if (x < 1)
+ fun_l4_n210(x)
+ else
+ fun_l4_n982(x)
+ end
+end
+
+def fun_l3_n204(x)
+ if (x < 1)
+ fun_l4_n247(x)
+ else
+ fun_l4_n550(x)
+ end
+end
+
+def fun_l3_n205(x)
+ if (x < 1)
+ fun_l4_n727(x)
+ else
+ fun_l4_n737(x)
+ end
+end
+
+def fun_l3_n206(x)
+ if (x < 1)
+ fun_l4_n111(x)
+ else
+ fun_l4_n952(x)
+ end
+end
+
+def fun_l3_n207(x)
+ if (x < 1)
+ fun_l4_n996(x)
+ else
+ fun_l4_n865(x)
+ end
+end
+
+def fun_l3_n208(x)
+ if (x < 1)
+ fun_l4_n945(x)
+ else
+ fun_l4_n488(x)
+ end
+end
+
+def fun_l3_n209(x)
+ if (x < 1)
+ fun_l4_n697(x)
+ else
+ fun_l4_n366(x)
+ end
+end
+
+def fun_l3_n210(x)
+ if (x < 1)
+ fun_l4_n180(x)
+ else
+ fun_l4_n995(x)
+ end
+end
+
+def fun_l3_n211(x)
+ if (x < 1)
+ fun_l4_n972(x)
+ else
+ fun_l4_n783(x)
+ end
+end
+
+def fun_l3_n212(x)
+ if (x < 1)
+ fun_l4_n58(x)
+ else
+ fun_l4_n430(x)
+ end
+end
+
+def fun_l3_n213(x)
+ if (x < 1)
+ fun_l4_n904(x)
+ else
+ fun_l4_n703(x)
+ end
+end
+
+def fun_l3_n214(x)
+ if (x < 1)
+ fun_l4_n882(x)
+ else
+ fun_l4_n648(x)
+ end
+end
+
+def fun_l3_n215(x)
+ if (x < 1)
+ fun_l4_n800(x)
+ else
+ fun_l4_n680(x)
+ end
+end
+
+def fun_l3_n216(x)
+ if (x < 1)
+ fun_l4_n205(x)
+ else
+ fun_l4_n185(x)
+ end
+end
+
+def fun_l3_n217(x)
+ if (x < 1)
+ fun_l4_n242(x)
+ else
+ fun_l4_n834(x)
+ end
+end
+
+def fun_l3_n218(x)
+ if (x < 1)
+ fun_l4_n551(x)
+ else
+ fun_l4_n399(x)
+ end
+end
+
+def fun_l3_n219(x)
+ if (x < 1)
+ fun_l4_n820(x)
+ else
+ fun_l4_n403(x)
+ end
+end
+
+def fun_l3_n220(x)
+ if (x < 1)
+ fun_l4_n874(x)
+ else
+ fun_l4_n584(x)
+ end
+end
+
+def fun_l3_n221(x)
+ if (x < 1)
+ fun_l4_n845(x)
+ else
+ fun_l4_n56(x)
+ end
+end
+
+def fun_l3_n222(x)
+ if (x < 1)
+ fun_l4_n947(x)
+ else
+ fun_l4_n299(x)
+ end
+end
+
+def fun_l3_n223(x)
+ if (x < 1)
+ fun_l4_n533(x)
+ else
+ fun_l4_n184(x)
+ end
+end
+
+def fun_l3_n224(x)
+ if (x < 1)
+ fun_l4_n760(x)
+ else
+ fun_l4_n507(x)
+ end
+end
+
+def fun_l3_n225(x)
+ if (x < 1)
+ fun_l4_n47(x)
+ else
+ fun_l4_n712(x)
+ end
+end
+
+def fun_l3_n226(x)
+ if (x < 1)
+ fun_l4_n470(x)
+ else
+ fun_l4_n760(x)
+ end
+end
+
+def fun_l3_n227(x)
+ if (x < 1)
+ fun_l4_n932(x)
+ else
+ fun_l4_n292(x)
+ end
+end
+
+def fun_l3_n228(x)
+ if (x < 1)
+ fun_l4_n44(x)
+ else
+ fun_l4_n855(x)
+ end
+end
+
+def fun_l3_n229(x)
+ if (x < 1)
+ fun_l4_n385(x)
+ else
+ fun_l4_n284(x)
+ end
+end
+
+def fun_l3_n230(x)
+ if (x < 1)
+ fun_l4_n272(x)
+ else
+ fun_l4_n407(x)
+ end
+end
+
+def fun_l3_n231(x)
+ if (x < 1)
+ fun_l4_n820(x)
+ else
+ fun_l4_n375(x)
+ end
+end
+
+def fun_l3_n232(x)
+ if (x < 1)
+ fun_l4_n165(x)
+ else
+ fun_l4_n38(x)
+ end
+end
+
+def fun_l3_n233(x)
+ if (x < 1)
+ fun_l4_n772(x)
+ else
+ fun_l4_n179(x)
+ end
+end
+
+def fun_l3_n234(x)
+ if (x < 1)
+ fun_l4_n980(x)
+ else
+ fun_l4_n678(x)
+ end
+end
+
+def fun_l3_n235(x)
+ if (x < 1)
+ fun_l4_n279(x)
+ else
+ fun_l4_n834(x)
+ end
+end
+
+def fun_l3_n236(x)
+ if (x < 1)
+ fun_l4_n227(x)
+ else
+ fun_l4_n11(x)
+ end
+end
+
+def fun_l3_n237(x)
+ if (x < 1)
+ fun_l4_n724(x)
+ else
+ fun_l4_n659(x)
+ end
+end
+
+def fun_l3_n238(x)
+ if (x < 1)
+ fun_l4_n569(x)
+ else
+ fun_l4_n693(x)
+ end
+end
+
+def fun_l3_n239(x)
+ if (x < 1)
+ fun_l4_n933(x)
+ else
+ fun_l4_n897(x)
+ end
+end
+
+def fun_l3_n240(x)
+ if (x < 1)
+ fun_l4_n215(x)
+ else
+ fun_l4_n784(x)
+ end
+end
+
+def fun_l3_n241(x)
+ if (x < 1)
+ fun_l4_n964(x)
+ else
+ fun_l4_n430(x)
+ end
+end
+
+def fun_l3_n242(x)
+ if (x < 1)
+ fun_l4_n91(x)
+ else
+ fun_l4_n190(x)
+ end
+end
+
+def fun_l3_n243(x)
+ if (x < 1)
+ fun_l4_n375(x)
+ else
+ fun_l4_n638(x)
+ end
+end
+
+def fun_l3_n244(x)
+ if (x < 1)
+ fun_l4_n381(x)
+ else
+ fun_l4_n324(x)
+ end
+end
+
+def fun_l3_n245(x)
+ if (x < 1)
+ fun_l4_n983(x)
+ else
+ fun_l4_n248(x)
+ end
+end
+
+def fun_l3_n246(x)
+ if (x < 1)
+ fun_l4_n336(x)
+ else
+ fun_l4_n647(x)
+ end
+end
+
+def fun_l3_n247(x)
+ if (x < 1)
+ fun_l4_n64(x)
+ else
+ fun_l4_n957(x)
+ end
+end
+
+def fun_l3_n248(x)
+ if (x < 1)
+ fun_l4_n313(x)
+ else
+ fun_l4_n662(x)
+ end
+end
+
+def fun_l3_n249(x)
+ if (x < 1)
+ fun_l4_n528(x)
+ else
+ fun_l4_n448(x)
+ end
+end
+
+def fun_l3_n250(x)
+ if (x < 1)
+ fun_l4_n9(x)
+ else
+ fun_l4_n424(x)
+ end
+end
+
+def fun_l3_n251(x)
+ if (x < 1)
+ fun_l4_n290(x)
+ else
+ fun_l4_n416(x)
+ end
+end
+
+def fun_l3_n252(x)
+ if (x < 1)
+ fun_l4_n159(x)
+ else
+ fun_l4_n780(x)
+ end
+end
+
+def fun_l3_n253(x)
+ if (x < 1)
+ fun_l4_n863(x)
+ else
+ fun_l4_n192(x)
+ end
+end
+
+def fun_l3_n254(x)
+ if (x < 1)
+ fun_l4_n658(x)
+ else
+ fun_l4_n816(x)
+ end
+end
+
+def fun_l3_n255(x)
+ if (x < 1)
+ fun_l4_n686(x)
+ else
+ fun_l4_n586(x)
+ end
+end
+
+def fun_l3_n256(x)
+ if (x < 1)
+ fun_l4_n110(x)
+ else
+ fun_l4_n290(x)
+ end
+end
+
+def fun_l3_n257(x)
+ if (x < 1)
+ fun_l4_n355(x)
+ else
+ fun_l4_n862(x)
+ end
+end
+
+def fun_l3_n258(x)
+ if (x < 1)
+ fun_l4_n63(x)
+ else
+ fun_l4_n205(x)
+ end
+end
+
+def fun_l3_n259(x)
+ if (x < 1)
+ fun_l4_n766(x)
+ else
+ fun_l4_n130(x)
+ end
+end
+
+def fun_l3_n260(x)
+ if (x < 1)
+ fun_l4_n670(x)
+ else
+ fun_l4_n313(x)
+ end
+end
+
+def fun_l3_n261(x)
+ if (x < 1)
+ fun_l4_n738(x)
+ else
+ fun_l4_n796(x)
+ end
+end
+
+def fun_l3_n262(x)
+ if (x < 1)
+ fun_l4_n925(x)
+ else
+ fun_l4_n267(x)
+ end
+end
+
+def fun_l3_n263(x)
+ if (x < 1)
+ fun_l4_n515(x)
+ else
+ fun_l4_n298(x)
+ end
+end
+
+def fun_l3_n264(x)
+ if (x < 1)
+ fun_l4_n883(x)
+ else
+ fun_l4_n809(x)
+ end
+end
+
+def fun_l3_n265(x)
+ if (x < 1)
+ fun_l4_n138(x)
+ else
+ fun_l4_n665(x)
+ end
+end
+
+def fun_l3_n266(x)
+ if (x < 1)
+ fun_l4_n141(x)
+ else
+ fun_l4_n641(x)
+ end
+end
+
+def fun_l3_n267(x)
+ if (x < 1)
+ fun_l4_n936(x)
+ else
+ fun_l4_n233(x)
+ end
+end
+
+def fun_l3_n268(x)
+ if (x < 1)
+ fun_l4_n28(x)
+ else
+ fun_l4_n351(x)
+ end
+end
+
+def fun_l3_n269(x)
+ if (x < 1)
+ fun_l4_n62(x)
+ else
+ fun_l4_n17(x)
+ end
+end
+
+def fun_l3_n270(x)
+ if (x < 1)
+ fun_l4_n489(x)
+ else
+ fun_l4_n408(x)
+ end
+end
+
+def fun_l3_n271(x)
+ if (x < 1)
+ fun_l4_n276(x)
+ else
+ fun_l4_n799(x)
+ end
+end
+
+def fun_l3_n272(x)
+ if (x < 1)
+ fun_l4_n103(x)
+ else
+ fun_l4_n804(x)
+ end
+end
+
+def fun_l3_n273(x)
+ if (x < 1)
+ fun_l4_n850(x)
+ else
+ fun_l4_n388(x)
+ end
+end
+
+def fun_l3_n274(x)
+ if (x < 1)
+ fun_l4_n651(x)
+ else
+ fun_l4_n484(x)
+ end
+end
+
+def fun_l3_n275(x)
+ if (x < 1)
+ fun_l4_n693(x)
+ else
+ fun_l4_n20(x)
+ end
+end
+
+def fun_l3_n276(x)
+ if (x < 1)
+ fun_l4_n897(x)
+ else
+ fun_l4_n328(x)
+ end
+end
+
+def fun_l3_n277(x)
+ if (x < 1)
+ fun_l4_n632(x)
+ else
+ fun_l4_n120(x)
+ end
+end
+
+def fun_l3_n278(x)
+ if (x < 1)
+ fun_l4_n919(x)
+ else
+ fun_l4_n921(x)
+ end
+end
+
+def fun_l3_n279(x)
+ if (x < 1)
+ fun_l4_n461(x)
+ else
+ fun_l4_n219(x)
+ end
+end
+
+def fun_l3_n280(x)
+ if (x < 1)
+ fun_l4_n867(x)
+ else
+ fun_l4_n682(x)
+ end
+end
+
+def fun_l3_n281(x)
+ if (x < 1)
+ fun_l4_n233(x)
+ else
+ fun_l4_n589(x)
+ end
+end
+
+def fun_l3_n282(x)
+ if (x < 1)
+ fun_l4_n516(x)
+ else
+ fun_l4_n970(x)
+ end
+end
+
+def fun_l3_n283(x)
+ if (x < 1)
+ fun_l4_n300(x)
+ else
+ fun_l4_n934(x)
+ end
+end
+
+def fun_l3_n284(x)
+ if (x < 1)
+ fun_l4_n736(x)
+ else
+ fun_l4_n516(x)
+ end
+end
+
+def fun_l3_n285(x)
+ if (x < 1)
+ fun_l4_n401(x)
+ else
+ fun_l4_n539(x)
+ end
+end
+
+def fun_l3_n286(x)
+ if (x < 1)
+ fun_l4_n342(x)
+ else
+ fun_l4_n142(x)
+ end
+end
+
+def fun_l3_n287(x)
+ if (x < 1)
+ fun_l4_n44(x)
+ else
+ fun_l4_n311(x)
+ end
+end
+
+def fun_l3_n288(x)
+ if (x < 1)
+ fun_l4_n698(x)
+ else
+ fun_l4_n407(x)
+ end
+end
+
+def fun_l3_n289(x)
+ if (x < 1)
+ fun_l4_n714(x)
+ else
+ fun_l4_n324(x)
+ end
+end
+
+def fun_l3_n290(x)
+ if (x < 1)
+ fun_l4_n862(x)
+ else
+ fun_l4_n807(x)
+ end
+end
+
+def fun_l3_n291(x)
+ if (x < 1)
+ fun_l4_n446(x)
+ else
+ fun_l4_n378(x)
+ end
+end
+
+def fun_l3_n292(x)
+ if (x < 1)
+ fun_l4_n418(x)
+ else
+ fun_l4_n194(x)
+ end
+end
+
+def fun_l3_n293(x)
+ if (x < 1)
+ fun_l4_n336(x)
+ else
+ fun_l4_n895(x)
+ end
+end
+
+def fun_l3_n294(x)
+ if (x < 1)
+ fun_l4_n928(x)
+ else
+ fun_l4_n154(x)
+ end
+end
+
+def fun_l3_n295(x)
+ if (x < 1)
+ fun_l4_n764(x)
+ else
+ fun_l4_n335(x)
+ end
+end
+
+def fun_l3_n296(x)
+ if (x < 1)
+ fun_l4_n840(x)
+ else
+ fun_l4_n513(x)
+ end
+end
+
+def fun_l3_n297(x)
+ if (x < 1)
+ fun_l4_n520(x)
+ else
+ fun_l4_n838(x)
+ end
+end
+
+def fun_l3_n298(x)
+ if (x < 1)
+ fun_l4_n831(x)
+ else
+ fun_l4_n344(x)
+ end
+end
+
+def fun_l3_n299(x)
+ if (x < 1)
+ fun_l4_n110(x)
+ else
+ fun_l4_n19(x)
+ end
+end
+
+def fun_l3_n300(x)
+ if (x < 1)
+ fun_l4_n272(x)
+ else
+ fun_l4_n952(x)
+ end
+end
+
+def fun_l3_n301(x)
+ if (x < 1)
+ fun_l4_n659(x)
+ else
+ fun_l4_n439(x)
+ end
+end
+
+def fun_l3_n302(x)
+ if (x < 1)
+ fun_l4_n787(x)
+ else
+ fun_l4_n189(x)
+ end
+end
+
+def fun_l3_n303(x)
+ if (x < 1)
+ fun_l4_n549(x)
+ else
+ fun_l4_n594(x)
+ end
+end
+
+def fun_l3_n304(x)
+ if (x < 1)
+ fun_l4_n255(x)
+ else
+ fun_l4_n822(x)
+ end
+end
+
+def fun_l3_n305(x)
+ if (x < 1)
+ fun_l4_n312(x)
+ else
+ fun_l4_n935(x)
+ end
+end
+
+def fun_l3_n306(x)
+ if (x < 1)
+ fun_l4_n831(x)
+ else
+ fun_l4_n299(x)
+ end
+end
+
+def fun_l3_n307(x)
+ if (x < 1)
+ fun_l4_n154(x)
+ else
+ fun_l4_n520(x)
+ end
+end
+
+def fun_l3_n308(x)
+ if (x < 1)
+ fun_l4_n768(x)
+ else
+ fun_l4_n676(x)
+ end
+end
+
+def fun_l3_n309(x)
+ if (x < 1)
+ fun_l4_n816(x)
+ else
+ fun_l4_n447(x)
+ end
+end
+
+def fun_l3_n310(x)
+ if (x < 1)
+ fun_l4_n689(x)
+ else
+ fun_l4_n244(x)
+ end
+end
+
+def fun_l3_n311(x)
+ if (x < 1)
+ fun_l4_n389(x)
+ else
+ fun_l4_n326(x)
+ end
+end
+
+def fun_l3_n312(x)
+ if (x < 1)
+ fun_l4_n125(x)
+ else
+ fun_l4_n502(x)
+ end
+end
+
+def fun_l3_n313(x)
+ if (x < 1)
+ fun_l4_n327(x)
+ else
+ fun_l4_n123(x)
+ end
+end
+
+def fun_l3_n314(x)
+ if (x < 1)
+ fun_l4_n558(x)
+ else
+ fun_l4_n940(x)
+ end
+end
+
+def fun_l3_n315(x)
+ if (x < 1)
+ fun_l4_n652(x)
+ else
+ fun_l4_n10(x)
+ end
+end
+
+def fun_l3_n316(x)
+ if (x < 1)
+ fun_l4_n483(x)
+ else
+ fun_l4_n315(x)
+ end
+end
+
+def fun_l3_n317(x)
+ if (x < 1)
+ fun_l4_n567(x)
+ else
+ fun_l4_n540(x)
+ end
+end
+
+def fun_l3_n318(x)
+ if (x < 1)
+ fun_l4_n449(x)
+ else
+ fun_l4_n760(x)
+ end
+end
+
+def fun_l3_n319(x)
+ if (x < 1)
+ fun_l4_n111(x)
+ else
+ fun_l4_n173(x)
+ end
+end
+
+def fun_l3_n320(x)
+ if (x < 1)
+ fun_l4_n373(x)
+ else
+ fun_l4_n615(x)
+ end
+end
+
+def fun_l3_n321(x)
+ if (x < 1)
+ fun_l4_n570(x)
+ else
+ fun_l4_n27(x)
+ end
+end
+
+def fun_l3_n322(x)
+ if (x < 1)
+ fun_l4_n235(x)
+ else
+ fun_l4_n695(x)
+ end
+end
+
+def fun_l3_n323(x)
+ if (x < 1)
+ fun_l4_n788(x)
+ else
+ fun_l4_n57(x)
+ end
+end
+
+def fun_l3_n324(x)
+ if (x < 1)
+ fun_l4_n7(x)
+ else
+ fun_l4_n75(x)
+ end
+end
+
+def fun_l3_n325(x)
+ if (x < 1)
+ fun_l4_n502(x)
+ else
+ fun_l4_n459(x)
+ end
+end
+
+def fun_l3_n326(x)
+ if (x < 1)
+ fun_l4_n572(x)
+ else
+ fun_l4_n324(x)
+ end
+end
+
+def fun_l3_n327(x)
+ if (x < 1)
+ fun_l4_n860(x)
+ else
+ fun_l4_n250(x)
+ end
+end
+
+def fun_l3_n328(x)
+ if (x < 1)
+ fun_l4_n242(x)
+ else
+ fun_l4_n667(x)
+ end
+end
+
+def fun_l3_n329(x)
+ if (x < 1)
+ fun_l4_n589(x)
+ else
+ fun_l4_n236(x)
+ end
+end
+
+def fun_l3_n330(x)
+ if (x < 1)
+ fun_l4_n100(x)
+ else
+ fun_l4_n476(x)
+ end
+end
+
+def fun_l3_n331(x)
+ if (x < 1)
+ fun_l4_n779(x)
+ else
+ fun_l4_n667(x)
+ end
+end
+
+def fun_l3_n332(x)
+ if (x < 1)
+ fun_l4_n277(x)
+ else
+ fun_l4_n441(x)
+ end
+end
+
+def fun_l3_n333(x)
+ if (x < 1)
+ fun_l4_n379(x)
+ else
+ fun_l4_n331(x)
+ end
+end
+
+def fun_l3_n334(x)
+ if (x < 1)
+ fun_l4_n802(x)
+ else
+ fun_l4_n588(x)
+ end
+end
+
+def fun_l3_n335(x)
+ if (x < 1)
+ fun_l4_n385(x)
+ else
+ fun_l4_n918(x)
+ end
+end
+
+def fun_l3_n336(x)
+ if (x < 1)
+ fun_l4_n532(x)
+ else
+ fun_l4_n254(x)
+ end
+end
+
+def fun_l3_n337(x)
+ if (x < 1)
+ fun_l4_n920(x)
+ else
+ fun_l4_n134(x)
+ end
+end
+
+def fun_l3_n338(x)
+ if (x < 1)
+ fun_l4_n803(x)
+ else
+ fun_l4_n746(x)
+ end
+end
+
+def fun_l3_n339(x)
+ if (x < 1)
+ fun_l4_n924(x)
+ else
+ fun_l4_n878(x)
+ end
+end
+
+def fun_l3_n340(x)
+ if (x < 1)
+ fun_l4_n166(x)
+ else
+ fun_l4_n776(x)
+ end
+end
+
+def fun_l3_n341(x)
+ if (x < 1)
+ fun_l4_n240(x)
+ else
+ fun_l4_n898(x)
+ end
+end
+
+def fun_l3_n342(x)
+ if (x < 1)
+ fun_l4_n810(x)
+ else
+ fun_l4_n423(x)
+ end
+end
+
+def fun_l3_n343(x)
+ if (x < 1)
+ fun_l4_n209(x)
+ else
+ fun_l4_n514(x)
+ end
+end
+
+def fun_l3_n344(x)
+ if (x < 1)
+ fun_l4_n505(x)
+ else
+ fun_l4_n321(x)
+ end
+end
+
+def fun_l3_n345(x)
+ if (x < 1)
+ fun_l4_n88(x)
+ else
+ fun_l4_n39(x)
+ end
+end
+
+def fun_l3_n346(x)
+ if (x < 1)
+ fun_l4_n848(x)
+ else
+ fun_l4_n357(x)
+ end
+end
+
+def fun_l3_n347(x)
+ if (x < 1)
+ fun_l4_n450(x)
+ else
+ fun_l4_n704(x)
+ end
+end
+
+def fun_l3_n348(x)
+ if (x < 1)
+ fun_l4_n881(x)
+ else
+ fun_l4_n916(x)
+ end
+end
+
+def fun_l3_n349(x)
+ if (x < 1)
+ fun_l4_n16(x)
+ else
+ fun_l4_n996(x)
+ end
+end
+
+def fun_l3_n350(x)
+ if (x < 1)
+ fun_l4_n839(x)
+ else
+ fun_l4_n697(x)
+ end
+end
+
+def fun_l3_n351(x)
+ if (x < 1)
+ fun_l4_n177(x)
+ else
+ fun_l4_n859(x)
+ end
+end
+
+def fun_l3_n352(x)
+ if (x < 1)
+ fun_l4_n684(x)
+ else
+ fun_l4_n778(x)
+ end
+end
+
+def fun_l3_n353(x)
+ if (x < 1)
+ fun_l4_n604(x)
+ else
+ fun_l4_n280(x)
+ end
+end
+
+def fun_l3_n354(x)
+ if (x < 1)
+ fun_l4_n366(x)
+ else
+ fun_l4_n576(x)
+ end
+end
+
+def fun_l3_n355(x)
+ if (x < 1)
+ fun_l4_n584(x)
+ else
+ fun_l4_n228(x)
+ end
+end
+
+def fun_l3_n356(x)
+ if (x < 1)
+ fun_l4_n844(x)
+ else
+ fun_l4_n799(x)
+ end
+end
+
+def fun_l3_n357(x)
+ if (x < 1)
+ fun_l4_n489(x)
+ else
+ fun_l4_n905(x)
+ end
+end
+
+def fun_l3_n358(x)
+ if (x < 1)
+ fun_l4_n781(x)
+ else
+ fun_l4_n565(x)
+ end
+end
+
+def fun_l3_n359(x)
+ if (x < 1)
+ fun_l4_n110(x)
+ else
+ fun_l4_n326(x)
+ end
+end
+
+def fun_l3_n360(x)
+ if (x < 1)
+ fun_l4_n915(x)
+ else
+ fun_l4_n489(x)
+ end
+end
+
+def fun_l3_n361(x)
+ if (x < 1)
+ fun_l4_n110(x)
+ else
+ fun_l4_n733(x)
+ end
+end
+
+def fun_l3_n362(x)
+ if (x < 1)
+ fun_l4_n93(x)
+ else
+ fun_l4_n549(x)
+ end
+end
+
+def fun_l3_n363(x)
+ if (x < 1)
+ fun_l4_n270(x)
+ else
+ fun_l4_n883(x)
+ end
+end
+
+def fun_l3_n364(x)
+ if (x < 1)
+ fun_l4_n512(x)
+ else
+ fun_l4_n555(x)
+ end
+end
+
+def fun_l3_n365(x)
+ if (x < 1)
+ fun_l4_n800(x)
+ else
+ fun_l4_n672(x)
+ end
+end
+
+def fun_l3_n366(x)
+ if (x < 1)
+ fun_l4_n535(x)
+ else
+ fun_l4_n320(x)
+ end
+end
+
+def fun_l3_n367(x)
+ if (x < 1)
+ fun_l4_n883(x)
+ else
+ fun_l4_n365(x)
+ end
+end
+
+def fun_l3_n368(x)
+ if (x < 1)
+ fun_l4_n306(x)
+ else
+ fun_l4_n614(x)
+ end
+end
+
+def fun_l3_n369(x)
+ if (x < 1)
+ fun_l4_n914(x)
+ else
+ fun_l4_n20(x)
+ end
+end
+
+def fun_l3_n370(x)
+ if (x < 1)
+ fun_l4_n230(x)
+ else
+ fun_l4_n585(x)
+ end
+end
+
+def fun_l3_n371(x)
+ if (x < 1)
+ fun_l4_n544(x)
+ else
+ fun_l4_n752(x)
+ end
+end
+
+def fun_l3_n372(x)
+ if (x < 1)
+ fun_l4_n984(x)
+ else
+ fun_l4_n738(x)
+ end
+end
+
+def fun_l3_n373(x)
+ if (x < 1)
+ fun_l4_n478(x)
+ else
+ fun_l4_n618(x)
+ end
+end
+
+def fun_l3_n374(x)
+ if (x < 1)
+ fun_l4_n941(x)
+ else
+ fun_l4_n746(x)
+ end
+end
+
+def fun_l3_n375(x)
+ if (x < 1)
+ fun_l4_n121(x)
+ else
+ fun_l4_n798(x)
+ end
+end
+
+def fun_l3_n376(x)
+ if (x < 1)
+ fun_l4_n851(x)
+ else
+ fun_l4_n681(x)
+ end
+end
+
+def fun_l3_n377(x)
+ if (x < 1)
+ fun_l4_n502(x)
+ else
+ fun_l4_n538(x)
+ end
+end
+
+def fun_l3_n378(x)
+ if (x < 1)
+ fun_l4_n432(x)
+ else
+ fun_l4_n226(x)
+ end
+end
+
+def fun_l3_n379(x)
+ if (x < 1)
+ fun_l4_n734(x)
+ else
+ fun_l4_n684(x)
+ end
+end
+
+def fun_l3_n380(x)
+ if (x < 1)
+ fun_l4_n912(x)
+ else
+ fun_l4_n116(x)
+ end
+end
+
+def fun_l3_n381(x)
+ if (x < 1)
+ fun_l4_n291(x)
+ else
+ fun_l4_n464(x)
+ end
+end
+
+def fun_l3_n382(x)
+ if (x < 1)
+ fun_l4_n285(x)
+ else
+ fun_l4_n943(x)
+ end
+end
+
+def fun_l3_n383(x)
+ if (x < 1)
+ fun_l4_n738(x)
+ else
+ fun_l4_n532(x)
+ end
+end
+
+def fun_l3_n384(x)
+ if (x < 1)
+ fun_l4_n503(x)
+ else
+ fun_l4_n724(x)
+ end
+end
+
+def fun_l3_n385(x)
+ if (x < 1)
+ fun_l4_n208(x)
+ else
+ fun_l4_n683(x)
+ end
+end
+
+def fun_l3_n386(x)
+ if (x < 1)
+ fun_l4_n673(x)
+ else
+ fun_l4_n230(x)
+ end
+end
+
+def fun_l3_n387(x)
+ if (x < 1)
+ fun_l4_n921(x)
+ else
+ fun_l4_n800(x)
+ end
+end
+
+def fun_l3_n388(x)
+ if (x < 1)
+ fun_l4_n461(x)
+ else
+ fun_l4_n369(x)
+ end
+end
+
+def fun_l3_n389(x)
+ if (x < 1)
+ fun_l4_n86(x)
+ else
+ fun_l4_n403(x)
+ end
+end
+
+def fun_l3_n390(x)
+ if (x < 1)
+ fun_l4_n883(x)
+ else
+ fun_l4_n92(x)
+ end
+end
+
+def fun_l3_n391(x)
+ if (x < 1)
+ fun_l4_n562(x)
+ else
+ fun_l4_n826(x)
+ end
+end
+
+def fun_l3_n392(x)
+ if (x < 1)
+ fun_l4_n459(x)
+ else
+ fun_l4_n821(x)
+ end
+end
+
+def fun_l3_n393(x)
+ if (x < 1)
+ fun_l4_n774(x)
+ else
+ fun_l4_n376(x)
+ end
+end
+
+def fun_l3_n394(x)
+ if (x < 1)
+ fun_l4_n114(x)
+ else
+ fun_l4_n451(x)
+ end
+end
+
+def fun_l3_n395(x)
+ if (x < 1)
+ fun_l4_n689(x)
+ else
+ fun_l4_n13(x)
+ end
+end
+
+def fun_l3_n396(x)
+ if (x < 1)
+ fun_l4_n929(x)
+ else
+ fun_l4_n777(x)
+ end
+end
+
+def fun_l3_n397(x)
+ if (x < 1)
+ fun_l4_n634(x)
+ else
+ fun_l4_n329(x)
+ end
+end
+
+def fun_l3_n398(x)
+ if (x < 1)
+ fun_l4_n972(x)
+ else
+ fun_l4_n572(x)
+ end
+end
+
+def fun_l3_n399(x)
+ if (x < 1)
+ fun_l4_n231(x)
+ else
+ fun_l4_n14(x)
+ end
+end
+
+def fun_l3_n400(x)
+ if (x < 1)
+ fun_l4_n357(x)
+ else
+ fun_l4_n881(x)
+ end
+end
+
+def fun_l3_n401(x)
+ if (x < 1)
+ fun_l4_n283(x)
+ else
+ fun_l4_n614(x)
+ end
+end
+
+def fun_l3_n402(x)
+ if (x < 1)
+ fun_l4_n634(x)
+ else
+ fun_l4_n653(x)
+ end
+end
+
+def fun_l3_n403(x)
+ if (x < 1)
+ fun_l4_n660(x)
+ else
+ fun_l4_n127(x)
+ end
+end
+
+def fun_l3_n404(x)
+ if (x < 1)
+ fun_l4_n523(x)
+ else
+ fun_l4_n467(x)
+ end
+end
+
+def fun_l3_n405(x)
+ if (x < 1)
+ fun_l4_n593(x)
+ else
+ fun_l4_n78(x)
+ end
+end
+
+def fun_l3_n406(x)
+ if (x < 1)
+ fun_l4_n514(x)
+ else
+ fun_l4_n783(x)
+ end
+end
+
+def fun_l3_n407(x)
+ if (x < 1)
+ fun_l4_n460(x)
+ else
+ fun_l4_n137(x)
+ end
+end
+
+def fun_l3_n408(x)
+ if (x < 1)
+ fun_l4_n3(x)
+ else
+ fun_l4_n224(x)
+ end
+end
+
+def fun_l3_n409(x)
+ if (x < 1)
+ fun_l4_n11(x)
+ else
+ fun_l4_n531(x)
+ end
+end
+
+def fun_l3_n410(x)
+ if (x < 1)
+ fun_l4_n94(x)
+ else
+ fun_l4_n717(x)
+ end
+end
+
+def fun_l3_n411(x)
+ if (x < 1)
+ fun_l4_n729(x)
+ else
+ fun_l4_n526(x)
+ end
+end
+
+def fun_l3_n412(x)
+ if (x < 1)
+ fun_l4_n86(x)
+ else
+ fun_l4_n26(x)
+ end
+end
+
+def fun_l3_n413(x)
+ if (x < 1)
+ fun_l4_n249(x)
+ else
+ fun_l4_n572(x)
+ end
+end
+
+def fun_l3_n414(x)
+ if (x < 1)
+ fun_l4_n578(x)
+ else
+ fun_l4_n512(x)
+ end
+end
+
+def fun_l3_n415(x)
+ if (x < 1)
+ fun_l4_n176(x)
+ else
+ fun_l4_n414(x)
+ end
+end
+
+def fun_l3_n416(x)
+ if (x < 1)
+ fun_l4_n757(x)
+ else
+ fun_l4_n385(x)
+ end
+end
+
+def fun_l3_n417(x)
+ if (x < 1)
+ fun_l4_n249(x)
+ else
+ fun_l4_n180(x)
+ end
+end
+
+def fun_l3_n418(x)
+ if (x < 1)
+ fun_l4_n193(x)
+ else
+ fun_l4_n294(x)
+ end
+end
+
+def fun_l3_n419(x)
+ if (x < 1)
+ fun_l4_n441(x)
+ else
+ fun_l4_n932(x)
+ end
+end
+
+def fun_l3_n420(x)
+ if (x < 1)
+ fun_l4_n492(x)
+ else
+ fun_l4_n239(x)
+ end
+end
+
+def fun_l3_n421(x)
+ if (x < 1)
+ fun_l4_n49(x)
+ else
+ fun_l4_n738(x)
+ end
+end
+
+def fun_l3_n422(x)
+ if (x < 1)
+ fun_l4_n546(x)
+ else
+ fun_l4_n285(x)
+ end
+end
+
+def fun_l3_n423(x)
+ if (x < 1)
+ fun_l4_n687(x)
+ else
+ fun_l4_n973(x)
+ end
+end
+
+def fun_l3_n424(x)
+ if (x < 1)
+ fun_l4_n876(x)
+ else
+ fun_l4_n591(x)
+ end
+end
+
+def fun_l3_n425(x)
+ if (x < 1)
+ fun_l4_n626(x)
+ else
+ fun_l4_n739(x)
+ end
+end
+
+def fun_l3_n426(x)
+ if (x < 1)
+ fun_l4_n439(x)
+ else
+ fun_l4_n709(x)
+ end
+end
+
+def fun_l3_n427(x)
+ if (x < 1)
+ fun_l4_n710(x)
+ else
+ fun_l4_n305(x)
+ end
+end
+
+def fun_l3_n428(x)
+ if (x < 1)
+ fun_l4_n61(x)
+ else
+ fun_l4_n520(x)
+ end
+end
+
+def fun_l3_n429(x)
+ if (x < 1)
+ fun_l4_n172(x)
+ else
+ fun_l4_n12(x)
+ end
+end
+
+def fun_l3_n430(x)
+ if (x < 1)
+ fun_l4_n432(x)
+ else
+ fun_l4_n174(x)
+ end
+end
+
+def fun_l3_n431(x)
+ if (x < 1)
+ fun_l4_n194(x)
+ else
+ fun_l4_n673(x)
+ end
+end
+
+def fun_l3_n432(x)
+ if (x < 1)
+ fun_l4_n952(x)
+ else
+ fun_l4_n798(x)
+ end
+end
+
+def fun_l3_n433(x)
+ if (x < 1)
+ fun_l4_n915(x)
+ else
+ fun_l4_n263(x)
+ end
+end
+
+def fun_l3_n434(x)
+ if (x < 1)
+ fun_l4_n735(x)
+ else
+ fun_l4_n882(x)
+ end
+end
+
+def fun_l3_n435(x)
+ if (x < 1)
+ fun_l4_n499(x)
+ else
+ fun_l4_n947(x)
+ end
+end
+
+def fun_l3_n436(x)
+ if (x < 1)
+ fun_l4_n744(x)
+ else
+ fun_l4_n187(x)
+ end
+end
+
+def fun_l3_n437(x)
+ if (x < 1)
+ fun_l4_n244(x)
+ else
+ fun_l4_n366(x)
+ end
+end
+
+def fun_l3_n438(x)
+ if (x < 1)
+ fun_l4_n228(x)
+ else
+ fun_l4_n866(x)
+ end
+end
+
+def fun_l3_n439(x)
+ if (x < 1)
+ fun_l4_n617(x)
+ else
+ fun_l4_n924(x)
+ end
+end
+
+def fun_l3_n440(x)
+ if (x < 1)
+ fun_l4_n302(x)
+ else
+ fun_l4_n691(x)
+ end
+end
+
+def fun_l3_n441(x)
+ if (x < 1)
+ fun_l4_n559(x)
+ else
+ fun_l4_n758(x)
+ end
+end
+
+def fun_l3_n442(x)
+ if (x < 1)
+ fun_l4_n412(x)
+ else
+ fun_l4_n544(x)
+ end
+end
+
+def fun_l3_n443(x)
+ if (x < 1)
+ fun_l4_n130(x)
+ else
+ fun_l4_n764(x)
+ end
+end
+
+def fun_l3_n444(x)
+ if (x < 1)
+ fun_l4_n135(x)
+ else
+ fun_l4_n65(x)
+ end
+end
+
+def fun_l3_n445(x)
+ if (x < 1)
+ fun_l4_n224(x)
+ else
+ fun_l4_n148(x)
+ end
+end
+
+def fun_l3_n446(x)
+ if (x < 1)
+ fun_l4_n238(x)
+ else
+ fun_l4_n808(x)
+ end
+end
+
+def fun_l3_n447(x)
+ if (x < 1)
+ fun_l4_n832(x)
+ else
+ fun_l4_n460(x)
+ end
+end
+
+def fun_l3_n448(x)
+ if (x < 1)
+ fun_l4_n897(x)
+ else
+ fun_l4_n817(x)
+ end
+end
+
+def fun_l3_n449(x)
+ if (x < 1)
+ fun_l4_n587(x)
+ else
+ fun_l4_n926(x)
+ end
+end
+
+def fun_l3_n450(x)
+ if (x < 1)
+ fun_l4_n575(x)
+ else
+ fun_l4_n274(x)
+ end
+end
+
+def fun_l3_n451(x)
+ if (x < 1)
+ fun_l4_n42(x)
+ else
+ fun_l4_n714(x)
+ end
+end
+
+def fun_l3_n452(x)
+ if (x < 1)
+ fun_l4_n101(x)
+ else
+ fun_l4_n470(x)
+ end
+end
+
+def fun_l3_n453(x)
+ if (x < 1)
+ fun_l4_n906(x)
+ else
+ fun_l4_n724(x)
+ end
+end
+
+def fun_l3_n454(x)
+ if (x < 1)
+ fun_l4_n682(x)
+ else
+ fun_l4_n709(x)
+ end
+end
+
+def fun_l3_n455(x)
+ if (x < 1)
+ fun_l4_n929(x)
+ else
+ fun_l4_n274(x)
+ end
+end
+
+def fun_l3_n456(x)
+ if (x < 1)
+ fun_l4_n10(x)
+ else
+ fun_l4_n101(x)
+ end
+end
+
+def fun_l3_n457(x)
+ if (x < 1)
+ fun_l4_n825(x)
+ else
+ fun_l4_n632(x)
+ end
+end
+
+def fun_l3_n458(x)
+ if (x < 1)
+ fun_l4_n2(x)
+ else
+ fun_l4_n723(x)
+ end
+end
+
+def fun_l3_n459(x)
+ if (x < 1)
+ fun_l4_n998(x)
+ else
+ fun_l4_n546(x)
+ end
+end
+
+def fun_l3_n460(x)
+ if (x < 1)
+ fun_l4_n483(x)
+ else
+ fun_l4_n445(x)
+ end
+end
+
+def fun_l3_n461(x)
+ if (x < 1)
+ fun_l4_n896(x)
+ else
+ fun_l4_n993(x)
+ end
+end
+
+def fun_l3_n462(x)
+ if (x < 1)
+ fun_l4_n710(x)
+ else
+ fun_l4_n529(x)
+ end
+end
+
+def fun_l3_n463(x)
+ if (x < 1)
+ fun_l4_n913(x)
+ else
+ fun_l4_n65(x)
+ end
+end
+
+def fun_l3_n464(x)
+ if (x < 1)
+ fun_l4_n712(x)
+ else
+ fun_l4_n412(x)
+ end
+end
+
+def fun_l3_n465(x)
+ if (x < 1)
+ fun_l4_n296(x)
+ else
+ fun_l4_n37(x)
+ end
+end
+
+def fun_l3_n466(x)
+ if (x < 1)
+ fun_l4_n241(x)
+ else
+ fun_l4_n649(x)
+ end
+end
+
+def fun_l3_n467(x)
+ if (x < 1)
+ fun_l4_n296(x)
+ else
+ fun_l4_n80(x)
+ end
+end
+
+def fun_l3_n468(x)
+ if (x < 1)
+ fun_l4_n270(x)
+ else
+ fun_l4_n192(x)
+ end
+end
+
+def fun_l3_n469(x)
+ if (x < 1)
+ fun_l4_n655(x)
+ else
+ fun_l4_n605(x)
+ end
+end
+
+def fun_l3_n470(x)
+ if (x < 1)
+ fun_l4_n180(x)
+ else
+ fun_l4_n807(x)
+ end
+end
+
+def fun_l3_n471(x)
+ if (x < 1)
+ fun_l4_n915(x)
+ else
+ fun_l4_n902(x)
+ end
+end
+
+def fun_l3_n472(x)
+ if (x < 1)
+ fun_l4_n527(x)
+ else
+ fun_l4_n638(x)
+ end
+end
+
+def fun_l3_n473(x)
+ if (x < 1)
+ fun_l4_n775(x)
+ else
+ fun_l4_n572(x)
+ end
+end
+
+def fun_l3_n474(x)
+ if (x < 1)
+ fun_l4_n856(x)
+ else
+ fun_l4_n182(x)
+ end
+end
+
+def fun_l3_n475(x)
+ if (x < 1)
+ fun_l4_n434(x)
+ else
+ fun_l4_n232(x)
+ end
+end
+
+def fun_l3_n476(x)
+ if (x < 1)
+ fun_l4_n208(x)
+ else
+ fun_l4_n37(x)
+ end
+end
+
+def fun_l3_n477(x)
+ if (x < 1)
+ fun_l4_n146(x)
+ else
+ fun_l4_n764(x)
+ end
+end
+
+def fun_l3_n478(x)
+ if (x < 1)
+ fun_l4_n806(x)
+ else
+ fun_l4_n148(x)
+ end
+end
+
+def fun_l3_n479(x)
+ if (x < 1)
+ fun_l4_n46(x)
+ else
+ fun_l4_n488(x)
+ end
+end
+
+def fun_l3_n480(x)
+ if (x < 1)
+ fun_l4_n637(x)
+ else
+ fun_l4_n48(x)
+ end
+end
+
+def fun_l3_n481(x)
+ if (x < 1)
+ fun_l4_n496(x)
+ else
+ fun_l4_n891(x)
+ end
+end
+
+def fun_l3_n482(x)
+ if (x < 1)
+ fun_l4_n282(x)
+ else
+ fun_l4_n736(x)
+ end
+end
+
+def fun_l3_n483(x)
+ if (x < 1)
+ fun_l4_n377(x)
+ else
+ fun_l4_n603(x)
+ end
+end
+
+def fun_l3_n484(x)
+ if (x < 1)
+ fun_l4_n689(x)
+ else
+ fun_l4_n201(x)
+ end
+end
+
+def fun_l3_n485(x)
+ if (x < 1)
+ fun_l4_n495(x)
+ else
+ fun_l4_n721(x)
+ end
+end
+
+def fun_l3_n486(x)
+ if (x < 1)
+ fun_l4_n128(x)
+ else
+ fun_l4_n400(x)
+ end
+end
+
+def fun_l3_n487(x)
+ if (x < 1)
+ fun_l4_n993(x)
+ else
+ fun_l4_n53(x)
+ end
+end
+
+def fun_l3_n488(x)
+ if (x < 1)
+ fun_l4_n913(x)
+ else
+ fun_l4_n814(x)
+ end
+end
+
+def fun_l3_n489(x)
+ if (x < 1)
+ fun_l4_n816(x)
+ else
+ fun_l4_n196(x)
+ end
+end
+
+def fun_l3_n490(x)
+ if (x < 1)
+ fun_l4_n754(x)
+ else
+ fun_l4_n451(x)
+ end
+end
+
+def fun_l3_n491(x)
+ if (x < 1)
+ fun_l4_n57(x)
+ else
+ fun_l4_n597(x)
+ end
+end
+
+def fun_l3_n492(x)
+ if (x < 1)
+ fun_l4_n539(x)
+ else
+ fun_l4_n893(x)
+ end
+end
+
+def fun_l3_n493(x)
+ if (x < 1)
+ fun_l4_n542(x)
+ else
+ fun_l4_n956(x)
+ end
+end
+
+def fun_l3_n494(x)
+ if (x < 1)
+ fun_l4_n479(x)
+ else
+ fun_l4_n448(x)
+ end
+end
+
+def fun_l3_n495(x)
+ if (x < 1)
+ fun_l4_n263(x)
+ else
+ fun_l4_n912(x)
+ end
+end
+
+def fun_l3_n496(x)
+ if (x < 1)
+ fun_l4_n463(x)
+ else
+ fun_l4_n112(x)
+ end
+end
+
+def fun_l3_n497(x)
+ if (x < 1)
+ fun_l4_n806(x)
+ else
+ fun_l4_n486(x)
+ end
+end
+
+def fun_l3_n498(x)
+ if (x < 1)
+ fun_l4_n155(x)
+ else
+ fun_l4_n298(x)
+ end
+end
+
+def fun_l3_n499(x)
+ if (x < 1)
+ fun_l4_n538(x)
+ else
+ fun_l4_n908(x)
+ end
+end
+
+def fun_l3_n500(x)
+ if (x < 1)
+ fun_l4_n769(x)
+ else
+ fun_l4_n681(x)
+ end
+end
+
+def fun_l3_n501(x)
+ if (x < 1)
+ fun_l4_n544(x)
+ else
+ fun_l4_n749(x)
+ end
+end
+
+def fun_l3_n502(x)
+ if (x < 1)
+ fun_l4_n505(x)
+ else
+ fun_l4_n66(x)
+ end
+end
+
+def fun_l3_n503(x)
+ if (x < 1)
+ fun_l4_n900(x)
+ else
+ fun_l4_n917(x)
+ end
+end
+
+def fun_l3_n504(x)
+ if (x < 1)
+ fun_l4_n982(x)
+ else
+ fun_l4_n707(x)
+ end
+end
+
+def fun_l3_n505(x)
+ if (x < 1)
+ fun_l4_n102(x)
+ else
+ fun_l4_n564(x)
+ end
+end
+
+def fun_l3_n506(x)
+ if (x < 1)
+ fun_l4_n332(x)
+ else
+ fun_l4_n367(x)
+ end
+end
+
+def fun_l3_n507(x)
+ if (x < 1)
+ fun_l4_n969(x)
+ else
+ fun_l4_n354(x)
+ end
+end
+
+def fun_l3_n508(x)
+ if (x < 1)
+ fun_l4_n405(x)
+ else
+ fun_l4_n485(x)
+ end
+end
+
+def fun_l3_n509(x)
+ if (x < 1)
+ fun_l4_n477(x)
+ else
+ fun_l4_n629(x)
+ end
+end
+
+def fun_l3_n510(x)
+ if (x < 1)
+ fun_l4_n753(x)
+ else
+ fun_l4_n78(x)
+ end
+end
+
+def fun_l3_n511(x)
+ if (x < 1)
+ fun_l4_n221(x)
+ else
+ fun_l4_n637(x)
+ end
+end
+
+def fun_l3_n512(x)
+ if (x < 1)
+ fun_l4_n540(x)
+ else
+ fun_l4_n267(x)
+ end
+end
+
+def fun_l3_n513(x)
+ if (x < 1)
+ fun_l4_n750(x)
+ else
+ fun_l4_n626(x)
+ end
+end
+
+def fun_l3_n514(x)
+ if (x < 1)
+ fun_l4_n160(x)
+ else
+ fun_l4_n32(x)
+ end
+end
+
+def fun_l3_n515(x)
+ if (x < 1)
+ fun_l4_n914(x)
+ else
+ fun_l4_n967(x)
+ end
+end
+
+def fun_l3_n516(x)
+ if (x < 1)
+ fun_l4_n380(x)
+ else
+ fun_l4_n83(x)
+ end
+end
+
+def fun_l3_n517(x)
+ if (x < 1)
+ fun_l4_n175(x)
+ else
+ fun_l4_n830(x)
+ end
+end
+
+def fun_l3_n518(x)
+ if (x < 1)
+ fun_l4_n579(x)
+ else
+ fun_l4_n773(x)
+ end
+end
+
+def fun_l3_n519(x)
+ if (x < 1)
+ fun_l4_n707(x)
+ else
+ fun_l4_n690(x)
+ end
+end
+
+def fun_l3_n520(x)
+ if (x < 1)
+ fun_l4_n587(x)
+ else
+ fun_l4_n754(x)
+ end
+end
+
+def fun_l3_n521(x)
+ if (x < 1)
+ fun_l4_n922(x)
+ else
+ fun_l4_n156(x)
+ end
+end
+
+def fun_l3_n522(x)
+ if (x < 1)
+ fun_l4_n299(x)
+ else
+ fun_l4_n937(x)
+ end
+end
+
+def fun_l3_n523(x)
+ if (x < 1)
+ fun_l4_n996(x)
+ else
+ fun_l4_n786(x)
+ end
+end
+
+def fun_l3_n524(x)
+ if (x < 1)
+ fun_l4_n988(x)
+ else
+ fun_l4_n930(x)
+ end
+end
+
+def fun_l3_n525(x)
+ if (x < 1)
+ fun_l4_n475(x)
+ else
+ fun_l4_n43(x)
+ end
+end
+
+def fun_l3_n526(x)
+ if (x < 1)
+ fun_l4_n367(x)
+ else
+ fun_l4_n167(x)
+ end
+end
+
+def fun_l3_n527(x)
+ if (x < 1)
+ fun_l4_n31(x)
+ else
+ fun_l4_n394(x)
+ end
+end
+
+def fun_l3_n528(x)
+ if (x < 1)
+ fun_l4_n92(x)
+ else
+ fun_l4_n304(x)
+ end
+end
+
+def fun_l3_n529(x)
+ if (x < 1)
+ fun_l4_n369(x)
+ else
+ fun_l4_n458(x)
+ end
+end
+
+def fun_l3_n530(x)
+ if (x < 1)
+ fun_l4_n475(x)
+ else
+ fun_l4_n8(x)
+ end
+end
+
+def fun_l3_n531(x)
+ if (x < 1)
+ fun_l4_n678(x)
+ else
+ fun_l4_n970(x)
+ end
+end
+
+def fun_l3_n532(x)
+ if (x < 1)
+ fun_l4_n349(x)
+ else
+ fun_l4_n853(x)
+ end
+end
+
+def fun_l3_n533(x)
+ if (x < 1)
+ fun_l4_n918(x)
+ else
+ fun_l4_n820(x)
+ end
+end
+
+def fun_l3_n534(x)
+ if (x < 1)
+ fun_l4_n369(x)
+ else
+ fun_l4_n445(x)
+ end
+end
+
+def fun_l3_n535(x)
+ if (x < 1)
+ fun_l4_n437(x)
+ else
+ fun_l4_n930(x)
+ end
+end
+
+def fun_l3_n536(x)
+ if (x < 1)
+ fun_l4_n143(x)
+ else
+ fun_l4_n986(x)
+ end
+end
+
+def fun_l3_n537(x)
+ if (x < 1)
+ fun_l4_n603(x)
+ else
+ fun_l4_n818(x)
+ end
+end
+
+def fun_l3_n538(x)
+ if (x < 1)
+ fun_l4_n14(x)
+ else
+ fun_l4_n994(x)
+ end
+end
+
+def fun_l3_n539(x)
+ if (x < 1)
+ fun_l4_n650(x)
+ else
+ fun_l4_n115(x)
+ end
+end
+
+def fun_l3_n540(x)
+ if (x < 1)
+ fun_l4_n74(x)
+ else
+ fun_l4_n559(x)
+ end
+end
+
+def fun_l3_n541(x)
+ if (x < 1)
+ fun_l4_n601(x)
+ else
+ fun_l4_n756(x)
+ end
+end
+
+def fun_l3_n542(x)
+ if (x < 1)
+ fun_l4_n733(x)
+ else
+ fun_l4_n274(x)
+ end
+end
+
+def fun_l3_n543(x)
+ if (x < 1)
+ fun_l4_n819(x)
+ else
+ fun_l4_n97(x)
+ end
+end
+
+def fun_l3_n544(x)
+ if (x < 1)
+ fun_l4_n949(x)
+ else
+ fun_l4_n868(x)
+ end
+end
+
+def fun_l3_n545(x)
+ if (x < 1)
+ fun_l4_n346(x)
+ else
+ fun_l4_n0(x)
+ end
+end
+
+def fun_l3_n546(x)
+ if (x < 1)
+ fun_l4_n820(x)
+ else
+ fun_l4_n188(x)
+ end
+end
+
+def fun_l3_n547(x)
+ if (x < 1)
+ fun_l4_n403(x)
+ else
+ fun_l4_n670(x)
+ end
+end
+
+def fun_l3_n548(x)
+ if (x < 1)
+ fun_l4_n449(x)
+ else
+ fun_l4_n96(x)
+ end
+end
+
+def fun_l3_n549(x)
+ if (x < 1)
+ fun_l4_n585(x)
+ else
+ fun_l4_n388(x)
+ end
+end
+
+def fun_l3_n550(x)
+ if (x < 1)
+ fun_l4_n963(x)
+ else
+ fun_l4_n979(x)
+ end
+end
+
+def fun_l3_n551(x)
+ if (x < 1)
+ fun_l4_n892(x)
+ else
+ fun_l4_n583(x)
+ end
+end
+
+def fun_l3_n552(x)
+ if (x < 1)
+ fun_l4_n846(x)
+ else
+ fun_l4_n508(x)
+ end
+end
+
+def fun_l3_n553(x)
+ if (x < 1)
+ fun_l4_n160(x)
+ else
+ fun_l4_n428(x)
+ end
+end
+
+def fun_l3_n554(x)
+ if (x < 1)
+ fun_l4_n538(x)
+ else
+ fun_l4_n641(x)
+ end
+end
+
+def fun_l3_n555(x)
+ if (x < 1)
+ fun_l4_n523(x)
+ else
+ fun_l4_n697(x)
+ end
+end
+
+def fun_l3_n556(x)
+ if (x < 1)
+ fun_l4_n212(x)
+ else
+ fun_l4_n0(x)
+ end
+end
+
+def fun_l3_n557(x)
+ if (x < 1)
+ fun_l4_n255(x)
+ else
+ fun_l4_n860(x)
+ end
+end
+
+def fun_l3_n558(x)
+ if (x < 1)
+ fun_l4_n807(x)
+ else
+ fun_l4_n865(x)
+ end
+end
+
+def fun_l3_n559(x)
+ if (x < 1)
+ fun_l4_n735(x)
+ else
+ fun_l4_n352(x)
+ end
+end
+
+def fun_l3_n560(x)
+ if (x < 1)
+ fun_l4_n327(x)
+ else
+ fun_l4_n739(x)
+ end
+end
+
+def fun_l3_n561(x)
+ if (x < 1)
+ fun_l4_n637(x)
+ else
+ fun_l4_n628(x)
+ end
+end
+
+def fun_l3_n562(x)
+ if (x < 1)
+ fun_l4_n281(x)
+ else
+ fun_l4_n394(x)
+ end
+end
+
+def fun_l3_n563(x)
+ if (x < 1)
+ fun_l4_n440(x)
+ else
+ fun_l4_n179(x)
+ end
+end
+
+def fun_l3_n564(x)
+ if (x < 1)
+ fun_l4_n893(x)
+ else
+ fun_l4_n396(x)
+ end
+end
+
+def fun_l3_n565(x)
+ if (x < 1)
+ fun_l4_n94(x)
+ else
+ fun_l4_n134(x)
+ end
+end
+
+def fun_l3_n566(x)
+ if (x < 1)
+ fun_l4_n968(x)
+ else
+ fun_l4_n444(x)
+ end
+end
+
+def fun_l3_n567(x)
+ if (x < 1)
+ fun_l4_n85(x)
+ else
+ fun_l4_n281(x)
+ end
+end
+
+def fun_l3_n568(x)
+ if (x < 1)
+ fun_l4_n164(x)
+ else
+ fun_l4_n229(x)
+ end
+end
+
+def fun_l3_n569(x)
+ if (x < 1)
+ fun_l4_n594(x)
+ else
+ fun_l4_n756(x)
+ end
+end
+
+def fun_l3_n570(x)
+ if (x < 1)
+ fun_l4_n77(x)
+ else
+ fun_l4_n370(x)
+ end
+end
+
+def fun_l3_n571(x)
+ if (x < 1)
+ fun_l4_n724(x)
+ else
+ fun_l4_n965(x)
+ end
+end
+
+def fun_l3_n572(x)
+ if (x < 1)
+ fun_l4_n394(x)
+ else
+ fun_l4_n595(x)
+ end
+end
+
+def fun_l3_n573(x)
+ if (x < 1)
+ fun_l4_n54(x)
+ else
+ fun_l4_n41(x)
+ end
+end
+
+def fun_l3_n574(x)
+ if (x < 1)
+ fun_l4_n951(x)
+ else
+ fun_l4_n414(x)
+ end
+end
+
+def fun_l3_n575(x)
+ if (x < 1)
+ fun_l4_n297(x)
+ else
+ fun_l4_n126(x)
+ end
+end
+
+def fun_l3_n576(x)
+ if (x < 1)
+ fun_l4_n538(x)
+ else
+ fun_l4_n276(x)
+ end
+end
+
+def fun_l3_n577(x)
+ if (x < 1)
+ fun_l4_n882(x)
+ else
+ fun_l4_n152(x)
+ end
+end
+
+def fun_l3_n578(x)
+ if (x < 1)
+ fun_l4_n950(x)
+ else
+ fun_l4_n822(x)
+ end
+end
+
+def fun_l3_n579(x)
+ if (x < 1)
+ fun_l4_n484(x)
+ else
+ fun_l4_n99(x)
+ end
+end
+
+def fun_l3_n580(x)
+ if (x < 1)
+ fun_l4_n160(x)
+ else
+ fun_l4_n98(x)
+ end
+end
+
+def fun_l3_n581(x)
+ if (x < 1)
+ fun_l4_n10(x)
+ else
+ fun_l4_n537(x)
+ end
+end
+
+def fun_l3_n582(x)
+ if (x < 1)
+ fun_l4_n419(x)
+ else
+ fun_l4_n285(x)
+ end
+end
+
+def fun_l3_n583(x)
+ if (x < 1)
+ fun_l4_n330(x)
+ else
+ fun_l4_n732(x)
+ end
+end
+
+def fun_l3_n584(x)
+ if (x < 1)
+ fun_l4_n64(x)
+ else
+ fun_l4_n461(x)
+ end
+end
+
+def fun_l3_n585(x)
+ if (x < 1)
+ fun_l4_n326(x)
+ else
+ fun_l4_n134(x)
+ end
+end
+
+def fun_l3_n586(x)
+ if (x < 1)
+ fun_l4_n423(x)
+ else
+ fun_l4_n945(x)
+ end
+end
+
+def fun_l3_n587(x)
+ if (x < 1)
+ fun_l4_n192(x)
+ else
+ fun_l4_n459(x)
+ end
+end
+
+def fun_l3_n588(x)
+ if (x < 1)
+ fun_l4_n292(x)
+ else
+ fun_l4_n697(x)
+ end
+end
+
+def fun_l3_n589(x)
+ if (x < 1)
+ fun_l4_n612(x)
+ else
+ fun_l4_n902(x)
+ end
+end
+
+def fun_l3_n590(x)
+ if (x < 1)
+ fun_l4_n842(x)
+ else
+ fun_l4_n300(x)
+ end
+end
+
+def fun_l3_n591(x)
+ if (x < 1)
+ fun_l4_n265(x)
+ else
+ fun_l4_n906(x)
+ end
+end
+
+def fun_l3_n592(x)
+ if (x < 1)
+ fun_l4_n82(x)
+ else
+ fun_l4_n417(x)
+ end
+end
+
+def fun_l3_n593(x)
+ if (x < 1)
+ fun_l4_n896(x)
+ else
+ fun_l4_n794(x)
+ end
+end
+
+def fun_l3_n594(x)
+ if (x < 1)
+ fun_l4_n760(x)
+ else
+ fun_l4_n83(x)
+ end
+end
+
+def fun_l3_n595(x)
+ if (x < 1)
+ fun_l4_n750(x)
+ else
+ fun_l4_n778(x)
+ end
+end
+
+def fun_l3_n596(x)
+ if (x < 1)
+ fun_l4_n655(x)
+ else
+ fun_l4_n8(x)
+ end
+end
+
+def fun_l3_n597(x)
+ if (x < 1)
+ fun_l4_n810(x)
+ else
+ fun_l4_n824(x)
+ end
+end
+
+def fun_l3_n598(x)
+ if (x < 1)
+ fun_l4_n904(x)
+ else
+ fun_l4_n921(x)
+ end
+end
+
+def fun_l3_n599(x)
+ if (x < 1)
+ fun_l4_n16(x)
+ else
+ fun_l4_n96(x)
+ end
+end
+
+def fun_l3_n600(x)
+ if (x < 1)
+ fun_l4_n879(x)
+ else
+ fun_l4_n757(x)
+ end
+end
+
+def fun_l3_n601(x)
+ if (x < 1)
+ fun_l4_n840(x)
+ else
+ fun_l4_n62(x)
+ end
+end
+
+def fun_l3_n602(x)
+ if (x < 1)
+ fun_l4_n547(x)
+ else
+ fun_l4_n45(x)
+ end
+end
+
+def fun_l3_n603(x)
+ if (x < 1)
+ fun_l4_n978(x)
+ else
+ fun_l4_n646(x)
+ end
+end
+
+def fun_l3_n604(x)
+ if (x < 1)
+ fun_l4_n100(x)
+ else
+ fun_l4_n654(x)
+ end
+end
+
+def fun_l3_n605(x)
+ if (x < 1)
+ fun_l4_n257(x)
+ else
+ fun_l4_n465(x)
+ end
+end
+
+def fun_l3_n606(x)
+ if (x < 1)
+ fun_l4_n427(x)
+ else
+ fun_l4_n489(x)
+ end
+end
+
+def fun_l3_n607(x)
+ if (x < 1)
+ fun_l4_n465(x)
+ else
+ fun_l4_n48(x)
+ end
+end
+
+def fun_l3_n608(x)
+ if (x < 1)
+ fun_l4_n571(x)
+ else
+ fun_l4_n332(x)
+ end
+end
+
+def fun_l3_n609(x)
+ if (x < 1)
+ fun_l4_n813(x)
+ else
+ fun_l4_n462(x)
+ end
+end
+
+def fun_l3_n610(x)
+ if (x < 1)
+ fun_l4_n931(x)
+ else
+ fun_l4_n913(x)
+ end
+end
+
+def fun_l3_n611(x)
+ if (x < 1)
+ fun_l4_n20(x)
+ else
+ fun_l4_n933(x)
+ end
+end
+
+def fun_l3_n612(x)
+ if (x < 1)
+ fun_l4_n913(x)
+ else
+ fun_l4_n787(x)
+ end
+end
+
+def fun_l3_n613(x)
+ if (x < 1)
+ fun_l4_n523(x)
+ else
+ fun_l4_n735(x)
+ end
+end
+
+def fun_l3_n614(x)
+ if (x < 1)
+ fun_l4_n315(x)
+ else
+ fun_l4_n913(x)
+ end
+end
+
+def fun_l3_n615(x)
+ if (x < 1)
+ fun_l4_n308(x)
+ else
+ fun_l4_n865(x)
+ end
+end
+
+def fun_l3_n616(x)
+ if (x < 1)
+ fun_l4_n847(x)
+ else
+ fun_l4_n506(x)
+ end
+end
+
+def fun_l3_n617(x)
+ if (x < 1)
+ fun_l4_n387(x)
+ else
+ fun_l4_n551(x)
+ end
+end
+
+def fun_l3_n618(x)
+ if (x < 1)
+ fun_l4_n276(x)
+ else
+ fun_l4_n991(x)
+ end
+end
+
+def fun_l3_n619(x)
+ if (x < 1)
+ fun_l4_n524(x)
+ else
+ fun_l4_n202(x)
+ end
+end
+
+def fun_l3_n620(x)
+ if (x < 1)
+ fun_l4_n836(x)
+ else
+ fun_l4_n548(x)
+ end
+end
+
+def fun_l3_n621(x)
+ if (x < 1)
+ fun_l4_n76(x)
+ else
+ fun_l4_n5(x)
+ end
+end
+
+def fun_l3_n622(x)
+ if (x < 1)
+ fun_l4_n223(x)
+ else
+ fun_l4_n438(x)
+ end
+end
+
+def fun_l3_n623(x)
+ if (x < 1)
+ fun_l4_n31(x)
+ else
+ fun_l4_n590(x)
+ end
+end
+
+def fun_l3_n624(x)
+ if (x < 1)
+ fun_l4_n609(x)
+ else
+ fun_l4_n513(x)
+ end
+end
+
+def fun_l3_n625(x)
+ if (x < 1)
+ fun_l4_n966(x)
+ else
+ fun_l4_n278(x)
+ end
+end
+
+def fun_l3_n626(x)
+ if (x < 1)
+ fun_l4_n82(x)
+ else
+ fun_l4_n100(x)
+ end
+end
+
+def fun_l3_n627(x)
+ if (x < 1)
+ fun_l4_n312(x)
+ else
+ fun_l4_n746(x)
+ end
+end
+
+def fun_l3_n628(x)
+ if (x < 1)
+ fun_l4_n682(x)
+ else
+ fun_l4_n791(x)
+ end
+end
+
+def fun_l3_n629(x)
+ if (x < 1)
+ fun_l4_n166(x)
+ else
+ fun_l4_n678(x)
+ end
+end
+
+def fun_l3_n630(x)
+ if (x < 1)
+ fun_l4_n507(x)
+ else
+ fun_l4_n778(x)
+ end
+end
+
+def fun_l3_n631(x)
+ if (x < 1)
+ fun_l4_n97(x)
+ else
+ fun_l4_n13(x)
+ end
+end
+
+def fun_l3_n632(x)
+ if (x < 1)
+ fun_l4_n976(x)
+ else
+ fun_l4_n794(x)
+ end
+end
+
+def fun_l3_n633(x)
+ if (x < 1)
+ fun_l4_n994(x)
+ else
+ fun_l4_n743(x)
+ end
+end
+
+def fun_l3_n634(x)
+ if (x < 1)
+ fun_l4_n212(x)
+ else
+ fun_l4_n754(x)
+ end
+end
+
+def fun_l3_n635(x)
+ if (x < 1)
+ fun_l4_n602(x)
+ else
+ fun_l4_n997(x)
+ end
+end
+
+def fun_l3_n636(x)
+ if (x < 1)
+ fun_l4_n282(x)
+ else
+ fun_l4_n133(x)
+ end
+end
+
+def fun_l3_n637(x)
+ if (x < 1)
+ fun_l4_n413(x)
+ else
+ fun_l4_n952(x)
+ end
+end
+
+def fun_l3_n638(x)
+ if (x < 1)
+ fun_l4_n843(x)
+ else
+ fun_l4_n783(x)
+ end
+end
+
+def fun_l3_n639(x)
+ if (x < 1)
+ fun_l4_n946(x)
+ else
+ fun_l4_n833(x)
+ end
+end
+
+def fun_l3_n640(x)
+ if (x < 1)
+ fun_l4_n384(x)
+ else
+ fun_l4_n444(x)
+ end
+end
+
+def fun_l3_n641(x)
+ if (x < 1)
+ fun_l4_n699(x)
+ else
+ fun_l4_n26(x)
+ end
+end
+
+def fun_l3_n642(x)
+ if (x < 1)
+ fun_l4_n96(x)
+ else
+ fun_l4_n623(x)
+ end
+end
+
+def fun_l3_n643(x)
+ if (x < 1)
+ fun_l4_n928(x)
+ else
+ fun_l4_n8(x)
+ end
+end
+
+def fun_l3_n644(x)
+ if (x < 1)
+ fun_l4_n804(x)
+ else
+ fun_l4_n618(x)
+ end
+end
+
+def fun_l3_n645(x)
+ if (x < 1)
+ fun_l4_n513(x)
+ else
+ fun_l4_n214(x)
+ end
+end
+
+def fun_l3_n646(x)
+ if (x < 1)
+ fun_l4_n605(x)
+ else
+ fun_l4_n920(x)
+ end
+end
+
+def fun_l3_n647(x)
+ if (x < 1)
+ fun_l4_n774(x)
+ else
+ fun_l4_n297(x)
+ end
+end
+
+def fun_l3_n648(x)
+ if (x < 1)
+ fun_l4_n871(x)
+ else
+ fun_l4_n75(x)
+ end
+end
+
+def fun_l3_n649(x)
+ if (x < 1)
+ fun_l4_n196(x)
+ else
+ fun_l4_n277(x)
+ end
+end
+
+def fun_l3_n650(x)
+ if (x < 1)
+ fun_l4_n25(x)
+ else
+ fun_l4_n681(x)
+ end
+end
+
+def fun_l3_n651(x)
+ if (x < 1)
+ fun_l4_n603(x)
+ else
+ fun_l4_n46(x)
+ end
+end
+
+def fun_l3_n652(x)
+ if (x < 1)
+ fun_l4_n623(x)
+ else
+ fun_l4_n604(x)
+ end
+end
+
+def fun_l3_n653(x)
+ if (x < 1)
+ fun_l4_n854(x)
+ else
+ fun_l4_n955(x)
+ end
+end
+
+def fun_l3_n654(x)
+ if (x < 1)
+ fun_l4_n667(x)
+ else
+ fun_l4_n988(x)
+ end
+end
+
+def fun_l3_n655(x)
+ if (x < 1)
+ fun_l4_n263(x)
+ else
+ fun_l4_n831(x)
+ end
+end
+
+def fun_l3_n656(x)
+ if (x < 1)
+ fun_l4_n591(x)
+ else
+ fun_l4_n593(x)
+ end
+end
+
+def fun_l3_n657(x)
+ if (x < 1)
+ fun_l4_n308(x)
+ else
+ fun_l4_n547(x)
+ end
+end
+
+def fun_l3_n658(x)
+ if (x < 1)
+ fun_l4_n780(x)
+ else
+ fun_l4_n174(x)
+ end
+end
+
+def fun_l3_n659(x)
+ if (x < 1)
+ fun_l4_n54(x)
+ else
+ fun_l4_n681(x)
+ end
+end
+
+def fun_l3_n660(x)
+ if (x < 1)
+ fun_l4_n279(x)
+ else
+ fun_l4_n282(x)
+ end
+end
+
+def fun_l3_n661(x)
+ if (x < 1)
+ fun_l4_n953(x)
+ else
+ fun_l4_n832(x)
+ end
+end
+
+def fun_l3_n662(x)
+ if (x < 1)
+ fun_l4_n525(x)
+ else
+ fun_l4_n850(x)
+ end
+end
+
+def fun_l3_n663(x)
+ if (x < 1)
+ fun_l4_n606(x)
+ else
+ fun_l4_n167(x)
+ end
+end
+
+def fun_l3_n664(x)
+ if (x < 1)
+ fun_l4_n941(x)
+ else
+ fun_l4_n591(x)
+ end
+end
+
+def fun_l3_n665(x)
+ if (x < 1)
+ fun_l4_n781(x)
+ else
+ fun_l4_n162(x)
+ end
+end
+
+def fun_l3_n666(x)
+ if (x < 1)
+ fun_l4_n848(x)
+ else
+ fun_l4_n133(x)
+ end
+end
+
+def fun_l3_n667(x)
+ if (x < 1)
+ fun_l4_n341(x)
+ else
+ fun_l4_n212(x)
+ end
+end
+
+def fun_l3_n668(x)
+ if (x < 1)
+ fun_l4_n320(x)
+ else
+ fun_l4_n131(x)
+ end
+end
+
+def fun_l3_n669(x)
+ if (x < 1)
+ fun_l4_n18(x)
+ else
+ fun_l4_n385(x)
+ end
+end
+
+def fun_l3_n670(x)
+ if (x < 1)
+ fun_l4_n917(x)
+ else
+ fun_l4_n988(x)
+ end
+end
+
+def fun_l3_n671(x)
+ if (x < 1)
+ fun_l4_n50(x)
+ else
+ fun_l4_n27(x)
+ end
+end
+
+def fun_l3_n672(x)
+ if (x < 1)
+ fun_l4_n277(x)
+ else
+ fun_l4_n238(x)
+ end
+end
+
+def fun_l3_n673(x)
+ if (x < 1)
+ fun_l4_n303(x)
+ else
+ fun_l4_n643(x)
+ end
+end
+
+def fun_l3_n674(x)
+ if (x < 1)
+ fun_l4_n794(x)
+ else
+ fun_l4_n906(x)
+ end
+end
+
+def fun_l3_n675(x)
+ if (x < 1)
+ fun_l4_n688(x)
+ else
+ fun_l4_n312(x)
+ end
+end
+
+def fun_l3_n676(x)
+ if (x < 1)
+ fun_l4_n833(x)
+ else
+ fun_l4_n900(x)
+ end
+end
+
+def fun_l3_n677(x)
+ if (x < 1)
+ fun_l4_n649(x)
+ else
+ fun_l4_n822(x)
+ end
+end
+
+def fun_l3_n678(x)
+ if (x < 1)
+ fun_l4_n958(x)
+ else
+ fun_l4_n939(x)
+ end
+end
+
+def fun_l3_n679(x)
+ if (x < 1)
+ fun_l4_n949(x)
+ else
+ fun_l4_n887(x)
+ end
+end
+
+def fun_l3_n680(x)
+ if (x < 1)
+ fun_l4_n630(x)
+ else
+ fun_l4_n508(x)
+ end
+end
+
+def fun_l3_n681(x)
+ if (x < 1)
+ fun_l4_n553(x)
+ else
+ fun_l4_n940(x)
+ end
+end
+
+def fun_l3_n682(x)
+ if (x < 1)
+ fun_l4_n180(x)
+ else
+ fun_l4_n950(x)
+ end
+end
+
+def fun_l3_n683(x)
+ if (x < 1)
+ fun_l4_n898(x)
+ else
+ fun_l4_n374(x)
+ end
+end
+
+def fun_l3_n684(x)
+ if (x < 1)
+ fun_l4_n802(x)
+ else
+ fun_l4_n527(x)
+ end
+end
+
+def fun_l3_n685(x)
+ if (x < 1)
+ fun_l4_n751(x)
+ else
+ fun_l4_n967(x)
+ end
+end
+
+def fun_l3_n686(x)
+ if (x < 1)
+ fun_l4_n235(x)
+ else
+ fun_l4_n559(x)
+ end
+end
+
+def fun_l3_n687(x)
+ if (x < 1)
+ fun_l4_n694(x)
+ else
+ fun_l4_n819(x)
+ end
+end
+
+def fun_l3_n688(x)
+ if (x < 1)
+ fun_l4_n167(x)
+ else
+ fun_l4_n91(x)
+ end
+end
+
+def fun_l3_n689(x)
+ if (x < 1)
+ fun_l4_n692(x)
+ else
+ fun_l4_n422(x)
+ end
+end
+
+def fun_l3_n690(x)
+ if (x < 1)
+ fun_l4_n344(x)
+ else
+ fun_l4_n738(x)
+ end
+end
+
+def fun_l3_n691(x)
+ if (x < 1)
+ fun_l4_n394(x)
+ else
+ fun_l4_n603(x)
+ end
+end
+
+def fun_l3_n692(x)
+ if (x < 1)
+ fun_l4_n909(x)
+ else
+ fun_l4_n528(x)
+ end
+end
+
+def fun_l3_n693(x)
+ if (x < 1)
+ fun_l4_n180(x)
+ else
+ fun_l4_n22(x)
+ end
+end
+
+def fun_l3_n694(x)
+ if (x < 1)
+ fun_l4_n6(x)
+ else
+ fun_l4_n777(x)
+ end
+end
+
+def fun_l3_n695(x)
+ if (x < 1)
+ fun_l4_n327(x)
+ else
+ fun_l4_n948(x)
+ end
+end
+
+def fun_l3_n696(x)
+ if (x < 1)
+ fun_l4_n748(x)
+ else
+ fun_l4_n706(x)
+ end
+end
+
+def fun_l3_n697(x)
+ if (x < 1)
+ fun_l4_n720(x)
+ else
+ fun_l4_n693(x)
+ end
+end
+
+def fun_l3_n698(x)
+ if (x < 1)
+ fun_l4_n282(x)
+ else
+ fun_l4_n755(x)
+ end
+end
+
+def fun_l3_n699(x)
+ if (x < 1)
+ fun_l4_n975(x)
+ else
+ fun_l4_n415(x)
+ end
+end
+
+def fun_l3_n700(x)
+ if (x < 1)
+ fun_l4_n684(x)
+ else
+ fun_l4_n738(x)
+ end
+end
+
+def fun_l3_n701(x)
+ if (x < 1)
+ fun_l4_n58(x)
+ else
+ fun_l4_n892(x)
+ end
+end
+
+def fun_l3_n702(x)
+ if (x < 1)
+ fun_l4_n366(x)
+ else
+ fun_l4_n189(x)
+ end
+end
+
+def fun_l3_n703(x)
+ if (x < 1)
+ fun_l4_n422(x)
+ else
+ fun_l4_n535(x)
+ end
+end
+
+def fun_l3_n704(x)
+ if (x < 1)
+ fun_l4_n886(x)
+ else
+ fun_l4_n223(x)
+ end
+end
+
+def fun_l3_n705(x)
+ if (x < 1)
+ fun_l4_n57(x)
+ else
+ fun_l4_n62(x)
+ end
+end
+
+def fun_l3_n706(x)
+ if (x < 1)
+ fun_l4_n629(x)
+ else
+ fun_l4_n479(x)
+ end
+end
+
+def fun_l3_n707(x)
+ if (x < 1)
+ fun_l4_n477(x)
+ else
+ fun_l4_n302(x)
+ end
+end
+
+def fun_l3_n708(x)
+ if (x < 1)
+ fun_l4_n790(x)
+ else
+ fun_l4_n262(x)
+ end
+end
+
+def fun_l3_n709(x)
+ if (x < 1)
+ fun_l4_n772(x)
+ else
+ fun_l4_n995(x)
+ end
+end
+
+def fun_l3_n710(x)
+ if (x < 1)
+ fun_l4_n549(x)
+ else
+ fun_l4_n651(x)
+ end
+end
+
+def fun_l3_n711(x)
+ if (x < 1)
+ fun_l4_n77(x)
+ else
+ fun_l4_n555(x)
+ end
+end
+
+def fun_l3_n712(x)
+ if (x < 1)
+ fun_l4_n515(x)
+ else
+ fun_l4_n734(x)
+ end
+end
+
+def fun_l3_n713(x)
+ if (x < 1)
+ fun_l4_n778(x)
+ else
+ fun_l4_n884(x)
+ end
+end
+
+def fun_l3_n714(x)
+ if (x < 1)
+ fun_l4_n235(x)
+ else
+ fun_l4_n637(x)
+ end
+end
+
+def fun_l3_n715(x)
+ if (x < 1)
+ fun_l4_n516(x)
+ else
+ fun_l4_n249(x)
+ end
+end
+
+def fun_l3_n716(x)
+ if (x < 1)
+ fun_l4_n44(x)
+ else
+ fun_l4_n307(x)
+ end
+end
+
+def fun_l3_n717(x)
+ if (x < 1)
+ fun_l4_n482(x)
+ else
+ fun_l4_n4(x)
+ end
+end
+
+def fun_l3_n718(x)
+ if (x < 1)
+ fun_l4_n195(x)
+ else
+ fun_l4_n410(x)
+ end
+end
+
+def fun_l3_n719(x)
+ if (x < 1)
+ fun_l4_n862(x)
+ else
+ fun_l4_n91(x)
+ end
+end
+
+def fun_l3_n720(x)
+ if (x < 1)
+ fun_l4_n591(x)
+ else
+ fun_l4_n391(x)
+ end
+end
+
+def fun_l3_n721(x)
+ if (x < 1)
+ fun_l4_n776(x)
+ else
+ fun_l4_n129(x)
+ end
+end
+
+def fun_l3_n722(x)
+ if (x < 1)
+ fun_l4_n857(x)
+ else
+ fun_l4_n160(x)
+ end
+end
+
+def fun_l3_n723(x)
+ if (x < 1)
+ fun_l4_n772(x)
+ else
+ fun_l4_n567(x)
+ end
+end
+
+def fun_l3_n724(x)
+ if (x < 1)
+ fun_l4_n582(x)
+ else
+ fun_l4_n100(x)
+ end
+end
+
+def fun_l3_n725(x)
+ if (x < 1)
+ fun_l4_n962(x)
+ else
+ fun_l4_n846(x)
+ end
+end
+
+def fun_l3_n726(x)
+ if (x < 1)
+ fun_l4_n892(x)
+ else
+ fun_l4_n334(x)
+ end
+end
+
+def fun_l3_n727(x)
+ if (x < 1)
+ fun_l4_n17(x)
+ else
+ fun_l4_n690(x)
+ end
+end
+
+def fun_l3_n728(x)
+ if (x < 1)
+ fun_l4_n453(x)
+ else
+ fun_l4_n234(x)
+ end
+end
+
+def fun_l3_n729(x)
+ if (x < 1)
+ fun_l4_n562(x)
+ else
+ fun_l4_n139(x)
+ end
+end
+
+def fun_l3_n730(x)
+ if (x < 1)
+ fun_l4_n87(x)
+ else
+ fun_l4_n513(x)
+ end
+end
+
+def fun_l3_n731(x)
+ if (x < 1)
+ fun_l4_n565(x)
+ else
+ fun_l4_n289(x)
+ end
+end
+
+def fun_l3_n732(x)
+ if (x < 1)
+ fun_l4_n821(x)
+ else
+ fun_l4_n290(x)
+ end
+end
+
+def fun_l3_n733(x)
+ if (x < 1)
+ fun_l4_n464(x)
+ else
+ fun_l4_n929(x)
+ end
+end
+
+def fun_l3_n734(x)
+ if (x < 1)
+ fun_l4_n617(x)
+ else
+ fun_l4_n230(x)
+ end
+end
+
+def fun_l3_n735(x)
+ if (x < 1)
+ fun_l4_n942(x)
+ else
+ fun_l4_n770(x)
+ end
+end
+
+def fun_l3_n736(x)
+ if (x < 1)
+ fun_l4_n826(x)
+ else
+ fun_l4_n414(x)
+ end
+end
+
+def fun_l3_n737(x)
+ if (x < 1)
+ fun_l4_n47(x)
+ else
+ fun_l4_n357(x)
+ end
+end
+
+def fun_l3_n738(x)
+ if (x < 1)
+ fun_l4_n582(x)
+ else
+ fun_l4_n652(x)
+ end
+end
+
+def fun_l3_n739(x)
+ if (x < 1)
+ fun_l4_n641(x)
+ else
+ fun_l4_n479(x)
+ end
+end
+
+def fun_l3_n740(x)
+ if (x < 1)
+ fun_l4_n11(x)
+ else
+ fun_l4_n965(x)
+ end
+end
+
+def fun_l3_n741(x)
+ if (x < 1)
+ fun_l4_n402(x)
+ else
+ fun_l4_n512(x)
+ end
+end
+
+def fun_l3_n742(x)
+ if (x < 1)
+ fun_l4_n300(x)
+ else
+ fun_l4_n942(x)
+ end
+end
+
+def fun_l3_n743(x)
+ if (x < 1)
+ fun_l4_n770(x)
+ else
+ fun_l4_n690(x)
+ end
+end
+
+def fun_l3_n744(x)
+ if (x < 1)
+ fun_l4_n575(x)
+ else
+ fun_l4_n158(x)
+ end
+end
+
+def fun_l3_n745(x)
+ if (x < 1)
+ fun_l4_n760(x)
+ else
+ fun_l4_n552(x)
+ end
+end
+
+def fun_l3_n746(x)
+ if (x < 1)
+ fun_l4_n887(x)
+ else
+ fun_l4_n319(x)
+ end
+end
+
+def fun_l3_n747(x)
+ if (x < 1)
+ fun_l4_n967(x)
+ else
+ fun_l4_n561(x)
+ end
+end
+
+def fun_l3_n748(x)
+ if (x < 1)
+ fun_l4_n4(x)
+ else
+ fun_l4_n766(x)
+ end
+end
+
+def fun_l3_n749(x)
+ if (x < 1)
+ fun_l4_n993(x)
+ else
+ fun_l4_n991(x)
+ end
+end
+
+def fun_l3_n750(x)
+ if (x < 1)
+ fun_l4_n890(x)
+ else
+ fun_l4_n663(x)
+ end
+end
+
+def fun_l3_n751(x)
+ if (x < 1)
+ fun_l4_n267(x)
+ else
+ fun_l4_n449(x)
+ end
+end
+
+def fun_l3_n752(x)
+ if (x < 1)
+ fun_l4_n540(x)
+ else
+ fun_l4_n226(x)
+ end
+end
+
+def fun_l3_n753(x)
+ if (x < 1)
+ fun_l4_n893(x)
+ else
+ fun_l4_n116(x)
+ end
+end
+
+def fun_l3_n754(x)
+ if (x < 1)
+ fun_l4_n570(x)
+ else
+ fun_l4_n192(x)
+ end
+end
+
+def fun_l3_n755(x)
+ if (x < 1)
+ fun_l4_n712(x)
+ else
+ fun_l4_n81(x)
+ end
+end
+
+def fun_l3_n756(x)
+ if (x < 1)
+ fun_l4_n833(x)
+ else
+ fun_l4_n24(x)
+ end
+end
+
+def fun_l3_n757(x)
+ if (x < 1)
+ fun_l4_n740(x)
+ else
+ fun_l4_n803(x)
+ end
+end
+
+def fun_l3_n758(x)
+ if (x < 1)
+ fun_l4_n552(x)
+ else
+ fun_l4_n551(x)
+ end
+end
+
+def fun_l3_n759(x)
+ if (x < 1)
+ fun_l4_n570(x)
+ else
+ fun_l4_n677(x)
+ end
+end
+
+def fun_l3_n760(x)
+ if (x < 1)
+ fun_l4_n243(x)
+ else
+ fun_l4_n677(x)
+ end
+end
+
+def fun_l3_n761(x)
+ if (x < 1)
+ fun_l4_n65(x)
+ else
+ fun_l4_n660(x)
+ end
+end
+
+def fun_l3_n762(x)
+ if (x < 1)
+ fun_l4_n989(x)
+ else
+ fun_l4_n761(x)
+ end
+end
+
+def fun_l3_n763(x)
+ if (x < 1)
+ fun_l4_n971(x)
+ else
+ fun_l4_n280(x)
+ end
+end
+
+def fun_l3_n764(x)
+ if (x < 1)
+ fun_l4_n441(x)
+ else
+ fun_l4_n506(x)
+ end
+end
+
+def fun_l3_n765(x)
+ if (x < 1)
+ fun_l4_n577(x)
+ else
+ fun_l4_n586(x)
+ end
+end
+
+def fun_l3_n766(x)
+ if (x < 1)
+ fun_l4_n385(x)
+ else
+ fun_l4_n60(x)
+ end
+end
+
+def fun_l3_n767(x)
+ if (x < 1)
+ fun_l4_n380(x)
+ else
+ fun_l4_n32(x)
+ end
+end
+
+def fun_l3_n768(x)
+ if (x < 1)
+ fun_l4_n797(x)
+ else
+ fun_l4_n437(x)
+ end
+end
+
+def fun_l3_n769(x)
+ if (x < 1)
+ fun_l4_n615(x)
+ else
+ fun_l4_n369(x)
+ end
+end
+
+def fun_l3_n770(x)
+ if (x < 1)
+ fun_l4_n779(x)
+ else
+ fun_l4_n194(x)
+ end
+end
+
+def fun_l3_n771(x)
+ if (x < 1)
+ fun_l4_n287(x)
+ else
+ fun_l4_n819(x)
+ end
+end
+
+def fun_l3_n772(x)
+ if (x < 1)
+ fun_l4_n405(x)
+ else
+ fun_l4_n738(x)
+ end
+end
+
+def fun_l3_n773(x)
+ if (x < 1)
+ fun_l4_n706(x)
+ else
+ fun_l4_n174(x)
+ end
+end
+
+def fun_l3_n774(x)
+ if (x < 1)
+ fun_l4_n690(x)
+ else
+ fun_l4_n841(x)
+ end
+end
+
+def fun_l3_n775(x)
+ if (x < 1)
+ fun_l4_n256(x)
+ else
+ fun_l4_n179(x)
+ end
+end
+
+def fun_l3_n776(x)
+ if (x < 1)
+ fun_l4_n342(x)
+ else
+ fun_l4_n359(x)
+ end
+end
+
+def fun_l3_n777(x)
+ if (x < 1)
+ fun_l4_n371(x)
+ else
+ fun_l4_n680(x)
+ end
+end
+
+def fun_l3_n778(x)
+ if (x < 1)
+ fun_l4_n996(x)
+ else
+ fun_l4_n343(x)
+ end
+end
+
+def fun_l3_n779(x)
+ if (x < 1)
+ fun_l4_n96(x)
+ else
+ fun_l4_n893(x)
+ end
+end
+
+def fun_l3_n780(x)
+ if (x < 1)
+ fun_l4_n706(x)
+ else
+ fun_l4_n140(x)
+ end
+end
+
+def fun_l3_n781(x)
+ if (x < 1)
+ fun_l4_n349(x)
+ else
+ fun_l4_n317(x)
+ end
+end
+
+def fun_l3_n782(x)
+ if (x < 1)
+ fun_l4_n491(x)
+ else
+ fun_l4_n616(x)
+ end
+end
+
+def fun_l3_n783(x)
+ if (x < 1)
+ fun_l4_n227(x)
+ else
+ fun_l4_n356(x)
+ end
+end
+
+def fun_l3_n784(x)
+ if (x < 1)
+ fun_l4_n387(x)
+ else
+ fun_l4_n532(x)
+ end
+end
+
+def fun_l3_n785(x)
+ if (x < 1)
+ fun_l4_n648(x)
+ else
+ fun_l4_n34(x)
+ end
+end
+
+def fun_l3_n786(x)
+ if (x < 1)
+ fun_l4_n562(x)
+ else
+ fun_l4_n476(x)
+ end
+end
+
+def fun_l3_n787(x)
+ if (x < 1)
+ fun_l4_n162(x)
+ else
+ fun_l4_n384(x)
+ end
+end
+
+def fun_l3_n788(x)
+ if (x < 1)
+ fun_l4_n221(x)
+ else
+ fun_l4_n617(x)
+ end
+end
+
+def fun_l3_n789(x)
+ if (x < 1)
+ fun_l4_n670(x)
+ else
+ fun_l4_n350(x)
+ end
+end
+
+def fun_l3_n790(x)
+ if (x < 1)
+ fun_l4_n202(x)
+ else
+ fun_l4_n112(x)
+ end
+end
+
+def fun_l3_n791(x)
+ if (x < 1)
+ fun_l4_n390(x)
+ else
+ fun_l4_n868(x)
+ end
+end
+
+def fun_l3_n792(x)
+ if (x < 1)
+ fun_l4_n746(x)
+ else
+ fun_l4_n833(x)
+ end
+end
+
+def fun_l3_n793(x)
+ if (x < 1)
+ fun_l4_n471(x)
+ else
+ fun_l4_n60(x)
+ end
+end
+
+def fun_l3_n794(x)
+ if (x < 1)
+ fun_l4_n583(x)
+ else
+ fun_l4_n470(x)
+ end
+end
+
+def fun_l3_n795(x)
+ if (x < 1)
+ fun_l4_n567(x)
+ else
+ fun_l4_n218(x)
+ end
+end
+
+def fun_l3_n796(x)
+ if (x < 1)
+ fun_l4_n140(x)
+ else
+ fun_l4_n690(x)
+ end
+end
+
+def fun_l3_n797(x)
+ if (x < 1)
+ fun_l4_n190(x)
+ else
+ fun_l4_n437(x)
+ end
+end
+
+def fun_l3_n798(x)
+ if (x < 1)
+ fun_l4_n684(x)
+ else
+ fun_l4_n843(x)
+ end
+end
+
+def fun_l3_n799(x)
+ if (x < 1)
+ fun_l4_n825(x)
+ else
+ fun_l4_n354(x)
+ end
+end
+
+def fun_l3_n800(x)
+ if (x < 1)
+ fun_l4_n711(x)
+ else
+ fun_l4_n606(x)
+ end
+end
+
+def fun_l3_n801(x)
+ if (x < 1)
+ fun_l4_n756(x)
+ else
+ fun_l4_n464(x)
+ end
+end
+
+def fun_l3_n802(x)
+ if (x < 1)
+ fun_l4_n143(x)
+ else
+ fun_l4_n962(x)
+ end
+end
+
+def fun_l3_n803(x)
+ if (x < 1)
+ fun_l4_n223(x)
+ else
+ fun_l4_n293(x)
+ end
+end
+
+def fun_l3_n804(x)
+ if (x < 1)
+ fun_l4_n832(x)
+ else
+ fun_l4_n632(x)
+ end
+end
+
+def fun_l3_n805(x)
+ if (x < 1)
+ fun_l4_n649(x)
+ else
+ fun_l4_n259(x)
+ end
+end
+
+def fun_l3_n806(x)
+ if (x < 1)
+ fun_l4_n617(x)
+ else
+ fun_l4_n993(x)
+ end
+end
+
+def fun_l3_n807(x)
+ if (x < 1)
+ fun_l4_n257(x)
+ else
+ fun_l4_n712(x)
+ end
+end
+
+def fun_l3_n808(x)
+ if (x < 1)
+ fun_l4_n632(x)
+ else
+ fun_l4_n563(x)
+ end
+end
+
+def fun_l3_n809(x)
+ if (x < 1)
+ fun_l4_n154(x)
+ else
+ fun_l4_n561(x)
+ end
+end
+
+def fun_l3_n810(x)
+ if (x < 1)
+ fun_l4_n411(x)
+ else
+ fun_l4_n42(x)
+ end
+end
+
+def fun_l3_n811(x)
+ if (x < 1)
+ fun_l4_n560(x)
+ else
+ fun_l4_n531(x)
+ end
+end
+
+def fun_l3_n812(x)
+ if (x < 1)
+ fun_l4_n759(x)
+ else
+ fun_l4_n588(x)
+ end
+end
+
+def fun_l3_n813(x)
+ if (x < 1)
+ fun_l4_n311(x)
+ else
+ fun_l4_n813(x)
+ end
+end
+
+def fun_l3_n814(x)
+ if (x < 1)
+ fun_l4_n521(x)
+ else
+ fun_l4_n877(x)
+ end
+end
+
+def fun_l3_n815(x)
+ if (x < 1)
+ fun_l4_n578(x)
+ else
+ fun_l4_n37(x)
+ end
+end
+
+def fun_l3_n816(x)
+ if (x < 1)
+ fun_l4_n337(x)
+ else
+ fun_l4_n562(x)
+ end
+end
+
+def fun_l3_n817(x)
+ if (x < 1)
+ fun_l4_n523(x)
+ else
+ fun_l4_n445(x)
+ end
+end
+
+def fun_l3_n818(x)
+ if (x < 1)
+ fun_l4_n256(x)
+ else
+ fun_l4_n551(x)
+ end
+end
+
+def fun_l3_n819(x)
+ if (x < 1)
+ fun_l4_n718(x)
+ else
+ fun_l4_n463(x)
+ end
+end
+
+def fun_l3_n820(x)
+ if (x < 1)
+ fun_l4_n780(x)
+ else
+ fun_l4_n103(x)
+ end
+end
+
+def fun_l3_n821(x)
+ if (x < 1)
+ fun_l4_n729(x)
+ else
+ fun_l4_n331(x)
+ end
+end
+
+def fun_l3_n822(x)
+ if (x < 1)
+ fun_l4_n84(x)
+ else
+ fun_l4_n176(x)
+ end
+end
+
+def fun_l3_n823(x)
+ if (x < 1)
+ fun_l4_n231(x)
+ else
+ fun_l4_n681(x)
+ end
+end
+
+def fun_l3_n824(x)
+ if (x < 1)
+ fun_l4_n675(x)
+ else
+ fun_l4_n837(x)
+ end
+end
+
+def fun_l3_n825(x)
+ if (x < 1)
+ fun_l4_n140(x)
+ else
+ fun_l4_n932(x)
+ end
+end
+
+def fun_l3_n826(x)
+ if (x < 1)
+ fun_l4_n268(x)
+ else
+ fun_l4_n908(x)
+ end
+end
+
+def fun_l3_n827(x)
+ if (x < 1)
+ fun_l4_n959(x)
+ else
+ fun_l4_n643(x)
+ end
+end
+
+def fun_l3_n828(x)
+ if (x < 1)
+ fun_l4_n290(x)
+ else
+ fun_l4_n718(x)
+ end
+end
+
+def fun_l3_n829(x)
+ if (x < 1)
+ fun_l4_n430(x)
+ else
+ fun_l4_n114(x)
+ end
+end
+
+def fun_l3_n830(x)
+ if (x < 1)
+ fun_l4_n817(x)
+ else
+ fun_l4_n296(x)
+ end
+end
+
+def fun_l3_n831(x)
+ if (x < 1)
+ fun_l4_n586(x)
+ else
+ fun_l4_n345(x)
+ end
+end
+
+def fun_l3_n832(x)
+ if (x < 1)
+ fun_l4_n321(x)
+ else
+ fun_l4_n805(x)
+ end
+end
+
+def fun_l3_n833(x)
+ if (x < 1)
+ fun_l4_n57(x)
+ else
+ fun_l4_n373(x)
+ end
+end
+
+def fun_l3_n834(x)
+ if (x < 1)
+ fun_l4_n344(x)
+ else
+ fun_l4_n654(x)
+ end
+end
+
+def fun_l3_n835(x)
+ if (x < 1)
+ fun_l4_n761(x)
+ else
+ fun_l4_n295(x)
+ end
+end
+
+def fun_l3_n836(x)
+ if (x < 1)
+ fun_l4_n169(x)
+ else
+ fun_l4_n184(x)
+ end
+end
+
+def fun_l3_n837(x)
+ if (x < 1)
+ fun_l4_n482(x)
+ else
+ fun_l4_n127(x)
+ end
+end
+
+def fun_l3_n838(x)
+ if (x < 1)
+ fun_l4_n260(x)
+ else
+ fun_l4_n662(x)
+ end
+end
+
+def fun_l3_n839(x)
+ if (x < 1)
+ fun_l4_n548(x)
+ else
+ fun_l4_n197(x)
+ end
+end
+
+def fun_l3_n840(x)
+ if (x < 1)
+ fun_l4_n96(x)
+ else
+ fun_l4_n17(x)
+ end
+end
+
+def fun_l3_n841(x)
+ if (x < 1)
+ fun_l4_n946(x)
+ else
+ fun_l4_n447(x)
+ end
+end
+
+def fun_l3_n842(x)
+ if (x < 1)
+ fun_l4_n66(x)
+ else
+ fun_l4_n110(x)
+ end
+end
+
+def fun_l3_n843(x)
+ if (x < 1)
+ fun_l4_n574(x)
+ else
+ fun_l4_n887(x)
+ end
+end
+
+def fun_l3_n844(x)
+ if (x < 1)
+ fun_l4_n912(x)
+ else
+ fun_l4_n465(x)
+ end
+end
+
+def fun_l3_n845(x)
+ if (x < 1)
+ fun_l4_n401(x)
+ else
+ fun_l4_n903(x)
+ end
+end
+
+def fun_l3_n846(x)
+ if (x < 1)
+ fun_l4_n929(x)
+ else
+ fun_l4_n238(x)
+ end
+end
+
+def fun_l3_n847(x)
+ if (x < 1)
+ fun_l4_n579(x)
+ else
+ fun_l4_n924(x)
+ end
+end
+
+def fun_l3_n848(x)
+ if (x < 1)
+ fun_l4_n697(x)
+ else
+ fun_l4_n157(x)
+ end
+end
+
+def fun_l3_n849(x)
+ if (x < 1)
+ fun_l4_n608(x)
+ else
+ fun_l4_n426(x)
+ end
+end
+
+def fun_l3_n850(x)
+ if (x < 1)
+ fun_l4_n710(x)
+ else
+ fun_l4_n360(x)
+ end
+end
+
+def fun_l3_n851(x)
+ if (x < 1)
+ fun_l4_n558(x)
+ else
+ fun_l4_n152(x)
+ end
+end
+
+def fun_l3_n852(x)
+ if (x < 1)
+ fun_l4_n276(x)
+ else
+ fun_l4_n895(x)
+ end
+end
+
+def fun_l3_n853(x)
+ if (x < 1)
+ fun_l4_n945(x)
+ else
+ fun_l4_n251(x)
+ end
+end
+
+def fun_l3_n854(x)
+ if (x < 1)
+ fun_l4_n131(x)
+ else
+ fun_l4_n677(x)
+ end
+end
+
+def fun_l3_n855(x)
+ if (x < 1)
+ fun_l4_n493(x)
+ else
+ fun_l4_n631(x)
+ end
+end
+
+def fun_l3_n856(x)
+ if (x < 1)
+ fun_l4_n608(x)
+ else
+ fun_l4_n556(x)
+ end
+end
+
+def fun_l3_n857(x)
+ if (x < 1)
+ fun_l4_n808(x)
+ else
+ fun_l4_n672(x)
+ end
+end
+
+def fun_l3_n858(x)
+ if (x < 1)
+ fun_l4_n407(x)
+ else
+ fun_l4_n648(x)
+ end
+end
+
+def fun_l3_n859(x)
+ if (x < 1)
+ fun_l4_n217(x)
+ else
+ fun_l4_n763(x)
+ end
+end
+
+def fun_l3_n860(x)
+ if (x < 1)
+ fun_l4_n941(x)
+ else
+ fun_l4_n159(x)
+ end
+end
+
+def fun_l3_n861(x)
+ if (x < 1)
+ fun_l4_n364(x)
+ else
+ fun_l4_n241(x)
+ end
+end
+
+def fun_l3_n862(x)
+ if (x < 1)
+ fun_l4_n915(x)
+ else
+ fun_l4_n729(x)
+ end
+end
+
+def fun_l3_n863(x)
+ if (x < 1)
+ fun_l4_n137(x)
+ else
+ fun_l4_n317(x)
+ end
+end
+
+def fun_l3_n864(x)
+ if (x < 1)
+ fun_l4_n818(x)
+ else
+ fun_l4_n782(x)
+ end
+end
+
+def fun_l3_n865(x)
+ if (x < 1)
+ fun_l4_n577(x)
+ else
+ fun_l4_n418(x)
+ end
+end
+
+def fun_l3_n866(x)
+ if (x < 1)
+ fun_l4_n882(x)
+ else
+ fun_l4_n7(x)
+ end
+end
+
+def fun_l3_n867(x)
+ if (x < 1)
+ fun_l4_n238(x)
+ else
+ fun_l4_n944(x)
+ end
+end
+
+def fun_l3_n868(x)
+ if (x < 1)
+ fun_l4_n105(x)
+ else
+ fun_l4_n465(x)
+ end
+end
+
+def fun_l3_n869(x)
+ if (x < 1)
+ fun_l4_n841(x)
+ else
+ fun_l4_n262(x)
+ end
+end
+
+def fun_l3_n870(x)
+ if (x < 1)
+ fun_l4_n32(x)
+ else
+ fun_l4_n992(x)
+ end
+end
+
+def fun_l3_n871(x)
+ if (x < 1)
+ fun_l4_n431(x)
+ else
+ fun_l4_n391(x)
+ end
+end
+
+def fun_l3_n872(x)
+ if (x < 1)
+ fun_l4_n829(x)
+ else
+ fun_l4_n879(x)
+ end
+end
+
+def fun_l3_n873(x)
+ if (x < 1)
+ fun_l4_n617(x)
+ else
+ fun_l4_n657(x)
+ end
+end
+
+def fun_l3_n874(x)
+ if (x < 1)
+ fun_l4_n529(x)
+ else
+ fun_l4_n717(x)
+ end
+end
+
+def fun_l3_n875(x)
+ if (x < 1)
+ fun_l4_n928(x)
+ else
+ fun_l4_n476(x)
+ end
+end
+
+def fun_l3_n876(x)
+ if (x < 1)
+ fun_l4_n388(x)
+ else
+ fun_l4_n949(x)
+ end
+end
+
+def fun_l3_n877(x)
+ if (x < 1)
+ fun_l4_n826(x)
+ else
+ fun_l4_n560(x)
+ end
+end
+
+def fun_l3_n878(x)
+ if (x < 1)
+ fun_l4_n863(x)
+ else
+ fun_l4_n122(x)
+ end
+end
+
+def fun_l3_n879(x)
+ if (x < 1)
+ fun_l4_n964(x)
+ else
+ fun_l4_n793(x)
+ end
+end
+
+def fun_l3_n880(x)
+ if (x < 1)
+ fun_l4_n141(x)
+ else
+ fun_l4_n132(x)
+ end
+end
+
+def fun_l3_n881(x)
+ if (x < 1)
+ fun_l4_n735(x)
+ else
+ fun_l4_n592(x)
+ end
+end
+
+def fun_l3_n882(x)
+ if (x < 1)
+ fun_l4_n585(x)
+ else
+ fun_l4_n341(x)
+ end
+end
+
+def fun_l3_n883(x)
+ if (x < 1)
+ fun_l4_n843(x)
+ else
+ fun_l4_n692(x)
+ end
+end
+
+def fun_l3_n884(x)
+ if (x < 1)
+ fun_l4_n360(x)
+ else
+ fun_l4_n833(x)
+ end
+end
+
+def fun_l3_n885(x)
+ if (x < 1)
+ fun_l4_n31(x)
+ else
+ fun_l4_n62(x)
+ end
+end
+
+def fun_l3_n886(x)
+ if (x < 1)
+ fun_l4_n756(x)
+ else
+ fun_l4_n699(x)
+ end
+end
+
+def fun_l3_n887(x)
+ if (x < 1)
+ fun_l4_n71(x)
+ else
+ fun_l4_n256(x)
+ end
+end
+
+def fun_l3_n888(x)
+ if (x < 1)
+ fun_l4_n406(x)
+ else
+ fun_l4_n493(x)
+ end
+end
+
+def fun_l3_n889(x)
+ if (x < 1)
+ fun_l4_n489(x)
+ else
+ fun_l4_n874(x)
+ end
+end
+
+def fun_l3_n890(x)
+ if (x < 1)
+ fun_l4_n365(x)
+ else
+ fun_l4_n910(x)
+ end
+end
+
+def fun_l3_n891(x)
+ if (x < 1)
+ fun_l4_n262(x)
+ else
+ fun_l4_n665(x)
+ end
+end
+
+def fun_l3_n892(x)
+ if (x < 1)
+ fun_l4_n274(x)
+ else
+ fun_l4_n849(x)
+ end
+end
+
+def fun_l3_n893(x)
+ if (x < 1)
+ fun_l4_n880(x)
+ else
+ fun_l4_n739(x)
+ end
+end
+
+def fun_l3_n894(x)
+ if (x < 1)
+ fun_l4_n504(x)
+ else
+ fun_l4_n128(x)
+ end
+end
+
+def fun_l3_n895(x)
+ if (x < 1)
+ fun_l4_n555(x)
+ else
+ fun_l4_n281(x)
+ end
+end
+
+def fun_l3_n896(x)
+ if (x < 1)
+ fun_l4_n270(x)
+ else
+ fun_l4_n225(x)
+ end
+end
+
+def fun_l3_n897(x)
+ if (x < 1)
+ fun_l4_n38(x)
+ else
+ fun_l4_n26(x)
+ end
+end
+
+def fun_l3_n898(x)
+ if (x < 1)
+ fun_l4_n944(x)
+ else
+ fun_l4_n217(x)
+ end
+end
+
+def fun_l3_n899(x)
+ if (x < 1)
+ fun_l4_n967(x)
+ else
+ fun_l4_n853(x)
+ end
+end
+
+def fun_l3_n900(x)
+ if (x < 1)
+ fun_l4_n686(x)
+ else
+ fun_l4_n760(x)
+ end
+end
+
+def fun_l3_n901(x)
+ if (x < 1)
+ fun_l4_n698(x)
+ else
+ fun_l4_n842(x)
+ end
+end
+
+def fun_l3_n902(x)
+ if (x < 1)
+ fun_l4_n344(x)
+ else
+ fun_l4_n701(x)
+ end
+end
+
+def fun_l3_n903(x)
+ if (x < 1)
+ fun_l4_n756(x)
+ else
+ fun_l4_n321(x)
+ end
+end
+
+def fun_l3_n904(x)
+ if (x < 1)
+ fun_l4_n504(x)
+ else
+ fun_l4_n228(x)
+ end
+end
+
+def fun_l3_n905(x)
+ if (x < 1)
+ fun_l4_n135(x)
+ else
+ fun_l4_n57(x)
+ end
+end
+
+def fun_l3_n906(x)
+ if (x < 1)
+ fun_l4_n279(x)
+ else
+ fun_l4_n912(x)
+ end
+end
+
+def fun_l3_n907(x)
+ if (x < 1)
+ fun_l4_n962(x)
+ else
+ fun_l4_n418(x)
+ end
+end
+
+def fun_l3_n908(x)
+ if (x < 1)
+ fun_l4_n972(x)
+ else
+ fun_l4_n14(x)
+ end
+end
+
+def fun_l3_n909(x)
+ if (x < 1)
+ fun_l4_n231(x)
+ else
+ fun_l4_n763(x)
+ end
+end
+
+def fun_l3_n910(x)
+ if (x < 1)
+ fun_l4_n859(x)
+ else
+ fun_l4_n243(x)
+ end
+end
+
+def fun_l3_n911(x)
+ if (x < 1)
+ fun_l4_n153(x)
+ else
+ fun_l4_n136(x)
+ end
+end
+
+def fun_l3_n912(x)
+ if (x < 1)
+ fun_l4_n325(x)
+ else
+ fun_l4_n113(x)
+ end
+end
+
+def fun_l3_n913(x)
+ if (x < 1)
+ fun_l4_n625(x)
+ else
+ fun_l4_n179(x)
+ end
+end
+
+def fun_l3_n914(x)
+ if (x < 1)
+ fun_l4_n54(x)
+ else
+ fun_l4_n88(x)
+ end
+end
+
+def fun_l3_n915(x)
+ if (x < 1)
+ fun_l4_n332(x)
+ else
+ fun_l4_n3(x)
+ end
+end
+
+def fun_l3_n916(x)
+ if (x < 1)
+ fun_l4_n748(x)
+ else
+ fun_l4_n21(x)
+ end
+end
+
+def fun_l3_n917(x)
+ if (x < 1)
+ fun_l4_n132(x)
+ else
+ fun_l4_n132(x)
+ end
+end
+
+def fun_l3_n918(x)
+ if (x < 1)
+ fun_l4_n295(x)
+ else
+ fun_l4_n429(x)
+ end
+end
+
+def fun_l3_n919(x)
+ if (x < 1)
+ fun_l4_n105(x)
+ else
+ fun_l4_n984(x)
+ end
+end
+
+def fun_l3_n920(x)
+ if (x < 1)
+ fun_l4_n319(x)
+ else
+ fun_l4_n304(x)
+ end
+end
+
+def fun_l3_n921(x)
+ if (x < 1)
+ fun_l4_n756(x)
+ else
+ fun_l4_n639(x)
+ end
+end
+
+def fun_l3_n922(x)
+ if (x < 1)
+ fun_l4_n678(x)
+ else
+ fun_l4_n209(x)
+ end
+end
+
+def fun_l3_n923(x)
+ if (x < 1)
+ fun_l4_n755(x)
+ else
+ fun_l4_n941(x)
+ end
+end
+
+def fun_l3_n924(x)
+ if (x < 1)
+ fun_l4_n311(x)
+ else
+ fun_l4_n272(x)
+ end
+end
+
+def fun_l3_n925(x)
+ if (x < 1)
+ fun_l4_n543(x)
+ else
+ fun_l4_n896(x)
+ end
+end
+
+def fun_l3_n926(x)
+ if (x < 1)
+ fun_l4_n994(x)
+ else
+ fun_l4_n671(x)
+ end
+end
+
+def fun_l3_n927(x)
+ if (x < 1)
+ fun_l4_n125(x)
+ else
+ fun_l4_n852(x)
+ end
+end
+
+def fun_l3_n928(x)
+ if (x < 1)
+ fun_l4_n483(x)
+ else
+ fun_l4_n350(x)
+ end
+end
+
+def fun_l3_n929(x)
+ if (x < 1)
+ fun_l4_n622(x)
+ else
+ fun_l4_n511(x)
+ end
+end
+
+def fun_l3_n930(x)
+ if (x < 1)
+ fun_l4_n134(x)
+ else
+ fun_l4_n288(x)
+ end
+end
+
+def fun_l3_n931(x)
+ if (x < 1)
+ fun_l4_n278(x)
+ else
+ fun_l4_n800(x)
+ end
+end
+
+def fun_l3_n932(x)
+ if (x < 1)
+ fun_l4_n139(x)
+ else
+ fun_l4_n966(x)
+ end
+end
+
+def fun_l3_n933(x)
+ if (x < 1)
+ fun_l4_n275(x)
+ else
+ fun_l4_n506(x)
+ end
+end
+
+def fun_l3_n934(x)
+ if (x < 1)
+ fun_l4_n503(x)
+ else
+ fun_l4_n204(x)
+ end
+end
+
+def fun_l3_n935(x)
+ if (x < 1)
+ fun_l4_n993(x)
+ else
+ fun_l4_n126(x)
+ end
+end
+
+def fun_l3_n936(x)
+ if (x < 1)
+ fun_l4_n704(x)
+ else
+ fun_l4_n462(x)
+ end
+end
+
+def fun_l3_n937(x)
+ if (x < 1)
+ fun_l4_n922(x)
+ else
+ fun_l4_n722(x)
+ end
+end
+
+def fun_l3_n938(x)
+ if (x < 1)
+ fun_l4_n937(x)
+ else
+ fun_l4_n195(x)
+ end
+end
+
+def fun_l3_n939(x)
+ if (x < 1)
+ fun_l4_n661(x)
+ else
+ fun_l4_n265(x)
+ end
+end
+
+def fun_l3_n940(x)
+ if (x < 1)
+ fun_l4_n423(x)
+ else
+ fun_l4_n230(x)
+ end
+end
+
+def fun_l3_n941(x)
+ if (x < 1)
+ fun_l4_n698(x)
+ else
+ fun_l4_n226(x)
+ end
+end
+
+def fun_l3_n942(x)
+ if (x < 1)
+ fun_l4_n501(x)
+ else
+ fun_l4_n816(x)
+ end
+end
+
+def fun_l3_n943(x)
+ if (x < 1)
+ fun_l4_n650(x)
+ else
+ fun_l4_n925(x)
+ end
+end
+
+def fun_l3_n944(x)
+ if (x < 1)
+ fun_l4_n829(x)
+ else
+ fun_l4_n647(x)
+ end
+end
+
+def fun_l3_n945(x)
+ if (x < 1)
+ fun_l4_n401(x)
+ else
+ fun_l4_n791(x)
+ end
+end
+
+def fun_l3_n946(x)
+ if (x < 1)
+ fun_l4_n551(x)
+ else
+ fun_l4_n104(x)
+ end
+end
+
+def fun_l3_n947(x)
+ if (x < 1)
+ fun_l4_n927(x)
+ else
+ fun_l4_n213(x)
+ end
+end
+
+def fun_l3_n948(x)
+ if (x < 1)
+ fun_l4_n912(x)
+ else
+ fun_l4_n609(x)
+ end
+end
+
+def fun_l3_n949(x)
+ if (x < 1)
+ fun_l4_n302(x)
+ else
+ fun_l4_n157(x)
+ end
+end
+
+def fun_l3_n950(x)
+ if (x < 1)
+ fun_l4_n955(x)
+ else
+ fun_l4_n492(x)
+ end
+end
+
+def fun_l3_n951(x)
+ if (x < 1)
+ fun_l4_n486(x)
+ else
+ fun_l4_n412(x)
+ end
+end
+
+def fun_l3_n952(x)
+ if (x < 1)
+ fun_l4_n850(x)
+ else
+ fun_l4_n885(x)
+ end
+end
+
+def fun_l3_n953(x)
+ if (x < 1)
+ fun_l4_n84(x)
+ else
+ fun_l4_n622(x)
+ end
+end
+
+def fun_l3_n954(x)
+ if (x < 1)
+ fun_l4_n235(x)
+ else
+ fun_l4_n67(x)
+ end
+end
+
+def fun_l3_n955(x)
+ if (x < 1)
+ fun_l4_n347(x)
+ else
+ fun_l4_n757(x)
+ end
+end
+
+def fun_l3_n956(x)
+ if (x < 1)
+ fun_l4_n825(x)
+ else
+ fun_l4_n10(x)
+ end
+end
+
+def fun_l3_n957(x)
+ if (x < 1)
+ fun_l4_n393(x)
+ else
+ fun_l4_n482(x)
+ end
+end
+
+def fun_l3_n958(x)
+ if (x < 1)
+ fun_l4_n0(x)
+ else
+ fun_l4_n556(x)
+ end
+end
+
+def fun_l3_n959(x)
+ if (x < 1)
+ fun_l4_n806(x)
+ else
+ fun_l4_n783(x)
+ end
+end
+
+def fun_l3_n960(x)
+ if (x < 1)
+ fun_l4_n964(x)
+ else
+ fun_l4_n843(x)
+ end
+end
+
+def fun_l3_n961(x)
+ if (x < 1)
+ fun_l4_n508(x)
+ else
+ fun_l4_n874(x)
+ end
+end
+
+def fun_l3_n962(x)
+ if (x < 1)
+ fun_l4_n15(x)
+ else
+ fun_l4_n197(x)
+ end
+end
+
+def fun_l3_n963(x)
+ if (x < 1)
+ fun_l4_n989(x)
+ else
+ fun_l4_n380(x)
+ end
+end
+
+def fun_l3_n964(x)
+ if (x < 1)
+ fun_l4_n315(x)
+ else
+ fun_l4_n196(x)
+ end
+end
+
+def fun_l3_n965(x)
+ if (x < 1)
+ fun_l4_n510(x)
+ else
+ fun_l4_n275(x)
+ end
+end
+
+def fun_l3_n966(x)
+ if (x < 1)
+ fun_l4_n725(x)
+ else
+ fun_l4_n94(x)
+ end
+end
+
+def fun_l3_n967(x)
+ if (x < 1)
+ fun_l4_n733(x)
+ else
+ fun_l4_n577(x)
+ end
+end
+
+def fun_l3_n968(x)
+ if (x < 1)
+ fun_l4_n280(x)
+ else
+ fun_l4_n702(x)
+ end
+end
+
+def fun_l3_n969(x)
+ if (x < 1)
+ fun_l4_n41(x)
+ else
+ fun_l4_n343(x)
+ end
+end
+
+def fun_l3_n970(x)
+ if (x < 1)
+ fun_l4_n102(x)
+ else
+ fun_l4_n785(x)
+ end
+end
+
+def fun_l3_n971(x)
+ if (x < 1)
+ fun_l4_n460(x)
+ else
+ fun_l4_n388(x)
+ end
+end
+
+def fun_l3_n972(x)
+ if (x < 1)
+ fun_l4_n31(x)
+ else
+ fun_l4_n421(x)
+ end
+end
+
+def fun_l3_n973(x)
+ if (x < 1)
+ fun_l4_n587(x)
+ else
+ fun_l4_n401(x)
+ end
+end
+
+def fun_l3_n974(x)
+ if (x < 1)
+ fun_l4_n593(x)
+ else
+ fun_l4_n418(x)
+ end
+end
+
+def fun_l3_n975(x)
+ if (x < 1)
+ fun_l4_n12(x)
+ else
+ fun_l4_n929(x)
+ end
+end
+
+def fun_l3_n976(x)
+ if (x < 1)
+ fun_l4_n516(x)
+ else
+ fun_l4_n402(x)
+ end
+end
+
+def fun_l3_n977(x)
+ if (x < 1)
+ fun_l4_n590(x)
+ else
+ fun_l4_n876(x)
+ end
+end
+
+def fun_l3_n978(x)
+ if (x < 1)
+ fun_l4_n505(x)
+ else
+ fun_l4_n94(x)
+ end
+end
+
+def fun_l3_n979(x)
+ if (x < 1)
+ fun_l4_n625(x)
+ else
+ fun_l4_n344(x)
+ end
+end
+
+def fun_l3_n980(x)
+ if (x < 1)
+ fun_l4_n128(x)
+ else
+ fun_l4_n454(x)
+ end
+end
+
+def fun_l3_n981(x)
+ if (x < 1)
+ fun_l4_n937(x)
+ else
+ fun_l4_n277(x)
+ end
+end
+
+def fun_l3_n982(x)
+ if (x < 1)
+ fun_l4_n237(x)
+ else
+ fun_l4_n113(x)
+ end
+end
+
+def fun_l3_n983(x)
+ if (x < 1)
+ fun_l4_n668(x)
+ else
+ fun_l4_n668(x)
+ end
+end
+
+def fun_l3_n984(x)
+ if (x < 1)
+ fun_l4_n783(x)
+ else
+ fun_l4_n771(x)
+ end
+end
+
+def fun_l3_n985(x)
+ if (x < 1)
+ fun_l4_n135(x)
+ else
+ fun_l4_n967(x)
+ end
+end
+
+def fun_l3_n986(x)
+ if (x < 1)
+ fun_l4_n29(x)
+ else
+ fun_l4_n313(x)
+ end
+end
+
+def fun_l3_n987(x)
+ if (x < 1)
+ fun_l4_n765(x)
+ else
+ fun_l4_n885(x)
+ end
+end
+
+def fun_l3_n988(x)
+ if (x < 1)
+ fun_l4_n242(x)
+ else
+ fun_l4_n622(x)
+ end
+end
+
+def fun_l3_n989(x)
+ if (x < 1)
+ fun_l4_n916(x)
+ else
+ fun_l4_n518(x)
+ end
+end
+
+def fun_l3_n990(x)
+ if (x < 1)
+ fun_l4_n523(x)
+ else
+ fun_l4_n468(x)
+ end
+end
+
+def fun_l3_n991(x)
+ if (x < 1)
+ fun_l4_n904(x)
+ else
+ fun_l4_n601(x)
+ end
+end
+
+def fun_l3_n992(x)
+ if (x < 1)
+ fun_l4_n437(x)
+ else
+ fun_l4_n77(x)
+ end
+end
+
+def fun_l3_n993(x)
+ if (x < 1)
+ fun_l4_n957(x)
+ else
+ fun_l4_n619(x)
+ end
+end
+
+def fun_l3_n994(x)
+ if (x < 1)
+ fun_l4_n540(x)
+ else
+ fun_l4_n108(x)
+ end
+end
+
+def fun_l3_n995(x)
+ if (x < 1)
+ fun_l4_n8(x)
+ else
+ fun_l4_n428(x)
+ end
+end
+
+def fun_l3_n996(x)
+ if (x < 1)
+ fun_l4_n53(x)
+ else
+ fun_l4_n278(x)
+ end
+end
+
+def fun_l3_n997(x)
+ if (x < 1)
+ fun_l4_n930(x)
+ else
+ fun_l4_n671(x)
+ end
+end
+
+def fun_l3_n998(x)
+ if (x < 1)
+ fun_l4_n574(x)
+ else
+ fun_l4_n879(x)
+ end
+end
+
+def fun_l3_n999(x)
+ if (x < 1)
+ fun_l4_n316(x)
+ else
+ fun_l4_n93(x)
+ end
+end
+
+def fun_l4_n0(x)
+ if (x < 1)
+ fun_l5_n524(x)
+ else
+ fun_l5_n284(x)
+ end
+end
+
+def fun_l4_n1(x)
+ if (x < 1)
+ fun_l5_n845(x)
+ else
+ fun_l5_n863(x)
+ end
+end
+
+def fun_l4_n2(x)
+ if (x < 1)
+ fun_l5_n258(x)
+ else
+ fun_l5_n860(x)
+ end
+end
+
+def fun_l4_n3(x)
+ if (x < 1)
+ fun_l5_n253(x)
+ else
+ fun_l5_n763(x)
+ end
+end
+
+def fun_l4_n4(x)
+ if (x < 1)
+ fun_l5_n833(x)
+ else
+ fun_l5_n807(x)
+ end
+end
+
+def fun_l4_n5(x)
+ if (x < 1)
+ fun_l5_n890(x)
+ else
+ fun_l5_n669(x)
+ end
+end
+
+def fun_l4_n6(x)
+ if (x < 1)
+ fun_l5_n396(x)
+ else
+ fun_l5_n388(x)
+ end
+end
+
+def fun_l4_n7(x)
+ if (x < 1)
+ fun_l5_n926(x)
+ else
+ fun_l5_n661(x)
+ end
+end
+
+def fun_l4_n8(x)
+ if (x < 1)
+ fun_l5_n990(x)
+ else
+ fun_l5_n765(x)
+ end
+end
+
+def fun_l4_n9(x)
+ if (x < 1)
+ fun_l5_n978(x)
+ else
+ fun_l5_n342(x)
+ end
+end
+
+def fun_l4_n10(x)
+ if (x < 1)
+ fun_l5_n500(x)
+ else
+ fun_l5_n758(x)
+ end
+end
+
+def fun_l4_n11(x)
+ if (x < 1)
+ fun_l5_n10(x)
+ else
+ fun_l5_n796(x)
+ end
+end
+
+def fun_l4_n12(x)
+ if (x < 1)
+ fun_l5_n173(x)
+ else
+ fun_l5_n87(x)
+ end
+end
+
+def fun_l4_n13(x)
+ if (x < 1)
+ fun_l5_n852(x)
+ else
+ fun_l5_n93(x)
+ end
+end
+
+def fun_l4_n14(x)
+ if (x < 1)
+ fun_l5_n526(x)
+ else
+ fun_l5_n144(x)
+ end
+end
+
+def fun_l4_n15(x)
+ if (x < 1)
+ fun_l5_n398(x)
+ else
+ fun_l5_n632(x)
+ end
+end
+
+def fun_l4_n16(x)
+ if (x < 1)
+ fun_l5_n774(x)
+ else
+ fun_l5_n716(x)
+ end
+end
+
+def fun_l4_n17(x)
+ if (x < 1)
+ fun_l5_n412(x)
+ else
+ fun_l5_n95(x)
+ end
+end
+
+def fun_l4_n18(x)
+ if (x < 1)
+ fun_l5_n446(x)
+ else
+ fun_l5_n885(x)
+ end
+end
+
+def fun_l4_n19(x)
+ if (x < 1)
+ fun_l5_n420(x)
+ else
+ fun_l5_n420(x)
+ end
+end
+
+def fun_l4_n20(x)
+ if (x < 1)
+ fun_l5_n274(x)
+ else
+ fun_l5_n813(x)
+ end
+end
+
+def fun_l4_n21(x)
+ if (x < 1)
+ fun_l5_n174(x)
+ else
+ fun_l5_n781(x)
+ end
+end
+
+def fun_l4_n22(x)
+ if (x < 1)
+ fun_l5_n903(x)
+ else
+ fun_l5_n224(x)
+ end
+end
+
+def fun_l4_n23(x)
+ if (x < 1)
+ fun_l5_n317(x)
+ else
+ fun_l5_n900(x)
+ end
+end
+
+def fun_l4_n24(x)
+ if (x < 1)
+ fun_l5_n600(x)
+ else
+ fun_l5_n515(x)
+ end
+end
+
+def fun_l4_n25(x)
+ if (x < 1)
+ fun_l5_n151(x)
+ else
+ fun_l5_n790(x)
+ end
+end
+
+def fun_l4_n26(x)
+ if (x < 1)
+ fun_l5_n256(x)
+ else
+ fun_l5_n449(x)
+ end
+end
+
+def fun_l4_n27(x)
+ if (x < 1)
+ fun_l5_n985(x)
+ else
+ fun_l5_n763(x)
+ end
+end
+
+def fun_l4_n28(x)
+ if (x < 1)
+ fun_l5_n961(x)
+ else
+ fun_l5_n86(x)
+ end
+end
+
+def fun_l4_n29(x)
+ if (x < 1)
+ fun_l5_n359(x)
+ else
+ fun_l5_n894(x)
+ end
+end
+
+def fun_l4_n30(x)
+ if (x < 1)
+ fun_l5_n426(x)
+ else
+ fun_l5_n983(x)
+ end
+end
+
+def fun_l4_n31(x)
+ if (x < 1)
+ fun_l5_n996(x)
+ else
+ fun_l5_n343(x)
+ end
+end
+
+def fun_l4_n32(x)
+ if (x < 1)
+ fun_l5_n300(x)
+ else
+ fun_l5_n719(x)
+ end
+end
+
+def fun_l4_n33(x)
+ if (x < 1)
+ fun_l5_n755(x)
+ else
+ fun_l5_n623(x)
+ end
+end
+
+def fun_l4_n34(x)
+ if (x < 1)
+ fun_l5_n681(x)
+ else
+ fun_l5_n410(x)
+ end
+end
+
+def fun_l4_n35(x)
+ if (x < 1)
+ fun_l5_n356(x)
+ else
+ fun_l5_n351(x)
+ end
+end
+
+def fun_l4_n36(x)
+ if (x < 1)
+ fun_l5_n463(x)
+ else
+ fun_l5_n402(x)
+ end
+end
+
+def fun_l4_n37(x)
+ if (x < 1)
+ fun_l5_n250(x)
+ else
+ fun_l5_n681(x)
+ end
+end
+
+def fun_l4_n38(x)
+ if (x < 1)
+ fun_l5_n573(x)
+ else
+ fun_l5_n622(x)
+ end
+end
+
+def fun_l4_n39(x)
+ if (x < 1)
+ fun_l5_n545(x)
+ else
+ fun_l5_n210(x)
+ end
+end
+
+def fun_l4_n40(x)
+ if (x < 1)
+ fun_l5_n264(x)
+ else
+ fun_l5_n239(x)
+ end
+end
+
+def fun_l4_n41(x)
+ if (x < 1)
+ fun_l5_n635(x)
+ else
+ fun_l5_n224(x)
+ end
+end
+
+def fun_l4_n42(x)
+ if (x < 1)
+ fun_l5_n806(x)
+ else
+ fun_l5_n125(x)
+ end
+end
+
+def fun_l4_n43(x)
+ if (x < 1)
+ fun_l5_n480(x)
+ else
+ fun_l5_n625(x)
+ end
+end
+
+def fun_l4_n44(x)
+ if (x < 1)
+ fun_l5_n644(x)
+ else
+ fun_l5_n465(x)
+ end
+end
+
+def fun_l4_n45(x)
+ if (x < 1)
+ fun_l5_n999(x)
+ else
+ fun_l5_n759(x)
+ end
+end
+
+def fun_l4_n46(x)
+ if (x < 1)
+ fun_l5_n866(x)
+ else
+ fun_l5_n536(x)
+ end
+end
+
+def fun_l4_n47(x)
+ if (x < 1)
+ fun_l5_n328(x)
+ else
+ fun_l5_n533(x)
+ end
+end
+
+def fun_l4_n48(x)
+ if (x < 1)
+ fun_l5_n902(x)
+ else
+ fun_l5_n919(x)
+ end
+end
+
+def fun_l4_n49(x)
+ if (x < 1)
+ fun_l5_n197(x)
+ else
+ fun_l5_n262(x)
+ end
+end
+
+def fun_l4_n50(x)
+ if (x < 1)
+ fun_l5_n172(x)
+ else
+ fun_l5_n731(x)
+ end
+end
+
+def fun_l4_n51(x)
+ if (x < 1)
+ fun_l5_n502(x)
+ else
+ fun_l5_n149(x)
+ end
+end
+
+def fun_l4_n52(x)
+ if (x < 1)
+ fun_l5_n69(x)
+ else
+ fun_l5_n536(x)
+ end
+end
+
+def fun_l4_n53(x)
+ if (x < 1)
+ fun_l5_n932(x)
+ else
+ fun_l5_n482(x)
+ end
+end
+
+def fun_l4_n54(x)
+ if (x < 1)
+ fun_l5_n982(x)
+ else
+ fun_l5_n207(x)
+ end
+end
+
+def fun_l4_n55(x)
+ if (x < 1)
+ fun_l5_n949(x)
+ else
+ fun_l5_n9(x)
+ end
+end
+
+def fun_l4_n56(x)
+ if (x < 1)
+ fun_l5_n672(x)
+ else
+ fun_l5_n924(x)
+ end
+end
+
+def fun_l4_n57(x)
+ if (x < 1)
+ fun_l5_n757(x)
+ else
+ fun_l5_n609(x)
+ end
+end
+
+def fun_l4_n58(x)
+ if (x < 1)
+ fun_l5_n251(x)
+ else
+ fun_l5_n471(x)
+ end
+end
+
+def fun_l4_n59(x)
+ if (x < 1)
+ fun_l5_n878(x)
+ else
+ fun_l5_n626(x)
+ end
+end
+
+def fun_l4_n60(x)
+ if (x < 1)
+ fun_l5_n859(x)
+ else
+ fun_l5_n646(x)
+ end
+end
+
+def fun_l4_n61(x)
+ if (x < 1)
+ fun_l5_n417(x)
+ else
+ fun_l5_n587(x)
+ end
+end
+
+def fun_l4_n62(x)
+ if (x < 1)
+ fun_l5_n164(x)
+ else
+ fun_l5_n861(x)
+ end
+end
+
+def fun_l4_n63(x)
+ if (x < 1)
+ fun_l5_n591(x)
+ else
+ fun_l5_n79(x)
+ end
+end
+
+def fun_l4_n64(x)
+ if (x < 1)
+ fun_l5_n269(x)
+ else
+ fun_l5_n336(x)
+ end
+end
+
+def fun_l4_n65(x)
+ if (x < 1)
+ fun_l5_n420(x)
+ else
+ fun_l5_n557(x)
+ end
+end
+
+def fun_l4_n66(x)
+ if (x < 1)
+ fun_l5_n61(x)
+ else
+ fun_l5_n690(x)
+ end
+end
+
+def fun_l4_n67(x)
+ if (x < 1)
+ fun_l5_n939(x)
+ else
+ fun_l5_n139(x)
+ end
+end
+
+def fun_l4_n68(x)
+ if (x < 1)
+ fun_l5_n430(x)
+ else
+ fun_l5_n625(x)
+ end
+end
+
+def fun_l4_n69(x)
+ if (x < 1)
+ fun_l5_n532(x)
+ else
+ fun_l5_n909(x)
+ end
+end
+
+def fun_l4_n70(x)
+ if (x < 1)
+ fun_l5_n937(x)
+ else
+ fun_l5_n886(x)
+ end
+end
+
+def fun_l4_n71(x)
+ if (x < 1)
+ fun_l5_n554(x)
+ else
+ fun_l5_n898(x)
+ end
+end
+
+def fun_l4_n72(x)
+ if (x < 1)
+ fun_l5_n390(x)
+ else
+ fun_l5_n690(x)
+ end
+end
+
+def fun_l4_n73(x)
+ if (x < 1)
+ fun_l5_n980(x)
+ else
+ fun_l5_n248(x)
+ end
+end
+
+def fun_l4_n74(x)
+ if (x < 1)
+ fun_l5_n438(x)
+ else
+ fun_l5_n247(x)
+ end
+end
+
+def fun_l4_n75(x)
+ if (x < 1)
+ fun_l5_n798(x)
+ else
+ fun_l5_n399(x)
+ end
+end
+
+def fun_l4_n76(x)
+ if (x < 1)
+ fun_l5_n419(x)
+ else
+ fun_l5_n754(x)
+ end
+end
+
+def fun_l4_n77(x)
+ if (x < 1)
+ fun_l5_n875(x)
+ else
+ fun_l5_n18(x)
+ end
+end
+
+def fun_l4_n78(x)
+ if (x < 1)
+ fun_l5_n695(x)
+ else
+ fun_l5_n336(x)
+ end
+end
+
+def fun_l4_n79(x)
+ if (x < 1)
+ fun_l5_n185(x)
+ else
+ fun_l5_n627(x)
+ end
+end
+
+def fun_l4_n80(x)
+ if (x < 1)
+ fun_l5_n359(x)
+ else
+ fun_l5_n465(x)
+ end
+end
+
+def fun_l4_n81(x)
+ if (x < 1)
+ fun_l5_n284(x)
+ else
+ fun_l5_n232(x)
+ end
+end
+
+def fun_l4_n82(x)
+ if (x < 1)
+ fun_l5_n947(x)
+ else
+ fun_l5_n748(x)
+ end
+end
+
+def fun_l4_n83(x)
+ if (x < 1)
+ fun_l5_n254(x)
+ else
+ fun_l5_n836(x)
+ end
+end
+
+def fun_l4_n84(x)
+ if (x < 1)
+ fun_l5_n181(x)
+ else
+ fun_l5_n789(x)
+ end
+end
+
+def fun_l4_n85(x)
+ if (x < 1)
+ fun_l5_n682(x)
+ else
+ fun_l5_n547(x)
+ end
+end
+
+def fun_l4_n86(x)
+ if (x < 1)
+ fun_l5_n35(x)
+ else
+ fun_l5_n157(x)
+ end
+end
+
+def fun_l4_n87(x)
+ if (x < 1)
+ fun_l5_n981(x)
+ else
+ fun_l5_n724(x)
+ end
+end
+
+def fun_l4_n88(x)
+ if (x < 1)
+ fun_l5_n35(x)
+ else
+ fun_l5_n914(x)
+ end
+end
+
+def fun_l4_n89(x)
+ if (x < 1)
+ fun_l5_n844(x)
+ else
+ fun_l5_n668(x)
+ end
+end
+
+def fun_l4_n90(x)
+ if (x < 1)
+ fun_l5_n615(x)
+ else
+ fun_l5_n415(x)
+ end
+end
+
+def fun_l4_n91(x)
+ if (x < 1)
+ fun_l5_n141(x)
+ else
+ fun_l5_n538(x)
+ end
+end
+
+def fun_l4_n92(x)
+ if (x < 1)
+ fun_l5_n563(x)
+ else
+ fun_l5_n60(x)
+ end
+end
+
+def fun_l4_n93(x)
+ if (x < 1)
+ fun_l5_n967(x)
+ else
+ fun_l5_n549(x)
+ end
+end
+
+def fun_l4_n94(x)
+ if (x < 1)
+ fun_l5_n992(x)
+ else
+ fun_l5_n34(x)
+ end
+end
+
+def fun_l4_n95(x)
+ if (x < 1)
+ fun_l5_n187(x)
+ else
+ fun_l5_n980(x)
+ end
+end
+
+def fun_l4_n96(x)
+ if (x < 1)
+ fun_l5_n543(x)
+ else
+ fun_l5_n318(x)
+ end
+end
+
+def fun_l4_n97(x)
+ if (x < 1)
+ fun_l5_n253(x)
+ else
+ fun_l5_n709(x)
+ end
+end
+
+def fun_l4_n98(x)
+ if (x < 1)
+ fun_l5_n233(x)
+ else
+ fun_l5_n963(x)
+ end
+end
+
+def fun_l4_n99(x)
+ if (x < 1)
+ fun_l5_n944(x)
+ else
+ fun_l5_n688(x)
+ end
+end
+
+def fun_l4_n100(x)
+ if (x < 1)
+ fun_l5_n422(x)
+ else
+ fun_l5_n805(x)
+ end
+end
+
+def fun_l4_n101(x)
+ if (x < 1)
+ fun_l5_n125(x)
+ else
+ fun_l5_n729(x)
+ end
+end
+
+def fun_l4_n102(x)
+ if (x < 1)
+ fun_l5_n339(x)
+ else
+ fun_l5_n394(x)
+ end
+end
+
+def fun_l4_n103(x)
+ if (x < 1)
+ fun_l5_n149(x)
+ else
+ fun_l5_n839(x)
+ end
+end
+
+def fun_l4_n104(x)
+ if (x < 1)
+ fun_l5_n750(x)
+ else
+ fun_l5_n514(x)
+ end
+end
+
+def fun_l4_n105(x)
+ if (x < 1)
+ fun_l5_n726(x)
+ else
+ fun_l5_n251(x)
+ end
+end
+
+def fun_l4_n106(x)
+ if (x < 1)
+ fun_l5_n810(x)
+ else
+ fun_l5_n46(x)
+ end
+end
+
+def fun_l4_n107(x)
+ if (x < 1)
+ fun_l5_n702(x)
+ else
+ fun_l5_n224(x)
+ end
+end
+
+def fun_l4_n108(x)
+ if (x < 1)
+ fun_l5_n604(x)
+ else
+ fun_l5_n24(x)
+ end
+end
+
+def fun_l4_n109(x)
+ if (x < 1)
+ fun_l5_n511(x)
+ else
+ fun_l5_n529(x)
+ end
+end
+
+def fun_l4_n110(x)
+ if (x < 1)
+ fun_l5_n193(x)
+ else
+ fun_l5_n210(x)
+ end
+end
+
+def fun_l4_n111(x)
+ if (x < 1)
+ fun_l5_n599(x)
+ else
+ fun_l5_n85(x)
+ end
+end
+
+def fun_l4_n112(x)
+ if (x < 1)
+ fun_l5_n910(x)
+ else
+ fun_l5_n292(x)
+ end
+end
+
+def fun_l4_n113(x)
+ if (x < 1)
+ fun_l5_n851(x)
+ else
+ fun_l5_n269(x)
+ end
+end
+
+def fun_l4_n114(x)
+ if (x < 1)
+ fun_l5_n739(x)
+ else
+ fun_l5_n439(x)
+ end
+end
+
+def fun_l4_n115(x)
+ if (x < 1)
+ fun_l5_n580(x)
+ else
+ fun_l5_n656(x)
+ end
+end
+
+def fun_l4_n116(x)
+ if (x < 1)
+ fun_l5_n992(x)
+ else
+ fun_l5_n703(x)
+ end
+end
+
+def fun_l4_n117(x)
+ if (x < 1)
+ fun_l5_n549(x)
+ else
+ fun_l5_n300(x)
+ end
+end
+
+def fun_l4_n118(x)
+ if (x < 1)
+ fun_l5_n785(x)
+ else
+ fun_l5_n596(x)
+ end
+end
+
+def fun_l4_n119(x)
+ if (x < 1)
+ fun_l5_n236(x)
+ else
+ fun_l5_n84(x)
+ end
+end
+
+def fun_l4_n120(x)
+ if (x < 1)
+ fun_l5_n78(x)
+ else
+ fun_l5_n610(x)
+ end
+end
+
+def fun_l4_n121(x)
+ if (x < 1)
+ fun_l5_n591(x)
+ else
+ fun_l5_n557(x)
+ end
+end
+
+def fun_l4_n122(x)
+ if (x < 1)
+ fun_l5_n927(x)
+ else
+ fun_l5_n40(x)
+ end
+end
+
+def fun_l4_n123(x)
+ if (x < 1)
+ fun_l5_n620(x)
+ else
+ fun_l5_n173(x)
+ end
+end
+
+def fun_l4_n124(x)
+ if (x < 1)
+ fun_l5_n558(x)
+ else
+ fun_l5_n330(x)
+ end
+end
+
+def fun_l4_n125(x)
+ if (x < 1)
+ fun_l5_n535(x)
+ else
+ fun_l5_n636(x)
+ end
+end
+
+def fun_l4_n126(x)
+ if (x < 1)
+ fun_l5_n401(x)
+ else
+ fun_l5_n747(x)
+ end
+end
+
+def fun_l4_n127(x)
+ if (x < 1)
+ fun_l5_n172(x)
+ else
+ fun_l5_n124(x)
+ end
+end
+
+def fun_l4_n128(x)
+ if (x < 1)
+ fun_l5_n449(x)
+ else
+ fun_l5_n619(x)
+ end
+end
+
+def fun_l4_n129(x)
+ if (x < 1)
+ fun_l5_n564(x)
+ else
+ fun_l5_n306(x)
+ end
+end
+
+def fun_l4_n130(x)
+ if (x < 1)
+ fun_l5_n196(x)
+ else
+ fun_l5_n170(x)
+ end
+end
+
+def fun_l4_n131(x)
+ if (x < 1)
+ fun_l5_n383(x)
+ else
+ fun_l5_n87(x)
+ end
+end
+
+def fun_l4_n132(x)
+ if (x < 1)
+ fun_l5_n568(x)
+ else
+ fun_l5_n54(x)
+ end
+end
+
+def fun_l4_n133(x)
+ if (x < 1)
+ fun_l5_n780(x)
+ else
+ fun_l5_n184(x)
+ end
+end
+
+def fun_l4_n134(x)
+ if (x < 1)
+ fun_l5_n880(x)
+ else
+ fun_l5_n38(x)
+ end
+end
+
+def fun_l4_n135(x)
+ if (x < 1)
+ fun_l5_n819(x)
+ else
+ fun_l5_n440(x)
+ end
+end
+
+def fun_l4_n136(x)
+ if (x < 1)
+ fun_l5_n301(x)
+ else
+ fun_l5_n676(x)
+ end
+end
+
+def fun_l4_n137(x)
+ if (x < 1)
+ fun_l5_n69(x)
+ else
+ fun_l5_n333(x)
+ end
+end
+
+def fun_l4_n138(x)
+ if (x < 1)
+ fun_l5_n303(x)
+ else
+ fun_l5_n69(x)
+ end
+end
+
+def fun_l4_n139(x)
+ if (x < 1)
+ fun_l5_n939(x)
+ else
+ fun_l5_n103(x)
+ end
+end
+
+def fun_l4_n140(x)
+ if (x < 1)
+ fun_l5_n517(x)
+ else
+ fun_l5_n24(x)
+ end
+end
+
+def fun_l4_n141(x)
+ if (x < 1)
+ fun_l5_n923(x)
+ else
+ fun_l5_n968(x)
+ end
+end
+
+def fun_l4_n142(x)
+ if (x < 1)
+ fun_l5_n196(x)
+ else
+ fun_l5_n841(x)
+ end
+end
+
+def fun_l4_n143(x)
+ if (x < 1)
+ fun_l5_n726(x)
+ else
+ fun_l5_n715(x)
+ end
+end
+
+def fun_l4_n144(x)
+ if (x < 1)
+ fun_l5_n434(x)
+ else
+ fun_l5_n771(x)
+ end
+end
+
+def fun_l4_n145(x)
+ if (x < 1)
+ fun_l5_n211(x)
+ else
+ fun_l5_n963(x)
+ end
+end
+
+def fun_l4_n146(x)
+ if (x < 1)
+ fun_l5_n534(x)
+ else
+ fun_l5_n5(x)
+ end
+end
+
+def fun_l4_n147(x)
+ if (x < 1)
+ fun_l5_n409(x)
+ else
+ fun_l5_n298(x)
+ end
+end
+
+def fun_l4_n148(x)
+ if (x < 1)
+ fun_l5_n447(x)
+ else
+ fun_l5_n474(x)
+ end
+end
+
+def fun_l4_n149(x)
+ if (x < 1)
+ fun_l5_n181(x)
+ else
+ fun_l5_n87(x)
+ end
+end
+
+def fun_l4_n150(x)
+ if (x < 1)
+ fun_l5_n871(x)
+ else
+ fun_l5_n201(x)
+ end
+end
+
+def fun_l4_n151(x)
+ if (x < 1)
+ fun_l5_n539(x)
+ else
+ fun_l5_n855(x)
+ end
+end
+
+def fun_l4_n152(x)
+ if (x < 1)
+ fun_l5_n387(x)
+ else
+ fun_l5_n730(x)
+ end
+end
+
+def fun_l4_n153(x)
+ if (x < 1)
+ fun_l5_n785(x)
+ else
+ fun_l5_n774(x)
+ end
+end
+
+def fun_l4_n154(x)
+ if (x < 1)
+ fun_l5_n924(x)
+ else
+ fun_l5_n414(x)
+ end
+end
+
+def fun_l4_n155(x)
+ if (x < 1)
+ fun_l5_n110(x)
+ else
+ fun_l5_n669(x)
+ end
+end
+
+def fun_l4_n156(x)
+ if (x < 1)
+ fun_l5_n551(x)
+ else
+ fun_l5_n456(x)
+ end
+end
+
+def fun_l4_n157(x)
+ if (x < 1)
+ fun_l5_n872(x)
+ else
+ fun_l5_n397(x)
+ end
+end
+
+def fun_l4_n158(x)
+ if (x < 1)
+ fun_l5_n208(x)
+ else
+ fun_l5_n464(x)
+ end
+end
+
+def fun_l4_n159(x)
+ if (x < 1)
+ fun_l5_n236(x)
+ else
+ fun_l5_n532(x)
+ end
+end
+
+def fun_l4_n160(x)
+ if (x < 1)
+ fun_l5_n820(x)
+ else
+ fun_l5_n146(x)
+ end
+end
+
+def fun_l4_n161(x)
+ if (x < 1)
+ fun_l5_n154(x)
+ else
+ fun_l5_n388(x)
+ end
+end
+
+def fun_l4_n162(x)
+ if (x < 1)
+ fun_l5_n456(x)
+ else
+ fun_l5_n309(x)
+ end
+end
+
+def fun_l4_n163(x)
+ if (x < 1)
+ fun_l5_n201(x)
+ else
+ fun_l5_n728(x)
+ end
+end
+
+def fun_l4_n164(x)
+ if (x < 1)
+ fun_l5_n806(x)
+ else
+ fun_l5_n156(x)
+ end
+end
+
+def fun_l4_n165(x)
+ if (x < 1)
+ fun_l5_n984(x)
+ else
+ fun_l5_n996(x)
+ end
+end
+
+def fun_l4_n166(x)
+ if (x < 1)
+ fun_l5_n253(x)
+ else
+ fun_l5_n527(x)
+ end
+end
+
+def fun_l4_n167(x)
+ if (x < 1)
+ fun_l5_n513(x)
+ else
+ fun_l5_n145(x)
+ end
+end
+
+def fun_l4_n168(x)
+ if (x < 1)
+ fun_l5_n694(x)
+ else
+ fun_l5_n841(x)
+ end
+end
+
+def fun_l4_n169(x)
+ if (x < 1)
+ fun_l5_n463(x)
+ else
+ fun_l5_n193(x)
+ end
+end
+
+def fun_l4_n170(x)
+ if (x < 1)
+ fun_l5_n638(x)
+ else
+ fun_l5_n252(x)
+ end
+end
+
+def fun_l4_n171(x)
+ if (x < 1)
+ fun_l5_n166(x)
+ else
+ fun_l5_n134(x)
+ end
+end
+
+def fun_l4_n172(x)
+ if (x < 1)
+ fun_l5_n172(x)
+ else
+ fun_l5_n179(x)
+ end
+end
+
+def fun_l4_n173(x)
+ if (x < 1)
+ fun_l5_n218(x)
+ else
+ fun_l5_n124(x)
+ end
+end
+
+def fun_l4_n174(x)
+ if (x < 1)
+ fun_l5_n370(x)
+ else
+ fun_l5_n742(x)
+ end
+end
+
+def fun_l4_n175(x)
+ if (x < 1)
+ fun_l5_n593(x)
+ else
+ fun_l5_n542(x)
+ end
+end
+
+def fun_l4_n176(x)
+ if (x < 1)
+ fun_l5_n438(x)
+ else
+ fun_l5_n606(x)
+ end
+end
+
+def fun_l4_n177(x)
+ if (x < 1)
+ fun_l5_n316(x)
+ else
+ fun_l5_n92(x)
+ end
+end
+
+def fun_l4_n178(x)
+ if (x < 1)
+ fun_l5_n222(x)
+ else
+ fun_l5_n461(x)
+ end
+end
+
+def fun_l4_n179(x)
+ if (x < 1)
+ fun_l5_n244(x)
+ else
+ fun_l5_n536(x)
+ end
+end
+
+def fun_l4_n180(x)
+ if (x < 1)
+ fun_l5_n120(x)
+ else
+ fun_l5_n905(x)
+ end
+end
+
+def fun_l4_n181(x)
+ if (x < 1)
+ fun_l5_n601(x)
+ else
+ fun_l5_n62(x)
+ end
+end
+
+def fun_l4_n182(x)
+ if (x < 1)
+ fun_l5_n701(x)
+ else
+ fun_l5_n25(x)
+ end
+end
+
+def fun_l4_n183(x)
+ if (x < 1)
+ fun_l5_n361(x)
+ else
+ fun_l5_n433(x)
+ end
+end
+
+def fun_l4_n184(x)
+ if (x < 1)
+ fun_l5_n29(x)
+ else
+ fun_l5_n302(x)
+ end
+end
+
+def fun_l4_n185(x)
+ if (x < 1)
+ fun_l5_n697(x)
+ else
+ fun_l5_n849(x)
+ end
+end
+
+def fun_l4_n186(x)
+ if (x < 1)
+ fun_l5_n76(x)
+ else
+ fun_l5_n402(x)
+ end
+end
+
+def fun_l4_n187(x)
+ if (x < 1)
+ fun_l5_n38(x)
+ else
+ fun_l5_n818(x)
+ end
+end
+
+def fun_l4_n188(x)
+ if (x < 1)
+ fun_l5_n730(x)
+ else
+ fun_l5_n456(x)
+ end
+end
+
+def fun_l4_n189(x)
+ if (x < 1)
+ fun_l5_n828(x)
+ else
+ fun_l5_n796(x)
+ end
+end
+
+def fun_l4_n190(x)
+ if (x < 1)
+ fun_l5_n86(x)
+ else
+ fun_l5_n976(x)
+ end
+end
+
+def fun_l4_n191(x)
+ if (x < 1)
+ fun_l5_n267(x)
+ else
+ fun_l5_n497(x)
+ end
+end
+
+def fun_l4_n192(x)
+ if (x < 1)
+ fun_l5_n534(x)
+ else
+ fun_l5_n449(x)
+ end
+end
+
+def fun_l4_n193(x)
+ if (x < 1)
+ fun_l5_n97(x)
+ else
+ fun_l5_n595(x)
+ end
+end
+
+def fun_l4_n194(x)
+ if (x < 1)
+ fun_l5_n821(x)
+ else
+ fun_l5_n823(x)
+ end
+end
+
+def fun_l4_n195(x)
+ if (x < 1)
+ fun_l5_n936(x)
+ else
+ fun_l5_n490(x)
+ end
+end
+
+def fun_l4_n196(x)
+ if (x < 1)
+ fun_l5_n579(x)
+ else
+ fun_l5_n684(x)
+ end
+end
+
+def fun_l4_n197(x)
+ if (x < 1)
+ fun_l5_n742(x)
+ else
+ fun_l5_n874(x)
+ end
+end
+
+def fun_l4_n198(x)
+ if (x < 1)
+ fun_l5_n904(x)
+ else
+ fun_l5_n394(x)
+ end
+end
+
+def fun_l4_n199(x)
+ if (x < 1)
+ fun_l5_n229(x)
+ else
+ fun_l5_n406(x)
+ end
+end
+
+def fun_l4_n200(x)
+ if (x < 1)
+ fun_l5_n332(x)
+ else
+ fun_l5_n803(x)
+ end
+end
+
+def fun_l4_n201(x)
+ if (x < 1)
+ fun_l5_n635(x)
+ else
+ fun_l5_n294(x)
+ end
+end
+
+def fun_l4_n202(x)
+ if (x < 1)
+ fun_l5_n397(x)
+ else
+ fun_l5_n924(x)
+ end
+end
+
+def fun_l4_n203(x)
+ if (x < 1)
+ fun_l5_n199(x)
+ else
+ fun_l5_n751(x)
+ end
+end
+
+def fun_l4_n204(x)
+ if (x < 1)
+ fun_l5_n570(x)
+ else
+ fun_l5_n70(x)
+ end
+end
+
+def fun_l4_n205(x)
+ if (x < 1)
+ fun_l5_n344(x)
+ else
+ fun_l5_n713(x)
+ end
+end
+
+def fun_l4_n206(x)
+ if (x < 1)
+ fun_l5_n568(x)
+ else
+ fun_l5_n40(x)
+ end
+end
+
+def fun_l4_n207(x)
+ if (x < 1)
+ fun_l5_n460(x)
+ else
+ fun_l5_n311(x)
+ end
+end
+
+def fun_l4_n208(x)
+ if (x < 1)
+ fun_l5_n995(x)
+ else
+ fun_l5_n147(x)
+ end
+end
+
+def fun_l4_n209(x)
+ if (x < 1)
+ fun_l5_n295(x)
+ else
+ fun_l5_n752(x)
+ end
+end
+
+def fun_l4_n210(x)
+ if (x < 1)
+ fun_l5_n644(x)
+ else
+ fun_l5_n555(x)
+ end
+end
+
+def fun_l4_n211(x)
+ if (x < 1)
+ fun_l5_n196(x)
+ else
+ fun_l5_n418(x)
+ end
+end
+
+def fun_l4_n212(x)
+ if (x < 1)
+ fun_l5_n761(x)
+ else
+ fun_l5_n66(x)
+ end
+end
+
+def fun_l4_n213(x)
+ if (x < 1)
+ fun_l5_n906(x)
+ else
+ fun_l5_n521(x)
+ end
+end
+
+def fun_l4_n214(x)
+ if (x < 1)
+ fun_l5_n97(x)
+ else
+ fun_l5_n431(x)
+ end
+end
+
+def fun_l4_n215(x)
+ if (x < 1)
+ fun_l5_n450(x)
+ else
+ fun_l5_n58(x)
+ end
+end
+
+def fun_l4_n216(x)
+ if (x < 1)
+ fun_l5_n576(x)
+ else
+ fun_l5_n675(x)
+ end
+end
+
+def fun_l4_n217(x)
+ if (x < 1)
+ fun_l5_n764(x)
+ else
+ fun_l5_n653(x)
+ end
+end
+
+def fun_l4_n218(x)
+ if (x < 1)
+ fun_l5_n591(x)
+ else
+ fun_l5_n398(x)
+ end
+end
+
+def fun_l4_n219(x)
+ if (x < 1)
+ fun_l5_n94(x)
+ else
+ fun_l5_n411(x)
+ end
+end
+
+def fun_l4_n220(x)
+ if (x < 1)
+ fun_l5_n13(x)
+ else
+ fun_l5_n117(x)
+ end
+end
+
+def fun_l4_n221(x)
+ if (x < 1)
+ fun_l5_n872(x)
+ else
+ fun_l5_n799(x)
+ end
+end
+
+def fun_l4_n222(x)
+ if (x < 1)
+ fun_l5_n692(x)
+ else
+ fun_l5_n99(x)
+ end
+end
+
+def fun_l4_n223(x)
+ if (x < 1)
+ fun_l5_n861(x)
+ else
+ fun_l5_n999(x)
+ end
+end
+
+def fun_l4_n224(x)
+ if (x < 1)
+ fun_l5_n547(x)
+ else
+ fun_l5_n955(x)
+ end
+end
+
+def fun_l4_n225(x)
+ if (x < 1)
+ fun_l5_n305(x)
+ else
+ fun_l5_n894(x)
+ end
+end
+
+def fun_l4_n226(x)
+ if (x < 1)
+ fun_l5_n128(x)
+ else
+ fun_l5_n662(x)
+ end
+end
+
+def fun_l4_n227(x)
+ if (x < 1)
+ fun_l5_n858(x)
+ else
+ fun_l5_n323(x)
+ end
+end
+
+def fun_l4_n228(x)
+ if (x < 1)
+ fun_l5_n923(x)
+ else
+ fun_l5_n206(x)
+ end
+end
+
+def fun_l4_n229(x)
+ if (x < 1)
+ fun_l5_n486(x)
+ else
+ fun_l5_n603(x)
+ end
+end
+
+def fun_l4_n230(x)
+ if (x < 1)
+ fun_l5_n116(x)
+ else
+ fun_l5_n887(x)
+ end
+end
+
+def fun_l4_n231(x)
+ if (x < 1)
+ fun_l5_n791(x)
+ else
+ fun_l5_n762(x)
+ end
+end
+
+def fun_l4_n232(x)
+ if (x < 1)
+ fun_l5_n511(x)
+ else
+ fun_l5_n890(x)
+ end
+end
+
+def fun_l4_n233(x)
+ if (x < 1)
+ fun_l5_n600(x)
+ else
+ fun_l5_n777(x)
+ end
+end
+
+def fun_l4_n234(x)
+ if (x < 1)
+ fun_l5_n458(x)
+ else
+ fun_l5_n379(x)
+ end
+end
+
+def fun_l4_n235(x)
+ if (x < 1)
+ fun_l5_n907(x)
+ else
+ fun_l5_n463(x)
+ end
+end
+
+def fun_l4_n236(x)
+ if (x < 1)
+ fun_l5_n177(x)
+ else
+ fun_l5_n732(x)
+ end
+end
+
+def fun_l4_n237(x)
+ if (x < 1)
+ fun_l5_n761(x)
+ else
+ fun_l5_n936(x)
+ end
+end
+
+def fun_l4_n238(x)
+ if (x < 1)
+ fun_l5_n757(x)
+ else
+ fun_l5_n733(x)
+ end
+end
+
+def fun_l4_n239(x)
+ if (x < 1)
+ fun_l5_n844(x)
+ else
+ fun_l5_n527(x)
+ end
+end
+
+def fun_l4_n240(x)
+ if (x < 1)
+ fun_l5_n594(x)
+ else
+ fun_l5_n620(x)
+ end
+end
+
+def fun_l4_n241(x)
+ if (x < 1)
+ fun_l5_n722(x)
+ else
+ fun_l5_n779(x)
+ end
+end
+
+def fun_l4_n242(x)
+ if (x < 1)
+ fun_l5_n663(x)
+ else
+ fun_l5_n237(x)
+ end
+end
+
+def fun_l4_n243(x)
+ if (x < 1)
+ fun_l5_n256(x)
+ else
+ fun_l5_n366(x)
+ end
+end
+
+def fun_l4_n244(x)
+ if (x < 1)
+ fun_l5_n614(x)
+ else
+ fun_l5_n895(x)
+ end
+end
+
+def fun_l4_n245(x)
+ if (x < 1)
+ fun_l5_n459(x)
+ else
+ fun_l5_n193(x)
+ end
+end
+
+def fun_l4_n246(x)
+ if (x < 1)
+ fun_l5_n780(x)
+ else
+ fun_l5_n175(x)
+ end
+end
+
+def fun_l4_n247(x)
+ if (x < 1)
+ fun_l5_n186(x)
+ else
+ fun_l5_n488(x)
+ end
+end
+
+def fun_l4_n248(x)
+ if (x < 1)
+ fun_l5_n156(x)
+ else
+ fun_l5_n807(x)
+ end
+end
+
+def fun_l4_n249(x)
+ if (x < 1)
+ fun_l5_n862(x)
+ else
+ fun_l5_n537(x)
+ end
+end
+
+def fun_l4_n250(x)
+ if (x < 1)
+ fun_l5_n880(x)
+ else
+ fun_l5_n528(x)
+ end
+end
+
+def fun_l4_n251(x)
+ if (x < 1)
+ fun_l5_n163(x)
+ else
+ fun_l5_n94(x)
+ end
+end
+
+def fun_l4_n252(x)
+ if (x < 1)
+ fun_l5_n937(x)
+ else
+ fun_l5_n582(x)
+ end
+end
+
+def fun_l4_n253(x)
+ if (x < 1)
+ fun_l5_n368(x)
+ else
+ fun_l5_n584(x)
+ end
+end
+
+def fun_l4_n254(x)
+ if (x < 1)
+ fun_l5_n566(x)
+ else
+ fun_l5_n449(x)
+ end
+end
+
+def fun_l4_n255(x)
+ if (x < 1)
+ fun_l5_n876(x)
+ else
+ fun_l5_n0(x)
+ end
+end
+
+def fun_l4_n256(x)
+ if (x < 1)
+ fun_l5_n842(x)
+ else
+ fun_l5_n469(x)
+ end
+end
+
+def fun_l4_n257(x)
+ if (x < 1)
+ fun_l5_n85(x)
+ else
+ fun_l5_n961(x)
+ end
+end
+
+def fun_l4_n258(x)
+ if (x < 1)
+ fun_l5_n120(x)
+ else
+ fun_l5_n893(x)
+ end
+end
+
+def fun_l4_n259(x)
+ if (x < 1)
+ fun_l5_n243(x)
+ else
+ fun_l5_n630(x)
+ end
+end
+
+def fun_l4_n260(x)
+ if (x < 1)
+ fun_l5_n710(x)
+ else
+ fun_l5_n715(x)
+ end
+end
+
+def fun_l4_n261(x)
+ if (x < 1)
+ fun_l5_n423(x)
+ else
+ fun_l5_n910(x)
+ end
+end
+
+def fun_l4_n262(x)
+ if (x < 1)
+ fun_l5_n505(x)
+ else
+ fun_l5_n532(x)
+ end
+end
+
+def fun_l4_n263(x)
+ if (x < 1)
+ fun_l5_n775(x)
+ else
+ fun_l5_n236(x)
+ end
+end
+
+def fun_l4_n264(x)
+ if (x < 1)
+ fun_l5_n140(x)
+ else
+ fun_l5_n295(x)
+ end
+end
+
+def fun_l4_n265(x)
+ if (x < 1)
+ fun_l5_n554(x)
+ else
+ fun_l5_n88(x)
+ end
+end
+
+def fun_l4_n266(x)
+ if (x < 1)
+ fun_l5_n831(x)
+ else
+ fun_l5_n307(x)
+ end
+end
+
+def fun_l4_n267(x)
+ if (x < 1)
+ fun_l5_n303(x)
+ else
+ fun_l5_n960(x)
+ end
+end
+
+def fun_l4_n268(x)
+ if (x < 1)
+ fun_l5_n322(x)
+ else
+ fun_l5_n264(x)
+ end
+end
+
+def fun_l4_n269(x)
+ if (x < 1)
+ fun_l5_n823(x)
+ else
+ fun_l5_n374(x)
+ end
+end
+
+def fun_l4_n270(x)
+ if (x < 1)
+ fun_l5_n76(x)
+ else
+ fun_l5_n918(x)
+ end
+end
+
+def fun_l4_n271(x)
+ if (x < 1)
+ fun_l5_n591(x)
+ else
+ fun_l5_n45(x)
+ end
+end
+
+def fun_l4_n272(x)
+ if (x < 1)
+ fun_l5_n686(x)
+ else
+ fun_l5_n836(x)
+ end
+end
+
+def fun_l4_n273(x)
+ if (x < 1)
+ fun_l5_n13(x)
+ else
+ fun_l5_n676(x)
+ end
+end
+
+def fun_l4_n274(x)
+ if (x < 1)
+ fun_l5_n120(x)
+ else
+ fun_l5_n180(x)
+ end
+end
+
+def fun_l4_n275(x)
+ if (x < 1)
+ fun_l5_n901(x)
+ else
+ fun_l5_n101(x)
+ end
+end
+
+def fun_l4_n276(x)
+ if (x < 1)
+ fun_l5_n289(x)
+ else
+ fun_l5_n238(x)
+ end
+end
+
+def fun_l4_n277(x)
+ if (x < 1)
+ fun_l5_n513(x)
+ else
+ fun_l5_n887(x)
+ end
+end
+
+def fun_l4_n278(x)
+ if (x < 1)
+ fun_l5_n799(x)
+ else
+ fun_l5_n763(x)
+ end
+end
+
+def fun_l4_n279(x)
+ if (x < 1)
+ fun_l5_n628(x)
+ else
+ fun_l5_n373(x)
+ end
+end
+
+def fun_l4_n280(x)
+ if (x < 1)
+ fun_l5_n661(x)
+ else
+ fun_l5_n826(x)
+ end
+end
+
+def fun_l4_n281(x)
+ if (x < 1)
+ fun_l5_n35(x)
+ else
+ fun_l5_n409(x)
+ end
+end
+
+def fun_l4_n282(x)
+ if (x < 1)
+ fun_l5_n721(x)
+ else
+ fun_l5_n719(x)
+ end
+end
+
+def fun_l4_n283(x)
+ if (x < 1)
+ fun_l5_n729(x)
+ else
+ fun_l5_n901(x)
+ end
+end
+
+def fun_l4_n284(x)
+ if (x < 1)
+ fun_l5_n17(x)
+ else
+ fun_l5_n482(x)
+ end
+end
+
+def fun_l4_n285(x)
+ if (x < 1)
+ fun_l5_n166(x)
+ else
+ fun_l5_n53(x)
+ end
+end
+
+def fun_l4_n286(x)
+ if (x < 1)
+ fun_l5_n873(x)
+ else
+ fun_l5_n383(x)
+ end
+end
+
+def fun_l4_n287(x)
+ if (x < 1)
+ fun_l5_n269(x)
+ else
+ fun_l5_n49(x)
+ end
+end
+
+def fun_l4_n288(x)
+ if (x < 1)
+ fun_l5_n292(x)
+ else
+ fun_l5_n353(x)
+ end
+end
+
+def fun_l4_n289(x)
+ if (x < 1)
+ fun_l5_n651(x)
+ else
+ fun_l5_n606(x)
+ end
+end
+
+def fun_l4_n290(x)
+ if (x < 1)
+ fun_l5_n287(x)
+ else
+ fun_l5_n444(x)
+ end
+end
+
+def fun_l4_n291(x)
+ if (x < 1)
+ fun_l5_n181(x)
+ else
+ fun_l5_n195(x)
+ end
+end
+
+def fun_l4_n292(x)
+ if (x < 1)
+ fun_l5_n20(x)
+ else
+ fun_l5_n58(x)
+ end
+end
+
+def fun_l4_n293(x)
+ if (x < 1)
+ fun_l5_n185(x)
+ else
+ fun_l5_n759(x)
+ end
+end
+
+def fun_l4_n294(x)
+ if (x < 1)
+ fun_l5_n938(x)
+ else
+ fun_l5_n849(x)
+ end
+end
+
+def fun_l4_n295(x)
+ if (x < 1)
+ fun_l5_n187(x)
+ else
+ fun_l5_n469(x)
+ end
+end
+
+def fun_l4_n296(x)
+ if (x < 1)
+ fun_l5_n516(x)
+ else
+ fun_l5_n314(x)
+ end
+end
+
+def fun_l4_n297(x)
+ if (x < 1)
+ fun_l5_n585(x)
+ else
+ fun_l5_n344(x)
+ end
+end
+
+def fun_l4_n298(x)
+ if (x < 1)
+ fun_l5_n637(x)
+ else
+ fun_l5_n103(x)
+ end
+end
+
+def fun_l4_n299(x)
+ if (x < 1)
+ fun_l5_n185(x)
+ else
+ fun_l5_n593(x)
+ end
+end
+
+def fun_l4_n300(x)
+ if (x < 1)
+ fun_l5_n773(x)
+ else
+ fun_l5_n758(x)
+ end
+end
+
+def fun_l4_n301(x)
+ if (x < 1)
+ fun_l5_n444(x)
+ else
+ fun_l5_n945(x)
+ end
+end
+
+def fun_l4_n302(x)
+ if (x < 1)
+ fun_l5_n728(x)
+ else
+ fun_l5_n484(x)
+ end
+end
+
+def fun_l4_n303(x)
+ if (x < 1)
+ fun_l5_n412(x)
+ else
+ fun_l5_n106(x)
+ end
+end
+
+def fun_l4_n304(x)
+ if (x < 1)
+ fun_l5_n399(x)
+ else
+ fun_l5_n234(x)
+ end
+end
+
+def fun_l4_n305(x)
+ if (x < 1)
+ fun_l5_n886(x)
+ else
+ fun_l5_n406(x)
+ end
+end
+
+def fun_l4_n306(x)
+ if (x < 1)
+ fun_l5_n535(x)
+ else
+ fun_l5_n338(x)
+ end
+end
+
+def fun_l4_n307(x)
+ if (x < 1)
+ fun_l5_n898(x)
+ else
+ fun_l5_n859(x)
+ end
+end
+
+def fun_l4_n308(x)
+ if (x < 1)
+ fun_l5_n25(x)
+ else
+ fun_l5_n476(x)
+ end
+end
+
+def fun_l4_n309(x)
+ if (x < 1)
+ fun_l5_n451(x)
+ else
+ fun_l5_n665(x)
+ end
+end
+
+def fun_l4_n310(x)
+ if (x < 1)
+ fun_l5_n937(x)
+ else
+ fun_l5_n555(x)
+ end
+end
+
+def fun_l4_n311(x)
+ if (x < 1)
+ fun_l5_n982(x)
+ else
+ fun_l5_n89(x)
+ end
+end
+
+def fun_l4_n312(x)
+ if (x < 1)
+ fun_l5_n32(x)
+ else
+ fun_l5_n908(x)
+ end
+end
+
+def fun_l4_n313(x)
+ if (x < 1)
+ fun_l5_n963(x)
+ else
+ fun_l5_n267(x)
+ end
+end
+
+def fun_l4_n314(x)
+ if (x < 1)
+ fun_l5_n3(x)
+ else
+ fun_l5_n60(x)
+ end
+end
+
+def fun_l4_n315(x)
+ if (x < 1)
+ fun_l5_n763(x)
+ else
+ fun_l5_n488(x)
+ end
+end
+
+def fun_l4_n316(x)
+ if (x < 1)
+ fun_l5_n696(x)
+ else
+ fun_l5_n663(x)
+ end
+end
+
+def fun_l4_n317(x)
+ if (x < 1)
+ fun_l5_n851(x)
+ else
+ fun_l5_n487(x)
+ end
+end
+
+def fun_l4_n318(x)
+ if (x < 1)
+ fun_l5_n327(x)
+ else
+ fun_l5_n433(x)
+ end
+end
+
+def fun_l4_n319(x)
+ if (x < 1)
+ fun_l5_n242(x)
+ else
+ fun_l5_n471(x)
+ end
+end
+
+def fun_l4_n320(x)
+ if (x < 1)
+ fun_l5_n786(x)
+ else
+ fun_l5_n622(x)
+ end
+end
+
+def fun_l4_n321(x)
+ if (x < 1)
+ fun_l5_n94(x)
+ else
+ fun_l5_n934(x)
+ end
+end
+
+def fun_l4_n322(x)
+ if (x < 1)
+ fun_l5_n665(x)
+ else
+ fun_l5_n386(x)
+ end
+end
+
+def fun_l4_n323(x)
+ if (x < 1)
+ fun_l5_n96(x)
+ else
+ fun_l5_n466(x)
+ end
+end
+
+def fun_l4_n324(x)
+ if (x < 1)
+ fun_l5_n394(x)
+ else
+ fun_l5_n595(x)
+ end
+end
+
+def fun_l4_n325(x)
+ if (x < 1)
+ fun_l5_n544(x)
+ else
+ fun_l5_n688(x)
+ end
+end
+
+def fun_l4_n326(x)
+ if (x < 1)
+ fun_l5_n295(x)
+ else
+ fun_l5_n206(x)
+ end
+end
+
+def fun_l4_n327(x)
+ if (x < 1)
+ fun_l5_n128(x)
+ else
+ fun_l5_n607(x)
+ end
+end
+
+def fun_l4_n328(x)
+ if (x < 1)
+ fun_l5_n987(x)
+ else
+ fun_l5_n109(x)
+ end
+end
+
+def fun_l4_n329(x)
+ if (x < 1)
+ fun_l5_n842(x)
+ else
+ fun_l5_n217(x)
+ end
+end
+
+def fun_l4_n330(x)
+ if (x < 1)
+ fun_l5_n92(x)
+ else
+ fun_l5_n774(x)
+ end
+end
+
+def fun_l4_n331(x)
+ if (x < 1)
+ fun_l5_n761(x)
+ else
+ fun_l5_n34(x)
+ end
+end
+
+def fun_l4_n332(x)
+ if (x < 1)
+ fun_l5_n867(x)
+ else
+ fun_l5_n645(x)
+ end
+end
+
+def fun_l4_n333(x)
+ if (x < 1)
+ fun_l5_n273(x)
+ else
+ fun_l5_n592(x)
+ end
+end
+
+def fun_l4_n334(x)
+ if (x < 1)
+ fun_l5_n29(x)
+ else
+ fun_l5_n985(x)
+ end
+end
+
+def fun_l4_n335(x)
+ if (x < 1)
+ fun_l5_n430(x)
+ else
+ fun_l5_n346(x)
+ end
+end
+
+def fun_l4_n336(x)
+ if (x < 1)
+ fun_l5_n367(x)
+ else
+ fun_l5_n686(x)
+ end
+end
+
+def fun_l4_n337(x)
+ if (x < 1)
+ fun_l5_n868(x)
+ else
+ fun_l5_n5(x)
+ end
+end
+
+def fun_l4_n338(x)
+ if (x < 1)
+ fun_l5_n998(x)
+ else
+ fun_l5_n64(x)
+ end
+end
+
+def fun_l4_n339(x)
+ if (x < 1)
+ fun_l5_n594(x)
+ else
+ fun_l5_n311(x)
+ end
+end
+
+def fun_l4_n340(x)
+ if (x < 1)
+ fun_l5_n547(x)
+ else
+ fun_l5_n573(x)
+ end
+end
+
+def fun_l4_n341(x)
+ if (x < 1)
+ fun_l5_n590(x)
+ else
+ fun_l5_n923(x)
+ end
+end
+
+def fun_l4_n342(x)
+ if (x < 1)
+ fun_l5_n538(x)
+ else
+ fun_l5_n118(x)
+ end
+end
+
+def fun_l4_n343(x)
+ if (x < 1)
+ fun_l5_n322(x)
+ else
+ fun_l5_n970(x)
+ end
+end
+
+def fun_l4_n344(x)
+ if (x < 1)
+ fun_l5_n809(x)
+ else
+ fun_l5_n958(x)
+ end
+end
+
+def fun_l4_n345(x)
+ if (x < 1)
+ fun_l5_n613(x)
+ else
+ fun_l5_n199(x)
+ end
+end
+
+def fun_l4_n346(x)
+ if (x < 1)
+ fun_l5_n298(x)
+ else
+ fun_l5_n273(x)
+ end
+end
+
+def fun_l4_n347(x)
+ if (x < 1)
+ fun_l5_n560(x)
+ else
+ fun_l5_n803(x)
+ end
+end
+
+def fun_l4_n348(x)
+ if (x < 1)
+ fun_l5_n672(x)
+ else
+ fun_l5_n952(x)
+ end
+end
+
+def fun_l4_n349(x)
+ if (x < 1)
+ fun_l5_n58(x)
+ else
+ fun_l5_n267(x)
+ end
+end
+
+def fun_l4_n350(x)
+ if (x < 1)
+ fun_l5_n933(x)
+ else
+ fun_l5_n773(x)
+ end
+end
+
+def fun_l4_n351(x)
+ if (x < 1)
+ fun_l5_n574(x)
+ else
+ fun_l5_n692(x)
+ end
+end
+
+def fun_l4_n352(x)
+ if (x < 1)
+ fun_l5_n537(x)
+ else
+ fun_l5_n312(x)
+ end
+end
+
+def fun_l4_n353(x)
+ if (x < 1)
+ fun_l5_n696(x)
+ else
+ fun_l5_n739(x)
+ end
+end
+
+def fun_l4_n354(x)
+ if (x < 1)
+ fun_l5_n871(x)
+ else
+ fun_l5_n86(x)
+ end
+end
+
+def fun_l4_n355(x)
+ if (x < 1)
+ fun_l5_n3(x)
+ else
+ fun_l5_n950(x)
+ end
+end
+
+def fun_l4_n356(x)
+ if (x < 1)
+ fun_l5_n560(x)
+ else
+ fun_l5_n45(x)
+ end
+end
+
+def fun_l4_n357(x)
+ if (x < 1)
+ fun_l5_n666(x)
+ else
+ fun_l5_n874(x)
+ end
+end
+
+def fun_l4_n358(x)
+ if (x < 1)
+ fun_l5_n457(x)
+ else
+ fun_l5_n7(x)
+ end
+end
+
+def fun_l4_n359(x)
+ if (x < 1)
+ fun_l5_n674(x)
+ else
+ fun_l5_n985(x)
+ end
+end
+
+def fun_l4_n360(x)
+ if (x < 1)
+ fun_l5_n960(x)
+ else
+ fun_l5_n228(x)
+ end
+end
+
+def fun_l4_n361(x)
+ if (x < 1)
+ fun_l5_n597(x)
+ else
+ fun_l5_n487(x)
+ end
+end
+
+def fun_l4_n362(x)
+ if (x < 1)
+ fun_l5_n145(x)
+ else
+ fun_l5_n278(x)
+ end
+end
+
+def fun_l4_n363(x)
+ if (x < 1)
+ fun_l5_n949(x)
+ else
+ fun_l5_n353(x)
+ end
+end
+
+def fun_l4_n364(x)
+ if (x < 1)
+ fun_l5_n604(x)
+ else
+ fun_l5_n250(x)
+ end
+end
+
+def fun_l4_n365(x)
+ if (x < 1)
+ fun_l5_n347(x)
+ else
+ fun_l5_n964(x)
+ end
+end
+
+def fun_l4_n366(x)
+ if (x < 1)
+ fun_l5_n331(x)
+ else
+ fun_l5_n657(x)
+ end
+end
+
+def fun_l4_n367(x)
+ if (x < 1)
+ fun_l5_n74(x)
+ else
+ fun_l5_n504(x)
+ end
+end
+
+def fun_l4_n368(x)
+ if (x < 1)
+ fun_l5_n9(x)
+ else
+ fun_l5_n993(x)
+ end
+end
+
+def fun_l4_n369(x)
+ if (x < 1)
+ fun_l5_n492(x)
+ else
+ fun_l5_n155(x)
+ end
+end
+
+def fun_l4_n370(x)
+ if (x < 1)
+ fun_l5_n848(x)
+ else
+ fun_l5_n178(x)
+ end
+end
+
+def fun_l4_n371(x)
+ if (x < 1)
+ fun_l5_n395(x)
+ else
+ fun_l5_n837(x)
+ end
+end
+
+def fun_l4_n372(x)
+ if (x < 1)
+ fun_l5_n834(x)
+ else
+ fun_l5_n719(x)
+ end
+end
+
+def fun_l4_n373(x)
+ if (x < 1)
+ fun_l5_n422(x)
+ else
+ fun_l5_n776(x)
+ end
+end
+
+def fun_l4_n374(x)
+ if (x < 1)
+ fun_l5_n293(x)
+ else
+ fun_l5_n385(x)
+ end
+end
+
+def fun_l4_n375(x)
+ if (x < 1)
+ fun_l5_n487(x)
+ else
+ fun_l5_n61(x)
+ end
+end
+
+def fun_l4_n376(x)
+ if (x < 1)
+ fun_l5_n493(x)
+ else
+ fun_l5_n629(x)
+ end
+end
+
+def fun_l4_n377(x)
+ if (x < 1)
+ fun_l5_n429(x)
+ else
+ fun_l5_n157(x)
+ end
+end
+
+def fun_l4_n378(x)
+ if (x < 1)
+ fun_l5_n145(x)
+ else
+ fun_l5_n988(x)
+ end
+end
+
+def fun_l4_n379(x)
+ if (x < 1)
+ fun_l5_n430(x)
+ else
+ fun_l5_n246(x)
+ end
+end
+
+def fun_l4_n380(x)
+ if (x < 1)
+ fun_l5_n320(x)
+ else
+ fun_l5_n284(x)
+ end
+end
+
+def fun_l4_n381(x)
+ if (x < 1)
+ fun_l5_n278(x)
+ else
+ fun_l5_n163(x)
+ end
+end
+
+def fun_l4_n382(x)
+ if (x < 1)
+ fun_l5_n999(x)
+ else
+ fun_l5_n907(x)
+ end
+end
+
+def fun_l4_n383(x)
+ if (x < 1)
+ fun_l5_n979(x)
+ else
+ fun_l5_n370(x)
+ end
+end
+
+def fun_l4_n384(x)
+ if (x < 1)
+ fun_l5_n58(x)
+ else
+ fun_l5_n60(x)
+ end
+end
+
+def fun_l4_n385(x)
+ if (x < 1)
+ fun_l5_n558(x)
+ else
+ fun_l5_n524(x)
+ end
+end
+
+def fun_l4_n386(x)
+ if (x < 1)
+ fun_l5_n438(x)
+ else
+ fun_l5_n799(x)
+ end
+end
+
+def fun_l4_n387(x)
+ if (x < 1)
+ fun_l5_n696(x)
+ else
+ fun_l5_n463(x)
+ end
+end
+
+def fun_l4_n388(x)
+ if (x < 1)
+ fun_l5_n376(x)
+ else
+ fun_l5_n943(x)
+ end
+end
+
+def fun_l4_n389(x)
+ if (x < 1)
+ fun_l5_n21(x)
+ else
+ fun_l5_n663(x)
+ end
+end
+
+def fun_l4_n390(x)
+ if (x < 1)
+ fun_l5_n8(x)
+ else
+ fun_l5_n348(x)
+ end
+end
+
+def fun_l4_n391(x)
+ if (x < 1)
+ fun_l5_n908(x)
+ else
+ fun_l5_n695(x)
+ end
+end
+
+def fun_l4_n392(x)
+ if (x < 1)
+ fun_l5_n97(x)
+ else
+ fun_l5_n466(x)
+ end
+end
+
+def fun_l4_n393(x)
+ if (x < 1)
+ fun_l5_n480(x)
+ else
+ fun_l5_n972(x)
+ end
+end
+
+def fun_l4_n394(x)
+ if (x < 1)
+ fun_l5_n85(x)
+ else
+ fun_l5_n849(x)
+ end
+end
+
+def fun_l4_n395(x)
+ if (x < 1)
+ fun_l5_n897(x)
+ else
+ fun_l5_n13(x)
+ end
+end
+
+def fun_l4_n396(x)
+ if (x < 1)
+ fun_l5_n628(x)
+ else
+ fun_l5_n743(x)
+ end
+end
+
+def fun_l4_n397(x)
+ if (x < 1)
+ fun_l5_n29(x)
+ else
+ fun_l5_n185(x)
+ end
+end
+
+def fun_l4_n398(x)
+ if (x < 1)
+ fun_l5_n464(x)
+ else
+ fun_l5_n742(x)
+ end
+end
+
+def fun_l4_n399(x)
+ if (x < 1)
+ fun_l5_n348(x)
+ else
+ fun_l5_n70(x)
+ end
+end
+
+def fun_l4_n400(x)
+ if (x < 1)
+ fun_l5_n397(x)
+ else
+ fun_l5_n132(x)
+ end
+end
+
+def fun_l4_n401(x)
+ if (x < 1)
+ fun_l5_n433(x)
+ else
+ fun_l5_n77(x)
+ end
+end
+
+def fun_l4_n402(x)
+ if (x < 1)
+ fun_l5_n24(x)
+ else
+ fun_l5_n160(x)
+ end
+end
+
+def fun_l4_n403(x)
+ if (x < 1)
+ fun_l5_n738(x)
+ else
+ fun_l5_n174(x)
+ end
+end
+
+def fun_l4_n404(x)
+ if (x < 1)
+ fun_l5_n585(x)
+ else
+ fun_l5_n670(x)
+ end
+end
+
+def fun_l4_n405(x)
+ if (x < 1)
+ fun_l5_n320(x)
+ else
+ fun_l5_n245(x)
+ end
+end
+
+def fun_l4_n406(x)
+ if (x < 1)
+ fun_l5_n357(x)
+ else
+ fun_l5_n742(x)
+ end
+end
+
+def fun_l4_n407(x)
+ if (x < 1)
+ fun_l5_n16(x)
+ else
+ fun_l5_n227(x)
+ end
+end
+
+def fun_l4_n408(x)
+ if (x < 1)
+ fun_l5_n360(x)
+ else
+ fun_l5_n18(x)
+ end
+end
+
+def fun_l4_n409(x)
+ if (x < 1)
+ fun_l5_n210(x)
+ else
+ fun_l5_n253(x)
+ end
+end
+
+def fun_l4_n410(x)
+ if (x < 1)
+ fun_l5_n915(x)
+ else
+ fun_l5_n605(x)
+ end
+end
+
+def fun_l4_n411(x)
+ if (x < 1)
+ fun_l5_n511(x)
+ else
+ fun_l5_n118(x)
+ end
+end
+
+def fun_l4_n412(x)
+ if (x < 1)
+ fun_l5_n680(x)
+ else
+ fun_l5_n445(x)
+ end
+end
+
+def fun_l4_n413(x)
+ if (x < 1)
+ fun_l5_n722(x)
+ else
+ fun_l5_n440(x)
+ end
+end
+
+def fun_l4_n414(x)
+ if (x < 1)
+ fun_l5_n382(x)
+ else
+ fun_l5_n380(x)
+ end
+end
+
+def fun_l4_n415(x)
+ if (x < 1)
+ fun_l5_n548(x)
+ else
+ fun_l5_n462(x)
+ end
+end
+
+def fun_l4_n416(x)
+ if (x < 1)
+ fun_l5_n12(x)
+ else
+ fun_l5_n952(x)
+ end
+end
+
+def fun_l4_n417(x)
+ if (x < 1)
+ fun_l5_n814(x)
+ else
+ fun_l5_n720(x)
+ end
+end
+
+def fun_l4_n418(x)
+ if (x < 1)
+ fun_l5_n804(x)
+ else
+ fun_l5_n243(x)
+ end
+end
+
+def fun_l4_n419(x)
+ if (x < 1)
+ fun_l5_n654(x)
+ else
+ fun_l5_n950(x)
+ end
+end
+
+def fun_l4_n420(x)
+ if (x < 1)
+ fun_l5_n998(x)
+ else
+ fun_l5_n937(x)
+ end
+end
+
+def fun_l4_n421(x)
+ if (x < 1)
+ fun_l5_n476(x)
+ else
+ fun_l5_n245(x)
+ end
+end
+
+def fun_l4_n422(x)
+ if (x < 1)
+ fun_l5_n778(x)
+ else
+ fun_l5_n950(x)
+ end
+end
+
+def fun_l4_n423(x)
+ if (x < 1)
+ fun_l5_n255(x)
+ else
+ fun_l5_n438(x)
+ end
+end
+
+def fun_l4_n424(x)
+ if (x < 1)
+ fun_l5_n906(x)
+ else
+ fun_l5_n329(x)
+ end
+end
+
+def fun_l4_n425(x)
+ if (x < 1)
+ fun_l5_n644(x)
+ else
+ fun_l5_n512(x)
+ end
+end
+
+def fun_l4_n426(x)
+ if (x < 1)
+ fun_l5_n558(x)
+ else
+ fun_l5_n925(x)
+ end
+end
+
+def fun_l4_n427(x)
+ if (x < 1)
+ fun_l5_n745(x)
+ else
+ fun_l5_n168(x)
+ end
+end
+
+def fun_l4_n428(x)
+ if (x < 1)
+ fun_l5_n682(x)
+ else
+ fun_l5_n298(x)
+ end
+end
+
+def fun_l4_n429(x)
+ if (x < 1)
+ fun_l5_n211(x)
+ else
+ fun_l5_n608(x)
+ end
+end
+
+def fun_l4_n430(x)
+ if (x < 1)
+ fun_l5_n100(x)
+ else
+ fun_l5_n287(x)
+ end
+end
+
+def fun_l4_n431(x)
+ if (x < 1)
+ fun_l5_n513(x)
+ else
+ fun_l5_n764(x)
+ end
+end
+
+def fun_l4_n432(x)
+ if (x < 1)
+ fun_l5_n925(x)
+ else
+ fun_l5_n857(x)
+ end
+end
+
+def fun_l4_n433(x)
+ if (x < 1)
+ fun_l5_n279(x)
+ else
+ fun_l5_n429(x)
+ end
+end
+
+def fun_l4_n434(x)
+ if (x < 1)
+ fun_l5_n376(x)
+ else
+ fun_l5_n811(x)
+ end
+end
+
+def fun_l4_n435(x)
+ if (x < 1)
+ fun_l5_n893(x)
+ else
+ fun_l5_n136(x)
+ end
+end
+
+def fun_l4_n436(x)
+ if (x < 1)
+ fun_l5_n283(x)
+ else
+ fun_l5_n508(x)
+ end
+end
+
+def fun_l4_n437(x)
+ if (x < 1)
+ fun_l5_n478(x)
+ else
+ fun_l5_n589(x)
+ end
+end
+
+def fun_l4_n438(x)
+ if (x < 1)
+ fun_l5_n460(x)
+ else
+ fun_l5_n589(x)
+ end
+end
+
+def fun_l4_n439(x)
+ if (x < 1)
+ fun_l5_n745(x)
+ else
+ fun_l5_n5(x)
+ end
+end
+
+def fun_l4_n440(x)
+ if (x < 1)
+ fun_l5_n601(x)
+ else
+ fun_l5_n322(x)
+ end
+end
+
+def fun_l4_n441(x)
+ if (x < 1)
+ fun_l5_n703(x)
+ else
+ fun_l5_n322(x)
+ end
+end
+
+def fun_l4_n442(x)
+ if (x < 1)
+ fun_l5_n810(x)
+ else
+ fun_l5_n363(x)
+ end
+end
+
+def fun_l4_n443(x)
+ if (x < 1)
+ fun_l5_n62(x)
+ else
+ fun_l5_n995(x)
+ end
+end
+
+def fun_l4_n444(x)
+ if (x < 1)
+ fun_l5_n196(x)
+ else
+ fun_l5_n156(x)
+ end
+end
+
+def fun_l4_n445(x)
+ if (x < 1)
+ fun_l5_n456(x)
+ else
+ fun_l5_n820(x)
+ end
+end
+
+def fun_l4_n446(x)
+ if (x < 1)
+ fun_l5_n592(x)
+ else
+ fun_l5_n214(x)
+ end
+end
+
+def fun_l4_n447(x)
+ if (x < 1)
+ fun_l5_n44(x)
+ else
+ fun_l5_n769(x)
+ end
+end
+
+def fun_l4_n448(x)
+ if (x < 1)
+ fun_l5_n694(x)
+ else
+ fun_l5_n909(x)
+ end
+end
+
+def fun_l4_n449(x)
+ if (x < 1)
+ fun_l5_n297(x)
+ else
+ fun_l5_n134(x)
+ end
+end
+
+def fun_l4_n450(x)
+ if (x < 1)
+ fun_l5_n878(x)
+ else
+ fun_l5_n475(x)
+ end
+end
+
+def fun_l4_n451(x)
+ if (x < 1)
+ fun_l5_n338(x)
+ else
+ fun_l5_n700(x)
+ end
+end
+
+def fun_l4_n452(x)
+ if (x < 1)
+ fun_l5_n813(x)
+ else
+ fun_l5_n41(x)
+ end
+end
+
+def fun_l4_n453(x)
+ if (x < 1)
+ fun_l5_n176(x)
+ else
+ fun_l5_n758(x)
+ end
+end
+
+def fun_l4_n454(x)
+ if (x < 1)
+ fun_l5_n60(x)
+ else
+ fun_l5_n608(x)
+ end
+end
+
+def fun_l4_n455(x)
+ if (x < 1)
+ fun_l5_n550(x)
+ else
+ fun_l5_n607(x)
+ end
+end
+
+def fun_l4_n456(x)
+ if (x < 1)
+ fun_l5_n535(x)
+ else
+ fun_l5_n478(x)
+ end
+end
+
+def fun_l4_n457(x)
+ if (x < 1)
+ fun_l5_n768(x)
+ else
+ fun_l5_n613(x)
+ end
+end
+
+def fun_l4_n458(x)
+ if (x < 1)
+ fun_l5_n686(x)
+ else
+ fun_l5_n208(x)
+ end
+end
+
+def fun_l4_n459(x)
+ if (x < 1)
+ fun_l5_n167(x)
+ else
+ fun_l5_n875(x)
+ end
+end
+
+def fun_l4_n460(x)
+ if (x < 1)
+ fun_l5_n202(x)
+ else
+ fun_l5_n440(x)
+ end
+end
+
+def fun_l4_n461(x)
+ if (x < 1)
+ fun_l5_n64(x)
+ else
+ fun_l5_n845(x)
+ end
+end
+
+def fun_l4_n462(x)
+ if (x < 1)
+ fun_l5_n914(x)
+ else
+ fun_l5_n699(x)
+ end
+end
+
+def fun_l4_n463(x)
+ if (x < 1)
+ fun_l5_n204(x)
+ else
+ fun_l5_n723(x)
+ end
+end
+
+def fun_l4_n464(x)
+ if (x < 1)
+ fun_l5_n549(x)
+ else
+ fun_l5_n375(x)
+ end
+end
+
+def fun_l4_n465(x)
+ if (x < 1)
+ fun_l5_n610(x)
+ else
+ fun_l5_n596(x)
+ end
+end
+
+def fun_l4_n466(x)
+ if (x < 1)
+ fun_l5_n571(x)
+ else
+ fun_l5_n618(x)
+ end
+end
+
+def fun_l4_n467(x)
+ if (x < 1)
+ fun_l5_n428(x)
+ else
+ fun_l5_n315(x)
+ end
+end
+
+def fun_l4_n468(x)
+ if (x < 1)
+ fun_l5_n19(x)
+ else
+ fun_l5_n301(x)
+ end
+end
+
+def fun_l4_n469(x)
+ if (x < 1)
+ fun_l5_n38(x)
+ else
+ fun_l5_n895(x)
+ end
+end
+
+def fun_l4_n470(x)
+ if (x < 1)
+ fun_l5_n815(x)
+ else
+ fun_l5_n303(x)
+ end
+end
+
+def fun_l4_n471(x)
+ if (x < 1)
+ fun_l5_n876(x)
+ else
+ fun_l5_n221(x)
+ end
+end
+
+def fun_l4_n472(x)
+ if (x < 1)
+ fun_l5_n199(x)
+ else
+ fun_l5_n354(x)
+ end
+end
+
+def fun_l4_n473(x)
+ if (x < 1)
+ fun_l5_n56(x)
+ else
+ fun_l5_n197(x)
+ end
+end
+
+def fun_l4_n474(x)
+ if (x < 1)
+ fun_l5_n573(x)
+ else
+ fun_l5_n616(x)
+ end
+end
+
+def fun_l4_n475(x)
+ if (x < 1)
+ fun_l5_n313(x)
+ else
+ fun_l5_n209(x)
+ end
+end
+
+def fun_l4_n476(x)
+ if (x < 1)
+ fun_l5_n229(x)
+ else
+ fun_l5_n51(x)
+ end
+end
+
+def fun_l4_n477(x)
+ if (x < 1)
+ fun_l5_n768(x)
+ else
+ fun_l5_n368(x)
+ end
+end
+
+def fun_l4_n478(x)
+ if (x < 1)
+ fun_l5_n80(x)
+ else
+ fun_l5_n411(x)
+ end
+end
+
+def fun_l4_n479(x)
+ if (x < 1)
+ fun_l5_n221(x)
+ else
+ fun_l5_n266(x)
+ end
+end
+
+def fun_l4_n480(x)
+ if (x < 1)
+ fun_l5_n463(x)
+ else
+ fun_l5_n71(x)
+ end
+end
+
+def fun_l4_n481(x)
+ if (x < 1)
+ fun_l5_n446(x)
+ else
+ fun_l5_n610(x)
+ end
+end
+
+def fun_l4_n482(x)
+ if (x < 1)
+ fun_l5_n402(x)
+ else
+ fun_l5_n449(x)
+ end
+end
+
+def fun_l4_n483(x)
+ if (x < 1)
+ fun_l5_n497(x)
+ else
+ fun_l5_n521(x)
+ end
+end
+
+def fun_l4_n484(x)
+ if (x < 1)
+ fun_l5_n895(x)
+ else
+ fun_l5_n361(x)
+ end
+end
+
+def fun_l4_n485(x)
+ if (x < 1)
+ fun_l5_n254(x)
+ else
+ fun_l5_n366(x)
+ end
+end
+
+def fun_l4_n486(x)
+ if (x < 1)
+ fun_l5_n179(x)
+ else
+ fun_l5_n154(x)
+ end
+end
+
+def fun_l4_n487(x)
+ if (x < 1)
+ fun_l5_n905(x)
+ else
+ fun_l5_n30(x)
+ end
+end
+
+def fun_l4_n488(x)
+ if (x < 1)
+ fun_l5_n989(x)
+ else
+ fun_l5_n640(x)
+ end
+end
+
+def fun_l4_n489(x)
+ if (x < 1)
+ fun_l5_n664(x)
+ else
+ fun_l5_n87(x)
+ end
+end
+
+def fun_l4_n490(x)
+ if (x < 1)
+ fun_l5_n518(x)
+ else
+ fun_l5_n986(x)
+ end
+end
+
+def fun_l4_n491(x)
+ if (x < 1)
+ fun_l5_n443(x)
+ else
+ fun_l5_n532(x)
+ end
+end
+
+def fun_l4_n492(x)
+ if (x < 1)
+ fun_l5_n349(x)
+ else
+ fun_l5_n373(x)
+ end
+end
+
+def fun_l4_n493(x)
+ if (x < 1)
+ fun_l5_n208(x)
+ else
+ fun_l5_n404(x)
+ end
+end
+
+def fun_l4_n494(x)
+ if (x < 1)
+ fun_l5_n12(x)
+ else
+ fun_l5_n608(x)
+ end
+end
+
+def fun_l4_n495(x)
+ if (x < 1)
+ fun_l5_n12(x)
+ else
+ fun_l5_n42(x)
+ end
+end
+
+def fun_l4_n496(x)
+ if (x < 1)
+ fun_l5_n442(x)
+ else
+ fun_l5_n809(x)
+ end
+end
+
+def fun_l4_n497(x)
+ if (x < 1)
+ fun_l5_n266(x)
+ else
+ fun_l5_n259(x)
+ end
+end
+
+def fun_l4_n498(x)
+ if (x < 1)
+ fun_l5_n342(x)
+ else
+ fun_l5_n275(x)
+ end
+end
+
+def fun_l4_n499(x)
+ if (x < 1)
+ fun_l5_n806(x)
+ else
+ fun_l5_n797(x)
+ end
+end
+
+def fun_l4_n500(x)
+ if (x < 1)
+ fun_l5_n646(x)
+ else
+ fun_l5_n426(x)
+ end
+end
+
+def fun_l4_n501(x)
+ if (x < 1)
+ fun_l5_n593(x)
+ else
+ fun_l5_n860(x)
+ end
+end
+
+def fun_l4_n502(x)
+ if (x < 1)
+ fun_l5_n355(x)
+ else
+ fun_l5_n411(x)
+ end
+end
+
+def fun_l4_n503(x)
+ if (x < 1)
+ fun_l5_n602(x)
+ else
+ fun_l5_n26(x)
+ end
+end
+
+def fun_l4_n504(x)
+ if (x < 1)
+ fun_l5_n875(x)
+ else
+ fun_l5_n716(x)
+ end
+end
+
+def fun_l4_n505(x)
+ if (x < 1)
+ fun_l5_n248(x)
+ else
+ fun_l5_n388(x)
+ end
+end
+
+def fun_l4_n506(x)
+ if (x < 1)
+ fun_l5_n273(x)
+ else
+ fun_l5_n11(x)
+ end
+end
+
+def fun_l4_n507(x)
+ if (x < 1)
+ fun_l5_n291(x)
+ else
+ fun_l5_n464(x)
+ end
+end
+
+def fun_l4_n508(x)
+ if (x < 1)
+ fun_l5_n309(x)
+ else
+ fun_l5_n198(x)
+ end
+end
+
+def fun_l4_n509(x)
+ if (x < 1)
+ fun_l5_n85(x)
+ else
+ fun_l5_n375(x)
+ end
+end
+
+def fun_l4_n510(x)
+ if (x < 1)
+ fun_l5_n993(x)
+ else
+ fun_l5_n311(x)
+ end
+end
+
+def fun_l4_n511(x)
+ if (x < 1)
+ fun_l5_n824(x)
+ else
+ fun_l5_n936(x)
+ end
+end
+
+def fun_l4_n512(x)
+ if (x < 1)
+ fun_l5_n897(x)
+ else
+ fun_l5_n995(x)
+ end
+end
+
+def fun_l4_n513(x)
+ if (x < 1)
+ fun_l5_n443(x)
+ else
+ fun_l5_n511(x)
+ end
+end
+
+def fun_l4_n514(x)
+ if (x < 1)
+ fun_l5_n965(x)
+ else
+ fun_l5_n506(x)
+ end
+end
+
+def fun_l4_n515(x)
+ if (x < 1)
+ fun_l5_n480(x)
+ else
+ fun_l5_n464(x)
+ end
+end
+
+def fun_l4_n516(x)
+ if (x < 1)
+ fun_l5_n396(x)
+ else
+ fun_l5_n355(x)
+ end
+end
+
+def fun_l4_n517(x)
+ if (x < 1)
+ fun_l5_n782(x)
+ else
+ fun_l5_n624(x)
+ end
+end
+
+def fun_l4_n518(x)
+ if (x < 1)
+ fun_l5_n460(x)
+ else
+ fun_l5_n920(x)
+ end
+end
+
+def fun_l4_n519(x)
+ if (x < 1)
+ fun_l5_n258(x)
+ else
+ fun_l5_n296(x)
+ end
+end
+
+def fun_l4_n520(x)
+ if (x < 1)
+ fun_l5_n344(x)
+ else
+ fun_l5_n180(x)
+ end
+end
+
+def fun_l4_n521(x)
+ if (x < 1)
+ fun_l5_n489(x)
+ else
+ fun_l5_n818(x)
+ end
+end
+
+def fun_l4_n522(x)
+ if (x < 1)
+ fun_l5_n246(x)
+ else
+ fun_l5_n25(x)
+ end
+end
+
+def fun_l4_n523(x)
+ if (x < 1)
+ fun_l5_n165(x)
+ else
+ fun_l5_n835(x)
+ end
+end
+
+def fun_l4_n524(x)
+ if (x < 1)
+ fun_l5_n836(x)
+ else
+ fun_l5_n838(x)
+ end
+end
+
+def fun_l4_n525(x)
+ if (x < 1)
+ fun_l5_n781(x)
+ else
+ fun_l5_n183(x)
+ end
+end
+
+def fun_l4_n526(x)
+ if (x < 1)
+ fun_l5_n335(x)
+ else
+ fun_l5_n809(x)
+ end
+end
+
+def fun_l4_n527(x)
+ if (x < 1)
+ fun_l5_n748(x)
+ else
+ fun_l5_n674(x)
+ end
+end
+
+def fun_l4_n528(x)
+ if (x < 1)
+ fun_l5_n612(x)
+ else
+ fun_l5_n933(x)
+ end
+end
+
+def fun_l4_n529(x)
+ if (x < 1)
+ fun_l5_n781(x)
+ else
+ fun_l5_n174(x)
+ end
+end
+
+def fun_l4_n530(x)
+ if (x < 1)
+ fun_l5_n299(x)
+ else
+ fun_l5_n677(x)
+ end
+end
+
+def fun_l4_n531(x)
+ if (x < 1)
+ fun_l5_n455(x)
+ else
+ fun_l5_n211(x)
+ end
+end
+
+def fun_l4_n532(x)
+ if (x < 1)
+ fun_l5_n981(x)
+ else
+ fun_l5_n605(x)
+ end
+end
+
+def fun_l4_n533(x)
+ if (x < 1)
+ fun_l5_n299(x)
+ else
+ fun_l5_n30(x)
+ end
+end
+
+def fun_l4_n534(x)
+ if (x < 1)
+ fun_l5_n642(x)
+ else
+ fun_l5_n652(x)
+ end
+end
+
+def fun_l4_n535(x)
+ if (x < 1)
+ fun_l5_n904(x)
+ else
+ fun_l5_n133(x)
+ end
+end
+
+def fun_l4_n536(x)
+ if (x < 1)
+ fun_l5_n253(x)
+ else
+ fun_l5_n330(x)
+ end
+end
+
+def fun_l4_n537(x)
+ if (x < 1)
+ fun_l5_n357(x)
+ else
+ fun_l5_n533(x)
+ end
+end
+
+def fun_l4_n538(x)
+ if (x < 1)
+ fun_l5_n484(x)
+ else
+ fun_l5_n438(x)
+ end
+end
+
+def fun_l4_n539(x)
+ if (x < 1)
+ fun_l5_n200(x)
+ else
+ fun_l5_n235(x)
+ end
+end
+
+def fun_l4_n540(x)
+ if (x < 1)
+ fun_l5_n929(x)
+ else
+ fun_l5_n875(x)
+ end
+end
+
+def fun_l4_n541(x)
+ if (x < 1)
+ fun_l5_n237(x)
+ else
+ fun_l5_n688(x)
+ end
+end
+
+def fun_l4_n542(x)
+ if (x < 1)
+ fun_l5_n723(x)
+ else
+ fun_l5_n308(x)
+ end
+end
+
+def fun_l4_n543(x)
+ if (x < 1)
+ fun_l5_n591(x)
+ else
+ fun_l5_n93(x)
+ end
+end
+
+def fun_l4_n544(x)
+ if (x < 1)
+ fun_l5_n258(x)
+ else
+ fun_l5_n205(x)
+ end
+end
+
+def fun_l4_n545(x)
+ if (x < 1)
+ fun_l5_n910(x)
+ else
+ fun_l5_n529(x)
+ end
+end
+
+def fun_l4_n546(x)
+ if (x < 1)
+ fun_l5_n255(x)
+ else
+ fun_l5_n262(x)
+ end
+end
+
+def fun_l4_n547(x)
+ if (x < 1)
+ fun_l5_n674(x)
+ else
+ fun_l5_n813(x)
+ end
+end
+
+def fun_l4_n548(x)
+ if (x < 1)
+ fun_l5_n9(x)
+ else
+ fun_l5_n709(x)
+ end
+end
+
+def fun_l4_n549(x)
+ if (x < 1)
+ fun_l5_n146(x)
+ else
+ fun_l5_n801(x)
+ end
+end
+
+def fun_l4_n550(x)
+ if (x < 1)
+ fun_l5_n593(x)
+ else
+ fun_l5_n428(x)
+ end
+end
+
+def fun_l4_n551(x)
+ if (x < 1)
+ fun_l5_n953(x)
+ else
+ fun_l5_n238(x)
+ end
+end
+
+def fun_l4_n552(x)
+ if (x < 1)
+ fun_l5_n900(x)
+ else
+ fun_l5_n246(x)
+ end
+end
+
+def fun_l4_n553(x)
+ if (x < 1)
+ fun_l5_n400(x)
+ else
+ fun_l5_n150(x)
+ end
+end
+
+def fun_l4_n554(x)
+ if (x < 1)
+ fun_l5_n697(x)
+ else
+ fun_l5_n681(x)
+ end
+end
+
+def fun_l4_n555(x)
+ if (x < 1)
+ fun_l5_n487(x)
+ else
+ fun_l5_n784(x)
+ end
+end
+
+def fun_l4_n556(x)
+ if (x < 1)
+ fun_l5_n485(x)
+ else
+ fun_l5_n984(x)
+ end
+end
+
+def fun_l4_n557(x)
+ if (x < 1)
+ fun_l5_n774(x)
+ else
+ fun_l5_n864(x)
+ end
+end
+
+def fun_l4_n558(x)
+ if (x < 1)
+ fun_l5_n823(x)
+ else
+ fun_l5_n527(x)
+ end
+end
+
+def fun_l4_n559(x)
+ if (x < 1)
+ fun_l5_n204(x)
+ else
+ fun_l5_n114(x)
+ end
+end
+
+def fun_l4_n560(x)
+ if (x < 1)
+ fun_l5_n835(x)
+ else
+ fun_l5_n930(x)
+ end
+end
+
+def fun_l4_n561(x)
+ if (x < 1)
+ fun_l5_n481(x)
+ else
+ fun_l5_n471(x)
+ end
+end
+
+def fun_l4_n562(x)
+ if (x < 1)
+ fun_l5_n459(x)
+ else
+ fun_l5_n526(x)
+ end
+end
+
+def fun_l4_n563(x)
+ if (x < 1)
+ fun_l5_n148(x)
+ else
+ fun_l5_n473(x)
+ end
+end
+
+def fun_l4_n564(x)
+ if (x < 1)
+ fun_l5_n448(x)
+ else
+ fun_l5_n389(x)
+ end
+end
+
+def fun_l4_n565(x)
+ if (x < 1)
+ fun_l5_n600(x)
+ else
+ fun_l5_n405(x)
+ end
+end
+
+def fun_l4_n566(x)
+ if (x < 1)
+ fun_l5_n67(x)
+ else
+ fun_l5_n145(x)
+ end
+end
+
+def fun_l4_n567(x)
+ if (x < 1)
+ fun_l5_n63(x)
+ else
+ fun_l5_n206(x)
+ end
+end
+
+def fun_l4_n568(x)
+ if (x < 1)
+ fun_l5_n463(x)
+ else
+ fun_l5_n288(x)
+ end
+end
+
+def fun_l4_n569(x)
+ if (x < 1)
+ fun_l5_n143(x)
+ else
+ fun_l5_n879(x)
+ end
+end
+
+def fun_l4_n570(x)
+ if (x < 1)
+ fun_l5_n552(x)
+ else
+ fun_l5_n517(x)
+ end
+end
+
+def fun_l4_n571(x)
+ if (x < 1)
+ fun_l5_n527(x)
+ else
+ fun_l5_n680(x)
+ end
+end
+
+def fun_l4_n572(x)
+ if (x < 1)
+ fun_l5_n853(x)
+ else
+ fun_l5_n97(x)
+ end
+end
+
+def fun_l4_n573(x)
+ if (x < 1)
+ fun_l5_n277(x)
+ else
+ fun_l5_n329(x)
+ end
+end
+
+def fun_l4_n574(x)
+ if (x < 1)
+ fun_l5_n952(x)
+ else
+ fun_l5_n515(x)
+ end
+end
+
+def fun_l4_n575(x)
+ if (x < 1)
+ fun_l5_n64(x)
+ else
+ fun_l5_n576(x)
+ end
+end
+
+def fun_l4_n576(x)
+ if (x < 1)
+ fun_l5_n57(x)
+ else
+ fun_l5_n499(x)
+ end
+end
+
+def fun_l4_n577(x)
+ if (x < 1)
+ fun_l5_n10(x)
+ else
+ fun_l5_n208(x)
+ end
+end
+
+def fun_l4_n578(x)
+ if (x < 1)
+ fun_l5_n361(x)
+ else
+ fun_l5_n447(x)
+ end
+end
+
+def fun_l4_n579(x)
+ if (x < 1)
+ fun_l5_n788(x)
+ else
+ fun_l5_n299(x)
+ end
+end
+
+def fun_l4_n580(x)
+ if (x < 1)
+ fun_l5_n973(x)
+ else
+ fun_l5_n753(x)
+ end
+end
+
+def fun_l4_n581(x)
+ if (x < 1)
+ fun_l5_n862(x)
+ else
+ fun_l5_n110(x)
+ end
+end
+
+def fun_l4_n582(x)
+ if (x < 1)
+ fun_l5_n760(x)
+ else
+ fun_l5_n256(x)
+ end
+end
+
+def fun_l4_n583(x)
+ if (x < 1)
+ fun_l5_n8(x)
+ else
+ fun_l5_n922(x)
+ end
+end
+
+def fun_l4_n584(x)
+ if (x < 1)
+ fun_l5_n100(x)
+ else
+ fun_l5_n230(x)
+ end
+end
+
+def fun_l4_n585(x)
+ if (x < 1)
+ fun_l5_n183(x)
+ else
+ fun_l5_n350(x)
+ end
+end
+
+def fun_l4_n586(x)
+ if (x < 1)
+ fun_l5_n294(x)
+ else
+ fun_l5_n673(x)
+ end
+end
+
+def fun_l4_n587(x)
+ if (x < 1)
+ fun_l5_n51(x)
+ else
+ fun_l5_n718(x)
+ end
+end
+
+def fun_l4_n588(x)
+ if (x < 1)
+ fun_l5_n257(x)
+ else
+ fun_l5_n111(x)
+ end
+end
+
+def fun_l4_n589(x)
+ if (x < 1)
+ fun_l5_n727(x)
+ else
+ fun_l5_n585(x)
+ end
+end
+
+def fun_l4_n590(x)
+ if (x < 1)
+ fun_l5_n205(x)
+ else
+ fun_l5_n308(x)
+ end
+end
+
+def fun_l4_n591(x)
+ if (x < 1)
+ fun_l5_n618(x)
+ else
+ fun_l5_n970(x)
+ end
+end
+
+def fun_l4_n592(x)
+ if (x < 1)
+ fun_l5_n631(x)
+ else
+ fun_l5_n513(x)
+ end
+end
+
+def fun_l4_n593(x)
+ if (x < 1)
+ fun_l5_n270(x)
+ else
+ fun_l5_n737(x)
+ end
+end
+
+def fun_l4_n594(x)
+ if (x < 1)
+ fun_l5_n464(x)
+ else
+ fun_l5_n217(x)
+ end
+end
+
+def fun_l4_n595(x)
+ if (x < 1)
+ fun_l5_n650(x)
+ else
+ fun_l5_n616(x)
+ end
+end
+
+def fun_l4_n596(x)
+ if (x < 1)
+ fun_l5_n542(x)
+ else
+ fun_l5_n613(x)
+ end
+end
+
+def fun_l4_n597(x)
+ if (x < 1)
+ fun_l5_n312(x)
+ else
+ fun_l5_n7(x)
+ end
+end
+
+def fun_l4_n598(x)
+ if (x < 1)
+ fun_l5_n164(x)
+ else
+ fun_l5_n592(x)
+ end
+end
+
+def fun_l4_n599(x)
+ if (x < 1)
+ fun_l5_n326(x)
+ else
+ fun_l5_n894(x)
+ end
+end
+
+def fun_l4_n600(x)
+ if (x < 1)
+ fun_l5_n243(x)
+ else
+ fun_l5_n233(x)
+ end
+end
+
+def fun_l4_n601(x)
+ if (x < 1)
+ fun_l5_n600(x)
+ else
+ fun_l5_n7(x)
+ end
+end
+
+def fun_l4_n602(x)
+ if (x < 1)
+ fun_l5_n334(x)
+ else
+ fun_l5_n282(x)
+ end
+end
+
+def fun_l4_n603(x)
+ if (x < 1)
+ fun_l5_n202(x)
+ else
+ fun_l5_n252(x)
+ end
+end
+
+def fun_l4_n604(x)
+ if (x < 1)
+ fun_l5_n173(x)
+ else
+ fun_l5_n685(x)
+ end
+end
+
+def fun_l4_n605(x)
+ if (x < 1)
+ fun_l5_n953(x)
+ else
+ fun_l5_n416(x)
+ end
+end
+
+def fun_l4_n606(x)
+ if (x < 1)
+ fun_l5_n775(x)
+ else
+ fun_l5_n372(x)
+ end
+end
+
+def fun_l4_n607(x)
+ if (x < 1)
+ fun_l5_n723(x)
+ else
+ fun_l5_n894(x)
+ end
+end
+
+def fun_l4_n608(x)
+ if (x < 1)
+ fun_l5_n690(x)
+ else
+ fun_l5_n26(x)
+ end
+end
+
+def fun_l4_n609(x)
+ if (x < 1)
+ fun_l5_n555(x)
+ else
+ fun_l5_n717(x)
+ end
+end
+
+def fun_l4_n610(x)
+ if (x < 1)
+ fun_l5_n597(x)
+ else
+ fun_l5_n106(x)
+ end
+end
+
+def fun_l4_n611(x)
+ if (x < 1)
+ fun_l5_n405(x)
+ else
+ fun_l5_n588(x)
+ end
+end
+
+def fun_l4_n612(x)
+ if (x < 1)
+ fun_l5_n41(x)
+ else
+ fun_l5_n558(x)
+ end
+end
+
+def fun_l4_n613(x)
+ if (x < 1)
+ fun_l5_n875(x)
+ else
+ fun_l5_n492(x)
+ end
+end
+
+def fun_l4_n614(x)
+ if (x < 1)
+ fun_l5_n605(x)
+ else
+ fun_l5_n461(x)
+ end
+end
+
+def fun_l4_n615(x)
+ if (x < 1)
+ fun_l5_n726(x)
+ else
+ fun_l5_n534(x)
+ end
+end
+
+def fun_l4_n616(x)
+ if (x < 1)
+ fun_l5_n919(x)
+ else
+ fun_l5_n404(x)
+ end
+end
+
+def fun_l4_n617(x)
+ if (x < 1)
+ fun_l5_n383(x)
+ else
+ fun_l5_n324(x)
+ end
+end
+
+def fun_l4_n618(x)
+ if (x < 1)
+ fun_l5_n286(x)
+ else
+ fun_l5_n157(x)
+ end
+end
+
+def fun_l4_n619(x)
+ if (x < 1)
+ fun_l5_n713(x)
+ else
+ fun_l5_n388(x)
+ end
+end
+
+def fun_l4_n620(x)
+ if (x < 1)
+ fun_l5_n773(x)
+ else
+ fun_l5_n790(x)
+ end
+end
+
+def fun_l4_n621(x)
+ if (x < 1)
+ fun_l5_n797(x)
+ else
+ fun_l5_n720(x)
+ end
+end
+
+def fun_l4_n622(x)
+ if (x < 1)
+ fun_l5_n799(x)
+ else
+ fun_l5_n423(x)
+ end
+end
+
+def fun_l4_n623(x)
+ if (x < 1)
+ fun_l5_n390(x)
+ else
+ fun_l5_n941(x)
+ end
+end
+
+def fun_l4_n624(x)
+ if (x < 1)
+ fun_l5_n584(x)
+ else
+ fun_l5_n191(x)
+ end
+end
+
+def fun_l4_n625(x)
+ if (x < 1)
+ fun_l5_n243(x)
+ else
+ fun_l5_n208(x)
+ end
+end
+
+def fun_l4_n626(x)
+ if (x < 1)
+ fun_l5_n136(x)
+ else
+ fun_l5_n791(x)
+ end
+end
+
+def fun_l4_n627(x)
+ if (x < 1)
+ fun_l5_n684(x)
+ else
+ fun_l5_n341(x)
+ end
+end
+
+def fun_l4_n628(x)
+ if (x < 1)
+ fun_l5_n876(x)
+ else
+ fun_l5_n27(x)
+ end
+end
+
+def fun_l4_n629(x)
+ if (x < 1)
+ fun_l5_n18(x)
+ else
+ fun_l5_n867(x)
+ end
+end
+
+def fun_l4_n630(x)
+ if (x < 1)
+ fun_l5_n4(x)
+ else
+ fun_l5_n871(x)
+ end
+end
+
+def fun_l4_n631(x)
+ if (x < 1)
+ fun_l5_n578(x)
+ else
+ fun_l5_n988(x)
+ end
+end
+
+def fun_l4_n632(x)
+ if (x < 1)
+ fun_l5_n388(x)
+ else
+ fun_l5_n258(x)
+ end
+end
+
+def fun_l4_n633(x)
+ if (x < 1)
+ fun_l5_n680(x)
+ else
+ fun_l5_n814(x)
+ end
+end
+
+def fun_l4_n634(x)
+ if (x < 1)
+ fun_l5_n857(x)
+ else
+ fun_l5_n595(x)
+ end
+end
+
+def fun_l4_n635(x)
+ if (x < 1)
+ fun_l5_n547(x)
+ else
+ fun_l5_n725(x)
+ end
+end
+
+def fun_l4_n636(x)
+ if (x < 1)
+ fun_l5_n644(x)
+ else
+ fun_l5_n485(x)
+ end
+end
+
+def fun_l4_n637(x)
+ if (x < 1)
+ fun_l5_n528(x)
+ else
+ fun_l5_n653(x)
+ end
+end
+
+def fun_l4_n638(x)
+ if (x < 1)
+ fun_l5_n924(x)
+ else
+ fun_l5_n956(x)
+ end
+end
+
+def fun_l4_n639(x)
+ if (x < 1)
+ fun_l5_n654(x)
+ else
+ fun_l5_n979(x)
+ end
+end
+
+def fun_l4_n640(x)
+ if (x < 1)
+ fun_l5_n287(x)
+ else
+ fun_l5_n778(x)
+ end
+end
+
+def fun_l4_n641(x)
+ if (x < 1)
+ fun_l5_n197(x)
+ else
+ fun_l5_n682(x)
+ end
+end
+
+def fun_l4_n642(x)
+ if (x < 1)
+ fun_l5_n559(x)
+ else
+ fun_l5_n812(x)
+ end
+end
+
+def fun_l4_n643(x)
+ if (x < 1)
+ fun_l5_n970(x)
+ else
+ fun_l5_n43(x)
+ end
+end
+
+def fun_l4_n644(x)
+ if (x < 1)
+ fun_l5_n222(x)
+ else
+ fun_l5_n741(x)
+ end
+end
+
+def fun_l4_n645(x)
+ if (x < 1)
+ fun_l5_n788(x)
+ else
+ fun_l5_n72(x)
+ end
+end
+
+def fun_l4_n646(x)
+ if (x < 1)
+ fun_l5_n877(x)
+ else
+ fun_l5_n371(x)
+ end
+end
+
+def fun_l4_n647(x)
+ if (x < 1)
+ fun_l5_n710(x)
+ else
+ fun_l5_n783(x)
+ end
+end
+
+def fun_l4_n648(x)
+ if (x < 1)
+ fun_l5_n957(x)
+ else
+ fun_l5_n801(x)
+ end
+end
+
+def fun_l4_n649(x)
+ if (x < 1)
+ fun_l5_n127(x)
+ else
+ fun_l5_n664(x)
+ end
+end
+
+def fun_l4_n650(x)
+ if (x < 1)
+ fun_l5_n176(x)
+ else
+ fun_l5_n511(x)
+ end
+end
+
+def fun_l4_n651(x)
+ if (x < 1)
+ fun_l5_n830(x)
+ else
+ fun_l5_n107(x)
+ end
+end
+
+def fun_l4_n652(x)
+ if (x < 1)
+ fun_l5_n207(x)
+ else
+ fun_l5_n894(x)
+ end
+end
+
+def fun_l4_n653(x)
+ if (x < 1)
+ fun_l5_n611(x)
+ else
+ fun_l5_n443(x)
+ end
+end
+
+def fun_l4_n654(x)
+ if (x < 1)
+ fun_l5_n953(x)
+ else
+ fun_l5_n214(x)
+ end
+end
+
+def fun_l4_n655(x)
+ if (x < 1)
+ fun_l5_n109(x)
+ else
+ fun_l5_n706(x)
+ end
+end
+
+def fun_l4_n656(x)
+ if (x < 1)
+ fun_l5_n312(x)
+ else
+ fun_l5_n914(x)
+ end
+end
+
+def fun_l4_n657(x)
+ if (x < 1)
+ fun_l5_n774(x)
+ else
+ fun_l5_n530(x)
+ end
+end
+
+def fun_l4_n658(x)
+ if (x < 1)
+ fun_l5_n79(x)
+ else
+ fun_l5_n303(x)
+ end
+end
+
+def fun_l4_n659(x)
+ if (x < 1)
+ fun_l5_n718(x)
+ else
+ fun_l5_n196(x)
+ end
+end
+
+def fun_l4_n660(x)
+ if (x < 1)
+ fun_l5_n196(x)
+ else
+ fun_l5_n661(x)
+ end
+end
+
+def fun_l4_n661(x)
+ if (x < 1)
+ fun_l5_n654(x)
+ else
+ fun_l5_n17(x)
+ end
+end
+
+def fun_l4_n662(x)
+ if (x < 1)
+ fun_l5_n413(x)
+ else
+ fun_l5_n214(x)
+ end
+end
+
+def fun_l4_n663(x)
+ if (x < 1)
+ fun_l5_n491(x)
+ else
+ fun_l5_n927(x)
+ end
+end
+
+def fun_l4_n664(x)
+ if (x < 1)
+ fun_l5_n671(x)
+ else
+ fun_l5_n611(x)
+ end
+end
+
+def fun_l4_n665(x)
+ if (x < 1)
+ fun_l5_n153(x)
+ else
+ fun_l5_n127(x)
+ end
+end
+
+def fun_l4_n666(x)
+ if (x < 1)
+ fun_l5_n661(x)
+ else
+ fun_l5_n590(x)
+ end
+end
+
+def fun_l4_n667(x)
+ if (x < 1)
+ fun_l5_n539(x)
+ else
+ fun_l5_n692(x)
+ end
+end
+
+def fun_l4_n668(x)
+ if (x < 1)
+ fun_l5_n390(x)
+ else
+ fun_l5_n423(x)
+ end
+end
+
+def fun_l4_n669(x)
+ if (x < 1)
+ fun_l5_n615(x)
+ else
+ fun_l5_n449(x)
+ end
+end
+
+def fun_l4_n670(x)
+ if (x < 1)
+ fun_l5_n49(x)
+ else
+ fun_l5_n632(x)
+ end
+end
+
+def fun_l4_n671(x)
+ if (x < 1)
+ fun_l5_n891(x)
+ else
+ fun_l5_n915(x)
+ end
+end
+
+def fun_l4_n672(x)
+ if (x < 1)
+ fun_l5_n257(x)
+ else
+ fun_l5_n719(x)
+ end
+end
+
+def fun_l4_n673(x)
+ if (x < 1)
+ fun_l5_n620(x)
+ else
+ fun_l5_n473(x)
+ end
+end
+
+def fun_l4_n674(x)
+ if (x < 1)
+ fun_l5_n422(x)
+ else
+ fun_l5_n776(x)
+ end
+end
+
+def fun_l4_n675(x)
+ if (x < 1)
+ fun_l5_n973(x)
+ else
+ fun_l5_n32(x)
+ end
+end
+
+def fun_l4_n676(x)
+ if (x < 1)
+ fun_l5_n434(x)
+ else
+ fun_l5_n85(x)
+ end
+end
+
+def fun_l4_n677(x)
+ if (x < 1)
+ fun_l5_n430(x)
+ else
+ fun_l5_n702(x)
+ end
+end
+
+def fun_l4_n678(x)
+ if (x < 1)
+ fun_l5_n698(x)
+ else
+ fun_l5_n482(x)
+ end
+end
+
+def fun_l4_n679(x)
+ if (x < 1)
+ fun_l5_n365(x)
+ else
+ fun_l5_n83(x)
+ end
+end
+
+def fun_l4_n680(x)
+ if (x < 1)
+ fun_l5_n397(x)
+ else
+ fun_l5_n356(x)
+ end
+end
+
+def fun_l4_n681(x)
+ if (x < 1)
+ fun_l5_n48(x)
+ else
+ fun_l5_n458(x)
+ end
+end
+
+def fun_l4_n682(x)
+ if (x < 1)
+ fun_l5_n205(x)
+ else
+ fun_l5_n693(x)
+ end
+end
+
+def fun_l4_n683(x)
+ if (x < 1)
+ fun_l5_n971(x)
+ else
+ fun_l5_n656(x)
+ end
+end
+
+def fun_l4_n684(x)
+ if (x < 1)
+ fun_l5_n147(x)
+ else
+ fun_l5_n314(x)
+ end
+end
+
+def fun_l4_n685(x)
+ if (x < 1)
+ fun_l5_n347(x)
+ else
+ fun_l5_n281(x)
+ end
+end
+
+def fun_l4_n686(x)
+ if (x < 1)
+ fun_l5_n259(x)
+ else
+ fun_l5_n395(x)
+ end
+end
+
+def fun_l4_n687(x)
+ if (x < 1)
+ fun_l5_n899(x)
+ else
+ fun_l5_n319(x)
+ end
+end
+
+def fun_l4_n688(x)
+ if (x < 1)
+ fun_l5_n293(x)
+ else
+ fun_l5_n831(x)
+ end
+end
+
+def fun_l4_n689(x)
+ if (x < 1)
+ fun_l5_n88(x)
+ else
+ fun_l5_n938(x)
+ end
+end
+
+def fun_l4_n690(x)
+ if (x < 1)
+ fun_l5_n72(x)
+ else
+ fun_l5_n172(x)
+ end
+end
+
+def fun_l4_n691(x)
+ if (x < 1)
+ fun_l5_n330(x)
+ else
+ fun_l5_n70(x)
+ end
+end
+
+def fun_l4_n692(x)
+ if (x < 1)
+ fun_l5_n901(x)
+ else
+ fun_l5_n984(x)
+ end
+end
+
+def fun_l4_n693(x)
+ if (x < 1)
+ fun_l5_n528(x)
+ else
+ fun_l5_n659(x)
+ end
+end
+
+def fun_l4_n694(x)
+ if (x < 1)
+ fun_l5_n522(x)
+ else
+ fun_l5_n219(x)
+ end
+end
+
+def fun_l4_n695(x)
+ if (x < 1)
+ fun_l5_n568(x)
+ else
+ fun_l5_n997(x)
+ end
+end
+
+def fun_l4_n696(x)
+ if (x < 1)
+ fun_l5_n248(x)
+ else
+ fun_l5_n508(x)
+ end
+end
+
+def fun_l4_n697(x)
+ if (x < 1)
+ fun_l5_n71(x)
+ else
+ fun_l5_n590(x)
+ end
+end
+
+def fun_l4_n698(x)
+ if (x < 1)
+ fun_l5_n398(x)
+ else
+ fun_l5_n125(x)
+ end
+end
+
+def fun_l4_n699(x)
+ if (x < 1)
+ fun_l5_n405(x)
+ else
+ fun_l5_n129(x)
+ end
+end
+
+def fun_l4_n700(x)
+ if (x < 1)
+ fun_l5_n818(x)
+ else
+ fun_l5_n792(x)
+ end
+end
+
+def fun_l4_n701(x)
+ if (x < 1)
+ fun_l5_n530(x)
+ else
+ fun_l5_n849(x)
+ end
+end
+
+def fun_l4_n702(x)
+ if (x < 1)
+ fun_l5_n640(x)
+ else
+ fun_l5_n558(x)
+ end
+end
+
+def fun_l4_n703(x)
+ if (x < 1)
+ fun_l5_n717(x)
+ else
+ fun_l5_n113(x)
+ end
+end
+
+def fun_l4_n704(x)
+ if (x < 1)
+ fun_l5_n139(x)
+ else
+ fun_l5_n743(x)
+ end
+end
+
+def fun_l4_n705(x)
+ if (x < 1)
+ fun_l5_n720(x)
+ else
+ fun_l5_n713(x)
+ end
+end
+
+def fun_l4_n706(x)
+ if (x < 1)
+ fun_l5_n774(x)
+ else
+ fun_l5_n90(x)
+ end
+end
+
+def fun_l4_n707(x)
+ if (x < 1)
+ fun_l5_n579(x)
+ else
+ fun_l5_n692(x)
+ end
+end
+
+def fun_l4_n708(x)
+ if (x < 1)
+ fun_l5_n448(x)
+ else
+ fun_l5_n146(x)
+ end
+end
+
+def fun_l4_n709(x)
+ if (x < 1)
+ fun_l5_n249(x)
+ else
+ fun_l5_n163(x)
+ end
+end
+
+def fun_l4_n710(x)
+ if (x < 1)
+ fun_l5_n694(x)
+ else
+ fun_l5_n532(x)
+ end
+end
+
+def fun_l4_n711(x)
+ if (x < 1)
+ fun_l5_n739(x)
+ else
+ fun_l5_n424(x)
+ end
+end
+
+def fun_l4_n712(x)
+ if (x < 1)
+ fun_l5_n700(x)
+ else
+ fun_l5_n761(x)
+ end
+end
+
+def fun_l4_n713(x)
+ if (x < 1)
+ fun_l5_n403(x)
+ else
+ fun_l5_n941(x)
+ end
+end
+
+def fun_l4_n714(x)
+ if (x < 1)
+ fun_l5_n724(x)
+ else
+ fun_l5_n863(x)
+ end
+end
+
+def fun_l4_n715(x)
+ if (x < 1)
+ fun_l5_n392(x)
+ else
+ fun_l5_n617(x)
+ end
+end
+
+def fun_l4_n716(x)
+ if (x < 1)
+ fun_l5_n76(x)
+ else
+ fun_l5_n896(x)
+ end
+end
+
+def fun_l4_n717(x)
+ if (x < 1)
+ fun_l5_n355(x)
+ else
+ fun_l5_n533(x)
+ end
+end
+
+def fun_l4_n718(x)
+ if (x < 1)
+ fun_l5_n225(x)
+ else
+ fun_l5_n273(x)
+ end
+end
+
+def fun_l4_n719(x)
+ if (x < 1)
+ fun_l5_n828(x)
+ else
+ fun_l5_n163(x)
+ end
+end
+
+def fun_l4_n720(x)
+ if (x < 1)
+ fun_l5_n309(x)
+ else
+ fun_l5_n702(x)
+ end
+end
+
+def fun_l4_n721(x)
+ if (x < 1)
+ fun_l5_n959(x)
+ else
+ fun_l5_n370(x)
+ end
+end
+
+def fun_l4_n722(x)
+ if (x < 1)
+ fun_l5_n640(x)
+ else
+ fun_l5_n96(x)
+ end
+end
+
+def fun_l4_n723(x)
+ if (x < 1)
+ fun_l5_n590(x)
+ else
+ fun_l5_n332(x)
+ end
+end
+
+def fun_l4_n724(x)
+ if (x < 1)
+ fun_l5_n14(x)
+ else
+ fun_l5_n161(x)
+ end
+end
+
+def fun_l4_n725(x)
+ if (x < 1)
+ fun_l5_n871(x)
+ else
+ fun_l5_n643(x)
+ end
+end
+
+def fun_l4_n726(x)
+ if (x < 1)
+ fun_l5_n885(x)
+ else
+ fun_l5_n142(x)
+ end
+end
+
+def fun_l4_n727(x)
+ if (x < 1)
+ fun_l5_n994(x)
+ else
+ fun_l5_n823(x)
+ end
+end
+
+def fun_l4_n728(x)
+ if (x < 1)
+ fun_l5_n825(x)
+ else
+ fun_l5_n315(x)
+ end
+end
+
+def fun_l4_n729(x)
+ if (x < 1)
+ fun_l5_n312(x)
+ else
+ fun_l5_n28(x)
+ end
+end
+
+def fun_l4_n730(x)
+ if (x < 1)
+ fun_l5_n545(x)
+ else
+ fun_l5_n87(x)
+ end
+end
+
+def fun_l4_n731(x)
+ if (x < 1)
+ fun_l5_n604(x)
+ else
+ fun_l5_n999(x)
+ end
+end
+
+def fun_l4_n732(x)
+ if (x < 1)
+ fun_l5_n21(x)
+ else
+ fun_l5_n170(x)
+ end
+end
+
+def fun_l4_n733(x)
+ if (x < 1)
+ fun_l5_n662(x)
+ else
+ fun_l5_n407(x)
+ end
+end
+
+def fun_l4_n734(x)
+ if (x < 1)
+ fun_l5_n808(x)
+ else
+ fun_l5_n653(x)
+ end
+end
+
+def fun_l4_n735(x)
+ if (x < 1)
+ fun_l5_n665(x)
+ else
+ fun_l5_n925(x)
+ end
+end
+
+def fun_l4_n736(x)
+ if (x < 1)
+ fun_l5_n186(x)
+ else
+ fun_l5_n817(x)
+ end
+end
+
+def fun_l4_n737(x)
+ if (x < 1)
+ fun_l5_n360(x)
+ else
+ fun_l5_n527(x)
+ end
+end
+
+def fun_l4_n738(x)
+ if (x < 1)
+ fun_l5_n278(x)
+ else
+ fun_l5_n759(x)
+ end
+end
+
+def fun_l4_n739(x)
+ if (x < 1)
+ fun_l5_n710(x)
+ else
+ fun_l5_n909(x)
+ end
+end
+
+def fun_l4_n740(x)
+ if (x < 1)
+ fun_l5_n770(x)
+ else
+ fun_l5_n382(x)
+ end
+end
+
+def fun_l4_n741(x)
+ if (x < 1)
+ fun_l5_n969(x)
+ else
+ fun_l5_n583(x)
+ end
+end
+
+def fun_l4_n742(x)
+ if (x < 1)
+ fun_l5_n653(x)
+ else
+ fun_l5_n258(x)
+ end
+end
+
+def fun_l4_n743(x)
+ if (x < 1)
+ fun_l5_n966(x)
+ else
+ fun_l5_n705(x)
+ end
+end
+
+def fun_l4_n744(x)
+ if (x < 1)
+ fun_l5_n454(x)
+ else
+ fun_l5_n748(x)
+ end
+end
+
+def fun_l4_n745(x)
+ if (x < 1)
+ fun_l5_n595(x)
+ else
+ fun_l5_n865(x)
+ end
+end
+
+def fun_l4_n746(x)
+ if (x < 1)
+ fun_l5_n593(x)
+ else
+ fun_l5_n615(x)
+ end
+end
+
+def fun_l4_n747(x)
+ if (x < 1)
+ fun_l5_n638(x)
+ else
+ fun_l5_n651(x)
+ end
+end
+
+def fun_l4_n748(x)
+ if (x < 1)
+ fun_l5_n331(x)
+ else
+ fun_l5_n847(x)
+ end
+end
+
+def fun_l4_n749(x)
+ if (x < 1)
+ fun_l5_n59(x)
+ else
+ fun_l5_n805(x)
+ end
+end
+
+def fun_l4_n750(x)
+ if (x < 1)
+ fun_l5_n269(x)
+ else
+ fun_l5_n904(x)
+ end
+end
+
+def fun_l4_n751(x)
+ if (x < 1)
+ fun_l5_n292(x)
+ else
+ fun_l5_n459(x)
+ end
+end
+
+def fun_l4_n752(x)
+ if (x < 1)
+ fun_l5_n581(x)
+ else
+ fun_l5_n353(x)
+ end
+end
+
+def fun_l4_n753(x)
+ if (x < 1)
+ fun_l5_n785(x)
+ else
+ fun_l5_n745(x)
+ end
+end
+
+def fun_l4_n754(x)
+ if (x < 1)
+ fun_l5_n317(x)
+ else
+ fun_l5_n604(x)
+ end
+end
+
+def fun_l4_n755(x)
+ if (x < 1)
+ fun_l5_n208(x)
+ else
+ fun_l5_n318(x)
+ end
+end
+
+def fun_l4_n756(x)
+ if (x < 1)
+ fun_l5_n986(x)
+ else
+ fun_l5_n83(x)
+ end
+end
+
+def fun_l4_n757(x)
+ if (x < 1)
+ fun_l5_n946(x)
+ else
+ fun_l5_n314(x)
+ end
+end
+
+def fun_l4_n758(x)
+ if (x < 1)
+ fun_l5_n571(x)
+ else
+ fun_l5_n919(x)
+ end
+end
+
+def fun_l4_n759(x)
+ if (x < 1)
+ fun_l5_n129(x)
+ else
+ fun_l5_n191(x)
+ end
+end
+
+def fun_l4_n760(x)
+ if (x < 1)
+ fun_l5_n838(x)
+ else
+ fun_l5_n29(x)
+ end
+end
+
+def fun_l4_n761(x)
+ if (x < 1)
+ fun_l5_n250(x)
+ else
+ fun_l5_n892(x)
+ end
+end
+
+def fun_l4_n762(x)
+ if (x < 1)
+ fun_l5_n588(x)
+ else
+ fun_l5_n59(x)
+ end
+end
+
+def fun_l4_n763(x)
+ if (x < 1)
+ fun_l5_n831(x)
+ else
+ fun_l5_n668(x)
+ end
+end
+
+def fun_l4_n764(x)
+ if (x < 1)
+ fun_l5_n337(x)
+ else
+ fun_l5_n514(x)
+ end
+end
+
+def fun_l4_n765(x)
+ if (x < 1)
+ fun_l5_n56(x)
+ else
+ fun_l5_n718(x)
+ end
+end
+
+def fun_l4_n766(x)
+ if (x < 1)
+ fun_l5_n189(x)
+ else
+ fun_l5_n103(x)
+ end
+end
+
+def fun_l4_n767(x)
+ if (x < 1)
+ fun_l5_n395(x)
+ else
+ fun_l5_n313(x)
+ end
+end
+
+def fun_l4_n768(x)
+ if (x < 1)
+ fun_l5_n388(x)
+ else
+ fun_l5_n757(x)
+ end
+end
+
+def fun_l4_n769(x)
+ if (x < 1)
+ fun_l5_n933(x)
+ else
+ fun_l5_n979(x)
+ end
+end
+
+def fun_l4_n770(x)
+ if (x < 1)
+ fun_l5_n765(x)
+ else
+ fun_l5_n472(x)
+ end
+end
+
+def fun_l4_n771(x)
+ if (x < 1)
+ fun_l5_n381(x)
+ else
+ fun_l5_n527(x)
+ end
+end
+
+def fun_l4_n772(x)
+ if (x < 1)
+ fun_l5_n314(x)
+ else
+ fun_l5_n990(x)
+ end
+end
+
+def fun_l4_n773(x)
+ if (x < 1)
+ fun_l5_n457(x)
+ else
+ fun_l5_n413(x)
+ end
+end
+
+def fun_l4_n774(x)
+ if (x < 1)
+ fun_l5_n245(x)
+ else
+ fun_l5_n85(x)
+ end
+end
+
+def fun_l4_n775(x)
+ if (x < 1)
+ fun_l5_n432(x)
+ else
+ fun_l5_n987(x)
+ end
+end
+
+def fun_l4_n776(x)
+ if (x < 1)
+ fun_l5_n588(x)
+ else
+ fun_l5_n352(x)
+ end
+end
+
+def fun_l4_n777(x)
+ if (x < 1)
+ fun_l5_n414(x)
+ else
+ fun_l5_n586(x)
+ end
+end
+
+def fun_l4_n778(x)
+ if (x < 1)
+ fun_l5_n290(x)
+ else
+ fun_l5_n776(x)
+ end
+end
+
+def fun_l4_n779(x)
+ if (x < 1)
+ fun_l5_n324(x)
+ else
+ fun_l5_n918(x)
+ end
+end
+
+def fun_l4_n780(x)
+ if (x < 1)
+ fun_l5_n928(x)
+ else
+ fun_l5_n107(x)
+ end
+end
+
+def fun_l4_n781(x)
+ if (x < 1)
+ fun_l5_n244(x)
+ else
+ fun_l5_n434(x)
+ end
+end
+
+def fun_l4_n782(x)
+ if (x < 1)
+ fun_l5_n828(x)
+ else
+ fun_l5_n141(x)
+ end
+end
+
+def fun_l4_n783(x)
+ if (x < 1)
+ fun_l5_n634(x)
+ else
+ fun_l5_n206(x)
+ end
+end
+
+def fun_l4_n784(x)
+ if (x < 1)
+ fun_l5_n387(x)
+ else
+ fun_l5_n57(x)
+ end
+end
+
+def fun_l4_n785(x)
+ if (x < 1)
+ fun_l5_n731(x)
+ else
+ fun_l5_n670(x)
+ end
+end
+
+def fun_l4_n786(x)
+ if (x < 1)
+ fun_l5_n173(x)
+ else
+ fun_l5_n657(x)
+ end
+end
+
+def fun_l4_n787(x)
+ if (x < 1)
+ fun_l5_n661(x)
+ else
+ fun_l5_n286(x)
+ end
+end
+
+def fun_l4_n788(x)
+ if (x < 1)
+ fun_l5_n364(x)
+ else
+ fun_l5_n520(x)
+ end
+end
+
+def fun_l4_n789(x)
+ if (x < 1)
+ fun_l5_n545(x)
+ else
+ fun_l5_n417(x)
+ end
+end
+
+def fun_l4_n790(x)
+ if (x < 1)
+ fun_l5_n270(x)
+ else
+ fun_l5_n550(x)
+ end
+end
+
+def fun_l4_n791(x)
+ if (x < 1)
+ fun_l5_n873(x)
+ else
+ fun_l5_n321(x)
+ end
+end
+
+def fun_l4_n792(x)
+ if (x < 1)
+ fun_l5_n243(x)
+ else
+ fun_l5_n406(x)
+ end
+end
+
+def fun_l4_n793(x)
+ if (x < 1)
+ fun_l5_n229(x)
+ else
+ fun_l5_n400(x)
+ end
+end
+
+def fun_l4_n794(x)
+ if (x < 1)
+ fun_l5_n670(x)
+ else
+ fun_l5_n535(x)
+ end
+end
+
+def fun_l4_n795(x)
+ if (x < 1)
+ fun_l5_n911(x)
+ else
+ fun_l5_n786(x)
+ end
+end
+
+def fun_l4_n796(x)
+ if (x < 1)
+ fun_l5_n247(x)
+ else
+ fun_l5_n775(x)
+ end
+end
+
+def fun_l4_n797(x)
+ if (x < 1)
+ fun_l5_n944(x)
+ else
+ fun_l5_n14(x)
+ end
+end
+
+def fun_l4_n798(x)
+ if (x < 1)
+ fun_l5_n57(x)
+ else
+ fun_l5_n644(x)
+ end
+end
+
+def fun_l4_n799(x)
+ if (x < 1)
+ fun_l5_n583(x)
+ else
+ fun_l5_n599(x)
+ end
+end
+
+def fun_l4_n800(x)
+ if (x < 1)
+ fun_l5_n685(x)
+ else
+ fun_l5_n366(x)
+ end
+end
+
+def fun_l4_n801(x)
+ if (x < 1)
+ fun_l5_n671(x)
+ else
+ fun_l5_n386(x)
+ end
+end
+
+def fun_l4_n802(x)
+ if (x < 1)
+ fun_l5_n19(x)
+ else
+ fun_l5_n403(x)
+ end
+end
+
+def fun_l4_n803(x)
+ if (x < 1)
+ fun_l5_n952(x)
+ else
+ fun_l5_n237(x)
+ end
+end
+
+def fun_l4_n804(x)
+ if (x < 1)
+ fun_l5_n929(x)
+ else
+ fun_l5_n737(x)
+ end
+end
+
+def fun_l4_n805(x)
+ if (x < 1)
+ fun_l5_n197(x)
+ else
+ fun_l5_n322(x)
+ end
+end
+
+def fun_l4_n806(x)
+ if (x < 1)
+ fun_l5_n966(x)
+ else
+ fun_l5_n531(x)
+ end
+end
+
+def fun_l4_n807(x)
+ if (x < 1)
+ fun_l5_n928(x)
+ else
+ fun_l5_n802(x)
+ end
+end
+
+def fun_l4_n808(x)
+ if (x < 1)
+ fun_l5_n34(x)
+ else
+ fun_l5_n107(x)
+ end
+end
+
+def fun_l4_n809(x)
+ if (x < 1)
+ fun_l5_n615(x)
+ else
+ fun_l5_n628(x)
+ end
+end
+
+def fun_l4_n810(x)
+ if (x < 1)
+ fun_l5_n187(x)
+ else
+ fun_l5_n424(x)
+ end
+end
+
+def fun_l4_n811(x)
+ if (x < 1)
+ fun_l5_n189(x)
+ else
+ fun_l5_n639(x)
+ end
+end
+
+def fun_l4_n812(x)
+ if (x < 1)
+ fun_l5_n177(x)
+ else
+ fun_l5_n580(x)
+ end
+end
+
+def fun_l4_n813(x)
+ if (x < 1)
+ fun_l5_n699(x)
+ else
+ fun_l5_n595(x)
+ end
+end
+
+def fun_l4_n814(x)
+ if (x < 1)
+ fun_l5_n44(x)
+ else
+ fun_l5_n966(x)
+ end
+end
+
+def fun_l4_n815(x)
+ if (x < 1)
+ fun_l5_n883(x)
+ else
+ fun_l5_n580(x)
+ end
+end
+
+def fun_l4_n816(x)
+ if (x < 1)
+ fun_l5_n306(x)
+ else
+ fun_l5_n564(x)
+ end
+end
+
+def fun_l4_n817(x)
+ if (x < 1)
+ fun_l5_n337(x)
+ else
+ fun_l5_n912(x)
+ end
+end
+
+def fun_l4_n818(x)
+ if (x < 1)
+ fun_l5_n36(x)
+ else
+ fun_l5_n164(x)
+ end
+end
+
+def fun_l4_n819(x)
+ if (x < 1)
+ fun_l5_n987(x)
+ else
+ fun_l5_n38(x)
+ end
+end
+
+def fun_l4_n820(x)
+ if (x < 1)
+ fun_l5_n656(x)
+ else
+ fun_l5_n647(x)
+ end
+end
+
+def fun_l4_n821(x)
+ if (x < 1)
+ fun_l5_n364(x)
+ else
+ fun_l5_n838(x)
+ end
+end
+
+def fun_l4_n822(x)
+ if (x < 1)
+ fun_l5_n301(x)
+ else
+ fun_l5_n850(x)
+ end
+end
+
+def fun_l4_n823(x)
+ if (x < 1)
+ fun_l5_n191(x)
+ else
+ fun_l5_n812(x)
+ end
+end
+
+def fun_l4_n824(x)
+ if (x < 1)
+ fun_l5_n148(x)
+ else
+ fun_l5_n332(x)
+ end
+end
+
+def fun_l4_n825(x)
+ if (x < 1)
+ fun_l5_n315(x)
+ else
+ fun_l5_n763(x)
+ end
+end
+
+def fun_l4_n826(x)
+ if (x < 1)
+ fun_l5_n612(x)
+ else
+ fun_l5_n993(x)
+ end
+end
+
+def fun_l4_n827(x)
+ if (x < 1)
+ fun_l5_n229(x)
+ else
+ fun_l5_n388(x)
+ end
+end
+
+def fun_l4_n828(x)
+ if (x < 1)
+ fun_l5_n131(x)
+ else
+ fun_l5_n283(x)
+ end
+end
+
+def fun_l4_n829(x)
+ if (x < 1)
+ fun_l5_n59(x)
+ else
+ fun_l5_n280(x)
+ end
+end
+
+def fun_l4_n830(x)
+ if (x < 1)
+ fun_l5_n993(x)
+ else
+ fun_l5_n160(x)
+ end
+end
+
+def fun_l4_n831(x)
+ if (x < 1)
+ fun_l5_n394(x)
+ else
+ fun_l5_n528(x)
+ end
+end
+
+def fun_l4_n832(x)
+ if (x < 1)
+ fun_l5_n376(x)
+ else
+ fun_l5_n201(x)
+ end
+end
+
+def fun_l4_n833(x)
+ if (x < 1)
+ fun_l5_n890(x)
+ else
+ fun_l5_n867(x)
+ end
+end
+
+def fun_l4_n834(x)
+ if (x < 1)
+ fun_l5_n320(x)
+ else
+ fun_l5_n237(x)
+ end
+end
+
+def fun_l4_n835(x)
+ if (x < 1)
+ fun_l5_n771(x)
+ else
+ fun_l5_n83(x)
+ end
+end
+
+def fun_l4_n836(x)
+ if (x < 1)
+ fun_l5_n751(x)
+ else
+ fun_l5_n2(x)
+ end
+end
+
+def fun_l4_n837(x)
+ if (x < 1)
+ fun_l5_n825(x)
+ else
+ fun_l5_n930(x)
+ end
+end
+
+def fun_l4_n838(x)
+ if (x < 1)
+ fun_l5_n968(x)
+ else
+ fun_l5_n136(x)
+ end
+end
+
+def fun_l4_n839(x)
+ if (x < 1)
+ fun_l5_n529(x)
+ else
+ fun_l5_n626(x)
+ end
+end
+
+def fun_l4_n840(x)
+ if (x < 1)
+ fun_l5_n228(x)
+ else
+ fun_l5_n915(x)
+ end
+end
+
+def fun_l4_n841(x)
+ if (x < 1)
+ fun_l5_n270(x)
+ else
+ fun_l5_n813(x)
+ end
+end
+
+def fun_l4_n842(x)
+ if (x < 1)
+ fun_l5_n392(x)
+ else
+ fun_l5_n60(x)
+ end
+end
+
+def fun_l4_n843(x)
+ if (x < 1)
+ fun_l5_n470(x)
+ else
+ fun_l5_n699(x)
+ end
+end
+
+def fun_l4_n844(x)
+ if (x < 1)
+ fun_l5_n68(x)
+ else
+ fun_l5_n163(x)
+ end
+end
+
+def fun_l4_n845(x)
+ if (x < 1)
+ fun_l5_n469(x)
+ else
+ fun_l5_n472(x)
+ end
+end
+
+def fun_l4_n846(x)
+ if (x < 1)
+ fun_l5_n640(x)
+ else
+ fun_l5_n311(x)
+ end
+end
+
+def fun_l4_n847(x)
+ if (x < 1)
+ fun_l5_n968(x)
+ else
+ fun_l5_n414(x)
+ end
+end
+
+def fun_l4_n848(x)
+ if (x < 1)
+ fun_l5_n111(x)
+ else
+ fun_l5_n340(x)
+ end
+end
+
+def fun_l4_n849(x)
+ if (x < 1)
+ fun_l5_n906(x)
+ else
+ fun_l5_n278(x)
+ end
+end
+
+def fun_l4_n850(x)
+ if (x < 1)
+ fun_l5_n353(x)
+ else
+ fun_l5_n590(x)
+ end
+end
+
+def fun_l4_n851(x)
+ if (x < 1)
+ fun_l5_n218(x)
+ else
+ fun_l5_n341(x)
+ end
+end
+
+def fun_l4_n852(x)
+ if (x < 1)
+ fun_l5_n527(x)
+ else
+ fun_l5_n273(x)
+ end
+end
+
+def fun_l4_n853(x)
+ if (x < 1)
+ fun_l5_n589(x)
+ else
+ fun_l5_n417(x)
+ end
+end
+
+def fun_l4_n854(x)
+ if (x < 1)
+ fun_l5_n411(x)
+ else
+ fun_l5_n848(x)
+ end
+end
+
+def fun_l4_n855(x)
+ if (x < 1)
+ fun_l5_n607(x)
+ else
+ fun_l5_n65(x)
+ end
+end
+
+def fun_l4_n856(x)
+ if (x < 1)
+ fun_l5_n240(x)
+ else
+ fun_l5_n24(x)
+ end
+end
+
+def fun_l4_n857(x)
+ if (x < 1)
+ fun_l5_n165(x)
+ else
+ fun_l5_n362(x)
+ end
+end
+
+def fun_l4_n858(x)
+ if (x < 1)
+ fun_l5_n559(x)
+ else
+ fun_l5_n253(x)
+ end
+end
+
+def fun_l4_n859(x)
+ if (x < 1)
+ fun_l5_n834(x)
+ else
+ fun_l5_n217(x)
+ end
+end
+
+def fun_l4_n860(x)
+ if (x < 1)
+ fun_l5_n891(x)
+ else
+ fun_l5_n369(x)
+ end
+end
+
+def fun_l4_n861(x)
+ if (x < 1)
+ fun_l5_n676(x)
+ else
+ fun_l5_n614(x)
+ end
+end
+
+def fun_l4_n862(x)
+ if (x < 1)
+ fun_l5_n527(x)
+ else
+ fun_l5_n318(x)
+ end
+end
+
+def fun_l4_n863(x)
+ if (x < 1)
+ fun_l5_n991(x)
+ else
+ fun_l5_n997(x)
+ end
+end
+
+def fun_l4_n864(x)
+ if (x < 1)
+ fun_l5_n842(x)
+ else
+ fun_l5_n370(x)
+ end
+end
+
+def fun_l4_n865(x)
+ if (x < 1)
+ fun_l5_n623(x)
+ else
+ fun_l5_n741(x)
+ end
+end
+
+def fun_l4_n866(x)
+ if (x < 1)
+ fun_l5_n58(x)
+ else
+ fun_l5_n953(x)
+ end
+end
+
+def fun_l4_n867(x)
+ if (x < 1)
+ fun_l5_n269(x)
+ else
+ fun_l5_n341(x)
+ end
+end
+
+def fun_l4_n868(x)
+ if (x < 1)
+ fun_l5_n814(x)
+ else
+ fun_l5_n849(x)
+ end
+end
+
+def fun_l4_n869(x)
+ if (x < 1)
+ fun_l5_n163(x)
+ else
+ fun_l5_n246(x)
+ end
+end
+
+def fun_l4_n870(x)
+ if (x < 1)
+ fun_l5_n739(x)
+ else
+ fun_l5_n524(x)
+ end
+end
+
+def fun_l4_n871(x)
+ if (x < 1)
+ fun_l5_n589(x)
+ else
+ fun_l5_n592(x)
+ end
+end
+
+def fun_l4_n872(x)
+ if (x < 1)
+ fun_l5_n922(x)
+ else
+ fun_l5_n401(x)
+ end
+end
+
+def fun_l4_n873(x)
+ if (x < 1)
+ fun_l5_n600(x)
+ else
+ fun_l5_n184(x)
+ end
+end
+
+def fun_l4_n874(x)
+ if (x < 1)
+ fun_l5_n424(x)
+ else
+ fun_l5_n627(x)
+ end
+end
+
+def fun_l4_n875(x)
+ if (x < 1)
+ fun_l5_n48(x)
+ else
+ fun_l5_n127(x)
+ end
+end
+
+def fun_l4_n876(x)
+ if (x < 1)
+ fun_l5_n687(x)
+ else
+ fun_l5_n451(x)
+ end
+end
+
+def fun_l4_n877(x)
+ if (x < 1)
+ fun_l5_n849(x)
+ else
+ fun_l5_n480(x)
+ end
+end
+
+def fun_l4_n878(x)
+ if (x < 1)
+ fun_l5_n801(x)
+ else
+ fun_l5_n60(x)
+ end
+end
+
+def fun_l4_n879(x)
+ if (x < 1)
+ fun_l5_n964(x)
+ else
+ fun_l5_n790(x)
+ end
+end
+
+def fun_l4_n880(x)
+ if (x < 1)
+ fun_l5_n483(x)
+ else
+ fun_l5_n817(x)
+ end
+end
+
+def fun_l4_n881(x)
+ if (x < 1)
+ fun_l5_n91(x)
+ else
+ fun_l5_n776(x)
+ end
+end
+
+def fun_l4_n882(x)
+ if (x < 1)
+ fun_l5_n8(x)
+ else
+ fun_l5_n726(x)
+ end
+end
+
+def fun_l4_n883(x)
+ if (x < 1)
+ fun_l5_n63(x)
+ else
+ fun_l5_n570(x)
+ end
+end
+
+def fun_l4_n884(x)
+ if (x < 1)
+ fun_l5_n691(x)
+ else
+ fun_l5_n117(x)
+ end
+end
+
+def fun_l4_n885(x)
+ if (x < 1)
+ fun_l5_n262(x)
+ else
+ fun_l5_n38(x)
+ end
+end
+
+def fun_l4_n886(x)
+ if (x < 1)
+ fun_l5_n678(x)
+ else
+ fun_l5_n108(x)
+ end
+end
+
+def fun_l4_n887(x)
+ if (x < 1)
+ fun_l5_n775(x)
+ else
+ fun_l5_n751(x)
+ end
+end
+
+def fun_l4_n888(x)
+ if (x < 1)
+ fun_l5_n917(x)
+ else
+ fun_l5_n769(x)
+ end
+end
+
+def fun_l4_n889(x)
+ if (x < 1)
+ fun_l5_n191(x)
+ else
+ fun_l5_n662(x)
+ end
+end
+
+def fun_l4_n890(x)
+ if (x < 1)
+ fun_l5_n34(x)
+ else
+ fun_l5_n806(x)
+ end
+end
+
+def fun_l4_n891(x)
+ if (x < 1)
+ fun_l5_n705(x)
+ else
+ fun_l5_n198(x)
+ end
+end
+
+def fun_l4_n892(x)
+ if (x < 1)
+ fun_l5_n647(x)
+ else
+ fun_l5_n0(x)
+ end
+end
+
+def fun_l4_n893(x)
+ if (x < 1)
+ fun_l5_n336(x)
+ else
+ fun_l5_n795(x)
+ end
+end
+
+def fun_l4_n894(x)
+ if (x < 1)
+ fun_l5_n984(x)
+ else
+ fun_l5_n751(x)
+ end
+end
+
+def fun_l4_n895(x)
+ if (x < 1)
+ fun_l5_n373(x)
+ else
+ fun_l5_n12(x)
+ end
+end
+
+def fun_l4_n896(x)
+ if (x < 1)
+ fun_l5_n672(x)
+ else
+ fun_l5_n17(x)
+ end
+end
+
+def fun_l4_n897(x)
+ if (x < 1)
+ fun_l5_n67(x)
+ else
+ fun_l5_n183(x)
+ end
+end
+
+def fun_l4_n898(x)
+ if (x < 1)
+ fun_l5_n557(x)
+ else
+ fun_l5_n43(x)
+ end
+end
+
+def fun_l4_n899(x)
+ if (x < 1)
+ fun_l5_n210(x)
+ else
+ fun_l5_n904(x)
+ end
+end
+
+def fun_l4_n900(x)
+ if (x < 1)
+ fun_l5_n665(x)
+ else
+ fun_l5_n173(x)
+ end
+end
+
+def fun_l4_n901(x)
+ if (x < 1)
+ fun_l5_n268(x)
+ else
+ fun_l5_n907(x)
+ end
+end
+
+def fun_l4_n902(x)
+ if (x < 1)
+ fun_l5_n19(x)
+ else
+ fun_l5_n145(x)
+ end
+end
+
+def fun_l4_n903(x)
+ if (x < 1)
+ fun_l5_n158(x)
+ else
+ fun_l5_n261(x)
+ end
+end
+
+def fun_l4_n904(x)
+ if (x < 1)
+ fun_l5_n677(x)
+ else
+ fun_l5_n880(x)
+ end
+end
+
+def fun_l4_n905(x)
+ if (x < 1)
+ fun_l5_n262(x)
+ else
+ fun_l5_n790(x)
+ end
+end
+
+def fun_l4_n906(x)
+ if (x < 1)
+ fun_l5_n775(x)
+ else
+ fun_l5_n785(x)
+ end
+end
+
+def fun_l4_n907(x)
+ if (x < 1)
+ fun_l5_n629(x)
+ else
+ fun_l5_n312(x)
+ end
+end
+
+def fun_l4_n908(x)
+ if (x < 1)
+ fun_l5_n84(x)
+ else
+ fun_l5_n605(x)
+ end
+end
+
+def fun_l4_n909(x)
+ if (x < 1)
+ fun_l5_n346(x)
+ else
+ fun_l5_n245(x)
+ end
+end
+
+def fun_l4_n910(x)
+ if (x < 1)
+ fun_l5_n768(x)
+ else
+ fun_l5_n47(x)
+ end
+end
+
+def fun_l4_n911(x)
+ if (x < 1)
+ fun_l5_n48(x)
+ else
+ fun_l5_n406(x)
+ end
+end
+
+def fun_l4_n912(x)
+ if (x < 1)
+ fun_l5_n493(x)
+ else
+ fun_l5_n608(x)
+ end
+end
+
+def fun_l4_n913(x)
+ if (x < 1)
+ fun_l5_n456(x)
+ else
+ fun_l5_n176(x)
+ end
+end
+
+def fun_l4_n914(x)
+ if (x < 1)
+ fun_l5_n201(x)
+ else
+ fun_l5_n233(x)
+ end
+end
+
+def fun_l4_n915(x)
+ if (x < 1)
+ fun_l5_n910(x)
+ else
+ fun_l5_n790(x)
+ end
+end
+
+def fun_l4_n916(x)
+ if (x < 1)
+ fun_l5_n734(x)
+ else
+ fun_l5_n685(x)
+ end
+end
+
+def fun_l4_n917(x)
+ if (x < 1)
+ fun_l5_n132(x)
+ else
+ fun_l5_n112(x)
+ end
+end
+
+def fun_l4_n918(x)
+ if (x < 1)
+ fun_l5_n897(x)
+ else
+ fun_l5_n196(x)
+ end
+end
+
+def fun_l4_n919(x)
+ if (x < 1)
+ fun_l5_n395(x)
+ else
+ fun_l5_n186(x)
+ end
+end
+
+def fun_l4_n920(x)
+ if (x < 1)
+ fun_l5_n19(x)
+ else
+ fun_l5_n810(x)
+ end
+end
+
+def fun_l4_n921(x)
+ if (x < 1)
+ fun_l5_n546(x)
+ else
+ fun_l5_n34(x)
+ end
+end
+
+def fun_l4_n922(x)
+ if (x < 1)
+ fun_l5_n863(x)
+ else
+ fun_l5_n928(x)
+ end
+end
+
+def fun_l4_n923(x)
+ if (x < 1)
+ fun_l5_n485(x)
+ else
+ fun_l5_n182(x)
+ end
+end
+
+def fun_l4_n924(x)
+ if (x < 1)
+ fun_l5_n303(x)
+ else
+ fun_l5_n17(x)
+ end
+end
+
+def fun_l4_n925(x)
+ if (x < 1)
+ fun_l5_n78(x)
+ else
+ fun_l5_n816(x)
+ end
+end
+
+def fun_l4_n926(x)
+ if (x < 1)
+ fun_l5_n797(x)
+ else
+ fun_l5_n761(x)
+ end
+end
+
+def fun_l4_n927(x)
+ if (x < 1)
+ fun_l5_n975(x)
+ else
+ fun_l5_n220(x)
+ end
+end
+
+def fun_l4_n928(x)
+ if (x < 1)
+ fun_l5_n213(x)
+ else
+ fun_l5_n815(x)
+ end
+end
+
+def fun_l4_n929(x)
+ if (x < 1)
+ fun_l5_n280(x)
+ else
+ fun_l5_n551(x)
+ end
+end
+
+def fun_l4_n930(x)
+ if (x < 1)
+ fun_l5_n631(x)
+ else
+ fun_l5_n629(x)
+ end
+end
+
+def fun_l4_n931(x)
+ if (x < 1)
+ fun_l5_n60(x)
+ else
+ fun_l5_n332(x)
+ end
+end
+
+def fun_l4_n932(x)
+ if (x < 1)
+ fun_l5_n336(x)
+ else
+ fun_l5_n733(x)
+ end
+end
+
+def fun_l4_n933(x)
+ if (x < 1)
+ fun_l5_n94(x)
+ else
+ fun_l5_n48(x)
+ end
+end
+
+def fun_l4_n934(x)
+ if (x < 1)
+ fun_l5_n527(x)
+ else
+ fun_l5_n108(x)
+ end
+end
+
+def fun_l4_n935(x)
+ if (x < 1)
+ fun_l5_n994(x)
+ else
+ fun_l5_n95(x)
+ end
+end
+
+def fun_l4_n936(x)
+ if (x < 1)
+ fun_l5_n631(x)
+ else
+ fun_l5_n310(x)
+ end
+end
+
+def fun_l4_n937(x)
+ if (x < 1)
+ fun_l5_n851(x)
+ else
+ fun_l5_n380(x)
+ end
+end
+
+def fun_l4_n938(x)
+ if (x < 1)
+ fun_l5_n256(x)
+ else
+ fun_l5_n231(x)
+ end
+end
+
+def fun_l4_n939(x)
+ if (x < 1)
+ fun_l5_n686(x)
+ else
+ fun_l5_n557(x)
+ end
+end
+
+def fun_l4_n940(x)
+ if (x < 1)
+ fun_l5_n311(x)
+ else
+ fun_l5_n611(x)
+ end
+end
+
+def fun_l4_n941(x)
+ if (x < 1)
+ fun_l5_n770(x)
+ else
+ fun_l5_n306(x)
+ end
+end
+
+def fun_l4_n942(x)
+ if (x < 1)
+ fun_l5_n649(x)
+ else
+ fun_l5_n60(x)
+ end
+end
+
+def fun_l4_n943(x)
+ if (x < 1)
+ fun_l5_n935(x)
+ else
+ fun_l5_n991(x)
+ end
+end
+
+def fun_l4_n944(x)
+ if (x < 1)
+ fun_l5_n851(x)
+ else
+ fun_l5_n131(x)
+ end
+end
+
+def fun_l4_n945(x)
+ if (x < 1)
+ fun_l5_n422(x)
+ else
+ fun_l5_n309(x)
+ end
+end
+
+def fun_l4_n946(x)
+ if (x < 1)
+ fun_l5_n906(x)
+ else
+ fun_l5_n798(x)
+ end
+end
+
+def fun_l4_n947(x)
+ if (x < 1)
+ fun_l5_n817(x)
+ else
+ fun_l5_n122(x)
+ end
+end
+
+def fun_l4_n948(x)
+ if (x < 1)
+ fun_l5_n233(x)
+ else
+ fun_l5_n600(x)
+ end
+end
+
+def fun_l4_n949(x)
+ if (x < 1)
+ fun_l5_n908(x)
+ else
+ fun_l5_n332(x)
+ end
+end
+
+def fun_l4_n950(x)
+ if (x < 1)
+ fun_l5_n71(x)
+ else
+ fun_l5_n893(x)
+ end
+end
+
+def fun_l4_n951(x)
+ if (x < 1)
+ fun_l5_n281(x)
+ else
+ fun_l5_n281(x)
+ end
+end
+
+def fun_l4_n952(x)
+ if (x < 1)
+ fun_l5_n312(x)
+ else
+ fun_l5_n164(x)
+ end
+end
+
+def fun_l4_n953(x)
+ if (x < 1)
+ fun_l5_n292(x)
+ else
+ fun_l5_n993(x)
+ end
+end
+
+def fun_l4_n954(x)
+ if (x < 1)
+ fun_l5_n271(x)
+ else
+ fun_l5_n635(x)
+ end
+end
+
+def fun_l4_n955(x)
+ if (x < 1)
+ fun_l5_n10(x)
+ else
+ fun_l5_n202(x)
+ end
+end
+
+def fun_l4_n956(x)
+ if (x < 1)
+ fun_l5_n574(x)
+ else
+ fun_l5_n29(x)
+ end
+end
+
+def fun_l4_n957(x)
+ if (x < 1)
+ fun_l5_n154(x)
+ else
+ fun_l5_n96(x)
+ end
+end
+
+def fun_l4_n958(x)
+ if (x < 1)
+ fun_l5_n287(x)
+ else
+ fun_l5_n509(x)
+ end
+end
+
+def fun_l4_n959(x)
+ if (x < 1)
+ fun_l5_n400(x)
+ else
+ fun_l5_n195(x)
+ end
+end
+
+def fun_l4_n960(x)
+ if (x < 1)
+ fun_l5_n94(x)
+ else
+ fun_l5_n165(x)
+ end
+end
+
+def fun_l4_n961(x)
+ if (x < 1)
+ fun_l5_n276(x)
+ else
+ fun_l5_n935(x)
+ end
+end
+
+def fun_l4_n962(x)
+ if (x < 1)
+ fun_l5_n504(x)
+ else
+ fun_l5_n480(x)
+ end
+end
+
+def fun_l4_n963(x)
+ if (x < 1)
+ fun_l5_n152(x)
+ else
+ fun_l5_n397(x)
+ end
+end
+
+def fun_l4_n964(x)
+ if (x < 1)
+ fun_l5_n303(x)
+ else
+ fun_l5_n481(x)
+ end
+end
+
+def fun_l4_n965(x)
+ if (x < 1)
+ fun_l5_n882(x)
+ else
+ fun_l5_n116(x)
+ end
+end
+
+def fun_l4_n966(x)
+ if (x < 1)
+ fun_l5_n329(x)
+ else
+ fun_l5_n484(x)
+ end
+end
+
+def fun_l4_n967(x)
+ if (x < 1)
+ fun_l5_n369(x)
+ else
+ fun_l5_n680(x)
+ end
+end
+
+def fun_l4_n968(x)
+ if (x < 1)
+ fun_l5_n30(x)
+ else
+ fun_l5_n653(x)
+ end
+end
+
+def fun_l4_n969(x)
+ if (x < 1)
+ fun_l5_n292(x)
+ else
+ fun_l5_n793(x)
+ end
+end
+
+def fun_l4_n970(x)
+ if (x < 1)
+ fun_l5_n796(x)
+ else
+ fun_l5_n387(x)
+ end
+end
+
+def fun_l4_n971(x)
+ if (x < 1)
+ fun_l5_n735(x)
+ else
+ fun_l5_n985(x)
+ end
+end
+
+def fun_l4_n972(x)
+ if (x < 1)
+ fun_l5_n925(x)
+ else
+ fun_l5_n689(x)
+ end
+end
+
+def fun_l4_n973(x)
+ if (x < 1)
+ fun_l5_n154(x)
+ else
+ fun_l5_n998(x)
+ end
+end
+
+def fun_l4_n974(x)
+ if (x < 1)
+ fun_l5_n708(x)
+ else
+ fun_l5_n253(x)
+ end
+end
+
+def fun_l4_n975(x)
+ if (x < 1)
+ fun_l5_n716(x)
+ else
+ fun_l5_n958(x)
+ end
+end
+
+def fun_l4_n976(x)
+ if (x < 1)
+ fun_l5_n488(x)
+ else
+ fun_l5_n299(x)
+ end
+end
+
+def fun_l4_n977(x)
+ if (x < 1)
+ fun_l5_n872(x)
+ else
+ fun_l5_n276(x)
+ end
+end
+
+def fun_l4_n978(x)
+ if (x < 1)
+ fun_l5_n219(x)
+ else
+ fun_l5_n76(x)
+ end
+end
+
+def fun_l4_n979(x)
+ if (x < 1)
+ fun_l5_n937(x)
+ else
+ fun_l5_n988(x)
+ end
+end
+
+def fun_l4_n980(x)
+ if (x < 1)
+ fun_l5_n681(x)
+ else
+ fun_l5_n264(x)
+ end
+end
+
+def fun_l4_n981(x)
+ if (x < 1)
+ fun_l5_n630(x)
+ else
+ fun_l5_n18(x)
+ end
+end
+
+def fun_l4_n982(x)
+ if (x < 1)
+ fun_l5_n910(x)
+ else
+ fun_l5_n97(x)
+ end
+end
+
+def fun_l4_n983(x)
+ if (x < 1)
+ fun_l5_n551(x)
+ else
+ fun_l5_n429(x)
+ end
+end
+
+def fun_l4_n984(x)
+ if (x < 1)
+ fun_l5_n304(x)
+ else
+ fun_l5_n192(x)
+ end
+end
+
+def fun_l4_n985(x)
+ if (x < 1)
+ fun_l5_n696(x)
+ else
+ fun_l5_n124(x)
+ end
+end
+
+def fun_l4_n986(x)
+ if (x < 1)
+ fun_l5_n603(x)
+ else
+ fun_l5_n967(x)
+ end
+end
+
+def fun_l4_n987(x)
+ if (x < 1)
+ fun_l5_n317(x)
+ else
+ fun_l5_n785(x)
+ end
+end
+
+def fun_l4_n988(x)
+ if (x < 1)
+ fun_l5_n762(x)
+ else
+ fun_l5_n999(x)
+ end
+end
+
+def fun_l4_n989(x)
+ if (x < 1)
+ fun_l5_n61(x)
+ else
+ fun_l5_n474(x)
+ end
+end
+
+def fun_l4_n990(x)
+ if (x < 1)
+ fun_l5_n465(x)
+ else
+ fun_l5_n878(x)
+ end
+end
+
+def fun_l4_n991(x)
+ if (x < 1)
+ fun_l5_n907(x)
+ else
+ fun_l5_n259(x)
+ end
+end
+
+def fun_l4_n992(x)
+ if (x < 1)
+ fun_l5_n594(x)
+ else
+ fun_l5_n378(x)
+ end
+end
+
+def fun_l4_n993(x)
+ if (x < 1)
+ fun_l5_n202(x)
+ else
+ fun_l5_n490(x)
+ end
+end
+
+def fun_l4_n994(x)
+ if (x < 1)
+ fun_l5_n105(x)
+ else
+ fun_l5_n675(x)
+ end
+end
+
+def fun_l4_n995(x)
+ if (x < 1)
+ fun_l5_n99(x)
+ else
+ fun_l5_n21(x)
+ end
+end
+
+def fun_l4_n996(x)
+ if (x < 1)
+ fun_l5_n831(x)
+ else
+ fun_l5_n692(x)
+ end
+end
+
+def fun_l4_n997(x)
+ if (x < 1)
+ fun_l5_n186(x)
+ else
+ fun_l5_n427(x)
+ end
+end
+
+def fun_l4_n998(x)
+ if (x < 1)
+ fun_l5_n597(x)
+ else
+ fun_l5_n978(x)
+ end
+end
+
+def fun_l4_n999(x)
+ if (x < 1)
+ fun_l5_n537(x)
+ else
+ fun_l5_n952(x)
+ end
+end
+
+def fun_l5_n0(x)
+ if (x < 1)
+ fun_l6_n104(x)
+ else
+ fun_l6_n249(x)
+ end
+end
+
+def fun_l5_n1(x)
+ if (x < 1)
+ fun_l6_n260(x)
+ else
+ fun_l6_n782(x)
+ end
+end
+
+def fun_l5_n2(x)
+ if (x < 1)
+ fun_l6_n974(x)
+ else
+ fun_l6_n301(x)
+ end
+end
+
+def fun_l5_n3(x)
+ if (x < 1)
+ fun_l6_n883(x)
+ else
+ fun_l6_n149(x)
+ end
+end
+
+def fun_l5_n4(x)
+ if (x < 1)
+ fun_l6_n134(x)
+ else
+ fun_l6_n111(x)
+ end
+end
+
+def fun_l5_n5(x)
+ if (x < 1)
+ fun_l6_n573(x)
+ else
+ fun_l6_n273(x)
+ end
+end
+
+def fun_l5_n6(x)
+ if (x < 1)
+ fun_l6_n221(x)
+ else
+ fun_l6_n843(x)
+ end
+end
+
+def fun_l5_n7(x)
+ if (x < 1)
+ fun_l6_n572(x)
+ else
+ fun_l6_n435(x)
+ end
+end
+
+def fun_l5_n8(x)
+ if (x < 1)
+ fun_l6_n43(x)
+ else
+ fun_l6_n598(x)
+ end
+end
+
+def fun_l5_n9(x)
+ if (x < 1)
+ fun_l6_n352(x)
+ else
+ fun_l6_n894(x)
+ end
+end
+
+def fun_l5_n10(x)
+ if (x < 1)
+ fun_l6_n161(x)
+ else
+ fun_l6_n654(x)
+ end
+end
+
+def fun_l5_n11(x)
+ if (x < 1)
+ fun_l6_n432(x)
+ else
+ fun_l6_n825(x)
+ end
+end
+
+def fun_l5_n12(x)
+ if (x < 1)
+ fun_l6_n863(x)
+ else
+ fun_l6_n940(x)
+ end
+end
+
+def fun_l5_n13(x)
+ if (x < 1)
+ fun_l6_n478(x)
+ else
+ fun_l6_n193(x)
+ end
+end
+
+def fun_l5_n14(x)
+ if (x < 1)
+ fun_l6_n327(x)
+ else
+ fun_l6_n808(x)
+ end
+end
+
+def fun_l5_n15(x)
+ if (x < 1)
+ fun_l6_n86(x)
+ else
+ fun_l6_n951(x)
+ end
+end
+
+def fun_l5_n16(x)
+ if (x < 1)
+ fun_l6_n492(x)
+ else
+ fun_l6_n704(x)
+ end
+end
+
+def fun_l5_n17(x)
+ if (x < 1)
+ fun_l6_n196(x)
+ else
+ fun_l6_n970(x)
+ end
+end
+
+def fun_l5_n18(x)
+ if (x < 1)
+ fun_l6_n325(x)
+ else
+ fun_l6_n30(x)
+ end
+end
+
+def fun_l5_n19(x)
+ if (x < 1)
+ fun_l6_n559(x)
+ else
+ fun_l6_n269(x)
+ end
+end
+
+def fun_l5_n20(x)
+ if (x < 1)
+ fun_l6_n716(x)
+ else
+ fun_l6_n783(x)
+ end
+end
+
+def fun_l5_n21(x)
+ if (x < 1)
+ fun_l6_n978(x)
+ else
+ fun_l6_n306(x)
+ end
+end
+
+def fun_l5_n22(x)
+ if (x < 1)
+ fun_l6_n220(x)
+ else
+ fun_l6_n823(x)
+ end
+end
+
+def fun_l5_n23(x)
+ if (x < 1)
+ fun_l6_n675(x)
+ else
+ fun_l6_n684(x)
+ end
+end
+
+def fun_l5_n24(x)
+ if (x < 1)
+ fun_l6_n851(x)
+ else
+ fun_l6_n450(x)
+ end
+end
+
+def fun_l5_n25(x)
+ if (x < 1)
+ fun_l6_n745(x)
+ else
+ fun_l6_n370(x)
+ end
+end
+
+def fun_l5_n26(x)
+ if (x < 1)
+ fun_l6_n431(x)
+ else
+ fun_l6_n130(x)
+ end
+end
+
+def fun_l5_n27(x)
+ if (x < 1)
+ fun_l6_n105(x)
+ else
+ fun_l6_n205(x)
+ end
+end
+
+def fun_l5_n28(x)
+ if (x < 1)
+ fun_l6_n718(x)
+ else
+ fun_l6_n742(x)
+ end
+end
+
+def fun_l5_n29(x)
+ if (x < 1)
+ fun_l6_n977(x)
+ else
+ fun_l6_n63(x)
+ end
+end
+
+def fun_l5_n30(x)
+ if (x < 1)
+ fun_l6_n902(x)
+ else
+ fun_l6_n471(x)
+ end
+end
+
+def fun_l5_n31(x)
+ if (x < 1)
+ fun_l6_n76(x)
+ else
+ fun_l6_n960(x)
+ end
+end
+
+def fun_l5_n32(x)
+ if (x < 1)
+ fun_l6_n75(x)
+ else
+ fun_l6_n640(x)
+ end
+end
+
+def fun_l5_n33(x)
+ if (x < 1)
+ fun_l6_n631(x)
+ else
+ fun_l6_n769(x)
+ end
+end
+
+def fun_l5_n34(x)
+ if (x < 1)
+ fun_l6_n201(x)
+ else
+ fun_l6_n771(x)
+ end
+end
+
+def fun_l5_n35(x)
+ if (x < 1)
+ fun_l6_n734(x)
+ else
+ fun_l6_n370(x)
+ end
+end
+
+def fun_l5_n36(x)
+ if (x < 1)
+ fun_l6_n490(x)
+ else
+ fun_l6_n994(x)
+ end
+end
+
+def fun_l5_n37(x)
+ if (x < 1)
+ fun_l6_n566(x)
+ else
+ fun_l6_n392(x)
+ end
+end
+
+def fun_l5_n38(x)
+ if (x < 1)
+ fun_l6_n120(x)
+ else
+ fun_l6_n774(x)
+ end
+end
+
+def fun_l5_n39(x)
+ if (x < 1)
+ fun_l6_n402(x)
+ else
+ fun_l6_n572(x)
+ end
+end
+
+def fun_l5_n40(x)
+ if (x < 1)
+ fun_l6_n911(x)
+ else
+ fun_l6_n968(x)
+ end
+end
+
+def fun_l5_n41(x)
+ if (x < 1)
+ fun_l6_n200(x)
+ else
+ fun_l6_n656(x)
+ end
+end
+
+def fun_l5_n42(x)
+ if (x < 1)
+ fun_l6_n59(x)
+ else
+ fun_l6_n426(x)
+ end
+end
+
+def fun_l5_n43(x)
+ if (x < 1)
+ fun_l6_n650(x)
+ else
+ fun_l6_n932(x)
+ end
+end
+
+def fun_l5_n44(x)
+ if (x < 1)
+ fun_l6_n365(x)
+ else
+ fun_l6_n755(x)
+ end
+end
+
+def fun_l5_n45(x)
+ if (x < 1)
+ fun_l6_n738(x)
+ else
+ fun_l6_n432(x)
+ end
+end
+
+def fun_l5_n46(x)
+ if (x < 1)
+ fun_l6_n82(x)
+ else
+ fun_l6_n484(x)
+ end
+end
+
+def fun_l5_n47(x)
+ if (x < 1)
+ fun_l6_n64(x)
+ else
+ fun_l6_n610(x)
+ end
+end
+
+def fun_l5_n48(x)
+ if (x < 1)
+ fun_l6_n875(x)
+ else
+ fun_l6_n464(x)
+ end
+end
+
+def fun_l5_n49(x)
+ if (x < 1)
+ fun_l6_n798(x)
+ else
+ fun_l6_n57(x)
+ end
+end
+
+def fun_l5_n50(x)
+ if (x < 1)
+ fun_l6_n76(x)
+ else
+ fun_l6_n462(x)
+ end
+end
+
+def fun_l5_n51(x)
+ if (x < 1)
+ fun_l6_n225(x)
+ else
+ fun_l6_n526(x)
+ end
+end
+
+def fun_l5_n52(x)
+ if (x < 1)
+ fun_l6_n388(x)
+ else
+ fun_l6_n167(x)
+ end
+end
+
+def fun_l5_n53(x)
+ if (x < 1)
+ fun_l6_n270(x)
+ else
+ fun_l6_n821(x)
+ end
+end
+
+def fun_l5_n54(x)
+ if (x < 1)
+ fun_l6_n790(x)
+ else
+ fun_l6_n95(x)
+ end
+end
+
+def fun_l5_n55(x)
+ if (x < 1)
+ fun_l6_n38(x)
+ else
+ fun_l6_n32(x)
+ end
+end
+
+def fun_l5_n56(x)
+ if (x < 1)
+ fun_l6_n400(x)
+ else
+ fun_l6_n513(x)
+ end
+end
+
+def fun_l5_n57(x)
+ if (x < 1)
+ fun_l6_n251(x)
+ else
+ fun_l6_n16(x)
+ end
+end
+
+def fun_l5_n58(x)
+ if (x < 1)
+ fun_l6_n303(x)
+ else
+ fun_l6_n858(x)
+ end
+end
+
+def fun_l5_n59(x)
+ if (x < 1)
+ fun_l6_n173(x)
+ else
+ fun_l6_n38(x)
+ end
+end
+
+def fun_l5_n60(x)
+ if (x < 1)
+ fun_l6_n466(x)
+ else
+ fun_l6_n64(x)
+ end
+end
+
+def fun_l5_n61(x)
+ if (x < 1)
+ fun_l6_n687(x)
+ else
+ fun_l6_n208(x)
+ end
+end
+
+def fun_l5_n62(x)
+ if (x < 1)
+ fun_l6_n891(x)
+ else
+ fun_l6_n789(x)
+ end
+end
+
+def fun_l5_n63(x)
+ if (x < 1)
+ fun_l6_n664(x)
+ else
+ fun_l6_n133(x)
+ end
+end
+
+def fun_l5_n64(x)
+ if (x < 1)
+ fun_l6_n121(x)
+ else
+ fun_l6_n989(x)
+ end
+end
+
+def fun_l5_n65(x)
+ if (x < 1)
+ fun_l6_n411(x)
+ else
+ fun_l6_n264(x)
+ end
+end
+
+def fun_l5_n66(x)
+ if (x < 1)
+ fun_l6_n528(x)
+ else
+ fun_l6_n662(x)
+ end
+end
+
+def fun_l5_n67(x)
+ if (x < 1)
+ fun_l6_n824(x)
+ else
+ fun_l6_n410(x)
+ end
+end
+
+def fun_l5_n68(x)
+ if (x < 1)
+ fun_l6_n29(x)
+ else
+ fun_l6_n946(x)
+ end
+end
+
+def fun_l5_n69(x)
+ if (x < 1)
+ fun_l6_n566(x)
+ else
+ fun_l6_n797(x)
+ end
+end
+
+def fun_l5_n70(x)
+ if (x < 1)
+ fun_l6_n816(x)
+ else
+ fun_l6_n112(x)
+ end
+end
+
+def fun_l5_n71(x)
+ if (x < 1)
+ fun_l6_n920(x)
+ else
+ fun_l6_n44(x)
+ end
+end
+
+def fun_l5_n72(x)
+ if (x < 1)
+ fun_l6_n725(x)
+ else
+ fun_l6_n113(x)
+ end
+end
+
+def fun_l5_n73(x)
+ if (x < 1)
+ fun_l6_n406(x)
+ else
+ fun_l6_n555(x)
+ end
+end
+
+def fun_l5_n74(x)
+ if (x < 1)
+ fun_l6_n527(x)
+ else
+ fun_l6_n991(x)
+ end
+end
+
+def fun_l5_n75(x)
+ if (x < 1)
+ fun_l6_n46(x)
+ else
+ fun_l6_n440(x)
+ end
+end
+
+def fun_l5_n76(x)
+ if (x < 1)
+ fun_l6_n242(x)
+ else
+ fun_l6_n488(x)
+ end
+end
+
+def fun_l5_n77(x)
+ if (x < 1)
+ fun_l6_n211(x)
+ else
+ fun_l6_n760(x)
+ end
+end
+
+def fun_l5_n78(x)
+ if (x < 1)
+ fun_l6_n821(x)
+ else
+ fun_l6_n653(x)
+ end
+end
+
+def fun_l5_n79(x)
+ if (x < 1)
+ fun_l6_n559(x)
+ else
+ fun_l6_n425(x)
+ end
+end
+
+def fun_l5_n80(x)
+ if (x < 1)
+ fun_l6_n792(x)
+ else
+ fun_l6_n813(x)
+ end
+end
+
+def fun_l5_n81(x)
+ if (x < 1)
+ fun_l6_n463(x)
+ else
+ fun_l6_n454(x)
+ end
+end
+
+def fun_l5_n82(x)
+ if (x < 1)
+ fun_l6_n731(x)
+ else
+ fun_l6_n718(x)
+ end
+end
+
+def fun_l5_n83(x)
+ if (x < 1)
+ fun_l6_n377(x)
+ else
+ fun_l6_n137(x)
+ end
+end
+
+def fun_l5_n84(x)
+ if (x < 1)
+ fun_l6_n829(x)
+ else
+ fun_l6_n77(x)
+ end
+end
+
+def fun_l5_n85(x)
+ if (x < 1)
+ fun_l6_n714(x)
+ else
+ fun_l6_n682(x)
+ end
+end
+
+def fun_l5_n86(x)
+ if (x < 1)
+ fun_l6_n47(x)
+ else
+ fun_l6_n527(x)
+ end
+end
+
+def fun_l5_n87(x)
+ if (x < 1)
+ fun_l6_n976(x)
+ else
+ fun_l6_n18(x)
+ end
+end
+
+def fun_l5_n88(x)
+ if (x < 1)
+ fun_l6_n710(x)
+ else
+ fun_l6_n998(x)
+ end
+end
+
+def fun_l5_n89(x)
+ if (x < 1)
+ fun_l6_n222(x)
+ else
+ fun_l6_n97(x)
+ end
+end
+
+def fun_l5_n90(x)
+ if (x < 1)
+ fun_l6_n862(x)
+ else
+ fun_l6_n627(x)
+ end
+end
+
+def fun_l5_n91(x)
+ if (x < 1)
+ fun_l6_n642(x)
+ else
+ fun_l6_n720(x)
+ end
+end
+
+def fun_l5_n92(x)
+ if (x < 1)
+ fun_l6_n444(x)
+ else
+ fun_l6_n506(x)
+ end
+end
+
+def fun_l5_n93(x)
+ if (x < 1)
+ fun_l6_n776(x)
+ else
+ fun_l6_n879(x)
+ end
+end
+
+def fun_l5_n94(x)
+ if (x < 1)
+ fun_l6_n629(x)
+ else
+ fun_l6_n322(x)
+ end
+end
+
+def fun_l5_n95(x)
+ if (x < 1)
+ fun_l6_n119(x)
+ else
+ fun_l6_n134(x)
+ end
+end
+
+def fun_l5_n96(x)
+ if (x < 1)
+ fun_l6_n385(x)
+ else
+ fun_l6_n343(x)
+ end
+end
+
+def fun_l5_n97(x)
+ if (x < 1)
+ fun_l6_n110(x)
+ else
+ fun_l6_n323(x)
+ end
+end
+
+def fun_l5_n98(x)
+ if (x < 1)
+ fun_l6_n547(x)
+ else
+ fun_l6_n762(x)
+ end
+end
+
+def fun_l5_n99(x)
+ if (x < 1)
+ fun_l6_n811(x)
+ else
+ fun_l6_n404(x)
+ end
+end
+
+def fun_l5_n100(x)
+ if (x < 1)
+ fun_l6_n893(x)
+ else
+ fun_l6_n120(x)
+ end
+end
+
+def fun_l5_n101(x)
+ if (x < 1)
+ fun_l6_n755(x)
+ else
+ fun_l6_n611(x)
+ end
+end
+
+def fun_l5_n102(x)
+ if (x < 1)
+ fun_l6_n65(x)
+ else
+ fun_l6_n897(x)
+ end
+end
+
+def fun_l5_n103(x)
+ if (x < 1)
+ fun_l6_n629(x)
+ else
+ fun_l6_n214(x)
+ end
+end
+
+def fun_l5_n104(x)
+ if (x < 1)
+ fun_l6_n211(x)
+ else
+ fun_l6_n179(x)
+ end
+end
+
+def fun_l5_n105(x)
+ if (x < 1)
+ fun_l6_n650(x)
+ else
+ fun_l6_n348(x)
+ end
+end
+
+def fun_l5_n106(x)
+ if (x < 1)
+ fun_l6_n966(x)
+ else
+ fun_l6_n654(x)
+ end
+end
+
+def fun_l5_n107(x)
+ if (x < 1)
+ fun_l6_n596(x)
+ else
+ fun_l6_n668(x)
+ end
+end
+
+def fun_l5_n108(x)
+ if (x < 1)
+ fun_l6_n392(x)
+ else
+ fun_l6_n629(x)
+ end
+end
+
+def fun_l5_n109(x)
+ if (x < 1)
+ fun_l6_n96(x)
+ else
+ fun_l6_n578(x)
+ end
+end
+
+def fun_l5_n110(x)
+ if (x < 1)
+ fun_l6_n88(x)
+ else
+ fun_l6_n214(x)
+ end
+end
+
+def fun_l5_n111(x)
+ if (x < 1)
+ fun_l6_n622(x)
+ else
+ fun_l6_n180(x)
+ end
+end
+
+def fun_l5_n112(x)
+ if (x < 1)
+ fun_l6_n100(x)
+ else
+ fun_l6_n373(x)
+ end
+end
+
+def fun_l5_n113(x)
+ if (x < 1)
+ fun_l6_n464(x)
+ else
+ fun_l6_n30(x)
+ end
+end
+
+def fun_l5_n114(x)
+ if (x < 1)
+ fun_l6_n703(x)
+ else
+ fun_l6_n116(x)
+ end
+end
+
+def fun_l5_n115(x)
+ if (x < 1)
+ fun_l6_n63(x)
+ else
+ fun_l6_n260(x)
+ end
+end
+
+def fun_l5_n116(x)
+ if (x < 1)
+ fun_l6_n935(x)
+ else
+ fun_l6_n951(x)
+ end
+end
+
+def fun_l5_n117(x)
+ if (x < 1)
+ fun_l6_n415(x)
+ else
+ fun_l6_n734(x)
+ end
+end
+
+def fun_l5_n118(x)
+ if (x < 1)
+ fun_l6_n873(x)
+ else
+ fun_l6_n163(x)
+ end
+end
+
+def fun_l5_n119(x)
+ if (x < 1)
+ fun_l6_n134(x)
+ else
+ fun_l6_n586(x)
+ end
+end
+
+def fun_l5_n120(x)
+ if (x < 1)
+ fun_l6_n793(x)
+ else
+ fun_l6_n197(x)
+ end
+end
+
+def fun_l5_n121(x)
+ if (x < 1)
+ fun_l6_n585(x)
+ else
+ fun_l6_n793(x)
+ end
+end
+
+def fun_l5_n122(x)
+ if (x < 1)
+ fun_l6_n10(x)
+ else
+ fun_l6_n12(x)
+ end
+end
+
+def fun_l5_n123(x)
+ if (x < 1)
+ fun_l6_n786(x)
+ else
+ fun_l6_n386(x)
+ end
+end
+
+def fun_l5_n124(x)
+ if (x < 1)
+ fun_l6_n891(x)
+ else
+ fun_l6_n903(x)
+ end
+end
+
+def fun_l5_n125(x)
+ if (x < 1)
+ fun_l6_n389(x)
+ else
+ fun_l6_n154(x)
+ end
+end
+
+def fun_l5_n126(x)
+ if (x < 1)
+ fun_l6_n214(x)
+ else
+ fun_l6_n754(x)
+ end
+end
+
+def fun_l5_n127(x)
+ if (x < 1)
+ fun_l6_n646(x)
+ else
+ fun_l6_n661(x)
+ end
+end
+
+def fun_l5_n128(x)
+ if (x < 1)
+ fun_l6_n662(x)
+ else
+ fun_l6_n527(x)
+ end
+end
+
+def fun_l5_n129(x)
+ if (x < 1)
+ fun_l6_n329(x)
+ else
+ fun_l6_n310(x)
+ end
+end
+
+def fun_l5_n130(x)
+ if (x < 1)
+ fun_l6_n352(x)
+ else
+ fun_l6_n820(x)
+ end
+end
+
+def fun_l5_n131(x)
+ if (x < 1)
+ fun_l6_n551(x)
+ else
+ fun_l6_n454(x)
+ end
+end
+
+def fun_l5_n132(x)
+ if (x < 1)
+ fun_l6_n586(x)
+ else
+ fun_l6_n340(x)
+ end
+end
+
+def fun_l5_n133(x)
+ if (x < 1)
+ fun_l6_n111(x)
+ else
+ fun_l6_n188(x)
+ end
+end
+
+def fun_l5_n134(x)
+ if (x < 1)
+ fun_l6_n261(x)
+ else
+ fun_l6_n464(x)
+ end
+end
+
+def fun_l5_n135(x)
+ if (x < 1)
+ fun_l6_n540(x)
+ else
+ fun_l6_n854(x)
+ end
+end
+
+def fun_l5_n136(x)
+ if (x < 1)
+ fun_l6_n120(x)
+ else
+ fun_l6_n230(x)
+ end
+end
+
+def fun_l5_n137(x)
+ if (x < 1)
+ fun_l6_n837(x)
+ else
+ fun_l6_n606(x)
+ end
+end
+
+def fun_l5_n138(x)
+ if (x < 1)
+ fun_l6_n663(x)
+ else
+ fun_l6_n195(x)
+ end
+end
+
+def fun_l5_n139(x)
+ if (x < 1)
+ fun_l6_n572(x)
+ else
+ fun_l6_n768(x)
+ end
+end
+
+def fun_l5_n140(x)
+ if (x < 1)
+ fun_l6_n747(x)
+ else
+ fun_l6_n304(x)
+ end
+end
+
+def fun_l5_n141(x)
+ if (x < 1)
+ fun_l6_n927(x)
+ else
+ fun_l6_n122(x)
+ end
+end
+
+def fun_l5_n142(x)
+ if (x < 1)
+ fun_l6_n311(x)
+ else
+ fun_l6_n920(x)
+ end
+end
+
+def fun_l5_n143(x)
+ if (x < 1)
+ fun_l6_n887(x)
+ else
+ fun_l6_n598(x)
+ end
+end
+
+def fun_l5_n144(x)
+ if (x < 1)
+ fun_l6_n289(x)
+ else
+ fun_l6_n894(x)
+ end
+end
+
+def fun_l5_n145(x)
+ if (x < 1)
+ fun_l6_n333(x)
+ else
+ fun_l6_n385(x)
+ end
+end
+
+def fun_l5_n146(x)
+ if (x < 1)
+ fun_l6_n926(x)
+ else
+ fun_l6_n310(x)
+ end
+end
+
+def fun_l5_n147(x)
+ if (x < 1)
+ fun_l6_n754(x)
+ else
+ fun_l6_n354(x)
+ end
+end
+
+def fun_l5_n148(x)
+ if (x < 1)
+ fun_l6_n800(x)
+ else
+ fun_l6_n634(x)
+ end
+end
+
+def fun_l5_n149(x)
+ if (x < 1)
+ fun_l6_n5(x)
+ else
+ fun_l6_n67(x)
+ end
+end
+
+def fun_l5_n150(x)
+ if (x < 1)
+ fun_l6_n766(x)
+ else
+ fun_l6_n237(x)
+ end
+end
+
+def fun_l5_n151(x)
+ if (x < 1)
+ fun_l6_n277(x)
+ else
+ fun_l6_n692(x)
+ end
+end
+
+def fun_l5_n152(x)
+ if (x < 1)
+ fun_l6_n328(x)
+ else
+ fun_l6_n216(x)
+ end
+end
+
+def fun_l5_n153(x)
+ if (x < 1)
+ fun_l6_n328(x)
+ else
+ fun_l6_n165(x)
+ end
+end
+
+def fun_l5_n154(x)
+ if (x < 1)
+ fun_l6_n884(x)
+ else
+ fun_l6_n811(x)
+ end
+end
+
+def fun_l5_n155(x)
+ if (x < 1)
+ fun_l6_n376(x)
+ else
+ fun_l6_n188(x)
+ end
+end
+
+def fun_l5_n156(x)
+ if (x < 1)
+ fun_l6_n276(x)
+ else
+ fun_l6_n19(x)
+ end
+end
+
+def fun_l5_n157(x)
+ if (x < 1)
+ fun_l6_n443(x)
+ else
+ fun_l6_n815(x)
+ end
+end
+
+def fun_l5_n158(x)
+ if (x < 1)
+ fun_l6_n610(x)
+ else
+ fun_l6_n341(x)
+ end
+end
+
+def fun_l5_n159(x)
+ if (x < 1)
+ fun_l6_n147(x)
+ else
+ fun_l6_n289(x)
+ end
+end
+
+def fun_l5_n160(x)
+ if (x < 1)
+ fun_l6_n258(x)
+ else
+ fun_l6_n683(x)
+ end
+end
+
+def fun_l5_n161(x)
+ if (x < 1)
+ fun_l6_n544(x)
+ else
+ fun_l6_n621(x)
+ end
+end
+
+def fun_l5_n162(x)
+ if (x < 1)
+ fun_l6_n119(x)
+ else
+ fun_l6_n336(x)
+ end
+end
+
+def fun_l5_n163(x)
+ if (x < 1)
+ fun_l6_n297(x)
+ else
+ fun_l6_n915(x)
+ end
+end
+
+def fun_l5_n164(x)
+ if (x < 1)
+ fun_l6_n782(x)
+ else
+ fun_l6_n499(x)
+ end
+end
+
+def fun_l5_n165(x)
+ if (x < 1)
+ fun_l6_n660(x)
+ else
+ fun_l6_n227(x)
+ end
+end
+
+def fun_l5_n166(x)
+ if (x < 1)
+ fun_l6_n820(x)
+ else
+ fun_l6_n822(x)
+ end
+end
+
+def fun_l5_n167(x)
+ if (x < 1)
+ fun_l6_n878(x)
+ else
+ fun_l6_n642(x)
+ end
+end
+
+def fun_l5_n168(x)
+ if (x < 1)
+ fun_l6_n123(x)
+ else
+ fun_l6_n451(x)
+ end
+end
+
+def fun_l5_n169(x)
+ if (x < 1)
+ fun_l6_n741(x)
+ else
+ fun_l6_n35(x)
+ end
+end
+
+def fun_l5_n170(x)
+ if (x < 1)
+ fun_l6_n522(x)
+ else
+ fun_l6_n546(x)
+ end
+end
+
+def fun_l5_n171(x)
+ if (x < 1)
+ fun_l6_n555(x)
+ else
+ fun_l6_n667(x)
+ end
+end
+
+def fun_l5_n172(x)
+ if (x < 1)
+ fun_l6_n760(x)
+ else
+ fun_l6_n292(x)
+ end
+end
+
+def fun_l5_n173(x)
+ if (x < 1)
+ fun_l6_n375(x)
+ else
+ fun_l6_n907(x)
+ end
+end
+
+def fun_l5_n174(x)
+ if (x < 1)
+ fun_l6_n382(x)
+ else
+ fun_l6_n693(x)
+ end
+end
+
+def fun_l5_n175(x)
+ if (x < 1)
+ fun_l6_n728(x)
+ else
+ fun_l6_n378(x)
+ end
+end
+
+def fun_l5_n176(x)
+ if (x < 1)
+ fun_l6_n79(x)
+ else
+ fun_l6_n402(x)
+ end
+end
+
+def fun_l5_n177(x)
+ if (x < 1)
+ fun_l6_n444(x)
+ else
+ fun_l6_n500(x)
+ end
+end
+
+def fun_l5_n178(x)
+ if (x < 1)
+ fun_l6_n535(x)
+ else
+ fun_l6_n754(x)
+ end
+end
+
+def fun_l5_n179(x)
+ if (x < 1)
+ fun_l6_n831(x)
+ else
+ fun_l6_n206(x)
+ end
+end
+
+def fun_l5_n180(x)
+ if (x < 1)
+ fun_l6_n878(x)
+ else
+ fun_l6_n715(x)
+ end
+end
+
+def fun_l5_n181(x)
+ if (x < 1)
+ fun_l6_n433(x)
+ else
+ fun_l6_n955(x)
+ end
+end
+
+def fun_l5_n182(x)
+ if (x < 1)
+ fun_l6_n611(x)
+ else
+ fun_l6_n258(x)
+ end
+end
+
+def fun_l5_n183(x)
+ if (x < 1)
+ fun_l6_n618(x)
+ else
+ fun_l6_n29(x)
+ end
+end
+
+def fun_l5_n184(x)
+ if (x < 1)
+ fun_l6_n838(x)
+ else
+ fun_l6_n918(x)
+ end
+end
+
+def fun_l5_n185(x)
+ if (x < 1)
+ fun_l6_n307(x)
+ else
+ fun_l6_n811(x)
+ end
+end
+
+def fun_l5_n186(x)
+ if (x < 1)
+ fun_l6_n564(x)
+ else
+ fun_l6_n73(x)
+ end
+end
+
+def fun_l5_n187(x)
+ if (x < 1)
+ fun_l6_n871(x)
+ else
+ fun_l6_n669(x)
+ end
+end
+
+def fun_l5_n188(x)
+ if (x < 1)
+ fun_l6_n546(x)
+ else
+ fun_l6_n41(x)
+ end
+end
+
+def fun_l5_n189(x)
+ if (x < 1)
+ fun_l6_n312(x)
+ else
+ fun_l6_n998(x)
+ end
+end
+
+def fun_l5_n190(x)
+ if (x < 1)
+ fun_l6_n519(x)
+ else
+ fun_l6_n275(x)
+ end
+end
+
+def fun_l5_n191(x)
+ if (x < 1)
+ fun_l6_n525(x)
+ else
+ fun_l6_n228(x)
+ end
+end
+
+def fun_l5_n192(x)
+ if (x < 1)
+ fun_l6_n115(x)
+ else
+ fun_l6_n790(x)
+ end
+end
+
+def fun_l5_n193(x)
+ if (x < 1)
+ fun_l6_n976(x)
+ else
+ fun_l6_n219(x)
+ end
+end
+
+def fun_l5_n194(x)
+ if (x < 1)
+ fun_l6_n785(x)
+ else
+ fun_l6_n834(x)
+ end
+end
+
+def fun_l5_n195(x)
+ if (x < 1)
+ fun_l6_n238(x)
+ else
+ fun_l6_n471(x)
+ end
+end
+
+def fun_l5_n196(x)
+ if (x < 1)
+ fun_l6_n275(x)
+ else
+ fun_l6_n218(x)
+ end
+end
+
+def fun_l5_n197(x)
+ if (x < 1)
+ fun_l6_n590(x)
+ else
+ fun_l6_n458(x)
+ end
+end
+
+def fun_l5_n198(x)
+ if (x < 1)
+ fun_l6_n498(x)
+ else
+ fun_l6_n906(x)
+ end
+end
+
+def fun_l5_n199(x)
+ if (x < 1)
+ fun_l6_n547(x)
+ else
+ fun_l6_n885(x)
+ end
+end
+
+def fun_l5_n200(x)
+ if (x < 1)
+ fun_l6_n631(x)
+ else
+ fun_l6_n0(x)
+ end
+end
+
+def fun_l5_n201(x)
+ if (x < 1)
+ fun_l6_n31(x)
+ else
+ fun_l6_n729(x)
+ end
+end
+
+def fun_l5_n202(x)
+ if (x < 1)
+ fun_l6_n303(x)
+ else
+ fun_l6_n847(x)
+ end
+end
+
+def fun_l5_n203(x)
+ if (x < 1)
+ fun_l6_n912(x)
+ else
+ fun_l6_n346(x)
+ end
+end
+
+def fun_l5_n204(x)
+ if (x < 1)
+ fun_l6_n153(x)
+ else
+ fun_l6_n831(x)
+ end
+end
+
+def fun_l5_n205(x)
+ if (x < 1)
+ fun_l6_n424(x)
+ else
+ fun_l6_n836(x)
+ end
+end
+
+def fun_l5_n206(x)
+ if (x < 1)
+ fun_l6_n214(x)
+ else
+ fun_l6_n207(x)
+ end
+end
+
+def fun_l5_n207(x)
+ if (x < 1)
+ fun_l6_n362(x)
+ else
+ fun_l6_n241(x)
+ end
+end
+
+def fun_l5_n208(x)
+ if (x < 1)
+ fun_l6_n796(x)
+ else
+ fun_l6_n763(x)
+ end
+end
+
+def fun_l5_n209(x)
+ if (x < 1)
+ fun_l6_n523(x)
+ else
+ fun_l6_n998(x)
+ end
+end
+
+def fun_l5_n210(x)
+ if (x < 1)
+ fun_l6_n326(x)
+ else
+ fun_l6_n755(x)
+ end
+end
+
+def fun_l5_n211(x)
+ if (x < 1)
+ fun_l6_n345(x)
+ else
+ fun_l6_n747(x)
+ end
+end
+
+def fun_l5_n212(x)
+ if (x < 1)
+ fun_l6_n631(x)
+ else
+ fun_l6_n576(x)
+ end
+end
+
+def fun_l5_n213(x)
+ if (x < 1)
+ fun_l6_n713(x)
+ else
+ fun_l6_n678(x)
+ end
+end
+
+def fun_l5_n214(x)
+ if (x < 1)
+ fun_l6_n470(x)
+ else
+ fun_l6_n877(x)
+ end
+end
+
+def fun_l5_n215(x)
+ if (x < 1)
+ fun_l6_n78(x)
+ else
+ fun_l6_n315(x)
+ end
+end
+
+def fun_l5_n216(x)
+ if (x < 1)
+ fun_l6_n281(x)
+ else
+ fun_l6_n872(x)
+ end
+end
+
+def fun_l5_n217(x)
+ if (x < 1)
+ fun_l6_n200(x)
+ else
+ fun_l6_n323(x)
+ end
+end
+
+def fun_l5_n218(x)
+ if (x < 1)
+ fun_l6_n483(x)
+ else
+ fun_l6_n938(x)
+ end
+end
+
+def fun_l5_n219(x)
+ if (x < 1)
+ fun_l6_n102(x)
+ else
+ fun_l6_n690(x)
+ end
+end
+
+def fun_l5_n220(x)
+ if (x < 1)
+ fun_l6_n740(x)
+ else
+ fun_l6_n684(x)
+ end
+end
+
+def fun_l5_n221(x)
+ if (x < 1)
+ fun_l6_n366(x)
+ else
+ fun_l6_n138(x)
+ end
+end
+
+def fun_l5_n222(x)
+ if (x < 1)
+ fun_l6_n306(x)
+ else
+ fun_l6_n874(x)
+ end
+end
+
+def fun_l5_n223(x)
+ if (x < 1)
+ fun_l6_n828(x)
+ else
+ fun_l6_n839(x)
+ end
+end
+
+def fun_l5_n224(x)
+ if (x < 1)
+ fun_l6_n739(x)
+ else
+ fun_l6_n569(x)
+ end
+end
+
+def fun_l5_n225(x)
+ if (x < 1)
+ fun_l6_n332(x)
+ else
+ fun_l6_n49(x)
+ end
+end
+
+def fun_l5_n226(x)
+ if (x < 1)
+ fun_l6_n783(x)
+ else
+ fun_l6_n20(x)
+ end
+end
+
+def fun_l5_n227(x)
+ if (x < 1)
+ fun_l6_n774(x)
+ else
+ fun_l6_n346(x)
+ end
+end
+
+def fun_l5_n228(x)
+ if (x < 1)
+ fun_l6_n637(x)
+ else
+ fun_l6_n302(x)
+ end
+end
+
+def fun_l5_n229(x)
+ if (x < 1)
+ fun_l6_n10(x)
+ else
+ fun_l6_n697(x)
+ end
+end
+
+def fun_l5_n230(x)
+ if (x < 1)
+ fun_l6_n804(x)
+ else
+ fun_l6_n141(x)
+ end
+end
+
+def fun_l5_n231(x)
+ if (x < 1)
+ fun_l6_n232(x)
+ else
+ fun_l6_n88(x)
+ end
+end
+
+def fun_l5_n232(x)
+ if (x < 1)
+ fun_l6_n248(x)
+ else
+ fun_l6_n862(x)
+ end
+end
+
+def fun_l5_n233(x)
+ if (x < 1)
+ fun_l6_n287(x)
+ else
+ fun_l6_n315(x)
+ end
+end
+
+def fun_l5_n234(x)
+ if (x < 1)
+ fun_l6_n543(x)
+ else
+ fun_l6_n182(x)
+ end
+end
+
+def fun_l5_n235(x)
+ if (x < 1)
+ fun_l6_n162(x)
+ else
+ fun_l6_n710(x)
+ end
+end
+
+def fun_l5_n236(x)
+ if (x < 1)
+ fun_l6_n879(x)
+ else
+ fun_l6_n262(x)
+ end
+end
+
+def fun_l5_n237(x)
+ if (x < 1)
+ fun_l6_n706(x)
+ else
+ fun_l6_n112(x)
+ end
+end
+
+def fun_l5_n238(x)
+ if (x < 1)
+ fun_l6_n578(x)
+ else
+ fun_l6_n792(x)
+ end
+end
+
+def fun_l5_n239(x)
+ if (x < 1)
+ fun_l6_n685(x)
+ else
+ fun_l6_n441(x)
+ end
+end
+
+def fun_l5_n240(x)
+ if (x < 1)
+ fun_l6_n706(x)
+ else
+ fun_l6_n737(x)
+ end
+end
+
+def fun_l5_n241(x)
+ if (x < 1)
+ fun_l6_n360(x)
+ else
+ fun_l6_n751(x)
+ end
+end
+
+def fun_l5_n242(x)
+ if (x < 1)
+ fun_l6_n823(x)
+ else
+ fun_l6_n888(x)
+ end
+end
+
+def fun_l5_n243(x)
+ if (x < 1)
+ fun_l6_n743(x)
+ else
+ fun_l6_n705(x)
+ end
+end
+
+def fun_l5_n244(x)
+ if (x < 1)
+ fun_l6_n340(x)
+ else
+ fun_l6_n541(x)
+ end
+end
+
+def fun_l5_n245(x)
+ if (x < 1)
+ fun_l6_n324(x)
+ else
+ fun_l6_n121(x)
+ end
+end
+
+def fun_l5_n246(x)
+ if (x < 1)
+ fun_l6_n241(x)
+ else
+ fun_l6_n584(x)
+ end
+end
+
+def fun_l5_n247(x)
+ if (x < 1)
+ fun_l6_n468(x)
+ else
+ fun_l6_n673(x)
+ end
+end
+
+def fun_l5_n248(x)
+ if (x < 1)
+ fun_l6_n595(x)
+ else
+ fun_l6_n537(x)
+ end
+end
+
+def fun_l5_n249(x)
+ if (x < 1)
+ fun_l6_n166(x)
+ else
+ fun_l6_n766(x)
+ end
+end
+
+def fun_l5_n250(x)
+ if (x < 1)
+ fun_l6_n322(x)
+ else
+ fun_l6_n904(x)
+ end
+end
+
+def fun_l5_n251(x)
+ if (x < 1)
+ fun_l6_n273(x)
+ else
+ fun_l6_n353(x)
+ end
+end
+
+def fun_l5_n252(x)
+ if (x < 1)
+ fun_l6_n990(x)
+ else
+ fun_l6_n360(x)
+ end
+end
+
+def fun_l5_n253(x)
+ if (x < 1)
+ fun_l6_n552(x)
+ else
+ fun_l6_n649(x)
+ end
+end
+
+def fun_l5_n254(x)
+ if (x < 1)
+ fun_l6_n917(x)
+ else
+ fun_l6_n803(x)
+ end
+end
+
+def fun_l5_n255(x)
+ if (x < 1)
+ fun_l6_n763(x)
+ else
+ fun_l6_n464(x)
+ end
+end
+
+def fun_l5_n256(x)
+ if (x < 1)
+ fun_l6_n577(x)
+ else
+ fun_l6_n70(x)
+ end
+end
+
+def fun_l5_n257(x)
+ if (x < 1)
+ fun_l6_n618(x)
+ else
+ fun_l6_n943(x)
+ end
+end
+
+def fun_l5_n258(x)
+ if (x < 1)
+ fun_l6_n683(x)
+ else
+ fun_l6_n761(x)
+ end
+end
+
+def fun_l5_n259(x)
+ if (x < 1)
+ fun_l6_n284(x)
+ else
+ fun_l6_n223(x)
+ end
+end
+
+def fun_l5_n260(x)
+ if (x < 1)
+ fun_l6_n189(x)
+ else
+ fun_l6_n455(x)
+ end
+end
+
+def fun_l5_n261(x)
+ if (x < 1)
+ fun_l6_n632(x)
+ else
+ fun_l6_n245(x)
+ end
+end
+
+def fun_l5_n262(x)
+ if (x < 1)
+ fun_l6_n940(x)
+ else
+ fun_l6_n38(x)
+ end
+end
+
+def fun_l5_n263(x)
+ if (x < 1)
+ fun_l6_n289(x)
+ else
+ fun_l6_n356(x)
+ end
+end
+
+def fun_l5_n264(x)
+ if (x < 1)
+ fun_l6_n268(x)
+ else
+ fun_l6_n412(x)
+ end
+end
+
+def fun_l5_n265(x)
+ if (x < 1)
+ fun_l6_n370(x)
+ else
+ fun_l6_n858(x)
+ end
+end
+
+def fun_l5_n266(x)
+ if (x < 1)
+ fun_l6_n523(x)
+ else
+ fun_l6_n809(x)
+ end
+end
+
+def fun_l5_n267(x)
+ if (x < 1)
+ fun_l6_n469(x)
+ else
+ fun_l6_n260(x)
+ end
+end
+
+def fun_l5_n268(x)
+ if (x < 1)
+ fun_l6_n442(x)
+ else
+ fun_l6_n738(x)
+ end
+end
+
+def fun_l5_n269(x)
+ if (x < 1)
+ fun_l6_n663(x)
+ else
+ fun_l6_n109(x)
+ end
+end
+
+def fun_l5_n270(x)
+ if (x < 1)
+ fun_l6_n302(x)
+ else
+ fun_l6_n664(x)
+ end
+end
+
+def fun_l5_n271(x)
+ if (x < 1)
+ fun_l6_n201(x)
+ else
+ fun_l6_n251(x)
+ end
+end
+
+def fun_l5_n272(x)
+ if (x < 1)
+ fun_l6_n776(x)
+ else
+ fun_l6_n903(x)
+ end
+end
+
+def fun_l5_n273(x)
+ if (x < 1)
+ fun_l6_n683(x)
+ else
+ fun_l6_n233(x)
+ end
+end
+
+def fun_l5_n274(x)
+ if (x < 1)
+ fun_l6_n530(x)
+ else
+ fun_l6_n487(x)
+ end
+end
+
+def fun_l5_n275(x)
+ if (x < 1)
+ fun_l6_n848(x)
+ else
+ fun_l6_n99(x)
+ end
+end
+
+def fun_l5_n276(x)
+ if (x < 1)
+ fun_l6_n126(x)
+ else
+ fun_l6_n914(x)
+ end
+end
+
+def fun_l5_n277(x)
+ if (x < 1)
+ fun_l6_n304(x)
+ else
+ fun_l6_n198(x)
+ end
+end
+
+def fun_l5_n278(x)
+ if (x < 1)
+ fun_l6_n47(x)
+ else
+ fun_l6_n179(x)
+ end
+end
+
+def fun_l5_n279(x)
+ if (x < 1)
+ fun_l6_n846(x)
+ else
+ fun_l6_n301(x)
+ end
+end
+
+def fun_l5_n280(x)
+ if (x < 1)
+ fun_l6_n576(x)
+ else
+ fun_l6_n561(x)
+ end
+end
+
+def fun_l5_n281(x)
+ if (x < 1)
+ fun_l6_n307(x)
+ else
+ fun_l6_n545(x)
+ end
+end
+
+def fun_l5_n282(x)
+ if (x < 1)
+ fun_l6_n434(x)
+ else
+ fun_l6_n669(x)
+ end
+end
+
+def fun_l5_n283(x)
+ if (x < 1)
+ fun_l6_n606(x)
+ else
+ fun_l6_n147(x)
+ end
+end
+
+def fun_l5_n284(x)
+ if (x < 1)
+ fun_l6_n212(x)
+ else
+ fun_l6_n504(x)
+ end
+end
+
+def fun_l5_n285(x)
+ if (x < 1)
+ fun_l6_n193(x)
+ else
+ fun_l6_n165(x)
+ end
+end
+
+def fun_l5_n286(x)
+ if (x < 1)
+ fun_l6_n569(x)
+ else
+ fun_l6_n100(x)
+ end
+end
+
+def fun_l5_n287(x)
+ if (x < 1)
+ fun_l6_n59(x)
+ else
+ fun_l6_n998(x)
+ end
+end
+
+def fun_l5_n288(x)
+ if (x < 1)
+ fun_l6_n544(x)
+ else
+ fun_l6_n923(x)
+ end
+end
+
+def fun_l5_n289(x)
+ if (x < 1)
+ fun_l6_n317(x)
+ else
+ fun_l6_n255(x)
+ end
+end
+
+def fun_l5_n290(x)
+ if (x < 1)
+ fun_l6_n476(x)
+ else
+ fun_l6_n789(x)
+ end
+end
+
+def fun_l5_n291(x)
+ if (x < 1)
+ fun_l6_n324(x)
+ else
+ fun_l6_n162(x)
+ end
+end
+
+def fun_l5_n292(x)
+ if (x < 1)
+ fun_l6_n704(x)
+ else
+ fun_l6_n454(x)
+ end
+end
+
+def fun_l5_n293(x)
+ if (x < 1)
+ fun_l6_n994(x)
+ else
+ fun_l6_n637(x)
+ end
+end
+
+def fun_l5_n294(x)
+ if (x < 1)
+ fun_l6_n801(x)
+ else
+ fun_l6_n913(x)
+ end
+end
+
+def fun_l5_n295(x)
+ if (x < 1)
+ fun_l6_n579(x)
+ else
+ fun_l6_n795(x)
+ end
+end
+
+def fun_l5_n296(x)
+ if (x < 1)
+ fun_l6_n689(x)
+ else
+ fun_l6_n546(x)
+ end
+end
+
+def fun_l5_n297(x)
+ if (x < 1)
+ fun_l6_n971(x)
+ else
+ fun_l6_n493(x)
+ end
+end
+
+def fun_l5_n298(x)
+ if (x < 1)
+ fun_l6_n67(x)
+ else
+ fun_l6_n372(x)
+ end
+end
+
+def fun_l5_n299(x)
+ if (x < 1)
+ fun_l6_n654(x)
+ else
+ fun_l6_n921(x)
+ end
+end
+
+def fun_l5_n300(x)
+ if (x < 1)
+ fun_l6_n402(x)
+ else
+ fun_l6_n437(x)
+ end
+end
+
+def fun_l5_n301(x)
+ if (x < 1)
+ fun_l6_n448(x)
+ else
+ fun_l6_n177(x)
+ end
+end
+
+def fun_l5_n302(x)
+ if (x < 1)
+ fun_l6_n308(x)
+ else
+ fun_l6_n869(x)
+ end
+end
+
+def fun_l5_n303(x)
+ if (x < 1)
+ fun_l6_n825(x)
+ else
+ fun_l6_n848(x)
+ end
+end
+
+def fun_l5_n304(x)
+ if (x < 1)
+ fun_l6_n735(x)
+ else
+ fun_l6_n653(x)
+ end
+end
+
+def fun_l5_n305(x)
+ if (x < 1)
+ fun_l6_n393(x)
+ else
+ fun_l6_n113(x)
+ end
+end
+
+def fun_l5_n306(x)
+ if (x < 1)
+ fun_l6_n821(x)
+ else
+ fun_l6_n827(x)
+ end
+end
+
+def fun_l5_n307(x)
+ if (x < 1)
+ fun_l6_n734(x)
+ else
+ fun_l6_n498(x)
+ end
+end
+
+def fun_l5_n308(x)
+ if (x < 1)
+ fun_l6_n833(x)
+ else
+ fun_l6_n302(x)
+ end
+end
+
+def fun_l5_n309(x)
+ if (x < 1)
+ fun_l6_n596(x)
+ else
+ fun_l6_n544(x)
+ end
+end
+
+def fun_l5_n310(x)
+ if (x < 1)
+ fun_l6_n61(x)
+ else
+ fun_l6_n823(x)
+ end
+end
+
+def fun_l5_n311(x)
+ if (x < 1)
+ fun_l6_n596(x)
+ else
+ fun_l6_n98(x)
+ end
+end
+
+def fun_l5_n312(x)
+ if (x < 1)
+ fun_l6_n78(x)
+ else
+ fun_l6_n186(x)
+ end
+end
+
+def fun_l5_n313(x)
+ if (x < 1)
+ fun_l6_n286(x)
+ else
+ fun_l6_n230(x)
+ end
+end
+
+def fun_l5_n314(x)
+ if (x < 1)
+ fun_l6_n613(x)
+ else
+ fun_l6_n412(x)
+ end
+end
+
+def fun_l5_n315(x)
+ if (x < 1)
+ fun_l6_n0(x)
+ else
+ fun_l6_n579(x)
+ end
+end
+
+def fun_l5_n316(x)
+ if (x < 1)
+ fun_l6_n991(x)
+ else
+ fun_l6_n379(x)
+ end
+end
+
+def fun_l5_n317(x)
+ if (x < 1)
+ fun_l6_n825(x)
+ else
+ fun_l6_n964(x)
+ end
+end
+
+def fun_l5_n318(x)
+ if (x < 1)
+ fun_l6_n707(x)
+ else
+ fun_l6_n664(x)
+ end
+end
+
+def fun_l5_n319(x)
+ if (x < 1)
+ fun_l6_n326(x)
+ else
+ fun_l6_n26(x)
+ end
+end
+
+def fun_l5_n320(x)
+ if (x < 1)
+ fun_l6_n684(x)
+ else
+ fun_l6_n333(x)
+ end
+end
+
+def fun_l5_n321(x)
+ if (x < 1)
+ fun_l6_n165(x)
+ else
+ fun_l6_n586(x)
+ end
+end
+
+def fun_l5_n322(x)
+ if (x < 1)
+ fun_l6_n28(x)
+ else
+ fun_l6_n53(x)
+ end
+end
+
+def fun_l5_n323(x)
+ if (x < 1)
+ fun_l6_n693(x)
+ else
+ fun_l6_n84(x)
+ end
+end
+
+def fun_l5_n324(x)
+ if (x < 1)
+ fun_l6_n500(x)
+ else
+ fun_l6_n445(x)
+ end
+end
+
+def fun_l5_n325(x)
+ if (x < 1)
+ fun_l6_n189(x)
+ else
+ fun_l6_n756(x)
+ end
+end
+
+def fun_l5_n326(x)
+ if (x < 1)
+ fun_l6_n147(x)
+ else
+ fun_l6_n709(x)
+ end
+end
+
+def fun_l5_n327(x)
+ if (x < 1)
+ fun_l6_n893(x)
+ else
+ fun_l6_n851(x)
+ end
+end
+
+def fun_l5_n328(x)
+ if (x < 1)
+ fun_l6_n685(x)
+ else
+ fun_l6_n399(x)
+ end
+end
+
+def fun_l5_n329(x)
+ if (x < 1)
+ fun_l6_n281(x)
+ else
+ fun_l6_n284(x)
+ end
+end
+
+def fun_l5_n330(x)
+ if (x < 1)
+ fun_l6_n579(x)
+ else
+ fun_l6_n671(x)
+ end
+end
+
+def fun_l5_n331(x)
+ if (x < 1)
+ fun_l6_n176(x)
+ else
+ fun_l6_n829(x)
+ end
+end
+
+def fun_l5_n332(x)
+ if (x < 1)
+ fun_l6_n209(x)
+ else
+ fun_l6_n91(x)
+ end
+end
+
+def fun_l5_n333(x)
+ if (x < 1)
+ fun_l6_n302(x)
+ else
+ fun_l6_n360(x)
+ end
+end
+
+def fun_l5_n334(x)
+ if (x < 1)
+ fun_l6_n701(x)
+ else
+ fun_l6_n438(x)
+ end
+end
+
+def fun_l5_n335(x)
+ if (x < 1)
+ fun_l6_n923(x)
+ else
+ fun_l6_n613(x)
+ end
+end
+
+def fun_l5_n336(x)
+ if (x < 1)
+ fun_l6_n490(x)
+ else
+ fun_l6_n405(x)
+ end
+end
+
+def fun_l5_n337(x)
+ if (x < 1)
+ fun_l6_n187(x)
+ else
+ fun_l6_n953(x)
+ end
+end
+
+def fun_l5_n338(x)
+ if (x < 1)
+ fun_l6_n396(x)
+ else
+ fun_l6_n917(x)
+ end
+end
+
+def fun_l5_n339(x)
+ if (x < 1)
+ fun_l6_n822(x)
+ else
+ fun_l6_n939(x)
+ end
+end
+
+def fun_l5_n340(x)
+ if (x < 1)
+ fun_l6_n665(x)
+ else
+ fun_l6_n890(x)
+ end
+end
+
+def fun_l5_n341(x)
+ if (x < 1)
+ fun_l6_n125(x)
+ else
+ fun_l6_n817(x)
+ end
+end
+
+def fun_l5_n342(x)
+ if (x < 1)
+ fun_l6_n825(x)
+ else
+ fun_l6_n853(x)
+ end
+end
+
+def fun_l5_n343(x)
+ if (x < 1)
+ fun_l6_n724(x)
+ else
+ fun_l6_n633(x)
+ end
+end
+
+def fun_l5_n344(x)
+ if (x < 1)
+ fun_l6_n901(x)
+ else
+ fun_l6_n26(x)
+ end
+end
+
+def fun_l5_n345(x)
+ if (x < 1)
+ fun_l6_n406(x)
+ else
+ fun_l6_n664(x)
+ end
+end
+
+def fun_l5_n346(x)
+ if (x < 1)
+ fun_l6_n720(x)
+ else
+ fun_l6_n856(x)
+ end
+end
+
+def fun_l5_n347(x)
+ if (x < 1)
+ fun_l6_n617(x)
+ else
+ fun_l6_n116(x)
+ end
+end
+
+def fun_l5_n348(x)
+ if (x < 1)
+ fun_l6_n560(x)
+ else
+ fun_l6_n24(x)
+ end
+end
+
+def fun_l5_n349(x)
+ if (x < 1)
+ fun_l6_n758(x)
+ else
+ fun_l6_n297(x)
+ end
+end
+
+def fun_l5_n350(x)
+ if (x < 1)
+ fun_l6_n583(x)
+ else
+ fun_l6_n673(x)
+ end
+end
+
+def fun_l5_n351(x)
+ if (x < 1)
+ fun_l6_n990(x)
+ else
+ fun_l6_n512(x)
+ end
+end
+
+def fun_l5_n352(x)
+ if (x < 1)
+ fun_l6_n250(x)
+ else
+ fun_l6_n819(x)
+ end
+end
+
+def fun_l5_n353(x)
+ if (x < 1)
+ fun_l6_n186(x)
+ else
+ fun_l6_n787(x)
+ end
+end
+
+def fun_l5_n354(x)
+ if (x < 1)
+ fun_l6_n217(x)
+ else
+ fun_l6_n231(x)
+ end
+end
+
+def fun_l5_n355(x)
+ if (x < 1)
+ fun_l6_n827(x)
+ else
+ fun_l6_n439(x)
+ end
+end
+
+def fun_l5_n356(x)
+ if (x < 1)
+ fun_l6_n456(x)
+ else
+ fun_l6_n352(x)
+ end
+end
+
+def fun_l5_n357(x)
+ if (x < 1)
+ fun_l6_n306(x)
+ else
+ fun_l6_n236(x)
+ end
+end
+
+def fun_l5_n358(x)
+ if (x < 1)
+ fun_l6_n515(x)
+ else
+ fun_l6_n100(x)
+ end
+end
+
+def fun_l5_n359(x)
+ if (x < 1)
+ fun_l6_n28(x)
+ else
+ fun_l6_n820(x)
+ end
+end
+
+def fun_l5_n360(x)
+ if (x < 1)
+ fun_l6_n683(x)
+ else
+ fun_l6_n547(x)
+ end
+end
+
+def fun_l5_n361(x)
+ if (x < 1)
+ fun_l6_n573(x)
+ else
+ fun_l6_n699(x)
+ end
+end
+
+def fun_l5_n362(x)
+ if (x < 1)
+ fun_l6_n807(x)
+ else
+ fun_l6_n548(x)
+ end
+end
+
+def fun_l5_n363(x)
+ if (x < 1)
+ fun_l6_n712(x)
+ else
+ fun_l6_n323(x)
+ end
+end
+
+def fun_l5_n364(x)
+ if (x < 1)
+ fun_l6_n457(x)
+ else
+ fun_l6_n447(x)
+ end
+end
+
+def fun_l5_n365(x)
+ if (x < 1)
+ fun_l6_n684(x)
+ else
+ fun_l6_n782(x)
+ end
+end
+
+def fun_l5_n366(x)
+ if (x < 1)
+ fun_l6_n217(x)
+ else
+ fun_l6_n344(x)
+ end
+end
+
+def fun_l5_n367(x)
+ if (x < 1)
+ fun_l6_n670(x)
+ else
+ fun_l6_n311(x)
+ end
+end
+
+def fun_l5_n368(x)
+ if (x < 1)
+ fun_l6_n224(x)
+ else
+ fun_l6_n198(x)
+ end
+end
+
+def fun_l5_n369(x)
+ if (x < 1)
+ fun_l6_n517(x)
+ else
+ fun_l6_n186(x)
+ end
+end
+
+def fun_l5_n370(x)
+ if (x < 1)
+ fun_l6_n511(x)
+ else
+ fun_l6_n27(x)
+ end
+end
+
+def fun_l5_n371(x)
+ if (x < 1)
+ fun_l6_n485(x)
+ else
+ fun_l6_n288(x)
+ end
+end
+
+def fun_l5_n372(x)
+ if (x < 1)
+ fun_l6_n931(x)
+ else
+ fun_l6_n473(x)
+ end
+end
+
+def fun_l5_n373(x)
+ if (x < 1)
+ fun_l6_n381(x)
+ else
+ fun_l6_n650(x)
+ end
+end
+
+def fun_l5_n374(x)
+ if (x < 1)
+ fun_l6_n132(x)
+ else
+ fun_l6_n243(x)
+ end
+end
+
+def fun_l5_n375(x)
+ if (x < 1)
+ fun_l6_n900(x)
+ else
+ fun_l6_n322(x)
+ end
+end
+
+def fun_l5_n376(x)
+ if (x < 1)
+ fun_l6_n787(x)
+ else
+ fun_l6_n588(x)
+ end
+end
+
+def fun_l5_n377(x)
+ if (x < 1)
+ fun_l6_n233(x)
+ else
+ fun_l6_n358(x)
+ end
+end
+
+def fun_l5_n378(x)
+ if (x < 1)
+ fun_l6_n601(x)
+ else
+ fun_l6_n40(x)
+ end
+end
+
+def fun_l5_n379(x)
+ if (x < 1)
+ fun_l6_n682(x)
+ else
+ fun_l6_n63(x)
+ end
+end
+
+def fun_l5_n380(x)
+ if (x < 1)
+ fun_l6_n279(x)
+ else
+ fun_l6_n393(x)
+ end
+end
+
+def fun_l5_n381(x)
+ if (x < 1)
+ fun_l6_n83(x)
+ else
+ fun_l6_n538(x)
+ end
+end
+
+def fun_l5_n382(x)
+ if (x < 1)
+ fun_l6_n956(x)
+ else
+ fun_l6_n194(x)
+ end
+end
+
+def fun_l5_n383(x)
+ if (x < 1)
+ fun_l6_n55(x)
+ else
+ fun_l6_n140(x)
+ end
+end
+
+def fun_l5_n384(x)
+ if (x < 1)
+ fun_l6_n165(x)
+ else
+ fun_l6_n784(x)
+ end
+end
+
+def fun_l5_n385(x)
+ if (x < 1)
+ fun_l6_n582(x)
+ else
+ fun_l6_n97(x)
+ end
+end
+
+def fun_l5_n386(x)
+ if (x < 1)
+ fun_l6_n362(x)
+ else
+ fun_l6_n935(x)
+ end
+end
+
+def fun_l5_n387(x)
+ if (x < 1)
+ fun_l6_n496(x)
+ else
+ fun_l6_n512(x)
+ end
+end
+
+def fun_l5_n388(x)
+ if (x < 1)
+ fun_l6_n793(x)
+ else
+ fun_l6_n746(x)
+ end
+end
+
+def fun_l5_n389(x)
+ if (x < 1)
+ fun_l6_n172(x)
+ else
+ fun_l6_n731(x)
+ end
+end
+
+def fun_l5_n390(x)
+ if (x < 1)
+ fun_l6_n895(x)
+ else
+ fun_l6_n694(x)
+ end
+end
+
+def fun_l5_n391(x)
+ if (x < 1)
+ fun_l6_n336(x)
+ else
+ fun_l6_n551(x)
+ end
+end
+
+def fun_l5_n392(x)
+ if (x < 1)
+ fun_l6_n453(x)
+ else
+ fun_l6_n83(x)
+ end
+end
+
+def fun_l5_n393(x)
+ if (x < 1)
+ fun_l6_n571(x)
+ else
+ fun_l6_n293(x)
+ end
+end
+
+def fun_l5_n394(x)
+ if (x < 1)
+ fun_l6_n872(x)
+ else
+ fun_l6_n519(x)
+ end
+end
+
+def fun_l5_n395(x)
+ if (x < 1)
+ fun_l6_n912(x)
+ else
+ fun_l6_n955(x)
+ end
+end
+
+def fun_l5_n396(x)
+ if (x < 1)
+ fun_l6_n961(x)
+ else
+ fun_l6_n367(x)
+ end
+end
+
+def fun_l5_n397(x)
+ if (x < 1)
+ fun_l6_n255(x)
+ else
+ fun_l6_n639(x)
+ end
+end
+
+def fun_l5_n398(x)
+ if (x < 1)
+ fun_l6_n970(x)
+ else
+ fun_l6_n465(x)
+ end
+end
+
+def fun_l5_n399(x)
+ if (x < 1)
+ fun_l6_n625(x)
+ else
+ fun_l6_n387(x)
+ end
+end
+
+def fun_l5_n400(x)
+ if (x < 1)
+ fun_l6_n537(x)
+ else
+ fun_l6_n336(x)
+ end
+end
+
+def fun_l5_n401(x)
+ if (x < 1)
+ fun_l6_n61(x)
+ else
+ fun_l6_n0(x)
+ end
+end
+
+def fun_l5_n402(x)
+ if (x < 1)
+ fun_l6_n358(x)
+ else
+ fun_l6_n715(x)
+ end
+end
+
+def fun_l5_n403(x)
+ if (x < 1)
+ fun_l6_n864(x)
+ else
+ fun_l6_n729(x)
+ end
+end
+
+def fun_l5_n404(x)
+ if (x < 1)
+ fun_l6_n393(x)
+ else
+ fun_l6_n962(x)
+ end
+end
+
+def fun_l5_n405(x)
+ if (x < 1)
+ fun_l6_n995(x)
+ else
+ fun_l6_n835(x)
+ end
+end
+
+def fun_l5_n406(x)
+ if (x < 1)
+ fun_l6_n605(x)
+ else
+ fun_l6_n732(x)
+ end
+end
+
+def fun_l5_n407(x)
+ if (x < 1)
+ fun_l6_n132(x)
+ else
+ fun_l6_n112(x)
+ end
+end
+
+def fun_l5_n408(x)
+ if (x < 1)
+ fun_l6_n311(x)
+ else
+ fun_l6_n972(x)
+ end
+end
+
+def fun_l5_n409(x)
+ if (x < 1)
+ fun_l6_n460(x)
+ else
+ fun_l6_n750(x)
+ end
+end
+
+def fun_l5_n410(x)
+ if (x < 1)
+ fun_l6_n237(x)
+ else
+ fun_l6_n463(x)
+ end
+end
+
+def fun_l5_n411(x)
+ if (x < 1)
+ fun_l6_n251(x)
+ else
+ fun_l6_n944(x)
+ end
+end
+
+def fun_l5_n412(x)
+ if (x < 1)
+ fun_l6_n123(x)
+ else
+ fun_l6_n369(x)
+ end
+end
+
+def fun_l5_n413(x)
+ if (x < 1)
+ fun_l6_n371(x)
+ else
+ fun_l6_n589(x)
+ end
+end
+
+def fun_l5_n414(x)
+ if (x < 1)
+ fun_l6_n232(x)
+ else
+ fun_l6_n354(x)
+ end
+end
+
+def fun_l5_n415(x)
+ if (x < 1)
+ fun_l6_n580(x)
+ else
+ fun_l6_n330(x)
+ end
+end
+
+def fun_l5_n416(x)
+ if (x < 1)
+ fun_l6_n483(x)
+ else
+ fun_l6_n446(x)
+ end
+end
+
+def fun_l5_n417(x)
+ if (x < 1)
+ fun_l6_n834(x)
+ else
+ fun_l6_n284(x)
+ end
+end
+
+def fun_l5_n418(x)
+ if (x < 1)
+ fun_l6_n864(x)
+ else
+ fun_l6_n825(x)
+ end
+end
+
+def fun_l5_n419(x)
+ if (x < 1)
+ fun_l6_n406(x)
+ else
+ fun_l6_n680(x)
+ end
+end
+
+def fun_l5_n420(x)
+ if (x < 1)
+ fun_l6_n101(x)
+ else
+ fun_l6_n4(x)
+ end
+end
+
+def fun_l5_n421(x)
+ if (x < 1)
+ fun_l6_n628(x)
+ else
+ fun_l6_n303(x)
+ end
+end
+
+def fun_l5_n422(x)
+ if (x < 1)
+ fun_l6_n521(x)
+ else
+ fun_l6_n547(x)
+ end
+end
+
+def fun_l5_n423(x)
+ if (x < 1)
+ fun_l6_n589(x)
+ else
+ fun_l6_n134(x)
+ end
+end
+
+def fun_l5_n424(x)
+ if (x < 1)
+ fun_l6_n161(x)
+ else
+ fun_l6_n347(x)
+ end
+end
+
+def fun_l5_n425(x)
+ if (x < 1)
+ fun_l6_n59(x)
+ else
+ fun_l6_n988(x)
+ end
+end
+
+def fun_l5_n426(x)
+ if (x < 1)
+ fun_l6_n388(x)
+ else
+ fun_l6_n182(x)
+ end
+end
+
+def fun_l5_n427(x)
+ if (x < 1)
+ fun_l6_n500(x)
+ else
+ fun_l6_n536(x)
+ end
+end
+
+def fun_l5_n428(x)
+ if (x < 1)
+ fun_l6_n792(x)
+ else
+ fun_l6_n253(x)
+ end
+end
+
+def fun_l5_n429(x)
+ if (x < 1)
+ fun_l6_n774(x)
+ else
+ fun_l6_n997(x)
+ end
+end
+
+def fun_l5_n430(x)
+ if (x < 1)
+ fun_l6_n876(x)
+ else
+ fun_l6_n798(x)
+ end
+end
+
+def fun_l5_n431(x)
+ if (x < 1)
+ fun_l6_n606(x)
+ else
+ fun_l6_n403(x)
+ end
+end
+
+def fun_l5_n432(x)
+ if (x < 1)
+ fun_l6_n920(x)
+ else
+ fun_l6_n827(x)
+ end
+end
+
+def fun_l5_n433(x)
+ if (x < 1)
+ fun_l6_n887(x)
+ else
+ fun_l6_n149(x)
+ end
+end
+
+def fun_l5_n434(x)
+ if (x < 1)
+ fun_l6_n413(x)
+ else
+ fun_l6_n44(x)
+ end
+end
+
+def fun_l5_n435(x)
+ if (x < 1)
+ fun_l6_n474(x)
+ else
+ fun_l6_n107(x)
+ end
+end
+
+def fun_l5_n436(x)
+ if (x < 1)
+ fun_l6_n807(x)
+ else
+ fun_l6_n636(x)
+ end
+end
+
+def fun_l5_n437(x)
+ if (x < 1)
+ fun_l6_n616(x)
+ else
+ fun_l6_n615(x)
+ end
+end
+
+def fun_l5_n438(x)
+ if (x < 1)
+ fun_l6_n384(x)
+ else
+ fun_l6_n535(x)
+ end
+end
+
+def fun_l5_n439(x)
+ if (x < 1)
+ fun_l6_n326(x)
+ else
+ fun_l6_n929(x)
+ end
+end
+
+def fun_l5_n440(x)
+ if (x < 1)
+ fun_l6_n852(x)
+ else
+ fun_l6_n597(x)
+ end
+end
+
+def fun_l5_n441(x)
+ if (x < 1)
+ fun_l6_n246(x)
+ else
+ fun_l6_n991(x)
+ end
+end
+
+def fun_l5_n442(x)
+ if (x < 1)
+ fun_l6_n258(x)
+ else
+ fun_l6_n140(x)
+ end
+end
+
+def fun_l5_n443(x)
+ if (x < 1)
+ fun_l6_n815(x)
+ else
+ fun_l6_n600(x)
+ end
+end
+
+def fun_l5_n444(x)
+ if (x < 1)
+ fun_l6_n153(x)
+ else
+ fun_l6_n902(x)
+ end
+end
+
+def fun_l5_n445(x)
+ if (x < 1)
+ fun_l6_n289(x)
+ else
+ fun_l6_n240(x)
+ end
+end
+
+def fun_l5_n446(x)
+ if (x < 1)
+ fun_l6_n398(x)
+ else
+ fun_l6_n273(x)
+ end
+end
+
+def fun_l5_n447(x)
+ if (x < 1)
+ fun_l6_n537(x)
+ else
+ fun_l6_n8(x)
+ end
+end
+
+def fun_l5_n448(x)
+ if (x < 1)
+ fun_l6_n801(x)
+ else
+ fun_l6_n389(x)
+ end
+end
+
+def fun_l5_n449(x)
+ if (x < 1)
+ fun_l6_n363(x)
+ else
+ fun_l6_n17(x)
+ end
+end
+
+def fun_l5_n450(x)
+ if (x < 1)
+ fun_l6_n511(x)
+ else
+ fun_l6_n151(x)
+ end
+end
+
+def fun_l5_n451(x)
+ if (x < 1)
+ fun_l6_n640(x)
+ else
+ fun_l6_n785(x)
+ end
+end
+
+def fun_l5_n452(x)
+ if (x < 1)
+ fun_l6_n961(x)
+ else
+ fun_l6_n567(x)
+ end
+end
+
+def fun_l5_n453(x)
+ if (x < 1)
+ fun_l6_n608(x)
+ else
+ fun_l6_n910(x)
+ end
+end
+
+def fun_l5_n454(x)
+ if (x < 1)
+ fun_l6_n898(x)
+ else
+ fun_l6_n231(x)
+ end
+end
+
+def fun_l5_n455(x)
+ if (x < 1)
+ fun_l6_n205(x)
+ else
+ fun_l6_n162(x)
+ end
+end
+
+def fun_l5_n456(x)
+ if (x < 1)
+ fun_l6_n374(x)
+ else
+ fun_l6_n544(x)
+ end
+end
+
+def fun_l5_n457(x)
+ if (x < 1)
+ fun_l6_n514(x)
+ else
+ fun_l6_n522(x)
+ end
+end
+
+def fun_l5_n458(x)
+ if (x < 1)
+ fun_l6_n385(x)
+ else
+ fun_l6_n808(x)
+ end
+end
+
+def fun_l5_n459(x)
+ if (x < 1)
+ fun_l6_n525(x)
+ else
+ fun_l6_n144(x)
+ end
+end
+
+def fun_l5_n460(x)
+ if (x < 1)
+ fun_l6_n781(x)
+ else
+ fun_l6_n180(x)
+ end
+end
+
+def fun_l5_n461(x)
+ if (x < 1)
+ fun_l6_n681(x)
+ else
+ fun_l6_n273(x)
+ end
+end
+
+def fun_l5_n462(x)
+ if (x < 1)
+ fun_l6_n497(x)
+ else
+ fun_l6_n399(x)
+ end
+end
+
+def fun_l5_n463(x)
+ if (x < 1)
+ fun_l6_n261(x)
+ else
+ fun_l6_n311(x)
+ end
+end
+
+def fun_l5_n464(x)
+ if (x < 1)
+ fun_l6_n64(x)
+ else
+ fun_l6_n253(x)
+ end
+end
+
+def fun_l5_n465(x)
+ if (x < 1)
+ fun_l6_n388(x)
+ else
+ fun_l6_n300(x)
+ end
+end
+
+def fun_l5_n466(x)
+ if (x < 1)
+ fun_l6_n822(x)
+ else
+ fun_l6_n277(x)
+ end
+end
+
+def fun_l5_n467(x)
+ if (x < 1)
+ fun_l6_n909(x)
+ else
+ fun_l6_n605(x)
+ end
+end
+
+def fun_l5_n468(x)
+ if (x < 1)
+ fun_l6_n879(x)
+ else
+ fun_l6_n870(x)
+ end
+end
+
+def fun_l5_n469(x)
+ if (x < 1)
+ fun_l6_n351(x)
+ else
+ fun_l6_n917(x)
+ end
+end
+
+def fun_l5_n470(x)
+ if (x < 1)
+ fun_l6_n202(x)
+ else
+ fun_l6_n40(x)
+ end
+end
+
+def fun_l5_n471(x)
+ if (x < 1)
+ fun_l6_n782(x)
+ else
+ fun_l6_n839(x)
+ end
+end
+
+def fun_l5_n472(x)
+ if (x < 1)
+ fun_l6_n370(x)
+ else
+ fun_l6_n868(x)
+ end
+end
+
+def fun_l5_n473(x)
+ if (x < 1)
+ fun_l6_n556(x)
+ else
+ fun_l6_n722(x)
+ end
+end
+
+def fun_l5_n474(x)
+ if (x < 1)
+ fun_l6_n220(x)
+ else
+ fun_l6_n994(x)
+ end
+end
+
+def fun_l5_n475(x)
+ if (x < 1)
+ fun_l6_n266(x)
+ else
+ fun_l6_n872(x)
+ end
+end
+
+def fun_l5_n476(x)
+ if (x < 1)
+ fun_l6_n720(x)
+ else
+ fun_l6_n412(x)
+ end
+end
+
+def fun_l5_n477(x)
+ if (x < 1)
+ fun_l6_n284(x)
+ else
+ fun_l6_n90(x)
+ end
+end
+
+def fun_l5_n478(x)
+ if (x < 1)
+ fun_l6_n716(x)
+ else
+ fun_l6_n125(x)
+ end
+end
+
+def fun_l5_n479(x)
+ if (x < 1)
+ fun_l6_n136(x)
+ else
+ fun_l6_n232(x)
+ end
+end
+
+def fun_l5_n480(x)
+ if (x < 1)
+ fun_l6_n627(x)
+ else
+ fun_l6_n641(x)
+ end
+end
+
+def fun_l5_n481(x)
+ if (x < 1)
+ fun_l6_n411(x)
+ else
+ fun_l6_n943(x)
+ end
+end
+
+def fun_l5_n482(x)
+ if (x < 1)
+ fun_l6_n86(x)
+ else
+ fun_l6_n839(x)
+ end
+end
+
+def fun_l5_n483(x)
+ if (x < 1)
+ fun_l6_n988(x)
+ else
+ fun_l6_n329(x)
+ end
+end
+
+def fun_l5_n484(x)
+ if (x < 1)
+ fun_l6_n595(x)
+ else
+ fun_l6_n499(x)
+ end
+end
+
+def fun_l5_n485(x)
+ if (x < 1)
+ fun_l6_n912(x)
+ else
+ fun_l6_n267(x)
+ end
+end
+
+def fun_l5_n486(x)
+ if (x < 1)
+ fun_l6_n334(x)
+ else
+ fun_l6_n459(x)
+ end
+end
+
+def fun_l5_n487(x)
+ if (x < 1)
+ fun_l6_n771(x)
+ else
+ fun_l6_n458(x)
+ end
+end
+
+def fun_l5_n488(x)
+ if (x < 1)
+ fun_l6_n609(x)
+ else
+ fun_l6_n280(x)
+ end
+end
+
+def fun_l5_n489(x)
+ if (x < 1)
+ fun_l6_n564(x)
+ else
+ fun_l6_n564(x)
+ end
+end
+
+def fun_l5_n490(x)
+ if (x < 1)
+ fun_l6_n271(x)
+ else
+ fun_l6_n904(x)
+ end
+end
+
+def fun_l5_n491(x)
+ if (x < 1)
+ fun_l6_n338(x)
+ else
+ fun_l6_n694(x)
+ end
+end
+
+def fun_l5_n492(x)
+ if (x < 1)
+ fun_l6_n596(x)
+ else
+ fun_l6_n191(x)
+ end
+end
+
+def fun_l5_n493(x)
+ if (x < 1)
+ fun_l6_n369(x)
+ else
+ fun_l6_n513(x)
+ end
+end
+
+def fun_l5_n494(x)
+ if (x < 1)
+ fun_l6_n972(x)
+ else
+ fun_l6_n945(x)
+ end
+end
+
+def fun_l5_n495(x)
+ if (x < 1)
+ fun_l6_n747(x)
+ else
+ fun_l6_n96(x)
+ end
+end
+
+def fun_l5_n496(x)
+ if (x < 1)
+ fun_l6_n220(x)
+ else
+ fun_l6_n665(x)
+ end
+end
+
+def fun_l5_n497(x)
+ if (x < 1)
+ fun_l6_n793(x)
+ else
+ fun_l6_n468(x)
+ end
+end
+
+def fun_l5_n498(x)
+ if (x < 1)
+ fun_l6_n227(x)
+ else
+ fun_l6_n576(x)
+ end
+end
+
+def fun_l5_n499(x)
+ if (x < 1)
+ fun_l6_n356(x)
+ else
+ fun_l6_n614(x)
+ end
+end
+
+def fun_l5_n500(x)
+ if (x < 1)
+ fun_l6_n256(x)
+ else
+ fun_l6_n237(x)
+ end
+end
+
+def fun_l5_n501(x)
+ if (x < 1)
+ fun_l6_n503(x)
+ else
+ fun_l6_n159(x)
+ end
+end
+
+def fun_l5_n502(x)
+ if (x < 1)
+ fun_l6_n523(x)
+ else
+ fun_l6_n547(x)
+ end
+end
+
+def fun_l5_n503(x)
+ if (x < 1)
+ fun_l6_n778(x)
+ else
+ fun_l6_n600(x)
+ end
+end
+
+def fun_l5_n504(x)
+ if (x < 1)
+ fun_l6_n654(x)
+ else
+ fun_l6_n950(x)
+ end
+end
+
+def fun_l5_n505(x)
+ if (x < 1)
+ fun_l6_n105(x)
+ else
+ fun_l6_n881(x)
+ end
+end
+
+def fun_l5_n506(x)
+ if (x < 1)
+ fun_l6_n956(x)
+ else
+ fun_l6_n71(x)
+ end
+end
+
+def fun_l5_n507(x)
+ if (x < 1)
+ fun_l6_n33(x)
+ else
+ fun_l6_n431(x)
+ end
+end
+
+def fun_l5_n508(x)
+ if (x < 1)
+ fun_l6_n587(x)
+ else
+ fun_l6_n1(x)
+ end
+end
+
+def fun_l5_n509(x)
+ if (x < 1)
+ fun_l6_n258(x)
+ else
+ fun_l6_n547(x)
+ end
+end
+
+def fun_l5_n510(x)
+ if (x < 1)
+ fun_l6_n816(x)
+ else
+ fun_l6_n558(x)
+ end
+end
+
+def fun_l5_n511(x)
+ if (x < 1)
+ fun_l6_n61(x)
+ else
+ fun_l6_n10(x)
+ end
+end
+
+def fun_l5_n512(x)
+ if (x < 1)
+ fun_l6_n674(x)
+ else
+ fun_l6_n466(x)
+ end
+end
+
+def fun_l5_n513(x)
+ if (x < 1)
+ fun_l6_n580(x)
+ else
+ fun_l6_n398(x)
+ end
+end
+
+def fun_l5_n514(x)
+ if (x < 1)
+ fun_l6_n495(x)
+ else
+ fun_l6_n407(x)
+ end
+end
+
+def fun_l5_n515(x)
+ if (x < 1)
+ fun_l6_n639(x)
+ else
+ fun_l6_n214(x)
+ end
+end
+
+def fun_l5_n516(x)
+ if (x < 1)
+ fun_l6_n15(x)
+ else
+ fun_l6_n716(x)
+ end
+end
+
+def fun_l5_n517(x)
+ if (x < 1)
+ fun_l6_n645(x)
+ else
+ fun_l6_n645(x)
+ end
+end
+
+def fun_l5_n518(x)
+ if (x < 1)
+ fun_l6_n615(x)
+ else
+ fun_l6_n44(x)
+ end
+end
+
+def fun_l5_n519(x)
+ if (x < 1)
+ fun_l6_n399(x)
+ else
+ fun_l6_n663(x)
+ end
+end
+
+def fun_l5_n520(x)
+ if (x < 1)
+ fun_l6_n85(x)
+ else
+ fun_l6_n870(x)
+ end
+end
+
+def fun_l5_n521(x)
+ if (x < 1)
+ fun_l6_n14(x)
+ else
+ fun_l6_n965(x)
+ end
+end
+
+def fun_l5_n522(x)
+ if (x < 1)
+ fun_l6_n24(x)
+ else
+ fun_l6_n581(x)
+ end
+end
+
+def fun_l5_n523(x)
+ if (x < 1)
+ fun_l6_n501(x)
+ else
+ fun_l6_n913(x)
+ end
+end
+
+def fun_l5_n524(x)
+ if (x < 1)
+ fun_l6_n772(x)
+ else
+ fun_l6_n999(x)
+ end
+end
+
+def fun_l5_n525(x)
+ if (x < 1)
+ fun_l6_n847(x)
+ else
+ fun_l6_n422(x)
+ end
+end
+
+def fun_l5_n526(x)
+ if (x < 1)
+ fun_l6_n377(x)
+ else
+ fun_l6_n986(x)
+ end
+end
+
+def fun_l5_n527(x)
+ if (x < 1)
+ fun_l6_n548(x)
+ else
+ fun_l6_n40(x)
+ end
+end
+
+def fun_l5_n528(x)
+ if (x < 1)
+ fun_l6_n392(x)
+ else
+ fun_l6_n577(x)
+ end
+end
+
+def fun_l5_n529(x)
+ if (x < 1)
+ fun_l6_n101(x)
+ else
+ fun_l6_n26(x)
+ end
+end
+
+def fun_l5_n530(x)
+ if (x < 1)
+ fun_l6_n800(x)
+ else
+ fun_l6_n958(x)
+ end
+end
+
+def fun_l5_n531(x)
+ if (x < 1)
+ fun_l6_n72(x)
+ else
+ fun_l6_n887(x)
+ end
+end
+
+def fun_l5_n532(x)
+ if (x < 1)
+ fun_l6_n467(x)
+ else
+ fun_l6_n740(x)
+ end
+end
+
+def fun_l5_n533(x)
+ if (x < 1)
+ fun_l6_n264(x)
+ else
+ fun_l6_n683(x)
+ end
+end
+
+def fun_l5_n534(x)
+ if (x < 1)
+ fun_l6_n953(x)
+ else
+ fun_l6_n560(x)
+ end
+end
+
+def fun_l5_n535(x)
+ if (x < 1)
+ fun_l6_n854(x)
+ else
+ fun_l6_n59(x)
+ end
+end
+
+def fun_l5_n536(x)
+ if (x < 1)
+ fun_l6_n940(x)
+ else
+ fun_l6_n832(x)
+ end
+end
+
+def fun_l5_n537(x)
+ if (x < 1)
+ fun_l6_n297(x)
+ else
+ fun_l6_n18(x)
+ end
+end
+
+def fun_l5_n538(x)
+ if (x < 1)
+ fun_l6_n188(x)
+ else
+ fun_l6_n537(x)
+ end
+end
+
+def fun_l5_n539(x)
+ if (x < 1)
+ fun_l6_n992(x)
+ else
+ fun_l6_n825(x)
+ end
+end
+
+def fun_l5_n540(x)
+ if (x < 1)
+ fun_l6_n691(x)
+ else
+ fun_l6_n850(x)
+ end
+end
+
+def fun_l5_n541(x)
+ if (x < 1)
+ fun_l6_n858(x)
+ else
+ fun_l6_n948(x)
+ end
+end
+
+def fun_l5_n542(x)
+ if (x < 1)
+ fun_l6_n923(x)
+ else
+ fun_l6_n112(x)
+ end
+end
+
+def fun_l5_n543(x)
+ if (x < 1)
+ fun_l6_n419(x)
+ else
+ fun_l6_n4(x)
+ end
+end
+
+def fun_l5_n544(x)
+ if (x < 1)
+ fun_l6_n766(x)
+ else
+ fun_l6_n147(x)
+ end
+end
+
+def fun_l5_n545(x)
+ if (x < 1)
+ fun_l6_n327(x)
+ else
+ fun_l6_n327(x)
+ end
+end
+
+def fun_l5_n546(x)
+ if (x < 1)
+ fun_l6_n94(x)
+ else
+ fun_l6_n662(x)
+ end
+end
+
+def fun_l5_n547(x)
+ if (x < 1)
+ fun_l6_n764(x)
+ else
+ fun_l6_n521(x)
+ end
+end
+
+def fun_l5_n548(x)
+ if (x < 1)
+ fun_l6_n509(x)
+ else
+ fun_l6_n231(x)
+ end
+end
+
+def fun_l5_n549(x)
+ if (x < 1)
+ fun_l6_n370(x)
+ else
+ fun_l6_n599(x)
+ end
+end
+
+def fun_l5_n550(x)
+ if (x < 1)
+ fun_l6_n710(x)
+ else
+ fun_l6_n104(x)
+ end
+end
+
+def fun_l5_n551(x)
+ if (x < 1)
+ fun_l6_n677(x)
+ else
+ fun_l6_n184(x)
+ end
+end
+
+def fun_l5_n552(x)
+ if (x < 1)
+ fun_l6_n700(x)
+ else
+ fun_l6_n299(x)
+ end
+end
+
+def fun_l5_n553(x)
+ if (x < 1)
+ fun_l6_n688(x)
+ else
+ fun_l6_n934(x)
+ end
+end
+
+def fun_l5_n554(x)
+ if (x < 1)
+ fun_l6_n771(x)
+ else
+ fun_l6_n989(x)
+ end
+end
+
+def fun_l5_n555(x)
+ if (x < 1)
+ fun_l6_n164(x)
+ else
+ fun_l6_n197(x)
+ end
+end
+
+def fun_l5_n556(x)
+ if (x < 1)
+ fun_l6_n901(x)
+ else
+ fun_l6_n235(x)
+ end
+end
+
+def fun_l5_n557(x)
+ if (x < 1)
+ fun_l6_n990(x)
+ else
+ fun_l6_n490(x)
+ end
+end
+
+def fun_l5_n558(x)
+ if (x < 1)
+ fun_l6_n476(x)
+ else
+ fun_l6_n612(x)
+ end
+end
+
+def fun_l5_n559(x)
+ if (x < 1)
+ fun_l6_n761(x)
+ else
+ fun_l6_n3(x)
+ end
+end
+
+def fun_l5_n560(x)
+ if (x < 1)
+ fun_l6_n461(x)
+ else
+ fun_l6_n832(x)
+ end
+end
+
+def fun_l5_n561(x)
+ if (x < 1)
+ fun_l6_n206(x)
+ else
+ fun_l6_n815(x)
+ end
+end
+
+def fun_l5_n562(x)
+ if (x < 1)
+ fun_l6_n180(x)
+ else
+ fun_l6_n640(x)
+ end
+end
+
+def fun_l5_n563(x)
+ if (x < 1)
+ fun_l6_n612(x)
+ else
+ fun_l6_n900(x)
+ end
+end
+
+def fun_l5_n564(x)
+ if (x < 1)
+ fun_l6_n31(x)
+ else
+ fun_l6_n290(x)
+ end
+end
+
+def fun_l5_n565(x)
+ if (x < 1)
+ fun_l6_n322(x)
+ else
+ fun_l6_n136(x)
+ end
+end
+
+def fun_l5_n566(x)
+ if (x < 1)
+ fun_l6_n657(x)
+ else
+ fun_l6_n649(x)
+ end
+end
+
+def fun_l5_n567(x)
+ if (x < 1)
+ fun_l6_n683(x)
+ else
+ fun_l6_n903(x)
+ end
+end
+
+def fun_l5_n568(x)
+ if (x < 1)
+ fun_l6_n391(x)
+ else
+ fun_l6_n117(x)
+ end
+end
+
+def fun_l5_n569(x)
+ if (x < 1)
+ fun_l6_n868(x)
+ else
+ fun_l6_n644(x)
+ end
+end
+
+def fun_l5_n570(x)
+ if (x < 1)
+ fun_l6_n493(x)
+ else
+ fun_l6_n638(x)
+ end
+end
+
+def fun_l5_n571(x)
+ if (x < 1)
+ fun_l6_n207(x)
+ else
+ fun_l6_n650(x)
+ end
+end
+
+def fun_l5_n572(x)
+ if (x < 1)
+ fun_l6_n575(x)
+ else
+ fun_l6_n421(x)
+ end
+end
+
+def fun_l5_n573(x)
+ if (x < 1)
+ fun_l6_n757(x)
+ else
+ fun_l6_n515(x)
+ end
+end
+
+def fun_l5_n574(x)
+ if (x < 1)
+ fun_l6_n619(x)
+ else
+ fun_l6_n39(x)
+ end
+end
+
+def fun_l5_n575(x)
+ if (x < 1)
+ fun_l6_n91(x)
+ else
+ fun_l6_n79(x)
+ end
+end
+
+def fun_l5_n576(x)
+ if (x < 1)
+ fun_l6_n492(x)
+ else
+ fun_l6_n938(x)
+ end
+end
+
+def fun_l5_n577(x)
+ if (x < 1)
+ fun_l6_n181(x)
+ else
+ fun_l6_n98(x)
+ end
+end
+
+def fun_l5_n578(x)
+ if (x < 1)
+ fun_l6_n823(x)
+ else
+ fun_l6_n528(x)
+ end
+end
+
+def fun_l5_n579(x)
+ if (x < 1)
+ fun_l6_n218(x)
+ else
+ fun_l6_n613(x)
+ end
+end
+
+def fun_l5_n580(x)
+ if (x < 1)
+ fun_l6_n81(x)
+ else
+ fun_l6_n318(x)
+ end
+end
+
+def fun_l5_n581(x)
+ if (x < 1)
+ fun_l6_n953(x)
+ else
+ fun_l6_n162(x)
+ end
+end
+
+def fun_l5_n582(x)
+ if (x < 1)
+ fun_l6_n225(x)
+ else
+ fun_l6_n441(x)
+ end
+end
+
+def fun_l5_n583(x)
+ if (x < 1)
+ fun_l6_n862(x)
+ else
+ fun_l6_n939(x)
+ end
+end
+
+def fun_l5_n584(x)
+ if (x < 1)
+ fun_l6_n401(x)
+ else
+ fun_l6_n149(x)
+ end
+end
+
+def fun_l5_n585(x)
+ if (x < 1)
+ fun_l6_n94(x)
+ else
+ fun_l6_n320(x)
+ end
+end
+
+def fun_l5_n586(x)
+ if (x < 1)
+ fun_l6_n609(x)
+ else
+ fun_l6_n524(x)
+ end
+end
+
+def fun_l5_n587(x)
+ if (x < 1)
+ fun_l6_n412(x)
+ else
+ fun_l6_n350(x)
+ end
+end
+
+def fun_l5_n588(x)
+ if (x < 1)
+ fun_l6_n874(x)
+ else
+ fun_l6_n217(x)
+ end
+end
+
+def fun_l5_n589(x)
+ if (x < 1)
+ fun_l6_n989(x)
+ else
+ fun_l6_n62(x)
+ end
+end
+
+def fun_l5_n590(x)
+ if (x < 1)
+ fun_l6_n91(x)
+ else
+ fun_l6_n360(x)
+ end
+end
+
+def fun_l5_n591(x)
+ if (x < 1)
+ fun_l6_n392(x)
+ else
+ fun_l6_n530(x)
+ end
+end
+
+def fun_l5_n592(x)
+ if (x < 1)
+ fun_l6_n635(x)
+ else
+ fun_l6_n268(x)
+ end
+end
+
+def fun_l5_n593(x)
+ if (x < 1)
+ fun_l6_n747(x)
+ else
+ fun_l6_n345(x)
+ end
+end
+
+def fun_l5_n594(x)
+ if (x < 1)
+ fun_l6_n450(x)
+ else
+ fun_l6_n165(x)
+ end
+end
+
+def fun_l5_n595(x)
+ if (x < 1)
+ fun_l6_n960(x)
+ else
+ fun_l6_n256(x)
+ end
+end
+
+def fun_l5_n596(x)
+ if (x < 1)
+ fun_l6_n724(x)
+ else
+ fun_l6_n506(x)
+ end
+end
+
+def fun_l5_n597(x)
+ if (x < 1)
+ fun_l6_n809(x)
+ else
+ fun_l6_n180(x)
+ end
+end
+
+def fun_l5_n598(x)
+ if (x < 1)
+ fun_l6_n799(x)
+ else
+ fun_l6_n59(x)
+ end
+end
+
+def fun_l5_n599(x)
+ if (x < 1)
+ fun_l6_n412(x)
+ else
+ fun_l6_n868(x)
+ end
+end
+
+def fun_l5_n600(x)
+ if (x < 1)
+ fun_l6_n459(x)
+ else
+ fun_l6_n537(x)
+ end
+end
+
+def fun_l5_n601(x)
+ if (x < 1)
+ fun_l6_n321(x)
+ else
+ fun_l6_n39(x)
+ end
+end
+
+def fun_l5_n602(x)
+ if (x < 1)
+ fun_l6_n561(x)
+ else
+ fun_l6_n413(x)
+ end
+end
+
+def fun_l5_n603(x)
+ if (x < 1)
+ fun_l6_n173(x)
+ else
+ fun_l6_n324(x)
+ end
+end
+
+def fun_l5_n604(x)
+ if (x < 1)
+ fun_l6_n583(x)
+ else
+ fun_l6_n763(x)
+ end
+end
+
+def fun_l5_n605(x)
+ if (x < 1)
+ fun_l6_n200(x)
+ else
+ fun_l6_n996(x)
+ end
+end
+
+def fun_l5_n606(x)
+ if (x < 1)
+ fun_l6_n465(x)
+ else
+ fun_l6_n777(x)
+ end
+end
+
+def fun_l5_n607(x)
+ if (x < 1)
+ fun_l6_n744(x)
+ else
+ fun_l6_n917(x)
+ end
+end
+
+def fun_l5_n608(x)
+ if (x < 1)
+ fun_l6_n825(x)
+ else
+ fun_l6_n751(x)
+ end
+end
+
+def fun_l5_n609(x)
+ if (x < 1)
+ fun_l6_n357(x)
+ else
+ fun_l6_n889(x)
+ end
+end
+
+def fun_l5_n610(x)
+ if (x < 1)
+ fun_l6_n534(x)
+ else
+ fun_l6_n628(x)
+ end
+end
+
+def fun_l5_n611(x)
+ if (x < 1)
+ fun_l6_n242(x)
+ else
+ fun_l6_n57(x)
+ end
+end
+
+def fun_l5_n612(x)
+ if (x < 1)
+ fun_l6_n426(x)
+ else
+ fun_l6_n295(x)
+ end
+end
+
+def fun_l5_n613(x)
+ if (x < 1)
+ fun_l6_n218(x)
+ else
+ fun_l6_n194(x)
+ end
+end
+
+def fun_l5_n614(x)
+ if (x < 1)
+ fun_l6_n618(x)
+ else
+ fun_l6_n757(x)
+ end
+end
+
+def fun_l5_n615(x)
+ if (x < 1)
+ fun_l6_n708(x)
+ else
+ fun_l6_n187(x)
+ end
+end
+
+def fun_l5_n616(x)
+ if (x < 1)
+ fun_l6_n824(x)
+ else
+ fun_l6_n384(x)
+ end
+end
+
+def fun_l5_n617(x)
+ if (x < 1)
+ fun_l6_n149(x)
+ else
+ fun_l6_n741(x)
+ end
+end
+
+def fun_l5_n618(x)
+ if (x < 1)
+ fun_l6_n889(x)
+ else
+ fun_l6_n768(x)
+ end
+end
+
+def fun_l5_n619(x)
+ if (x < 1)
+ fun_l6_n144(x)
+ else
+ fun_l6_n746(x)
+ end
+end
+
+def fun_l5_n620(x)
+ if (x < 1)
+ fun_l6_n338(x)
+ else
+ fun_l6_n757(x)
+ end
+end
+
+def fun_l5_n621(x)
+ if (x < 1)
+ fun_l6_n623(x)
+ else
+ fun_l6_n432(x)
+ end
+end
+
+def fun_l5_n622(x)
+ if (x < 1)
+ fun_l6_n139(x)
+ else
+ fun_l6_n162(x)
+ end
+end
+
+def fun_l5_n623(x)
+ if (x < 1)
+ fun_l6_n371(x)
+ else
+ fun_l6_n297(x)
+ end
+end
+
+def fun_l5_n624(x)
+ if (x < 1)
+ fun_l6_n166(x)
+ else
+ fun_l6_n172(x)
+ end
+end
+
+def fun_l5_n625(x)
+ if (x < 1)
+ fun_l6_n506(x)
+ else
+ fun_l6_n7(x)
+ end
+end
+
+def fun_l5_n626(x)
+ if (x < 1)
+ fun_l6_n334(x)
+ else
+ fun_l6_n631(x)
+ end
+end
+
+def fun_l5_n627(x)
+ if (x < 1)
+ fun_l6_n209(x)
+ else
+ fun_l6_n316(x)
+ end
+end
+
+def fun_l5_n628(x)
+ if (x < 1)
+ fun_l6_n461(x)
+ else
+ fun_l6_n34(x)
+ end
+end
+
+def fun_l5_n629(x)
+ if (x < 1)
+ fun_l6_n6(x)
+ else
+ fun_l6_n818(x)
+ end
+end
+
+def fun_l5_n630(x)
+ if (x < 1)
+ fun_l6_n265(x)
+ else
+ fun_l6_n111(x)
+ end
+end
+
+def fun_l5_n631(x)
+ if (x < 1)
+ fun_l6_n493(x)
+ else
+ fun_l6_n64(x)
+ end
+end
+
+def fun_l5_n632(x)
+ if (x < 1)
+ fun_l6_n513(x)
+ else
+ fun_l6_n890(x)
+ end
+end
+
+def fun_l5_n633(x)
+ if (x < 1)
+ fun_l6_n295(x)
+ else
+ fun_l6_n295(x)
+ end
+end
+
+def fun_l5_n634(x)
+ if (x < 1)
+ fun_l6_n158(x)
+ else
+ fun_l6_n971(x)
+ end
+end
+
+def fun_l5_n635(x)
+ if (x < 1)
+ fun_l6_n171(x)
+ else
+ fun_l6_n337(x)
+ end
+end
+
+def fun_l5_n636(x)
+ if (x < 1)
+ fun_l6_n943(x)
+ else
+ fun_l6_n502(x)
+ end
+end
+
+def fun_l5_n637(x)
+ if (x < 1)
+ fun_l6_n339(x)
+ else
+ fun_l6_n638(x)
+ end
+end
+
+def fun_l5_n638(x)
+ if (x < 1)
+ fun_l6_n155(x)
+ else
+ fun_l6_n393(x)
+ end
+end
+
+def fun_l5_n639(x)
+ if (x < 1)
+ fun_l6_n29(x)
+ else
+ fun_l6_n506(x)
+ end
+end
+
+def fun_l5_n640(x)
+ if (x < 1)
+ fun_l6_n677(x)
+ else
+ fun_l6_n606(x)
+ end
+end
+
+def fun_l5_n641(x)
+ if (x < 1)
+ fun_l6_n306(x)
+ else
+ fun_l6_n571(x)
+ end
+end
+
+def fun_l5_n642(x)
+ if (x < 1)
+ fun_l6_n490(x)
+ else
+ fun_l6_n281(x)
+ end
+end
+
+def fun_l5_n643(x)
+ if (x < 1)
+ fun_l6_n392(x)
+ else
+ fun_l6_n686(x)
+ end
+end
+
+def fun_l5_n644(x)
+ if (x < 1)
+ fun_l6_n257(x)
+ else
+ fun_l6_n358(x)
+ end
+end
+
+def fun_l5_n645(x)
+ if (x < 1)
+ fun_l6_n949(x)
+ else
+ fun_l6_n15(x)
+ end
+end
+
+def fun_l5_n646(x)
+ if (x < 1)
+ fun_l6_n866(x)
+ else
+ fun_l6_n657(x)
+ end
+end
+
+def fun_l5_n647(x)
+ if (x < 1)
+ fun_l6_n624(x)
+ else
+ fun_l6_n390(x)
+ end
+end
+
+def fun_l5_n648(x)
+ if (x < 1)
+ fun_l6_n394(x)
+ else
+ fun_l6_n951(x)
+ end
+end
+
+def fun_l5_n649(x)
+ if (x < 1)
+ fun_l6_n99(x)
+ else
+ fun_l6_n160(x)
+ end
+end
+
+def fun_l5_n650(x)
+ if (x < 1)
+ fun_l6_n84(x)
+ else
+ fun_l6_n111(x)
+ end
+end
+
+def fun_l5_n651(x)
+ if (x < 1)
+ fun_l6_n635(x)
+ else
+ fun_l6_n507(x)
+ end
+end
+
+def fun_l5_n652(x)
+ if (x < 1)
+ fun_l6_n674(x)
+ else
+ fun_l6_n501(x)
+ end
+end
+
+def fun_l5_n653(x)
+ if (x < 1)
+ fun_l6_n171(x)
+ else
+ fun_l6_n645(x)
+ end
+end
+
+def fun_l5_n654(x)
+ if (x < 1)
+ fun_l6_n327(x)
+ else
+ fun_l6_n152(x)
+ end
+end
+
+def fun_l5_n655(x)
+ if (x < 1)
+ fun_l6_n210(x)
+ else
+ fun_l6_n441(x)
+ end
+end
+
+def fun_l5_n656(x)
+ if (x < 1)
+ fun_l6_n691(x)
+ else
+ fun_l6_n813(x)
+ end
+end
+
+def fun_l5_n657(x)
+ if (x < 1)
+ fun_l6_n671(x)
+ else
+ fun_l6_n683(x)
+ end
+end
+
+def fun_l5_n658(x)
+ if (x < 1)
+ fun_l6_n939(x)
+ else
+ fun_l6_n580(x)
+ end
+end
+
+def fun_l5_n659(x)
+ if (x < 1)
+ fun_l6_n152(x)
+ else
+ fun_l6_n159(x)
+ end
+end
+
+def fun_l5_n660(x)
+ if (x < 1)
+ fun_l6_n50(x)
+ else
+ fun_l6_n911(x)
+ end
+end
+
+def fun_l5_n661(x)
+ if (x < 1)
+ fun_l6_n700(x)
+ else
+ fun_l6_n972(x)
+ end
+end
+
+def fun_l5_n662(x)
+ if (x < 1)
+ fun_l6_n22(x)
+ else
+ fun_l6_n82(x)
+ end
+end
+
+def fun_l5_n663(x)
+ if (x < 1)
+ fun_l6_n51(x)
+ else
+ fun_l6_n827(x)
+ end
+end
+
+def fun_l5_n664(x)
+ if (x < 1)
+ fun_l6_n997(x)
+ else
+ fun_l6_n289(x)
+ end
+end
+
+def fun_l5_n665(x)
+ if (x < 1)
+ fun_l6_n666(x)
+ else
+ fun_l6_n775(x)
+ end
+end
+
+def fun_l5_n666(x)
+ if (x < 1)
+ fun_l6_n373(x)
+ else
+ fun_l6_n175(x)
+ end
+end
+
+def fun_l5_n667(x)
+ if (x < 1)
+ fun_l6_n551(x)
+ else
+ fun_l6_n772(x)
+ end
+end
+
+def fun_l5_n668(x)
+ if (x < 1)
+ fun_l6_n107(x)
+ else
+ fun_l6_n197(x)
+ end
+end
+
+def fun_l5_n669(x)
+ if (x < 1)
+ fun_l6_n244(x)
+ else
+ fun_l6_n968(x)
+ end
+end
+
+def fun_l5_n670(x)
+ if (x < 1)
+ fun_l6_n798(x)
+ else
+ fun_l6_n30(x)
+ end
+end
+
+def fun_l5_n671(x)
+ if (x < 1)
+ fun_l6_n48(x)
+ else
+ fun_l6_n186(x)
+ end
+end
+
+def fun_l5_n672(x)
+ if (x < 1)
+ fun_l6_n373(x)
+ else
+ fun_l6_n937(x)
+ end
+end
+
+def fun_l5_n673(x)
+ if (x < 1)
+ fun_l6_n759(x)
+ else
+ fun_l6_n92(x)
+ end
+end
+
+def fun_l5_n674(x)
+ if (x < 1)
+ fun_l6_n380(x)
+ else
+ fun_l6_n772(x)
+ end
+end
+
+def fun_l5_n675(x)
+ if (x < 1)
+ fun_l6_n916(x)
+ else
+ fun_l6_n329(x)
+ end
+end
+
+def fun_l5_n676(x)
+ if (x < 1)
+ fun_l6_n110(x)
+ else
+ fun_l6_n951(x)
+ end
+end
+
+def fun_l5_n677(x)
+ if (x < 1)
+ fun_l6_n363(x)
+ else
+ fun_l6_n35(x)
+ end
+end
+
+def fun_l5_n678(x)
+ if (x < 1)
+ fun_l6_n484(x)
+ else
+ fun_l6_n492(x)
+ end
+end
+
+def fun_l5_n679(x)
+ if (x < 1)
+ fun_l6_n801(x)
+ else
+ fun_l6_n279(x)
+ end
+end
+
+def fun_l5_n680(x)
+ if (x < 1)
+ fun_l6_n499(x)
+ else
+ fun_l6_n561(x)
+ end
+end
+
+def fun_l5_n681(x)
+ if (x < 1)
+ fun_l6_n800(x)
+ else
+ fun_l6_n890(x)
+ end
+end
+
+def fun_l5_n682(x)
+ if (x < 1)
+ fun_l6_n191(x)
+ else
+ fun_l6_n686(x)
+ end
+end
+
+def fun_l5_n683(x)
+ if (x < 1)
+ fun_l6_n318(x)
+ else
+ fun_l6_n683(x)
+ end
+end
+
+def fun_l5_n684(x)
+ if (x < 1)
+ fun_l6_n500(x)
+ else
+ fun_l6_n914(x)
+ end
+end
+
+def fun_l5_n685(x)
+ if (x < 1)
+ fun_l6_n24(x)
+ else
+ fun_l6_n945(x)
+ end
+end
+
+def fun_l5_n686(x)
+ if (x < 1)
+ fun_l6_n602(x)
+ else
+ fun_l6_n291(x)
+ end
+end
+
+def fun_l5_n687(x)
+ if (x < 1)
+ fun_l6_n999(x)
+ else
+ fun_l6_n86(x)
+ end
+end
+
+def fun_l5_n688(x)
+ if (x < 1)
+ fun_l6_n106(x)
+ else
+ fun_l6_n754(x)
+ end
+end
+
+def fun_l5_n689(x)
+ if (x < 1)
+ fun_l6_n452(x)
+ else
+ fun_l6_n229(x)
+ end
+end
+
+def fun_l5_n690(x)
+ if (x < 1)
+ fun_l6_n672(x)
+ else
+ fun_l6_n587(x)
+ end
+end
+
+def fun_l5_n691(x)
+ if (x < 1)
+ fun_l6_n532(x)
+ else
+ fun_l6_n56(x)
+ end
+end
+
+def fun_l5_n692(x)
+ if (x < 1)
+ fun_l6_n606(x)
+ else
+ fun_l6_n552(x)
+ end
+end
+
+def fun_l5_n693(x)
+ if (x < 1)
+ fun_l6_n742(x)
+ else
+ fun_l6_n862(x)
+ end
+end
+
+def fun_l5_n694(x)
+ if (x < 1)
+ fun_l6_n964(x)
+ else
+ fun_l6_n475(x)
+ end
+end
+
+def fun_l5_n695(x)
+ if (x < 1)
+ fun_l6_n179(x)
+ else
+ fun_l6_n947(x)
+ end
+end
+
+def fun_l5_n696(x)
+ if (x < 1)
+ fun_l6_n563(x)
+ else
+ fun_l6_n329(x)
+ end
+end
+
+def fun_l5_n697(x)
+ if (x < 1)
+ fun_l6_n786(x)
+ else
+ fun_l6_n502(x)
+ end
+end
+
+def fun_l5_n698(x)
+ if (x < 1)
+ fun_l6_n178(x)
+ else
+ fun_l6_n757(x)
+ end
+end
+
+def fun_l5_n699(x)
+ if (x < 1)
+ fun_l6_n248(x)
+ else
+ fun_l6_n288(x)
+ end
+end
+
+def fun_l5_n700(x)
+ if (x < 1)
+ fun_l6_n262(x)
+ else
+ fun_l6_n650(x)
+ end
+end
+
+def fun_l5_n701(x)
+ if (x < 1)
+ fun_l6_n90(x)
+ else
+ fun_l6_n964(x)
+ end
+end
+
+def fun_l5_n702(x)
+ if (x < 1)
+ fun_l6_n864(x)
+ else
+ fun_l6_n743(x)
+ end
+end
+
+def fun_l5_n703(x)
+ if (x < 1)
+ fun_l6_n816(x)
+ else
+ fun_l6_n364(x)
+ end
+end
+
+def fun_l5_n704(x)
+ if (x < 1)
+ fun_l6_n590(x)
+ else
+ fun_l6_n434(x)
+ end
+end
+
+def fun_l5_n705(x)
+ if (x < 1)
+ fun_l6_n875(x)
+ else
+ fun_l6_n539(x)
+ end
+end
+
+def fun_l5_n706(x)
+ if (x < 1)
+ fun_l6_n964(x)
+ else
+ fun_l6_n564(x)
+ end
+end
+
+def fun_l5_n707(x)
+ if (x < 1)
+ fun_l6_n315(x)
+ else
+ fun_l6_n460(x)
+ end
+end
+
+def fun_l5_n708(x)
+ if (x < 1)
+ fun_l6_n139(x)
+ else
+ fun_l6_n210(x)
+ end
+end
+
+def fun_l5_n709(x)
+ if (x < 1)
+ fun_l6_n593(x)
+ else
+ fun_l6_n933(x)
+ end
+end
+
+def fun_l5_n710(x)
+ if (x < 1)
+ fun_l6_n37(x)
+ else
+ fun_l6_n459(x)
+ end
+end
+
+def fun_l5_n711(x)
+ if (x < 1)
+ fun_l6_n768(x)
+ else
+ fun_l6_n256(x)
+ end
+end
+
+def fun_l5_n712(x)
+ if (x < 1)
+ fun_l6_n506(x)
+ else
+ fun_l6_n936(x)
+ end
+end
+
+def fun_l5_n713(x)
+ if (x < 1)
+ fun_l6_n971(x)
+ else
+ fun_l6_n575(x)
+ end
+end
+
+def fun_l5_n714(x)
+ if (x < 1)
+ fun_l6_n498(x)
+ else
+ fun_l6_n932(x)
+ end
+end
+
+def fun_l5_n715(x)
+ if (x < 1)
+ fun_l6_n362(x)
+ else
+ fun_l6_n949(x)
+ end
+end
+
+def fun_l5_n716(x)
+ if (x < 1)
+ fun_l6_n706(x)
+ else
+ fun_l6_n788(x)
+ end
+end
+
+def fun_l5_n717(x)
+ if (x < 1)
+ fun_l6_n405(x)
+ else
+ fun_l6_n803(x)
+ end
+end
+
+def fun_l5_n718(x)
+ if (x < 1)
+ fun_l6_n166(x)
+ else
+ fun_l6_n917(x)
+ end
+end
+
+def fun_l5_n719(x)
+ if (x < 1)
+ fun_l6_n899(x)
+ else
+ fun_l6_n836(x)
+ end
+end
+
+def fun_l5_n720(x)
+ if (x < 1)
+ fun_l6_n805(x)
+ else
+ fun_l6_n159(x)
+ end
+end
+
+def fun_l5_n721(x)
+ if (x < 1)
+ fun_l6_n960(x)
+ else
+ fun_l6_n113(x)
+ end
+end
+
+def fun_l5_n722(x)
+ if (x < 1)
+ fun_l6_n807(x)
+ else
+ fun_l6_n533(x)
+ end
+end
+
+def fun_l5_n723(x)
+ if (x < 1)
+ fun_l6_n480(x)
+ else
+ fun_l6_n907(x)
+ end
+end
+
+def fun_l5_n724(x)
+ if (x < 1)
+ fun_l6_n951(x)
+ else
+ fun_l6_n793(x)
+ end
+end
+
+def fun_l5_n725(x)
+ if (x < 1)
+ fun_l6_n951(x)
+ else
+ fun_l6_n771(x)
+ end
+end
+
+def fun_l5_n726(x)
+ if (x < 1)
+ fun_l6_n435(x)
+ else
+ fun_l6_n336(x)
+ end
+end
+
+def fun_l5_n727(x)
+ if (x < 1)
+ fun_l6_n222(x)
+ else
+ fun_l6_n393(x)
+ end
+end
+
+def fun_l5_n728(x)
+ if (x < 1)
+ fun_l6_n988(x)
+ else
+ fun_l6_n402(x)
+ end
+end
+
+def fun_l5_n729(x)
+ if (x < 1)
+ fun_l6_n9(x)
+ else
+ fun_l6_n46(x)
+ end
+end
+
+def fun_l5_n730(x)
+ if (x < 1)
+ fun_l6_n722(x)
+ else
+ fun_l6_n112(x)
+ end
+end
+
+def fun_l5_n731(x)
+ if (x < 1)
+ fun_l6_n543(x)
+ else
+ fun_l6_n813(x)
+ end
+end
+
+def fun_l5_n732(x)
+ if (x < 1)
+ fun_l6_n337(x)
+ else
+ fun_l6_n245(x)
+ end
+end
+
+def fun_l5_n733(x)
+ if (x < 1)
+ fun_l6_n84(x)
+ else
+ fun_l6_n335(x)
+ end
+end
+
+def fun_l5_n734(x)
+ if (x < 1)
+ fun_l6_n697(x)
+ else
+ fun_l6_n498(x)
+ end
+end
+
+def fun_l5_n735(x)
+ if (x < 1)
+ fun_l6_n2(x)
+ else
+ fun_l6_n895(x)
+ end
+end
+
+def fun_l5_n736(x)
+ if (x < 1)
+ fun_l6_n619(x)
+ else
+ fun_l6_n163(x)
+ end
+end
+
+def fun_l5_n737(x)
+ if (x < 1)
+ fun_l6_n237(x)
+ else
+ fun_l6_n6(x)
+ end
+end
+
+def fun_l5_n738(x)
+ if (x < 1)
+ fun_l6_n259(x)
+ else
+ fun_l6_n95(x)
+ end
+end
+
+def fun_l5_n739(x)
+ if (x < 1)
+ fun_l6_n98(x)
+ else
+ fun_l6_n331(x)
+ end
+end
+
+def fun_l5_n740(x)
+ if (x < 1)
+ fun_l6_n489(x)
+ else
+ fun_l6_n305(x)
+ end
+end
+
+def fun_l5_n741(x)
+ if (x < 1)
+ fun_l6_n493(x)
+ else
+ fun_l6_n525(x)
+ end
+end
+
+def fun_l5_n742(x)
+ if (x < 1)
+ fun_l6_n269(x)
+ else
+ fun_l6_n742(x)
+ end
+end
+
+def fun_l5_n743(x)
+ if (x < 1)
+ fun_l6_n194(x)
+ else
+ fun_l6_n254(x)
+ end
+end
+
+def fun_l5_n744(x)
+ if (x < 1)
+ fun_l6_n247(x)
+ else
+ fun_l6_n909(x)
+ end
+end
+
+def fun_l5_n745(x)
+ if (x < 1)
+ fun_l6_n388(x)
+ else
+ fun_l6_n657(x)
+ end
+end
+
+def fun_l5_n746(x)
+ if (x < 1)
+ fun_l6_n27(x)
+ else
+ fun_l6_n286(x)
+ end
+end
+
+def fun_l5_n747(x)
+ if (x < 1)
+ fun_l6_n659(x)
+ else
+ fun_l6_n895(x)
+ end
+end
+
+def fun_l5_n748(x)
+ if (x < 1)
+ fun_l6_n538(x)
+ else
+ fun_l6_n667(x)
+ end
+end
+
+def fun_l5_n749(x)
+ if (x < 1)
+ fun_l6_n208(x)
+ else
+ fun_l6_n493(x)
+ end
+end
+
+def fun_l5_n750(x)
+ if (x < 1)
+ fun_l6_n326(x)
+ else
+ fun_l6_n570(x)
+ end
+end
+
+def fun_l5_n751(x)
+ if (x < 1)
+ fun_l6_n437(x)
+ else
+ fun_l6_n716(x)
+ end
+end
+
+def fun_l5_n752(x)
+ if (x < 1)
+ fun_l6_n957(x)
+ else
+ fun_l6_n231(x)
+ end
+end
+
+def fun_l5_n753(x)
+ if (x < 1)
+ fun_l6_n846(x)
+ else
+ fun_l6_n900(x)
+ end
+end
+
+def fun_l5_n754(x)
+ if (x < 1)
+ fun_l6_n81(x)
+ else
+ fun_l6_n464(x)
+ end
+end
+
+def fun_l5_n755(x)
+ if (x < 1)
+ fun_l6_n735(x)
+ else
+ fun_l6_n232(x)
+ end
+end
+
+def fun_l5_n756(x)
+ if (x < 1)
+ fun_l6_n577(x)
+ else
+ fun_l6_n804(x)
+ end
+end
+
+def fun_l5_n757(x)
+ if (x < 1)
+ fun_l6_n363(x)
+ else
+ fun_l6_n155(x)
+ end
+end
+
+def fun_l5_n758(x)
+ if (x < 1)
+ fun_l6_n534(x)
+ else
+ fun_l6_n827(x)
+ end
+end
+
+def fun_l5_n759(x)
+ if (x < 1)
+ fun_l6_n711(x)
+ else
+ fun_l6_n53(x)
+ end
+end
+
+def fun_l5_n760(x)
+ if (x < 1)
+ fun_l6_n80(x)
+ else
+ fun_l6_n734(x)
+ end
+end
+
+def fun_l5_n761(x)
+ if (x < 1)
+ fun_l6_n811(x)
+ else
+ fun_l6_n691(x)
+ end
+end
+
+def fun_l5_n762(x)
+ if (x < 1)
+ fun_l6_n847(x)
+ else
+ fun_l6_n570(x)
+ end
+end
+
+def fun_l5_n763(x)
+ if (x < 1)
+ fun_l6_n30(x)
+ else
+ fun_l6_n283(x)
+ end
+end
+
+def fun_l5_n764(x)
+ if (x < 1)
+ fun_l6_n270(x)
+ else
+ fun_l6_n965(x)
+ end
+end
+
+def fun_l5_n765(x)
+ if (x < 1)
+ fun_l6_n936(x)
+ else
+ fun_l6_n772(x)
+ end
+end
+
+def fun_l5_n766(x)
+ if (x < 1)
+ fun_l6_n181(x)
+ else
+ fun_l6_n682(x)
+ end
+end
+
+def fun_l5_n767(x)
+ if (x < 1)
+ fun_l6_n327(x)
+ else
+ fun_l6_n5(x)
+ end
+end
+
+def fun_l5_n768(x)
+ if (x < 1)
+ fun_l6_n296(x)
+ else
+ fun_l6_n940(x)
+ end
+end
+
+def fun_l5_n769(x)
+ if (x < 1)
+ fun_l6_n543(x)
+ else
+ fun_l6_n871(x)
+ end
+end
+
+def fun_l5_n770(x)
+ if (x < 1)
+ fun_l6_n670(x)
+ else
+ fun_l6_n128(x)
+ end
+end
+
+def fun_l5_n771(x)
+ if (x < 1)
+ fun_l6_n184(x)
+ else
+ fun_l6_n794(x)
+ end
+end
+
+def fun_l5_n772(x)
+ if (x < 1)
+ fun_l6_n571(x)
+ else
+ fun_l6_n337(x)
+ end
+end
+
+def fun_l5_n773(x)
+ if (x < 1)
+ fun_l6_n674(x)
+ else
+ fun_l6_n712(x)
+ end
+end
+
+def fun_l5_n774(x)
+ if (x < 1)
+ fun_l6_n572(x)
+ else
+ fun_l6_n944(x)
+ end
+end
+
+def fun_l5_n775(x)
+ if (x < 1)
+ fun_l6_n122(x)
+ else
+ fun_l6_n897(x)
+ end
+end
+
+def fun_l5_n776(x)
+ if (x < 1)
+ fun_l6_n461(x)
+ else
+ fun_l6_n202(x)
+ end
+end
+
+def fun_l5_n777(x)
+ if (x < 1)
+ fun_l6_n99(x)
+ else
+ fun_l6_n256(x)
+ end
+end
+
+def fun_l5_n778(x)
+ if (x < 1)
+ fun_l6_n547(x)
+ else
+ fun_l6_n138(x)
+ end
+end
+
+def fun_l5_n779(x)
+ if (x < 1)
+ fun_l6_n56(x)
+ else
+ fun_l6_n682(x)
+ end
+end
+
+def fun_l5_n780(x)
+ if (x < 1)
+ fun_l6_n10(x)
+ else
+ fun_l6_n238(x)
+ end
+end
+
+def fun_l5_n781(x)
+ if (x < 1)
+ fun_l6_n577(x)
+ else
+ fun_l6_n590(x)
+ end
+end
+
+def fun_l5_n782(x)
+ if (x < 1)
+ fun_l6_n415(x)
+ else
+ fun_l6_n522(x)
+ end
+end
+
+def fun_l5_n783(x)
+ if (x < 1)
+ fun_l6_n255(x)
+ else
+ fun_l6_n182(x)
+ end
+end
+
+def fun_l5_n784(x)
+ if (x < 1)
+ fun_l6_n755(x)
+ else
+ fun_l6_n644(x)
+ end
+end
+
+def fun_l5_n785(x)
+ if (x < 1)
+ fun_l6_n39(x)
+ else
+ fun_l6_n296(x)
+ end
+end
+
+def fun_l5_n786(x)
+ if (x < 1)
+ fun_l6_n17(x)
+ else
+ fun_l6_n811(x)
+ end
+end
+
+def fun_l5_n787(x)
+ if (x < 1)
+ fun_l6_n814(x)
+ else
+ fun_l6_n989(x)
+ end
+end
+
+def fun_l5_n788(x)
+ if (x < 1)
+ fun_l6_n791(x)
+ else
+ fun_l6_n688(x)
+ end
+end
+
+def fun_l5_n789(x)
+ if (x < 1)
+ fun_l6_n415(x)
+ else
+ fun_l6_n218(x)
+ end
+end
+
+def fun_l5_n790(x)
+ if (x < 1)
+ fun_l6_n227(x)
+ else
+ fun_l6_n391(x)
+ end
+end
+
+def fun_l5_n791(x)
+ if (x < 1)
+ fun_l6_n232(x)
+ else
+ fun_l6_n644(x)
+ end
+end
+
+def fun_l5_n792(x)
+ if (x < 1)
+ fun_l6_n325(x)
+ else
+ fun_l6_n740(x)
+ end
+end
+
+def fun_l5_n793(x)
+ if (x < 1)
+ fun_l6_n926(x)
+ else
+ fun_l6_n133(x)
+ end
+end
+
+def fun_l5_n794(x)
+ if (x < 1)
+ fun_l6_n114(x)
+ else
+ fun_l6_n76(x)
+ end
+end
+
+def fun_l5_n795(x)
+ if (x < 1)
+ fun_l6_n332(x)
+ else
+ fun_l6_n198(x)
+ end
+end
+
+def fun_l5_n796(x)
+ if (x < 1)
+ fun_l6_n584(x)
+ else
+ fun_l6_n298(x)
+ end
+end
+
+def fun_l5_n797(x)
+ if (x < 1)
+ fun_l6_n966(x)
+ else
+ fun_l6_n956(x)
+ end
+end
+
+def fun_l5_n798(x)
+ if (x < 1)
+ fun_l6_n604(x)
+ else
+ fun_l6_n311(x)
+ end
+end
+
+def fun_l5_n799(x)
+ if (x < 1)
+ fun_l6_n444(x)
+ else
+ fun_l6_n934(x)
+ end
+end
+
+def fun_l5_n800(x)
+ if (x < 1)
+ fun_l6_n805(x)
+ else
+ fun_l6_n83(x)
+ end
+end
+
+def fun_l5_n801(x)
+ if (x < 1)
+ fun_l6_n996(x)
+ else
+ fun_l6_n282(x)
+ end
+end
+
+def fun_l5_n802(x)
+ if (x < 1)
+ fun_l6_n759(x)
+ else
+ fun_l6_n681(x)
+ end
+end
+
+def fun_l5_n803(x)
+ if (x < 1)
+ fun_l6_n480(x)
+ else
+ fun_l6_n536(x)
+ end
+end
+
+def fun_l5_n804(x)
+ if (x < 1)
+ fun_l6_n536(x)
+ else
+ fun_l6_n64(x)
+ end
+end
+
+def fun_l5_n805(x)
+ if (x < 1)
+ fun_l6_n992(x)
+ else
+ fun_l6_n116(x)
+ end
+end
+
+def fun_l5_n806(x)
+ if (x < 1)
+ fun_l6_n446(x)
+ else
+ fun_l6_n553(x)
+ end
+end
+
+def fun_l5_n807(x)
+ if (x < 1)
+ fun_l6_n822(x)
+ else
+ fun_l6_n80(x)
+ end
+end
+
+def fun_l5_n808(x)
+ if (x < 1)
+ fun_l6_n912(x)
+ else
+ fun_l6_n525(x)
+ end
+end
+
+def fun_l5_n809(x)
+ if (x < 1)
+ fun_l6_n824(x)
+ else
+ fun_l6_n356(x)
+ end
+end
+
+def fun_l5_n810(x)
+ if (x < 1)
+ fun_l6_n144(x)
+ else
+ fun_l6_n193(x)
+ end
+end
+
+def fun_l5_n811(x)
+ if (x < 1)
+ fun_l6_n27(x)
+ else
+ fun_l6_n810(x)
+ end
+end
+
+def fun_l5_n812(x)
+ if (x < 1)
+ fun_l6_n244(x)
+ else
+ fun_l6_n696(x)
+ end
+end
+
+def fun_l5_n813(x)
+ if (x < 1)
+ fun_l6_n408(x)
+ else
+ fun_l6_n46(x)
+ end
+end
+
+def fun_l5_n814(x)
+ if (x < 1)
+ fun_l6_n496(x)
+ else
+ fun_l6_n149(x)
+ end
+end
+
+def fun_l5_n815(x)
+ if (x < 1)
+ fun_l6_n100(x)
+ else
+ fun_l6_n765(x)
+ end
+end
+
+def fun_l5_n816(x)
+ if (x < 1)
+ fun_l6_n731(x)
+ else
+ fun_l6_n953(x)
+ end
+end
+
+def fun_l5_n817(x)
+ if (x < 1)
+ fun_l6_n997(x)
+ else
+ fun_l6_n849(x)
+ end
+end
+
+def fun_l5_n818(x)
+ if (x < 1)
+ fun_l6_n570(x)
+ else
+ fun_l6_n918(x)
+ end
+end
+
+def fun_l5_n819(x)
+ if (x < 1)
+ fun_l6_n473(x)
+ else
+ fun_l6_n955(x)
+ end
+end
+
+def fun_l5_n820(x)
+ if (x < 1)
+ fun_l6_n691(x)
+ else
+ fun_l6_n271(x)
+ end
+end
+
+def fun_l5_n821(x)
+ if (x < 1)
+ fun_l6_n935(x)
+ else
+ fun_l6_n386(x)
+ end
+end
+
+def fun_l5_n822(x)
+ if (x < 1)
+ fun_l6_n210(x)
+ else
+ fun_l6_n871(x)
+ end
+end
+
+def fun_l5_n823(x)
+ if (x < 1)
+ fun_l6_n907(x)
+ else
+ fun_l6_n596(x)
+ end
+end
+
+def fun_l5_n824(x)
+ if (x < 1)
+ fun_l6_n701(x)
+ else
+ fun_l6_n541(x)
+ end
+end
+
+def fun_l5_n825(x)
+ if (x < 1)
+ fun_l6_n477(x)
+ else
+ fun_l6_n207(x)
+ end
+end
+
+def fun_l5_n826(x)
+ if (x < 1)
+ fun_l6_n95(x)
+ else
+ fun_l6_n26(x)
+ end
+end
+
+def fun_l5_n827(x)
+ if (x < 1)
+ fun_l6_n908(x)
+ else
+ fun_l6_n369(x)
+ end
+end
+
+def fun_l5_n828(x)
+ if (x < 1)
+ fun_l6_n213(x)
+ else
+ fun_l6_n607(x)
+ end
+end
+
+def fun_l5_n829(x)
+ if (x < 1)
+ fun_l6_n763(x)
+ else
+ fun_l6_n753(x)
+ end
+end
+
+def fun_l5_n830(x)
+ if (x < 1)
+ fun_l6_n24(x)
+ else
+ fun_l6_n157(x)
+ end
+end
+
+def fun_l5_n831(x)
+ if (x < 1)
+ fun_l6_n262(x)
+ else
+ fun_l6_n826(x)
+ end
+end
+
+def fun_l5_n832(x)
+ if (x < 1)
+ fun_l6_n743(x)
+ else
+ fun_l6_n37(x)
+ end
+end
+
+def fun_l5_n833(x)
+ if (x < 1)
+ fun_l6_n532(x)
+ else
+ fun_l6_n31(x)
+ end
+end
+
+def fun_l5_n834(x)
+ if (x < 1)
+ fun_l6_n309(x)
+ else
+ fun_l6_n454(x)
+ end
+end
+
+def fun_l5_n835(x)
+ if (x < 1)
+ fun_l6_n917(x)
+ else
+ fun_l6_n721(x)
+ end
+end
+
+def fun_l5_n836(x)
+ if (x < 1)
+ fun_l6_n376(x)
+ else
+ fun_l6_n758(x)
+ end
+end
+
+def fun_l5_n837(x)
+ if (x < 1)
+ fun_l6_n558(x)
+ else
+ fun_l6_n474(x)
+ end
+end
+
+def fun_l5_n838(x)
+ if (x < 1)
+ fun_l6_n436(x)
+ else
+ fun_l6_n675(x)
+ end
+end
+
+def fun_l5_n839(x)
+ if (x < 1)
+ fun_l6_n720(x)
+ else
+ fun_l6_n12(x)
+ end
+end
+
+def fun_l5_n840(x)
+ if (x < 1)
+ fun_l6_n957(x)
+ else
+ fun_l6_n200(x)
+ end
+end
+
+def fun_l5_n841(x)
+ if (x < 1)
+ fun_l6_n180(x)
+ else
+ fun_l6_n644(x)
+ end
+end
+
+def fun_l5_n842(x)
+ if (x < 1)
+ fun_l6_n510(x)
+ else
+ fun_l6_n73(x)
+ end
+end
+
+def fun_l5_n843(x)
+ if (x < 1)
+ fun_l6_n812(x)
+ else
+ fun_l6_n954(x)
+ end
+end
+
+def fun_l5_n844(x)
+ if (x < 1)
+ fun_l6_n566(x)
+ else
+ fun_l6_n866(x)
+ end
+end
+
+def fun_l5_n845(x)
+ if (x < 1)
+ fun_l6_n641(x)
+ else
+ fun_l6_n11(x)
+ end
+end
+
+def fun_l5_n846(x)
+ if (x < 1)
+ fun_l6_n607(x)
+ else
+ fun_l6_n884(x)
+ end
+end
+
+def fun_l5_n847(x)
+ if (x < 1)
+ fun_l6_n479(x)
+ else
+ fun_l6_n564(x)
+ end
+end
+
+def fun_l5_n848(x)
+ if (x < 1)
+ fun_l6_n365(x)
+ else
+ fun_l6_n285(x)
+ end
+end
+
+def fun_l5_n849(x)
+ if (x < 1)
+ fun_l6_n296(x)
+ else
+ fun_l6_n708(x)
+ end
+end
+
+def fun_l5_n850(x)
+ if (x < 1)
+ fun_l6_n429(x)
+ else
+ fun_l6_n758(x)
+ end
+end
+
+def fun_l5_n851(x)
+ if (x < 1)
+ fun_l6_n881(x)
+ else
+ fun_l6_n848(x)
+ end
+end
+
+def fun_l5_n852(x)
+ if (x < 1)
+ fun_l6_n257(x)
+ else
+ fun_l6_n51(x)
+ end
+end
+
+def fun_l5_n853(x)
+ if (x < 1)
+ fun_l6_n441(x)
+ else
+ fun_l6_n445(x)
+ end
+end
+
+def fun_l5_n854(x)
+ if (x < 1)
+ fun_l6_n80(x)
+ else
+ fun_l6_n767(x)
+ end
+end
+
+def fun_l5_n855(x)
+ if (x < 1)
+ fun_l6_n196(x)
+ else
+ fun_l6_n41(x)
+ end
+end
+
+def fun_l5_n856(x)
+ if (x < 1)
+ fun_l6_n548(x)
+ else
+ fun_l6_n860(x)
+ end
+end
+
+def fun_l5_n857(x)
+ if (x < 1)
+ fun_l6_n380(x)
+ else
+ fun_l6_n601(x)
+ end
+end
+
+def fun_l5_n858(x)
+ if (x < 1)
+ fun_l6_n272(x)
+ else
+ fun_l6_n376(x)
+ end
+end
+
+def fun_l5_n859(x)
+ if (x < 1)
+ fun_l6_n179(x)
+ else
+ fun_l6_n978(x)
+ end
+end
+
+def fun_l5_n860(x)
+ if (x < 1)
+ fun_l6_n52(x)
+ else
+ fun_l6_n827(x)
+ end
+end
+
+def fun_l5_n861(x)
+ if (x < 1)
+ fun_l6_n611(x)
+ else
+ fun_l6_n929(x)
+ end
+end
+
+def fun_l5_n862(x)
+ if (x < 1)
+ fun_l6_n179(x)
+ else
+ fun_l6_n171(x)
+ end
+end
+
+def fun_l5_n863(x)
+ if (x < 1)
+ fun_l6_n611(x)
+ else
+ fun_l6_n663(x)
+ end
+end
+
+def fun_l5_n864(x)
+ if (x < 1)
+ fun_l6_n539(x)
+ else
+ fun_l6_n356(x)
+ end
+end
+
+def fun_l5_n865(x)
+ if (x < 1)
+ fun_l6_n401(x)
+ else
+ fun_l6_n302(x)
+ end
+end
+
+def fun_l5_n866(x)
+ if (x < 1)
+ fun_l6_n94(x)
+ else
+ fun_l6_n761(x)
+ end
+end
+
+def fun_l5_n867(x)
+ if (x < 1)
+ fun_l6_n818(x)
+ else
+ fun_l6_n500(x)
+ end
+end
+
+def fun_l5_n868(x)
+ if (x < 1)
+ fun_l6_n956(x)
+ else
+ fun_l6_n661(x)
+ end
+end
+
+def fun_l5_n869(x)
+ if (x < 1)
+ fun_l6_n628(x)
+ else
+ fun_l6_n765(x)
+ end
+end
+
+def fun_l5_n870(x)
+ if (x < 1)
+ fun_l6_n654(x)
+ else
+ fun_l6_n181(x)
+ end
+end
+
+def fun_l5_n871(x)
+ if (x < 1)
+ fun_l6_n70(x)
+ else
+ fun_l6_n157(x)
+ end
+end
+
+def fun_l5_n872(x)
+ if (x < 1)
+ fun_l6_n133(x)
+ else
+ fun_l6_n806(x)
+ end
+end
+
+def fun_l5_n873(x)
+ if (x < 1)
+ fun_l6_n100(x)
+ else
+ fun_l6_n479(x)
+ end
+end
+
+def fun_l5_n874(x)
+ if (x < 1)
+ fun_l6_n401(x)
+ else
+ fun_l6_n567(x)
+ end
+end
+
+def fun_l5_n875(x)
+ if (x < 1)
+ fun_l6_n399(x)
+ else
+ fun_l6_n369(x)
+ end
+end
+
+def fun_l5_n876(x)
+ if (x < 1)
+ fun_l6_n412(x)
+ else
+ fun_l6_n763(x)
+ end
+end
+
+def fun_l5_n877(x)
+ if (x < 1)
+ fun_l6_n498(x)
+ else
+ fun_l6_n192(x)
+ end
+end
+
+def fun_l5_n878(x)
+ if (x < 1)
+ fun_l6_n798(x)
+ else
+ fun_l6_n473(x)
+ end
+end
+
+def fun_l5_n879(x)
+ if (x < 1)
+ fun_l6_n166(x)
+ else
+ fun_l6_n301(x)
+ end
+end
+
+def fun_l5_n880(x)
+ if (x < 1)
+ fun_l6_n616(x)
+ else
+ fun_l6_n28(x)
+ end
+end
+
+def fun_l5_n881(x)
+ if (x < 1)
+ fun_l6_n315(x)
+ else
+ fun_l6_n92(x)
+ end
+end
+
+def fun_l5_n882(x)
+ if (x < 1)
+ fun_l6_n548(x)
+ else
+ fun_l6_n41(x)
+ end
+end
+
+def fun_l5_n883(x)
+ if (x < 1)
+ fun_l6_n279(x)
+ else
+ fun_l6_n72(x)
+ end
+end
+
+def fun_l5_n884(x)
+ if (x < 1)
+ fun_l6_n206(x)
+ else
+ fun_l6_n384(x)
+ end
+end
+
+def fun_l5_n885(x)
+ if (x < 1)
+ fun_l6_n191(x)
+ else
+ fun_l6_n84(x)
+ end
+end
+
+def fun_l5_n886(x)
+ if (x < 1)
+ fun_l6_n960(x)
+ else
+ fun_l6_n495(x)
+ end
+end
+
+def fun_l5_n887(x)
+ if (x < 1)
+ fun_l6_n459(x)
+ else
+ fun_l6_n757(x)
+ end
+end
+
+def fun_l5_n888(x)
+ if (x < 1)
+ fun_l6_n634(x)
+ else
+ fun_l6_n463(x)
+ end
+end
+
+def fun_l5_n889(x)
+ if (x < 1)
+ fun_l6_n611(x)
+ else
+ fun_l6_n469(x)
+ end
+end
+
+def fun_l5_n890(x)
+ if (x < 1)
+ fun_l6_n787(x)
+ else
+ fun_l6_n707(x)
+ end
+end
+
+def fun_l5_n891(x)
+ if (x < 1)
+ fun_l6_n201(x)
+ else
+ fun_l6_n223(x)
+ end
+end
+
+def fun_l5_n892(x)
+ if (x < 1)
+ fun_l6_n214(x)
+ else
+ fun_l6_n303(x)
+ end
+end
+
+def fun_l5_n893(x)
+ if (x < 1)
+ fun_l6_n85(x)
+ else
+ fun_l6_n802(x)
+ end
+end
+
+def fun_l5_n894(x)
+ if (x < 1)
+ fun_l6_n816(x)
+ else
+ fun_l6_n325(x)
+ end
+end
+
+def fun_l5_n895(x)
+ if (x < 1)
+ fun_l6_n491(x)
+ else
+ fun_l6_n907(x)
+ end
+end
+
+def fun_l5_n896(x)
+ if (x < 1)
+ fun_l6_n809(x)
+ else
+ fun_l6_n364(x)
+ end
+end
+
+def fun_l5_n897(x)
+ if (x < 1)
+ fun_l6_n739(x)
+ else
+ fun_l6_n192(x)
+ end
+end
+
+def fun_l5_n898(x)
+ if (x < 1)
+ fun_l6_n461(x)
+ else
+ fun_l6_n594(x)
+ end
+end
+
+def fun_l5_n899(x)
+ if (x < 1)
+ fun_l6_n256(x)
+ else
+ fun_l6_n521(x)
+ end
+end
+
+def fun_l5_n900(x)
+ if (x < 1)
+ fun_l6_n6(x)
+ else
+ fun_l6_n127(x)
+ end
+end
+
+def fun_l5_n901(x)
+ if (x < 1)
+ fun_l6_n655(x)
+ else
+ fun_l6_n426(x)
+ end
+end
+
+def fun_l5_n902(x)
+ if (x < 1)
+ fun_l6_n936(x)
+ else
+ fun_l6_n275(x)
+ end
+end
+
+def fun_l5_n903(x)
+ if (x < 1)
+ fun_l6_n738(x)
+ else
+ fun_l6_n654(x)
+ end
+end
+
+def fun_l5_n904(x)
+ if (x < 1)
+ fun_l6_n583(x)
+ else
+ fun_l6_n600(x)
+ end
+end
+
+def fun_l5_n905(x)
+ if (x < 1)
+ fun_l6_n228(x)
+ else
+ fun_l6_n591(x)
+ end
+end
+
+def fun_l5_n906(x)
+ if (x < 1)
+ fun_l6_n292(x)
+ else
+ fun_l6_n55(x)
+ end
+end
+
+def fun_l5_n907(x)
+ if (x < 1)
+ fun_l6_n457(x)
+ else
+ fun_l6_n513(x)
+ end
+end
+
+def fun_l5_n908(x)
+ if (x < 1)
+ fun_l6_n542(x)
+ else
+ fun_l6_n593(x)
+ end
+end
+
+def fun_l5_n909(x)
+ if (x < 1)
+ fun_l6_n478(x)
+ else
+ fun_l6_n782(x)
+ end
+end
+
+def fun_l5_n910(x)
+ if (x < 1)
+ fun_l6_n780(x)
+ else
+ fun_l6_n275(x)
+ end
+end
+
+def fun_l5_n911(x)
+ if (x < 1)
+ fun_l6_n631(x)
+ else
+ fun_l6_n811(x)
+ end
+end
+
+def fun_l5_n912(x)
+ if (x < 1)
+ fun_l6_n17(x)
+ else
+ fun_l6_n837(x)
+ end
+end
+
+def fun_l5_n913(x)
+ if (x < 1)
+ fun_l6_n607(x)
+ else
+ fun_l6_n159(x)
+ end
+end
+
+def fun_l5_n914(x)
+ if (x < 1)
+ fun_l6_n23(x)
+ else
+ fun_l6_n70(x)
+ end
+end
+
+def fun_l5_n915(x)
+ if (x < 1)
+ fun_l6_n778(x)
+ else
+ fun_l6_n643(x)
+ end
+end
+
+def fun_l5_n916(x)
+ if (x < 1)
+ fun_l6_n707(x)
+ else
+ fun_l6_n121(x)
+ end
+end
+
+def fun_l5_n917(x)
+ if (x < 1)
+ fun_l6_n816(x)
+ else
+ fun_l6_n67(x)
+ end
+end
+
+def fun_l5_n918(x)
+ if (x < 1)
+ fun_l6_n963(x)
+ else
+ fun_l6_n520(x)
+ end
+end
+
+def fun_l5_n919(x)
+ if (x < 1)
+ fun_l6_n251(x)
+ else
+ fun_l6_n111(x)
+ end
+end
+
+def fun_l5_n920(x)
+ if (x < 1)
+ fun_l6_n198(x)
+ else
+ fun_l6_n872(x)
+ end
+end
+
+def fun_l5_n921(x)
+ if (x < 1)
+ fun_l6_n364(x)
+ else
+ fun_l6_n369(x)
+ end
+end
+
+def fun_l5_n922(x)
+ if (x < 1)
+ fun_l6_n7(x)
+ else
+ fun_l6_n314(x)
+ end
+end
+
+def fun_l5_n923(x)
+ if (x < 1)
+ fun_l6_n578(x)
+ else
+ fun_l6_n502(x)
+ end
+end
+
+def fun_l5_n924(x)
+ if (x < 1)
+ fun_l6_n450(x)
+ else
+ fun_l6_n680(x)
+ end
+end
+
+def fun_l5_n925(x)
+ if (x < 1)
+ fun_l6_n469(x)
+ else
+ fun_l6_n973(x)
+ end
+end
+
+def fun_l5_n926(x)
+ if (x < 1)
+ fun_l6_n114(x)
+ else
+ fun_l6_n862(x)
+ end
+end
+
+def fun_l5_n927(x)
+ if (x < 1)
+ fun_l6_n786(x)
+ else
+ fun_l6_n861(x)
+ end
+end
+
+def fun_l5_n928(x)
+ if (x < 1)
+ fun_l6_n40(x)
+ else
+ fun_l6_n665(x)
+ end
+end
+
+def fun_l5_n929(x)
+ if (x < 1)
+ fun_l6_n997(x)
+ else
+ fun_l6_n137(x)
+ end
+end
+
+def fun_l5_n930(x)
+ if (x < 1)
+ fun_l6_n547(x)
+ else
+ fun_l6_n547(x)
+ end
+end
+
+def fun_l5_n931(x)
+ if (x < 1)
+ fun_l6_n310(x)
+ else
+ fun_l6_n986(x)
+ end
+end
+
+def fun_l5_n932(x)
+ if (x < 1)
+ fun_l6_n339(x)
+ else
+ fun_l6_n18(x)
+ end
+end
+
+def fun_l5_n933(x)
+ if (x < 1)
+ fun_l6_n825(x)
+ else
+ fun_l6_n418(x)
+ end
+end
+
+def fun_l5_n934(x)
+ if (x < 1)
+ fun_l6_n509(x)
+ else
+ fun_l6_n589(x)
+ end
+end
+
+def fun_l5_n935(x)
+ if (x < 1)
+ fun_l6_n936(x)
+ else
+ fun_l6_n113(x)
+ end
+end
+
+def fun_l5_n936(x)
+ if (x < 1)
+ fun_l6_n530(x)
+ else
+ fun_l6_n841(x)
+ end
+end
+
+def fun_l5_n937(x)
+ if (x < 1)
+ fun_l6_n431(x)
+ else
+ fun_l6_n531(x)
+ end
+end
+
+def fun_l5_n938(x)
+ if (x < 1)
+ fun_l6_n791(x)
+ else
+ fun_l6_n41(x)
+ end
+end
+
+def fun_l5_n939(x)
+ if (x < 1)
+ fun_l6_n873(x)
+ else
+ fun_l6_n336(x)
+ end
+end
+
+def fun_l5_n940(x)
+ if (x < 1)
+ fun_l6_n925(x)
+ else
+ fun_l6_n746(x)
+ end
+end
+
+def fun_l5_n941(x)
+ if (x < 1)
+ fun_l6_n995(x)
+ else
+ fun_l6_n29(x)
+ end
+end
+
+def fun_l5_n942(x)
+ if (x < 1)
+ fun_l6_n984(x)
+ else
+ fun_l6_n455(x)
+ end
+end
+
+def fun_l5_n943(x)
+ if (x < 1)
+ fun_l6_n660(x)
+ else
+ fun_l6_n934(x)
+ end
+end
+
+def fun_l5_n944(x)
+ if (x < 1)
+ fun_l6_n625(x)
+ else
+ fun_l6_n523(x)
+ end
+end
+
+def fun_l5_n945(x)
+ if (x < 1)
+ fun_l6_n407(x)
+ else
+ fun_l6_n766(x)
+ end
+end
+
+def fun_l5_n946(x)
+ if (x < 1)
+ fun_l6_n80(x)
+ else
+ fun_l6_n75(x)
+ end
+end
+
+def fun_l5_n947(x)
+ if (x < 1)
+ fun_l6_n465(x)
+ else
+ fun_l6_n57(x)
+ end
+end
+
+def fun_l5_n948(x)
+ if (x < 1)
+ fun_l6_n750(x)
+ else
+ fun_l6_n278(x)
+ end
+end
+
+def fun_l5_n949(x)
+ if (x < 1)
+ fun_l6_n917(x)
+ else
+ fun_l6_n472(x)
+ end
+end
+
+def fun_l5_n950(x)
+ if (x < 1)
+ fun_l6_n917(x)
+ else
+ fun_l6_n71(x)
+ end
+end
+
+def fun_l5_n951(x)
+ if (x < 1)
+ fun_l6_n420(x)
+ else
+ fun_l6_n132(x)
+ end
+end
+
+def fun_l5_n952(x)
+ if (x < 1)
+ fun_l6_n112(x)
+ else
+ fun_l6_n396(x)
+ end
+end
+
+def fun_l5_n953(x)
+ if (x < 1)
+ fun_l6_n705(x)
+ else
+ fun_l6_n978(x)
+ end
+end
+
+def fun_l5_n954(x)
+ if (x < 1)
+ fun_l6_n761(x)
+ else
+ fun_l6_n136(x)
+ end
+end
+
+def fun_l5_n955(x)
+ if (x < 1)
+ fun_l6_n518(x)
+ else
+ fun_l6_n687(x)
+ end
+end
+
+def fun_l5_n956(x)
+ if (x < 1)
+ fun_l6_n308(x)
+ else
+ fun_l6_n34(x)
+ end
+end
+
+def fun_l5_n957(x)
+ if (x < 1)
+ fun_l6_n904(x)
+ else
+ fun_l6_n129(x)
+ end
+end
+
+def fun_l5_n958(x)
+ if (x < 1)
+ fun_l6_n271(x)
+ else
+ fun_l6_n444(x)
+ end
+end
+
+def fun_l5_n959(x)
+ if (x < 1)
+ fun_l6_n690(x)
+ else
+ fun_l6_n118(x)
+ end
+end
+
+def fun_l5_n960(x)
+ if (x < 1)
+ fun_l6_n509(x)
+ else
+ fun_l6_n957(x)
+ end
+end
+
+def fun_l5_n961(x)
+ if (x < 1)
+ fun_l6_n889(x)
+ else
+ fun_l6_n26(x)
+ end
+end
+
+def fun_l5_n962(x)
+ if (x < 1)
+ fun_l6_n802(x)
+ else
+ fun_l6_n364(x)
+ end
+end
+
+def fun_l5_n963(x)
+ if (x < 1)
+ fun_l6_n368(x)
+ else
+ fun_l6_n580(x)
+ end
+end
+
+def fun_l5_n964(x)
+ if (x < 1)
+ fun_l6_n879(x)
+ else
+ fun_l6_n925(x)
+ end
+end
+
+def fun_l5_n965(x)
+ if (x < 1)
+ fun_l6_n114(x)
+ else
+ fun_l6_n882(x)
+ end
+end
+
+def fun_l5_n966(x)
+ if (x < 1)
+ fun_l6_n9(x)
+ else
+ fun_l6_n5(x)
+ end
+end
+
+def fun_l5_n967(x)
+ if (x < 1)
+ fun_l6_n536(x)
+ else
+ fun_l6_n251(x)
+ end
+end
+
+def fun_l5_n968(x)
+ if (x < 1)
+ fun_l6_n804(x)
+ else
+ fun_l6_n179(x)
+ end
+end
+
+def fun_l5_n969(x)
+ if (x < 1)
+ fun_l6_n469(x)
+ else
+ fun_l6_n235(x)
+ end
+end
+
+def fun_l5_n970(x)
+ if (x < 1)
+ fun_l6_n328(x)
+ else
+ fun_l6_n763(x)
+ end
+end
+
+def fun_l5_n971(x)
+ if (x < 1)
+ fun_l6_n342(x)
+ else
+ fun_l6_n126(x)
+ end
+end
+
+def fun_l5_n972(x)
+ if (x < 1)
+ fun_l6_n901(x)
+ else
+ fun_l6_n674(x)
+ end
+end
+
+def fun_l5_n973(x)
+ if (x < 1)
+ fun_l6_n853(x)
+ else
+ fun_l6_n714(x)
+ end
+end
+
+def fun_l5_n974(x)
+ if (x < 1)
+ fun_l6_n670(x)
+ else
+ fun_l6_n905(x)
+ end
+end
+
+def fun_l5_n975(x)
+ if (x < 1)
+ fun_l6_n873(x)
+ else
+ fun_l6_n193(x)
+ end
+end
+
+def fun_l5_n976(x)
+ if (x < 1)
+ fun_l6_n603(x)
+ else
+ fun_l6_n186(x)
+ end
+end
+
+def fun_l5_n977(x)
+ if (x < 1)
+ fun_l6_n474(x)
+ else
+ fun_l6_n108(x)
+ end
+end
+
+def fun_l5_n978(x)
+ if (x < 1)
+ fun_l6_n347(x)
+ else
+ fun_l6_n872(x)
+ end
+end
+
+def fun_l5_n979(x)
+ if (x < 1)
+ fun_l6_n593(x)
+ else
+ fun_l6_n575(x)
+ end
+end
+
+def fun_l5_n980(x)
+ if (x < 1)
+ fun_l6_n692(x)
+ else
+ fun_l6_n262(x)
+ end
+end
+
+def fun_l5_n981(x)
+ if (x < 1)
+ fun_l6_n226(x)
+ else
+ fun_l6_n600(x)
+ end
+end
+
+def fun_l5_n982(x)
+ if (x < 1)
+ fun_l6_n357(x)
+ else
+ fun_l6_n165(x)
+ end
+end
+
+def fun_l5_n983(x)
+ if (x < 1)
+ fun_l6_n784(x)
+ else
+ fun_l6_n584(x)
+ end
+end
+
+def fun_l5_n984(x)
+ if (x < 1)
+ fun_l6_n339(x)
+ else
+ fun_l6_n754(x)
+ end
+end
+
+def fun_l5_n985(x)
+ if (x < 1)
+ fun_l6_n536(x)
+ else
+ fun_l6_n663(x)
+ end
+end
+
+def fun_l5_n986(x)
+ if (x < 1)
+ fun_l6_n239(x)
+ else
+ fun_l6_n723(x)
+ end
+end
+
+def fun_l5_n987(x)
+ if (x < 1)
+ fun_l6_n928(x)
+ else
+ fun_l6_n403(x)
+ end
+end
+
+def fun_l5_n988(x)
+ if (x < 1)
+ fun_l6_n328(x)
+ else
+ fun_l6_n551(x)
+ end
+end
+
+def fun_l5_n989(x)
+ if (x < 1)
+ fun_l6_n847(x)
+ else
+ fun_l6_n475(x)
+ end
+end
+
+def fun_l5_n990(x)
+ if (x < 1)
+ fun_l6_n405(x)
+ else
+ fun_l6_n39(x)
+ end
+end
+
+def fun_l5_n991(x)
+ if (x < 1)
+ fun_l6_n705(x)
+ else
+ fun_l6_n281(x)
+ end
+end
+
+def fun_l5_n992(x)
+ if (x < 1)
+ fun_l6_n59(x)
+ else
+ fun_l6_n465(x)
+ end
+end
+
+def fun_l5_n993(x)
+ if (x < 1)
+ fun_l6_n828(x)
+ else
+ fun_l6_n705(x)
+ end
+end
+
+def fun_l5_n994(x)
+ if (x < 1)
+ fun_l6_n687(x)
+ else
+ fun_l6_n451(x)
+ end
+end
+
+def fun_l5_n995(x)
+ if (x < 1)
+ fun_l6_n600(x)
+ else
+ fun_l6_n9(x)
+ end
+end
+
+def fun_l5_n996(x)
+ if (x < 1)
+ fun_l6_n205(x)
+ else
+ fun_l6_n242(x)
+ end
+end
+
+def fun_l5_n997(x)
+ if (x < 1)
+ fun_l6_n438(x)
+ else
+ fun_l6_n108(x)
+ end
+end
+
+def fun_l5_n998(x)
+ if (x < 1)
+ fun_l6_n164(x)
+ else
+ fun_l6_n302(x)
+ end
+end
+
+def fun_l5_n999(x)
+ if (x < 1)
+ fun_l6_n533(x)
+ else
+ fun_l6_n685(x)
+ end
+end
+
+def fun_l6_n0(x)
+ if (x < 1)
+ fun_l7_n74(x)
+ else
+ fun_l7_n45(x)
+ end
+end
+
+def fun_l6_n1(x)
+ if (x < 1)
+ fun_l7_n685(x)
+ else
+ fun_l7_n163(x)
+ end
+end
+
+def fun_l6_n2(x)
+ if (x < 1)
+ fun_l7_n325(x)
+ else
+ fun_l7_n365(x)
+ end
+end
+
+def fun_l6_n3(x)
+ if (x < 1)
+ fun_l7_n855(x)
+ else
+ fun_l7_n359(x)
+ end
+end
+
+def fun_l6_n4(x)
+ if (x < 1)
+ fun_l7_n939(x)
+ else
+ fun_l7_n690(x)
+ end
+end
+
+def fun_l6_n5(x)
+ if (x < 1)
+ fun_l7_n689(x)
+ else
+ fun_l7_n681(x)
+ end
+end
+
+def fun_l6_n6(x)
+ if (x < 1)
+ fun_l7_n226(x)
+ else
+ fun_l7_n307(x)
+ end
+end
+
+def fun_l6_n7(x)
+ if (x < 1)
+ fun_l7_n779(x)
+ else
+ fun_l7_n765(x)
+ end
+end
+
+def fun_l6_n8(x)
+ if (x < 1)
+ fun_l7_n85(x)
+ else
+ fun_l7_n967(x)
+ end
+end
+
+def fun_l6_n9(x)
+ if (x < 1)
+ fun_l7_n539(x)
+ else
+ fun_l7_n5(x)
+ end
+end
+
+def fun_l6_n10(x)
+ if (x < 1)
+ fun_l7_n503(x)
+ else
+ fun_l7_n163(x)
+ end
+end
+
+def fun_l6_n11(x)
+ if (x < 1)
+ fun_l7_n24(x)
+ else
+ fun_l7_n374(x)
+ end
+end
+
+def fun_l6_n12(x)
+ if (x < 1)
+ fun_l7_n633(x)
+ else
+ fun_l7_n395(x)
+ end
+end
+
+def fun_l6_n13(x)
+ if (x < 1)
+ fun_l7_n250(x)
+ else
+ fun_l7_n7(x)
+ end
+end
+
+def fun_l6_n14(x)
+ if (x < 1)
+ fun_l7_n22(x)
+ else
+ fun_l7_n560(x)
+ end
+end
+
+def fun_l6_n15(x)
+ if (x < 1)
+ fun_l7_n209(x)
+ else
+ fun_l7_n323(x)
+ end
+end
+
+def fun_l6_n16(x)
+ if (x < 1)
+ fun_l7_n770(x)
+ else
+ fun_l7_n155(x)
+ end
+end
+
+def fun_l6_n17(x)
+ if (x < 1)
+ fun_l7_n976(x)
+ else
+ fun_l7_n712(x)
+ end
+end
+
+def fun_l6_n18(x)
+ if (x < 1)
+ fun_l7_n762(x)
+ else
+ fun_l7_n307(x)
+ end
+end
+
+def fun_l6_n19(x)
+ if (x < 1)
+ fun_l7_n911(x)
+ else
+ fun_l7_n788(x)
+ end
+end
+
+def fun_l6_n20(x)
+ if (x < 1)
+ fun_l7_n40(x)
+ else
+ fun_l7_n269(x)
+ end
+end
+
+def fun_l6_n21(x)
+ if (x < 1)
+ fun_l7_n707(x)
+ else
+ fun_l7_n861(x)
+ end
+end
+
+def fun_l6_n22(x)
+ if (x < 1)
+ fun_l7_n591(x)
+ else
+ fun_l7_n557(x)
+ end
+end
+
+def fun_l6_n23(x)
+ if (x < 1)
+ fun_l7_n890(x)
+ else
+ fun_l7_n142(x)
+ end
+end
+
+def fun_l6_n24(x)
+ if (x < 1)
+ fun_l7_n563(x)
+ else
+ fun_l7_n509(x)
+ end
+end
+
+def fun_l6_n25(x)
+ if (x < 1)
+ fun_l7_n630(x)
+ else
+ fun_l7_n784(x)
+ end
+end
+
+def fun_l6_n26(x)
+ if (x < 1)
+ fun_l7_n30(x)
+ else
+ fun_l7_n826(x)
+ end
+end
+
+def fun_l6_n27(x)
+ if (x < 1)
+ fun_l7_n223(x)
+ else
+ fun_l7_n800(x)
+ end
+end
+
+def fun_l6_n28(x)
+ if (x < 1)
+ fun_l7_n51(x)
+ else
+ fun_l7_n963(x)
+ end
+end
+
+def fun_l6_n29(x)
+ if (x < 1)
+ fun_l7_n603(x)
+ else
+ fun_l7_n988(x)
+ end
+end
+
+def fun_l6_n30(x)
+ if (x < 1)
+ fun_l7_n258(x)
+ else
+ fun_l7_n512(x)
+ end
+end
+
+def fun_l6_n31(x)
+ if (x < 1)
+ fun_l7_n649(x)
+ else
+ fun_l7_n772(x)
+ end
+end
+
+def fun_l6_n32(x)
+ if (x < 1)
+ fun_l7_n999(x)
+ else
+ fun_l7_n592(x)
+ end
+end
+
+def fun_l6_n33(x)
+ if (x < 1)
+ fun_l7_n371(x)
+ else
+ fun_l7_n801(x)
+ end
+end
+
+def fun_l6_n34(x)
+ if (x < 1)
+ fun_l7_n905(x)
+ else
+ fun_l7_n701(x)
+ end
+end
+
+def fun_l6_n35(x)
+ if (x < 1)
+ fun_l7_n142(x)
+ else
+ fun_l7_n933(x)
+ end
+end
+
+def fun_l6_n36(x)
+ if (x < 1)
+ fun_l7_n987(x)
+ else
+ fun_l7_n305(x)
+ end
+end
+
+def fun_l6_n37(x)
+ if (x < 1)
+ fun_l7_n360(x)
+ else
+ fun_l7_n266(x)
+ end
+end
+
+def fun_l6_n38(x)
+ if (x < 1)
+ fun_l7_n799(x)
+ else
+ fun_l7_n938(x)
+ end
+end
+
+def fun_l6_n39(x)
+ if (x < 1)
+ fun_l7_n921(x)
+ else
+ fun_l7_n739(x)
+ end
+end
+
+def fun_l6_n40(x)
+ if (x < 1)
+ fun_l7_n553(x)
+ else
+ fun_l7_n236(x)
+ end
+end
+
+def fun_l6_n41(x)
+ if (x < 1)
+ fun_l7_n592(x)
+ else
+ fun_l7_n335(x)
+ end
+end
+
+def fun_l6_n42(x)
+ if (x < 1)
+ fun_l7_n33(x)
+ else
+ fun_l7_n521(x)
+ end
+end
+
+def fun_l6_n43(x)
+ if (x < 1)
+ fun_l7_n278(x)
+ else
+ fun_l7_n866(x)
+ end
+end
+
+def fun_l6_n44(x)
+ if (x < 1)
+ fun_l7_n808(x)
+ else
+ fun_l7_n394(x)
+ end
+end
+
+def fun_l6_n45(x)
+ if (x < 1)
+ fun_l7_n556(x)
+ else
+ fun_l7_n462(x)
+ end
+end
+
+def fun_l6_n46(x)
+ if (x < 1)
+ fun_l7_n72(x)
+ else
+ fun_l7_n558(x)
+ end
+end
+
+def fun_l6_n47(x)
+ if (x < 1)
+ fun_l7_n583(x)
+ else
+ fun_l7_n472(x)
+ end
+end
+
+def fun_l6_n48(x)
+ if (x < 1)
+ fun_l7_n577(x)
+ else
+ fun_l7_n264(x)
+ end
+end
+
+def fun_l6_n49(x)
+ if (x < 1)
+ fun_l7_n167(x)
+ else
+ fun_l7_n570(x)
+ end
+end
+
+def fun_l6_n50(x)
+ if (x < 1)
+ fun_l7_n707(x)
+ else
+ fun_l7_n127(x)
+ end
+end
+
+def fun_l6_n51(x)
+ if (x < 1)
+ fun_l7_n151(x)
+ else
+ fun_l7_n82(x)
+ end
+end
+
+def fun_l6_n52(x)
+ if (x < 1)
+ fun_l7_n729(x)
+ else
+ fun_l7_n785(x)
+ end
+end
+
+def fun_l6_n53(x)
+ if (x < 1)
+ fun_l7_n236(x)
+ else
+ fun_l7_n84(x)
+ end
+end
+
+def fun_l6_n54(x)
+ if (x < 1)
+ fun_l7_n573(x)
+ else
+ fun_l7_n92(x)
+ end
+end
+
+def fun_l6_n55(x)
+ if (x < 1)
+ fun_l7_n601(x)
+ else
+ fun_l7_n531(x)
+ end
+end
+
+def fun_l6_n56(x)
+ if (x < 1)
+ fun_l7_n623(x)
+ else
+ fun_l7_n522(x)
+ end
+end
+
+def fun_l6_n57(x)
+ if (x < 1)
+ fun_l7_n707(x)
+ else
+ fun_l7_n830(x)
+ end
+end
+
+def fun_l6_n58(x)
+ if (x < 1)
+ fun_l7_n240(x)
+ else
+ fun_l7_n868(x)
+ end
+end
+
+def fun_l6_n59(x)
+ if (x < 1)
+ fun_l7_n233(x)
+ else
+ fun_l7_n595(x)
+ end
+end
+
+def fun_l6_n60(x)
+ if (x < 1)
+ fun_l7_n384(x)
+ else
+ fun_l7_n605(x)
+ end
+end
+
+def fun_l6_n61(x)
+ if (x < 1)
+ fun_l7_n721(x)
+ else
+ fun_l7_n509(x)
+ end
+end
+
+def fun_l6_n62(x)
+ if (x < 1)
+ fun_l7_n741(x)
+ else
+ fun_l7_n934(x)
+ end
+end
+
+def fun_l6_n63(x)
+ if (x < 1)
+ fun_l7_n724(x)
+ else
+ fun_l7_n963(x)
+ end
+end
+
+def fun_l6_n64(x)
+ if (x < 1)
+ fun_l7_n144(x)
+ else
+ fun_l7_n417(x)
+ end
+end
+
+def fun_l6_n65(x)
+ if (x < 1)
+ fun_l7_n618(x)
+ else
+ fun_l7_n19(x)
+ end
+end
+
+def fun_l6_n66(x)
+ if (x < 1)
+ fun_l7_n128(x)
+ else
+ fun_l7_n257(x)
+ end
+end
+
+def fun_l6_n67(x)
+ if (x < 1)
+ fun_l7_n623(x)
+ else
+ fun_l7_n182(x)
+ end
+end
+
+def fun_l6_n68(x)
+ if (x < 1)
+ fun_l7_n256(x)
+ else
+ fun_l7_n692(x)
+ end
+end
+
+def fun_l6_n69(x)
+ if (x < 1)
+ fun_l7_n360(x)
+ else
+ fun_l7_n34(x)
+ end
+end
+
+def fun_l6_n70(x)
+ if (x < 1)
+ fun_l7_n690(x)
+ else
+ fun_l7_n813(x)
+ end
+end
+
+def fun_l6_n71(x)
+ if (x < 1)
+ fun_l7_n533(x)
+ else
+ fun_l7_n94(x)
+ end
+end
+
+def fun_l6_n72(x)
+ if (x < 1)
+ fun_l7_n245(x)
+ else
+ fun_l7_n548(x)
+ end
+end
+
+def fun_l6_n73(x)
+ if (x < 1)
+ fun_l7_n919(x)
+ else
+ fun_l7_n295(x)
+ end
+end
+
+def fun_l6_n74(x)
+ if (x < 1)
+ fun_l7_n925(x)
+ else
+ fun_l7_n965(x)
+ end
+end
+
+def fun_l6_n75(x)
+ if (x < 1)
+ fun_l7_n825(x)
+ else
+ fun_l7_n79(x)
+ end
+end
+
+def fun_l6_n76(x)
+ if (x < 1)
+ fun_l7_n812(x)
+ else
+ fun_l7_n96(x)
+ end
+end
+
+def fun_l6_n77(x)
+ if (x < 1)
+ fun_l7_n688(x)
+ else
+ fun_l7_n424(x)
+ end
+end
+
+def fun_l6_n78(x)
+ if (x < 1)
+ fun_l7_n171(x)
+ else
+ fun_l7_n728(x)
+ end
+end
+
+def fun_l6_n79(x)
+ if (x < 1)
+ fun_l7_n786(x)
+ else
+ fun_l7_n135(x)
+ end
+end
+
+def fun_l6_n80(x)
+ if (x < 1)
+ fun_l7_n622(x)
+ else
+ fun_l7_n3(x)
+ end
+end
+
+def fun_l6_n81(x)
+ if (x < 1)
+ fun_l7_n386(x)
+ else
+ fun_l7_n946(x)
+ end
+end
+
+def fun_l6_n82(x)
+ if (x < 1)
+ fun_l7_n192(x)
+ else
+ fun_l7_n253(x)
+ end
+end
+
+def fun_l6_n83(x)
+ if (x < 1)
+ fun_l7_n534(x)
+ else
+ fun_l7_n4(x)
+ end
+end
+
+def fun_l6_n84(x)
+ if (x < 1)
+ fun_l7_n198(x)
+ else
+ fun_l7_n455(x)
+ end
+end
+
+def fun_l6_n85(x)
+ if (x < 1)
+ fun_l7_n471(x)
+ else
+ fun_l7_n26(x)
+ end
+end
+
+def fun_l6_n86(x)
+ if (x < 1)
+ fun_l7_n147(x)
+ else
+ fun_l7_n893(x)
+ end
+end
+
+def fun_l6_n87(x)
+ if (x < 1)
+ fun_l7_n424(x)
+ else
+ fun_l7_n713(x)
+ end
+end
+
+def fun_l6_n88(x)
+ if (x < 1)
+ fun_l7_n867(x)
+ else
+ fun_l7_n561(x)
+ end
+end
+
+def fun_l6_n89(x)
+ if (x < 1)
+ fun_l7_n64(x)
+ else
+ fun_l7_n662(x)
+ end
+end
+
+def fun_l6_n90(x)
+ if (x < 1)
+ fun_l7_n849(x)
+ else
+ fun_l7_n105(x)
+ end
+end
+
+def fun_l6_n91(x)
+ if (x < 1)
+ fun_l7_n564(x)
+ else
+ fun_l7_n758(x)
+ end
+end
+
+def fun_l6_n92(x)
+ if (x < 1)
+ fun_l7_n433(x)
+ else
+ fun_l7_n713(x)
+ end
+end
+
+def fun_l6_n93(x)
+ if (x < 1)
+ fun_l7_n283(x)
+ else
+ fun_l7_n577(x)
+ end
+end
+
+def fun_l6_n94(x)
+ if (x < 1)
+ fun_l7_n951(x)
+ else
+ fun_l7_n48(x)
+ end
+end
+
+def fun_l6_n95(x)
+ if (x < 1)
+ fun_l7_n966(x)
+ else
+ fun_l7_n789(x)
+ end
+end
+
+def fun_l6_n96(x)
+ if (x < 1)
+ fun_l7_n954(x)
+ else
+ fun_l7_n431(x)
+ end
+end
+
+def fun_l6_n97(x)
+ if (x < 1)
+ fun_l7_n720(x)
+ else
+ fun_l7_n847(x)
+ end
+end
+
+def fun_l6_n98(x)
+ if (x < 1)
+ fun_l7_n517(x)
+ else
+ fun_l7_n378(x)
+ end
+end
+
+def fun_l6_n99(x)
+ if (x < 1)
+ fun_l7_n951(x)
+ else
+ fun_l7_n688(x)
+ end
+end
+
+def fun_l6_n100(x)
+ if (x < 1)
+ fun_l7_n163(x)
+ else
+ fun_l7_n540(x)
+ end
+end
+
+def fun_l6_n101(x)
+ if (x < 1)
+ fun_l7_n423(x)
+ else
+ fun_l7_n10(x)
+ end
+end
+
+def fun_l6_n102(x)
+ if (x < 1)
+ fun_l7_n346(x)
+ else
+ fun_l7_n409(x)
+ end
+end
+
+def fun_l6_n103(x)
+ if (x < 1)
+ fun_l7_n686(x)
+ else
+ fun_l7_n432(x)
+ end
+end
+
+def fun_l6_n104(x)
+ if (x < 1)
+ fun_l7_n144(x)
+ else
+ fun_l7_n510(x)
+ end
+end
+
+def fun_l6_n105(x)
+ if (x < 1)
+ fun_l7_n568(x)
+ else
+ fun_l7_n756(x)
+ end
+end
+
+def fun_l6_n106(x)
+ if (x < 1)
+ fun_l7_n708(x)
+ else
+ fun_l7_n199(x)
+ end
+end
+
+def fun_l6_n107(x)
+ if (x < 1)
+ fun_l7_n823(x)
+ else
+ fun_l7_n969(x)
+ end
+end
+
+def fun_l6_n108(x)
+ if (x < 1)
+ fun_l7_n156(x)
+ else
+ fun_l7_n211(x)
+ end
+end
+
+def fun_l6_n109(x)
+ if (x < 1)
+ fun_l7_n527(x)
+ else
+ fun_l7_n791(x)
+ end
+end
+
+def fun_l6_n110(x)
+ if (x < 1)
+ fun_l7_n392(x)
+ else
+ fun_l7_n314(x)
+ end
+end
+
+def fun_l6_n111(x)
+ if (x < 1)
+ fun_l7_n355(x)
+ else
+ fun_l7_n222(x)
+ end
+end
+
+def fun_l6_n112(x)
+ if (x < 1)
+ fun_l7_n683(x)
+ else
+ fun_l7_n735(x)
+ end
+end
+
+def fun_l6_n113(x)
+ if (x < 1)
+ fun_l7_n38(x)
+ else
+ fun_l7_n874(x)
+ end
+end
+
+def fun_l6_n114(x)
+ if (x < 1)
+ fun_l7_n190(x)
+ else
+ fun_l7_n209(x)
+ end
+end
+
+def fun_l6_n115(x)
+ if (x < 1)
+ fun_l7_n544(x)
+ else
+ fun_l7_n267(x)
+ end
+end
+
+def fun_l6_n116(x)
+ if (x < 1)
+ fun_l7_n701(x)
+ else
+ fun_l7_n101(x)
+ end
+end
+
+def fun_l6_n117(x)
+ if (x < 1)
+ fun_l7_n283(x)
+ else
+ fun_l7_n979(x)
+ end
+end
+
+def fun_l6_n118(x)
+ if (x < 1)
+ fun_l7_n902(x)
+ else
+ fun_l7_n897(x)
+ end
+end
+
+def fun_l6_n119(x)
+ if (x < 1)
+ fun_l7_n115(x)
+ else
+ fun_l7_n660(x)
+ end
+end
+
+def fun_l6_n120(x)
+ if (x < 1)
+ fun_l7_n804(x)
+ else
+ fun_l7_n536(x)
+ end
+end
+
+def fun_l6_n121(x)
+ if (x < 1)
+ fun_l7_n278(x)
+ else
+ fun_l7_n666(x)
+ end
+end
+
+def fun_l6_n122(x)
+ if (x < 1)
+ fun_l7_n254(x)
+ else
+ fun_l7_n572(x)
+ end
+end
+
+def fun_l6_n123(x)
+ if (x < 1)
+ fun_l7_n474(x)
+ else
+ fun_l7_n912(x)
+ end
+end
+
+def fun_l6_n124(x)
+ if (x < 1)
+ fun_l7_n0(x)
+ else
+ fun_l7_n514(x)
+ end
+end
+
+def fun_l6_n125(x)
+ if (x < 1)
+ fun_l7_n916(x)
+ else
+ fun_l7_n633(x)
+ end
+end
+
+def fun_l6_n126(x)
+ if (x < 1)
+ fun_l7_n184(x)
+ else
+ fun_l7_n379(x)
+ end
+end
+
+def fun_l6_n127(x)
+ if (x < 1)
+ fun_l7_n316(x)
+ else
+ fun_l7_n422(x)
+ end
+end
+
+def fun_l6_n128(x)
+ if (x < 1)
+ fun_l7_n402(x)
+ else
+ fun_l7_n237(x)
+ end
+end
+
+def fun_l6_n129(x)
+ if (x < 1)
+ fun_l7_n303(x)
+ else
+ fun_l7_n61(x)
+ end
+end
+
+def fun_l6_n130(x)
+ if (x < 1)
+ fun_l7_n918(x)
+ else
+ fun_l7_n732(x)
+ end
+end
+
+def fun_l6_n131(x)
+ if (x < 1)
+ fun_l7_n74(x)
+ else
+ fun_l7_n472(x)
+ end
+end
+
+def fun_l6_n132(x)
+ if (x < 1)
+ fun_l7_n648(x)
+ else
+ fun_l7_n546(x)
+ end
+end
+
+def fun_l6_n133(x)
+ if (x < 1)
+ fun_l7_n388(x)
+ else
+ fun_l7_n359(x)
+ end
+end
+
+def fun_l6_n134(x)
+ if (x < 1)
+ fun_l7_n594(x)
+ else
+ fun_l7_n607(x)
+ end
+end
+
+def fun_l6_n135(x)
+ if (x < 1)
+ fun_l7_n642(x)
+ else
+ fun_l7_n188(x)
+ end
+end
+
+def fun_l6_n136(x)
+ if (x < 1)
+ fun_l7_n879(x)
+ else
+ fun_l7_n521(x)
+ end
+end
+
+def fun_l6_n137(x)
+ if (x < 1)
+ fun_l7_n362(x)
+ else
+ fun_l7_n564(x)
+ end
+end
+
+def fun_l6_n138(x)
+ if (x < 1)
+ fun_l7_n590(x)
+ else
+ fun_l7_n59(x)
+ end
+end
+
+def fun_l6_n139(x)
+ if (x < 1)
+ fun_l7_n464(x)
+ else
+ fun_l7_n563(x)
+ end
+end
+
+def fun_l6_n140(x)
+ if (x < 1)
+ fun_l7_n710(x)
+ else
+ fun_l7_n890(x)
+ end
+end
+
+def fun_l6_n141(x)
+ if (x < 1)
+ fun_l7_n63(x)
+ else
+ fun_l7_n470(x)
+ end
+end
+
+def fun_l6_n142(x)
+ if (x < 1)
+ fun_l7_n160(x)
+ else
+ fun_l7_n153(x)
+ end
+end
+
+def fun_l6_n143(x)
+ if (x < 1)
+ fun_l7_n908(x)
+ else
+ fun_l7_n286(x)
+ end
+end
+
+def fun_l6_n144(x)
+ if (x < 1)
+ fun_l7_n193(x)
+ else
+ fun_l7_n657(x)
+ end
+end
+
+def fun_l6_n145(x)
+ if (x < 1)
+ fun_l7_n885(x)
+ else
+ fun_l7_n981(x)
+ end
+end
+
+def fun_l6_n146(x)
+ if (x < 1)
+ fun_l7_n479(x)
+ else
+ fun_l7_n188(x)
+ end
+end
+
+def fun_l6_n147(x)
+ if (x < 1)
+ fun_l7_n378(x)
+ else
+ fun_l7_n299(x)
+ end
+end
+
+def fun_l6_n148(x)
+ if (x < 1)
+ fun_l7_n239(x)
+ else
+ fun_l7_n70(x)
+ end
+end
+
+def fun_l6_n149(x)
+ if (x < 1)
+ fun_l7_n864(x)
+ else
+ fun_l7_n131(x)
+ end
+end
+
+def fun_l6_n150(x)
+ if (x < 1)
+ fun_l7_n748(x)
+ else
+ fun_l7_n112(x)
+ end
+end
+
+def fun_l6_n151(x)
+ if (x < 1)
+ fun_l7_n466(x)
+ else
+ fun_l7_n672(x)
+ end
+end
+
+def fun_l6_n152(x)
+ if (x < 1)
+ fun_l7_n242(x)
+ else
+ fun_l7_n8(x)
+ end
+end
+
+def fun_l6_n153(x)
+ if (x < 1)
+ fun_l7_n408(x)
+ else
+ fun_l7_n538(x)
+ end
+end
+
+def fun_l6_n154(x)
+ if (x < 1)
+ fun_l7_n984(x)
+ else
+ fun_l7_n134(x)
+ end
+end
+
+def fun_l6_n155(x)
+ if (x < 1)
+ fun_l7_n384(x)
+ else
+ fun_l7_n62(x)
+ end
+end
+
+def fun_l6_n156(x)
+ if (x < 1)
+ fun_l7_n576(x)
+ else
+ fun_l7_n168(x)
+ end
+end
+
+def fun_l6_n157(x)
+ if (x < 1)
+ fun_l7_n371(x)
+ else
+ fun_l7_n470(x)
+ end
+end
+
+def fun_l6_n158(x)
+ if (x < 1)
+ fun_l7_n30(x)
+ else
+ fun_l7_n11(x)
+ end
+end
+
+def fun_l6_n159(x)
+ if (x < 1)
+ fun_l7_n45(x)
+ else
+ fun_l7_n191(x)
+ end
+end
+
+def fun_l6_n160(x)
+ if (x < 1)
+ fun_l7_n659(x)
+ else
+ fun_l7_n981(x)
+ end
+end
+
+def fun_l6_n161(x)
+ if (x < 1)
+ fun_l7_n586(x)
+ else
+ fun_l7_n617(x)
+ end
+end
+
+def fun_l6_n162(x)
+ if (x < 1)
+ fun_l7_n844(x)
+ else
+ fun_l7_n831(x)
+ end
+end
+
+def fun_l6_n163(x)
+ if (x < 1)
+ fun_l7_n14(x)
+ else
+ fun_l7_n631(x)
+ end
+end
+
+def fun_l6_n164(x)
+ if (x < 1)
+ fun_l7_n388(x)
+ else
+ fun_l7_n837(x)
+ end
+end
+
+def fun_l6_n165(x)
+ if (x < 1)
+ fun_l7_n825(x)
+ else
+ fun_l7_n902(x)
+ end
+end
+
+def fun_l6_n166(x)
+ if (x < 1)
+ fun_l7_n490(x)
+ else
+ fun_l7_n724(x)
+ end
+end
+
+def fun_l6_n167(x)
+ if (x < 1)
+ fun_l7_n612(x)
+ else
+ fun_l7_n792(x)
+ end
+end
+
+def fun_l6_n168(x)
+ if (x < 1)
+ fun_l7_n344(x)
+ else
+ fun_l7_n624(x)
+ end
+end
+
+def fun_l6_n169(x)
+ if (x < 1)
+ fun_l7_n255(x)
+ else
+ fun_l7_n456(x)
+ end
+end
+
+def fun_l6_n170(x)
+ if (x < 1)
+ fun_l7_n893(x)
+ else
+ fun_l7_n358(x)
+ end
+end
+
+def fun_l6_n171(x)
+ if (x < 1)
+ fun_l7_n926(x)
+ else
+ fun_l7_n988(x)
+ end
+end
+
+def fun_l6_n172(x)
+ if (x < 1)
+ fun_l7_n856(x)
+ else
+ fun_l7_n553(x)
+ end
+end
+
+def fun_l6_n173(x)
+ if (x < 1)
+ fun_l7_n694(x)
+ else
+ fun_l7_n918(x)
+ end
+end
+
+def fun_l6_n174(x)
+ if (x < 1)
+ fun_l7_n884(x)
+ else
+ fun_l7_n711(x)
+ end
+end
+
+def fun_l6_n175(x)
+ if (x < 1)
+ fun_l7_n884(x)
+ else
+ fun_l7_n28(x)
+ end
+end
+
+def fun_l6_n176(x)
+ if (x < 1)
+ fun_l7_n378(x)
+ else
+ fun_l7_n14(x)
+ end
+end
+
+def fun_l6_n177(x)
+ if (x < 1)
+ fun_l7_n844(x)
+ else
+ fun_l7_n549(x)
+ end
+end
+
+def fun_l6_n178(x)
+ if (x < 1)
+ fun_l7_n396(x)
+ else
+ fun_l7_n802(x)
+ end
+end
+
+def fun_l6_n179(x)
+ if (x < 1)
+ fun_l7_n407(x)
+ else
+ fun_l7_n612(x)
+ end
+end
+
+def fun_l6_n180(x)
+ if (x < 1)
+ fun_l7_n403(x)
+ else
+ fun_l7_n768(x)
+ end
+end
+
+def fun_l6_n181(x)
+ if (x < 1)
+ fun_l7_n412(x)
+ else
+ fun_l7_n301(x)
+ end
+end
+
+def fun_l6_n182(x)
+ if (x < 1)
+ fun_l7_n479(x)
+ else
+ fun_l7_n923(x)
+ end
+end
+
+def fun_l6_n183(x)
+ if (x < 1)
+ fun_l7_n664(x)
+ else
+ fun_l7_n451(x)
+ end
+end
+
+def fun_l6_n184(x)
+ if (x < 1)
+ fun_l7_n854(x)
+ else
+ fun_l7_n438(x)
+ end
+end
+
+def fun_l6_n185(x)
+ if (x < 1)
+ fun_l7_n994(x)
+ else
+ fun_l7_n726(x)
+ end
+end
+
+def fun_l6_n186(x)
+ if (x < 1)
+ fun_l7_n128(x)
+ else
+ fun_l7_n166(x)
+ end
+end
+
+def fun_l6_n187(x)
+ if (x < 1)
+ fun_l7_n515(x)
+ else
+ fun_l7_n21(x)
+ end
+end
+
+def fun_l6_n188(x)
+ if (x < 1)
+ fun_l7_n487(x)
+ else
+ fun_l7_n631(x)
+ end
+end
+
+def fun_l6_n189(x)
+ if (x < 1)
+ fun_l7_n16(x)
+ else
+ fun_l7_n579(x)
+ end
+end
+
+def fun_l6_n190(x)
+ if (x < 1)
+ fun_l7_n30(x)
+ else
+ fun_l7_n417(x)
+ end
+end
+
+def fun_l6_n191(x)
+ if (x < 1)
+ fun_l7_n737(x)
+ else
+ fun_l7_n436(x)
+ end
+end
+
+def fun_l6_n192(x)
+ if (x < 1)
+ fun_l7_n260(x)
+ else
+ fun_l7_n657(x)
+ end
+end
+
+def fun_l6_n193(x)
+ if (x < 1)
+ fun_l7_n722(x)
+ else
+ fun_l7_n489(x)
+ end
+end
+
+def fun_l6_n194(x)
+ if (x < 1)
+ fun_l7_n53(x)
+ else
+ fun_l7_n624(x)
+ end
+end
+
+def fun_l6_n195(x)
+ if (x < 1)
+ fun_l7_n91(x)
+ else
+ fun_l7_n597(x)
+ end
+end
+
+def fun_l6_n196(x)
+ if (x < 1)
+ fun_l7_n980(x)
+ else
+ fun_l7_n498(x)
+ end
+end
+
+def fun_l6_n197(x)
+ if (x < 1)
+ fun_l7_n918(x)
+ else
+ fun_l7_n328(x)
+ end
+end
+
+def fun_l6_n198(x)
+ if (x < 1)
+ fun_l7_n184(x)
+ else
+ fun_l7_n761(x)
+ end
+end
+
+def fun_l6_n199(x)
+ if (x < 1)
+ fun_l7_n692(x)
+ else
+ fun_l7_n610(x)
+ end
+end
+
+def fun_l6_n200(x)
+ if (x < 1)
+ fun_l7_n597(x)
+ else
+ fun_l7_n135(x)
+ end
+end
+
+def fun_l6_n201(x)
+ if (x < 1)
+ fun_l7_n973(x)
+ else
+ fun_l7_n453(x)
+ end
+end
+
+def fun_l6_n202(x)
+ if (x < 1)
+ fun_l7_n433(x)
+ else
+ fun_l7_n794(x)
+ end
+end
+
+def fun_l6_n203(x)
+ if (x < 1)
+ fun_l7_n294(x)
+ else
+ fun_l7_n271(x)
+ end
+end
+
+def fun_l6_n204(x)
+ if (x < 1)
+ fun_l7_n783(x)
+ else
+ fun_l7_n20(x)
+ end
+end
+
+def fun_l6_n205(x)
+ if (x < 1)
+ fun_l7_n941(x)
+ else
+ fun_l7_n517(x)
+ end
+end
+
+def fun_l6_n206(x)
+ if (x < 1)
+ fun_l7_n306(x)
+ else
+ fun_l7_n735(x)
+ end
+end
+
+def fun_l6_n207(x)
+ if (x < 1)
+ fun_l7_n63(x)
+ else
+ fun_l7_n313(x)
+ end
+end
+
+def fun_l6_n208(x)
+ if (x < 1)
+ fun_l7_n766(x)
+ else
+ fun_l7_n868(x)
+ end
+end
+
+def fun_l6_n209(x)
+ if (x < 1)
+ fun_l7_n780(x)
+ else
+ fun_l7_n422(x)
+ end
+end
+
+def fun_l6_n210(x)
+ if (x < 1)
+ fun_l7_n279(x)
+ else
+ fun_l7_n695(x)
+ end
+end
+
+def fun_l6_n211(x)
+ if (x < 1)
+ fun_l7_n981(x)
+ else
+ fun_l7_n946(x)
+ end
+end
+
+def fun_l6_n212(x)
+ if (x < 1)
+ fun_l7_n885(x)
+ else
+ fun_l7_n752(x)
+ end
+end
+
+def fun_l6_n213(x)
+ if (x < 1)
+ fun_l7_n238(x)
+ else
+ fun_l7_n322(x)
+ end
+end
+
+def fun_l6_n214(x)
+ if (x < 1)
+ fun_l7_n832(x)
+ else
+ fun_l7_n714(x)
+ end
+end
+
+def fun_l6_n215(x)
+ if (x < 1)
+ fun_l7_n369(x)
+ else
+ fun_l7_n793(x)
+ end
+end
+
+def fun_l6_n216(x)
+ if (x < 1)
+ fun_l7_n897(x)
+ else
+ fun_l7_n22(x)
+ end
+end
+
+def fun_l6_n217(x)
+ if (x < 1)
+ fun_l7_n94(x)
+ else
+ fun_l7_n93(x)
+ end
+end
+
+def fun_l6_n218(x)
+ if (x < 1)
+ fun_l7_n638(x)
+ else
+ fun_l7_n267(x)
+ end
+end
+
+def fun_l6_n219(x)
+ if (x < 1)
+ fun_l7_n254(x)
+ else
+ fun_l7_n162(x)
+ end
+end
+
+def fun_l6_n220(x)
+ if (x < 1)
+ fun_l7_n969(x)
+ else
+ fun_l7_n371(x)
+ end
+end
+
+def fun_l6_n221(x)
+ if (x < 1)
+ fun_l7_n692(x)
+ else
+ fun_l7_n421(x)
+ end
+end
+
+def fun_l6_n222(x)
+ if (x < 1)
+ fun_l7_n312(x)
+ else
+ fun_l7_n475(x)
+ end
+end
+
+def fun_l6_n223(x)
+ if (x < 1)
+ fun_l7_n566(x)
+ else
+ fun_l7_n497(x)
+ end
+end
+
+def fun_l6_n224(x)
+ if (x < 1)
+ fun_l7_n560(x)
+ else
+ fun_l7_n60(x)
+ end
+end
+
+def fun_l6_n225(x)
+ if (x < 1)
+ fun_l7_n484(x)
+ else
+ fun_l7_n602(x)
+ end
+end
+
+def fun_l6_n226(x)
+ if (x < 1)
+ fun_l7_n399(x)
+ else
+ fun_l7_n614(x)
+ end
+end
+
+def fun_l6_n227(x)
+ if (x < 1)
+ fun_l7_n344(x)
+ else
+ fun_l7_n701(x)
+ end
+end
+
+def fun_l6_n228(x)
+ if (x < 1)
+ fun_l7_n840(x)
+ else
+ fun_l7_n211(x)
+ end
+end
+
+def fun_l6_n229(x)
+ if (x < 1)
+ fun_l7_n423(x)
+ else
+ fun_l7_n51(x)
+ end
+end
+
+def fun_l6_n230(x)
+ if (x < 1)
+ fun_l7_n978(x)
+ else
+ fun_l7_n334(x)
+ end
+end
+
+def fun_l6_n231(x)
+ if (x < 1)
+ fun_l7_n136(x)
+ else
+ fun_l7_n296(x)
+ end
+end
+
+def fun_l6_n232(x)
+ if (x < 1)
+ fun_l7_n24(x)
+ else
+ fun_l7_n282(x)
+ end
+end
+
+def fun_l6_n233(x)
+ if (x < 1)
+ fun_l7_n803(x)
+ else
+ fun_l7_n623(x)
+ end
+end
+
+def fun_l6_n234(x)
+ if (x < 1)
+ fun_l7_n720(x)
+ else
+ fun_l7_n492(x)
+ end
+end
+
+def fun_l6_n235(x)
+ if (x < 1)
+ fun_l7_n627(x)
+ else
+ fun_l7_n260(x)
+ end
+end
+
+def fun_l6_n236(x)
+ if (x < 1)
+ fun_l7_n460(x)
+ else
+ fun_l7_n693(x)
+ end
+end
+
+def fun_l6_n237(x)
+ if (x < 1)
+ fun_l7_n635(x)
+ else
+ fun_l7_n745(x)
+ end
+end
+
+def fun_l6_n238(x)
+ if (x < 1)
+ fun_l7_n76(x)
+ else
+ fun_l7_n283(x)
+ end
+end
+
+def fun_l6_n239(x)
+ if (x < 1)
+ fun_l7_n183(x)
+ else
+ fun_l7_n515(x)
+ end
+end
+
+def fun_l6_n240(x)
+ if (x < 1)
+ fun_l7_n266(x)
+ else
+ fun_l7_n34(x)
+ end
+end
+
+def fun_l6_n241(x)
+ if (x < 1)
+ fun_l7_n480(x)
+ else
+ fun_l7_n868(x)
+ end
+end
+
+def fun_l6_n242(x)
+ if (x < 1)
+ fun_l7_n998(x)
+ else
+ fun_l7_n669(x)
+ end
+end
+
+def fun_l6_n243(x)
+ if (x < 1)
+ fun_l7_n414(x)
+ else
+ fun_l7_n161(x)
+ end
+end
+
+def fun_l6_n244(x)
+ if (x < 1)
+ fun_l7_n104(x)
+ else
+ fun_l7_n659(x)
+ end
+end
+
+def fun_l6_n245(x)
+ if (x < 1)
+ fun_l7_n881(x)
+ else
+ fun_l7_n229(x)
+ end
+end
+
+def fun_l6_n246(x)
+ if (x < 1)
+ fun_l7_n328(x)
+ else
+ fun_l7_n935(x)
+ end
+end
+
+def fun_l6_n247(x)
+ if (x < 1)
+ fun_l7_n433(x)
+ else
+ fun_l7_n565(x)
+ end
+end
+
+def fun_l6_n248(x)
+ if (x < 1)
+ fun_l7_n161(x)
+ else
+ fun_l7_n760(x)
+ end
+end
+
+def fun_l6_n249(x)
+ if (x < 1)
+ fun_l7_n115(x)
+ else
+ fun_l7_n594(x)
+ end
+end
+
+def fun_l6_n250(x)
+ if (x < 1)
+ fun_l7_n350(x)
+ else
+ fun_l7_n310(x)
+ end
+end
+
+def fun_l6_n251(x)
+ if (x < 1)
+ fun_l7_n920(x)
+ else
+ fun_l7_n51(x)
+ end
+end
+
+def fun_l6_n252(x)
+ if (x < 1)
+ fun_l7_n132(x)
+ else
+ fun_l7_n492(x)
+ end
+end
+
+def fun_l6_n253(x)
+ if (x < 1)
+ fun_l7_n618(x)
+ else
+ fun_l7_n325(x)
+ end
+end
+
+def fun_l6_n254(x)
+ if (x < 1)
+ fun_l7_n682(x)
+ else
+ fun_l7_n840(x)
+ end
+end
+
+def fun_l6_n255(x)
+ if (x < 1)
+ fun_l7_n462(x)
+ else
+ fun_l7_n780(x)
+ end
+end
+
+def fun_l6_n256(x)
+ if (x < 1)
+ fun_l7_n712(x)
+ else
+ fun_l7_n995(x)
+ end
+end
+
+def fun_l6_n257(x)
+ if (x < 1)
+ fun_l7_n111(x)
+ else
+ fun_l7_n121(x)
+ end
+end
+
+def fun_l6_n258(x)
+ if (x < 1)
+ fun_l7_n255(x)
+ else
+ fun_l7_n384(x)
+ end
+end
+
+def fun_l6_n259(x)
+ if (x < 1)
+ fun_l7_n610(x)
+ else
+ fun_l7_n555(x)
+ end
+end
+
+def fun_l6_n260(x)
+ if (x < 1)
+ fun_l7_n778(x)
+ else
+ fun_l7_n454(x)
+ end
+end
+
+def fun_l6_n261(x)
+ if (x < 1)
+ fun_l7_n376(x)
+ else
+ fun_l7_n892(x)
+ end
+end
+
+def fun_l6_n262(x)
+ if (x < 1)
+ fun_l7_n454(x)
+ else
+ fun_l7_n468(x)
+ end
+end
+
+def fun_l6_n263(x)
+ if (x < 1)
+ fun_l7_n708(x)
+ else
+ fun_l7_n368(x)
+ end
+end
+
+def fun_l6_n264(x)
+ if (x < 1)
+ fun_l7_n517(x)
+ else
+ fun_l7_n299(x)
+ end
+end
+
+def fun_l6_n265(x)
+ if (x < 1)
+ fun_l7_n987(x)
+ else
+ fun_l7_n318(x)
+ end
+end
+
+def fun_l6_n266(x)
+ if (x < 1)
+ fun_l7_n372(x)
+ else
+ fun_l7_n560(x)
+ end
+end
+
+def fun_l6_n267(x)
+ if (x < 1)
+ fun_l7_n493(x)
+ else
+ fun_l7_n288(x)
+ end
+end
+
+def fun_l6_n268(x)
+ if (x < 1)
+ fun_l7_n278(x)
+ else
+ fun_l7_n10(x)
+ end
+end
+
+def fun_l6_n269(x)
+ if (x < 1)
+ fun_l7_n417(x)
+ else
+ fun_l7_n703(x)
+ end
+end
+
+def fun_l6_n270(x)
+ if (x < 1)
+ fun_l7_n410(x)
+ else
+ fun_l7_n91(x)
+ end
+end
+
+def fun_l6_n271(x)
+ if (x < 1)
+ fun_l7_n281(x)
+ else
+ fun_l7_n447(x)
+ end
+end
+
+def fun_l6_n272(x)
+ if (x < 1)
+ fun_l7_n263(x)
+ else
+ fun_l7_n374(x)
+ end
+end
+
+def fun_l6_n273(x)
+ if (x < 1)
+ fun_l7_n622(x)
+ else
+ fun_l7_n310(x)
+ end
+end
+
+def fun_l6_n274(x)
+ if (x < 1)
+ fun_l7_n176(x)
+ else
+ fun_l7_n227(x)
+ end
+end
+
+def fun_l6_n275(x)
+ if (x < 1)
+ fun_l7_n848(x)
+ else
+ fun_l7_n416(x)
+ end
+end
+
+def fun_l6_n276(x)
+ if (x < 1)
+ fun_l7_n998(x)
+ else
+ fun_l7_n969(x)
+ end
+end
+
+def fun_l6_n277(x)
+ if (x < 1)
+ fun_l7_n356(x)
+ else
+ fun_l7_n722(x)
+ end
+end
+
+def fun_l6_n278(x)
+ if (x < 1)
+ fun_l7_n888(x)
+ else
+ fun_l7_n156(x)
+ end
+end
+
+def fun_l6_n279(x)
+ if (x < 1)
+ fun_l7_n779(x)
+ else
+ fun_l7_n123(x)
+ end
+end
+
+def fun_l6_n280(x)
+ if (x < 1)
+ fun_l7_n393(x)
+ else
+ fun_l7_n765(x)
+ end
+end
+
+def fun_l6_n281(x)
+ if (x < 1)
+ fun_l7_n257(x)
+ else
+ fun_l7_n277(x)
+ end
+end
+
+def fun_l6_n282(x)
+ if (x < 1)
+ fun_l7_n780(x)
+ else
+ fun_l7_n643(x)
+ end
+end
+
+def fun_l6_n283(x)
+ if (x < 1)
+ fun_l7_n63(x)
+ else
+ fun_l7_n449(x)
+ end
+end
+
+def fun_l6_n284(x)
+ if (x < 1)
+ fun_l7_n200(x)
+ else
+ fun_l7_n806(x)
+ end
+end
+
+def fun_l6_n285(x)
+ if (x < 1)
+ fun_l7_n575(x)
+ else
+ fun_l7_n409(x)
+ end
+end
+
+def fun_l6_n286(x)
+ if (x < 1)
+ fun_l7_n377(x)
+ else
+ fun_l7_n456(x)
+ end
+end
+
+def fun_l6_n287(x)
+ if (x < 1)
+ fun_l7_n519(x)
+ else
+ fun_l7_n473(x)
+ end
+end
+
+def fun_l6_n288(x)
+ if (x < 1)
+ fun_l7_n525(x)
+ else
+ fun_l7_n45(x)
+ end
+end
+
+def fun_l6_n289(x)
+ if (x < 1)
+ fun_l7_n678(x)
+ else
+ fun_l7_n910(x)
+ end
+end
+
+def fun_l6_n290(x)
+ if (x < 1)
+ fun_l7_n628(x)
+ else
+ fun_l7_n939(x)
+ end
+end
+
+def fun_l6_n291(x)
+ if (x < 1)
+ fun_l7_n967(x)
+ else
+ fun_l7_n927(x)
+ end
+end
+
+def fun_l6_n292(x)
+ if (x < 1)
+ fun_l7_n634(x)
+ else
+ fun_l7_n184(x)
+ end
+end
+
+def fun_l6_n293(x)
+ if (x < 1)
+ fun_l7_n857(x)
+ else
+ fun_l7_n625(x)
+ end
+end
+
+def fun_l6_n294(x)
+ if (x < 1)
+ fun_l7_n105(x)
+ else
+ fun_l7_n46(x)
+ end
+end
+
+def fun_l6_n295(x)
+ if (x < 1)
+ fun_l7_n642(x)
+ else
+ fun_l7_n566(x)
+ end
+end
+
+def fun_l6_n296(x)
+ if (x < 1)
+ fun_l7_n173(x)
+ else
+ fun_l7_n619(x)
+ end
+end
+
+def fun_l6_n297(x)
+ if (x < 1)
+ fun_l7_n257(x)
+ else
+ fun_l7_n485(x)
+ end
+end
+
+def fun_l6_n298(x)
+ if (x < 1)
+ fun_l7_n447(x)
+ else
+ fun_l7_n808(x)
+ end
+end
+
+def fun_l6_n299(x)
+ if (x < 1)
+ fun_l7_n838(x)
+ else
+ fun_l7_n856(x)
+ end
+end
+
+def fun_l6_n300(x)
+ if (x < 1)
+ fun_l7_n893(x)
+ else
+ fun_l7_n99(x)
+ end
+end
+
+def fun_l6_n301(x)
+ if (x < 1)
+ fun_l7_n180(x)
+ else
+ fun_l7_n126(x)
+ end
+end
+
+def fun_l6_n302(x)
+ if (x < 1)
+ fun_l7_n62(x)
+ else
+ fun_l7_n266(x)
+ end
+end
+
+def fun_l6_n303(x)
+ if (x < 1)
+ fun_l7_n709(x)
+ else
+ fun_l7_n196(x)
+ end
+end
+
+def fun_l6_n304(x)
+ if (x < 1)
+ fun_l7_n408(x)
+ else
+ fun_l7_n730(x)
+ end
+end
+
+def fun_l6_n305(x)
+ if (x < 1)
+ fun_l7_n736(x)
+ else
+ fun_l7_n673(x)
+ end
+end
+
+def fun_l6_n306(x)
+ if (x < 1)
+ fun_l7_n734(x)
+ else
+ fun_l7_n519(x)
+ end
+end
+
+def fun_l6_n307(x)
+ if (x < 1)
+ fun_l7_n629(x)
+ else
+ fun_l7_n670(x)
+ end
+end
+
+def fun_l6_n308(x)
+ if (x < 1)
+ fun_l7_n839(x)
+ else
+ fun_l7_n191(x)
+ end
+end
+
+def fun_l6_n309(x)
+ if (x < 1)
+ fun_l7_n123(x)
+ else
+ fun_l7_n553(x)
+ end
+end
+
+def fun_l6_n310(x)
+ if (x < 1)
+ fun_l7_n812(x)
+ else
+ fun_l7_n815(x)
+ end
+end
+
+def fun_l6_n311(x)
+ if (x < 1)
+ fun_l7_n860(x)
+ else
+ fun_l7_n519(x)
+ end
+end
+
+def fun_l6_n312(x)
+ if (x < 1)
+ fun_l7_n181(x)
+ else
+ fun_l7_n674(x)
+ end
+end
+
+def fun_l6_n313(x)
+ if (x < 1)
+ fun_l7_n654(x)
+ else
+ fun_l7_n500(x)
+ end
+end
+
+def fun_l6_n314(x)
+ if (x < 1)
+ fun_l7_n690(x)
+ else
+ fun_l7_n136(x)
+ end
+end
+
+def fun_l6_n315(x)
+ if (x < 1)
+ fun_l7_n944(x)
+ else
+ fun_l7_n956(x)
+ end
+end
+
+def fun_l6_n316(x)
+ if (x < 1)
+ fun_l7_n471(x)
+ else
+ fun_l7_n245(x)
+ end
+end
+
+def fun_l6_n317(x)
+ if (x < 1)
+ fun_l7_n520(x)
+ else
+ fun_l7_n919(x)
+ end
+end
+
+def fun_l6_n318(x)
+ if (x < 1)
+ fun_l7_n843(x)
+ else
+ fun_l7_n793(x)
+ end
+end
+
+def fun_l6_n319(x)
+ if (x < 1)
+ fun_l7_n765(x)
+ else
+ fun_l7_n363(x)
+ end
+end
+
+def fun_l6_n320(x)
+ if (x < 1)
+ fun_l7_n483(x)
+ else
+ fun_l7_n439(x)
+ end
+end
+
+def fun_l6_n321(x)
+ if (x < 1)
+ fun_l7_n232(x)
+ else
+ fun_l7_n921(x)
+ end
+end
+
+def fun_l6_n322(x)
+ if (x < 1)
+ fun_l7_n398(x)
+ else
+ fun_l7_n862(x)
+ end
+end
+
+def fun_l6_n323(x)
+ if (x < 1)
+ fun_l7_n550(x)
+ else
+ fun_l7_n84(x)
+ end
+end
+
+def fun_l6_n324(x)
+ if (x < 1)
+ fun_l7_n788(x)
+ else
+ fun_l7_n512(x)
+ end
+end
+
+def fun_l6_n325(x)
+ if (x < 1)
+ fun_l7_n512(x)
+ else
+ fun_l7_n303(x)
+ end
+end
+
+def fun_l6_n326(x)
+ if (x < 1)
+ fun_l7_n86(x)
+ else
+ fun_l7_n555(x)
+ end
+end
+
+def fun_l6_n327(x)
+ if (x < 1)
+ fun_l7_n857(x)
+ else
+ fun_l7_n751(x)
+ end
+end
+
+def fun_l6_n328(x)
+ if (x < 1)
+ fun_l7_n341(x)
+ else
+ fun_l7_n208(x)
+ end
+end
+
+def fun_l6_n329(x)
+ if (x < 1)
+ fun_l7_n707(x)
+ else
+ fun_l7_n371(x)
+ end
+end
+
+def fun_l6_n330(x)
+ if (x < 1)
+ fun_l7_n217(x)
+ else
+ fun_l7_n604(x)
+ end
+end
+
+def fun_l6_n331(x)
+ if (x < 1)
+ fun_l7_n607(x)
+ else
+ fun_l7_n471(x)
+ end
+end
+
+def fun_l6_n332(x)
+ if (x < 1)
+ fun_l7_n818(x)
+ else
+ fun_l7_n787(x)
+ end
+end
+
+def fun_l6_n333(x)
+ if (x < 1)
+ fun_l7_n28(x)
+ else
+ fun_l7_n220(x)
+ end
+end
+
+def fun_l6_n334(x)
+ if (x < 1)
+ fun_l7_n666(x)
+ else
+ fun_l7_n995(x)
+ end
+end
+
+def fun_l6_n335(x)
+ if (x < 1)
+ fun_l7_n3(x)
+ else
+ fun_l7_n970(x)
+ end
+end
+
+def fun_l6_n336(x)
+ if (x < 1)
+ fun_l7_n977(x)
+ else
+ fun_l7_n77(x)
+ end
+end
+
+def fun_l6_n337(x)
+ if (x < 1)
+ fun_l7_n54(x)
+ else
+ fun_l7_n814(x)
+ end
+end
+
+def fun_l6_n338(x)
+ if (x < 1)
+ fun_l7_n129(x)
+ else
+ fun_l7_n624(x)
+ end
+end
+
+def fun_l6_n339(x)
+ if (x < 1)
+ fun_l7_n866(x)
+ else
+ fun_l7_n821(x)
+ end
+end
+
+def fun_l6_n340(x)
+ if (x < 1)
+ fun_l7_n912(x)
+ else
+ fun_l7_n24(x)
+ end
+end
+
+def fun_l6_n341(x)
+ if (x < 1)
+ fun_l7_n684(x)
+ else
+ fun_l7_n610(x)
+ end
+end
+
+def fun_l6_n342(x)
+ if (x < 1)
+ fun_l7_n816(x)
+ else
+ fun_l7_n826(x)
+ end
+end
+
+def fun_l6_n343(x)
+ if (x < 1)
+ fun_l7_n479(x)
+ else
+ fun_l7_n444(x)
+ end
+end
+
+def fun_l6_n344(x)
+ if (x < 1)
+ fun_l7_n51(x)
+ else
+ fun_l7_n731(x)
+ end
+end
+
+def fun_l6_n345(x)
+ if (x < 1)
+ fun_l7_n690(x)
+ else
+ fun_l7_n631(x)
+ end
+end
+
+def fun_l6_n346(x)
+ if (x < 1)
+ fun_l7_n254(x)
+ else
+ fun_l7_n353(x)
+ end
+end
+
+def fun_l6_n347(x)
+ if (x < 1)
+ fun_l7_n905(x)
+ else
+ fun_l7_n422(x)
+ end
+end
+
+def fun_l6_n348(x)
+ if (x < 1)
+ fun_l7_n249(x)
+ else
+ fun_l7_n200(x)
+ end
+end
+
+def fun_l6_n349(x)
+ if (x < 1)
+ fun_l7_n11(x)
+ else
+ fun_l7_n550(x)
+ end
+end
+
+def fun_l6_n350(x)
+ if (x < 1)
+ fun_l7_n818(x)
+ else
+ fun_l7_n444(x)
+ end
+end
+
+def fun_l6_n351(x)
+ if (x < 1)
+ fun_l7_n422(x)
+ else
+ fun_l7_n242(x)
+ end
+end
+
+def fun_l6_n352(x)
+ if (x < 1)
+ fun_l7_n653(x)
+ else
+ fun_l7_n912(x)
+ end
+end
+
+def fun_l6_n353(x)
+ if (x < 1)
+ fun_l7_n605(x)
+ else
+ fun_l7_n129(x)
+ end
+end
+
+def fun_l6_n354(x)
+ if (x < 1)
+ fun_l7_n622(x)
+ else
+ fun_l7_n172(x)
+ end
+end
+
+def fun_l6_n355(x)
+ if (x < 1)
+ fun_l7_n568(x)
+ else
+ fun_l7_n26(x)
+ end
+end
+
+def fun_l6_n356(x)
+ if (x < 1)
+ fun_l7_n777(x)
+ else
+ fun_l7_n818(x)
+ end
+end
+
+def fun_l6_n357(x)
+ if (x < 1)
+ fun_l7_n807(x)
+ else
+ fun_l7_n642(x)
+ end
+end
+
+def fun_l6_n358(x)
+ if (x < 1)
+ fun_l7_n745(x)
+ else
+ fun_l7_n866(x)
+ end
+end
+
+def fun_l6_n359(x)
+ if (x < 1)
+ fun_l7_n603(x)
+ else
+ fun_l7_n42(x)
+ end
+end
+
+def fun_l6_n360(x)
+ if (x < 1)
+ fun_l7_n818(x)
+ else
+ fun_l7_n203(x)
+ end
+end
+
+def fun_l6_n361(x)
+ if (x < 1)
+ fun_l7_n451(x)
+ else
+ fun_l7_n719(x)
+ end
+end
+
+def fun_l6_n362(x)
+ if (x < 1)
+ fun_l7_n31(x)
+ else
+ fun_l7_n148(x)
+ end
+end
+
+def fun_l6_n363(x)
+ if (x < 1)
+ fun_l7_n148(x)
+ else
+ fun_l7_n292(x)
+ end
+end
+
+def fun_l6_n364(x)
+ if (x < 1)
+ fun_l7_n175(x)
+ else
+ fun_l7_n849(x)
+ end
+end
+
+def fun_l6_n365(x)
+ if (x < 1)
+ fun_l7_n414(x)
+ else
+ fun_l7_n57(x)
+ end
+end
+
+def fun_l6_n366(x)
+ if (x < 1)
+ fun_l7_n771(x)
+ else
+ fun_l7_n625(x)
+ end
+end
+
+def fun_l6_n367(x)
+ if (x < 1)
+ fun_l7_n232(x)
+ else
+ fun_l7_n108(x)
+ end
+end
+
+def fun_l6_n368(x)
+ if (x < 1)
+ fun_l7_n123(x)
+ else
+ fun_l7_n413(x)
+ end
+end
+
+def fun_l6_n369(x)
+ if (x < 1)
+ fun_l7_n587(x)
+ else
+ fun_l7_n876(x)
+ end
+end
+
+def fun_l6_n370(x)
+ if (x < 1)
+ fun_l7_n750(x)
+ else
+ fun_l7_n531(x)
+ end
+end
+
+def fun_l6_n371(x)
+ if (x < 1)
+ fun_l7_n55(x)
+ else
+ fun_l7_n859(x)
+ end
+end
+
+def fun_l6_n372(x)
+ if (x < 1)
+ fun_l7_n848(x)
+ else
+ fun_l7_n272(x)
+ end
+end
+
+def fun_l6_n373(x)
+ if (x < 1)
+ fun_l7_n480(x)
+ else
+ fun_l7_n976(x)
+ end
+end
+
+def fun_l6_n374(x)
+ if (x < 1)
+ fun_l7_n298(x)
+ else
+ fun_l7_n844(x)
+ end
+end
+
+def fun_l6_n375(x)
+ if (x < 1)
+ fun_l7_n564(x)
+ else
+ fun_l7_n960(x)
+ end
+end
+
+def fun_l6_n376(x)
+ if (x < 1)
+ fun_l7_n684(x)
+ else
+ fun_l7_n181(x)
+ end
+end
+
+def fun_l6_n377(x)
+ if (x < 1)
+ fun_l7_n153(x)
+ else
+ fun_l7_n21(x)
+ end
+end
+
+def fun_l6_n378(x)
+ if (x < 1)
+ fun_l7_n377(x)
+ else
+ fun_l7_n761(x)
+ end
+end
+
+def fun_l6_n379(x)
+ if (x < 1)
+ fun_l7_n737(x)
+ else
+ fun_l7_n605(x)
+ end
+end
+
+def fun_l6_n380(x)
+ if (x < 1)
+ fun_l7_n536(x)
+ else
+ fun_l7_n143(x)
+ end
+end
+
+def fun_l6_n381(x)
+ if (x < 1)
+ fun_l7_n314(x)
+ else
+ fun_l7_n999(x)
+ end
+end
+
+def fun_l6_n382(x)
+ if (x < 1)
+ fun_l7_n995(x)
+ else
+ fun_l7_n564(x)
+ end
+end
+
+def fun_l6_n383(x)
+ if (x < 1)
+ fun_l7_n772(x)
+ else
+ fun_l7_n520(x)
+ end
+end
+
+def fun_l6_n384(x)
+ if (x < 1)
+ fun_l7_n250(x)
+ else
+ fun_l7_n142(x)
+ end
+end
+
+def fun_l6_n385(x)
+ if (x < 1)
+ fun_l7_n993(x)
+ else
+ fun_l7_n987(x)
+ end
+end
+
+def fun_l6_n386(x)
+ if (x < 1)
+ fun_l7_n717(x)
+ else
+ fun_l7_n674(x)
+ end
+end
+
+def fun_l6_n387(x)
+ if (x < 1)
+ fun_l7_n585(x)
+ else
+ fun_l7_n102(x)
+ end
+end
+
+def fun_l6_n388(x)
+ if (x < 1)
+ fun_l7_n779(x)
+ else
+ fun_l7_n110(x)
+ end
+end
+
+def fun_l6_n389(x)
+ if (x < 1)
+ fun_l7_n815(x)
+ else
+ fun_l7_n194(x)
+ end
+end
+
+def fun_l6_n390(x)
+ if (x < 1)
+ fun_l7_n261(x)
+ else
+ fun_l7_n30(x)
+ end
+end
+
+def fun_l6_n391(x)
+ if (x < 1)
+ fun_l7_n746(x)
+ else
+ fun_l7_n207(x)
+ end
+end
+
+def fun_l6_n392(x)
+ if (x < 1)
+ fun_l7_n866(x)
+ else
+ fun_l7_n862(x)
+ end
+end
+
+def fun_l6_n393(x)
+ if (x < 1)
+ fun_l7_n47(x)
+ else
+ fun_l7_n692(x)
+ end
+end
+
+def fun_l6_n394(x)
+ if (x < 1)
+ fun_l7_n140(x)
+ else
+ fun_l7_n104(x)
+ end
+end
+
+def fun_l6_n395(x)
+ if (x < 1)
+ fun_l7_n170(x)
+ else
+ fun_l7_n93(x)
+ end
+end
+
+def fun_l6_n396(x)
+ if (x < 1)
+ fun_l7_n184(x)
+ else
+ fun_l7_n218(x)
+ end
+end
+
+def fun_l6_n397(x)
+ if (x < 1)
+ fun_l7_n268(x)
+ else
+ fun_l7_n278(x)
+ end
+end
+
+def fun_l6_n398(x)
+ if (x < 1)
+ fun_l7_n859(x)
+ else
+ fun_l7_n888(x)
+ end
+end
+
+def fun_l6_n399(x)
+ if (x < 1)
+ fun_l7_n540(x)
+ else
+ fun_l7_n218(x)
+ end
+end
+
+def fun_l6_n400(x)
+ if (x < 1)
+ fun_l7_n148(x)
+ else
+ fun_l7_n220(x)
+ end
+end
+
+def fun_l6_n401(x)
+ if (x < 1)
+ fun_l7_n169(x)
+ else
+ fun_l7_n310(x)
+ end
+end
+
+def fun_l6_n402(x)
+ if (x < 1)
+ fun_l7_n256(x)
+ else
+ fun_l7_n336(x)
+ end
+end
+
+def fun_l6_n403(x)
+ if (x < 1)
+ fun_l7_n257(x)
+ else
+ fun_l7_n536(x)
+ end
+end
+
+def fun_l6_n404(x)
+ if (x < 1)
+ fun_l7_n47(x)
+ else
+ fun_l7_n714(x)
+ end
+end
+
+def fun_l6_n405(x)
+ if (x < 1)
+ fun_l7_n913(x)
+ else
+ fun_l7_n705(x)
+ end
+end
+
+def fun_l6_n406(x)
+ if (x < 1)
+ fun_l7_n816(x)
+ else
+ fun_l7_n168(x)
+ end
+end
+
+def fun_l6_n407(x)
+ if (x < 1)
+ fun_l7_n506(x)
+ else
+ fun_l7_n772(x)
+ end
+end
+
+def fun_l6_n408(x)
+ if (x < 1)
+ fun_l7_n983(x)
+ else
+ fun_l7_n973(x)
+ end
+end
+
+def fun_l6_n409(x)
+ if (x < 1)
+ fun_l7_n752(x)
+ else
+ fun_l7_n543(x)
+ end
+end
+
+def fun_l6_n410(x)
+ if (x < 1)
+ fun_l7_n580(x)
+ else
+ fun_l7_n265(x)
+ end
+end
+
+def fun_l6_n411(x)
+ if (x < 1)
+ fun_l7_n744(x)
+ else
+ fun_l7_n736(x)
+ end
+end
+
+def fun_l6_n412(x)
+ if (x < 1)
+ fun_l7_n950(x)
+ else
+ fun_l7_n5(x)
+ end
+end
+
+def fun_l6_n413(x)
+ if (x < 1)
+ fun_l7_n734(x)
+ else
+ fun_l7_n151(x)
+ end
+end
+
+def fun_l6_n414(x)
+ if (x < 1)
+ fun_l7_n907(x)
+ else
+ fun_l7_n113(x)
+ end
+end
+
+def fun_l6_n415(x)
+ if (x < 1)
+ fun_l7_n621(x)
+ else
+ fun_l7_n272(x)
+ end
+end
+
+def fun_l6_n416(x)
+ if (x < 1)
+ fun_l7_n598(x)
+ else
+ fun_l7_n872(x)
+ end
+end
+
+def fun_l6_n417(x)
+ if (x < 1)
+ fun_l7_n811(x)
+ else
+ fun_l7_n734(x)
+ end
+end
+
+def fun_l6_n418(x)
+ if (x < 1)
+ fun_l7_n18(x)
+ else
+ fun_l7_n405(x)
+ end
+end
+
+def fun_l6_n419(x)
+ if (x < 1)
+ fun_l7_n89(x)
+ else
+ fun_l7_n153(x)
+ end
+end
+
+def fun_l6_n420(x)
+ if (x < 1)
+ fun_l7_n438(x)
+ else
+ fun_l7_n452(x)
+ end
+end
+
+def fun_l6_n421(x)
+ if (x < 1)
+ fun_l7_n601(x)
+ else
+ fun_l7_n777(x)
+ end
+end
+
+def fun_l6_n422(x)
+ if (x < 1)
+ fun_l7_n202(x)
+ else
+ fun_l7_n368(x)
+ end
+end
+
+def fun_l6_n423(x)
+ if (x < 1)
+ fun_l7_n636(x)
+ else
+ fun_l7_n137(x)
+ end
+end
+
+def fun_l6_n424(x)
+ if (x < 1)
+ fun_l7_n222(x)
+ else
+ fun_l7_n838(x)
+ end
+end
+
+def fun_l6_n425(x)
+ if (x < 1)
+ fun_l7_n388(x)
+ else
+ fun_l7_n175(x)
+ end
+end
+
+def fun_l6_n426(x)
+ if (x < 1)
+ fun_l7_n629(x)
+ else
+ fun_l7_n376(x)
+ end
+end
+
+def fun_l6_n427(x)
+ if (x < 1)
+ fun_l7_n293(x)
+ else
+ fun_l7_n517(x)
+ end
+end
+
+def fun_l6_n428(x)
+ if (x < 1)
+ fun_l7_n859(x)
+ else
+ fun_l7_n129(x)
+ end
+end
+
+def fun_l6_n429(x)
+ if (x < 1)
+ fun_l7_n854(x)
+ else
+ fun_l7_n647(x)
+ end
+end
+
+def fun_l6_n430(x)
+ if (x < 1)
+ fun_l7_n117(x)
+ else
+ fun_l7_n291(x)
+ end
+end
+
+def fun_l6_n431(x)
+ if (x < 1)
+ fun_l7_n505(x)
+ else
+ fun_l7_n938(x)
+ end
+end
+
+def fun_l6_n432(x)
+ if (x < 1)
+ fun_l7_n536(x)
+ else
+ fun_l7_n303(x)
+ end
+end
+
+def fun_l6_n433(x)
+ if (x < 1)
+ fun_l7_n443(x)
+ else
+ fun_l7_n945(x)
+ end
+end
+
+def fun_l6_n434(x)
+ if (x < 1)
+ fun_l7_n74(x)
+ else
+ fun_l7_n594(x)
+ end
+end
+
+def fun_l6_n435(x)
+ if (x < 1)
+ fun_l7_n273(x)
+ else
+ fun_l7_n704(x)
+ end
+end
+
+def fun_l6_n436(x)
+ if (x < 1)
+ fun_l7_n451(x)
+ else
+ fun_l7_n371(x)
+ end
+end
+
+def fun_l6_n437(x)
+ if (x < 1)
+ fun_l7_n628(x)
+ else
+ fun_l7_n963(x)
+ end
+end
+
+def fun_l6_n438(x)
+ if (x < 1)
+ fun_l7_n361(x)
+ else
+ fun_l7_n506(x)
+ end
+end
+
+def fun_l6_n439(x)
+ if (x < 1)
+ fun_l7_n8(x)
+ else
+ fun_l7_n721(x)
+ end
+end
+
+def fun_l6_n440(x)
+ if (x < 1)
+ fun_l7_n728(x)
+ else
+ fun_l7_n372(x)
+ end
+end
+
+def fun_l6_n441(x)
+ if (x < 1)
+ fun_l7_n988(x)
+ else
+ fun_l7_n323(x)
+ end
+end
+
+def fun_l6_n442(x)
+ if (x < 1)
+ fun_l7_n5(x)
+ else
+ fun_l7_n56(x)
+ end
+end
+
+def fun_l6_n443(x)
+ if (x < 1)
+ fun_l7_n553(x)
+ else
+ fun_l7_n776(x)
+ end
+end
+
+def fun_l6_n444(x)
+ if (x < 1)
+ fun_l7_n194(x)
+ else
+ fun_l7_n101(x)
+ end
+end
+
+def fun_l6_n445(x)
+ if (x < 1)
+ fun_l7_n613(x)
+ else
+ fun_l7_n977(x)
+ end
+end
+
+def fun_l6_n446(x)
+ if (x < 1)
+ fun_l7_n23(x)
+ else
+ fun_l7_n311(x)
+ end
+end
+
+def fun_l6_n447(x)
+ if (x < 1)
+ fun_l7_n686(x)
+ else
+ fun_l7_n8(x)
+ end
+end
+
+def fun_l6_n448(x)
+ if (x < 1)
+ fun_l7_n812(x)
+ else
+ fun_l7_n229(x)
+ end
+end
+
+def fun_l6_n449(x)
+ if (x < 1)
+ fun_l7_n222(x)
+ else
+ fun_l7_n620(x)
+ end
+end
+
+def fun_l6_n450(x)
+ if (x < 1)
+ fun_l7_n599(x)
+ else
+ fun_l7_n468(x)
+ end
+end
+
+def fun_l6_n451(x)
+ if (x < 1)
+ fun_l7_n347(x)
+ else
+ fun_l7_n504(x)
+ end
+end
+
+def fun_l6_n452(x)
+ if (x < 1)
+ fun_l7_n95(x)
+ else
+ fun_l7_n482(x)
+ end
+end
+
+def fun_l6_n453(x)
+ if (x < 1)
+ fun_l7_n217(x)
+ else
+ fun_l7_n419(x)
+ end
+end
+
+def fun_l6_n454(x)
+ if (x < 1)
+ fun_l7_n28(x)
+ else
+ fun_l7_n609(x)
+ end
+end
+
+def fun_l6_n455(x)
+ if (x < 1)
+ fun_l7_n932(x)
+ else
+ fun_l7_n744(x)
+ end
+end
+
+def fun_l6_n456(x)
+ if (x < 1)
+ fun_l7_n901(x)
+ else
+ fun_l7_n882(x)
+ end
+end
+
+def fun_l6_n457(x)
+ if (x < 1)
+ fun_l7_n368(x)
+ else
+ fun_l7_n441(x)
+ end
+end
+
+def fun_l6_n458(x)
+ if (x < 1)
+ fun_l7_n49(x)
+ else
+ fun_l7_n135(x)
+ end
+end
+
+def fun_l6_n459(x)
+ if (x < 1)
+ fun_l7_n228(x)
+ else
+ fun_l7_n899(x)
+ end
+end
+
+def fun_l6_n460(x)
+ if (x < 1)
+ fun_l7_n90(x)
+ else
+ fun_l7_n190(x)
+ end
+end
+
+def fun_l6_n461(x)
+ if (x < 1)
+ fun_l7_n892(x)
+ else
+ fun_l7_n670(x)
+ end
+end
+
+def fun_l6_n462(x)
+ if (x < 1)
+ fun_l7_n961(x)
+ else
+ fun_l7_n769(x)
+ end
+end
+
+def fun_l6_n463(x)
+ if (x < 1)
+ fun_l7_n828(x)
+ else
+ fun_l7_n219(x)
+ end
+end
+
+def fun_l6_n464(x)
+ if (x < 1)
+ fun_l7_n17(x)
+ else
+ fun_l7_n345(x)
+ end
+end
+
+def fun_l6_n465(x)
+ if (x < 1)
+ fun_l7_n412(x)
+ else
+ fun_l7_n498(x)
+ end
+end
+
+def fun_l6_n466(x)
+ if (x < 1)
+ fun_l7_n659(x)
+ else
+ fun_l7_n781(x)
+ end
+end
+
+def fun_l6_n467(x)
+ if (x < 1)
+ fun_l7_n528(x)
+ else
+ fun_l7_n138(x)
+ end
+end
+
+def fun_l6_n468(x)
+ if (x < 1)
+ fun_l7_n272(x)
+ else
+ fun_l7_n512(x)
+ end
+end
+
+def fun_l6_n469(x)
+ if (x < 1)
+ fun_l7_n458(x)
+ else
+ fun_l7_n430(x)
+ end
+end
+
+def fun_l6_n470(x)
+ if (x < 1)
+ fun_l7_n192(x)
+ else
+ fun_l7_n755(x)
+ end
+end
+
+def fun_l6_n471(x)
+ if (x < 1)
+ fun_l7_n188(x)
+ else
+ fun_l7_n827(x)
+ end
+end
+
+def fun_l6_n472(x)
+ if (x < 1)
+ fun_l7_n467(x)
+ else
+ fun_l7_n167(x)
+ end
+end
+
+def fun_l6_n473(x)
+ if (x < 1)
+ fun_l7_n648(x)
+ else
+ fun_l7_n823(x)
+ end
+end
+
+def fun_l6_n474(x)
+ if (x < 1)
+ fun_l7_n788(x)
+ else
+ fun_l7_n120(x)
+ end
+end
+
+def fun_l6_n475(x)
+ if (x < 1)
+ fun_l7_n199(x)
+ else
+ fun_l7_n25(x)
+ end
+end
+
+def fun_l6_n476(x)
+ if (x < 1)
+ fun_l7_n812(x)
+ else
+ fun_l7_n258(x)
+ end
+end
+
+def fun_l6_n477(x)
+ if (x < 1)
+ fun_l7_n525(x)
+ else
+ fun_l7_n140(x)
+ end
+end
+
+def fun_l6_n478(x)
+ if (x < 1)
+ fun_l7_n728(x)
+ else
+ fun_l7_n157(x)
+ end
+end
+
+def fun_l6_n479(x)
+ if (x < 1)
+ fun_l7_n527(x)
+ else
+ fun_l7_n172(x)
+ end
+end
+
+def fun_l6_n480(x)
+ if (x < 1)
+ fun_l7_n295(x)
+ else
+ fun_l7_n230(x)
+ end
+end
+
+def fun_l6_n481(x)
+ if (x < 1)
+ fun_l7_n619(x)
+ else
+ fun_l7_n495(x)
+ end
+end
+
+def fun_l6_n482(x)
+ if (x < 1)
+ fun_l7_n412(x)
+ else
+ fun_l7_n30(x)
+ end
+end
+
+def fun_l6_n483(x)
+ if (x < 1)
+ fun_l7_n236(x)
+ else
+ fun_l7_n842(x)
+ end
+end
+
+def fun_l6_n484(x)
+ if (x < 1)
+ fun_l7_n59(x)
+ else
+ fun_l7_n341(x)
+ end
+end
+
+def fun_l6_n485(x)
+ if (x < 1)
+ fun_l7_n841(x)
+ else
+ fun_l7_n67(x)
+ end
+end
+
+def fun_l6_n486(x)
+ if (x < 1)
+ fun_l7_n299(x)
+ else
+ fun_l7_n144(x)
+ end
+end
+
+def fun_l6_n487(x)
+ if (x < 1)
+ fun_l7_n672(x)
+ else
+ fun_l7_n682(x)
+ end
+end
+
+def fun_l6_n488(x)
+ if (x < 1)
+ fun_l7_n110(x)
+ else
+ fun_l7_n231(x)
+ end
+end
+
+def fun_l6_n489(x)
+ if (x < 1)
+ fun_l7_n984(x)
+ else
+ fun_l7_n583(x)
+ end
+end
+
+def fun_l6_n490(x)
+ if (x < 1)
+ fun_l7_n354(x)
+ else
+ fun_l7_n90(x)
+ end
+end
+
+def fun_l6_n491(x)
+ if (x < 1)
+ fun_l7_n541(x)
+ else
+ fun_l7_n583(x)
+ end
+end
+
+def fun_l6_n492(x)
+ if (x < 1)
+ fun_l7_n35(x)
+ else
+ fun_l7_n209(x)
+ end
+end
+
+def fun_l6_n493(x)
+ if (x < 1)
+ fun_l7_n547(x)
+ else
+ fun_l7_n982(x)
+ end
+end
+
+def fun_l6_n494(x)
+ if (x < 1)
+ fun_l7_n3(x)
+ else
+ fun_l7_n230(x)
+ end
+end
+
+def fun_l6_n495(x)
+ if (x < 1)
+ fun_l7_n777(x)
+ else
+ fun_l7_n140(x)
+ end
+end
+
+def fun_l6_n496(x)
+ if (x < 1)
+ fun_l7_n927(x)
+ else
+ fun_l7_n934(x)
+ end
+end
+
+def fun_l6_n497(x)
+ if (x < 1)
+ fun_l7_n201(x)
+ else
+ fun_l7_n342(x)
+ end
+end
+
+def fun_l6_n498(x)
+ if (x < 1)
+ fun_l7_n973(x)
+ else
+ fun_l7_n106(x)
+ end
+end
+
+def fun_l6_n499(x)
+ if (x < 1)
+ fun_l7_n373(x)
+ else
+ fun_l7_n558(x)
+ end
+end
+
+def fun_l6_n500(x)
+ if (x < 1)
+ fun_l7_n835(x)
+ else
+ fun_l7_n981(x)
+ end
+end
+
+def fun_l6_n501(x)
+ if (x < 1)
+ fun_l7_n135(x)
+ else
+ fun_l7_n997(x)
+ end
+end
+
+def fun_l6_n502(x)
+ if (x < 1)
+ fun_l7_n129(x)
+ else
+ fun_l7_n530(x)
+ end
+end
+
+def fun_l6_n503(x)
+ if (x < 1)
+ fun_l7_n924(x)
+ else
+ fun_l7_n611(x)
+ end
+end
+
+def fun_l6_n504(x)
+ if (x < 1)
+ fun_l7_n125(x)
+ else
+ fun_l7_n26(x)
+ end
+end
+
+def fun_l6_n505(x)
+ if (x < 1)
+ fun_l7_n592(x)
+ else
+ fun_l7_n50(x)
+ end
+end
+
+def fun_l6_n506(x)
+ if (x < 1)
+ fun_l7_n220(x)
+ else
+ fun_l7_n787(x)
+ end
+end
+
+def fun_l6_n507(x)
+ if (x < 1)
+ fun_l7_n908(x)
+ else
+ fun_l7_n15(x)
+ end
+end
+
+def fun_l6_n508(x)
+ if (x < 1)
+ fun_l7_n475(x)
+ else
+ fun_l7_n899(x)
+ end
+end
+
+def fun_l6_n509(x)
+ if (x < 1)
+ fun_l7_n704(x)
+ else
+ fun_l7_n559(x)
+ end
+end
+
+def fun_l6_n510(x)
+ if (x < 1)
+ fun_l7_n625(x)
+ else
+ fun_l7_n73(x)
+ end
+end
+
+def fun_l6_n511(x)
+ if (x < 1)
+ fun_l7_n234(x)
+ else
+ fun_l7_n166(x)
+ end
+end
+
+def fun_l6_n512(x)
+ if (x < 1)
+ fun_l7_n502(x)
+ else
+ fun_l7_n304(x)
+ end
+end
+
+def fun_l6_n513(x)
+ if (x < 1)
+ fun_l7_n686(x)
+ else
+ fun_l7_n643(x)
+ end
+end
+
+def fun_l6_n514(x)
+ if (x < 1)
+ fun_l7_n804(x)
+ else
+ fun_l7_n116(x)
+ end
+end
+
+def fun_l6_n515(x)
+ if (x < 1)
+ fun_l7_n365(x)
+ else
+ fun_l7_n102(x)
+ end
+end
+
+def fun_l6_n516(x)
+ if (x < 1)
+ fun_l7_n563(x)
+ else
+ fun_l7_n161(x)
+ end
+end
+
+def fun_l6_n517(x)
+ if (x < 1)
+ fun_l7_n695(x)
+ else
+ fun_l7_n936(x)
+ end
+end
+
+def fun_l6_n518(x)
+ if (x < 1)
+ fun_l7_n220(x)
+ else
+ fun_l7_n884(x)
+ end
+end
+
+def fun_l6_n519(x)
+ if (x < 1)
+ fun_l7_n602(x)
+ else
+ fun_l7_n144(x)
+ end
+end
+
+def fun_l6_n520(x)
+ if (x < 1)
+ fun_l7_n409(x)
+ else
+ fun_l7_n861(x)
+ end
+end
+
+def fun_l6_n521(x)
+ if (x < 1)
+ fun_l7_n258(x)
+ else
+ fun_l7_n768(x)
+ end
+end
+
+def fun_l6_n522(x)
+ if (x < 1)
+ fun_l7_n878(x)
+ else
+ fun_l7_n503(x)
+ end
+end
+
+def fun_l6_n523(x)
+ if (x < 1)
+ fun_l7_n570(x)
+ else
+ fun_l7_n675(x)
+ end
+end
+
+def fun_l6_n524(x)
+ if (x < 1)
+ fun_l7_n741(x)
+ else
+ fun_l7_n748(x)
+ end
+end
+
+def fun_l6_n525(x)
+ if (x < 1)
+ fun_l7_n729(x)
+ else
+ fun_l7_n272(x)
+ end
+end
+
+def fun_l6_n526(x)
+ if (x < 1)
+ fun_l7_n734(x)
+ else
+ fun_l7_n70(x)
+ end
+end
+
+def fun_l6_n527(x)
+ if (x < 1)
+ fun_l7_n235(x)
+ else
+ fun_l7_n606(x)
+ end
+end
+
+def fun_l6_n528(x)
+ if (x < 1)
+ fun_l7_n67(x)
+ else
+ fun_l7_n399(x)
+ end
+end
+
+def fun_l6_n529(x)
+ if (x < 1)
+ fun_l7_n706(x)
+ else
+ fun_l7_n150(x)
+ end
+end
+
+def fun_l6_n530(x)
+ if (x < 1)
+ fun_l7_n35(x)
+ else
+ fun_l7_n951(x)
+ end
+end
+
+def fun_l6_n531(x)
+ if (x < 1)
+ fun_l7_n517(x)
+ else
+ fun_l7_n329(x)
+ end
+end
+
+def fun_l6_n532(x)
+ if (x < 1)
+ fun_l7_n392(x)
+ else
+ fun_l7_n970(x)
+ end
+end
+
+def fun_l6_n533(x)
+ if (x < 1)
+ fun_l7_n466(x)
+ else
+ fun_l7_n260(x)
+ end
+end
+
+def fun_l6_n534(x)
+ if (x < 1)
+ fun_l7_n957(x)
+ else
+ fun_l7_n417(x)
+ end
+end
+
+def fun_l6_n535(x)
+ if (x < 1)
+ fun_l7_n184(x)
+ else
+ fun_l7_n188(x)
+ end
+end
+
+def fun_l6_n536(x)
+ if (x < 1)
+ fun_l7_n298(x)
+ else
+ fun_l7_n192(x)
+ end
+end
+
+def fun_l6_n537(x)
+ if (x < 1)
+ fun_l7_n28(x)
+ else
+ fun_l7_n309(x)
+ end
+end
+
+def fun_l6_n538(x)
+ if (x < 1)
+ fun_l7_n801(x)
+ else
+ fun_l7_n84(x)
+ end
+end
+
+def fun_l6_n539(x)
+ if (x < 1)
+ fun_l7_n894(x)
+ else
+ fun_l7_n973(x)
+ end
+end
+
+def fun_l6_n540(x)
+ if (x < 1)
+ fun_l7_n895(x)
+ else
+ fun_l7_n231(x)
+ end
+end
+
+def fun_l6_n541(x)
+ if (x < 1)
+ fun_l7_n728(x)
+ else
+ fun_l7_n28(x)
+ end
+end
+
+def fun_l6_n542(x)
+ if (x < 1)
+ fun_l7_n655(x)
+ else
+ fun_l7_n845(x)
+ end
+end
+
+def fun_l6_n543(x)
+ if (x < 1)
+ fun_l7_n952(x)
+ else
+ fun_l7_n484(x)
+ end
+end
+
+def fun_l6_n544(x)
+ if (x < 1)
+ fun_l7_n835(x)
+ else
+ fun_l7_n187(x)
+ end
+end
+
+def fun_l6_n545(x)
+ if (x < 1)
+ fun_l7_n748(x)
+ else
+ fun_l7_n460(x)
+ end
+end
+
+def fun_l6_n546(x)
+ if (x < 1)
+ fun_l7_n734(x)
+ else
+ fun_l7_n165(x)
+ end
+end
+
+def fun_l6_n547(x)
+ if (x < 1)
+ fun_l7_n499(x)
+ else
+ fun_l7_n133(x)
+ end
+end
+
+def fun_l6_n548(x)
+ if (x < 1)
+ fun_l7_n751(x)
+ else
+ fun_l7_n731(x)
+ end
+end
+
+def fun_l6_n549(x)
+ if (x < 1)
+ fun_l7_n269(x)
+ else
+ fun_l7_n690(x)
+ end
+end
+
+def fun_l6_n550(x)
+ if (x < 1)
+ fun_l7_n320(x)
+ else
+ fun_l7_n308(x)
+ end
+end
+
+def fun_l6_n551(x)
+ if (x < 1)
+ fun_l7_n182(x)
+ else
+ fun_l7_n144(x)
+ end
+end
+
+def fun_l6_n552(x)
+ if (x < 1)
+ fun_l7_n683(x)
+ else
+ fun_l7_n691(x)
+ end
+end
+
+def fun_l6_n553(x)
+ if (x < 1)
+ fun_l7_n502(x)
+ else
+ fun_l7_n520(x)
+ end
+end
+
+def fun_l6_n554(x)
+ if (x < 1)
+ fun_l7_n60(x)
+ else
+ fun_l7_n551(x)
+ end
+end
+
+def fun_l6_n555(x)
+ if (x < 1)
+ fun_l7_n185(x)
+ else
+ fun_l7_n87(x)
+ end
+end
+
+def fun_l6_n556(x)
+ if (x < 1)
+ fun_l7_n140(x)
+ else
+ fun_l7_n725(x)
+ end
+end
+
+def fun_l6_n557(x)
+ if (x < 1)
+ fun_l7_n76(x)
+ else
+ fun_l7_n501(x)
+ end
+end
+
+def fun_l6_n558(x)
+ if (x < 1)
+ fun_l7_n553(x)
+ else
+ fun_l7_n146(x)
+ end
+end
+
+def fun_l6_n559(x)
+ if (x < 1)
+ fun_l7_n535(x)
+ else
+ fun_l7_n17(x)
+ end
+end
+
+def fun_l6_n560(x)
+ if (x < 1)
+ fun_l7_n566(x)
+ else
+ fun_l7_n773(x)
+ end
+end
+
+def fun_l6_n561(x)
+ if (x < 1)
+ fun_l7_n358(x)
+ else
+ fun_l7_n951(x)
+ end
+end
+
+def fun_l6_n562(x)
+ if (x < 1)
+ fun_l7_n492(x)
+ else
+ fun_l7_n478(x)
+ end
+end
+
+def fun_l6_n563(x)
+ if (x < 1)
+ fun_l7_n796(x)
+ else
+ fun_l7_n906(x)
+ end
+end
+
+def fun_l6_n564(x)
+ if (x < 1)
+ fun_l7_n751(x)
+ else
+ fun_l7_n546(x)
+ end
+end
+
+def fun_l6_n565(x)
+ if (x < 1)
+ fun_l7_n179(x)
+ else
+ fun_l7_n49(x)
+ end
+end
+
+def fun_l6_n566(x)
+ if (x < 1)
+ fun_l7_n550(x)
+ else
+ fun_l7_n440(x)
+ end
+end
+
+def fun_l6_n567(x)
+ if (x < 1)
+ fun_l7_n715(x)
+ else
+ fun_l7_n862(x)
+ end
+end
+
+def fun_l6_n568(x)
+ if (x < 1)
+ fun_l7_n124(x)
+ else
+ fun_l7_n191(x)
+ end
+end
+
+def fun_l6_n569(x)
+ if (x < 1)
+ fun_l7_n709(x)
+ else
+ fun_l7_n704(x)
+ end
+end
+
+def fun_l6_n570(x)
+ if (x < 1)
+ fun_l7_n864(x)
+ else
+ fun_l7_n84(x)
+ end
+end
+
+def fun_l6_n571(x)
+ if (x < 1)
+ fun_l7_n302(x)
+ else
+ fun_l7_n424(x)
+ end
+end
+
+def fun_l6_n572(x)
+ if (x < 1)
+ fun_l7_n488(x)
+ else
+ fun_l7_n570(x)
+ end
+end
+
+def fun_l6_n573(x)
+ if (x < 1)
+ fun_l7_n590(x)
+ else
+ fun_l7_n560(x)
+ end
+end
+
+def fun_l6_n574(x)
+ if (x < 1)
+ fun_l7_n38(x)
+ else
+ fun_l7_n444(x)
+ end
+end
+
+def fun_l6_n575(x)
+ if (x < 1)
+ fun_l7_n401(x)
+ else
+ fun_l7_n359(x)
+ end
+end
+
+def fun_l6_n576(x)
+ if (x < 1)
+ fun_l7_n518(x)
+ else
+ fun_l7_n240(x)
+ end
+end
+
+def fun_l6_n577(x)
+ if (x < 1)
+ fun_l7_n247(x)
+ else
+ fun_l7_n540(x)
+ end
+end
+
+def fun_l6_n578(x)
+ if (x < 1)
+ fun_l7_n223(x)
+ else
+ fun_l7_n729(x)
+ end
+end
+
+def fun_l6_n579(x)
+ if (x < 1)
+ fun_l7_n524(x)
+ else
+ fun_l7_n684(x)
+ end
+end
+
+def fun_l6_n580(x)
+ if (x < 1)
+ fun_l7_n113(x)
+ else
+ fun_l7_n865(x)
+ end
+end
+
+def fun_l6_n581(x)
+ if (x < 1)
+ fun_l7_n920(x)
+ else
+ fun_l7_n238(x)
+ end
+end
+
+def fun_l6_n582(x)
+ if (x < 1)
+ fun_l7_n78(x)
+ else
+ fun_l7_n85(x)
+ end
+end
+
+def fun_l6_n583(x)
+ if (x < 1)
+ fun_l7_n713(x)
+ else
+ fun_l7_n110(x)
+ end
+end
+
+def fun_l6_n584(x)
+ if (x < 1)
+ fun_l7_n170(x)
+ else
+ fun_l7_n183(x)
+ end
+end
+
+def fun_l6_n585(x)
+ if (x < 1)
+ fun_l7_n100(x)
+ else
+ fun_l7_n215(x)
+ end
+end
+
+def fun_l6_n586(x)
+ if (x < 1)
+ fun_l7_n126(x)
+ else
+ fun_l7_n136(x)
+ end
+end
+
+def fun_l6_n587(x)
+ if (x < 1)
+ fun_l7_n592(x)
+ else
+ fun_l7_n502(x)
+ end
+end
+
+def fun_l6_n588(x)
+ if (x < 1)
+ fun_l7_n155(x)
+ else
+ fun_l7_n591(x)
+ end
+end
+
+def fun_l6_n589(x)
+ if (x < 1)
+ fun_l7_n840(x)
+ else
+ fun_l7_n91(x)
+ end
+end
+
+def fun_l6_n590(x)
+ if (x < 1)
+ fun_l7_n146(x)
+ else
+ fun_l7_n849(x)
+ end
+end
+
+def fun_l6_n591(x)
+ if (x < 1)
+ fun_l7_n161(x)
+ else
+ fun_l7_n884(x)
+ end
+end
+
+def fun_l6_n592(x)
+ if (x < 1)
+ fun_l7_n994(x)
+ else
+ fun_l7_n341(x)
+ end
+end
+
+def fun_l6_n593(x)
+ if (x < 1)
+ fun_l7_n974(x)
+ else
+ fun_l7_n355(x)
+ end
+end
+
+def fun_l6_n594(x)
+ if (x < 1)
+ fun_l7_n726(x)
+ else
+ fun_l7_n266(x)
+ end
+end
+
+def fun_l6_n595(x)
+ if (x < 1)
+ fun_l7_n142(x)
+ else
+ fun_l7_n154(x)
+ end
+end
+
+def fun_l6_n596(x)
+ if (x < 1)
+ fun_l7_n287(x)
+ else
+ fun_l7_n155(x)
+ end
+end
+
+def fun_l6_n597(x)
+ if (x < 1)
+ fun_l7_n594(x)
+ else
+ fun_l7_n424(x)
+ end
+end
+
+def fun_l6_n598(x)
+ if (x < 1)
+ fun_l7_n227(x)
+ else
+ fun_l7_n445(x)
+ end
+end
+
+def fun_l6_n599(x)
+ if (x < 1)
+ fun_l7_n660(x)
+ else
+ fun_l7_n464(x)
+ end
+end
+
+def fun_l6_n600(x)
+ if (x < 1)
+ fun_l7_n930(x)
+ else
+ fun_l7_n520(x)
+ end
+end
+
+def fun_l6_n601(x)
+ if (x < 1)
+ fun_l7_n714(x)
+ else
+ fun_l7_n984(x)
+ end
+end
+
+def fun_l6_n602(x)
+ if (x < 1)
+ fun_l7_n226(x)
+ else
+ fun_l7_n316(x)
+ end
+end
+
+def fun_l6_n603(x)
+ if (x < 1)
+ fun_l7_n104(x)
+ else
+ fun_l7_n563(x)
+ end
+end
+
+def fun_l6_n604(x)
+ if (x < 1)
+ fun_l7_n149(x)
+ else
+ fun_l7_n921(x)
+ end
+end
+
+def fun_l6_n605(x)
+ if (x < 1)
+ fun_l7_n195(x)
+ else
+ fun_l7_n696(x)
+ end
+end
+
+def fun_l6_n606(x)
+ if (x < 1)
+ fun_l7_n337(x)
+ else
+ fun_l7_n347(x)
+ end
+end
+
+def fun_l6_n607(x)
+ if (x < 1)
+ fun_l7_n657(x)
+ else
+ fun_l7_n67(x)
+ end
+end
+
+def fun_l6_n608(x)
+ if (x < 1)
+ fun_l7_n796(x)
+ else
+ fun_l7_n589(x)
+ end
+end
+
+def fun_l6_n609(x)
+ if (x < 1)
+ fun_l7_n230(x)
+ else
+ fun_l7_n769(x)
+ end
+end
+
+def fun_l6_n610(x)
+ if (x < 1)
+ fun_l7_n427(x)
+ else
+ fun_l7_n892(x)
+ end
+end
+
+def fun_l6_n611(x)
+ if (x < 1)
+ fun_l7_n741(x)
+ else
+ fun_l7_n567(x)
+ end
+end
+
+def fun_l6_n612(x)
+ if (x < 1)
+ fun_l7_n471(x)
+ else
+ fun_l7_n824(x)
+ end
+end
+
+def fun_l6_n613(x)
+ if (x < 1)
+ fun_l7_n522(x)
+ else
+ fun_l7_n694(x)
+ end
+end
+
+def fun_l6_n614(x)
+ if (x < 1)
+ fun_l7_n95(x)
+ else
+ fun_l7_n84(x)
+ end
+end
+
+def fun_l6_n615(x)
+ if (x < 1)
+ fun_l7_n632(x)
+ else
+ fun_l7_n590(x)
+ end
+end
+
+def fun_l6_n616(x)
+ if (x < 1)
+ fun_l7_n372(x)
+ else
+ fun_l7_n659(x)
+ end
+end
+
+def fun_l6_n617(x)
+ if (x < 1)
+ fun_l7_n547(x)
+ else
+ fun_l7_n321(x)
+ end
+end
+
+def fun_l6_n618(x)
+ if (x < 1)
+ fun_l7_n53(x)
+ else
+ fun_l7_n723(x)
+ end
+end
+
+def fun_l6_n619(x)
+ if (x < 1)
+ fun_l7_n653(x)
+ else
+ fun_l7_n740(x)
+ end
+end
+
+def fun_l6_n620(x)
+ if (x < 1)
+ fun_l7_n16(x)
+ else
+ fun_l7_n228(x)
+ end
+end
+
+def fun_l6_n621(x)
+ if (x < 1)
+ fun_l7_n655(x)
+ else
+ fun_l7_n701(x)
+ end
+end
+
+def fun_l6_n622(x)
+ if (x < 1)
+ fun_l7_n212(x)
+ else
+ fun_l7_n692(x)
+ end
+end
+
+def fun_l6_n623(x)
+ if (x < 1)
+ fun_l7_n959(x)
+ else
+ fun_l7_n327(x)
+ end
+end
+
+def fun_l6_n624(x)
+ if (x < 1)
+ fun_l7_n607(x)
+ else
+ fun_l7_n168(x)
+ end
+end
+
+def fun_l6_n625(x)
+ if (x < 1)
+ fun_l7_n229(x)
+ else
+ fun_l7_n584(x)
+ end
+end
+
+def fun_l6_n626(x)
+ if (x < 1)
+ fun_l7_n776(x)
+ else
+ fun_l7_n284(x)
+ end
+end
+
+def fun_l6_n627(x)
+ if (x < 1)
+ fun_l7_n770(x)
+ else
+ fun_l7_n169(x)
+ end
+end
+
+def fun_l6_n628(x)
+ if (x < 1)
+ fun_l7_n550(x)
+ else
+ fun_l7_n918(x)
+ end
+end
+
+def fun_l6_n629(x)
+ if (x < 1)
+ fun_l7_n450(x)
+ else
+ fun_l7_n654(x)
+ end
+end
+
+def fun_l6_n630(x)
+ if (x < 1)
+ fun_l7_n968(x)
+ else
+ fun_l7_n770(x)
+ end
+end
+
+def fun_l6_n631(x)
+ if (x < 1)
+ fun_l7_n118(x)
+ else
+ fun_l7_n411(x)
+ end
+end
+
+def fun_l6_n632(x)
+ if (x < 1)
+ fun_l7_n352(x)
+ else
+ fun_l7_n840(x)
+ end
+end
+
+def fun_l6_n633(x)
+ if (x < 1)
+ fun_l7_n588(x)
+ else
+ fun_l7_n810(x)
+ end
+end
+
+def fun_l6_n634(x)
+ if (x < 1)
+ fun_l7_n955(x)
+ else
+ fun_l7_n709(x)
+ end
+end
+
+def fun_l6_n635(x)
+ if (x < 1)
+ fun_l7_n137(x)
+ else
+ fun_l7_n239(x)
+ end
+end
+
+def fun_l6_n636(x)
+ if (x < 1)
+ fun_l7_n955(x)
+ else
+ fun_l7_n87(x)
+ end
+end
+
+def fun_l6_n637(x)
+ if (x < 1)
+ fun_l7_n479(x)
+ else
+ fun_l7_n91(x)
+ end
+end
+
+def fun_l6_n638(x)
+ if (x < 1)
+ fun_l7_n366(x)
+ else
+ fun_l7_n388(x)
+ end
+end
+
+def fun_l6_n639(x)
+ if (x < 1)
+ fun_l7_n90(x)
+ else
+ fun_l7_n971(x)
+ end
+end
+
+def fun_l6_n640(x)
+ if (x < 1)
+ fun_l7_n330(x)
+ else
+ fun_l7_n415(x)
+ end
+end
+
+def fun_l6_n641(x)
+ if (x < 1)
+ fun_l7_n233(x)
+ else
+ fun_l7_n653(x)
+ end
+end
+
+def fun_l6_n642(x)
+ if (x < 1)
+ fun_l7_n106(x)
+ else
+ fun_l7_n440(x)
+ end
+end
+
+def fun_l6_n643(x)
+ if (x < 1)
+ fun_l7_n156(x)
+ else
+ fun_l7_n818(x)
+ end
+end
+
+def fun_l6_n644(x)
+ if (x < 1)
+ fun_l7_n68(x)
+ else
+ fun_l7_n763(x)
+ end
+end
+
+def fun_l6_n645(x)
+ if (x < 1)
+ fun_l7_n858(x)
+ else
+ fun_l7_n465(x)
+ end
+end
+
+def fun_l6_n646(x)
+ if (x < 1)
+ fun_l7_n886(x)
+ else
+ fun_l7_n86(x)
+ end
+end
+
+def fun_l6_n647(x)
+ if (x < 1)
+ fun_l7_n689(x)
+ else
+ fun_l7_n964(x)
+ end
+end
+
+def fun_l6_n648(x)
+ if (x < 1)
+ fun_l7_n748(x)
+ else
+ fun_l7_n214(x)
+ end
+end
+
+def fun_l6_n649(x)
+ if (x < 1)
+ fun_l7_n830(x)
+ else
+ fun_l7_n567(x)
+ end
+end
+
+def fun_l6_n650(x)
+ if (x < 1)
+ fun_l7_n907(x)
+ else
+ fun_l7_n957(x)
+ end
+end
+
+def fun_l6_n651(x)
+ if (x < 1)
+ fun_l7_n242(x)
+ else
+ fun_l7_n239(x)
+ end
+end
+
+def fun_l6_n652(x)
+ if (x < 1)
+ fun_l7_n347(x)
+ else
+ fun_l7_n63(x)
+ end
+end
+
+def fun_l6_n653(x)
+ if (x < 1)
+ fun_l7_n480(x)
+ else
+ fun_l7_n441(x)
+ end
+end
+
+def fun_l6_n654(x)
+ if (x < 1)
+ fun_l7_n304(x)
+ else
+ fun_l7_n690(x)
+ end
+end
+
+def fun_l6_n655(x)
+ if (x < 1)
+ fun_l7_n511(x)
+ else
+ fun_l7_n710(x)
+ end
+end
+
+def fun_l6_n656(x)
+ if (x < 1)
+ fun_l7_n202(x)
+ else
+ fun_l7_n48(x)
+ end
+end
+
+def fun_l6_n657(x)
+ if (x < 1)
+ fun_l7_n232(x)
+ else
+ fun_l7_n919(x)
+ end
+end
+
+def fun_l6_n658(x)
+ if (x < 1)
+ fun_l7_n627(x)
+ else
+ fun_l7_n620(x)
+ end
+end
+
+def fun_l6_n659(x)
+ if (x < 1)
+ fun_l7_n716(x)
+ else
+ fun_l7_n116(x)
+ end
+end
+
+def fun_l6_n660(x)
+ if (x < 1)
+ fun_l7_n105(x)
+ else
+ fun_l7_n536(x)
+ end
+end
+
+def fun_l6_n661(x)
+ if (x < 1)
+ fun_l7_n376(x)
+ else
+ fun_l7_n965(x)
+ end
+end
+
+def fun_l6_n662(x)
+ if (x < 1)
+ fun_l7_n417(x)
+ else
+ fun_l7_n726(x)
+ end
+end
+
+def fun_l6_n663(x)
+ if (x < 1)
+ fun_l7_n567(x)
+ else
+ fun_l7_n948(x)
+ end
+end
+
+def fun_l6_n664(x)
+ if (x < 1)
+ fun_l7_n640(x)
+ else
+ fun_l7_n910(x)
+ end
+end
+
+def fun_l6_n665(x)
+ if (x < 1)
+ fun_l7_n874(x)
+ else
+ fun_l7_n314(x)
+ end
+end
+
+def fun_l6_n666(x)
+ if (x < 1)
+ fun_l7_n946(x)
+ else
+ fun_l7_n101(x)
+ end
+end
+
+def fun_l6_n667(x)
+ if (x < 1)
+ fun_l7_n960(x)
+ else
+ fun_l7_n199(x)
+ end
+end
+
+def fun_l6_n668(x)
+ if (x < 1)
+ fun_l7_n389(x)
+ else
+ fun_l7_n976(x)
+ end
+end
+
+def fun_l6_n669(x)
+ if (x < 1)
+ fun_l7_n31(x)
+ else
+ fun_l7_n903(x)
+ end
+end
+
+def fun_l6_n670(x)
+ if (x < 1)
+ fun_l7_n288(x)
+ else
+ fun_l7_n115(x)
+ end
+end
+
+def fun_l6_n671(x)
+ if (x < 1)
+ fun_l7_n418(x)
+ else
+ fun_l7_n249(x)
+ end
+end
+
+def fun_l6_n672(x)
+ if (x < 1)
+ fun_l7_n733(x)
+ else
+ fun_l7_n815(x)
+ end
+end
+
+def fun_l6_n673(x)
+ if (x < 1)
+ fun_l7_n227(x)
+ else
+ fun_l7_n23(x)
+ end
+end
+
+def fun_l6_n674(x)
+ if (x < 1)
+ fun_l7_n936(x)
+ else
+ fun_l7_n386(x)
+ end
+end
+
+def fun_l6_n675(x)
+ if (x < 1)
+ fun_l7_n638(x)
+ else
+ fun_l7_n39(x)
+ end
+end
+
+def fun_l6_n676(x)
+ if (x < 1)
+ fun_l7_n304(x)
+ else
+ fun_l7_n35(x)
+ end
+end
+
+def fun_l6_n677(x)
+ if (x < 1)
+ fun_l7_n676(x)
+ else
+ fun_l7_n443(x)
+ end
+end
+
+def fun_l6_n678(x)
+ if (x < 1)
+ fun_l7_n648(x)
+ else
+ fun_l7_n453(x)
+ end
+end
+
+def fun_l6_n679(x)
+ if (x < 1)
+ fun_l7_n15(x)
+ else
+ fun_l7_n220(x)
+ end
+end
+
+def fun_l6_n680(x)
+ if (x < 1)
+ fun_l7_n201(x)
+ else
+ fun_l7_n842(x)
+ end
+end
+
+def fun_l6_n681(x)
+ if (x < 1)
+ fun_l7_n67(x)
+ else
+ fun_l7_n73(x)
+ end
+end
+
+def fun_l6_n682(x)
+ if (x < 1)
+ fun_l7_n280(x)
+ else
+ fun_l7_n370(x)
+ end
+end
+
+def fun_l6_n683(x)
+ if (x < 1)
+ fun_l7_n822(x)
+ else
+ fun_l7_n27(x)
+ end
+end
+
+def fun_l6_n684(x)
+ if (x < 1)
+ fun_l7_n720(x)
+ else
+ fun_l7_n651(x)
+ end
+end
+
+def fun_l6_n685(x)
+ if (x < 1)
+ fun_l7_n414(x)
+ else
+ fun_l7_n257(x)
+ end
+end
+
+def fun_l6_n686(x)
+ if (x < 1)
+ fun_l7_n477(x)
+ else
+ fun_l7_n883(x)
+ end
+end
+
+def fun_l6_n687(x)
+ if (x < 1)
+ fun_l7_n467(x)
+ else
+ fun_l7_n739(x)
+ end
+end
+
+def fun_l6_n688(x)
+ if (x < 1)
+ fun_l7_n421(x)
+ else
+ fun_l7_n271(x)
+ end
+end
+
+def fun_l6_n689(x)
+ if (x < 1)
+ fun_l7_n444(x)
+ else
+ fun_l7_n601(x)
+ end
+end
+
+def fun_l6_n690(x)
+ if (x < 1)
+ fun_l7_n104(x)
+ else
+ fun_l7_n597(x)
+ end
+end
+
+def fun_l6_n691(x)
+ if (x < 1)
+ fun_l7_n273(x)
+ else
+ fun_l7_n79(x)
+ end
+end
+
+def fun_l6_n692(x)
+ if (x < 1)
+ fun_l7_n310(x)
+ else
+ fun_l7_n261(x)
+ end
+end
+
+def fun_l6_n693(x)
+ if (x < 1)
+ fun_l7_n190(x)
+ else
+ fun_l7_n330(x)
+ end
+end
+
+def fun_l6_n694(x)
+ if (x < 1)
+ fun_l7_n103(x)
+ else
+ fun_l7_n258(x)
+ end
+end
+
+def fun_l6_n695(x)
+ if (x < 1)
+ fun_l7_n524(x)
+ else
+ fun_l7_n988(x)
+ end
+end
+
+def fun_l6_n696(x)
+ if (x < 1)
+ fun_l7_n885(x)
+ else
+ fun_l7_n731(x)
+ end
+end
+
+def fun_l6_n697(x)
+ if (x < 1)
+ fun_l7_n212(x)
+ else
+ fun_l7_n98(x)
+ end
+end
+
+def fun_l6_n698(x)
+ if (x < 1)
+ fun_l7_n735(x)
+ else
+ fun_l7_n682(x)
+ end
+end
+
+def fun_l6_n699(x)
+ if (x < 1)
+ fun_l7_n610(x)
+ else
+ fun_l7_n512(x)
+ end
+end
+
+def fun_l6_n700(x)
+ if (x < 1)
+ fun_l7_n828(x)
+ else
+ fun_l7_n651(x)
+ end
+end
+
+def fun_l6_n701(x)
+ if (x < 1)
+ fun_l7_n269(x)
+ else
+ fun_l7_n192(x)
+ end
+end
+
+def fun_l6_n702(x)
+ if (x < 1)
+ fun_l7_n775(x)
+ else
+ fun_l7_n334(x)
+ end
+end
+
+def fun_l6_n703(x)
+ if (x < 1)
+ fun_l7_n880(x)
+ else
+ fun_l7_n396(x)
+ end
+end
+
+def fun_l6_n704(x)
+ if (x < 1)
+ fun_l7_n907(x)
+ else
+ fun_l7_n107(x)
+ end
+end
+
+def fun_l6_n705(x)
+ if (x < 1)
+ fun_l7_n425(x)
+ else
+ fun_l7_n555(x)
+ end
+end
+
+def fun_l6_n706(x)
+ if (x < 1)
+ fun_l7_n458(x)
+ else
+ fun_l7_n610(x)
+ end
+end
+
+def fun_l6_n707(x)
+ if (x < 1)
+ fun_l7_n527(x)
+ else
+ fun_l7_n69(x)
+ end
+end
+
+def fun_l6_n708(x)
+ if (x < 1)
+ fun_l7_n518(x)
+ else
+ fun_l7_n87(x)
+ end
+end
+
+def fun_l6_n709(x)
+ if (x < 1)
+ fun_l7_n441(x)
+ else
+ fun_l7_n533(x)
+ end
+end
+
+def fun_l6_n710(x)
+ if (x < 1)
+ fun_l7_n872(x)
+ else
+ fun_l7_n896(x)
+ end
+end
+
+def fun_l6_n711(x)
+ if (x < 1)
+ fun_l7_n388(x)
+ else
+ fun_l7_n476(x)
+ end
+end
+
+def fun_l6_n712(x)
+ if (x < 1)
+ fun_l7_n913(x)
+ else
+ fun_l7_n304(x)
+ end
+end
+
+def fun_l6_n713(x)
+ if (x < 1)
+ fun_l7_n203(x)
+ else
+ fun_l7_n457(x)
+ end
+end
+
+def fun_l6_n714(x)
+ if (x < 1)
+ fun_l7_n593(x)
+ else
+ fun_l7_n921(x)
+ end
+end
+
+def fun_l6_n715(x)
+ if (x < 1)
+ fun_l7_n452(x)
+ else
+ fun_l7_n68(x)
+ end
+end
+
+def fun_l6_n716(x)
+ if (x < 1)
+ fun_l7_n203(x)
+ else
+ fun_l7_n362(x)
+ end
+end
+
+def fun_l6_n717(x)
+ if (x < 1)
+ fun_l7_n455(x)
+ else
+ fun_l7_n199(x)
+ end
+end
+
+def fun_l6_n718(x)
+ if (x < 1)
+ fun_l7_n500(x)
+ else
+ fun_l7_n272(x)
+ end
+end
+
+def fun_l6_n719(x)
+ if (x < 1)
+ fun_l7_n970(x)
+ else
+ fun_l7_n572(x)
+ end
+end
+
+def fun_l6_n720(x)
+ if (x < 1)
+ fun_l7_n74(x)
+ else
+ fun_l7_n246(x)
+ end
+end
+
+def fun_l6_n721(x)
+ if (x < 1)
+ fun_l7_n943(x)
+ else
+ fun_l7_n640(x)
+ end
+end
+
+def fun_l6_n722(x)
+ if (x < 1)
+ fun_l7_n106(x)
+ else
+ fun_l7_n387(x)
+ end
+end
+
+def fun_l6_n723(x)
+ if (x < 1)
+ fun_l7_n474(x)
+ else
+ fun_l7_n530(x)
+ end
+end
+
+def fun_l6_n724(x)
+ if (x < 1)
+ fun_l7_n246(x)
+ else
+ fun_l7_n387(x)
+ end
+end
+
+def fun_l6_n725(x)
+ if (x < 1)
+ fun_l7_n572(x)
+ else
+ fun_l7_n874(x)
+ end
+end
+
+def fun_l6_n726(x)
+ if (x < 1)
+ fun_l7_n858(x)
+ else
+ fun_l7_n71(x)
+ end
+end
+
+def fun_l6_n727(x)
+ if (x < 1)
+ fun_l7_n615(x)
+ else
+ fun_l7_n14(x)
+ end
+end
+
+def fun_l6_n728(x)
+ if (x < 1)
+ fun_l7_n840(x)
+ else
+ fun_l7_n779(x)
+ end
+end
+
+def fun_l6_n729(x)
+ if (x < 1)
+ fun_l7_n811(x)
+ else
+ fun_l7_n981(x)
+ end
+end
+
+def fun_l6_n730(x)
+ if (x < 1)
+ fun_l7_n196(x)
+ else
+ fun_l7_n731(x)
+ end
+end
+
+def fun_l6_n731(x)
+ if (x < 1)
+ fun_l7_n202(x)
+ else
+ fun_l7_n781(x)
+ end
+end
+
+def fun_l6_n732(x)
+ if (x < 1)
+ fun_l7_n867(x)
+ else
+ fun_l7_n770(x)
+ end
+end
+
+def fun_l6_n733(x)
+ if (x < 1)
+ fun_l7_n90(x)
+ else
+ fun_l7_n937(x)
+ end
+end
+
+def fun_l6_n734(x)
+ if (x < 1)
+ fun_l7_n890(x)
+ else
+ fun_l7_n937(x)
+ end
+end
+
+def fun_l6_n735(x)
+ if (x < 1)
+ fun_l7_n967(x)
+ else
+ fun_l7_n235(x)
+ end
+end
+
+def fun_l6_n736(x)
+ if (x < 1)
+ fun_l7_n612(x)
+ else
+ fun_l7_n140(x)
+ end
+end
+
+def fun_l6_n737(x)
+ if (x < 1)
+ fun_l7_n156(x)
+ else
+ fun_l7_n600(x)
+ end
+end
+
+def fun_l6_n738(x)
+ if (x < 1)
+ fun_l7_n462(x)
+ else
+ fun_l7_n907(x)
+ end
+end
+
+def fun_l6_n739(x)
+ if (x < 1)
+ fun_l7_n226(x)
+ else
+ fun_l7_n83(x)
+ end
+end
+
+def fun_l6_n740(x)
+ if (x < 1)
+ fun_l7_n419(x)
+ else
+ fun_l7_n95(x)
+ end
+end
+
+def fun_l6_n741(x)
+ if (x < 1)
+ fun_l7_n358(x)
+ else
+ fun_l7_n701(x)
+ end
+end
+
+def fun_l6_n742(x)
+ if (x < 1)
+ fun_l7_n451(x)
+ else
+ fun_l7_n700(x)
+ end
+end
+
+def fun_l6_n743(x)
+ if (x < 1)
+ fun_l7_n561(x)
+ else
+ fun_l7_n383(x)
+ end
+end
+
+def fun_l6_n744(x)
+ if (x < 1)
+ fun_l7_n28(x)
+ else
+ fun_l7_n56(x)
+ end
+end
+
+def fun_l6_n745(x)
+ if (x < 1)
+ fun_l7_n127(x)
+ else
+ fun_l7_n113(x)
+ end
+end
+
+def fun_l6_n746(x)
+ if (x < 1)
+ fun_l7_n767(x)
+ else
+ fun_l7_n907(x)
+ end
+end
+
+def fun_l6_n747(x)
+ if (x < 1)
+ fun_l7_n174(x)
+ else
+ fun_l7_n955(x)
+ end
+end
+
+def fun_l6_n748(x)
+ if (x < 1)
+ fun_l7_n51(x)
+ else
+ fun_l7_n951(x)
+ end
+end
+
+def fun_l6_n749(x)
+ if (x < 1)
+ fun_l7_n172(x)
+ else
+ fun_l7_n847(x)
+ end
+end
+
+def fun_l6_n750(x)
+ if (x < 1)
+ fun_l7_n240(x)
+ else
+ fun_l7_n869(x)
+ end
+end
+
+def fun_l6_n751(x)
+ if (x < 1)
+ fun_l7_n435(x)
+ else
+ fun_l7_n747(x)
+ end
+end
+
+def fun_l6_n752(x)
+ if (x < 1)
+ fun_l7_n673(x)
+ else
+ fun_l7_n454(x)
+ end
+end
+
+def fun_l6_n753(x)
+ if (x < 1)
+ fun_l7_n98(x)
+ else
+ fun_l7_n66(x)
+ end
+end
+
+def fun_l6_n754(x)
+ if (x < 1)
+ fun_l7_n63(x)
+ else
+ fun_l7_n943(x)
+ end
+end
+
+def fun_l6_n755(x)
+ if (x < 1)
+ fun_l7_n863(x)
+ else
+ fun_l7_n155(x)
+ end
+end
+
+def fun_l6_n756(x)
+ if (x < 1)
+ fun_l7_n197(x)
+ else
+ fun_l7_n807(x)
+ end
+end
+
+def fun_l6_n757(x)
+ if (x < 1)
+ fun_l7_n992(x)
+ else
+ fun_l7_n615(x)
+ end
+end
+
+def fun_l6_n758(x)
+ if (x < 1)
+ fun_l7_n172(x)
+ else
+ fun_l7_n507(x)
+ end
+end
+
+def fun_l6_n759(x)
+ if (x < 1)
+ fun_l7_n756(x)
+ else
+ fun_l7_n599(x)
+ end
+end
+
+def fun_l6_n760(x)
+ if (x < 1)
+ fun_l7_n876(x)
+ else
+ fun_l7_n185(x)
+ end
+end
+
+def fun_l6_n761(x)
+ if (x < 1)
+ fun_l7_n522(x)
+ else
+ fun_l7_n301(x)
+ end
+end
+
+def fun_l6_n762(x)
+ if (x < 1)
+ fun_l7_n994(x)
+ else
+ fun_l7_n408(x)
+ end
+end
+
+def fun_l6_n763(x)
+ if (x < 1)
+ fun_l7_n201(x)
+ else
+ fun_l7_n304(x)
+ end
+end
+
+def fun_l6_n764(x)
+ if (x < 1)
+ fun_l7_n200(x)
+ else
+ fun_l7_n123(x)
+ end
+end
+
+def fun_l6_n765(x)
+ if (x < 1)
+ fun_l7_n156(x)
+ else
+ fun_l7_n117(x)
+ end
+end
+
+def fun_l6_n766(x)
+ if (x < 1)
+ fun_l7_n918(x)
+ else
+ fun_l7_n416(x)
+ end
+end
+
+def fun_l6_n767(x)
+ if (x < 1)
+ fun_l7_n538(x)
+ else
+ fun_l7_n335(x)
+ end
+end
+
+def fun_l6_n768(x)
+ if (x < 1)
+ fun_l7_n699(x)
+ else
+ fun_l7_n980(x)
+ end
+end
+
+def fun_l6_n769(x)
+ if (x < 1)
+ fun_l7_n903(x)
+ else
+ fun_l7_n195(x)
+ end
+end
+
+def fun_l6_n770(x)
+ if (x < 1)
+ fun_l7_n419(x)
+ else
+ fun_l7_n523(x)
+ end
+end
+
+def fun_l6_n771(x)
+ if (x < 1)
+ fun_l7_n221(x)
+ else
+ fun_l7_n39(x)
+ end
+end
+
+def fun_l6_n772(x)
+ if (x < 1)
+ fun_l7_n369(x)
+ else
+ fun_l7_n227(x)
+ end
+end
+
+def fun_l6_n773(x)
+ if (x < 1)
+ fun_l7_n861(x)
+ else
+ fun_l7_n252(x)
+ end
+end
+
+def fun_l6_n774(x)
+ if (x < 1)
+ fun_l7_n682(x)
+ else
+ fun_l7_n42(x)
+ end
+end
+
+def fun_l6_n775(x)
+ if (x < 1)
+ fun_l7_n777(x)
+ else
+ fun_l7_n594(x)
+ end
+end
+
+def fun_l6_n776(x)
+ if (x < 1)
+ fun_l7_n794(x)
+ else
+ fun_l7_n71(x)
+ end
+end
+
+def fun_l6_n777(x)
+ if (x < 1)
+ fun_l7_n669(x)
+ else
+ fun_l7_n66(x)
+ end
+end
+
+def fun_l6_n778(x)
+ if (x < 1)
+ fun_l7_n824(x)
+ else
+ fun_l7_n95(x)
+ end
+end
+
+def fun_l6_n779(x)
+ if (x < 1)
+ fun_l7_n833(x)
+ else
+ fun_l7_n504(x)
+ end
+end
+
+def fun_l6_n780(x)
+ if (x < 1)
+ fun_l7_n50(x)
+ else
+ fun_l7_n647(x)
+ end
+end
+
+def fun_l6_n781(x)
+ if (x < 1)
+ fun_l7_n139(x)
+ else
+ fun_l7_n214(x)
+ end
+end
+
+def fun_l6_n782(x)
+ if (x < 1)
+ fun_l7_n450(x)
+ else
+ fun_l7_n660(x)
+ end
+end
+
+def fun_l6_n783(x)
+ if (x < 1)
+ fun_l7_n164(x)
+ else
+ fun_l7_n576(x)
+ end
+end
+
+def fun_l6_n784(x)
+ if (x < 1)
+ fun_l7_n722(x)
+ else
+ fun_l7_n714(x)
+ end
+end
+
+def fun_l6_n785(x)
+ if (x < 1)
+ fun_l7_n90(x)
+ else
+ fun_l7_n556(x)
+ end
+end
+
+def fun_l6_n786(x)
+ if (x < 1)
+ fun_l7_n413(x)
+ else
+ fun_l7_n722(x)
+ end
+end
+
+def fun_l6_n787(x)
+ if (x < 1)
+ fun_l7_n141(x)
+ else
+ fun_l7_n90(x)
+ end
+end
+
+def fun_l6_n788(x)
+ if (x < 1)
+ fun_l7_n750(x)
+ else
+ fun_l7_n660(x)
+ end
+end
+
+def fun_l6_n789(x)
+ if (x < 1)
+ fun_l7_n581(x)
+ else
+ fun_l7_n368(x)
+ end
+end
+
+def fun_l6_n790(x)
+ if (x < 1)
+ fun_l7_n922(x)
+ else
+ fun_l7_n551(x)
+ end
+end
+
+def fun_l6_n791(x)
+ if (x < 1)
+ fun_l7_n842(x)
+ else
+ fun_l7_n336(x)
+ end
+end
+
+def fun_l6_n792(x)
+ if (x < 1)
+ fun_l7_n264(x)
+ else
+ fun_l7_n7(x)
+ end
+end
+
+def fun_l6_n793(x)
+ if (x < 1)
+ fun_l7_n902(x)
+ else
+ fun_l7_n184(x)
+ end
+end
+
+def fun_l6_n794(x)
+ if (x < 1)
+ fun_l7_n788(x)
+ else
+ fun_l7_n854(x)
+ end
+end
+
+def fun_l6_n795(x)
+ if (x < 1)
+ fun_l7_n375(x)
+ else
+ fun_l7_n601(x)
+ end
+end
+
+def fun_l6_n796(x)
+ if (x < 1)
+ fun_l7_n674(x)
+ else
+ fun_l7_n136(x)
+ end
+end
+
+def fun_l6_n797(x)
+ if (x < 1)
+ fun_l7_n836(x)
+ else
+ fun_l7_n90(x)
+ end
+end
+
+def fun_l6_n798(x)
+ if (x < 1)
+ fun_l7_n461(x)
+ else
+ fun_l7_n686(x)
+ end
+end
+
+def fun_l6_n799(x)
+ if (x < 1)
+ fun_l7_n308(x)
+ else
+ fun_l7_n179(x)
+ end
+end
+
+def fun_l6_n800(x)
+ if (x < 1)
+ fun_l7_n154(x)
+ else
+ fun_l7_n618(x)
+ end
+end
+
+def fun_l6_n801(x)
+ if (x < 1)
+ fun_l7_n242(x)
+ else
+ fun_l7_n16(x)
+ end
+end
+
+def fun_l6_n802(x)
+ if (x < 1)
+ fun_l7_n880(x)
+ else
+ fun_l7_n143(x)
+ end
+end
+
+def fun_l6_n803(x)
+ if (x < 1)
+ fun_l7_n577(x)
+ else
+ fun_l7_n414(x)
+ end
+end
+
+def fun_l6_n804(x)
+ if (x < 1)
+ fun_l7_n409(x)
+ else
+ fun_l7_n116(x)
+ end
+end
+
+def fun_l6_n805(x)
+ if (x < 1)
+ fun_l7_n259(x)
+ else
+ fun_l7_n820(x)
+ end
+end
+
+def fun_l6_n806(x)
+ if (x < 1)
+ fun_l7_n384(x)
+ else
+ fun_l7_n939(x)
+ end
+end
+
+def fun_l6_n807(x)
+ if (x < 1)
+ fun_l7_n138(x)
+ else
+ fun_l7_n652(x)
+ end
+end
+
+def fun_l6_n808(x)
+ if (x < 1)
+ fun_l7_n455(x)
+ else
+ fun_l7_n693(x)
+ end
+end
+
+def fun_l6_n809(x)
+ if (x < 1)
+ fun_l7_n892(x)
+ else
+ fun_l7_n638(x)
+ end
+end
+
+def fun_l6_n810(x)
+ if (x < 1)
+ fun_l7_n498(x)
+ else
+ fun_l7_n716(x)
+ end
+end
+
+def fun_l6_n811(x)
+ if (x < 1)
+ fun_l7_n713(x)
+ else
+ fun_l7_n9(x)
+ end
+end
+
+def fun_l6_n812(x)
+ if (x < 1)
+ fun_l7_n854(x)
+ else
+ fun_l7_n507(x)
+ end
+end
+
+def fun_l6_n813(x)
+ if (x < 1)
+ fun_l7_n385(x)
+ else
+ fun_l7_n323(x)
+ end
+end
+
+def fun_l6_n814(x)
+ if (x < 1)
+ fun_l7_n437(x)
+ else
+ fun_l7_n954(x)
+ end
+end
+
+def fun_l6_n815(x)
+ if (x < 1)
+ fun_l7_n471(x)
+ else
+ fun_l7_n245(x)
+ end
+end
+
+def fun_l6_n816(x)
+ if (x < 1)
+ fun_l7_n485(x)
+ else
+ fun_l7_n935(x)
+ end
+end
+
+def fun_l6_n817(x)
+ if (x < 1)
+ fun_l7_n319(x)
+ else
+ fun_l7_n566(x)
+ end
+end
+
+def fun_l6_n818(x)
+ if (x < 1)
+ fun_l7_n339(x)
+ else
+ fun_l7_n152(x)
+ end
+end
+
+def fun_l6_n819(x)
+ if (x < 1)
+ fun_l7_n21(x)
+ else
+ fun_l7_n452(x)
+ end
+end
+
+def fun_l6_n820(x)
+ if (x < 1)
+ fun_l7_n16(x)
+ else
+ fun_l7_n502(x)
+ end
+end
+
+def fun_l6_n821(x)
+ if (x < 1)
+ fun_l7_n813(x)
+ else
+ fun_l7_n520(x)
+ end
+end
+
+def fun_l6_n822(x)
+ if (x < 1)
+ fun_l7_n519(x)
+ else
+ fun_l7_n651(x)
+ end
+end
+
+def fun_l6_n823(x)
+ if (x < 1)
+ fun_l7_n890(x)
+ else
+ fun_l7_n227(x)
+ end
+end
+
+def fun_l6_n824(x)
+ if (x < 1)
+ fun_l7_n517(x)
+ else
+ fun_l7_n799(x)
+ end
+end
+
+def fun_l6_n825(x)
+ if (x < 1)
+ fun_l7_n404(x)
+ else
+ fun_l7_n442(x)
+ end
+end
+
+def fun_l6_n826(x)
+ if (x < 1)
+ fun_l7_n308(x)
+ else
+ fun_l7_n328(x)
+ end
+end
+
+def fun_l6_n827(x)
+ if (x < 1)
+ fun_l7_n953(x)
+ else
+ fun_l7_n950(x)
+ end
+end
+
+def fun_l6_n828(x)
+ if (x < 1)
+ fun_l7_n206(x)
+ else
+ fun_l7_n701(x)
+ end
+end
+
+def fun_l6_n829(x)
+ if (x < 1)
+ fun_l7_n499(x)
+ else
+ fun_l7_n972(x)
+ end
+end
+
+def fun_l6_n830(x)
+ if (x < 1)
+ fun_l7_n578(x)
+ else
+ fun_l7_n697(x)
+ end
+end
+
+def fun_l6_n831(x)
+ if (x < 1)
+ fun_l7_n116(x)
+ else
+ fun_l7_n747(x)
+ end
+end
+
+def fun_l6_n832(x)
+ if (x < 1)
+ fun_l7_n423(x)
+ else
+ fun_l7_n653(x)
+ end
+end
+
+def fun_l6_n833(x)
+ if (x < 1)
+ fun_l7_n524(x)
+ else
+ fun_l7_n423(x)
+ end
+end
+
+def fun_l6_n834(x)
+ if (x < 1)
+ fun_l7_n940(x)
+ else
+ fun_l7_n48(x)
+ end
+end
+
+def fun_l6_n835(x)
+ if (x < 1)
+ fun_l7_n336(x)
+ else
+ fun_l7_n584(x)
+ end
+end
+
+def fun_l6_n836(x)
+ if (x < 1)
+ fun_l7_n66(x)
+ else
+ fun_l7_n980(x)
+ end
+end
+
+def fun_l6_n837(x)
+ if (x < 1)
+ fun_l7_n176(x)
+ else
+ fun_l7_n845(x)
+ end
+end
+
+def fun_l6_n838(x)
+ if (x < 1)
+ fun_l7_n736(x)
+ else
+ fun_l7_n385(x)
+ end
+end
+
+def fun_l6_n839(x)
+ if (x < 1)
+ fun_l7_n948(x)
+ else
+ fun_l7_n258(x)
+ end
+end
+
+def fun_l6_n840(x)
+ if (x < 1)
+ fun_l7_n926(x)
+ else
+ fun_l7_n926(x)
+ end
+end
+
+def fun_l6_n841(x)
+ if (x < 1)
+ fun_l7_n334(x)
+ else
+ fun_l7_n134(x)
+ end
+end
+
+def fun_l6_n842(x)
+ if (x < 1)
+ fun_l7_n757(x)
+ else
+ fun_l7_n995(x)
+ end
+end
+
+def fun_l6_n843(x)
+ if (x < 1)
+ fun_l7_n75(x)
+ else
+ fun_l7_n6(x)
+ end
+end
+
+def fun_l6_n844(x)
+ if (x < 1)
+ fun_l7_n632(x)
+ else
+ fun_l7_n683(x)
+ end
+end
+
+def fun_l6_n845(x)
+ if (x < 1)
+ fun_l7_n788(x)
+ else
+ fun_l7_n153(x)
+ end
+end
+
+def fun_l6_n846(x)
+ if (x < 1)
+ fun_l7_n668(x)
+ else
+ fun_l7_n78(x)
+ end
+end
+
+def fun_l6_n847(x)
+ if (x < 1)
+ fun_l7_n509(x)
+ else
+ fun_l7_n210(x)
+ end
+end
+
+def fun_l6_n848(x)
+ if (x < 1)
+ fun_l7_n862(x)
+ else
+ fun_l7_n90(x)
+ end
+end
+
+def fun_l6_n849(x)
+ if (x < 1)
+ fun_l7_n837(x)
+ else
+ fun_l7_n37(x)
+ end
+end
+
+def fun_l6_n850(x)
+ if (x < 1)
+ fun_l7_n792(x)
+ else
+ fun_l7_n171(x)
+ end
+end
+
+def fun_l6_n851(x)
+ if (x < 1)
+ fun_l7_n869(x)
+ else
+ fun_l7_n217(x)
+ end
+end
+
+def fun_l6_n852(x)
+ if (x < 1)
+ fun_l7_n585(x)
+ else
+ fun_l7_n980(x)
+ end
+end
+
+def fun_l6_n853(x)
+ if (x < 1)
+ fun_l7_n752(x)
+ else
+ fun_l7_n214(x)
+ end
+end
+
+def fun_l6_n854(x)
+ if (x < 1)
+ fun_l7_n151(x)
+ else
+ fun_l7_n668(x)
+ end
+end
+
+def fun_l6_n855(x)
+ if (x < 1)
+ fun_l7_n145(x)
+ else
+ fun_l7_n99(x)
+ end
+end
+
+def fun_l6_n856(x)
+ if (x < 1)
+ fun_l7_n114(x)
+ else
+ fun_l7_n852(x)
+ end
+end
+
+def fun_l6_n857(x)
+ if (x < 1)
+ fun_l7_n571(x)
+ else
+ fun_l7_n6(x)
+ end
+end
+
+def fun_l6_n858(x)
+ if (x < 1)
+ fun_l7_n724(x)
+ else
+ fun_l7_n132(x)
+ end
+end
+
+def fun_l6_n859(x)
+ if (x < 1)
+ fun_l7_n146(x)
+ else
+ fun_l7_n627(x)
+ end
+end
+
+def fun_l6_n860(x)
+ if (x < 1)
+ fun_l7_n515(x)
+ else
+ fun_l7_n598(x)
+ end
+end
+
+def fun_l6_n861(x)
+ if (x < 1)
+ fun_l7_n49(x)
+ else
+ fun_l7_n781(x)
+ end
+end
+
+def fun_l6_n862(x)
+ if (x < 1)
+ fun_l7_n378(x)
+ else
+ fun_l7_n295(x)
+ end
+end
+
+def fun_l6_n863(x)
+ if (x < 1)
+ fun_l7_n122(x)
+ else
+ fun_l7_n738(x)
+ end
+end
+
+def fun_l6_n864(x)
+ if (x < 1)
+ fun_l7_n421(x)
+ else
+ fun_l7_n719(x)
+ end
+end
+
+def fun_l6_n865(x)
+ if (x < 1)
+ fun_l7_n965(x)
+ else
+ fun_l7_n963(x)
+ end
+end
+
+def fun_l6_n866(x)
+ if (x < 1)
+ fun_l7_n551(x)
+ else
+ fun_l7_n177(x)
+ end
+end
+
+def fun_l6_n867(x)
+ if (x < 1)
+ fun_l7_n136(x)
+ else
+ fun_l7_n289(x)
+ end
+end
+
+def fun_l6_n868(x)
+ if (x < 1)
+ fun_l7_n26(x)
+ else
+ fun_l7_n376(x)
+ end
+end
+
+def fun_l6_n869(x)
+ if (x < 1)
+ fun_l7_n888(x)
+ else
+ fun_l7_n948(x)
+ end
+end
+
+def fun_l6_n870(x)
+ if (x < 1)
+ fun_l7_n636(x)
+ else
+ fun_l7_n89(x)
+ end
+end
+
+def fun_l6_n871(x)
+ if (x < 1)
+ fun_l7_n953(x)
+ else
+ fun_l7_n634(x)
+ end
+end
+
+def fun_l6_n872(x)
+ if (x < 1)
+ fun_l7_n74(x)
+ else
+ fun_l7_n219(x)
+ end
+end
+
+def fun_l6_n873(x)
+ if (x < 1)
+ fun_l7_n317(x)
+ else
+ fun_l7_n863(x)
+ end
+end
+
+def fun_l6_n874(x)
+ if (x < 1)
+ fun_l7_n495(x)
+ else
+ fun_l7_n478(x)
+ end
+end
+
+def fun_l6_n875(x)
+ if (x < 1)
+ fun_l7_n908(x)
+ else
+ fun_l7_n634(x)
+ end
+end
+
+def fun_l6_n876(x)
+ if (x < 1)
+ fun_l7_n780(x)
+ else
+ fun_l7_n886(x)
+ end
+end
+
+def fun_l6_n877(x)
+ if (x < 1)
+ fun_l7_n768(x)
+ else
+ fun_l7_n820(x)
+ end
+end
+
+def fun_l6_n878(x)
+ if (x < 1)
+ fun_l7_n501(x)
+ else
+ fun_l7_n355(x)
+ end
+end
+
+def fun_l6_n879(x)
+ if (x < 1)
+ fun_l7_n412(x)
+ else
+ fun_l7_n701(x)
+ end
+end
+
+def fun_l6_n880(x)
+ if (x < 1)
+ fun_l7_n541(x)
+ else
+ fun_l7_n148(x)
+ end
+end
+
+def fun_l6_n881(x)
+ if (x < 1)
+ fun_l7_n460(x)
+ else
+ fun_l7_n579(x)
+ end
+end
+
+def fun_l6_n882(x)
+ if (x < 1)
+ fun_l7_n576(x)
+ else
+ fun_l7_n118(x)
+ end
+end
+
+def fun_l6_n883(x)
+ if (x < 1)
+ fun_l7_n218(x)
+ else
+ fun_l7_n197(x)
+ end
+end
+
+def fun_l6_n884(x)
+ if (x < 1)
+ fun_l7_n279(x)
+ else
+ fun_l7_n565(x)
+ end
+end
+
+def fun_l6_n885(x)
+ if (x < 1)
+ fun_l7_n934(x)
+ else
+ fun_l7_n46(x)
+ end
+end
+
+def fun_l6_n886(x)
+ if (x < 1)
+ fun_l7_n894(x)
+ else
+ fun_l7_n864(x)
+ end
+end
+
+def fun_l6_n887(x)
+ if (x < 1)
+ fun_l7_n45(x)
+ else
+ fun_l7_n151(x)
+ end
+end
+
+def fun_l6_n888(x)
+ if (x < 1)
+ fun_l7_n190(x)
+ else
+ fun_l7_n46(x)
+ end
+end
+
+def fun_l6_n889(x)
+ if (x < 1)
+ fun_l7_n56(x)
+ else
+ fun_l7_n451(x)
+ end
+end
+
+def fun_l6_n890(x)
+ if (x < 1)
+ fun_l7_n7(x)
+ else
+ fun_l7_n906(x)
+ end
+end
+
+def fun_l6_n891(x)
+ if (x < 1)
+ fun_l7_n507(x)
+ else
+ fun_l7_n121(x)
+ end
+end
+
+def fun_l6_n892(x)
+ if (x < 1)
+ fun_l7_n757(x)
+ else
+ fun_l7_n485(x)
+ end
+end
+
+def fun_l6_n893(x)
+ if (x < 1)
+ fun_l7_n242(x)
+ else
+ fun_l7_n366(x)
+ end
+end
+
+def fun_l6_n894(x)
+ if (x < 1)
+ fun_l7_n563(x)
+ else
+ fun_l7_n749(x)
+ end
+end
+
+def fun_l6_n895(x)
+ if (x < 1)
+ fun_l7_n976(x)
+ else
+ fun_l7_n907(x)
+ end
+end
+
+def fun_l6_n896(x)
+ if (x < 1)
+ fun_l7_n525(x)
+ else
+ fun_l7_n843(x)
+ end
+end
+
+def fun_l6_n897(x)
+ if (x < 1)
+ fun_l7_n255(x)
+ else
+ fun_l7_n133(x)
+ end
+end
+
+def fun_l6_n898(x)
+ if (x < 1)
+ fun_l7_n796(x)
+ else
+ fun_l7_n275(x)
+ end
+end
+
+def fun_l6_n899(x)
+ if (x < 1)
+ fun_l7_n985(x)
+ else
+ fun_l7_n485(x)
+ end
+end
+
+def fun_l6_n900(x)
+ if (x < 1)
+ fun_l7_n32(x)
+ else
+ fun_l7_n324(x)
+ end
+end
+
+def fun_l6_n901(x)
+ if (x < 1)
+ fun_l7_n334(x)
+ else
+ fun_l7_n618(x)
+ end
+end
+
+def fun_l6_n902(x)
+ if (x < 1)
+ fun_l7_n762(x)
+ else
+ fun_l7_n778(x)
+ end
+end
+
+def fun_l6_n903(x)
+ if (x < 1)
+ fun_l7_n343(x)
+ else
+ fun_l7_n349(x)
+ end
+end
+
+def fun_l6_n904(x)
+ if (x < 1)
+ fun_l7_n310(x)
+ else
+ fun_l7_n215(x)
+ end
+end
+
+def fun_l6_n905(x)
+ if (x < 1)
+ fun_l7_n162(x)
+ else
+ fun_l7_n405(x)
+ end
+end
+
+def fun_l6_n906(x)
+ if (x < 1)
+ fun_l7_n667(x)
+ else
+ fun_l7_n633(x)
+ end
+end
+
+def fun_l6_n907(x)
+ if (x < 1)
+ fun_l7_n652(x)
+ else
+ fun_l7_n771(x)
+ end
+end
+
+def fun_l6_n908(x)
+ if (x < 1)
+ fun_l7_n198(x)
+ else
+ fun_l7_n32(x)
+ end
+end
+
+def fun_l6_n909(x)
+ if (x < 1)
+ fun_l7_n577(x)
+ else
+ fun_l7_n116(x)
+ end
+end
+
+def fun_l6_n910(x)
+ if (x < 1)
+ fun_l7_n63(x)
+ else
+ fun_l7_n57(x)
+ end
+end
+
+def fun_l6_n911(x)
+ if (x < 1)
+ fun_l7_n908(x)
+ else
+ fun_l7_n556(x)
+ end
+end
+
+def fun_l6_n912(x)
+ if (x < 1)
+ fun_l7_n420(x)
+ else
+ fun_l7_n163(x)
+ end
+end
+
+def fun_l6_n913(x)
+ if (x < 1)
+ fun_l7_n795(x)
+ else
+ fun_l7_n225(x)
+ end
+end
+
+def fun_l6_n914(x)
+ if (x < 1)
+ fun_l7_n855(x)
+ else
+ fun_l7_n742(x)
+ end
+end
+
+def fun_l6_n915(x)
+ if (x < 1)
+ fun_l7_n386(x)
+ else
+ fun_l7_n314(x)
+ end
+end
+
+def fun_l6_n916(x)
+ if (x < 1)
+ fun_l7_n587(x)
+ else
+ fun_l7_n371(x)
+ end
+end
+
+def fun_l6_n917(x)
+ if (x < 1)
+ fun_l7_n570(x)
+ else
+ fun_l7_n735(x)
+ end
+end
+
+def fun_l6_n918(x)
+ if (x < 1)
+ fun_l7_n985(x)
+ else
+ fun_l7_n492(x)
+ end
+end
+
+def fun_l6_n919(x)
+ if (x < 1)
+ fun_l7_n991(x)
+ else
+ fun_l7_n454(x)
+ end
+end
+
+def fun_l6_n920(x)
+ if (x < 1)
+ fun_l7_n925(x)
+ else
+ fun_l7_n161(x)
+ end
+end
+
+def fun_l6_n921(x)
+ if (x < 1)
+ fun_l7_n398(x)
+ else
+ fun_l7_n621(x)
+ end
+end
+
+def fun_l6_n922(x)
+ if (x < 1)
+ fun_l7_n732(x)
+ else
+ fun_l7_n509(x)
+ end
+end
+
+def fun_l6_n923(x)
+ if (x < 1)
+ fun_l7_n879(x)
+ else
+ fun_l7_n219(x)
+ end
+end
+
+def fun_l6_n924(x)
+ if (x < 1)
+ fun_l7_n19(x)
+ else
+ fun_l7_n604(x)
+ end
+end
+
+def fun_l6_n925(x)
+ if (x < 1)
+ fun_l7_n474(x)
+ else
+ fun_l7_n439(x)
+ end
+end
+
+def fun_l6_n926(x)
+ if (x < 1)
+ fun_l7_n807(x)
+ else
+ fun_l7_n802(x)
+ end
+end
+
+def fun_l6_n927(x)
+ if (x < 1)
+ fun_l7_n146(x)
+ else
+ fun_l7_n966(x)
+ end
+end
+
+def fun_l6_n928(x)
+ if (x < 1)
+ fun_l7_n72(x)
+ else
+ fun_l7_n835(x)
+ end
+end
+
+def fun_l6_n929(x)
+ if (x < 1)
+ fun_l7_n389(x)
+ else
+ fun_l7_n951(x)
+ end
+end
+
+def fun_l6_n930(x)
+ if (x < 1)
+ fun_l7_n104(x)
+ else
+ fun_l7_n719(x)
+ end
+end
+
+def fun_l6_n931(x)
+ if (x < 1)
+ fun_l7_n250(x)
+ else
+ fun_l7_n13(x)
+ end
+end
+
+def fun_l6_n932(x)
+ if (x < 1)
+ fun_l7_n470(x)
+ else
+ fun_l7_n984(x)
+ end
+end
+
+def fun_l6_n933(x)
+ if (x < 1)
+ fun_l7_n485(x)
+ else
+ fun_l7_n750(x)
+ end
+end
+
+def fun_l6_n934(x)
+ if (x < 1)
+ fun_l7_n371(x)
+ else
+ fun_l7_n912(x)
+ end
+end
+
+def fun_l6_n935(x)
+ if (x < 1)
+ fun_l7_n686(x)
+ else
+ fun_l7_n523(x)
+ end
+end
+
+def fun_l6_n936(x)
+ if (x < 1)
+ fun_l7_n998(x)
+ else
+ fun_l7_n6(x)
+ end
+end
+
+def fun_l6_n937(x)
+ if (x < 1)
+ fun_l7_n753(x)
+ else
+ fun_l7_n781(x)
+ end
+end
+
+def fun_l6_n938(x)
+ if (x < 1)
+ fun_l7_n518(x)
+ else
+ fun_l7_n18(x)
+ end
+end
+
+def fun_l6_n939(x)
+ if (x < 1)
+ fun_l7_n771(x)
+ else
+ fun_l7_n1(x)
+ end
+end
+
+def fun_l6_n940(x)
+ if (x < 1)
+ fun_l7_n43(x)
+ else
+ fun_l7_n727(x)
+ end
+end
+
+def fun_l6_n941(x)
+ if (x < 1)
+ fun_l7_n282(x)
+ else
+ fun_l7_n676(x)
+ end
+end
+
+def fun_l6_n942(x)
+ if (x < 1)
+ fun_l7_n284(x)
+ else
+ fun_l7_n56(x)
+ end
+end
+
+def fun_l6_n943(x)
+ if (x < 1)
+ fun_l7_n304(x)
+ else
+ fun_l7_n287(x)
+ end
+end
+
+def fun_l6_n944(x)
+ if (x < 1)
+ fun_l7_n968(x)
+ else
+ fun_l7_n283(x)
+ end
+end
+
+def fun_l6_n945(x)
+ if (x < 1)
+ fun_l7_n892(x)
+ else
+ fun_l7_n413(x)
+ end
+end
+
+def fun_l6_n946(x)
+ if (x < 1)
+ fun_l7_n750(x)
+ else
+ fun_l7_n244(x)
+ end
+end
+
+def fun_l6_n947(x)
+ if (x < 1)
+ fun_l7_n599(x)
+ else
+ fun_l7_n238(x)
+ end
+end
+
+def fun_l6_n948(x)
+ if (x < 1)
+ fun_l7_n447(x)
+ else
+ fun_l7_n880(x)
+ end
+end
+
+def fun_l6_n949(x)
+ if (x < 1)
+ fun_l7_n242(x)
+ else
+ fun_l7_n210(x)
+ end
+end
+
+def fun_l6_n950(x)
+ if (x < 1)
+ fun_l7_n143(x)
+ else
+ fun_l7_n816(x)
+ end
+end
+
+def fun_l6_n951(x)
+ if (x < 1)
+ fun_l7_n125(x)
+ else
+ fun_l7_n909(x)
+ end
+end
+
+def fun_l6_n952(x)
+ if (x < 1)
+ fun_l7_n134(x)
+ else
+ fun_l7_n946(x)
+ end
+end
+
+def fun_l6_n953(x)
+ if (x < 1)
+ fun_l7_n858(x)
+ else
+ fun_l7_n927(x)
+ end
+end
+
+def fun_l6_n954(x)
+ if (x < 1)
+ fun_l7_n853(x)
+ else
+ fun_l7_n396(x)
+ end
+end
+
+def fun_l6_n955(x)
+ if (x < 1)
+ fun_l7_n725(x)
+ else
+ fun_l7_n42(x)
+ end
+end
+
+def fun_l6_n956(x)
+ if (x < 1)
+ fun_l7_n108(x)
+ else
+ fun_l7_n177(x)
+ end
+end
+
+def fun_l6_n957(x)
+ if (x < 1)
+ fun_l7_n742(x)
+ else
+ fun_l7_n482(x)
+ end
+end
+
+def fun_l6_n958(x)
+ if (x < 1)
+ fun_l7_n385(x)
+ else
+ fun_l7_n292(x)
+ end
+end
+
+def fun_l6_n959(x)
+ if (x < 1)
+ fun_l7_n325(x)
+ else
+ fun_l7_n27(x)
+ end
+end
+
+def fun_l6_n960(x)
+ if (x < 1)
+ fun_l7_n558(x)
+ else
+ fun_l7_n556(x)
+ end
+end
+
+def fun_l6_n961(x)
+ if (x < 1)
+ fun_l7_n472(x)
+ else
+ fun_l7_n322(x)
+ end
+end
+
+def fun_l6_n962(x)
+ if (x < 1)
+ fun_l7_n754(x)
+ else
+ fun_l7_n729(x)
+ end
+end
+
+def fun_l6_n963(x)
+ if (x < 1)
+ fun_l7_n35(x)
+ else
+ fun_l7_n232(x)
+ end
+end
+
+def fun_l6_n964(x)
+ if (x < 1)
+ fun_l7_n113(x)
+ else
+ fun_l7_n878(x)
+ end
+end
+
+def fun_l6_n965(x)
+ if (x < 1)
+ fun_l7_n982(x)
+ else
+ fun_l7_n404(x)
+ end
+end
+
+def fun_l6_n966(x)
+ if (x < 1)
+ fun_l7_n385(x)
+ else
+ fun_l7_n20(x)
+ end
+end
+
+def fun_l6_n967(x)
+ if (x < 1)
+ fun_l7_n394(x)
+ else
+ fun_l7_n873(x)
+ end
+end
+
+def fun_l6_n968(x)
+ if (x < 1)
+ fun_l7_n230(x)
+ else
+ fun_l7_n141(x)
+ end
+end
+
+def fun_l6_n969(x)
+ if (x < 1)
+ fun_l7_n742(x)
+ else
+ fun_l7_n75(x)
+ end
+end
+
+def fun_l6_n970(x)
+ if (x < 1)
+ fun_l7_n583(x)
+ else
+ fun_l7_n809(x)
+ end
+end
+
+def fun_l6_n971(x)
+ if (x < 1)
+ fun_l7_n535(x)
+ else
+ fun_l7_n151(x)
+ end
+end
+
+def fun_l6_n972(x)
+ if (x < 1)
+ fun_l7_n42(x)
+ else
+ fun_l7_n469(x)
+ end
+end
+
+def fun_l6_n973(x)
+ if (x < 1)
+ fun_l7_n964(x)
+ else
+ fun_l7_n759(x)
+ end
+end
+
+def fun_l6_n974(x)
+ if (x < 1)
+ fun_l7_n897(x)
+ else
+ fun_l7_n29(x)
+ end
+end
+
+def fun_l6_n975(x)
+ if (x < 1)
+ fun_l7_n331(x)
+ else
+ fun_l7_n972(x)
+ end
+end
+
+def fun_l6_n976(x)
+ if (x < 1)
+ fun_l7_n825(x)
+ else
+ fun_l7_n221(x)
+ end
+end
+
+def fun_l6_n977(x)
+ if (x < 1)
+ fun_l7_n207(x)
+ else
+ fun_l7_n520(x)
+ end
+end
+
+def fun_l6_n978(x)
+ if (x < 1)
+ fun_l7_n231(x)
+ else
+ fun_l7_n552(x)
+ end
+end
+
+def fun_l6_n979(x)
+ if (x < 1)
+ fun_l7_n621(x)
+ else
+ fun_l7_n766(x)
+ end
+end
+
+def fun_l6_n980(x)
+ if (x < 1)
+ fun_l7_n461(x)
+ else
+ fun_l7_n552(x)
+ end
+end
+
+def fun_l6_n981(x)
+ if (x < 1)
+ fun_l7_n891(x)
+ else
+ fun_l7_n710(x)
+ end
+end
+
+def fun_l6_n982(x)
+ if (x < 1)
+ fun_l7_n253(x)
+ else
+ fun_l7_n104(x)
+ end
+end
+
+def fun_l6_n983(x)
+ if (x < 1)
+ fun_l7_n726(x)
+ else
+ fun_l7_n903(x)
+ end
+end
+
+def fun_l6_n984(x)
+ if (x < 1)
+ fun_l7_n524(x)
+ else
+ fun_l7_n700(x)
+ end
+end
+
+def fun_l6_n985(x)
+ if (x < 1)
+ fun_l7_n234(x)
+ else
+ fun_l7_n454(x)
+ end
+end
+
+def fun_l6_n986(x)
+ if (x < 1)
+ fun_l7_n379(x)
+ else
+ fun_l7_n504(x)
+ end
+end
+
+def fun_l6_n987(x)
+ if (x < 1)
+ fun_l7_n194(x)
+ else
+ fun_l7_n962(x)
+ end
+end
+
+def fun_l6_n988(x)
+ if (x < 1)
+ fun_l7_n60(x)
+ else
+ fun_l7_n699(x)
+ end
+end
+
+def fun_l6_n989(x)
+ if (x < 1)
+ fun_l7_n692(x)
+ else
+ fun_l7_n28(x)
+ end
+end
+
+def fun_l6_n990(x)
+ if (x < 1)
+ fun_l7_n456(x)
+ else
+ fun_l7_n126(x)
+ end
+end
+
+def fun_l6_n991(x)
+ if (x < 1)
+ fun_l7_n104(x)
+ else
+ fun_l7_n156(x)
+ end
+end
+
+def fun_l6_n992(x)
+ if (x < 1)
+ fun_l7_n269(x)
+ else
+ fun_l7_n513(x)
+ end
+end
+
+def fun_l6_n993(x)
+ if (x < 1)
+ fun_l7_n20(x)
+ else
+ fun_l7_n754(x)
+ end
+end
+
+def fun_l6_n994(x)
+ if (x < 1)
+ fun_l7_n445(x)
+ else
+ fun_l7_n422(x)
+ end
+end
+
+def fun_l6_n995(x)
+ if (x < 1)
+ fun_l7_n320(x)
+ else
+ fun_l7_n398(x)
+ end
+end
+
+def fun_l6_n996(x)
+ if (x < 1)
+ fun_l7_n479(x)
+ else
+ fun_l7_n238(x)
+ end
+end
+
+def fun_l6_n997(x)
+ if (x < 1)
+ fun_l7_n254(x)
+ else
+ fun_l7_n692(x)
+ end
+end
+
+def fun_l6_n998(x)
+ if (x < 1)
+ fun_l7_n774(x)
+ else
+ fun_l7_n510(x)
+ end
+end
+
+def fun_l6_n999(x)
+ if (x < 1)
+ fun_l7_n158(x)
+ else
+ fun_l7_n929(x)
+ end
+end
+
+def fun_l7_n0(x)
+ if (x < 1)
+ fun_l8_n414(x)
+ else
+ fun_l8_n327(x)
+ end
+end
+
+def fun_l7_n1(x)
+ if (x < 1)
+ fun_l8_n446(x)
+ else
+ fun_l8_n611(x)
+ end
+end
+
+def fun_l7_n2(x)
+ if (x < 1)
+ fun_l8_n116(x)
+ else
+ fun_l8_n224(x)
+ end
+end
+
+def fun_l7_n3(x)
+ if (x < 1)
+ fun_l8_n809(x)
+ else
+ fun_l8_n962(x)
+ end
+end
+
+def fun_l7_n4(x)
+ if (x < 1)
+ fun_l8_n137(x)
+ else
+ fun_l8_n426(x)
+ end
+end
+
+def fun_l7_n5(x)
+ if (x < 1)
+ fun_l8_n686(x)
+ else
+ fun_l8_n600(x)
+ end
+end
+
+def fun_l7_n6(x)
+ if (x < 1)
+ fun_l8_n430(x)
+ else
+ fun_l8_n302(x)
+ end
+end
+
+def fun_l7_n7(x)
+ if (x < 1)
+ fun_l8_n865(x)
+ else
+ fun_l8_n60(x)
+ end
+end
+
+def fun_l7_n8(x)
+ if (x < 1)
+ fun_l8_n895(x)
+ else
+ fun_l8_n148(x)
+ end
+end
+
+def fun_l7_n9(x)
+ if (x < 1)
+ fun_l8_n740(x)
+ else
+ fun_l8_n982(x)
+ end
+end
+
+def fun_l7_n10(x)
+ if (x < 1)
+ fun_l8_n757(x)
+ else
+ fun_l8_n640(x)
+ end
+end
+
+def fun_l7_n11(x)
+ if (x < 1)
+ fun_l8_n744(x)
+ else
+ fun_l8_n256(x)
+ end
+end
+
+def fun_l7_n12(x)
+ if (x < 1)
+ fun_l8_n272(x)
+ else
+ fun_l8_n828(x)
+ end
+end
+
+def fun_l7_n13(x)
+ if (x < 1)
+ fun_l8_n395(x)
+ else
+ fun_l8_n932(x)
+ end
+end
+
+def fun_l7_n14(x)
+ if (x < 1)
+ fun_l8_n178(x)
+ else
+ fun_l8_n676(x)
+ end
+end
+
+def fun_l7_n15(x)
+ if (x < 1)
+ fun_l8_n40(x)
+ else
+ fun_l8_n548(x)
+ end
+end
+
+def fun_l7_n16(x)
+ if (x < 1)
+ fun_l8_n506(x)
+ else
+ fun_l8_n234(x)
+ end
+end
+
+def fun_l7_n17(x)
+ if (x < 1)
+ fun_l8_n239(x)
+ else
+ fun_l8_n56(x)
+ end
+end
+
+def fun_l7_n18(x)
+ if (x < 1)
+ fun_l8_n381(x)
+ else
+ fun_l8_n720(x)
+ end
+end
+
+def fun_l7_n19(x)
+ if (x < 1)
+ fun_l8_n781(x)
+ else
+ fun_l8_n605(x)
+ end
+end
+
+def fun_l7_n20(x)
+ if (x < 1)
+ fun_l8_n479(x)
+ else
+ fun_l8_n894(x)
+ end
+end
+
+def fun_l7_n21(x)
+ if (x < 1)
+ fun_l8_n437(x)
+ else
+ fun_l8_n123(x)
+ end
+end
+
+def fun_l7_n22(x)
+ if (x < 1)
+ fun_l8_n20(x)
+ else
+ fun_l8_n144(x)
+ end
+end
+
+def fun_l7_n23(x)
+ if (x < 1)
+ fun_l8_n684(x)
+ else
+ fun_l8_n866(x)
+ end
+end
+
+def fun_l7_n24(x)
+ if (x < 1)
+ fun_l8_n527(x)
+ else
+ fun_l8_n629(x)
+ end
+end
+
+def fun_l7_n25(x)
+ if (x < 1)
+ fun_l8_n399(x)
+ else
+ fun_l8_n52(x)
+ end
+end
+
+def fun_l7_n26(x)
+ if (x < 1)
+ fun_l8_n353(x)
+ else
+ fun_l8_n438(x)
+ end
+end
+
+def fun_l7_n27(x)
+ if (x < 1)
+ fun_l8_n916(x)
+ else
+ fun_l8_n488(x)
+ end
+end
+
+def fun_l7_n28(x)
+ if (x < 1)
+ fun_l8_n833(x)
+ else
+ fun_l8_n585(x)
+ end
+end
+
+def fun_l7_n29(x)
+ if (x < 1)
+ fun_l8_n38(x)
+ else
+ fun_l8_n785(x)
+ end
+end
+
+def fun_l7_n30(x)
+ if (x < 1)
+ fun_l8_n157(x)
+ else
+ fun_l8_n332(x)
+ end
+end
+
+def fun_l7_n31(x)
+ if (x < 1)
+ fun_l8_n467(x)
+ else
+ fun_l8_n442(x)
+ end
+end
+
+def fun_l7_n32(x)
+ if (x < 1)
+ fun_l8_n704(x)
+ else
+ fun_l8_n295(x)
+ end
+end
+
+def fun_l7_n33(x)
+ if (x < 1)
+ fun_l8_n829(x)
+ else
+ fun_l8_n307(x)
+ end
+end
+
+def fun_l7_n34(x)
+ if (x < 1)
+ fun_l8_n227(x)
+ else
+ fun_l8_n865(x)
+ end
+end
+
+def fun_l7_n35(x)
+ if (x < 1)
+ fun_l8_n930(x)
+ else
+ fun_l8_n129(x)
+ end
+end
+
+def fun_l7_n36(x)
+ if (x < 1)
+ fun_l8_n519(x)
+ else
+ fun_l8_n587(x)
+ end
+end
+
+def fun_l7_n37(x)
+ if (x < 1)
+ fun_l8_n132(x)
+ else
+ fun_l8_n547(x)
+ end
+end
+
+def fun_l7_n38(x)
+ if (x < 1)
+ fun_l8_n627(x)
+ else
+ fun_l8_n712(x)
+ end
+end
+
+def fun_l7_n39(x)
+ if (x < 1)
+ fun_l8_n752(x)
+ else
+ fun_l8_n357(x)
+ end
+end
+
+def fun_l7_n40(x)
+ if (x < 1)
+ fun_l8_n542(x)
+ else
+ fun_l8_n86(x)
+ end
+end
+
+def fun_l7_n41(x)
+ if (x < 1)
+ fun_l8_n89(x)
+ else
+ fun_l8_n492(x)
+ end
+end
+
+def fun_l7_n42(x)
+ if (x < 1)
+ fun_l8_n508(x)
+ else
+ fun_l8_n288(x)
+ end
+end
+
+def fun_l7_n43(x)
+ if (x < 1)
+ fun_l8_n627(x)
+ else
+ fun_l8_n632(x)
+ end
+end
+
+def fun_l7_n44(x)
+ if (x < 1)
+ fun_l8_n513(x)
+ else
+ fun_l8_n472(x)
+ end
+end
+
+def fun_l7_n45(x)
+ if (x < 1)
+ fun_l8_n599(x)
+ else
+ fun_l8_n581(x)
+ end
+end
+
+def fun_l7_n46(x)
+ if (x < 1)
+ fun_l8_n907(x)
+ else
+ fun_l8_n71(x)
+ end
+end
+
+def fun_l7_n47(x)
+ if (x < 1)
+ fun_l8_n609(x)
+ else
+ fun_l8_n601(x)
+ end
+end
+
+def fun_l7_n48(x)
+ if (x < 1)
+ fun_l8_n985(x)
+ else
+ fun_l8_n536(x)
+ end
+end
+
+def fun_l7_n49(x)
+ if (x < 1)
+ fun_l8_n220(x)
+ else
+ fun_l8_n6(x)
+ end
+end
+
+def fun_l7_n50(x)
+ if (x < 1)
+ fun_l8_n445(x)
+ else
+ fun_l8_n939(x)
+ end
+end
+
+def fun_l7_n51(x)
+ if (x < 1)
+ fun_l8_n973(x)
+ else
+ fun_l8_n600(x)
+ end
+end
+
+def fun_l7_n52(x)
+ if (x < 1)
+ fun_l8_n377(x)
+ else
+ fun_l8_n70(x)
+ end
+end
+
+def fun_l7_n53(x)
+ if (x < 1)
+ fun_l8_n745(x)
+ else
+ fun_l8_n237(x)
+ end
+end
+
+def fun_l7_n54(x)
+ if (x < 1)
+ fun_l8_n782(x)
+ else
+ fun_l8_n756(x)
+ end
+end
+
+def fun_l7_n55(x)
+ if (x < 1)
+ fun_l8_n438(x)
+ else
+ fun_l8_n892(x)
+ end
+end
+
+def fun_l7_n56(x)
+ if (x < 1)
+ fun_l8_n564(x)
+ else
+ fun_l8_n600(x)
+ end
+end
+
+def fun_l7_n57(x)
+ if (x < 1)
+ fun_l8_n480(x)
+ else
+ fun_l8_n832(x)
+ end
+end
+
+def fun_l7_n58(x)
+ if (x < 1)
+ fun_l8_n239(x)
+ else
+ fun_l8_n540(x)
+ end
+end
+
+def fun_l7_n59(x)
+ if (x < 1)
+ fun_l8_n904(x)
+ else
+ fun_l8_n334(x)
+ end
+end
+
+def fun_l7_n60(x)
+ if (x < 1)
+ fun_l8_n407(x)
+ else
+ fun_l8_n573(x)
+ end
+end
+
+def fun_l7_n61(x)
+ if (x < 1)
+ fun_l8_n705(x)
+ else
+ fun_l8_n202(x)
+ end
+end
+
+def fun_l7_n62(x)
+ if (x < 1)
+ fun_l8_n715(x)
+ else
+ fun_l8_n394(x)
+ end
+end
+
+def fun_l7_n63(x)
+ if (x < 1)
+ fun_l8_n935(x)
+ else
+ fun_l8_n855(x)
+ end
+end
+
+def fun_l7_n64(x)
+ if (x < 1)
+ fun_l8_n525(x)
+ else
+ fun_l8_n81(x)
+ end
+end
+
+def fun_l7_n65(x)
+ if (x < 1)
+ fun_l8_n692(x)
+ else
+ fun_l8_n372(x)
+ end
+end
+
+def fun_l7_n66(x)
+ if (x < 1)
+ fun_l8_n286(x)
+ else
+ fun_l8_n568(x)
+ end
+end
+
+def fun_l7_n67(x)
+ if (x < 1)
+ fun_l8_n829(x)
+ else
+ fun_l8_n89(x)
+ end
+end
+
+def fun_l7_n68(x)
+ if (x < 1)
+ fun_l8_n542(x)
+ else
+ fun_l8_n362(x)
+ end
+end
+
+def fun_l7_n69(x)
+ if (x < 1)
+ fun_l8_n673(x)
+ else
+ fun_l8_n302(x)
+ end
+end
+
+def fun_l7_n70(x)
+ if (x < 1)
+ fun_l8_n649(x)
+ else
+ fun_l8_n890(x)
+ end
+end
+
+def fun_l7_n71(x)
+ if (x < 1)
+ fun_l8_n639(x)
+ else
+ fun_l8_n304(x)
+ end
+end
+
+def fun_l7_n72(x)
+ if (x < 1)
+ fun_l8_n797(x)
+ else
+ fun_l8_n132(x)
+ end
+end
+
+def fun_l7_n73(x)
+ if (x < 1)
+ fun_l8_n301(x)
+ else
+ fun_l8_n328(x)
+ end
+end
+
+def fun_l7_n74(x)
+ if (x < 1)
+ fun_l8_n438(x)
+ else
+ fun_l8_n979(x)
+ end
+end
+
+def fun_l7_n75(x)
+ if (x < 1)
+ fun_l8_n679(x)
+ else
+ fun_l8_n621(x)
+ end
+end
+
+def fun_l7_n76(x)
+ if (x < 1)
+ fun_l8_n136(x)
+ else
+ fun_l8_n916(x)
+ end
+end
+
+def fun_l7_n77(x)
+ if (x < 1)
+ fun_l8_n39(x)
+ else
+ fun_l8_n945(x)
+ end
+end
+
+def fun_l7_n78(x)
+ if (x < 1)
+ fun_l8_n365(x)
+ else
+ fun_l8_n883(x)
+ end
+end
+
+def fun_l7_n79(x)
+ if (x < 1)
+ fun_l8_n514(x)
+ else
+ fun_l8_n989(x)
+ end
+end
+
+def fun_l7_n80(x)
+ if (x < 1)
+ fun_l8_n378(x)
+ else
+ fun_l8_n634(x)
+ end
+end
+
+def fun_l7_n81(x)
+ if (x < 1)
+ fun_l8_n200(x)
+ else
+ fun_l8_n73(x)
+ end
+end
+
+def fun_l7_n82(x)
+ if (x < 1)
+ fun_l8_n521(x)
+ else
+ fun_l8_n848(x)
+ end
+end
+
+def fun_l7_n83(x)
+ if (x < 1)
+ fun_l8_n184(x)
+ else
+ fun_l8_n350(x)
+ end
+end
+
+def fun_l7_n84(x)
+ if (x < 1)
+ fun_l8_n215(x)
+ else
+ fun_l8_n615(x)
+ end
+end
+
+def fun_l7_n85(x)
+ if (x < 1)
+ fun_l8_n556(x)
+ else
+ fun_l8_n723(x)
+ end
+end
+
+def fun_l7_n86(x)
+ if (x < 1)
+ fun_l8_n565(x)
+ else
+ fun_l8_n661(x)
+ end
+end
+
+def fun_l7_n87(x)
+ if (x < 1)
+ fun_l8_n22(x)
+ else
+ fun_l8_n623(x)
+ end
+end
+
+def fun_l7_n88(x)
+ if (x < 1)
+ fun_l8_n995(x)
+ else
+ fun_l8_n30(x)
+ end
+end
+
+def fun_l7_n89(x)
+ if (x < 1)
+ fun_l8_n912(x)
+ else
+ fun_l8_n332(x)
+ end
+end
+
+def fun_l7_n90(x)
+ if (x < 1)
+ fun_l8_n776(x)
+ else
+ fun_l8_n362(x)
+ end
+end
+
+def fun_l7_n91(x)
+ if (x < 1)
+ fun_l8_n720(x)
+ else
+ fun_l8_n512(x)
+ end
+end
+
+def fun_l7_n92(x)
+ if (x < 1)
+ fun_l8_n437(x)
+ else
+ fun_l8_n107(x)
+ end
+end
+
+def fun_l7_n93(x)
+ if (x < 1)
+ fun_l8_n143(x)
+ else
+ fun_l8_n493(x)
+ end
+end
+
+def fun_l7_n94(x)
+ if (x < 1)
+ fun_l8_n814(x)
+ else
+ fun_l8_n892(x)
+ end
+end
+
+def fun_l7_n95(x)
+ if (x < 1)
+ fun_l8_n117(x)
+ else
+ fun_l8_n18(x)
+ end
+end
+
+def fun_l7_n96(x)
+ if (x < 1)
+ fun_l8_n769(x)
+ else
+ fun_l8_n37(x)
+ end
+end
+
+def fun_l7_n97(x)
+ if (x < 1)
+ fun_l8_n213(x)
+ else
+ fun_l8_n5(x)
+ end
+end
+
+def fun_l7_n98(x)
+ if (x < 1)
+ fun_l8_n608(x)
+ else
+ fun_l8_n551(x)
+ end
+end
+
+def fun_l7_n99(x)
+ if (x < 1)
+ fun_l8_n130(x)
+ else
+ fun_l8_n879(x)
+ end
+end
+
+def fun_l7_n100(x)
+ if (x < 1)
+ fun_l8_n279(x)
+ else
+ fun_l8_n786(x)
+ end
+end
+
+def fun_l7_n101(x)
+ if (x < 1)
+ fun_l8_n254(x)
+ else
+ fun_l8_n904(x)
+ end
+end
+
+def fun_l7_n102(x)
+ if (x < 1)
+ fun_l8_n661(x)
+ else
+ fun_l8_n873(x)
+ end
+end
+
+def fun_l7_n103(x)
+ if (x < 1)
+ fun_l8_n360(x)
+ else
+ fun_l8_n793(x)
+ end
+end
+
+def fun_l7_n104(x)
+ if (x < 1)
+ fun_l8_n687(x)
+ else
+ fun_l8_n853(x)
+ end
+end
+
+def fun_l7_n105(x)
+ if (x < 1)
+ fun_l8_n168(x)
+ else
+ fun_l8_n280(x)
+ end
+end
+
+def fun_l7_n106(x)
+ if (x < 1)
+ fun_l8_n742(x)
+ else
+ fun_l8_n222(x)
+ end
+end
+
+def fun_l7_n107(x)
+ if (x < 1)
+ fun_l8_n470(x)
+ else
+ fun_l8_n633(x)
+ end
+end
+
+def fun_l7_n108(x)
+ if (x < 1)
+ fun_l8_n495(x)
+ else
+ fun_l8_n253(x)
+ end
+end
+
+def fun_l7_n109(x)
+ if (x < 1)
+ fun_l8_n369(x)
+ else
+ fun_l8_n108(x)
+ end
+end
+
+def fun_l7_n110(x)
+ if (x < 1)
+ fun_l8_n254(x)
+ else
+ fun_l8_n162(x)
+ end
+end
+
+def fun_l7_n111(x)
+ if (x < 1)
+ fun_l8_n835(x)
+ else
+ fun_l8_n295(x)
+ end
+end
+
+def fun_l7_n112(x)
+ if (x < 1)
+ fun_l8_n349(x)
+ else
+ fun_l8_n432(x)
+ end
+end
+
+def fun_l7_n113(x)
+ if (x < 1)
+ fun_l8_n237(x)
+ else
+ fun_l8_n484(x)
+ end
+end
+
+def fun_l7_n114(x)
+ if (x < 1)
+ fun_l8_n755(x)
+ else
+ fun_l8_n819(x)
+ end
+end
+
+def fun_l7_n115(x)
+ if (x < 1)
+ fun_l8_n542(x)
+ else
+ fun_l8_n587(x)
+ end
+end
+
+def fun_l7_n116(x)
+ if (x < 1)
+ fun_l8_n837(x)
+ else
+ fun_l8_n274(x)
+ end
+end
+
+def fun_l7_n117(x)
+ if (x < 1)
+ fun_l8_n742(x)
+ else
+ fun_l8_n104(x)
+ end
+end
+
+def fun_l7_n118(x)
+ if (x < 1)
+ fun_l8_n201(x)
+ else
+ fun_l8_n340(x)
+ end
+end
+
+def fun_l7_n119(x)
+ if (x < 1)
+ fun_l8_n349(x)
+ else
+ fun_l8_n213(x)
+ end
+end
+
+def fun_l7_n120(x)
+ if (x < 1)
+ fun_l8_n563(x)
+ else
+ fun_l8_n193(x)
+ end
+end
+
+def fun_l7_n121(x)
+ if (x < 1)
+ fun_l8_n738(x)
+ else
+ fun_l8_n600(x)
+ end
+end
+
+def fun_l7_n122(x)
+ if (x < 1)
+ fun_l8_n261(x)
+ else
+ fun_l8_n500(x)
+ end
+end
+
+def fun_l7_n123(x)
+ if (x < 1)
+ fun_l8_n870(x)
+ else
+ fun_l8_n423(x)
+ end
+end
+
+def fun_l7_n124(x)
+ if (x < 1)
+ fun_l8_n405(x)
+ else
+ fun_l8_n749(x)
+ end
+end
+
+def fun_l7_n125(x)
+ if (x < 1)
+ fun_l8_n848(x)
+ else
+ fun_l8_n106(x)
+ end
+end
+
+def fun_l7_n126(x)
+ if (x < 1)
+ fun_l8_n382(x)
+ else
+ fun_l8_n379(x)
+ end
+end
+
+def fun_l7_n127(x)
+ if (x < 1)
+ fun_l8_n232(x)
+ else
+ fun_l8_n913(x)
+ end
+end
+
+def fun_l7_n128(x)
+ if (x < 1)
+ fun_l8_n7(x)
+ else
+ fun_l8_n177(x)
+ end
+end
+
+def fun_l7_n129(x)
+ if (x < 1)
+ fun_l8_n86(x)
+ else
+ fun_l8_n670(x)
+ end
+end
+
+def fun_l7_n130(x)
+ if (x < 1)
+ fun_l8_n361(x)
+ else
+ fun_l8_n132(x)
+ end
+end
+
+def fun_l7_n131(x)
+ if (x < 1)
+ fun_l8_n125(x)
+ else
+ fun_l8_n925(x)
+ end
+end
+
+def fun_l7_n132(x)
+ if (x < 1)
+ fun_l8_n529(x)
+ else
+ fun_l8_n996(x)
+ end
+end
+
+def fun_l7_n133(x)
+ if (x < 1)
+ fun_l8_n283(x)
+ else
+ fun_l8_n112(x)
+ end
+end
+
+def fun_l7_n134(x)
+ if (x < 1)
+ fun_l8_n974(x)
+ else
+ fun_l8_n204(x)
+ end
+end
+
+def fun_l7_n135(x)
+ if (x < 1)
+ fun_l8_n903(x)
+ else
+ fun_l8_n196(x)
+ end
+end
+
+def fun_l7_n136(x)
+ if (x < 1)
+ fun_l8_n59(x)
+ else
+ fun_l8_n505(x)
+ end
+end
+
+def fun_l7_n137(x)
+ if (x < 1)
+ fun_l8_n530(x)
+ else
+ fun_l8_n31(x)
+ end
+end
+
+def fun_l7_n138(x)
+ if (x < 1)
+ fun_l8_n990(x)
+ else
+ fun_l8_n924(x)
+ end
+end
+
+def fun_l7_n139(x)
+ if (x < 1)
+ fun_l8_n202(x)
+ else
+ fun_l8_n980(x)
+ end
+end
+
+def fun_l7_n140(x)
+ if (x < 1)
+ fun_l8_n354(x)
+ else
+ fun_l8_n694(x)
+ end
+end
+
+def fun_l7_n141(x)
+ if (x < 1)
+ fun_l8_n306(x)
+ else
+ fun_l8_n307(x)
+ end
+end
+
+def fun_l7_n142(x)
+ if (x < 1)
+ fun_l8_n433(x)
+ else
+ fun_l8_n902(x)
+ end
+end
+
+def fun_l7_n143(x)
+ if (x < 1)
+ fun_l8_n522(x)
+ else
+ fun_l8_n904(x)
+ end
+end
+
+def fun_l7_n144(x)
+ if (x < 1)
+ fun_l8_n86(x)
+ else
+ fun_l8_n11(x)
+ end
+end
+
+def fun_l7_n145(x)
+ if (x < 1)
+ fun_l8_n147(x)
+ else
+ fun_l8_n21(x)
+ end
+end
+
+def fun_l7_n146(x)
+ if (x < 1)
+ fun_l8_n47(x)
+ else
+ fun_l8_n855(x)
+ end
+end
+
+def fun_l7_n147(x)
+ if (x < 1)
+ fun_l8_n306(x)
+ else
+ fun_l8_n309(x)
+ end
+end
+
+def fun_l7_n148(x)
+ if (x < 1)
+ fun_l8_n757(x)
+ else
+ fun_l8_n83(x)
+ end
+end
+
+def fun_l7_n149(x)
+ if (x < 1)
+ fun_l8_n377(x)
+ else
+ fun_l8_n124(x)
+ end
+end
+
+def fun_l7_n150(x)
+ if (x < 1)
+ fun_l8_n276(x)
+ else
+ fun_l8_n838(x)
+ end
+end
+
+def fun_l7_n151(x)
+ if (x < 1)
+ fun_l8_n148(x)
+ else
+ fun_l8_n653(x)
+ end
+end
+
+def fun_l7_n152(x)
+ if (x < 1)
+ fun_l8_n315(x)
+ else
+ fun_l8_n942(x)
+ end
+end
+
+def fun_l7_n153(x)
+ if (x < 1)
+ fun_l8_n794(x)
+ else
+ fun_l8_n680(x)
+ end
+end
+
+def fun_l7_n154(x)
+ if (x < 1)
+ fun_l8_n508(x)
+ else
+ fun_l8_n427(x)
+ end
+end
+
+def fun_l7_n155(x)
+ if (x < 1)
+ fun_l8_n249(x)
+ else
+ fun_l8_n615(x)
+ end
+end
+
+def fun_l7_n156(x)
+ if (x < 1)
+ fun_l8_n339(x)
+ else
+ fun_l8_n559(x)
+ end
+end
+
+def fun_l7_n157(x)
+ if (x < 1)
+ fun_l8_n772(x)
+ else
+ fun_l8_n128(x)
+ end
+end
+
+def fun_l7_n158(x)
+ if (x < 1)
+ fun_l8_n247(x)
+ else
+ fun_l8_n962(x)
+ end
+end
+
+def fun_l7_n159(x)
+ if (x < 1)
+ fun_l8_n648(x)
+ else
+ fun_l8_n338(x)
+ end
+end
+
+def fun_l7_n160(x)
+ if (x < 1)
+ fun_l8_n104(x)
+ else
+ fun_l8_n757(x)
+ end
+end
+
+def fun_l7_n161(x)
+ if (x < 1)
+ fun_l8_n74(x)
+ else
+ fun_l8_n288(x)
+ end
+end
+
+def fun_l7_n162(x)
+ if (x < 1)
+ fun_l8_n849(x)
+ else
+ fun_l8_n982(x)
+ end
+end
+
+def fun_l7_n163(x)
+ if (x < 1)
+ fun_l8_n433(x)
+ else
+ fun_l8_n442(x)
+ end
+end
+
+def fun_l7_n164(x)
+ if (x < 1)
+ fun_l8_n268(x)
+ else
+ fun_l8_n717(x)
+ end
+end
+
+def fun_l7_n165(x)
+ if (x < 1)
+ fun_l8_n185(x)
+ else
+ fun_l8_n628(x)
+ end
+end
+
+def fun_l7_n166(x)
+ if (x < 1)
+ fun_l8_n207(x)
+ else
+ fun_l8_n830(x)
+ end
+end
+
+def fun_l7_n167(x)
+ if (x < 1)
+ fun_l8_n334(x)
+ else
+ fun_l8_n20(x)
+ end
+end
+
+def fun_l7_n168(x)
+ if (x < 1)
+ fun_l8_n835(x)
+ else
+ fun_l8_n493(x)
+ end
+end
+
+def fun_l7_n169(x)
+ if (x < 1)
+ fun_l8_n559(x)
+ else
+ fun_l8_n561(x)
+ end
+end
+
+def fun_l7_n170(x)
+ if (x < 1)
+ fun_l8_n942(x)
+ else
+ fun_l8_n699(x)
+ end
+end
+
+def fun_l7_n171(x)
+ if (x < 1)
+ fun_l8_n833(x)
+ else
+ fun_l8_n928(x)
+ end
+end
+
+def fun_l7_n172(x)
+ if (x < 1)
+ fun_l8_n564(x)
+ else
+ fun_l8_n972(x)
+ end
+end
+
+def fun_l7_n173(x)
+ if (x < 1)
+ fun_l8_n509(x)
+ else
+ fun_l8_n125(x)
+ end
+end
+
+def fun_l7_n174(x)
+ if (x < 1)
+ fun_l8_n643(x)
+ else
+ fun_l8_n813(x)
+ end
+end
+
+def fun_l7_n175(x)
+ if (x < 1)
+ fun_l8_n763(x)
+ else
+ fun_l8_n22(x)
+ end
+end
+
+def fun_l7_n176(x)
+ if (x < 1)
+ fun_l8_n955(x)
+ else
+ fun_l8_n579(x)
+ end
+end
+
+def fun_l7_n177(x)
+ if (x < 1)
+ fun_l8_n577(x)
+ else
+ fun_l8_n675(x)
+ end
+end
+
+def fun_l7_n178(x)
+ if (x < 1)
+ fun_l8_n867(x)
+ else
+ fun_l8_n119(x)
+ end
+end
+
+def fun_l7_n179(x)
+ if (x < 1)
+ fun_l8_n357(x)
+ else
+ fun_l8_n543(x)
+ end
+end
+
+def fun_l7_n180(x)
+ if (x < 1)
+ fun_l8_n67(x)
+ else
+ fun_l8_n643(x)
+ end
+end
+
+def fun_l7_n181(x)
+ if (x < 1)
+ fun_l8_n377(x)
+ else
+ fun_l8_n931(x)
+ end
+end
+
+def fun_l7_n182(x)
+ if (x < 1)
+ fun_l8_n962(x)
+ else
+ fun_l8_n220(x)
+ end
+end
+
+def fun_l7_n183(x)
+ if (x < 1)
+ fun_l8_n568(x)
+ else
+ fun_l8_n702(x)
+ end
+end
+
+def fun_l7_n184(x)
+ if (x < 1)
+ fun_l8_n877(x)
+ else
+ fun_l8_n376(x)
+ end
+end
+
+def fun_l7_n185(x)
+ if (x < 1)
+ fun_l8_n171(x)
+ else
+ fun_l8_n981(x)
+ end
+end
+
+def fun_l7_n186(x)
+ if (x < 1)
+ fun_l8_n283(x)
+ else
+ fun_l8_n81(x)
+ end
+end
+
+def fun_l7_n187(x)
+ if (x < 1)
+ fun_l8_n318(x)
+ else
+ fun_l8_n7(x)
+ end
+end
+
+def fun_l7_n188(x)
+ if (x < 1)
+ fun_l8_n874(x)
+ else
+ fun_l8_n879(x)
+ end
+end
+
+def fun_l7_n189(x)
+ if (x < 1)
+ fun_l8_n944(x)
+ else
+ fun_l8_n881(x)
+ end
+end
+
+def fun_l7_n190(x)
+ if (x < 1)
+ fun_l8_n462(x)
+ else
+ fun_l8_n570(x)
+ end
+end
+
+def fun_l7_n191(x)
+ if (x < 1)
+ fun_l8_n815(x)
+ else
+ fun_l8_n957(x)
+ end
+end
+
+def fun_l7_n192(x)
+ if (x < 1)
+ fun_l8_n217(x)
+ else
+ fun_l8_n93(x)
+ end
+end
+
+def fun_l7_n193(x)
+ if (x < 1)
+ fun_l8_n708(x)
+ else
+ fun_l8_n323(x)
+ end
+end
+
+def fun_l7_n194(x)
+ if (x < 1)
+ fun_l8_n420(x)
+ else
+ fun_l8_n375(x)
+ end
+end
+
+def fun_l7_n195(x)
+ if (x < 1)
+ fun_l8_n307(x)
+ else
+ fun_l8_n427(x)
+ end
+end
+
+def fun_l7_n196(x)
+ if (x < 1)
+ fun_l8_n200(x)
+ else
+ fun_l8_n265(x)
+ end
+end
+
+def fun_l7_n197(x)
+ if (x < 1)
+ fun_l8_n547(x)
+ else
+ fun_l8_n687(x)
+ end
+end
+
+def fun_l7_n198(x)
+ if (x < 1)
+ fun_l8_n693(x)
+ else
+ fun_l8_n420(x)
+ end
+end
+
+def fun_l7_n199(x)
+ if (x < 1)
+ fun_l8_n297(x)
+ else
+ fun_l8_n702(x)
+ end
+end
+
+def fun_l7_n200(x)
+ if (x < 1)
+ fun_l8_n418(x)
+ else
+ fun_l8_n758(x)
+ end
+end
+
+def fun_l7_n201(x)
+ if (x < 1)
+ fun_l8_n204(x)
+ else
+ fun_l8_n572(x)
+ end
+end
+
+def fun_l7_n202(x)
+ if (x < 1)
+ fun_l8_n847(x)
+ else
+ fun_l8_n440(x)
+ end
+end
+
+def fun_l7_n203(x)
+ if (x < 1)
+ fun_l8_n692(x)
+ else
+ fun_l8_n595(x)
+ end
+end
+
+def fun_l7_n204(x)
+ if (x < 1)
+ fun_l8_n922(x)
+ else
+ fun_l8_n618(x)
+ end
+end
+
+def fun_l7_n205(x)
+ if (x < 1)
+ fun_l8_n431(x)
+ else
+ fun_l8_n135(x)
+ end
+end
+
+def fun_l7_n206(x)
+ if (x < 1)
+ fun_l8_n92(x)
+ else
+ fun_l8_n370(x)
+ end
+end
+
+def fun_l7_n207(x)
+ if (x < 1)
+ fun_l8_n141(x)
+ else
+ fun_l8_n845(x)
+ end
+end
+
+def fun_l7_n208(x)
+ if (x < 1)
+ fun_l8_n552(x)
+ else
+ fun_l8_n917(x)
+ end
+end
+
+def fun_l7_n209(x)
+ if (x < 1)
+ fun_l8_n341(x)
+ else
+ fun_l8_n794(x)
+ end
+end
+
+def fun_l7_n210(x)
+ if (x < 1)
+ fun_l8_n772(x)
+ else
+ fun_l8_n515(x)
+ end
+end
+
+def fun_l7_n211(x)
+ if (x < 1)
+ fun_l8_n37(x)
+ else
+ fun_l8_n635(x)
+ end
+end
+
+def fun_l7_n212(x)
+ if (x < 1)
+ fun_l8_n164(x)
+ else
+ fun_l8_n506(x)
+ end
+end
+
+def fun_l7_n213(x)
+ if (x < 1)
+ fun_l8_n621(x)
+ else
+ fun_l8_n722(x)
+ end
+end
+
+def fun_l7_n214(x)
+ if (x < 1)
+ fun_l8_n475(x)
+ else
+ fun_l8_n854(x)
+ end
+end
+
+def fun_l7_n215(x)
+ if (x < 1)
+ fun_l8_n275(x)
+ else
+ fun_l8_n884(x)
+ end
+end
+
+def fun_l7_n216(x)
+ if (x < 1)
+ fun_l8_n894(x)
+ else
+ fun_l8_n424(x)
+ end
+end
+
+def fun_l7_n217(x)
+ if (x < 1)
+ fun_l8_n32(x)
+ else
+ fun_l8_n698(x)
+ end
+end
+
+def fun_l7_n218(x)
+ if (x < 1)
+ fun_l8_n707(x)
+ else
+ fun_l8_n728(x)
+ end
+end
+
+def fun_l7_n219(x)
+ if (x < 1)
+ fun_l8_n294(x)
+ else
+ fun_l8_n583(x)
+ end
+end
+
+def fun_l7_n220(x)
+ if (x < 1)
+ fun_l8_n577(x)
+ else
+ fun_l8_n881(x)
+ end
+end
+
+def fun_l7_n221(x)
+ if (x < 1)
+ fun_l8_n925(x)
+ else
+ fun_l8_n177(x)
+ end
+end
+
+def fun_l7_n222(x)
+ if (x < 1)
+ fun_l8_n495(x)
+ else
+ fun_l8_n407(x)
+ end
+end
+
+def fun_l7_n223(x)
+ if (x < 1)
+ fun_l8_n11(x)
+ else
+ fun_l8_n753(x)
+ end
+end
+
+def fun_l7_n224(x)
+ if (x < 1)
+ fun_l8_n366(x)
+ else
+ fun_l8_n546(x)
+ end
+end
+
+def fun_l7_n225(x)
+ if (x < 1)
+ fun_l8_n644(x)
+ else
+ fun_l8_n728(x)
+ end
+end
+
+def fun_l7_n226(x)
+ if (x < 1)
+ fun_l8_n731(x)
+ else
+ fun_l8_n292(x)
+ end
+end
+
+def fun_l7_n227(x)
+ if (x < 1)
+ fun_l8_n653(x)
+ else
+ fun_l8_n521(x)
+ end
+end
+
+def fun_l7_n228(x)
+ if (x < 1)
+ fun_l8_n479(x)
+ else
+ fun_l8_n329(x)
+ end
+end
+
+def fun_l7_n229(x)
+ if (x < 1)
+ fun_l8_n151(x)
+ else
+ fun_l8_n620(x)
+ end
+end
+
+def fun_l7_n230(x)
+ if (x < 1)
+ fun_l8_n58(x)
+ else
+ fun_l8_n369(x)
+ end
+end
+
+def fun_l7_n231(x)
+ if (x < 1)
+ fun_l8_n301(x)
+ else
+ fun_l8_n869(x)
+ end
+end
+
+def fun_l7_n232(x)
+ if (x < 1)
+ fun_l8_n810(x)
+ else
+ fun_l8_n376(x)
+ end
+end
+
+def fun_l7_n233(x)
+ if (x < 1)
+ fun_l8_n19(x)
+ else
+ fun_l8_n278(x)
+ end
+end
+
+def fun_l7_n234(x)
+ if (x < 1)
+ fun_l8_n509(x)
+ else
+ fun_l8_n826(x)
+ end
+end
+
+def fun_l7_n235(x)
+ if (x < 1)
+ fun_l8_n302(x)
+ else
+ fun_l8_n62(x)
+ end
+end
+
+def fun_l7_n236(x)
+ if (x < 1)
+ fun_l8_n289(x)
+ else
+ fun_l8_n935(x)
+ end
+end
+
+def fun_l7_n237(x)
+ if (x < 1)
+ fun_l8_n217(x)
+ else
+ fun_l8_n652(x)
+ end
+end
+
+def fun_l7_n238(x)
+ if (x < 1)
+ fun_l8_n234(x)
+ else
+ fun_l8_n720(x)
+ end
+end
+
+def fun_l7_n239(x)
+ if (x < 1)
+ fun_l8_n158(x)
+ else
+ fun_l8_n409(x)
+ end
+end
+
+def fun_l7_n240(x)
+ if (x < 1)
+ fun_l8_n478(x)
+ else
+ fun_l8_n855(x)
+ end
+end
+
+def fun_l7_n241(x)
+ if (x < 1)
+ fun_l8_n115(x)
+ else
+ fun_l8_n406(x)
+ end
+end
+
+def fun_l7_n242(x)
+ if (x < 1)
+ fun_l8_n278(x)
+ else
+ fun_l8_n12(x)
+ end
+end
+
+def fun_l7_n243(x)
+ if (x < 1)
+ fun_l8_n273(x)
+ else
+ fun_l8_n243(x)
+ end
+end
+
+def fun_l7_n244(x)
+ if (x < 1)
+ fun_l8_n909(x)
+ else
+ fun_l8_n721(x)
+ end
+end
+
+def fun_l7_n245(x)
+ if (x < 1)
+ fun_l8_n415(x)
+ else
+ fun_l8_n530(x)
+ end
+end
+
+def fun_l7_n246(x)
+ if (x < 1)
+ fun_l8_n770(x)
+ else
+ fun_l8_n413(x)
+ end
+end
+
+def fun_l7_n247(x)
+ if (x < 1)
+ fun_l8_n228(x)
+ else
+ fun_l8_n668(x)
+ end
+end
+
+def fun_l7_n248(x)
+ if (x < 1)
+ fun_l8_n174(x)
+ else
+ fun_l8_n559(x)
+ end
+end
+
+def fun_l7_n249(x)
+ if (x < 1)
+ fun_l8_n740(x)
+ else
+ fun_l8_n314(x)
+ end
+end
+
+def fun_l7_n250(x)
+ if (x < 1)
+ fun_l8_n293(x)
+ else
+ fun_l8_n835(x)
+ end
+end
+
+def fun_l7_n251(x)
+ if (x < 1)
+ fun_l8_n584(x)
+ else
+ fun_l8_n755(x)
+ end
+end
+
+def fun_l7_n252(x)
+ if (x < 1)
+ fun_l8_n792(x)
+ else
+ fun_l8_n135(x)
+ end
+end
+
+def fun_l7_n253(x)
+ if (x < 1)
+ fun_l8_n116(x)
+ else
+ fun_l8_n82(x)
+ end
+end
+
+def fun_l7_n254(x)
+ if (x < 1)
+ fun_l8_n478(x)
+ else
+ fun_l8_n809(x)
+ end
+end
+
+def fun_l7_n255(x)
+ if (x < 1)
+ fun_l8_n924(x)
+ else
+ fun_l8_n708(x)
+ end
+end
+
+def fun_l7_n256(x)
+ if (x < 1)
+ fun_l8_n345(x)
+ else
+ fun_l8_n669(x)
+ end
+end
+
+def fun_l7_n257(x)
+ if (x < 1)
+ fun_l8_n300(x)
+ else
+ fun_l8_n166(x)
+ end
+end
+
+def fun_l7_n258(x)
+ if (x < 1)
+ fun_l8_n979(x)
+ else
+ fun_l8_n894(x)
+ end
+end
+
+def fun_l7_n259(x)
+ if (x < 1)
+ fun_l8_n765(x)
+ else
+ fun_l8_n838(x)
+ end
+end
+
+def fun_l7_n260(x)
+ if (x < 1)
+ fun_l8_n812(x)
+ else
+ fun_l8_n472(x)
+ end
+end
+
+def fun_l7_n261(x)
+ if (x < 1)
+ fun_l8_n220(x)
+ else
+ fun_l8_n106(x)
+ end
+end
+
+def fun_l7_n262(x)
+ if (x < 1)
+ fun_l8_n727(x)
+ else
+ fun_l8_n783(x)
+ end
+end
+
+def fun_l7_n263(x)
+ if (x < 1)
+ fun_l8_n560(x)
+ else
+ fun_l8_n781(x)
+ end
+end
+
+def fun_l7_n264(x)
+ if (x < 1)
+ fun_l8_n709(x)
+ else
+ fun_l8_n33(x)
+ end
+end
+
+def fun_l7_n265(x)
+ if (x < 1)
+ fun_l8_n904(x)
+ else
+ fun_l8_n64(x)
+ end
+end
+
+def fun_l7_n266(x)
+ if (x < 1)
+ fun_l8_n944(x)
+ else
+ fun_l8_n652(x)
+ end
+end
+
+def fun_l7_n267(x)
+ if (x < 1)
+ fun_l8_n154(x)
+ else
+ fun_l8_n103(x)
+ end
+end
+
+def fun_l7_n268(x)
+ if (x < 1)
+ fun_l8_n55(x)
+ else
+ fun_l8_n841(x)
+ end
+end
+
+def fun_l7_n269(x)
+ if (x < 1)
+ fun_l8_n914(x)
+ else
+ fun_l8_n108(x)
+ end
+end
+
+def fun_l7_n270(x)
+ if (x < 1)
+ fun_l8_n733(x)
+ else
+ fun_l8_n398(x)
+ end
+end
+
+def fun_l7_n271(x)
+ if (x < 1)
+ fun_l8_n145(x)
+ else
+ fun_l8_n735(x)
+ end
+end
+
+def fun_l7_n272(x)
+ if (x < 1)
+ fun_l8_n404(x)
+ else
+ fun_l8_n216(x)
+ end
+end
+
+def fun_l7_n273(x)
+ if (x < 1)
+ fun_l8_n380(x)
+ else
+ fun_l8_n798(x)
+ end
+end
+
+def fun_l7_n274(x)
+ if (x < 1)
+ fun_l8_n63(x)
+ else
+ fun_l8_n133(x)
+ end
+end
+
+def fun_l7_n275(x)
+ if (x < 1)
+ fun_l8_n878(x)
+ else
+ fun_l8_n284(x)
+ end
+end
+
+def fun_l7_n276(x)
+ if (x < 1)
+ fun_l8_n718(x)
+ else
+ fun_l8_n97(x)
+ end
+end
+
+def fun_l7_n277(x)
+ if (x < 1)
+ fun_l8_n509(x)
+ else
+ fun_l8_n695(x)
+ end
+end
+
+def fun_l7_n278(x)
+ if (x < 1)
+ fun_l8_n581(x)
+ else
+ fun_l8_n898(x)
+ end
+end
+
+def fun_l7_n279(x)
+ if (x < 1)
+ fun_l8_n247(x)
+ else
+ fun_l8_n526(x)
+ end
+end
+
+def fun_l7_n280(x)
+ if (x < 1)
+ fun_l8_n995(x)
+ else
+ fun_l8_n614(x)
+ end
+end
+
+def fun_l7_n281(x)
+ if (x < 1)
+ fun_l8_n301(x)
+ else
+ fun_l8_n178(x)
+ end
+end
+
+def fun_l7_n282(x)
+ if (x < 1)
+ fun_l8_n575(x)
+ else
+ fun_l8_n712(x)
+ end
+end
+
+def fun_l7_n283(x)
+ if (x < 1)
+ fun_l8_n261(x)
+ else
+ fun_l8_n740(x)
+ end
+end
+
+def fun_l7_n284(x)
+ if (x < 1)
+ fun_l8_n284(x)
+ else
+ fun_l8_n350(x)
+ end
+end
+
+def fun_l7_n285(x)
+ if (x < 1)
+ fun_l8_n521(x)
+ else
+ fun_l8_n305(x)
+ end
+end
+
+def fun_l7_n286(x)
+ if (x < 1)
+ fun_l8_n271(x)
+ else
+ fun_l8_n728(x)
+ end
+end
+
+def fun_l7_n287(x)
+ if (x < 1)
+ fun_l8_n292(x)
+ else
+ fun_l8_n799(x)
+ end
+end
+
+def fun_l7_n288(x)
+ if (x < 1)
+ fun_l8_n852(x)
+ else
+ fun_l8_n606(x)
+ end
+end
+
+def fun_l7_n289(x)
+ if (x < 1)
+ fun_l8_n177(x)
+ else
+ fun_l8_n649(x)
+ end
+end
+
+def fun_l7_n290(x)
+ if (x < 1)
+ fun_l8_n488(x)
+ else
+ fun_l8_n252(x)
+ end
+end
+
+def fun_l7_n291(x)
+ if (x < 1)
+ fun_l8_n815(x)
+ else
+ fun_l8_n690(x)
+ end
+end
+
+def fun_l7_n292(x)
+ if (x < 1)
+ fun_l8_n999(x)
+ else
+ fun_l8_n700(x)
+ end
+end
+
+def fun_l7_n293(x)
+ if (x < 1)
+ fun_l8_n9(x)
+ else
+ fun_l8_n194(x)
+ end
+end
+
+def fun_l7_n294(x)
+ if (x < 1)
+ fun_l8_n390(x)
+ else
+ fun_l8_n772(x)
+ end
+end
+
+def fun_l7_n295(x)
+ if (x < 1)
+ fun_l8_n487(x)
+ else
+ fun_l8_n587(x)
+ end
+end
+
+def fun_l7_n296(x)
+ if (x < 1)
+ fun_l8_n892(x)
+ else
+ fun_l8_n126(x)
+ end
+end
+
+def fun_l7_n297(x)
+ if (x < 1)
+ fun_l8_n199(x)
+ else
+ fun_l8_n312(x)
+ end
+end
+
+def fun_l7_n298(x)
+ if (x < 1)
+ fun_l8_n534(x)
+ else
+ fun_l8_n640(x)
+ end
+end
+
+def fun_l7_n299(x)
+ if (x < 1)
+ fun_l8_n344(x)
+ else
+ fun_l8_n58(x)
+ end
+end
+
+def fun_l7_n300(x)
+ if (x < 1)
+ fun_l8_n11(x)
+ else
+ fun_l8_n922(x)
+ end
+end
+
+def fun_l7_n301(x)
+ if (x < 1)
+ fun_l8_n848(x)
+ else
+ fun_l8_n432(x)
+ end
+end
+
+def fun_l7_n302(x)
+ if (x < 1)
+ fun_l8_n292(x)
+ else
+ fun_l8_n86(x)
+ end
+end
+
+def fun_l7_n303(x)
+ if (x < 1)
+ fun_l8_n239(x)
+ else
+ fun_l8_n296(x)
+ end
+end
+
+def fun_l7_n304(x)
+ if (x < 1)
+ fun_l8_n350(x)
+ else
+ fun_l8_n769(x)
+ end
+end
+
+def fun_l7_n305(x)
+ if (x < 1)
+ fun_l8_n959(x)
+ else
+ fun_l8_n292(x)
+ end
+end
+
+def fun_l7_n306(x)
+ if (x < 1)
+ fun_l8_n371(x)
+ else
+ fun_l8_n507(x)
+ end
+end
+
+def fun_l7_n307(x)
+ if (x < 1)
+ fun_l8_n910(x)
+ else
+ fun_l8_n542(x)
+ end
+end
+
+def fun_l7_n308(x)
+ if (x < 1)
+ fun_l8_n299(x)
+ else
+ fun_l8_n543(x)
+ end
+end
+
+def fun_l7_n309(x)
+ if (x < 1)
+ fun_l8_n145(x)
+ else
+ fun_l8_n393(x)
+ end
+end
+
+def fun_l7_n310(x)
+ if (x < 1)
+ fun_l8_n1(x)
+ else
+ fun_l8_n810(x)
+ end
+end
+
+def fun_l7_n311(x)
+ if (x < 1)
+ fun_l8_n866(x)
+ else
+ fun_l8_n519(x)
+ end
+end
+
+def fun_l7_n312(x)
+ if (x < 1)
+ fun_l8_n730(x)
+ else
+ fun_l8_n912(x)
+ end
+end
+
+def fun_l7_n313(x)
+ if (x < 1)
+ fun_l8_n128(x)
+ else
+ fun_l8_n3(x)
+ end
+end
+
+def fun_l7_n314(x)
+ if (x < 1)
+ fun_l8_n393(x)
+ else
+ fun_l8_n887(x)
+ end
+end
+
+def fun_l7_n315(x)
+ if (x < 1)
+ fun_l8_n165(x)
+ else
+ fun_l8_n540(x)
+ end
+end
+
+def fun_l7_n316(x)
+ if (x < 1)
+ fun_l8_n641(x)
+ else
+ fun_l8_n255(x)
+ end
+end
+
+def fun_l7_n317(x)
+ if (x < 1)
+ fun_l8_n265(x)
+ else
+ fun_l8_n754(x)
+ end
+end
+
+def fun_l7_n318(x)
+ if (x < 1)
+ fun_l8_n433(x)
+ else
+ fun_l8_n163(x)
+ end
+end
+
+def fun_l7_n319(x)
+ if (x < 1)
+ fun_l8_n409(x)
+ else
+ fun_l8_n110(x)
+ end
+end
+
+def fun_l7_n320(x)
+ if (x < 1)
+ fun_l8_n704(x)
+ else
+ fun_l8_n959(x)
+ end
+end
+
+def fun_l7_n321(x)
+ if (x < 1)
+ fun_l8_n334(x)
+ else
+ fun_l8_n280(x)
+ end
+end
+
+def fun_l7_n322(x)
+ if (x < 1)
+ fun_l8_n107(x)
+ else
+ fun_l8_n403(x)
+ end
+end
+
+def fun_l7_n323(x)
+ if (x < 1)
+ fun_l8_n108(x)
+ else
+ fun_l8_n426(x)
+ end
+end
+
+def fun_l7_n324(x)
+ if (x < 1)
+ fun_l8_n310(x)
+ else
+ fun_l8_n968(x)
+ end
+end
+
+def fun_l7_n325(x)
+ if (x < 1)
+ fun_l8_n600(x)
+ else
+ fun_l8_n850(x)
+ end
+end
+
+def fun_l7_n326(x)
+ if (x < 1)
+ fun_l8_n736(x)
+ else
+ fun_l8_n61(x)
+ end
+end
+
+def fun_l7_n327(x)
+ if (x < 1)
+ fun_l8_n86(x)
+ else
+ fun_l8_n948(x)
+ end
+end
+
+def fun_l7_n328(x)
+ if (x < 1)
+ fun_l8_n625(x)
+ else
+ fun_l8_n644(x)
+ end
+end
+
+def fun_l7_n329(x)
+ if (x < 1)
+ fun_l8_n507(x)
+ else
+ fun_l8_n624(x)
+ end
+end
+
+def fun_l7_n330(x)
+ if (x < 1)
+ fun_l8_n956(x)
+ else
+ fun_l8_n281(x)
+ end
+end
+
+def fun_l7_n331(x)
+ if (x < 1)
+ fun_l8_n72(x)
+ else
+ fun_l8_n695(x)
+ end
+end
+
+def fun_l7_n332(x)
+ if (x < 1)
+ fun_l8_n445(x)
+ else
+ fun_l8_n465(x)
+ end
+end
+
+def fun_l7_n333(x)
+ if (x < 1)
+ fun_l8_n438(x)
+ else
+ fun_l8_n698(x)
+ end
+end
+
+def fun_l7_n334(x)
+ if (x < 1)
+ fun_l8_n242(x)
+ else
+ fun_l8_n837(x)
+ end
+end
+
+def fun_l7_n335(x)
+ if (x < 1)
+ fun_l8_n299(x)
+ else
+ fun_l8_n312(x)
+ end
+end
+
+def fun_l7_n336(x)
+ if (x < 1)
+ fun_l8_n264(x)
+ else
+ fun_l8_n330(x)
+ end
+end
+
+def fun_l7_n337(x)
+ if (x < 1)
+ fun_l8_n251(x)
+ else
+ fun_l8_n459(x)
+ end
+end
+
+def fun_l7_n338(x)
+ if (x < 1)
+ fun_l8_n876(x)
+ else
+ fun_l8_n689(x)
+ end
+end
+
+def fun_l7_n339(x)
+ if (x < 1)
+ fun_l8_n547(x)
+ else
+ fun_l8_n745(x)
+ end
+end
+
+def fun_l7_n340(x)
+ if (x < 1)
+ fun_l8_n493(x)
+ else
+ fun_l8_n877(x)
+ end
+end
+
+def fun_l7_n341(x)
+ if (x < 1)
+ fun_l8_n143(x)
+ else
+ fun_l8_n429(x)
+ end
+end
+
+def fun_l7_n342(x)
+ if (x < 1)
+ fun_l8_n650(x)
+ else
+ fun_l8_n384(x)
+ end
+end
+
+def fun_l7_n343(x)
+ if (x < 1)
+ fun_l8_n897(x)
+ else
+ fun_l8_n980(x)
+ end
+end
+
+def fun_l7_n344(x)
+ if (x < 1)
+ fun_l8_n699(x)
+ else
+ fun_l8_n673(x)
+ end
+end
+
+def fun_l7_n345(x)
+ if (x < 1)
+ fun_l8_n25(x)
+ else
+ fun_l8_n342(x)
+ end
+end
+
+def fun_l7_n346(x)
+ if (x < 1)
+ fun_l8_n345(x)
+ else
+ fun_l8_n140(x)
+ end
+end
+
+def fun_l7_n347(x)
+ if (x < 1)
+ fun_l8_n661(x)
+ else
+ fun_l8_n153(x)
+ end
+end
+
+def fun_l7_n348(x)
+ if (x < 1)
+ fun_l8_n477(x)
+ else
+ fun_l8_n460(x)
+ end
+end
+
+def fun_l7_n349(x)
+ if (x < 1)
+ fun_l8_n641(x)
+ else
+ fun_l8_n941(x)
+ end
+end
+
+def fun_l7_n350(x)
+ if (x < 1)
+ fun_l8_n952(x)
+ else
+ fun_l8_n886(x)
+ end
+end
+
+def fun_l7_n351(x)
+ if (x < 1)
+ fun_l8_n338(x)
+ else
+ fun_l8_n655(x)
+ end
+end
+
+def fun_l7_n352(x)
+ if (x < 1)
+ fun_l8_n717(x)
+ else
+ fun_l8_n314(x)
+ end
+end
+
+def fun_l7_n353(x)
+ if (x < 1)
+ fun_l8_n645(x)
+ else
+ fun_l8_n464(x)
+ end
+end
+
+def fun_l7_n354(x)
+ if (x < 1)
+ fun_l8_n114(x)
+ else
+ fun_l8_n816(x)
+ end
+end
+
+def fun_l7_n355(x)
+ if (x < 1)
+ fun_l8_n18(x)
+ else
+ fun_l8_n173(x)
+ end
+end
+
+def fun_l7_n356(x)
+ if (x < 1)
+ fun_l8_n214(x)
+ else
+ fun_l8_n834(x)
+ end
+end
+
+def fun_l7_n357(x)
+ if (x < 1)
+ fun_l8_n6(x)
+ else
+ fun_l8_n161(x)
+ end
+end
+
+def fun_l7_n358(x)
+ if (x < 1)
+ fun_l8_n823(x)
+ else
+ fun_l8_n695(x)
+ end
+end
+
+def fun_l7_n359(x)
+ if (x < 1)
+ fun_l8_n86(x)
+ else
+ fun_l8_n174(x)
+ end
+end
+
+def fun_l7_n360(x)
+ if (x < 1)
+ fun_l8_n904(x)
+ else
+ fun_l8_n240(x)
+ end
+end
+
+def fun_l7_n361(x)
+ if (x < 1)
+ fun_l8_n857(x)
+ else
+ fun_l8_n494(x)
+ end
+end
+
+def fun_l7_n362(x)
+ if (x < 1)
+ fun_l8_n780(x)
+ else
+ fun_l8_n186(x)
+ end
+end
+
+def fun_l7_n363(x)
+ if (x < 1)
+ fun_l8_n575(x)
+ else
+ fun_l8_n510(x)
+ end
+end
+
+def fun_l7_n364(x)
+ if (x < 1)
+ fun_l8_n412(x)
+ else
+ fun_l8_n153(x)
+ end
+end
+
+def fun_l7_n365(x)
+ if (x < 1)
+ fun_l8_n840(x)
+ else
+ fun_l8_n199(x)
+ end
+end
+
+def fun_l7_n366(x)
+ if (x < 1)
+ fun_l8_n162(x)
+ else
+ fun_l8_n971(x)
+ end
+end
+
+def fun_l7_n367(x)
+ if (x < 1)
+ fun_l8_n200(x)
+ else
+ fun_l8_n128(x)
+ end
+end
+
+def fun_l7_n368(x)
+ if (x < 1)
+ fun_l8_n404(x)
+ else
+ fun_l8_n657(x)
+ end
+end
+
+def fun_l7_n369(x)
+ if (x < 1)
+ fun_l8_n631(x)
+ else
+ fun_l8_n714(x)
+ end
+end
+
+def fun_l7_n370(x)
+ if (x < 1)
+ fun_l8_n177(x)
+ else
+ fun_l8_n718(x)
+ end
+end
+
+def fun_l7_n371(x)
+ if (x < 1)
+ fun_l8_n284(x)
+ else
+ fun_l8_n474(x)
+ end
+end
+
+def fun_l7_n372(x)
+ if (x < 1)
+ fun_l8_n138(x)
+ else
+ fun_l8_n461(x)
+ end
+end
+
+def fun_l7_n373(x)
+ if (x < 1)
+ fun_l8_n78(x)
+ else
+ fun_l8_n750(x)
+ end
+end
+
+def fun_l7_n374(x)
+ if (x < 1)
+ fun_l8_n231(x)
+ else
+ fun_l8_n648(x)
+ end
+end
+
+def fun_l7_n375(x)
+ if (x < 1)
+ fun_l8_n238(x)
+ else
+ fun_l8_n644(x)
+ end
+end
+
+def fun_l7_n376(x)
+ if (x < 1)
+ fun_l8_n509(x)
+ else
+ fun_l8_n354(x)
+ end
+end
+
+def fun_l7_n377(x)
+ if (x < 1)
+ fun_l8_n332(x)
+ else
+ fun_l8_n739(x)
+ end
+end
+
+def fun_l7_n378(x)
+ if (x < 1)
+ fun_l8_n76(x)
+ else
+ fun_l8_n505(x)
+ end
+end
+
+def fun_l7_n379(x)
+ if (x < 1)
+ fun_l8_n781(x)
+ else
+ fun_l8_n918(x)
+ end
+end
+
+def fun_l7_n380(x)
+ if (x < 1)
+ fun_l8_n854(x)
+ else
+ fun_l8_n85(x)
+ end
+end
+
+def fun_l7_n381(x)
+ if (x < 1)
+ fun_l8_n67(x)
+ else
+ fun_l8_n690(x)
+ end
+end
+
+def fun_l7_n382(x)
+ if (x < 1)
+ fun_l8_n425(x)
+ else
+ fun_l8_n643(x)
+ end
+end
+
+def fun_l7_n383(x)
+ if (x < 1)
+ fun_l8_n210(x)
+ else
+ fun_l8_n533(x)
+ end
+end
+
+def fun_l7_n384(x)
+ if (x < 1)
+ fun_l8_n469(x)
+ else
+ fun_l8_n274(x)
+ end
+end
+
+def fun_l7_n385(x)
+ if (x < 1)
+ fun_l8_n398(x)
+ else
+ fun_l8_n583(x)
+ end
+end
+
+def fun_l7_n386(x)
+ if (x < 1)
+ fun_l8_n483(x)
+ else
+ fun_l8_n80(x)
+ end
+end
+
+def fun_l7_n387(x)
+ if (x < 1)
+ fun_l8_n557(x)
+ else
+ fun_l8_n165(x)
+ end
+end
+
+def fun_l7_n388(x)
+ if (x < 1)
+ fun_l8_n335(x)
+ else
+ fun_l8_n656(x)
+ end
+end
+
+def fun_l7_n389(x)
+ if (x < 1)
+ fun_l8_n810(x)
+ else
+ fun_l8_n586(x)
+ end
+end
+
+def fun_l7_n390(x)
+ if (x < 1)
+ fun_l8_n90(x)
+ else
+ fun_l8_n788(x)
+ end
+end
+
+def fun_l7_n391(x)
+ if (x < 1)
+ fun_l8_n709(x)
+ else
+ fun_l8_n948(x)
+ end
+end
+
+def fun_l7_n392(x)
+ if (x < 1)
+ fun_l8_n139(x)
+ else
+ fun_l8_n631(x)
+ end
+end
+
+def fun_l7_n393(x)
+ if (x < 1)
+ fun_l8_n341(x)
+ else
+ fun_l8_n506(x)
+ end
+end
+
+def fun_l7_n394(x)
+ if (x < 1)
+ fun_l8_n435(x)
+ else
+ fun_l8_n178(x)
+ end
+end
+
+def fun_l7_n395(x)
+ if (x < 1)
+ fun_l8_n186(x)
+ else
+ fun_l8_n58(x)
+ end
+end
+
+def fun_l7_n396(x)
+ if (x < 1)
+ fun_l8_n512(x)
+ else
+ fun_l8_n87(x)
+ end
+end
+
+def fun_l7_n397(x)
+ if (x < 1)
+ fun_l8_n763(x)
+ else
+ fun_l8_n220(x)
+ end
+end
+
+def fun_l7_n398(x)
+ if (x < 1)
+ fun_l8_n266(x)
+ else
+ fun_l8_n231(x)
+ end
+end
+
+def fun_l7_n399(x)
+ if (x < 1)
+ fun_l8_n308(x)
+ else
+ fun_l8_n512(x)
+ end
+end
+
+def fun_l7_n400(x)
+ if (x < 1)
+ fun_l8_n26(x)
+ else
+ fun_l8_n228(x)
+ end
+end
+
+def fun_l7_n401(x)
+ if (x < 1)
+ fun_l8_n143(x)
+ else
+ fun_l8_n826(x)
+ end
+end
+
+def fun_l7_n402(x)
+ if (x < 1)
+ fun_l8_n893(x)
+ else
+ fun_l8_n334(x)
+ end
+end
+
+def fun_l7_n403(x)
+ if (x < 1)
+ fun_l8_n9(x)
+ else
+ fun_l8_n867(x)
+ end
+end
+
+def fun_l7_n404(x)
+ if (x < 1)
+ fun_l8_n85(x)
+ else
+ fun_l8_n279(x)
+ end
+end
+
+def fun_l7_n405(x)
+ if (x < 1)
+ fun_l8_n30(x)
+ else
+ fun_l8_n85(x)
+ end
+end
+
+def fun_l7_n406(x)
+ if (x < 1)
+ fun_l8_n38(x)
+ else
+ fun_l8_n979(x)
+ end
+end
+
+def fun_l7_n407(x)
+ if (x < 1)
+ fun_l8_n630(x)
+ else
+ fun_l8_n262(x)
+ end
+end
+
+def fun_l7_n408(x)
+ if (x < 1)
+ fun_l8_n430(x)
+ else
+ fun_l8_n178(x)
+ end
+end
+
+def fun_l7_n409(x)
+ if (x < 1)
+ fun_l8_n131(x)
+ else
+ fun_l8_n66(x)
+ end
+end
+
+def fun_l7_n410(x)
+ if (x < 1)
+ fun_l8_n373(x)
+ else
+ fun_l8_n514(x)
+ end
+end
+
+def fun_l7_n411(x)
+ if (x < 1)
+ fun_l8_n334(x)
+ else
+ fun_l8_n591(x)
+ end
+end
+
+def fun_l7_n412(x)
+ if (x < 1)
+ fun_l8_n619(x)
+ else
+ fun_l8_n490(x)
+ end
+end
+
+def fun_l7_n413(x)
+ if (x < 1)
+ fun_l8_n318(x)
+ else
+ fun_l8_n456(x)
+ end
+end
+
+def fun_l7_n414(x)
+ if (x < 1)
+ fun_l8_n576(x)
+ else
+ fun_l8_n638(x)
+ end
+end
+
+def fun_l7_n415(x)
+ if (x < 1)
+ fun_l8_n407(x)
+ else
+ fun_l8_n44(x)
+ end
+end
+
+def fun_l7_n416(x)
+ if (x < 1)
+ fun_l8_n970(x)
+ else
+ fun_l8_n564(x)
+ end
+end
+
+def fun_l7_n417(x)
+ if (x < 1)
+ fun_l8_n163(x)
+ else
+ fun_l8_n533(x)
+ end
+end
+
+def fun_l7_n418(x)
+ if (x < 1)
+ fun_l8_n216(x)
+ else
+ fun_l8_n604(x)
+ end
+end
+
+def fun_l7_n419(x)
+ if (x < 1)
+ fun_l8_n505(x)
+ else
+ fun_l8_n620(x)
+ end
+end
+
+def fun_l7_n420(x)
+ if (x < 1)
+ fun_l8_n746(x)
+ else
+ fun_l8_n998(x)
+ end
+end
+
+def fun_l7_n421(x)
+ if (x < 1)
+ fun_l8_n266(x)
+ else
+ fun_l8_n762(x)
+ end
+end
+
+def fun_l7_n422(x)
+ if (x < 1)
+ fun_l8_n216(x)
+ else
+ fun_l8_n995(x)
+ end
+end
+
+def fun_l7_n423(x)
+ if (x < 1)
+ fun_l8_n824(x)
+ else
+ fun_l8_n349(x)
+ end
+end
+
+def fun_l7_n424(x)
+ if (x < 1)
+ fun_l8_n177(x)
+ else
+ fun_l8_n61(x)
+ end
+end
+
+def fun_l7_n425(x)
+ if (x < 1)
+ fun_l8_n286(x)
+ else
+ fun_l8_n213(x)
+ end
+end
+
+def fun_l7_n426(x)
+ if (x < 1)
+ fun_l8_n794(x)
+ else
+ fun_l8_n428(x)
+ end
+end
+
+def fun_l7_n427(x)
+ if (x < 1)
+ fun_l8_n404(x)
+ else
+ fun_l8_n202(x)
+ end
+end
+
+def fun_l7_n428(x)
+ if (x < 1)
+ fun_l8_n571(x)
+ else
+ fun_l8_n812(x)
+ end
+end
+
+def fun_l7_n429(x)
+ if (x < 1)
+ fun_l8_n165(x)
+ else
+ fun_l8_n277(x)
+ end
+end
+
+def fun_l7_n430(x)
+ if (x < 1)
+ fun_l8_n138(x)
+ else
+ fun_l8_n230(x)
+ end
+end
+
+def fun_l7_n431(x)
+ if (x < 1)
+ fun_l8_n832(x)
+ else
+ fun_l8_n78(x)
+ end
+end
+
+def fun_l7_n432(x)
+ if (x < 1)
+ fun_l8_n866(x)
+ else
+ fun_l8_n137(x)
+ end
+end
+
+def fun_l7_n433(x)
+ if (x < 1)
+ fun_l8_n92(x)
+ else
+ fun_l8_n638(x)
+ end
+end
+
+def fun_l7_n434(x)
+ if (x < 1)
+ fun_l8_n788(x)
+ else
+ fun_l8_n991(x)
+ end
+end
+
+def fun_l7_n435(x)
+ if (x < 1)
+ fun_l8_n584(x)
+ else
+ fun_l8_n783(x)
+ end
+end
+
+def fun_l7_n436(x)
+ if (x < 1)
+ fun_l8_n786(x)
+ else
+ fun_l8_n771(x)
+ end
+end
+
+def fun_l7_n437(x)
+ if (x < 1)
+ fun_l8_n650(x)
+ else
+ fun_l8_n684(x)
+ end
+end
+
+def fun_l7_n438(x)
+ if (x < 1)
+ fun_l8_n964(x)
+ else
+ fun_l8_n738(x)
+ end
+end
+
+def fun_l7_n439(x)
+ if (x < 1)
+ fun_l8_n356(x)
+ else
+ fun_l8_n979(x)
+ end
+end
+
+def fun_l7_n440(x)
+ if (x < 1)
+ fun_l8_n630(x)
+ else
+ fun_l8_n79(x)
+ end
+end
+
+def fun_l7_n441(x)
+ if (x < 1)
+ fun_l8_n326(x)
+ else
+ fun_l8_n667(x)
+ end
+end
+
+def fun_l7_n442(x)
+ if (x < 1)
+ fun_l8_n561(x)
+ else
+ fun_l8_n263(x)
+ end
+end
+
+def fun_l7_n443(x)
+ if (x < 1)
+ fun_l8_n62(x)
+ else
+ fun_l8_n528(x)
+ end
+end
+
+def fun_l7_n444(x)
+ if (x < 1)
+ fun_l8_n156(x)
+ else
+ fun_l8_n496(x)
+ end
+end
+
+def fun_l7_n445(x)
+ if (x < 1)
+ fun_l8_n971(x)
+ else
+ fun_l8_n853(x)
+ end
+end
+
+def fun_l7_n446(x)
+ if (x < 1)
+ fun_l8_n217(x)
+ else
+ fun_l8_n985(x)
+ end
+end
+
+def fun_l7_n447(x)
+ if (x < 1)
+ fun_l8_n569(x)
+ else
+ fun_l8_n320(x)
+ end
+end
+
+def fun_l7_n448(x)
+ if (x < 1)
+ fun_l8_n133(x)
+ else
+ fun_l8_n417(x)
+ end
+end
+
+def fun_l7_n449(x)
+ if (x < 1)
+ fun_l8_n369(x)
+ else
+ fun_l8_n25(x)
+ end
+end
+
+def fun_l7_n450(x)
+ if (x < 1)
+ fun_l8_n735(x)
+ else
+ fun_l8_n573(x)
+ end
+end
+
+def fun_l7_n451(x)
+ if (x < 1)
+ fun_l8_n764(x)
+ else
+ fun_l8_n247(x)
+ end
+end
+
+def fun_l7_n452(x)
+ if (x < 1)
+ fun_l8_n512(x)
+ else
+ fun_l8_n274(x)
+ end
+end
+
+def fun_l7_n453(x)
+ if (x < 1)
+ fun_l8_n388(x)
+ else
+ fun_l8_n438(x)
+ end
+end
+
+def fun_l7_n454(x)
+ if (x < 1)
+ fun_l8_n565(x)
+ else
+ fun_l8_n449(x)
+ end
+end
+
+def fun_l7_n455(x)
+ if (x < 1)
+ fun_l8_n771(x)
+ else
+ fun_l8_n827(x)
+ end
+end
+
+def fun_l7_n456(x)
+ if (x < 1)
+ fun_l8_n538(x)
+ else
+ fun_l8_n270(x)
+ end
+end
+
+def fun_l7_n457(x)
+ if (x < 1)
+ fun_l8_n288(x)
+ else
+ fun_l8_n325(x)
+ end
+end
+
+def fun_l7_n458(x)
+ if (x < 1)
+ fun_l8_n345(x)
+ else
+ fun_l8_n334(x)
+ end
+end
+
+def fun_l7_n459(x)
+ if (x < 1)
+ fun_l8_n696(x)
+ else
+ fun_l8_n440(x)
+ end
+end
+
+def fun_l7_n460(x)
+ if (x < 1)
+ fun_l8_n509(x)
+ else
+ fun_l8_n580(x)
+ end
+end
+
+def fun_l7_n461(x)
+ if (x < 1)
+ fun_l8_n254(x)
+ else
+ fun_l8_n162(x)
+ end
+end
+
+def fun_l7_n462(x)
+ if (x < 1)
+ fun_l8_n541(x)
+ else
+ fun_l8_n493(x)
+ end
+end
+
+def fun_l7_n463(x)
+ if (x < 1)
+ fun_l8_n371(x)
+ else
+ fun_l8_n302(x)
+ end
+end
+
+def fun_l7_n464(x)
+ if (x < 1)
+ fun_l8_n44(x)
+ else
+ fun_l8_n677(x)
+ end
+end
+
+def fun_l7_n465(x)
+ if (x < 1)
+ fun_l8_n312(x)
+ else
+ fun_l8_n716(x)
+ end
+end
+
+def fun_l7_n466(x)
+ if (x < 1)
+ fun_l8_n252(x)
+ else
+ fun_l8_n827(x)
+ end
+end
+
+def fun_l7_n467(x)
+ if (x < 1)
+ fun_l8_n871(x)
+ else
+ fun_l8_n962(x)
+ end
+end
+
+def fun_l7_n468(x)
+ if (x < 1)
+ fun_l8_n323(x)
+ else
+ fun_l8_n813(x)
+ end
+end
+
+def fun_l7_n469(x)
+ if (x < 1)
+ fun_l8_n100(x)
+ else
+ fun_l8_n905(x)
+ end
+end
+
+def fun_l7_n470(x)
+ if (x < 1)
+ fun_l8_n95(x)
+ else
+ fun_l8_n96(x)
+ end
+end
+
+def fun_l7_n471(x)
+ if (x < 1)
+ fun_l8_n398(x)
+ else
+ fun_l8_n40(x)
+ end
+end
+
+def fun_l7_n472(x)
+ if (x < 1)
+ fun_l8_n280(x)
+ else
+ fun_l8_n34(x)
+ end
+end
+
+def fun_l7_n473(x)
+ if (x < 1)
+ fun_l8_n262(x)
+ else
+ fun_l8_n399(x)
+ end
+end
+
+def fun_l7_n474(x)
+ if (x < 1)
+ fun_l8_n126(x)
+ else
+ fun_l8_n208(x)
+ end
+end
+
+def fun_l7_n475(x)
+ if (x < 1)
+ fun_l8_n371(x)
+ else
+ fun_l8_n697(x)
+ end
+end
+
+def fun_l7_n476(x)
+ if (x < 1)
+ fun_l8_n617(x)
+ else
+ fun_l8_n822(x)
+ end
+end
+
+def fun_l7_n477(x)
+ if (x < 1)
+ fun_l8_n24(x)
+ else
+ fun_l8_n300(x)
+ end
+end
+
+def fun_l7_n478(x)
+ if (x < 1)
+ fun_l8_n864(x)
+ else
+ fun_l8_n357(x)
+ end
+end
+
+def fun_l7_n479(x)
+ if (x < 1)
+ fun_l8_n231(x)
+ else
+ fun_l8_n892(x)
+ end
+end
+
+def fun_l7_n480(x)
+ if (x < 1)
+ fun_l8_n200(x)
+ else
+ fun_l8_n49(x)
+ end
+end
+
+def fun_l7_n481(x)
+ if (x < 1)
+ fun_l8_n43(x)
+ else
+ fun_l8_n86(x)
+ end
+end
+
+def fun_l7_n482(x)
+ if (x < 1)
+ fun_l8_n617(x)
+ else
+ fun_l8_n752(x)
+ end
+end
+
+def fun_l7_n483(x)
+ if (x < 1)
+ fun_l8_n65(x)
+ else
+ fun_l8_n796(x)
+ end
+end
+
+def fun_l7_n484(x)
+ if (x < 1)
+ fun_l8_n960(x)
+ else
+ fun_l8_n174(x)
+ end
+end
+
+def fun_l7_n485(x)
+ if (x < 1)
+ fun_l8_n383(x)
+ else
+ fun_l8_n50(x)
+ end
+end
+
+def fun_l7_n486(x)
+ if (x < 1)
+ fun_l8_n269(x)
+ else
+ fun_l8_n413(x)
+ end
+end
+
+def fun_l7_n487(x)
+ if (x < 1)
+ fun_l8_n762(x)
+ else
+ fun_l8_n368(x)
+ end
+end
+
+def fun_l7_n488(x)
+ if (x < 1)
+ fun_l8_n635(x)
+ else
+ fun_l8_n900(x)
+ end
+end
+
+def fun_l7_n489(x)
+ if (x < 1)
+ fun_l8_n707(x)
+ else
+ fun_l8_n376(x)
+ end
+end
+
+def fun_l7_n490(x)
+ if (x < 1)
+ fun_l8_n215(x)
+ else
+ fun_l8_n255(x)
+ end
+end
+
+def fun_l7_n491(x)
+ if (x < 1)
+ fun_l8_n730(x)
+ else
+ fun_l8_n489(x)
+ end
+end
+
+def fun_l7_n492(x)
+ if (x < 1)
+ fun_l8_n896(x)
+ else
+ fun_l8_n501(x)
+ end
+end
+
+def fun_l7_n493(x)
+ if (x < 1)
+ fun_l8_n359(x)
+ else
+ fun_l8_n876(x)
+ end
+end
+
+def fun_l7_n494(x)
+ if (x < 1)
+ fun_l8_n13(x)
+ else
+ fun_l8_n669(x)
+ end
+end
+
+def fun_l7_n495(x)
+ if (x < 1)
+ fun_l8_n442(x)
+ else
+ fun_l8_n975(x)
+ end
+end
+
+def fun_l7_n496(x)
+ if (x < 1)
+ fun_l8_n349(x)
+ else
+ fun_l8_n240(x)
+ end
+end
+
+def fun_l7_n497(x)
+ if (x < 1)
+ fun_l8_n174(x)
+ else
+ fun_l8_n416(x)
+ end
+end
+
+def fun_l7_n498(x)
+ if (x < 1)
+ fun_l8_n141(x)
+ else
+ fun_l8_n231(x)
+ end
+end
+
+def fun_l7_n499(x)
+ if (x < 1)
+ fun_l8_n868(x)
+ else
+ fun_l8_n370(x)
+ end
+end
+
+def fun_l7_n500(x)
+ if (x < 1)
+ fun_l8_n888(x)
+ else
+ fun_l8_n525(x)
+ end
+end
+
+def fun_l7_n501(x)
+ if (x < 1)
+ fun_l8_n418(x)
+ else
+ fun_l8_n402(x)
+ end
+end
+
+def fun_l7_n502(x)
+ if (x < 1)
+ fun_l8_n910(x)
+ else
+ fun_l8_n308(x)
+ end
+end
+
+def fun_l7_n503(x)
+ if (x < 1)
+ fun_l8_n435(x)
+ else
+ fun_l8_n106(x)
+ end
+end
+
+def fun_l7_n504(x)
+ if (x < 1)
+ fun_l8_n716(x)
+ else
+ fun_l8_n768(x)
+ end
+end
+
+def fun_l7_n505(x)
+ if (x < 1)
+ fun_l8_n690(x)
+ else
+ fun_l8_n382(x)
+ end
+end
+
+def fun_l7_n506(x)
+ if (x < 1)
+ fun_l8_n786(x)
+ else
+ fun_l8_n270(x)
+ end
+end
+
+def fun_l7_n507(x)
+ if (x < 1)
+ fun_l8_n317(x)
+ else
+ fun_l8_n802(x)
+ end
+end
+
+def fun_l7_n508(x)
+ if (x < 1)
+ fun_l8_n423(x)
+ else
+ fun_l8_n91(x)
+ end
+end
+
+def fun_l7_n509(x)
+ if (x < 1)
+ fun_l8_n853(x)
+ else
+ fun_l8_n434(x)
+ end
+end
+
+def fun_l7_n510(x)
+ if (x < 1)
+ fun_l8_n691(x)
+ else
+ fun_l8_n458(x)
+ end
+end
+
+def fun_l7_n511(x)
+ if (x < 1)
+ fun_l8_n806(x)
+ else
+ fun_l8_n989(x)
+ end
+end
+
+def fun_l7_n512(x)
+ if (x < 1)
+ fun_l8_n696(x)
+ else
+ fun_l8_n234(x)
+ end
+end
+
+def fun_l7_n513(x)
+ if (x < 1)
+ fun_l8_n370(x)
+ else
+ fun_l8_n440(x)
+ end
+end
+
+def fun_l7_n514(x)
+ if (x < 1)
+ fun_l8_n889(x)
+ else
+ fun_l8_n306(x)
+ end
+end
+
+def fun_l7_n515(x)
+ if (x < 1)
+ fun_l8_n147(x)
+ else
+ fun_l8_n527(x)
+ end
+end
+
+def fun_l7_n516(x)
+ if (x < 1)
+ fun_l8_n18(x)
+ else
+ fun_l8_n120(x)
+ end
+end
+
+def fun_l7_n517(x)
+ if (x < 1)
+ fun_l8_n93(x)
+ else
+ fun_l8_n861(x)
+ end
+end
+
+def fun_l7_n518(x)
+ if (x < 1)
+ fun_l8_n954(x)
+ else
+ fun_l8_n864(x)
+ end
+end
+
+def fun_l7_n519(x)
+ if (x < 1)
+ fun_l8_n886(x)
+ else
+ fun_l8_n227(x)
+ end
+end
+
+def fun_l7_n520(x)
+ if (x < 1)
+ fun_l8_n525(x)
+ else
+ fun_l8_n73(x)
+ end
+end
+
+def fun_l7_n521(x)
+ if (x < 1)
+ fun_l8_n550(x)
+ else
+ fun_l8_n638(x)
+ end
+end
+
+def fun_l7_n522(x)
+ if (x < 1)
+ fun_l8_n36(x)
+ else
+ fun_l8_n511(x)
+ end
+end
+
+def fun_l7_n523(x)
+ if (x < 1)
+ fun_l8_n346(x)
+ else
+ fun_l8_n257(x)
+ end
+end
+
+def fun_l7_n524(x)
+ if (x < 1)
+ fun_l8_n973(x)
+ else
+ fun_l8_n704(x)
+ end
+end
+
+def fun_l7_n525(x)
+ if (x < 1)
+ fun_l8_n21(x)
+ else
+ fun_l8_n354(x)
+ end
+end
+
+def fun_l7_n526(x)
+ if (x < 1)
+ fun_l8_n394(x)
+ else
+ fun_l8_n461(x)
+ end
+end
+
+def fun_l7_n527(x)
+ if (x < 1)
+ fun_l8_n444(x)
+ else
+ fun_l8_n333(x)
+ end
+end
+
+def fun_l7_n528(x)
+ if (x < 1)
+ fun_l8_n743(x)
+ else
+ fun_l8_n579(x)
+ end
+end
+
+def fun_l7_n529(x)
+ if (x < 1)
+ fun_l8_n135(x)
+ else
+ fun_l8_n69(x)
+ end
+end
+
+def fun_l7_n530(x)
+ if (x < 1)
+ fun_l8_n66(x)
+ else
+ fun_l8_n6(x)
+ end
+end
+
+def fun_l7_n531(x)
+ if (x < 1)
+ fun_l8_n84(x)
+ else
+ fun_l8_n392(x)
+ end
+end
+
+def fun_l7_n532(x)
+ if (x < 1)
+ fun_l8_n178(x)
+ else
+ fun_l8_n227(x)
+ end
+end
+
+def fun_l7_n533(x)
+ if (x < 1)
+ fun_l8_n695(x)
+ else
+ fun_l8_n696(x)
+ end
+end
+
+def fun_l7_n534(x)
+ if (x < 1)
+ fun_l8_n266(x)
+ else
+ fun_l8_n8(x)
+ end
+end
+
+def fun_l7_n535(x)
+ if (x < 1)
+ fun_l8_n806(x)
+ else
+ fun_l8_n878(x)
+ end
+end
+
+def fun_l7_n536(x)
+ if (x < 1)
+ fun_l8_n775(x)
+ else
+ fun_l8_n778(x)
+ end
+end
+
+def fun_l7_n537(x)
+ if (x < 1)
+ fun_l8_n133(x)
+ else
+ fun_l8_n552(x)
+ end
+end
+
+def fun_l7_n538(x)
+ if (x < 1)
+ fun_l8_n71(x)
+ else
+ fun_l8_n786(x)
+ end
+end
+
+def fun_l7_n539(x)
+ if (x < 1)
+ fun_l8_n679(x)
+ else
+ fun_l8_n407(x)
+ end
+end
+
+def fun_l7_n540(x)
+ if (x < 1)
+ fun_l8_n532(x)
+ else
+ fun_l8_n75(x)
+ end
+end
+
+def fun_l7_n541(x)
+ if (x < 1)
+ fun_l8_n367(x)
+ else
+ fun_l8_n505(x)
+ end
+end
+
+def fun_l7_n542(x)
+ if (x < 1)
+ fun_l8_n74(x)
+ else
+ fun_l8_n374(x)
+ end
+end
+
+def fun_l7_n543(x)
+ if (x < 1)
+ fun_l8_n207(x)
+ else
+ fun_l8_n874(x)
+ end
+end
+
+def fun_l7_n544(x)
+ if (x < 1)
+ fun_l8_n774(x)
+ else
+ fun_l8_n750(x)
+ end
+end
+
+def fun_l7_n545(x)
+ if (x < 1)
+ fun_l8_n503(x)
+ else
+ fun_l8_n933(x)
+ end
+end
+
+def fun_l7_n546(x)
+ if (x < 1)
+ fun_l8_n125(x)
+ else
+ fun_l8_n570(x)
+ end
+end
+
+def fun_l7_n547(x)
+ if (x < 1)
+ fun_l8_n743(x)
+ else
+ fun_l8_n506(x)
+ end
+end
+
+def fun_l7_n548(x)
+ if (x < 1)
+ fun_l8_n297(x)
+ else
+ fun_l8_n70(x)
+ end
+end
+
+def fun_l7_n549(x)
+ if (x < 1)
+ fun_l8_n692(x)
+ else
+ fun_l8_n652(x)
+ end
+end
+
+def fun_l7_n550(x)
+ if (x < 1)
+ fun_l8_n446(x)
+ else
+ fun_l8_n432(x)
+ end
+end
+
+def fun_l7_n551(x)
+ if (x < 1)
+ fun_l8_n947(x)
+ else
+ fun_l8_n429(x)
+ end
+end
+
+def fun_l7_n552(x)
+ if (x < 1)
+ fun_l8_n417(x)
+ else
+ fun_l8_n136(x)
+ end
+end
+
+def fun_l7_n553(x)
+ if (x < 1)
+ fun_l8_n236(x)
+ else
+ fun_l8_n291(x)
+ end
+end
+
+def fun_l7_n554(x)
+ if (x < 1)
+ fun_l8_n60(x)
+ else
+ fun_l8_n328(x)
+ end
+end
+
+def fun_l7_n555(x)
+ if (x < 1)
+ fun_l8_n97(x)
+ else
+ fun_l8_n461(x)
+ end
+end
+
+def fun_l7_n556(x)
+ if (x < 1)
+ fun_l8_n158(x)
+ else
+ fun_l8_n603(x)
+ end
+end
+
+def fun_l7_n557(x)
+ if (x < 1)
+ fun_l8_n328(x)
+ else
+ fun_l8_n725(x)
+ end
+end
+
+def fun_l7_n558(x)
+ if (x < 1)
+ fun_l8_n25(x)
+ else
+ fun_l8_n933(x)
+ end
+end
+
+def fun_l7_n559(x)
+ if (x < 1)
+ fun_l8_n352(x)
+ else
+ fun_l8_n552(x)
+ end
+end
+
+def fun_l7_n560(x)
+ if (x < 1)
+ fun_l8_n427(x)
+ else
+ fun_l8_n91(x)
+ end
+end
+
+def fun_l7_n561(x)
+ if (x < 1)
+ fun_l8_n293(x)
+ else
+ fun_l8_n749(x)
+ end
+end
+
+def fun_l7_n562(x)
+ if (x < 1)
+ fun_l8_n672(x)
+ else
+ fun_l8_n905(x)
+ end
+end
+
+def fun_l7_n563(x)
+ if (x < 1)
+ fun_l8_n201(x)
+ else
+ fun_l8_n668(x)
+ end
+end
+
+def fun_l7_n564(x)
+ if (x < 1)
+ fun_l8_n109(x)
+ else
+ fun_l8_n401(x)
+ end
+end
+
+def fun_l7_n565(x)
+ if (x < 1)
+ fun_l8_n678(x)
+ else
+ fun_l8_n890(x)
+ end
+end
+
+def fun_l7_n566(x)
+ if (x < 1)
+ fun_l8_n876(x)
+ else
+ fun_l8_n129(x)
+ end
+end
+
+def fun_l7_n567(x)
+ if (x < 1)
+ fun_l8_n908(x)
+ else
+ fun_l8_n979(x)
+ end
+end
+
+def fun_l7_n568(x)
+ if (x < 1)
+ fun_l8_n899(x)
+ else
+ fun_l8_n792(x)
+ end
+end
+
+def fun_l7_n569(x)
+ if (x < 1)
+ fun_l8_n742(x)
+ else
+ fun_l8_n441(x)
+ end
+end
+
+def fun_l7_n570(x)
+ if (x < 1)
+ fun_l8_n338(x)
+ else
+ fun_l8_n877(x)
+ end
+end
+
+def fun_l7_n571(x)
+ if (x < 1)
+ fun_l8_n684(x)
+ else
+ fun_l8_n167(x)
+ end
+end
+
+def fun_l7_n572(x)
+ if (x < 1)
+ fun_l8_n366(x)
+ else
+ fun_l8_n239(x)
+ end
+end
+
+def fun_l7_n573(x)
+ if (x < 1)
+ fun_l8_n925(x)
+ else
+ fun_l8_n648(x)
+ end
+end
+
+def fun_l7_n574(x)
+ if (x < 1)
+ fun_l8_n825(x)
+ else
+ fun_l8_n811(x)
+ end
+end
+
+def fun_l7_n575(x)
+ if (x < 1)
+ fun_l8_n348(x)
+ else
+ fun_l8_n994(x)
+ end
+end
+
+def fun_l7_n576(x)
+ if (x < 1)
+ fun_l8_n721(x)
+ else
+ fun_l8_n584(x)
+ end
+end
+
+def fun_l7_n577(x)
+ if (x < 1)
+ fun_l8_n827(x)
+ else
+ fun_l8_n968(x)
+ end
+end
+
+def fun_l7_n578(x)
+ if (x < 1)
+ fun_l8_n649(x)
+ else
+ fun_l8_n684(x)
+ end
+end
+
+def fun_l7_n579(x)
+ if (x < 1)
+ fun_l8_n43(x)
+ else
+ fun_l8_n183(x)
+ end
+end
+
+def fun_l7_n580(x)
+ if (x < 1)
+ fun_l8_n516(x)
+ else
+ fun_l8_n893(x)
+ end
+end
+
+def fun_l7_n581(x)
+ if (x < 1)
+ fun_l8_n334(x)
+ else
+ fun_l8_n677(x)
+ end
+end
+
+def fun_l7_n582(x)
+ if (x < 1)
+ fun_l8_n731(x)
+ else
+ fun_l8_n922(x)
+ end
+end
+
+def fun_l7_n583(x)
+ if (x < 1)
+ fun_l8_n653(x)
+ else
+ fun_l8_n403(x)
+ end
+end
+
+def fun_l7_n584(x)
+ if (x < 1)
+ fun_l8_n534(x)
+ else
+ fun_l8_n155(x)
+ end
+end
+
+def fun_l7_n585(x)
+ if (x < 1)
+ fun_l8_n1(x)
+ else
+ fun_l8_n903(x)
+ end
+end
+
+def fun_l7_n586(x)
+ if (x < 1)
+ fun_l8_n956(x)
+ else
+ fun_l8_n182(x)
+ end
+end
+
+def fun_l7_n587(x)
+ if (x < 1)
+ fun_l8_n590(x)
+ else
+ fun_l8_n707(x)
+ end
+end
+
+def fun_l7_n588(x)
+ if (x < 1)
+ fun_l8_n74(x)
+ else
+ fun_l8_n612(x)
+ end
+end
+
+def fun_l7_n589(x)
+ if (x < 1)
+ fun_l8_n17(x)
+ else
+ fun_l8_n193(x)
+ end
+end
+
+def fun_l7_n590(x)
+ if (x < 1)
+ fun_l8_n650(x)
+ else
+ fun_l8_n863(x)
+ end
+end
+
+def fun_l7_n591(x)
+ if (x < 1)
+ fun_l8_n974(x)
+ else
+ fun_l8_n932(x)
+ end
+end
+
+def fun_l7_n592(x)
+ if (x < 1)
+ fun_l8_n17(x)
+ else
+ fun_l8_n537(x)
+ end
+end
+
+def fun_l7_n593(x)
+ if (x < 1)
+ fun_l8_n118(x)
+ else
+ fun_l8_n588(x)
+ end
+end
+
+def fun_l7_n594(x)
+ if (x < 1)
+ fun_l8_n241(x)
+ else
+ fun_l8_n929(x)
+ end
+end
+
+def fun_l7_n595(x)
+ if (x < 1)
+ fun_l8_n667(x)
+ else
+ fun_l8_n251(x)
+ end
+end
+
+def fun_l7_n596(x)
+ if (x < 1)
+ fun_l8_n473(x)
+ else
+ fun_l8_n189(x)
+ end
+end
+
+def fun_l7_n597(x)
+ if (x < 1)
+ fun_l8_n687(x)
+ else
+ fun_l8_n666(x)
+ end
+end
+
+def fun_l7_n598(x)
+ if (x < 1)
+ fun_l8_n700(x)
+ else
+ fun_l8_n294(x)
+ end
+end
+
+def fun_l7_n599(x)
+ if (x < 1)
+ fun_l8_n144(x)
+ else
+ fun_l8_n656(x)
+ end
+end
+
+def fun_l7_n600(x)
+ if (x < 1)
+ fun_l8_n375(x)
+ else
+ fun_l8_n571(x)
+ end
+end
+
+def fun_l7_n601(x)
+ if (x < 1)
+ fun_l8_n506(x)
+ else
+ fun_l8_n212(x)
+ end
+end
+
+def fun_l7_n602(x)
+ if (x < 1)
+ fun_l8_n770(x)
+ else
+ fun_l8_n491(x)
+ end
+end
+
+def fun_l7_n603(x)
+ if (x < 1)
+ fun_l8_n325(x)
+ else
+ fun_l8_n660(x)
+ end
+end
+
+def fun_l7_n604(x)
+ if (x < 1)
+ fun_l8_n255(x)
+ else
+ fun_l8_n842(x)
+ end
+end
+
+def fun_l7_n605(x)
+ if (x < 1)
+ fun_l8_n149(x)
+ else
+ fun_l8_n648(x)
+ end
+end
+
+def fun_l7_n606(x)
+ if (x < 1)
+ fun_l8_n845(x)
+ else
+ fun_l8_n248(x)
+ end
+end
+
+def fun_l7_n607(x)
+ if (x < 1)
+ fun_l8_n484(x)
+ else
+ fun_l8_n333(x)
+ end
+end
+
+def fun_l7_n608(x)
+ if (x < 1)
+ fun_l8_n287(x)
+ else
+ fun_l8_n341(x)
+ end
+end
+
+def fun_l7_n609(x)
+ if (x < 1)
+ fun_l8_n873(x)
+ else
+ fun_l8_n113(x)
+ end
+end
+
+def fun_l7_n610(x)
+ if (x < 1)
+ fun_l8_n45(x)
+ else
+ fun_l8_n994(x)
+ end
+end
+
+def fun_l7_n611(x)
+ if (x < 1)
+ fun_l8_n427(x)
+ else
+ fun_l8_n359(x)
+ end
+end
+
+def fun_l7_n612(x)
+ if (x < 1)
+ fun_l8_n433(x)
+ else
+ fun_l8_n189(x)
+ end
+end
+
+def fun_l7_n613(x)
+ if (x < 1)
+ fun_l8_n25(x)
+ else
+ fun_l8_n564(x)
+ end
+end
+
+def fun_l7_n614(x)
+ if (x < 1)
+ fun_l8_n789(x)
+ else
+ fun_l8_n441(x)
+ end
+end
+
+def fun_l7_n615(x)
+ if (x < 1)
+ fun_l8_n353(x)
+ else
+ fun_l8_n217(x)
+ end
+end
+
+def fun_l7_n616(x)
+ if (x < 1)
+ fun_l8_n334(x)
+ else
+ fun_l8_n559(x)
+ end
+end
+
+def fun_l7_n617(x)
+ if (x < 1)
+ fun_l8_n709(x)
+ else
+ fun_l8_n764(x)
+ end
+end
+
+def fun_l7_n618(x)
+ if (x < 1)
+ fun_l8_n710(x)
+ else
+ fun_l8_n307(x)
+ end
+end
+
+def fun_l7_n619(x)
+ if (x < 1)
+ fun_l8_n246(x)
+ else
+ fun_l8_n88(x)
+ end
+end
+
+def fun_l7_n620(x)
+ if (x < 1)
+ fun_l8_n259(x)
+ else
+ fun_l8_n813(x)
+ end
+end
+
+def fun_l7_n621(x)
+ if (x < 1)
+ fun_l8_n250(x)
+ else
+ fun_l8_n566(x)
+ end
+end
+
+def fun_l7_n622(x)
+ if (x < 1)
+ fun_l8_n223(x)
+ else
+ fun_l8_n627(x)
+ end
+end
+
+def fun_l7_n623(x)
+ if (x < 1)
+ fun_l8_n345(x)
+ else
+ fun_l8_n604(x)
+ end
+end
+
+def fun_l7_n624(x)
+ if (x < 1)
+ fun_l8_n405(x)
+ else
+ fun_l8_n850(x)
+ end
+end
+
+def fun_l7_n625(x)
+ if (x < 1)
+ fun_l8_n278(x)
+ else
+ fun_l8_n643(x)
+ end
+end
+
+def fun_l7_n626(x)
+ if (x < 1)
+ fun_l8_n359(x)
+ else
+ fun_l8_n167(x)
+ end
+end
+
+def fun_l7_n627(x)
+ if (x < 1)
+ fun_l8_n589(x)
+ else
+ fun_l8_n656(x)
+ end
+end
+
+def fun_l7_n628(x)
+ if (x < 1)
+ fun_l8_n612(x)
+ else
+ fun_l8_n227(x)
+ end
+end
+
+def fun_l7_n629(x)
+ if (x < 1)
+ fun_l8_n845(x)
+ else
+ fun_l8_n469(x)
+ end
+end
+
+def fun_l7_n630(x)
+ if (x < 1)
+ fun_l8_n833(x)
+ else
+ fun_l8_n92(x)
+ end
+end
+
+def fun_l7_n631(x)
+ if (x < 1)
+ fun_l8_n411(x)
+ else
+ fun_l8_n815(x)
+ end
+end
+
+def fun_l7_n632(x)
+ if (x < 1)
+ fun_l8_n844(x)
+ else
+ fun_l8_n349(x)
+ end
+end
+
+def fun_l7_n633(x)
+ if (x < 1)
+ fun_l8_n333(x)
+ else
+ fun_l8_n468(x)
+ end
+end
+
+def fun_l7_n634(x)
+ if (x < 1)
+ fun_l8_n12(x)
+ else
+ fun_l8_n727(x)
+ end
+end
+
+def fun_l7_n635(x)
+ if (x < 1)
+ fun_l8_n65(x)
+ else
+ fun_l8_n729(x)
+ end
+end
+
+def fun_l7_n636(x)
+ if (x < 1)
+ fun_l8_n54(x)
+ else
+ fun_l8_n524(x)
+ end
+end
+
+def fun_l7_n637(x)
+ if (x < 1)
+ fun_l8_n547(x)
+ else
+ fun_l8_n220(x)
+ end
+end
+
+def fun_l7_n638(x)
+ if (x < 1)
+ fun_l8_n679(x)
+ else
+ fun_l8_n693(x)
+ end
+end
+
+def fun_l7_n639(x)
+ if (x < 1)
+ fun_l8_n428(x)
+ else
+ fun_l8_n938(x)
+ end
+end
+
+def fun_l7_n640(x)
+ if (x < 1)
+ fun_l8_n779(x)
+ else
+ fun_l8_n323(x)
+ end
+end
+
+def fun_l7_n641(x)
+ if (x < 1)
+ fun_l8_n254(x)
+ else
+ fun_l8_n443(x)
+ end
+end
+
+def fun_l7_n642(x)
+ if (x < 1)
+ fun_l8_n623(x)
+ else
+ fun_l8_n361(x)
+ end
+end
+
+def fun_l7_n643(x)
+ if (x < 1)
+ fun_l8_n524(x)
+ else
+ fun_l8_n19(x)
+ end
+end
+
+def fun_l7_n644(x)
+ if (x < 1)
+ fun_l8_n77(x)
+ else
+ fun_l8_n696(x)
+ end
+end
+
+def fun_l7_n645(x)
+ if (x < 1)
+ fun_l8_n468(x)
+ else
+ fun_l8_n819(x)
+ end
+end
+
+def fun_l7_n646(x)
+ if (x < 1)
+ fun_l8_n319(x)
+ else
+ fun_l8_n921(x)
+ end
+end
+
+def fun_l7_n647(x)
+ if (x < 1)
+ fun_l8_n681(x)
+ else
+ fun_l8_n925(x)
+ end
+end
+
+def fun_l7_n648(x)
+ if (x < 1)
+ fun_l8_n146(x)
+ else
+ fun_l8_n451(x)
+ end
+end
+
+def fun_l7_n649(x)
+ if (x < 1)
+ fun_l8_n871(x)
+ else
+ fun_l8_n707(x)
+ end
+end
+
+def fun_l7_n650(x)
+ if (x < 1)
+ fun_l8_n782(x)
+ else
+ fun_l8_n556(x)
+ end
+end
+
+def fun_l7_n651(x)
+ if (x < 1)
+ fun_l8_n721(x)
+ else
+ fun_l8_n80(x)
+ end
+end
+
+def fun_l7_n652(x)
+ if (x < 1)
+ fun_l8_n110(x)
+ else
+ fun_l8_n529(x)
+ end
+end
+
+def fun_l7_n653(x)
+ if (x < 1)
+ fun_l8_n107(x)
+ else
+ fun_l8_n876(x)
+ end
+end
+
+def fun_l7_n654(x)
+ if (x < 1)
+ fun_l8_n902(x)
+ else
+ fun_l8_n45(x)
+ end
+end
+
+def fun_l7_n655(x)
+ if (x < 1)
+ fun_l8_n714(x)
+ else
+ fun_l8_n939(x)
+ end
+end
+
+def fun_l7_n656(x)
+ if (x < 1)
+ fun_l8_n761(x)
+ else
+ fun_l8_n940(x)
+ end
+end
+
+def fun_l7_n657(x)
+ if (x < 1)
+ fun_l8_n165(x)
+ else
+ fun_l8_n779(x)
+ end
+end
+
+def fun_l7_n658(x)
+ if (x < 1)
+ fun_l8_n848(x)
+ else
+ fun_l8_n307(x)
+ end
+end
+
+def fun_l7_n659(x)
+ if (x < 1)
+ fun_l8_n414(x)
+ else
+ fun_l8_n855(x)
+ end
+end
+
+def fun_l7_n660(x)
+ if (x < 1)
+ fun_l8_n963(x)
+ else
+ fun_l8_n887(x)
+ end
+end
+
+def fun_l7_n661(x)
+ if (x < 1)
+ fun_l8_n71(x)
+ else
+ fun_l8_n249(x)
+ end
+end
+
+def fun_l7_n662(x)
+ if (x < 1)
+ fun_l8_n426(x)
+ else
+ fun_l8_n977(x)
+ end
+end
+
+def fun_l7_n663(x)
+ if (x < 1)
+ fun_l8_n924(x)
+ else
+ fun_l8_n606(x)
+ end
+end
+
+def fun_l7_n664(x)
+ if (x < 1)
+ fun_l8_n88(x)
+ else
+ fun_l8_n718(x)
+ end
+end
+
+def fun_l7_n665(x)
+ if (x < 1)
+ fun_l8_n611(x)
+ else
+ fun_l8_n898(x)
+ end
+end
+
+def fun_l7_n666(x)
+ if (x < 1)
+ fun_l8_n656(x)
+ else
+ fun_l8_n116(x)
+ end
+end
+
+def fun_l7_n667(x)
+ if (x < 1)
+ fun_l8_n196(x)
+ else
+ fun_l8_n688(x)
+ end
+end
+
+def fun_l7_n668(x)
+ if (x < 1)
+ fun_l8_n873(x)
+ else
+ fun_l8_n561(x)
+ end
+end
+
+def fun_l7_n669(x)
+ if (x < 1)
+ fun_l8_n947(x)
+ else
+ fun_l8_n64(x)
+ end
+end
+
+def fun_l7_n670(x)
+ if (x < 1)
+ fun_l8_n309(x)
+ else
+ fun_l8_n708(x)
+ end
+end
+
+def fun_l7_n671(x)
+ if (x < 1)
+ fun_l8_n699(x)
+ else
+ fun_l8_n218(x)
+ end
+end
+
+def fun_l7_n672(x)
+ if (x < 1)
+ fun_l8_n930(x)
+ else
+ fun_l8_n387(x)
+ end
+end
+
+def fun_l7_n673(x)
+ if (x < 1)
+ fun_l8_n598(x)
+ else
+ fun_l8_n245(x)
+ end
+end
+
+def fun_l7_n674(x)
+ if (x < 1)
+ fun_l8_n411(x)
+ else
+ fun_l8_n236(x)
+ end
+end
+
+def fun_l7_n675(x)
+ if (x < 1)
+ fun_l8_n193(x)
+ else
+ fun_l8_n61(x)
+ end
+end
+
+def fun_l7_n676(x)
+ if (x < 1)
+ fun_l8_n2(x)
+ else
+ fun_l8_n253(x)
+ end
+end
+
+def fun_l7_n677(x)
+ if (x < 1)
+ fun_l8_n839(x)
+ else
+ fun_l8_n919(x)
+ end
+end
+
+def fun_l7_n678(x)
+ if (x < 1)
+ fun_l8_n643(x)
+ else
+ fun_l8_n245(x)
+ end
+end
+
+def fun_l7_n679(x)
+ if (x < 1)
+ fun_l8_n625(x)
+ else
+ fun_l8_n690(x)
+ end
+end
+
+def fun_l7_n680(x)
+ if (x < 1)
+ fun_l8_n899(x)
+ else
+ fun_l8_n307(x)
+ end
+end
+
+def fun_l7_n681(x)
+ if (x < 1)
+ fun_l8_n894(x)
+ else
+ fun_l8_n92(x)
+ end
+end
+
+def fun_l7_n682(x)
+ if (x < 1)
+ fun_l8_n139(x)
+ else
+ fun_l8_n252(x)
+ end
+end
+
+def fun_l7_n683(x)
+ if (x < 1)
+ fun_l8_n978(x)
+ else
+ fun_l8_n84(x)
+ end
+end
+
+def fun_l7_n684(x)
+ if (x < 1)
+ fun_l8_n426(x)
+ else
+ fun_l8_n329(x)
+ end
+end
+
+def fun_l7_n685(x)
+ if (x < 1)
+ fun_l8_n241(x)
+ else
+ fun_l8_n780(x)
+ end
+end
+
+def fun_l7_n686(x)
+ if (x < 1)
+ fun_l8_n793(x)
+ else
+ fun_l8_n534(x)
+ end
+end
+
+def fun_l7_n687(x)
+ if (x < 1)
+ fun_l8_n409(x)
+ else
+ fun_l8_n152(x)
+ end
+end
+
+def fun_l7_n688(x)
+ if (x < 1)
+ fun_l8_n838(x)
+ else
+ fun_l8_n555(x)
+ end
+end
+
+def fun_l7_n689(x)
+ if (x < 1)
+ fun_l8_n634(x)
+ else
+ fun_l8_n27(x)
+ end
+end
+
+def fun_l7_n690(x)
+ if (x < 1)
+ fun_l8_n629(x)
+ else
+ fun_l8_n448(x)
+ end
+end
+
+def fun_l7_n691(x)
+ if (x < 1)
+ fun_l8_n487(x)
+ else
+ fun_l8_n293(x)
+ end
+end
+
+def fun_l7_n692(x)
+ if (x < 1)
+ fun_l8_n739(x)
+ else
+ fun_l8_n472(x)
+ end
+end
+
+def fun_l7_n693(x)
+ if (x < 1)
+ fun_l8_n619(x)
+ else
+ fun_l8_n642(x)
+ end
+end
+
+def fun_l7_n694(x)
+ if (x < 1)
+ fun_l8_n123(x)
+ else
+ fun_l8_n880(x)
+ end
+end
+
+def fun_l7_n695(x)
+ if (x < 1)
+ fun_l8_n695(x)
+ else
+ fun_l8_n364(x)
+ end
+end
+
+def fun_l7_n696(x)
+ if (x < 1)
+ fun_l8_n610(x)
+ else
+ fun_l8_n798(x)
+ end
+end
+
+def fun_l7_n697(x)
+ if (x < 1)
+ fun_l8_n396(x)
+ else
+ fun_l8_n704(x)
+ end
+end
+
+def fun_l7_n698(x)
+ if (x < 1)
+ fun_l8_n759(x)
+ else
+ fun_l8_n880(x)
+ end
+end
+
+def fun_l7_n699(x)
+ if (x < 1)
+ fun_l8_n885(x)
+ else
+ fun_l8_n139(x)
+ end
+end
+
+def fun_l7_n700(x)
+ if (x < 1)
+ fun_l8_n244(x)
+ else
+ fun_l8_n307(x)
+ end
+end
+
+def fun_l7_n701(x)
+ if (x < 1)
+ fun_l8_n698(x)
+ else
+ fun_l8_n949(x)
+ end
+end
+
+def fun_l7_n702(x)
+ if (x < 1)
+ fun_l8_n585(x)
+ else
+ fun_l8_n211(x)
+ end
+end
+
+def fun_l7_n703(x)
+ if (x < 1)
+ fun_l8_n834(x)
+ else
+ fun_l8_n111(x)
+ end
+end
+
+def fun_l7_n704(x)
+ if (x < 1)
+ fun_l8_n690(x)
+ else
+ fun_l8_n981(x)
+ end
+end
+
+def fun_l7_n705(x)
+ if (x < 1)
+ fun_l8_n377(x)
+ else
+ fun_l8_n392(x)
+ end
+end
+
+def fun_l7_n706(x)
+ if (x < 1)
+ fun_l8_n988(x)
+ else
+ fun_l8_n759(x)
+ end
+end
+
+def fun_l7_n707(x)
+ if (x < 1)
+ fun_l8_n917(x)
+ else
+ fun_l8_n326(x)
+ end
+end
+
+def fun_l7_n708(x)
+ if (x < 1)
+ fun_l8_n662(x)
+ else
+ fun_l8_n488(x)
+ end
+end
+
+def fun_l7_n709(x)
+ if (x < 1)
+ fun_l8_n530(x)
+ else
+ fun_l8_n663(x)
+ end
+end
+
+def fun_l7_n710(x)
+ if (x < 1)
+ fun_l8_n344(x)
+ else
+ fun_l8_n282(x)
+ end
+end
+
+def fun_l7_n711(x)
+ if (x < 1)
+ fun_l8_n908(x)
+ else
+ fun_l8_n405(x)
+ end
+end
+
+def fun_l7_n712(x)
+ if (x < 1)
+ fun_l8_n332(x)
+ else
+ fun_l8_n660(x)
+ end
+end
+
+def fun_l7_n713(x)
+ if (x < 1)
+ fun_l8_n37(x)
+ else
+ fun_l8_n689(x)
+ end
+end
+
+def fun_l7_n714(x)
+ if (x < 1)
+ fun_l8_n642(x)
+ else
+ fun_l8_n996(x)
+ end
+end
+
+def fun_l7_n715(x)
+ if (x < 1)
+ fun_l8_n322(x)
+ else
+ fun_l8_n609(x)
+ end
+end
+
+def fun_l7_n716(x)
+ if (x < 1)
+ fun_l8_n567(x)
+ else
+ fun_l8_n492(x)
+ end
+end
+
+def fun_l7_n717(x)
+ if (x < 1)
+ fun_l8_n934(x)
+ else
+ fun_l8_n353(x)
+ end
+end
+
+def fun_l7_n718(x)
+ if (x < 1)
+ fun_l8_n572(x)
+ else
+ fun_l8_n859(x)
+ end
+end
+
+def fun_l7_n719(x)
+ if (x < 1)
+ fun_l8_n777(x)
+ else
+ fun_l8_n810(x)
+ end
+end
+
+def fun_l7_n720(x)
+ if (x < 1)
+ fun_l8_n121(x)
+ else
+ fun_l8_n847(x)
+ end
+end
+
+def fun_l7_n721(x)
+ if (x < 1)
+ fun_l8_n177(x)
+ else
+ fun_l8_n484(x)
+ end
+end
+
+def fun_l7_n722(x)
+ if (x < 1)
+ fun_l8_n73(x)
+ else
+ fun_l8_n795(x)
+ end
+end
+
+def fun_l7_n723(x)
+ if (x < 1)
+ fun_l8_n950(x)
+ else
+ fun_l8_n382(x)
+ end
+end
+
+def fun_l7_n724(x)
+ if (x < 1)
+ fun_l8_n349(x)
+ else
+ fun_l8_n644(x)
+ end
+end
+
+def fun_l7_n725(x)
+ if (x < 1)
+ fun_l8_n480(x)
+ else
+ fun_l8_n262(x)
+ end
+end
+
+def fun_l7_n726(x)
+ if (x < 1)
+ fun_l8_n39(x)
+ else
+ fun_l8_n543(x)
+ end
+end
+
+def fun_l7_n727(x)
+ if (x < 1)
+ fun_l8_n934(x)
+ else
+ fun_l8_n440(x)
+ end
+end
+
+def fun_l7_n728(x)
+ if (x < 1)
+ fun_l8_n312(x)
+ else
+ fun_l8_n341(x)
+ end
+end
+
+def fun_l7_n729(x)
+ if (x < 1)
+ fun_l8_n284(x)
+ else
+ fun_l8_n884(x)
+ end
+end
+
+def fun_l7_n730(x)
+ if (x < 1)
+ fun_l8_n841(x)
+ else
+ fun_l8_n221(x)
+ end
+end
+
+def fun_l7_n731(x)
+ if (x < 1)
+ fun_l8_n719(x)
+ else
+ fun_l8_n907(x)
+ end
+end
+
+def fun_l7_n732(x)
+ if (x < 1)
+ fun_l8_n422(x)
+ else
+ fun_l8_n65(x)
+ end
+end
+
+def fun_l7_n733(x)
+ if (x < 1)
+ fun_l8_n324(x)
+ else
+ fun_l8_n811(x)
+ end
+end
+
+def fun_l7_n734(x)
+ if (x < 1)
+ fun_l8_n643(x)
+ else
+ fun_l8_n622(x)
+ end
+end
+
+def fun_l7_n735(x)
+ if (x < 1)
+ fun_l8_n20(x)
+ else
+ fun_l8_n205(x)
+ end
+end
+
+def fun_l7_n736(x)
+ if (x < 1)
+ fun_l8_n487(x)
+ else
+ fun_l8_n908(x)
+ end
+end
+
+def fun_l7_n737(x)
+ if (x < 1)
+ fun_l8_n576(x)
+ else
+ fun_l8_n789(x)
+ end
+end
+
+def fun_l7_n738(x)
+ if (x < 1)
+ fun_l8_n353(x)
+ else
+ fun_l8_n286(x)
+ end
+end
+
+def fun_l7_n739(x)
+ if (x < 1)
+ fun_l8_n614(x)
+ else
+ fun_l8_n121(x)
+ end
+end
+
+def fun_l7_n740(x)
+ if (x < 1)
+ fun_l8_n79(x)
+ else
+ fun_l8_n637(x)
+ end
+end
+
+def fun_l7_n741(x)
+ if (x < 1)
+ fun_l8_n808(x)
+ else
+ fun_l8_n461(x)
+ end
+end
+
+def fun_l7_n742(x)
+ if (x < 1)
+ fun_l8_n590(x)
+ else
+ fun_l8_n198(x)
+ end
+end
+
+def fun_l7_n743(x)
+ if (x < 1)
+ fun_l8_n498(x)
+ else
+ fun_l8_n379(x)
+ end
+end
+
+def fun_l7_n744(x)
+ if (x < 1)
+ fun_l8_n599(x)
+ else
+ fun_l8_n359(x)
+ end
+end
+
+def fun_l7_n745(x)
+ if (x < 1)
+ fun_l8_n898(x)
+ else
+ fun_l8_n520(x)
+ end
+end
+
+def fun_l7_n746(x)
+ if (x < 1)
+ fun_l8_n835(x)
+ else
+ fun_l8_n131(x)
+ end
+end
+
+def fun_l7_n747(x)
+ if (x < 1)
+ fun_l8_n648(x)
+ else
+ fun_l8_n248(x)
+ end
+end
+
+def fun_l7_n748(x)
+ if (x < 1)
+ fun_l8_n451(x)
+ else
+ fun_l8_n352(x)
+ end
+end
+
+def fun_l7_n749(x)
+ if (x < 1)
+ fun_l8_n69(x)
+ else
+ fun_l8_n974(x)
+ end
+end
+
+def fun_l7_n750(x)
+ if (x < 1)
+ fun_l8_n108(x)
+ else
+ fun_l8_n744(x)
+ end
+end
+
+def fun_l7_n751(x)
+ if (x < 1)
+ fun_l8_n171(x)
+ else
+ fun_l8_n305(x)
+ end
+end
+
+def fun_l7_n752(x)
+ if (x < 1)
+ fun_l8_n180(x)
+ else
+ fun_l8_n293(x)
+ end
+end
+
+def fun_l7_n753(x)
+ if (x < 1)
+ fun_l8_n555(x)
+ else
+ fun_l8_n882(x)
+ end
+end
+
+def fun_l7_n754(x)
+ if (x < 1)
+ fun_l8_n756(x)
+ else
+ fun_l8_n604(x)
+ end
+end
+
+def fun_l7_n755(x)
+ if (x < 1)
+ fun_l8_n782(x)
+ else
+ fun_l8_n708(x)
+ end
+end
+
+def fun_l7_n756(x)
+ if (x < 1)
+ fun_l8_n65(x)
+ else
+ fun_l8_n474(x)
+ end
+end
+
+def fun_l7_n757(x)
+ if (x < 1)
+ fun_l8_n43(x)
+ else
+ fun_l8_n892(x)
+ end
+end
+
+def fun_l7_n758(x)
+ if (x < 1)
+ fun_l8_n90(x)
+ else
+ fun_l8_n968(x)
+ end
+end
+
+def fun_l7_n759(x)
+ if (x < 1)
+ fun_l8_n599(x)
+ else
+ fun_l8_n505(x)
+ end
+end
+
+def fun_l7_n760(x)
+ if (x < 1)
+ fun_l8_n344(x)
+ else
+ fun_l8_n122(x)
+ end
+end
+
+def fun_l7_n761(x)
+ if (x < 1)
+ fun_l8_n289(x)
+ else
+ fun_l8_n867(x)
+ end
+end
+
+def fun_l7_n762(x)
+ if (x < 1)
+ fun_l8_n107(x)
+ else
+ fun_l8_n950(x)
+ end
+end
+
+def fun_l7_n763(x)
+ if (x < 1)
+ fun_l8_n405(x)
+ else
+ fun_l8_n178(x)
+ end
+end
+
+def fun_l7_n764(x)
+ if (x < 1)
+ fun_l8_n91(x)
+ else
+ fun_l8_n760(x)
+ end
+end
+
+def fun_l7_n765(x)
+ if (x < 1)
+ fun_l8_n268(x)
+ else
+ fun_l8_n451(x)
+ end
+end
+
+def fun_l7_n766(x)
+ if (x < 1)
+ fun_l8_n693(x)
+ else
+ fun_l8_n150(x)
+ end
+end
+
+def fun_l7_n767(x)
+ if (x < 1)
+ fun_l8_n622(x)
+ else
+ fun_l8_n114(x)
+ end
+end
+
+def fun_l7_n768(x)
+ if (x < 1)
+ fun_l8_n662(x)
+ else
+ fun_l8_n514(x)
+ end
+end
+
+def fun_l7_n769(x)
+ if (x < 1)
+ fun_l8_n440(x)
+ else
+ fun_l8_n537(x)
+ end
+end
+
+def fun_l7_n770(x)
+ if (x < 1)
+ fun_l8_n207(x)
+ else
+ fun_l8_n513(x)
+ end
+end
+
+def fun_l7_n771(x)
+ if (x < 1)
+ fun_l8_n394(x)
+ else
+ fun_l8_n857(x)
+ end
+end
+
+def fun_l7_n772(x)
+ if (x < 1)
+ fun_l8_n635(x)
+ else
+ fun_l8_n696(x)
+ end
+end
+
+def fun_l7_n773(x)
+ if (x < 1)
+ fun_l8_n687(x)
+ else
+ fun_l8_n926(x)
+ end
+end
+
+def fun_l7_n774(x)
+ if (x < 1)
+ fun_l8_n54(x)
+ else
+ fun_l8_n410(x)
+ end
+end
+
+def fun_l7_n775(x)
+ if (x < 1)
+ fun_l8_n825(x)
+ else
+ fun_l8_n339(x)
+ end
+end
+
+def fun_l7_n776(x)
+ if (x < 1)
+ fun_l8_n130(x)
+ else
+ fun_l8_n48(x)
+ end
+end
+
+def fun_l7_n777(x)
+ if (x < 1)
+ fun_l8_n627(x)
+ else
+ fun_l8_n191(x)
+ end
+end
+
+def fun_l7_n778(x)
+ if (x < 1)
+ fun_l8_n843(x)
+ else
+ fun_l8_n627(x)
+ end
+end
+
+def fun_l7_n779(x)
+ if (x < 1)
+ fun_l8_n950(x)
+ else
+ fun_l8_n247(x)
+ end
+end
+
+def fun_l7_n780(x)
+ if (x < 1)
+ fun_l8_n865(x)
+ else
+ fun_l8_n540(x)
+ end
+end
+
+def fun_l7_n781(x)
+ if (x < 1)
+ fun_l8_n440(x)
+ else
+ fun_l8_n326(x)
+ end
+end
+
+def fun_l7_n782(x)
+ if (x < 1)
+ fun_l8_n463(x)
+ else
+ fun_l8_n808(x)
+ end
+end
+
+def fun_l7_n783(x)
+ if (x < 1)
+ fun_l8_n44(x)
+ else
+ fun_l8_n888(x)
+ end
+end
+
+def fun_l7_n784(x)
+ if (x < 1)
+ fun_l8_n690(x)
+ else
+ fun_l8_n673(x)
+ end
+end
+
+def fun_l7_n785(x)
+ if (x < 1)
+ fun_l8_n641(x)
+ else
+ fun_l8_n367(x)
+ end
+end
+
+def fun_l7_n786(x)
+ if (x < 1)
+ fun_l8_n193(x)
+ else
+ fun_l8_n764(x)
+ end
+end
+
+def fun_l7_n787(x)
+ if (x < 1)
+ fun_l8_n604(x)
+ else
+ fun_l8_n527(x)
+ end
+end
+
+def fun_l7_n788(x)
+ if (x < 1)
+ fun_l8_n626(x)
+ else
+ fun_l8_n101(x)
+ end
+end
+
+def fun_l7_n789(x)
+ if (x < 1)
+ fun_l8_n152(x)
+ else
+ fun_l8_n9(x)
+ end
+end
+
+def fun_l7_n790(x)
+ if (x < 1)
+ fun_l8_n541(x)
+ else
+ fun_l8_n789(x)
+ end
+end
+
+def fun_l7_n791(x)
+ if (x < 1)
+ fun_l8_n706(x)
+ else
+ fun_l8_n577(x)
+ end
+end
+
+def fun_l7_n792(x)
+ if (x < 1)
+ fun_l8_n480(x)
+ else
+ fun_l8_n284(x)
+ end
+end
+
+def fun_l7_n793(x)
+ if (x < 1)
+ fun_l8_n157(x)
+ else
+ fun_l8_n620(x)
+ end
+end
+
+def fun_l7_n794(x)
+ if (x < 1)
+ fun_l8_n666(x)
+ else
+ fun_l8_n755(x)
+ end
+end
+
+def fun_l7_n795(x)
+ if (x < 1)
+ fun_l8_n487(x)
+ else
+ fun_l8_n20(x)
+ end
+end
+
+def fun_l7_n796(x)
+ if (x < 1)
+ fun_l8_n750(x)
+ else
+ fun_l8_n974(x)
+ end
+end
+
+def fun_l7_n797(x)
+ if (x < 1)
+ fun_l8_n812(x)
+ else
+ fun_l8_n915(x)
+ end
+end
+
+def fun_l7_n798(x)
+ if (x < 1)
+ fun_l8_n297(x)
+ else
+ fun_l8_n8(x)
+ end
+end
+
+def fun_l7_n799(x)
+ if (x < 1)
+ fun_l8_n385(x)
+ else
+ fun_l8_n920(x)
+ end
+end
+
+def fun_l7_n800(x)
+ if (x < 1)
+ fun_l8_n322(x)
+ else
+ fun_l8_n603(x)
+ end
+end
+
+def fun_l7_n801(x)
+ if (x < 1)
+ fun_l8_n825(x)
+ else
+ fun_l8_n702(x)
+ end
+end
+
+def fun_l7_n802(x)
+ if (x < 1)
+ fun_l8_n902(x)
+ else
+ fun_l8_n978(x)
+ end
+end
+
+def fun_l7_n803(x)
+ if (x < 1)
+ fun_l8_n921(x)
+ else
+ fun_l8_n61(x)
+ end
+end
+
+def fun_l7_n804(x)
+ if (x < 1)
+ fun_l8_n171(x)
+ else
+ fun_l8_n630(x)
+ end
+end
+
+def fun_l7_n805(x)
+ if (x < 1)
+ fun_l8_n469(x)
+ else
+ fun_l8_n265(x)
+ end
+end
+
+def fun_l7_n806(x)
+ if (x < 1)
+ fun_l8_n367(x)
+ else
+ fun_l8_n820(x)
+ end
+end
+
+def fun_l7_n807(x)
+ if (x < 1)
+ fun_l8_n242(x)
+ else
+ fun_l8_n707(x)
+ end
+end
+
+def fun_l7_n808(x)
+ if (x < 1)
+ fun_l8_n512(x)
+ else
+ fun_l8_n139(x)
+ end
+end
+
+def fun_l7_n809(x)
+ if (x < 1)
+ fun_l8_n17(x)
+ else
+ fun_l8_n615(x)
+ end
+end
+
+def fun_l7_n810(x)
+ if (x < 1)
+ fun_l8_n600(x)
+ else
+ fun_l8_n6(x)
+ end
+end
+
+def fun_l7_n811(x)
+ if (x < 1)
+ fun_l8_n342(x)
+ else
+ fun_l8_n194(x)
+ end
+end
+
+def fun_l7_n812(x)
+ if (x < 1)
+ fun_l8_n191(x)
+ else
+ fun_l8_n864(x)
+ end
+end
+
+def fun_l7_n813(x)
+ if (x < 1)
+ fun_l8_n577(x)
+ else
+ fun_l8_n113(x)
+ end
+end
+
+def fun_l7_n814(x)
+ if (x < 1)
+ fun_l8_n729(x)
+ else
+ fun_l8_n989(x)
+ end
+end
+
+def fun_l7_n815(x)
+ if (x < 1)
+ fun_l8_n707(x)
+ else
+ fun_l8_n846(x)
+ end
+end
+
+def fun_l7_n816(x)
+ if (x < 1)
+ fun_l8_n874(x)
+ else
+ fun_l8_n790(x)
+ end
+end
+
+def fun_l7_n817(x)
+ if (x < 1)
+ fun_l8_n968(x)
+ else
+ fun_l8_n215(x)
+ end
+end
+
+def fun_l7_n818(x)
+ if (x < 1)
+ fun_l8_n444(x)
+ else
+ fun_l8_n182(x)
+ end
+end
+
+def fun_l7_n819(x)
+ if (x < 1)
+ fun_l8_n103(x)
+ else
+ fun_l8_n134(x)
+ end
+end
+
+def fun_l7_n820(x)
+ if (x < 1)
+ fun_l8_n718(x)
+ else
+ fun_l8_n950(x)
+ end
+end
+
+def fun_l7_n821(x)
+ if (x < 1)
+ fun_l8_n439(x)
+ else
+ fun_l8_n68(x)
+ end
+end
+
+def fun_l7_n822(x)
+ if (x < 1)
+ fun_l8_n961(x)
+ else
+ fun_l8_n593(x)
+ end
+end
+
+def fun_l7_n823(x)
+ if (x < 1)
+ fun_l8_n212(x)
+ else
+ fun_l8_n346(x)
+ end
+end
+
+def fun_l7_n824(x)
+ if (x < 1)
+ fun_l8_n926(x)
+ else
+ fun_l8_n225(x)
+ end
+end
+
+def fun_l7_n825(x)
+ if (x < 1)
+ fun_l8_n880(x)
+ else
+ fun_l8_n527(x)
+ end
+end
+
+def fun_l7_n826(x)
+ if (x < 1)
+ fun_l8_n13(x)
+ else
+ fun_l8_n436(x)
+ end
+end
+
+def fun_l7_n827(x)
+ if (x < 1)
+ fun_l8_n19(x)
+ else
+ fun_l8_n201(x)
+ end
+end
+
+def fun_l7_n828(x)
+ if (x < 1)
+ fun_l8_n568(x)
+ else
+ fun_l8_n450(x)
+ end
+end
+
+def fun_l7_n829(x)
+ if (x < 1)
+ fun_l8_n543(x)
+ else
+ fun_l8_n606(x)
+ end
+end
+
+def fun_l7_n830(x)
+ if (x < 1)
+ fun_l8_n503(x)
+ else
+ fun_l8_n104(x)
+ end
+end
+
+def fun_l7_n831(x)
+ if (x < 1)
+ fun_l8_n185(x)
+ else
+ fun_l8_n1(x)
+ end
+end
+
+def fun_l7_n832(x)
+ if (x < 1)
+ fun_l8_n598(x)
+ else
+ fun_l8_n637(x)
+ end
+end
+
+def fun_l7_n833(x)
+ if (x < 1)
+ fun_l8_n936(x)
+ else
+ fun_l8_n554(x)
+ end
+end
+
+def fun_l7_n834(x)
+ if (x < 1)
+ fun_l8_n864(x)
+ else
+ fun_l8_n766(x)
+ end
+end
+
+def fun_l7_n835(x)
+ if (x < 1)
+ fun_l8_n11(x)
+ else
+ fun_l8_n472(x)
+ end
+end
+
+def fun_l7_n836(x)
+ if (x < 1)
+ fun_l8_n596(x)
+ else
+ fun_l8_n429(x)
+ end
+end
+
+def fun_l7_n837(x)
+ if (x < 1)
+ fun_l8_n643(x)
+ else
+ fun_l8_n61(x)
+ end
+end
+
+def fun_l7_n838(x)
+ if (x < 1)
+ fun_l8_n905(x)
+ else
+ fun_l8_n605(x)
+ end
+end
+
+def fun_l7_n839(x)
+ if (x < 1)
+ fun_l8_n371(x)
+ else
+ fun_l8_n44(x)
+ end
+end
+
+def fun_l7_n840(x)
+ if (x < 1)
+ fun_l8_n195(x)
+ else
+ fun_l8_n368(x)
+ end
+end
+
+def fun_l7_n841(x)
+ if (x < 1)
+ fun_l8_n432(x)
+ else
+ fun_l8_n368(x)
+ end
+end
+
+def fun_l7_n842(x)
+ if (x < 1)
+ fun_l8_n145(x)
+ else
+ fun_l8_n180(x)
+ end
+end
+
+def fun_l7_n843(x)
+ if (x < 1)
+ fun_l8_n124(x)
+ else
+ fun_l8_n358(x)
+ end
+end
+
+def fun_l7_n844(x)
+ if (x < 1)
+ fun_l8_n87(x)
+ else
+ fun_l8_n364(x)
+ end
+end
+
+def fun_l7_n845(x)
+ if (x < 1)
+ fun_l8_n133(x)
+ else
+ fun_l8_n849(x)
+ end
+end
+
+def fun_l7_n846(x)
+ if (x < 1)
+ fun_l8_n686(x)
+ else
+ fun_l8_n556(x)
+ end
+end
+
+def fun_l7_n847(x)
+ if (x < 1)
+ fun_l8_n732(x)
+ else
+ fun_l8_n536(x)
+ end
+end
+
+def fun_l7_n848(x)
+ if (x < 1)
+ fun_l8_n950(x)
+ else
+ fun_l8_n173(x)
+ end
+end
+
+def fun_l7_n849(x)
+ if (x < 1)
+ fun_l8_n694(x)
+ else
+ fun_l8_n747(x)
+ end
+end
+
+def fun_l7_n850(x)
+ if (x < 1)
+ fun_l8_n421(x)
+ else
+ fun_l8_n940(x)
+ end
+end
+
+def fun_l7_n851(x)
+ if (x < 1)
+ fun_l8_n359(x)
+ else
+ fun_l8_n239(x)
+ end
+end
+
+def fun_l7_n852(x)
+ if (x < 1)
+ fun_l8_n731(x)
+ else
+ fun_l8_n530(x)
+ end
+end
+
+def fun_l7_n853(x)
+ if (x < 1)
+ fun_l8_n887(x)
+ else
+ fun_l8_n548(x)
+ end
+end
+
+def fun_l7_n854(x)
+ if (x < 1)
+ fun_l8_n47(x)
+ else
+ fun_l8_n675(x)
+ end
+end
+
+def fun_l7_n855(x)
+ if (x < 1)
+ fun_l8_n534(x)
+ else
+ fun_l8_n34(x)
+ end
+end
+
+def fun_l7_n856(x)
+ if (x < 1)
+ fun_l8_n935(x)
+ else
+ fun_l8_n402(x)
+ end
+end
+
+def fun_l7_n857(x)
+ if (x < 1)
+ fun_l8_n873(x)
+ else
+ fun_l8_n864(x)
+ end
+end
+
+def fun_l7_n858(x)
+ if (x < 1)
+ fun_l8_n325(x)
+ else
+ fun_l8_n495(x)
+ end
+end
+
+def fun_l7_n859(x)
+ if (x < 1)
+ fun_l8_n758(x)
+ else
+ fun_l8_n63(x)
+ end
+end
+
+def fun_l7_n860(x)
+ if (x < 1)
+ fun_l8_n811(x)
+ else
+ fun_l8_n150(x)
+ end
+end
+
+def fun_l7_n861(x)
+ if (x < 1)
+ fun_l8_n666(x)
+ else
+ fun_l8_n282(x)
+ end
+end
+
+def fun_l7_n862(x)
+ if (x < 1)
+ fun_l8_n123(x)
+ else
+ fun_l8_n893(x)
+ end
+end
+
+def fun_l7_n863(x)
+ if (x < 1)
+ fun_l8_n681(x)
+ else
+ fun_l8_n640(x)
+ end
+end
+
+def fun_l7_n864(x)
+ if (x < 1)
+ fun_l8_n861(x)
+ else
+ fun_l8_n922(x)
+ end
+end
+
+def fun_l7_n865(x)
+ if (x < 1)
+ fun_l8_n8(x)
+ else
+ fun_l8_n14(x)
+ end
+end
+
+def fun_l7_n866(x)
+ if (x < 1)
+ fun_l8_n713(x)
+ else
+ fun_l8_n802(x)
+ end
+end
+
+def fun_l7_n867(x)
+ if (x < 1)
+ fun_l8_n654(x)
+ else
+ fun_l8_n540(x)
+ end
+end
+
+def fun_l7_n868(x)
+ if (x < 1)
+ fun_l8_n308(x)
+ else
+ fun_l8_n504(x)
+ end
+end
+
+def fun_l7_n869(x)
+ if (x < 1)
+ fun_l8_n67(x)
+ else
+ fun_l8_n592(x)
+ end
+end
+
+def fun_l7_n870(x)
+ if (x < 1)
+ fun_l8_n295(x)
+ else
+ fun_l8_n585(x)
+ end
+end
+
+def fun_l7_n871(x)
+ if (x < 1)
+ fun_l8_n121(x)
+ else
+ fun_l8_n797(x)
+ end
+end
+
+def fun_l7_n872(x)
+ if (x < 1)
+ fun_l8_n234(x)
+ else
+ fun_l8_n834(x)
+ end
+end
+
+def fun_l7_n873(x)
+ if (x < 1)
+ fun_l8_n287(x)
+ else
+ fun_l8_n731(x)
+ end
+end
+
+def fun_l7_n874(x)
+ if (x < 1)
+ fun_l8_n460(x)
+ else
+ fun_l8_n261(x)
+ end
+end
+
+def fun_l7_n875(x)
+ if (x < 1)
+ fun_l8_n211(x)
+ else
+ fun_l8_n199(x)
+ end
+end
+
+def fun_l7_n876(x)
+ if (x < 1)
+ fun_l8_n256(x)
+ else
+ fun_l8_n547(x)
+ end
+end
+
+def fun_l7_n877(x)
+ if (x < 1)
+ fun_l8_n560(x)
+ else
+ fun_l8_n202(x)
+ end
+end
+
+def fun_l7_n878(x)
+ if (x < 1)
+ fun_l8_n5(x)
+ else
+ fun_l8_n955(x)
+ end
+end
+
+def fun_l7_n879(x)
+ if (x < 1)
+ fun_l8_n908(x)
+ else
+ fun_l8_n677(x)
+ end
+end
+
+def fun_l7_n880(x)
+ if (x < 1)
+ fun_l8_n366(x)
+ else
+ fun_l8_n226(x)
+ end
+end
+
+def fun_l7_n881(x)
+ if (x < 1)
+ fun_l8_n970(x)
+ else
+ fun_l8_n939(x)
+ end
+end
+
+def fun_l7_n882(x)
+ if (x < 1)
+ fun_l8_n562(x)
+ else
+ fun_l8_n420(x)
+ end
+end
+
+def fun_l7_n883(x)
+ if (x < 1)
+ fun_l8_n377(x)
+ else
+ fun_l8_n35(x)
+ end
+end
+
+def fun_l7_n884(x)
+ if (x < 1)
+ fun_l8_n459(x)
+ else
+ fun_l8_n155(x)
+ end
+end
+
+def fun_l7_n885(x)
+ if (x < 1)
+ fun_l8_n257(x)
+ else
+ fun_l8_n704(x)
+ end
+end
+
+def fun_l7_n886(x)
+ if (x < 1)
+ fun_l8_n393(x)
+ else
+ fun_l8_n741(x)
+ end
+end
+
+def fun_l7_n887(x)
+ if (x < 1)
+ fun_l8_n333(x)
+ else
+ fun_l8_n225(x)
+ end
+end
+
+def fun_l7_n888(x)
+ if (x < 1)
+ fun_l8_n614(x)
+ else
+ fun_l8_n106(x)
+ end
+end
+
+def fun_l7_n889(x)
+ if (x < 1)
+ fun_l8_n229(x)
+ else
+ fun_l8_n519(x)
+ end
+end
+
+def fun_l7_n890(x)
+ if (x < 1)
+ fun_l8_n651(x)
+ else
+ fun_l8_n68(x)
+ end
+end
+
+def fun_l7_n891(x)
+ if (x < 1)
+ fun_l8_n987(x)
+ else
+ fun_l8_n905(x)
+ end
+end
+
+def fun_l7_n892(x)
+ if (x < 1)
+ fun_l8_n698(x)
+ else
+ fun_l8_n942(x)
+ end
+end
+
+def fun_l7_n893(x)
+ if (x < 1)
+ fun_l8_n559(x)
+ else
+ fun_l8_n613(x)
+ end
+end
+
+def fun_l7_n894(x)
+ if (x < 1)
+ fun_l8_n402(x)
+ else
+ fun_l8_n966(x)
+ end
+end
+
+def fun_l7_n895(x)
+ if (x < 1)
+ fun_l8_n475(x)
+ else
+ fun_l8_n158(x)
+ end
+end
+
+def fun_l7_n896(x)
+ if (x < 1)
+ fun_l8_n420(x)
+ else
+ fun_l8_n113(x)
+ end
+end
+
+def fun_l7_n897(x)
+ if (x < 1)
+ fun_l8_n366(x)
+ else
+ fun_l8_n272(x)
+ end
+end
+
+def fun_l7_n898(x)
+ if (x < 1)
+ fun_l8_n252(x)
+ else
+ fun_l8_n821(x)
+ end
+end
+
+def fun_l7_n899(x)
+ if (x < 1)
+ fun_l8_n736(x)
+ else
+ fun_l8_n174(x)
+ end
+end
+
+def fun_l7_n900(x)
+ if (x < 1)
+ fun_l8_n151(x)
+ else
+ fun_l8_n611(x)
+ end
+end
+
+def fun_l7_n901(x)
+ if (x < 1)
+ fun_l8_n3(x)
+ else
+ fun_l8_n221(x)
+ end
+end
+
+def fun_l7_n902(x)
+ if (x < 1)
+ fun_l8_n319(x)
+ else
+ fun_l8_n930(x)
+ end
+end
+
+def fun_l7_n903(x)
+ if (x < 1)
+ fun_l8_n619(x)
+ else
+ fun_l8_n491(x)
+ end
+end
+
+def fun_l7_n904(x)
+ if (x < 1)
+ fun_l8_n144(x)
+ else
+ fun_l8_n304(x)
+ end
+end
+
+def fun_l7_n905(x)
+ if (x < 1)
+ fun_l8_n721(x)
+ else
+ fun_l8_n996(x)
+ end
+end
+
+def fun_l7_n906(x)
+ if (x < 1)
+ fun_l8_n700(x)
+ else
+ fun_l8_n688(x)
+ end
+end
+
+def fun_l7_n907(x)
+ if (x < 1)
+ fun_l8_n202(x)
+ else
+ fun_l8_n668(x)
+ end
+end
+
+def fun_l7_n908(x)
+ if (x < 1)
+ fun_l8_n514(x)
+ else
+ fun_l8_n306(x)
+ end
+end
+
+def fun_l7_n909(x)
+ if (x < 1)
+ fun_l8_n592(x)
+ else
+ fun_l8_n43(x)
+ end
+end
+
+def fun_l7_n910(x)
+ if (x < 1)
+ fun_l8_n743(x)
+ else
+ fun_l8_n406(x)
+ end
+end
+
+def fun_l7_n911(x)
+ if (x < 1)
+ fun_l8_n801(x)
+ else
+ fun_l8_n91(x)
+ end
+end
+
+def fun_l7_n912(x)
+ if (x < 1)
+ fun_l8_n392(x)
+ else
+ fun_l8_n461(x)
+ end
+end
+
+def fun_l7_n913(x)
+ if (x < 1)
+ fun_l8_n175(x)
+ else
+ fun_l8_n578(x)
+ end
+end
+
+def fun_l7_n914(x)
+ if (x < 1)
+ fun_l8_n155(x)
+ else
+ fun_l8_n795(x)
+ end
+end
+
+def fun_l7_n915(x)
+ if (x < 1)
+ fun_l8_n394(x)
+ else
+ fun_l8_n89(x)
+ end
+end
+
+def fun_l7_n916(x)
+ if (x < 1)
+ fun_l8_n59(x)
+ else
+ fun_l8_n345(x)
+ end
+end
+
+def fun_l7_n917(x)
+ if (x < 1)
+ fun_l8_n450(x)
+ else
+ fun_l8_n136(x)
+ end
+end
+
+def fun_l7_n918(x)
+ if (x < 1)
+ fun_l8_n530(x)
+ else
+ fun_l8_n233(x)
+ end
+end
+
+def fun_l7_n919(x)
+ if (x < 1)
+ fun_l8_n632(x)
+ else
+ fun_l8_n631(x)
+ end
+end
+
+def fun_l7_n920(x)
+ if (x < 1)
+ fun_l8_n252(x)
+ else
+ fun_l8_n95(x)
+ end
+end
+
+def fun_l7_n921(x)
+ if (x < 1)
+ fun_l8_n980(x)
+ else
+ fun_l8_n819(x)
+ end
+end
+
+def fun_l7_n922(x)
+ if (x < 1)
+ fun_l8_n866(x)
+ else
+ fun_l8_n652(x)
+ end
+end
+
+def fun_l7_n923(x)
+ if (x < 1)
+ fun_l8_n239(x)
+ else
+ fun_l8_n83(x)
+ end
+end
+
+def fun_l7_n924(x)
+ if (x < 1)
+ fun_l8_n162(x)
+ else
+ fun_l8_n193(x)
+ end
+end
+
+def fun_l7_n925(x)
+ if (x < 1)
+ fun_l8_n78(x)
+ else
+ fun_l8_n546(x)
+ end
+end
+
+def fun_l7_n926(x)
+ if (x < 1)
+ fun_l8_n102(x)
+ else
+ fun_l8_n847(x)
+ end
+end
+
+def fun_l7_n927(x)
+ if (x < 1)
+ fun_l8_n84(x)
+ else
+ fun_l8_n257(x)
+ end
+end
+
+def fun_l7_n928(x)
+ if (x < 1)
+ fun_l8_n195(x)
+ else
+ fun_l8_n200(x)
+ end
+end
+
+def fun_l7_n929(x)
+ if (x < 1)
+ fun_l8_n245(x)
+ else
+ fun_l8_n926(x)
+ end
+end
+
+def fun_l7_n930(x)
+ if (x < 1)
+ fun_l8_n651(x)
+ else
+ fun_l8_n308(x)
+ end
+end
+
+def fun_l7_n931(x)
+ if (x < 1)
+ fun_l8_n312(x)
+ else
+ fun_l8_n901(x)
+ end
+end
+
+def fun_l7_n932(x)
+ if (x < 1)
+ fun_l8_n221(x)
+ else
+ fun_l8_n775(x)
+ end
+end
+
+def fun_l7_n933(x)
+ if (x < 1)
+ fun_l8_n397(x)
+ else
+ fun_l8_n973(x)
+ end
+end
+
+def fun_l7_n934(x)
+ if (x < 1)
+ fun_l8_n788(x)
+ else
+ fun_l8_n952(x)
+ end
+end
+
+def fun_l7_n935(x)
+ if (x < 1)
+ fun_l8_n965(x)
+ else
+ fun_l8_n861(x)
+ end
+end
+
+def fun_l7_n936(x)
+ if (x < 1)
+ fun_l8_n969(x)
+ else
+ fun_l8_n773(x)
+ end
+end
+
+def fun_l7_n937(x)
+ if (x < 1)
+ fun_l8_n742(x)
+ else
+ fun_l8_n237(x)
+ end
+end
+
+def fun_l7_n938(x)
+ if (x < 1)
+ fun_l8_n369(x)
+ else
+ fun_l8_n444(x)
+ end
+end
+
+def fun_l7_n939(x)
+ if (x < 1)
+ fun_l8_n863(x)
+ else
+ fun_l8_n515(x)
+ end
+end
+
+def fun_l7_n940(x)
+ if (x < 1)
+ fun_l8_n573(x)
+ else
+ fun_l8_n356(x)
+ end
+end
+
+def fun_l7_n941(x)
+ if (x < 1)
+ fun_l8_n188(x)
+ else
+ fun_l8_n171(x)
+ end
+end
+
+def fun_l7_n942(x)
+ if (x < 1)
+ fun_l8_n483(x)
+ else
+ fun_l8_n556(x)
+ end
+end
+
+def fun_l7_n943(x)
+ if (x < 1)
+ fun_l8_n935(x)
+ else
+ fun_l8_n723(x)
+ end
+end
+
+def fun_l7_n944(x)
+ if (x < 1)
+ fun_l8_n451(x)
+ else
+ fun_l8_n227(x)
+ end
+end
+
+def fun_l7_n945(x)
+ if (x < 1)
+ fun_l8_n651(x)
+ else
+ fun_l8_n891(x)
+ end
+end
+
+def fun_l7_n946(x)
+ if (x < 1)
+ fun_l8_n225(x)
+ else
+ fun_l8_n178(x)
+ end
+end
+
+def fun_l7_n947(x)
+ if (x < 1)
+ fun_l8_n704(x)
+ else
+ fun_l8_n456(x)
+ end
+end
+
+def fun_l7_n948(x)
+ if (x < 1)
+ fun_l8_n995(x)
+ else
+ fun_l8_n816(x)
+ end
+end
+
+def fun_l7_n949(x)
+ if (x < 1)
+ fun_l8_n287(x)
+ else
+ fun_l8_n140(x)
+ end
+end
+
+def fun_l7_n950(x)
+ if (x < 1)
+ fun_l8_n302(x)
+ else
+ fun_l8_n582(x)
+ end
+end
+
+def fun_l7_n951(x)
+ if (x < 1)
+ fun_l8_n58(x)
+ else
+ fun_l8_n759(x)
+ end
+end
+
+def fun_l7_n952(x)
+ if (x < 1)
+ fun_l8_n54(x)
+ else
+ fun_l8_n812(x)
+ end
+end
+
+def fun_l7_n953(x)
+ if (x < 1)
+ fun_l8_n263(x)
+ else
+ fun_l8_n801(x)
+ end
+end
+
+def fun_l7_n954(x)
+ if (x < 1)
+ fun_l8_n507(x)
+ else
+ fun_l8_n781(x)
+ end
+end
+
+def fun_l7_n955(x)
+ if (x < 1)
+ fun_l8_n328(x)
+ else
+ fun_l8_n886(x)
+ end
+end
+
+def fun_l7_n956(x)
+ if (x < 1)
+ fun_l8_n653(x)
+ else
+ fun_l8_n847(x)
+ end
+end
+
+def fun_l7_n957(x)
+ if (x < 1)
+ fun_l8_n594(x)
+ else
+ fun_l8_n9(x)
+ end
+end
+
+def fun_l7_n958(x)
+ if (x < 1)
+ fun_l8_n818(x)
+ else
+ fun_l8_n912(x)
+ end
+end
+
+def fun_l7_n959(x)
+ if (x < 1)
+ fun_l8_n941(x)
+ else
+ fun_l8_n394(x)
+ end
+end
+
+def fun_l7_n960(x)
+ if (x < 1)
+ fun_l8_n151(x)
+ else
+ fun_l8_n426(x)
+ end
+end
+
+def fun_l7_n961(x)
+ if (x < 1)
+ fun_l8_n276(x)
+ else
+ fun_l8_n458(x)
+ end
+end
+
+def fun_l7_n962(x)
+ if (x < 1)
+ fun_l8_n310(x)
+ else
+ fun_l8_n472(x)
+ end
+end
+
+def fun_l7_n963(x)
+ if (x < 1)
+ fun_l8_n103(x)
+ else
+ fun_l8_n995(x)
+ end
+end
+
+def fun_l7_n964(x)
+ if (x < 1)
+ fun_l8_n808(x)
+ else
+ fun_l8_n41(x)
+ end
+end
+
+def fun_l7_n965(x)
+ if (x < 1)
+ fun_l8_n840(x)
+ else
+ fun_l8_n143(x)
+ end
+end
+
+def fun_l7_n966(x)
+ if (x < 1)
+ fun_l8_n855(x)
+ else
+ fun_l8_n38(x)
+ end
+end
+
+def fun_l7_n967(x)
+ if (x < 1)
+ fun_l8_n316(x)
+ else
+ fun_l8_n86(x)
+ end
+end
+
+def fun_l7_n968(x)
+ if (x < 1)
+ fun_l8_n856(x)
+ else
+ fun_l8_n182(x)
+ end
+end
+
+def fun_l7_n969(x)
+ if (x < 1)
+ fun_l8_n436(x)
+ else
+ fun_l8_n460(x)
+ end
+end
+
+def fun_l7_n970(x)
+ if (x < 1)
+ fun_l8_n187(x)
+ else
+ fun_l8_n90(x)
+ end
+end
+
+def fun_l7_n971(x)
+ if (x < 1)
+ fun_l8_n689(x)
+ else
+ fun_l8_n921(x)
+ end
+end
+
+def fun_l7_n972(x)
+ if (x < 1)
+ fun_l8_n207(x)
+ else
+ fun_l8_n79(x)
+ end
+end
+
+def fun_l7_n973(x)
+ if (x < 1)
+ fun_l8_n137(x)
+ else
+ fun_l8_n17(x)
+ end
+end
+
+def fun_l7_n974(x)
+ if (x < 1)
+ fun_l8_n813(x)
+ else
+ fun_l8_n944(x)
+ end
+end
+
+def fun_l7_n975(x)
+ if (x < 1)
+ fun_l8_n589(x)
+ else
+ fun_l8_n416(x)
+ end
+end
+
+def fun_l7_n976(x)
+ if (x < 1)
+ fun_l8_n763(x)
+ else
+ fun_l8_n289(x)
+ end
+end
+
+def fun_l7_n977(x)
+ if (x < 1)
+ fun_l8_n118(x)
+ else
+ fun_l8_n998(x)
+ end
+end
+
+def fun_l7_n978(x)
+ if (x < 1)
+ fun_l8_n382(x)
+ else
+ fun_l8_n216(x)
+ end
+end
+
+def fun_l7_n979(x)
+ if (x < 1)
+ fun_l8_n304(x)
+ else
+ fun_l8_n586(x)
+ end
+end
+
+def fun_l7_n980(x)
+ if (x < 1)
+ fun_l8_n693(x)
+ else
+ fun_l8_n118(x)
+ end
+end
+
+def fun_l7_n981(x)
+ if (x < 1)
+ fun_l8_n669(x)
+ else
+ fun_l8_n796(x)
+ end
+end
+
+def fun_l7_n982(x)
+ if (x < 1)
+ fun_l8_n187(x)
+ else
+ fun_l8_n143(x)
+ end
+end
+
+def fun_l7_n983(x)
+ if (x < 1)
+ fun_l8_n848(x)
+ else
+ fun_l8_n172(x)
+ end
+end
+
+def fun_l7_n984(x)
+ if (x < 1)
+ fun_l8_n782(x)
+ else
+ fun_l8_n670(x)
+ end
+end
+
+def fun_l7_n985(x)
+ if (x < 1)
+ fun_l8_n275(x)
+ else
+ fun_l8_n520(x)
+ end
+end
+
+def fun_l7_n986(x)
+ if (x < 1)
+ fun_l8_n841(x)
+ else
+ fun_l8_n446(x)
+ end
+end
+
+def fun_l7_n987(x)
+ if (x < 1)
+ fun_l8_n712(x)
+ else
+ fun_l8_n976(x)
+ end
+end
+
+def fun_l7_n988(x)
+ if (x < 1)
+ fun_l8_n115(x)
+ else
+ fun_l8_n222(x)
+ end
+end
+
+def fun_l7_n989(x)
+ if (x < 1)
+ fun_l8_n23(x)
+ else
+ fun_l8_n665(x)
+ end
+end
+
+def fun_l7_n990(x)
+ if (x < 1)
+ fun_l8_n416(x)
+ else
+ fun_l8_n455(x)
+ end
+end
+
+def fun_l7_n991(x)
+ if (x < 1)
+ fun_l8_n556(x)
+ else
+ fun_l8_n971(x)
+ end
+end
+
+def fun_l7_n992(x)
+ if (x < 1)
+ fun_l8_n726(x)
+ else
+ fun_l8_n312(x)
+ end
+end
+
+def fun_l7_n993(x)
+ if (x < 1)
+ fun_l8_n354(x)
+ else
+ fun_l8_n860(x)
+ end
+end
+
+def fun_l7_n994(x)
+ if (x < 1)
+ fun_l8_n62(x)
+ else
+ fun_l8_n290(x)
+ end
+end
+
+def fun_l7_n995(x)
+ if (x < 1)
+ fun_l8_n695(x)
+ else
+ fun_l8_n881(x)
+ end
+end
+
+def fun_l7_n996(x)
+ if (x < 1)
+ fun_l8_n938(x)
+ else
+ fun_l8_n566(x)
+ end
+end
+
+def fun_l7_n997(x)
+ if (x < 1)
+ fun_l8_n379(x)
+ else
+ fun_l8_n731(x)
+ end
+end
+
+def fun_l7_n998(x)
+ if (x < 1)
+ fun_l8_n320(x)
+ else
+ fun_l8_n339(x)
+ end
+end
+
+def fun_l7_n999(x)
+ if (x < 1)
+ fun_l8_n219(x)
+ else
+ fun_l8_n320(x)
+ end
+end
+
+def fun_l8_n0(x)
+ if (x < 1)
+ fun_l9_n590(x)
+ else
+ fun_l9_n825(x)
+ end
+end
+
+def fun_l8_n1(x)
+ if (x < 1)
+ fun_l9_n301(x)
+ else
+ fun_l9_n457(x)
+ end
+end
+
+def fun_l8_n2(x)
+ if (x < 1)
+ fun_l9_n637(x)
+ else
+ fun_l9_n909(x)
+ end
+end
+
+def fun_l8_n3(x)
+ if (x < 1)
+ fun_l9_n485(x)
+ else
+ fun_l9_n603(x)
+ end
+end
+
+def fun_l8_n4(x)
+ if (x < 1)
+ fun_l9_n465(x)
+ else
+ fun_l9_n39(x)
+ end
+end
+
+def fun_l8_n5(x)
+ if (x < 1)
+ fun_l9_n861(x)
+ else
+ fun_l9_n153(x)
+ end
+end
+
+def fun_l8_n6(x)
+ if (x < 1)
+ fun_l9_n130(x)
+ else
+ fun_l9_n401(x)
+ end
+end
+
+def fun_l8_n7(x)
+ if (x < 1)
+ fun_l9_n726(x)
+ else
+ fun_l9_n248(x)
+ end
+end
+
+def fun_l8_n8(x)
+ if (x < 1)
+ fun_l9_n607(x)
+ else
+ fun_l9_n681(x)
+ end
+end
+
+def fun_l8_n9(x)
+ if (x < 1)
+ fun_l9_n862(x)
+ else
+ fun_l9_n8(x)
+ end
+end
+
+def fun_l8_n10(x)
+ if (x < 1)
+ fun_l9_n607(x)
+ else
+ fun_l9_n373(x)
+ end
+end
+
+def fun_l8_n11(x)
+ if (x < 1)
+ fun_l9_n692(x)
+ else
+ fun_l9_n31(x)
+ end
+end
+
+def fun_l8_n12(x)
+ if (x < 1)
+ fun_l9_n412(x)
+ else
+ fun_l9_n576(x)
+ end
+end
+
+def fun_l8_n13(x)
+ if (x < 1)
+ fun_l9_n582(x)
+ else
+ fun_l9_n281(x)
+ end
+end
+
+def fun_l8_n14(x)
+ if (x < 1)
+ fun_l9_n986(x)
+ else
+ fun_l9_n99(x)
+ end
+end
+
+def fun_l8_n15(x)
+ if (x < 1)
+ fun_l9_n807(x)
+ else
+ fun_l9_n807(x)
+ end
+end
+
+def fun_l8_n16(x)
+ if (x < 1)
+ fun_l9_n635(x)
+ else
+ fun_l9_n51(x)
+ end
+end
+
+def fun_l8_n17(x)
+ if (x < 1)
+ fun_l9_n193(x)
+ else
+ fun_l9_n673(x)
+ end
+end
+
+def fun_l8_n18(x)
+ if (x < 1)
+ fun_l9_n897(x)
+ else
+ fun_l9_n881(x)
+ end
+end
+
+def fun_l8_n19(x)
+ if (x < 1)
+ fun_l9_n288(x)
+ else
+ fun_l9_n337(x)
+ end
+end
+
+def fun_l8_n20(x)
+ if (x < 1)
+ fun_l9_n754(x)
+ else
+ fun_l9_n581(x)
+ end
+end
+
+def fun_l8_n21(x)
+ if (x < 1)
+ fun_l9_n265(x)
+ else
+ fun_l9_n205(x)
+ end
+end
+
+def fun_l8_n22(x)
+ if (x < 1)
+ fun_l9_n784(x)
+ else
+ fun_l9_n428(x)
+ end
+end
+
+def fun_l8_n23(x)
+ if (x < 1)
+ fun_l9_n821(x)
+ else
+ fun_l9_n930(x)
+ end
+end
+
+def fun_l8_n24(x)
+ if (x < 1)
+ fun_l9_n237(x)
+ else
+ fun_l9_n681(x)
+ end
+end
+
+def fun_l8_n25(x)
+ if (x < 1)
+ fun_l9_n32(x)
+ else
+ fun_l9_n405(x)
+ end
+end
+
+def fun_l8_n26(x)
+ if (x < 1)
+ fun_l9_n370(x)
+ else
+ fun_l9_n802(x)
+ end
+end
+
+def fun_l8_n27(x)
+ if (x < 1)
+ fun_l9_n4(x)
+ else
+ fun_l9_n288(x)
+ end
+end
+
+def fun_l8_n28(x)
+ if (x < 1)
+ fun_l9_n9(x)
+ else
+ fun_l9_n180(x)
+ end
+end
+
+def fun_l8_n29(x)
+ if (x < 1)
+ fun_l9_n585(x)
+ else
+ fun_l9_n396(x)
+ end
+end
+
+def fun_l8_n30(x)
+ if (x < 1)
+ fun_l9_n954(x)
+ else
+ fun_l9_n603(x)
+ end
+end
+
+def fun_l8_n31(x)
+ if (x < 1)
+ fun_l9_n808(x)
+ else
+ fun_l9_n770(x)
+ end
+end
+
+def fun_l8_n32(x)
+ if (x < 1)
+ fun_l9_n442(x)
+ else
+ fun_l9_n243(x)
+ end
+end
+
+def fun_l8_n33(x)
+ if (x < 1)
+ fun_l9_n139(x)
+ else
+ fun_l9_n93(x)
+ end
+end
+
+def fun_l8_n34(x)
+ if (x < 1)
+ fun_l9_n270(x)
+ else
+ fun_l9_n333(x)
+ end
+end
+
+def fun_l8_n35(x)
+ if (x < 1)
+ fun_l9_n542(x)
+ else
+ fun_l9_n38(x)
+ end
+end
+
+def fun_l8_n36(x)
+ if (x < 1)
+ fun_l9_n892(x)
+ else
+ fun_l9_n517(x)
+ end
+end
+
+def fun_l8_n37(x)
+ if (x < 1)
+ fun_l9_n599(x)
+ else
+ fun_l9_n692(x)
+ end
+end
+
+def fun_l8_n38(x)
+ if (x < 1)
+ fun_l9_n0(x)
+ else
+ fun_l9_n879(x)
+ end
+end
+
+def fun_l8_n39(x)
+ if (x < 1)
+ fun_l9_n835(x)
+ else
+ fun_l9_n134(x)
+ end
+end
+
+def fun_l8_n40(x)
+ if (x < 1)
+ fun_l9_n151(x)
+ else
+ fun_l9_n546(x)
+ end
+end
+
+def fun_l8_n41(x)
+ if (x < 1)
+ fun_l9_n214(x)
+ else
+ fun_l9_n652(x)
+ end
+end
+
+def fun_l8_n42(x)
+ if (x < 1)
+ fun_l9_n239(x)
+ else
+ fun_l9_n123(x)
+ end
+end
+
+def fun_l8_n43(x)
+ if (x < 1)
+ fun_l9_n763(x)
+ else
+ fun_l9_n953(x)
+ end
+end
+
+def fun_l8_n44(x)
+ if (x < 1)
+ fun_l9_n449(x)
+ else
+ fun_l9_n343(x)
+ end
+end
+
+def fun_l8_n45(x)
+ if (x < 1)
+ fun_l9_n727(x)
+ else
+ fun_l9_n47(x)
+ end
+end
+
+def fun_l8_n46(x)
+ if (x < 1)
+ fun_l9_n684(x)
+ else
+ fun_l9_n711(x)
+ end
+end
+
+def fun_l8_n47(x)
+ if (x < 1)
+ fun_l9_n895(x)
+ else
+ fun_l9_n864(x)
+ end
+end
+
+def fun_l8_n48(x)
+ if (x < 1)
+ fun_l9_n544(x)
+ else
+ fun_l9_n358(x)
+ end
+end
+
+def fun_l8_n49(x)
+ if (x < 1)
+ fun_l9_n829(x)
+ else
+ fun_l9_n411(x)
+ end
+end
+
+def fun_l8_n50(x)
+ if (x < 1)
+ fun_l9_n673(x)
+ else
+ fun_l9_n640(x)
+ end
+end
+
+def fun_l8_n51(x)
+ if (x < 1)
+ fun_l9_n9(x)
+ else
+ fun_l9_n690(x)
+ end
+end
+
+def fun_l8_n52(x)
+ if (x < 1)
+ fun_l9_n293(x)
+ else
+ fun_l9_n889(x)
+ end
+end
+
+def fun_l8_n53(x)
+ if (x < 1)
+ fun_l9_n141(x)
+ else
+ fun_l9_n554(x)
+ end
+end
+
+def fun_l8_n54(x)
+ if (x < 1)
+ fun_l9_n982(x)
+ else
+ fun_l9_n955(x)
+ end
+end
+
+def fun_l8_n55(x)
+ if (x < 1)
+ fun_l9_n382(x)
+ else
+ fun_l9_n897(x)
+ end
+end
+
+def fun_l8_n56(x)
+ if (x < 1)
+ fun_l9_n332(x)
+ else
+ fun_l9_n550(x)
+ end
+end
+
+def fun_l8_n57(x)
+ if (x < 1)
+ fun_l9_n46(x)
+ else
+ fun_l9_n569(x)
+ end
+end
+
+def fun_l8_n58(x)
+ if (x < 1)
+ fun_l9_n556(x)
+ else
+ fun_l9_n0(x)
+ end
+end
+
+def fun_l8_n59(x)
+ if (x < 1)
+ fun_l9_n931(x)
+ else
+ fun_l9_n995(x)
+ end
+end
+
+def fun_l8_n60(x)
+ if (x < 1)
+ fun_l9_n470(x)
+ else
+ fun_l9_n679(x)
+ end
+end
+
+def fun_l8_n61(x)
+ if (x < 1)
+ fun_l9_n269(x)
+ else
+ fun_l9_n742(x)
+ end
+end
+
+def fun_l8_n62(x)
+ if (x < 1)
+ fun_l9_n542(x)
+ else
+ fun_l9_n556(x)
+ end
+end
+
+def fun_l8_n63(x)
+ if (x < 1)
+ fun_l9_n713(x)
+ else
+ fun_l9_n249(x)
+ end
+end
+
+def fun_l8_n64(x)
+ if (x < 1)
+ fun_l9_n842(x)
+ else
+ fun_l9_n566(x)
+ end
+end
+
+def fun_l8_n65(x)
+ if (x < 1)
+ fun_l9_n708(x)
+ else
+ fun_l9_n3(x)
+ end
+end
+
+def fun_l8_n66(x)
+ if (x < 1)
+ fun_l9_n845(x)
+ else
+ fun_l9_n926(x)
+ end
+end
+
+def fun_l8_n67(x)
+ if (x < 1)
+ fun_l9_n823(x)
+ else
+ fun_l9_n326(x)
+ end
+end
+
+def fun_l8_n68(x)
+ if (x < 1)
+ fun_l9_n457(x)
+ else
+ fun_l9_n888(x)
+ end
+end
+
+def fun_l8_n69(x)
+ if (x < 1)
+ fun_l9_n454(x)
+ else
+ fun_l9_n601(x)
+ end
+end
+
+def fun_l8_n70(x)
+ if (x < 1)
+ fun_l9_n636(x)
+ else
+ fun_l9_n482(x)
+ end
+end
+
+def fun_l8_n71(x)
+ if (x < 1)
+ fun_l9_n778(x)
+ else
+ fun_l9_n678(x)
+ end
+end
+
+def fun_l8_n72(x)
+ if (x < 1)
+ fun_l9_n715(x)
+ else
+ fun_l9_n851(x)
+ end
+end
+
+def fun_l8_n73(x)
+ if (x < 1)
+ fun_l9_n330(x)
+ else
+ fun_l9_n84(x)
+ end
+end
+
+def fun_l8_n74(x)
+ if (x < 1)
+ fun_l9_n524(x)
+ else
+ fun_l9_n109(x)
+ end
+end
+
+def fun_l8_n75(x)
+ if (x < 1)
+ fun_l9_n610(x)
+ else
+ fun_l9_n723(x)
+ end
+end
+
+def fun_l8_n76(x)
+ if (x < 1)
+ fun_l9_n964(x)
+ else
+ fun_l9_n893(x)
+ end
+end
+
+def fun_l8_n77(x)
+ if (x < 1)
+ fun_l9_n653(x)
+ else
+ fun_l9_n451(x)
+ end
+end
+
+def fun_l8_n78(x)
+ if (x < 1)
+ fun_l9_n582(x)
+ else
+ fun_l9_n29(x)
+ end
+end
+
+def fun_l8_n79(x)
+ if (x < 1)
+ fun_l9_n219(x)
+ else
+ fun_l9_n25(x)
+ end
+end
+
+def fun_l8_n80(x)
+ if (x < 1)
+ fun_l9_n471(x)
+ else
+ fun_l9_n217(x)
+ end
+end
+
+def fun_l8_n81(x)
+ if (x < 1)
+ fun_l9_n339(x)
+ else
+ fun_l9_n365(x)
+ end
+end
+
+def fun_l8_n82(x)
+ if (x < 1)
+ fun_l9_n808(x)
+ else
+ fun_l9_n501(x)
+ end
+end
+
+def fun_l8_n83(x)
+ if (x < 1)
+ fun_l9_n23(x)
+ else
+ fun_l9_n252(x)
+ end
+end
+
+def fun_l8_n84(x)
+ if (x < 1)
+ fun_l9_n628(x)
+ else
+ fun_l9_n514(x)
+ end
+end
+
+def fun_l8_n85(x)
+ if (x < 1)
+ fun_l9_n22(x)
+ else
+ fun_l9_n465(x)
+ end
+end
+
+def fun_l8_n86(x)
+ if (x < 1)
+ fun_l9_n553(x)
+ else
+ fun_l9_n788(x)
+ end
+end
+
+def fun_l8_n87(x)
+ if (x < 1)
+ fun_l9_n852(x)
+ else
+ fun_l9_n945(x)
+ end
+end
+
+def fun_l8_n88(x)
+ if (x < 1)
+ fun_l9_n886(x)
+ else
+ fun_l9_n438(x)
+ end
+end
+
+def fun_l8_n89(x)
+ if (x < 1)
+ fun_l9_n821(x)
+ else
+ fun_l9_n697(x)
+ end
+end
+
+def fun_l8_n90(x)
+ if (x < 1)
+ fun_l9_n388(x)
+ else
+ fun_l9_n39(x)
+ end
+end
+
+def fun_l8_n91(x)
+ if (x < 1)
+ fun_l9_n135(x)
+ else
+ fun_l9_n736(x)
+ end
+end
+
+def fun_l8_n92(x)
+ if (x < 1)
+ fun_l9_n225(x)
+ else
+ fun_l9_n125(x)
+ end
+end
+
+def fun_l8_n93(x)
+ if (x < 1)
+ fun_l9_n201(x)
+ else
+ fun_l9_n320(x)
+ end
+end
+
+def fun_l8_n94(x)
+ if (x < 1)
+ fun_l9_n30(x)
+ else
+ fun_l9_n938(x)
+ end
+end
+
+def fun_l8_n95(x)
+ if (x < 1)
+ fun_l9_n987(x)
+ else
+ fun_l9_n141(x)
+ end
+end
+
+def fun_l8_n96(x)
+ if (x < 1)
+ fun_l9_n968(x)
+ else
+ fun_l9_n999(x)
+ end
+end
+
+def fun_l8_n97(x)
+ if (x < 1)
+ fun_l9_n852(x)
+ else
+ fun_l9_n927(x)
+ end
+end
+
+def fun_l8_n98(x)
+ if (x < 1)
+ fun_l9_n720(x)
+ else
+ fun_l9_n717(x)
+ end
+end
+
+def fun_l8_n99(x)
+ if (x < 1)
+ fun_l9_n907(x)
+ else
+ fun_l9_n8(x)
+ end
+end
+
+def fun_l8_n100(x)
+ if (x < 1)
+ fun_l9_n973(x)
+ else
+ fun_l9_n379(x)
+ end
+end
+
+def fun_l8_n101(x)
+ if (x < 1)
+ fun_l9_n370(x)
+ else
+ fun_l9_n530(x)
+ end
+end
+
+def fun_l8_n102(x)
+ if (x < 1)
+ fun_l9_n411(x)
+ else
+ fun_l9_n560(x)
+ end
+end
+
+def fun_l8_n103(x)
+ if (x < 1)
+ fun_l9_n54(x)
+ else
+ fun_l9_n813(x)
+ end
+end
+
+def fun_l8_n104(x)
+ if (x < 1)
+ fun_l9_n217(x)
+ else
+ fun_l9_n455(x)
+ end
+end
+
+def fun_l8_n105(x)
+ if (x < 1)
+ fun_l9_n667(x)
+ else
+ fun_l9_n92(x)
+ end
+end
+
+def fun_l8_n106(x)
+ if (x < 1)
+ fun_l9_n933(x)
+ else
+ fun_l9_n727(x)
+ end
+end
+
+def fun_l8_n107(x)
+ if (x < 1)
+ fun_l9_n578(x)
+ else
+ fun_l9_n350(x)
+ end
+end
+
+def fun_l8_n108(x)
+ if (x < 1)
+ fun_l9_n75(x)
+ else
+ fun_l9_n439(x)
+ end
+end
+
+def fun_l8_n109(x)
+ if (x < 1)
+ fun_l9_n21(x)
+ else
+ fun_l9_n112(x)
+ end
+end
+
+def fun_l8_n110(x)
+ if (x < 1)
+ fun_l9_n57(x)
+ else
+ fun_l9_n553(x)
+ end
+end
+
+def fun_l8_n111(x)
+ if (x < 1)
+ fun_l9_n347(x)
+ else
+ fun_l9_n285(x)
+ end
+end
+
+def fun_l8_n112(x)
+ if (x < 1)
+ fun_l9_n837(x)
+ else
+ fun_l9_n793(x)
+ end
+end
+
+def fun_l8_n113(x)
+ if (x < 1)
+ fun_l9_n517(x)
+ else
+ fun_l9_n668(x)
+ end
+end
+
+def fun_l8_n114(x)
+ if (x < 1)
+ fun_l9_n486(x)
+ else
+ fun_l9_n872(x)
+ end
+end
+
+def fun_l8_n115(x)
+ if (x < 1)
+ fun_l9_n454(x)
+ else
+ fun_l9_n507(x)
+ end
+end
+
+def fun_l8_n116(x)
+ if (x < 1)
+ fun_l9_n110(x)
+ else
+ fun_l9_n263(x)
+ end
+end
+
+def fun_l8_n117(x)
+ if (x < 1)
+ fun_l9_n878(x)
+ else
+ fun_l9_n21(x)
+ end
+end
+
+def fun_l8_n118(x)
+ if (x < 1)
+ fun_l9_n564(x)
+ else
+ fun_l9_n409(x)
+ end
+end
+
+def fun_l8_n119(x)
+ if (x < 1)
+ fun_l9_n511(x)
+ else
+ fun_l9_n800(x)
+ end
+end
+
+def fun_l8_n120(x)
+ if (x < 1)
+ fun_l9_n501(x)
+ else
+ fun_l9_n305(x)
+ end
+end
+
+def fun_l8_n121(x)
+ if (x < 1)
+ fun_l9_n630(x)
+ else
+ fun_l9_n319(x)
+ end
+end
+
+def fun_l8_n122(x)
+ if (x < 1)
+ fun_l9_n271(x)
+ else
+ fun_l9_n639(x)
+ end
+end
+
+def fun_l8_n123(x)
+ if (x < 1)
+ fun_l9_n812(x)
+ else
+ fun_l9_n735(x)
+ end
+end
+
+def fun_l8_n124(x)
+ if (x < 1)
+ fun_l9_n828(x)
+ else
+ fun_l9_n203(x)
+ end
+end
+
+def fun_l8_n125(x)
+ if (x < 1)
+ fun_l9_n228(x)
+ else
+ fun_l9_n536(x)
+ end
+end
+
+def fun_l8_n126(x)
+ if (x < 1)
+ fun_l9_n426(x)
+ else
+ fun_l9_n325(x)
+ end
+end
+
+def fun_l8_n127(x)
+ if (x < 1)
+ fun_l9_n19(x)
+ else
+ fun_l9_n324(x)
+ end
+end
+
+def fun_l8_n128(x)
+ if (x < 1)
+ fun_l9_n419(x)
+ else
+ fun_l9_n425(x)
+ end
+end
+
+def fun_l8_n129(x)
+ if (x < 1)
+ fun_l9_n384(x)
+ else
+ fun_l9_n550(x)
+ end
+end
+
+def fun_l8_n130(x)
+ if (x < 1)
+ fun_l9_n956(x)
+ else
+ fun_l9_n270(x)
+ end
+end
+
+def fun_l8_n131(x)
+ if (x < 1)
+ fun_l9_n20(x)
+ else
+ fun_l9_n949(x)
+ end
+end
+
+def fun_l8_n132(x)
+ if (x < 1)
+ fun_l9_n317(x)
+ else
+ fun_l9_n909(x)
+ end
+end
+
+def fun_l8_n133(x)
+ if (x < 1)
+ fun_l9_n131(x)
+ else
+ fun_l9_n108(x)
+ end
+end
+
+def fun_l8_n134(x)
+ if (x < 1)
+ fun_l9_n648(x)
+ else
+ fun_l9_n473(x)
+ end
+end
+
+def fun_l8_n135(x)
+ if (x < 1)
+ fun_l9_n837(x)
+ else
+ fun_l9_n89(x)
+ end
+end
+
+def fun_l8_n136(x)
+ if (x < 1)
+ fun_l9_n637(x)
+ else
+ fun_l9_n394(x)
+ end
+end
+
+def fun_l8_n137(x)
+ if (x < 1)
+ fun_l9_n608(x)
+ else
+ fun_l9_n283(x)
+ end
+end
+
+def fun_l8_n138(x)
+ if (x < 1)
+ fun_l9_n728(x)
+ else
+ fun_l9_n586(x)
+ end
+end
+
+def fun_l8_n139(x)
+ if (x < 1)
+ fun_l9_n689(x)
+ else
+ fun_l9_n700(x)
+ end
+end
+
+def fun_l8_n140(x)
+ if (x < 1)
+ fun_l9_n532(x)
+ else
+ fun_l9_n98(x)
+ end
+end
+
+def fun_l8_n141(x)
+ if (x < 1)
+ fun_l9_n696(x)
+ else
+ fun_l9_n951(x)
+ end
+end
+
+def fun_l8_n142(x)
+ if (x < 1)
+ fun_l9_n28(x)
+ else
+ fun_l9_n714(x)
+ end
+end
+
+def fun_l8_n143(x)
+ if (x < 1)
+ fun_l9_n438(x)
+ else
+ fun_l9_n934(x)
+ end
+end
+
+def fun_l8_n144(x)
+ if (x < 1)
+ fun_l9_n738(x)
+ else
+ fun_l9_n473(x)
+ end
+end
+
+def fun_l8_n145(x)
+ if (x < 1)
+ fun_l9_n201(x)
+ else
+ fun_l9_n634(x)
+ end
+end
+
+def fun_l8_n146(x)
+ if (x < 1)
+ fun_l9_n391(x)
+ else
+ fun_l9_n703(x)
+ end
+end
+
+def fun_l8_n147(x)
+ if (x < 1)
+ fun_l9_n740(x)
+ else
+ fun_l9_n265(x)
+ end
+end
+
+def fun_l8_n148(x)
+ if (x < 1)
+ fun_l9_n303(x)
+ else
+ fun_l9_n162(x)
+ end
+end
+
+def fun_l8_n149(x)
+ if (x < 1)
+ fun_l9_n518(x)
+ else
+ fun_l9_n899(x)
+ end
+end
+
+def fun_l8_n150(x)
+ if (x < 1)
+ fun_l9_n847(x)
+ else
+ fun_l9_n840(x)
+ end
+end
+
+def fun_l8_n151(x)
+ if (x < 1)
+ fun_l9_n567(x)
+ else
+ fun_l9_n29(x)
+ end
+end
+
+def fun_l8_n152(x)
+ if (x < 1)
+ fun_l9_n426(x)
+ else
+ fun_l9_n578(x)
+ end
+end
+
+def fun_l8_n153(x)
+ if (x < 1)
+ fun_l9_n617(x)
+ else
+ fun_l9_n703(x)
+ end
+end
+
+def fun_l8_n154(x)
+ if (x < 1)
+ fun_l9_n673(x)
+ else
+ fun_l9_n663(x)
+ end
+end
+
+def fun_l8_n155(x)
+ if (x < 1)
+ fun_l9_n456(x)
+ else
+ fun_l9_n406(x)
+ end
+end
+
+def fun_l8_n156(x)
+ if (x < 1)
+ fun_l9_n297(x)
+ else
+ fun_l9_n444(x)
+ end
+end
+
+def fun_l8_n157(x)
+ if (x < 1)
+ fun_l9_n300(x)
+ else
+ fun_l9_n179(x)
+ end
+end
+
+def fun_l8_n158(x)
+ if (x < 1)
+ fun_l9_n646(x)
+ else
+ fun_l9_n9(x)
+ end
+end
+
+def fun_l8_n159(x)
+ if (x < 1)
+ fun_l9_n133(x)
+ else
+ fun_l9_n228(x)
+ end
+end
+
+def fun_l8_n160(x)
+ if (x < 1)
+ fun_l9_n814(x)
+ else
+ fun_l9_n775(x)
+ end
+end
+
+def fun_l8_n161(x)
+ if (x < 1)
+ fun_l9_n748(x)
+ else
+ fun_l9_n849(x)
+ end
+end
+
+def fun_l8_n162(x)
+ if (x < 1)
+ fun_l9_n209(x)
+ else
+ fun_l9_n273(x)
+ end
+end
+
+def fun_l8_n163(x)
+ if (x < 1)
+ fun_l9_n116(x)
+ else
+ fun_l9_n669(x)
+ end
+end
+
+def fun_l8_n164(x)
+ if (x < 1)
+ fun_l9_n714(x)
+ else
+ fun_l9_n621(x)
+ end
+end
+
+def fun_l8_n165(x)
+ if (x < 1)
+ fun_l9_n619(x)
+ else
+ fun_l9_n365(x)
+ end
+end
+
+def fun_l8_n166(x)
+ if (x < 1)
+ fun_l9_n756(x)
+ else
+ fun_l9_n745(x)
+ end
+end
+
+def fun_l8_n167(x)
+ if (x < 1)
+ fun_l9_n12(x)
+ else
+ fun_l9_n633(x)
+ end
+end
+
+def fun_l8_n168(x)
+ if (x < 1)
+ fun_l9_n619(x)
+ else
+ fun_l9_n31(x)
+ end
+end
+
+def fun_l8_n169(x)
+ if (x < 1)
+ fun_l9_n685(x)
+ else
+ fun_l9_n107(x)
+ end
+end
+
+def fun_l8_n170(x)
+ if (x < 1)
+ fun_l9_n636(x)
+ else
+ fun_l9_n280(x)
+ end
+end
+
+def fun_l8_n171(x)
+ if (x < 1)
+ fun_l9_n254(x)
+ else
+ fun_l9_n742(x)
+ end
+end
+
+def fun_l8_n172(x)
+ if (x < 1)
+ fun_l9_n829(x)
+ else
+ fun_l9_n632(x)
+ end
+end
+
+def fun_l8_n173(x)
+ if (x < 1)
+ fun_l9_n341(x)
+ else
+ fun_l9_n186(x)
+ end
+end
+
+def fun_l8_n174(x)
+ if (x < 1)
+ fun_l9_n903(x)
+ else
+ fun_l9_n93(x)
+ end
+end
+
+def fun_l8_n175(x)
+ if (x < 1)
+ fun_l9_n416(x)
+ else
+ fun_l9_n318(x)
+ end
+end
+
+def fun_l8_n176(x)
+ if (x < 1)
+ fun_l9_n893(x)
+ else
+ fun_l9_n438(x)
+ end
+end
+
+def fun_l8_n177(x)
+ if (x < 1)
+ fun_l9_n551(x)
+ else
+ fun_l9_n312(x)
+ end
+end
+
+def fun_l8_n178(x)
+ if (x < 1)
+ fun_l9_n582(x)
+ else
+ fun_l9_n926(x)
+ end
+end
+
+def fun_l8_n179(x)
+ if (x < 1)
+ fun_l9_n547(x)
+ else
+ fun_l9_n804(x)
+ end
+end
+
+def fun_l8_n180(x)
+ if (x < 1)
+ fun_l9_n589(x)
+ else
+ fun_l9_n246(x)
+ end
+end
+
+def fun_l8_n181(x)
+ if (x < 1)
+ fun_l9_n67(x)
+ else
+ fun_l9_n345(x)
+ end
+end
+
+def fun_l8_n182(x)
+ if (x < 1)
+ fun_l9_n958(x)
+ else
+ fun_l9_n923(x)
+ end
+end
+
+def fun_l8_n183(x)
+ if (x < 1)
+ fun_l9_n418(x)
+ else
+ fun_l9_n532(x)
+ end
+end
+
+def fun_l8_n184(x)
+ if (x < 1)
+ fun_l9_n372(x)
+ else
+ fun_l9_n808(x)
+ end
+end
+
+def fun_l8_n185(x)
+ if (x < 1)
+ fun_l9_n849(x)
+ else
+ fun_l9_n755(x)
+ end
+end
+
+def fun_l8_n186(x)
+ if (x < 1)
+ fun_l9_n544(x)
+ else
+ fun_l9_n73(x)
+ end
+end
+
+def fun_l8_n187(x)
+ if (x < 1)
+ fun_l9_n729(x)
+ else
+ fun_l9_n295(x)
+ end
+end
+
+def fun_l8_n188(x)
+ if (x < 1)
+ fun_l9_n782(x)
+ else
+ fun_l9_n117(x)
+ end
+end
+
+def fun_l8_n189(x)
+ if (x < 1)
+ fun_l9_n947(x)
+ else
+ fun_l9_n93(x)
+ end
+end
+
+def fun_l8_n190(x)
+ if (x < 1)
+ fun_l9_n989(x)
+ else
+ fun_l9_n444(x)
+ end
+end
+
+def fun_l8_n191(x)
+ if (x < 1)
+ fun_l9_n394(x)
+ else
+ fun_l9_n741(x)
+ end
+end
+
+def fun_l8_n192(x)
+ if (x < 1)
+ fun_l9_n582(x)
+ else
+ fun_l9_n333(x)
+ end
+end
+
+def fun_l8_n193(x)
+ if (x < 1)
+ fun_l9_n73(x)
+ else
+ fun_l9_n227(x)
+ end
+end
+
+def fun_l8_n194(x)
+ if (x < 1)
+ fun_l9_n946(x)
+ else
+ fun_l9_n354(x)
+ end
+end
+
+def fun_l8_n195(x)
+ if (x < 1)
+ fun_l9_n383(x)
+ else
+ fun_l9_n863(x)
+ end
+end
+
+def fun_l8_n196(x)
+ if (x < 1)
+ fun_l9_n441(x)
+ else
+ fun_l9_n947(x)
+ end
+end
+
+def fun_l8_n197(x)
+ if (x < 1)
+ fun_l9_n506(x)
+ else
+ fun_l9_n45(x)
+ end
+end
+
+def fun_l8_n198(x)
+ if (x < 1)
+ fun_l9_n890(x)
+ else
+ fun_l9_n341(x)
+ end
+end
+
+def fun_l8_n199(x)
+ if (x < 1)
+ fun_l9_n75(x)
+ else
+ fun_l9_n56(x)
+ end
+end
+
+def fun_l8_n200(x)
+ if (x < 1)
+ fun_l9_n386(x)
+ else
+ fun_l9_n280(x)
+ end
+end
+
+def fun_l8_n201(x)
+ if (x < 1)
+ fun_l9_n364(x)
+ else
+ fun_l9_n424(x)
+ end
+end
+
+def fun_l8_n202(x)
+ if (x < 1)
+ fun_l9_n923(x)
+ else
+ fun_l9_n326(x)
+ end
+end
+
+def fun_l8_n203(x)
+ if (x < 1)
+ fun_l9_n692(x)
+ else
+ fun_l9_n502(x)
+ end
+end
+
+def fun_l8_n204(x)
+ if (x < 1)
+ fun_l9_n508(x)
+ else
+ fun_l9_n561(x)
+ end
+end
+
+def fun_l8_n205(x)
+ if (x < 1)
+ fun_l9_n496(x)
+ else
+ fun_l9_n949(x)
+ end
+end
+
+def fun_l8_n206(x)
+ if (x < 1)
+ fun_l9_n852(x)
+ else
+ fun_l9_n447(x)
+ end
+end
+
+def fun_l8_n207(x)
+ if (x < 1)
+ fun_l9_n757(x)
+ else
+ fun_l9_n782(x)
+ end
+end
+
+def fun_l8_n208(x)
+ if (x < 1)
+ fun_l9_n505(x)
+ else
+ fun_l9_n32(x)
+ end
+end
+
+def fun_l8_n209(x)
+ if (x < 1)
+ fun_l9_n591(x)
+ else
+ fun_l9_n967(x)
+ end
+end
+
+def fun_l8_n210(x)
+ if (x < 1)
+ fun_l9_n537(x)
+ else
+ fun_l9_n380(x)
+ end
+end
+
+def fun_l8_n211(x)
+ if (x < 1)
+ fun_l9_n19(x)
+ else
+ fun_l9_n362(x)
+ end
+end
+
+def fun_l8_n212(x)
+ if (x < 1)
+ fun_l9_n759(x)
+ else
+ fun_l9_n835(x)
+ end
+end
+
+def fun_l8_n213(x)
+ if (x < 1)
+ fun_l9_n518(x)
+ else
+ fun_l9_n294(x)
+ end
+end
+
+def fun_l8_n214(x)
+ if (x < 1)
+ fun_l9_n921(x)
+ else
+ fun_l9_n687(x)
+ end
+end
+
+def fun_l8_n215(x)
+ if (x < 1)
+ fun_l9_n114(x)
+ else
+ fun_l9_n130(x)
+ end
+end
+
+def fun_l8_n216(x)
+ if (x < 1)
+ fun_l9_n829(x)
+ else
+ fun_l9_n8(x)
+ end
+end
+
+def fun_l8_n217(x)
+ if (x < 1)
+ fun_l9_n875(x)
+ else
+ fun_l9_n392(x)
+ end
+end
+
+def fun_l8_n218(x)
+ if (x < 1)
+ fun_l9_n13(x)
+ else
+ fun_l9_n907(x)
+ end
+end
+
+def fun_l8_n219(x)
+ if (x < 1)
+ fun_l9_n457(x)
+ else
+ fun_l9_n77(x)
+ end
+end
+
+def fun_l8_n220(x)
+ if (x < 1)
+ fun_l9_n404(x)
+ else
+ fun_l9_n12(x)
+ end
+end
+
+def fun_l8_n221(x)
+ if (x < 1)
+ fun_l9_n244(x)
+ else
+ fun_l9_n231(x)
+ end
+end
+
+def fun_l8_n222(x)
+ if (x < 1)
+ fun_l9_n205(x)
+ else
+ fun_l9_n458(x)
+ end
+end
+
+def fun_l8_n223(x)
+ if (x < 1)
+ fun_l9_n570(x)
+ else
+ fun_l9_n44(x)
+ end
+end
+
+def fun_l8_n224(x)
+ if (x < 1)
+ fun_l9_n651(x)
+ else
+ fun_l9_n836(x)
+ end
+end
+
+def fun_l8_n225(x)
+ if (x < 1)
+ fun_l9_n518(x)
+ else
+ fun_l9_n845(x)
+ end
+end
+
+def fun_l8_n226(x)
+ if (x < 1)
+ fun_l9_n92(x)
+ else
+ fun_l9_n637(x)
+ end
+end
+
+def fun_l8_n227(x)
+ if (x < 1)
+ fun_l9_n990(x)
+ else
+ fun_l9_n926(x)
+ end
+end
+
+def fun_l8_n228(x)
+ if (x < 1)
+ fun_l9_n465(x)
+ else
+ fun_l9_n764(x)
+ end
+end
+
+def fun_l8_n229(x)
+ if (x < 1)
+ fun_l9_n7(x)
+ else
+ fun_l9_n981(x)
+ end
+end
+
+def fun_l8_n230(x)
+ if (x < 1)
+ fun_l9_n250(x)
+ else
+ fun_l9_n690(x)
+ end
+end
+
+def fun_l8_n231(x)
+ if (x < 1)
+ fun_l9_n101(x)
+ else
+ fun_l9_n342(x)
+ end
+end
+
+def fun_l8_n232(x)
+ if (x < 1)
+ fun_l9_n659(x)
+ else
+ fun_l9_n216(x)
+ end
+end
+
+def fun_l8_n233(x)
+ if (x < 1)
+ fun_l9_n129(x)
+ else
+ fun_l9_n439(x)
+ end
+end
+
+def fun_l8_n234(x)
+ if (x < 1)
+ fun_l9_n616(x)
+ else
+ fun_l9_n700(x)
+ end
+end
+
+def fun_l8_n235(x)
+ if (x < 1)
+ fun_l9_n850(x)
+ else
+ fun_l9_n254(x)
+ end
+end
+
+def fun_l8_n236(x)
+ if (x < 1)
+ fun_l9_n186(x)
+ else
+ fun_l9_n592(x)
+ end
+end
+
+def fun_l8_n237(x)
+ if (x < 1)
+ fun_l9_n895(x)
+ else
+ fun_l9_n752(x)
+ end
+end
+
+def fun_l8_n238(x)
+ if (x < 1)
+ fun_l9_n496(x)
+ else
+ fun_l9_n784(x)
+ end
+end
+
+def fun_l8_n239(x)
+ if (x < 1)
+ fun_l9_n579(x)
+ else
+ fun_l9_n144(x)
+ end
+end
+
+def fun_l8_n240(x)
+ if (x < 1)
+ fun_l9_n805(x)
+ else
+ fun_l9_n851(x)
+ end
+end
+
+def fun_l8_n241(x)
+ if (x < 1)
+ fun_l9_n756(x)
+ else
+ fun_l9_n332(x)
+ end
+end
+
+def fun_l8_n242(x)
+ if (x < 1)
+ fun_l9_n898(x)
+ else
+ fun_l9_n285(x)
+ end
+end
+
+def fun_l8_n243(x)
+ if (x < 1)
+ fun_l9_n729(x)
+ else
+ fun_l9_n149(x)
+ end
+end
+
+def fun_l8_n244(x)
+ if (x < 1)
+ fun_l9_n881(x)
+ else
+ fun_l9_n356(x)
+ end
+end
+
+def fun_l8_n245(x)
+ if (x < 1)
+ fun_l9_n351(x)
+ else
+ fun_l9_n805(x)
+ end
+end
+
+def fun_l8_n246(x)
+ if (x < 1)
+ fun_l9_n493(x)
+ else
+ fun_l9_n200(x)
+ end
+end
+
+def fun_l8_n247(x)
+ if (x < 1)
+ fun_l9_n706(x)
+ else
+ fun_l9_n917(x)
+ end
+end
+
+def fun_l8_n248(x)
+ if (x < 1)
+ fun_l9_n370(x)
+ else
+ fun_l9_n755(x)
+ end
+end
+
+def fun_l8_n249(x)
+ if (x < 1)
+ fun_l9_n859(x)
+ else
+ fun_l9_n496(x)
+ end
+end
+
+def fun_l8_n250(x)
+ if (x < 1)
+ fun_l9_n443(x)
+ else
+ fun_l9_n113(x)
+ end
+end
+
+def fun_l8_n251(x)
+ if (x < 1)
+ fun_l9_n631(x)
+ else
+ fun_l9_n195(x)
+ end
+end
+
+def fun_l8_n252(x)
+ if (x < 1)
+ fun_l9_n357(x)
+ else
+ fun_l9_n694(x)
+ end
+end
+
+def fun_l8_n253(x)
+ if (x < 1)
+ fun_l9_n387(x)
+ else
+ fun_l9_n820(x)
+ end
+end
+
+def fun_l8_n254(x)
+ if (x < 1)
+ fun_l9_n909(x)
+ else
+ fun_l9_n559(x)
+ end
+end
+
+def fun_l8_n255(x)
+ if (x < 1)
+ fun_l9_n474(x)
+ else
+ fun_l9_n864(x)
+ end
+end
+
+def fun_l8_n256(x)
+ if (x < 1)
+ fun_l9_n914(x)
+ else
+ fun_l9_n672(x)
+ end
+end
+
+def fun_l8_n257(x)
+ if (x < 1)
+ fun_l9_n915(x)
+ else
+ fun_l9_n177(x)
+ end
+end
+
+def fun_l8_n258(x)
+ if (x < 1)
+ fun_l9_n917(x)
+ else
+ fun_l9_n210(x)
+ end
+end
+
+def fun_l8_n259(x)
+ if (x < 1)
+ fun_l9_n851(x)
+ else
+ fun_l9_n342(x)
+ end
+end
+
+def fun_l8_n260(x)
+ if (x < 1)
+ fun_l9_n205(x)
+ else
+ fun_l9_n412(x)
+ end
+end
+
+def fun_l8_n261(x)
+ if (x < 1)
+ fun_l9_n110(x)
+ else
+ fun_l9_n62(x)
+ end
+end
+
+def fun_l8_n262(x)
+ if (x < 1)
+ fun_l9_n706(x)
+ else
+ fun_l9_n903(x)
+ end
+end
+
+def fun_l8_n263(x)
+ if (x < 1)
+ fun_l9_n403(x)
+ else
+ fun_l9_n994(x)
+ end
+end
+
+def fun_l8_n264(x)
+ if (x < 1)
+ fun_l9_n631(x)
+ else
+ fun_l9_n126(x)
+ end
+end
+
+def fun_l8_n265(x)
+ if (x < 1)
+ fun_l9_n216(x)
+ else
+ fun_l9_n573(x)
+ end
+end
+
+def fun_l8_n266(x)
+ if (x < 1)
+ fun_l9_n174(x)
+ else
+ fun_l9_n495(x)
+ end
+end
+
+def fun_l8_n267(x)
+ if (x < 1)
+ fun_l9_n802(x)
+ else
+ fun_l9_n881(x)
+ end
+end
+
+def fun_l8_n268(x)
+ if (x < 1)
+ fun_l9_n148(x)
+ else
+ fun_l9_n399(x)
+ end
+end
+
+def fun_l8_n269(x)
+ if (x < 1)
+ fun_l9_n675(x)
+ else
+ fun_l9_n596(x)
+ end
+end
+
+def fun_l8_n270(x)
+ if (x < 1)
+ fun_l9_n306(x)
+ else
+ fun_l9_n413(x)
+ end
+end
+
+def fun_l8_n271(x)
+ if (x < 1)
+ fun_l9_n205(x)
+ else
+ fun_l9_n569(x)
+ end
+end
+
+def fun_l8_n272(x)
+ if (x < 1)
+ fun_l9_n6(x)
+ else
+ fun_l9_n531(x)
+ end
+end
+
+def fun_l8_n273(x)
+ if (x < 1)
+ fun_l9_n516(x)
+ else
+ fun_l9_n172(x)
+ end
+end
+
+def fun_l8_n274(x)
+ if (x < 1)
+ fun_l9_n641(x)
+ else
+ fun_l9_n85(x)
+ end
+end
+
+def fun_l8_n275(x)
+ if (x < 1)
+ fun_l9_n258(x)
+ else
+ fun_l9_n773(x)
+ end
+end
+
+def fun_l8_n276(x)
+ if (x < 1)
+ fun_l9_n233(x)
+ else
+ fun_l9_n222(x)
+ end
+end
+
+def fun_l8_n277(x)
+ if (x < 1)
+ fun_l9_n615(x)
+ else
+ fun_l9_n598(x)
+ end
+end
+
+def fun_l8_n278(x)
+ if (x < 1)
+ fun_l9_n126(x)
+ else
+ fun_l9_n270(x)
+ end
+end
+
+def fun_l8_n279(x)
+ if (x < 1)
+ fun_l9_n186(x)
+ else
+ fun_l9_n78(x)
+ end
+end
+
+def fun_l8_n280(x)
+ if (x < 1)
+ fun_l9_n731(x)
+ else
+ fun_l9_n114(x)
+ end
+end
+
+def fun_l8_n281(x)
+ if (x < 1)
+ fun_l9_n513(x)
+ else
+ fun_l9_n69(x)
+ end
+end
+
+def fun_l8_n282(x)
+ if (x < 1)
+ fun_l9_n208(x)
+ else
+ fun_l9_n466(x)
+ end
+end
+
+def fun_l8_n283(x)
+ if (x < 1)
+ fun_l9_n958(x)
+ else
+ fun_l9_n86(x)
+ end
+end
+
+def fun_l8_n284(x)
+ if (x < 1)
+ fun_l9_n663(x)
+ else
+ fun_l9_n619(x)
+ end
+end
+
+def fun_l8_n285(x)
+ if (x < 1)
+ fun_l9_n698(x)
+ else
+ fun_l9_n97(x)
+ end
+end
+
+def fun_l8_n286(x)
+ if (x < 1)
+ fun_l9_n544(x)
+ else
+ fun_l9_n791(x)
+ end
+end
+
+def fun_l8_n287(x)
+ if (x < 1)
+ fun_l9_n51(x)
+ else
+ fun_l9_n415(x)
+ end
+end
+
+def fun_l8_n288(x)
+ if (x < 1)
+ fun_l9_n942(x)
+ else
+ fun_l9_n11(x)
+ end
+end
+
+def fun_l8_n289(x)
+ if (x < 1)
+ fun_l9_n386(x)
+ else
+ fun_l9_n507(x)
+ end
+end
+
+def fun_l8_n290(x)
+ if (x < 1)
+ fun_l9_n983(x)
+ else
+ fun_l9_n81(x)
+ end
+end
+
+def fun_l8_n291(x)
+ if (x < 1)
+ fun_l9_n403(x)
+ else
+ fun_l9_n628(x)
+ end
+end
+
+def fun_l8_n292(x)
+ if (x < 1)
+ fun_l9_n479(x)
+ else
+ fun_l9_n379(x)
+ end
+end
+
+def fun_l8_n293(x)
+ if (x < 1)
+ fun_l9_n284(x)
+ else
+ fun_l9_n109(x)
+ end
+end
+
+def fun_l8_n294(x)
+ if (x < 1)
+ fun_l9_n29(x)
+ else
+ fun_l9_n802(x)
+ end
+end
+
+def fun_l8_n295(x)
+ if (x < 1)
+ fun_l9_n579(x)
+ else
+ fun_l9_n371(x)
+ end
+end
+
+def fun_l8_n296(x)
+ if (x < 1)
+ fun_l9_n96(x)
+ else
+ fun_l9_n632(x)
+ end
+end
+
+def fun_l8_n297(x)
+ if (x < 1)
+ fun_l9_n442(x)
+ else
+ fun_l9_n396(x)
+ end
+end
+
+def fun_l8_n298(x)
+ if (x < 1)
+ fun_l9_n902(x)
+ else
+ fun_l9_n804(x)
+ end
+end
+
+def fun_l8_n299(x)
+ if (x < 1)
+ fun_l9_n561(x)
+ else
+ fun_l9_n952(x)
+ end
+end
+
+def fun_l8_n300(x)
+ if (x < 1)
+ fun_l9_n757(x)
+ else
+ fun_l9_n819(x)
+ end
+end
+
+def fun_l8_n301(x)
+ if (x < 1)
+ fun_l9_n97(x)
+ else
+ fun_l9_n892(x)
+ end
+end
+
+def fun_l8_n302(x)
+ if (x < 1)
+ fun_l9_n67(x)
+ else
+ fun_l9_n765(x)
+ end
+end
+
+def fun_l8_n303(x)
+ if (x < 1)
+ fun_l9_n166(x)
+ else
+ fun_l9_n769(x)
+ end
+end
+
+def fun_l8_n304(x)
+ if (x < 1)
+ fun_l9_n592(x)
+ else
+ fun_l9_n423(x)
+ end
+end
+
+def fun_l8_n305(x)
+ if (x < 1)
+ fun_l9_n354(x)
+ else
+ fun_l9_n953(x)
+ end
+end
+
+def fun_l8_n306(x)
+ if (x < 1)
+ fun_l9_n857(x)
+ else
+ fun_l9_n18(x)
+ end
+end
+
+def fun_l8_n307(x)
+ if (x < 1)
+ fun_l9_n445(x)
+ else
+ fun_l9_n796(x)
+ end
+end
+
+def fun_l8_n308(x)
+ if (x < 1)
+ fun_l9_n293(x)
+ else
+ fun_l9_n304(x)
+ end
+end
+
+def fun_l8_n309(x)
+ if (x < 1)
+ fun_l9_n859(x)
+ else
+ fun_l9_n282(x)
+ end
+end
+
+def fun_l8_n310(x)
+ if (x < 1)
+ fun_l9_n133(x)
+ else
+ fun_l9_n90(x)
+ end
+end
+
+def fun_l8_n311(x)
+ if (x < 1)
+ fun_l9_n997(x)
+ else
+ fun_l9_n201(x)
+ end
+end
+
+def fun_l8_n312(x)
+ if (x < 1)
+ fun_l9_n140(x)
+ else
+ fun_l9_n772(x)
+ end
+end
+
+def fun_l8_n313(x)
+ if (x < 1)
+ fun_l9_n761(x)
+ else
+ fun_l9_n980(x)
+ end
+end
+
+def fun_l8_n314(x)
+ if (x < 1)
+ fun_l9_n357(x)
+ else
+ fun_l9_n552(x)
+ end
+end
+
+def fun_l8_n315(x)
+ if (x < 1)
+ fun_l9_n312(x)
+ else
+ fun_l9_n412(x)
+ end
+end
+
+def fun_l8_n316(x)
+ if (x < 1)
+ fun_l9_n700(x)
+ else
+ fun_l9_n551(x)
+ end
+end
+
+def fun_l8_n317(x)
+ if (x < 1)
+ fun_l9_n623(x)
+ else
+ fun_l9_n219(x)
+ end
+end
+
+def fun_l8_n318(x)
+ if (x < 1)
+ fun_l9_n613(x)
+ else
+ fun_l9_n959(x)
+ end
+end
+
+def fun_l8_n319(x)
+ if (x < 1)
+ fun_l9_n978(x)
+ else
+ fun_l9_n596(x)
+ end
+end
+
+def fun_l8_n320(x)
+ if (x < 1)
+ fun_l9_n542(x)
+ else
+ fun_l9_n527(x)
+ end
+end
+
+def fun_l8_n321(x)
+ if (x < 1)
+ fun_l9_n877(x)
+ else
+ fun_l9_n108(x)
+ end
+end
+
+def fun_l8_n322(x)
+ if (x < 1)
+ fun_l9_n817(x)
+ else
+ fun_l9_n476(x)
+ end
+end
+
+def fun_l8_n323(x)
+ if (x < 1)
+ fun_l9_n765(x)
+ else
+ fun_l9_n672(x)
+ end
+end
+
+def fun_l8_n324(x)
+ if (x < 1)
+ fun_l9_n863(x)
+ else
+ fun_l9_n605(x)
+ end
+end
+
+def fun_l8_n325(x)
+ if (x < 1)
+ fun_l9_n566(x)
+ else
+ fun_l9_n592(x)
+ end
+end
+
+def fun_l8_n326(x)
+ if (x < 1)
+ fun_l9_n607(x)
+ else
+ fun_l9_n968(x)
+ end
+end
+
+def fun_l8_n327(x)
+ if (x < 1)
+ fun_l9_n36(x)
+ else
+ fun_l9_n380(x)
+ end
+end
+
+def fun_l8_n328(x)
+ if (x < 1)
+ fun_l9_n597(x)
+ else
+ fun_l9_n664(x)
+ end
+end
+
+def fun_l8_n329(x)
+ if (x < 1)
+ fun_l9_n195(x)
+ else
+ fun_l9_n268(x)
+ end
+end
+
+def fun_l8_n330(x)
+ if (x < 1)
+ fun_l9_n419(x)
+ else
+ fun_l9_n715(x)
+ end
+end
+
+def fun_l8_n331(x)
+ if (x < 1)
+ fun_l9_n451(x)
+ else
+ fun_l9_n518(x)
+ end
+end
+
+def fun_l8_n332(x)
+ if (x < 1)
+ fun_l9_n106(x)
+ else
+ fun_l9_n236(x)
+ end
+end
+
+def fun_l8_n333(x)
+ if (x < 1)
+ fun_l9_n611(x)
+ else
+ fun_l9_n825(x)
+ end
+end
+
+def fun_l8_n334(x)
+ if (x < 1)
+ fun_l9_n394(x)
+ else
+ fun_l9_n34(x)
+ end
+end
+
+def fun_l8_n335(x)
+ if (x < 1)
+ fun_l9_n63(x)
+ else
+ fun_l9_n58(x)
+ end
+end
+
+def fun_l8_n336(x)
+ if (x < 1)
+ fun_l9_n475(x)
+ else
+ fun_l9_n455(x)
+ end
+end
+
+def fun_l8_n337(x)
+ if (x < 1)
+ fun_l9_n836(x)
+ else
+ fun_l9_n318(x)
+ end
+end
+
+def fun_l8_n338(x)
+ if (x < 1)
+ fun_l9_n844(x)
+ else
+ fun_l9_n21(x)
+ end
+end
+
+def fun_l8_n339(x)
+ if (x < 1)
+ fun_l9_n628(x)
+ else
+ fun_l9_n721(x)
+ end
+end
+
+def fun_l8_n340(x)
+ if (x < 1)
+ fun_l9_n966(x)
+ else
+ fun_l9_n833(x)
+ end
+end
+
+def fun_l8_n341(x)
+ if (x < 1)
+ fun_l9_n267(x)
+ else
+ fun_l9_n28(x)
+ end
+end
+
+def fun_l8_n342(x)
+ if (x < 1)
+ fun_l9_n204(x)
+ else
+ fun_l9_n838(x)
+ end
+end
+
+def fun_l8_n343(x)
+ if (x < 1)
+ fun_l9_n151(x)
+ else
+ fun_l9_n382(x)
+ end
+end
+
+def fun_l8_n344(x)
+ if (x < 1)
+ fun_l9_n409(x)
+ else
+ fun_l9_n591(x)
+ end
+end
+
+def fun_l8_n345(x)
+ if (x < 1)
+ fun_l9_n680(x)
+ else
+ fun_l9_n912(x)
+ end
+end
+
+def fun_l8_n346(x)
+ if (x < 1)
+ fun_l9_n150(x)
+ else
+ fun_l9_n34(x)
+ end
+end
+
+def fun_l8_n347(x)
+ if (x < 1)
+ fun_l9_n538(x)
+ else
+ fun_l9_n441(x)
+ end
+end
+
+def fun_l8_n348(x)
+ if (x < 1)
+ fun_l9_n707(x)
+ else
+ fun_l9_n199(x)
+ end
+end
+
+def fun_l8_n349(x)
+ if (x < 1)
+ fun_l9_n245(x)
+ else
+ fun_l9_n809(x)
+ end
+end
+
+def fun_l8_n350(x)
+ if (x < 1)
+ fun_l9_n16(x)
+ else
+ fun_l9_n565(x)
+ end
+end
+
+def fun_l8_n351(x)
+ if (x < 1)
+ fun_l9_n857(x)
+ else
+ fun_l9_n37(x)
+ end
+end
+
+def fun_l8_n352(x)
+ if (x < 1)
+ fun_l9_n816(x)
+ else
+ fun_l9_n941(x)
+ end
+end
+
+def fun_l8_n353(x)
+ if (x < 1)
+ fun_l9_n605(x)
+ else
+ fun_l9_n476(x)
+ end
+end
+
+def fun_l8_n354(x)
+ if (x < 1)
+ fun_l9_n641(x)
+ else
+ fun_l9_n319(x)
+ end
+end
+
+def fun_l8_n355(x)
+ if (x < 1)
+ fun_l9_n133(x)
+ else
+ fun_l9_n676(x)
+ end
+end
+
+def fun_l8_n356(x)
+ if (x < 1)
+ fun_l9_n826(x)
+ else
+ fun_l9_n926(x)
+ end
+end
+
+def fun_l8_n357(x)
+ if (x < 1)
+ fun_l9_n17(x)
+ else
+ fun_l9_n486(x)
+ end
+end
+
+def fun_l8_n358(x)
+ if (x < 1)
+ fun_l9_n90(x)
+ else
+ fun_l9_n744(x)
+ end
+end
+
+def fun_l8_n359(x)
+ if (x < 1)
+ fun_l9_n745(x)
+ else
+ fun_l9_n158(x)
+ end
+end
+
+def fun_l8_n360(x)
+ if (x < 1)
+ fun_l9_n261(x)
+ else
+ fun_l9_n878(x)
+ end
+end
+
+def fun_l8_n361(x)
+ if (x < 1)
+ fun_l9_n832(x)
+ else
+ fun_l9_n905(x)
+ end
+end
+
+def fun_l8_n362(x)
+ if (x < 1)
+ fun_l9_n879(x)
+ else
+ fun_l9_n475(x)
+ end
+end
+
+def fun_l8_n363(x)
+ if (x < 1)
+ fun_l9_n586(x)
+ else
+ fun_l9_n272(x)
+ end
+end
+
+def fun_l8_n364(x)
+ if (x < 1)
+ fun_l9_n469(x)
+ else
+ fun_l9_n918(x)
+ end
+end
+
+def fun_l8_n365(x)
+ if (x < 1)
+ fun_l9_n568(x)
+ else
+ fun_l9_n777(x)
+ end
+end
+
+def fun_l8_n366(x)
+ if (x < 1)
+ fun_l9_n662(x)
+ else
+ fun_l9_n957(x)
+ end
+end
+
+def fun_l8_n367(x)
+ if (x < 1)
+ fun_l9_n26(x)
+ else
+ fun_l9_n593(x)
+ end
+end
+
+def fun_l8_n368(x)
+ if (x < 1)
+ fun_l9_n766(x)
+ else
+ fun_l9_n598(x)
+ end
+end
+
+def fun_l8_n369(x)
+ if (x < 1)
+ fun_l9_n362(x)
+ else
+ fun_l9_n491(x)
+ end
+end
+
+def fun_l8_n370(x)
+ if (x < 1)
+ fun_l9_n205(x)
+ else
+ fun_l9_n585(x)
+ end
+end
+
+def fun_l8_n371(x)
+ if (x < 1)
+ fun_l9_n301(x)
+ else
+ fun_l9_n796(x)
+ end
+end
+
+def fun_l8_n372(x)
+ if (x < 1)
+ fun_l9_n527(x)
+ else
+ fun_l9_n31(x)
+ end
+end
+
+def fun_l8_n373(x)
+ if (x < 1)
+ fun_l9_n461(x)
+ else
+ fun_l9_n42(x)
+ end
+end
+
+def fun_l8_n374(x)
+ if (x < 1)
+ fun_l9_n288(x)
+ else
+ fun_l9_n534(x)
+ end
+end
+
+def fun_l8_n375(x)
+ if (x < 1)
+ fun_l9_n558(x)
+ else
+ fun_l9_n403(x)
+ end
+end
+
+def fun_l8_n376(x)
+ if (x < 1)
+ fun_l9_n835(x)
+ else
+ fun_l9_n390(x)
+ end
+end
+
+def fun_l8_n377(x)
+ if (x < 1)
+ fun_l9_n658(x)
+ else
+ fun_l9_n768(x)
+ end
+end
+
+def fun_l8_n378(x)
+ if (x < 1)
+ fun_l9_n856(x)
+ else
+ fun_l9_n299(x)
+ end
+end
+
+def fun_l8_n379(x)
+ if (x < 1)
+ fun_l9_n196(x)
+ else
+ fun_l9_n540(x)
+ end
+end
+
+def fun_l8_n380(x)
+ if (x < 1)
+ fun_l9_n70(x)
+ else
+ fun_l9_n627(x)
+ end
+end
+
+def fun_l8_n381(x)
+ if (x < 1)
+ fun_l9_n28(x)
+ else
+ fun_l9_n377(x)
+ end
+end
+
+def fun_l8_n382(x)
+ if (x < 1)
+ fun_l9_n955(x)
+ else
+ fun_l9_n124(x)
+ end
+end
+
+def fun_l8_n383(x)
+ if (x < 1)
+ fun_l9_n16(x)
+ else
+ fun_l9_n783(x)
+ end
+end
+
+def fun_l8_n384(x)
+ if (x < 1)
+ fun_l9_n843(x)
+ else
+ fun_l9_n801(x)
+ end
+end
+
+def fun_l8_n385(x)
+ if (x < 1)
+ fun_l9_n876(x)
+ else
+ fun_l9_n152(x)
+ end
+end
+
+def fun_l8_n386(x)
+ if (x < 1)
+ fun_l9_n6(x)
+ else
+ fun_l9_n432(x)
+ end
+end
+
+def fun_l8_n387(x)
+ if (x < 1)
+ fun_l9_n636(x)
+ else
+ fun_l9_n325(x)
+ end
+end
+
+def fun_l8_n388(x)
+ if (x < 1)
+ fun_l9_n267(x)
+ else
+ fun_l9_n716(x)
+ end
+end
+
+def fun_l8_n389(x)
+ if (x < 1)
+ fun_l9_n898(x)
+ else
+ fun_l9_n776(x)
+ end
+end
+
+def fun_l8_n390(x)
+ if (x < 1)
+ fun_l9_n481(x)
+ else
+ fun_l9_n878(x)
+ end
+end
+
+def fun_l8_n391(x)
+ if (x < 1)
+ fun_l9_n398(x)
+ else
+ fun_l9_n159(x)
+ end
+end
+
+def fun_l8_n392(x)
+ if (x < 1)
+ fun_l9_n889(x)
+ else
+ fun_l9_n517(x)
+ end
+end
+
+def fun_l8_n393(x)
+ if (x < 1)
+ fun_l9_n460(x)
+ else
+ fun_l9_n440(x)
+ end
+end
+
+def fun_l8_n394(x)
+ if (x < 1)
+ fun_l9_n576(x)
+ else
+ fun_l9_n421(x)
+ end
+end
+
+def fun_l8_n395(x)
+ if (x < 1)
+ fun_l9_n310(x)
+ else
+ fun_l9_n646(x)
+ end
+end
+
+def fun_l8_n396(x)
+ if (x < 1)
+ fun_l9_n914(x)
+ else
+ fun_l9_n414(x)
+ end
+end
+
+def fun_l8_n397(x)
+ if (x < 1)
+ fun_l9_n330(x)
+ else
+ fun_l9_n520(x)
+ end
+end
+
+def fun_l8_n398(x)
+ if (x < 1)
+ fun_l9_n175(x)
+ else
+ fun_l9_n975(x)
+ end
+end
+
+def fun_l8_n399(x)
+ if (x < 1)
+ fun_l9_n443(x)
+ else
+ fun_l9_n964(x)
+ end
+end
+
+def fun_l8_n400(x)
+ if (x < 1)
+ fun_l9_n810(x)
+ else
+ fun_l9_n102(x)
+ end
+end
+
+def fun_l8_n401(x)
+ if (x < 1)
+ fun_l9_n352(x)
+ else
+ fun_l9_n295(x)
+ end
+end
+
+def fun_l8_n402(x)
+ if (x < 1)
+ fun_l9_n980(x)
+ else
+ fun_l9_n974(x)
+ end
+end
+
+def fun_l8_n403(x)
+ if (x < 1)
+ fun_l9_n169(x)
+ else
+ fun_l9_n877(x)
+ end
+end
+
+def fun_l8_n404(x)
+ if (x < 1)
+ fun_l9_n333(x)
+ else
+ fun_l9_n306(x)
+ end
+end
+
+def fun_l8_n405(x)
+ if (x < 1)
+ fun_l9_n183(x)
+ else
+ fun_l9_n704(x)
+ end
+end
+
+def fun_l8_n406(x)
+ if (x < 1)
+ fun_l9_n532(x)
+ else
+ fun_l9_n684(x)
+ end
+end
+
+def fun_l8_n407(x)
+ if (x < 1)
+ fun_l9_n526(x)
+ else
+ fun_l9_n287(x)
+ end
+end
+
+def fun_l8_n408(x)
+ if (x < 1)
+ fun_l9_n377(x)
+ else
+ fun_l9_n351(x)
+ end
+end
+
+def fun_l8_n409(x)
+ if (x < 1)
+ fun_l9_n770(x)
+ else
+ fun_l9_n738(x)
+ end
+end
+
+def fun_l8_n410(x)
+ if (x < 1)
+ fun_l9_n61(x)
+ else
+ fun_l9_n499(x)
+ end
+end
+
+def fun_l8_n411(x)
+ if (x < 1)
+ fun_l9_n156(x)
+ else
+ fun_l9_n247(x)
+ end
+end
+
+def fun_l8_n412(x)
+ if (x < 1)
+ fun_l9_n431(x)
+ else
+ fun_l9_n636(x)
+ end
+end
+
+def fun_l8_n413(x)
+ if (x < 1)
+ fun_l9_n540(x)
+ else
+ fun_l9_n329(x)
+ end
+end
+
+def fun_l8_n414(x)
+ if (x < 1)
+ fun_l9_n49(x)
+ else
+ fun_l9_n979(x)
+ end
+end
+
+def fun_l8_n415(x)
+ if (x < 1)
+ fun_l9_n94(x)
+ else
+ fun_l9_n487(x)
+ end
+end
+
+def fun_l8_n416(x)
+ if (x < 1)
+ fun_l9_n679(x)
+ else
+ fun_l9_n644(x)
+ end
+end
+
+def fun_l8_n417(x)
+ if (x < 1)
+ fun_l9_n907(x)
+ else
+ fun_l9_n324(x)
+ end
+end
+
+def fun_l8_n418(x)
+ if (x < 1)
+ fun_l9_n426(x)
+ else
+ fun_l9_n495(x)
+ end
+end
+
+def fun_l8_n419(x)
+ if (x < 1)
+ fun_l9_n273(x)
+ else
+ fun_l9_n838(x)
+ end
+end
+
+def fun_l8_n420(x)
+ if (x < 1)
+ fun_l9_n631(x)
+ else
+ fun_l9_n205(x)
+ end
+end
+
+def fun_l8_n421(x)
+ if (x < 1)
+ fun_l9_n484(x)
+ else
+ fun_l9_n80(x)
+ end
+end
+
+def fun_l8_n422(x)
+ if (x < 1)
+ fun_l9_n908(x)
+ else
+ fun_l9_n514(x)
+ end
+end
+
+def fun_l8_n423(x)
+ if (x < 1)
+ fun_l9_n265(x)
+ else
+ fun_l9_n190(x)
+ end
+end
+
+def fun_l8_n424(x)
+ if (x < 1)
+ fun_l9_n463(x)
+ else
+ fun_l9_n714(x)
+ end
+end
+
+def fun_l8_n425(x)
+ if (x < 1)
+ fun_l9_n780(x)
+ else
+ fun_l9_n444(x)
+ end
+end
+
+def fun_l8_n426(x)
+ if (x < 1)
+ fun_l9_n418(x)
+ else
+ fun_l9_n518(x)
+ end
+end
+
+def fun_l8_n427(x)
+ if (x < 1)
+ fun_l9_n912(x)
+ else
+ fun_l9_n27(x)
+ end
+end
+
+def fun_l8_n428(x)
+ if (x < 1)
+ fun_l9_n157(x)
+ else
+ fun_l9_n547(x)
+ end
+end
+
+def fun_l8_n429(x)
+ if (x < 1)
+ fun_l9_n760(x)
+ else
+ fun_l9_n466(x)
+ end
+end
+
+def fun_l8_n430(x)
+ if (x < 1)
+ fun_l9_n726(x)
+ else
+ fun_l9_n609(x)
+ end
+end
+
+def fun_l8_n431(x)
+ if (x < 1)
+ fun_l9_n206(x)
+ else
+ fun_l9_n65(x)
+ end
+end
+
+def fun_l8_n432(x)
+ if (x < 1)
+ fun_l9_n396(x)
+ else
+ fun_l9_n325(x)
+ end
+end
+
+def fun_l8_n433(x)
+ if (x < 1)
+ fun_l9_n100(x)
+ else
+ fun_l9_n519(x)
+ end
+end
+
+def fun_l8_n434(x)
+ if (x < 1)
+ fun_l9_n923(x)
+ else
+ fun_l9_n387(x)
+ end
+end
+
+def fun_l8_n435(x)
+ if (x < 1)
+ fun_l9_n334(x)
+ else
+ fun_l9_n866(x)
+ end
+end
+
+def fun_l8_n436(x)
+ if (x < 1)
+ fun_l9_n896(x)
+ else
+ fun_l9_n780(x)
+ end
+end
+
+def fun_l8_n437(x)
+ if (x < 1)
+ fun_l9_n328(x)
+ else
+ fun_l9_n776(x)
+ end
+end
+
+def fun_l8_n438(x)
+ if (x < 1)
+ fun_l9_n414(x)
+ else
+ fun_l9_n884(x)
+ end
+end
+
+def fun_l8_n439(x)
+ if (x < 1)
+ fun_l9_n528(x)
+ else
+ fun_l9_n419(x)
+ end
+end
+
+def fun_l8_n440(x)
+ if (x < 1)
+ fun_l9_n192(x)
+ else
+ fun_l9_n973(x)
+ end
+end
+
+def fun_l8_n441(x)
+ if (x < 1)
+ fun_l9_n679(x)
+ else
+ fun_l9_n135(x)
+ end
+end
+
+def fun_l8_n442(x)
+ if (x < 1)
+ fun_l9_n294(x)
+ else
+ fun_l9_n138(x)
+ end
+end
+
+def fun_l8_n443(x)
+ if (x < 1)
+ fun_l9_n784(x)
+ else
+ fun_l9_n940(x)
+ end
+end
+
+def fun_l8_n444(x)
+ if (x < 1)
+ fun_l9_n834(x)
+ else
+ fun_l9_n127(x)
+ end
+end
+
+def fun_l8_n445(x)
+ if (x < 1)
+ fun_l9_n217(x)
+ else
+ fun_l9_n788(x)
+ end
+end
+
+def fun_l8_n446(x)
+ if (x < 1)
+ fun_l9_n173(x)
+ else
+ fun_l9_n49(x)
+ end
+end
+
+def fun_l8_n447(x)
+ if (x < 1)
+ fun_l9_n493(x)
+ else
+ fun_l9_n384(x)
+ end
+end
+
+def fun_l8_n448(x)
+ if (x < 1)
+ fun_l9_n770(x)
+ else
+ fun_l9_n761(x)
+ end
+end
+
+def fun_l8_n449(x)
+ if (x < 1)
+ fun_l9_n633(x)
+ else
+ fun_l9_n555(x)
+ end
+end
+
+def fun_l8_n450(x)
+ if (x < 1)
+ fun_l9_n25(x)
+ else
+ fun_l9_n714(x)
+ end
+end
+
+def fun_l8_n451(x)
+ if (x < 1)
+ fun_l9_n960(x)
+ else
+ fun_l9_n371(x)
+ end
+end
+
+def fun_l8_n452(x)
+ if (x < 1)
+ fun_l9_n733(x)
+ else
+ fun_l9_n996(x)
+ end
+end
+
+def fun_l8_n453(x)
+ if (x < 1)
+ fun_l9_n628(x)
+ else
+ fun_l9_n512(x)
+ end
+end
+
+def fun_l8_n454(x)
+ if (x < 1)
+ fun_l9_n406(x)
+ else
+ fun_l9_n671(x)
+ end
+end
+
+def fun_l8_n455(x)
+ if (x < 1)
+ fun_l9_n47(x)
+ else
+ fun_l9_n102(x)
+ end
+end
+
+def fun_l8_n456(x)
+ if (x < 1)
+ fun_l9_n85(x)
+ else
+ fun_l9_n591(x)
+ end
+end
+
+def fun_l8_n457(x)
+ if (x < 1)
+ fun_l9_n234(x)
+ else
+ fun_l9_n209(x)
+ end
+end
+
+def fun_l8_n458(x)
+ if (x < 1)
+ fun_l9_n186(x)
+ else
+ fun_l9_n928(x)
+ end
+end
+
+def fun_l8_n459(x)
+ if (x < 1)
+ fun_l9_n36(x)
+ else
+ fun_l9_n783(x)
+ end
+end
+
+def fun_l8_n460(x)
+ if (x < 1)
+ fun_l9_n775(x)
+ else
+ fun_l9_n641(x)
+ end
+end
+
+def fun_l8_n461(x)
+ if (x < 1)
+ fun_l9_n426(x)
+ else
+ fun_l9_n740(x)
+ end
+end
+
+def fun_l8_n462(x)
+ if (x < 1)
+ fun_l9_n770(x)
+ else
+ fun_l9_n113(x)
+ end
+end
+
+def fun_l8_n463(x)
+ if (x < 1)
+ fun_l9_n94(x)
+ else
+ fun_l9_n574(x)
+ end
+end
+
+def fun_l8_n464(x)
+ if (x < 1)
+ fun_l9_n457(x)
+ else
+ fun_l9_n776(x)
+ end
+end
+
+def fun_l8_n465(x)
+ if (x < 1)
+ fun_l9_n252(x)
+ else
+ fun_l9_n182(x)
+ end
+end
+
+def fun_l8_n466(x)
+ if (x < 1)
+ fun_l9_n157(x)
+ else
+ fun_l9_n849(x)
+ end
+end
+
+def fun_l8_n467(x)
+ if (x < 1)
+ fun_l9_n393(x)
+ else
+ fun_l9_n437(x)
+ end
+end
+
+def fun_l8_n468(x)
+ if (x < 1)
+ fun_l9_n269(x)
+ else
+ fun_l9_n381(x)
+ end
+end
+
+def fun_l8_n469(x)
+ if (x < 1)
+ fun_l9_n97(x)
+ else
+ fun_l9_n184(x)
+ end
+end
+
+def fun_l8_n470(x)
+ if (x < 1)
+ fun_l9_n157(x)
+ else
+ fun_l9_n621(x)
+ end
+end
+
+def fun_l8_n471(x)
+ if (x < 1)
+ fun_l9_n627(x)
+ else
+ fun_l9_n793(x)
+ end
+end
+
+def fun_l8_n472(x)
+ if (x < 1)
+ fun_l9_n117(x)
+ else
+ fun_l9_n318(x)
+ end
+end
+
+def fun_l8_n473(x)
+ if (x < 1)
+ fun_l9_n238(x)
+ else
+ fun_l9_n559(x)
+ end
+end
+
+def fun_l8_n474(x)
+ if (x < 1)
+ fun_l9_n81(x)
+ else
+ fun_l9_n355(x)
+ end
+end
+
+def fun_l8_n475(x)
+ if (x < 1)
+ fun_l9_n889(x)
+ else
+ fun_l9_n940(x)
+ end
+end
+
+def fun_l8_n476(x)
+ if (x < 1)
+ fun_l9_n358(x)
+ else
+ fun_l9_n52(x)
+ end
+end
+
+def fun_l8_n477(x)
+ if (x < 1)
+ fun_l9_n144(x)
+ else
+ fun_l9_n575(x)
+ end
+end
+
+def fun_l8_n478(x)
+ if (x < 1)
+ fun_l9_n975(x)
+ else
+ fun_l9_n740(x)
+ end
+end
+
+def fun_l8_n479(x)
+ if (x < 1)
+ fun_l9_n552(x)
+ else
+ fun_l9_n169(x)
+ end
+end
+
+def fun_l8_n480(x)
+ if (x < 1)
+ fun_l9_n854(x)
+ else
+ fun_l9_n524(x)
+ end
+end
+
+def fun_l8_n481(x)
+ if (x < 1)
+ fun_l9_n461(x)
+ else
+ fun_l9_n65(x)
+ end
+end
+
+def fun_l8_n482(x)
+ if (x < 1)
+ fun_l9_n809(x)
+ else
+ fun_l9_n844(x)
+ end
+end
+
+def fun_l8_n483(x)
+ if (x < 1)
+ fun_l9_n741(x)
+ else
+ fun_l9_n327(x)
+ end
+end
+
+def fun_l8_n484(x)
+ if (x < 1)
+ fun_l9_n560(x)
+ else
+ fun_l9_n385(x)
+ end
+end
+
+def fun_l8_n485(x)
+ if (x < 1)
+ fun_l9_n798(x)
+ else
+ fun_l9_n154(x)
+ end
+end
+
+def fun_l8_n486(x)
+ if (x < 1)
+ fun_l9_n892(x)
+ else
+ fun_l9_n367(x)
+ end
+end
+
+def fun_l8_n487(x)
+ if (x < 1)
+ fun_l9_n423(x)
+ else
+ fun_l9_n723(x)
+ end
+end
+
+def fun_l8_n488(x)
+ if (x < 1)
+ fun_l9_n618(x)
+ else
+ fun_l9_n649(x)
+ end
+end
+
+def fun_l8_n489(x)
+ if (x < 1)
+ fun_l9_n261(x)
+ else
+ fun_l9_n495(x)
+ end
+end
+
+def fun_l8_n490(x)
+ if (x < 1)
+ fun_l9_n566(x)
+ else
+ fun_l9_n405(x)
+ end
+end
+
+def fun_l8_n491(x)
+ if (x < 1)
+ fun_l9_n718(x)
+ else
+ fun_l9_n674(x)
+ end
+end
+
+def fun_l8_n492(x)
+ if (x < 1)
+ fun_l9_n487(x)
+ else
+ fun_l9_n95(x)
+ end
+end
+
+def fun_l8_n493(x)
+ if (x < 1)
+ fun_l9_n473(x)
+ else
+ fun_l9_n722(x)
+ end
+end
+
+def fun_l8_n494(x)
+ if (x < 1)
+ fun_l9_n460(x)
+ else
+ fun_l9_n157(x)
+ end
+end
+
+def fun_l8_n495(x)
+ if (x < 1)
+ fun_l9_n812(x)
+ else
+ fun_l9_n807(x)
+ end
+end
+
+def fun_l8_n496(x)
+ if (x < 1)
+ fun_l9_n609(x)
+ else
+ fun_l9_n697(x)
+ end
+end
+
+def fun_l8_n497(x)
+ if (x < 1)
+ fun_l9_n894(x)
+ else
+ fun_l9_n580(x)
+ end
+end
+
+def fun_l8_n498(x)
+ if (x < 1)
+ fun_l9_n642(x)
+ else
+ fun_l9_n13(x)
+ end
+end
+
+def fun_l8_n499(x)
+ if (x < 1)
+ fun_l9_n961(x)
+ else
+ fun_l9_n669(x)
+ end
+end
+
+def fun_l8_n500(x)
+ if (x < 1)
+ fun_l9_n587(x)
+ else
+ fun_l9_n828(x)
+ end
+end
+
+def fun_l8_n501(x)
+ if (x < 1)
+ fun_l9_n30(x)
+ else
+ fun_l9_n966(x)
+ end
+end
+
+def fun_l8_n502(x)
+ if (x < 1)
+ fun_l9_n436(x)
+ else
+ fun_l9_n170(x)
+ end
+end
+
+def fun_l8_n503(x)
+ if (x < 1)
+ fun_l9_n20(x)
+ else
+ fun_l9_n927(x)
+ end
+end
+
+def fun_l8_n504(x)
+ if (x < 1)
+ fun_l9_n326(x)
+ else
+ fun_l9_n223(x)
+ end
+end
+
+def fun_l8_n505(x)
+ if (x < 1)
+ fun_l9_n911(x)
+ else
+ fun_l9_n746(x)
+ end
+end
+
+def fun_l8_n506(x)
+ if (x < 1)
+ fun_l9_n333(x)
+ else
+ fun_l9_n773(x)
+ end
+end
+
+def fun_l8_n507(x)
+ if (x < 1)
+ fun_l9_n514(x)
+ else
+ fun_l9_n882(x)
+ end
+end
+
+def fun_l8_n508(x)
+ if (x < 1)
+ fun_l9_n918(x)
+ else
+ fun_l9_n713(x)
+ end
+end
+
+def fun_l8_n509(x)
+ if (x < 1)
+ fun_l9_n694(x)
+ else
+ fun_l9_n950(x)
+ end
+end
+
+def fun_l8_n510(x)
+ if (x < 1)
+ fun_l9_n77(x)
+ else
+ fun_l9_n65(x)
+ end
+end
+
+def fun_l8_n511(x)
+ if (x < 1)
+ fun_l9_n506(x)
+ else
+ fun_l9_n144(x)
+ end
+end
+
+def fun_l8_n512(x)
+ if (x < 1)
+ fun_l9_n69(x)
+ else
+ fun_l9_n308(x)
+ end
+end
+
+def fun_l8_n513(x)
+ if (x < 1)
+ fun_l9_n377(x)
+ else
+ fun_l9_n531(x)
+ end
+end
+
+def fun_l8_n514(x)
+ if (x < 1)
+ fun_l9_n342(x)
+ else
+ fun_l9_n265(x)
+ end
+end
+
+def fun_l8_n515(x)
+ if (x < 1)
+ fun_l9_n453(x)
+ else
+ fun_l9_n227(x)
+ end
+end
+
+def fun_l8_n516(x)
+ if (x < 1)
+ fun_l9_n396(x)
+ else
+ fun_l9_n130(x)
+ end
+end
+
+def fun_l8_n517(x)
+ if (x < 1)
+ fun_l9_n715(x)
+ else
+ fun_l9_n953(x)
+ end
+end
+
+def fun_l8_n518(x)
+ if (x < 1)
+ fun_l9_n326(x)
+ else
+ fun_l9_n949(x)
+ end
+end
+
+def fun_l8_n519(x)
+ if (x < 1)
+ fun_l9_n535(x)
+ else
+ fun_l9_n41(x)
+ end
+end
+
+def fun_l8_n520(x)
+ if (x < 1)
+ fun_l9_n985(x)
+ else
+ fun_l9_n942(x)
+ end
+end
+
+def fun_l8_n521(x)
+ if (x < 1)
+ fun_l9_n347(x)
+ else
+ fun_l9_n263(x)
+ end
+end
+
+def fun_l8_n522(x)
+ if (x < 1)
+ fun_l9_n532(x)
+ else
+ fun_l9_n378(x)
+ end
+end
+
+def fun_l8_n523(x)
+ if (x < 1)
+ fun_l9_n362(x)
+ else
+ fun_l9_n630(x)
+ end
+end
+
+def fun_l8_n524(x)
+ if (x < 1)
+ fun_l9_n382(x)
+ else
+ fun_l9_n256(x)
+ end
+end
+
+def fun_l8_n525(x)
+ if (x < 1)
+ fun_l9_n444(x)
+ else
+ fun_l9_n756(x)
+ end
+end
+
+def fun_l8_n526(x)
+ if (x < 1)
+ fun_l9_n5(x)
+ else
+ fun_l9_n754(x)
+ end
+end
+
+def fun_l8_n527(x)
+ if (x < 1)
+ fun_l9_n157(x)
+ else
+ fun_l9_n279(x)
+ end
+end
+
+def fun_l8_n528(x)
+ if (x < 1)
+ fun_l9_n110(x)
+ else
+ fun_l9_n246(x)
+ end
+end
+
+def fun_l8_n529(x)
+ if (x < 1)
+ fun_l9_n312(x)
+ else
+ fun_l9_n890(x)
+ end
+end
+
+def fun_l8_n530(x)
+ if (x < 1)
+ fun_l9_n624(x)
+ else
+ fun_l9_n548(x)
+ end
+end
+
+def fun_l8_n531(x)
+ if (x < 1)
+ fun_l9_n615(x)
+ else
+ fun_l9_n948(x)
+ end
+end
+
+def fun_l8_n532(x)
+ if (x < 1)
+ fun_l9_n519(x)
+ else
+ fun_l9_n583(x)
+ end
+end
+
+def fun_l8_n533(x)
+ if (x < 1)
+ fun_l9_n292(x)
+ else
+ fun_l9_n827(x)
+ end
+end
+
+def fun_l8_n534(x)
+ if (x < 1)
+ fun_l9_n893(x)
+ else
+ fun_l9_n877(x)
+ end
+end
+
+def fun_l8_n535(x)
+ if (x < 1)
+ fun_l9_n873(x)
+ else
+ fun_l9_n399(x)
+ end
+end
+
+def fun_l8_n536(x)
+ if (x < 1)
+ fun_l9_n497(x)
+ else
+ fun_l9_n507(x)
+ end
+end
+
+def fun_l8_n537(x)
+ if (x < 1)
+ fun_l9_n404(x)
+ else
+ fun_l9_n815(x)
+ end
+end
+
+def fun_l8_n538(x)
+ if (x < 1)
+ fun_l9_n258(x)
+ else
+ fun_l9_n810(x)
+ end
+end
+
+def fun_l8_n539(x)
+ if (x < 1)
+ fun_l9_n907(x)
+ else
+ fun_l9_n720(x)
+ end
+end
+
+def fun_l8_n540(x)
+ if (x < 1)
+ fun_l9_n752(x)
+ else
+ fun_l9_n597(x)
+ end
+end
+
+def fun_l8_n541(x)
+ if (x < 1)
+ fun_l9_n802(x)
+ else
+ fun_l9_n45(x)
+ end
+end
+
+def fun_l8_n542(x)
+ if (x < 1)
+ fun_l9_n635(x)
+ else
+ fun_l9_n470(x)
+ end
+end
+
+def fun_l8_n543(x)
+ if (x < 1)
+ fun_l9_n353(x)
+ else
+ fun_l9_n238(x)
+ end
+end
+
+def fun_l8_n544(x)
+ if (x < 1)
+ fun_l9_n656(x)
+ else
+ fun_l9_n569(x)
+ end
+end
+
+def fun_l8_n545(x)
+ if (x < 1)
+ fun_l9_n494(x)
+ else
+ fun_l9_n566(x)
+ end
+end
+
+def fun_l8_n546(x)
+ if (x < 1)
+ fun_l9_n65(x)
+ else
+ fun_l9_n896(x)
+ end
+end
+
+def fun_l8_n547(x)
+ if (x < 1)
+ fun_l9_n995(x)
+ else
+ fun_l9_n727(x)
+ end
+end
+
+def fun_l8_n548(x)
+ if (x < 1)
+ fun_l9_n562(x)
+ else
+ fun_l9_n759(x)
+ end
+end
+
+def fun_l8_n549(x)
+ if (x < 1)
+ fun_l9_n210(x)
+ else
+ fun_l9_n734(x)
+ end
+end
+
+def fun_l8_n550(x)
+ if (x < 1)
+ fun_l9_n482(x)
+ else
+ fun_l9_n11(x)
+ end
+end
+
+def fun_l8_n551(x)
+ if (x < 1)
+ fun_l9_n86(x)
+ else
+ fun_l9_n867(x)
+ end
+end
+
+def fun_l8_n552(x)
+ if (x < 1)
+ fun_l9_n647(x)
+ else
+ fun_l9_n293(x)
+ end
+end
+
+def fun_l8_n553(x)
+ if (x < 1)
+ fun_l9_n98(x)
+ else
+ fun_l9_n868(x)
+ end
+end
+
+def fun_l8_n554(x)
+ if (x < 1)
+ fun_l9_n380(x)
+ else
+ fun_l9_n2(x)
+ end
+end
+
+def fun_l8_n555(x)
+ if (x < 1)
+ fun_l9_n274(x)
+ else
+ fun_l9_n489(x)
+ end
+end
+
+def fun_l8_n556(x)
+ if (x < 1)
+ fun_l9_n623(x)
+ else
+ fun_l9_n848(x)
+ end
+end
+
+def fun_l8_n557(x)
+ if (x < 1)
+ fun_l9_n642(x)
+ else
+ fun_l9_n890(x)
+ end
+end
+
+def fun_l8_n558(x)
+ if (x < 1)
+ fun_l9_n247(x)
+ else
+ fun_l9_n65(x)
+ end
+end
+
+def fun_l8_n559(x)
+ if (x < 1)
+ fun_l9_n896(x)
+ else
+ fun_l9_n937(x)
+ end
+end
+
+def fun_l8_n560(x)
+ if (x < 1)
+ fun_l9_n592(x)
+ else
+ fun_l9_n211(x)
+ end
+end
+
+def fun_l8_n561(x)
+ if (x < 1)
+ fun_l9_n205(x)
+ else
+ fun_l9_n971(x)
+ end
+end
+
+def fun_l8_n562(x)
+ if (x < 1)
+ fun_l9_n663(x)
+ else
+ fun_l9_n147(x)
+ end
+end
+
+def fun_l8_n563(x)
+ if (x < 1)
+ fun_l9_n722(x)
+ else
+ fun_l9_n649(x)
+ end
+end
+
+def fun_l8_n564(x)
+ if (x < 1)
+ fun_l9_n605(x)
+ else
+ fun_l9_n58(x)
+ end
+end
+
+def fun_l8_n565(x)
+ if (x < 1)
+ fun_l9_n914(x)
+ else
+ fun_l9_n617(x)
+ end
+end
+
+def fun_l8_n566(x)
+ if (x < 1)
+ fun_l9_n772(x)
+ else
+ fun_l9_n428(x)
+ end
+end
+
+def fun_l8_n567(x)
+ if (x < 1)
+ fun_l9_n870(x)
+ else
+ fun_l9_n672(x)
+ end
+end
+
+def fun_l8_n568(x)
+ if (x < 1)
+ fun_l9_n946(x)
+ else
+ fun_l9_n465(x)
+ end
+end
+
+def fun_l8_n569(x)
+ if (x < 1)
+ fun_l9_n507(x)
+ else
+ fun_l9_n346(x)
+ end
+end
+
+def fun_l8_n570(x)
+ if (x < 1)
+ fun_l9_n157(x)
+ else
+ fun_l9_n70(x)
+ end
+end
+
+def fun_l8_n571(x)
+ if (x < 1)
+ fun_l9_n549(x)
+ else
+ fun_l9_n831(x)
+ end
+end
+
+def fun_l8_n572(x)
+ if (x < 1)
+ fun_l9_n463(x)
+ else
+ fun_l9_n843(x)
+ end
+end
+
+def fun_l8_n573(x)
+ if (x < 1)
+ fun_l9_n676(x)
+ else
+ fun_l9_n651(x)
+ end
+end
+
+def fun_l8_n574(x)
+ if (x < 1)
+ fun_l9_n648(x)
+ else
+ fun_l9_n562(x)
+ end
+end
+
+def fun_l8_n575(x)
+ if (x < 1)
+ fun_l9_n771(x)
+ else
+ fun_l9_n549(x)
+ end
+end
+
+def fun_l8_n576(x)
+ if (x < 1)
+ fun_l9_n899(x)
+ else
+ fun_l9_n436(x)
+ end
+end
+
+def fun_l8_n577(x)
+ if (x < 1)
+ fun_l9_n110(x)
+ else
+ fun_l9_n708(x)
+ end
+end
+
+def fun_l8_n578(x)
+ if (x < 1)
+ fun_l9_n49(x)
+ else
+ fun_l9_n559(x)
+ end
+end
+
+def fun_l8_n579(x)
+ if (x < 1)
+ fun_l9_n937(x)
+ else
+ fun_l9_n962(x)
+ end
+end
+
+def fun_l8_n580(x)
+ if (x < 1)
+ fun_l9_n970(x)
+ else
+ fun_l9_n203(x)
+ end
+end
+
+def fun_l8_n581(x)
+ if (x < 1)
+ fun_l9_n901(x)
+ else
+ fun_l9_n666(x)
+ end
+end
+
+def fun_l8_n582(x)
+ if (x < 1)
+ fun_l9_n79(x)
+ else
+ fun_l9_n260(x)
+ end
+end
+
+def fun_l8_n583(x)
+ if (x < 1)
+ fun_l9_n167(x)
+ else
+ fun_l9_n512(x)
+ end
+end
+
+def fun_l8_n584(x)
+ if (x < 1)
+ fun_l9_n750(x)
+ else
+ fun_l9_n406(x)
+ end
+end
+
+def fun_l8_n585(x)
+ if (x < 1)
+ fun_l9_n118(x)
+ else
+ fun_l9_n525(x)
+ end
+end
+
+def fun_l8_n586(x)
+ if (x < 1)
+ fun_l9_n573(x)
+ else
+ fun_l9_n657(x)
+ end
+end
+
+def fun_l8_n587(x)
+ if (x < 1)
+ fun_l9_n228(x)
+ else
+ fun_l9_n903(x)
+ end
+end
+
+def fun_l8_n588(x)
+ if (x < 1)
+ fun_l9_n971(x)
+ else
+ fun_l9_n608(x)
+ end
+end
+
+def fun_l8_n589(x)
+ if (x < 1)
+ fun_l9_n334(x)
+ else
+ fun_l9_n704(x)
+ end
+end
+
+def fun_l8_n590(x)
+ if (x < 1)
+ fun_l9_n398(x)
+ else
+ fun_l9_n500(x)
+ end
+end
+
+def fun_l8_n591(x)
+ if (x < 1)
+ fun_l9_n196(x)
+ else
+ fun_l9_n616(x)
+ end
+end
+
+def fun_l8_n592(x)
+ if (x < 1)
+ fun_l9_n756(x)
+ else
+ fun_l9_n655(x)
+ end
+end
+
+def fun_l8_n593(x)
+ if (x < 1)
+ fun_l9_n864(x)
+ else
+ fun_l9_n697(x)
+ end
+end
+
+def fun_l8_n594(x)
+ if (x < 1)
+ fun_l9_n35(x)
+ else
+ fun_l9_n554(x)
+ end
+end
+
+def fun_l8_n595(x)
+ if (x < 1)
+ fun_l9_n480(x)
+ else
+ fun_l9_n688(x)
+ end
+end
+
+def fun_l8_n596(x)
+ if (x < 1)
+ fun_l9_n846(x)
+ else
+ fun_l9_n403(x)
+ end
+end
+
+def fun_l8_n597(x)
+ if (x < 1)
+ fun_l9_n522(x)
+ else
+ fun_l9_n532(x)
+ end
+end
+
+def fun_l8_n598(x)
+ if (x < 1)
+ fun_l9_n800(x)
+ else
+ fun_l9_n531(x)
+ end
+end
+
+def fun_l8_n599(x)
+ if (x < 1)
+ fun_l9_n64(x)
+ else
+ fun_l9_n876(x)
+ end
+end
+
+def fun_l8_n600(x)
+ if (x < 1)
+ fun_l9_n614(x)
+ else
+ fun_l9_n660(x)
+ end
+end
+
+def fun_l8_n601(x)
+ if (x < 1)
+ fun_l9_n119(x)
+ else
+ fun_l9_n998(x)
+ end
+end
+
+def fun_l8_n602(x)
+ if (x < 1)
+ fun_l9_n549(x)
+ else
+ fun_l9_n911(x)
+ end
+end
+
+def fun_l8_n603(x)
+ if (x < 1)
+ fun_l9_n659(x)
+ else
+ fun_l9_n664(x)
+ end
+end
+
+def fun_l8_n604(x)
+ if (x < 1)
+ fun_l9_n570(x)
+ else
+ fun_l9_n960(x)
+ end
+end
+
+def fun_l8_n605(x)
+ if (x < 1)
+ fun_l9_n82(x)
+ else
+ fun_l9_n658(x)
+ end
+end
+
+def fun_l8_n606(x)
+ if (x < 1)
+ fun_l9_n379(x)
+ else
+ fun_l9_n881(x)
+ end
+end
+
+def fun_l8_n607(x)
+ if (x < 1)
+ fun_l9_n104(x)
+ else
+ fun_l9_n869(x)
+ end
+end
+
+def fun_l8_n608(x)
+ if (x < 1)
+ fun_l9_n874(x)
+ else
+ fun_l9_n63(x)
+ end
+end
+
+def fun_l8_n609(x)
+ if (x < 1)
+ fun_l9_n921(x)
+ else
+ fun_l9_n667(x)
+ end
+end
+
+def fun_l8_n610(x)
+ if (x < 1)
+ fun_l9_n1(x)
+ else
+ fun_l9_n524(x)
+ end
+end
+
+def fun_l8_n611(x)
+ if (x < 1)
+ fun_l9_n523(x)
+ else
+ fun_l9_n230(x)
+ end
+end
+
+def fun_l8_n612(x)
+ if (x < 1)
+ fun_l9_n914(x)
+ else
+ fun_l9_n129(x)
+ end
+end
+
+def fun_l8_n613(x)
+ if (x < 1)
+ fun_l9_n591(x)
+ else
+ fun_l9_n551(x)
+ end
+end
+
+def fun_l8_n614(x)
+ if (x < 1)
+ fun_l9_n860(x)
+ else
+ fun_l9_n358(x)
+ end
+end
+
+def fun_l8_n615(x)
+ if (x < 1)
+ fun_l9_n387(x)
+ else
+ fun_l9_n425(x)
+ end
+end
+
+def fun_l8_n616(x)
+ if (x < 1)
+ fun_l9_n426(x)
+ else
+ fun_l9_n449(x)
+ end
+end
+
+def fun_l8_n617(x)
+ if (x < 1)
+ fun_l9_n627(x)
+ else
+ fun_l9_n399(x)
+ end
+end
+
+def fun_l8_n618(x)
+ if (x < 1)
+ fun_l9_n244(x)
+ else
+ fun_l9_n24(x)
+ end
+end
+
+def fun_l8_n619(x)
+ if (x < 1)
+ fun_l9_n574(x)
+ else
+ fun_l9_n640(x)
+ end
+end
+
+def fun_l8_n620(x)
+ if (x < 1)
+ fun_l9_n20(x)
+ else
+ fun_l9_n6(x)
+ end
+end
+
+def fun_l8_n621(x)
+ if (x < 1)
+ fun_l9_n148(x)
+ else
+ fun_l9_n718(x)
+ end
+end
+
+def fun_l8_n622(x)
+ if (x < 1)
+ fun_l9_n151(x)
+ else
+ fun_l9_n56(x)
+ end
+end
+
+def fun_l8_n623(x)
+ if (x < 1)
+ fun_l9_n672(x)
+ else
+ fun_l9_n93(x)
+ end
+end
+
+def fun_l8_n624(x)
+ if (x < 1)
+ fun_l9_n948(x)
+ else
+ fun_l9_n530(x)
+ end
+end
+
+def fun_l8_n625(x)
+ if (x < 1)
+ fun_l9_n0(x)
+ else
+ fun_l9_n334(x)
+ end
+end
+
+def fun_l8_n626(x)
+ if (x < 1)
+ fun_l9_n736(x)
+ else
+ fun_l9_n922(x)
+ end
+end
+
+def fun_l8_n627(x)
+ if (x < 1)
+ fun_l9_n291(x)
+ else
+ fun_l9_n953(x)
+ end
+end
+
+def fun_l8_n628(x)
+ if (x < 1)
+ fun_l9_n493(x)
+ else
+ fun_l9_n4(x)
+ end
+end
+
+def fun_l8_n629(x)
+ if (x < 1)
+ fun_l9_n890(x)
+ else
+ fun_l9_n297(x)
+ end
+end
+
+def fun_l8_n630(x)
+ if (x < 1)
+ fun_l9_n860(x)
+ else
+ fun_l9_n74(x)
+ end
+end
+
+def fun_l8_n631(x)
+ if (x < 1)
+ fun_l9_n400(x)
+ else
+ fun_l9_n584(x)
+ end
+end
+
+def fun_l8_n632(x)
+ if (x < 1)
+ fun_l9_n714(x)
+ else
+ fun_l9_n200(x)
+ end
+end
+
+def fun_l8_n633(x)
+ if (x < 1)
+ fun_l9_n433(x)
+ else
+ fun_l9_n489(x)
+ end
+end
+
+def fun_l8_n634(x)
+ if (x < 1)
+ fun_l9_n974(x)
+ else
+ fun_l9_n25(x)
+ end
+end
+
+def fun_l8_n635(x)
+ if (x < 1)
+ fun_l9_n739(x)
+ else
+ fun_l9_n695(x)
+ end
+end
+
+def fun_l8_n636(x)
+ if (x < 1)
+ fun_l9_n855(x)
+ else
+ fun_l9_n898(x)
+ end
+end
+
+def fun_l8_n637(x)
+ if (x < 1)
+ fun_l9_n868(x)
+ else
+ fun_l9_n825(x)
+ end
+end
+
+def fun_l8_n638(x)
+ if (x < 1)
+ fun_l9_n537(x)
+ else
+ fun_l9_n417(x)
+ end
+end
+
+def fun_l8_n639(x)
+ if (x < 1)
+ fun_l9_n975(x)
+ else
+ fun_l9_n484(x)
+ end
+end
+
+def fun_l8_n640(x)
+ if (x < 1)
+ fun_l9_n228(x)
+ else
+ fun_l9_n964(x)
+ end
+end
+
+def fun_l8_n641(x)
+ if (x < 1)
+ fun_l9_n743(x)
+ else
+ fun_l9_n986(x)
+ end
+end
+
+def fun_l8_n642(x)
+ if (x < 1)
+ fun_l9_n763(x)
+ else
+ fun_l9_n747(x)
+ end
+end
+
+def fun_l8_n643(x)
+ if (x < 1)
+ fun_l9_n77(x)
+ else
+ fun_l9_n149(x)
+ end
+end
+
+def fun_l8_n644(x)
+ if (x < 1)
+ fun_l9_n393(x)
+ else
+ fun_l9_n694(x)
+ end
+end
+
+def fun_l8_n645(x)
+ if (x < 1)
+ fun_l9_n196(x)
+ else
+ fun_l9_n211(x)
+ end
+end
+
+def fun_l8_n646(x)
+ if (x < 1)
+ fun_l9_n94(x)
+ else
+ fun_l9_n649(x)
+ end
+end
+
+def fun_l8_n647(x)
+ if (x < 1)
+ fun_l9_n669(x)
+ else
+ fun_l9_n12(x)
+ end
+end
+
+def fun_l8_n648(x)
+ if (x < 1)
+ fun_l9_n175(x)
+ else
+ fun_l9_n388(x)
+ end
+end
+
+def fun_l8_n649(x)
+ if (x < 1)
+ fun_l9_n122(x)
+ else
+ fun_l9_n736(x)
+ end
+end
+
+def fun_l8_n650(x)
+ if (x < 1)
+ fun_l9_n817(x)
+ else
+ fun_l9_n274(x)
+ end
+end
+
+def fun_l8_n651(x)
+ if (x < 1)
+ fun_l9_n919(x)
+ else
+ fun_l9_n538(x)
+ end
+end
+
+def fun_l8_n652(x)
+ if (x < 1)
+ fun_l9_n171(x)
+ else
+ fun_l9_n895(x)
+ end
+end
+
+def fun_l8_n653(x)
+ if (x < 1)
+ fun_l9_n417(x)
+ else
+ fun_l9_n618(x)
+ end
+end
+
+def fun_l8_n654(x)
+ if (x < 1)
+ fun_l9_n709(x)
+ else
+ fun_l9_n892(x)
+ end
+end
+
+def fun_l8_n655(x)
+ if (x < 1)
+ fun_l9_n906(x)
+ else
+ fun_l9_n602(x)
+ end
+end
+
+def fun_l8_n656(x)
+ if (x < 1)
+ fun_l9_n769(x)
+ else
+ fun_l9_n554(x)
+ end
+end
+
+def fun_l8_n657(x)
+ if (x < 1)
+ fun_l9_n468(x)
+ else
+ fun_l9_n320(x)
+ end
+end
+
+def fun_l8_n658(x)
+ if (x < 1)
+ fun_l9_n38(x)
+ else
+ fun_l9_n947(x)
+ end
+end
+
+def fun_l8_n659(x)
+ if (x < 1)
+ fun_l9_n635(x)
+ else
+ fun_l9_n327(x)
+ end
+end
+
+def fun_l8_n660(x)
+ if (x < 1)
+ fun_l9_n452(x)
+ else
+ fun_l9_n313(x)
+ end
+end
+
+def fun_l8_n661(x)
+ if (x < 1)
+ fun_l9_n568(x)
+ else
+ fun_l9_n383(x)
+ end
+end
+
+def fun_l8_n662(x)
+ if (x < 1)
+ fun_l9_n795(x)
+ else
+ fun_l9_n680(x)
+ end
+end
+
+def fun_l8_n663(x)
+ if (x < 1)
+ fun_l9_n152(x)
+ else
+ fun_l9_n846(x)
+ end
+end
+
+def fun_l8_n664(x)
+ if (x < 1)
+ fun_l9_n585(x)
+ else
+ fun_l9_n670(x)
+ end
+end
+
+def fun_l8_n665(x)
+ if (x < 1)
+ fun_l9_n133(x)
+ else
+ fun_l9_n799(x)
+ end
+end
+
+def fun_l8_n666(x)
+ if (x < 1)
+ fun_l9_n699(x)
+ else
+ fun_l9_n311(x)
+ end
+end
+
+def fun_l8_n667(x)
+ if (x < 1)
+ fun_l9_n558(x)
+ else
+ fun_l9_n669(x)
+ end
+end
+
+def fun_l8_n668(x)
+ if (x < 1)
+ fun_l9_n825(x)
+ else
+ fun_l9_n534(x)
+ end
+end
+
+def fun_l8_n669(x)
+ if (x < 1)
+ fun_l9_n143(x)
+ else
+ fun_l9_n21(x)
+ end
+end
+
+def fun_l8_n670(x)
+ if (x < 1)
+ fun_l9_n827(x)
+ else
+ fun_l9_n679(x)
+ end
+end
+
+def fun_l8_n671(x)
+ if (x < 1)
+ fun_l9_n704(x)
+ else
+ fun_l9_n922(x)
+ end
+end
+
+def fun_l8_n672(x)
+ if (x < 1)
+ fun_l9_n776(x)
+ else
+ fun_l9_n867(x)
+ end
+end
+
+def fun_l8_n673(x)
+ if (x < 1)
+ fun_l9_n871(x)
+ else
+ fun_l9_n315(x)
+ end
+end
+
+def fun_l8_n674(x)
+ if (x < 1)
+ fun_l9_n860(x)
+ else
+ fun_l9_n945(x)
+ end
+end
+
+def fun_l8_n675(x)
+ if (x < 1)
+ fun_l9_n890(x)
+ else
+ fun_l9_n629(x)
+ end
+end
+
+def fun_l8_n676(x)
+ if (x < 1)
+ fun_l9_n91(x)
+ else
+ fun_l9_n35(x)
+ end
+end
+
+def fun_l8_n677(x)
+ if (x < 1)
+ fun_l9_n825(x)
+ else
+ fun_l9_n922(x)
+ end
+end
+
+def fun_l8_n678(x)
+ if (x < 1)
+ fun_l9_n457(x)
+ else
+ fun_l9_n156(x)
+ end
+end
+
+def fun_l8_n679(x)
+ if (x < 1)
+ fun_l9_n455(x)
+ else
+ fun_l9_n809(x)
+ end
+end
+
+def fun_l8_n680(x)
+ if (x < 1)
+ fun_l9_n213(x)
+ else
+ fun_l9_n944(x)
+ end
+end
+
+def fun_l8_n681(x)
+ if (x < 1)
+ fun_l9_n760(x)
+ else
+ fun_l9_n137(x)
+ end
+end
+
+def fun_l8_n682(x)
+ if (x < 1)
+ fun_l9_n998(x)
+ else
+ fun_l9_n703(x)
+ end
+end
+
+def fun_l8_n683(x)
+ if (x < 1)
+ fun_l9_n988(x)
+ else
+ fun_l9_n952(x)
+ end
+end
+
+def fun_l8_n684(x)
+ if (x < 1)
+ fun_l9_n583(x)
+ else
+ fun_l9_n890(x)
+ end
+end
+
+def fun_l8_n685(x)
+ if (x < 1)
+ fun_l9_n879(x)
+ else
+ fun_l9_n978(x)
+ end
+end
+
+def fun_l8_n686(x)
+ if (x < 1)
+ fun_l9_n6(x)
+ else
+ fun_l9_n978(x)
+ end
+end
+
+def fun_l8_n687(x)
+ if (x < 1)
+ fun_l9_n67(x)
+ else
+ fun_l9_n149(x)
+ end
+end
+
+def fun_l8_n688(x)
+ if (x < 1)
+ fun_l9_n386(x)
+ else
+ fun_l9_n293(x)
+ end
+end
+
+def fun_l8_n689(x)
+ if (x < 1)
+ fun_l9_n493(x)
+ else
+ fun_l9_n140(x)
+ end
+end
+
+def fun_l8_n690(x)
+ if (x < 1)
+ fun_l9_n92(x)
+ else
+ fun_l9_n550(x)
+ end
+end
+
+def fun_l8_n691(x)
+ if (x < 1)
+ fun_l9_n456(x)
+ else
+ fun_l9_n976(x)
+ end
+end
+
+def fun_l8_n692(x)
+ if (x < 1)
+ fun_l9_n516(x)
+ else
+ fun_l9_n145(x)
+ end
+end
+
+def fun_l8_n693(x)
+ if (x < 1)
+ fun_l9_n757(x)
+ else
+ fun_l9_n647(x)
+ end
+end
+
+def fun_l8_n694(x)
+ if (x < 1)
+ fun_l9_n348(x)
+ else
+ fun_l9_n86(x)
+ end
+end
+
+def fun_l8_n695(x)
+ if (x < 1)
+ fun_l9_n546(x)
+ else
+ fun_l9_n320(x)
+ end
+end
+
+def fun_l8_n696(x)
+ if (x < 1)
+ fun_l9_n588(x)
+ else
+ fun_l9_n285(x)
+ end
+end
+
+def fun_l8_n697(x)
+ if (x < 1)
+ fun_l9_n635(x)
+ else
+ fun_l9_n710(x)
+ end
+end
+
+def fun_l8_n698(x)
+ if (x < 1)
+ fun_l9_n312(x)
+ else
+ fun_l9_n217(x)
+ end
+end
+
+def fun_l8_n699(x)
+ if (x < 1)
+ fun_l9_n714(x)
+ else
+ fun_l9_n723(x)
+ end
+end
+
+def fun_l8_n700(x)
+ if (x < 1)
+ fun_l9_n378(x)
+ else
+ fun_l9_n122(x)
+ end
+end
+
+def fun_l8_n701(x)
+ if (x < 1)
+ fun_l9_n696(x)
+ else
+ fun_l9_n577(x)
+ end
+end
+
+def fun_l8_n702(x)
+ if (x < 1)
+ fun_l9_n388(x)
+ else
+ fun_l9_n578(x)
+ end
+end
+
+def fun_l8_n703(x)
+ if (x < 1)
+ fun_l9_n502(x)
+ else
+ fun_l9_n410(x)
+ end
+end
+
+def fun_l8_n704(x)
+ if (x < 1)
+ fun_l9_n532(x)
+ else
+ fun_l9_n532(x)
+ end
+end
+
+def fun_l8_n705(x)
+ if (x < 1)
+ fun_l9_n662(x)
+ else
+ fun_l9_n361(x)
+ end
+end
+
+def fun_l8_n706(x)
+ if (x < 1)
+ fun_l9_n109(x)
+ else
+ fun_l9_n380(x)
+ end
+end
+
+def fun_l8_n707(x)
+ if (x < 1)
+ fun_l9_n653(x)
+ else
+ fun_l9_n566(x)
+ end
+end
+
+def fun_l8_n708(x)
+ if (x < 1)
+ fun_l9_n587(x)
+ else
+ fun_l9_n465(x)
+ end
+end
+
+def fun_l8_n709(x)
+ if (x < 1)
+ fun_l9_n523(x)
+ else
+ fun_l9_n274(x)
+ end
+end
+
+def fun_l8_n710(x)
+ if (x < 1)
+ fun_l9_n459(x)
+ else
+ fun_l9_n872(x)
+ end
+end
+
+def fun_l8_n711(x)
+ if (x < 1)
+ fun_l9_n71(x)
+ else
+ fun_l9_n135(x)
+ end
+end
+
+def fun_l8_n712(x)
+ if (x < 1)
+ fun_l9_n770(x)
+ else
+ fun_l9_n405(x)
+ end
+end
+
+def fun_l8_n713(x)
+ if (x < 1)
+ fun_l9_n233(x)
+ else
+ fun_l9_n232(x)
+ end
+end
+
+def fun_l8_n714(x)
+ if (x < 1)
+ fun_l9_n29(x)
+ else
+ fun_l9_n23(x)
+ end
+end
+
+def fun_l8_n715(x)
+ if (x < 1)
+ fun_l9_n44(x)
+ else
+ fun_l9_n185(x)
+ end
+end
+
+def fun_l8_n716(x)
+ if (x < 1)
+ fun_l9_n980(x)
+ else
+ fun_l9_n967(x)
+ end
+end
+
+def fun_l8_n717(x)
+ if (x < 1)
+ fun_l9_n323(x)
+ else
+ fun_l9_n636(x)
+ end
+end
+
+def fun_l8_n718(x)
+ if (x < 1)
+ fun_l9_n733(x)
+ else
+ fun_l9_n10(x)
+ end
+end
+
+def fun_l8_n719(x)
+ if (x < 1)
+ fun_l9_n100(x)
+ else
+ fun_l9_n123(x)
+ end
+end
+
+def fun_l8_n720(x)
+ if (x < 1)
+ fun_l9_n572(x)
+ else
+ fun_l9_n813(x)
+ end
+end
+
+def fun_l8_n721(x)
+ if (x < 1)
+ fun_l9_n634(x)
+ else
+ fun_l9_n152(x)
+ end
+end
+
+def fun_l8_n722(x)
+ if (x < 1)
+ fun_l9_n527(x)
+ else
+ fun_l9_n881(x)
+ end
+end
+
+def fun_l8_n723(x)
+ if (x < 1)
+ fun_l9_n202(x)
+ else
+ fun_l9_n294(x)
+ end
+end
+
+def fun_l8_n724(x)
+ if (x < 1)
+ fun_l9_n668(x)
+ else
+ fun_l9_n792(x)
+ end
+end
+
+def fun_l8_n725(x)
+ if (x < 1)
+ fun_l9_n309(x)
+ else
+ fun_l9_n612(x)
+ end
+end
+
+def fun_l8_n726(x)
+ if (x < 1)
+ fun_l9_n320(x)
+ else
+ fun_l9_n459(x)
+ end
+end
+
+def fun_l8_n727(x)
+ if (x < 1)
+ fun_l9_n355(x)
+ else
+ fun_l9_n321(x)
+ end
+end
+
+def fun_l8_n728(x)
+ if (x < 1)
+ fun_l9_n237(x)
+ else
+ fun_l9_n135(x)
+ end
+end
+
+def fun_l8_n729(x)
+ if (x < 1)
+ fun_l9_n980(x)
+ else
+ fun_l9_n209(x)
+ end
+end
+
+def fun_l8_n730(x)
+ if (x < 1)
+ fun_l9_n957(x)
+ else
+ fun_l9_n481(x)
+ end
+end
+
+def fun_l8_n731(x)
+ if (x < 1)
+ fun_l9_n594(x)
+ else
+ fun_l9_n396(x)
+ end
+end
+
+def fun_l8_n732(x)
+ if (x < 1)
+ fun_l9_n916(x)
+ else
+ fun_l9_n473(x)
+ end
+end
+
+def fun_l8_n733(x)
+ if (x < 1)
+ fun_l9_n376(x)
+ else
+ fun_l9_n231(x)
+ end
+end
+
+def fun_l8_n734(x)
+ if (x < 1)
+ fun_l9_n758(x)
+ else
+ fun_l9_n111(x)
+ end
+end
+
+def fun_l8_n735(x)
+ if (x < 1)
+ fun_l9_n131(x)
+ else
+ fun_l9_n586(x)
+ end
+end
+
+def fun_l8_n736(x)
+ if (x < 1)
+ fun_l9_n290(x)
+ else
+ fun_l9_n227(x)
+ end
+end
+
+def fun_l8_n737(x)
+ if (x < 1)
+ fun_l9_n784(x)
+ else
+ fun_l9_n869(x)
+ end
+end
+
+def fun_l8_n738(x)
+ if (x < 1)
+ fun_l9_n94(x)
+ else
+ fun_l9_n79(x)
+ end
+end
+
+def fun_l8_n739(x)
+ if (x < 1)
+ fun_l9_n489(x)
+ else
+ fun_l9_n347(x)
+ end
+end
+
+def fun_l8_n740(x)
+ if (x < 1)
+ fun_l9_n4(x)
+ else
+ fun_l9_n587(x)
+ end
+end
+
+def fun_l8_n741(x)
+ if (x < 1)
+ fun_l9_n949(x)
+ else
+ fun_l9_n196(x)
+ end
+end
+
+def fun_l8_n742(x)
+ if (x < 1)
+ fun_l9_n577(x)
+ else
+ fun_l9_n562(x)
+ end
+end
+
+def fun_l8_n743(x)
+ if (x < 1)
+ fun_l9_n656(x)
+ else
+ fun_l9_n685(x)
+ end
+end
+
+def fun_l8_n744(x)
+ if (x < 1)
+ fun_l9_n792(x)
+ else
+ fun_l9_n572(x)
+ end
+end
+
+def fun_l8_n745(x)
+ if (x < 1)
+ fun_l9_n318(x)
+ else
+ fun_l9_n335(x)
+ end
+end
+
+def fun_l8_n746(x)
+ if (x < 1)
+ fun_l9_n59(x)
+ else
+ fun_l9_n109(x)
+ end
+end
+
+def fun_l8_n747(x)
+ if (x < 1)
+ fun_l9_n276(x)
+ else
+ fun_l9_n567(x)
+ end
+end
+
+def fun_l8_n748(x)
+ if (x < 1)
+ fun_l9_n902(x)
+ else
+ fun_l9_n220(x)
+ end
+end
+
+def fun_l8_n749(x)
+ if (x < 1)
+ fun_l9_n208(x)
+ else
+ fun_l9_n108(x)
+ end
+end
+
+def fun_l8_n750(x)
+ if (x < 1)
+ fun_l9_n927(x)
+ else
+ fun_l9_n950(x)
+ end
+end
+
+def fun_l8_n751(x)
+ if (x < 1)
+ fun_l9_n371(x)
+ else
+ fun_l9_n72(x)
+ end
+end
+
+def fun_l8_n752(x)
+ if (x < 1)
+ fun_l9_n455(x)
+ else
+ fun_l9_n467(x)
+ end
+end
+
+def fun_l8_n753(x)
+ if (x < 1)
+ fun_l9_n344(x)
+ else
+ fun_l9_n82(x)
+ end
+end
+
+def fun_l8_n754(x)
+ if (x < 1)
+ fun_l9_n902(x)
+ else
+ fun_l9_n219(x)
+ end
+end
+
+def fun_l8_n755(x)
+ if (x < 1)
+ fun_l9_n101(x)
+ else
+ fun_l9_n523(x)
+ end
+end
+
+def fun_l8_n756(x)
+ if (x < 1)
+ fun_l9_n517(x)
+ else
+ fun_l9_n97(x)
+ end
+end
+
+def fun_l8_n757(x)
+ if (x < 1)
+ fun_l9_n571(x)
+ else
+ fun_l9_n650(x)
+ end
+end
+
+def fun_l8_n758(x)
+ if (x < 1)
+ fun_l9_n701(x)
+ else
+ fun_l9_n962(x)
+ end
+end
+
+def fun_l8_n759(x)
+ if (x < 1)
+ fun_l9_n589(x)
+ else
+ fun_l9_n808(x)
+ end
+end
+
+def fun_l8_n760(x)
+ if (x < 1)
+ fun_l9_n570(x)
+ else
+ fun_l9_n90(x)
+ end
+end
+
+def fun_l8_n761(x)
+ if (x < 1)
+ fun_l9_n792(x)
+ else
+ fun_l9_n673(x)
+ end
+end
+
+def fun_l8_n762(x)
+ if (x < 1)
+ fun_l9_n514(x)
+ else
+ fun_l9_n771(x)
+ end
+end
+
+def fun_l8_n763(x)
+ if (x < 1)
+ fun_l9_n404(x)
+ else
+ fun_l9_n264(x)
+ end
+end
+
+def fun_l8_n764(x)
+ if (x < 1)
+ fun_l9_n270(x)
+ else
+ fun_l9_n738(x)
+ end
+end
+
+def fun_l8_n765(x)
+ if (x < 1)
+ fun_l9_n915(x)
+ else
+ fun_l9_n901(x)
+ end
+end
+
+def fun_l8_n766(x)
+ if (x < 1)
+ fun_l9_n120(x)
+ else
+ fun_l9_n176(x)
+ end
+end
+
+def fun_l8_n767(x)
+ if (x < 1)
+ fun_l9_n470(x)
+ else
+ fun_l9_n837(x)
+ end
+end
+
+def fun_l8_n768(x)
+ if (x < 1)
+ fun_l9_n912(x)
+ else
+ fun_l9_n898(x)
+ end
+end
+
+def fun_l8_n769(x)
+ if (x < 1)
+ fun_l9_n76(x)
+ else
+ fun_l9_n350(x)
+ end
+end
+
+def fun_l8_n770(x)
+ if (x < 1)
+ fun_l9_n487(x)
+ else
+ fun_l9_n572(x)
+ end
+end
+
+def fun_l8_n771(x)
+ if (x < 1)
+ fun_l9_n823(x)
+ else
+ fun_l9_n815(x)
+ end
+end
+
+def fun_l8_n772(x)
+ if (x < 1)
+ fun_l9_n655(x)
+ else
+ fun_l9_n968(x)
+ end
+end
+
+def fun_l8_n773(x)
+ if (x < 1)
+ fun_l9_n824(x)
+ else
+ fun_l9_n741(x)
+ end
+end
+
+def fun_l8_n774(x)
+ if (x < 1)
+ fun_l9_n143(x)
+ else
+ fun_l9_n641(x)
+ end
+end
+
+def fun_l8_n775(x)
+ if (x < 1)
+ fun_l9_n985(x)
+ else
+ fun_l9_n592(x)
+ end
+end
+
+def fun_l8_n776(x)
+ if (x < 1)
+ fun_l9_n686(x)
+ else
+ fun_l9_n234(x)
+ end
+end
+
+def fun_l8_n777(x)
+ if (x < 1)
+ fun_l9_n540(x)
+ else
+ fun_l9_n794(x)
+ end
+end
+
+def fun_l8_n778(x)
+ if (x < 1)
+ fun_l9_n154(x)
+ else
+ fun_l9_n656(x)
+ end
+end
+
+def fun_l8_n779(x)
+ if (x < 1)
+ fun_l9_n836(x)
+ else
+ fun_l9_n756(x)
+ end
+end
+
+def fun_l8_n780(x)
+ if (x < 1)
+ fun_l9_n98(x)
+ else
+ fun_l9_n233(x)
+ end
+end
+
+def fun_l8_n781(x)
+ if (x < 1)
+ fun_l9_n584(x)
+ else
+ fun_l9_n398(x)
+ end
+end
+
+def fun_l8_n782(x)
+ if (x < 1)
+ fun_l9_n851(x)
+ else
+ fun_l9_n967(x)
+ end
+end
+
+def fun_l8_n783(x)
+ if (x < 1)
+ fun_l9_n868(x)
+ else
+ fun_l9_n57(x)
+ end
+end
+
+def fun_l8_n784(x)
+ if (x < 1)
+ fun_l9_n782(x)
+ else
+ fun_l9_n214(x)
+ end
+end
+
+def fun_l8_n785(x)
+ if (x < 1)
+ fun_l9_n79(x)
+ else
+ fun_l9_n489(x)
+ end
+end
+
+def fun_l8_n786(x)
+ if (x < 1)
+ fun_l9_n757(x)
+ else
+ fun_l9_n918(x)
+ end
+end
+
+def fun_l8_n787(x)
+ if (x < 1)
+ fun_l9_n985(x)
+ else
+ fun_l9_n781(x)
+ end
+end
+
+def fun_l8_n788(x)
+ if (x < 1)
+ fun_l9_n921(x)
+ else
+ fun_l9_n542(x)
+ end
+end
+
+def fun_l8_n789(x)
+ if (x < 1)
+ fun_l9_n982(x)
+ else
+ fun_l9_n834(x)
+ end
+end
+
+def fun_l8_n790(x)
+ if (x < 1)
+ fun_l9_n482(x)
+ else
+ fun_l9_n424(x)
+ end
+end
+
+def fun_l8_n791(x)
+ if (x < 1)
+ fun_l9_n289(x)
+ else
+ fun_l9_n487(x)
+ end
+end
+
+def fun_l8_n792(x)
+ if (x < 1)
+ fun_l9_n820(x)
+ else
+ fun_l9_n242(x)
+ end
+end
+
+def fun_l8_n793(x)
+ if (x < 1)
+ fun_l9_n110(x)
+ else
+ fun_l9_n356(x)
+ end
+end
+
+def fun_l8_n794(x)
+ if (x < 1)
+ fun_l9_n142(x)
+ else
+ fun_l9_n607(x)
+ end
+end
+
+def fun_l8_n795(x)
+ if (x < 1)
+ fun_l9_n21(x)
+ else
+ fun_l9_n14(x)
+ end
+end
+
+def fun_l8_n796(x)
+ if (x < 1)
+ fun_l9_n147(x)
+ else
+ fun_l9_n767(x)
+ end
+end
+
+def fun_l8_n797(x)
+ if (x < 1)
+ fun_l9_n427(x)
+ else
+ fun_l9_n854(x)
+ end
+end
+
+def fun_l8_n798(x)
+ if (x < 1)
+ fun_l9_n557(x)
+ else
+ fun_l9_n729(x)
+ end
+end
+
+def fun_l8_n799(x)
+ if (x < 1)
+ fun_l9_n150(x)
+ else
+ fun_l9_n180(x)
+ end
+end
+
+def fun_l8_n800(x)
+ if (x < 1)
+ fun_l9_n888(x)
+ else
+ fun_l9_n612(x)
+ end
+end
+
+def fun_l8_n801(x)
+ if (x < 1)
+ fun_l9_n631(x)
+ else
+ fun_l9_n370(x)
+ end
+end
+
+def fun_l8_n802(x)
+ if (x < 1)
+ fun_l9_n759(x)
+ else
+ fun_l9_n446(x)
+ end
+end
+
+def fun_l8_n803(x)
+ if (x < 1)
+ fun_l9_n182(x)
+ else
+ fun_l9_n705(x)
+ end
+end
+
+def fun_l8_n804(x)
+ if (x < 1)
+ fun_l9_n474(x)
+ else
+ fun_l9_n461(x)
+ end
+end
+
+def fun_l8_n805(x)
+ if (x < 1)
+ fun_l9_n897(x)
+ else
+ fun_l9_n935(x)
+ end
+end
+
+def fun_l8_n806(x)
+ if (x < 1)
+ fun_l9_n793(x)
+ else
+ fun_l9_n981(x)
+ end
+end
+
+def fun_l8_n807(x)
+ if (x < 1)
+ fun_l9_n124(x)
+ else
+ fun_l9_n528(x)
+ end
+end
+
+def fun_l8_n808(x)
+ if (x < 1)
+ fun_l9_n637(x)
+ else
+ fun_l9_n989(x)
+ end
+end
+
+def fun_l8_n809(x)
+ if (x < 1)
+ fun_l9_n388(x)
+ else
+ fun_l9_n196(x)
+ end
+end
+
+def fun_l8_n810(x)
+ if (x < 1)
+ fun_l9_n333(x)
+ else
+ fun_l9_n806(x)
+ end
+end
+
+def fun_l8_n811(x)
+ if (x < 1)
+ fun_l9_n541(x)
+ else
+ fun_l9_n6(x)
+ end
+end
+
+def fun_l8_n812(x)
+ if (x < 1)
+ fun_l9_n346(x)
+ else
+ fun_l9_n496(x)
+ end
+end
+
+def fun_l8_n813(x)
+ if (x < 1)
+ fun_l9_n374(x)
+ else
+ fun_l9_n739(x)
+ end
+end
+
+def fun_l8_n814(x)
+ if (x < 1)
+ fun_l9_n121(x)
+ else
+ fun_l9_n184(x)
+ end
+end
+
+def fun_l8_n815(x)
+ if (x < 1)
+ fun_l9_n460(x)
+ else
+ fun_l9_n759(x)
+ end
+end
+
+def fun_l8_n816(x)
+ if (x < 1)
+ fun_l9_n598(x)
+ else
+ fun_l9_n638(x)
+ end
+end
+
+def fun_l8_n817(x)
+ if (x < 1)
+ fun_l9_n986(x)
+ else
+ fun_l9_n658(x)
+ end
+end
+
+def fun_l8_n818(x)
+ if (x < 1)
+ fun_l9_n169(x)
+ else
+ fun_l9_n696(x)
+ end
+end
+
+def fun_l8_n819(x)
+ if (x < 1)
+ fun_l9_n885(x)
+ else
+ fun_l9_n74(x)
+ end
+end
+
+def fun_l8_n820(x)
+ if (x < 1)
+ fun_l9_n24(x)
+ else
+ fun_l9_n87(x)
+ end
+end
+
+def fun_l8_n821(x)
+ if (x < 1)
+ fun_l9_n59(x)
+ else
+ fun_l9_n843(x)
+ end
+end
+
+def fun_l8_n822(x)
+ if (x < 1)
+ fun_l9_n640(x)
+ else
+ fun_l9_n360(x)
+ end
+end
+
+def fun_l8_n823(x)
+ if (x < 1)
+ fun_l9_n355(x)
+ else
+ fun_l9_n28(x)
+ end
+end
+
+def fun_l8_n824(x)
+ if (x < 1)
+ fun_l9_n553(x)
+ else
+ fun_l9_n475(x)
+ end
+end
+
+def fun_l8_n825(x)
+ if (x < 1)
+ fun_l9_n757(x)
+ else
+ fun_l9_n790(x)
+ end
+end
+
+def fun_l8_n826(x)
+ if (x < 1)
+ fun_l9_n787(x)
+ else
+ fun_l9_n226(x)
+ end
+end
+
+def fun_l8_n827(x)
+ if (x < 1)
+ fun_l9_n622(x)
+ else
+ fun_l9_n711(x)
+ end
+end
+
+def fun_l8_n828(x)
+ if (x < 1)
+ fun_l9_n399(x)
+ else
+ fun_l9_n7(x)
+ end
+end
+
+def fun_l8_n829(x)
+ if (x < 1)
+ fun_l9_n589(x)
+ else
+ fun_l9_n276(x)
+ end
+end
+
+def fun_l8_n830(x)
+ if (x < 1)
+ fun_l9_n83(x)
+ else
+ fun_l9_n126(x)
+ end
+end
+
+def fun_l8_n831(x)
+ if (x < 1)
+ fun_l9_n576(x)
+ else
+ fun_l9_n855(x)
+ end
+end
+
+def fun_l8_n832(x)
+ if (x < 1)
+ fun_l9_n756(x)
+ else
+ fun_l9_n638(x)
+ end
+end
+
+def fun_l8_n833(x)
+ if (x < 1)
+ fun_l9_n388(x)
+ else
+ fun_l9_n154(x)
+ end
+end
+
+def fun_l8_n834(x)
+ if (x < 1)
+ fun_l9_n268(x)
+ else
+ fun_l9_n85(x)
+ end
+end
+
+def fun_l8_n835(x)
+ if (x < 1)
+ fun_l9_n32(x)
+ else
+ fun_l9_n678(x)
+ end
+end
+
+def fun_l8_n836(x)
+ if (x < 1)
+ fun_l9_n537(x)
+ else
+ fun_l9_n984(x)
+ end
+end
+
+def fun_l8_n837(x)
+ if (x < 1)
+ fun_l9_n798(x)
+ else
+ fun_l9_n221(x)
+ end
+end
+
+def fun_l8_n838(x)
+ if (x < 1)
+ fun_l9_n153(x)
+ else
+ fun_l9_n414(x)
+ end
+end
+
+def fun_l8_n839(x)
+ if (x < 1)
+ fun_l9_n904(x)
+ else
+ fun_l9_n847(x)
+ end
+end
+
+def fun_l8_n840(x)
+ if (x < 1)
+ fun_l9_n501(x)
+ else
+ fun_l9_n971(x)
+ end
+end
+
+def fun_l8_n841(x)
+ if (x < 1)
+ fun_l9_n94(x)
+ else
+ fun_l9_n719(x)
+ end
+end
+
+def fun_l8_n842(x)
+ if (x < 1)
+ fun_l9_n343(x)
+ else
+ fun_l9_n365(x)
+ end
+end
+
+def fun_l8_n843(x)
+ if (x < 1)
+ fun_l9_n541(x)
+ else
+ fun_l9_n800(x)
+ end
+end
+
+def fun_l8_n844(x)
+ if (x < 1)
+ fun_l9_n122(x)
+ else
+ fun_l9_n662(x)
+ end
+end
+
+def fun_l8_n845(x)
+ if (x < 1)
+ fun_l9_n312(x)
+ else
+ fun_l9_n688(x)
+ end
+end
+
+def fun_l8_n846(x)
+ if (x < 1)
+ fun_l9_n668(x)
+ else
+ fun_l9_n805(x)
+ end
+end
+
+def fun_l8_n847(x)
+ if (x < 1)
+ fun_l9_n785(x)
+ else
+ fun_l9_n917(x)
+ end
+end
+
+def fun_l8_n848(x)
+ if (x < 1)
+ fun_l9_n333(x)
+ else
+ fun_l9_n782(x)
+ end
+end
+
+def fun_l8_n849(x)
+ if (x < 1)
+ fun_l9_n402(x)
+ else
+ fun_l9_n398(x)
+ end
+end
+
+def fun_l8_n850(x)
+ if (x < 1)
+ fun_l9_n708(x)
+ else
+ fun_l9_n199(x)
+ end
+end
+
+def fun_l8_n851(x)
+ if (x < 1)
+ fun_l9_n950(x)
+ else
+ fun_l9_n308(x)
+ end
+end
+
+def fun_l8_n852(x)
+ if (x < 1)
+ fun_l9_n524(x)
+ else
+ fun_l9_n411(x)
+ end
+end
+
+def fun_l8_n853(x)
+ if (x < 1)
+ fun_l9_n467(x)
+ else
+ fun_l9_n807(x)
+ end
+end
+
+def fun_l8_n854(x)
+ if (x < 1)
+ fun_l9_n316(x)
+ else
+ fun_l9_n717(x)
+ end
+end
+
+def fun_l8_n855(x)
+ if (x < 1)
+ fun_l9_n955(x)
+ else
+ fun_l9_n631(x)
+ end
+end
+
+def fun_l8_n856(x)
+ if (x < 1)
+ fun_l9_n244(x)
+ else
+ fun_l9_n838(x)
+ end
+end
+
+def fun_l8_n857(x)
+ if (x < 1)
+ fun_l9_n574(x)
+ else
+ fun_l9_n720(x)
+ end
+end
+
+def fun_l8_n858(x)
+ if (x < 1)
+ fun_l9_n80(x)
+ else
+ fun_l9_n888(x)
+ end
+end
+
+def fun_l8_n859(x)
+ if (x < 1)
+ fun_l9_n675(x)
+ else
+ fun_l9_n71(x)
+ end
+end
+
+def fun_l8_n860(x)
+ if (x < 1)
+ fun_l9_n375(x)
+ else
+ fun_l9_n507(x)
+ end
+end
+
+def fun_l8_n861(x)
+ if (x < 1)
+ fun_l9_n450(x)
+ else
+ fun_l9_n705(x)
+ end
+end
+
+def fun_l8_n862(x)
+ if (x < 1)
+ fun_l9_n358(x)
+ else
+ fun_l9_n614(x)
+ end
+end
+
+def fun_l8_n863(x)
+ if (x < 1)
+ fun_l9_n690(x)
+ else
+ fun_l9_n73(x)
+ end
+end
+
+def fun_l8_n864(x)
+ if (x < 1)
+ fun_l9_n806(x)
+ else
+ fun_l9_n85(x)
+ end
+end
+
+def fun_l8_n865(x)
+ if (x < 1)
+ fun_l9_n251(x)
+ else
+ fun_l9_n657(x)
+ end
+end
+
+def fun_l8_n866(x)
+ if (x < 1)
+ fun_l9_n921(x)
+ else
+ fun_l9_n199(x)
+ end
+end
+
+def fun_l8_n867(x)
+ if (x < 1)
+ fun_l9_n265(x)
+ else
+ fun_l9_n937(x)
+ end
+end
+
+def fun_l8_n868(x)
+ if (x < 1)
+ fun_l9_n610(x)
+ else
+ fun_l9_n7(x)
+ end
+end
+
+def fun_l8_n869(x)
+ if (x < 1)
+ fun_l9_n703(x)
+ else
+ fun_l9_n74(x)
+ end
+end
+
+def fun_l8_n870(x)
+ if (x < 1)
+ fun_l9_n869(x)
+ else
+ fun_l9_n665(x)
+ end
+end
+
+def fun_l8_n871(x)
+ if (x < 1)
+ fun_l9_n808(x)
+ else
+ fun_l9_n686(x)
+ end
+end
+
+def fun_l8_n872(x)
+ if (x < 1)
+ fun_l9_n678(x)
+ else
+ fun_l9_n709(x)
+ end
+end
+
+def fun_l8_n873(x)
+ if (x < 1)
+ fun_l9_n557(x)
+ else
+ fun_l9_n63(x)
+ end
+end
+
+def fun_l8_n874(x)
+ if (x < 1)
+ fun_l9_n214(x)
+ else
+ fun_l9_n926(x)
+ end
+end
+
+def fun_l8_n875(x)
+ if (x < 1)
+ fun_l9_n218(x)
+ else
+ fun_l9_n810(x)
+ end
+end
+
+def fun_l8_n876(x)
+ if (x < 1)
+ fun_l9_n365(x)
+ else
+ fun_l9_n257(x)
+ end
+end
+
+def fun_l8_n877(x)
+ if (x < 1)
+ fun_l9_n51(x)
+ else
+ fun_l9_n68(x)
+ end
+end
+
+def fun_l8_n878(x)
+ if (x < 1)
+ fun_l9_n20(x)
+ else
+ fun_l9_n55(x)
+ end
+end
+
+def fun_l8_n879(x)
+ if (x < 1)
+ fun_l9_n686(x)
+ else
+ fun_l9_n226(x)
+ end
+end
+
+def fun_l8_n880(x)
+ if (x < 1)
+ fun_l9_n283(x)
+ else
+ fun_l9_n270(x)
+ end
+end
+
+def fun_l8_n881(x)
+ if (x < 1)
+ fun_l9_n811(x)
+ else
+ fun_l9_n820(x)
+ end
+end
+
+def fun_l8_n882(x)
+ if (x < 1)
+ fun_l9_n342(x)
+ else
+ fun_l9_n919(x)
+ end
+end
+
+def fun_l8_n883(x)
+ if (x < 1)
+ fun_l9_n515(x)
+ else
+ fun_l9_n24(x)
+ end
+end
+
+def fun_l8_n884(x)
+ if (x < 1)
+ fun_l9_n0(x)
+ else
+ fun_l9_n150(x)
+ end
+end
+
+def fun_l8_n885(x)
+ if (x < 1)
+ fun_l9_n481(x)
+ else
+ fun_l9_n65(x)
+ end
+end
+
+def fun_l8_n886(x)
+ if (x < 1)
+ fun_l9_n252(x)
+ else
+ fun_l9_n544(x)
+ end
+end
+
+def fun_l8_n887(x)
+ if (x < 1)
+ fun_l9_n635(x)
+ else
+ fun_l9_n402(x)
+ end
+end
+
+def fun_l8_n888(x)
+ if (x < 1)
+ fun_l9_n78(x)
+ else
+ fun_l9_n779(x)
+ end
+end
+
+def fun_l8_n889(x)
+ if (x < 1)
+ fun_l9_n249(x)
+ else
+ fun_l9_n331(x)
+ end
+end
+
+def fun_l8_n890(x)
+ if (x < 1)
+ fun_l9_n914(x)
+ else
+ fun_l9_n115(x)
+ end
+end
+
+def fun_l8_n891(x)
+ if (x < 1)
+ fun_l9_n832(x)
+ else
+ fun_l9_n34(x)
+ end
+end
+
+def fun_l8_n892(x)
+ if (x < 1)
+ fun_l9_n919(x)
+ else
+ fun_l9_n620(x)
+ end
+end
+
+def fun_l8_n893(x)
+ if (x < 1)
+ fun_l9_n360(x)
+ else
+ fun_l9_n189(x)
+ end
+end
+
+def fun_l8_n894(x)
+ if (x < 1)
+ fun_l9_n736(x)
+ else
+ fun_l9_n949(x)
+ end
+end
+
+def fun_l8_n895(x)
+ if (x < 1)
+ fun_l9_n56(x)
+ else
+ fun_l9_n826(x)
+ end
+end
+
+def fun_l8_n896(x)
+ if (x < 1)
+ fun_l9_n159(x)
+ else
+ fun_l9_n523(x)
+ end
+end
+
+def fun_l8_n897(x)
+ if (x < 1)
+ fun_l9_n630(x)
+ else
+ fun_l9_n601(x)
+ end
+end
+
+def fun_l8_n898(x)
+ if (x < 1)
+ fun_l9_n434(x)
+ else
+ fun_l9_n919(x)
+ end
+end
+
+def fun_l8_n899(x)
+ if (x < 1)
+ fun_l9_n872(x)
+ else
+ fun_l9_n652(x)
+ end
+end
+
+def fun_l8_n900(x)
+ if (x < 1)
+ fun_l9_n550(x)
+ else
+ fun_l9_n124(x)
+ end
+end
+
+def fun_l8_n901(x)
+ if (x < 1)
+ fun_l9_n56(x)
+ else
+ fun_l9_n422(x)
+ end
+end
+
+def fun_l8_n902(x)
+ if (x < 1)
+ fun_l9_n297(x)
+ else
+ fun_l9_n281(x)
+ end
+end
+
+def fun_l8_n903(x)
+ if (x < 1)
+ fun_l9_n764(x)
+ else
+ fun_l9_n942(x)
+ end
+end
+
+def fun_l8_n904(x)
+ if (x < 1)
+ fun_l9_n700(x)
+ else
+ fun_l9_n525(x)
+ end
+end
+
+def fun_l8_n905(x)
+ if (x < 1)
+ fun_l9_n370(x)
+ else
+ fun_l9_n871(x)
+ end
+end
+
+def fun_l8_n906(x)
+ if (x < 1)
+ fun_l9_n385(x)
+ else
+ fun_l9_n999(x)
+ end
+end
+
+def fun_l8_n907(x)
+ if (x < 1)
+ fun_l9_n63(x)
+ else
+ fun_l9_n137(x)
+ end
+end
+
+def fun_l8_n908(x)
+ if (x < 1)
+ fun_l9_n793(x)
+ else
+ fun_l9_n720(x)
+ end
+end
+
+def fun_l8_n909(x)
+ if (x < 1)
+ fun_l9_n141(x)
+ else
+ fun_l9_n838(x)
+ end
+end
+
+def fun_l8_n910(x)
+ if (x < 1)
+ fun_l9_n764(x)
+ else
+ fun_l9_n334(x)
+ end
+end
+
+def fun_l8_n911(x)
+ if (x < 1)
+ fun_l9_n429(x)
+ else
+ fun_l9_n309(x)
+ end
+end
+
+def fun_l8_n912(x)
+ if (x < 1)
+ fun_l9_n852(x)
+ else
+ fun_l9_n662(x)
+ end
+end
+
+def fun_l8_n913(x)
+ if (x < 1)
+ fun_l9_n467(x)
+ else
+ fun_l9_n817(x)
+ end
+end
+
+def fun_l8_n914(x)
+ if (x < 1)
+ fun_l9_n318(x)
+ else
+ fun_l9_n942(x)
+ end
+end
+
+def fun_l8_n915(x)
+ if (x < 1)
+ fun_l9_n442(x)
+ else
+ fun_l9_n987(x)
+ end
+end
+
+def fun_l8_n916(x)
+ if (x < 1)
+ fun_l9_n657(x)
+ else
+ fun_l9_n736(x)
+ end
+end
+
+def fun_l8_n917(x)
+ if (x < 1)
+ fun_l9_n839(x)
+ else
+ fun_l9_n897(x)
+ end
+end
+
+def fun_l8_n918(x)
+ if (x < 1)
+ fun_l9_n659(x)
+ else
+ fun_l9_n766(x)
+ end
+end
+
+def fun_l8_n919(x)
+ if (x < 1)
+ fun_l9_n523(x)
+ else
+ fun_l9_n54(x)
+ end
+end
+
+def fun_l8_n920(x)
+ if (x < 1)
+ fun_l9_n298(x)
+ else
+ fun_l9_n169(x)
+ end
+end
+
+def fun_l8_n921(x)
+ if (x < 1)
+ fun_l9_n752(x)
+ else
+ fun_l9_n281(x)
+ end
+end
+
+def fun_l8_n922(x)
+ if (x < 1)
+ fun_l9_n703(x)
+ else
+ fun_l9_n874(x)
+ end
+end
+
+def fun_l8_n923(x)
+ if (x < 1)
+ fun_l9_n218(x)
+ else
+ fun_l9_n880(x)
+ end
+end
+
+def fun_l8_n924(x)
+ if (x < 1)
+ fun_l9_n699(x)
+ else
+ fun_l9_n357(x)
+ end
+end
+
+def fun_l8_n925(x)
+ if (x < 1)
+ fun_l9_n279(x)
+ else
+ fun_l9_n300(x)
+ end
+end
+
+def fun_l8_n926(x)
+ if (x < 1)
+ fun_l9_n955(x)
+ else
+ fun_l9_n522(x)
+ end
+end
+
+def fun_l8_n927(x)
+ if (x < 1)
+ fun_l9_n943(x)
+ else
+ fun_l9_n597(x)
+ end
+end
+
+def fun_l8_n928(x)
+ if (x < 1)
+ fun_l9_n828(x)
+ else
+ fun_l9_n658(x)
+ end
+end
+
+def fun_l8_n929(x)
+ if (x < 1)
+ fun_l9_n160(x)
+ else
+ fun_l9_n536(x)
+ end
+end
+
+def fun_l8_n930(x)
+ if (x < 1)
+ fun_l9_n422(x)
+ else
+ fun_l9_n848(x)
+ end
+end
+
+def fun_l8_n931(x)
+ if (x < 1)
+ fun_l9_n66(x)
+ else
+ fun_l9_n298(x)
+ end
+end
+
+def fun_l8_n932(x)
+ if (x < 1)
+ fun_l9_n871(x)
+ else
+ fun_l9_n443(x)
+ end
+end
+
+def fun_l8_n933(x)
+ if (x < 1)
+ fun_l9_n876(x)
+ else
+ fun_l9_n459(x)
+ end
+end
+
+def fun_l8_n934(x)
+ if (x < 1)
+ fun_l9_n319(x)
+ else
+ fun_l9_n921(x)
+ end
+end
+
+def fun_l8_n935(x)
+ if (x < 1)
+ fun_l9_n741(x)
+ else
+ fun_l9_n659(x)
+ end
+end
+
+def fun_l8_n936(x)
+ if (x < 1)
+ fun_l9_n713(x)
+ else
+ fun_l9_n800(x)
+ end
+end
+
+def fun_l8_n937(x)
+ if (x < 1)
+ fun_l9_n945(x)
+ else
+ fun_l9_n548(x)
+ end
+end
+
+def fun_l8_n938(x)
+ if (x < 1)
+ fun_l9_n732(x)
+ else
+ fun_l9_n10(x)
+ end
+end
+
+def fun_l8_n939(x)
+ if (x < 1)
+ fun_l9_n5(x)
+ else
+ fun_l9_n864(x)
+ end
+end
+
+def fun_l8_n940(x)
+ if (x < 1)
+ fun_l9_n353(x)
+ else
+ fun_l9_n46(x)
+ end
+end
+
+def fun_l8_n941(x)
+ if (x < 1)
+ fun_l9_n622(x)
+ else
+ fun_l9_n430(x)
+ end
+end
+
+def fun_l8_n942(x)
+ if (x < 1)
+ fun_l9_n120(x)
+ else
+ fun_l9_n265(x)
+ end
+end
+
+def fun_l8_n943(x)
+ if (x < 1)
+ fun_l9_n272(x)
+ else
+ fun_l9_n290(x)
+ end
+end
+
+def fun_l8_n944(x)
+ if (x < 1)
+ fun_l9_n527(x)
+ else
+ fun_l9_n830(x)
+ end
+end
+
+def fun_l8_n945(x)
+ if (x < 1)
+ fun_l9_n202(x)
+ else
+ fun_l9_n597(x)
+ end
+end
+
+def fun_l8_n946(x)
+ if (x < 1)
+ fun_l9_n797(x)
+ else
+ fun_l9_n984(x)
+ end
+end
+
+def fun_l8_n947(x)
+ if (x < 1)
+ fun_l9_n3(x)
+ else
+ fun_l9_n173(x)
+ end
+end
+
+def fun_l8_n948(x)
+ if (x < 1)
+ fun_l9_n658(x)
+ else
+ fun_l9_n48(x)
+ end
+end
+
+def fun_l8_n949(x)
+ if (x < 1)
+ fun_l9_n302(x)
+ else
+ fun_l9_n549(x)
+ end
+end
+
+def fun_l8_n950(x)
+ if (x < 1)
+ fun_l9_n450(x)
+ else
+ fun_l9_n442(x)
+ end
+end
+
+def fun_l8_n951(x)
+ if (x < 1)
+ fun_l9_n32(x)
+ else
+ fun_l9_n287(x)
+ end
+end
+
+def fun_l8_n952(x)
+ if (x < 1)
+ fun_l9_n427(x)
+ else
+ fun_l9_n67(x)
+ end
+end
+
+def fun_l8_n953(x)
+ if (x < 1)
+ fun_l9_n153(x)
+ else
+ fun_l9_n748(x)
+ end
+end
+
+def fun_l8_n954(x)
+ if (x < 1)
+ fun_l9_n528(x)
+ else
+ fun_l9_n754(x)
+ end
+end
+
+def fun_l8_n955(x)
+ if (x < 1)
+ fun_l9_n722(x)
+ else
+ fun_l9_n982(x)
+ end
+end
+
+def fun_l8_n956(x)
+ if (x < 1)
+ fun_l9_n857(x)
+ else
+ fun_l9_n286(x)
+ end
+end
+
+def fun_l8_n957(x)
+ if (x < 1)
+ fun_l9_n579(x)
+ else
+ fun_l9_n830(x)
+ end
+end
+
+def fun_l8_n958(x)
+ if (x < 1)
+ fun_l9_n913(x)
+ else
+ fun_l9_n918(x)
+ end
+end
+
+def fun_l8_n959(x)
+ if (x < 1)
+ fun_l9_n575(x)
+ else
+ fun_l9_n441(x)
+ end
+end
+
+def fun_l8_n960(x)
+ if (x < 1)
+ fun_l9_n774(x)
+ else
+ fun_l9_n426(x)
+ end
+end
+
+def fun_l8_n961(x)
+ if (x < 1)
+ fun_l9_n415(x)
+ else
+ fun_l9_n720(x)
+ end
+end
+
+def fun_l8_n962(x)
+ if (x < 1)
+ fun_l9_n187(x)
+ else
+ fun_l9_n101(x)
+ end
+end
+
+def fun_l8_n963(x)
+ if (x < 1)
+ fun_l9_n146(x)
+ else
+ fun_l9_n911(x)
+ end
+end
+
+def fun_l8_n964(x)
+ if (x < 1)
+ fun_l9_n758(x)
+ else
+ fun_l9_n46(x)
+ end
+end
+
+def fun_l8_n965(x)
+ if (x < 1)
+ fun_l9_n316(x)
+ else
+ fun_l9_n874(x)
+ end
+end
+
+def fun_l8_n966(x)
+ if (x < 1)
+ fun_l9_n604(x)
+ else
+ fun_l9_n933(x)
+ end
+end
+
+def fun_l8_n967(x)
+ if (x < 1)
+ fun_l9_n185(x)
+ else
+ fun_l9_n729(x)
+ end
+end
+
+def fun_l8_n968(x)
+ if (x < 1)
+ fun_l9_n735(x)
+ else
+ fun_l9_n347(x)
+ end
+end
+
+def fun_l8_n969(x)
+ if (x < 1)
+ fun_l9_n796(x)
+ else
+ fun_l9_n163(x)
+ end
+end
+
+def fun_l8_n970(x)
+ if (x < 1)
+ fun_l9_n535(x)
+ else
+ fun_l9_n184(x)
+ end
+end
+
+def fun_l8_n971(x)
+ if (x < 1)
+ fun_l9_n919(x)
+ else
+ fun_l9_n838(x)
+ end
+end
+
+def fun_l8_n972(x)
+ if (x < 1)
+ fun_l9_n296(x)
+ else
+ fun_l9_n822(x)
+ end
+end
+
+def fun_l8_n973(x)
+ if (x < 1)
+ fun_l9_n503(x)
+ else
+ fun_l9_n979(x)
+ end
+end
+
+def fun_l8_n974(x)
+ if (x < 1)
+ fun_l9_n598(x)
+ else
+ fun_l9_n916(x)
+ end
+end
+
+def fun_l8_n975(x)
+ if (x < 1)
+ fun_l9_n119(x)
+ else
+ fun_l9_n138(x)
+ end
+end
+
+def fun_l8_n976(x)
+ if (x < 1)
+ fun_l9_n92(x)
+ else
+ fun_l9_n244(x)
+ end
+end
+
+def fun_l8_n977(x)
+ if (x < 1)
+ fun_l9_n250(x)
+ else
+ fun_l9_n496(x)
+ end
+end
+
+def fun_l8_n978(x)
+ if (x < 1)
+ fun_l9_n665(x)
+ else
+ fun_l9_n617(x)
+ end
+end
+
+def fun_l8_n979(x)
+ if (x < 1)
+ fun_l9_n212(x)
+ else
+ fun_l9_n63(x)
+ end
+end
+
+def fun_l8_n980(x)
+ if (x < 1)
+ fun_l9_n304(x)
+ else
+ fun_l9_n373(x)
+ end
+end
+
+def fun_l8_n981(x)
+ if (x < 1)
+ fun_l9_n70(x)
+ else
+ fun_l9_n194(x)
+ end
+end
+
+def fun_l8_n982(x)
+ if (x < 1)
+ fun_l9_n996(x)
+ else
+ fun_l9_n821(x)
+ end
+end
+
+def fun_l8_n983(x)
+ if (x < 1)
+ fun_l9_n109(x)
+ else
+ fun_l9_n926(x)
+ end
+end
+
+def fun_l8_n984(x)
+ if (x < 1)
+ fun_l9_n342(x)
+ else
+ fun_l9_n768(x)
+ end
+end
+
+def fun_l8_n985(x)
+ if (x < 1)
+ fun_l9_n12(x)
+ else
+ fun_l9_n55(x)
+ end
+end
+
+def fun_l8_n986(x)
+ if (x < 1)
+ fun_l9_n663(x)
+ else
+ fun_l9_n963(x)
+ end
+end
+
+def fun_l8_n987(x)
+ if (x < 1)
+ fun_l9_n108(x)
+ else
+ fun_l9_n139(x)
+ end
+end
+
+def fun_l8_n988(x)
+ if (x < 1)
+ fun_l9_n256(x)
+ else
+ fun_l9_n55(x)
+ end
+end
+
+def fun_l8_n989(x)
+ if (x < 1)
+ fun_l9_n261(x)
+ else
+ fun_l9_n962(x)
+ end
+end
+
+def fun_l8_n990(x)
+ if (x < 1)
+ fun_l9_n581(x)
+ else
+ fun_l9_n558(x)
+ end
+end
+
+def fun_l8_n991(x)
+ if (x < 1)
+ fun_l9_n379(x)
+ else
+ fun_l9_n179(x)
+ end
+end
+
+def fun_l8_n992(x)
+ if (x < 1)
+ fun_l9_n256(x)
+ else
+ fun_l9_n158(x)
+ end
+end
+
+def fun_l8_n993(x)
+ if (x < 1)
+ fun_l9_n75(x)
+ else
+ fun_l9_n669(x)
+ end
+end
+
+def fun_l8_n994(x)
+ if (x < 1)
+ fun_l9_n1(x)
+ else
+ fun_l9_n723(x)
+ end
+end
+
+def fun_l8_n995(x)
+ if (x < 1)
+ fun_l9_n52(x)
+ else
+ fun_l9_n706(x)
+ end
+end
+
+def fun_l8_n996(x)
+ if (x < 1)
+ fun_l9_n583(x)
+ else
+ fun_l9_n769(x)
+ end
+end
+
+def fun_l8_n997(x)
+ if (x < 1)
+ fun_l9_n91(x)
+ else
+ fun_l9_n86(x)
+ end
+end
+
+def fun_l8_n998(x)
+ if (x < 1)
+ fun_l9_n605(x)
+ else
+ fun_l9_n106(x)
+ end
+end
+
+def fun_l8_n999(x)
+ if (x < 1)
+ fun_l9_n634(x)
+ else
+ fun_l9_n110(x)
+ end
+end
+
+def fun_l9_n0(x)
+ if (x < 1)
+ fun_l10_n583(x)
+ else
+ fun_l10_n168(x)
+ end
+end
+
+def fun_l9_n1(x)
+ if (x < 1)
+ fun_l10_n523(x)
+ else
+ fun_l10_n486(x)
+ end
+end
+
+def fun_l9_n2(x)
+ if (x < 1)
+ fun_l10_n869(x)
+ else
+ fun_l10_n480(x)
+ end
+end
+
+def fun_l9_n3(x)
+ if (x < 1)
+ fun_l10_n227(x)
+ else
+ fun_l10_n798(x)
+ end
+end
+
+def fun_l9_n4(x)
+ if (x < 1)
+ fun_l10_n8(x)
+ else
+ fun_l10_n984(x)
+ end
+end
+
+def fun_l9_n5(x)
+ if (x < 1)
+ fun_l10_n757(x)
+ else
+ fun_l10_n791(x)
+ end
+end
+
+def fun_l9_n6(x)
+ if (x < 1)
+ fun_l10_n131(x)
+ else
+ fun_l10_n44(x)
+ end
+end
+
+def fun_l9_n7(x)
+ if (x < 1)
+ fun_l10_n292(x)
+ else
+ fun_l10_n793(x)
+ end
+end
+
+def fun_l9_n8(x)
+ if (x < 1)
+ fun_l10_n237(x)
+ else
+ fun_l10_n439(x)
+ end
+end
+
+def fun_l9_n9(x)
+ if (x < 1)
+ fun_l10_n99(x)
+ else
+ fun_l10_n914(x)
+ end
+end
+
+def fun_l9_n10(x)
+ if (x < 1)
+ fun_l10_n702(x)
+ else
+ fun_l10_n983(x)
+ end
+end
+
+def fun_l9_n11(x)
+ if (x < 1)
+ fun_l10_n843(x)
+ else
+ fun_l10_n774(x)
+ end
+end
+
+def fun_l9_n12(x)
+ if (x < 1)
+ fun_l10_n720(x)
+ else
+ fun_l10_n238(x)
+ end
+end
+
+def fun_l9_n13(x)
+ if (x < 1)
+ fun_l10_n339(x)
+ else
+ fun_l10_n613(x)
+ end
+end
+
+def fun_l9_n14(x)
+ if (x < 1)
+ fun_l10_n711(x)
+ else
+ fun_l10_n836(x)
+ end
+end
+
+def fun_l9_n15(x)
+ if (x < 1)
+ fun_l10_n542(x)
+ else
+ fun_l10_n90(x)
+ end
+end
+
+def fun_l9_n16(x)
+ if (x < 1)
+ fun_l10_n931(x)
+ else
+ fun_l10_n1(x)
+ end
+end
+
+def fun_l9_n17(x)
+ if (x < 1)
+ fun_l10_n568(x)
+ else
+ fun_l10_n397(x)
+ end
+end
+
+def fun_l9_n18(x)
+ if (x < 1)
+ fun_l10_n108(x)
+ else
+ fun_l10_n245(x)
+ end
+end
+
+def fun_l9_n19(x)
+ if (x < 1)
+ fun_l10_n413(x)
+ else
+ fun_l10_n644(x)
+ end
+end
+
+def fun_l9_n20(x)
+ if (x < 1)
+ fun_l10_n533(x)
+ else
+ fun_l10_n345(x)
+ end
+end
+
+def fun_l9_n21(x)
+ if (x < 1)
+ fun_l10_n84(x)
+ else
+ fun_l10_n821(x)
+ end
+end
+
+def fun_l9_n22(x)
+ if (x < 1)
+ fun_l10_n391(x)
+ else
+ fun_l10_n154(x)
+ end
+end
+
+def fun_l9_n23(x)
+ if (x < 1)
+ fun_l10_n591(x)
+ else
+ fun_l10_n443(x)
+ end
+end
+
+def fun_l9_n24(x)
+ if (x < 1)
+ fun_l10_n105(x)
+ else
+ fun_l10_n652(x)
+ end
+end
+
+def fun_l9_n25(x)
+ if (x < 1)
+ fun_l10_n495(x)
+ else
+ fun_l10_n185(x)
+ end
+end
+
+def fun_l9_n26(x)
+ if (x < 1)
+ fun_l10_n160(x)
+ else
+ fun_l10_n77(x)
+ end
+end
+
+def fun_l9_n27(x)
+ if (x < 1)
+ fun_l10_n307(x)
+ else
+ fun_l10_n813(x)
+ end
+end
+
+def fun_l9_n28(x)
+ if (x < 1)
+ fun_l10_n651(x)
+ else
+ fun_l10_n198(x)
+ end
+end
+
+def fun_l9_n29(x)
+ if (x < 1)
+ fun_l10_n689(x)
+ else
+ fun_l10_n995(x)
+ end
+end
+
+def fun_l9_n30(x)
+ if (x < 1)
+ fun_l10_n52(x)
+ else
+ fun_l10_n846(x)
+ end
+end
+
+def fun_l9_n31(x)
+ if (x < 1)
+ fun_l10_n151(x)
+ else
+ fun_l10_n758(x)
+ end
+end
+
+def fun_l9_n32(x)
+ if (x < 1)
+ fun_l10_n675(x)
+ else
+ fun_l10_n240(x)
+ end
+end
+
+def fun_l9_n33(x)
+ if (x < 1)
+ fun_l10_n660(x)
+ else
+ fun_l10_n826(x)
+ end
+end
+
+def fun_l9_n34(x)
+ if (x < 1)
+ fun_l10_n858(x)
+ else
+ fun_l10_n120(x)
+ end
+end
+
+def fun_l9_n35(x)
+ if (x < 1)
+ fun_l10_n28(x)
+ else
+ fun_l10_n870(x)
+ end
+end
+
+def fun_l9_n36(x)
+ if (x < 1)
+ fun_l10_n275(x)
+ else
+ fun_l10_n376(x)
+ end
+end
+
+def fun_l9_n37(x)
+ if (x < 1)
+ fun_l10_n852(x)
+ else
+ fun_l10_n413(x)
+ end
+end
+
+def fun_l9_n38(x)
+ if (x < 1)
+ fun_l10_n608(x)
+ else
+ fun_l10_n740(x)
+ end
+end
+
+def fun_l9_n39(x)
+ if (x < 1)
+ fun_l10_n856(x)
+ else
+ fun_l10_n543(x)
+ end
+end
+
+def fun_l9_n40(x)
+ if (x < 1)
+ fun_l10_n979(x)
+ else
+ fun_l10_n37(x)
+ end
+end
+
+def fun_l9_n41(x)
+ if (x < 1)
+ fun_l10_n752(x)
+ else
+ fun_l10_n94(x)
+ end
+end
+
+def fun_l9_n42(x)
+ if (x < 1)
+ fun_l10_n653(x)
+ else
+ fun_l10_n64(x)
+ end
+end
+
+def fun_l9_n43(x)
+ if (x < 1)
+ fun_l10_n860(x)
+ else
+ fun_l10_n658(x)
+ end
+end
+
+def fun_l9_n44(x)
+ if (x < 1)
+ fun_l10_n952(x)
+ else
+ fun_l10_n413(x)
+ end
+end
+
+def fun_l9_n45(x)
+ if (x < 1)
+ fun_l10_n70(x)
+ else
+ fun_l10_n297(x)
+ end
+end
+
+def fun_l9_n46(x)
+ if (x < 1)
+ fun_l10_n100(x)
+ else
+ fun_l10_n154(x)
+ end
+end
+
+def fun_l9_n47(x)
+ if (x < 1)
+ fun_l10_n746(x)
+ else
+ fun_l10_n937(x)
+ end
+end
+
+def fun_l9_n48(x)
+ if (x < 1)
+ fun_l10_n341(x)
+ else
+ fun_l10_n200(x)
+ end
+end
+
+def fun_l9_n49(x)
+ if (x < 1)
+ fun_l10_n317(x)
+ else
+ fun_l10_n607(x)
+ end
+end
+
+def fun_l9_n50(x)
+ if (x < 1)
+ fun_l10_n194(x)
+ else
+ fun_l10_n499(x)
+ end
+end
+
+def fun_l9_n51(x)
+ if (x < 1)
+ fun_l10_n936(x)
+ else
+ fun_l10_n387(x)
+ end
+end
+
+def fun_l9_n52(x)
+ if (x < 1)
+ fun_l10_n660(x)
+ else
+ fun_l10_n734(x)
+ end
+end
+
+def fun_l9_n53(x)
+ if (x < 1)
+ fun_l10_n523(x)
+ else
+ fun_l10_n532(x)
+ end
+end
+
+def fun_l9_n54(x)
+ if (x < 1)
+ fun_l10_n847(x)
+ else
+ fun_l10_n586(x)
+ end
+end
+
+def fun_l9_n55(x)
+ if (x < 1)
+ fun_l10_n378(x)
+ else
+ fun_l10_n226(x)
+ end
+end
+
+def fun_l9_n56(x)
+ if (x < 1)
+ fun_l10_n55(x)
+ else
+ fun_l10_n823(x)
+ end
+end
+
+def fun_l9_n57(x)
+ if (x < 1)
+ fun_l10_n931(x)
+ else
+ fun_l10_n268(x)
+ end
+end
+
+def fun_l9_n58(x)
+ if (x < 1)
+ fun_l10_n603(x)
+ else
+ fun_l10_n746(x)
+ end
+end
+
+def fun_l9_n59(x)
+ if (x < 1)
+ fun_l10_n174(x)
+ else
+ fun_l10_n196(x)
+ end
+end
+
+def fun_l9_n60(x)
+ if (x < 1)
+ fun_l10_n45(x)
+ else
+ fun_l10_n907(x)
+ end
+end
+
+def fun_l9_n61(x)
+ if (x < 1)
+ fun_l10_n282(x)
+ else
+ fun_l10_n478(x)
+ end
+end
+
+def fun_l9_n62(x)
+ if (x < 1)
+ fun_l10_n558(x)
+ else
+ fun_l10_n354(x)
+ end
+end
+
+def fun_l9_n63(x)
+ if (x < 1)
+ fun_l10_n729(x)
+ else
+ fun_l10_n275(x)
+ end
+end
+
+def fun_l9_n64(x)
+ if (x < 1)
+ fun_l10_n804(x)
+ else
+ fun_l10_n873(x)
+ end
+end
+
+def fun_l9_n65(x)
+ if (x < 1)
+ fun_l10_n901(x)
+ else
+ fun_l10_n684(x)
+ end
+end
+
+def fun_l9_n66(x)
+ if (x < 1)
+ fun_l10_n542(x)
+ else
+ fun_l10_n668(x)
+ end
+end
+
+def fun_l9_n67(x)
+ if (x < 1)
+ fun_l10_n112(x)
+ else
+ fun_l10_n48(x)
+ end
+end
+
+def fun_l9_n68(x)
+ if (x < 1)
+ fun_l10_n78(x)
+ else
+ fun_l10_n50(x)
+ end
+end
+
+def fun_l9_n69(x)
+ if (x < 1)
+ fun_l10_n595(x)
+ else
+ fun_l10_n163(x)
+ end
+end
+
+def fun_l9_n70(x)
+ if (x < 1)
+ fun_l10_n839(x)
+ else
+ fun_l10_n811(x)
+ end
+end
+
+def fun_l9_n71(x)
+ if (x < 1)
+ fun_l10_n704(x)
+ else
+ fun_l10_n81(x)
+ end
+end
+
+def fun_l9_n72(x)
+ if (x < 1)
+ fun_l10_n708(x)
+ else
+ fun_l10_n711(x)
+ end
+end
+
+def fun_l9_n73(x)
+ if (x < 1)
+ fun_l10_n948(x)
+ else
+ fun_l10_n397(x)
+ end
+end
+
+def fun_l9_n74(x)
+ if (x < 1)
+ fun_l10_n168(x)
+ else
+ fun_l10_n415(x)
+ end
+end
+
+def fun_l9_n75(x)
+ if (x < 1)
+ fun_l10_n191(x)
+ else
+ fun_l10_n547(x)
+ end
+end
+
+def fun_l9_n76(x)
+ if (x < 1)
+ fun_l10_n163(x)
+ else
+ fun_l10_n246(x)
+ end
+end
+
+def fun_l9_n77(x)
+ if (x < 1)
+ fun_l10_n948(x)
+ else
+ fun_l10_n80(x)
+ end
+end
+
+def fun_l9_n78(x)
+ if (x < 1)
+ fun_l10_n178(x)
+ else
+ fun_l10_n698(x)
+ end
+end
+
+def fun_l9_n79(x)
+ if (x < 1)
+ fun_l10_n150(x)
+ else
+ fun_l10_n545(x)
+ end
+end
+
+def fun_l9_n80(x)
+ if (x < 1)
+ fun_l10_n808(x)
+ else
+ fun_l10_n668(x)
+ end
+end
+
+def fun_l9_n81(x)
+ if (x < 1)
+ fun_l10_n597(x)
+ else
+ fun_l10_n908(x)
+ end
+end
+
+def fun_l9_n82(x)
+ if (x < 1)
+ fun_l10_n868(x)
+ else
+ fun_l10_n831(x)
+ end
+end
+
+def fun_l9_n83(x)
+ if (x < 1)
+ fun_l10_n432(x)
+ else
+ fun_l10_n281(x)
+ end
+end
+
+def fun_l9_n84(x)
+ if (x < 1)
+ fun_l10_n906(x)
+ else
+ fun_l10_n838(x)
+ end
+end
+
+def fun_l9_n85(x)
+ if (x < 1)
+ fun_l10_n828(x)
+ else
+ fun_l10_n876(x)
+ end
+end
+
+def fun_l9_n86(x)
+ if (x < 1)
+ fun_l10_n537(x)
+ else
+ fun_l10_n283(x)
+ end
+end
+
+def fun_l9_n87(x)
+ if (x < 1)
+ fun_l10_n108(x)
+ else
+ fun_l10_n157(x)
+ end
+end
+
+def fun_l9_n88(x)
+ if (x < 1)
+ fun_l10_n576(x)
+ else
+ fun_l10_n448(x)
+ end
+end
+
+def fun_l9_n89(x)
+ if (x < 1)
+ fun_l10_n633(x)
+ else
+ fun_l10_n43(x)
+ end
+end
+
+def fun_l9_n90(x)
+ if (x < 1)
+ fun_l10_n114(x)
+ else
+ fun_l10_n44(x)
+ end
+end
+
+def fun_l9_n91(x)
+ if (x < 1)
+ fun_l10_n656(x)
+ else
+ fun_l10_n586(x)
+ end
+end
+
+def fun_l9_n92(x)
+ if (x < 1)
+ fun_l10_n366(x)
+ else
+ fun_l10_n613(x)
+ end
+end
+
+def fun_l9_n93(x)
+ if (x < 1)
+ fun_l10_n174(x)
+ else
+ fun_l10_n250(x)
+ end
+end
+
+def fun_l9_n94(x)
+ if (x < 1)
+ fun_l10_n911(x)
+ else
+ fun_l10_n877(x)
+ end
+end
+
+def fun_l9_n95(x)
+ if (x < 1)
+ fun_l10_n940(x)
+ else
+ fun_l10_n334(x)
+ end
+end
+
+def fun_l9_n96(x)
+ if (x < 1)
+ fun_l10_n473(x)
+ else
+ fun_l10_n914(x)
+ end
+end
+
+def fun_l9_n97(x)
+ if (x < 1)
+ fun_l10_n550(x)
+ else
+ fun_l10_n80(x)
+ end
+end
+
+def fun_l9_n98(x)
+ if (x < 1)
+ fun_l10_n46(x)
+ else
+ fun_l10_n716(x)
+ end
+end
+
+def fun_l9_n99(x)
+ if (x < 1)
+ fun_l10_n294(x)
+ else
+ fun_l10_n615(x)
+ end
+end
+
+def fun_l9_n100(x)
+ if (x < 1)
+ fun_l10_n286(x)
+ else
+ fun_l10_n120(x)
+ end
+end
+
+def fun_l9_n101(x)
+ if (x < 1)
+ fun_l10_n674(x)
+ else
+ fun_l10_n498(x)
+ end
+end
+
+def fun_l9_n102(x)
+ if (x < 1)
+ fun_l10_n700(x)
+ else
+ fun_l10_n35(x)
+ end
+end
+
+def fun_l9_n103(x)
+ if (x < 1)
+ fun_l10_n225(x)
+ else
+ fun_l10_n206(x)
+ end
+end
+
+def fun_l9_n104(x)
+ if (x < 1)
+ fun_l10_n594(x)
+ else
+ fun_l10_n679(x)
+ end
+end
+
+def fun_l9_n105(x)
+ if (x < 1)
+ fun_l10_n148(x)
+ else
+ fun_l10_n449(x)
+ end
+end
+
+def fun_l9_n106(x)
+ if (x < 1)
+ fun_l10_n125(x)
+ else
+ fun_l10_n761(x)
+ end
+end
+
+def fun_l9_n107(x)
+ if (x < 1)
+ fun_l10_n642(x)
+ else
+ fun_l10_n988(x)
+ end
+end
+
+def fun_l9_n108(x)
+ if (x < 1)
+ fun_l10_n952(x)
+ else
+ fun_l10_n436(x)
+ end
+end
+
+def fun_l9_n109(x)
+ if (x < 1)
+ fun_l10_n955(x)
+ else
+ fun_l10_n380(x)
+ end
+end
+
+def fun_l9_n110(x)
+ if (x < 1)
+ fun_l10_n813(x)
+ else
+ fun_l10_n837(x)
+ end
+end
+
+def fun_l9_n111(x)
+ if (x < 1)
+ fun_l10_n471(x)
+ else
+ fun_l10_n69(x)
+ end
+end
+
+def fun_l9_n112(x)
+ if (x < 1)
+ fun_l10_n614(x)
+ else
+ fun_l10_n665(x)
+ end
+end
+
+def fun_l9_n113(x)
+ if (x < 1)
+ fun_l10_n485(x)
+ else
+ fun_l10_n276(x)
+ end
+end
+
+def fun_l9_n114(x)
+ if (x < 1)
+ fun_l10_n171(x)
+ else
+ fun_l10_n457(x)
+ end
+end
+
+def fun_l9_n115(x)
+ if (x < 1)
+ fun_l10_n106(x)
+ else
+ fun_l10_n555(x)
+ end
+end
+
+def fun_l9_n116(x)
+ if (x < 1)
+ fun_l10_n231(x)
+ else
+ fun_l10_n163(x)
+ end
+end
+
+def fun_l9_n117(x)
+ if (x < 1)
+ fun_l10_n569(x)
+ else
+ fun_l10_n345(x)
+ end
+end
+
+def fun_l9_n118(x)
+ if (x < 1)
+ fun_l10_n946(x)
+ else
+ fun_l10_n174(x)
+ end
+end
+
+def fun_l9_n119(x)
+ if (x < 1)
+ fun_l10_n716(x)
+ else
+ fun_l10_n882(x)
+ end
+end
+
+def fun_l9_n120(x)
+ if (x < 1)
+ fun_l10_n628(x)
+ else
+ fun_l10_n838(x)
+ end
+end
+
+def fun_l9_n121(x)
+ if (x < 1)
+ fun_l10_n699(x)
+ else
+ fun_l10_n384(x)
+ end
+end
+
+def fun_l9_n122(x)
+ if (x < 1)
+ fun_l10_n180(x)
+ else
+ fun_l10_n98(x)
+ end
+end
+
+def fun_l9_n123(x)
+ if (x < 1)
+ fun_l10_n177(x)
+ else
+ fun_l10_n635(x)
+ end
+end
+
+def fun_l9_n124(x)
+ if (x < 1)
+ fun_l10_n398(x)
+ else
+ fun_l10_n121(x)
+ end
+end
+
+def fun_l9_n125(x)
+ if (x < 1)
+ fun_l10_n866(x)
+ else
+ fun_l10_n595(x)
+ end
+end
+
+def fun_l9_n126(x)
+ if (x < 1)
+ fun_l10_n9(x)
+ else
+ fun_l10_n901(x)
+ end
+end
+
+def fun_l9_n127(x)
+ if (x < 1)
+ fun_l10_n579(x)
+ else
+ fun_l10_n640(x)
+ end
+end
+
+def fun_l9_n128(x)
+ if (x < 1)
+ fun_l10_n884(x)
+ else
+ fun_l10_n327(x)
+ end
+end
+
+def fun_l9_n129(x)
+ if (x < 1)
+ fun_l10_n553(x)
+ else
+ fun_l10_n73(x)
+ end
+end
+
+def fun_l9_n130(x)
+ if (x < 1)
+ fun_l10_n372(x)
+ else
+ fun_l10_n450(x)
+ end
+end
+
+def fun_l9_n131(x)
+ if (x < 1)
+ fun_l10_n748(x)
+ else
+ fun_l10_n534(x)
+ end
+end
+
+def fun_l9_n132(x)
+ if (x < 1)
+ fun_l10_n529(x)
+ else
+ fun_l10_n689(x)
+ end
+end
+
+def fun_l9_n133(x)
+ if (x < 1)
+ fun_l10_n24(x)
+ else
+ fun_l10_n677(x)
+ end
+end
+
+def fun_l9_n134(x)
+ if (x < 1)
+ fun_l10_n4(x)
+ else
+ fun_l10_n482(x)
+ end
+end
+
+def fun_l9_n135(x)
+ if (x < 1)
+ fun_l10_n314(x)
+ else
+ fun_l10_n509(x)
+ end
+end
+
+def fun_l9_n136(x)
+ if (x < 1)
+ fun_l10_n160(x)
+ else
+ fun_l10_n342(x)
+ end
+end
+
+def fun_l9_n137(x)
+ if (x < 1)
+ fun_l10_n289(x)
+ else
+ fun_l10_n910(x)
+ end
+end
+
+def fun_l9_n138(x)
+ if (x < 1)
+ fun_l10_n926(x)
+ else
+ fun_l10_n752(x)
+ end
+end
+
+def fun_l9_n139(x)
+ if (x < 1)
+ fun_l10_n303(x)
+ else
+ fun_l10_n399(x)
+ end
+end
+
+def fun_l9_n140(x)
+ if (x < 1)
+ fun_l10_n11(x)
+ else
+ fun_l10_n241(x)
+ end
+end
+
+def fun_l9_n141(x)
+ if (x < 1)
+ fun_l10_n528(x)
+ else
+ fun_l10_n727(x)
+ end
+end
+
+def fun_l9_n142(x)
+ if (x < 1)
+ fun_l10_n572(x)
+ else
+ fun_l10_n132(x)
+ end
+end
+
+def fun_l9_n143(x)
+ if (x < 1)
+ fun_l10_n858(x)
+ else
+ fun_l10_n712(x)
+ end
+end
+
+def fun_l9_n144(x)
+ if (x < 1)
+ fun_l10_n662(x)
+ else
+ fun_l10_n128(x)
+ end
+end
+
+def fun_l9_n145(x)
+ if (x < 1)
+ fun_l10_n668(x)
+ else
+ fun_l10_n483(x)
+ end
+end
+
+def fun_l9_n146(x)
+ if (x < 1)
+ fun_l10_n401(x)
+ else
+ fun_l10_n330(x)
+ end
+end
+
+def fun_l9_n147(x)
+ if (x < 1)
+ fun_l10_n103(x)
+ else
+ fun_l10_n859(x)
+ end
+end
+
+def fun_l9_n148(x)
+ if (x < 1)
+ fun_l10_n129(x)
+ else
+ fun_l10_n628(x)
+ end
+end
+
+def fun_l9_n149(x)
+ if (x < 1)
+ fun_l10_n898(x)
+ else
+ fun_l10_n984(x)
+ end
+end
+
+def fun_l9_n150(x)
+ if (x < 1)
+ fun_l10_n574(x)
+ else
+ fun_l10_n59(x)
+ end
+end
+
+def fun_l9_n151(x)
+ if (x < 1)
+ fun_l10_n759(x)
+ else
+ fun_l10_n782(x)
+ end
+end
+
+def fun_l9_n152(x)
+ if (x < 1)
+ fun_l10_n588(x)
+ else
+ fun_l10_n383(x)
+ end
+end
+
+def fun_l9_n153(x)
+ if (x < 1)
+ fun_l10_n889(x)
+ else
+ fun_l10_n628(x)
+ end
+end
+
+def fun_l9_n154(x)
+ if (x < 1)
+ fun_l10_n376(x)
+ else
+ fun_l10_n442(x)
+ end
+end
+
+def fun_l9_n155(x)
+ if (x < 1)
+ fun_l10_n497(x)
+ else
+ fun_l10_n269(x)
+ end
+end
+
+def fun_l9_n156(x)
+ if (x < 1)
+ fun_l10_n976(x)
+ else
+ fun_l10_n829(x)
+ end
+end
+
+def fun_l9_n157(x)
+ if (x < 1)
+ fun_l10_n366(x)
+ else
+ fun_l10_n416(x)
+ end
+end
+
+def fun_l9_n158(x)
+ if (x < 1)
+ fun_l10_n712(x)
+ else
+ fun_l10_n19(x)
+ end
+end
+
+def fun_l9_n159(x)
+ if (x < 1)
+ fun_l10_n151(x)
+ else
+ fun_l10_n129(x)
+ end
+end
+
+def fun_l9_n160(x)
+ if (x < 1)
+ fun_l10_n621(x)
+ else
+ fun_l10_n385(x)
+ end
+end
+
+def fun_l9_n161(x)
+ if (x < 1)
+ fun_l10_n626(x)
+ else
+ fun_l10_n686(x)
+ end
+end
+
+def fun_l9_n162(x)
+ if (x < 1)
+ fun_l10_n165(x)
+ else
+ fun_l10_n922(x)
+ end
+end
+
+def fun_l9_n163(x)
+ if (x < 1)
+ fun_l10_n670(x)
+ else
+ fun_l10_n889(x)
+ end
+end
+
+def fun_l9_n164(x)
+ if (x < 1)
+ fun_l10_n346(x)
+ else
+ fun_l10_n292(x)
+ end
+end
+
+def fun_l9_n165(x)
+ if (x < 1)
+ fun_l10_n812(x)
+ else
+ fun_l10_n799(x)
+ end
+end
+
+def fun_l9_n166(x)
+ if (x < 1)
+ fun_l10_n21(x)
+ else
+ fun_l10_n641(x)
+ end
+end
+
+def fun_l9_n167(x)
+ if (x < 1)
+ fun_l10_n268(x)
+ else
+ fun_l10_n943(x)
+ end
+end
+
+def fun_l9_n168(x)
+ if (x < 1)
+ fun_l10_n349(x)
+ else
+ fun_l10_n620(x)
+ end
+end
+
+def fun_l9_n169(x)
+ if (x < 1)
+ fun_l10_n894(x)
+ else
+ fun_l10_n625(x)
+ end
+end
+
+def fun_l9_n170(x)
+ if (x < 1)
+ fun_l10_n732(x)
+ else
+ fun_l10_n518(x)
+ end
+end
+
+def fun_l9_n171(x)
+ if (x < 1)
+ fun_l10_n272(x)
+ else
+ fun_l10_n148(x)
+ end
+end
+
+def fun_l9_n172(x)
+ if (x < 1)
+ fun_l10_n701(x)
+ else
+ fun_l10_n227(x)
+ end
+end
+
+def fun_l9_n173(x)
+ if (x < 1)
+ fun_l10_n833(x)
+ else
+ fun_l10_n853(x)
+ end
+end
+
+def fun_l9_n174(x)
+ if (x < 1)
+ fun_l10_n643(x)
+ else
+ fun_l10_n314(x)
+ end
+end
+
+def fun_l9_n175(x)
+ if (x < 1)
+ fun_l10_n217(x)
+ else
+ fun_l10_n64(x)
+ end
+end
+
+def fun_l9_n176(x)
+ if (x < 1)
+ fun_l10_n204(x)
+ else
+ fun_l10_n990(x)
+ end
+end
+
+def fun_l9_n177(x)
+ if (x < 1)
+ fun_l10_n130(x)
+ else
+ fun_l10_n829(x)
+ end
+end
+
+def fun_l9_n178(x)
+ if (x < 1)
+ fun_l10_n260(x)
+ else
+ fun_l10_n881(x)
+ end
+end
+
+def fun_l9_n179(x)
+ if (x < 1)
+ fun_l10_n728(x)
+ else
+ fun_l10_n491(x)
+ end
+end
+
+def fun_l9_n180(x)
+ if (x < 1)
+ fun_l10_n456(x)
+ else
+ fun_l10_n221(x)
+ end
+end
+
+def fun_l9_n181(x)
+ if (x < 1)
+ fun_l10_n634(x)
+ else
+ fun_l10_n166(x)
+ end
+end
+
+def fun_l9_n182(x)
+ if (x < 1)
+ fun_l10_n427(x)
+ else
+ fun_l10_n452(x)
+ end
+end
+
+def fun_l9_n183(x)
+ if (x < 1)
+ fun_l10_n754(x)
+ else
+ fun_l10_n54(x)
+ end
+end
+
+def fun_l9_n184(x)
+ if (x < 1)
+ fun_l10_n137(x)
+ else
+ fun_l10_n155(x)
+ end
+end
+
+def fun_l9_n185(x)
+ if (x < 1)
+ fun_l10_n611(x)
+ else
+ fun_l10_n573(x)
+ end
+end
+
+def fun_l9_n186(x)
+ if (x < 1)
+ fun_l10_n694(x)
+ else
+ fun_l10_n890(x)
+ end
+end
+
+def fun_l9_n187(x)
+ if (x < 1)
+ fun_l10_n533(x)
+ else
+ fun_l10_n102(x)
+ end
+end
+
+def fun_l9_n188(x)
+ if (x < 1)
+ fun_l10_n400(x)
+ else
+ fun_l10_n838(x)
+ end
+end
+
+def fun_l9_n189(x)
+ if (x < 1)
+ fun_l10_n783(x)
+ else
+ fun_l10_n620(x)
+ end
+end
+
+def fun_l9_n190(x)
+ if (x < 1)
+ fun_l10_n209(x)
+ else
+ fun_l10_n777(x)
+ end
+end
+
+def fun_l9_n191(x)
+ if (x < 1)
+ fun_l10_n760(x)
+ else
+ fun_l10_n299(x)
+ end
+end
+
+def fun_l9_n192(x)
+ if (x < 1)
+ fun_l10_n306(x)
+ else
+ fun_l10_n509(x)
+ end
+end
+
+def fun_l9_n193(x)
+ if (x < 1)
+ fun_l10_n842(x)
+ else
+ fun_l10_n0(x)
+ end
+end
+
+def fun_l9_n194(x)
+ if (x < 1)
+ fun_l10_n620(x)
+ else
+ fun_l10_n757(x)
+ end
+end
+
+def fun_l9_n195(x)
+ if (x < 1)
+ fun_l10_n944(x)
+ else
+ fun_l10_n257(x)
+ end
+end
+
+def fun_l9_n196(x)
+ if (x < 1)
+ fun_l10_n222(x)
+ else
+ fun_l10_n11(x)
+ end
+end
+
+def fun_l9_n197(x)
+ if (x < 1)
+ fun_l10_n419(x)
+ else
+ fun_l10_n704(x)
+ end
+end
+
+def fun_l9_n198(x)
+ if (x < 1)
+ fun_l10_n656(x)
+ else
+ fun_l10_n341(x)
+ end
+end
+
+def fun_l9_n199(x)
+ if (x < 1)
+ fun_l10_n129(x)
+ else
+ fun_l10_n815(x)
+ end
+end
+
+def fun_l9_n200(x)
+ if (x < 1)
+ fun_l10_n768(x)
+ else
+ fun_l10_n924(x)
+ end
+end
+
+def fun_l9_n201(x)
+ if (x < 1)
+ fun_l10_n439(x)
+ else
+ fun_l10_n361(x)
+ end
+end
+
+def fun_l9_n202(x)
+ if (x < 1)
+ fun_l10_n421(x)
+ else
+ fun_l10_n937(x)
+ end
+end
+
+def fun_l9_n203(x)
+ if (x < 1)
+ fun_l10_n323(x)
+ else
+ fun_l10_n262(x)
+ end
+end
+
+def fun_l9_n204(x)
+ if (x < 1)
+ fun_l10_n335(x)
+ else
+ fun_l10_n87(x)
+ end
+end
+
+def fun_l9_n205(x)
+ if (x < 1)
+ fun_l10_n973(x)
+ else
+ fun_l10_n262(x)
+ end
+end
+
+def fun_l9_n206(x)
+ if (x < 1)
+ fun_l10_n494(x)
+ else
+ fun_l10_n430(x)
+ end
+end
+
+def fun_l9_n207(x)
+ if (x < 1)
+ fun_l10_n482(x)
+ else
+ fun_l10_n828(x)
+ end
+end
+
+def fun_l9_n208(x)
+ if (x < 1)
+ fun_l10_n820(x)
+ else
+ fun_l10_n646(x)
+ end
+end
+
+def fun_l9_n209(x)
+ if (x < 1)
+ fun_l10_n669(x)
+ else
+ fun_l10_n176(x)
+ end
+end
+
+def fun_l9_n210(x)
+ if (x < 1)
+ fun_l10_n165(x)
+ else
+ fun_l10_n963(x)
+ end
+end
+
+def fun_l9_n211(x)
+ if (x < 1)
+ fun_l10_n772(x)
+ else
+ fun_l10_n49(x)
+ end
+end
+
+def fun_l9_n212(x)
+ if (x < 1)
+ fun_l10_n167(x)
+ else
+ fun_l10_n598(x)
+ end
+end
+
+def fun_l9_n213(x)
+ if (x < 1)
+ fun_l10_n552(x)
+ else
+ fun_l10_n374(x)
+ end
+end
+
+def fun_l9_n214(x)
+ if (x < 1)
+ fun_l10_n39(x)
+ else
+ fun_l10_n470(x)
+ end
+end
+
+def fun_l9_n215(x)
+ if (x < 1)
+ fun_l10_n489(x)
+ else
+ fun_l10_n812(x)
+ end
+end
+
+def fun_l9_n216(x)
+ if (x < 1)
+ fun_l10_n390(x)
+ else
+ fun_l10_n928(x)
+ end
+end
+
+def fun_l9_n217(x)
+ if (x < 1)
+ fun_l10_n909(x)
+ else
+ fun_l10_n876(x)
+ end
+end
+
+def fun_l9_n218(x)
+ if (x < 1)
+ fun_l10_n781(x)
+ else
+ fun_l10_n799(x)
+ end
+end
+
+def fun_l9_n219(x)
+ if (x < 1)
+ fun_l10_n958(x)
+ else
+ fun_l10_n697(x)
+ end
+end
+
+def fun_l9_n220(x)
+ if (x < 1)
+ fun_l10_n577(x)
+ else
+ fun_l10_n667(x)
+ end
+end
+
+def fun_l9_n221(x)
+ if (x < 1)
+ fun_l10_n206(x)
+ else
+ fun_l10_n573(x)
+ end
+end
+
+def fun_l9_n222(x)
+ if (x < 1)
+ fun_l10_n389(x)
+ else
+ fun_l10_n659(x)
+ end
+end
+
+def fun_l9_n223(x)
+ if (x < 1)
+ fun_l10_n951(x)
+ else
+ fun_l10_n572(x)
+ end
+end
+
+def fun_l9_n224(x)
+ if (x < 1)
+ fun_l10_n158(x)
+ else
+ fun_l10_n500(x)
+ end
+end
+
+def fun_l9_n225(x)
+ if (x < 1)
+ fun_l10_n681(x)
+ else
+ fun_l10_n983(x)
+ end
+end
+
+def fun_l9_n226(x)
+ if (x < 1)
+ fun_l10_n987(x)
+ else
+ fun_l10_n116(x)
+ end
+end
+
+def fun_l9_n227(x)
+ if (x < 1)
+ fun_l10_n347(x)
+ else
+ fun_l10_n606(x)
+ end
+end
+
+def fun_l9_n228(x)
+ if (x < 1)
+ fun_l10_n566(x)
+ else
+ fun_l10_n77(x)
+ end
+end
+
+def fun_l9_n229(x)
+ if (x < 1)
+ fun_l10_n879(x)
+ else
+ fun_l10_n66(x)
+ end
+end
+
+def fun_l9_n230(x)
+ if (x < 1)
+ fun_l10_n355(x)
+ else
+ fun_l10_n97(x)
+ end
+end
+
+def fun_l9_n231(x)
+ if (x < 1)
+ fun_l10_n938(x)
+ else
+ fun_l10_n5(x)
+ end
+end
+
+def fun_l9_n232(x)
+ if (x < 1)
+ fun_l10_n684(x)
+ else
+ fun_l10_n528(x)
+ end
+end
+
+def fun_l9_n233(x)
+ if (x < 1)
+ fun_l10_n500(x)
+ else
+ fun_l10_n246(x)
+ end
+end
+
+def fun_l9_n234(x)
+ if (x < 1)
+ fun_l10_n610(x)
+ else
+ fun_l10_n61(x)
+ end
+end
+
+def fun_l9_n235(x)
+ if (x < 1)
+ fun_l10_n199(x)
+ else
+ fun_l10_n838(x)
+ end
+end
+
+def fun_l9_n236(x)
+ if (x < 1)
+ fun_l10_n820(x)
+ else
+ fun_l10_n633(x)
+ end
+end
+
+def fun_l9_n237(x)
+ if (x < 1)
+ fun_l10_n216(x)
+ else
+ fun_l10_n546(x)
+ end
+end
+
+def fun_l9_n238(x)
+ if (x < 1)
+ fun_l10_n555(x)
+ else
+ fun_l10_n153(x)
+ end
+end
+
+def fun_l9_n239(x)
+ if (x < 1)
+ fun_l10_n236(x)
+ else
+ fun_l10_n231(x)
+ end
+end
+
+def fun_l9_n240(x)
+ if (x < 1)
+ fun_l10_n775(x)
+ else
+ fun_l10_n823(x)
+ end
+end
+
+def fun_l9_n241(x)
+ if (x < 1)
+ fun_l10_n275(x)
+ else
+ fun_l10_n519(x)
+ end
+end
+
+def fun_l9_n242(x)
+ if (x < 1)
+ fun_l10_n239(x)
+ else
+ fun_l10_n791(x)
+ end
+end
+
+def fun_l9_n243(x)
+ if (x < 1)
+ fun_l10_n639(x)
+ else
+ fun_l10_n972(x)
+ end
+end
+
+def fun_l9_n244(x)
+ if (x < 1)
+ fun_l10_n5(x)
+ else
+ fun_l10_n510(x)
+ end
+end
+
+def fun_l9_n245(x)
+ if (x < 1)
+ fun_l10_n256(x)
+ else
+ fun_l10_n298(x)
+ end
+end
+
+def fun_l9_n246(x)
+ if (x < 1)
+ fun_l10_n139(x)
+ else
+ fun_l10_n385(x)
+ end
+end
+
+def fun_l9_n247(x)
+ if (x < 1)
+ fun_l10_n4(x)
+ else
+ fun_l10_n323(x)
+ end
+end
+
+def fun_l9_n248(x)
+ if (x < 1)
+ fun_l10_n166(x)
+ else
+ fun_l10_n539(x)
+ end
+end
+
+def fun_l9_n249(x)
+ if (x < 1)
+ fun_l10_n374(x)
+ else
+ fun_l10_n351(x)
+ end
+end
+
+def fun_l9_n250(x)
+ if (x < 1)
+ fun_l10_n650(x)
+ else
+ fun_l10_n791(x)
+ end
+end
+
+def fun_l9_n251(x)
+ if (x < 1)
+ fun_l10_n799(x)
+ else
+ fun_l10_n990(x)
+ end
+end
+
+def fun_l9_n252(x)
+ if (x < 1)
+ fun_l10_n388(x)
+ else
+ fun_l10_n887(x)
+ end
+end
+
+def fun_l9_n253(x)
+ if (x < 1)
+ fun_l10_n564(x)
+ else
+ fun_l10_n997(x)
+ end
+end
+
+def fun_l9_n254(x)
+ if (x < 1)
+ fun_l10_n580(x)
+ else
+ fun_l10_n646(x)
+ end
+end
+
+def fun_l9_n255(x)
+ if (x < 1)
+ fun_l10_n0(x)
+ else
+ fun_l10_n480(x)
+ end
+end
+
+def fun_l9_n256(x)
+ if (x < 1)
+ fun_l10_n606(x)
+ else
+ fun_l10_n48(x)
+ end
+end
+
+def fun_l9_n257(x)
+ if (x < 1)
+ fun_l10_n601(x)
+ else
+ fun_l10_n657(x)
+ end
+end
+
+def fun_l9_n258(x)
+ if (x < 1)
+ fun_l10_n419(x)
+ else
+ fun_l10_n909(x)
+ end
+end
+
+def fun_l9_n259(x)
+ if (x < 1)
+ fun_l10_n194(x)
+ else
+ fun_l10_n961(x)
+ end
+end
+
+def fun_l9_n260(x)
+ if (x < 1)
+ fun_l10_n876(x)
+ else
+ fun_l10_n345(x)
+ end
+end
+
+def fun_l9_n261(x)
+ if (x < 1)
+ fun_l10_n643(x)
+ else
+ fun_l10_n905(x)
+ end
+end
+
+def fun_l9_n262(x)
+ if (x < 1)
+ fun_l10_n105(x)
+ else
+ fun_l10_n61(x)
+ end
+end
+
+def fun_l9_n263(x)
+ if (x < 1)
+ fun_l10_n610(x)
+ else
+ fun_l10_n527(x)
+ end
+end
+
+def fun_l9_n264(x)
+ if (x < 1)
+ fun_l10_n183(x)
+ else
+ fun_l10_n51(x)
+ end
+end
+
+def fun_l9_n265(x)
+ if (x < 1)
+ fun_l10_n800(x)
+ else
+ fun_l10_n103(x)
+ end
+end
+
+def fun_l9_n266(x)
+ if (x < 1)
+ fun_l10_n501(x)
+ else
+ fun_l10_n293(x)
+ end
+end
+
+def fun_l9_n267(x)
+ if (x < 1)
+ fun_l10_n207(x)
+ else
+ fun_l10_n162(x)
+ end
+end
+
+def fun_l9_n268(x)
+ if (x < 1)
+ fun_l10_n901(x)
+ else
+ fun_l10_n914(x)
+ end
+end
+
+def fun_l9_n269(x)
+ if (x < 1)
+ fun_l10_n711(x)
+ else
+ fun_l10_n227(x)
+ end
+end
+
+def fun_l9_n270(x)
+ if (x < 1)
+ fun_l10_n445(x)
+ else
+ fun_l10_n227(x)
+ end
+end
+
+def fun_l9_n271(x)
+ if (x < 1)
+ fun_l10_n585(x)
+ else
+ fun_l10_n371(x)
+ end
+end
+
+def fun_l9_n272(x)
+ if (x < 1)
+ fun_l10_n137(x)
+ else
+ fun_l10_n678(x)
+ end
+end
+
+def fun_l9_n273(x)
+ if (x < 1)
+ fun_l10_n284(x)
+ else
+ fun_l10_n801(x)
+ end
+end
+
+def fun_l9_n274(x)
+ if (x < 1)
+ fun_l10_n829(x)
+ else
+ fun_l10_n456(x)
+ end
+end
+
+def fun_l9_n275(x)
+ if (x < 1)
+ fun_l10_n663(x)
+ else
+ fun_l10_n529(x)
+ end
+end
+
+def fun_l9_n276(x)
+ if (x < 1)
+ fun_l10_n154(x)
+ else
+ fun_l10_n421(x)
+ end
+end
+
+def fun_l9_n277(x)
+ if (x < 1)
+ fun_l10_n778(x)
+ else
+ fun_l10_n325(x)
+ end
+end
+
+def fun_l9_n278(x)
+ if (x < 1)
+ fun_l10_n179(x)
+ else
+ fun_l10_n369(x)
+ end
+end
+
+def fun_l9_n279(x)
+ if (x < 1)
+ fun_l10_n800(x)
+ else
+ fun_l10_n488(x)
+ end
+end
+
+def fun_l9_n280(x)
+ if (x < 1)
+ fun_l10_n617(x)
+ else
+ fun_l10_n1(x)
+ end
+end
+
+def fun_l9_n281(x)
+ if (x < 1)
+ fun_l10_n951(x)
+ else
+ fun_l10_n763(x)
+ end
+end
+
+def fun_l9_n282(x)
+ if (x < 1)
+ fun_l10_n537(x)
+ else
+ fun_l10_n541(x)
+ end
+end
+
+def fun_l9_n283(x)
+ if (x < 1)
+ fun_l10_n664(x)
+ else
+ fun_l10_n854(x)
+ end
+end
+
+def fun_l9_n284(x)
+ if (x < 1)
+ fun_l10_n711(x)
+ else
+ fun_l10_n767(x)
+ end
+end
+
+def fun_l9_n285(x)
+ if (x < 1)
+ fun_l10_n211(x)
+ else
+ fun_l10_n733(x)
+ end
+end
+
+def fun_l9_n286(x)
+ if (x < 1)
+ fun_l10_n524(x)
+ else
+ fun_l10_n850(x)
+ end
+end
+
+def fun_l9_n287(x)
+ if (x < 1)
+ fun_l10_n270(x)
+ else
+ fun_l10_n798(x)
+ end
+end
+
+def fun_l9_n288(x)
+ if (x < 1)
+ fun_l10_n906(x)
+ else
+ fun_l10_n408(x)
+ end
+end
+
+def fun_l9_n289(x)
+ if (x < 1)
+ fun_l10_n873(x)
+ else
+ fun_l10_n298(x)
+ end
+end
+
+def fun_l9_n290(x)
+ if (x < 1)
+ fun_l10_n535(x)
+ else
+ fun_l10_n946(x)
+ end
+end
+
+def fun_l9_n291(x)
+ if (x < 1)
+ fun_l10_n290(x)
+ else
+ fun_l10_n631(x)
+ end
+end
+
+def fun_l9_n292(x)
+ if (x < 1)
+ fun_l10_n223(x)
+ else
+ fun_l10_n165(x)
+ end
+end
+
+def fun_l9_n293(x)
+ if (x < 1)
+ fun_l10_n768(x)
+ else
+ fun_l10_n512(x)
+ end
+end
+
+def fun_l9_n294(x)
+ if (x < 1)
+ fun_l10_n133(x)
+ else
+ fun_l10_n986(x)
+ end
+end
+
+def fun_l9_n295(x)
+ if (x < 1)
+ fun_l10_n657(x)
+ else
+ fun_l10_n914(x)
+ end
+end
+
+def fun_l9_n296(x)
+ if (x < 1)
+ fun_l10_n444(x)
+ else
+ fun_l10_n490(x)
+ end
+end
+
+def fun_l9_n297(x)
+ if (x < 1)
+ fun_l10_n478(x)
+ else
+ fun_l10_n979(x)
+ end
+end
+
+def fun_l9_n298(x)
+ if (x < 1)
+ fun_l10_n994(x)
+ else
+ fun_l10_n945(x)
+ end
+end
+
+def fun_l9_n299(x)
+ if (x < 1)
+ fun_l10_n865(x)
+ else
+ fun_l10_n206(x)
+ end
+end
+
+def fun_l9_n300(x)
+ if (x < 1)
+ fun_l10_n678(x)
+ else
+ fun_l10_n103(x)
+ end
+end
+
+def fun_l9_n301(x)
+ if (x < 1)
+ fun_l10_n115(x)
+ else
+ fun_l10_n742(x)
+ end
+end
+
+def fun_l9_n302(x)
+ if (x < 1)
+ fun_l10_n677(x)
+ else
+ fun_l10_n446(x)
+ end
+end
+
+def fun_l9_n303(x)
+ if (x < 1)
+ fun_l10_n144(x)
+ else
+ fun_l10_n856(x)
+ end
+end
+
+def fun_l9_n304(x)
+ if (x < 1)
+ fun_l10_n751(x)
+ else
+ fun_l10_n989(x)
+ end
+end
+
+def fun_l9_n305(x)
+ if (x < 1)
+ fun_l10_n200(x)
+ else
+ fun_l10_n97(x)
+ end
+end
+
+def fun_l9_n306(x)
+ if (x < 1)
+ fun_l10_n685(x)
+ else
+ fun_l10_n663(x)
+ end
+end
+
+def fun_l9_n307(x)
+ if (x < 1)
+ fun_l10_n831(x)
+ else
+ fun_l10_n770(x)
+ end
+end
+
+def fun_l9_n308(x)
+ if (x < 1)
+ fun_l10_n467(x)
+ else
+ fun_l10_n715(x)
+ end
+end
+
+def fun_l9_n309(x)
+ if (x < 1)
+ fun_l10_n676(x)
+ else
+ fun_l10_n885(x)
+ end
+end
+
+def fun_l9_n310(x)
+ if (x < 1)
+ fun_l10_n382(x)
+ else
+ fun_l10_n687(x)
+ end
+end
+
+def fun_l9_n311(x)
+ if (x < 1)
+ fun_l10_n489(x)
+ else
+ fun_l10_n810(x)
+ end
+end
+
+def fun_l9_n312(x)
+ if (x < 1)
+ fun_l10_n922(x)
+ else
+ fun_l10_n81(x)
+ end
+end
+
+def fun_l9_n313(x)
+ if (x < 1)
+ fun_l10_n788(x)
+ else
+ fun_l10_n519(x)
+ end
+end
+
+def fun_l9_n314(x)
+ if (x < 1)
+ fun_l10_n830(x)
+ else
+ fun_l10_n486(x)
+ end
+end
+
+def fun_l9_n315(x)
+ if (x < 1)
+ fun_l10_n848(x)
+ else
+ fun_l10_n250(x)
+ end
+end
+
+def fun_l9_n316(x)
+ if (x < 1)
+ fun_l10_n933(x)
+ else
+ fun_l10_n268(x)
+ end
+end
+
+def fun_l9_n317(x)
+ if (x < 1)
+ fun_l10_n659(x)
+ else
+ fun_l10_n91(x)
+ end
+end
+
+def fun_l9_n318(x)
+ if (x < 1)
+ fun_l10_n417(x)
+ else
+ fun_l10_n99(x)
+ end
+end
+
+def fun_l9_n319(x)
+ if (x < 1)
+ fun_l10_n781(x)
+ else
+ fun_l10_n770(x)
+ end
+end
+
+def fun_l9_n320(x)
+ if (x < 1)
+ fun_l10_n820(x)
+ else
+ fun_l10_n836(x)
+ end
+end
+
+def fun_l9_n321(x)
+ if (x < 1)
+ fun_l10_n865(x)
+ else
+ fun_l10_n232(x)
+ end
+end
+
+def fun_l9_n322(x)
+ if (x < 1)
+ fun_l10_n793(x)
+ else
+ fun_l10_n856(x)
+ end
+end
+
+def fun_l9_n323(x)
+ if (x < 1)
+ fun_l10_n91(x)
+ else
+ fun_l10_n356(x)
+ end
+end
+
+def fun_l9_n324(x)
+ if (x < 1)
+ fun_l10_n262(x)
+ else
+ fun_l10_n776(x)
+ end
+end
+
+def fun_l9_n325(x)
+ if (x < 1)
+ fun_l10_n733(x)
+ else
+ fun_l10_n866(x)
+ end
+end
+
+def fun_l9_n326(x)
+ if (x < 1)
+ fun_l10_n798(x)
+ else
+ fun_l10_n703(x)
+ end
+end
+
+def fun_l9_n327(x)
+ if (x < 1)
+ fun_l10_n478(x)
+ else
+ fun_l10_n181(x)
+ end
+end
+
+def fun_l9_n328(x)
+ if (x < 1)
+ fun_l10_n66(x)
+ else
+ fun_l10_n736(x)
+ end
+end
+
+def fun_l9_n329(x)
+ if (x < 1)
+ fun_l10_n388(x)
+ else
+ fun_l10_n122(x)
+ end
+end
+
+def fun_l9_n330(x)
+ if (x < 1)
+ fun_l10_n382(x)
+ else
+ fun_l10_n85(x)
+ end
+end
+
+def fun_l9_n331(x)
+ if (x < 1)
+ fun_l10_n987(x)
+ else
+ fun_l10_n769(x)
+ end
+end
+
+def fun_l9_n332(x)
+ if (x < 1)
+ fun_l10_n644(x)
+ else
+ fun_l10_n230(x)
+ end
+end
+
+def fun_l9_n333(x)
+ if (x < 1)
+ fun_l10_n604(x)
+ else
+ fun_l10_n157(x)
+ end
+end
+
+def fun_l9_n334(x)
+ if (x < 1)
+ fun_l10_n50(x)
+ else
+ fun_l10_n417(x)
+ end
+end
+
+def fun_l9_n335(x)
+ if (x < 1)
+ fun_l10_n37(x)
+ else
+ fun_l10_n564(x)
+ end
+end
+
+def fun_l9_n336(x)
+ if (x < 1)
+ fun_l10_n265(x)
+ else
+ fun_l10_n330(x)
+ end
+end
+
+def fun_l9_n337(x)
+ if (x < 1)
+ fun_l10_n816(x)
+ else
+ fun_l10_n723(x)
+ end
+end
+
+def fun_l9_n338(x)
+ if (x < 1)
+ fun_l10_n583(x)
+ else
+ fun_l10_n193(x)
+ end
+end
+
+def fun_l9_n339(x)
+ if (x < 1)
+ fun_l10_n552(x)
+ else
+ fun_l10_n710(x)
+ end
+end
+
+def fun_l9_n340(x)
+ if (x < 1)
+ fun_l10_n594(x)
+ else
+ fun_l10_n323(x)
+ end
+end
+
+def fun_l9_n341(x)
+ if (x < 1)
+ fun_l10_n727(x)
+ else
+ fun_l10_n305(x)
+ end
+end
+
+def fun_l9_n342(x)
+ if (x < 1)
+ fun_l10_n621(x)
+ else
+ fun_l10_n917(x)
+ end
+end
+
+def fun_l9_n343(x)
+ if (x < 1)
+ fun_l10_n634(x)
+ else
+ fun_l10_n36(x)
+ end
+end
+
+def fun_l9_n344(x)
+ if (x < 1)
+ fun_l10_n792(x)
+ else
+ fun_l10_n438(x)
+ end
+end
+
+def fun_l9_n345(x)
+ if (x < 1)
+ fun_l10_n399(x)
+ else
+ fun_l10_n577(x)
+ end
+end
+
+def fun_l9_n346(x)
+ if (x < 1)
+ fun_l10_n110(x)
+ else
+ fun_l10_n120(x)
+ end
+end
+
+def fun_l9_n347(x)
+ if (x < 1)
+ fun_l10_n521(x)
+ else
+ fun_l10_n111(x)
+ end
+end
+
+def fun_l9_n348(x)
+ if (x < 1)
+ fun_l10_n134(x)
+ else
+ fun_l10_n49(x)
+ end
+end
+
+def fun_l9_n349(x)
+ if (x < 1)
+ fun_l10_n353(x)
+ else
+ fun_l10_n156(x)
+ end
+end
+
+def fun_l9_n350(x)
+ if (x < 1)
+ fun_l10_n532(x)
+ else
+ fun_l10_n796(x)
+ end
+end
+
+def fun_l9_n351(x)
+ if (x < 1)
+ fun_l10_n896(x)
+ else
+ fun_l10_n176(x)
+ end
+end
+
+def fun_l9_n352(x)
+ if (x < 1)
+ fun_l10_n857(x)
+ else
+ fun_l10_n798(x)
+ end
+end
+
+def fun_l9_n353(x)
+ if (x < 1)
+ fun_l10_n676(x)
+ else
+ fun_l10_n870(x)
+ end
+end
+
+def fun_l9_n354(x)
+ if (x < 1)
+ fun_l10_n806(x)
+ else
+ fun_l10_n951(x)
+ end
+end
+
+def fun_l9_n355(x)
+ if (x < 1)
+ fun_l10_n841(x)
+ else
+ fun_l10_n918(x)
+ end
+end
+
+def fun_l9_n356(x)
+ if (x < 1)
+ fun_l10_n226(x)
+ else
+ fun_l10_n514(x)
+ end
+end
+
+def fun_l9_n357(x)
+ if (x < 1)
+ fun_l10_n289(x)
+ else
+ fun_l10_n911(x)
+ end
+end
+
+def fun_l9_n358(x)
+ if (x < 1)
+ fun_l10_n697(x)
+ else
+ fun_l10_n138(x)
+ end
+end
+
+def fun_l9_n359(x)
+ if (x < 1)
+ fun_l10_n432(x)
+ else
+ fun_l10_n88(x)
+ end
+end
+
+def fun_l9_n360(x)
+ if (x < 1)
+ fun_l10_n351(x)
+ else
+ fun_l10_n968(x)
+ end
+end
+
+def fun_l9_n361(x)
+ if (x < 1)
+ fun_l10_n782(x)
+ else
+ fun_l10_n506(x)
+ end
+end
+
+def fun_l9_n362(x)
+ if (x < 1)
+ fun_l10_n875(x)
+ else
+ fun_l10_n459(x)
+ end
+end
+
+def fun_l9_n363(x)
+ if (x < 1)
+ fun_l10_n2(x)
+ else
+ fun_l10_n468(x)
+ end
+end
+
+def fun_l9_n364(x)
+ if (x < 1)
+ fun_l10_n151(x)
+ else
+ fun_l10_n538(x)
+ end
+end
+
+def fun_l9_n365(x)
+ if (x < 1)
+ fun_l10_n203(x)
+ else
+ fun_l10_n890(x)
+ end
+end
+
+def fun_l9_n366(x)
+ if (x < 1)
+ fun_l10_n612(x)
+ else
+ fun_l10_n483(x)
+ end
+end
+
+def fun_l9_n367(x)
+ if (x < 1)
+ fun_l10_n465(x)
+ else
+ fun_l10_n724(x)
+ end
+end
+
+def fun_l9_n368(x)
+ if (x < 1)
+ fun_l10_n745(x)
+ else
+ fun_l10_n92(x)
+ end
+end
+
+def fun_l9_n369(x)
+ if (x < 1)
+ fun_l10_n312(x)
+ else
+ fun_l10_n754(x)
+ end
+end
+
+def fun_l9_n370(x)
+ if (x < 1)
+ fun_l10_n432(x)
+ else
+ fun_l10_n234(x)
+ end
+end
+
+def fun_l9_n371(x)
+ if (x < 1)
+ fun_l10_n629(x)
+ else
+ fun_l10_n751(x)
+ end
+end
+
+def fun_l9_n372(x)
+ if (x < 1)
+ fun_l10_n142(x)
+ else
+ fun_l10_n381(x)
+ end
+end
+
+def fun_l9_n373(x)
+ if (x < 1)
+ fun_l10_n490(x)
+ else
+ fun_l10_n405(x)
+ end
+end
+
+def fun_l9_n374(x)
+ if (x < 1)
+ fun_l10_n197(x)
+ else
+ fun_l10_n574(x)
+ end
+end
+
+def fun_l9_n375(x)
+ if (x < 1)
+ fun_l10_n808(x)
+ else
+ fun_l10_n753(x)
+ end
+end
+
+def fun_l9_n376(x)
+ if (x < 1)
+ fun_l10_n195(x)
+ else
+ fun_l10_n186(x)
+ end
+end
+
+def fun_l9_n377(x)
+ if (x < 1)
+ fun_l10_n172(x)
+ else
+ fun_l10_n233(x)
+ end
+end
+
+def fun_l9_n378(x)
+ if (x < 1)
+ fun_l10_n723(x)
+ else
+ fun_l10_n919(x)
+ end
+end
+
+def fun_l9_n379(x)
+ if (x < 1)
+ fun_l10_n937(x)
+ else
+ fun_l10_n149(x)
+ end
+end
+
+def fun_l9_n380(x)
+ if (x < 1)
+ fun_l10_n676(x)
+ else
+ fun_l10_n502(x)
+ end
+end
+
+def fun_l9_n381(x)
+ if (x < 1)
+ fun_l10_n756(x)
+ else
+ fun_l10_n346(x)
+ end
+end
+
+def fun_l9_n382(x)
+ if (x < 1)
+ fun_l10_n477(x)
+ else
+ fun_l10_n179(x)
+ end
+end
+
+def fun_l9_n383(x)
+ if (x < 1)
+ fun_l10_n729(x)
+ else
+ fun_l10_n862(x)
+ end
+end
+
+def fun_l9_n384(x)
+ if (x < 1)
+ fun_l10_n406(x)
+ else
+ fun_l10_n145(x)
+ end
+end
+
+def fun_l9_n385(x)
+ if (x < 1)
+ fun_l10_n239(x)
+ else
+ fun_l10_n169(x)
+ end
+end
+
+def fun_l9_n386(x)
+ if (x < 1)
+ fun_l10_n596(x)
+ else
+ fun_l10_n971(x)
+ end
+end
+
+def fun_l9_n387(x)
+ if (x < 1)
+ fun_l10_n466(x)
+ else
+ fun_l10_n488(x)
+ end
+end
+
+def fun_l9_n388(x)
+ if (x < 1)
+ fun_l10_n711(x)
+ else
+ fun_l10_n553(x)
+ end
+end
+
+def fun_l9_n389(x)
+ if (x < 1)
+ fun_l10_n776(x)
+ else
+ fun_l10_n227(x)
+ end
+end
+
+def fun_l9_n390(x)
+ if (x < 1)
+ fun_l10_n872(x)
+ else
+ fun_l10_n901(x)
+ end
+end
+
+def fun_l9_n391(x)
+ if (x < 1)
+ fun_l10_n579(x)
+ else
+ fun_l10_n906(x)
+ end
+end
+
+def fun_l9_n392(x)
+ if (x < 1)
+ fun_l10_n734(x)
+ else
+ fun_l10_n195(x)
+ end
+end
+
+def fun_l9_n393(x)
+ if (x < 1)
+ fun_l10_n691(x)
+ else
+ fun_l10_n68(x)
+ end
+end
+
+def fun_l9_n394(x)
+ if (x < 1)
+ fun_l10_n446(x)
+ else
+ fun_l10_n838(x)
+ end
+end
+
+def fun_l9_n395(x)
+ if (x < 1)
+ fun_l10_n708(x)
+ else
+ fun_l10_n319(x)
+ end
+end
+
+def fun_l9_n396(x)
+ if (x < 1)
+ fun_l10_n414(x)
+ else
+ fun_l10_n152(x)
+ end
+end
+
+def fun_l9_n397(x)
+ if (x < 1)
+ fun_l10_n637(x)
+ else
+ fun_l10_n662(x)
+ end
+end
+
+def fun_l9_n398(x)
+ if (x < 1)
+ fun_l10_n990(x)
+ else
+ fun_l10_n547(x)
+ end
+end
+
+def fun_l9_n399(x)
+ if (x < 1)
+ fun_l10_n43(x)
+ else
+ fun_l10_n845(x)
+ end
+end
+
+def fun_l9_n400(x)
+ if (x < 1)
+ fun_l10_n843(x)
+ else
+ fun_l10_n876(x)
+ end
+end
+
+def fun_l9_n401(x)
+ if (x < 1)
+ fun_l10_n925(x)
+ else
+ fun_l10_n221(x)
+ end
+end
+
+def fun_l9_n402(x)
+ if (x < 1)
+ fun_l10_n420(x)
+ else
+ fun_l10_n267(x)
+ end
+end
+
+def fun_l9_n403(x)
+ if (x < 1)
+ fun_l10_n78(x)
+ else
+ fun_l10_n316(x)
+ end
+end
+
+def fun_l9_n404(x)
+ if (x < 1)
+ fun_l10_n291(x)
+ else
+ fun_l10_n614(x)
+ end
+end
+
+def fun_l9_n405(x)
+ if (x < 1)
+ fun_l10_n956(x)
+ else
+ fun_l10_n550(x)
+ end
+end
+
+def fun_l9_n406(x)
+ if (x < 1)
+ fun_l10_n232(x)
+ else
+ fun_l10_n53(x)
+ end
+end
+
+def fun_l9_n407(x)
+ if (x < 1)
+ fun_l10_n171(x)
+ else
+ fun_l10_n51(x)
+ end
+end
+
+def fun_l9_n408(x)
+ if (x < 1)
+ fun_l10_n401(x)
+ else
+ fun_l10_n932(x)
+ end
+end
+
+def fun_l9_n409(x)
+ if (x < 1)
+ fun_l10_n863(x)
+ else
+ fun_l10_n951(x)
+ end
+end
+
+def fun_l9_n410(x)
+ if (x < 1)
+ fun_l10_n64(x)
+ else
+ fun_l10_n721(x)
+ end
+end
+
+def fun_l9_n411(x)
+ if (x < 1)
+ fun_l10_n539(x)
+ else
+ fun_l10_n951(x)
+ end
+end
+
+def fun_l9_n412(x)
+ if (x < 1)
+ fun_l10_n660(x)
+ else
+ fun_l10_n852(x)
+ end
+end
+
+def fun_l9_n413(x)
+ if (x < 1)
+ fun_l10_n777(x)
+ else
+ fun_l10_n366(x)
+ end
+end
+
+def fun_l9_n414(x)
+ if (x < 1)
+ fun_l10_n695(x)
+ else
+ fun_l10_n538(x)
+ end
+end
+
+def fun_l9_n415(x)
+ if (x < 1)
+ fun_l10_n208(x)
+ else
+ fun_l10_n892(x)
+ end
+end
+
+def fun_l9_n416(x)
+ if (x < 1)
+ fun_l10_n632(x)
+ else
+ fun_l10_n463(x)
+ end
+end
+
+def fun_l9_n417(x)
+ if (x < 1)
+ fun_l10_n238(x)
+ else
+ fun_l10_n55(x)
+ end
+end
+
+def fun_l9_n418(x)
+ if (x < 1)
+ fun_l10_n276(x)
+ else
+ fun_l10_n526(x)
+ end
+end
+
+def fun_l9_n419(x)
+ if (x < 1)
+ fun_l10_n625(x)
+ else
+ fun_l10_n806(x)
+ end
+end
+
+def fun_l9_n420(x)
+ if (x < 1)
+ fun_l10_n899(x)
+ else
+ fun_l10_n594(x)
+ end
+end
+
+def fun_l9_n421(x)
+ if (x < 1)
+ fun_l10_n725(x)
+ else
+ fun_l10_n461(x)
+ end
+end
+
+def fun_l9_n422(x)
+ if (x < 1)
+ fun_l10_n187(x)
+ else
+ fun_l10_n953(x)
+ end
+end
+
+def fun_l9_n423(x)
+ if (x < 1)
+ fun_l10_n698(x)
+ else
+ fun_l10_n751(x)
+ end
+end
+
+def fun_l9_n424(x)
+ if (x < 1)
+ fun_l10_n115(x)
+ else
+ fun_l10_n321(x)
+ end
+end
+
+def fun_l9_n425(x)
+ if (x < 1)
+ fun_l10_n775(x)
+ else
+ fun_l10_n100(x)
+ end
+end
+
+def fun_l9_n426(x)
+ if (x < 1)
+ fun_l10_n177(x)
+ else
+ fun_l10_n565(x)
+ end
+end
+
+def fun_l9_n427(x)
+ if (x < 1)
+ fun_l10_n568(x)
+ else
+ fun_l10_n234(x)
+ end
+end
+
+def fun_l9_n428(x)
+ if (x < 1)
+ fun_l10_n787(x)
+ else
+ fun_l10_n815(x)
+ end
+end
+
+def fun_l9_n429(x)
+ if (x < 1)
+ fun_l10_n580(x)
+ else
+ fun_l10_n990(x)
+ end
+end
+
+def fun_l9_n430(x)
+ if (x < 1)
+ fun_l10_n680(x)
+ else
+ fun_l10_n696(x)
+ end
+end
+
+def fun_l9_n431(x)
+ if (x < 1)
+ fun_l10_n650(x)
+ else
+ fun_l10_n776(x)
+ end
+end
+
+def fun_l9_n432(x)
+ if (x < 1)
+ fun_l10_n377(x)
+ else
+ fun_l10_n232(x)
+ end
+end
+
+def fun_l9_n433(x)
+ if (x < 1)
+ fun_l10_n621(x)
+ else
+ fun_l10_n948(x)
+ end
+end
+
+def fun_l9_n434(x)
+ if (x < 1)
+ fun_l10_n126(x)
+ else
+ fun_l10_n220(x)
+ end
+end
+
+def fun_l9_n435(x)
+ if (x < 1)
+ fun_l10_n395(x)
+ else
+ fun_l10_n732(x)
+ end
+end
+
+def fun_l9_n436(x)
+ if (x < 1)
+ fun_l10_n194(x)
+ else
+ fun_l10_n159(x)
+ end
+end
+
+def fun_l9_n437(x)
+ if (x < 1)
+ fun_l10_n123(x)
+ else
+ fun_l10_n40(x)
+ end
+end
+
+def fun_l9_n438(x)
+ if (x < 1)
+ fun_l10_n241(x)
+ else
+ fun_l10_n861(x)
+ end
+end
+
+def fun_l9_n439(x)
+ if (x < 1)
+ fun_l10_n333(x)
+ else
+ fun_l10_n950(x)
+ end
+end
+
+def fun_l9_n440(x)
+ if (x < 1)
+ fun_l10_n116(x)
+ else
+ fun_l10_n832(x)
+ end
+end
+
+def fun_l9_n441(x)
+ if (x < 1)
+ fun_l10_n598(x)
+ else
+ fun_l10_n68(x)
+ end
+end
+
+def fun_l9_n442(x)
+ if (x < 1)
+ fun_l10_n234(x)
+ else
+ fun_l10_n277(x)
+ end
+end
+
+def fun_l9_n443(x)
+ if (x < 1)
+ fun_l10_n943(x)
+ else
+ fun_l10_n895(x)
+ end
+end
+
+def fun_l9_n444(x)
+ if (x < 1)
+ fun_l10_n490(x)
+ else
+ fun_l10_n512(x)
+ end
+end
+
+def fun_l9_n445(x)
+ if (x < 1)
+ fun_l10_n54(x)
+ else
+ fun_l10_n74(x)
+ end
+end
+
+def fun_l9_n446(x)
+ if (x < 1)
+ fun_l10_n214(x)
+ else
+ fun_l10_n858(x)
+ end
+end
+
+def fun_l9_n447(x)
+ if (x < 1)
+ fun_l10_n274(x)
+ else
+ fun_l10_n255(x)
+ end
+end
+
+def fun_l9_n448(x)
+ if (x < 1)
+ fun_l10_n307(x)
+ else
+ fun_l10_n197(x)
+ end
+end
+
+def fun_l9_n449(x)
+ if (x < 1)
+ fun_l10_n152(x)
+ else
+ fun_l10_n543(x)
+ end
+end
+
+def fun_l9_n450(x)
+ if (x < 1)
+ fun_l10_n773(x)
+ else
+ fun_l10_n582(x)
+ end
+end
+
+def fun_l9_n451(x)
+ if (x < 1)
+ fun_l10_n757(x)
+ else
+ fun_l10_n298(x)
+ end
+end
+
+def fun_l9_n452(x)
+ if (x < 1)
+ fun_l10_n648(x)
+ else
+ fun_l10_n826(x)
+ end
+end
+
+def fun_l9_n453(x)
+ if (x < 1)
+ fun_l10_n209(x)
+ else
+ fun_l10_n767(x)
+ end
+end
+
+def fun_l9_n454(x)
+ if (x < 1)
+ fun_l10_n448(x)
+ else
+ fun_l10_n374(x)
+ end
+end
+
+def fun_l9_n455(x)
+ if (x < 1)
+ fun_l10_n975(x)
+ else
+ fun_l10_n45(x)
+ end
+end
+
+def fun_l9_n456(x)
+ if (x < 1)
+ fun_l10_n938(x)
+ else
+ fun_l10_n354(x)
+ end
+end
+
+def fun_l9_n457(x)
+ if (x < 1)
+ fun_l10_n723(x)
+ else
+ fun_l10_n511(x)
+ end
+end
+
+def fun_l9_n458(x)
+ if (x < 1)
+ fun_l10_n864(x)
+ else
+ fun_l10_n688(x)
+ end
+end
+
+def fun_l9_n459(x)
+ if (x < 1)
+ fun_l10_n283(x)
+ else
+ fun_l10_n776(x)
+ end
+end
+
+def fun_l9_n460(x)
+ if (x < 1)
+ fun_l10_n167(x)
+ else
+ fun_l10_n639(x)
+ end
+end
+
+def fun_l9_n461(x)
+ if (x < 1)
+ fun_l10_n493(x)
+ else
+ fun_l10_n538(x)
+ end
+end
+
+def fun_l9_n462(x)
+ if (x < 1)
+ fun_l10_n392(x)
+ else
+ fun_l10_n434(x)
+ end
+end
+
+def fun_l9_n463(x)
+ if (x < 1)
+ fun_l10_n958(x)
+ else
+ fun_l10_n305(x)
+ end
+end
+
+def fun_l9_n464(x)
+ if (x < 1)
+ fun_l10_n516(x)
+ else
+ fun_l10_n375(x)
+ end
+end
+
+def fun_l9_n465(x)
+ if (x < 1)
+ fun_l10_n371(x)
+ else
+ fun_l10_n596(x)
+ end
+end
+
+def fun_l9_n466(x)
+ if (x < 1)
+ fun_l10_n435(x)
+ else
+ fun_l10_n176(x)
+ end
+end
+
+def fun_l9_n467(x)
+ if (x < 1)
+ fun_l10_n391(x)
+ else
+ fun_l10_n83(x)
+ end
+end
+
+def fun_l9_n468(x)
+ if (x < 1)
+ fun_l10_n751(x)
+ else
+ fun_l10_n632(x)
+ end
+end
+
+def fun_l9_n469(x)
+ if (x < 1)
+ fun_l10_n14(x)
+ else
+ fun_l10_n530(x)
+ end
+end
+
+def fun_l9_n470(x)
+ if (x < 1)
+ fun_l10_n663(x)
+ else
+ fun_l10_n844(x)
+ end
+end
+
+def fun_l9_n471(x)
+ if (x < 1)
+ fun_l10_n82(x)
+ else
+ fun_l10_n493(x)
+ end
+end
+
+def fun_l9_n472(x)
+ if (x < 1)
+ fun_l10_n614(x)
+ else
+ fun_l10_n277(x)
+ end
+end
+
+def fun_l9_n473(x)
+ if (x < 1)
+ fun_l10_n492(x)
+ else
+ fun_l10_n492(x)
+ end
+end
+
+def fun_l9_n474(x)
+ if (x < 1)
+ fun_l10_n440(x)
+ else
+ fun_l10_n665(x)
+ end
+end
+
+def fun_l9_n475(x)
+ if (x < 1)
+ fun_l10_n284(x)
+ else
+ fun_l10_n513(x)
+ end
+end
+
+def fun_l9_n476(x)
+ if (x < 1)
+ fun_l10_n690(x)
+ else
+ fun_l10_n507(x)
+ end
+end
+
+def fun_l9_n477(x)
+ if (x < 1)
+ fun_l10_n281(x)
+ else
+ fun_l10_n519(x)
+ end
+end
+
+def fun_l9_n478(x)
+ if (x < 1)
+ fun_l10_n903(x)
+ else
+ fun_l10_n866(x)
+ end
+end
+
+def fun_l9_n479(x)
+ if (x < 1)
+ fun_l10_n880(x)
+ else
+ fun_l10_n310(x)
+ end
+end
+
+def fun_l9_n480(x)
+ if (x < 1)
+ fun_l10_n69(x)
+ else
+ fun_l10_n227(x)
+ end
+end
+
+def fun_l9_n481(x)
+ if (x < 1)
+ fun_l10_n316(x)
+ else
+ fun_l10_n692(x)
+ end
+end
+
+def fun_l9_n482(x)
+ if (x < 1)
+ fun_l10_n875(x)
+ else
+ fun_l10_n384(x)
+ end
+end
+
+def fun_l9_n483(x)
+ if (x < 1)
+ fun_l10_n496(x)
+ else
+ fun_l10_n81(x)
+ end
+end
+
+def fun_l9_n484(x)
+ if (x < 1)
+ fun_l10_n336(x)
+ else
+ fun_l10_n193(x)
+ end
+end
+
+def fun_l9_n485(x)
+ if (x < 1)
+ fun_l10_n541(x)
+ else
+ fun_l10_n465(x)
+ end
+end
+
+def fun_l9_n486(x)
+ if (x < 1)
+ fun_l10_n197(x)
+ else
+ fun_l10_n844(x)
+ end
+end
+
+def fun_l9_n487(x)
+ if (x < 1)
+ fun_l10_n652(x)
+ else
+ fun_l10_n736(x)
+ end
+end
+
+def fun_l9_n488(x)
+ if (x < 1)
+ fun_l10_n960(x)
+ else
+ fun_l10_n912(x)
+ end
+end
+
+def fun_l9_n489(x)
+ if (x < 1)
+ fun_l10_n238(x)
+ else
+ fun_l10_n64(x)
+ end
+end
+
+def fun_l9_n490(x)
+ if (x < 1)
+ fun_l10_n505(x)
+ else
+ fun_l10_n204(x)
+ end
+end
+
+def fun_l9_n491(x)
+ if (x < 1)
+ fun_l10_n960(x)
+ else
+ fun_l10_n198(x)
+ end
+end
+
+def fun_l9_n492(x)
+ if (x < 1)
+ fun_l10_n148(x)
+ else
+ fun_l10_n669(x)
+ end
+end
+
+def fun_l9_n493(x)
+ if (x < 1)
+ fun_l10_n860(x)
+ else
+ fun_l10_n676(x)
+ end
+end
+
+def fun_l9_n494(x)
+ if (x < 1)
+ fun_l10_n77(x)
+ else
+ fun_l10_n945(x)
+ end
+end
+
+def fun_l9_n495(x)
+ if (x < 1)
+ fun_l10_n151(x)
+ else
+ fun_l10_n588(x)
+ end
+end
+
+def fun_l9_n496(x)
+ if (x < 1)
+ fun_l10_n159(x)
+ else
+ fun_l10_n727(x)
+ end
+end
+
+def fun_l9_n497(x)
+ if (x < 1)
+ fun_l10_n803(x)
+ else
+ fun_l10_n292(x)
+ end
+end
+
+def fun_l9_n498(x)
+ if (x < 1)
+ fun_l10_n308(x)
+ else
+ fun_l10_n46(x)
+ end
+end
+
+def fun_l9_n499(x)
+ if (x < 1)
+ fun_l10_n511(x)
+ else
+ fun_l10_n766(x)
+ end
+end
+
+def fun_l9_n500(x)
+ if (x < 1)
+ fun_l10_n753(x)
+ else
+ fun_l10_n235(x)
+ end
+end
+
+def fun_l9_n501(x)
+ if (x < 1)
+ fun_l10_n776(x)
+ else
+ fun_l10_n779(x)
+ end
+end
+
+def fun_l9_n502(x)
+ if (x < 1)
+ fun_l10_n114(x)
+ else
+ fun_l10_n969(x)
+ end
+end
+
+def fun_l9_n503(x)
+ if (x < 1)
+ fun_l10_n511(x)
+ else
+ fun_l10_n678(x)
+ end
+end
+
+def fun_l9_n504(x)
+ if (x < 1)
+ fun_l10_n578(x)
+ else
+ fun_l10_n689(x)
+ end
+end
+
+def fun_l9_n505(x)
+ if (x < 1)
+ fun_l10_n434(x)
+ else
+ fun_l10_n0(x)
+ end
+end
+
+def fun_l9_n506(x)
+ if (x < 1)
+ fun_l10_n121(x)
+ else
+ fun_l10_n488(x)
+ end
+end
+
+def fun_l9_n507(x)
+ if (x < 1)
+ fun_l10_n865(x)
+ else
+ fun_l10_n540(x)
+ end
+end
+
+def fun_l9_n508(x)
+ if (x < 1)
+ fun_l10_n809(x)
+ else
+ fun_l10_n764(x)
+ end
+end
+
+def fun_l9_n509(x)
+ if (x < 1)
+ fun_l10_n463(x)
+ else
+ fun_l10_n141(x)
+ end
+end
+
+def fun_l9_n510(x)
+ if (x < 1)
+ fun_l10_n442(x)
+ else
+ fun_l10_n646(x)
+ end
+end
+
+def fun_l9_n511(x)
+ if (x < 1)
+ fun_l10_n971(x)
+ else
+ fun_l10_n57(x)
+ end
+end
+
+def fun_l9_n512(x)
+ if (x < 1)
+ fun_l10_n892(x)
+ else
+ fun_l10_n612(x)
+ end
+end
+
+def fun_l9_n513(x)
+ if (x < 1)
+ fun_l10_n864(x)
+ else
+ fun_l10_n438(x)
+ end
+end
+
+def fun_l9_n514(x)
+ if (x < 1)
+ fun_l10_n504(x)
+ else
+ fun_l10_n100(x)
+ end
+end
+
+def fun_l9_n515(x)
+ if (x < 1)
+ fun_l10_n881(x)
+ else
+ fun_l10_n621(x)
+ end
+end
+
+def fun_l9_n516(x)
+ if (x < 1)
+ fun_l10_n170(x)
+ else
+ fun_l10_n435(x)
+ end
+end
+
+def fun_l9_n517(x)
+ if (x < 1)
+ fun_l10_n712(x)
+ else
+ fun_l10_n537(x)
+ end
+end
+
+def fun_l9_n518(x)
+ if (x < 1)
+ fun_l10_n369(x)
+ else
+ fun_l10_n832(x)
+ end
+end
+
+def fun_l9_n519(x)
+ if (x < 1)
+ fun_l10_n654(x)
+ else
+ fun_l10_n364(x)
+ end
+end
+
+def fun_l9_n520(x)
+ if (x < 1)
+ fun_l10_n410(x)
+ else
+ fun_l10_n10(x)
+ end
+end
+
+def fun_l9_n521(x)
+ if (x < 1)
+ fun_l10_n814(x)
+ else
+ fun_l10_n569(x)
+ end
+end
+
+def fun_l9_n522(x)
+ if (x < 1)
+ fun_l10_n787(x)
+ else
+ fun_l10_n333(x)
+ end
+end
+
+def fun_l9_n523(x)
+ if (x < 1)
+ fun_l10_n336(x)
+ else
+ fun_l10_n720(x)
+ end
+end
+
+def fun_l9_n524(x)
+ if (x < 1)
+ fun_l10_n34(x)
+ else
+ fun_l10_n643(x)
+ end
+end
+
+def fun_l9_n525(x)
+ if (x < 1)
+ fun_l10_n147(x)
+ else
+ fun_l10_n62(x)
+ end
+end
+
+def fun_l9_n526(x)
+ if (x < 1)
+ fun_l10_n431(x)
+ else
+ fun_l10_n452(x)
+ end
+end
+
+def fun_l9_n527(x)
+ if (x < 1)
+ fun_l10_n374(x)
+ else
+ fun_l10_n831(x)
+ end
+end
+
+def fun_l9_n528(x)
+ if (x < 1)
+ fun_l10_n604(x)
+ else
+ fun_l10_n274(x)
+ end
+end
+
+def fun_l9_n529(x)
+ if (x < 1)
+ fun_l10_n470(x)
+ else
+ fun_l10_n764(x)
+ end
+end
+
+def fun_l9_n530(x)
+ if (x < 1)
+ fun_l10_n552(x)
+ else
+ fun_l10_n646(x)
+ end
+end
+
+def fun_l9_n531(x)
+ if (x < 1)
+ fun_l10_n427(x)
+ else
+ fun_l10_n464(x)
+ end
+end
+
+def fun_l9_n532(x)
+ if (x < 1)
+ fun_l10_n553(x)
+ else
+ fun_l10_n605(x)
+ end
+end
+
+def fun_l9_n533(x)
+ if (x < 1)
+ fun_l10_n59(x)
+ else
+ fun_l10_n794(x)
+ end
+end
+
+def fun_l9_n534(x)
+ if (x < 1)
+ fun_l10_n168(x)
+ else
+ fun_l10_n740(x)
+ end
+end
+
+def fun_l9_n535(x)
+ if (x < 1)
+ fun_l10_n227(x)
+ else
+ fun_l10_n651(x)
+ end
+end
+
+def fun_l9_n536(x)
+ if (x < 1)
+ fun_l10_n904(x)
+ else
+ fun_l10_n552(x)
+ end
+end
+
+def fun_l9_n537(x)
+ if (x < 1)
+ fun_l10_n389(x)
+ else
+ fun_l10_n397(x)
+ end
+end
+
+def fun_l9_n538(x)
+ if (x < 1)
+ fun_l10_n622(x)
+ else
+ fun_l10_n100(x)
+ end
+end
+
+def fun_l9_n539(x)
+ if (x < 1)
+ fun_l10_n117(x)
+ else
+ fun_l10_n715(x)
+ end
+end
+
+def fun_l9_n540(x)
+ if (x < 1)
+ fun_l10_n959(x)
+ else
+ fun_l10_n391(x)
+ end
+end
+
+def fun_l9_n541(x)
+ if (x < 1)
+ fun_l10_n733(x)
+ else
+ fun_l10_n393(x)
+ end
+end
+
+def fun_l9_n542(x)
+ if (x < 1)
+ fun_l10_n171(x)
+ else
+ fun_l10_n299(x)
+ end
+end
+
+def fun_l9_n543(x)
+ if (x < 1)
+ fun_l10_n655(x)
+ else
+ fun_l10_n285(x)
+ end
+end
+
+def fun_l9_n544(x)
+ if (x < 1)
+ fun_l10_n819(x)
+ else
+ fun_l10_n817(x)
+ end
+end
+
+def fun_l9_n545(x)
+ if (x < 1)
+ fun_l10_n938(x)
+ else
+ fun_l10_n54(x)
+ end
+end
+
+def fun_l9_n546(x)
+ if (x < 1)
+ fun_l10_n712(x)
+ else
+ fun_l10_n6(x)
+ end
+end
+
+def fun_l9_n547(x)
+ if (x < 1)
+ fun_l10_n203(x)
+ else
+ fun_l10_n626(x)
+ end
+end
+
+def fun_l9_n548(x)
+ if (x < 1)
+ fun_l10_n643(x)
+ else
+ fun_l10_n761(x)
+ end
+end
+
+def fun_l9_n549(x)
+ if (x < 1)
+ fun_l10_n450(x)
+ else
+ fun_l10_n673(x)
+ end
+end
+
+def fun_l9_n550(x)
+ if (x < 1)
+ fun_l10_n496(x)
+ else
+ fun_l10_n568(x)
+ end
+end
+
+def fun_l9_n551(x)
+ if (x < 1)
+ fun_l10_n30(x)
+ else
+ fun_l10_n518(x)
+ end
+end
+
+def fun_l9_n552(x)
+ if (x < 1)
+ fun_l10_n398(x)
+ else
+ fun_l10_n858(x)
+ end
+end
+
+def fun_l9_n553(x)
+ if (x < 1)
+ fun_l10_n253(x)
+ else
+ fun_l10_n831(x)
+ end
+end
+
+def fun_l9_n554(x)
+ if (x < 1)
+ fun_l10_n493(x)
+ else
+ fun_l10_n750(x)
+ end
+end
+
+def fun_l9_n555(x)
+ if (x < 1)
+ fun_l10_n111(x)
+ else
+ fun_l10_n279(x)
+ end
+end
+
+def fun_l9_n556(x)
+ if (x < 1)
+ fun_l10_n927(x)
+ else
+ fun_l10_n793(x)
+ end
+end
+
+def fun_l9_n557(x)
+ if (x < 1)
+ fun_l10_n530(x)
+ else
+ fun_l10_n182(x)
+ end
+end
+
+def fun_l9_n558(x)
+ if (x < 1)
+ fun_l10_n434(x)
+ else
+ fun_l10_n453(x)
+ end
+end
+
+def fun_l9_n559(x)
+ if (x < 1)
+ fun_l10_n480(x)
+ else
+ fun_l10_n590(x)
+ end
+end
+
+def fun_l9_n560(x)
+ if (x < 1)
+ fun_l10_n906(x)
+ else
+ fun_l10_n280(x)
+ end
+end
+
+def fun_l9_n561(x)
+ if (x < 1)
+ fun_l10_n107(x)
+ else
+ fun_l10_n716(x)
+ end
+end
+
+def fun_l9_n562(x)
+ if (x < 1)
+ fun_l10_n15(x)
+ else
+ fun_l10_n671(x)
+ end
+end
+
+def fun_l9_n563(x)
+ if (x < 1)
+ fun_l10_n544(x)
+ else
+ fun_l10_n571(x)
+ end
+end
+
+def fun_l9_n564(x)
+ if (x < 1)
+ fun_l10_n482(x)
+ else
+ fun_l10_n885(x)
+ end
+end
+
+def fun_l9_n565(x)
+ if (x < 1)
+ fun_l10_n465(x)
+ else
+ fun_l10_n916(x)
+ end
+end
+
+def fun_l9_n566(x)
+ if (x < 1)
+ fun_l10_n413(x)
+ else
+ fun_l10_n684(x)
+ end
+end
+
+def fun_l9_n567(x)
+ if (x < 1)
+ fun_l10_n413(x)
+ else
+ fun_l10_n577(x)
+ end
+end
+
+def fun_l9_n568(x)
+ if (x < 1)
+ fun_l10_n604(x)
+ else
+ fun_l10_n899(x)
+ end
+end
+
+def fun_l9_n569(x)
+ if (x < 1)
+ fun_l10_n138(x)
+ else
+ fun_l10_n164(x)
+ end
+end
+
+def fun_l9_n570(x)
+ if (x < 1)
+ fun_l10_n993(x)
+ else
+ fun_l10_n94(x)
+ end
+end
+
+def fun_l9_n571(x)
+ if (x < 1)
+ fun_l10_n602(x)
+ else
+ fun_l10_n989(x)
+ end
+end
+
+def fun_l9_n572(x)
+ if (x < 1)
+ fun_l10_n700(x)
+ else
+ fun_l10_n308(x)
+ end
+end
+
+def fun_l9_n573(x)
+ if (x < 1)
+ fun_l10_n773(x)
+ else
+ fun_l10_n945(x)
+ end
+end
+
+def fun_l9_n574(x)
+ if (x < 1)
+ fun_l10_n148(x)
+ else
+ fun_l10_n608(x)
+ end
+end
+
+def fun_l9_n575(x)
+ if (x < 1)
+ fun_l10_n439(x)
+ else
+ fun_l10_n908(x)
+ end
+end
+
+def fun_l9_n576(x)
+ if (x < 1)
+ fun_l10_n174(x)
+ else
+ fun_l10_n872(x)
+ end
+end
+
+def fun_l9_n577(x)
+ if (x < 1)
+ fun_l10_n291(x)
+ else
+ fun_l10_n265(x)
+ end
+end
+
+def fun_l9_n578(x)
+ if (x < 1)
+ fun_l10_n425(x)
+ else
+ fun_l10_n928(x)
+ end
+end
+
+def fun_l9_n579(x)
+ if (x < 1)
+ fun_l10_n674(x)
+ else
+ fun_l10_n666(x)
+ end
+end
+
+def fun_l9_n580(x)
+ if (x < 1)
+ fun_l10_n784(x)
+ else
+ fun_l10_n147(x)
+ end
+end
+
+def fun_l9_n581(x)
+ if (x < 1)
+ fun_l10_n550(x)
+ else
+ fun_l10_n119(x)
+ end
+end
+
+def fun_l9_n582(x)
+ if (x < 1)
+ fun_l10_n953(x)
+ else
+ fun_l10_n269(x)
+ end
+end
+
+def fun_l9_n583(x)
+ if (x < 1)
+ fun_l10_n575(x)
+ else
+ fun_l10_n79(x)
+ end
+end
+
+def fun_l9_n584(x)
+ if (x < 1)
+ fun_l10_n498(x)
+ else
+ fun_l10_n1(x)
+ end
+end
+
+def fun_l9_n585(x)
+ if (x < 1)
+ fun_l10_n728(x)
+ else
+ fun_l10_n92(x)
+ end
+end
+
+def fun_l9_n586(x)
+ if (x < 1)
+ fun_l10_n344(x)
+ else
+ fun_l10_n753(x)
+ end
+end
+
+def fun_l9_n587(x)
+ if (x < 1)
+ fun_l10_n911(x)
+ else
+ fun_l10_n327(x)
+ end
+end
+
+def fun_l9_n588(x)
+ if (x < 1)
+ fun_l10_n422(x)
+ else
+ fun_l10_n224(x)
+ end
+end
+
+def fun_l9_n589(x)
+ if (x < 1)
+ fun_l10_n311(x)
+ else
+ fun_l10_n457(x)
+ end
+end
+
+def fun_l9_n590(x)
+ if (x < 1)
+ fun_l10_n705(x)
+ else
+ fun_l10_n136(x)
+ end
+end
+
+def fun_l9_n591(x)
+ if (x < 1)
+ fun_l10_n338(x)
+ else
+ fun_l10_n14(x)
+ end
+end
+
+def fun_l9_n592(x)
+ if (x < 1)
+ fun_l10_n144(x)
+ else
+ fun_l10_n671(x)
+ end
+end
+
+def fun_l9_n593(x)
+ if (x < 1)
+ fun_l10_n402(x)
+ else
+ fun_l10_n218(x)
+ end
+end
+
+def fun_l9_n594(x)
+ if (x < 1)
+ fun_l10_n854(x)
+ else
+ fun_l10_n198(x)
+ end
+end
+
+def fun_l9_n595(x)
+ if (x < 1)
+ fun_l10_n932(x)
+ else
+ fun_l10_n181(x)
+ end
+end
+
+def fun_l9_n596(x)
+ if (x < 1)
+ fun_l10_n373(x)
+ else
+ fun_l10_n937(x)
+ end
+end
+
+def fun_l9_n597(x)
+ if (x < 1)
+ fun_l10_n181(x)
+ else
+ fun_l10_n925(x)
+ end
+end
+
+def fun_l9_n598(x)
+ if (x < 1)
+ fun_l10_n263(x)
+ else
+ fun_l10_n98(x)
+ end
+end
+
+def fun_l9_n599(x)
+ if (x < 1)
+ fun_l10_n736(x)
+ else
+ fun_l10_n951(x)
+ end
+end
+
+def fun_l9_n600(x)
+ if (x < 1)
+ fun_l10_n576(x)
+ else
+ fun_l10_n998(x)
+ end
+end
+
+def fun_l9_n601(x)
+ if (x < 1)
+ fun_l10_n577(x)
+ else
+ fun_l10_n559(x)
+ end
+end
+
+def fun_l9_n602(x)
+ if (x < 1)
+ fun_l10_n143(x)
+ else
+ fun_l10_n993(x)
+ end
+end
+
+def fun_l9_n603(x)
+ if (x < 1)
+ fun_l10_n35(x)
+ else
+ fun_l10_n132(x)
+ end
+end
+
+def fun_l9_n604(x)
+ if (x < 1)
+ fun_l10_n715(x)
+ else
+ fun_l10_n933(x)
+ end
+end
+
+def fun_l9_n605(x)
+ if (x < 1)
+ fun_l10_n570(x)
+ else
+ fun_l10_n455(x)
+ end
+end
+
+def fun_l9_n606(x)
+ if (x < 1)
+ fun_l10_n225(x)
+ else
+ fun_l10_n216(x)
+ end
+end
+
+def fun_l9_n607(x)
+ if (x < 1)
+ fun_l10_n431(x)
+ else
+ fun_l10_n285(x)
+ end
+end
+
+def fun_l9_n608(x)
+ if (x < 1)
+ fun_l10_n647(x)
+ else
+ fun_l10_n221(x)
+ end
+end
+
+def fun_l9_n609(x)
+ if (x < 1)
+ fun_l10_n348(x)
+ else
+ fun_l10_n849(x)
+ end
+end
+
+def fun_l9_n610(x)
+ if (x < 1)
+ fun_l10_n301(x)
+ else
+ fun_l10_n500(x)
+ end
+end
+
+def fun_l9_n611(x)
+ if (x < 1)
+ fun_l10_n152(x)
+ else
+ fun_l10_n1(x)
+ end
+end
+
+def fun_l9_n612(x)
+ if (x < 1)
+ fun_l10_n339(x)
+ else
+ fun_l10_n577(x)
+ end
+end
+
+def fun_l9_n613(x)
+ if (x < 1)
+ fun_l10_n427(x)
+ else
+ fun_l10_n779(x)
+ end
+end
+
+def fun_l9_n614(x)
+ if (x < 1)
+ fun_l10_n60(x)
+ else
+ fun_l10_n199(x)
+ end
+end
+
+def fun_l9_n615(x)
+ if (x < 1)
+ fun_l10_n616(x)
+ else
+ fun_l10_n33(x)
+ end
+end
+
+def fun_l9_n616(x)
+ if (x < 1)
+ fun_l10_n940(x)
+ else
+ fun_l10_n981(x)
+ end
+end
+
+def fun_l9_n617(x)
+ if (x < 1)
+ fun_l10_n594(x)
+ else
+ fun_l10_n321(x)
+ end
+end
+
+def fun_l9_n618(x)
+ if (x < 1)
+ fun_l10_n233(x)
+ else
+ fun_l10_n500(x)
+ end
+end
+
+def fun_l9_n619(x)
+ if (x < 1)
+ fun_l10_n169(x)
+ else
+ fun_l10_n883(x)
+ end
+end
+
+def fun_l9_n620(x)
+ if (x < 1)
+ fun_l10_n611(x)
+ else
+ fun_l10_n345(x)
+ end
+end
+
+def fun_l9_n621(x)
+ if (x < 1)
+ fun_l10_n155(x)
+ else
+ fun_l10_n547(x)
+ end
+end
+
+def fun_l9_n622(x)
+ if (x < 1)
+ fun_l10_n244(x)
+ else
+ fun_l10_n760(x)
+ end
+end
+
+def fun_l9_n623(x)
+ if (x < 1)
+ fun_l10_n893(x)
+ else
+ fun_l10_n13(x)
+ end
+end
+
+def fun_l9_n624(x)
+ if (x < 1)
+ fun_l10_n465(x)
+ else
+ fun_l10_n276(x)
+ end
+end
+
+def fun_l9_n625(x)
+ if (x < 1)
+ fun_l10_n196(x)
+ else
+ fun_l10_n920(x)
+ end
+end
+
+def fun_l9_n626(x)
+ if (x < 1)
+ fun_l10_n235(x)
+ else
+ fun_l10_n962(x)
+ end
+end
+
+def fun_l9_n627(x)
+ if (x < 1)
+ fun_l10_n361(x)
+ else
+ fun_l10_n162(x)
+ end
+end
+
+def fun_l9_n628(x)
+ if (x < 1)
+ fun_l10_n110(x)
+ else
+ fun_l10_n574(x)
+ end
+end
+
+def fun_l9_n629(x)
+ if (x < 1)
+ fun_l10_n861(x)
+ else
+ fun_l10_n839(x)
+ end
+end
+
+def fun_l9_n630(x)
+ if (x < 1)
+ fun_l10_n386(x)
+ else
+ fun_l10_n741(x)
+ end
+end
+
+def fun_l9_n631(x)
+ if (x < 1)
+ fun_l10_n426(x)
+ else
+ fun_l10_n430(x)
+ end
+end
+
+def fun_l9_n632(x)
+ if (x < 1)
+ fun_l10_n231(x)
+ else
+ fun_l10_n353(x)
+ end
+end
+
+def fun_l9_n633(x)
+ if (x < 1)
+ fun_l10_n945(x)
+ else
+ fun_l10_n199(x)
+ end
+end
+
+def fun_l9_n634(x)
+ if (x < 1)
+ fun_l10_n607(x)
+ else
+ fun_l10_n388(x)
+ end
+end
+
+def fun_l9_n635(x)
+ if (x < 1)
+ fun_l10_n214(x)
+ else
+ fun_l10_n135(x)
+ end
+end
+
+def fun_l9_n636(x)
+ if (x < 1)
+ fun_l10_n642(x)
+ else
+ fun_l10_n522(x)
+ end
+end
+
+def fun_l9_n637(x)
+ if (x < 1)
+ fun_l10_n605(x)
+ else
+ fun_l10_n336(x)
+ end
+end
+
+def fun_l9_n638(x)
+ if (x < 1)
+ fun_l10_n719(x)
+ else
+ fun_l10_n213(x)
+ end
+end
+
+def fun_l9_n639(x)
+ if (x < 1)
+ fun_l10_n202(x)
+ else
+ fun_l10_n767(x)
+ end
+end
+
+def fun_l9_n640(x)
+ if (x < 1)
+ fun_l10_n242(x)
+ else
+ fun_l10_n596(x)
+ end
+end
+
+def fun_l9_n641(x)
+ if (x < 1)
+ fun_l10_n851(x)
+ else
+ fun_l10_n216(x)
+ end
+end
+
+def fun_l9_n642(x)
+ if (x < 1)
+ fun_l10_n645(x)
+ else
+ fun_l10_n890(x)
+ end
+end
+
+def fun_l9_n643(x)
+ if (x < 1)
+ fun_l10_n241(x)
+ else
+ fun_l10_n350(x)
+ end
+end
+
+def fun_l9_n644(x)
+ if (x < 1)
+ fun_l10_n597(x)
+ else
+ fun_l10_n350(x)
+ end
+end
+
+def fun_l9_n645(x)
+ if (x < 1)
+ fun_l10_n170(x)
+ else
+ fun_l10_n962(x)
+ end
+end
+
+def fun_l9_n646(x)
+ if (x < 1)
+ fun_l10_n229(x)
+ else
+ fun_l10_n543(x)
+ end
+end
+
+def fun_l9_n647(x)
+ if (x < 1)
+ fun_l10_n473(x)
+ else
+ fun_l10_n942(x)
+ end
+end
+
+def fun_l9_n648(x)
+ if (x < 1)
+ fun_l10_n630(x)
+ else
+ fun_l10_n630(x)
+ end
+end
+
+def fun_l9_n649(x)
+ if (x < 1)
+ fun_l10_n183(x)
+ else
+ fun_l10_n313(x)
+ end
+end
+
+def fun_l9_n650(x)
+ if (x < 1)
+ fun_l10_n951(x)
+ else
+ fun_l10_n394(x)
+ end
+end
+
+def fun_l9_n651(x)
+ if (x < 1)
+ fun_l10_n107(x)
+ else
+ fun_l10_n849(x)
+ end
+end
+
+def fun_l9_n652(x)
+ if (x < 1)
+ fun_l10_n678(x)
+ else
+ fun_l10_n768(x)
+ end
+end
+
+def fun_l9_n653(x)
+ if (x < 1)
+ fun_l10_n534(x)
+ else
+ fun_l10_n410(x)
+ end
+end
+
+def fun_l9_n654(x)
+ if (x < 1)
+ fun_l10_n694(x)
+ else
+ fun_l10_n134(x)
+ end
+end
+
+def fun_l9_n655(x)
+ if (x < 1)
+ fun_l10_n751(x)
+ else
+ fun_l10_n923(x)
+ end
+end
+
+def fun_l9_n656(x)
+ if (x < 1)
+ fun_l10_n957(x)
+ else
+ fun_l10_n489(x)
+ end
+end
+
+def fun_l9_n657(x)
+ if (x < 1)
+ fun_l10_n612(x)
+ else
+ fun_l10_n577(x)
+ end
+end
+
+def fun_l9_n658(x)
+ if (x < 1)
+ fun_l10_n814(x)
+ else
+ fun_l10_n801(x)
+ end
+end
+
+def fun_l9_n659(x)
+ if (x < 1)
+ fun_l10_n297(x)
+ else
+ fun_l10_n344(x)
+ end
+end
+
+def fun_l9_n660(x)
+ if (x < 1)
+ fun_l10_n674(x)
+ else
+ fun_l10_n780(x)
+ end
+end
+
+def fun_l9_n661(x)
+ if (x < 1)
+ fun_l10_n302(x)
+ else
+ fun_l10_n184(x)
+ end
+end
+
+def fun_l9_n662(x)
+ if (x < 1)
+ fun_l10_n308(x)
+ else
+ fun_l10_n302(x)
+ end
+end
+
+def fun_l9_n663(x)
+ if (x < 1)
+ fun_l10_n825(x)
+ else
+ fun_l10_n866(x)
+ end
+end
+
+def fun_l9_n664(x)
+ if (x < 1)
+ fun_l10_n771(x)
+ else
+ fun_l10_n141(x)
+ end
+end
+
+def fun_l9_n665(x)
+ if (x < 1)
+ fun_l10_n369(x)
+ else
+ fun_l10_n63(x)
+ end
+end
+
+def fun_l9_n666(x)
+ if (x < 1)
+ fun_l10_n198(x)
+ else
+ fun_l10_n793(x)
+ end
+end
+
+def fun_l9_n667(x)
+ if (x < 1)
+ fun_l10_n800(x)
+ else
+ fun_l10_n748(x)
+ end
+end
+
+def fun_l9_n668(x)
+ if (x < 1)
+ fun_l10_n809(x)
+ else
+ fun_l10_n673(x)
+ end
+end
+
+def fun_l9_n669(x)
+ if (x < 1)
+ fun_l10_n438(x)
+ else
+ fun_l10_n301(x)
+ end
+end
+
+def fun_l9_n670(x)
+ if (x < 1)
+ fun_l10_n802(x)
+ else
+ fun_l10_n882(x)
+ end
+end
+
+def fun_l9_n671(x)
+ if (x < 1)
+ fun_l10_n690(x)
+ else
+ fun_l10_n524(x)
+ end
+end
+
+def fun_l9_n672(x)
+ if (x < 1)
+ fun_l10_n996(x)
+ else
+ fun_l10_n68(x)
+ end
+end
+
+def fun_l9_n673(x)
+ if (x < 1)
+ fun_l10_n773(x)
+ else
+ fun_l10_n26(x)
+ end
+end
+
+def fun_l9_n674(x)
+ if (x < 1)
+ fun_l10_n252(x)
+ else
+ fun_l10_n680(x)
+ end
+end
+
+def fun_l9_n675(x)
+ if (x < 1)
+ fun_l10_n466(x)
+ else
+ fun_l10_n885(x)
+ end
+end
+
+def fun_l9_n676(x)
+ if (x < 1)
+ fun_l10_n746(x)
+ else
+ fun_l10_n968(x)
+ end
+end
+
+def fun_l9_n677(x)
+ if (x < 1)
+ fun_l10_n827(x)
+ else
+ fun_l10_n69(x)
+ end
+end
+
+def fun_l9_n678(x)
+ if (x < 1)
+ fun_l10_n158(x)
+ else
+ fun_l10_n780(x)
+ end
+end
+
+def fun_l9_n679(x)
+ if (x < 1)
+ fun_l10_n267(x)
+ else
+ fun_l10_n907(x)
+ end
+end
+
+def fun_l9_n680(x)
+ if (x < 1)
+ fun_l10_n378(x)
+ else
+ fun_l10_n668(x)
+ end
+end
+
+def fun_l9_n681(x)
+ if (x < 1)
+ fun_l10_n481(x)
+ else
+ fun_l10_n421(x)
+ end
+end
+
+def fun_l9_n682(x)
+ if (x < 1)
+ fun_l10_n501(x)
+ else
+ fun_l10_n277(x)
+ end
+end
+
+def fun_l9_n683(x)
+ if (x < 1)
+ fun_l10_n533(x)
+ else
+ fun_l10_n604(x)
+ end
+end
+
+def fun_l9_n684(x)
+ if (x < 1)
+ fun_l10_n483(x)
+ else
+ fun_l10_n761(x)
+ end
+end
+
+def fun_l9_n685(x)
+ if (x < 1)
+ fun_l10_n41(x)
+ else
+ fun_l10_n374(x)
+ end
+end
+
+def fun_l9_n686(x)
+ if (x < 1)
+ fun_l10_n549(x)
+ else
+ fun_l10_n319(x)
+ end
+end
+
+def fun_l9_n687(x)
+ if (x < 1)
+ fun_l10_n246(x)
+ else
+ fun_l10_n854(x)
+ end
+end
+
+def fun_l9_n688(x)
+ if (x < 1)
+ fun_l10_n634(x)
+ else
+ fun_l10_n43(x)
+ end
+end
+
+def fun_l9_n689(x)
+ if (x < 1)
+ fun_l10_n994(x)
+ else
+ fun_l10_n549(x)
+ end
+end
+
+def fun_l9_n690(x)
+ if (x < 1)
+ fun_l10_n439(x)
+ else
+ fun_l10_n560(x)
+ end
+end
+
+def fun_l9_n691(x)
+ if (x < 1)
+ fun_l10_n227(x)
+ else
+ fun_l10_n877(x)
+ end
+end
+
+def fun_l9_n692(x)
+ if (x < 1)
+ fun_l10_n644(x)
+ else
+ fun_l10_n350(x)
+ end
+end
+
+def fun_l9_n693(x)
+ if (x < 1)
+ fun_l10_n543(x)
+ else
+ fun_l10_n638(x)
+ end
+end
+
+def fun_l9_n694(x)
+ if (x < 1)
+ fun_l10_n537(x)
+ else
+ fun_l10_n187(x)
+ end
+end
+
+def fun_l9_n695(x)
+ if (x < 1)
+ fun_l10_n1(x)
+ else
+ fun_l10_n540(x)
+ end
+end
+
+def fun_l9_n696(x)
+ if (x < 1)
+ fun_l10_n306(x)
+ else
+ fun_l10_n290(x)
+ end
+end
+
+def fun_l9_n697(x)
+ if (x < 1)
+ fun_l10_n140(x)
+ else
+ fun_l10_n72(x)
+ end
+end
+
+def fun_l9_n698(x)
+ if (x < 1)
+ fun_l10_n43(x)
+ else
+ fun_l10_n257(x)
+ end
+end
+
+def fun_l9_n699(x)
+ if (x < 1)
+ fun_l10_n91(x)
+ else
+ fun_l10_n816(x)
+ end
+end
+
+def fun_l9_n700(x)
+ if (x < 1)
+ fun_l10_n420(x)
+ else
+ fun_l10_n763(x)
+ end
+end
+
+def fun_l9_n701(x)
+ if (x < 1)
+ fun_l10_n429(x)
+ else
+ fun_l10_n28(x)
+ end
+end
+
+def fun_l9_n702(x)
+ if (x < 1)
+ fun_l10_n615(x)
+ else
+ fun_l10_n995(x)
+ end
+end
+
+def fun_l9_n703(x)
+ if (x < 1)
+ fun_l10_n776(x)
+ else
+ fun_l10_n85(x)
+ end
+end
+
+def fun_l9_n704(x)
+ if (x < 1)
+ fun_l10_n795(x)
+ else
+ fun_l10_n542(x)
+ end
+end
+
+def fun_l9_n705(x)
+ if (x < 1)
+ fun_l10_n114(x)
+ else
+ fun_l10_n166(x)
+ end
+end
+
+def fun_l9_n706(x)
+ if (x < 1)
+ fun_l10_n99(x)
+ else
+ fun_l10_n400(x)
+ end
+end
+
+def fun_l9_n707(x)
+ if (x < 1)
+ fun_l10_n292(x)
+ else
+ fun_l10_n801(x)
+ end
+end
+
+def fun_l9_n708(x)
+ if (x < 1)
+ fun_l10_n303(x)
+ else
+ fun_l10_n380(x)
+ end
+end
+
+def fun_l9_n709(x)
+ if (x < 1)
+ fun_l10_n369(x)
+ else
+ fun_l10_n938(x)
+ end
+end
+
+def fun_l9_n710(x)
+ if (x < 1)
+ fun_l10_n652(x)
+ else
+ fun_l10_n453(x)
+ end
+end
+
+def fun_l9_n711(x)
+ if (x < 1)
+ fun_l10_n770(x)
+ else
+ fun_l10_n32(x)
+ end
+end
+
+def fun_l9_n712(x)
+ if (x < 1)
+ fun_l10_n261(x)
+ else
+ fun_l10_n485(x)
+ end
+end
+
+def fun_l9_n713(x)
+ if (x < 1)
+ fun_l10_n935(x)
+ else
+ fun_l10_n39(x)
+ end
+end
+
+def fun_l9_n714(x)
+ if (x < 1)
+ fun_l10_n332(x)
+ else
+ fun_l10_n309(x)
+ end
+end
+
+def fun_l9_n715(x)
+ if (x < 1)
+ fun_l10_n824(x)
+ else
+ fun_l10_n614(x)
+ end
+end
+
+def fun_l9_n716(x)
+ if (x < 1)
+ fun_l10_n468(x)
+ else
+ fun_l10_n341(x)
+ end
+end
+
+def fun_l9_n717(x)
+ if (x < 1)
+ fun_l10_n425(x)
+ else
+ fun_l10_n67(x)
+ end
+end
+
+def fun_l9_n718(x)
+ if (x < 1)
+ fun_l10_n199(x)
+ else
+ fun_l10_n423(x)
+ end
+end
+
+def fun_l9_n719(x)
+ if (x < 1)
+ fun_l10_n294(x)
+ else
+ fun_l10_n484(x)
+ end
+end
+
+def fun_l9_n720(x)
+ if (x < 1)
+ fun_l10_n276(x)
+ else
+ fun_l10_n799(x)
+ end
+end
+
+def fun_l9_n721(x)
+ if (x < 1)
+ fun_l10_n98(x)
+ else
+ fun_l10_n278(x)
+ end
+end
+
+def fun_l9_n722(x)
+ if (x < 1)
+ fun_l10_n689(x)
+ else
+ fun_l10_n767(x)
+ end
+end
+
+def fun_l9_n723(x)
+ if (x < 1)
+ fun_l10_n786(x)
+ else
+ fun_l10_n409(x)
+ end
+end
+
+def fun_l9_n724(x)
+ if (x < 1)
+ fun_l10_n874(x)
+ else
+ fun_l10_n413(x)
+ end
+end
+
+def fun_l9_n725(x)
+ if (x < 1)
+ fun_l10_n806(x)
+ else
+ fun_l10_n529(x)
+ end
+end
+
+def fun_l9_n726(x)
+ if (x < 1)
+ fun_l10_n847(x)
+ else
+ fun_l10_n427(x)
+ end
+end
+
+def fun_l9_n727(x)
+ if (x < 1)
+ fun_l10_n285(x)
+ else
+ fun_l10_n878(x)
+ end
+end
+
+def fun_l9_n728(x)
+ if (x < 1)
+ fun_l10_n829(x)
+ else
+ fun_l10_n341(x)
+ end
+end
+
+def fun_l9_n729(x)
+ if (x < 1)
+ fun_l10_n797(x)
+ else
+ fun_l10_n865(x)
+ end
+end
+
+def fun_l9_n730(x)
+ if (x < 1)
+ fun_l10_n689(x)
+ else
+ fun_l10_n241(x)
+ end
+end
+
+def fun_l9_n731(x)
+ if (x < 1)
+ fun_l10_n764(x)
+ else
+ fun_l10_n451(x)
+ end
+end
+
+def fun_l9_n732(x)
+ if (x < 1)
+ fun_l10_n147(x)
+ else
+ fun_l10_n998(x)
+ end
+end
+
+def fun_l9_n733(x)
+ if (x < 1)
+ fun_l10_n192(x)
+ else
+ fun_l10_n293(x)
+ end
+end
+
+def fun_l9_n734(x)
+ if (x < 1)
+ fun_l10_n207(x)
+ else
+ fun_l10_n696(x)
+ end
+end
+
+def fun_l9_n735(x)
+ if (x < 1)
+ fun_l10_n457(x)
+ else
+ fun_l10_n93(x)
+ end
+end
+
+def fun_l9_n736(x)
+ if (x < 1)
+ fun_l10_n130(x)
+ else
+ fun_l10_n512(x)
+ end
+end
+
+def fun_l9_n737(x)
+ if (x < 1)
+ fun_l10_n86(x)
+ else
+ fun_l10_n409(x)
+ end
+end
+
+def fun_l9_n738(x)
+ if (x < 1)
+ fun_l10_n783(x)
+ else
+ fun_l10_n981(x)
+ end
+end
+
+def fun_l9_n739(x)
+ if (x < 1)
+ fun_l10_n927(x)
+ else
+ fun_l10_n831(x)
+ end
+end
+
+def fun_l9_n740(x)
+ if (x < 1)
+ fun_l10_n719(x)
+ else
+ fun_l10_n422(x)
+ end
+end
+
+def fun_l9_n741(x)
+ if (x < 1)
+ fun_l10_n287(x)
+ else
+ fun_l10_n139(x)
+ end
+end
+
+def fun_l9_n742(x)
+ if (x < 1)
+ fun_l10_n533(x)
+ else
+ fun_l10_n687(x)
+ end
+end
+
+def fun_l9_n743(x)
+ if (x < 1)
+ fun_l10_n550(x)
+ else
+ fun_l10_n972(x)
+ end
+end
+
+def fun_l9_n744(x)
+ if (x < 1)
+ fun_l10_n5(x)
+ else
+ fun_l10_n306(x)
+ end
+end
+
+def fun_l9_n745(x)
+ if (x < 1)
+ fun_l10_n755(x)
+ else
+ fun_l10_n849(x)
+ end
+end
+
+def fun_l9_n746(x)
+ if (x < 1)
+ fun_l10_n912(x)
+ else
+ fun_l10_n307(x)
+ end
+end
+
+def fun_l9_n747(x)
+ if (x < 1)
+ fun_l10_n181(x)
+ else
+ fun_l10_n476(x)
+ end
+end
+
+def fun_l9_n748(x)
+ if (x < 1)
+ fun_l10_n353(x)
+ else
+ fun_l10_n412(x)
+ end
+end
+
+def fun_l9_n749(x)
+ if (x < 1)
+ fun_l10_n187(x)
+ else
+ fun_l10_n591(x)
+ end
+end
+
+def fun_l9_n750(x)
+ if (x < 1)
+ fun_l10_n464(x)
+ else
+ fun_l10_n581(x)
+ end
+end
+
+def fun_l9_n751(x)
+ if (x < 1)
+ fun_l10_n1(x)
+ else
+ fun_l10_n557(x)
+ end
+end
+
+def fun_l9_n752(x)
+ if (x < 1)
+ fun_l10_n788(x)
+ else
+ fun_l10_n438(x)
+ end
+end
+
+def fun_l9_n753(x)
+ if (x < 1)
+ fun_l10_n535(x)
+ else
+ fun_l10_n13(x)
+ end
+end
+
+def fun_l9_n754(x)
+ if (x < 1)
+ fun_l10_n811(x)
+ else
+ fun_l10_n543(x)
+ end
+end
+
+def fun_l9_n755(x)
+ if (x < 1)
+ fun_l10_n328(x)
+ else
+ fun_l10_n44(x)
+ end
+end
+
+def fun_l9_n756(x)
+ if (x < 1)
+ fun_l10_n839(x)
+ else
+ fun_l10_n16(x)
+ end
+end
+
+def fun_l9_n757(x)
+ if (x < 1)
+ fun_l10_n778(x)
+ else
+ fun_l10_n865(x)
+ end
+end
+
+def fun_l9_n758(x)
+ if (x < 1)
+ fun_l10_n552(x)
+ else
+ fun_l10_n783(x)
+ end
+end
+
+def fun_l9_n759(x)
+ if (x < 1)
+ fun_l10_n293(x)
+ else
+ fun_l10_n140(x)
+ end
+end
+
+def fun_l9_n760(x)
+ if (x < 1)
+ fun_l10_n814(x)
+ else
+ fun_l10_n497(x)
+ end
+end
+
+def fun_l9_n761(x)
+ if (x < 1)
+ fun_l10_n922(x)
+ else
+ fun_l10_n986(x)
+ end
+end
+
+def fun_l9_n762(x)
+ if (x < 1)
+ fun_l10_n100(x)
+ else
+ fun_l10_n346(x)
+ end
+end
+
+def fun_l9_n763(x)
+ if (x < 1)
+ fun_l10_n738(x)
+ else
+ fun_l10_n223(x)
+ end
+end
+
+def fun_l9_n764(x)
+ if (x < 1)
+ fun_l10_n168(x)
+ else
+ fun_l10_n367(x)
+ end
+end
+
+def fun_l9_n765(x)
+ if (x < 1)
+ fun_l10_n929(x)
+ else
+ fun_l10_n684(x)
+ end
+end
+
+def fun_l9_n766(x)
+ if (x < 1)
+ fun_l10_n940(x)
+ else
+ fun_l10_n497(x)
+ end
+end
+
+def fun_l9_n767(x)
+ if (x < 1)
+ fun_l10_n198(x)
+ else
+ fun_l10_n386(x)
+ end
+end
+
+def fun_l9_n768(x)
+ if (x < 1)
+ fun_l10_n667(x)
+ else
+ fun_l10_n913(x)
+ end
+end
+
+def fun_l9_n769(x)
+ if (x < 1)
+ fun_l10_n210(x)
+ else
+ fun_l10_n233(x)
+ end
+end
+
+def fun_l9_n770(x)
+ if (x < 1)
+ fun_l10_n819(x)
+ else
+ fun_l10_n755(x)
+ end
+end
+
+def fun_l9_n771(x)
+ if (x < 1)
+ fun_l10_n519(x)
+ else
+ fun_l10_n554(x)
+ end
+end
+
+def fun_l9_n772(x)
+ if (x < 1)
+ fun_l10_n880(x)
+ else
+ fun_l10_n280(x)
+ end
+end
+
+def fun_l9_n773(x)
+ if (x < 1)
+ fun_l10_n368(x)
+ else
+ fun_l10_n97(x)
+ end
+end
+
+def fun_l9_n774(x)
+ if (x < 1)
+ fun_l10_n447(x)
+ else
+ fun_l10_n918(x)
+ end
+end
+
+def fun_l9_n775(x)
+ if (x < 1)
+ fun_l10_n222(x)
+ else
+ fun_l10_n35(x)
+ end
+end
+
+def fun_l9_n776(x)
+ if (x < 1)
+ fun_l10_n339(x)
+ else
+ fun_l10_n309(x)
+ end
+end
+
+def fun_l9_n777(x)
+ if (x < 1)
+ fun_l10_n948(x)
+ else
+ fun_l10_n967(x)
+ end
+end
+
+def fun_l9_n778(x)
+ if (x < 1)
+ fun_l10_n561(x)
+ else
+ fun_l10_n202(x)
+ end
+end
+
+def fun_l9_n779(x)
+ if (x < 1)
+ fun_l10_n863(x)
+ else
+ fun_l10_n356(x)
+ end
+end
+
+def fun_l9_n780(x)
+ if (x < 1)
+ fun_l10_n459(x)
+ else
+ fun_l10_n358(x)
+ end
+end
+
+def fun_l9_n781(x)
+ if (x < 1)
+ fun_l10_n543(x)
+ else
+ fun_l10_n229(x)
+ end
+end
+
+def fun_l9_n782(x)
+ if (x < 1)
+ fun_l10_n422(x)
+ else
+ fun_l10_n448(x)
+ end
+end
+
+def fun_l9_n783(x)
+ if (x < 1)
+ fun_l10_n222(x)
+ else
+ fun_l10_n63(x)
+ end
+end
+
+def fun_l9_n784(x)
+ if (x < 1)
+ fun_l10_n520(x)
+ else
+ fun_l10_n443(x)
+ end
+end
+
+def fun_l9_n785(x)
+ if (x < 1)
+ fun_l10_n894(x)
+ else
+ fun_l10_n379(x)
+ end
+end
+
+def fun_l9_n786(x)
+ if (x < 1)
+ fun_l10_n362(x)
+ else
+ fun_l10_n676(x)
+ end
+end
+
+def fun_l9_n787(x)
+ if (x < 1)
+ fun_l10_n545(x)
+ else
+ fun_l10_n263(x)
+ end
+end
+
+def fun_l9_n788(x)
+ if (x < 1)
+ fun_l10_n322(x)
+ else
+ fun_l10_n631(x)
+ end
+end
+
+def fun_l9_n789(x)
+ if (x < 1)
+ fun_l10_n916(x)
+ else
+ fun_l10_n877(x)
+ end
+end
+
+def fun_l9_n790(x)
+ if (x < 1)
+ fun_l10_n443(x)
+ else
+ fun_l10_n640(x)
+ end
+end
+
+def fun_l9_n791(x)
+ if (x < 1)
+ fun_l10_n202(x)
+ else
+ fun_l10_n686(x)
+ end
+end
+
+def fun_l9_n792(x)
+ if (x < 1)
+ fun_l10_n143(x)
+ else
+ fun_l10_n200(x)
+ end
+end
+
+def fun_l9_n793(x)
+ if (x < 1)
+ fun_l10_n939(x)
+ else
+ fun_l10_n374(x)
+ end
+end
+
+def fun_l9_n794(x)
+ if (x < 1)
+ fun_l10_n506(x)
+ else
+ fun_l10_n782(x)
+ end
+end
+
+def fun_l9_n795(x)
+ if (x < 1)
+ fun_l10_n619(x)
+ else
+ fun_l10_n439(x)
+ end
+end
+
+def fun_l9_n796(x)
+ if (x < 1)
+ fun_l10_n748(x)
+ else
+ fun_l10_n61(x)
+ end
+end
+
+def fun_l9_n797(x)
+ if (x < 1)
+ fun_l10_n217(x)
+ else
+ fun_l10_n816(x)
+ end
+end
+
+def fun_l9_n798(x)
+ if (x < 1)
+ fun_l10_n310(x)
+ else
+ fun_l10_n445(x)
+ end
+end
+
+def fun_l9_n799(x)
+ if (x < 1)
+ fun_l10_n262(x)
+ else
+ fun_l10_n776(x)
+ end
+end
+
+def fun_l9_n800(x)
+ if (x < 1)
+ fun_l10_n807(x)
+ else
+ fun_l10_n566(x)
+ end
+end
+
+def fun_l9_n801(x)
+ if (x < 1)
+ fun_l10_n466(x)
+ else
+ fun_l10_n287(x)
+ end
+end
+
+def fun_l9_n802(x)
+ if (x < 1)
+ fun_l10_n205(x)
+ else
+ fun_l10_n415(x)
+ end
+end
+
+def fun_l9_n803(x)
+ if (x < 1)
+ fun_l10_n618(x)
+ else
+ fun_l10_n87(x)
+ end
+end
+
+def fun_l9_n804(x)
+ if (x < 1)
+ fun_l10_n248(x)
+ else
+ fun_l10_n32(x)
+ end
+end
+
+def fun_l9_n805(x)
+ if (x < 1)
+ fun_l10_n537(x)
+ else
+ fun_l10_n844(x)
+ end
+end
+
+def fun_l9_n806(x)
+ if (x < 1)
+ fun_l10_n554(x)
+ else
+ fun_l10_n696(x)
+ end
+end
+
+def fun_l9_n807(x)
+ if (x < 1)
+ fun_l10_n774(x)
+ else
+ fun_l10_n486(x)
+ end
+end
+
+def fun_l9_n808(x)
+ if (x < 1)
+ fun_l10_n500(x)
+ else
+ fun_l10_n926(x)
+ end
+end
+
+def fun_l9_n809(x)
+ if (x < 1)
+ fun_l10_n601(x)
+ else
+ fun_l10_n696(x)
+ end
+end
+
+def fun_l9_n810(x)
+ if (x < 1)
+ fun_l10_n770(x)
+ else
+ fun_l10_n948(x)
+ end
+end
+
+def fun_l9_n811(x)
+ if (x < 1)
+ fun_l10_n658(x)
+ else
+ fun_l10_n840(x)
+ end
+end
+
+def fun_l9_n812(x)
+ if (x < 1)
+ fun_l10_n913(x)
+ else
+ fun_l10_n892(x)
+ end
+end
+
+def fun_l9_n813(x)
+ if (x < 1)
+ fun_l10_n440(x)
+ else
+ fun_l10_n204(x)
+ end
+end
+
+def fun_l9_n814(x)
+ if (x < 1)
+ fun_l10_n273(x)
+ else
+ fun_l10_n816(x)
+ end
+end
+
+def fun_l9_n815(x)
+ if (x < 1)
+ fun_l10_n190(x)
+ else
+ fun_l10_n735(x)
+ end
+end
+
+def fun_l9_n816(x)
+ if (x < 1)
+ fun_l10_n77(x)
+ else
+ fun_l10_n30(x)
+ end
+end
+
+def fun_l9_n817(x)
+ if (x < 1)
+ fun_l10_n697(x)
+ else
+ fun_l10_n985(x)
+ end
+end
+
+def fun_l9_n818(x)
+ if (x < 1)
+ fun_l10_n583(x)
+ else
+ fun_l10_n314(x)
+ end
+end
+
+def fun_l9_n819(x)
+ if (x < 1)
+ fun_l10_n149(x)
+ else
+ fun_l10_n556(x)
+ end
+end
+
+def fun_l9_n820(x)
+ if (x < 1)
+ fun_l10_n634(x)
+ else
+ fun_l10_n392(x)
+ end
+end
+
+def fun_l9_n821(x)
+ if (x < 1)
+ fun_l10_n401(x)
+ else
+ fun_l10_n217(x)
+ end
+end
+
+def fun_l9_n822(x)
+ if (x < 1)
+ fun_l10_n564(x)
+ else
+ fun_l10_n860(x)
+ end
+end
+
+def fun_l9_n823(x)
+ if (x < 1)
+ fun_l10_n901(x)
+ else
+ fun_l10_n836(x)
+ end
+end
+
+def fun_l9_n824(x)
+ if (x < 1)
+ fun_l10_n526(x)
+ else
+ fun_l10_n660(x)
+ end
+end
+
+def fun_l9_n825(x)
+ if (x < 1)
+ fun_l10_n245(x)
+ else
+ fun_l10_n914(x)
+ end
+end
+
+def fun_l9_n826(x)
+ if (x < 1)
+ fun_l10_n712(x)
+ else
+ fun_l10_n928(x)
+ end
+end
+
+def fun_l9_n827(x)
+ if (x < 1)
+ fun_l10_n596(x)
+ else
+ fun_l10_n803(x)
+ end
+end
+
+def fun_l9_n828(x)
+ if (x < 1)
+ fun_l10_n454(x)
+ else
+ fun_l10_n679(x)
+ end
+end
+
+def fun_l9_n829(x)
+ if (x < 1)
+ fun_l10_n104(x)
+ else
+ fun_l10_n137(x)
+ end
+end
+
+def fun_l9_n830(x)
+ if (x < 1)
+ fun_l10_n516(x)
+ else
+ fun_l10_n687(x)
+ end
+end
+
+def fun_l9_n831(x)
+ if (x < 1)
+ fun_l10_n720(x)
+ else
+ fun_l10_n770(x)
+ end
+end
+
+def fun_l9_n832(x)
+ if (x < 1)
+ fun_l10_n939(x)
+ else
+ fun_l10_n119(x)
+ end
+end
+
+def fun_l9_n833(x)
+ if (x < 1)
+ fun_l10_n515(x)
+ else
+ fun_l10_n71(x)
+ end
+end
+
+def fun_l9_n834(x)
+ if (x < 1)
+ fun_l10_n668(x)
+ else
+ fun_l10_n521(x)
+ end
+end
+
+def fun_l9_n835(x)
+ if (x < 1)
+ fun_l10_n405(x)
+ else
+ fun_l10_n69(x)
+ end
+end
+
+def fun_l9_n836(x)
+ if (x < 1)
+ fun_l10_n201(x)
+ else
+ fun_l10_n681(x)
+ end
+end
+
+def fun_l9_n837(x)
+ if (x < 1)
+ fun_l10_n161(x)
+ else
+ fun_l10_n258(x)
+ end
+end
+
+def fun_l9_n838(x)
+ if (x < 1)
+ fun_l10_n913(x)
+ else
+ fun_l10_n586(x)
+ end
+end
+
+def fun_l9_n839(x)
+ if (x < 1)
+ fun_l10_n566(x)
+ else
+ fun_l10_n543(x)
+ end
+end
+
+def fun_l9_n840(x)
+ if (x < 1)
+ fun_l10_n547(x)
+ else
+ fun_l10_n570(x)
+ end
+end
+
+def fun_l9_n841(x)
+ if (x < 1)
+ fun_l10_n888(x)
+ else
+ fun_l10_n843(x)
+ end
+end
+
+def fun_l9_n842(x)
+ if (x < 1)
+ fun_l10_n497(x)
+ else
+ fun_l10_n985(x)
+ end
+end
+
+def fun_l9_n843(x)
+ if (x < 1)
+ fun_l10_n754(x)
+ else
+ fun_l10_n390(x)
+ end
+end
+
+def fun_l9_n844(x)
+ if (x < 1)
+ fun_l10_n625(x)
+ else
+ fun_l10_n562(x)
+ end
+end
+
+def fun_l9_n845(x)
+ if (x < 1)
+ fun_l10_n858(x)
+ else
+ fun_l10_n553(x)
+ end
+end
+
+def fun_l9_n846(x)
+ if (x < 1)
+ fun_l10_n145(x)
+ else
+ fun_l10_n551(x)
+ end
+end
+
+def fun_l9_n847(x)
+ if (x < 1)
+ fun_l10_n916(x)
+ else
+ fun_l10_n851(x)
+ end
+end
+
+def fun_l9_n848(x)
+ if (x < 1)
+ fun_l10_n935(x)
+ else
+ fun_l10_n448(x)
+ end
+end
+
+def fun_l9_n849(x)
+ if (x < 1)
+ fun_l10_n664(x)
+ else
+ fun_l10_n832(x)
+ end
+end
+
+def fun_l9_n850(x)
+ if (x < 1)
+ fun_l10_n904(x)
+ else
+ fun_l10_n203(x)
+ end
+end
+
+def fun_l9_n851(x)
+ if (x < 1)
+ fun_l10_n863(x)
+ else
+ fun_l10_n491(x)
+ end
+end
+
+def fun_l9_n852(x)
+ if (x < 1)
+ fun_l10_n930(x)
+ else
+ fun_l10_n248(x)
+ end
+end
+
+def fun_l9_n853(x)
+ if (x < 1)
+ fun_l10_n637(x)
+ else
+ fun_l10_n716(x)
+ end
+end
+
+def fun_l9_n854(x)
+ if (x < 1)
+ fun_l10_n35(x)
+ else
+ fun_l10_n662(x)
+ end
+end
+
+def fun_l9_n855(x)
+ if (x < 1)
+ fun_l10_n57(x)
+ else
+ fun_l10_n392(x)
+ end
+end
+
+def fun_l9_n856(x)
+ if (x < 1)
+ fun_l10_n480(x)
+ else
+ fun_l10_n447(x)
+ end
+end
+
+def fun_l9_n857(x)
+ if (x < 1)
+ fun_l10_n134(x)
+ else
+ fun_l10_n842(x)
+ end
+end
+
+def fun_l9_n858(x)
+ if (x < 1)
+ fun_l10_n384(x)
+ else
+ fun_l10_n577(x)
+ end
+end
+
+def fun_l9_n859(x)
+ if (x < 1)
+ fun_l10_n718(x)
+ else
+ fun_l10_n571(x)
+ end
+end
+
+def fun_l9_n860(x)
+ if (x < 1)
+ fun_l10_n237(x)
+ else
+ fun_l10_n654(x)
+ end
+end
+
+def fun_l9_n861(x)
+ if (x < 1)
+ fun_l10_n807(x)
+ else
+ fun_l10_n409(x)
+ end
+end
+
+def fun_l9_n862(x)
+ if (x < 1)
+ fun_l10_n801(x)
+ else
+ fun_l10_n575(x)
+ end
+end
+
+def fun_l9_n863(x)
+ if (x < 1)
+ fun_l10_n500(x)
+ else
+ fun_l10_n133(x)
+ end
+end
+
+def fun_l9_n864(x)
+ if (x < 1)
+ fun_l10_n403(x)
+ else
+ fun_l10_n720(x)
+ end
+end
+
+def fun_l9_n865(x)
+ if (x < 1)
+ fun_l10_n648(x)
+ else
+ fun_l10_n677(x)
+ end
+end
+
+def fun_l9_n866(x)
+ if (x < 1)
+ fun_l10_n873(x)
+ else
+ fun_l10_n519(x)
+ end
+end
+
+def fun_l9_n867(x)
+ if (x < 1)
+ fun_l10_n459(x)
+ else
+ fun_l10_n331(x)
+ end
+end
+
+def fun_l9_n868(x)
+ if (x < 1)
+ fun_l10_n159(x)
+ else
+ fun_l10_n64(x)
+ end
+end
+
+def fun_l9_n869(x)
+ if (x < 1)
+ fun_l10_n155(x)
+ else
+ fun_l10_n41(x)
+ end
+end
+
+def fun_l9_n870(x)
+ if (x < 1)
+ fun_l10_n947(x)
+ else
+ fun_l10_n386(x)
+ end
+end
+
+def fun_l9_n871(x)
+ if (x < 1)
+ fun_l10_n868(x)
+ else
+ fun_l10_n794(x)
+ end
+end
+
+def fun_l9_n872(x)
+ if (x < 1)
+ fun_l10_n77(x)
+ else
+ fun_l10_n268(x)
+ end
+end
+
+def fun_l9_n873(x)
+ if (x < 1)
+ fun_l10_n119(x)
+ else
+ fun_l10_n819(x)
+ end
+end
+
+def fun_l9_n874(x)
+ if (x < 1)
+ fun_l10_n143(x)
+ else
+ fun_l10_n434(x)
+ end
+end
+
+def fun_l9_n875(x)
+ if (x < 1)
+ fun_l10_n238(x)
+ else
+ fun_l10_n489(x)
+ end
+end
+
+def fun_l9_n876(x)
+ if (x < 1)
+ fun_l10_n687(x)
+ else
+ fun_l10_n384(x)
+ end
+end
+
+def fun_l9_n877(x)
+ if (x < 1)
+ fun_l10_n27(x)
+ else
+ fun_l10_n138(x)
+ end
+end
+
+def fun_l9_n878(x)
+ if (x < 1)
+ fun_l10_n208(x)
+ else
+ fun_l10_n691(x)
+ end
+end
+
+def fun_l9_n879(x)
+ if (x < 1)
+ fun_l10_n793(x)
+ else
+ fun_l10_n165(x)
+ end
+end
+
+def fun_l9_n880(x)
+ if (x < 1)
+ fun_l10_n358(x)
+ else
+ fun_l10_n455(x)
+ end
+end
+
+def fun_l9_n881(x)
+ if (x < 1)
+ fun_l10_n558(x)
+ else
+ fun_l10_n184(x)
+ end
+end
+
+def fun_l9_n882(x)
+ if (x < 1)
+ fun_l10_n461(x)
+ else
+ fun_l10_n155(x)
+ end
+end
+
+def fun_l9_n883(x)
+ if (x < 1)
+ fun_l10_n503(x)
+ else
+ fun_l10_n225(x)
+ end
+end
+
+def fun_l9_n884(x)
+ if (x < 1)
+ fun_l10_n384(x)
+ else
+ fun_l10_n262(x)
+ end
+end
+
+def fun_l9_n885(x)
+ if (x < 1)
+ fun_l10_n565(x)
+ else
+ fun_l10_n633(x)
+ end
+end
+
+def fun_l9_n886(x)
+ if (x < 1)
+ fun_l10_n626(x)
+ else
+ fun_l10_n796(x)
+ end
+end
+
+def fun_l9_n887(x)
+ if (x < 1)
+ fun_l10_n424(x)
+ else
+ fun_l10_n458(x)
+ end
+end
+
+def fun_l9_n888(x)
+ if (x < 1)
+ fun_l10_n687(x)
+ else
+ fun_l10_n145(x)
+ end
+end
+
+def fun_l9_n889(x)
+ if (x < 1)
+ fun_l10_n787(x)
+ else
+ fun_l10_n225(x)
+ end
+end
+
+def fun_l9_n890(x)
+ if (x < 1)
+ fun_l10_n249(x)
+ else
+ fun_l10_n154(x)
+ end
+end
+
+def fun_l9_n891(x)
+ if (x < 1)
+ fun_l10_n38(x)
+ else
+ fun_l10_n635(x)
+ end
+end
+
+def fun_l9_n892(x)
+ if (x < 1)
+ fun_l10_n920(x)
+ else
+ fun_l10_n478(x)
+ end
+end
+
+def fun_l9_n893(x)
+ if (x < 1)
+ fun_l10_n13(x)
+ else
+ fun_l10_n174(x)
+ end
+end
+
+def fun_l9_n894(x)
+ if (x < 1)
+ fun_l10_n304(x)
+ else
+ fun_l10_n495(x)
+ end
+end
+
+def fun_l9_n895(x)
+ if (x < 1)
+ fun_l10_n226(x)
+ else
+ fun_l10_n420(x)
+ end
+end
+
+def fun_l9_n896(x)
+ if (x < 1)
+ fun_l10_n86(x)
+ else
+ fun_l10_n837(x)
+ end
+end
+
+def fun_l9_n897(x)
+ if (x < 1)
+ fun_l10_n927(x)
+ else
+ fun_l10_n344(x)
+ end
+end
+
+def fun_l9_n898(x)
+ if (x < 1)
+ fun_l10_n87(x)
+ else
+ fun_l10_n270(x)
+ end
+end
+
+def fun_l9_n899(x)
+ if (x < 1)
+ fun_l10_n549(x)
+ else
+ fun_l10_n349(x)
+ end
+end
+
+def fun_l9_n900(x)
+ if (x < 1)
+ fun_l10_n456(x)
+ else
+ fun_l10_n345(x)
+ end
+end
+
+def fun_l9_n901(x)
+ if (x < 1)
+ fun_l10_n154(x)
+ else
+ fun_l10_n764(x)
+ end
+end
+
+def fun_l9_n902(x)
+ if (x < 1)
+ fun_l10_n614(x)
+ else
+ fun_l10_n536(x)
+ end
+end
+
+def fun_l9_n903(x)
+ if (x < 1)
+ fun_l10_n108(x)
+ else
+ fun_l10_n197(x)
+ end
+end
+
+def fun_l9_n904(x)
+ if (x < 1)
+ fun_l10_n616(x)
+ else
+ fun_l10_n777(x)
+ end
+end
+
+def fun_l9_n905(x)
+ if (x < 1)
+ fun_l10_n515(x)
+ else
+ fun_l10_n830(x)
+ end
+end
+
+def fun_l9_n906(x)
+ if (x < 1)
+ fun_l10_n288(x)
+ else
+ fun_l10_n717(x)
+ end
+end
+
+def fun_l9_n907(x)
+ if (x < 1)
+ fun_l10_n704(x)
+ else
+ fun_l10_n962(x)
+ end
+end
+
+def fun_l9_n908(x)
+ if (x < 1)
+ fun_l10_n85(x)
+ else
+ fun_l10_n70(x)
+ end
+end
+
+def fun_l9_n909(x)
+ if (x < 1)
+ fun_l10_n806(x)
+ else
+ fun_l10_n97(x)
+ end
+end
+
+def fun_l9_n910(x)
+ if (x < 1)
+ fun_l10_n567(x)
+ else
+ fun_l10_n47(x)
+ end
+end
+
+def fun_l9_n911(x)
+ if (x < 1)
+ fun_l10_n919(x)
+ else
+ fun_l10_n879(x)
+ end
+end
+
+def fun_l9_n912(x)
+ if (x < 1)
+ fun_l10_n229(x)
+ else
+ fun_l10_n200(x)
+ end
+end
+
+def fun_l9_n913(x)
+ if (x < 1)
+ fun_l10_n502(x)
+ else
+ fun_l10_n820(x)
+ end
+end
+
+def fun_l9_n914(x)
+ if (x < 1)
+ fun_l10_n57(x)
+ else
+ fun_l10_n470(x)
+ end
+end
+
+def fun_l9_n915(x)
+ if (x < 1)
+ fun_l10_n909(x)
+ else
+ fun_l10_n845(x)
+ end
+end
+
+def fun_l9_n916(x)
+ if (x < 1)
+ fun_l10_n658(x)
+ else
+ fun_l10_n925(x)
+ end
+end
+
+def fun_l9_n917(x)
+ if (x < 1)
+ fun_l10_n886(x)
+ else
+ fun_l10_n285(x)
+ end
+end
+
+def fun_l9_n918(x)
+ if (x < 1)
+ fun_l10_n484(x)
+ else
+ fun_l10_n712(x)
+ end
+end
+
+def fun_l9_n919(x)
+ if (x < 1)
+ fun_l10_n299(x)
+ else
+ fun_l10_n144(x)
+ end
+end
+
+def fun_l9_n920(x)
+ if (x < 1)
+ fun_l10_n830(x)
+ else
+ fun_l10_n913(x)
+ end
+end
+
+def fun_l9_n921(x)
+ if (x < 1)
+ fun_l10_n306(x)
+ else
+ fun_l10_n242(x)
+ end
+end
+
+def fun_l9_n922(x)
+ if (x < 1)
+ fun_l10_n442(x)
+ else
+ fun_l10_n497(x)
+ end
+end
+
+def fun_l9_n923(x)
+ if (x < 1)
+ fun_l10_n22(x)
+ else
+ fun_l10_n376(x)
+ end
+end
+
+def fun_l9_n924(x)
+ if (x < 1)
+ fun_l10_n737(x)
+ else
+ fun_l10_n603(x)
+ end
+end
+
+def fun_l9_n925(x)
+ if (x < 1)
+ fun_l10_n300(x)
+ else
+ fun_l10_n974(x)
+ end
+end
+
+def fun_l9_n926(x)
+ if (x < 1)
+ fun_l10_n644(x)
+ else
+ fun_l10_n973(x)
+ end
+end
+
+def fun_l9_n927(x)
+ if (x < 1)
+ fun_l10_n413(x)
+ else
+ fun_l10_n353(x)
+ end
+end
+
+def fun_l9_n928(x)
+ if (x < 1)
+ fun_l10_n438(x)
+ else
+ fun_l10_n518(x)
+ end
+end
+
+def fun_l9_n929(x)
+ if (x < 1)
+ fun_l10_n30(x)
+ else
+ fun_l10_n207(x)
+ end
+end
+
+def fun_l9_n930(x)
+ if (x < 1)
+ fun_l10_n976(x)
+ else
+ fun_l10_n70(x)
+ end
+end
+
+def fun_l9_n931(x)
+ if (x < 1)
+ fun_l10_n5(x)
+ else
+ fun_l10_n37(x)
+ end
+end
+
+def fun_l9_n932(x)
+ if (x < 1)
+ fun_l10_n612(x)
+ else
+ fun_l10_n268(x)
+ end
+end
+
+def fun_l9_n933(x)
+ if (x < 1)
+ fun_l10_n81(x)
+ else
+ fun_l10_n373(x)
+ end
+end
+
+def fun_l9_n934(x)
+ if (x < 1)
+ fun_l10_n30(x)
+ else
+ fun_l10_n504(x)
+ end
+end
+
+def fun_l9_n935(x)
+ if (x < 1)
+ fun_l10_n131(x)
+ else
+ fun_l10_n617(x)
+ end
+end
+
+def fun_l9_n936(x)
+ if (x < 1)
+ fun_l10_n114(x)
+ else
+ fun_l10_n883(x)
+ end
+end
+
+def fun_l9_n937(x)
+ if (x < 1)
+ fun_l10_n859(x)
+ else
+ fun_l10_n788(x)
+ end
+end
+
+def fun_l9_n938(x)
+ if (x < 1)
+ fun_l10_n993(x)
+ else
+ fun_l10_n349(x)
+ end
+end
+
+def fun_l9_n939(x)
+ if (x < 1)
+ fun_l10_n775(x)
+ else
+ fun_l10_n195(x)
+ end
+end
+
+def fun_l9_n940(x)
+ if (x < 1)
+ fun_l10_n829(x)
+ else
+ fun_l10_n398(x)
+ end
+end
+
+def fun_l9_n941(x)
+ if (x < 1)
+ fun_l10_n906(x)
+ else
+ fun_l10_n529(x)
+ end
+end
+
+def fun_l9_n942(x)
+ if (x < 1)
+ fun_l10_n965(x)
+ else
+ fun_l10_n372(x)
+ end
+end
+
+def fun_l9_n943(x)
+ if (x < 1)
+ fun_l10_n953(x)
+ else
+ fun_l10_n397(x)
+ end
+end
+
+def fun_l9_n944(x)
+ if (x < 1)
+ fun_l10_n984(x)
+ else
+ fun_l10_n909(x)
+ end
+end
+
+def fun_l9_n945(x)
+ if (x < 1)
+ fun_l10_n649(x)
+ else
+ fun_l10_n304(x)
+ end
+end
+
+def fun_l9_n946(x)
+ if (x < 1)
+ fun_l10_n0(x)
+ else
+ fun_l10_n922(x)
+ end
+end
+
+def fun_l9_n947(x)
+ if (x < 1)
+ fun_l10_n460(x)
+ else
+ fun_l10_n215(x)
+ end
+end
+
+def fun_l9_n948(x)
+ if (x < 1)
+ fun_l10_n251(x)
+ else
+ fun_l10_n636(x)
+ end
+end
+
+def fun_l9_n949(x)
+ if (x < 1)
+ fun_l10_n14(x)
+ else
+ fun_l10_n494(x)
+ end
+end
+
+def fun_l9_n950(x)
+ if (x < 1)
+ fun_l10_n6(x)
+ else
+ fun_l10_n523(x)
+ end
+end
+
+def fun_l9_n951(x)
+ if (x < 1)
+ fun_l10_n705(x)
+ else
+ fun_l10_n689(x)
+ end
+end
+
+def fun_l9_n952(x)
+ if (x < 1)
+ fun_l10_n830(x)
+ else
+ fun_l10_n374(x)
+ end
+end
+
+def fun_l9_n953(x)
+ if (x < 1)
+ fun_l10_n451(x)
+ else
+ fun_l10_n87(x)
+ end
+end
+
+def fun_l9_n954(x)
+ if (x < 1)
+ fun_l10_n202(x)
+ else
+ fun_l10_n753(x)
+ end
+end
+
+def fun_l9_n955(x)
+ if (x < 1)
+ fun_l10_n384(x)
+ else
+ fun_l10_n216(x)
+ end
+end
+
+def fun_l9_n956(x)
+ if (x < 1)
+ fun_l10_n381(x)
+ else
+ fun_l10_n727(x)
+ end
+end
+
+def fun_l9_n957(x)
+ if (x < 1)
+ fun_l10_n876(x)
+ else
+ fun_l10_n760(x)
+ end
+end
+
+def fun_l9_n958(x)
+ if (x < 1)
+ fun_l10_n975(x)
+ else
+ fun_l10_n372(x)
+ end
+end
+
+def fun_l9_n959(x)
+ if (x < 1)
+ fun_l10_n714(x)
+ else
+ fun_l10_n680(x)
+ end
+end
+
+def fun_l9_n960(x)
+ if (x < 1)
+ fun_l10_n733(x)
+ else
+ fun_l10_n508(x)
+ end
+end
+
+def fun_l9_n961(x)
+ if (x < 1)
+ fun_l10_n319(x)
+ else
+ fun_l10_n90(x)
+ end
+end
+
+def fun_l9_n962(x)
+ if (x < 1)
+ fun_l10_n964(x)
+ else
+ fun_l10_n282(x)
+ end
+end
+
+def fun_l9_n963(x)
+ if (x < 1)
+ fun_l10_n179(x)
+ else
+ fun_l10_n324(x)
+ end
+end
+
+def fun_l9_n964(x)
+ if (x < 1)
+ fun_l10_n627(x)
+ else
+ fun_l10_n627(x)
+ end
+end
+
+def fun_l9_n965(x)
+ if (x < 1)
+ fun_l10_n7(x)
+ else
+ fun_l10_n375(x)
+ end
+end
+
+def fun_l9_n966(x)
+ if (x < 1)
+ fun_l10_n960(x)
+ else
+ fun_l10_n272(x)
+ end
+end
+
+def fun_l9_n967(x)
+ if (x < 1)
+ fun_l10_n869(x)
+ else
+ fun_l10_n737(x)
+ end
+end
+
+def fun_l9_n968(x)
+ if (x < 1)
+ fun_l10_n621(x)
+ else
+ fun_l10_n413(x)
+ end
+end
+
+def fun_l9_n969(x)
+ if (x < 1)
+ fun_l10_n258(x)
+ else
+ fun_l10_n105(x)
+ end
+end
+
+def fun_l9_n970(x)
+ if (x < 1)
+ fun_l10_n817(x)
+ else
+ fun_l10_n519(x)
+ end
+end
+
+def fun_l9_n971(x)
+ if (x < 1)
+ fun_l10_n462(x)
+ else
+ fun_l10_n335(x)
+ end
+end
+
+def fun_l9_n972(x)
+ if (x < 1)
+ fun_l10_n770(x)
+ else
+ fun_l10_n856(x)
+ end
+end
+
+def fun_l9_n973(x)
+ if (x < 1)
+ fun_l10_n607(x)
+ else
+ fun_l10_n142(x)
+ end
+end
+
+def fun_l9_n974(x)
+ if (x < 1)
+ fun_l10_n498(x)
+ else
+ fun_l10_n373(x)
+ end
+end
+
+def fun_l9_n975(x)
+ if (x < 1)
+ fun_l10_n239(x)
+ else
+ fun_l10_n895(x)
+ end
+end
+
+def fun_l9_n976(x)
+ if (x < 1)
+ fun_l10_n312(x)
+ else
+ fun_l10_n489(x)
+ end
+end
+
+def fun_l9_n977(x)
+ if (x < 1)
+ fun_l10_n595(x)
+ else
+ fun_l10_n674(x)
+ end
+end
+
+def fun_l9_n978(x)
+ if (x < 1)
+ fun_l10_n928(x)
+ else
+ fun_l10_n774(x)
+ end
+end
+
+def fun_l9_n979(x)
+ if (x < 1)
+ fun_l10_n964(x)
+ else
+ fun_l10_n860(x)
+ end
+end
+
+def fun_l9_n980(x)
+ if (x < 1)
+ fun_l10_n63(x)
+ else
+ fun_l10_n115(x)
+ end
+end
+
+def fun_l9_n981(x)
+ if (x < 1)
+ fun_l10_n930(x)
+ else
+ fun_l10_n559(x)
+ end
+end
+
+def fun_l9_n982(x)
+ if (x < 1)
+ fun_l10_n391(x)
+ else
+ fun_l10_n411(x)
+ end
+end
+
+def fun_l9_n983(x)
+ if (x < 1)
+ fun_l10_n71(x)
+ else
+ fun_l10_n632(x)
+ end
+end
+
+def fun_l9_n984(x)
+ if (x < 1)
+ fun_l10_n613(x)
+ else
+ fun_l10_n218(x)
+ end
+end
+
+def fun_l9_n985(x)
+ if (x < 1)
+ fun_l10_n263(x)
+ else
+ fun_l10_n858(x)
+ end
+end
+
+def fun_l9_n986(x)
+ if (x < 1)
+ fun_l10_n974(x)
+ else
+ fun_l10_n824(x)
+ end
+end
+
+def fun_l9_n987(x)
+ if (x < 1)
+ fun_l10_n636(x)
+ else
+ fun_l10_n55(x)
+ end
+end
+
+def fun_l9_n988(x)
+ if (x < 1)
+ fun_l10_n367(x)
+ else
+ fun_l10_n878(x)
+ end
+end
+
+def fun_l9_n989(x)
+ if (x < 1)
+ fun_l10_n316(x)
+ else
+ fun_l10_n800(x)
+ end
+end
+
+def fun_l9_n990(x)
+ if (x < 1)
+ fun_l10_n581(x)
+ else
+ fun_l10_n511(x)
+ end
+end
+
+def fun_l9_n991(x)
+ if (x < 1)
+ fun_l10_n667(x)
+ else
+ fun_l10_n566(x)
+ end
+end
+
+def fun_l9_n992(x)
+ if (x < 1)
+ fun_l10_n144(x)
+ else
+ fun_l10_n51(x)
+ end
+end
+
+def fun_l9_n993(x)
+ if (x < 1)
+ fun_l10_n652(x)
+ else
+ fun_l10_n436(x)
+ end
+end
+
+def fun_l9_n994(x)
+ if (x < 1)
+ fun_l10_n283(x)
+ else
+ fun_l10_n480(x)
+ end
+end
+
+def fun_l9_n995(x)
+ if (x < 1)
+ fun_l10_n908(x)
+ else
+ fun_l10_n86(x)
+ end
+end
+
+def fun_l9_n996(x)
+ if (x < 1)
+ fun_l10_n43(x)
+ else
+ fun_l10_n466(x)
+ end
+end
+
+def fun_l9_n997(x)
+ if (x < 1)
+ fun_l10_n968(x)
+ else
+ fun_l10_n97(x)
+ end
+end
+
+def fun_l9_n998(x)
+ if (x < 1)
+ fun_l10_n38(x)
+ else
+ fun_l10_n78(x)
+ end
+end
+
+def fun_l9_n999(x)
+ if (x < 1)
+ fun_l10_n947(x)
+ else
+ fun_l10_n322(x)
+ end
+end
+
+def fun_l10_n0(x)
+ if (x < 1)
+ fun_l11_n424(x)
+ else
+ fun_l11_n206(x)
+ end
+end
+
+def fun_l10_n1(x)
+ if (x < 1)
+ fun_l11_n263(x)
+ else
+ fun_l11_n886(x)
+ end
+end
+
+def fun_l10_n2(x)
+ if (x < 1)
+ fun_l11_n31(x)
+ else
+ fun_l11_n693(x)
+ end
+end
+
+def fun_l10_n3(x)
+ if (x < 1)
+ fun_l11_n924(x)
+ else
+ fun_l11_n585(x)
+ end
+end
+
+def fun_l10_n4(x)
+ if (x < 1)
+ fun_l11_n552(x)
+ else
+ fun_l11_n904(x)
+ end
+end
+
+def fun_l10_n5(x)
+ if (x < 1)
+ fun_l11_n912(x)
+ else
+ fun_l11_n127(x)
+ end
+end
+
+def fun_l10_n6(x)
+ if (x < 1)
+ fun_l11_n284(x)
+ else
+ fun_l11_n952(x)
+ end
+end
+
+def fun_l10_n7(x)
+ if (x < 1)
+ fun_l11_n294(x)
+ else
+ fun_l11_n527(x)
+ end
+end
+
+def fun_l10_n8(x)
+ if (x < 1)
+ fun_l11_n675(x)
+ else
+ fun_l11_n457(x)
+ end
+end
+
+def fun_l10_n9(x)
+ if (x < 1)
+ fun_l11_n908(x)
+ else
+ fun_l11_n963(x)
+ end
+end
+
+def fun_l10_n10(x)
+ if (x < 1)
+ fun_l11_n361(x)
+ else
+ fun_l11_n839(x)
+ end
+end
+
+def fun_l10_n11(x)
+ if (x < 1)
+ fun_l11_n402(x)
+ else
+ fun_l11_n228(x)
+ end
+end
+
+def fun_l10_n12(x)
+ if (x < 1)
+ fun_l11_n871(x)
+ else
+ fun_l11_n194(x)
+ end
+end
+
+def fun_l10_n13(x)
+ if (x < 1)
+ fun_l11_n255(x)
+ else
+ fun_l11_n816(x)
+ end
+end
+
+def fun_l10_n14(x)
+ if (x < 1)
+ fun_l11_n987(x)
+ else
+ fun_l11_n870(x)
+ end
+end
+
+def fun_l10_n15(x)
+ if (x < 1)
+ fun_l11_n538(x)
+ else
+ fun_l11_n837(x)
+ end
+end
+
+def fun_l10_n16(x)
+ if (x < 1)
+ fun_l11_n205(x)
+ else
+ fun_l11_n831(x)
+ end
+end
+
+def fun_l10_n17(x)
+ if (x < 1)
+ fun_l11_n737(x)
+ else
+ fun_l11_n242(x)
+ end
+end
+
+def fun_l10_n18(x)
+ if (x < 1)
+ fun_l11_n18(x)
+ else
+ fun_l11_n103(x)
+ end
+end
+
+def fun_l10_n19(x)
+ if (x < 1)
+ fun_l11_n928(x)
+ else
+ fun_l11_n300(x)
+ end
+end
+
+def fun_l10_n20(x)
+ if (x < 1)
+ fun_l11_n816(x)
+ else
+ fun_l11_n225(x)
+ end
+end
+
+def fun_l10_n21(x)
+ if (x < 1)
+ fun_l11_n52(x)
+ else
+ fun_l11_n901(x)
+ end
+end
+
+def fun_l10_n22(x)
+ if (x < 1)
+ fun_l11_n316(x)
+ else
+ fun_l11_n556(x)
+ end
+end
+
+def fun_l10_n23(x)
+ if (x < 1)
+ fun_l11_n103(x)
+ else
+ fun_l11_n223(x)
+ end
+end
+
+def fun_l10_n24(x)
+ if (x < 1)
+ fun_l11_n14(x)
+ else
+ fun_l11_n875(x)
+ end
+end
+
+def fun_l10_n25(x)
+ if (x < 1)
+ fun_l11_n359(x)
+ else
+ fun_l11_n504(x)
+ end
+end
+
+def fun_l10_n26(x)
+ if (x < 1)
+ fun_l11_n416(x)
+ else
+ fun_l11_n172(x)
+ end
+end
+
+def fun_l10_n27(x)
+ if (x < 1)
+ fun_l11_n142(x)
+ else
+ fun_l11_n238(x)
+ end
+end
+
+def fun_l10_n28(x)
+ if (x < 1)
+ fun_l11_n319(x)
+ else
+ fun_l11_n350(x)
+ end
+end
+
+def fun_l10_n29(x)
+ if (x < 1)
+ fun_l11_n53(x)
+ else
+ fun_l11_n162(x)
+ end
+end
+
+def fun_l10_n30(x)
+ if (x < 1)
+ fun_l11_n121(x)
+ else
+ fun_l11_n39(x)
+ end
+end
+
+def fun_l10_n31(x)
+ if (x < 1)
+ fun_l11_n447(x)
+ else
+ fun_l11_n259(x)
+ end
+end
+
+def fun_l10_n32(x)
+ if (x < 1)
+ fun_l11_n931(x)
+ else
+ fun_l11_n571(x)
+ end
+end
+
+def fun_l10_n33(x)
+ if (x < 1)
+ fun_l11_n705(x)
+ else
+ fun_l11_n544(x)
+ end
+end
+
+def fun_l10_n34(x)
+ if (x < 1)
+ fun_l11_n990(x)
+ else
+ fun_l11_n695(x)
+ end
+end
+
+def fun_l10_n35(x)
+ if (x < 1)
+ fun_l11_n197(x)
+ else
+ fun_l11_n391(x)
+ end
+end
+
+def fun_l10_n36(x)
+ if (x < 1)
+ fun_l11_n686(x)
+ else
+ fun_l11_n785(x)
+ end
+end
+
+def fun_l10_n37(x)
+ if (x < 1)
+ fun_l11_n466(x)
+ else
+ fun_l11_n783(x)
+ end
+end
+
+def fun_l10_n38(x)
+ if (x < 1)
+ fun_l11_n351(x)
+ else
+ fun_l11_n732(x)
+ end
+end
+
+def fun_l10_n39(x)
+ if (x < 1)
+ fun_l11_n22(x)
+ else
+ fun_l11_n995(x)
+ end
+end
+
+def fun_l10_n40(x)
+ if (x < 1)
+ fun_l11_n264(x)
+ else
+ fun_l11_n662(x)
+ end
+end
+
+def fun_l10_n41(x)
+ if (x < 1)
+ fun_l11_n91(x)
+ else
+ fun_l11_n673(x)
+ end
+end
+
+def fun_l10_n42(x)
+ if (x < 1)
+ fun_l11_n993(x)
+ else
+ fun_l11_n839(x)
+ end
+end
+
+def fun_l10_n43(x)
+ if (x < 1)
+ fun_l11_n158(x)
+ else
+ fun_l11_n774(x)
+ end
+end
+
+def fun_l10_n44(x)
+ if (x < 1)
+ fun_l11_n977(x)
+ else
+ fun_l11_n321(x)
+ end
+end
+
+def fun_l10_n45(x)
+ if (x < 1)
+ fun_l11_n121(x)
+ else
+ fun_l11_n184(x)
+ end
+end
+
+def fun_l10_n46(x)
+ if (x < 1)
+ fun_l11_n446(x)
+ else
+ fun_l11_n426(x)
+ end
+end
+
+def fun_l10_n47(x)
+ if (x < 1)
+ fun_l11_n524(x)
+ else
+ fun_l11_n123(x)
+ end
+end
+
+def fun_l10_n48(x)
+ if (x < 1)
+ fun_l11_n435(x)
+ else
+ fun_l11_n560(x)
+ end
+end
+
+def fun_l10_n49(x)
+ if (x < 1)
+ fun_l11_n94(x)
+ else
+ fun_l11_n731(x)
+ end
+end
+
+def fun_l10_n50(x)
+ if (x < 1)
+ fun_l11_n177(x)
+ else
+ fun_l11_n902(x)
+ end
+end
+
+def fun_l10_n51(x)
+ if (x < 1)
+ fun_l11_n648(x)
+ else
+ fun_l11_n807(x)
+ end
+end
+
+def fun_l10_n52(x)
+ if (x < 1)
+ fun_l11_n414(x)
+ else
+ fun_l11_n335(x)
+ end
+end
+
+def fun_l10_n53(x)
+ if (x < 1)
+ fun_l11_n754(x)
+ else
+ fun_l11_n789(x)
+ end
+end
+
+def fun_l10_n54(x)
+ if (x < 1)
+ fun_l11_n843(x)
+ else
+ fun_l11_n980(x)
+ end
+end
+
+def fun_l10_n55(x)
+ if (x < 1)
+ fun_l11_n706(x)
+ else
+ fun_l11_n160(x)
+ end
+end
+
+def fun_l10_n56(x)
+ if (x < 1)
+ fun_l11_n564(x)
+ else
+ fun_l11_n672(x)
+ end
+end
+
+def fun_l10_n57(x)
+ if (x < 1)
+ fun_l11_n158(x)
+ else
+ fun_l11_n154(x)
+ end
+end
+
+def fun_l10_n58(x)
+ if (x < 1)
+ fun_l11_n120(x)
+ else
+ fun_l11_n970(x)
+ end
+end
+
+def fun_l10_n59(x)
+ if (x < 1)
+ fun_l11_n561(x)
+ else
+ fun_l11_n872(x)
+ end
+end
+
+def fun_l10_n60(x)
+ if (x < 1)
+ fun_l11_n93(x)
+ else
+ fun_l11_n723(x)
+ end
+end
+
+def fun_l10_n61(x)
+ if (x < 1)
+ fun_l11_n921(x)
+ else
+ fun_l11_n578(x)
+ end
+end
+
+def fun_l10_n62(x)
+ if (x < 1)
+ fun_l11_n527(x)
+ else
+ fun_l11_n118(x)
+ end
+end
+
+def fun_l10_n63(x)
+ if (x < 1)
+ fun_l11_n225(x)
+ else
+ fun_l11_n937(x)
+ end
+end
+
+def fun_l10_n64(x)
+ if (x < 1)
+ fun_l11_n634(x)
+ else
+ fun_l11_n415(x)
+ end
+end
+
+def fun_l10_n65(x)
+ if (x < 1)
+ fun_l11_n718(x)
+ else
+ fun_l11_n958(x)
+ end
+end
+
+def fun_l10_n66(x)
+ if (x < 1)
+ fun_l11_n972(x)
+ else
+ fun_l11_n453(x)
+ end
+end
+
+def fun_l10_n67(x)
+ if (x < 1)
+ fun_l11_n85(x)
+ else
+ fun_l11_n934(x)
+ end
+end
+
+def fun_l10_n68(x)
+ if (x < 1)
+ fun_l11_n386(x)
+ else
+ fun_l11_n138(x)
+ end
+end
+
+def fun_l10_n69(x)
+ if (x < 1)
+ fun_l11_n312(x)
+ else
+ fun_l11_n62(x)
+ end
+end
+
+def fun_l10_n70(x)
+ if (x < 1)
+ fun_l11_n591(x)
+ else
+ fun_l11_n906(x)
+ end
+end
+
+def fun_l10_n71(x)
+ if (x < 1)
+ fun_l11_n571(x)
+ else
+ fun_l11_n429(x)
+ end
+end
+
+def fun_l10_n72(x)
+ if (x < 1)
+ fun_l11_n996(x)
+ else
+ fun_l11_n932(x)
+ end
+end
+
+def fun_l10_n73(x)
+ if (x < 1)
+ fun_l11_n691(x)
+ else
+ fun_l11_n116(x)
+ end
+end
+
+def fun_l10_n74(x)
+ if (x < 1)
+ fun_l11_n670(x)
+ else
+ fun_l11_n865(x)
+ end
+end
+
+def fun_l10_n75(x)
+ if (x < 1)
+ fun_l11_n568(x)
+ else
+ fun_l11_n164(x)
+ end
+end
+
+def fun_l10_n76(x)
+ if (x < 1)
+ fun_l11_n747(x)
+ else
+ fun_l11_n235(x)
+ end
+end
+
+def fun_l10_n77(x)
+ if (x < 1)
+ fun_l11_n402(x)
+ else
+ fun_l11_n670(x)
+ end
+end
+
+def fun_l10_n78(x)
+ if (x < 1)
+ fun_l11_n525(x)
+ else
+ fun_l11_n675(x)
+ end
+end
+
+def fun_l10_n79(x)
+ if (x < 1)
+ fun_l11_n6(x)
+ else
+ fun_l11_n238(x)
+ end
+end
+
+def fun_l10_n80(x)
+ if (x < 1)
+ fun_l11_n905(x)
+ else
+ fun_l11_n170(x)
+ end
+end
+
+def fun_l10_n81(x)
+ if (x < 1)
+ fun_l11_n610(x)
+ else
+ fun_l11_n527(x)
+ end
+end
+
+def fun_l10_n82(x)
+ if (x < 1)
+ fun_l11_n796(x)
+ else
+ fun_l11_n749(x)
+ end
+end
+
+def fun_l10_n83(x)
+ if (x < 1)
+ fun_l11_n634(x)
+ else
+ fun_l11_n49(x)
+ end
+end
+
+def fun_l10_n84(x)
+ if (x < 1)
+ fun_l11_n376(x)
+ else
+ fun_l11_n852(x)
+ end
+end
+
+def fun_l10_n85(x)
+ if (x < 1)
+ fun_l11_n593(x)
+ else
+ fun_l11_n752(x)
+ end
+end
+
+def fun_l10_n86(x)
+ if (x < 1)
+ fun_l11_n821(x)
+ else
+ fun_l11_n892(x)
+ end
+end
+
+def fun_l10_n87(x)
+ if (x < 1)
+ fun_l11_n950(x)
+ else
+ fun_l11_n309(x)
+ end
+end
+
+def fun_l10_n88(x)
+ if (x < 1)
+ fun_l11_n360(x)
+ else
+ fun_l11_n134(x)
+ end
+end
+
+def fun_l10_n89(x)
+ if (x < 1)
+ fun_l11_n935(x)
+ else
+ fun_l11_n241(x)
+ end
+end
+
+def fun_l10_n90(x)
+ if (x < 1)
+ fun_l11_n524(x)
+ else
+ fun_l11_n120(x)
+ end
+end
+
+def fun_l10_n91(x)
+ if (x < 1)
+ fun_l11_n25(x)
+ else
+ fun_l11_n357(x)
+ end
+end
+
+def fun_l10_n92(x)
+ if (x < 1)
+ fun_l11_n248(x)
+ else
+ fun_l11_n212(x)
+ end
+end
+
+def fun_l10_n93(x)
+ if (x < 1)
+ fun_l11_n860(x)
+ else
+ fun_l11_n733(x)
+ end
+end
+
+def fun_l10_n94(x)
+ if (x < 1)
+ fun_l11_n147(x)
+ else
+ fun_l11_n907(x)
+ end
+end
+
+def fun_l10_n95(x)
+ if (x < 1)
+ fun_l11_n758(x)
+ else
+ fun_l11_n62(x)
+ end
+end
+
+def fun_l10_n96(x)
+ if (x < 1)
+ fun_l11_n205(x)
+ else
+ fun_l11_n54(x)
+ end
+end
+
+def fun_l10_n97(x)
+ if (x < 1)
+ fun_l11_n8(x)
+ else
+ fun_l11_n813(x)
+ end
+end
+
+def fun_l10_n98(x)
+ if (x < 1)
+ fun_l11_n296(x)
+ else
+ fun_l11_n693(x)
+ end
+end
+
+def fun_l10_n99(x)
+ if (x < 1)
+ fun_l11_n181(x)
+ else
+ fun_l11_n709(x)
+ end
+end
+
+def fun_l10_n100(x)
+ if (x < 1)
+ fun_l11_n109(x)
+ else
+ fun_l11_n560(x)
+ end
+end
+
+def fun_l10_n101(x)
+ if (x < 1)
+ fun_l11_n290(x)
+ else
+ fun_l11_n693(x)
+ end
+end
+
+def fun_l10_n102(x)
+ if (x < 1)
+ fun_l11_n826(x)
+ else
+ fun_l11_n813(x)
+ end
+end
+
+def fun_l10_n103(x)
+ if (x < 1)
+ fun_l11_n3(x)
+ else
+ fun_l11_n787(x)
+ end
+end
+
+def fun_l10_n104(x)
+ if (x < 1)
+ fun_l11_n477(x)
+ else
+ fun_l11_n336(x)
+ end
+end
+
+def fun_l10_n105(x)
+ if (x < 1)
+ fun_l11_n131(x)
+ else
+ fun_l11_n500(x)
+ end
+end
+
+def fun_l10_n106(x)
+ if (x < 1)
+ fun_l11_n278(x)
+ else
+ fun_l11_n948(x)
+ end
+end
+
+def fun_l10_n107(x)
+ if (x < 1)
+ fun_l11_n950(x)
+ else
+ fun_l11_n848(x)
+ end
+end
+
+def fun_l10_n108(x)
+ if (x < 1)
+ fun_l11_n490(x)
+ else
+ fun_l11_n1(x)
+ end
+end
+
+def fun_l10_n109(x)
+ if (x < 1)
+ fun_l11_n297(x)
+ else
+ fun_l11_n902(x)
+ end
+end
+
+def fun_l10_n110(x)
+ if (x < 1)
+ fun_l11_n808(x)
+ else
+ fun_l11_n697(x)
+ end
+end
+
+def fun_l10_n111(x)
+ if (x < 1)
+ fun_l11_n330(x)
+ else
+ fun_l11_n424(x)
+ end
+end
+
+def fun_l10_n112(x)
+ if (x < 1)
+ fun_l11_n254(x)
+ else
+ fun_l11_n662(x)
+ end
+end
+
+def fun_l10_n113(x)
+ if (x < 1)
+ fun_l11_n811(x)
+ else
+ fun_l11_n196(x)
+ end
+end
+
+def fun_l10_n114(x)
+ if (x < 1)
+ fun_l11_n868(x)
+ else
+ fun_l11_n812(x)
+ end
+end
+
+def fun_l10_n115(x)
+ if (x < 1)
+ fun_l11_n308(x)
+ else
+ fun_l11_n184(x)
+ end
+end
+
+def fun_l10_n116(x)
+ if (x < 1)
+ fun_l11_n64(x)
+ else
+ fun_l11_n906(x)
+ end
+end
+
+def fun_l10_n117(x)
+ if (x < 1)
+ fun_l11_n339(x)
+ else
+ fun_l11_n338(x)
+ end
+end
+
+def fun_l10_n118(x)
+ if (x < 1)
+ fun_l11_n993(x)
+ else
+ fun_l11_n915(x)
+ end
+end
+
+def fun_l10_n119(x)
+ if (x < 1)
+ fun_l11_n729(x)
+ else
+ fun_l11_n472(x)
+ end
+end
+
+def fun_l10_n120(x)
+ if (x < 1)
+ fun_l11_n646(x)
+ else
+ fun_l11_n83(x)
+ end
+end
+
+def fun_l10_n121(x)
+ if (x < 1)
+ fun_l11_n294(x)
+ else
+ fun_l11_n208(x)
+ end
+end
+
+def fun_l10_n122(x)
+ if (x < 1)
+ fun_l11_n309(x)
+ else
+ fun_l11_n52(x)
+ end
+end
+
+def fun_l10_n123(x)
+ if (x < 1)
+ fun_l11_n5(x)
+ else
+ fun_l11_n124(x)
+ end
+end
+
+def fun_l10_n124(x)
+ if (x < 1)
+ fun_l11_n288(x)
+ else
+ fun_l11_n731(x)
+ end
+end
+
+def fun_l10_n125(x)
+ if (x < 1)
+ fun_l11_n835(x)
+ else
+ fun_l11_n381(x)
+ end
+end
+
+def fun_l10_n126(x)
+ if (x < 1)
+ fun_l11_n269(x)
+ else
+ fun_l11_n104(x)
+ end
+end
+
+def fun_l10_n127(x)
+ if (x < 1)
+ fun_l11_n377(x)
+ else
+ fun_l11_n650(x)
+ end
+end
+
+def fun_l10_n128(x)
+ if (x < 1)
+ fun_l11_n749(x)
+ else
+ fun_l11_n223(x)
+ end
+end
+
+def fun_l10_n129(x)
+ if (x < 1)
+ fun_l11_n493(x)
+ else
+ fun_l11_n834(x)
+ end
+end
+
+def fun_l10_n130(x)
+ if (x < 1)
+ fun_l11_n826(x)
+ else
+ fun_l11_n857(x)
+ end
+end
+
+def fun_l10_n131(x)
+ if (x < 1)
+ fun_l11_n19(x)
+ else
+ fun_l11_n932(x)
+ end
+end
+
+def fun_l10_n132(x)
+ if (x < 1)
+ fun_l11_n585(x)
+ else
+ fun_l11_n13(x)
+ end
+end
+
+def fun_l10_n133(x)
+ if (x < 1)
+ fun_l11_n91(x)
+ else
+ fun_l11_n748(x)
+ end
+end
+
+def fun_l10_n134(x)
+ if (x < 1)
+ fun_l11_n218(x)
+ else
+ fun_l11_n343(x)
+ end
+end
+
+def fun_l10_n135(x)
+ if (x < 1)
+ fun_l11_n386(x)
+ else
+ fun_l11_n655(x)
+ end
+end
+
+def fun_l10_n136(x)
+ if (x < 1)
+ fun_l11_n43(x)
+ else
+ fun_l11_n964(x)
+ end
+end
+
+def fun_l10_n137(x)
+ if (x < 1)
+ fun_l11_n50(x)
+ else
+ fun_l11_n836(x)
+ end
+end
+
+def fun_l10_n138(x)
+ if (x < 1)
+ fun_l11_n915(x)
+ else
+ fun_l11_n262(x)
+ end
+end
+
+def fun_l10_n139(x)
+ if (x < 1)
+ fun_l11_n187(x)
+ else
+ fun_l11_n321(x)
+ end
+end
+
+def fun_l10_n140(x)
+ if (x < 1)
+ fun_l11_n473(x)
+ else
+ fun_l11_n771(x)
+ end
+end
+
+def fun_l10_n141(x)
+ if (x < 1)
+ fun_l11_n125(x)
+ else
+ fun_l11_n118(x)
+ end
+end
+
+def fun_l10_n142(x)
+ if (x < 1)
+ fun_l11_n993(x)
+ else
+ fun_l11_n178(x)
+ end
+end
+
+def fun_l10_n143(x)
+ if (x < 1)
+ fun_l11_n223(x)
+ else
+ fun_l11_n509(x)
+ end
+end
+
+def fun_l10_n144(x)
+ if (x < 1)
+ fun_l11_n62(x)
+ else
+ fun_l11_n455(x)
+ end
+end
+
+def fun_l10_n145(x)
+ if (x < 1)
+ fun_l11_n155(x)
+ else
+ fun_l11_n486(x)
+ end
+end
+
+def fun_l10_n146(x)
+ if (x < 1)
+ fun_l11_n414(x)
+ else
+ fun_l11_n384(x)
+ end
+end
+
+def fun_l10_n147(x)
+ if (x < 1)
+ fun_l11_n840(x)
+ else
+ fun_l11_n287(x)
+ end
+end
+
+def fun_l10_n148(x)
+ if (x < 1)
+ fun_l11_n605(x)
+ else
+ fun_l11_n283(x)
+ end
+end
+
+def fun_l10_n149(x)
+ if (x < 1)
+ fun_l11_n101(x)
+ else
+ fun_l11_n710(x)
+ end
+end
+
+def fun_l10_n150(x)
+ if (x < 1)
+ fun_l11_n51(x)
+ else
+ fun_l11_n304(x)
+ end
+end
+
+def fun_l10_n151(x)
+ if (x < 1)
+ fun_l11_n501(x)
+ else
+ fun_l11_n789(x)
+ end
+end
+
+def fun_l10_n152(x)
+ if (x < 1)
+ fun_l11_n265(x)
+ else
+ fun_l11_n304(x)
+ end
+end
+
+def fun_l10_n153(x)
+ if (x < 1)
+ fun_l11_n500(x)
+ else
+ fun_l11_n32(x)
+ end
+end
+
+def fun_l10_n154(x)
+ if (x < 1)
+ fun_l11_n464(x)
+ else
+ fun_l11_n212(x)
+ end
+end
+
+def fun_l10_n155(x)
+ if (x < 1)
+ fun_l11_n729(x)
+ else
+ fun_l11_n805(x)
+ end
+end
+
+def fun_l10_n156(x)
+ if (x < 1)
+ fun_l11_n225(x)
+ else
+ fun_l11_n241(x)
+ end
+end
+
+def fun_l10_n157(x)
+ if (x < 1)
+ fun_l11_n600(x)
+ else
+ fun_l11_n424(x)
+ end
+end
+
+def fun_l10_n158(x)
+ if (x < 1)
+ fun_l11_n684(x)
+ else
+ fun_l11_n898(x)
+ end
+end
+
+def fun_l10_n159(x)
+ if (x < 1)
+ fun_l11_n354(x)
+ else
+ fun_l11_n909(x)
+ end
+end
+
+def fun_l10_n160(x)
+ if (x < 1)
+ fun_l11_n879(x)
+ else
+ fun_l11_n917(x)
+ end
+end
+
+def fun_l10_n161(x)
+ if (x < 1)
+ fun_l11_n547(x)
+ else
+ fun_l11_n333(x)
+ end
+end
+
+def fun_l10_n162(x)
+ if (x < 1)
+ fun_l11_n769(x)
+ else
+ fun_l11_n846(x)
+ end
+end
+
+def fun_l10_n163(x)
+ if (x < 1)
+ fun_l11_n292(x)
+ else
+ fun_l11_n526(x)
+ end
+end
+
+def fun_l10_n164(x)
+ if (x < 1)
+ fun_l11_n355(x)
+ else
+ fun_l11_n783(x)
+ end
+end
+
+def fun_l10_n165(x)
+ if (x < 1)
+ fun_l11_n413(x)
+ else
+ fun_l11_n570(x)
+ end
+end
+
+def fun_l10_n166(x)
+ if (x < 1)
+ fun_l11_n535(x)
+ else
+ fun_l11_n953(x)
+ end
+end
+
+def fun_l10_n167(x)
+ if (x < 1)
+ fun_l11_n661(x)
+ else
+ fun_l11_n178(x)
+ end
+end
+
+def fun_l10_n168(x)
+ if (x < 1)
+ fun_l11_n749(x)
+ else
+ fun_l11_n853(x)
+ end
+end
+
+def fun_l10_n169(x)
+ if (x < 1)
+ fun_l11_n208(x)
+ else
+ fun_l11_n378(x)
+ end
+end
+
+def fun_l10_n170(x)
+ if (x < 1)
+ fun_l11_n385(x)
+ else
+ fun_l11_n811(x)
+ end
+end
+
+def fun_l10_n171(x)
+ if (x < 1)
+ fun_l11_n960(x)
+ else
+ fun_l11_n631(x)
+ end
+end
+
+def fun_l10_n172(x)
+ if (x < 1)
+ fun_l11_n104(x)
+ else
+ fun_l11_n667(x)
+ end
+end
+
+def fun_l10_n173(x)
+ if (x < 1)
+ fun_l11_n532(x)
+ else
+ fun_l11_n169(x)
+ end
+end
+
+def fun_l10_n174(x)
+ if (x < 1)
+ fun_l11_n794(x)
+ else
+ fun_l11_n761(x)
+ end
+end
+
+def fun_l10_n175(x)
+ if (x < 1)
+ fun_l11_n306(x)
+ else
+ fun_l11_n369(x)
+ end
+end
+
+def fun_l10_n176(x)
+ if (x < 1)
+ fun_l11_n693(x)
+ else
+ fun_l11_n254(x)
+ end
+end
+
+def fun_l10_n177(x)
+ if (x < 1)
+ fun_l11_n927(x)
+ else
+ fun_l11_n194(x)
+ end
+end
+
+def fun_l10_n178(x)
+ if (x < 1)
+ fun_l11_n197(x)
+ else
+ fun_l11_n136(x)
+ end
+end
+
+def fun_l10_n179(x)
+ if (x < 1)
+ fun_l11_n482(x)
+ else
+ fun_l11_n182(x)
+ end
+end
+
+def fun_l10_n180(x)
+ if (x < 1)
+ fun_l11_n20(x)
+ else
+ fun_l11_n978(x)
+ end
+end
+
+def fun_l10_n181(x)
+ if (x < 1)
+ fun_l11_n101(x)
+ else
+ fun_l11_n92(x)
+ end
+end
+
+def fun_l10_n182(x)
+ if (x < 1)
+ fun_l11_n179(x)
+ else
+ fun_l11_n634(x)
+ end
+end
+
+def fun_l10_n183(x)
+ if (x < 1)
+ fun_l11_n221(x)
+ else
+ fun_l11_n275(x)
+ end
+end
+
+def fun_l10_n184(x)
+ if (x < 1)
+ fun_l11_n826(x)
+ else
+ fun_l11_n630(x)
+ end
+end
+
+def fun_l10_n185(x)
+ if (x < 1)
+ fun_l11_n706(x)
+ else
+ fun_l11_n30(x)
+ end
+end
+
+def fun_l10_n186(x)
+ if (x < 1)
+ fun_l11_n491(x)
+ else
+ fun_l11_n182(x)
+ end
+end
+
+def fun_l10_n187(x)
+ if (x < 1)
+ fun_l11_n404(x)
+ else
+ fun_l11_n812(x)
+ end
+end
+
+def fun_l10_n188(x)
+ if (x < 1)
+ fun_l11_n41(x)
+ else
+ fun_l11_n39(x)
+ end
+end
+
+def fun_l10_n189(x)
+ if (x < 1)
+ fun_l11_n620(x)
+ else
+ fun_l11_n659(x)
+ end
+end
+
+def fun_l10_n190(x)
+ if (x < 1)
+ fun_l11_n717(x)
+ else
+ fun_l11_n846(x)
+ end
+end
+
+def fun_l10_n191(x)
+ if (x < 1)
+ fun_l11_n328(x)
+ else
+ fun_l11_n223(x)
+ end
+end
+
+def fun_l10_n192(x)
+ if (x < 1)
+ fun_l11_n280(x)
+ else
+ fun_l11_n360(x)
+ end
+end
+
+def fun_l10_n193(x)
+ if (x < 1)
+ fun_l11_n798(x)
+ else
+ fun_l11_n303(x)
+ end
+end
+
+def fun_l10_n194(x)
+ if (x < 1)
+ fun_l11_n617(x)
+ else
+ fun_l11_n207(x)
+ end
+end
+
+def fun_l10_n195(x)
+ if (x < 1)
+ fun_l11_n918(x)
+ else
+ fun_l11_n398(x)
+ end
+end
+
+def fun_l10_n196(x)
+ if (x < 1)
+ fun_l11_n998(x)
+ else
+ fun_l11_n31(x)
+ end
+end
+
+def fun_l10_n197(x)
+ if (x < 1)
+ fun_l11_n740(x)
+ else
+ fun_l11_n220(x)
+ end
+end
+
+def fun_l10_n198(x)
+ if (x < 1)
+ fun_l11_n847(x)
+ else
+ fun_l11_n915(x)
+ end
+end
+
+def fun_l10_n199(x)
+ if (x < 1)
+ fun_l11_n946(x)
+ else
+ fun_l11_n300(x)
+ end
+end
+
+def fun_l10_n200(x)
+ if (x < 1)
+ fun_l11_n494(x)
+ else
+ fun_l11_n316(x)
+ end
+end
+
+def fun_l10_n201(x)
+ if (x < 1)
+ fun_l11_n871(x)
+ else
+ fun_l11_n310(x)
+ end
+end
+
+def fun_l10_n202(x)
+ if (x < 1)
+ fun_l11_n660(x)
+ else
+ fun_l11_n538(x)
+ end
+end
+
+def fun_l10_n203(x)
+ if (x < 1)
+ fun_l11_n478(x)
+ else
+ fun_l11_n618(x)
+ end
+end
+
+def fun_l10_n204(x)
+ if (x < 1)
+ fun_l11_n134(x)
+ else
+ fun_l11_n224(x)
+ end
+end
+
+def fun_l10_n205(x)
+ if (x < 1)
+ fun_l11_n128(x)
+ else
+ fun_l11_n279(x)
+ end
+end
+
+def fun_l10_n206(x)
+ if (x < 1)
+ fun_l11_n718(x)
+ else
+ fun_l11_n514(x)
+ end
+end
+
+def fun_l10_n207(x)
+ if (x < 1)
+ fun_l11_n466(x)
+ else
+ fun_l11_n979(x)
+ end
+end
+
+def fun_l10_n208(x)
+ if (x < 1)
+ fun_l11_n990(x)
+ else
+ fun_l11_n881(x)
+ end
+end
+
+def fun_l10_n209(x)
+ if (x < 1)
+ fun_l11_n860(x)
+ else
+ fun_l11_n995(x)
+ end
+end
+
+def fun_l10_n210(x)
+ if (x < 1)
+ fun_l11_n269(x)
+ else
+ fun_l11_n846(x)
+ end
+end
+
+def fun_l10_n211(x)
+ if (x < 1)
+ fun_l11_n155(x)
+ else
+ fun_l11_n97(x)
+ end
+end
+
+def fun_l10_n212(x)
+ if (x < 1)
+ fun_l11_n377(x)
+ else
+ fun_l11_n749(x)
+ end
+end
+
+def fun_l10_n213(x)
+ if (x < 1)
+ fun_l11_n647(x)
+ else
+ fun_l11_n276(x)
+ end
+end
+
+def fun_l10_n214(x)
+ if (x < 1)
+ fun_l11_n290(x)
+ else
+ fun_l11_n325(x)
+ end
+end
+
+def fun_l10_n215(x)
+ if (x < 1)
+ fun_l11_n445(x)
+ else
+ fun_l11_n538(x)
+ end
+end
+
+def fun_l10_n216(x)
+ if (x < 1)
+ fun_l11_n433(x)
+ else
+ fun_l11_n937(x)
+ end
+end
+
+def fun_l10_n217(x)
+ if (x < 1)
+ fun_l11_n288(x)
+ else
+ fun_l11_n897(x)
+ end
+end
+
+def fun_l10_n218(x)
+ if (x < 1)
+ fun_l11_n386(x)
+ else
+ fun_l11_n545(x)
+ end
+end
+
+def fun_l10_n219(x)
+ if (x < 1)
+ fun_l11_n678(x)
+ else
+ fun_l11_n433(x)
+ end
+end
+
+def fun_l10_n220(x)
+ if (x < 1)
+ fun_l11_n203(x)
+ else
+ fun_l11_n163(x)
+ end
+end
+
+def fun_l10_n221(x)
+ if (x < 1)
+ fun_l11_n134(x)
+ else
+ fun_l11_n545(x)
+ end
+end
+
+def fun_l10_n222(x)
+ if (x < 1)
+ fun_l11_n556(x)
+ else
+ fun_l11_n537(x)
+ end
+end
+
+def fun_l10_n223(x)
+ if (x < 1)
+ fun_l11_n743(x)
+ else
+ fun_l11_n88(x)
+ end
+end
+
+def fun_l10_n224(x)
+ if (x < 1)
+ fun_l11_n678(x)
+ else
+ fun_l11_n643(x)
+ end
+end
+
+def fun_l10_n225(x)
+ if (x < 1)
+ fun_l11_n13(x)
+ else
+ fun_l11_n219(x)
+ end
+end
+
+def fun_l10_n226(x)
+ if (x < 1)
+ fun_l11_n454(x)
+ else
+ fun_l11_n691(x)
+ end
+end
+
+def fun_l10_n227(x)
+ if (x < 1)
+ fun_l11_n117(x)
+ else
+ fun_l11_n433(x)
+ end
+end
+
+def fun_l10_n228(x)
+ if (x < 1)
+ fun_l11_n559(x)
+ else
+ fun_l11_n884(x)
+ end
+end
+
+def fun_l10_n229(x)
+ if (x < 1)
+ fun_l11_n58(x)
+ else
+ fun_l11_n620(x)
+ end
+end
+
+def fun_l10_n230(x)
+ if (x < 1)
+ fun_l11_n688(x)
+ else
+ fun_l11_n76(x)
+ end
+end
+
+def fun_l10_n231(x)
+ if (x < 1)
+ fun_l11_n726(x)
+ else
+ fun_l11_n644(x)
+ end
+end
+
+def fun_l10_n232(x)
+ if (x < 1)
+ fun_l11_n918(x)
+ else
+ fun_l11_n0(x)
+ end
+end
+
+def fun_l10_n233(x)
+ if (x < 1)
+ fun_l11_n761(x)
+ else
+ fun_l11_n487(x)
+ end
+end
+
+def fun_l10_n234(x)
+ if (x < 1)
+ fun_l11_n657(x)
+ else
+ fun_l11_n107(x)
+ end
+end
+
+def fun_l10_n235(x)
+ if (x < 1)
+ fun_l11_n897(x)
+ else
+ fun_l11_n881(x)
+ end
+end
+
+def fun_l10_n236(x)
+ if (x < 1)
+ fun_l11_n851(x)
+ else
+ fun_l11_n593(x)
+ end
+end
+
+def fun_l10_n237(x)
+ if (x < 1)
+ fun_l11_n319(x)
+ else
+ fun_l11_n983(x)
+ end
+end
+
+def fun_l10_n238(x)
+ if (x < 1)
+ fun_l11_n648(x)
+ else
+ fun_l11_n870(x)
+ end
+end
+
+def fun_l10_n239(x)
+ if (x < 1)
+ fun_l11_n195(x)
+ else
+ fun_l11_n378(x)
+ end
+end
+
+def fun_l10_n240(x)
+ if (x < 1)
+ fun_l11_n398(x)
+ else
+ fun_l11_n284(x)
+ end
+end
+
+def fun_l10_n241(x)
+ if (x < 1)
+ fun_l11_n118(x)
+ else
+ fun_l11_n417(x)
+ end
+end
+
+def fun_l10_n242(x)
+ if (x < 1)
+ fun_l11_n220(x)
+ else
+ fun_l11_n445(x)
+ end
+end
+
+def fun_l10_n243(x)
+ if (x < 1)
+ fun_l11_n783(x)
+ else
+ fun_l11_n989(x)
+ end
+end
+
+def fun_l10_n244(x)
+ if (x < 1)
+ fun_l11_n229(x)
+ else
+ fun_l11_n439(x)
+ end
+end
+
+def fun_l10_n245(x)
+ if (x < 1)
+ fun_l11_n78(x)
+ else
+ fun_l11_n272(x)
+ end
+end
+
+def fun_l10_n246(x)
+ if (x < 1)
+ fun_l11_n481(x)
+ else
+ fun_l11_n499(x)
+ end
+end
+
+def fun_l10_n247(x)
+ if (x < 1)
+ fun_l11_n213(x)
+ else
+ fun_l11_n471(x)
+ end
+end
+
+def fun_l10_n248(x)
+ if (x < 1)
+ fun_l11_n45(x)
+ else
+ fun_l11_n919(x)
+ end
+end
+
+def fun_l10_n249(x)
+ if (x < 1)
+ fun_l11_n13(x)
+ else
+ fun_l11_n526(x)
+ end
+end
+
+def fun_l10_n250(x)
+ if (x < 1)
+ fun_l11_n997(x)
+ else
+ fun_l11_n112(x)
+ end
+end
+
+def fun_l10_n251(x)
+ if (x < 1)
+ fun_l11_n662(x)
+ else
+ fun_l11_n950(x)
+ end
+end
+
+def fun_l10_n252(x)
+ if (x < 1)
+ fun_l11_n272(x)
+ else
+ fun_l11_n345(x)
+ end
+end
+
+def fun_l10_n253(x)
+ if (x < 1)
+ fun_l11_n28(x)
+ else
+ fun_l11_n24(x)
+ end
+end
+
+def fun_l10_n254(x)
+ if (x < 1)
+ fun_l11_n326(x)
+ else
+ fun_l11_n907(x)
+ end
+end
+
+def fun_l10_n255(x)
+ if (x < 1)
+ fun_l11_n612(x)
+ else
+ fun_l11_n790(x)
+ end
+end
+
+def fun_l10_n256(x)
+ if (x < 1)
+ fun_l11_n50(x)
+ else
+ fun_l11_n16(x)
+ end
+end
+
+def fun_l10_n257(x)
+ if (x < 1)
+ fun_l11_n350(x)
+ else
+ fun_l11_n151(x)
+ end
+end
+
+def fun_l10_n258(x)
+ if (x < 1)
+ fun_l11_n290(x)
+ else
+ fun_l11_n113(x)
+ end
+end
+
+def fun_l10_n259(x)
+ if (x < 1)
+ fun_l11_n751(x)
+ else
+ fun_l11_n16(x)
+ end
+end
+
+def fun_l10_n260(x)
+ if (x < 1)
+ fun_l11_n337(x)
+ else
+ fun_l11_n516(x)
+ end
+end
+
+def fun_l10_n261(x)
+ if (x < 1)
+ fun_l11_n530(x)
+ else
+ fun_l11_n19(x)
+ end
+end
+
+def fun_l10_n262(x)
+ if (x < 1)
+ fun_l11_n977(x)
+ else
+ fun_l11_n529(x)
+ end
+end
+
+def fun_l10_n263(x)
+ if (x < 1)
+ fun_l11_n769(x)
+ else
+ fun_l11_n723(x)
+ end
+end
+
+def fun_l10_n264(x)
+ if (x < 1)
+ fun_l11_n673(x)
+ else
+ fun_l11_n771(x)
+ end
+end
+
+def fun_l10_n265(x)
+ if (x < 1)
+ fun_l11_n28(x)
+ else
+ fun_l11_n427(x)
+ end
+end
+
+def fun_l10_n266(x)
+ if (x < 1)
+ fun_l11_n92(x)
+ else
+ fun_l11_n590(x)
+ end
+end
+
+def fun_l10_n267(x)
+ if (x < 1)
+ fun_l11_n762(x)
+ else
+ fun_l11_n352(x)
+ end
+end
+
+def fun_l10_n268(x)
+ if (x < 1)
+ fun_l11_n988(x)
+ else
+ fun_l11_n126(x)
+ end
+end
+
+def fun_l10_n269(x)
+ if (x < 1)
+ fun_l11_n92(x)
+ else
+ fun_l11_n455(x)
+ end
+end
+
+def fun_l10_n270(x)
+ if (x < 1)
+ fun_l11_n233(x)
+ else
+ fun_l11_n404(x)
+ end
+end
+
+def fun_l10_n271(x)
+ if (x < 1)
+ fun_l11_n122(x)
+ else
+ fun_l11_n245(x)
+ end
+end
+
+def fun_l10_n272(x)
+ if (x < 1)
+ fun_l11_n277(x)
+ else
+ fun_l11_n969(x)
+ end
+end
+
+def fun_l10_n273(x)
+ if (x < 1)
+ fun_l11_n848(x)
+ else
+ fun_l11_n56(x)
+ end
+end
+
+def fun_l10_n274(x)
+ if (x < 1)
+ fun_l11_n640(x)
+ else
+ fun_l11_n632(x)
+ end
+end
+
+def fun_l10_n275(x)
+ if (x < 1)
+ fun_l11_n38(x)
+ else
+ fun_l11_n816(x)
+ end
+end
+
+def fun_l10_n276(x)
+ if (x < 1)
+ fun_l11_n706(x)
+ else
+ fun_l11_n126(x)
+ end
+end
+
+def fun_l10_n277(x)
+ if (x < 1)
+ fun_l11_n710(x)
+ else
+ fun_l11_n128(x)
+ end
+end
+
+def fun_l10_n278(x)
+ if (x < 1)
+ fun_l11_n175(x)
+ else
+ fun_l11_n954(x)
+ end
+end
+
+def fun_l10_n279(x)
+ if (x < 1)
+ fun_l11_n379(x)
+ else
+ fun_l11_n58(x)
+ end
+end
+
+def fun_l10_n280(x)
+ if (x < 1)
+ fun_l11_n926(x)
+ else
+ fun_l11_n287(x)
+ end
+end
+
+def fun_l10_n281(x)
+ if (x < 1)
+ fun_l11_n981(x)
+ else
+ fun_l11_n921(x)
+ end
+end
+
+def fun_l10_n282(x)
+ if (x < 1)
+ fun_l11_n222(x)
+ else
+ fun_l11_n954(x)
+ end
+end
+
+def fun_l10_n283(x)
+ if (x < 1)
+ fun_l11_n295(x)
+ else
+ fun_l11_n575(x)
+ end
+end
+
+def fun_l10_n284(x)
+ if (x < 1)
+ fun_l11_n554(x)
+ else
+ fun_l11_n559(x)
+ end
+end
+
+def fun_l10_n285(x)
+ if (x < 1)
+ fun_l11_n476(x)
+ else
+ fun_l11_n487(x)
+ end
+end
+
+def fun_l10_n286(x)
+ if (x < 1)
+ fun_l11_n102(x)
+ else
+ fun_l11_n928(x)
+ end
+end
+
+def fun_l10_n287(x)
+ if (x < 1)
+ fun_l11_n949(x)
+ else
+ fun_l11_n900(x)
+ end
+end
+
+def fun_l10_n288(x)
+ if (x < 1)
+ fun_l11_n717(x)
+ else
+ fun_l11_n762(x)
+ end
+end
+
+def fun_l10_n289(x)
+ if (x < 1)
+ fun_l11_n304(x)
+ else
+ fun_l11_n572(x)
+ end
+end
+
+def fun_l10_n290(x)
+ if (x < 1)
+ fun_l11_n748(x)
+ else
+ fun_l11_n791(x)
+ end
+end
+
+def fun_l10_n291(x)
+ if (x < 1)
+ fun_l11_n557(x)
+ else
+ fun_l11_n79(x)
+ end
+end
+
+def fun_l10_n292(x)
+ if (x < 1)
+ fun_l11_n74(x)
+ else
+ fun_l11_n931(x)
+ end
+end
+
+def fun_l10_n293(x)
+ if (x < 1)
+ fun_l11_n31(x)
+ else
+ fun_l11_n791(x)
+ end
+end
+
+def fun_l10_n294(x)
+ if (x < 1)
+ fun_l11_n29(x)
+ else
+ fun_l11_n377(x)
+ end
+end
+
+def fun_l10_n295(x)
+ if (x < 1)
+ fun_l11_n509(x)
+ else
+ fun_l11_n900(x)
+ end
+end
+
+def fun_l10_n296(x)
+ if (x < 1)
+ fun_l11_n594(x)
+ else
+ fun_l11_n835(x)
+ end
+end
+
+def fun_l10_n297(x)
+ if (x < 1)
+ fun_l11_n943(x)
+ else
+ fun_l11_n621(x)
+ end
+end
+
+def fun_l10_n298(x)
+ if (x < 1)
+ fun_l11_n860(x)
+ else
+ fun_l11_n403(x)
+ end
+end
+
+def fun_l10_n299(x)
+ if (x < 1)
+ fun_l11_n676(x)
+ else
+ fun_l11_n478(x)
+ end
+end
+
+def fun_l10_n300(x)
+ if (x < 1)
+ fun_l11_n513(x)
+ else
+ fun_l11_n661(x)
+ end
+end
+
+def fun_l10_n301(x)
+ if (x < 1)
+ fun_l11_n513(x)
+ else
+ fun_l11_n30(x)
+ end
+end
+
+def fun_l10_n302(x)
+ if (x < 1)
+ fun_l11_n763(x)
+ else
+ fun_l11_n823(x)
+ end
+end
+
+def fun_l10_n303(x)
+ if (x < 1)
+ fun_l11_n469(x)
+ else
+ fun_l11_n250(x)
+ end
+end
+
+def fun_l10_n304(x)
+ if (x < 1)
+ fun_l11_n637(x)
+ else
+ fun_l11_n478(x)
+ end
+end
+
+def fun_l10_n305(x)
+ if (x < 1)
+ fun_l11_n825(x)
+ else
+ fun_l11_n258(x)
+ end
+end
+
+def fun_l10_n306(x)
+ if (x < 1)
+ fun_l11_n264(x)
+ else
+ fun_l11_n698(x)
+ end
+end
+
+def fun_l10_n307(x)
+ if (x < 1)
+ fun_l11_n426(x)
+ else
+ fun_l11_n490(x)
+ end
+end
+
+def fun_l10_n308(x)
+ if (x < 1)
+ fun_l11_n157(x)
+ else
+ fun_l11_n407(x)
+ end
+end
+
+def fun_l10_n309(x)
+ if (x < 1)
+ fun_l11_n68(x)
+ else
+ fun_l11_n424(x)
+ end
+end
+
+def fun_l10_n310(x)
+ if (x < 1)
+ fun_l11_n844(x)
+ else
+ fun_l11_n955(x)
+ end
+end
+
+def fun_l10_n311(x)
+ if (x < 1)
+ fun_l11_n316(x)
+ else
+ fun_l11_n27(x)
+ end
+end
+
+def fun_l10_n312(x)
+ if (x < 1)
+ fun_l11_n771(x)
+ else
+ fun_l11_n604(x)
+ end
+end
+
+def fun_l10_n313(x)
+ if (x < 1)
+ fun_l11_n436(x)
+ else
+ fun_l11_n714(x)
+ end
+end
+
+def fun_l10_n314(x)
+ if (x < 1)
+ fun_l11_n791(x)
+ else
+ fun_l11_n889(x)
+ end
+end
+
+def fun_l10_n315(x)
+ if (x < 1)
+ fun_l11_n621(x)
+ else
+ fun_l11_n694(x)
+ end
+end
+
+def fun_l10_n316(x)
+ if (x < 1)
+ fun_l11_n403(x)
+ else
+ fun_l11_n625(x)
+ end
+end
+
+def fun_l10_n317(x)
+ if (x < 1)
+ fun_l11_n532(x)
+ else
+ fun_l11_n920(x)
+ end
+end
+
+def fun_l10_n318(x)
+ if (x < 1)
+ fun_l11_n895(x)
+ else
+ fun_l11_n781(x)
+ end
+end
+
+def fun_l10_n319(x)
+ if (x < 1)
+ fun_l11_n109(x)
+ else
+ fun_l11_n254(x)
+ end
+end
+
+def fun_l10_n320(x)
+ if (x < 1)
+ fun_l11_n842(x)
+ else
+ fun_l11_n879(x)
+ end
+end
+
+def fun_l10_n321(x)
+ if (x < 1)
+ fun_l11_n655(x)
+ else
+ fun_l11_n518(x)
+ end
+end
+
+def fun_l10_n322(x)
+ if (x < 1)
+ fun_l11_n727(x)
+ else
+ fun_l11_n14(x)
+ end
+end
+
+def fun_l10_n323(x)
+ if (x < 1)
+ fun_l11_n808(x)
+ else
+ fun_l11_n128(x)
+ end
+end
+
+def fun_l10_n324(x)
+ if (x < 1)
+ fun_l11_n412(x)
+ else
+ fun_l11_n940(x)
+ end
+end
+
+def fun_l10_n325(x)
+ if (x < 1)
+ fun_l11_n944(x)
+ else
+ fun_l11_n915(x)
+ end
+end
+
+def fun_l10_n326(x)
+ if (x < 1)
+ fun_l11_n120(x)
+ else
+ fun_l11_n572(x)
+ end
+end
+
+def fun_l10_n327(x)
+ if (x < 1)
+ fun_l11_n444(x)
+ else
+ fun_l11_n793(x)
+ end
+end
+
+def fun_l10_n328(x)
+ if (x < 1)
+ fun_l11_n892(x)
+ else
+ fun_l11_n475(x)
+ end
+end
+
+def fun_l10_n329(x)
+ if (x < 1)
+ fun_l11_n919(x)
+ else
+ fun_l11_n183(x)
+ end
+end
+
+def fun_l10_n330(x)
+ if (x < 1)
+ fun_l11_n80(x)
+ else
+ fun_l11_n357(x)
+ end
+end
+
+def fun_l10_n331(x)
+ if (x < 1)
+ fun_l11_n340(x)
+ else
+ fun_l11_n349(x)
+ end
+end
+
+def fun_l10_n332(x)
+ if (x < 1)
+ fun_l11_n579(x)
+ else
+ fun_l11_n845(x)
+ end
+end
+
+def fun_l10_n333(x)
+ if (x < 1)
+ fun_l11_n169(x)
+ else
+ fun_l11_n583(x)
+ end
+end
+
+def fun_l10_n334(x)
+ if (x < 1)
+ fun_l11_n544(x)
+ else
+ fun_l11_n462(x)
+ end
+end
+
+def fun_l10_n335(x)
+ if (x < 1)
+ fun_l11_n51(x)
+ else
+ fun_l11_n635(x)
+ end
+end
+
+def fun_l10_n336(x)
+ if (x < 1)
+ fun_l11_n965(x)
+ else
+ fun_l11_n538(x)
+ end
+end
+
+def fun_l10_n337(x)
+ if (x < 1)
+ fun_l11_n930(x)
+ else
+ fun_l11_n169(x)
+ end
+end
+
+def fun_l10_n338(x)
+ if (x < 1)
+ fun_l11_n732(x)
+ else
+ fun_l11_n574(x)
+ end
+end
+
+def fun_l10_n339(x)
+ if (x < 1)
+ fun_l11_n51(x)
+ else
+ fun_l11_n141(x)
+ end
+end
+
+def fun_l10_n340(x)
+ if (x < 1)
+ fun_l11_n149(x)
+ else
+ fun_l11_n346(x)
+ end
+end
+
+def fun_l10_n341(x)
+ if (x < 1)
+ fun_l11_n163(x)
+ else
+ fun_l11_n224(x)
+ end
+end
+
+def fun_l10_n342(x)
+ if (x < 1)
+ fun_l11_n175(x)
+ else
+ fun_l11_n40(x)
+ end
+end
+
+def fun_l10_n343(x)
+ if (x < 1)
+ fun_l11_n156(x)
+ else
+ fun_l11_n639(x)
+ end
+end
+
+def fun_l10_n344(x)
+ if (x < 1)
+ fun_l11_n934(x)
+ else
+ fun_l11_n85(x)
+ end
+end
+
+def fun_l10_n345(x)
+ if (x < 1)
+ fun_l11_n182(x)
+ else
+ fun_l11_n190(x)
+ end
+end
+
+def fun_l10_n346(x)
+ if (x < 1)
+ fun_l11_n879(x)
+ else
+ fun_l11_n702(x)
+ end
+end
+
+def fun_l10_n347(x)
+ if (x < 1)
+ fun_l11_n540(x)
+ else
+ fun_l11_n689(x)
+ end
+end
+
+def fun_l10_n348(x)
+ if (x < 1)
+ fun_l11_n945(x)
+ else
+ fun_l11_n39(x)
+ end
+end
+
+def fun_l10_n349(x)
+ if (x < 1)
+ fun_l11_n683(x)
+ else
+ fun_l11_n688(x)
+ end
+end
+
+def fun_l10_n350(x)
+ if (x < 1)
+ fun_l11_n750(x)
+ else
+ fun_l11_n577(x)
+ end
+end
+
+def fun_l10_n351(x)
+ if (x < 1)
+ fun_l11_n74(x)
+ else
+ fun_l11_n672(x)
+ end
+end
+
+def fun_l10_n352(x)
+ if (x < 1)
+ fun_l11_n252(x)
+ else
+ fun_l11_n766(x)
+ end
+end
+
+def fun_l10_n353(x)
+ if (x < 1)
+ fun_l11_n702(x)
+ else
+ fun_l11_n516(x)
+ end
+end
+
+def fun_l10_n354(x)
+ if (x < 1)
+ fun_l11_n19(x)
+ else
+ fun_l11_n290(x)
+ end
+end
+
+def fun_l10_n355(x)
+ if (x < 1)
+ fun_l11_n70(x)
+ else
+ fun_l11_n553(x)
+ end
+end
+
+def fun_l10_n356(x)
+ if (x < 1)
+ fun_l11_n654(x)
+ else
+ fun_l11_n108(x)
+ end
+end
+
+def fun_l10_n357(x)
+ if (x < 1)
+ fun_l11_n820(x)
+ else
+ fun_l11_n320(x)
+ end
+end
+
+def fun_l10_n358(x)
+ if (x < 1)
+ fun_l11_n417(x)
+ else
+ fun_l11_n290(x)
+ end
+end
+
+def fun_l10_n359(x)
+ if (x < 1)
+ fun_l11_n832(x)
+ else
+ fun_l11_n647(x)
+ end
+end
+
+def fun_l10_n360(x)
+ if (x < 1)
+ fun_l11_n625(x)
+ else
+ fun_l11_n723(x)
+ end
+end
+
+def fun_l10_n361(x)
+ if (x < 1)
+ fun_l11_n257(x)
+ else
+ fun_l11_n991(x)
+ end
+end
+
+def fun_l10_n362(x)
+ if (x < 1)
+ fun_l11_n101(x)
+ else
+ fun_l11_n247(x)
+ end
+end
+
+def fun_l10_n363(x)
+ if (x < 1)
+ fun_l11_n484(x)
+ else
+ fun_l11_n953(x)
+ end
+end
+
+def fun_l10_n364(x)
+ if (x < 1)
+ fun_l11_n281(x)
+ else
+ fun_l11_n846(x)
+ end
+end
+
+def fun_l10_n365(x)
+ if (x < 1)
+ fun_l11_n425(x)
+ else
+ fun_l11_n772(x)
+ end
+end
+
+def fun_l10_n366(x)
+ if (x < 1)
+ fun_l11_n724(x)
+ else
+ fun_l11_n725(x)
+ end
+end
+
+def fun_l10_n367(x)
+ if (x < 1)
+ fun_l11_n943(x)
+ else
+ fun_l11_n360(x)
+ end
+end
+
+def fun_l10_n368(x)
+ if (x < 1)
+ fun_l11_n874(x)
+ else
+ fun_l11_n698(x)
+ end
+end
+
+def fun_l10_n369(x)
+ if (x < 1)
+ fun_l11_n419(x)
+ else
+ fun_l11_n672(x)
+ end
+end
+
+def fun_l10_n370(x)
+ if (x < 1)
+ fun_l11_n655(x)
+ else
+ fun_l11_n468(x)
+ end
+end
+
+def fun_l10_n371(x)
+ if (x < 1)
+ fun_l11_n577(x)
+ else
+ fun_l11_n402(x)
+ end
+end
+
+def fun_l10_n372(x)
+ if (x < 1)
+ fun_l11_n531(x)
+ else
+ fun_l11_n319(x)
+ end
+end
+
+def fun_l10_n373(x)
+ if (x < 1)
+ fun_l11_n972(x)
+ else
+ fun_l11_n901(x)
+ end
+end
+
+def fun_l10_n374(x)
+ if (x < 1)
+ fun_l11_n59(x)
+ else
+ fun_l11_n12(x)
+ end
+end
+
+def fun_l10_n375(x)
+ if (x < 1)
+ fun_l11_n409(x)
+ else
+ fun_l11_n214(x)
+ end
+end
+
+def fun_l10_n376(x)
+ if (x < 1)
+ fun_l11_n52(x)
+ else
+ fun_l11_n395(x)
+ end
+end
+
+def fun_l10_n377(x)
+ if (x < 1)
+ fun_l11_n594(x)
+ else
+ fun_l11_n434(x)
+ end
+end
+
+def fun_l10_n378(x)
+ if (x < 1)
+ fun_l11_n795(x)
+ else
+ fun_l11_n820(x)
+ end
+end
+
+def fun_l10_n379(x)
+ if (x < 1)
+ fun_l11_n962(x)
+ else
+ fun_l11_n111(x)
+ end
+end
+
+def fun_l10_n380(x)
+ if (x < 1)
+ fun_l11_n762(x)
+ else
+ fun_l11_n678(x)
+ end
+end
+
+def fun_l10_n381(x)
+ if (x < 1)
+ fun_l11_n324(x)
+ else
+ fun_l11_n478(x)
+ end
+end
+
+def fun_l10_n382(x)
+ if (x < 1)
+ fun_l11_n360(x)
+ else
+ fun_l11_n35(x)
+ end
+end
+
+def fun_l10_n383(x)
+ if (x < 1)
+ fun_l11_n710(x)
+ else
+ fun_l11_n898(x)
+ end
+end
+
+def fun_l10_n384(x)
+ if (x < 1)
+ fun_l11_n584(x)
+ else
+ fun_l11_n260(x)
+ end
+end
+
+def fun_l10_n385(x)
+ if (x < 1)
+ fun_l11_n514(x)
+ else
+ fun_l11_n649(x)
+ end
+end
+
+def fun_l10_n386(x)
+ if (x < 1)
+ fun_l11_n426(x)
+ else
+ fun_l11_n391(x)
+ end
+end
+
+def fun_l10_n387(x)
+ if (x < 1)
+ fun_l11_n713(x)
+ else
+ fun_l11_n734(x)
+ end
+end
+
+def fun_l10_n388(x)
+ if (x < 1)
+ fun_l11_n236(x)
+ else
+ fun_l11_n469(x)
+ end
+end
+
+def fun_l10_n389(x)
+ if (x < 1)
+ fun_l11_n267(x)
+ else
+ fun_l11_n965(x)
+ end
+end
+
+def fun_l10_n390(x)
+ if (x < 1)
+ fun_l11_n943(x)
+ else
+ fun_l11_n181(x)
+ end
+end
+
+def fun_l10_n391(x)
+ if (x < 1)
+ fun_l11_n869(x)
+ else
+ fun_l11_n348(x)
+ end
+end
+
+def fun_l10_n392(x)
+ if (x < 1)
+ fun_l11_n144(x)
+ else
+ fun_l11_n801(x)
+ end
+end
+
+def fun_l10_n393(x)
+ if (x < 1)
+ fun_l11_n907(x)
+ else
+ fun_l11_n609(x)
+ end
+end
+
+def fun_l10_n394(x)
+ if (x < 1)
+ fun_l11_n801(x)
+ else
+ fun_l11_n691(x)
+ end
+end
+
+def fun_l10_n395(x)
+ if (x < 1)
+ fun_l11_n629(x)
+ else
+ fun_l11_n924(x)
+ end
+end
+
+def fun_l10_n396(x)
+ if (x < 1)
+ fun_l11_n191(x)
+ else
+ fun_l11_n248(x)
+ end
+end
+
+def fun_l10_n397(x)
+ if (x < 1)
+ fun_l11_n339(x)
+ else
+ fun_l11_n805(x)
+ end
+end
+
+def fun_l10_n398(x)
+ if (x < 1)
+ fun_l11_n798(x)
+ else
+ fun_l11_n154(x)
+ end
+end
+
+def fun_l10_n399(x)
+ if (x < 1)
+ fun_l11_n847(x)
+ else
+ fun_l11_n14(x)
+ end
+end
+
+def fun_l10_n400(x)
+ if (x < 1)
+ fun_l11_n296(x)
+ else
+ fun_l11_n144(x)
+ end
+end
+
+def fun_l10_n401(x)
+ if (x < 1)
+ fun_l11_n853(x)
+ else
+ fun_l11_n156(x)
+ end
+end
+
+def fun_l10_n402(x)
+ if (x < 1)
+ fun_l11_n54(x)
+ else
+ fun_l11_n944(x)
+ end
+end
+
+def fun_l10_n403(x)
+ if (x < 1)
+ fun_l11_n617(x)
+ else
+ fun_l11_n324(x)
+ end
+end
+
+def fun_l10_n404(x)
+ if (x < 1)
+ fun_l11_n962(x)
+ else
+ fun_l11_n139(x)
+ end
+end
+
+def fun_l10_n405(x)
+ if (x < 1)
+ fun_l11_n466(x)
+ else
+ fun_l11_n388(x)
+ end
+end
+
+def fun_l10_n406(x)
+ if (x < 1)
+ fun_l11_n914(x)
+ else
+ fun_l11_n847(x)
+ end
+end
+
+def fun_l10_n407(x)
+ if (x < 1)
+ fun_l11_n741(x)
+ else
+ fun_l11_n757(x)
+ end
+end
+
+def fun_l10_n408(x)
+ if (x < 1)
+ fun_l11_n36(x)
+ else
+ fun_l11_n312(x)
+ end
+end
+
+def fun_l10_n409(x)
+ if (x < 1)
+ fun_l11_n203(x)
+ else
+ fun_l11_n523(x)
+ end
+end
+
+def fun_l10_n410(x)
+ if (x < 1)
+ fun_l11_n187(x)
+ else
+ fun_l11_n291(x)
+ end
+end
+
+def fun_l10_n411(x)
+ if (x < 1)
+ fun_l11_n13(x)
+ else
+ fun_l11_n107(x)
+ end
+end
+
+def fun_l10_n412(x)
+ if (x < 1)
+ fun_l11_n960(x)
+ else
+ fun_l11_n565(x)
+ end
+end
+
+def fun_l10_n413(x)
+ if (x < 1)
+ fun_l11_n549(x)
+ else
+ fun_l11_n885(x)
+ end
+end
+
+def fun_l10_n414(x)
+ if (x < 1)
+ fun_l11_n559(x)
+ else
+ fun_l11_n612(x)
+ end
+end
+
+def fun_l10_n415(x)
+ if (x < 1)
+ fun_l11_n18(x)
+ else
+ fun_l11_n167(x)
+ end
+end
+
+def fun_l10_n416(x)
+ if (x < 1)
+ fun_l11_n125(x)
+ else
+ fun_l11_n206(x)
+ end
+end
+
+def fun_l10_n417(x)
+ if (x < 1)
+ fun_l11_n980(x)
+ else
+ fun_l11_n497(x)
+ end
+end
+
+def fun_l10_n418(x)
+ if (x < 1)
+ fun_l11_n703(x)
+ else
+ fun_l11_n49(x)
+ end
+end
+
+def fun_l10_n419(x)
+ if (x < 1)
+ fun_l11_n690(x)
+ else
+ fun_l11_n63(x)
+ end
+end
+
+def fun_l10_n420(x)
+ if (x < 1)
+ fun_l11_n219(x)
+ else
+ fun_l11_n814(x)
+ end
+end
+
+def fun_l10_n421(x)
+ if (x < 1)
+ fun_l11_n864(x)
+ else
+ fun_l11_n963(x)
+ end
+end
+
+def fun_l10_n422(x)
+ if (x < 1)
+ fun_l11_n672(x)
+ else
+ fun_l11_n87(x)
+ end
+end
+
+def fun_l10_n423(x)
+ if (x < 1)
+ fun_l11_n41(x)
+ else
+ fun_l11_n461(x)
+ end
+end
+
+def fun_l10_n424(x)
+ if (x < 1)
+ fun_l11_n334(x)
+ else
+ fun_l11_n283(x)
+ end
+end
+
+def fun_l10_n425(x)
+ if (x < 1)
+ fun_l11_n369(x)
+ else
+ fun_l11_n269(x)
+ end
+end
+
+def fun_l10_n426(x)
+ if (x < 1)
+ fun_l11_n832(x)
+ else
+ fun_l11_n625(x)
+ end
+end
+
+def fun_l10_n427(x)
+ if (x < 1)
+ fun_l11_n272(x)
+ else
+ fun_l11_n634(x)
+ end
+end
+
+def fun_l10_n428(x)
+ if (x < 1)
+ fun_l11_n122(x)
+ else
+ fun_l11_n53(x)
+ end
+end
+
+def fun_l10_n429(x)
+ if (x < 1)
+ fun_l11_n895(x)
+ else
+ fun_l11_n292(x)
+ end
+end
+
+def fun_l10_n430(x)
+ if (x < 1)
+ fun_l11_n460(x)
+ else
+ fun_l11_n177(x)
+ end
+end
+
+def fun_l10_n431(x)
+ if (x < 1)
+ fun_l11_n238(x)
+ else
+ fun_l11_n938(x)
+ end
+end
+
+def fun_l10_n432(x)
+ if (x < 1)
+ fun_l11_n302(x)
+ else
+ fun_l11_n492(x)
+ end
+end
+
+def fun_l10_n433(x)
+ if (x < 1)
+ fun_l11_n307(x)
+ else
+ fun_l11_n876(x)
+ end
+end
+
+def fun_l10_n434(x)
+ if (x < 1)
+ fun_l11_n64(x)
+ else
+ fun_l11_n892(x)
+ end
+end
+
+def fun_l10_n435(x)
+ if (x < 1)
+ fun_l11_n940(x)
+ else
+ fun_l11_n718(x)
+ end
+end
+
+def fun_l10_n436(x)
+ if (x < 1)
+ fun_l11_n988(x)
+ else
+ fun_l11_n216(x)
+ end
+end
+
+def fun_l10_n437(x)
+ if (x < 1)
+ fun_l11_n282(x)
+ else
+ fun_l11_n168(x)
+ end
+end
+
+def fun_l10_n438(x)
+ if (x < 1)
+ fun_l11_n529(x)
+ else
+ fun_l11_n66(x)
+ end
+end
+
+def fun_l10_n439(x)
+ if (x < 1)
+ fun_l11_n286(x)
+ else
+ fun_l11_n134(x)
+ end
+end
+
+def fun_l10_n440(x)
+ if (x < 1)
+ fun_l11_n454(x)
+ else
+ fun_l11_n873(x)
+ end
+end
+
+def fun_l10_n441(x)
+ if (x < 1)
+ fun_l11_n871(x)
+ else
+ fun_l11_n13(x)
+ end
+end
+
+def fun_l10_n442(x)
+ if (x < 1)
+ fun_l11_n314(x)
+ else
+ fun_l11_n685(x)
+ end
+end
+
+def fun_l10_n443(x)
+ if (x < 1)
+ fun_l11_n752(x)
+ else
+ fun_l11_n162(x)
+ end
+end
+
+def fun_l10_n444(x)
+ if (x < 1)
+ fun_l11_n686(x)
+ else
+ fun_l11_n585(x)
+ end
+end
+
+def fun_l10_n445(x)
+ if (x < 1)
+ fun_l11_n42(x)
+ else
+ fun_l11_n932(x)
+ end
+end
+
+def fun_l10_n446(x)
+ if (x < 1)
+ fun_l11_n433(x)
+ else
+ fun_l11_n241(x)
+ end
+end
+
+def fun_l10_n447(x)
+ if (x < 1)
+ fun_l11_n99(x)
+ else
+ fun_l11_n563(x)
+ end
+end
+
+def fun_l10_n448(x)
+ if (x < 1)
+ fun_l11_n463(x)
+ else
+ fun_l11_n395(x)
+ end
+end
+
+def fun_l10_n449(x)
+ if (x < 1)
+ fun_l11_n393(x)
+ else
+ fun_l11_n151(x)
+ end
+end
+
+def fun_l10_n450(x)
+ if (x < 1)
+ fun_l11_n255(x)
+ else
+ fun_l11_n834(x)
+ end
+end
+
+def fun_l10_n451(x)
+ if (x < 1)
+ fun_l11_n195(x)
+ else
+ fun_l11_n0(x)
+ end
+end
+
+def fun_l10_n452(x)
+ if (x < 1)
+ fun_l11_n372(x)
+ else
+ fun_l11_n228(x)
+ end
+end
+
+def fun_l10_n453(x)
+ if (x < 1)
+ fun_l11_n526(x)
+ else
+ fun_l11_n54(x)
+ end
+end
+
+def fun_l10_n454(x)
+ if (x < 1)
+ fun_l11_n594(x)
+ else
+ fun_l11_n116(x)
+ end
+end
+
+def fun_l10_n455(x)
+ if (x < 1)
+ fun_l11_n25(x)
+ else
+ fun_l11_n930(x)
+ end
+end
+
+def fun_l10_n456(x)
+ if (x < 1)
+ fun_l11_n83(x)
+ else
+ fun_l11_n30(x)
+ end
+end
+
+def fun_l10_n457(x)
+ if (x < 1)
+ fun_l11_n644(x)
+ else
+ fun_l11_n837(x)
+ end
+end
+
+def fun_l10_n458(x)
+ if (x < 1)
+ fun_l11_n311(x)
+ else
+ fun_l11_n86(x)
+ end
+end
+
+def fun_l10_n459(x)
+ if (x < 1)
+ fun_l11_n139(x)
+ else
+ fun_l11_n735(x)
+ end
+end
+
+def fun_l10_n460(x)
+ if (x < 1)
+ fun_l11_n431(x)
+ else
+ fun_l11_n808(x)
+ end
+end
+
+def fun_l10_n461(x)
+ if (x < 1)
+ fun_l11_n488(x)
+ else
+ fun_l11_n439(x)
+ end
+end
+
+def fun_l10_n462(x)
+ if (x < 1)
+ fun_l11_n448(x)
+ else
+ fun_l11_n882(x)
+ end
+end
+
+def fun_l10_n463(x)
+ if (x < 1)
+ fun_l11_n362(x)
+ else
+ fun_l11_n875(x)
+ end
+end
+
+def fun_l10_n464(x)
+ if (x < 1)
+ fun_l11_n88(x)
+ else
+ fun_l11_n842(x)
+ end
+end
+
+def fun_l10_n465(x)
+ if (x < 1)
+ fun_l11_n651(x)
+ else
+ fun_l11_n368(x)
+ end
+end
+
+def fun_l10_n466(x)
+ if (x < 1)
+ fun_l11_n121(x)
+ else
+ fun_l11_n3(x)
+ end
+end
+
+def fun_l10_n467(x)
+ if (x < 1)
+ fun_l11_n654(x)
+ else
+ fun_l11_n260(x)
+ end
+end
+
+def fun_l10_n468(x)
+ if (x < 1)
+ fun_l11_n765(x)
+ else
+ fun_l11_n604(x)
+ end
+end
+
+def fun_l10_n469(x)
+ if (x < 1)
+ fun_l11_n881(x)
+ else
+ fun_l11_n567(x)
+ end
+end
+
+def fun_l10_n470(x)
+ if (x < 1)
+ fun_l11_n41(x)
+ else
+ fun_l11_n92(x)
+ end
+end
+
+def fun_l10_n471(x)
+ if (x < 1)
+ fun_l11_n905(x)
+ else
+ fun_l11_n731(x)
+ end
+end
+
+def fun_l10_n472(x)
+ if (x < 1)
+ fun_l11_n797(x)
+ else
+ fun_l11_n878(x)
+ end
+end
+
+def fun_l10_n473(x)
+ if (x < 1)
+ fun_l11_n487(x)
+ else
+ fun_l11_n951(x)
+ end
+end
+
+def fun_l10_n474(x)
+ if (x < 1)
+ fun_l11_n998(x)
+ else
+ fun_l11_n900(x)
+ end
+end
+
+def fun_l10_n475(x)
+ if (x < 1)
+ fun_l11_n451(x)
+ else
+ fun_l11_n780(x)
+ end
+end
+
+def fun_l10_n476(x)
+ if (x < 1)
+ fun_l11_n427(x)
+ else
+ fun_l11_n760(x)
+ end
+end
+
+def fun_l10_n477(x)
+ if (x < 1)
+ fun_l11_n758(x)
+ else
+ fun_l11_n177(x)
+ end
+end
+
+def fun_l10_n478(x)
+ if (x < 1)
+ fun_l11_n359(x)
+ else
+ fun_l11_n236(x)
+ end
+end
+
+def fun_l10_n479(x)
+ if (x < 1)
+ fun_l11_n70(x)
+ else
+ fun_l11_n49(x)
+ end
+end
+
+def fun_l10_n480(x)
+ if (x < 1)
+ fun_l11_n338(x)
+ else
+ fun_l11_n714(x)
+ end
+end
+
+def fun_l10_n481(x)
+ if (x < 1)
+ fun_l11_n6(x)
+ else
+ fun_l11_n194(x)
+ end
+end
+
+def fun_l10_n482(x)
+ if (x < 1)
+ fun_l11_n801(x)
+ else
+ fun_l11_n591(x)
+ end
+end
+
+def fun_l10_n483(x)
+ if (x < 1)
+ fun_l11_n362(x)
+ else
+ fun_l11_n687(x)
+ end
+end
+
+def fun_l10_n484(x)
+ if (x < 1)
+ fun_l11_n659(x)
+ else
+ fun_l11_n661(x)
+ end
+end
+
+def fun_l10_n485(x)
+ if (x < 1)
+ fun_l11_n903(x)
+ else
+ fun_l11_n419(x)
+ end
+end
+
+def fun_l10_n486(x)
+ if (x < 1)
+ fun_l11_n279(x)
+ else
+ fun_l11_n995(x)
+ end
+end
+
+def fun_l10_n487(x)
+ if (x < 1)
+ fun_l11_n529(x)
+ else
+ fun_l11_n373(x)
+ end
+end
+
+def fun_l10_n488(x)
+ if (x < 1)
+ fun_l11_n198(x)
+ else
+ fun_l11_n899(x)
+ end
+end
+
+def fun_l10_n489(x)
+ if (x < 1)
+ fun_l11_n174(x)
+ else
+ fun_l11_n485(x)
+ end
+end
+
+def fun_l10_n490(x)
+ if (x < 1)
+ fun_l11_n19(x)
+ else
+ fun_l11_n322(x)
+ end
+end
+
+def fun_l10_n491(x)
+ if (x < 1)
+ fun_l11_n0(x)
+ else
+ fun_l11_n855(x)
+ end
+end
+
+def fun_l10_n492(x)
+ if (x < 1)
+ fun_l11_n126(x)
+ else
+ fun_l11_n986(x)
+ end
+end
+
+def fun_l10_n493(x)
+ if (x < 1)
+ fun_l11_n263(x)
+ else
+ fun_l11_n374(x)
+ end
+end
+
+def fun_l10_n494(x)
+ if (x < 1)
+ fun_l11_n21(x)
+ else
+ fun_l11_n749(x)
+ end
+end
+
+def fun_l10_n495(x)
+ if (x < 1)
+ fun_l11_n618(x)
+ else
+ fun_l11_n955(x)
+ end
+end
+
+def fun_l10_n496(x)
+ if (x < 1)
+ fun_l11_n157(x)
+ else
+ fun_l11_n230(x)
+ end
+end
+
+def fun_l10_n497(x)
+ if (x < 1)
+ fun_l11_n387(x)
+ else
+ fun_l11_n841(x)
+ end
+end
+
+def fun_l10_n498(x)
+ if (x < 1)
+ fun_l11_n496(x)
+ else
+ fun_l11_n30(x)
+ end
+end
+
+def fun_l10_n499(x)
+ if (x < 1)
+ fun_l11_n581(x)
+ else
+ fun_l11_n821(x)
+ end
+end
+
+def fun_l10_n500(x)
+ if (x < 1)
+ fun_l11_n202(x)
+ else
+ fun_l11_n26(x)
+ end
+end
+
+def fun_l10_n501(x)
+ if (x < 1)
+ fun_l11_n273(x)
+ else
+ fun_l11_n294(x)
+ end
+end
+
+def fun_l10_n502(x)
+ if (x < 1)
+ fun_l11_n604(x)
+ else
+ fun_l11_n261(x)
+ end
+end
+
+def fun_l10_n503(x)
+ if (x < 1)
+ fun_l11_n632(x)
+ else
+ fun_l11_n340(x)
+ end
+end
+
+def fun_l10_n504(x)
+ if (x < 1)
+ fun_l11_n162(x)
+ else
+ fun_l11_n483(x)
+ end
+end
+
+def fun_l10_n505(x)
+ if (x < 1)
+ fun_l11_n824(x)
+ else
+ fun_l11_n747(x)
+ end
+end
+
+def fun_l10_n506(x)
+ if (x < 1)
+ fun_l11_n575(x)
+ else
+ fun_l11_n932(x)
+ end
+end
+
+def fun_l10_n507(x)
+ if (x < 1)
+ fun_l11_n645(x)
+ else
+ fun_l11_n486(x)
+ end
+end
+
+def fun_l10_n508(x)
+ if (x < 1)
+ fun_l11_n876(x)
+ else
+ fun_l11_n640(x)
+ end
+end
+
+def fun_l10_n509(x)
+ if (x < 1)
+ fun_l11_n280(x)
+ else
+ fun_l11_n116(x)
+ end
+end
+
+def fun_l10_n510(x)
+ if (x < 1)
+ fun_l11_n570(x)
+ else
+ fun_l11_n640(x)
+ end
+end
+
+def fun_l10_n511(x)
+ if (x < 1)
+ fun_l11_n576(x)
+ else
+ fun_l11_n124(x)
+ end
+end
+
+def fun_l10_n512(x)
+ if (x < 1)
+ fun_l11_n328(x)
+ else
+ fun_l11_n880(x)
+ end
+end
+
+def fun_l10_n513(x)
+ if (x < 1)
+ fun_l11_n185(x)
+ else
+ fun_l11_n977(x)
+ end
+end
+
+def fun_l10_n514(x)
+ if (x < 1)
+ fun_l11_n560(x)
+ else
+ fun_l11_n825(x)
+ end
+end
+
+def fun_l10_n515(x)
+ if (x < 1)
+ fun_l11_n28(x)
+ else
+ fun_l11_n908(x)
+ end
+end
+
+def fun_l10_n516(x)
+ if (x < 1)
+ fun_l11_n902(x)
+ else
+ fun_l11_n882(x)
+ end
+end
+
+def fun_l10_n517(x)
+ if (x < 1)
+ fun_l11_n429(x)
+ else
+ fun_l11_n824(x)
+ end
+end
+
+def fun_l10_n518(x)
+ if (x < 1)
+ fun_l11_n706(x)
+ else
+ fun_l11_n149(x)
+ end
+end
+
+def fun_l10_n519(x)
+ if (x < 1)
+ fun_l11_n837(x)
+ else
+ fun_l11_n573(x)
+ end
+end
+
+def fun_l10_n520(x)
+ if (x < 1)
+ fun_l11_n934(x)
+ else
+ fun_l11_n504(x)
+ end
+end
+
+def fun_l10_n521(x)
+ if (x < 1)
+ fun_l11_n254(x)
+ else
+ fun_l11_n551(x)
+ end
+end
+
+def fun_l10_n522(x)
+ if (x < 1)
+ fun_l11_n53(x)
+ else
+ fun_l11_n297(x)
+ end
+end
+
+def fun_l10_n523(x)
+ if (x < 1)
+ fun_l11_n648(x)
+ else
+ fun_l11_n695(x)
+ end
+end
+
+def fun_l10_n524(x)
+ if (x < 1)
+ fun_l11_n737(x)
+ else
+ fun_l11_n636(x)
+ end
+end
+
+def fun_l10_n525(x)
+ if (x < 1)
+ fun_l11_n249(x)
+ else
+ fun_l11_n757(x)
+ end
+end
+
+def fun_l10_n526(x)
+ if (x < 1)
+ fun_l11_n42(x)
+ else
+ fun_l11_n199(x)
+ end
+end
+
+def fun_l10_n527(x)
+ if (x < 1)
+ fun_l11_n783(x)
+ else
+ fun_l11_n856(x)
+ end
+end
+
+def fun_l10_n528(x)
+ if (x < 1)
+ fun_l11_n708(x)
+ else
+ fun_l11_n550(x)
+ end
+end
+
+def fun_l10_n529(x)
+ if (x < 1)
+ fun_l11_n749(x)
+ else
+ fun_l11_n56(x)
+ end
+end
+
+def fun_l10_n530(x)
+ if (x < 1)
+ fun_l11_n838(x)
+ else
+ fun_l11_n57(x)
+ end
+end
+
+def fun_l10_n531(x)
+ if (x < 1)
+ fun_l11_n293(x)
+ else
+ fun_l11_n938(x)
+ end
+end
+
+def fun_l10_n532(x)
+ if (x < 1)
+ fun_l11_n245(x)
+ else
+ fun_l11_n367(x)
+ end
+end
+
+def fun_l10_n533(x)
+ if (x < 1)
+ fun_l11_n255(x)
+ else
+ fun_l11_n234(x)
+ end
+end
+
+def fun_l10_n534(x)
+ if (x < 1)
+ fun_l11_n315(x)
+ else
+ fun_l11_n982(x)
+ end
+end
+
+def fun_l10_n535(x)
+ if (x < 1)
+ fun_l11_n841(x)
+ else
+ fun_l11_n112(x)
+ end
+end
+
+def fun_l10_n536(x)
+ if (x < 1)
+ fun_l11_n481(x)
+ else
+ fun_l11_n622(x)
+ end
+end
+
+def fun_l10_n537(x)
+ if (x < 1)
+ fun_l11_n666(x)
+ else
+ fun_l11_n775(x)
+ end
+end
+
+def fun_l10_n538(x)
+ if (x < 1)
+ fun_l11_n409(x)
+ else
+ fun_l11_n733(x)
+ end
+end
+
+def fun_l10_n539(x)
+ if (x < 1)
+ fun_l11_n633(x)
+ else
+ fun_l11_n122(x)
+ end
+end
+
+def fun_l10_n540(x)
+ if (x < 1)
+ fun_l11_n453(x)
+ else
+ fun_l11_n938(x)
+ end
+end
+
+def fun_l10_n541(x)
+ if (x < 1)
+ fun_l11_n55(x)
+ else
+ fun_l11_n344(x)
+ end
+end
+
+def fun_l10_n542(x)
+ if (x < 1)
+ fun_l11_n167(x)
+ else
+ fun_l11_n908(x)
+ end
+end
+
+def fun_l10_n543(x)
+ if (x < 1)
+ fun_l11_n318(x)
+ else
+ fun_l11_n893(x)
+ end
+end
+
+def fun_l10_n544(x)
+ if (x < 1)
+ fun_l11_n683(x)
+ else
+ fun_l11_n109(x)
+ end
+end
+
+def fun_l10_n545(x)
+ if (x < 1)
+ fun_l11_n728(x)
+ else
+ fun_l11_n432(x)
+ end
+end
+
+def fun_l10_n546(x)
+ if (x < 1)
+ fun_l11_n343(x)
+ else
+ fun_l11_n674(x)
+ end
+end
+
+def fun_l10_n547(x)
+ if (x < 1)
+ fun_l11_n374(x)
+ else
+ fun_l11_n293(x)
+ end
+end
+
+def fun_l10_n548(x)
+ if (x < 1)
+ fun_l11_n661(x)
+ else
+ fun_l11_n619(x)
+ end
+end
+
+def fun_l10_n549(x)
+ if (x < 1)
+ fun_l11_n984(x)
+ else
+ fun_l11_n261(x)
+ end
+end
+
+def fun_l10_n550(x)
+ if (x < 1)
+ fun_l11_n729(x)
+ else
+ fun_l11_n469(x)
+ end
+end
+
+def fun_l10_n551(x)
+ if (x < 1)
+ fun_l11_n829(x)
+ else
+ fun_l11_n30(x)
+ end
+end
+
+def fun_l10_n552(x)
+ if (x < 1)
+ fun_l11_n457(x)
+ else
+ fun_l11_n440(x)
+ end
+end
+
+def fun_l10_n553(x)
+ if (x < 1)
+ fun_l11_n128(x)
+ else
+ fun_l11_n790(x)
+ end
+end
+
+def fun_l10_n554(x)
+ if (x < 1)
+ fun_l11_n135(x)
+ else
+ fun_l11_n118(x)
+ end
+end
+
+def fun_l10_n555(x)
+ if (x < 1)
+ fun_l11_n558(x)
+ else
+ fun_l11_n415(x)
+ end
+end
+
+def fun_l10_n556(x)
+ if (x < 1)
+ fun_l11_n388(x)
+ else
+ fun_l11_n102(x)
+ end
+end
+
+def fun_l10_n557(x)
+ if (x < 1)
+ fun_l11_n575(x)
+ else
+ fun_l11_n877(x)
+ end
+end
+
+def fun_l10_n558(x)
+ if (x < 1)
+ fun_l11_n266(x)
+ else
+ fun_l11_n216(x)
+ end
+end
+
+def fun_l10_n559(x)
+ if (x < 1)
+ fun_l11_n681(x)
+ else
+ fun_l11_n259(x)
+ end
+end
+
+def fun_l10_n560(x)
+ if (x < 1)
+ fun_l11_n922(x)
+ else
+ fun_l11_n828(x)
+ end
+end
+
+def fun_l10_n561(x)
+ if (x < 1)
+ fun_l11_n135(x)
+ else
+ fun_l11_n971(x)
+ end
+end
+
+def fun_l10_n562(x)
+ if (x < 1)
+ fun_l11_n940(x)
+ else
+ fun_l11_n266(x)
+ end
+end
+
+def fun_l10_n563(x)
+ if (x < 1)
+ fun_l11_n291(x)
+ else
+ fun_l11_n587(x)
+ end
+end
+
+def fun_l10_n564(x)
+ if (x < 1)
+ fun_l11_n143(x)
+ else
+ fun_l11_n289(x)
+ end
+end
+
+def fun_l10_n565(x)
+ if (x < 1)
+ fun_l11_n947(x)
+ else
+ fun_l11_n462(x)
+ end
+end
+
+def fun_l10_n566(x)
+ if (x < 1)
+ fun_l11_n307(x)
+ else
+ fun_l11_n904(x)
+ end
+end
+
+def fun_l10_n567(x)
+ if (x < 1)
+ fun_l11_n945(x)
+ else
+ fun_l11_n814(x)
+ end
+end
+
+def fun_l10_n568(x)
+ if (x < 1)
+ fun_l11_n689(x)
+ else
+ fun_l11_n61(x)
+ end
+end
+
+def fun_l10_n569(x)
+ if (x < 1)
+ fun_l11_n446(x)
+ else
+ fun_l11_n305(x)
+ end
+end
+
+def fun_l10_n570(x)
+ if (x < 1)
+ fun_l11_n209(x)
+ else
+ fun_l11_n768(x)
+ end
+end
+
+def fun_l10_n571(x)
+ if (x < 1)
+ fun_l11_n904(x)
+ else
+ fun_l11_n736(x)
+ end
+end
+
+def fun_l10_n572(x)
+ if (x < 1)
+ fun_l11_n87(x)
+ else
+ fun_l11_n474(x)
+ end
+end
+
+def fun_l10_n573(x)
+ if (x < 1)
+ fun_l11_n886(x)
+ else
+ fun_l11_n75(x)
+ end
+end
+
+def fun_l10_n574(x)
+ if (x < 1)
+ fun_l11_n761(x)
+ else
+ fun_l11_n662(x)
+ end
+end
+
+def fun_l10_n575(x)
+ if (x < 1)
+ fun_l11_n255(x)
+ else
+ fun_l11_n321(x)
+ end
+end
+
+def fun_l10_n576(x)
+ if (x < 1)
+ fun_l11_n154(x)
+ else
+ fun_l11_n356(x)
+ end
+end
+
+def fun_l10_n577(x)
+ if (x < 1)
+ fun_l11_n802(x)
+ else
+ fun_l11_n912(x)
+ end
+end
+
+def fun_l10_n578(x)
+ if (x < 1)
+ fun_l11_n709(x)
+ else
+ fun_l11_n66(x)
+ end
+end
+
+def fun_l10_n579(x)
+ if (x < 1)
+ fun_l11_n994(x)
+ else
+ fun_l11_n424(x)
+ end
+end
+
+def fun_l10_n580(x)
+ if (x < 1)
+ fun_l11_n520(x)
+ else
+ fun_l11_n551(x)
+ end
+end
+
+def fun_l10_n581(x)
+ if (x < 1)
+ fun_l11_n386(x)
+ else
+ fun_l11_n615(x)
+ end
+end
+
+def fun_l10_n582(x)
+ if (x < 1)
+ fun_l11_n125(x)
+ else
+ fun_l11_n667(x)
+ end
+end
+
+def fun_l10_n583(x)
+ if (x < 1)
+ fun_l11_n829(x)
+ else
+ fun_l11_n802(x)
+ end
+end
+
+def fun_l10_n584(x)
+ if (x < 1)
+ fun_l11_n649(x)
+ else
+ fun_l11_n39(x)
+ end
+end
+
+def fun_l10_n585(x)
+ if (x < 1)
+ fun_l11_n454(x)
+ else
+ fun_l11_n541(x)
+ end
+end
+
+def fun_l10_n586(x)
+ if (x < 1)
+ fun_l11_n281(x)
+ else
+ fun_l11_n4(x)
+ end
+end
+
+def fun_l10_n587(x)
+ if (x < 1)
+ fun_l11_n382(x)
+ else
+ fun_l11_n656(x)
+ end
+end
+
+def fun_l10_n588(x)
+ if (x < 1)
+ fun_l11_n177(x)
+ else
+ fun_l11_n38(x)
+ end
+end
+
+def fun_l10_n589(x)
+ if (x < 1)
+ fun_l11_n555(x)
+ else
+ fun_l11_n557(x)
+ end
+end
+
+def fun_l10_n590(x)
+ if (x < 1)
+ fun_l11_n999(x)
+ else
+ fun_l11_n645(x)
+ end
+end
+
+def fun_l10_n591(x)
+ if (x < 1)
+ fun_l11_n714(x)
+ else
+ fun_l11_n872(x)
+ end
+end
+
+def fun_l10_n592(x)
+ if (x < 1)
+ fun_l11_n779(x)
+ else
+ fun_l11_n524(x)
+ end
+end
+
+def fun_l10_n593(x)
+ if (x < 1)
+ fun_l11_n557(x)
+ else
+ fun_l11_n906(x)
+ end
+end
+
+def fun_l10_n594(x)
+ if (x < 1)
+ fun_l11_n379(x)
+ else
+ fun_l11_n550(x)
+ end
+end
+
+def fun_l10_n595(x)
+ if (x < 1)
+ fun_l11_n138(x)
+ else
+ fun_l11_n785(x)
+ end
+end
+
+def fun_l10_n596(x)
+ if (x < 1)
+ fun_l11_n486(x)
+ else
+ fun_l11_n381(x)
+ end
+end
+
+def fun_l10_n597(x)
+ if (x < 1)
+ fun_l11_n374(x)
+ else
+ fun_l11_n477(x)
+ end
+end
+
+def fun_l10_n598(x)
+ if (x < 1)
+ fun_l11_n113(x)
+ else
+ fun_l11_n455(x)
+ end
+end
+
+def fun_l10_n599(x)
+ if (x < 1)
+ fun_l11_n31(x)
+ else
+ fun_l11_n983(x)
+ end
+end
+
+def fun_l10_n600(x)
+ if (x < 1)
+ fun_l11_n758(x)
+ else
+ fun_l11_n187(x)
+ end
+end
+
+def fun_l10_n601(x)
+ if (x < 1)
+ fun_l11_n198(x)
+ else
+ fun_l11_n436(x)
+ end
+end
+
+def fun_l10_n602(x)
+ if (x < 1)
+ fun_l11_n207(x)
+ else
+ fun_l11_n86(x)
+ end
+end
+
+def fun_l10_n603(x)
+ if (x < 1)
+ fun_l11_n827(x)
+ else
+ fun_l11_n267(x)
+ end
+end
+
+def fun_l10_n604(x)
+ if (x < 1)
+ fun_l11_n760(x)
+ else
+ fun_l11_n707(x)
+ end
+end
+
+def fun_l10_n605(x)
+ if (x < 1)
+ fun_l11_n791(x)
+ else
+ fun_l11_n249(x)
+ end
+end
+
+def fun_l10_n606(x)
+ if (x < 1)
+ fun_l11_n634(x)
+ else
+ fun_l11_n607(x)
+ end
+end
+
+def fun_l10_n607(x)
+ if (x < 1)
+ fun_l11_n605(x)
+ else
+ fun_l11_n698(x)
+ end
+end
+
+def fun_l10_n608(x)
+ if (x < 1)
+ fun_l11_n401(x)
+ else
+ fun_l11_n316(x)
+ end
+end
+
+def fun_l10_n609(x)
+ if (x < 1)
+ fun_l11_n928(x)
+ else
+ fun_l11_n313(x)
+ end
+end
+
+def fun_l10_n610(x)
+ if (x < 1)
+ fun_l11_n601(x)
+ else
+ fun_l11_n278(x)
+ end
+end
+
+def fun_l10_n611(x)
+ if (x < 1)
+ fun_l11_n554(x)
+ else
+ fun_l11_n584(x)
+ end
+end
+
+def fun_l10_n612(x)
+ if (x < 1)
+ fun_l11_n906(x)
+ else
+ fun_l11_n58(x)
+ end
+end
+
+def fun_l10_n613(x)
+ if (x < 1)
+ fun_l11_n85(x)
+ else
+ fun_l11_n631(x)
+ end
+end
+
+def fun_l10_n614(x)
+ if (x < 1)
+ fun_l11_n221(x)
+ else
+ fun_l11_n85(x)
+ end
+end
+
+def fun_l10_n615(x)
+ if (x < 1)
+ fun_l11_n88(x)
+ else
+ fun_l11_n367(x)
+ end
+end
+
+def fun_l10_n616(x)
+ if (x < 1)
+ fun_l11_n693(x)
+ else
+ fun_l11_n385(x)
+ end
+end
+
+def fun_l10_n617(x)
+ if (x < 1)
+ fun_l11_n18(x)
+ else
+ fun_l11_n526(x)
+ end
+end
+
+def fun_l10_n618(x)
+ if (x < 1)
+ fun_l11_n307(x)
+ else
+ fun_l11_n303(x)
+ end
+end
+
+def fun_l10_n619(x)
+ if (x < 1)
+ fun_l11_n972(x)
+ else
+ fun_l11_n246(x)
+ end
+end
+
+def fun_l10_n620(x)
+ if (x < 1)
+ fun_l11_n185(x)
+ else
+ fun_l11_n512(x)
+ end
+end
+
+def fun_l10_n621(x)
+ if (x < 1)
+ fun_l11_n87(x)
+ else
+ fun_l11_n131(x)
+ end
+end
+
+def fun_l10_n622(x)
+ if (x < 1)
+ fun_l11_n617(x)
+ else
+ fun_l11_n869(x)
+ end
+end
+
+def fun_l10_n623(x)
+ if (x < 1)
+ fun_l11_n514(x)
+ else
+ fun_l11_n824(x)
+ end
+end
+
+def fun_l10_n624(x)
+ if (x < 1)
+ fun_l11_n551(x)
+ else
+ fun_l11_n430(x)
+ end
+end
+
+def fun_l10_n625(x)
+ if (x < 1)
+ fun_l11_n266(x)
+ else
+ fun_l11_n826(x)
+ end
+end
+
+def fun_l10_n626(x)
+ if (x < 1)
+ fun_l11_n90(x)
+ else
+ fun_l11_n866(x)
+ end
+end
+
+def fun_l10_n627(x)
+ if (x < 1)
+ fun_l11_n34(x)
+ else
+ fun_l11_n694(x)
+ end
+end
+
+def fun_l10_n628(x)
+ if (x < 1)
+ fun_l11_n455(x)
+ else
+ fun_l11_n990(x)
+ end
+end
+
+def fun_l10_n629(x)
+ if (x < 1)
+ fun_l11_n573(x)
+ else
+ fun_l11_n874(x)
+ end
+end
+
+def fun_l10_n630(x)
+ if (x < 1)
+ fun_l11_n836(x)
+ else
+ fun_l11_n87(x)
+ end
+end
+
+def fun_l10_n631(x)
+ if (x < 1)
+ fun_l11_n234(x)
+ else
+ fun_l11_n389(x)
+ end
+end
+
+def fun_l10_n632(x)
+ if (x < 1)
+ fun_l11_n647(x)
+ else
+ fun_l11_n655(x)
+ end
+end
+
+def fun_l10_n633(x)
+ if (x < 1)
+ fun_l11_n649(x)
+ else
+ fun_l11_n426(x)
+ end
+end
+
+def fun_l10_n634(x)
+ if (x < 1)
+ fun_l11_n613(x)
+ else
+ fun_l11_n10(x)
+ end
+end
+
+def fun_l10_n635(x)
+ if (x < 1)
+ fun_l11_n315(x)
+ else
+ fun_l11_n419(x)
+ end
+end
+
+def fun_l10_n636(x)
+ if (x < 1)
+ fun_l11_n575(x)
+ else
+ fun_l11_n29(x)
+ end
+end
+
+def fun_l10_n637(x)
+ if (x < 1)
+ fun_l11_n75(x)
+ else
+ fun_l11_n710(x)
+ end
+end
+
+def fun_l10_n638(x)
+ if (x < 1)
+ fun_l11_n42(x)
+ else
+ fun_l11_n45(x)
+ end
+end
+
+def fun_l10_n639(x)
+ if (x < 1)
+ fun_l11_n629(x)
+ else
+ fun_l11_n850(x)
+ end
+end
+
+def fun_l10_n640(x)
+ if (x < 1)
+ fun_l11_n491(x)
+ else
+ fun_l11_n708(x)
+ end
+end
+
+def fun_l10_n641(x)
+ if (x < 1)
+ fun_l11_n673(x)
+ else
+ fun_l11_n722(x)
+ end
+end
+
+def fun_l10_n642(x)
+ if (x < 1)
+ fun_l11_n922(x)
+ else
+ fun_l11_n783(x)
+ end
+end
+
+def fun_l10_n643(x)
+ if (x < 1)
+ fun_l11_n855(x)
+ else
+ fun_l11_n145(x)
+ end
+end
+
+def fun_l10_n644(x)
+ if (x < 1)
+ fun_l11_n897(x)
+ else
+ fun_l11_n281(x)
+ end
+end
+
+def fun_l10_n645(x)
+ if (x < 1)
+ fun_l11_n148(x)
+ else
+ fun_l11_n786(x)
+ end
+end
+
+def fun_l10_n646(x)
+ if (x < 1)
+ fun_l11_n743(x)
+ else
+ fun_l11_n627(x)
+ end
+end
+
+def fun_l10_n647(x)
+ if (x < 1)
+ fun_l11_n343(x)
+ else
+ fun_l11_n234(x)
+ end
+end
+
+def fun_l10_n648(x)
+ if (x < 1)
+ fun_l11_n995(x)
+ else
+ fun_l11_n199(x)
+ end
+end
+
+def fun_l10_n649(x)
+ if (x < 1)
+ fun_l11_n155(x)
+ else
+ fun_l11_n384(x)
+ end
+end
+
+def fun_l10_n650(x)
+ if (x < 1)
+ fun_l11_n329(x)
+ else
+ fun_l11_n313(x)
+ end
+end
+
+def fun_l10_n651(x)
+ if (x < 1)
+ fun_l11_n254(x)
+ else
+ fun_l11_n763(x)
+ end
+end
+
+def fun_l10_n652(x)
+ if (x < 1)
+ fun_l11_n839(x)
+ else
+ fun_l11_n692(x)
+ end
+end
+
+def fun_l10_n653(x)
+ if (x < 1)
+ fun_l11_n388(x)
+ else
+ fun_l11_n187(x)
+ end
+end
+
+def fun_l10_n654(x)
+ if (x < 1)
+ fun_l11_n919(x)
+ else
+ fun_l11_n198(x)
+ end
+end
+
+def fun_l10_n655(x)
+ if (x < 1)
+ fun_l11_n313(x)
+ else
+ fun_l11_n686(x)
+ end
+end
+
+def fun_l10_n656(x)
+ if (x < 1)
+ fun_l11_n91(x)
+ else
+ fun_l11_n95(x)
+ end
+end
+
+def fun_l10_n657(x)
+ if (x < 1)
+ fun_l11_n801(x)
+ else
+ fun_l11_n700(x)
+ end
+end
+
+def fun_l10_n658(x)
+ if (x < 1)
+ fun_l11_n938(x)
+ else
+ fun_l11_n936(x)
+ end
+end
+
+def fun_l10_n659(x)
+ if (x < 1)
+ fun_l11_n78(x)
+ else
+ fun_l11_n611(x)
+ end
+end
+
+def fun_l10_n660(x)
+ if (x < 1)
+ fun_l11_n261(x)
+ else
+ fun_l11_n396(x)
+ end
+end
+
+def fun_l10_n661(x)
+ if (x < 1)
+ fun_l11_n154(x)
+ else
+ fun_l11_n132(x)
+ end
+end
+
+def fun_l10_n662(x)
+ if (x < 1)
+ fun_l11_n603(x)
+ else
+ fun_l11_n718(x)
+ end
+end
+
+def fun_l10_n663(x)
+ if (x < 1)
+ fun_l11_n512(x)
+ else
+ fun_l11_n158(x)
+ end
+end
+
+def fun_l10_n664(x)
+ if (x < 1)
+ fun_l11_n178(x)
+ else
+ fun_l11_n59(x)
+ end
+end
+
+def fun_l10_n665(x)
+ if (x < 1)
+ fun_l11_n703(x)
+ else
+ fun_l11_n54(x)
+ end
+end
+
+def fun_l10_n666(x)
+ if (x < 1)
+ fun_l11_n623(x)
+ else
+ fun_l11_n793(x)
+ end
+end
+
+def fun_l10_n667(x)
+ if (x < 1)
+ fun_l11_n350(x)
+ else
+ fun_l11_n244(x)
+ end
+end
+
+def fun_l10_n668(x)
+ if (x < 1)
+ fun_l11_n253(x)
+ else
+ fun_l11_n297(x)
+ end
+end
+
+def fun_l10_n669(x)
+ if (x < 1)
+ fun_l11_n137(x)
+ else
+ fun_l11_n76(x)
+ end
+end
+
+def fun_l10_n670(x)
+ if (x < 1)
+ fun_l11_n755(x)
+ else
+ fun_l11_n627(x)
+ end
+end
+
+def fun_l10_n671(x)
+ if (x < 1)
+ fun_l11_n393(x)
+ else
+ fun_l11_n394(x)
+ end
+end
+
+def fun_l10_n672(x)
+ if (x < 1)
+ fun_l11_n858(x)
+ else
+ fun_l11_n823(x)
+ end
+end
+
+def fun_l10_n673(x)
+ if (x < 1)
+ fun_l11_n202(x)
+ else
+ fun_l11_n800(x)
+ end
+end
+
+def fun_l10_n674(x)
+ if (x < 1)
+ fun_l11_n977(x)
+ else
+ fun_l11_n343(x)
+ end
+end
+
+def fun_l10_n675(x)
+ if (x < 1)
+ fun_l11_n352(x)
+ else
+ fun_l11_n690(x)
+ end
+end
+
+def fun_l10_n676(x)
+ if (x < 1)
+ fun_l11_n598(x)
+ else
+ fun_l11_n108(x)
+ end
+end
+
+def fun_l10_n677(x)
+ if (x < 1)
+ fun_l11_n126(x)
+ else
+ fun_l11_n226(x)
+ end
+end
+
+def fun_l10_n678(x)
+ if (x < 1)
+ fun_l11_n937(x)
+ else
+ fun_l11_n846(x)
+ end
+end
+
+def fun_l10_n679(x)
+ if (x < 1)
+ fun_l11_n231(x)
+ else
+ fun_l11_n264(x)
+ end
+end
+
+def fun_l10_n680(x)
+ if (x < 1)
+ fun_l11_n657(x)
+ else
+ fun_l11_n766(x)
+ end
+end
+
+def fun_l10_n681(x)
+ if (x < 1)
+ fun_l11_n444(x)
+ else
+ fun_l11_n405(x)
+ end
+end
+
+def fun_l10_n682(x)
+ if (x < 1)
+ fun_l11_n410(x)
+ else
+ fun_l11_n409(x)
+ end
+end
+
+def fun_l10_n683(x)
+ if (x < 1)
+ fun_l11_n690(x)
+ else
+ fun_l11_n673(x)
+ end
+end
+
+def fun_l10_n684(x)
+ if (x < 1)
+ fun_l11_n737(x)
+ else
+ fun_l11_n61(x)
+ end
+end
+
+def fun_l10_n685(x)
+ if (x < 1)
+ fun_l11_n54(x)
+ else
+ fun_l11_n387(x)
+ end
+end
+
+def fun_l10_n686(x)
+ if (x < 1)
+ fun_l11_n271(x)
+ else
+ fun_l11_n698(x)
+ end
+end
+
+def fun_l10_n687(x)
+ if (x < 1)
+ fun_l11_n988(x)
+ else
+ fun_l11_n816(x)
+ end
+end
+
+def fun_l10_n688(x)
+ if (x < 1)
+ fun_l11_n309(x)
+ else
+ fun_l11_n576(x)
+ end
+end
+
+def fun_l10_n689(x)
+ if (x < 1)
+ fun_l11_n390(x)
+ else
+ fun_l11_n35(x)
+ end
+end
+
+def fun_l10_n690(x)
+ if (x < 1)
+ fun_l11_n93(x)
+ else
+ fun_l11_n712(x)
+ end
+end
+
+def fun_l10_n691(x)
+ if (x < 1)
+ fun_l11_n285(x)
+ else
+ fun_l11_n467(x)
+ end
+end
+
+def fun_l10_n692(x)
+ if (x < 1)
+ fun_l11_n403(x)
+ else
+ fun_l11_n41(x)
+ end
+end
+
+def fun_l10_n693(x)
+ if (x < 1)
+ fun_l11_n228(x)
+ else
+ fun_l11_n689(x)
+ end
+end
+
+def fun_l10_n694(x)
+ if (x < 1)
+ fun_l11_n581(x)
+ else
+ fun_l11_n989(x)
+ end
+end
+
+def fun_l10_n695(x)
+ if (x < 1)
+ fun_l11_n451(x)
+ else
+ fun_l11_n618(x)
+ end
+end
+
+def fun_l10_n696(x)
+ if (x < 1)
+ fun_l11_n640(x)
+ else
+ fun_l11_n13(x)
+ end
+end
+
+def fun_l10_n697(x)
+ if (x < 1)
+ fun_l11_n968(x)
+ else
+ fun_l11_n903(x)
+ end
+end
+
+def fun_l10_n698(x)
+ if (x < 1)
+ fun_l11_n918(x)
+ else
+ fun_l11_n244(x)
+ end
+end
+
+def fun_l10_n699(x)
+ if (x < 1)
+ fun_l11_n17(x)
+ else
+ fun_l11_n17(x)
+ end
+end
+
+def fun_l10_n700(x)
+ if (x < 1)
+ fun_l11_n918(x)
+ else
+ fun_l11_n539(x)
+ end
+end
+
+def fun_l10_n701(x)
+ if (x < 1)
+ fun_l11_n924(x)
+ else
+ fun_l11_n103(x)
+ end
+end
+
+def fun_l10_n702(x)
+ if (x < 1)
+ fun_l11_n908(x)
+ else
+ fun_l11_n328(x)
+ end
+end
+
+def fun_l10_n703(x)
+ if (x < 1)
+ fun_l11_n393(x)
+ else
+ fun_l11_n386(x)
+ end
+end
+
+def fun_l10_n704(x)
+ if (x < 1)
+ fun_l11_n194(x)
+ else
+ fun_l11_n812(x)
+ end
+end
+
+def fun_l10_n705(x)
+ if (x < 1)
+ fun_l11_n382(x)
+ else
+ fun_l11_n276(x)
+ end
+end
+
+def fun_l10_n706(x)
+ if (x < 1)
+ fun_l11_n257(x)
+ else
+ fun_l11_n269(x)
+ end
+end
+
+def fun_l10_n707(x)
+ if (x < 1)
+ fun_l11_n940(x)
+ else
+ fun_l11_n593(x)
+ end
+end
+
+def fun_l10_n708(x)
+ if (x < 1)
+ fun_l11_n710(x)
+ else
+ fun_l11_n992(x)
+ end
+end
+
+def fun_l10_n709(x)
+ if (x < 1)
+ fun_l11_n244(x)
+ else
+ fun_l11_n500(x)
+ end
+end
+
+def fun_l10_n710(x)
+ if (x < 1)
+ fun_l11_n712(x)
+ else
+ fun_l11_n544(x)
+ end
+end
+
+def fun_l10_n711(x)
+ if (x < 1)
+ fun_l11_n701(x)
+ else
+ fun_l11_n104(x)
+ end
+end
+
+def fun_l10_n712(x)
+ if (x < 1)
+ fun_l11_n706(x)
+ else
+ fun_l11_n199(x)
+ end
+end
+
+def fun_l10_n713(x)
+ if (x < 1)
+ fun_l11_n189(x)
+ else
+ fun_l11_n840(x)
+ end
+end
+
+def fun_l10_n714(x)
+ if (x < 1)
+ fun_l11_n122(x)
+ else
+ fun_l11_n318(x)
+ end
+end
+
+def fun_l10_n715(x)
+ if (x < 1)
+ fun_l11_n915(x)
+ else
+ fun_l11_n964(x)
+ end
+end
+
+def fun_l10_n716(x)
+ if (x < 1)
+ fun_l11_n341(x)
+ else
+ fun_l11_n118(x)
+ end
+end
+
+def fun_l10_n717(x)
+ if (x < 1)
+ fun_l11_n846(x)
+ else
+ fun_l11_n235(x)
+ end
+end
+
+def fun_l10_n718(x)
+ if (x < 1)
+ fun_l11_n679(x)
+ else
+ fun_l11_n959(x)
+ end
+end
+
+def fun_l10_n719(x)
+ if (x < 1)
+ fun_l11_n121(x)
+ else
+ fun_l11_n708(x)
+ end
+end
+
+def fun_l10_n720(x)
+ if (x < 1)
+ fun_l11_n651(x)
+ else
+ fun_l11_n480(x)
+ end
+end
+
+def fun_l10_n721(x)
+ if (x < 1)
+ fun_l11_n773(x)
+ else
+ fun_l11_n568(x)
+ end
+end
+
+def fun_l10_n722(x)
+ if (x < 1)
+ fun_l11_n809(x)
+ else
+ fun_l11_n111(x)
+ end
+end
+
+def fun_l10_n723(x)
+ if (x < 1)
+ fun_l11_n586(x)
+ else
+ fun_l11_n553(x)
+ end
+end
+
+def fun_l10_n724(x)
+ if (x < 1)
+ fun_l11_n473(x)
+ else
+ fun_l11_n387(x)
+ end
+end
+
+def fun_l10_n725(x)
+ if (x < 1)
+ fun_l11_n584(x)
+ else
+ fun_l11_n224(x)
+ end
+end
+
+def fun_l10_n726(x)
+ if (x < 1)
+ fun_l11_n110(x)
+ else
+ fun_l11_n827(x)
+ end
+end
+
+def fun_l10_n727(x)
+ if (x < 1)
+ fun_l11_n753(x)
+ else
+ fun_l11_n745(x)
+ end
+end
+
+def fun_l10_n728(x)
+ if (x < 1)
+ fun_l11_n550(x)
+ else
+ fun_l11_n380(x)
+ end
+end
+
+def fun_l10_n729(x)
+ if (x < 1)
+ fun_l11_n844(x)
+ else
+ fun_l11_n401(x)
+ end
+end
+
+def fun_l10_n730(x)
+ if (x < 1)
+ fun_l11_n837(x)
+ else
+ fun_l11_n759(x)
+ end
+end
+
+def fun_l10_n731(x)
+ if (x < 1)
+ fun_l11_n850(x)
+ else
+ fun_l11_n953(x)
+ end
+end
+
+def fun_l10_n732(x)
+ if (x < 1)
+ fun_l11_n872(x)
+ else
+ fun_l11_n864(x)
+ end
+end
+
+def fun_l10_n733(x)
+ if (x < 1)
+ fun_l11_n894(x)
+ else
+ fun_l11_n943(x)
+ end
+end
+
+def fun_l10_n734(x)
+ if (x < 1)
+ fun_l11_n830(x)
+ else
+ fun_l11_n858(x)
+ end
+end
+
+def fun_l10_n735(x)
+ if (x < 1)
+ fun_l11_n661(x)
+ else
+ fun_l11_n366(x)
+ end
+end
+
+def fun_l10_n736(x)
+ if (x < 1)
+ fun_l11_n736(x)
+ else
+ fun_l11_n636(x)
+ end
+end
+
+def fun_l10_n737(x)
+ if (x < 1)
+ fun_l11_n316(x)
+ else
+ fun_l11_n977(x)
+ end
+end
+
+def fun_l10_n738(x)
+ if (x < 1)
+ fun_l11_n54(x)
+ else
+ fun_l11_n386(x)
+ end
+end
+
+def fun_l10_n739(x)
+ if (x < 1)
+ fun_l11_n985(x)
+ else
+ fun_l11_n274(x)
+ end
+end
+
+def fun_l10_n740(x)
+ if (x < 1)
+ fun_l11_n756(x)
+ else
+ fun_l11_n171(x)
+ end
+end
+
+def fun_l10_n741(x)
+ if (x < 1)
+ fun_l11_n457(x)
+ else
+ fun_l11_n251(x)
+ end
+end
+
+def fun_l10_n742(x)
+ if (x < 1)
+ fun_l11_n751(x)
+ else
+ fun_l11_n29(x)
+ end
+end
+
+def fun_l10_n743(x)
+ if (x < 1)
+ fun_l11_n6(x)
+ else
+ fun_l11_n892(x)
+ end
+end
+
+def fun_l10_n744(x)
+ if (x < 1)
+ fun_l11_n85(x)
+ else
+ fun_l11_n205(x)
+ end
+end
+
+def fun_l10_n745(x)
+ if (x < 1)
+ fun_l11_n887(x)
+ else
+ fun_l11_n734(x)
+ end
+end
+
+def fun_l10_n746(x)
+ if (x < 1)
+ fun_l11_n478(x)
+ else
+ fun_l11_n505(x)
+ end
+end
+
+def fun_l10_n747(x)
+ if (x < 1)
+ fun_l11_n760(x)
+ else
+ fun_l11_n286(x)
+ end
+end
+
+def fun_l10_n748(x)
+ if (x < 1)
+ fun_l11_n391(x)
+ else
+ fun_l11_n69(x)
+ end
+end
+
+def fun_l10_n749(x)
+ if (x < 1)
+ fun_l11_n780(x)
+ else
+ fun_l11_n28(x)
+ end
+end
+
+def fun_l10_n750(x)
+ if (x < 1)
+ fun_l11_n337(x)
+ else
+ fun_l11_n647(x)
+ end
+end
+
+def fun_l10_n751(x)
+ if (x < 1)
+ fun_l11_n92(x)
+ else
+ fun_l11_n121(x)
+ end
+end
+
+def fun_l10_n752(x)
+ if (x < 1)
+ fun_l11_n358(x)
+ else
+ fun_l11_n177(x)
+ end
+end
+
+def fun_l10_n753(x)
+ if (x < 1)
+ fun_l11_n642(x)
+ else
+ fun_l11_n426(x)
+ end
+end
+
+def fun_l10_n754(x)
+ if (x < 1)
+ fun_l11_n66(x)
+ else
+ fun_l11_n948(x)
+ end
+end
+
+def fun_l10_n755(x)
+ if (x < 1)
+ fun_l11_n45(x)
+ else
+ fun_l11_n795(x)
+ end
+end
+
+def fun_l10_n756(x)
+ if (x < 1)
+ fun_l11_n734(x)
+ else
+ fun_l11_n162(x)
+ end
+end
+
+def fun_l10_n757(x)
+ if (x < 1)
+ fun_l11_n689(x)
+ else
+ fun_l11_n31(x)
+ end
+end
+
+def fun_l10_n758(x)
+ if (x < 1)
+ fun_l11_n33(x)
+ else
+ fun_l11_n992(x)
+ end
+end
+
+def fun_l10_n759(x)
+ if (x < 1)
+ fun_l11_n210(x)
+ else
+ fun_l11_n330(x)
+ end
+end
+
+def fun_l10_n760(x)
+ if (x < 1)
+ fun_l11_n727(x)
+ else
+ fun_l11_n265(x)
+ end
+end
+
+def fun_l10_n761(x)
+ if (x < 1)
+ fun_l11_n710(x)
+ else
+ fun_l11_n706(x)
+ end
+end
+
+def fun_l10_n762(x)
+ if (x < 1)
+ fun_l11_n791(x)
+ else
+ fun_l11_n325(x)
+ end
+end
+
+def fun_l10_n763(x)
+ if (x < 1)
+ fun_l11_n350(x)
+ else
+ fun_l11_n443(x)
+ end
+end
+
+def fun_l10_n764(x)
+ if (x < 1)
+ fun_l11_n522(x)
+ else
+ fun_l11_n662(x)
+ end
+end
+
+def fun_l10_n765(x)
+ if (x < 1)
+ fun_l11_n786(x)
+ else
+ fun_l11_n969(x)
+ end
+end
+
+def fun_l10_n766(x)
+ if (x < 1)
+ fun_l11_n486(x)
+ else
+ fun_l11_n834(x)
+ end
+end
+
+def fun_l10_n767(x)
+ if (x < 1)
+ fun_l11_n84(x)
+ else
+ fun_l11_n989(x)
+ end
+end
+
+def fun_l10_n768(x)
+ if (x < 1)
+ fun_l11_n511(x)
+ else
+ fun_l11_n0(x)
+ end
+end
+
+def fun_l10_n769(x)
+ if (x < 1)
+ fun_l11_n459(x)
+ else
+ fun_l11_n243(x)
+ end
+end
+
+def fun_l10_n770(x)
+ if (x < 1)
+ fun_l11_n59(x)
+ else
+ fun_l11_n267(x)
+ end
+end
+
+def fun_l10_n771(x)
+ if (x < 1)
+ fun_l11_n435(x)
+ else
+ fun_l11_n132(x)
+ end
+end
+
+def fun_l10_n772(x)
+ if (x < 1)
+ fun_l11_n986(x)
+ else
+ fun_l11_n227(x)
+ end
+end
+
+def fun_l10_n773(x)
+ if (x < 1)
+ fun_l11_n931(x)
+ else
+ fun_l11_n215(x)
+ end
+end
+
+def fun_l10_n774(x)
+ if (x < 1)
+ fun_l11_n586(x)
+ else
+ fun_l11_n170(x)
+ end
+end
+
+def fun_l10_n775(x)
+ if (x < 1)
+ fun_l11_n334(x)
+ else
+ fun_l11_n780(x)
+ end
+end
+
+def fun_l10_n776(x)
+ if (x < 1)
+ fun_l11_n81(x)
+ else
+ fun_l11_n583(x)
+ end
+end
+
+def fun_l10_n777(x)
+ if (x < 1)
+ fun_l11_n118(x)
+ else
+ fun_l11_n451(x)
+ end
+end
+
+def fun_l10_n778(x)
+ if (x < 1)
+ fun_l11_n767(x)
+ else
+ fun_l11_n824(x)
+ end
+end
+
+def fun_l10_n779(x)
+ if (x < 1)
+ fun_l11_n270(x)
+ else
+ fun_l11_n725(x)
+ end
+end
+
+def fun_l10_n780(x)
+ if (x < 1)
+ fun_l11_n146(x)
+ else
+ fun_l11_n407(x)
+ end
+end
+
+def fun_l10_n781(x)
+ if (x < 1)
+ fun_l11_n103(x)
+ else
+ fun_l11_n523(x)
+ end
+end
+
+def fun_l10_n782(x)
+ if (x < 1)
+ fun_l11_n499(x)
+ else
+ fun_l11_n710(x)
+ end
+end
+
+def fun_l10_n783(x)
+ if (x < 1)
+ fun_l11_n971(x)
+ else
+ fun_l11_n426(x)
+ end
+end
+
+def fun_l10_n784(x)
+ if (x < 1)
+ fun_l11_n457(x)
+ else
+ fun_l11_n207(x)
+ end
+end
+
+def fun_l10_n785(x)
+ if (x < 1)
+ fun_l11_n307(x)
+ else
+ fun_l11_n19(x)
+ end
+end
+
+def fun_l10_n786(x)
+ if (x < 1)
+ fun_l11_n458(x)
+ else
+ fun_l11_n243(x)
+ end
+end
+
+def fun_l10_n787(x)
+ if (x < 1)
+ fun_l11_n488(x)
+ else
+ fun_l11_n694(x)
+ end
+end
+
+def fun_l10_n788(x)
+ if (x < 1)
+ fun_l11_n422(x)
+ else
+ fun_l11_n201(x)
+ end
+end
+
+def fun_l10_n789(x)
+ if (x < 1)
+ fun_l11_n45(x)
+ else
+ fun_l11_n993(x)
+ end
+end
+
+def fun_l10_n790(x)
+ if (x < 1)
+ fun_l11_n443(x)
+ else
+ fun_l11_n124(x)
+ end
+end
+
+def fun_l10_n791(x)
+ if (x < 1)
+ fun_l11_n875(x)
+ else
+ fun_l11_n605(x)
+ end
+end
+
+def fun_l10_n792(x)
+ if (x < 1)
+ fun_l11_n836(x)
+ else
+ fun_l11_n776(x)
+ end
+end
+
+def fun_l10_n793(x)
+ if (x < 1)
+ fun_l11_n58(x)
+ else
+ fun_l11_n847(x)
+ end
+end
+
+def fun_l10_n794(x)
+ if (x < 1)
+ fun_l11_n334(x)
+ else
+ fun_l11_n981(x)
+ end
+end
+
+def fun_l10_n795(x)
+ if (x < 1)
+ fun_l11_n187(x)
+ else
+ fun_l11_n599(x)
+ end
+end
+
+def fun_l10_n796(x)
+ if (x < 1)
+ fun_l11_n37(x)
+ else
+ fun_l11_n211(x)
+ end
+end
+
+def fun_l10_n797(x)
+ if (x < 1)
+ fun_l11_n770(x)
+ else
+ fun_l11_n688(x)
+ end
+end
+
+def fun_l10_n798(x)
+ if (x < 1)
+ fun_l11_n728(x)
+ else
+ fun_l11_n150(x)
+ end
+end
+
+def fun_l10_n799(x)
+ if (x < 1)
+ fun_l11_n175(x)
+ else
+ fun_l11_n762(x)
+ end
+end
+
+def fun_l10_n800(x)
+ if (x < 1)
+ fun_l11_n977(x)
+ else
+ fun_l11_n86(x)
+ end
+end
+
+def fun_l10_n801(x)
+ if (x < 1)
+ fun_l11_n669(x)
+ else
+ fun_l11_n120(x)
+ end
+end
+
+def fun_l10_n802(x)
+ if (x < 1)
+ fun_l11_n630(x)
+ else
+ fun_l11_n839(x)
+ end
+end
+
+def fun_l10_n803(x)
+ if (x < 1)
+ fun_l11_n505(x)
+ else
+ fun_l11_n461(x)
+ end
+end
+
+def fun_l10_n804(x)
+ if (x < 1)
+ fun_l11_n757(x)
+ else
+ fun_l11_n620(x)
+ end
+end
+
+def fun_l10_n805(x)
+ if (x < 1)
+ fun_l11_n379(x)
+ else
+ fun_l11_n468(x)
+ end
+end
+
+def fun_l10_n806(x)
+ if (x < 1)
+ fun_l11_n708(x)
+ else
+ fun_l11_n73(x)
+ end
+end
+
+def fun_l10_n807(x)
+ if (x < 1)
+ fun_l11_n340(x)
+ else
+ fun_l11_n671(x)
+ end
+end
+
+def fun_l10_n808(x)
+ if (x < 1)
+ fun_l11_n628(x)
+ else
+ fun_l11_n912(x)
+ end
+end
+
+def fun_l10_n809(x)
+ if (x < 1)
+ fun_l11_n455(x)
+ else
+ fun_l11_n20(x)
+ end
+end
+
+def fun_l10_n810(x)
+ if (x < 1)
+ fun_l11_n211(x)
+ else
+ fun_l11_n724(x)
+ end
+end
+
+def fun_l10_n811(x)
+ if (x < 1)
+ fun_l11_n982(x)
+ else
+ fun_l11_n876(x)
+ end
+end
+
+def fun_l10_n812(x)
+ if (x < 1)
+ fun_l11_n455(x)
+ else
+ fun_l11_n846(x)
+ end
+end
+
+def fun_l10_n813(x)
+ if (x < 1)
+ fun_l11_n317(x)
+ else
+ fun_l11_n909(x)
+ end
+end
+
+def fun_l10_n814(x)
+ if (x < 1)
+ fun_l11_n622(x)
+ else
+ fun_l11_n147(x)
+ end
+end
+
+def fun_l10_n815(x)
+ if (x < 1)
+ fun_l11_n174(x)
+ else
+ fun_l11_n660(x)
+ end
+end
+
+def fun_l10_n816(x)
+ if (x < 1)
+ fun_l11_n63(x)
+ else
+ fun_l11_n427(x)
+ end
+end
+
+def fun_l10_n817(x)
+ if (x < 1)
+ fun_l11_n944(x)
+ else
+ fun_l11_n40(x)
+ end
+end
+
+def fun_l10_n818(x)
+ if (x < 1)
+ fun_l11_n887(x)
+ else
+ fun_l11_n641(x)
+ end
+end
+
+def fun_l10_n819(x)
+ if (x < 1)
+ fun_l11_n237(x)
+ else
+ fun_l11_n568(x)
+ end
+end
+
+def fun_l10_n820(x)
+ if (x < 1)
+ fun_l11_n415(x)
+ else
+ fun_l11_n374(x)
+ end
+end
+
+def fun_l10_n821(x)
+ if (x < 1)
+ fun_l11_n183(x)
+ else
+ fun_l11_n38(x)
+ end
+end
+
+def fun_l10_n822(x)
+ if (x < 1)
+ fun_l11_n835(x)
+ else
+ fun_l11_n406(x)
+ end
+end
+
+def fun_l10_n823(x)
+ if (x < 1)
+ fun_l11_n233(x)
+ else
+ fun_l11_n118(x)
+ end
+end
+
+def fun_l10_n824(x)
+ if (x < 1)
+ fun_l11_n898(x)
+ else
+ fun_l11_n543(x)
+ end
+end
+
+def fun_l10_n825(x)
+ if (x < 1)
+ fun_l11_n971(x)
+ else
+ fun_l11_n750(x)
+ end
+end
+
+def fun_l10_n826(x)
+ if (x < 1)
+ fun_l11_n254(x)
+ else
+ fun_l11_n759(x)
+ end
+end
+
+def fun_l10_n827(x)
+ if (x < 1)
+ fun_l11_n953(x)
+ else
+ fun_l11_n187(x)
+ end
+end
+
+def fun_l10_n828(x)
+ if (x < 1)
+ fun_l11_n403(x)
+ else
+ fun_l11_n170(x)
+ end
+end
+
+def fun_l10_n829(x)
+ if (x < 1)
+ fun_l11_n251(x)
+ else
+ fun_l11_n506(x)
+ end
+end
+
+def fun_l10_n830(x)
+ if (x < 1)
+ fun_l11_n426(x)
+ else
+ fun_l11_n325(x)
+ end
+end
+
+def fun_l10_n831(x)
+ if (x < 1)
+ fun_l11_n958(x)
+ else
+ fun_l11_n4(x)
+ end
+end
+
+def fun_l10_n832(x)
+ if (x < 1)
+ fun_l11_n628(x)
+ else
+ fun_l11_n920(x)
+ end
+end
+
+def fun_l10_n833(x)
+ if (x < 1)
+ fun_l11_n241(x)
+ else
+ fun_l11_n459(x)
+ end
+end
+
+def fun_l10_n834(x)
+ if (x < 1)
+ fun_l11_n559(x)
+ else
+ fun_l11_n671(x)
+ end
+end
+
+def fun_l10_n835(x)
+ if (x < 1)
+ fun_l11_n980(x)
+ else
+ fun_l11_n295(x)
+ end
+end
+
+def fun_l10_n836(x)
+ if (x < 1)
+ fun_l11_n306(x)
+ else
+ fun_l11_n143(x)
+ end
+end
+
+def fun_l10_n837(x)
+ if (x < 1)
+ fun_l11_n176(x)
+ else
+ fun_l11_n341(x)
+ end
+end
+
+def fun_l10_n838(x)
+ if (x < 1)
+ fun_l11_n130(x)
+ else
+ fun_l11_n380(x)
+ end
+end
+
+def fun_l10_n839(x)
+ if (x < 1)
+ fun_l11_n630(x)
+ else
+ fun_l11_n216(x)
+ end
+end
+
+def fun_l10_n840(x)
+ if (x < 1)
+ fun_l11_n500(x)
+ else
+ fun_l11_n579(x)
+ end
+end
+
+def fun_l10_n841(x)
+ if (x < 1)
+ fun_l11_n312(x)
+ else
+ fun_l11_n656(x)
+ end
+end
+
+def fun_l10_n842(x)
+ if (x < 1)
+ fun_l11_n209(x)
+ else
+ fun_l11_n332(x)
+ end
+end
+
+def fun_l10_n843(x)
+ if (x < 1)
+ fun_l11_n555(x)
+ else
+ fun_l11_n179(x)
+ end
+end
+
+def fun_l10_n844(x)
+ if (x < 1)
+ fun_l11_n154(x)
+ else
+ fun_l11_n284(x)
+ end
+end
+
+def fun_l10_n845(x)
+ if (x < 1)
+ fun_l11_n912(x)
+ else
+ fun_l11_n543(x)
+ end
+end
+
+def fun_l10_n846(x)
+ if (x < 1)
+ fun_l11_n346(x)
+ else
+ fun_l11_n553(x)
+ end
+end
+
+def fun_l10_n847(x)
+ if (x < 1)
+ fun_l11_n117(x)
+ else
+ fun_l11_n738(x)
+ end
+end
+
+def fun_l10_n848(x)
+ if (x < 1)
+ fun_l11_n664(x)
+ else
+ fun_l11_n988(x)
+ end
+end
+
+def fun_l10_n849(x)
+ if (x < 1)
+ fun_l11_n298(x)
+ else
+ fun_l11_n753(x)
+ end
+end
+
+def fun_l10_n850(x)
+ if (x < 1)
+ fun_l11_n177(x)
+ else
+ fun_l11_n690(x)
+ end
+end
+
+def fun_l10_n851(x)
+ if (x < 1)
+ fun_l11_n259(x)
+ else
+ fun_l11_n713(x)
+ end
+end
+
+def fun_l10_n852(x)
+ if (x < 1)
+ fun_l11_n151(x)
+ else
+ fun_l11_n580(x)
+ end
+end
+
+def fun_l10_n853(x)
+ if (x < 1)
+ fun_l11_n274(x)
+ else
+ fun_l11_n703(x)
+ end
+end
+
+def fun_l10_n854(x)
+ if (x < 1)
+ fun_l11_n295(x)
+ else
+ fun_l11_n885(x)
+ end
+end
+
+def fun_l10_n855(x)
+ if (x < 1)
+ fun_l11_n513(x)
+ else
+ fun_l11_n963(x)
+ end
+end
+
+def fun_l10_n856(x)
+ if (x < 1)
+ fun_l11_n855(x)
+ else
+ fun_l11_n435(x)
+ end
+end
+
+def fun_l10_n857(x)
+ if (x < 1)
+ fun_l11_n573(x)
+ else
+ fun_l11_n489(x)
+ end
+end
+
+def fun_l10_n858(x)
+ if (x < 1)
+ fun_l11_n880(x)
+ else
+ fun_l11_n91(x)
+ end
+end
+
+def fun_l10_n859(x)
+ if (x < 1)
+ fun_l11_n993(x)
+ else
+ fun_l11_n358(x)
+ end
+end
+
+def fun_l10_n860(x)
+ if (x < 1)
+ fun_l11_n836(x)
+ else
+ fun_l11_n192(x)
+ end
+end
+
+def fun_l10_n861(x)
+ if (x < 1)
+ fun_l11_n493(x)
+ else
+ fun_l11_n564(x)
+ end
+end
+
+def fun_l10_n862(x)
+ if (x < 1)
+ fun_l11_n111(x)
+ else
+ fun_l11_n8(x)
+ end
+end
+
+def fun_l10_n863(x)
+ if (x < 1)
+ fun_l11_n596(x)
+ else
+ fun_l11_n129(x)
+ end
+end
+
+def fun_l10_n864(x)
+ if (x < 1)
+ fun_l11_n0(x)
+ else
+ fun_l11_n687(x)
+ end
+end
+
+def fun_l10_n865(x)
+ if (x < 1)
+ fun_l11_n543(x)
+ else
+ fun_l11_n866(x)
+ end
+end
+
+def fun_l10_n866(x)
+ if (x < 1)
+ fun_l11_n398(x)
+ else
+ fun_l11_n532(x)
+ end
+end
+
+def fun_l10_n867(x)
+ if (x < 1)
+ fun_l11_n15(x)
+ else
+ fun_l11_n991(x)
+ end
+end
+
+def fun_l10_n868(x)
+ if (x < 1)
+ fun_l11_n890(x)
+ else
+ fun_l11_n222(x)
+ end
+end
+
+def fun_l10_n869(x)
+ if (x < 1)
+ fun_l11_n206(x)
+ else
+ fun_l11_n983(x)
+ end
+end
+
+def fun_l10_n870(x)
+ if (x < 1)
+ fun_l11_n869(x)
+ else
+ fun_l11_n619(x)
+ end
+end
+
+def fun_l10_n871(x)
+ if (x < 1)
+ fun_l11_n417(x)
+ else
+ fun_l11_n18(x)
+ end
+end
+
+def fun_l10_n872(x)
+ if (x < 1)
+ fun_l11_n738(x)
+ else
+ fun_l11_n473(x)
+ end
+end
+
+def fun_l10_n873(x)
+ if (x < 1)
+ fun_l11_n773(x)
+ else
+ fun_l11_n128(x)
+ end
+end
+
+def fun_l10_n874(x)
+ if (x < 1)
+ fun_l11_n930(x)
+ else
+ fun_l11_n563(x)
+ end
+end
+
+def fun_l10_n875(x)
+ if (x < 1)
+ fun_l11_n868(x)
+ else
+ fun_l11_n356(x)
+ end
+end
+
+def fun_l10_n876(x)
+ if (x < 1)
+ fun_l11_n533(x)
+ else
+ fun_l11_n402(x)
+ end
+end
+
+def fun_l10_n877(x)
+ if (x < 1)
+ fun_l11_n959(x)
+ else
+ fun_l11_n921(x)
+ end
+end
+
+def fun_l10_n878(x)
+ if (x < 1)
+ fun_l11_n717(x)
+ else
+ fun_l11_n484(x)
+ end
+end
+
+def fun_l10_n879(x)
+ if (x < 1)
+ fun_l11_n583(x)
+ else
+ fun_l11_n801(x)
+ end
+end
+
+def fun_l10_n880(x)
+ if (x < 1)
+ fun_l11_n576(x)
+ else
+ fun_l11_n811(x)
+ end
+end
+
+def fun_l10_n881(x)
+ if (x < 1)
+ fun_l11_n382(x)
+ else
+ fun_l11_n585(x)
+ end
+end
+
+def fun_l10_n882(x)
+ if (x < 1)
+ fun_l11_n648(x)
+ else
+ fun_l11_n930(x)
+ end
+end
+
+def fun_l10_n883(x)
+ if (x < 1)
+ fun_l11_n246(x)
+ else
+ fun_l11_n636(x)
+ end
+end
+
+def fun_l10_n884(x)
+ if (x < 1)
+ fun_l11_n112(x)
+ else
+ fun_l11_n798(x)
+ end
+end
+
+def fun_l10_n885(x)
+ if (x < 1)
+ fun_l11_n517(x)
+ else
+ fun_l11_n633(x)
+ end
+end
+
+def fun_l10_n886(x)
+ if (x < 1)
+ fun_l11_n651(x)
+ else
+ fun_l11_n377(x)
+ end
+end
+
+def fun_l10_n887(x)
+ if (x < 1)
+ fun_l11_n652(x)
+ else
+ fun_l11_n419(x)
+ end
+end
+
+def fun_l10_n888(x)
+ if (x < 1)
+ fun_l11_n346(x)
+ else
+ fun_l11_n294(x)
+ end
+end
+
+def fun_l10_n889(x)
+ if (x < 1)
+ fun_l11_n809(x)
+ else
+ fun_l11_n844(x)
+ end
+end
+
+def fun_l10_n890(x)
+ if (x < 1)
+ fun_l11_n382(x)
+ else
+ fun_l11_n930(x)
+ end
+end
+
+def fun_l10_n891(x)
+ if (x < 1)
+ fun_l11_n900(x)
+ else
+ fun_l11_n293(x)
+ end
+end
+
+def fun_l10_n892(x)
+ if (x < 1)
+ fun_l11_n912(x)
+ else
+ fun_l11_n46(x)
+ end
+end
+
+def fun_l10_n893(x)
+ if (x < 1)
+ fun_l11_n429(x)
+ else
+ fun_l11_n174(x)
+ end
+end
+
+def fun_l10_n894(x)
+ if (x < 1)
+ fun_l11_n142(x)
+ else
+ fun_l11_n739(x)
+ end
+end
+
+def fun_l10_n895(x)
+ if (x < 1)
+ fun_l11_n300(x)
+ else
+ fun_l11_n546(x)
+ end
+end
+
+def fun_l10_n896(x)
+ if (x < 1)
+ fun_l11_n253(x)
+ else
+ fun_l11_n555(x)
+ end
+end
+
+def fun_l10_n897(x)
+ if (x < 1)
+ fun_l11_n29(x)
+ else
+ fun_l11_n913(x)
+ end
+end
+
+def fun_l10_n898(x)
+ if (x < 1)
+ fun_l11_n879(x)
+ else
+ fun_l11_n2(x)
+ end
+end
+
+def fun_l10_n899(x)
+ if (x < 1)
+ fun_l11_n191(x)
+ else
+ fun_l11_n418(x)
+ end
+end
+
+def fun_l10_n900(x)
+ if (x < 1)
+ fun_l11_n239(x)
+ else
+ fun_l11_n904(x)
+ end
+end
+
+def fun_l10_n901(x)
+ if (x < 1)
+ fun_l11_n962(x)
+ else
+ fun_l11_n978(x)
+ end
+end
+
+def fun_l10_n902(x)
+ if (x < 1)
+ fun_l11_n343(x)
+ else
+ fun_l11_n358(x)
+ end
+end
+
+def fun_l10_n903(x)
+ if (x < 1)
+ fun_l11_n334(x)
+ else
+ fun_l11_n806(x)
+ end
+end
+
+def fun_l10_n904(x)
+ if (x < 1)
+ fun_l11_n973(x)
+ else
+ fun_l11_n708(x)
+ end
+end
+
+def fun_l10_n905(x)
+ if (x < 1)
+ fun_l11_n990(x)
+ else
+ fun_l11_n211(x)
+ end
+end
+
+def fun_l10_n906(x)
+ if (x < 1)
+ fun_l11_n499(x)
+ else
+ fun_l11_n605(x)
+ end
+end
+
+def fun_l10_n907(x)
+ if (x < 1)
+ fun_l11_n335(x)
+ else
+ fun_l11_n855(x)
+ end
+end
+
+def fun_l10_n908(x)
+ if (x < 1)
+ fun_l11_n197(x)
+ else
+ fun_l11_n130(x)
+ end
+end
+
+def fun_l10_n909(x)
+ if (x < 1)
+ fun_l11_n462(x)
+ else
+ fun_l11_n838(x)
+ end
+end
+
+def fun_l10_n910(x)
+ if (x < 1)
+ fun_l11_n254(x)
+ else
+ fun_l11_n16(x)
+ end
+end
+
+def fun_l10_n911(x)
+ if (x < 1)
+ fun_l11_n321(x)
+ else
+ fun_l11_n158(x)
+ end
+end
+
+def fun_l10_n912(x)
+ if (x < 1)
+ fun_l11_n113(x)
+ else
+ fun_l11_n50(x)
+ end
+end
+
+def fun_l10_n913(x)
+ if (x < 1)
+ fun_l11_n492(x)
+ else
+ fun_l11_n502(x)
+ end
+end
+
+def fun_l10_n914(x)
+ if (x < 1)
+ fun_l11_n221(x)
+ else
+ fun_l11_n732(x)
+ end
+end
+
+def fun_l10_n915(x)
+ if (x < 1)
+ fun_l11_n853(x)
+ else
+ fun_l11_n625(x)
+ end
+end
+
+def fun_l10_n916(x)
+ if (x < 1)
+ fun_l11_n172(x)
+ else
+ fun_l11_n17(x)
+ end
+end
+
+def fun_l10_n917(x)
+ if (x < 1)
+ fun_l11_n438(x)
+ else
+ fun_l11_n480(x)
+ end
+end
+
+def fun_l10_n918(x)
+ if (x < 1)
+ fun_l11_n646(x)
+ else
+ fun_l11_n833(x)
+ end
+end
+
+def fun_l10_n919(x)
+ if (x < 1)
+ fun_l11_n628(x)
+ else
+ fun_l11_n40(x)
+ end
+end
+
+def fun_l10_n920(x)
+ if (x < 1)
+ fun_l11_n387(x)
+ else
+ fun_l11_n824(x)
+ end
+end
+
+def fun_l10_n921(x)
+ if (x < 1)
+ fun_l11_n641(x)
+ else
+ fun_l11_n669(x)
+ end
+end
+
+def fun_l10_n922(x)
+ if (x < 1)
+ fun_l11_n484(x)
+ else
+ fun_l11_n591(x)
+ end
+end
+
+def fun_l10_n923(x)
+ if (x < 1)
+ fun_l11_n610(x)
+ else
+ fun_l11_n132(x)
+ end
+end
+
+def fun_l10_n924(x)
+ if (x < 1)
+ fun_l11_n90(x)
+ else
+ fun_l11_n727(x)
+ end
+end
+
+def fun_l10_n925(x)
+ if (x < 1)
+ fun_l11_n44(x)
+ else
+ fun_l11_n412(x)
+ end
+end
+
+def fun_l10_n926(x)
+ if (x < 1)
+ fun_l11_n912(x)
+ else
+ fun_l11_n229(x)
+ end
+end
+
+def fun_l10_n927(x)
+ if (x < 1)
+ fun_l11_n647(x)
+ else
+ fun_l11_n13(x)
+ end
+end
+
+def fun_l10_n928(x)
+ if (x < 1)
+ fun_l11_n820(x)
+ else
+ fun_l11_n316(x)
+ end
+end
+
+def fun_l10_n929(x)
+ if (x < 1)
+ fun_l11_n850(x)
+ else
+ fun_l11_n868(x)
+ end
+end
+
+def fun_l10_n930(x)
+ if (x < 1)
+ fun_l11_n373(x)
+ else
+ fun_l11_n183(x)
+ end
+end
+
+def fun_l10_n931(x)
+ if (x < 1)
+ fun_l11_n217(x)
+ else
+ fun_l11_n230(x)
+ end
+end
+
+def fun_l10_n932(x)
+ if (x < 1)
+ fun_l11_n77(x)
+ else
+ fun_l11_n917(x)
+ end
+end
+
+def fun_l10_n933(x)
+ if (x < 1)
+ fun_l11_n264(x)
+ else
+ fun_l11_n992(x)
+ end
+end
+
+def fun_l10_n934(x)
+ if (x < 1)
+ fun_l11_n125(x)
+ else
+ fun_l11_n441(x)
+ end
+end
+
+def fun_l10_n935(x)
+ if (x < 1)
+ fun_l11_n586(x)
+ else
+ fun_l11_n946(x)
+ end
+end
+
+def fun_l10_n936(x)
+ if (x < 1)
+ fun_l11_n186(x)
+ else
+ fun_l11_n595(x)
+ end
+end
+
+def fun_l10_n937(x)
+ if (x < 1)
+ fun_l11_n210(x)
+ else
+ fun_l11_n186(x)
+ end
+end
+
+def fun_l10_n938(x)
+ if (x < 1)
+ fun_l11_n131(x)
+ else
+ fun_l11_n519(x)
+ end
+end
+
+def fun_l10_n939(x)
+ if (x < 1)
+ fun_l11_n863(x)
+ else
+ fun_l11_n486(x)
+ end
+end
+
+def fun_l10_n940(x)
+ if (x < 1)
+ fun_l11_n753(x)
+ else
+ fun_l11_n916(x)
+ end
+end
+
+def fun_l10_n941(x)
+ if (x < 1)
+ fun_l11_n8(x)
+ else
+ fun_l11_n153(x)
+ end
+end
+
+def fun_l10_n942(x)
+ if (x < 1)
+ fun_l11_n798(x)
+ else
+ fun_l11_n873(x)
+ end
+end
+
+def fun_l10_n943(x)
+ if (x < 1)
+ fun_l11_n862(x)
+ else
+ fun_l11_n293(x)
+ end
+end
+
+def fun_l10_n944(x)
+ if (x < 1)
+ fun_l11_n554(x)
+ else
+ fun_l11_n599(x)
+ end
+end
+
+def fun_l10_n945(x)
+ if (x < 1)
+ fun_l11_n134(x)
+ else
+ fun_l11_n535(x)
+ end
+end
+
+def fun_l10_n946(x)
+ if (x < 1)
+ fun_l11_n992(x)
+ else
+ fun_l11_n624(x)
+ end
+end
+
+def fun_l10_n947(x)
+ if (x < 1)
+ fun_l11_n436(x)
+ else
+ fun_l11_n153(x)
+ end
+end
+
+def fun_l10_n948(x)
+ if (x < 1)
+ fun_l11_n72(x)
+ else
+ fun_l11_n154(x)
+ end
+end
+
+def fun_l10_n949(x)
+ if (x < 1)
+ fun_l11_n61(x)
+ else
+ fun_l11_n612(x)
+ end
+end
+
+def fun_l10_n950(x)
+ if (x < 1)
+ fun_l11_n964(x)
+ else
+ fun_l11_n999(x)
+ end
+end
+
+def fun_l10_n951(x)
+ if (x < 1)
+ fun_l11_n689(x)
+ else
+ fun_l11_n165(x)
+ end
+end
+
+def fun_l10_n952(x)
+ if (x < 1)
+ fun_l11_n856(x)
+ else
+ fun_l11_n7(x)
+ end
+end
+
+def fun_l10_n953(x)
+ if (x < 1)
+ fun_l11_n421(x)
+ else
+ fun_l11_n416(x)
+ end
+end
+
+def fun_l10_n954(x)
+ if (x < 1)
+ fun_l11_n969(x)
+ else
+ fun_l11_n260(x)
+ end
+end
+
+def fun_l10_n955(x)
+ if (x < 1)
+ fun_l11_n716(x)
+ else
+ fun_l11_n364(x)
+ end
+end
+
+def fun_l10_n956(x)
+ if (x < 1)
+ fun_l11_n491(x)
+ else
+ fun_l11_n575(x)
+ end
+end
+
+def fun_l10_n957(x)
+ if (x < 1)
+ fun_l11_n522(x)
+ else
+ fun_l11_n430(x)
+ end
+end
+
+def fun_l10_n958(x)
+ if (x < 1)
+ fun_l11_n712(x)
+ else
+ fun_l11_n939(x)
+ end
+end
+
+def fun_l10_n959(x)
+ if (x < 1)
+ fun_l11_n230(x)
+ else
+ fun_l11_n819(x)
+ end
+end
+
+def fun_l10_n960(x)
+ if (x < 1)
+ fun_l11_n790(x)
+ else
+ fun_l11_n939(x)
+ end
+end
+
+def fun_l10_n961(x)
+ if (x < 1)
+ fun_l11_n844(x)
+ else
+ fun_l11_n847(x)
+ end
+end
+
+def fun_l10_n962(x)
+ if (x < 1)
+ fun_l11_n105(x)
+ else
+ fun_l11_n722(x)
+ end
+end
+
+def fun_l10_n963(x)
+ if (x < 1)
+ fun_l11_n166(x)
+ else
+ fun_l11_n990(x)
+ end
+end
+
+def fun_l10_n964(x)
+ if (x < 1)
+ fun_l11_n224(x)
+ else
+ fun_l11_n751(x)
+ end
+end
+
+def fun_l10_n965(x)
+ if (x < 1)
+ fun_l11_n809(x)
+ else
+ fun_l11_n739(x)
+ end
+end
+
+def fun_l10_n966(x)
+ if (x < 1)
+ fun_l11_n840(x)
+ else
+ fun_l11_n795(x)
+ end
+end
+
+def fun_l10_n967(x)
+ if (x < 1)
+ fun_l11_n791(x)
+ else
+ fun_l11_n926(x)
+ end
+end
+
+def fun_l10_n968(x)
+ if (x < 1)
+ fun_l11_n484(x)
+ else
+ fun_l11_n409(x)
+ end
+end
+
+def fun_l10_n969(x)
+ if (x < 1)
+ fun_l11_n22(x)
+ else
+ fun_l11_n284(x)
+ end
+end
+
+def fun_l10_n970(x)
+ if (x < 1)
+ fun_l11_n539(x)
+ else
+ fun_l11_n661(x)
+ end
+end
+
+def fun_l10_n971(x)
+ if (x < 1)
+ fun_l11_n453(x)
+ else
+ fun_l11_n619(x)
+ end
+end
+
+def fun_l10_n972(x)
+ if (x < 1)
+ fun_l11_n80(x)
+ else
+ fun_l11_n848(x)
+ end
+end
+
+def fun_l10_n973(x)
+ if (x < 1)
+ fun_l11_n599(x)
+ else
+ fun_l11_n147(x)
+ end
+end
+
+def fun_l10_n974(x)
+ if (x < 1)
+ fun_l11_n784(x)
+ else
+ fun_l11_n603(x)
+ end
+end
+
+def fun_l10_n975(x)
+ if (x < 1)
+ fun_l11_n166(x)
+ else
+ fun_l11_n12(x)
+ end
+end
+
+def fun_l10_n976(x)
+ if (x < 1)
+ fun_l11_n739(x)
+ else
+ fun_l11_n381(x)
+ end
+end
+
+def fun_l10_n977(x)
+ if (x < 1)
+ fun_l11_n45(x)
+ else
+ fun_l11_n67(x)
+ end
+end
+
+def fun_l10_n978(x)
+ if (x < 1)
+ fun_l11_n243(x)
+ else
+ fun_l11_n51(x)
+ end
+end
+
+def fun_l10_n979(x)
+ if (x < 1)
+ fun_l11_n964(x)
+ else
+ fun_l11_n949(x)
+ end
+end
+
+def fun_l10_n980(x)
+ if (x < 1)
+ fun_l11_n881(x)
+ else
+ fun_l11_n893(x)
+ end
+end
+
+def fun_l10_n981(x)
+ if (x < 1)
+ fun_l11_n808(x)
+ else
+ fun_l11_n205(x)
+ end
+end
+
+def fun_l10_n982(x)
+ if (x < 1)
+ fun_l11_n897(x)
+ else
+ fun_l11_n259(x)
+ end
+end
+
+def fun_l10_n983(x)
+ if (x < 1)
+ fun_l11_n671(x)
+ else
+ fun_l11_n115(x)
+ end
+end
+
+def fun_l10_n984(x)
+ if (x < 1)
+ fun_l11_n9(x)
+ else
+ fun_l11_n994(x)
+ end
+end
+
+def fun_l10_n985(x)
+ if (x < 1)
+ fun_l11_n663(x)
+ else
+ fun_l11_n979(x)
+ end
+end
+
+def fun_l10_n986(x)
+ if (x < 1)
+ fun_l11_n8(x)
+ else
+ fun_l11_n949(x)
+ end
+end
+
+def fun_l10_n987(x)
+ if (x < 1)
+ fun_l11_n230(x)
+ else
+ fun_l11_n822(x)
+ end
+end
+
+def fun_l10_n988(x)
+ if (x < 1)
+ fun_l11_n767(x)
+ else
+ fun_l11_n691(x)
+ end
+end
+
+def fun_l10_n989(x)
+ if (x < 1)
+ fun_l11_n524(x)
+ else
+ fun_l11_n514(x)
+ end
+end
+
+def fun_l10_n990(x)
+ if (x < 1)
+ fun_l11_n556(x)
+ else
+ fun_l11_n34(x)
+ end
+end
+
+def fun_l10_n991(x)
+ if (x < 1)
+ fun_l11_n516(x)
+ else
+ fun_l11_n817(x)
+ end
+end
+
+def fun_l10_n992(x)
+ if (x < 1)
+ fun_l11_n273(x)
+ else
+ fun_l11_n189(x)
+ end
+end
+
+def fun_l10_n993(x)
+ if (x < 1)
+ fun_l11_n726(x)
+ else
+ fun_l11_n260(x)
+ end
+end
+
+def fun_l10_n994(x)
+ if (x < 1)
+ fun_l11_n789(x)
+ else
+ fun_l11_n993(x)
+ end
+end
+
+def fun_l10_n995(x)
+ if (x < 1)
+ fun_l11_n187(x)
+ else
+ fun_l11_n291(x)
+ end
+end
+
+def fun_l10_n996(x)
+ if (x < 1)
+ fun_l11_n145(x)
+ else
+ fun_l11_n500(x)
+ end
+end
+
+def fun_l10_n997(x)
+ if (x < 1)
+ fun_l11_n437(x)
+ else
+ fun_l11_n925(x)
+ end
+end
+
+def fun_l10_n998(x)
+ if (x < 1)
+ fun_l11_n945(x)
+ else
+ fun_l11_n300(x)
+ end
+end
+
+def fun_l10_n999(x)
+ if (x < 1)
+ fun_l11_n703(x)
+ else
+ fun_l11_n542(x)
+ end
+end
+
+def fun_l11_n0(x)
+ if (x < 1)
+ fun_l12_n539(x)
+ else
+ fun_l12_n60(x)
+ end
+end
+
+def fun_l11_n1(x)
+ if (x < 1)
+ fun_l12_n659(x)
+ else
+ fun_l12_n739(x)
+ end
+end
+
+def fun_l11_n2(x)
+ if (x < 1)
+ fun_l12_n273(x)
+ else
+ fun_l12_n392(x)
+ end
+end
+
+def fun_l11_n3(x)
+ if (x < 1)
+ fun_l12_n394(x)
+ else
+ fun_l12_n989(x)
+ end
+end
+
+def fun_l11_n4(x)
+ if (x < 1)
+ fun_l12_n254(x)
+ else
+ fun_l12_n906(x)
+ end
+end
+
+def fun_l11_n5(x)
+ if (x < 1)
+ fun_l12_n229(x)
+ else
+ fun_l12_n345(x)
+ end
+end
+
+def fun_l11_n6(x)
+ if (x < 1)
+ fun_l12_n15(x)
+ else
+ fun_l12_n893(x)
+ end
+end
+
+def fun_l11_n7(x)
+ if (x < 1)
+ fun_l12_n185(x)
+ else
+ fun_l12_n187(x)
+ end
+end
+
+def fun_l11_n8(x)
+ if (x < 1)
+ fun_l12_n761(x)
+ else
+ fun_l12_n850(x)
+ end
+end
+
+def fun_l11_n9(x)
+ if (x < 1)
+ fun_l12_n644(x)
+ else
+ fun_l12_n274(x)
+ end
+end
+
+def fun_l11_n10(x)
+ if (x < 1)
+ fun_l12_n652(x)
+ else
+ fun_l12_n223(x)
+ end
+end
+
+def fun_l11_n11(x)
+ if (x < 1)
+ fun_l12_n905(x)
+ else
+ fun_l12_n215(x)
+ end
+end
+
+def fun_l11_n12(x)
+ if (x < 1)
+ fun_l12_n58(x)
+ else
+ fun_l12_n495(x)
+ end
+end
+
+def fun_l11_n13(x)
+ if (x < 1)
+ fun_l12_n529(x)
+ else
+ fun_l12_n477(x)
+ end
+end
+
+def fun_l11_n14(x)
+ if (x < 1)
+ fun_l12_n743(x)
+ else
+ fun_l12_n847(x)
+ end
+end
+
+def fun_l11_n15(x)
+ if (x < 1)
+ fun_l12_n558(x)
+ else
+ fun_l12_n252(x)
+ end
+end
+
+def fun_l11_n16(x)
+ if (x < 1)
+ fun_l12_n115(x)
+ else
+ fun_l12_n972(x)
+ end
+end
+
+def fun_l11_n17(x)
+ if (x < 1)
+ fun_l12_n374(x)
+ else
+ fun_l12_n637(x)
+ end
+end
+
+def fun_l11_n18(x)
+ if (x < 1)
+ fun_l12_n978(x)
+ else
+ fun_l12_n570(x)
+ end
+end
+
+def fun_l11_n19(x)
+ if (x < 1)
+ fun_l12_n264(x)
+ else
+ fun_l12_n743(x)
+ end
+end
+
+def fun_l11_n20(x)
+ if (x < 1)
+ fun_l12_n936(x)
+ else
+ fun_l12_n986(x)
+ end
+end
+
+def fun_l11_n21(x)
+ if (x < 1)
+ fun_l12_n107(x)
+ else
+ fun_l12_n167(x)
+ end
+end
+
+def fun_l11_n22(x)
+ if (x < 1)
+ fun_l12_n777(x)
+ else
+ fun_l12_n143(x)
+ end
+end
+
+def fun_l11_n23(x)
+ if (x < 1)
+ fun_l12_n510(x)
+ else
+ fun_l12_n236(x)
+ end
+end
+
+def fun_l11_n24(x)
+ if (x < 1)
+ fun_l12_n180(x)
+ else
+ fun_l12_n309(x)
+ end
+end
+
+def fun_l11_n25(x)
+ if (x < 1)
+ fun_l12_n850(x)
+ else
+ fun_l12_n374(x)
+ end
+end
+
+def fun_l11_n26(x)
+ if (x < 1)
+ fun_l12_n573(x)
+ else
+ fun_l12_n722(x)
+ end
+end
+
+def fun_l11_n27(x)
+ if (x < 1)
+ fun_l12_n800(x)
+ else
+ fun_l12_n981(x)
+ end
+end
+
+def fun_l11_n28(x)
+ if (x < 1)
+ fun_l12_n705(x)
+ else
+ fun_l12_n636(x)
+ end
+end
+
+def fun_l11_n29(x)
+ if (x < 1)
+ fun_l12_n618(x)
+ else
+ fun_l12_n429(x)
+ end
+end
+
+def fun_l11_n30(x)
+ if (x < 1)
+ fun_l12_n139(x)
+ else
+ fun_l12_n95(x)
+ end
+end
+
+def fun_l11_n31(x)
+ if (x < 1)
+ fun_l12_n861(x)
+ else
+ fun_l12_n797(x)
+ end
+end
+
+def fun_l11_n32(x)
+ if (x < 1)
+ fun_l12_n576(x)
+ else
+ fun_l12_n719(x)
+ end
+end
+
+def fun_l11_n33(x)
+ if (x < 1)
+ fun_l12_n236(x)
+ else
+ fun_l12_n429(x)
+ end
+end
+
+def fun_l11_n34(x)
+ if (x < 1)
+ fun_l12_n375(x)
+ else
+ fun_l12_n696(x)
+ end
+end
+
+def fun_l11_n35(x)
+ if (x < 1)
+ fun_l12_n291(x)
+ else
+ fun_l12_n799(x)
+ end
+end
+
+def fun_l11_n36(x)
+ if (x < 1)
+ fun_l12_n180(x)
+ else
+ fun_l12_n228(x)
+ end
+end
+
+def fun_l11_n37(x)
+ if (x < 1)
+ fun_l12_n455(x)
+ else
+ fun_l12_n983(x)
+ end
+end
+
+def fun_l11_n38(x)
+ if (x < 1)
+ fun_l12_n486(x)
+ else
+ fun_l12_n871(x)
+ end
+end
+
+def fun_l11_n39(x)
+ if (x < 1)
+ fun_l12_n945(x)
+ else
+ fun_l12_n47(x)
+ end
+end
+
+def fun_l11_n40(x)
+ if (x < 1)
+ fun_l12_n531(x)
+ else
+ fun_l12_n506(x)
+ end
+end
+
+def fun_l11_n41(x)
+ if (x < 1)
+ fun_l12_n248(x)
+ else
+ fun_l12_n142(x)
+ end
+end
+
+def fun_l11_n42(x)
+ if (x < 1)
+ fun_l12_n415(x)
+ else
+ fun_l12_n177(x)
+ end
+end
+
+def fun_l11_n43(x)
+ if (x < 1)
+ fun_l12_n560(x)
+ else
+ fun_l12_n63(x)
+ end
+end
+
+def fun_l11_n44(x)
+ if (x < 1)
+ fun_l12_n180(x)
+ else
+ fun_l12_n268(x)
+ end
+end
+
+def fun_l11_n45(x)
+ if (x < 1)
+ fun_l12_n814(x)
+ else
+ fun_l12_n967(x)
+ end
+end
+
+def fun_l11_n46(x)
+ if (x < 1)
+ fun_l12_n273(x)
+ else
+ fun_l12_n702(x)
+ end
+end
+
+def fun_l11_n47(x)
+ if (x < 1)
+ fun_l12_n626(x)
+ else
+ fun_l12_n615(x)
+ end
+end
+
+def fun_l11_n48(x)
+ if (x < 1)
+ fun_l12_n374(x)
+ else
+ fun_l12_n669(x)
+ end
+end
+
+def fun_l11_n49(x)
+ if (x < 1)
+ fun_l12_n681(x)
+ else
+ fun_l12_n48(x)
+ end
+end
+
+def fun_l11_n50(x)
+ if (x < 1)
+ fun_l12_n3(x)
+ else
+ fun_l12_n455(x)
+ end
+end
+
+def fun_l11_n51(x)
+ if (x < 1)
+ fun_l12_n461(x)
+ else
+ fun_l12_n350(x)
+ end
+end
+
+def fun_l11_n52(x)
+ if (x < 1)
+ fun_l12_n129(x)
+ else
+ fun_l12_n266(x)
+ end
+end
+
+def fun_l11_n53(x)
+ if (x < 1)
+ fun_l12_n802(x)
+ else
+ fun_l12_n863(x)
+ end
+end
+
+def fun_l11_n54(x)
+ if (x < 1)
+ fun_l12_n216(x)
+ else
+ fun_l12_n820(x)
+ end
+end
+
+def fun_l11_n55(x)
+ if (x < 1)
+ fun_l12_n626(x)
+ else
+ fun_l12_n476(x)
+ end
+end
+
+def fun_l11_n56(x)
+ if (x < 1)
+ fun_l12_n162(x)
+ else
+ fun_l12_n796(x)
+ end
+end
+
+def fun_l11_n57(x)
+ if (x < 1)
+ fun_l12_n45(x)
+ else
+ fun_l12_n893(x)
+ end
+end
+
+def fun_l11_n58(x)
+ if (x < 1)
+ fun_l12_n227(x)
+ else
+ fun_l12_n919(x)
+ end
+end
+
+def fun_l11_n59(x)
+ if (x < 1)
+ fun_l12_n300(x)
+ else
+ fun_l12_n360(x)
+ end
+end
+
+def fun_l11_n60(x)
+ if (x < 1)
+ fun_l12_n265(x)
+ else
+ fun_l12_n552(x)
+ end
+end
+
+def fun_l11_n61(x)
+ if (x < 1)
+ fun_l12_n927(x)
+ else
+ fun_l12_n486(x)
+ end
+end
+
+def fun_l11_n62(x)
+ if (x < 1)
+ fun_l12_n94(x)
+ else
+ fun_l12_n28(x)
+ end
+end
+
+def fun_l11_n63(x)
+ if (x < 1)
+ fun_l12_n295(x)
+ else
+ fun_l12_n967(x)
+ end
+end
+
+def fun_l11_n64(x)
+ if (x < 1)
+ fun_l12_n713(x)
+ else
+ fun_l12_n463(x)
+ end
+end
+
+def fun_l11_n65(x)
+ if (x < 1)
+ fun_l12_n454(x)
+ else
+ fun_l12_n616(x)
+ end
+end
+
+def fun_l11_n66(x)
+ if (x < 1)
+ fun_l12_n121(x)
+ else
+ fun_l12_n277(x)
+ end
+end
+
+def fun_l11_n67(x)
+ if (x < 1)
+ fun_l12_n524(x)
+ else
+ fun_l12_n242(x)
+ end
+end
+
+def fun_l11_n68(x)
+ if (x < 1)
+ fun_l12_n570(x)
+ else
+ fun_l12_n658(x)
+ end
+end
+
+def fun_l11_n69(x)
+ if (x < 1)
+ fun_l12_n343(x)
+ else
+ fun_l12_n826(x)
+ end
+end
+
+def fun_l11_n70(x)
+ if (x < 1)
+ fun_l12_n732(x)
+ else
+ fun_l12_n993(x)
+ end
+end
+
+def fun_l11_n71(x)
+ if (x < 1)
+ fun_l12_n380(x)
+ else
+ fun_l12_n486(x)
+ end
+end
+
+def fun_l11_n72(x)
+ if (x < 1)
+ fun_l12_n55(x)
+ else
+ fun_l12_n342(x)
+ end
+end
+
+def fun_l11_n73(x)
+ if (x < 1)
+ fun_l12_n789(x)
+ else
+ fun_l12_n646(x)
+ end
+end
+
+def fun_l11_n74(x)
+ if (x < 1)
+ fun_l12_n106(x)
+ else
+ fun_l12_n557(x)
+ end
+end
+
+def fun_l11_n75(x)
+ if (x < 1)
+ fun_l12_n368(x)
+ else
+ fun_l12_n5(x)
+ end
+end
+
+def fun_l11_n76(x)
+ if (x < 1)
+ fun_l12_n992(x)
+ else
+ fun_l12_n521(x)
+ end
+end
+
+def fun_l11_n77(x)
+ if (x < 1)
+ fun_l12_n754(x)
+ else
+ fun_l12_n259(x)
+ end
+end
+
+def fun_l11_n78(x)
+ if (x < 1)
+ fun_l12_n855(x)
+ else
+ fun_l12_n946(x)
+ end
+end
+
+def fun_l11_n79(x)
+ if (x < 1)
+ fun_l12_n727(x)
+ else
+ fun_l12_n422(x)
+ end
+end
+
+def fun_l11_n80(x)
+ if (x < 1)
+ fun_l12_n649(x)
+ else
+ fun_l12_n593(x)
+ end
+end
+
+def fun_l11_n81(x)
+ if (x < 1)
+ fun_l12_n206(x)
+ else
+ fun_l12_n222(x)
+ end
+end
+
+def fun_l11_n82(x)
+ if (x < 1)
+ fun_l12_n995(x)
+ else
+ fun_l12_n471(x)
+ end
+end
+
+def fun_l11_n83(x)
+ if (x < 1)
+ fun_l12_n926(x)
+ else
+ fun_l12_n165(x)
+ end
+end
+
+def fun_l11_n84(x)
+ if (x < 1)
+ fun_l12_n988(x)
+ else
+ fun_l12_n495(x)
+ end
+end
+
+def fun_l11_n85(x)
+ if (x < 1)
+ fun_l12_n839(x)
+ else
+ fun_l12_n565(x)
+ end
+end
+
+def fun_l11_n86(x)
+ if (x < 1)
+ fun_l12_n381(x)
+ else
+ fun_l12_n981(x)
+ end
+end
+
+def fun_l11_n87(x)
+ if (x < 1)
+ fun_l12_n64(x)
+ else
+ fun_l12_n616(x)
+ end
+end
+
+def fun_l11_n88(x)
+ if (x < 1)
+ fun_l12_n714(x)
+ else
+ fun_l12_n995(x)
+ end
+end
+
+def fun_l11_n89(x)
+ if (x < 1)
+ fun_l12_n796(x)
+ else
+ fun_l12_n534(x)
+ end
+end
+
+def fun_l11_n90(x)
+ if (x < 1)
+ fun_l12_n31(x)
+ else
+ fun_l12_n584(x)
+ end
+end
+
+def fun_l11_n91(x)
+ if (x < 1)
+ fun_l12_n741(x)
+ else
+ fun_l12_n356(x)
+ end
+end
+
+def fun_l11_n92(x)
+ if (x < 1)
+ fun_l12_n418(x)
+ else
+ fun_l12_n184(x)
+ end
+end
+
+def fun_l11_n93(x)
+ if (x < 1)
+ fun_l12_n427(x)
+ else
+ fun_l12_n136(x)
+ end
+end
+
+def fun_l11_n94(x)
+ if (x < 1)
+ fun_l12_n968(x)
+ else
+ fun_l12_n647(x)
+ end
+end
+
+def fun_l11_n95(x)
+ if (x < 1)
+ fun_l12_n641(x)
+ else
+ fun_l12_n675(x)
+ end
+end
+
+def fun_l11_n96(x)
+ if (x < 1)
+ fun_l12_n465(x)
+ else
+ fun_l12_n507(x)
+ end
+end
+
+def fun_l11_n97(x)
+ if (x < 1)
+ fun_l12_n910(x)
+ else
+ fun_l12_n718(x)
+ end
+end
+
+def fun_l11_n98(x)
+ if (x < 1)
+ fun_l12_n686(x)
+ else
+ fun_l12_n94(x)
+ end
+end
+
+def fun_l11_n99(x)
+ if (x < 1)
+ fun_l12_n94(x)
+ else
+ fun_l12_n632(x)
+ end
+end
+
+def fun_l11_n100(x)
+ if (x < 1)
+ fun_l12_n270(x)
+ else
+ fun_l12_n228(x)
+ end
+end
+
+def fun_l11_n101(x)
+ if (x < 1)
+ fun_l12_n569(x)
+ else
+ fun_l12_n492(x)
+ end
+end
+
+def fun_l11_n102(x)
+ if (x < 1)
+ fun_l12_n187(x)
+ else
+ fun_l12_n183(x)
+ end
+end
+
+def fun_l11_n103(x)
+ if (x < 1)
+ fun_l12_n894(x)
+ else
+ fun_l12_n655(x)
+ end
+end
+
+def fun_l11_n104(x)
+ if (x < 1)
+ fun_l12_n347(x)
+ else
+ fun_l12_n467(x)
+ end
+end
+
+def fun_l11_n105(x)
+ if (x < 1)
+ fun_l12_n198(x)
+ else
+ fun_l12_n838(x)
+ end
+end
+
+def fun_l11_n106(x)
+ if (x < 1)
+ fun_l12_n941(x)
+ else
+ fun_l12_n98(x)
+ end
+end
+
+def fun_l11_n107(x)
+ if (x < 1)
+ fun_l12_n406(x)
+ else
+ fun_l12_n773(x)
+ end
+end
+
+def fun_l11_n108(x)
+ if (x < 1)
+ fun_l12_n980(x)
+ else
+ fun_l12_n508(x)
+ end
+end
+
+def fun_l11_n109(x)
+ if (x < 1)
+ fun_l12_n286(x)
+ else
+ fun_l12_n928(x)
+ end
+end
+
+def fun_l11_n110(x)
+ if (x < 1)
+ fun_l12_n710(x)
+ else
+ fun_l12_n20(x)
+ end
+end
+
+def fun_l11_n111(x)
+ if (x < 1)
+ fun_l12_n358(x)
+ else
+ fun_l12_n549(x)
+ end
+end
+
+def fun_l11_n112(x)
+ if (x < 1)
+ fun_l12_n359(x)
+ else
+ fun_l12_n548(x)
+ end
+end
+
+def fun_l11_n113(x)
+ if (x < 1)
+ fun_l12_n665(x)
+ else
+ fun_l12_n802(x)
+ end
+end
+
+def fun_l11_n114(x)
+ if (x < 1)
+ fun_l12_n199(x)
+ else
+ fun_l12_n904(x)
+ end
+end
+
+def fun_l11_n115(x)
+ if (x < 1)
+ fun_l12_n995(x)
+ else
+ fun_l12_n319(x)
+ end
+end
+
+def fun_l11_n116(x)
+ if (x < 1)
+ fun_l12_n873(x)
+ else
+ fun_l12_n786(x)
+ end
+end
+
+def fun_l11_n117(x)
+ if (x < 1)
+ fun_l12_n147(x)
+ else
+ fun_l12_n542(x)
+ end
+end
+
+def fun_l11_n118(x)
+ if (x < 1)
+ fun_l12_n669(x)
+ else
+ fun_l12_n871(x)
+ end
+end
+
+def fun_l11_n119(x)
+ if (x < 1)
+ fun_l12_n552(x)
+ else
+ fun_l12_n998(x)
+ end
+end
+
+def fun_l11_n120(x)
+ if (x < 1)
+ fun_l12_n300(x)
+ else
+ fun_l12_n333(x)
+ end
+end
+
+def fun_l11_n121(x)
+ if (x < 1)
+ fun_l12_n846(x)
+ else
+ fun_l12_n133(x)
+ end
+end
+
+def fun_l11_n122(x)
+ if (x < 1)
+ fun_l12_n946(x)
+ else
+ fun_l12_n540(x)
+ end
+end
+
+def fun_l11_n123(x)
+ if (x < 1)
+ fun_l12_n71(x)
+ else
+ fun_l12_n264(x)
+ end
+end
+
+def fun_l11_n124(x)
+ if (x < 1)
+ fun_l12_n410(x)
+ else
+ fun_l12_n60(x)
+ end
+end
+
+def fun_l11_n125(x)
+ if (x < 1)
+ fun_l12_n62(x)
+ else
+ fun_l12_n211(x)
+ end
+end
+
+def fun_l11_n126(x)
+ if (x < 1)
+ fun_l12_n252(x)
+ else
+ fun_l12_n635(x)
+ end
+end
+
+def fun_l11_n127(x)
+ if (x < 1)
+ fun_l12_n444(x)
+ else
+ fun_l12_n735(x)
+ end
+end
+
+def fun_l11_n128(x)
+ if (x < 1)
+ fun_l12_n3(x)
+ else
+ fun_l12_n403(x)
+ end
+end
+
+def fun_l11_n129(x)
+ if (x < 1)
+ fun_l12_n121(x)
+ else
+ fun_l12_n882(x)
+ end
+end
+
+def fun_l11_n130(x)
+ if (x < 1)
+ fun_l12_n985(x)
+ else
+ fun_l12_n983(x)
+ end
+end
+
+def fun_l11_n131(x)
+ if (x < 1)
+ fun_l12_n413(x)
+ else
+ fun_l12_n117(x)
+ end
+end
+
+def fun_l11_n132(x)
+ if (x < 1)
+ fun_l12_n856(x)
+ else
+ fun_l12_n312(x)
+ end
+end
+
+def fun_l11_n133(x)
+ if (x < 1)
+ fun_l12_n249(x)
+ else
+ fun_l12_n870(x)
+ end
+end
+
+def fun_l11_n134(x)
+ if (x < 1)
+ fun_l12_n367(x)
+ else
+ fun_l12_n748(x)
+ end
+end
+
+def fun_l11_n135(x)
+ if (x < 1)
+ fun_l12_n670(x)
+ else
+ fun_l12_n464(x)
+ end
+end
+
+def fun_l11_n136(x)
+ if (x < 1)
+ fun_l12_n698(x)
+ else
+ fun_l12_n238(x)
+ end
+end
+
+def fun_l11_n137(x)
+ if (x < 1)
+ fun_l12_n856(x)
+ else
+ fun_l12_n660(x)
+ end
+end
+
+def fun_l11_n138(x)
+ if (x < 1)
+ fun_l12_n693(x)
+ else
+ fun_l12_n793(x)
+ end
+end
+
+def fun_l11_n139(x)
+ if (x < 1)
+ fun_l12_n959(x)
+ else
+ fun_l12_n377(x)
+ end
+end
+
+def fun_l11_n140(x)
+ if (x < 1)
+ fun_l12_n24(x)
+ else
+ fun_l12_n250(x)
+ end
+end
+
+def fun_l11_n141(x)
+ if (x < 1)
+ fun_l12_n270(x)
+ else
+ fun_l12_n720(x)
+ end
+end
+
+def fun_l11_n142(x)
+ if (x < 1)
+ fun_l12_n775(x)
+ else
+ fun_l12_n781(x)
+ end
+end
+
+def fun_l11_n143(x)
+ if (x < 1)
+ fun_l12_n266(x)
+ else
+ fun_l12_n608(x)
+ end
+end
+
+def fun_l11_n144(x)
+ if (x < 1)
+ fun_l12_n196(x)
+ else
+ fun_l12_n70(x)
+ end
+end
+
+def fun_l11_n145(x)
+ if (x < 1)
+ fun_l12_n100(x)
+ else
+ fun_l12_n846(x)
+ end
+end
+
+def fun_l11_n146(x)
+ if (x < 1)
+ fun_l12_n406(x)
+ else
+ fun_l12_n966(x)
+ end
+end
+
+def fun_l11_n147(x)
+ if (x < 1)
+ fun_l12_n816(x)
+ else
+ fun_l12_n54(x)
+ end
+end
+
+def fun_l11_n148(x)
+ if (x < 1)
+ fun_l12_n856(x)
+ else
+ fun_l12_n710(x)
+ end
+end
+
+def fun_l11_n149(x)
+ if (x < 1)
+ fun_l12_n597(x)
+ else
+ fun_l12_n596(x)
+ end
+end
+
+def fun_l11_n150(x)
+ if (x < 1)
+ fun_l12_n938(x)
+ else
+ fun_l12_n349(x)
+ end
+end
+
+def fun_l11_n151(x)
+ if (x < 1)
+ fun_l12_n987(x)
+ else
+ fun_l12_n231(x)
+ end
+end
+
+def fun_l11_n152(x)
+ if (x < 1)
+ fun_l12_n67(x)
+ else
+ fun_l12_n685(x)
+ end
+end
+
+def fun_l11_n153(x)
+ if (x < 1)
+ fun_l12_n786(x)
+ else
+ fun_l12_n71(x)
+ end
+end
+
+def fun_l11_n154(x)
+ if (x < 1)
+ fun_l12_n245(x)
+ else
+ fun_l12_n109(x)
+ end
+end
+
+def fun_l11_n155(x)
+ if (x < 1)
+ fun_l12_n665(x)
+ else
+ fun_l12_n565(x)
+ end
+end
+
+def fun_l11_n156(x)
+ if (x < 1)
+ fun_l12_n885(x)
+ else
+ fun_l12_n27(x)
+ end
+end
+
+def fun_l11_n157(x)
+ if (x < 1)
+ fun_l12_n704(x)
+ else
+ fun_l12_n140(x)
+ end
+end
+
+def fun_l11_n158(x)
+ if (x < 1)
+ fun_l12_n505(x)
+ else
+ fun_l12_n428(x)
+ end
+end
+
+def fun_l11_n159(x)
+ if (x < 1)
+ fun_l12_n646(x)
+ else
+ fun_l12_n250(x)
+ end
+end
+
+def fun_l11_n160(x)
+ if (x < 1)
+ fun_l12_n125(x)
+ else
+ fun_l12_n22(x)
+ end
+end
+
+def fun_l11_n161(x)
+ if (x < 1)
+ fun_l12_n49(x)
+ else
+ fun_l12_n852(x)
+ end
+end
+
+def fun_l11_n162(x)
+ if (x < 1)
+ fun_l12_n992(x)
+ else
+ fun_l12_n321(x)
+ end
+end
+
+def fun_l11_n163(x)
+ if (x < 1)
+ fun_l12_n457(x)
+ else
+ fun_l12_n162(x)
+ end
+end
+
+def fun_l11_n164(x)
+ if (x < 1)
+ fun_l12_n612(x)
+ else
+ fun_l12_n107(x)
+ end
+end
+
+def fun_l11_n165(x)
+ if (x < 1)
+ fun_l12_n786(x)
+ else
+ fun_l12_n338(x)
+ end
+end
+
+def fun_l11_n166(x)
+ if (x < 1)
+ fun_l12_n623(x)
+ else
+ fun_l12_n18(x)
+ end
+end
+
+def fun_l11_n167(x)
+ if (x < 1)
+ fun_l12_n605(x)
+ else
+ fun_l12_n963(x)
+ end
+end
+
+def fun_l11_n168(x)
+ if (x < 1)
+ fun_l12_n111(x)
+ else
+ fun_l12_n822(x)
+ end
+end
+
+def fun_l11_n169(x)
+ if (x < 1)
+ fun_l12_n502(x)
+ else
+ fun_l12_n291(x)
+ end
+end
+
+def fun_l11_n170(x)
+ if (x < 1)
+ fun_l12_n984(x)
+ else
+ fun_l12_n950(x)
+ end
+end
+
+def fun_l11_n171(x)
+ if (x < 1)
+ fun_l12_n915(x)
+ else
+ fun_l12_n81(x)
+ end
+end
+
+def fun_l11_n172(x)
+ if (x < 1)
+ fun_l12_n839(x)
+ else
+ fun_l12_n405(x)
+ end
+end
+
+def fun_l11_n173(x)
+ if (x < 1)
+ fun_l12_n331(x)
+ else
+ fun_l12_n906(x)
+ end
+end
+
+def fun_l11_n174(x)
+ if (x < 1)
+ fun_l12_n698(x)
+ else
+ fun_l12_n378(x)
+ end
+end
+
+def fun_l11_n175(x)
+ if (x < 1)
+ fun_l12_n648(x)
+ else
+ fun_l12_n824(x)
+ end
+end
+
+def fun_l11_n176(x)
+ if (x < 1)
+ fun_l12_n876(x)
+ else
+ fun_l12_n873(x)
+ end
+end
+
+def fun_l11_n177(x)
+ if (x < 1)
+ fun_l12_n932(x)
+ else
+ fun_l12_n797(x)
+ end
+end
+
+def fun_l11_n178(x)
+ if (x < 1)
+ fun_l12_n975(x)
+ else
+ fun_l12_n166(x)
+ end
+end
+
+def fun_l11_n179(x)
+ if (x < 1)
+ fun_l12_n66(x)
+ else
+ fun_l12_n624(x)
+ end
+end
+
+def fun_l11_n180(x)
+ if (x < 1)
+ fun_l12_n676(x)
+ else
+ fun_l12_n603(x)
+ end
+end
+
+def fun_l11_n181(x)
+ if (x < 1)
+ fun_l12_n80(x)
+ else
+ fun_l12_n504(x)
+ end
+end
+
+def fun_l11_n182(x)
+ if (x < 1)
+ fun_l12_n465(x)
+ else
+ fun_l12_n319(x)
+ end
+end
+
+def fun_l11_n183(x)
+ if (x < 1)
+ fun_l12_n493(x)
+ else
+ fun_l12_n412(x)
+ end
+end
+
+def fun_l11_n184(x)
+ if (x < 1)
+ fun_l12_n278(x)
+ else
+ fun_l12_n145(x)
+ end
+end
+
+def fun_l11_n185(x)
+ if (x < 1)
+ fun_l12_n328(x)
+ else
+ fun_l12_n777(x)
+ end
+end
+
+def fun_l11_n186(x)
+ if (x < 1)
+ fun_l12_n120(x)
+ else
+ fun_l12_n462(x)
+ end
+end
+
+def fun_l11_n187(x)
+ if (x < 1)
+ fun_l12_n755(x)
+ else
+ fun_l12_n260(x)
+ end
+end
+
+def fun_l11_n188(x)
+ if (x < 1)
+ fun_l12_n378(x)
+ else
+ fun_l12_n174(x)
+ end
+end
+
+def fun_l11_n189(x)
+ if (x < 1)
+ fun_l12_n100(x)
+ else
+ fun_l12_n234(x)
+ end
+end
+
+def fun_l11_n190(x)
+ if (x < 1)
+ fun_l12_n132(x)
+ else
+ fun_l12_n437(x)
+ end
+end
+
+def fun_l11_n191(x)
+ if (x < 1)
+ fun_l12_n399(x)
+ else
+ fun_l12_n989(x)
+ end
+end
+
+def fun_l11_n192(x)
+ if (x < 1)
+ fun_l12_n355(x)
+ else
+ fun_l12_n953(x)
+ end
+end
+
+def fun_l11_n193(x)
+ if (x < 1)
+ fun_l12_n139(x)
+ else
+ fun_l12_n138(x)
+ end
+end
+
+def fun_l11_n194(x)
+ if (x < 1)
+ fun_l12_n294(x)
+ else
+ fun_l12_n676(x)
+ end
+end
+
+def fun_l11_n195(x)
+ if (x < 1)
+ fun_l12_n581(x)
+ else
+ fun_l12_n549(x)
+ end
+end
+
+def fun_l11_n196(x)
+ if (x < 1)
+ fun_l12_n555(x)
+ else
+ fun_l12_n738(x)
+ end
+end
+
+def fun_l11_n197(x)
+ if (x < 1)
+ fun_l12_n170(x)
+ else
+ fun_l12_n476(x)
+ end
+end
+
+def fun_l11_n198(x)
+ if (x < 1)
+ fun_l12_n350(x)
+ else
+ fun_l12_n576(x)
+ end
+end
+
+def fun_l11_n199(x)
+ if (x < 1)
+ fun_l12_n647(x)
+ else
+ fun_l12_n94(x)
+ end
+end
+
+def fun_l11_n200(x)
+ if (x < 1)
+ fun_l12_n28(x)
+ else
+ fun_l12_n706(x)
+ end
+end
+
+def fun_l11_n201(x)
+ if (x < 1)
+ fun_l12_n189(x)
+ else
+ fun_l12_n366(x)
+ end
+end
+
+def fun_l11_n202(x)
+ if (x < 1)
+ fun_l12_n690(x)
+ else
+ fun_l12_n807(x)
+ end
+end
+
+def fun_l11_n203(x)
+ if (x < 1)
+ fun_l12_n402(x)
+ else
+ fun_l12_n685(x)
+ end
+end
+
+def fun_l11_n204(x)
+ if (x < 1)
+ fun_l12_n232(x)
+ else
+ fun_l12_n257(x)
+ end
+end
+
+def fun_l11_n205(x)
+ if (x < 1)
+ fun_l12_n108(x)
+ else
+ fun_l12_n888(x)
+ end
+end
+
+def fun_l11_n206(x)
+ if (x < 1)
+ fun_l12_n494(x)
+ else
+ fun_l12_n372(x)
+ end
+end
+
+def fun_l11_n207(x)
+ if (x < 1)
+ fun_l12_n607(x)
+ else
+ fun_l12_n336(x)
+ end
+end
+
+def fun_l11_n208(x)
+ if (x < 1)
+ fun_l12_n913(x)
+ else
+ fun_l12_n134(x)
+ end
+end
+
+def fun_l11_n209(x)
+ if (x < 1)
+ fun_l12_n996(x)
+ else
+ fun_l12_n918(x)
+ end
+end
+
+def fun_l11_n210(x)
+ if (x < 1)
+ fun_l12_n674(x)
+ else
+ fun_l12_n260(x)
+ end
+end
+
+def fun_l11_n211(x)
+ if (x < 1)
+ fun_l12_n344(x)
+ else
+ fun_l12_n219(x)
+ end
+end
+
+def fun_l11_n212(x)
+ if (x < 1)
+ fun_l12_n161(x)
+ else
+ fun_l12_n415(x)
+ end
+end
+
+def fun_l11_n213(x)
+ if (x < 1)
+ fun_l12_n65(x)
+ else
+ fun_l12_n777(x)
+ end
+end
+
+def fun_l11_n214(x)
+ if (x < 1)
+ fun_l12_n369(x)
+ else
+ fun_l12_n899(x)
+ end
+end
+
+def fun_l11_n215(x)
+ if (x < 1)
+ fun_l12_n310(x)
+ else
+ fun_l12_n118(x)
+ end
+end
+
+def fun_l11_n216(x)
+ if (x < 1)
+ fun_l12_n326(x)
+ else
+ fun_l12_n823(x)
+ end
+end
+
+def fun_l11_n217(x)
+ if (x < 1)
+ fun_l12_n981(x)
+ else
+ fun_l12_n824(x)
+ end
+end
+
+def fun_l11_n218(x)
+ if (x < 1)
+ fun_l12_n425(x)
+ else
+ fun_l12_n483(x)
+ end
+end
+
+def fun_l11_n219(x)
+ if (x < 1)
+ fun_l12_n931(x)
+ else
+ fun_l12_n366(x)
+ end
+end
+
+def fun_l11_n220(x)
+ if (x < 1)
+ fun_l12_n325(x)
+ else
+ fun_l12_n926(x)
+ end
+end
+
+def fun_l11_n221(x)
+ if (x < 1)
+ fun_l12_n924(x)
+ else
+ fun_l12_n764(x)
+ end
+end
+
+def fun_l11_n222(x)
+ if (x < 1)
+ fun_l12_n407(x)
+ else
+ fun_l12_n137(x)
+ end
+end
+
+def fun_l11_n223(x)
+ if (x < 1)
+ fun_l12_n584(x)
+ else
+ fun_l12_n294(x)
+ end
+end
+
+def fun_l11_n224(x)
+ if (x < 1)
+ fun_l12_n39(x)
+ else
+ fun_l12_n795(x)
+ end
+end
+
+def fun_l11_n225(x)
+ if (x < 1)
+ fun_l12_n37(x)
+ else
+ fun_l12_n738(x)
+ end
+end
+
+def fun_l11_n226(x)
+ if (x < 1)
+ fun_l12_n779(x)
+ else
+ fun_l12_n152(x)
+ end
+end
+
+def fun_l11_n227(x)
+ if (x < 1)
+ fun_l12_n116(x)
+ else
+ fun_l12_n589(x)
+ end
+end
+
+def fun_l11_n228(x)
+ if (x < 1)
+ fun_l12_n500(x)
+ else
+ fun_l12_n916(x)
+ end
+end
+
+def fun_l11_n229(x)
+ if (x < 1)
+ fun_l12_n443(x)
+ else
+ fun_l12_n126(x)
+ end
+end
+
+def fun_l11_n230(x)
+ if (x < 1)
+ fun_l12_n311(x)
+ else
+ fun_l12_n184(x)
+ end
+end
+
+def fun_l11_n231(x)
+ if (x < 1)
+ fun_l12_n604(x)
+ else
+ fun_l12_n171(x)
+ end
+end
+
+def fun_l11_n232(x)
+ if (x < 1)
+ fun_l12_n287(x)
+ else
+ fun_l12_n899(x)
+ end
+end
+
+def fun_l11_n233(x)
+ if (x < 1)
+ fun_l12_n834(x)
+ else
+ fun_l12_n435(x)
+ end
+end
+
+def fun_l11_n234(x)
+ if (x < 1)
+ fun_l12_n187(x)
+ else
+ fun_l12_n584(x)
+ end
+end
+
+def fun_l11_n235(x)
+ if (x < 1)
+ fun_l12_n711(x)
+ else
+ fun_l12_n542(x)
+ end
+end
+
+def fun_l11_n236(x)
+ if (x < 1)
+ fun_l12_n797(x)
+ else
+ fun_l12_n702(x)
+ end
+end
+
+def fun_l11_n237(x)
+ if (x < 1)
+ fun_l12_n645(x)
+ else
+ fun_l12_n691(x)
+ end
+end
+
+def fun_l11_n238(x)
+ if (x < 1)
+ fun_l12_n920(x)
+ else
+ fun_l12_n97(x)
+ end
+end
+
+def fun_l11_n239(x)
+ if (x < 1)
+ fun_l12_n491(x)
+ else
+ fun_l12_n172(x)
+ end
+end
+
+def fun_l11_n240(x)
+ if (x < 1)
+ fun_l12_n882(x)
+ else
+ fun_l12_n596(x)
+ end
+end
+
+def fun_l11_n241(x)
+ if (x < 1)
+ fun_l12_n178(x)
+ else
+ fun_l12_n671(x)
+ end
+end
+
+def fun_l11_n242(x)
+ if (x < 1)
+ fun_l12_n483(x)
+ else
+ fun_l12_n143(x)
+ end
+end
+
+def fun_l11_n243(x)
+ if (x < 1)
+ fun_l12_n677(x)
+ else
+ fun_l12_n542(x)
+ end
+end
+
+def fun_l11_n244(x)
+ if (x < 1)
+ fun_l12_n676(x)
+ else
+ fun_l12_n873(x)
+ end
+end
+
+def fun_l11_n245(x)
+ if (x < 1)
+ fun_l12_n393(x)
+ else
+ fun_l12_n532(x)
+ end
+end
+
+def fun_l11_n246(x)
+ if (x < 1)
+ fun_l12_n704(x)
+ else
+ fun_l12_n885(x)
+ end
+end
+
+def fun_l11_n247(x)
+ if (x < 1)
+ fun_l12_n668(x)
+ else
+ fun_l12_n305(x)
+ end
+end
+
+def fun_l11_n248(x)
+ if (x < 1)
+ fun_l12_n925(x)
+ else
+ fun_l12_n342(x)
+ end
+end
+
+def fun_l11_n249(x)
+ if (x < 1)
+ fun_l12_n487(x)
+ else
+ fun_l12_n517(x)
+ end
+end
+
+def fun_l11_n250(x)
+ if (x < 1)
+ fun_l12_n889(x)
+ else
+ fun_l12_n91(x)
+ end
+end
+
+def fun_l11_n251(x)
+ if (x < 1)
+ fun_l12_n908(x)
+ else
+ fun_l12_n645(x)
+ end
+end
+
+def fun_l11_n252(x)
+ if (x < 1)
+ fun_l12_n747(x)
+ else
+ fun_l12_n736(x)
+ end
+end
+
+def fun_l11_n253(x)
+ if (x < 1)
+ fun_l12_n749(x)
+ else
+ fun_l12_n264(x)
+ end
+end
+
+def fun_l11_n254(x)
+ if (x < 1)
+ fun_l12_n353(x)
+ else
+ fun_l12_n120(x)
+ end
+end
+
+def fun_l11_n255(x)
+ if (x < 1)
+ fun_l12_n231(x)
+ else
+ fun_l12_n211(x)
+ end
+end
+
+def fun_l11_n256(x)
+ if (x < 1)
+ fun_l12_n66(x)
+ else
+ fun_l12_n998(x)
+ end
+end
+
+def fun_l11_n257(x)
+ if (x < 1)
+ fun_l12_n818(x)
+ else
+ fun_l12_n37(x)
+ end
+end
+
+def fun_l11_n258(x)
+ if (x < 1)
+ fun_l12_n96(x)
+ else
+ fun_l12_n489(x)
+ end
+end
+
+def fun_l11_n259(x)
+ if (x < 1)
+ fun_l12_n86(x)
+ else
+ fun_l12_n432(x)
+ end
+end
+
+def fun_l11_n260(x)
+ if (x < 1)
+ fun_l12_n774(x)
+ else
+ fun_l12_n203(x)
+ end
+end
+
+def fun_l11_n261(x)
+ if (x < 1)
+ fun_l12_n935(x)
+ else
+ fun_l12_n29(x)
+ end
+end
+
+def fun_l11_n262(x)
+ if (x < 1)
+ fun_l12_n599(x)
+ else
+ fun_l12_n204(x)
+ end
+end
+
+def fun_l11_n263(x)
+ if (x < 1)
+ fun_l12_n63(x)
+ else
+ fun_l12_n866(x)
+ end
+end
+
+def fun_l11_n264(x)
+ if (x < 1)
+ fun_l12_n892(x)
+ else
+ fun_l12_n847(x)
+ end
+end
+
+def fun_l11_n265(x)
+ if (x < 1)
+ fun_l12_n695(x)
+ else
+ fun_l12_n881(x)
+ end
+end
+
+def fun_l11_n266(x)
+ if (x < 1)
+ fun_l12_n176(x)
+ else
+ fun_l12_n39(x)
+ end
+end
+
+def fun_l11_n267(x)
+ if (x < 1)
+ fun_l12_n448(x)
+ else
+ fun_l12_n744(x)
+ end
+end
+
+def fun_l11_n268(x)
+ if (x < 1)
+ fun_l12_n587(x)
+ else
+ fun_l12_n462(x)
+ end
+end
+
+def fun_l11_n269(x)
+ if (x < 1)
+ fun_l12_n670(x)
+ else
+ fun_l12_n797(x)
+ end
+end
+
+def fun_l11_n270(x)
+ if (x < 1)
+ fun_l12_n856(x)
+ else
+ fun_l12_n903(x)
+ end
+end
+
+def fun_l11_n271(x)
+ if (x < 1)
+ fun_l12_n914(x)
+ else
+ fun_l12_n459(x)
+ end
+end
+
+def fun_l11_n272(x)
+ if (x < 1)
+ fun_l12_n932(x)
+ else
+ fun_l12_n10(x)
+ end
+end
+
+def fun_l11_n273(x)
+ if (x < 1)
+ fun_l12_n554(x)
+ else
+ fun_l12_n528(x)
+ end
+end
+
+def fun_l11_n274(x)
+ if (x < 1)
+ fun_l12_n698(x)
+ else
+ fun_l12_n899(x)
+ end
+end
+
+def fun_l11_n275(x)
+ if (x < 1)
+ fun_l12_n907(x)
+ else
+ fun_l12_n945(x)
+ end
+end
+
+def fun_l11_n276(x)
+ if (x < 1)
+ fun_l12_n421(x)
+ else
+ fun_l12_n575(x)
+ end
+end
+
+def fun_l11_n277(x)
+ if (x < 1)
+ fun_l12_n757(x)
+ else
+ fun_l12_n808(x)
+ end
+end
+
+def fun_l11_n278(x)
+ if (x < 1)
+ fun_l12_n527(x)
+ else
+ fun_l12_n438(x)
+ end
+end
+
+def fun_l11_n279(x)
+ if (x < 1)
+ fun_l12_n263(x)
+ else
+ fun_l12_n842(x)
+ end
+end
+
+def fun_l11_n280(x)
+ if (x < 1)
+ fun_l12_n603(x)
+ else
+ fun_l12_n899(x)
+ end
+end
+
+def fun_l11_n281(x)
+ if (x < 1)
+ fun_l12_n486(x)
+ else
+ fun_l12_n380(x)
+ end
+end
+
+def fun_l11_n282(x)
+ if (x < 1)
+ fun_l12_n699(x)
+ else
+ fun_l12_n199(x)
+ end
+end
+
+def fun_l11_n283(x)
+ if (x < 1)
+ fun_l12_n422(x)
+ else
+ fun_l12_n258(x)
+ end
+end
+
+def fun_l11_n284(x)
+ if (x < 1)
+ fun_l12_n255(x)
+ else
+ fun_l12_n752(x)
+ end
+end
+
+def fun_l11_n285(x)
+ if (x < 1)
+ fun_l12_n506(x)
+ else
+ fun_l12_n801(x)
+ end
+end
+
+def fun_l11_n286(x)
+ if (x < 1)
+ fun_l12_n535(x)
+ else
+ fun_l12_n892(x)
+ end
+end
+
+def fun_l11_n287(x)
+ if (x < 1)
+ fun_l12_n547(x)
+ else
+ fun_l12_n74(x)
+ end
+end
+
+def fun_l11_n288(x)
+ if (x < 1)
+ fun_l12_n923(x)
+ else
+ fun_l12_n135(x)
+ end
+end
+
+def fun_l11_n289(x)
+ if (x < 1)
+ fun_l12_n78(x)
+ else
+ fun_l12_n704(x)
+ end
+end
+
+def fun_l11_n290(x)
+ if (x < 1)
+ fun_l12_n771(x)
+ else
+ fun_l12_n915(x)
+ end
+end
+
+def fun_l11_n291(x)
+ if (x < 1)
+ fun_l12_n184(x)
+ else
+ fun_l12_n188(x)
+ end
+end
+
+def fun_l11_n292(x)
+ if (x < 1)
+ fun_l12_n736(x)
+ else
+ fun_l12_n190(x)
+ end
+end
+
+def fun_l11_n293(x)
+ if (x < 1)
+ fun_l12_n301(x)
+ else
+ fun_l12_n745(x)
+ end
+end
+
+def fun_l11_n294(x)
+ if (x < 1)
+ fun_l12_n525(x)
+ else
+ fun_l12_n603(x)
+ end
+end
+
+def fun_l11_n295(x)
+ if (x < 1)
+ fun_l12_n339(x)
+ else
+ fun_l12_n996(x)
+ end
+end
+
+def fun_l11_n296(x)
+ if (x < 1)
+ fun_l12_n491(x)
+ else
+ fun_l12_n601(x)
+ end
+end
+
+def fun_l11_n297(x)
+ if (x < 1)
+ fun_l12_n449(x)
+ else
+ fun_l12_n361(x)
+ end
+end
+
+def fun_l11_n298(x)
+ if (x < 1)
+ fun_l12_n617(x)
+ else
+ fun_l12_n346(x)
+ end
+end
+
+def fun_l11_n299(x)
+ if (x < 1)
+ fun_l12_n578(x)
+ else
+ fun_l12_n147(x)
+ end
+end
+
+def fun_l11_n300(x)
+ if (x < 1)
+ fun_l12_n73(x)
+ else
+ fun_l12_n360(x)
+ end
+end
+
+def fun_l11_n301(x)
+ if (x < 1)
+ fun_l12_n398(x)
+ else
+ fun_l12_n749(x)
+ end
+end
+
+def fun_l11_n302(x)
+ if (x < 1)
+ fun_l12_n871(x)
+ else
+ fun_l12_n745(x)
+ end
+end
+
+def fun_l11_n303(x)
+ if (x < 1)
+ fun_l12_n669(x)
+ else
+ fun_l12_n196(x)
+ end
+end
+
+def fun_l11_n304(x)
+ if (x < 1)
+ fun_l12_n202(x)
+ else
+ fun_l12_n173(x)
+ end
+end
+
+def fun_l11_n305(x)
+ if (x < 1)
+ fun_l12_n975(x)
+ else
+ fun_l12_n859(x)
+ end
+end
+
+def fun_l11_n306(x)
+ if (x < 1)
+ fun_l12_n776(x)
+ else
+ fun_l12_n433(x)
+ end
+end
+
+def fun_l11_n307(x)
+ if (x < 1)
+ fun_l12_n760(x)
+ else
+ fun_l12_n4(x)
+ end
+end
+
+def fun_l11_n308(x)
+ if (x < 1)
+ fun_l12_n834(x)
+ else
+ fun_l12_n276(x)
+ end
+end
+
+def fun_l11_n309(x)
+ if (x < 1)
+ fun_l12_n162(x)
+ else
+ fun_l12_n741(x)
+ end
+end
+
+def fun_l11_n310(x)
+ if (x < 1)
+ fun_l12_n231(x)
+ else
+ fun_l12_n646(x)
+ end
+end
+
+def fun_l11_n311(x)
+ if (x < 1)
+ fun_l12_n90(x)
+ else
+ fun_l12_n46(x)
+ end
+end
+
+def fun_l11_n312(x)
+ if (x < 1)
+ fun_l12_n101(x)
+ else
+ fun_l12_n75(x)
+ end
+end
+
+def fun_l11_n313(x)
+ if (x < 1)
+ fun_l12_n415(x)
+ else
+ fun_l12_n535(x)
+ end
+end
+
+def fun_l11_n314(x)
+ if (x < 1)
+ fun_l12_n550(x)
+ else
+ fun_l12_n305(x)
+ end
+end
+
+def fun_l11_n315(x)
+ if (x < 1)
+ fun_l12_n971(x)
+ else
+ fun_l12_n700(x)
+ end
+end
+
+def fun_l11_n316(x)
+ if (x < 1)
+ fun_l12_n942(x)
+ else
+ fun_l12_n793(x)
+ end
+end
+
+def fun_l11_n317(x)
+ if (x < 1)
+ fun_l12_n771(x)
+ else
+ fun_l12_n383(x)
+ end
+end
+
+def fun_l11_n318(x)
+ if (x < 1)
+ fun_l12_n846(x)
+ else
+ fun_l12_n504(x)
+ end
+end
+
+def fun_l11_n319(x)
+ if (x < 1)
+ fun_l12_n28(x)
+ else
+ fun_l12_n174(x)
+ end
+end
+
+def fun_l11_n320(x)
+ if (x < 1)
+ fun_l12_n437(x)
+ else
+ fun_l12_n355(x)
+ end
+end
+
+def fun_l11_n321(x)
+ if (x < 1)
+ fun_l12_n954(x)
+ else
+ fun_l12_n78(x)
+ end
+end
+
+def fun_l11_n322(x)
+ if (x < 1)
+ fun_l12_n256(x)
+ else
+ fun_l12_n729(x)
+ end
+end
+
+def fun_l11_n323(x)
+ if (x < 1)
+ fun_l12_n41(x)
+ else
+ fun_l12_n88(x)
+ end
+end
+
+def fun_l11_n324(x)
+ if (x < 1)
+ fun_l12_n256(x)
+ else
+ fun_l12_n162(x)
+ end
+end
+
+def fun_l11_n325(x)
+ if (x < 1)
+ fun_l12_n143(x)
+ else
+ fun_l12_n506(x)
+ end
+end
+
+def fun_l11_n326(x)
+ if (x < 1)
+ fun_l12_n686(x)
+ else
+ fun_l12_n968(x)
+ end
+end
+
+def fun_l11_n327(x)
+ if (x < 1)
+ fun_l12_n235(x)
+ else
+ fun_l12_n246(x)
+ end
+end
+
+def fun_l11_n328(x)
+ if (x < 1)
+ fun_l12_n85(x)
+ else
+ fun_l12_n125(x)
+ end
+end
+
+def fun_l11_n329(x)
+ if (x < 1)
+ fun_l12_n877(x)
+ else
+ fun_l12_n193(x)
+ end
+end
+
+def fun_l11_n330(x)
+ if (x < 1)
+ fun_l12_n678(x)
+ else
+ fun_l12_n147(x)
+ end
+end
+
+def fun_l11_n331(x)
+ if (x < 1)
+ fun_l12_n402(x)
+ else
+ fun_l12_n747(x)
+ end
+end
+
+def fun_l11_n332(x)
+ if (x < 1)
+ fun_l12_n390(x)
+ else
+ fun_l12_n852(x)
+ end
+end
+
+def fun_l11_n333(x)
+ if (x < 1)
+ fun_l12_n299(x)
+ else
+ fun_l12_n122(x)
+ end
+end
+
+def fun_l11_n334(x)
+ if (x < 1)
+ fun_l12_n398(x)
+ else
+ fun_l12_n886(x)
+ end
+end
+
+def fun_l11_n335(x)
+ if (x < 1)
+ fun_l12_n128(x)
+ else
+ fun_l12_n729(x)
+ end
+end
+
+def fun_l11_n336(x)
+ if (x < 1)
+ fun_l12_n611(x)
+ else
+ fun_l12_n75(x)
+ end
+end
+
+def fun_l11_n337(x)
+ if (x < 1)
+ fun_l12_n327(x)
+ else
+ fun_l12_n442(x)
+ end
+end
+
+def fun_l11_n338(x)
+ if (x < 1)
+ fun_l12_n353(x)
+ else
+ fun_l12_n259(x)
+ end
+end
+
+def fun_l11_n339(x)
+ if (x < 1)
+ fun_l12_n173(x)
+ else
+ fun_l12_n846(x)
+ end
+end
+
+def fun_l11_n340(x)
+ if (x < 1)
+ fun_l12_n579(x)
+ else
+ fun_l12_n869(x)
+ end
+end
+
+def fun_l11_n341(x)
+ if (x < 1)
+ fun_l12_n336(x)
+ else
+ fun_l12_n364(x)
+ end
+end
+
+def fun_l11_n342(x)
+ if (x < 1)
+ fun_l12_n355(x)
+ else
+ fun_l12_n317(x)
+ end
+end
+
+def fun_l11_n343(x)
+ if (x < 1)
+ fun_l12_n560(x)
+ else
+ fun_l12_n202(x)
+ end
+end
+
+def fun_l11_n344(x)
+ if (x < 1)
+ fun_l12_n232(x)
+ else
+ fun_l12_n447(x)
+ end
+end
+
+def fun_l11_n345(x)
+ if (x < 1)
+ fun_l12_n712(x)
+ else
+ fun_l12_n205(x)
+ end
+end
+
+def fun_l11_n346(x)
+ if (x < 1)
+ fun_l12_n102(x)
+ else
+ fun_l12_n785(x)
+ end
+end
+
+def fun_l11_n347(x)
+ if (x < 1)
+ fun_l12_n545(x)
+ else
+ fun_l12_n186(x)
+ end
+end
+
+def fun_l11_n348(x)
+ if (x < 1)
+ fun_l12_n530(x)
+ else
+ fun_l12_n705(x)
+ end
+end
+
+def fun_l11_n349(x)
+ if (x < 1)
+ fun_l12_n428(x)
+ else
+ fun_l12_n295(x)
+ end
+end
+
+def fun_l11_n350(x)
+ if (x < 1)
+ fun_l12_n855(x)
+ else
+ fun_l12_n232(x)
+ end
+end
+
+def fun_l11_n351(x)
+ if (x < 1)
+ fun_l12_n759(x)
+ else
+ fun_l12_n13(x)
+ end
+end
+
+def fun_l11_n352(x)
+ if (x < 1)
+ fun_l12_n366(x)
+ else
+ fun_l12_n700(x)
+ end
+end
+
+def fun_l11_n353(x)
+ if (x < 1)
+ fun_l12_n814(x)
+ else
+ fun_l12_n101(x)
+ end
+end
+
+def fun_l11_n354(x)
+ if (x < 1)
+ fun_l12_n788(x)
+ else
+ fun_l12_n509(x)
+ end
+end
+
+def fun_l11_n355(x)
+ if (x < 1)
+ fun_l12_n619(x)
+ else
+ fun_l12_n531(x)
+ end
+end
+
+def fun_l11_n356(x)
+ if (x < 1)
+ fun_l12_n142(x)
+ else
+ fun_l12_n586(x)
+ end
+end
+
+def fun_l11_n357(x)
+ if (x < 1)
+ fun_l12_n772(x)
+ else
+ fun_l12_n714(x)
+ end
+end
+
+def fun_l11_n358(x)
+ if (x < 1)
+ fun_l12_n506(x)
+ else
+ fun_l12_n405(x)
+ end
+end
+
+def fun_l11_n359(x)
+ if (x < 1)
+ fun_l12_n991(x)
+ else
+ fun_l12_n141(x)
+ end
+end
+
+def fun_l11_n360(x)
+ if (x < 1)
+ fun_l12_n156(x)
+ else
+ fun_l12_n67(x)
+ end
+end
+
+def fun_l11_n361(x)
+ if (x < 1)
+ fun_l12_n525(x)
+ else
+ fun_l12_n293(x)
+ end
+end
+
+def fun_l11_n362(x)
+ if (x < 1)
+ fun_l12_n396(x)
+ else
+ fun_l12_n931(x)
+ end
+end
+
+def fun_l11_n363(x)
+ if (x < 1)
+ fun_l12_n153(x)
+ else
+ fun_l12_n831(x)
+ end
+end
+
+def fun_l11_n364(x)
+ if (x < 1)
+ fun_l12_n240(x)
+ else
+ fun_l12_n450(x)
+ end
+end
+
+def fun_l11_n365(x)
+ if (x < 1)
+ fun_l12_n514(x)
+ else
+ fun_l12_n312(x)
+ end
+end
+
+def fun_l11_n366(x)
+ if (x < 1)
+ fun_l12_n456(x)
+ else
+ fun_l12_n221(x)
+ end
+end
+
+def fun_l11_n367(x)
+ if (x < 1)
+ fun_l12_n920(x)
+ else
+ fun_l12_n699(x)
+ end
+end
+
+def fun_l11_n368(x)
+ if (x < 1)
+ fun_l12_n738(x)
+ else
+ fun_l12_n793(x)
+ end
+end
+
+def fun_l11_n369(x)
+ if (x < 1)
+ fun_l12_n13(x)
+ else
+ fun_l12_n812(x)
+ end
+end
+
+def fun_l11_n370(x)
+ if (x < 1)
+ fun_l12_n392(x)
+ else
+ fun_l12_n342(x)
+ end
+end
+
+def fun_l11_n371(x)
+ if (x < 1)
+ fun_l12_n470(x)
+ else
+ fun_l12_n623(x)
+ end
+end
+
+def fun_l11_n372(x)
+ if (x < 1)
+ fun_l12_n26(x)
+ else
+ fun_l12_n138(x)
+ end
+end
+
+def fun_l11_n373(x)
+ if (x < 1)
+ fun_l12_n70(x)
+ else
+ fun_l12_n682(x)
+ end
+end
+
+def fun_l11_n374(x)
+ if (x < 1)
+ fun_l12_n413(x)
+ else
+ fun_l12_n900(x)
+ end
+end
+
+def fun_l11_n375(x)
+ if (x < 1)
+ fun_l12_n328(x)
+ else
+ fun_l12_n848(x)
+ end
+end
+
+def fun_l11_n376(x)
+ if (x < 1)
+ fun_l12_n604(x)
+ else
+ fun_l12_n823(x)
+ end
+end
+
+def fun_l11_n377(x)
+ if (x < 1)
+ fun_l12_n469(x)
+ else
+ fun_l12_n868(x)
+ end
+end
+
+def fun_l11_n378(x)
+ if (x < 1)
+ fun_l12_n241(x)
+ else
+ fun_l12_n571(x)
+ end
+end
+
+def fun_l11_n379(x)
+ if (x < 1)
+ fun_l12_n669(x)
+ else
+ fun_l12_n75(x)
+ end
+end
+
+def fun_l11_n380(x)
+ if (x < 1)
+ fun_l12_n587(x)
+ else
+ fun_l12_n454(x)
+ end
+end
+
+def fun_l11_n381(x)
+ if (x < 1)
+ fun_l12_n210(x)
+ else
+ fun_l12_n512(x)
+ end
+end
+
+def fun_l11_n382(x)
+ if (x < 1)
+ fun_l12_n73(x)
+ else
+ fun_l12_n981(x)
+ end
+end
+
+def fun_l11_n383(x)
+ if (x < 1)
+ fun_l12_n59(x)
+ else
+ fun_l12_n274(x)
+ end
+end
+
+def fun_l11_n384(x)
+ if (x < 1)
+ fun_l12_n242(x)
+ else
+ fun_l12_n631(x)
+ end
+end
+
+def fun_l11_n385(x)
+ if (x < 1)
+ fun_l12_n933(x)
+ else
+ fun_l12_n678(x)
+ end
+end
+
+def fun_l11_n386(x)
+ if (x < 1)
+ fun_l12_n695(x)
+ else
+ fun_l12_n766(x)
+ end
+end
+
+def fun_l11_n387(x)
+ if (x < 1)
+ fun_l12_n49(x)
+ else
+ fun_l12_n459(x)
+ end
+end
+
+def fun_l11_n388(x)
+ if (x < 1)
+ fun_l12_n751(x)
+ else
+ fun_l12_n594(x)
+ end
+end
+
+def fun_l11_n389(x)
+ if (x < 1)
+ fun_l12_n149(x)
+ else
+ fun_l12_n290(x)
+ end
+end
+
+def fun_l11_n390(x)
+ if (x < 1)
+ fun_l12_n307(x)
+ else
+ fun_l12_n723(x)
+ end
+end
+
+def fun_l11_n391(x)
+ if (x < 1)
+ fun_l12_n606(x)
+ else
+ fun_l12_n97(x)
+ end
+end
+
+def fun_l11_n392(x)
+ if (x < 1)
+ fun_l12_n31(x)
+ else
+ fun_l12_n610(x)
+ end
+end
+
+def fun_l11_n393(x)
+ if (x < 1)
+ fun_l12_n798(x)
+ else
+ fun_l12_n940(x)
+ end
+end
+
+def fun_l11_n394(x)
+ if (x < 1)
+ fun_l12_n131(x)
+ else
+ fun_l12_n79(x)
+ end
+end
+
+def fun_l11_n395(x)
+ if (x < 1)
+ fun_l12_n230(x)
+ else
+ fun_l12_n72(x)
+ end
+end
+
+def fun_l11_n396(x)
+ if (x < 1)
+ fun_l12_n506(x)
+ else
+ fun_l12_n433(x)
+ end
+end
+
+def fun_l11_n397(x)
+ if (x < 1)
+ fun_l12_n410(x)
+ else
+ fun_l12_n648(x)
+ end
+end
+
+def fun_l11_n398(x)
+ if (x < 1)
+ fun_l12_n946(x)
+ else
+ fun_l12_n630(x)
+ end
+end
+
+def fun_l11_n399(x)
+ if (x < 1)
+ fun_l12_n394(x)
+ else
+ fun_l12_n220(x)
+ end
+end
+
+def fun_l11_n400(x)
+ if (x < 1)
+ fun_l12_n761(x)
+ else
+ fun_l12_n407(x)
+ end
+end
+
+def fun_l11_n401(x)
+ if (x < 1)
+ fun_l12_n386(x)
+ else
+ fun_l12_n411(x)
+ end
+end
+
+def fun_l11_n402(x)
+ if (x < 1)
+ fun_l12_n290(x)
+ else
+ fun_l12_n334(x)
+ end
+end
+
+def fun_l11_n403(x)
+ if (x < 1)
+ fun_l12_n600(x)
+ else
+ fun_l12_n282(x)
+ end
+end
+
+def fun_l11_n404(x)
+ if (x < 1)
+ fun_l12_n334(x)
+ else
+ fun_l12_n214(x)
+ end
+end
+
+def fun_l11_n405(x)
+ if (x < 1)
+ fun_l12_n103(x)
+ else
+ fun_l12_n188(x)
+ end
+end
+
+def fun_l11_n406(x)
+ if (x < 1)
+ fun_l12_n755(x)
+ else
+ fun_l12_n773(x)
+ end
+end
+
+def fun_l11_n407(x)
+ if (x < 1)
+ fun_l12_n269(x)
+ else
+ fun_l12_n579(x)
+ end
+end
+
+def fun_l11_n408(x)
+ if (x < 1)
+ fun_l12_n54(x)
+ else
+ fun_l12_n961(x)
+ end
+end
+
+def fun_l11_n409(x)
+ if (x < 1)
+ fun_l12_n699(x)
+ else
+ fun_l12_n117(x)
+ end
+end
+
+def fun_l11_n410(x)
+ if (x < 1)
+ fun_l12_n802(x)
+ else
+ fun_l12_n65(x)
+ end
+end
+
+def fun_l11_n411(x)
+ if (x < 1)
+ fun_l12_n776(x)
+ else
+ fun_l12_n676(x)
+ end
+end
+
+def fun_l11_n412(x)
+ if (x < 1)
+ fun_l12_n520(x)
+ else
+ fun_l12_n447(x)
+ end
+end
+
+def fun_l11_n413(x)
+ if (x < 1)
+ fun_l12_n856(x)
+ else
+ fun_l12_n285(x)
+ end
+end
+
+def fun_l11_n414(x)
+ if (x < 1)
+ fun_l12_n797(x)
+ else
+ fun_l12_n590(x)
+ end
+end
+
+def fun_l11_n415(x)
+ if (x < 1)
+ fun_l12_n128(x)
+ else
+ fun_l12_n677(x)
+ end
+end
+
+def fun_l11_n416(x)
+ if (x < 1)
+ fun_l12_n422(x)
+ else
+ fun_l12_n632(x)
+ end
+end
+
+def fun_l11_n417(x)
+ if (x < 1)
+ fun_l12_n159(x)
+ else
+ fun_l12_n722(x)
+ end
+end
+
+def fun_l11_n418(x)
+ if (x < 1)
+ fun_l12_n989(x)
+ else
+ fun_l12_n670(x)
+ end
+end
+
+def fun_l11_n419(x)
+ if (x < 1)
+ fun_l12_n952(x)
+ else
+ fun_l12_n65(x)
+ end
+end
+
+def fun_l11_n420(x)
+ if (x < 1)
+ fun_l12_n796(x)
+ else
+ fun_l12_n493(x)
+ end
+end
+
+def fun_l11_n421(x)
+ if (x < 1)
+ fun_l12_n897(x)
+ else
+ fun_l12_n729(x)
+ end
+end
+
+def fun_l11_n422(x)
+ if (x < 1)
+ fun_l12_n557(x)
+ else
+ fun_l12_n545(x)
+ end
+end
+
+def fun_l11_n423(x)
+ if (x < 1)
+ fun_l12_n716(x)
+ else
+ fun_l12_n746(x)
+ end
+end
+
+def fun_l11_n424(x)
+ if (x < 1)
+ fun_l12_n335(x)
+ else
+ fun_l12_n968(x)
+ end
+end
+
+def fun_l11_n425(x)
+ if (x < 1)
+ fun_l12_n891(x)
+ else
+ fun_l12_n115(x)
+ end
+end
+
+def fun_l11_n426(x)
+ if (x < 1)
+ fun_l12_n757(x)
+ else
+ fun_l12_n750(x)
+ end
+end
+
+def fun_l11_n427(x)
+ if (x < 1)
+ fun_l12_n391(x)
+ else
+ fun_l12_n729(x)
+ end
+end
+
+def fun_l11_n428(x)
+ if (x < 1)
+ fun_l12_n249(x)
+ else
+ fun_l12_n347(x)
+ end
+end
+
+def fun_l11_n429(x)
+ if (x < 1)
+ fun_l12_n234(x)
+ else
+ fun_l12_n154(x)
+ end
+end
+
+def fun_l11_n430(x)
+ if (x < 1)
+ fun_l12_n890(x)
+ else
+ fun_l12_n40(x)
+ end
+end
+
+def fun_l11_n431(x)
+ if (x < 1)
+ fun_l12_n804(x)
+ else
+ fun_l12_n90(x)
+ end
+end
+
+def fun_l11_n432(x)
+ if (x < 1)
+ fun_l12_n936(x)
+ else
+ fun_l12_n127(x)
+ end
+end
+
+def fun_l11_n433(x)
+ if (x < 1)
+ fun_l12_n551(x)
+ else
+ fun_l12_n404(x)
+ end
+end
+
+def fun_l11_n434(x)
+ if (x < 1)
+ fun_l12_n246(x)
+ else
+ fun_l12_n759(x)
+ end
+end
+
+def fun_l11_n435(x)
+ if (x < 1)
+ fun_l12_n708(x)
+ else
+ fun_l12_n735(x)
+ end
+end
+
+def fun_l11_n436(x)
+ if (x < 1)
+ fun_l12_n535(x)
+ else
+ fun_l12_n785(x)
+ end
+end
+
+def fun_l11_n437(x)
+ if (x < 1)
+ fun_l12_n322(x)
+ else
+ fun_l12_n629(x)
+ end
+end
+
+def fun_l11_n438(x)
+ if (x < 1)
+ fun_l12_n986(x)
+ else
+ fun_l12_n899(x)
+ end
+end
+
+def fun_l11_n439(x)
+ if (x < 1)
+ fun_l12_n147(x)
+ else
+ fun_l12_n582(x)
+ end
+end
+
+def fun_l11_n440(x)
+ if (x < 1)
+ fun_l12_n375(x)
+ else
+ fun_l12_n667(x)
+ end
+end
+
+def fun_l11_n441(x)
+ if (x < 1)
+ fun_l12_n467(x)
+ else
+ fun_l12_n994(x)
+ end
+end
+
+def fun_l11_n442(x)
+ if (x < 1)
+ fun_l12_n176(x)
+ else
+ fun_l12_n558(x)
+ end
+end
+
+def fun_l11_n443(x)
+ if (x < 1)
+ fun_l12_n452(x)
+ else
+ fun_l12_n37(x)
+ end
+end
+
+def fun_l11_n444(x)
+ if (x < 1)
+ fun_l12_n701(x)
+ else
+ fun_l12_n382(x)
+ end
+end
+
+def fun_l11_n445(x)
+ if (x < 1)
+ fun_l12_n881(x)
+ else
+ fun_l12_n896(x)
+ end
+end
+
+def fun_l11_n446(x)
+ if (x < 1)
+ fun_l12_n901(x)
+ else
+ fun_l12_n822(x)
+ end
+end
+
+def fun_l11_n447(x)
+ if (x < 1)
+ fun_l12_n6(x)
+ else
+ fun_l12_n648(x)
+ end
+end
+
+def fun_l11_n448(x)
+ if (x < 1)
+ fun_l12_n359(x)
+ else
+ fun_l12_n682(x)
+ end
+end
+
+def fun_l11_n449(x)
+ if (x < 1)
+ fun_l12_n675(x)
+ else
+ fun_l12_n379(x)
+ end
+end
+
+def fun_l11_n450(x)
+ if (x < 1)
+ fun_l12_n254(x)
+ else
+ fun_l12_n475(x)
+ end
+end
+
+def fun_l11_n451(x)
+ if (x < 1)
+ fun_l12_n951(x)
+ else
+ fun_l12_n947(x)
+ end
+end
+
+def fun_l11_n452(x)
+ if (x < 1)
+ fun_l12_n909(x)
+ else
+ fun_l12_n703(x)
+ end
+end
+
+def fun_l11_n453(x)
+ if (x < 1)
+ fun_l12_n555(x)
+ else
+ fun_l12_n862(x)
+ end
+end
+
+def fun_l11_n454(x)
+ if (x < 1)
+ fun_l12_n379(x)
+ else
+ fun_l12_n852(x)
+ end
+end
+
+def fun_l11_n455(x)
+ if (x < 1)
+ fun_l12_n85(x)
+ else
+ fun_l12_n219(x)
+ end
+end
+
+def fun_l11_n456(x)
+ if (x < 1)
+ fun_l12_n84(x)
+ else
+ fun_l12_n678(x)
+ end
+end
+
+def fun_l11_n457(x)
+ if (x < 1)
+ fun_l12_n663(x)
+ else
+ fun_l12_n637(x)
+ end
+end
+
+def fun_l11_n458(x)
+ if (x < 1)
+ fun_l12_n627(x)
+ else
+ fun_l12_n764(x)
+ end
+end
+
+def fun_l11_n459(x)
+ if (x < 1)
+ fun_l12_n3(x)
+ else
+ fun_l12_n419(x)
+ end
+end
+
+def fun_l11_n460(x)
+ if (x < 1)
+ fun_l12_n69(x)
+ else
+ fun_l12_n802(x)
+ end
+end
+
+def fun_l11_n461(x)
+ if (x < 1)
+ fun_l12_n708(x)
+ else
+ fun_l12_n304(x)
+ end
+end
+
+def fun_l11_n462(x)
+ if (x < 1)
+ fun_l12_n323(x)
+ else
+ fun_l12_n92(x)
+ end
+end
+
+def fun_l11_n463(x)
+ if (x < 1)
+ fun_l12_n987(x)
+ else
+ fun_l12_n434(x)
+ end
+end
+
+def fun_l11_n464(x)
+ if (x < 1)
+ fun_l12_n532(x)
+ else
+ fun_l12_n82(x)
+ end
+end
+
+def fun_l11_n465(x)
+ if (x < 1)
+ fun_l12_n664(x)
+ else
+ fun_l12_n982(x)
+ end
+end
+
+def fun_l11_n466(x)
+ if (x < 1)
+ fun_l12_n488(x)
+ else
+ fun_l12_n799(x)
+ end
+end
+
+def fun_l11_n467(x)
+ if (x < 1)
+ fun_l12_n882(x)
+ else
+ fun_l12_n948(x)
+ end
+end
+
+def fun_l11_n468(x)
+ if (x < 1)
+ fun_l12_n585(x)
+ else
+ fun_l12_n528(x)
+ end
+end
+
+def fun_l11_n469(x)
+ if (x < 1)
+ fun_l12_n318(x)
+ else
+ fun_l12_n233(x)
+ end
+end
+
+def fun_l11_n470(x)
+ if (x < 1)
+ fun_l12_n537(x)
+ else
+ fun_l12_n803(x)
+ end
+end
+
+def fun_l11_n471(x)
+ if (x < 1)
+ fun_l12_n391(x)
+ else
+ fun_l12_n298(x)
+ end
+end
+
+def fun_l11_n472(x)
+ if (x < 1)
+ fun_l12_n266(x)
+ else
+ fun_l12_n345(x)
+ end
+end
+
+def fun_l11_n473(x)
+ if (x < 1)
+ fun_l12_n355(x)
+ else
+ fun_l12_n713(x)
+ end
+end
+
+def fun_l11_n474(x)
+ if (x < 1)
+ fun_l12_n352(x)
+ else
+ fun_l12_n12(x)
+ end
+end
+
+def fun_l11_n475(x)
+ if (x < 1)
+ fun_l12_n23(x)
+ else
+ fun_l12_n715(x)
+ end
+end
+
+def fun_l11_n476(x)
+ if (x < 1)
+ fun_l12_n342(x)
+ else
+ fun_l12_n323(x)
+ end
+end
+
+def fun_l11_n477(x)
+ if (x < 1)
+ fun_l12_n563(x)
+ else
+ fun_l12_n905(x)
+ end
+end
+
+def fun_l11_n478(x)
+ if (x < 1)
+ fun_l12_n313(x)
+ else
+ fun_l12_n489(x)
+ end
+end
+
+def fun_l11_n479(x)
+ if (x < 1)
+ fun_l12_n75(x)
+ else
+ fun_l12_n291(x)
+ end
+end
+
+def fun_l11_n480(x)
+ if (x < 1)
+ fun_l12_n693(x)
+ else
+ fun_l12_n991(x)
+ end
+end
+
+def fun_l11_n481(x)
+ if (x < 1)
+ fun_l12_n246(x)
+ else
+ fun_l12_n664(x)
+ end
+end
+
+def fun_l11_n482(x)
+ if (x < 1)
+ fun_l12_n524(x)
+ else
+ fun_l12_n1(x)
+ end
+end
+
+def fun_l11_n483(x)
+ if (x < 1)
+ fun_l12_n712(x)
+ else
+ fun_l12_n289(x)
+ end
+end
+
+def fun_l11_n484(x)
+ if (x < 1)
+ fun_l12_n435(x)
+ else
+ fun_l12_n163(x)
+ end
+end
+
+def fun_l11_n485(x)
+ if (x < 1)
+ fun_l12_n338(x)
+ else
+ fun_l12_n883(x)
+ end
+end
+
+def fun_l11_n486(x)
+ if (x < 1)
+ fun_l12_n958(x)
+ else
+ fun_l12_n143(x)
+ end
+end
+
+def fun_l11_n487(x)
+ if (x < 1)
+ fun_l12_n22(x)
+ else
+ fun_l12_n674(x)
+ end
+end
+
+def fun_l11_n488(x)
+ if (x < 1)
+ fun_l12_n905(x)
+ else
+ fun_l12_n955(x)
+ end
+end
+
+def fun_l11_n489(x)
+ if (x < 1)
+ fun_l12_n590(x)
+ else
+ fun_l12_n623(x)
+ end
+end
+
+def fun_l11_n490(x)
+ if (x < 1)
+ fun_l12_n434(x)
+ else
+ fun_l12_n793(x)
+ end
+end
+
+def fun_l11_n491(x)
+ if (x < 1)
+ fun_l12_n274(x)
+ else
+ fun_l12_n879(x)
+ end
+end
+
+def fun_l11_n492(x)
+ if (x < 1)
+ fun_l12_n639(x)
+ else
+ fun_l12_n915(x)
+ end
+end
+
+def fun_l11_n493(x)
+ if (x < 1)
+ fun_l12_n547(x)
+ else
+ fun_l12_n87(x)
+ end
+end
+
+def fun_l11_n494(x)
+ if (x < 1)
+ fun_l12_n364(x)
+ else
+ fun_l12_n133(x)
+ end
+end
+
+def fun_l11_n495(x)
+ if (x < 1)
+ fun_l12_n568(x)
+ else
+ fun_l12_n449(x)
+ end
+end
+
+def fun_l11_n496(x)
+ if (x < 1)
+ fun_l12_n751(x)
+ else
+ fun_l12_n580(x)
+ end
+end
+
+def fun_l11_n497(x)
+ if (x < 1)
+ fun_l12_n864(x)
+ else
+ fun_l12_n505(x)
+ end
+end
+
+def fun_l11_n498(x)
+ if (x < 1)
+ fun_l12_n68(x)
+ else
+ fun_l12_n280(x)
+ end
+end
+
+def fun_l11_n499(x)
+ if (x < 1)
+ fun_l12_n821(x)
+ else
+ fun_l12_n816(x)
+ end
+end
+
+def fun_l11_n500(x)
+ if (x < 1)
+ fun_l12_n793(x)
+ else
+ fun_l12_n558(x)
+ end
+end
+
+def fun_l11_n501(x)
+ if (x < 1)
+ fun_l12_n460(x)
+ else
+ fun_l12_n358(x)
+ end
+end
+
+def fun_l11_n502(x)
+ if (x < 1)
+ fun_l12_n99(x)
+ else
+ fun_l12_n149(x)
+ end
+end
+
+def fun_l11_n503(x)
+ if (x < 1)
+ fun_l12_n599(x)
+ else
+ fun_l12_n257(x)
+ end
+end
+
+def fun_l11_n504(x)
+ if (x < 1)
+ fun_l12_n853(x)
+ else
+ fun_l12_n477(x)
+ end
+end
+
+def fun_l11_n505(x)
+ if (x < 1)
+ fun_l12_n845(x)
+ else
+ fun_l12_n776(x)
+ end
+end
+
+def fun_l11_n506(x)
+ if (x < 1)
+ fun_l12_n533(x)
+ else
+ fun_l12_n6(x)
+ end
+end
+
+def fun_l11_n507(x)
+ if (x < 1)
+ fun_l12_n700(x)
+ else
+ fun_l12_n47(x)
+ end
+end
+
+def fun_l11_n508(x)
+ if (x < 1)
+ fun_l12_n449(x)
+ else
+ fun_l12_n261(x)
+ end
+end
+
+def fun_l11_n509(x)
+ if (x < 1)
+ fun_l12_n773(x)
+ else
+ fun_l12_n583(x)
+ end
+end
+
+def fun_l11_n510(x)
+ if (x < 1)
+ fun_l12_n252(x)
+ else
+ fun_l12_n215(x)
+ end
+end
+
+def fun_l11_n511(x)
+ if (x < 1)
+ fun_l12_n280(x)
+ else
+ fun_l12_n589(x)
+ end
+end
+
+def fun_l11_n512(x)
+ if (x < 1)
+ fun_l12_n796(x)
+ else
+ fun_l12_n803(x)
+ end
+end
+
+def fun_l11_n513(x)
+ if (x < 1)
+ fun_l12_n450(x)
+ else
+ fun_l12_n606(x)
+ end
+end
+
+def fun_l11_n514(x)
+ if (x < 1)
+ fun_l12_n509(x)
+ else
+ fun_l12_n521(x)
+ end
+end
+
+def fun_l11_n515(x)
+ if (x < 1)
+ fun_l12_n658(x)
+ else
+ fun_l12_n912(x)
+ end
+end
+
+def fun_l11_n516(x)
+ if (x < 1)
+ fun_l12_n181(x)
+ else
+ fun_l12_n724(x)
+ end
+end
+
+def fun_l11_n517(x)
+ if (x < 1)
+ fun_l12_n167(x)
+ else
+ fun_l12_n996(x)
+ end
+end
+
+def fun_l11_n518(x)
+ if (x < 1)
+ fun_l12_n654(x)
+ else
+ fun_l12_n67(x)
+ end
+end
+
+def fun_l11_n519(x)
+ if (x < 1)
+ fun_l12_n192(x)
+ else
+ fun_l12_n110(x)
+ end
+end
+
+def fun_l11_n520(x)
+ if (x < 1)
+ fun_l12_n271(x)
+ else
+ fun_l12_n74(x)
+ end
+end
+
+def fun_l11_n521(x)
+ if (x < 1)
+ fun_l12_n324(x)
+ else
+ fun_l12_n224(x)
+ end
+end
+
+def fun_l11_n522(x)
+ if (x < 1)
+ fun_l12_n535(x)
+ else
+ fun_l12_n537(x)
+ end
+end
+
+def fun_l11_n523(x)
+ if (x < 1)
+ fun_l12_n103(x)
+ else
+ fun_l12_n942(x)
+ end
+end
+
+def fun_l11_n524(x)
+ if (x < 1)
+ fun_l12_n755(x)
+ else
+ fun_l12_n431(x)
+ end
+end
+
+def fun_l11_n525(x)
+ if (x < 1)
+ fun_l12_n243(x)
+ else
+ fun_l12_n131(x)
+ end
+end
+
+def fun_l11_n526(x)
+ if (x < 1)
+ fun_l12_n270(x)
+ else
+ fun_l12_n747(x)
+ end
+end
+
+def fun_l11_n527(x)
+ if (x < 1)
+ fun_l12_n566(x)
+ else
+ fun_l12_n284(x)
+ end
+end
+
+def fun_l11_n528(x)
+ if (x < 1)
+ fun_l12_n510(x)
+ else
+ fun_l12_n928(x)
+ end
+end
+
+def fun_l11_n529(x)
+ if (x < 1)
+ fun_l12_n354(x)
+ else
+ fun_l12_n1(x)
+ end
+end
+
+def fun_l11_n530(x)
+ if (x < 1)
+ fun_l12_n271(x)
+ else
+ fun_l12_n875(x)
+ end
+end
+
+def fun_l11_n531(x)
+ if (x < 1)
+ fun_l12_n871(x)
+ else
+ fun_l12_n441(x)
+ end
+end
+
+def fun_l11_n532(x)
+ if (x < 1)
+ fun_l12_n727(x)
+ else
+ fun_l12_n903(x)
+ end
+end
+
+def fun_l11_n533(x)
+ if (x < 1)
+ fun_l12_n843(x)
+ else
+ fun_l12_n202(x)
+ end
+end
+
+def fun_l11_n534(x)
+ if (x < 1)
+ fun_l12_n798(x)
+ else
+ fun_l12_n309(x)
+ end
+end
+
+def fun_l11_n535(x)
+ if (x < 1)
+ fun_l12_n397(x)
+ else
+ fun_l12_n377(x)
+ end
+end
+
+def fun_l11_n536(x)
+ if (x < 1)
+ fun_l12_n441(x)
+ else
+ fun_l12_n253(x)
+ end
+end
+
+def fun_l11_n537(x)
+ if (x < 1)
+ fun_l12_n861(x)
+ else
+ fun_l12_n84(x)
+ end
+end
+
+def fun_l11_n538(x)
+ if (x < 1)
+ fun_l12_n268(x)
+ else
+ fun_l12_n627(x)
+ end
+end
+
+def fun_l11_n539(x)
+ if (x < 1)
+ fun_l12_n923(x)
+ else
+ fun_l12_n650(x)
+ end
+end
+
+def fun_l11_n540(x)
+ if (x < 1)
+ fun_l12_n503(x)
+ else
+ fun_l12_n598(x)
+ end
+end
+
+def fun_l11_n541(x)
+ if (x < 1)
+ fun_l12_n355(x)
+ else
+ fun_l12_n201(x)
+ end
+end
+
+def fun_l11_n542(x)
+ if (x < 1)
+ fun_l12_n956(x)
+ else
+ fun_l12_n789(x)
+ end
+end
+
+def fun_l11_n543(x)
+ if (x < 1)
+ fun_l12_n438(x)
+ else
+ fun_l12_n47(x)
+ end
+end
+
+def fun_l11_n544(x)
+ if (x < 1)
+ fun_l12_n425(x)
+ else
+ fun_l12_n109(x)
+ end
+end
+
+def fun_l11_n545(x)
+ if (x < 1)
+ fun_l12_n540(x)
+ else
+ fun_l12_n360(x)
+ end
+end
+
+def fun_l11_n546(x)
+ if (x < 1)
+ fun_l12_n228(x)
+ else
+ fun_l12_n270(x)
+ end
+end
+
+def fun_l11_n547(x)
+ if (x < 1)
+ fun_l12_n528(x)
+ else
+ fun_l12_n423(x)
+ end
+end
+
+def fun_l11_n548(x)
+ if (x < 1)
+ fun_l12_n656(x)
+ else
+ fun_l12_n269(x)
+ end
+end
+
+def fun_l11_n549(x)
+ if (x < 1)
+ fun_l12_n541(x)
+ else
+ fun_l12_n488(x)
+ end
+end
+
+def fun_l11_n550(x)
+ if (x < 1)
+ fun_l12_n240(x)
+ else
+ fun_l12_n990(x)
+ end
+end
+
+def fun_l11_n551(x)
+ if (x < 1)
+ fun_l12_n279(x)
+ else
+ fun_l12_n61(x)
+ end
+end
+
+def fun_l11_n552(x)
+ if (x < 1)
+ fun_l12_n996(x)
+ else
+ fun_l12_n738(x)
+ end
+end
+
+def fun_l11_n553(x)
+ if (x < 1)
+ fun_l12_n334(x)
+ else
+ fun_l12_n117(x)
+ end
+end
+
+def fun_l11_n554(x)
+ if (x < 1)
+ fun_l12_n943(x)
+ else
+ fun_l12_n754(x)
+ end
+end
+
+def fun_l11_n555(x)
+ if (x < 1)
+ fun_l12_n256(x)
+ else
+ fun_l12_n961(x)
+ end
+end
+
+def fun_l11_n556(x)
+ if (x < 1)
+ fun_l12_n530(x)
+ else
+ fun_l12_n378(x)
+ end
+end
+
+def fun_l11_n557(x)
+ if (x < 1)
+ fun_l12_n681(x)
+ else
+ fun_l12_n153(x)
+ end
+end
+
+def fun_l11_n558(x)
+ if (x < 1)
+ fun_l12_n145(x)
+ else
+ fun_l12_n951(x)
+ end
+end
+
+def fun_l11_n559(x)
+ if (x < 1)
+ fun_l12_n107(x)
+ else
+ fun_l12_n341(x)
+ end
+end
+
+def fun_l11_n560(x)
+ if (x < 1)
+ fun_l12_n570(x)
+ else
+ fun_l12_n152(x)
+ end
+end
+
+def fun_l11_n561(x)
+ if (x < 1)
+ fun_l12_n351(x)
+ else
+ fun_l12_n664(x)
+ end
+end
+
+def fun_l11_n562(x)
+ if (x < 1)
+ fun_l12_n825(x)
+ else
+ fun_l12_n226(x)
+ end
+end
+
+def fun_l11_n563(x)
+ if (x < 1)
+ fun_l12_n898(x)
+ else
+ fun_l12_n553(x)
+ end
+end
+
+def fun_l11_n564(x)
+ if (x < 1)
+ fun_l12_n122(x)
+ else
+ fun_l12_n618(x)
+ end
+end
+
+def fun_l11_n565(x)
+ if (x < 1)
+ fun_l12_n185(x)
+ else
+ fun_l12_n51(x)
+ end
+end
+
+def fun_l11_n566(x)
+ if (x < 1)
+ fun_l12_n359(x)
+ else
+ fun_l12_n67(x)
+ end
+end
+
+def fun_l11_n567(x)
+ if (x < 1)
+ fun_l12_n471(x)
+ else
+ fun_l12_n28(x)
+ end
+end
+
+def fun_l11_n568(x)
+ if (x < 1)
+ fun_l12_n195(x)
+ else
+ fun_l12_n104(x)
+ end
+end
+
+def fun_l11_n569(x)
+ if (x < 1)
+ fun_l12_n556(x)
+ else
+ fun_l12_n242(x)
+ end
+end
+
+def fun_l11_n570(x)
+ if (x < 1)
+ fun_l12_n203(x)
+ else
+ fun_l12_n204(x)
+ end
+end
+
+def fun_l11_n571(x)
+ if (x < 1)
+ fun_l12_n217(x)
+ else
+ fun_l12_n392(x)
+ end
+end
+
+def fun_l11_n572(x)
+ if (x < 1)
+ fun_l12_n223(x)
+ else
+ fun_l12_n176(x)
+ end
+end
+
+def fun_l11_n573(x)
+ if (x < 1)
+ fun_l12_n184(x)
+ else
+ fun_l12_n19(x)
+ end
+end
+
+def fun_l11_n574(x)
+ if (x < 1)
+ fun_l12_n799(x)
+ else
+ fun_l12_n652(x)
+ end
+end
+
+def fun_l11_n575(x)
+ if (x < 1)
+ fun_l12_n311(x)
+ else
+ fun_l12_n332(x)
+ end
+end
+
+def fun_l11_n576(x)
+ if (x < 1)
+ fun_l12_n928(x)
+ else
+ fun_l12_n584(x)
+ end
+end
+
+def fun_l11_n577(x)
+ if (x < 1)
+ fun_l12_n796(x)
+ else
+ fun_l12_n931(x)
+ end
+end
+
+def fun_l11_n578(x)
+ if (x < 1)
+ fun_l12_n991(x)
+ else
+ fun_l12_n985(x)
+ end
+end
+
+def fun_l11_n579(x)
+ if (x < 1)
+ fun_l12_n246(x)
+ else
+ fun_l12_n253(x)
+ end
+end
+
+def fun_l11_n580(x)
+ if (x < 1)
+ fun_l12_n492(x)
+ else
+ fun_l12_n239(x)
+ end
+end
+
+def fun_l11_n581(x)
+ if (x < 1)
+ fun_l12_n428(x)
+ else
+ fun_l12_n351(x)
+ end
+end
+
+def fun_l11_n582(x)
+ if (x < 1)
+ fun_l12_n184(x)
+ else
+ fun_l12_n37(x)
+ end
+end
+
+def fun_l11_n583(x)
+ if (x < 1)
+ fun_l12_n809(x)
+ else
+ fun_l12_n527(x)
+ end
+end
+
+def fun_l11_n584(x)
+ if (x < 1)
+ fun_l12_n661(x)
+ else
+ fun_l12_n539(x)
+ end
+end
+
+def fun_l11_n585(x)
+ if (x < 1)
+ fun_l12_n696(x)
+ else
+ fun_l12_n190(x)
+ end
+end
+
+def fun_l11_n586(x)
+ if (x < 1)
+ fun_l12_n178(x)
+ else
+ fun_l12_n301(x)
+ end
+end
+
+def fun_l11_n587(x)
+ if (x < 1)
+ fun_l12_n316(x)
+ else
+ fun_l12_n731(x)
+ end
+end
+
+def fun_l11_n588(x)
+ if (x < 1)
+ fun_l12_n502(x)
+ else
+ fun_l12_n776(x)
+ end
+end
+
+def fun_l11_n589(x)
+ if (x < 1)
+ fun_l12_n273(x)
+ else
+ fun_l12_n268(x)
+ end
+end
+
+def fun_l11_n590(x)
+ if (x < 1)
+ fun_l12_n623(x)
+ else
+ fun_l12_n622(x)
+ end
+end
+
+def fun_l11_n591(x)
+ if (x < 1)
+ fun_l12_n359(x)
+ else
+ fun_l12_n694(x)
+ end
+end
+
+def fun_l11_n592(x)
+ if (x < 1)
+ fun_l12_n71(x)
+ else
+ fun_l12_n984(x)
+ end
+end
+
+def fun_l11_n593(x)
+ if (x < 1)
+ fun_l12_n790(x)
+ else
+ fun_l12_n547(x)
+ end
+end
+
+def fun_l11_n594(x)
+ if (x < 1)
+ fun_l12_n313(x)
+ else
+ fun_l12_n526(x)
+ end
+end
+
+def fun_l11_n595(x)
+ if (x < 1)
+ fun_l12_n239(x)
+ else
+ fun_l12_n821(x)
+ end
+end
+
+def fun_l11_n596(x)
+ if (x < 1)
+ fun_l12_n36(x)
+ else
+ fun_l12_n141(x)
+ end
+end
+
+def fun_l11_n597(x)
+ if (x < 1)
+ fun_l12_n450(x)
+ else
+ fun_l12_n65(x)
+ end
+end
+
+def fun_l11_n598(x)
+ if (x < 1)
+ fun_l12_n226(x)
+ else
+ fun_l12_n490(x)
+ end
+end
+
+def fun_l11_n599(x)
+ if (x < 1)
+ fun_l12_n716(x)
+ else
+ fun_l12_n7(x)
+ end
+end
+
+def fun_l11_n600(x)
+ if (x < 1)
+ fun_l12_n694(x)
+ else
+ fun_l12_n663(x)
+ end
+end
+
+def fun_l11_n601(x)
+ if (x < 1)
+ fun_l12_n690(x)
+ else
+ fun_l12_n256(x)
+ end
+end
+
+def fun_l11_n602(x)
+ if (x < 1)
+ fun_l12_n251(x)
+ else
+ fun_l12_n177(x)
+ end
+end
+
+def fun_l11_n603(x)
+ if (x < 1)
+ fun_l12_n659(x)
+ else
+ fun_l12_n732(x)
+ end
+end
+
+def fun_l11_n604(x)
+ if (x < 1)
+ fun_l12_n440(x)
+ else
+ fun_l12_n334(x)
+ end
+end
+
+def fun_l11_n605(x)
+ if (x < 1)
+ fun_l12_n396(x)
+ else
+ fun_l12_n931(x)
+ end
+end
+
+def fun_l11_n606(x)
+ if (x < 1)
+ fun_l12_n687(x)
+ else
+ fun_l12_n88(x)
+ end
+end
+
+def fun_l11_n607(x)
+ if (x < 1)
+ fun_l12_n647(x)
+ else
+ fun_l12_n799(x)
+ end
+end
+
+def fun_l11_n608(x)
+ if (x < 1)
+ fun_l12_n383(x)
+ else
+ fun_l12_n889(x)
+ end
+end
+
+def fun_l11_n609(x)
+ if (x < 1)
+ fun_l12_n174(x)
+ else
+ fun_l12_n121(x)
+ end
+end
+
+def fun_l11_n610(x)
+ if (x < 1)
+ fun_l12_n818(x)
+ else
+ fun_l12_n835(x)
+ end
+end
+
+def fun_l11_n611(x)
+ if (x < 1)
+ fun_l12_n684(x)
+ else
+ fun_l12_n625(x)
+ end
+end
+
+def fun_l11_n612(x)
+ if (x < 1)
+ fun_l12_n961(x)
+ else
+ fun_l12_n711(x)
+ end
+end
+
+def fun_l11_n613(x)
+ if (x < 1)
+ fun_l12_n15(x)
+ else
+ fun_l12_n542(x)
+ end
+end
+
+def fun_l11_n614(x)
+ if (x < 1)
+ fun_l12_n378(x)
+ else
+ fun_l12_n809(x)
+ end
+end
+
+def fun_l11_n615(x)
+ if (x < 1)
+ fun_l12_n970(x)
+ else
+ fun_l12_n283(x)
+ end
+end
+
+def fun_l11_n616(x)
+ if (x < 1)
+ fun_l12_n391(x)
+ else
+ fun_l12_n949(x)
+ end
+end
+
+def fun_l11_n617(x)
+ if (x < 1)
+ fun_l12_n135(x)
+ else
+ fun_l12_n29(x)
+ end
+end
+
+def fun_l11_n618(x)
+ if (x < 1)
+ fun_l12_n449(x)
+ else
+ fun_l12_n834(x)
+ end
+end
+
+def fun_l11_n619(x)
+ if (x < 1)
+ fun_l12_n555(x)
+ else
+ fun_l12_n464(x)
+ end
+end
+
+def fun_l11_n620(x)
+ if (x < 1)
+ fun_l12_n414(x)
+ else
+ fun_l12_n632(x)
+ end
+end
+
+def fun_l11_n621(x)
+ if (x < 1)
+ fun_l12_n964(x)
+ else
+ fun_l12_n311(x)
+ end
+end
+
+def fun_l11_n622(x)
+ if (x < 1)
+ fun_l12_n184(x)
+ else
+ fun_l12_n499(x)
+ end
+end
+
+def fun_l11_n623(x)
+ if (x < 1)
+ fun_l12_n441(x)
+ else
+ fun_l12_n124(x)
+ end
+end
+
+def fun_l11_n624(x)
+ if (x < 1)
+ fun_l12_n884(x)
+ else
+ fun_l12_n484(x)
+ end
+end
+
+def fun_l11_n625(x)
+ if (x < 1)
+ fun_l12_n878(x)
+ else
+ fun_l12_n646(x)
+ end
+end
+
+def fun_l11_n626(x)
+ if (x < 1)
+ fun_l12_n918(x)
+ else
+ fun_l12_n481(x)
+ end
+end
+
+def fun_l11_n627(x)
+ if (x < 1)
+ fun_l12_n162(x)
+ else
+ fun_l12_n197(x)
+ end
+end
+
+def fun_l11_n628(x)
+ if (x < 1)
+ fun_l12_n852(x)
+ else
+ fun_l12_n874(x)
+ end
+end
+
+def fun_l11_n629(x)
+ if (x < 1)
+ fun_l12_n654(x)
+ else
+ fun_l12_n709(x)
+ end
+end
+
+def fun_l11_n630(x)
+ if (x < 1)
+ fun_l12_n819(x)
+ else
+ fun_l12_n325(x)
+ end
+end
+
+def fun_l11_n631(x)
+ if (x < 1)
+ fun_l12_n776(x)
+ else
+ fun_l12_n621(x)
+ end
+end
+
+def fun_l11_n632(x)
+ if (x < 1)
+ fun_l12_n648(x)
+ else
+ fun_l12_n53(x)
+ end
+end
+
+def fun_l11_n633(x)
+ if (x < 1)
+ fun_l12_n182(x)
+ else
+ fun_l12_n267(x)
+ end
+end
+
+def fun_l11_n634(x)
+ if (x < 1)
+ fun_l12_n17(x)
+ else
+ fun_l12_n415(x)
+ end
+end
+
+def fun_l11_n635(x)
+ if (x < 1)
+ fun_l12_n123(x)
+ else
+ fun_l12_n862(x)
+ end
+end
+
+def fun_l11_n636(x)
+ if (x < 1)
+ fun_l12_n594(x)
+ else
+ fun_l12_n878(x)
+ end
+end
+
+def fun_l11_n637(x)
+ if (x < 1)
+ fun_l12_n913(x)
+ else
+ fun_l12_n245(x)
+ end
+end
+
+def fun_l11_n638(x)
+ if (x < 1)
+ fun_l12_n976(x)
+ else
+ fun_l12_n19(x)
+ end
+end
+
+def fun_l11_n639(x)
+ if (x < 1)
+ fun_l12_n490(x)
+ else
+ fun_l12_n999(x)
+ end
+end
+
+def fun_l11_n640(x)
+ if (x < 1)
+ fun_l12_n345(x)
+ else
+ fun_l12_n585(x)
+ end
+end
+
+def fun_l11_n641(x)
+ if (x < 1)
+ fun_l12_n245(x)
+ else
+ fun_l12_n566(x)
+ end
+end
+
+def fun_l11_n642(x)
+ if (x < 1)
+ fun_l12_n680(x)
+ else
+ fun_l12_n77(x)
+ end
+end
+
+def fun_l11_n643(x)
+ if (x < 1)
+ fun_l12_n330(x)
+ else
+ fun_l12_n268(x)
+ end
+end
+
+def fun_l11_n644(x)
+ if (x < 1)
+ fun_l12_n651(x)
+ else
+ fun_l12_n386(x)
+ end
+end
+
+def fun_l11_n645(x)
+ if (x < 1)
+ fun_l12_n276(x)
+ else
+ fun_l12_n471(x)
+ end
+end
+
+def fun_l11_n646(x)
+ if (x < 1)
+ fun_l12_n784(x)
+ else
+ fun_l12_n892(x)
+ end
+end
+
+def fun_l11_n647(x)
+ if (x < 1)
+ fun_l12_n963(x)
+ else
+ fun_l12_n864(x)
+ end
+end
+
+def fun_l11_n648(x)
+ if (x < 1)
+ fun_l12_n58(x)
+ else
+ fun_l12_n252(x)
+ end
+end
+
+def fun_l11_n649(x)
+ if (x < 1)
+ fun_l12_n321(x)
+ else
+ fun_l12_n593(x)
+ end
+end
+
+def fun_l11_n650(x)
+ if (x < 1)
+ fun_l12_n598(x)
+ else
+ fun_l12_n54(x)
+ end
+end
+
+def fun_l11_n651(x)
+ if (x < 1)
+ fun_l12_n201(x)
+ else
+ fun_l12_n760(x)
+ end
+end
+
+def fun_l11_n652(x)
+ if (x < 1)
+ fun_l12_n880(x)
+ else
+ fun_l12_n841(x)
+ end
+end
+
+def fun_l11_n653(x)
+ if (x < 1)
+ fun_l12_n61(x)
+ else
+ fun_l12_n403(x)
+ end
+end
+
+def fun_l11_n654(x)
+ if (x < 1)
+ fun_l12_n114(x)
+ else
+ fun_l12_n768(x)
+ end
+end
+
+def fun_l11_n655(x)
+ if (x < 1)
+ fun_l12_n511(x)
+ else
+ fun_l12_n521(x)
+ end
+end
+
+def fun_l11_n656(x)
+ if (x < 1)
+ fun_l12_n27(x)
+ else
+ fun_l12_n490(x)
+ end
+end
+
+def fun_l11_n657(x)
+ if (x < 1)
+ fun_l12_n217(x)
+ else
+ fun_l12_n547(x)
+ end
+end
+
+def fun_l11_n658(x)
+ if (x < 1)
+ fun_l12_n549(x)
+ else
+ fun_l12_n823(x)
+ end
+end
+
+def fun_l11_n659(x)
+ if (x < 1)
+ fun_l12_n327(x)
+ else
+ fun_l12_n529(x)
+ end
+end
+
+def fun_l11_n660(x)
+ if (x < 1)
+ fun_l12_n395(x)
+ else
+ fun_l12_n797(x)
+ end
+end
+
+def fun_l11_n661(x)
+ if (x < 1)
+ fun_l12_n867(x)
+ else
+ fun_l12_n142(x)
+ end
+end
+
+def fun_l11_n662(x)
+ if (x < 1)
+ fun_l12_n818(x)
+ else
+ fun_l12_n311(x)
+ end
+end
+
+def fun_l11_n663(x)
+ if (x < 1)
+ fun_l12_n628(x)
+ else
+ fun_l12_n798(x)
+ end
+end
+
+def fun_l11_n664(x)
+ if (x < 1)
+ fun_l12_n260(x)
+ else
+ fun_l12_n607(x)
+ end
+end
+
+def fun_l11_n665(x)
+ if (x < 1)
+ fun_l12_n911(x)
+ else
+ fun_l12_n487(x)
+ end
+end
+
+def fun_l11_n666(x)
+ if (x < 1)
+ fun_l12_n340(x)
+ else
+ fun_l12_n23(x)
+ end
+end
+
+def fun_l11_n667(x)
+ if (x < 1)
+ fun_l12_n744(x)
+ else
+ fun_l12_n874(x)
+ end
+end
+
+def fun_l11_n668(x)
+ if (x < 1)
+ fun_l12_n53(x)
+ else
+ fun_l12_n203(x)
+ end
+end
+
+def fun_l11_n669(x)
+ if (x < 1)
+ fun_l12_n775(x)
+ else
+ fun_l12_n963(x)
+ end
+end
+
+def fun_l11_n670(x)
+ if (x < 1)
+ fun_l12_n922(x)
+ else
+ fun_l12_n0(x)
+ end
+end
+
+def fun_l11_n671(x)
+ if (x < 1)
+ fun_l12_n23(x)
+ else
+ fun_l12_n798(x)
+ end
+end
+
+def fun_l11_n672(x)
+ if (x < 1)
+ fun_l12_n453(x)
+ else
+ fun_l12_n667(x)
+ end
+end
+
+def fun_l11_n673(x)
+ if (x < 1)
+ fun_l12_n991(x)
+ else
+ fun_l12_n350(x)
+ end
+end
+
+def fun_l11_n674(x)
+ if (x < 1)
+ fun_l12_n865(x)
+ else
+ fun_l12_n95(x)
+ end
+end
+
+def fun_l11_n675(x)
+ if (x < 1)
+ fun_l12_n404(x)
+ else
+ fun_l12_n714(x)
+ end
+end
+
+def fun_l11_n676(x)
+ if (x < 1)
+ fun_l12_n576(x)
+ else
+ fun_l12_n162(x)
+ end
+end
+
+def fun_l11_n677(x)
+ if (x < 1)
+ fun_l12_n530(x)
+ else
+ fun_l12_n453(x)
+ end
+end
+
+def fun_l11_n678(x)
+ if (x < 1)
+ fun_l12_n127(x)
+ else
+ fun_l12_n224(x)
+ end
+end
+
+def fun_l11_n679(x)
+ if (x < 1)
+ fun_l12_n658(x)
+ else
+ fun_l12_n11(x)
+ end
+end
+
+def fun_l11_n680(x)
+ if (x < 1)
+ fun_l12_n778(x)
+ else
+ fun_l12_n202(x)
+ end
+end
+
+def fun_l11_n681(x)
+ if (x < 1)
+ fun_l12_n745(x)
+ else
+ fun_l12_n690(x)
+ end
+end
+
+def fun_l11_n682(x)
+ if (x < 1)
+ fun_l12_n920(x)
+ else
+ fun_l12_n54(x)
+ end
+end
+
+def fun_l11_n683(x)
+ if (x < 1)
+ fun_l12_n726(x)
+ else
+ fun_l12_n466(x)
+ end
+end
+
+def fun_l11_n684(x)
+ if (x < 1)
+ fun_l12_n709(x)
+ else
+ fun_l12_n287(x)
+ end
+end
+
+def fun_l11_n685(x)
+ if (x < 1)
+ fun_l12_n304(x)
+ else
+ fun_l12_n617(x)
+ end
+end
+
+def fun_l11_n686(x)
+ if (x < 1)
+ fun_l12_n834(x)
+ else
+ fun_l12_n240(x)
+ end
+end
+
+def fun_l11_n687(x)
+ if (x < 1)
+ fun_l12_n406(x)
+ else
+ fun_l12_n588(x)
+ end
+end
+
+def fun_l11_n688(x)
+ if (x < 1)
+ fun_l12_n308(x)
+ else
+ fun_l12_n790(x)
+ end
+end
+
+def fun_l11_n689(x)
+ if (x < 1)
+ fun_l12_n969(x)
+ else
+ fun_l12_n249(x)
+ end
+end
+
+def fun_l11_n690(x)
+ if (x < 1)
+ fun_l12_n760(x)
+ else
+ fun_l12_n807(x)
+ end
+end
+
+def fun_l11_n691(x)
+ if (x < 1)
+ fun_l12_n417(x)
+ else
+ fun_l12_n645(x)
+ end
+end
+
+def fun_l11_n692(x)
+ if (x < 1)
+ fun_l12_n722(x)
+ else
+ fun_l12_n614(x)
+ end
+end
+
+def fun_l11_n693(x)
+ if (x < 1)
+ fun_l12_n19(x)
+ else
+ fun_l12_n497(x)
+ end
+end
+
+def fun_l11_n694(x)
+ if (x < 1)
+ fun_l12_n580(x)
+ else
+ fun_l12_n76(x)
+ end
+end
+
+def fun_l11_n695(x)
+ if (x < 1)
+ fun_l12_n527(x)
+ else
+ fun_l12_n819(x)
+ end
+end
+
+def fun_l11_n696(x)
+ if (x < 1)
+ fun_l12_n71(x)
+ else
+ fun_l12_n906(x)
+ end
+end
+
+def fun_l11_n697(x)
+ if (x < 1)
+ fun_l12_n95(x)
+ else
+ fun_l12_n743(x)
+ end
+end
+
+def fun_l11_n698(x)
+ if (x < 1)
+ fun_l12_n544(x)
+ else
+ fun_l12_n265(x)
+ end
+end
+
+def fun_l11_n699(x)
+ if (x < 1)
+ fun_l12_n833(x)
+ else
+ fun_l12_n210(x)
+ end
+end
+
+def fun_l11_n700(x)
+ if (x < 1)
+ fun_l12_n865(x)
+ else
+ fun_l12_n318(x)
+ end
+end
+
+def fun_l11_n701(x)
+ if (x < 1)
+ fun_l12_n88(x)
+ else
+ fun_l12_n120(x)
+ end
+end
+
+def fun_l11_n702(x)
+ if (x < 1)
+ fun_l12_n165(x)
+ else
+ fun_l12_n671(x)
+ end
+end
+
+def fun_l11_n703(x)
+ if (x < 1)
+ fun_l12_n607(x)
+ else
+ fun_l12_n730(x)
+ end
+end
+
+def fun_l11_n704(x)
+ if (x < 1)
+ fun_l12_n690(x)
+ else
+ fun_l12_n553(x)
+ end
+end
+
+def fun_l11_n705(x)
+ if (x < 1)
+ fun_l12_n826(x)
+ else
+ fun_l12_n665(x)
+ end
+end
+
+def fun_l11_n706(x)
+ if (x < 1)
+ fun_l12_n125(x)
+ else
+ fun_l12_n167(x)
+ end
+end
+
+def fun_l11_n707(x)
+ if (x < 1)
+ fun_l12_n961(x)
+ else
+ fun_l12_n73(x)
+ end
+end
+
+def fun_l11_n708(x)
+ if (x < 1)
+ fun_l12_n446(x)
+ else
+ fun_l12_n373(x)
+ end
+end
+
+def fun_l11_n709(x)
+ if (x < 1)
+ fun_l12_n199(x)
+ else
+ fun_l12_n803(x)
+ end
+end
+
+def fun_l11_n710(x)
+ if (x < 1)
+ fun_l12_n960(x)
+ else
+ fun_l12_n996(x)
+ end
+end
+
+def fun_l11_n711(x)
+ if (x < 1)
+ fun_l12_n602(x)
+ else
+ fun_l12_n896(x)
+ end
+end
+
+def fun_l11_n712(x)
+ if (x < 1)
+ fun_l12_n198(x)
+ else
+ fun_l12_n857(x)
+ end
+end
+
+def fun_l11_n713(x)
+ if (x < 1)
+ fun_l12_n19(x)
+ else
+ fun_l12_n938(x)
+ end
+end
+
+def fun_l11_n714(x)
+ if (x < 1)
+ fun_l12_n530(x)
+ else
+ fun_l12_n432(x)
+ end
+end
+
+def fun_l11_n715(x)
+ if (x < 1)
+ fun_l12_n99(x)
+ else
+ fun_l12_n382(x)
+ end
+end
+
+def fun_l11_n716(x)
+ if (x < 1)
+ fun_l12_n623(x)
+ else
+ fun_l12_n461(x)
+ end
+end
+
+def fun_l11_n717(x)
+ if (x < 1)
+ fun_l12_n658(x)
+ else
+ fun_l12_n432(x)
+ end
+end
+
+def fun_l11_n718(x)
+ if (x < 1)
+ fun_l12_n17(x)
+ else
+ fun_l12_n83(x)
+ end
+end
+
+def fun_l11_n719(x)
+ if (x < 1)
+ fun_l12_n439(x)
+ else
+ fun_l12_n747(x)
+ end
+end
+
+def fun_l11_n720(x)
+ if (x < 1)
+ fun_l12_n259(x)
+ else
+ fun_l12_n80(x)
+ end
+end
+
+def fun_l11_n721(x)
+ if (x < 1)
+ fun_l12_n749(x)
+ else
+ fun_l12_n108(x)
+ end
+end
+
+def fun_l11_n722(x)
+ if (x < 1)
+ fun_l12_n20(x)
+ else
+ fun_l12_n391(x)
+ end
+end
+
+def fun_l11_n723(x)
+ if (x < 1)
+ fun_l12_n181(x)
+ else
+ fun_l12_n204(x)
+ end
+end
+
+def fun_l11_n724(x)
+ if (x < 1)
+ fun_l12_n426(x)
+ else
+ fun_l12_n109(x)
+ end
+end
+
+def fun_l11_n725(x)
+ if (x < 1)
+ fun_l12_n436(x)
+ else
+ fun_l12_n754(x)
+ end
+end
+
+def fun_l11_n726(x)
+ if (x < 1)
+ fun_l12_n496(x)
+ else
+ fun_l12_n265(x)
+ end
+end
+
+def fun_l11_n727(x)
+ if (x < 1)
+ fun_l12_n58(x)
+ else
+ fun_l12_n982(x)
+ end
+end
+
+def fun_l11_n728(x)
+ if (x < 1)
+ fun_l12_n236(x)
+ else
+ fun_l12_n152(x)
+ end
+end
+
+def fun_l11_n729(x)
+ if (x < 1)
+ fun_l12_n818(x)
+ else
+ fun_l12_n95(x)
+ end
+end
+
+def fun_l11_n730(x)
+ if (x < 1)
+ fun_l12_n696(x)
+ else
+ fun_l12_n263(x)
+ end
+end
+
+def fun_l11_n731(x)
+ if (x < 1)
+ fun_l12_n539(x)
+ else
+ fun_l12_n774(x)
+ end
+end
+
+def fun_l11_n732(x)
+ if (x < 1)
+ fun_l12_n788(x)
+ else
+ fun_l12_n454(x)
+ end
+end
+
+def fun_l11_n733(x)
+ if (x < 1)
+ fun_l12_n131(x)
+ else
+ fun_l12_n877(x)
+ end
+end
+
+def fun_l11_n734(x)
+ if (x < 1)
+ fun_l12_n449(x)
+ else
+ fun_l12_n222(x)
+ end
+end
+
+def fun_l11_n735(x)
+ if (x < 1)
+ fun_l12_n71(x)
+ else
+ fun_l12_n467(x)
+ end
+end
+
+def fun_l11_n736(x)
+ if (x < 1)
+ fun_l12_n220(x)
+ else
+ fun_l12_n214(x)
+ end
+end
+
+def fun_l11_n737(x)
+ if (x < 1)
+ fun_l12_n537(x)
+ else
+ fun_l12_n173(x)
+ end
+end
+
+def fun_l11_n738(x)
+ if (x < 1)
+ fun_l12_n897(x)
+ else
+ fun_l12_n515(x)
+ end
+end
+
+def fun_l11_n739(x)
+ if (x < 1)
+ fun_l12_n724(x)
+ else
+ fun_l12_n48(x)
+ end
+end
+
+def fun_l11_n740(x)
+ if (x < 1)
+ fun_l12_n61(x)
+ else
+ fun_l12_n963(x)
+ end
+end
+
+def fun_l11_n741(x)
+ if (x < 1)
+ fun_l12_n40(x)
+ else
+ fun_l12_n553(x)
+ end
+end
+
+def fun_l11_n742(x)
+ if (x < 1)
+ fun_l12_n361(x)
+ else
+ fun_l12_n975(x)
+ end
+end
+
+def fun_l11_n743(x)
+ if (x < 1)
+ fun_l12_n306(x)
+ else
+ fun_l12_n982(x)
+ end
+end
+
+def fun_l11_n744(x)
+ if (x < 1)
+ fun_l12_n951(x)
+ else
+ fun_l12_n590(x)
+ end
+end
+
+def fun_l11_n745(x)
+ if (x < 1)
+ fun_l12_n224(x)
+ else
+ fun_l12_n409(x)
+ end
+end
+
+def fun_l11_n746(x)
+ if (x < 1)
+ fun_l12_n24(x)
+ else
+ fun_l12_n249(x)
+ end
+end
+
+def fun_l11_n747(x)
+ if (x < 1)
+ fun_l12_n533(x)
+ else
+ fun_l12_n543(x)
+ end
+end
+
+def fun_l11_n748(x)
+ if (x < 1)
+ fun_l12_n616(x)
+ else
+ fun_l12_n63(x)
+ end
+end
+
+def fun_l11_n749(x)
+ if (x < 1)
+ fun_l12_n365(x)
+ else
+ fun_l12_n335(x)
+ end
+end
+
+def fun_l11_n750(x)
+ if (x < 1)
+ fun_l12_n134(x)
+ else
+ fun_l12_n363(x)
+ end
+end
+
+def fun_l11_n751(x)
+ if (x < 1)
+ fun_l12_n413(x)
+ else
+ fun_l12_n582(x)
+ end
+end
+
+def fun_l11_n752(x)
+ if (x < 1)
+ fun_l12_n987(x)
+ else
+ fun_l12_n948(x)
+ end
+end
+
+def fun_l11_n753(x)
+ if (x < 1)
+ fun_l12_n696(x)
+ else
+ fun_l12_n374(x)
+ end
+end
+
+def fun_l11_n754(x)
+ if (x < 1)
+ fun_l12_n730(x)
+ else
+ fun_l12_n345(x)
+ end
+end
+
+def fun_l11_n755(x)
+ if (x < 1)
+ fun_l12_n857(x)
+ else
+ fun_l12_n441(x)
+ end
+end
+
+def fun_l11_n756(x)
+ if (x < 1)
+ fun_l12_n711(x)
+ else
+ fun_l12_n39(x)
+ end
+end
+
+def fun_l11_n757(x)
+ if (x < 1)
+ fun_l12_n946(x)
+ else
+ fun_l12_n657(x)
+ end
+end
+
+def fun_l11_n758(x)
+ if (x < 1)
+ fun_l12_n470(x)
+ else
+ fun_l12_n650(x)
+ end
+end
+
+def fun_l11_n759(x)
+ if (x < 1)
+ fun_l12_n119(x)
+ else
+ fun_l12_n479(x)
+ end
+end
+
+def fun_l11_n760(x)
+ if (x < 1)
+ fun_l12_n429(x)
+ else
+ fun_l12_n922(x)
+ end
+end
+
+def fun_l11_n761(x)
+ if (x < 1)
+ fun_l12_n13(x)
+ else
+ fun_l12_n134(x)
+ end
+end
+
+def fun_l11_n762(x)
+ if (x < 1)
+ fun_l12_n797(x)
+ else
+ fun_l12_n223(x)
+ end
+end
+
+def fun_l11_n763(x)
+ if (x < 1)
+ fun_l12_n945(x)
+ else
+ fun_l12_n197(x)
+ end
+end
+
+def fun_l11_n764(x)
+ if (x < 1)
+ fun_l12_n612(x)
+ else
+ fun_l12_n773(x)
+ end
+end
+
+def fun_l11_n765(x)
+ if (x < 1)
+ fun_l12_n478(x)
+ else
+ fun_l12_n972(x)
+ end
+end
+
+def fun_l11_n766(x)
+ if (x < 1)
+ fun_l12_n946(x)
+ else
+ fun_l12_n9(x)
+ end
+end
+
+def fun_l11_n767(x)
+ if (x < 1)
+ fun_l12_n247(x)
+ else
+ fun_l12_n730(x)
+ end
+end
+
+def fun_l11_n768(x)
+ if (x < 1)
+ fun_l12_n223(x)
+ else
+ fun_l12_n986(x)
+ end
+end
+
+def fun_l11_n769(x)
+ if (x < 1)
+ fun_l12_n676(x)
+ else
+ fun_l12_n527(x)
+ end
+end
+
+def fun_l11_n770(x)
+ if (x < 1)
+ fun_l12_n112(x)
+ else
+ fun_l12_n660(x)
+ end
+end
+
+def fun_l11_n771(x)
+ if (x < 1)
+ fun_l12_n457(x)
+ else
+ fun_l12_n733(x)
+ end
+end
+
+def fun_l11_n772(x)
+ if (x < 1)
+ fun_l12_n633(x)
+ else
+ fun_l12_n449(x)
+ end
+end
+
+def fun_l11_n773(x)
+ if (x < 1)
+ fun_l12_n910(x)
+ else
+ fun_l12_n329(x)
+ end
+end
+
+def fun_l11_n774(x)
+ if (x < 1)
+ fun_l12_n354(x)
+ else
+ fun_l12_n233(x)
+ end
+end
+
+def fun_l11_n775(x)
+ if (x < 1)
+ fun_l12_n887(x)
+ else
+ fun_l12_n100(x)
+ end
+end
+
+def fun_l11_n776(x)
+ if (x < 1)
+ fun_l12_n65(x)
+ else
+ fun_l12_n199(x)
+ end
+end
+
+def fun_l11_n777(x)
+ if (x < 1)
+ fun_l12_n978(x)
+ else
+ fun_l12_n364(x)
+ end
+end
+
+def fun_l11_n778(x)
+ if (x < 1)
+ fun_l12_n502(x)
+ else
+ fun_l12_n90(x)
+ end
+end
+
+def fun_l11_n779(x)
+ if (x < 1)
+ fun_l12_n37(x)
+ else
+ fun_l12_n668(x)
+ end
+end
+
+def fun_l11_n780(x)
+ if (x < 1)
+ fun_l12_n80(x)
+ else
+ fun_l12_n603(x)
+ end
+end
+
+def fun_l11_n781(x)
+ if (x < 1)
+ fun_l12_n435(x)
+ else
+ fun_l12_n583(x)
+ end
+end
+
+def fun_l11_n782(x)
+ if (x < 1)
+ fun_l12_n899(x)
+ else
+ fun_l12_n863(x)
+ end
+end
+
+def fun_l11_n783(x)
+ if (x < 1)
+ fun_l12_n414(x)
+ else
+ fun_l12_n96(x)
+ end
+end
+
+def fun_l11_n784(x)
+ if (x < 1)
+ fun_l12_n286(x)
+ else
+ fun_l12_n126(x)
+ end
+end
+
+def fun_l11_n785(x)
+ if (x < 1)
+ fun_l12_n444(x)
+ else
+ fun_l12_n344(x)
+ end
+end
+
+def fun_l11_n786(x)
+ if (x < 1)
+ fun_l12_n484(x)
+ else
+ fun_l12_n469(x)
+ end
+end
+
+def fun_l11_n787(x)
+ if (x < 1)
+ fun_l12_n686(x)
+ else
+ fun_l12_n728(x)
+ end
+end
+
+def fun_l11_n788(x)
+ if (x < 1)
+ fun_l12_n938(x)
+ else
+ fun_l12_n70(x)
+ end
+end
+
+def fun_l11_n789(x)
+ if (x < 1)
+ fun_l12_n958(x)
+ else
+ fun_l12_n633(x)
+ end
+end
+
+def fun_l11_n790(x)
+ if (x < 1)
+ fun_l12_n984(x)
+ else
+ fun_l12_n39(x)
+ end
+end
+
+def fun_l11_n791(x)
+ if (x < 1)
+ fun_l12_n877(x)
+ else
+ fun_l12_n721(x)
+ end
+end
+
+def fun_l11_n792(x)
+ if (x < 1)
+ fun_l12_n710(x)
+ else
+ fun_l12_n840(x)
+ end
+end
+
+def fun_l11_n793(x)
+ if (x < 1)
+ fun_l12_n955(x)
+ else
+ fun_l12_n774(x)
+ end
+end
+
+def fun_l11_n794(x)
+ if (x < 1)
+ fun_l12_n816(x)
+ else
+ fun_l12_n859(x)
+ end
+end
+
+def fun_l11_n795(x)
+ if (x < 1)
+ fun_l12_n722(x)
+ else
+ fun_l12_n700(x)
+ end
+end
+
+def fun_l11_n796(x)
+ if (x < 1)
+ fun_l12_n508(x)
+ else
+ fun_l12_n617(x)
+ end
+end
+
+def fun_l11_n797(x)
+ if (x < 1)
+ fun_l12_n382(x)
+ else
+ fun_l12_n1(x)
+ end
+end
+
+def fun_l11_n798(x)
+ if (x < 1)
+ fun_l12_n857(x)
+ else
+ fun_l12_n141(x)
+ end
+end
+
+def fun_l11_n799(x)
+ if (x < 1)
+ fun_l12_n711(x)
+ else
+ fun_l12_n842(x)
+ end
+end
+
+def fun_l11_n800(x)
+ if (x < 1)
+ fun_l12_n588(x)
+ else
+ fun_l12_n511(x)
+ end
+end
+
+def fun_l11_n801(x)
+ if (x < 1)
+ fun_l12_n114(x)
+ else
+ fun_l12_n516(x)
+ end
+end
+
+def fun_l11_n802(x)
+ if (x < 1)
+ fun_l12_n792(x)
+ else
+ fun_l12_n128(x)
+ end
+end
+
+def fun_l11_n803(x)
+ if (x < 1)
+ fun_l12_n833(x)
+ else
+ fun_l12_n444(x)
+ end
+end
+
+def fun_l11_n804(x)
+ if (x < 1)
+ fun_l12_n564(x)
+ else
+ fun_l12_n129(x)
+ end
+end
+
+def fun_l11_n805(x)
+ if (x < 1)
+ fun_l12_n234(x)
+ else
+ fun_l12_n429(x)
+ end
+end
+
+def fun_l11_n806(x)
+ if (x < 1)
+ fun_l12_n841(x)
+ else
+ fun_l12_n705(x)
+ end
+end
+
+def fun_l11_n807(x)
+ if (x < 1)
+ fun_l12_n72(x)
+ else
+ fun_l12_n87(x)
+ end
+end
+
+def fun_l11_n808(x)
+ if (x < 1)
+ fun_l12_n131(x)
+ else
+ fun_l12_n27(x)
+ end
+end
+
+def fun_l11_n809(x)
+ if (x < 1)
+ fun_l12_n136(x)
+ else
+ fun_l12_n84(x)
+ end
+end
+
+def fun_l11_n810(x)
+ if (x < 1)
+ fun_l12_n464(x)
+ else
+ fun_l12_n411(x)
+ end
+end
+
+def fun_l11_n811(x)
+ if (x < 1)
+ fun_l12_n939(x)
+ else
+ fun_l12_n584(x)
+ end
+end
+
+def fun_l11_n812(x)
+ if (x < 1)
+ fun_l12_n24(x)
+ else
+ fun_l12_n593(x)
+ end
+end
+
+def fun_l11_n813(x)
+ if (x < 1)
+ fun_l12_n980(x)
+ else
+ fun_l12_n318(x)
+ end
+end
+
+def fun_l11_n814(x)
+ if (x < 1)
+ fun_l12_n73(x)
+ else
+ fun_l12_n431(x)
+ end
+end
+
+def fun_l11_n815(x)
+ if (x < 1)
+ fun_l12_n938(x)
+ else
+ fun_l12_n794(x)
+ end
+end
+
+def fun_l11_n816(x)
+ if (x < 1)
+ fun_l12_n305(x)
+ else
+ fun_l12_n620(x)
+ end
+end
+
+def fun_l11_n817(x)
+ if (x < 1)
+ fun_l12_n881(x)
+ else
+ fun_l12_n636(x)
+ end
+end
+
+def fun_l11_n818(x)
+ if (x < 1)
+ fun_l12_n493(x)
+ else
+ fun_l12_n536(x)
+ end
+end
+
+def fun_l11_n819(x)
+ if (x < 1)
+ fun_l12_n32(x)
+ else
+ fun_l12_n69(x)
+ end
+end
+
+def fun_l11_n820(x)
+ if (x < 1)
+ fun_l12_n131(x)
+ else
+ fun_l12_n206(x)
+ end
+end
+
+def fun_l11_n821(x)
+ if (x < 1)
+ fun_l12_n130(x)
+ else
+ fun_l12_n63(x)
+ end
+end
+
+def fun_l11_n822(x)
+ if (x < 1)
+ fun_l12_n228(x)
+ else
+ fun_l12_n753(x)
+ end
+end
+
+def fun_l11_n823(x)
+ if (x < 1)
+ fun_l12_n171(x)
+ else
+ fun_l12_n605(x)
+ end
+end
+
+def fun_l11_n824(x)
+ if (x < 1)
+ fun_l12_n69(x)
+ else
+ fun_l12_n900(x)
+ end
+end
+
+def fun_l11_n825(x)
+ if (x < 1)
+ fun_l12_n802(x)
+ else
+ fun_l12_n682(x)
+ end
+end
+
+def fun_l11_n826(x)
+ if (x < 1)
+ fun_l12_n311(x)
+ else
+ fun_l12_n257(x)
+ end
+end
+
+def fun_l11_n827(x)
+ if (x < 1)
+ fun_l12_n994(x)
+ else
+ fun_l12_n162(x)
+ end
+end
+
+def fun_l11_n828(x)
+ if (x < 1)
+ fun_l12_n780(x)
+ else
+ fun_l12_n805(x)
+ end
+end
+
+def fun_l11_n829(x)
+ if (x < 1)
+ fun_l12_n744(x)
+ else
+ fun_l12_n55(x)
+ end
+end
+
+def fun_l11_n830(x)
+ if (x < 1)
+ fun_l12_n655(x)
+ else
+ fun_l12_n603(x)
+ end
+end
+
+def fun_l11_n831(x)
+ if (x < 1)
+ fun_l12_n245(x)
+ else
+ fun_l12_n196(x)
+ end
+end
+
+def fun_l11_n832(x)
+ if (x < 1)
+ fun_l12_n381(x)
+ else
+ fun_l12_n582(x)
+ end
+end
+
+def fun_l11_n833(x)
+ if (x < 1)
+ fun_l12_n185(x)
+ else
+ fun_l12_n339(x)
+ end
+end
+
+def fun_l11_n834(x)
+ if (x < 1)
+ fun_l12_n601(x)
+ else
+ fun_l12_n996(x)
+ end
+end
+
+def fun_l11_n835(x)
+ if (x < 1)
+ fun_l12_n934(x)
+ else
+ fun_l12_n460(x)
+ end
+end
+
+def fun_l11_n836(x)
+ if (x < 1)
+ fun_l12_n550(x)
+ else
+ fun_l12_n55(x)
+ end
+end
+
+def fun_l11_n837(x)
+ if (x < 1)
+ fun_l12_n183(x)
+ else
+ fun_l12_n880(x)
+ end
+end
+
+def fun_l11_n838(x)
+ if (x < 1)
+ fun_l12_n742(x)
+ else
+ fun_l12_n249(x)
+ end
+end
+
+def fun_l11_n839(x)
+ if (x < 1)
+ fun_l12_n979(x)
+ else
+ fun_l12_n100(x)
+ end
+end
+
+def fun_l11_n840(x)
+ if (x < 1)
+ fun_l12_n889(x)
+ else
+ fun_l12_n683(x)
+ end
+end
+
+def fun_l11_n841(x)
+ if (x < 1)
+ fun_l12_n964(x)
+ else
+ fun_l12_n0(x)
+ end
+end
+
+def fun_l11_n842(x)
+ if (x < 1)
+ fun_l12_n461(x)
+ else
+ fun_l12_n126(x)
+ end
+end
+
+def fun_l11_n843(x)
+ if (x < 1)
+ fun_l12_n839(x)
+ else
+ fun_l12_n554(x)
+ end
+end
+
+def fun_l11_n844(x)
+ if (x < 1)
+ fun_l12_n150(x)
+ else
+ fun_l12_n857(x)
+ end
+end
+
+def fun_l11_n845(x)
+ if (x < 1)
+ fun_l12_n114(x)
+ else
+ fun_l12_n72(x)
+ end
+end
+
+def fun_l11_n846(x)
+ if (x < 1)
+ fun_l12_n953(x)
+ else
+ fun_l12_n695(x)
+ end
+end
+
+def fun_l11_n847(x)
+ if (x < 1)
+ fun_l12_n16(x)
+ else
+ fun_l12_n216(x)
+ end
+end
+
+def fun_l11_n848(x)
+ if (x < 1)
+ fun_l12_n440(x)
+ else
+ fun_l12_n893(x)
+ end
+end
+
+def fun_l11_n849(x)
+ if (x < 1)
+ fun_l12_n176(x)
+ else
+ fun_l12_n932(x)
+ end
+end
+
+def fun_l11_n850(x)
+ if (x < 1)
+ fun_l12_n723(x)
+ else
+ fun_l12_n363(x)
+ end
+end
+
+def fun_l11_n851(x)
+ if (x < 1)
+ fun_l12_n779(x)
+ else
+ fun_l12_n774(x)
+ end
+end
+
+def fun_l11_n852(x)
+ if (x < 1)
+ fun_l12_n618(x)
+ else
+ fun_l12_n252(x)
+ end
+end
+
+def fun_l11_n853(x)
+ if (x < 1)
+ fun_l12_n298(x)
+ else
+ fun_l12_n563(x)
+ end
+end
+
+def fun_l11_n854(x)
+ if (x < 1)
+ fun_l12_n972(x)
+ else
+ fun_l12_n681(x)
+ end
+end
+
+def fun_l11_n855(x)
+ if (x < 1)
+ fun_l12_n412(x)
+ else
+ fun_l12_n932(x)
+ end
+end
+
+def fun_l11_n856(x)
+ if (x < 1)
+ fun_l12_n132(x)
+ else
+ fun_l12_n699(x)
+ end
+end
+
+def fun_l11_n857(x)
+ if (x < 1)
+ fun_l12_n208(x)
+ else
+ fun_l12_n602(x)
+ end
+end
+
+def fun_l11_n858(x)
+ if (x < 1)
+ fun_l12_n705(x)
+ else
+ fun_l12_n833(x)
+ end
+end
+
+def fun_l11_n859(x)
+ if (x < 1)
+ fun_l12_n408(x)
+ else
+ fun_l12_n570(x)
+ end
+end
+
+def fun_l11_n860(x)
+ if (x < 1)
+ fun_l12_n720(x)
+ else
+ fun_l12_n996(x)
+ end
+end
+
+def fun_l11_n861(x)
+ if (x < 1)
+ fun_l12_n926(x)
+ else
+ fun_l12_n490(x)
+ end
+end
+
+def fun_l11_n862(x)
+ if (x < 1)
+ fun_l12_n985(x)
+ else
+ fun_l12_n54(x)
+ end
+end
+
+def fun_l11_n863(x)
+ if (x < 1)
+ fun_l12_n214(x)
+ else
+ fun_l12_n729(x)
+ end
+end
+
+def fun_l11_n864(x)
+ if (x < 1)
+ fun_l12_n351(x)
+ else
+ fun_l12_n951(x)
+ end
+end
+
+def fun_l11_n865(x)
+ if (x < 1)
+ fun_l12_n514(x)
+ else
+ fun_l12_n468(x)
+ end
+end
+
+def fun_l11_n866(x)
+ if (x < 1)
+ fun_l12_n793(x)
+ else
+ fun_l12_n712(x)
+ end
+end
+
+def fun_l11_n867(x)
+ if (x < 1)
+ fun_l12_n697(x)
+ else
+ fun_l12_n824(x)
+ end
+end
+
+def fun_l11_n868(x)
+ if (x < 1)
+ fun_l12_n144(x)
+ else
+ fun_l12_n703(x)
+ end
+end
+
+def fun_l11_n869(x)
+ if (x < 1)
+ fun_l12_n552(x)
+ else
+ fun_l12_n612(x)
+ end
+end
+
+def fun_l11_n870(x)
+ if (x < 1)
+ fun_l12_n2(x)
+ else
+ fun_l12_n287(x)
+ end
+end
+
+def fun_l11_n871(x)
+ if (x < 1)
+ fun_l12_n604(x)
+ else
+ fun_l12_n260(x)
+ end
+end
+
+def fun_l11_n872(x)
+ if (x < 1)
+ fun_l12_n517(x)
+ else
+ fun_l12_n173(x)
+ end
+end
+
+def fun_l11_n873(x)
+ if (x < 1)
+ fun_l12_n640(x)
+ else
+ fun_l12_n196(x)
+ end
+end
+
+def fun_l11_n874(x)
+ if (x < 1)
+ fun_l12_n874(x)
+ else
+ fun_l12_n697(x)
+ end
+end
+
+def fun_l11_n875(x)
+ if (x < 1)
+ fun_l12_n180(x)
+ else
+ fun_l12_n652(x)
+ end
+end
+
+def fun_l11_n876(x)
+ if (x < 1)
+ fun_l12_n432(x)
+ else
+ fun_l12_n971(x)
+ end
+end
+
+def fun_l11_n877(x)
+ if (x < 1)
+ fun_l12_n111(x)
+ else
+ fun_l12_n919(x)
+ end
+end
+
+def fun_l11_n878(x)
+ if (x < 1)
+ fun_l12_n631(x)
+ else
+ fun_l12_n439(x)
+ end
+end
+
+def fun_l11_n879(x)
+ if (x < 1)
+ fun_l12_n39(x)
+ else
+ fun_l12_n372(x)
+ end
+end
+
+def fun_l11_n880(x)
+ if (x < 1)
+ fun_l12_n675(x)
+ else
+ fun_l12_n64(x)
+ end
+end
+
+def fun_l11_n881(x)
+ if (x < 1)
+ fun_l12_n831(x)
+ else
+ fun_l12_n705(x)
+ end
+end
+
+def fun_l11_n882(x)
+ if (x < 1)
+ fun_l12_n126(x)
+ else
+ fun_l12_n648(x)
+ end
+end
+
+def fun_l11_n883(x)
+ if (x < 1)
+ fun_l12_n768(x)
+ else
+ fun_l12_n483(x)
+ end
+end
+
+def fun_l11_n884(x)
+ if (x < 1)
+ fun_l12_n328(x)
+ else
+ fun_l12_n646(x)
+ end
+end
+
+def fun_l11_n885(x)
+ if (x < 1)
+ fun_l12_n890(x)
+ else
+ fun_l12_n544(x)
+ end
+end
+
+def fun_l11_n886(x)
+ if (x < 1)
+ fun_l12_n651(x)
+ else
+ fun_l12_n557(x)
+ end
+end
+
+def fun_l11_n887(x)
+ if (x < 1)
+ fun_l12_n479(x)
+ else
+ fun_l12_n594(x)
+ end
+end
+
+def fun_l11_n888(x)
+ if (x < 1)
+ fun_l12_n649(x)
+ else
+ fun_l12_n488(x)
+ end
+end
+
+def fun_l11_n889(x)
+ if (x < 1)
+ fun_l12_n347(x)
+ else
+ fun_l12_n42(x)
+ end
+end
+
+def fun_l11_n890(x)
+ if (x < 1)
+ fun_l12_n111(x)
+ else
+ fun_l12_n683(x)
+ end
+end
+
+def fun_l11_n891(x)
+ if (x < 1)
+ fun_l12_n965(x)
+ else
+ fun_l12_n275(x)
+ end
+end
+
+def fun_l11_n892(x)
+ if (x < 1)
+ fun_l12_n148(x)
+ else
+ fun_l12_n541(x)
+ end
+end
+
+def fun_l11_n893(x)
+ if (x < 1)
+ fun_l12_n633(x)
+ else
+ fun_l12_n358(x)
+ end
+end
+
+def fun_l11_n894(x)
+ if (x < 1)
+ fun_l12_n681(x)
+ else
+ fun_l12_n236(x)
+ end
+end
+
+def fun_l11_n895(x)
+ if (x < 1)
+ fun_l12_n292(x)
+ else
+ fun_l12_n417(x)
+ end
+end
+
+def fun_l11_n896(x)
+ if (x < 1)
+ fun_l12_n165(x)
+ else
+ fun_l12_n80(x)
+ end
+end
+
+def fun_l11_n897(x)
+ if (x < 1)
+ fun_l12_n132(x)
+ else
+ fun_l12_n659(x)
+ end
+end
+
+def fun_l11_n898(x)
+ if (x < 1)
+ fun_l12_n329(x)
+ else
+ fun_l12_n204(x)
+ end
+end
+
+def fun_l11_n899(x)
+ if (x < 1)
+ fun_l12_n339(x)
+ else
+ fun_l12_n632(x)
+ end
+end
+
+def fun_l11_n900(x)
+ if (x < 1)
+ fun_l12_n957(x)
+ else
+ fun_l12_n282(x)
+ end
+end
+
+def fun_l11_n901(x)
+ if (x < 1)
+ fun_l12_n709(x)
+ else
+ fun_l12_n155(x)
+ end
+end
+
+def fun_l11_n902(x)
+ if (x < 1)
+ fun_l12_n227(x)
+ else
+ fun_l12_n659(x)
+ end
+end
+
+def fun_l11_n903(x)
+ if (x < 1)
+ fun_l12_n224(x)
+ else
+ fun_l12_n23(x)
+ end
+end
+
+def fun_l11_n904(x)
+ if (x < 1)
+ fun_l12_n494(x)
+ else
+ fun_l12_n292(x)
+ end
+end
+
+def fun_l11_n905(x)
+ if (x < 1)
+ fun_l12_n309(x)
+ else
+ fun_l12_n949(x)
+ end
+end
+
+def fun_l11_n906(x)
+ if (x < 1)
+ fun_l12_n960(x)
+ else
+ fun_l12_n24(x)
+ end
+end
+
+def fun_l11_n907(x)
+ if (x < 1)
+ fun_l12_n98(x)
+ else
+ fun_l12_n674(x)
+ end
+end
+
+def fun_l11_n908(x)
+ if (x < 1)
+ fun_l12_n84(x)
+ else
+ fun_l12_n307(x)
+ end
+end
+
+def fun_l11_n909(x)
+ if (x < 1)
+ fun_l12_n786(x)
+ else
+ fun_l12_n311(x)
+ end
+end
+
+def fun_l11_n910(x)
+ if (x < 1)
+ fun_l12_n631(x)
+ else
+ fun_l12_n605(x)
+ end
+end
+
+def fun_l11_n911(x)
+ if (x < 1)
+ fun_l12_n352(x)
+ else
+ fun_l12_n750(x)
+ end
+end
+
+def fun_l11_n912(x)
+ if (x < 1)
+ fun_l12_n75(x)
+ else
+ fun_l12_n112(x)
+ end
+end
+
+def fun_l11_n913(x)
+ if (x < 1)
+ fun_l12_n404(x)
+ else
+ fun_l12_n995(x)
+ end
+end
+
+def fun_l11_n914(x)
+ if (x < 1)
+ fun_l12_n656(x)
+ else
+ fun_l12_n203(x)
+ end
+end
+
+def fun_l11_n915(x)
+ if (x < 1)
+ fun_l12_n625(x)
+ else
+ fun_l12_n32(x)
+ end
+end
+
+def fun_l11_n916(x)
+ if (x < 1)
+ fun_l12_n785(x)
+ else
+ fun_l12_n237(x)
+ end
+end
+
+def fun_l11_n917(x)
+ if (x < 1)
+ fun_l12_n643(x)
+ else
+ fun_l12_n364(x)
+ end
+end
+
+def fun_l11_n918(x)
+ if (x < 1)
+ fun_l12_n920(x)
+ else
+ fun_l12_n957(x)
+ end
+end
+
+def fun_l11_n919(x)
+ if (x < 1)
+ fun_l12_n336(x)
+ else
+ fun_l12_n726(x)
+ end
+end
+
+def fun_l11_n920(x)
+ if (x < 1)
+ fun_l12_n329(x)
+ else
+ fun_l12_n15(x)
+ end
+end
+
+def fun_l11_n921(x)
+ if (x < 1)
+ fun_l12_n911(x)
+ else
+ fun_l12_n824(x)
+ end
+end
+
+def fun_l11_n922(x)
+ if (x < 1)
+ fun_l12_n907(x)
+ else
+ fun_l12_n854(x)
+ end
+end
+
+def fun_l11_n923(x)
+ if (x < 1)
+ fun_l12_n779(x)
+ else
+ fun_l12_n549(x)
+ end
+end
+
+def fun_l11_n924(x)
+ if (x < 1)
+ fun_l12_n833(x)
+ else
+ fun_l12_n986(x)
+ end
+end
+
+def fun_l11_n925(x)
+ if (x < 1)
+ fun_l12_n450(x)
+ else
+ fun_l12_n783(x)
+ end
+end
+
+def fun_l11_n926(x)
+ if (x < 1)
+ fun_l12_n405(x)
+ else
+ fun_l12_n960(x)
+ end
+end
+
+def fun_l11_n927(x)
+ if (x < 1)
+ fun_l12_n603(x)
+ else
+ fun_l12_n892(x)
+ end
+end
+
+def fun_l11_n928(x)
+ if (x < 1)
+ fun_l12_n137(x)
+ else
+ fun_l12_n200(x)
+ end
+end
+
+def fun_l11_n929(x)
+ if (x < 1)
+ fun_l12_n161(x)
+ else
+ fun_l12_n754(x)
+ end
+end
+
+def fun_l11_n930(x)
+ if (x < 1)
+ fun_l12_n107(x)
+ else
+ fun_l12_n258(x)
+ end
+end
+
+def fun_l11_n931(x)
+ if (x < 1)
+ fun_l12_n794(x)
+ else
+ fun_l12_n812(x)
+ end
+end
+
+def fun_l11_n932(x)
+ if (x < 1)
+ fun_l12_n956(x)
+ else
+ fun_l12_n156(x)
+ end
+end
+
+def fun_l11_n933(x)
+ if (x < 1)
+ fun_l12_n676(x)
+ else
+ fun_l12_n496(x)
+ end
+end
+
+def fun_l11_n934(x)
+ if (x < 1)
+ fun_l12_n229(x)
+ else
+ fun_l12_n339(x)
+ end
+end
+
+def fun_l11_n935(x)
+ if (x < 1)
+ fun_l12_n353(x)
+ else
+ fun_l12_n430(x)
+ end
+end
+
+def fun_l11_n936(x)
+ if (x < 1)
+ fun_l12_n721(x)
+ else
+ fun_l12_n409(x)
+ end
+end
+
+def fun_l11_n937(x)
+ if (x < 1)
+ fun_l12_n151(x)
+ else
+ fun_l12_n60(x)
+ end
+end
+
+def fun_l11_n938(x)
+ if (x < 1)
+ fun_l12_n362(x)
+ else
+ fun_l12_n92(x)
+ end
+end
+
+def fun_l11_n939(x)
+ if (x < 1)
+ fun_l12_n315(x)
+ else
+ fun_l12_n905(x)
+ end
+end
+
+def fun_l11_n940(x)
+ if (x < 1)
+ fun_l12_n788(x)
+ else
+ fun_l12_n105(x)
+ end
+end
+
+def fun_l11_n941(x)
+ if (x < 1)
+ fun_l12_n124(x)
+ else
+ fun_l12_n496(x)
+ end
+end
+
+def fun_l11_n942(x)
+ if (x < 1)
+ fun_l12_n546(x)
+ else
+ fun_l12_n17(x)
+ end
+end
+
+def fun_l11_n943(x)
+ if (x < 1)
+ fun_l12_n594(x)
+ else
+ fun_l12_n55(x)
+ end
+end
+
+def fun_l11_n944(x)
+ if (x < 1)
+ fun_l12_n187(x)
+ else
+ fun_l12_n139(x)
+ end
+end
+
+def fun_l11_n945(x)
+ if (x < 1)
+ fun_l12_n117(x)
+ else
+ fun_l12_n382(x)
+ end
+end
+
+def fun_l11_n946(x)
+ if (x < 1)
+ fun_l12_n579(x)
+ else
+ fun_l12_n895(x)
+ end
+end
+
+def fun_l11_n947(x)
+ if (x < 1)
+ fun_l12_n541(x)
+ else
+ fun_l12_n497(x)
+ end
+end
+
+def fun_l11_n948(x)
+ if (x < 1)
+ fun_l12_n250(x)
+ else
+ fun_l12_n257(x)
+ end
+end
+
+def fun_l11_n949(x)
+ if (x < 1)
+ fun_l12_n553(x)
+ else
+ fun_l12_n663(x)
+ end
+end
+
+def fun_l11_n950(x)
+ if (x < 1)
+ fun_l12_n779(x)
+ else
+ fun_l12_n414(x)
+ end
+end
+
+def fun_l11_n951(x)
+ if (x < 1)
+ fun_l12_n748(x)
+ else
+ fun_l12_n525(x)
+ end
+end
+
+def fun_l11_n952(x)
+ if (x < 1)
+ fun_l12_n669(x)
+ else
+ fun_l12_n339(x)
+ end
+end
+
+def fun_l11_n953(x)
+ if (x < 1)
+ fun_l12_n665(x)
+ else
+ fun_l12_n996(x)
+ end
+end
+
+def fun_l11_n954(x)
+ if (x < 1)
+ fun_l12_n366(x)
+ else
+ fun_l12_n149(x)
+ end
+end
+
+def fun_l11_n955(x)
+ if (x < 1)
+ fun_l12_n549(x)
+ else
+ fun_l12_n414(x)
+ end
+end
+
+def fun_l11_n956(x)
+ if (x < 1)
+ fun_l12_n258(x)
+ else
+ fun_l12_n67(x)
+ end
+end
+
+def fun_l11_n957(x)
+ if (x < 1)
+ fun_l12_n439(x)
+ else
+ fun_l12_n83(x)
+ end
+end
+
+def fun_l11_n958(x)
+ if (x < 1)
+ fun_l12_n601(x)
+ else
+ fun_l12_n938(x)
+ end
+end
+
+def fun_l11_n959(x)
+ if (x < 1)
+ fun_l12_n953(x)
+ else
+ fun_l12_n973(x)
+ end
+end
+
+def fun_l11_n960(x)
+ if (x < 1)
+ fun_l12_n426(x)
+ else
+ fun_l12_n8(x)
+ end
+end
+
+def fun_l11_n961(x)
+ if (x < 1)
+ fun_l12_n719(x)
+ else
+ fun_l12_n657(x)
+ end
+end
+
+def fun_l11_n962(x)
+ if (x < 1)
+ fun_l12_n391(x)
+ else
+ fun_l12_n992(x)
+ end
+end
+
+def fun_l11_n963(x)
+ if (x < 1)
+ fun_l12_n141(x)
+ else
+ fun_l12_n468(x)
+ end
+end
+
+def fun_l11_n964(x)
+ if (x < 1)
+ fun_l12_n463(x)
+ else
+ fun_l12_n94(x)
+ end
+end
+
+def fun_l11_n965(x)
+ if (x < 1)
+ fun_l12_n765(x)
+ else
+ fun_l12_n168(x)
+ end
+end
+
+def fun_l11_n966(x)
+ if (x < 1)
+ fun_l12_n237(x)
+ else
+ fun_l12_n437(x)
+ end
+end
+
+def fun_l11_n967(x)
+ if (x < 1)
+ fun_l12_n741(x)
+ else
+ fun_l12_n331(x)
+ end
+end
+
+def fun_l11_n968(x)
+ if (x < 1)
+ fun_l12_n617(x)
+ else
+ fun_l12_n773(x)
+ end
+end
+
+def fun_l11_n969(x)
+ if (x < 1)
+ fun_l12_n880(x)
+ else
+ fun_l12_n727(x)
+ end
+end
+
+def fun_l11_n970(x)
+ if (x < 1)
+ fun_l12_n781(x)
+ else
+ fun_l12_n270(x)
+ end
+end
+
+def fun_l11_n971(x)
+ if (x < 1)
+ fun_l12_n511(x)
+ else
+ fun_l12_n183(x)
+ end
+end
+
+def fun_l11_n972(x)
+ if (x < 1)
+ fun_l12_n448(x)
+ else
+ fun_l12_n965(x)
+ end
+end
+
+def fun_l11_n973(x)
+ if (x < 1)
+ fun_l12_n816(x)
+ else
+ fun_l12_n974(x)
+ end
+end
+
+def fun_l11_n974(x)
+ if (x < 1)
+ fun_l12_n583(x)
+ else
+ fun_l12_n731(x)
+ end
+end
+
+def fun_l11_n975(x)
+ if (x < 1)
+ fun_l12_n42(x)
+ else
+ fun_l12_n463(x)
+ end
+end
+
+def fun_l11_n976(x)
+ if (x < 1)
+ fun_l12_n267(x)
+ else
+ fun_l12_n769(x)
+ end
+end
+
+def fun_l11_n977(x)
+ if (x < 1)
+ fun_l12_n993(x)
+ else
+ fun_l12_n391(x)
+ end
+end
+
+def fun_l11_n978(x)
+ if (x < 1)
+ fun_l12_n507(x)
+ else
+ fun_l12_n905(x)
+ end
+end
+
+def fun_l11_n979(x)
+ if (x < 1)
+ fun_l12_n486(x)
+ else
+ fun_l12_n562(x)
+ end
+end
+
+def fun_l11_n980(x)
+ if (x < 1)
+ fun_l12_n252(x)
+ else
+ fun_l12_n475(x)
+ end
+end
+
+def fun_l11_n981(x)
+ if (x < 1)
+ fun_l12_n979(x)
+ else
+ fun_l12_n70(x)
+ end
+end
+
+def fun_l11_n982(x)
+ if (x < 1)
+ fun_l12_n11(x)
+ else
+ fun_l12_n483(x)
+ end
+end
+
+def fun_l11_n983(x)
+ if (x < 1)
+ fun_l12_n208(x)
+ else
+ fun_l12_n315(x)
+ end
+end
+
+def fun_l11_n984(x)
+ if (x < 1)
+ fun_l12_n452(x)
+ else
+ fun_l12_n367(x)
+ end
+end
+
+def fun_l11_n985(x)
+ if (x < 1)
+ fun_l12_n937(x)
+ else
+ fun_l12_n33(x)
+ end
+end
+
+def fun_l11_n986(x)
+ if (x < 1)
+ fun_l12_n227(x)
+ else
+ fun_l12_n448(x)
+ end
+end
+
+def fun_l11_n987(x)
+ if (x < 1)
+ fun_l12_n928(x)
+ else
+ fun_l12_n693(x)
+ end
+end
+
+def fun_l11_n988(x)
+ if (x < 1)
+ fun_l12_n731(x)
+ else
+ fun_l12_n872(x)
+ end
+end
+
+def fun_l11_n989(x)
+ if (x < 1)
+ fun_l12_n355(x)
+ else
+ fun_l12_n0(x)
+ end
+end
+
+def fun_l11_n990(x)
+ if (x < 1)
+ fun_l12_n203(x)
+ else
+ fun_l12_n545(x)
+ end
+end
+
+def fun_l11_n991(x)
+ if (x < 1)
+ fun_l12_n237(x)
+ else
+ fun_l12_n186(x)
+ end
+end
+
+def fun_l11_n992(x)
+ if (x < 1)
+ fun_l12_n22(x)
+ else
+ fun_l12_n597(x)
+ end
+end
+
+def fun_l11_n993(x)
+ if (x < 1)
+ fun_l12_n711(x)
+ else
+ fun_l12_n677(x)
+ end
+end
+
+def fun_l11_n994(x)
+ if (x < 1)
+ fun_l12_n892(x)
+ else
+ fun_l12_n729(x)
+ end
+end
+
+def fun_l11_n995(x)
+ if (x < 1)
+ fun_l12_n51(x)
+ else
+ fun_l12_n279(x)
+ end
+end
+
+def fun_l11_n996(x)
+ if (x < 1)
+ fun_l12_n430(x)
+ else
+ fun_l12_n527(x)
+ end
+end
+
+def fun_l11_n997(x)
+ if (x < 1)
+ fun_l12_n153(x)
+ else
+ fun_l12_n366(x)
+ end
+end
+
+def fun_l11_n998(x)
+ if (x < 1)
+ fun_l12_n574(x)
+ else
+ fun_l12_n432(x)
+ end
+end
+
+def fun_l11_n999(x)
+ if (x < 1)
+ fun_l12_n100(x)
+ else
+ fun_l12_n943(x)
+ end
+end
+
+def fun_l12_n0(x)
+ if (x < 1)
+ fun_l13_n874(x)
+ else
+ fun_l13_n769(x)
+ end
+end
+
+def fun_l12_n1(x)
+ if (x < 1)
+ fun_l13_n354(x)
+ else
+ fun_l13_n103(x)
+ end
+end
+
+def fun_l12_n2(x)
+ if (x < 1)
+ fun_l13_n265(x)
+ else
+ fun_l13_n936(x)
+ end
+end
+
+def fun_l12_n3(x)
+ if (x < 1)
+ fun_l13_n683(x)
+ else
+ fun_l13_n607(x)
+ end
+end
+
+def fun_l12_n4(x)
+ if (x < 1)
+ fun_l13_n398(x)
+ else
+ fun_l13_n902(x)
+ end
+end
+
+def fun_l12_n5(x)
+ if (x < 1)
+ fun_l13_n694(x)
+ else
+ fun_l13_n392(x)
+ end
+end
+
+def fun_l12_n6(x)
+ if (x < 1)
+ fun_l13_n170(x)
+ else
+ fun_l13_n207(x)
+ end
+end
+
+def fun_l12_n7(x)
+ if (x < 1)
+ fun_l13_n978(x)
+ else
+ fun_l13_n368(x)
+ end
+end
+
+def fun_l12_n8(x)
+ if (x < 1)
+ fun_l13_n970(x)
+ else
+ fun_l13_n560(x)
+ end
+end
+
+def fun_l12_n9(x)
+ if (x < 1)
+ fun_l13_n56(x)
+ else
+ fun_l13_n697(x)
+ end
+end
+
+def fun_l12_n10(x)
+ if (x < 1)
+ fun_l13_n860(x)
+ else
+ fun_l13_n407(x)
+ end
+end
+
+def fun_l12_n11(x)
+ if (x < 1)
+ fun_l13_n581(x)
+ else
+ fun_l13_n582(x)
+ end
+end
+
+def fun_l12_n12(x)
+ if (x < 1)
+ fun_l13_n835(x)
+ else
+ fun_l13_n706(x)
+ end
+end
+
+def fun_l12_n13(x)
+ if (x < 1)
+ fun_l13_n862(x)
+ else
+ fun_l13_n89(x)
+ end
+end
+
+def fun_l12_n14(x)
+ if (x < 1)
+ fun_l13_n379(x)
+ else
+ fun_l13_n896(x)
+ end
+end
+
+def fun_l12_n15(x)
+ if (x < 1)
+ fun_l13_n175(x)
+ else
+ fun_l13_n113(x)
+ end
+end
+
+def fun_l12_n16(x)
+ if (x < 1)
+ fun_l13_n553(x)
+ else
+ fun_l13_n935(x)
+ end
+end
+
+def fun_l12_n17(x)
+ if (x < 1)
+ fun_l13_n171(x)
+ else
+ fun_l13_n264(x)
+ end
+end
+
+def fun_l12_n18(x)
+ if (x < 1)
+ fun_l13_n61(x)
+ else
+ fun_l13_n412(x)
+ end
+end
+
+def fun_l12_n19(x)
+ if (x < 1)
+ fun_l13_n213(x)
+ else
+ fun_l13_n422(x)
+ end
+end
+
+def fun_l12_n20(x)
+ if (x < 1)
+ fun_l13_n401(x)
+ else
+ fun_l13_n537(x)
+ end
+end
+
+def fun_l12_n21(x)
+ if (x < 1)
+ fun_l13_n207(x)
+ else
+ fun_l13_n495(x)
+ end
+end
+
+def fun_l12_n22(x)
+ if (x < 1)
+ fun_l13_n941(x)
+ else
+ fun_l13_n466(x)
+ end
+end
+
+def fun_l12_n23(x)
+ if (x < 1)
+ fun_l13_n195(x)
+ else
+ fun_l13_n984(x)
+ end
+end
+
+def fun_l12_n24(x)
+ if (x < 1)
+ fun_l13_n106(x)
+ else
+ fun_l13_n812(x)
+ end
+end
+
+def fun_l12_n25(x)
+ if (x < 1)
+ fun_l13_n979(x)
+ else
+ fun_l13_n902(x)
+ end
+end
+
+def fun_l12_n26(x)
+ if (x < 1)
+ fun_l13_n726(x)
+ else
+ fun_l13_n440(x)
+ end
+end
+
+def fun_l12_n27(x)
+ if (x < 1)
+ fun_l13_n229(x)
+ else
+ fun_l13_n995(x)
+ end
+end
+
+def fun_l12_n28(x)
+ if (x < 1)
+ fun_l13_n764(x)
+ else
+ fun_l13_n333(x)
+ end
+end
+
+def fun_l12_n29(x)
+ if (x < 1)
+ fun_l13_n971(x)
+ else
+ fun_l13_n59(x)
+ end
+end
+
+def fun_l12_n30(x)
+ if (x < 1)
+ fun_l13_n731(x)
+ else
+ fun_l13_n138(x)
+ end
+end
+
+def fun_l12_n31(x)
+ if (x < 1)
+ fun_l13_n591(x)
+ else
+ fun_l13_n473(x)
+ end
+end
+
+def fun_l12_n32(x)
+ if (x < 1)
+ fun_l13_n50(x)
+ else
+ fun_l13_n175(x)
+ end
+end
+
+def fun_l12_n33(x)
+ if (x < 1)
+ fun_l13_n26(x)
+ else
+ fun_l13_n867(x)
+ end
+end
+
+def fun_l12_n34(x)
+ if (x < 1)
+ fun_l13_n349(x)
+ else
+ fun_l13_n332(x)
+ end
+end
+
+def fun_l12_n35(x)
+ if (x < 1)
+ fun_l13_n180(x)
+ else
+ fun_l13_n591(x)
+ end
+end
+
+def fun_l12_n36(x)
+ if (x < 1)
+ fun_l13_n339(x)
+ else
+ fun_l13_n354(x)
+ end
+end
+
+def fun_l12_n37(x)
+ if (x < 1)
+ fun_l13_n289(x)
+ else
+ fun_l13_n101(x)
+ end
+end
+
+def fun_l12_n38(x)
+ if (x < 1)
+ fun_l13_n410(x)
+ else
+ fun_l13_n91(x)
+ end
+end
+
+def fun_l12_n39(x)
+ if (x < 1)
+ fun_l13_n617(x)
+ else
+ fun_l13_n716(x)
+ end
+end
+
+def fun_l12_n40(x)
+ if (x < 1)
+ fun_l13_n116(x)
+ else
+ fun_l13_n875(x)
+ end
+end
+
+def fun_l12_n41(x)
+ if (x < 1)
+ fun_l13_n162(x)
+ else
+ fun_l13_n844(x)
+ end
+end
+
+def fun_l12_n42(x)
+ if (x < 1)
+ fun_l13_n79(x)
+ else
+ fun_l13_n589(x)
+ end
+end
+
+def fun_l12_n43(x)
+ if (x < 1)
+ fun_l13_n835(x)
+ else
+ fun_l13_n21(x)
+ end
+end
+
+def fun_l12_n44(x)
+ if (x < 1)
+ fun_l13_n420(x)
+ else
+ fun_l13_n403(x)
+ end
+end
+
+def fun_l12_n45(x)
+ if (x < 1)
+ fun_l13_n203(x)
+ else
+ fun_l13_n890(x)
+ end
+end
+
+def fun_l12_n46(x)
+ if (x < 1)
+ fun_l13_n529(x)
+ else
+ fun_l13_n717(x)
+ end
+end
+
+def fun_l12_n47(x)
+ if (x < 1)
+ fun_l13_n766(x)
+ else
+ fun_l13_n635(x)
+ end
+end
+
+def fun_l12_n48(x)
+ if (x < 1)
+ fun_l13_n223(x)
+ else
+ fun_l13_n460(x)
+ end
+end
+
+def fun_l12_n49(x)
+ if (x < 1)
+ fun_l13_n799(x)
+ else
+ fun_l13_n397(x)
+ end
+end
+
+def fun_l12_n50(x)
+ if (x < 1)
+ fun_l13_n200(x)
+ else
+ fun_l13_n608(x)
+ end
+end
+
+def fun_l12_n51(x)
+ if (x < 1)
+ fun_l13_n212(x)
+ else
+ fun_l13_n612(x)
+ end
+end
+
+def fun_l12_n52(x)
+ if (x < 1)
+ fun_l13_n271(x)
+ else
+ fun_l13_n324(x)
+ end
+end
+
+def fun_l12_n53(x)
+ if (x < 1)
+ fun_l13_n639(x)
+ else
+ fun_l13_n603(x)
+ end
+end
+
+def fun_l12_n54(x)
+ if (x < 1)
+ fun_l13_n125(x)
+ else
+ fun_l13_n726(x)
+ end
+end
+
+def fun_l12_n55(x)
+ if (x < 1)
+ fun_l13_n266(x)
+ else
+ fun_l13_n552(x)
+ end
+end
+
+def fun_l12_n56(x)
+ if (x < 1)
+ fun_l13_n412(x)
+ else
+ fun_l13_n132(x)
+ end
+end
+
+def fun_l12_n57(x)
+ if (x < 1)
+ fun_l13_n235(x)
+ else
+ fun_l13_n892(x)
+ end
+end
+
+def fun_l12_n58(x)
+ if (x < 1)
+ fun_l13_n515(x)
+ else
+ fun_l13_n465(x)
+ end
+end
+
+def fun_l12_n59(x)
+ if (x < 1)
+ fun_l13_n38(x)
+ else
+ fun_l13_n757(x)
+ end
+end
+
+def fun_l12_n60(x)
+ if (x < 1)
+ fun_l13_n544(x)
+ else
+ fun_l13_n794(x)
+ end
+end
+
+def fun_l12_n61(x)
+ if (x < 1)
+ fun_l13_n622(x)
+ else
+ fun_l13_n340(x)
+ end
+end
+
+def fun_l12_n62(x)
+ if (x < 1)
+ fun_l13_n563(x)
+ else
+ fun_l13_n313(x)
+ end
+end
+
+def fun_l12_n63(x)
+ if (x < 1)
+ fun_l13_n936(x)
+ else
+ fun_l13_n38(x)
+ end
+end
+
+def fun_l12_n64(x)
+ if (x < 1)
+ fun_l13_n951(x)
+ else
+ fun_l13_n543(x)
+ end
+end
+
+def fun_l12_n65(x)
+ if (x < 1)
+ fun_l13_n577(x)
+ else
+ fun_l13_n190(x)
+ end
+end
+
+def fun_l12_n66(x)
+ if (x < 1)
+ fun_l13_n649(x)
+ else
+ fun_l13_n887(x)
+ end
+end
+
+def fun_l12_n67(x)
+ if (x < 1)
+ fun_l13_n218(x)
+ else
+ fun_l13_n200(x)
+ end
+end
+
+def fun_l12_n68(x)
+ if (x < 1)
+ fun_l13_n111(x)
+ else
+ fun_l13_n849(x)
+ end
+end
+
+def fun_l12_n69(x)
+ if (x < 1)
+ fun_l13_n431(x)
+ else
+ fun_l13_n816(x)
+ end
+end
+
+def fun_l12_n70(x)
+ if (x < 1)
+ fun_l13_n970(x)
+ else
+ fun_l13_n545(x)
+ end
+end
+
+def fun_l12_n71(x)
+ if (x < 1)
+ fun_l13_n3(x)
+ else
+ fun_l13_n751(x)
+ end
+end
+
+def fun_l12_n72(x)
+ if (x < 1)
+ fun_l13_n58(x)
+ else
+ fun_l13_n994(x)
+ end
+end
+
+def fun_l12_n73(x)
+ if (x < 1)
+ fun_l13_n397(x)
+ else
+ fun_l13_n783(x)
+ end
+end
+
+def fun_l12_n74(x)
+ if (x < 1)
+ fun_l13_n705(x)
+ else
+ fun_l13_n318(x)
+ end
+end
+
+def fun_l12_n75(x)
+ if (x < 1)
+ fun_l13_n406(x)
+ else
+ fun_l13_n880(x)
+ end
+end
+
+def fun_l12_n76(x)
+ if (x < 1)
+ fun_l13_n867(x)
+ else
+ fun_l13_n234(x)
+ end
+end
+
+def fun_l12_n77(x)
+ if (x < 1)
+ fun_l13_n447(x)
+ else
+ fun_l13_n617(x)
+ end
+end
+
+def fun_l12_n78(x)
+ if (x < 1)
+ fun_l13_n631(x)
+ else
+ fun_l13_n687(x)
+ end
+end
+
+def fun_l12_n79(x)
+ if (x < 1)
+ fun_l13_n735(x)
+ else
+ fun_l13_n512(x)
+ end
+end
+
+def fun_l12_n80(x)
+ if (x < 1)
+ fun_l13_n826(x)
+ else
+ fun_l13_n626(x)
+ end
+end
+
+def fun_l12_n81(x)
+ if (x < 1)
+ fun_l13_n959(x)
+ else
+ fun_l13_n357(x)
+ end
+end
+
+def fun_l12_n82(x)
+ if (x < 1)
+ fun_l13_n17(x)
+ else
+ fun_l13_n722(x)
+ end
+end
+
+def fun_l12_n83(x)
+ if (x < 1)
+ fun_l13_n702(x)
+ else
+ fun_l13_n441(x)
+ end
+end
+
+def fun_l12_n84(x)
+ if (x < 1)
+ fun_l13_n939(x)
+ else
+ fun_l13_n972(x)
+ end
+end
+
+def fun_l12_n85(x)
+ if (x < 1)
+ fun_l13_n747(x)
+ else
+ fun_l13_n481(x)
+ end
+end
+
+def fun_l12_n86(x)
+ if (x < 1)
+ fun_l13_n813(x)
+ else
+ fun_l13_n780(x)
+ end
+end
+
+def fun_l12_n87(x)
+ if (x < 1)
+ fun_l13_n87(x)
+ else
+ fun_l13_n19(x)
+ end
+end
+
+def fun_l12_n88(x)
+ if (x < 1)
+ fun_l13_n422(x)
+ else
+ fun_l13_n938(x)
+ end
+end
+
+def fun_l12_n89(x)
+ if (x < 1)
+ fun_l13_n575(x)
+ else
+ fun_l13_n150(x)
+ end
+end
+
+def fun_l12_n90(x)
+ if (x < 1)
+ fun_l13_n294(x)
+ else
+ fun_l13_n666(x)
+ end
+end
+
+def fun_l12_n91(x)
+ if (x < 1)
+ fun_l13_n216(x)
+ else
+ fun_l13_n315(x)
+ end
+end
+
+def fun_l12_n92(x)
+ if (x < 1)
+ fun_l13_n580(x)
+ else
+ fun_l13_n487(x)
+ end
+end
+
+def fun_l12_n93(x)
+ if (x < 1)
+ fun_l13_n500(x)
+ else
+ fun_l13_n2(x)
+ end
+end
+
+def fun_l12_n94(x)
+ if (x < 1)
+ fun_l13_n362(x)
+ else
+ fun_l13_n69(x)
+ end
+end
+
+def fun_l12_n95(x)
+ if (x < 1)
+ fun_l13_n50(x)
+ else
+ fun_l13_n549(x)
+ end
+end
+
+def fun_l12_n96(x)
+ if (x < 1)
+ fun_l13_n407(x)
+ else
+ fun_l13_n935(x)
+ end
+end
+
+def fun_l12_n97(x)
+ if (x < 1)
+ fun_l13_n715(x)
+ else
+ fun_l13_n70(x)
+ end
+end
+
+def fun_l12_n98(x)
+ if (x < 1)
+ fun_l13_n184(x)
+ else
+ fun_l13_n702(x)
+ end
+end
+
+def fun_l12_n99(x)
+ if (x < 1)
+ fun_l13_n612(x)
+ else
+ fun_l13_n972(x)
+ end
+end
+
+def fun_l12_n100(x)
+ if (x < 1)
+ fun_l13_n778(x)
+ else
+ fun_l13_n458(x)
+ end
+end
+
+def fun_l12_n101(x)
+ if (x < 1)
+ fun_l13_n387(x)
+ else
+ fun_l13_n783(x)
+ end
+end
+
+def fun_l12_n102(x)
+ if (x < 1)
+ fun_l13_n764(x)
+ else
+ fun_l13_n647(x)
+ end
+end
+
+def fun_l12_n103(x)
+ if (x < 1)
+ fun_l13_n310(x)
+ else
+ fun_l13_n46(x)
+ end
+end
+
+def fun_l12_n104(x)
+ if (x < 1)
+ fun_l13_n643(x)
+ else
+ fun_l13_n479(x)
+ end
+end
+
+def fun_l12_n105(x)
+ if (x < 1)
+ fun_l13_n909(x)
+ else
+ fun_l13_n10(x)
+ end
+end
+
+def fun_l12_n106(x)
+ if (x < 1)
+ fun_l13_n181(x)
+ else
+ fun_l13_n671(x)
+ end
+end
+
+def fun_l12_n107(x)
+ if (x < 1)
+ fun_l13_n592(x)
+ else
+ fun_l13_n421(x)
+ end
+end
+
+def fun_l12_n108(x)
+ if (x < 1)
+ fun_l13_n438(x)
+ else
+ fun_l13_n196(x)
+ end
+end
+
+def fun_l12_n109(x)
+ if (x < 1)
+ fun_l13_n605(x)
+ else
+ fun_l13_n529(x)
+ end
+end
+
+def fun_l12_n110(x)
+ if (x < 1)
+ fun_l13_n31(x)
+ else
+ fun_l13_n769(x)
+ end
+end
+
+def fun_l12_n111(x)
+ if (x < 1)
+ fun_l13_n790(x)
+ else
+ fun_l13_n773(x)
+ end
+end
+
+def fun_l12_n112(x)
+ if (x < 1)
+ fun_l13_n778(x)
+ else
+ fun_l13_n621(x)
+ end
+end
+
+def fun_l12_n113(x)
+ if (x < 1)
+ fun_l13_n892(x)
+ else
+ fun_l13_n413(x)
+ end
+end
+
+def fun_l12_n114(x)
+ if (x < 1)
+ fun_l13_n675(x)
+ else
+ fun_l13_n124(x)
+ end
+end
+
+def fun_l12_n115(x)
+ if (x < 1)
+ fun_l13_n366(x)
+ else
+ fun_l13_n884(x)
+ end
+end
+
+def fun_l12_n116(x)
+ if (x < 1)
+ fun_l13_n552(x)
+ else
+ fun_l13_n769(x)
+ end
+end
+
+def fun_l12_n117(x)
+ if (x < 1)
+ fun_l13_n11(x)
+ else
+ fun_l13_n46(x)
+ end
+end
+
+def fun_l12_n118(x)
+ if (x < 1)
+ fun_l13_n766(x)
+ else
+ fun_l13_n914(x)
+ end
+end
+
+def fun_l12_n119(x)
+ if (x < 1)
+ fun_l13_n980(x)
+ else
+ fun_l13_n956(x)
+ end
+end
+
+def fun_l12_n120(x)
+ if (x < 1)
+ fun_l13_n668(x)
+ else
+ fun_l13_n532(x)
+ end
+end
+
+def fun_l12_n121(x)
+ if (x < 1)
+ fun_l13_n864(x)
+ else
+ fun_l13_n489(x)
+ end
+end
+
+def fun_l12_n122(x)
+ if (x < 1)
+ fun_l13_n581(x)
+ else
+ fun_l13_n33(x)
+ end
+end
+
+def fun_l12_n123(x)
+ if (x < 1)
+ fun_l13_n188(x)
+ else
+ fun_l13_n652(x)
+ end
+end
+
+def fun_l12_n124(x)
+ if (x < 1)
+ fun_l13_n631(x)
+ else
+ fun_l13_n932(x)
+ end
+end
+
+def fun_l12_n125(x)
+ if (x < 1)
+ fun_l13_n646(x)
+ else
+ fun_l13_n525(x)
+ end
+end
+
+def fun_l12_n126(x)
+ if (x < 1)
+ fun_l13_n878(x)
+ else
+ fun_l13_n98(x)
+ end
+end
+
+def fun_l12_n127(x)
+ if (x < 1)
+ fun_l13_n120(x)
+ else
+ fun_l13_n950(x)
+ end
+end
+
+def fun_l12_n128(x)
+ if (x < 1)
+ fun_l13_n405(x)
+ else
+ fun_l13_n60(x)
+ end
+end
+
+def fun_l12_n129(x)
+ if (x < 1)
+ fun_l13_n635(x)
+ else
+ fun_l13_n992(x)
+ end
+end
+
+def fun_l12_n130(x)
+ if (x < 1)
+ fun_l13_n711(x)
+ else
+ fun_l13_n172(x)
+ end
+end
+
+def fun_l12_n131(x)
+ if (x < 1)
+ fun_l13_n2(x)
+ else
+ fun_l13_n328(x)
+ end
+end
+
+def fun_l12_n132(x)
+ if (x < 1)
+ fun_l13_n506(x)
+ else
+ fun_l13_n258(x)
+ end
+end
+
+def fun_l12_n133(x)
+ if (x < 1)
+ fun_l13_n737(x)
+ else
+ fun_l13_n552(x)
+ end
+end
+
+def fun_l12_n134(x)
+ if (x < 1)
+ fun_l13_n596(x)
+ else
+ fun_l13_n475(x)
+ end
+end
+
+def fun_l12_n135(x)
+ if (x < 1)
+ fun_l13_n751(x)
+ else
+ fun_l13_n610(x)
+ end
+end
+
+def fun_l12_n136(x)
+ if (x < 1)
+ fun_l13_n778(x)
+ else
+ fun_l13_n719(x)
+ end
+end
+
+def fun_l12_n137(x)
+ if (x < 1)
+ fun_l13_n779(x)
+ else
+ fun_l13_n204(x)
+ end
+end
+
+def fun_l12_n138(x)
+ if (x < 1)
+ fun_l13_n765(x)
+ else
+ fun_l13_n280(x)
+ end
+end
+
+def fun_l12_n139(x)
+ if (x < 1)
+ fun_l13_n896(x)
+ else
+ fun_l13_n558(x)
+ end
+end
+
+def fun_l12_n140(x)
+ if (x < 1)
+ fun_l13_n16(x)
+ else
+ fun_l13_n809(x)
+ end
+end
+
+def fun_l12_n141(x)
+ if (x < 1)
+ fun_l13_n182(x)
+ else
+ fun_l13_n960(x)
+ end
+end
+
+def fun_l12_n142(x)
+ if (x < 1)
+ fun_l13_n196(x)
+ else
+ fun_l13_n794(x)
+ end
+end
+
+def fun_l12_n143(x)
+ if (x < 1)
+ fun_l13_n993(x)
+ else
+ fun_l13_n426(x)
+ end
+end
+
+def fun_l12_n144(x)
+ if (x < 1)
+ fun_l13_n926(x)
+ else
+ fun_l13_n554(x)
+ end
+end
+
+def fun_l12_n145(x)
+ if (x < 1)
+ fun_l13_n839(x)
+ else
+ fun_l13_n987(x)
+ end
+end
+
+def fun_l12_n146(x)
+ if (x < 1)
+ fun_l13_n412(x)
+ else
+ fun_l13_n359(x)
+ end
+end
+
+def fun_l12_n147(x)
+ if (x < 1)
+ fun_l13_n147(x)
+ else
+ fun_l13_n640(x)
+ end
+end
+
+def fun_l12_n148(x)
+ if (x < 1)
+ fun_l13_n831(x)
+ else
+ fun_l13_n862(x)
+ end
+end
+
+def fun_l12_n149(x)
+ if (x < 1)
+ fun_l13_n161(x)
+ else
+ fun_l13_n396(x)
+ end
+end
+
+def fun_l12_n150(x)
+ if (x < 1)
+ fun_l13_n734(x)
+ else
+ fun_l13_n226(x)
+ end
+end
+
+def fun_l12_n151(x)
+ if (x < 1)
+ fun_l13_n390(x)
+ else
+ fun_l13_n396(x)
+ end
+end
+
+def fun_l12_n152(x)
+ if (x < 1)
+ fun_l13_n722(x)
+ else
+ fun_l13_n939(x)
+ end
+end
+
+def fun_l12_n153(x)
+ if (x < 1)
+ fun_l13_n554(x)
+ else
+ fun_l13_n461(x)
+ end
+end
+
+def fun_l12_n154(x)
+ if (x < 1)
+ fun_l13_n223(x)
+ else
+ fun_l13_n502(x)
+ end
+end
+
+def fun_l12_n155(x)
+ if (x < 1)
+ fun_l13_n526(x)
+ else
+ fun_l13_n949(x)
+ end
+end
+
+def fun_l12_n156(x)
+ if (x < 1)
+ fun_l13_n764(x)
+ else
+ fun_l13_n290(x)
+ end
+end
+
+def fun_l12_n157(x)
+ if (x < 1)
+ fun_l13_n904(x)
+ else
+ fun_l13_n562(x)
+ end
+end
+
+def fun_l12_n158(x)
+ if (x < 1)
+ fun_l13_n308(x)
+ else
+ fun_l13_n646(x)
+ end
+end
+
+def fun_l12_n159(x)
+ if (x < 1)
+ fun_l13_n417(x)
+ else
+ fun_l13_n576(x)
+ end
+end
+
+def fun_l12_n160(x)
+ if (x < 1)
+ fun_l13_n846(x)
+ else
+ fun_l13_n989(x)
+ end
+end
+
+def fun_l12_n161(x)
+ if (x < 1)
+ fun_l13_n59(x)
+ else
+ fun_l13_n877(x)
+ end
+end
+
+def fun_l12_n162(x)
+ if (x < 1)
+ fun_l13_n194(x)
+ else
+ fun_l13_n654(x)
+ end
+end
+
+def fun_l12_n163(x)
+ if (x < 1)
+ fun_l13_n350(x)
+ else
+ fun_l13_n412(x)
+ end
+end
+
+def fun_l12_n164(x)
+ if (x < 1)
+ fun_l13_n482(x)
+ else
+ fun_l13_n820(x)
+ end
+end
+
+def fun_l12_n165(x)
+ if (x < 1)
+ fun_l13_n251(x)
+ else
+ fun_l13_n421(x)
+ end
+end
+
+def fun_l12_n166(x)
+ if (x < 1)
+ fun_l13_n832(x)
+ else
+ fun_l13_n505(x)
+ end
+end
+
+def fun_l12_n167(x)
+ if (x < 1)
+ fun_l13_n316(x)
+ else
+ fun_l13_n355(x)
+ end
+end
+
+def fun_l12_n168(x)
+ if (x < 1)
+ fun_l13_n325(x)
+ else
+ fun_l13_n755(x)
+ end
+end
+
+def fun_l12_n169(x)
+ if (x < 1)
+ fun_l13_n536(x)
+ else
+ fun_l13_n753(x)
+ end
+end
+
+def fun_l12_n170(x)
+ if (x < 1)
+ fun_l13_n819(x)
+ else
+ fun_l13_n532(x)
+ end
+end
+
+def fun_l12_n171(x)
+ if (x < 1)
+ fun_l13_n633(x)
+ else
+ fun_l13_n96(x)
+ end
+end
+
+def fun_l12_n172(x)
+ if (x < 1)
+ fun_l13_n229(x)
+ else
+ fun_l13_n105(x)
+ end
+end
+
+def fun_l12_n173(x)
+ if (x < 1)
+ fun_l13_n796(x)
+ else
+ fun_l13_n466(x)
+ end
+end
+
+def fun_l12_n174(x)
+ if (x < 1)
+ fun_l13_n520(x)
+ else
+ fun_l13_n329(x)
+ end
+end
+
+def fun_l12_n175(x)
+ if (x < 1)
+ fun_l13_n358(x)
+ else
+ fun_l13_n201(x)
+ end
+end
+
+def fun_l12_n176(x)
+ if (x < 1)
+ fun_l13_n42(x)
+ else
+ fun_l13_n649(x)
+ end
+end
+
+def fun_l12_n177(x)
+ if (x < 1)
+ fun_l13_n933(x)
+ else
+ fun_l13_n719(x)
+ end
+end
+
+def fun_l12_n178(x)
+ if (x < 1)
+ fun_l13_n236(x)
+ else
+ fun_l13_n723(x)
+ end
+end
+
+def fun_l12_n179(x)
+ if (x < 1)
+ fun_l13_n992(x)
+ else
+ fun_l13_n436(x)
+ end
+end
+
+def fun_l12_n180(x)
+ if (x < 1)
+ fun_l13_n221(x)
+ else
+ fun_l13_n294(x)
+ end
+end
+
+def fun_l12_n181(x)
+ if (x < 1)
+ fun_l13_n580(x)
+ else
+ fun_l13_n939(x)
+ end
+end
+
+def fun_l12_n182(x)
+ if (x < 1)
+ fun_l13_n608(x)
+ else
+ fun_l13_n709(x)
+ end
+end
+
+def fun_l12_n183(x)
+ if (x < 1)
+ fun_l13_n644(x)
+ else
+ fun_l13_n717(x)
+ end
+end
+
+def fun_l12_n184(x)
+ if (x < 1)
+ fun_l13_n605(x)
+ else
+ fun_l13_n665(x)
+ end
+end
+
+def fun_l12_n185(x)
+ if (x < 1)
+ fun_l13_n729(x)
+ else
+ fun_l13_n876(x)
+ end
+end
+
+def fun_l12_n186(x)
+ if (x < 1)
+ fun_l13_n43(x)
+ else
+ fun_l13_n366(x)
+ end
+end
+
+def fun_l12_n187(x)
+ if (x < 1)
+ fun_l13_n401(x)
+ else
+ fun_l13_n610(x)
+ end
+end
+
+def fun_l12_n188(x)
+ if (x < 1)
+ fun_l13_n489(x)
+ else
+ fun_l13_n107(x)
+ end
+end
+
+def fun_l12_n189(x)
+ if (x < 1)
+ fun_l13_n859(x)
+ else
+ fun_l13_n355(x)
+ end
+end
+
+def fun_l12_n190(x)
+ if (x < 1)
+ fun_l13_n631(x)
+ else
+ fun_l13_n399(x)
+ end
+end
+
+def fun_l12_n191(x)
+ if (x < 1)
+ fun_l13_n332(x)
+ else
+ fun_l13_n333(x)
+ end
+end
+
+def fun_l12_n192(x)
+ if (x < 1)
+ fun_l13_n535(x)
+ else
+ fun_l13_n191(x)
+ end
+end
+
+def fun_l12_n193(x)
+ if (x < 1)
+ fun_l13_n157(x)
+ else
+ fun_l13_n927(x)
+ end
+end
+
+def fun_l12_n194(x)
+ if (x < 1)
+ fun_l13_n733(x)
+ else
+ fun_l13_n798(x)
+ end
+end
+
+def fun_l12_n195(x)
+ if (x < 1)
+ fun_l13_n31(x)
+ else
+ fun_l13_n703(x)
+ end
+end
+
+def fun_l12_n196(x)
+ if (x < 1)
+ fun_l13_n976(x)
+ else
+ fun_l13_n862(x)
+ end
+end
+
+def fun_l12_n197(x)
+ if (x < 1)
+ fun_l13_n267(x)
+ else
+ fun_l13_n803(x)
+ end
+end
+
+def fun_l12_n198(x)
+ if (x < 1)
+ fun_l13_n598(x)
+ else
+ fun_l13_n255(x)
+ end
+end
+
+def fun_l12_n199(x)
+ if (x < 1)
+ fun_l13_n566(x)
+ else
+ fun_l13_n668(x)
+ end
+end
+
+def fun_l12_n200(x)
+ if (x < 1)
+ fun_l13_n48(x)
+ else
+ fun_l13_n406(x)
+ end
+end
+
+def fun_l12_n201(x)
+ if (x < 1)
+ fun_l13_n971(x)
+ else
+ fun_l13_n225(x)
+ end
+end
+
+def fun_l12_n202(x)
+ if (x < 1)
+ fun_l13_n120(x)
+ else
+ fun_l13_n72(x)
+ end
+end
+
+def fun_l12_n203(x)
+ if (x < 1)
+ fun_l13_n333(x)
+ else
+ fun_l13_n381(x)
+ end
+end
+
+def fun_l12_n204(x)
+ if (x < 1)
+ fun_l13_n558(x)
+ else
+ fun_l13_n474(x)
+ end
+end
+
+def fun_l12_n205(x)
+ if (x < 1)
+ fun_l13_n796(x)
+ else
+ fun_l13_n420(x)
+ end
+end
+
+def fun_l12_n206(x)
+ if (x < 1)
+ fun_l13_n287(x)
+ else
+ fun_l13_n43(x)
+ end
+end
+
+def fun_l12_n207(x)
+ if (x < 1)
+ fun_l13_n778(x)
+ else
+ fun_l13_n560(x)
+ end
+end
+
+def fun_l12_n208(x)
+ if (x < 1)
+ fun_l13_n707(x)
+ else
+ fun_l13_n824(x)
+ end
+end
+
+def fun_l12_n209(x)
+ if (x < 1)
+ fun_l13_n788(x)
+ else
+ fun_l13_n625(x)
+ end
+end
+
+def fun_l12_n210(x)
+ if (x < 1)
+ fun_l13_n818(x)
+ else
+ fun_l13_n667(x)
+ end
+end
+
+def fun_l12_n211(x)
+ if (x < 1)
+ fun_l13_n710(x)
+ else
+ fun_l13_n508(x)
+ end
+end
+
+def fun_l12_n212(x)
+ if (x < 1)
+ fun_l13_n497(x)
+ else
+ fun_l13_n20(x)
+ end
+end
+
+def fun_l12_n213(x)
+ if (x < 1)
+ fun_l13_n648(x)
+ else
+ fun_l13_n33(x)
+ end
+end
+
+def fun_l12_n214(x)
+ if (x < 1)
+ fun_l13_n404(x)
+ else
+ fun_l13_n918(x)
+ end
+end
+
+def fun_l12_n215(x)
+ if (x < 1)
+ fun_l13_n595(x)
+ else
+ fun_l13_n440(x)
+ end
+end
+
+def fun_l12_n216(x)
+ if (x < 1)
+ fun_l13_n302(x)
+ else
+ fun_l13_n388(x)
+ end
+end
+
+def fun_l12_n217(x)
+ if (x < 1)
+ fun_l13_n301(x)
+ else
+ fun_l13_n416(x)
+ end
+end
+
+def fun_l12_n218(x)
+ if (x < 1)
+ fun_l13_n114(x)
+ else
+ fun_l13_n650(x)
+ end
+end
+
+def fun_l12_n219(x)
+ if (x < 1)
+ fun_l13_n221(x)
+ else
+ fun_l13_n539(x)
+ end
+end
+
+def fun_l12_n220(x)
+ if (x < 1)
+ fun_l13_n529(x)
+ else
+ fun_l13_n438(x)
+ end
+end
+
+def fun_l12_n221(x)
+ if (x < 1)
+ fun_l13_n528(x)
+ else
+ fun_l13_n284(x)
+ end
+end
+
+def fun_l12_n222(x)
+ if (x < 1)
+ fun_l13_n746(x)
+ else
+ fun_l13_n634(x)
+ end
+end
+
+def fun_l12_n223(x)
+ if (x < 1)
+ fun_l13_n726(x)
+ else
+ fun_l13_n142(x)
+ end
+end
+
+def fun_l12_n224(x)
+ if (x < 1)
+ fun_l13_n57(x)
+ else
+ fun_l13_n625(x)
+ end
+end
+
+def fun_l12_n225(x)
+ if (x < 1)
+ fun_l13_n739(x)
+ else
+ fun_l13_n667(x)
+ end
+end
+
+def fun_l12_n226(x)
+ if (x < 1)
+ fun_l13_n693(x)
+ else
+ fun_l13_n819(x)
+ end
+end
+
+def fun_l12_n227(x)
+ if (x < 1)
+ fun_l13_n316(x)
+ else
+ fun_l13_n866(x)
+ end
+end
+
+def fun_l12_n228(x)
+ if (x < 1)
+ fun_l13_n88(x)
+ else
+ fun_l13_n336(x)
+ end
+end
+
+def fun_l12_n229(x)
+ if (x < 1)
+ fun_l13_n387(x)
+ else
+ fun_l13_n226(x)
+ end
+end
+
+def fun_l12_n230(x)
+ if (x < 1)
+ fun_l13_n644(x)
+ else
+ fun_l13_n933(x)
+ end
+end
+
+def fun_l12_n231(x)
+ if (x < 1)
+ fun_l13_n952(x)
+ else
+ fun_l13_n747(x)
+ end
+end
+
+def fun_l12_n232(x)
+ if (x < 1)
+ fun_l13_n107(x)
+ else
+ fun_l13_n0(x)
+ end
+end
+
+def fun_l12_n233(x)
+ if (x < 1)
+ fun_l13_n589(x)
+ else
+ fun_l13_n712(x)
+ end
+end
+
+def fun_l12_n234(x)
+ if (x < 1)
+ fun_l13_n429(x)
+ else
+ fun_l13_n845(x)
+ end
+end
+
+def fun_l12_n235(x)
+ if (x < 1)
+ fun_l13_n733(x)
+ else
+ fun_l13_n203(x)
+ end
+end
+
+def fun_l12_n236(x)
+ if (x < 1)
+ fun_l13_n842(x)
+ else
+ fun_l13_n134(x)
+ end
+end
+
+def fun_l12_n237(x)
+ if (x < 1)
+ fun_l13_n114(x)
+ else
+ fun_l13_n794(x)
+ end
+end
+
+def fun_l12_n238(x)
+ if (x < 1)
+ fun_l13_n463(x)
+ else
+ fun_l13_n127(x)
+ end
+end
+
+def fun_l12_n239(x)
+ if (x < 1)
+ fun_l13_n443(x)
+ else
+ fun_l13_n13(x)
+ end
+end
+
+def fun_l12_n240(x)
+ if (x < 1)
+ fun_l13_n713(x)
+ else
+ fun_l13_n447(x)
+ end
+end
+
+def fun_l12_n241(x)
+ if (x < 1)
+ fun_l13_n404(x)
+ else
+ fun_l13_n796(x)
+ end
+end
+
+def fun_l12_n242(x)
+ if (x < 1)
+ fun_l13_n277(x)
+ else
+ fun_l13_n106(x)
+ end
+end
+
+def fun_l12_n243(x)
+ if (x < 1)
+ fun_l13_n584(x)
+ else
+ fun_l13_n262(x)
+ end
+end
+
+def fun_l12_n244(x)
+ if (x < 1)
+ fun_l13_n670(x)
+ else
+ fun_l13_n989(x)
+ end
+end
+
+def fun_l12_n245(x)
+ if (x < 1)
+ fun_l13_n588(x)
+ else
+ fun_l13_n513(x)
+ end
+end
+
+def fun_l12_n246(x)
+ if (x < 1)
+ fun_l13_n98(x)
+ else
+ fun_l13_n400(x)
+ end
+end
+
+def fun_l12_n247(x)
+ if (x < 1)
+ fun_l13_n119(x)
+ else
+ fun_l13_n321(x)
+ end
+end
+
+def fun_l12_n248(x)
+ if (x < 1)
+ fun_l13_n157(x)
+ else
+ fun_l13_n557(x)
+ end
+end
+
+def fun_l12_n249(x)
+ if (x < 1)
+ fun_l13_n243(x)
+ else
+ fun_l13_n596(x)
+ end
+end
+
+def fun_l12_n250(x)
+ if (x < 1)
+ fun_l13_n280(x)
+ else
+ fun_l13_n779(x)
+ end
+end
+
+def fun_l12_n251(x)
+ if (x < 1)
+ fun_l13_n437(x)
+ else
+ fun_l13_n829(x)
+ end
+end
+
+def fun_l12_n252(x)
+ if (x < 1)
+ fun_l13_n472(x)
+ else
+ fun_l13_n224(x)
+ end
+end
+
+def fun_l12_n253(x)
+ if (x < 1)
+ fun_l13_n151(x)
+ else
+ fun_l13_n168(x)
+ end
+end
+
+def fun_l12_n254(x)
+ if (x < 1)
+ fun_l13_n724(x)
+ else
+ fun_l13_n355(x)
+ end
+end
+
+def fun_l12_n255(x)
+ if (x < 1)
+ fun_l13_n27(x)
+ else
+ fun_l13_n776(x)
+ end
+end
+
+def fun_l12_n256(x)
+ if (x < 1)
+ fun_l13_n116(x)
+ else
+ fun_l13_n52(x)
+ end
+end
+
+def fun_l12_n257(x)
+ if (x < 1)
+ fun_l13_n201(x)
+ else
+ fun_l13_n982(x)
+ end
+end
+
+def fun_l12_n258(x)
+ if (x < 1)
+ fun_l13_n152(x)
+ else
+ fun_l13_n818(x)
+ end
+end
+
+def fun_l12_n259(x)
+ if (x < 1)
+ fun_l13_n859(x)
+ else
+ fun_l13_n555(x)
+ end
+end
+
+def fun_l12_n260(x)
+ if (x < 1)
+ fun_l13_n29(x)
+ else
+ fun_l13_n416(x)
+ end
+end
+
+def fun_l12_n261(x)
+ if (x < 1)
+ fun_l13_n811(x)
+ else
+ fun_l13_n827(x)
+ end
+end
+
+def fun_l12_n262(x)
+ if (x < 1)
+ fun_l13_n867(x)
+ else
+ fun_l13_n298(x)
+ end
+end
+
+def fun_l12_n263(x)
+ if (x < 1)
+ fun_l13_n464(x)
+ else
+ fun_l13_n420(x)
+ end
+end
+
+def fun_l12_n264(x)
+ if (x < 1)
+ fun_l13_n494(x)
+ else
+ fun_l13_n368(x)
+ end
+end
+
+def fun_l12_n265(x)
+ if (x < 1)
+ fun_l13_n959(x)
+ else
+ fun_l13_n425(x)
+ end
+end
+
+def fun_l12_n266(x)
+ if (x < 1)
+ fun_l13_n841(x)
+ else
+ fun_l13_n874(x)
+ end
+end
+
+def fun_l12_n267(x)
+ if (x < 1)
+ fun_l13_n885(x)
+ else
+ fun_l13_n631(x)
+ end
+end
+
+def fun_l12_n268(x)
+ if (x < 1)
+ fun_l13_n645(x)
+ else
+ fun_l13_n342(x)
+ end
+end
+
+def fun_l12_n269(x)
+ if (x < 1)
+ fun_l13_n4(x)
+ else
+ fun_l13_n81(x)
+ end
+end
+
+def fun_l12_n270(x)
+ if (x < 1)
+ fun_l13_n44(x)
+ else
+ fun_l13_n924(x)
+ end
+end
+
+def fun_l12_n271(x)
+ if (x < 1)
+ fun_l13_n955(x)
+ else
+ fun_l13_n834(x)
+ end
+end
+
+def fun_l12_n272(x)
+ if (x < 1)
+ fun_l13_n969(x)
+ else
+ fun_l13_n699(x)
+ end
+end
+
+def fun_l12_n273(x)
+ if (x < 1)
+ fun_l13_n590(x)
+ else
+ fun_l13_n608(x)
+ end
+end
+
+def fun_l12_n274(x)
+ if (x < 1)
+ fun_l13_n170(x)
+ else
+ fun_l13_n343(x)
+ end
+end
+
+def fun_l12_n275(x)
+ if (x < 1)
+ fun_l13_n317(x)
+ else
+ fun_l13_n998(x)
+ end
+end
+
+def fun_l12_n276(x)
+ if (x < 1)
+ fun_l13_n864(x)
+ else
+ fun_l13_n644(x)
+ end
+end
+
+def fun_l12_n277(x)
+ if (x < 1)
+ fun_l13_n42(x)
+ else
+ fun_l13_n663(x)
+ end
+end
+
+def fun_l12_n278(x)
+ if (x < 1)
+ fun_l13_n39(x)
+ else
+ fun_l13_n624(x)
+ end
+end
+
+def fun_l12_n279(x)
+ if (x < 1)
+ fun_l13_n578(x)
+ else
+ fun_l13_n592(x)
+ end
+end
+
+def fun_l12_n280(x)
+ if (x < 1)
+ fun_l13_n345(x)
+ else
+ fun_l13_n462(x)
+ end
+end
+
+def fun_l12_n281(x)
+ if (x < 1)
+ fun_l13_n741(x)
+ else
+ fun_l13_n93(x)
+ end
+end
+
+def fun_l12_n282(x)
+ if (x < 1)
+ fun_l13_n845(x)
+ else
+ fun_l13_n981(x)
+ end
+end
+
+def fun_l12_n283(x)
+ if (x < 1)
+ fun_l13_n479(x)
+ else
+ fun_l13_n823(x)
+ end
+end
+
+def fun_l12_n284(x)
+ if (x < 1)
+ fun_l13_n201(x)
+ else
+ fun_l13_n526(x)
+ end
+end
+
+def fun_l12_n285(x)
+ if (x < 1)
+ fun_l13_n890(x)
+ else
+ fun_l13_n237(x)
+ end
+end
+
+def fun_l12_n286(x)
+ if (x < 1)
+ fun_l13_n377(x)
+ else
+ fun_l13_n249(x)
+ end
+end
+
+def fun_l12_n287(x)
+ if (x < 1)
+ fun_l13_n147(x)
+ else
+ fun_l13_n306(x)
+ end
+end
+
+def fun_l12_n288(x)
+ if (x < 1)
+ fun_l13_n822(x)
+ else
+ fun_l13_n220(x)
+ end
+end
+
+def fun_l12_n289(x)
+ if (x < 1)
+ fun_l13_n106(x)
+ else
+ fun_l13_n648(x)
+ end
+end
+
+def fun_l12_n290(x)
+ if (x < 1)
+ fun_l13_n278(x)
+ else
+ fun_l13_n255(x)
+ end
+end
+
+def fun_l12_n291(x)
+ if (x < 1)
+ fun_l13_n994(x)
+ else
+ fun_l13_n36(x)
+ end
+end
+
+def fun_l12_n292(x)
+ if (x < 1)
+ fun_l13_n731(x)
+ else
+ fun_l13_n473(x)
+ end
+end
+
+def fun_l12_n293(x)
+ if (x < 1)
+ fun_l13_n321(x)
+ else
+ fun_l13_n518(x)
+ end
+end
+
+def fun_l12_n294(x)
+ if (x < 1)
+ fun_l13_n91(x)
+ else
+ fun_l13_n765(x)
+ end
+end
+
+def fun_l12_n295(x)
+ if (x < 1)
+ fun_l13_n39(x)
+ else
+ fun_l13_n639(x)
+ end
+end
+
+def fun_l12_n296(x)
+ if (x < 1)
+ fun_l13_n800(x)
+ else
+ fun_l13_n821(x)
+ end
+end
+
+def fun_l12_n297(x)
+ if (x < 1)
+ fun_l13_n553(x)
+ else
+ fun_l13_n898(x)
+ end
+end
+
+def fun_l12_n298(x)
+ if (x < 1)
+ fun_l13_n487(x)
+ else
+ fun_l13_n470(x)
+ end
+end
+
+def fun_l12_n299(x)
+ if (x < 1)
+ fun_l13_n743(x)
+ else
+ fun_l13_n684(x)
+ end
+end
+
+def fun_l12_n300(x)
+ if (x < 1)
+ fun_l13_n177(x)
+ else
+ fun_l13_n375(x)
+ end
+end
+
+def fun_l12_n301(x)
+ if (x < 1)
+ fun_l13_n714(x)
+ else
+ fun_l13_n922(x)
+ end
+end
+
+def fun_l12_n302(x)
+ if (x < 1)
+ fun_l13_n845(x)
+ else
+ fun_l13_n93(x)
+ end
+end
+
+def fun_l12_n303(x)
+ if (x < 1)
+ fun_l13_n806(x)
+ else
+ fun_l13_n706(x)
+ end
+end
+
+def fun_l12_n304(x)
+ if (x < 1)
+ fun_l13_n428(x)
+ else
+ fun_l13_n942(x)
+ end
+end
+
+def fun_l12_n305(x)
+ if (x < 1)
+ fun_l13_n170(x)
+ else
+ fun_l13_n634(x)
+ end
+end
+
+def fun_l12_n306(x)
+ if (x < 1)
+ fun_l13_n998(x)
+ else
+ fun_l13_n224(x)
+ end
+end
+
+def fun_l12_n307(x)
+ if (x < 1)
+ fun_l13_n15(x)
+ else
+ fun_l13_n753(x)
+ end
+end
+
+def fun_l12_n308(x)
+ if (x < 1)
+ fun_l13_n323(x)
+ else
+ fun_l13_n846(x)
+ end
+end
+
+def fun_l12_n309(x)
+ if (x < 1)
+ fun_l13_n779(x)
+ else
+ fun_l13_n330(x)
+ end
+end
+
+def fun_l12_n310(x)
+ if (x < 1)
+ fun_l13_n652(x)
+ else
+ fun_l13_n560(x)
+ end
+end
+
+def fun_l12_n311(x)
+ if (x < 1)
+ fun_l13_n54(x)
+ else
+ fun_l13_n144(x)
+ end
+end
+
+def fun_l12_n312(x)
+ if (x < 1)
+ fun_l13_n674(x)
+ else
+ fun_l13_n779(x)
+ end
+end
+
+def fun_l12_n313(x)
+ if (x < 1)
+ fun_l13_n975(x)
+ else
+ fun_l13_n109(x)
+ end
+end
+
+def fun_l12_n314(x)
+ if (x < 1)
+ fun_l13_n997(x)
+ else
+ fun_l13_n827(x)
+ end
+end
+
+def fun_l12_n315(x)
+ if (x < 1)
+ fun_l13_n822(x)
+ else
+ fun_l13_n349(x)
+ end
+end
+
+def fun_l12_n316(x)
+ if (x < 1)
+ fun_l13_n516(x)
+ else
+ fun_l13_n974(x)
+ end
+end
+
+def fun_l12_n317(x)
+ if (x < 1)
+ fun_l13_n538(x)
+ else
+ fun_l13_n786(x)
+ end
+end
+
+def fun_l12_n318(x)
+ if (x < 1)
+ fun_l13_n125(x)
+ else
+ fun_l13_n809(x)
+ end
+end
+
+def fun_l12_n319(x)
+ if (x < 1)
+ fun_l13_n642(x)
+ else
+ fun_l13_n188(x)
+ end
+end
+
+def fun_l12_n320(x)
+ if (x < 1)
+ fun_l13_n904(x)
+ else
+ fun_l13_n396(x)
+ end
+end
+
+def fun_l12_n321(x)
+ if (x < 1)
+ fun_l13_n278(x)
+ else
+ fun_l13_n752(x)
+ end
+end
+
+def fun_l12_n322(x)
+ if (x < 1)
+ fun_l13_n566(x)
+ else
+ fun_l13_n894(x)
+ end
+end
+
+def fun_l12_n323(x)
+ if (x < 1)
+ fun_l13_n357(x)
+ else
+ fun_l13_n742(x)
+ end
+end
+
+def fun_l12_n324(x)
+ if (x < 1)
+ fun_l13_n667(x)
+ else
+ fun_l13_n764(x)
+ end
+end
+
+def fun_l12_n325(x)
+ if (x < 1)
+ fun_l13_n333(x)
+ else
+ fun_l13_n445(x)
+ end
+end
+
+def fun_l12_n326(x)
+ if (x < 1)
+ fun_l13_n669(x)
+ else
+ fun_l13_n484(x)
+ end
+end
+
+def fun_l12_n327(x)
+ if (x < 1)
+ fun_l13_n662(x)
+ else
+ fun_l13_n610(x)
+ end
+end
+
+def fun_l12_n328(x)
+ if (x < 1)
+ fun_l13_n869(x)
+ else
+ fun_l13_n993(x)
+ end
+end
+
+def fun_l12_n329(x)
+ if (x < 1)
+ fun_l13_n305(x)
+ else
+ fun_l13_n45(x)
+ end
+end
+
+def fun_l12_n330(x)
+ if (x < 1)
+ fun_l13_n32(x)
+ else
+ fun_l13_n253(x)
+ end
+end
+
+def fun_l12_n331(x)
+ if (x < 1)
+ fun_l13_n45(x)
+ else
+ fun_l13_n327(x)
+ end
+end
+
+def fun_l12_n332(x)
+ if (x < 1)
+ fun_l13_n685(x)
+ else
+ fun_l13_n562(x)
+ end
+end
+
+def fun_l12_n333(x)
+ if (x < 1)
+ fun_l13_n274(x)
+ else
+ fun_l13_n461(x)
+ end
+end
+
+def fun_l12_n334(x)
+ if (x < 1)
+ fun_l13_n93(x)
+ else
+ fun_l13_n7(x)
+ end
+end
+
+def fun_l12_n335(x)
+ if (x < 1)
+ fun_l13_n742(x)
+ else
+ fun_l13_n259(x)
+ end
+end
+
+def fun_l12_n336(x)
+ if (x < 1)
+ fun_l13_n518(x)
+ else
+ fun_l13_n108(x)
+ end
+end
+
+def fun_l12_n337(x)
+ if (x < 1)
+ fun_l13_n439(x)
+ else
+ fun_l13_n21(x)
+ end
+end
+
+def fun_l12_n338(x)
+ if (x < 1)
+ fun_l13_n34(x)
+ else
+ fun_l13_n869(x)
+ end
+end
+
+def fun_l12_n339(x)
+ if (x < 1)
+ fun_l13_n995(x)
+ else
+ fun_l13_n810(x)
+ end
+end
+
+def fun_l12_n340(x)
+ if (x < 1)
+ fun_l13_n640(x)
+ else
+ fun_l13_n108(x)
+ end
+end
+
+def fun_l12_n341(x)
+ if (x < 1)
+ fun_l13_n332(x)
+ else
+ fun_l13_n174(x)
+ end
+end
+
+def fun_l12_n342(x)
+ if (x < 1)
+ fun_l13_n425(x)
+ else
+ fun_l13_n523(x)
+ end
+end
+
+def fun_l12_n343(x)
+ if (x < 1)
+ fun_l13_n886(x)
+ else
+ fun_l13_n9(x)
+ end
+end
+
+def fun_l12_n344(x)
+ if (x < 1)
+ fun_l13_n644(x)
+ else
+ fun_l13_n558(x)
+ end
+end
+
+def fun_l12_n345(x)
+ if (x < 1)
+ fun_l13_n40(x)
+ else
+ fun_l13_n569(x)
+ end
+end
+
+def fun_l12_n346(x)
+ if (x < 1)
+ fun_l13_n530(x)
+ else
+ fun_l13_n52(x)
+ end
+end
+
+def fun_l12_n347(x)
+ if (x < 1)
+ fun_l13_n624(x)
+ else
+ fun_l13_n525(x)
+ end
+end
+
+def fun_l12_n348(x)
+ if (x < 1)
+ fun_l13_n106(x)
+ else
+ fun_l13_n101(x)
+ end
+end
+
+def fun_l12_n349(x)
+ if (x < 1)
+ fun_l13_n164(x)
+ else
+ fun_l13_n675(x)
+ end
+end
+
+def fun_l12_n350(x)
+ if (x < 1)
+ fun_l13_n349(x)
+ else
+ fun_l13_n125(x)
+ end
+end
+
+def fun_l12_n351(x)
+ if (x < 1)
+ fun_l13_n536(x)
+ else
+ fun_l13_n949(x)
+ end
+end
+
+def fun_l12_n352(x)
+ if (x < 1)
+ fun_l13_n872(x)
+ else
+ fun_l13_n678(x)
+ end
+end
+
+def fun_l12_n353(x)
+ if (x < 1)
+ fun_l13_n566(x)
+ else
+ fun_l13_n576(x)
+ end
+end
+
+def fun_l12_n354(x)
+ if (x < 1)
+ fun_l13_n978(x)
+ else
+ fun_l13_n539(x)
+ end
+end
+
+def fun_l12_n355(x)
+ if (x < 1)
+ fun_l13_n929(x)
+ else
+ fun_l13_n301(x)
+ end
+end
+
+def fun_l12_n356(x)
+ if (x < 1)
+ fun_l13_n768(x)
+ else
+ fun_l13_n292(x)
+ end
+end
+
+def fun_l12_n357(x)
+ if (x < 1)
+ fun_l13_n873(x)
+ else
+ fun_l13_n201(x)
+ end
+end
+
+def fun_l12_n358(x)
+ if (x < 1)
+ fun_l13_n852(x)
+ else
+ fun_l13_n144(x)
+ end
+end
+
+def fun_l12_n359(x)
+ if (x < 1)
+ fun_l13_n220(x)
+ else
+ fun_l13_n318(x)
+ end
+end
+
+def fun_l12_n360(x)
+ if (x < 1)
+ fun_l13_n339(x)
+ else
+ fun_l13_n896(x)
+ end
+end
+
+def fun_l12_n361(x)
+ if (x < 1)
+ fun_l13_n896(x)
+ else
+ fun_l13_n611(x)
+ end
+end
+
+def fun_l12_n362(x)
+ if (x < 1)
+ fun_l13_n237(x)
+ else
+ fun_l13_n781(x)
+ end
+end
+
+def fun_l12_n363(x)
+ if (x < 1)
+ fun_l13_n994(x)
+ else
+ fun_l13_n306(x)
+ end
+end
+
+def fun_l12_n364(x)
+ if (x < 1)
+ fun_l13_n437(x)
+ else
+ fun_l13_n634(x)
+ end
+end
+
+def fun_l12_n365(x)
+ if (x < 1)
+ fun_l13_n367(x)
+ else
+ fun_l13_n798(x)
+ end
+end
+
+def fun_l12_n366(x)
+ if (x < 1)
+ fun_l13_n831(x)
+ else
+ fun_l13_n352(x)
+ end
+end
+
+def fun_l12_n367(x)
+ if (x < 1)
+ fun_l13_n554(x)
+ else
+ fun_l13_n999(x)
+ end
+end
+
+def fun_l12_n368(x)
+ if (x < 1)
+ fun_l13_n214(x)
+ else
+ fun_l13_n67(x)
+ end
+end
+
+def fun_l12_n369(x)
+ if (x < 1)
+ fun_l13_n628(x)
+ else
+ fun_l13_n637(x)
+ end
+end
+
+def fun_l12_n370(x)
+ if (x < 1)
+ fun_l13_n42(x)
+ else
+ fun_l13_n631(x)
+ end
+end
+
+def fun_l12_n371(x)
+ if (x < 1)
+ fun_l13_n53(x)
+ else
+ fun_l13_n226(x)
+ end
+end
+
+def fun_l12_n372(x)
+ if (x < 1)
+ fun_l13_n810(x)
+ else
+ fun_l13_n853(x)
+ end
+end
+
+def fun_l12_n373(x)
+ if (x < 1)
+ fun_l13_n257(x)
+ else
+ fun_l13_n480(x)
+ end
+end
+
+def fun_l12_n374(x)
+ if (x < 1)
+ fun_l13_n715(x)
+ else
+ fun_l13_n481(x)
+ end
+end
+
+def fun_l12_n375(x)
+ if (x < 1)
+ fun_l13_n499(x)
+ else
+ fun_l13_n694(x)
+ end
+end
+
+def fun_l12_n376(x)
+ if (x < 1)
+ fun_l13_n376(x)
+ else
+ fun_l13_n99(x)
+ end
+end
+
+def fun_l12_n377(x)
+ if (x < 1)
+ fun_l13_n672(x)
+ else
+ fun_l13_n421(x)
+ end
+end
+
+def fun_l12_n378(x)
+ if (x < 1)
+ fun_l13_n320(x)
+ else
+ fun_l13_n590(x)
+ end
+end
+
+def fun_l12_n379(x)
+ if (x < 1)
+ fun_l13_n678(x)
+ else
+ fun_l13_n727(x)
+ end
+end
+
+def fun_l12_n380(x)
+ if (x < 1)
+ fun_l13_n269(x)
+ else
+ fun_l13_n74(x)
+ end
+end
+
+def fun_l12_n381(x)
+ if (x < 1)
+ fun_l13_n838(x)
+ else
+ fun_l13_n105(x)
+ end
+end
+
+def fun_l12_n382(x)
+ if (x < 1)
+ fun_l13_n482(x)
+ else
+ fun_l13_n400(x)
+ end
+end
+
+def fun_l12_n383(x)
+ if (x < 1)
+ fun_l13_n376(x)
+ else
+ fun_l13_n829(x)
+ end
+end
+
+def fun_l12_n384(x)
+ if (x < 1)
+ fun_l13_n81(x)
+ else
+ fun_l13_n895(x)
+ end
+end
+
+def fun_l12_n385(x)
+ if (x < 1)
+ fun_l13_n718(x)
+ else
+ fun_l13_n641(x)
+ end
+end
+
+def fun_l12_n386(x)
+ if (x < 1)
+ fun_l13_n825(x)
+ else
+ fun_l13_n761(x)
+ end
+end
+
+def fun_l12_n387(x)
+ if (x < 1)
+ fun_l13_n930(x)
+ else
+ fun_l13_n204(x)
+ end
+end
+
+def fun_l12_n388(x)
+ if (x < 1)
+ fun_l13_n81(x)
+ else
+ fun_l13_n319(x)
+ end
+end
+
+def fun_l12_n389(x)
+ if (x < 1)
+ fun_l13_n40(x)
+ else
+ fun_l13_n57(x)
+ end
+end
+
+def fun_l12_n390(x)
+ if (x < 1)
+ fun_l13_n206(x)
+ else
+ fun_l13_n219(x)
+ end
+end
+
+def fun_l12_n391(x)
+ if (x < 1)
+ fun_l13_n538(x)
+ else
+ fun_l13_n239(x)
+ end
+end
+
+def fun_l12_n392(x)
+ if (x < 1)
+ fun_l13_n326(x)
+ else
+ fun_l13_n613(x)
+ end
+end
+
+def fun_l12_n393(x)
+ if (x < 1)
+ fun_l13_n860(x)
+ else
+ fun_l13_n712(x)
+ end
+end
+
+def fun_l12_n394(x)
+ if (x < 1)
+ fun_l13_n829(x)
+ else
+ fun_l13_n153(x)
+ end
+end
+
+def fun_l12_n395(x)
+ if (x < 1)
+ fun_l13_n734(x)
+ else
+ fun_l13_n926(x)
+ end
+end
+
+def fun_l12_n396(x)
+ if (x < 1)
+ fun_l13_n188(x)
+ else
+ fun_l13_n821(x)
+ end
+end
+
+def fun_l12_n397(x)
+ if (x < 1)
+ fun_l13_n161(x)
+ else
+ fun_l13_n284(x)
+ end
+end
+
+def fun_l12_n398(x)
+ if (x < 1)
+ fun_l13_n402(x)
+ else
+ fun_l13_n481(x)
+ end
+end
+
+def fun_l12_n399(x)
+ if (x < 1)
+ fun_l13_n469(x)
+ else
+ fun_l13_n348(x)
+ end
+end
+
+def fun_l12_n400(x)
+ if (x < 1)
+ fun_l13_n567(x)
+ else
+ fun_l13_n702(x)
+ end
+end
+
+def fun_l12_n401(x)
+ if (x < 1)
+ fun_l13_n787(x)
+ else
+ fun_l13_n5(x)
+ end
+end
+
+def fun_l12_n402(x)
+ if (x < 1)
+ fun_l13_n525(x)
+ else
+ fun_l13_n983(x)
+ end
+end
+
+def fun_l12_n403(x)
+ if (x < 1)
+ fun_l13_n185(x)
+ else
+ fun_l13_n315(x)
+ end
+end
+
+def fun_l12_n404(x)
+ if (x < 1)
+ fun_l13_n746(x)
+ else
+ fun_l13_n892(x)
+ end
+end
+
+def fun_l12_n405(x)
+ if (x < 1)
+ fun_l13_n990(x)
+ else
+ fun_l13_n868(x)
+ end
+end
+
+def fun_l12_n406(x)
+ if (x < 1)
+ fun_l13_n399(x)
+ else
+ fun_l13_n298(x)
+ end
+end
+
+def fun_l12_n407(x)
+ if (x < 1)
+ fun_l13_n283(x)
+ else
+ fun_l13_n87(x)
+ end
+end
+
+def fun_l12_n408(x)
+ if (x < 1)
+ fun_l13_n597(x)
+ else
+ fun_l13_n355(x)
+ end
+end
+
+def fun_l12_n409(x)
+ if (x < 1)
+ fun_l13_n517(x)
+ else
+ fun_l13_n700(x)
+ end
+end
+
+def fun_l12_n410(x)
+ if (x < 1)
+ fun_l13_n796(x)
+ else
+ fun_l13_n282(x)
+ end
+end
+
+def fun_l12_n411(x)
+ if (x < 1)
+ fun_l13_n876(x)
+ else
+ fun_l13_n562(x)
+ end
+end
+
+def fun_l12_n412(x)
+ if (x < 1)
+ fun_l13_n344(x)
+ else
+ fun_l13_n182(x)
+ end
+end
+
+def fun_l12_n413(x)
+ if (x < 1)
+ fun_l13_n879(x)
+ else
+ fun_l13_n443(x)
+ end
+end
+
+def fun_l12_n414(x)
+ if (x < 1)
+ fun_l13_n335(x)
+ else
+ fun_l13_n451(x)
+ end
+end
+
+def fun_l12_n415(x)
+ if (x < 1)
+ fun_l13_n112(x)
+ else
+ fun_l13_n391(x)
+ end
+end
+
+def fun_l12_n416(x)
+ if (x < 1)
+ fun_l13_n217(x)
+ else
+ fun_l13_n221(x)
+ end
+end
+
+def fun_l12_n417(x)
+ if (x < 1)
+ fun_l13_n113(x)
+ else
+ fun_l13_n563(x)
+ end
+end
+
+def fun_l12_n418(x)
+ if (x < 1)
+ fun_l13_n486(x)
+ else
+ fun_l13_n374(x)
+ end
+end
+
+def fun_l12_n419(x)
+ if (x < 1)
+ fun_l13_n970(x)
+ else
+ fun_l13_n393(x)
+ end
+end
+
+def fun_l12_n420(x)
+ if (x < 1)
+ fun_l13_n273(x)
+ else
+ fun_l13_n64(x)
+ end
+end
+
+def fun_l12_n421(x)
+ if (x < 1)
+ fun_l13_n69(x)
+ else
+ fun_l13_n158(x)
+ end
+end
+
+def fun_l12_n422(x)
+ if (x < 1)
+ fun_l13_n308(x)
+ else
+ fun_l13_n609(x)
+ end
+end
+
+def fun_l12_n423(x)
+ if (x < 1)
+ fun_l13_n964(x)
+ else
+ fun_l13_n36(x)
+ end
+end
+
+def fun_l12_n424(x)
+ if (x < 1)
+ fun_l13_n783(x)
+ else
+ fun_l13_n513(x)
+ end
+end
+
+def fun_l12_n425(x)
+ if (x < 1)
+ fun_l13_n792(x)
+ else
+ fun_l13_n960(x)
+ end
+end
+
+def fun_l12_n426(x)
+ if (x < 1)
+ fun_l13_n160(x)
+ else
+ fun_l13_n911(x)
+ end
+end
+
+def fun_l12_n427(x)
+ if (x < 1)
+ fun_l13_n374(x)
+ else
+ fun_l13_n672(x)
+ end
+end
+
+def fun_l12_n428(x)
+ if (x < 1)
+ fun_l13_n694(x)
+ else
+ fun_l13_n166(x)
+ end
+end
+
+def fun_l12_n429(x)
+ if (x < 1)
+ fun_l13_n807(x)
+ else
+ fun_l13_n929(x)
+ end
+end
+
+def fun_l12_n430(x)
+ if (x < 1)
+ fun_l13_n997(x)
+ else
+ fun_l13_n938(x)
+ end
+end
+
+def fun_l12_n431(x)
+ if (x < 1)
+ fun_l13_n934(x)
+ else
+ fun_l13_n365(x)
+ end
+end
+
+def fun_l12_n432(x)
+ if (x < 1)
+ fun_l13_n546(x)
+ else
+ fun_l13_n272(x)
+ end
+end
+
+def fun_l12_n433(x)
+ if (x < 1)
+ fun_l13_n176(x)
+ else
+ fun_l13_n629(x)
+ end
+end
+
+def fun_l12_n434(x)
+ if (x < 1)
+ fun_l13_n536(x)
+ else
+ fun_l13_n165(x)
+ end
+end
+
+def fun_l12_n435(x)
+ if (x < 1)
+ fun_l13_n915(x)
+ else
+ fun_l13_n823(x)
+ end
+end
+
+def fun_l12_n436(x)
+ if (x < 1)
+ fun_l13_n580(x)
+ else
+ fun_l13_n214(x)
+ end
+end
+
+def fun_l12_n437(x)
+ if (x < 1)
+ fun_l13_n353(x)
+ else
+ fun_l13_n626(x)
+ end
+end
+
+def fun_l12_n438(x)
+ if (x < 1)
+ fun_l13_n888(x)
+ else
+ fun_l13_n874(x)
+ end
+end
+
+def fun_l12_n439(x)
+ if (x < 1)
+ fun_l13_n670(x)
+ else
+ fun_l13_n279(x)
+ end
+end
+
+def fun_l12_n440(x)
+ if (x < 1)
+ fun_l13_n818(x)
+ else
+ fun_l13_n927(x)
+ end
+end
+
+def fun_l12_n441(x)
+ if (x < 1)
+ fun_l13_n686(x)
+ else
+ fun_l13_n32(x)
+ end
+end
+
+def fun_l12_n442(x)
+ if (x < 1)
+ fun_l13_n882(x)
+ else
+ fun_l13_n932(x)
+ end
+end
+
+def fun_l12_n443(x)
+ if (x < 1)
+ fun_l13_n677(x)
+ else
+ fun_l13_n267(x)
+ end
+end
+
+def fun_l12_n444(x)
+ if (x < 1)
+ fun_l13_n632(x)
+ else
+ fun_l13_n808(x)
+ end
+end
+
+def fun_l12_n445(x)
+ if (x < 1)
+ fun_l13_n159(x)
+ else
+ fun_l13_n251(x)
+ end
+end
+
+def fun_l12_n446(x)
+ if (x < 1)
+ fun_l13_n939(x)
+ else
+ fun_l13_n231(x)
+ end
+end
+
+def fun_l12_n447(x)
+ if (x < 1)
+ fun_l13_n971(x)
+ else
+ fun_l13_n103(x)
+ end
+end
+
+def fun_l12_n448(x)
+ if (x < 1)
+ fun_l13_n556(x)
+ else
+ fun_l13_n356(x)
+ end
+end
+
+def fun_l12_n449(x)
+ if (x < 1)
+ fun_l13_n999(x)
+ else
+ fun_l13_n722(x)
+ end
+end
+
+def fun_l12_n450(x)
+ if (x < 1)
+ fun_l13_n387(x)
+ else
+ fun_l13_n15(x)
+ end
+end
+
+def fun_l12_n451(x)
+ if (x < 1)
+ fun_l13_n736(x)
+ else
+ fun_l13_n869(x)
+ end
+end
+
+def fun_l12_n452(x)
+ if (x < 1)
+ fun_l13_n984(x)
+ else
+ fun_l13_n396(x)
+ end
+end
+
+def fun_l12_n453(x)
+ if (x < 1)
+ fun_l13_n375(x)
+ else
+ fun_l13_n275(x)
+ end
+end
+
+def fun_l12_n454(x)
+ if (x < 1)
+ fun_l13_n100(x)
+ else
+ fun_l13_n956(x)
+ end
+end
+
+def fun_l12_n455(x)
+ if (x < 1)
+ fun_l13_n575(x)
+ else
+ fun_l13_n22(x)
+ end
+end
+
+def fun_l12_n456(x)
+ if (x < 1)
+ fun_l13_n515(x)
+ else
+ fun_l13_n716(x)
+ end
+end
+
+def fun_l12_n457(x)
+ if (x < 1)
+ fun_l13_n953(x)
+ else
+ fun_l13_n823(x)
+ end
+end
+
+def fun_l12_n458(x)
+ if (x < 1)
+ fun_l13_n343(x)
+ else
+ fun_l13_n843(x)
+ end
+end
+
+def fun_l12_n459(x)
+ if (x < 1)
+ fun_l13_n209(x)
+ else
+ fun_l13_n464(x)
+ end
+end
+
+def fun_l12_n460(x)
+ if (x < 1)
+ fun_l13_n281(x)
+ else
+ fun_l13_n165(x)
+ end
+end
+
+def fun_l12_n461(x)
+ if (x < 1)
+ fun_l13_n416(x)
+ else
+ fun_l13_n896(x)
+ end
+end
+
+def fun_l12_n462(x)
+ if (x < 1)
+ fun_l13_n677(x)
+ else
+ fun_l13_n767(x)
+ end
+end
+
+def fun_l12_n463(x)
+ if (x < 1)
+ fun_l13_n271(x)
+ else
+ fun_l13_n515(x)
+ end
+end
+
+def fun_l12_n464(x)
+ if (x < 1)
+ fun_l13_n589(x)
+ else
+ fun_l13_n447(x)
+ end
+end
+
+def fun_l12_n465(x)
+ if (x < 1)
+ fun_l13_n316(x)
+ else
+ fun_l13_n309(x)
+ end
+end
+
+def fun_l12_n466(x)
+ if (x < 1)
+ fun_l13_n48(x)
+ else
+ fun_l13_n999(x)
+ end
+end
+
+def fun_l12_n467(x)
+ if (x < 1)
+ fun_l13_n334(x)
+ else
+ fun_l13_n138(x)
+ end
+end
+
+def fun_l12_n468(x)
+ if (x < 1)
+ fun_l13_n483(x)
+ else
+ fun_l13_n353(x)
+ end
+end
+
+def fun_l12_n469(x)
+ if (x < 1)
+ fun_l13_n893(x)
+ else
+ fun_l13_n114(x)
+ end
+end
+
+def fun_l12_n470(x)
+ if (x < 1)
+ fun_l13_n945(x)
+ else
+ fun_l13_n438(x)
+ end
+end
+
+def fun_l12_n471(x)
+ if (x < 1)
+ fun_l13_n546(x)
+ else
+ fun_l13_n181(x)
+ end
+end
+
+def fun_l12_n472(x)
+ if (x < 1)
+ fun_l13_n443(x)
+ else
+ fun_l13_n35(x)
+ end
+end
+
+def fun_l12_n473(x)
+ if (x < 1)
+ fun_l13_n611(x)
+ else
+ fun_l13_n106(x)
+ end
+end
+
+def fun_l12_n474(x)
+ if (x < 1)
+ fun_l13_n408(x)
+ else
+ fun_l13_n162(x)
+ end
+end
+
+def fun_l12_n475(x)
+ if (x < 1)
+ fun_l13_n104(x)
+ else
+ fun_l13_n173(x)
+ end
+end
+
+def fun_l12_n476(x)
+ if (x < 1)
+ fun_l13_n922(x)
+ else
+ fun_l13_n593(x)
+ end
+end
+
+def fun_l12_n477(x)
+ if (x < 1)
+ fun_l13_n650(x)
+ else
+ fun_l13_n659(x)
+ end
+end
+
+def fun_l12_n478(x)
+ if (x < 1)
+ fun_l13_n746(x)
+ else
+ fun_l13_n484(x)
+ end
+end
+
+def fun_l12_n479(x)
+ if (x < 1)
+ fun_l13_n366(x)
+ else
+ fun_l13_n318(x)
+ end
+end
+
+def fun_l12_n480(x)
+ if (x < 1)
+ fun_l13_n995(x)
+ else
+ fun_l13_n108(x)
+ end
+end
+
+def fun_l12_n481(x)
+ if (x < 1)
+ fun_l13_n61(x)
+ else
+ fun_l13_n426(x)
+ end
+end
+
+def fun_l12_n482(x)
+ if (x < 1)
+ fun_l13_n578(x)
+ else
+ fun_l13_n955(x)
+ end
+end
+
+def fun_l12_n483(x)
+ if (x < 1)
+ fun_l13_n650(x)
+ else
+ fun_l13_n588(x)
+ end
+end
+
+def fun_l12_n484(x)
+ if (x < 1)
+ fun_l13_n842(x)
+ else
+ fun_l13_n198(x)
+ end
+end
+
+def fun_l12_n485(x)
+ if (x < 1)
+ fun_l13_n439(x)
+ else
+ fun_l13_n372(x)
+ end
+end
+
+def fun_l12_n486(x)
+ if (x < 1)
+ fun_l13_n94(x)
+ else
+ fun_l13_n531(x)
+ end
+end
+
+def fun_l12_n487(x)
+ if (x < 1)
+ fun_l13_n743(x)
+ else
+ fun_l13_n955(x)
+ end
+end
+
+def fun_l12_n488(x)
+ if (x < 1)
+ fun_l13_n648(x)
+ else
+ fun_l13_n849(x)
+ end
+end
+
+def fun_l12_n489(x)
+ if (x < 1)
+ fun_l13_n371(x)
+ else
+ fun_l13_n972(x)
+ end
+end
+
+def fun_l12_n490(x)
+ if (x < 1)
+ fun_l13_n128(x)
+ else
+ fun_l13_n617(x)
+ end
+end
+
+def fun_l12_n491(x)
+ if (x < 1)
+ fun_l13_n22(x)
+ else
+ fun_l13_n201(x)
+ end
+end
+
+def fun_l12_n492(x)
+ if (x < 1)
+ fun_l13_n209(x)
+ else
+ fun_l13_n679(x)
+ end
+end
+
+def fun_l12_n493(x)
+ if (x < 1)
+ fun_l13_n415(x)
+ else
+ fun_l13_n765(x)
+ end
+end
+
+def fun_l12_n494(x)
+ if (x < 1)
+ fun_l13_n498(x)
+ else
+ fun_l13_n719(x)
+ end
+end
+
+def fun_l12_n495(x)
+ if (x < 1)
+ fun_l13_n492(x)
+ else
+ fun_l13_n161(x)
+ end
+end
+
+def fun_l12_n496(x)
+ if (x < 1)
+ fun_l13_n162(x)
+ else
+ fun_l13_n54(x)
+ end
+end
+
+def fun_l12_n497(x)
+ if (x < 1)
+ fun_l13_n743(x)
+ else
+ fun_l13_n834(x)
+ end
+end
+
+def fun_l12_n498(x)
+ if (x < 1)
+ fun_l13_n376(x)
+ else
+ fun_l13_n676(x)
+ end
+end
+
+def fun_l12_n499(x)
+ if (x < 1)
+ fun_l13_n626(x)
+ else
+ fun_l13_n357(x)
+ end
+end
+
+def fun_l12_n500(x)
+ if (x < 1)
+ fun_l13_n874(x)
+ else
+ fun_l13_n53(x)
+ end
+end
+
+def fun_l12_n501(x)
+ if (x < 1)
+ fun_l13_n146(x)
+ else
+ fun_l13_n732(x)
+ end
+end
+
+def fun_l12_n502(x)
+ if (x < 1)
+ fun_l13_n908(x)
+ else
+ fun_l13_n933(x)
+ end
+end
+
+def fun_l12_n503(x)
+ if (x < 1)
+ fun_l13_n758(x)
+ else
+ fun_l13_n289(x)
+ end
+end
+
+def fun_l12_n504(x)
+ if (x < 1)
+ fun_l13_n913(x)
+ else
+ fun_l13_n770(x)
+ end
+end
+
+def fun_l12_n505(x)
+ if (x < 1)
+ fun_l13_n305(x)
+ else
+ fun_l13_n990(x)
+ end
+end
+
+def fun_l12_n506(x)
+ if (x < 1)
+ fun_l13_n79(x)
+ else
+ fun_l13_n199(x)
+ end
+end
+
+def fun_l12_n507(x)
+ if (x < 1)
+ fun_l13_n430(x)
+ else
+ fun_l13_n394(x)
+ end
+end
+
+def fun_l12_n508(x)
+ if (x < 1)
+ fun_l13_n835(x)
+ else
+ fun_l13_n64(x)
+ end
+end
+
+def fun_l12_n509(x)
+ if (x < 1)
+ fun_l13_n661(x)
+ else
+ fun_l13_n301(x)
+ end
+end
+
+def fun_l12_n510(x)
+ if (x < 1)
+ fun_l13_n672(x)
+ else
+ fun_l13_n498(x)
+ end
+end
+
+def fun_l12_n511(x)
+ if (x < 1)
+ fun_l13_n540(x)
+ else
+ fun_l13_n57(x)
+ end
+end
+
+def fun_l12_n512(x)
+ if (x < 1)
+ fun_l13_n634(x)
+ else
+ fun_l13_n790(x)
+ end
+end
+
+def fun_l12_n513(x)
+ if (x < 1)
+ fun_l13_n998(x)
+ else
+ fun_l13_n3(x)
+ end
+end
+
+def fun_l12_n514(x)
+ if (x < 1)
+ fun_l13_n482(x)
+ else
+ fun_l13_n116(x)
+ end
+end
+
+def fun_l12_n515(x)
+ if (x < 1)
+ fun_l13_n967(x)
+ else
+ fun_l13_n17(x)
+ end
+end
+
+def fun_l12_n516(x)
+ if (x < 1)
+ fun_l13_n614(x)
+ else
+ fun_l13_n260(x)
+ end
+end
+
+def fun_l12_n517(x)
+ if (x < 1)
+ fun_l13_n273(x)
+ else
+ fun_l13_n982(x)
+ end
+end
+
+def fun_l12_n518(x)
+ if (x < 1)
+ fun_l13_n786(x)
+ else
+ fun_l13_n186(x)
+ end
+end
+
+def fun_l12_n519(x)
+ if (x < 1)
+ fun_l13_n990(x)
+ else
+ fun_l13_n223(x)
+ end
+end
+
+def fun_l12_n520(x)
+ if (x < 1)
+ fun_l13_n406(x)
+ else
+ fun_l13_n374(x)
+ end
+end
+
+def fun_l12_n521(x)
+ if (x < 1)
+ fun_l13_n548(x)
+ else
+ fun_l13_n160(x)
+ end
+end
+
+def fun_l12_n522(x)
+ if (x < 1)
+ fun_l13_n249(x)
+ else
+ fun_l13_n295(x)
+ end
+end
+
+def fun_l12_n523(x)
+ if (x < 1)
+ fun_l13_n434(x)
+ else
+ fun_l13_n73(x)
+ end
+end
+
+def fun_l12_n524(x)
+ if (x < 1)
+ fun_l13_n550(x)
+ else
+ fun_l13_n472(x)
+ end
+end
+
+def fun_l12_n525(x)
+ if (x < 1)
+ fun_l13_n720(x)
+ else
+ fun_l13_n979(x)
+ end
+end
+
+def fun_l12_n526(x)
+ if (x < 1)
+ fun_l13_n806(x)
+ else
+ fun_l13_n156(x)
+ end
+end
+
+def fun_l12_n527(x)
+ if (x < 1)
+ fun_l13_n689(x)
+ else
+ fun_l13_n781(x)
+ end
+end
+
+def fun_l12_n528(x)
+ if (x < 1)
+ fun_l13_n130(x)
+ else
+ fun_l13_n909(x)
+ end
+end
+
+def fun_l12_n529(x)
+ if (x < 1)
+ fun_l13_n762(x)
+ else
+ fun_l13_n301(x)
+ end
+end
+
+def fun_l12_n530(x)
+ if (x < 1)
+ fun_l13_n580(x)
+ else
+ fun_l13_n269(x)
+ end
+end
+
+def fun_l12_n531(x)
+ if (x < 1)
+ fun_l13_n427(x)
+ else
+ fun_l13_n279(x)
+ end
+end
+
+def fun_l12_n532(x)
+ if (x < 1)
+ fun_l13_n408(x)
+ else
+ fun_l13_n523(x)
+ end
+end
+
+def fun_l12_n533(x)
+ if (x < 1)
+ fun_l13_n358(x)
+ else
+ fun_l13_n386(x)
+ end
+end
+
+def fun_l12_n534(x)
+ if (x < 1)
+ fun_l13_n401(x)
+ else
+ fun_l13_n148(x)
+ end
+end
+
+def fun_l12_n535(x)
+ if (x < 1)
+ fun_l13_n588(x)
+ else
+ fun_l13_n607(x)
+ end
+end
+
+def fun_l12_n536(x)
+ if (x < 1)
+ fun_l13_n445(x)
+ else
+ fun_l13_n681(x)
+ end
+end
+
+def fun_l12_n537(x)
+ if (x < 1)
+ fun_l13_n16(x)
+ else
+ fun_l13_n931(x)
+ end
+end
+
+def fun_l12_n538(x)
+ if (x < 1)
+ fun_l13_n567(x)
+ else
+ fun_l13_n9(x)
+ end
+end
+
+def fun_l12_n539(x)
+ if (x < 1)
+ fun_l13_n584(x)
+ else
+ fun_l13_n46(x)
+ end
+end
+
+def fun_l12_n540(x)
+ if (x < 1)
+ fun_l13_n147(x)
+ else
+ fun_l13_n498(x)
+ end
+end
+
+def fun_l12_n541(x)
+ if (x < 1)
+ fun_l13_n727(x)
+ else
+ fun_l13_n152(x)
+ end
+end
+
+def fun_l12_n542(x)
+ if (x < 1)
+ fun_l13_n797(x)
+ else
+ fun_l13_n789(x)
+ end
+end
+
+def fun_l12_n543(x)
+ if (x < 1)
+ fun_l13_n711(x)
+ else
+ fun_l13_n939(x)
+ end
+end
+
+def fun_l12_n544(x)
+ if (x < 1)
+ fun_l13_n276(x)
+ else
+ fun_l13_n325(x)
+ end
+end
+
+def fun_l12_n545(x)
+ if (x < 1)
+ fun_l13_n800(x)
+ else
+ fun_l13_n974(x)
+ end
+end
+
+def fun_l12_n546(x)
+ if (x < 1)
+ fun_l13_n654(x)
+ else
+ fun_l13_n331(x)
+ end
+end
+
+def fun_l12_n547(x)
+ if (x < 1)
+ fun_l13_n179(x)
+ else
+ fun_l13_n395(x)
+ end
+end
+
+def fun_l12_n548(x)
+ if (x < 1)
+ fun_l13_n348(x)
+ else
+ fun_l13_n210(x)
+ end
+end
+
+def fun_l12_n549(x)
+ if (x < 1)
+ fun_l13_n669(x)
+ else
+ fun_l13_n459(x)
+ end
+end
+
+def fun_l12_n550(x)
+ if (x < 1)
+ fun_l13_n316(x)
+ else
+ fun_l13_n846(x)
+ end
+end
+
+def fun_l12_n551(x)
+ if (x < 1)
+ fun_l13_n262(x)
+ else
+ fun_l13_n430(x)
+ end
+end
+
+def fun_l12_n552(x)
+ if (x < 1)
+ fun_l13_n224(x)
+ else
+ fun_l13_n866(x)
+ end
+end
+
+def fun_l12_n553(x)
+ if (x < 1)
+ fun_l13_n551(x)
+ else
+ fun_l13_n30(x)
+ end
+end
+
+def fun_l12_n554(x)
+ if (x < 1)
+ fun_l13_n864(x)
+ else
+ fun_l13_n931(x)
+ end
+end
+
+def fun_l12_n555(x)
+ if (x < 1)
+ fun_l13_n427(x)
+ else
+ fun_l13_n138(x)
+ end
+end
+
+def fun_l12_n556(x)
+ if (x < 1)
+ fun_l13_n603(x)
+ else
+ fun_l13_n167(x)
+ end
+end
+
+def fun_l12_n557(x)
+ if (x < 1)
+ fun_l13_n858(x)
+ else
+ fun_l13_n123(x)
+ end
+end
+
+def fun_l12_n558(x)
+ if (x < 1)
+ fun_l13_n729(x)
+ else
+ fun_l13_n769(x)
+ end
+end
+
+def fun_l12_n559(x)
+ if (x < 1)
+ fun_l13_n529(x)
+ else
+ fun_l13_n114(x)
+ end
+end
+
+def fun_l12_n560(x)
+ if (x < 1)
+ fun_l13_n727(x)
+ else
+ fun_l13_n673(x)
+ end
+end
+
+def fun_l12_n561(x)
+ if (x < 1)
+ fun_l13_n742(x)
+ else
+ fun_l13_n981(x)
+ end
+end
+
+def fun_l12_n562(x)
+ if (x < 1)
+ fun_l13_n29(x)
+ else
+ fun_l13_n493(x)
+ end
+end
+
+def fun_l12_n563(x)
+ if (x < 1)
+ fun_l13_n207(x)
+ else
+ fun_l13_n361(x)
+ end
+end
+
+def fun_l12_n564(x)
+ if (x < 1)
+ fun_l13_n370(x)
+ else
+ fun_l13_n185(x)
+ end
+end
+
+def fun_l12_n565(x)
+ if (x < 1)
+ fun_l13_n755(x)
+ else
+ fun_l13_n28(x)
+ end
+end
+
+def fun_l12_n566(x)
+ if (x < 1)
+ fun_l13_n332(x)
+ else
+ fun_l13_n718(x)
+ end
+end
+
+def fun_l12_n567(x)
+ if (x < 1)
+ fun_l13_n329(x)
+ else
+ fun_l13_n623(x)
+ end
+end
+
+def fun_l12_n568(x)
+ if (x < 1)
+ fun_l13_n592(x)
+ else
+ fun_l13_n870(x)
+ end
+end
+
+def fun_l12_n569(x)
+ if (x < 1)
+ fun_l13_n539(x)
+ else
+ fun_l13_n68(x)
+ end
+end
+
+def fun_l12_n570(x)
+ if (x < 1)
+ fun_l13_n794(x)
+ else
+ fun_l13_n617(x)
+ end
+end
+
+def fun_l12_n571(x)
+ if (x < 1)
+ fun_l13_n801(x)
+ else
+ fun_l13_n610(x)
+ end
+end
+
+def fun_l12_n572(x)
+ if (x < 1)
+ fun_l13_n781(x)
+ else
+ fun_l13_n879(x)
+ end
+end
+
+def fun_l12_n573(x)
+ if (x < 1)
+ fun_l13_n519(x)
+ else
+ fun_l13_n748(x)
+ end
+end
+
+def fun_l12_n574(x)
+ if (x < 1)
+ fun_l13_n416(x)
+ else
+ fun_l13_n908(x)
+ end
+end
+
+def fun_l12_n575(x)
+ if (x < 1)
+ fun_l13_n288(x)
+ else
+ fun_l13_n925(x)
+ end
+end
+
+def fun_l12_n576(x)
+ if (x < 1)
+ fun_l13_n398(x)
+ else
+ fun_l13_n185(x)
+ end
+end
+
+def fun_l12_n577(x)
+ if (x < 1)
+ fun_l13_n742(x)
+ else
+ fun_l13_n768(x)
+ end
+end
+
+def fun_l12_n578(x)
+ if (x < 1)
+ fun_l13_n472(x)
+ else
+ fun_l13_n474(x)
+ end
+end
+
+def fun_l12_n579(x)
+ if (x < 1)
+ fun_l13_n229(x)
+ else
+ fun_l13_n479(x)
+ end
+end
+
+def fun_l12_n580(x)
+ if (x < 1)
+ fun_l13_n483(x)
+ else
+ fun_l13_n60(x)
+ end
+end
+
+def fun_l12_n581(x)
+ if (x < 1)
+ fun_l13_n971(x)
+ else
+ fun_l13_n958(x)
+ end
+end
+
+def fun_l12_n582(x)
+ if (x < 1)
+ fun_l13_n612(x)
+ else
+ fun_l13_n491(x)
+ end
+end
+
+def fun_l12_n583(x)
+ if (x < 1)
+ fun_l13_n320(x)
+ else
+ fun_l13_n356(x)
+ end
+end
+
+def fun_l12_n584(x)
+ if (x < 1)
+ fun_l13_n521(x)
+ else
+ fun_l13_n126(x)
+ end
+end
+
+def fun_l12_n585(x)
+ if (x < 1)
+ fun_l13_n778(x)
+ else
+ fun_l13_n503(x)
+ end
+end
+
+def fun_l12_n586(x)
+ if (x < 1)
+ fun_l13_n715(x)
+ else
+ fun_l13_n849(x)
+ end
+end
+
+def fun_l12_n587(x)
+ if (x < 1)
+ fun_l13_n192(x)
+ else
+ fun_l13_n278(x)
+ end
+end
+
+def fun_l12_n588(x)
+ if (x < 1)
+ fun_l13_n882(x)
+ else
+ fun_l13_n992(x)
+ end
+end
+
+def fun_l12_n589(x)
+ if (x < 1)
+ fun_l13_n693(x)
+ else
+ fun_l13_n734(x)
+ end
+end
+
+def fun_l12_n590(x)
+ if (x < 1)
+ fun_l13_n207(x)
+ else
+ fun_l13_n674(x)
+ end
+end
+
+def fun_l12_n591(x)
+ if (x < 1)
+ fun_l13_n409(x)
+ else
+ fun_l13_n937(x)
+ end
+end
+
+def fun_l12_n592(x)
+ if (x < 1)
+ fun_l13_n424(x)
+ else
+ fun_l13_n709(x)
+ end
+end
+
+def fun_l12_n593(x)
+ if (x < 1)
+ fun_l13_n530(x)
+ else
+ fun_l13_n50(x)
+ end
+end
+
+def fun_l12_n594(x)
+ if (x < 1)
+ fun_l13_n451(x)
+ else
+ fun_l13_n513(x)
+ end
+end
+
+def fun_l12_n595(x)
+ if (x < 1)
+ fun_l13_n522(x)
+ else
+ fun_l13_n414(x)
+ end
+end
+
+def fun_l12_n596(x)
+ if (x < 1)
+ fun_l13_n352(x)
+ else
+ fun_l13_n323(x)
+ end
+end
+
+def fun_l12_n597(x)
+ if (x < 1)
+ fun_l13_n342(x)
+ else
+ fun_l13_n362(x)
+ end
+end
+
+def fun_l12_n598(x)
+ if (x < 1)
+ fun_l13_n870(x)
+ else
+ fun_l13_n366(x)
+ end
+end
+
+def fun_l12_n599(x)
+ if (x < 1)
+ fun_l13_n562(x)
+ else
+ fun_l13_n455(x)
+ end
+end
+
+def fun_l12_n600(x)
+ if (x < 1)
+ fun_l13_n554(x)
+ else
+ fun_l13_n929(x)
+ end
+end
+
+def fun_l12_n601(x)
+ if (x < 1)
+ fun_l13_n498(x)
+ else
+ fun_l13_n287(x)
+ end
+end
+
+def fun_l12_n602(x)
+ if (x < 1)
+ fun_l13_n9(x)
+ else
+ fun_l13_n258(x)
+ end
+end
+
+def fun_l12_n603(x)
+ if (x < 1)
+ fun_l13_n976(x)
+ else
+ fun_l13_n604(x)
+ end
+end
+
+def fun_l12_n604(x)
+ if (x < 1)
+ fun_l13_n411(x)
+ else
+ fun_l13_n238(x)
+ end
+end
+
+def fun_l12_n605(x)
+ if (x < 1)
+ fun_l13_n80(x)
+ else
+ fun_l13_n665(x)
+ end
+end
+
+def fun_l12_n606(x)
+ if (x < 1)
+ fun_l13_n453(x)
+ else
+ fun_l13_n642(x)
+ end
+end
+
+def fun_l12_n607(x)
+ if (x < 1)
+ fun_l13_n247(x)
+ else
+ fun_l13_n651(x)
+ end
+end
+
+def fun_l12_n608(x)
+ if (x < 1)
+ fun_l13_n586(x)
+ else
+ fun_l13_n372(x)
+ end
+end
+
+def fun_l12_n609(x)
+ if (x < 1)
+ fun_l13_n623(x)
+ else
+ fun_l13_n380(x)
+ end
+end
+
+def fun_l12_n610(x)
+ if (x < 1)
+ fun_l13_n399(x)
+ else
+ fun_l13_n43(x)
+ end
+end
+
+def fun_l12_n611(x)
+ if (x < 1)
+ fun_l13_n191(x)
+ else
+ fun_l13_n211(x)
+ end
+end
+
+def fun_l12_n612(x)
+ if (x < 1)
+ fun_l13_n719(x)
+ else
+ fun_l13_n663(x)
+ end
+end
+
+def fun_l12_n613(x)
+ if (x < 1)
+ fun_l13_n849(x)
+ else
+ fun_l13_n39(x)
+ end
+end
+
+def fun_l12_n614(x)
+ if (x < 1)
+ fun_l13_n822(x)
+ else
+ fun_l13_n927(x)
+ end
+end
+
+def fun_l12_n615(x)
+ if (x < 1)
+ fun_l13_n358(x)
+ else
+ fun_l13_n364(x)
+ end
+end
+
+def fun_l12_n616(x)
+ if (x < 1)
+ fun_l13_n685(x)
+ else
+ fun_l13_n897(x)
+ end
+end
+
+def fun_l12_n617(x)
+ if (x < 1)
+ fun_l13_n243(x)
+ else
+ fun_l13_n138(x)
+ end
+end
+
+def fun_l12_n618(x)
+ if (x < 1)
+ fun_l13_n737(x)
+ else
+ fun_l13_n187(x)
+ end
+end
+
+def fun_l12_n619(x)
+ if (x < 1)
+ fun_l13_n56(x)
+ else
+ fun_l13_n684(x)
+ end
+end
+
+def fun_l12_n620(x)
+ if (x < 1)
+ fun_l13_n865(x)
+ else
+ fun_l13_n886(x)
+ end
+end
+
+def fun_l12_n621(x)
+ if (x < 1)
+ fun_l13_n749(x)
+ else
+ fun_l13_n554(x)
+ end
+end
+
+def fun_l12_n622(x)
+ if (x < 1)
+ fun_l13_n162(x)
+ else
+ fun_l13_n600(x)
+ end
+end
+
+def fun_l12_n623(x)
+ if (x < 1)
+ fun_l13_n763(x)
+ else
+ fun_l13_n227(x)
+ end
+end
+
+def fun_l12_n624(x)
+ if (x < 1)
+ fun_l13_n767(x)
+ else
+ fun_l13_n431(x)
+ end
+end
+
+def fun_l12_n625(x)
+ if (x < 1)
+ fun_l13_n347(x)
+ else
+ fun_l13_n214(x)
+ end
+end
+
+def fun_l12_n626(x)
+ if (x < 1)
+ fun_l13_n365(x)
+ else
+ fun_l13_n747(x)
+ end
+end
+
+def fun_l12_n627(x)
+ if (x < 1)
+ fun_l13_n783(x)
+ else
+ fun_l13_n597(x)
+ end
+end
+
+def fun_l12_n628(x)
+ if (x < 1)
+ fun_l13_n249(x)
+ else
+ fun_l13_n906(x)
+ end
+end
+
+def fun_l12_n629(x)
+ if (x < 1)
+ fun_l13_n803(x)
+ else
+ fun_l13_n855(x)
+ end
+end
+
+def fun_l12_n630(x)
+ if (x < 1)
+ fun_l13_n981(x)
+ else
+ fun_l13_n38(x)
+ end
+end
+
+def fun_l12_n631(x)
+ if (x < 1)
+ fun_l13_n437(x)
+ else
+ fun_l13_n158(x)
+ end
+end
+
+def fun_l12_n632(x)
+ if (x < 1)
+ fun_l13_n611(x)
+ else
+ fun_l13_n142(x)
+ end
+end
+
+def fun_l12_n633(x)
+ if (x < 1)
+ fun_l13_n880(x)
+ else
+ fun_l13_n172(x)
+ end
+end
+
+def fun_l12_n634(x)
+ if (x < 1)
+ fun_l13_n135(x)
+ else
+ fun_l13_n529(x)
+ end
+end
+
+def fun_l12_n635(x)
+ if (x < 1)
+ fun_l13_n694(x)
+ else
+ fun_l13_n949(x)
+ end
+end
+
+def fun_l12_n636(x)
+ if (x < 1)
+ fun_l13_n153(x)
+ else
+ fun_l13_n326(x)
+ end
+end
+
+def fun_l12_n637(x)
+ if (x < 1)
+ fun_l13_n318(x)
+ else
+ fun_l13_n372(x)
+ end
+end
+
+def fun_l12_n638(x)
+ if (x < 1)
+ fun_l13_n467(x)
+ else
+ fun_l13_n450(x)
+ end
+end
+
+def fun_l12_n639(x)
+ if (x < 1)
+ fun_l13_n397(x)
+ else
+ fun_l13_n138(x)
+ end
+end
+
+def fun_l12_n640(x)
+ if (x < 1)
+ fun_l13_n408(x)
+ else
+ fun_l13_n335(x)
+ end
+end
+
+def fun_l12_n641(x)
+ if (x < 1)
+ fun_l13_n342(x)
+ else
+ fun_l13_n856(x)
+ end
+end
+
+def fun_l12_n642(x)
+ if (x < 1)
+ fun_l13_n163(x)
+ else
+ fun_l13_n979(x)
+ end
+end
+
+def fun_l12_n643(x)
+ if (x < 1)
+ fun_l13_n509(x)
+ else
+ fun_l13_n153(x)
+ end
+end
+
+def fun_l12_n644(x)
+ if (x < 1)
+ fun_l13_n3(x)
+ else
+ fun_l13_n55(x)
+ end
+end
+
+def fun_l12_n645(x)
+ if (x < 1)
+ fun_l13_n730(x)
+ else
+ fun_l13_n52(x)
+ end
+end
+
+def fun_l12_n646(x)
+ if (x < 1)
+ fun_l13_n553(x)
+ else
+ fun_l13_n885(x)
+ end
+end
+
+def fun_l12_n647(x)
+ if (x < 1)
+ fun_l13_n866(x)
+ else
+ fun_l13_n684(x)
+ end
+end
+
+def fun_l12_n648(x)
+ if (x < 1)
+ fun_l13_n989(x)
+ else
+ fun_l13_n511(x)
+ end
+end
+
+def fun_l12_n649(x)
+ if (x < 1)
+ fun_l13_n527(x)
+ else
+ fun_l13_n166(x)
+ end
+end
+
+def fun_l12_n650(x)
+ if (x < 1)
+ fun_l13_n507(x)
+ else
+ fun_l13_n527(x)
+ end
+end
+
+def fun_l12_n651(x)
+ if (x < 1)
+ fun_l13_n174(x)
+ else
+ fun_l13_n881(x)
+ end
+end
+
+def fun_l12_n652(x)
+ if (x < 1)
+ fun_l13_n302(x)
+ else
+ fun_l13_n3(x)
+ end
+end
+
+def fun_l12_n653(x)
+ if (x < 1)
+ fun_l13_n971(x)
+ else
+ fun_l13_n601(x)
+ end
+end
+
+def fun_l12_n654(x)
+ if (x < 1)
+ fun_l13_n440(x)
+ else
+ fun_l13_n286(x)
+ end
+end
+
+def fun_l12_n655(x)
+ if (x < 1)
+ fun_l13_n208(x)
+ else
+ fun_l13_n275(x)
+ end
+end
+
+def fun_l12_n656(x)
+ if (x < 1)
+ fun_l13_n954(x)
+ else
+ fun_l13_n991(x)
+ end
+end
+
+def fun_l12_n657(x)
+ if (x < 1)
+ fun_l13_n212(x)
+ else
+ fun_l13_n640(x)
+ end
+end
+
+def fun_l12_n658(x)
+ if (x < 1)
+ fun_l13_n733(x)
+ else
+ fun_l13_n459(x)
+ end
+end
+
+def fun_l12_n659(x)
+ if (x < 1)
+ fun_l13_n767(x)
+ else
+ fun_l13_n581(x)
+ end
+end
+
+def fun_l12_n660(x)
+ if (x < 1)
+ fun_l13_n421(x)
+ else
+ fun_l13_n19(x)
+ end
+end
+
+def fun_l12_n661(x)
+ if (x < 1)
+ fun_l13_n500(x)
+ else
+ fun_l13_n464(x)
+ end
+end
+
+def fun_l12_n662(x)
+ if (x < 1)
+ fun_l13_n26(x)
+ else
+ fun_l13_n300(x)
+ end
+end
+
+def fun_l12_n663(x)
+ if (x < 1)
+ fun_l13_n160(x)
+ else
+ fun_l13_n112(x)
+ end
+end
+
+def fun_l12_n664(x)
+ if (x < 1)
+ fun_l13_n181(x)
+ else
+ fun_l13_n511(x)
+ end
+end
+
+def fun_l12_n665(x)
+ if (x < 1)
+ fun_l13_n573(x)
+ else
+ fun_l13_n283(x)
+ end
+end
+
+def fun_l12_n666(x)
+ if (x < 1)
+ fun_l13_n562(x)
+ else
+ fun_l13_n992(x)
+ end
+end
+
+def fun_l12_n667(x)
+ if (x < 1)
+ fun_l13_n426(x)
+ else
+ fun_l13_n921(x)
+ end
+end
+
+def fun_l12_n668(x)
+ if (x < 1)
+ fun_l13_n319(x)
+ else
+ fun_l13_n226(x)
+ end
+end
+
+def fun_l12_n669(x)
+ if (x < 1)
+ fun_l13_n832(x)
+ else
+ fun_l13_n690(x)
+ end
+end
+
+def fun_l12_n670(x)
+ if (x < 1)
+ fun_l13_n921(x)
+ else
+ fun_l13_n964(x)
+ end
+end
+
+def fun_l12_n671(x)
+ if (x < 1)
+ fun_l13_n823(x)
+ else
+ fun_l13_n903(x)
+ end
+end
+
+def fun_l12_n672(x)
+ if (x < 1)
+ fun_l13_n469(x)
+ else
+ fun_l13_n914(x)
+ end
+end
+
+def fun_l12_n673(x)
+ if (x < 1)
+ fun_l13_n478(x)
+ else
+ fun_l13_n481(x)
+ end
+end
+
+def fun_l12_n674(x)
+ if (x < 1)
+ fun_l13_n762(x)
+ else
+ fun_l13_n464(x)
+ end
+end
+
+def fun_l12_n675(x)
+ if (x < 1)
+ fun_l13_n930(x)
+ else
+ fun_l13_n587(x)
+ end
+end
+
+def fun_l12_n676(x)
+ if (x < 1)
+ fun_l13_n351(x)
+ else
+ fun_l13_n239(x)
+ end
+end
+
+def fun_l12_n677(x)
+ if (x < 1)
+ fun_l13_n989(x)
+ else
+ fun_l13_n424(x)
+ end
+end
+
+def fun_l12_n678(x)
+ if (x < 1)
+ fun_l13_n505(x)
+ else
+ fun_l13_n186(x)
+ end
+end
+
+def fun_l12_n679(x)
+ if (x < 1)
+ fun_l13_n665(x)
+ else
+ fun_l13_n536(x)
+ end
+end
+
+def fun_l12_n680(x)
+ if (x < 1)
+ fun_l13_n734(x)
+ else
+ fun_l13_n36(x)
+ end
+end
+
+def fun_l12_n681(x)
+ if (x < 1)
+ fun_l13_n380(x)
+ else
+ fun_l13_n340(x)
+ end
+end
+
+def fun_l12_n682(x)
+ if (x < 1)
+ fun_l13_n293(x)
+ else
+ fun_l13_n205(x)
+ end
+end
+
+def fun_l12_n683(x)
+ if (x < 1)
+ fun_l13_n412(x)
+ else
+ fun_l13_n13(x)
+ end
+end
+
+def fun_l12_n684(x)
+ if (x < 1)
+ fun_l13_n187(x)
+ else
+ fun_l13_n186(x)
+ end
+end
+
+def fun_l12_n685(x)
+ if (x < 1)
+ fun_l13_n299(x)
+ else
+ fun_l13_n875(x)
+ end
+end
+
+def fun_l12_n686(x)
+ if (x < 1)
+ fun_l13_n943(x)
+ else
+ fun_l13_n96(x)
+ end
+end
+
+def fun_l12_n687(x)
+ if (x < 1)
+ fun_l13_n736(x)
+ else
+ fun_l13_n377(x)
+ end
+end
+
+def fun_l12_n688(x)
+ if (x < 1)
+ fun_l13_n559(x)
+ else
+ fun_l13_n410(x)
+ end
+end
+
+def fun_l12_n689(x)
+ if (x < 1)
+ fun_l13_n538(x)
+ else
+ fun_l13_n521(x)
+ end
+end
+
+def fun_l12_n690(x)
+ if (x < 1)
+ fun_l13_n568(x)
+ else
+ fun_l13_n838(x)
+ end
+end
+
+def fun_l12_n691(x)
+ if (x < 1)
+ fun_l13_n556(x)
+ else
+ fun_l13_n42(x)
+ end
+end
+
+def fun_l12_n692(x)
+ if (x < 1)
+ fun_l13_n137(x)
+ else
+ fun_l13_n939(x)
+ end
+end
+
+def fun_l12_n693(x)
+ if (x < 1)
+ fun_l13_n974(x)
+ else
+ fun_l13_n308(x)
+ end
+end
+
+def fun_l12_n694(x)
+ if (x < 1)
+ fun_l13_n459(x)
+ else
+ fun_l13_n323(x)
+ end
+end
+
+def fun_l12_n695(x)
+ if (x < 1)
+ fun_l13_n829(x)
+ else
+ fun_l13_n909(x)
+ end
+end
+
+def fun_l12_n696(x)
+ if (x < 1)
+ fun_l13_n710(x)
+ else
+ fun_l13_n648(x)
+ end
+end
+
+def fun_l12_n697(x)
+ if (x < 1)
+ fun_l13_n27(x)
+ else
+ fun_l13_n500(x)
+ end
+end
+
+def fun_l12_n698(x)
+ if (x < 1)
+ fun_l13_n553(x)
+ else
+ fun_l13_n865(x)
+ end
+end
+
+def fun_l12_n699(x)
+ if (x < 1)
+ fun_l13_n126(x)
+ else
+ fun_l13_n789(x)
+ end
+end
+
+def fun_l12_n700(x)
+ if (x < 1)
+ fun_l13_n408(x)
+ else
+ fun_l13_n391(x)
+ end
+end
+
+def fun_l12_n701(x)
+ if (x < 1)
+ fun_l13_n469(x)
+ else
+ fun_l13_n48(x)
+ end
+end
+
+def fun_l12_n702(x)
+ if (x < 1)
+ fun_l13_n646(x)
+ else
+ fun_l13_n117(x)
+ end
+end
+
+def fun_l12_n703(x)
+ if (x < 1)
+ fun_l13_n461(x)
+ else
+ fun_l13_n114(x)
+ end
+end
+
+def fun_l12_n704(x)
+ if (x < 1)
+ fun_l13_n603(x)
+ else
+ fun_l13_n27(x)
+ end
+end
+
+def fun_l12_n705(x)
+ if (x < 1)
+ fun_l13_n842(x)
+ else
+ fun_l13_n792(x)
+ end
+end
+
+def fun_l12_n706(x)
+ if (x < 1)
+ fun_l13_n194(x)
+ else
+ fun_l13_n405(x)
+ end
+end
+
+def fun_l12_n707(x)
+ if (x < 1)
+ fun_l13_n975(x)
+ else
+ fun_l13_n933(x)
+ end
+end
+
+def fun_l12_n708(x)
+ if (x < 1)
+ fun_l13_n919(x)
+ else
+ fun_l13_n558(x)
+ end
+end
+
+def fun_l12_n709(x)
+ if (x < 1)
+ fun_l13_n293(x)
+ else
+ fun_l13_n868(x)
+ end
+end
+
+def fun_l12_n710(x)
+ if (x < 1)
+ fun_l13_n577(x)
+ else
+ fun_l13_n816(x)
+ end
+end
+
+def fun_l12_n711(x)
+ if (x < 1)
+ fun_l13_n625(x)
+ else
+ fun_l13_n319(x)
+ end
+end
+
+def fun_l12_n712(x)
+ if (x < 1)
+ fun_l13_n100(x)
+ else
+ fun_l13_n421(x)
+ end
+end
+
+def fun_l12_n713(x)
+ if (x < 1)
+ fun_l13_n120(x)
+ else
+ fun_l13_n727(x)
+ end
+end
+
+def fun_l12_n714(x)
+ if (x < 1)
+ fun_l13_n346(x)
+ else
+ fun_l13_n399(x)
+ end
+end
+
+def fun_l12_n715(x)
+ if (x < 1)
+ fun_l13_n64(x)
+ else
+ fun_l13_n895(x)
+ end
+end
+
+def fun_l12_n716(x)
+ if (x < 1)
+ fun_l13_n810(x)
+ else
+ fun_l13_n958(x)
+ end
+end
+
+def fun_l12_n717(x)
+ if (x < 1)
+ fun_l13_n24(x)
+ else
+ fun_l13_n851(x)
+ end
+end
+
+def fun_l12_n718(x)
+ if (x < 1)
+ fun_l13_n716(x)
+ else
+ fun_l13_n859(x)
+ end
+end
+
+def fun_l12_n719(x)
+ if (x < 1)
+ fun_l13_n556(x)
+ else
+ fun_l13_n999(x)
+ end
+end
+
+def fun_l12_n720(x)
+ if (x < 1)
+ fun_l13_n388(x)
+ else
+ fun_l13_n127(x)
+ end
+end
+
+def fun_l12_n721(x)
+ if (x < 1)
+ fun_l13_n447(x)
+ else
+ fun_l13_n880(x)
+ end
+end
+
+def fun_l12_n722(x)
+ if (x < 1)
+ fun_l13_n415(x)
+ else
+ fun_l13_n636(x)
+ end
+end
+
+def fun_l12_n723(x)
+ if (x < 1)
+ fun_l13_n315(x)
+ else
+ fun_l13_n766(x)
+ end
+end
+
+def fun_l12_n724(x)
+ if (x < 1)
+ fun_l13_n600(x)
+ else
+ fun_l13_n223(x)
+ end
+end
+
+def fun_l12_n725(x)
+ if (x < 1)
+ fun_l13_n773(x)
+ else
+ fun_l13_n523(x)
+ end
+end
+
+def fun_l12_n726(x)
+ if (x < 1)
+ fun_l13_n662(x)
+ else
+ fun_l13_n775(x)
+ end
+end
+
+def fun_l12_n727(x)
+ if (x < 1)
+ fun_l13_n553(x)
+ else
+ fun_l13_n247(x)
+ end
+end
+
+def fun_l12_n728(x)
+ if (x < 1)
+ fun_l13_n180(x)
+ else
+ fun_l13_n815(x)
+ end
+end
+
+def fun_l12_n729(x)
+ if (x < 1)
+ fun_l13_n786(x)
+ else
+ fun_l13_n729(x)
+ end
+end
+
+def fun_l12_n730(x)
+ if (x < 1)
+ fun_l13_n1(x)
+ else
+ fun_l13_n791(x)
+ end
+end
+
+def fun_l12_n731(x)
+ if (x < 1)
+ fun_l13_n216(x)
+ else
+ fun_l13_n682(x)
+ end
+end
+
+def fun_l12_n732(x)
+ if (x < 1)
+ fun_l13_n953(x)
+ else
+ fun_l13_n364(x)
+ end
+end
+
+def fun_l12_n733(x)
+ if (x < 1)
+ fun_l13_n164(x)
+ else
+ fun_l13_n277(x)
+ end
+end
+
+def fun_l12_n734(x)
+ if (x < 1)
+ fun_l13_n486(x)
+ else
+ fun_l13_n741(x)
+ end
+end
+
+def fun_l12_n735(x)
+ if (x < 1)
+ fun_l13_n310(x)
+ else
+ fun_l13_n940(x)
+ end
+end
+
+def fun_l12_n736(x)
+ if (x < 1)
+ fun_l13_n312(x)
+ else
+ fun_l13_n46(x)
+ end
+end
+
+def fun_l12_n737(x)
+ if (x < 1)
+ fun_l13_n473(x)
+ else
+ fun_l13_n728(x)
+ end
+end
+
+def fun_l12_n738(x)
+ if (x < 1)
+ fun_l13_n602(x)
+ else
+ fun_l13_n652(x)
+ end
+end
+
+def fun_l12_n739(x)
+ if (x < 1)
+ fun_l13_n397(x)
+ else
+ fun_l13_n855(x)
+ end
+end
+
+def fun_l12_n740(x)
+ if (x < 1)
+ fun_l13_n81(x)
+ else
+ fun_l13_n32(x)
+ end
+end
+
+def fun_l12_n741(x)
+ if (x < 1)
+ fun_l13_n822(x)
+ else
+ fun_l13_n231(x)
+ end
+end
+
+def fun_l12_n742(x)
+ if (x < 1)
+ fun_l13_n200(x)
+ else
+ fun_l13_n440(x)
+ end
+end
+
+def fun_l12_n743(x)
+ if (x < 1)
+ fun_l13_n415(x)
+ else
+ fun_l13_n631(x)
+ end
+end
+
+def fun_l12_n744(x)
+ if (x < 1)
+ fun_l13_n353(x)
+ else
+ fun_l13_n536(x)
+ end
+end
+
+def fun_l12_n745(x)
+ if (x < 1)
+ fun_l13_n986(x)
+ else
+ fun_l13_n384(x)
+ end
+end
+
+def fun_l12_n746(x)
+ if (x < 1)
+ fun_l13_n237(x)
+ else
+ fun_l13_n583(x)
+ end
+end
+
+def fun_l12_n747(x)
+ if (x < 1)
+ fun_l13_n518(x)
+ else
+ fun_l13_n717(x)
+ end
+end
+
+def fun_l12_n748(x)
+ if (x < 1)
+ fun_l13_n242(x)
+ else
+ fun_l13_n180(x)
+ end
+end
+
+def fun_l12_n749(x)
+ if (x < 1)
+ fun_l13_n369(x)
+ else
+ fun_l13_n249(x)
+ end
+end
+
+def fun_l12_n750(x)
+ if (x < 1)
+ fun_l13_n335(x)
+ else
+ fun_l13_n180(x)
+ end
+end
+
+def fun_l12_n751(x)
+ if (x < 1)
+ fun_l13_n952(x)
+ else
+ fun_l13_n506(x)
+ end
+end
+
+def fun_l12_n752(x)
+ if (x < 1)
+ fun_l13_n941(x)
+ else
+ fun_l13_n251(x)
+ end
+end
+
+def fun_l12_n753(x)
+ if (x < 1)
+ fun_l13_n21(x)
+ else
+ fun_l13_n536(x)
+ end
+end
+
+def fun_l12_n754(x)
+ if (x < 1)
+ fun_l13_n123(x)
+ else
+ fun_l13_n976(x)
+ end
+end
+
+def fun_l12_n755(x)
+ if (x < 1)
+ fun_l13_n229(x)
+ else
+ fun_l13_n535(x)
+ end
+end
+
+def fun_l12_n756(x)
+ if (x < 1)
+ fun_l13_n23(x)
+ else
+ fun_l13_n976(x)
+ end
+end
+
+def fun_l12_n757(x)
+ if (x < 1)
+ fun_l13_n755(x)
+ else
+ fun_l13_n677(x)
+ end
+end
+
+def fun_l12_n758(x)
+ if (x < 1)
+ fun_l13_n692(x)
+ else
+ fun_l13_n334(x)
+ end
+end
+
+def fun_l12_n759(x)
+ if (x < 1)
+ fun_l13_n380(x)
+ else
+ fun_l13_n903(x)
+ end
+end
+
+def fun_l12_n760(x)
+ if (x < 1)
+ fun_l13_n16(x)
+ else
+ fun_l13_n750(x)
+ end
+end
+
+def fun_l12_n761(x)
+ if (x < 1)
+ fun_l13_n186(x)
+ else
+ fun_l13_n639(x)
+ end
+end
+
+def fun_l12_n762(x)
+ if (x < 1)
+ fun_l13_n163(x)
+ else
+ fun_l13_n273(x)
+ end
+end
+
+def fun_l12_n763(x)
+ if (x < 1)
+ fun_l13_n791(x)
+ else
+ fun_l13_n55(x)
+ end
+end
+
+def fun_l12_n764(x)
+ if (x < 1)
+ fun_l13_n10(x)
+ else
+ fun_l13_n672(x)
+ end
+end
+
+def fun_l12_n765(x)
+ if (x < 1)
+ fun_l13_n382(x)
+ else
+ fun_l13_n284(x)
+ end
+end
+
+def fun_l12_n766(x)
+ if (x < 1)
+ fun_l13_n940(x)
+ else
+ fun_l13_n716(x)
+ end
+end
+
+def fun_l12_n767(x)
+ if (x < 1)
+ fun_l13_n414(x)
+ else
+ fun_l13_n997(x)
+ end
+end
+
+def fun_l12_n768(x)
+ if (x < 1)
+ fun_l13_n345(x)
+ else
+ fun_l13_n511(x)
+ end
+end
+
+def fun_l12_n769(x)
+ if (x < 1)
+ fun_l13_n915(x)
+ else
+ fun_l13_n907(x)
+ end
+end
+
+def fun_l12_n770(x)
+ if (x < 1)
+ fun_l13_n508(x)
+ else
+ fun_l13_n144(x)
+ end
+end
+
+def fun_l12_n771(x)
+ if (x < 1)
+ fun_l13_n764(x)
+ else
+ fun_l13_n211(x)
+ end
+end
+
+def fun_l12_n772(x)
+ if (x < 1)
+ fun_l13_n571(x)
+ else
+ fun_l13_n486(x)
+ end
+end
+
+def fun_l12_n773(x)
+ if (x < 1)
+ fun_l13_n503(x)
+ else
+ fun_l13_n561(x)
+ end
+end
+
+def fun_l12_n774(x)
+ if (x < 1)
+ fun_l13_n831(x)
+ else
+ fun_l13_n608(x)
+ end
+end
+
+def fun_l12_n775(x)
+ if (x < 1)
+ fun_l13_n254(x)
+ else
+ fun_l13_n626(x)
+ end
+end
+
+def fun_l12_n776(x)
+ if (x < 1)
+ fun_l13_n155(x)
+ else
+ fun_l13_n602(x)
+ end
+end
+
+def fun_l12_n777(x)
+ if (x < 1)
+ fun_l13_n331(x)
+ else
+ fun_l13_n837(x)
+ end
+end
+
+def fun_l12_n778(x)
+ if (x < 1)
+ fun_l13_n109(x)
+ else
+ fun_l13_n558(x)
+ end
+end
+
+def fun_l12_n779(x)
+ if (x < 1)
+ fun_l13_n557(x)
+ else
+ fun_l13_n784(x)
+ end
+end
+
+def fun_l12_n780(x)
+ if (x < 1)
+ fun_l13_n719(x)
+ else
+ fun_l13_n933(x)
+ end
+end
+
+def fun_l12_n781(x)
+ if (x < 1)
+ fun_l13_n63(x)
+ else
+ fun_l13_n776(x)
+ end
+end
+
+def fun_l12_n782(x)
+ if (x < 1)
+ fun_l13_n146(x)
+ else
+ fun_l13_n32(x)
+ end
+end
+
+def fun_l12_n783(x)
+ if (x < 1)
+ fun_l13_n452(x)
+ else
+ fun_l13_n621(x)
+ end
+end
+
+def fun_l12_n784(x)
+ if (x < 1)
+ fun_l13_n821(x)
+ else
+ fun_l13_n454(x)
+ end
+end
+
+def fun_l12_n785(x)
+ if (x < 1)
+ fun_l13_n943(x)
+ else
+ fun_l13_n835(x)
+ end
+end
+
+def fun_l12_n786(x)
+ if (x < 1)
+ fun_l13_n47(x)
+ else
+ fun_l13_n252(x)
+ end
+end
+
+def fun_l12_n787(x)
+ if (x < 1)
+ fun_l13_n759(x)
+ else
+ fun_l13_n820(x)
+ end
+end
+
+def fun_l12_n788(x)
+ if (x < 1)
+ fun_l13_n883(x)
+ else
+ fun_l13_n218(x)
+ end
+end
+
+def fun_l12_n789(x)
+ if (x < 1)
+ fun_l13_n10(x)
+ else
+ fun_l13_n765(x)
+ end
+end
+
+def fun_l12_n790(x)
+ if (x < 1)
+ fun_l13_n6(x)
+ else
+ fun_l13_n424(x)
+ end
+end
+
+def fun_l12_n791(x)
+ if (x < 1)
+ fun_l13_n645(x)
+ else
+ fun_l13_n598(x)
+ end
+end
+
+def fun_l12_n792(x)
+ if (x < 1)
+ fun_l13_n237(x)
+ else
+ fun_l13_n141(x)
+ end
+end
+
+def fun_l12_n793(x)
+ if (x < 1)
+ fun_l13_n793(x)
+ else
+ fun_l13_n109(x)
+ end
+end
+
+def fun_l12_n794(x)
+ if (x < 1)
+ fun_l13_n404(x)
+ else
+ fun_l13_n864(x)
+ end
+end
+
+def fun_l12_n795(x)
+ if (x < 1)
+ fun_l13_n511(x)
+ else
+ fun_l13_n620(x)
+ end
+end
+
+def fun_l12_n796(x)
+ if (x < 1)
+ fun_l13_n880(x)
+ else
+ fun_l13_n330(x)
+ end
+end
+
+def fun_l12_n797(x)
+ if (x < 1)
+ fun_l13_n637(x)
+ else
+ fun_l13_n13(x)
+ end
+end
+
+def fun_l12_n798(x)
+ if (x < 1)
+ fun_l13_n567(x)
+ else
+ fun_l13_n958(x)
+ end
+end
+
+def fun_l12_n799(x)
+ if (x < 1)
+ fun_l13_n715(x)
+ else
+ fun_l13_n983(x)
+ end
+end
+
+def fun_l12_n800(x)
+ if (x < 1)
+ fun_l13_n502(x)
+ else
+ fun_l13_n600(x)
+ end
+end
+
+def fun_l12_n801(x)
+ if (x < 1)
+ fun_l13_n645(x)
+ else
+ fun_l13_n713(x)
+ end
+end
+
+def fun_l12_n802(x)
+ if (x < 1)
+ fun_l13_n804(x)
+ else
+ fun_l13_n475(x)
+ end
+end
+
+def fun_l12_n803(x)
+ if (x < 1)
+ fun_l13_n286(x)
+ else
+ fun_l13_n135(x)
+ end
+end
+
+def fun_l12_n804(x)
+ if (x < 1)
+ fun_l13_n420(x)
+ else
+ fun_l13_n534(x)
+ end
+end
+
+def fun_l12_n805(x)
+ if (x < 1)
+ fun_l13_n345(x)
+ else
+ fun_l13_n833(x)
+ end
+end
+
+def fun_l12_n806(x)
+ if (x < 1)
+ fun_l13_n558(x)
+ else
+ fun_l13_n831(x)
+ end
+end
+
+def fun_l12_n807(x)
+ if (x < 1)
+ fun_l13_n82(x)
+ else
+ fun_l13_n56(x)
+ end
+end
+
+def fun_l12_n808(x)
+ if (x < 1)
+ fun_l13_n809(x)
+ else
+ fun_l13_n12(x)
+ end
+end
+
+def fun_l12_n809(x)
+ if (x < 1)
+ fun_l13_n450(x)
+ else
+ fun_l13_n326(x)
+ end
+end
+
+def fun_l12_n810(x)
+ if (x < 1)
+ fun_l13_n567(x)
+ else
+ fun_l13_n437(x)
+ end
+end
+
+def fun_l12_n811(x)
+ if (x < 1)
+ fun_l13_n880(x)
+ else
+ fun_l13_n785(x)
+ end
+end
+
+def fun_l12_n812(x)
+ if (x < 1)
+ fun_l13_n585(x)
+ else
+ fun_l13_n610(x)
+ end
+end
+
+def fun_l12_n813(x)
+ if (x < 1)
+ fun_l13_n41(x)
+ else
+ fun_l13_n911(x)
+ end
+end
+
+def fun_l12_n814(x)
+ if (x < 1)
+ fun_l13_n438(x)
+ else
+ fun_l13_n300(x)
+ end
+end
+
+def fun_l12_n815(x)
+ if (x < 1)
+ fun_l13_n363(x)
+ else
+ fun_l13_n357(x)
+ end
+end
+
+def fun_l12_n816(x)
+ if (x < 1)
+ fun_l13_n172(x)
+ else
+ fun_l13_n25(x)
+ end
+end
+
+def fun_l12_n817(x)
+ if (x < 1)
+ fun_l13_n593(x)
+ else
+ fun_l13_n853(x)
+ end
+end
+
+def fun_l12_n818(x)
+ if (x < 1)
+ fun_l13_n790(x)
+ else
+ fun_l13_n575(x)
+ end
+end
+
+def fun_l12_n819(x)
+ if (x < 1)
+ fun_l13_n795(x)
+ else
+ fun_l13_n877(x)
+ end
+end
+
+def fun_l12_n820(x)
+ if (x < 1)
+ fun_l13_n563(x)
+ else
+ fun_l13_n170(x)
+ end
+end
+
+def fun_l12_n821(x)
+ if (x < 1)
+ fun_l13_n405(x)
+ else
+ fun_l13_n985(x)
+ end
+end
+
+def fun_l12_n822(x)
+ if (x < 1)
+ fun_l13_n668(x)
+ else
+ fun_l13_n702(x)
+ end
+end
+
+def fun_l12_n823(x)
+ if (x < 1)
+ fun_l13_n210(x)
+ else
+ fun_l13_n450(x)
+ end
+end
+
+def fun_l12_n824(x)
+ if (x < 1)
+ fun_l13_n817(x)
+ else
+ fun_l13_n693(x)
+ end
+end
+
+def fun_l12_n825(x)
+ if (x < 1)
+ fun_l13_n909(x)
+ else
+ fun_l13_n857(x)
+ end
+end
+
+def fun_l12_n826(x)
+ if (x < 1)
+ fun_l13_n944(x)
+ else
+ fun_l13_n601(x)
+ end
+end
+
+def fun_l12_n827(x)
+ if (x < 1)
+ fun_l13_n152(x)
+ else
+ fun_l13_n187(x)
+ end
+end
+
+def fun_l12_n828(x)
+ if (x < 1)
+ fun_l13_n735(x)
+ else
+ fun_l13_n198(x)
+ end
+end
+
+def fun_l12_n829(x)
+ if (x < 1)
+ fun_l13_n892(x)
+ else
+ fun_l13_n362(x)
+ end
+end
+
+def fun_l12_n830(x)
+ if (x < 1)
+ fun_l13_n636(x)
+ else
+ fun_l13_n779(x)
+ end
+end
+
+def fun_l12_n831(x)
+ if (x < 1)
+ fun_l13_n597(x)
+ else
+ fun_l13_n186(x)
+ end
+end
+
+def fun_l12_n832(x)
+ if (x < 1)
+ fun_l13_n680(x)
+ else
+ fun_l13_n477(x)
+ end
+end
+
+def fun_l12_n833(x)
+ if (x < 1)
+ fun_l13_n334(x)
+ else
+ fun_l13_n508(x)
+ end
+end
+
+def fun_l12_n834(x)
+ if (x < 1)
+ fun_l13_n927(x)
+ else
+ fun_l13_n111(x)
+ end
+end
+
+def fun_l12_n835(x)
+ if (x < 1)
+ fun_l13_n424(x)
+ else
+ fun_l13_n326(x)
+ end
+end
+
+def fun_l12_n836(x)
+ if (x < 1)
+ fun_l13_n624(x)
+ else
+ fun_l13_n270(x)
+ end
+end
+
+def fun_l12_n837(x)
+ if (x < 1)
+ fun_l13_n458(x)
+ else
+ fun_l13_n736(x)
+ end
+end
+
+def fun_l12_n838(x)
+ if (x < 1)
+ fun_l13_n881(x)
+ else
+ fun_l13_n702(x)
+ end
+end
+
+def fun_l12_n839(x)
+ if (x < 1)
+ fun_l13_n778(x)
+ else
+ fun_l13_n374(x)
+ end
+end
+
+def fun_l12_n840(x)
+ if (x < 1)
+ fun_l13_n118(x)
+ else
+ fun_l13_n543(x)
+ end
+end
+
+def fun_l12_n841(x)
+ if (x < 1)
+ fun_l13_n270(x)
+ else
+ fun_l13_n810(x)
+ end
+end
+
+def fun_l12_n842(x)
+ if (x < 1)
+ fun_l13_n122(x)
+ else
+ fun_l13_n905(x)
+ end
+end
+
+def fun_l12_n843(x)
+ if (x < 1)
+ fun_l13_n154(x)
+ else
+ fun_l13_n636(x)
+ end
+end
+
+def fun_l12_n844(x)
+ if (x < 1)
+ fun_l13_n603(x)
+ else
+ fun_l13_n586(x)
+ end
+end
+
+def fun_l12_n845(x)
+ if (x < 1)
+ fun_l13_n264(x)
+ else
+ fun_l13_n492(x)
+ end
+end
+
+def fun_l12_n846(x)
+ if (x < 1)
+ fun_l13_n264(x)
+ else
+ fun_l13_n214(x)
+ end
+end
+
+def fun_l12_n847(x)
+ if (x < 1)
+ fun_l13_n337(x)
+ else
+ fun_l13_n339(x)
+ end
+end
+
+def fun_l12_n848(x)
+ if (x < 1)
+ fun_l13_n83(x)
+ else
+ fun_l13_n454(x)
+ end
+end
+
+def fun_l12_n849(x)
+ if (x < 1)
+ fun_l13_n129(x)
+ else
+ fun_l13_n30(x)
+ end
+end
+
+def fun_l12_n850(x)
+ if (x < 1)
+ fun_l13_n602(x)
+ else
+ fun_l13_n355(x)
+ end
+end
+
+def fun_l12_n851(x)
+ if (x < 1)
+ fun_l13_n650(x)
+ else
+ fun_l13_n715(x)
+ end
+end
+
+def fun_l12_n852(x)
+ if (x < 1)
+ fun_l13_n482(x)
+ else
+ fun_l13_n852(x)
+ end
+end
+
+def fun_l12_n853(x)
+ if (x < 1)
+ fun_l13_n946(x)
+ else
+ fun_l13_n393(x)
+ end
+end
+
+def fun_l12_n854(x)
+ if (x < 1)
+ fun_l13_n16(x)
+ else
+ fun_l13_n512(x)
+ end
+end
+
+def fun_l12_n855(x)
+ if (x < 1)
+ fun_l13_n469(x)
+ else
+ fun_l13_n567(x)
+ end
+end
+
+def fun_l12_n856(x)
+ if (x < 1)
+ fun_l13_n531(x)
+ else
+ fun_l13_n39(x)
+ end
+end
+
+def fun_l12_n857(x)
+ if (x < 1)
+ fun_l13_n673(x)
+ else
+ fun_l13_n670(x)
+ end
+end
+
+def fun_l12_n858(x)
+ if (x < 1)
+ fun_l13_n83(x)
+ else
+ fun_l13_n588(x)
+ end
+end
+
+def fun_l12_n859(x)
+ if (x < 1)
+ fun_l13_n247(x)
+ else
+ fun_l13_n460(x)
+ end
+end
+
+def fun_l12_n860(x)
+ if (x < 1)
+ fun_l13_n621(x)
+ else
+ fun_l13_n229(x)
+ end
+end
+
+def fun_l12_n861(x)
+ if (x < 1)
+ fun_l13_n121(x)
+ else
+ fun_l13_n147(x)
+ end
+end
+
+def fun_l12_n862(x)
+ if (x < 1)
+ fun_l13_n293(x)
+ else
+ fun_l13_n976(x)
+ end
+end
+
+def fun_l12_n863(x)
+ if (x < 1)
+ fun_l13_n64(x)
+ else
+ fun_l13_n569(x)
+ end
+end
+
+def fun_l12_n864(x)
+ if (x < 1)
+ fun_l13_n802(x)
+ else
+ fun_l13_n962(x)
+ end
+end
+
+def fun_l12_n865(x)
+ if (x < 1)
+ fun_l13_n406(x)
+ else
+ fun_l13_n571(x)
+ end
+end
+
+def fun_l12_n866(x)
+ if (x < 1)
+ fun_l13_n798(x)
+ else
+ fun_l13_n418(x)
+ end
+end
+
+def fun_l12_n867(x)
+ if (x < 1)
+ fun_l13_n725(x)
+ else
+ fun_l13_n716(x)
+ end
+end
+
+def fun_l12_n868(x)
+ if (x < 1)
+ fun_l13_n245(x)
+ else
+ fun_l13_n154(x)
+ end
+end
+
+def fun_l12_n869(x)
+ if (x < 1)
+ fun_l13_n954(x)
+ else
+ fun_l13_n242(x)
+ end
+end
+
+def fun_l12_n870(x)
+ if (x < 1)
+ fun_l13_n649(x)
+ else
+ fun_l13_n160(x)
+ end
+end
+
+def fun_l12_n871(x)
+ if (x < 1)
+ fun_l13_n700(x)
+ else
+ fun_l13_n863(x)
+ end
+end
+
+def fun_l12_n872(x)
+ if (x < 1)
+ fun_l13_n60(x)
+ else
+ fun_l13_n359(x)
+ end
+end
+
+def fun_l12_n873(x)
+ if (x < 1)
+ fun_l13_n820(x)
+ else
+ fun_l13_n247(x)
+ end
+end
+
+def fun_l12_n874(x)
+ if (x < 1)
+ fun_l13_n294(x)
+ else
+ fun_l13_n179(x)
+ end
+end
+
+def fun_l12_n875(x)
+ if (x < 1)
+ fun_l13_n599(x)
+ else
+ fun_l13_n309(x)
+ end
+end
+
+def fun_l12_n876(x)
+ if (x < 1)
+ fun_l13_n922(x)
+ else
+ fun_l13_n632(x)
+ end
+end
+
+def fun_l12_n877(x)
+ if (x < 1)
+ fun_l13_n921(x)
+ else
+ fun_l13_n200(x)
+ end
+end
+
+def fun_l12_n878(x)
+ if (x < 1)
+ fun_l13_n375(x)
+ else
+ fun_l13_n109(x)
+ end
+end
+
+def fun_l12_n879(x)
+ if (x < 1)
+ fun_l13_n771(x)
+ else
+ fun_l13_n758(x)
+ end
+end
+
+def fun_l12_n880(x)
+ if (x < 1)
+ fun_l13_n887(x)
+ else
+ fun_l13_n958(x)
+ end
+end
+
+def fun_l12_n881(x)
+ if (x < 1)
+ fun_l13_n668(x)
+ else
+ fun_l13_n508(x)
+ end
+end
+
+def fun_l12_n882(x)
+ if (x < 1)
+ fun_l13_n822(x)
+ else
+ fun_l13_n933(x)
+ end
+end
+
+def fun_l12_n883(x)
+ if (x < 1)
+ fun_l13_n328(x)
+ else
+ fun_l13_n152(x)
+ end
+end
+
+def fun_l12_n884(x)
+ if (x < 1)
+ fun_l13_n978(x)
+ else
+ fun_l13_n282(x)
+ end
+end
+
+def fun_l12_n885(x)
+ if (x < 1)
+ fun_l13_n91(x)
+ else
+ fun_l13_n592(x)
+ end
+end
+
+def fun_l12_n886(x)
+ if (x < 1)
+ fun_l13_n844(x)
+ else
+ fun_l13_n254(x)
+ end
+end
+
+def fun_l12_n887(x)
+ if (x < 1)
+ fun_l13_n49(x)
+ else
+ fun_l13_n430(x)
+ end
+end
+
+def fun_l12_n888(x)
+ if (x < 1)
+ fun_l13_n653(x)
+ else
+ fun_l13_n612(x)
+ end
+end
+
+def fun_l12_n889(x)
+ if (x < 1)
+ fun_l13_n352(x)
+ else
+ fun_l13_n228(x)
+ end
+end
+
+def fun_l12_n890(x)
+ if (x < 1)
+ fun_l13_n952(x)
+ else
+ fun_l13_n505(x)
+ end
+end
+
+def fun_l12_n891(x)
+ if (x < 1)
+ fun_l13_n381(x)
+ else
+ fun_l13_n799(x)
+ end
+end
+
+def fun_l12_n892(x)
+ if (x < 1)
+ fun_l13_n160(x)
+ else
+ fun_l13_n78(x)
+ end
+end
+
+def fun_l12_n893(x)
+ if (x < 1)
+ fun_l13_n554(x)
+ else
+ fun_l13_n383(x)
+ end
+end
+
+def fun_l12_n894(x)
+ if (x < 1)
+ fun_l13_n475(x)
+ else
+ fun_l13_n853(x)
+ end
+end
+
+def fun_l12_n895(x)
+ if (x < 1)
+ fun_l13_n588(x)
+ else
+ fun_l13_n452(x)
+ end
+end
+
+def fun_l12_n896(x)
+ if (x < 1)
+ fun_l13_n991(x)
+ else
+ fun_l13_n758(x)
+ end
+end
+
+def fun_l12_n897(x)
+ if (x < 1)
+ fun_l13_n808(x)
+ else
+ fun_l13_n742(x)
+ end
+end
+
+def fun_l12_n898(x)
+ if (x < 1)
+ fun_l13_n654(x)
+ else
+ fun_l13_n772(x)
+ end
+end
+
+def fun_l12_n899(x)
+ if (x < 1)
+ fun_l13_n365(x)
+ else
+ fun_l13_n3(x)
+ end
+end
+
+def fun_l12_n900(x)
+ if (x < 1)
+ fun_l13_n322(x)
+ else
+ fun_l13_n143(x)
+ end
+end
+
+def fun_l12_n901(x)
+ if (x < 1)
+ fun_l13_n833(x)
+ else
+ fun_l13_n19(x)
+ end
+end
+
+def fun_l12_n902(x)
+ if (x < 1)
+ fun_l13_n796(x)
+ else
+ fun_l13_n140(x)
+ end
+end
+
+def fun_l12_n903(x)
+ if (x < 1)
+ fun_l13_n866(x)
+ else
+ fun_l13_n227(x)
+ end
+end
+
+def fun_l12_n904(x)
+ if (x < 1)
+ fun_l13_n814(x)
+ else
+ fun_l13_n714(x)
+ end
+end
+
+def fun_l12_n905(x)
+ if (x < 1)
+ fun_l13_n841(x)
+ else
+ fun_l13_n802(x)
+ end
+end
+
+def fun_l12_n906(x)
+ if (x < 1)
+ fun_l13_n212(x)
+ else
+ fun_l13_n14(x)
+ end
+end
+
+def fun_l12_n907(x)
+ if (x < 1)
+ fun_l13_n35(x)
+ else
+ fun_l13_n952(x)
+ end
+end
+
+def fun_l12_n908(x)
+ if (x < 1)
+ fun_l13_n181(x)
+ else
+ fun_l13_n539(x)
+ end
+end
+
+def fun_l12_n909(x)
+ if (x < 1)
+ fun_l13_n770(x)
+ else
+ fun_l13_n80(x)
+ end
+end
+
+def fun_l12_n910(x)
+ if (x < 1)
+ fun_l13_n421(x)
+ else
+ fun_l13_n512(x)
+ end
+end
+
+def fun_l12_n911(x)
+ if (x < 1)
+ fun_l13_n710(x)
+ else
+ fun_l13_n666(x)
+ end
+end
+
+def fun_l12_n912(x)
+ if (x < 1)
+ fun_l13_n319(x)
+ else
+ fun_l13_n491(x)
+ end
+end
+
+def fun_l12_n913(x)
+ if (x < 1)
+ fun_l13_n924(x)
+ else
+ fun_l13_n198(x)
+ end
+end
+
+def fun_l12_n914(x)
+ if (x < 1)
+ fun_l13_n707(x)
+ else
+ fun_l13_n91(x)
+ end
+end
+
+def fun_l12_n915(x)
+ if (x < 1)
+ fun_l13_n29(x)
+ else
+ fun_l13_n134(x)
+ end
+end
+
+def fun_l12_n916(x)
+ if (x < 1)
+ fun_l13_n314(x)
+ else
+ fun_l13_n831(x)
+ end
+end
+
+def fun_l12_n917(x)
+ if (x < 1)
+ fun_l13_n986(x)
+ else
+ fun_l13_n732(x)
+ end
+end
+
+def fun_l12_n918(x)
+ if (x < 1)
+ fun_l13_n787(x)
+ else
+ fun_l13_n232(x)
+ end
+end
+
+def fun_l12_n919(x)
+ if (x < 1)
+ fun_l13_n452(x)
+ else
+ fun_l13_n386(x)
+ end
+end
+
+def fun_l12_n920(x)
+ if (x < 1)
+ fun_l13_n12(x)
+ else
+ fun_l13_n264(x)
+ end
+end
+
+def fun_l12_n921(x)
+ if (x < 1)
+ fun_l13_n734(x)
+ else
+ fun_l13_n885(x)
+ end
+end
+
+def fun_l12_n922(x)
+ if (x < 1)
+ fun_l13_n180(x)
+ else
+ fun_l13_n509(x)
+ end
+end
+
+def fun_l12_n923(x)
+ if (x < 1)
+ fun_l13_n783(x)
+ else
+ fun_l13_n212(x)
+ end
+end
+
+def fun_l12_n924(x)
+ if (x < 1)
+ fun_l13_n623(x)
+ else
+ fun_l13_n159(x)
+ end
+end
+
+def fun_l12_n925(x)
+ if (x < 1)
+ fun_l13_n361(x)
+ else
+ fun_l13_n47(x)
+ end
+end
+
+def fun_l12_n926(x)
+ if (x < 1)
+ fun_l13_n355(x)
+ else
+ fun_l13_n337(x)
+ end
+end
+
+def fun_l12_n927(x)
+ if (x < 1)
+ fun_l13_n892(x)
+ else
+ fun_l13_n814(x)
+ end
+end
+
+def fun_l12_n928(x)
+ if (x < 1)
+ fun_l13_n173(x)
+ else
+ fun_l13_n613(x)
+ end
+end
+
+def fun_l12_n929(x)
+ if (x < 1)
+ fun_l13_n140(x)
+ else
+ fun_l13_n782(x)
+ end
+end
+
+def fun_l12_n930(x)
+ if (x < 1)
+ fun_l13_n964(x)
+ else
+ fun_l13_n830(x)
+ end
+end
+
+def fun_l12_n931(x)
+ if (x < 1)
+ fun_l13_n110(x)
+ else
+ fun_l13_n767(x)
+ end
+end
+
+def fun_l12_n932(x)
+ if (x < 1)
+ fun_l13_n738(x)
+ else
+ fun_l13_n73(x)
+ end
+end
+
+def fun_l12_n933(x)
+ if (x < 1)
+ fun_l13_n92(x)
+ else
+ fun_l13_n113(x)
+ end
+end
+
+def fun_l12_n934(x)
+ if (x < 1)
+ fun_l13_n377(x)
+ else
+ fun_l13_n464(x)
+ end
+end
+
+def fun_l12_n935(x)
+ if (x < 1)
+ fun_l13_n544(x)
+ else
+ fun_l13_n808(x)
+ end
+end
+
+def fun_l12_n936(x)
+ if (x < 1)
+ fun_l13_n36(x)
+ else
+ fun_l13_n343(x)
+ end
+end
+
+def fun_l12_n937(x)
+ if (x < 1)
+ fun_l13_n745(x)
+ else
+ fun_l13_n342(x)
+ end
+end
+
+def fun_l12_n938(x)
+ if (x < 1)
+ fun_l13_n238(x)
+ else
+ fun_l13_n703(x)
+ end
+end
+
+def fun_l12_n939(x)
+ if (x < 1)
+ fun_l13_n229(x)
+ else
+ fun_l13_n118(x)
+ end
+end
+
+def fun_l12_n940(x)
+ if (x < 1)
+ fun_l13_n90(x)
+ else
+ fun_l13_n0(x)
+ end
+end
+
+def fun_l12_n941(x)
+ if (x < 1)
+ fun_l13_n586(x)
+ else
+ fun_l13_n99(x)
+ end
+end
+
+def fun_l12_n942(x)
+ if (x < 1)
+ fun_l13_n755(x)
+ else
+ fun_l13_n573(x)
+ end
+end
+
+def fun_l12_n943(x)
+ if (x < 1)
+ fun_l13_n74(x)
+ else
+ fun_l13_n805(x)
+ end
+end
+
+def fun_l12_n944(x)
+ if (x < 1)
+ fun_l13_n574(x)
+ else
+ fun_l13_n876(x)
+ end
+end
+
+def fun_l12_n945(x)
+ if (x < 1)
+ fun_l13_n0(x)
+ else
+ fun_l13_n478(x)
+ end
+end
+
+def fun_l12_n946(x)
+ if (x < 1)
+ fun_l13_n536(x)
+ else
+ fun_l13_n957(x)
+ end
+end
+
+def fun_l12_n947(x)
+ if (x < 1)
+ fun_l13_n644(x)
+ else
+ fun_l13_n285(x)
+ end
+end
+
+def fun_l12_n948(x)
+ if (x < 1)
+ fun_l13_n215(x)
+ else
+ fun_l13_n914(x)
+ end
+end
+
+def fun_l12_n949(x)
+ if (x < 1)
+ fun_l13_n265(x)
+ else
+ fun_l13_n262(x)
+ end
+end
+
+def fun_l12_n950(x)
+ if (x < 1)
+ fun_l13_n44(x)
+ else
+ fun_l13_n917(x)
+ end
+end
+
+def fun_l12_n951(x)
+ if (x < 1)
+ fun_l13_n222(x)
+ else
+ fun_l13_n53(x)
+ end
+end
+
+def fun_l12_n952(x)
+ if (x < 1)
+ fun_l13_n149(x)
+ else
+ fun_l13_n11(x)
+ end
+end
+
+def fun_l12_n953(x)
+ if (x < 1)
+ fun_l13_n827(x)
+ else
+ fun_l13_n737(x)
+ end
+end
+
+def fun_l12_n954(x)
+ if (x < 1)
+ fun_l13_n655(x)
+ else
+ fun_l13_n308(x)
+ end
+end
+
+def fun_l12_n955(x)
+ if (x < 1)
+ fun_l13_n108(x)
+ else
+ fun_l13_n940(x)
+ end
+end
+
+def fun_l12_n956(x)
+ if (x < 1)
+ fun_l13_n236(x)
+ else
+ fun_l13_n259(x)
+ end
+end
+
+def fun_l12_n957(x)
+ if (x < 1)
+ fun_l13_n886(x)
+ else
+ fun_l13_n955(x)
+ end
+end
+
+def fun_l12_n958(x)
+ if (x < 1)
+ fun_l13_n688(x)
+ else
+ fun_l13_n391(x)
+ end
+end
+
+def fun_l12_n959(x)
+ if (x < 1)
+ fun_l13_n521(x)
+ else
+ fun_l13_n395(x)
+ end
+end
+
+def fun_l12_n960(x)
+ if (x < 1)
+ fun_l13_n877(x)
+ else
+ fun_l13_n808(x)
+ end
+end
+
+def fun_l12_n961(x)
+ if (x < 1)
+ fun_l13_n29(x)
+ else
+ fun_l13_n422(x)
+ end
+end
+
+def fun_l12_n962(x)
+ if (x < 1)
+ fun_l13_n417(x)
+ else
+ fun_l13_n310(x)
+ end
+end
+
+def fun_l12_n963(x)
+ if (x < 1)
+ fun_l13_n987(x)
+ else
+ fun_l13_n462(x)
+ end
+end
+
+def fun_l12_n964(x)
+ if (x < 1)
+ fun_l13_n914(x)
+ else
+ fun_l13_n115(x)
+ end
+end
+
+def fun_l12_n965(x)
+ if (x < 1)
+ fun_l13_n895(x)
+ else
+ fun_l13_n504(x)
+ end
+end
+
+def fun_l12_n966(x)
+ if (x < 1)
+ fun_l13_n304(x)
+ else
+ fun_l13_n788(x)
+ end
+end
+
+def fun_l12_n967(x)
+ if (x < 1)
+ fun_l13_n354(x)
+ else
+ fun_l13_n592(x)
+ end
+end
+
+def fun_l12_n968(x)
+ if (x < 1)
+ fun_l13_n231(x)
+ else
+ fun_l13_n214(x)
+ end
+end
+
+def fun_l12_n969(x)
+ if (x < 1)
+ fun_l13_n435(x)
+ else
+ fun_l13_n779(x)
+ end
+end
+
+def fun_l12_n970(x)
+ if (x < 1)
+ fun_l13_n261(x)
+ else
+ fun_l13_n139(x)
+ end
+end
+
+def fun_l12_n971(x)
+ if (x < 1)
+ fun_l13_n320(x)
+ else
+ fun_l13_n749(x)
+ end
+end
+
+def fun_l12_n972(x)
+ if (x < 1)
+ fun_l13_n56(x)
+ else
+ fun_l13_n207(x)
+ end
+end
+
+def fun_l12_n973(x)
+ if (x < 1)
+ fun_l13_n238(x)
+ else
+ fun_l13_n637(x)
+ end
+end
+
+def fun_l12_n974(x)
+ if (x < 1)
+ fun_l13_n474(x)
+ else
+ fun_l13_n512(x)
+ end
+end
+
+def fun_l12_n975(x)
+ if (x < 1)
+ fun_l13_n552(x)
+ else
+ fun_l13_n355(x)
+ end
+end
+
+def fun_l12_n976(x)
+ if (x < 1)
+ fun_l13_n127(x)
+ else
+ fun_l13_n571(x)
+ end
+end
+
+def fun_l12_n977(x)
+ if (x < 1)
+ fun_l13_n261(x)
+ else
+ fun_l13_n845(x)
+ end
+end
+
+def fun_l12_n978(x)
+ if (x < 1)
+ fun_l13_n280(x)
+ else
+ fun_l13_n465(x)
+ end
+end
+
+def fun_l12_n979(x)
+ if (x < 1)
+ fun_l13_n249(x)
+ else
+ fun_l13_n66(x)
+ end
+end
+
+def fun_l12_n980(x)
+ if (x < 1)
+ fun_l13_n306(x)
+ else
+ fun_l13_n53(x)
+ end
+end
+
+def fun_l12_n981(x)
+ if (x < 1)
+ fun_l13_n827(x)
+ else
+ fun_l13_n395(x)
+ end
+end
+
+def fun_l12_n982(x)
+ if (x < 1)
+ fun_l13_n858(x)
+ else
+ fun_l13_n644(x)
+ end
+end
+
+def fun_l12_n983(x)
+ if (x < 1)
+ fun_l13_n50(x)
+ else
+ fun_l13_n671(x)
+ end
+end
+
+def fun_l12_n984(x)
+ if (x < 1)
+ fun_l13_n629(x)
+ else
+ fun_l13_n55(x)
+ end
+end
+
+def fun_l12_n985(x)
+ if (x < 1)
+ fun_l13_n73(x)
+ else
+ fun_l13_n958(x)
+ end
+end
+
+def fun_l12_n986(x)
+ if (x < 1)
+ fun_l13_n197(x)
+ else
+ fun_l13_n444(x)
+ end
+end
+
+def fun_l12_n987(x)
+ if (x < 1)
+ fun_l13_n108(x)
+ else
+ fun_l13_n898(x)
+ end
+end
+
+def fun_l12_n988(x)
+ if (x < 1)
+ fun_l13_n153(x)
+ else
+ fun_l13_n278(x)
+ end
+end
+
+def fun_l12_n989(x)
+ if (x < 1)
+ fun_l13_n764(x)
+ else
+ fun_l13_n712(x)
+ end
+end
+
+def fun_l12_n990(x)
+ if (x < 1)
+ fun_l13_n711(x)
+ else
+ fun_l13_n825(x)
+ end
+end
+
+def fun_l12_n991(x)
+ if (x < 1)
+ fun_l13_n767(x)
+ else
+ fun_l13_n169(x)
+ end
+end
+
+def fun_l12_n992(x)
+ if (x < 1)
+ fun_l13_n917(x)
+ else
+ fun_l13_n524(x)
+ end
+end
+
+def fun_l12_n993(x)
+ if (x < 1)
+ fun_l13_n589(x)
+ else
+ fun_l13_n695(x)
+ end
+end
+
+def fun_l12_n994(x)
+ if (x < 1)
+ fun_l13_n733(x)
+ else
+ fun_l13_n764(x)
+ end
+end
+
+def fun_l12_n995(x)
+ if (x < 1)
+ fun_l13_n86(x)
+ else
+ fun_l13_n547(x)
+ end
+end
+
+def fun_l12_n996(x)
+ if (x < 1)
+ fun_l13_n236(x)
+ else
+ fun_l13_n197(x)
+ end
+end
+
+def fun_l12_n997(x)
+ if (x < 1)
+ fun_l13_n592(x)
+ else
+ fun_l13_n313(x)
+ end
+end
+
+def fun_l12_n998(x)
+ if (x < 1)
+ fun_l13_n878(x)
+ else
+ fun_l13_n439(x)
+ end
+end
+
+def fun_l12_n999(x)
+ if (x < 1)
+ fun_l13_n904(x)
+ else
+ fun_l13_n651(x)
+ end
+end
+
+def fun_l13_n0(x)
+ if (x < 1)
+ fun_l14_n72(x)
+ else
+ fun_l14_n951(x)
+ end
+end
+
+def fun_l13_n1(x)
+ if (x < 1)
+ fun_l14_n950(x)
+ else
+ fun_l14_n170(x)
+ end
+end
+
+def fun_l13_n2(x)
+ if (x < 1)
+ fun_l14_n773(x)
+ else
+ fun_l14_n351(x)
+ end
+end
+
+def fun_l13_n3(x)
+ if (x < 1)
+ fun_l14_n814(x)
+ else
+ fun_l14_n304(x)
+ end
+end
+
+def fun_l13_n4(x)
+ if (x < 1)
+ fun_l14_n395(x)
+ else
+ fun_l14_n187(x)
+ end
+end
+
+def fun_l13_n5(x)
+ if (x < 1)
+ fun_l14_n60(x)
+ else
+ fun_l14_n165(x)
+ end
+end
+
+def fun_l13_n6(x)
+ if (x < 1)
+ fun_l14_n711(x)
+ else
+ fun_l14_n815(x)
+ end
+end
+
+def fun_l13_n7(x)
+ if (x < 1)
+ fun_l14_n396(x)
+ else
+ fun_l14_n614(x)
+ end
+end
+
+def fun_l13_n8(x)
+ if (x < 1)
+ fun_l14_n477(x)
+ else
+ fun_l14_n427(x)
+ end
+end
+
+def fun_l13_n9(x)
+ if (x < 1)
+ fun_l14_n803(x)
+ else
+ fun_l14_n655(x)
+ end
+end
+
+def fun_l13_n10(x)
+ if (x < 1)
+ fun_l14_n261(x)
+ else
+ fun_l14_n324(x)
+ end
+end
+
+def fun_l13_n11(x)
+ if (x < 1)
+ fun_l14_n485(x)
+ else
+ fun_l14_n302(x)
+ end
+end
+
+def fun_l13_n12(x)
+ if (x < 1)
+ fun_l14_n324(x)
+ else
+ fun_l14_n840(x)
+ end
+end
+
+def fun_l13_n13(x)
+ if (x < 1)
+ fun_l14_n811(x)
+ else
+ fun_l14_n357(x)
+ end
+end
+
+def fun_l13_n14(x)
+ if (x < 1)
+ fun_l14_n736(x)
+ else
+ fun_l14_n763(x)
+ end
+end
+
+def fun_l13_n15(x)
+ if (x < 1)
+ fun_l14_n572(x)
+ else
+ fun_l14_n557(x)
+ end
+end
+
+def fun_l13_n16(x)
+ if (x < 1)
+ fun_l14_n406(x)
+ else
+ fun_l14_n200(x)
+ end
+end
+
+def fun_l13_n17(x)
+ if (x < 1)
+ fun_l14_n500(x)
+ else
+ fun_l14_n480(x)
+ end
+end
+
+def fun_l13_n18(x)
+ if (x < 1)
+ fun_l14_n215(x)
+ else
+ fun_l14_n241(x)
+ end
+end
+
+def fun_l13_n19(x)
+ if (x < 1)
+ fun_l14_n341(x)
+ else
+ fun_l14_n142(x)
+ end
+end
+
+def fun_l13_n20(x)
+ if (x < 1)
+ fun_l14_n649(x)
+ else
+ fun_l14_n853(x)
+ end
+end
+
+def fun_l13_n21(x)
+ if (x < 1)
+ fun_l14_n153(x)
+ else
+ fun_l14_n295(x)
+ end
+end
+
+def fun_l13_n22(x)
+ if (x < 1)
+ fun_l14_n210(x)
+ else
+ fun_l14_n947(x)
+ end
+end
+
+def fun_l13_n23(x)
+ if (x < 1)
+ fun_l14_n764(x)
+ else
+ fun_l14_n810(x)
+ end
+end
+
+def fun_l13_n24(x)
+ if (x < 1)
+ fun_l14_n96(x)
+ else
+ fun_l14_n359(x)
+ end
+end
+
+def fun_l13_n25(x)
+ if (x < 1)
+ fun_l14_n542(x)
+ else
+ fun_l14_n506(x)
+ end
+end
+
+def fun_l13_n26(x)
+ if (x < 1)
+ fun_l14_n583(x)
+ else
+ fun_l14_n754(x)
+ end
+end
+
+def fun_l13_n27(x)
+ if (x < 1)
+ fun_l14_n881(x)
+ else
+ fun_l14_n693(x)
+ end
+end
+
+def fun_l13_n28(x)
+ if (x < 1)
+ fun_l14_n385(x)
+ else
+ fun_l14_n628(x)
+ end
+end
+
+def fun_l13_n29(x)
+ if (x < 1)
+ fun_l14_n429(x)
+ else
+ fun_l14_n370(x)
+ end
+end
+
+def fun_l13_n30(x)
+ if (x < 1)
+ fun_l14_n484(x)
+ else
+ fun_l14_n724(x)
+ end
+end
+
+def fun_l13_n31(x)
+ if (x < 1)
+ fun_l14_n328(x)
+ else
+ fun_l14_n857(x)
+ end
+end
+
+def fun_l13_n32(x)
+ if (x < 1)
+ fun_l14_n367(x)
+ else
+ fun_l14_n441(x)
+ end
+end
+
+def fun_l13_n33(x)
+ if (x < 1)
+ fun_l14_n322(x)
+ else
+ fun_l14_n390(x)
+ end
+end
+
+def fun_l13_n34(x)
+ if (x < 1)
+ fun_l14_n935(x)
+ else
+ fun_l14_n46(x)
+ end
+end
+
+def fun_l13_n35(x)
+ if (x < 1)
+ fun_l14_n274(x)
+ else
+ fun_l14_n536(x)
+ end
+end
+
+def fun_l13_n36(x)
+ if (x < 1)
+ fun_l14_n645(x)
+ else
+ fun_l14_n396(x)
+ end
+end
+
+def fun_l13_n37(x)
+ if (x < 1)
+ fun_l14_n905(x)
+ else
+ fun_l14_n19(x)
+ end
+end
+
+def fun_l13_n38(x)
+ if (x < 1)
+ fun_l14_n562(x)
+ else
+ fun_l14_n983(x)
+ end
+end
+
+def fun_l13_n39(x)
+ if (x < 1)
+ fun_l14_n846(x)
+ else
+ fun_l14_n140(x)
+ end
+end
+
+def fun_l13_n40(x)
+ if (x < 1)
+ fun_l14_n308(x)
+ else
+ fun_l14_n968(x)
+ end
+end
+
+def fun_l13_n41(x)
+ if (x < 1)
+ fun_l14_n299(x)
+ else
+ fun_l14_n364(x)
+ end
+end
+
+def fun_l13_n42(x)
+ if (x < 1)
+ fun_l14_n266(x)
+ else
+ fun_l14_n368(x)
+ end
+end
+
+def fun_l13_n43(x)
+ if (x < 1)
+ fun_l14_n216(x)
+ else
+ fun_l14_n894(x)
+ end
+end
+
+def fun_l13_n44(x)
+ if (x < 1)
+ fun_l14_n30(x)
+ else
+ fun_l14_n118(x)
+ end
+end
+
+def fun_l13_n45(x)
+ if (x < 1)
+ fun_l14_n66(x)
+ else
+ fun_l14_n677(x)
+ end
+end
+
+def fun_l13_n46(x)
+ if (x < 1)
+ fun_l14_n415(x)
+ else
+ fun_l14_n311(x)
+ end
+end
+
+def fun_l13_n47(x)
+ if (x < 1)
+ fun_l14_n63(x)
+ else
+ fun_l14_n410(x)
+ end
+end
+
+def fun_l13_n48(x)
+ if (x < 1)
+ fun_l14_n640(x)
+ else
+ fun_l14_n161(x)
+ end
+end
+
+def fun_l13_n49(x)
+ if (x < 1)
+ fun_l14_n546(x)
+ else
+ fun_l14_n655(x)
+ end
+end
+
+def fun_l13_n50(x)
+ if (x < 1)
+ fun_l14_n102(x)
+ else
+ fun_l14_n791(x)
+ end
+end
+
+def fun_l13_n51(x)
+ if (x < 1)
+ fun_l14_n333(x)
+ else
+ fun_l14_n641(x)
+ end
+end
+
+def fun_l13_n52(x)
+ if (x < 1)
+ fun_l14_n16(x)
+ else
+ fun_l14_n653(x)
+ end
+end
+
+def fun_l13_n53(x)
+ if (x < 1)
+ fun_l14_n842(x)
+ else
+ fun_l14_n780(x)
+ end
+end
+
+def fun_l13_n54(x)
+ if (x < 1)
+ fun_l14_n663(x)
+ else
+ fun_l14_n903(x)
+ end
+end
+
+def fun_l13_n55(x)
+ if (x < 1)
+ fun_l14_n745(x)
+ else
+ fun_l14_n925(x)
+ end
+end
+
+def fun_l13_n56(x)
+ if (x < 1)
+ fun_l14_n688(x)
+ else
+ fun_l14_n930(x)
+ end
+end
+
+def fun_l13_n57(x)
+ if (x < 1)
+ fun_l14_n58(x)
+ else
+ fun_l14_n864(x)
+ end
+end
+
+def fun_l13_n58(x)
+ if (x < 1)
+ fun_l14_n107(x)
+ else
+ fun_l14_n197(x)
+ end
+end
+
+def fun_l13_n59(x)
+ if (x < 1)
+ fun_l14_n334(x)
+ else
+ fun_l14_n147(x)
+ end
+end
+
+def fun_l13_n60(x)
+ if (x < 1)
+ fun_l14_n814(x)
+ else
+ fun_l14_n417(x)
+ end
+end
+
+def fun_l13_n61(x)
+ if (x < 1)
+ fun_l14_n696(x)
+ else
+ fun_l14_n973(x)
+ end
+end
+
+def fun_l13_n62(x)
+ if (x < 1)
+ fun_l14_n378(x)
+ else
+ fun_l14_n968(x)
+ end
+end
+
+def fun_l13_n63(x)
+ if (x < 1)
+ fun_l14_n107(x)
+ else
+ fun_l14_n100(x)
+ end
+end
+
+def fun_l13_n64(x)
+ if (x < 1)
+ fun_l14_n105(x)
+ else
+ fun_l14_n393(x)
+ end
+end
+
+def fun_l13_n65(x)
+ if (x < 1)
+ fun_l14_n833(x)
+ else
+ fun_l14_n424(x)
+ end
+end
+
+def fun_l13_n66(x)
+ if (x < 1)
+ fun_l14_n125(x)
+ else
+ fun_l14_n697(x)
+ end
+end
+
+def fun_l13_n67(x)
+ if (x < 1)
+ fun_l14_n684(x)
+ else
+ fun_l14_n458(x)
+ end
+end
+
+def fun_l13_n68(x)
+ if (x < 1)
+ fun_l14_n301(x)
+ else
+ fun_l14_n711(x)
+ end
+end
+
+def fun_l13_n69(x)
+ if (x < 1)
+ fun_l14_n131(x)
+ else
+ fun_l14_n552(x)
+ end
+end
+
+def fun_l13_n70(x)
+ if (x < 1)
+ fun_l14_n425(x)
+ else
+ fun_l14_n241(x)
+ end
+end
+
+def fun_l13_n71(x)
+ if (x < 1)
+ fun_l14_n531(x)
+ else
+ fun_l14_n364(x)
+ end
+end
+
+def fun_l13_n72(x)
+ if (x < 1)
+ fun_l14_n801(x)
+ else
+ fun_l14_n951(x)
+ end
+end
+
+def fun_l13_n73(x)
+ if (x < 1)
+ fun_l14_n415(x)
+ else
+ fun_l14_n294(x)
+ end
+end
+
+def fun_l13_n74(x)
+ if (x < 1)
+ fun_l14_n715(x)
+ else
+ fun_l14_n606(x)
+ end
+end
+
+def fun_l13_n75(x)
+ if (x < 1)
+ fun_l14_n932(x)
+ else
+ fun_l14_n928(x)
+ end
+end
+
+def fun_l13_n76(x)
+ if (x < 1)
+ fun_l14_n930(x)
+ else
+ fun_l14_n102(x)
+ end
+end
+
+def fun_l13_n77(x)
+ if (x < 1)
+ fun_l14_n293(x)
+ else
+ fun_l14_n301(x)
+ end
+end
+
+def fun_l13_n78(x)
+ if (x < 1)
+ fun_l14_n270(x)
+ else
+ fun_l14_n715(x)
+ end
+end
+
+def fun_l13_n79(x)
+ if (x < 1)
+ fun_l14_n862(x)
+ else
+ fun_l14_n589(x)
+ end
+end
+
+def fun_l13_n80(x)
+ if (x < 1)
+ fun_l14_n337(x)
+ else
+ fun_l14_n940(x)
+ end
+end
+
+def fun_l13_n81(x)
+ if (x < 1)
+ fun_l14_n394(x)
+ else
+ fun_l14_n902(x)
+ end
+end
+
+def fun_l13_n82(x)
+ if (x < 1)
+ fun_l14_n468(x)
+ else
+ fun_l14_n816(x)
+ end
+end
+
+def fun_l13_n83(x)
+ if (x < 1)
+ fun_l14_n517(x)
+ else
+ fun_l14_n633(x)
+ end
+end
+
+def fun_l13_n84(x)
+ if (x < 1)
+ fun_l14_n312(x)
+ else
+ fun_l14_n473(x)
+ end
+end
+
+def fun_l13_n85(x)
+ if (x < 1)
+ fun_l14_n377(x)
+ else
+ fun_l14_n616(x)
+ end
+end
+
+def fun_l13_n86(x)
+ if (x < 1)
+ fun_l14_n541(x)
+ else
+ fun_l14_n77(x)
+ end
+end
+
+def fun_l13_n87(x)
+ if (x < 1)
+ fun_l14_n66(x)
+ else
+ fun_l14_n162(x)
+ end
+end
+
+def fun_l13_n88(x)
+ if (x < 1)
+ fun_l14_n202(x)
+ else
+ fun_l14_n158(x)
+ end
+end
+
+def fun_l13_n89(x)
+ if (x < 1)
+ fun_l14_n549(x)
+ else
+ fun_l14_n947(x)
+ end
+end
+
+def fun_l13_n90(x)
+ if (x < 1)
+ fun_l14_n82(x)
+ else
+ fun_l14_n747(x)
+ end
+end
+
+def fun_l13_n91(x)
+ if (x < 1)
+ fun_l14_n374(x)
+ else
+ fun_l14_n738(x)
+ end
+end
+
+def fun_l13_n92(x)
+ if (x < 1)
+ fun_l14_n124(x)
+ else
+ fun_l14_n673(x)
+ end
+end
+
+def fun_l13_n93(x)
+ if (x < 1)
+ fun_l14_n405(x)
+ else
+ fun_l14_n562(x)
+ end
+end
+
+def fun_l13_n94(x)
+ if (x < 1)
+ fun_l14_n766(x)
+ else
+ fun_l14_n466(x)
+ end
+end
+
+def fun_l13_n95(x)
+ if (x < 1)
+ fun_l14_n908(x)
+ else
+ fun_l14_n208(x)
+ end
+end
+
+def fun_l13_n96(x)
+ if (x < 1)
+ fun_l14_n439(x)
+ else
+ fun_l14_n964(x)
+ end
+end
+
+def fun_l13_n97(x)
+ if (x < 1)
+ fun_l14_n529(x)
+ else
+ fun_l14_n374(x)
+ end
+end
+
+def fun_l13_n98(x)
+ if (x < 1)
+ fun_l14_n723(x)
+ else
+ fun_l14_n464(x)
+ end
+end
+
+def fun_l13_n99(x)
+ if (x < 1)
+ fun_l14_n849(x)
+ else
+ fun_l14_n951(x)
+ end
+end
+
+def fun_l13_n100(x)
+ if (x < 1)
+ fun_l14_n797(x)
+ else
+ fun_l14_n421(x)
+ end
+end
+
+def fun_l13_n101(x)
+ if (x < 1)
+ fun_l14_n989(x)
+ else
+ fun_l14_n392(x)
+ end
+end
+
+def fun_l13_n102(x)
+ if (x < 1)
+ fun_l14_n8(x)
+ else
+ fun_l14_n913(x)
+ end
+end
+
+def fun_l13_n103(x)
+ if (x < 1)
+ fun_l14_n498(x)
+ else
+ fun_l14_n248(x)
+ end
+end
+
+def fun_l13_n104(x)
+ if (x < 1)
+ fun_l14_n989(x)
+ else
+ fun_l14_n83(x)
+ end
+end
+
+def fun_l13_n105(x)
+ if (x < 1)
+ fun_l14_n943(x)
+ else
+ fun_l14_n358(x)
+ end
+end
+
+def fun_l13_n106(x)
+ if (x < 1)
+ fun_l14_n252(x)
+ else
+ fun_l14_n626(x)
+ end
+end
+
+def fun_l13_n107(x)
+ if (x < 1)
+ fun_l14_n495(x)
+ else
+ fun_l14_n627(x)
+ end
+end
+
+def fun_l13_n108(x)
+ if (x < 1)
+ fun_l14_n286(x)
+ else
+ fun_l14_n500(x)
+ end
+end
+
+def fun_l13_n109(x)
+ if (x < 1)
+ fun_l14_n927(x)
+ else
+ fun_l14_n627(x)
+ end
+end
+
+def fun_l13_n110(x)
+ if (x < 1)
+ fun_l14_n103(x)
+ else
+ fun_l14_n319(x)
+ end
+end
+
+def fun_l13_n111(x)
+ if (x < 1)
+ fun_l14_n730(x)
+ else
+ fun_l14_n960(x)
+ end
+end
+
+def fun_l13_n112(x)
+ if (x < 1)
+ fun_l14_n188(x)
+ else
+ fun_l14_n145(x)
+ end
+end
+
+def fun_l13_n113(x)
+ if (x < 1)
+ fun_l14_n361(x)
+ else
+ fun_l14_n707(x)
+ end
+end
+
+def fun_l13_n114(x)
+ if (x < 1)
+ fun_l14_n629(x)
+ else
+ fun_l14_n536(x)
+ end
+end
+
+def fun_l13_n115(x)
+ if (x < 1)
+ fun_l14_n276(x)
+ else
+ fun_l14_n244(x)
+ end
+end
+
+def fun_l13_n116(x)
+ if (x < 1)
+ fun_l14_n512(x)
+ else
+ fun_l14_n578(x)
+ end
+end
+
+def fun_l13_n117(x)
+ if (x < 1)
+ fun_l14_n448(x)
+ else
+ fun_l14_n437(x)
+ end
+end
+
+def fun_l13_n118(x)
+ if (x < 1)
+ fun_l14_n855(x)
+ else
+ fun_l14_n617(x)
+ end
+end
+
+def fun_l13_n119(x)
+ if (x < 1)
+ fun_l14_n467(x)
+ else
+ fun_l14_n594(x)
+ end
+end
+
+def fun_l13_n120(x)
+ if (x < 1)
+ fun_l14_n54(x)
+ else
+ fun_l14_n765(x)
+ end
+end
+
+def fun_l13_n121(x)
+ if (x < 1)
+ fun_l14_n700(x)
+ else
+ fun_l14_n189(x)
+ end
+end
+
+def fun_l13_n122(x)
+ if (x < 1)
+ fun_l14_n731(x)
+ else
+ fun_l14_n469(x)
+ end
+end
+
+def fun_l13_n123(x)
+ if (x < 1)
+ fun_l14_n6(x)
+ else
+ fun_l14_n451(x)
+ end
+end
+
+def fun_l13_n124(x)
+ if (x < 1)
+ fun_l14_n402(x)
+ else
+ fun_l14_n445(x)
+ end
+end
+
+def fun_l13_n125(x)
+ if (x < 1)
+ fun_l14_n412(x)
+ else
+ fun_l14_n551(x)
+ end
+end
+
+def fun_l13_n126(x)
+ if (x < 1)
+ fun_l14_n295(x)
+ else
+ fun_l14_n180(x)
+ end
+end
+
+def fun_l13_n127(x)
+ if (x < 1)
+ fun_l14_n873(x)
+ else
+ fun_l14_n209(x)
+ end
+end
+
+def fun_l13_n128(x)
+ if (x < 1)
+ fun_l14_n181(x)
+ else
+ fun_l14_n198(x)
+ end
+end
+
+def fun_l13_n129(x)
+ if (x < 1)
+ fun_l14_n817(x)
+ else
+ fun_l14_n894(x)
+ end
+end
+
+def fun_l13_n130(x)
+ if (x < 1)
+ fun_l14_n306(x)
+ else
+ fun_l14_n429(x)
+ end
+end
+
+def fun_l13_n131(x)
+ if (x < 1)
+ fun_l14_n573(x)
+ else
+ fun_l14_n120(x)
+ end
+end
+
+def fun_l13_n132(x)
+ if (x < 1)
+ fun_l14_n433(x)
+ else
+ fun_l14_n668(x)
+ end
+end
+
+def fun_l13_n133(x)
+ if (x < 1)
+ fun_l14_n653(x)
+ else
+ fun_l14_n934(x)
+ end
+end
+
+def fun_l13_n134(x)
+ if (x < 1)
+ fun_l14_n280(x)
+ else
+ fun_l14_n533(x)
+ end
+end
+
+def fun_l13_n135(x)
+ if (x < 1)
+ fun_l14_n471(x)
+ else
+ fun_l14_n612(x)
+ end
+end
+
+def fun_l13_n136(x)
+ if (x < 1)
+ fun_l14_n55(x)
+ else
+ fun_l14_n684(x)
+ end
+end
+
+def fun_l13_n137(x)
+ if (x < 1)
+ fun_l14_n458(x)
+ else
+ fun_l14_n107(x)
+ end
+end
+
+def fun_l13_n138(x)
+ if (x < 1)
+ fun_l14_n415(x)
+ else
+ fun_l14_n189(x)
+ end
+end
+
+def fun_l13_n139(x)
+ if (x < 1)
+ fun_l14_n877(x)
+ else
+ fun_l14_n862(x)
+ end
+end
+
+def fun_l13_n140(x)
+ if (x < 1)
+ fun_l14_n471(x)
+ else
+ fun_l14_n533(x)
+ end
+end
+
+def fun_l13_n141(x)
+ if (x < 1)
+ fun_l14_n817(x)
+ else
+ fun_l14_n121(x)
+ end
+end
+
+def fun_l13_n142(x)
+ if (x < 1)
+ fun_l14_n523(x)
+ else
+ fun_l14_n894(x)
+ end
+end
+
+def fun_l13_n143(x)
+ if (x < 1)
+ fun_l14_n893(x)
+ else
+ fun_l14_n187(x)
+ end
+end
+
+def fun_l13_n144(x)
+ if (x < 1)
+ fun_l14_n921(x)
+ else
+ fun_l14_n253(x)
+ end
+end
+
+def fun_l13_n145(x)
+ if (x < 1)
+ fun_l14_n0(x)
+ else
+ fun_l14_n608(x)
+ end
+end
+
+def fun_l13_n146(x)
+ if (x < 1)
+ fun_l14_n83(x)
+ else
+ fun_l14_n450(x)
+ end
+end
+
+def fun_l13_n147(x)
+ if (x < 1)
+ fun_l14_n689(x)
+ else
+ fun_l14_n19(x)
+ end
+end
+
+def fun_l13_n148(x)
+ if (x < 1)
+ fun_l14_n922(x)
+ else
+ fun_l14_n417(x)
+ end
+end
+
+def fun_l13_n149(x)
+ if (x < 1)
+ fun_l14_n449(x)
+ else
+ fun_l14_n273(x)
+ end
+end
+
+def fun_l13_n150(x)
+ if (x < 1)
+ fun_l14_n601(x)
+ else
+ fun_l14_n442(x)
+ end
+end
+
+def fun_l13_n151(x)
+ if (x < 1)
+ fun_l14_n96(x)
+ else
+ fun_l14_n552(x)
+ end
+end
+
+def fun_l13_n152(x)
+ if (x < 1)
+ fun_l14_n667(x)
+ else
+ fun_l14_n273(x)
+ end
+end
+
+def fun_l13_n153(x)
+ if (x < 1)
+ fun_l14_n445(x)
+ else
+ fun_l14_n81(x)
+ end
+end
+
+def fun_l13_n154(x)
+ if (x < 1)
+ fun_l14_n906(x)
+ else
+ fun_l14_n960(x)
+ end
+end
+
+def fun_l13_n155(x)
+ if (x < 1)
+ fun_l14_n781(x)
+ else
+ fun_l14_n763(x)
+ end
+end
+
+def fun_l13_n156(x)
+ if (x < 1)
+ fun_l14_n201(x)
+ else
+ fun_l14_n886(x)
+ end
+end
+
+def fun_l13_n157(x)
+ if (x < 1)
+ fun_l14_n926(x)
+ else
+ fun_l14_n852(x)
+ end
+end
+
+def fun_l13_n158(x)
+ if (x < 1)
+ fun_l14_n114(x)
+ else
+ fun_l14_n23(x)
+ end
+end
+
+def fun_l13_n159(x)
+ if (x < 1)
+ fun_l14_n967(x)
+ else
+ fun_l14_n885(x)
+ end
+end
+
+def fun_l13_n160(x)
+ if (x < 1)
+ fun_l14_n563(x)
+ else
+ fun_l14_n309(x)
+ end
+end
+
+def fun_l13_n161(x)
+ if (x < 1)
+ fun_l14_n26(x)
+ else
+ fun_l14_n232(x)
+ end
+end
+
+def fun_l13_n162(x)
+ if (x < 1)
+ fun_l14_n212(x)
+ else
+ fun_l14_n147(x)
+ end
+end
+
+def fun_l13_n163(x)
+ if (x < 1)
+ fun_l14_n841(x)
+ else
+ fun_l14_n636(x)
+ end
+end
+
+def fun_l13_n164(x)
+ if (x < 1)
+ fun_l14_n405(x)
+ else
+ fun_l14_n709(x)
+ end
+end
+
+def fun_l13_n165(x)
+ if (x < 1)
+ fun_l14_n803(x)
+ else
+ fun_l14_n398(x)
+ end
+end
+
+def fun_l13_n166(x)
+ if (x < 1)
+ fun_l14_n112(x)
+ else
+ fun_l14_n197(x)
+ end
+end
+
+def fun_l13_n167(x)
+ if (x < 1)
+ fun_l14_n414(x)
+ else
+ fun_l14_n509(x)
+ end
+end
+
+def fun_l13_n168(x)
+ if (x < 1)
+ fun_l14_n585(x)
+ else
+ fun_l14_n166(x)
+ end
+end
+
+def fun_l13_n169(x)
+ if (x < 1)
+ fun_l14_n653(x)
+ else
+ fun_l14_n581(x)
+ end
+end
+
+def fun_l13_n170(x)
+ if (x < 1)
+ fun_l14_n291(x)
+ else
+ fun_l14_n520(x)
+ end
+end
+
+def fun_l13_n171(x)
+ if (x < 1)
+ fun_l14_n920(x)
+ else
+ fun_l14_n599(x)
+ end
+end
+
+def fun_l13_n172(x)
+ if (x < 1)
+ fun_l14_n125(x)
+ else
+ fun_l14_n84(x)
+ end
+end
+
+def fun_l13_n173(x)
+ if (x < 1)
+ fun_l14_n635(x)
+ else
+ fun_l14_n224(x)
+ end
+end
+
+def fun_l13_n174(x)
+ if (x < 1)
+ fun_l14_n23(x)
+ else
+ fun_l14_n922(x)
+ end
+end
+
+def fun_l13_n175(x)
+ if (x < 1)
+ fun_l14_n736(x)
+ else
+ fun_l14_n685(x)
+ end
+end
+
+def fun_l13_n176(x)
+ if (x < 1)
+ fun_l14_n235(x)
+ else
+ fun_l14_n157(x)
+ end
+end
+
+def fun_l13_n177(x)
+ if (x < 1)
+ fun_l14_n284(x)
+ else
+ fun_l14_n601(x)
+ end
+end
+
+def fun_l13_n178(x)
+ if (x < 1)
+ fun_l14_n785(x)
+ else
+ fun_l14_n498(x)
+ end
+end
+
+def fun_l13_n179(x)
+ if (x < 1)
+ fun_l14_n416(x)
+ else
+ fun_l14_n624(x)
+ end
+end
+
+def fun_l13_n180(x)
+ if (x < 1)
+ fun_l14_n747(x)
+ else
+ fun_l14_n824(x)
+ end
+end
+
+def fun_l13_n181(x)
+ if (x < 1)
+ fun_l14_n658(x)
+ else
+ fun_l14_n814(x)
+ end
+end
+
+def fun_l13_n182(x)
+ if (x < 1)
+ fun_l14_n723(x)
+ else
+ fun_l14_n365(x)
+ end
+end
+
+def fun_l13_n183(x)
+ if (x < 1)
+ fun_l14_n772(x)
+ else
+ fun_l14_n831(x)
+ end
+end
+
+def fun_l13_n184(x)
+ if (x < 1)
+ fun_l14_n560(x)
+ else
+ fun_l14_n933(x)
+ end
+end
+
+def fun_l13_n185(x)
+ if (x < 1)
+ fun_l14_n550(x)
+ else
+ fun_l14_n716(x)
+ end
+end
+
+def fun_l13_n186(x)
+ if (x < 1)
+ fun_l14_n72(x)
+ else
+ fun_l14_n224(x)
+ end
+end
+
+def fun_l13_n187(x)
+ if (x < 1)
+ fun_l14_n910(x)
+ else
+ fun_l14_n31(x)
+ end
+end
+
+def fun_l13_n188(x)
+ if (x < 1)
+ fun_l14_n792(x)
+ else
+ fun_l14_n69(x)
+ end
+end
+
+def fun_l13_n189(x)
+ if (x < 1)
+ fun_l14_n42(x)
+ else
+ fun_l14_n942(x)
+ end
+end
+
+def fun_l13_n190(x)
+ if (x < 1)
+ fun_l14_n520(x)
+ else
+ fun_l14_n826(x)
+ end
+end
+
+def fun_l13_n191(x)
+ if (x < 1)
+ fun_l14_n723(x)
+ else
+ fun_l14_n5(x)
+ end
+end
+
+def fun_l13_n192(x)
+ if (x < 1)
+ fun_l14_n448(x)
+ else
+ fun_l14_n243(x)
+ end
+end
+
+def fun_l13_n193(x)
+ if (x < 1)
+ fun_l14_n722(x)
+ else
+ fun_l14_n450(x)
+ end
+end
+
+def fun_l13_n194(x)
+ if (x < 1)
+ fun_l14_n31(x)
+ else
+ fun_l14_n968(x)
+ end
+end
+
+def fun_l13_n195(x)
+ if (x < 1)
+ fun_l14_n381(x)
+ else
+ fun_l14_n964(x)
+ end
+end
+
+def fun_l13_n196(x)
+ if (x < 1)
+ fun_l14_n797(x)
+ else
+ fun_l14_n216(x)
+ end
+end
+
+def fun_l13_n197(x)
+ if (x < 1)
+ fun_l14_n351(x)
+ else
+ fun_l14_n439(x)
+ end
+end
+
+def fun_l13_n198(x)
+ if (x < 1)
+ fun_l14_n983(x)
+ else
+ fun_l14_n363(x)
+ end
+end
+
+def fun_l13_n199(x)
+ if (x < 1)
+ fun_l14_n939(x)
+ else
+ fun_l14_n806(x)
+ end
+end
+
+def fun_l13_n200(x)
+ if (x < 1)
+ fun_l14_n710(x)
+ else
+ fun_l14_n513(x)
+ end
+end
+
+def fun_l13_n201(x)
+ if (x < 1)
+ fun_l14_n431(x)
+ else
+ fun_l14_n81(x)
+ end
+end
+
+def fun_l13_n202(x)
+ if (x < 1)
+ fun_l14_n41(x)
+ else
+ fun_l14_n916(x)
+ end
+end
+
+def fun_l13_n203(x)
+ if (x < 1)
+ fun_l14_n368(x)
+ else
+ fun_l14_n626(x)
+ end
+end
+
+def fun_l13_n204(x)
+ if (x < 1)
+ fun_l14_n505(x)
+ else
+ fun_l14_n750(x)
+ end
+end
+
+def fun_l13_n205(x)
+ if (x < 1)
+ fun_l14_n263(x)
+ else
+ fun_l14_n636(x)
+ end
+end
+
+def fun_l13_n206(x)
+ if (x < 1)
+ fun_l14_n589(x)
+ else
+ fun_l14_n215(x)
+ end
+end
+
+def fun_l13_n207(x)
+ if (x < 1)
+ fun_l14_n435(x)
+ else
+ fun_l14_n69(x)
+ end
+end
+
+def fun_l13_n208(x)
+ if (x < 1)
+ fun_l14_n114(x)
+ else
+ fun_l14_n222(x)
+ end
+end
+
+def fun_l13_n209(x)
+ if (x < 1)
+ fun_l14_n784(x)
+ else
+ fun_l14_n337(x)
+ end
+end
+
+def fun_l13_n210(x)
+ if (x < 1)
+ fun_l14_n434(x)
+ else
+ fun_l14_n79(x)
+ end
+end
+
+def fun_l13_n211(x)
+ if (x < 1)
+ fun_l14_n152(x)
+ else
+ fun_l14_n428(x)
+ end
+end
+
+def fun_l13_n212(x)
+ if (x < 1)
+ fun_l14_n24(x)
+ else
+ fun_l14_n101(x)
+ end
+end
+
+def fun_l13_n213(x)
+ if (x < 1)
+ fun_l14_n880(x)
+ else
+ fun_l14_n672(x)
+ end
+end
+
+def fun_l13_n214(x)
+ if (x < 1)
+ fun_l14_n824(x)
+ else
+ fun_l14_n351(x)
+ end
+end
+
+def fun_l13_n215(x)
+ if (x < 1)
+ fun_l14_n657(x)
+ else
+ fun_l14_n822(x)
+ end
+end
+
+def fun_l13_n216(x)
+ if (x < 1)
+ fun_l14_n603(x)
+ else
+ fun_l14_n993(x)
+ end
+end
+
+def fun_l13_n217(x)
+ if (x < 1)
+ fun_l14_n593(x)
+ else
+ fun_l14_n808(x)
+ end
+end
+
+def fun_l13_n218(x)
+ if (x < 1)
+ fun_l14_n30(x)
+ else
+ fun_l14_n632(x)
+ end
+end
+
+def fun_l13_n219(x)
+ if (x < 1)
+ fun_l14_n175(x)
+ else
+ fun_l14_n124(x)
+ end
+end
+
+def fun_l13_n220(x)
+ if (x < 1)
+ fun_l14_n878(x)
+ else
+ fun_l14_n342(x)
+ end
+end
+
+def fun_l13_n221(x)
+ if (x < 1)
+ fun_l14_n857(x)
+ else
+ fun_l14_n204(x)
+ end
+end
+
+def fun_l13_n222(x)
+ if (x < 1)
+ fun_l14_n29(x)
+ else
+ fun_l14_n573(x)
+ end
+end
+
+def fun_l13_n223(x)
+ if (x < 1)
+ fun_l14_n329(x)
+ else
+ fun_l14_n35(x)
+ end
+end
+
+def fun_l13_n224(x)
+ if (x < 1)
+ fun_l14_n31(x)
+ else
+ fun_l14_n323(x)
+ end
+end
+
+def fun_l13_n225(x)
+ if (x < 1)
+ fun_l14_n921(x)
+ else
+ fun_l14_n161(x)
+ end
+end
+
+def fun_l13_n226(x)
+ if (x < 1)
+ fun_l14_n599(x)
+ else
+ fun_l14_n566(x)
+ end
+end
+
+def fun_l13_n227(x)
+ if (x < 1)
+ fun_l14_n994(x)
+ else
+ fun_l14_n549(x)
+ end
+end
+
+def fun_l13_n228(x)
+ if (x < 1)
+ fun_l14_n989(x)
+ else
+ fun_l14_n212(x)
+ end
+end
+
+def fun_l13_n229(x)
+ if (x < 1)
+ fun_l14_n22(x)
+ else
+ fun_l14_n656(x)
+ end
+end
+
+def fun_l13_n230(x)
+ if (x < 1)
+ fun_l14_n232(x)
+ else
+ fun_l14_n658(x)
+ end
+end
+
+def fun_l13_n231(x)
+ if (x < 1)
+ fun_l14_n522(x)
+ else
+ fun_l14_n596(x)
+ end
+end
+
+def fun_l13_n232(x)
+ if (x < 1)
+ fun_l14_n296(x)
+ else
+ fun_l14_n53(x)
+ end
+end
+
+def fun_l13_n233(x)
+ if (x < 1)
+ fun_l14_n958(x)
+ else
+ fun_l14_n818(x)
+ end
+end
+
+def fun_l13_n234(x)
+ if (x < 1)
+ fun_l14_n267(x)
+ else
+ fun_l14_n299(x)
+ end
+end
+
+def fun_l13_n235(x)
+ if (x < 1)
+ fun_l14_n776(x)
+ else
+ fun_l14_n99(x)
+ end
+end
+
+def fun_l13_n236(x)
+ if (x < 1)
+ fun_l14_n204(x)
+ else
+ fun_l14_n34(x)
+ end
+end
+
+def fun_l13_n237(x)
+ if (x < 1)
+ fun_l14_n704(x)
+ else
+ fun_l14_n808(x)
+ end
+end
+
+def fun_l13_n238(x)
+ if (x < 1)
+ fun_l14_n82(x)
+ else
+ fun_l14_n352(x)
+ end
+end
+
+def fun_l13_n239(x)
+ if (x < 1)
+ fun_l14_n382(x)
+ else
+ fun_l14_n447(x)
+ end
+end
+
+def fun_l13_n240(x)
+ if (x < 1)
+ fun_l14_n200(x)
+ else
+ fun_l14_n623(x)
+ end
+end
+
+def fun_l13_n241(x)
+ if (x < 1)
+ fun_l14_n563(x)
+ else
+ fun_l14_n259(x)
+ end
+end
+
+def fun_l13_n242(x)
+ if (x < 1)
+ fun_l14_n126(x)
+ else
+ fun_l14_n337(x)
+ end
+end
+
+def fun_l13_n243(x)
+ if (x < 1)
+ fun_l14_n287(x)
+ else
+ fun_l14_n441(x)
+ end
+end
+
+def fun_l13_n244(x)
+ if (x < 1)
+ fun_l14_n271(x)
+ else
+ fun_l14_n961(x)
+ end
+end
+
+def fun_l13_n245(x)
+ if (x < 1)
+ fun_l14_n677(x)
+ else
+ fun_l14_n310(x)
+ end
+end
+
+def fun_l13_n246(x)
+ if (x < 1)
+ fun_l14_n504(x)
+ else
+ fun_l14_n504(x)
+ end
+end
+
+def fun_l13_n247(x)
+ if (x < 1)
+ fun_l14_n61(x)
+ else
+ fun_l14_n560(x)
+ end
+end
+
+def fun_l13_n248(x)
+ if (x < 1)
+ fun_l14_n813(x)
+ else
+ fun_l14_n337(x)
+ end
+end
+
+def fun_l13_n249(x)
+ if (x < 1)
+ fun_l14_n89(x)
+ else
+ fun_l14_n733(x)
+ end
+end
+
+def fun_l13_n250(x)
+ if (x < 1)
+ fun_l14_n203(x)
+ else
+ fun_l14_n342(x)
+ end
+end
+
+def fun_l13_n251(x)
+ if (x < 1)
+ fun_l14_n605(x)
+ else
+ fun_l14_n767(x)
+ end
+end
+
+def fun_l13_n252(x)
+ if (x < 1)
+ fun_l14_n35(x)
+ else
+ fun_l14_n338(x)
+ end
+end
+
+def fun_l13_n253(x)
+ if (x < 1)
+ fun_l14_n894(x)
+ else
+ fun_l14_n905(x)
+ end
+end
+
+def fun_l13_n254(x)
+ if (x < 1)
+ fun_l14_n516(x)
+ else
+ fun_l14_n832(x)
+ end
+end
+
+def fun_l13_n255(x)
+ if (x < 1)
+ fun_l14_n106(x)
+ else
+ fun_l14_n672(x)
+ end
+end
+
+def fun_l13_n256(x)
+ if (x < 1)
+ fun_l14_n978(x)
+ else
+ fun_l14_n940(x)
+ end
+end
+
+def fun_l13_n257(x)
+ if (x < 1)
+ fun_l14_n808(x)
+ else
+ fun_l14_n906(x)
+ end
+end
+
+def fun_l13_n258(x)
+ if (x < 1)
+ fun_l14_n435(x)
+ else
+ fun_l14_n55(x)
+ end
+end
+
+def fun_l13_n259(x)
+ if (x < 1)
+ fun_l14_n981(x)
+ else
+ fun_l14_n550(x)
+ end
+end
+
+def fun_l13_n260(x)
+ if (x < 1)
+ fun_l14_n689(x)
+ else
+ fun_l14_n533(x)
+ end
+end
+
+def fun_l13_n261(x)
+ if (x < 1)
+ fun_l14_n995(x)
+ else
+ fun_l14_n174(x)
+ end
+end
+
+def fun_l13_n262(x)
+ if (x < 1)
+ fun_l14_n161(x)
+ else
+ fun_l14_n357(x)
+ end
+end
+
+def fun_l13_n263(x)
+ if (x < 1)
+ fun_l14_n248(x)
+ else
+ fun_l14_n509(x)
+ end
+end
+
+def fun_l13_n264(x)
+ if (x < 1)
+ fun_l14_n521(x)
+ else
+ fun_l14_n41(x)
+ end
+end
+
+def fun_l13_n265(x)
+ if (x < 1)
+ fun_l14_n771(x)
+ else
+ fun_l14_n387(x)
+ end
+end
+
+def fun_l13_n266(x)
+ if (x < 1)
+ fun_l14_n149(x)
+ else
+ fun_l14_n814(x)
+ end
+end
+
+def fun_l13_n267(x)
+ if (x < 1)
+ fun_l14_n958(x)
+ else
+ fun_l14_n172(x)
+ end
+end
+
+def fun_l13_n268(x)
+ if (x < 1)
+ fun_l14_n167(x)
+ else
+ fun_l14_n889(x)
+ end
+end
+
+def fun_l13_n269(x)
+ if (x < 1)
+ fun_l14_n321(x)
+ else
+ fun_l14_n152(x)
+ end
+end
+
+def fun_l13_n270(x)
+ if (x < 1)
+ fun_l14_n851(x)
+ else
+ fun_l14_n793(x)
+ end
+end
+
+def fun_l13_n271(x)
+ if (x < 1)
+ fun_l14_n306(x)
+ else
+ fun_l14_n843(x)
+ end
+end
+
+def fun_l13_n272(x)
+ if (x < 1)
+ fun_l14_n499(x)
+ else
+ fun_l14_n118(x)
+ end
+end
+
+def fun_l13_n273(x)
+ if (x < 1)
+ fun_l14_n958(x)
+ else
+ fun_l14_n597(x)
+ end
+end
+
+def fun_l13_n274(x)
+ if (x < 1)
+ fun_l14_n884(x)
+ else
+ fun_l14_n23(x)
+ end
+end
+
+def fun_l13_n275(x)
+ if (x < 1)
+ fun_l14_n203(x)
+ else
+ fun_l14_n796(x)
+ end
+end
+
+def fun_l13_n276(x)
+ if (x < 1)
+ fun_l14_n944(x)
+ else
+ fun_l14_n239(x)
+ end
+end
+
+def fun_l13_n277(x)
+ if (x < 1)
+ fun_l14_n511(x)
+ else
+ fun_l14_n464(x)
+ end
+end
+
+def fun_l13_n278(x)
+ if (x < 1)
+ fun_l14_n906(x)
+ else
+ fun_l14_n713(x)
+ end
+end
+
+def fun_l13_n279(x)
+ if (x < 1)
+ fun_l14_n872(x)
+ else
+ fun_l14_n77(x)
+ end
+end
+
+def fun_l13_n280(x)
+ if (x < 1)
+ fun_l14_n888(x)
+ else
+ fun_l14_n117(x)
+ end
+end
+
+def fun_l13_n281(x)
+ if (x < 1)
+ fun_l14_n298(x)
+ else
+ fun_l14_n695(x)
+ end
+end
+
+def fun_l13_n282(x)
+ if (x < 1)
+ fun_l14_n740(x)
+ else
+ fun_l14_n668(x)
+ end
+end
+
+def fun_l13_n283(x)
+ if (x < 1)
+ fun_l14_n438(x)
+ else
+ fun_l14_n322(x)
+ end
+end
+
+def fun_l13_n284(x)
+ if (x < 1)
+ fun_l14_n39(x)
+ else
+ fun_l14_n39(x)
+ end
+end
+
+def fun_l13_n285(x)
+ if (x < 1)
+ fun_l14_n271(x)
+ else
+ fun_l14_n984(x)
+ end
+end
+
+def fun_l13_n286(x)
+ if (x < 1)
+ fun_l14_n278(x)
+ else
+ fun_l14_n453(x)
+ end
+end
+
+def fun_l13_n287(x)
+ if (x < 1)
+ fun_l14_n303(x)
+ else
+ fun_l14_n812(x)
+ end
+end
+
+def fun_l13_n288(x)
+ if (x < 1)
+ fun_l14_n891(x)
+ else
+ fun_l14_n843(x)
+ end
+end
+
+def fun_l13_n289(x)
+ if (x < 1)
+ fun_l14_n672(x)
+ else
+ fun_l14_n543(x)
+ end
+end
+
+def fun_l13_n290(x)
+ if (x < 1)
+ fun_l14_n115(x)
+ else
+ fun_l14_n33(x)
+ end
+end
+
+def fun_l13_n291(x)
+ if (x < 1)
+ fun_l14_n467(x)
+ else
+ fun_l14_n427(x)
+ end
+end
+
+def fun_l13_n292(x)
+ if (x < 1)
+ fun_l14_n528(x)
+ else
+ fun_l14_n51(x)
+ end
+end
+
+def fun_l13_n293(x)
+ if (x < 1)
+ fun_l14_n50(x)
+ else
+ fun_l14_n917(x)
+ end
+end
+
+def fun_l13_n294(x)
+ if (x < 1)
+ fun_l14_n245(x)
+ else
+ fun_l14_n289(x)
+ end
+end
+
+def fun_l13_n295(x)
+ if (x < 1)
+ fun_l14_n108(x)
+ else
+ fun_l14_n772(x)
+ end
+end
+
+def fun_l13_n296(x)
+ if (x < 1)
+ fun_l14_n451(x)
+ else
+ fun_l14_n127(x)
+ end
+end
+
+def fun_l13_n297(x)
+ if (x < 1)
+ fun_l14_n374(x)
+ else
+ fun_l14_n20(x)
+ end
+end
+
+def fun_l13_n298(x)
+ if (x < 1)
+ fun_l14_n588(x)
+ else
+ fun_l14_n95(x)
+ end
+end
+
+def fun_l13_n299(x)
+ if (x < 1)
+ fun_l14_n33(x)
+ else
+ fun_l14_n146(x)
+ end
+end
+
+def fun_l13_n300(x)
+ if (x < 1)
+ fun_l14_n812(x)
+ else
+ fun_l14_n373(x)
+ end
+end
+
+def fun_l13_n301(x)
+ if (x < 1)
+ fun_l14_n39(x)
+ else
+ fun_l14_n228(x)
+ end
+end
+
+def fun_l13_n302(x)
+ if (x < 1)
+ fun_l14_n992(x)
+ else
+ fun_l14_n578(x)
+ end
+end
+
+def fun_l13_n303(x)
+ if (x < 1)
+ fun_l14_n106(x)
+ else
+ fun_l14_n413(x)
+ end
+end
+
+def fun_l13_n304(x)
+ if (x < 1)
+ fun_l14_n463(x)
+ else
+ fun_l14_n884(x)
+ end
+end
+
+def fun_l13_n305(x)
+ if (x < 1)
+ fun_l14_n754(x)
+ else
+ fun_l14_n114(x)
+ end
+end
+
+def fun_l13_n306(x)
+ if (x < 1)
+ fun_l14_n960(x)
+ else
+ fun_l14_n596(x)
+ end
+end
+
+def fun_l13_n307(x)
+ if (x < 1)
+ fun_l14_n858(x)
+ else
+ fun_l14_n488(x)
+ end
+end
+
+def fun_l13_n308(x)
+ if (x < 1)
+ fun_l14_n968(x)
+ else
+ fun_l14_n507(x)
+ end
+end
+
+def fun_l13_n309(x)
+ if (x < 1)
+ fun_l14_n956(x)
+ else
+ fun_l14_n125(x)
+ end
+end
+
+def fun_l13_n310(x)
+ if (x < 1)
+ fun_l14_n190(x)
+ else
+ fun_l14_n817(x)
+ end
+end
+
+def fun_l13_n311(x)
+ if (x < 1)
+ fun_l14_n574(x)
+ else
+ fun_l14_n447(x)
+ end
+end
+
+def fun_l13_n312(x)
+ if (x < 1)
+ fun_l14_n403(x)
+ else
+ fun_l14_n591(x)
+ end
+end
+
+def fun_l13_n313(x)
+ if (x < 1)
+ fun_l14_n499(x)
+ else
+ fun_l14_n458(x)
+ end
+end
+
+def fun_l13_n314(x)
+ if (x < 1)
+ fun_l14_n994(x)
+ else
+ fun_l14_n77(x)
+ end
+end
+
+def fun_l13_n315(x)
+ if (x < 1)
+ fun_l14_n421(x)
+ else
+ fun_l14_n810(x)
+ end
+end
+
+def fun_l13_n316(x)
+ if (x < 1)
+ fun_l14_n304(x)
+ else
+ fun_l14_n785(x)
+ end
+end
+
+def fun_l13_n317(x)
+ if (x < 1)
+ fun_l14_n624(x)
+ else
+ fun_l14_n399(x)
+ end
+end
+
+def fun_l13_n318(x)
+ if (x < 1)
+ fun_l14_n882(x)
+ else
+ fun_l14_n3(x)
+ end
+end
+
+def fun_l13_n319(x)
+ if (x < 1)
+ fun_l14_n267(x)
+ else
+ fun_l14_n955(x)
+ end
+end
+
+def fun_l13_n320(x)
+ if (x < 1)
+ fun_l14_n690(x)
+ else
+ fun_l14_n281(x)
+ end
+end
+
+def fun_l13_n321(x)
+ if (x < 1)
+ fun_l14_n453(x)
+ else
+ fun_l14_n969(x)
+ end
+end
+
+def fun_l13_n322(x)
+ if (x < 1)
+ fun_l14_n297(x)
+ else
+ fun_l14_n50(x)
+ end
+end
+
+def fun_l13_n323(x)
+ if (x < 1)
+ fun_l14_n342(x)
+ else
+ fun_l14_n618(x)
+ end
+end
+
+def fun_l13_n324(x)
+ if (x < 1)
+ fun_l14_n74(x)
+ else
+ fun_l14_n638(x)
+ end
+end
+
+def fun_l13_n325(x)
+ if (x < 1)
+ fun_l14_n218(x)
+ else
+ fun_l14_n169(x)
+ end
+end
+
+def fun_l13_n326(x)
+ if (x < 1)
+ fun_l14_n128(x)
+ else
+ fun_l14_n504(x)
+ end
+end
+
+def fun_l13_n327(x)
+ if (x < 1)
+ fun_l14_n612(x)
+ else
+ fun_l14_n62(x)
+ end
+end
+
+def fun_l13_n328(x)
+ if (x < 1)
+ fun_l14_n83(x)
+ else
+ fun_l14_n67(x)
+ end
+end
+
+def fun_l13_n329(x)
+ if (x < 1)
+ fun_l14_n515(x)
+ else
+ fun_l14_n15(x)
+ end
+end
+
+def fun_l13_n330(x)
+ if (x < 1)
+ fun_l14_n448(x)
+ else
+ fun_l14_n951(x)
+ end
+end
+
+def fun_l13_n331(x)
+ if (x < 1)
+ fun_l14_n804(x)
+ else
+ fun_l14_n315(x)
+ end
+end
+
+def fun_l13_n332(x)
+ if (x < 1)
+ fun_l14_n522(x)
+ else
+ fun_l14_n761(x)
+ end
+end
+
+def fun_l13_n333(x)
+ if (x < 1)
+ fun_l14_n421(x)
+ else
+ fun_l14_n542(x)
+ end
+end
+
+def fun_l13_n334(x)
+ if (x < 1)
+ fun_l14_n952(x)
+ else
+ fun_l14_n390(x)
+ end
+end
+
+def fun_l13_n335(x)
+ if (x < 1)
+ fun_l14_n324(x)
+ else
+ fun_l14_n60(x)
+ end
+end
+
+def fun_l13_n336(x)
+ if (x < 1)
+ fun_l14_n887(x)
+ else
+ fun_l14_n474(x)
+ end
+end
+
+def fun_l13_n337(x)
+ if (x < 1)
+ fun_l14_n355(x)
+ else
+ fun_l14_n840(x)
+ end
+end
+
+def fun_l13_n338(x)
+ if (x < 1)
+ fun_l14_n21(x)
+ else
+ fun_l14_n133(x)
+ end
+end
+
+def fun_l13_n339(x)
+ if (x < 1)
+ fun_l14_n12(x)
+ else
+ fun_l14_n30(x)
+ end
+end
+
+def fun_l13_n340(x)
+ if (x < 1)
+ fun_l14_n678(x)
+ else
+ fun_l14_n583(x)
+ end
+end
+
+def fun_l13_n341(x)
+ if (x < 1)
+ fun_l14_n289(x)
+ else
+ fun_l14_n490(x)
+ end
+end
+
+def fun_l13_n342(x)
+ if (x < 1)
+ fun_l14_n232(x)
+ else
+ fun_l14_n288(x)
+ end
+end
+
+def fun_l13_n343(x)
+ if (x < 1)
+ fun_l14_n744(x)
+ else
+ fun_l14_n963(x)
+ end
+end
+
+def fun_l13_n344(x)
+ if (x < 1)
+ fun_l14_n651(x)
+ else
+ fun_l14_n377(x)
+ end
+end
+
+def fun_l13_n345(x)
+ if (x < 1)
+ fun_l14_n13(x)
+ else
+ fun_l14_n749(x)
+ end
+end
+
+def fun_l13_n346(x)
+ if (x < 1)
+ fun_l14_n789(x)
+ else
+ fun_l14_n621(x)
+ end
+end
+
+def fun_l13_n347(x)
+ if (x < 1)
+ fun_l14_n346(x)
+ else
+ fun_l14_n663(x)
+ end
+end
+
+def fun_l13_n348(x)
+ if (x < 1)
+ fun_l14_n252(x)
+ else
+ fun_l14_n202(x)
+ end
+end
+
+def fun_l13_n349(x)
+ if (x < 1)
+ fun_l14_n919(x)
+ else
+ fun_l14_n997(x)
+ end
+end
+
+def fun_l13_n350(x)
+ if (x < 1)
+ fun_l14_n472(x)
+ else
+ fun_l14_n900(x)
+ end
+end
+
+def fun_l13_n351(x)
+ if (x < 1)
+ fun_l14_n954(x)
+ else
+ fun_l14_n606(x)
+ end
+end
+
+def fun_l13_n352(x)
+ if (x < 1)
+ fun_l14_n227(x)
+ else
+ fun_l14_n344(x)
+ end
+end
+
+def fun_l13_n353(x)
+ if (x < 1)
+ fun_l14_n110(x)
+ else
+ fun_l14_n266(x)
+ end
+end
+
+def fun_l13_n354(x)
+ if (x < 1)
+ fun_l14_n840(x)
+ else
+ fun_l14_n905(x)
+ end
+end
+
+def fun_l13_n355(x)
+ if (x < 1)
+ fun_l14_n950(x)
+ else
+ fun_l14_n307(x)
+ end
+end
+
+def fun_l13_n356(x)
+ if (x < 1)
+ fun_l14_n572(x)
+ else
+ fun_l14_n480(x)
+ end
+end
+
+def fun_l13_n357(x)
+ if (x < 1)
+ fun_l14_n122(x)
+ else
+ fun_l14_n408(x)
+ end
+end
+
+def fun_l13_n358(x)
+ if (x < 1)
+ fun_l14_n105(x)
+ else
+ fun_l14_n173(x)
+ end
+end
+
+def fun_l13_n359(x)
+ if (x < 1)
+ fun_l14_n358(x)
+ else
+ fun_l14_n336(x)
+ end
+end
+
+def fun_l13_n360(x)
+ if (x < 1)
+ fun_l14_n457(x)
+ else
+ fun_l14_n434(x)
+ end
+end
+
+def fun_l13_n361(x)
+ if (x < 1)
+ fun_l14_n679(x)
+ else
+ fun_l14_n771(x)
+ end
+end
+
+def fun_l13_n362(x)
+ if (x < 1)
+ fun_l14_n419(x)
+ else
+ fun_l14_n909(x)
+ end
+end
+
+def fun_l13_n363(x)
+ if (x < 1)
+ fun_l14_n672(x)
+ else
+ fun_l14_n132(x)
+ end
+end
+
+def fun_l13_n364(x)
+ if (x < 1)
+ fun_l14_n947(x)
+ else
+ fun_l14_n328(x)
+ end
+end
+
+def fun_l13_n365(x)
+ if (x < 1)
+ fun_l14_n959(x)
+ else
+ fun_l14_n122(x)
+ end
+end
+
+def fun_l13_n366(x)
+ if (x < 1)
+ fun_l14_n534(x)
+ else
+ fun_l14_n611(x)
+ end
+end
+
+def fun_l13_n367(x)
+ if (x < 1)
+ fun_l14_n349(x)
+ else
+ fun_l14_n149(x)
+ end
+end
+
+def fun_l13_n368(x)
+ if (x < 1)
+ fun_l14_n94(x)
+ else
+ fun_l14_n870(x)
+ end
+end
+
+def fun_l13_n369(x)
+ if (x < 1)
+ fun_l14_n774(x)
+ else
+ fun_l14_n696(x)
+ end
+end
+
+def fun_l13_n370(x)
+ if (x < 1)
+ fun_l14_n311(x)
+ else
+ fun_l14_n479(x)
+ end
+end
+
+def fun_l13_n371(x)
+ if (x < 1)
+ fun_l14_n650(x)
+ else
+ fun_l14_n66(x)
+ end
+end
+
+def fun_l13_n372(x)
+ if (x < 1)
+ fun_l14_n825(x)
+ else
+ fun_l14_n910(x)
+ end
+end
+
+def fun_l13_n373(x)
+ if (x < 1)
+ fun_l14_n454(x)
+ else
+ fun_l14_n492(x)
+ end
+end
+
+def fun_l13_n374(x)
+ if (x < 1)
+ fun_l14_n785(x)
+ else
+ fun_l14_n352(x)
+ end
+end
+
+def fun_l13_n375(x)
+ if (x < 1)
+ fun_l14_n124(x)
+ else
+ fun_l14_n664(x)
+ end
+end
+
+def fun_l13_n376(x)
+ if (x < 1)
+ fun_l14_n427(x)
+ else
+ fun_l14_n615(x)
+ end
+end
+
+def fun_l13_n377(x)
+ if (x < 1)
+ fun_l14_n926(x)
+ else
+ fun_l14_n307(x)
+ end
+end
+
+def fun_l13_n378(x)
+ if (x < 1)
+ fun_l14_n575(x)
+ else
+ fun_l14_n561(x)
+ end
+end
+
+def fun_l13_n379(x)
+ if (x < 1)
+ fun_l14_n497(x)
+ else
+ fun_l14_n690(x)
+ end
+end
+
+def fun_l13_n380(x)
+ if (x < 1)
+ fun_l14_n350(x)
+ else
+ fun_l14_n641(x)
+ end
+end
+
+def fun_l13_n381(x)
+ if (x < 1)
+ fun_l14_n292(x)
+ else
+ fun_l14_n739(x)
+ end
+end
+
+def fun_l13_n382(x)
+ if (x < 1)
+ fun_l14_n302(x)
+ else
+ fun_l14_n583(x)
+ end
+end
+
+def fun_l13_n383(x)
+ if (x < 1)
+ fun_l14_n36(x)
+ else
+ fun_l14_n603(x)
+ end
+end
+
+def fun_l13_n384(x)
+ if (x < 1)
+ fun_l14_n953(x)
+ else
+ fun_l14_n394(x)
+ end
+end
+
+def fun_l13_n385(x)
+ if (x < 1)
+ fun_l14_n107(x)
+ else
+ fun_l14_n149(x)
+ end
+end
+
+def fun_l13_n386(x)
+ if (x < 1)
+ fun_l14_n77(x)
+ else
+ fun_l14_n880(x)
+ end
+end
+
+def fun_l13_n387(x)
+ if (x < 1)
+ fun_l14_n670(x)
+ else
+ fun_l14_n649(x)
+ end
+end
+
+def fun_l13_n388(x)
+ if (x < 1)
+ fun_l14_n277(x)
+ else
+ fun_l14_n922(x)
+ end
+end
+
+def fun_l13_n389(x)
+ if (x < 1)
+ fun_l14_n981(x)
+ else
+ fun_l14_n427(x)
+ end
+end
+
+def fun_l13_n390(x)
+ if (x < 1)
+ fun_l14_n411(x)
+ else
+ fun_l14_n804(x)
+ end
+end
+
+def fun_l13_n391(x)
+ if (x < 1)
+ fun_l14_n52(x)
+ else
+ fun_l14_n770(x)
+ end
+end
+
+def fun_l13_n392(x)
+ if (x < 1)
+ fun_l14_n592(x)
+ else
+ fun_l14_n672(x)
+ end
+end
+
+def fun_l13_n393(x)
+ if (x < 1)
+ fun_l14_n274(x)
+ else
+ fun_l14_n778(x)
+ end
+end
+
+def fun_l13_n394(x)
+ if (x < 1)
+ fun_l14_n708(x)
+ else
+ fun_l14_n262(x)
+ end
+end
+
+def fun_l13_n395(x)
+ if (x < 1)
+ fun_l14_n449(x)
+ else
+ fun_l14_n273(x)
+ end
+end
+
+def fun_l13_n396(x)
+ if (x < 1)
+ fun_l14_n567(x)
+ else
+ fun_l14_n148(x)
+ end
+end
+
+def fun_l13_n397(x)
+ if (x < 1)
+ fun_l14_n127(x)
+ else
+ fun_l14_n309(x)
+ end
+end
+
+def fun_l13_n398(x)
+ if (x < 1)
+ fun_l14_n150(x)
+ else
+ fun_l14_n540(x)
+ end
+end
+
+def fun_l13_n399(x)
+ if (x < 1)
+ fun_l14_n791(x)
+ else
+ fun_l14_n517(x)
+ end
+end
+
+def fun_l13_n400(x)
+ if (x < 1)
+ fun_l14_n152(x)
+ else
+ fun_l14_n319(x)
+ end
+end
+
+def fun_l13_n401(x)
+ if (x < 1)
+ fun_l14_n911(x)
+ else
+ fun_l14_n544(x)
+ end
+end
+
+def fun_l13_n402(x)
+ if (x < 1)
+ fun_l14_n915(x)
+ else
+ fun_l14_n208(x)
+ end
+end
+
+def fun_l13_n403(x)
+ if (x < 1)
+ fun_l14_n452(x)
+ else
+ fun_l14_n62(x)
+ end
+end
+
+def fun_l13_n404(x)
+ if (x < 1)
+ fun_l14_n823(x)
+ else
+ fun_l14_n913(x)
+ end
+end
+
+def fun_l13_n405(x)
+ if (x < 1)
+ fun_l14_n808(x)
+ else
+ fun_l14_n49(x)
+ end
+end
+
+def fun_l13_n406(x)
+ if (x < 1)
+ fun_l14_n498(x)
+ else
+ fun_l14_n470(x)
+ end
+end
+
+def fun_l13_n407(x)
+ if (x < 1)
+ fun_l14_n314(x)
+ else
+ fun_l14_n248(x)
+ end
+end
+
+def fun_l13_n408(x)
+ if (x < 1)
+ fun_l14_n61(x)
+ else
+ fun_l14_n190(x)
+ end
+end
+
+def fun_l13_n409(x)
+ if (x < 1)
+ fun_l14_n126(x)
+ else
+ fun_l14_n505(x)
+ end
+end
+
+def fun_l13_n410(x)
+ if (x < 1)
+ fun_l14_n646(x)
+ else
+ fun_l14_n319(x)
+ end
+end
+
+def fun_l13_n411(x)
+ if (x < 1)
+ fun_l14_n741(x)
+ else
+ fun_l14_n979(x)
+ end
+end
+
+def fun_l13_n412(x)
+ if (x < 1)
+ fun_l14_n840(x)
+ else
+ fun_l14_n211(x)
+ end
+end
+
+def fun_l13_n413(x)
+ if (x < 1)
+ fun_l14_n217(x)
+ else
+ fun_l14_n98(x)
+ end
+end
+
+def fun_l13_n414(x)
+ if (x < 1)
+ fun_l14_n398(x)
+ else
+ fun_l14_n701(x)
+ end
+end
+
+def fun_l13_n415(x)
+ if (x < 1)
+ fun_l14_n470(x)
+ else
+ fun_l14_n394(x)
+ end
+end
+
+def fun_l13_n416(x)
+ if (x < 1)
+ fun_l14_n113(x)
+ else
+ fun_l14_n792(x)
+ end
+end
+
+def fun_l13_n417(x)
+ if (x < 1)
+ fun_l14_n969(x)
+ else
+ fun_l14_n99(x)
+ end
+end
+
+def fun_l13_n418(x)
+ if (x < 1)
+ fun_l14_n54(x)
+ else
+ fun_l14_n800(x)
+ end
+end
+
+def fun_l13_n419(x)
+ if (x < 1)
+ fun_l14_n763(x)
+ else
+ fun_l14_n510(x)
+ end
+end
+
+def fun_l13_n420(x)
+ if (x < 1)
+ fun_l14_n660(x)
+ else
+ fun_l14_n904(x)
+ end
+end
+
+def fun_l13_n421(x)
+ if (x < 1)
+ fun_l14_n345(x)
+ else
+ fun_l14_n200(x)
+ end
+end
+
+def fun_l13_n422(x)
+ if (x < 1)
+ fun_l14_n831(x)
+ else
+ fun_l14_n35(x)
+ end
+end
+
+def fun_l13_n423(x)
+ if (x < 1)
+ fun_l14_n644(x)
+ else
+ fun_l14_n963(x)
+ end
+end
+
+def fun_l13_n424(x)
+ if (x < 1)
+ fun_l14_n0(x)
+ else
+ fun_l14_n625(x)
+ end
+end
+
+def fun_l13_n425(x)
+ if (x < 1)
+ fun_l14_n186(x)
+ else
+ fun_l14_n409(x)
+ end
+end
+
+def fun_l13_n426(x)
+ if (x < 1)
+ fun_l14_n869(x)
+ else
+ fun_l14_n852(x)
+ end
+end
+
+def fun_l13_n427(x)
+ if (x < 1)
+ fun_l14_n322(x)
+ else
+ fun_l14_n160(x)
+ end
+end
+
+def fun_l13_n428(x)
+ if (x < 1)
+ fun_l14_n974(x)
+ else
+ fun_l14_n139(x)
+ end
+end
+
+def fun_l13_n429(x)
+ if (x < 1)
+ fun_l14_n570(x)
+ else
+ fun_l14_n10(x)
+ end
+end
+
+def fun_l13_n430(x)
+ if (x < 1)
+ fun_l14_n199(x)
+ else
+ fun_l14_n829(x)
+ end
+end
+
+def fun_l13_n431(x)
+ if (x < 1)
+ fun_l14_n700(x)
+ else
+ fun_l14_n362(x)
+ end
+end
+
+def fun_l13_n432(x)
+ if (x < 1)
+ fun_l14_n925(x)
+ else
+ fun_l14_n365(x)
+ end
+end
+
+def fun_l13_n433(x)
+ if (x < 1)
+ fun_l14_n837(x)
+ else
+ fun_l14_n119(x)
+ end
+end
+
+def fun_l13_n434(x)
+ if (x < 1)
+ fun_l14_n355(x)
+ else
+ fun_l14_n374(x)
+ end
+end
+
+def fun_l13_n435(x)
+ if (x < 1)
+ fun_l14_n126(x)
+ else
+ fun_l14_n568(x)
+ end
+end
+
+def fun_l13_n436(x)
+ if (x < 1)
+ fun_l14_n468(x)
+ else
+ fun_l14_n299(x)
+ end
+end
+
+def fun_l13_n437(x)
+ if (x < 1)
+ fun_l14_n667(x)
+ else
+ fun_l14_n795(x)
+ end
+end
+
+def fun_l13_n438(x)
+ if (x < 1)
+ fun_l14_n989(x)
+ else
+ fun_l14_n484(x)
+ end
+end
+
+def fun_l13_n439(x)
+ if (x < 1)
+ fun_l14_n109(x)
+ else
+ fun_l14_n534(x)
+ end
+end
+
+def fun_l13_n440(x)
+ if (x < 1)
+ fun_l14_n999(x)
+ else
+ fun_l14_n69(x)
+ end
+end
+
+def fun_l13_n441(x)
+ if (x < 1)
+ fun_l14_n616(x)
+ else
+ fun_l14_n794(x)
+ end
+end
+
+def fun_l13_n442(x)
+ if (x < 1)
+ fun_l14_n719(x)
+ else
+ fun_l14_n967(x)
+ end
+end
+
+def fun_l13_n443(x)
+ if (x < 1)
+ fun_l14_n279(x)
+ else
+ fun_l14_n240(x)
+ end
+end
+
+def fun_l13_n444(x)
+ if (x < 1)
+ fun_l14_n660(x)
+ else
+ fun_l14_n146(x)
+ end
+end
+
+def fun_l13_n445(x)
+ if (x < 1)
+ fun_l14_n164(x)
+ else
+ fun_l14_n903(x)
+ end
+end
+
+def fun_l13_n446(x)
+ if (x < 1)
+ fun_l14_n474(x)
+ else
+ fun_l14_n137(x)
+ end
+end
+
+def fun_l13_n447(x)
+ if (x < 1)
+ fun_l14_n198(x)
+ else
+ fun_l14_n66(x)
+ end
+end
+
+def fun_l13_n448(x)
+ if (x < 1)
+ fun_l14_n948(x)
+ else
+ fun_l14_n682(x)
+ end
+end
+
+def fun_l13_n449(x)
+ if (x < 1)
+ fun_l14_n545(x)
+ else
+ fun_l14_n928(x)
+ end
+end
+
+def fun_l13_n450(x)
+ if (x < 1)
+ fun_l14_n822(x)
+ else
+ fun_l14_n846(x)
+ end
+end
+
+def fun_l13_n451(x)
+ if (x < 1)
+ fun_l14_n514(x)
+ else
+ fun_l14_n54(x)
+ end
+end
+
+def fun_l13_n452(x)
+ if (x < 1)
+ fun_l14_n539(x)
+ else
+ fun_l14_n199(x)
+ end
+end
+
+def fun_l13_n453(x)
+ if (x < 1)
+ fun_l14_n917(x)
+ else
+ fun_l14_n173(x)
+ end
+end
+
+def fun_l13_n454(x)
+ if (x < 1)
+ fun_l14_n924(x)
+ else
+ fun_l14_n51(x)
+ end
+end
+
+def fun_l13_n455(x)
+ if (x < 1)
+ fun_l14_n675(x)
+ else
+ fun_l14_n139(x)
+ end
+end
+
+def fun_l13_n456(x)
+ if (x < 1)
+ fun_l14_n335(x)
+ else
+ fun_l14_n138(x)
+ end
+end
+
+def fun_l13_n457(x)
+ if (x < 1)
+ fun_l14_n112(x)
+ else
+ fun_l14_n707(x)
+ end
+end
+
+def fun_l13_n458(x)
+ if (x < 1)
+ fun_l14_n784(x)
+ else
+ fun_l14_n278(x)
+ end
+end
+
+def fun_l13_n459(x)
+ if (x < 1)
+ fun_l14_n165(x)
+ else
+ fun_l14_n985(x)
+ end
+end
+
+def fun_l13_n460(x)
+ if (x < 1)
+ fun_l14_n843(x)
+ else
+ fun_l14_n262(x)
+ end
+end
+
+def fun_l13_n461(x)
+ if (x < 1)
+ fun_l14_n492(x)
+ else
+ fun_l14_n21(x)
+ end
+end
+
+def fun_l13_n462(x)
+ if (x < 1)
+ fun_l14_n864(x)
+ else
+ fun_l14_n248(x)
+ end
+end
+
+def fun_l13_n463(x)
+ if (x < 1)
+ fun_l14_n940(x)
+ else
+ fun_l14_n713(x)
+ end
+end
+
+def fun_l13_n464(x)
+ if (x < 1)
+ fun_l14_n8(x)
+ else
+ fun_l14_n771(x)
+ end
+end
+
+def fun_l13_n465(x)
+ if (x < 1)
+ fun_l14_n83(x)
+ else
+ fun_l14_n663(x)
+ end
+end
+
+def fun_l13_n466(x)
+ if (x < 1)
+ fun_l14_n411(x)
+ else
+ fun_l14_n570(x)
+ end
+end
+
+def fun_l13_n467(x)
+ if (x < 1)
+ fun_l14_n464(x)
+ else
+ fun_l14_n497(x)
+ end
+end
+
+def fun_l13_n468(x)
+ if (x < 1)
+ fun_l14_n49(x)
+ else
+ fun_l14_n153(x)
+ end
+end
+
+def fun_l13_n469(x)
+ if (x < 1)
+ fun_l14_n33(x)
+ else
+ fun_l14_n562(x)
+ end
+end
+
+def fun_l13_n470(x)
+ if (x < 1)
+ fun_l14_n207(x)
+ else
+ fun_l14_n328(x)
+ end
+end
+
+def fun_l13_n471(x)
+ if (x < 1)
+ fun_l14_n356(x)
+ else
+ fun_l14_n834(x)
+ end
+end
+
+def fun_l13_n472(x)
+ if (x < 1)
+ fun_l14_n46(x)
+ else
+ fun_l14_n842(x)
+ end
+end
+
+def fun_l13_n473(x)
+ if (x < 1)
+ fun_l14_n14(x)
+ else
+ fun_l14_n488(x)
+ end
+end
+
+def fun_l13_n474(x)
+ if (x < 1)
+ fun_l14_n307(x)
+ else
+ fun_l14_n647(x)
+ end
+end
+
+def fun_l13_n475(x)
+ if (x < 1)
+ fun_l14_n474(x)
+ else
+ fun_l14_n369(x)
+ end
+end
+
+def fun_l13_n476(x)
+ if (x < 1)
+ fun_l14_n471(x)
+ else
+ fun_l14_n956(x)
+ end
+end
+
+def fun_l13_n477(x)
+ if (x < 1)
+ fun_l14_n368(x)
+ else
+ fun_l14_n478(x)
+ end
+end
+
+def fun_l13_n478(x)
+ if (x < 1)
+ fun_l14_n377(x)
+ else
+ fun_l14_n675(x)
+ end
+end
+
+def fun_l13_n479(x)
+ if (x < 1)
+ fun_l14_n370(x)
+ else
+ fun_l14_n819(x)
+ end
+end
+
+def fun_l13_n480(x)
+ if (x < 1)
+ fun_l14_n459(x)
+ else
+ fun_l14_n59(x)
+ end
+end
+
+def fun_l13_n481(x)
+ if (x < 1)
+ fun_l14_n200(x)
+ else
+ fun_l14_n681(x)
+ end
+end
+
+def fun_l13_n482(x)
+ if (x < 1)
+ fun_l14_n893(x)
+ else
+ fun_l14_n518(x)
+ end
+end
+
+def fun_l13_n483(x)
+ if (x < 1)
+ fun_l14_n130(x)
+ else
+ fun_l14_n902(x)
+ end
+end
+
+def fun_l13_n484(x)
+ if (x < 1)
+ fun_l14_n598(x)
+ else
+ fun_l14_n533(x)
+ end
+end
+
+def fun_l13_n485(x)
+ if (x < 1)
+ fun_l14_n254(x)
+ else
+ fun_l14_n294(x)
+ end
+end
+
+def fun_l13_n486(x)
+ if (x < 1)
+ fun_l14_n608(x)
+ else
+ fun_l14_n858(x)
+ end
+end
+
+def fun_l13_n487(x)
+ if (x < 1)
+ fun_l14_n82(x)
+ else
+ fun_l14_n379(x)
+ end
+end
+
+def fun_l13_n488(x)
+ if (x < 1)
+ fun_l14_n605(x)
+ else
+ fun_l14_n530(x)
+ end
+end
+
+def fun_l13_n489(x)
+ if (x < 1)
+ fun_l14_n572(x)
+ else
+ fun_l14_n199(x)
+ end
+end
+
+def fun_l13_n490(x)
+ if (x < 1)
+ fun_l14_n3(x)
+ else
+ fun_l14_n103(x)
+ end
+end
+
+def fun_l13_n491(x)
+ if (x < 1)
+ fun_l14_n922(x)
+ else
+ fun_l14_n372(x)
+ end
+end
+
+def fun_l13_n492(x)
+ if (x < 1)
+ fun_l14_n306(x)
+ else
+ fun_l14_n378(x)
+ end
+end
+
+def fun_l13_n493(x)
+ if (x < 1)
+ fun_l14_n980(x)
+ else
+ fun_l14_n617(x)
+ end
+end
+
+def fun_l13_n494(x)
+ if (x < 1)
+ fun_l14_n127(x)
+ else
+ fun_l14_n348(x)
+ end
+end
+
+def fun_l13_n495(x)
+ if (x < 1)
+ fun_l14_n631(x)
+ else
+ fun_l14_n281(x)
+ end
+end
+
+def fun_l13_n496(x)
+ if (x < 1)
+ fun_l14_n552(x)
+ else
+ fun_l14_n493(x)
+ end
+end
+
+def fun_l13_n497(x)
+ if (x < 1)
+ fun_l14_n342(x)
+ else
+ fun_l14_n931(x)
+ end
+end
+
+def fun_l13_n498(x)
+ if (x < 1)
+ fun_l14_n297(x)
+ else
+ fun_l14_n512(x)
+ end
+end
+
+def fun_l13_n499(x)
+ if (x < 1)
+ fun_l14_n950(x)
+ else
+ fun_l14_n952(x)
+ end
+end
+
+def fun_l13_n500(x)
+ if (x < 1)
+ fun_l14_n355(x)
+ else
+ fun_l14_n383(x)
+ end
+end
+
+def fun_l13_n501(x)
+ if (x < 1)
+ fun_l14_n278(x)
+ else
+ fun_l14_n442(x)
+ end
+end
+
+def fun_l13_n502(x)
+ if (x < 1)
+ fun_l14_n16(x)
+ else
+ fun_l14_n150(x)
+ end
+end
+
+def fun_l13_n503(x)
+ if (x < 1)
+ fun_l14_n399(x)
+ else
+ fun_l14_n989(x)
+ end
+end
+
+def fun_l13_n504(x)
+ if (x < 1)
+ fun_l14_n289(x)
+ else
+ fun_l14_n925(x)
+ end
+end
+
+def fun_l13_n505(x)
+ if (x < 1)
+ fun_l14_n743(x)
+ else
+ fun_l14_n784(x)
+ end
+end
+
+def fun_l13_n506(x)
+ if (x < 1)
+ fun_l14_n916(x)
+ else
+ fun_l14_n111(x)
+ end
+end
+
+def fun_l13_n507(x)
+ if (x < 1)
+ fun_l14_n912(x)
+ else
+ fun_l14_n448(x)
+ end
+end
+
+def fun_l13_n508(x)
+ if (x < 1)
+ fun_l14_n10(x)
+ else
+ fun_l14_n451(x)
+ end
+end
+
+def fun_l13_n509(x)
+ if (x < 1)
+ fun_l14_n15(x)
+ else
+ fun_l14_n697(x)
+ end
+end
+
+def fun_l13_n510(x)
+ if (x < 1)
+ fun_l14_n565(x)
+ else
+ fun_l14_n511(x)
+ end
+end
+
+def fun_l13_n511(x)
+ if (x < 1)
+ fun_l14_n843(x)
+ else
+ fun_l14_n272(x)
+ end
+end
+
+def fun_l13_n512(x)
+ if (x < 1)
+ fun_l14_n70(x)
+ else
+ fun_l14_n333(x)
+ end
+end
+
+def fun_l13_n513(x)
+ if (x < 1)
+ fun_l14_n100(x)
+ else
+ fun_l14_n399(x)
+ end
+end
+
+def fun_l13_n514(x)
+ if (x < 1)
+ fun_l14_n678(x)
+ else
+ fun_l14_n247(x)
+ end
+end
+
+def fun_l13_n515(x)
+ if (x < 1)
+ fun_l14_n823(x)
+ else
+ fun_l14_n371(x)
+ end
+end
+
+def fun_l13_n516(x)
+ if (x < 1)
+ fun_l14_n994(x)
+ else
+ fun_l14_n322(x)
+ end
+end
+
+def fun_l13_n517(x)
+ if (x < 1)
+ fun_l14_n399(x)
+ else
+ fun_l14_n567(x)
+ end
+end
+
+def fun_l13_n518(x)
+ if (x < 1)
+ fun_l14_n898(x)
+ else
+ fun_l14_n59(x)
+ end
+end
+
+def fun_l13_n519(x)
+ if (x < 1)
+ fun_l14_n33(x)
+ else
+ fun_l14_n640(x)
+ end
+end
+
+def fun_l13_n520(x)
+ if (x < 1)
+ fun_l14_n475(x)
+ else
+ fun_l14_n67(x)
+ end
+end
+
+def fun_l13_n521(x)
+ if (x < 1)
+ fun_l14_n896(x)
+ else
+ fun_l14_n312(x)
+ end
+end
+
+def fun_l13_n522(x)
+ if (x < 1)
+ fun_l14_n454(x)
+ else
+ fun_l14_n520(x)
+ end
+end
+
+def fun_l13_n523(x)
+ if (x < 1)
+ fun_l14_n334(x)
+ else
+ fun_l14_n879(x)
+ end
+end
+
+def fun_l13_n524(x)
+ if (x < 1)
+ fun_l14_n267(x)
+ else
+ fun_l14_n526(x)
+ end
+end
+
+def fun_l13_n525(x)
+ if (x < 1)
+ fun_l14_n552(x)
+ else
+ fun_l14_n103(x)
+ end
+end
+
+def fun_l13_n526(x)
+ if (x < 1)
+ fun_l14_n224(x)
+ else
+ fun_l14_n211(x)
+ end
+end
+
+def fun_l13_n527(x)
+ if (x < 1)
+ fun_l14_n113(x)
+ else
+ fun_l14_n193(x)
+ end
+end
+
+def fun_l13_n528(x)
+ if (x < 1)
+ fun_l14_n389(x)
+ else
+ fun_l14_n332(x)
+ end
+end
+
+def fun_l13_n529(x)
+ if (x < 1)
+ fun_l14_n881(x)
+ else
+ fun_l14_n655(x)
+ end
+end
+
+def fun_l13_n530(x)
+ if (x < 1)
+ fun_l14_n857(x)
+ else
+ fun_l14_n588(x)
+ end
+end
+
+def fun_l13_n531(x)
+ if (x < 1)
+ fun_l14_n70(x)
+ else
+ fun_l14_n232(x)
+ end
+end
+
+def fun_l13_n532(x)
+ if (x < 1)
+ fun_l14_n617(x)
+ else
+ fun_l14_n477(x)
+ end
+end
+
+def fun_l13_n533(x)
+ if (x < 1)
+ fun_l14_n655(x)
+ else
+ fun_l14_n801(x)
+ end
+end
+
+def fun_l13_n534(x)
+ if (x < 1)
+ fun_l14_n665(x)
+ else
+ fun_l14_n22(x)
+ end
+end
+
+def fun_l13_n535(x)
+ if (x < 1)
+ fun_l14_n314(x)
+ else
+ fun_l14_n924(x)
+ end
+end
+
+def fun_l13_n536(x)
+ if (x < 1)
+ fun_l14_n619(x)
+ else
+ fun_l14_n455(x)
+ end
+end
+
+def fun_l13_n537(x)
+ if (x < 1)
+ fun_l14_n183(x)
+ else
+ fun_l14_n767(x)
+ end
+end
+
+def fun_l13_n538(x)
+ if (x < 1)
+ fun_l14_n862(x)
+ else
+ fun_l14_n352(x)
+ end
+end
+
+def fun_l13_n539(x)
+ if (x < 1)
+ fun_l14_n540(x)
+ else
+ fun_l14_n813(x)
+ end
+end
+
+def fun_l13_n540(x)
+ if (x < 1)
+ fun_l14_n429(x)
+ else
+ fun_l14_n515(x)
+ end
+end
+
+def fun_l13_n541(x)
+ if (x < 1)
+ fun_l14_n294(x)
+ else
+ fun_l14_n341(x)
+ end
+end
+
+def fun_l13_n542(x)
+ if (x < 1)
+ fun_l14_n910(x)
+ else
+ fun_l14_n882(x)
+ end
+end
+
+def fun_l13_n543(x)
+ if (x < 1)
+ fun_l14_n971(x)
+ else
+ fun_l14_n19(x)
+ end
+end
+
+def fun_l13_n544(x)
+ if (x < 1)
+ fun_l14_n344(x)
+ else
+ fun_l14_n419(x)
+ end
+end
+
+def fun_l13_n545(x)
+ if (x < 1)
+ fun_l14_n410(x)
+ else
+ fun_l14_n996(x)
+ end
+end
+
+def fun_l13_n546(x)
+ if (x < 1)
+ fun_l14_n857(x)
+ else
+ fun_l14_n431(x)
+ end
+end
+
+def fun_l13_n547(x)
+ if (x < 1)
+ fun_l14_n548(x)
+ else
+ fun_l14_n934(x)
+ end
+end
+
+def fun_l13_n548(x)
+ if (x < 1)
+ fun_l14_n420(x)
+ else
+ fun_l14_n506(x)
+ end
+end
+
+def fun_l13_n549(x)
+ if (x < 1)
+ fun_l14_n992(x)
+ else
+ fun_l14_n213(x)
+ end
+end
+
+def fun_l13_n550(x)
+ if (x < 1)
+ fun_l14_n754(x)
+ else
+ fun_l14_n666(x)
+ end
+end
+
+def fun_l13_n551(x)
+ if (x < 1)
+ fun_l14_n412(x)
+ else
+ fun_l14_n908(x)
+ end
+end
+
+def fun_l13_n552(x)
+ if (x < 1)
+ fun_l14_n708(x)
+ else
+ fun_l14_n308(x)
+ end
+end
+
+def fun_l13_n553(x)
+ if (x < 1)
+ fun_l14_n797(x)
+ else
+ fun_l14_n622(x)
+ end
+end
+
+def fun_l13_n554(x)
+ if (x < 1)
+ fun_l14_n26(x)
+ else
+ fun_l14_n102(x)
+ end
+end
+
+def fun_l13_n555(x)
+ if (x < 1)
+ fun_l14_n614(x)
+ else
+ fun_l14_n110(x)
+ end
+end
+
+def fun_l13_n556(x)
+ if (x < 1)
+ fun_l14_n368(x)
+ else
+ fun_l14_n718(x)
+ end
+end
+
+def fun_l13_n557(x)
+ if (x < 1)
+ fun_l14_n782(x)
+ else
+ fun_l14_n659(x)
+ end
+end
+
+def fun_l13_n558(x)
+ if (x < 1)
+ fun_l14_n544(x)
+ else
+ fun_l14_n507(x)
+ end
+end
+
+def fun_l13_n559(x)
+ if (x < 1)
+ fun_l14_n39(x)
+ else
+ fun_l14_n97(x)
+ end
+end
+
+def fun_l13_n560(x)
+ if (x < 1)
+ fun_l14_n390(x)
+ else
+ fun_l14_n93(x)
+ end
+end
+
+def fun_l13_n561(x)
+ if (x < 1)
+ fun_l14_n28(x)
+ else
+ fun_l14_n267(x)
+ end
+end
+
+def fun_l13_n562(x)
+ if (x < 1)
+ fun_l14_n10(x)
+ else
+ fun_l14_n990(x)
+ end
+end
+
+def fun_l13_n563(x)
+ if (x < 1)
+ fun_l14_n428(x)
+ else
+ fun_l14_n878(x)
+ end
+end
+
+def fun_l13_n564(x)
+ if (x < 1)
+ fun_l14_n587(x)
+ else
+ fun_l14_n724(x)
+ end
+end
+
+def fun_l13_n565(x)
+ if (x < 1)
+ fun_l14_n524(x)
+ else
+ fun_l14_n87(x)
+ end
+end
+
+def fun_l13_n566(x)
+ if (x < 1)
+ fun_l14_n213(x)
+ else
+ fun_l14_n718(x)
+ end
+end
+
+def fun_l13_n567(x)
+ if (x < 1)
+ fun_l14_n821(x)
+ else
+ fun_l14_n478(x)
+ end
+end
+
+def fun_l13_n568(x)
+ if (x < 1)
+ fun_l14_n580(x)
+ else
+ fun_l14_n731(x)
+ end
+end
+
+def fun_l13_n569(x)
+ if (x < 1)
+ fun_l14_n673(x)
+ else
+ fun_l14_n780(x)
+ end
+end
+
+def fun_l13_n570(x)
+ if (x < 1)
+ fun_l14_n791(x)
+ else
+ fun_l14_n691(x)
+ end
+end
+
+def fun_l13_n571(x)
+ if (x < 1)
+ fun_l14_n192(x)
+ else
+ fun_l14_n712(x)
+ end
+end
+
+def fun_l13_n572(x)
+ if (x < 1)
+ fun_l14_n201(x)
+ else
+ fun_l14_n732(x)
+ end
+end
+
+def fun_l13_n573(x)
+ if (x < 1)
+ fun_l14_n180(x)
+ else
+ fun_l14_n260(x)
+ end
+end
+
+def fun_l13_n574(x)
+ if (x < 1)
+ fun_l14_n609(x)
+ else
+ fun_l14_n110(x)
+ end
+end
+
+def fun_l13_n575(x)
+ if (x < 1)
+ fun_l14_n993(x)
+ else
+ fun_l14_n510(x)
+ end
+end
+
+def fun_l13_n576(x)
+ if (x < 1)
+ fun_l14_n318(x)
+ else
+ fun_l14_n915(x)
+ end
+end
+
+def fun_l13_n577(x)
+ if (x < 1)
+ fun_l14_n635(x)
+ else
+ fun_l14_n21(x)
+ end
+end
+
+def fun_l13_n578(x)
+ if (x < 1)
+ fun_l14_n330(x)
+ else
+ fun_l14_n860(x)
+ end
+end
+
+def fun_l13_n579(x)
+ if (x < 1)
+ fun_l14_n24(x)
+ else
+ fun_l14_n87(x)
+ end
+end
+
+def fun_l13_n580(x)
+ if (x < 1)
+ fun_l14_n404(x)
+ else
+ fun_l14_n530(x)
+ end
+end
+
+def fun_l13_n581(x)
+ if (x < 1)
+ fun_l14_n831(x)
+ else
+ fun_l14_n384(x)
+ end
+end
+
+def fun_l13_n582(x)
+ if (x < 1)
+ fun_l14_n272(x)
+ else
+ fun_l14_n438(x)
+ end
+end
+
+def fun_l13_n583(x)
+ if (x < 1)
+ fun_l14_n297(x)
+ else
+ fun_l14_n414(x)
+ end
+end
+
+def fun_l13_n584(x)
+ if (x < 1)
+ fun_l14_n38(x)
+ else
+ fun_l14_n676(x)
+ end
+end
+
+def fun_l13_n585(x)
+ if (x < 1)
+ fun_l14_n104(x)
+ else
+ fun_l14_n566(x)
+ end
+end
+
+def fun_l13_n586(x)
+ if (x < 1)
+ fun_l14_n322(x)
+ else
+ fun_l14_n601(x)
+ end
+end
+
+def fun_l13_n587(x)
+ if (x < 1)
+ fun_l14_n20(x)
+ else
+ fun_l14_n242(x)
+ end
+end
+
+def fun_l13_n588(x)
+ if (x < 1)
+ fun_l14_n291(x)
+ else
+ fun_l14_n744(x)
+ end
+end
+
+def fun_l13_n589(x)
+ if (x < 1)
+ fun_l14_n702(x)
+ else
+ fun_l14_n456(x)
+ end
+end
+
+def fun_l13_n590(x)
+ if (x < 1)
+ fun_l14_n39(x)
+ else
+ fun_l14_n493(x)
+ end
+end
+
+def fun_l13_n591(x)
+ if (x < 1)
+ fun_l14_n51(x)
+ else
+ fun_l14_n193(x)
+ end
+end
+
+def fun_l13_n592(x)
+ if (x < 1)
+ fun_l14_n512(x)
+ else
+ fun_l14_n382(x)
+ end
+end
+
+def fun_l13_n593(x)
+ if (x < 1)
+ fun_l14_n550(x)
+ else
+ fun_l14_n711(x)
+ end
+end
+
+def fun_l13_n594(x)
+ if (x < 1)
+ fun_l14_n586(x)
+ else
+ fun_l14_n130(x)
+ end
+end
+
+def fun_l13_n595(x)
+ if (x < 1)
+ fun_l14_n348(x)
+ else
+ fun_l14_n214(x)
+ end
+end
+
+def fun_l13_n596(x)
+ if (x < 1)
+ fun_l14_n193(x)
+ else
+ fun_l14_n490(x)
+ end
+end
+
+def fun_l13_n597(x)
+ if (x < 1)
+ fun_l14_n736(x)
+ else
+ fun_l14_n824(x)
+ end
+end
+
+def fun_l13_n598(x)
+ if (x < 1)
+ fun_l14_n555(x)
+ else
+ fun_l14_n546(x)
+ end
+end
+
+def fun_l13_n599(x)
+ if (x < 1)
+ fun_l14_n244(x)
+ else
+ fun_l14_n903(x)
+ end
+end
+
+def fun_l13_n600(x)
+ if (x < 1)
+ fun_l14_n786(x)
+ else
+ fun_l14_n817(x)
+ end
+end
+
+def fun_l13_n601(x)
+ if (x < 1)
+ fun_l14_n991(x)
+ else
+ fun_l14_n691(x)
+ end
+end
+
+def fun_l13_n602(x)
+ if (x < 1)
+ fun_l14_n369(x)
+ else
+ fun_l14_n85(x)
+ end
+end
+
+def fun_l13_n603(x)
+ if (x < 1)
+ fun_l14_n232(x)
+ else
+ fun_l14_n287(x)
+ end
+end
+
+def fun_l13_n604(x)
+ if (x < 1)
+ fun_l14_n397(x)
+ else
+ fun_l14_n59(x)
+ end
+end
+
+def fun_l13_n605(x)
+ if (x < 1)
+ fun_l14_n394(x)
+ else
+ fun_l14_n297(x)
+ end
+end
+
+def fun_l13_n606(x)
+ if (x < 1)
+ fun_l14_n676(x)
+ else
+ fun_l14_n444(x)
+ end
+end
+
+def fun_l13_n607(x)
+ if (x < 1)
+ fun_l14_n894(x)
+ else
+ fun_l14_n147(x)
+ end
+end
+
+def fun_l13_n608(x)
+ if (x < 1)
+ fun_l14_n593(x)
+ else
+ fun_l14_n880(x)
+ end
+end
+
+def fun_l13_n609(x)
+ if (x < 1)
+ fun_l14_n306(x)
+ else
+ fun_l14_n610(x)
+ end
+end
+
+def fun_l13_n610(x)
+ if (x < 1)
+ fun_l14_n884(x)
+ else
+ fun_l14_n202(x)
+ end
+end
+
+def fun_l13_n611(x)
+ if (x < 1)
+ fun_l14_n763(x)
+ else
+ fun_l14_n592(x)
+ end
+end
+
+def fun_l13_n612(x)
+ if (x < 1)
+ fun_l14_n477(x)
+ else
+ fun_l14_n614(x)
+ end
+end
+
+def fun_l13_n613(x)
+ if (x < 1)
+ fun_l14_n372(x)
+ else
+ fun_l14_n330(x)
+ end
+end
+
+def fun_l13_n614(x)
+ if (x < 1)
+ fun_l14_n767(x)
+ else
+ fun_l14_n277(x)
+ end
+end
+
+def fun_l13_n615(x)
+ if (x < 1)
+ fun_l14_n530(x)
+ else
+ fun_l14_n24(x)
+ end
+end
+
+def fun_l13_n616(x)
+ if (x < 1)
+ fun_l14_n657(x)
+ else
+ fun_l14_n709(x)
+ end
+end
+
+def fun_l13_n617(x)
+ if (x < 1)
+ fun_l14_n559(x)
+ else
+ fun_l14_n125(x)
+ end
+end
+
+def fun_l13_n618(x)
+ if (x < 1)
+ fun_l14_n855(x)
+ else
+ fun_l14_n353(x)
+ end
+end
+
+def fun_l13_n619(x)
+ if (x < 1)
+ fun_l14_n635(x)
+ else
+ fun_l14_n907(x)
+ end
+end
+
+def fun_l13_n620(x)
+ if (x < 1)
+ fun_l14_n229(x)
+ else
+ fun_l14_n7(x)
+ end
+end
+
+def fun_l13_n621(x)
+ if (x < 1)
+ fun_l14_n568(x)
+ else
+ fun_l14_n393(x)
+ end
+end
+
+def fun_l13_n622(x)
+ if (x < 1)
+ fun_l14_n153(x)
+ else
+ fun_l14_n641(x)
+ end
+end
+
+def fun_l13_n623(x)
+ if (x < 1)
+ fun_l14_n249(x)
+ else
+ fun_l14_n139(x)
+ end
+end
+
+def fun_l13_n624(x)
+ if (x < 1)
+ fun_l14_n961(x)
+ else
+ fun_l14_n897(x)
+ end
+end
+
+def fun_l13_n625(x)
+ if (x < 1)
+ fun_l14_n535(x)
+ else
+ fun_l14_n252(x)
+ end
+end
+
+def fun_l13_n626(x)
+ if (x < 1)
+ fun_l14_n832(x)
+ else
+ fun_l14_n995(x)
+ end
+end
+
+def fun_l13_n627(x)
+ if (x < 1)
+ fun_l14_n896(x)
+ else
+ fun_l14_n173(x)
+ end
+end
+
+def fun_l13_n628(x)
+ if (x < 1)
+ fun_l14_n939(x)
+ else
+ fun_l14_n852(x)
+ end
+end
+
+def fun_l13_n629(x)
+ if (x < 1)
+ fun_l14_n424(x)
+ else
+ fun_l14_n161(x)
+ end
+end
+
+def fun_l13_n630(x)
+ if (x < 1)
+ fun_l14_n822(x)
+ else
+ fun_l14_n523(x)
+ end
+end
+
+def fun_l13_n631(x)
+ if (x < 1)
+ fun_l14_n697(x)
+ else
+ fun_l14_n939(x)
+ end
+end
+
+def fun_l13_n632(x)
+ if (x < 1)
+ fun_l14_n831(x)
+ else
+ fun_l14_n722(x)
+ end
+end
+
+def fun_l13_n633(x)
+ if (x < 1)
+ fun_l14_n837(x)
+ else
+ fun_l14_n994(x)
+ end
+end
+
+def fun_l13_n634(x)
+ if (x < 1)
+ fun_l14_n568(x)
+ else
+ fun_l14_n636(x)
+ end
+end
+
+def fun_l13_n635(x)
+ if (x < 1)
+ fun_l14_n573(x)
+ else
+ fun_l14_n156(x)
+ end
+end
+
+def fun_l13_n636(x)
+ if (x < 1)
+ fun_l14_n682(x)
+ else
+ fun_l14_n999(x)
+ end
+end
+
+def fun_l13_n637(x)
+ if (x < 1)
+ fun_l14_n648(x)
+ else
+ fun_l14_n567(x)
+ end
+end
+
+def fun_l13_n638(x)
+ if (x < 1)
+ fun_l14_n395(x)
+ else
+ fun_l14_n837(x)
+ end
+end
+
+def fun_l13_n639(x)
+ if (x < 1)
+ fun_l14_n294(x)
+ else
+ fun_l14_n508(x)
+ end
+end
+
+def fun_l13_n640(x)
+ if (x < 1)
+ fun_l14_n530(x)
+ else
+ fun_l14_n542(x)
+ end
+end
+
+def fun_l13_n641(x)
+ if (x < 1)
+ fun_l14_n227(x)
+ else
+ fun_l14_n939(x)
+ end
+end
+
+def fun_l13_n642(x)
+ if (x < 1)
+ fun_l14_n415(x)
+ else
+ fun_l14_n79(x)
+ end
+end
+
+def fun_l13_n643(x)
+ if (x < 1)
+ fun_l14_n354(x)
+ else
+ fun_l14_n606(x)
+ end
+end
+
+def fun_l13_n644(x)
+ if (x < 1)
+ fun_l14_n270(x)
+ else
+ fun_l14_n644(x)
+ end
+end
+
+def fun_l13_n645(x)
+ if (x < 1)
+ fun_l14_n345(x)
+ else
+ fun_l14_n299(x)
+ end
+end
+
+def fun_l13_n646(x)
+ if (x < 1)
+ fun_l14_n384(x)
+ else
+ fun_l14_n97(x)
+ end
+end
+
+def fun_l13_n647(x)
+ if (x < 1)
+ fun_l14_n86(x)
+ else
+ fun_l14_n103(x)
+ end
+end
+
+def fun_l13_n648(x)
+ if (x < 1)
+ fun_l14_n765(x)
+ else
+ fun_l14_n498(x)
+ end
+end
+
+def fun_l13_n649(x)
+ if (x < 1)
+ fun_l14_n135(x)
+ else
+ fun_l14_n993(x)
+ end
+end
+
+def fun_l13_n650(x)
+ if (x < 1)
+ fun_l14_n837(x)
+ else
+ fun_l14_n576(x)
+ end
+end
+
+def fun_l13_n651(x)
+ if (x < 1)
+ fun_l14_n75(x)
+ else
+ fun_l14_n351(x)
+ end
+end
+
+def fun_l13_n652(x)
+ if (x < 1)
+ fun_l14_n932(x)
+ else
+ fun_l14_n646(x)
+ end
+end
+
+def fun_l13_n653(x)
+ if (x < 1)
+ fun_l14_n908(x)
+ else
+ fun_l14_n384(x)
+ end
+end
+
+def fun_l13_n654(x)
+ if (x < 1)
+ fun_l14_n540(x)
+ else
+ fun_l14_n946(x)
+ end
+end
+
+def fun_l13_n655(x)
+ if (x < 1)
+ fun_l14_n686(x)
+ else
+ fun_l14_n926(x)
+ end
+end
+
+def fun_l13_n656(x)
+ if (x < 1)
+ fun_l14_n567(x)
+ else
+ fun_l14_n815(x)
+ end
+end
+
+def fun_l13_n657(x)
+ if (x < 1)
+ fun_l14_n101(x)
+ else
+ fun_l14_n960(x)
+ end
+end
+
+def fun_l13_n658(x)
+ if (x < 1)
+ fun_l14_n956(x)
+ else
+ fun_l14_n980(x)
+ end
+end
+
+def fun_l13_n659(x)
+ if (x < 1)
+ fun_l14_n196(x)
+ else
+ fun_l14_n632(x)
+ end
+end
+
+def fun_l13_n660(x)
+ if (x < 1)
+ fun_l14_n83(x)
+ else
+ fun_l14_n288(x)
+ end
+end
+
+def fun_l13_n661(x)
+ if (x < 1)
+ fun_l14_n907(x)
+ else
+ fun_l14_n719(x)
+ end
+end
+
+def fun_l13_n662(x)
+ if (x < 1)
+ fun_l14_n922(x)
+ else
+ fun_l14_n186(x)
+ end
+end
+
+def fun_l13_n663(x)
+ if (x < 1)
+ fun_l14_n439(x)
+ else
+ fun_l14_n890(x)
+ end
+end
+
+def fun_l13_n664(x)
+ if (x < 1)
+ fun_l14_n310(x)
+ else
+ fun_l14_n534(x)
+ end
+end
+
+def fun_l13_n665(x)
+ if (x < 1)
+ fun_l14_n584(x)
+ else
+ fun_l14_n322(x)
+ end
+end
+
+def fun_l13_n666(x)
+ if (x < 1)
+ fun_l14_n385(x)
+ else
+ fun_l14_n466(x)
+ end
+end
+
+def fun_l13_n667(x)
+ if (x < 1)
+ fun_l14_n387(x)
+ else
+ fun_l14_n284(x)
+ end
+end
+
+def fun_l13_n668(x)
+ if (x < 1)
+ fun_l14_n834(x)
+ else
+ fun_l14_n446(x)
+ end
+end
+
+def fun_l13_n669(x)
+ if (x < 1)
+ fun_l14_n839(x)
+ else
+ fun_l14_n820(x)
+ end
+end
+
+def fun_l13_n670(x)
+ if (x < 1)
+ fun_l14_n666(x)
+ else
+ fun_l14_n690(x)
+ end
+end
+
+def fun_l13_n671(x)
+ if (x < 1)
+ fun_l14_n640(x)
+ else
+ fun_l14_n83(x)
+ end
+end
+
+def fun_l13_n672(x)
+ if (x < 1)
+ fun_l14_n663(x)
+ else
+ fun_l14_n332(x)
+ end
+end
+
+def fun_l13_n673(x)
+ if (x < 1)
+ fun_l14_n776(x)
+ else
+ fun_l14_n818(x)
+ end
+end
+
+def fun_l13_n674(x)
+ if (x < 1)
+ fun_l14_n82(x)
+ else
+ fun_l14_n594(x)
+ end
+end
+
+def fun_l13_n675(x)
+ if (x < 1)
+ fun_l14_n491(x)
+ else
+ fun_l14_n0(x)
+ end
+end
+
+def fun_l13_n676(x)
+ if (x < 1)
+ fun_l14_n963(x)
+ else
+ fun_l14_n634(x)
+ end
+end
+
+def fun_l13_n677(x)
+ if (x < 1)
+ fun_l14_n716(x)
+ else
+ fun_l14_n99(x)
+ end
+end
+
+def fun_l13_n678(x)
+ if (x < 1)
+ fun_l14_n997(x)
+ else
+ fun_l14_n933(x)
+ end
+end
+
+def fun_l13_n679(x)
+ if (x < 1)
+ fun_l14_n171(x)
+ else
+ fun_l14_n356(x)
+ end
+end
+
+def fun_l13_n680(x)
+ if (x < 1)
+ fun_l14_n214(x)
+ else
+ fun_l14_n360(x)
+ end
+end
+
+def fun_l13_n681(x)
+ if (x < 1)
+ fun_l14_n758(x)
+ else
+ fun_l14_n185(x)
+ end
+end
+
+def fun_l13_n682(x)
+ if (x < 1)
+ fun_l14_n480(x)
+ else
+ fun_l14_n572(x)
+ end
+end
+
+def fun_l13_n683(x)
+ if (x < 1)
+ fun_l14_n595(x)
+ else
+ fun_l14_n534(x)
+ end
+end
+
+def fun_l13_n684(x)
+ if (x < 1)
+ fun_l14_n462(x)
+ else
+ fun_l14_n481(x)
+ end
+end
+
+def fun_l13_n685(x)
+ if (x < 1)
+ fun_l14_n946(x)
+ else
+ fun_l14_n726(x)
+ end
+end
+
+def fun_l13_n686(x)
+ if (x < 1)
+ fun_l14_n428(x)
+ else
+ fun_l14_n256(x)
+ end
+end
+
+def fun_l13_n687(x)
+ if (x < 1)
+ fun_l14_n562(x)
+ else
+ fun_l14_n290(x)
+ end
+end
+
+def fun_l13_n688(x)
+ if (x < 1)
+ fun_l14_n679(x)
+ else
+ fun_l14_n787(x)
+ end
+end
+
+def fun_l13_n689(x)
+ if (x < 1)
+ fun_l14_n972(x)
+ else
+ fun_l14_n809(x)
+ end
+end
+
+def fun_l13_n690(x)
+ if (x < 1)
+ fun_l14_n700(x)
+ else
+ fun_l14_n239(x)
+ end
+end
+
+def fun_l13_n691(x)
+ if (x < 1)
+ fun_l14_n525(x)
+ else
+ fun_l14_n251(x)
+ end
+end
+
+def fun_l13_n692(x)
+ if (x < 1)
+ fun_l14_n4(x)
+ else
+ fun_l14_n889(x)
+ end
+end
+
+def fun_l13_n693(x)
+ if (x < 1)
+ fun_l14_n362(x)
+ else
+ fun_l14_n495(x)
+ end
+end
+
+def fun_l13_n694(x)
+ if (x < 1)
+ fun_l14_n466(x)
+ else
+ fun_l14_n820(x)
+ end
+end
+
+def fun_l13_n695(x)
+ if (x < 1)
+ fun_l14_n244(x)
+ else
+ fun_l14_n233(x)
+ end
+end
+
+def fun_l13_n696(x)
+ if (x < 1)
+ fun_l14_n920(x)
+ else
+ fun_l14_n124(x)
+ end
+end
+
+def fun_l13_n697(x)
+ if (x < 1)
+ fun_l14_n926(x)
+ else
+ fun_l14_n417(x)
+ end
+end
+
+def fun_l13_n698(x)
+ if (x < 1)
+ fun_l14_n756(x)
+ else
+ fun_l14_n683(x)
+ end
+end
+
+def fun_l13_n699(x)
+ if (x < 1)
+ fun_l14_n487(x)
+ else
+ fun_l14_n191(x)
+ end
+end
+
+def fun_l13_n700(x)
+ if (x < 1)
+ fun_l14_n316(x)
+ else
+ fun_l14_n123(x)
+ end
+end
+
+def fun_l13_n701(x)
+ if (x < 1)
+ fun_l14_n851(x)
+ else
+ fun_l14_n695(x)
+ end
+end
+
+def fun_l13_n702(x)
+ if (x < 1)
+ fun_l14_n766(x)
+ else
+ fun_l14_n603(x)
+ end
+end
+
+def fun_l13_n703(x)
+ if (x < 1)
+ fun_l14_n689(x)
+ else
+ fun_l14_n524(x)
+ end
+end
+
+def fun_l13_n704(x)
+ if (x < 1)
+ fun_l14_n23(x)
+ else
+ fun_l14_n866(x)
+ end
+end
+
+def fun_l13_n705(x)
+ if (x < 1)
+ fun_l14_n62(x)
+ else
+ fun_l14_n926(x)
+ end
+end
+
+def fun_l13_n706(x)
+ if (x < 1)
+ fun_l14_n53(x)
+ else
+ fun_l14_n567(x)
+ end
+end
+
+def fun_l13_n707(x)
+ if (x < 1)
+ fun_l14_n756(x)
+ else
+ fun_l14_n595(x)
+ end
+end
+
+def fun_l13_n708(x)
+ if (x < 1)
+ fun_l14_n495(x)
+ else
+ fun_l14_n698(x)
+ end
+end
+
+def fun_l13_n709(x)
+ if (x < 1)
+ fun_l14_n511(x)
+ else
+ fun_l14_n131(x)
+ end
+end
+
+def fun_l13_n710(x)
+ if (x < 1)
+ fun_l14_n593(x)
+ else
+ fun_l14_n233(x)
+ end
+end
+
+def fun_l13_n711(x)
+ if (x < 1)
+ fun_l14_n846(x)
+ else
+ fun_l14_n166(x)
+ end
+end
+
+def fun_l13_n712(x)
+ if (x < 1)
+ fun_l14_n759(x)
+ else
+ fun_l14_n103(x)
+ end
+end
+
+def fun_l13_n713(x)
+ if (x < 1)
+ fun_l14_n364(x)
+ else
+ fun_l14_n805(x)
+ end
+end
+
+def fun_l13_n714(x)
+ if (x < 1)
+ fun_l14_n957(x)
+ else
+ fun_l14_n85(x)
+ end
+end
+
+def fun_l13_n715(x)
+ if (x < 1)
+ fun_l14_n877(x)
+ else
+ fun_l14_n111(x)
+ end
+end
+
+def fun_l13_n716(x)
+ if (x < 1)
+ fun_l14_n290(x)
+ else
+ fun_l14_n894(x)
+ end
+end
+
+def fun_l13_n717(x)
+ if (x < 1)
+ fun_l14_n354(x)
+ else
+ fun_l14_n646(x)
+ end
+end
+
+def fun_l13_n718(x)
+ if (x < 1)
+ fun_l14_n364(x)
+ else
+ fun_l14_n810(x)
+ end
+end
+
+def fun_l13_n719(x)
+ if (x < 1)
+ fun_l14_n392(x)
+ else
+ fun_l14_n537(x)
+ end
+end
+
+def fun_l13_n720(x)
+ if (x < 1)
+ fun_l14_n546(x)
+ else
+ fun_l14_n681(x)
+ end
+end
+
+def fun_l13_n721(x)
+ if (x < 1)
+ fun_l14_n153(x)
+ else
+ fun_l14_n925(x)
+ end
+end
+
+def fun_l13_n722(x)
+ if (x < 1)
+ fun_l14_n107(x)
+ else
+ fun_l14_n482(x)
+ end
+end
+
+def fun_l13_n723(x)
+ if (x < 1)
+ fun_l14_n981(x)
+ else
+ fun_l14_n364(x)
+ end
+end
+
+def fun_l13_n724(x)
+ if (x < 1)
+ fun_l14_n869(x)
+ else
+ fun_l14_n871(x)
+ end
+end
+
+def fun_l13_n725(x)
+ if (x < 1)
+ fun_l14_n693(x)
+ else
+ fun_l14_n690(x)
+ end
+end
+
+def fun_l13_n726(x)
+ if (x < 1)
+ fun_l14_n587(x)
+ else
+ fun_l14_n654(x)
+ end
+end
+
+def fun_l13_n727(x)
+ if (x < 1)
+ fun_l14_n150(x)
+ else
+ fun_l14_n904(x)
+ end
+end
+
+def fun_l13_n728(x)
+ if (x < 1)
+ fun_l14_n843(x)
+ else
+ fun_l14_n556(x)
+ end
+end
+
+def fun_l13_n729(x)
+ if (x < 1)
+ fun_l14_n726(x)
+ else
+ fun_l14_n114(x)
+ end
+end
+
+def fun_l13_n730(x)
+ if (x < 1)
+ fun_l14_n976(x)
+ else
+ fun_l14_n740(x)
+ end
+end
+
+def fun_l13_n731(x)
+ if (x < 1)
+ fun_l14_n709(x)
+ else
+ fun_l14_n293(x)
+ end
+end
+
+def fun_l13_n732(x)
+ if (x < 1)
+ fun_l14_n858(x)
+ else
+ fun_l14_n530(x)
+ end
+end
+
+def fun_l13_n733(x)
+ if (x < 1)
+ fun_l14_n789(x)
+ else
+ fun_l14_n475(x)
+ end
+end
+
+def fun_l13_n734(x)
+ if (x < 1)
+ fun_l14_n813(x)
+ else
+ fun_l14_n359(x)
+ end
+end
+
+def fun_l13_n735(x)
+ if (x < 1)
+ fun_l14_n209(x)
+ else
+ fun_l14_n29(x)
+ end
+end
+
+def fun_l13_n736(x)
+ if (x < 1)
+ fun_l14_n710(x)
+ else
+ fun_l14_n823(x)
+ end
+end
+
+def fun_l13_n737(x)
+ if (x < 1)
+ fun_l14_n434(x)
+ else
+ fun_l14_n864(x)
+ end
+end
+
+def fun_l13_n738(x)
+ if (x < 1)
+ fun_l14_n184(x)
+ else
+ fun_l14_n902(x)
+ end
+end
+
+def fun_l13_n739(x)
+ if (x < 1)
+ fun_l14_n206(x)
+ else
+ fun_l14_n65(x)
+ end
+end
+
+def fun_l13_n740(x)
+ if (x < 1)
+ fun_l14_n670(x)
+ else
+ fun_l14_n956(x)
+ end
+end
+
+def fun_l13_n741(x)
+ if (x < 1)
+ fun_l14_n91(x)
+ else
+ fun_l14_n341(x)
+ end
+end
+
+def fun_l13_n742(x)
+ if (x < 1)
+ fun_l14_n864(x)
+ else
+ fun_l14_n864(x)
+ end
+end
+
+def fun_l13_n743(x)
+ if (x < 1)
+ fun_l14_n426(x)
+ else
+ fun_l14_n302(x)
+ end
+end
+
+def fun_l13_n744(x)
+ if (x < 1)
+ fun_l14_n241(x)
+ else
+ fun_l14_n151(x)
+ end
+end
+
+def fun_l13_n745(x)
+ if (x < 1)
+ fun_l14_n161(x)
+ else
+ fun_l14_n715(x)
+ end
+end
+
+def fun_l13_n746(x)
+ if (x < 1)
+ fun_l14_n925(x)
+ else
+ fun_l14_n840(x)
+ end
+end
+
+def fun_l13_n747(x)
+ if (x < 1)
+ fun_l14_n864(x)
+ else
+ fun_l14_n610(x)
+ end
+end
+
+def fun_l13_n748(x)
+ if (x < 1)
+ fun_l14_n322(x)
+ else
+ fun_l14_n69(x)
+ end
+end
+
+def fun_l13_n749(x)
+ if (x < 1)
+ fun_l14_n847(x)
+ else
+ fun_l14_n3(x)
+ end
+end
+
+def fun_l13_n750(x)
+ if (x < 1)
+ fun_l14_n124(x)
+ else
+ fun_l14_n915(x)
+ end
+end
+
+def fun_l13_n751(x)
+ if (x < 1)
+ fun_l14_n163(x)
+ else
+ fun_l14_n136(x)
+ end
+end
+
+def fun_l13_n752(x)
+ if (x < 1)
+ fun_l14_n525(x)
+ else
+ fun_l14_n197(x)
+ end
+end
+
+def fun_l13_n753(x)
+ if (x < 1)
+ fun_l14_n109(x)
+ else
+ fun_l14_n208(x)
+ end
+end
+
+def fun_l13_n754(x)
+ if (x < 1)
+ fun_l14_n597(x)
+ else
+ fun_l14_n307(x)
+ end
+end
+
+def fun_l13_n755(x)
+ if (x < 1)
+ fun_l14_n36(x)
+ else
+ fun_l14_n948(x)
+ end
+end
+
+def fun_l13_n756(x)
+ if (x < 1)
+ fun_l14_n236(x)
+ else
+ fun_l14_n716(x)
+ end
+end
+
+def fun_l13_n757(x)
+ if (x < 1)
+ fun_l14_n326(x)
+ else
+ fun_l14_n870(x)
+ end
+end
+
+def fun_l13_n758(x)
+ if (x < 1)
+ fun_l14_n333(x)
+ else
+ fun_l14_n224(x)
+ end
+end
+
+def fun_l13_n759(x)
+ if (x < 1)
+ fun_l14_n141(x)
+ else
+ fun_l14_n232(x)
+ end
+end
+
+def fun_l13_n760(x)
+ if (x < 1)
+ fun_l14_n653(x)
+ else
+ fun_l14_n559(x)
+ end
+end
+
+def fun_l13_n761(x)
+ if (x < 1)
+ fun_l14_n305(x)
+ else
+ fun_l14_n296(x)
+ end
+end
+
+def fun_l13_n762(x)
+ if (x < 1)
+ fun_l14_n318(x)
+ else
+ fun_l14_n351(x)
+ end
+end
+
+def fun_l13_n763(x)
+ if (x < 1)
+ fun_l14_n685(x)
+ else
+ fun_l14_n643(x)
+ end
+end
+
+def fun_l13_n764(x)
+ if (x < 1)
+ fun_l14_n180(x)
+ else
+ fun_l14_n348(x)
+ end
+end
+
+def fun_l13_n765(x)
+ if (x < 1)
+ fun_l14_n72(x)
+ else
+ fun_l14_n99(x)
+ end
+end
+
+def fun_l13_n766(x)
+ if (x < 1)
+ fun_l14_n463(x)
+ else
+ fun_l14_n135(x)
+ end
+end
+
+def fun_l13_n767(x)
+ if (x < 1)
+ fun_l14_n461(x)
+ else
+ fun_l14_n989(x)
+ end
+end
+
+def fun_l13_n768(x)
+ if (x < 1)
+ fun_l14_n759(x)
+ else
+ fun_l14_n907(x)
+ end
+end
+
+def fun_l13_n769(x)
+ if (x < 1)
+ fun_l14_n330(x)
+ else
+ fun_l14_n268(x)
+ end
+end
+
+def fun_l13_n770(x)
+ if (x < 1)
+ fun_l14_n809(x)
+ else
+ fun_l14_n46(x)
+ end
+end
+
+def fun_l13_n771(x)
+ if (x < 1)
+ fun_l14_n396(x)
+ else
+ fun_l14_n114(x)
+ end
+end
+
+def fun_l13_n772(x)
+ if (x < 1)
+ fun_l14_n300(x)
+ else
+ fun_l14_n60(x)
+ end
+end
+
+def fun_l13_n773(x)
+ if (x < 1)
+ fun_l14_n938(x)
+ else
+ fun_l14_n112(x)
+ end
+end
+
+def fun_l13_n774(x)
+ if (x < 1)
+ fun_l14_n862(x)
+ else
+ fun_l14_n503(x)
+ end
+end
+
+def fun_l13_n775(x)
+ if (x < 1)
+ fun_l14_n305(x)
+ else
+ fun_l14_n11(x)
+ end
+end
+
+def fun_l13_n776(x)
+ if (x < 1)
+ fun_l14_n638(x)
+ else
+ fun_l14_n161(x)
+ end
+end
+
+def fun_l13_n777(x)
+ if (x < 1)
+ fun_l14_n2(x)
+ else
+ fun_l14_n176(x)
+ end
+end
+
+def fun_l13_n778(x)
+ if (x < 1)
+ fun_l14_n967(x)
+ else
+ fun_l14_n739(x)
+ end
+end
+
+def fun_l13_n779(x)
+ if (x < 1)
+ fun_l14_n961(x)
+ else
+ fun_l14_n609(x)
+ end
+end
+
+def fun_l13_n780(x)
+ if (x < 1)
+ fun_l14_n207(x)
+ else
+ fun_l14_n910(x)
+ end
+end
+
+def fun_l13_n781(x)
+ if (x < 1)
+ fun_l14_n370(x)
+ else
+ fun_l14_n163(x)
+ end
+end
+
+def fun_l13_n782(x)
+ if (x < 1)
+ fun_l14_n140(x)
+ else
+ fun_l14_n816(x)
+ end
+end
+
+def fun_l13_n783(x)
+ if (x < 1)
+ fun_l14_n351(x)
+ else
+ fun_l14_n406(x)
+ end
+end
+
+def fun_l13_n784(x)
+ if (x < 1)
+ fun_l14_n790(x)
+ else
+ fun_l14_n175(x)
+ end
+end
+
+def fun_l13_n785(x)
+ if (x < 1)
+ fun_l14_n644(x)
+ else
+ fun_l14_n713(x)
+ end
+end
+
+def fun_l13_n786(x)
+ if (x < 1)
+ fun_l14_n800(x)
+ else
+ fun_l14_n257(x)
+ end
+end
+
+def fun_l13_n787(x)
+ if (x < 1)
+ fun_l14_n248(x)
+ else
+ fun_l14_n709(x)
+ end
+end
+
+def fun_l13_n788(x)
+ if (x < 1)
+ fun_l14_n280(x)
+ else
+ fun_l14_n485(x)
+ end
+end
+
+def fun_l13_n789(x)
+ if (x < 1)
+ fun_l14_n900(x)
+ else
+ fun_l14_n675(x)
+ end
+end
+
+def fun_l13_n790(x)
+ if (x < 1)
+ fun_l14_n65(x)
+ else
+ fun_l14_n426(x)
+ end
+end
+
+def fun_l13_n791(x)
+ if (x < 1)
+ fun_l14_n410(x)
+ else
+ fun_l14_n484(x)
+ end
+end
+
+def fun_l13_n792(x)
+ if (x < 1)
+ fun_l14_n741(x)
+ else
+ fun_l14_n13(x)
+ end
+end
+
+def fun_l13_n793(x)
+ if (x < 1)
+ fun_l14_n550(x)
+ else
+ fun_l14_n884(x)
+ end
+end
+
+def fun_l13_n794(x)
+ if (x < 1)
+ fun_l14_n120(x)
+ else
+ fun_l14_n262(x)
+ end
+end
+
+def fun_l13_n795(x)
+ if (x < 1)
+ fun_l14_n537(x)
+ else
+ fun_l14_n980(x)
+ end
+end
+
+def fun_l13_n796(x)
+ if (x < 1)
+ fun_l14_n742(x)
+ else
+ fun_l14_n6(x)
+ end
+end
+
+def fun_l13_n797(x)
+ if (x < 1)
+ fun_l14_n986(x)
+ else
+ fun_l14_n434(x)
+ end
+end
+
+def fun_l13_n798(x)
+ if (x < 1)
+ fun_l14_n39(x)
+ else
+ fun_l14_n658(x)
+ end
+end
+
+def fun_l13_n799(x)
+ if (x < 1)
+ fun_l14_n838(x)
+ else
+ fun_l14_n810(x)
+ end
+end
+
+def fun_l13_n800(x)
+ if (x < 1)
+ fun_l14_n79(x)
+ else
+ fun_l14_n695(x)
+ end
+end
+
+def fun_l13_n801(x)
+ if (x < 1)
+ fun_l14_n99(x)
+ else
+ fun_l14_n26(x)
+ end
+end
+
+def fun_l13_n802(x)
+ if (x < 1)
+ fun_l14_n839(x)
+ else
+ fun_l14_n430(x)
+ end
+end
+
+def fun_l13_n803(x)
+ if (x < 1)
+ fun_l14_n410(x)
+ else
+ fun_l14_n403(x)
+ end
+end
+
+def fun_l13_n804(x)
+ if (x < 1)
+ fun_l14_n143(x)
+ else
+ fun_l14_n689(x)
+ end
+end
+
+def fun_l13_n805(x)
+ if (x < 1)
+ fun_l14_n695(x)
+ else
+ fun_l14_n721(x)
+ end
+end
+
+def fun_l13_n806(x)
+ if (x < 1)
+ fun_l14_n418(x)
+ else
+ fun_l14_n508(x)
+ end
+end
+
+def fun_l13_n807(x)
+ if (x < 1)
+ fun_l14_n569(x)
+ else
+ fun_l14_n86(x)
+ end
+end
+
+def fun_l13_n808(x)
+ if (x < 1)
+ fun_l14_n670(x)
+ else
+ fun_l14_n690(x)
+ end
+end
+
+def fun_l13_n809(x)
+ if (x < 1)
+ fun_l14_n283(x)
+ else
+ fun_l14_n630(x)
+ end
+end
+
+def fun_l13_n810(x)
+ if (x < 1)
+ fun_l14_n54(x)
+ else
+ fun_l14_n180(x)
+ end
+end
+
+def fun_l13_n811(x)
+ if (x < 1)
+ fun_l14_n669(x)
+ else
+ fun_l14_n131(x)
+ end
+end
+
+def fun_l13_n812(x)
+ if (x < 1)
+ fun_l14_n972(x)
+ else
+ fun_l14_n948(x)
+ end
+end
+
+def fun_l13_n813(x)
+ if (x < 1)
+ fun_l14_n585(x)
+ else
+ fun_l14_n244(x)
+ end
+end
+
+def fun_l13_n814(x)
+ if (x < 1)
+ fun_l14_n277(x)
+ else
+ fun_l14_n530(x)
+ end
+end
+
+def fun_l13_n815(x)
+ if (x < 1)
+ fun_l14_n908(x)
+ else
+ fun_l14_n380(x)
+ end
+end
+
+def fun_l13_n816(x)
+ if (x < 1)
+ fun_l14_n520(x)
+ else
+ fun_l14_n382(x)
+ end
+end
+
+def fun_l13_n817(x)
+ if (x < 1)
+ fun_l14_n40(x)
+ else
+ fun_l14_n757(x)
+ end
+end
+
+def fun_l13_n818(x)
+ if (x < 1)
+ fun_l14_n220(x)
+ else
+ fun_l14_n781(x)
+ end
+end
+
+def fun_l13_n819(x)
+ if (x < 1)
+ fun_l14_n507(x)
+ else
+ fun_l14_n602(x)
+ end
+end
+
+def fun_l13_n820(x)
+ if (x < 1)
+ fun_l14_n39(x)
+ else
+ fun_l14_n798(x)
+ end
+end
+
+def fun_l13_n821(x)
+ if (x < 1)
+ fun_l14_n412(x)
+ else
+ fun_l14_n58(x)
+ end
+end
+
+def fun_l13_n822(x)
+ if (x < 1)
+ fun_l14_n599(x)
+ else
+ fun_l14_n206(x)
+ end
+end
+
+def fun_l13_n823(x)
+ if (x < 1)
+ fun_l14_n294(x)
+ else
+ fun_l14_n711(x)
+ end
+end
+
+def fun_l13_n824(x)
+ if (x < 1)
+ fun_l14_n421(x)
+ else
+ fun_l14_n191(x)
+ end
+end
+
+def fun_l13_n825(x)
+ if (x < 1)
+ fun_l14_n598(x)
+ else
+ fun_l14_n547(x)
+ end
+end
+
+def fun_l13_n826(x)
+ if (x < 1)
+ fun_l14_n131(x)
+ else
+ fun_l14_n29(x)
+ end
+end
+
+def fun_l13_n827(x)
+ if (x < 1)
+ fun_l14_n19(x)
+ else
+ fun_l14_n213(x)
+ end
+end
+
+def fun_l13_n828(x)
+ if (x < 1)
+ fun_l14_n202(x)
+ else
+ fun_l14_n195(x)
+ end
+end
+
+def fun_l13_n829(x)
+ if (x < 1)
+ fun_l14_n133(x)
+ else
+ fun_l14_n949(x)
+ end
+end
+
+def fun_l13_n830(x)
+ if (x < 1)
+ fun_l14_n402(x)
+ else
+ fun_l14_n762(x)
+ end
+end
+
+def fun_l13_n831(x)
+ if (x < 1)
+ fun_l14_n233(x)
+ else
+ fun_l14_n984(x)
+ end
+end
+
+def fun_l13_n832(x)
+ if (x < 1)
+ fun_l14_n309(x)
+ else
+ fun_l14_n545(x)
+ end
+end
+
+def fun_l13_n833(x)
+ if (x < 1)
+ fun_l14_n160(x)
+ else
+ fun_l14_n434(x)
+ end
+end
+
+def fun_l13_n834(x)
+ if (x < 1)
+ fun_l14_n909(x)
+ else
+ fun_l14_n681(x)
+ end
+end
+
+def fun_l13_n835(x)
+ if (x < 1)
+ fun_l14_n747(x)
+ else
+ fun_l14_n813(x)
+ end
+end
+
+def fun_l13_n836(x)
+ if (x < 1)
+ fun_l14_n338(x)
+ else
+ fun_l14_n592(x)
+ end
+end
+
+def fun_l13_n837(x)
+ if (x < 1)
+ fun_l14_n707(x)
+ else
+ fun_l14_n587(x)
+ end
+end
+
+def fun_l13_n838(x)
+ if (x < 1)
+ fun_l14_n655(x)
+ else
+ fun_l14_n207(x)
+ end
+end
+
+def fun_l13_n839(x)
+ if (x < 1)
+ fun_l14_n231(x)
+ else
+ fun_l14_n459(x)
+ end
+end
+
+def fun_l13_n840(x)
+ if (x < 1)
+ fun_l14_n351(x)
+ else
+ fun_l14_n228(x)
+ end
+end
+
+def fun_l13_n841(x)
+ if (x < 1)
+ fun_l14_n205(x)
+ else
+ fun_l14_n628(x)
+ end
+end
+
+def fun_l13_n842(x)
+ if (x < 1)
+ fun_l14_n725(x)
+ else
+ fun_l14_n246(x)
+ end
+end
+
+def fun_l13_n843(x)
+ if (x < 1)
+ fun_l14_n297(x)
+ else
+ fun_l14_n891(x)
+ end
+end
+
+def fun_l13_n844(x)
+ if (x < 1)
+ fun_l14_n598(x)
+ else
+ fun_l14_n168(x)
+ end
+end
+
+def fun_l13_n845(x)
+ if (x < 1)
+ fun_l14_n101(x)
+ else
+ fun_l14_n681(x)
+ end
+end
+
+def fun_l13_n846(x)
+ if (x < 1)
+ fun_l14_n162(x)
+ else
+ fun_l14_n270(x)
+ end
+end
+
+def fun_l13_n847(x)
+ if (x < 1)
+ fun_l14_n84(x)
+ else
+ fun_l14_n957(x)
+ end
+end
+
+def fun_l13_n848(x)
+ if (x < 1)
+ fun_l14_n16(x)
+ else
+ fun_l14_n708(x)
+ end
+end
+
+def fun_l13_n849(x)
+ if (x < 1)
+ fun_l14_n636(x)
+ else
+ fun_l14_n518(x)
+ end
+end
+
+def fun_l13_n850(x)
+ if (x < 1)
+ fun_l14_n379(x)
+ else
+ fun_l14_n595(x)
+ end
+end
+
+def fun_l13_n851(x)
+ if (x < 1)
+ fun_l14_n258(x)
+ else
+ fun_l14_n757(x)
+ end
+end
+
+def fun_l13_n852(x)
+ if (x < 1)
+ fun_l14_n995(x)
+ else
+ fun_l14_n380(x)
+ end
+end
+
+def fun_l13_n853(x)
+ if (x < 1)
+ fun_l14_n505(x)
+ else
+ fun_l14_n934(x)
+ end
+end
+
+def fun_l13_n854(x)
+ if (x < 1)
+ fun_l14_n268(x)
+ else
+ fun_l14_n36(x)
+ end
+end
+
+def fun_l13_n855(x)
+ if (x < 1)
+ fun_l14_n795(x)
+ else
+ fun_l14_n905(x)
+ end
+end
+
+def fun_l13_n856(x)
+ if (x < 1)
+ fun_l14_n136(x)
+ else
+ fun_l14_n750(x)
+ end
+end
+
+def fun_l13_n857(x)
+ if (x < 1)
+ fun_l14_n120(x)
+ else
+ fun_l14_n156(x)
+ end
+end
+
+def fun_l13_n858(x)
+ if (x < 1)
+ fun_l14_n157(x)
+ else
+ fun_l14_n414(x)
+ end
+end
+
+def fun_l13_n859(x)
+ if (x < 1)
+ fun_l14_n926(x)
+ else
+ fun_l14_n718(x)
+ end
+end
+
+def fun_l13_n860(x)
+ if (x < 1)
+ fun_l14_n904(x)
+ else
+ fun_l14_n821(x)
+ end
+end
+
+def fun_l13_n861(x)
+ if (x < 1)
+ fun_l14_n887(x)
+ else
+ fun_l14_n407(x)
+ end
+end
+
+def fun_l13_n862(x)
+ if (x < 1)
+ fun_l14_n870(x)
+ else
+ fun_l14_n950(x)
+ end
+end
+
+def fun_l13_n863(x)
+ if (x < 1)
+ fun_l14_n267(x)
+ else
+ fun_l14_n712(x)
+ end
+end
+
+def fun_l13_n864(x)
+ if (x < 1)
+ fun_l14_n409(x)
+ else
+ fun_l14_n309(x)
+ end
+end
+
+def fun_l13_n865(x)
+ if (x < 1)
+ fun_l14_n345(x)
+ else
+ fun_l14_n110(x)
+ end
+end
+
+def fun_l13_n866(x)
+ if (x < 1)
+ fun_l14_n401(x)
+ else
+ fun_l14_n970(x)
+ end
+end
+
+def fun_l13_n867(x)
+ if (x < 1)
+ fun_l14_n814(x)
+ else
+ fun_l14_n260(x)
+ end
+end
+
+def fun_l13_n868(x)
+ if (x < 1)
+ fun_l14_n490(x)
+ else
+ fun_l14_n31(x)
+ end
+end
+
+def fun_l13_n869(x)
+ if (x < 1)
+ fun_l14_n214(x)
+ else
+ fun_l14_n425(x)
+ end
+end
+
+def fun_l13_n870(x)
+ if (x < 1)
+ fun_l14_n660(x)
+ else
+ fun_l14_n703(x)
+ end
+end
+
+def fun_l13_n871(x)
+ if (x < 1)
+ fun_l14_n650(x)
+ else
+ fun_l14_n257(x)
+ end
+end
+
+def fun_l13_n872(x)
+ if (x < 1)
+ fun_l14_n701(x)
+ else
+ fun_l14_n55(x)
+ end
+end
+
+def fun_l13_n873(x)
+ if (x < 1)
+ fun_l14_n225(x)
+ else
+ fun_l14_n701(x)
+ end
+end
+
+def fun_l13_n874(x)
+ if (x < 1)
+ fun_l14_n525(x)
+ else
+ fun_l14_n793(x)
+ end
+end
+
+def fun_l13_n875(x)
+ if (x < 1)
+ fun_l14_n87(x)
+ else
+ fun_l14_n807(x)
+ end
+end
+
+def fun_l13_n876(x)
+ if (x < 1)
+ fun_l14_n24(x)
+ else
+ fun_l14_n15(x)
+ end
+end
+
+def fun_l13_n877(x)
+ if (x < 1)
+ fun_l14_n120(x)
+ else
+ fun_l14_n551(x)
+ end
+end
+
+def fun_l13_n878(x)
+ if (x < 1)
+ fun_l14_n703(x)
+ else
+ fun_l14_n67(x)
+ end
+end
+
+def fun_l13_n879(x)
+ if (x < 1)
+ fun_l14_n496(x)
+ else
+ fun_l14_n197(x)
+ end
+end
+
+def fun_l13_n880(x)
+ if (x < 1)
+ fun_l14_n369(x)
+ else
+ fun_l14_n834(x)
+ end
+end
+
+def fun_l13_n881(x)
+ if (x < 1)
+ fun_l14_n892(x)
+ else
+ fun_l14_n210(x)
+ end
+end
+
+def fun_l13_n882(x)
+ if (x < 1)
+ fun_l14_n587(x)
+ else
+ fun_l14_n472(x)
+ end
+end
+
+def fun_l13_n883(x)
+ if (x < 1)
+ fun_l14_n1(x)
+ else
+ fun_l14_n778(x)
+ end
+end
+
+def fun_l13_n884(x)
+ if (x < 1)
+ fun_l14_n762(x)
+ else
+ fun_l14_n286(x)
+ end
+end
+
+def fun_l13_n885(x)
+ if (x < 1)
+ fun_l14_n36(x)
+ else
+ fun_l14_n326(x)
+ end
+end
+
+def fun_l13_n886(x)
+ if (x < 1)
+ fun_l14_n857(x)
+ else
+ fun_l14_n564(x)
+ end
+end
+
+def fun_l13_n887(x)
+ if (x < 1)
+ fun_l14_n461(x)
+ else
+ fun_l14_n415(x)
+ end
+end
+
+def fun_l13_n888(x)
+ if (x < 1)
+ fun_l14_n225(x)
+ else
+ fun_l14_n783(x)
+ end
+end
+
+def fun_l13_n889(x)
+ if (x < 1)
+ fun_l14_n10(x)
+ else
+ fun_l14_n114(x)
+ end
+end
+
+def fun_l13_n890(x)
+ if (x < 1)
+ fun_l14_n670(x)
+ else
+ fun_l14_n473(x)
+ end
+end
+
+def fun_l13_n891(x)
+ if (x < 1)
+ fun_l14_n777(x)
+ else
+ fun_l14_n98(x)
+ end
+end
+
+def fun_l13_n892(x)
+ if (x < 1)
+ fun_l14_n600(x)
+ else
+ fun_l14_n808(x)
+ end
+end
+
+def fun_l13_n893(x)
+ if (x < 1)
+ fun_l14_n605(x)
+ else
+ fun_l14_n687(x)
+ end
+end
+
+def fun_l13_n894(x)
+ if (x < 1)
+ fun_l14_n29(x)
+ else
+ fun_l14_n190(x)
+ end
+end
+
+def fun_l13_n895(x)
+ if (x < 1)
+ fun_l14_n26(x)
+ else
+ fun_l14_n887(x)
+ end
+end
+
+def fun_l13_n896(x)
+ if (x < 1)
+ fun_l14_n680(x)
+ else
+ fun_l14_n413(x)
+ end
+end
+
+def fun_l13_n897(x)
+ if (x < 1)
+ fun_l14_n634(x)
+ else
+ fun_l14_n184(x)
+ end
+end
+
+def fun_l13_n898(x)
+ if (x < 1)
+ fun_l14_n420(x)
+ else
+ fun_l14_n603(x)
+ end
+end
+
+def fun_l13_n899(x)
+ if (x < 1)
+ fun_l14_n702(x)
+ else
+ fun_l14_n54(x)
+ end
+end
+
+def fun_l13_n900(x)
+ if (x < 1)
+ fun_l14_n620(x)
+ else
+ fun_l14_n849(x)
+ end
+end
+
+def fun_l13_n901(x)
+ if (x < 1)
+ fun_l14_n848(x)
+ else
+ fun_l14_n384(x)
+ end
+end
+
+def fun_l13_n902(x)
+ if (x < 1)
+ fun_l14_n726(x)
+ else
+ fun_l14_n624(x)
+ end
+end
+
+def fun_l13_n903(x)
+ if (x < 1)
+ fun_l14_n663(x)
+ else
+ fun_l14_n395(x)
+ end
+end
+
+def fun_l13_n904(x)
+ if (x < 1)
+ fun_l14_n803(x)
+ else
+ fun_l14_n979(x)
+ end
+end
+
+def fun_l13_n905(x)
+ if (x < 1)
+ fun_l14_n487(x)
+ else
+ fun_l14_n530(x)
+ end
+end
+
+def fun_l13_n906(x)
+ if (x < 1)
+ fun_l14_n737(x)
+ else
+ fun_l14_n679(x)
+ end
+end
+
+def fun_l13_n907(x)
+ if (x < 1)
+ fun_l14_n815(x)
+ else
+ fun_l14_n84(x)
+ end
+end
+
+def fun_l13_n908(x)
+ if (x < 1)
+ fun_l14_n116(x)
+ else
+ fun_l14_n820(x)
+ end
+end
+
+def fun_l13_n909(x)
+ if (x < 1)
+ fun_l14_n353(x)
+ else
+ fun_l14_n949(x)
+ end
+end
+
+def fun_l13_n910(x)
+ if (x < 1)
+ fun_l14_n271(x)
+ else
+ fun_l14_n168(x)
+ end
+end
+
+def fun_l13_n911(x)
+ if (x < 1)
+ fun_l14_n54(x)
+ else
+ fun_l14_n236(x)
+ end
+end
+
+def fun_l13_n912(x)
+ if (x < 1)
+ fun_l14_n391(x)
+ else
+ fun_l14_n152(x)
+ end
+end
+
+def fun_l13_n913(x)
+ if (x < 1)
+ fun_l14_n450(x)
+ else
+ fun_l14_n521(x)
+ end
+end
+
+def fun_l13_n914(x)
+ if (x < 1)
+ fun_l14_n36(x)
+ else
+ fun_l14_n995(x)
+ end
+end
+
+def fun_l13_n915(x)
+ if (x < 1)
+ fun_l14_n177(x)
+ else
+ fun_l14_n358(x)
+ end
+end
+
+def fun_l13_n916(x)
+ if (x < 1)
+ fun_l14_n36(x)
+ else
+ fun_l14_n32(x)
+ end
+end
+
+def fun_l13_n917(x)
+ if (x < 1)
+ fun_l14_n970(x)
+ else
+ fun_l14_n957(x)
+ end
+end
+
+def fun_l13_n918(x)
+ if (x < 1)
+ fun_l14_n229(x)
+ else
+ fun_l14_n138(x)
+ end
+end
+
+def fun_l13_n919(x)
+ if (x < 1)
+ fun_l14_n439(x)
+ else
+ fun_l14_n641(x)
+ end
+end
+
+def fun_l13_n920(x)
+ if (x < 1)
+ fun_l14_n318(x)
+ else
+ fun_l14_n649(x)
+ end
+end
+
+def fun_l13_n921(x)
+ if (x < 1)
+ fun_l14_n455(x)
+ else
+ fun_l14_n312(x)
+ end
+end
+
+def fun_l13_n922(x)
+ if (x < 1)
+ fun_l14_n15(x)
+ else
+ fun_l14_n825(x)
+ end
+end
+
+def fun_l13_n923(x)
+ if (x < 1)
+ fun_l14_n546(x)
+ else
+ fun_l14_n629(x)
+ end
+end
+
+def fun_l13_n924(x)
+ if (x < 1)
+ fun_l14_n298(x)
+ else
+ fun_l14_n563(x)
+ end
+end
+
+def fun_l13_n925(x)
+ if (x < 1)
+ fun_l14_n312(x)
+ else
+ fun_l14_n736(x)
+ end
+end
+
+def fun_l13_n926(x)
+ if (x < 1)
+ fun_l14_n767(x)
+ else
+ fun_l14_n107(x)
+ end
+end
+
+def fun_l13_n927(x)
+ if (x < 1)
+ fun_l14_n966(x)
+ else
+ fun_l14_n765(x)
+ end
+end
+
+def fun_l13_n928(x)
+ if (x < 1)
+ fun_l14_n545(x)
+ else
+ fun_l14_n383(x)
+ end
+end
+
+def fun_l13_n929(x)
+ if (x < 1)
+ fun_l14_n389(x)
+ else
+ fun_l14_n48(x)
+ end
+end
+
+def fun_l13_n930(x)
+ if (x < 1)
+ fun_l14_n142(x)
+ else
+ fun_l14_n632(x)
+ end
+end
+
+def fun_l13_n931(x)
+ if (x < 1)
+ fun_l14_n146(x)
+ else
+ fun_l14_n275(x)
+ end
+end
+
+def fun_l13_n932(x)
+ if (x < 1)
+ fun_l14_n754(x)
+ else
+ fun_l14_n380(x)
+ end
+end
+
+def fun_l13_n933(x)
+ if (x < 1)
+ fun_l14_n561(x)
+ else
+ fun_l14_n677(x)
+ end
+end
+
+def fun_l13_n934(x)
+ if (x < 1)
+ fun_l14_n253(x)
+ else
+ fun_l14_n86(x)
+ end
+end
+
+def fun_l13_n935(x)
+ if (x < 1)
+ fun_l14_n528(x)
+ else
+ fun_l14_n177(x)
+ end
+end
+
+def fun_l13_n936(x)
+ if (x < 1)
+ fun_l14_n938(x)
+ else
+ fun_l14_n265(x)
+ end
+end
+
+def fun_l13_n937(x)
+ if (x < 1)
+ fun_l14_n763(x)
+ else
+ fun_l14_n662(x)
+ end
+end
+
+def fun_l13_n938(x)
+ if (x < 1)
+ fun_l14_n836(x)
+ else
+ fun_l14_n734(x)
+ end
+end
+
+def fun_l13_n939(x)
+ if (x < 1)
+ fun_l14_n127(x)
+ else
+ fun_l14_n111(x)
+ end
+end
+
+def fun_l13_n940(x)
+ if (x < 1)
+ fun_l14_n356(x)
+ else
+ fun_l14_n544(x)
+ end
+end
+
+def fun_l13_n941(x)
+ if (x < 1)
+ fun_l14_n525(x)
+ else
+ fun_l14_n762(x)
+ end
+end
+
+def fun_l13_n942(x)
+ if (x < 1)
+ fun_l14_n333(x)
+ else
+ fun_l14_n639(x)
+ end
+end
+
+def fun_l13_n943(x)
+ if (x < 1)
+ fun_l14_n452(x)
+ else
+ fun_l14_n944(x)
+ end
+end
+
+def fun_l13_n944(x)
+ if (x < 1)
+ fun_l14_n827(x)
+ else
+ fun_l14_n961(x)
+ end
+end
+
+def fun_l13_n945(x)
+ if (x < 1)
+ fun_l14_n991(x)
+ else
+ fun_l14_n431(x)
+ end
+end
+
+def fun_l13_n946(x)
+ if (x < 1)
+ fun_l14_n646(x)
+ else
+ fun_l14_n183(x)
+ end
+end
+
+def fun_l13_n947(x)
+ if (x < 1)
+ fun_l14_n107(x)
+ else
+ fun_l14_n273(x)
+ end
+end
+
+def fun_l13_n948(x)
+ if (x < 1)
+ fun_l14_n210(x)
+ else
+ fun_l14_n664(x)
+ end
+end
+
+def fun_l13_n949(x)
+ if (x < 1)
+ fun_l14_n542(x)
+ else
+ fun_l14_n462(x)
+ end
+end
+
+def fun_l13_n950(x)
+ if (x < 1)
+ fun_l14_n891(x)
+ else
+ fun_l14_n486(x)
+ end
+end
+
+def fun_l13_n951(x)
+ if (x < 1)
+ fun_l14_n527(x)
+ else
+ fun_l14_n721(x)
+ end
+end
+
+def fun_l13_n952(x)
+ if (x < 1)
+ fun_l14_n745(x)
+ else
+ fun_l14_n11(x)
+ end
+end
+
+def fun_l13_n953(x)
+ if (x < 1)
+ fun_l14_n427(x)
+ else
+ fun_l14_n521(x)
+ end
+end
+
+def fun_l13_n954(x)
+ if (x < 1)
+ fun_l14_n907(x)
+ else
+ fun_l14_n878(x)
+ end
+end
+
+def fun_l13_n955(x)
+ if (x < 1)
+ fun_l14_n818(x)
+ else
+ fun_l14_n722(x)
+ end
+end
+
+def fun_l13_n956(x)
+ if (x < 1)
+ fun_l14_n567(x)
+ else
+ fun_l14_n71(x)
+ end
+end
+
+def fun_l13_n957(x)
+ if (x < 1)
+ fun_l14_n203(x)
+ else
+ fun_l14_n221(x)
+ end
+end
+
+def fun_l13_n958(x)
+ if (x < 1)
+ fun_l14_n173(x)
+ else
+ fun_l14_n854(x)
+ end
+end
+
+def fun_l13_n959(x)
+ if (x < 1)
+ fun_l14_n201(x)
+ else
+ fun_l14_n930(x)
+ end
+end
+
+def fun_l13_n960(x)
+ if (x < 1)
+ fun_l14_n736(x)
+ else
+ fun_l14_n539(x)
+ end
+end
+
+def fun_l13_n961(x)
+ if (x < 1)
+ fun_l14_n459(x)
+ else
+ fun_l14_n771(x)
+ end
+end
+
+def fun_l13_n962(x)
+ if (x < 1)
+ fun_l14_n682(x)
+ else
+ fun_l14_n19(x)
+ end
+end
+
+def fun_l13_n963(x)
+ if (x < 1)
+ fun_l14_n897(x)
+ else
+ fun_l14_n650(x)
+ end
+end
+
+def fun_l13_n964(x)
+ if (x < 1)
+ fun_l14_n814(x)
+ else
+ fun_l14_n726(x)
+ end
+end
+
+def fun_l13_n965(x)
+ if (x < 1)
+ fun_l14_n31(x)
+ else
+ fun_l14_n211(x)
+ end
+end
+
+def fun_l13_n966(x)
+ if (x < 1)
+ fun_l14_n89(x)
+ else
+ fun_l14_n407(x)
+ end
+end
+
+def fun_l13_n967(x)
+ if (x < 1)
+ fun_l14_n772(x)
+ else
+ fun_l14_n7(x)
+ end
+end
+
+def fun_l13_n968(x)
+ if (x < 1)
+ fun_l14_n764(x)
+ else
+ fun_l14_n523(x)
+ end
+end
+
+def fun_l13_n969(x)
+ if (x < 1)
+ fun_l14_n680(x)
+ else
+ fun_l14_n674(x)
+ end
+end
+
+def fun_l13_n970(x)
+ if (x < 1)
+ fun_l14_n517(x)
+ else
+ fun_l14_n346(x)
+ end
+end
+
+def fun_l13_n971(x)
+ if (x < 1)
+ fun_l14_n136(x)
+ else
+ fun_l14_n921(x)
+ end
+end
+
+def fun_l13_n972(x)
+ if (x < 1)
+ fun_l14_n400(x)
+ else
+ fun_l14_n901(x)
+ end
+end
+
+def fun_l13_n973(x)
+ if (x < 1)
+ fun_l14_n62(x)
+ else
+ fun_l14_n784(x)
+ end
+end
+
+def fun_l13_n974(x)
+ if (x < 1)
+ fun_l14_n411(x)
+ else
+ fun_l14_n889(x)
+ end
+end
+
+def fun_l13_n975(x)
+ if (x < 1)
+ fun_l14_n291(x)
+ else
+ fun_l14_n198(x)
+ end
+end
+
+def fun_l13_n976(x)
+ if (x < 1)
+ fun_l14_n229(x)
+ else
+ fun_l14_n346(x)
+ end
+end
+
+def fun_l13_n977(x)
+ if (x < 1)
+ fun_l14_n769(x)
+ else
+ fun_l14_n381(x)
+ end
+end
+
+def fun_l13_n978(x)
+ if (x < 1)
+ fun_l14_n430(x)
+ else
+ fun_l14_n205(x)
+ end
+end
+
+def fun_l13_n979(x)
+ if (x < 1)
+ fun_l14_n170(x)
+ else
+ fun_l14_n927(x)
+ end
+end
+
+def fun_l13_n980(x)
+ if (x < 1)
+ fun_l14_n12(x)
+ else
+ fun_l14_n605(x)
+ end
+end
+
+def fun_l13_n981(x)
+ if (x < 1)
+ fun_l14_n613(x)
+ else
+ fun_l14_n912(x)
+ end
+end
+
+def fun_l13_n982(x)
+ if (x < 1)
+ fun_l14_n982(x)
+ else
+ fun_l14_n707(x)
+ end
+end
+
+def fun_l13_n983(x)
+ if (x < 1)
+ fun_l14_n230(x)
+ else
+ fun_l14_n239(x)
+ end
+end
+
+def fun_l13_n984(x)
+ if (x < 1)
+ fun_l14_n55(x)
+ else
+ fun_l14_n337(x)
+ end
+end
+
+def fun_l13_n985(x)
+ if (x < 1)
+ fun_l14_n853(x)
+ else
+ fun_l14_n425(x)
+ end
+end
+
+def fun_l13_n986(x)
+ if (x < 1)
+ fun_l14_n14(x)
+ else
+ fun_l14_n921(x)
+ end
+end
+
+def fun_l13_n987(x)
+ if (x < 1)
+ fun_l14_n166(x)
+ else
+ fun_l14_n948(x)
+ end
+end
+
+def fun_l13_n988(x)
+ if (x < 1)
+ fun_l14_n752(x)
+ else
+ fun_l14_n226(x)
+ end
+end
+
+def fun_l13_n989(x)
+ if (x < 1)
+ fun_l14_n730(x)
+ else
+ fun_l14_n671(x)
+ end
+end
+
+def fun_l13_n990(x)
+ if (x < 1)
+ fun_l14_n603(x)
+ else
+ fun_l14_n903(x)
+ end
+end
+
+def fun_l13_n991(x)
+ if (x < 1)
+ fun_l14_n598(x)
+ else
+ fun_l14_n842(x)
+ end
+end
+
+def fun_l13_n992(x)
+ if (x < 1)
+ fun_l14_n230(x)
+ else
+ fun_l14_n704(x)
+ end
+end
+
+def fun_l13_n993(x)
+ if (x < 1)
+ fun_l14_n897(x)
+ else
+ fun_l14_n190(x)
+ end
+end
+
+def fun_l13_n994(x)
+ if (x < 1)
+ fun_l14_n640(x)
+ else
+ fun_l14_n622(x)
+ end
+end
+
+def fun_l13_n995(x)
+ if (x < 1)
+ fun_l14_n988(x)
+ else
+ fun_l14_n471(x)
+ end
+end
+
+def fun_l13_n996(x)
+ if (x < 1)
+ fun_l14_n721(x)
+ else
+ fun_l14_n672(x)
+ end
+end
+
+def fun_l13_n997(x)
+ if (x < 1)
+ fun_l14_n425(x)
+ else
+ fun_l14_n885(x)
+ end
+end
+
+def fun_l13_n998(x)
+ if (x < 1)
+ fun_l14_n279(x)
+ else
+ fun_l14_n966(x)
+ end
+end
+
+def fun_l13_n999(x)
+ if (x < 1)
+ fun_l14_n610(x)
+ else
+ fun_l14_n319(x)
+ end
+end
+
+def fun_l14_n0(x)
+ if (x < 1)
+ fun_l15_n46(x)
+ else
+ fun_l15_n966(x)
+ end
+end
+
+def fun_l14_n1(x)
+ if (x < 1)
+ fun_l15_n360(x)
+ else
+ fun_l15_n637(x)
+ end
+end
+
+def fun_l14_n2(x)
+ if (x < 1)
+ fun_l15_n381(x)
+ else
+ fun_l15_n728(x)
+ end
+end
+
+def fun_l14_n3(x)
+ if (x < 1)
+ fun_l15_n189(x)
+ else
+ fun_l15_n826(x)
+ end
+end
+
+def fun_l14_n4(x)
+ if (x < 1)
+ fun_l15_n789(x)
+ else
+ fun_l15_n157(x)
+ end
+end
+
+def fun_l14_n5(x)
+ if (x < 1)
+ fun_l15_n132(x)
+ else
+ fun_l15_n703(x)
+ end
+end
+
+def fun_l14_n6(x)
+ if (x < 1)
+ fun_l15_n64(x)
+ else
+ fun_l15_n537(x)
+ end
+end
+
+def fun_l14_n7(x)
+ if (x < 1)
+ fun_l15_n423(x)
+ else
+ fun_l15_n162(x)
+ end
+end
+
+def fun_l14_n8(x)
+ if (x < 1)
+ fun_l15_n177(x)
+ else
+ fun_l15_n923(x)
+ end
+end
+
+def fun_l14_n9(x)
+ if (x < 1)
+ fun_l15_n508(x)
+ else
+ fun_l15_n135(x)
+ end
+end
+
+def fun_l14_n10(x)
+ if (x < 1)
+ fun_l15_n640(x)
+ else
+ fun_l15_n869(x)
+ end
+end
+
+def fun_l14_n11(x)
+ if (x < 1)
+ fun_l15_n592(x)
+ else
+ fun_l15_n519(x)
+ end
+end
+
+def fun_l14_n12(x)
+ if (x < 1)
+ fun_l15_n332(x)
+ else
+ fun_l15_n263(x)
+ end
+end
+
+def fun_l14_n13(x)
+ if (x < 1)
+ fun_l15_n644(x)
+ else
+ fun_l15_n21(x)
+ end
+end
+
+def fun_l14_n14(x)
+ if (x < 1)
+ fun_l15_n436(x)
+ else
+ fun_l15_n566(x)
+ end
+end
+
+def fun_l14_n15(x)
+ if (x < 1)
+ fun_l15_n160(x)
+ else
+ fun_l15_n291(x)
+ end
+end
+
+def fun_l14_n16(x)
+ if (x < 1)
+ fun_l15_n726(x)
+ else
+ fun_l15_n704(x)
+ end
+end
+
+def fun_l14_n17(x)
+ if (x < 1)
+ fun_l15_n237(x)
+ else
+ fun_l15_n962(x)
+ end
+end
+
+def fun_l14_n18(x)
+ if (x < 1)
+ fun_l15_n941(x)
+ else
+ fun_l15_n217(x)
+ end
+end
+
+def fun_l14_n19(x)
+ if (x < 1)
+ fun_l15_n904(x)
+ else
+ fun_l15_n36(x)
+ end
+end
+
+def fun_l14_n20(x)
+ if (x < 1)
+ fun_l15_n74(x)
+ else
+ fun_l15_n790(x)
+ end
+end
+
+def fun_l14_n21(x)
+ if (x < 1)
+ fun_l15_n694(x)
+ else
+ fun_l15_n298(x)
+ end
+end
+
+def fun_l14_n22(x)
+ if (x < 1)
+ fun_l15_n757(x)
+ else
+ fun_l15_n636(x)
+ end
+end
+
+def fun_l14_n23(x)
+ if (x < 1)
+ fun_l15_n989(x)
+ else
+ fun_l15_n508(x)
+ end
+end
+
+def fun_l14_n24(x)
+ if (x < 1)
+ fun_l15_n80(x)
+ else
+ fun_l15_n686(x)
+ end
+end
+
+def fun_l14_n25(x)
+ if (x < 1)
+ fun_l15_n365(x)
+ else
+ fun_l15_n922(x)
+ end
+end
+
+def fun_l14_n26(x)
+ if (x < 1)
+ fun_l15_n922(x)
+ else
+ fun_l15_n207(x)
+ end
+end
+
+def fun_l14_n27(x)
+ if (x < 1)
+ fun_l15_n406(x)
+ else
+ fun_l15_n481(x)
+ end
+end
+
+def fun_l14_n28(x)
+ if (x < 1)
+ fun_l15_n986(x)
+ else
+ fun_l15_n181(x)
+ end
+end
+
+def fun_l14_n29(x)
+ if (x < 1)
+ fun_l15_n958(x)
+ else
+ fun_l15_n804(x)
+ end
+end
+
+def fun_l14_n30(x)
+ if (x < 1)
+ fun_l15_n233(x)
+ else
+ fun_l15_n877(x)
+ end
+end
+
+def fun_l14_n31(x)
+ if (x < 1)
+ fun_l15_n648(x)
+ else
+ fun_l15_n547(x)
+ end
+end
+
+def fun_l14_n32(x)
+ if (x < 1)
+ fun_l15_n641(x)
+ else
+ fun_l15_n628(x)
+ end
+end
+
+def fun_l14_n33(x)
+ if (x < 1)
+ fun_l15_n351(x)
+ else
+ fun_l15_n280(x)
+ end
+end
+
+def fun_l14_n34(x)
+ if (x < 1)
+ fun_l15_n373(x)
+ else
+ fun_l15_n948(x)
+ end
+end
+
+def fun_l14_n35(x)
+ if (x < 1)
+ fun_l15_n761(x)
+ else
+ fun_l15_n384(x)
+ end
+end
+
+def fun_l14_n36(x)
+ if (x < 1)
+ fun_l15_n75(x)
+ else
+ fun_l15_n581(x)
+ end
+end
+
+def fun_l14_n37(x)
+ if (x < 1)
+ fun_l15_n962(x)
+ else
+ fun_l15_n723(x)
+ end
+end
+
+def fun_l14_n38(x)
+ if (x < 1)
+ fun_l15_n422(x)
+ else
+ fun_l15_n953(x)
+ end
+end
+
+def fun_l14_n39(x)
+ if (x < 1)
+ fun_l15_n123(x)
+ else
+ fun_l15_n989(x)
+ end
+end
+
+def fun_l14_n40(x)
+ if (x < 1)
+ fun_l15_n789(x)
+ else
+ fun_l15_n472(x)
+ end
+end
+
+def fun_l14_n41(x)
+ if (x < 1)
+ fun_l15_n261(x)
+ else
+ fun_l15_n997(x)
+ end
+end
+
+def fun_l14_n42(x)
+ if (x < 1)
+ fun_l15_n231(x)
+ else
+ fun_l15_n703(x)
+ end
+end
+
+def fun_l14_n43(x)
+ if (x < 1)
+ fun_l15_n520(x)
+ else
+ fun_l15_n252(x)
+ end
+end
+
+def fun_l14_n44(x)
+ if (x < 1)
+ fun_l15_n966(x)
+ else
+ fun_l15_n244(x)
+ end
+end
+
+def fun_l14_n45(x)
+ if (x < 1)
+ fun_l15_n192(x)
+ else
+ fun_l15_n280(x)
+ end
+end
+
+def fun_l14_n46(x)
+ if (x < 1)
+ fun_l15_n422(x)
+ else
+ fun_l15_n847(x)
+ end
+end
+
+def fun_l14_n47(x)
+ if (x < 1)
+ fun_l15_n228(x)
+ else
+ fun_l15_n564(x)
+ end
+end
+
+def fun_l14_n48(x)
+ if (x < 1)
+ fun_l15_n263(x)
+ else
+ fun_l15_n226(x)
+ end
+end
+
+def fun_l14_n49(x)
+ if (x < 1)
+ fun_l15_n440(x)
+ else
+ fun_l15_n592(x)
+ end
+end
+
+def fun_l14_n50(x)
+ if (x < 1)
+ fun_l15_n464(x)
+ else
+ fun_l15_n135(x)
+ end
+end
+
+def fun_l14_n51(x)
+ if (x < 1)
+ fun_l15_n903(x)
+ else
+ fun_l15_n821(x)
+ end
+end
+
+def fun_l14_n52(x)
+ if (x < 1)
+ fun_l15_n472(x)
+ else
+ fun_l15_n322(x)
+ end
+end
+
+def fun_l14_n53(x)
+ if (x < 1)
+ fun_l15_n107(x)
+ else
+ fun_l15_n497(x)
+ end
+end
+
+def fun_l14_n54(x)
+ if (x < 1)
+ fun_l15_n692(x)
+ else
+ fun_l15_n392(x)
+ end
+end
+
+def fun_l14_n55(x)
+ if (x < 1)
+ fun_l15_n694(x)
+ else
+ fun_l15_n995(x)
+ end
+end
+
+def fun_l14_n56(x)
+ if (x < 1)
+ fun_l15_n181(x)
+ else
+ fun_l15_n200(x)
+ end
+end
+
+def fun_l14_n57(x)
+ if (x < 1)
+ fun_l15_n721(x)
+ else
+ fun_l15_n849(x)
+ end
+end
+
+def fun_l14_n58(x)
+ if (x < 1)
+ fun_l15_n626(x)
+ else
+ fun_l15_n866(x)
+ end
+end
+
+def fun_l14_n59(x)
+ if (x < 1)
+ fun_l15_n689(x)
+ else
+ fun_l15_n387(x)
+ end
+end
+
+def fun_l14_n60(x)
+ if (x < 1)
+ fun_l15_n805(x)
+ else
+ fun_l15_n842(x)
+ end
+end
+
+def fun_l14_n61(x)
+ if (x < 1)
+ fun_l15_n457(x)
+ else
+ fun_l15_n472(x)
+ end
+end
+
+def fun_l14_n62(x)
+ if (x < 1)
+ fun_l15_n884(x)
+ else
+ fun_l15_n786(x)
+ end
+end
+
+def fun_l14_n63(x)
+ if (x < 1)
+ fun_l15_n509(x)
+ else
+ fun_l15_n106(x)
+ end
+end
+
+def fun_l14_n64(x)
+ if (x < 1)
+ fun_l15_n600(x)
+ else
+ fun_l15_n314(x)
+ end
+end
+
+def fun_l14_n65(x)
+ if (x < 1)
+ fun_l15_n761(x)
+ else
+ fun_l15_n362(x)
+ end
+end
+
+def fun_l14_n66(x)
+ if (x < 1)
+ fun_l15_n812(x)
+ else
+ fun_l15_n640(x)
+ end
+end
+
+def fun_l14_n67(x)
+ if (x < 1)
+ fun_l15_n862(x)
+ else
+ fun_l15_n627(x)
+ end
+end
+
+def fun_l14_n68(x)
+ if (x < 1)
+ fun_l15_n503(x)
+ else
+ fun_l15_n381(x)
+ end
+end
+
+def fun_l14_n69(x)
+ if (x < 1)
+ fun_l15_n482(x)
+ else
+ fun_l15_n851(x)
+ end
+end
+
+def fun_l14_n70(x)
+ if (x < 1)
+ fun_l15_n253(x)
+ else
+ fun_l15_n728(x)
+ end
+end
+
+def fun_l14_n71(x)
+ if (x < 1)
+ fun_l15_n195(x)
+ else
+ fun_l15_n537(x)
+ end
+end
+
+def fun_l14_n72(x)
+ if (x < 1)
+ fun_l15_n482(x)
+ else
+ fun_l15_n604(x)
+ end
+end
+
+def fun_l14_n73(x)
+ if (x < 1)
+ fun_l15_n373(x)
+ else
+ fun_l15_n502(x)
+ end
+end
+
+def fun_l14_n74(x)
+ if (x < 1)
+ fun_l15_n183(x)
+ else
+ fun_l15_n50(x)
+ end
+end
+
+def fun_l14_n75(x)
+ if (x < 1)
+ fun_l15_n397(x)
+ else
+ fun_l15_n467(x)
+ end
+end
+
+def fun_l14_n76(x)
+ if (x < 1)
+ fun_l15_n207(x)
+ else
+ fun_l15_n566(x)
+ end
+end
+
+def fun_l14_n77(x)
+ if (x < 1)
+ fun_l15_n416(x)
+ else
+ fun_l15_n846(x)
+ end
+end
+
+def fun_l14_n78(x)
+ if (x < 1)
+ fun_l15_n426(x)
+ else
+ fun_l15_n142(x)
+ end
+end
+
+def fun_l14_n79(x)
+ if (x < 1)
+ fun_l15_n234(x)
+ else
+ fun_l15_n5(x)
+ end
+end
+
+def fun_l14_n80(x)
+ if (x < 1)
+ fun_l15_n133(x)
+ else
+ fun_l15_n216(x)
+ end
+end
+
+def fun_l14_n81(x)
+ if (x < 1)
+ fun_l15_n23(x)
+ else
+ fun_l15_n126(x)
+ end
+end
+
+def fun_l14_n82(x)
+ if (x < 1)
+ fun_l15_n129(x)
+ else
+ fun_l15_n614(x)
+ end
+end
+
+def fun_l14_n83(x)
+ if (x < 1)
+ fun_l15_n560(x)
+ else
+ fun_l15_n559(x)
+ end
+end
+
+def fun_l14_n84(x)
+ if (x < 1)
+ fun_l15_n113(x)
+ else
+ fun_l15_n300(x)
+ end
+end
+
+def fun_l14_n85(x)
+ if (x < 1)
+ fun_l15_n584(x)
+ else
+ fun_l15_n249(x)
+ end
+end
+
+def fun_l14_n86(x)
+ if (x < 1)
+ fun_l15_n933(x)
+ else
+ fun_l15_n280(x)
+ end
+end
+
+def fun_l14_n87(x)
+ if (x < 1)
+ fun_l15_n528(x)
+ else
+ fun_l15_n350(x)
+ end
+end
+
+def fun_l14_n88(x)
+ if (x < 1)
+ fun_l15_n568(x)
+ else
+ fun_l15_n762(x)
+ end
+end
+
+def fun_l14_n89(x)
+ if (x < 1)
+ fun_l15_n190(x)
+ else
+ fun_l15_n858(x)
+ end
+end
+
+def fun_l14_n90(x)
+ if (x < 1)
+ fun_l15_n896(x)
+ else
+ fun_l15_n543(x)
+ end
+end
+
+def fun_l14_n91(x)
+ if (x < 1)
+ fun_l15_n937(x)
+ else
+ fun_l15_n593(x)
+ end
+end
+
+def fun_l14_n92(x)
+ if (x < 1)
+ fun_l15_n135(x)
+ else
+ fun_l15_n5(x)
+ end
+end
+
+def fun_l14_n93(x)
+ if (x < 1)
+ fun_l15_n351(x)
+ else
+ fun_l15_n779(x)
+ end
+end
+
+def fun_l14_n94(x)
+ if (x < 1)
+ fun_l15_n617(x)
+ else
+ fun_l15_n375(x)
+ end
+end
+
+def fun_l14_n95(x)
+ if (x < 1)
+ fun_l15_n111(x)
+ else
+ fun_l15_n870(x)
+ end
+end
+
+def fun_l14_n96(x)
+ if (x < 1)
+ fun_l15_n187(x)
+ else
+ fun_l15_n881(x)
+ end
+end
+
+def fun_l14_n97(x)
+ if (x < 1)
+ fun_l15_n150(x)
+ else
+ fun_l15_n98(x)
+ end
+end
+
+def fun_l14_n98(x)
+ if (x < 1)
+ fun_l15_n629(x)
+ else
+ fun_l15_n548(x)
+ end
+end
+
+def fun_l14_n99(x)
+ if (x < 1)
+ fun_l15_n37(x)
+ else
+ fun_l15_n383(x)
+ end
+end
+
+def fun_l14_n100(x)
+ if (x < 1)
+ fun_l15_n719(x)
+ else
+ fun_l15_n503(x)
+ end
+end
+
+def fun_l14_n101(x)
+ if (x < 1)
+ fun_l15_n415(x)
+ else
+ fun_l15_n650(x)
+ end
+end
+
+def fun_l14_n102(x)
+ if (x < 1)
+ fun_l15_n924(x)
+ else
+ fun_l15_n520(x)
+ end
+end
+
+def fun_l14_n103(x)
+ if (x < 1)
+ fun_l15_n194(x)
+ else
+ fun_l15_n613(x)
+ end
+end
+
+def fun_l14_n104(x)
+ if (x < 1)
+ fun_l15_n909(x)
+ else
+ fun_l15_n333(x)
+ end
+end
+
+def fun_l14_n105(x)
+ if (x < 1)
+ fun_l15_n586(x)
+ else
+ fun_l15_n2(x)
+ end
+end
+
+def fun_l14_n106(x)
+ if (x < 1)
+ fun_l15_n373(x)
+ else
+ fun_l15_n316(x)
+ end
+end
+
+def fun_l14_n107(x)
+ if (x < 1)
+ fun_l15_n737(x)
+ else
+ fun_l15_n469(x)
+ end
+end
+
+def fun_l14_n108(x)
+ if (x < 1)
+ fun_l15_n841(x)
+ else
+ fun_l15_n888(x)
+ end
+end
+
+def fun_l14_n109(x)
+ if (x < 1)
+ fun_l15_n165(x)
+ else
+ fun_l15_n108(x)
+ end
+end
+
+def fun_l14_n110(x)
+ if (x < 1)
+ fun_l15_n344(x)
+ else
+ fun_l15_n893(x)
+ end
+end
+
+def fun_l14_n111(x)
+ if (x < 1)
+ fun_l15_n424(x)
+ else
+ fun_l15_n702(x)
+ end
+end
+
+def fun_l14_n112(x)
+ if (x < 1)
+ fun_l15_n161(x)
+ else
+ fun_l15_n827(x)
+ end
+end
+
+def fun_l14_n113(x)
+ if (x < 1)
+ fun_l15_n982(x)
+ else
+ fun_l15_n172(x)
+ end
+end
+
+def fun_l14_n114(x)
+ if (x < 1)
+ fun_l15_n233(x)
+ else
+ fun_l15_n178(x)
+ end
+end
+
+def fun_l14_n115(x)
+ if (x < 1)
+ fun_l15_n130(x)
+ else
+ fun_l15_n266(x)
+ end
+end
+
+def fun_l14_n116(x)
+ if (x < 1)
+ fun_l15_n32(x)
+ else
+ fun_l15_n63(x)
+ end
+end
+
+def fun_l14_n117(x)
+ if (x < 1)
+ fun_l15_n117(x)
+ else
+ fun_l15_n659(x)
+ end
+end
+
+def fun_l14_n118(x)
+ if (x < 1)
+ fun_l15_n607(x)
+ else
+ fun_l15_n516(x)
+ end
+end
+
+def fun_l14_n119(x)
+ if (x < 1)
+ fun_l15_n30(x)
+ else
+ fun_l15_n130(x)
+ end
+end
+
+def fun_l14_n120(x)
+ if (x < 1)
+ fun_l15_n510(x)
+ else
+ fun_l15_n789(x)
+ end
+end
+
+def fun_l14_n121(x)
+ if (x < 1)
+ fun_l15_n906(x)
+ else
+ fun_l15_n700(x)
+ end
+end
+
+def fun_l14_n122(x)
+ if (x < 1)
+ fun_l15_n51(x)
+ else
+ fun_l15_n378(x)
+ end
+end
+
+def fun_l14_n123(x)
+ if (x < 1)
+ fun_l15_n243(x)
+ else
+ fun_l15_n896(x)
+ end
+end
+
+def fun_l14_n124(x)
+ if (x < 1)
+ fun_l15_n23(x)
+ else
+ fun_l15_n648(x)
+ end
+end
+
+def fun_l14_n125(x)
+ if (x < 1)
+ fun_l15_n290(x)
+ else
+ fun_l15_n604(x)
+ end
+end
+
+def fun_l14_n126(x)
+ if (x < 1)
+ fun_l15_n410(x)
+ else
+ fun_l15_n646(x)
+ end
+end
+
+def fun_l14_n127(x)
+ if (x < 1)
+ fun_l15_n162(x)
+ else
+ fun_l15_n43(x)
+ end
+end
+
+def fun_l14_n128(x)
+ if (x < 1)
+ fun_l15_n775(x)
+ else
+ fun_l15_n176(x)
+ end
+end
+
+def fun_l14_n129(x)
+ if (x < 1)
+ fun_l15_n642(x)
+ else
+ fun_l15_n709(x)
+ end
+end
+
+def fun_l14_n130(x)
+ if (x < 1)
+ fun_l15_n669(x)
+ else
+ fun_l15_n936(x)
+ end
+end
+
+def fun_l14_n131(x)
+ if (x < 1)
+ fun_l15_n301(x)
+ else
+ fun_l15_n578(x)
+ end
+end
+
+def fun_l14_n132(x)
+ if (x < 1)
+ fun_l15_n112(x)
+ else
+ fun_l15_n72(x)
+ end
+end
+
+def fun_l14_n133(x)
+ if (x < 1)
+ fun_l15_n293(x)
+ else
+ fun_l15_n516(x)
+ end
+end
+
+def fun_l14_n134(x)
+ if (x < 1)
+ fun_l15_n525(x)
+ else
+ fun_l15_n199(x)
+ end
+end
+
+def fun_l14_n135(x)
+ if (x < 1)
+ fun_l15_n168(x)
+ else
+ fun_l15_n430(x)
+ end
+end
+
+def fun_l14_n136(x)
+ if (x < 1)
+ fun_l15_n889(x)
+ else
+ fun_l15_n635(x)
+ end
+end
+
+def fun_l14_n137(x)
+ if (x < 1)
+ fun_l15_n348(x)
+ else
+ fun_l15_n445(x)
+ end
+end
+
+def fun_l14_n138(x)
+ if (x < 1)
+ fun_l15_n828(x)
+ else
+ fun_l15_n23(x)
+ end
+end
+
+def fun_l14_n139(x)
+ if (x < 1)
+ fun_l15_n621(x)
+ else
+ fun_l15_n25(x)
+ end
+end
+
+def fun_l14_n140(x)
+ if (x < 1)
+ fun_l15_n268(x)
+ else
+ fun_l15_n105(x)
+ end
+end
+
+def fun_l14_n141(x)
+ if (x < 1)
+ fun_l15_n296(x)
+ else
+ fun_l15_n856(x)
+ end
+end
+
+def fun_l14_n142(x)
+ if (x < 1)
+ fun_l15_n206(x)
+ else
+ fun_l15_n417(x)
+ end
+end
+
+def fun_l14_n143(x)
+ if (x < 1)
+ fun_l15_n203(x)
+ else
+ fun_l15_n240(x)
+ end
+end
+
+def fun_l14_n144(x)
+ if (x < 1)
+ fun_l15_n556(x)
+ else
+ fun_l15_n47(x)
+ end
+end
+
+def fun_l14_n145(x)
+ if (x < 1)
+ fun_l15_n340(x)
+ else
+ fun_l15_n511(x)
+ end
+end
+
+def fun_l14_n146(x)
+ if (x < 1)
+ fun_l15_n250(x)
+ else
+ fun_l15_n402(x)
+ end
+end
+
+def fun_l14_n147(x)
+ if (x < 1)
+ fun_l15_n4(x)
+ else
+ fun_l15_n26(x)
+ end
+end
+
+def fun_l14_n148(x)
+ if (x < 1)
+ fun_l15_n52(x)
+ else
+ fun_l15_n366(x)
+ end
+end
+
+def fun_l14_n149(x)
+ if (x < 1)
+ fun_l15_n163(x)
+ else
+ fun_l15_n884(x)
+ end
+end
+
+def fun_l14_n150(x)
+ if (x < 1)
+ fun_l15_n677(x)
+ else
+ fun_l15_n509(x)
+ end
+end
+
+def fun_l14_n151(x)
+ if (x < 1)
+ fun_l15_n949(x)
+ else
+ fun_l15_n393(x)
+ end
+end
+
+def fun_l14_n152(x)
+ if (x < 1)
+ fun_l15_n719(x)
+ else
+ fun_l15_n307(x)
+ end
+end
+
+def fun_l14_n153(x)
+ if (x < 1)
+ fun_l15_n12(x)
+ else
+ fun_l15_n985(x)
+ end
+end
+
+def fun_l14_n154(x)
+ if (x < 1)
+ fun_l15_n639(x)
+ else
+ fun_l15_n367(x)
+ end
+end
+
+def fun_l14_n155(x)
+ if (x < 1)
+ fun_l15_n401(x)
+ else
+ fun_l15_n431(x)
+ end
+end
+
+def fun_l14_n156(x)
+ if (x < 1)
+ fun_l15_n897(x)
+ else
+ fun_l15_n136(x)
+ end
+end
+
+def fun_l14_n157(x)
+ if (x < 1)
+ fun_l15_n792(x)
+ else
+ fun_l15_n865(x)
+ end
+end
+
+def fun_l14_n158(x)
+ if (x < 1)
+ fun_l15_n851(x)
+ else
+ fun_l15_n167(x)
+ end
+end
+
+def fun_l14_n159(x)
+ if (x < 1)
+ fun_l15_n643(x)
+ else
+ fun_l15_n458(x)
+ end
+end
+
+def fun_l14_n160(x)
+ if (x < 1)
+ fun_l15_n539(x)
+ else
+ fun_l15_n36(x)
+ end
+end
+
+def fun_l14_n161(x)
+ if (x < 1)
+ fun_l15_n91(x)
+ else
+ fun_l15_n130(x)
+ end
+end
+
+def fun_l14_n162(x)
+ if (x < 1)
+ fun_l15_n214(x)
+ else
+ fun_l15_n712(x)
+ end
+end
+
+def fun_l14_n163(x)
+ if (x < 1)
+ fun_l15_n47(x)
+ else
+ fun_l15_n799(x)
+ end
+end
+
+def fun_l14_n164(x)
+ if (x < 1)
+ fun_l15_n715(x)
+ else
+ fun_l15_n888(x)
+ end
+end
+
+def fun_l14_n165(x)
+ if (x < 1)
+ fun_l15_n904(x)
+ else
+ fun_l15_n484(x)
+ end
+end
+
+def fun_l14_n166(x)
+ if (x < 1)
+ fun_l15_n870(x)
+ else
+ fun_l15_n121(x)
+ end
+end
+
+def fun_l14_n167(x)
+ if (x < 1)
+ fun_l15_n960(x)
+ else
+ fun_l15_n33(x)
+ end
+end
+
+def fun_l14_n168(x)
+ if (x < 1)
+ fun_l15_n16(x)
+ else
+ fun_l15_n24(x)
+ end
+end
+
+def fun_l14_n169(x)
+ if (x < 1)
+ fun_l15_n913(x)
+ else
+ fun_l15_n793(x)
+ end
+end
+
+def fun_l14_n170(x)
+ if (x < 1)
+ fun_l15_n35(x)
+ else
+ fun_l15_n204(x)
+ end
+end
+
+def fun_l14_n171(x)
+ if (x < 1)
+ fun_l15_n526(x)
+ else
+ fun_l15_n92(x)
+ end
+end
+
+def fun_l14_n172(x)
+ if (x < 1)
+ fun_l15_n648(x)
+ else
+ fun_l15_n535(x)
+ end
+end
+
+def fun_l14_n173(x)
+ if (x < 1)
+ fun_l15_n415(x)
+ else
+ fun_l15_n610(x)
+ end
+end
+
+def fun_l14_n174(x)
+ if (x < 1)
+ fun_l15_n352(x)
+ else
+ fun_l15_n256(x)
+ end
+end
+
+def fun_l14_n175(x)
+ if (x < 1)
+ fun_l15_n692(x)
+ else
+ fun_l15_n686(x)
+ end
+end
+
+def fun_l14_n176(x)
+ if (x < 1)
+ fun_l15_n189(x)
+ else
+ fun_l15_n307(x)
+ end
+end
+
+def fun_l14_n177(x)
+ if (x < 1)
+ fun_l15_n725(x)
+ else
+ fun_l15_n714(x)
+ end
+end
+
+def fun_l14_n178(x)
+ if (x < 1)
+ fun_l15_n43(x)
+ else
+ fun_l15_n392(x)
+ end
+end
+
+def fun_l14_n179(x)
+ if (x < 1)
+ fun_l15_n890(x)
+ else
+ fun_l15_n887(x)
+ end
+end
+
+def fun_l14_n180(x)
+ if (x < 1)
+ fun_l15_n499(x)
+ else
+ fun_l15_n729(x)
+ end
+end
+
+def fun_l14_n181(x)
+ if (x < 1)
+ fun_l15_n714(x)
+ else
+ fun_l15_n417(x)
+ end
+end
+
+def fun_l14_n182(x)
+ if (x < 1)
+ fun_l15_n935(x)
+ else
+ fun_l15_n671(x)
+ end
+end
+
+def fun_l14_n183(x)
+ if (x < 1)
+ fun_l15_n123(x)
+ else
+ fun_l15_n349(x)
+ end
+end
+
+def fun_l14_n184(x)
+ if (x < 1)
+ fun_l15_n653(x)
+ else
+ fun_l15_n160(x)
+ end
+end
+
+def fun_l14_n185(x)
+ if (x < 1)
+ fun_l15_n43(x)
+ else
+ fun_l15_n965(x)
+ end
+end
+
+def fun_l14_n186(x)
+ if (x < 1)
+ fun_l15_n38(x)
+ else
+ fun_l15_n411(x)
+ end
+end
+
+def fun_l14_n187(x)
+ if (x < 1)
+ fun_l15_n788(x)
+ else
+ fun_l15_n297(x)
+ end
+end
+
+def fun_l14_n188(x)
+ if (x < 1)
+ fun_l15_n83(x)
+ else
+ fun_l15_n784(x)
+ end
+end
+
+def fun_l14_n189(x)
+ if (x < 1)
+ fun_l15_n403(x)
+ else
+ fun_l15_n469(x)
+ end
+end
+
+def fun_l14_n190(x)
+ if (x < 1)
+ fun_l15_n77(x)
+ else
+ fun_l15_n55(x)
+ end
+end
+
+def fun_l14_n191(x)
+ if (x < 1)
+ fun_l15_n835(x)
+ else
+ fun_l15_n462(x)
+ end
+end
+
+def fun_l14_n192(x)
+ if (x < 1)
+ fun_l15_n830(x)
+ else
+ fun_l15_n680(x)
+ end
+end
+
+def fun_l14_n193(x)
+ if (x < 1)
+ fun_l15_n750(x)
+ else
+ fun_l15_n580(x)
+ end
+end
+
+def fun_l14_n194(x)
+ if (x < 1)
+ fun_l15_n668(x)
+ else
+ fun_l15_n911(x)
+ end
+end
+
+def fun_l14_n195(x)
+ if (x < 1)
+ fun_l15_n90(x)
+ else
+ fun_l15_n232(x)
+ end
+end
+
+def fun_l14_n196(x)
+ if (x < 1)
+ fun_l15_n936(x)
+ else
+ fun_l15_n127(x)
+ end
+end
+
+def fun_l14_n197(x)
+ if (x < 1)
+ fun_l15_n566(x)
+ else
+ fun_l15_n687(x)
+ end
+end
+
+def fun_l14_n198(x)
+ if (x < 1)
+ fun_l15_n797(x)
+ else
+ fun_l15_n835(x)
+ end
+end
+
+def fun_l14_n199(x)
+ if (x < 1)
+ fun_l15_n96(x)
+ else
+ fun_l15_n917(x)
+ end
+end
+
+def fun_l14_n200(x)
+ if (x < 1)
+ fun_l15_n891(x)
+ else
+ fun_l15_n566(x)
+ end
+end
+
+def fun_l14_n201(x)
+ if (x < 1)
+ fun_l15_n697(x)
+ else
+ fun_l15_n218(x)
+ end
+end
+
+def fun_l14_n202(x)
+ if (x < 1)
+ fun_l15_n802(x)
+ else
+ fun_l15_n977(x)
+ end
+end
+
+def fun_l14_n203(x)
+ if (x < 1)
+ fun_l15_n38(x)
+ else
+ fun_l15_n992(x)
+ end
+end
+
+def fun_l14_n204(x)
+ if (x < 1)
+ fun_l15_n591(x)
+ else
+ fun_l15_n394(x)
+ end
+end
+
+def fun_l14_n205(x)
+ if (x < 1)
+ fun_l15_n552(x)
+ else
+ fun_l15_n522(x)
+ end
+end
+
+def fun_l14_n206(x)
+ if (x < 1)
+ fun_l15_n90(x)
+ else
+ fun_l15_n470(x)
+ end
+end
+
+def fun_l14_n207(x)
+ if (x < 1)
+ fun_l15_n92(x)
+ else
+ fun_l15_n148(x)
+ end
+end
+
+def fun_l14_n208(x)
+ if (x < 1)
+ fun_l15_n954(x)
+ else
+ fun_l15_n769(x)
+ end
+end
+
+def fun_l14_n209(x)
+ if (x < 1)
+ fun_l15_n32(x)
+ else
+ fun_l15_n211(x)
+ end
+end
+
+def fun_l14_n210(x)
+ if (x < 1)
+ fun_l15_n338(x)
+ else
+ fun_l15_n678(x)
+ end
+end
+
+def fun_l14_n211(x)
+ if (x < 1)
+ fun_l15_n113(x)
+ else
+ fun_l15_n605(x)
+ end
+end
+
+def fun_l14_n212(x)
+ if (x < 1)
+ fun_l15_n359(x)
+ else
+ fun_l15_n970(x)
+ end
+end
+
+def fun_l14_n213(x)
+ if (x < 1)
+ fun_l15_n437(x)
+ else
+ fun_l15_n279(x)
+ end
+end
+
+def fun_l14_n214(x)
+ if (x < 1)
+ fun_l15_n782(x)
+ else
+ fun_l15_n344(x)
+ end
+end
+
+def fun_l14_n215(x)
+ if (x < 1)
+ fun_l15_n501(x)
+ else
+ fun_l15_n19(x)
+ end
+end
+
+def fun_l14_n216(x)
+ if (x < 1)
+ fun_l15_n525(x)
+ else
+ fun_l15_n269(x)
+ end
+end
+
+def fun_l14_n217(x)
+ if (x < 1)
+ fun_l15_n35(x)
+ else
+ fun_l15_n786(x)
+ end
+end
+
+def fun_l14_n218(x)
+ if (x < 1)
+ fun_l15_n759(x)
+ else
+ fun_l15_n547(x)
+ end
+end
+
+def fun_l14_n219(x)
+ if (x < 1)
+ fun_l15_n260(x)
+ else
+ fun_l15_n155(x)
+ end
+end
+
+def fun_l14_n220(x)
+ if (x < 1)
+ fun_l15_n691(x)
+ else
+ fun_l15_n969(x)
+ end
+end
+
+def fun_l14_n221(x)
+ if (x < 1)
+ fun_l15_n632(x)
+ else
+ fun_l15_n803(x)
+ end
+end
+
+def fun_l14_n222(x)
+ if (x < 1)
+ fun_l15_n652(x)
+ else
+ fun_l15_n70(x)
+ end
+end
+
+def fun_l14_n223(x)
+ if (x < 1)
+ fun_l15_n710(x)
+ else
+ fun_l15_n873(x)
+ end
+end
+
+def fun_l14_n224(x)
+ if (x < 1)
+ fun_l15_n3(x)
+ else
+ fun_l15_n509(x)
+ end
+end
+
+def fun_l14_n225(x)
+ if (x < 1)
+ fun_l15_n37(x)
+ else
+ fun_l15_n814(x)
+ end
+end
+
+def fun_l14_n226(x)
+ if (x < 1)
+ fun_l15_n88(x)
+ else
+ fun_l15_n683(x)
+ end
+end
+
+def fun_l14_n227(x)
+ if (x < 1)
+ fun_l15_n898(x)
+ else
+ fun_l15_n996(x)
+ end
+end
+
+def fun_l14_n228(x)
+ if (x < 1)
+ fun_l15_n510(x)
+ else
+ fun_l15_n315(x)
+ end
+end
+
+def fun_l14_n229(x)
+ if (x < 1)
+ fun_l15_n509(x)
+ else
+ fun_l15_n75(x)
+ end
+end
+
+def fun_l14_n230(x)
+ if (x < 1)
+ fun_l15_n184(x)
+ else
+ fun_l15_n650(x)
+ end
+end
+
+def fun_l14_n231(x)
+ if (x < 1)
+ fun_l15_n227(x)
+ else
+ fun_l15_n607(x)
+ end
+end
+
+def fun_l14_n232(x)
+ if (x < 1)
+ fun_l15_n245(x)
+ else
+ fun_l15_n347(x)
+ end
+end
+
+def fun_l14_n233(x)
+ if (x < 1)
+ fun_l15_n728(x)
+ else
+ fun_l15_n457(x)
+ end
+end
+
+def fun_l14_n234(x)
+ if (x < 1)
+ fun_l15_n619(x)
+ else
+ fun_l15_n936(x)
+ end
+end
+
+def fun_l14_n235(x)
+ if (x < 1)
+ fun_l15_n855(x)
+ else
+ fun_l15_n774(x)
+ end
+end
+
+def fun_l14_n236(x)
+ if (x < 1)
+ fun_l15_n217(x)
+ else
+ fun_l15_n908(x)
+ end
+end
+
+def fun_l14_n237(x)
+ if (x < 1)
+ fun_l15_n537(x)
+ else
+ fun_l15_n441(x)
+ end
+end
+
+def fun_l14_n238(x)
+ if (x < 1)
+ fun_l15_n930(x)
+ else
+ fun_l15_n601(x)
+ end
+end
+
+def fun_l14_n239(x)
+ if (x < 1)
+ fun_l15_n976(x)
+ else
+ fun_l15_n903(x)
+ end
+end
+
+def fun_l14_n240(x)
+ if (x < 1)
+ fun_l15_n792(x)
+ else
+ fun_l15_n882(x)
+ end
+end
+
+def fun_l14_n241(x)
+ if (x < 1)
+ fun_l15_n662(x)
+ else
+ fun_l15_n197(x)
+ end
+end
+
+def fun_l14_n242(x)
+ if (x < 1)
+ fun_l15_n839(x)
+ else
+ fun_l15_n486(x)
+ end
+end
+
+def fun_l14_n243(x)
+ if (x < 1)
+ fun_l15_n122(x)
+ else
+ fun_l15_n165(x)
+ end
+end
+
+def fun_l14_n244(x)
+ if (x < 1)
+ fun_l15_n209(x)
+ else
+ fun_l15_n977(x)
+ end
+end
+
+def fun_l14_n245(x)
+ if (x < 1)
+ fun_l15_n231(x)
+ else
+ fun_l15_n318(x)
+ end
+end
+
+def fun_l14_n246(x)
+ if (x < 1)
+ fun_l15_n53(x)
+ else
+ fun_l15_n995(x)
+ end
+end
+
+def fun_l14_n247(x)
+ if (x < 1)
+ fun_l15_n276(x)
+ else
+ fun_l15_n458(x)
+ end
+end
+
+def fun_l14_n248(x)
+ if (x < 1)
+ fun_l15_n964(x)
+ else
+ fun_l15_n753(x)
+ end
+end
+
+def fun_l14_n249(x)
+ if (x < 1)
+ fun_l15_n964(x)
+ else
+ fun_l15_n783(x)
+ end
+end
+
+def fun_l14_n250(x)
+ if (x < 1)
+ fun_l15_n865(x)
+ else
+ fun_l15_n736(x)
+ end
+end
+
+def fun_l14_n251(x)
+ if (x < 1)
+ fun_l15_n861(x)
+ else
+ fun_l15_n414(x)
+ end
+end
+
+def fun_l14_n252(x)
+ if (x < 1)
+ fun_l15_n327(x)
+ else
+ fun_l15_n440(x)
+ end
+end
+
+def fun_l14_n253(x)
+ if (x < 1)
+ fun_l15_n800(x)
+ else
+ fun_l15_n186(x)
+ end
+end
+
+def fun_l14_n254(x)
+ if (x < 1)
+ fun_l15_n687(x)
+ else
+ fun_l15_n245(x)
+ end
+end
+
+def fun_l14_n255(x)
+ if (x < 1)
+ fun_l15_n421(x)
+ else
+ fun_l15_n421(x)
+ end
+end
+
+def fun_l14_n256(x)
+ if (x < 1)
+ fun_l15_n417(x)
+ else
+ fun_l15_n975(x)
+ end
+end
+
+def fun_l14_n257(x)
+ if (x < 1)
+ fun_l15_n835(x)
+ else
+ fun_l15_n697(x)
+ end
+end
+
+def fun_l14_n258(x)
+ if (x < 1)
+ fun_l15_n433(x)
+ else
+ fun_l15_n811(x)
+ end
+end
+
+def fun_l14_n259(x)
+ if (x < 1)
+ fun_l15_n473(x)
+ else
+ fun_l15_n747(x)
+ end
+end
+
+def fun_l14_n260(x)
+ if (x < 1)
+ fun_l15_n636(x)
+ else
+ fun_l15_n718(x)
+ end
+end
+
+def fun_l14_n261(x)
+ if (x < 1)
+ fun_l15_n472(x)
+ else
+ fun_l15_n971(x)
+ end
+end
+
+def fun_l14_n262(x)
+ if (x < 1)
+ fun_l15_n91(x)
+ else
+ fun_l15_n18(x)
+ end
+end
+
+def fun_l14_n263(x)
+ if (x < 1)
+ fun_l15_n582(x)
+ else
+ fun_l15_n629(x)
+ end
+end
+
+def fun_l14_n264(x)
+ if (x < 1)
+ fun_l15_n493(x)
+ else
+ fun_l15_n718(x)
+ end
+end
+
+def fun_l14_n265(x)
+ if (x < 1)
+ fun_l15_n857(x)
+ else
+ fun_l15_n134(x)
+ end
+end
+
+def fun_l14_n266(x)
+ if (x < 1)
+ fun_l15_n351(x)
+ else
+ fun_l15_n454(x)
+ end
+end
+
+def fun_l14_n267(x)
+ if (x < 1)
+ fun_l15_n578(x)
+ else
+ fun_l15_n453(x)
+ end
+end
+
+def fun_l14_n268(x)
+ if (x < 1)
+ fun_l15_n679(x)
+ else
+ fun_l15_n886(x)
+ end
+end
+
+def fun_l14_n269(x)
+ if (x < 1)
+ fun_l15_n446(x)
+ else
+ fun_l15_n7(x)
+ end
+end
+
+def fun_l14_n270(x)
+ if (x < 1)
+ fun_l15_n375(x)
+ else
+ fun_l15_n83(x)
+ end
+end
+
+def fun_l14_n271(x)
+ if (x < 1)
+ fun_l15_n688(x)
+ else
+ fun_l15_n863(x)
+ end
+end
+
+def fun_l14_n272(x)
+ if (x < 1)
+ fun_l15_n382(x)
+ else
+ fun_l15_n997(x)
+ end
+end
+
+def fun_l14_n273(x)
+ if (x < 1)
+ fun_l15_n281(x)
+ else
+ fun_l15_n909(x)
+ end
+end
+
+def fun_l14_n274(x)
+ if (x < 1)
+ fun_l15_n618(x)
+ else
+ fun_l15_n967(x)
+ end
+end
+
+def fun_l14_n275(x)
+ if (x < 1)
+ fun_l15_n651(x)
+ else
+ fun_l15_n826(x)
+ end
+end
+
+def fun_l14_n276(x)
+ if (x < 1)
+ fun_l15_n326(x)
+ else
+ fun_l15_n11(x)
+ end
+end
+
+def fun_l14_n277(x)
+ if (x < 1)
+ fun_l15_n193(x)
+ else
+ fun_l15_n719(x)
+ end
+end
+
+def fun_l14_n278(x)
+ if (x < 1)
+ fun_l15_n973(x)
+ else
+ fun_l15_n313(x)
+ end
+end
+
+def fun_l14_n279(x)
+ if (x < 1)
+ fun_l15_n33(x)
+ else
+ fun_l15_n526(x)
+ end
+end
+
+def fun_l14_n280(x)
+ if (x < 1)
+ fun_l15_n334(x)
+ else
+ fun_l15_n158(x)
+ end
+end
+
+def fun_l14_n281(x)
+ if (x < 1)
+ fun_l15_n627(x)
+ else
+ fun_l15_n346(x)
+ end
+end
+
+def fun_l14_n282(x)
+ if (x < 1)
+ fun_l15_n537(x)
+ else
+ fun_l15_n198(x)
+ end
+end
+
+def fun_l14_n283(x)
+ if (x < 1)
+ fun_l15_n779(x)
+ else
+ fun_l15_n0(x)
+ end
+end
+
+def fun_l14_n284(x)
+ if (x < 1)
+ fun_l15_n487(x)
+ else
+ fun_l15_n489(x)
+ end
+end
+
+def fun_l14_n285(x)
+ if (x < 1)
+ fun_l15_n793(x)
+ else
+ fun_l15_n803(x)
+ end
+end
+
+def fun_l14_n286(x)
+ if (x < 1)
+ fun_l15_n206(x)
+ else
+ fun_l15_n936(x)
+ end
+end
+
+def fun_l14_n287(x)
+ if (x < 1)
+ fun_l15_n223(x)
+ else
+ fun_l15_n278(x)
+ end
+end
+
+def fun_l14_n288(x)
+ if (x < 1)
+ fun_l15_n601(x)
+ else
+ fun_l15_n251(x)
+ end
+end
+
+def fun_l14_n289(x)
+ if (x < 1)
+ fun_l15_n144(x)
+ else
+ fun_l15_n420(x)
+ end
+end
+
+def fun_l14_n290(x)
+ if (x < 1)
+ fun_l15_n964(x)
+ else
+ fun_l15_n319(x)
+ end
+end
+
+def fun_l14_n291(x)
+ if (x < 1)
+ fun_l15_n385(x)
+ else
+ fun_l15_n498(x)
+ end
+end
+
+def fun_l14_n292(x)
+ if (x < 1)
+ fun_l15_n19(x)
+ else
+ fun_l15_n959(x)
+ end
+end
+
+def fun_l14_n293(x)
+ if (x < 1)
+ fun_l15_n77(x)
+ else
+ fun_l15_n849(x)
+ end
+end
+
+def fun_l14_n294(x)
+ if (x < 1)
+ fun_l15_n96(x)
+ else
+ fun_l15_n964(x)
+ end
+end
+
+def fun_l14_n295(x)
+ if (x < 1)
+ fun_l15_n374(x)
+ else
+ fun_l15_n337(x)
+ end
+end
+
+def fun_l14_n296(x)
+ if (x < 1)
+ fun_l15_n210(x)
+ else
+ fun_l15_n621(x)
+ end
+end
+
+def fun_l14_n297(x)
+ if (x < 1)
+ fun_l15_n992(x)
+ else
+ fun_l15_n90(x)
+ end
+end
+
+def fun_l14_n298(x)
+ if (x < 1)
+ fun_l15_n442(x)
+ else
+ fun_l15_n799(x)
+ end
+end
+
+def fun_l14_n299(x)
+ if (x < 1)
+ fun_l15_n133(x)
+ else
+ fun_l15_n21(x)
+ end
+end
+
+def fun_l14_n300(x)
+ if (x < 1)
+ fun_l15_n619(x)
+ else
+ fun_l15_n46(x)
+ end
+end
+
+def fun_l14_n301(x)
+ if (x < 1)
+ fun_l15_n359(x)
+ else
+ fun_l15_n386(x)
+ end
+end
+
+def fun_l14_n302(x)
+ if (x < 1)
+ fun_l15_n163(x)
+ else
+ fun_l15_n197(x)
+ end
+end
+
+def fun_l14_n303(x)
+ if (x < 1)
+ fun_l15_n382(x)
+ else
+ fun_l15_n693(x)
+ end
+end
+
+def fun_l14_n304(x)
+ if (x < 1)
+ fun_l15_n700(x)
+ else
+ fun_l15_n167(x)
+ end
+end
+
+def fun_l14_n305(x)
+ if (x < 1)
+ fun_l15_n124(x)
+ else
+ fun_l15_n448(x)
+ end
+end
+
+def fun_l14_n306(x)
+ if (x < 1)
+ fun_l15_n829(x)
+ else
+ fun_l15_n986(x)
+ end
+end
+
+def fun_l14_n307(x)
+ if (x < 1)
+ fun_l15_n39(x)
+ else
+ fun_l15_n557(x)
+ end
+end
+
+def fun_l14_n308(x)
+ if (x < 1)
+ fun_l15_n495(x)
+ else
+ fun_l15_n259(x)
+ end
+end
+
+def fun_l14_n309(x)
+ if (x < 1)
+ fun_l15_n462(x)
+ else
+ fun_l15_n121(x)
+ end
+end
+
+def fun_l14_n310(x)
+ if (x < 1)
+ fun_l15_n110(x)
+ else
+ fun_l15_n159(x)
+ end
+end
+
+def fun_l14_n311(x)
+ if (x < 1)
+ fun_l15_n144(x)
+ else
+ fun_l15_n969(x)
+ end
+end
+
+def fun_l14_n312(x)
+ if (x < 1)
+ fun_l15_n679(x)
+ else
+ fun_l15_n610(x)
+ end
+end
+
+def fun_l14_n313(x)
+ if (x < 1)
+ fun_l15_n332(x)
+ else
+ fun_l15_n759(x)
+ end
+end
+
+def fun_l14_n314(x)
+ if (x < 1)
+ fun_l15_n819(x)
+ else
+ fun_l15_n595(x)
+ end
+end
+
+def fun_l14_n315(x)
+ if (x < 1)
+ fun_l15_n180(x)
+ else
+ fun_l15_n555(x)
+ end
+end
+
+def fun_l14_n316(x)
+ if (x < 1)
+ fun_l15_n218(x)
+ else
+ fun_l15_n844(x)
+ end
+end
+
+def fun_l14_n317(x)
+ if (x < 1)
+ fun_l15_n486(x)
+ else
+ fun_l15_n666(x)
+ end
+end
+
+def fun_l14_n318(x)
+ if (x < 1)
+ fun_l15_n277(x)
+ else
+ fun_l15_n486(x)
+ end
+end
+
+def fun_l14_n319(x)
+ if (x < 1)
+ fun_l15_n874(x)
+ else
+ fun_l15_n802(x)
+ end
+end
+
+def fun_l14_n320(x)
+ if (x < 1)
+ fun_l15_n717(x)
+ else
+ fun_l15_n348(x)
+ end
+end
+
+def fun_l14_n321(x)
+ if (x < 1)
+ fun_l15_n701(x)
+ else
+ fun_l15_n897(x)
+ end
+end
+
+def fun_l14_n322(x)
+ if (x < 1)
+ fun_l15_n229(x)
+ else
+ fun_l15_n976(x)
+ end
+end
+
+def fun_l14_n323(x)
+ if (x < 1)
+ fun_l15_n288(x)
+ else
+ fun_l15_n801(x)
+ end
+end
+
+def fun_l14_n324(x)
+ if (x < 1)
+ fun_l15_n25(x)
+ else
+ fun_l15_n566(x)
+ end
+end
+
+def fun_l14_n325(x)
+ if (x < 1)
+ fun_l15_n489(x)
+ else
+ fun_l15_n165(x)
+ end
+end
+
+def fun_l14_n326(x)
+ if (x < 1)
+ fun_l15_n646(x)
+ else
+ fun_l15_n529(x)
+ end
+end
+
+def fun_l14_n327(x)
+ if (x < 1)
+ fun_l15_n126(x)
+ else
+ fun_l15_n247(x)
+ end
+end
+
+def fun_l14_n328(x)
+ if (x < 1)
+ fun_l15_n180(x)
+ else
+ fun_l15_n838(x)
+ end
+end
+
+def fun_l14_n329(x)
+ if (x < 1)
+ fun_l15_n827(x)
+ else
+ fun_l15_n251(x)
+ end
+end
+
+def fun_l14_n330(x)
+ if (x < 1)
+ fun_l15_n232(x)
+ else
+ fun_l15_n371(x)
+ end
+end
+
+def fun_l14_n331(x)
+ if (x < 1)
+ fun_l15_n742(x)
+ else
+ fun_l15_n365(x)
+ end
+end
+
+def fun_l14_n332(x)
+ if (x < 1)
+ fun_l15_n254(x)
+ else
+ fun_l15_n895(x)
+ end
+end
+
+def fun_l14_n333(x)
+ if (x < 1)
+ fun_l15_n267(x)
+ else
+ fun_l15_n716(x)
+ end
+end
+
+def fun_l14_n334(x)
+ if (x < 1)
+ fun_l15_n907(x)
+ else
+ fun_l15_n846(x)
+ end
+end
+
+def fun_l14_n335(x)
+ if (x < 1)
+ fun_l15_n432(x)
+ else
+ fun_l15_n207(x)
+ end
+end
+
+def fun_l14_n336(x)
+ if (x < 1)
+ fun_l15_n342(x)
+ else
+ fun_l15_n533(x)
+ end
+end
+
+def fun_l14_n337(x)
+ if (x < 1)
+ fun_l15_n155(x)
+ else
+ fun_l15_n626(x)
+ end
+end
+
+def fun_l14_n338(x)
+ if (x < 1)
+ fun_l15_n457(x)
+ else
+ fun_l15_n226(x)
+ end
+end
+
+def fun_l14_n339(x)
+ if (x < 1)
+ fun_l15_n621(x)
+ else
+ fun_l15_n685(x)
+ end
+end
+
+def fun_l14_n340(x)
+ if (x < 1)
+ fun_l15_n502(x)
+ else
+ fun_l15_n604(x)
+ end
+end
+
+def fun_l14_n341(x)
+ if (x < 1)
+ fun_l15_n578(x)
+ else
+ fun_l15_n250(x)
+ end
+end
+
+def fun_l14_n342(x)
+ if (x < 1)
+ fun_l15_n16(x)
+ else
+ fun_l15_n897(x)
+ end
+end
+
+def fun_l14_n343(x)
+ if (x < 1)
+ fun_l15_n173(x)
+ else
+ fun_l15_n441(x)
+ end
+end
+
+def fun_l14_n344(x)
+ if (x < 1)
+ fun_l15_n882(x)
+ else
+ fun_l15_n287(x)
+ end
+end
+
+def fun_l14_n345(x)
+ if (x < 1)
+ fun_l15_n549(x)
+ else
+ fun_l15_n559(x)
+ end
+end
+
+def fun_l14_n346(x)
+ if (x < 1)
+ fun_l15_n587(x)
+ else
+ fun_l15_n712(x)
+ end
+end
+
+def fun_l14_n347(x)
+ if (x < 1)
+ fun_l15_n2(x)
+ else
+ fun_l15_n279(x)
+ end
+end
+
+def fun_l14_n348(x)
+ if (x < 1)
+ fun_l15_n602(x)
+ else
+ fun_l15_n801(x)
+ end
+end
+
+def fun_l14_n349(x)
+ if (x < 1)
+ fun_l15_n114(x)
+ else
+ fun_l15_n181(x)
+ end
+end
+
+def fun_l14_n350(x)
+ if (x < 1)
+ fun_l15_n751(x)
+ else
+ fun_l15_n760(x)
+ end
+end
+
+def fun_l14_n351(x)
+ if (x < 1)
+ fun_l15_n570(x)
+ else
+ fun_l15_n168(x)
+ end
+end
+
+def fun_l14_n352(x)
+ if (x < 1)
+ fun_l15_n342(x)
+ else
+ fun_l15_n401(x)
+ end
+end
+
+def fun_l14_n353(x)
+ if (x < 1)
+ fun_l15_n775(x)
+ else
+ fun_l15_n175(x)
+ end
+end
+
+def fun_l14_n354(x)
+ if (x < 1)
+ fun_l15_n0(x)
+ else
+ fun_l15_n831(x)
+ end
+end
+
+def fun_l14_n355(x)
+ if (x < 1)
+ fun_l15_n127(x)
+ else
+ fun_l15_n751(x)
+ end
+end
+
+def fun_l14_n356(x)
+ if (x < 1)
+ fun_l15_n57(x)
+ else
+ fun_l15_n58(x)
+ end
+end
+
+def fun_l14_n357(x)
+ if (x < 1)
+ fun_l15_n696(x)
+ else
+ fun_l15_n694(x)
+ end
+end
+
+def fun_l14_n358(x)
+ if (x < 1)
+ fun_l15_n240(x)
+ else
+ fun_l15_n525(x)
+ end
+end
+
+def fun_l14_n359(x)
+ if (x < 1)
+ fun_l15_n552(x)
+ else
+ fun_l15_n126(x)
+ end
+end
+
+def fun_l14_n360(x)
+ if (x < 1)
+ fun_l15_n435(x)
+ else
+ fun_l15_n24(x)
+ end
+end
+
+def fun_l14_n361(x)
+ if (x < 1)
+ fun_l15_n366(x)
+ else
+ fun_l15_n397(x)
+ end
+end
+
+def fun_l14_n362(x)
+ if (x < 1)
+ fun_l15_n626(x)
+ else
+ fun_l15_n288(x)
+ end
+end
+
+def fun_l14_n363(x)
+ if (x < 1)
+ fun_l15_n474(x)
+ else
+ fun_l15_n205(x)
+ end
+end
+
+def fun_l14_n364(x)
+ if (x < 1)
+ fun_l15_n299(x)
+ else
+ fun_l15_n9(x)
+ end
+end
+
+def fun_l14_n365(x)
+ if (x < 1)
+ fun_l15_n115(x)
+ else
+ fun_l15_n126(x)
+ end
+end
+
+def fun_l14_n366(x)
+ if (x < 1)
+ fun_l15_n777(x)
+ else
+ fun_l15_n714(x)
+ end
+end
+
+def fun_l14_n367(x)
+ if (x < 1)
+ fun_l15_n697(x)
+ else
+ fun_l15_n663(x)
+ end
+end
+
+def fun_l14_n368(x)
+ if (x < 1)
+ fun_l15_n72(x)
+ else
+ fun_l15_n339(x)
+ end
+end
+
+def fun_l14_n369(x)
+ if (x < 1)
+ fun_l15_n703(x)
+ else
+ fun_l15_n901(x)
+ end
+end
+
+def fun_l14_n370(x)
+ if (x < 1)
+ fun_l15_n38(x)
+ else
+ fun_l15_n920(x)
+ end
+end
+
+def fun_l14_n371(x)
+ if (x < 1)
+ fun_l15_n97(x)
+ else
+ fun_l15_n418(x)
+ end
+end
+
+def fun_l14_n372(x)
+ if (x < 1)
+ fun_l15_n831(x)
+ else
+ fun_l15_n295(x)
+ end
+end
+
+def fun_l14_n373(x)
+ if (x < 1)
+ fun_l15_n849(x)
+ else
+ fun_l15_n818(x)
+ end
+end
+
+def fun_l14_n374(x)
+ if (x < 1)
+ fun_l15_n308(x)
+ else
+ fun_l15_n379(x)
+ end
+end
+
+def fun_l14_n375(x)
+ if (x < 1)
+ fun_l15_n552(x)
+ else
+ fun_l15_n109(x)
+ end
+end
+
+def fun_l14_n376(x)
+ if (x < 1)
+ fun_l15_n444(x)
+ else
+ fun_l15_n509(x)
+ end
+end
+
+def fun_l14_n377(x)
+ if (x < 1)
+ fun_l15_n498(x)
+ else
+ fun_l15_n363(x)
+ end
+end
+
+def fun_l14_n378(x)
+ if (x < 1)
+ fun_l15_n475(x)
+ else
+ fun_l15_n250(x)
+ end
+end
+
+def fun_l14_n379(x)
+ if (x < 1)
+ fun_l15_n635(x)
+ else
+ fun_l15_n550(x)
+ end
+end
+
+def fun_l14_n380(x)
+ if (x < 1)
+ fun_l15_n835(x)
+ else
+ fun_l15_n261(x)
+ end
+end
+
+def fun_l14_n381(x)
+ if (x < 1)
+ fun_l15_n903(x)
+ else
+ fun_l15_n492(x)
+ end
+end
+
+def fun_l14_n382(x)
+ if (x < 1)
+ fun_l15_n447(x)
+ else
+ fun_l15_n570(x)
+ end
+end
+
+def fun_l14_n383(x)
+ if (x < 1)
+ fun_l15_n785(x)
+ else
+ fun_l15_n711(x)
+ end
+end
+
+def fun_l14_n384(x)
+ if (x < 1)
+ fun_l15_n321(x)
+ else
+ fun_l15_n966(x)
+ end
+end
+
+def fun_l14_n385(x)
+ if (x < 1)
+ fun_l15_n786(x)
+ else
+ fun_l15_n667(x)
+ end
+end
+
+def fun_l14_n386(x)
+ if (x < 1)
+ fun_l15_n954(x)
+ else
+ fun_l15_n101(x)
+ end
+end
+
+def fun_l14_n387(x)
+ if (x < 1)
+ fun_l15_n868(x)
+ else
+ fun_l15_n1(x)
+ end
+end
+
+def fun_l14_n388(x)
+ if (x < 1)
+ fun_l15_n380(x)
+ else
+ fun_l15_n949(x)
+ end
+end
+
+def fun_l14_n389(x)
+ if (x < 1)
+ fun_l15_n456(x)
+ else
+ fun_l15_n122(x)
+ end
+end
+
+def fun_l14_n390(x)
+ if (x < 1)
+ fun_l15_n644(x)
+ else
+ fun_l15_n601(x)
+ end
+end
+
+def fun_l14_n391(x)
+ if (x < 1)
+ fun_l15_n523(x)
+ else
+ fun_l15_n754(x)
+ end
+end
+
+def fun_l14_n392(x)
+ if (x < 1)
+ fun_l15_n882(x)
+ else
+ fun_l15_n453(x)
+ end
+end
+
+def fun_l14_n393(x)
+ if (x < 1)
+ fun_l15_n249(x)
+ else
+ fun_l15_n773(x)
+ end
+end
+
+def fun_l14_n394(x)
+ if (x < 1)
+ fun_l15_n453(x)
+ else
+ fun_l15_n490(x)
+ end
+end
+
+def fun_l14_n395(x)
+ if (x < 1)
+ fun_l15_n699(x)
+ else
+ fun_l15_n95(x)
+ end
+end
+
+def fun_l14_n396(x)
+ if (x < 1)
+ fun_l15_n726(x)
+ else
+ fun_l15_n632(x)
+ end
+end
+
+def fun_l14_n397(x)
+ if (x < 1)
+ fun_l15_n139(x)
+ else
+ fun_l15_n682(x)
+ end
+end
+
+def fun_l14_n398(x)
+ if (x < 1)
+ fun_l15_n246(x)
+ else
+ fun_l15_n74(x)
+ end
+end
+
+def fun_l14_n399(x)
+ if (x < 1)
+ fun_l15_n334(x)
+ else
+ fun_l15_n504(x)
+ end
+end
+
+def fun_l14_n400(x)
+ if (x < 1)
+ fun_l15_n450(x)
+ else
+ fun_l15_n778(x)
+ end
+end
+
+def fun_l14_n401(x)
+ if (x < 1)
+ fun_l15_n428(x)
+ else
+ fun_l15_n101(x)
+ end
+end
+
+def fun_l14_n402(x)
+ if (x < 1)
+ fun_l15_n779(x)
+ else
+ fun_l15_n924(x)
+ end
+end
+
+def fun_l14_n403(x)
+ if (x < 1)
+ fun_l15_n957(x)
+ else
+ fun_l15_n83(x)
+ end
+end
+
+def fun_l14_n404(x)
+ if (x < 1)
+ fun_l15_n0(x)
+ else
+ fun_l15_n781(x)
+ end
+end
+
+def fun_l14_n405(x)
+ if (x < 1)
+ fun_l15_n100(x)
+ else
+ fun_l15_n21(x)
+ end
+end
+
+def fun_l14_n406(x)
+ if (x < 1)
+ fun_l15_n262(x)
+ else
+ fun_l15_n925(x)
+ end
+end
+
+def fun_l14_n407(x)
+ if (x < 1)
+ fun_l15_n935(x)
+ else
+ fun_l15_n193(x)
+ end
+end
+
+def fun_l14_n408(x)
+ if (x < 1)
+ fun_l15_n140(x)
+ else
+ fun_l15_n459(x)
+ end
+end
+
+def fun_l14_n409(x)
+ if (x < 1)
+ fun_l15_n484(x)
+ else
+ fun_l15_n584(x)
+ end
+end
+
+def fun_l14_n410(x)
+ if (x < 1)
+ fun_l15_n762(x)
+ else
+ fun_l15_n640(x)
+ end
+end
+
+def fun_l14_n411(x)
+ if (x < 1)
+ fun_l15_n347(x)
+ else
+ fun_l15_n395(x)
+ end
+end
+
+def fun_l14_n412(x)
+ if (x < 1)
+ fun_l15_n809(x)
+ else
+ fun_l15_n105(x)
+ end
+end
+
+def fun_l14_n413(x)
+ if (x < 1)
+ fun_l15_n929(x)
+ else
+ fun_l15_n265(x)
+ end
+end
+
+def fun_l14_n414(x)
+ if (x < 1)
+ fun_l15_n228(x)
+ else
+ fun_l15_n88(x)
+ end
+end
+
+def fun_l14_n415(x)
+ if (x < 1)
+ fun_l15_n650(x)
+ else
+ fun_l15_n785(x)
+ end
+end
+
+def fun_l14_n416(x)
+ if (x < 1)
+ fun_l15_n806(x)
+ else
+ fun_l15_n743(x)
+ end
+end
+
+def fun_l14_n417(x)
+ if (x < 1)
+ fun_l15_n417(x)
+ else
+ fun_l15_n454(x)
+ end
+end
+
+def fun_l14_n418(x)
+ if (x < 1)
+ fun_l15_n571(x)
+ else
+ fun_l15_n651(x)
+ end
+end
+
+def fun_l14_n419(x)
+ if (x < 1)
+ fun_l15_n341(x)
+ else
+ fun_l15_n242(x)
+ end
+end
+
+def fun_l14_n420(x)
+ if (x < 1)
+ fun_l15_n613(x)
+ else
+ fun_l15_n339(x)
+ end
+end
+
+def fun_l14_n421(x)
+ if (x < 1)
+ fun_l15_n657(x)
+ else
+ fun_l15_n759(x)
+ end
+end
+
+def fun_l14_n422(x)
+ if (x < 1)
+ fun_l15_n33(x)
+ else
+ fun_l15_n669(x)
+ end
+end
+
+def fun_l14_n423(x)
+ if (x < 1)
+ fun_l15_n628(x)
+ else
+ fun_l15_n963(x)
+ end
+end
+
+def fun_l14_n424(x)
+ if (x < 1)
+ fun_l15_n940(x)
+ else
+ fun_l15_n773(x)
+ end
+end
+
+def fun_l14_n425(x)
+ if (x < 1)
+ fun_l15_n489(x)
+ else
+ fun_l15_n625(x)
+ end
+end
+
+def fun_l14_n426(x)
+ if (x < 1)
+ fun_l15_n501(x)
+ else
+ fun_l15_n278(x)
+ end
+end
+
+def fun_l14_n427(x)
+ if (x < 1)
+ fun_l15_n620(x)
+ else
+ fun_l15_n426(x)
+ end
+end
+
+def fun_l14_n428(x)
+ if (x < 1)
+ fun_l15_n606(x)
+ else
+ fun_l15_n123(x)
+ end
+end
+
+def fun_l14_n429(x)
+ if (x < 1)
+ fun_l15_n622(x)
+ else
+ fun_l15_n873(x)
+ end
+end
+
+def fun_l14_n430(x)
+ if (x < 1)
+ fun_l15_n660(x)
+ else
+ fun_l15_n736(x)
+ end
+end
+
+def fun_l14_n431(x)
+ if (x < 1)
+ fun_l15_n927(x)
+ else
+ fun_l15_n893(x)
+ end
+end
+
+def fun_l14_n432(x)
+ if (x < 1)
+ fun_l15_n492(x)
+ else
+ fun_l15_n947(x)
+ end
+end
+
+def fun_l14_n433(x)
+ if (x < 1)
+ fun_l15_n164(x)
+ else
+ fun_l15_n853(x)
+ end
+end
+
+def fun_l14_n434(x)
+ if (x < 1)
+ fun_l15_n730(x)
+ else
+ fun_l15_n265(x)
+ end
+end
+
+def fun_l14_n435(x)
+ if (x < 1)
+ fun_l15_n548(x)
+ else
+ fun_l15_n272(x)
+ end
+end
+
+def fun_l14_n436(x)
+ if (x < 1)
+ fun_l15_n944(x)
+ else
+ fun_l15_n344(x)
+ end
+end
+
+def fun_l14_n437(x)
+ if (x < 1)
+ fun_l15_n931(x)
+ else
+ fun_l15_n376(x)
+ end
+end
+
+def fun_l14_n438(x)
+ if (x < 1)
+ fun_l15_n261(x)
+ else
+ fun_l15_n270(x)
+ end
+end
+
+def fun_l14_n439(x)
+ if (x < 1)
+ fun_l15_n705(x)
+ else
+ fun_l15_n700(x)
+ end
+end
+
+def fun_l14_n440(x)
+ if (x < 1)
+ fun_l15_n115(x)
+ else
+ fun_l15_n964(x)
+ end
+end
+
+def fun_l14_n441(x)
+ if (x < 1)
+ fun_l15_n396(x)
+ else
+ fun_l15_n780(x)
+ end
+end
+
+def fun_l14_n442(x)
+ if (x < 1)
+ fun_l15_n813(x)
+ else
+ fun_l15_n25(x)
+ end
+end
+
+def fun_l14_n443(x)
+ if (x < 1)
+ fun_l15_n405(x)
+ else
+ fun_l15_n264(x)
+ end
+end
+
+def fun_l14_n444(x)
+ if (x < 1)
+ fun_l15_n816(x)
+ else
+ fun_l15_n857(x)
+ end
+end
+
+def fun_l14_n445(x)
+ if (x < 1)
+ fun_l15_n191(x)
+ else
+ fun_l15_n886(x)
+ end
+end
+
+def fun_l14_n446(x)
+ if (x < 1)
+ fun_l15_n415(x)
+ else
+ fun_l15_n611(x)
+ end
+end
+
+def fun_l14_n447(x)
+ if (x < 1)
+ fun_l15_n473(x)
+ else
+ fun_l15_n701(x)
+ end
+end
+
+def fun_l14_n448(x)
+ if (x < 1)
+ fun_l15_n532(x)
+ else
+ fun_l15_n501(x)
+ end
+end
+
+def fun_l14_n449(x)
+ if (x < 1)
+ fun_l15_n731(x)
+ else
+ fun_l15_n631(x)
+ end
+end
+
+def fun_l14_n450(x)
+ if (x < 1)
+ fun_l15_n75(x)
+ else
+ fun_l15_n356(x)
+ end
+end
+
+def fun_l14_n451(x)
+ if (x < 1)
+ fun_l15_n614(x)
+ else
+ fun_l15_n600(x)
+ end
+end
+
+def fun_l14_n452(x)
+ if (x < 1)
+ fun_l15_n592(x)
+ else
+ fun_l15_n995(x)
+ end
+end
+
+def fun_l14_n453(x)
+ if (x < 1)
+ fun_l15_n712(x)
+ else
+ fun_l15_n815(x)
+ end
+end
+
+def fun_l14_n454(x)
+ if (x < 1)
+ fun_l15_n859(x)
+ else
+ fun_l15_n560(x)
+ end
+end
+
+def fun_l14_n455(x)
+ if (x < 1)
+ fun_l15_n665(x)
+ else
+ fun_l15_n408(x)
+ end
+end
+
+def fun_l14_n456(x)
+ if (x < 1)
+ fun_l15_n693(x)
+ else
+ fun_l15_n491(x)
+ end
+end
+
+def fun_l14_n457(x)
+ if (x < 1)
+ fun_l15_n29(x)
+ else
+ fun_l15_n515(x)
+ end
+end
+
+def fun_l14_n458(x)
+ if (x < 1)
+ fun_l15_n598(x)
+ else
+ fun_l15_n448(x)
+ end
+end
+
+def fun_l14_n459(x)
+ if (x < 1)
+ fun_l15_n937(x)
+ else
+ fun_l15_n199(x)
+ end
+end
+
+def fun_l14_n460(x)
+ if (x < 1)
+ fun_l15_n950(x)
+ else
+ fun_l15_n874(x)
+ end
+end
+
+def fun_l14_n461(x)
+ if (x < 1)
+ fun_l15_n38(x)
+ else
+ fun_l15_n650(x)
+ end
+end
+
+def fun_l14_n462(x)
+ if (x < 1)
+ fun_l15_n366(x)
+ else
+ fun_l15_n271(x)
+ end
+end
+
+def fun_l14_n463(x)
+ if (x < 1)
+ fun_l15_n21(x)
+ else
+ fun_l15_n690(x)
+ end
+end
+
+def fun_l14_n464(x)
+ if (x < 1)
+ fun_l15_n660(x)
+ else
+ fun_l15_n71(x)
+ end
+end
+
+def fun_l14_n465(x)
+ if (x < 1)
+ fun_l15_n889(x)
+ else
+ fun_l15_n324(x)
+ end
+end
+
+def fun_l14_n466(x)
+ if (x < 1)
+ fun_l15_n808(x)
+ else
+ fun_l15_n532(x)
+ end
+end
+
+def fun_l14_n467(x)
+ if (x < 1)
+ fun_l15_n72(x)
+ else
+ fun_l15_n52(x)
+ end
+end
+
+def fun_l14_n468(x)
+ if (x < 1)
+ fun_l15_n563(x)
+ else
+ fun_l15_n327(x)
+ end
+end
+
+def fun_l14_n469(x)
+ if (x < 1)
+ fun_l15_n570(x)
+ else
+ fun_l15_n794(x)
+ end
+end
+
+def fun_l14_n470(x)
+ if (x < 1)
+ fun_l15_n8(x)
+ else
+ fun_l15_n594(x)
+ end
+end
+
+def fun_l14_n471(x)
+ if (x < 1)
+ fun_l15_n859(x)
+ else
+ fun_l15_n519(x)
+ end
+end
+
+def fun_l14_n472(x)
+ if (x < 1)
+ fun_l15_n539(x)
+ else
+ fun_l15_n432(x)
+ end
+end
+
+def fun_l14_n473(x)
+ if (x < 1)
+ fun_l15_n795(x)
+ else
+ fun_l15_n916(x)
+ end
+end
+
+def fun_l14_n474(x)
+ if (x < 1)
+ fun_l15_n851(x)
+ else
+ fun_l15_n157(x)
+ end
+end
+
+def fun_l14_n475(x)
+ if (x < 1)
+ fun_l15_n274(x)
+ else
+ fun_l15_n678(x)
+ end
+end
+
+def fun_l14_n476(x)
+ if (x < 1)
+ fun_l15_n221(x)
+ else
+ fun_l15_n906(x)
+ end
+end
+
+def fun_l14_n477(x)
+ if (x < 1)
+ fun_l15_n116(x)
+ else
+ fun_l15_n778(x)
+ end
+end
+
+def fun_l14_n478(x)
+ if (x < 1)
+ fun_l15_n715(x)
+ else
+ fun_l15_n855(x)
+ end
+end
+
+def fun_l14_n479(x)
+ if (x < 1)
+ fun_l15_n705(x)
+ else
+ fun_l15_n935(x)
+ end
+end
+
+def fun_l14_n480(x)
+ if (x < 1)
+ fun_l15_n119(x)
+ else
+ fun_l15_n559(x)
+ end
+end
+
+def fun_l14_n481(x)
+ if (x < 1)
+ fun_l15_n996(x)
+ else
+ fun_l15_n768(x)
+ end
+end
+
+def fun_l14_n482(x)
+ if (x < 1)
+ fun_l15_n619(x)
+ else
+ fun_l15_n475(x)
+ end
+end
+
+def fun_l14_n483(x)
+ if (x < 1)
+ fun_l15_n189(x)
+ else
+ fun_l15_n398(x)
+ end
+end
+
+def fun_l14_n484(x)
+ if (x < 1)
+ fun_l15_n758(x)
+ else
+ fun_l15_n864(x)
+ end
+end
+
+def fun_l14_n485(x)
+ if (x < 1)
+ fun_l15_n508(x)
+ else
+ fun_l15_n393(x)
+ end
+end
+
+def fun_l14_n486(x)
+ if (x < 1)
+ fun_l15_n825(x)
+ else
+ fun_l15_n337(x)
+ end
+end
+
+def fun_l14_n487(x)
+ if (x < 1)
+ fun_l15_n449(x)
+ else
+ fun_l15_n389(x)
+ end
+end
+
+def fun_l14_n488(x)
+ if (x < 1)
+ fun_l15_n328(x)
+ else
+ fun_l15_n658(x)
+ end
+end
+
+def fun_l14_n489(x)
+ if (x < 1)
+ fun_l15_n138(x)
+ else
+ fun_l15_n938(x)
+ end
+end
+
+def fun_l14_n490(x)
+ if (x < 1)
+ fun_l15_n387(x)
+ else
+ fun_l15_n865(x)
+ end
+end
+
+def fun_l14_n491(x)
+ if (x < 1)
+ fun_l15_n621(x)
+ else
+ fun_l15_n516(x)
+ end
+end
+
+def fun_l14_n492(x)
+ if (x < 1)
+ fun_l15_n962(x)
+ else
+ fun_l15_n821(x)
+ end
+end
+
+def fun_l14_n493(x)
+ if (x < 1)
+ fun_l15_n544(x)
+ else
+ fun_l15_n625(x)
+ end
+end
+
+def fun_l14_n494(x)
+ if (x < 1)
+ fun_l15_n610(x)
+ else
+ fun_l15_n404(x)
+ end
+end
+
+def fun_l14_n495(x)
+ if (x < 1)
+ fun_l15_n329(x)
+ else
+ fun_l15_n537(x)
+ end
+end
+
+def fun_l14_n496(x)
+ if (x < 1)
+ fun_l15_n659(x)
+ else
+ fun_l15_n837(x)
+ end
+end
+
+def fun_l14_n497(x)
+ if (x < 1)
+ fun_l15_n974(x)
+ else
+ fun_l15_n55(x)
+ end
+end
+
+def fun_l14_n498(x)
+ if (x < 1)
+ fun_l15_n243(x)
+ else
+ fun_l15_n810(x)
+ end
+end
+
+def fun_l14_n499(x)
+ if (x < 1)
+ fun_l15_n260(x)
+ else
+ fun_l15_n412(x)
+ end
+end
+
+def fun_l14_n500(x)
+ if (x < 1)
+ fun_l15_n940(x)
+ else
+ fun_l15_n920(x)
+ end
+end
+
+def fun_l14_n501(x)
+ if (x < 1)
+ fun_l15_n829(x)
+ else
+ fun_l15_n877(x)
+ end
+end
+
+def fun_l14_n502(x)
+ if (x < 1)
+ fun_l15_n457(x)
+ else
+ fun_l15_n307(x)
+ end
+end
+
+def fun_l14_n503(x)
+ if (x < 1)
+ fun_l15_n301(x)
+ else
+ fun_l15_n812(x)
+ end
+end
+
+def fun_l14_n504(x)
+ if (x < 1)
+ fun_l15_n175(x)
+ else
+ fun_l15_n715(x)
+ end
+end
+
+def fun_l14_n505(x)
+ if (x < 1)
+ fun_l15_n897(x)
+ else
+ fun_l15_n103(x)
+ end
+end
+
+def fun_l14_n506(x)
+ if (x < 1)
+ fun_l15_n357(x)
+ else
+ fun_l15_n606(x)
+ end
+end
+
+def fun_l14_n507(x)
+ if (x < 1)
+ fun_l15_n974(x)
+ else
+ fun_l15_n389(x)
+ end
+end
+
+def fun_l14_n508(x)
+ if (x < 1)
+ fun_l15_n641(x)
+ else
+ fun_l15_n450(x)
+ end
+end
+
+def fun_l14_n509(x)
+ if (x < 1)
+ fun_l15_n4(x)
+ else
+ fun_l15_n533(x)
+ end
+end
+
+def fun_l14_n510(x)
+ if (x < 1)
+ fun_l15_n258(x)
+ else
+ fun_l15_n716(x)
+ end
+end
+
+def fun_l14_n511(x)
+ if (x < 1)
+ fun_l15_n919(x)
+ else
+ fun_l15_n881(x)
+ end
+end
+
+def fun_l14_n512(x)
+ if (x < 1)
+ fun_l15_n313(x)
+ else
+ fun_l15_n282(x)
+ end
+end
+
+def fun_l14_n513(x)
+ if (x < 1)
+ fun_l15_n116(x)
+ else
+ fun_l15_n861(x)
+ end
+end
+
+def fun_l14_n514(x)
+ if (x < 1)
+ fun_l15_n178(x)
+ else
+ fun_l15_n717(x)
+ end
+end
+
+def fun_l14_n515(x)
+ if (x < 1)
+ fun_l15_n896(x)
+ else
+ fun_l15_n583(x)
+ end
+end
+
+def fun_l14_n516(x)
+ if (x < 1)
+ fun_l15_n203(x)
+ else
+ fun_l15_n802(x)
+ end
+end
+
+def fun_l14_n517(x)
+ if (x < 1)
+ fun_l15_n810(x)
+ else
+ fun_l15_n34(x)
+ end
+end
+
+def fun_l14_n518(x)
+ if (x < 1)
+ fun_l15_n908(x)
+ else
+ fun_l15_n623(x)
+ end
+end
+
+def fun_l14_n519(x)
+ if (x < 1)
+ fun_l15_n954(x)
+ else
+ fun_l15_n411(x)
+ end
+end
+
+def fun_l14_n520(x)
+ if (x < 1)
+ fun_l15_n880(x)
+ else
+ fun_l15_n38(x)
+ end
+end
+
+def fun_l14_n521(x)
+ if (x < 1)
+ fun_l15_n954(x)
+ else
+ fun_l15_n917(x)
+ end
+end
+
+def fun_l14_n522(x)
+ if (x < 1)
+ fun_l15_n693(x)
+ else
+ fun_l15_n950(x)
+ end
+end
+
+def fun_l14_n523(x)
+ if (x < 1)
+ fun_l15_n654(x)
+ else
+ fun_l15_n27(x)
+ end
+end
+
+def fun_l14_n524(x)
+ if (x < 1)
+ fun_l15_n316(x)
+ else
+ fun_l15_n873(x)
+ end
+end
+
+def fun_l14_n525(x)
+ if (x < 1)
+ fun_l15_n554(x)
+ else
+ fun_l15_n656(x)
+ end
+end
+
+def fun_l14_n526(x)
+ if (x < 1)
+ fun_l15_n739(x)
+ else
+ fun_l15_n69(x)
+ end
+end
+
+def fun_l14_n527(x)
+ if (x < 1)
+ fun_l15_n851(x)
+ else
+ fun_l15_n366(x)
+ end
+end
+
+def fun_l14_n528(x)
+ if (x < 1)
+ fun_l15_n113(x)
+ else
+ fun_l15_n271(x)
+ end
+end
+
+def fun_l14_n529(x)
+ if (x < 1)
+ fun_l15_n652(x)
+ else
+ fun_l15_n831(x)
+ end
+end
+
+def fun_l14_n530(x)
+ if (x < 1)
+ fun_l15_n746(x)
+ else
+ fun_l15_n841(x)
+ end
+end
+
+def fun_l14_n531(x)
+ if (x < 1)
+ fun_l15_n758(x)
+ else
+ fun_l15_n893(x)
+ end
+end
+
+def fun_l14_n532(x)
+ if (x < 1)
+ fun_l15_n976(x)
+ else
+ fun_l15_n514(x)
+ end
+end
+
+def fun_l14_n533(x)
+ if (x < 1)
+ fun_l15_n375(x)
+ else
+ fun_l15_n84(x)
+ end
+end
+
+def fun_l14_n534(x)
+ if (x < 1)
+ fun_l15_n226(x)
+ else
+ fun_l15_n770(x)
+ end
+end
+
+def fun_l14_n535(x)
+ if (x < 1)
+ fun_l15_n106(x)
+ else
+ fun_l15_n230(x)
+ end
+end
+
+def fun_l14_n536(x)
+ if (x < 1)
+ fun_l15_n18(x)
+ else
+ fun_l15_n335(x)
+ end
+end
+
+def fun_l14_n537(x)
+ if (x < 1)
+ fun_l15_n755(x)
+ else
+ fun_l15_n16(x)
+ end
+end
+
+def fun_l14_n538(x)
+ if (x < 1)
+ fun_l15_n653(x)
+ else
+ fun_l15_n486(x)
+ end
+end
+
+def fun_l14_n539(x)
+ if (x < 1)
+ fun_l15_n665(x)
+ else
+ fun_l15_n768(x)
+ end
+end
+
+def fun_l14_n540(x)
+ if (x < 1)
+ fun_l15_n282(x)
+ else
+ fun_l15_n780(x)
+ end
+end
+
+def fun_l14_n541(x)
+ if (x < 1)
+ fun_l15_n633(x)
+ else
+ fun_l15_n240(x)
+ end
+end
+
+def fun_l14_n542(x)
+ if (x < 1)
+ fun_l15_n141(x)
+ else
+ fun_l15_n474(x)
+ end
+end
+
+def fun_l14_n543(x)
+ if (x < 1)
+ fun_l15_n80(x)
+ else
+ fun_l15_n708(x)
+ end
+end
+
+def fun_l14_n544(x)
+ if (x < 1)
+ fun_l15_n309(x)
+ else
+ fun_l15_n808(x)
+ end
+end
+
+def fun_l14_n545(x)
+ if (x < 1)
+ fun_l15_n744(x)
+ else
+ fun_l15_n51(x)
+ end
+end
+
+def fun_l14_n546(x)
+ if (x < 1)
+ fun_l15_n571(x)
+ else
+ fun_l15_n581(x)
+ end
+end
+
+def fun_l14_n547(x)
+ if (x < 1)
+ fun_l15_n272(x)
+ else
+ fun_l15_n867(x)
+ end
+end
+
+def fun_l14_n548(x)
+ if (x < 1)
+ fun_l15_n96(x)
+ else
+ fun_l15_n83(x)
+ end
+end
+
+def fun_l14_n549(x)
+ if (x < 1)
+ fun_l15_n828(x)
+ else
+ fun_l15_n109(x)
+ end
+end
+
+def fun_l14_n550(x)
+ if (x < 1)
+ fun_l15_n94(x)
+ else
+ fun_l15_n839(x)
+ end
+end
+
+def fun_l14_n551(x)
+ if (x < 1)
+ fun_l15_n704(x)
+ else
+ fun_l15_n88(x)
+ end
+end
+
+def fun_l14_n552(x)
+ if (x < 1)
+ fun_l15_n531(x)
+ else
+ fun_l15_n865(x)
+ end
+end
+
+def fun_l14_n553(x)
+ if (x < 1)
+ fun_l15_n506(x)
+ else
+ fun_l15_n16(x)
+ end
+end
+
+def fun_l14_n554(x)
+ if (x < 1)
+ fun_l15_n583(x)
+ else
+ fun_l15_n186(x)
+ end
+end
+
+def fun_l14_n555(x)
+ if (x < 1)
+ fun_l15_n673(x)
+ else
+ fun_l15_n560(x)
+ end
+end
+
+def fun_l14_n556(x)
+ if (x < 1)
+ fun_l15_n947(x)
+ else
+ fun_l15_n268(x)
+ end
+end
+
+def fun_l14_n557(x)
+ if (x < 1)
+ fun_l15_n88(x)
+ else
+ fun_l15_n43(x)
+ end
+end
+
+def fun_l14_n558(x)
+ if (x < 1)
+ fun_l15_n690(x)
+ else
+ fun_l15_n145(x)
+ end
+end
+
+def fun_l14_n559(x)
+ if (x < 1)
+ fun_l15_n24(x)
+ else
+ fun_l15_n631(x)
+ end
+end
+
+def fun_l14_n560(x)
+ if (x < 1)
+ fun_l15_n381(x)
+ else
+ fun_l15_n3(x)
+ end
+end
+
+def fun_l14_n561(x)
+ if (x < 1)
+ fun_l15_n954(x)
+ else
+ fun_l15_n816(x)
+ end
+end
+
+def fun_l14_n562(x)
+ if (x < 1)
+ fun_l15_n948(x)
+ else
+ fun_l15_n886(x)
+ end
+end
+
+def fun_l14_n563(x)
+ if (x < 1)
+ fun_l15_n749(x)
+ else
+ fun_l15_n558(x)
+ end
+end
+
+def fun_l14_n564(x)
+ if (x < 1)
+ fun_l15_n715(x)
+ else
+ fun_l15_n157(x)
+ end
+end
+
+def fun_l14_n565(x)
+ if (x < 1)
+ fun_l15_n674(x)
+ else
+ fun_l15_n643(x)
+ end
+end
+
+def fun_l14_n566(x)
+ if (x < 1)
+ fun_l15_n151(x)
+ else
+ fun_l15_n686(x)
+ end
+end
+
+def fun_l14_n567(x)
+ if (x < 1)
+ fun_l15_n362(x)
+ else
+ fun_l15_n37(x)
+ end
+end
+
+def fun_l14_n568(x)
+ if (x < 1)
+ fun_l15_n132(x)
+ else
+ fun_l15_n146(x)
+ end
+end
+
+def fun_l14_n569(x)
+ if (x < 1)
+ fun_l15_n32(x)
+ else
+ fun_l15_n203(x)
+ end
+end
+
+def fun_l14_n570(x)
+ if (x < 1)
+ fun_l15_n477(x)
+ else
+ fun_l15_n403(x)
+ end
+end
+
+def fun_l14_n571(x)
+ if (x < 1)
+ fun_l15_n976(x)
+ else
+ fun_l15_n632(x)
+ end
+end
+
+def fun_l14_n572(x)
+ if (x < 1)
+ fun_l15_n735(x)
+ else
+ fun_l15_n100(x)
+ end
+end
+
+def fun_l14_n573(x)
+ if (x < 1)
+ fun_l15_n186(x)
+ else
+ fun_l15_n83(x)
+ end
+end
+
+def fun_l14_n574(x)
+ if (x < 1)
+ fun_l15_n246(x)
+ else
+ fun_l15_n573(x)
+ end
+end
+
+def fun_l14_n575(x)
+ if (x < 1)
+ fun_l15_n316(x)
+ else
+ fun_l15_n618(x)
+ end
+end
+
+def fun_l14_n576(x)
+ if (x < 1)
+ fun_l15_n426(x)
+ else
+ fun_l15_n616(x)
+ end
+end
+
+def fun_l14_n577(x)
+ if (x < 1)
+ fun_l15_n810(x)
+ else
+ fun_l15_n817(x)
+ end
+end
+
+def fun_l14_n578(x)
+ if (x < 1)
+ fun_l15_n262(x)
+ else
+ fun_l15_n815(x)
+ end
+end
+
+def fun_l14_n579(x)
+ if (x < 1)
+ fun_l15_n851(x)
+ else
+ fun_l15_n524(x)
+ end
+end
+
+def fun_l14_n580(x)
+ if (x < 1)
+ fun_l15_n748(x)
+ else
+ fun_l15_n843(x)
+ end
+end
+
+def fun_l14_n581(x)
+ if (x < 1)
+ fun_l15_n284(x)
+ else
+ fun_l15_n108(x)
+ end
+end
+
+def fun_l14_n582(x)
+ if (x < 1)
+ fun_l15_n976(x)
+ else
+ fun_l15_n294(x)
+ end
+end
+
+def fun_l14_n583(x)
+ if (x < 1)
+ fun_l15_n609(x)
+ else
+ fun_l15_n866(x)
+ end
+end
+
+def fun_l14_n584(x)
+ if (x < 1)
+ fun_l15_n293(x)
+ else
+ fun_l15_n980(x)
+ end
+end
+
+def fun_l14_n585(x)
+ if (x < 1)
+ fun_l15_n548(x)
+ else
+ fun_l15_n319(x)
+ end
+end
+
+def fun_l14_n586(x)
+ if (x < 1)
+ fun_l15_n566(x)
+ else
+ fun_l15_n843(x)
+ end
+end
+
+def fun_l14_n587(x)
+ if (x < 1)
+ fun_l15_n963(x)
+ else
+ fun_l15_n120(x)
+ end
+end
+
+def fun_l14_n588(x)
+ if (x < 1)
+ fun_l15_n149(x)
+ else
+ fun_l15_n17(x)
+ end
+end
+
+def fun_l14_n589(x)
+ if (x < 1)
+ fun_l15_n11(x)
+ else
+ fun_l15_n396(x)
+ end
+end
+
+def fun_l14_n590(x)
+ if (x < 1)
+ fun_l15_n40(x)
+ else
+ fun_l15_n687(x)
+ end
+end
+
+def fun_l14_n591(x)
+ if (x < 1)
+ fun_l15_n617(x)
+ else
+ fun_l15_n564(x)
+ end
+end
+
+def fun_l14_n592(x)
+ if (x < 1)
+ fun_l15_n26(x)
+ else
+ fun_l15_n812(x)
+ end
+end
+
+def fun_l14_n593(x)
+ if (x < 1)
+ fun_l15_n890(x)
+ else
+ fun_l15_n403(x)
+ end
+end
+
+def fun_l14_n594(x)
+ if (x < 1)
+ fun_l15_n455(x)
+ else
+ fun_l15_n248(x)
+ end
+end
+
+def fun_l14_n595(x)
+ if (x < 1)
+ fun_l15_n880(x)
+ else
+ fun_l15_n488(x)
+ end
+end
+
+def fun_l14_n596(x)
+ if (x < 1)
+ fun_l15_n412(x)
+ else
+ fun_l15_n986(x)
+ end
+end
+
+def fun_l14_n597(x)
+ if (x < 1)
+ fun_l15_n487(x)
+ else
+ fun_l15_n75(x)
+ end
+end
+
+def fun_l14_n598(x)
+ if (x < 1)
+ fun_l15_n911(x)
+ else
+ fun_l15_n789(x)
+ end
+end
+
+def fun_l14_n599(x)
+ if (x < 1)
+ fun_l15_n856(x)
+ else
+ fun_l15_n773(x)
+ end
+end
+
+def fun_l14_n600(x)
+ if (x < 1)
+ fun_l15_n57(x)
+ else
+ fun_l15_n538(x)
+ end
+end
+
+def fun_l14_n601(x)
+ if (x < 1)
+ fun_l15_n828(x)
+ else
+ fun_l15_n165(x)
+ end
+end
+
+def fun_l14_n602(x)
+ if (x < 1)
+ fun_l15_n230(x)
+ else
+ fun_l15_n326(x)
+ end
+end
+
+def fun_l14_n603(x)
+ if (x < 1)
+ fun_l15_n463(x)
+ else
+ fun_l15_n906(x)
+ end
+end
+
+def fun_l14_n604(x)
+ if (x < 1)
+ fun_l15_n584(x)
+ else
+ fun_l15_n205(x)
+ end
+end
+
+def fun_l14_n605(x)
+ if (x < 1)
+ fun_l15_n243(x)
+ else
+ fun_l15_n0(x)
+ end
+end
+
+def fun_l14_n606(x)
+ if (x < 1)
+ fun_l15_n258(x)
+ else
+ fun_l15_n574(x)
+ end
+end
+
+def fun_l14_n607(x)
+ if (x < 1)
+ fun_l15_n821(x)
+ else
+ fun_l15_n786(x)
+ end
+end
+
+def fun_l14_n608(x)
+ if (x < 1)
+ fun_l15_n553(x)
+ else
+ fun_l15_n183(x)
+ end
+end
+
+def fun_l14_n609(x)
+ if (x < 1)
+ fun_l15_n853(x)
+ else
+ fun_l15_n600(x)
+ end
+end
+
+def fun_l14_n610(x)
+ if (x < 1)
+ fun_l15_n606(x)
+ else
+ fun_l15_n76(x)
+ end
+end
+
+def fun_l14_n611(x)
+ if (x < 1)
+ fun_l15_n488(x)
+ else
+ fun_l15_n313(x)
+ end
+end
+
+def fun_l14_n612(x)
+ if (x < 1)
+ fun_l15_n261(x)
+ else
+ fun_l15_n320(x)
+ end
+end
+
+def fun_l14_n613(x)
+ if (x < 1)
+ fun_l15_n410(x)
+ else
+ fun_l15_n225(x)
+ end
+end
+
+def fun_l14_n614(x)
+ if (x < 1)
+ fun_l15_n653(x)
+ else
+ fun_l15_n699(x)
+ end
+end
+
+def fun_l14_n615(x)
+ if (x < 1)
+ fun_l15_n917(x)
+ else
+ fun_l15_n199(x)
+ end
+end
+
+def fun_l14_n616(x)
+ if (x < 1)
+ fun_l15_n583(x)
+ else
+ fun_l15_n676(x)
+ end
+end
+
+def fun_l14_n617(x)
+ if (x < 1)
+ fun_l15_n708(x)
+ else
+ fun_l15_n323(x)
+ end
+end
+
+def fun_l14_n618(x)
+ if (x < 1)
+ fun_l15_n935(x)
+ else
+ fun_l15_n570(x)
+ end
+end
+
+def fun_l14_n619(x)
+ if (x < 1)
+ fun_l15_n440(x)
+ else
+ fun_l15_n765(x)
+ end
+end
+
+def fun_l14_n620(x)
+ if (x < 1)
+ fun_l15_n621(x)
+ else
+ fun_l15_n239(x)
+ end
+end
+
+def fun_l14_n621(x)
+ if (x < 1)
+ fun_l15_n498(x)
+ else
+ fun_l15_n586(x)
+ end
+end
+
+def fun_l14_n622(x)
+ if (x < 1)
+ fun_l15_n786(x)
+ else
+ fun_l15_n894(x)
+ end
+end
+
+def fun_l14_n623(x)
+ if (x < 1)
+ fun_l15_n637(x)
+ else
+ fun_l15_n502(x)
+ end
+end
+
+def fun_l14_n624(x)
+ if (x < 1)
+ fun_l15_n982(x)
+ else
+ fun_l15_n690(x)
+ end
+end
+
+def fun_l14_n625(x)
+ if (x < 1)
+ fun_l15_n696(x)
+ else
+ fun_l15_n407(x)
+ end
+end
+
+def fun_l14_n626(x)
+ if (x < 1)
+ fun_l15_n324(x)
+ else
+ fun_l15_n937(x)
+ end
+end
+
+def fun_l14_n627(x)
+ if (x < 1)
+ fun_l15_n223(x)
+ else
+ fun_l15_n538(x)
+ end
+end
+
+def fun_l14_n628(x)
+ if (x < 1)
+ fun_l15_n865(x)
+ else
+ fun_l15_n459(x)
+ end
+end
+
+def fun_l14_n629(x)
+ if (x < 1)
+ fun_l15_n990(x)
+ else
+ fun_l15_n602(x)
+ end
+end
+
+def fun_l14_n630(x)
+ if (x < 1)
+ fun_l15_n289(x)
+ else
+ fun_l15_n608(x)
+ end
+end
+
+def fun_l14_n631(x)
+ if (x < 1)
+ fun_l15_n802(x)
+ else
+ fun_l15_n254(x)
+ end
+end
+
+def fun_l14_n632(x)
+ if (x < 1)
+ fun_l15_n8(x)
+ else
+ fun_l15_n114(x)
+ end
+end
+
+def fun_l14_n633(x)
+ if (x < 1)
+ fun_l15_n91(x)
+ else
+ fun_l15_n130(x)
+ end
+end
+
+def fun_l14_n634(x)
+ if (x < 1)
+ fun_l15_n691(x)
+ else
+ fun_l15_n961(x)
+ end
+end
+
+def fun_l14_n635(x)
+ if (x < 1)
+ fun_l15_n590(x)
+ else
+ fun_l15_n739(x)
+ end
+end
+
+def fun_l14_n636(x)
+ if (x < 1)
+ fun_l15_n552(x)
+ else
+ fun_l15_n526(x)
+ end
+end
+
+def fun_l14_n637(x)
+ if (x < 1)
+ fun_l15_n741(x)
+ else
+ fun_l15_n506(x)
+ end
+end
+
+def fun_l14_n638(x)
+ if (x < 1)
+ fun_l15_n458(x)
+ else
+ fun_l15_n1(x)
+ end
+end
+
+def fun_l14_n639(x)
+ if (x < 1)
+ fun_l15_n933(x)
+ else
+ fun_l15_n500(x)
+ end
+end
+
+def fun_l14_n640(x)
+ if (x < 1)
+ fun_l15_n267(x)
+ else
+ fun_l15_n450(x)
+ end
+end
+
+def fun_l14_n641(x)
+ if (x < 1)
+ fun_l15_n51(x)
+ else
+ fun_l15_n591(x)
+ end
+end
+
+def fun_l14_n642(x)
+ if (x < 1)
+ fun_l15_n262(x)
+ else
+ fun_l15_n254(x)
+ end
+end
+
+def fun_l14_n643(x)
+ if (x < 1)
+ fun_l15_n320(x)
+ else
+ fun_l15_n610(x)
+ end
+end
+
+def fun_l14_n644(x)
+ if (x < 1)
+ fun_l15_n137(x)
+ else
+ fun_l15_n802(x)
+ end
+end
+
+def fun_l14_n645(x)
+ if (x < 1)
+ fun_l15_n365(x)
+ else
+ fun_l15_n779(x)
+ end
+end
+
+def fun_l14_n646(x)
+ if (x < 1)
+ fun_l15_n863(x)
+ else
+ fun_l15_n273(x)
+ end
+end
+
+def fun_l14_n647(x)
+ if (x < 1)
+ fun_l15_n334(x)
+ else
+ fun_l15_n519(x)
+ end
+end
+
+def fun_l14_n648(x)
+ if (x < 1)
+ fun_l15_n232(x)
+ else
+ fun_l15_n876(x)
+ end
+end
+
+def fun_l14_n649(x)
+ if (x < 1)
+ fun_l15_n850(x)
+ else
+ fun_l15_n51(x)
+ end
+end
+
+def fun_l14_n650(x)
+ if (x < 1)
+ fun_l15_n610(x)
+ else
+ fun_l15_n52(x)
+ end
+end
+
+def fun_l14_n651(x)
+ if (x < 1)
+ fun_l15_n701(x)
+ else
+ fun_l15_n143(x)
+ end
+end
+
+def fun_l14_n652(x)
+ if (x < 1)
+ fun_l15_n933(x)
+ else
+ fun_l15_n748(x)
+ end
+end
+
+def fun_l14_n653(x)
+ if (x < 1)
+ fun_l15_n280(x)
+ else
+ fun_l15_n632(x)
+ end
+end
+
+def fun_l14_n654(x)
+ if (x < 1)
+ fun_l15_n361(x)
+ else
+ fun_l15_n107(x)
+ end
+end
+
+def fun_l14_n655(x)
+ if (x < 1)
+ fun_l15_n743(x)
+ else
+ fun_l15_n899(x)
+ end
+end
+
+def fun_l14_n656(x)
+ if (x < 1)
+ fun_l15_n383(x)
+ else
+ fun_l15_n441(x)
+ end
+end
+
+def fun_l14_n657(x)
+ if (x < 1)
+ fun_l15_n244(x)
+ else
+ fun_l15_n349(x)
+ end
+end
+
+def fun_l14_n658(x)
+ if (x < 1)
+ fun_l15_n69(x)
+ else
+ fun_l15_n758(x)
+ end
+end
+
+def fun_l14_n659(x)
+ if (x < 1)
+ fun_l15_n570(x)
+ else
+ fun_l15_n760(x)
+ end
+end
+
+def fun_l14_n660(x)
+ if (x < 1)
+ fun_l15_n554(x)
+ else
+ fun_l15_n258(x)
+ end
+end
+
+def fun_l14_n661(x)
+ if (x < 1)
+ fun_l15_n417(x)
+ else
+ fun_l15_n934(x)
+ end
+end
+
+def fun_l14_n662(x)
+ if (x < 1)
+ fun_l15_n717(x)
+ else
+ fun_l15_n99(x)
+ end
+end
+
+def fun_l14_n663(x)
+ if (x < 1)
+ fun_l15_n882(x)
+ else
+ fun_l15_n515(x)
+ end
+end
+
+def fun_l14_n664(x)
+ if (x < 1)
+ fun_l15_n623(x)
+ else
+ fun_l15_n679(x)
+ end
+end
+
+def fun_l14_n665(x)
+ if (x < 1)
+ fun_l15_n974(x)
+ else
+ fun_l15_n127(x)
+ end
+end
+
+def fun_l14_n666(x)
+ if (x < 1)
+ fun_l15_n592(x)
+ else
+ fun_l15_n322(x)
+ end
+end
+
+def fun_l14_n667(x)
+ if (x < 1)
+ fun_l15_n698(x)
+ else
+ fun_l15_n670(x)
+ end
+end
+
+def fun_l14_n668(x)
+ if (x < 1)
+ fun_l15_n164(x)
+ else
+ fun_l15_n670(x)
+ end
+end
+
+def fun_l14_n669(x)
+ if (x < 1)
+ fun_l15_n837(x)
+ else
+ fun_l15_n113(x)
+ end
+end
+
+def fun_l14_n670(x)
+ if (x < 1)
+ fun_l15_n200(x)
+ else
+ fun_l15_n486(x)
+ end
+end
+
+def fun_l14_n671(x)
+ if (x < 1)
+ fun_l15_n593(x)
+ else
+ fun_l15_n822(x)
+ end
+end
+
+def fun_l14_n672(x)
+ if (x < 1)
+ fun_l15_n191(x)
+ else
+ fun_l15_n842(x)
+ end
+end
+
+def fun_l14_n673(x)
+ if (x < 1)
+ fun_l15_n391(x)
+ else
+ fun_l15_n119(x)
+ end
+end
+
+def fun_l14_n674(x)
+ if (x < 1)
+ fun_l15_n914(x)
+ else
+ fun_l15_n453(x)
+ end
+end
+
+def fun_l14_n675(x)
+ if (x < 1)
+ fun_l15_n73(x)
+ else
+ fun_l15_n366(x)
+ end
+end
+
+def fun_l14_n676(x)
+ if (x < 1)
+ fun_l15_n58(x)
+ else
+ fun_l15_n804(x)
+ end
+end
+
+def fun_l14_n677(x)
+ if (x < 1)
+ fun_l15_n905(x)
+ else
+ fun_l15_n969(x)
+ end
+end
+
+def fun_l14_n678(x)
+ if (x < 1)
+ fun_l15_n301(x)
+ else
+ fun_l15_n838(x)
+ end
+end
+
+def fun_l14_n679(x)
+ if (x < 1)
+ fun_l15_n14(x)
+ else
+ fun_l15_n567(x)
+ end
+end
+
+def fun_l14_n680(x)
+ if (x < 1)
+ fun_l15_n262(x)
+ else
+ fun_l15_n325(x)
+ end
+end
+
+def fun_l14_n681(x)
+ if (x < 1)
+ fun_l15_n985(x)
+ else
+ fun_l15_n181(x)
+ end
+end
+
+def fun_l14_n682(x)
+ if (x < 1)
+ fun_l15_n197(x)
+ else
+ fun_l15_n175(x)
+ end
+end
+
+def fun_l14_n683(x)
+ if (x < 1)
+ fun_l15_n714(x)
+ else
+ fun_l15_n276(x)
+ end
+end
+
+def fun_l14_n684(x)
+ if (x < 1)
+ fun_l15_n720(x)
+ else
+ fun_l15_n517(x)
+ end
+end
+
+def fun_l14_n685(x)
+ if (x < 1)
+ fun_l15_n351(x)
+ else
+ fun_l15_n917(x)
+ end
+end
+
+def fun_l14_n686(x)
+ if (x < 1)
+ fun_l15_n199(x)
+ else
+ fun_l15_n163(x)
+ end
+end
+
+def fun_l14_n687(x)
+ if (x < 1)
+ fun_l15_n769(x)
+ else
+ fun_l15_n205(x)
+ end
+end
+
+def fun_l14_n688(x)
+ if (x < 1)
+ fun_l15_n840(x)
+ else
+ fun_l15_n756(x)
+ end
+end
+
+def fun_l14_n689(x)
+ if (x < 1)
+ fun_l15_n306(x)
+ else
+ fun_l15_n273(x)
+ end
+end
+
+def fun_l14_n690(x)
+ if (x < 1)
+ fun_l15_n549(x)
+ else
+ fun_l15_n192(x)
+ end
+end
+
+def fun_l14_n691(x)
+ if (x < 1)
+ fun_l15_n167(x)
+ else
+ fun_l15_n403(x)
+ end
+end
+
+def fun_l14_n692(x)
+ if (x < 1)
+ fun_l15_n175(x)
+ else
+ fun_l15_n361(x)
+ end
+end
+
+def fun_l14_n693(x)
+ if (x < 1)
+ fun_l15_n208(x)
+ else
+ fun_l15_n582(x)
+ end
+end
+
+def fun_l14_n694(x)
+ if (x < 1)
+ fun_l15_n347(x)
+ else
+ fun_l15_n962(x)
+ end
+end
+
+def fun_l14_n695(x)
+ if (x < 1)
+ fun_l15_n381(x)
+ else
+ fun_l15_n865(x)
+ end
+end
+
+def fun_l14_n696(x)
+ if (x < 1)
+ fun_l15_n76(x)
+ else
+ fun_l15_n140(x)
+ end
+end
+
+def fun_l14_n697(x)
+ if (x < 1)
+ fun_l15_n801(x)
+ else
+ fun_l15_n267(x)
+ end
+end
+
+def fun_l14_n698(x)
+ if (x < 1)
+ fun_l15_n137(x)
+ else
+ fun_l15_n518(x)
+ end
+end
+
+def fun_l14_n699(x)
+ if (x < 1)
+ fun_l15_n56(x)
+ else
+ fun_l15_n758(x)
+ end
+end
+
+def fun_l14_n700(x)
+ if (x < 1)
+ fun_l15_n178(x)
+ else
+ fun_l15_n641(x)
+ end
+end
+
+def fun_l14_n701(x)
+ if (x < 1)
+ fun_l15_n815(x)
+ else
+ fun_l15_n692(x)
+ end
+end
+
+def fun_l14_n702(x)
+ if (x < 1)
+ fun_l15_n355(x)
+ else
+ fun_l15_n338(x)
+ end
+end
+
+def fun_l14_n703(x)
+ if (x < 1)
+ fun_l15_n894(x)
+ else
+ fun_l15_n843(x)
+ end
+end
+
+def fun_l14_n704(x)
+ if (x < 1)
+ fun_l15_n728(x)
+ else
+ fun_l15_n140(x)
+ end
+end
+
+def fun_l14_n705(x)
+ if (x < 1)
+ fun_l15_n304(x)
+ else
+ fun_l15_n237(x)
+ end
+end
+
+def fun_l14_n706(x)
+ if (x < 1)
+ fun_l15_n57(x)
+ else
+ fun_l15_n947(x)
+ end
+end
+
+def fun_l14_n707(x)
+ if (x < 1)
+ fun_l15_n90(x)
+ else
+ fun_l15_n831(x)
+ end
+end
+
+def fun_l14_n708(x)
+ if (x < 1)
+ fun_l15_n487(x)
+ else
+ fun_l15_n937(x)
+ end
+end
+
+def fun_l14_n709(x)
+ if (x < 1)
+ fun_l15_n898(x)
+ else
+ fun_l15_n151(x)
+ end
+end
+
+def fun_l14_n710(x)
+ if (x < 1)
+ fun_l15_n306(x)
+ else
+ fun_l15_n687(x)
+ end
+end
+
+def fun_l14_n711(x)
+ if (x < 1)
+ fun_l15_n151(x)
+ else
+ fun_l15_n239(x)
+ end
+end
+
+def fun_l14_n712(x)
+ if (x < 1)
+ fun_l15_n512(x)
+ else
+ fun_l15_n203(x)
+ end
+end
+
+def fun_l14_n713(x)
+ if (x < 1)
+ fun_l15_n611(x)
+ else
+ fun_l15_n474(x)
+ end
+end
+
+def fun_l14_n714(x)
+ if (x < 1)
+ fun_l15_n109(x)
+ else
+ fun_l15_n149(x)
+ end
+end
+
+def fun_l14_n715(x)
+ if (x < 1)
+ fun_l15_n187(x)
+ else
+ fun_l15_n563(x)
+ end
+end
+
+def fun_l14_n716(x)
+ if (x < 1)
+ fun_l15_n877(x)
+ else
+ fun_l15_n644(x)
+ end
+end
+
+def fun_l14_n717(x)
+ if (x < 1)
+ fun_l15_n960(x)
+ else
+ fun_l15_n471(x)
+ end
+end
+
+def fun_l14_n718(x)
+ if (x < 1)
+ fun_l15_n250(x)
+ else
+ fun_l15_n93(x)
+ end
+end
+
+def fun_l14_n719(x)
+ if (x < 1)
+ fun_l15_n177(x)
+ else
+ fun_l15_n14(x)
+ end
+end
+
+def fun_l14_n720(x)
+ if (x < 1)
+ fun_l15_n912(x)
+ else
+ fun_l15_n95(x)
+ end
+end
+
+def fun_l14_n721(x)
+ if (x < 1)
+ fun_l15_n776(x)
+ else
+ fun_l15_n256(x)
+ end
+end
+
+def fun_l14_n722(x)
+ if (x < 1)
+ fun_l15_n968(x)
+ else
+ fun_l15_n857(x)
+ end
+end
+
+def fun_l14_n723(x)
+ if (x < 1)
+ fun_l15_n402(x)
+ else
+ fun_l15_n60(x)
+ end
+end
+
+def fun_l14_n724(x)
+ if (x < 1)
+ fun_l15_n345(x)
+ else
+ fun_l15_n688(x)
+ end
+end
+
+def fun_l14_n725(x)
+ if (x < 1)
+ fun_l15_n72(x)
+ else
+ fun_l15_n943(x)
+ end
+end
+
+def fun_l14_n726(x)
+ if (x < 1)
+ fun_l15_n535(x)
+ else
+ fun_l15_n916(x)
+ end
+end
+
+def fun_l14_n727(x)
+ if (x < 1)
+ fun_l15_n717(x)
+ else
+ fun_l15_n354(x)
+ end
+end
+
+def fun_l14_n728(x)
+ if (x < 1)
+ fun_l15_n679(x)
+ else
+ fun_l15_n348(x)
+ end
+end
+
+def fun_l14_n729(x)
+ if (x < 1)
+ fun_l15_n187(x)
+ else
+ fun_l15_n910(x)
+ end
+end
+
+def fun_l14_n730(x)
+ if (x < 1)
+ fun_l15_n151(x)
+ else
+ fun_l15_n689(x)
+ end
+end
+
+def fun_l14_n731(x)
+ if (x < 1)
+ fun_l15_n653(x)
+ else
+ fun_l15_n380(x)
+ end
+end
+
+def fun_l14_n732(x)
+ if (x < 1)
+ fun_l15_n627(x)
+ else
+ fun_l15_n214(x)
+ end
+end
+
+def fun_l14_n733(x)
+ if (x < 1)
+ fun_l15_n53(x)
+ else
+ fun_l15_n882(x)
+ end
+end
+
+def fun_l14_n734(x)
+ if (x < 1)
+ fun_l15_n628(x)
+ else
+ fun_l15_n632(x)
+ end
+end
+
+def fun_l14_n735(x)
+ if (x < 1)
+ fun_l15_n415(x)
+ else
+ fun_l15_n719(x)
+ end
+end
+
+def fun_l14_n736(x)
+ if (x < 1)
+ fun_l15_n474(x)
+ else
+ fun_l15_n966(x)
+ end
+end
+
+def fun_l14_n737(x)
+ if (x < 1)
+ fun_l15_n140(x)
+ else
+ fun_l15_n79(x)
+ end
+end
+
+def fun_l14_n738(x)
+ if (x < 1)
+ fun_l15_n682(x)
+ else
+ fun_l15_n788(x)
+ end
+end
+
+def fun_l14_n739(x)
+ if (x < 1)
+ fun_l15_n62(x)
+ else
+ fun_l15_n289(x)
+ end
+end
+
+def fun_l14_n740(x)
+ if (x < 1)
+ fun_l15_n256(x)
+ else
+ fun_l15_n53(x)
+ end
+end
+
+def fun_l14_n741(x)
+ if (x < 1)
+ fun_l15_n571(x)
+ else
+ fun_l15_n912(x)
+ end
+end
+
+def fun_l14_n742(x)
+ if (x < 1)
+ fun_l15_n477(x)
+ else
+ fun_l15_n757(x)
+ end
+end
+
+def fun_l14_n743(x)
+ if (x < 1)
+ fun_l15_n914(x)
+ else
+ fun_l15_n216(x)
+ end
+end
+
+def fun_l14_n744(x)
+ if (x < 1)
+ fun_l15_n474(x)
+ else
+ fun_l15_n860(x)
+ end
+end
+
+def fun_l14_n745(x)
+ if (x < 1)
+ fun_l15_n303(x)
+ else
+ fun_l15_n417(x)
+ end
+end
+
+def fun_l14_n746(x)
+ if (x < 1)
+ fun_l15_n601(x)
+ else
+ fun_l15_n872(x)
+ end
+end
+
+def fun_l14_n747(x)
+ if (x < 1)
+ fun_l15_n70(x)
+ else
+ fun_l15_n245(x)
+ end
+end
+
+def fun_l14_n748(x)
+ if (x < 1)
+ fun_l15_n628(x)
+ else
+ fun_l15_n503(x)
+ end
+end
+
+def fun_l14_n749(x)
+ if (x < 1)
+ fun_l15_n965(x)
+ else
+ fun_l15_n89(x)
+ end
+end
+
+def fun_l14_n750(x)
+ if (x < 1)
+ fun_l15_n910(x)
+ else
+ fun_l15_n386(x)
+ end
+end
+
+def fun_l14_n751(x)
+ if (x < 1)
+ fun_l15_n444(x)
+ else
+ fun_l15_n765(x)
+ end
+end
+
+def fun_l14_n752(x)
+ if (x < 1)
+ fun_l15_n481(x)
+ else
+ fun_l15_n356(x)
+ end
+end
+
+def fun_l14_n753(x)
+ if (x < 1)
+ fun_l15_n45(x)
+ else
+ fun_l15_n644(x)
+ end
+end
+
+def fun_l14_n754(x)
+ if (x < 1)
+ fun_l15_n262(x)
+ else
+ fun_l15_n681(x)
+ end
+end
+
+def fun_l14_n755(x)
+ if (x < 1)
+ fun_l15_n984(x)
+ else
+ fun_l15_n488(x)
+ end
+end
+
+def fun_l14_n756(x)
+ if (x < 1)
+ fun_l15_n751(x)
+ else
+ fun_l15_n165(x)
+ end
+end
+
+def fun_l14_n757(x)
+ if (x < 1)
+ fun_l15_n716(x)
+ else
+ fun_l15_n483(x)
+ end
+end
+
+def fun_l14_n758(x)
+ if (x < 1)
+ fun_l15_n863(x)
+ else
+ fun_l15_n841(x)
+ end
+end
+
+def fun_l14_n759(x)
+ if (x < 1)
+ fun_l15_n654(x)
+ else
+ fun_l15_n782(x)
+ end
+end
+
+def fun_l14_n760(x)
+ if (x < 1)
+ fun_l15_n390(x)
+ else
+ fun_l15_n254(x)
+ end
+end
+
+def fun_l14_n761(x)
+ if (x < 1)
+ fun_l15_n888(x)
+ else
+ fun_l15_n739(x)
+ end
+end
+
+def fun_l14_n762(x)
+ if (x < 1)
+ fun_l15_n775(x)
+ else
+ fun_l15_n310(x)
+ end
+end
+
+def fun_l14_n763(x)
+ if (x < 1)
+ fun_l15_n713(x)
+ else
+ fun_l15_n246(x)
+ end
+end
+
+def fun_l14_n764(x)
+ if (x < 1)
+ fun_l15_n318(x)
+ else
+ fun_l15_n121(x)
+ end
+end
+
+def fun_l14_n765(x)
+ if (x < 1)
+ fun_l15_n424(x)
+ else
+ fun_l15_n538(x)
+ end
+end
+
+def fun_l14_n766(x)
+ if (x < 1)
+ fun_l15_n58(x)
+ else
+ fun_l15_n487(x)
+ end
+end
+
+def fun_l14_n767(x)
+ if (x < 1)
+ fun_l15_n48(x)
+ else
+ fun_l15_n776(x)
+ end
+end
+
+def fun_l14_n768(x)
+ if (x < 1)
+ fun_l15_n156(x)
+ else
+ fun_l15_n340(x)
+ end
+end
+
+def fun_l14_n769(x)
+ if (x < 1)
+ fun_l15_n66(x)
+ else
+ fun_l15_n655(x)
+ end
+end
+
+def fun_l14_n770(x)
+ if (x < 1)
+ fun_l15_n15(x)
+ else
+ fun_l15_n392(x)
+ end
+end
+
+def fun_l14_n771(x)
+ if (x < 1)
+ fun_l15_n331(x)
+ else
+ fun_l15_n114(x)
+ end
+end
+
+def fun_l14_n772(x)
+ if (x < 1)
+ fun_l15_n267(x)
+ else
+ fun_l15_n711(x)
+ end
+end
+
+def fun_l14_n773(x)
+ if (x < 1)
+ fun_l15_n567(x)
+ else
+ fun_l15_n869(x)
+ end
+end
+
+def fun_l14_n774(x)
+ if (x < 1)
+ fun_l15_n915(x)
+ else
+ fun_l15_n594(x)
+ end
+end
+
+def fun_l14_n775(x)
+ if (x < 1)
+ fun_l15_n139(x)
+ else
+ fun_l15_n285(x)
+ end
+end
+
+def fun_l14_n776(x)
+ if (x < 1)
+ fun_l15_n994(x)
+ else
+ fun_l15_n116(x)
+ end
+end
+
+def fun_l14_n777(x)
+ if (x < 1)
+ fun_l15_n999(x)
+ else
+ fun_l15_n356(x)
+ end
+end
+
+def fun_l14_n778(x)
+ if (x < 1)
+ fun_l15_n46(x)
+ else
+ fun_l15_n845(x)
+ end
+end
+
+def fun_l14_n779(x)
+ if (x < 1)
+ fun_l15_n313(x)
+ else
+ fun_l15_n785(x)
+ end
+end
+
+def fun_l14_n780(x)
+ if (x < 1)
+ fun_l15_n282(x)
+ else
+ fun_l15_n489(x)
+ end
+end
+
+def fun_l14_n781(x)
+ if (x < 1)
+ fun_l15_n101(x)
+ else
+ fun_l15_n928(x)
+ end
+end
+
+def fun_l14_n782(x)
+ if (x < 1)
+ fun_l15_n307(x)
+ else
+ fun_l15_n808(x)
+ end
+end
+
+def fun_l14_n783(x)
+ if (x < 1)
+ fun_l15_n475(x)
+ else
+ fun_l15_n347(x)
+ end
+end
+
+def fun_l14_n784(x)
+ if (x < 1)
+ fun_l15_n404(x)
+ else
+ fun_l15_n65(x)
+ end
+end
+
+def fun_l14_n785(x)
+ if (x < 1)
+ fun_l15_n61(x)
+ else
+ fun_l15_n145(x)
+ end
+end
+
+def fun_l14_n786(x)
+ if (x < 1)
+ fun_l15_n919(x)
+ else
+ fun_l15_n700(x)
+ end
+end
+
+def fun_l14_n787(x)
+ if (x < 1)
+ fun_l15_n333(x)
+ else
+ fun_l15_n702(x)
+ end
+end
+
+def fun_l14_n788(x)
+ if (x < 1)
+ fun_l15_n924(x)
+ else
+ fun_l15_n354(x)
+ end
+end
+
+def fun_l14_n789(x)
+ if (x < 1)
+ fun_l15_n171(x)
+ else
+ fun_l15_n643(x)
+ end
+end
+
+def fun_l14_n790(x)
+ if (x < 1)
+ fun_l15_n852(x)
+ else
+ fun_l15_n421(x)
+ end
+end
+
+def fun_l14_n791(x)
+ if (x < 1)
+ fun_l15_n706(x)
+ else
+ fun_l15_n260(x)
+ end
+end
+
+def fun_l14_n792(x)
+ if (x < 1)
+ fun_l15_n908(x)
+ else
+ fun_l15_n145(x)
+ end
+end
+
+def fun_l14_n793(x)
+ if (x < 1)
+ fun_l15_n802(x)
+ else
+ fun_l15_n365(x)
+ end
+end
+
+def fun_l14_n794(x)
+ if (x < 1)
+ fun_l15_n727(x)
+ else
+ fun_l15_n758(x)
+ end
+end
+
+def fun_l14_n795(x)
+ if (x < 1)
+ fun_l15_n463(x)
+ else
+ fun_l15_n58(x)
+ end
+end
+
+def fun_l14_n796(x)
+ if (x < 1)
+ fun_l15_n413(x)
+ else
+ fun_l15_n525(x)
+ end
+end
+
+def fun_l14_n797(x)
+ if (x < 1)
+ fun_l15_n970(x)
+ else
+ fun_l15_n480(x)
+ end
+end
+
+def fun_l14_n798(x)
+ if (x < 1)
+ fun_l15_n476(x)
+ else
+ fun_l15_n316(x)
+ end
+end
+
+def fun_l14_n799(x)
+ if (x < 1)
+ fun_l15_n578(x)
+ else
+ fun_l15_n586(x)
+ end
+end
+
+def fun_l14_n800(x)
+ if (x < 1)
+ fun_l15_n848(x)
+ else
+ fun_l15_n286(x)
+ end
+end
+
+def fun_l14_n801(x)
+ if (x < 1)
+ fun_l15_n745(x)
+ else
+ fun_l15_n144(x)
+ end
+end
+
+def fun_l14_n802(x)
+ if (x < 1)
+ fun_l15_n369(x)
+ else
+ fun_l15_n819(x)
+ end
+end
+
+def fun_l14_n803(x)
+ if (x < 1)
+ fun_l15_n498(x)
+ else
+ fun_l15_n206(x)
+ end
+end
+
+def fun_l14_n804(x)
+ if (x < 1)
+ fun_l15_n817(x)
+ else
+ fun_l15_n707(x)
+ end
+end
+
+def fun_l14_n805(x)
+ if (x < 1)
+ fun_l15_n935(x)
+ else
+ fun_l15_n43(x)
+ end
+end
+
+def fun_l14_n806(x)
+ if (x < 1)
+ fun_l15_n285(x)
+ else
+ fun_l15_n605(x)
+ end
+end
+
+def fun_l14_n807(x)
+ if (x < 1)
+ fun_l15_n392(x)
+ else
+ fun_l15_n672(x)
+ end
+end
+
+def fun_l14_n808(x)
+ if (x < 1)
+ fun_l15_n965(x)
+ else
+ fun_l15_n610(x)
+ end
+end
+
+def fun_l14_n809(x)
+ if (x < 1)
+ fun_l15_n266(x)
+ else
+ fun_l15_n233(x)
+ end
+end
+
+def fun_l14_n810(x)
+ if (x < 1)
+ fun_l15_n514(x)
+ else
+ fun_l15_n204(x)
+ end
+end
+
+def fun_l14_n811(x)
+ if (x < 1)
+ fun_l15_n973(x)
+ else
+ fun_l15_n768(x)
+ end
+end
+
+def fun_l14_n812(x)
+ if (x < 1)
+ fun_l15_n241(x)
+ else
+ fun_l15_n329(x)
+ end
+end
+
+def fun_l14_n813(x)
+ if (x < 1)
+ fun_l15_n150(x)
+ else
+ fun_l15_n264(x)
+ end
+end
+
+def fun_l14_n814(x)
+ if (x < 1)
+ fun_l15_n205(x)
+ else
+ fun_l15_n595(x)
+ end
+end
+
+def fun_l14_n815(x)
+ if (x < 1)
+ fun_l15_n452(x)
+ else
+ fun_l15_n288(x)
+ end
+end
+
+def fun_l14_n816(x)
+ if (x < 1)
+ fun_l15_n385(x)
+ else
+ fun_l15_n633(x)
+ end
+end
+
+def fun_l14_n817(x)
+ if (x < 1)
+ fun_l15_n290(x)
+ else
+ fun_l15_n656(x)
+ end
+end
+
+def fun_l14_n818(x)
+ if (x < 1)
+ fun_l15_n463(x)
+ else
+ fun_l15_n785(x)
+ end
+end
+
+def fun_l14_n819(x)
+ if (x < 1)
+ fun_l15_n183(x)
+ else
+ fun_l15_n787(x)
+ end
+end
+
+def fun_l14_n820(x)
+ if (x < 1)
+ fun_l15_n515(x)
+ else
+ fun_l15_n104(x)
+ end
+end
+
+def fun_l14_n821(x)
+ if (x < 1)
+ fun_l15_n848(x)
+ else
+ fun_l15_n745(x)
+ end
+end
+
+def fun_l14_n822(x)
+ if (x < 1)
+ fun_l15_n268(x)
+ else
+ fun_l15_n140(x)
+ end
+end
+
+def fun_l14_n823(x)
+ if (x < 1)
+ fun_l15_n607(x)
+ else
+ fun_l15_n785(x)
+ end
+end
+
+def fun_l14_n824(x)
+ if (x < 1)
+ fun_l15_n261(x)
+ else
+ fun_l15_n659(x)
+ end
+end
+
+def fun_l14_n825(x)
+ if (x < 1)
+ fun_l15_n628(x)
+ else
+ fun_l15_n427(x)
+ end
+end
+
+def fun_l14_n826(x)
+ if (x < 1)
+ fun_l15_n293(x)
+ else
+ fun_l15_n141(x)
+ end
+end
+
+def fun_l14_n827(x)
+ if (x < 1)
+ fun_l15_n112(x)
+ else
+ fun_l15_n135(x)
+ end
+end
+
+def fun_l14_n828(x)
+ if (x < 1)
+ fun_l15_n779(x)
+ else
+ fun_l15_n323(x)
+ end
+end
+
+def fun_l14_n829(x)
+ if (x < 1)
+ fun_l15_n295(x)
+ else
+ fun_l15_n753(x)
+ end
+end
+
+def fun_l14_n830(x)
+ if (x < 1)
+ fun_l15_n683(x)
+ else
+ fun_l15_n303(x)
+ end
+end
+
+def fun_l14_n831(x)
+ if (x < 1)
+ fun_l15_n522(x)
+ else
+ fun_l15_n983(x)
+ end
+end
+
+def fun_l14_n832(x)
+ if (x < 1)
+ fun_l15_n338(x)
+ else
+ fun_l15_n835(x)
+ end
+end
+
+def fun_l14_n833(x)
+ if (x < 1)
+ fun_l15_n888(x)
+ else
+ fun_l15_n95(x)
+ end
+end
+
+def fun_l14_n834(x)
+ if (x < 1)
+ fun_l15_n510(x)
+ else
+ fun_l15_n342(x)
+ end
+end
+
+def fun_l14_n835(x)
+ if (x < 1)
+ fun_l15_n168(x)
+ else
+ fun_l15_n864(x)
+ end
+end
+
+def fun_l14_n836(x)
+ if (x < 1)
+ fun_l15_n392(x)
+ else
+ fun_l15_n779(x)
+ end
+end
+
+def fun_l14_n837(x)
+ if (x < 1)
+ fun_l15_n176(x)
+ else
+ fun_l15_n354(x)
+ end
+end
+
+def fun_l14_n838(x)
+ if (x < 1)
+ fun_l15_n477(x)
+ else
+ fun_l15_n95(x)
+ end
+end
+
+def fun_l14_n839(x)
+ if (x < 1)
+ fun_l15_n223(x)
+ else
+ fun_l15_n213(x)
+ end
+end
+
+def fun_l14_n840(x)
+ if (x < 1)
+ fun_l15_n228(x)
+ else
+ fun_l15_n897(x)
+ end
+end
+
+def fun_l14_n841(x)
+ if (x < 1)
+ fun_l15_n551(x)
+ else
+ fun_l15_n649(x)
+ end
+end
+
+def fun_l14_n842(x)
+ if (x < 1)
+ fun_l15_n541(x)
+ else
+ fun_l15_n741(x)
+ end
+end
+
+def fun_l14_n843(x)
+ if (x < 1)
+ fun_l15_n464(x)
+ else
+ fun_l15_n403(x)
+ end
+end
+
+def fun_l14_n844(x)
+ if (x < 1)
+ fun_l15_n853(x)
+ else
+ fun_l15_n223(x)
+ end
+end
+
+def fun_l14_n845(x)
+ if (x < 1)
+ fun_l15_n443(x)
+ else
+ fun_l15_n441(x)
+ end
+end
+
+def fun_l14_n846(x)
+ if (x < 1)
+ fun_l15_n864(x)
+ else
+ fun_l15_n912(x)
+ end
+end
+
+def fun_l14_n847(x)
+ if (x < 1)
+ fun_l15_n631(x)
+ else
+ fun_l15_n764(x)
+ end
+end
+
+def fun_l14_n848(x)
+ if (x < 1)
+ fun_l15_n198(x)
+ else
+ fun_l15_n825(x)
+ end
+end
+
+def fun_l14_n849(x)
+ if (x < 1)
+ fun_l15_n525(x)
+ else
+ fun_l15_n31(x)
+ end
+end
+
+def fun_l14_n850(x)
+ if (x < 1)
+ fun_l15_n928(x)
+ else
+ fun_l15_n893(x)
+ end
+end
+
+def fun_l14_n851(x)
+ if (x < 1)
+ fun_l15_n499(x)
+ else
+ fun_l15_n297(x)
+ end
+end
+
+def fun_l14_n852(x)
+ if (x < 1)
+ fun_l15_n777(x)
+ else
+ fun_l15_n239(x)
+ end
+end
+
+def fun_l14_n853(x)
+ if (x < 1)
+ fun_l15_n120(x)
+ else
+ fun_l15_n134(x)
+ end
+end
+
+def fun_l14_n854(x)
+ if (x < 1)
+ fun_l15_n613(x)
+ else
+ fun_l15_n324(x)
+ end
+end
+
+def fun_l14_n855(x)
+ if (x < 1)
+ fun_l15_n22(x)
+ else
+ fun_l15_n192(x)
+ end
+end
+
+def fun_l14_n856(x)
+ if (x < 1)
+ fun_l15_n609(x)
+ else
+ fun_l15_n284(x)
+ end
+end
+
+def fun_l14_n857(x)
+ if (x < 1)
+ fun_l15_n130(x)
+ else
+ fun_l15_n256(x)
+ end
+end
+
+def fun_l14_n858(x)
+ if (x < 1)
+ fun_l15_n40(x)
+ else
+ fun_l15_n340(x)
+ end
+end
+
+def fun_l14_n859(x)
+ if (x < 1)
+ fun_l15_n644(x)
+ else
+ fun_l15_n522(x)
+ end
+end
+
+def fun_l14_n860(x)
+ if (x < 1)
+ fun_l15_n363(x)
+ else
+ fun_l15_n52(x)
+ end
+end
+
+def fun_l14_n861(x)
+ if (x < 1)
+ fun_l15_n166(x)
+ else
+ fun_l15_n452(x)
+ end
+end
+
+def fun_l14_n862(x)
+ if (x < 1)
+ fun_l15_n552(x)
+ else
+ fun_l15_n534(x)
+ end
+end
+
+def fun_l14_n863(x)
+ if (x < 1)
+ fun_l15_n489(x)
+ else
+ fun_l15_n181(x)
+ end
+end
+
+def fun_l14_n864(x)
+ if (x < 1)
+ fun_l15_n584(x)
+ else
+ fun_l15_n871(x)
+ end
+end
+
+def fun_l14_n865(x)
+ if (x < 1)
+ fun_l15_n868(x)
+ else
+ fun_l15_n807(x)
+ end
+end
+
+def fun_l14_n866(x)
+ if (x < 1)
+ fun_l15_n159(x)
+ else
+ fun_l15_n226(x)
+ end
+end
+
+def fun_l14_n867(x)
+ if (x < 1)
+ fun_l15_n440(x)
+ else
+ fun_l15_n318(x)
+ end
+end
+
+def fun_l14_n868(x)
+ if (x < 1)
+ fun_l15_n603(x)
+ else
+ fun_l15_n440(x)
+ end
+end
+
+def fun_l14_n869(x)
+ if (x < 1)
+ fun_l15_n478(x)
+ else
+ fun_l15_n896(x)
+ end
+end
+
+def fun_l14_n870(x)
+ if (x < 1)
+ fun_l15_n593(x)
+ else
+ fun_l15_n973(x)
+ end
+end
+
+def fun_l14_n871(x)
+ if (x < 1)
+ fun_l15_n767(x)
+ else
+ fun_l15_n828(x)
+ end
+end
+
+def fun_l14_n872(x)
+ if (x < 1)
+ fun_l15_n578(x)
+ else
+ fun_l15_n309(x)
+ end
+end
+
+def fun_l14_n873(x)
+ if (x < 1)
+ fun_l15_n959(x)
+ else
+ fun_l15_n263(x)
+ end
+end
+
+def fun_l14_n874(x)
+ if (x < 1)
+ fun_l15_n170(x)
+ else
+ fun_l15_n700(x)
+ end
+end
+
+def fun_l14_n875(x)
+ if (x < 1)
+ fun_l15_n800(x)
+ else
+ fun_l15_n703(x)
+ end
+end
+
+def fun_l14_n876(x)
+ if (x < 1)
+ fun_l15_n556(x)
+ else
+ fun_l15_n854(x)
+ end
+end
+
+def fun_l14_n877(x)
+ if (x < 1)
+ fun_l15_n472(x)
+ else
+ fun_l15_n893(x)
+ end
+end
+
+def fun_l14_n878(x)
+ if (x < 1)
+ fun_l15_n847(x)
+ else
+ fun_l15_n438(x)
+ end
+end
+
+def fun_l14_n879(x)
+ if (x < 1)
+ fun_l15_n401(x)
+ else
+ fun_l15_n59(x)
+ end
+end
+
+def fun_l14_n880(x)
+ if (x < 1)
+ fun_l15_n321(x)
+ else
+ fun_l15_n57(x)
+ end
+end
+
+def fun_l14_n881(x)
+ if (x < 1)
+ fun_l15_n664(x)
+ else
+ fun_l15_n448(x)
+ end
+end
+
+def fun_l14_n882(x)
+ if (x < 1)
+ fun_l15_n113(x)
+ else
+ fun_l15_n270(x)
+ end
+end
+
+def fun_l14_n883(x)
+ if (x < 1)
+ fun_l15_n596(x)
+ else
+ fun_l15_n354(x)
+ end
+end
+
+def fun_l14_n884(x)
+ if (x < 1)
+ fun_l15_n681(x)
+ else
+ fun_l15_n801(x)
+ end
+end
+
+def fun_l14_n885(x)
+ if (x < 1)
+ fun_l15_n802(x)
+ else
+ fun_l15_n327(x)
+ end
+end
+
+def fun_l14_n886(x)
+ if (x < 1)
+ fun_l15_n657(x)
+ else
+ fun_l15_n325(x)
+ end
+end
+
+def fun_l14_n887(x)
+ if (x < 1)
+ fun_l15_n108(x)
+ else
+ fun_l15_n11(x)
+ end
+end
+
+def fun_l14_n888(x)
+ if (x < 1)
+ fun_l15_n696(x)
+ else
+ fun_l15_n88(x)
+ end
+end
+
+def fun_l14_n889(x)
+ if (x < 1)
+ fun_l15_n220(x)
+ else
+ fun_l15_n282(x)
+ end
+end
+
+def fun_l14_n890(x)
+ if (x < 1)
+ fun_l15_n702(x)
+ else
+ fun_l15_n550(x)
+ end
+end
+
+def fun_l14_n891(x)
+ if (x < 1)
+ fun_l15_n67(x)
+ else
+ fun_l15_n763(x)
+ end
+end
+
+def fun_l14_n892(x)
+ if (x < 1)
+ fun_l15_n386(x)
+ else
+ fun_l15_n938(x)
+ end
+end
+
+def fun_l14_n893(x)
+ if (x < 1)
+ fun_l15_n193(x)
+ else
+ fun_l15_n110(x)
+ end
+end
+
+def fun_l14_n894(x)
+ if (x < 1)
+ fun_l15_n408(x)
+ else
+ fun_l15_n392(x)
+ end
+end
+
+def fun_l14_n895(x)
+ if (x < 1)
+ fun_l15_n488(x)
+ else
+ fun_l15_n445(x)
+ end
+end
+
+def fun_l14_n896(x)
+ if (x < 1)
+ fun_l15_n572(x)
+ else
+ fun_l15_n645(x)
+ end
+end
+
+def fun_l14_n897(x)
+ if (x < 1)
+ fun_l15_n432(x)
+ else
+ fun_l15_n288(x)
+ end
+end
+
+def fun_l14_n898(x)
+ if (x < 1)
+ fun_l15_n466(x)
+ else
+ fun_l15_n877(x)
+ end
+end
+
+def fun_l14_n899(x)
+ if (x < 1)
+ fun_l15_n981(x)
+ else
+ fun_l15_n546(x)
+ end
+end
+
+def fun_l14_n900(x)
+ if (x < 1)
+ fun_l15_n334(x)
+ else
+ fun_l15_n198(x)
+ end
+end
+
+def fun_l14_n901(x)
+ if (x < 1)
+ fun_l15_n447(x)
+ else
+ fun_l15_n881(x)
+ end
+end
+
+def fun_l14_n902(x)
+ if (x < 1)
+ fun_l15_n818(x)
+ else
+ fun_l15_n882(x)
+ end
+end
+
+def fun_l14_n903(x)
+ if (x < 1)
+ fun_l15_n86(x)
+ else
+ fun_l15_n864(x)
+ end
+end
+
+def fun_l14_n904(x)
+ if (x < 1)
+ fun_l15_n981(x)
+ else
+ fun_l15_n472(x)
+ end
+end
+
+def fun_l14_n905(x)
+ if (x < 1)
+ fun_l15_n684(x)
+ else
+ fun_l15_n314(x)
+ end
+end
+
+def fun_l14_n906(x)
+ if (x < 1)
+ fun_l15_n792(x)
+ else
+ fun_l15_n270(x)
+ end
+end
+
+def fun_l14_n907(x)
+ if (x < 1)
+ fun_l15_n958(x)
+ else
+ fun_l15_n293(x)
+ end
+end
+
+def fun_l14_n908(x)
+ if (x < 1)
+ fun_l15_n953(x)
+ else
+ fun_l15_n837(x)
+ end
+end
+
+def fun_l14_n909(x)
+ if (x < 1)
+ fun_l15_n448(x)
+ else
+ fun_l15_n985(x)
+ end
+end
+
+def fun_l14_n910(x)
+ if (x < 1)
+ fun_l15_n148(x)
+ else
+ fun_l15_n210(x)
+ end
+end
+
+def fun_l14_n911(x)
+ if (x < 1)
+ fun_l15_n51(x)
+ else
+ fun_l15_n714(x)
+ end
+end
+
+def fun_l14_n912(x)
+ if (x < 1)
+ fun_l15_n538(x)
+ else
+ fun_l15_n653(x)
+ end
+end
+
+def fun_l14_n913(x)
+ if (x < 1)
+ fun_l15_n374(x)
+ else
+ fun_l15_n836(x)
+ end
+end
+
+def fun_l14_n914(x)
+ if (x < 1)
+ fun_l15_n5(x)
+ else
+ fun_l15_n307(x)
+ end
+end
+
+def fun_l14_n915(x)
+ if (x < 1)
+ fun_l15_n670(x)
+ else
+ fun_l15_n961(x)
+ end
+end
+
+def fun_l14_n916(x)
+ if (x < 1)
+ fun_l15_n600(x)
+ else
+ fun_l15_n843(x)
+ end
+end
+
+def fun_l14_n917(x)
+ if (x < 1)
+ fun_l15_n235(x)
+ else
+ fun_l15_n542(x)
+ end
+end
+
+def fun_l14_n918(x)
+ if (x < 1)
+ fun_l15_n883(x)
+ else
+ fun_l15_n990(x)
+ end
+end
+
+def fun_l14_n919(x)
+ if (x < 1)
+ fun_l15_n988(x)
+ else
+ fun_l15_n678(x)
+ end
+end
+
+def fun_l14_n920(x)
+ if (x < 1)
+ fun_l15_n246(x)
+ else
+ fun_l15_n942(x)
+ end
+end
+
+def fun_l14_n921(x)
+ if (x < 1)
+ fun_l15_n316(x)
+ else
+ fun_l15_n503(x)
+ end
+end
+
+def fun_l14_n922(x)
+ if (x < 1)
+ fun_l15_n392(x)
+ else
+ fun_l15_n948(x)
+ end
+end
+
+def fun_l14_n923(x)
+ if (x < 1)
+ fun_l15_n79(x)
+ else
+ fun_l15_n375(x)
+ end
+end
+
+def fun_l14_n924(x)
+ if (x < 1)
+ fun_l15_n139(x)
+ else
+ fun_l15_n350(x)
+ end
+end
+
+def fun_l14_n925(x)
+ if (x < 1)
+ fun_l15_n132(x)
+ else
+ fun_l15_n27(x)
+ end
+end
+
+def fun_l14_n926(x)
+ if (x < 1)
+ fun_l15_n608(x)
+ else
+ fun_l15_n910(x)
+ end
+end
+
+def fun_l14_n927(x)
+ if (x < 1)
+ fun_l15_n447(x)
+ else
+ fun_l15_n361(x)
+ end
+end
+
+def fun_l14_n928(x)
+ if (x < 1)
+ fun_l15_n432(x)
+ else
+ fun_l15_n943(x)
+ end
+end
+
+def fun_l14_n929(x)
+ if (x < 1)
+ fun_l15_n726(x)
+ else
+ fun_l15_n19(x)
+ end
+end
+
+def fun_l14_n930(x)
+ if (x < 1)
+ fun_l15_n311(x)
+ else
+ fun_l15_n683(x)
+ end
+end
+
+def fun_l14_n931(x)
+ if (x < 1)
+ fun_l15_n988(x)
+ else
+ fun_l15_n731(x)
+ end
+end
+
+def fun_l14_n932(x)
+ if (x < 1)
+ fun_l15_n916(x)
+ else
+ fun_l15_n625(x)
+ end
+end
+
+def fun_l14_n933(x)
+ if (x < 1)
+ fun_l15_n723(x)
+ else
+ fun_l15_n954(x)
+ end
+end
+
+def fun_l14_n934(x)
+ if (x < 1)
+ fun_l15_n82(x)
+ else
+ fun_l15_n140(x)
+ end
+end
+
+def fun_l14_n935(x)
+ if (x < 1)
+ fun_l15_n11(x)
+ else
+ fun_l15_n407(x)
+ end
+end
+
+def fun_l14_n936(x)
+ if (x < 1)
+ fun_l15_n261(x)
+ else
+ fun_l15_n733(x)
+ end
+end
+
+def fun_l14_n937(x)
+ if (x < 1)
+ fun_l15_n37(x)
+ else
+ fun_l15_n617(x)
+ end
+end
+
+def fun_l14_n938(x)
+ if (x < 1)
+ fun_l15_n733(x)
+ else
+ fun_l15_n178(x)
+ end
+end
+
+def fun_l14_n939(x)
+ if (x < 1)
+ fun_l15_n989(x)
+ else
+ fun_l15_n917(x)
+ end
+end
+
+def fun_l14_n940(x)
+ if (x < 1)
+ fun_l15_n297(x)
+ else
+ fun_l15_n393(x)
+ end
+end
+
+def fun_l14_n941(x)
+ if (x < 1)
+ fun_l15_n167(x)
+ else
+ fun_l15_n498(x)
+ end
+end
+
+def fun_l14_n942(x)
+ if (x < 1)
+ fun_l15_n365(x)
+ else
+ fun_l15_n158(x)
+ end
+end
+
+def fun_l14_n943(x)
+ if (x < 1)
+ fun_l15_n340(x)
+ else
+ fun_l15_n813(x)
+ end
+end
+
+def fun_l14_n944(x)
+ if (x < 1)
+ fun_l15_n417(x)
+ else
+ fun_l15_n150(x)
+ end
+end
+
+def fun_l14_n945(x)
+ if (x < 1)
+ fun_l15_n477(x)
+ else
+ fun_l15_n639(x)
+ end
+end
+
+def fun_l14_n946(x)
+ if (x < 1)
+ fun_l15_n243(x)
+ else
+ fun_l15_n439(x)
+ end
+end
+
+def fun_l14_n947(x)
+ if (x < 1)
+ fun_l15_n149(x)
+ else
+ fun_l15_n881(x)
+ end
+end
+
+def fun_l14_n948(x)
+ if (x < 1)
+ fun_l15_n383(x)
+ else
+ fun_l15_n525(x)
+ end
+end
+
+def fun_l14_n949(x)
+ if (x < 1)
+ fun_l15_n482(x)
+ else
+ fun_l15_n625(x)
+ end
+end
+
+def fun_l14_n950(x)
+ if (x < 1)
+ fun_l15_n376(x)
+ else
+ fun_l15_n743(x)
+ end
+end
+
+def fun_l14_n951(x)
+ if (x < 1)
+ fun_l15_n53(x)
+ else
+ fun_l15_n734(x)
+ end
+end
+
+def fun_l14_n952(x)
+ if (x < 1)
+ fun_l15_n437(x)
+ else
+ fun_l15_n829(x)
+ end
+end
+
+def fun_l14_n953(x)
+ if (x < 1)
+ fun_l15_n673(x)
+ else
+ fun_l15_n540(x)
+ end
+end
+
+def fun_l14_n954(x)
+ if (x < 1)
+ fun_l15_n477(x)
+ else
+ fun_l15_n488(x)
+ end
+end
+
+def fun_l14_n955(x)
+ if (x < 1)
+ fun_l15_n876(x)
+ else
+ fun_l15_n710(x)
+ end
+end
+
+def fun_l14_n956(x)
+ if (x < 1)
+ fun_l15_n823(x)
+ else
+ fun_l15_n841(x)
+ end
+end
+
+def fun_l14_n957(x)
+ if (x < 1)
+ fun_l15_n948(x)
+ else
+ fun_l15_n378(x)
+ end
+end
+
+def fun_l14_n958(x)
+ if (x < 1)
+ fun_l15_n941(x)
+ else
+ fun_l15_n555(x)
+ end
+end
+
+def fun_l14_n959(x)
+ if (x < 1)
+ fun_l15_n204(x)
+ else
+ fun_l15_n792(x)
+ end
+end
+
+def fun_l14_n960(x)
+ if (x < 1)
+ fun_l15_n897(x)
+ else
+ fun_l15_n287(x)
+ end
+end
+
+def fun_l14_n961(x)
+ if (x < 1)
+ fun_l15_n771(x)
+ else
+ fun_l15_n409(x)
+ end
+end
+
+def fun_l14_n962(x)
+ if (x < 1)
+ fun_l15_n597(x)
+ else
+ fun_l15_n190(x)
+ end
+end
+
+def fun_l14_n963(x)
+ if (x < 1)
+ fun_l15_n573(x)
+ else
+ fun_l15_n982(x)
+ end
+end
+
+def fun_l14_n964(x)
+ if (x < 1)
+ fun_l15_n186(x)
+ else
+ fun_l15_n363(x)
+ end
+end
+
+def fun_l14_n965(x)
+ if (x < 1)
+ fun_l15_n694(x)
+ else
+ fun_l15_n319(x)
+ end
+end
+
+def fun_l14_n966(x)
+ if (x < 1)
+ fun_l15_n312(x)
+ else
+ fun_l15_n332(x)
+ end
+end
+
+def fun_l14_n967(x)
+ if (x < 1)
+ fun_l15_n754(x)
+ else
+ fun_l15_n965(x)
+ end
+end
+
+def fun_l14_n968(x)
+ if (x < 1)
+ fun_l15_n18(x)
+ else
+ fun_l15_n723(x)
+ end
+end
+
+def fun_l14_n969(x)
+ if (x < 1)
+ fun_l15_n111(x)
+ else
+ fun_l15_n447(x)
+ end
+end
+
+def fun_l14_n970(x)
+ if (x < 1)
+ fun_l15_n3(x)
+ else
+ fun_l15_n302(x)
+ end
+end
+
+def fun_l14_n971(x)
+ if (x < 1)
+ fun_l15_n121(x)
+ else
+ fun_l15_n764(x)
+ end
+end
+
+def fun_l14_n972(x)
+ if (x < 1)
+ fun_l15_n192(x)
+ else
+ fun_l15_n692(x)
+ end
+end
+
+def fun_l14_n973(x)
+ if (x < 1)
+ fun_l15_n596(x)
+ else
+ fun_l15_n514(x)
+ end
+end
+
+def fun_l14_n974(x)
+ if (x < 1)
+ fun_l15_n845(x)
+ else
+ fun_l15_n245(x)
+ end
+end
+
+def fun_l14_n975(x)
+ if (x < 1)
+ fun_l15_n566(x)
+ else
+ fun_l15_n58(x)
+ end
+end
+
+def fun_l14_n976(x)
+ if (x < 1)
+ fun_l15_n843(x)
+ else
+ fun_l15_n35(x)
+ end
+end
+
+def fun_l14_n977(x)
+ if (x < 1)
+ fun_l15_n995(x)
+ else
+ fun_l15_n723(x)
+ end
+end
+
+def fun_l14_n978(x)
+ if (x < 1)
+ fun_l15_n534(x)
+ else
+ fun_l15_n704(x)
+ end
+end
+
+def fun_l14_n979(x)
+ if (x < 1)
+ fun_l15_n533(x)
+ else
+ fun_l15_n492(x)
+ end
+end
+
+def fun_l14_n980(x)
+ if (x < 1)
+ fun_l15_n758(x)
+ else
+ fun_l15_n655(x)
+ end
+end
+
+def fun_l14_n981(x)
+ if (x < 1)
+ fun_l15_n94(x)
+ else
+ fun_l15_n246(x)
+ end
+end
+
+def fun_l14_n982(x)
+ if (x < 1)
+ fun_l15_n873(x)
+ else
+ fun_l15_n996(x)
+ end
+end
+
+def fun_l14_n983(x)
+ if (x < 1)
+ fun_l15_n681(x)
+ else
+ fun_l15_n522(x)
+ end
+end
+
+def fun_l14_n984(x)
+ if (x < 1)
+ fun_l15_n272(x)
+ else
+ fun_l15_n501(x)
+ end
+end
+
+def fun_l14_n985(x)
+ if (x < 1)
+ fun_l15_n345(x)
+ else
+ fun_l15_n61(x)
+ end
+end
+
+def fun_l14_n986(x)
+ if (x < 1)
+ fun_l15_n517(x)
+ else
+ fun_l15_n151(x)
+ end
+end
+
+def fun_l14_n987(x)
+ if (x < 1)
+ fun_l15_n792(x)
+ else
+ fun_l15_n969(x)
+ end
+end
+
+def fun_l14_n988(x)
+ if (x < 1)
+ fun_l15_n683(x)
+ else
+ fun_l15_n537(x)
+ end
+end
+
+def fun_l14_n989(x)
+ if (x < 1)
+ fun_l15_n310(x)
+ else
+ fun_l15_n367(x)
+ end
+end
+
+def fun_l14_n990(x)
+ if (x < 1)
+ fun_l15_n249(x)
+ else
+ fun_l15_n897(x)
+ end
+end
+
+def fun_l14_n991(x)
+ if (x < 1)
+ fun_l15_n389(x)
+ else
+ fun_l15_n176(x)
+ end
+end
+
+def fun_l14_n992(x)
+ if (x < 1)
+ fun_l15_n233(x)
+ else
+ fun_l15_n220(x)
+ end
+end
+
+def fun_l14_n993(x)
+ if (x < 1)
+ fun_l15_n161(x)
+ else
+ fun_l15_n642(x)
+ end
+end
+
+def fun_l14_n994(x)
+ if (x < 1)
+ fun_l15_n163(x)
+ else
+ fun_l15_n5(x)
+ end
+end
+
+def fun_l14_n995(x)
+ if (x < 1)
+ fun_l15_n678(x)
+ else
+ fun_l15_n108(x)
+ end
+end
+
+def fun_l14_n996(x)
+ if (x < 1)
+ fun_l15_n732(x)
+ else
+ fun_l15_n26(x)
+ end
+end
+
+def fun_l14_n997(x)
+ if (x < 1)
+ fun_l15_n805(x)
+ else
+ fun_l15_n726(x)
+ end
+end
+
+def fun_l14_n998(x)
+ if (x < 1)
+ fun_l15_n543(x)
+ else
+ fun_l15_n102(x)
+ end
+end
+
+def fun_l14_n999(x)
+ if (x < 1)
+ fun_l15_n358(x)
+ else
+ fun_l15_n986(x)
+ end
+end
+
+def fun_l15_n0(x)
+ if (x < 1)
+ fun_l16_n832(x)
+ else
+ fun_l16_n319(x)
+ end
+end
+
+def fun_l15_n1(x)
+ if (x < 1)
+ fun_l16_n920(x)
+ else
+ fun_l16_n27(x)
+ end
+end
+
+def fun_l15_n2(x)
+ if (x < 1)
+ fun_l16_n929(x)
+ else
+ fun_l16_n230(x)
+ end
+end
+
+def fun_l15_n3(x)
+ if (x < 1)
+ fun_l16_n135(x)
+ else
+ fun_l16_n427(x)
+ end
+end
+
+def fun_l15_n4(x)
+ if (x < 1)
+ fun_l16_n299(x)
+ else
+ fun_l16_n811(x)
+ end
+end
+
+def fun_l15_n5(x)
+ if (x < 1)
+ fun_l16_n821(x)
+ else
+ fun_l16_n717(x)
+ end
+end
+
+def fun_l15_n6(x)
+ if (x < 1)
+ fun_l16_n907(x)
+ else
+ fun_l16_n348(x)
+ end
+end
+
+def fun_l15_n7(x)
+ if (x < 1)
+ fun_l16_n708(x)
+ else
+ fun_l16_n180(x)
+ end
+end
+
+def fun_l15_n8(x)
+ if (x < 1)
+ fun_l16_n835(x)
+ else
+ fun_l16_n754(x)
+ end
+end
+
+def fun_l15_n9(x)
+ if (x < 1)
+ fun_l16_n25(x)
+ else
+ fun_l16_n607(x)
+ end
+end
+
+def fun_l15_n10(x)
+ if (x < 1)
+ fun_l16_n73(x)
+ else
+ fun_l16_n784(x)
+ end
+end
+
+def fun_l15_n11(x)
+ if (x < 1)
+ fun_l16_n413(x)
+ else
+ fun_l16_n914(x)
+ end
+end
+
+def fun_l15_n12(x)
+ if (x < 1)
+ fun_l16_n734(x)
+ else
+ fun_l16_n688(x)
+ end
+end
+
+def fun_l15_n13(x)
+ if (x < 1)
+ fun_l16_n658(x)
+ else
+ fun_l16_n491(x)
+ end
+end
+
+def fun_l15_n14(x)
+ if (x < 1)
+ fun_l16_n839(x)
+ else
+ fun_l16_n740(x)
+ end
+end
+
+def fun_l15_n15(x)
+ if (x < 1)
+ fun_l16_n378(x)
+ else
+ fun_l16_n800(x)
+ end
+end
+
+def fun_l15_n16(x)
+ if (x < 1)
+ fun_l16_n980(x)
+ else
+ fun_l16_n83(x)
+ end
+end
+
+def fun_l15_n17(x)
+ if (x < 1)
+ fun_l16_n338(x)
+ else
+ fun_l16_n871(x)
+ end
+end
+
+def fun_l15_n18(x)
+ if (x < 1)
+ fun_l16_n497(x)
+ else
+ fun_l16_n347(x)
+ end
+end
+
+def fun_l15_n19(x)
+ if (x < 1)
+ fun_l16_n483(x)
+ else
+ fun_l16_n913(x)
+ end
+end
+
+def fun_l15_n20(x)
+ if (x < 1)
+ fun_l16_n663(x)
+ else
+ fun_l16_n432(x)
+ end
+end
+
+def fun_l15_n21(x)
+ if (x < 1)
+ fun_l16_n787(x)
+ else
+ fun_l16_n248(x)
+ end
+end
+
+def fun_l15_n22(x)
+ if (x < 1)
+ fun_l16_n257(x)
+ else
+ fun_l16_n944(x)
+ end
+end
+
+def fun_l15_n23(x)
+ if (x < 1)
+ fun_l16_n11(x)
+ else
+ fun_l16_n343(x)
+ end
+end
+
+def fun_l15_n24(x)
+ if (x < 1)
+ fun_l16_n860(x)
+ else
+ fun_l16_n752(x)
+ end
+end
+
+def fun_l15_n25(x)
+ if (x < 1)
+ fun_l16_n766(x)
+ else
+ fun_l16_n719(x)
+ end
+end
+
+def fun_l15_n26(x)
+ if (x < 1)
+ fun_l16_n144(x)
+ else
+ fun_l16_n963(x)
+ end
+end
+
+def fun_l15_n27(x)
+ if (x < 1)
+ fun_l16_n659(x)
+ else
+ fun_l16_n916(x)
+ end
+end
+
+def fun_l15_n28(x)
+ if (x < 1)
+ fun_l16_n429(x)
+ else
+ fun_l16_n272(x)
+ end
+end
+
+def fun_l15_n29(x)
+ if (x < 1)
+ fun_l16_n54(x)
+ else
+ fun_l16_n794(x)
+ end
+end
+
+def fun_l15_n30(x)
+ if (x < 1)
+ fun_l16_n273(x)
+ else
+ fun_l16_n929(x)
+ end
+end
+
+def fun_l15_n31(x)
+ if (x < 1)
+ fun_l16_n868(x)
+ else
+ fun_l16_n967(x)
+ end
+end
+
+def fun_l15_n32(x)
+ if (x < 1)
+ fun_l16_n888(x)
+ else
+ fun_l16_n283(x)
+ end
+end
+
+def fun_l15_n33(x)
+ if (x < 1)
+ fun_l16_n6(x)
+ else
+ fun_l16_n677(x)
+ end
+end
+
+def fun_l15_n34(x)
+ if (x < 1)
+ fun_l16_n248(x)
+ else
+ fun_l16_n831(x)
+ end
+end
+
+def fun_l15_n35(x)
+ if (x < 1)
+ fun_l16_n832(x)
+ else
+ fun_l16_n634(x)
+ end
+end
+
+def fun_l15_n36(x)
+ if (x < 1)
+ fun_l16_n221(x)
+ else
+ fun_l16_n401(x)
+ end
+end
+
+def fun_l15_n37(x)
+ if (x < 1)
+ fun_l16_n403(x)
+ else
+ fun_l16_n29(x)
+ end
+end
+
+def fun_l15_n38(x)
+ if (x < 1)
+ fun_l16_n11(x)
+ else
+ fun_l16_n517(x)
+ end
+end
+
+def fun_l15_n39(x)
+ if (x < 1)
+ fun_l16_n234(x)
+ else
+ fun_l16_n231(x)
+ end
+end
+
+def fun_l15_n40(x)
+ if (x < 1)
+ fun_l16_n185(x)
+ else
+ fun_l16_n818(x)
+ end
+end
+
+def fun_l15_n41(x)
+ if (x < 1)
+ fun_l16_n169(x)
+ else
+ fun_l16_n239(x)
+ end
+end
+
+def fun_l15_n42(x)
+ if (x < 1)
+ fun_l16_n111(x)
+ else
+ fun_l16_n836(x)
+ end
+end
+
+def fun_l15_n43(x)
+ if (x < 1)
+ fun_l16_n832(x)
+ else
+ fun_l16_n714(x)
+ end
+end
+
+def fun_l15_n44(x)
+ if (x < 1)
+ fun_l16_n167(x)
+ else
+ fun_l16_n65(x)
+ end
+end
+
+def fun_l15_n45(x)
+ if (x < 1)
+ fun_l16_n801(x)
+ else
+ fun_l16_n456(x)
+ end
+end
+
+def fun_l15_n46(x)
+ if (x < 1)
+ fun_l16_n894(x)
+ else
+ fun_l16_n103(x)
+ end
+end
+
+def fun_l15_n47(x)
+ if (x < 1)
+ fun_l16_n156(x)
+ else
+ fun_l16_n228(x)
+ end
+end
+
+def fun_l15_n48(x)
+ if (x < 1)
+ fun_l16_n167(x)
+ else
+ fun_l16_n317(x)
+ end
+end
+
+def fun_l15_n49(x)
+ if (x < 1)
+ fun_l16_n864(x)
+ else
+ fun_l16_n425(x)
+ end
+end
+
+def fun_l15_n50(x)
+ if (x < 1)
+ fun_l16_n11(x)
+ else
+ fun_l16_n498(x)
+ end
+end
+
+def fun_l15_n51(x)
+ if (x < 1)
+ fun_l16_n209(x)
+ else
+ fun_l16_n399(x)
+ end
+end
+
+def fun_l15_n52(x)
+ if (x < 1)
+ fun_l16_n320(x)
+ else
+ fun_l16_n912(x)
+ end
+end
+
+def fun_l15_n53(x)
+ if (x < 1)
+ fun_l16_n135(x)
+ else
+ fun_l16_n349(x)
+ end
+end
+
+def fun_l15_n54(x)
+ if (x < 1)
+ fun_l16_n410(x)
+ else
+ fun_l16_n849(x)
+ end
+end
+
+def fun_l15_n55(x)
+ if (x < 1)
+ fun_l16_n989(x)
+ else
+ fun_l16_n700(x)
+ end
+end
+
+def fun_l15_n56(x)
+ if (x < 1)
+ fun_l16_n79(x)
+ else
+ fun_l16_n549(x)
+ end
+end
+
+def fun_l15_n57(x)
+ if (x < 1)
+ fun_l16_n396(x)
+ else
+ fun_l16_n182(x)
+ end
+end
+
+def fun_l15_n58(x)
+ if (x < 1)
+ fun_l16_n765(x)
+ else
+ fun_l16_n225(x)
+ end
+end
+
+def fun_l15_n59(x)
+ if (x < 1)
+ fun_l16_n124(x)
+ else
+ fun_l16_n694(x)
+ end
+end
+
+def fun_l15_n60(x)
+ if (x < 1)
+ fun_l16_n813(x)
+ else
+ fun_l16_n319(x)
+ end
+end
+
+def fun_l15_n61(x)
+ if (x < 1)
+ fun_l16_n568(x)
+ else
+ fun_l16_n581(x)
+ end
+end
+
+def fun_l15_n62(x)
+ if (x < 1)
+ fun_l16_n667(x)
+ else
+ fun_l16_n12(x)
+ end
+end
+
+def fun_l15_n63(x)
+ if (x < 1)
+ fun_l16_n176(x)
+ else
+ fun_l16_n136(x)
+ end
+end
+
+def fun_l15_n64(x)
+ if (x < 1)
+ fun_l16_n620(x)
+ else
+ fun_l16_n937(x)
+ end
+end
+
+def fun_l15_n65(x)
+ if (x < 1)
+ fun_l16_n130(x)
+ else
+ fun_l16_n503(x)
+ end
+end
+
+def fun_l15_n66(x)
+ if (x < 1)
+ fun_l16_n774(x)
+ else
+ fun_l16_n109(x)
+ end
+end
+
+def fun_l15_n67(x)
+ if (x < 1)
+ fun_l16_n817(x)
+ else
+ fun_l16_n497(x)
+ end
+end
+
+def fun_l15_n68(x)
+ if (x < 1)
+ fun_l16_n123(x)
+ else
+ fun_l16_n482(x)
+ end
+end
+
+def fun_l15_n69(x)
+ if (x < 1)
+ fun_l16_n173(x)
+ else
+ fun_l16_n22(x)
+ end
+end
+
+def fun_l15_n70(x)
+ if (x < 1)
+ fun_l16_n648(x)
+ else
+ fun_l16_n671(x)
+ end
+end
+
+def fun_l15_n71(x)
+ if (x < 1)
+ fun_l16_n831(x)
+ else
+ fun_l16_n126(x)
+ end
+end
+
+def fun_l15_n72(x)
+ if (x < 1)
+ fun_l16_n731(x)
+ else
+ fun_l16_n273(x)
+ end
+end
+
+def fun_l15_n73(x)
+ if (x < 1)
+ fun_l16_n695(x)
+ else
+ fun_l16_n772(x)
+ end
+end
+
+def fun_l15_n74(x)
+ if (x < 1)
+ fun_l16_n831(x)
+ else
+ fun_l16_n49(x)
+ end
+end
+
+def fun_l15_n75(x)
+ if (x < 1)
+ fun_l16_n501(x)
+ else
+ fun_l16_n4(x)
+ end
+end
+
+def fun_l15_n76(x)
+ if (x < 1)
+ fun_l16_n712(x)
+ else
+ fun_l16_n762(x)
+ end
+end
+
+def fun_l15_n77(x)
+ if (x < 1)
+ fun_l16_n585(x)
+ else
+ fun_l16_n398(x)
+ end
+end
+
+def fun_l15_n78(x)
+ if (x < 1)
+ fun_l16_n811(x)
+ else
+ fun_l16_n866(x)
+ end
+end
+
+def fun_l15_n79(x)
+ if (x < 1)
+ fun_l16_n69(x)
+ else
+ fun_l16_n502(x)
+ end
+end
+
+def fun_l15_n80(x)
+ if (x < 1)
+ fun_l16_n885(x)
+ else
+ fun_l16_n116(x)
+ end
+end
+
+def fun_l15_n81(x)
+ if (x < 1)
+ fun_l16_n30(x)
+ else
+ fun_l16_n1(x)
+ end
+end
+
+def fun_l15_n82(x)
+ if (x < 1)
+ fun_l16_n105(x)
+ else
+ fun_l16_n526(x)
+ end
+end
+
+def fun_l15_n83(x)
+ if (x < 1)
+ fun_l16_n760(x)
+ else
+ fun_l16_n206(x)
+ end
+end
+
+def fun_l15_n84(x)
+ if (x < 1)
+ fun_l16_n722(x)
+ else
+ fun_l16_n211(x)
+ end
+end
+
+def fun_l15_n85(x)
+ if (x < 1)
+ fun_l16_n145(x)
+ else
+ fun_l16_n222(x)
+ end
+end
+
+def fun_l15_n86(x)
+ if (x < 1)
+ fun_l16_n691(x)
+ else
+ fun_l16_n885(x)
+ end
+end
+
+def fun_l15_n87(x)
+ if (x < 1)
+ fun_l16_n2(x)
+ else
+ fun_l16_n180(x)
+ end
+end
+
+def fun_l15_n88(x)
+ if (x < 1)
+ fun_l16_n272(x)
+ else
+ fun_l16_n433(x)
+ end
+end
+
+def fun_l15_n89(x)
+ if (x < 1)
+ fun_l16_n31(x)
+ else
+ fun_l16_n854(x)
+ end
+end
+
+def fun_l15_n90(x)
+ if (x < 1)
+ fun_l16_n264(x)
+ else
+ fun_l16_n231(x)
+ end
+end
+
+def fun_l15_n91(x)
+ if (x < 1)
+ fun_l16_n637(x)
+ else
+ fun_l16_n96(x)
+ end
+end
+
+def fun_l15_n92(x)
+ if (x < 1)
+ fun_l16_n317(x)
+ else
+ fun_l16_n56(x)
+ end
+end
+
+def fun_l15_n93(x)
+ if (x < 1)
+ fun_l16_n523(x)
+ else
+ fun_l16_n948(x)
+ end
+end
+
+def fun_l15_n94(x)
+ if (x < 1)
+ fun_l16_n694(x)
+ else
+ fun_l16_n948(x)
+ end
+end
+
+def fun_l15_n95(x)
+ if (x < 1)
+ fun_l16_n708(x)
+ else
+ fun_l16_n581(x)
+ end
+end
+
+def fun_l15_n96(x)
+ if (x < 1)
+ fun_l16_n725(x)
+ else
+ fun_l16_n931(x)
+ end
+end
+
+def fun_l15_n97(x)
+ if (x < 1)
+ fun_l16_n432(x)
+ else
+ fun_l16_n367(x)
+ end
+end
+
+def fun_l15_n98(x)
+ if (x < 1)
+ fun_l16_n671(x)
+ else
+ fun_l16_n165(x)
+ end
+end
+
+def fun_l15_n99(x)
+ if (x < 1)
+ fun_l16_n617(x)
+ else
+ fun_l16_n498(x)
+ end
+end
+
+def fun_l15_n100(x)
+ if (x < 1)
+ fun_l16_n32(x)
+ else
+ fun_l16_n103(x)
+ end
+end
+
+def fun_l15_n101(x)
+ if (x < 1)
+ fun_l16_n619(x)
+ else
+ fun_l16_n556(x)
+ end
+end
+
+def fun_l15_n102(x)
+ if (x < 1)
+ fun_l16_n0(x)
+ else
+ fun_l16_n925(x)
+ end
+end
+
+def fun_l15_n103(x)
+ if (x < 1)
+ fun_l16_n484(x)
+ else
+ fun_l16_n889(x)
+ end
+end
+
+def fun_l15_n104(x)
+ if (x < 1)
+ fun_l16_n557(x)
+ else
+ fun_l16_n465(x)
+ end
+end
+
+def fun_l15_n105(x)
+ if (x < 1)
+ fun_l16_n486(x)
+ else
+ fun_l16_n720(x)
+ end
+end
+
+def fun_l15_n106(x)
+ if (x < 1)
+ fun_l16_n281(x)
+ else
+ fun_l16_n61(x)
+ end
+end
+
+def fun_l15_n107(x)
+ if (x < 1)
+ fun_l16_n861(x)
+ else
+ fun_l16_n944(x)
+ end
+end
+
+def fun_l15_n108(x)
+ if (x < 1)
+ fun_l16_n739(x)
+ else
+ fun_l16_n192(x)
+ end
+end
+
+def fun_l15_n109(x)
+ if (x < 1)
+ fun_l16_n327(x)
+ else
+ fun_l16_n423(x)
+ end
+end
+
+def fun_l15_n110(x)
+ if (x < 1)
+ fun_l16_n541(x)
+ else
+ fun_l16_n927(x)
+ end
+end
+
+def fun_l15_n111(x)
+ if (x < 1)
+ fun_l16_n86(x)
+ else
+ fun_l16_n170(x)
+ end
+end
+
+def fun_l15_n112(x)
+ if (x < 1)
+ fun_l16_n508(x)
+ else
+ fun_l16_n554(x)
+ end
+end
+
+def fun_l15_n113(x)
+ if (x < 1)
+ fun_l16_n326(x)
+ else
+ fun_l16_n289(x)
+ end
+end
+
+def fun_l15_n114(x)
+ if (x < 1)
+ fun_l16_n309(x)
+ else
+ fun_l16_n125(x)
+ end
+end
+
+def fun_l15_n115(x)
+ if (x < 1)
+ fun_l16_n936(x)
+ else
+ fun_l16_n64(x)
+ end
+end
+
+def fun_l15_n116(x)
+ if (x < 1)
+ fun_l16_n942(x)
+ else
+ fun_l16_n737(x)
+ end
+end
+
+def fun_l15_n117(x)
+ if (x < 1)
+ fun_l16_n717(x)
+ else
+ fun_l16_n701(x)
+ end
+end
+
+def fun_l15_n118(x)
+ if (x < 1)
+ fun_l16_n789(x)
+ else
+ fun_l16_n901(x)
+ end
+end
+
+def fun_l15_n119(x)
+ if (x < 1)
+ fun_l16_n49(x)
+ else
+ fun_l16_n610(x)
+ end
+end
+
+def fun_l15_n120(x)
+ if (x < 1)
+ fun_l16_n578(x)
+ else
+ fun_l16_n372(x)
+ end
+end
+
+def fun_l15_n121(x)
+ if (x < 1)
+ fun_l16_n262(x)
+ else
+ fun_l16_n441(x)
+ end
+end
+
+def fun_l15_n122(x)
+ if (x < 1)
+ fun_l16_n29(x)
+ else
+ fun_l16_n837(x)
+ end
+end
+
+def fun_l15_n123(x)
+ if (x < 1)
+ fun_l16_n796(x)
+ else
+ fun_l16_n771(x)
+ end
+end
+
+def fun_l15_n124(x)
+ if (x < 1)
+ fun_l16_n354(x)
+ else
+ fun_l16_n818(x)
+ end
+end
+
+def fun_l15_n125(x)
+ if (x < 1)
+ fun_l16_n971(x)
+ else
+ fun_l16_n305(x)
+ end
+end
+
+def fun_l15_n126(x)
+ if (x < 1)
+ fun_l16_n435(x)
+ else
+ fun_l16_n307(x)
+ end
+end
+
+def fun_l15_n127(x)
+ if (x < 1)
+ fun_l16_n809(x)
+ else
+ fun_l16_n884(x)
+ end
+end
+
+def fun_l15_n128(x)
+ if (x < 1)
+ fun_l16_n794(x)
+ else
+ fun_l16_n480(x)
+ end
+end
+
+def fun_l15_n129(x)
+ if (x < 1)
+ fun_l16_n797(x)
+ else
+ fun_l16_n193(x)
+ end
+end
+
+def fun_l15_n130(x)
+ if (x < 1)
+ fun_l16_n415(x)
+ else
+ fun_l16_n255(x)
+ end
+end
+
+def fun_l15_n131(x)
+ if (x < 1)
+ fun_l16_n736(x)
+ else
+ fun_l16_n904(x)
+ end
+end
+
+def fun_l15_n132(x)
+ if (x < 1)
+ fun_l16_n753(x)
+ else
+ fun_l16_n408(x)
+ end
+end
+
+def fun_l15_n133(x)
+ if (x < 1)
+ fun_l16_n61(x)
+ else
+ fun_l16_n231(x)
+ end
+end
+
+def fun_l15_n134(x)
+ if (x < 1)
+ fun_l16_n541(x)
+ else
+ fun_l16_n93(x)
+ end
+end
+
+def fun_l15_n135(x)
+ if (x < 1)
+ fun_l16_n617(x)
+ else
+ fun_l16_n765(x)
+ end
+end
+
+def fun_l15_n136(x)
+ if (x < 1)
+ fun_l16_n749(x)
+ else
+ fun_l16_n344(x)
+ end
+end
+
+def fun_l15_n137(x)
+ if (x < 1)
+ fun_l16_n431(x)
+ else
+ fun_l16_n354(x)
+ end
+end
+
+def fun_l15_n138(x)
+ if (x < 1)
+ fun_l16_n116(x)
+ else
+ fun_l16_n963(x)
+ end
+end
+
+def fun_l15_n139(x)
+ if (x < 1)
+ fun_l16_n500(x)
+ else
+ fun_l16_n380(x)
+ end
+end
+
+def fun_l15_n140(x)
+ if (x < 1)
+ fun_l16_n120(x)
+ else
+ fun_l16_n953(x)
+ end
+end
+
+def fun_l15_n141(x)
+ if (x < 1)
+ fun_l16_n287(x)
+ else
+ fun_l16_n154(x)
+ end
+end
+
+def fun_l15_n142(x)
+ if (x < 1)
+ fun_l16_n347(x)
+ else
+ fun_l16_n841(x)
+ end
+end
+
+def fun_l15_n143(x)
+ if (x < 1)
+ fun_l16_n562(x)
+ else
+ fun_l16_n674(x)
+ end
+end
+
+def fun_l15_n144(x)
+ if (x < 1)
+ fun_l16_n146(x)
+ else
+ fun_l16_n788(x)
+ end
+end
+
+def fun_l15_n145(x)
+ if (x < 1)
+ fun_l16_n463(x)
+ else
+ fun_l16_n590(x)
+ end
+end
+
+def fun_l15_n146(x)
+ if (x < 1)
+ fun_l16_n452(x)
+ else
+ fun_l16_n732(x)
+ end
+end
+
+def fun_l15_n147(x)
+ if (x < 1)
+ fun_l16_n840(x)
+ else
+ fun_l16_n254(x)
+ end
+end
+
+def fun_l15_n148(x)
+ if (x < 1)
+ fun_l16_n224(x)
+ else
+ fun_l16_n826(x)
+ end
+end
+
+def fun_l15_n149(x)
+ if (x < 1)
+ fun_l16_n40(x)
+ else
+ fun_l16_n267(x)
+ end
+end
+
+def fun_l15_n150(x)
+ if (x < 1)
+ fun_l16_n160(x)
+ else
+ fun_l16_n745(x)
+ end
+end
+
+def fun_l15_n151(x)
+ if (x < 1)
+ fun_l16_n926(x)
+ else
+ fun_l16_n567(x)
+ end
+end
+
+def fun_l15_n152(x)
+ if (x < 1)
+ fun_l16_n392(x)
+ else
+ fun_l16_n487(x)
+ end
+end
+
+def fun_l15_n153(x)
+ if (x < 1)
+ fun_l16_n603(x)
+ else
+ fun_l16_n549(x)
+ end
+end
+
+def fun_l15_n154(x)
+ if (x < 1)
+ fun_l16_n993(x)
+ else
+ fun_l16_n451(x)
+ end
+end
+
+def fun_l15_n155(x)
+ if (x < 1)
+ fun_l16_n358(x)
+ else
+ fun_l16_n52(x)
+ end
+end
+
+def fun_l15_n156(x)
+ if (x < 1)
+ fun_l16_n694(x)
+ else
+ fun_l16_n419(x)
+ end
+end
+
+def fun_l15_n157(x)
+ if (x < 1)
+ fun_l16_n138(x)
+ else
+ fun_l16_n127(x)
+ end
+end
+
+def fun_l15_n158(x)
+ if (x < 1)
+ fun_l16_n619(x)
+ else
+ fun_l16_n328(x)
+ end
+end
+
+def fun_l15_n159(x)
+ if (x < 1)
+ fun_l16_n281(x)
+ else
+ fun_l16_n503(x)
+ end
+end
+
+def fun_l15_n160(x)
+ if (x < 1)
+ fun_l16_n631(x)
+ else
+ fun_l16_n69(x)
+ end
+end
+
+def fun_l15_n161(x)
+ if (x < 1)
+ fun_l16_n41(x)
+ else
+ fun_l16_n734(x)
+ end
+end
+
+def fun_l15_n162(x)
+ if (x < 1)
+ fun_l16_n809(x)
+ else
+ fun_l16_n303(x)
+ end
+end
+
+def fun_l15_n163(x)
+ if (x < 1)
+ fun_l16_n851(x)
+ else
+ fun_l16_n420(x)
+ end
+end
+
+def fun_l15_n164(x)
+ if (x < 1)
+ fun_l16_n534(x)
+ else
+ fun_l16_n686(x)
+ end
+end
+
+def fun_l15_n165(x)
+ if (x < 1)
+ fun_l16_n639(x)
+ else
+ fun_l16_n155(x)
+ end
+end
+
+def fun_l15_n166(x)
+ if (x < 1)
+ fun_l16_n196(x)
+ else
+ fun_l16_n478(x)
+ end
+end
+
+def fun_l15_n167(x)
+ if (x < 1)
+ fun_l16_n926(x)
+ else
+ fun_l16_n506(x)
+ end
+end
+
+def fun_l15_n168(x)
+ if (x < 1)
+ fun_l16_n74(x)
+ else
+ fun_l16_n442(x)
+ end
+end
+
+def fun_l15_n169(x)
+ if (x < 1)
+ fun_l16_n122(x)
+ else
+ fun_l16_n150(x)
+ end
+end
+
+def fun_l15_n170(x)
+ if (x < 1)
+ fun_l16_n805(x)
+ else
+ fun_l16_n46(x)
+ end
+end
+
+def fun_l15_n171(x)
+ if (x < 1)
+ fun_l16_n741(x)
+ else
+ fun_l16_n88(x)
+ end
+end
+
+def fun_l15_n172(x)
+ if (x < 1)
+ fun_l16_n749(x)
+ else
+ fun_l16_n896(x)
+ end
+end
+
+def fun_l15_n173(x)
+ if (x < 1)
+ fun_l16_n310(x)
+ else
+ fun_l16_n517(x)
+ end
+end
+
+def fun_l15_n174(x)
+ if (x < 1)
+ fun_l16_n237(x)
+ else
+ fun_l16_n948(x)
+ end
+end
+
+def fun_l15_n175(x)
+ if (x < 1)
+ fun_l16_n402(x)
+ else
+ fun_l16_n332(x)
+ end
+end
+
+def fun_l15_n176(x)
+ if (x < 1)
+ fun_l16_n189(x)
+ else
+ fun_l16_n223(x)
+ end
+end
+
+def fun_l15_n177(x)
+ if (x < 1)
+ fun_l16_n1(x)
+ else
+ fun_l16_n577(x)
+ end
+end
+
+def fun_l15_n178(x)
+ if (x < 1)
+ fun_l16_n738(x)
+ else
+ fun_l16_n775(x)
+ end
+end
+
+def fun_l15_n179(x)
+ if (x < 1)
+ fun_l16_n80(x)
+ else
+ fun_l16_n652(x)
+ end
+end
+
+def fun_l15_n180(x)
+ if (x < 1)
+ fun_l16_n72(x)
+ else
+ fun_l16_n635(x)
+ end
+end
+
+def fun_l15_n181(x)
+ if (x < 1)
+ fun_l16_n721(x)
+ else
+ fun_l16_n661(x)
+ end
+end
+
+def fun_l15_n182(x)
+ if (x < 1)
+ fun_l16_n354(x)
+ else
+ fun_l16_n681(x)
+ end
+end
+
+def fun_l15_n183(x)
+ if (x < 1)
+ fun_l16_n689(x)
+ else
+ fun_l16_n775(x)
+ end
+end
+
+def fun_l15_n184(x)
+ if (x < 1)
+ fun_l16_n923(x)
+ else
+ fun_l16_n719(x)
+ end
+end
+
+def fun_l15_n185(x)
+ if (x < 1)
+ fun_l16_n33(x)
+ else
+ fun_l16_n98(x)
+ end
+end
+
+def fun_l15_n186(x)
+ if (x < 1)
+ fun_l16_n155(x)
+ else
+ fun_l16_n880(x)
+ end
+end
+
+def fun_l15_n187(x)
+ if (x < 1)
+ fun_l16_n625(x)
+ else
+ fun_l16_n314(x)
+ end
+end
+
+def fun_l15_n188(x)
+ if (x < 1)
+ fun_l16_n284(x)
+ else
+ fun_l16_n229(x)
+ end
+end
+
+def fun_l15_n189(x)
+ if (x < 1)
+ fun_l16_n471(x)
+ else
+ fun_l16_n740(x)
+ end
+end
+
+def fun_l15_n190(x)
+ if (x < 1)
+ fun_l16_n102(x)
+ else
+ fun_l16_n766(x)
+ end
+end
+
+def fun_l15_n191(x)
+ if (x < 1)
+ fun_l16_n812(x)
+ else
+ fun_l16_n94(x)
+ end
+end
+
+def fun_l15_n192(x)
+ if (x < 1)
+ fun_l16_n797(x)
+ else
+ fun_l16_n736(x)
+ end
+end
+
+def fun_l15_n193(x)
+ if (x < 1)
+ fun_l16_n976(x)
+ else
+ fun_l16_n4(x)
+ end
+end
+
+def fun_l15_n194(x)
+ if (x < 1)
+ fun_l16_n423(x)
+ else
+ fun_l16_n612(x)
+ end
+end
+
+def fun_l15_n195(x)
+ if (x < 1)
+ fun_l16_n510(x)
+ else
+ fun_l16_n237(x)
+ end
+end
+
+def fun_l15_n196(x)
+ if (x < 1)
+ fun_l16_n116(x)
+ else
+ fun_l16_n624(x)
+ end
+end
+
+def fun_l15_n197(x)
+ if (x < 1)
+ fun_l16_n515(x)
+ else
+ fun_l16_n979(x)
+ end
+end
+
+def fun_l15_n198(x)
+ if (x < 1)
+ fun_l16_n700(x)
+ else
+ fun_l16_n284(x)
+ end
+end
+
+def fun_l15_n199(x)
+ if (x < 1)
+ fun_l16_n226(x)
+ else
+ fun_l16_n32(x)
+ end
+end
+
+def fun_l15_n200(x)
+ if (x < 1)
+ fun_l16_n453(x)
+ else
+ fun_l16_n959(x)
+ end
+end
+
+def fun_l15_n201(x)
+ if (x < 1)
+ fun_l16_n132(x)
+ else
+ fun_l16_n323(x)
+ end
+end
+
+def fun_l15_n202(x)
+ if (x < 1)
+ fun_l16_n539(x)
+ else
+ fun_l16_n670(x)
+ end
+end
+
+def fun_l15_n203(x)
+ if (x < 1)
+ fun_l16_n786(x)
+ else
+ fun_l16_n633(x)
+ end
+end
+
+def fun_l15_n204(x)
+ if (x < 1)
+ fun_l16_n498(x)
+ else
+ fun_l16_n520(x)
+ end
+end
+
+def fun_l15_n205(x)
+ if (x < 1)
+ fun_l16_n423(x)
+ else
+ fun_l16_n573(x)
+ end
+end
+
+def fun_l15_n206(x)
+ if (x < 1)
+ fun_l16_n746(x)
+ else
+ fun_l16_n562(x)
+ end
+end
+
+def fun_l15_n207(x)
+ if (x < 1)
+ fun_l16_n500(x)
+ else
+ fun_l16_n951(x)
+ end
+end
+
+def fun_l15_n208(x)
+ if (x < 1)
+ fun_l16_n331(x)
+ else
+ fun_l16_n596(x)
+ end
+end
+
+def fun_l15_n209(x)
+ if (x < 1)
+ fun_l16_n1(x)
+ else
+ fun_l16_n69(x)
+ end
+end
+
+def fun_l15_n210(x)
+ if (x < 1)
+ fun_l16_n19(x)
+ else
+ fun_l16_n148(x)
+ end
+end
+
+def fun_l15_n211(x)
+ if (x < 1)
+ fun_l16_n770(x)
+ else
+ fun_l16_n216(x)
+ end
+end
+
+def fun_l15_n212(x)
+ if (x < 1)
+ fun_l16_n863(x)
+ else
+ fun_l16_n319(x)
+ end
+end
+
+def fun_l15_n213(x)
+ if (x < 1)
+ fun_l16_n675(x)
+ else
+ fun_l16_n797(x)
+ end
+end
+
+def fun_l15_n214(x)
+ if (x < 1)
+ fun_l16_n392(x)
+ else
+ fun_l16_n593(x)
+ end
+end
+
+def fun_l15_n215(x)
+ if (x < 1)
+ fun_l16_n120(x)
+ else
+ fun_l16_n232(x)
+ end
+end
+
+def fun_l15_n216(x)
+ if (x < 1)
+ fun_l16_n549(x)
+ else
+ fun_l16_n175(x)
+ end
+end
+
+def fun_l15_n217(x)
+ if (x < 1)
+ fun_l16_n784(x)
+ else
+ fun_l16_n8(x)
+ end
+end
+
+def fun_l15_n218(x)
+ if (x < 1)
+ fun_l16_n296(x)
+ else
+ fun_l16_n454(x)
+ end
+end
+
+def fun_l15_n219(x)
+ if (x < 1)
+ fun_l16_n585(x)
+ else
+ fun_l16_n628(x)
+ end
+end
+
+def fun_l15_n220(x)
+ if (x < 1)
+ fun_l16_n375(x)
+ else
+ fun_l16_n294(x)
+ end
+end
+
+def fun_l15_n221(x)
+ if (x < 1)
+ fun_l16_n69(x)
+ else
+ fun_l16_n771(x)
+ end
+end
+
+def fun_l15_n222(x)
+ if (x < 1)
+ fun_l16_n885(x)
+ else
+ fun_l16_n476(x)
+ end
+end
+
+def fun_l15_n223(x)
+ if (x < 1)
+ fun_l16_n929(x)
+ else
+ fun_l16_n850(x)
+ end
+end
+
+def fun_l15_n224(x)
+ if (x < 1)
+ fun_l16_n489(x)
+ else
+ fun_l16_n234(x)
+ end
+end
+
+def fun_l15_n225(x)
+ if (x < 1)
+ fun_l16_n478(x)
+ else
+ fun_l16_n744(x)
+ end
+end
+
+def fun_l15_n226(x)
+ if (x < 1)
+ fun_l16_n714(x)
+ else
+ fun_l16_n323(x)
+ end
+end
+
+def fun_l15_n227(x)
+ if (x < 1)
+ fun_l16_n146(x)
+ else
+ fun_l16_n937(x)
+ end
+end
+
+def fun_l15_n228(x)
+ if (x < 1)
+ fun_l16_n611(x)
+ else
+ fun_l16_n320(x)
+ end
+end
+
+def fun_l15_n229(x)
+ if (x < 1)
+ fun_l16_n184(x)
+ else
+ fun_l16_n129(x)
+ end
+end
+
+def fun_l15_n230(x)
+ if (x < 1)
+ fun_l16_n563(x)
+ else
+ fun_l16_n581(x)
+ end
+end
+
+def fun_l15_n231(x)
+ if (x < 1)
+ fun_l16_n585(x)
+ else
+ fun_l16_n63(x)
+ end
+end
+
+def fun_l15_n232(x)
+ if (x < 1)
+ fun_l16_n895(x)
+ else
+ fun_l16_n622(x)
+ end
+end
+
+def fun_l15_n233(x)
+ if (x < 1)
+ fun_l16_n998(x)
+ else
+ fun_l16_n95(x)
+ end
+end
+
+def fun_l15_n234(x)
+ if (x < 1)
+ fun_l16_n770(x)
+ else
+ fun_l16_n557(x)
+ end
+end
+
+def fun_l15_n235(x)
+ if (x < 1)
+ fun_l16_n418(x)
+ else
+ fun_l16_n382(x)
+ end
+end
+
+def fun_l15_n236(x)
+ if (x < 1)
+ fun_l16_n842(x)
+ else
+ fun_l16_n543(x)
+ end
+end
+
+def fun_l15_n237(x)
+ if (x < 1)
+ fun_l16_n677(x)
+ else
+ fun_l16_n108(x)
+ end
+end
+
+def fun_l15_n238(x)
+ if (x < 1)
+ fun_l16_n557(x)
+ else
+ fun_l16_n288(x)
+ end
+end
+
+def fun_l15_n239(x)
+ if (x < 1)
+ fun_l16_n467(x)
+ else
+ fun_l16_n661(x)
+ end
+end
+
+def fun_l15_n240(x)
+ if (x < 1)
+ fun_l16_n267(x)
+ else
+ fun_l16_n559(x)
+ end
+end
+
+def fun_l15_n241(x)
+ if (x < 1)
+ fun_l16_n655(x)
+ else
+ fun_l16_n990(x)
+ end
+end
+
+def fun_l15_n242(x)
+ if (x < 1)
+ fun_l16_n673(x)
+ else
+ fun_l16_n390(x)
+ end
+end
+
+def fun_l15_n243(x)
+ if (x < 1)
+ fun_l16_n691(x)
+ else
+ fun_l16_n901(x)
+ end
+end
+
+def fun_l15_n244(x)
+ if (x < 1)
+ fun_l16_n490(x)
+ else
+ fun_l16_n627(x)
+ end
+end
+
+def fun_l15_n245(x)
+ if (x < 1)
+ fun_l16_n293(x)
+ else
+ fun_l16_n569(x)
+ end
+end
+
+def fun_l15_n246(x)
+ if (x < 1)
+ fun_l16_n818(x)
+ else
+ fun_l16_n74(x)
+ end
+end
+
+def fun_l15_n247(x)
+ if (x < 1)
+ fun_l16_n141(x)
+ else
+ fun_l16_n743(x)
+ end
+end
+
+def fun_l15_n248(x)
+ if (x < 1)
+ fun_l16_n819(x)
+ else
+ fun_l16_n141(x)
+ end
+end
+
+def fun_l15_n249(x)
+ if (x < 1)
+ fun_l16_n423(x)
+ else
+ fun_l16_n53(x)
+ end
+end
+
+def fun_l15_n250(x)
+ if (x < 1)
+ fun_l16_n694(x)
+ else
+ fun_l16_n463(x)
+ end
+end
+
+def fun_l15_n251(x)
+ if (x < 1)
+ fun_l16_n828(x)
+ else
+ fun_l16_n739(x)
+ end
+end
+
+def fun_l15_n252(x)
+ if (x < 1)
+ fun_l16_n18(x)
+ else
+ fun_l16_n694(x)
+ end
+end
+
+def fun_l15_n253(x)
+ if (x < 1)
+ fun_l16_n668(x)
+ else
+ fun_l16_n501(x)
+ end
+end
+
+def fun_l15_n254(x)
+ if (x < 1)
+ fun_l16_n649(x)
+ else
+ fun_l16_n397(x)
+ end
+end
+
+def fun_l15_n255(x)
+ if (x < 1)
+ fun_l16_n376(x)
+ else
+ fun_l16_n375(x)
+ end
+end
+
+def fun_l15_n256(x)
+ if (x < 1)
+ fun_l16_n451(x)
+ else
+ fun_l16_n537(x)
+ end
+end
+
+def fun_l15_n257(x)
+ if (x < 1)
+ fun_l16_n360(x)
+ else
+ fun_l16_n330(x)
+ end
+end
+
+def fun_l15_n258(x)
+ if (x < 1)
+ fun_l16_n581(x)
+ else
+ fun_l16_n193(x)
+ end
+end
+
+def fun_l15_n259(x)
+ if (x < 1)
+ fun_l16_n738(x)
+ else
+ fun_l16_n662(x)
+ end
+end
+
+def fun_l15_n260(x)
+ if (x < 1)
+ fun_l16_n450(x)
+ else
+ fun_l16_n942(x)
+ end
+end
+
+def fun_l15_n261(x)
+ if (x < 1)
+ fun_l16_n23(x)
+ else
+ fun_l16_n534(x)
+ end
+end
+
+def fun_l15_n262(x)
+ if (x < 1)
+ fun_l16_n364(x)
+ else
+ fun_l16_n716(x)
+ end
+end
+
+def fun_l15_n263(x)
+ if (x < 1)
+ fun_l16_n528(x)
+ else
+ fun_l16_n185(x)
+ end
+end
+
+def fun_l15_n264(x)
+ if (x < 1)
+ fun_l16_n491(x)
+ else
+ fun_l16_n686(x)
+ end
+end
+
+def fun_l15_n265(x)
+ if (x < 1)
+ fun_l16_n242(x)
+ else
+ fun_l16_n986(x)
+ end
+end
+
+def fun_l15_n266(x)
+ if (x < 1)
+ fun_l16_n726(x)
+ else
+ fun_l16_n88(x)
+ end
+end
+
+def fun_l15_n267(x)
+ if (x < 1)
+ fun_l16_n611(x)
+ else
+ fun_l16_n11(x)
+ end
+end
+
+def fun_l15_n268(x)
+ if (x < 1)
+ fun_l16_n993(x)
+ else
+ fun_l16_n269(x)
+ end
+end
+
+def fun_l15_n269(x)
+ if (x < 1)
+ fun_l16_n296(x)
+ else
+ fun_l16_n8(x)
+ end
+end
+
+def fun_l15_n270(x)
+ if (x < 1)
+ fun_l16_n700(x)
+ else
+ fun_l16_n692(x)
+ end
+end
+
+def fun_l15_n271(x)
+ if (x < 1)
+ fun_l16_n902(x)
+ else
+ fun_l16_n548(x)
+ end
+end
+
+def fun_l15_n272(x)
+ if (x < 1)
+ fun_l16_n39(x)
+ else
+ fun_l16_n635(x)
+ end
+end
+
+def fun_l15_n273(x)
+ if (x < 1)
+ fun_l16_n520(x)
+ else
+ fun_l16_n49(x)
+ end
+end
+
+def fun_l15_n274(x)
+ if (x < 1)
+ fun_l16_n24(x)
+ else
+ fun_l16_n466(x)
+ end
+end
+
+def fun_l15_n275(x)
+ if (x < 1)
+ fun_l16_n144(x)
+ else
+ fun_l16_n555(x)
+ end
+end
+
+def fun_l15_n276(x)
+ if (x < 1)
+ fun_l16_n719(x)
+ else
+ fun_l16_n693(x)
+ end
+end
+
+def fun_l15_n277(x)
+ if (x < 1)
+ fun_l16_n687(x)
+ else
+ fun_l16_n987(x)
+ end
+end
+
+def fun_l15_n278(x)
+ if (x < 1)
+ fun_l16_n426(x)
+ else
+ fun_l16_n179(x)
+ end
+end
+
+def fun_l15_n279(x)
+ if (x < 1)
+ fun_l16_n659(x)
+ else
+ fun_l16_n36(x)
+ end
+end
+
+def fun_l15_n280(x)
+ if (x < 1)
+ fun_l16_n460(x)
+ else
+ fun_l16_n450(x)
+ end
+end
+
+def fun_l15_n281(x)
+ if (x < 1)
+ fun_l16_n42(x)
+ else
+ fun_l16_n230(x)
+ end
+end
+
+def fun_l15_n282(x)
+ if (x < 1)
+ fun_l16_n168(x)
+ else
+ fun_l16_n422(x)
+ end
+end
+
+def fun_l15_n283(x)
+ if (x < 1)
+ fun_l16_n305(x)
+ else
+ fun_l16_n554(x)
+ end
+end
+
+def fun_l15_n284(x)
+ if (x < 1)
+ fun_l16_n680(x)
+ else
+ fun_l16_n147(x)
+ end
+end
+
+def fun_l15_n285(x)
+ if (x < 1)
+ fun_l16_n632(x)
+ else
+ fun_l16_n767(x)
+ end
+end
+
+def fun_l15_n286(x)
+ if (x < 1)
+ fun_l16_n735(x)
+ else
+ fun_l16_n465(x)
+ end
+end
+
+def fun_l15_n287(x)
+ if (x < 1)
+ fun_l16_n17(x)
+ else
+ fun_l16_n638(x)
+ end
+end
+
+def fun_l15_n288(x)
+ if (x < 1)
+ fun_l16_n517(x)
+ else
+ fun_l16_n47(x)
+ end
+end
+
+def fun_l15_n289(x)
+ if (x < 1)
+ fun_l16_n101(x)
+ else
+ fun_l16_n882(x)
+ end
+end
+
+def fun_l15_n290(x)
+ if (x < 1)
+ fun_l16_n697(x)
+ else
+ fun_l16_n963(x)
+ end
+end
+
+def fun_l15_n291(x)
+ if (x < 1)
+ fun_l16_n468(x)
+ else
+ fun_l16_n340(x)
+ end
+end
+
+def fun_l15_n292(x)
+ if (x < 1)
+ fun_l16_n817(x)
+ else
+ fun_l16_n454(x)
+ end
+end
+
+def fun_l15_n293(x)
+ if (x < 1)
+ fun_l16_n885(x)
+ else
+ fun_l16_n733(x)
+ end
+end
+
+def fun_l15_n294(x)
+ if (x < 1)
+ fun_l16_n844(x)
+ else
+ fun_l16_n564(x)
+ end
+end
+
+def fun_l15_n295(x)
+ if (x < 1)
+ fun_l16_n667(x)
+ else
+ fun_l16_n286(x)
+ end
+end
+
+def fun_l15_n296(x)
+ if (x < 1)
+ fun_l16_n694(x)
+ else
+ fun_l16_n660(x)
+ end
+end
+
+def fun_l15_n297(x)
+ if (x < 1)
+ fun_l16_n839(x)
+ else
+ fun_l16_n274(x)
+ end
+end
+
+def fun_l15_n298(x)
+ if (x < 1)
+ fun_l16_n385(x)
+ else
+ fun_l16_n821(x)
+ end
+end
+
+def fun_l15_n299(x)
+ if (x < 1)
+ fun_l16_n137(x)
+ else
+ fun_l16_n548(x)
+ end
+end
+
+def fun_l15_n300(x)
+ if (x < 1)
+ fun_l16_n662(x)
+ else
+ fun_l16_n2(x)
+ end
+end
+
+def fun_l15_n301(x)
+ if (x < 1)
+ fun_l16_n998(x)
+ else
+ fun_l16_n186(x)
+ end
+end
+
+def fun_l15_n302(x)
+ if (x < 1)
+ fun_l16_n667(x)
+ else
+ fun_l16_n454(x)
+ end
+end
+
+def fun_l15_n303(x)
+ if (x < 1)
+ fun_l16_n765(x)
+ else
+ fun_l16_n519(x)
+ end
+end
+
+def fun_l15_n304(x)
+ if (x < 1)
+ fun_l16_n936(x)
+ else
+ fun_l16_n213(x)
+ end
+end
+
+def fun_l15_n305(x)
+ if (x < 1)
+ fun_l16_n695(x)
+ else
+ fun_l16_n545(x)
+ end
+end
+
+def fun_l15_n306(x)
+ if (x < 1)
+ fun_l16_n221(x)
+ else
+ fun_l16_n545(x)
+ end
+end
+
+def fun_l15_n307(x)
+ if (x < 1)
+ fun_l16_n555(x)
+ else
+ fun_l16_n570(x)
+ end
+end
+
+def fun_l15_n308(x)
+ if (x < 1)
+ fun_l16_n57(x)
+ else
+ fun_l16_n91(x)
+ end
+end
+
+def fun_l15_n309(x)
+ if (x < 1)
+ fun_l16_n37(x)
+ else
+ fun_l16_n516(x)
+ end
+end
+
+def fun_l15_n310(x)
+ if (x < 1)
+ fun_l16_n661(x)
+ else
+ fun_l16_n98(x)
+ end
+end
+
+def fun_l15_n311(x)
+ if (x < 1)
+ fun_l16_n119(x)
+ else
+ fun_l16_n613(x)
+ end
+end
+
+def fun_l15_n312(x)
+ if (x < 1)
+ fun_l16_n982(x)
+ else
+ fun_l16_n20(x)
+ end
+end
+
+def fun_l15_n313(x)
+ if (x < 1)
+ fun_l16_n241(x)
+ else
+ fun_l16_n555(x)
+ end
+end
+
+def fun_l15_n314(x)
+ if (x < 1)
+ fun_l16_n638(x)
+ else
+ fun_l16_n854(x)
+ end
+end
+
+def fun_l15_n315(x)
+ if (x < 1)
+ fun_l16_n580(x)
+ else
+ fun_l16_n39(x)
+ end
+end
+
+def fun_l15_n316(x)
+ if (x < 1)
+ fun_l16_n705(x)
+ else
+ fun_l16_n240(x)
+ end
+end
+
+def fun_l15_n317(x)
+ if (x < 1)
+ fun_l16_n395(x)
+ else
+ fun_l16_n114(x)
+ end
+end
+
+def fun_l15_n318(x)
+ if (x < 1)
+ fun_l16_n554(x)
+ else
+ fun_l16_n239(x)
+ end
+end
+
+def fun_l15_n319(x)
+ if (x < 1)
+ fun_l16_n108(x)
+ else
+ fun_l16_n537(x)
+ end
+end
+
+def fun_l15_n320(x)
+ if (x < 1)
+ fun_l16_n554(x)
+ else
+ fun_l16_n902(x)
+ end
+end
+
+def fun_l15_n321(x)
+ if (x < 1)
+ fun_l16_n665(x)
+ else
+ fun_l16_n369(x)
+ end
+end
+
+def fun_l15_n322(x)
+ if (x < 1)
+ fun_l16_n4(x)
+ else
+ fun_l16_n572(x)
+ end
+end
+
+def fun_l15_n323(x)
+ if (x < 1)
+ fun_l16_n579(x)
+ else
+ fun_l16_n182(x)
+ end
+end
+
+def fun_l15_n324(x)
+ if (x < 1)
+ fun_l16_n593(x)
+ else
+ fun_l16_n203(x)
+ end
+end
+
+def fun_l15_n325(x)
+ if (x < 1)
+ fun_l16_n678(x)
+ else
+ fun_l16_n0(x)
+ end
+end
+
+def fun_l15_n326(x)
+ if (x < 1)
+ fun_l16_n809(x)
+ else
+ fun_l16_n833(x)
+ end
+end
+
+def fun_l15_n327(x)
+ if (x < 1)
+ fun_l16_n618(x)
+ else
+ fun_l16_n381(x)
+ end
+end
+
+def fun_l15_n328(x)
+ if (x < 1)
+ fun_l16_n133(x)
+ else
+ fun_l16_n744(x)
+ end
+end
+
+def fun_l15_n329(x)
+ if (x < 1)
+ fun_l16_n488(x)
+ else
+ fun_l16_n88(x)
+ end
+end
+
+def fun_l15_n330(x)
+ if (x < 1)
+ fun_l16_n205(x)
+ else
+ fun_l16_n402(x)
+ end
+end
+
+def fun_l15_n331(x)
+ if (x < 1)
+ fun_l16_n515(x)
+ else
+ fun_l16_n145(x)
+ end
+end
+
+def fun_l15_n332(x)
+ if (x < 1)
+ fun_l16_n581(x)
+ else
+ fun_l16_n607(x)
+ end
+end
+
+def fun_l15_n333(x)
+ if (x < 1)
+ fun_l16_n356(x)
+ else
+ fun_l16_n155(x)
+ end
+end
+
+def fun_l15_n334(x)
+ if (x < 1)
+ fun_l16_n936(x)
+ else
+ fun_l16_n272(x)
+ end
+end
+
+def fun_l15_n335(x)
+ if (x < 1)
+ fun_l16_n714(x)
+ else
+ fun_l16_n245(x)
+ end
+end
+
+def fun_l15_n336(x)
+ if (x < 1)
+ fun_l16_n581(x)
+ else
+ fun_l16_n877(x)
+ end
+end
+
+def fun_l15_n337(x)
+ if (x < 1)
+ fun_l16_n558(x)
+ else
+ fun_l16_n944(x)
+ end
+end
+
+def fun_l15_n338(x)
+ if (x < 1)
+ fun_l16_n49(x)
+ else
+ fun_l16_n501(x)
+ end
+end
+
+def fun_l15_n339(x)
+ if (x < 1)
+ fun_l16_n68(x)
+ else
+ fun_l16_n448(x)
+ end
+end
+
+def fun_l15_n340(x)
+ if (x < 1)
+ fun_l16_n249(x)
+ else
+ fun_l16_n210(x)
+ end
+end
+
+def fun_l15_n341(x)
+ if (x < 1)
+ fun_l16_n720(x)
+ else
+ fun_l16_n977(x)
+ end
+end
+
+def fun_l15_n342(x)
+ if (x < 1)
+ fun_l16_n771(x)
+ else
+ fun_l16_n519(x)
+ end
+end
+
+def fun_l15_n343(x)
+ if (x < 1)
+ fun_l16_n995(x)
+ else
+ fun_l16_n759(x)
+ end
+end
+
+def fun_l15_n344(x)
+ if (x < 1)
+ fun_l16_n972(x)
+ else
+ fun_l16_n558(x)
+ end
+end
+
+def fun_l15_n345(x)
+ if (x < 1)
+ fun_l16_n184(x)
+ else
+ fun_l16_n774(x)
+ end
+end
+
+def fun_l15_n346(x)
+ if (x < 1)
+ fun_l16_n881(x)
+ else
+ fun_l16_n858(x)
+ end
+end
+
+def fun_l15_n347(x)
+ if (x < 1)
+ fun_l16_n921(x)
+ else
+ fun_l16_n640(x)
+ end
+end
+
+def fun_l15_n348(x)
+ if (x < 1)
+ fun_l16_n840(x)
+ else
+ fun_l16_n366(x)
+ end
+end
+
+def fun_l15_n349(x)
+ if (x < 1)
+ fun_l16_n835(x)
+ else
+ fun_l16_n701(x)
+ end
+end
+
+def fun_l15_n350(x)
+ if (x < 1)
+ fun_l16_n304(x)
+ else
+ fun_l16_n144(x)
+ end
+end
+
+def fun_l15_n351(x)
+ if (x < 1)
+ fun_l16_n867(x)
+ else
+ fun_l16_n247(x)
+ end
+end
+
+def fun_l15_n352(x)
+ if (x < 1)
+ fun_l16_n595(x)
+ else
+ fun_l16_n676(x)
+ end
+end
+
+def fun_l15_n353(x)
+ if (x < 1)
+ fun_l16_n125(x)
+ else
+ fun_l16_n99(x)
+ end
+end
+
+def fun_l15_n354(x)
+ if (x < 1)
+ fun_l16_n659(x)
+ else
+ fun_l16_n559(x)
+ end
+end
+
+def fun_l15_n355(x)
+ if (x < 1)
+ fun_l16_n405(x)
+ else
+ fun_l16_n182(x)
+ end
+end
+
+def fun_l15_n356(x)
+ if (x < 1)
+ fun_l16_n347(x)
+ else
+ fun_l16_n482(x)
+ end
+end
+
+def fun_l15_n357(x)
+ if (x < 1)
+ fun_l16_n742(x)
+ else
+ fun_l16_n531(x)
+ end
+end
+
+def fun_l15_n358(x)
+ if (x < 1)
+ fun_l16_n954(x)
+ else
+ fun_l16_n908(x)
+ end
+end
+
+def fun_l15_n359(x)
+ if (x < 1)
+ fun_l16_n670(x)
+ else
+ fun_l16_n401(x)
+ end
+end
+
+def fun_l15_n360(x)
+ if (x < 1)
+ fun_l16_n423(x)
+ else
+ fun_l16_n802(x)
+ end
+end
+
+def fun_l15_n361(x)
+ if (x < 1)
+ fun_l16_n12(x)
+ else
+ fun_l16_n985(x)
+ end
+end
+
+def fun_l15_n362(x)
+ if (x < 1)
+ fun_l16_n644(x)
+ else
+ fun_l16_n40(x)
+ end
+end
+
+def fun_l15_n363(x)
+ if (x < 1)
+ fun_l16_n491(x)
+ else
+ fun_l16_n255(x)
+ end
+end
+
+def fun_l15_n364(x)
+ if (x < 1)
+ fun_l16_n14(x)
+ else
+ fun_l16_n433(x)
+ end
+end
+
+def fun_l15_n365(x)
+ if (x < 1)
+ fun_l16_n652(x)
+ else
+ fun_l16_n418(x)
+ end
+end
+
+def fun_l15_n366(x)
+ if (x < 1)
+ fun_l16_n815(x)
+ else
+ fun_l16_n325(x)
+ end
+end
+
+def fun_l15_n367(x)
+ if (x < 1)
+ fun_l16_n623(x)
+ else
+ fun_l16_n34(x)
+ end
+end
+
+def fun_l15_n368(x)
+ if (x < 1)
+ fun_l16_n596(x)
+ else
+ fun_l16_n382(x)
+ end
+end
+
+def fun_l15_n369(x)
+ if (x < 1)
+ fun_l16_n144(x)
+ else
+ fun_l16_n18(x)
+ end
+end
+
+def fun_l15_n370(x)
+ if (x < 1)
+ fun_l16_n37(x)
+ else
+ fun_l16_n626(x)
+ end
+end
+
+def fun_l15_n371(x)
+ if (x < 1)
+ fun_l16_n275(x)
+ else
+ fun_l16_n343(x)
+ end
+end
+
+def fun_l15_n372(x)
+ if (x < 1)
+ fun_l16_n951(x)
+ else
+ fun_l16_n93(x)
+ end
+end
+
+def fun_l15_n373(x)
+ if (x < 1)
+ fun_l16_n893(x)
+ else
+ fun_l16_n137(x)
+ end
+end
+
+def fun_l15_n374(x)
+ if (x < 1)
+ fun_l16_n32(x)
+ else
+ fun_l16_n663(x)
+ end
+end
+
+def fun_l15_n375(x)
+ if (x < 1)
+ fun_l16_n888(x)
+ else
+ fun_l16_n708(x)
+ end
+end
+
+def fun_l15_n376(x)
+ if (x < 1)
+ fun_l16_n745(x)
+ else
+ fun_l16_n275(x)
+ end
+end
+
+def fun_l15_n377(x)
+ if (x < 1)
+ fun_l16_n957(x)
+ else
+ fun_l16_n766(x)
+ end
+end
+
+def fun_l15_n378(x)
+ if (x < 1)
+ fun_l16_n242(x)
+ else
+ fun_l16_n309(x)
+ end
+end
+
+def fun_l15_n379(x)
+ if (x < 1)
+ fun_l16_n855(x)
+ else
+ fun_l16_n289(x)
+ end
+end
+
+def fun_l15_n380(x)
+ if (x < 1)
+ fun_l16_n511(x)
+ else
+ fun_l16_n261(x)
+ end
+end
+
+def fun_l15_n381(x)
+ if (x < 1)
+ fun_l16_n867(x)
+ else
+ fun_l16_n169(x)
+ end
+end
+
+def fun_l15_n382(x)
+ if (x < 1)
+ fun_l16_n646(x)
+ else
+ fun_l16_n821(x)
+ end
+end
+
+def fun_l15_n383(x)
+ if (x < 1)
+ fun_l16_n181(x)
+ else
+ fun_l16_n798(x)
+ end
+end
+
+def fun_l15_n384(x)
+ if (x < 1)
+ fun_l16_n290(x)
+ else
+ fun_l16_n756(x)
+ end
+end
+
+def fun_l15_n385(x)
+ if (x < 1)
+ fun_l16_n896(x)
+ else
+ fun_l16_n14(x)
+ end
+end
+
+def fun_l15_n386(x)
+ if (x < 1)
+ fun_l16_n602(x)
+ else
+ fun_l16_n817(x)
+ end
+end
+
+def fun_l15_n387(x)
+ if (x < 1)
+ fun_l16_n908(x)
+ else
+ fun_l16_n773(x)
+ end
+end
+
+def fun_l15_n388(x)
+ if (x < 1)
+ fun_l16_n708(x)
+ else
+ fun_l16_n416(x)
+ end
+end
+
+def fun_l15_n389(x)
+ if (x < 1)
+ fun_l16_n42(x)
+ else
+ fun_l16_n325(x)
+ end
+end
+
+def fun_l15_n390(x)
+ if (x < 1)
+ fun_l16_n245(x)
+ else
+ fun_l16_n211(x)
+ end
+end
+
+def fun_l15_n391(x)
+ if (x < 1)
+ fun_l16_n674(x)
+ else
+ fun_l16_n854(x)
+ end
+end
+
+def fun_l15_n392(x)
+ if (x < 1)
+ fun_l16_n294(x)
+ else
+ fun_l16_n299(x)
+ end
+end
+
+def fun_l15_n393(x)
+ if (x < 1)
+ fun_l16_n873(x)
+ else
+ fun_l16_n17(x)
+ end
+end
+
+def fun_l15_n394(x)
+ if (x < 1)
+ fun_l16_n375(x)
+ else
+ fun_l16_n976(x)
+ end
+end
+
+def fun_l15_n395(x)
+ if (x < 1)
+ fun_l16_n753(x)
+ else
+ fun_l16_n362(x)
+ end
+end
+
+def fun_l15_n396(x)
+ if (x < 1)
+ fun_l16_n326(x)
+ else
+ fun_l16_n878(x)
+ end
+end
+
+def fun_l15_n397(x)
+ if (x < 1)
+ fun_l16_n118(x)
+ else
+ fun_l16_n552(x)
+ end
+end
+
+def fun_l15_n398(x)
+ if (x < 1)
+ fun_l16_n931(x)
+ else
+ fun_l16_n552(x)
+ end
+end
+
+def fun_l15_n399(x)
+ if (x < 1)
+ fun_l16_n125(x)
+ else
+ fun_l16_n817(x)
+ end
+end
+
+def fun_l15_n400(x)
+ if (x < 1)
+ fun_l16_n747(x)
+ else
+ fun_l16_n328(x)
+ end
+end
+
+def fun_l15_n401(x)
+ if (x < 1)
+ fun_l16_n204(x)
+ else
+ fun_l16_n644(x)
+ end
+end
+
+def fun_l15_n402(x)
+ if (x < 1)
+ fun_l16_n730(x)
+ else
+ fun_l16_n622(x)
+ end
+end
+
+def fun_l15_n403(x)
+ if (x < 1)
+ fun_l16_n718(x)
+ else
+ fun_l16_n616(x)
+ end
+end
+
+def fun_l15_n404(x)
+ if (x < 1)
+ fun_l16_n260(x)
+ else
+ fun_l16_n96(x)
+ end
+end
+
+def fun_l15_n405(x)
+ if (x < 1)
+ fun_l16_n123(x)
+ else
+ fun_l16_n377(x)
+ end
+end
+
+def fun_l15_n406(x)
+ if (x < 1)
+ fun_l16_n425(x)
+ else
+ fun_l16_n601(x)
+ end
+end
+
+def fun_l15_n407(x)
+ if (x < 1)
+ fun_l16_n842(x)
+ else
+ fun_l16_n936(x)
+ end
+end
+
+def fun_l15_n408(x)
+ if (x < 1)
+ fun_l16_n797(x)
+ else
+ fun_l16_n194(x)
+ end
+end
+
+def fun_l15_n409(x)
+ if (x < 1)
+ fun_l16_n930(x)
+ else
+ fun_l16_n976(x)
+ end
+end
+
+def fun_l15_n410(x)
+ if (x < 1)
+ fun_l16_n163(x)
+ else
+ fun_l16_n703(x)
+ end
+end
+
+def fun_l15_n411(x)
+ if (x < 1)
+ fun_l16_n109(x)
+ else
+ fun_l16_n276(x)
+ end
+end
+
+def fun_l15_n412(x)
+ if (x < 1)
+ fun_l16_n37(x)
+ else
+ fun_l16_n372(x)
+ end
+end
+
+def fun_l15_n413(x)
+ if (x < 1)
+ fun_l16_n995(x)
+ else
+ fun_l16_n762(x)
+ end
+end
+
+def fun_l15_n414(x)
+ if (x < 1)
+ fun_l16_n789(x)
+ else
+ fun_l16_n601(x)
+ end
+end
+
+def fun_l15_n415(x)
+ if (x < 1)
+ fun_l16_n699(x)
+ else
+ fun_l16_n853(x)
+ end
+end
+
+def fun_l15_n416(x)
+ if (x < 1)
+ fun_l16_n936(x)
+ else
+ fun_l16_n478(x)
+ end
+end
+
+def fun_l15_n417(x)
+ if (x < 1)
+ fun_l16_n50(x)
+ else
+ fun_l16_n67(x)
+ end
+end
+
+def fun_l15_n418(x)
+ if (x < 1)
+ fun_l16_n563(x)
+ else
+ fun_l16_n248(x)
+ end
+end
+
+def fun_l15_n419(x)
+ if (x < 1)
+ fun_l16_n238(x)
+ else
+ fun_l16_n188(x)
+ end
+end
+
+def fun_l15_n420(x)
+ if (x < 1)
+ fun_l16_n369(x)
+ else
+ fun_l16_n706(x)
+ end
+end
+
+def fun_l15_n421(x)
+ if (x < 1)
+ fun_l16_n641(x)
+ else
+ fun_l16_n869(x)
+ end
+end
+
+def fun_l15_n422(x)
+ if (x < 1)
+ fun_l16_n219(x)
+ else
+ fun_l16_n333(x)
+ end
+end
+
+def fun_l15_n423(x)
+ if (x < 1)
+ fun_l16_n156(x)
+ else
+ fun_l16_n22(x)
+ end
+end
+
+def fun_l15_n424(x)
+ if (x < 1)
+ fun_l16_n443(x)
+ else
+ fun_l16_n1(x)
+ end
+end
+
+def fun_l15_n425(x)
+ if (x < 1)
+ fun_l16_n892(x)
+ else
+ fun_l16_n937(x)
+ end
+end
+
+def fun_l15_n426(x)
+ if (x < 1)
+ fun_l16_n586(x)
+ else
+ fun_l16_n636(x)
+ end
+end
+
+def fun_l15_n427(x)
+ if (x < 1)
+ fun_l16_n519(x)
+ else
+ fun_l16_n269(x)
+ end
+end
+
+def fun_l15_n428(x)
+ if (x < 1)
+ fun_l16_n379(x)
+ else
+ fun_l16_n994(x)
+ end
+end
+
+def fun_l15_n429(x)
+ if (x < 1)
+ fun_l16_n588(x)
+ else
+ fun_l16_n532(x)
+ end
+end
+
+def fun_l15_n430(x)
+ if (x < 1)
+ fun_l16_n584(x)
+ else
+ fun_l16_n445(x)
+ end
+end
+
+def fun_l15_n431(x)
+ if (x < 1)
+ fun_l16_n63(x)
+ else
+ fun_l16_n678(x)
+ end
+end
+
+def fun_l15_n432(x)
+ if (x < 1)
+ fun_l16_n487(x)
+ else
+ fun_l16_n435(x)
+ end
+end
+
+def fun_l15_n433(x)
+ if (x < 1)
+ fun_l16_n673(x)
+ else
+ fun_l16_n220(x)
+ end
+end
+
+def fun_l15_n434(x)
+ if (x < 1)
+ fun_l16_n131(x)
+ else
+ fun_l16_n751(x)
+ end
+end
+
+def fun_l15_n435(x)
+ if (x < 1)
+ fun_l16_n557(x)
+ else
+ fun_l16_n340(x)
+ end
+end
+
+def fun_l15_n436(x)
+ if (x < 1)
+ fun_l16_n511(x)
+ else
+ fun_l16_n751(x)
+ end
+end
+
+def fun_l15_n437(x)
+ if (x < 1)
+ fun_l16_n983(x)
+ else
+ fun_l16_n632(x)
+ end
+end
+
+def fun_l15_n438(x)
+ if (x < 1)
+ fun_l16_n350(x)
+ else
+ fun_l16_n492(x)
+ end
+end
+
+def fun_l15_n439(x)
+ if (x < 1)
+ fun_l16_n994(x)
+ else
+ fun_l16_n76(x)
+ end
+end
+
+def fun_l15_n440(x)
+ if (x < 1)
+ fun_l16_n756(x)
+ else
+ fun_l16_n177(x)
+ end
+end
+
+def fun_l15_n441(x)
+ if (x < 1)
+ fun_l16_n619(x)
+ else
+ fun_l16_n473(x)
+ end
+end
+
+def fun_l15_n442(x)
+ if (x < 1)
+ fun_l16_n667(x)
+ else
+ fun_l16_n714(x)
+ end
+end
+
+def fun_l15_n443(x)
+ if (x < 1)
+ fun_l16_n790(x)
+ else
+ fun_l16_n848(x)
+ end
+end
+
+def fun_l15_n444(x)
+ if (x < 1)
+ fun_l16_n925(x)
+ else
+ fun_l16_n113(x)
+ end
+end
+
+def fun_l15_n445(x)
+ if (x < 1)
+ fun_l16_n990(x)
+ else
+ fun_l16_n566(x)
+ end
+end
+
+def fun_l15_n446(x)
+ if (x < 1)
+ fun_l16_n589(x)
+ else
+ fun_l16_n881(x)
+ end
+end
+
+def fun_l15_n447(x)
+ if (x < 1)
+ fun_l16_n961(x)
+ else
+ fun_l16_n786(x)
+ end
+end
+
+def fun_l15_n448(x)
+ if (x < 1)
+ fun_l16_n928(x)
+ else
+ fun_l16_n631(x)
+ end
+end
+
+def fun_l15_n449(x)
+ if (x < 1)
+ fun_l16_n317(x)
+ else
+ fun_l16_n980(x)
+ end
+end
+
+def fun_l15_n450(x)
+ if (x < 1)
+ fun_l16_n276(x)
+ else
+ fun_l16_n941(x)
+ end
+end
+
+def fun_l15_n451(x)
+ if (x < 1)
+ fun_l16_n552(x)
+ else
+ fun_l16_n545(x)
+ end
+end
+
+def fun_l15_n452(x)
+ if (x < 1)
+ fun_l16_n334(x)
+ else
+ fun_l16_n340(x)
+ end
+end
+
+def fun_l15_n453(x)
+ if (x < 1)
+ fun_l16_n800(x)
+ else
+ fun_l16_n548(x)
+ end
+end
+
+def fun_l15_n454(x)
+ if (x < 1)
+ fun_l16_n676(x)
+ else
+ fun_l16_n742(x)
+ end
+end
+
+def fun_l15_n455(x)
+ if (x < 1)
+ fun_l16_n722(x)
+ else
+ fun_l16_n446(x)
+ end
+end
+
+def fun_l15_n456(x)
+ if (x < 1)
+ fun_l16_n570(x)
+ else
+ fun_l16_n203(x)
+ end
+end
+
+def fun_l15_n457(x)
+ if (x < 1)
+ fun_l16_n425(x)
+ else
+ fun_l16_n401(x)
+ end
+end
+
+def fun_l15_n458(x)
+ if (x < 1)
+ fun_l16_n3(x)
+ else
+ fun_l16_n483(x)
+ end
+end
+
+def fun_l15_n459(x)
+ if (x < 1)
+ fun_l16_n450(x)
+ else
+ fun_l16_n468(x)
+ end
+end
+
+def fun_l15_n460(x)
+ if (x < 1)
+ fun_l16_n447(x)
+ else
+ fun_l16_n758(x)
+ end
+end
+
+def fun_l15_n461(x)
+ if (x < 1)
+ fun_l16_n531(x)
+ else
+ fun_l16_n268(x)
+ end
+end
+
+def fun_l15_n462(x)
+ if (x < 1)
+ fun_l16_n628(x)
+ else
+ fun_l16_n142(x)
+ end
+end
+
+def fun_l15_n463(x)
+ if (x < 1)
+ fun_l16_n823(x)
+ else
+ fun_l16_n97(x)
+ end
+end
+
+def fun_l15_n464(x)
+ if (x < 1)
+ fun_l16_n807(x)
+ else
+ fun_l16_n231(x)
+ end
+end
+
+def fun_l15_n465(x)
+ if (x < 1)
+ fun_l16_n113(x)
+ else
+ fun_l16_n438(x)
+ end
+end
+
+def fun_l15_n466(x)
+ if (x < 1)
+ fun_l16_n234(x)
+ else
+ fun_l16_n369(x)
+ end
+end
+
+def fun_l15_n467(x)
+ if (x < 1)
+ fun_l16_n242(x)
+ else
+ fun_l16_n121(x)
+ end
+end
+
+def fun_l15_n468(x)
+ if (x < 1)
+ fun_l16_n38(x)
+ else
+ fun_l16_n223(x)
+ end
+end
+
+def fun_l15_n469(x)
+ if (x < 1)
+ fun_l16_n618(x)
+ else
+ fun_l16_n550(x)
+ end
+end
+
+def fun_l15_n470(x)
+ if (x < 1)
+ fun_l16_n318(x)
+ else
+ fun_l16_n182(x)
+ end
+end
+
+def fun_l15_n471(x)
+ if (x < 1)
+ fun_l16_n782(x)
+ else
+ fun_l16_n876(x)
+ end
+end
+
+def fun_l15_n472(x)
+ if (x < 1)
+ fun_l16_n995(x)
+ else
+ fun_l16_n4(x)
+ end
+end
+
+def fun_l15_n473(x)
+ if (x < 1)
+ fun_l16_n425(x)
+ else
+ fun_l16_n891(x)
+ end
+end
+
+def fun_l15_n474(x)
+ if (x < 1)
+ fun_l16_n263(x)
+ else
+ fun_l16_n278(x)
+ end
+end
+
+def fun_l15_n475(x)
+ if (x < 1)
+ fun_l16_n116(x)
+ else
+ fun_l16_n62(x)
+ end
+end
+
+def fun_l15_n476(x)
+ if (x < 1)
+ fun_l16_n855(x)
+ else
+ fun_l16_n153(x)
+ end
+end
+
+def fun_l15_n477(x)
+ if (x < 1)
+ fun_l16_n979(x)
+ else
+ fun_l16_n957(x)
+ end
+end
+
+def fun_l15_n478(x)
+ if (x < 1)
+ fun_l16_n671(x)
+ else
+ fun_l16_n694(x)
+ end
+end
+
+def fun_l15_n479(x)
+ if (x < 1)
+ fun_l16_n479(x)
+ else
+ fun_l16_n400(x)
+ end
+end
+
+def fun_l15_n480(x)
+ if (x < 1)
+ fun_l16_n740(x)
+ else
+ fun_l16_n940(x)
+ end
+end
+
+def fun_l15_n481(x)
+ if (x < 1)
+ fun_l16_n270(x)
+ else
+ fun_l16_n802(x)
+ end
+end
+
+def fun_l15_n482(x)
+ if (x < 1)
+ fun_l16_n489(x)
+ else
+ fun_l16_n402(x)
+ end
+end
+
+def fun_l15_n483(x)
+ if (x < 1)
+ fun_l16_n505(x)
+ else
+ fun_l16_n97(x)
+ end
+end
+
+def fun_l15_n484(x)
+ if (x < 1)
+ fun_l16_n64(x)
+ else
+ fun_l16_n748(x)
+ end
+end
+
+def fun_l15_n485(x)
+ if (x < 1)
+ fun_l16_n7(x)
+ else
+ fun_l16_n627(x)
+ end
+end
+
+def fun_l15_n486(x)
+ if (x < 1)
+ fun_l16_n302(x)
+ else
+ fun_l16_n331(x)
+ end
+end
+
+def fun_l15_n487(x)
+ if (x < 1)
+ fun_l16_n771(x)
+ else
+ fun_l16_n895(x)
+ end
+end
+
+def fun_l15_n488(x)
+ if (x < 1)
+ fun_l16_n306(x)
+ else
+ fun_l16_n740(x)
+ end
+end
+
+def fun_l15_n489(x)
+ if (x < 1)
+ fun_l16_n722(x)
+ else
+ fun_l16_n848(x)
+ end
+end
+
+def fun_l15_n490(x)
+ if (x < 1)
+ fun_l16_n764(x)
+ else
+ fun_l16_n851(x)
+ end
+end
+
+def fun_l15_n491(x)
+ if (x < 1)
+ fun_l16_n357(x)
+ else
+ fun_l16_n117(x)
+ end
+end
+
+def fun_l15_n492(x)
+ if (x < 1)
+ fun_l16_n483(x)
+ else
+ fun_l16_n187(x)
+ end
+end
+
+def fun_l15_n493(x)
+ if (x < 1)
+ fun_l16_n695(x)
+ else
+ fun_l16_n727(x)
+ end
+end
+
+def fun_l15_n494(x)
+ if (x < 1)
+ fun_l16_n460(x)
+ else
+ fun_l16_n154(x)
+ end
+end
+
+def fun_l15_n495(x)
+ if (x < 1)
+ fun_l16_n130(x)
+ else
+ fun_l16_n999(x)
+ end
+end
+
+def fun_l15_n496(x)
+ if (x < 1)
+ fun_l16_n963(x)
+ else
+ fun_l16_n746(x)
+ end
+end
+
+def fun_l15_n497(x)
+ if (x < 1)
+ fun_l16_n630(x)
+ else
+ fun_l16_n852(x)
+ end
+end
+
+def fun_l15_n498(x)
+ if (x < 1)
+ fun_l16_n847(x)
+ else
+ fun_l16_n836(x)
+ end
+end
+
+def fun_l15_n499(x)
+ if (x < 1)
+ fun_l16_n100(x)
+ else
+ fun_l16_n40(x)
+ end
+end
+
+def fun_l15_n500(x)
+ if (x < 1)
+ fun_l16_n246(x)
+ else
+ fun_l16_n442(x)
+ end
+end
+
+def fun_l15_n501(x)
+ if (x < 1)
+ fun_l16_n355(x)
+ else
+ fun_l16_n405(x)
+ end
+end
+
+def fun_l15_n502(x)
+ if (x < 1)
+ fun_l16_n857(x)
+ else
+ fun_l16_n652(x)
+ end
+end
+
+def fun_l15_n503(x)
+ if (x < 1)
+ fun_l16_n612(x)
+ else
+ fun_l16_n779(x)
+ end
+end
+
+def fun_l15_n504(x)
+ if (x < 1)
+ fun_l16_n836(x)
+ else
+ fun_l16_n625(x)
+ end
+end
+
+def fun_l15_n505(x)
+ if (x < 1)
+ fun_l16_n872(x)
+ else
+ fun_l16_n905(x)
+ end
+end
+
+def fun_l15_n506(x)
+ if (x < 1)
+ fun_l16_n953(x)
+ else
+ fun_l16_n955(x)
+ end
+end
+
+def fun_l15_n507(x)
+ if (x < 1)
+ fun_l16_n678(x)
+ else
+ fun_l16_n663(x)
+ end
+end
+
+def fun_l15_n508(x)
+ if (x < 1)
+ fun_l16_n848(x)
+ else
+ fun_l16_n438(x)
+ end
+end
+
+def fun_l15_n509(x)
+ if (x < 1)
+ fun_l16_n558(x)
+ else
+ fun_l16_n430(x)
+ end
+end
+
+def fun_l15_n510(x)
+ if (x < 1)
+ fun_l16_n424(x)
+ else
+ fun_l16_n473(x)
+ end
+end
+
+def fun_l15_n511(x)
+ if (x < 1)
+ fun_l16_n897(x)
+ else
+ fun_l16_n359(x)
+ end
+end
+
+def fun_l15_n512(x)
+ if (x < 1)
+ fun_l16_n229(x)
+ else
+ fun_l16_n205(x)
+ end
+end
+
+def fun_l15_n513(x)
+ if (x < 1)
+ fun_l16_n553(x)
+ else
+ fun_l16_n438(x)
+ end
+end
+
+def fun_l15_n514(x)
+ if (x < 1)
+ fun_l16_n300(x)
+ else
+ fun_l16_n588(x)
+ end
+end
+
+def fun_l15_n515(x)
+ if (x < 1)
+ fun_l16_n819(x)
+ else
+ fun_l16_n467(x)
+ end
+end
+
+def fun_l15_n516(x)
+ if (x < 1)
+ fun_l16_n767(x)
+ else
+ fun_l16_n786(x)
+ end
+end
+
+def fun_l15_n517(x)
+ if (x < 1)
+ fun_l16_n50(x)
+ else
+ fun_l16_n309(x)
+ end
+end
+
+def fun_l15_n518(x)
+ if (x < 1)
+ fun_l16_n671(x)
+ else
+ fun_l16_n635(x)
+ end
+end
+
+def fun_l15_n519(x)
+ if (x < 1)
+ fun_l16_n935(x)
+ else
+ fun_l16_n497(x)
+ end
+end
+
+def fun_l15_n520(x)
+ if (x < 1)
+ fun_l16_n343(x)
+ else
+ fun_l16_n175(x)
+ end
+end
+
+def fun_l15_n521(x)
+ if (x < 1)
+ fun_l16_n212(x)
+ else
+ fun_l16_n987(x)
+ end
+end
+
+def fun_l15_n522(x)
+ if (x < 1)
+ fun_l16_n780(x)
+ else
+ fun_l16_n331(x)
+ end
+end
+
+def fun_l15_n523(x)
+ if (x < 1)
+ fun_l16_n452(x)
+ else
+ fun_l16_n393(x)
+ end
+end
+
+def fun_l15_n524(x)
+ if (x < 1)
+ fun_l16_n823(x)
+ else
+ fun_l16_n212(x)
+ end
+end
+
+def fun_l15_n525(x)
+ if (x < 1)
+ fun_l16_n516(x)
+ else
+ fun_l16_n906(x)
+ end
+end
+
+def fun_l15_n526(x)
+ if (x < 1)
+ fun_l16_n590(x)
+ else
+ fun_l16_n278(x)
+ end
+end
+
+def fun_l15_n527(x)
+ if (x < 1)
+ fun_l16_n392(x)
+ else
+ fun_l16_n714(x)
+ end
+end
+
+def fun_l15_n528(x)
+ if (x < 1)
+ fun_l16_n729(x)
+ else
+ fun_l16_n751(x)
+ end
+end
+
+def fun_l15_n529(x)
+ if (x < 1)
+ fun_l16_n863(x)
+ else
+ fun_l16_n478(x)
+ end
+end
+
+def fun_l15_n530(x)
+ if (x < 1)
+ fun_l16_n472(x)
+ else
+ fun_l16_n672(x)
+ end
+end
+
+def fun_l15_n531(x)
+ if (x < 1)
+ fun_l16_n811(x)
+ else
+ fun_l16_n201(x)
+ end
+end
+
+def fun_l15_n532(x)
+ if (x < 1)
+ fun_l16_n558(x)
+ else
+ fun_l16_n602(x)
+ end
+end
+
+def fun_l15_n533(x)
+ if (x < 1)
+ fun_l16_n788(x)
+ else
+ fun_l16_n175(x)
+ end
+end
+
+def fun_l15_n534(x)
+ if (x < 1)
+ fun_l16_n497(x)
+ else
+ fun_l16_n807(x)
+ end
+end
+
+def fun_l15_n535(x)
+ if (x < 1)
+ fun_l16_n712(x)
+ else
+ fun_l16_n870(x)
+ end
+end
+
+def fun_l15_n536(x)
+ if (x < 1)
+ fun_l16_n699(x)
+ else
+ fun_l16_n879(x)
+ end
+end
+
+def fun_l15_n537(x)
+ if (x < 1)
+ fun_l16_n215(x)
+ else
+ fun_l16_n807(x)
+ end
+end
+
+def fun_l15_n538(x)
+ if (x < 1)
+ fun_l16_n569(x)
+ else
+ fun_l16_n385(x)
+ end
+end
+
+def fun_l15_n539(x)
+ if (x < 1)
+ fun_l16_n807(x)
+ else
+ fun_l16_n699(x)
+ end
+end
+
+def fun_l15_n540(x)
+ if (x < 1)
+ fun_l16_n982(x)
+ else
+ fun_l16_n436(x)
+ end
+end
+
+def fun_l15_n541(x)
+ if (x < 1)
+ fun_l16_n852(x)
+ else
+ fun_l16_n800(x)
+ end
+end
+
+def fun_l15_n542(x)
+ if (x < 1)
+ fun_l16_n401(x)
+ else
+ fun_l16_n478(x)
+ end
+end
+
+def fun_l15_n543(x)
+ if (x < 1)
+ fun_l16_n373(x)
+ else
+ fun_l16_n465(x)
+ end
+end
+
+def fun_l15_n544(x)
+ if (x < 1)
+ fun_l16_n299(x)
+ else
+ fun_l16_n337(x)
+ end
+end
+
+def fun_l15_n545(x)
+ if (x < 1)
+ fun_l16_n931(x)
+ else
+ fun_l16_n68(x)
+ end
+end
+
+def fun_l15_n546(x)
+ if (x < 1)
+ fun_l16_n87(x)
+ else
+ fun_l16_n947(x)
+ end
+end
+
+def fun_l15_n547(x)
+ if (x < 1)
+ fun_l16_n287(x)
+ else
+ fun_l16_n530(x)
+ end
+end
+
+def fun_l15_n548(x)
+ if (x < 1)
+ fun_l16_n910(x)
+ else
+ fun_l16_n112(x)
+ end
+end
+
+def fun_l15_n549(x)
+ if (x < 1)
+ fun_l16_n878(x)
+ else
+ fun_l16_n737(x)
+ end
+end
+
+def fun_l15_n550(x)
+ if (x < 1)
+ fun_l16_n538(x)
+ else
+ fun_l16_n634(x)
+ end
+end
+
+def fun_l15_n551(x)
+ if (x < 1)
+ fun_l16_n109(x)
+ else
+ fun_l16_n493(x)
+ end
+end
+
+def fun_l15_n552(x)
+ if (x < 1)
+ fun_l16_n631(x)
+ else
+ fun_l16_n244(x)
+ end
+end
+
+def fun_l15_n553(x)
+ if (x < 1)
+ fun_l16_n107(x)
+ else
+ fun_l16_n718(x)
+ end
+end
+
+def fun_l15_n554(x)
+ if (x < 1)
+ fun_l16_n572(x)
+ else
+ fun_l16_n199(x)
+ end
+end
+
+def fun_l15_n555(x)
+ if (x < 1)
+ fun_l16_n109(x)
+ else
+ fun_l16_n705(x)
+ end
+end
+
+def fun_l15_n556(x)
+ if (x < 1)
+ fun_l16_n679(x)
+ else
+ fun_l16_n999(x)
+ end
+end
+
+def fun_l15_n557(x)
+ if (x < 1)
+ fun_l16_n714(x)
+ else
+ fun_l16_n121(x)
+ end
+end
+
+def fun_l15_n558(x)
+ if (x < 1)
+ fun_l16_n408(x)
+ else
+ fun_l16_n239(x)
+ end
+end
+
+def fun_l15_n559(x)
+ if (x < 1)
+ fun_l16_n861(x)
+ else
+ fun_l16_n83(x)
+ end
+end
+
+def fun_l15_n560(x)
+ if (x < 1)
+ fun_l16_n597(x)
+ else
+ fun_l16_n413(x)
+ end
+end
+
+def fun_l15_n561(x)
+ if (x < 1)
+ fun_l16_n485(x)
+ else
+ fun_l16_n42(x)
+ end
+end
+
+def fun_l15_n562(x)
+ if (x < 1)
+ fun_l16_n798(x)
+ else
+ fun_l16_n340(x)
+ end
+end
+
+def fun_l15_n563(x)
+ if (x < 1)
+ fun_l16_n50(x)
+ else
+ fun_l16_n858(x)
+ end
+end
+
+def fun_l15_n564(x)
+ if (x < 1)
+ fun_l16_n92(x)
+ else
+ fun_l16_n3(x)
+ end
+end
+
+def fun_l15_n565(x)
+ if (x < 1)
+ fun_l16_n311(x)
+ else
+ fun_l16_n953(x)
+ end
+end
+
+def fun_l15_n566(x)
+ if (x < 1)
+ fun_l16_n649(x)
+ else
+ fun_l16_n670(x)
+ end
+end
+
+def fun_l15_n567(x)
+ if (x < 1)
+ fun_l16_n598(x)
+ else
+ fun_l16_n268(x)
+ end
+end
+
+def fun_l15_n568(x)
+ if (x < 1)
+ fun_l16_n425(x)
+ else
+ fun_l16_n821(x)
+ end
+end
+
+def fun_l15_n569(x)
+ if (x < 1)
+ fun_l16_n447(x)
+ else
+ fun_l16_n940(x)
+ end
+end
+
+def fun_l15_n570(x)
+ if (x < 1)
+ fun_l16_n755(x)
+ else
+ fun_l16_n26(x)
+ end
+end
+
+def fun_l15_n571(x)
+ if (x < 1)
+ fun_l16_n157(x)
+ else
+ fun_l16_n582(x)
+ end
+end
+
+def fun_l15_n572(x)
+ if (x < 1)
+ fun_l16_n530(x)
+ else
+ fun_l16_n202(x)
+ end
+end
+
+def fun_l15_n573(x)
+ if (x < 1)
+ fun_l16_n95(x)
+ else
+ fun_l16_n137(x)
+ end
+end
+
+def fun_l15_n574(x)
+ if (x < 1)
+ fun_l16_n789(x)
+ else
+ fun_l16_n531(x)
+ end
+end
+
+def fun_l15_n575(x)
+ if (x < 1)
+ fun_l16_n677(x)
+ else
+ fun_l16_n686(x)
+ end
+end
+
+def fun_l15_n576(x)
+ if (x < 1)
+ fun_l16_n253(x)
+ else
+ fun_l16_n101(x)
+ end
+end
+
+def fun_l15_n577(x)
+ if (x < 1)
+ fun_l16_n579(x)
+ else
+ fun_l16_n250(x)
+ end
+end
+
+def fun_l15_n578(x)
+ if (x < 1)
+ fun_l16_n104(x)
+ else
+ fun_l16_n860(x)
+ end
+end
+
+def fun_l15_n579(x)
+ if (x < 1)
+ fun_l16_n415(x)
+ else
+ fun_l16_n480(x)
+ end
+end
+
+def fun_l15_n580(x)
+ if (x < 1)
+ fun_l16_n255(x)
+ else
+ fun_l16_n123(x)
+ end
+end
+
+def fun_l15_n581(x)
+ if (x < 1)
+ fun_l16_n40(x)
+ else
+ fun_l16_n36(x)
+ end
+end
+
+def fun_l15_n582(x)
+ if (x < 1)
+ fun_l16_n612(x)
+ else
+ fun_l16_n46(x)
+ end
+end
+
+def fun_l15_n583(x)
+ if (x < 1)
+ fun_l16_n328(x)
+ else
+ fun_l16_n638(x)
+ end
+end
+
+def fun_l15_n584(x)
+ if (x < 1)
+ fun_l16_n219(x)
+ else
+ fun_l16_n672(x)
+ end
+end
+
+def fun_l15_n585(x)
+ if (x < 1)
+ fun_l16_n67(x)
+ else
+ fun_l16_n584(x)
+ end
+end
+
+def fun_l15_n586(x)
+ if (x < 1)
+ fun_l16_n222(x)
+ else
+ fun_l16_n366(x)
+ end
+end
+
+def fun_l15_n587(x)
+ if (x < 1)
+ fun_l16_n194(x)
+ else
+ fun_l16_n54(x)
+ end
+end
+
+def fun_l15_n588(x)
+ if (x < 1)
+ fun_l16_n742(x)
+ else
+ fun_l16_n725(x)
+ end
+end
+
+def fun_l15_n589(x)
+ if (x < 1)
+ fun_l16_n557(x)
+ else
+ fun_l16_n688(x)
+ end
+end
+
+def fun_l15_n590(x)
+ if (x < 1)
+ fun_l16_n588(x)
+ else
+ fun_l16_n296(x)
+ end
+end
+
+def fun_l15_n591(x)
+ if (x < 1)
+ fun_l16_n756(x)
+ else
+ fun_l16_n619(x)
+ end
+end
+
+def fun_l15_n592(x)
+ if (x < 1)
+ fun_l16_n919(x)
+ else
+ fun_l16_n607(x)
+ end
+end
+
+def fun_l15_n593(x)
+ if (x < 1)
+ fun_l16_n168(x)
+ else
+ fun_l16_n425(x)
+ end
+end
+
+def fun_l15_n594(x)
+ if (x < 1)
+ fun_l16_n641(x)
+ else
+ fun_l16_n980(x)
+ end
+end
+
+def fun_l15_n595(x)
+ if (x < 1)
+ fun_l16_n132(x)
+ else
+ fun_l16_n120(x)
+ end
+end
+
+def fun_l15_n596(x)
+ if (x < 1)
+ fun_l16_n998(x)
+ else
+ fun_l16_n383(x)
+ end
+end
+
+def fun_l15_n597(x)
+ if (x < 1)
+ fun_l16_n987(x)
+ else
+ fun_l16_n685(x)
+ end
+end
+
+def fun_l15_n598(x)
+ if (x < 1)
+ fun_l16_n898(x)
+ else
+ fun_l16_n53(x)
+ end
+end
+
+def fun_l15_n599(x)
+ if (x < 1)
+ fun_l16_n589(x)
+ else
+ fun_l16_n25(x)
+ end
+end
+
+def fun_l15_n600(x)
+ if (x < 1)
+ fun_l16_n841(x)
+ else
+ fun_l16_n623(x)
+ end
+end
+
+def fun_l15_n601(x)
+ if (x < 1)
+ fun_l16_n63(x)
+ else
+ fun_l16_n515(x)
+ end
+end
+
+def fun_l15_n602(x)
+ if (x < 1)
+ fun_l16_n708(x)
+ else
+ fun_l16_n318(x)
+ end
+end
+
+def fun_l15_n603(x)
+ if (x < 1)
+ fun_l16_n679(x)
+ else
+ fun_l16_n31(x)
+ end
+end
+
+def fun_l15_n604(x)
+ if (x < 1)
+ fun_l16_n617(x)
+ else
+ fun_l16_n20(x)
+ end
+end
+
+def fun_l15_n605(x)
+ if (x < 1)
+ fun_l16_n635(x)
+ else
+ fun_l16_n990(x)
+ end
+end
+
+def fun_l15_n606(x)
+ if (x < 1)
+ fun_l16_n174(x)
+ else
+ fun_l16_n977(x)
+ end
+end
+
+def fun_l15_n607(x)
+ if (x < 1)
+ fun_l16_n449(x)
+ else
+ fun_l16_n658(x)
+ end
+end
+
+def fun_l15_n608(x)
+ if (x < 1)
+ fun_l16_n208(x)
+ else
+ fun_l16_n875(x)
+ end
+end
+
+def fun_l15_n609(x)
+ if (x < 1)
+ fun_l16_n665(x)
+ else
+ fun_l16_n431(x)
+ end
+end
+
+def fun_l15_n610(x)
+ if (x < 1)
+ fun_l16_n6(x)
+ else
+ fun_l16_n78(x)
+ end
+end
+
+def fun_l15_n611(x)
+ if (x < 1)
+ fun_l16_n335(x)
+ else
+ fun_l16_n558(x)
+ end
+end
+
+def fun_l15_n612(x)
+ if (x < 1)
+ fun_l16_n259(x)
+ else
+ fun_l16_n893(x)
+ end
+end
+
+def fun_l15_n613(x)
+ if (x < 1)
+ fun_l16_n511(x)
+ else
+ fun_l16_n519(x)
+ end
+end
+
+def fun_l15_n614(x)
+ if (x < 1)
+ fun_l16_n96(x)
+ else
+ fun_l16_n28(x)
+ end
+end
+
+def fun_l15_n615(x)
+ if (x < 1)
+ fun_l16_n166(x)
+ else
+ fun_l16_n417(x)
+ end
+end
+
+def fun_l15_n616(x)
+ if (x < 1)
+ fun_l16_n666(x)
+ else
+ fun_l16_n932(x)
+ end
+end
+
+def fun_l15_n617(x)
+ if (x < 1)
+ fun_l16_n745(x)
+ else
+ fun_l16_n967(x)
+ end
+end
+
+def fun_l15_n618(x)
+ if (x < 1)
+ fun_l16_n5(x)
+ else
+ fun_l16_n769(x)
+ end
+end
+
+def fun_l15_n619(x)
+ if (x < 1)
+ fun_l16_n108(x)
+ else
+ fun_l16_n658(x)
+ end
+end
+
+def fun_l15_n620(x)
+ if (x < 1)
+ fun_l16_n454(x)
+ else
+ fun_l16_n666(x)
+ end
+end
+
+def fun_l15_n621(x)
+ if (x < 1)
+ fun_l16_n756(x)
+ else
+ fun_l16_n580(x)
+ end
+end
+
+def fun_l15_n622(x)
+ if (x < 1)
+ fun_l16_n419(x)
+ else
+ fun_l16_n450(x)
+ end
+end
+
+def fun_l15_n623(x)
+ if (x < 1)
+ fun_l16_n793(x)
+ else
+ fun_l16_n268(x)
+ end
+end
+
+def fun_l15_n624(x)
+ if (x < 1)
+ fun_l16_n78(x)
+ else
+ fun_l16_n311(x)
+ end
+end
+
+def fun_l15_n625(x)
+ if (x < 1)
+ fun_l16_n35(x)
+ else
+ fun_l16_n378(x)
+ end
+end
+
+def fun_l15_n626(x)
+ if (x < 1)
+ fun_l16_n974(x)
+ else
+ fun_l16_n483(x)
+ end
+end
+
+def fun_l15_n627(x)
+ if (x < 1)
+ fun_l16_n67(x)
+ else
+ fun_l16_n497(x)
+ end
+end
+
+def fun_l15_n628(x)
+ if (x < 1)
+ fun_l16_n640(x)
+ else
+ fun_l16_n32(x)
+ end
+end
+
+def fun_l15_n629(x)
+ if (x < 1)
+ fun_l16_n297(x)
+ else
+ fun_l16_n63(x)
+ end
+end
+
+def fun_l15_n630(x)
+ if (x < 1)
+ fun_l16_n546(x)
+ else
+ fun_l16_n931(x)
+ end
+end
+
+def fun_l15_n631(x)
+ if (x < 1)
+ fun_l16_n688(x)
+ else
+ fun_l16_n542(x)
+ end
+end
+
+def fun_l15_n632(x)
+ if (x < 1)
+ fun_l16_n313(x)
+ else
+ fun_l16_n1(x)
+ end
+end
+
+def fun_l15_n633(x)
+ if (x < 1)
+ fun_l16_n743(x)
+ else
+ fun_l16_n382(x)
+ end
+end
+
+def fun_l15_n634(x)
+ if (x < 1)
+ fun_l16_n224(x)
+ else
+ fun_l16_n311(x)
+ end
+end
+
+def fun_l15_n635(x)
+ if (x < 1)
+ fun_l16_n926(x)
+ else
+ fun_l16_n329(x)
+ end
+end
+
+def fun_l15_n636(x)
+ if (x < 1)
+ fun_l16_n735(x)
+ else
+ fun_l16_n759(x)
+ end
+end
+
+def fun_l15_n637(x)
+ if (x < 1)
+ fun_l16_n699(x)
+ else
+ fun_l16_n27(x)
+ end
+end
+
+def fun_l15_n638(x)
+ if (x < 1)
+ fun_l16_n710(x)
+ else
+ fun_l16_n194(x)
+ end
+end
+
+def fun_l15_n639(x)
+ if (x < 1)
+ fun_l16_n245(x)
+ else
+ fun_l16_n950(x)
+ end
+end
+
+def fun_l15_n640(x)
+ if (x < 1)
+ fun_l16_n488(x)
+ else
+ fun_l16_n357(x)
+ end
+end
+
+def fun_l15_n641(x)
+ if (x < 1)
+ fun_l16_n331(x)
+ else
+ fun_l16_n962(x)
+ end
+end
+
+def fun_l15_n642(x)
+ if (x < 1)
+ fun_l16_n144(x)
+ else
+ fun_l16_n877(x)
+ end
+end
+
+def fun_l15_n643(x)
+ if (x < 1)
+ fun_l16_n605(x)
+ else
+ fun_l16_n733(x)
+ end
+end
+
+def fun_l15_n644(x)
+ if (x < 1)
+ fun_l16_n22(x)
+ else
+ fun_l16_n176(x)
+ end
+end
+
+def fun_l15_n645(x)
+ if (x < 1)
+ fun_l16_n934(x)
+ else
+ fun_l16_n351(x)
+ end
+end
+
+def fun_l15_n646(x)
+ if (x < 1)
+ fun_l16_n224(x)
+ else
+ fun_l16_n308(x)
+ end
+end
+
+def fun_l15_n647(x)
+ if (x < 1)
+ fun_l16_n374(x)
+ else
+ fun_l16_n612(x)
+ end
+end
+
+def fun_l15_n648(x)
+ if (x < 1)
+ fun_l16_n105(x)
+ else
+ fun_l16_n563(x)
+ end
+end
+
+def fun_l15_n649(x)
+ if (x < 1)
+ fun_l16_n955(x)
+ else
+ fun_l16_n63(x)
+ end
+end
+
+def fun_l15_n650(x)
+ if (x < 1)
+ fun_l16_n734(x)
+ else
+ fun_l16_n194(x)
+ end
+end
+
+def fun_l15_n651(x)
+ if (x < 1)
+ fun_l16_n237(x)
+ else
+ fun_l16_n425(x)
+ end
+end
+
+def fun_l15_n652(x)
+ if (x < 1)
+ fun_l16_n135(x)
+ else
+ fun_l16_n217(x)
+ end
+end
+
+def fun_l15_n653(x)
+ if (x < 1)
+ fun_l16_n565(x)
+ else
+ fun_l16_n437(x)
+ end
+end
+
+def fun_l15_n654(x)
+ if (x < 1)
+ fun_l16_n471(x)
+ else
+ fun_l16_n426(x)
+ end
+end
+
+def fun_l15_n655(x)
+ if (x < 1)
+ fun_l16_n570(x)
+ else
+ fun_l16_n64(x)
+ end
+end
+
+def fun_l15_n656(x)
+ if (x < 1)
+ fun_l16_n456(x)
+ else
+ fun_l16_n479(x)
+ end
+end
+
+def fun_l15_n657(x)
+ if (x < 1)
+ fun_l16_n446(x)
+ else
+ fun_l16_n362(x)
+ end
+end
+
+def fun_l15_n658(x)
+ if (x < 1)
+ fun_l16_n294(x)
+ else
+ fun_l16_n485(x)
+ end
+end
+
+def fun_l15_n659(x)
+ if (x < 1)
+ fun_l16_n96(x)
+ else
+ fun_l16_n60(x)
+ end
+end
+
+def fun_l15_n660(x)
+ if (x < 1)
+ fun_l16_n436(x)
+ else
+ fun_l16_n12(x)
+ end
+end
+
+def fun_l15_n661(x)
+ if (x < 1)
+ fun_l16_n5(x)
+ else
+ fun_l16_n452(x)
+ end
+end
+
+def fun_l15_n662(x)
+ if (x < 1)
+ fun_l16_n70(x)
+ else
+ fun_l16_n564(x)
+ end
+end
+
+def fun_l15_n663(x)
+ if (x < 1)
+ fun_l16_n92(x)
+ else
+ fun_l16_n333(x)
+ end
+end
+
+def fun_l15_n664(x)
+ if (x < 1)
+ fun_l16_n884(x)
+ else
+ fun_l16_n381(x)
+ end
+end
+
+def fun_l15_n665(x)
+ if (x < 1)
+ fun_l16_n816(x)
+ else
+ fun_l16_n243(x)
+ end
+end
+
+def fun_l15_n666(x)
+ if (x < 1)
+ fun_l16_n680(x)
+ else
+ fun_l16_n306(x)
+ end
+end
+
+def fun_l15_n667(x)
+ if (x < 1)
+ fun_l16_n470(x)
+ else
+ fun_l16_n559(x)
+ end
+end
+
+def fun_l15_n668(x)
+ if (x < 1)
+ fun_l16_n34(x)
+ else
+ fun_l16_n261(x)
+ end
+end
+
+def fun_l15_n669(x)
+ if (x < 1)
+ fun_l16_n644(x)
+ else
+ fun_l16_n389(x)
+ end
+end
+
+def fun_l15_n670(x)
+ if (x < 1)
+ fun_l16_n313(x)
+ else
+ fun_l16_n575(x)
+ end
+end
+
+def fun_l15_n671(x)
+ if (x < 1)
+ fun_l16_n241(x)
+ else
+ fun_l16_n304(x)
+ end
+end
+
+def fun_l15_n672(x)
+ if (x < 1)
+ fun_l16_n280(x)
+ else
+ fun_l16_n996(x)
+ end
+end
+
+def fun_l15_n673(x)
+ if (x < 1)
+ fun_l16_n723(x)
+ else
+ fun_l16_n42(x)
+ end
+end
+
+def fun_l15_n674(x)
+ if (x < 1)
+ fun_l16_n503(x)
+ else
+ fun_l16_n837(x)
+ end
+end
+
+def fun_l15_n675(x)
+ if (x < 1)
+ fun_l16_n105(x)
+ else
+ fun_l16_n815(x)
+ end
+end
+
+def fun_l15_n676(x)
+ if (x < 1)
+ fun_l16_n441(x)
+ else
+ fun_l16_n313(x)
+ end
+end
+
+def fun_l15_n677(x)
+ if (x < 1)
+ fun_l16_n277(x)
+ else
+ fun_l16_n653(x)
+ end
+end
+
+def fun_l15_n678(x)
+ if (x < 1)
+ fun_l16_n105(x)
+ else
+ fun_l16_n907(x)
+ end
+end
+
+def fun_l15_n679(x)
+ if (x < 1)
+ fun_l16_n549(x)
+ else
+ fun_l16_n956(x)
+ end
+end
+
+def fun_l15_n680(x)
+ if (x < 1)
+ fun_l16_n177(x)
+ else
+ fun_l16_n238(x)
+ end
+end
+
+def fun_l15_n681(x)
+ if (x < 1)
+ fun_l16_n931(x)
+ else
+ fun_l16_n278(x)
+ end
+end
+
+def fun_l15_n682(x)
+ if (x < 1)
+ fun_l16_n923(x)
+ else
+ fun_l16_n924(x)
+ end
+end
+
+def fun_l15_n683(x)
+ if (x < 1)
+ fun_l16_n926(x)
+ else
+ fun_l16_n76(x)
+ end
+end
+
+def fun_l15_n684(x)
+ if (x < 1)
+ fun_l16_n828(x)
+ else
+ fun_l16_n961(x)
+ end
+end
+
+def fun_l15_n685(x)
+ if (x < 1)
+ fun_l16_n298(x)
+ else
+ fun_l16_n95(x)
+ end
+end
+
+def fun_l15_n686(x)
+ if (x < 1)
+ fun_l16_n929(x)
+ else
+ fun_l16_n239(x)
+ end
+end
+
+def fun_l15_n687(x)
+ if (x < 1)
+ fun_l16_n488(x)
+ else
+ fun_l16_n543(x)
+ end
+end
+
+def fun_l15_n688(x)
+ if (x < 1)
+ fun_l16_n562(x)
+ else
+ fun_l16_n879(x)
+ end
+end
+
+def fun_l15_n689(x)
+ if (x < 1)
+ fun_l16_n348(x)
+ else
+ fun_l16_n458(x)
+ end
+end
+
+def fun_l15_n690(x)
+ if (x < 1)
+ fun_l16_n431(x)
+ else
+ fun_l16_n653(x)
+ end
+end
+
+def fun_l15_n691(x)
+ if (x < 1)
+ fun_l16_n173(x)
+ else
+ fun_l16_n600(x)
+ end
+end
+
+def fun_l15_n692(x)
+ if (x < 1)
+ fun_l16_n820(x)
+ else
+ fun_l16_n793(x)
+ end
+end
+
+def fun_l15_n693(x)
+ if (x < 1)
+ fun_l16_n611(x)
+ else
+ fun_l16_n308(x)
+ end
+end
+
+def fun_l15_n694(x)
+ if (x < 1)
+ fun_l16_n325(x)
+ else
+ fun_l16_n791(x)
+ end
+end
+
+def fun_l15_n695(x)
+ if (x < 1)
+ fun_l16_n890(x)
+ else
+ fun_l16_n98(x)
+ end
+end
+
+def fun_l15_n696(x)
+ if (x < 1)
+ fun_l16_n803(x)
+ else
+ fun_l16_n890(x)
+ end
+end
+
+def fun_l15_n697(x)
+ if (x < 1)
+ fun_l16_n182(x)
+ else
+ fun_l16_n229(x)
+ end
+end
+
+def fun_l15_n698(x)
+ if (x < 1)
+ fun_l16_n238(x)
+ else
+ fun_l16_n395(x)
+ end
+end
+
+def fun_l15_n699(x)
+ if (x < 1)
+ fun_l16_n349(x)
+ else
+ fun_l16_n903(x)
+ end
+end
+
+def fun_l15_n700(x)
+ if (x < 1)
+ fun_l16_n328(x)
+ else
+ fun_l16_n664(x)
+ end
+end
+
+def fun_l15_n701(x)
+ if (x < 1)
+ fun_l16_n924(x)
+ else
+ fun_l16_n415(x)
+ end
+end
+
+def fun_l15_n702(x)
+ if (x < 1)
+ fun_l16_n504(x)
+ else
+ fun_l16_n180(x)
+ end
+end
+
+def fun_l15_n703(x)
+ if (x < 1)
+ fun_l16_n754(x)
+ else
+ fun_l16_n580(x)
+ end
+end
+
+def fun_l15_n704(x)
+ if (x < 1)
+ fun_l16_n686(x)
+ else
+ fun_l16_n75(x)
+ end
+end
+
+def fun_l15_n705(x)
+ if (x < 1)
+ fun_l16_n295(x)
+ else
+ fun_l16_n789(x)
+ end
+end
+
+def fun_l15_n706(x)
+ if (x < 1)
+ fun_l16_n796(x)
+ else
+ fun_l16_n628(x)
+ end
+end
+
+def fun_l15_n707(x)
+ if (x < 1)
+ fun_l16_n603(x)
+ else
+ fun_l16_n864(x)
+ end
+end
+
+def fun_l15_n708(x)
+ if (x < 1)
+ fun_l16_n420(x)
+ else
+ fun_l16_n506(x)
+ end
+end
+
+def fun_l15_n709(x)
+ if (x < 1)
+ fun_l16_n417(x)
+ else
+ fun_l16_n677(x)
+ end
+end
+
+def fun_l15_n710(x)
+ if (x < 1)
+ fun_l16_n484(x)
+ else
+ fun_l16_n210(x)
+ end
+end
+
+def fun_l15_n711(x)
+ if (x < 1)
+ fun_l16_n127(x)
+ else
+ fun_l16_n423(x)
+ end
+end
+
+def fun_l15_n712(x)
+ if (x < 1)
+ fun_l16_n395(x)
+ else
+ fun_l16_n75(x)
+ end
+end
+
+def fun_l15_n713(x)
+ if (x < 1)
+ fun_l16_n388(x)
+ else
+ fun_l16_n261(x)
+ end
+end
+
+def fun_l15_n714(x)
+ if (x < 1)
+ fun_l16_n508(x)
+ else
+ fun_l16_n160(x)
+ end
+end
+
+def fun_l15_n715(x)
+ if (x < 1)
+ fun_l16_n468(x)
+ else
+ fun_l16_n784(x)
+ end
+end
+
+def fun_l15_n716(x)
+ if (x < 1)
+ fun_l16_n156(x)
+ else
+ fun_l16_n769(x)
+ end
+end
+
+def fun_l15_n717(x)
+ if (x < 1)
+ fun_l16_n219(x)
+ else
+ fun_l16_n618(x)
+ end
+end
+
+def fun_l15_n718(x)
+ if (x < 1)
+ fun_l16_n921(x)
+ else
+ fun_l16_n83(x)
+ end
+end
+
+def fun_l15_n719(x)
+ if (x < 1)
+ fun_l16_n262(x)
+ else
+ fun_l16_n170(x)
+ end
+end
+
+def fun_l15_n720(x)
+ if (x < 1)
+ fun_l16_n420(x)
+ else
+ fun_l16_n504(x)
+ end
+end
+
+def fun_l15_n721(x)
+ if (x < 1)
+ fun_l16_n485(x)
+ else
+ fun_l16_n782(x)
+ end
+end
+
+def fun_l15_n722(x)
+ if (x < 1)
+ fun_l16_n607(x)
+ else
+ fun_l16_n706(x)
+ end
+end
+
+def fun_l15_n723(x)
+ if (x < 1)
+ fun_l16_n116(x)
+ else
+ fun_l16_n73(x)
+ end
+end
+
+def fun_l15_n724(x)
+ if (x < 1)
+ fun_l16_n946(x)
+ else
+ fun_l16_n694(x)
+ end
+end
+
+def fun_l15_n725(x)
+ if (x < 1)
+ fun_l16_n73(x)
+ else
+ fun_l16_n223(x)
+ end
+end
+
+def fun_l15_n726(x)
+ if (x < 1)
+ fun_l16_n54(x)
+ else
+ fun_l16_n681(x)
+ end
+end
+
+def fun_l15_n727(x)
+ if (x < 1)
+ fun_l16_n474(x)
+ else
+ fun_l16_n339(x)
+ end
+end
+
+def fun_l15_n728(x)
+ if (x < 1)
+ fun_l16_n780(x)
+ else
+ fun_l16_n364(x)
+ end
+end
+
+def fun_l15_n729(x)
+ if (x < 1)
+ fun_l16_n537(x)
+ else
+ fun_l16_n1(x)
+ end
+end
+
+def fun_l15_n730(x)
+ if (x < 1)
+ fun_l16_n81(x)
+ else
+ fun_l16_n591(x)
+ end
+end
+
+def fun_l15_n731(x)
+ if (x < 1)
+ fun_l16_n631(x)
+ else
+ fun_l16_n626(x)
+ end
+end
+
+def fun_l15_n732(x)
+ if (x < 1)
+ fun_l16_n904(x)
+ else
+ fun_l16_n988(x)
+ end
+end
+
+def fun_l15_n733(x)
+ if (x < 1)
+ fun_l16_n933(x)
+ else
+ fun_l16_n761(x)
+ end
+end
+
+def fun_l15_n734(x)
+ if (x < 1)
+ fun_l16_n687(x)
+ else
+ fun_l16_n611(x)
+ end
+end
+
+def fun_l15_n735(x)
+ if (x < 1)
+ fun_l16_n197(x)
+ else
+ fun_l16_n210(x)
+ end
+end
+
+def fun_l15_n736(x)
+ if (x < 1)
+ fun_l16_n227(x)
+ else
+ fun_l16_n82(x)
+ end
+end
+
+def fun_l15_n737(x)
+ if (x < 1)
+ fun_l16_n981(x)
+ else
+ fun_l16_n18(x)
+ end
+end
+
+def fun_l15_n738(x)
+ if (x < 1)
+ fun_l16_n673(x)
+ else
+ fun_l16_n452(x)
+ end
+end
+
+def fun_l15_n739(x)
+ if (x < 1)
+ fun_l16_n225(x)
+ else
+ fun_l16_n555(x)
+ end
+end
+
+def fun_l15_n740(x)
+ if (x < 1)
+ fun_l16_n409(x)
+ else
+ fun_l16_n29(x)
+ end
+end
+
+def fun_l15_n741(x)
+ if (x < 1)
+ fun_l16_n550(x)
+ else
+ fun_l16_n880(x)
+ end
+end
+
+def fun_l15_n742(x)
+ if (x < 1)
+ fun_l16_n930(x)
+ else
+ fun_l16_n280(x)
+ end
+end
+
+def fun_l15_n743(x)
+ if (x < 1)
+ fun_l16_n622(x)
+ else
+ fun_l16_n438(x)
+ end
+end
+
+def fun_l15_n744(x)
+ if (x < 1)
+ fun_l16_n874(x)
+ else
+ fun_l16_n921(x)
+ end
+end
+
+def fun_l15_n745(x)
+ if (x < 1)
+ fun_l16_n337(x)
+ else
+ fun_l16_n879(x)
+ end
+end
+
+def fun_l15_n746(x)
+ if (x < 1)
+ fun_l16_n668(x)
+ else
+ fun_l16_n858(x)
+ end
+end
+
+def fun_l15_n747(x)
+ if (x < 1)
+ fun_l16_n588(x)
+ else
+ fun_l16_n433(x)
+ end
+end
+
+def fun_l15_n748(x)
+ if (x < 1)
+ fun_l16_n263(x)
+ else
+ fun_l16_n389(x)
+ end
+end
+
+def fun_l15_n749(x)
+ if (x < 1)
+ fun_l16_n79(x)
+ else
+ fun_l16_n218(x)
+ end
+end
+
+def fun_l15_n750(x)
+ if (x < 1)
+ fun_l16_n586(x)
+ else
+ fun_l16_n426(x)
+ end
+end
+
+def fun_l15_n751(x)
+ if (x < 1)
+ fun_l16_n29(x)
+ else
+ fun_l16_n183(x)
+ end
+end
+
+def fun_l15_n752(x)
+ if (x < 1)
+ fun_l16_n423(x)
+ else
+ fun_l16_n994(x)
+ end
+end
+
+def fun_l15_n753(x)
+ if (x < 1)
+ fun_l16_n176(x)
+ else
+ fun_l16_n425(x)
+ end
+end
+
+def fun_l15_n754(x)
+ if (x < 1)
+ fun_l16_n58(x)
+ else
+ fun_l16_n980(x)
+ end
+end
+
+def fun_l15_n755(x)
+ if (x < 1)
+ fun_l16_n333(x)
+ else
+ fun_l16_n949(x)
+ end
+end
+
+def fun_l15_n756(x)
+ if (x < 1)
+ fun_l16_n846(x)
+ else
+ fun_l16_n449(x)
+ end
+end
+
+def fun_l15_n757(x)
+ if (x < 1)
+ fun_l16_n341(x)
+ else
+ fun_l16_n200(x)
+ end
+end
+
+def fun_l15_n758(x)
+ if (x < 1)
+ fun_l16_n32(x)
+ else
+ fun_l16_n271(x)
+ end
+end
+
+def fun_l15_n759(x)
+ if (x < 1)
+ fun_l16_n654(x)
+ else
+ fun_l16_n978(x)
+ end
+end
+
+def fun_l15_n760(x)
+ if (x < 1)
+ fun_l16_n438(x)
+ else
+ fun_l16_n426(x)
+ end
+end
+
+def fun_l15_n761(x)
+ if (x < 1)
+ fun_l16_n218(x)
+ else
+ fun_l16_n393(x)
+ end
+end
+
+def fun_l15_n762(x)
+ if (x < 1)
+ fun_l16_n873(x)
+ else
+ fun_l16_n231(x)
+ end
+end
+
+def fun_l15_n763(x)
+ if (x < 1)
+ fun_l16_n957(x)
+ else
+ fun_l16_n801(x)
+ end
+end
+
+def fun_l15_n764(x)
+ if (x < 1)
+ fun_l16_n571(x)
+ else
+ fun_l16_n369(x)
+ end
+end
+
+def fun_l15_n765(x)
+ if (x < 1)
+ fun_l16_n806(x)
+ else
+ fun_l16_n527(x)
+ end
+end
+
+def fun_l15_n766(x)
+ if (x < 1)
+ fun_l16_n511(x)
+ else
+ fun_l16_n911(x)
+ end
+end
+
+def fun_l15_n767(x)
+ if (x < 1)
+ fun_l16_n589(x)
+ else
+ fun_l16_n468(x)
+ end
+end
+
+def fun_l15_n768(x)
+ if (x < 1)
+ fun_l16_n846(x)
+ else
+ fun_l16_n325(x)
+ end
+end
+
+def fun_l15_n769(x)
+ if (x < 1)
+ fun_l16_n350(x)
+ else
+ fun_l16_n268(x)
+ end
+end
+
+def fun_l15_n770(x)
+ if (x < 1)
+ fun_l16_n200(x)
+ else
+ fun_l16_n151(x)
+ end
+end
+
+def fun_l15_n771(x)
+ if (x < 1)
+ fun_l16_n246(x)
+ else
+ fun_l16_n442(x)
+ end
+end
+
+def fun_l15_n772(x)
+ if (x < 1)
+ fun_l16_n768(x)
+ else
+ fun_l16_n303(x)
+ end
+end
+
+def fun_l15_n773(x)
+ if (x < 1)
+ fun_l16_n414(x)
+ else
+ fun_l16_n857(x)
+ end
+end
+
+def fun_l15_n774(x)
+ if (x < 1)
+ fun_l16_n654(x)
+ else
+ fun_l16_n151(x)
+ end
+end
+
+def fun_l15_n775(x)
+ if (x < 1)
+ fun_l16_n283(x)
+ else
+ fun_l16_n565(x)
+ end
+end
+
+def fun_l15_n776(x)
+ if (x < 1)
+ fun_l16_n375(x)
+ else
+ fun_l16_n897(x)
+ end
+end
+
+def fun_l15_n777(x)
+ if (x < 1)
+ fun_l16_n711(x)
+ else
+ fun_l16_n487(x)
+ end
+end
+
+def fun_l15_n778(x)
+ if (x < 1)
+ fun_l16_n445(x)
+ else
+ fun_l16_n99(x)
+ end
+end
+
+def fun_l15_n779(x)
+ if (x < 1)
+ fun_l16_n320(x)
+ else
+ fun_l16_n614(x)
+ end
+end
+
+def fun_l15_n780(x)
+ if (x < 1)
+ fun_l16_n330(x)
+ else
+ fun_l16_n478(x)
+ end
+end
+
+def fun_l15_n781(x)
+ if (x < 1)
+ fun_l16_n680(x)
+ else
+ fun_l16_n882(x)
+ end
+end
+
+def fun_l15_n782(x)
+ if (x < 1)
+ fun_l16_n799(x)
+ else
+ fun_l16_n511(x)
+ end
+end
+
+def fun_l15_n783(x)
+ if (x < 1)
+ fun_l16_n630(x)
+ else
+ fun_l16_n946(x)
+ end
+end
+
+def fun_l15_n784(x)
+ if (x < 1)
+ fun_l16_n867(x)
+ else
+ fun_l16_n4(x)
+ end
+end
+
+def fun_l15_n785(x)
+ if (x < 1)
+ fun_l16_n154(x)
+ else
+ fun_l16_n400(x)
+ end
+end
+
+def fun_l15_n786(x)
+ if (x < 1)
+ fun_l16_n166(x)
+ else
+ fun_l16_n224(x)
+ end
+end
+
+def fun_l15_n787(x)
+ if (x < 1)
+ fun_l16_n120(x)
+ else
+ fun_l16_n518(x)
+ end
+end
+
+def fun_l15_n788(x)
+ if (x < 1)
+ fun_l16_n648(x)
+ else
+ fun_l16_n56(x)
+ end
+end
+
+def fun_l15_n789(x)
+ if (x < 1)
+ fun_l16_n965(x)
+ else
+ fun_l16_n760(x)
+ end
+end
+
+def fun_l15_n790(x)
+ if (x < 1)
+ fun_l16_n880(x)
+ else
+ fun_l16_n809(x)
+ end
+end
+
+def fun_l15_n791(x)
+ if (x < 1)
+ fun_l16_n836(x)
+ else
+ fun_l16_n61(x)
+ end
+end
+
+def fun_l15_n792(x)
+ if (x < 1)
+ fun_l16_n874(x)
+ else
+ fun_l16_n559(x)
+ end
+end
+
+def fun_l15_n793(x)
+ if (x < 1)
+ fun_l16_n896(x)
+ else
+ fun_l16_n72(x)
+ end
+end
+
+def fun_l15_n794(x)
+ if (x < 1)
+ fun_l16_n994(x)
+ else
+ fun_l16_n411(x)
+ end
+end
+
+def fun_l15_n795(x)
+ if (x < 1)
+ fun_l16_n289(x)
+ else
+ fun_l16_n151(x)
+ end
+end
+
+def fun_l15_n796(x)
+ if (x < 1)
+ fun_l16_n190(x)
+ else
+ fun_l16_n693(x)
+ end
+end
+
+def fun_l15_n797(x)
+ if (x < 1)
+ fun_l16_n320(x)
+ else
+ fun_l16_n955(x)
+ end
+end
+
+def fun_l15_n798(x)
+ if (x < 1)
+ fun_l16_n572(x)
+ else
+ fun_l16_n626(x)
+ end
+end
+
+def fun_l15_n799(x)
+ if (x < 1)
+ fun_l16_n35(x)
+ else
+ fun_l16_n838(x)
+ end
+end
+
+def fun_l15_n800(x)
+ if (x < 1)
+ fun_l16_n423(x)
+ else
+ fun_l16_n834(x)
+ end
+end
+
+def fun_l15_n801(x)
+ if (x < 1)
+ fun_l16_n964(x)
+ else
+ fun_l16_n824(x)
+ end
+end
+
+def fun_l15_n802(x)
+ if (x < 1)
+ fun_l16_n77(x)
+ else
+ fun_l16_n62(x)
+ end
+end
+
+def fun_l15_n803(x)
+ if (x < 1)
+ fun_l16_n226(x)
+ else
+ fun_l16_n373(x)
+ end
+end
+
+def fun_l15_n804(x)
+ if (x < 1)
+ fun_l16_n832(x)
+ else
+ fun_l16_n915(x)
+ end
+end
+
+def fun_l15_n805(x)
+ if (x < 1)
+ fun_l16_n421(x)
+ else
+ fun_l16_n621(x)
+ end
+end
+
+def fun_l15_n806(x)
+ if (x < 1)
+ fun_l16_n303(x)
+ else
+ fun_l16_n713(x)
+ end
+end
+
+def fun_l15_n807(x)
+ if (x < 1)
+ fun_l16_n393(x)
+ else
+ fun_l16_n698(x)
+ end
+end
+
+def fun_l15_n808(x)
+ if (x < 1)
+ fun_l16_n303(x)
+ else
+ fun_l16_n341(x)
+ end
+end
+
+def fun_l15_n809(x)
+ if (x < 1)
+ fun_l16_n116(x)
+ else
+ fun_l16_n976(x)
+ end
+end
+
+def fun_l15_n810(x)
+ if (x < 1)
+ fun_l16_n873(x)
+ else
+ fun_l16_n822(x)
+ end
+end
+
+def fun_l15_n811(x)
+ if (x < 1)
+ fun_l16_n358(x)
+ else
+ fun_l16_n334(x)
+ end
+end
+
+def fun_l15_n812(x)
+ if (x < 1)
+ fun_l16_n599(x)
+ else
+ fun_l16_n527(x)
+ end
+end
+
+def fun_l15_n813(x)
+ if (x < 1)
+ fun_l16_n842(x)
+ else
+ fun_l16_n791(x)
+ end
+end
+
+def fun_l15_n814(x)
+ if (x < 1)
+ fun_l16_n45(x)
+ else
+ fun_l16_n280(x)
+ end
+end
+
+def fun_l15_n815(x)
+ if (x < 1)
+ fun_l16_n187(x)
+ else
+ fun_l16_n151(x)
+ end
+end
+
+def fun_l15_n816(x)
+ if (x < 1)
+ fun_l16_n8(x)
+ else
+ fun_l16_n409(x)
+ end
+end
+
+def fun_l15_n817(x)
+ if (x < 1)
+ fun_l16_n670(x)
+ else
+ fun_l16_n569(x)
+ end
+end
+
+def fun_l15_n818(x)
+ if (x < 1)
+ fun_l16_n344(x)
+ else
+ fun_l16_n618(x)
+ end
+end
+
+def fun_l15_n819(x)
+ if (x < 1)
+ fun_l16_n659(x)
+ else
+ fun_l16_n321(x)
+ end
+end
+
+def fun_l15_n820(x)
+ if (x < 1)
+ fun_l16_n890(x)
+ else
+ fun_l16_n911(x)
+ end
+end
+
+def fun_l15_n821(x)
+ if (x < 1)
+ fun_l16_n360(x)
+ else
+ fun_l16_n742(x)
+ end
+end
+
+def fun_l15_n822(x)
+ if (x < 1)
+ fun_l16_n166(x)
+ else
+ fun_l16_n803(x)
+ end
+end
+
+def fun_l15_n823(x)
+ if (x < 1)
+ fun_l16_n765(x)
+ else
+ fun_l16_n958(x)
+ end
+end
+
+def fun_l15_n824(x)
+ if (x < 1)
+ fun_l16_n439(x)
+ else
+ fun_l16_n931(x)
+ end
+end
+
+def fun_l15_n825(x)
+ if (x < 1)
+ fun_l16_n740(x)
+ else
+ fun_l16_n901(x)
+ end
+end
+
+def fun_l15_n826(x)
+ if (x < 1)
+ fun_l16_n223(x)
+ else
+ fun_l16_n878(x)
+ end
+end
+
+def fun_l15_n827(x)
+ if (x < 1)
+ fun_l16_n969(x)
+ else
+ fun_l16_n553(x)
+ end
+end
+
+def fun_l15_n828(x)
+ if (x < 1)
+ fun_l16_n42(x)
+ else
+ fun_l16_n915(x)
+ end
+end
+
+def fun_l15_n829(x)
+ if (x < 1)
+ fun_l16_n386(x)
+ else
+ fun_l16_n430(x)
+ end
+end
+
+def fun_l15_n830(x)
+ if (x < 1)
+ fun_l16_n164(x)
+ else
+ fun_l16_n337(x)
+ end
+end
+
+def fun_l15_n831(x)
+ if (x < 1)
+ fun_l16_n465(x)
+ else
+ fun_l16_n898(x)
+ end
+end
+
+def fun_l15_n832(x)
+ if (x < 1)
+ fun_l16_n145(x)
+ else
+ fun_l16_n688(x)
+ end
+end
+
+def fun_l15_n833(x)
+ if (x < 1)
+ fun_l16_n238(x)
+ else
+ fun_l16_n624(x)
+ end
+end
+
+def fun_l15_n834(x)
+ if (x < 1)
+ fun_l16_n973(x)
+ else
+ fun_l16_n507(x)
+ end
+end
+
+def fun_l15_n835(x)
+ if (x < 1)
+ fun_l16_n24(x)
+ else
+ fun_l16_n607(x)
+ end
+end
+
+def fun_l15_n836(x)
+ if (x < 1)
+ fun_l16_n307(x)
+ else
+ fun_l16_n265(x)
+ end
+end
+
+def fun_l15_n837(x)
+ if (x < 1)
+ fun_l16_n91(x)
+ else
+ fun_l16_n543(x)
+ end
+end
+
+def fun_l15_n838(x)
+ if (x < 1)
+ fun_l16_n544(x)
+ else
+ fun_l16_n397(x)
+ end
+end
+
+def fun_l15_n839(x)
+ if (x < 1)
+ fun_l16_n121(x)
+ else
+ fun_l16_n503(x)
+ end
+end
+
+def fun_l15_n840(x)
+ if (x < 1)
+ fun_l16_n806(x)
+ else
+ fun_l16_n831(x)
+ end
+end
+
+def fun_l15_n841(x)
+ if (x < 1)
+ fun_l16_n629(x)
+ else
+ fun_l16_n553(x)
+ end
+end
+
+def fun_l15_n842(x)
+ if (x < 1)
+ fun_l16_n674(x)
+ else
+ fun_l16_n945(x)
+ end
+end
+
+def fun_l15_n843(x)
+ if (x < 1)
+ fun_l16_n409(x)
+ else
+ fun_l16_n469(x)
+ end
+end
+
+def fun_l15_n844(x)
+ if (x < 1)
+ fun_l16_n779(x)
+ else
+ fun_l16_n168(x)
+ end
+end
+
+def fun_l15_n845(x)
+ if (x < 1)
+ fun_l16_n258(x)
+ else
+ fun_l16_n501(x)
+ end
+end
+
+def fun_l15_n846(x)
+ if (x < 1)
+ fun_l16_n408(x)
+ else
+ fun_l16_n211(x)
+ end
+end
+
+def fun_l15_n847(x)
+ if (x < 1)
+ fun_l16_n844(x)
+ else
+ fun_l16_n458(x)
+ end
+end
+
+def fun_l15_n848(x)
+ if (x < 1)
+ fun_l16_n565(x)
+ else
+ fun_l16_n177(x)
+ end
+end
+
+def fun_l15_n849(x)
+ if (x < 1)
+ fun_l16_n111(x)
+ else
+ fun_l16_n995(x)
+ end
+end
+
+def fun_l15_n850(x)
+ if (x < 1)
+ fun_l16_n883(x)
+ else
+ fun_l16_n776(x)
+ end
+end
+
+def fun_l15_n851(x)
+ if (x < 1)
+ fun_l16_n821(x)
+ else
+ fun_l16_n352(x)
+ end
+end
+
+def fun_l15_n852(x)
+ if (x < 1)
+ fun_l16_n977(x)
+ else
+ fun_l16_n520(x)
+ end
+end
+
+def fun_l15_n853(x)
+ if (x < 1)
+ fun_l16_n602(x)
+ else
+ fun_l16_n88(x)
+ end
+end
+
+def fun_l15_n854(x)
+ if (x < 1)
+ fun_l16_n819(x)
+ else
+ fun_l16_n177(x)
+ end
+end
+
+def fun_l15_n855(x)
+ if (x < 1)
+ fun_l16_n878(x)
+ else
+ fun_l16_n648(x)
+ end
+end
+
+def fun_l15_n856(x)
+ if (x < 1)
+ fun_l16_n69(x)
+ else
+ fun_l16_n134(x)
+ end
+end
+
+def fun_l15_n857(x)
+ if (x < 1)
+ fun_l16_n728(x)
+ else
+ fun_l16_n282(x)
+ end
+end
+
+def fun_l15_n858(x)
+ if (x < 1)
+ fun_l16_n152(x)
+ else
+ fun_l16_n725(x)
+ end
+end
+
+def fun_l15_n859(x)
+ if (x < 1)
+ fun_l16_n140(x)
+ else
+ fun_l16_n12(x)
+ end
+end
+
+def fun_l15_n860(x)
+ if (x < 1)
+ fun_l16_n691(x)
+ else
+ fun_l16_n159(x)
+ end
+end
+
+def fun_l15_n861(x)
+ if (x < 1)
+ fun_l16_n366(x)
+ else
+ fun_l16_n97(x)
+ end
+end
+
+def fun_l15_n862(x)
+ if (x < 1)
+ fun_l16_n812(x)
+ else
+ fun_l16_n178(x)
+ end
+end
+
+def fun_l15_n863(x)
+ if (x < 1)
+ fun_l16_n491(x)
+ else
+ fun_l16_n167(x)
+ end
+end
+
+def fun_l15_n864(x)
+ if (x < 1)
+ fun_l16_n280(x)
+ else
+ fun_l16_n463(x)
+ end
+end
+
+def fun_l15_n865(x)
+ if (x < 1)
+ fun_l16_n405(x)
+ else
+ fun_l16_n108(x)
+ end
+end
+
+def fun_l15_n866(x)
+ if (x < 1)
+ fun_l16_n956(x)
+ else
+ fun_l16_n840(x)
+ end
+end
+
+def fun_l15_n867(x)
+ if (x < 1)
+ fun_l16_n866(x)
+ else
+ fun_l16_n291(x)
+ end
+end
+
+def fun_l15_n868(x)
+ if (x < 1)
+ fun_l16_n176(x)
+ else
+ fun_l16_n192(x)
+ end
+end
+
+def fun_l15_n869(x)
+ if (x < 1)
+ fun_l16_n833(x)
+ else
+ fun_l16_n503(x)
+ end
+end
+
+def fun_l15_n870(x)
+ if (x < 1)
+ fun_l16_n648(x)
+ else
+ fun_l16_n778(x)
+ end
+end
+
+def fun_l15_n871(x)
+ if (x < 1)
+ fun_l16_n237(x)
+ else
+ fun_l16_n206(x)
+ end
+end
+
+def fun_l15_n872(x)
+ if (x < 1)
+ fun_l16_n676(x)
+ else
+ fun_l16_n868(x)
+ end
+end
+
+def fun_l15_n873(x)
+ if (x < 1)
+ fun_l16_n547(x)
+ else
+ fun_l16_n731(x)
+ end
+end
+
+def fun_l15_n874(x)
+ if (x < 1)
+ fun_l16_n870(x)
+ else
+ fun_l16_n43(x)
+ end
+end
+
+def fun_l15_n875(x)
+ if (x < 1)
+ fun_l16_n246(x)
+ else
+ fun_l16_n654(x)
+ end
+end
+
+def fun_l15_n876(x)
+ if (x < 1)
+ fun_l16_n570(x)
+ else
+ fun_l16_n842(x)
+ end
+end
+
+def fun_l15_n877(x)
+ if (x < 1)
+ fun_l16_n272(x)
+ else
+ fun_l16_n784(x)
+ end
+end
+
+def fun_l15_n878(x)
+ if (x < 1)
+ fun_l16_n702(x)
+ else
+ fun_l16_n758(x)
+ end
+end
+
+def fun_l15_n879(x)
+ if (x < 1)
+ fun_l16_n691(x)
+ else
+ fun_l16_n303(x)
+ end
+end
+
+def fun_l15_n880(x)
+ if (x < 1)
+ fun_l16_n944(x)
+ else
+ fun_l16_n449(x)
+ end
+end
+
+def fun_l15_n881(x)
+ if (x < 1)
+ fun_l16_n741(x)
+ else
+ fun_l16_n254(x)
+ end
+end
+
+def fun_l15_n882(x)
+ if (x < 1)
+ fun_l16_n195(x)
+ else
+ fun_l16_n294(x)
+ end
+end
+
+def fun_l15_n883(x)
+ if (x < 1)
+ fun_l16_n776(x)
+ else
+ fun_l16_n147(x)
+ end
+end
+
+def fun_l15_n884(x)
+ if (x < 1)
+ fun_l16_n145(x)
+ else
+ fun_l16_n856(x)
+ end
+end
+
+def fun_l15_n885(x)
+ if (x < 1)
+ fun_l16_n671(x)
+ else
+ fun_l16_n429(x)
+ end
+end
+
+def fun_l15_n886(x)
+ if (x < 1)
+ fun_l16_n72(x)
+ else
+ fun_l16_n455(x)
+ end
+end
+
+def fun_l15_n887(x)
+ if (x < 1)
+ fun_l16_n775(x)
+ else
+ fun_l16_n43(x)
+ end
+end
+
+def fun_l15_n888(x)
+ if (x < 1)
+ fun_l16_n936(x)
+ else
+ fun_l16_n642(x)
+ end
+end
+
+def fun_l15_n889(x)
+ if (x < 1)
+ fun_l16_n794(x)
+ else
+ fun_l16_n277(x)
+ end
+end
+
+def fun_l15_n890(x)
+ if (x < 1)
+ fun_l16_n72(x)
+ else
+ fun_l16_n450(x)
+ end
+end
+
+def fun_l15_n891(x)
+ if (x < 1)
+ fun_l16_n417(x)
+ else
+ fun_l16_n5(x)
+ end
+end
+
+def fun_l15_n892(x)
+ if (x < 1)
+ fun_l16_n69(x)
+ else
+ fun_l16_n355(x)
+ end
+end
+
+def fun_l15_n893(x)
+ if (x < 1)
+ fun_l16_n352(x)
+ else
+ fun_l16_n635(x)
+ end
+end
+
+def fun_l15_n894(x)
+ if (x < 1)
+ fun_l16_n168(x)
+ else
+ fun_l16_n16(x)
+ end
+end
+
+def fun_l15_n895(x)
+ if (x < 1)
+ fun_l16_n922(x)
+ else
+ fun_l16_n440(x)
+ end
+end
+
+def fun_l15_n896(x)
+ if (x < 1)
+ fun_l16_n808(x)
+ else
+ fun_l16_n896(x)
+ end
+end
+
+def fun_l15_n897(x)
+ if (x < 1)
+ fun_l16_n736(x)
+ else
+ fun_l16_n596(x)
+ end
+end
+
+def fun_l15_n898(x)
+ if (x < 1)
+ fun_l16_n886(x)
+ else
+ fun_l16_n386(x)
+ end
+end
+
+def fun_l15_n899(x)
+ if (x < 1)
+ fun_l16_n374(x)
+ else
+ fun_l16_n746(x)
+ end
+end
+
+def fun_l15_n900(x)
+ if (x < 1)
+ fun_l16_n623(x)
+ else
+ fun_l16_n329(x)
+ end
+end
+
+def fun_l15_n901(x)
+ if (x < 1)
+ fun_l16_n313(x)
+ else
+ fun_l16_n102(x)
+ end
+end
+
+def fun_l15_n902(x)
+ if (x < 1)
+ fun_l16_n234(x)
+ else
+ fun_l16_n425(x)
+ end
+end
+
+def fun_l15_n903(x)
+ if (x < 1)
+ fun_l16_n836(x)
+ else
+ fun_l16_n492(x)
+ end
+end
+
+def fun_l15_n904(x)
+ if (x < 1)
+ fun_l16_n690(x)
+ else
+ fun_l16_n241(x)
+ end
+end
+
+def fun_l15_n905(x)
+ if (x < 1)
+ fun_l16_n129(x)
+ else
+ fun_l16_n57(x)
+ end
+end
+
+def fun_l15_n906(x)
+ if (x < 1)
+ fun_l16_n50(x)
+ else
+ fun_l16_n24(x)
+ end
+end
+
+def fun_l15_n907(x)
+ if (x < 1)
+ fun_l16_n609(x)
+ else
+ fun_l16_n4(x)
+ end
+end
+
+def fun_l15_n908(x)
+ if (x < 1)
+ fun_l16_n483(x)
+ else
+ fun_l16_n708(x)
+ end
+end
+
+def fun_l15_n909(x)
+ if (x < 1)
+ fun_l16_n656(x)
+ else
+ fun_l16_n234(x)
+ end
+end
+
+def fun_l15_n910(x)
+ if (x < 1)
+ fun_l16_n945(x)
+ else
+ fun_l16_n753(x)
+ end
+end
+
+def fun_l15_n911(x)
+ if (x < 1)
+ fun_l16_n152(x)
+ else
+ fun_l16_n739(x)
+ end
+end
+
+def fun_l15_n912(x)
+ if (x < 1)
+ fun_l16_n855(x)
+ else
+ fun_l16_n518(x)
+ end
+end
+
+def fun_l15_n913(x)
+ if (x < 1)
+ fun_l16_n295(x)
+ else
+ fun_l16_n719(x)
+ end
+end
+
+def fun_l15_n914(x)
+ if (x < 1)
+ fun_l16_n442(x)
+ else
+ fun_l16_n803(x)
+ end
+end
+
+def fun_l15_n915(x)
+ if (x < 1)
+ fun_l16_n672(x)
+ else
+ fun_l16_n935(x)
+ end
+end
+
+def fun_l15_n916(x)
+ if (x < 1)
+ fun_l16_n908(x)
+ else
+ fun_l16_n900(x)
+ end
+end
+
+def fun_l15_n917(x)
+ if (x < 1)
+ fun_l16_n853(x)
+ else
+ fun_l16_n896(x)
+ end
+end
+
+def fun_l15_n918(x)
+ if (x < 1)
+ fun_l16_n90(x)
+ else
+ fun_l16_n56(x)
+ end
+end
+
+def fun_l15_n919(x)
+ if (x < 1)
+ fun_l16_n944(x)
+ else
+ fun_l16_n763(x)
+ end
+end
+
+def fun_l15_n920(x)
+ if (x < 1)
+ fun_l16_n303(x)
+ else
+ fun_l16_n328(x)
+ end
+end
+
+def fun_l15_n921(x)
+ if (x < 1)
+ fun_l16_n599(x)
+ else
+ fun_l16_n648(x)
+ end
+end
+
+def fun_l15_n922(x)
+ if (x < 1)
+ fun_l16_n113(x)
+ else
+ fun_l16_n665(x)
+ end
+end
+
+def fun_l15_n923(x)
+ if (x < 1)
+ fun_l16_n97(x)
+ else
+ fun_l16_n757(x)
+ end
+end
+
+def fun_l15_n924(x)
+ if (x < 1)
+ fun_l16_n815(x)
+ else
+ fun_l16_n821(x)
+ end
+end
+
+def fun_l15_n925(x)
+ if (x < 1)
+ fun_l16_n146(x)
+ else
+ fun_l16_n970(x)
+ end
+end
+
+def fun_l15_n926(x)
+ if (x < 1)
+ fun_l16_n74(x)
+ else
+ fun_l16_n203(x)
+ end
+end
+
+def fun_l15_n927(x)
+ if (x < 1)
+ fun_l16_n573(x)
+ else
+ fun_l16_n763(x)
+ end
+end
+
+def fun_l15_n928(x)
+ if (x < 1)
+ fun_l16_n656(x)
+ else
+ fun_l16_n691(x)
+ end
+end
+
+def fun_l15_n929(x)
+ if (x < 1)
+ fun_l16_n240(x)
+ else
+ fun_l16_n536(x)
+ end
+end
+
+def fun_l15_n930(x)
+ if (x < 1)
+ fun_l16_n168(x)
+ else
+ fun_l16_n145(x)
+ end
+end
+
+def fun_l15_n931(x)
+ if (x < 1)
+ fun_l16_n502(x)
+ else
+ fun_l16_n603(x)
+ end
+end
+
+def fun_l15_n932(x)
+ if (x < 1)
+ fun_l16_n998(x)
+ else
+ fun_l16_n259(x)
+ end
+end
+
+def fun_l15_n933(x)
+ if (x < 1)
+ fun_l16_n633(x)
+ else
+ fun_l16_n66(x)
+ end
+end
+
+def fun_l15_n934(x)
+ if (x < 1)
+ fun_l16_n657(x)
+ else
+ fun_l16_n727(x)
+ end
+end
+
+def fun_l15_n935(x)
+ if (x < 1)
+ fun_l16_n641(x)
+ else
+ fun_l16_n975(x)
+ end
+end
+
+def fun_l15_n936(x)
+ if (x < 1)
+ fun_l16_n610(x)
+ else
+ fun_l16_n256(x)
+ end
+end
+
+def fun_l15_n937(x)
+ if (x < 1)
+ fun_l16_n760(x)
+ else
+ fun_l16_n304(x)
+ end
+end
+
+def fun_l15_n938(x)
+ if (x < 1)
+ fun_l16_n395(x)
+ else
+ fun_l16_n302(x)
+ end
+end
+
+def fun_l15_n939(x)
+ if (x < 1)
+ fun_l16_n810(x)
+ else
+ fun_l16_n549(x)
+ end
+end
+
+def fun_l15_n940(x)
+ if (x < 1)
+ fun_l16_n452(x)
+ else
+ fun_l16_n914(x)
+ end
+end
+
+def fun_l15_n941(x)
+ if (x < 1)
+ fun_l16_n472(x)
+ else
+ fun_l16_n328(x)
+ end
+end
+
+def fun_l15_n942(x)
+ if (x < 1)
+ fun_l16_n886(x)
+ else
+ fun_l16_n535(x)
+ end
+end
+
+def fun_l15_n943(x)
+ if (x < 1)
+ fun_l16_n162(x)
+ else
+ fun_l16_n449(x)
+ end
+end
+
+def fun_l15_n944(x)
+ if (x < 1)
+ fun_l16_n152(x)
+ else
+ fun_l16_n790(x)
+ end
+end
+
+def fun_l15_n945(x)
+ if (x < 1)
+ fun_l16_n228(x)
+ else
+ fun_l16_n391(x)
+ end
+end
+
+def fun_l15_n946(x)
+ if (x < 1)
+ fun_l16_n115(x)
+ else
+ fun_l16_n371(x)
+ end
+end
+
+def fun_l15_n947(x)
+ if (x < 1)
+ fun_l16_n359(x)
+ else
+ fun_l16_n928(x)
+ end
+end
+
+def fun_l15_n948(x)
+ if (x < 1)
+ fun_l16_n246(x)
+ else
+ fun_l16_n907(x)
+ end
+end
+
+def fun_l15_n949(x)
+ if (x < 1)
+ fun_l16_n448(x)
+ else
+ fun_l16_n845(x)
+ end
+end
+
+def fun_l15_n950(x)
+ if (x < 1)
+ fun_l16_n457(x)
+ else
+ fun_l16_n954(x)
+ end
+end
+
+def fun_l15_n951(x)
+ if (x < 1)
+ fun_l16_n627(x)
+ else
+ fun_l16_n684(x)
+ end
+end
+
+def fun_l15_n952(x)
+ if (x < 1)
+ fun_l16_n887(x)
+ else
+ fun_l16_n928(x)
+ end
+end
+
+def fun_l15_n953(x)
+ if (x < 1)
+ fun_l16_n782(x)
+ else
+ fun_l16_n619(x)
+ end
+end
+
+def fun_l15_n954(x)
+ if (x < 1)
+ fun_l16_n436(x)
+ else
+ fun_l16_n745(x)
+ end
+end
+
+def fun_l15_n955(x)
+ if (x < 1)
+ fun_l16_n9(x)
+ else
+ fun_l16_n604(x)
+ end
+end
+
+def fun_l15_n956(x)
+ if (x < 1)
+ fun_l16_n149(x)
+ else
+ fun_l16_n357(x)
+ end
+end
+
+def fun_l15_n957(x)
+ if (x < 1)
+ fun_l16_n664(x)
+ else
+ fun_l16_n371(x)
+ end
+end
+
+def fun_l15_n958(x)
+ if (x < 1)
+ fun_l16_n236(x)
+ else
+ fun_l16_n402(x)
+ end
+end
+
+def fun_l15_n959(x)
+ if (x < 1)
+ fun_l16_n681(x)
+ else
+ fun_l16_n410(x)
+ end
+end
+
+def fun_l15_n960(x)
+ if (x < 1)
+ fun_l16_n909(x)
+ else
+ fun_l16_n958(x)
+ end
+end
+
+def fun_l15_n961(x)
+ if (x < 1)
+ fun_l16_n400(x)
+ else
+ fun_l16_n497(x)
+ end
+end
+
+def fun_l15_n962(x)
+ if (x < 1)
+ fun_l16_n949(x)
+ else
+ fun_l16_n794(x)
+ end
+end
+
+def fun_l15_n963(x)
+ if (x < 1)
+ fun_l16_n774(x)
+ else
+ fun_l16_n770(x)
+ end
+end
+
+def fun_l15_n964(x)
+ if (x < 1)
+ fun_l16_n573(x)
+ else
+ fun_l16_n73(x)
+ end
+end
+
+def fun_l15_n965(x)
+ if (x < 1)
+ fun_l16_n33(x)
+ else
+ fun_l16_n978(x)
+ end
+end
+
+def fun_l15_n966(x)
+ if (x < 1)
+ fun_l16_n8(x)
+ else
+ fun_l16_n542(x)
+ end
+end
+
+def fun_l15_n967(x)
+ if (x < 1)
+ fun_l16_n780(x)
+ else
+ fun_l16_n96(x)
+ end
+end
+
+def fun_l15_n968(x)
+ if (x < 1)
+ fun_l16_n75(x)
+ else
+ fun_l16_n560(x)
+ end
+end
+
+def fun_l15_n969(x)
+ if (x < 1)
+ fun_l16_n950(x)
+ else
+ fun_l16_n610(x)
+ end
+end
+
+def fun_l15_n970(x)
+ if (x < 1)
+ fun_l16_n254(x)
+ else
+ fun_l16_n2(x)
+ end
+end
+
+def fun_l15_n971(x)
+ if (x < 1)
+ fun_l16_n793(x)
+ else
+ fun_l16_n89(x)
+ end
+end
+
+def fun_l15_n972(x)
+ if (x < 1)
+ fun_l16_n409(x)
+ else
+ fun_l16_n967(x)
+ end
+end
+
+def fun_l15_n973(x)
+ if (x < 1)
+ fun_l16_n356(x)
+ else
+ fun_l16_n421(x)
+ end
+end
+
+def fun_l15_n974(x)
+ if (x < 1)
+ fun_l16_n539(x)
+ else
+ fun_l16_n997(x)
+ end
+end
+
+def fun_l15_n975(x)
+ if (x < 1)
+ fun_l16_n772(x)
+ else
+ fun_l16_n304(x)
+ end
+end
+
+def fun_l15_n976(x)
+ if (x < 1)
+ fun_l16_n228(x)
+ else
+ fun_l16_n420(x)
+ end
+end
+
+def fun_l15_n977(x)
+ if (x < 1)
+ fun_l16_n508(x)
+ else
+ fun_l16_n352(x)
+ end
+end
+
+def fun_l15_n978(x)
+ if (x < 1)
+ fun_l16_n878(x)
+ else
+ fun_l16_n316(x)
+ end
+end
+
+def fun_l15_n979(x)
+ if (x < 1)
+ fun_l16_n279(x)
+ else
+ fun_l16_n325(x)
+ end
+end
+
+def fun_l15_n980(x)
+ if (x < 1)
+ fun_l16_n98(x)
+ else
+ fun_l16_n10(x)
+ end
+end
+
+def fun_l15_n981(x)
+ if (x < 1)
+ fun_l16_n320(x)
+ else
+ fun_l16_n578(x)
+ end
+end
+
+def fun_l15_n982(x)
+ if (x < 1)
+ fun_l16_n112(x)
+ else
+ fun_l16_n353(x)
+ end
+end
+
+def fun_l15_n983(x)
+ if (x < 1)
+ fun_l16_n579(x)
+ else
+ fun_l16_n946(x)
+ end
+end
+
+def fun_l15_n984(x)
+ if (x < 1)
+ fun_l16_n183(x)
+ else
+ fun_l16_n638(x)
+ end
+end
+
+def fun_l15_n985(x)
+ if (x < 1)
+ fun_l16_n500(x)
+ else
+ fun_l16_n11(x)
+ end
+end
+
+def fun_l15_n986(x)
+ if (x < 1)
+ fun_l16_n773(x)
+ else
+ fun_l16_n135(x)
+ end
+end
+
+def fun_l15_n987(x)
+ if (x < 1)
+ fun_l16_n997(x)
+ else
+ fun_l16_n645(x)
+ end
+end
+
+def fun_l15_n988(x)
+ if (x < 1)
+ fun_l16_n392(x)
+ else
+ fun_l16_n172(x)
+ end
+end
+
+def fun_l15_n989(x)
+ if (x < 1)
+ fun_l16_n150(x)
+ else
+ fun_l16_n163(x)
+ end
+end
+
+def fun_l15_n990(x)
+ if (x < 1)
+ fun_l16_n351(x)
+ else
+ fun_l16_n297(x)
+ end
+end
+
+def fun_l15_n991(x)
+ if (x < 1)
+ fun_l16_n676(x)
+ else
+ fun_l16_n31(x)
+ end
+end
+
+def fun_l15_n992(x)
+ if (x < 1)
+ fun_l16_n257(x)
+ else
+ fun_l16_n45(x)
+ end
+end
+
+def fun_l15_n993(x)
+ if (x < 1)
+ fun_l16_n971(x)
+ else
+ fun_l16_n60(x)
+ end
+end
+
+def fun_l15_n994(x)
+ if (x < 1)
+ fun_l16_n472(x)
+ else
+ fun_l16_n774(x)
+ end
+end
+
+def fun_l15_n995(x)
+ if (x < 1)
+ fun_l16_n559(x)
+ else
+ fun_l16_n605(x)
+ end
+end
+
+def fun_l15_n996(x)
+ if (x < 1)
+ fun_l16_n122(x)
+ else
+ fun_l16_n695(x)
+ end
+end
+
+def fun_l15_n997(x)
+ if (x < 1)
+ fun_l16_n118(x)
+ else
+ fun_l16_n613(x)
+ end
+end
+
+def fun_l15_n998(x)
+ if (x < 1)
+ fun_l16_n973(x)
+ else
+ fun_l16_n193(x)
+ end
+end
+
+def fun_l15_n999(x)
+ if (x < 1)
+ fun_l16_n652(x)
+ else
+ fun_l16_n658(x)
+ end
+end
+
+def fun_l16_n0(x)
+ if (x < 1)
+ fun_l17_n352(x)
+ else
+ fun_l17_n155(x)
+ end
+end
+
+def fun_l16_n1(x)
+ if (x < 1)
+ fun_l17_n786(x)
+ else
+ fun_l17_n961(x)
+ end
+end
+
+def fun_l16_n2(x)
+ if (x < 1)
+ fun_l17_n760(x)
+ else
+ fun_l17_n629(x)
+ end
+end
+
+def fun_l16_n3(x)
+ if (x < 1)
+ fun_l17_n788(x)
+ else
+ fun_l17_n70(x)
+ end
+end
+
+def fun_l16_n4(x)
+ if (x < 1)
+ fun_l17_n116(x)
+ else
+ fun_l17_n616(x)
+ end
+end
+
+def fun_l16_n5(x)
+ if (x < 1)
+ fun_l17_n470(x)
+ else
+ fun_l17_n859(x)
+ end
+end
+
+def fun_l16_n6(x)
+ if (x < 1)
+ fun_l17_n830(x)
+ else
+ fun_l17_n987(x)
+ end
+end
+
+def fun_l16_n7(x)
+ if (x < 1)
+ fun_l17_n339(x)
+ else
+ fun_l17_n284(x)
+ end
+end
+
+def fun_l16_n8(x)
+ if (x < 1)
+ fun_l17_n677(x)
+ else
+ fun_l17_n77(x)
+ end
+end
+
+def fun_l16_n9(x)
+ if (x < 1)
+ fun_l17_n7(x)
+ else
+ fun_l17_n159(x)
+ end
+end
+
+def fun_l16_n10(x)
+ if (x < 1)
+ fun_l17_n275(x)
+ else
+ fun_l17_n37(x)
+ end
+end
+
+def fun_l16_n11(x)
+ if (x < 1)
+ fun_l17_n406(x)
+ else
+ fun_l17_n588(x)
+ end
+end
+
+def fun_l16_n12(x)
+ if (x < 1)
+ fun_l17_n132(x)
+ else
+ fun_l17_n208(x)
+ end
+end
+
+def fun_l16_n13(x)
+ if (x < 1)
+ fun_l17_n87(x)
+ else
+ fun_l17_n850(x)
+ end
+end
+
+def fun_l16_n14(x)
+ if (x < 1)
+ fun_l17_n965(x)
+ else
+ fun_l17_n106(x)
+ end
+end
+
+def fun_l16_n15(x)
+ if (x < 1)
+ fun_l17_n176(x)
+ else
+ fun_l17_n966(x)
+ end
+end
+
+def fun_l16_n16(x)
+ if (x < 1)
+ fun_l17_n825(x)
+ else
+ fun_l17_n815(x)
+ end
+end
+
+def fun_l16_n17(x)
+ if (x < 1)
+ fun_l17_n939(x)
+ else
+ fun_l17_n591(x)
+ end
+end
+
+def fun_l16_n18(x)
+ if (x < 1)
+ fun_l17_n166(x)
+ else
+ fun_l17_n732(x)
+ end
+end
+
+def fun_l16_n19(x)
+ if (x < 1)
+ fun_l17_n471(x)
+ else
+ fun_l17_n175(x)
+ end
+end
+
+def fun_l16_n20(x)
+ if (x < 1)
+ fun_l17_n887(x)
+ else
+ fun_l17_n304(x)
+ end
+end
+
+def fun_l16_n21(x)
+ if (x < 1)
+ fun_l17_n545(x)
+ else
+ fun_l17_n221(x)
+ end
+end
+
+def fun_l16_n22(x)
+ if (x < 1)
+ fun_l17_n879(x)
+ else
+ fun_l17_n143(x)
+ end
+end
+
+def fun_l16_n23(x)
+ if (x < 1)
+ fun_l17_n732(x)
+ else
+ fun_l17_n902(x)
+ end
+end
+
+def fun_l16_n24(x)
+ if (x < 1)
+ fun_l17_n490(x)
+ else
+ fun_l17_n327(x)
+ end
+end
+
+def fun_l16_n25(x)
+ if (x < 1)
+ fun_l17_n588(x)
+ else
+ fun_l17_n658(x)
+ end
+end
+
+def fun_l16_n26(x)
+ if (x < 1)
+ fun_l17_n555(x)
+ else
+ fun_l17_n507(x)
+ end
+end
+
+def fun_l16_n27(x)
+ if (x < 1)
+ fun_l17_n228(x)
+ else
+ fun_l17_n808(x)
+ end
+end
+
+def fun_l16_n28(x)
+ if (x < 1)
+ fun_l17_n705(x)
+ else
+ fun_l17_n696(x)
+ end
+end
+
+def fun_l16_n29(x)
+ if (x < 1)
+ fun_l17_n711(x)
+ else
+ fun_l17_n913(x)
+ end
+end
+
+def fun_l16_n30(x)
+ if (x < 1)
+ fun_l17_n264(x)
+ else
+ fun_l17_n287(x)
+ end
+end
+
+def fun_l16_n31(x)
+ if (x < 1)
+ fun_l17_n624(x)
+ else
+ fun_l17_n358(x)
+ end
+end
+
+def fun_l16_n32(x)
+ if (x < 1)
+ fun_l17_n102(x)
+ else
+ fun_l17_n303(x)
+ end
+end
+
+def fun_l16_n33(x)
+ if (x < 1)
+ fun_l17_n613(x)
+ else
+ fun_l17_n921(x)
+ end
+end
+
+def fun_l16_n34(x)
+ if (x < 1)
+ fun_l17_n637(x)
+ else
+ fun_l17_n142(x)
+ end
+end
+
+def fun_l16_n35(x)
+ if (x < 1)
+ fun_l17_n8(x)
+ else
+ fun_l17_n752(x)
+ end
+end
+
+def fun_l16_n36(x)
+ if (x < 1)
+ fun_l17_n748(x)
+ else
+ fun_l17_n956(x)
+ end
+end
+
+def fun_l16_n37(x)
+ if (x < 1)
+ fun_l17_n985(x)
+ else
+ fun_l17_n133(x)
+ end
+end
+
+def fun_l16_n38(x)
+ if (x < 1)
+ fun_l17_n422(x)
+ else
+ fun_l17_n608(x)
+ end
+end
+
+def fun_l16_n39(x)
+ if (x < 1)
+ fun_l17_n455(x)
+ else
+ fun_l17_n247(x)
+ end
+end
+
+def fun_l16_n40(x)
+ if (x < 1)
+ fun_l17_n363(x)
+ else
+ fun_l17_n874(x)
+ end
+end
+
+def fun_l16_n41(x)
+ if (x < 1)
+ fun_l17_n299(x)
+ else
+ fun_l17_n971(x)
+ end
+end
+
+def fun_l16_n42(x)
+ if (x < 1)
+ fun_l17_n788(x)
+ else
+ fun_l17_n535(x)
+ end
+end
+
+def fun_l16_n43(x)
+ if (x < 1)
+ fun_l17_n282(x)
+ else
+ fun_l17_n468(x)
+ end
+end
+
+def fun_l16_n44(x)
+ if (x < 1)
+ fun_l17_n493(x)
+ else
+ fun_l17_n931(x)
+ end
+end
+
+def fun_l16_n45(x)
+ if (x < 1)
+ fun_l17_n750(x)
+ else
+ fun_l17_n725(x)
+ end
+end
+
+def fun_l16_n46(x)
+ if (x < 1)
+ fun_l17_n227(x)
+ else
+ fun_l17_n769(x)
+ end
+end
+
+def fun_l16_n47(x)
+ if (x < 1)
+ fun_l17_n348(x)
+ else
+ fun_l17_n83(x)
+ end
+end
+
+def fun_l16_n48(x)
+ if (x < 1)
+ fun_l17_n624(x)
+ else
+ fun_l17_n398(x)
+ end
+end
+
+def fun_l16_n49(x)
+ if (x < 1)
+ fun_l17_n645(x)
+ else
+ fun_l17_n645(x)
+ end
+end
+
+def fun_l16_n50(x)
+ if (x < 1)
+ fun_l17_n191(x)
+ else
+ fun_l17_n256(x)
+ end
+end
+
+def fun_l16_n51(x)
+ if (x < 1)
+ fun_l17_n947(x)
+ else
+ fun_l17_n188(x)
+ end
+end
+
+def fun_l16_n52(x)
+ if (x < 1)
+ fun_l17_n135(x)
+ else
+ fun_l17_n923(x)
+ end
+end
+
+def fun_l16_n53(x)
+ if (x < 1)
+ fun_l17_n867(x)
+ else
+ fun_l17_n520(x)
+ end
+end
+
+def fun_l16_n54(x)
+ if (x < 1)
+ fun_l17_n450(x)
+ else
+ fun_l17_n864(x)
+ end
+end
+
+def fun_l16_n55(x)
+ if (x < 1)
+ fun_l17_n116(x)
+ else
+ fun_l17_n370(x)
+ end
+end
+
+def fun_l16_n56(x)
+ if (x < 1)
+ fun_l17_n754(x)
+ else
+ fun_l17_n919(x)
+ end
+end
+
+def fun_l16_n57(x)
+ if (x < 1)
+ fun_l17_n360(x)
+ else
+ fun_l17_n513(x)
+ end
+end
+
+def fun_l16_n58(x)
+ if (x < 1)
+ fun_l17_n436(x)
+ else
+ fun_l17_n618(x)
+ end
+end
+
+def fun_l16_n59(x)
+ if (x < 1)
+ fun_l17_n795(x)
+ else
+ fun_l17_n851(x)
+ end
+end
+
+def fun_l16_n60(x)
+ if (x < 1)
+ fun_l17_n624(x)
+ else
+ fun_l17_n305(x)
+ end
+end
+
+def fun_l16_n61(x)
+ if (x < 1)
+ fun_l17_n520(x)
+ else
+ fun_l17_n360(x)
+ end
+end
+
+def fun_l16_n62(x)
+ if (x < 1)
+ fun_l17_n297(x)
+ else
+ fun_l17_n218(x)
+ end
+end
+
+def fun_l16_n63(x)
+ if (x < 1)
+ fun_l17_n116(x)
+ else
+ fun_l17_n888(x)
+ end
+end
+
+def fun_l16_n64(x)
+ if (x < 1)
+ fun_l17_n800(x)
+ else
+ fun_l17_n985(x)
+ end
+end
+
+def fun_l16_n65(x)
+ if (x < 1)
+ fun_l17_n875(x)
+ else
+ fun_l17_n821(x)
+ end
+end
+
+def fun_l16_n66(x)
+ if (x < 1)
+ fun_l17_n677(x)
+ else
+ fun_l17_n705(x)
+ end
+end
+
+def fun_l16_n67(x)
+ if (x < 1)
+ fun_l17_n643(x)
+ else
+ fun_l17_n240(x)
+ end
+end
+
+def fun_l16_n68(x)
+ if (x < 1)
+ fun_l17_n290(x)
+ else
+ fun_l17_n885(x)
+ end
+end
+
+def fun_l16_n69(x)
+ if (x < 1)
+ fun_l17_n987(x)
+ else
+ fun_l17_n611(x)
+ end
+end
+
+def fun_l16_n70(x)
+ if (x < 1)
+ fun_l17_n546(x)
+ else
+ fun_l17_n95(x)
+ end
+end
+
+def fun_l16_n71(x)
+ if (x < 1)
+ fun_l17_n301(x)
+ else
+ fun_l17_n260(x)
+ end
+end
+
+def fun_l16_n72(x)
+ if (x < 1)
+ fun_l17_n118(x)
+ else
+ fun_l17_n110(x)
+ end
+end
+
+def fun_l16_n73(x)
+ if (x < 1)
+ fun_l17_n254(x)
+ else
+ fun_l17_n602(x)
+ end
+end
+
+def fun_l16_n74(x)
+ if (x < 1)
+ fun_l17_n725(x)
+ else
+ fun_l17_n606(x)
+ end
+end
+
+def fun_l16_n75(x)
+ if (x < 1)
+ fun_l17_n114(x)
+ else
+ fun_l17_n336(x)
+ end
+end
+
+def fun_l16_n76(x)
+ if (x < 1)
+ fun_l17_n930(x)
+ else
+ fun_l17_n513(x)
+ end
+end
+
+def fun_l16_n77(x)
+ if (x < 1)
+ fun_l17_n217(x)
+ else
+ fun_l17_n158(x)
+ end
+end
+
+def fun_l16_n78(x)
+ if (x < 1)
+ fun_l17_n987(x)
+ else
+ fun_l17_n538(x)
+ end
+end
+
+def fun_l16_n79(x)
+ if (x < 1)
+ fun_l17_n467(x)
+ else
+ fun_l17_n675(x)
+ end
+end
+
+def fun_l16_n80(x)
+ if (x < 1)
+ fun_l17_n553(x)
+ else
+ fun_l17_n77(x)
+ end
+end
+
+def fun_l16_n81(x)
+ if (x < 1)
+ fun_l17_n643(x)
+ else
+ fun_l17_n156(x)
+ end
+end
+
+def fun_l16_n82(x)
+ if (x < 1)
+ fun_l17_n858(x)
+ else
+ fun_l17_n300(x)
+ end
+end
+
+def fun_l16_n83(x)
+ if (x < 1)
+ fun_l17_n136(x)
+ else
+ fun_l17_n637(x)
+ end
+end
+
+def fun_l16_n84(x)
+ if (x < 1)
+ fun_l17_n71(x)
+ else
+ fun_l17_n979(x)
+ end
+end
+
+def fun_l16_n85(x)
+ if (x < 1)
+ fun_l17_n135(x)
+ else
+ fun_l17_n893(x)
+ end
+end
+
+def fun_l16_n86(x)
+ if (x < 1)
+ fun_l17_n734(x)
+ else
+ fun_l17_n254(x)
+ end
+end
+
+def fun_l16_n87(x)
+ if (x < 1)
+ fun_l17_n809(x)
+ else
+ fun_l17_n475(x)
+ end
+end
+
+def fun_l16_n88(x)
+ if (x < 1)
+ fun_l17_n931(x)
+ else
+ fun_l17_n110(x)
+ end
+end
+
+def fun_l16_n89(x)
+ if (x < 1)
+ fun_l17_n957(x)
+ else
+ fun_l17_n489(x)
+ end
+end
+
+def fun_l16_n90(x)
+ if (x < 1)
+ fun_l17_n145(x)
+ else
+ fun_l17_n861(x)
+ end
+end
+
+def fun_l16_n91(x)
+ if (x < 1)
+ fun_l17_n276(x)
+ else
+ fun_l17_n967(x)
+ end
+end
+
+def fun_l16_n92(x)
+ if (x < 1)
+ fun_l17_n657(x)
+ else
+ fun_l17_n638(x)
+ end
+end
+
+def fun_l16_n93(x)
+ if (x < 1)
+ fun_l17_n714(x)
+ else
+ fun_l17_n52(x)
+ end
+end
+
+def fun_l16_n94(x)
+ if (x < 1)
+ fun_l17_n487(x)
+ else
+ fun_l17_n380(x)
+ end
+end
+
+def fun_l16_n95(x)
+ if (x < 1)
+ fun_l17_n58(x)
+ else
+ fun_l17_n67(x)
+ end
+end
+
+def fun_l16_n96(x)
+ if (x < 1)
+ fun_l17_n9(x)
+ else
+ fun_l17_n896(x)
+ end
+end
+
+def fun_l16_n97(x)
+ if (x < 1)
+ fun_l17_n723(x)
+ else
+ fun_l17_n16(x)
+ end
+end
+
+def fun_l16_n98(x)
+ if (x < 1)
+ fun_l17_n143(x)
+ else
+ fun_l17_n31(x)
+ end
+end
+
+def fun_l16_n99(x)
+ if (x < 1)
+ fun_l17_n33(x)
+ else
+ fun_l17_n615(x)
+ end
+end
+
+def fun_l16_n100(x)
+ if (x < 1)
+ fun_l17_n318(x)
+ else
+ fun_l17_n83(x)
+ end
+end
+
+def fun_l16_n101(x)
+ if (x < 1)
+ fun_l17_n694(x)
+ else
+ fun_l17_n851(x)
+ end
+end
+
+def fun_l16_n102(x)
+ if (x < 1)
+ fun_l17_n31(x)
+ else
+ fun_l17_n881(x)
+ end
+end
+
+def fun_l16_n103(x)
+ if (x < 1)
+ fun_l17_n739(x)
+ else
+ fun_l17_n680(x)
+ end
+end
+
+def fun_l16_n104(x)
+ if (x < 1)
+ fun_l17_n123(x)
+ else
+ fun_l17_n969(x)
+ end
+end
+
+def fun_l16_n105(x)
+ if (x < 1)
+ fun_l17_n526(x)
+ else
+ fun_l17_n529(x)
+ end
+end
+
+def fun_l16_n106(x)
+ if (x < 1)
+ fun_l17_n613(x)
+ else
+ fun_l17_n738(x)
+ end
+end
+
+def fun_l16_n107(x)
+ if (x < 1)
+ fun_l17_n48(x)
+ else
+ fun_l17_n107(x)
+ end
+end
+
+def fun_l16_n108(x)
+ if (x < 1)
+ fun_l17_n493(x)
+ else
+ fun_l17_n875(x)
+ end
+end
+
+def fun_l16_n109(x)
+ if (x < 1)
+ fun_l17_n101(x)
+ else
+ fun_l17_n295(x)
+ end
+end
+
+def fun_l16_n110(x)
+ if (x < 1)
+ fun_l17_n257(x)
+ else
+ fun_l17_n132(x)
+ end
+end
+
+def fun_l16_n111(x)
+ if (x < 1)
+ fun_l17_n702(x)
+ else
+ fun_l17_n635(x)
+ end
+end
+
+def fun_l16_n112(x)
+ if (x < 1)
+ fun_l17_n193(x)
+ else
+ fun_l17_n931(x)
+ end
+end
+
+def fun_l16_n113(x)
+ if (x < 1)
+ fun_l17_n973(x)
+ else
+ fun_l17_n708(x)
+ end
+end
+
+def fun_l16_n114(x)
+ if (x < 1)
+ fun_l17_n110(x)
+ else
+ fun_l17_n247(x)
+ end
+end
+
+def fun_l16_n115(x)
+ if (x < 1)
+ fun_l17_n769(x)
+ else
+ fun_l17_n872(x)
+ end
+end
+
+def fun_l16_n116(x)
+ if (x < 1)
+ fun_l17_n63(x)
+ else
+ fun_l17_n90(x)
+ end
+end
+
+def fun_l16_n117(x)
+ if (x < 1)
+ fun_l17_n392(x)
+ else
+ fun_l17_n3(x)
+ end
+end
+
+def fun_l16_n118(x)
+ if (x < 1)
+ fun_l17_n73(x)
+ else
+ fun_l17_n354(x)
+ end
+end
+
+def fun_l16_n119(x)
+ if (x < 1)
+ fun_l17_n173(x)
+ else
+ fun_l17_n573(x)
+ end
+end
+
+def fun_l16_n120(x)
+ if (x < 1)
+ fun_l17_n481(x)
+ else
+ fun_l17_n571(x)
+ end
+end
+
+def fun_l16_n121(x)
+ if (x < 1)
+ fun_l17_n838(x)
+ else
+ fun_l17_n736(x)
+ end
+end
+
+def fun_l16_n122(x)
+ if (x < 1)
+ fun_l17_n400(x)
+ else
+ fun_l17_n169(x)
+ end
+end
+
+def fun_l16_n123(x)
+ if (x < 1)
+ fun_l17_n806(x)
+ else
+ fun_l17_n954(x)
+ end
+end
+
+def fun_l16_n124(x)
+ if (x < 1)
+ fun_l17_n328(x)
+ else
+ fun_l17_n200(x)
+ end
+end
+
+def fun_l16_n125(x)
+ if (x < 1)
+ fun_l17_n388(x)
+ else
+ fun_l17_n875(x)
+ end
+end
+
+def fun_l16_n126(x)
+ if (x < 1)
+ fun_l17_n178(x)
+ else
+ fun_l17_n122(x)
+ end
+end
+
+def fun_l16_n127(x)
+ if (x < 1)
+ fun_l17_n974(x)
+ else
+ fun_l17_n490(x)
+ end
+end
+
+def fun_l16_n128(x)
+ if (x < 1)
+ fun_l17_n731(x)
+ else
+ fun_l17_n807(x)
+ end
+end
+
+def fun_l16_n129(x)
+ if (x < 1)
+ fun_l17_n939(x)
+ else
+ fun_l17_n532(x)
+ end
+end
+
+def fun_l16_n130(x)
+ if (x < 1)
+ fun_l17_n482(x)
+ else
+ fun_l17_n926(x)
+ end
+end
+
+def fun_l16_n131(x)
+ if (x < 1)
+ fun_l17_n884(x)
+ else
+ fun_l17_n179(x)
+ end
+end
+
+def fun_l16_n132(x)
+ if (x < 1)
+ fun_l17_n683(x)
+ else
+ fun_l17_n24(x)
+ end
+end
+
+def fun_l16_n133(x)
+ if (x < 1)
+ fun_l17_n968(x)
+ else
+ fun_l17_n536(x)
+ end
+end
+
+def fun_l16_n134(x)
+ if (x < 1)
+ fun_l17_n229(x)
+ else
+ fun_l17_n280(x)
+ end
+end
+
+def fun_l16_n135(x)
+ if (x < 1)
+ fun_l17_n47(x)
+ else
+ fun_l17_n12(x)
+ end
+end
+
+def fun_l16_n136(x)
+ if (x < 1)
+ fun_l17_n905(x)
+ else
+ fun_l17_n461(x)
+ end
+end
+
+def fun_l16_n137(x)
+ if (x < 1)
+ fun_l17_n992(x)
+ else
+ fun_l17_n294(x)
+ end
+end
+
+def fun_l16_n138(x)
+ if (x < 1)
+ fun_l17_n383(x)
+ else
+ fun_l17_n916(x)
+ end
+end
+
+def fun_l16_n139(x)
+ if (x < 1)
+ fun_l17_n116(x)
+ else
+ fun_l17_n96(x)
+ end
+end
+
+def fun_l16_n140(x)
+ if (x < 1)
+ fun_l17_n702(x)
+ else
+ fun_l17_n294(x)
+ end
+end
+
+def fun_l16_n141(x)
+ if (x < 1)
+ fun_l17_n528(x)
+ else
+ fun_l17_n650(x)
+ end
+end
+
+def fun_l16_n142(x)
+ if (x < 1)
+ fun_l17_n341(x)
+ else
+ fun_l17_n168(x)
+ end
+end
+
+def fun_l16_n143(x)
+ if (x < 1)
+ fun_l17_n85(x)
+ else
+ fun_l17_n384(x)
+ end
+end
+
+def fun_l16_n144(x)
+ if (x < 1)
+ fun_l17_n738(x)
+ else
+ fun_l17_n842(x)
+ end
+end
+
+def fun_l16_n145(x)
+ if (x < 1)
+ fun_l17_n359(x)
+ else
+ fun_l17_n691(x)
+ end
+end
+
+def fun_l16_n146(x)
+ if (x < 1)
+ fun_l17_n465(x)
+ else
+ fun_l17_n310(x)
+ end
+end
+
+def fun_l16_n147(x)
+ if (x < 1)
+ fun_l17_n610(x)
+ else
+ fun_l17_n133(x)
+ end
+end
+
+def fun_l16_n148(x)
+ if (x < 1)
+ fun_l17_n829(x)
+ else
+ fun_l17_n449(x)
+ end
+end
+
+def fun_l16_n149(x)
+ if (x < 1)
+ fun_l17_n319(x)
+ else
+ fun_l17_n875(x)
+ end
+end
+
+def fun_l16_n150(x)
+ if (x < 1)
+ fun_l17_n493(x)
+ else
+ fun_l17_n39(x)
+ end
+end
+
+def fun_l16_n151(x)
+ if (x < 1)
+ fun_l17_n801(x)
+ else
+ fun_l17_n294(x)
+ end
+end
+
+def fun_l16_n152(x)
+ if (x < 1)
+ fun_l17_n39(x)
+ else
+ fun_l17_n113(x)
+ end
+end
+
+def fun_l16_n153(x)
+ if (x < 1)
+ fun_l17_n299(x)
+ else
+ fun_l17_n560(x)
+ end
+end
+
+def fun_l16_n154(x)
+ if (x < 1)
+ fun_l17_n220(x)
+ else
+ fun_l17_n485(x)
+ end
+end
+
+def fun_l16_n155(x)
+ if (x < 1)
+ fun_l17_n219(x)
+ else
+ fun_l17_n210(x)
+ end
+end
+
+def fun_l16_n156(x)
+ if (x < 1)
+ fun_l17_n44(x)
+ else
+ fun_l17_n394(x)
+ end
+end
+
+def fun_l16_n157(x)
+ if (x < 1)
+ fun_l17_n858(x)
+ else
+ fun_l17_n9(x)
+ end
+end
+
+def fun_l16_n158(x)
+ if (x < 1)
+ fun_l17_n298(x)
+ else
+ fun_l17_n584(x)
+ end
+end
+
+def fun_l16_n159(x)
+ if (x < 1)
+ fun_l17_n627(x)
+ else
+ fun_l17_n991(x)
+ end
+end
+
+def fun_l16_n160(x)
+ if (x < 1)
+ fun_l17_n459(x)
+ else
+ fun_l17_n686(x)
+ end
+end
+
+def fun_l16_n161(x)
+ if (x < 1)
+ fun_l17_n694(x)
+ else
+ fun_l17_n503(x)
+ end
+end
+
+def fun_l16_n162(x)
+ if (x < 1)
+ fun_l17_n331(x)
+ else
+ fun_l17_n869(x)
+ end
+end
+
+def fun_l16_n163(x)
+ if (x < 1)
+ fun_l17_n958(x)
+ else
+ fun_l17_n102(x)
+ end
+end
+
+def fun_l16_n164(x)
+ if (x < 1)
+ fun_l17_n254(x)
+ else
+ fun_l17_n888(x)
+ end
+end
+
+def fun_l16_n165(x)
+ if (x < 1)
+ fun_l17_n639(x)
+ else
+ fun_l17_n342(x)
+ end
+end
+
+def fun_l16_n166(x)
+ if (x < 1)
+ fun_l17_n859(x)
+ else
+ fun_l17_n2(x)
+ end
+end
+
+def fun_l16_n167(x)
+ if (x < 1)
+ fun_l17_n504(x)
+ else
+ fun_l17_n726(x)
+ end
+end
+
+def fun_l16_n168(x)
+ if (x < 1)
+ fun_l17_n426(x)
+ else
+ fun_l17_n532(x)
+ end
+end
+
+def fun_l16_n169(x)
+ if (x < 1)
+ fun_l17_n919(x)
+ else
+ fun_l17_n515(x)
+ end
+end
+
+def fun_l16_n170(x)
+ if (x < 1)
+ fun_l17_n394(x)
+ else
+ fun_l17_n259(x)
+ end
+end
+
+def fun_l16_n171(x)
+ if (x < 1)
+ fun_l17_n920(x)
+ else
+ fun_l17_n502(x)
+ end
+end
+
+def fun_l16_n172(x)
+ if (x < 1)
+ fun_l17_n898(x)
+ else
+ fun_l17_n984(x)
+ end
+end
+
+def fun_l16_n173(x)
+ if (x < 1)
+ fun_l17_n869(x)
+ else
+ fun_l17_n470(x)
+ end
+end
+
+def fun_l16_n174(x)
+ if (x < 1)
+ fun_l17_n959(x)
+ else
+ fun_l17_n283(x)
+ end
+end
+
+def fun_l16_n175(x)
+ if (x < 1)
+ fun_l17_n1(x)
+ else
+ fun_l17_n68(x)
+ end
+end
+
+def fun_l16_n176(x)
+ if (x < 1)
+ fun_l17_n91(x)
+ else
+ fun_l17_n684(x)
+ end
+end
+
+def fun_l16_n177(x)
+ if (x < 1)
+ fun_l17_n803(x)
+ else
+ fun_l17_n335(x)
+ end
+end
+
+def fun_l16_n178(x)
+ if (x < 1)
+ fun_l17_n242(x)
+ else
+ fun_l17_n671(x)
+ end
+end
+
+def fun_l16_n179(x)
+ if (x < 1)
+ fun_l17_n944(x)
+ else
+ fun_l17_n136(x)
+ end
+end
+
+def fun_l16_n180(x)
+ if (x < 1)
+ fun_l17_n681(x)
+ else
+ fun_l17_n587(x)
+ end
+end
+
+def fun_l16_n181(x)
+ if (x < 1)
+ fun_l17_n564(x)
+ else
+ fun_l17_n965(x)
+ end
+end
+
+def fun_l16_n182(x)
+ if (x < 1)
+ fun_l17_n107(x)
+ else
+ fun_l17_n229(x)
+ end
+end
+
+def fun_l16_n183(x)
+ if (x < 1)
+ fun_l17_n467(x)
+ else
+ fun_l17_n155(x)
+ end
+end
+
+def fun_l16_n184(x)
+ if (x < 1)
+ fun_l17_n62(x)
+ else
+ fun_l17_n507(x)
+ end
+end
+
+def fun_l16_n185(x)
+ if (x < 1)
+ fun_l17_n632(x)
+ else
+ fun_l17_n792(x)
+ end
+end
+
+def fun_l16_n186(x)
+ if (x < 1)
+ fun_l17_n174(x)
+ else
+ fun_l17_n623(x)
+ end
+end
+
+def fun_l16_n187(x)
+ if (x < 1)
+ fun_l17_n733(x)
+ else
+ fun_l17_n640(x)
+ end
+end
+
+def fun_l16_n188(x)
+ if (x < 1)
+ fun_l17_n968(x)
+ else
+ fun_l17_n554(x)
+ end
+end
+
+def fun_l16_n189(x)
+ if (x < 1)
+ fun_l17_n363(x)
+ else
+ fun_l17_n381(x)
+ end
+end
+
+def fun_l16_n190(x)
+ if (x < 1)
+ fun_l17_n34(x)
+ else
+ fun_l17_n145(x)
+ end
+end
+
+def fun_l16_n191(x)
+ if (x < 1)
+ fun_l17_n407(x)
+ else
+ fun_l17_n567(x)
+ end
+end
+
+def fun_l16_n192(x)
+ if (x < 1)
+ fun_l17_n497(x)
+ else
+ fun_l17_n842(x)
+ end
+end
+
+def fun_l16_n193(x)
+ if (x < 1)
+ fun_l17_n935(x)
+ else
+ fun_l17_n394(x)
+ end
+end
+
+def fun_l16_n194(x)
+ if (x < 1)
+ fun_l17_n728(x)
+ else
+ fun_l17_n885(x)
+ end
+end
+
+def fun_l16_n195(x)
+ if (x < 1)
+ fun_l17_n974(x)
+ else
+ fun_l17_n678(x)
+ end
+end
+
+def fun_l16_n196(x)
+ if (x < 1)
+ fun_l17_n420(x)
+ else
+ fun_l17_n894(x)
+ end
+end
+
+def fun_l16_n197(x)
+ if (x < 1)
+ fun_l17_n651(x)
+ else
+ fun_l17_n569(x)
+ end
+end
+
+def fun_l16_n198(x)
+ if (x < 1)
+ fun_l17_n274(x)
+ else
+ fun_l17_n683(x)
+ end
+end
+
+def fun_l16_n199(x)
+ if (x < 1)
+ fun_l17_n624(x)
+ else
+ fun_l17_n343(x)
+ end
+end
+
+def fun_l16_n200(x)
+ if (x < 1)
+ fun_l17_n82(x)
+ else
+ fun_l17_n472(x)
+ end
+end
+
+def fun_l16_n201(x)
+ if (x < 1)
+ fun_l17_n519(x)
+ else
+ fun_l17_n54(x)
+ end
+end
+
+def fun_l16_n202(x)
+ if (x < 1)
+ fun_l17_n858(x)
+ else
+ fun_l17_n379(x)
+ end
+end
+
+def fun_l16_n203(x)
+ if (x < 1)
+ fun_l17_n515(x)
+ else
+ fun_l17_n59(x)
+ end
+end
+
+def fun_l16_n204(x)
+ if (x < 1)
+ fun_l17_n736(x)
+ else
+ fun_l17_n880(x)
+ end
+end
+
+def fun_l16_n205(x)
+ if (x < 1)
+ fun_l17_n724(x)
+ else
+ fun_l17_n890(x)
+ end
+end
+
+def fun_l16_n206(x)
+ if (x < 1)
+ fun_l17_n92(x)
+ else
+ fun_l17_n305(x)
+ end
+end
+
+def fun_l16_n207(x)
+ if (x < 1)
+ fun_l17_n123(x)
+ else
+ fun_l17_n455(x)
+ end
+end
+
+def fun_l16_n208(x)
+ if (x < 1)
+ fun_l17_n722(x)
+ else
+ fun_l17_n142(x)
+ end
+end
+
+def fun_l16_n209(x)
+ if (x < 1)
+ fun_l17_n250(x)
+ else
+ fun_l17_n810(x)
+ end
+end
+
+def fun_l16_n210(x)
+ if (x < 1)
+ fun_l17_n118(x)
+ else
+ fun_l17_n902(x)
+ end
+end
+
+def fun_l16_n211(x)
+ if (x < 1)
+ fun_l17_n8(x)
+ else
+ fun_l17_n874(x)
+ end
+end
+
+def fun_l16_n212(x)
+ if (x < 1)
+ fun_l17_n589(x)
+ else
+ fun_l17_n731(x)
+ end
+end
+
+def fun_l16_n213(x)
+ if (x < 1)
+ fun_l17_n786(x)
+ else
+ fun_l17_n249(x)
+ end
+end
+
+def fun_l16_n214(x)
+ if (x < 1)
+ fun_l17_n80(x)
+ else
+ fun_l17_n763(x)
+ end
+end
+
+def fun_l16_n215(x)
+ if (x < 1)
+ fun_l17_n733(x)
+ else
+ fun_l17_n657(x)
+ end
+end
+
+def fun_l16_n216(x)
+ if (x < 1)
+ fun_l17_n168(x)
+ else
+ fun_l17_n881(x)
+ end
+end
+
+def fun_l16_n217(x)
+ if (x < 1)
+ fun_l17_n568(x)
+ else
+ fun_l17_n698(x)
+ end
+end
+
+def fun_l16_n218(x)
+ if (x < 1)
+ fun_l17_n727(x)
+ else
+ fun_l17_n388(x)
+ end
+end
+
+def fun_l16_n219(x)
+ if (x < 1)
+ fun_l17_n443(x)
+ else
+ fun_l17_n600(x)
+ end
+end
+
+def fun_l16_n220(x)
+ if (x < 1)
+ fun_l17_n901(x)
+ else
+ fun_l17_n875(x)
+ end
+end
+
+def fun_l16_n221(x)
+ if (x < 1)
+ fun_l17_n374(x)
+ else
+ fun_l17_n819(x)
+ end
+end
+
+def fun_l16_n222(x)
+ if (x < 1)
+ fun_l17_n563(x)
+ else
+ fun_l17_n341(x)
+ end
+end
+
+def fun_l16_n223(x)
+ if (x < 1)
+ fun_l17_n404(x)
+ else
+ fun_l17_n201(x)
+ end
+end
+
+def fun_l16_n224(x)
+ if (x < 1)
+ fun_l17_n932(x)
+ else
+ fun_l17_n803(x)
+ end
+end
+
+def fun_l16_n225(x)
+ if (x < 1)
+ fun_l17_n970(x)
+ else
+ fun_l17_n717(x)
+ end
+end
+
+def fun_l16_n226(x)
+ if (x < 1)
+ fun_l17_n599(x)
+ else
+ fun_l17_n692(x)
+ end
+end
+
+def fun_l16_n227(x)
+ if (x < 1)
+ fun_l17_n351(x)
+ else
+ fun_l17_n177(x)
+ end
+end
+
+def fun_l16_n228(x)
+ if (x < 1)
+ fun_l17_n891(x)
+ else
+ fun_l17_n79(x)
+ end
+end
+
+def fun_l16_n229(x)
+ if (x < 1)
+ fun_l17_n143(x)
+ else
+ fun_l17_n702(x)
+ end
+end
+
+def fun_l16_n230(x)
+ if (x < 1)
+ fun_l17_n591(x)
+ else
+ fun_l17_n317(x)
+ end
+end
+
+def fun_l16_n231(x)
+ if (x < 1)
+ fun_l17_n727(x)
+ else
+ fun_l17_n881(x)
+ end
+end
+
+def fun_l16_n232(x)
+ if (x < 1)
+ fun_l17_n390(x)
+ else
+ fun_l17_n580(x)
+ end
+end
+
+def fun_l16_n233(x)
+ if (x < 1)
+ fun_l17_n530(x)
+ else
+ fun_l17_n102(x)
+ end
+end
+
+def fun_l16_n234(x)
+ if (x < 1)
+ fun_l17_n891(x)
+ else
+ fun_l17_n783(x)
+ end
+end
+
+def fun_l16_n235(x)
+ if (x < 1)
+ fun_l17_n91(x)
+ else
+ fun_l17_n142(x)
+ end
+end
+
+def fun_l16_n236(x)
+ if (x < 1)
+ fun_l17_n55(x)
+ else
+ fun_l17_n897(x)
+ end
+end
+
+def fun_l16_n237(x)
+ if (x < 1)
+ fun_l17_n471(x)
+ else
+ fun_l17_n24(x)
+ end
+end
+
+def fun_l16_n238(x)
+ if (x < 1)
+ fun_l17_n812(x)
+ else
+ fun_l17_n833(x)
+ end
+end
+
+def fun_l16_n239(x)
+ if (x < 1)
+ fun_l17_n879(x)
+ else
+ fun_l17_n560(x)
+ end
+end
+
+def fun_l16_n240(x)
+ if (x < 1)
+ fun_l17_n882(x)
+ else
+ fun_l17_n473(x)
+ end
+end
+
+def fun_l16_n241(x)
+ if (x < 1)
+ fun_l17_n30(x)
+ else
+ fun_l17_n299(x)
+ end
+end
+
+def fun_l16_n242(x)
+ if (x < 1)
+ fun_l17_n855(x)
+ else
+ fun_l17_n751(x)
+ end
+end
+
+def fun_l16_n243(x)
+ if (x < 1)
+ fun_l17_n184(x)
+ else
+ fun_l17_n997(x)
+ end
+end
+
+def fun_l16_n244(x)
+ if (x < 1)
+ fun_l17_n151(x)
+ else
+ fun_l17_n495(x)
+ end
+end
+
+def fun_l16_n245(x)
+ if (x < 1)
+ fun_l17_n181(x)
+ else
+ fun_l17_n360(x)
+ end
+end
+
+def fun_l16_n246(x)
+ if (x < 1)
+ fun_l17_n208(x)
+ else
+ fun_l17_n767(x)
+ end
+end
+
+def fun_l16_n247(x)
+ if (x < 1)
+ fun_l17_n969(x)
+ else
+ fun_l17_n15(x)
+ end
+end
+
+def fun_l16_n248(x)
+ if (x < 1)
+ fun_l17_n529(x)
+ else
+ fun_l17_n879(x)
+ end
+end
+
+def fun_l16_n249(x)
+ if (x < 1)
+ fun_l17_n729(x)
+ else
+ fun_l17_n355(x)
+ end
+end
+
+def fun_l16_n250(x)
+ if (x < 1)
+ fun_l17_n239(x)
+ else
+ fun_l17_n414(x)
+ end
+end
+
+def fun_l16_n251(x)
+ if (x < 1)
+ fun_l17_n257(x)
+ else
+ fun_l17_n362(x)
+ end
+end
+
+def fun_l16_n252(x)
+ if (x < 1)
+ fun_l17_n832(x)
+ else
+ fun_l17_n924(x)
+ end
+end
+
+def fun_l16_n253(x)
+ if (x < 1)
+ fun_l17_n907(x)
+ else
+ fun_l17_n548(x)
+ end
+end
+
+def fun_l16_n254(x)
+ if (x < 1)
+ fun_l17_n391(x)
+ else
+ fun_l17_n316(x)
+ end
+end
+
+def fun_l16_n255(x)
+ if (x < 1)
+ fun_l17_n163(x)
+ else
+ fun_l17_n164(x)
+ end
+end
+
+def fun_l16_n256(x)
+ if (x < 1)
+ fun_l17_n86(x)
+ else
+ fun_l17_n473(x)
+ end
+end
+
+def fun_l16_n257(x)
+ if (x < 1)
+ fun_l17_n519(x)
+ else
+ fun_l17_n556(x)
+ end
+end
+
+def fun_l16_n258(x)
+ if (x < 1)
+ fun_l17_n819(x)
+ else
+ fun_l17_n41(x)
+ end
+end
+
+def fun_l16_n259(x)
+ if (x < 1)
+ fun_l17_n330(x)
+ else
+ fun_l17_n334(x)
+ end
+end
+
+def fun_l16_n260(x)
+ if (x < 1)
+ fun_l17_n441(x)
+ else
+ fun_l17_n529(x)
+ end
+end
+
+def fun_l16_n261(x)
+ if (x < 1)
+ fun_l17_n116(x)
+ else
+ fun_l17_n597(x)
+ end
+end
+
+def fun_l16_n262(x)
+ if (x < 1)
+ fun_l17_n537(x)
+ else
+ fun_l17_n594(x)
+ end
+end
+
+def fun_l16_n263(x)
+ if (x < 1)
+ fun_l17_n511(x)
+ else
+ fun_l17_n56(x)
+ end
+end
+
+def fun_l16_n264(x)
+ if (x < 1)
+ fun_l17_n264(x)
+ else
+ fun_l17_n641(x)
+ end
+end
+
+def fun_l16_n265(x)
+ if (x < 1)
+ fun_l17_n806(x)
+ else
+ fun_l17_n432(x)
+ end
+end
+
+def fun_l16_n266(x)
+ if (x < 1)
+ fun_l17_n428(x)
+ else
+ fun_l17_n463(x)
+ end
+end
+
+def fun_l16_n267(x)
+ if (x < 1)
+ fun_l17_n39(x)
+ else
+ fun_l17_n362(x)
+ end
+end
+
+def fun_l16_n268(x)
+ if (x < 1)
+ fun_l17_n502(x)
+ else
+ fun_l17_n87(x)
+ end
+end
+
+def fun_l16_n269(x)
+ if (x < 1)
+ fun_l17_n143(x)
+ else
+ fun_l17_n92(x)
+ end
+end
+
+def fun_l16_n270(x)
+ if (x < 1)
+ fun_l17_n675(x)
+ else
+ fun_l17_n629(x)
+ end
+end
+
+def fun_l16_n271(x)
+ if (x < 1)
+ fun_l17_n33(x)
+ else
+ fun_l17_n158(x)
+ end
+end
+
+def fun_l16_n272(x)
+ if (x < 1)
+ fun_l17_n480(x)
+ else
+ fun_l17_n204(x)
+ end
+end
+
+def fun_l16_n273(x)
+ if (x < 1)
+ fun_l17_n81(x)
+ else
+ fun_l17_n855(x)
+ end
+end
+
+def fun_l16_n274(x)
+ if (x < 1)
+ fun_l17_n608(x)
+ else
+ fun_l17_n969(x)
+ end
+end
+
+def fun_l16_n275(x)
+ if (x < 1)
+ fun_l17_n606(x)
+ else
+ fun_l17_n292(x)
+ end
+end
+
+def fun_l16_n276(x)
+ if (x < 1)
+ fun_l17_n494(x)
+ else
+ fun_l17_n689(x)
+ end
+end
+
+def fun_l16_n277(x)
+ if (x < 1)
+ fun_l17_n3(x)
+ else
+ fun_l17_n207(x)
+ end
+end
+
+def fun_l16_n278(x)
+ if (x < 1)
+ fun_l17_n85(x)
+ else
+ fun_l17_n59(x)
+ end
+end
+
+def fun_l16_n279(x)
+ if (x < 1)
+ fun_l17_n363(x)
+ else
+ fun_l17_n651(x)
+ end
+end
+
+def fun_l16_n280(x)
+ if (x < 1)
+ fun_l17_n199(x)
+ else
+ fun_l17_n77(x)
+ end
+end
+
+def fun_l16_n281(x)
+ if (x < 1)
+ fun_l17_n83(x)
+ else
+ fun_l17_n865(x)
+ end
+end
+
+def fun_l16_n282(x)
+ if (x < 1)
+ fun_l17_n120(x)
+ else
+ fun_l17_n466(x)
+ end
+end
+
+def fun_l16_n283(x)
+ if (x < 1)
+ fun_l17_n667(x)
+ else
+ fun_l17_n867(x)
+ end
+end
+
+def fun_l16_n284(x)
+ if (x < 1)
+ fun_l17_n248(x)
+ else
+ fun_l17_n480(x)
+ end
+end
+
+def fun_l16_n285(x)
+ if (x < 1)
+ fun_l17_n766(x)
+ else
+ fun_l17_n609(x)
+ end
+end
+
+def fun_l16_n286(x)
+ if (x < 1)
+ fun_l17_n95(x)
+ else
+ fun_l17_n341(x)
+ end
+end
+
+def fun_l16_n287(x)
+ if (x < 1)
+ fun_l17_n234(x)
+ else
+ fun_l17_n552(x)
+ end
+end
+
+def fun_l16_n288(x)
+ if (x < 1)
+ fun_l17_n955(x)
+ else
+ fun_l17_n434(x)
+ end
+end
+
+def fun_l16_n289(x)
+ if (x < 1)
+ fun_l17_n954(x)
+ else
+ fun_l17_n554(x)
+ end
+end
+
+def fun_l16_n290(x)
+ if (x < 1)
+ fun_l17_n981(x)
+ else
+ fun_l17_n374(x)
+ end
+end
+
+def fun_l16_n291(x)
+ if (x < 1)
+ fun_l17_n153(x)
+ else
+ fun_l17_n849(x)
+ end
+end
+
+def fun_l16_n292(x)
+ if (x < 1)
+ fun_l17_n89(x)
+ else
+ fun_l17_n491(x)
+ end
+end
+
+def fun_l16_n293(x)
+ if (x < 1)
+ fun_l17_n908(x)
+ else
+ fun_l17_n75(x)
+ end
+end
+
+def fun_l16_n294(x)
+ if (x < 1)
+ fun_l17_n772(x)
+ else
+ fun_l17_n474(x)
+ end
+end
+
+def fun_l16_n295(x)
+ if (x < 1)
+ fun_l17_n577(x)
+ else
+ fun_l17_n470(x)
+ end
+end
+
+def fun_l16_n296(x)
+ if (x < 1)
+ fun_l17_n699(x)
+ else
+ fun_l17_n172(x)
+ end
+end
+
+def fun_l16_n297(x)
+ if (x < 1)
+ fun_l17_n408(x)
+ else
+ fun_l17_n314(x)
+ end
+end
+
+def fun_l16_n298(x)
+ if (x < 1)
+ fun_l17_n521(x)
+ else
+ fun_l17_n940(x)
+ end
+end
+
+def fun_l16_n299(x)
+ if (x < 1)
+ fun_l17_n804(x)
+ else
+ fun_l17_n503(x)
+ end
+end
+
+def fun_l16_n300(x)
+ if (x < 1)
+ fun_l17_n712(x)
+ else
+ fun_l17_n227(x)
+ end
+end
+
+def fun_l16_n301(x)
+ if (x < 1)
+ fun_l17_n700(x)
+ else
+ fun_l17_n102(x)
+ end
+end
+
+def fun_l16_n302(x)
+ if (x < 1)
+ fun_l17_n290(x)
+ else
+ fun_l17_n212(x)
+ end
+end
+
+def fun_l16_n303(x)
+ if (x < 1)
+ fun_l17_n525(x)
+ else
+ fun_l17_n273(x)
+ end
+end
+
+def fun_l16_n304(x)
+ if (x < 1)
+ fun_l17_n356(x)
+ else
+ fun_l17_n359(x)
+ end
+end
+
+def fun_l16_n305(x)
+ if (x < 1)
+ fun_l17_n84(x)
+ else
+ fun_l17_n207(x)
+ end
+end
+
+def fun_l16_n306(x)
+ if (x < 1)
+ fun_l17_n566(x)
+ else
+ fun_l17_n945(x)
+ end
+end
+
+def fun_l16_n307(x)
+ if (x < 1)
+ fun_l17_n692(x)
+ else
+ fun_l17_n326(x)
+ end
+end
+
+def fun_l16_n308(x)
+ if (x < 1)
+ fun_l17_n727(x)
+ else
+ fun_l17_n205(x)
+ end
+end
+
+def fun_l16_n309(x)
+ if (x < 1)
+ fun_l17_n568(x)
+ else
+ fun_l17_n386(x)
+ end
+end
+
+def fun_l16_n310(x)
+ if (x < 1)
+ fun_l17_n244(x)
+ else
+ fun_l17_n472(x)
+ end
+end
+
+def fun_l16_n311(x)
+ if (x < 1)
+ fun_l17_n956(x)
+ else
+ fun_l17_n546(x)
+ end
+end
+
+def fun_l16_n312(x)
+ if (x < 1)
+ fun_l17_n807(x)
+ else
+ fun_l17_n924(x)
+ end
+end
+
+def fun_l16_n313(x)
+ if (x < 1)
+ fun_l17_n931(x)
+ else
+ fun_l17_n962(x)
+ end
+end
+
+def fun_l16_n314(x)
+ if (x < 1)
+ fun_l17_n64(x)
+ else
+ fun_l17_n178(x)
+ end
+end
+
+def fun_l16_n315(x)
+ if (x < 1)
+ fun_l17_n460(x)
+ else
+ fun_l17_n438(x)
+ end
+end
+
+def fun_l16_n316(x)
+ if (x < 1)
+ fun_l17_n185(x)
+ else
+ fun_l17_n25(x)
+ end
+end
+
+def fun_l16_n317(x)
+ if (x < 1)
+ fun_l17_n732(x)
+ else
+ fun_l17_n460(x)
+ end
+end
+
+def fun_l16_n318(x)
+ if (x < 1)
+ fun_l17_n5(x)
+ else
+ fun_l17_n947(x)
+ end
+end
+
+def fun_l16_n319(x)
+ if (x < 1)
+ fun_l17_n682(x)
+ else
+ fun_l17_n644(x)
+ end
+end
+
+def fun_l16_n320(x)
+ if (x < 1)
+ fun_l17_n151(x)
+ else
+ fun_l17_n578(x)
+ end
+end
+
+def fun_l16_n321(x)
+ if (x < 1)
+ fun_l17_n219(x)
+ else
+ fun_l17_n4(x)
+ end
+end
+
+def fun_l16_n322(x)
+ if (x < 1)
+ fun_l17_n214(x)
+ else
+ fun_l17_n594(x)
+ end
+end
+
+def fun_l16_n323(x)
+ if (x < 1)
+ fun_l17_n970(x)
+ else
+ fun_l17_n275(x)
+ end
+end
+
+def fun_l16_n324(x)
+ if (x < 1)
+ fun_l17_n442(x)
+ else
+ fun_l17_n377(x)
+ end
+end
+
+def fun_l16_n325(x)
+ if (x < 1)
+ fun_l17_n783(x)
+ else
+ fun_l17_n731(x)
+ end
+end
+
+def fun_l16_n326(x)
+ if (x < 1)
+ fun_l17_n43(x)
+ else
+ fun_l17_n884(x)
+ end
+end
+
+def fun_l16_n327(x)
+ if (x < 1)
+ fun_l17_n857(x)
+ else
+ fun_l17_n593(x)
+ end
+end
+
+def fun_l16_n328(x)
+ if (x < 1)
+ fun_l17_n942(x)
+ else
+ fun_l17_n772(x)
+ end
+end
+
+def fun_l16_n329(x)
+ if (x < 1)
+ fun_l17_n309(x)
+ else
+ fun_l17_n508(x)
+ end
+end
+
+def fun_l16_n330(x)
+ if (x < 1)
+ fun_l17_n30(x)
+ else
+ fun_l17_n165(x)
+ end
+end
+
+def fun_l16_n331(x)
+ if (x < 1)
+ fun_l17_n981(x)
+ else
+ fun_l17_n355(x)
+ end
+end
+
+def fun_l16_n332(x)
+ if (x < 1)
+ fun_l17_n159(x)
+ else
+ fun_l17_n228(x)
+ end
+end
+
+def fun_l16_n333(x)
+ if (x < 1)
+ fun_l17_n499(x)
+ else
+ fun_l17_n565(x)
+ end
+end
+
+def fun_l16_n334(x)
+ if (x < 1)
+ fun_l17_n371(x)
+ else
+ fun_l17_n856(x)
+ end
+end
+
+def fun_l16_n335(x)
+ if (x < 1)
+ fun_l17_n717(x)
+ else
+ fun_l17_n229(x)
+ end
+end
+
+def fun_l16_n336(x)
+ if (x < 1)
+ fun_l17_n678(x)
+ else
+ fun_l17_n236(x)
+ end
+end
+
+def fun_l16_n337(x)
+ if (x < 1)
+ fun_l17_n472(x)
+ else
+ fun_l17_n566(x)
+ end
+end
+
+def fun_l16_n338(x)
+ if (x < 1)
+ fun_l17_n74(x)
+ else
+ fun_l17_n247(x)
+ end
+end
+
+def fun_l16_n339(x)
+ if (x < 1)
+ fun_l17_n379(x)
+ else
+ fun_l17_n443(x)
+ end
+end
+
+def fun_l16_n340(x)
+ if (x < 1)
+ fun_l17_n233(x)
+ else
+ fun_l17_n79(x)
+ end
+end
+
+def fun_l16_n341(x)
+ if (x < 1)
+ fun_l17_n136(x)
+ else
+ fun_l17_n900(x)
+ end
+end
+
+def fun_l16_n342(x)
+ if (x < 1)
+ fun_l17_n785(x)
+ else
+ fun_l17_n63(x)
+ end
+end
+
+def fun_l16_n343(x)
+ if (x < 1)
+ fun_l17_n429(x)
+ else
+ fun_l17_n111(x)
+ end
+end
+
+def fun_l16_n344(x)
+ if (x < 1)
+ fun_l17_n226(x)
+ else
+ fun_l17_n137(x)
+ end
+end
+
+def fun_l16_n345(x)
+ if (x < 1)
+ fun_l17_n428(x)
+ else
+ fun_l17_n674(x)
+ end
+end
+
+def fun_l16_n346(x)
+ if (x < 1)
+ fun_l17_n940(x)
+ else
+ fun_l17_n987(x)
+ end
+end
+
+def fun_l16_n347(x)
+ if (x < 1)
+ fun_l17_n579(x)
+ else
+ fun_l17_n220(x)
+ end
+end
+
+def fun_l16_n348(x)
+ if (x < 1)
+ fun_l17_n502(x)
+ else
+ fun_l17_n530(x)
+ end
+end
+
+def fun_l16_n349(x)
+ if (x < 1)
+ fun_l17_n334(x)
+ else
+ fun_l17_n955(x)
+ end
+end
+
+def fun_l16_n350(x)
+ if (x < 1)
+ fun_l17_n680(x)
+ else
+ fun_l17_n41(x)
+ end
+end
+
+def fun_l16_n351(x)
+ if (x < 1)
+ fun_l17_n821(x)
+ else
+ fun_l17_n750(x)
+ end
+end
+
+def fun_l16_n352(x)
+ if (x < 1)
+ fun_l17_n212(x)
+ else
+ fun_l17_n537(x)
+ end
+end
+
+def fun_l16_n353(x)
+ if (x < 1)
+ fun_l17_n555(x)
+ else
+ fun_l17_n834(x)
+ end
+end
+
+def fun_l16_n354(x)
+ if (x < 1)
+ fun_l17_n532(x)
+ else
+ fun_l17_n940(x)
+ end
+end
+
+def fun_l16_n355(x)
+ if (x < 1)
+ fun_l17_n771(x)
+ else
+ fun_l17_n915(x)
+ end
+end
+
+def fun_l16_n356(x)
+ if (x < 1)
+ fun_l17_n844(x)
+ else
+ fun_l17_n235(x)
+ end
+end
+
+def fun_l16_n357(x)
+ if (x < 1)
+ fun_l17_n604(x)
+ else
+ fun_l17_n241(x)
+ end
+end
+
+def fun_l16_n358(x)
+ if (x < 1)
+ fun_l17_n156(x)
+ else
+ fun_l17_n832(x)
+ end
+end
+
+def fun_l16_n359(x)
+ if (x < 1)
+ fun_l17_n335(x)
+ else
+ fun_l17_n115(x)
+ end
+end
+
+def fun_l16_n360(x)
+ if (x < 1)
+ fun_l17_n563(x)
+ else
+ fun_l17_n779(x)
+ end
+end
+
+def fun_l16_n361(x)
+ if (x < 1)
+ fun_l17_n280(x)
+ else
+ fun_l17_n946(x)
+ end
+end
+
+def fun_l16_n362(x)
+ if (x < 1)
+ fun_l17_n497(x)
+ else
+ fun_l17_n390(x)
+ end
+end
+
+def fun_l16_n363(x)
+ if (x < 1)
+ fun_l17_n59(x)
+ else
+ fun_l17_n178(x)
+ end
+end
+
+def fun_l16_n364(x)
+ if (x < 1)
+ fun_l17_n509(x)
+ else
+ fun_l17_n963(x)
+ end
+end
+
+def fun_l16_n365(x)
+ if (x < 1)
+ fun_l17_n670(x)
+ else
+ fun_l17_n455(x)
+ end
+end
+
+def fun_l16_n366(x)
+ if (x < 1)
+ fun_l17_n852(x)
+ else
+ fun_l17_n590(x)
+ end
+end
+
+def fun_l16_n367(x)
+ if (x < 1)
+ fun_l17_n714(x)
+ else
+ fun_l17_n98(x)
+ end
+end
+
+def fun_l16_n368(x)
+ if (x < 1)
+ fun_l17_n456(x)
+ else
+ fun_l17_n754(x)
+ end
+end
+
+def fun_l16_n369(x)
+ if (x < 1)
+ fun_l17_n809(x)
+ else
+ fun_l17_n38(x)
+ end
+end
+
+def fun_l16_n370(x)
+ if (x < 1)
+ fun_l17_n127(x)
+ else
+ fun_l17_n395(x)
+ end
+end
+
+def fun_l16_n371(x)
+ if (x < 1)
+ fun_l17_n700(x)
+ else
+ fun_l17_n175(x)
+ end
+end
+
+def fun_l16_n372(x)
+ if (x < 1)
+ fun_l17_n705(x)
+ else
+ fun_l17_n598(x)
+ end
+end
+
+def fun_l16_n373(x)
+ if (x < 1)
+ fun_l17_n808(x)
+ else
+ fun_l17_n253(x)
+ end
+end
+
+def fun_l16_n374(x)
+ if (x < 1)
+ fun_l17_n195(x)
+ else
+ fun_l17_n47(x)
+ end
+end
+
+def fun_l16_n375(x)
+ if (x < 1)
+ fun_l17_n124(x)
+ else
+ fun_l17_n438(x)
+ end
+end
+
+def fun_l16_n376(x)
+ if (x < 1)
+ fun_l17_n261(x)
+ else
+ fun_l17_n317(x)
+ end
+end
+
+def fun_l16_n377(x)
+ if (x < 1)
+ fun_l17_n702(x)
+ else
+ fun_l17_n67(x)
+ end
+end
+
+def fun_l16_n378(x)
+ if (x < 1)
+ fun_l17_n194(x)
+ else
+ fun_l17_n990(x)
+ end
+end
+
+def fun_l16_n379(x)
+ if (x < 1)
+ fun_l17_n574(x)
+ else
+ fun_l17_n379(x)
+ end
+end
+
+def fun_l16_n380(x)
+ if (x < 1)
+ fun_l17_n182(x)
+ else
+ fun_l17_n902(x)
+ end
+end
+
+def fun_l16_n381(x)
+ if (x < 1)
+ fun_l17_n963(x)
+ else
+ fun_l17_n627(x)
+ end
+end
+
+def fun_l16_n382(x)
+ if (x < 1)
+ fun_l17_n200(x)
+ else
+ fun_l17_n889(x)
+ end
+end
+
+def fun_l16_n383(x)
+ if (x < 1)
+ fun_l17_n14(x)
+ else
+ fun_l17_n422(x)
+ end
+end
+
+def fun_l16_n384(x)
+ if (x < 1)
+ fun_l17_n543(x)
+ else
+ fun_l17_n940(x)
+ end
+end
+
+def fun_l16_n385(x)
+ if (x < 1)
+ fun_l17_n762(x)
+ else
+ fun_l17_n493(x)
+ end
+end
+
+def fun_l16_n386(x)
+ if (x < 1)
+ fun_l17_n824(x)
+ else
+ fun_l17_n963(x)
+ end
+end
+
+def fun_l16_n387(x)
+ if (x < 1)
+ fun_l17_n298(x)
+ else
+ fun_l17_n831(x)
+ end
+end
+
+def fun_l16_n388(x)
+ if (x < 1)
+ fun_l17_n284(x)
+ else
+ fun_l17_n784(x)
+ end
+end
+
+def fun_l16_n389(x)
+ if (x < 1)
+ fun_l17_n461(x)
+ else
+ fun_l17_n684(x)
+ end
+end
+
+def fun_l16_n390(x)
+ if (x < 1)
+ fun_l17_n829(x)
+ else
+ fun_l17_n788(x)
+ end
+end
+
+def fun_l16_n391(x)
+ if (x < 1)
+ fun_l17_n263(x)
+ else
+ fun_l17_n21(x)
+ end
+end
+
+def fun_l16_n392(x)
+ if (x < 1)
+ fun_l17_n994(x)
+ else
+ fun_l17_n646(x)
+ end
+end
+
+def fun_l16_n393(x)
+ if (x < 1)
+ fun_l17_n438(x)
+ else
+ fun_l17_n84(x)
+ end
+end
+
+def fun_l16_n394(x)
+ if (x < 1)
+ fun_l17_n660(x)
+ else
+ fun_l17_n269(x)
+ end
+end
+
+def fun_l16_n395(x)
+ if (x < 1)
+ fun_l17_n939(x)
+ else
+ fun_l17_n676(x)
+ end
+end
+
+def fun_l16_n396(x)
+ if (x < 1)
+ fun_l17_n608(x)
+ else
+ fun_l17_n483(x)
+ end
+end
+
+def fun_l16_n397(x)
+ if (x < 1)
+ fun_l17_n504(x)
+ else
+ fun_l17_n499(x)
+ end
+end
+
+def fun_l16_n398(x)
+ if (x < 1)
+ fun_l17_n793(x)
+ else
+ fun_l17_n489(x)
+ end
+end
+
+def fun_l16_n399(x)
+ if (x < 1)
+ fun_l17_n28(x)
+ else
+ fun_l17_n158(x)
+ end
+end
+
+def fun_l16_n400(x)
+ if (x < 1)
+ fun_l17_n30(x)
+ else
+ fun_l17_n21(x)
+ end
+end
+
+def fun_l16_n401(x)
+ if (x < 1)
+ fun_l17_n532(x)
+ else
+ fun_l17_n730(x)
+ end
+end
+
+def fun_l16_n402(x)
+ if (x < 1)
+ fun_l17_n593(x)
+ else
+ fun_l17_n4(x)
+ end
+end
+
+def fun_l16_n403(x)
+ if (x < 1)
+ fun_l17_n881(x)
+ else
+ fun_l17_n956(x)
+ end
+end
+
+def fun_l16_n404(x)
+ if (x < 1)
+ fun_l17_n676(x)
+ else
+ fun_l17_n625(x)
+ end
+end
+
+def fun_l16_n405(x)
+ if (x < 1)
+ fun_l17_n192(x)
+ else
+ fun_l17_n301(x)
+ end
+end
+
+def fun_l16_n406(x)
+ if (x < 1)
+ fun_l17_n170(x)
+ else
+ fun_l17_n970(x)
+ end
+end
+
+def fun_l16_n407(x)
+ if (x < 1)
+ fun_l17_n268(x)
+ else
+ fun_l17_n765(x)
+ end
+end
+
+def fun_l16_n408(x)
+ if (x < 1)
+ fun_l17_n310(x)
+ else
+ fun_l17_n578(x)
+ end
+end
+
+def fun_l16_n409(x)
+ if (x < 1)
+ fun_l17_n301(x)
+ else
+ fun_l17_n870(x)
+ end
+end
+
+def fun_l16_n410(x)
+ if (x < 1)
+ fun_l17_n390(x)
+ else
+ fun_l17_n769(x)
+ end
+end
+
+def fun_l16_n411(x)
+ if (x < 1)
+ fun_l17_n973(x)
+ else
+ fun_l17_n545(x)
+ end
+end
+
+def fun_l16_n412(x)
+ if (x < 1)
+ fun_l17_n108(x)
+ else
+ fun_l17_n731(x)
+ end
+end
+
+def fun_l16_n413(x)
+ if (x < 1)
+ fun_l17_n842(x)
+ else
+ fun_l17_n106(x)
+ end
+end
+
+def fun_l16_n414(x)
+ if (x < 1)
+ fun_l17_n10(x)
+ else
+ fun_l17_n421(x)
+ end
+end
+
+def fun_l16_n415(x)
+ if (x < 1)
+ fun_l17_n765(x)
+ else
+ fun_l17_n584(x)
+ end
+end
+
+def fun_l16_n416(x)
+ if (x < 1)
+ fun_l17_n480(x)
+ else
+ fun_l17_n494(x)
+ end
+end
+
+def fun_l16_n417(x)
+ if (x < 1)
+ fun_l17_n977(x)
+ else
+ fun_l17_n66(x)
+ end
+end
+
+def fun_l16_n418(x)
+ if (x < 1)
+ fun_l17_n291(x)
+ else
+ fun_l17_n161(x)
+ end
+end
+
+def fun_l16_n419(x)
+ if (x < 1)
+ fun_l17_n400(x)
+ else
+ fun_l17_n99(x)
+ end
+end
+
+def fun_l16_n420(x)
+ if (x < 1)
+ fun_l17_n621(x)
+ else
+ fun_l17_n778(x)
+ end
+end
+
+def fun_l16_n421(x)
+ if (x < 1)
+ fun_l17_n286(x)
+ else
+ fun_l17_n784(x)
+ end
+end
+
+def fun_l16_n422(x)
+ if (x < 1)
+ fun_l17_n575(x)
+ else
+ fun_l17_n606(x)
+ end
+end
+
+def fun_l16_n423(x)
+ if (x < 1)
+ fun_l17_n459(x)
+ else
+ fun_l17_n198(x)
+ end
+end
+
+def fun_l16_n424(x)
+ if (x < 1)
+ fun_l17_n190(x)
+ else
+ fun_l17_n597(x)
+ end
+end
+
+def fun_l16_n425(x)
+ if (x < 1)
+ fun_l17_n365(x)
+ else
+ fun_l17_n73(x)
+ end
+end
+
+def fun_l16_n426(x)
+ if (x < 1)
+ fun_l17_n769(x)
+ else
+ fun_l17_n658(x)
+ end
+end
+
+def fun_l16_n427(x)
+ if (x < 1)
+ fun_l17_n980(x)
+ else
+ fun_l17_n594(x)
+ end
+end
+
+def fun_l16_n428(x)
+ if (x < 1)
+ fun_l17_n210(x)
+ else
+ fun_l17_n33(x)
+ end
+end
+
+def fun_l16_n429(x)
+ if (x < 1)
+ fun_l17_n585(x)
+ else
+ fun_l17_n997(x)
+ end
+end
+
+def fun_l16_n430(x)
+ if (x < 1)
+ fun_l17_n660(x)
+ else
+ fun_l17_n883(x)
+ end
+end
+
+def fun_l16_n431(x)
+ if (x < 1)
+ fun_l17_n613(x)
+ else
+ fun_l17_n7(x)
+ end
+end
+
+def fun_l16_n432(x)
+ if (x < 1)
+ fun_l17_n764(x)
+ else
+ fun_l17_n150(x)
+ end
+end
+
+def fun_l16_n433(x)
+ if (x < 1)
+ fun_l17_n582(x)
+ else
+ fun_l17_n197(x)
+ end
+end
+
+def fun_l16_n434(x)
+ if (x < 1)
+ fun_l17_n553(x)
+ else
+ fun_l17_n107(x)
+ end
+end
+
+def fun_l16_n435(x)
+ if (x < 1)
+ fun_l17_n975(x)
+ else
+ fun_l17_n865(x)
+ end
+end
+
+def fun_l16_n436(x)
+ if (x < 1)
+ fun_l17_n622(x)
+ else
+ fun_l17_n351(x)
+ end
+end
+
+def fun_l16_n437(x)
+ if (x < 1)
+ fun_l17_n681(x)
+ else
+ fun_l17_n472(x)
+ end
+end
+
+def fun_l16_n438(x)
+ if (x < 1)
+ fun_l17_n329(x)
+ else
+ fun_l17_n54(x)
+ end
+end
+
+def fun_l16_n439(x)
+ if (x < 1)
+ fun_l17_n340(x)
+ else
+ fun_l17_n567(x)
+ end
+end
+
+def fun_l16_n440(x)
+ if (x < 1)
+ fun_l17_n563(x)
+ else
+ fun_l17_n134(x)
+ end
+end
+
+def fun_l16_n441(x)
+ if (x < 1)
+ fun_l17_n194(x)
+ else
+ fun_l17_n986(x)
+ end
+end
+
+def fun_l16_n442(x)
+ if (x < 1)
+ fun_l17_n926(x)
+ else
+ fun_l17_n35(x)
+ end
+end
+
+def fun_l16_n443(x)
+ if (x < 1)
+ fun_l17_n771(x)
+ else
+ fun_l17_n383(x)
+ end
+end
+
+def fun_l16_n444(x)
+ if (x < 1)
+ fun_l17_n682(x)
+ else
+ fun_l17_n1(x)
+ end
+end
+
+def fun_l16_n445(x)
+ if (x < 1)
+ fun_l17_n633(x)
+ else
+ fun_l17_n757(x)
+ end
+end
+
+def fun_l16_n446(x)
+ if (x < 1)
+ fun_l17_n95(x)
+ else
+ fun_l17_n256(x)
+ end
+end
+
+def fun_l16_n447(x)
+ if (x < 1)
+ fun_l17_n183(x)
+ else
+ fun_l17_n214(x)
+ end
+end
+
+def fun_l16_n448(x)
+ if (x < 1)
+ fun_l17_n140(x)
+ else
+ fun_l17_n371(x)
+ end
+end
+
+def fun_l16_n449(x)
+ if (x < 1)
+ fun_l17_n188(x)
+ else
+ fun_l17_n898(x)
+ end
+end
+
+def fun_l16_n450(x)
+ if (x < 1)
+ fun_l17_n710(x)
+ else
+ fun_l17_n512(x)
+ end
+end
+
+def fun_l16_n451(x)
+ if (x < 1)
+ fun_l17_n796(x)
+ else
+ fun_l17_n56(x)
+ end
+end
+
+def fun_l16_n452(x)
+ if (x < 1)
+ fun_l17_n124(x)
+ else
+ fun_l17_n304(x)
+ end
+end
+
+def fun_l16_n453(x)
+ if (x < 1)
+ fun_l17_n150(x)
+ else
+ fun_l17_n503(x)
+ end
+end
+
+def fun_l16_n454(x)
+ if (x < 1)
+ fun_l17_n369(x)
+ else
+ fun_l17_n623(x)
+ end
+end
+
+def fun_l16_n455(x)
+ if (x < 1)
+ fun_l17_n514(x)
+ else
+ fun_l17_n672(x)
+ end
+end
+
+def fun_l16_n456(x)
+ if (x < 1)
+ fun_l17_n80(x)
+ else
+ fun_l17_n332(x)
+ end
+end
+
+def fun_l16_n457(x)
+ if (x < 1)
+ fun_l17_n80(x)
+ else
+ fun_l17_n32(x)
+ end
+end
+
+def fun_l16_n458(x)
+ if (x < 1)
+ fun_l17_n310(x)
+ else
+ fun_l17_n90(x)
+ end
+end
+
+def fun_l16_n459(x)
+ if (x < 1)
+ fun_l17_n730(x)
+ else
+ fun_l17_n170(x)
+ end
+end
+
+def fun_l16_n460(x)
+ if (x < 1)
+ fun_l17_n908(x)
+ else
+ fun_l17_n865(x)
+ end
+end
+
+def fun_l16_n461(x)
+ if (x < 1)
+ fun_l17_n399(x)
+ else
+ fun_l17_n536(x)
+ end
+end
+
+def fun_l16_n462(x)
+ if (x < 1)
+ fun_l17_n123(x)
+ else
+ fun_l17_n216(x)
+ end
+end
+
+def fun_l16_n463(x)
+ if (x < 1)
+ fun_l17_n577(x)
+ else
+ fun_l17_n757(x)
+ end
+end
+
+def fun_l16_n464(x)
+ if (x < 1)
+ fun_l17_n750(x)
+ else
+ fun_l17_n916(x)
+ end
+end
+
+def fun_l16_n465(x)
+ if (x < 1)
+ fun_l17_n621(x)
+ else
+ fun_l17_n386(x)
+ end
+end
+
+def fun_l16_n466(x)
+ if (x < 1)
+ fun_l17_n904(x)
+ else
+ fun_l17_n732(x)
+ end
+end
+
+def fun_l16_n467(x)
+ if (x < 1)
+ fun_l17_n625(x)
+ else
+ fun_l17_n1(x)
+ end
+end
+
+def fun_l16_n468(x)
+ if (x < 1)
+ fun_l17_n762(x)
+ else
+ fun_l17_n373(x)
+ end
+end
+
+def fun_l16_n469(x)
+ if (x < 1)
+ fun_l17_n816(x)
+ else
+ fun_l17_n490(x)
+ end
+end
+
+def fun_l16_n470(x)
+ if (x < 1)
+ fun_l17_n908(x)
+ else
+ fun_l17_n701(x)
+ end
+end
+
+def fun_l16_n471(x)
+ if (x < 1)
+ fun_l17_n690(x)
+ else
+ fun_l17_n374(x)
+ end
+end
+
+def fun_l16_n472(x)
+ if (x < 1)
+ fun_l17_n753(x)
+ else
+ fun_l17_n625(x)
+ end
+end
+
+def fun_l16_n473(x)
+ if (x < 1)
+ fun_l17_n602(x)
+ else
+ fun_l17_n947(x)
+ end
+end
+
+def fun_l16_n474(x)
+ if (x < 1)
+ fun_l17_n565(x)
+ else
+ fun_l17_n320(x)
+ end
+end
+
+def fun_l16_n475(x)
+ if (x < 1)
+ fun_l17_n990(x)
+ else
+ fun_l17_n431(x)
+ end
+end
+
+def fun_l16_n476(x)
+ if (x < 1)
+ fun_l17_n135(x)
+ else
+ fun_l17_n506(x)
+ end
+end
+
+def fun_l16_n477(x)
+ if (x < 1)
+ fun_l17_n57(x)
+ else
+ fun_l17_n944(x)
+ end
+end
+
+def fun_l16_n478(x)
+ if (x < 1)
+ fun_l17_n877(x)
+ else
+ fun_l17_n28(x)
+ end
+end
+
+def fun_l16_n479(x)
+ if (x < 1)
+ fun_l17_n132(x)
+ else
+ fun_l17_n280(x)
+ end
+end
+
+def fun_l16_n480(x)
+ if (x < 1)
+ fun_l17_n514(x)
+ else
+ fun_l17_n51(x)
+ end
+end
+
+def fun_l16_n481(x)
+ if (x < 1)
+ fun_l17_n55(x)
+ else
+ fun_l17_n366(x)
+ end
+end
+
+def fun_l16_n482(x)
+ if (x < 1)
+ fun_l17_n59(x)
+ else
+ fun_l17_n810(x)
+ end
+end
+
+def fun_l16_n483(x)
+ if (x < 1)
+ fun_l17_n965(x)
+ else
+ fun_l17_n55(x)
+ end
+end
+
+def fun_l16_n484(x)
+ if (x < 1)
+ fun_l17_n813(x)
+ else
+ fun_l17_n408(x)
+ end
+end
+
+def fun_l16_n485(x)
+ if (x < 1)
+ fun_l17_n190(x)
+ else
+ fun_l17_n126(x)
+ end
+end
+
+def fun_l16_n486(x)
+ if (x < 1)
+ fun_l17_n479(x)
+ else
+ fun_l17_n964(x)
+ end
+end
+
+def fun_l16_n487(x)
+ if (x < 1)
+ fun_l17_n267(x)
+ else
+ fun_l17_n867(x)
+ end
+end
+
+def fun_l16_n488(x)
+ if (x < 1)
+ fun_l17_n787(x)
+ else
+ fun_l17_n34(x)
+ end
+end
+
+def fun_l16_n489(x)
+ if (x < 1)
+ fun_l17_n223(x)
+ else
+ fun_l17_n568(x)
+ end
+end
+
+def fun_l16_n490(x)
+ if (x < 1)
+ fun_l17_n773(x)
+ else
+ fun_l17_n11(x)
+ end
+end
+
+def fun_l16_n491(x)
+ if (x < 1)
+ fun_l17_n906(x)
+ else
+ fun_l17_n146(x)
+ end
+end
+
+def fun_l16_n492(x)
+ if (x < 1)
+ fun_l17_n221(x)
+ else
+ fun_l17_n136(x)
+ end
+end
+
+def fun_l16_n493(x)
+ if (x < 1)
+ fun_l17_n40(x)
+ else
+ fun_l17_n599(x)
+ end
+end
+
+def fun_l16_n494(x)
+ if (x < 1)
+ fun_l17_n494(x)
+ else
+ fun_l17_n591(x)
+ end
+end
+
+def fun_l16_n495(x)
+ if (x < 1)
+ fun_l17_n237(x)
+ else
+ fun_l17_n149(x)
+ end
+end
+
+def fun_l16_n496(x)
+ if (x < 1)
+ fun_l17_n501(x)
+ else
+ fun_l17_n681(x)
+ end
+end
+
+def fun_l16_n497(x)
+ if (x < 1)
+ fun_l17_n141(x)
+ else
+ fun_l17_n226(x)
+ end
+end
+
+def fun_l16_n498(x)
+ if (x < 1)
+ fun_l17_n868(x)
+ else
+ fun_l17_n837(x)
+ end
+end
+
+def fun_l16_n499(x)
+ if (x < 1)
+ fun_l17_n921(x)
+ else
+ fun_l17_n806(x)
+ end
+end
+
+def fun_l16_n500(x)
+ if (x < 1)
+ fun_l17_n117(x)
+ else
+ fun_l17_n835(x)
+ end
+end
+
+def fun_l16_n501(x)
+ if (x < 1)
+ fun_l17_n872(x)
+ else
+ fun_l17_n567(x)
+ end
+end
+
+def fun_l16_n502(x)
+ if (x < 1)
+ fun_l17_n787(x)
+ else
+ fun_l17_n785(x)
+ end
+end
+
+def fun_l16_n503(x)
+ if (x < 1)
+ fun_l17_n827(x)
+ else
+ fun_l17_n388(x)
+ end
+end
+
+def fun_l16_n504(x)
+ if (x < 1)
+ fun_l17_n328(x)
+ else
+ fun_l17_n849(x)
+ end
+end
+
+def fun_l16_n505(x)
+ if (x < 1)
+ fun_l17_n348(x)
+ else
+ fun_l17_n580(x)
+ end
+end
+
+def fun_l16_n506(x)
+ if (x < 1)
+ fun_l17_n408(x)
+ else
+ fun_l17_n236(x)
+ end
+end
+
+def fun_l16_n507(x)
+ if (x < 1)
+ fun_l17_n959(x)
+ else
+ fun_l17_n739(x)
+ end
+end
+
+def fun_l16_n508(x)
+ if (x < 1)
+ fun_l17_n496(x)
+ else
+ fun_l17_n774(x)
+ end
+end
+
+def fun_l16_n509(x)
+ if (x < 1)
+ fun_l17_n639(x)
+ else
+ fun_l17_n147(x)
+ end
+end
+
+def fun_l16_n510(x)
+ if (x < 1)
+ fun_l17_n910(x)
+ else
+ fun_l17_n697(x)
+ end
+end
+
+def fun_l16_n511(x)
+ if (x < 1)
+ fun_l17_n239(x)
+ else
+ fun_l17_n691(x)
+ end
+end
+
+def fun_l16_n512(x)
+ if (x < 1)
+ fun_l17_n923(x)
+ else
+ fun_l17_n735(x)
+ end
+end
+
+def fun_l16_n513(x)
+ if (x < 1)
+ fun_l17_n911(x)
+ else
+ fun_l17_n372(x)
+ end
+end
+
+def fun_l16_n514(x)
+ if (x < 1)
+ fun_l17_n706(x)
+ else
+ fun_l17_n27(x)
+ end
+end
+
+def fun_l16_n515(x)
+ if (x < 1)
+ fun_l17_n788(x)
+ else
+ fun_l17_n670(x)
+ end
+end
+
+def fun_l16_n516(x)
+ if (x < 1)
+ fun_l17_n507(x)
+ else
+ fun_l17_n330(x)
+ end
+end
+
+def fun_l16_n517(x)
+ if (x < 1)
+ fun_l17_n398(x)
+ else
+ fun_l17_n997(x)
+ end
+end
+
+def fun_l16_n518(x)
+ if (x < 1)
+ fun_l17_n675(x)
+ else
+ fun_l17_n383(x)
+ end
+end
+
+def fun_l16_n519(x)
+ if (x < 1)
+ fun_l17_n193(x)
+ else
+ fun_l17_n611(x)
+ end
+end
+
+def fun_l16_n520(x)
+ if (x < 1)
+ fun_l17_n884(x)
+ else
+ fun_l17_n200(x)
+ end
+end
+
+def fun_l16_n521(x)
+ if (x < 1)
+ fun_l17_n574(x)
+ else
+ fun_l17_n192(x)
+ end
+end
+
+def fun_l16_n522(x)
+ if (x < 1)
+ fun_l17_n883(x)
+ else
+ fun_l17_n399(x)
+ end
+end
+
+def fun_l16_n523(x)
+ if (x < 1)
+ fun_l17_n516(x)
+ else
+ fun_l17_n592(x)
+ end
+end
+
+def fun_l16_n524(x)
+ if (x < 1)
+ fun_l17_n653(x)
+ else
+ fun_l17_n355(x)
+ end
+end
+
+def fun_l16_n525(x)
+ if (x < 1)
+ fun_l17_n872(x)
+ else
+ fun_l17_n714(x)
+ end
+end
+
+def fun_l16_n526(x)
+ if (x < 1)
+ fun_l17_n891(x)
+ else
+ fun_l17_n70(x)
+ end
+end
+
+def fun_l16_n527(x)
+ if (x < 1)
+ fun_l17_n46(x)
+ else
+ fun_l17_n591(x)
+ end
+end
+
+def fun_l16_n528(x)
+ if (x < 1)
+ fun_l17_n969(x)
+ else
+ fun_l17_n289(x)
+ end
+end
+
+def fun_l16_n529(x)
+ if (x < 1)
+ fun_l17_n713(x)
+ else
+ fun_l17_n775(x)
+ end
+end
+
+def fun_l16_n530(x)
+ if (x < 1)
+ fun_l17_n374(x)
+ else
+ fun_l17_n708(x)
+ end
+end
+
+def fun_l16_n531(x)
+ if (x < 1)
+ fun_l17_n996(x)
+ else
+ fun_l17_n764(x)
+ end
+end
+
+def fun_l16_n532(x)
+ if (x < 1)
+ fun_l17_n314(x)
+ else
+ fun_l17_n445(x)
+ end
+end
+
+def fun_l16_n533(x)
+ if (x < 1)
+ fun_l17_n951(x)
+ else
+ fun_l17_n912(x)
+ end
+end
+
+def fun_l16_n534(x)
+ if (x < 1)
+ fun_l17_n760(x)
+ else
+ fun_l17_n445(x)
+ end
+end
+
+def fun_l16_n535(x)
+ if (x < 1)
+ fun_l17_n310(x)
+ else
+ fun_l17_n16(x)
+ end
+end
+
+def fun_l16_n536(x)
+ if (x < 1)
+ fun_l17_n254(x)
+ else
+ fun_l17_n693(x)
+ end
+end
+
+def fun_l16_n537(x)
+ if (x < 1)
+ fun_l17_n631(x)
+ else
+ fun_l17_n934(x)
+ end
+end
+
+def fun_l16_n538(x)
+ if (x < 1)
+ fun_l17_n944(x)
+ else
+ fun_l17_n922(x)
+ end
+end
+
+def fun_l16_n539(x)
+ if (x < 1)
+ fun_l17_n263(x)
+ else
+ fun_l17_n796(x)
+ end
+end
+
+def fun_l16_n540(x)
+ if (x < 1)
+ fun_l17_n928(x)
+ else
+ fun_l17_n604(x)
+ end
+end
+
+def fun_l16_n541(x)
+ if (x < 1)
+ fun_l17_n678(x)
+ else
+ fun_l17_n880(x)
+ end
+end
+
+def fun_l16_n542(x)
+ if (x < 1)
+ fun_l17_n286(x)
+ else
+ fun_l17_n123(x)
+ end
+end
+
+def fun_l16_n543(x)
+ if (x < 1)
+ fun_l17_n604(x)
+ else
+ fun_l17_n57(x)
+ end
+end
+
+def fun_l16_n544(x)
+ if (x < 1)
+ fun_l17_n204(x)
+ else
+ fun_l17_n950(x)
+ end
+end
+
+def fun_l16_n545(x)
+ if (x < 1)
+ fun_l17_n60(x)
+ else
+ fun_l17_n667(x)
+ end
+end
+
+def fun_l16_n546(x)
+ if (x < 1)
+ fun_l17_n472(x)
+ else
+ fun_l17_n818(x)
+ end
+end
+
+def fun_l16_n547(x)
+ if (x < 1)
+ fun_l17_n515(x)
+ else
+ fun_l17_n180(x)
+ end
+end
+
+def fun_l16_n548(x)
+ if (x < 1)
+ fun_l17_n443(x)
+ else
+ fun_l17_n159(x)
+ end
+end
+
+def fun_l16_n549(x)
+ if (x < 1)
+ fun_l17_n820(x)
+ else
+ fun_l17_n468(x)
+ end
+end
+
+def fun_l16_n550(x)
+ if (x < 1)
+ fun_l17_n938(x)
+ else
+ fun_l17_n307(x)
+ end
+end
+
+def fun_l16_n551(x)
+ if (x < 1)
+ fun_l17_n350(x)
+ else
+ fun_l17_n177(x)
+ end
+end
+
+def fun_l16_n552(x)
+ if (x < 1)
+ fun_l17_n761(x)
+ else
+ fun_l17_n35(x)
+ end
+end
+
+def fun_l16_n553(x)
+ if (x < 1)
+ fun_l17_n189(x)
+ else
+ fun_l17_n991(x)
+ end
+end
+
+def fun_l16_n554(x)
+ if (x < 1)
+ fun_l17_n234(x)
+ else
+ fun_l17_n721(x)
+ end
+end
+
+def fun_l16_n555(x)
+ if (x < 1)
+ fun_l17_n42(x)
+ else
+ fun_l17_n273(x)
+ end
+end
+
+def fun_l16_n556(x)
+ if (x < 1)
+ fun_l17_n261(x)
+ else
+ fun_l17_n328(x)
+ end
+end
+
+def fun_l16_n557(x)
+ if (x < 1)
+ fun_l17_n28(x)
+ else
+ fun_l17_n403(x)
+ end
+end
+
+def fun_l16_n558(x)
+ if (x < 1)
+ fun_l17_n766(x)
+ else
+ fun_l17_n363(x)
+ end
+end
+
+def fun_l16_n559(x)
+ if (x < 1)
+ fun_l17_n35(x)
+ else
+ fun_l17_n648(x)
+ end
+end
+
+def fun_l16_n560(x)
+ if (x < 1)
+ fun_l17_n288(x)
+ else
+ fun_l17_n684(x)
+ end
+end
+
+def fun_l16_n561(x)
+ if (x < 1)
+ fun_l17_n529(x)
+ else
+ fun_l17_n908(x)
+ end
+end
+
+def fun_l16_n562(x)
+ if (x < 1)
+ fun_l17_n244(x)
+ else
+ fun_l17_n342(x)
+ end
+end
+
+def fun_l16_n563(x)
+ if (x < 1)
+ fun_l17_n535(x)
+ else
+ fun_l17_n750(x)
+ end
+end
+
+def fun_l16_n564(x)
+ if (x < 1)
+ fun_l17_n761(x)
+ else
+ fun_l17_n106(x)
+ end
+end
+
+def fun_l16_n565(x)
+ if (x < 1)
+ fun_l17_n236(x)
+ else
+ fun_l17_n95(x)
+ end
+end
+
+def fun_l16_n566(x)
+ if (x < 1)
+ fun_l17_n356(x)
+ else
+ fun_l17_n129(x)
+ end
+end
+
+def fun_l16_n567(x)
+ if (x < 1)
+ fun_l17_n297(x)
+ else
+ fun_l17_n247(x)
+ end
+end
+
+def fun_l16_n568(x)
+ if (x < 1)
+ fun_l17_n735(x)
+ else
+ fun_l17_n781(x)
+ end
+end
+
+def fun_l16_n569(x)
+ if (x < 1)
+ fun_l17_n650(x)
+ else
+ fun_l17_n377(x)
+ end
+end
+
+def fun_l16_n570(x)
+ if (x < 1)
+ fun_l17_n872(x)
+ else
+ fun_l17_n52(x)
+ end
+end
+
+def fun_l16_n571(x)
+ if (x < 1)
+ fun_l17_n970(x)
+ else
+ fun_l17_n719(x)
+ end
+end
+
+def fun_l16_n572(x)
+ if (x < 1)
+ fun_l17_n380(x)
+ else
+ fun_l17_n121(x)
+ end
+end
+
+def fun_l16_n573(x)
+ if (x < 1)
+ fun_l17_n190(x)
+ else
+ fun_l17_n675(x)
+ end
+end
+
+def fun_l16_n574(x)
+ if (x < 1)
+ fun_l17_n269(x)
+ else
+ fun_l17_n362(x)
+ end
+end
+
+def fun_l16_n575(x)
+ if (x < 1)
+ fun_l17_n480(x)
+ else
+ fun_l17_n228(x)
+ end
+end
+
+def fun_l16_n576(x)
+ if (x < 1)
+ fun_l17_n791(x)
+ else
+ fun_l17_n45(x)
+ end
+end
+
+def fun_l16_n577(x)
+ if (x < 1)
+ fun_l17_n403(x)
+ else
+ fun_l17_n887(x)
+ end
+end
+
+def fun_l16_n578(x)
+ if (x < 1)
+ fun_l17_n139(x)
+ else
+ fun_l17_n446(x)
+ end
+end
+
+def fun_l16_n579(x)
+ if (x < 1)
+ fun_l17_n472(x)
+ else
+ fun_l17_n869(x)
+ end
+end
+
+def fun_l16_n580(x)
+ if (x < 1)
+ fun_l17_n738(x)
+ else
+ fun_l17_n298(x)
+ end
+end
+
+def fun_l16_n581(x)
+ if (x < 1)
+ fun_l17_n822(x)
+ else
+ fun_l17_n859(x)
+ end
+end
+
+def fun_l16_n582(x)
+ if (x < 1)
+ fun_l17_n768(x)
+ else
+ fun_l17_n814(x)
+ end
+end
+
+def fun_l16_n583(x)
+ if (x < 1)
+ fun_l17_n892(x)
+ else
+ fun_l17_n821(x)
+ end
+end
+
+def fun_l16_n584(x)
+ if (x < 1)
+ fun_l17_n234(x)
+ else
+ fun_l17_n276(x)
+ end
+end
+
+def fun_l16_n585(x)
+ if (x < 1)
+ fun_l17_n162(x)
+ else
+ fun_l17_n873(x)
+ end
+end
+
+def fun_l16_n586(x)
+ if (x < 1)
+ fun_l17_n932(x)
+ else
+ fun_l17_n227(x)
+ end
+end
+
+def fun_l16_n587(x)
+ if (x < 1)
+ fun_l17_n105(x)
+ else
+ fun_l17_n620(x)
+ end
+end
+
+def fun_l16_n588(x)
+ if (x < 1)
+ fun_l17_n137(x)
+ else
+ fun_l17_n941(x)
+ end
+end
+
+def fun_l16_n589(x)
+ if (x < 1)
+ fun_l17_n936(x)
+ else
+ fun_l17_n877(x)
+ end
+end
+
+def fun_l16_n590(x)
+ if (x < 1)
+ fun_l17_n280(x)
+ else
+ fun_l17_n711(x)
+ end
+end
+
+def fun_l16_n591(x)
+ if (x < 1)
+ fun_l17_n968(x)
+ else
+ fun_l17_n695(x)
+ end
+end
+
+def fun_l16_n592(x)
+ if (x < 1)
+ fun_l17_n774(x)
+ else
+ fun_l17_n674(x)
+ end
+end
+
+def fun_l16_n593(x)
+ if (x < 1)
+ fun_l17_n421(x)
+ else
+ fun_l17_n516(x)
+ end
+end
+
+def fun_l16_n594(x)
+ if (x < 1)
+ fun_l17_n830(x)
+ else
+ fun_l17_n852(x)
+ end
+end
+
+def fun_l16_n595(x)
+ if (x < 1)
+ fun_l17_n659(x)
+ else
+ fun_l17_n114(x)
+ end
+end
+
+def fun_l16_n596(x)
+ if (x < 1)
+ fun_l17_n411(x)
+ else
+ fun_l17_n217(x)
+ end
+end
+
+def fun_l16_n597(x)
+ if (x < 1)
+ fun_l17_n506(x)
+ else
+ fun_l17_n721(x)
+ end
+end
+
+def fun_l16_n598(x)
+ if (x < 1)
+ fun_l17_n979(x)
+ else
+ fun_l17_n579(x)
+ end
+end
+
+def fun_l16_n599(x)
+ if (x < 1)
+ fun_l17_n423(x)
+ else
+ fun_l17_n765(x)
+ end
+end
+
+def fun_l16_n600(x)
+ if (x < 1)
+ fun_l17_n138(x)
+ else
+ fun_l17_n878(x)
+ end
+end
+
+def fun_l16_n601(x)
+ if (x < 1)
+ fun_l17_n616(x)
+ else
+ fun_l17_n531(x)
+ end
+end
+
+def fun_l16_n602(x)
+ if (x < 1)
+ fun_l17_n737(x)
+ else
+ fun_l17_n936(x)
+ end
+end
+
+def fun_l16_n603(x)
+ if (x < 1)
+ fun_l17_n106(x)
+ else
+ fun_l17_n147(x)
+ end
+end
+
+def fun_l16_n604(x)
+ if (x < 1)
+ fun_l17_n562(x)
+ else
+ fun_l17_n852(x)
+ end
+end
+
+def fun_l16_n605(x)
+ if (x < 1)
+ fun_l17_n473(x)
+ else
+ fun_l17_n771(x)
+ end
+end
+
+def fun_l16_n606(x)
+ if (x < 1)
+ fun_l17_n778(x)
+ else
+ fun_l17_n463(x)
+ end
+end
+
+def fun_l16_n607(x)
+ if (x < 1)
+ fun_l17_n35(x)
+ else
+ fun_l17_n341(x)
+ end
+end
+
+def fun_l16_n608(x)
+ if (x < 1)
+ fun_l17_n268(x)
+ else
+ fun_l17_n659(x)
+ end
+end
+
+def fun_l16_n609(x)
+ if (x < 1)
+ fun_l17_n734(x)
+ else
+ fun_l17_n174(x)
+ end
+end
+
+def fun_l16_n610(x)
+ if (x < 1)
+ fun_l17_n815(x)
+ else
+ fun_l17_n798(x)
+ end
+end
+
+def fun_l16_n611(x)
+ if (x < 1)
+ fun_l17_n251(x)
+ else
+ fun_l17_n694(x)
+ end
+end
+
+def fun_l16_n612(x)
+ if (x < 1)
+ fun_l17_n597(x)
+ else
+ fun_l17_n245(x)
+ end
+end
+
+def fun_l16_n613(x)
+ if (x < 1)
+ fun_l17_n990(x)
+ else
+ fun_l17_n58(x)
+ end
+end
+
+def fun_l16_n614(x)
+ if (x < 1)
+ fun_l17_n877(x)
+ else
+ fun_l17_n13(x)
+ end
+end
+
+def fun_l16_n615(x)
+ if (x < 1)
+ fun_l17_n7(x)
+ else
+ fun_l17_n787(x)
+ end
+end
+
+def fun_l16_n616(x)
+ if (x < 1)
+ fun_l17_n372(x)
+ else
+ fun_l17_n643(x)
+ end
+end
+
+def fun_l16_n617(x)
+ if (x < 1)
+ fun_l17_n592(x)
+ else
+ fun_l17_n508(x)
+ end
+end
+
+def fun_l16_n618(x)
+ if (x < 1)
+ fun_l17_n928(x)
+ else
+ fun_l17_n923(x)
+ end
+end
+
+def fun_l16_n619(x)
+ if (x < 1)
+ fun_l17_n407(x)
+ else
+ fun_l17_n885(x)
+ end
+end
+
+def fun_l16_n620(x)
+ if (x < 1)
+ fun_l17_n4(x)
+ else
+ fun_l17_n532(x)
+ end
+end
+
+def fun_l16_n621(x)
+ if (x < 1)
+ fun_l17_n791(x)
+ else
+ fun_l17_n141(x)
+ end
+end
+
+def fun_l16_n622(x)
+ if (x < 1)
+ fun_l17_n529(x)
+ else
+ fun_l17_n140(x)
+ end
+end
+
+def fun_l16_n623(x)
+ if (x < 1)
+ fun_l17_n713(x)
+ else
+ fun_l17_n867(x)
+ end
+end
+
+def fun_l16_n624(x)
+ if (x < 1)
+ fun_l17_n148(x)
+ else
+ fun_l17_n195(x)
+ end
+end
+
+def fun_l16_n625(x)
+ if (x < 1)
+ fun_l17_n287(x)
+ else
+ fun_l17_n662(x)
+ end
+end
+
+def fun_l16_n626(x)
+ if (x < 1)
+ fun_l17_n678(x)
+ else
+ fun_l17_n262(x)
+ end
+end
+
+def fun_l16_n627(x)
+ if (x < 1)
+ fun_l17_n217(x)
+ else
+ fun_l17_n612(x)
+ end
+end
+
+def fun_l16_n628(x)
+ if (x < 1)
+ fun_l17_n826(x)
+ else
+ fun_l17_n164(x)
+ end
+end
+
+def fun_l16_n629(x)
+ if (x < 1)
+ fun_l17_n360(x)
+ else
+ fun_l17_n221(x)
+ end
+end
+
+def fun_l16_n630(x)
+ if (x < 1)
+ fun_l17_n842(x)
+ else
+ fun_l17_n362(x)
+ end
+end
+
+def fun_l16_n631(x)
+ if (x < 1)
+ fun_l17_n53(x)
+ else
+ fun_l17_n216(x)
+ end
+end
+
+def fun_l16_n632(x)
+ if (x < 1)
+ fun_l17_n628(x)
+ else
+ fun_l17_n150(x)
+ end
+end
+
+def fun_l16_n633(x)
+ if (x < 1)
+ fun_l17_n206(x)
+ else
+ fun_l17_n789(x)
+ end
+end
+
+def fun_l16_n634(x)
+ if (x < 1)
+ fun_l17_n26(x)
+ else
+ fun_l17_n376(x)
+ end
+end
+
+def fun_l16_n635(x)
+ if (x < 1)
+ fun_l17_n614(x)
+ else
+ fun_l17_n109(x)
+ end
+end
+
+def fun_l16_n636(x)
+ if (x < 1)
+ fun_l17_n626(x)
+ else
+ fun_l17_n456(x)
+ end
+end
+
+def fun_l16_n637(x)
+ if (x < 1)
+ fun_l17_n836(x)
+ else
+ fun_l17_n602(x)
+ end
+end
+
+def fun_l16_n638(x)
+ if (x < 1)
+ fun_l17_n793(x)
+ else
+ fun_l17_n791(x)
+ end
+end
+
+def fun_l16_n639(x)
+ if (x < 1)
+ fun_l17_n689(x)
+ else
+ fun_l17_n714(x)
+ end
+end
+
+def fun_l16_n640(x)
+ if (x < 1)
+ fun_l17_n587(x)
+ else
+ fun_l17_n203(x)
+ end
+end
+
+def fun_l16_n641(x)
+ if (x < 1)
+ fun_l17_n686(x)
+ else
+ fun_l17_n297(x)
+ end
+end
+
+def fun_l16_n642(x)
+ if (x < 1)
+ fun_l17_n394(x)
+ else
+ fun_l17_n564(x)
+ end
+end
+
+def fun_l16_n643(x)
+ if (x < 1)
+ fun_l17_n669(x)
+ else
+ fun_l17_n250(x)
+ end
+end
+
+def fun_l16_n644(x)
+ if (x < 1)
+ fun_l17_n407(x)
+ else
+ fun_l17_n631(x)
+ end
+end
+
+def fun_l16_n645(x)
+ if (x < 1)
+ fun_l17_n928(x)
+ else
+ fun_l17_n856(x)
+ end
+end
+
+def fun_l16_n646(x)
+ if (x < 1)
+ fun_l17_n344(x)
+ else
+ fun_l17_n529(x)
+ end
+end
+
+def fun_l16_n647(x)
+ if (x < 1)
+ fun_l17_n540(x)
+ else
+ fun_l17_n468(x)
+ end
+end
+
+def fun_l16_n648(x)
+ if (x < 1)
+ fun_l17_n831(x)
+ else
+ fun_l17_n350(x)
+ end
+end
+
+def fun_l16_n649(x)
+ if (x < 1)
+ fun_l17_n154(x)
+ else
+ fun_l17_n587(x)
+ end
+end
+
+def fun_l16_n650(x)
+ if (x < 1)
+ fun_l17_n379(x)
+ else
+ fun_l17_n421(x)
+ end
+end
+
+def fun_l16_n651(x)
+ if (x < 1)
+ fun_l17_n839(x)
+ else
+ fun_l17_n782(x)
+ end
+end
+
+def fun_l16_n652(x)
+ if (x < 1)
+ fun_l17_n408(x)
+ else
+ fun_l17_n923(x)
+ end
+end
+
+def fun_l16_n653(x)
+ if (x < 1)
+ fun_l17_n51(x)
+ else
+ fun_l17_n317(x)
+ end
+end
+
+def fun_l16_n654(x)
+ if (x < 1)
+ fun_l17_n635(x)
+ else
+ fun_l17_n39(x)
+ end
+end
+
+def fun_l16_n655(x)
+ if (x < 1)
+ fun_l17_n921(x)
+ else
+ fun_l17_n641(x)
+ end
+end
+
+def fun_l16_n656(x)
+ if (x < 1)
+ fun_l17_n615(x)
+ else
+ fun_l17_n118(x)
+ end
+end
+
+def fun_l16_n657(x)
+ if (x < 1)
+ fun_l17_n673(x)
+ else
+ fun_l17_n842(x)
+ end
+end
+
+def fun_l16_n658(x)
+ if (x < 1)
+ fun_l17_n743(x)
+ else
+ fun_l17_n594(x)
+ end
+end
+
+def fun_l16_n659(x)
+ if (x < 1)
+ fun_l17_n85(x)
+ else
+ fun_l17_n787(x)
+ end
+end
+
+def fun_l16_n660(x)
+ if (x < 1)
+ fun_l17_n363(x)
+ else
+ fun_l17_n830(x)
+ end
+end
+
+def fun_l16_n661(x)
+ if (x < 1)
+ fun_l17_n897(x)
+ else
+ fun_l17_n989(x)
+ end
+end
+
+def fun_l16_n662(x)
+ if (x < 1)
+ fun_l17_n644(x)
+ else
+ fun_l17_n924(x)
+ end
+end
+
+def fun_l16_n663(x)
+ if (x < 1)
+ fun_l17_n812(x)
+ else
+ fun_l17_n159(x)
+ end
+end
+
+def fun_l16_n664(x)
+ if (x < 1)
+ fun_l17_n937(x)
+ else
+ fun_l17_n720(x)
+ end
+end
+
+def fun_l16_n665(x)
+ if (x < 1)
+ fun_l17_n732(x)
+ else
+ fun_l17_n516(x)
+ end
+end
+
+def fun_l16_n666(x)
+ if (x < 1)
+ fun_l17_n399(x)
+ else
+ fun_l17_n728(x)
+ end
+end
+
+def fun_l16_n667(x)
+ if (x < 1)
+ fun_l17_n673(x)
+ else
+ fun_l17_n735(x)
+ end
+end
+
+def fun_l16_n668(x)
+ if (x < 1)
+ fun_l17_n321(x)
+ else
+ fun_l17_n850(x)
+ end
+end
+
+def fun_l16_n669(x)
+ if (x < 1)
+ fun_l17_n873(x)
+ else
+ fun_l17_n701(x)
+ end
+end
+
+def fun_l16_n670(x)
+ if (x < 1)
+ fun_l17_n683(x)
+ else
+ fun_l17_n903(x)
+ end
+end
+
+def fun_l16_n671(x)
+ if (x < 1)
+ fun_l17_n440(x)
+ else
+ fun_l17_n178(x)
+ end
+end
+
+def fun_l16_n672(x)
+ if (x < 1)
+ fun_l17_n619(x)
+ else
+ fun_l17_n785(x)
+ end
+end
+
+def fun_l16_n673(x)
+ if (x < 1)
+ fun_l17_n185(x)
+ else
+ fun_l17_n794(x)
+ end
+end
+
+def fun_l16_n674(x)
+ if (x < 1)
+ fun_l17_n543(x)
+ else
+ fun_l17_n161(x)
+ end
+end
+
+def fun_l16_n675(x)
+ if (x < 1)
+ fun_l17_n898(x)
+ else
+ fun_l17_n590(x)
+ end
+end
+
+def fun_l16_n676(x)
+ if (x < 1)
+ fun_l17_n471(x)
+ else
+ fun_l17_n66(x)
+ end
+end
+
+def fun_l16_n677(x)
+ if (x < 1)
+ fun_l17_n764(x)
+ else
+ fun_l17_n163(x)
+ end
+end
+
+def fun_l16_n678(x)
+ if (x < 1)
+ fun_l17_n290(x)
+ else
+ fun_l17_n353(x)
+ end
+end
+
+def fun_l16_n679(x)
+ if (x < 1)
+ fun_l17_n851(x)
+ else
+ fun_l17_n7(x)
+ end
+end
+
+def fun_l16_n680(x)
+ if (x < 1)
+ fun_l17_n741(x)
+ else
+ fun_l17_n180(x)
+ end
+end
+
+def fun_l16_n681(x)
+ if (x < 1)
+ fun_l17_n887(x)
+ else
+ fun_l17_n258(x)
+ end
+end
+
+def fun_l16_n682(x)
+ if (x < 1)
+ fun_l17_n536(x)
+ else
+ fun_l17_n84(x)
+ end
+end
+
+def fun_l16_n683(x)
+ if (x < 1)
+ fun_l17_n447(x)
+ else
+ fun_l17_n455(x)
+ end
+end
+
+def fun_l16_n684(x)
+ if (x < 1)
+ fun_l17_n23(x)
+ else
+ fun_l17_n47(x)
+ end
+end
+
+def fun_l16_n685(x)
+ if (x < 1)
+ fun_l17_n983(x)
+ else
+ fun_l17_n470(x)
+ end
+end
+
+def fun_l16_n686(x)
+ if (x < 1)
+ fun_l17_n261(x)
+ else
+ fun_l17_n138(x)
+ end
+end
+
+def fun_l16_n687(x)
+ if (x < 1)
+ fun_l17_n791(x)
+ else
+ fun_l17_n474(x)
+ end
+end
+
+def fun_l16_n688(x)
+ if (x < 1)
+ fun_l17_n148(x)
+ else
+ fun_l17_n317(x)
+ end
+end
+
+def fun_l16_n689(x)
+ if (x < 1)
+ fun_l17_n107(x)
+ else
+ fun_l17_n529(x)
+ end
+end
+
+def fun_l16_n690(x)
+ if (x < 1)
+ fun_l17_n310(x)
+ else
+ fun_l17_n394(x)
+ end
+end
+
+def fun_l16_n691(x)
+ if (x < 1)
+ fun_l17_n193(x)
+ else
+ fun_l17_n348(x)
+ end
+end
+
+def fun_l16_n692(x)
+ if (x < 1)
+ fun_l17_n308(x)
+ else
+ fun_l17_n26(x)
+ end
+end
+
+def fun_l16_n693(x)
+ if (x < 1)
+ fun_l17_n502(x)
+ else
+ fun_l17_n517(x)
+ end
+end
+
+def fun_l16_n694(x)
+ if (x < 1)
+ fun_l17_n396(x)
+ else
+ fun_l17_n886(x)
+ end
+end
+
+def fun_l16_n695(x)
+ if (x < 1)
+ fun_l17_n179(x)
+ else
+ fun_l17_n35(x)
+ end
+end
+
+def fun_l16_n696(x)
+ if (x < 1)
+ fun_l17_n431(x)
+ else
+ fun_l17_n392(x)
+ end
+end
+
+def fun_l16_n697(x)
+ if (x < 1)
+ fun_l17_n778(x)
+ else
+ fun_l17_n766(x)
+ end
+end
+
+def fun_l16_n698(x)
+ if (x < 1)
+ fun_l17_n868(x)
+ else
+ fun_l17_n31(x)
+ end
+end
+
+def fun_l16_n699(x)
+ if (x < 1)
+ fun_l17_n277(x)
+ else
+ fun_l17_n649(x)
+ end
+end
+
+def fun_l16_n700(x)
+ if (x < 1)
+ fun_l17_n638(x)
+ else
+ fun_l17_n411(x)
+ end
+end
+
+def fun_l16_n701(x)
+ if (x < 1)
+ fun_l17_n730(x)
+ else
+ fun_l17_n188(x)
+ end
+end
+
+def fun_l16_n702(x)
+ if (x < 1)
+ fun_l17_n530(x)
+ else
+ fun_l17_n540(x)
+ end
+end
+
+def fun_l16_n703(x)
+ if (x < 1)
+ fun_l17_n691(x)
+ else
+ fun_l17_n550(x)
+ end
+end
+
+def fun_l16_n704(x)
+ if (x < 1)
+ fun_l17_n691(x)
+ else
+ fun_l17_n25(x)
+ end
+end
+
+def fun_l16_n705(x)
+ if (x < 1)
+ fun_l17_n744(x)
+ else
+ fun_l17_n333(x)
+ end
+end
+
+def fun_l16_n706(x)
+ if (x < 1)
+ fun_l17_n845(x)
+ else
+ fun_l17_n229(x)
+ end
+end
+
+def fun_l16_n707(x)
+ if (x < 1)
+ fun_l17_n784(x)
+ else
+ fun_l17_n123(x)
+ end
+end
+
+def fun_l16_n708(x)
+ if (x < 1)
+ fun_l17_n88(x)
+ else
+ fun_l17_n961(x)
+ end
+end
+
+def fun_l16_n709(x)
+ if (x < 1)
+ fun_l17_n310(x)
+ else
+ fun_l17_n943(x)
+ end
+end
+
+def fun_l16_n710(x)
+ if (x < 1)
+ fun_l17_n265(x)
+ else
+ fun_l17_n958(x)
+ end
+end
+
+def fun_l16_n711(x)
+ if (x < 1)
+ fun_l17_n483(x)
+ else
+ fun_l17_n577(x)
+ end
+end
+
+def fun_l16_n712(x)
+ if (x < 1)
+ fun_l17_n703(x)
+ else
+ fun_l17_n625(x)
+ end
+end
+
+def fun_l16_n713(x)
+ if (x < 1)
+ fun_l17_n301(x)
+ else
+ fun_l17_n17(x)
+ end
+end
+
+def fun_l16_n714(x)
+ if (x < 1)
+ fun_l17_n455(x)
+ else
+ fun_l17_n647(x)
+ end
+end
+
+def fun_l16_n715(x)
+ if (x < 1)
+ fun_l17_n628(x)
+ else
+ fun_l17_n748(x)
+ end
+end
+
+def fun_l16_n716(x)
+ if (x < 1)
+ fun_l17_n10(x)
+ else
+ fun_l17_n632(x)
+ end
+end
+
+def fun_l16_n717(x)
+ if (x < 1)
+ fun_l17_n82(x)
+ else
+ fun_l17_n888(x)
+ end
+end
+
+def fun_l16_n718(x)
+ if (x < 1)
+ fun_l17_n234(x)
+ else
+ fun_l17_n554(x)
+ end
+end
+
+def fun_l16_n719(x)
+ if (x < 1)
+ fun_l17_n811(x)
+ else
+ fun_l17_n46(x)
+ end
+end
+
+def fun_l16_n720(x)
+ if (x < 1)
+ fun_l17_n227(x)
+ else
+ fun_l17_n89(x)
+ end
+end
+
+def fun_l16_n721(x)
+ if (x < 1)
+ fun_l17_n780(x)
+ else
+ fun_l17_n941(x)
+ end
+end
+
+def fun_l16_n722(x)
+ if (x < 1)
+ fun_l17_n877(x)
+ else
+ fun_l17_n262(x)
+ end
+end
+
+def fun_l16_n723(x)
+ if (x < 1)
+ fun_l17_n649(x)
+ else
+ fun_l17_n477(x)
+ end
+end
+
+def fun_l16_n724(x)
+ if (x < 1)
+ fun_l17_n902(x)
+ else
+ fun_l17_n315(x)
+ end
+end
+
+def fun_l16_n725(x)
+ if (x < 1)
+ fun_l17_n985(x)
+ else
+ fun_l17_n232(x)
+ end
+end
+
+def fun_l16_n726(x)
+ if (x < 1)
+ fun_l17_n5(x)
+ else
+ fun_l17_n981(x)
+ end
+end
+
+def fun_l16_n727(x)
+ if (x < 1)
+ fun_l17_n730(x)
+ else
+ fun_l17_n780(x)
+ end
+end
+
+def fun_l16_n728(x)
+ if (x < 1)
+ fun_l17_n626(x)
+ else
+ fun_l17_n272(x)
+ end
+end
+
+def fun_l16_n729(x)
+ if (x < 1)
+ fun_l17_n380(x)
+ else
+ fun_l17_n289(x)
+ end
+end
+
+def fun_l16_n730(x)
+ if (x < 1)
+ fun_l17_n711(x)
+ else
+ fun_l17_n861(x)
+ end
+end
+
+def fun_l16_n731(x)
+ if (x < 1)
+ fun_l17_n351(x)
+ else
+ fun_l17_n948(x)
+ end
+end
+
+def fun_l16_n732(x)
+ if (x < 1)
+ fun_l17_n864(x)
+ else
+ fun_l17_n60(x)
+ end
+end
+
+def fun_l16_n733(x)
+ if (x < 1)
+ fun_l17_n974(x)
+ else
+ fun_l17_n475(x)
+ end
+end
+
+def fun_l16_n734(x)
+ if (x < 1)
+ fun_l17_n855(x)
+ else
+ fun_l17_n988(x)
+ end
+end
+
+def fun_l16_n735(x)
+ if (x < 1)
+ fun_l17_n740(x)
+ else
+ fun_l17_n559(x)
+ end
+end
+
+def fun_l16_n736(x)
+ if (x < 1)
+ fun_l17_n449(x)
+ else
+ fun_l17_n580(x)
+ end
+end
+
+def fun_l16_n737(x)
+ if (x < 1)
+ fun_l17_n313(x)
+ else
+ fun_l17_n462(x)
+ end
+end
+
+def fun_l16_n738(x)
+ if (x < 1)
+ fun_l17_n177(x)
+ else
+ fun_l17_n812(x)
+ end
+end
+
+def fun_l16_n739(x)
+ if (x < 1)
+ fun_l17_n518(x)
+ else
+ fun_l17_n453(x)
+ end
+end
+
+def fun_l16_n740(x)
+ if (x < 1)
+ fun_l17_n190(x)
+ else
+ fun_l17_n722(x)
+ end
+end
+
+def fun_l16_n741(x)
+ if (x < 1)
+ fun_l17_n509(x)
+ else
+ fun_l17_n203(x)
+ end
+end
+
+def fun_l16_n742(x)
+ if (x < 1)
+ fun_l17_n901(x)
+ else
+ fun_l17_n497(x)
+ end
+end
+
+def fun_l16_n743(x)
+ if (x < 1)
+ fun_l17_n19(x)
+ else
+ fun_l17_n789(x)
+ end
+end
+
+def fun_l16_n744(x)
+ if (x < 1)
+ fun_l17_n879(x)
+ else
+ fun_l17_n554(x)
+ end
+end
+
+def fun_l16_n745(x)
+ if (x < 1)
+ fun_l17_n106(x)
+ else
+ fun_l17_n255(x)
+ end
+end
+
+def fun_l16_n746(x)
+ if (x < 1)
+ fun_l17_n942(x)
+ else
+ fun_l17_n701(x)
+ end
+end
+
+def fun_l16_n747(x)
+ if (x < 1)
+ fun_l17_n738(x)
+ else
+ fun_l17_n459(x)
+ end
+end
+
+def fun_l16_n748(x)
+ if (x < 1)
+ fun_l17_n984(x)
+ else
+ fun_l17_n501(x)
+ end
+end
+
+def fun_l16_n749(x)
+ if (x < 1)
+ fun_l17_n399(x)
+ else
+ fun_l17_n165(x)
+ end
+end
+
+def fun_l16_n750(x)
+ if (x < 1)
+ fun_l17_n956(x)
+ else
+ fun_l17_n210(x)
+ end
+end
+
+def fun_l16_n751(x)
+ if (x < 1)
+ fun_l17_n549(x)
+ else
+ fun_l17_n406(x)
+ end
+end
+
+def fun_l16_n752(x)
+ if (x < 1)
+ fun_l17_n671(x)
+ else
+ fun_l17_n809(x)
+ end
+end
+
+def fun_l16_n753(x)
+ if (x < 1)
+ fun_l17_n807(x)
+ else
+ fun_l17_n544(x)
+ end
+end
+
+def fun_l16_n754(x)
+ if (x < 1)
+ fun_l17_n150(x)
+ else
+ fun_l17_n705(x)
+ end
+end
+
+def fun_l16_n755(x)
+ if (x < 1)
+ fun_l17_n822(x)
+ else
+ fun_l17_n627(x)
+ end
+end
+
+def fun_l16_n756(x)
+ if (x < 1)
+ fun_l17_n429(x)
+ else
+ fun_l17_n598(x)
+ end
+end
+
+def fun_l16_n757(x)
+ if (x < 1)
+ fun_l17_n327(x)
+ else
+ fun_l17_n391(x)
+ end
+end
+
+def fun_l16_n758(x)
+ if (x < 1)
+ fun_l17_n335(x)
+ else
+ fun_l17_n779(x)
+ end
+end
+
+def fun_l16_n759(x)
+ if (x < 1)
+ fun_l17_n149(x)
+ else
+ fun_l17_n637(x)
+ end
+end
+
+def fun_l16_n760(x)
+ if (x < 1)
+ fun_l17_n83(x)
+ else
+ fun_l17_n616(x)
+ end
+end
+
+def fun_l16_n761(x)
+ if (x < 1)
+ fun_l17_n997(x)
+ else
+ fun_l17_n189(x)
+ end
+end
+
+def fun_l16_n762(x)
+ if (x < 1)
+ fun_l17_n779(x)
+ else
+ fun_l17_n175(x)
+ end
+end
+
+def fun_l16_n763(x)
+ if (x < 1)
+ fun_l17_n73(x)
+ else
+ fun_l17_n473(x)
+ end
+end
+
+def fun_l16_n764(x)
+ if (x < 1)
+ fun_l17_n784(x)
+ else
+ fun_l17_n415(x)
+ end
+end
+
+def fun_l16_n765(x)
+ if (x < 1)
+ fun_l17_n809(x)
+ else
+ fun_l17_n263(x)
+ end
+end
+
+def fun_l16_n766(x)
+ if (x < 1)
+ fun_l17_n114(x)
+ else
+ fun_l17_n898(x)
+ end
+end
+
+def fun_l16_n767(x)
+ if (x < 1)
+ fun_l17_n983(x)
+ else
+ fun_l17_n114(x)
+ end
+end
+
+def fun_l16_n768(x)
+ if (x < 1)
+ fun_l17_n141(x)
+ else
+ fun_l17_n492(x)
+ end
+end
+
+def fun_l16_n769(x)
+ if (x < 1)
+ fun_l17_n216(x)
+ else
+ fun_l17_n610(x)
+ end
+end
+
+def fun_l16_n770(x)
+ if (x < 1)
+ fun_l17_n797(x)
+ else
+ fun_l17_n164(x)
+ end
+end
+
+def fun_l16_n771(x)
+ if (x < 1)
+ fun_l17_n434(x)
+ else
+ fun_l17_n876(x)
+ end
+end
+
+def fun_l16_n772(x)
+ if (x < 1)
+ fun_l17_n165(x)
+ else
+ fun_l17_n646(x)
+ end
+end
+
+def fun_l16_n773(x)
+ if (x < 1)
+ fun_l17_n359(x)
+ else
+ fun_l17_n754(x)
+ end
+end
+
+def fun_l16_n774(x)
+ if (x < 1)
+ fun_l17_n314(x)
+ else
+ fun_l17_n745(x)
+ end
+end
+
+def fun_l16_n775(x)
+ if (x < 1)
+ fun_l17_n35(x)
+ else
+ fun_l17_n673(x)
+ end
+end
+
+def fun_l16_n776(x)
+ if (x < 1)
+ fun_l17_n51(x)
+ else
+ fun_l17_n708(x)
+ end
+end
+
+def fun_l16_n777(x)
+ if (x < 1)
+ fun_l17_n451(x)
+ else
+ fun_l17_n30(x)
+ end
+end
+
+def fun_l16_n778(x)
+ if (x < 1)
+ fun_l17_n821(x)
+ else
+ fun_l17_n114(x)
+ end
+end
+
+def fun_l16_n779(x)
+ if (x < 1)
+ fun_l17_n727(x)
+ else
+ fun_l17_n71(x)
+ end
+end
+
+def fun_l16_n780(x)
+ if (x < 1)
+ fun_l17_n404(x)
+ else
+ fun_l17_n42(x)
+ end
+end
+
+def fun_l16_n781(x)
+ if (x < 1)
+ fun_l17_n926(x)
+ else
+ fun_l17_n53(x)
+ end
+end
+
+def fun_l16_n782(x)
+ if (x < 1)
+ fun_l17_n499(x)
+ else
+ fun_l17_n429(x)
+ end
+end
+
+def fun_l16_n783(x)
+ if (x < 1)
+ fun_l17_n887(x)
+ else
+ fun_l17_n912(x)
+ end
+end
+
+def fun_l16_n784(x)
+ if (x < 1)
+ fun_l17_n900(x)
+ else
+ fun_l17_n163(x)
+ end
+end
+
+def fun_l16_n785(x)
+ if (x < 1)
+ fun_l17_n589(x)
+ else
+ fun_l17_n271(x)
+ end
+end
+
+def fun_l16_n786(x)
+ if (x < 1)
+ fun_l17_n732(x)
+ else
+ fun_l17_n296(x)
+ end
+end
+
+def fun_l16_n787(x)
+ if (x < 1)
+ fun_l17_n711(x)
+ else
+ fun_l17_n777(x)
+ end
+end
+
+def fun_l16_n788(x)
+ if (x < 1)
+ fun_l17_n426(x)
+ else
+ fun_l17_n291(x)
+ end
+end
+
+def fun_l16_n789(x)
+ if (x < 1)
+ fun_l17_n833(x)
+ else
+ fun_l17_n958(x)
+ end
+end
+
+def fun_l16_n790(x)
+ if (x < 1)
+ fun_l17_n680(x)
+ else
+ fun_l17_n707(x)
+ end
+end
+
+def fun_l16_n791(x)
+ if (x < 1)
+ fun_l17_n668(x)
+ else
+ fun_l17_n727(x)
+ end
+end
+
+def fun_l16_n792(x)
+ if (x < 1)
+ fun_l17_n948(x)
+ else
+ fun_l17_n160(x)
+ end
+end
+
+def fun_l16_n793(x)
+ if (x < 1)
+ fun_l17_n847(x)
+ else
+ fun_l17_n643(x)
+ end
+end
+
+def fun_l16_n794(x)
+ if (x < 1)
+ fun_l17_n89(x)
+ else
+ fun_l17_n704(x)
+ end
+end
+
+def fun_l16_n795(x)
+ if (x < 1)
+ fun_l17_n52(x)
+ else
+ fun_l17_n307(x)
+ end
+end
+
+def fun_l16_n796(x)
+ if (x < 1)
+ fun_l17_n632(x)
+ else
+ fun_l17_n839(x)
+ end
+end
+
+def fun_l16_n797(x)
+ if (x < 1)
+ fun_l17_n343(x)
+ else
+ fun_l17_n969(x)
+ end
+end
+
+def fun_l16_n798(x)
+ if (x < 1)
+ fun_l17_n850(x)
+ else
+ fun_l17_n975(x)
+ end
+end
+
+def fun_l16_n799(x)
+ if (x < 1)
+ fun_l17_n119(x)
+ else
+ fun_l17_n303(x)
+ end
+end
+
+def fun_l16_n800(x)
+ if (x < 1)
+ fun_l17_n870(x)
+ else
+ fun_l17_n4(x)
+ end
+end
+
+def fun_l16_n801(x)
+ if (x < 1)
+ fun_l17_n223(x)
+ else
+ fun_l17_n618(x)
+ end
+end
+
+def fun_l16_n802(x)
+ if (x < 1)
+ fun_l17_n183(x)
+ else
+ fun_l17_n358(x)
+ end
+end
+
+def fun_l16_n803(x)
+ if (x < 1)
+ fun_l17_n152(x)
+ else
+ fun_l17_n76(x)
+ end
+end
+
+def fun_l16_n804(x)
+ if (x < 1)
+ fun_l17_n487(x)
+ else
+ fun_l17_n475(x)
+ end
+end
+
+def fun_l16_n805(x)
+ if (x < 1)
+ fun_l17_n900(x)
+ else
+ fun_l17_n786(x)
+ end
+end
+
+def fun_l16_n806(x)
+ if (x < 1)
+ fun_l17_n881(x)
+ else
+ fun_l17_n523(x)
+ end
+end
+
+def fun_l16_n807(x)
+ if (x < 1)
+ fun_l17_n686(x)
+ else
+ fun_l17_n5(x)
+ end
+end
+
+def fun_l16_n808(x)
+ if (x < 1)
+ fun_l17_n841(x)
+ else
+ fun_l17_n73(x)
+ end
+end
+
+def fun_l16_n809(x)
+ if (x < 1)
+ fun_l17_n737(x)
+ else
+ fun_l17_n590(x)
+ end
+end
+
+def fun_l16_n810(x)
+ if (x < 1)
+ fun_l17_n252(x)
+ else
+ fun_l17_n867(x)
+ end
+end
+
+def fun_l16_n811(x)
+ if (x < 1)
+ fun_l17_n333(x)
+ else
+ fun_l17_n418(x)
+ end
+end
+
+def fun_l16_n812(x)
+ if (x < 1)
+ fun_l17_n155(x)
+ else
+ fun_l17_n104(x)
+ end
+end
+
+def fun_l16_n813(x)
+ if (x < 1)
+ fun_l17_n933(x)
+ else
+ fun_l17_n344(x)
+ end
+end
+
+def fun_l16_n814(x)
+ if (x < 1)
+ fun_l17_n107(x)
+ else
+ fun_l17_n784(x)
+ end
+end
+
+def fun_l16_n815(x)
+ if (x < 1)
+ fun_l17_n355(x)
+ else
+ fun_l17_n184(x)
+ end
+end
+
+def fun_l16_n816(x)
+ if (x < 1)
+ fun_l17_n266(x)
+ else
+ fun_l17_n315(x)
+ end
+end
+
+def fun_l16_n817(x)
+ if (x < 1)
+ fun_l17_n821(x)
+ else
+ fun_l17_n534(x)
+ end
+end
+
+def fun_l16_n818(x)
+ if (x < 1)
+ fun_l17_n126(x)
+ else
+ fun_l17_n712(x)
+ end
+end
+
+def fun_l16_n819(x)
+ if (x < 1)
+ fun_l17_n309(x)
+ else
+ fun_l17_n39(x)
+ end
+end
+
+def fun_l16_n820(x)
+ if (x < 1)
+ fun_l17_n629(x)
+ else
+ fun_l17_n689(x)
+ end
+end
+
+def fun_l16_n821(x)
+ if (x < 1)
+ fun_l17_n35(x)
+ else
+ fun_l17_n250(x)
+ end
+end
+
+def fun_l16_n822(x)
+ if (x < 1)
+ fun_l17_n276(x)
+ else
+ fun_l17_n350(x)
+ end
+end
+
+def fun_l16_n823(x)
+ if (x < 1)
+ fun_l17_n775(x)
+ else
+ fun_l17_n542(x)
+ end
+end
+
+def fun_l16_n824(x)
+ if (x < 1)
+ fun_l17_n739(x)
+ else
+ fun_l17_n441(x)
+ end
+end
+
+def fun_l16_n825(x)
+ if (x < 1)
+ fun_l17_n86(x)
+ else
+ fun_l17_n360(x)
+ end
+end
+
+def fun_l16_n826(x)
+ if (x < 1)
+ fun_l17_n196(x)
+ else
+ fun_l17_n406(x)
+ end
+end
+
+def fun_l16_n827(x)
+ if (x < 1)
+ fun_l17_n612(x)
+ else
+ fun_l17_n471(x)
+ end
+end
+
+def fun_l16_n828(x)
+ if (x < 1)
+ fun_l17_n409(x)
+ else
+ fun_l17_n572(x)
+ end
+end
+
+def fun_l16_n829(x)
+ if (x < 1)
+ fun_l17_n347(x)
+ else
+ fun_l17_n450(x)
+ end
+end
+
+def fun_l16_n830(x)
+ if (x < 1)
+ fun_l17_n75(x)
+ else
+ fun_l17_n185(x)
+ end
+end
+
+def fun_l16_n831(x)
+ if (x < 1)
+ fun_l17_n904(x)
+ else
+ fun_l17_n894(x)
+ end
+end
+
+def fun_l16_n832(x)
+ if (x < 1)
+ fun_l17_n889(x)
+ else
+ fun_l17_n651(x)
+ end
+end
+
+def fun_l16_n833(x)
+ if (x < 1)
+ fun_l17_n670(x)
+ else
+ fun_l17_n216(x)
+ end
+end
+
+def fun_l16_n834(x)
+ if (x < 1)
+ fun_l17_n212(x)
+ else
+ fun_l17_n445(x)
+ end
+end
+
+def fun_l16_n835(x)
+ if (x < 1)
+ fun_l17_n453(x)
+ else
+ fun_l17_n187(x)
+ end
+end
+
+def fun_l16_n836(x)
+ if (x < 1)
+ fun_l17_n614(x)
+ else
+ fun_l17_n203(x)
+ end
+end
+
+def fun_l16_n837(x)
+ if (x < 1)
+ fun_l17_n177(x)
+ else
+ fun_l17_n721(x)
+ end
+end
+
+def fun_l16_n838(x)
+ if (x < 1)
+ fun_l17_n910(x)
+ else
+ fun_l17_n510(x)
+ end
+end
+
+def fun_l16_n839(x)
+ if (x < 1)
+ fun_l17_n880(x)
+ else
+ fun_l17_n365(x)
+ end
+end
+
+def fun_l16_n840(x)
+ if (x < 1)
+ fun_l17_n336(x)
+ else
+ fun_l17_n483(x)
+ end
+end
+
+def fun_l16_n841(x)
+ if (x < 1)
+ fun_l17_n83(x)
+ else
+ fun_l17_n947(x)
+ end
+end
+
+def fun_l16_n842(x)
+ if (x < 1)
+ fun_l17_n723(x)
+ else
+ fun_l17_n209(x)
+ end
+end
+
+def fun_l16_n843(x)
+ if (x < 1)
+ fun_l17_n432(x)
+ else
+ fun_l17_n664(x)
+ end
+end
+
+def fun_l16_n844(x)
+ if (x < 1)
+ fun_l17_n906(x)
+ else
+ fun_l17_n472(x)
+ end
+end
+
+def fun_l16_n845(x)
+ if (x < 1)
+ fun_l17_n147(x)
+ else
+ fun_l17_n623(x)
+ end
+end
+
+def fun_l16_n846(x)
+ if (x < 1)
+ fun_l17_n296(x)
+ else
+ fun_l17_n44(x)
+ end
+end
+
+def fun_l16_n847(x)
+ if (x < 1)
+ fun_l17_n498(x)
+ else
+ fun_l17_n764(x)
+ end
+end
+
+def fun_l16_n848(x)
+ if (x < 1)
+ fun_l17_n428(x)
+ else
+ fun_l17_n575(x)
+ end
+end
+
+def fun_l16_n849(x)
+ if (x < 1)
+ fun_l17_n311(x)
+ else
+ fun_l17_n975(x)
+ end
+end
+
+def fun_l16_n850(x)
+ if (x < 1)
+ fun_l17_n482(x)
+ else
+ fun_l17_n388(x)
+ end
+end
+
+def fun_l16_n851(x)
+ if (x < 1)
+ fun_l17_n174(x)
+ else
+ fun_l17_n190(x)
+ end
+end
+
+def fun_l16_n852(x)
+ if (x < 1)
+ fun_l17_n28(x)
+ else
+ fun_l17_n598(x)
+ end
+end
+
+def fun_l16_n853(x)
+ if (x < 1)
+ fun_l17_n142(x)
+ else
+ fun_l17_n340(x)
+ end
+end
+
+def fun_l16_n854(x)
+ if (x < 1)
+ fun_l17_n793(x)
+ else
+ fun_l17_n226(x)
+ end
+end
+
+def fun_l16_n855(x)
+ if (x < 1)
+ fun_l17_n268(x)
+ else
+ fun_l17_n201(x)
+ end
+end
+
+def fun_l16_n856(x)
+ if (x < 1)
+ fun_l17_n52(x)
+ else
+ fun_l17_n871(x)
+ end
+end
+
+def fun_l16_n857(x)
+ if (x < 1)
+ fun_l17_n30(x)
+ else
+ fun_l17_n673(x)
+ end
+end
+
+def fun_l16_n858(x)
+ if (x < 1)
+ fun_l17_n794(x)
+ else
+ fun_l17_n839(x)
+ end
+end
+
+def fun_l16_n859(x)
+ if (x < 1)
+ fun_l17_n162(x)
+ else
+ fun_l17_n655(x)
+ end
+end
+
+def fun_l16_n860(x)
+ if (x < 1)
+ fun_l17_n770(x)
+ else
+ fun_l17_n879(x)
+ end
+end
+
+def fun_l16_n861(x)
+ if (x < 1)
+ fun_l17_n93(x)
+ else
+ fun_l17_n338(x)
+ end
+end
+
+def fun_l16_n862(x)
+ if (x < 1)
+ fun_l17_n468(x)
+ else
+ fun_l17_n977(x)
+ end
+end
+
+def fun_l16_n863(x)
+ if (x < 1)
+ fun_l17_n627(x)
+ else
+ fun_l17_n296(x)
+ end
+end
+
+def fun_l16_n864(x)
+ if (x < 1)
+ fun_l17_n402(x)
+ else
+ fun_l17_n515(x)
+ end
+end
+
+def fun_l16_n865(x)
+ if (x < 1)
+ fun_l17_n793(x)
+ else
+ fun_l17_n62(x)
+ end
+end
+
+def fun_l16_n866(x)
+ if (x < 1)
+ fun_l17_n87(x)
+ else
+ fun_l17_n532(x)
+ end
+end
+
+def fun_l16_n867(x)
+ if (x < 1)
+ fun_l17_n766(x)
+ else
+ fun_l17_n162(x)
+ end
+end
+
+def fun_l16_n868(x)
+ if (x < 1)
+ fun_l17_n214(x)
+ else
+ fun_l17_n827(x)
+ end
+end
+
+def fun_l16_n869(x)
+ if (x < 1)
+ fun_l17_n879(x)
+ else
+ fun_l17_n285(x)
+ end
+end
+
+def fun_l16_n870(x)
+ if (x < 1)
+ fun_l17_n619(x)
+ else
+ fun_l17_n648(x)
+ end
+end
+
+def fun_l16_n871(x)
+ if (x < 1)
+ fun_l17_n150(x)
+ else
+ fun_l17_n458(x)
+ end
+end
+
+def fun_l16_n872(x)
+ if (x < 1)
+ fun_l17_n346(x)
+ else
+ fun_l17_n824(x)
+ end
+end
+
+def fun_l16_n873(x)
+ if (x < 1)
+ fun_l17_n839(x)
+ else
+ fun_l17_n188(x)
+ end
+end
+
+def fun_l16_n874(x)
+ if (x < 1)
+ fun_l17_n202(x)
+ else
+ fun_l17_n147(x)
+ end
+end
+
+def fun_l16_n875(x)
+ if (x < 1)
+ fun_l17_n779(x)
+ else
+ fun_l17_n217(x)
+ end
+end
+
+def fun_l16_n876(x)
+ if (x < 1)
+ fun_l17_n417(x)
+ else
+ fun_l17_n350(x)
+ end
+end
+
+def fun_l16_n877(x)
+ if (x < 1)
+ fun_l17_n971(x)
+ else
+ fun_l17_n825(x)
+ end
+end
+
+def fun_l16_n878(x)
+ if (x < 1)
+ fun_l17_n843(x)
+ else
+ fun_l17_n431(x)
+ end
+end
+
+def fun_l16_n879(x)
+ if (x < 1)
+ fun_l17_n560(x)
+ else
+ fun_l17_n421(x)
+ end
+end
+
+def fun_l16_n880(x)
+ if (x < 1)
+ fun_l17_n399(x)
+ else
+ fun_l17_n101(x)
+ end
+end
+
+def fun_l16_n881(x)
+ if (x < 1)
+ fun_l17_n458(x)
+ else
+ fun_l17_n805(x)
+ end
+end
+
+def fun_l16_n882(x)
+ if (x < 1)
+ fun_l17_n590(x)
+ else
+ fun_l17_n924(x)
+ end
+end
+
+def fun_l16_n883(x)
+ if (x < 1)
+ fun_l17_n753(x)
+ else
+ fun_l17_n128(x)
+ end
+end
+
+def fun_l16_n884(x)
+ if (x < 1)
+ fun_l17_n271(x)
+ else
+ fun_l17_n366(x)
+ end
+end
+
+def fun_l16_n885(x)
+ if (x < 1)
+ fun_l17_n251(x)
+ else
+ fun_l17_n581(x)
+ end
+end
+
+def fun_l16_n886(x)
+ if (x < 1)
+ fun_l17_n82(x)
+ else
+ fun_l17_n212(x)
+ end
+end
+
+def fun_l16_n887(x)
+ if (x < 1)
+ fun_l17_n254(x)
+ else
+ fun_l17_n476(x)
+ end
+end
+
+def fun_l16_n888(x)
+ if (x < 1)
+ fun_l17_n774(x)
+ else
+ fun_l17_n23(x)
+ end
+end
+
+def fun_l16_n889(x)
+ if (x < 1)
+ fun_l17_n258(x)
+ else
+ fun_l17_n931(x)
+ end
+end
+
+def fun_l16_n890(x)
+ if (x < 1)
+ fun_l17_n60(x)
+ else
+ fun_l17_n267(x)
+ end
+end
+
+def fun_l16_n891(x)
+ if (x < 1)
+ fun_l17_n465(x)
+ else
+ fun_l17_n298(x)
+ end
+end
+
+def fun_l16_n892(x)
+ if (x < 1)
+ fun_l17_n284(x)
+ else
+ fun_l17_n59(x)
+ end
+end
+
+def fun_l16_n893(x)
+ if (x < 1)
+ fun_l17_n485(x)
+ else
+ fun_l17_n19(x)
+ end
+end
+
+def fun_l16_n894(x)
+ if (x < 1)
+ fun_l17_n676(x)
+ else
+ fun_l17_n196(x)
+ end
+end
+
+def fun_l16_n895(x)
+ if (x < 1)
+ fun_l17_n894(x)
+ else
+ fun_l17_n667(x)
+ end
+end
+
+def fun_l16_n896(x)
+ if (x < 1)
+ fun_l17_n234(x)
+ else
+ fun_l17_n115(x)
+ end
+end
+
+def fun_l16_n897(x)
+ if (x < 1)
+ fun_l17_n161(x)
+ else
+ fun_l17_n47(x)
+ end
+end
+
+def fun_l16_n898(x)
+ if (x < 1)
+ fun_l17_n598(x)
+ else
+ fun_l17_n796(x)
+ end
+end
+
+def fun_l16_n899(x)
+ if (x < 1)
+ fun_l17_n191(x)
+ else
+ fun_l17_n36(x)
+ end
+end
+
+def fun_l16_n900(x)
+ if (x < 1)
+ fun_l17_n803(x)
+ else
+ fun_l17_n894(x)
+ end
+end
+
+def fun_l16_n901(x)
+ if (x < 1)
+ fun_l17_n225(x)
+ else
+ fun_l17_n608(x)
+ end
+end
+
+def fun_l16_n902(x)
+ if (x < 1)
+ fun_l17_n318(x)
+ else
+ fun_l17_n667(x)
+ end
+end
+
+def fun_l16_n903(x)
+ if (x < 1)
+ fun_l17_n815(x)
+ else
+ fun_l17_n645(x)
+ end
+end
+
+def fun_l16_n904(x)
+ if (x < 1)
+ fun_l17_n891(x)
+ else
+ fun_l17_n465(x)
+ end
+end
+
+def fun_l16_n905(x)
+ if (x < 1)
+ fun_l17_n789(x)
+ else
+ fun_l17_n573(x)
+ end
+end
+
+def fun_l16_n906(x)
+ if (x < 1)
+ fun_l17_n139(x)
+ else
+ fun_l17_n745(x)
+ end
+end
+
+def fun_l16_n907(x)
+ if (x < 1)
+ fun_l17_n632(x)
+ else
+ fun_l17_n625(x)
+ end
+end
+
+def fun_l16_n908(x)
+ if (x < 1)
+ fun_l17_n249(x)
+ else
+ fun_l17_n279(x)
+ end
+end
+
+def fun_l16_n909(x)
+ if (x < 1)
+ fun_l17_n357(x)
+ else
+ fun_l17_n477(x)
+ end
+end
+
+def fun_l16_n910(x)
+ if (x < 1)
+ fun_l17_n796(x)
+ else
+ fun_l17_n313(x)
+ end
+end
+
+def fun_l16_n911(x)
+ if (x < 1)
+ fun_l17_n917(x)
+ else
+ fun_l17_n775(x)
+ end
+end
+
+def fun_l16_n912(x)
+ if (x < 1)
+ fun_l17_n451(x)
+ else
+ fun_l17_n102(x)
+ end
+end
+
+def fun_l16_n913(x)
+ if (x < 1)
+ fun_l17_n782(x)
+ else
+ fun_l17_n998(x)
+ end
+end
+
+def fun_l16_n914(x)
+ if (x < 1)
+ fun_l17_n237(x)
+ else
+ fun_l17_n586(x)
+ end
+end
+
+def fun_l16_n915(x)
+ if (x < 1)
+ fun_l17_n399(x)
+ else
+ fun_l17_n676(x)
+ end
+end
+
+def fun_l16_n916(x)
+ if (x < 1)
+ fun_l17_n65(x)
+ else
+ fun_l17_n61(x)
+ end
+end
+
+def fun_l16_n917(x)
+ if (x < 1)
+ fun_l17_n861(x)
+ else
+ fun_l17_n72(x)
+ end
+end
+
+def fun_l16_n918(x)
+ if (x < 1)
+ fun_l17_n375(x)
+ else
+ fun_l17_n446(x)
+ end
+end
+
+def fun_l16_n919(x)
+ if (x < 1)
+ fun_l17_n776(x)
+ else
+ fun_l17_n302(x)
+ end
+end
+
+def fun_l16_n920(x)
+ if (x < 1)
+ fun_l17_n216(x)
+ else
+ fun_l17_n804(x)
+ end
+end
+
+def fun_l16_n921(x)
+ if (x < 1)
+ fun_l17_n667(x)
+ else
+ fun_l17_n593(x)
+ end
+end
+
+def fun_l16_n922(x)
+ if (x < 1)
+ fun_l17_n499(x)
+ else
+ fun_l17_n577(x)
+ end
+end
+
+def fun_l16_n923(x)
+ if (x < 1)
+ fun_l17_n41(x)
+ else
+ fun_l17_n316(x)
+ end
+end
+
+def fun_l16_n924(x)
+ if (x < 1)
+ fun_l17_n521(x)
+ else
+ fun_l17_n86(x)
+ end
+end
+
+def fun_l16_n925(x)
+ if (x < 1)
+ fun_l17_n695(x)
+ else
+ fun_l17_n662(x)
+ end
+end
+
+def fun_l16_n926(x)
+ if (x < 1)
+ fun_l17_n379(x)
+ else
+ fun_l17_n58(x)
+ end
+end
+
+def fun_l16_n927(x)
+ if (x < 1)
+ fun_l17_n820(x)
+ else
+ fun_l17_n801(x)
+ end
+end
+
+def fun_l16_n928(x)
+ if (x < 1)
+ fun_l17_n175(x)
+ else
+ fun_l17_n865(x)
+ end
+end
+
+def fun_l16_n929(x)
+ if (x < 1)
+ fun_l17_n903(x)
+ else
+ fun_l17_n644(x)
+ end
+end
+
+def fun_l16_n930(x)
+ if (x < 1)
+ fun_l17_n801(x)
+ else
+ fun_l17_n265(x)
+ end
+end
+
+def fun_l16_n931(x)
+ if (x < 1)
+ fun_l17_n292(x)
+ else
+ fun_l17_n897(x)
+ end
+end
+
+def fun_l16_n932(x)
+ if (x < 1)
+ fun_l17_n666(x)
+ else
+ fun_l17_n531(x)
+ end
+end
+
+def fun_l16_n933(x)
+ if (x < 1)
+ fun_l17_n929(x)
+ else
+ fun_l17_n205(x)
+ end
+end
+
+def fun_l16_n934(x)
+ if (x < 1)
+ fun_l17_n557(x)
+ else
+ fun_l17_n70(x)
+ end
+end
+
+def fun_l16_n935(x)
+ if (x < 1)
+ fun_l17_n831(x)
+ else
+ fun_l17_n194(x)
+ end
+end
+
+def fun_l16_n936(x)
+ if (x < 1)
+ fun_l17_n277(x)
+ else
+ fun_l17_n786(x)
+ end
+end
+
+def fun_l16_n937(x)
+ if (x < 1)
+ fun_l17_n464(x)
+ else
+ fun_l17_n482(x)
+ end
+end
+
+def fun_l16_n938(x)
+ if (x < 1)
+ fun_l17_n782(x)
+ else
+ fun_l17_n60(x)
+ end
+end
+
+def fun_l16_n939(x)
+ if (x < 1)
+ fun_l17_n780(x)
+ else
+ fun_l17_n786(x)
+ end
+end
+
+def fun_l16_n940(x)
+ if (x < 1)
+ fun_l17_n201(x)
+ else
+ fun_l17_n614(x)
+ end
+end
+
+def fun_l16_n941(x)
+ if (x < 1)
+ fun_l17_n318(x)
+ else
+ fun_l17_n210(x)
+ end
+end
+
+def fun_l16_n942(x)
+ if (x < 1)
+ fun_l17_n831(x)
+ else
+ fun_l17_n293(x)
+ end
+end
+
+def fun_l16_n943(x)
+ if (x < 1)
+ fun_l17_n368(x)
+ else
+ fun_l17_n292(x)
+ end
+end
+
+def fun_l16_n944(x)
+ if (x < 1)
+ fun_l17_n924(x)
+ else
+ fun_l17_n20(x)
+ end
+end
+
+def fun_l16_n945(x)
+ if (x < 1)
+ fun_l17_n340(x)
+ else
+ fun_l17_n268(x)
+ end
+end
+
+def fun_l16_n946(x)
+ if (x < 1)
+ fun_l17_n913(x)
+ else
+ fun_l17_n877(x)
+ end
+end
+
+def fun_l16_n947(x)
+ if (x < 1)
+ fun_l17_n577(x)
+ else
+ fun_l17_n973(x)
+ end
+end
+
+def fun_l16_n948(x)
+ if (x < 1)
+ fun_l17_n101(x)
+ else
+ fun_l17_n350(x)
+ end
+end
+
+def fun_l16_n949(x)
+ if (x < 1)
+ fun_l17_n1(x)
+ else
+ fun_l17_n683(x)
+ end
+end
+
+def fun_l16_n950(x)
+ if (x < 1)
+ fun_l17_n290(x)
+ else
+ fun_l17_n30(x)
+ end
+end
+
+def fun_l16_n951(x)
+ if (x < 1)
+ fun_l17_n965(x)
+ else
+ fun_l17_n165(x)
+ end
+end
+
+def fun_l16_n952(x)
+ if (x < 1)
+ fun_l17_n532(x)
+ else
+ fun_l17_n887(x)
+ end
+end
+
+def fun_l16_n953(x)
+ if (x < 1)
+ fun_l17_n73(x)
+ else
+ fun_l17_n82(x)
+ end
+end
+
+def fun_l16_n954(x)
+ if (x < 1)
+ fun_l17_n518(x)
+ else
+ fun_l17_n886(x)
+ end
+end
+
+def fun_l16_n955(x)
+ if (x < 1)
+ fun_l17_n990(x)
+ else
+ fun_l17_n213(x)
+ end
+end
+
+def fun_l16_n956(x)
+ if (x < 1)
+ fun_l17_n489(x)
+ else
+ fun_l17_n937(x)
+ end
+end
+
+def fun_l16_n957(x)
+ if (x < 1)
+ fun_l17_n657(x)
+ else
+ fun_l17_n25(x)
+ end
+end
+
+def fun_l16_n958(x)
+ if (x < 1)
+ fun_l17_n988(x)
+ else
+ fun_l17_n684(x)
+ end
+end
+
+def fun_l16_n959(x)
+ if (x < 1)
+ fun_l17_n142(x)
+ else
+ fun_l17_n291(x)
+ end
+end
+
+def fun_l16_n960(x)
+ if (x < 1)
+ fun_l17_n495(x)
+ else
+ fun_l17_n806(x)
+ end
+end
+
+def fun_l16_n961(x)
+ if (x < 1)
+ fun_l17_n92(x)
+ else
+ fun_l17_n137(x)
+ end
+end
+
+def fun_l16_n962(x)
+ if (x < 1)
+ fun_l17_n954(x)
+ else
+ fun_l17_n943(x)
+ end
+end
+
+def fun_l16_n963(x)
+ if (x < 1)
+ fun_l17_n761(x)
+ else
+ fun_l17_n839(x)
+ end
+end
+
+def fun_l16_n964(x)
+ if (x < 1)
+ fun_l17_n591(x)
+ else
+ fun_l17_n519(x)
+ end
+end
+
+def fun_l16_n965(x)
+ if (x < 1)
+ fun_l17_n548(x)
+ else
+ fun_l17_n190(x)
+ end
+end
+
+def fun_l16_n966(x)
+ if (x < 1)
+ fun_l17_n206(x)
+ else
+ fun_l17_n491(x)
+ end
+end
+
+def fun_l16_n967(x)
+ if (x < 1)
+ fun_l17_n895(x)
+ else
+ fun_l17_n404(x)
+ end
+end
+
+def fun_l16_n968(x)
+ if (x < 1)
+ fun_l17_n284(x)
+ else
+ fun_l17_n715(x)
+ end
+end
+
+def fun_l16_n969(x)
+ if (x < 1)
+ fun_l17_n507(x)
+ else
+ fun_l17_n623(x)
+ end
+end
+
+def fun_l16_n970(x)
+ if (x < 1)
+ fun_l17_n415(x)
+ else
+ fun_l17_n718(x)
+ end
+end
+
+def fun_l16_n971(x)
+ if (x < 1)
+ fun_l17_n72(x)
+ else
+ fun_l17_n938(x)
+ end
+end
+
+def fun_l16_n972(x)
+ if (x < 1)
+ fun_l17_n661(x)
+ else
+ fun_l17_n525(x)
+ end
+end
+
+def fun_l16_n973(x)
+ if (x < 1)
+ fun_l17_n314(x)
+ else
+ fun_l17_n195(x)
+ end
+end
+
+def fun_l16_n974(x)
+ if (x < 1)
+ fun_l17_n53(x)
+ else
+ fun_l17_n562(x)
+ end
+end
+
+def fun_l16_n975(x)
+ if (x < 1)
+ fun_l17_n381(x)
+ else
+ fun_l17_n241(x)
+ end
+end
+
+def fun_l16_n976(x)
+ if (x < 1)
+ fun_l17_n919(x)
+ else
+ fun_l17_n291(x)
+ end
+end
+
+def fun_l16_n977(x)
+ if (x < 1)
+ fun_l17_n455(x)
+ else
+ fun_l17_n773(x)
+ end
+end
+
+def fun_l16_n978(x)
+ if (x < 1)
+ fun_l17_n75(x)
+ else
+ fun_l17_n737(x)
+ end
+end
+
+def fun_l16_n979(x)
+ if (x < 1)
+ fun_l17_n68(x)
+ else
+ fun_l17_n339(x)
+ end
+end
+
+def fun_l16_n980(x)
+ if (x < 1)
+ fun_l17_n719(x)
+ else
+ fun_l17_n464(x)
+ end
+end
+
+def fun_l16_n981(x)
+ if (x < 1)
+ fun_l17_n681(x)
+ else
+ fun_l17_n611(x)
+ end
+end
+
+def fun_l16_n982(x)
+ if (x < 1)
+ fun_l17_n367(x)
+ else
+ fun_l17_n446(x)
+ end
+end
+
+def fun_l16_n983(x)
+ if (x < 1)
+ fun_l17_n493(x)
+ else
+ fun_l17_n958(x)
+ end
+end
+
+def fun_l16_n984(x)
+ if (x < 1)
+ fun_l17_n271(x)
+ else
+ fun_l17_n982(x)
+ end
+end
+
+def fun_l16_n985(x)
+ if (x < 1)
+ fun_l17_n136(x)
+ else
+ fun_l17_n446(x)
+ end
+end
+
+def fun_l16_n986(x)
+ if (x < 1)
+ fun_l17_n362(x)
+ else
+ fun_l17_n114(x)
+ end
+end
+
+def fun_l16_n987(x)
+ if (x < 1)
+ fun_l17_n234(x)
+ else
+ fun_l17_n236(x)
+ end
+end
+
+def fun_l16_n988(x)
+ if (x < 1)
+ fun_l17_n339(x)
+ else
+ fun_l17_n2(x)
+ end
+end
+
+def fun_l16_n989(x)
+ if (x < 1)
+ fun_l17_n66(x)
+ else
+ fun_l17_n378(x)
+ end
+end
+
+def fun_l16_n990(x)
+ if (x < 1)
+ fun_l17_n366(x)
+ else
+ fun_l17_n289(x)
+ end
+end
+
+def fun_l16_n991(x)
+ if (x < 1)
+ fun_l17_n977(x)
+ else
+ fun_l17_n520(x)
+ end
+end
+
+def fun_l16_n992(x)
+ if (x < 1)
+ fun_l17_n953(x)
+ else
+ fun_l17_n254(x)
+ end
+end
+
+def fun_l16_n993(x)
+ if (x < 1)
+ fun_l17_n569(x)
+ else
+ fun_l17_n63(x)
+ end
+end
+
+def fun_l16_n994(x)
+ if (x < 1)
+ fun_l17_n844(x)
+ else
+ fun_l17_n42(x)
+ end
+end
+
+def fun_l16_n995(x)
+ if (x < 1)
+ fun_l17_n184(x)
+ else
+ fun_l17_n371(x)
+ end
+end
+
+def fun_l16_n996(x)
+ if (x < 1)
+ fun_l17_n229(x)
+ else
+ fun_l17_n309(x)
+ end
+end
+
+def fun_l16_n997(x)
+ if (x < 1)
+ fun_l17_n468(x)
+ else
+ fun_l17_n653(x)
+ end
+end
+
+def fun_l16_n998(x)
+ if (x < 1)
+ fun_l17_n173(x)
+ else
+ fun_l17_n709(x)
+ end
+end
+
+def fun_l16_n999(x)
+ if (x < 1)
+ fun_l17_n625(x)
+ else
+ fun_l17_n831(x)
+ end
+end
+
+def fun_l17_n0(x)
+ if (x < 1)
+ fun_l18_n495(x)
+ else
+ fun_l18_n122(x)
+ end
+end
+
+def fun_l17_n1(x)
+ if (x < 1)
+ fun_l18_n99(x)
+ else
+ fun_l18_n84(x)
+ end
+end
+
+def fun_l17_n2(x)
+ if (x < 1)
+ fun_l18_n464(x)
+ else
+ fun_l18_n321(x)
+ end
+end
+
+def fun_l17_n3(x)
+ if (x < 1)
+ fun_l18_n391(x)
+ else
+ fun_l18_n122(x)
+ end
+end
+
+def fun_l17_n4(x)
+ if (x < 1)
+ fun_l18_n65(x)
+ else
+ fun_l18_n514(x)
+ end
+end
+
+def fun_l17_n5(x)
+ if (x < 1)
+ fun_l18_n972(x)
+ else
+ fun_l18_n802(x)
+ end
+end
+
+def fun_l17_n6(x)
+ if (x < 1)
+ fun_l18_n577(x)
+ else
+ fun_l18_n26(x)
+ end
+end
+
+def fun_l17_n7(x)
+ if (x < 1)
+ fun_l18_n988(x)
+ else
+ fun_l18_n403(x)
+ end
+end
+
+def fun_l17_n8(x)
+ if (x < 1)
+ fun_l18_n466(x)
+ else
+ fun_l18_n162(x)
+ end
+end
+
+def fun_l17_n9(x)
+ if (x < 1)
+ fun_l18_n30(x)
+ else
+ fun_l18_n438(x)
+ end
+end
+
+def fun_l17_n10(x)
+ if (x < 1)
+ fun_l18_n92(x)
+ else
+ fun_l18_n365(x)
+ end
+end
+
+def fun_l17_n11(x)
+ if (x < 1)
+ fun_l18_n230(x)
+ else
+ fun_l18_n466(x)
+ end
+end
+
+def fun_l17_n12(x)
+ if (x < 1)
+ fun_l18_n274(x)
+ else
+ fun_l18_n38(x)
+ end
+end
+
+def fun_l17_n13(x)
+ if (x < 1)
+ fun_l18_n84(x)
+ else
+ fun_l18_n951(x)
+ end
+end
+
+def fun_l17_n14(x)
+ if (x < 1)
+ fun_l18_n878(x)
+ else
+ fun_l18_n981(x)
+ end
+end
+
+def fun_l17_n15(x)
+ if (x < 1)
+ fun_l18_n592(x)
+ else
+ fun_l18_n917(x)
+ end
+end
+
+def fun_l17_n16(x)
+ if (x < 1)
+ fun_l18_n524(x)
+ else
+ fun_l18_n812(x)
+ end
+end
+
+def fun_l17_n17(x)
+ if (x < 1)
+ fun_l18_n267(x)
+ else
+ fun_l18_n335(x)
+ end
+end
+
+def fun_l17_n18(x)
+ if (x < 1)
+ fun_l18_n427(x)
+ else
+ fun_l18_n591(x)
+ end
+end
+
+def fun_l17_n19(x)
+ if (x < 1)
+ fun_l18_n520(x)
+ else
+ fun_l18_n240(x)
+ end
+end
+
+def fun_l17_n20(x)
+ if (x < 1)
+ fun_l18_n729(x)
+ else
+ fun_l18_n709(x)
+ end
+end
+
+def fun_l17_n21(x)
+ if (x < 1)
+ fun_l18_n100(x)
+ else
+ fun_l18_n192(x)
+ end
+end
+
+def fun_l17_n22(x)
+ if (x < 1)
+ fun_l18_n762(x)
+ else
+ fun_l18_n373(x)
+ end
+end
+
+def fun_l17_n23(x)
+ if (x < 1)
+ fun_l18_n485(x)
+ else
+ fun_l18_n736(x)
+ end
+end
+
+def fun_l17_n24(x)
+ if (x < 1)
+ fun_l18_n743(x)
+ else
+ fun_l18_n83(x)
+ end
+end
+
+def fun_l17_n25(x)
+ if (x < 1)
+ fun_l18_n750(x)
+ else
+ fun_l18_n545(x)
+ end
+end
+
+def fun_l17_n26(x)
+ if (x < 1)
+ fun_l18_n488(x)
+ else
+ fun_l18_n870(x)
+ end
+end
+
+def fun_l17_n27(x)
+ if (x < 1)
+ fun_l18_n0(x)
+ else
+ fun_l18_n675(x)
+ end
+end
+
+def fun_l17_n28(x)
+ if (x < 1)
+ fun_l18_n878(x)
+ else
+ fun_l18_n32(x)
+ end
+end
+
+def fun_l17_n29(x)
+ if (x < 1)
+ fun_l18_n906(x)
+ else
+ fun_l18_n376(x)
+ end
+end
+
+def fun_l17_n30(x)
+ if (x < 1)
+ fun_l18_n182(x)
+ else
+ fun_l18_n58(x)
+ end
+end
+
+def fun_l17_n31(x)
+ if (x < 1)
+ fun_l18_n117(x)
+ else
+ fun_l18_n592(x)
+ end
+end
+
+def fun_l17_n32(x)
+ if (x < 1)
+ fun_l18_n123(x)
+ else
+ fun_l18_n697(x)
+ end
+end
+
+def fun_l17_n33(x)
+ if (x < 1)
+ fun_l18_n672(x)
+ else
+ fun_l18_n645(x)
+ end
+end
+
+def fun_l17_n34(x)
+ if (x < 1)
+ fun_l18_n640(x)
+ else
+ fun_l18_n280(x)
+ end
+end
+
+def fun_l17_n35(x)
+ if (x < 1)
+ fun_l18_n851(x)
+ else
+ fun_l18_n723(x)
+ end
+end
+
+def fun_l17_n36(x)
+ if (x < 1)
+ fun_l18_n968(x)
+ else
+ fun_l18_n840(x)
+ end
+end
+
+def fun_l17_n37(x)
+ if (x < 1)
+ fun_l18_n153(x)
+ else
+ fun_l18_n979(x)
+ end
+end
+
+def fun_l17_n38(x)
+ if (x < 1)
+ fun_l18_n817(x)
+ else
+ fun_l18_n521(x)
+ end
+end
+
+def fun_l17_n39(x)
+ if (x < 1)
+ fun_l18_n742(x)
+ else
+ fun_l18_n576(x)
+ end
+end
+
+def fun_l17_n40(x)
+ if (x < 1)
+ fun_l18_n5(x)
+ else
+ fun_l18_n998(x)
+ end
+end
+
+def fun_l17_n41(x)
+ if (x < 1)
+ fun_l18_n442(x)
+ else
+ fun_l18_n157(x)
+ end
+end
+
+def fun_l17_n42(x)
+ if (x < 1)
+ fun_l18_n832(x)
+ else
+ fun_l18_n218(x)
+ end
+end
+
+def fun_l17_n43(x)
+ if (x < 1)
+ fun_l18_n298(x)
+ else
+ fun_l18_n132(x)
+ end
+end
+
+def fun_l17_n44(x)
+ if (x < 1)
+ fun_l18_n397(x)
+ else
+ fun_l18_n375(x)
+ end
+end
+
+def fun_l17_n45(x)
+ if (x < 1)
+ fun_l18_n974(x)
+ else
+ fun_l18_n19(x)
+ end
+end
+
+def fun_l17_n46(x)
+ if (x < 1)
+ fun_l18_n340(x)
+ else
+ fun_l18_n506(x)
+ end
+end
+
+def fun_l17_n47(x)
+ if (x < 1)
+ fun_l18_n943(x)
+ else
+ fun_l18_n585(x)
+ end
+end
+
+def fun_l17_n48(x)
+ if (x < 1)
+ fun_l18_n756(x)
+ else
+ fun_l18_n2(x)
+ end
+end
+
+def fun_l17_n49(x)
+ if (x < 1)
+ fun_l18_n229(x)
+ else
+ fun_l18_n313(x)
+ end
+end
+
+def fun_l17_n50(x)
+ if (x < 1)
+ fun_l18_n243(x)
+ else
+ fun_l18_n562(x)
+ end
+end
+
+def fun_l17_n51(x)
+ if (x < 1)
+ fun_l18_n231(x)
+ else
+ fun_l18_n381(x)
+ end
+end
+
+def fun_l17_n52(x)
+ if (x < 1)
+ fun_l18_n509(x)
+ else
+ fun_l18_n693(x)
+ end
+end
+
+def fun_l17_n53(x)
+ if (x < 1)
+ fun_l18_n877(x)
+ else
+ fun_l18_n620(x)
+ end
+end
+
+def fun_l17_n54(x)
+ if (x < 1)
+ fun_l18_n435(x)
+ else
+ fun_l18_n3(x)
+ end
+end
+
+def fun_l17_n55(x)
+ if (x < 1)
+ fun_l18_n929(x)
+ else
+ fun_l18_n640(x)
+ end
+end
+
+def fun_l17_n56(x)
+ if (x < 1)
+ fun_l18_n913(x)
+ else
+ fun_l18_n374(x)
+ end
+end
+
+def fun_l17_n57(x)
+ if (x < 1)
+ fun_l18_n174(x)
+ else
+ fun_l18_n588(x)
+ end
+end
+
+def fun_l17_n58(x)
+ if (x < 1)
+ fun_l18_n339(x)
+ else
+ fun_l18_n860(x)
+ end
+end
+
+def fun_l17_n59(x)
+ if (x < 1)
+ fun_l18_n649(x)
+ else
+ fun_l18_n986(x)
+ end
+end
+
+def fun_l17_n60(x)
+ if (x < 1)
+ fun_l18_n326(x)
+ else
+ fun_l18_n739(x)
+ end
+end
+
+def fun_l17_n61(x)
+ if (x < 1)
+ fun_l18_n692(x)
+ else
+ fun_l18_n673(x)
+ end
+end
+
+def fun_l17_n62(x)
+ if (x < 1)
+ fun_l18_n515(x)
+ else
+ fun_l18_n951(x)
+ end
+end
+
+def fun_l17_n63(x)
+ if (x < 1)
+ fun_l18_n502(x)
+ else
+ fun_l18_n781(x)
+ end
+end
+
+def fun_l17_n64(x)
+ if (x < 1)
+ fun_l18_n833(x)
+ else
+ fun_l18_n235(x)
+ end
+end
+
+def fun_l17_n65(x)
+ if (x < 1)
+ fun_l18_n483(x)
+ else
+ fun_l18_n207(x)
+ end
+end
+
+def fun_l17_n66(x)
+ if (x < 1)
+ fun_l18_n292(x)
+ else
+ fun_l18_n916(x)
+ end
+end
+
+def fun_l17_n67(x)
+ if (x < 1)
+ fun_l18_n677(x)
+ else
+ fun_l18_n937(x)
+ end
+end
+
+def fun_l17_n68(x)
+ if (x < 1)
+ fun_l18_n733(x)
+ else
+ fun_l18_n426(x)
+ end
+end
+
+def fun_l17_n69(x)
+ if (x < 1)
+ fun_l18_n186(x)
+ else
+ fun_l18_n146(x)
+ end
+end
+
+def fun_l17_n70(x)
+ if (x < 1)
+ fun_l18_n493(x)
+ else
+ fun_l18_n418(x)
+ end
+end
+
+def fun_l17_n71(x)
+ if (x < 1)
+ fun_l18_n732(x)
+ else
+ fun_l18_n584(x)
+ end
+end
+
+def fun_l17_n72(x)
+ if (x < 1)
+ fun_l18_n774(x)
+ else
+ fun_l18_n349(x)
+ end
+end
+
+def fun_l17_n73(x)
+ if (x < 1)
+ fun_l18_n833(x)
+ else
+ fun_l18_n142(x)
+ end
+end
+
+def fun_l17_n74(x)
+ if (x < 1)
+ fun_l18_n506(x)
+ else
+ fun_l18_n882(x)
+ end
+end
+
+def fun_l17_n75(x)
+ if (x < 1)
+ fun_l18_n856(x)
+ else
+ fun_l18_n906(x)
+ end
+end
+
+def fun_l17_n76(x)
+ if (x < 1)
+ fun_l18_n172(x)
+ else
+ fun_l18_n426(x)
+ end
+end
+
+def fun_l17_n77(x)
+ if (x < 1)
+ fun_l18_n357(x)
+ else
+ fun_l18_n508(x)
+ end
+end
+
+def fun_l17_n78(x)
+ if (x < 1)
+ fun_l18_n25(x)
+ else
+ fun_l18_n899(x)
+ end
+end
+
+def fun_l17_n79(x)
+ if (x < 1)
+ fun_l18_n639(x)
+ else
+ fun_l18_n644(x)
+ end
+end
+
+def fun_l17_n80(x)
+ if (x < 1)
+ fun_l18_n207(x)
+ else
+ fun_l18_n193(x)
+ end
+end
+
+def fun_l17_n81(x)
+ if (x < 1)
+ fun_l18_n200(x)
+ else
+ fun_l18_n766(x)
+ end
+end
+
+def fun_l17_n82(x)
+ if (x < 1)
+ fun_l18_n815(x)
+ else
+ fun_l18_n533(x)
+ end
+end
+
+def fun_l17_n83(x)
+ if (x < 1)
+ fun_l18_n740(x)
+ else
+ fun_l18_n507(x)
+ end
+end
+
+def fun_l17_n84(x)
+ if (x < 1)
+ fun_l18_n484(x)
+ else
+ fun_l18_n158(x)
+ end
+end
+
+def fun_l17_n85(x)
+ if (x < 1)
+ fun_l18_n924(x)
+ else
+ fun_l18_n963(x)
+ end
+end
+
+def fun_l17_n86(x)
+ if (x < 1)
+ fun_l18_n614(x)
+ else
+ fun_l18_n806(x)
+ end
+end
+
+def fun_l17_n87(x)
+ if (x < 1)
+ fun_l18_n553(x)
+ else
+ fun_l18_n510(x)
+ end
+end
+
+def fun_l17_n88(x)
+ if (x < 1)
+ fun_l18_n561(x)
+ else
+ fun_l18_n860(x)
+ end
+end
+
+def fun_l17_n89(x)
+ if (x < 1)
+ fun_l18_n757(x)
+ else
+ fun_l18_n248(x)
+ end
+end
+
+def fun_l17_n90(x)
+ if (x < 1)
+ fun_l18_n616(x)
+ else
+ fun_l18_n217(x)
+ end
+end
+
+def fun_l17_n91(x)
+ if (x < 1)
+ fun_l18_n997(x)
+ else
+ fun_l18_n861(x)
+ end
+end
+
+def fun_l17_n92(x)
+ if (x < 1)
+ fun_l18_n18(x)
+ else
+ fun_l18_n457(x)
+ end
+end
+
+def fun_l17_n93(x)
+ if (x < 1)
+ fun_l18_n264(x)
+ else
+ fun_l18_n213(x)
+ end
+end
+
+def fun_l17_n94(x)
+ if (x < 1)
+ fun_l18_n352(x)
+ else
+ fun_l18_n304(x)
+ end
+end
+
+def fun_l17_n95(x)
+ if (x < 1)
+ fun_l18_n975(x)
+ else
+ fun_l18_n868(x)
+ end
+end
+
+def fun_l17_n96(x)
+ if (x < 1)
+ fun_l18_n859(x)
+ else
+ fun_l18_n786(x)
+ end
+end
+
+def fun_l17_n97(x)
+ if (x < 1)
+ fun_l18_n610(x)
+ else
+ fun_l18_n423(x)
+ end
+end
+
+def fun_l17_n98(x)
+ if (x < 1)
+ fun_l18_n814(x)
+ else
+ fun_l18_n71(x)
+ end
+end
+
+def fun_l17_n99(x)
+ if (x < 1)
+ fun_l18_n897(x)
+ else
+ fun_l18_n412(x)
+ end
+end
+
+def fun_l17_n100(x)
+ if (x < 1)
+ fun_l18_n654(x)
+ else
+ fun_l18_n600(x)
+ end
+end
+
+def fun_l17_n101(x)
+ if (x < 1)
+ fun_l18_n185(x)
+ else
+ fun_l18_n188(x)
+ end
+end
+
+def fun_l17_n102(x)
+ if (x < 1)
+ fun_l18_n262(x)
+ else
+ fun_l18_n509(x)
+ end
+end
+
+def fun_l17_n103(x)
+ if (x < 1)
+ fun_l18_n115(x)
+ else
+ fun_l18_n497(x)
+ end
+end
+
+def fun_l17_n104(x)
+ if (x < 1)
+ fun_l18_n650(x)
+ else
+ fun_l18_n389(x)
+ end
+end
+
+def fun_l17_n105(x)
+ if (x < 1)
+ fun_l18_n939(x)
+ else
+ fun_l18_n842(x)
+ end
+end
+
+def fun_l17_n106(x)
+ if (x < 1)
+ fun_l18_n645(x)
+ else
+ fun_l18_n34(x)
+ end
+end
+
+def fun_l17_n107(x)
+ if (x < 1)
+ fun_l18_n510(x)
+ else
+ fun_l18_n313(x)
+ end
+end
+
+def fun_l17_n108(x)
+ if (x < 1)
+ fun_l18_n377(x)
+ else
+ fun_l18_n397(x)
+ end
+end
+
+def fun_l17_n109(x)
+ if (x < 1)
+ fun_l18_n884(x)
+ else
+ fun_l18_n380(x)
+ end
+end
+
+def fun_l17_n110(x)
+ if (x < 1)
+ fun_l18_n924(x)
+ else
+ fun_l18_n102(x)
+ end
+end
+
+def fun_l17_n111(x)
+ if (x < 1)
+ fun_l18_n856(x)
+ else
+ fun_l18_n646(x)
+ end
+end
+
+def fun_l17_n112(x)
+ if (x < 1)
+ fun_l18_n270(x)
+ else
+ fun_l18_n345(x)
+ end
+end
+
+def fun_l17_n113(x)
+ if (x < 1)
+ fun_l18_n211(x)
+ else
+ fun_l18_n672(x)
+ end
+end
+
+def fun_l17_n114(x)
+ if (x < 1)
+ fun_l18_n947(x)
+ else
+ fun_l18_n376(x)
+ end
+end
+
+def fun_l17_n115(x)
+ if (x < 1)
+ fun_l18_n219(x)
+ else
+ fun_l18_n927(x)
+ end
+end
+
+def fun_l17_n116(x)
+ if (x < 1)
+ fun_l18_n731(x)
+ else
+ fun_l18_n327(x)
+ end
+end
+
+def fun_l17_n117(x)
+ if (x < 1)
+ fun_l18_n512(x)
+ else
+ fun_l18_n658(x)
+ end
+end
+
+def fun_l17_n118(x)
+ if (x < 1)
+ fun_l18_n248(x)
+ else
+ fun_l18_n661(x)
+ end
+end
+
+def fun_l17_n119(x)
+ if (x < 1)
+ fun_l18_n18(x)
+ else
+ fun_l18_n56(x)
+ end
+end
+
+def fun_l17_n120(x)
+ if (x < 1)
+ fun_l18_n441(x)
+ else
+ fun_l18_n648(x)
+ end
+end
+
+def fun_l17_n121(x)
+ if (x < 1)
+ fun_l18_n122(x)
+ else
+ fun_l18_n717(x)
+ end
+end
+
+def fun_l17_n122(x)
+ if (x < 1)
+ fun_l18_n495(x)
+ else
+ fun_l18_n30(x)
+ end
+end
+
+def fun_l17_n123(x)
+ if (x < 1)
+ fun_l18_n418(x)
+ else
+ fun_l18_n686(x)
+ end
+end
+
+def fun_l17_n124(x)
+ if (x < 1)
+ fun_l18_n274(x)
+ else
+ fun_l18_n300(x)
+ end
+end
+
+def fun_l17_n125(x)
+ if (x < 1)
+ fun_l18_n677(x)
+ else
+ fun_l18_n662(x)
+ end
+end
+
+def fun_l17_n126(x)
+ if (x < 1)
+ fun_l18_n448(x)
+ else
+ fun_l18_n584(x)
+ end
+end
+
+def fun_l17_n127(x)
+ if (x < 1)
+ fun_l18_n316(x)
+ else
+ fun_l18_n507(x)
+ end
+end
+
+def fun_l17_n128(x)
+ if (x < 1)
+ fun_l18_n166(x)
+ else
+ fun_l18_n266(x)
+ end
+end
+
+def fun_l17_n129(x)
+ if (x < 1)
+ fun_l18_n890(x)
+ else
+ fun_l18_n581(x)
+ end
+end
+
+def fun_l17_n130(x)
+ if (x < 1)
+ fun_l18_n554(x)
+ else
+ fun_l18_n925(x)
+ end
+end
+
+def fun_l17_n131(x)
+ if (x < 1)
+ fun_l18_n607(x)
+ else
+ fun_l18_n43(x)
+ end
+end
+
+def fun_l17_n132(x)
+ if (x < 1)
+ fun_l18_n747(x)
+ else
+ fun_l18_n461(x)
+ end
+end
+
+def fun_l17_n133(x)
+ if (x < 1)
+ fun_l18_n399(x)
+ else
+ fun_l18_n436(x)
+ end
+end
+
+def fun_l17_n134(x)
+ if (x < 1)
+ fun_l18_n922(x)
+ else
+ fun_l18_n33(x)
+ end
+end
+
+def fun_l17_n135(x)
+ if (x < 1)
+ fun_l18_n719(x)
+ else
+ fun_l18_n70(x)
+ end
+end
+
+def fun_l17_n136(x)
+ if (x < 1)
+ fun_l18_n664(x)
+ else
+ fun_l18_n842(x)
+ end
+end
+
+def fun_l17_n137(x)
+ if (x < 1)
+ fun_l18_n626(x)
+ else
+ fun_l18_n328(x)
+ end
+end
+
+def fun_l17_n138(x)
+ if (x < 1)
+ fun_l18_n64(x)
+ else
+ fun_l18_n24(x)
+ end
+end
+
+def fun_l17_n139(x)
+ if (x < 1)
+ fun_l18_n198(x)
+ else
+ fun_l18_n658(x)
+ end
+end
+
+def fun_l17_n140(x)
+ if (x < 1)
+ fun_l18_n813(x)
+ else
+ fun_l18_n5(x)
+ end
+end
+
+def fun_l17_n141(x)
+ if (x < 1)
+ fun_l18_n8(x)
+ else
+ fun_l18_n115(x)
+ end
+end
+
+def fun_l17_n142(x)
+ if (x < 1)
+ fun_l18_n699(x)
+ else
+ fun_l18_n135(x)
+ end
+end
+
+def fun_l17_n143(x)
+ if (x < 1)
+ fun_l18_n595(x)
+ else
+ fun_l18_n607(x)
+ end
+end
+
+def fun_l17_n144(x)
+ if (x < 1)
+ fun_l18_n650(x)
+ else
+ fun_l18_n994(x)
+ end
+end
+
+def fun_l17_n145(x)
+ if (x < 1)
+ fun_l18_n14(x)
+ else
+ fun_l18_n798(x)
+ end
+end
+
+def fun_l17_n146(x)
+ if (x < 1)
+ fun_l18_n107(x)
+ else
+ fun_l18_n144(x)
+ end
+end
+
+def fun_l17_n147(x)
+ if (x < 1)
+ fun_l18_n923(x)
+ else
+ fun_l18_n482(x)
+ end
+end
+
+def fun_l17_n148(x)
+ if (x < 1)
+ fun_l18_n629(x)
+ else
+ fun_l18_n224(x)
+ end
+end
+
+def fun_l17_n149(x)
+ if (x < 1)
+ fun_l18_n363(x)
+ else
+ fun_l18_n958(x)
+ end
+end
+
+def fun_l17_n150(x)
+ if (x < 1)
+ fun_l18_n143(x)
+ else
+ fun_l18_n828(x)
+ end
+end
+
+def fun_l17_n151(x)
+ if (x < 1)
+ fun_l18_n615(x)
+ else
+ fun_l18_n561(x)
+ end
+end
+
+def fun_l17_n152(x)
+ if (x < 1)
+ fun_l18_n418(x)
+ else
+ fun_l18_n46(x)
+ end
+end
+
+def fun_l17_n153(x)
+ if (x < 1)
+ fun_l18_n331(x)
+ else
+ fun_l18_n736(x)
+ end
+end
+
+def fun_l17_n154(x)
+ if (x < 1)
+ fun_l18_n340(x)
+ else
+ fun_l18_n221(x)
+ end
+end
+
+def fun_l17_n155(x)
+ if (x < 1)
+ fun_l18_n488(x)
+ else
+ fun_l18_n995(x)
+ end
+end
+
+def fun_l17_n156(x)
+ if (x < 1)
+ fun_l18_n500(x)
+ else
+ fun_l18_n106(x)
+ end
+end
+
+def fun_l17_n157(x)
+ if (x < 1)
+ fun_l18_n76(x)
+ else
+ fun_l18_n147(x)
+ end
+end
+
+def fun_l17_n158(x)
+ if (x < 1)
+ fun_l18_n258(x)
+ else
+ fun_l18_n754(x)
+ end
+end
+
+def fun_l17_n159(x)
+ if (x < 1)
+ fun_l18_n174(x)
+ else
+ fun_l18_n676(x)
+ end
+end
+
+def fun_l17_n160(x)
+ if (x < 1)
+ fun_l18_n997(x)
+ else
+ fun_l18_n662(x)
+ end
+end
+
+def fun_l17_n161(x)
+ if (x < 1)
+ fun_l18_n614(x)
+ else
+ fun_l18_n425(x)
+ end
+end
+
+def fun_l17_n162(x)
+ if (x < 1)
+ fun_l18_n943(x)
+ else
+ fun_l18_n534(x)
+ end
+end
+
+def fun_l17_n163(x)
+ if (x < 1)
+ fun_l18_n577(x)
+ else
+ fun_l18_n670(x)
+ end
+end
+
+def fun_l17_n164(x)
+ if (x < 1)
+ fun_l18_n707(x)
+ else
+ fun_l18_n701(x)
+ end
+end
+
+def fun_l17_n165(x)
+ if (x < 1)
+ fun_l18_n316(x)
+ else
+ fun_l18_n981(x)
+ end
+end
+
+def fun_l17_n166(x)
+ if (x < 1)
+ fun_l18_n557(x)
+ else
+ fun_l18_n710(x)
+ end
+end
+
+def fun_l17_n167(x)
+ if (x < 1)
+ fun_l18_n763(x)
+ else
+ fun_l18_n900(x)
+ end
+end
+
+def fun_l17_n168(x)
+ if (x < 1)
+ fun_l18_n818(x)
+ else
+ fun_l18_n2(x)
+ end
+end
+
+def fun_l17_n169(x)
+ if (x < 1)
+ fun_l18_n68(x)
+ else
+ fun_l18_n894(x)
+ end
+end
+
+def fun_l17_n170(x)
+ if (x < 1)
+ fun_l18_n88(x)
+ else
+ fun_l18_n431(x)
+ end
+end
+
+def fun_l17_n171(x)
+ if (x < 1)
+ fun_l18_n530(x)
+ else
+ fun_l18_n714(x)
+ end
+end
+
+def fun_l17_n172(x)
+ if (x < 1)
+ fun_l18_n636(x)
+ else
+ fun_l18_n747(x)
+ end
+end
+
+def fun_l17_n173(x)
+ if (x < 1)
+ fun_l18_n481(x)
+ else
+ fun_l18_n804(x)
+ end
+end
+
+def fun_l17_n174(x)
+ if (x < 1)
+ fun_l18_n591(x)
+ else
+ fun_l18_n121(x)
+ end
+end
+
+def fun_l17_n175(x)
+ if (x < 1)
+ fun_l18_n320(x)
+ else
+ fun_l18_n881(x)
+ end
+end
+
+def fun_l17_n176(x)
+ if (x < 1)
+ fun_l18_n524(x)
+ else
+ fun_l18_n948(x)
+ end
+end
+
+def fun_l17_n177(x)
+ if (x < 1)
+ fun_l18_n540(x)
+ else
+ fun_l18_n508(x)
+ end
+end
+
+def fun_l17_n178(x)
+ if (x < 1)
+ fun_l18_n949(x)
+ else
+ fun_l18_n492(x)
+ end
+end
+
+def fun_l17_n179(x)
+ if (x < 1)
+ fun_l18_n548(x)
+ else
+ fun_l18_n534(x)
+ end
+end
+
+def fun_l17_n180(x)
+ if (x < 1)
+ fun_l18_n591(x)
+ else
+ fun_l18_n104(x)
+ end
+end
+
+def fun_l17_n181(x)
+ if (x < 1)
+ fun_l18_n727(x)
+ else
+ fun_l18_n144(x)
+ end
+end
+
+def fun_l17_n182(x)
+ if (x < 1)
+ fun_l18_n365(x)
+ else
+ fun_l18_n628(x)
+ end
+end
+
+def fun_l17_n183(x)
+ if (x < 1)
+ fun_l18_n32(x)
+ else
+ fun_l18_n752(x)
+ end
+end
+
+def fun_l17_n184(x)
+ if (x < 1)
+ fun_l18_n778(x)
+ else
+ fun_l18_n929(x)
+ end
+end
+
+def fun_l17_n185(x)
+ if (x < 1)
+ fun_l18_n797(x)
+ else
+ fun_l18_n525(x)
+ end
+end
+
+def fun_l17_n186(x)
+ if (x < 1)
+ fun_l18_n800(x)
+ else
+ fun_l18_n799(x)
+ end
+end
+
+def fun_l17_n187(x)
+ if (x < 1)
+ fun_l18_n974(x)
+ else
+ fun_l18_n982(x)
+ end
+end
+
+def fun_l17_n188(x)
+ if (x < 1)
+ fun_l18_n259(x)
+ else
+ fun_l18_n465(x)
+ end
+end
+
+def fun_l17_n189(x)
+ if (x < 1)
+ fun_l18_n905(x)
+ else
+ fun_l18_n477(x)
+ end
+end
+
+def fun_l17_n190(x)
+ if (x < 1)
+ fun_l18_n453(x)
+ else
+ fun_l18_n894(x)
+ end
+end
+
+def fun_l17_n191(x)
+ if (x < 1)
+ fun_l18_n461(x)
+ else
+ fun_l18_n251(x)
+ end
+end
+
+def fun_l17_n192(x)
+ if (x < 1)
+ fun_l18_n377(x)
+ else
+ fun_l18_n371(x)
+ end
+end
+
+def fun_l17_n193(x)
+ if (x < 1)
+ fun_l18_n252(x)
+ else
+ fun_l18_n493(x)
+ end
+end
+
+def fun_l17_n194(x)
+ if (x < 1)
+ fun_l18_n398(x)
+ else
+ fun_l18_n104(x)
+ end
+end
+
+def fun_l17_n195(x)
+ if (x < 1)
+ fun_l18_n791(x)
+ else
+ fun_l18_n4(x)
+ end
+end
+
+def fun_l17_n196(x)
+ if (x < 1)
+ fun_l18_n801(x)
+ else
+ fun_l18_n429(x)
+ end
+end
+
+def fun_l17_n197(x)
+ if (x < 1)
+ fun_l18_n106(x)
+ else
+ fun_l18_n622(x)
+ end
+end
+
+def fun_l17_n198(x)
+ if (x < 1)
+ fun_l18_n581(x)
+ else
+ fun_l18_n312(x)
+ end
+end
+
+def fun_l17_n199(x)
+ if (x < 1)
+ fun_l18_n142(x)
+ else
+ fun_l18_n296(x)
+ end
+end
+
+def fun_l17_n200(x)
+ if (x < 1)
+ fun_l18_n234(x)
+ else
+ fun_l18_n185(x)
+ end
+end
+
+def fun_l17_n201(x)
+ if (x < 1)
+ fun_l18_n486(x)
+ else
+ fun_l18_n857(x)
+ end
+end
+
+def fun_l17_n202(x)
+ if (x < 1)
+ fun_l18_n84(x)
+ else
+ fun_l18_n718(x)
+ end
+end
+
+def fun_l17_n203(x)
+ if (x < 1)
+ fun_l18_n830(x)
+ else
+ fun_l18_n618(x)
+ end
+end
+
+def fun_l17_n204(x)
+ if (x < 1)
+ fun_l18_n860(x)
+ else
+ fun_l18_n28(x)
+ end
+end
+
+def fun_l17_n205(x)
+ if (x < 1)
+ fun_l18_n244(x)
+ else
+ fun_l18_n575(x)
+ end
+end
+
+def fun_l17_n206(x)
+ if (x < 1)
+ fun_l18_n189(x)
+ else
+ fun_l18_n722(x)
+ end
+end
+
+def fun_l17_n207(x)
+ if (x < 1)
+ fun_l18_n164(x)
+ else
+ fun_l18_n197(x)
+ end
+end
+
+def fun_l17_n208(x)
+ if (x < 1)
+ fun_l18_n109(x)
+ else
+ fun_l18_n392(x)
+ end
+end
+
+def fun_l17_n209(x)
+ if (x < 1)
+ fun_l18_n629(x)
+ else
+ fun_l18_n290(x)
+ end
+end
+
+def fun_l17_n210(x)
+ if (x < 1)
+ fun_l18_n637(x)
+ else
+ fun_l18_n317(x)
+ end
+end
+
+def fun_l17_n211(x)
+ if (x < 1)
+ fun_l18_n148(x)
+ else
+ fun_l18_n702(x)
+ end
+end
+
+def fun_l17_n212(x)
+ if (x < 1)
+ fun_l18_n892(x)
+ else
+ fun_l18_n395(x)
+ end
+end
+
+def fun_l17_n213(x)
+ if (x < 1)
+ fun_l18_n457(x)
+ else
+ fun_l18_n859(x)
+ end
+end
+
+def fun_l17_n214(x)
+ if (x < 1)
+ fun_l18_n561(x)
+ else
+ fun_l18_n295(x)
+ end
+end
+
+def fun_l17_n215(x)
+ if (x < 1)
+ fun_l18_n459(x)
+ else
+ fun_l18_n407(x)
+ end
+end
+
+def fun_l17_n216(x)
+ if (x < 1)
+ fun_l18_n761(x)
+ else
+ fun_l18_n308(x)
+ end
+end
+
+def fun_l17_n217(x)
+ if (x < 1)
+ fun_l18_n350(x)
+ else
+ fun_l18_n680(x)
+ end
+end
+
+def fun_l17_n218(x)
+ if (x < 1)
+ fun_l18_n240(x)
+ else
+ fun_l18_n119(x)
+ end
+end
+
+def fun_l17_n219(x)
+ if (x < 1)
+ fun_l18_n538(x)
+ else
+ fun_l18_n732(x)
+ end
+end
+
+def fun_l17_n220(x)
+ if (x < 1)
+ fun_l18_n45(x)
+ else
+ fun_l18_n643(x)
+ end
+end
+
+def fun_l17_n221(x)
+ if (x < 1)
+ fun_l18_n258(x)
+ else
+ fun_l18_n690(x)
+ end
+end
+
+def fun_l17_n222(x)
+ if (x < 1)
+ fun_l18_n288(x)
+ else
+ fun_l18_n998(x)
+ end
+end
+
+def fun_l17_n223(x)
+ if (x < 1)
+ fun_l18_n591(x)
+ else
+ fun_l18_n278(x)
+ end
+end
+
+def fun_l17_n224(x)
+ if (x < 1)
+ fun_l18_n433(x)
+ else
+ fun_l18_n852(x)
+ end
+end
+
+def fun_l17_n225(x)
+ if (x < 1)
+ fun_l18_n51(x)
+ else
+ fun_l18_n837(x)
+ end
+end
+
+def fun_l17_n226(x)
+ if (x < 1)
+ fun_l18_n755(x)
+ else
+ fun_l18_n949(x)
+ end
+end
+
+def fun_l17_n227(x)
+ if (x < 1)
+ fun_l18_n566(x)
+ else
+ fun_l18_n754(x)
+ end
+end
+
+def fun_l17_n228(x)
+ if (x < 1)
+ fun_l18_n915(x)
+ else
+ fun_l18_n893(x)
+ end
+end
+
+def fun_l17_n229(x)
+ if (x < 1)
+ fun_l18_n990(x)
+ else
+ fun_l18_n208(x)
+ end
+end
+
+def fun_l17_n230(x)
+ if (x < 1)
+ fun_l18_n220(x)
+ else
+ fun_l18_n292(x)
+ end
+end
+
+def fun_l17_n231(x)
+ if (x < 1)
+ fun_l18_n39(x)
+ else
+ fun_l18_n211(x)
+ end
+end
+
+def fun_l17_n232(x)
+ if (x < 1)
+ fun_l18_n669(x)
+ else
+ fun_l18_n818(x)
+ end
+end
+
+def fun_l17_n233(x)
+ if (x < 1)
+ fun_l18_n804(x)
+ else
+ fun_l18_n400(x)
+ end
+end
+
+def fun_l17_n234(x)
+ if (x < 1)
+ fun_l18_n198(x)
+ else
+ fun_l18_n393(x)
+ end
+end
+
+def fun_l17_n235(x)
+ if (x < 1)
+ fun_l18_n154(x)
+ else
+ fun_l18_n980(x)
+ end
+end
+
+def fun_l17_n236(x)
+ if (x < 1)
+ fun_l18_n46(x)
+ else
+ fun_l18_n926(x)
+ end
+end
+
+def fun_l17_n237(x)
+ if (x < 1)
+ fun_l18_n158(x)
+ else
+ fun_l18_n364(x)
+ end
+end
+
+def fun_l17_n238(x)
+ if (x < 1)
+ fun_l18_n728(x)
+ else
+ fun_l18_n864(x)
+ end
+end
+
+def fun_l17_n239(x)
+ if (x < 1)
+ fun_l18_n793(x)
+ else
+ fun_l18_n985(x)
+ end
+end
+
+def fun_l17_n240(x)
+ if (x < 1)
+ fun_l18_n619(x)
+ else
+ fun_l18_n216(x)
+ end
+end
+
+def fun_l17_n241(x)
+ if (x < 1)
+ fun_l18_n338(x)
+ else
+ fun_l18_n289(x)
+ end
+end
+
+def fun_l17_n242(x)
+ if (x < 1)
+ fun_l18_n42(x)
+ else
+ fun_l18_n360(x)
+ end
+end
+
+def fun_l17_n243(x)
+ if (x < 1)
+ fun_l18_n883(x)
+ else
+ fun_l18_n243(x)
+ end
+end
+
+def fun_l17_n244(x)
+ if (x < 1)
+ fun_l18_n474(x)
+ else
+ fun_l18_n236(x)
+ end
+end
+
+def fun_l17_n245(x)
+ if (x < 1)
+ fun_l18_n694(x)
+ else
+ fun_l18_n579(x)
+ end
+end
+
+def fun_l17_n246(x)
+ if (x < 1)
+ fun_l18_n787(x)
+ else
+ fun_l18_n349(x)
+ end
+end
+
+def fun_l17_n247(x)
+ if (x < 1)
+ fun_l18_n140(x)
+ else
+ fun_l18_n894(x)
+ end
+end
+
+def fun_l17_n248(x)
+ if (x < 1)
+ fun_l18_n587(x)
+ else
+ fun_l18_n19(x)
+ end
+end
+
+def fun_l17_n249(x)
+ if (x < 1)
+ fun_l18_n7(x)
+ else
+ fun_l18_n352(x)
+ end
+end
+
+def fun_l17_n250(x)
+ if (x < 1)
+ fun_l18_n330(x)
+ else
+ fun_l18_n779(x)
+ end
+end
+
+def fun_l17_n251(x)
+ if (x < 1)
+ fun_l18_n655(x)
+ else
+ fun_l18_n45(x)
+ end
+end
+
+def fun_l17_n252(x)
+ if (x < 1)
+ fun_l18_n263(x)
+ else
+ fun_l18_n668(x)
+ end
+end
+
+def fun_l17_n253(x)
+ if (x < 1)
+ fun_l18_n799(x)
+ else
+ fun_l18_n141(x)
+ end
+end
+
+def fun_l17_n254(x)
+ if (x < 1)
+ fun_l18_n868(x)
+ else
+ fun_l18_n486(x)
+ end
+end
+
+def fun_l17_n255(x)
+ if (x < 1)
+ fun_l18_n238(x)
+ else
+ fun_l18_n298(x)
+ end
+end
+
+def fun_l17_n256(x)
+ if (x < 1)
+ fun_l18_n939(x)
+ else
+ fun_l18_n977(x)
+ end
+end
+
+def fun_l17_n257(x)
+ if (x < 1)
+ fun_l18_n999(x)
+ else
+ fun_l18_n241(x)
+ end
+end
+
+def fun_l17_n258(x)
+ if (x < 1)
+ fun_l18_n362(x)
+ else
+ fun_l18_n19(x)
+ end
+end
+
+def fun_l17_n259(x)
+ if (x < 1)
+ fun_l18_n166(x)
+ else
+ fun_l18_n550(x)
+ end
+end
+
+def fun_l17_n260(x)
+ if (x < 1)
+ fun_l18_n18(x)
+ else
+ fun_l18_n453(x)
+ end
+end
+
+def fun_l17_n261(x)
+ if (x < 1)
+ fun_l18_n590(x)
+ else
+ fun_l18_n217(x)
+ end
+end
+
+def fun_l17_n262(x)
+ if (x < 1)
+ fun_l18_n703(x)
+ else
+ fun_l18_n827(x)
+ end
+end
+
+def fun_l17_n263(x)
+ if (x < 1)
+ fun_l18_n911(x)
+ else
+ fun_l18_n869(x)
+ end
+end
+
+def fun_l17_n264(x)
+ if (x < 1)
+ fun_l18_n980(x)
+ else
+ fun_l18_n598(x)
+ end
+end
+
+def fun_l17_n265(x)
+ if (x < 1)
+ fun_l18_n751(x)
+ else
+ fun_l18_n298(x)
+ end
+end
+
+def fun_l17_n266(x)
+ if (x < 1)
+ fun_l18_n527(x)
+ else
+ fun_l18_n392(x)
+ end
+end
+
+def fun_l17_n267(x)
+ if (x < 1)
+ fun_l18_n257(x)
+ else
+ fun_l18_n731(x)
+ end
+end
+
+def fun_l17_n268(x)
+ if (x < 1)
+ fun_l18_n254(x)
+ else
+ fun_l18_n188(x)
+ end
+end
+
+def fun_l17_n269(x)
+ if (x < 1)
+ fun_l18_n145(x)
+ else
+ fun_l18_n987(x)
+ end
+end
+
+def fun_l17_n270(x)
+ if (x < 1)
+ fun_l18_n640(x)
+ else
+ fun_l18_n370(x)
+ end
+end
+
+def fun_l17_n271(x)
+ if (x < 1)
+ fun_l18_n767(x)
+ else
+ fun_l18_n246(x)
+ end
+end
+
+def fun_l17_n272(x)
+ if (x < 1)
+ fun_l18_n274(x)
+ else
+ fun_l18_n851(x)
+ end
+end
+
+def fun_l17_n273(x)
+ if (x < 1)
+ fun_l18_n12(x)
+ else
+ fun_l18_n48(x)
+ end
+end
+
+def fun_l17_n274(x)
+ if (x < 1)
+ fun_l18_n389(x)
+ else
+ fun_l18_n353(x)
+ end
+end
+
+def fun_l17_n275(x)
+ if (x < 1)
+ fun_l18_n966(x)
+ else
+ fun_l18_n248(x)
+ end
+end
+
+def fun_l17_n276(x)
+ if (x < 1)
+ fun_l18_n459(x)
+ else
+ fun_l18_n989(x)
+ end
+end
+
+def fun_l17_n277(x)
+ if (x < 1)
+ fun_l18_n416(x)
+ else
+ fun_l18_n976(x)
+ end
+end
+
+def fun_l17_n278(x)
+ if (x < 1)
+ fun_l18_n752(x)
+ else
+ fun_l18_n282(x)
+ end
+end
+
+def fun_l17_n279(x)
+ if (x < 1)
+ fun_l18_n774(x)
+ else
+ fun_l18_n478(x)
+ end
+end
+
+def fun_l17_n280(x)
+ if (x < 1)
+ fun_l18_n713(x)
+ else
+ fun_l18_n117(x)
+ end
+end
+
+def fun_l17_n281(x)
+ if (x < 1)
+ fun_l18_n365(x)
+ else
+ fun_l18_n932(x)
+ end
+end
+
+def fun_l17_n282(x)
+ if (x < 1)
+ fun_l18_n791(x)
+ else
+ fun_l18_n331(x)
+ end
+end
+
+def fun_l17_n283(x)
+ if (x < 1)
+ fun_l18_n955(x)
+ else
+ fun_l18_n847(x)
+ end
+end
+
+def fun_l17_n284(x)
+ if (x < 1)
+ fun_l18_n409(x)
+ else
+ fun_l18_n681(x)
+ end
+end
+
+def fun_l17_n285(x)
+ if (x < 1)
+ fun_l18_n185(x)
+ else
+ fun_l18_n651(x)
+ end
+end
+
+def fun_l17_n286(x)
+ if (x < 1)
+ fun_l18_n894(x)
+ else
+ fun_l18_n827(x)
+ end
+end
+
+def fun_l17_n287(x)
+ if (x < 1)
+ fun_l18_n788(x)
+ else
+ fun_l18_n794(x)
+ end
+end
+
+def fun_l17_n288(x)
+ if (x < 1)
+ fun_l18_n361(x)
+ else
+ fun_l18_n415(x)
+ end
+end
+
+def fun_l17_n289(x)
+ if (x < 1)
+ fun_l18_n357(x)
+ else
+ fun_l18_n375(x)
+ end
+end
+
+def fun_l17_n290(x)
+ if (x < 1)
+ fun_l18_n557(x)
+ else
+ fun_l18_n85(x)
+ end
+end
+
+def fun_l17_n291(x)
+ if (x < 1)
+ fun_l18_n490(x)
+ else
+ fun_l18_n260(x)
+ end
+end
+
+def fun_l17_n292(x)
+ if (x < 1)
+ fun_l18_n21(x)
+ else
+ fun_l18_n497(x)
+ end
+end
+
+def fun_l17_n293(x)
+ if (x < 1)
+ fun_l18_n716(x)
+ else
+ fun_l18_n94(x)
+ end
+end
+
+def fun_l17_n294(x)
+ if (x < 1)
+ fun_l18_n462(x)
+ else
+ fun_l18_n408(x)
+ end
+end
+
+def fun_l17_n295(x)
+ if (x < 1)
+ fun_l18_n87(x)
+ else
+ fun_l18_n732(x)
+ end
+end
+
+def fun_l17_n296(x)
+ if (x < 1)
+ fun_l18_n889(x)
+ else
+ fun_l18_n755(x)
+ end
+end
+
+def fun_l17_n297(x)
+ if (x < 1)
+ fun_l18_n539(x)
+ else
+ fun_l18_n130(x)
+ end
+end
+
+def fun_l17_n298(x)
+ if (x < 1)
+ fun_l18_n729(x)
+ else
+ fun_l18_n861(x)
+ end
+end
+
+def fun_l17_n299(x)
+ if (x < 1)
+ fun_l18_n605(x)
+ else
+ fun_l18_n408(x)
+ end
+end
+
+def fun_l17_n300(x)
+ if (x < 1)
+ fun_l18_n408(x)
+ else
+ fun_l18_n281(x)
+ end
+end
+
+def fun_l17_n301(x)
+ if (x < 1)
+ fun_l18_n793(x)
+ else
+ fun_l18_n188(x)
+ end
+end
+
+def fun_l17_n302(x)
+ if (x < 1)
+ fun_l18_n42(x)
+ else
+ fun_l18_n970(x)
+ end
+end
+
+def fun_l17_n303(x)
+ if (x < 1)
+ fun_l18_n904(x)
+ else
+ fun_l18_n630(x)
+ end
+end
+
+def fun_l17_n304(x)
+ if (x < 1)
+ fun_l18_n142(x)
+ else
+ fun_l18_n366(x)
+ end
+end
+
+def fun_l17_n305(x)
+ if (x < 1)
+ fun_l18_n242(x)
+ else
+ fun_l18_n111(x)
+ end
+end
+
+def fun_l17_n306(x)
+ if (x < 1)
+ fun_l18_n184(x)
+ else
+ fun_l18_n301(x)
+ end
+end
+
+def fun_l17_n307(x)
+ if (x < 1)
+ fun_l18_n297(x)
+ else
+ fun_l18_n722(x)
+ end
+end
+
+def fun_l17_n308(x)
+ if (x < 1)
+ fun_l18_n608(x)
+ else
+ fun_l18_n502(x)
+ end
+end
+
+def fun_l17_n309(x)
+ if (x < 1)
+ fun_l18_n513(x)
+ else
+ fun_l18_n828(x)
+ end
+end
+
+def fun_l17_n310(x)
+ if (x < 1)
+ fun_l18_n5(x)
+ else
+ fun_l18_n638(x)
+ end
+end
+
+def fun_l17_n311(x)
+ if (x < 1)
+ fun_l18_n404(x)
+ else
+ fun_l18_n510(x)
+ end
+end
+
+def fun_l17_n312(x)
+ if (x < 1)
+ fun_l18_n961(x)
+ else
+ fun_l18_n526(x)
+ end
+end
+
+def fun_l17_n313(x)
+ if (x < 1)
+ fun_l18_n795(x)
+ else
+ fun_l18_n24(x)
+ end
+end
+
+def fun_l17_n314(x)
+ if (x < 1)
+ fun_l18_n505(x)
+ else
+ fun_l18_n526(x)
+ end
+end
+
+def fun_l17_n315(x)
+ if (x < 1)
+ fun_l18_n458(x)
+ else
+ fun_l18_n767(x)
+ end
+end
+
+def fun_l17_n316(x)
+ if (x < 1)
+ fun_l18_n778(x)
+ else
+ fun_l18_n972(x)
+ end
+end
+
+def fun_l17_n317(x)
+ if (x < 1)
+ fun_l18_n734(x)
+ else
+ fun_l18_n289(x)
+ end
+end
+
+def fun_l17_n318(x)
+ if (x < 1)
+ fun_l18_n950(x)
+ else
+ fun_l18_n507(x)
+ end
+end
+
+def fun_l17_n319(x)
+ if (x < 1)
+ fun_l18_n597(x)
+ else
+ fun_l18_n697(x)
+ end
+end
+
+def fun_l17_n320(x)
+ if (x < 1)
+ fun_l18_n270(x)
+ else
+ fun_l18_n323(x)
+ end
+end
+
+def fun_l17_n321(x)
+ if (x < 1)
+ fun_l18_n558(x)
+ else
+ fun_l18_n357(x)
+ end
+end
+
+def fun_l17_n322(x)
+ if (x < 1)
+ fun_l18_n948(x)
+ else
+ fun_l18_n726(x)
+ end
+end
+
+def fun_l17_n323(x)
+ if (x < 1)
+ fun_l18_n787(x)
+ else
+ fun_l18_n89(x)
+ end
+end
+
+def fun_l17_n324(x)
+ if (x < 1)
+ fun_l18_n894(x)
+ else
+ fun_l18_n454(x)
+ end
+end
+
+def fun_l17_n325(x)
+ if (x < 1)
+ fun_l18_n173(x)
+ else
+ fun_l18_n815(x)
+ end
+end
+
+def fun_l17_n326(x)
+ if (x < 1)
+ fun_l18_n102(x)
+ else
+ fun_l18_n261(x)
+ end
+end
+
+def fun_l17_n327(x)
+ if (x < 1)
+ fun_l18_n83(x)
+ else
+ fun_l18_n732(x)
+ end
+end
+
+def fun_l17_n328(x)
+ if (x < 1)
+ fun_l18_n675(x)
+ else
+ fun_l18_n186(x)
+ end
+end
+
+def fun_l17_n329(x)
+ if (x < 1)
+ fun_l18_n783(x)
+ else
+ fun_l18_n481(x)
+ end
+end
+
+def fun_l17_n330(x)
+ if (x < 1)
+ fun_l18_n828(x)
+ else
+ fun_l18_n829(x)
+ end
+end
+
+def fun_l17_n331(x)
+ if (x < 1)
+ fun_l18_n195(x)
+ else
+ fun_l18_n264(x)
+ end
+end
+
+def fun_l17_n332(x)
+ if (x < 1)
+ fun_l18_n842(x)
+ else
+ fun_l18_n198(x)
+ end
+end
+
+def fun_l17_n333(x)
+ if (x < 1)
+ fun_l18_n549(x)
+ else
+ fun_l18_n208(x)
+ end
+end
+
+def fun_l17_n334(x)
+ if (x < 1)
+ fun_l18_n976(x)
+ else
+ fun_l18_n316(x)
+ end
+end
+
+def fun_l17_n335(x)
+ if (x < 1)
+ fun_l18_n401(x)
+ else
+ fun_l18_n105(x)
+ end
+end
+
+def fun_l17_n336(x)
+ if (x < 1)
+ fun_l18_n357(x)
+ else
+ fun_l18_n54(x)
+ end
+end
+
+def fun_l17_n337(x)
+ if (x < 1)
+ fun_l18_n685(x)
+ else
+ fun_l18_n140(x)
+ end
+end
+
+def fun_l17_n338(x)
+ if (x < 1)
+ fun_l18_n301(x)
+ else
+ fun_l18_n167(x)
+ end
+end
+
+def fun_l17_n339(x)
+ if (x < 1)
+ fun_l18_n398(x)
+ else
+ fun_l18_n643(x)
+ end
+end
+
+def fun_l17_n340(x)
+ if (x < 1)
+ fun_l18_n147(x)
+ else
+ fun_l18_n27(x)
+ end
+end
+
+def fun_l17_n341(x)
+ if (x < 1)
+ fun_l18_n813(x)
+ else
+ fun_l18_n935(x)
+ end
+end
+
+def fun_l17_n342(x)
+ if (x < 1)
+ fun_l18_n319(x)
+ else
+ fun_l18_n429(x)
+ end
+end
+
+def fun_l17_n343(x)
+ if (x < 1)
+ fun_l18_n957(x)
+ else
+ fun_l18_n961(x)
+ end
+end
+
+def fun_l17_n344(x)
+ if (x < 1)
+ fun_l18_n380(x)
+ else
+ fun_l18_n604(x)
+ end
+end
+
+def fun_l17_n345(x)
+ if (x < 1)
+ fun_l18_n321(x)
+ else
+ fun_l18_n473(x)
+ end
+end
+
+def fun_l17_n346(x)
+ if (x < 1)
+ fun_l18_n346(x)
+ else
+ fun_l18_n752(x)
+ end
+end
+
+def fun_l17_n347(x)
+ if (x < 1)
+ fun_l18_n645(x)
+ else
+ fun_l18_n511(x)
+ end
+end
+
+def fun_l17_n348(x)
+ if (x < 1)
+ fun_l18_n647(x)
+ else
+ fun_l18_n997(x)
+ end
+end
+
+def fun_l17_n349(x)
+ if (x < 1)
+ fun_l18_n291(x)
+ else
+ fun_l18_n580(x)
+ end
+end
+
+def fun_l17_n350(x)
+ if (x < 1)
+ fun_l18_n745(x)
+ else
+ fun_l18_n402(x)
+ end
+end
+
+def fun_l17_n351(x)
+ if (x < 1)
+ fun_l18_n533(x)
+ else
+ fun_l18_n117(x)
+ end
+end
+
+def fun_l17_n352(x)
+ if (x < 1)
+ fun_l18_n490(x)
+ else
+ fun_l18_n458(x)
+ end
+end
+
+def fun_l17_n353(x)
+ if (x < 1)
+ fun_l18_n526(x)
+ else
+ fun_l18_n311(x)
+ end
+end
+
+def fun_l17_n354(x)
+ if (x < 1)
+ fun_l18_n315(x)
+ else
+ fun_l18_n306(x)
+ end
+end
+
+def fun_l17_n355(x)
+ if (x < 1)
+ fun_l18_n349(x)
+ else
+ fun_l18_n975(x)
+ end
+end
+
+def fun_l17_n356(x)
+ if (x < 1)
+ fun_l18_n764(x)
+ else
+ fun_l18_n897(x)
+ end
+end
+
+def fun_l17_n357(x)
+ if (x < 1)
+ fun_l18_n308(x)
+ else
+ fun_l18_n662(x)
+ end
+end
+
+def fun_l17_n358(x)
+ if (x < 1)
+ fun_l18_n7(x)
+ else
+ fun_l18_n807(x)
+ end
+end
+
+def fun_l17_n359(x)
+ if (x < 1)
+ fun_l18_n896(x)
+ else
+ fun_l18_n277(x)
+ end
+end
+
+def fun_l17_n360(x)
+ if (x < 1)
+ fun_l18_n606(x)
+ else
+ fun_l18_n605(x)
+ end
+end
+
+def fun_l17_n361(x)
+ if (x < 1)
+ fun_l18_n971(x)
+ else
+ fun_l18_n59(x)
+ end
+end
+
+def fun_l17_n362(x)
+ if (x < 1)
+ fun_l18_n304(x)
+ else
+ fun_l18_n604(x)
+ end
+end
+
+def fun_l17_n363(x)
+ if (x < 1)
+ fun_l18_n607(x)
+ else
+ fun_l18_n758(x)
+ end
+end
+
+def fun_l17_n364(x)
+ if (x < 1)
+ fun_l18_n454(x)
+ else
+ fun_l18_n635(x)
+ end
+end
+
+def fun_l17_n365(x)
+ if (x < 1)
+ fun_l18_n287(x)
+ else
+ fun_l18_n979(x)
+ end
+end
+
+def fun_l17_n366(x)
+ if (x < 1)
+ fun_l18_n708(x)
+ else
+ fun_l18_n480(x)
+ end
+end
+
+def fun_l17_n367(x)
+ if (x < 1)
+ fun_l18_n925(x)
+ else
+ fun_l18_n96(x)
+ end
+end
+
+def fun_l17_n368(x)
+ if (x < 1)
+ fun_l18_n756(x)
+ else
+ fun_l18_n765(x)
+ end
+end
+
+def fun_l17_n369(x)
+ if (x < 1)
+ fun_l18_n134(x)
+ else
+ fun_l18_n320(x)
+ end
+end
+
+def fun_l17_n370(x)
+ if (x < 1)
+ fun_l18_n167(x)
+ else
+ fun_l18_n112(x)
+ end
+end
+
+def fun_l17_n371(x)
+ if (x < 1)
+ fun_l18_n393(x)
+ else
+ fun_l18_n701(x)
+ end
+end
+
+def fun_l17_n372(x)
+ if (x < 1)
+ fun_l18_n363(x)
+ else
+ fun_l18_n934(x)
+ end
+end
+
+def fun_l17_n373(x)
+ if (x < 1)
+ fun_l18_n431(x)
+ else
+ fun_l18_n343(x)
+ end
+end
+
+def fun_l17_n374(x)
+ if (x < 1)
+ fun_l18_n111(x)
+ else
+ fun_l18_n689(x)
+ end
+end
+
+def fun_l17_n375(x)
+ if (x < 1)
+ fun_l18_n609(x)
+ else
+ fun_l18_n814(x)
+ end
+end
+
+def fun_l17_n376(x)
+ if (x < 1)
+ fun_l18_n9(x)
+ else
+ fun_l18_n711(x)
+ end
+end
+
+def fun_l17_n377(x)
+ if (x < 1)
+ fun_l18_n270(x)
+ else
+ fun_l18_n455(x)
+ end
+end
+
+def fun_l17_n378(x)
+ if (x < 1)
+ fun_l18_n432(x)
+ else
+ fun_l18_n348(x)
+ end
+end
+
+def fun_l17_n379(x)
+ if (x < 1)
+ fun_l18_n646(x)
+ else
+ fun_l18_n934(x)
+ end
+end
+
+def fun_l17_n380(x)
+ if (x < 1)
+ fun_l18_n737(x)
+ else
+ fun_l18_n472(x)
+ end
+end
+
+def fun_l17_n381(x)
+ if (x < 1)
+ fun_l18_n163(x)
+ else
+ fun_l18_n533(x)
+ end
+end
+
+def fun_l17_n382(x)
+ if (x < 1)
+ fun_l18_n71(x)
+ else
+ fun_l18_n343(x)
+ end
+end
+
+def fun_l17_n383(x)
+ if (x < 1)
+ fun_l18_n52(x)
+ else
+ fun_l18_n0(x)
+ end
+end
+
+def fun_l17_n384(x)
+ if (x < 1)
+ fun_l18_n708(x)
+ else
+ fun_l18_n616(x)
+ end
+end
+
+def fun_l17_n385(x)
+ if (x < 1)
+ fun_l18_n525(x)
+ else
+ fun_l18_n818(x)
+ end
+end
+
+def fun_l17_n386(x)
+ if (x < 1)
+ fun_l18_n154(x)
+ else
+ fun_l18_n588(x)
+ end
+end
+
+def fun_l17_n387(x)
+ if (x < 1)
+ fun_l18_n295(x)
+ else
+ fun_l18_n462(x)
+ end
+end
+
+def fun_l17_n388(x)
+ if (x < 1)
+ fun_l18_n331(x)
+ else
+ fun_l18_n773(x)
+ end
+end
+
+def fun_l17_n389(x)
+ if (x < 1)
+ fun_l18_n221(x)
+ else
+ fun_l18_n168(x)
+ end
+end
+
+def fun_l17_n390(x)
+ if (x < 1)
+ fun_l18_n575(x)
+ else
+ fun_l18_n284(x)
+ end
+end
+
+def fun_l17_n391(x)
+ if (x < 1)
+ fun_l18_n936(x)
+ else
+ fun_l18_n71(x)
+ end
+end
+
+def fun_l17_n392(x)
+ if (x < 1)
+ fun_l18_n123(x)
+ else
+ fun_l18_n863(x)
+ end
+end
+
+def fun_l17_n393(x)
+ if (x < 1)
+ fun_l18_n664(x)
+ else
+ fun_l18_n189(x)
+ end
+end
+
+def fun_l17_n394(x)
+ if (x < 1)
+ fun_l18_n456(x)
+ else
+ fun_l18_n476(x)
+ end
+end
+
+def fun_l17_n395(x)
+ if (x < 1)
+ fun_l18_n557(x)
+ else
+ fun_l18_n877(x)
+ end
+end
+
+def fun_l17_n396(x)
+ if (x < 1)
+ fun_l18_n192(x)
+ else
+ fun_l18_n312(x)
+ end
+end
+
+def fun_l17_n397(x)
+ if (x < 1)
+ fun_l18_n87(x)
+ else
+ fun_l18_n56(x)
+ end
+end
+
+def fun_l17_n398(x)
+ if (x < 1)
+ fun_l18_n769(x)
+ else
+ fun_l18_n597(x)
+ end
+end
+
+def fun_l17_n399(x)
+ if (x < 1)
+ fun_l18_n534(x)
+ else
+ fun_l18_n366(x)
+ end
+end
+
+def fun_l17_n400(x)
+ if (x < 1)
+ fun_l18_n284(x)
+ else
+ fun_l18_n503(x)
+ end
+end
+
+def fun_l17_n401(x)
+ if (x < 1)
+ fun_l18_n655(x)
+ else
+ fun_l18_n242(x)
+ end
+end
+
+def fun_l17_n402(x)
+ if (x < 1)
+ fun_l18_n491(x)
+ else
+ fun_l18_n81(x)
+ end
+end
+
+def fun_l17_n403(x)
+ if (x < 1)
+ fun_l18_n861(x)
+ else
+ fun_l18_n372(x)
+ end
+end
+
+def fun_l17_n404(x)
+ if (x < 1)
+ fun_l18_n600(x)
+ else
+ fun_l18_n692(x)
+ end
+end
+
+def fun_l17_n405(x)
+ if (x < 1)
+ fun_l18_n336(x)
+ else
+ fun_l18_n778(x)
+ end
+end
+
+def fun_l17_n406(x)
+ if (x < 1)
+ fun_l18_n224(x)
+ else
+ fun_l18_n277(x)
+ end
+end
+
+def fun_l17_n407(x)
+ if (x < 1)
+ fun_l18_n630(x)
+ else
+ fun_l18_n861(x)
+ end
+end
+
+def fun_l17_n408(x)
+ if (x < 1)
+ fun_l18_n829(x)
+ else
+ fun_l18_n213(x)
+ end
+end
+
+def fun_l17_n409(x)
+ if (x < 1)
+ fun_l18_n325(x)
+ else
+ fun_l18_n599(x)
+ end
+end
+
+def fun_l17_n410(x)
+ if (x < 1)
+ fun_l18_n850(x)
+ else
+ fun_l18_n828(x)
+ end
+end
+
+def fun_l17_n411(x)
+ if (x < 1)
+ fun_l18_n557(x)
+ else
+ fun_l18_n757(x)
+ end
+end
+
+def fun_l17_n412(x)
+ if (x < 1)
+ fun_l18_n755(x)
+ else
+ fun_l18_n474(x)
+ end
+end
+
+def fun_l17_n413(x)
+ if (x < 1)
+ fun_l18_n945(x)
+ else
+ fun_l18_n113(x)
+ end
+end
+
+def fun_l17_n414(x)
+ if (x < 1)
+ fun_l18_n584(x)
+ else
+ fun_l18_n815(x)
+ end
+end
+
+def fun_l17_n415(x)
+ if (x < 1)
+ fun_l18_n136(x)
+ else
+ fun_l18_n997(x)
+ end
+end
+
+def fun_l17_n416(x)
+ if (x < 1)
+ fun_l18_n57(x)
+ else
+ fun_l18_n361(x)
+ end
+end
+
+def fun_l17_n417(x)
+ if (x < 1)
+ fun_l18_n3(x)
+ else
+ fun_l18_n882(x)
+ end
+end
+
+def fun_l17_n418(x)
+ if (x < 1)
+ fun_l18_n578(x)
+ else
+ fun_l18_n719(x)
+ end
+end
+
+def fun_l17_n419(x)
+ if (x < 1)
+ fun_l18_n426(x)
+ else
+ fun_l18_n958(x)
+ end
+end
+
+def fun_l17_n420(x)
+ if (x < 1)
+ fun_l18_n384(x)
+ else
+ fun_l18_n182(x)
+ end
+end
+
+def fun_l17_n421(x)
+ if (x < 1)
+ fun_l18_n458(x)
+ else
+ fun_l18_n314(x)
+ end
+end
+
+def fun_l17_n422(x)
+ if (x < 1)
+ fun_l18_n641(x)
+ else
+ fun_l18_n678(x)
+ end
+end
+
+def fun_l17_n423(x)
+ if (x < 1)
+ fun_l18_n790(x)
+ else
+ fun_l18_n830(x)
+ end
+end
+
+def fun_l17_n424(x)
+ if (x < 1)
+ fun_l18_n207(x)
+ else
+ fun_l18_n686(x)
+ end
+end
+
+def fun_l17_n425(x)
+ if (x < 1)
+ fun_l18_n847(x)
+ else
+ fun_l18_n387(x)
+ end
+end
+
+def fun_l17_n426(x)
+ if (x < 1)
+ fun_l18_n744(x)
+ else
+ fun_l18_n9(x)
+ end
+end
+
+def fun_l17_n427(x)
+ if (x < 1)
+ fun_l18_n446(x)
+ else
+ fun_l18_n533(x)
+ end
+end
+
+def fun_l17_n428(x)
+ if (x < 1)
+ fun_l18_n910(x)
+ else
+ fun_l18_n749(x)
+ end
+end
+
+def fun_l17_n429(x)
+ if (x < 1)
+ fun_l18_n918(x)
+ else
+ fun_l18_n260(x)
+ end
+end
+
+def fun_l17_n430(x)
+ if (x < 1)
+ fun_l18_n812(x)
+ else
+ fun_l18_n545(x)
+ end
+end
+
+def fun_l17_n431(x)
+ if (x < 1)
+ fun_l18_n191(x)
+ else
+ fun_l18_n260(x)
+ end
+end
+
+def fun_l17_n432(x)
+ if (x < 1)
+ fun_l18_n155(x)
+ else
+ fun_l18_n582(x)
+ end
+end
+
+def fun_l17_n433(x)
+ if (x < 1)
+ fun_l18_n374(x)
+ else
+ fun_l18_n991(x)
+ end
+end
+
+def fun_l17_n434(x)
+ if (x < 1)
+ fun_l18_n611(x)
+ else
+ fun_l18_n334(x)
+ end
+end
+
+def fun_l17_n435(x)
+ if (x < 1)
+ fun_l18_n876(x)
+ else
+ fun_l18_n386(x)
+ end
+end
+
+def fun_l17_n436(x)
+ if (x < 1)
+ fun_l18_n985(x)
+ else
+ fun_l18_n874(x)
+ end
+end
+
+def fun_l17_n437(x)
+ if (x < 1)
+ fun_l18_n715(x)
+ else
+ fun_l18_n52(x)
+ end
+end
+
+def fun_l17_n438(x)
+ if (x < 1)
+ fun_l18_n53(x)
+ else
+ fun_l18_n15(x)
+ end
+end
+
+def fun_l17_n439(x)
+ if (x < 1)
+ fun_l18_n689(x)
+ else
+ fun_l18_n498(x)
+ end
+end
+
+def fun_l17_n440(x)
+ if (x < 1)
+ fun_l18_n990(x)
+ else
+ fun_l18_n70(x)
+ end
+end
+
+def fun_l17_n441(x)
+ if (x < 1)
+ fun_l18_n369(x)
+ else
+ fun_l18_n327(x)
+ end
+end
+
+def fun_l17_n442(x)
+ if (x < 1)
+ fun_l18_n157(x)
+ else
+ fun_l18_n917(x)
+ end
+end
+
+def fun_l17_n443(x)
+ if (x < 1)
+ fun_l18_n822(x)
+ else
+ fun_l18_n472(x)
+ end
+end
+
+def fun_l17_n444(x)
+ if (x < 1)
+ fun_l18_n465(x)
+ else
+ fun_l18_n19(x)
+ end
+end
+
+def fun_l17_n445(x)
+ if (x < 1)
+ fun_l18_n543(x)
+ else
+ fun_l18_n499(x)
+ end
+end
+
+def fun_l17_n446(x)
+ if (x < 1)
+ fun_l18_n662(x)
+ else
+ fun_l18_n531(x)
+ end
+end
+
+def fun_l17_n447(x)
+ if (x < 1)
+ fun_l18_n452(x)
+ else
+ fun_l18_n150(x)
+ end
+end
+
+def fun_l17_n448(x)
+ if (x < 1)
+ fun_l18_n438(x)
+ else
+ fun_l18_n552(x)
+ end
+end
+
+def fun_l17_n449(x)
+ if (x < 1)
+ fun_l18_n23(x)
+ else
+ fun_l18_n89(x)
+ end
+end
+
+def fun_l17_n450(x)
+ if (x < 1)
+ fun_l18_n896(x)
+ else
+ fun_l18_n313(x)
+ end
+end
+
+def fun_l17_n451(x)
+ if (x < 1)
+ fun_l18_n221(x)
+ else
+ fun_l18_n622(x)
+ end
+end
+
+def fun_l17_n452(x)
+ if (x < 1)
+ fun_l18_n347(x)
+ else
+ fun_l18_n43(x)
+ end
+end
+
+def fun_l17_n453(x)
+ if (x < 1)
+ fun_l18_n695(x)
+ else
+ fun_l18_n5(x)
+ end
+end
+
+def fun_l17_n454(x)
+ if (x < 1)
+ fun_l18_n829(x)
+ else
+ fun_l18_n409(x)
+ end
+end
+
+def fun_l17_n455(x)
+ if (x < 1)
+ fun_l18_n398(x)
+ else
+ fun_l18_n906(x)
+ end
+end
+
+def fun_l17_n456(x)
+ if (x < 1)
+ fun_l18_n983(x)
+ else
+ fun_l18_n235(x)
+ end
+end
+
+def fun_l17_n457(x)
+ if (x < 1)
+ fun_l18_n542(x)
+ else
+ fun_l18_n819(x)
+ end
+end
+
+def fun_l17_n458(x)
+ if (x < 1)
+ fun_l18_n952(x)
+ else
+ fun_l18_n123(x)
+ end
+end
+
+def fun_l17_n459(x)
+ if (x < 1)
+ fun_l18_n249(x)
+ else
+ fun_l18_n525(x)
+ end
+end
+
+def fun_l17_n460(x)
+ if (x < 1)
+ fun_l18_n833(x)
+ else
+ fun_l18_n657(x)
+ end
+end
+
+def fun_l17_n461(x)
+ if (x < 1)
+ fun_l18_n847(x)
+ else
+ fun_l18_n396(x)
+ end
+end
+
+def fun_l17_n462(x)
+ if (x < 1)
+ fun_l18_n611(x)
+ else
+ fun_l18_n790(x)
+ end
+end
+
+def fun_l17_n463(x)
+ if (x < 1)
+ fun_l18_n944(x)
+ else
+ fun_l18_n655(x)
+ end
+end
+
+def fun_l17_n464(x)
+ if (x < 1)
+ fun_l18_n688(x)
+ else
+ fun_l18_n804(x)
+ end
+end
+
+def fun_l17_n465(x)
+ if (x < 1)
+ fun_l18_n29(x)
+ else
+ fun_l18_n324(x)
+ end
+end
+
+def fun_l17_n466(x)
+ if (x < 1)
+ fun_l18_n496(x)
+ else
+ fun_l18_n76(x)
+ end
+end
+
+def fun_l17_n467(x)
+ if (x < 1)
+ fun_l18_n317(x)
+ else
+ fun_l18_n241(x)
+ end
+end
+
+def fun_l17_n468(x)
+ if (x < 1)
+ fun_l18_n759(x)
+ else
+ fun_l18_n516(x)
+ end
+end
+
+def fun_l17_n469(x)
+ if (x < 1)
+ fun_l18_n430(x)
+ else
+ fun_l18_n355(x)
+ end
+end
+
+def fun_l17_n470(x)
+ if (x < 1)
+ fun_l18_n683(x)
+ else
+ fun_l18_n16(x)
+ end
+end
+
+def fun_l17_n471(x)
+ if (x < 1)
+ fun_l18_n46(x)
+ else
+ fun_l18_n216(x)
+ end
+end
+
+def fun_l17_n472(x)
+ if (x < 1)
+ fun_l18_n460(x)
+ else
+ fun_l18_n460(x)
+ end
+end
+
+def fun_l17_n473(x)
+ if (x < 1)
+ fun_l18_n120(x)
+ else
+ fun_l18_n189(x)
+ end
+end
+
+def fun_l17_n474(x)
+ if (x < 1)
+ fun_l18_n663(x)
+ else
+ fun_l18_n732(x)
+ end
+end
+
+def fun_l17_n475(x)
+ if (x < 1)
+ fun_l18_n441(x)
+ else
+ fun_l18_n460(x)
+ end
+end
+
+def fun_l17_n476(x)
+ if (x < 1)
+ fun_l18_n759(x)
+ else
+ fun_l18_n533(x)
+ end
+end
+
+def fun_l17_n477(x)
+ if (x < 1)
+ fun_l18_n105(x)
+ else
+ fun_l18_n671(x)
+ end
+end
+
+def fun_l17_n478(x)
+ if (x < 1)
+ fun_l18_n849(x)
+ else
+ fun_l18_n316(x)
+ end
+end
+
+def fun_l17_n479(x)
+ if (x < 1)
+ fun_l18_n482(x)
+ else
+ fun_l18_n502(x)
+ end
+end
+
+def fun_l17_n480(x)
+ if (x < 1)
+ fun_l18_n335(x)
+ else
+ fun_l18_n795(x)
+ end
+end
+
+def fun_l17_n481(x)
+ if (x < 1)
+ fun_l18_n168(x)
+ else
+ fun_l18_n799(x)
+ end
+end
+
+def fun_l17_n482(x)
+ if (x < 1)
+ fun_l18_n981(x)
+ else
+ fun_l18_n633(x)
+ end
+end
+
+def fun_l17_n483(x)
+ if (x < 1)
+ fun_l18_n873(x)
+ else
+ fun_l18_n723(x)
+ end
+end
+
+def fun_l17_n484(x)
+ if (x < 1)
+ fun_l18_n448(x)
+ else
+ fun_l18_n954(x)
+ end
+end
+
+def fun_l17_n485(x)
+ if (x < 1)
+ fun_l18_n421(x)
+ else
+ fun_l18_n802(x)
+ end
+end
+
+def fun_l17_n486(x)
+ if (x < 1)
+ fun_l18_n477(x)
+ else
+ fun_l18_n976(x)
+ end
+end
+
+def fun_l17_n487(x)
+ if (x < 1)
+ fun_l18_n53(x)
+ else
+ fun_l18_n298(x)
+ end
+end
+
+def fun_l17_n488(x)
+ if (x < 1)
+ fun_l18_n733(x)
+ else
+ fun_l18_n585(x)
+ end
+end
+
+def fun_l17_n489(x)
+ if (x < 1)
+ fun_l18_n684(x)
+ else
+ fun_l18_n537(x)
+ end
+end
+
+def fun_l17_n490(x)
+ if (x < 1)
+ fun_l18_n409(x)
+ else
+ fun_l18_n178(x)
+ end
+end
+
+def fun_l17_n491(x)
+ if (x < 1)
+ fun_l18_n335(x)
+ else
+ fun_l18_n255(x)
+ end
+end
+
+def fun_l17_n492(x)
+ if (x < 1)
+ fun_l18_n798(x)
+ else
+ fun_l18_n398(x)
+ end
+end
+
+def fun_l17_n493(x)
+ if (x < 1)
+ fun_l18_n112(x)
+ else
+ fun_l18_n83(x)
+ end
+end
+
+def fun_l17_n494(x)
+ if (x < 1)
+ fun_l18_n888(x)
+ else
+ fun_l18_n136(x)
+ end
+end
+
+def fun_l17_n495(x)
+ if (x < 1)
+ fun_l18_n726(x)
+ else
+ fun_l18_n678(x)
+ end
+end
+
+def fun_l17_n496(x)
+ if (x < 1)
+ fun_l18_n224(x)
+ else
+ fun_l18_n625(x)
+ end
+end
+
+def fun_l17_n497(x)
+ if (x < 1)
+ fun_l18_n772(x)
+ else
+ fun_l18_n14(x)
+ end
+end
+
+def fun_l17_n498(x)
+ if (x < 1)
+ fun_l18_n646(x)
+ else
+ fun_l18_n758(x)
+ end
+end
+
+def fun_l17_n499(x)
+ if (x < 1)
+ fun_l18_n961(x)
+ else
+ fun_l18_n570(x)
+ end
+end
+
+def fun_l17_n500(x)
+ if (x < 1)
+ fun_l18_n368(x)
+ else
+ fun_l18_n681(x)
+ end
+end
+
+def fun_l17_n501(x)
+ if (x < 1)
+ fun_l18_n768(x)
+ else
+ fun_l18_n747(x)
+ end
+end
+
+def fun_l17_n502(x)
+ if (x < 1)
+ fun_l18_n957(x)
+ else
+ fun_l18_n851(x)
+ end
+end
+
+def fun_l17_n503(x)
+ if (x < 1)
+ fun_l18_n669(x)
+ else
+ fun_l18_n939(x)
+ end
+end
+
+def fun_l17_n504(x)
+ if (x < 1)
+ fun_l18_n969(x)
+ else
+ fun_l18_n899(x)
+ end
+end
+
+def fun_l17_n505(x)
+ if (x < 1)
+ fun_l18_n756(x)
+ else
+ fun_l18_n29(x)
+ end
+end
+
+def fun_l17_n506(x)
+ if (x < 1)
+ fun_l18_n92(x)
+ else
+ fun_l18_n230(x)
+ end
+end
+
+def fun_l17_n507(x)
+ if (x < 1)
+ fun_l18_n670(x)
+ else
+ fun_l18_n744(x)
+ end
+end
+
+def fun_l17_n508(x)
+ if (x < 1)
+ fun_l18_n646(x)
+ else
+ fun_l18_n900(x)
+ end
+end
+
+def fun_l17_n509(x)
+ if (x < 1)
+ fun_l18_n480(x)
+ else
+ fun_l18_n6(x)
+ end
+end
+
+def fun_l17_n510(x)
+ if (x < 1)
+ fun_l18_n141(x)
+ else
+ fun_l18_n735(x)
+ end
+end
+
+def fun_l17_n511(x)
+ if (x < 1)
+ fun_l18_n622(x)
+ else
+ fun_l18_n617(x)
+ end
+end
+
+def fun_l17_n512(x)
+ if (x < 1)
+ fun_l18_n491(x)
+ else
+ fun_l18_n154(x)
+ end
+end
+
+def fun_l17_n513(x)
+ if (x < 1)
+ fun_l18_n931(x)
+ else
+ fun_l18_n730(x)
+ end
+end
+
+def fun_l17_n514(x)
+ if (x < 1)
+ fun_l18_n935(x)
+ else
+ fun_l18_n51(x)
+ end
+end
+
+def fun_l17_n515(x)
+ if (x < 1)
+ fun_l18_n751(x)
+ else
+ fun_l18_n786(x)
+ end
+end
+
+def fun_l17_n516(x)
+ if (x < 1)
+ fun_l18_n538(x)
+ else
+ fun_l18_n630(x)
+ end
+end
+
+def fun_l17_n517(x)
+ if (x < 1)
+ fun_l18_n832(x)
+ else
+ fun_l18_n932(x)
+ end
+end
+
+def fun_l17_n518(x)
+ if (x < 1)
+ fun_l18_n572(x)
+ else
+ fun_l18_n408(x)
+ end
+end
+
+def fun_l17_n519(x)
+ if (x < 1)
+ fun_l18_n961(x)
+ else
+ fun_l18_n820(x)
+ end
+end
+
+def fun_l17_n520(x)
+ if (x < 1)
+ fun_l18_n33(x)
+ else
+ fun_l18_n655(x)
+ end
+end
+
+def fun_l17_n521(x)
+ if (x < 1)
+ fun_l18_n940(x)
+ else
+ fun_l18_n436(x)
+ end
+end
+
+def fun_l17_n522(x)
+ if (x < 1)
+ fun_l18_n471(x)
+ else
+ fun_l18_n975(x)
+ end
+end
+
+def fun_l17_n523(x)
+ if (x < 1)
+ fun_l18_n752(x)
+ else
+ fun_l18_n640(x)
+ end
+end
+
+def fun_l17_n524(x)
+ if (x < 1)
+ fun_l18_n226(x)
+ else
+ fun_l18_n645(x)
+ end
+end
+
+def fun_l17_n525(x)
+ if (x < 1)
+ fun_l18_n986(x)
+ else
+ fun_l18_n858(x)
+ end
+end
+
+def fun_l17_n526(x)
+ if (x < 1)
+ fun_l18_n362(x)
+ else
+ fun_l18_n842(x)
+ end
+end
+
+def fun_l17_n527(x)
+ if (x < 1)
+ fun_l18_n273(x)
+ else
+ fun_l18_n510(x)
+ end
+end
+
+def fun_l17_n528(x)
+ if (x < 1)
+ fun_l18_n728(x)
+ else
+ fun_l18_n906(x)
+ end
+end
+
+def fun_l17_n529(x)
+ if (x < 1)
+ fun_l18_n225(x)
+ else
+ fun_l18_n988(x)
+ end
+end
+
+def fun_l17_n530(x)
+ if (x < 1)
+ fun_l18_n472(x)
+ else
+ fun_l18_n933(x)
+ end
+end
+
+def fun_l17_n531(x)
+ if (x < 1)
+ fun_l18_n105(x)
+ else
+ fun_l18_n501(x)
+ end
+end
+
+def fun_l17_n532(x)
+ if (x < 1)
+ fun_l18_n77(x)
+ else
+ fun_l18_n616(x)
+ end
+end
+
+def fun_l17_n533(x)
+ if (x < 1)
+ fun_l18_n404(x)
+ else
+ fun_l18_n86(x)
+ end
+end
+
+def fun_l17_n534(x)
+ if (x < 1)
+ fun_l18_n312(x)
+ else
+ fun_l18_n638(x)
+ end
+end
+
+def fun_l17_n535(x)
+ if (x < 1)
+ fun_l18_n908(x)
+ else
+ fun_l18_n697(x)
+ end
+end
+
+def fun_l17_n536(x)
+ if (x < 1)
+ fun_l18_n520(x)
+ else
+ fun_l18_n379(x)
+ end
+end
+
+def fun_l17_n537(x)
+ if (x < 1)
+ fun_l18_n15(x)
+ else
+ fun_l18_n97(x)
+ end
+end
+
+def fun_l17_n538(x)
+ if (x < 1)
+ fun_l18_n312(x)
+ else
+ fun_l18_n981(x)
+ end
+end
+
+def fun_l17_n539(x)
+ if (x < 1)
+ fun_l18_n901(x)
+ else
+ fun_l18_n579(x)
+ end
+end
+
+def fun_l17_n540(x)
+ if (x < 1)
+ fun_l18_n569(x)
+ else
+ fun_l18_n512(x)
+ end
+end
+
+def fun_l17_n541(x)
+ if (x < 1)
+ fun_l18_n319(x)
+ else
+ fun_l18_n388(x)
+ end
+end
+
+def fun_l17_n542(x)
+ if (x < 1)
+ fun_l18_n288(x)
+ else
+ fun_l18_n422(x)
+ end
+end
+
+def fun_l17_n543(x)
+ if (x < 1)
+ fun_l18_n873(x)
+ else
+ fun_l18_n614(x)
+ end
+end
+
+def fun_l17_n544(x)
+ if (x < 1)
+ fun_l18_n104(x)
+ else
+ fun_l18_n771(x)
+ end
+end
+
+def fun_l17_n545(x)
+ if (x < 1)
+ fun_l18_n204(x)
+ else
+ fun_l18_n452(x)
+ end
+end
+
+def fun_l17_n546(x)
+ if (x < 1)
+ fun_l18_n288(x)
+ else
+ fun_l18_n558(x)
+ end
+end
+
+def fun_l17_n547(x)
+ if (x < 1)
+ fun_l18_n265(x)
+ else
+ fun_l18_n768(x)
+ end
+end
+
+def fun_l17_n548(x)
+ if (x < 1)
+ fun_l18_n21(x)
+ else
+ fun_l18_n44(x)
+ end
+end
+
+def fun_l17_n549(x)
+ if (x < 1)
+ fun_l18_n72(x)
+ else
+ fun_l18_n321(x)
+ end
+end
+
+def fun_l17_n550(x)
+ if (x < 1)
+ fun_l18_n473(x)
+ else
+ fun_l18_n127(x)
+ end
+end
+
+def fun_l17_n551(x)
+ if (x < 1)
+ fun_l18_n188(x)
+ else
+ fun_l18_n782(x)
+ end
+end
+
+def fun_l17_n552(x)
+ if (x < 1)
+ fun_l18_n118(x)
+ else
+ fun_l18_n466(x)
+ end
+end
+
+def fun_l17_n553(x)
+ if (x < 1)
+ fun_l18_n279(x)
+ else
+ fun_l18_n605(x)
+ end
+end
+
+def fun_l17_n554(x)
+ if (x < 1)
+ fun_l18_n760(x)
+ else
+ fun_l18_n561(x)
+ end
+end
+
+def fun_l17_n555(x)
+ if (x < 1)
+ fun_l18_n873(x)
+ else
+ fun_l18_n846(x)
+ end
+end
+
+def fun_l17_n556(x)
+ if (x < 1)
+ fun_l18_n555(x)
+ else
+ fun_l18_n955(x)
+ end
+end
+
+def fun_l17_n557(x)
+ if (x < 1)
+ fun_l18_n757(x)
+ else
+ fun_l18_n171(x)
+ end
+end
+
+def fun_l17_n558(x)
+ if (x < 1)
+ fun_l18_n684(x)
+ else
+ fun_l18_n784(x)
+ end
+end
+
+def fun_l17_n559(x)
+ if (x < 1)
+ fun_l18_n457(x)
+ else
+ fun_l18_n798(x)
+ end
+end
+
+def fun_l17_n560(x)
+ if (x < 1)
+ fun_l18_n472(x)
+ else
+ fun_l18_n291(x)
+ end
+end
+
+def fun_l17_n561(x)
+ if (x < 1)
+ fun_l18_n870(x)
+ else
+ fun_l18_n395(x)
+ end
+end
+
+def fun_l17_n562(x)
+ if (x < 1)
+ fun_l18_n482(x)
+ else
+ fun_l18_n281(x)
+ end
+end
+
+def fun_l17_n563(x)
+ if (x < 1)
+ fun_l18_n761(x)
+ else
+ fun_l18_n362(x)
+ end
+end
+
+def fun_l17_n564(x)
+ if (x < 1)
+ fun_l18_n586(x)
+ else
+ fun_l18_n92(x)
+ end
+end
+
+def fun_l17_n565(x)
+ if (x < 1)
+ fun_l18_n620(x)
+ else
+ fun_l18_n356(x)
+ end
+end
+
+def fun_l17_n566(x)
+ if (x < 1)
+ fun_l18_n529(x)
+ else
+ fun_l18_n985(x)
+ end
+end
+
+def fun_l17_n567(x)
+ if (x < 1)
+ fun_l18_n351(x)
+ else
+ fun_l18_n77(x)
+ end
+end
+
+def fun_l17_n568(x)
+ if (x < 1)
+ fun_l18_n659(x)
+ else
+ fun_l18_n631(x)
+ end
+end
+
+def fun_l17_n569(x)
+ if (x < 1)
+ fun_l18_n630(x)
+ else
+ fun_l18_n466(x)
+ end
+end
+
+def fun_l17_n570(x)
+ if (x < 1)
+ fun_l18_n374(x)
+ else
+ fun_l18_n203(x)
+ end
+end
+
+def fun_l17_n571(x)
+ if (x < 1)
+ fun_l18_n479(x)
+ else
+ fun_l18_n977(x)
+ end
+end
+
+def fun_l17_n572(x)
+ if (x < 1)
+ fun_l18_n862(x)
+ else
+ fun_l18_n323(x)
+ end
+end
+
+def fun_l17_n573(x)
+ if (x < 1)
+ fun_l18_n148(x)
+ else
+ fun_l18_n848(x)
+ end
+end
+
+def fun_l17_n574(x)
+ if (x < 1)
+ fun_l18_n29(x)
+ else
+ fun_l18_n210(x)
+ end
+end
+
+def fun_l17_n575(x)
+ if (x < 1)
+ fun_l18_n39(x)
+ else
+ fun_l18_n874(x)
+ end
+end
+
+def fun_l17_n576(x)
+ if (x < 1)
+ fun_l18_n843(x)
+ else
+ fun_l18_n5(x)
+ end
+end
+
+def fun_l17_n577(x)
+ if (x < 1)
+ fun_l18_n284(x)
+ else
+ fun_l18_n242(x)
+ end
+end
+
+def fun_l17_n578(x)
+ if (x < 1)
+ fun_l18_n768(x)
+ else
+ fun_l18_n683(x)
+ end
+end
+
+def fun_l17_n579(x)
+ if (x < 1)
+ fun_l18_n67(x)
+ else
+ fun_l18_n423(x)
+ end
+end
+
+def fun_l17_n580(x)
+ if (x < 1)
+ fun_l18_n326(x)
+ else
+ fun_l18_n200(x)
+ end
+end
+
+def fun_l17_n581(x)
+ if (x < 1)
+ fun_l18_n186(x)
+ else
+ fun_l18_n772(x)
+ end
+end
+
+def fun_l17_n582(x)
+ if (x < 1)
+ fun_l18_n151(x)
+ else
+ fun_l18_n222(x)
+ end
+end
+
+def fun_l17_n583(x)
+ if (x < 1)
+ fun_l18_n690(x)
+ else
+ fun_l18_n925(x)
+ end
+end
+
+def fun_l17_n584(x)
+ if (x < 1)
+ fun_l18_n225(x)
+ else
+ fun_l18_n286(x)
+ end
+end
+
+def fun_l17_n585(x)
+ if (x < 1)
+ fun_l18_n542(x)
+ else
+ fun_l18_n703(x)
+ end
+end
+
+def fun_l17_n586(x)
+ if (x < 1)
+ fun_l18_n417(x)
+ else
+ fun_l18_n364(x)
+ end
+end
+
+def fun_l17_n587(x)
+ if (x < 1)
+ fun_l18_n540(x)
+ else
+ fun_l18_n231(x)
+ end
+end
+
+def fun_l17_n588(x)
+ if (x < 1)
+ fun_l18_n859(x)
+ else
+ fun_l18_n557(x)
+ end
+end
+
+def fun_l17_n589(x)
+ if (x < 1)
+ fun_l18_n131(x)
+ else
+ fun_l18_n847(x)
+ end
+end
+
+def fun_l17_n590(x)
+ if (x < 1)
+ fun_l18_n267(x)
+ else
+ fun_l18_n613(x)
+ end
+end
+
+def fun_l17_n591(x)
+ if (x < 1)
+ fun_l18_n273(x)
+ else
+ fun_l18_n857(x)
+ end
+end
+
+def fun_l17_n592(x)
+ if (x < 1)
+ fun_l18_n561(x)
+ else
+ fun_l18_n243(x)
+ end
+end
+
+def fun_l17_n593(x)
+ if (x < 1)
+ fun_l18_n742(x)
+ else
+ fun_l18_n123(x)
+ end
+end
+
+def fun_l17_n594(x)
+ if (x < 1)
+ fun_l18_n480(x)
+ else
+ fun_l18_n290(x)
+ end
+end
+
+def fun_l17_n595(x)
+ if (x < 1)
+ fun_l18_n56(x)
+ else
+ fun_l18_n727(x)
+ end
+end
+
+def fun_l17_n596(x)
+ if (x < 1)
+ fun_l18_n901(x)
+ else
+ fun_l18_n723(x)
+ end
+end
+
+def fun_l17_n597(x)
+ if (x < 1)
+ fun_l18_n405(x)
+ else
+ fun_l18_n498(x)
+ end
+end
+
+def fun_l17_n598(x)
+ if (x < 1)
+ fun_l18_n772(x)
+ else
+ fun_l18_n543(x)
+ end
+end
+
+def fun_l17_n599(x)
+ if (x < 1)
+ fun_l18_n20(x)
+ else
+ fun_l18_n39(x)
+ end
+end
+
+def fun_l17_n600(x)
+ if (x < 1)
+ fun_l18_n657(x)
+ else
+ fun_l18_n381(x)
+ end
+end
+
+def fun_l17_n601(x)
+ if (x < 1)
+ fun_l18_n505(x)
+ else
+ fun_l18_n196(x)
+ end
+end
+
+def fun_l17_n602(x)
+ if (x < 1)
+ fun_l18_n250(x)
+ else
+ fun_l18_n503(x)
+ end
+end
+
+def fun_l17_n603(x)
+ if (x < 1)
+ fun_l18_n694(x)
+ else
+ fun_l18_n589(x)
+ end
+end
+
+def fun_l17_n604(x)
+ if (x < 1)
+ fun_l18_n27(x)
+ else
+ fun_l18_n202(x)
+ end
+end
+
+def fun_l17_n605(x)
+ if (x < 1)
+ fun_l18_n901(x)
+ else
+ fun_l18_n823(x)
+ end
+end
+
+def fun_l17_n606(x)
+ if (x < 1)
+ fun_l18_n296(x)
+ else
+ fun_l18_n854(x)
+ end
+end
+
+def fun_l17_n607(x)
+ if (x < 1)
+ fun_l18_n226(x)
+ else
+ fun_l18_n110(x)
+ end
+end
+
+def fun_l17_n608(x)
+ if (x < 1)
+ fun_l18_n205(x)
+ else
+ fun_l18_n215(x)
+ end
+end
+
+def fun_l17_n609(x)
+ if (x < 1)
+ fun_l18_n265(x)
+ else
+ fun_l18_n715(x)
+ end
+end
+
+def fun_l17_n610(x)
+ if (x < 1)
+ fun_l18_n881(x)
+ else
+ fun_l18_n106(x)
+ end
+end
+
+def fun_l17_n611(x)
+ if (x < 1)
+ fun_l18_n674(x)
+ else
+ fun_l18_n189(x)
+ end
+end
+
+def fun_l17_n612(x)
+ if (x < 1)
+ fun_l18_n20(x)
+ else
+ fun_l18_n96(x)
+ end
+end
+
+def fun_l17_n613(x)
+ if (x < 1)
+ fun_l18_n880(x)
+ else
+ fun_l18_n599(x)
+ end
+end
+
+def fun_l17_n614(x)
+ if (x < 1)
+ fun_l18_n47(x)
+ else
+ fun_l18_n633(x)
+ end
+end
+
+def fun_l17_n615(x)
+ if (x < 1)
+ fun_l18_n7(x)
+ else
+ fun_l18_n165(x)
+ end
+end
+
+def fun_l17_n616(x)
+ if (x < 1)
+ fun_l18_n478(x)
+ else
+ fun_l18_n94(x)
+ end
+end
+
+def fun_l17_n617(x)
+ if (x < 1)
+ fun_l18_n97(x)
+ else
+ fun_l18_n369(x)
+ end
+end
+
+def fun_l17_n618(x)
+ if (x < 1)
+ fun_l18_n291(x)
+ else
+ fun_l18_n637(x)
+ end
+end
+
+def fun_l17_n619(x)
+ if (x < 1)
+ fun_l18_n966(x)
+ else
+ fun_l18_n851(x)
+ end
+end
+
+def fun_l17_n620(x)
+ if (x < 1)
+ fun_l18_n349(x)
+ else
+ fun_l18_n413(x)
+ end
+end
+
+def fun_l17_n621(x)
+ if (x < 1)
+ fun_l18_n343(x)
+ else
+ fun_l18_n224(x)
+ end
+end
+
+def fun_l17_n622(x)
+ if (x < 1)
+ fun_l18_n452(x)
+ else
+ fun_l18_n3(x)
+ end
+end
+
+def fun_l17_n623(x)
+ if (x < 1)
+ fun_l18_n539(x)
+ else
+ fun_l18_n542(x)
+ end
+end
+
+def fun_l17_n624(x)
+ if (x < 1)
+ fun_l18_n117(x)
+ else
+ fun_l18_n348(x)
+ end
+end
+
+def fun_l17_n625(x)
+ if (x < 1)
+ fun_l18_n753(x)
+ else
+ fun_l18_n284(x)
+ end
+end
+
+def fun_l17_n626(x)
+ if (x < 1)
+ fun_l18_n146(x)
+ else
+ fun_l18_n228(x)
+ end
+end
+
+def fun_l17_n627(x)
+ if (x < 1)
+ fun_l18_n286(x)
+ else
+ fun_l18_n413(x)
+ end
+end
+
+def fun_l17_n628(x)
+ if (x < 1)
+ fun_l18_n730(x)
+ else
+ fun_l18_n311(x)
+ end
+end
+
+def fun_l17_n629(x)
+ if (x < 1)
+ fun_l18_n455(x)
+ else
+ fun_l18_n141(x)
+ end
+end
+
+def fun_l17_n630(x)
+ if (x < 1)
+ fun_l18_n300(x)
+ else
+ fun_l18_n368(x)
+ end
+end
+
+def fun_l17_n631(x)
+ if (x < 1)
+ fun_l18_n490(x)
+ else
+ fun_l18_n711(x)
+ end
+end
+
+def fun_l17_n632(x)
+ if (x < 1)
+ fun_l18_n310(x)
+ else
+ fun_l18_n805(x)
+ end
+end
+
+def fun_l17_n633(x)
+ if (x < 1)
+ fun_l18_n2(x)
+ else
+ fun_l18_n709(x)
+ end
+end
+
+def fun_l17_n634(x)
+ if (x < 1)
+ fun_l18_n239(x)
+ else
+ fun_l18_n394(x)
+ end
+end
+
+def fun_l17_n635(x)
+ if (x < 1)
+ fun_l18_n933(x)
+ else
+ fun_l18_n749(x)
+ end
+end
+
+def fun_l17_n636(x)
+ if (x < 1)
+ fun_l18_n54(x)
+ else
+ fun_l18_n511(x)
+ end
+end
+
+def fun_l17_n637(x)
+ if (x < 1)
+ fun_l18_n908(x)
+ else
+ fun_l18_n550(x)
+ end
+end
+
+def fun_l17_n638(x)
+ if (x < 1)
+ fun_l18_n262(x)
+ else
+ fun_l18_n485(x)
+ end
+end
+
+def fun_l17_n639(x)
+ if (x < 1)
+ fun_l18_n676(x)
+ else
+ fun_l18_n860(x)
+ end
+end
+
+def fun_l17_n640(x)
+ if (x < 1)
+ fun_l18_n205(x)
+ else
+ fun_l18_n901(x)
+ end
+end
+
+def fun_l17_n641(x)
+ if (x < 1)
+ fun_l18_n834(x)
+ else
+ fun_l18_n133(x)
+ end
+end
+
+def fun_l17_n642(x)
+ if (x < 1)
+ fun_l18_n824(x)
+ else
+ fun_l18_n551(x)
+ end
+end
+
+def fun_l17_n643(x)
+ if (x < 1)
+ fun_l18_n362(x)
+ else
+ fun_l18_n684(x)
+ end
+end
+
+def fun_l17_n644(x)
+ if (x < 1)
+ fun_l18_n856(x)
+ else
+ fun_l18_n103(x)
+ end
+end
+
+def fun_l17_n645(x)
+ if (x < 1)
+ fun_l18_n999(x)
+ else
+ fun_l18_n995(x)
+ end
+end
+
+def fun_l17_n646(x)
+ if (x < 1)
+ fun_l18_n24(x)
+ else
+ fun_l18_n405(x)
+ end
+end
+
+def fun_l17_n647(x)
+ if (x < 1)
+ fun_l18_n71(x)
+ else
+ fun_l18_n201(x)
+ end
+end
+
+def fun_l17_n648(x)
+ if (x < 1)
+ fun_l18_n905(x)
+ else
+ fun_l18_n14(x)
+ end
+end
+
+def fun_l17_n649(x)
+ if (x < 1)
+ fun_l18_n490(x)
+ else
+ fun_l18_n932(x)
+ end
+end
+
+def fun_l17_n650(x)
+ if (x < 1)
+ fun_l18_n25(x)
+ else
+ fun_l18_n333(x)
+ end
+end
+
+def fun_l17_n651(x)
+ if (x < 1)
+ fun_l18_n282(x)
+ else
+ fun_l18_n197(x)
+ end
+end
+
+def fun_l17_n652(x)
+ if (x < 1)
+ fun_l18_n684(x)
+ else
+ fun_l18_n618(x)
+ end
+end
+
+def fun_l17_n653(x)
+ if (x < 1)
+ fun_l18_n201(x)
+ else
+ fun_l18_n571(x)
+ end
+end
+
+def fun_l17_n654(x)
+ if (x < 1)
+ fun_l18_n26(x)
+ else
+ fun_l18_n813(x)
+ end
+end
+
+def fun_l17_n655(x)
+ if (x < 1)
+ fun_l18_n879(x)
+ else
+ fun_l18_n860(x)
+ end
+end
+
+def fun_l17_n656(x)
+ if (x < 1)
+ fun_l18_n193(x)
+ else
+ fun_l18_n635(x)
+ end
+end
+
+def fun_l17_n657(x)
+ if (x < 1)
+ fun_l18_n163(x)
+ else
+ fun_l18_n601(x)
+ end
+end
+
+def fun_l17_n658(x)
+ if (x < 1)
+ fun_l18_n794(x)
+ else
+ fun_l18_n582(x)
+ end
+end
+
+def fun_l17_n659(x)
+ if (x < 1)
+ fun_l18_n22(x)
+ else
+ fun_l18_n427(x)
+ end
+end
+
+def fun_l17_n660(x)
+ if (x < 1)
+ fun_l18_n959(x)
+ else
+ fun_l18_n21(x)
+ end
+end
+
+def fun_l17_n661(x)
+ if (x < 1)
+ fun_l18_n233(x)
+ else
+ fun_l18_n852(x)
+ end
+end
+
+def fun_l17_n662(x)
+ if (x < 1)
+ fun_l18_n367(x)
+ else
+ fun_l18_n119(x)
+ end
+end
+
+def fun_l17_n663(x)
+ if (x < 1)
+ fun_l18_n511(x)
+ else
+ fun_l18_n425(x)
+ end
+end
+
+def fun_l17_n664(x)
+ if (x < 1)
+ fun_l18_n256(x)
+ else
+ fun_l18_n294(x)
+ end
+end
+
+def fun_l17_n665(x)
+ if (x < 1)
+ fun_l18_n263(x)
+ else
+ fun_l18_n549(x)
+ end
+end
+
+def fun_l17_n666(x)
+ if (x < 1)
+ fun_l18_n868(x)
+ else
+ fun_l18_n221(x)
+ end
+end
+
+def fun_l17_n667(x)
+ if (x < 1)
+ fun_l18_n703(x)
+ else
+ fun_l18_n157(x)
+ end
+end
+
+def fun_l17_n668(x)
+ if (x < 1)
+ fun_l18_n639(x)
+ else
+ fun_l18_n685(x)
+ end
+end
+
+def fun_l17_n669(x)
+ if (x < 1)
+ fun_l18_n278(x)
+ else
+ fun_l18_n366(x)
+ end
+end
+
+def fun_l17_n670(x)
+ if (x < 1)
+ fun_l18_n267(x)
+ else
+ fun_l18_n641(x)
+ end
+end
+
+def fun_l17_n671(x)
+ if (x < 1)
+ fun_l18_n452(x)
+ else
+ fun_l18_n851(x)
+ end
+end
+
+def fun_l17_n672(x)
+ if (x < 1)
+ fun_l18_n256(x)
+ else
+ fun_l18_n282(x)
+ end
+end
+
+def fun_l17_n673(x)
+ if (x < 1)
+ fun_l18_n397(x)
+ else
+ fun_l18_n446(x)
+ end
+end
+
+def fun_l17_n674(x)
+ if (x < 1)
+ fun_l18_n499(x)
+ else
+ fun_l18_n166(x)
+ end
+end
+
+def fun_l17_n675(x)
+ if (x < 1)
+ fun_l18_n299(x)
+ else
+ fun_l18_n473(x)
+ end
+end
+
+def fun_l17_n676(x)
+ if (x < 1)
+ fun_l18_n331(x)
+ else
+ fun_l18_n590(x)
+ end
+end
+
+def fun_l17_n677(x)
+ if (x < 1)
+ fun_l18_n951(x)
+ else
+ fun_l18_n227(x)
+ end
+end
+
+def fun_l17_n678(x)
+ if (x < 1)
+ fun_l18_n874(x)
+ else
+ fun_l18_n359(x)
+ end
+end
+
+def fun_l17_n679(x)
+ if (x < 1)
+ fun_l18_n187(x)
+ else
+ fun_l18_n13(x)
+ end
+end
+
+def fun_l17_n680(x)
+ if (x < 1)
+ fun_l18_n878(x)
+ else
+ fun_l18_n902(x)
+ end
+end
+
+def fun_l17_n681(x)
+ if (x < 1)
+ fun_l18_n450(x)
+ else
+ fun_l18_n262(x)
+ end
+end
+
+def fun_l17_n682(x)
+ if (x < 1)
+ fun_l18_n759(x)
+ else
+ fun_l18_n253(x)
+ end
+end
+
+def fun_l17_n683(x)
+ if (x < 1)
+ fun_l18_n199(x)
+ else
+ fun_l18_n191(x)
+ end
+end
+
+def fun_l17_n684(x)
+ if (x < 1)
+ fun_l18_n93(x)
+ else
+ fun_l18_n275(x)
+ end
+end
+
+def fun_l17_n685(x)
+ if (x < 1)
+ fun_l18_n17(x)
+ else
+ fun_l18_n575(x)
+ end
+end
+
+def fun_l17_n686(x)
+ if (x < 1)
+ fun_l18_n971(x)
+ else
+ fun_l18_n540(x)
+ end
+end
+
+def fun_l17_n687(x)
+ if (x < 1)
+ fun_l18_n942(x)
+ else
+ fun_l18_n285(x)
+ end
+end
+
+def fun_l17_n688(x)
+ if (x < 1)
+ fun_l18_n348(x)
+ else
+ fun_l18_n7(x)
+ end
+end
+
+def fun_l17_n689(x)
+ if (x < 1)
+ fun_l18_n839(x)
+ else
+ fun_l18_n532(x)
+ end
+end
+
+def fun_l17_n690(x)
+ if (x < 1)
+ fun_l18_n578(x)
+ else
+ fun_l18_n751(x)
+ end
+end
+
+def fun_l17_n691(x)
+ if (x < 1)
+ fun_l18_n85(x)
+ else
+ fun_l18_n311(x)
+ end
+end
+
+def fun_l17_n692(x)
+ if (x < 1)
+ fun_l18_n573(x)
+ else
+ fun_l18_n685(x)
+ end
+end
+
+def fun_l17_n693(x)
+ if (x < 1)
+ fun_l18_n449(x)
+ else
+ fun_l18_n749(x)
+ end
+end
+
+def fun_l17_n694(x)
+ if (x < 1)
+ fun_l18_n251(x)
+ else
+ fun_l18_n266(x)
+ end
+end
+
+def fun_l17_n695(x)
+ if (x < 1)
+ fun_l18_n69(x)
+ else
+ fun_l18_n725(x)
+ end
+end
+
+def fun_l17_n696(x)
+ if (x < 1)
+ fun_l18_n54(x)
+ else
+ fun_l18_n196(x)
+ end
+end
+
+def fun_l17_n697(x)
+ if (x < 1)
+ fun_l18_n950(x)
+ else
+ fun_l18_n423(x)
+ end
+end
+
+def fun_l17_n698(x)
+ if (x < 1)
+ fun_l18_n809(x)
+ else
+ fun_l18_n787(x)
+ end
+end
+
+def fun_l17_n699(x)
+ if (x < 1)
+ fun_l18_n211(x)
+ else
+ fun_l18_n79(x)
+ end
+end
+
+def fun_l17_n700(x)
+ if (x < 1)
+ fun_l18_n686(x)
+ else
+ fun_l18_n287(x)
+ end
+end
+
+def fun_l17_n701(x)
+ if (x < 1)
+ fun_l18_n412(x)
+ else
+ fun_l18_n769(x)
+ end
+end
+
+def fun_l17_n702(x)
+ if (x < 1)
+ fun_l18_n62(x)
+ else
+ fun_l18_n592(x)
+ end
+end
+
+def fun_l17_n703(x)
+ if (x < 1)
+ fun_l18_n628(x)
+ else
+ fun_l18_n121(x)
+ end
+end
+
+def fun_l17_n704(x)
+ if (x < 1)
+ fun_l18_n84(x)
+ else
+ fun_l18_n350(x)
+ end
+end
+
+def fun_l17_n705(x)
+ if (x < 1)
+ fun_l18_n599(x)
+ else
+ fun_l18_n174(x)
+ end
+end
+
+def fun_l17_n706(x)
+ if (x < 1)
+ fun_l18_n39(x)
+ else
+ fun_l18_n266(x)
+ end
+end
+
+def fun_l17_n707(x)
+ if (x < 1)
+ fun_l18_n196(x)
+ else
+ fun_l18_n838(x)
+ end
+end
+
+def fun_l17_n708(x)
+ if (x < 1)
+ fun_l18_n647(x)
+ else
+ fun_l18_n26(x)
+ end
+end
+
+def fun_l17_n709(x)
+ if (x < 1)
+ fun_l18_n693(x)
+ else
+ fun_l18_n660(x)
+ end
+end
+
+def fun_l17_n710(x)
+ if (x < 1)
+ fun_l18_n530(x)
+ else
+ fun_l18_n654(x)
+ end
+end
+
+def fun_l17_n711(x)
+ if (x < 1)
+ fun_l18_n580(x)
+ else
+ fun_l18_n65(x)
+ end
+end
+
+def fun_l17_n712(x)
+ if (x < 1)
+ fun_l18_n789(x)
+ else
+ fun_l18_n832(x)
+ end
+end
+
+def fun_l17_n713(x)
+ if (x < 1)
+ fun_l18_n366(x)
+ else
+ fun_l18_n168(x)
+ end
+end
+
+def fun_l17_n714(x)
+ if (x < 1)
+ fun_l18_n571(x)
+ else
+ fun_l18_n23(x)
+ end
+end
+
+def fun_l17_n715(x)
+ if (x < 1)
+ fun_l18_n552(x)
+ else
+ fun_l18_n400(x)
+ end
+end
+
+def fun_l17_n716(x)
+ if (x < 1)
+ fun_l18_n752(x)
+ else
+ fun_l18_n403(x)
+ end
+end
+
+def fun_l17_n717(x)
+ if (x < 1)
+ fun_l18_n498(x)
+ else
+ fun_l18_n173(x)
+ end
+end
+
+def fun_l17_n718(x)
+ if (x < 1)
+ fun_l18_n168(x)
+ else
+ fun_l18_n656(x)
+ end
+end
+
+def fun_l17_n719(x)
+ if (x < 1)
+ fun_l18_n75(x)
+ else
+ fun_l18_n393(x)
+ end
+end
+
+def fun_l17_n720(x)
+ if (x < 1)
+ fun_l18_n856(x)
+ else
+ fun_l18_n101(x)
+ end
+end
+
+def fun_l17_n721(x)
+ if (x < 1)
+ fun_l18_n445(x)
+ else
+ fun_l18_n846(x)
+ end
+end
+
+def fun_l17_n722(x)
+ if (x < 1)
+ fun_l18_n450(x)
+ else
+ fun_l18_n136(x)
+ end
+end
+
+def fun_l17_n723(x)
+ if (x < 1)
+ fun_l18_n267(x)
+ else
+ fun_l18_n800(x)
+ end
+end
+
+def fun_l17_n724(x)
+ if (x < 1)
+ fun_l18_n98(x)
+ else
+ fun_l18_n955(x)
+ end
+end
+
+def fun_l17_n725(x)
+ if (x < 1)
+ fun_l18_n951(x)
+ else
+ fun_l18_n319(x)
+ end
+end
+
+def fun_l17_n726(x)
+ if (x < 1)
+ fun_l18_n531(x)
+ else
+ fun_l18_n846(x)
+ end
+end
+
+def fun_l17_n727(x)
+ if (x < 1)
+ fun_l18_n888(x)
+ else
+ fun_l18_n600(x)
+ end
+end
+
+def fun_l17_n728(x)
+ if (x < 1)
+ fun_l18_n278(x)
+ else
+ fun_l18_n445(x)
+ end
+end
+
+def fun_l17_n729(x)
+ if (x < 1)
+ fun_l18_n113(x)
+ else
+ fun_l18_n991(x)
+ end
+end
+
+def fun_l17_n730(x)
+ if (x < 1)
+ fun_l18_n756(x)
+ else
+ fun_l18_n935(x)
+ end
+end
+
+def fun_l17_n731(x)
+ if (x < 1)
+ fun_l18_n2(x)
+ else
+ fun_l18_n969(x)
+ end
+end
+
+def fun_l17_n732(x)
+ if (x < 1)
+ fun_l18_n138(x)
+ else
+ fun_l18_n198(x)
+ end
+end
+
+def fun_l17_n733(x)
+ if (x < 1)
+ fun_l18_n845(x)
+ else
+ fun_l18_n614(x)
+ end
+end
+
+def fun_l17_n734(x)
+ if (x < 1)
+ fun_l18_n603(x)
+ else
+ fun_l18_n568(x)
+ end
+end
+
+def fun_l17_n735(x)
+ if (x < 1)
+ fun_l18_n276(x)
+ else
+ fun_l18_n58(x)
+ end
+end
+
+def fun_l17_n736(x)
+ if (x < 1)
+ fun_l18_n404(x)
+ else
+ fun_l18_n906(x)
+ end
+end
+
+def fun_l17_n737(x)
+ if (x < 1)
+ fun_l18_n199(x)
+ else
+ fun_l18_n734(x)
+ end
+end
+
+def fun_l17_n738(x)
+ if (x < 1)
+ fun_l18_n327(x)
+ else
+ fun_l18_n667(x)
+ end
+end
+
+def fun_l17_n739(x)
+ if (x < 1)
+ fun_l18_n600(x)
+ else
+ fun_l18_n986(x)
+ end
+end
+
+def fun_l17_n740(x)
+ if (x < 1)
+ fun_l18_n820(x)
+ else
+ fun_l18_n615(x)
+ end
+end
+
+def fun_l17_n741(x)
+ if (x < 1)
+ fun_l18_n779(x)
+ else
+ fun_l18_n912(x)
+ end
+end
+
+def fun_l17_n742(x)
+ if (x < 1)
+ fun_l18_n55(x)
+ else
+ fun_l18_n41(x)
+ end
+end
+
+def fun_l17_n743(x)
+ if (x < 1)
+ fun_l18_n24(x)
+ else
+ fun_l18_n877(x)
+ end
+end
+
+def fun_l17_n744(x)
+ if (x < 1)
+ fun_l18_n834(x)
+ else
+ fun_l18_n10(x)
+ end
+end
+
+def fun_l17_n745(x)
+ if (x < 1)
+ fun_l18_n369(x)
+ else
+ fun_l18_n761(x)
+ end
+end
+
+def fun_l17_n746(x)
+ if (x < 1)
+ fun_l18_n534(x)
+ else
+ fun_l18_n292(x)
+ end
+end
+
+def fun_l17_n747(x)
+ if (x < 1)
+ fun_l18_n260(x)
+ else
+ fun_l18_n98(x)
+ end
+end
+
+def fun_l17_n748(x)
+ if (x < 1)
+ fun_l18_n738(x)
+ else
+ fun_l18_n298(x)
+ end
+end
+
+def fun_l17_n749(x)
+ if (x < 1)
+ fun_l18_n156(x)
+ else
+ fun_l18_n322(x)
+ end
+end
+
+def fun_l17_n750(x)
+ if (x < 1)
+ fun_l18_n519(x)
+ else
+ fun_l18_n566(x)
+ end
+end
+
+def fun_l17_n751(x)
+ if (x < 1)
+ fun_l18_n599(x)
+ else
+ fun_l18_n525(x)
+ end
+end
+
+def fun_l17_n752(x)
+ if (x < 1)
+ fun_l18_n51(x)
+ else
+ fun_l18_n334(x)
+ end
+end
+
+def fun_l17_n753(x)
+ if (x < 1)
+ fun_l18_n593(x)
+ else
+ fun_l18_n799(x)
+ end
+end
+
+def fun_l17_n754(x)
+ if (x < 1)
+ fun_l18_n599(x)
+ else
+ fun_l18_n167(x)
+ end
+end
+
+def fun_l17_n755(x)
+ if (x < 1)
+ fun_l18_n799(x)
+ else
+ fun_l18_n909(x)
+ end
+end
+
+def fun_l17_n756(x)
+ if (x < 1)
+ fun_l18_n988(x)
+ else
+ fun_l18_n793(x)
+ end
+end
+
+def fun_l17_n757(x)
+ if (x < 1)
+ fun_l18_n144(x)
+ else
+ fun_l18_n279(x)
+ end
+end
+
+def fun_l17_n758(x)
+ if (x < 1)
+ fun_l18_n981(x)
+ else
+ fun_l18_n603(x)
+ end
+end
+
+def fun_l17_n759(x)
+ if (x < 1)
+ fun_l18_n576(x)
+ else
+ fun_l18_n730(x)
+ end
+end
+
+def fun_l17_n760(x)
+ if (x < 1)
+ fun_l18_n66(x)
+ else
+ fun_l18_n359(x)
+ end
+end
+
+def fun_l17_n761(x)
+ if (x < 1)
+ fun_l18_n555(x)
+ else
+ fun_l18_n553(x)
+ end
+end
+
+def fun_l17_n762(x)
+ if (x < 1)
+ fun_l18_n508(x)
+ else
+ fun_l18_n665(x)
+ end
+end
+
+def fun_l17_n763(x)
+ if (x < 1)
+ fun_l18_n911(x)
+ else
+ fun_l18_n19(x)
+ end
+end
+
+def fun_l17_n764(x)
+ if (x < 1)
+ fun_l18_n162(x)
+ else
+ fun_l18_n707(x)
+ end
+end
+
+def fun_l17_n765(x)
+ if (x < 1)
+ fun_l18_n262(x)
+ else
+ fun_l18_n494(x)
+ end
+end
+
+def fun_l17_n766(x)
+ if (x < 1)
+ fun_l18_n220(x)
+ else
+ fun_l18_n144(x)
+ end
+end
+
+def fun_l17_n767(x)
+ if (x < 1)
+ fun_l18_n245(x)
+ else
+ fun_l18_n727(x)
+ end
+end
+
+def fun_l17_n768(x)
+ if (x < 1)
+ fun_l18_n875(x)
+ else
+ fun_l18_n610(x)
+ end
+end
+
+def fun_l17_n769(x)
+ if (x < 1)
+ fun_l18_n338(x)
+ else
+ fun_l18_n344(x)
+ end
+end
+
+def fun_l17_n770(x)
+ if (x < 1)
+ fun_l18_n224(x)
+ else
+ fun_l18_n682(x)
+ end
+end
+
+def fun_l17_n771(x)
+ if (x < 1)
+ fun_l18_n353(x)
+ else
+ fun_l18_n102(x)
+ end
+end
+
+def fun_l17_n772(x)
+ if (x < 1)
+ fun_l18_n122(x)
+ else
+ fun_l18_n979(x)
+ end
+end
+
+def fun_l17_n773(x)
+ if (x < 1)
+ fun_l18_n549(x)
+ else
+ fun_l18_n296(x)
+ end
+end
+
+def fun_l17_n774(x)
+ if (x < 1)
+ fun_l18_n82(x)
+ else
+ fun_l18_n748(x)
+ end
+end
+
+def fun_l17_n775(x)
+ if (x < 1)
+ fun_l18_n958(x)
+ else
+ fun_l18_n917(x)
+ end
+end
+
+def fun_l17_n776(x)
+ if (x < 1)
+ fun_l18_n173(x)
+ else
+ fun_l18_n438(x)
+ end
+end
+
+def fun_l17_n777(x)
+ if (x < 1)
+ fun_l18_n222(x)
+ else
+ fun_l18_n55(x)
+ end
+end
+
+def fun_l17_n778(x)
+ if (x < 1)
+ fun_l18_n529(x)
+ else
+ fun_l18_n548(x)
+ end
+end
+
+def fun_l17_n779(x)
+ if (x < 1)
+ fun_l18_n28(x)
+ else
+ fun_l18_n582(x)
+ end
+end
+
+def fun_l17_n780(x)
+ if (x < 1)
+ fun_l18_n818(x)
+ else
+ fun_l18_n836(x)
+ end
+end
+
+def fun_l17_n781(x)
+ if (x < 1)
+ fun_l18_n972(x)
+ else
+ fun_l18_n73(x)
+ end
+end
+
+def fun_l17_n782(x)
+ if (x < 1)
+ fun_l18_n527(x)
+ else
+ fun_l18_n999(x)
+ end
+end
+
+def fun_l17_n783(x)
+ if (x < 1)
+ fun_l18_n832(x)
+ else
+ fun_l18_n833(x)
+ end
+end
+
+def fun_l17_n784(x)
+ if (x < 1)
+ fun_l18_n987(x)
+ else
+ fun_l18_n329(x)
+ end
+end
+
+def fun_l17_n785(x)
+ if (x < 1)
+ fun_l18_n715(x)
+ else
+ fun_l18_n441(x)
+ end
+end
+
+def fun_l17_n786(x)
+ if (x < 1)
+ fun_l18_n55(x)
+ else
+ fun_l18_n682(x)
+ end
+end
+
+def fun_l17_n787(x)
+ if (x < 1)
+ fun_l18_n606(x)
+ else
+ fun_l18_n656(x)
+ end
+end
+
+def fun_l17_n788(x)
+ if (x < 1)
+ fun_l18_n254(x)
+ else
+ fun_l18_n544(x)
+ end
+end
+
+def fun_l17_n789(x)
+ if (x < 1)
+ fun_l18_n285(x)
+ else
+ fun_l18_n585(x)
+ end
+end
+
+def fun_l17_n790(x)
+ if (x < 1)
+ fun_l18_n441(x)
+ else
+ fun_l18_n716(x)
+ end
+end
+
+def fun_l17_n791(x)
+ if (x < 1)
+ fun_l18_n415(x)
+ else
+ fun_l18_n126(x)
+ end
+end
+
+def fun_l17_n792(x)
+ if (x < 1)
+ fun_l18_n490(x)
+ else
+ fun_l18_n753(x)
+ end
+end
+
+def fun_l17_n793(x)
+ if (x < 1)
+ fun_l18_n324(x)
+ else
+ fun_l18_n223(x)
+ end
+end
+
+def fun_l17_n794(x)
+ if (x < 1)
+ fun_l18_n913(x)
+ else
+ fun_l18_n94(x)
+ end
+end
+
+def fun_l17_n795(x)
+ if (x < 1)
+ fun_l18_n879(x)
+ else
+ fun_l18_n404(x)
+ end
+end
+
+def fun_l17_n796(x)
+ if (x < 1)
+ fun_l18_n309(x)
+ else
+ fun_l18_n65(x)
+ end
+end
+
+def fun_l17_n797(x)
+ if (x < 1)
+ fun_l18_n712(x)
+ else
+ fun_l18_n947(x)
+ end
+end
+
+def fun_l17_n798(x)
+ if (x < 1)
+ fun_l18_n238(x)
+ else
+ fun_l18_n83(x)
+ end
+end
+
+def fun_l17_n799(x)
+ if (x < 1)
+ fun_l18_n25(x)
+ else
+ fun_l18_n371(x)
+ end
+end
+
+def fun_l17_n800(x)
+ if (x < 1)
+ fun_l18_n501(x)
+ else
+ fun_l18_n386(x)
+ end
+end
+
+def fun_l17_n801(x)
+ if (x < 1)
+ fun_l18_n453(x)
+ else
+ fun_l18_n168(x)
+ end
+end
+
+def fun_l17_n802(x)
+ if (x < 1)
+ fun_l18_n763(x)
+ else
+ fun_l18_n675(x)
+ end
+end
+
+def fun_l17_n803(x)
+ if (x < 1)
+ fun_l18_n984(x)
+ else
+ fun_l18_n882(x)
+ end
+end
+
+def fun_l17_n804(x)
+ if (x < 1)
+ fun_l18_n545(x)
+ else
+ fun_l18_n79(x)
+ end
+end
+
+def fun_l17_n805(x)
+ if (x < 1)
+ fun_l18_n263(x)
+ else
+ fun_l18_n143(x)
+ end
+end
+
+def fun_l17_n806(x)
+ if (x < 1)
+ fun_l18_n232(x)
+ else
+ fun_l18_n864(x)
+ end
+end
+
+def fun_l17_n807(x)
+ if (x < 1)
+ fun_l18_n6(x)
+ else
+ fun_l18_n983(x)
+ end
+end
+
+def fun_l17_n808(x)
+ if (x < 1)
+ fun_l18_n17(x)
+ else
+ fun_l18_n426(x)
+ end
+end
+
+def fun_l17_n809(x)
+ if (x < 1)
+ fun_l18_n1(x)
+ else
+ fun_l18_n669(x)
+ end
+end
+
+def fun_l17_n810(x)
+ if (x < 1)
+ fun_l18_n191(x)
+ else
+ fun_l18_n540(x)
+ end
+end
+
+def fun_l17_n811(x)
+ if (x < 1)
+ fun_l18_n16(x)
+ else
+ fun_l18_n871(x)
+ end
+end
+
+def fun_l17_n812(x)
+ if (x < 1)
+ fun_l18_n352(x)
+ else
+ fun_l18_n156(x)
+ end
+end
+
+def fun_l17_n813(x)
+ if (x < 1)
+ fun_l18_n239(x)
+ else
+ fun_l18_n314(x)
+ end
+end
+
+def fun_l17_n814(x)
+ if (x < 1)
+ fun_l18_n890(x)
+ else
+ fun_l18_n21(x)
+ end
+end
+
+def fun_l17_n815(x)
+ if (x < 1)
+ fun_l18_n894(x)
+ else
+ fun_l18_n894(x)
+ end
+end
+
+def fun_l17_n816(x)
+ if (x < 1)
+ fun_l18_n75(x)
+ else
+ fun_l18_n631(x)
+ end
+end
+
+def fun_l17_n817(x)
+ if (x < 1)
+ fun_l18_n118(x)
+ else
+ fun_l18_n857(x)
+ end
+end
+
+def fun_l17_n818(x)
+ if (x < 1)
+ fun_l18_n403(x)
+ else
+ fun_l18_n364(x)
+ end
+end
+
+def fun_l17_n819(x)
+ if (x < 1)
+ fun_l18_n15(x)
+ else
+ fun_l18_n232(x)
+ end
+end
+
+def fun_l17_n820(x)
+ if (x < 1)
+ fun_l18_n610(x)
+ else
+ fun_l18_n43(x)
+ end
+end
+
+def fun_l17_n821(x)
+ if (x < 1)
+ fun_l18_n949(x)
+ else
+ fun_l18_n884(x)
+ end
+end
+
+def fun_l17_n822(x)
+ if (x < 1)
+ fun_l18_n387(x)
+ else
+ fun_l18_n587(x)
+ end
+end
+
+def fun_l17_n823(x)
+ if (x < 1)
+ fun_l18_n99(x)
+ else
+ fun_l18_n653(x)
+ end
+end
+
+def fun_l17_n824(x)
+ if (x < 1)
+ fun_l18_n41(x)
+ else
+ fun_l18_n822(x)
+ end
+end
+
+def fun_l17_n825(x)
+ if (x < 1)
+ fun_l18_n325(x)
+ else
+ fun_l18_n735(x)
+ end
+end
+
+def fun_l17_n826(x)
+ if (x < 1)
+ fun_l18_n415(x)
+ else
+ fun_l18_n684(x)
+ end
+end
+
+def fun_l17_n827(x)
+ if (x < 1)
+ fun_l18_n856(x)
+ else
+ fun_l18_n257(x)
+ end
+end
+
+def fun_l17_n828(x)
+ if (x < 1)
+ fun_l18_n455(x)
+ else
+ fun_l18_n200(x)
+ end
+end
+
+def fun_l17_n829(x)
+ if (x < 1)
+ fun_l18_n486(x)
+ else
+ fun_l18_n528(x)
+ end
+end
+
+def fun_l17_n830(x)
+ if (x < 1)
+ fun_l18_n321(x)
+ else
+ fun_l18_n619(x)
+ end
+end
+
+def fun_l17_n831(x)
+ if (x < 1)
+ fun_l18_n910(x)
+ else
+ fun_l18_n796(x)
+ end
+end
+
+def fun_l17_n832(x)
+ if (x < 1)
+ fun_l18_n303(x)
+ else
+ fun_l18_n278(x)
+ end
+end
+
+def fun_l17_n833(x)
+ if (x < 1)
+ fun_l18_n477(x)
+ else
+ fun_l18_n733(x)
+ end
+end
+
+def fun_l17_n834(x)
+ if (x < 1)
+ fun_l18_n320(x)
+ else
+ fun_l18_n801(x)
+ end
+end
+
+def fun_l17_n835(x)
+ if (x < 1)
+ fun_l18_n672(x)
+ else
+ fun_l18_n183(x)
+ end
+end
+
+def fun_l17_n836(x)
+ if (x < 1)
+ fun_l18_n810(x)
+ else
+ fun_l18_n923(x)
+ end
+end
+
+def fun_l17_n837(x)
+ if (x < 1)
+ fun_l18_n775(x)
+ else
+ fun_l18_n884(x)
+ end
+end
+
+def fun_l17_n838(x)
+ if (x < 1)
+ fun_l18_n9(x)
+ else
+ fun_l18_n690(x)
+ end
+end
+
+def fun_l17_n839(x)
+ if (x < 1)
+ fun_l18_n843(x)
+ else
+ fun_l18_n482(x)
+ end
+end
+
+def fun_l17_n840(x)
+ if (x < 1)
+ fun_l18_n527(x)
+ else
+ fun_l18_n331(x)
+ end
+end
+
+def fun_l17_n841(x)
+ if (x < 1)
+ fun_l18_n210(x)
+ else
+ fun_l18_n119(x)
+ end
+end
+
+def fun_l17_n842(x)
+ if (x < 1)
+ fun_l18_n365(x)
+ else
+ fun_l18_n752(x)
+ end
+end
+
+def fun_l17_n843(x)
+ if (x < 1)
+ fun_l18_n855(x)
+ else
+ fun_l18_n149(x)
+ end
+end
+
+def fun_l17_n844(x)
+ if (x < 1)
+ fun_l18_n822(x)
+ else
+ fun_l18_n852(x)
+ end
+end
+
+def fun_l17_n845(x)
+ if (x < 1)
+ fun_l18_n182(x)
+ else
+ fun_l18_n145(x)
+ end
+end
+
+def fun_l17_n846(x)
+ if (x < 1)
+ fun_l18_n167(x)
+ else
+ fun_l18_n47(x)
+ end
+end
+
+def fun_l17_n847(x)
+ if (x < 1)
+ fun_l18_n350(x)
+ else
+ fun_l18_n894(x)
+ end
+end
+
+def fun_l17_n848(x)
+ if (x < 1)
+ fun_l18_n264(x)
+ else
+ fun_l18_n739(x)
+ end
+end
+
+def fun_l17_n849(x)
+ if (x < 1)
+ fun_l18_n475(x)
+ else
+ fun_l18_n974(x)
+ end
+end
+
+def fun_l17_n850(x)
+ if (x < 1)
+ fun_l18_n849(x)
+ else
+ fun_l18_n68(x)
+ end
+end
+
+def fun_l17_n851(x)
+ if (x < 1)
+ fun_l18_n160(x)
+ else
+ fun_l18_n173(x)
+ end
+end
+
+def fun_l17_n852(x)
+ if (x < 1)
+ fun_l18_n353(x)
+ else
+ fun_l18_n931(x)
+ end
+end
+
+def fun_l17_n853(x)
+ if (x < 1)
+ fun_l18_n706(x)
+ else
+ fun_l18_n540(x)
+ end
+end
+
+def fun_l17_n854(x)
+ if (x < 1)
+ fun_l18_n559(x)
+ else
+ fun_l18_n149(x)
+ end
+end
+
+def fun_l17_n855(x)
+ if (x < 1)
+ fun_l18_n347(x)
+ else
+ fun_l18_n559(x)
+ end
+end
+
+def fun_l17_n856(x)
+ if (x < 1)
+ fun_l18_n640(x)
+ else
+ fun_l18_n529(x)
+ end
+end
+
+def fun_l17_n857(x)
+ if (x < 1)
+ fun_l18_n410(x)
+ else
+ fun_l18_n278(x)
+ end
+end
+
+def fun_l17_n858(x)
+ if (x < 1)
+ fun_l18_n15(x)
+ else
+ fun_l18_n21(x)
+ end
+end
+
+def fun_l17_n859(x)
+ if (x < 1)
+ fun_l18_n180(x)
+ else
+ fun_l18_n530(x)
+ end
+end
+
+def fun_l17_n860(x)
+ if (x < 1)
+ fun_l18_n739(x)
+ else
+ fun_l18_n817(x)
+ end
+end
+
+def fun_l17_n861(x)
+ if (x < 1)
+ fun_l18_n341(x)
+ else
+ fun_l18_n962(x)
+ end
+end
+
+def fun_l17_n862(x)
+ if (x < 1)
+ fun_l18_n994(x)
+ else
+ fun_l18_n338(x)
+ end
+end
+
+def fun_l17_n863(x)
+ if (x < 1)
+ fun_l18_n428(x)
+ else
+ fun_l18_n608(x)
+ end
+end
+
+def fun_l17_n864(x)
+ if (x < 1)
+ fun_l18_n889(x)
+ else
+ fun_l18_n974(x)
+ end
+end
+
+def fun_l17_n865(x)
+ if (x < 1)
+ fun_l18_n300(x)
+ else
+ fun_l18_n164(x)
+ end
+end
+
+def fun_l17_n866(x)
+ if (x < 1)
+ fun_l18_n195(x)
+ else
+ fun_l18_n75(x)
+ end
+end
+
+def fun_l17_n867(x)
+ if (x < 1)
+ fun_l18_n725(x)
+ else
+ fun_l18_n639(x)
+ end
+end
+
+def fun_l17_n868(x)
+ if (x < 1)
+ fun_l18_n793(x)
+ else
+ fun_l18_n925(x)
+ end
+end
+
+def fun_l17_n869(x)
+ if (x < 1)
+ fun_l18_n845(x)
+ else
+ fun_l18_n174(x)
+ end
+end
+
+def fun_l17_n870(x)
+ if (x < 1)
+ fun_l18_n202(x)
+ else
+ fun_l18_n376(x)
+ end
+end
+
+def fun_l17_n871(x)
+ if (x < 1)
+ fun_l18_n503(x)
+ else
+ fun_l18_n441(x)
+ end
+end
+
+def fun_l17_n872(x)
+ if (x < 1)
+ fun_l18_n675(x)
+ else
+ fun_l18_n180(x)
+ end
+end
+
+def fun_l17_n873(x)
+ if (x < 1)
+ fun_l18_n457(x)
+ else
+ fun_l18_n286(x)
+ end
+end
+
+def fun_l17_n874(x)
+ if (x < 1)
+ fun_l18_n918(x)
+ else
+ fun_l18_n438(x)
+ end
+end
+
+def fun_l17_n875(x)
+ if (x < 1)
+ fun_l18_n269(x)
+ else
+ fun_l18_n539(x)
+ end
+end
+
+def fun_l17_n876(x)
+ if (x < 1)
+ fun_l18_n417(x)
+ else
+ fun_l18_n68(x)
+ end
+end
+
+def fun_l17_n877(x)
+ if (x < 1)
+ fun_l18_n382(x)
+ else
+ fun_l18_n392(x)
+ end
+end
+
+def fun_l17_n878(x)
+ if (x < 1)
+ fun_l18_n981(x)
+ else
+ fun_l18_n997(x)
+ end
+end
+
+def fun_l17_n879(x)
+ if (x < 1)
+ fun_l18_n8(x)
+ else
+ fun_l18_n255(x)
+ end
+end
+
+def fun_l17_n880(x)
+ if (x < 1)
+ fun_l18_n634(x)
+ else
+ fun_l18_n971(x)
+ end
+end
+
+def fun_l17_n881(x)
+ if (x < 1)
+ fun_l18_n940(x)
+ else
+ fun_l18_n410(x)
+ end
+end
+
+def fun_l17_n882(x)
+ if (x < 1)
+ fun_l18_n550(x)
+ else
+ fun_l18_n959(x)
+ end
+end
+
+def fun_l17_n883(x)
+ if (x < 1)
+ fun_l18_n258(x)
+ else
+ fun_l18_n766(x)
+ end
+end
+
+def fun_l17_n884(x)
+ if (x < 1)
+ fun_l18_n841(x)
+ else
+ fun_l18_n387(x)
+ end
+end
+
+def fun_l17_n885(x)
+ if (x < 1)
+ fun_l18_n357(x)
+ else
+ fun_l18_n128(x)
+ end
+end
+
+def fun_l17_n886(x)
+ if (x < 1)
+ fun_l18_n872(x)
+ else
+ fun_l18_n471(x)
+ end
+end
+
+def fun_l17_n887(x)
+ if (x < 1)
+ fun_l18_n596(x)
+ else
+ fun_l18_n639(x)
+ end
+end
+
+def fun_l17_n888(x)
+ if (x < 1)
+ fun_l18_n665(x)
+ else
+ fun_l18_n999(x)
+ end
+end
+
+def fun_l17_n889(x)
+ if (x < 1)
+ fun_l18_n898(x)
+ else
+ fun_l18_n899(x)
+ end
+end
+
+def fun_l17_n890(x)
+ if (x < 1)
+ fun_l18_n457(x)
+ else
+ fun_l18_n370(x)
+ end
+end
+
+def fun_l17_n891(x)
+ if (x < 1)
+ fun_l18_n100(x)
+ else
+ fun_l18_n899(x)
+ end
+end
+
+def fun_l17_n892(x)
+ if (x < 1)
+ fun_l18_n785(x)
+ else
+ fun_l18_n552(x)
+ end
+end
+
+def fun_l17_n893(x)
+ if (x < 1)
+ fun_l18_n386(x)
+ else
+ fun_l18_n971(x)
+ end
+end
+
+def fun_l17_n894(x)
+ if (x < 1)
+ fun_l18_n128(x)
+ else
+ fun_l18_n28(x)
+ end
+end
+
+def fun_l17_n895(x)
+ if (x < 1)
+ fun_l18_n18(x)
+ else
+ fun_l18_n682(x)
+ end
+end
+
+def fun_l17_n896(x)
+ if (x < 1)
+ fun_l18_n470(x)
+ else
+ fun_l18_n477(x)
+ end
+end
+
+def fun_l17_n897(x)
+ if (x < 1)
+ fun_l18_n543(x)
+ else
+ fun_l18_n943(x)
+ end
+end
+
+def fun_l17_n898(x)
+ if (x < 1)
+ fun_l18_n554(x)
+ else
+ fun_l18_n431(x)
+ end
+end
+
+def fun_l17_n899(x)
+ if (x < 1)
+ fun_l18_n615(x)
+ else
+ fun_l18_n480(x)
+ end
+end
+
+def fun_l17_n900(x)
+ if (x < 1)
+ fun_l18_n557(x)
+ else
+ fun_l18_n831(x)
+ end
+end
+
+def fun_l17_n901(x)
+ if (x < 1)
+ fun_l18_n245(x)
+ else
+ fun_l18_n79(x)
+ end
+end
+
+def fun_l17_n902(x)
+ if (x < 1)
+ fun_l18_n332(x)
+ else
+ fun_l18_n536(x)
+ end
+end
+
+def fun_l17_n903(x)
+ if (x < 1)
+ fun_l18_n531(x)
+ else
+ fun_l18_n933(x)
+ end
+end
+
+def fun_l17_n904(x)
+ if (x < 1)
+ fun_l18_n748(x)
+ else
+ fun_l18_n210(x)
+ end
+end
+
+def fun_l17_n905(x)
+ if (x < 1)
+ fun_l18_n351(x)
+ else
+ fun_l18_n698(x)
+ end
+end
+
+def fun_l17_n906(x)
+ if (x < 1)
+ fun_l18_n112(x)
+ else
+ fun_l18_n397(x)
+ end
+end
+
+def fun_l17_n907(x)
+ if (x < 1)
+ fun_l18_n177(x)
+ else
+ fun_l18_n826(x)
+ end
+end
+
+def fun_l17_n908(x)
+ if (x < 1)
+ fun_l18_n635(x)
+ else
+ fun_l18_n885(x)
+ end
+end
+
+def fun_l17_n909(x)
+ if (x < 1)
+ fun_l18_n225(x)
+ else
+ fun_l18_n139(x)
+ end
+end
+
+def fun_l17_n910(x)
+ if (x < 1)
+ fun_l18_n30(x)
+ else
+ fun_l18_n113(x)
+ end
+end
+
+def fun_l17_n911(x)
+ if (x < 1)
+ fun_l18_n5(x)
+ else
+ fun_l18_n324(x)
+ end
+end
+
+def fun_l17_n912(x)
+ if (x < 1)
+ fun_l18_n626(x)
+ else
+ fun_l18_n326(x)
+ end
+end
+
+def fun_l17_n913(x)
+ if (x < 1)
+ fun_l18_n478(x)
+ else
+ fun_l18_n373(x)
+ end
+end
+
+def fun_l17_n914(x)
+ if (x < 1)
+ fun_l18_n348(x)
+ else
+ fun_l18_n420(x)
+ end
+end
+
+def fun_l17_n915(x)
+ if (x < 1)
+ fun_l18_n777(x)
+ else
+ fun_l18_n185(x)
+ end
+end
+
+def fun_l17_n916(x)
+ if (x < 1)
+ fun_l18_n18(x)
+ else
+ fun_l18_n286(x)
+ end
+end
+
+def fun_l17_n917(x)
+ if (x < 1)
+ fun_l18_n199(x)
+ else
+ fun_l18_n378(x)
+ end
+end
+
+def fun_l17_n918(x)
+ if (x < 1)
+ fun_l18_n282(x)
+ else
+ fun_l18_n617(x)
+ end
+end
+
+def fun_l17_n919(x)
+ if (x < 1)
+ fun_l18_n634(x)
+ else
+ fun_l18_n396(x)
+ end
+end
+
+def fun_l17_n920(x)
+ if (x < 1)
+ fun_l18_n630(x)
+ else
+ fun_l18_n479(x)
+ end
+end
+
+def fun_l17_n921(x)
+ if (x < 1)
+ fun_l18_n828(x)
+ else
+ fun_l18_n189(x)
+ end
+end
+
+def fun_l17_n922(x)
+ if (x < 1)
+ fun_l18_n468(x)
+ else
+ fun_l18_n400(x)
+ end
+end
+
+def fun_l17_n923(x)
+ if (x < 1)
+ fun_l18_n815(x)
+ else
+ fun_l18_n0(x)
+ end
+end
+
+def fun_l17_n924(x)
+ if (x < 1)
+ fun_l18_n796(x)
+ else
+ fun_l18_n357(x)
+ end
+end
+
+def fun_l17_n925(x)
+ if (x < 1)
+ fun_l18_n4(x)
+ else
+ fun_l18_n293(x)
+ end
+end
+
+def fun_l17_n926(x)
+ if (x < 1)
+ fun_l18_n187(x)
+ else
+ fun_l18_n131(x)
+ end
+end
+
+def fun_l17_n927(x)
+ if (x < 1)
+ fun_l18_n896(x)
+ else
+ fun_l18_n257(x)
+ end
+end
+
+def fun_l17_n928(x)
+ if (x < 1)
+ fun_l18_n596(x)
+ else
+ fun_l18_n115(x)
+ end
+end
+
+def fun_l17_n929(x)
+ if (x < 1)
+ fun_l18_n630(x)
+ else
+ fun_l18_n62(x)
+ end
+end
+
+def fun_l17_n930(x)
+ if (x < 1)
+ fun_l18_n776(x)
+ else
+ fun_l18_n664(x)
+ end
+end
+
+def fun_l17_n931(x)
+ if (x < 1)
+ fun_l18_n424(x)
+ else
+ fun_l18_n298(x)
+ end
+end
+
+def fun_l17_n932(x)
+ if (x < 1)
+ fun_l18_n734(x)
+ else
+ fun_l18_n652(x)
+ end
+end
+
+def fun_l17_n933(x)
+ if (x < 1)
+ fun_l18_n796(x)
+ else
+ fun_l18_n8(x)
+ end
+end
+
+def fun_l17_n934(x)
+ if (x < 1)
+ fun_l18_n783(x)
+ else
+ fun_l18_n177(x)
+ end
+end
+
+def fun_l17_n935(x)
+ if (x < 1)
+ fun_l18_n288(x)
+ else
+ fun_l18_n274(x)
+ end
+end
+
+def fun_l17_n936(x)
+ if (x < 1)
+ fun_l18_n289(x)
+ else
+ fun_l18_n938(x)
+ end
+end
+
+def fun_l17_n937(x)
+ if (x < 1)
+ fun_l18_n815(x)
+ else
+ fun_l18_n924(x)
+ end
+end
+
+def fun_l17_n938(x)
+ if (x < 1)
+ fun_l18_n145(x)
+ else
+ fun_l18_n497(x)
+ end
+end
+
+def fun_l17_n939(x)
+ if (x < 1)
+ fun_l18_n433(x)
+ else
+ fun_l18_n628(x)
+ end
+end
+
+def fun_l17_n940(x)
+ if (x < 1)
+ fun_l18_n410(x)
+ else
+ fun_l18_n461(x)
+ end
+end
+
+def fun_l17_n941(x)
+ if (x < 1)
+ fun_l18_n682(x)
+ else
+ fun_l18_n81(x)
+ end
+end
+
+def fun_l17_n942(x)
+ if (x < 1)
+ fun_l18_n948(x)
+ else
+ fun_l18_n29(x)
+ end
+end
+
+def fun_l17_n943(x)
+ if (x < 1)
+ fun_l18_n78(x)
+ else
+ fun_l18_n237(x)
+ end
+end
+
+def fun_l17_n944(x)
+ if (x < 1)
+ fun_l18_n683(x)
+ else
+ fun_l18_n936(x)
+ end
+end
+
+def fun_l17_n945(x)
+ if (x < 1)
+ fun_l18_n339(x)
+ else
+ fun_l18_n471(x)
+ end
+end
+
+def fun_l17_n946(x)
+ if (x < 1)
+ fun_l18_n903(x)
+ else
+ fun_l18_n983(x)
+ end
+end
+
+def fun_l17_n947(x)
+ if (x < 1)
+ fun_l18_n231(x)
+ else
+ fun_l18_n985(x)
+ end
+end
+
+def fun_l17_n948(x)
+ if (x < 1)
+ fun_l18_n379(x)
+ else
+ fun_l18_n385(x)
+ end
+end
+
+def fun_l17_n949(x)
+ if (x < 1)
+ fun_l18_n89(x)
+ else
+ fun_l18_n499(x)
+ end
+end
+
+def fun_l17_n950(x)
+ if (x < 1)
+ fun_l18_n851(x)
+ else
+ fun_l18_n563(x)
+ end
+end
+
+def fun_l17_n951(x)
+ if (x < 1)
+ fun_l18_n803(x)
+ else
+ fun_l18_n109(x)
+ end
+end
+
+def fun_l17_n952(x)
+ if (x < 1)
+ fun_l18_n178(x)
+ else
+ fun_l18_n886(x)
+ end
+end
+
+def fun_l17_n953(x)
+ if (x < 1)
+ fun_l18_n705(x)
+ else
+ fun_l18_n340(x)
+ end
+end
+
+def fun_l17_n954(x)
+ if (x < 1)
+ fun_l18_n207(x)
+ else
+ fun_l18_n499(x)
+ end
+end
+
+def fun_l17_n955(x)
+ if (x < 1)
+ fun_l18_n298(x)
+ else
+ fun_l18_n921(x)
+ end
+end
+
+def fun_l17_n956(x)
+ if (x < 1)
+ fun_l18_n291(x)
+ else
+ fun_l18_n768(x)
+ end
+end
+
+def fun_l17_n957(x)
+ if (x < 1)
+ fun_l18_n144(x)
+ else
+ fun_l18_n316(x)
+ end
+end
+
+def fun_l17_n958(x)
+ if (x < 1)
+ fun_l18_n375(x)
+ else
+ fun_l18_n891(x)
+ end
+end
+
+def fun_l17_n959(x)
+ if (x < 1)
+ fun_l18_n989(x)
+ else
+ fun_l18_n773(x)
+ end
+end
+
+def fun_l17_n960(x)
+ if (x < 1)
+ fun_l18_n615(x)
+ else
+ fun_l18_n252(x)
+ end
+end
+
+def fun_l17_n961(x)
+ if (x < 1)
+ fun_l18_n827(x)
+ else
+ fun_l18_n567(x)
+ end
+end
+
+def fun_l17_n962(x)
+ if (x < 1)
+ fun_l18_n792(x)
+ else
+ fun_l18_n81(x)
+ end
+end
+
+def fun_l17_n963(x)
+ if (x < 1)
+ fun_l18_n561(x)
+ else
+ fun_l18_n732(x)
+ end
+end
+
+def fun_l17_n964(x)
+ if (x < 1)
+ fun_l18_n113(x)
+ else
+ fun_l18_n110(x)
+ end
+end
+
+def fun_l17_n965(x)
+ if (x < 1)
+ fun_l18_n321(x)
+ else
+ fun_l18_n557(x)
+ end
+end
+
+def fun_l17_n966(x)
+ if (x < 1)
+ fun_l18_n409(x)
+ else
+ fun_l18_n449(x)
+ end
+end
+
+def fun_l17_n967(x)
+ if (x < 1)
+ fun_l18_n316(x)
+ else
+ fun_l18_n669(x)
+ end
+end
+
+def fun_l17_n968(x)
+ if (x < 1)
+ fun_l18_n190(x)
+ else
+ fun_l18_n450(x)
+ end
+end
+
+def fun_l17_n969(x)
+ if (x < 1)
+ fun_l18_n174(x)
+ else
+ fun_l18_n425(x)
+ end
+end
+
+def fun_l17_n970(x)
+ if (x < 1)
+ fun_l18_n918(x)
+ else
+ fun_l18_n537(x)
+ end
+end
+
+def fun_l17_n971(x)
+ if (x < 1)
+ fun_l18_n923(x)
+ else
+ fun_l18_n998(x)
+ end
+end
+
+def fun_l17_n972(x)
+ if (x < 1)
+ fun_l18_n625(x)
+ else
+ fun_l18_n75(x)
+ end
+end
+
+def fun_l17_n973(x)
+ if (x < 1)
+ fun_l18_n171(x)
+ else
+ fun_l18_n180(x)
+ end
+end
+
+def fun_l17_n974(x)
+ if (x < 1)
+ fun_l18_n430(x)
+ else
+ fun_l18_n659(x)
+ end
+end
+
+def fun_l17_n975(x)
+ if (x < 1)
+ fun_l18_n88(x)
+ else
+ fun_l18_n363(x)
+ end
+end
+
+def fun_l17_n976(x)
+ if (x < 1)
+ fun_l18_n408(x)
+ else
+ fun_l18_n986(x)
+ end
+end
+
+def fun_l17_n977(x)
+ if (x < 1)
+ fun_l18_n988(x)
+ else
+ fun_l18_n818(x)
+ end
+end
+
+def fun_l17_n978(x)
+ if (x < 1)
+ fun_l18_n824(x)
+ else
+ fun_l18_n24(x)
+ end
+end
+
+def fun_l17_n979(x)
+ if (x < 1)
+ fun_l18_n182(x)
+ else
+ fun_l18_n969(x)
+ end
+end
+
+def fun_l17_n980(x)
+ if (x < 1)
+ fun_l18_n187(x)
+ else
+ fun_l18_n615(x)
+ end
+end
+
+def fun_l17_n981(x)
+ if (x < 1)
+ fun_l18_n646(x)
+ else
+ fun_l18_n25(x)
+ end
+end
+
+def fun_l17_n982(x)
+ if (x < 1)
+ fun_l18_n700(x)
+ else
+ fun_l18_n127(x)
+ end
+end
+
+def fun_l17_n983(x)
+ if (x < 1)
+ fun_l18_n153(x)
+ else
+ fun_l18_n831(x)
+ end
+end
+
+def fun_l17_n984(x)
+ if (x < 1)
+ fun_l18_n884(x)
+ else
+ fun_l18_n540(x)
+ end
+end
+
+def fun_l17_n985(x)
+ if (x < 1)
+ fun_l18_n225(x)
+ else
+ fun_l18_n221(x)
+ end
+end
+
+def fun_l17_n986(x)
+ if (x < 1)
+ fun_l18_n431(x)
+ else
+ fun_l18_n884(x)
+ end
+end
+
+def fun_l17_n987(x)
+ if (x < 1)
+ fun_l18_n271(x)
+ else
+ fun_l18_n541(x)
+ end
+end
+
+def fun_l17_n988(x)
+ if (x < 1)
+ fun_l18_n419(x)
+ else
+ fun_l18_n183(x)
+ end
+end
+
+def fun_l17_n989(x)
+ if (x < 1)
+ fun_l18_n85(x)
+ else
+ fun_l18_n51(x)
+ end
+end
+
+def fun_l17_n990(x)
+ if (x < 1)
+ fun_l18_n528(x)
+ else
+ fun_l18_n380(x)
+ end
+end
+
+def fun_l17_n991(x)
+ if (x < 1)
+ fun_l18_n13(x)
+ else
+ fun_l18_n137(x)
+ end
+end
+
+def fun_l17_n992(x)
+ if (x < 1)
+ fun_l18_n655(x)
+ else
+ fun_l18_n344(x)
+ end
+end
+
+def fun_l17_n993(x)
+ if (x < 1)
+ fun_l18_n911(x)
+ else
+ fun_l18_n21(x)
+ end
+end
+
+def fun_l17_n994(x)
+ if (x < 1)
+ fun_l18_n887(x)
+ else
+ fun_l18_n935(x)
+ end
+end
+
+def fun_l17_n995(x)
+ if (x < 1)
+ fun_l18_n206(x)
+ else
+ fun_l18_n374(x)
+ end
+end
+
+def fun_l17_n996(x)
+ if (x < 1)
+ fun_l18_n552(x)
+ else
+ fun_l18_n209(x)
+ end
+end
+
+def fun_l17_n997(x)
+ if (x < 1)
+ fun_l18_n540(x)
+ else
+ fun_l18_n901(x)
+ end
+end
+
+def fun_l17_n998(x)
+ if (x < 1)
+ fun_l18_n547(x)
+ else
+ fun_l18_n304(x)
+ end
+end
+
+def fun_l17_n999(x)
+ if (x < 1)
+ fun_l18_n297(x)
+ else
+ fun_l18_n868(x)
+ end
+end
+
+def fun_l18_n0(x)
+ if (x < 1)
+ fun_l19_n619(x)
+ else
+ fun_l19_n167(x)
+ end
+end
+
+def fun_l18_n1(x)
+ if (x < 1)
+ fun_l19_n669(x)
+ else
+ fun_l19_n962(x)
+ end
+end
+
+def fun_l18_n2(x)
+ if (x < 1)
+ fun_l19_n235(x)
+ else
+ fun_l19_n99(x)
+ end
+end
+
+def fun_l18_n3(x)
+ if (x < 1)
+ fun_l19_n961(x)
+ else
+ fun_l19_n200(x)
+ end
+end
+
+def fun_l18_n4(x)
+ if (x < 1)
+ fun_l19_n812(x)
+ else
+ fun_l19_n764(x)
+ end
+end
+
+def fun_l18_n5(x)
+ if (x < 1)
+ fun_l19_n605(x)
+ else
+ fun_l19_n260(x)
+ end
+end
+
+def fun_l18_n6(x)
+ if (x < 1)
+ fun_l19_n146(x)
+ else
+ fun_l19_n617(x)
+ end
+end
+
+def fun_l18_n7(x)
+ if (x < 1)
+ fun_l19_n181(x)
+ else
+ fun_l19_n31(x)
+ end
+end
+
+def fun_l18_n8(x)
+ if (x < 1)
+ fun_l19_n884(x)
+ else
+ fun_l19_n341(x)
+ end
+end
+
+def fun_l18_n9(x)
+ if (x < 1)
+ fun_l19_n741(x)
+ else
+ fun_l19_n704(x)
+ end
+end
+
+def fun_l18_n10(x)
+ if (x < 1)
+ fun_l19_n610(x)
+ else
+ fun_l19_n24(x)
+ end
+end
+
+def fun_l18_n11(x)
+ if (x < 1)
+ fun_l19_n184(x)
+ else
+ fun_l19_n125(x)
+ end
+end
+
+def fun_l18_n12(x)
+ if (x < 1)
+ fun_l19_n59(x)
+ else
+ fun_l19_n30(x)
+ end
+end
+
+def fun_l18_n13(x)
+ if (x < 1)
+ fun_l19_n255(x)
+ else
+ fun_l19_n18(x)
+ end
+end
+
+def fun_l18_n14(x)
+ if (x < 1)
+ fun_l19_n661(x)
+ else
+ fun_l19_n554(x)
+ end
+end
+
+def fun_l18_n15(x)
+ if (x < 1)
+ fun_l19_n557(x)
+ else
+ fun_l19_n757(x)
+ end
+end
+
+def fun_l18_n16(x)
+ if (x < 1)
+ fun_l19_n946(x)
+ else
+ fun_l19_n403(x)
+ end
+end
+
+def fun_l18_n17(x)
+ if (x < 1)
+ fun_l19_n872(x)
+ else
+ fun_l19_n64(x)
+ end
+end
+
+def fun_l18_n18(x)
+ if (x < 1)
+ fun_l19_n531(x)
+ else
+ fun_l19_n200(x)
+ end
+end
+
+def fun_l18_n19(x)
+ if (x < 1)
+ fun_l19_n172(x)
+ else
+ fun_l19_n319(x)
+ end
+end
+
+def fun_l18_n20(x)
+ if (x < 1)
+ fun_l19_n369(x)
+ else
+ fun_l19_n707(x)
+ end
+end
+
+def fun_l18_n21(x)
+ if (x < 1)
+ fun_l19_n726(x)
+ else
+ fun_l19_n718(x)
+ end
+end
+
+def fun_l18_n22(x)
+ if (x < 1)
+ fun_l19_n169(x)
+ else
+ fun_l19_n117(x)
+ end
+end
+
+def fun_l18_n23(x)
+ if (x < 1)
+ fun_l19_n913(x)
+ else
+ fun_l19_n489(x)
+ end
+end
+
+def fun_l18_n24(x)
+ if (x < 1)
+ fun_l19_n950(x)
+ else
+ fun_l19_n272(x)
+ end
+end
+
+def fun_l18_n25(x)
+ if (x < 1)
+ fun_l19_n835(x)
+ else
+ fun_l19_n341(x)
+ end
+end
+
+def fun_l18_n26(x)
+ if (x < 1)
+ fun_l19_n771(x)
+ else
+ fun_l19_n805(x)
+ end
+end
+
+def fun_l18_n27(x)
+ if (x < 1)
+ fun_l19_n71(x)
+ else
+ fun_l19_n515(x)
+ end
+end
+
+def fun_l18_n28(x)
+ if (x < 1)
+ fun_l19_n472(x)
+ else
+ fun_l19_n807(x)
+ end
+end
+
+def fun_l18_n29(x)
+ if (x < 1)
+ fun_l19_n957(x)
+ else
+ fun_l19_n555(x)
+ end
+end
+
+def fun_l18_n30(x)
+ if (x < 1)
+ fun_l19_n629(x)
+ else
+ fun_l19_n113(x)
+ end
+end
+
+def fun_l18_n31(x)
+ if (x < 1)
+ fun_l19_n791(x)
+ else
+ fun_l19_n340(x)
+ end
+end
+
+def fun_l18_n32(x)
+ if (x < 1)
+ fun_l19_n852(x)
+ else
+ fun_l19_n204(x)
+ end
+end
+
+def fun_l18_n33(x)
+ if (x < 1)
+ fun_l19_n441(x)
+ else
+ fun_l19_n331(x)
+ end
+end
+
+def fun_l18_n34(x)
+ if (x < 1)
+ fun_l19_n51(x)
+ else
+ fun_l19_n199(x)
+ end
+end
+
+def fun_l18_n35(x)
+ if (x < 1)
+ fun_l19_n472(x)
+ else
+ fun_l19_n589(x)
+ end
+end
+
+def fun_l18_n36(x)
+ if (x < 1)
+ fun_l19_n191(x)
+ else
+ fun_l19_n333(x)
+ end
+end
+
+def fun_l18_n37(x)
+ if (x < 1)
+ fun_l19_n412(x)
+ else
+ fun_l19_n661(x)
+ end
+end
+
+def fun_l18_n38(x)
+ if (x < 1)
+ fun_l19_n427(x)
+ else
+ fun_l19_n401(x)
+ end
+end
+
+def fun_l18_n39(x)
+ if (x < 1)
+ fun_l19_n96(x)
+ else
+ fun_l19_n235(x)
+ end
+end
+
+def fun_l18_n40(x)
+ if (x < 1)
+ fun_l19_n984(x)
+ else
+ fun_l19_n586(x)
+ end
+end
+
+def fun_l18_n41(x)
+ if (x < 1)
+ fun_l19_n559(x)
+ else
+ fun_l19_n382(x)
+ end
+end
+
+def fun_l18_n42(x)
+ if (x < 1)
+ fun_l19_n802(x)
+ else
+ fun_l19_n217(x)
+ end
+end
+
+def fun_l18_n43(x)
+ if (x < 1)
+ fun_l19_n693(x)
+ else
+ fun_l19_n178(x)
+ end
+end
+
+def fun_l18_n44(x)
+ if (x < 1)
+ fun_l19_n961(x)
+ else
+ fun_l19_n425(x)
+ end
+end
+
+def fun_l18_n45(x)
+ if (x < 1)
+ fun_l19_n242(x)
+ else
+ fun_l19_n949(x)
+ end
+end
+
+def fun_l18_n46(x)
+ if (x < 1)
+ fun_l19_n418(x)
+ else
+ fun_l19_n462(x)
+ end
+end
+
+def fun_l18_n47(x)
+ if (x < 1)
+ fun_l19_n56(x)
+ else
+ fun_l19_n79(x)
+ end
+end
+
+def fun_l18_n48(x)
+ if (x < 1)
+ fun_l19_n5(x)
+ else
+ fun_l19_n939(x)
+ end
+end
+
+def fun_l18_n49(x)
+ if (x < 1)
+ fun_l19_n4(x)
+ else
+ fun_l19_n262(x)
+ end
+end
+
+def fun_l18_n50(x)
+ if (x < 1)
+ fun_l19_n476(x)
+ else
+ fun_l19_n751(x)
+ end
+end
+
+def fun_l18_n51(x)
+ if (x < 1)
+ fun_l19_n687(x)
+ else
+ fun_l19_n489(x)
+ end
+end
+
+def fun_l18_n52(x)
+ if (x < 1)
+ fun_l19_n965(x)
+ else
+ fun_l19_n198(x)
+ end
+end
+
+def fun_l18_n53(x)
+ if (x < 1)
+ fun_l19_n349(x)
+ else
+ fun_l19_n603(x)
+ end
+end
+
+def fun_l18_n54(x)
+ if (x < 1)
+ fun_l19_n893(x)
+ else
+ fun_l19_n279(x)
+ end
+end
+
+def fun_l18_n55(x)
+ if (x < 1)
+ fun_l19_n816(x)
+ else
+ fun_l19_n922(x)
+ end
+end
+
+def fun_l18_n56(x)
+ if (x < 1)
+ fun_l19_n10(x)
+ else
+ fun_l19_n750(x)
+ end
+end
+
+def fun_l18_n57(x)
+ if (x < 1)
+ fun_l19_n787(x)
+ else
+ fun_l19_n446(x)
+ end
+end
+
+def fun_l18_n58(x)
+ if (x < 1)
+ fun_l19_n662(x)
+ else
+ fun_l19_n636(x)
+ end
+end
+
+def fun_l18_n59(x)
+ if (x < 1)
+ fun_l19_n640(x)
+ else
+ fun_l19_n604(x)
+ end
+end
+
+def fun_l18_n60(x)
+ if (x < 1)
+ fun_l19_n1(x)
+ else
+ fun_l19_n657(x)
+ end
+end
+
+def fun_l18_n61(x)
+ if (x < 1)
+ fun_l19_n657(x)
+ else
+ fun_l19_n516(x)
+ end
+end
+
+def fun_l18_n62(x)
+ if (x < 1)
+ fun_l19_n167(x)
+ else
+ fun_l19_n770(x)
+ end
+end
+
+def fun_l18_n63(x)
+ if (x < 1)
+ fun_l19_n572(x)
+ else
+ fun_l19_n224(x)
+ end
+end
+
+def fun_l18_n64(x)
+ if (x < 1)
+ fun_l19_n564(x)
+ else
+ fun_l19_n64(x)
+ end
+end
+
+def fun_l18_n65(x)
+ if (x < 1)
+ fun_l19_n200(x)
+ else
+ fun_l19_n724(x)
+ end
+end
+
+def fun_l18_n66(x)
+ if (x < 1)
+ fun_l19_n295(x)
+ else
+ fun_l19_n127(x)
+ end
+end
+
+def fun_l18_n67(x)
+ if (x < 1)
+ fun_l19_n81(x)
+ else
+ fun_l19_n757(x)
+ end
+end
+
+def fun_l18_n68(x)
+ if (x < 1)
+ fun_l19_n573(x)
+ else
+ fun_l19_n473(x)
+ end
+end
+
+def fun_l18_n69(x)
+ if (x < 1)
+ fun_l19_n475(x)
+ else
+ fun_l19_n8(x)
+ end
+end
+
+def fun_l18_n70(x)
+ if (x < 1)
+ fun_l19_n564(x)
+ else
+ fun_l19_n74(x)
+ end
+end
+
+def fun_l18_n71(x)
+ if (x < 1)
+ fun_l19_n270(x)
+ else
+ fun_l19_n12(x)
+ end
+end
+
+def fun_l18_n72(x)
+ if (x < 1)
+ fun_l19_n809(x)
+ else
+ fun_l19_n857(x)
+ end
+end
+
+def fun_l18_n73(x)
+ if (x < 1)
+ fun_l19_n329(x)
+ else
+ fun_l19_n850(x)
+ end
+end
+
+def fun_l18_n74(x)
+ if (x < 1)
+ fun_l19_n471(x)
+ else
+ fun_l19_n127(x)
+ end
+end
+
+def fun_l18_n75(x)
+ if (x < 1)
+ fun_l19_n558(x)
+ else
+ fun_l19_n626(x)
+ end
+end
+
+def fun_l18_n76(x)
+ if (x < 1)
+ fun_l19_n648(x)
+ else
+ fun_l19_n687(x)
+ end
+end
+
+def fun_l18_n77(x)
+ if (x < 1)
+ fun_l19_n690(x)
+ else
+ fun_l19_n612(x)
+ end
+end
+
+def fun_l18_n78(x)
+ if (x < 1)
+ fun_l19_n122(x)
+ else
+ fun_l19_n843(x)
+ end
+end
+
+def fun_l18_n79(x)
+ if (x < 1)
+ fun_l19_n375(x)
+ else
+ fun_l19_n56(x)
+ end
+end
+
+def fun_l18_n80(x)
+ if (x < 1)
+ fun_l19_n184(x)
+ else
+ fun_l19_n280(x)
+ end
+end
+
+def fun_l18_n81(x)
+ if (x < 1)
+ fun_l19_n588(x)
+ else
+ fun_l19_n433(x)
+ end
+end
+
+def fun_l18_n82(x)
+ if (x < 1)
+ fun_l19_n144(x)
+ else
+ fun_l19_n754(x)
+ end
+end
+
+def fun_l18_n83(x)
+ if (x < 1)
+ fun_l19_n468(x)
+ else
+ fun_l19_n951(x)
+ end
+end
+
+def fun_l18_n84(x)
+ if (x < 1)
+ fun_l19_n380(x)
+ else
+ fun_l19_n597(x)
+ end
+end
+
+def fun_l18_n85(x)
+ if (x < 1)
+ fun_l19_n651(x)
+ else
+ fun_l19_n756(x)
+ end
+end
+
+def fun_l18_n86(x)
+ if (x < 1)
+ fun_l19_n440(x)
+ else
+ fun_l19_n184(x)
+ end
+end
+
+def fun_l18_n87(x)
+ if (x < 1)
+ fun_l19_n851(x)
+ else
+ fun_l19_n753(x)
+ end
+end
+
+def fun_l18_n88(x)
+ if (x < 1)
+ fun_l19_n808(x)
+ else
+ fun_l19_n102(x)
+ end
+end
+
+def fun_l18_n89(x)
+ if (x < 1)
+ fun_l19_n768(x)
+ else
+ fun_l19_n885(x)
+ end
+end
+
+def fun_l18_n90(x)
+ if (x < 1)
+ fun_l19_n933(x)
+ else
+ fun_l19_n284(x)
+ end
+end
+
+def fun_l18_n91(x)
+ if (x < 1)
+ fun_l19_n234(x)
+ else
+ fun_l19_n927(x)
+ end
+end
+
+def fun_l18_n92(x)
+ if (x < 1)
+ fun_l19_n901(x)
+ else
+ fun_l19_n690(x)
+ end
+end
+
+def fun_l18_n93(x)
+ if (x < 1)
+ fun_l19_n386(x)
+ else
+ fun_l19_n692(x)
+ end
+end
+
+def fun_l18_n94(x)
+ if (x < 1)
+ fun_l19_n572(x)
+ else
+ fun_l19_n795(x)
+ end
+end
+
+def fun_l18_n95(x)
+ if (x < 1)
+ fun_l19_n647(x)
+ else
+ fun_l19_n337(x)
+ end
+end
+
+def fun_l18_n96(x)
+ if (x < 1)
+ fun_l19_n794(x)
+ else
+ fun_l19_n611(x)
+ end
+end
+
+def fun_l18_n97(x)
+ if (x < 1)
+ fun_l19_n752(x)
+ else
+ fun_l19_n548(x)
+ end
+end
+
+def fun_l18_n98(x)
+ if (x < 1)
+ fun_l19_n710(x)
+ else
+ fun_l19_n685(x)
+ end
+end
+
+def fun_l18_n99(x)
+ if (x < 1)
+ fun_l19_n711(x)
+ else
+ fun_l19_n307(x)
+ end
+end
+
+def fun_l18_n100(x)
+ if (x < 1)
+ fun_l19_n834(x)
+ else
+ fun_l19_n355(x)
+ end
+end
+
+def fun_l18_n101(x)
+ if (x < 1)
+ fun_l19_n473(x)
+ else
+ fun_l19_n924(x)
+ end
+end
+
+def fun_l18_n102(x)
+ if (x < 1)
+ fun_l19_n79(x)
+ else
+ fun_l19_n87(x)
+ end
+end
+
+def fun_l18_n103(x)
+ if (x < 1)
+ fun_l19_n27(x)
+ else
+ fun_l19_n914(x)
+ end
+end
+
+def fun_l18_n104(x)
+ if (x < 1)
+ fun_l19_n327(x)
+ else
+ fun_l19_n136(x)
+ end
+end
+
+def fun_l18_n105(x)
+ if (x < 1)
+ fun_l19_n42(x)
+ else
+ fun_l19_n289(x)
+ end
+end
+
+def fun_l18_n106(x)
+ if (x < 1)
+ fun_l19_n371(x)
+ else
+ fun_l19_n453(x)
+ end
+end
+
+def fun_l18_n107(x)
+ if (x < 1)
+ fun_l19_n579(x)
+ else
+ fun_l19_n500(x)
+ end
+end
+
+def fun_l18_n108(x)
+ if (x < 1)
+ fun_l19_n351(x)
+ else
+ fun_l19_n683(x)
+ end
+end
+
+def fun_l18_n109(x)
+ if (x < 1)
+ fun_l19_n831(x)
+ else
+ fun_l19_n310(x)
+ end
+end
+
+def fun_l18_n110(x)
+ if (x < 1)
+ fun_l19_n618(x)
+ else
+ fun_l19_n113(x)
+ end
+end
+
+def fun_l18_n111(x)
+ if (x < 1)
+ fun_l19_n147(x)
+ else
+ fun_l19_n324(x)
+ end
+end
+
+def fun_l18_n112(x)
+ if (x < 1)
+ fun_l19_n97(x)
+ else
+ fun_l19_n901(x)
+ end
+end
+
+def fun_l18_n113(x)
+ if (x < 1)
+ fun_l19_n223(x)
+ else
+ fun_l19_n819(x)
+ end
+end
+
+def fun_l18_n114(x)
+ if (x < 1)
+ fun_l19_n929(x)
+ else
+ fun_l19_n143(x)
+ end
+end
+
+def fun_l18_n115(x)
+ if (x < 1)
+ fun_l19_n697(x)
+ else
+ fun_l19_n934(x)
+ end
+end
+
+def fun_l18_n116(x)
+ if (x < 1)
+ fun_l19_n143(x)
+ else
+ fun_l19_n815(x)
+ end
+end
+
+def fun_l18_n117(x)
+ if (x < 1)
+ fun_l19_n889(x)
+ else
+ fun_l19_n859(x)
+ end
+end
+
+def fun_l18_n118(x)
+ if (x < 1)
+ fun_l19_n233(x)
+ else
+ fun_l19_n6(x)
+ end
+end
+
+def fun_l18_n119(x)
+ if (x < 1)
+ fun_l19_n490(x)
+ else
+ fun_l19_n783(x)
+ end
+end
+
+def fun_l18_n120(x)
+ if (x < 1)
+ fun_l19_n930(x)
+ else
+ fun_l19_n376(x)
+ end
+end
+
+def fun_l18_n121(x)
+ if (x < 1)
+ fun_l19_n567(x)
+ else
+ fun_l19_n882(x)
+ end
+end
+
+def fun_l18_n122(x)
+ if (x < 1)
+ fun_l19_n532(x)
+ else
+ fun_l19_n294(x)
+ end
+end
+
+def fun_l18_n123(x)
+ if (x < 1)
+ fun_l19_n20(x)
+ else
+ fun_l19_n433(x)
+ end
+end
+
+def fun_l18_n124(x)
+ if (x < 1)
+ fun_l19_n301(x)
+ else
+ fun_l19_n591(x)
+ end
+end
+
+def fun_l18_n125(x)
+ if (x < 1)
+ fun_l19_n424(x)
+ else
+ fun_l19_n524(x)
+ end
+end
+
+def fun_l18_n126(x)
+ if (x < 1)
+ fun_l19_n12(x)
+ else
+ fun_l19_n537(x)
+ end
+end
+
+def fun_l18_n127(x)
+ if (x < 1)
+ fun_l19_n548(x)
+ else
+ fun_l19_n850(x)
+ end
+end
+
+def fun_l18_n128(x)
+ if (x < 1)
+ fun_l19_n463(x)
+ else
+ fun_l19_n714(x)
+ end
+end
+
+def fun_l18_n129(x)
+ if (x < 1)
+ fun_l19_n438(x)
+ else
+ fun_l19_n667(x)
+ end
+end
+
+def fun_l18_n130(x)
+ if (x < 1)
+ fun_l19_n481(x)
+ else
+ fun_l19_n236(x)
+ end
+end
+
+def fun_l18_n131(x)
+ if (x < 1)
+ fun_l19_n84(x)
+ else
+ fun_l19_n370(x)
+ end
+end
+
+def fun_l18_n132(x)
+ if (x < 1)
+ fun_l19_n447(x)
+ else
+ fun_l19_n740(x)
+ end
+end
+
+def fun_l18_n133(x)
+ if (x < 1)
+ fun_l19_n807(x)
+ else
+ fun_l19_n595(x)
+ end
+end
+
+def fun_l18_n134(x)
+ if (x < 1)
+ fun_l19_n716(x)
+ else
+ fun_l19_n440(x)
+ end
+end
+
+def fun_l18_n135(x)
+ if (x < 1)
+ fun_l19_n657(x)
+ else
+ fun_l19_n683(x)
+ end
+end
+
+def fun_l18_n136(x)
+ if (x < 1)
+ fun_l19_n683(x)
+ else
+ fun_l19_n344(x)
+ end
+end
+
+def fun_l18_n137(x)
+ if (x < 1)
+ fun_l19_n228(x)
+ else
+ fun_l19_n186(x)
+ end
+end
+
+def fun_l18_n138(x)
+ if (x < 1)
+ fun_l19_n666(x)
+ else
+ fun_l19_n66(x)
+ end
+end
+
+def fun_l18_n139(x)
+ if (x < 1)
+ fun_l19_n416(x)
+ else
+ fun_l19_n398(x)
+ end
+end
+
+def fun_l18_n140(x)
+ if (x < 1)
+ fun_l19_n766(x)
+ else
+ fun_l19_n534(x)
+ end
+end
+
+def fun_l18_n141(x)
+ if (x < 1)
+ fun_l19_n370(x)
+ else
+ fun_l19_n653(x)
+ end
+end
+
+def fun_l18_n142(x)
+ if (x < 1)
+ fun_l19_n953(x)
+ else
+ fun_l19_n917(x)
+ end
+end
+
+def fun_l18_n143(x)
+ if (x < 1)
+ fun_l19_n989(x)
+ else
+ fun_l19_n862(x)
+ end
+end
+
+def fun_l18_n144(x)
+ if (x < 1)
+ fun_l19_n969(x)
+ else
+ fun_l19_n243(x)
+ end
+end
+
+def fun_l18_n145(x)
+ if (x < 1)
+ fun_l19_n379(x)
+ else
+ fun_l19_n315(x)
+ end
+end
+
+def fun_l18_n146(x)
+ if (x < 1)
+ fun_l19_n360(x)
+ else
+ fun_l19_n585(x)
+ end
+end
+
+def fun_l18_n147(x)
+ if (x < 1)
+ fun_l19_n4(x)
+ else
+ fun_l19_n372(x)
+ end
+end
+
+def fun_l18_n148(x)
+ if (x < 1)
+ fun_l19_n395(x)
+ else
+ fun_l19_n817(x)
+ end
+end
+
+def fun_l18_n149(x)
+ if (x < 1)
+ fun_l19_n237(x)
+ else
+ fun_l19_n506(x)
+ end
+end
+
+def fun_l18_n150(x)
+ if (x < 1)
+ fun_l19_n940(x)
+ else
+ fun_l19_n380(x)
+ end
+end
+
+def fun_l18_n151(x)
+ if (x < 1)
+ fun_l19_n190(x)
+ else
+ fun_l19_n925(x)
+ end
+end
+
+def fun_l18_n152(x)
+ if (x < 1)
+ fun_l19_n810(x)
+ else
+ fun_l19_n958(x)
+ end
+end
+
+def fun_l18_n153(x)
+ if (x < 1)
+ fun_l19_n69(x)
+ else
+ fun_l19_n19(x)
+ end
+end
+
+def fun_l18_n154(x)
+ if (x < 1)
+ fun_l19_n984(x)
+ else
+ fun_l19_n149(x)
+ end
+end
+
+def fun_l18_n155(x)
+ if (x < 1)
+ fun_l19_n179(x)
+ else
+ fun_l19_n583(x)
+ end
+end
+
+def fun_l18_n156(x)
+ if (x < 1)
+ fun_l19_n583(x)
+ else
+ fun_l19_n374(x)
+ end
+end
+
+def fun_l18_n157(x)
+ if (x < 1)
+ fun_l19_n908(x)
+ else
+ fun_l19_n769(x)
+ end
+end
+
+def fun_l18_n158(x)
+ if (x < 1)
+ fun_l19_n288(x)
+ else
+ fun_l19_n715(x)
+ end
+end
+
+def fun_l18_n159(x)
+ if (x < 1)
+ fun_l19_n742(x)
+ else
+ fun_l19_n733(x)
+ end
+end
+
+def fun_l18_n160(x)
+ if (x < 1)
+ fun_l19_n994(x)
+ else
+ fun_l19_n434(x)
+ end
+end
+
+def fun_l18_n161(x)
+ if (x < 1)
+ fun_l19_n440(x)
+ else
+ fun_l19_n994(x)
+ end
+end
+
+def fun_l18_n162(x)
+ if (x < 1)
+ fun_l19_n400(x)
+ else
+ fun_l19_n632(x)
+ end
+end
+
+def fun_l18_n163(x)
+ if (x < 1)
+ fun_l19_n237(x)
+ else
+ fun_l19_n369(x)
+ end
+end
+
+def fun_l18_n164(x)
+ if (x < 1)
+ fun_l19_n431(x)
+ else
+ fun_l19_n276(x)
+ end
+end
+
+def fun_l18_n165(x)
+ if (x < 1)
+ fun_l19_n173(x)
+ else
+ fun_l19_n93(x)
+ end
+end
+
+def fun_l18_n166(x)
+ if (x < 1)
+ fun_l19_n875(x)
+ else
+ fun_l19_n568(x)
+ end
+end
+
+def fun_l18_n167(x)
+ if (x < 1)
+ fun_l19_n61(x)
+ else
+ fun_l19_n79(x)
+ end
+end
+
+def fun_l18_n168(x)
+ if (x < 1)
+ fun_l19_n683(x)
+ else
+ fun_l19_n958(x)
+ end
+end
+
+def fun_l18_n169(x)
+ if (x < 1)
+ fun_l19_n419(x)
+ else
+ fun_l19_n648(x)
+ end
+end
+
+def fun_l18_n170(x)
+ if (x < 1)
+ fun_l19_n152(x)
+ else
+ fun_l19_n746(x)
+ end
+end
+
+def fun_l18_n171(x)
+ if (x < 1)
+ fun_l19_n670(x)
+ else
+ fun_l19_n974(x)
+ end
+end
+
+def fun_l18_n172(x)
+ if (x < 1)
+ fun_l19_n142(x)
+ else
+ fun_l19_n751(x)
+ end
+end
+
+def fun_l18_n173(x)
+ if (x < 1)
+ fun_l19_n640(x)
+ else
+ fun_l19_n911(x)
+ end
+end
+
+def fun_l18_n174(x)
+ if (x < 1)
+ fun_l19_n256(x)
+ else
+ fun_l19_n414(x)
+ end
+end
+
+def fun_l18_n175(x)
+ if (x < 1)
+ fun_l19_n207(x)
+ else
+ fun_l19_n80(x)
+ end
+end
+
+def fun_l18_n176(x)
+ if (x < 1)
+ fun_l19_n317(x)
+ else
+ fun_l19_n22(x)
+ end
+end
+
+def fun_l18_n177(x)
+ if (x < 1)
+ fun_l19_n457(x)
+ else
+ fun_l19_n723(x)
+ end
+end
+
+def fun_l18_n178(x)
+ if (x < 1)
+ fun_l19_n36(x)
+ else
+ fun_l19_n44(x)
+ end
+end
+
+def fun_l18_n179(x)
+ if (x < 1)
+ fun_l19_n92(x)
+ else
+ fun_l19_n75(x)
+ end
+end
+
+def fun_l18_n180(x)
+ if (x < 1)
+ fun_l19_n878(x)
+ else
+ fun_l19_n318(x)
+ end
+end
+
+def fun_l18_n181(x)
+ if (x < 1)
+ fun_l19_n499(x)
+ else
+ fun_l19_n462(x)
+ end
+end
+
+def fun_l18_n182(x)
+ if (x < 1)
+ fun_l19_n172(x)
+ else
+ fun_l19_n91(x)
+ end
+end
+
+def fun_l18_n183(x)
+ if (x < 1)
+ fun_l19_n549(x)
+ else
+ fun_l19_n126(x)
+ end
+end
+
+def fun_l18_n184(x)
+ if (x < 1)
+ fun_l19_n484(x)
+ else
+ fun_l19_n45(x)
+ end
+end
+
+def fun_l18_n185(x)
+ if (x < 1)
+ fun_l19_n237(x)
+ else
+ fun_l19_n651(x)
+ end
+end
+
+def fun_l18_n186(x)
+ if (x < 1)
+ fun_l19_n458(x)
+ else
+ fun_l19_n466(x)
+ end
+end
+
+def fun_l18_n187(x)
+ if (x < 1)
+ fun_l19_n856(x)
+ else
+ fun_l19_n184(x)
+ end
+end
+
+def fun_l18_n188(x)
+ if (x < 1)
+ fun_l19_n432(x)
+ else
+ fun_l19_n251(x)
+ end
+end
+
+def fun_l18_n189(x)
+ if (x < 1)
+ fun_l19_n719(x)
+ else
+ fun_l19_n442(x)
+ end
+end
+
+def fun_l18_n190(x)
+ if (x < 1)
+ fun_l19_n516(x)
+ else
+ fun_l19_n331(x)
+ end
+end
+
+def fun_l18_n191(x)
+ if (x < 1)
+ fun_l19_n342(x)
+ else
+ fun_l19_n750(x)
+ end
+end
+
+def fun_l18_n192(x)
+ if (x < 1)
+ fun_l19_n820(x)
+ else
+ fun_l19_n137(x)
+ end
+end
+
+def fun_l18_n193(x)
+ if (x < 1)
+ fun_l19_n514(x)
+ else
+ fun_l19_n594(x)
+ end
+end
+
+def fun_l18_n194(x)
+ if (x < 1)
+ fun_l19_n744(x)
+ else
+ fun_l19_n605(x)
+ end
+end
+
+def fun_l18_n195(x)
+ if (x < 1)
+ fun_l19_n428(x)
+ else
+ fun_l19_n528(x)
+ end
+end
+
+def fun_l18_n196(x)
+ if (x < 1)
+ fun_l19_n291(x)
+ else
+ fun_l19_n382(x)
+ end
+end
+
+def fun_l18_n197(x)
+ if (x < 1)
+ fun_l19_n238(x)
+ else
+ fun_l19_n38(x)
+ end
+end
+
+def fun_l18_n198(x)
+ if (x < 1)
+ fun_l19_n332(x)
+ else
+ fun_l19_n112(x)
+ end
+end
+
+def fun_l18_n199(x)
+ if (x < 1)
+ fun_l19_n703(x)
+ else
+ fun_l19_n108(x)
+ end
+end
+
+def fun_l18_n200(x)
+ if (x < 1)
+ fun_l19_n917(x)
+ else
+ fun_l19_n629(x)
+ end
+end
+
+def fun_l18_n201(x)
+ if (x < 1)
+ fun_l19_n402(x)
+ else
+ fun_l19_n223(x)
+ end
+end
+
+def fun_l18_n202(x)
+ if (x < 1)
+ fun_l19_n9(x)
+ else
+ fun_l19_n318(x)
+ end
+end
+
+def fun_l18_n203(x)
+ if (x < 1)
+ fun_l19_n560(x)
+ else
+ fun_l19_n77(x)
+ end
+end
+
+def fun_l18_n204(x)
+ if (x < 1)
+ fun_l19_n379(x)
+ else
+ fun_l19_n903(x)
+ end
+end
+
+def fun_l18_n205(x)
+ if (x < 1)
+ fun_l19_n185(x)
+ else
+ fun_l19_n174(x)
+ end
+end
+
+def fun_l18_n206(x)
+ if (x < 1)
+ fun_l19_n738(x)
+ else
+ fun_l19_n518(x)
+ end
+end
+
+def fun_l18_n207(x)
+ if (x < 1)
+ fun_l19_n343(x)
+ else
+ fun_l19_n567(x)
+ end
+end
+
+def fun_l18_n208(x)
+ if (x < 1)
+ fun_l19_n546(x)
+ else
+ fun_l19_n370(x)
+ end
+end
+
+def fun_l18_n209(x)
+ if (x < 1)
+ fun_l19_n589(x)
+ else
+ fun_l19_n511(x)
+ end
+end
+
+def fun_l18_n210(x)
+ if (x < 1)
+ fun_l19_n507(x)
+ else
+ fun_l19_n912(x)
+ end
+end
+
+def fun_l18_n211(x)
+ if (x < 1)
+ fun_l19_n779(x)
+ else
+ fun_l19_n133(x)
+ end
+end
+
+def fun_l18_n212(x)
+ if (x < 1)
+ fun_l19_n400(x)
+ else
+ fun_l19_n345(x)
+ end
+end
+
+def fun_l18_n213(x)
+ if (x < 1)
+ fun_l19_n214(x)
+ else
+ fun_l19_n393(x)
+ end
+end
+
+def fun_l18_n214(x)
+ if (x < 1)
+ fun_l19_n829(x)
+ else
+ fun_l19_n769(x)
+ end
+end
+
+def fun_l18_n215(x)
+ if (x < 1)
+ fun_l19_n835(x)
+ else
+ fun_l19_n80(x)
+ end
+end
+
+def fun_l18_n216(x)
+ if (x < 1)
+ fun_l19_n640(x)
+ else
+ fun_l19_n836(x)
+ end
+end
+
+def fun_l18_n217(x)
+ if (x < 1)
+ fun_l19_n861(x)
+ else
+ fun_l19_n801(x)
+ end
+end
+
+def fun_l18_n218(x)
+ if (x < 1)
+ fun_l19_n316(x)
+ else
+ fun_l19_n263(x)
+ end
+end
+
+def fun_l18_n219(x)
+ if (x < 1)
+ fun_l19_n231(x)
+ else
+ fun_l19_n315(x)
+ end
+end
+
+def fun_l18_n220(x)
+ if (x < 1)
+ fun_l19_n700(x)
+ else
+ fun_l19_n276(x)
+ end
+end
+
+def fun_l18_n221(x)
+ if (x < 1)
+ fun_l19_n654(x)
+ else
+ fun_l19_n32(x)
+ end
+end
+
+def fun_l18_n222(x)
+ if (x < 1)
+ fun_l19_n758(x)
+ else
+ fun_l19_n598(x)
+ end
+end
+
+def fun_l18_n223(x)
+ if (x < 1)
+ fun_l19_n819(x)
+ else
+ fun_l19_n764(x)
+ end
+end
+
+def fun_l18_n224(x)
+ if (x < 1)
+ fun_l19_n31(x)
+ else
+ fun_l19_n51(x)
+ end
+end
+
+def fun_l18_n225(x)
+ if (x < 1)
+ fun_l19_n704(x)
+ else
+ fun_l19_n932(x)
+ end
+end
+
+def fun_l18_n226(x)
+ if (x < 1)
+ fun_l19_n635(x)
+ else
+ fun_l19_n411(x)
+ end
+end
+
+def fun_l18_n227(x)
+ if (x < 1)
+ fun_l19_n368(x)
+ else
+ fun_l19_n472(x)
+ end
+end
+
+def fun_l18_n228(x)
+ if (x < 1)
+ fun_l19_n928(x)
+ else
+ fun_l19_n357(x)
+ end
+end
+
+def fun_l18_n229(x)
+ if (x < 1)
+ fun_l19_n503(x)
+ else
+ fun_l19_n495(x)
+ end
+end
+
+def fun_l18_n230(x)
+ if (x < 1)
+ fun_l19_n497(x)
+ else
+ fun_l19_n73(x)
+ end
+end
+
+def fun_l18_n231(x)
+ if (x < 1)
+ fun_l19_n718(x)
+ else
+ fun_l19_n971(x)
+ end
+end
+
+def fun_l18_n232(x)
+ if (x < 1)
+ fun_l19_n314(x)
+ else
+ fun_l19_n100(x)
+ end
+end
+
+def fun_l18_n233(x)
+ if (x < 1)
+ fun_l19_n490(x)
+ else
+ fun_l19_n569(x)
+ end
+end
+
+def fun_l18_n234(x)
+ if (x < 1)
+ fun_l19_n309(x)
+ else
+ fun_l19_n806(x)
+ end
+end
+
+def fun_l18_n235(x)
+ if (x < 1)
+ fun_l19_n839(x)
+ else
+ fun_l19_n388(x)
+ end
+end
+
+def fun_l18_n236(x)
+ if (x < 1)
+ fun_l19_n158(x)
+ else
+ fun_l19_n438(x)
+ end
+end
+
+def fun_l18_n237(x)
+ if (x < 1)
+ fun_l19_n181(x)
+ else
+ fun_l19_n728(x)
+ end
+end
+
+def fun_l18_n238(x)
+ if (x < 1)
+ fun_l19_n238(x)
+ else
+ fun_l19_n41(x)
+ end
+end
+
+def fun_l18_n239(x)
+ if (x < 1)
+ fun_l19_n342(x)
+ else
+ fun_l19_n756(x)
+ end
+end
+
+def fun_l18_n240(x)
+ if (x < 1)
+ fun_l19_n873(x)
+ else
+ fun_l19_n274(x)
+ end
+end
+
+def fun_l18_n241(x)
+ if (x < 1)
+ fun_l19_n273(x)
+ else
+ fun_l19_n740(x)
+ end
+end
+
+def fun_l18_n242(x)
+ if (x < 1)
+ fun_l19_n256(x)
+ else
+ fun_l19_n99(x)
+ end
+end
+
+def fun_l18_n243(x)
+ if (x < 1)
+ fun_l19_n482(x)
+ else
+ fun_l19_n569(x)
+ end
+end
+
+def fun_l18_n244(x)
+ if (x < 1)
+ fun_l19_n598(x)
+ else
+ fun_l19_n393(x)
+ end
+end
+
+def fun_l18_n245(x)
+ if (x < 1)
+ fun_l19_n320(x)
+ else
+ fun_l19_n164(x)
+ end
+end
+
+def fun_l18_n246(x)
+ if (x < 1)
+ fun_l19_n803(x)
+ else
+ fun_l19_n240(x)
+ end
+end
+
+def fun_l18_n247(x)
+ if (x < 1)
+ fun_l19_n790(x)
+ else
+ fun_l19_n55(x)
+ end
+end
+
+def fun_l18_n248(x)
+ if (x < 1)
+ fun_l19_n193(x)
+ else
+ fun_l19_n754(x)
+ end
+end
+
+def fun_l18_n249(x)
+ if (x < 1)
+ fun_l19_n122(x)
+ else
+ fun_l19_n841(x)
+ end
+end
+
+def fun_l18_n250(x)
+ if (x < 1)
+ fun_l19_n724(x)
+ else
+ fun_l19_n359(x)
+ end
+end
+
+def fun_l18_n251(x)
+ if (x < 1)
+ fun_l19_n497(x)
+ else
+ fun_l19_n777(x)
+ end
+end
+
+def fun_l18_n252(x)
+ if (x < 1)
+ fun_l19_n986(x)
+ else
+ fun_l19_n666(x)
+ end
+end
+
+def fun_l18_n253(x)
+ if (x < 1)
+ fun_l19_n864(x)
+ else
+ fun_l19_n320(x)
+ end
+end
+
+def fun_l18_n254(x)
+ if (x < 1)
+ fun_l19_n386(x)
+ else
+ fun_l19_n582(x)
+ end
+end
+
+def fun_l18_n255(x)
+ if (x < 1)
+ fun_l19_n434(x)
+ else
+ fun_l19_n224(x)
+ end
+end
+
+def fun_l18_n256(x)
+ if (x < 1)
+ fun_l19_n921(x)
+ else
+ fun_l19_n8(x)
+ end
+end
+
+def fun_l18_n257(x)
+ if (x < 1)
+ fun_l19_n789(x)
+ else
+ fun_l19_n546(x)
+ end
+end
+
+def fun_l18_n258(x)
+ if (x < 1)
+ fun_l19_n324(x)
+ else
+ fun_l19_n987(x)
+ end
+end
+
+def fun_l18_n259(x)
+ if (x < 1)
+ fun_l19_n279(x)
+ else
+ fun_l19_n180(x)
+ end
+end
+
+def fun_l18_n260(x)
+ if (x < 1)
+ fun_l19_n596(x)
+ else
+ fun_l19_n670(x)
+ end
+end
+
+def fun_l18_n261(x)
+ if (x < 1)
+ fun_l19_n940(x)
+ else
+ fun_l19_n982(x)
+ end
+end
+
+def fun_l18_n262(x)
+ if (x < 1)
+ fun_l19_n54(x)
+ else
+ fun_l19_n342(x)
+ end
+end
+
+def fun_l18_n263(x)
+ if (x < 1)
+ fun_l19_n815(x)
+ else
+ fun_l19_n663(x)
+ end
+end
+
+def fun_l18_n264(x)
+ if (x < 1)
+ fun_l19_n794(x)
+ else
+ fun_l19_n251(x)
+ end
+end
+
+def fun_l18_n265(x)
+ if (x < 1)
+ fun_l19_n485(x)
+ else
+ fun_l19_n896(x)
+ end
+end
+
+def fun_l18_n266(x)
+ if (x < 1)
+ fun_l19_n346(x)
+ else
+ fun_l19_n151(x)
+ end
+end
+
+def fun_l18_n267(x)
+ if (x < 1)
+ fun_l19_n162(x)
+ else
+ fun_l19_n395(x)
+ end
+end
+
+def fun_l18_n268(x)
+ if (x < 1)
+ fun_l19_n76(x)
+ else
+ fun_l19_n25(x)
+ end
+end
+
+def fun_l18_n269(x)
+ if (x < 1)
+ fun_l19_n943(x)
+ else
+ fun_l19_n587(x)
+ end
+end
+
+def fun_l18_n270(x)
+ if (x < 1)
+ fun_l19_n663(x)
+ else
+ fun_l19_n255(x)
+ end
+end
+
+def fun_l18_n271(x)
+ if (x < 1)
+ fun_l19_n307(x)
+ else
+ fun_l19_n261(x)
+ end
+end
+
+def fun_l18_n272(x)
+ if (x < 1)
+ fun_l19_n478(x)
+ else
+ fun_l19_n600(x)
+ end
+end
+
+def fun_l18_n273(x)
+ if (x < 1)
+ fun_l19_n345(x)
+ else
+ fun_l19_n877(x)
+ end
+end
+
+def fun_l18_n274(x)
+ if (x < 1)
+ fun_l19_n637(x)
+ else
+ fun_l19_n27(x)
+ end
+end
+
+def fun_l18_n275(x)
+ if (x < 1)
+ fun_l19_n752(x)
+ else
+ fun_l19_n946(x)
+ end
+end
+
+def fun_l18_n276(x)
+ if (x < 1)
+ fun_l19_n571(x)
+ else
+ fun_l19_n973(x)
+ end
+end
+
+def fun_l18_n277(x)
+ if (x < 1)
+ fun_l19_n274(x)
+ else
+ fun_l19_n673(x)
+ end
+end
+
+def fun_l18_n278(x)
+ if (x < 1)
+ fun_l19_n922(x)
+ else
+ fun_l19_n826(x)
+ end
+end
+
+def fun_l18_n279(x)
+ if (x < 1)
+ fun_l19_n294(x)
+ else
+ fun_l19_n236(x)
+ end
+end
+
+def fun_l18_n280(x)
+ if (x < 1)
+ fun_l19_n661(x)
+ else
+ fun_l19_n531(x)
+ end
+end
+
+def fun_l18_n281(x)
+ if (x < 1)
+ fun_l19_n295(x)
+ else
+ fun_l19_n961(x)
+ end
+end
+
+def fun_l18_n282(x)
+ if (x < 1)
+ fun_l19_n902(x)
+ else
+ fun_l19_n364(x)
+ end
+end
+
+def fun_l18_n283(x)
+ if (x < 1)
+ fun_l19_n147(x)
+ else
+ fun_l19_n709(x)
+ end
+end
+
+def fun_l18_n284(x)
+ if (x < 1)
+ fun_l19_n394(x)
+ else
+ fun_l19_n757(x)
+ end
+end
+
+def fun_l18_n285(x)
+ if (x < 1)
+ fun_l19_n372(x)
+ else
+ fun_l19_n45(x)
+ end
+end
+
+def fun_l18_n286(x)
+ if (x < 1)
+ fun_l19_n323(x)
+ else
+ fun_l19_n128(x)
+ end
+end
+
+def fun_l18_n287(x)
+ if (x < 1)
+ fun_l19_n50(x)
+ else
+ fun_l19_n650(x)
+ end
+end
+
+def fun_l18_n288(x)
+ if (x < 1)
+ fun_l19_n300(x)
+ else
+ fun_l19_n308(x)
+ end
+end
+
+def fun_l18_n289(x)
+ if (x < 1)
+ fun_l19_n2(x)
+ else
+ fun_l19_n27(x)
+ end
+end
+
+def fun_l18_n290(x)
+ if (x < 1)
+ fun_l19_n341(x)
+ else
+ fun_l19_n281(x)
+ end
+end
+
+def fun_l18_n291(x)
+ if (x < 1)
+ fun_l19_n797(x)
+ else
+ fun_l19_n575(x)
+ end
+end
+
+def fun_l18_n292(x)
+ if (x < 1)
+ fun_l19_n740(x)
+ else
+ fun_l19_n772(x)
+ end
+end
+
+def fun_l18_n293(x)
+ if (x < 1)
+ fun_l19_n707(x)
+ else
+ fun_l19_n456(x)
+ end
+end
+
+def fun_l18_n294(x)
+ if (x < 1)
+ fun_l19_n714(x)
+ else
+ fun_l19_n601(x)
+ end
+end
+
+def fun_l18_n295(x)
+ if (x < 1)
+ fun_l19_n298(x)
+ else
+ fun_l19_n367(x)
+ end
+end
+
+def fun_l18_n296(x)
+ if (x < 1)
+ fun_l19_n0(x)
+ else
+ fun_l19_n970(x)
+ end
+end
+
+def fun_l18_n297(x)
+ if (x < 1)
+ fun_l19_n703(x)
+ else
+ fun_l19_n673(x)
+ end
+end
+
+def fun_l18_n298(x)
+ if (x < 1)
+ fun_l19_n890(x)
+ else
+ fun_l19_n932(x)
+ end
+end
+
+def fun_l18_n299(x)
+ if (x < 1)
+ fun_l19_n152(x)
+ else
+ fun_l19_n784(x)
+ end
+end
+
+def fun_l18_n300(x)
+ if (x < 1)
+ fun_l19_n24(x)
+ else
+ fun_l19_n449(x)
+ end
+end
+
+def fun_l18_n301(x)
+ if (x < 1)
+ fun_l19_n161(x)
+ else
+ fun_l19_n51(x)
+ end
+end
+
+def fun_l18_n302(x)
+ if (x < 1)
+ fun_l19_n695(x)
+ else
+ fun_l19_n604(x)
+ end
+end
+
+def fun_l18_n303(x)
+ if (x < 1)
+ fun_l19_n415(x)
+ else
+ fun_l19_n752(x)
+ end
+end
+
+def fun_l18_n304(x)
+ if (x < 1)
+ fun_l19_n737(x)
+ else
+ fun_l19_n944(x)
+ end
+end
+
+def fun_l18_n305(x)
+ if (x < 1)
+ fun_l19_n833(x)
+ else
+ fun_l19_n98(x)
+ end
+end
+
+def fun_l18_n306(x)
+ if (x < 1)
+ fun_l19_n598(x)
+ else
+ fun_l19_n601(x)
+ end
+end
+
+def fun_l18_n307(x)
+ if (x < 1)
+ fun_l19_n728(x)
+ else
+ fun_l19_n116(x)
+ end
+end
+
+def fun_l18_n308(x)
+ if (x < 1)
+ fun_l19_n892(x)
+ else
+ fun_l19_n826(x)
+ end
+end
+
+def fun_l18_n309(x)
+ if (x < 1)
+ fun_l19_n926(x)
+ else
+ fun_l19_n119(x)
+ end
+end
+
+def fun_l18_n310(x)
+ if (x < 1)
+ fun_l19_n194(x)
+ else
+ fun_l19_n331(x)
+ end
+end
+
+def fun_l18_n311(x)
+ if (x < 1)
+ fun_l19_n490(x)
+ else
+ fun_l19_n401(x)
+ end
+end
+
+def fun_l18_n312(x)
+ if (x < 1)
+ fun_l19_n727(x)
+ else
+ fun_l19_n193(x)
+ end
+end
+
+def fun_l18_n313(x)
+ if (x < 1)
+ fun_l19_n643(x)
+ else
+ fun_l19_n327(x)
+ end
+end
+
+def fun_l18_n314(x)
+ if (x < 1)
+ fun_l19_n747(x)
+ else
+ fun_l19_n938(x)
+ end
+end
+
+def fun_l18_n315(x)
+ if (x < 1)
+ fun_l19_n153(x)
+ else
+ fun_l19_n438(x)
+ end
+end
+
+def fun_l18_n316(x)
+ if (x < 1)
+ fun_l19_n719(x)
+ else
+ fun_l19_n471(x)
+ end
+end
+
+def fun_l18_n317(x)
+ if (x < 1)
+ fun_l19_n105(x)
+ else
+ fun_l19_n832(x)
+ end
+end
+
+def fun_l18_n318(x)
+ if (x < 1)
+ fun_l19_n652(x)
+ else
+ fun_l19_n826(x)
+ end
+end
+
+def fun_l18_n319(x)
+ if (x < 1)
+ fun_l19_n3(x)
+ else
+ fun_l19_n250(x)
+ end
+end
+
+def fun_l18_n320(x)
+ if (x < 1)
+ fun_l19_n854(x)
+ else
+ fun_l19_n371(x)
+ end
+end
+
+def fun_l18_n321(x)
+ if (x < 1)
+ fun_l19_n241(x)
+ else
+ fun_l19_n51(x)
+ end
+end
+
+def fun_l18_n322(x)
+ if (x < 1)
+ fun_l19_n832(x)
+ else
+ fun_l19_n897(x)
+ end
+end
+
+def fun_l18_n323(x)
+ if (x < 1)
+ fun_l19_n472(x)
+ else
+ fun_l19_n838(x)
+ end
+end
+
+def fun_l18_n324(x)
+ if (x < 1)
+ fun_l19_n844(x)
+ else
+ fun_l19_n228(x)
+ end
+end
+
+def fun_l18_n325(x)
+ if (x < 1)
+ fun_l19_n132(x)
+ else
+ fun_l19_n424(x)
+ end
+end
+
+def fun_l18_n326(x)
+ if (x < 1)
+ fun_l19_n311(x)
+ else
+ fun_l19_n388(x)
+ end
+end
+
+def fun_l18_n327(x)
+ if (x < 1)
+ fun_l19_n709(x)
+ else
+ fun_l19_n98(x)
+ end
+end
+
+def fun_l18_n328(x)
+ if (x < 1)
+ fun_l19_n342(x)
+ else
+ fun_l19_n743(x)
+ end
+end
+
+def fun_l18_n329(x)
+ if (x < 1)
+ fun_l19_n984(x)
+ else
+ fun_l19_n762(x)
+ end
+end
+
+def fun_l18_n330(x)
+ if (x < 1)
+ fun_l19_n358(x)
+ else
+ fun_l19_n624(x)
+ end
+end
+
+def fun_l18_n331(x)
+ if (x < 1)
+ fun_l19_n574(x)
+ else
+ fun_l19_n35(x)
+ end
+end
+
+def fun_l18_n332(x)
+ if (x < 1)
+ fun_l19_n564(x)
+ else
+ fun_l19_n629(x)
+ end
+end
+
+def fun_l18_n333(x)
+ if (x < 1)
+ fun_l19_n70(x)
+ else
+ fun_l19_n150(x)
+ end
+end
+
+def fun_l18_n334(x)
+ if (x < 1)
+ fun_l19_n538(x)
+ else
+ fun_l19_n239(x)
+ end
+end
+
+def fun_l18_n335(x)
+ if (x < 1)
+ fun_l19_n818(x)
+ else
+ fun_l19_n878(x)
+ end
+end
+
+def fun_l18_n336(x)
+ if (x < 1)
+ fun_l19_n233(x)
+ else
+ fun_l19_n286(x)
+ end
+end
+
+def fun_l18_n337(x)
+ if (x < 1)
+ fun_l19_n731(x)
+ else
+ fun_l19_n416(x)
+ end
+end
+
+def fun_l18_n338(x)
+ if (x < 1)
+ fun_l19_n917(x)
+ else
+ fun_l19_n710(x)
+ end
+end
+
+def fun_l18_n339(x)
+ if (x < 1)
+ fun_l19_n638(x)
+ else
+ fun_l19_n187(x)
+ end
+end
+
+def fun_l18_n340(x)
+ if (x < 1)
+ fun_l19_n922(x)
+ else
+ fun_l19_n767(x)
+ end
+end
+
+def fun_l18_n341(x)
+ if (x < 1)
+ fun_l19_n9(x)
+ else
+ fun_l19_n708(x)
+ end
+end
+
+def fun_l18_n342(x)
+ if (x < 1)
+ fun_l19_n76(x)
+ else
+ fun_l19_n479(x)
+ end
+end
+
+def fun_l18_n343(x)
+ if (x < 1)
+ fun_l19_n679(x)
+ else
+ fun_l19_n85(x)
+ end
+end
+
+def fun_l18_n344(x)
+ if (x < 1)
+ fun_l19_n725(x)
+ else
+ fun_l19_n809(x)
+ end
+end
+
+def fun_l18_n345(x)
+ if (x < 1)
+ fun_l19_n680(x)
+ else
+ fun_l19_n416(x)
+ end
+end
+
+def fun_l18_n346(x)
+ if (x < 1)
+ fun_l19_n66(x)
+ else
+ fun_l19_n36(x)
+ end
+end
+
+def fun_l18_n347(x)
+ if (x < 1)
+ fun_l19_n420(x)
+ else
+ fun_l19_n879(x)
+ end
+end
+
+def fun_l18_n348(x)
+ if (x < 1)
+ fun_l19_n653(x)
+ else
+ fun_l19_n634(x)
+ end
+end
+
+def fun_l18_n349(x)
+ if (x < 1)
+ fun_l19_n134(x)
+ else
+ fun_l19_n840(x)
+ end
+end
+
+def fun_l18_n350(x)
+ if (x < 1)
+ fun_l19_n21(x)
+ else
+ fun_l19_n843(x)
+ end
+end
+
+def fun_l18_n351(x)
+ if (x < 1)
+ fun_l19_n917(x)
+ else
+ fun_l19_n101(x)
+ end
+end
+
+def fun_l18_n352(x)
+ if (x < 1)
+ fun_l19_n541(x)
+ else
+ fun_l19_n646(x)
+ end
+end
+
+def fun_l18_n353(x)
+ if (x < 1)
+ fun_l19_n555(x)
+ else
+ fun_l19_n648(x)
+ end
+end
+
+def fun_l18_n354(x)
+ if (x < 1)
+ fun_l19_n431(x)
+ else
+ fun_l19_n736(x)
+ end
+end
+
+def fun_l18_n355(x)
+ if (x < 1)
+ fun_l19_n294(x)
+ else
+ fun_l19_n512(x)
+ end
+end
+
+def fun_l18_n356(x)
+ if (x < 1)
+ fun_l19_n852(x)
+ else
+ fun_l19_n348(x)
+ end
+end
+
+def fun_l18_n357(x)
+ if (x < 1)
+ fun_l19_n670(x)
+ else
+ fun_l19_n997(x)
+ end
+end
+
+def fun_l18_n358(x)
+ if (x < 1)
+ fun_l19_n595(x)
+ else
+ fun_l19_n544(x)
+ end
+end
+
+def fun_l18_n359(x)
+ if (x < 1)
+ fun_l19_n13(x)
+ else
+ fun_l19_n838(x)
+ end
+end
+
+def fun_l18_n360(x)
+ if (x < 1)
+ fun_l19_n518(x)
+ else
+ fun_l19_n642(x)
+ end
+end
+
+def fun_l18_n361(x)
+ if (x < 1)
+ fun_l19_n333(x)
+ else
+ fun_l19_n59(x)
+ end
+end
+
+def fun_l18_n362(x)
+ if (x < 1)
+ fun_l19_n670(x)
+ else
+ fun_l19_n844(x)
+ end
+end
+
+def fun_l18_n363(x)
+ if (x < 1)
+ fun_l19_n14(x)
+ else
+ fun_l19_n932(x)
+ end
+end
+
+def fun_l18_n364(x)
+ if (x < 1)
+ fun_l19_n508(x)
+ else
+ fun_l19_n466(x)
+ end
+end
+
+def fun_l18_n365(x)
+ if (x < 1)
+ fun_l19_n177(x)
+ else
+ fun_l19_n365(x)
+ end
+end
+
+def fun_l18_n366(x)
+ if (x < 1)
+ fun_l19_n367(x)
+ else
+ fun_l19_n205(x)
+ end
+end
+
+def fun_l18_n367(x)
+ if (x < 1)
+ fun_l19_n353(x)
+ else
+ fun_l19_n328(x)
+ end
+end
+
+def fun_l18_n368(x)
+ if (x < 1)
+ fun_l19_n801(x)
+ else
+ fun_l19_n420(x)
+ end
+end
+
+def fun_l18_n369(x)
+ if (x < 1)
+ fun_l19_n162(x)
+ else
+ fun_l19_n670(x)
+ end
+end
+
+def fun_l18_n370(x)
+ if (x < 1)
+ fun_l19_n908(x)
+ else
+ fun_l19_n852(x)
+ end
+end
+
+def fun_l18_n371(x)
+ if (x < 1)
+ fun_l19_n47(x)
+ else
+ fun_l19_n130(x)
+ end
+end
+
+def fun_l18_n372(x)
+ if (x < 1)
+ fun_l19_n774(x)
+ else
+ fun_l19_n792(x)
+ end
+end
+
+def fun_l18_n373(x)
+ if (x < 1)
+ fun_l19_n124(x)
+ else
+ fun_l19_n665(x)
+ end
+end
+
+def fun_l18_n374(x)
+ if (x < 1)
+ fun_l19_n24(x)
+ else
+ fun_l19_n371(x)
+ end
+end
+
+def fun_l18_n375(x)
+ if (x < 1)
+ fun_l19_n484(x)
+ else
+ fun_l19_n708(x)
+ end
+end
+
+def fun_l18_n376(x)
+ if (x < 1)
+ fun_l19_n810(x)
+ else
+ fun_l19_n856(x)
+ end
+end
+
+def fun_l18_n377(x)
+ if (x < 1)
+ fun_l19_n23(x)
+ else
+ fun_l19_n817(x)
+ end
+end
+
+def fun_l18_n378(x)
+ if (x < 1)
+ fun_l19_n827(x)
+ else
+ fun_l19_n639(x)
+ end
+end
+
+def fun_l18_n379(x)
+ if (x < 1)
+ fun_l19_n557(x)
+ else
+ fun_l19_n268(x)
+ end
+end
+
+def fun_l18_n380(x)
+ if (x < 1)
+ fun_l19_n885(x)
+ else
+ fun_l19_n421(x)
+ end
+end
+
+def fun_l18_n381(x)
+ if (x < 1)
+ fun_l19_n543(x)
+ else
+ fun_l19_n230(x)
+ end
+end
+
+def fun_l18_n382(x)
+ if (x < 1)
+ fun_l19_n978(x)
+ else
+ fun_l19_n848(x)
+ end
+end
+
+def fun_l18_n383(x)
+ if (x < 1)
+ fun_l19_n31(x)
+ else
+ fun_l19_n731(x)
+ end
+end
+
+def fun_l18_n384(x)
+ if (x < 1)
+ fun_l19_n20(x)
+ else
+ fun_l19_n149(x)
+ end
+end
+
+def fun_l18_n385(x)
+ if (x < 1)
+ fun_l19_n650(x)
+ else
+ fun_l19_n268(x)
+ end
+end
+
+def fun_l18_n386(x)
+ if (x < 1)
+ fun_l19_n491(x)
+ else
+ fun_l19_n644(x)
+ end
+end
+
+def fun_l18_n387(x)
+ if (x < 1)
+ fun_l19_n537(x)
+ else
+ fun_l19_n400(x)
+ end
+end
+
+def fun_l18_n388(x)
+ if (x < 1)
+ fun_l19_n939(x)
+ else
+ fun_l19_n861(x)
+ end
+end
+
+def fun_l18_n389(x)
+ if (x < 1)
+ fun_l19_n728(x)
+ else
+ fun_l19_n877(x)
+ end
+end
+
+def fun_l18_n390(x)
+ if (x < 1)
+ fun_l19_n226(x)
+ else
+ fun_l19_n288(x)
+ end
+end
+
+def fun_l18_n391(x)
+ if (x < 1)
+ fun_l19_n921(x)
+ else
+ fun_l19_n754(x)
+ end
+end
+
+def fun_l18_n392(x)
+ if (x < 1)
+ fun_l19_n71(x)
+ else
+ fun_l19_n844(x)
+ end
+end
+
+def fun_l18_n393(x)
+ if (x < 1)
+ fun_l19_n310(x)
+ else
+ fun_l19_n442(x)
+ end
+end
+
+def fun_l18_n394(x)
+ if (x < 1)
+ fun_l19_n539(x)
+ else
+ fun_l19_n933(x)
+ end
+end
+
+def fun_l18_n395(x)
+ if (x < 1)
+ fun_l19_n849(x)
+ else
+ fun_l19_n719(x)
+ end
+end
+
+def fun_l18_n396(x)
+ if (x < 1)
+ fun_l19_n922(x)
+ else
+ fun_l19_n435(x)
+ end
+end
+
+def fun_l18_n397(x)
+ if (x < 1)
+ fun_l19_n916(x)
+ else
+ fun_l19_n399(x)
+ end
+end
+
+def fun_l18_n398(x)
+ if (x < 1)
+ fun_l19_n820(x)
+ else
+ fun_l19_n650(x)
+ end
+end
+
+def fun_l18_n399(x)
+ if (x < 1)
+ fun_l19_n497(x)
+ else
+ fun_l19_n678(x)
+ end
+end
+
+def fun_l18_n400(x)
+ if (x < 1)
+ fun_l19_n562(x)
+ else
+ fun_l19_n392(x)
+ end
+end
+
+def fun_l18_n401(x)
+ if (x < 1)
+ fun_l19_n298(x)
+ else
+ fun_l19_n61(x)
+ end
+end
+
+def fun_l18_n402(x)
+ if (x < 1)
+ fun_l19_n803(x)
+ else
+ fun_l19_n535(x)
+ end
+end
+
+def fun_l18_n403(x)
+ if (x < 1)
+ fun_l19_n335(x)
+ else
+ fun_l19_n431(x)
+ end
+end
+
+def fun_l18_n404(x)
+ if (x < 1)
+ fun_l19_n558(x)
+ else
+ fun_l19_n821(x)
+ end
+end
+
+def fun_l18_n405(x)
+ if (x < 1)
+ fun_l19_n608(x)
+ else
+ fun_l19_n415(x)
+ end
+end
+
+def fun_l18_n406(x)
+ if (x < 1)
+ fun_l19_n709(x)
+ else
+ fun_l19_n635(x)
+ end
+end
+
+def fun_l18_n407(x)
+ if (x < 1)
+ fun_l19_n432(x)
+ else
+ fun_l19_n923(x)
+ end
+end
+
+def fun_l18_n408(x)
+ if (x < 1)
+ fun_l19_n612(x)
+ else
+ fun_l19_n386(x)
+ end
+end
+
+def fun_l18_n409(x)
+ if (x < 1)
+ fun_l19_n1(x)
+ else
+ fun_l19_n679(x)
+ end
+end
+
+def fun_l18_n410(x)
+ if (x < 1)
+ fun_l19_n998(x)
+ else
+ fun_l19_n969(x)
+ end
+end
+
+def fun_l18_n411(x)
+ if (x < 1)
+ fun_l19_n210(x)
+ else
+ fun_l19_n642(x)
+ end
+end
+
+def fun_l18_n412(x)
+ if (x < 1)
+ fun_l19_n902(x)
+ else
+ fun_l19_n591(x)
+ end
+end
+
+def fun_l18_n413(x)
+ if (x < 1)
+ fun_l19_n417(x)
+ else
+ fun_l19_n192(x)
+ end
+end
+
+def fun_l18_n414(x)
+ if (x < 1)
+ fun_l19_n543(x)
+ else
+ fun_l19_n277(x)
+ end
+end
+
+def fun_l18_n415(x)
+ if (x < 1)
+ fun_l19_n145(x)
+ else
+ fun_l19_n157(x)
+ end
+end
+
+def fun_l18_n416(x)
+ if (x < 1)
+ fun_l19_n696(x)
+ else
+ fun_l19_n453(x)
+ end
+end
+
+def fun_l18_n417(x)
+ if (x < 1)
+ fun_l19_n593(x)
+ else
+ fun_l19_n683(x)
+ end
+end
+
+def fun_l18_n418(x)
+ if (x < 1)
+ fun_l19_n459(x)
+ else
+ fun_l19_n292(x)
+ end
+end
+
+def fun_l18_n419(x)
+ if (x < 1)
+ fun_l19_n37(x)
+ else
+ fun_l19_n281(x)
+ end
+end
+
+def fun_l18_n420(x)
+ if (x < 1)
+ fun_l19_n39(x)
+ else
+ fun_l19_n642(x)
+ end
+end
+
+def fun_l18_n421(x)
+ if (x < 1)
+ fun_l19_n942(x)
+ else
+ fun_l19_n997(x)
+ end
+end
+
+def fun_l18_n422(x)
+ if (x < 1)
+ fun_l19_n18(x)
+ else
+ fun_l19_n301(x)
+ end
+end
+
+def fun_l18_n423(x)
+ if (x < 1)
+ fun_l19_n473(x)
+ else
+ fun_l19_n231(x)
+ end
+end
+
+def fun_l18_n424(x)
+ if (x < 1)
+ fun_l19_n331(x)
+ else
+ fun_l19_n110(x)
+ end
+end
+
+def fun_l18_n425(x)
+ if (x < 1)
+ fun_l19_n786(x)
+ else
+ fun_l19_n991(x)
+ end
+end
+
+def fun_l18_n426(x)
+ if (x < 1)
+ fun_l19_n440(x)
+ else
+ fun_l19_n17(x)
+ end
+end
+
+def fun_l18_n427(x)
+ if (x < 1)
+ fun_l19_n294(x)
+ else
+ fun_l19_n3(x)
+ end
+end
+
+def fun_l18_n428(x)
+ if (x < 1)
+ fun_l19_n369(x)
+ else
+ fun_l19_n576(x)
+ end
+end
+
+def fun_l18_n429(x)
+ if (x < 1)
+ fun_l19_n818(x)
+ else
+ fun_l19_n236(x)
+ end
+end
+
+def fun_l18_n430(x)
+ if (x < 1)
+ fun_l19_n360(x)
+ else
+ fun_l19_n443(x)
+ end
+end
+
+def fun_l18_n431(x)
+ if (x < 1)
+ fun_l19_n432(x)
+ else
+ fun_l19_n863(x)
+ end
+end
+
+def fun_l18_n432(x)
+ if (x < 1)
+ fun_l19_n591(x)
+ else
+ fun_l19_n167(x)
+ end
+end
+
+def fun_l18_n433(x)
+ if (x < 1)
+ fun_l19_n955(x)
+ else
+ fun_l19_n265(x)
+ end
+end
+
+def fun_l18_n434(x)
+ if (x < 1)
+ fun_l19_n374(x)
+ else
+ fun_l19_n812(x)
+ end
+end
+
+def fun_l18_n435(x)
+ if (x < 1)
+ fun_l19_n712(x)
+ else
+ fun_l19_n603(x)
+ end
+end
+
+def fun_l18_n436(x)
+ if (x < 1)
+ fun_l19_n750(x)
+ else
+ fun_l19_n852(x)
+ end
+end
+
+def fun_l18_n437(x)
+ if (x < 1)
+ fun_l19_n393(x)
+ else
+ fun_l19_n121(x)
+ end
+end
+
+def fun_l18_n438(x)
+ if (x < 1)
+ fun_l19_n555(x)
+ else
+ fun_l19_n33(x)
+ end
+end
+
+def fun_l18_n439(x)
+ if (x < 1)
+ fun_l19_n872(x)
+ else
+ fun_l19_n841(x)
+ end
+end
+
+def fun_l18_n440(x)
+ if (x < 1)
+ fun_l19_n828(x)
+ else
+ fun_l19_n549(x)
+ end
+end
+
+def fun_l18_n441(x)
+ if (x < 1)
+ fun_l19_n647(x)
+ else
+ fun_l19_n795(x)
+ end
+end
+
+def fun_l18_n442(x)
+ if (x < 1)
+ fun_l19_n609(x)
+ else
+ fun_l19_n837(x)
+ end
+end
+
+def fun_l18_n443(x)
+ if (x < 1)
+ fun_l19_n977(x)
+ else
+ fun_l19_n670(x)
+ end
+end
+
+def fun_l18_n444(x)
+ if (x < 1)
+ fun_l19_n649(x)
+ else
+ fun_l19_n912(x)
+ end
+end
+
+def fun_l18_n445(x)
+ if (x < 1)
+ fun_l19_n856(x)
+ else
+ fun_l19_n994(x)
+ end
+end
+
+def fun_l18_n446(x)
+ if (x < 1)
+ fun_l19_n868(x)
+ else
+ fun_l19_n105(x)
+ end
+end
+
+def fun_l18_n447(x)
+ if (x < 1)
+ fun_l19_n405(x)
+ else
+ fun_l19_n318(x)
+ end
+end
+
+def fun_l18_n448(x)
+ if (x < 1)
+ fun_l19_n966(x)
+ else
+ fun_l19_n214(x)
+ end
+end
+
+def fun_l18_n449(x)
+ if (x < 1)
+ fun_l19_n458(x)
+ else
+ fun_l19_n650(x)
+ end
+end
+
+def fun_l18_n450(x)
+ if (x < 1)
+ fun_l19_n875(x)
+ else
+ fun_l19_n697(x)
+ end
+end
+
+def fun_l18_n451(x)
+ if (x < 1)
+ fun_l19_n799(x)
+ else
+ fun_l19_n661(x)
+ end
+end
+
+def fun_l18_n452(x)
+ if (x < 1)
+ fun_l19_n677(x)
+ else
+ fun_l19_n750(x)
+ end
+end
+
+def fun_l18_n453(x)
+ if (x < 1)
+ fun_l19_n530(x)
+ else
+ fun_l19_n110(x)
+ end
+end
+
+def fun_l18_n454(x)
+ if (x < 1)
+ fun_l19_n785(x)
+ else
+ fun_l19_n381(x)
+ end
+end
+
+def fun_l18_n455(x)
+ if (x < 1)
+ fun_l19_n680(x)
+ else
+ fun_l19_n201(x)
+ end
+end
+
+def fun_l18_n456(x)
+ if (x < 1)
+ fun_l19_n246(x)
+ else
+ fun_l19_n972(x)
+ end
+end
+
+def fun_l18_n457(x)
+ if (x < 1)
+ fun_l19_n656(x)
+ else
+ fun_l19_n451(x)
+ end
+end
+
+def fun_l18_n458(x)
+ if (x < 1)
+ fun_l19_n612(x)
+ else
+ fun_l19_n288(x)
+ end
+end
+
+def fun_l18_n459(x)
+ if (x < 1)
+ fun_l19_n612(x)
+ else
+ fun_l19_n150(x)
+ end
+end
+
+def fun_l18_n460(x)
+ if (x < 1)
+ fun_l19_n549(x)
+ else
+ fun_l19_n917(x)
+ end
+end
+
+def fun_l18_n461(x)
+ if (x < 1)
+ fun_l19_n661(x)
+ else
+ fun_l19_n11(x)
+ end
+end
+
+def fun_l18_n462(x)
+ if (x < 1)
+ fun_l19_n172(x)
+ else
+ fun_l19_n561(x)
+ end
+end
+
+def fun_l18_n463(x)
+ if (x < 1)
+ fun_l19_n687(x)
+ else
+ fun_l19_n12(x)
+ end
+end
+
+def fun_l18_n464(x)
+ if (x < 1)
+ fun_l19_n57(x)
+ else
+ fun_l19_n835(x)
+ end
+end
+
+def fun_l18_n465(x)
+ if (x < 1)
+ fun_l19_n116(x)
+ else
+ fun_l19_n993(x)
+ end
+end
+
+def fun_l18_n466(x)
+ if (x < 1)
+ fun_l19_n932(x)
+ else
+ fun_l19_n623(x)
+ end
+end
+
+def fun_l18_n467(x)
+ if (x < 1)
+ fun_l19_n839(x)
+ else
+ fun_l19_n70(x)
+ end
+end
+
+def fun_l18_n468(x)
+ if (x < 1)
+ fun_l19_n574(x)
+ else
+ fun_l19_n193(x)
+ end
+end
+
+def fun_l18_n469(x)
+ if (x < 1)
+ fun_l19_n762(x)
+ else
+ fun_l19_n654(x)
+ end
+end
+
+def fun_l18_n470(x)
+ if (x < 1)
+ fun_l19_n656(x)
+ else
+ fun_l19_n42(x)
+ end
+end
+
+def fun_l18_n471(x)
+ if (x < 1)
+ fun_l19_n959(x)
+ else
+ fun_l19_n368(x)
+ end
+end
+
+def fun_l18_n472(x)
+ if (x < 1)
+ fun_l19_n494(x)
+ else
+ fun_l19_n357(x)
+ end
+end
+
+def fun_l18_n473(x)
+ if (x < 1)
+ fun_l19_n394(x)
+ else
+ fun_l19_n313(x)
+ end
+end
+
+def fun_l18_n474(x)
+ if (x < 1)
+ fun_l19_n826(x)
+ else
+ fun_l19_n33(x)
+ end
+end
+
+def fun_l18_n475(x)
+ if (x < 1)
+ fun_l19_n202(x)
+ else
+ fun_l19_n455(x)
+ end
+end
+
+def fun_l18_n476(x)
+ if (x < 1)
+ fun_l19_n855(x)
+ else
+ fun_l19_n375(x)
+ end
+end
+
+def fun_l18_n477(x)
+ if (x < 1)
+ fun_l19_n554(x)
+ else
+ fun_l19_n176(x)
+ end
+end
+
+def fun_l18_n478(x)
+ if (x < 1)
+ fun_l19_n705(x)
+ else
+ fun_l19_n509(x)
+ end
+end
+
+def fun_l18_n479(x)
+ if (x < 1)
+ fun_l19_n473(x)
+ else
+ fun_l19_n123(x)
+ end
+end
+
+def fun_l18_n480(x)
+ if (x < 1)
+ fun_l19_n108(x)
+ else
+ fun_l19_n125(x)
+ end
+end
+
+def fun_l18_n481(x)
+ if (x < 1)
+ fun_l19_n476(x)
+ else
+ fun_l19_n657(x)
+ end
+end
+
+def fun_l18_n482(x)
+ if (x < 1)
+ fun_l19_n800(x)
+ else
+ fun_l19_n691(x)
+ end
+end
+
+def fun_l18_n483(x)
+ if (x < 1)
+ fun_l19_n343(x)
+ else
+ fun_l19_n573(x)
+ end
+end
+
+def fun_l18_n484(x)
+ if (x < 1)
+ fun_l19_n654(x)
+ else
+ fun_l19_n114(x)
+ end
+end
+
+def fun_l18_n485(x)
+ if (x < 1)
+ fun_l19_n231(x)
+ else
+ fun_l19_n291(x)
+ end
+end
+
+def fun_l18_n486(x)
+ if (x < 1)
+ fun_l19_n877(x)
+ else
+ fun_l19_n628(x)
+ end
+end
+
+def fun_l18_n487(x)
+ if (x < 1)
+ fun_l19_n35(x)
+ else
+ fun_l19_n992(x)
+ end
+end
+
+def fun_l18_n488(x)
+ if (x < 1)
+ fun_l19_n592(x)
+ else
+ fun_l19_n951(x)
+ end
+end
+
+def fun_l18_n489(x)
+ if (x < 1)
+ fun_l19_n292(x)
+ else
+ fun_l19_n768(x)
+ end
+end
+
+def fun_l18_n490(x)
+ if (x < 1)
+ fun_l19_n191(x)
+ else
+ fun_l19_n759(x)
+ end
+end
+
+def fun_l18_n491(x)
+ if (x < 1)
+ fun_l19_n474(x)
+ else
+ fun_l19_n393(x)
+ end
+end
+
+def fun_l18_n492(x)
+ if (x < 1)
+ fun_l19_n556(x)
+ else
+ fun_l19_n691(x)
+ end
+end
+
+def fun_l18_n493(x)
+ if (x < 1)
+ fun_l19_n717(x)
+ else
+ fun_l19_n714(x)
+ end
+end
+
+def fun_l18_n494(x)
+ if (x < 1)
+ fun_l19_n542(x)
+ else
+ fun_l19_n505(x)
+ end
+end
+
+def fun_l18_n495(x)
+ if (x < 1)
+ fun_l19_n154(x)
+ else
+ fun_l19_n500(x)
+ end
+end
+
+def fun_l18_n496(x)
+ if (x < 1)
+ fun_l19_n311(x)
+ else
+ fun_l19_n458(x)
+ end
+end
+
+def fun_l18_n497(x)
+ if (x < 1)
+ fun_l19_n523(x)
+ else
+ fun_l19_n475(x)
+ end
+end
+
+def fun_l18_n498(x)
+ if (x < 1)
+ fun_l19_n101(x)
+ else
+ fun_l19_n478(x)
+ end
+end
+
+def fun_l18_n499(x)
+ if (x < 1)
+ fun_l19_n243(x)
+ else
+ fun_l19_n586(x)
+ end
+end
+
+def fun_l18_n500(x)
+ if (x < 1)
+ fun_l19_n263(x)
+ else
+ fun_l19_n888(x)
+ end
+end
+
+def fun_l18_n501(x)
+ if (x < 1)
+ fun_l19_n415(x)
+ else
+ fun_l19_n808(x)
+ end
+end
+
+def fun_l18_n502(x)
+ if (x < 1)
+ fun_l19_n38(x)
+ else
+ fun_l19_n640(x)
+ end
+end
+
+def fun_l18_n503(x)
+ if (x < 1)
+ fun_l19_n218(x)
+ else
+ fun_l19_n577(x)
+ end
+end
+
+def fun_l18_n504(x)
+ if (x < 1)
+ fun_l19_n723(x)
+ else
+ fun_l19_n594(x)
+ end
+end
+
+def fun_l18_n505(x)
+ if (x < 1)
+ fun_l19_n392(x)
+ else
+ fun_l19_n984(x)
+ end
+end
+
+def fun_l18_n506(x)
+ if (x < 1)
+ fun_l19_n310(x)
+ else
+ fun_l19_n668(x)
+ end
+end
+
+def fun_l18_n507(x)
+ if (x < 1)
+ fun_l19_n278(x)
+ else
+ fun_l19_n812(x)
+ end
+end
+
+def fun_l18_n508(x)
+ if (x < 1)
+ fun_l19_n230(x)
+ else
+ fun_l19_n479(x)
+ end
+end
+
+def fun_l18_n509(x)
+ if (x < 1)
+ fun_l19_n63(x)
+ else
+ fun_l19_n774(x)
+ end
+end
+
+def fun_l18_n510(x)
+ if (x < 1)
+ fun_l19_n607(x)
+ else
+ fun_l19_n433(x)
+ end
+end
+
+def fun_l18_n511(x)
+ if (x < 1)
+ fun_l19_n28(x)
+ else
+ fun_l19_n672(x)
+ end
+end
+
+def fun_l18_n512(x)
+ if (x < 1)
+ fun_l19_n684(x)
+ else
+ fun_l19_n247(x)
+ end
+end
+
+def fun_l18_n513(x)
+ if (x < 1)
+ fun_l19_n181(x)
+ else
+ fun_l19_n649(x)
+ end
+end
+
+def fun_l18_n514(x)
+ if (x < 1)
+ fun_l19_n787(x)
+ else
+ fun_l19_n281(x)
+ end
+end
+
+def fun_l18_n515(x)
+ if (x < 1)
+ fun_l19_n191(x)
+ else
+ fun_l19_n848(x)
+ end
+end
+
+def fun_l18_n516(x)
+ if (x < 1)
+ fun_l19_n796(x)
+ else
+ fun_l19_n572(x)
+ end
+end
+
+def fun_l18_n517(x)
+ if (x < 1)
+ fun_l19_n780(x)
+ else
+ fun_l19_n816(x)
+ end
+end
+
+def fun_l18_n518(x)
+ if (x < 1)
+ fun_l19_n429(x)
+ else
+ fun_l19_n681(x)
+ end
+end
+
+def fun_l18_n519(x)
+ if (x < 1)
+ fun_l19_n476(x)
+ else
+ fun_l19_n954(x)
+ end
+end
+
+def fun_l18_n520(x)
+ if (x < 1)
+ fun_l19_n537(x)
+ else
+ fun_l19_n690(x)
+ end
+end
+
+def fun_l18_n521(x)
+ if (x < 1)
+ fun_l19_n657(x)
+ else
+ fun_l19_n293(x)
+ end
+end
+
+def fun_l18_n522(x)
+ if (x < 1)
+ fun_l19_n369(x)
+ else
+ fun_l19_n685(x)
+ end
+end
+
+def fun_l18_n523(x)
+ if (x < 1)
+ fun_l19_n785(x)
+ else
+ fun_l19_n184(x)
+ end
+end
+
+def fun_l18_n524(x)
+ if (x < 1)
+ fun_l19_n6(x)
+ else
+ fun_l19_n970(x)
+ end
+end
+
+def fun_l18_n525(x)
+ if (x < 1)
+ fun_l19_n395(x)
+ else
+ fun_l19_n570(x)
+ end
+end
+
+def fun_l18_n526(x)
+ if (x < 1)
+ fun_l19_n837(x)
+ else
+ fun_l19_n992(x)
+ end
+end
+
+def fun_l18_n527(x)
+ if (x < 1)
+ fun_l19_n827(x)
+ else
+ fun_l19_n119(x)
+ end
+end
+
+def fun_l18_n528(x)
+ if (x < 1)
+ fun_l19_n819(x)
+ else
+ fun_l19_n382(x)
+ end
+end
+
+def fun_l18_n529(x)
+ if (x < 1)
+ fun_l19_n365(x)
+ else
+ fun_l19_n713(x)
+ end
+end
+
+def fun_l18_n530(x)
+ if (x < 1)
+ fun_l19_n223(x)
+ else
+ fun_l19_n346(x)
+ end
+end
+
+def fun_l18_n531(x)
+ if (x < 1)
+ fun_l19_n624(x)
+ else
+ fun_l19_n671(x)
+ end
+end
+
+def fun_l18_n532(x)
+ if (x < 1)
+ fun_l19_n522(x)
+ else
+ fun_l19_n354(x)
+ end
+end
+
+def fun_l18_n533(x)
+ if (x < 1)
+ fun_l19_n324(x)
+ else
+ fun_l19_n602(x)
+ end
+end
+
+def fun_l18_n534(x)
+ if (x < 1)
+ fun_l19_n138(x)
+ else
+ fun_l19_n259(x)
+ end
+end
+
+def fun_l18_n535(x)
+ if (x < 1)
+ fun_l19_n692(x)
+ else
+ fun_l19_n810(x)
+ end
+end
+
+def fun_l18_n536(x)
+ if (x < 1)
+ fun_l19_n694(x)
+ else
+ fun_l19_n39(x)
+ end
+end
+
+def fun_l18_n537(x)
+ if (x < 1)
+ fun_l19_n441(x)
+ else
+ fun_l19_n158(x)
+ end
+end
+
+def fun_l18_n538(x)
+ if (x < 1)
+ fun_l19_n609(x)
+ else
+ fun_l19_n54(x)
+ end
+end
+
+def fun_l18_n539(x)
+ if (x < 1)
+ fun_l19_n984(x)
+ else
+ fun_l19_n206(x)
+ end
+end
+
+def fun_l18_n540(x)
+ if (x < 1)
+ fun_l19_n548(x)
+ else
+ fun_l19_n558(x)
+ end
+end
+
+def fun_l18_n541(x)
+ if (x < 1)
+ fun_l19_n640(x)
+ else
+ fun_l19_n721(x)
+ end
+end
+
+def fun_l18_n542(x)
+ if (x < 1)
+ fun_l19_n50(x)
+ else
+ fun_l19_n598(x)
+ end
+end
+
+def fun_l18_n543(x)
+ if (x < 1)
+ fun_l19_n774(x)
+ else
+ fun_l19_n753(x)
+ end
+end
+
+def fun_l18_n544(x)
+ if (x < 1)
+ fun_l19_n151(x)
+ else
+ fun_l19_n75(x)
+ end
+end
+
+def fun_l18_n545(x)
+ if (x < 1)
+ fun_l19_n162(x)
+ else
+ fun_l19_n550(x)
+ end
+end
+
+def fun_l18_n546(x)
+ if (x < 1)
+ fun_l19_n892(x)
+ else
+ fun_l19_n322(x)
+ end
+end
+
+def fun_l18_n547(x)
+ if (x < 1)
+ fun_l19_n15(x)
+ else
+ fun_l19_n854(x)
+ end
+end
+
+def fun_l18_n548(x)
+ if (x < 1)
+ fun_l19_n54(x)
+ else
+ fun_l19_n627(x)
+ end
+end
+
+def fun_l18_n549(x)
+ if (x < 1)
+ fun_l19_n847(x)
+ else
+ fun_l19_n236(x)
+ end
+end
+
+def fun_l18_n550(x)
+ if (x < 1)
+ fun_l19_n796(x)
+ else
+ fun_l19_n895(x)
+ end
+end
+
+def fun_l18_n551(x)
+ if (x < 1)
+ fun_l19_n922(x)
+ else
+ fun_l19_n854(x)
+ end
+end
+
+def fun_l18_n552(x)
+ if (x < 1)
+ fun_l19_n378(x)
+ else
+ fun_l19_n449(x)
+ end
+end
+
+def fun_l18_n553(x)
+ if (x < 1)
+ fun_l19_n188(x)
+ else
+ fun_l19_n65(x)
+ end
+end
+
+def fun_l18_n554(x)
+ if (x < 1)
+ fun_l19_n606(x)
+ else
+ fun_l19_n292(x)
+ end
+end
+
+def fun_l18_n555(x)
+ if (x < 1)
+ fun_l19_n718(x)
+ else
+ fun_l19_n926(x)
+ end
+end
+
+def fun_l18_n556(x)
+ if (x < 1)
+ fun_l19_n765(x)
+ else
+ fun_l19_n975(x)
+ end
+end
+
+def fun_l18_n557(x)
+ if (x < 1)
+ fun_l19_n987(x)
+ else
+ fun_l19_n152(x)
+ end
+end
+
+def fun_l18_n558(x)
+ if (x < 1)
+ fun_l19_n978(x)
+ else
+ fun_l19_n861(x)
+ end
+end
+
+def fun_l18_n559(x)
+ if (x < 1)
+ fun_l19_n563(x)
+ else
+ fun_l19_n532(x)
+ end
+end
+
+def fun_l18_n560(x)
+ if (x < 1)
+ fun_l19_n492(x)
+ else
+ fun_l19_n337(x)
+ end
+end
+
+def fun_l18_n561(x)
+ if (x < 1)
+ fun_l19_n967(x)
+ else
+ fun_l19_n33(x)
+ end
+end
+
+def fun_l18_n562(x)
+ if (x < 1)
+ fun_l19_n509(x)
+ else
+ fun_l19_n212(x)
+ end
+end
+
+def fun_l18_n563(x)
+ if (x < 1)
+ fun_l19_n55(x)
+ else
+ fun_l19_n167(x)
+ end
+end
+
+def fun_l18_n564(x)
+ if (x < 1)
+ fun_l19_n263(x)
+ else
+ fun_l19_n386(x)
+ end
+end
+
+def fun_l18_n565(x)
+ if (x < 1)
+ fun_l19_n292(x)
+ else
+ fun_l19_n576(x)
+ end
+end
+
+def fun_l18_n566(x)
+ if (x < 1)
+ fun_l19_n16(x)
+ else
+ fun_l19_n180(x)
+ end
+end
+
+def fun_l18_n567(x)
+ if (x < 1)
+ fun_l19_n359(x)
+ else
+ fun_l19_n398(x)
+ end
+end
+
+def fun_l18_n568(x)
+ if (x < 1)
+ fun_l19_n799(x)
+ else
+ fun_l19_n616(x)
+ end
+end
+
+def fun_l18_n569(x)
+ if (x < 1)
+ fun_l19_n751(x)
+ else
+ fun_l19_n539(x)
+ end
+end
+
+def fun_l18_n570(x)
+ if (x < 1)
+ fun_l19_n497(x)
+ else
+ fun_l19_n197(x)
+ end
+end
+
+def fun_l18_n571(x)
+ if (x < 1)
+ fun_l19_n88(x)
+ else
+ fun_l19_n565(x)
+ end
+end
+
+def fun_l18_n572(x)
+ if (x < 1)
+ fun_l19_n213(x)
+ else
+ fun_l19_n137(x)
+ end
+end
+
+def fun_l18_n573(x)
+ if (x < 1)
+ fun_l19_n570(x)
+ else
+ fun_l19_n893(x)
+ end
+end
+
+def fun_l18_n574(x)
+ if (x < 1)
+ fun_l19_n436(x)
+ else
+ fun_l19_n285(x)
+ end
+end
+
+def fun_l18_n575(x)
+ if (x < 1)
+ fun_l19_n787(x)
+ else
+ fun_l19_n541(x)
+ end
+end
+
+def fun_l18_n576(x)
+ if (x < 1)
+ fun_l19_n432(x)
+ else
+ fun_l19_n371(x)
+ end
+end
+
+def fun_l18_n577(x)
+ if (x < 1)
+ fun_l19_n542(x)
+ else
+ fun_l19_n431(x)
+ end
+end
+
+def fun_l18_n578(x)
+ if (x < 1)
+ fun_l19_n829(x)
+ else
+ fun_l19_n415(x)
+ end
+end
+
+def fun_l18_n579(x)
+ if (x < 1)
+ fun_l19_n925(x)
+ else
+ fun_l19_n862(x)
+ end
+end
+
+def fun_l18_n580(x)
+ if (x < 1)
+ fun_l19_n214(x)
+ else
+ fun_l19_n67(x)
+ end
+end
+
+def fun_l18_n581(x)
+ if (x < 1)
+ fun_l19_n734(x)
+ else
+ fun_l19_n220(x)
+ end
+end
+
+def fun_l18_n582(x)
+ if (x < 1)
+ fun_l19_n971(x)
+ else
+ fun_l19_n359(x)
+ end
+end
+
+def fun_l18_n583(x)
+ if (x < 1)
+ fun_l19_n293(x)
+ else
+ fun_l19_n286(x)
+ end
+end
+
+def fun_l18_n584(x)
+ if (x < 1)
+ fun_l19_n618(x)
+ else
+ fun_l19_n866(x)
+ end
+end
+
+def fun_l18_n585(x)
+ if (x < 1)
+ fun_l19_n315(x)
+ else
+ fun_l19_n594(x)
+ end
+end
+
+def fun_l18_n586(x)
+ if (x < 1)
+ fun_l19_n230(x)
+ else
+ fun_l19_n450(x)
+ end
+end
+
+def fun_l18_n587(x)
+ if (x < 1)
+ fun_l19_n805(x)
+ else
+ fun_l19_n429(x)
+ end
+end
+
+def fun_l18_n588(x)
+ if (x < 1)
+ fun_l19_n782(x)
+ else
+ fun_l19_n133(x)
+ end
+end
+
+def fun_l18_n589(x)
+ if (x < 1)
+ fun_l19_n166(x)
+ else
+ fun_l19_n111(x)
+ end
+end
+
+def fun_l18_n590(x)
+ if (x < 1)
+ fun_l19_n26(x)
+ else
+ fun_l19_n678(x)
+ end
+end
+
+def fun_l18_n591(x)
+ if (x < 1)
+ fun_l19_n728(x)
+ else
+ fun_l19_n346(x)
+ end
+end
+
+def fun_l18_n592(x)
+ if (x < 1)
+ fun_l19_n882(x)
+ else
+ fun_l19_n930(x)
+ end
+end
+
+def fun_l18_n593(x)
+ if (x < 1)
+ fun_l19_n454(x)
+ else
+ fun_l19_n560(x)
+ end
+end
+
+def fun_l18_n594(x)
+ if (x < 1)
+ fun_l19_n881(x)
+ else
+ fun_l19_n929(x)
+ end
+end
+
+def fun_l18_n595(x)
+ if (x < 1)
+ fun_l19_n464(x)
+ else
+ fun_l19_n8(x)
+ end
+end
+
+def fun_l18_n596(x)
+ if (x < 1)
+ fun_l19_n247(x)
+ else
+ fun_l19_n48(x)
+ end
+end
+
+def fun_l18_n597(x)
+ if (x < 1)
+ fun_l19_n838(x)
+ else
+ fun_l19_n811(x)
+ end
+end
+
+def fun_l18_n598(x)
+ if (x < 1)
+ fun_l19_n493(x)
+ else
+ fun_l19_n975(x)
+ end
+end
+
+def fun_l18_n599(x)
+ if (x < 1)
+ fun_l19_n372(x)
+ else
+ fun_l19_n334(x)
+ end
+end
+
+def fun_l18_n600(x)
+ if (x < 1)
+ fun_l19_n971(x)
+ else
+ fun_l19_n198(x)
+ end
+end
+
+def fun_l18_n601(x)
+ if (x < 1)
+ fun_l19_n494(x)
+ else
+ fun_l19_n273(x)
+ end
+end
+
+def fun_l18_n602(x)
+ if (x < 1)
+ fun_l19_n778(x)
+ else
+ fun_l19_n815(x)
+ end
+end
+
+def fun_l18_n603(x)
+ if (x < 1)
+ fun_l19_n247(x)
+ else
+ fun_l19_n615(x)
+ end
+end
+
+def fun_l18_n604(x)
+ if (x < 1)
+ fun_l19_n659(x)
+ else
+ fun_l19_n613(x)
+ end
+end
+
+def fun_l18_n605(x)
+ if (x < 1)
+ fun_l19_n814(x)
+ else
+ fun_l19_n742(x)
+ end
+end
+
+def fun_l18_n606(x)
+ if (x < 1)
+ fun_l19_n988(x)
+ else
+ fun_l19_n877(x)
+ end
+end
+
+def fun_l18_n607(x)
+ if (x < 1)
+ fun_l19_n908(x)
+ else
+ fun_l19_n491(x)
+ end
+end
+
+def fun_l18_n608(x)
+ if (x < 1)
+ fun_l19_n600(x)
+ else
+ fun_l19_n381(x)
+ end
+end
+
+def fun_l18_n609(x)
+ if (x < 1)
+ fun_l19_n695(x)
+ else
+ fun_l19_n343(x)
+ end
+end
+
+def fun_l18_n610(x)
+ if (x < 1)
+ fun_l19_n686(x)
+ else
+ fun_l19_n154(x)
+ end
+end
+
+def fun_l18_n611(x)
+ if (x < 1)
+ fun_l19_n413(x)
+ else
+ fun_l19_n364(x)
+ end
+end
+
+def fun_l18_n612(x)
+ if (x < 1)
+ fun_l19_n86(x)
+ else
+ fun_l19_n478(x)
+ end
+end
+
+def fun_l18_n613(x)
+ if (x < 1)
+ fun_l19_n288(x)
+ else
+ fun_l19_n134(x)
+ end
+end
+
+def fun_l18_n614(x)
+ if (x < 1)
+ fun_l19_n71(x)
+ else
+ fun_l19_n95(x)
+ end
+end
+
+def fun_l18_n615(x)
+ if (x < 1)
+ fun_l19_n716(x)
+ else
+ fun_l19_n697(x)
+ end
+end
+
+def fun_l18_n616(x)
+ if (x < 1)
+ fun_l19_n24(x)
+ else
+ fun_l19_n365(x)
+ end
+end
+
+def fun_l18_n617(x)
+ if (x < 1)
+ fun_l19_n317(x)
+ else
+ fun_l19_n117(x)
+ end
+end
+
+def fun_l18_n618(x)
+ if (x < 1)
+ fun_l19_n304(x)
+ else
+ fun_l19_n115(x)
+ end
+end
+
+def fun_l18_n619(x)
+ if (x < 1)
+ fun_l19_n322(x)
+ else
+ fun_l19_n105(x)
+ end
+end
+
+def fun_l18_n620(x)
+ if (x < 1)
+ fun_l19_n213(x)
+ else
+ fun_l19_n122(x)
+ end
+end
+
+def fun_l18_n621(x)
+ if (x < 1)
+ fun_l19_n675(x)
+ else
+ fun_l19_n769(x)
+ end
+end
+
+def fun_l18_n622(x)
+ if (x < 1)
+ fun_l19_n660(x)
+ else
+ fun_l19_n895(x)
+ end
+end
+
+def fun_l18_n623(x)
+ if (x < 1)
+ fun_l19_n656(x)
+ else
+ fun_l19_n698(x)
+ end
+end
+
+def fun_l18_n624(x)
+ if (x < 1)
+ fun_l19_n575(x)
+ else
+ fun_l19_n274(x)
+ end
+end
+
+def fun_l18_n625(x)
+ if (x < 1)
+ fun_l19_n44(x)
+ else
+ fun_l19_n78(x)
+ end
+end
+
+def fun_l18_n626(x)
+ if (x < 1)
+ fun_l19_n326(x)
+ else
+ fun_l19_n76(x)
+ end
+end
+
+def fun_l18_n627(x)
+ if (x < 1)
+ fun_l19_n365(x)
+ else
+ fun_l19_n453(x)
+ end
+end
+
+def fun_l18_n628(x)
+ if (x < 1)
+ fun_l19_n306(x)
+ else
+ fun_l19_n63(x)
+ end
+end
+
+def fun_l18_n629(x)
+ if (x < 1)
+ fun_l19_n116(x)
+ else
+ fun_l19_n577(x)
+ end
+end
+
+def fun_l18_n630(x)
+ if (x < 1)
+ fun_l19_n625(x)
+ else
+ fun_l19_n321(x)
+ end
+end
+
+def fun_l18_n631(x)
+ if (x < 1)
+ fun_l19_n328(x)
+ else
+ fun_l19_n989(x)
+ end
+end
+
+def fun_l18_n632(x)
+ if (x < 1)
+ fun_l19_n216(x)
+ else
+ fun_l19_n375(x)
+ end
+end
+
+def fun_l18_n633(x)
+ if (x < 1)
+ fun_l19_n942(x)
+ else
+ fun_l19_n17(x)
+ end
+end
+
+def fun_l18_n634(x)
+ if (x < 1)
+ fun_l19_n821(x)
+ else
+ fun_l19_n132(x)
+ end
+end
+
+def fun_l18_n635(x)
+ if (x < 1)
+ fun_l19_n164(x)
+ else
+ fun_l19_n679(x)
+ end
+end
+
+def fun_l18_n636(x)
+ if (x < 1)
+ fun_l19_n494(x)
+ else
+ fun_l19_n404(x)
+ end
+end
+
+def fun_l18_n637(x)
+ if (x < 1)
+ fun_l19_n715(x)
+ else
+ fun_l19_n955(x)
+ end
+end
+
+def fun_l18_n638(x)
+ if (x < 1)
+ fun_l19_n297(x)
+ else
+ fun_l19_n349(x)
+ end
+end
+
+def fun_l18_n639(x)
+ if (x < 1)
+ fun_l19_n835(x)
+ else
+ fun_l19_n965(x)
+ end
+end
+
+def fun_l18_n640(x)
+ if (x < 1)
+ fun_l19_n778(x)
+ else
+ fun_l19_n572(x)
+ end
+end
+
+def fun_l18_n641(x)
+ if (x < 1)
+ fun_l19_n51(x)
+ else
+ fun_l19_n497(x)
+ end
+end
+
+def fun_l18_n642(x)
+ if (x < 1)
+ fun_l19_n390(x)
+ else
+ fun_l19_n341(x)
+ end
+end
+
+def fun_l18_n643(x)
+ if (x < 1)
+ fun_l19_n961(x)
+ else
+ fun_l19_n966(x)
+ end
+end
+
+def fun_l18_n644(x)
+ if (x < 1)
+ fun_l19_n832(x)
+ else
+ fun_l19_n279(x)
+ end
+end
+
+def fun_l18_n645(x)
+ if (x < 1)
+ fun_l19_n0(x)
+ else
+ fun_l19_n266(x)
+ end
+end
+
+def fun_l18_n646(x)
+ if (x < 1)
+ fun_l19_n512(x)
+ else
+ fun_l19_n988(x)
+ end
+end
+
+def fun_l18_n647(x)
+ if (x < 1)
+ fun_l19_n728(x)
+ else
+ fun_l19_n390(x)
+ end
+end
+
+def fun_l18_n648(x)
+ if (x < 1)
+ fun_l19_n61(x)
+ else
+ fun_l19_n188(x)
+ end
+end
+
+def fun_l18_n649(x)
+ if (x < 1)
+ fun_l19_n772(x)
+ else
+ fun_l19_n457(x)
+ end
+end
+
+def fun_l18_n650(x)
+ if (x < 1)
+ fun_l19_n768(x)
+ else
+ fun_l19_n624(x)
+ end
+end
+
+def fun_l18_n651(x)
+ if (x < 1)
+ fun_l19_n30(x)
+ else
+ fun_l19_n663(x)
+ end
+end
+
+def fun_l18_n652(x)
+ if (x < 1)
+ fun_l19_n42(x)
+ else
+ fun_l19_n781(x)
+ end
+end
+
+def fun_l18_n653(x)
+ if (x < 1)
+ fun_l19_n59(x)
+ else
+ fun_l19_n99(x)
+ end
+end
+
+def fun_l18_n654(x)
+ if (x < 1)
+ fun_l19_n81(x)
+ else
+ fun_l19_n368(x)
+ end
+end
+
+def fun_l18_n655(x)
+ if (x < 1)
+ fun_l19_n0(x)
+ else
+ fun_l19_n321(x)
+ end
+end
+
+def fun_l18_n656(x)
+ if (x < 1)
+ fun_l19_n344(x)
+ else
+ fun_l19_n996(x)
+ end
+end
+
+def fun_l18_n657(x)
+ if (x < 1)
+ fun_l19_n384(x)
+ else
+ fun_l19_n123(x)
+ end
+end
+
+def fun_l18_n658(x)
+ if (x < 1)
+ fun_l19_n336(x)
+ else
+ fun_l19_n928(x)
+ end
+end
+
+def fun_l18_n659(x)
+ if (x < 1)
+ fun_l19_n785(x)
+ else
+ fun_l19_n370(x)
+ end
+end
+
+def fun_l18_n660(x)
+ if (x < 1)
+ fun_l19_n508(x)
+ else
+ fun_l19_n200(x)
+ end
+end
+
+def fun_l18_n661(x)
+ if (x < 1)
+ fun_l19_n674(x)
+ else
+ fun_l19_n95(x)
+ end
+end
+
+def fun_l18_n662(x)
+ if (x < 1)
+ fun_l19_n839(x)
+ else
+ fun_l19_n737(x)
+ end
+end
+
+def fun_l18_n663(x)
+ if (x < 1)
+ fun_l19_n670(x)
+ else
+ fun_l19_n77(x)
+ end
+end
+
+def fun_l18_n664(x)
+ if (x < 1)
+ fun_l19_n402(x)
+ else
+ fun_l19_n7(x)
+ end
+end
+
+def fun_l18_n665(x)
+ if (x < 1)
+ fun_l19_n357(x)
+ else
+ fun_l19_n961(x)
+ end
+end
+
+def fun_l18_n666(x)
+ if (x < 1)
+ fun_l19_n72(x)
+ else
+ fun_l19_n535(x)
+ end
+end
+
+def fun_l18_n667(x)
+ if (x < 1)
+ fun_l19_n317(x)
+ else
+ fun_l19_n450(x)
+ end
+end
+
+def fun_l18_n668(x)
+ if (x < 1)
+ fun_l19_n823(x)
+ else
+ fun_l19_n301(x)
+ end
+end
+
+def fun_l18_n669(x)
+ if (x < 1)
+ fun_l19_n36(x)
+ else
+ fun_l19_n660(x)
+ end
+end
+
+def fun_l18_n670(x)
+ if (x < 1)
+ fun_l19_n322(x)
+ else
+ fun_l19_n626(x)
+ end
+end
+
+def fun_l18_n671(x)
+ if (x < 1)
+ fun_l19_n408(x)
+ else
+ fun_l19_n872(x)
+ end
+end
+
+def fun_l18_n672(x)
+ if (x < 1)
+ fun_l19_n614(x)
+ else
+ fun_l19_n567(x)
+ end
+end
+
+def fun_l18_n673(x)
+ if (x < 1)
+ fun_l19_n601(x)
+ else
+ fun_l19_n429(x)
+ end
+end
+
+def fun_l18_n674(x)
+ if (x < 1)
+ fun_l19_n658(x)
+ else
+ fun_l19_n424(x)
+ end
+end
+
+def fun_l18_n675(x)
+ if (x < 1)
+ fun_l19_n248(x)
+ else
+ fun_l19_n29(x)
+ end
+end
+
+def fun_l18_n676(x)
+ if (x < 1)
+ fun_l19_n206(x)
+ else
+ fun_l19_n838(x)
+ end
+end
+
+def fun_l18_n677(x)
+ if (x < 1)
+ fun_l19_n354(x)
+ else
+ fun_l19_n700(x)
+ end
+end
+
+def fun_l18_n678(x)
+ if (x < 1)
+ fun_l19_n264(x)
+ else
+ fun_l19_n591(x)
+ end
+end
+
+def fun_l18_n679(x)
+ if (x < 1)
+ fun_l19_n73(x)
+ else
+ fun_l19_n419(x)
+ end
+end
+
+def fun_l18_n680(x)
+ if (x < 1)
+ fun_l19_n260(x)
+ else
+ fun_l19_n902(x)
+ end
+end
+
+def fun_l18_n681(x)
+ if (x < 1)
+ fun_l19_n776(x)
+ else
+ fun_l19_n148(x)
+ end
+end
+
+def fun_l18_n682(x)
+ if (x < 1)
+ fun_l19_n819(x)
+ else
+ fun_l19_n743(x)
+ end
+end
+
+def fun_l18_n683(x)
+ if (x < 1)
+ fun_l19_n831(x)
+ else
+ fun_l19_n194(x)
+ end
+end
+
+def fun_l18_n684(x)
+ if (x < 1)
+ fun_l19_n652(x)
+ else
+ fun_l19_n229(x)
+ end
+end
+
+def fun_l18_n685(x)
+ if (x < 1)
+ fun_l19_n533(x)
+ else
+ fun_l19_n600(x)
+ end
+end
+
+def fun_l18_n686(x)
+ if (x < 1)
+ fun_l19_n45(x)
+ else
+ fun_l19_n623(x)
+ end
+end
+
+def fun_l18_n687(x)
+ if (x < 1)
+ fun_l19_n287(x)
+ else
+ fun_l19_n443(x)
+ end
+end
+
+def fun_l18_n688(x)
+ if (x < 1)
+ fun_l19_n719(x)
+ else
+ fun_l19_n819(x)
+ end
+end
+
+def fun_l18_n689(x)
+ if (x < 1)
+ fun_l19_n872(x)
+ else
+ fun_l19_n944(x)
+ end
+end
+
+def fun_l18_n690(x)
+ if (x < 1)
+ fun_l19_n352(x)
+ else
+ fun_l19_n49(x)
+ end
+end
+
+def fun_l18_n691(x)
+ if (x < 1)
+ fun_l19_n438(x)
+ else
+ fun_l19_n592(x)
+ end
+end
+
+def fun_l18_n692(x)
+ if (x < 1)
+ fun_l19_n717(x)
+ else
+ fun_l19_n30(x)
+ end
+end
+
+def fun_l18_n693(x)
+ if (x < 1)
+ fun_l19_n132(x)
+ else
+ fun_l19_n830(x)
+ end
+end
+
+def fun_l18_n694(x)
+ if (x < 1)
+ fun_l19_n17(x)
+ else
+ fun_l19_n649(x)
+ end
+end
+
+def fun_l18_n695(x)
+ if (x < 1)
+ fun_l19_n883(x)
+ else
+ fun_l19_n812(x)
+ end
+end
+
+def fun_l18_n696(x)
+ if (x < 1)
+ fun_l19_n354(x)
+ else
+ fun_l19_n927(x)
+ end
+end
+
+def fun_l18_n697(x)
+ if (x < 1)
+ fun_l19_n534(x)
+ else
+ fun_l19_n192(x)
+ end
+end
+
+def fun_l18_n698(x)
+ if (x < 1)
+ fun_l19_n911(x)
+ else
+ fun_l19_n386(x)
+ end
+end
+
+def fun_l18_n699(x)
+ if (x < 1)
+ fun_l19_n1(x)
+ else
+ fun_l19_n253(x)
+ end
+end
+
+def fun_l18_n700(x)
+ if (x < 1)
+ fun_l19_n318(x)
+ else
+ fun_l19_n323(x)
+ end
+end
+
+def fun_l18_n701(x)
+ if (x < 1)
+ fun_l19_n158(x)
+ else
+ fun_l19_n61(x)
+ end
+end
+
+def fun_l18_n702(x)
+ if (x < 1)
+ fun_l19_n719(x)
+ else
+ fun_l19_n842(x)
+ end
+end
+
+def fun_l18_n703(x)
+ if (x < 1)
+ fun_l19_n918(x)
+ else
+ fun_l19_n231(x)
+ end
+end
+
+def fun_l18_n704(x)
+ if (x < 1)
+ fun_l19_n136(x)
+ else
+ fun_l19_n28(x)
+ end
+end
+
+def fun_l18_n705(x)
+ if (x < 1)
+ fun_l19_n451(x)
+ else
+ fun_l19_n328(x)
+ end
+end
+
+def fun_l18_n706(x)
+ if (x < 1)
+ fun_l19_n182(x)
+ else
+ fun_l19_n434(x)
+ end
+end
+
+def fun_l18_n707(x)
+ if (x < 1)
+ fun_l19_n368(x)
+ else
+ fun_l19_n302(x)
+ end
+end
+
+def fun_l18_n708(x)
+ if (x < 1)
+ fun_l19_n370(x)
+ else
+ fun_l19_n291(x)
+ end
+end
+
+def fun_l18_n709(x)
+ if (x < 1)
+ fun_l19_n104(x)
+ else
+ fun_l19_n530(x)
+ end
+end
+
+def fun_l18_n710(x)
+ if (x < 1)
+ fun_l19_n712(x)
+ else
+ fun_l19_n325(x)
+ end
+end
+
+def fun_l18_n711(x)
+ if (x < 1)
+ fun_l19_n555(x)
+ else
+ fun_l19_n299(x)
+ end
+end
+
+def fun_l18_n712(x)
+ if (x < 1)
+ fun_l19_n40(x)
+ else
+ fun_l19_n342(x)
+ end
+end
+
+def fun_l18_n713(x)
+ if (x < 1)
+ fun_l19_n871(x)
+ else
+ fun_l19_n72(x)
+ end
+end
+
+def fun_l18_n714(x)
+ if (x < 1)
+ fun_l19_n137(x)
+ else
+ fun_l19_n195(x)
+ end
+end
+
+def fun_l18_n715(x)
+ if (x < 1)
+ fun_l19_n534(x)
+ else
+ fun_l19_n613(x)
+ end
+end
+
+def fun_l18_n716(x)
+ if (x < 1)
+ fun_l19_n591(x)
+ else
+ fun_l19_n899(x)
+ end
+end
+
+def fun_l18_n717(x)
+ if (x < 1)
+ fun_l19_n103(x)
+ else
+ fun_l19_n333(x)
+ end
+end
+
+def fun_l18_n718(x)
+ if (x < 1)
+ fun_l19_n470(x)
+ else
+ fun_l19_n576(x)
+ end
+end
+
+def fun_l18_n719(x)
+ if (x < 1)
+ fun_l19_n494(x)
+ else
+ fun_l19_n765(x)
+ end
+end
+
+def fun_l18_n720(x)
+ if (x < 1)
+ fun_l19_n317(x)
+ else
+ fun_l19_n720(x)
+ end
+end
+
+def fun_l18_n721(x)
+ if (x < 1)
+ fun_l19_n567(x)
+ else
+ fun_l19_n280(x)
+ end
+end
+
+def fun_l18_n722(x)
+ if (x < 1)
+ fun_l19_n642(x)
+ else
+ fun_l19_n700(x)
+ end
+end
+
+def fun_l18_n723(x)
+ if (x < 1)
+ fun_l19_n775(x)
+ else
+ fun_l19_n239(x)
+ end
+end
+
+def fun_l18_n724(x)
+ if (x < 1)
+ fun_l19_n346(x)
+ else
+ fun_l19_n974(x)
+ end
+end
+
+def fun_l18_n725(x)
+ if (x < 1)
+ fun_l19_n509(x)
+ else
+ fun_l19_n90(x)
+ end
+end
+
+def fun_l18_n726(x)
+ if (x < 1)
+ fun_l19_n834(x)
+ else
+ fun_l19_n793(x)
+ end
+end
+
+def fun_l18_n727(x)
+ if (x < 1)
+ fun_l19_n588(x)
+ else
+ fun_l19_n895(x)
+ end
+end
+
+def fun_l18_n728(x)
+ if (x < 1)
+ fun_l19_n18(x)
+ else
+ fun_l19_n218(x)
+ end
+end
+
+def fun_l18_n729(x)
+ if (x < 1)
+ fun_l19_n109(x)
+ else
+ fun_l19_n970(x)
+ end
+end
+
+def fun_l18_n730(x)
+ if (x < 1)
+ fun_l19_n721(x)
+ else
+ fun_l19_n81(x)
+ end
+end
+
+def fun_l18_n731(x)
+ if (x < 1)
+ fun_l19_n935(x)
+ else
+ fun_l19_n652(x)
+ end
+end
+
+def fun_l18_n732(x)
+ if (x < 1)
+ fun_l19_n821(x)
+ else
+ fun_l19_n32(x)
+ end
+end
+
+def fun_l18_n733(x)
+ if (x < 1)
+ fun_l19_n189(x)
+ else
+ fun_l19_n469(x)
+ end
+end
+
+def fun_l18_n734(x)
+ if (x < 1)
+ fun_l19_n11(x)
+ else
+ fun_l19_n741(x)
+ end
+end
+
+def fun_l18_n735(x)
+ if (x < 1)
+ fun_l19_n575(x)
+ else
+ fun_l19_n679(x)
+ end
+end
+
+def fun_l18_n736(x)
+ if (x < 1)
+ fun_l19_n442(x)
+ else
+ fun_l19_n652(x)
+ end
+end
+
+def fun_l18_n737(x)
+ if (x < 1)
+ fun_l19_n22(x)
+ else
+ fun_l19_n950(x)
+ end
+end
+
+def fun_l18_n738(x)
+ if (x < 1)
+ fun_l19_n605(x)
+ else
+ fun_l19_n16(x)
+ end
+end
+
+def fun_l18_n739(x)
+ if (x < 1)
+ fun_l19_n888(x)
+ else
+ fun_l19_n873(x)
+ end
+end
+
+def fun_l18_n740(x)
+ if (x < 1)
+ fun_l19_n355(x)
+ else
+ fun_l19_n558(x)
+ end
+end
+
+def fun_l18_n741(x)
+ if (x < 1)
+ fun_l19_n171(x)
+ else
+ fun_l19_n513(x)
+ end
+end
+
+def fun_l18_n742(x)
+ if (x < 1)
+ fun_l19_n843(x)
+ else
+ fun_l19_n833(x)
+ end
+end
+
+def fun_l18_n743(x)
+ if (x < 1)
+ fun_l19_n774(x)
+ else
+ fun_l19_n992(x)
+ end
+end
+
+def fun_l18_n744(x)
+ if (x < 1)
+ fun_l19_n505(x)
+ else
+ fun_l19_n353(x)
+ end
+end
+
+def fun_l18_n745(x)
+ if (x < 1)
+ fun_l19_n93(x)
+ else
+ fun_l19_n476(x)
+ end
+end
+
+def fun_l18_n746(x)
+ if (x < 1)
+ fun_l19_n555(x)
+ else
+ fun_l19_n233(x)
+ end
+end
+
+def fun_l18_n747(x)
+ if (x < 1)
+ fun_l19_n639(x)
+ else
+ fun_l19_n239(x)
+ end
+end
+
+def fun_l18_n748(x)
+ if (x < 1)
+ fun_l19_n318(x)
+ else
+ fun_l19_n342(x)
+ end
+end
+
+def fun_l18_n749(x)
+ if (x < 1)
+ fun_l19_n80(x)
+ else
+ fun_l19_n252(x)
+ end
+end
+
+def fun_l18_n750(x)
+ if (x < 1)
+ fun_l19_n546(x)
+ else
+ fun_l19_n57(x)
+ end
+end
+
+def fun_l18_n751(x)
+ if (x < 1)
+ fun_l19_n620(x)
+ else
+ fun_l19_n732(x)
+ end
+end
+
+def fun_l18_n752(x)
+ if (x < 1)
+ fun_l19_n870(x)
+ else
+ fun_l19_n696(x)
+ end
+end
+
+def fun_l18_n753(x)
+ if (x < 1)
+ fun_l19_n633(x)
+ else
+ fun_l19_n547(x)
+ end
+end
+
+def fun_l18_n754(x)
+ if (x < 1)
+ fun_l19_n860(x)
+ else
+ fun_l19_n70(x)
+ end
+end
+
+def fun_l18_n755(x)
+ if (x < 1)
+ fun_l19_n4(x)
+ else
+ fun_l19_n560(x)
+ end
+end
+
+def fun_l18_n756(x)
+ if (x < 1)
+ fun_l19_n227(x)
+ else
+ fun_l19_n189(x)
+ end
+end
+
+def fun_l18_n757(x)
+ if (x < 1)
+ fun_l19_n560(x)
+ else
+ fun_l19_n467(x)
+ end
+end
+
+def fun_l18_n758(x)
+ if (x < 1)
+ fun_l19_n777(x)
+ else
+ fun_l19_n761(x)
+ end
+end
+
+def fun_l18_n759(x)
+ if (x < 1)
+ fun_l19_n626(x)
+ else
+ fun_l19_n391(x)
+ end
+end
+
+def fun_l18_n760(x)
+ if (x < 1)
+ fun_l19_n989(x)
+ else
+ fun_l19_n629(x)
+ end
+end
+
+def fun_l18_n761(x)
+ if (x < 1)
+ fun_l19_n509(x)
+ else
+ fun_l19_n268(x)
+ end
+end
+
+def fun_l18_n762(x)
+ if (x < 1)
+ fun_l19_n49(x)
+ else
+ fun_l19_n149(x)
+ end
+end
+
+def fun_l18_n763(x)
+ if (x < 1)
+ fun_l19_n614(x)
+ else
+ fun_l19_n490(x)
+ end
+end
+
+def fun_l18_n764(x)
+ if (x < 1)
+ fun_l19_n7(x)
+ else
+ fun_l19_n686(x)
+ end
+end
+
+def fun_l18_n765(x)
+ if (x < 1)
+ fun_l19_n93(x)
+ else
+ fun_l19_n334(x)
+ end
+end
+
+def fun_l18_n766(x)
+ if (x < 1)
+ fun_l19_n30(x)
+ else
+ fun_l19_n396(x)
+ end
+end
+
+def fun_l18_n767(x)
+ if (x < 1)
+ fun_l19_n437(x)
+ else
+ fun_l19_n614(x)
+ end
+end
+
+def fun_l18_n768(x)
+ if (x < 1)
+ fun_l19_n168(x)
+ else
+ fun_l19_n915(x)
+ end
+end
+
+def fun_l18_n769(x)
+ if (x < 1)
+ fun_l19_n465(x)
+ else
+ fun_l19_n816(x)
+ end
+end
+
+def fun_l18_n770(x)
+ if (x < 1)
+ fun_l19_n692(x)
+ else
+ fun_l19_n772(x)
+ end
+end
+
+def fun_l18_n771(x)
+ if (x < 1)
+ fun_l19_n196(x)
+ else
+ fun_l19_n812(x)
+ end
+end
+
+def fun_l18_n772(x)
+ if (x < 1)
+ fun_l19_n785(x)
+ else
+ fun_l19_n592(x)
+ end
+end
+
+def fun_l18_n773(x)
+ if (x < 1)
+ fun_l19_n649(x)
+ else
+ fun_l19_n50(x)
+ end
+end
+
+def fun_l18_n774(x)
+ if (x < 1)
+ fun_l19_n102(x)
+ else
+ fun_l19_n843(x)
+ end
+end
+
+def fun_l18_n775(x)
+ if (x < 1)
+ fun_l19_n856(x)
+ else
+ fun_l19_n805(x)
+ end
+end
+
+def fun_l18_n776(x)
+ if (x < 1)
+ fun_l19_n449(x)
+ else
+ fun_l19_n425(x)
+ end
+end
+
+def fun_l18_n777(x)
+ if (x < 1)
+ fun_l19_n855(x)
+ else
+ fun_l19_n345(x)
+ end
+end
+
+def fun_l18_n778(x)
+ if (x < 1)
+ fun_l19_n714(x)
+ else
+ fun_l19_n499(x)
+ end
+end
+
+def fun_l18_n779(x)
+ if (x < 1)
+ fun_l19_n131(x)
+ else
+ fun_l19_n396(x)
+ end
+end
+
+def fun_l18_n780(x)
+ if (x < 1)
+ fun_l19_n709(x)
+ else
+ fun_l19_n851(x)
+ end
+end
+
+def fun_l18_n781(x)
+ if (x < 1)
+ fun_l19_n104(x)
+ else
+ fun_l19_n569(x)
+ end
+end
+
+def fun_l18_n782(x)
+ if (x < 1)
+ fun_l19_n121(x)
+ else
+ fun_l19_n690(x)
+ end
+end
+
+def fun_l18_n783(x)
+ if (x < 1)
+ fun_l19_n72(x)
+ else
+ fun_l19_n522(x)
+ end
+end
+
+def fun_l18_n784(x)
+ if (x < 1)
+ fun_l19_n212(x)
+ else
+ fun_l19_n199(x)
+ end
+end
+
+def fun_l18_n785(x)
+ if (x < 1)
+ fun_l19_n168(x)
+ else
+ fun_l19_n948(x)
+ end
+end
+
+def fun_l18_n786(x)
+ if (x < 1)
+ fun_l19_n288(x)
+ else
+ fun_l19_n631(x)
+ end
+end
+
+def fun_l18_n787(x)
+ if (x < 1)
+ fun_l19_n713(x)
+ else
+ fun_l19_n232(x)
+ end
+end
+
+def fun_l18_n788(x)
+ if (x < 1)
+ fun_l19_n6(x)
+ else
+ fun_l19_n725(x)
+ end
+end
+
+def fun_l18_n789(x)
+ if (x < 1)
+ fun_l19_n893(x)
+ else
+ fun_l19_n677(x)
+ end
+end
+
+def fun_l18_n790(x)
+ if (x < 1)
+ fun_l19_n734(x)
+ else
+ fun_l19_n589(x)
+ end
+end
+
+def fun_l18_n791(x)
+ if (x < 1)
+ fun_l19_n369(x)
+ else
+ fun_l19_n710(x)
+ end
+end
+
+def fun_l18_n792(x)
+ if (x < 1)
+ fun_l19_n373(x)
+ else
+ fun_l19_n226(x)
+ end
+end
+
+def fun_l18_n793(x)
+ if (x < 1)
+ fun_l19_n651(x)
+ else
+ fun_l19_n292(x)
+ end
+end
+
+def fun_l18_n794(x)
+ if (x < 1)
+ fun_l19_n625(x)
+ else
+ fun_l19_n494(x)
+ end
+end
+
+def fun_l18_n795(x)
+ if (x < 1)
+ fun_l19_n463(x)
+ else
+ fun_l19_n113(x)
+ end
+end
+
+def fun_l18_n796(x)
+ if (x < 1)
+ fun_l19_n857(x)
+ else
+ fun_l19_n561(x)
+ end
+end
+
+def fun_l18_n797(x)
+ if (x < 1)
+ fun_l19_n845(x)
+ else
+ fun_l19_n598(x)
+ end
+end
+
+def fun_l18_n798(x)
+ if (x < 1)
+ fun_l19_n606(x)
+ else
+ fun_l19_n822(x)
+ end
+end
+
+def fun_l18_n799(x)
+ if (x < 1)
+ fun_l19_n649(x)
+ else
+ fun_l19_n610(x)
+ end
+end
+
+def fun_l18_n800(x)
+ if (x < 1)
+ fun_l19_n619(x)
+ else
+ fun_l19_n753(x)
+ end
+end
+
+def fun_l18_n801(x)
+ if (x < 1)
+ fun_l19_n947(x)
+ else
+ fun_l19_n665(x)
+ end
+end
+
+def fun_l18_n802(x)
+ if (x < 1)
+ fun_l19_n869(x)
+ else
+ fun_l19_n928(x)
+ end
+end
+
+def fun_l18_n803(x)
+ if (x < 1)
+ fun_l19_n568(x)
+ else
+ fun_l19_n624(x)
+ end
+end
+
+def fun_l18_n804(x)
+ if (x < 1)
+ fun_l19_n724(x)
+ else
+ fun_l19_n104(x)
+ end
+end
+
+def fun_l18_n805(x)
+ if (x < 1)
+ fun_l19_n687(x)
+ else
+ fun_l19_n906(x)
+ end
+end
+
+def fun_l18_n806(x)
+ if (x < 1)
+ fun_l19_n387(x)
+ else
+ fun_l19_n317(x)
+ end
+end
+
+def fun_l18_n807(x)
+ if (x < 1)
+ fun_l19_n433(x)
+ else
+ fun_l19_n211(x)
+ end
+end
+
+def fun_l18_n808(x)
+ if (x < 1)
+ fun_l19_n574(x)
+ else
+ fun_l19_n848(x)
+ end
+end
+
+def fun_l18_n809(x)
+ if (x < 1)
+ fun_l19_n929(x)
+ else
+ fun_l19_n751(x)
+ end
+end
+
+def fun_l18_n810(x)
+ if (x < 1)
+ fun_l19_n24(x)
+ else
+ fun_l19_n97(x)
+ end
+end
+
+def fun_l18_n811(x)
+ if (x < 1)
+ fun_l19_n503(x)
+ else
+ fun_l19_n173(x)
+ end
+end
+
+def fun_l18_n812(x)
+ if (x < 1)
+ fun_l19_n431(x)
+ else
+ fun_l19_n553(x)
+ end
+end
+
+def fun_l18_n813(x)
+ if (x < 1)
+ fun_l19_n215(x)
+ else
+ fun_l19_n920(x)
+ end
+end
+
+def fun_l18_n814(x)
+ if (x < 1)
+ fun_l19_n952(x)
+ else
+ fun_l19_n484(x)
+ end
+end
+
+def fun_l18_n815(x)
+ if (x < 1)
+ fun_l19_n253(x)
+ else
+ fun_l19_n20(x)
+ end
+end
+
+def fun_l18_n816(x)
+ if (x < 1)
+ fun_l19_n853(x)
+ else
+ fun_l19_n902(x)
+ end
+end
+
+def fun_l18_n817(x)
+ if (x < 1)
+ fun_l19_n606(x)
+ else
+ fun_l19_n732(x)
+ end
+end
+
+def fun_l18_n818(x)
+ if (x < 1)
+ fun_l19_n227(x)
+ else
+ fun_l19_n908(x)
+ end
+end
+
+def fun_l18_n819(x)
+ if (x < 1)
+ fun_l19_n423(x)
+ else
+ fun_l19_n511(x)
+ end
+end
+
+def fun_l18_n820(x)
+ if (x < 1)
+ fun_l19_n25(x)
+ else
+ fun_l19_n939(x)
+ end
+end
+
+def fun_l18_n821(x)
+ if (x < 1)
+ fun_l19_n709(x)
+ else
+ fun_l19_n776(x)
+ end
+end
+
+def fun_l18_n822(x)
+ if (x < 1)
+ fun_l19_n539(x)
+ else
+ fun_l19_n41(x)
+ end
+end
+
+def fun_l18_n823(x)
+ if (x < 1)
+ fun_l19_n764(x)
+ else
+ fun_l19_n240(x)
+ end
+end
+
+def fun_l18_n824(x)
+ if (x < 1)
+ fun_l19_n508(x)
+ else
+ fun_l19_n505(x)
+ end
+end
+
+def fun_l18_n825(x)
+ if (x < 1)
+ fun_l19_n788(x)
+ else
+ fun_l19_n245(x)
+ end
+end
+
+def fun_l18_n826(x)
+ if (x < 1)
+ fun_l19_n315(x)
+ else
+ fun_l19_n391(x)
+ end
+end
+
+def fun_l18_n827(x)
+ if (x < 1)
+ fun_l19_n210(x)
+ else
+ fun_l19_n17(x)
+ end
+end
+
+def fun_l18_n828(x)
+ if (x < 1)
+ fun_l19_n726(x)
+ else
+ fun_l19_n57(x)
+ end
+end
+
+def fun_l18_n829(x)
+ if (x < 1)
+ fun_l19_n228(x)
+ else
+ fun_l19_n44(x)
+ end
+end
+
+def fun_l18_n830(x)
+ if (x < 1)
+ fun_l19_n5(x)
+ else
+ fun_l19_n110(x)
+ end
+end
+
+def fun_l18_n831(x)
+ if (x < 1)
+ fun_l19_n409(x)
+ else
+ fun_l19_n874(x)
+ end
+end
+
+def fun_l18_n832(x)
+ if (x < 1)
+ fun_l19_n710(x)
+ else
+ fun_l19_n960(x)
+ end
+end
+
+def fun_l18_n833(x)
+ if (x < 1)
+ fun_l19_n92(x)
+ else
+ fun_l19_n869(x)
+ end
+end
+
+def fun_l18_n834(x)
+ if (x < 1)
+ fun_l19_n420(x)
+ else
+ fun_l19_n616(x)
+ end
+end
+
+def fun_l18_n835(x)
+ if (x < 1)
+ fun_l19_n705(x)
+ else
+ fun_l19_n727(x)
+ end
+end
+
+def fun_l18_n836(x)
+ if (x < 1)
+ fun_l19_n78(x)
+ else
+ fun_l19_n211(x)
+ end
+end
+
+def fun_l18_n837(x)
+ if (x < 1)
+ fun_l19_n214(x)
+ else
+ fun_l19_n504(x)
+ end
+end
+
+def fun_l18_n838(x)
+ if (x < 1)
+ fun_l19_n320(x)
+ else
+ fun_l19_n303(x)
+ end
+end
+
+def fun_l18_n839(x)
+ if (x < 1)
+ fun_l19_n168(x)
+ else
+ fun_l19_n677(x)
+ end
+end
+
+def fun_l18_n840(x)
+ if (x < 1)
+ fun_l19_n523(x)
+ else
+ fun_l19_n183(x)
+ end
+end
+
+def fun_l18_n841(x)
+ if (x < 1)
+ fun_l19_n757(x)
+ else
+ fun_l19_n554(x)
+ end
+end
+
+def fun_l18_n842(x)
+ if (x < 1)
+ fun_l19_n309(x)
+ else
+ fun_l19_n70(x)
+ end
+end
+
+def fun_l18_n843(x)
+ if (x < 1)
+ fun_l19_n316(x)
+ else
+ fun_l19_n758(x)
+ end
+end
+
+def fun_l18_n844(x)
+ if (x < 1)
+ fun_l19_n459(x)
+ else
+ fun_l19_n28(x)
+ end
+end
+
+def fun_l18_n845(x)
+ if (x < 1)
+ fun_l19_n458(x)
+ else
+ fun_l19_n597(x)
+ end
+end
+
+def fun_l18_n846(x)
+ if (x < 1)
+ fun_l19_n662(x)
+ else
+ fun_l19_n480(x)
+ end
+end
+
+def fun_l18_n847(x)
+ if (x < 1)
+ fun_l19_n967(x)
+ else
+ fun_l19_n764(x)
+ end
+end
+
+def fun_l18_n848(x)
+ if (x < 1)
+ fun_l19_n248(x)
+ else
+ fun_l19_n459(x)
+ end
+end
+
+def fun_l18_n849(x)
+ if (x < 1)
+ fun_l19_n306(x)
+ else
+ fun_l19_n892(x)
+ end
+end
+
+def fun_l18_n850(x)
+ if (x < 1)
+ fun_l19_n541(x)
+ else
+ fun_l19_n745(x)
+ end
+end
+
+def fun_l18_n851(x)
+ if (x < 1)
+ fun_l19_n974(x)
+ else
+ fun_l19_n593(x)
+ end
+end
+
+def fun_l18_n852(x)
+ if (x < 1)
+ fun_l19_n564(x)
+ else
+ fun_l19_n598(x)
+ end
+end
+
+def fun_l18_n853(x)
+ if (x < 1)
+ fun_l19_n447(x)
+ else
+ fun_l19_n207(x)
+ end
+end
+
+def fun_l18_n854(x)
+ if (x < 1)
+ fun_l19_n261(x)
+ else
+ fun_l19_n35(x)
+ end
+end
+
+def fun_l18_n855(x)
+ if (x < 1)
+ fun_l19_n597(x)
+ else
+ fun_l19_n898(x)
+ end
+end
+
+def fun_l18_n856(x)
+ if (x < 1)
+ fun_l19_n97(x)
+ else
+ fun_l19_n109(x)
+ end
+end
+
+def fun_l18_n857(x)
+ if (x < 1)
+ fun_l19_n487(x)
+ else
+ fun_l19_n423(x)
+ end
+end
+
+def fun_l18_n858(x)
+ if (x < 1)
+ fun_l19_n804(x)
+ else
+ fun_l19_n250(x)
+ end
+end
+
+def fun_l18_n859(x)
+ if (x < 1)
+ fun_l19_n935(x)
+ else
+ fun_l19_n952(x)
+ end
+end
+
+def fun_l18_n860(x)
+ if (x < 1)
+ fun_l19_n149(x)
+ else
+ fun_l19_n586(x)
+ end
+end
+
+def fun_l18_n861(x)
+ if (x < 1)
+ fun_l19_n750(x)
+ else
+ fun_l19_n962(x)
+ end
+end
+
+def fun_l18_n862(x)
+ if (x < 1)
+ fun_l19_n396(x)
+ else
+ fun_l19_n324(x)
+ end
+end
+
+def fun_l18_n863(x)
+ if (x < 1)
+ fun_l19_n231(x)
+ else
+ fun_l19_n897(x)
+ end
+end
+
+def fun_l18_n864(x)
+ if (x < 1)
+ fun_l19_n239(x)
+ else
+ fun_l19_n118(x)
+ end
+end
+
+def fun_l18_n865(x)
+ if (x < 1)
+ fun_l19_n221(x)
+ else
+ fun_l19_n771(x)
+ end
+end
+
+def fun_l18_n866(x)
+ if (x < 1)
+ fun_l19_n258(x)
+ else
+ fun_l19_n868(x)
+ end
+end
+
+def fun_l18_n867(x)
+ if (x < 1)
+ fun_l19_n629(x)
+ else
+ fun_l19_n491(x)
+ end
+end
+
+def fun_l18_n868(x)
+ if (x < 1)
+ fun_l19_n685(x)
+ else
+ fun_l19_n532(x)
+ end
+end
+
+def fun_l18_n869(x)
+ if (x < 1)
+ fun_l19_n45(x)
+ else
+ fun_l19_n769(x)
+ end
+end
+
+def fun_l18_n870(x)
+ if (x < 1)
+ fun_l19_n249(x)
+ else
+ fun_l19_n677(x)
+ end
+end
+
+def fun_l18_n871(x)
+ if (x < 1)
+ fun_l19_n685(x)
+ else
+ fun_l19_n953(x)
+ end
+end
+
+def fun_l18_n872(x)
+ if (x < 1)
+ fun_l19_n270(x)
+ else
+ fun_l19_n208(x)
+ end
+end
+
+def fun_l18_n873(x)
+ if (x < 1)
+ fun_l19_n195(x)
+ else
+ fun_l19_n811(x)
+ end
+end
+
+def fun_l18_n874(x)
+ if (x < 1)
+ fun_l19_n700(x)
+ else
+ fun_l19_n331(x)
+ end
+end
+
+def fun_l18_n875(x)
+ if (x < 1)
+ fun_l19_n209(x)
+ else
+ fun_l19_n304(x)
+ end
+end
+
+def fun_l18_n876(x)
+ if (x < 1)
+ fun_l19_n897(x)
+ else
+ fun_l19_n98(x)
+ end
+end
+
+def fun_l18_n877(x)
+ if (x < 1)
+ fun_l19_n400(x)
+ else
+ fun_l19_n325(x)
+ end
+end
+
+def fun_l18_n878(x)
+ if (x < 1)
+ fun_l19_n312(x)
+ else
+ fun_l19_n872(x)
+ end
+end
+
+def fun_l18_n879(x)
+ if (x < 1)
+ fun_l19_n669(x)
+ else
+ fun_l19_n729(x)
+ end
+end
+
+def fun_l18_n880(x)
+ if (x < 1)
+ fun_l19_n644(x)
+ else
+ fun_l19_n243(x)
+ end
+end
+
+def fun_l18_n881(x)
+ if (x < 1)
+ fun_l19_n440(x)
+ else
+ fun_l19_n495(x)
+ end
+end
+
+def fun_l18_n882(x)
+ if (x < 1)
+ fun_l19_n694(x)
+ else
+ fun_l19_n189(x)
+ end
+end
+
+def fun_l18_n883(x)
+ if (x < 1)
+ fun_l19_n610(x)
+ else
+ fun_l19_n802(x)
+ end
+end
+
+def fun_l18_n884(x)
+ if (x < 1)
+ fun_l19_n69(x)
+ else
+ fun_l19_n129(x)
+ end
+end
+
+def fun_l18_n885(x)
+ if (x < 1)
+ fun_l19_n837(x)
+ else
+ fun_l19_n521(x)
+ end
+end
+
+def fun_l18_n886(x)
+ if (x < 1)
+ fun_l19_n204(x)
+ else
+ fun_l19_n284(x)
+ end
+end
+
+def fun_l18_n887(x)
+ if (x < 1)
+ fun_l19_n2(x)
+ else
+ fun_l19_n378(x)
+ end
+end
+
+def fun_l18_n888(x)
+ if (x < 1)
+ fun_l19_n410(x)
+ else
+ fun_l19_n871(x)
+ end
+end
+
+def fun_l18_n889(x)
+ if (x < 1)
+ fun_l19_n976(x)
+ else
+ fun_l19_n581(x)
+ end
+end
+
+def fun_l18_n890(x)
+ if (x < 1)
+ fun_l19_n274(x)
+ else
+ fun_l19_n57(x)
+ end
+end
+
+def fun_l18_n891(x)
+ if (x < 1)
+ fun_l19_n983(x)
+ else
+ fun_l19_n900(x)
+ end
+end
+
+def fun_l18_n892(x)
+ if (x < 1)
+ fun_l19_n351(x)
+ else
+ fun_l19_n621(x)
+ end
+end
+
+def fun_l18_n893(x)
+ if (x < 1)
+ fun_l19_n539(x)
+ else
+ fun_l19_n847(x)
+ end
+end
+
+def fun_l18_n894(x)
+ if (x < 1)
+ fun_l19_n56(x)
+ else
+ fun_l19_n918(x)
+ end
+end
+
+def fun_l18_n895(x)
+ if (x < 1)
+ fun_l19_n906(x)
+ else
+ fun_l19_n509(x)
+ end
+end
+
+def fun_l18_n896(x)
+ if (x < 1)
+ fun_l19_n64(x)
+ else
+ fun_l19_n269(x)
+ end
+end
+
+def fun_l18_n897(x)
+ if (x < 1)
+ fun_l19_n348(x)
+ else
+ fun_l19_n983(x)
+ end
+end
+
+def fun_l18_n898(x)
+ if (x < 1)
+ fun_l19_n699(x)
+ else
+ fun_l19_n322(x)
+ end
+end
+
+def fun_l18_n899(x)
+ if (x < 1)
+ fun_l19_n754(x)
+ else
+ fun_l19_n608(x)
+ end
+end
+
+def fun_l18_n900(x)
+ if (x < 1)
+ fun_l19_n530(x)
+ else
+ fun_l19_n919(x)
+ end
+end
+
+def fun_l18_n901(x)
+ if (x < 1)
+ fun_l19_n359(x)
+ else
+ fun_l19_n739(x)
+ end
+end
+
+def fun_l18_n902(x)
+ if (x < 1)
+ fun_l19_n647(x)
+ else
+ fun_l19_n389(x)
+ end
+end
+
+def fun_l18_n903(x)
+ if (x < 1)
+ fun_l19_n908(x)
+ else
+ fun_l19_n680(x)
+ end
+end
+
+def fun_l18_n904(x)
+ if (x < 1)
+ fun_l19_n78(x)
+ else
+ fun_l19_n512(x)
+ end
+end
+
+def fun_l18_n905(x)
+ if (x < 1)
+ fun_l19_n514(x)
+ else
+ fun_l19_n250(x)
+ end
+end
+
+def fun_l18_n906(x)
+ if (x < 1)
+ fun_l19_n320(x)
+ else
+ fun_l19_n393(x)
+ end
+end
+
+def fun_l18_n907(x)
+ if (x < 1)
+ fun_l19_n666(x)
+ else
+ fun_l19_n846(x)
+ end
+end
+
+def fun_l18_n908(x)
+ if (x < 1)
+ fun_l19_n757(x)
+ else
+ fun_l19_n194(x)
+ end
+end
+
+def fun_l18_n909(x)
+ if (x < 1)
+ fun_l19_n386(x)
+ else
+ fun_l19_n965(x)
+ end
+end
+
+def fun_l18_n910(x)
+ if (x < 1)
+ fun_l19_n561(x)
+ else
+ fun_l19_n897(x)
+ end
+end
+
+def fun_l18_n911(x)
+ if (x < 1)
+ fun_l19_n281(x)
+ else
+ fun_l19_n960(x)
+ end
+end
+
+def fun_l18_n912(x)
+ if (x < 1)
+ fun_l19_n215(x)
+ else
+ fun_l19_n54(x)
+ end
+end
+
+def fun_l18_n913(x)
+ if (x < 1)
+ fun_l19_n561(x)
+ else
+ fun_l19_n353(x)
+ end
+end
+
+def fun_l18_n914(x)
+ if (x < 1)
+ fun_l19_n780(x)
+ else
+ fun_l19_n924(x)
+ end
+end
+
+def fun_l18_n915(x)
+ if (x < 1)
+ fun_l19_n663(x)
+ else
+ fun_l19_n112(x)
+ end
+end
+
+def fun_l18_n916(x)
+ if (x < 1)
+ fun_l19_n15(x)
+ else
+ fun_l19_n342(x)
+ end
+end
+
+def fun_l18_n917(x)
+ if (x < 1)
+ fun_l19_n226(x)
+ else
+ fun_l19_n337(x)
+ end
+end
+
+def fun_l18_n918(x)
+ if (x < 1)
+ fun_l19_n477(x)
+ else
+ fun_l19_n12(x)
+ end
+end
+
+def fun_l18_n919(x)
+ if (x < 1)
+ fun_l19_n495(x)
+ else
+ fun_l19_n721(x)
+ end
+end
+
+def fun_l18_n920(x)
+ if (x < 1)
+ fun_l19_n551(x)
+ else
+ fun_l19_n626(x)
+ end
+end
+
+def fun_l18_n921(x)
+ if (x < 1)
+ fun_l19_n491(x)
+ else
+ fun_l19_n442(x)
+ end
+end
+
+def fun_l18_n922(x)
+ if (x < 1)
+ fun_l19_n72(x)
+ else
+ fun_l19_n165(x)
+ end
+end
+
+def fun_l18_n923(x)
+ if (x < 1)
+ fun_l19_n475(x)
+ else
+ fun_l19_n381(x)
+ end
+end
+
+def fun_l18_n924(x)
+ if (x < 1)
+ fun_l19_n655(x)
+ else
+ fun_l19_n95(x)
+ end
+end
+
+def fun_l18_n925(x)
+ if (x < 1)
+ fun_l19_n882(x)
+ else
+ fun_l19_n888(x)
+ end
+end
+
+def fun_l18_n926(x)
+ if (x < 1)
+ fun_l19_n620(x)
+ else
+ fun_l19_n85(x)
+ end
+end
+
+def fun_l18_n927(x)
+ if (x < 1)
+ fun_l19_n13(x)
+ else
+ fun_l19_n776(x)
+ end
+end
+
+def fun_l18_n928(x)
+ if (x < 1)
+ fun_l19_n797(x)
+ else
+ fun_l19_n547(x)
+ end
+end
+
+def fun_l18_n929(x)
+ if (x < 1)
+ fun_l19_n34(x)
+ else
+ fun_l19_n753(x)
+ end
+end
+
+def fun_l18_n930(x)
+ if (x < 1)
+ fun_l19_n894(x)
+ else
+ fun_l19_n527(x)
+ end
+end
+
+def fun_l18_n931(x)
+ if (x < 1)
+ fun_l19_n951(x)
+ else
+ fun_l19_n261(x)
+ end
+end
+
+def fun_l18_n932(x)
+ if (x < 1)
+ fun_l19_n178(x)
+ else
+ fun_l19_n365(x)
+ end
+end
+
+def fun_l18_n933(x)
+ if (x < 1)
+ fun_l19_n813(x)
+ else
+ fun_l19_n404(x)
+ end
+end
+
+def fun_l18_n934(x)
+ if (x < 1)
+ fun_l19_n920(x)
+ else
+ fun_l19_n674(x)
+ end
+end
+
+def fun_l18_n935(x)
+ if (x < 1)
+ fun_l19_n155(x)
+ else
+ fun_l19_n250(x)
+ end
+end
+
+def fun_l18_n936(x)
+ if (x < 1)
+ fun_l19_n376(x)
+ else
+ fun_l19_n29(x)
+ end
+end
+
+def fun_l18_n937(x)
+ if (x < 1)
+ fun_l19_n104(x)
+ else
+ fun_l19_n802(x)
+ end
+end
+
+def fun_l18_n938(x)
+ if (x < 1)
+ fun_l19_n340(x)
+ else
+ fun_l19_n424(x)
+ end
+end
+
+def fun_l18_n939(x)
+ if (x < 1)
+ fun_l19_n590(x)
+ else
+ fun_l19_n525(x)
+ end
+end
+
+def fun_l18_n940(x)
+ if (x < 1)
+ fun_l19_n15(x)
+ else
+ fun_l19_n48(x)
+ end
+end
+
+def fun_l18_n941(x)
+ if (x < 1)
+ fun_l19_n83(x)
+ else
+ fun_l19_n975(x)
+ end
+end
+
+def fun_l18_n942(x)
+ if (x < 1)
+ fun_l19_n219(x)
+ else
+ fun_l19_n173(x)
+ end
+end
+
+def fun_l18_n943(x)
+ if (x < 1)
+ fun_l19_n457(x)
+ else
+ fun_l19_n956(x)
+ end
+end
+
+def fun_l18_n944(x)
+ if (x < 1)
+ fun_l19_n900(x)
+ else
+ fun_l19_n363(x)
+ end
+end
+
+def fun_l18_n945(x)
+ if (x < 1)
+ fun_l19_n973(x)
+ else
+ fun_l19_n279(x)
+ end
+end
+
+def fun_l18_n946(x)
+ if (x < 1)
+ fun_l19_n155(x)
+ else
+ fun_l19_n554(x)
+ end
+end
+
+def fun_l18_n947(x)
+ if (x < 1)
+ fun_l19_n744(x)
+ else
+ fun_l19_n854(x)
+ end
+end
+
+def fun_l18_n948(x)
+ if (x < 1)
+ fun_l19_n574(x)
+ else
+ fun_l19_n385(x)
+ end
+end
+
+def fun_l18_n949(x)
+ if (x < 1)
+ fun_l19_n447(x)
+ else
+ fun_l19_n93(x)
+ end
+end
+
+def fun_l18_n950(x)
+ if (x < 1)
+ fun_l19_n621(x)
+ else
+ fun_l19_n467(x)
+ end
+end
+
+def fun_l18_n951(x)
+ if (x < 1)
+ fun_l19_n409(x)
+ else
+ fun_l19_n260(x)
+ end
+end
+
+def fun_l18_n952(x)
+ if (x < 1)
+ fun_l19_n992(x)
+ else
+ fun_l19_n728(x)
+ end
+end
+
+def fun_l18_n953(x)
+ if (x < 1)
+ fun_l19_n760(x)
+ else
+ fun_l19_n724(x)
+ end
+end
+
+def fun_l18_n954(x)
+ if (x < 1)
+ fun_l19_n567(x)
+ else
+ fun_l19_n857(x)
+ end
+end
+
+def fun_l18_n955(x)
+ if (x < 1)
+ fun_l19_n225(x)
+ else
+ fun_l19_n132(x)
+ end
+end
+
+def fun_l18_n956(x)
+ if (x < 1)
+ fun_l19_n856(x)
+ else
+ fun_l19_n449(x)
+ end
+end
+
+def fun_l18_n957(x)
+ if (x < 1)
+ fun_l19_n200(x)
+ else
+ fun_l19_n216(x)
+ end
+end
+
+def fun_l18_n958(x)
+ if (x < 1)
+ fun_l19_n684(x)
+ else
+ fun_l19_n151(x)
+ end
+end
+
+def fun_l18_n959(x)
+ if (x < 1)
+ fun_l19_n989(x)
+ else
+ fun_l19_n137(x)
+ end
+end
+
+def fun_l18_n960(x)
+ if (x < 1)
+ fun_l19_n207(x)
+ else
+ fun_l19_n736(x)
+ end
+end
+
+def fun_l18_n961(x)
+ if (x < 1)
+ fun_l19_n984(x)
+ else
+ fun_l19_n840(x)
+ end
+end
+
+def fun_l18_n962(x)
+ if (x < 1)
+ fun_l19_n367(x)
+ else
+ fun_l19_n155(x)
+ end
+end
+
+def fun_l18_n963(x)
+ if (x < 1)
+ fun_l19_n202(x)
+ else
+ fun_l19_n237(x)
+ end
+end
+
+def fun_l18_n964(x)
+ if (x < 1)
+ fun_l19_n932(x)
+ else
+ fun_l19_n167(x)
+ end
+end
+
+def fun_l18_n965(x)
+ if (x < 1)
+ fun_l19_n269(x)
+ else
+ fun_l19_n105(x)
+ end
+end
+
+def fun_l18_n966(x)
+ if (x < 1)
+ fun_l19_n775(x)
+ else
+ fun_l19_n776(x)
+ end
+end
+
+def fun_l18_n967(x)
+ if (x < 1)
+ fun_l19_n636(x)
+ else
+ fun_l19_n460(x)
+ end
+end
+
+def fun_l18_n968(x)
+ if (x < 1)
+ fun_l19_n335(x)
+ else
+ fun_l19_n4(x)
+ end
+end
+
+def fun_l18_n969(x)
+ if (x < 1)
+ fun_l19_n987(x)
+ else
+ fun_l19_n935(x)
+ end
+end
+
+def fun_l18_n970(x)
+ if (x < 1)
+ fun_l19_n692(x)
+ else
+ fun_l19_n20(x)
+ end
+end
+
+def fun_l18_n971(x)
+ if (x < 1)
+ fun_l19_n805(x)
+ else
+ fun_l19_n139(x)
+ end
+end
+
+def fun_l18_n972(x)
+ if (x < 1)
+ fun_l19_n53(x)
+ else
+ fun_l19_n539(x)
+ end
+end
+
+def fun_l18_n973(x)
+ if (x < 1)
+ fun_l19_n620(x)
+ else
+ fun_l19_n680(x)
+ end
+end
+
+def fun_l18_n974(x)
+ if (x < 1)
+ fun_l19_n662(x)
+ else
+ fun_l19_n580(x)
+ end
+end
+
+def fun_l18_n975(x)
+ if (x < 1)
+ fun_l19_n401(x)
+ else
+ fun_l19_n428(x)
+ end
+end
+
+def fun_l18_n976(x)
+ if (x < 1)
+ fun_l19_n367(x)
+ else
+ fun_l19_n794(x)
+ end
+end
+
+def fun_l18_n977(x)
+ if (x < 1)
+ fun_l19_n204(x)
+ else
+ fun_l19_n258(x)
+ end
+end
+
+def fun_l18_n978(x)
+ if (x < 1)
+ fun_l19_n868(x)
+ else
+ fun_l19_n300(x)
+ end
+end
+
+def fun_l18_n979(x)
+ if (x < 1)
+ fun_l19_n245(x)
+ else
+ fun_l19_n460(x)
+ end
+end
+
+def fun_l18_n980(x)
+ if (x < 1)
+ fun_l19_n965(x)
+ else
+ fun_l19_n639(x)
+ end
+end
+
+def fun_l18_n981(x)
+ if (x < 1)
+ fun_l19_n903(x)
+ else
+ fun_l19_n139(x)
+ end
+end
+
+def fun_l18_n982(x)
+ if (x < 1)
+ fun_l19_n890(x)
+ else
+ fun_l19_n497(x)
+ end
+end
+
+def fun_l18_n983(x)
+ if (x < 1)
+ fun_l19_n723(x)
+ else
+ fun_l19_n705(x)
+ end
+end
+
+def fun_l18_n984(x)
+ if (x < 1)
+ fun_l19_n592(x)
+ else
+ fun_l19_n965(x)
+ end
+end
+
+def fun_l18_n985(x)
+ if (x < 1)
+ fun_l19_n660(x)
+ else
+ fun_l19_n985(x)
+ end
+end
+
+def fun_l18_n986(x)
+ if (x < 1)
+ fun_l19_n230(x)
+ else
+ fun_l19_n447(x)
+ end
+end
+
+def fun_l18_n987(x)
+ if (x < 1)
+ fun_l19_n875(x)
+ else
+ fun_l19_n86(x)
+ end
+end
+
+def fun_l18_n988(x)
+ if (x < 1)
+ fun_l19_n864(x)
+ else
+ fun_l19_n460(x)
+ end
+end
+
+def fun_l18_n989(x)
+ if (x < 1)
+ fun_l19_n834(x)
+ else
+ fun_l19_n628(x)
+ end
+end
+
+def fun_l18_n990(x)
+ if (x < 1)
+ fun_l19_n578(x)
+ else
+ fun_l19_n160(x)
+ end
+end
+
+def fun_l18_n991(x)
+ if (x < 1)
+ fun_l19_n58(x)
+ else
+ fun_l19_n839(x)
+ end
+end
+
+def fun_l18_n992(x)
+ if (x < 1)
+ fun_l19_n282(x)
+ else
+ fun_l19_n864(x)
+ end
+end
+
+def fun_l18_n993(x)
+ if (x < 1)
+ fun_l19_n957(x)
+ else
+ fun_l19_n280(x)
+ end
+end
+
+def fun_l18_n994(x)
+ if (x < 1)
+ fun_l19_n184(x)
+ else
+ fun_l19_n741(x)
+ end
+end
+
+def fun_l18_n995(x)
+ if (x < 1)
+ fun_l19_n458(x)
+ else
+ fun_l19_n802(x)
+ end
+end
+
+def fun_l18_n996(x)
+ if (x < 1)
+ fun_l19_n260(x)
+ else
+ fun_l19_n840(x)
+ end
+end
+
+def fun_l18_n997(x)
+ if (x < 1)
+ fun_l19_n500(x)
+ else
+ fun_l19_n142(x)
+ end
+end
+
+def fun_l18_n998(x)
+ if (x < 1)
+ fun_l19_n712(x)
+ else
+ fun_l19_n736(x)
+ end
+end
+
+def fun_l18_n999(x)
+ if (x < 1)
+ fun_l19_n366(x)
+ else
+ fun_l19_n726(x)
+ end
+end
+
+def fun_l19_n0(x)
+ if (x < 1)
+ fun_l20_n238(x)
+ else
+ fun_l20_n685(x)
+ end
+end
+
+def fun_l19_n1(x)
+ if (x < 1)
+ fun_l20_n892(x)
+ else
+ fun_l20_n786(x)
+ end
+end
+
+def fun_l19_n2(x)
+ if (x < 1)
+ fun_l20_n99(x)
+ else
+ fun_l20_n337(x)
+ end
+end
+
+def fun_l19_n3(x)
+ if (x < 1)
+ fun_l20_n40(x)
+ else
+ fun_l20_n773(x)
+ end
+end
+
+def fun_l19_n4(x)
+ if (x < 1)
+ fun_l20_n815(x)
+ else
+ fun_l20_n576(x)
+ end
+end
+
+def fun_l19_n5(x)
+ if (x < 1)
+ fun_l20_n294(x)
+ else
+ fun_l20_n362(x)
+ end
+end
+
+def fun_l19_n6(x)
+ if (x < 1)
+ fun_l20_n352(x)
+ else
+ fun_l20_n263(x)
+ end
+end
+
+def fun_l19_n7(x)
+ if (x < 1)
+ fun_l20_n920(x)
+ else
+ fun_l20_n164(x)
+ end
+end
+
+def fun_l19_n8(x)
+ if (x < 1)
+ fun_l20_n313(x)
+ else
+ fun_l20_n663(x)
+ end
+end
+
+def fun_l19_n9(x)
+ if (x < 1)
+ fun_l20_n261(x)
+ else
+ fun_l20_n769(x)
+ end
+end
+
+def fun_l19_n10(x)
+ if (x < 1)
+ fun_l20_n85(x)
+ else
+ fun_l20_n243(x)
+ end
+end
+
+def fun_l19_n11(x)
+ if (x < 1)
+ fun_l20_n560(x)
+ else
+ fun_l20_n969(x)
+ end
+end
+
+def fun_l19_n12(x)
+ if (x < 1)
+ fun_l20_n954(x)
+ else
+ fun_l20_n340(x)
+ end
+end
+
+def fun_l19_n13(x)
+ if (x < 1)
+ fun_l20_n548(x)
+ else
+ fun_l20_n689(x)
+ end
+end
+
+def fun_l19_n14(x)
+ if (x < 1)
+ fun_l20_n577(x)
+ else
+ fun_l20_n954(x)
+ end
+end
+
+def fun_l19_n15(x)
+ if (x < 1)
+ fun_l20_n43(x)
+ else
+ fun_l20_n3(x)
+ end
+end
+
+def fun_l19_n16(x)
+ if (x < 1)
+ fun_l20_n15(x)
+ else
+ fun_l20_n281(x)
+ end
+end
+
+def fun_l19_n17(x)
+ if (x < 1)
+ fun_l20_n439(x)
+ else
+ fun_l20_n26(x)
+ end
+end
+
+def fun_l19_n18(x)
+ if (x < 1)
+ fun_l20_n534(x)
+ else
+ fun_l20_n419(x)
+ end
+end
+
+def fun_l19_n19(x)
+ if (x < 1)
+ fun_l20_n456(x)
+ else
+ fun_l20_n959(x)
+ end
+end
+
+def fun_l19_n20(x)
+ if (x < 1)
+ fun_l20_n706(x)
+ else
+ fun_l20_n404(x)
+ end
+end
+
+def fun_l19_n21(x)
+ if (x < 1)
+ fun_l20_n559(x)
+ else
+ fun_l20_n61(x)
+ end
+end
+
+def fun_l19_n22(x)
+ if (x < 1)
+ fun_l20_n986(x)
+ else
+ fun_l20_n202(x)
+ end
+end
+
+def fun_l19_n23(x)
+ if (x < 1)
+ fun_l20_n935(x)
+ else
+ fun_l20_n804(x)
+ end
+end
+
+def fun_l19_n24(x)
+ if (x < 1)
+ fun_l20_n775(x)
+ else
+ fun_l20_n909(x)
+ end
+end
+
+def fun_l19_n25(x)
+ if (x < 1)
+ fun_l20_n28(x)
+ else
+ fun_l20_n631(x)
+ end
+end
+
+def fun_l19_n26(x)
+ if (x < 1)
+ fun_l20_n257(x)
+ else
+ fun_l20_n822(x)
+ end
+end
+
+def fun_l19_n27(x)
+ if (x < 1)
+ fun_l20_n198(x)
+ else
+ fun_l20_n1(x)
+ end
+end
+
+def fun_l19_n28(x)
+ if (x < 1)
+ fun_l20_n534(x)
+ else
+ fun_l20_n46(x)
+ end
+end
+
+def fun_l19_n29(x)
+ if (x < 1)
+ fun_l20_n880(x)
+ else
+ fun_l20_n995(x)
+ end
+end
+
+def fun_l19_n30(x)
+ if (x < 1)
+ fun_l20_n953(x)
+ else
+ fun_l20_n367(x)
+ end
+end
+
+def fun_l19_n31(x)
+ if (x < 1)
+ fun_l20_n165(x)
+ else
+ fun_l20_n404(x)
+ end
+end
+
+def fun_l19_n32(x)
+ if (x < 1)
+ fun_l20_n752(x)
+ else
+ fun_l20_n570(x)
+ end
+end
+
+def fun_l19_n33(x)
+ if (x < 1)
+ fun_l20_n973(x)
+ else
+ fun_l20_n357(x)
+ end
+end
+
+def fun_l19_n34(x)
+ if (x < 1)
+ fun_l20_n897(x)
+ else
+ fun_l20_n501(x)
+ end
+end
+
+def fun_l19_n35(x)
+ if (x < 1)
+ fun_l20_n607(x)
+ else
+ fun_l20_n679(x)
+ end
+end
+
+def fun_l19_n36(x)
+ if (x < 1)
+ fun_l20_n870(x)
+ else
+ fun_l20_n590(x)
+ end
+end
+
+def fun_l19_n37(x)
+ if (x < 1)
+ fun_l20_n620(x)
+ else
+ fun_l20_n462(x)
+ end
+end
+
+def fun_l19_n38(x)
+ if (x < 1)
+ fun_l20_n176(x)
+ else
+ fun_l20_n891(x)
+ end
+end
+
+def fun_l19_n39(x)
+ if (x < 1)
+ fun_l20_n850(x)
+ else
+ fun_l20_n730(x)
+ end
+end
+
+def fun_l19_n40(x)
+ if (x < 1)
+ fun_l20_n193(x)
+ else
+ fun_l20_n635(x)
+ end
+end
+
+def fun_l19_n41(x)
+ if (x < 1)
+ fun_l20_n443(x)
+ else
+ fun_l20_n398(x)
+ end
+end
+
+def fun_l19_n42(x)
+ if (x < 1)
+ fun_l20_n324(x)
+ else
+ fun_l20_n566(x)
+ end
+end
+
+def fun_l19_n43(x)
+ if (x < 1)
+ fun_l20_n817(x)
+ else
+ fun_l20_n791(x)
+ end
+end
+
+def fun_l19_n44(x)
+ if (x < 1)
+ fun_l20_n46(x)
+ else
+ fun_l20_n375(x)
+ end
+end
+
+def fun_l19_n45(x)
+ if (x < 1)
+ fun_l20_n504(x)
+ else
+ fun_l20_n64(x)
+ end
+end
+
+def fun_l19_n46(x)
+ if (x < 1)
+ fun_l20_n174(x)
+ else
+ fun_l20_n621(x)
+ end
+end
+
+def fun_l19_n47(x)
+ if (x < 1)
+ fun_l20_n756(x)
+ else
+ fun_l20_n857(x)
+ end
+end
+
+def fun_l19_n48(x)
+ if (x < 1)
+ fun_l20_n635(x)
+ else
+ fun_l20_n216(x)
+ end
+end
+
+def fun_l19_n49(x)
+ if (x < 1)
+ fun_l20_n806(x)
+ else
+ fun_l20_n291(x)
+ end
+end
+
+def fun_l19_n50(x)
+ if (x < 1)
+ fun_l20_n998(x)
+ else
+ fun_l20_n46(x)
+ end
+end
+
+def fun_l19_n51(x)
+ if (x < 1)
+ fun_l20_n685(x)
+ else
+ fun_l20_n968(x)
+ end
+end
+
+def fun_l19_n52(x)
+ if (x < 1)
+ fun_l20_n906(x)
+ else
+ fun_l20_n788(x)
+ end
+end
+
+def fun_l19_n53(x)
+ if (x < 1)
+ fun_l20_n814(x)
+ else
+ fun_l20_n343(x)
+ end
+end
+
+def fun_l19_n54(x)
+ if (x < 1)
+ fun_l20_n320(x)
+ else
+ fun_l20_n293(x)
+ end
+end
+
+def fun_l19_n55(x)
+ if (x < 1)
+ fun_l20_n608(x)
+ else
+ fun_l20_n958(x)
+ end
+end
+
+def fun_l19_n56(x)
+ if (x < 1)
+ fun_l20_n83(x)
+ else
+ fun_l20_n839(x)
+ end
+end
+
+def fun_l19_n57(x)
+ if (x < 1)
+ fun_l20_n618(x)
+ else
+ fun_l20_n483(x)
+ end
+end
+
+def fun_l19_n58(x)
+ if (x < 1)
+ fun_l20_n647(x)
+ else
+ fun_l20_n782(x)
+ end
+end
+
+def fun_l19_n59(x)
+ if (x < 1)
+ fun_l20_n664(x)
+ else
+ fun_l20_n3(x)
+ end
+end
+
+def fun_l19_n60(x)
+ if (x < 1)
+ fun_l20_n556(x)
+ else
+ fun_l20_n185(x)
+ end
+end
+
+def fun_l19_n61(x)
+ if (x < 1)
+ fun_l20_n657(x)
+ else
+ fun_l20_n162(x)
+ end
+end
+
+def fun_l19_n62(x)
+ if (x < 1)
+ fun_l20_n668(x)
+ else
+ fun_l20_n585(x)
+ end
+end
+
+def fun_l19_n63(x)
+ if (x < 1)
+ fun_l20_n913(x)
+ else
+ fun_l20_n855(x)
+ end
+end
+
+def fun_l19_n64(x)
+ if (x < 1)
+ fun_l20_n331(x)
+ else
+ fun_l20_n71(x)
+ end
+end
+
+def fun_l19_n65(x)
+ if (x < 1)
+ fun_l20_n321(x)
+ else
+ fun_l20_n314(x)
+ end
+end
+
+def fun_l19_n66(x)
+ if (x < 1)
+ fun_l20_n512(x)
+ else
+ fun_l20_n607(x)
+ end
+end
+
+def fun_l19_n67(x)
+ if (x < 1)
+ fun_l20_n649(x)
+ else
+ fun_l20_n733(x)
+ end
+end
+
+def fun_l19_n68(x)
+ if (x < 1)
+ fun_l20_n651(x)
+ else
+ fun_l20_n844(x)
+ end
+end
+
+def fun_l19_n69(x)
+ if (x < 1)
+ fun_l20_n510(x)
+ else
+ fun_l20_n675(x)
+ end
+end
+
+def fun_l19_n70(x)
+ if (x < 1)
+ fun_l20_n830(x)
+ else
+ fun_l20_n338(x)
+ end
+end
+
+def fun_l19_n71(x)
+ if (x < 1)
+ fun_l20_n110(x)
+ else
+ fun_l20_n806(x)
+ end
+end
+
+def fun_l19_n72(x)
+ if (x < 1)
+ fun_l20_n588(x)
+ else
+ fun_l20_n7(x)
+ end
+end
+
+def fun_l19_n73(x)
+ if (x < 1)
+ fun_l20_n495(x)
+ else
+ fun_l20_n293(x)
+ end
+end
+
+def fun_l19_n74(x)
+ if (x < 1)
+ fun_l20_n891(x)
+ else
+ fun_l20_n514(x)
+ end
+end
+
+def fun_l19_n75(x)
+ if (x < 1)
+ fun_l20_n419(x)
+ else
+ fun_l20_n934(x)
+ end
+end
+
+def fun_l19_n76(x)
+ if (x < 1)
+ fun_l20_n476(x)
+ else
+ fun_l20_n652(x)
+ end
+end
+
+def fun_l19_n77(x)
+ if (x < 1)
+ fun_l20_n927(x)
+ else
+ fun_l20_n656(x)
+ end
+end
+
+def fun_l19_n78(x)
+ if (x < 1)
+ fun_l20_n361(x)
+ else
+ fun_l20_n847(x)
+ end
+end
+
+def fun_l19_n79(x)
+ if (x < 1)
+ fun_l20_n584(x)
+ else
+ fun_l20_n24(x)
+ end
+end
+
+def fun_l19_n80(x)
+ if (x < 1)
+ fun_l20_n428(x)
+ else
+ fun_l20_n219(x)
+ end
+end
+
+def fun_l19_n81(x)
+ if (x < 1)
+ fun_l20_n922(x)
+ else
+ fun_l20_n758(x)
+ end
+end
+
+def fun_l19_n82(x)
+ if (x < 1)
+ fun_l20_n188(x)
+ else
+ fun_l20_n378(x)
+ end
+end
+
+def fun_l19_n83(x)
+ if (x < 1)
+ fun_l20_n239(x)
+ else
+ fun_l20_n690(x)
+ end
+end
+
+def fun_l19_n84(x)
+ if (x < 1)
+ fun_l20_n262(x)
+ else
+ fun_l20_n162(x)
+ end
+end
+
+def fun_l19_n85(x)
+ if (x < 1)
+ fun_l20_n117(x)
+ else
+ fun_l20_n117(x)
+ end
+end
+
+def fun_l19_n86(x)
+ if (x < 1)
+ fun_l20_n154(x)
+ else
+ fun_l20_n564(x)
+ end
+end
+
+def fun_l19_n87(x)
+ if (x < 1)
+ fun_l20_n560(x)
+ else
+ fun_l20_n591(x)
+ end
+end
+
+def fun_l19_n88(x)
+ if (x < 1)
+ fun_l20_n529(x)
+ else
+ fun_l20_n107(x)
+ end
+end
+
+def fun_l19_n89(x)
+ if (x < 1)
+ fun_l20_n609(x)
+ else
+ fun_l20_n287(x)
+ end
+end
+
+def fun_l19_n90(x)
+ if (x < 1)
+ fun_l20_n780(x)
+ else
+ fun_l20_n397(x)
+ end
+end
+
+def fun_l19_n91(x)
+ if (x < 1)
+ fun_l20_n587(x)
+ else
+ fun_l20_n416(x)
+ end
+end
+
+def fun_l19_n92(x)
+ if (x < 1)
+ fun_l20_n784(x)
+ else
+ fun_l20_n413(x)
+ end
+end
+
+def fun_l19_n93(x)
+ if (x < 1)
+ fun_l20_n83(x)
+ else
+ fun_l20_n560(x)
+ end
+end
+
+def fun_l19_n94(x)
+ if (x < 1)
+ fun_l20_n126(x)
+ else
+ fun_l20_n67(x)
+ end
+end
+
+def fun_l19_n95(x)
+ if (x < 1)
+ fun_l20_n22(x)
+ else
+ fun_l20_n865(x)
+ end
+end
+
+def fun_l19_n96(x)
+ if (x < 1)
+ fun_l20_n35(x)
+ else
+ fun_l20_n160(x)
+ end
+end
+
+def fun_l19_n97(x)
+ if (x < 1)
+ fun_l20_n701(x)
+ else
+ fun_l20_n139(x)
+ end
+end
+
+def fun_l19_n98(x)
+ if (x < 1)
+ fun_l20_n488(x)
+ else
+ fun_l20_n407(x)
+ end
+end
+
+def fun_l19_n99(x)
+ if (x < 1)
+ fun_l20_n636(x)
+ else
+ fun_l20_n135(x)
+ end
+end
+
+def fun_l19_n100(x)
+ if (x < 1)
+ fun_l20_n83(x)
+ else
+ fun_l20_n923(x)
+ end
+end
+
+def fun_l19_n101(x)
+ if (x < 1)
+ fun_l20_n232(x)
+ else
+ fun_l20_n955(x)
+ end
+end
+
+def fun_l19_n102(x)
+ if (x < 1)
+ fun_l20_n816(x)
+ else
+ fun_l20_n671(x)
+ end
+end
+
+def fun_l19_n103(x)
+ if (x < 1)
+ fun_l20_n366(x)
+ else
+ fun_l20_n646(x)
+ end
+end
+
+def fun_l19_n104(x)
+ if (x < 1)
+ fun_l20_n465(x)
+ else
+ fun_l20_n659(x)
+ end
+end
+
+def fun_l19_n105(x)
+ if (x < 1)
+ fun_l20_n488(x)
+ else
+ fun_l20_n720(x)
+ end
+end
+
+def fun_l19_n106(x)
+ if (x < 1)
+ fun_l20_n278(x)
+ else
+ fun_l20_n570(x)
+ end
+end
+
+def fun_l19_n107(x)
+ if (x < 1)
+ fun_l20_n630(x)
+ else
+ fun_l20_n280(x)
+ end
+end
+
+def fun_l19_n108(x)
+ if (x < 1)
+ fun_l20_n688(x)
+ else
+ fun_l20_n999(x)
+ end
+end
+
+def fun_l19_n109(x)
+ if (x < 1)
+ fun_l20_n175(x)
+ else
+ fun_l20_n633(x)
+ end
+end
+
+def fun_l19_n110(x)
+ if (x < 1)
+ fun_l20_n111(x)
+ else
+ fun_l20_n130(x)
+ end
+end
+
+def fun_l19_n111(x)
+ if (x < 1)
+ fun_l20_n405(x)
+ else
+ fun_l20_n148(x)
+ end
+end
+
+def fun_l19_n112(x)
+ if (x < 1)
+ fun_l20_n645(x)
+ else
+ fun_l20_n303(x)
+ end
+end
+
+def fun_l19_n113(x)
+ if (x < 1)
+ fun_l20_n685(x)
+ else
+ fun_l20_n122(x)
+ end
+end
+
+def fun_l19_n114(x)
+ if (x < 1)
+ fun_l20_n808(x)
+ else
+ fun_l20_n780(x)
+ end
+end
+
+def fun_l19_n115(x)
+ if (x < 1)
+ fun_l20_n136(x)
+ else
+ fun_l20_n749(x)
+ end
+end
+
+def fun_l19_n116(x)
+ if (x < 1)
+ fun_l20_n134(x)
+ else
+ fun_l20_n291(x)
+ end
+end
+
+def fun_l19_n117(x)
+ if (x < 1)
+ fun_l20_n288(x)
+ else
+ fun_l20_n759(x)
+ end
+end
+
+def fun_l19_n118(x)
+ if (x < 1)
+ fun_l20_n617(x)
+ else
+ fun_l20_n823(x)
+ end
+end
+
+def fun_l19_n119(x)
+ if (x < 1)
+ fun_l20_n412(x)
+ else
+ fun_l20_n548(x)
+ end
+end
+
+def fun_l19_n120(x)
+ if (x < 1)
+ fun_l20_n897(x)
+ else
+ fun_l20_n455(x)
+ end
+end
+
+def fun_l19_n121(x)
+ if (x < 1)
+ fun_l20_n105(x)
+ else
+ fun_l20_n753(x)
+ end
+end
+
+def fun_l19_n122(x)
+ if (x < 1)
+ fun_l20_n84(x)
+ else
+ fun_l20_n575(x)
+ end
+end
+
+def fun_l19_n123(x)
+ if (x < 1)
+ fun_l20_n326(x)
+ else
+ fun_l20_n858(x)
+ end
+end
+
+def fun_l19_n124(x)
+ if (x < 1)
+ fun_l20_n878(x)
+ else
+ fun_l20_n348(x)
+ end
+end
+
+def fun_l19_n125(x)
+ if (x < 1)
+ fun_l20_n285(x)
+ else
+ fun_l20_n182(x)
+ end
+end
+
+def fun_l19_n126(x)
+ if (x < 1)
+ fun_l20_n560(x)
+ else
+ fun_l20_n413(x)
+ end
+end
+
+def fun_l19_n127(x)
+ if (x < 1)
+ fun_l20_n597(x)
+ else
+ fun_l20_n748(x)
+ end
+end
+
+def fun_l19_n128(x)
+ if (x < 1)
+ fun_l20_n642(x)
+ else
+ fun_l20_n529(x)
+ end
+end
+
+def fun_l19_n129(x)
+ if (x < 1)
+ fun_l20_n842(x)
+ else
+ fun_l20_n228(x)
+ end
+end
+
+def fun_l19_n130(x)
+ if (x < 1)
+ fun_l20_n283(x)
+ else
+ fun_l20_n656(x)
+ end
+end
+
+def fun_l19_n131(x)
+ if (x < 1)
+ fun_l20_n699(x)
+ else
+ fun_l20_n135(x)
+ end
+end
+
+def fun_l19_n132(x)
+ if (x < 1)
+ fun_l20_n276(x)
+ else
+ fun_l20_n41(x)
+ end
+end
+
+def fun_l19_n133(x)
+ if (x < 1)
+ fun_l20_n734(x)
+ else
+ fun_l20_n157(x)
+ end
+end
+
+def fun_l19_n134(x)
+ if (x < 1)
+ fun_l20_n612(x)
+ else
+ fun_l20_n318(x)
+ end
+end
+
+def fun_l19_n135(x)
+ if (x < 1)
+ fun_l20_n345(x)
+ else
+ fun_l20_n332(x)
+ end
+end
+
+def fun_l19_n136(x)
+ if (x < 1)
+ fun_l20_n131(x)
+ else
+ fun_l20_n747(x)
+ end
+end
+
+def fun_l19_n137(x)
+ if (x < 1)
+ fun_l20_n911(x)
+ else
+ fun_l20_n84(x)
+ end
+end
+
+def fun_l19_n138(x)
+ if (x < 1)
+ fun_l20_n665(x)
+ else
+ fun_l20_n194(x)
+ end
+end
+
+def fun_l19_n139(x)
+ if (x < 1)
+ fun_l20_n301(x)
+ else
+ fun_l20_n71(x)
+ end
+end
+
+def fun_l19_n140(x)
+ if (x < 1)
+ fun_l20_n432(x)
+ else
+ fun_l20_n679(x)
+ end
+end
+
+def fun_l19_n141(x)
+ if (x < 1)
+ fun_l20_n628(x)
+ else
+ fun_l20_n268(x)
+ end
+end
+
+def fun_l19_n142(x)
+ if (x < 1)
+ fun_l20_n982(x)
+ else
+ fun_l20_n241(x)
+ end
+end
+
+def fun_l19_n143(x)
+ if (x < 1)
+ fun_l20_n35(x)
+ else
+ fun_l20_n593(x)
+ end
+end
+
+def fun_l19_n144(x)
+ if (x < 1)
+ fun_l20_n791(x)
+ else
+ fun_l20_n960(x)
+ end
+end
+
+def fun_l19_n145(x)
+ if (x < 1)
+ fun_l20_n613(x)
+ else
+ fun_l20_n366(x)
+ end
+end
+
+def fun_l19_n146(x)
+ if (x < 1)
+ fun_l20_n997(x)
+ else
+ fun_l20_n7(x)
+ end
+end
+
+def fun_l19_n147(x)
+ if (x < 1)
+ fun_l20_n206(x)
+ else
+ fun_l20_n785(x)
+ end
+end
+
+def fun_l19_n148(x)
+ if (x < 1)
+ fun_l20_n822(x)
+ else
+ fun_l20_n178(x)
+ end
+end
+
+def fun_l19_n149(x)
+ if (x < 1)
+ fun_l20_n793(x)
+ else
+ fun_l20_n860(x)
+ end
+end
+
+def fun_l19_n150(x)
+ if (x < 1)
+ fun_l20_n260(x)
+ else
+ fun_l20_n523(x)
+ end
+end
+
+def fun_l19_n151(x)
+ if (x < 1)
+ fun_l20_n848(x)
+ else
+ fun_l20_n568(x)
+ end
+end
+
+def fun_l19_n152(x)
+ if (x < 1)
+ fun_l20_n466(x)
+ else
+ fun_l20_n959(x)
+ end
+end
+
+def fun_l19_n153(x)
+ if (x < 1)
+ fun_l20_n972(x)
+ else
+ fun_l20_n780(x)
+ end
+end
+
+def fun_l19_n154(x)
+ if (x < 1)
+ fun_l20_n349(x)
+ else
+ fun_l20_n490(x)
+ end
+end
+
+def fun_l19_n155(x)
+ if (x < 1)
+ fun_l20_n658(x)
+ else
+ fun_l20_n766(x)
+ end
+end
+
+def fun_l19_n156(x)
+ if (x < 1)
+ fun_l20_n788(x)
+ else
+ fun_l20_n961(x)
+ end
+end
+
+def fun_l19_n157(x)
+ if (x < 1)
+ fun_l20_n32(x)
+ else
+ fun_l20_n155(x)
+ end
+end
+
+def fun_l19_n158(x)
+ if (x < 1)
+ fun_l20_n820(x)
+ else
+ fun_l20_n317(x)
+ end
+end
+
+def fun_l19_n159(x)
+ if (x < 1)
+ fun_l20_n818(x)
+ else
+ fun_l20_n570(x)
+ end
+end
+
+def fun_l19_n160(x)
+ if (x < 1)
+ fun_l20_n82(x)
+ else
+ fun_l20_n331(x)
+ end
+end
+
+def fun_l19_n161(x)
+ if (x < 1)
+ fun_l20_n576(x)
+ else
+ fun_l20_n134(x)
+ end
+end
+
+def fun_l19_n162(x)
+ if (x < 1)
+ fun_l20_n287(x)
+ else
+ fun_l20_n748(x)
+ end
+end
+
+def fun_l19_n163(x)
+ if (x < 1)
+ fun_l20_n855(x)
+ else
+ fun_l20_n97(x)
+ end
+end
+
+def fun_l19_n164(x)
+ if (x < 1)
+ fun_l20_n218(x)
+ else
+ fun_l20_n195(x)
+ end
+end
+
+def fun_l19_n165(x)
+ if (x < 1)
+ fun_l20_n179(x)
+ else
+ fun_l20_n566(x)
+ end
+end
+
+def fun_l19_n166(x)
+ if (x < 1)
+ fun_l20_n833(x)
+ else
+ fun_l20_n35(x)
+ end
+end
+
+def fun_l19_n167(x)
+ if (x < 1)
+ fun_l20_n595(x)
+ else
+ fun_l20_n344(x)
+ end
+end
+
+def fun_l19_n168(x)
+ if (x < 1)
+ fun_l20_n171(x)
+ else
+ fun_l20_n199(x)
+ end
+end
+
+def fun_l19_n169(x)
+ if (x < 1)
+ fun_l20_n531(x)
+ else
+ fun_l20_n385(x)
+ end
+end
+
+def fun_l19_n170(x)
+ if (x < 1)
+ fun_l20_n168(x)
+ else
+ fun_l20_n911(x)
+ end
+end
+
+def fun_l19_n171(x)
+ if (x < 1)
+ fun_l20_n767(x)
+ else
+ fun_l20_n521(x)
+ end
+end
+
+def fun_l19_n172(x)
+ if (x < 1)
+ fun_l20_n769(x)
+ else
+ fun_l20_n56(x)
+ end
+end
+
+def fun_l19_n173(x)
+ if (x < 1)
+ fun_l20_n521(x)
+ else
+ fun_l20_n600(x)
+ end
+end
+
+def fun_l19_n174(x)
+ if (x < 1)
+ fun_l20_n239(x)
+ else
+ fun_l20_n22(x)
+ end
+end
+
+def fun_l19_n175(x)
+ if (x < 1)
+ fun_l20_n963(x)
+ else
+ fun_l20_n497(x)
+ end
+end
+
+def fun_l19_n176(x)
+ if (x < 1)
+ fun_l20_n989(x)
+ else
+ fun_l20_n748(x)
+ end
+end
+
+def fun_l19_n177(x)
+ if (x < 1)
+ fun_l20_n105(x)
+ else
+ fun_l20_n315(x)
+ end
+end
+
+def fun_l19_n178(x)
+ if (x < 1)
+ fun_l20_n48(x)
+ else
+ fun_l20_n550(x)
+ end
+end
+
+def fun_l19_n179(x)
+ if (x < 1)
+ fun_l20_n66(x)
+ else
+ fun_l20_n595(x)
+ end
+end
+
+def fun_l19_n180(x)
+ if (x < 1)
+ fun_l20_n692(x)
+ else
+ fun_l20_n71(x)
+ end
+end
+
+def fun_l19_n181(x)
+ if (x < 1)
+ fun_l20_n639(x)
+ else
+ fun_l20_n869(x)
+ end
+end
+
+def fun_l19_n182(x)
+ if (x < 1)
+ fun_l20_n925(x)
+ else
+ fun_l20_n868(x)
+ end
+end
+
+def fun_l19_n183(x)
+ if (x < 1)
+ fun_l20_n890(x)
+ else
+ fun_l20_n924(x)
+ end
+end
+
+def fun_l19_n184(x)
+ if (x < 1)
+ fun_l20_n579(x)
+ else
+ fun_l20_n349(x)
+ end
+end
+
+def fun_l19_n185(x)
+ if (x < 1)
+ fun_l20_n313(x)
+ else
+ fun_l20_n16(x)
+ end
+end
+
+def fun_l19_n186(x)
+ if (x < 1)
+ fun_l20_n947(x)
+ else
+ fun_l20_n644(x)
+ end
+end
+
+def fun_l19_n187(x)
+ if (x < 1)
+ fun_l20_n424(x)
+ else
+ fun_l20_n815(x)
+ end
+end
+
+def fun_l19_n188(x)
+ if (x < 1)
+ fun_l20_n177(x)
+ else
+ fun_l20_n230(x)
+ end
+end
+
+def fun_l19_n189(x)
+ if (x < 1)
+ fun_l20_n556(x)
+ else
+ fun_l20_n47(x)
+ end
+end
+
+def fun_l19_n190(x)
+ if (x < 1)
+ fun_l20_n804(x)
+ else
+ fun_l20_n516(x)
+ end
+end
+
+def fun_l19_n191(x)
+ if (x < 1)
+ fun_l20_n411(x)
+ else
+ fun_l20_n779(x)
+ end
+end
+
+def fun_l19_n192(x)
+ if (x < 1)
+ fun_l20_n124(x)
+ else
+ fun_l20_n827(x)
+ end
+end
+
+def fun_l19_n193(x)
+ if (x < 1)
+ fun_l20_n514(x)
+ else
+ fun_l20_n516(x)
+ end
+end
+
+def fun_l19_n194(x)
+ if (x < 1)
+ fun_l20_n134(x)
+ else
+ fun_l20_n356(x)
+ end
+end
+
+def fun_l19_n195(x)
+ if (x < 1)
+ fun_l20_n499(x)
+ else
+ fun_l20_n809(x)
+ end
+end
+
+def fun_l19_n196(x)
+ if (x < 1)
+ fun_l20_n958(x)
+ else
+ fun_l20_n675(x)
+ end
+end
+
+def fun_l19_n197(x)
+ if (x < 1)
+ fun_l20_n847(x)
+ else
+ fun_l20_n418(x)
+ end
+end
+
+def fun_l19_n198(x)
+ if (x < 1)
+ fun_l20_n294(x)
+ else
+ fun_l20_n510(x)
+ end
+end
+
+def fun_l19_n199(x)
+ if (x < 1)
+ fun_l20_n365(x)
+ else
+ fun_l20_n952(x)
+ end
+end
+
+def fun_l19_n200(x)
+ if (x < 1)
+ fun_l20_n961(x)
+ else
+ fun_l20_n747(x)
+ end
+end
+
+def fun_l19_n201(x)
+ if (x < 1)
+ fun_l20_n731(x)
+ else
+ fun_l20_n618(x)
+ end
+end
+
+def fun_l19_n202(x)
+ if (x < 1)
+ fun_l20_n825(x)
+ else
+ fun_l20_n907(x)
+ end
+end
+
+def fun_l19_n203(x)
+ if (x < 1)
+ fun_l20_n865(x)
+ else
+ fun_l20_n886(x)
+ end
+end
+
+def fun_l19_n204(x)
+ if (x < 1)
+ fun_l20_n732(x)
+ else
+ fun_l20_n823(x)
+ end
+end
+
+def fun_l19_n205(x)
+ if (x < 1)
+ fun_l20_n305(x)
+ else
+ fun_l20_n596(x)
+ end
+end
+
+def fun_l19_n206(x)
+ if (x < 1)
+ fun_l20_n245(x)
+ else
+ fun_l20_n370(x)
+ end
+end
+
+def fun_l19_n207(x)
+ if (x < 1)
+ fun_l20_n728(x)
+ else
+ fun_l20_n917(x)
+ end
+end
+
+def fun_l19_n208(x)
+ if (x < 1)
+ fun_l20_n448(x)
+ else
+ fun_l20_n904(x)
+ end
+end
+
+def fun_l19_n209(x)
+ if (x < 1)
+ fun_l20_n90(x)
+ else
+ fun_l20_n181(x)
+ end
+end
+
+def fun_l19_n210(x)
+ if (x < 1)
+ fun_l20_n569(x)
+ else
+ fun_l20_n268(x)
+ end
+end
+
+def fun_l19_n211(x)
+ if (x < 1)
+ fun_l20_n772(x)
+ else
+ fun_l20_n770(x)
+ end
+end
+
+def fun_l19_n212(x)
+ if (x < 1)
+ fun_l20_n781(x)
+ else
+ fun_l20_n603(x)
+ end
+end
+
+def fun_l19_n213(x)
+ if (x < 1)
+ fun_l20_n733(x)
+ else
+ fun_l20_n904(x)
+ end
+end
+
+def fun_l19_n214(x)
+ if (x < 1)
+ fun_l20_n303(x)
+ else
+ fun_l20_n888(x)
+ end
+end
+
+def fun_l19_n215(x)
+ if (x < 1)
+ fun_l20_n280(x)
+ else
+ fun_l20_n428(x)
+ end
+end
+
+def fun_l19_n216(x)
+ if (x < 1)
+ fun_l20_n737(x)
+ else
+ fun_l20_n483(x)
+ end
+end
+
+def fun_l19_n217(x)
+ if (x < 1)
+ fun_l20_n780(x)
+ else
+ fun_l20_n240(x)
+ end
+end
+
+def fun_l19_n218(x)
+ if (x < 1)
+ fun_l20_n202(x)
+ else
+ fun_l20_n580(x)
+ end
+end
+
+def fun_l19_n219(x)
+ if (x < 1)
+ fun_l20_n837(x)
+ else
+ fun_l20_n83(x)
+ end
+end
+
+def fun_l19_n220(x)
+ if (x < 1)
+ fun_l20_n68(x)
+ else
+ fun_l20_n292(x)
+ end
+end
+
+def fun_l19_n221(x)
+ if (x < 1)
+ fun_l20_n289(x)
+ else
+ fun_l20_n655(x)
+ end
+end
+
+def fun_l19_n222(x)
+ if (x < 1)
+ fun_l20_n505(x)
+ else
+ fun_l20_n660(x)
+ end
+end
+
+def fun_l19_n223(x)
+ if (x < 1)
+ fun_l20_n534(x)
+ else
+ fun_l20_n391(x)
+ end
+end
+
+def fun_l19_n224(x)
+ if (x < 1)
+ fun_l20_n72(x)
+ else
+ fun_l20_n81(x)
+ end
+end
+
+def fun_l19_n225(x)
+ if (x < 1)
+ fun_l20_n194(x)
+ else
+ fun_l20_n437(x)
+ end
+end
+
+def fun_l19_n226(x)
+ if (x < 1)
+ fun_l20_n629(x)
+ else
+ fun_l20_n645(x)
+ end
+end
+
+def fun_l19_n227(x)
+ if (x < 1)
+ fun_l20_n912(x)
+ else
+ fun_l20_n425(x)
+ end
+end
+
+def fun_l19_n228(x)
+ if (x < 1)
+ fun_l20_n773(x)
+ else
+ fun_l20_n456(x)
+ end
+end
+
+def fun_l19_n229(x)
+ if (x < 1)
+ fun_l20_n247(x)
+ else
+ fun_l20_n275(x)
+ end
+end
+
+def fun_l19_n230(x)
+ if (x < 1)
+ fun_l20_n263(x)
+ else
+ fun_l20_n482(x)
+ end
+end
+
+def fun_l19_n231(x)
+ if (x < 1)
+ fun_l20_n999(x)
+ else
+ fun_l20_n146(x)
+ end
+end
+
+def fun_l19_n232(x)
+ if (x < 1)
+ fun_l20_n117(x)
+ else
+ fun_l20_n851(x)
+ end
+end
+
+def fun_l19_n233(x)
+ if (x < 1)
+ fun_l20_n889(x)
+ else
+ fun_l20_n441(x)
+ end
+end
+
+def fun_l19_n234(x)
+ if (x < 1)
+ fun_l20_n885(x)
+ else
+ fun_l20_n374(x)
+ end
+end
+
+def fun_l19_n235(x)
+ if (x < 1)
+ fun_l20_n703(x)
+ else
+ fun_l20_n962(x)
+ end
+end
+
+def fun_l19_n236(x)
+ if (x < 1)
+ fun_l20_n298(x)
+ else
+ fun_l20_n57(x)
+ end
+end
+
+def fun_l19_n237(x)
+ if (x < 1)
+ fun_l20_n821(x)
+ else
+ fun_l20_n120(x)
+ end
+end
+
+def fun_l19_n238(x)
+ if (x < 1)
+ fun_l20_n437(x)
+ else
+ fun_l20_n204(x)
+ end
+end
+
+def fun_l19_n239(x)
+ if (x < 1)
+ fun_l20_n558(x)
+ else
+ fun_l20_n645(x)
+ end
+end
+
+def fun_l19_n240(x)
+ if (x < 1)
+ fun_l20_n631(x)
+ else
+ fun_l20_n986(x)
+ end
+end
+
+def fun_l19_n241(x)
+ if (x < 1)
+ fun_l20_n418(x)
+ else
+ fun_l20_n738(x)
+ end
+end
+
+def fun_l19_n242(x)
+ if (x < 1)
+ fun_l20_n249(x)
+ else
+ fun_l20_n322(x)
+ end
+end
+
+def fun_l19_n243(x)
+ if (x < 1)
+ fun_l20_n484(x)
+ else
+ fun_l20_n270(x)
+ end
+end
+
+def fun_l19_n244(x)
+ if (x < 1)
+ fun_l20_n749(x)
+ else
+ fun_l20_n322(x)
+ end
+end
+
+def fun_l19_n245(x)
+ if (x < 1)
+ fun_l20_n562(x)
+ else
+ fun_l20_n353(x)
+ end
+end
+
+def fun_l19_n246(x)
+ if (x < 1)
+ fun_l20_n974(x)
+ else
+ fun_l20_n333(x)
+ end
+end
+
+def fun_l19_n247(x)
+ if (x < 1)
+ fun_l20_n929(x)
+ else
+ fun_l20_n885(x)
+ end
+end
+
+def fun_l19_n248(x)
+ if (x < 1)
+ fun_l20_n421(x)
+ else
+ fun_l20_n576(x)
+ end
+end
+
+def fun_l19_n249(x)
+ if (x < 1)
+ fun_l20_n757(x)
+ else
+ fun_l20_n618(x)
+ end
+end
+
+def fun_l19_n250(x)
+ if (x < 1)
+ fun_l20_n108(x)
+ else
+ fun_l20_n704(x)
+ end
+end
+
+def fun_l19_n251(x)
+ if (x < 1)
+ fun_l20_n882(x)
+ else
+ fun_l20_n994(x)
+ end
+end
+
+def fun_l19_n252(x)
+ if (x < 1)
+ fun_l20_n995(x)
+ else
+ fun_l20_n580(x)
+ end
+end
+
+def fun_l19_n253(x)
+ if (x < 1)
+ fun_l20_n869(x)
+ else
+ fun_l20_n302(x)
+ end
+end
+
+def fun_l19_n254(x)
+ if (x < 1)
+ fun_l20_n873(x)
+ else
+ fun_l20_n315(x)
+ end
+end
+
+def fun_l19_n255(x)
+ if (x < 1)
+ fun_l20_n266(x)
+ else
+ fun_l20_n263(x)
+ end
+end
+
+def fun_l19_n256(x)
+ if (x < 1)
+ fun_l20_n450(x)
+ else
+ fun_l20_n994(x)
+ end
+end
+
+def fun_l19_n257(x)
+ if (x < 1)
+ fun_l20_n552(x)
+ else
+ fun_l20_n407(x)
+ end
+end
+
+def fun_l19_n258(x)
+ if (x < 1)
+ fun_l20_n603(x)
+ else
+ fun_l20_n453(x)
+ end
+end
+
+def fun_l19_n259(x)
+ if (x < 1)
+ fun_l20_n933(x)
+ else
+ fun_l20_n609(x)
+ end
+end
+
+def fun_l19_n260(x)
+ if (x < 1)
+ fun_l20_n983(x)
+ else
+ fun_l20_n404(x)
+ end
+end
+
+def fun_l19_n261(x)
+ if (x < 1)
+ fun_l20_n123(x)
+ else
+ fun_l20_n159(x)
+ end
+end
+
+def fun_l19_n262(x)
+ if (x < 1)
+ fun_l20_n890(x)
+ else
+ fun_l20_n749(x)
+ end
+end
+
+def fun_l19_n263(x)
+ if (x < 1)
+ fun_l20_n758(x)
+ else
+ fun_l20_n123(x)
+ end
+end
+
+def fun_l19_n264(x)
+ if (x < 1)
+ fun_l20_n194(x)
+ else
+ fun_l20_n645(x)
+ end
+end
+
+def fun_l19_n265(x)
+ if (x < 1)
+ fun_l20_n71(x)
+ else
+ fun_l20_n750(x)
+ end
+end
+
+def fun_l19_n266(x)
+ if (x < 1)
+ fun_l20_n713(x)
+ else
+ fun_l20_n125(x)
+ end
+end
+
+def fun_l19_n267(x)
+ if (x < 1)
+ fun_l20_n286(x)
+ else
+ fun_l20_n227(x)
+ end
+end
+
+def fun_l19_n268(x)
+ if (x < 1)
+ fun_l20_n220(x)
+ else
+ fun_l20_n233(x)
+ end
+end
+
+def fun_l19_n269(x)
+ if (x < 1)
+ fun_l20_n263(x)
+ else
+ fun_l20_n306(x)
+ end
+end
+
+def fun_l19_n270(x)
+ if (x < 1)
+ fun_l20_n959(x)
+ else
+ fun_l20_n552(x)
+ end
+end
+
+def fun_l19_n271(x)
+ if (x < 1)
+ fun_l20_n154(x)
+ else
+ fun_l20_n212(x)
+ end
+end
+
+def fun_l19_n272(x)
+ if (x < 1)
+ fun_l20_n985(x)
+ else
+ fun_l20_n370(x)
+ end
+end
+
+def fun_l19_n273(x)
+ if (x < 1)
+ fun_l20_n763(x)
+ else
+ fun_l20_n897(x)
+ end
+end
+
+def fun_l19_n274(x)
+ if (x < 1)
+ fun_l20_n582(x)
+ else
+ fun_l20_n638(x)
+ end
+end
+
+def fun_l19_n275(x)
+ if (x < 1)
+ fun_l20_n509(x)
+ else
+ fun_l20_n366(x)
+ end
+end
+
+def fun_l19_n276(x)
+ if (x < 1)
+ fun_l20_n500(x)
+ else
+ fun_l20_n814(x)
+ end
+end
+
+def fun_l19_n277(x)
+ if (x < 1)
+ fun_l20_n726(x)
+ else
+ fun_l20_n934(x)
+ end
+end
+
+def fun_l19_n278(x)
+ if (x < 1)
+ fun_l20_n198(x)
+ else
+ fun_l20_n852(x)
+ end
+end
+
+def fun_l19_n279(x)
+ if (x < 1)
+ fun_l20_n43(x)
+ else
+ fun_l20_n614(x)
+ end
+end
+
+def fun_l19_n280(x)
+ if (x < 1)
+ fun_l20_n79(x)
+ else
+ fun_l20_n821(x)
+ end
+end
+
+def fun_l19_n281(x)
+ if (x < 1)
+ fun_l20_n269(x)
+ else
+ fun_l20_n697(x)
+ end
+end
+
+def fun_l19_n282(x)
+ if (x < 1)
+ fun_l20_n327(x)
+ else
+ fun_l20_n528(x)
+ end
+end
+
+def fun_l19_n283(x)
+ if (x < 1)
+ fun_l20_n77(x)
+ else
+ fun_l20_n743(x)
+ end
+end
+
+def fun_l19_n284(x)
+ if (x < 1)
+ fun_l20_n282(x)
+ else
+ fun_l20_n406(x)
+ end
+end
+
+def fun_l19_n285(x)
+ if (x < 1)
+ fun_l20_n129(x)
+ else
+ fun_l20_n855(x)
+ end
+end
+
+def fun_l19_n286(x)
+ if (x < 1)
+ fun_l20_n897(x)
+ else
+ fun_l20_n687(x)
+ end
+end
+
+def fun_l19_n287(x)
+ if (x < 1)
+ fun_l20_n166(x)
+ else
+ fun_l20_n5(x)
+ end
+end
+
+def fun_l19_n288(x)
+ if (x < 1)
+ fun_l20_n545(x)
+ else
+ fun_l20_n661(x)
+ end
+end
+
+def fun_l19_n289(x)
+ if (x < 1)
+ fun_l20_n630(x)
+ else
+ fun_l20_n820(x)
+ end
+end
+
+def fun_l19_n290(x)
+ if (x < 1)
+ fun_l20_n774(x)
+ else
+ fun_l20_n125(x)
+ end
+end
+
+def fun_l19_n291(x)
+ if (x < 1)
+ fun_l20_n110(x)
+ else
+ fun_l20_n721(x)
+ end
+end
+
+def fun_l19_n292(x)
+ if (x < 1)
+ fun_l20_n777(x)
+ else
+ fun_l20_n44(x)
+ end
+end
+
+def fun_l19_n293(x)
+ if (x < 1)
+ fun_l20_n504(x)
+ else
+ fun_l20_n478(x)
+ end
+end
+
+def fun_l19_n294(x)
+ if (x < 1)
+ fun_l20_n540(x)
+ else
+ fun_l20_n603(x)
+ end
+end
+
+def fun_l19_n295(x)
+ if (x < 1)
+ fun_l20_n576(x)
+ else
+ fun_l20_n417(x)
+ end
+end
+
+def fun_l19_n296(x)
+ if (x < 1)
+ fun_l20_n553(x)
+ else
+ fun_l20_n295(x)
+ end
+end
+
+def fun_l19_n297(x)
+ if (x < 1)
+ fun_l20_n56(x)
+ else
+ fun_l20_n990(x)
+ end
+end
+
+def fun_l19_n298(x)
+ if (x < 1)
+ fun_l20_n362(x)
+ else
+ fun_l20_n158(x)
+ end
+end
+
+def fun_l19_n299(x)
+ if (x < 1)
+ fun_l20_n788(x)
+ else
+ fun_l20_n70(x)
+ end
+end
+
+def fun_l19_n300(x)
+ if (x < 1)
+ fun_l20_n670(x)
+ else
+ fun_l20_n542(x)
+ end
+end
+
+def fun_l19_n301(x)
+ if (x < 1)
+ fun_l20_n960(x)
+ else
+ fun_l20_n827(x)
+ end
+end
+
+def fun_l19_n302(x)
+ if (x < 1)
+ fun_l20_n366(x)
+ else
+ fun_l20_n325(x)
+ end
+end
+
+def fun_l19_n303(x)
+ if (x < 1)
+ fun_l20_n252(x)
+ else
+ fun_l20_n931(x)
+ end
+end
+
+def fun_l19_n304(x)
+ if (x < 1)
+ fun_l20_n124(x)
+ else
+ fun_l20_n102(x)
+ end
+end
+
+def fun_l19_n305(x)
+ if (x < 1)
+ fun_l20_n678(x)
+ else
+ fun_l20_n299(x)
+ end
+end
+
+def fun_l19_n306(x)
+ if (x < 1)
+ fun_l20_n538(x)
+ else
+ fun_l20_n371(x)
+ end
+end
+
+def fun_l19_n307(x)
+ if (x < 1)
+ fun_l20_n452(x)
+ else
+ fun_l20_n879(x)
+ end
+end
+
+def fun_l19_n308(x)
+ if (x < 1)
+ fun_l20_n410(x)
+ else
+ fun_l20_n156(x)
+ end
+end
+
+def fun_l19_n309(x)
+ if (x < 1)
+ fun_l20_n259(x)
+ else
+ fun_l20_n236(x)
+ end
+end
+
+def fun_l19_n310(x)
+ if (x < 1)
+ fun_l20_n710(x)
+ else
+ fun_l20_n23(x)
+ end
+end
+
+def fun_l19_n311(x)
+ if (x < 1)
+ fun_l20_n214(x)
+ else
+ fun_l20_n649(x)
+ end
+end
+
+def fun_l19_n312(x)
+ if (x < 1)
+ fun_l20_n603(x)
+ else
+ fun_l20_n213(x)
+ end
+end
+
+def fun_l19_n313(x)
+ if (x < 1)
+ fun_l20_n874(x)
+ else
+ fun_l20_n83(x)
+ end
+end
+
+def fun_l19_n314(x)
+ if (x < 1)
+ fun_l20_n902(x)
+ else
+ fun_l20_n303(x)
+ end
+end
+
+def fun_l19_n315(x)
+ if (x < 1)
+ fun_l20_n601(x)
+ else
+ fun_l20_n801(x)
+ end
+end
+
+def fun_l19_n316(x)
+ if (x < 1)
+ fun_l20_n76(x)
+ else
+ fun_l20_n960(x)
+ end
+end
+
+def fun_l19_n317(x)
+ if (x < 1)
+ fun_l20_n926(x)
+ else
+ fun_l20_n700(x)
+ end
+end
+
+def fun_l19_n318(x)
+ if (x < 1)
+ fun_l20_n233(x)
+ else
+ fun_l20_n278(x)
+ end
+end
+
+def fun_l19_n319(x)
+ if (x < 1)
+ fun_l20_n724(x)
+ else
+ fun_l20_n181(x)
+ end
+end
+
+def fun_l19_n320(x)
+ if (x < 1)
+ fun_l20_n367(x)
+ else
+ fun_l20_n511(x)
+ end
+end
+
+def fun_l19_n321(x)
+ if (x < 1)
+ fun_l20_n855(x)
+ else
+ fun_l20_n601(x)
+ end
+end
+
+def fun_l19_n322(x)
+ if (x < 1)
+ fun_l20_n173(x)
+ else
+ fun_l20_n151(x)
+ end
+end
+
+def fun_l19_n323(x)
+ if (x < 1)
+ fun_l20_n628(x)
+ else
+ fun_l20_n790(x)
+ end
+end
+
+def fun_l19_n324(x)
+ if (x < 1)
+ fun_l20_n423(x)
+ else
+ fun_l20_n40(x)
+ end
+end
+
+def fun_l19_n325(x)
+ if (x < 1)
+ fun_l20_n850(x)
+ else
+ fun_l20_n698(x)
+ end
+end
+
+def fun_l19_n326(x)
+ if (x < 1)
+ fun_l20_n351(x)
+ else
+ fun_l20_n562(x)
+ end
+end
+
+def fun_l19_n327(x)
+ if (x < 1)
+ fun_l20_n717(x)
+ else
+ fun_l20_n386(x)
+ end
+end
+
+def fun_l19_n328(x)
+ if (x < 1)
+ fun_l20_n461(x)
+ else
+ fun_l20_n604(x)
+ end
+end
+
+def fun_l19_n329(x)
+ if (x < 1)
+ fun_l20_n423(x)
+ else
+ fun_l20_n506(x)
+ end
+end
+
+def fun_l19_n330(x)
+ if (x < 1)
+ fun_l20_n389(x)
+ else
+ fun_l20_n365(x)
+ end
+end
+
+def fun_l19_n331(x)
+ if (x < 1)
+ fun_l20_n858(x)
+ else
+ fun_l20_n623(x)
+ end
+end
+
+def fun_l19_n332(x)
+ if (x < 1)
+ fun_l20_n34(x)
+ else
+ fun_l20_n598(x)
+ end
+end
+
+def fun_l19_n333(x)
+ if (x < 1)
+ fun_l20_n458(x)
+ else
+ fun_l20_n619(x)
+ end
+end
+
+def fun_l19_n334(x)
+ if (x < 1)
+ fun_l20_n203(x)
+ else
+ fun_l20_n391(x)
+ end
+end
+
+def fun_l19_n335(x)
+ if (x < 1)
+ fun_l20_n745(x)
+ else
+ fun_l20_n197(x)
+ end
+end
+
+def fun_l19_n336(x)
+ if (x < 1)
+ fun_l20_n388(x)
+ else
+ fun_l20_n682(x)
+ end
+end
+
+def fun_l19_n337(x)
+ if (x < 1)
+ fun_l20_n340(x)
+ else
+ fun_l20_n836(x)
+ end
+end
+
+def fun_l19_n338(x)
+ if (x < 1)
+ fun_l20_n231(x)
+ else
+ fun_l20_n508(x)
+ end
+end
+
+def fun_l19_n339(x)
+ if (x < 1)
+ fun_l20_n376(x)
+ else
+ fun_l20_n733(x)
+ end
+end
+
+def fun_l19_n340(x)
+ if (x < 1)
+ fun_l20_n162(x)
+ else
+ fun_l20_n397(x)
+ end
+end
+
+def fun_l19_n341(x)
+ if (x < 1)
+ fun_l20_n526(x)
+ else
+ fun_l20_n431(x)
+ end
+end
+
+def fun_l19_n342(x)
+ if (x < 1)
+ fun_l20_n850(x)
+ else
+ fun_l20_n226(x)
+ end
+end
+
+def fun_l19_n343(x)
+ if (x < 1)
+ fun_l20_n936(x)
+ else
+ fun_l20_n739(x)
+ end
+end
+
+def fun_l19_n344(x)
+ if (x < 1)
+ fun_l20_n639(x)
+ else
+ fun_l20_n844(x)
+ end
+end
+
+def fun_l19_n345(x)
+ if (x < 1)
+ fun_l20_n230(x)
+ else
+ fun_l20_n8(x)
+ end
+end
+
+def fun_l19_n346(x)
+ if (x < 1)
+ fun_l20_n156(x)
+ else
+ fun_l20_n417(x)
+ end
+end
+
+def fun_l19_n347(x)
+ if (x < 1)
+ fun_l20_n823(x)
+ else
+ fun_l20_n843(x)
+ end
+end
+
+def fun_l19_n348(x)
+ if (x < 1)
+ fun_l20_n798(x)
+ else
+ fun_l20_n538(x)
+ end
+end
+
+def fun_l19_n349(x)
+ if (x < 1)
+ fun_l20_n701(x)
+ else
+ fun_l20_n949(x)
+ end
+end
+
+def fun_l19_n350(x)
+ if (x < 1)
+ fun_l20_n131(x)
+ else
+ fun_l20_n727(x)
+ end
+end
+
+def fun_l19_n351(x)
+ if (x < 1)
+ fun_l20_n661(x)
+ else
+ fun_l20_n655(x)
+ end
+end
+
+def fun_l19_n352(x)
+ if (x < 1)
+ fun_l20_n824(x)
+ else
+ fun_l20_n436(x)
+ end
+end
+
+def fun_l19_n353(x)
+ if (x < 1)
+ fun_l20_n599(x)
+ else
+ fun_l20_n581(x)
+ end
+end
+
+def fun_l19_n354(x)
+ if (x < 1)
+ fun_l20_n290(x)
+ else
+ fun_l20_n632(x)
+ end
+end
+
+def fun_l19_n355(x)
+ if (x < 1)
+ fun_l20_n495(x)
+ else
+ fun_l20_n466(x)
+ end
+end
+
+def fun_l19_n356(x)
+ if (x < 1)
+ fun_l20_n70(x)
+ else
+ fun_l20_n270(x)
+ end
+end
+
+def fun_l19_n357(x)
+ if (x < 1)
+ fun_l20_n409(x)
+ else
+ fun_l20_n635(x)
+ end
+end
+
+def fun_l19_n358(x)
+ if (x < 1)
+ fun_l20_n396(x)
+ else
+ fun_l20_n41(x)
+ end
+end
+
+def fun_l19_n359(x)
+ if (x < 1)
+ fun_l20_n302(x)
+ else
+ fun_l20_n209(x)
+ end
+end
+
+def fun_l19_n360(x)
+ if (x < 1)
+ fun_l20_n844(x)
+ else
+ fun_l20_n23(x)
+ end
+end
+
+def fun_l19_n361(x)
+ if (x < 1)
+ fun_l20_n18(x)
+ else
+ fun_l20_n20(x)
+ end
+end
+
+def fun_l19_n362(x)
+ if (x < 1)
+ fun_l20_n821(x)
+ else
+ fun_l20_n806(x)
+ end
+end
+
+def fun_l19_n363(x)
+ if (x < 1)
+ fun_l20_n710(x)
+ else
+ fun_l20_n209(x)
+ end
+end
+
+def fun_l19_n364(x)
+ if (x < 1)
+ fun_l20_n979(x)
+ else
+ fun_l20_n457(x)
+ end
+end
+
+def fun_l19_n365(x)
+ if (x < 1)
+ fun_l20_n787(x)
+ else
+ fun_l20_n582(x)
+ end
+end
+
+def fun_l19_n366(x)
+ if (x < 1)
+ fun_l20_n274(x)
+ else
+ fun_l20_n710(x)
+ end
+end
+
+def fun_l19_n367(x)
+ if (x < 1)
+ fun_l20_n461(x)
+ else
+ fun_l20_n685(x)
+ end
+end
+
+def fun_l19_n368(x)
+ if (x < 1)
+ fun_l20_n953(x)
+ else
+ fun_l20_n477(x)
+ end
+end
+
+def fun_l19_n369(x)
+ if (x < 1)
+ fun_l20_n363(x)
+ else
+ fun_l20_n976(x)
+ end
+end
+
+def fun_l19_n370(x)
+ if (x < 1)
+ fun_l20_n934(x)
+ else
+ fun_l20_n742(x)
+ end
+end
+
+def fun_l19_n371(x)
+ if (x < 1)
+ fun_l20_n769(x)
+ else
+ fun_l20_n358(x)
+ end
+end
+
+def fun_l19_n372(x)
+ if (x < 1)
+ fun_l20_n53(x)
+ else
+ fun_l20_n915(x)
+ end
+end
+
+def fun_l19_n373(x)
+ if (x < 1)
+ fun_l20_n678(x)
+ else
+ fun_l20_n930(x)
+ end
+end
+
+def fun_l19_n374(x)
+ if (x < 1)
+ fun_l20_n160(x)
+ else
+ fun_l20_n937(x)
+ end
+end
+
+def fun_l19_n375(x)
+ if (x < 1)
+ fun_l20_n54(x)
+ else
+ fun_l20_n844(x)
+ end
+end
+
+def fun_l19_n376(x)
+ if (x < 1)
+ fun_l20_n911(x)
+ else
+ fun_l20_n756(x)
+ end
+end
+
+def fun_l19_n377(x)
+ if (x < 1)
+ fun_l20_n138(x)
+ else
+ fun_l20_n673(x)
+ end
+end
+
+def fun_l19_n378(x)
+ if (x < 1)
+ fun_l20_n976(x)
+ else
+ fun_l20_n720(x)
+ end
+end
+
+def fun_l19_n379(x)
+ if (x < 1)
+ fun_l20_n704(x)
+ else
+ fun_l20_n53(x)
+ end
+end
+
+def fun_l19_n380(x)
+ if (x < 1)
+ fun_l20_n762(x)
+ else
+ fun_l20_n340(x)
+ end
+end
+
+def fun_l19_n381(x)
+ if (x < 1)
+ fun_l20_n323(x)
+ else
+ fun_l20_n634(x)
+ end
+end
+
+def fun_l19_n382(x)
+ if (x < 1)
+ fun_l20_n515(x)
+ else
+ fun_l20_n562(x)
+ end
+end
+
+def fun_l19_n383(x)
+ if (x < 1)
+ fun_l20_n160(x)
+ else
+ fun_l20_n826(x)
+ end
+end
+
+def fun_l19_n384(x)
+ if (x < 1)
+ fun_l20_n779(x)
+ else
+ fun_l20_n638(x)
+ end
+end
+
+def fun_l19_n385(x)
+ if (x < 1)
+ fun_l20_n401(x)
+ else
+ fun_l20_n4(x)
+ end
+end
+
+def fun_l19_n386(x)
+ if (x < 1)
+ fun_l20_n604(x)
+ else
+ fun_l20_n820(x)
+ end
+end
+
+def fun_l19_n387(x)
+ if (x < 1)
+ fun_l20_n694(x)
+ else
+ fun_l20_n533(x)
+ end
+end
+
+def fun_l19_n388(x)
+ if (x < 1)
+ fun_l20_n687(x)
+ else
+ fun_l20_n697(x)
+ end
+end
+
+def fun_l19_n389(x)
+ if (x < 1)
+ fun_l20_n19(x)
+ else
+ fun_l20_n457(x)
+ end
+end
+
+def fun_l19_n390(x)
+ if (x < 1)
+ fun_l20_n812(x)
+ else
+ fun_l20_n152(x)
+ end
+end
+
+def fun_l19_n391(x)
+ if (x < 1)
+ fun_l20_n773(x)
+ else
+ fun_l20_n25(x)
+ end
+end
+
+def fun_l19_n392(x)
+ if (x < 1)
+ fun_l20_n24(x)
+ else
+ fun_l20_n930(x)
+ end
+end
+
+def fun_l19_n393(x)
+ if (x < 1)
+ fun_l20_n277(x)
+ else
+ fun_l20_n727(x)
+ end
+end
+
+def fun_l19_n394(x)
+ if (x < 1)
+ fun_l20_n272(x)
+ else
+ fun_l20_n298(x)
+ end
+end
+
+def fun_l19_n395(x)
+ if (x < 1)
+ fun_l20_n661(x)
+ else
+ fun_l20_n269(x)
+ end
+end
+
+def fun_l19_n396(x)
+ if (x < 1)
+ fun_l20_n624(x)
+ else
+ fun_l20_n654(x)
+ end
+end
+
+def fun_l19_n397(x)
+ if (x < 1)
+ fun_l20_n501(x)
+ else
+ fun_l20_n625(x)
+ end
+end
+
+def fun_l19_n398(x)
+ if (x < 1)
+ fun_l20_n596(x)
+ else
+ fun_l20_n160(x)
+ end
+end
+
+def fun_l19_n399(x)
+ if (x < 1)
+ fun_l20_n612(x)
+ else
+ fun_l20_n954(x)
+ end
+end
+
+def fun_l19_n400(x)
+ if (x < 1)
+ fun_l20_n911(x)
+ else
+ fun_l20_n321(x)
+ end
+end
+
+def fun_l19_n401(x)
+ if (x < 1)
+ fun_l20_n294(x)
+ else
+ fun_l20_n382(x)
+ end
+end
+
+def fun_l19_n402(x)
+ if (x < 1)
+ fun_l20_n193(x)
+ else
+ fun_l20_n732(x)
+ end
+end
+
+def fun_l19_n403(x)
+ if (x < 1)
+ fun_l20_n929(x)
+ else
+ fun_l20_n109(x)
+ end
+end
+
+def fun_l19_n404(x)
+ if (x < 1)
+ fun_l20_n647(x)
+ else
+ fun_l20_n497(x)
+ end
+end
+
+def fun_l19_n405(x)
+ if (x < 1)
+ fun_l20_n124(x)
+ else
+ fun_l20_n395(x)
+ end
+end
+
+def fun_l19_n406(x)
+ if (x < 1)
+ fun_l20_n949(x)
+ else
+ fun_l20_n195(x)
+ end
+end
+
+def fun_l19_n407(x)
+ if (x < 1)
+ fun_l20_n249(x)
+ else
+ fun_l20_n771(x)
+ end
+end
+
+def fun_l19_n408(x)
+ if (x < 1)
+ fun_l20_n728(x)
+ else
+ fun_l20_n752(x)
+ end
+end
+
+def fun_l19_n409(x)
+ if (x < 1)
+ fun_l20_n135(x)
+ else
+ fun_l20_n774(x)
+ end
+end
+
+def fun_l19_n410(x)
+ if (x < 1)
+ fun_l20_n277(x)
+ else
+ fun_l20_n499(x)
+ end
+end
+
+def fun_l19_n411(x)
+ if (x < 1)
+ fun_l20_n634(x)
+ else
+ fun_l20_n713(x)
+ end
+end
+
+def fun_l19_n412(x)
+ if (x < 1)
+ fun_l20_n118(x)
+ else
+ fun_l20_n879(x)
+ end
+end
+
+def fun_l19_n413(x)
+ if (x < 1)
+ fun_l20_n202(x)
+ else
+ fun_l20_n146(x)
+ end
+end
+
+def fun_l19_n414(x)
+ if (x < 1)
+ fun_l20_n668(x)
+ else
+ fun_l20_n22(x)
+ end
+end
+
+def fun_l19_n415(x)
+ if (x < 1)
+ fun_l20_n673(x)
+ else
+ fun_l20_n91(x)
+ end
+end
+
+def fun_l19_n416(x)
+ if (x < 1)
+ fun_l20_n399(x)
+ else
+ fun_l20_n288(x)
+ end
+end
+
+def fun_l19_n417(x)
+ if (x < 1)
+ fun_l20_n985(x)
+ else
+ fun_l20_n63(x)
+ end
+end
+
+def fun_l19_n418(x)
+ if (x < 1)
+ fun_l20_n973(x)
+ else
+ fun_l20_n37(x)
+ end
+end
+
+def fun_l19_n419(x)
+ if (x < 1)
+ fun_l20_n907(x)
+ else
+ fun_l20_n274(x)
+ end
+end
+
+def fun_l19_n420(x)
+ if (x < 1)
+ fun_l20_n0(x)
+ else
+ fun_l20_n895(x)
+ end
+end
+
+def fun_l19_n421(x)
+ if (x < 1)
+ fun_l20_n138(x)
+ else
+ fun_l20_n941(x)
+ end
+end
+
+def fun_l19_n422(x)
+ if (x < 1)
+ fun_l20_n944(x)
+ else
+ fun_l20_n393(x)
+ end
+end
+
+def fun_l19_n423(x)
+ if (x < 1)
+ fun_l20_n7(x)
+ else
+ fun_l20_n879(x)
+ end
+end
+
+def fun_l19_n424(x)
+ if (x < 1)
+ fun_l20_n855(x)
+ else
+ fun_l20_n19(x)
+ end
+end
+
+def fun_l19_n425(x)
+ if (x < 1)
+ fun_l20_n11(x)
+ else
+ fun_l20_n12(x)
+ end
+end
+
+def fun_l19_n426(x)
+ if (x < 1)
+ fun_l20_n652(x)
+ else
+ fun_l20_n501(x)
+ end
+end
+
+def fun_l19_n427(x)
+ if (x < 1)
+ fun_l20_n825(x)
+ else
+ fun_l20_n547(x)
+ end
+end
+
+def fun_l19_n428(x)
+ if (x < 1)
+ fun_l20_n485(x)
+ else
+ fun_l20_n905(x)
+ end
+end
+
+def fun_l19_n429(x)
+ if (x < 1)
+ fun_l20_n800(x)
+ else
+ fun_l20_n922(x)
+ end
+end
+
+def fun_l19_n430(x)
+ if (x < 1)
+ fun_l20_n122(x)
+ else
+ fun_l20_n79(x)
+ end
+end
+
+def fun_l19_n431(x)
+ if (x < 1)
+ fun_l20_n822(x)
+ else
+ fun_l20_n228(x)
+ end
+end
+
+def fun_l19_n432(x)
+ if (x < 1)
+ fun_l20_n616(x)
+ else
+ fun_l20_n886(x)
+ end
+end
+
+def fun_l19_n433(x)
+ if (x < 1)
+ fun_l20_n232(x)
+ else
+ fun_l20_n716(x)
+ end
+end
+
+def fun_l19_n434(x)
+ if (x < 1)
+ fun_l20_n288(x)
+ else
+ fun_l20_n497(x)
+ end
+end
+
+def fun_l19_n435(x)
+ if (x < 1)
+ fun_l20_n606(x)
+ else
+ fun_l20_n220(x)
+ end
+end
+
+def fun_l19_n436(x)
+ if (x < 1)
+ fun_l20_n185(x)
+ else
+ fun_l20_n69(x)
+ end
+end
+
+def fun_l19_n437(x)
+ if (x < 1)
+ fun_l20_n869(x)
+ else
+ fun_l20_n264(x)
+ end
+end
+
+def fun_l19_n438(x)
+ if (x < 1)
+ fun_l20_n142(x)
+ else
+ fun_l20_n766(x)
+ end
+end
+
+def fun_l19_n439(x)
+ if (x < 1)
+ fun_l20_n155(x)
+ else
+ fun_l20_n697(x)
+ end
+end
+
+def fun_l19_n440(x)
+ if (x < 1)
+ fun_l20_n486(x)
+ else
+ fun_l20_n442(x)
+ end
+end
+
+def fun_l19_n441(x)
+ if (x < 1)
+ fun_l20_n896(x)
+ else
+ fun_l20_n404(x)
+ end
+end
+
+def fun_l19_n442(x)
+ if (x < 1)
+ fun_l20_n944(x)
+ else
+ fun_l20_n906(x)
+ end
+end
+
+def fun_l19_n443(x)
+ if (x < 1)
+ fun_l20_n400(x)
+ else
+ fun_l20_n230(x)
+ end
+end
+
+def fun_l19_n444(x)
+ if (x < 1)
+ fun_l20_n646(x)
+ else
+ fun_l20_n89(x)
+ end
+end
+
+def fun_l19_n445(x)
+ if (x < 1)
+ fun_l20_n683(x)
+ else
+ fun_l20_n434(x)
+ end
+end
+
+def fun_l19_n446(x)
+ if (x < 1)
+ fun_l20_n333(x)
+ else
+ fun_l20_n164(x)
+ end
+end
+
+def fun_l19_n447(x)
+ if (x < 1)
+ fun_l20_n732(x)
+ else
+ fun_l20_n721(x)
+ end
+end
+
+def fun_l19_n448(x)
+ if (x < 1)
+ fun_l20_n948(x)
+ else
+ fun_l20_n343(x)
+ end
+end
+
+def fun_l19_n449(x)
+ if (x < 1)
+ fun_l20_n211(x)
+ else
+ fun_l20_n754(x)
+ end
+end
+
+def fun_l19_n450(x)
+ if (x < 1)
+ fun_l20_n984(x)
+ else
+ fun_l20_n952(x)
+ end
+end
+
+def fun_l19_n451(x)
+ if (x < 1)
+ fun_l20_n349(x)
+ else
+ fun_l20_n424(x)
+ end
+end
+
+def fun_l19_n452(x)
+ if (x < 1)
+ fun_l20_n721(x)
+ else
+ fun_l20_n475(x)
+ end
+end
+
+def fun_l19_n453(x)
+ if (x < 1)
+ fun_l20_n143(x)
+ else
+ fun_l20_n875(x)
+ end
+end
+
+def fun_l19_n454(x)
+ if (x < 1)
+ fun_l20_n561(x)
+ else
+ fun_l20_n255(x)
+ end
+end
+
+def fun_l19_n455(x)
+ if (x < 1)
+ fun_l20_n962(x)
+ else
+ fun_l20_n489(x)
+ end
+end
+
+def fun_l19_n456(x)
+ if (x < 1)
+ fun_l20_n95(x)
+ else
+ fun_l20_n434(x)
+ end
+end
+
+def fun_l19_n457(x)
+ if (x < 1)
+ fun_l20_n863(x)
+ else
+ fun_l20_n198(x)
+ end
+end
+
+def fun_l19_n458(x)
+ if (x < 1)
+ fun_l20_n106(x)
+ else
+ fun_l20_n786(x)
+ end
+end
+
+def fun_l19_n459(x)
+ if (x < 1)
+ fun_l20_n415(x)
+ else
+ fun_l20_n456(x)
+ end
+end
+
+def fun_l19_n460(x)
+ if (x < 1)
+ fun_l20_n706(x)
+ else
+ fun_l20_n47(x)
+ end
+end
+
+def fun_l19_n461(x)
+ if (x < 1)
+ fun_l20_n894(x)
+ else
+ fun_l20_n119(x)
+ end
+end
+
+def fun_l19_n462(x)
+ if (x < 1)
+ fun_l20_n267(x)
+ else
+ fun_l20_n662(x)
+ end
+end
+
+def fun_l19_n463(x)
+ if (x < 1)
+ fun_l20_n689(x)
+ else
+ fun_l20_n633(x)
+ end
+end
+
+def fun_l19_n464(x)
+ if (x < 1)
+ fun_l20_n94(x)
+ else
+ fun_l20_n967(x)
+ end
+end
+
+def fun_l19_n465(x)
+ if (x < 1)
+ fun_l20_n902(x)
+ else
+ fun_l20_n619(x)
+ end
+end
+
+def fun_l19_n466(x)
+ if (x < 1)
+ fun_l20_n574(x)
+ else
+ fun_l20_n204(x)
+ end
+end
+
+def fun_l19_n467(x)
+ if (x < 1)
+ fun_l20_n195(x)
+ else
+ fun_l20_n455(x)
+ end
+end
+
+def fun_l19_n468(x)
+ if (x < 1)
+ fun_l20_n173(x)
+ else
+ fun_l20_n4(x)
+ end
+end
+
+def fun_l19_n469(x)
+ if (x < 1)
+ fun_l20_n769(x)
+ else
+ fun_l20_n314(x)
+ end
+end
+
+def fun_l19_n470(x)
+ if (x < 1)
+ fun_l20_n669(x)
+ else
+ fun_l20_n648(x)
+ end
+end
+
+def fun_l19_n471(x)
+ if (x < 1)
+ fun_l20_n741(x)
+ else
+ fun_l20_n238(x)
+ end
+end
+
+def fun_l19_n472(x)
+ if (x < 1)
+ fun_l20_n370(x)
+ else
+ fun_l20_n610(x)
+ end
+end
+
+def fun_l19_n473(x)
+ if (x < 1)
+ fun_l20_n200(x)
+ else
+ fun_l20_n698(x)
+ end
+end
+
+def fun_l19_n474(x)
+ if (x < 1)
+ fun_l20_n200(x)
+ else
+ fun_l20_n951(x)
+ end
+end
+
+def fun_l19_n475(x)
+ if (x < 1)
+ fun_l20_n47(x)
+ else
+ fun_l20_n244(x)
+ end
+end
+
+def fun_l19_n476(x)
+ if (x < 1)
+ fun_l20_n314(x)
+ else
+ fun_l20_n163(x)
+ end
+end
+
+def fun_l19_n477(x)
+ if (x < 1)
+ fun_l20_n665(x)
+ else
+ fun_l20_n278(x)
+ end
+end
+
+def fun_l19_n478(x)
+ if (x < 1)
+ fun_l20_n539(x)
+ else
+ fun_l20_n149(x)
+ end
+end
+
+def fun_l19_n479(x)
+ if (x < 1)
+ fun_l20_n10(x)
+ else
+ fun_l20_n686(x)
+ end
+end
+
+def fun_l19_n480(x)
+ if (x < 1)
+ fun_l20_n684(x)
+ else
+ fun_l20_n531(x)
+ end
+end
+
+def fun_l19_n481(x)
+ if (x < 1)
+ fun_l20_n579(x)
+ else
+ fun_l20_n468(x)
+ end
+end
+
+def fun_l19_n482(x)
+ if (x < 1)
+ fun_l20_n794(x)
+ else
+ fun_l20_n116(x)
+ end
+end
+
+def fun_l19_n483(x)
+ if (x < 1)
+ fun_l20_n848(x)
+ else
+ fun_l20_n278(x)
+ end
+end
+
+def fun_l19_n484(x)
+ if (x < 1)
+ fun_l20_n965(x)
+ else
+ fun_l20_n23(x)
+ end
+end
+
+def fun_l19_n485(x)
+ if (x < 1)
+ fun_l20_n123(x)
+ else
+ fun_l20_n905(x)
+ end
+end
+
+def fun_l19_n486(x)
+ if (x < 1)
+ fun_l20_n69(x)
+ else
+ fun_l20_n4(x)
+ end
+end
+
+def fun_l19_n487(x)
+ if (x < 1)
+ fun_l20_n234(x)
+ else
+ fun_l20_n648(x)
+ end
+end
+
+def fun_l19_n488(x)
+ if (x < 1)
+ fun_l20_n31(x)
+ else
+ fun_l20_n127(x)
+ end
+end
+
+def fun_l19_n489(x)
+ if (x < 1)
+ fun_l20_n469(x)
+ else
+ fun_l20_n300(x)
+ end
+end
+
+def fun_l19_n490(x)
+ if (x < 1)
+ fun_l20_n855(x)
+ else
+ fun_l20_n722(x)
+ end
+end
+
+def fun_l19_n491(x)
+ if (x < 1)
+ fun_l20_n949(x)
+ else
+ fun_l20_n567(x)
+ end
+end
+
+def fun_l19_n492(x)
+ if (x < 1)
+ fun_l20_n465(x)
+ else
+ fun_l20_n226(x)
+ end
+end
+
+def fun_l19_n493(x)
+ if (x < 1)
+ fun_l20_n436(x)
+ else
+ fun_l20_n292(x)
+ end
+end
+
+def fun_l19_n494(x)
+ if (x < 1)
+ fun_l20_n552(x)
+ else
+ fun_l20_n81(x)
+ end
+end
+
+def fun_l19_n495(x)
+ if (x < 1)
+ fun_l20_n950(x)
+ else
+ fun_l20_n481(x)
+ end
+end
+
+def fun_l19_n496(x)
+ if (x < 1)
+ fun_l20_n382(x)
+ else
+ fun_l20_n846(x)
+ end
+end
+
+def fun_l19_n497(x)
+ if (x < 1)
+ fun_l20_n355(x)
+ else
+ fun_l20_n546(x)
+ end
+end
+
+def fun_l19_n498(x)
+ if (x < 1)
+ fun_l20_n404(x)
+ else
+ fun_l20_n655(x)
+ end
+end
+
+def fun_l19_n499(x)
+ if (x < 1)
+ fun_l20_n794(x)
+ else
+ fun_l20_n531(x)
+ end
+end
+
+def fun_l19_n500(x)
+ if (x < 1)
+ fun_l20_n555(x)
+ else
+ fun_l20_n37(x)
+ end
+end
+
+def fun_l19_n501(x)
+ if (x < 1)
+ fun_l20_n955(x)
+ else
+ fun_l20_n60(x)
+ end
+end
+
+def fun_l19_n502(x)
+ if (x < 1)
+ fun_l20_n957(x)
+ else
+ fun_l20_n482(x)
+ end
+end
+
+def fun_l19_n503(x)
+ if (x < 1)
+ fun_l20_n683(x)
+ else
+ fun_l20_n374(x)
+ end
+end
+
+def fun_l19_n504(x)
+ if (x < 1)
+ fun_l20_n839(x)
+ else
+ fun_l20_n867(x)
+ end
+end
+
+def fun_l19_n505(x)
+ if (x < 1)
+ fun_l20_n956(x)
+ else
+ fun_l20_n336(x)
+ end
+end
+
+def fun_l19_n506(x)
+ if (x < 1)
+ fun_l20_n234(x)
+ else
+ fun_l20_n50(x)
+ end
+end
+
+def fun_l19_n507(x)
+ if (x < 1)
+ fun_l20_n968(x)
+ else
+ fun_l20_n627(x)
+ end
+end
+
+def fun_l19_n508(x)
+ if (x < 1)
+ fun_l20_n680(x)
+ else
+ fun_l20_n812(x)
+ end
+end
+
+def fun_l19_n509(x)
+ if (x < 1)
+ fun_l20_n106(x)
+ else
+ fun_l20_n428(x)
+ end
+end
+
+def fun_l19_n510(x)
+ if (x < 1)
+ fun_l20_n50(x)
+ else
+ fun_l20_n101(x)
+ end
+end
+
+def fun_l19_n511(x)
+ if (x < 1)
+ fun_l20_n75(x)
+ else
+ fun_l20_n299(x)
+ end
+end
+
+def fun_l19_n512(x)
+ if (x < 1)
+ fun_l20_n612(x)
+ else
+ fun_l20_n367(x)
+ end
+end
+
+def fun_l19_n513(x)
+ if (x < 1)
+ fun_l20_n278(x)
+ else
+ fun_l20_n803(x)
+ end
+end
+
+def fun_l19_n514(x)
+ if (x < 1)
+ fun_l20_n637(x)
+ else
+ fun_l20_n837(x)
+ end
+end
+
+def fun_l19_n515(x)
+ if (x < 1)
+ fun_l20_n908(x)
+ else
+ fun_l20_n410(x)
+ end
+end
+
+def fun_l19_n516(x)
+ if (x < 1)
+ fun_l20_n349(x)
+ else
+ fun_l20_n219(x)
+ end
+end
+
+def fun_l19_n517(x)
+ if (x < 1)
+ fun_l20_n869(x)
+ else
+ fun_l20_n922(x)
+ end
+end
+
+def fun_l19_n518(x)
+ if (x < 1)
+ fun_l20_n429(x)
+ else
+ fun_l20_n332(x)
+ end
+end
+
+def fun_l19_n519(x)
+ if (x < 1)
+ fun_l20_n775(x)
+ else
+ fun_l20_n417(x)
+ end
+end
+
+def fun_l19_n520(x)
+ if (x < 1)
+ fun_l20_n551(x)
+ else
+ fun_l20_n214(x)
+ end
+end
+
+def fun_l19_n521(x)
+ if (x < 1)
+ fun_l20_n643(x)
+ else
+ fun_l20_n74(x)
+ end
+end
+
+def fun_l19_n522(x)
+ if (x < 1)
+ fun_l20_n960(x)
+ else
+ fun_l20_n189(x)
+ end
+end
+
+def fun_l19_n523(x)
+ if (x < 1)
+ fun_l20_n815(x)
+ else
+ fun_l20_n624(x)
+ end
+end
+
+def fun_l19_n524(x)
+ if (x < 1)
+ fun_l20_n247(x)
+ else
+ fun_l20_n679(x)
+ end
+end
+
+def fun_l19_n525(x)
+ if (x < 1)
+ fun_l20_n261(x)
+ else
+ fun_l20_n728(x)
+ end
+end
+
+def fun_l19_n526(x)
+ if (x < 1)
+ fun_l20_n361(x)
+ else
+ fun_l20_n295(x)
+ end
+end
+
+def fun_l19_n527(x)
+ if (x < 1)
+ fun_l20_n559(x)
+ else
+ fun_l20_n763(x)
+ end
+end
+
+def fun_l19_n528(x)
+ if (x < 1)
+ fun_l20_n291(x)
+ else
+ fun_l20_n815(x)
+ end
+end
+
+def fun_l19_n529(x)
+ if (x < 1)
+ fun_l20_n224(x)
+ else
+ fun_l20_n305(x)
+ end
+end
+
+def fun_l19_n530(x)
+ if (x < 1)
+ fun_l20_n579(x)
+ else
+ fun_l20_n370(x)
+ end
+end
+
+def fun_l19_n531(x)
+ if (x < 1)
+ fun_l20_n571(x)
+ else
+ fun_l20_n65(x)
+ end
+end
+
+def fun_l19_n532(x)
+ if (x < 1)
+ fun_l20_n815(x)
+ else
+ fun_l20_n567(x)
+ end
+end
+
+def fun_l19_n533(x)
+ if (x < 1)
+ fun_l20_n48(x)
+ else
+ fun_l20_n386(x)
+ end
+end
+
+def fun_l19_n534(x)
+ if (x < 1)
+ fun_l20_n478(x)
+ else
+ fun_l20_n679(x)
+ end
+end
+
+def fun_l19_n535(x)
+ if (x < 1)
+ fun_l20_n241(x)
+ else
+ fun_l20_n829(x)
+ end
+end
+
+def fun_l19_n536(x)
+ if (x < 1)
+ fun_l20_n267(x)
+ else
+ fun_l20_n160(x)
+ end
+end
+
+def fun_l19_n537(x)
+ if (x < 1)
+ fun_l20_n719(x)
+ else
+ fun_l20_n199(x)
+ end
+end
+
+def fun_l19_n538(x)
+ if (x < 1)
+ fun_l20_n477(x)
+ else
+ fun_l20_n662(x)
+ end
+end
+
+def fun_l19_n539(x)
+ if (x < 1)
+ fun_l20_n506(x)
+ else
+ fun_l20_n856(x)
+ end
+end
+
+def fun_l19_n540(x)
+ if (x < 1)
+ fun_l20_n717(x)
+ else
+ fun_l20_n207(x)
+ end
+end
+
+def fun_l19_n541(x)
+ if (x < 1)
+ fun_l20_n94(x)
+ else
+ fun_l20_n988(x)
+ end
+end
+
+def fun_l19_n542(x)
+ if (x < 1)
+ fun_l20_n837(x)
+ else
+ fun_l20_n334(x)
+ end
+end
+
+def fun_l19_n543(x)
+ if (x < 1)
+ fun_l20_n23(x)
+ else
+ fun_l20_n991(x)
+ end
+end
+
+def fun_l19_n544(x)
+ if (x < 1)
+ fun_l20_n558(x)
+ else
+ fun_l20_n740(x)
+ end
+end
+
+def fun_l19_n545(x)
+ if (x < 1)
+ fun_l20_n762(x)
+ else
+ fun_l20_n79(x)
+ end
+end
+
+def fun_l19_n546(x)
+ if (x < 1)
+ fun_l20_n81(x)
+ else
+ fun_l20_n331(x)
+ end
+end
+
+def fun_l19_n547(x)
+ if (x < 1)
+ fun_l20_n9(x)
+ else
+ fun_l20_n267(x)
+ end
+end
+
+def fun_l19_n548(x)
+ if (x < 1)
+ fun_l20_n550(x)
+ else
+ fun_l20_n98(x)
+ end
+end
+
+def fun_l19_n549(x)
+ if (x < 1)
+ fun_l20_n735(x)
+ else
+ fun_l20_n361(x)
+ end
+end
+
+def fun_l19_n550(x)
+ if (x < 1)
+ fun_l20_n155(x)
+ else
+ fun_l20_n560(x)
+ end
+end
+
+def fun_l19_n551(x)
+ if (x < 1)
+ fun_l20_n394(x)
+ else
+ fun_l20_n793(x)
+ end
+end
+
+def fun_l19_n552(x)
+ if (x < 1)
+ fun_l20_n826(x)
+ else
+ fun_l20_n508(x)
+ end
+end
+
+def fun_l19_n553(x)
+ if (x < 1)
+ fun_l20_n569(x)
+ else
+ fun_l20_n981(x)
+ end
+end
+
+def fun_l19_n554(x)
+ if (x < 1)
+ fun_l20_n580(x)
+ else
+ fun_l20_n848(x)
+ end
+end
+
+def fun_l19_n555(x)
+ if (x < 1)
+ fun_l20_n31(x)
+ else
+ fun_l20_n191(x)
+ end
+end
+
+def fun_l19_n556(x)
+ if (x < 1)
+ fun_l20_n283(x)
+ else
+ fun_l20_n376(x)
+ end
+end
+
+def fun_l19_n557(x)
+ if (x < 1)
+ fun_l20_n978(x)
+ else
+ fun_l20_n554(x)
+ end
+end
+
+def fun_l19_n558(x)
+ if (x < 1)
+ fun_l20_n727(x)
+ else
+ fun_l20_n89(x)
+ end
+end
+
+def fun_l19_n559(x)
+ if (x < 1)
+ fun_l20_n204(x)
+ else
+ fun_l20_n652(x)
+ end
+end
+
+def fun_l19_n560(x)
+ if (x < 1)
+ fun_l20_n481(x)
+ else
+ fun_l20_n114(x)
+ end
+end
+
+def fun_l19_n561(x)
+ if (x < 1)
+ fun_l20_n601(x)
+ else
+ fun_l20_n187(x)
+ end
+end
+
+def fun_l19_n562(x)
+ if (x < 1)
+ fun_l20_n682(x)
+ else
+ fun_l20_n88(x)
+ end
+end
+
+def fun_l19_n563(x)
+ if (x < 1)
+ fun_l20_n346(x)
+ else
+ fun_l20_n190(x)
+ end
+end
+
+def fun_l19_n564(x)
+ if (x < 1)
+ fun_l20_n15(x)
+ else
+ fun_l20_n315(x)
+ end
+end
+
+def fun_l19_n565(x)
+ if (x < 1)
+ fun_l20_n555(x)
+ else
+ fun_l20_n208(x)
+ end
+end
+
+def fun_l19_n566(x)
+ if (x < 1)
+ fun_l20_n29(x)
+ else
+ fun_l20_n511(x)
+ end
+end
+
+def fun_l19_n567(x)
+ if (x < 1)
+ fun_l20_n897(x)
+ else
+ fun_l20_n309(x)
+ end
+end
+
+def fun_l19_n568(x)
+ if (x < 1)
+ fun_l20_n586(x)
+ else
+ fun_l20_n602(x)
+ end
+end
+
+def fun_l19_n569(x)
+ if (x < 1)
+ fun_l20_n51(x)
+ else
+ fun_l20_n483(x)
+ end
+end
+
+def fun_l19_n570(x)
+ if (x < 1)
+ fun_l20_n159(x)
+ else
+ fun_l20_n5(x)
+ end
+end
+
+def fun_l19_n571(x)
+ if (x < 1)
+ fun_l20_n892(x)
+ else
+ fun_l20_n336(x)
+ end
+end
+
+def fun_l19_n572(x)
+ if (x < 1)
+ fun_l20_n203(x)
+ else
+ fun_l20_n287(x)
+ end
+end
+
+def fun_l19_n573(x)
+ if (x < 1)
+ fun_l20_n41(x)
+ else
+ fun_l20_n51(x)
+ end
+end
+
+def fun_l19_n574(x)
+ if (x < 1)
+ fun_l20_n977(x)
+ else
+ fun_l20_n474(x)
+ end
+end
+
+def fun_l19_n575(x)
+ if (x < 1)
+ fun_l20_n247(x)
+ else
+ fun_l20_n281(x)
+ end
+end
+
+def fun_l19_n576(x)
+ if (x < 1)
+ fun_l20_n877(x)
+ else
+ fun_l20_n836(x)
+ end
+end
+
+def fun_l19_n577(x)
+ if (x < 1)
+ fun_l20_n527(x)
+ else
+ fun_l20_n549(x)
+ end
+end
+
+def fun_l19_n578(x)
+ if (x < 1)
+ fun_l20_n102(x)
+ else
+ fun_l20_n906(x)
+ end
+end
+
+def fun_l19_n579(x)
+ if (x < 1)
+ fun_l20_n842(x)
+ else
+ fun_l20_n554(x)
+ end
+end
+
+def fun_l19_n580(x)
+ if (x < 1)
+ fun_l20_n371(x)
+ else
+ fun_l20_n44(x)
+ end
+end
+
+def fun_l19_n581(x)
+ if (x < 1)
+ fun_l20_n306(x)
+ else
+ fun_l20_n571(x)
+ end
+end
+
+def fun_l19_n582(x)
+ if (x < 1)
+ fun_l20_n548(x)
+ else
+ fun_l20_n596(x)
+ end
+end
+
+def fun_l19_n583(x)
+ if (x < 1)
+ fun_l20_n724(x)
+ else
+ fun_l20_n835(x)
+ end
+end
+
+def fun_l19_n584(x)
+ if (x < 1)
+ fun_l20_n238(x)
+ else
+ fun_l20_n408(x)
+ end
+end
+
+def fun_l19_n585(x)
+ if (x < 1)
+ fun_l20_n378(x)
+ else
+ fun_l20_n272(x)
+ end
+end
+
+def fun_l19_n586(x)
+ if (x < 1)
+ fun_l20_n647(x)
+ else
+ fun_l20_n814(x)
+ end
+end
+
+def fun_l19_n587(x)
+ if (x < 1)
+ fun_l20_n210(x)
+ else
+ fun_l20_n801(x)
+ end
+end
+
+def fun_l19_n588(x)
+ if (x < 1)
+ fun_l20_n796(x)
+ else
+ fun_l20_n329(x)
+ end
+end
+
+def fun_l19_n589(x)
+ if (x < 1)
+ fun_l20_n403(x)
+ else
+ fun_l20_n392(x)
+ end
+end
+
+def fun_l19_n590(x)
+ if (x < 1)
+ fun_l20_n677(x)
+ else
+ fun_l20_n574(x)
+ end
+end
+
+def fun_l19_n591(x)
+ if (x < 1)
+ fun_l20_n183(x)
+ else
+ fun_l20_n962(x)
+ end
+end
+
+def fun_l19_n592(x)
+ if (x < 1)
+ fun_l20_n230(x)
+ else
+ fun_l20_n783(x)
+ end
+end
+
+def fun_l19_n593(x)
+ if (x < 1)
+ fun_l20_n191(x)
+ else
+ fun_l20_n42(x)
+ end
+end
+
+def fun_l19_n594(x)
+ if (x < 1)
+ fun_l20_n244(x)
+ else
+ fun_l20_n760(x)
+ end
+end
+
+def fun_l19_n595(x)
+ if (x < 1)
+ fun_l20_n754(x)
+ else
+ fun_l20_n570(x)
+ end
+end
+
+def fun_l19_n596(x)
+ if (x < 1)
+ fun_l20_n612(x)
+ else
+ fun_l20_n287(x)
+ end
+end
+
+def fun_l19_n597(x)
+ if (x < 1)
+ fun_l20_n89(x)
+ else
+ fun_l20_n625(x)
+ end
+end
+
+def fun_l19_n598(x)
+ if (x < 1)
+ fun_l20_n782(x)
+ else
+ fun_l20_n516(x)
+ end
+end
+
+def fun_l19_n599(x)
+ if (x < 1)
+ fun_l20_n75(x)
+ else
+ fun_l20_n857(x)
+ end
+end
+
+def fun_l19_n600(x)
+ if (x < 1)
+ fun_l20_n717(x)
+ else
+ fun_l20_n408(x)
+ end
+end
+
+def fun_l19_n601(x)
+ if (x < 1)
+ fun_l20_n528(x)
+ else
+ fun_l20_n761(x)
+ end
+end
+
+def fun_l19_n602(x)
+ if (x < 1)
+ fun_l20_n319(x)
+ else
+ fun_l20_n645(x)
+ end
+end
+
+def fun_l19_n603(x)
+ if (x < 1)
+ fun_l20_n20(x)
+ else
+ fun_l20_n621(x)
+ end
+end
+
+def fun_l19_n604(x)
+ if (x < 1)
+ fun_l20_n118(x)
+ else
+ fun_l20_n699(x)
+ end
+end
+
+def fun_l19_n605(x)
+ if (x < 1)
+ fun_l20_n19(x)
+ else
+ fun_l20_n63(x)
+ end
+end
+
+def fun_l19_n606(x)
+ if (x < 1)
+ fun_l20_n845(x)
+ else
+ fun_l20_n618(x)
+ end
+end
+
+def fun_l19_n607(x)
+ if (x < 1)
+ fun_l20_n733(x)
+ else
+ fun_l20_n880(x)
+ end
+end
+
+def fun_l19_n608(x)
+ if (x < 1)
+ fun_l20_n785(x)
+ else
+ fun_l20_n254(x)
+ end
+end
+
+def fun_l19_n609(x)
+ if (x < 1)
+ fun_l20_n393(x)
+ else
+ fun_l20_n946(x)
+ end
+end
+
+def fun_l19_n610(x)
+ if (x < 1)
+ fun_l20_n635(x)
+ else
+ fun_l20_n418(x)
+ end
+end
+
+def fun_l19_n611(x)
+ if (x < 1)
+ fun_l20_n987(x)
+ else
+ fun_l20_n703(x)
+ end
+end
+
+def fun_l19_n612(x)
+ if (x < 1)
+ fun_l20_n130(x)
+ else
+ fun_l20_n439(x)
+ end
+end
+
+def fun_l19_n613(x)
+ if (x < 1)
+ fun_l20_n516(x)
+ else
+ fun_l20_n724(x)
+ end
+end
+
+def fun_l19_n614(x)
+ if (x < 1)
+ fun_l20_n44(x)
+ else
+ fun_l20_n102(x)
+ end
+end
+
+def fun_l19_n615(x)
+ if (x < 1)
+ fun_l20_n353(x)
+ else
+ fun_l20_n999(x)
+ end
+end
+
+def fun_l19_n616(x)
+ if (x < 1)
+ fun_l20_n191(x)
+ else
+ fun_l20_n726(x)
+ end
+end
+
+def fun_l19_n617(x)
+ if (x < 1)
+ fun_l20_n375(x)
+ else
+ fun_l20_n575(x)
+ end
+end
+
+def fun_l19_n618(x)
+ if (x < 1)
+ fun_l20_n719(x)
+ else
+ fun_l20_n581(x)
+ end
+end
+
+def fun_l19_n619(x)
+ if (x < 1)
+ fun_l20_n960(x)
+ else
+ fun_l20_n316(x)
+ end
+end
+
+def fun_l19_n620(x)
+ if (x < 1)
+ fun_l20_n860(x)
+ else
+ fun_l20_n784(x)
+ end
+end
+
+def fun_l19_n621(x)
+ if (x < 1)
+ fun_l20_n124(x)
+ else
+ fun_l20_n577(x)
+ end
+end
+
+def fun_l19_n622(x)
+ if (x < 1)
+ fun_l20_n547(x)
+ else
+ fun_l20_n623(x)
+ end
+end
+
+def fun_l19_n623(x)
+ if (x < 1)
+ fun_l20_n842(x)
+ else
+ fun_l20_n380(x)
+ end
+end
+
+def fun_l19_n624(x)
+ if (x < 1)
+ fun_l20_n331(x)
+ else
+ fun_l20_n473(x)
+ end
+end
+
+def fun_l19_n625(x)
+ if (x < 1)
+ fun_l20_n118(x)
+ else
+ fun_l20_n392(x)
+ end
+end
+
+def fun_l19_n626(x)
+ if (x < 1)
+ fun_l20_n836(x)
+ else
+ fun_l20_n988(x)
+ end
+end
+
+def fun_l19_n627(x)
+ if (x < 1)
+ fun_l20_n641(x)
+ else
+ fun_l20_n372(x)
+ end
+end
+
+def fun_l19_n628(x)
+ if (x < 1)
+ fun_l20_n377(x)
+ else
+ fun_l20_n780(x)
+ end
+end
+
+def fun_l19_n629(x)
+ if (x < 1)
+ fun_l20_n180(x)
+ else
+ fun_l20_n670(x)
+ end
+end
+
+def fun_l19_n630(x)
+ if (x < 1)
+ fun_l20_n985(x)
+ else
+ fun_l20_n613(x)
+ end
+end
+
+def fun_l19_n631(x)
+ if (x < 1)
+ fun_l20_n149(x)
+ else
+ fun_l20_n754(x)
+ end
+end
+
+def fun_l19_n632(x)
+ if (x < 1)
+ fun_l20_n967(x)
+ else
+ fun_l20_n940(x)
+ end
+end
+
+def fun_l19_n633(x)
+ if (x < 1)
+ fun_l20_n91(x)
+ else
+ fun_l20_n772(x)
+ end
+end
+
+def fun_l19_n634(x)
+ if (x < 1)
+ fun_l20_n637(x)
+ else
+ fun_l20_n296(x)
+ end
+end
+
+def fun_l19_n635(x)
+ if (x < 1)
+ fun_l20_n50(x)
+ else
+ fun_l20_n314(x)
+ end
+end
+
+def fun_l19_n636(x)
+ if (x < 1)
+ fun_l20_n367(x)
+ else
+ fun_l20_n849(x)
+ end
+end
+
+def fun_l19_n637(x)
+ if (x < 1)
+ fun_l20_n229(x)
+ else
+ fun_l20_n550(x)
+ end
+end
+
+def fun_l19_n638(x)
+ if (x < 1)
+ fun_l20_n680(x)
+ else
+ fun_l20_n783(x)
+ end
+end
+
+def fun_l19_n639(x)
+ if (x < 1)
+ fun_l20_n879(x)
+ else
+ fun_l20_n264(x)
+ end
+end
+
+def fun_l19_n640(x)
+ if (x < 1)
+ fun_l20_n143(x)
+ else
+ fun_l20_n455(x)
+ end
+end
+
+def fun_l19_n641(x)
+ if (x < 1)
+ fun_l20_n191(x)
+ else
+ fun_l20_n110(x)
+ end
+end
+
+def fun_l19_n642(x)
+ if (x < 1)
+ fun_l20_n782(x)
+ else
+ fun_l20_n43(x)
+ end
+end
+
+def fun_l19_n643(x)
+ if (x < 1)
+ fun_l20_n320(x)
+ else
+ fun_l20_n376(x)
+ end
+end
+
+def fun_l19_n644(x)
+ if (x < 1)
+ fun_l20_n554(x)
+ else
+ fun_l20_n667(x)
+ end
+end
+
+def fun_l19_n645(x)
+ if (x < 1)
+ fun_l20_n29(x)
+ else
+ fun_l20_n938(x)
+ end
+end
+
+def fun_l19_n646(x)
+ if (x < 1)
+ fun_l20_n789(x)
+ else
+ fun_l20_n907(x)
+ end
+end
+
+def fun_l19_n647(x)
+ if (x < 1)
+ fun_l20_n859(x)
+ else
+ fun_l20_n138(x)
+ end
+end
+
+def fun_l19_n648(x)
+ if (x < 1)
+ fun_l20_n373(x)
+ else
+ fun_l20_n843(x)
+ end
+end
+
+def fun_l19_n649(x)
+ if (x < 1)
+ fun_l20_n50(x)
+ else
+ fun_l20_n982(x)
+ end
+end
+
+def fun_l19_n650(x)
+ if (x < 1)
+ fun_l20_n622(x)
+ else
+ fun_l20_n368(x)
+ end
+end
+
+def fun_l19_n651(x)
+ if (x < 1)
+ fun_l20_n231(x)
+ else
+ fun_l20_n523(x)
+ end
+end
+
+def fun_l19_n652(x)
+ if (x < 1)
+ fun_l20_n233(x)
+ else
+ fun_l20_n963(x)
+ end
+end
+
+def fun_l19_n653(x)
+ if (x < 1)
+ fun_l20_n363(x)
+ else
+ fun_l20_n177(x)
+ end
+end
+
+def fun_l19_n654(x)
+ if (x < 1)
+ fun_l20_n952(x)
+ else
+ fun_l20_n96(x)
+ end
+end
+
+def fun_l19_n655(x)
+ if (x < 1)
+ fun_l20_n98(x)
+ else
+ fun_l20_n93(x)
+ end
+end
+
+def fun_l19_n656(x)
+ if (x < 1)
+ fun_l20_n200(x)
+ else
+ fun_l20_n137(x)
+ end
+end
+
+def fun_l19_n657(x)
+ if (x < 1)
+ fun_l20_n485(x)
+ else
+ fun_l20_n45(x)
+ end
+end
+
+def fun_l19_n658(x)
+ if (x < 1)
+ fun_l20_n234(x)
+ else
+ fun_l20_n366(x)
+ end
+end
+
+def fun_l19_n659(x)
+ if (x < 1)
+ fun_l20_n120(x)
+ else
+ fun_l20_n850(x)
+ end
+end
+
+def fun_l19_n660(x)
+ if (x < 1)
+ fun_l20_n932(x)
+ else
+ fun_l20_n551(x)
+ end
+end
+
+def fun_l19_n661(x)
+ if (x < 1)
+ fun_l20_n952(x)
+ else
+ fun_l20_n178(x)
+ end
+end
+
+def fun_l19_n662(x)
+ if (x < 1)
+ fun_l20_n761(x)
+ else
+ fun_l20_n2(x)
+ end
+end
+
+def fun_l19_n663(x)
+ if (x < 1)
+ fun_l20_n674(x)
+ else
+ fun_l20_n698(x)
+ end
+end
+
+def fun_l19_n664(x)
+ if (x < 1)
+ fun_l20_n669(x)
+ else
+ fun_l20_n563(x)
+ end
+end
+
+def fun_l19_n665(x)
+ if (x < 1)
+ fun_l20_n106(x)
+ else
+ fun_l20_n442(x)
+ end
+end
+
+def fun_l19_n666(x)
+ if (x < 1)
+ fun_l20_n476(x)
+ else
+ fun_l20_n620(x)
+ end
+end
+
+def fun_l19_n667(x)
+ if (x < 1)
+ fun_l20_n813(x)
+ else
+ fun_l20_n501(x)
+ end
+end
+
+def fun_l19_n668(x)
+ if (x < 1)
+ fun_l20_n773(x)
+ else
+ fun_l20_n485(x)
+ end
+end
+
+def fun_l19_n669(x)
+ if (x < 1)
+ fun_l20_n533(x)
+ else
+ fun_l20_n801(x)
+ end
+end
+
+def fun_l19_n670(x)
+ if (x < 1)
+ fun_l20_n64(x)
+ else
+ fun_l20_n872(x)
+ end
+end
+
+def fun_l19_n671(x)
+ if (x < 1)
+ fun_l20_n770(x)
+ else
+ fun_l20_n101(x)
+ end
+end
+
+def fun_l19_n672(x)
+ if (x < 1)
+ fun_l20_n22(x)
+ else
+ fun_l20_n644(x)
+ end
+end
+
+def fun_l19_n673(x)
+ if (x < 1)
+ fun_l20_n634(x)
+ else
+ fun_l20_n955(x)
+ end
+end
+
+def fun_l19_n674(x)
+ if (x < 1)
+ fun_l20_n976(x)
+ else
+ fun_l20_n665(x)
+ end
+end
+
+def fun_l19_n675(x)
+ if (x < 1)
+ fun_l20_n988(x)
+ else
+ fun_l20_n793(x)
+ end
+end
+
+def fun_l19_n676(x)
+ if (x < 1)
+ fun_l20_n235(x)
+ else
+ fun_l20_n833(x)
+ end
+end
+
+def fun_l19_n677(x)
+ if (x < 1)
+ fun_l20_n604(x)
+ else
+ fun_l20_n797(x)
+ end
+end
+
+def fun_l19_n678(x)
+ if (x < 1)
+ fun_l20_n622(x)
+ else
+ fun_l20_n896(x)
+ end
+end
+
+def fun_l19_n679(x)
+ if (x < 1)
+ fun_l20_n190(x)
+ else
+ fun_l20_n281(x)
+ end
+end
+
+def fun_l19_n680(x)
+ if (x < 1)
+ fun_l20_n325(x)
+ else
+ fun_l20_n669(x)
+ end
+end
+
+def fun_l19_n681(x)
+ if (x < 1)
+ fun_l20_n898(x)
+ else
+ fun_l20_n352(x)
+ end
+end
+
+def fun_l19_n682(x)
+ if (x < 1)
+ fun_l20_n820(x)
+ else
+ fun_l20_n117(x)
+ end
+end
+
+def fun_l19_n683(x)
+ if (x < 1)
+ fun_l20_n148(x)
+ else
+ fun_l20_n842(x)
+ end
+end
+
+def fun_l19_n684(x)
+ if (x < 1)
+ fun_l20_n468(x)
+ else
+ fun_l20_n596(x)
+ end
+end
+
+def fun_l19_n685(x)
+ if (x < 1)
+ fun_l20_n285(x)
+ else
+ fun_l20_n730(x)
+ end
+end
+
+def fun_l19_n686(x)
+ if (x < 1)
+ fun_l20_n426(x)
+ else
+ fun_l20_n657(x)
+ end
+end
+
+def fun_l19_n687(x)
+ if (x < 1)
+ fun_l20_n874(x)
+ else
+ fun_l20_n867(x)
+ end
+end
+
+def fun_l19_n688(x)
+ if (x < 1)
+ fun_l20_n451(x)
+ else
+ fun_l20_n846(x)
+ end
+end
+
+def fun_l19_n689(x)
+ if (x < 1)
+ fun_l20_n425(x)
+ else
+ fun_l20_n796(x)
+ end
+end
+
+def fun_l19_n690(x)
+ if (x < 1)
+ fun_l20_n37(x)
+ else
+ fun_l20_n301(x)
+ end
+end
+
+def fun_l19_n691(x)
+ if (x < 1)
+ fun_l20_n886(x)
+ else
+ fun_l20_n513(x)
+ end
+end
+
+def fun_l19_n692(x)
+ if (x < 1)
+ fun_l20_n426(x)
+ else
+ fun_l20_n46(x)
+ end
+end
+
+def fun_l19_n693(x)
+ if (x < 1)
+ fun_l20_n622(x)
+ else
+ fun_l20_n738(x)
+ end
+end
+
+def fun_l19_n694(x)
+ if (x < 1)
+ fun_l20_n530(x)
+ else
+ fun_l20_n981(x)
+ end
+end
+
+def fun_l19_n695(x)
+ if (x < 1)
+ fun_l20_n568(x)
+ else
+ fun_l20_n934(x)
+ end
+end
+
+def fun_l19_n696(x)
+ if (x < 1)
+ fun_l20_n974(x)
+ else
+ fun_l20_n585(x)
+ end
+end
+
+def fun_l19_n697(x)
+ if (x < 1)
+ fun_l20_n780(x)
+ else
+ fun_l20_n408(x)
+ end
+end
+
+def fun_l19_n698(x)
+ if (x < 1)
+ fun_l20_n373(x)
+ else
+ fun_l20_n163(x)
+ end
+end
+
+def fun_l19_n699(x)
+ if (x < 1)
+ fun_l20_n745(x)
+ else
+ fun_l20_n4(x)
+ end
+end
+
+def fun_l19_n700(x)
+ if (x < 1)
+ fun_l20_n307(x)
+ else
+ fun_l20_n172(x)
+ end
+end
+
+def fun_l19_n701(x)
+ if (x < 1)
+ fun_l20_n342(x)
+ else
+ fun_l20_n381(x)
+ end
+end
+
+def fun_l19_n702(x)
+ if (x < 1)
+ fun_l20_n67(x)
+ else
+ fun_l20_n841(x)
+ end
+end
+
+def fun_l19_n703(x)
+ if (x < 1)
+ fun_l20_n697(x)
+ else
+ fun_l20_n597(x)
+ end
+end
+
+def fun_l19_n704(x)
+ if (x < 1)
+ fun_l20_n809(x)
+ else
+ fun_l20_n306(x)
+ end
+end
+
+def fun_l19_n705(x)
+ if (x < 1)
+ fun_l20_n575(x)
+ else
+ fun_l20_n401(x)
+ end
+end
+
+def fun_l19_n706(x)
+ if (x < 1)
+ fun_l20_n651(x)
+ else
+ fun_l20_n552(x)
+ end
+end
+
+def fun_l19_n707(x)
+ if (x < 1)
+ fun_l20_n644(x)
+ else
+ fun_l20_n697(x)
+ end
+end
+
+def fun_l19_n708(x)
+ if (x < 1)
+ fun_l20_n572(x)
+ else
+ fun_l20_n86(x)
+ end
+end
+
+def fun_l19_n709(x)
+ if (x < 1)
+ fun_l20_n239(x)
+ else
+ fun_l20_n18(x)
+ end
+end
+
+def fun_l19_n710(x)
+ if (x < 1)
+ fun_l20_n48(x)
+ else
+ fun_l20_n822(x)
+ end
+end
+
+def fun_l19_n711(x)
+ if (x < 1)
+ fun_l20_n126(x)
+ else
+ fun_l20_n186(x)
+ end
+end
+
+def fun_l19_n712(x)
+ if (x < 1)
+ fun_l20_n552(x)
+ else
+ fun_l20_n901(x)
+ end
+end
+
+def fun_l19_n713(x)
+ if (x < 1)
+ fun_l20_n993(x)
+ else
+ fun_l20_n313(x)
+ end
+end
+
+def fun_l19_n714(x)
+ if (x < 1)
+ fun_l20_n918(x)
+ else
+ fun_l20_n718(x)
+ end
+end
+
+def fun_l19_n715(x)
+ if (x < 1)
+ fun_l20_n442(x)
+ else
+ fun_l20_n652(x)
+ end
+end
+
+def fun_l19_n716(x)
+ if (x < 1)
+ fun_l20_n624(x)
+ else
+ fun_l20_n492(x)
+ end
+end
+
+def fun_l19_n717(x)
+ if (x < 1)
+ fun_l20_n585(x)
+ else
+ fun_l20_n980(x)
+ end
+end
+
+def fun_l19_n718(x)
+ if (x < 1)
+ fun_l20_n159(x)
+ else
+ fun_l20_n327(x)
+ end
+end
+
+def fun_l19_n719(x)
+ if (x < 1)
+ fun_l20_n867(x)
+ else
+ fun_l20_n239(x)
+ end
+end
+
+def fun_l19_n720(x)
+ if (x < 1)
+ fun_l20_n551(x)
+ else
+ fun_l20_n123(x)
+ end
+end
+
+def fun_l19_n721(x)
+ if (x < 1)
+ fun_l20_n794(x)
+ else
+ fun_l20_n1(x)
+ end
+end
+
+def fun_l19_n722(x)
+ if (x < 1)
+ fun_l20_n193(x)
+ else
+ fun_l20_n847(x)
+ end
+end
+
+def fun_l19_n723(x)
+ if (x < 1)
+ fun_l20_n560(x)
+ else
+ fun_l20_n163(x)
+ end
+end
+
+def fun_l19_n724(x)
+ if (x < 1)
+ fun_l20_n338(x)
+ else
+ fun_l20_n411(x)
+ end
+end
+
+def fun_l19_n725(x)
+ if (x < 1)
+ fun_l20_n227(x)
+ else
+ fun_l20_n437(x)
+ end
+end
+
+def fun_l19_n726(x)
+ if (x < 1)
+ fun_l20_n691(x)
+ else
+ fun_l20_n821(x)
+ end
+end
+
+def fun_l19_n727(x)
+ if (x < 1)
+ fun_l20_n578(x)
+ else
+ fun_l20_n589(x)
+ end
+end
+
+def fun_l19_n728(x)
+ if (x < 1)
+ fun_l20_n990(x)
+ else
+ fun_l20_n164(x)
+ end
+end
+
+def fun_l19_n729(x)
+ if (x < 1)
+ fun_l20_n620(x)
+ else
+ fun_l20_n736(x)
+ end
+end
+
+def fun_l19_n730(x)
+ if (x < 1)
+ fun_l20_n980(x)
+ else
+ fun_l20_n345(x)
+ end
+end
+
+def fun_l19_n731(x)
+ if (x < 1)
+ fun_l20_n302(x)
+ else
+ fun_l20_n75(x)
+ end
+end
+
+def fun_l19_n732(x)
+ if (x < 1)
+ fun_l20_n684(x)
+ else
+ fun_l20_n2(x)
+ end
+end
+
+def fun_l19_n733(x)
+ if (x < 1)
+ fun_l20_n11(x)
+ else
+ fun_l20_n503(x)
+ end
+end
+
+def fun_l19_n734(x)
+ if (x < 1)
+ fun_l20_n719(x)
+ else
+ fun_l20_n745(x)
+ end
+end
+
+def fun_l19_n735(x)
+ if (x < 1)
+ fun_l20_n74(x)
+ else
+ fun_l20_n413(x)
+ end
+end
+
+def fun_l19_n736(x)
+ if (x < 1)
+ fun_l20_n858(x)
+ else
+ fun_l20_n224(x)
+ end
+end
+
+def fun_l19_n737(x)
+ if (x < 1)
+ fun_l20_n372(x)
+ else
+ fun_l20_n1(x)
+ end
+end
+
+def fun_l19_n738(x)
+ if (x < 1)
+ fun_l20_n274(x)
+ else
+ fun_l20_n967(x)
+ end
+end
+
+def fun_l19_n739(x)
+ if (x < 1)
+ fun_l20_n191(x)
+ else
+ fun_l20_n984(x)
+ end
+end
+
+def fun_l19_n740(x)
+ if (x < 1)
+ fun_l20_n646(x)
+ else
+ fun_l20_n279(x)
+ end
+end
+
+def fun_l19_n741(x)
+ if (x < 1)
+ fun_l20_n55(x)
+ else
+ fun_l20_n947(x)
+ end
+end
+
+def fun_l19_n742(x)
+ if (x < 1)
+ fun_l20_n306(x)
+ else
+ fun_l20_n798(x)
+ end
+end
+
+def fun_l19_n743(x)
+ if (x < 1)
+ fun_l20_n571(x)
+ else
+ fun_l20_n905(x)
+ end
+end
+
+def fun_l19_n744(x)
+ if (x < 1)
+ fun_l20_n270(x)
+ else
+ fun_l20_n290(x)
+ end
+end
+
+def fun_l19_n745(x)
+ if (x < 1)
+ fun_l20_n39(x)
+ else
+ fun_l20_n983(x)
+ end
+end
+
+def fun_l19_n746(x)
+ if (x < 1)
+ fun_l20_n405(x)
+ else
+ fun_l20_n727(x)
+ end
+end
+
+def fun_l19_n747(x)
+ if (x < 1)
+ fun_l20_n424(x)
+ else
+ fun_l20_n597(x)
+ end
+end
+
+def fun_l19_n748(x)
+ if (x < 1)
+ fun_l20_n602(x)
+ else
+ fun_l20_n467(x)
+ end
+end
+
+def fun_l19_n749(x)
+ if (x < 1)
+ fun_l20_n859(x)
+ else
+ fun_l20_n76(x)
+ end
+end
+
+def fun_l19_n750(x)
+ if (x < 1)
+ fun_l20_n201(x)
+ else
+ fun_l20_n948(x)
+ end
+end
+
+def fun_l19_n751(x)
+ if (x < 1)
+ fun_l20_n998(x)
+ else
+ fun_l20_n425(x)
+ end
+end
+
+def fun_l19_n752(x)
+ if (x < 1)
+ fun_l20_n352(x)
+ else
+ fun_l20_n762(x)
+ end
+end
+
+def fun_l19_n753(x)
+ if (x < 1)
+ fun_l20_n996(x)
+ else
+ fun_l20_n136(x)
+ end
+end
+
+def fun_l19_n754(x)
+ if (x < 1)
+ fun_l20_n462(x)
+ else
+ fun_l20_n544(x)
+ end
+end
+
+def fun_l19_n755(x)
+ if (x < 1)
+ fun_l20_n126(x)
+ else
+ fun_l20_n857(x)
+ end
+end
+
+def fun_l19_n756(x)
+ if (x < 1)
+ fun_l20_n695(x)
+ else
+ fun_l20_n444(x)
+ end
+end
+
+def fun_l19_n757(x)
+ if (x < 1)
+ fun_l20_n694(x)
+ else
+ fun_l20_n718(x)
+ end
+end
+
+def fun_l19_n758(x)
+ if (x < 1)
+ fun_l20_n308(x)
+ else
+ fun_l20_n867(x)
+ end
+end
+
+def fun_l19_n759(x)
+ if (x < 1)
+ fun_l20_n224(x)
+ else
+ fun_l20_n739(x)
+ end
+end
+
+def fun_l19_n760(x)
+ if (x < 1)
+ fun_l20_n286(x)
+ else
+ fun_l20_n660(x)
+ end
+end
+
+def fun_l19_n761(x)
+ if (x < 1)
+ fun_l20_n486(x)
+ else
+ fun_l20_n614(x)
+ end
+end
+
+def fun_l19_n762(x)
+ if (x < 1)
+ fun_l20_n234(x)
+ else
+ fun_l20_n812(x)
+ end
+end
+
+def fun_l19_n763(x)
+ if (x < 1)
+ fun_l20_n663(x)
+ else
+ fun_l20_n649(x)
+ end
+end
+
+def fun_l19_n764(x)
+ if (x < 1)
+ fun_l20_n815(x)
+ else
+ fun_l20_n436(x)
+ end
+end
+
+def fun_l19_n765(x)
+ if (x < 1)
+ fun_l20_n330(x)
+ else
+ fun_l20_n350(x)
+ end
+end
+
+def fun_l19_n766(x)
+ if (x < 1)
+ fun_l20_n532(x)
+ else
+ fun_l20_n676(x)
+ end
+end
+
+def fun_l19_n767(x)
+ if (x < 1)
+ fun_l20_n74(x)
+ else
+ fun_l20_n182(x)
+ end
+end
+
+def fun_l19_n768(x)
+ if (x < 1)
+ fun_l20_n432(x)
+ else
+ fun_l20_n912(x)
+ end
+end
+
+def fun_l19_n769(x)
+ if (x < 1)
+ fun_l20_n413(x)
+ else
+ fun_l20_n315(x)
+ end
+end
+
+def fun_l19_n770(x)
+ if (x < 1)
+ fun_l20_n457(x)
+ else
+ fun_l20_n917(x)
+ end
+end
+
+def fun_l19_n771(x)
+ if (x < 1)
+ fun_l20_n435(x)
+ else
+ fun_l20_n768(x)
+ end
+end
+
+def fun_l19_n772(x)
+ if (x < 1)
+ fun_l20_n994(x)
+ else
+ fun_l20_n865(x)
+ end
+end
+
+def fun_l19_n773(x)
+ if (x < 1)
+ fun_l20_n425(x)
+ else
+ fun_l20_n347(x)
+ end
+end
+
+def fun_l19_n774(x)
+ if (x < 1)
+ fun_l20_n405(x)
+ else
+ fun_l20_n1(x)
+ end
+end
+
+def fun_l19_n775(x)
+ if (x < 1)
+ fun_l20_n460(x)
+ else
+ fun_l20_n417(x)
+ end
+end
+
+def fun_l19_n776(x)
+ if (x < 1)
+ fun_l20_n539(x)
+ else
+ fun_l20_n825(x)
+ end
+end
+
+def fun_l19_n777(x)
+ if (x < 1)
+ fun_l20_n180(x)
+ else
+ fun_l20_n613(x)
+ end
+end
+
+def fun_l19_n778(x)
+ if (x < 1)
+ fun_l20_n452(x)
+ else
+ fun_l20_n717(x)
+ end
+end
+
+def fun_l19_n779(x)
+ if (x < 1)
+ fun_l20_n265(x)
+ else
+ fun_l20_n802(x)
+ end
+end
+
+def fun_l19_n780(x)
+ if (x < 1)
+ fun_l20_n941(x)
+ else
+ fun_l20_n939(x)
+ end
+end
+
+def fun_l19_n781(x)
+ if (x < 1)
+ fun_l20_n777(x)
+ else
+ fun_l20_n796(x)
+ end
+end
+
+def fun_l19_n782(x)
+ if (x < 1)
+ fun_l20_n924(x)
+ else
+ fun_l20_n442(x)
+ end
+end
+
+def fun_l19_n783(x)
+ if (x < 1)
+ fun_l20_n901(x)
+ else
+ fun_l20_n817(x)
+ end
+end
+
+def fun_l19_n784(x)
+ if (x < 1)
+ fun_l20_n101(x)
+ else
+ fun_l20_n983(x)
+ end
+end
+
+def fun_l19_n785(x)
+ if (x < 1)
+ fun_l20_n992(x)
+ else
+ fun_l20_n790(x)
+ end
+end
+
+def fun_l19_n786(x)
+ if (x < 1)
+ fun_l20_n426(x)
+ else
+ fun_l20_n337(x)
+ end
+end
+
+def fun_l19_n787(x)
+ if (x < 1)
+ fun_l20_n812(x)
+ else
+ fun_l20_n7(x)
+ end
+end
+
+def fun_l19_n788(x)
+ if (x < 1)
+ fun_l20_n768(x)
+ else
+ fun_l20_n25(x)
+ end
+end
+
+def fun_l19_n789(x)
+ if (x < 1)
+ fun_l20_n292(x)
+ else
+ fun_l20_n440(x)
+ end
+end
+
+def fun_l19_n790(x)
+ if (x < 1)
+ fun_l20_n855(x)
+ else
+ fun_l20_n191(x)
+ end
+end
+
+def fun_l19_n791(x)
+ if (x < 1)
+ fun_l20_n32(x)
+ else
+ fun_l20_n855(x)
+ end
+end
+
+def fun_l19_n792(x)
+ if (x < 1)
+ fun_l20_n920(x)
+ else
+ fun_l20_n198(x)
+ end
+end
+
+def fun_l19_n793(x)
+ if (x < 1)
+ fun_l20_n411(x)
+ else
+ fun_l20_n396(x)
+ end
+end
+
+def fun_l19_n794(x)
+ if (x < 1)
+ fun_l20_n977(x)
+ else
+ fun_l20_n712(x)
+ end
+end
+
+def fun_l19_n795(x)
+ if (x < 1)
+ fun_l20_n636(x)
+ else
+ fun_l20_n66(x)
+ end
+end
+
+def fun_l19_n796(x)
+ if (x < 1)
+ fun_l20_n137(x)
+ else
+ fun_l20_n656(x)
+ end
+end
+
+def fun_l19_n797(x)
+ if (x < 1)
+ fun_l20_n51(x)
+ else
+ fun_l20_n244(x)
+ end
+end
+
+def fun_l19_n798(x)
+ if (x < 1)
+ fun_l20_n426(x)
+ else
+ fun_l20_n418(x)
+ end
+end
+
+def fun_l19_n799(x)
+ if (x < 1)
+ fun_l20_n272(x)
+ else
+ fun_l20_n365(x)
+ end
+end
+
+def fun_l19_n800(x)
+ if (x < 1)
+ fun_l20_n361(x)
+ else
+ fun_l20_n952(x)
+ end
+end
+
+def fun_l19_n801(x)
+ if (x < 1)
+ fun_l20_n428(x)
+ else
+ fun_l20_n683(x)
+ end
+end
+
+def fun_l19_n802(x)
+ if (x < 1)
+ fun_l20_n54(x)
+ else
+ fun_l20_n86(x)
+ end
+end
+
+def fun_l19_n803(x)
+ if (x < 1)
+ fun_l20_n771(x)
+ else
+ fun_l20_n555(x)
+ end
+end
+
+def fun_l19_n804(x)
+ if (x < 1)
+ fun_l20_n498(x)
+ else
+ fun_l20_n744(x)
+ end
+end
+
+def fun_l19_n805(x)
+ if (x < 1)
+ fun_l20_n30(x)
+ else
+ fun_l20_n813(x)
+ end
+end
+
+def fun_l19_n806(x)
+ if (x < 1)
+ fun_l20_n96(x)
+ else
+ fun_l20_n295(x)
+ end
+end
+
+def fun_l19_n807(x)
+ if (x < 1)
+ fun_l20_n128(x)
+ else
+ fun_l20_n584(x)
+ end
+end
+
+def fun_l19_n808(x)
+ if (x < 1)
+ fun_l20_n818(x)
+ else
+ fun_l20_n396(x)
+ end
+end
+
+def fun_l19_n809(x)
+ if (x < 1)
+ fun_l20_n896(x)
+ else
+ fun_l20_n779(x)
+ end
+end
+
+def fun_l19_n810(x)
+ if (x < 1)
+ fun_l20_n40(x)
+ else
+ fun_l20_n638(x)
+ end
+end
+
+def fun_l19_n811(x)
+ if (x < 1)
+ fun_l20_n925(x)
+ else
+ fun_l20_n914(x)
+ end
+end
+
+def fun_l19_n812(x)
+ if (x < 1)
+ fun_l20_n217(x)
+ else
+ fun_l20_n833(x)
+ end
+end
+
+def fun_l19_n813(x)
+ if (x < 1)
+ fun_l20_n687(x)
+ else
+ fun_l20_n469(x)
+ end
+end
+
+def fun_l19_n814(x)
+ if (x < 1)
+ fun_l20_n709(x)
+ else
+ fun_l20_n196(x)
+ end
+end
+
+def fun_l19_n815(x)
+ if (x < 1)
+ fun_l20_n633(x)
+ else
+ fun_l20_n622(x)
+ end
+end
+
+def fun_l19_n816(x)
+ if (x < 1)
+ fun_l20_n976(x)
+ else
+ fun_l20_n691(x)
+ end
+end
+
+def fun_l19_n817(x)
+ if (x < 1)
+ fun_l20_n260(x)
+ else
+ fun_l20_n592(x)
+ end
+end
+
+def fun_l19_n818(x)
+ if (x < 1)
+ fun_l20_n893(x)
+ else
+ fun_l20_n353(x)
+ end
+end
+
+def fun_l19_n819(x)
+ if (x < 1)
+ fun_l20_n824(x)
+ else
+ fun_l20_n875(x)
+ end
+end
+
+def fun_l19_n820(x)
+ if (x < 1)
+ fun_l20_n605(x)
+ else
+ fun_l20_n797(x)
+ end
+end
+
+def fun_l19_n821(x)
+ if (x < 1)
+ fun_l20_n990(x)
+ else
+ fun_l20_n272(x)
+ end
+end
+
+def fun_l19_n822(x)
+ if (x < 1)
+ fun_l20_n819(x)
+ else
+ fun_l20_n313(x)
+ end
+end
+
+def fun_l19_n823(x)
+ if (x < 1)
+ fun_l20_n838(x)
+ else
+ fun_l20_n513(x)
+ end
+end
+
+def fun_l19_n824(x)
+ if (x < 1)
+ fun_l20_n332(x)
+ else
+ fun_l20_n838(x)
+ end
+end
+
+def fun_l19_n825(x)
+ if (x < 1)
+ fun_l20_n994(x)
+ else
+ fun_l20_n641(x)
+ end
+end
+
+def fun_l19_n826(x)
+ if (x < 1)
+ fun_l20_n820(x)
+ else
+ fun_l20_n17(x)
+ end
+end
+
+def fun_l19_n827(x)
+ if (x < 1)
+ fun_l20_n645(x)
+ else
+ fun_l20_n587(x)
+ end
+end
+
+def fun_l19_n828(x)
+ if (x < 1)
+ fun_l20_n352(x)
+ else
+ fun_l20_n726(x)
+ end
+end
+
+def fun_l19_n829(x)
+ if (x < 1)
+ fun_l20_n33(x)
+ else
+ fun_l20_n803(x)
+ end
+end
+
+def fun_l19_n830(x)
+ if (x < 1)
+ fun_l20_n854(x)
+ else
+ fun_l20_n468(x)
+ end
+end
+
+def fun_l19_n831(x)
+ if (x < 1)
+ fun_l20_n149(x)
+ else
+ fun_l20_n529(x)
+ end
+end
+
+def fun_l19_n832(x)
+ if (x < 1)
+ fun_l20_n442(x)
+ else
+ fun_l20_n114(x)
+ end
+end
+
+def fun_l19_n833(x)
+ if (x < 1)
+ fun_l20_n986(x)
+ else
+ fun_l20_n778(x)
+ end
+end
+
+def fun_l19_n834(x)
+ if (x < 1)
+ fun_l20_n220(x)
+ else
+ fun_l20_n782(x)
+ end
+end
+
+def fun_l19_n835(x)
+ if (x < 1)
+ fun_l20_n330(x)
+ else
+ fun_l20_n361(x)
+ end
+end
+
+def fun_l19_n836(x)
+ if (x < 1)
+ fun_l20_n805(x)
+ else
+ fun_l20_n204(x)
+ end
+end
+
+def fun_l19_n837(x)
+ if (x < 1)
+ fun_l20_n534(x)
+ else
+ fun_l20_n970(x)
+ end
+end
+
+def fun_l19_n838(x)
+ if (x < 1)
+ fun_l20_n890(x)
+ else
+ fun_l20_n526(x)
+ end
+end
+
+def fun_l19_n839(x)
+ if (x < 1)
+ fun_l20_n511(x)
+ else
+ fun_l20_n743(x)
+ end
+end
+
+def fun_l19_n840(x)
+ if (x < 1)
+ fun_l20_n730(x)
+ else
+ fun_l20_n435(x)
+ end
+end
+
+def fun_l19_n841(x)
+ if (x < 1)
+ fun_l20_n34(x)
+ else
+ fun_l20_n228(x)
+ end
+end
+
+def fun_l19_n842(x)
+ if (x < 1)
+ fun_l20_n170(x)
+ else
+ fun_l20_n162(x)
+ end
+end
+
+def fun_l19_n843(x)
+ if (x < 1)
+ fun_l20_n987(x)
+ else
+ fun_l20_n631(x)
+ end
+end
+
+def fun_l19_n844(x)
+ if (x < 1)
+ fun_l20_n193(x)
+ else
+ fun_l20_n48(x)
+ end
+end
+
+def fun_l19_n845(x)
+ if (x < 1)
+ fun_l20_n479(x)
+ else
+ fun_l20_n295(x)
+ end
+end
+
+def fun_l19_n846(x)
+ if (x < 1)
+ fun_l20_n545(x)
+ else
+ fun_l20_n474(x)
+ end
+end
+
+def fun_l19_n847(x)
+ if (x < 1)
+ fun_l20_n155(x)
+ else
+ fun_l20_n222(x)
+ end
+end
+
+def fun_l19_n848(x)
+ if (x < 1)
+ fun_l20_n641(x)
+ else
+ fun_l20_n151(x)
+ end
+end
+
+def fun_l19_n849(x)
+ if (x < 1)
+ fun_l20_n191(x)
+ else
+ fun_l20_n563(x)
+ end
+end
+
+def fun_l19_n850(x)
+ if (x < 1)
+ fun_l20_n891(x)
+ else
+ fun_l20_n247(x)
+ end
+end
+
+def fun_l19_n851(x)
+ if (x < 1)
+ fun_l20_n987(x)
+ else
+ fun_l20_n296(x)
+ end
+end
+
+def fun_l19_n852(x)
+ if (x < 1)
+ fun_l20_n86(x)
+ else
+ fun_l20_n346(x)
+ end
+end
+
+def fun_l19_n853(x)
+ if (x < 1)
+ fun_l20_n93(x)
+ else
+ fun_l20_n198(x)
+ end
+end
+
+def fun_l19_n854(x)
+ if (x < 1)
+ fun_l20_n767(x)
+ else
+ fun_l20_n759(x)
+ end
+end
+
+def fun_l19_n855(x)
+ if (x < 1)
+ fun_l20_n571(x)
+ else
+ fun_l20_n456(x)
+ end
+end
+
+def fun_l19_n856(x)
+ if (x < 1)
+ fun_l20_n722(x)
+ else
+ fun_l20_n603(x)
+ end
+end
+
+def fun_l19_n857(x)
+ if (x < 1)
+ fun_l20_n940(x)
+ else
+ fun_l20_n163(x)
+ end
+end
+
+def fun_l19_n858(x)
+ if (x < 1)
+ fun_l20_n973(x)
+ else
+ fun_l20_n598(x)
+ end
+end
+
+def fun_l19_n859(x)
+ if (x < 1)
+ fun_l20_n79(x)
+ else
+ fun_l20_n401(x)
+ end
+end
+
+def fun_l19_n860(x)
+ if (x < 1)
+ fun_l20_n234(x)
+ else
+ fun_l20_n769(x)
+ end
+end
+
+def fun_l19_n861(x)
+ if (x < 1)
+ fun_l20_n292(x)
+ else
+ fun_l20_n526(x)
+ end
+end
+
+def fun_l19_n862(x)
+ if (x < 1)
+ fun_l20_n554(x)
+ else
+ fun_l20_n468(x)
+ end
+end
+
+def fun_l19_n863(x)
+ if (x < 1)
+ fun_l20_n386(x)
+ else
+ fun_l20_n946(x)
+ end
+end
+
+def fun_l19_n864(x)
+ if (x < 1)
+ fun_l20_n227(x)
+ else
+ fun_l20_n287(x)
+ end
+end
+
+def fun_l19_n865(x)
+ if (x < 1)
+ fun_l20_n485(x)
+ else
+ fun_l20_n276(x)
+ end
+end
+
+def fun_l19_n866(x)
+ if (x < 1)
+ fun_l20_n38(x)
+ else
+ fun_l20_n329(x)
+ end
+end
+
+def fun_l19_n867(x)
+ if (x < 1)
+ fun_l20_n1(x)
+ else
+ fun_l20_n985(x)
+ end
+end
+
+def fun_l19_n868(x)
+ if (x < 1)
+ fun_l20_n13(x)
+ else
+ fun_l20_n823(x)
+ end
+end
+
+def fun_l19_n869(x)
+ if (x < 1)
+ fun_l20_n834(x)
+ else
+ fun_l20_n959(x)
+ end
+end
+
+def fun_l19_n870(x)
+ if (x < 1)
+ fun_l20_n177(x)
+ else
+ fun_l20_n232(x)
+ end
+end
+
+def fun_l19_n871(x)
+ if (x < 1)
+ fun_l20_n56(x)
+ else
+ fun_l20_n712(x)
+ end
+end
+
+def fun_l19_n872(x)
+ if (x < 1)
+ fun_l20_n69(x)
+ else
+ fun_l20_n850(x)
+ end
+end
+
+def fun_l19_n873(x)
+ if (x < 1)
+ fun_l20_n558(x)
+ else
+ fun_l20_n877(x)
+ end
+end
+
+def fun_l19_n874(x)
+ if (x < 1)
+ fun_l20_n34(x)
+ else
+ fun_l20_n540(x)
+ end
+end
+
+def fun_l19_n875(x)
+ if (x < 1)
+ fun_l20_n392(x)
+ else
+ fun_l20_n904(x)
+ end
+end
+
+def fun_l19_n876(x)
+ if (x < 1)
+ fun_l20_n99(x)
+ else
+ fun_l20_n691(x)
+ end
+end
+
+def fun_l19_n877(x)
+ if (x < 1)
+ fun_l20_n799(x)
+ else
+ fun_l20_n982(x)
+ end
+end
+
+def fun_l19_n878(x)
+ if (x < 1)
+ fun_l20_n511(x)
+ else
+ fun_l20_n869(x)
+ end
+end
+
+def fun_l19_n879(x)
+ if (x < 1)
+ fun_l20_n65(x)
+ else
+ fun_l20_n318(x)
+ end
+end
+
+def fun_l19_n880(x)
+ if (x < 1)
+ fun_l20_n335(x)
+ else
+ fun_l20_n811(x)
+ end
+end
+
+def fun_l19_n881(x)
+ if (x < 1)
+ fun_l20_n165(x)
+ else
+ fun_l20_n870(x)
+ end
+end
+
+def fun_l19_n882(x)
+ if (x < 1)
+ fun_l20_n427(x)
+ else
+ fun_l20_n597(x)
+ end
+end
+
+def fun_l19_n883(x)
+ if (x < 1)
+ fun_l20_n319(x)
+ else
+ fun_l20_n503(x)
+ end
+end
+
+def fun_l19_n884(x)
+ if (x < 1)
+ fun_l20_n57(x)
+ else
+ fun_l20_n620(x)
+ end
+end
+
+def fun_l19_n885(x)
+ if (x < 1)
+ fun_l20_n489(x)
+ else
+ fun_l20_n359(x)
+ end
+end
+
+def fun_l19_n886(x)
+ if (x < 1)
+ fun_l20_n773(x)
+ else
+ fun_l20_n719(x)
+ end
+end
+
+def fun_l19_n887(x)
+ if (x < 1)
+ fun_l20_n969(x)
+ else
+ fun_l20_n32(x)
+ end
+end
+
+def fun_l19_n888(x)
+ if (x < 1)
+ fun_l20_n758(x)
+ else
+ fun_l20_n132(x)
+ end
+end
+
+def fun_l19_n889(x)
+ if (x < 1)
+ fun_l20_n130(x)
+ else
+ fun_l20_n886(x)
+ end
+end
+
+def fun_l19_n890(x)
+ if (x < 1)
+ fun_l20_n195(x)
+ else
+ fun_l20_n258(x)
+ end
+end
+
+def fun_l19_n891(x)
+ if (x < 1)
+ fun_l20_n747(x)
+ else
+ fun_l20_n967(x)
+ end
+end
+
+def fun_l19_n892(x)
+ if (x < 1)
+ fun_l20_n403(x)
+ else
+ fun_l20_n314(x)
+ end
+end
+
+def fun_l19_n893(x)
+ if (x < 1)
+ fun_l20_n927(x)
+ else
+ fun_l20_n923(x)
+ end
+end
+
+def fun_l19_n894(x)
+ if (x < 1)
+ fun_l20_n894(x)
+ else
+ fun_l20_n318(x)
+ end
+end
+
+def fun_l19_n895(x)
+ if (x < 1)
+ fun_l20_n825(x)
+ else
+ fun_l20_n574(x)
+ end
+end
+
+def fun_l19_n896(x)
+ if (x < 1)
+ fun_l20_n436(x)
+ else
+ fun_l20_n321(x)
+ end
+end
+
+def fun_l19_n897(x)
+ if (x < 1)
+ fun_l20_n317(x)
+ else
+ fun_l20_n312(x)
+ end
+end
+
+def fun_l19_n898(x)
+ if (x < 1)
+ fun_l20_n219(x)
+ else
+ fun_l20_n362(x)
+ end
+end
+
+def fun_l19_n899(x)
+ if (x < 1)
+ fun_l20_n731(x)
+ else
+ fun_l20_n1(x)
+ end
+end
+
+def fun_l19_n900(x)
+ if (x < 1)
+ fun_l20_n804(x)
+ else
+ fun_l20_n629(x)
+ end
+end
+
+def fun_l19_n901(x)
+ if (x < 1)
+ fun_l20_n152(x)
+ else
+ fun_l20_n232(x)
+ end
+end
+
+def fun_l19_n902(x)
+ if (x < 1)
+ fun_l20_n104(x)
+ else
+ fun_l20_n579(x)
+ end
+end
+
+def fun_l19_n903(x)
+ if (x < 1)
+ fun_l20_n860(x)
+ else
+ fun_l20_n322(x)
+ end
+end
+
+def fun_l19_n904(x)
+ if (x < 1)
+ fun_l20_n55(x)
+ else
+ fun_l20_n70(x)
+ end
+end
+
+def fun_l19_n905(x)
+ if (x < 1)
+ fun_l20_n674(x)
+ else
+ fun_l20_n713(x)
+ end
+end
+
+def fun_l19_n906(x)
+ if (x < 1)
+ fun_l20_n957(x)
+ else
+ fun_l20_n962(x)
+ end
+end
+
+def fun_l19_n907(x)
+ if (x < 1)
+ fun_l20_n656(x)
+ else
+ fun_l20_n582(x)
+ end
+end
+
+def fun_l19_n908(x)
+ if (x < 1)
+ fun_l20_n3(x)
+ else
+ fun_l20_n323(x)
+ end
+end
+
+def fun_l19_n909(x)
+ if (x < 1)
+ fun_l20_n763(x)
+ else
+ fun_l20_n387(x)
+ end
+end
+
+def fun_l19_n910(x)
+ if (x < 1)
+ fun_l20_n434(x)
+ else
+ fun_l20_n113(x)
+ end
+end
+
+def fun_l19_n911(x)
+ if (x < 1)
+ fun_l20_n713(x)
+ else
+ fun_l20_n4(x)
+ end
+end
+
+def fun_l19_n912(x)
+ if (x < 1)
+ fun_l20_n313(x)
+ else
+ fun_l20_n776(x)
+ end
+end
+
+def fun_l19_n913(x)
+ if (x < 1)
+ fun_l20_n541(x)
+ else
+ fun_l20_n80(x)
+ end
+end
+
+def fun_l19_n914(x)
+ if (x < 1)
+ fun_l20_n131(x)
+ else
+ fun_l20_n982(x)
+ end
+end
+
+def fun_l19_n915(x)
+ if (x < 1)
+ fun_l20_n558(x)
+ else
+ fun_l20_n538(x)
+ end
+end
+
+def fun_l19_n916(x)
+ if (x < 1)
+ fun_l20_n715(x)
+ else
+ fun_l20_n401(x)
+ end
+end
+
+def fun_l19_n917(x)
+ if (x < 1)
+ fun_l20_n820(x)
+ else
+ fun_l20_n576(x)
+ end
+end
+
+def fun_l19_n918(x)
+ if (x < 1)
+ fun_l20_n602(x)
+ else
+ fun_l20_n158(x)
+ end
+end
+
+def fun_l19_n919(x)
+ if (x < 1)
+ fun_l20_n127(x)
+ else
+ fun_l20_n493(x)
+ end
+end
+
+def fun_l19_n920(x)
+ if (x < 1)
+ fun_l20_n719(x)
+ else
+ fun_l20_n895(x)
+ end
+end
+
+def fun_l19_n921(x)
+ if (x < 1)
+ fun_l20_n277(x)
+ else
+ fun_l20_n588(x)
+ end
+end
+
+def fun_l19_n922(x)
+ if (x < 1)
+ fun_l20_n479(x)
+ else
+ fun_l20_n799(x)
+ end
+end
+
+def fun_l19_n923(x)
+ if (x < 1)
+ fun_l20_n879(x)
+ else
+ fun_l20_n809(x)
+ end
+end
+
+def fun_l19_n924(x)
+ if (x < 1)
+ fun_l20_n574(x)
+ else
+ fun_l20_n756(x)
+ end
+end
+
+def fun_l19_n925(x)
+ if (x < 1)
+ fun_l20_n774(x)
+ else
+ fun_l20_n806(x)
+ end
+end
+
+def fun_l19_n926(x)
+ if (x < 1)
+ fun_l20_n804(x)
+ else
+ fun_l20_n87(x)
+ end
+end
+
+def fun_l19_n927(x)
+ if (x < 1)
+ fun_l20_n647(x)
+ else
+ fun_l20_n497(x)
+ end
+end
+
+def fun_l19_n928(x)
+ if (x < 1)
+ fun_l20_n134(x)
+ else
+ fun_l20_n690(x)
+ end
+end
+
+def fun_l19_n929(x)
+ if (x < 1)
+ fun_l20_n981(x)
+ else
+ fun_l20_n590(x)
+ end
+end
+
+def fun_l19_n930(x)
+ if (x < 1)
+ fun_l20_n393(x)
+ else
+ fun_l20_n585(x)
+ end
+end
+
+def fun_l19_n931(x)
+ if (x < 1)
+ fun_l20_n408(x)
+ else
+ fun_l20_n753(x)
+ end
+end
+
+def fun_l19_n932(x)
+ if (x < 1)
+ fun_l20_n133(x)
+ else
+ fun_l20_n289(x)
+ end
+end
+
+def fun_l19_n933(x)
+ if (x < 1)
+ fun_l20_n552(x)
+ else
+ fun_l20_n867(x)
+ end
+end
+
+def fun_l19_n934(x)
+ if (x < 1)
+ fun_l20_n232(x)
+ else
+ fun_l20_n134(x)
+ end
+end
+
+def fun_l19_n935(x)
+ if (x < 1)
+ fun_l20_n45(x)
+ else
+ fun_l20_n100(x)
+ end
+end
+
+def fun_l19_n936(x)
+ if (x < 1)
+ fun_l20_n263(x)
+ else
+ fun_l20_n686(x)
+ end
+end
+
+def fun_l19_n937(x)
+ if (x < 1)
+ fun_l20_n63(x)
+ else
+ fun_l20_n401(x)
+ end
+end
+
+def fun_l19_n938(x)
+ if (x < 1)
+ fun_l20_n564(x)
+ else
+ fun_l20_n265(x)
+ end
+end
+
+def fun_l19_n939(x)
+ if (x < 1)
+ fun_l20_n414(x)
+ else
+ fun_l20_n32(x)
+ end
+end
+
+def fun_l19_n940(x)
+ if (x < 1)
+ fun_l20_n686(x)
+ else
+ fun_l20_n116(x)
+ end
+end
+
+def fun_l19_n941(x)
+ if (x < 1)
+ fun_l20_n812(x)
+ else
+ fun_l20_n438(x)
+ end
+end
+
+def fun_l19_n942(x)
+ if (x < 1)
+ fun_l20_n365(x)
+ else
+ fun_l20_n95(x)
+ end
+end
+
+def fun_l19_n943(x)
+ if (x < 1)
+ fun_l20_n159(x)
+ else
+ fun_l20_n763(x)
+ end
+end
+
+def fun_l19_n944(x)
+ if (x < 1)
+ fun_l20_n844(x)
+ else
+ fun_l20_n958(x)
+ end
+end
+
+def fun_l19_n945(x)
+ if (x < 1)
+ fun_l20_n730(x)
+ else
+ fun_l20_n814(x)
+ end
+end
+
+def fun_l19_n946(x)
+ if (x < 1)
+ fun_l20_n963(x)
+ else
+ fun_l20_n2(x)
+ end
+end
+
+def fun_l19_n947(x)
+ if (x < 1)
+ fun_l20_n285(x)
+ else
+ fun_l20_n605(x)
+ end
+end
+
+def fun_l19_n948(x)
+ if (x < 1)
+ fun_l20_n869(x)
+ else
+ fun_l20_n409(x)
+ end
+end
+
+def fun_l19_n949(x)
+ if (x < 1)
+ fun_l20_n313(x)
+ else
+ fun_l20_n854(x)
+ end
+end
+
+def fun_l19_n950(x)
+ if (x < 1)
+ fun_l20_n802(x)
+ else
+ fun_l20_n411(x)
+ end
+end
+
+def fun_l19_n951(x)
+ if (x < 1)
+ fun_l20_n273(x)
+ else
+ fun_l20_n100(x)
+ end
+end
+
+def fun_l19_n952(x)
+ if (x < 1)
+ fun_l20_n283(x)
+ else
+ fun_l20_n253(x)
+ end
+end
+
+def fun_l19_n953(x)
+ if (x < 1)
+ fun_l20_n137(x)
+ else
+ fun_l20_n535(x)
+ end
+end
+
+def fun_l19_n954(x)
+ if (x < 1)
+ fun_l20_n504(x)
+ else
+ fun_l20_n849(x)
+ end
+end
+
+def fun_l19_n955(x)
+ if (x < 1)
+ fun_l20_n568(x)
+ else
+ fun_l20_n208(x)
+ end
+end
+
+def fun_l19_n956(x)
+ if (x < 1)
+ fun_l20_n775(x)
+ else
+ fun_l20_n781(x)
+ end
+end
+
+def fun_l19_n957(x)
+ if (x < 1)
+ fun_l20_n144(x)
+ else
+ fun_l20_n411(x)
+ end
+end
+
+def fun_l19_n958(x)
+ if (x < 1)
+ fun_l20_n791(x)
+ else
+ fun_l20_n720(x)
+ end
+end
+
+def fun_l19_n959(x)
+ if (x < 1)
+ fun_l20_n268(x)
+ else
+ fun_l20_n251(x)
+ end
+end
+
+def fun_l19_n960(x)
+ if (x < 1)
+ fun_l20_n661(x)
+ else
+ fun_l20_n114(x)
+ end
+end
+
+def fun_l19_n961(x)
+ if (x < 1)
+ fun_l20_n559(x)
+ else
+ fun_l20_n177(x)
+ end
+end
+
+def fun_l19_n962(x)
+ if (x < 1)
+ fun_l20_n536(x)
+ else
+ fun_l20_n671(x)
+ end
+end
+
+def fun_l19_n963(x)
+ if (x < 1)
+ fun_l20_n64(x)
+ else
+ fun_l20_n656(x)
+ end
+end
+
+def fun_l19_n964(x)
+ if (x < 1)
+ fun_l20_n618(x)
+ else
+ fun_l20_n837(x)
+ end
+end
+
+def fun_l19_n965(x)
+ if (x < 1)
+ fun_l20_n201(x)
+ else
+ fun_l20_n562(x)
+ end
+end
+
+def fun_l19_n966(x)
+ if (x < 1)
+ fun_l20_n562(x)
+ else
+ fun_l20_n632(x)
+ end
+end
+
+def fun_l19_n967(x)
+ if (x < 1)
+ fun_l20_n183(x)
+ else
+ fun_l20_n589(x)
+ end
+end
+
+def fun_l19_n968(x)
+ if (x < 1)
+ fun_l20_n971(x)
+ else
+ fun_l20_n619(x)
+ end
+end
+
+def fun_l19_n969(x)
+ if (x < 1)
+ fun_l20_n826(x)
+ else
+ fun_l20_n745(x)
+ end
+end
+
+def fun_l19_n970(x)
+ if (x < 1)
+ fun_l20_n140(x)
+ else
+ fun_l20_n370(x)
+ end
+end
+
+def fun_l19_n971(x)
+ if (x < 1)
+ fun_l20_n26(x)
+ else
+ fun_l20_n243(x)
+ end
+end
+
+def fun_l19_n972(x)
+ if (x < 1)
+ fun_l20_n375(x)
+ else
+ fun_l20_n6(x)
+ end
+end
+
+def fun_l19_n973(x)
+ if (x < 1)
+ fun_l20_n289(x)
+ else
+ fun_l20_n266(x)
+ end
+end
+
+def fun_l19_n974(x)
+ if (x < 1)
+ fun_l20_n932(x)
+ else
+ fun_l20_n602(x)
+ end
+end
+
+def fun_l19_n975(x)
+ if (x < 1)
+ fun_l20_n272(x)
+ else
+ fun_l20_n671(x)
+ end
+end
+
+def fun_l19_n976(x)
+ if (x < 1)
+ fun_l20_n653(x)
+ else
+ fun_l20_n201(x)
+ end
+end
+
+def fun_l19_n977(x)
+ if (x < 1)
+ fun_l20_n785(x)
+ else
+ fun_l20_n976(x)
+ end
+end
+
+def fun_l19_n978(x)
+ if (x < 1)
+ fun_l20_n212(x)
+ else
+ fun_l20_n601(x)
+ end
+end
+
+def fun_l19_n979(x)
+ if (x < 1)
+ fun_l20_n218(x)
+ else
+ fun_l20_n914(x)
+ end
+end
+
+def fun_l19_n980(x)
+ if (x < 1)
+ fun_l20_n109(x)
+ else
+ fun_l20_n147(x)
+ end
+end
+
+def fun_l19_n981(x)
+ if (x < 1)
+ fun_l20_n46(x)
+ else
+ fun_l20_n276(x)
+ end
+end
+
+def fun_l19_n982(x)
+ if (x < 1)
+ fun_l20_n727(x)
+ else
+ fun_l20_n545(x)
+ end
+end
+
+def fun_l19_n983(x)
+ if (x < 1)
+ fun_l20_n679(x)
+ else
+ fun_l20_n731(x)
+ end
+end
+
+def fun_l19_n984(x)
+ if (x < 1)
+ fun_l20_n291(x)
+ else
+ fun_l20_n294(x)
+ end
+end
+
+def fun_l19_n985(x)
+ if (x < 1)
+ fun_l20_n741(x)
+ else
+ fun_l20_n508(x)
+ end
+end
+
+def fun_l19_n986(x)
+ if (x < 1)
+ fun_l20_n417(x)
+ else
+ fun_l20_n169(x)
+ end
+end
+
+def fun_l19_n987(x)
+ if (x < 1)
+ fun_l20_n685(x)
+ else
+ fun_l20_n871(x)
+ end
+end
+
+def fun_l19_n988(x)
+ if (x < 1)
+ fun_l20_n386(x)
+ else
+ fun_l20_n616(x)
+ end
+end
+
+def fun_l19_n989(x)
+ if (x < 1)
+ fun_l20_n317(x)
+ else
+ fun_l20_n954(x)
+ end
+end
+
+def fun_l19_n990(x)
+ if (x < 1)
+ fun_l20_n954(x)
+ else
+ fun_l20_n974(x)
+ end
+end
+
+def fun_l19_n991(x)
+ if (x < 1)
+ fun_l20_n251(x)
+ else
+ fun_l20_n56(x)
+ end
+end
+
+def fun_l19_n992(x)
+ if (x < 1)
+ fun_l20_n775(x)
+ else
+ fun_l20_n175(x)
+ end
+end
+
+def fun_l19_n993(x)
+ if (x < 1)
+ fun_l20_n578(x)
+ else
+ fun_l20_n217(x)
+ end
+end
+
+def fun_l19_n994(x)
+ if (x < 1)
+ fun_l20_n483(x)
+ else
+ fun_l20_n279(x)
+ end
+end
+
+def fun_l19_n995(x)
+ if (x < 1)
+ fun_l20_n316(x)
+ else
+ fun_l20_n343(x)
+ end
+end
+
+def fun_l19_n996(x)
+ if (x < 1)
+ fun_l20_n618(x)
+ else
+ fun_l20_n995(x)
+ end
+end
+
+def fun_l19_n997(x)
+ if (x < 1)
+ fun_l20_n396(x)
+ else
+ fun_l20_n540(x)
+ end
+end
+
+def fun_l19_n998(x)
+ if (x < 1)
+ fun_l20_n184(x)
+ else
+ fun_l20_n380(x)
+ end
+end
+
+def fun_l19_n999(x)
+ if (x < 1)
+ fun_l20_n360(x)
+ else
+ fun_l20_n48(x)
+ end
+end
+
+def fun_l20_n0(x)
+ if (x < 1)
+ fun_l21_n609(x)
+ else
+ fun_l21_n305(x)
+ end
+end
+
+def fun_l20_n1(x)
+ if (x < 1)
+ fun_l21_n937(x)
+ else
+ fun_l21_n174(x)
+ end
+end
+
+def fun_l20_n2(x)
+ if (x < 1)
+ fun_l21_n939(x)
+ else
+ fun_l21_n174(x)
+ end
+end
+
+def fun_l20_n3(x)
+ if (x < 1)
+ fun_l21_n163(x)
+ else
+ fun_l21_n572(x)
+ end
+end
+
+def fun_l20_n4(x)
+ if (x < 1)
+ fun_l21_n43(x)
+ else
+ fun_l21_n384(x)
+ end
+end
+
+def fun_l20_n5(x)
+ if (x < 1)
+ fun_l21_n565(x)
+ else
+ fun_l21_n788(x)
+ end
+end
+
+def fun_l20_n6(x)
+ if (x < 1)
+ fun_l21_n539(x)
+ else
+ fun_l21_n806(x)
+ end
+end
+
+def fun_l20_n7(x)
+ if (x < 1)
+ fun_l21_n395(x)
+ else
+ fun_l21_n9(x)
+ end
+end
+
+def fun_l20_n8(x)
+ if (x < 1)
+ fun_l21_n231(x)
+ else
+ fun_l21_n788(x)
+ end
+end
+
+def fun_l20_n9(x)
+ if (x < 1)
+ fun_l21_n511(x)
+ else
+ fun_l21_n236(x)
+ end
+end
+
+def fun_l20_n10(x)
+ if (x < 1)
+ fun_l21_n141(x)
+ else
+ fun_l21_n34(x)
+ end
+end
+
+def fun_l20_n11(x)
+ if (x < 1)
+ fun_l21_n801(x)
+ else
+ fun_l21_n760(x)
+ end
+end
+
+def fun_l20_n12(x)
+ if (x < 1)
+ fun_l21_n627(x)
+ else
+ fun_l21_n289(x)
+ end
+end
+
+def fun_l20_n13(x)
+ if (x < 1)
+ fun_l21_n795(x)
+ else
+ fun_l21_n183(x)
+ end
+end
+
+def fun_l20_n14(x)
+ if (x < 1)
+ fun_l21_n384(x)
+ else
+ fun_l21_n3(x)
+ end
+end
+
+def fun_l20_n15(x)
+ if (x < 1)
+ fun_l21_n823(x)
+ else
+ fun_l21_n312(x)
+ end
+end
+
+def fun_l20_n16(x)
+ if (x < 1)
+ fun_l21_n727(x)
+ else
+ fun_l21_n897(x)
+ end
+end
+
+def fun_l20_n17(x)
+ if (x < 1)
+ fun_l21_n710(x)
+ else
+ fun_l21_n532(x)
+ end
+end
+
+def fun_l20_n18(x)
+ if (x < 1)
+ fun_l21_n373(x)
+ else
+ fun_l21_n807(x)
+ end
+end
+
+def fun_l20_n19(x)
+ if (x < 1)
+ fun_l21_n164(x)
+ else
+ fun_l21_n472(x)
+ end
+end
+
+def fun_l20_n20(x)
+ if (x < 1)
+ fun_l21_n522(x)
+ else
+ fun_l21_n264(x)
+ end
+end
+
+def fun_l20_n21(x)
+ if (x < 1)
+ fun_l21_n122(x)
+ else
+ fun_l21_n897(x)
+ end
+end
+
+def fun_l20_n22(x)
+ if (x < 1)
+ fun_l21_n292(x)
+ else
+ fun_l21_n873(x)
+ end
+end
+
+def fun_l20_n23(x)
+ if (x < 1)
+ fun_l21_n461(x)
+ else
+ fun_l21_n681(x)
+ end
+end
+
+def fun_l20_n24(x)
+ if (x < 1)
+ fun_l21_n80(x)
+ else
+ fun_l21_n484(x)
+ end
+end
+
+def fun_l20_n25(x)
+ if (x < 1)
+ fun_l21_n7(x)
+ else
+ fun_l21_n444(x)
+ end
+end
+
+def fun_l20_n26(x)
+ if (x < 1)
+ fun_l21_n269(x)
+ else
+ fun_l21_n58(x)
+ end
+end
+
+def fun_l20_n27(x)
+ if (x < 1)
+ fun_l21_n318(x)
+ else
+ fun_l21_n224(x)
+ end
+end
+
+def fun_l20_n28(x)
+ if (x < 1)
+ fun_l21_n437(x)
+ else
+ fun_l21_n621(x)
+ end
+end
+
+def fun_l20_n29(x)
+ if (x < 1)
+ fun_l21_n907(x)
+ else
+ fun_l21_n32(x)
+ end
+end
+
+def fun_l20_n30(x)
+ if (x < 1)
+ fun_l21_n525(x)
+ else
+ fun_l21_n10(x)
+ end
+end
+
+def fun_l20_n31(x)
+ if (x < 1)
+ fun_l21_n278(x)
+ else
+ fun_l21_n243(x)
+ end
+end
+
+def fun_l20_n32(x)
+ if (x < 1)
+ fun_l21_n865(x)
+ else
+ fun_l21_n236(x)
+ end
+end
+
+def fun_l20_n33(x)
+ if (x < 1)
+ fun_l21_n732(x)
+ else
+ fun_l21_n472(x)
+ end
+end
+
+def fun_l20_n34(x)
+ if (x < 1)
+ fun_l21_n331(x)
+ else
+ fun_l21_n162(x)
+ end
+end
+
+def fun_l20_n35(x)
+ if (x < 1)
+ fun_l21_n217(x)
+ else
+ fun_l21_n877(x)
+ end
+end
+
+def fun_l20_n36(x)
+ if (x < 1)
+ fun_l21_n125(x)
+ else
+ fun_l21_n683(x)
+ end
+end
+
+def fun_l20_n37(x)
+ if (x < 1)
+ fun_l21_n236(x)
+ else
+ fun_l21_n79(x)
+ end
+end
+
+def fun_l20_n38(x)
+ if (x < 1)
+ fun_l21_n308(x)
+ else
+ fun_l21_n995(x)
+ end
+end
+
+def fun_l20_n39(x)
+ if (x < 1)
+ fun_l21_n923(x)
+ else
+ fun_l21_n956(x)
+ end
+end
+
+def fun_l20_n40(x)
+ if (x < 1)
+ fun_l21_n505(x)
+ else
+ fun_l21_n47(x)
+ end
+end
+
+def fun_l20_n41(x)
+ if (x < 1)
+ fun_l21_n24(x)
+ else
+ fun_l21_n894(x)
+ end
+end
+
+def fun_l20_n42(x)
+ if (x < 1)
+ fun_l21_n824(x)
+ else
+ fun_l21_n106(x)
+ end
+end
+
+def fun_l20_n43(x)
+ if (x < 1)
+ fun_l21_n898(x)
+ else
+ fun_l21_n576(x)
+ end
+end
+
+def fun_l20_n44(x)
+ if (x < 1)
+ fun_l21_n231(x)
+ else
+ fun_l21_n689(x)
+ end
+end
+
+def fun_l20_n45(x)
+ if (x < 1)
+ fun_l21_n340(x)
+ else
+ fun_l21_n887(x)
+ end
+end
+
+def fun_l20_n46(x)
+ if (x < 1)
+ fun_l21_n157(x)
+ else
+ fun_l21_n551(x)
+ end
+end
+
+def fun_l20_n47(x)
+ if (x < 1)
+ fun_l21_n904(x)
+ else
+ fun_l21_n975(x)
+ end
+end
+
+def fun_l20_n48(x)
+ if (x < 1)
+ fun_l21_n392(x)
+ else
+ fun_l21_n882(x)
+ end
+end
+
+def fun_l20_n49(x)
+ if (x < 1)
+ fun_l21_n484(x)
+ else
+ fun_l21_n810(x)
+ end
+end
+
+def fun_l20_n50(x)
+ if (x < 1)
+ fun_l21_n517(x)
+ else
+ fun_l21_n434(x)
+ end
+end
+
+def fun_l20_n51(x)
+ if (x < 1)
+ fun_l21_n115(x)
+ else
+ fun_l21_n975(x)
+ end
+end
+
+def fun_l20_n52(x)
+ if (x < 1)
+ fun_l21_n633(x)
+ else
+ fun_l21_n799(x)
+ end
+end
+
+def fun_l20_n53(x)
+ if (x < 1)
+ fun_l21_n938(x)
+ else
+ fun_l21_n321(x)
+ end
+end
+
+def fun_l20_n54(x)
+ if (x < 1)
+ fun_l21_n98(x)
+ else
+ fun_l21_n343(x)
+ end
+end
+
+def fun_l20_n55(x)
+ if (x < 1)
+ fun_l21_n851(x)
+ else
+ fun_l21_n794(x)
+ end
+end
+
+def fun_l20_n56(x)
+ if (x < 1)
+ fun_l21_n119(x)
+ else
+ fun_l21_n649(x)
+ end
+end
+
+def fun_l20_n57(x)
+ if (x < 1)
+ fun_l21_n799(x)
+ else
+ fun_l21_n397(x)
+ end
+end
+
+def fun_l20_n58(x)
+ if (x < 1)
+ fun_l21_n429(x)
+ else
+ fun_l21_n781(x)
+ end
+end
+
+def fun_l20_n59(x)
+ if (x < 1)
+ fun_l21_n862(x)
+ else
+ fun_l21_n870(x)
+ end
+end
+
+def fun_l20_n60(x)
+ if (x < 1)
+ fun_l21_n864(x)
+ else
+ fun_l21_n333(x)
+ end
+end
+
+def fun_l20_n61(x)
+ if (x < 1)
+ fun_l21_n673(x)
+ else
+ fun_l21_n481(x)
+ end
+end
+
+def fun_l20_n62(x)
+ if (x < 1)
+ fun_l21_n193(x)
+ else
+ fun_l21_n524(x)
+ end
+end
+
+def fun_l20_n63(x)
+ if (x < 1)
+ fun_l21_n976(x)
+ else
+ fun_l21_n0(x)
+ end
+end
+
+def fun_l20_n64(x)
+ if (x < 1)
+ fun_l21_n804(x)
+ else
+ fun_l21_n833(x)
+ end
+end
+
+def fun_l20_n65(x)
+ if (x < 1)
+ fun_l21_n20(x)
+ else
+ fun_l21_n285(x)
+ end
+end
+
+def fun_l20_n66(x)
+ if (x < 1)
+ fun_l21_n70(x)
+ else
+ fun_l21_n932(x)
+ end
+end
+
+def fun_l20_n67(x)
+ if (x < 1)
+ fun_l21_n213(x)
+ else
+ fun_l21_n196(x)
+ end
+end
+
+def fun_l20_n68(x)
+ if (x < 1)
+ fun_l21_n806(x)
+ else
+ fun_l21_n322(x)
+ end
+end
+
+def fun_l20_n69(x)
+ if (x < 1)
+ fun_l21_n583(x)
+ else
+ fun_l21_n62(x)
+ end
+end
+
+def fun_l20_n70(x)
+ if (x < 1)
+ fun_l21_n141(x)
+ else
+ fun_l21_n490(x)
+ end
+end
+
+def fun_l20_n71(x)
+ if (x < 1)
+ fun_l21_n995(x)
+ else
+ fun_l21_n398(x)
+ end
+end
+
+def fun_l20_n72(x)
+ if (x < 1)
+ fun_l21_n436(x)
+ else
+ fun_l21_n490(x)
+ end
+end
+
+def fun_l20_n73(x)
+ if (x < 1)
+ fun_l21_n585(x)
+ else
+ fun_l21_n275(x)
+ end
+end
+
+def fun_l20_n74(x)
+ if (x < 1)
+ fun_l21_n120(x)
+ else
+ fun_l21_n968(x)
+ end
+end
+
+def fun_l20_n75(x)
+ if (x < 1)
+ fun_l21_n562(x)
+ else
+ fun_l21_n896(x)
+ end
+end
+
+def fun_l20_n76(x)
+ if (x < 1)
+ fun_l21_n794(x)
+ else
+ fun_l21_n224(x)
+ end
+end
+
+def fun_l20_n77(x)
+ if (x < 1)
+ fun_l21_n71(x)
+ else
+ fun_l21_n870(x)
+ end
+end
+
+def fun_l20_n78(x)
+ if (x < 1)
+ fun_l21_n0(x)
+ else
+ fun_l21_n41(x)
+ end
+end
+
+def fun_l20_n79(x)
+ if (x < 1)
+ fun_l21_n325(x)
+ else
+ fun_l21_n814(x)
+ end
+end
+
+def fun_l20_n80(x)
+ if (x < 1)
+ fun_l21_n963(x)
+ else
+ fun_l21_n792(x)
+ end
+end
+
+def fun_l20_n81(x)
+ if (x < 1)
+ fun_l21_n415(x)
+ else
+ fun_l21_n200(x)
+ end
+end
+
+def fun_l20_n82(x)
+ if (x < 1)
+ fun_l21_n438(x)
+ else
+ fun_l21_n506(x)
+ end
+end
+
+def fun_l20_n83(x)
+ if (x < 1)
+ fun_l21_n283(x)
+ else
+ fun_l21_n708(x)
+ end
+end
+
+def fun_l20_n84(x)
+ if (x < 1)
+ fun_l21_n968(x)
+ else
+ fun_l21_n80(x)
+ end
+end
+
+def fun_l20_n85(x)
+ if (x < 1)
+ fun_l21_n839(x)
+ else
+ fun_l21_n808(x)
+ end
+end
+
+def fun_l20_n86(x)
+ if (x < 1)
+ fun_l21_n653(x)
+ else
+ fun_l21_n343(x)
+ end
+end
+
+def fun_l20_n87(x)
+ if (x < 1)
+ fun_l21_n580(x)
+ else
+ fun_l21_n652(x)
+ end
+end
+
+def fun_l20_n88(x)
+ if (x < 1)
+ fun_l21_n64(x)
+ else
+ fun_l21_n899(x)
+ end
+end
+
+def fun_l20_n89(x)
+ if (x < 1)
+ fun_l21_n325(x)
+ else
+ fun_l21_n645(x)
+ end
+end
+
+def fun_l20_n90(x)
+ if (x < 1)
+ fun_l21_n251(x)
+ else
+ fun_l21_n210(x)
+ end
+end
+
+def fun_l20_n91(x)
+ if (x < 1)
+ fun_l21_n943(x)
+ else
+ fun_l21_n451(x)
+ end
+end
+
+def fun_l20_n92(x)
+ if (x < 1)
+ fun_l21_n95(x)
+ else
+ fun_l21_n937(x)
+ end
+end
+
+def fun_l20_n93(x)
+ if (x < 1)
+ fun_l21_n263(x)
+ else
+ fun_l21_n107(x)
+ end
+end
+
+def fun_l20_n94(x)
+ if (x < 1)
+ fun_l21_n438(x)
+ else
+ fun_l21_n213(x)
+ end
+end
+
+def fun_l20_n95(x)
+ if (x < 1)
+ fun_l21_n283(x)
+ else
+ fun_l21_n203(x)
+ end
+end
+
+def fun_l20_n96(x)
+ if (x < 1)
+ fun_l21_n809(x)
+ else
+ fun_l21_n154(x)
+ end
+end
+
+def fun_l20_n97(x)
+ if (x < 1)
+ fun_l21_n513(x)
+ else
+ fun_l21_n15(x)
+ end
+end
+
+def fun_l20_n98(x)
+ if (x < 1)
+ fun_l21_n854(x)
+ else
+ fun_l21_n679(x)
+ end
+end
+
+def fun_l20_n99(x)
+ if (x < 1)
+ fun_l21_n102(x)
+ else
+ fun_l21_n546(x)
+ end
+end
+
+def fun_l20_n100(x)
+ if (x < 1)
+ fun_l21_n790(x)
+ else
+ fun_l21_n143(x)
+ end
+end
+
+def fun_l20_n101(x)
+ if (x < 1)
+ fun_l21_n835(x)
+ else
+ fun_l21_n78(x)
+ end
+end
+
+def fun_l20_n102(x)
+ if (x < 1)
+ fun_l21_n96(x)
+ else
+ fun_l21_n995(x)
+ end
+end
+
+def fun_l20_n103(x)
+ if (x < 1)
+ fun_l21_n445(x)
+ else
+ fun_l21_n332(x)
+ end
+end
+
+def fun_l20_n104(x)
+ if (x < 1)
+ fun_l21_n532(x)
+ else
+ fun_l21_n509(x)
+ end
+end
+
+def fun_l20_n105(x)
+ if (x < 1)
+ fun_l21_n592(x)
+ else
+ fun_l21_n237(x)
+ end
+end
+
+def fun_l20_n106(x)
+ if (x < 1)
+ fun_l21_n837(x)
+ else
+ fun_l21_n13(x)
+ end
+end
+
+def fun_l20_n107(x)
+ if (x < 1)
+ fun_l21_n518(x)
+ else
+ fun_l21_n463(x)
+ end
+end
+
+def fun_l20_n108(x)
+ if (x < 1)
+ fun_l21_n373(x)
+ else
+ fun_l21_n597(x)
+ end
+end
+
+def fun_l20_n109(x)
+ if (x < 1)
+ fun_l21_n832(x)
+ else
+ fun_l21_n784(x)
+ end
+end
+
+def fun_l20_n110(x)
+ if (x < 1)
+ fun_l21_n408(x)
+ else
+ fun_l21_n738(x)
+ end
+end
+
+def fun_l20_n111(x)
+ if (x < 1)
+ fun_l21_n243(x)
+ else
+ fun_l21_n96(x)
+ end
+end
+
+def fun_l20_n112(x)
+ if (x < 1)
+ fun_l21_n251(x)
+ else
+ fun_l21_n151(x)
+ end
+end
+
+def fun_l20_n113(x)
+ if (x < 1)
+ fun_l21_n970(x)
+ else
+ fun_l21_n329(x)
+ end
+end
+
+def fun_l20_n114(x)
+ if (x < 1)
+ fun_l21_n691(x)
+ else
+ fun_l21_n309(x)
+ end
+end
+
+def fun_l20_n115(x)
+ if (x < 1)
+ fun_l21_n250(x)
+ else
+ fun_l21_n927(x)
+ end
+end
+
+def fun_l20_n116(x)
+ if (x < 1)
+ fun_l21_n819(x)
+ else
+ fun_l21_n49(x)
+ end
+end
+
+def fun_l20_n117(x)
+ if (x < 1)
+ fun_l21_n761(x)
+ else
+ fun_l21_n91(x)
+ end
+end
+
+def fun_l20_n118(x)
+ if (x < 1)
+ fun_l21_n170(x)
+ else
+ fun_l21_n317(x)
+ end
+end
+
+def fun_l20_n119(x)
+ if (x < 1)
+ fun_l21_n199(x)
+ else
+ fun_l21_n406(x)
+ end
+end
+
+def fun_l20_n120(x)
+ if (x < 1)
+ fun_l21_n983(x)
+ else
+ fun_l21_n742(x)
+ end
+end
+
+def fun_l20_n121(x)
+ if (x < 1)
+ fun_l21_n428(x)
+ else
+ fun_l21_n887(x)
+ end
+end
+
+def fun_l20_n122(x)
+ if (x < 1)
+ fun_l21_n369(x)
+ else
+ fun_l21_n64(x)
+ end
+end
+
+def fun_l20_n123(x)
+ if (x < 1)
+ fun_l21_n727(x)
+ else
+ fun_l21_n484(x)
+ end
+end
+
+def fun_l20_n124(x)
+ if (x < 1)
+ fun_l21_n310(x)
+ else
+ fun_l21_n198(x)
+ end
+end
+
+def fun_l20_n125(x)
+ if (x < 1)
+ fun_l21_n747(x)
+ else
+ fun_l21_n935(x)
+ end
+end
+
+def fun_l20_n126(x)
+ if (x < 1)
+ fun_l21_n389(x)
+ else
+ fun_l21_n966(x)
+ end
+end
+
+def fun_l20_n127(x)
+ if (x < 1)
+ fun_l21_n852(x)
+ else
+ fun_l21_n128(x)
+ end
+end
+
+def fun_l20_n128(x)
+ if (x < 1)
+ fun_l21_n10(x)
+ else
+ fun_l21_n376(x)
+ end
+end
+
+def fun_l20_n129(x)
+ if (x < 1)
+ fun_l21_n413(x)
+ else
+ fun_l21_n465(x)
+ end
+end
+
+def fun_l20_n130(x)
+ if (x < 1)
+ fun_l21_n536(x)
+ else
+ fun_l21_n689(x)
+ end
+end
+
+def fun_l20_n131(x)
+ if (x < 1)
+ fun_l21_n707(x)
+ else
+ fun_l21_n793(x)
+ end
+end
+
+def fun_l20_n132(x)
+ if (x < 1)
+ fun_l21_n328(x)
+ else
+ fun_l21_n56(x)
+ end
+end
+
+def fun_l20_n133(x)
+ if (x < 1)
+ fun_l21_n318(x)
+ else
+ fun_l21_n570(x)
+ end
+end
+
+def fun_l20_n134(x)
+ if (x < 1)
+ fun_l21_n656(x)
+ else
+ fun_l21_n187(x)
+ end
+end
+
+def fun_l20_n135(x)
+ if (x < 1)
+ fun_l21_n259(x)
+ else
+ fun_l21_n718(x)
+ end
+end
+
+def fun_l20_n136(x)
+ if (x < 1)
+ fun_l21_n284(x)
+ else
+ fun_l21_n167(x)
+ end
+end
+
+def fun_l20_n137(x)
+ if (x < 1)
+ fun_l21_n788(x)
+ else
+ fun_l21_n595(x)
+ end
+end
+
+def fun_l20_n138(x)
+ if (x < 1)
+ fun_l21_n431(x)
+ else
+ fun_l21_n620(x)
+ end
+end
+
+def fun_l20_n139(x)
+ if (x < 1)
+ fun_l21_n365(x)
+ else
+ fun_l21_n995(x)
+ end
+end
+
+def fun_l20_n140(x)
+ if (x < 1)
+ fun_l21_n614(x)
+ else
+ fun_l21_n79(x)
+ end
+end
+
+def fun_l20_n141(x)
+ if (x < 1)
+ fun_l21_n138(x)
+ else
+ fun_l21_n655(x)
+ end
+end
+
+def fun_l20_n142(x)
+ if (x < 1)
+ fun_l21_n155(x)
+ else
+ fun_l21_n34(x)
+ end
+end
+
+def fun_l20_n143(x)
+ if (x < 1)
+ fun_l21_n829(x)
+ else
+ fun_l21_n703(x)
+ end
+end
+
+def fun_l20_n144(x)
+ if (x < 1)
+ fun_l21_n290(x)
+ else
+ fun_l21_n279(x)
+ end
+end
+
+def fun_l20_n145(x)
+ if (x < 1)
+ fun_l21_n825(x)
+ else
+ fun_l21_n720(x)
+ end
+end
+
+def fun_l20_n146(x)
+ if (x < 1)
+ fun_l21_n678(x)
+ else
+ fun_l21_n347(x)
+ end
+end
+
+def fun_l20_n147(x)
+ if (x < 1)
+ fun_l21_n967(x)
+ else
+ fun_l21_n133(x)
+ end
+end
+
+def fun_l20_n148(x)
+ if (x < 1)
+ fun_l21_n935(x)
+ else
+ fun_l21_n438(x)
+ end
+end
+
+def fun_l20_n149(x)
+ if (x < 1)
+ fun_l21_n14(x)
+ else
+ fun_l21_n233(x)
+ end
+end
+
+def fun_l20_n150(x)
+ if (x < 1)
+ fun_l21_n42(x)
+ else
+ fun_l21_n507(x)
+ end
+end
+
+def fun_l20_n151(x)
+ if (x < 1)
+ fun_l21_n33(x)
+ else
+ fun_l21_n404(x)
+ end
+end
+
+def fun_l20_n152(x)
+ if (x < 1)
+ fun_l21_n897(x)
+ else
+ fun_l21_n972(x)
+ end
+end
+
+def fun_l20_n153(x)
+ if (x < 1)
+ fun_l21_n221(x)
+ else
+ fun_l21_n718(x)
+ end
+end
+
+def fun_l20_n154(x)
+ if (x < 1)
+ fun_l21_n737(x)
+ else
+ fun_l21_n257(x)
+ end
+end
+
+def fun_l20_n155(x)
+ if (x < 1)
+ fun_l21_n465(x)
+ else
+ fun_l21_n917(x)
+ end
+end
+
+def fun_l20_n156(x)
+ if (x < 1)
+ fun_l21_n338(x)
+ else
+ fun_l21_n673(x)
+ end
+end
+
+def fun_l20_n157(x)
+ if (x < 1)
+ fun_l21_n429(x)
+ else
+ fun_l21_n23(x)
+ end
+end
+
+def fun_l20_n158(x)
+ if (x < 1)
+ fun_l21_n826(x)
+ else
+ fun_l21_n115(x)
+ end
+end
+
+def fun_l20_n159(x)
+ if (x < 1)
+ fun_l21_n713(x)
+ else
+ fun_l21_n954(x)
+ end
+end
+
+def fun_l20_n160(x)
+ if (x < 1)
+ fun_l21_n897(x)
+ else
+ fun_l21_n46(x)
+ end
+end
+
+def fun_l20_n161(x)
+ if (x < 1)
+ fun_l21_n751(x)
+ else
+ fun_l21_n885(x)
+ end
+end
+
+def fun_l20_n162(x)
+ if (x < 1)
+ fun_l21_n935(x)
+ else
+ fun_l21_n230(x)
+ end
+end
+
+def fun_l20_n163(x)
+ if (x < 1)
+ fun_l21_n862(x)
+ else
+ fun_l21_n874(x)
+ end
+end
+
+def fun_l20_n164(x)
+ if (x < 1)
+ fun_l21_n695(x)
+ else
+ fun_l21_n707(x)
+ end
+end
+
+def fun_l20_n165(x)
+ if (x < 1)
+ fun_l21_n539(x)
+ else
+ fun_l21_n14(x)
+ end
+end
+
+def fun_l20_n166(x)
+ if (x < 1)
+ fun_l21_n139(x)
+ else
+ fun_l21_n766(x)
+ end
+end
+
+def fun_l20_n167(x)
+ if (x < 1)
+ fun_l21_n100(x)
+ else
+ fun_l21_n229(x)
+ end
+end
+
+def fun_l20_n168(x)
+ if (x < 1)
+ fun_l21_n88(x)
+ else
+ fun_l21_n642(x)
+ end
+end
+
+def fun_l20_n169(x)
+ if (x < 1)
+ fun_l21_n57(x)
+ else
+ fun_l21_n252(x)
+ end
+end
+
+def fun_l20_n170(x)
+ if (x < 1)
+ fun_l21_n470(x)
+ else
+ fun_l21_n224(x)
+ end
+end
+
+def fun_l20_n171(x)
+ if (x < 1)
+ fun_l21_n163(x)
+ else
+ fun_l21_n114(x)
+ end
+end
+
+def fun_l20_n172(x)
+ if (x < 1)
+ fun_l21_n231(x)
+ else
+ fun_l21_n405(x)
+ end
+end
+
+def fun_l20_n173(x)
+ if (x < 1)
+ fun_l21_n553(x)
+ else
+ fun_l21_n758(x)
+ end
+end
+
+def fun_l20_n174(x)
+ if (x < 1)
+ fun_l21_n874(x)
+ else
+ fun_l21_n43(x)
+ end
+end
+
+def fun_l20_n175(x)
+ if (x < 1)
+ fun_l21_n911(x)
+ else
+ fun_l21_n644(x)
+ end
+end
+
+def fun_l20_n176(x)
+ if (x < 1)
+ fun_l21_n747(x)
+ else
+ fun_l21_n900(x)
+ end
+end
+
+def fun_l20_n177(x)
+ if (x < 1)
+ fun_l21_n956(x)
+ else
+ fun_l21_n152(x)
+ end
+end
+
+def fun_l20_n178(x)
+ if (x < 1)
+ fun_l21_n226(x)
+ else
+ fun_l21_n654(x)
+ end
+end
+
+def fun_l20_n179(x)
+ if (x < 1)
+ fun_l21_n284(x)
+ else
+ fun_l21_n968(x)
+ end
+end
+
+def fun_l20_n180(x)
+ if (x < 1)
+ fun_l21_n181(x)
+ else
+ fun_l21_n690(x)
+ end
+end
+
+def fun_l20_n181(x)
+ if (x < 1)
+ fun_l21_n35(x)
+ else
+ fun_l21_n500(x)
+ end
+end
+
+def fun_l20_n182(x)
+ if (x < 1)
+ fun_l21_n212(x)
+ else
+ fun_l21_n559(x)
+ end
+end
+
+def fun_l20_n183(x)
+ if (x < 1)
+ fun_l21_n981(x)
+ else
+ fun_l21_n605(x)
+ end
+end
+
+def fun_l20_n184(x)
+ if (x < 1)
+ fun_l21_n447(x)
+ else
+ fun_l21_n718(x)
+ end
+end
+
+def fun_l20_n185(x)
+ if (x < 1)
+ fun_l21_n272(x)
+ else
+ fun_l21_n341(x)
+ end
+end
+
+def fun_l20_n186(x)
+ if (x < 1)
+ fun_l21_n5(x)
+ else
+ fun_l21_n426(x)
+ end
+end
+
+def fun_l20_n187(x)
+ if (x < 1)
+ fun_l21_n630(x)
+ else
+ fun_l21_n62(x)
+ end
+end
+
+def fun_l20_n188(x)
+ if (x < 1)
+ fun_l21_n600(x)
+ else
+ fun_l21_n674(x)
+ end
+end
+
+def fun_l20_n189(x)
+ if (x < 1)
+ fun_l21_n645(x)
+ else
+ fun_l21_n936(x)
+ end
+end
+
+def fun_l20_n190(x)
+ if (x < 1)
+ fun_l21_n15(x)
+ else
+ fun_l21_n158(x)
+ end
+end
+
+def fun_l20_n191(x)
+ if (x < 1)
+ fun_l21_n789(x)
+ else
+ fun_l21_n103(x)
+ end
+end
+
+def fun_l20_n192(x)
+ if (x < 1)
+ fun_l21_n501(x)
+ else
+ fun_l21_n655(x)
+ end
+end
+
+def fun_l20_n193(x)
+ if (x < 1)
+ fun_l21_n242(x)
+ else
+ fun_l21_n241(x)
+ end
+end
+
+def fun_l20_n194(x)
+ if (x < 1)
+ fun_l21_n296(x)
+ else
+ fun_l21_n442(x)
+ end
+end
+
+def fun_l20_n195(x)
+ if (x < 1)
+ fun_l21_n288(x)
+ else
+ fun_l21_n165(x)
+ end
+end
+
+def fun_l20_n196(x)
+ if (x < 1)
+ fun_l21_n336(x)
+ else
+ fun_l21_n328(x)
+ end
+end
+
+def fun_l20_n197(x)
+ if (x < 1)
+ fun_l21_n423(x)
+ else
+ fun_l21_n906(x)
+ end
+end
+
+def fun_l20_n198(x)
+ if (x < 1)
+ fun_l21_n875(x)
+ else
+ fun_l21_n801(x)
+ end
+end
+
+def fun_l20_n199(x)
+ if (x < 1)
+ fun_l21_n864(x)
+ else
+ fun_l21_n594(x)
+ end
+end
+
+def fun_l20_n200(x)
+ if (x < 1)
+ fun_l21_n145(x)
+ else
+ fun_l21_n728(x)
+ end
+end
+
+def fun_l20_n201(x)
+ if (x < 1)
+ fun_l21_n941(x)
+ else
+ fun_l21_n592(x)
+ end
+end
+
+def fun_l20_n202(x)
+ if (x < 1)
+ fun_l21_n458(x)
+ else
+ fun_l21_n839(x)
+ end
+end
+
+def fun_l20_n203(x)
+ if (x < 1)
+ fun_l21_n352(x)
+ else
+ fun_l21_n319(x)
+ end
+end
+
+def fun_l20_n204(x)
+ if (x < 1)
+ fun_l21_n453(x)
+ else
+ fun_l21_n944(x)
+ end
+end
+
+def fun_l20_n205(x)
+ if (x < 1)
+ fun_l21_n479(x)
+ else
+ fun_l21_n409(x)
+ end
+end
+
+def fun_l20_n206(x)
+ if (x < 1)
+ fun_l21_n72(x)
+ else
+ fun_l21_n177(x)
+ end
+end
+
+def fun_l20_n207(x)
+ if (x < 1)
+ fun_l21_n895(x)
+ else
+ fun_l21_n77(x)
+ end
+end
+
+def fun_l20_n208(x)
+ if (x < 1)
+ fun_l21_n308(x)
+ else
+ fun_l21_n181(x)
+ end
+end
+
+def fun_l20_n209(x)
+ if (x < 1)
+ fun_l21_n358(x)
+ else
+ fun_l21_n666(x)
+ end
+end
+
+def fun_l20_n210(x)
+ if (x < 1)
+ fun_l21_n275(x)
+ else
+ fun_l21_n739(x)
+ end
+end
+
+def fun_l20_n211(x)
+ if (x < 1)
+ fun_l21_n706(x)
+ else
+ fun_l21_n722(x)
+ end
+end
+
+def fun_l20_n212(x)
+ if (x < 1)
+ fun_l21_n185(x)
+ else
+ fun_l21_n893(x)
+ end
+end
+
+def fun_l20_n213(x)
+ if (x < 1)
+ fun_l21_n307(x)
+ else
+ fun_l21_n871(x)
+ end
+end
+
+def fun_l20_n214(x)
+ if (x < 1)
+ fun_l21_n365(x)
+ else
+ fun_l21_n311(x)
+ end
+end
+
+def fun_l20_n215(x)
+ if (x < 1)
+ fun_l21_n176(x)
+ else
+ fun_l21_n998(x)
+ end
+end
+
+def fun_l20_n216(x)
+ if (x < 1)
+ fun_l21_n542(x)
+ else
+ fun_l21_n248(x)
+ end
+end
+
+def fun_l20_n217(x)
+ if (x < 1)
+ fun_l21_n568(x)
+ else
+ fun_l21_n671(x)
+ end
+end
+
+def fun_l20_n218(x)
+ if (x < 1)
+ fun_l21_n704(x)
+ else
+ fun_l21_n992(x)
+ end
+end
+
+def fun_l20_n219(x)
+ if (x < 1)
+ fun_l21_n500(x)
+ else
+ fun_l21_n845(x)
+ end
+end
+
+def fun_l20_n220(x)
+ if (x < 1)
+ fun_l21_n75(x)
+ else
+ fun_l21_n365(x)
+ end
+end
+
+def fun_l20_n221(x)
+ if (x < 1)
+ fun_l21_n780(x)
+ else
+ fun_l21_n574(x)
+ end
+end
+
+def fun_l20_n222(x)
+ if (x < 1)
+ fun_l21_n778(x)
+ else
+ fun_l21_n315(x)
+ end
+end
+
+def fun_l20_n223(x)
+ if (x < 1)
+ fun_l21_n845(x)
+ else
+ fun_l21_n521(x)
+ end
+end
+
+def fun_l20_n224(x)
+ if (x < 1)
+ fun_l21_n608(x)
+ else
+ fun_l21_n762(x)
+ end
+end
+
+def fun_l20_n225(x)
+ if (x < 1)
+ fun_l21_n912(x)
+ else
+ fun_l21_n651(x)
+ end
+end
+
+def fun_l20_n226(x)
+ if (x < 1)
+ fun_l21_n337(x)
+ else
+ fun_l21_n723(x)
+ end
+end
+
+def fun_l20_n227(x)
+ if (x < 1)
+ fun_l21_n734(x)
+ else
+ fun_l21_n967(x)
+ end
+end
+
+def fun_l20_n228(x)
+ if (x < 1)
+ fun_l21_n342(x)
+ else
+ fun_l21_n611(x)
+ end
+end
+
+def fun_l20_n229(x)
+ if (x < 1)
+ fun_l21_n607(x)
+ else
+ fun_l21_n317(x)
+ end
+end
+
+def fun_l20_n230(x)
+ if (x < 1)
+ fun_l21_n478(x)
+ else
+ fun_l21_n208(x)
+ end
+end
+
+def fun_l20_n231(x)
+ if (x < 1)
+ fun_l21_n481(x)
+ else
+ fun_l21_n171(x)
+ end
+end
+
+def fun_l20_n232(x)
+ if (x < 1)
+ fun_l21_n80(x)
+ else
+ fun_l21_n810(x)
+ end
+end
+
+def fun_l20_n233(x)
+ if (x < 1)
+ fun_l21_n597(x)
+ else
+ fun_l21_n474(x)
+ end
+end
+
+def fun_l20_n234(x)
+ if (x < 1)
+ fun_l21_n997(x)
+ else
+ fun_l21_n98(x)
+ end
+end
+
+def fun_l20_n235(x)
+ if (x < 1)
+ fun_l21_n663(x)
+ else
+ fun_l21_n103(x)
+ end
+end
+
+def fun_l20_n236(x)
+ if (x < 1)
+ fun_l21_n602(x)
+ else
+ fun_l21_n421(x)
+ end
+end
+
+def fun_l20_n237(x)
+ if (x < 1)
+ fun_l21_n888(x)
+ else
+ fun_l21_n759(x)
+ end
+end
+
+def fun_l20_n238(x)
+ if (x < 1)
+ fun_l21_n21(x)
+ else
+ fun_l21_n56(x)
+ end
+end
+
+def fun_l20_n239(x)
+ if (x < 1)
+ fun_l21_n663(x)
+ else
+ fun_l21_n102(x)
+ end
+end
+
+def fun_l20_n240(x)
+ if (x < 1)
+ fun_l21_n244(x)
+ else
+ fun_l21_n507(x)
+ end
+end
+
+def fun_l20_n241(x)
+ if (x < 1)
+ fun_l21_n263(x)
+ else
+ fun_l21_n382(x)
+ end
+end
+
+def fun_l20_n242(x)
+ if (x < 1)
+ fun_l21_n639(x)
+ else
+ fun_l21_n380(x)
+ end
+end
+
+def fun_l20_n243(x)
+ if (x < 1)
+ fun_l21_n99(x)
+ else
+ fun_l21_n35(x)
+ end
+end
+
+def fun_l20_n244(x)
+ if (x < 1)
+ fun_l21_n648(x)
+ else
+ fun_l21_n266(x)
+ end
+end
+
+def fun_l20_n245(x)
+ if (x < 1)
+ fun_l21_n613(x)
+ else
+ fun_l21_n277(x)
+ end
+end
+
+def fun_l20_n246(x)
+ if (x < 1)
+ fun_l21_n886(x)
+ else
+ fun_l21_n4(x)
+ end
+end
+
+def fun_l20_n247(x)
+ if (x < 1)
+ fun_l21_n510(x)
+ else
+ fun_l21_n146(x)
+ end
+end
+
+def fun_l20_n248(x)
+ if (x < 1)
+ fun_l21_n933(x)
+ else
+ fun_l21_n765(x)
+ end
+end
+
+def fun_l20_n249(x)
+ if (x < 1)
+ fun_l21_n323(x)
+ else
+ fun_l21_n222(x)
+ end
+end
+
+def fun_l20_n250(x)
+ if (x < 1)
+ fun_l21_n708(x)
+ else
+ fun_l21_n241(x)
+ end
+end
+
+def fun_l20_n251(x)
+ if (x < 1)
+ fun_l21_n394(x)
+ else
+ fun_l21_n899(x)
+ end
+end
+
+def fun_l20_n252(x)
+ if (x < 1)
+ fun_l21_n253(x)
+ else
+ fun_l21_n221(x)
+ end
+end
+
+def fun_l20_n253(x)
+ if (x < 1)
+ fun_l21_n842(x)
+ else
+ fun_l21_n594(x)
+ end
+end
+
+def fun_l20_n254(x)
+ if (x < 1)
+ fun_l21_n325(x)
+ else
+ fun_l21_n145(x)
+ end
+end
+
+def fun_l20_n255(x)
+ if (x < 1)
+ fun_l21_n568(x)
+ else
+ fun_l21_n736(x)
+ end
+end
+
+def fun_l20_n256(x)
+ if (x < 1)
+ fun_l21_n862(x)
+ else
+ fun_l21_n388(x)
+ end
+end
+
+def fun_l20_n257(x)
+ if (x < 1)
+ fun_l21_n738(x)
+ else
+ fun_l21_n255(x)
+ end
+end
+
+def fun_l20_n258(x)
+ if (x < 1)
+ fun_l21_n704(x)
+ else
+ fun_l21_n539(x)
+ end
+end
+
+def fun_l20_n259(x)
+ if (x < 1)
+ fun_l21_n149(x)
+ else
+ fun_l21_n940(x)
+ end
+end
+
+def fun_l20_n260(x)
+ if (x < 1)
+ fun_l21_n462(x)
+ else
+ fun_l21_n840(x)
+ end
+end
+
+def fun_l20_n261(x)
+ if (x < 1)
+ fun_l21_n549(x)
+ else
+ fun_l21_n968(x)
+ end
+end
+
+def fun_l20_n262(x)
+ if (x < 1)
+ fun_l21_n290(x)
+ else
+ fun_l21_n127(x)
+ end
+end
+
+def fun_l20_n263(x)
+ if (x < 1)
+ fun_l21_n311(x)
+ else
+ fun_l21_n652(x)
+ end
+end
+
+def fun_l20_n264(x)
+ if (x < 1)
+ fun_l21_n544(x)
+ else
+ fun_l21_n521(x)
+ end
+end
+
+def fun_l20_n265(x)
+ if (x < 1)
+ fun_l21_n984(x)
+ else
+ fun_l21_n957(x)
+ end
+end
+
+def fun_l20_n266(x)
+ if (x < 1)
+ fun_l21_n10(x)
+ else
+ fun_l21_n154(x)
+ end
+end
+
+def fun_l20_n267(x)
+ if (x < 1)
+ fun_l21_n707(x)
+ else
+ fun_l21_n623(x)
+ end
+end
+
+def fun_l20_n268(x)
+ if (x < 1)
+ fun_l21_n420(x)
+ else
+ fun_l21_n31(x)
+ end
+end
+
+def fun_l20_n269(x)
+ if (x < 1)
+ fun_l21_n380(x)
+ else
+ fun_l21_n397(x)
+ end
+end
+
+def fun_l20_n270(x)
+ if (x < 1)
+ fun_l21_n95(x)
+ else
+ fun_l21_n881(x)
+ end
+end
+
+def fun_l20_n271(x)
+ if (x < 1)
+ fun_l21_n731(x)
+ else
+ fun_l21_n521(x)
+ end
+end
+
+def fun_l20_n272(x)
+ if (x < 1)
+ fun_l21_n255(x)
+ else
+ fun_l21_n412(x)
+ end
+end
+
+def fun_l20_n273(x)
+ if (x < 1)
+ fun_l21_n455(x)
+ else
+ fun_l21_n225(x)
+ end
+end
+
+def fun_l20_n274(x)
+ if (x < 1)
+ fun_l21_n223(x)
+ else
+ fun_l21_n71(x)
+ end
+end
+
+def fun_l20_n275(x)
+ if (x < 1)
+ fun_l21_n819(x)
+ else
+ fun_l21_n765(x)
+ end
+end
+
+def fun_l20_n276(x)
+ if (x < 1)
+ fun_l21_n379(x)
+ else
+ fun_l21_n892(x)
+ end
+end
+
+def fun_l20_n277(x)
+ if (x < 1)
+ fun_l21_n695(x)
+ else
+ fun_l21_n856(x)
+ end
+end
+
+def fun_l20_n278(x)
+ if (x < 1)
+ fun_l21_n217(x)
+ else
+ fun_l21_n166(x)
+ end
+end
+
+def fun_l20_n279(x)
+ if (x < 1)
+ fun_l21_n708(x)
+ else
+ fun_l21_n987(x)
+ end
+end
+
+def fun_l20_n280(x)
+ if (x < 1)
+ fun_l21_n251(x)
+ else
+ fun_l21_n144(x)
+ end
+end
+
+def fun_l20_n281(x)
+ if (x < 1)
+ fun_l21_n262(x)
+ else
+ fun_l21_n428(x)
+ end
+end
+
+def fun_l20_n282(x)
+ if (x < 1)
+ fun_l21_n439(x)
+ else
+ fun_l21_n1(x)
+ end
+end
+
+def fun_l20_n283(x)
+ if (x < 1)
+ fun_l21_n405(x)
+ else
+ fun_l21_n413(x)
+ end
+end
+
+def fun_l20_n284(x)
+ if (x < 1)
+ fun_l21_n729(x)
+ else
+ fun_l21_n61(x)
+ end
+end
+
+def fun_l20_n285(x)
+ if (x < 1)
+ fun_l21_n255(x)
+ else
+ fun_l21_n985(x)
+ end
+end
+
+def fun_l20_n286(x)
+ if (x < 1)
+ fun_l21_n348(x)
+ else
+ fun_l21_n54(x)
+ end
+end
+
+def fun_l20_n287(x)
+ if (x < 1)
+ fun_l21_n663(x)
+ else
+ fun_l21_n837(x)
+ end
+end
+
+def fun_l20_n288(x)
+ if (x < 1)
+ fun_l21_n444(x)
+ else
+ fun_l21_n767(x)
+ end
+end
+
+def fun_l20_n289(x)
+ if (x < 1)
+ fun_l21_n756(x)
+ else
+ fun_l21_n246(x)
+ end
+end
+
+def fun_l20_n290(x)
+ if (x < 1)
+ fun_l21_n0(x)
+ else
+ fun_l21_n253(x)
+ end
+end
+
+def fun_l20_n291(x)
+ if (x < 1)
+ fun_l21_n867(x)
+ else
+ fun_l21_n464(x)
+ end
+end
+
+def fun_l20_n292(x)
+ if (x < 1)
+ fun_l21_n885(x)
+ else
+ fun_l21_n588(x)
+ end
+end
+
+def fun_l20_n293(x)
+ if (x < 1)
+ fun_l21_n420(x)
+ else
+ fun_l21_n622(x)
+ end
+end
+
+def fun_l20_n294(x)
+ if (x < 1)
+ fun_l21_n411(x)
+ else
+ fun_l21_n351(x)
+ end
+end
+
+def fun_l20_n295(x)
+ if (x < 1)
+ fun_l21_n208(x)
+ else
+ fun_l21_n0(x)
+ end
+end
+
+def fun_l20_n296(x)
+ if (x < 1)
+ fun_l21_n551(x)
+ else
+ fun_l21_n68(x)
+ end
+end
+
+def fun_l20_n297(x)
+ if (x < 1)
+ fun_l21_n351(x)
+ else
+ fun_l21_n108(x)
+ end
+end
+
+def fun_l20_n298(x)
+ if (x < 1)
+ fun_l21_n134(x)
+ else
+ fun_l21_n893(x)
+ end
+end
+
+def fun_l20_n299(x)
+ if (x < 1)
+ fun_l21_n697(x)
+ else
+ fun_l21_n538(x)
+ end
+end
+
+def fun_l20_n300(x)
+ if (x < 1)
+ fun_l21_n61(x)
+ else
+ fun_l21_n641(x)
+ end
+end
+
+def fun_l20_n301(x)
+ if (x < 1)
+ fun_l21_n13(x)
+ else
+ fun_l21_n103(x)
+ end
+end
+
+def fun_l20_n302(x)
+ if (x < 1)
+ fun_l21_n260(x)
+ else
+ fun_l21_n430(x)
+ end
+end
+
+def fun_l20_n303(x)
+ if (x < 1)
+ fun_l21_n63(x)
+ else
+ fun_l21_n911(x)
+ end
+end
+
+def fun_l20_n304(x)
+ if (x < 1)
+ fun_l21_n470(x)
+ else
+ fun_l21_n407(x)
+ end
+end
+
+def fun_l20_n305(x)
+ if (x < 1)
+ fun_l21_n615(x)
+ else
+ fun_l21_n767(x)
+ end
+end
+
+def fun_l20_n306(x)
+ if (x < 1)
+ fun_l21_n898(x)
+ else
+ fun_l21_n215(x)
+ end
+end
+
+def fun_l20_n307(x)
+ if (x < 1)
+ fun_l21_n793(x)
+ else
+ fun_l21_n468(x)
+ end
+end
+
+def fun_l20_n308(x)
+ if (x < 1)
+ fun_l21_n582(x)
+ else
+ fun_l21_n968(x)
+ end
+end
+
+def fun_l20_n309(x)
+ if (x < 1)
+ fun_l21_n7(x)
+ else
+ fun_l21_n703(x)
+ end
+end
+
+def fun_l20_n310(x)
+ if (x < 1)
+ fun_l21_n826(x)
+ else
+ fun_l21_n735(x)
+ end
+end
+
+def fun_l20_n311(x)
+ if (x < 1)
+ fun_l21_n856(x)
+ else
+ fun_l21_n959(x)
+ end
+end
+
+def fun_l20_n312(x)
+ if (x < 1)
+ fun_l21_n194(x)
+ else
+ fun_l21_n158(x)
+ end
+end
+
+def fun_l20_n313(x)
+ if (x < 1)
+ fun_l21_n690(x)
+ else
+ fun_l21_n813(x)
+ end
+end
+
+def fun_l20_n314(x)
+ if (x < 1)
+ fun_l21_n699(x)
+ else
+ fun_l21_n842(x)
+ end
+end
+
+def fun_l20_n315(x)
+ if (x < 1)
+ fun_l21_n485(x)
+ else
+ fun_l21_n0(x)
+ end
+end
+
+def fun_l20_n316(x)
+ if (x < 1)
+ fun_l21_n753(x)
+ else
+ fun_l21_n306(x)
+ end
+end
+
+def fun_l20_n317(x)
+ if (x < 1)
+ fun_l21_n516(x)
+ else
+ fun_l21_n35(x)
+ end
+end
+
+def fun_l20_n318(x)
+ if (x < 1)
+ fun_l21_n78(x)
+ else
+ fun_l21_n104(x)
+ end
+end
+
+def fun_l20_n319(x)
+ if (x < 1)
+ fun_l21_n492(x)
+ else
+ fun_l21_n211(x)
+ end
+end
+
+def fun_l20_n320(x)
+ if (x < 1)
+ fun_l21_n303(x)
+ else
+ fun_l21_n218(x)
+ end
+end
+
+def fun_l20_n321(x)
+ if (x < 1)
+ fun_l21_n614(x)
+ else
+ fun_l21_n743(x)
+ end
+end
+
+def fun_l20_n322(x)
+ if (x < 1)
+ fun_l21_n141(x)
+ else
+ fun_l21_n320(x)
+ end
+end
+
+def fun_l20_n323(x)
+ if (x < 1)
+ fun_l21_n349(x)
+ else
+ fun_l21_n396(x)
+ end
+end
+
+def fun_l20_n324(x)
+ if (x < 1)
+ fun_l21_n189(x)
+ else
+ fun_l21_n32(x)
+ end
+end
+
+def fun_l20_n325(x)
+ if (x < 1)
+ fun_l21_n938(x)
+ else
+ fun_l21_n747(x)
+ end
+end
+
+def fun_l20_n326(x)
+ if (x < 1)
+ fun_l21_n571(x)
+ else
+ fun_l21_n20(x)
+ end
+end
+
+def fun_l20_n327(x)
+ if (x < 1)
+ fun_l21_n905(x)
+ else
+ fun_l21_n106(x)
+ end
+end
+
+def fun_l20_n328(x)
+ if (x < 1)
+ fun_l21_n849(x)
+ else
+ fun_l21_n747(x)
+ end
+end
+
+def fun_l20_n329(x)
+ if (x < 1)
+ fun_l21_n830(x)
+ else
+ fun_l21_n61(x)
+ end
+end
+
+def fun_l20_n330(x)
+ if (x < 1)
+ fun_l21_n613(x)
+ else
+ fun_l21_n945(x)
+ end
+end
+
+def fun_l20_n331(x)
+ if (x < 1)
+ fun_l21_n379(x)
+ else
+ fun_l21_n920(x)
+ end
+end
+
+def fun_l20_n332(x)
+ if (x < 1)
+ fun_l21_n315(x)
+ else
+ fun_l21_n968(x)
+ end
+end
+
+def fun_l20_n333(x)
+ if (x < 1)
+ fun_l21_n256(x)
+ else
+ fun_l21_n460(x)
+ end
+end
+
+def fun_l20_n334(x)
+ if (x < 1)
+ fun_l21_n644(x)
+ else
+ fun_l21_n372(x)
+ end
+end
+
+def fun_l20_n335(x)
+ if (x < 1)
+ fun_l21_n588(x)
+ else
+ fun_l21_n351(x)
+ end
+end
+
+def fun_l20_n336(x)
+ if (x < 1)
+ fun_l21_n516(x)
+ else
+ fun_l21_n975(x)
+ end
+end
+
+def fun_l20_n337(x)
+ if (x < 1)
+ fun_l21_n432(x)
+ else
+ fun_l21_n47(x)
+ end
+end
+
+def fun_l20_n338(x)
+ if (x < 1)
+ fun_l21_n31(x)
+ else
+ fun_l21_n728(x)
+ end
+end
+
+def fun_l20_n339(x)
+ if (x < 1)
+ fun_l21_n700(x)
+ else
+ fun_l21_n454(x)
+ end
+end
+
+def fun_l20_n340(x)
+ if (x < 1)
+ fun_l21_n947(x)
+ else
+ fun_l21_n880(x)
+ end
+end
+
+def fun_l20_n341(x)
+ if (x < 1)
+ fun_l21_n363(x)
+ else
+ fun_l21_n861(x)
+ end
+end
+
+def fun_l20_n342(x)
+ if (x < 1)
+ fun_l21_n338(x)
+ else
+ fun_l21_n118(x)
+ end
+end
+
+def fun_l20_n343(x)
+ if (x < 1)
+ fun_l21_n352(x)
+ else
+ fun_l21_n402(x)
+ end
+end
+
+def fun_l20_n344(x)
+ if (x < 1)
+ fun_l21_n344(x)
+ else
+ fun_l21_n407(x)
+ end
+end
+
+def fun_l20_n345(x)
+ if (x < 1)
+ fun_l21_n869(x)
+ else
+ fun_l21_n912(x)
+ end
+end
+
+def fun_l20_n346(x)
+ if (x < 1)
+ fun_l21_n397(x)
+ else
+ fun_l21_n429(x)
+ end
+end
+
+def fun_l20_n347(x)
+ if (x < 1)
+ fun_l21_n28(x)
+ else
+ fun_l21_n671(x)
+ end
+end
+
+def fun_l20_n348(x)
+ if (x < 1)
+ fun_l21_n215(x)
+ else
+ fun_l21_n821(x)
+ end
+end
+
+def fun_l20_n349(x)
+ if (x < 1)
+ fun_l21_n432(x)
+ else
+ fun_l21_n250(x)
+ end
+end
+
+def fun_l20_n350(x)
+ if (x < 1)
+ fun_l21_n496(x)
+ else
+ fun_l21_n988(x)
+ end
+end
+
+def fun_l20_n351(x)
+ if (x < 1)
+ fun_l21_n317(x)
+ else
+ fun_l21_n516(x)
+ end
+end
+
+def fun_l20_n352(x)
+ if (x < 1)
+ fun_l21_n968(x)
+ else
+ fun_l21_n638(x)
+ end
+end
+
+def fun_l20_n353(x)
+ if (x < 1)
+ fun_l21_n447(x)
+ else
+ fun_l21_n14(x)
+ end
+end
+
+def fun_l20_n354(x)
+ if (x < 1)
+ fun_l21_n151(x)
+ else
+ fun_l21_n545(x)
+ end
+end
+
+def fun_l20_n355(x)
+ if (x < 1)
+ fun_l21_n579(x)
+ else
+ fun_l21_n934(x)
+ end
+end
+
+def fun_l20_n356(x)
+ if (x < 1)
+ fun_l21_n612(x)
+ else
+ fun_l21_n433(x)
+ end
+end
+
+def fun_l20_n357(x)
+ if (x < 1)
+ fun_l21_n969(x)
+ else
+ fun_l21_n816(x)
+ end
+end
+
+def fun_l20_n358(x)
+ if (x < 1)
+ fun_l21_n24(x)
+ else
+ fun_l21_n272(x)
+ end
+end
+
+def fun_l20_n359(x)
+ if (x < 1)
+ fun_l21_n945(x)
+ else
+ fun_l21_n458(x)
+ end
+end
+
+def fun_l20_n360(x)
+ if (x < 1)
+ fun_l21_n294(x)
+ else
+ fun_l21_n934(x)
+ end
+end
+
+def fun_l20_n361(x)
+ if (x < 1)
+ fun_l21_n777(x)
+ else
+ fun_l21_n499(x)
+ end
+end
+
+def fun_l20_n362(x)
+ if (x < 1)
+ fun_l21_n538(x)
+ else
+ fun_l21_n400(x)
+ end
+end
+
+def fun_l20_n363(x)
+ if (x < 1)
+ fun_l21_n660(x)
+ else
+ fun_l21_n970(x)
+ end
+end
+
+def fun_l20_n364(x)
+ if (x < 1)
+ fun_l21_n230(x)
+ else
+ fun_l21_n977(x)
+ end
+end
+
+def fun_l20_n365(x)
+ if (x < 1)
+ fun_l21_n335(x)
+ else
+ fun_l21_n436(x)
+ end
+end
+
+def fun_l20_n366(x)
+ if (x < 1)
+ fun_l21_n596(x)
+ else
+ fun_l21_n992(x)
+ end
+end
+
+def fun_l20_n367(x)
+ if (x < 1)
+ fun_l21_n502(x)
+ else
+ fun_l21_n251(x)
+ end
+end
+
+def fun_l20_n368(x)
+ if (x < 1)
+ fun_l21_n501(x)
+ else
+ fun_l21_n493(x)
+ end
+end
+
+def fun_l20_n369(x)
+ if (x < 1)
+ fun_l21_n48(x)
+ else
+ fun_l21_n850(x)
+ end
+end
+
+def fun_l20_n370(x)
+ if (x < 1)
+ fun_l21_n900(x)
+ else
+ fun_l21_n919(x)
+ end
+end
+
+def fun_l20_n371(x)
+ if (x < 1)
+ fun_l21_n349(x)
+ else
+ fun_l21_n80(x)
+ end
+end
+
+def fun_l20_n372(x)
+ if (x < 1)
+ fun_l21_n275(x)
+ else
+ fun_l21_n135(x)
+ end
+end
+
+def fun_l20_n373(x)
+ if (x < 1)
+ fun_l21_n987(x)
+ else
+ fun_l21_n472(x)
+ end
+end
+
+def fun_l20_n374(x)
+ if (x < 1)
+ fun_l21_n877(x)
+ else
+ fun_l21_n298(x)
+ end
+end
+
+def fun_l20_n375(x)
+ if (x < 1)
+ fun_l21_n518(x)
+ else
+ fun_l21_n676(x)
+ end
+end
+
+def fun_l20_n376(x)
+ if (x < 1)
+ fun_l21_n108(x)
+ else
+ fun_l21_n470(x)
+ end
+end
+
+def fun_l20_n377(x)
+ if (x < 1)
+ fun_l21_n643(x)
+ else
+ fun_l21_n189(x)
+ end
+end
+
+def fun_l20_n378(x)
+ if (x < 1)
+ fun_l21_n608(x)
+ else
+ fun_l21_n376(x)
+ end
+end
+
+def fun_l20_n379(x)
+ if (x < 1)
+ fun_l21_n520(x)
+ else
+ fun_l21_n651(x)
+ end
+end
+
+def fun_l20_n380(x)
+ if (x < 1)
+ fun_l21_n399(x)
+ else
+ fun_l21_n867(x)
+ end
+end
+
+def fun_l20_n381(x)
+ if (x < 1)
+ fun_l21_n815(x)
+ else
+ fun_l21_n78(x)
+ end
+end
+
+def fun_l20_n382(x)
+ if (x < 1)
+ fun_l21_n216(x)
+ else
+ fun_l21_n379(x)
+ end
+end
+
+def fun_l20_n383(x)
+ if (x < 1)
+ fun_l21_n628(x)
+ else
+ fun_l21_n227(x)
+ end
+end
+
+def fun_l20_n384(x)
+ if (x < 1)
+ fun_l21_n699(x)
+ else
+ fun_l21_n170(x)
+ end
+end
+
+def fun_l20_n385(x)
+ if (x < 1)
+ fun_l21_n444(x)
+ else
+ fun_l21_n603(x)
+ end
+end
+
+def fun_l20_n386(x)
+ if (x < 1)
+ fun_l21_n299(x)
+ else
+ fun_l21_n803(x)
+ end
+end
+
+def fun_l20_n387(x)
+ if (x < 1)
+ fun_l21_n708(x)
+ else
+ fun_l21_n187(x)
+ end
+end
+
+def fun_l20_n388(x)
+ if (x < 1)
+ fun_l21_n490(x)
+ else
+ fun_l21_n75(x)
+ end
+end
+
+def fun_l20_n389(x)
+ if (x < 1)
+ fun_l21_n856(x)
+ else
+ fun_l21_n257(x)
+ end
+end
+
+def fun_l20_n390(x)
+ if (x < 1)
+ fun_l21_n394(x)
+ else
+ fun_l21_n669(x)
+ end
+end
+
+def fun_l20_n391(x)
+ if (x < 1)
+ fun_l21_n501(x)
+ else
+ fun_l21_n555(x)
+ end
+end
+
+def fun_l20_n392(x)
+ if (x < 1)
+ fun_l21_n657(x)
+ else
+ fun_l21_n226(x)
+ end
+end
+
+def fun_l20_n393(x)
+ if (x < 1)
+ fun_l21_n229(x)
+ else
+ fun_l21_n898(x)
+ end
+end
+
+def fun_l20_n394(x)
+ if (x < 1)
+ fun_l21_n726(x)
+ else
+ fun_l21_n349(x)
+ end
+end
+
+def fun_l20_n395(x)
+ if (x < 1)
+ fun_l21_n247(x)
+ else
+ fun_l21_n996(x)
+ end
+end
+
+def fun_l20_n396(x)
+ if (x < 1)
+ fun_l21_n136(x)
+ else
+ fun_l21_n601(x)
+ end
+end
+
+def fun_l20_n397(x)
+ if (x < 1)
+ fun_l21_n365(x)
+ else
+ fun_l21_n203(x)
+ end
+end
+
+def fun_l20_n398(x)
+ if (x < 1)
+ fun_l21_n376(x)
+ else
+ fun_l21_n172(x)
+ end
+end
+
+def fun_l20_n399(x)
+ if (x < 1)
+ fun_l21_n23(x)
+ else
+ fun_l21_n577(x)
+ end
+end
+
+def fun_l20_n400(x)
+ if (x < 1)
+ fun_l21_n368(x)
+ else
+ fun_l21_n448(x)
+ end
+end
+
+def fun_l20_n401(x)
+ if (x < 1)
+ fun_l21_n934(x)
+ else
+ fun_l21_n949(x)
+ end
+end
+
+def fun_l20_n402(x)
+ if (x < 1)
+ fun_l21_n127(x)
+ else
+ fun_l21_n132(x)
+ end
+end
+
+def fun_l20_n403(x)
+ if (x < 1)
+ fun_l21_n133(x)
+ else
+ fun_l21_n389(x)
+ end
+end
+
+def fun_l20_n404(x)
+ if (x < 1)
+ fun_l21_n750(x)
+ else
+ fun_l21_n591(x)
+ end
+end
+
+def fun_l20_n405(x)
+ if (x < 1)
+ fun_l21_n492(x)
+ else
+ fun_l21_n763(x)
+ end
+end
+
+def fun_l20_n406(x)
+ if (x < 1)
+ fun_l21_n137(x)
+ else
+ fun_l21_n552(x)
+ end
+end
+
+def fun_l20_n407(x)
+ if (x < 1)
+ fun_l21_n200(x)
+ else
+ fun_l21_n537(x)
+ end
+end
+
+def fun_l20_n408(x)
+ if (x < 1)
+ fun_l21_n681(x)
+ else
+ fun_l21_n645(x)
+ end
+end
+
+def fun_l20_n409(x)
+ if (x < 1)
+ fun_l21_n86(x)
+ else
+ fun_l21_n239(x)
+ end
+end
+
+def fun_l20_n410(x)
+ if (x < 1)
+ fun_l21_n357(x)
+ else
+ fun_l21_n98(x)
+ end
+end
+
+def fun_l20_n411(x)
+ if (x < 1)
+ fun_l21_n889(x)
+ else
+ fun_l21_n199(x)
+ end
+end
+
+def fun_l20_n412(x)
+ if (x < 1)
+ fun_l21_n504(x)
+ else
+ fun_l21_n950(x)
+ end
+end
+
+def fun_l20_n413(x)
+ if (x < 1)
+ fun_l21_n220(x)
+ else
+ fun_l21_n351(x)
+ end
+end
+
+def fun_l20_n414(x)
+ if (x < 1)
+ fun_l21_n287(x)
+ else
+ fun_l21_n614(x)
+ end
+end
+
+def fun_l20_n415(x)
+ if (x < 1)
+ fun_l21_n699(x)
+ else
+ fun_l21_n464(x)
+ end
+end
+
+def fun_l20_n416(x)
+ if (x < 1)
+ fun_l21_n638(x)
+ else
+ fun_l21_n10(x)
+ end
+end
+
+def fun_l20_n417(x)
+ if (x < 1)
+ fun_l21_n52(x)
+ else
+ fun_l21_n348(x)
+ end
+end
+
+def fun_l20_n418(x)
+ if (x < 1)
+ fun_l21_n248(x)
+ else
+ fun_l21_n703(x)
+ end
+end
+
+def fun_l20_n419(x)
+ if (x < 1)
+ fun_l21_n430(x)
+ else
+ fun_l21_n886(x)
+ end
+end
+
+def fun_l20_n420(x)
+ if (x < 1)
+ fun_l21_n695(x)
+ else
+ fun_l21_n528(x)
+ end
+end
+
+def fun_l20_n421(x)
+ if (x < 1)
+ fun_l21_n545(x)
+ else
+ fun_l21_n521(x)
+ end
+end
+
+def fun_l20_n422(x)
+ if (x < 1)
+ fun_l21_n66(x)
+ else
+ fun_l21_n31(x)
+ end
+end
+
+def fun_l20_n423(x)
+ if (x < 1)
+ fun_l21_n411(x)
+ else
+ fun_l21_n476(x)
+ end
+end
+
+def fun_l20_n424(x)
+ if (x < 1)
+ fun_l21_n433(x)
+ else
+ fun_l21_n940(x)
+ end
+end
+
+def fun_l20_n425(x)
+ if (x < 1)
+ fun_l21_n622(x)
+ else
+ fun_l21_n817(x)
+ end
+end
+
+def fun_l20_n426(x)
+ if (x < 1)
+ fun_l21_n516(x)
+ else
+ fun_l21_n665(x)
+ end
+end
+
+def fun_l20_n427(x)
+ if (x < 1)
+ fun_l21_n828(x)
+ else
+ fun_l21_n47(x)
+ end
+end
+
+def fun_l20_n428(x)
+ if (x < 1)
+ fun_l21_n445(x)
+ else
+ fun_l21_n94(x)
+ end
+end
+
+def fun_l20_n429(x)
+ if (x < 1)
+ fun_l21_n799(x)
+ else
+ fun_l21_n676(x)
+ end
+end
+
+def fun_l20_n430(x)
+ if (x < 1)
+ fun_l21_n518(x)
+ else
+ fun_l21_n988(x)
+ end
+end
+
+def fun_l20_n431(x)
+ if (x < 1)
+ fun_l21_n787(x)
+ else
+ fun_l21_n127(x)
+ end
+end
+
+def fun_l20_n432(x)
+ if (x < 1)
+ fun_l21_n502(x)
+ else
+ fun_l21_n719(x)
+ end
+end
+
+def fun_l20_n433(x)
+ if (x < 1)
+ fun_l21_n406(x)
+ else
+ fun_l21_n828(x)
+ end
+end
+
+def fun_l20_n434(x)
+ if (x < 1)
+ fun_l21_n845(x)
+ else
+ fun_l21_n75(x)
+ end
+end
+
+def fun_l20_n435(x)
+ if (x < 1)
+ fun_l21_n425(x)
+ else
+ fun_l21_n449(x)
+ end
+end
+
+def fun_l20_n436(x)
+ if (x < 1)
+ fun_l21_n520(x)
+ else
+ fun_l21_n68(x)
+ end
+end
+
+def fun_l20_n437(x)
+ if (x < 1)
+ fun_l21_n872(x)
+ else
+ fun_l21_n978(x)
+ end
+end
+
+def fun_l20_n438(x)
+ if (x < 1)
+ fun_l21_n522(x)
+ else
+ fun_l21_n658(x)
+ end
+end
+
+def fun_l20_n439(x)
+ if (x < 1)
+ fun_l21_n976(x)
+ else
+ fun_l21_n224(x)
+ end
+end
+
+def fun_l20_n440(x)
+ if (x < 1)
+ fun_l21_n256(x)
+ else
+ fun_l21_n700(x)
+ end
+end
+
+def fun_l20_n441(x)
+ if (x < 1)
+ fun_l21_n722(x)
+ else
+ fun_l21_n348(x)
+ end
+end
+
+def fun_l20_n442(x)
+ if (x < 1)
+ fun_l21_n377(x)
+ else
+ fun_l21_n966(x)
+ end
+end
+
+def fun_l20_n443(x)
+ if (x < 1)
+ fun_l21_n519(x)
+ else
+ fun_l21_n611(x)
+ end
+end
+
+def fun_l20_n444(x)
+ if (x < 1)
+ fun_l21_n318(x)
+ else
+ fun_l21_n937(x)
+ end
+end
+
+def fun_l20_n445(x)
+ if (x < 1)
+ fun_l21_n416(x)
+ else
+ fun_l21_n874(x)
+ end
+end
+
+def fun_l20_n446(x)
+ if (x < 1)
+ fun_l21_n157(x)
+ else
+ fun_l21_n328(x)
+ end
+end
+
+def fun_l20_n447(x)
+ if (x < 1)
+ fun_l21_n540(x)
+ else
+ fun_l21_n906(x)
+ end
+end
+
+def fun_l20_n448(x)
+ if (x < 1)
+ fun_l21_n13(x)
+ else
+ fun_l21_n325(x)
+ end
+end
+
+def fun_l20_n449(x)
+ if (x < 1)
+ fun_l21_n771(x)
+ else
+ fun_l21_n929(x)
+ end
+end
+
+def fun_l20_n450(x)
+ if (x < 1)
+ fun_l21_n770(x)
+ else
+ fun_l21_n778(x)
+ end
+end
+
+def fun_l20_n451(x)
+ if (x < 1)
+ fun_l21_n939(x)
+ else
+ fun_l21_n493(x)
+ end
+end
+
+def fun_l20_n452(x)
+ if (x < 1)
+ fun_l21_n481(x)
+ else
+ fun_l21_n407(x)
+ end
+end
+
+def fun_l20_n453(x)
+ if (x < 1)
+ fun_l21_n759(x)
+ else
+ fun_l21_n322(x)
+ end
+end
+
+def fun_l20_n454(x)
+ if (x < 1)
+ fun_l21_n703(x)
+ else
+ fun_l21_n409(x)
+ end
+end
+
+def fun_l20_n455(x)
+ if (x < 1)
+ fun_l21_n394(x)
+ else
+ fun_l21_n415(x)
+ end
+end
+
+def fun_l20_n456(x)
+ if (x < 1)
+ fun_l21_n583(x)
+ else
+ fun_l21_n188(x)
+ end
+end
+
+def fun_l20_n457(x)
+ if (x < 1)
+ fun_l21_n668(x)
+ else
+ fun_l21_n46(x)
+ end
+end
+
+def fun_l20_n458(x)
+ if (x < 1)
+ fun_l21_n855(x)
+ else
+ fun_l21_n802(x)
+ end
+end
+
+def fun_l20_n459(x)
+ if (x < 1)
+ fun_l21_n720(x)
+ else
+ fun_l21_n691(x)
+ end
+end
+
+def fun_l20_n460(x)
+ if (x < 1)
+ fun_l21_n440(x)
+ else
+ fun_l21_n353(x)
+ end
+end
+
+def fun_l20_n461(x)
+ if (x < 1)
+ fun_l21_n604(x)
+ else
+ fun_l21_n872(x)
+ end
+end
+
+def fun_l20_n462(x)
+ if (x < 1)
+ fun_l21_n355(x)
+ else
+ fun_l21_n699(x)
+ end
+end
+
+def fun_l20_n463(x)
+ if (x < 1)
+ fun_l21_n476(x)
+ else
+ fun_l21_n447(x)
+ end
+end
+
+def fun_l20_n464(x)
+ if (x < 1)
+ fun_l21_n554(x)
+ else
+ fun_l21_n745(x)
+ end
+end
+
+def fun_l20_n465(x)
+ if (x < 1)
+ fun_l21_n632(x)
+ else
+ fun_l21_n281(x)
+ end
+end
+
+def fun_l20_n466(x)
+ if (x < 1)
+ fun_l21_n873(x)
+ else
+ fun_l21_n449(x)
+ end
+end
+
+def fun_l20_n467(x)
+ if (x < 1)
+ fun_l21_n90(x)
+ else
+ fun_l21_n933(x)
+ end
+end
+
+def fun_l20_n468(x)
+ if (x < 1)
+ fun_l21_n915(x)
+ else
+ fun_l21_n801(x)
+ end
+end
+
+def fun_l20_n469(x)
+ if (x < 1)
+ fun_l21_n429(x)
+ else
+ fun_l21_n139(x)
+ end
+end
+
+def fun_l20_n470(x)
+ if (x < 1)
+ fun_l21_n858(x)
+ else
+ fun_l21_n450(x)
+ end
+end
+
+def fun_l20_n471(x)
+ if (x < 1)
+ fun_l21_n556(x)
+ else
+ fun_l21_n109(x)
+ end
+end
+
+def fun_l20_n472(x)
+ if (x < 1)
+ fun_l21_n395(x)
+ else
+ fun_l21_n129(x)
+ end
+end
+
+def fun_l20_n473(x)
+ if (x < 1)
+ fun_l21_n282(x)
+ else
+ fun_l21_n277(x)
+ end
+end
+
+def fun_l20_n474(x)
+ if (x < 1)
+ fun_l21_n90(x)
+ else
+ fun_l21_n399(x)
+ end
+end
+
+def fun_l20_n475(x)
+ if (x < 1)
+ fun_l21_n719(x)
+ else
+ fun_l21_n698(x)
+ end
+end
+
+def fun_l20_n476(x)
+ if (x < 1)
+ fun_l21_n597(x)
+ else
+ fun_l21_n210(x)
+ end
+end
+
+def fun_l20_n477(x)
+ if (x < 1)
+ fun_l21_n722(x)
+ else
+ fun_l21_n31(x)
+ end
+end
+
+def fun_l20_n478(x)
+ if (x < 1)
+ fun_l21_n874(x)
+ else
+ fun_l21_n527(x)
+ end
+end
+
+def fun_l20_n479(x)
+ if (x < 1)
+ fun_l21_n247(x)
+ else
+ fun_l21_n164(x)
+ end
+end
+
+def fun_l20_n480(x)
+ if (x < 1)
+ fun_l21_n449(x)
+ else
+ fun_l21_n106(x)
+ end
+end
+
+def fun_l20_n481(x)
+ if (x < 1)
+ fun_l21_n787(x)
+ else
+ fun_l21_n678(x)
+ end
+end
+
+def fun_l20_n482(x)
+ if (x < 1)
+ fun_l21_n176(x)
+ else
+ fun_l21_n650(x)
+ end
+end
+
+def fun_l20_n483(x)
+ if (x < 1)
+ fun_l21_n314(x)
+ else
+ fun_l21_n325(x)
+ end
+end
+
+def fun_l20_n484(x)
+ if (x < 1)
+ fun_l21_n877(x)
+ else
+ fun_l21_n539(x)
+ end
+end
+
+def fun_l20_n485(x)
+ if (x < 1)
+ fun_l21_n230(x)
+ else
+ fun_l21_n314(x)
+ end
+end
+
+def fun_l20_n486(x)
+ if (x < 1)
+ fun_l21_n778(x)
+ else
+ fun_l21_n493(x)
+ end
+end
+
+def fun_l20_n487(x)
+ if (x < 1)
+ fun_l21_n615(x)
+ else
+ fun_l21_n111(x)
+ end
+end
+
+def fun_l20_n488(x)
+ if (x < 1)
+ fun_l21_n133(x)
+ else
+ fun_l21_n381(x)
+ end
+end
+
+def fun_l20_n489(x)
+ if (x < 1)
+ fun_l21_n332(x)
+ else
+ fun_l21_n68(x)
+ end
+end
+
+def fun_l20_n490(x)
+ if (x < 1)
+ fun_l21_n995(x)
+ else
+ fun_l21_n861(x)
+ end
+end
+
+def fun_l20_n491(x)
+ if (x < 1)
+ fun_l21_n537(x)
+ else
+ fun_l21_n164(x)
+ end
+end
+
+def fun_l20_n492(x)
+ if (x < 1)
+ fun_l21_n759(x)
+ else
+ fun_l21_n598(x)
+ end
+end
+
+def fun_l20_n493(x)
+ if (x < 1)
+ fun_l21_n890(x)
+ else
+ fun_l21_n644(x)
+ end
+end
+
+def fun_l20_n494(x)
+ if (x < 1)
+ fun_l21_n641(x)
+ else
+ fun_l21_n420(x)
+ end
+end
+
+def fun_l20_n495(x)
+ if (x < 1)
+ fun_l21_n826(x)
+ else
+ fun_l21_n821(x)
+ end
+end
+
+def fun_l20_n496(x)
+ if (x < 1)
+ fun_l21_n348(x)
+ else
+ fun_l21_n277(x)
+ end
+end
+
+def fun_l20_n497(x)
+ if (x < 1)
+ fun_l21_n14(x)
+ else
+ fun_l21_n950(x)
+ end
+end
+
+def fun_l20_n498(x)
+ if (x < 1)
+ fun_l21_n43(x)
+ else
+ fun_l21_n759(x)
+ end
+end
+
+def fun_l20_n499(x)
+ if (x < 1)
+ fun_l21_n899(x)
+ else
+ fun_l21_n730(x)
+ end
+end
+
+def fun_l20_n500(x)
+ if (x < 1)
+ fun_l21_n918(x)
+ else
+ fun_l21_n454(x)
+ end
+end
+
+def fun_l20_n501(x)
+ if (x < 1)
+ fun_l21_n821(x)
+ else
+ fun_l21_n388(x)
+ end
+end
+
+def fun_l20_n502(x)
+ if (x < 1)
+ fun_l21_n164(x)
+ else
+ fun_l21_n718(x)
+ end
+end
+
+def fun_l20_n503(x)
+ if (x < 1)
+ fun_l21_n152(x)
+ else
+ fun_l21_n613(x)
+ end
+end
+
+def fun_l20_n504(x)
+ if (x < 1)
+ fun_l21_n931(x)
+ else
+ fun_l21_n912(x)
+ end
+end
+
+def fun_l20_n505(x)
+ if (x < 1)
+ fun_l21_n655(x)
+ else
+ fun_l21_n38(x)
+ end
+end
+
+def fun_l20_n506(x)
+ if (x < 1)
+ fun_l21_n408(x)
+ else
+ fun_l21_n38(x)
+ end
+end
+
+def fun_l20_n507(x)
+ if (x < 1)
+ fun_l21_n960(x)
+ else
+ fun_l21_n857(x)
+ end
+end
+
+def fun_l20_n508(x)
+ if (x < 1)
+ fun_l21_n308(x)
+ else
+ fun_l21_n210(x)
+ end
+end
+
+def fun_l20_n509(x)
+ if (x < 1)
+ fun_l21_n985(x)
+ else
+ fun_l21_n537(x)
+ end
+end
+
+def fun_l20_n510(x)
+ if (x < 1)
+ fun_l21_n200(x)
+ else
+ fun_l21_n598(x)
+ end
+end
+
+def fun_l20_n511(x)
+ if (x < 1)
+ fun_l21_n451(x)
+ else
+ fun_l21_n958(x)
+ end
+end
+
+def fun_l20_n512(x)
+ if (x < 1)
+ fun_l21_n459(x)
+ else
+ fun_l21_n823(x)
+ end
+end
+
+def fun_l20_n513(x)
+ if (x < 1)
+ fun_l21_n153(x)
+ else
+ fun_l21_n931(x)
+ end
+end
+
+def fun_l20_n514(x)
+ if (x < 1)
+ fun_l21_n213(x)
+ else
+ fun_l21_n336(x)
+ end
+end
+
+def fun_l20_n515(x)
+ if (x < 1)
+ fun_l21_n401(x)
+ else
+ fun_l21_n222(x)
+ end
+end
+
+def fun_l20_n516(x)
+ if (x < 1)
+ fun_l21_n582(x)
+ else
+ fun_l21_n735(x)
+ end
+end
+
+def fun_l20_n517(x)
+ if (x < 1)
+ fun_l21_n799(x)
+ else
+ fun_l21_n139(x)
+ end
+end
+
+def fun_l20_n518(x)
+ if (x < 1)
+ fun_l21_n279(x)
+ else
+ fun_l21_n476(x)
+ end
+end
+
+def fun_l20_n519(x)
+ if (x < 1)
+ fun_l21_n624(x)
+ else
+ fun_l21_n276(x)
+ end
+end
+
+def fun_l20_n520(x)
+ if (x < 1)
+ fun_l21_n505(x)
+ else
+ fun_l21_n523(x)
+ end
+end
+
+def fun_l20_n521(x)
+ if (x < 1)
+ fun_l21_n887(x)
+ else
+ fun_l21_n948(x)
+ end
+end
+
+def fun_l20_n522(x)
+ if (x < 1)
+ fun_l21_n969(x)
+ else
+ fun_l21_n988(x)
+ end
+end
+
+def fun_l20_n523(x)
+ if (x < 1)
+ fun_l21_n271(x)
+ else
+ fun_l21_n189(x)
+ end
+end
+
+def fun_l20_n524(x)
+ if (x < 1)
+ fun_l21_n478(x)
+ else
+ fun_l21_n111(x)
+ end
+end
+
+def fun_l20_n525(x)
+ if (x < 1)
+ fun_l21_n808(x)
+ else
+ fun_l21_n256(x)
+ end
+end
+
+def fun_l20_n526(x)
+ if (x < 1)
+ fun_l21_n715(x)
+ else
+ fun_l21_n508(x)
+ end
+end
+
+def fun_l20_n527(x)
+ if (x < 1)
+ fun_l21_n819(x)
+ else
+ fun_l21_n670(x)
+ end
+end
+
+def fun_l20_n528(x)
+ if (x < 1)
+ fun_l21_n598(x)
+ else
+ fun_l21_n369(x)
+ end
+end
+
+def fun_l20_n529(x)
+ if (x < 1)
+ fun_l21_n391(x)
+ else
+ fun_l21_n651(x)
+ end
+end
+
+def fun_l20_n530(x)
+ if (x < 1)
+ fun_l21_n69(x)
+ else
+ fun_l21_n706(x)
+ end
+end
+
+def fun_l20_n531(x)
+ if (x < 1)
+ fun_l21_n786(x)
+ else
+ fun_l21_n289(x)
+ end
+end
+
+def fun_l20_n532(x)
+ if (x < 1)
+ fun_l21_n128(x)
+ else
+ fun_l21_n789(x)
+ end
+end
+
+def fun_l20_n533(x)
+ if (x < 1)
+ fun_l21_n935(x)
+ else
+ fun_l21_n29(x)
+ end
+end
+
+def fun_l20_n534(x)
+ if (x < 1)
+ fun_l21_n735(x)
+ else
+ fun_l21_n381(x)
+ end
+end
+
+def fun_l20_n535(x)
+ if (x < 1)
+ fun_l21_n299(x)
+ else
+ fun_l21_n932(x)
+ end
+end
+
+def fun_l20_n536(x)
+ if (x < 1)
+ fun_l21_n823(x)
+ else
+ fun_l21_n7(x)
+ end
+end
+
+def fun_l20_n537(x)
+ if (x < 1)
+ fun_l21_n152(x)
+ else
+ fun_l21_n758(x)
+ end
+end
+
+def fun_l20_n538(x)
+ if (x < 1)
+ fun_l21_n8(x)
+ else
+ fun_l21_n772(x)
+ end
+end
+
+def fun_l20_n539(x)
+ if (x < 1)
+ fun_l21_n900(x)
+ else
+ fun_l21_n984(x)
+ end
+end
+
+def fun_l20_n540(x)
+ if (x < 1)
+ fun_l21_n726(x)
+ else
+ fun_l21_n337(x)
+ end
+end
+
+def fun_l20_n541(x)
+ if (x < 1)
+ fun_l21_n557(x)
+ else
+ fun_l21_n998(x)
+ end
+end
+
+def fun_l20_n542(x)
+ if (x < 1)
+ fun_l21_n898(x)
+ else
+ fun_l21_n389(x)
+ end
+end
+
+def fun_l20_n543(x)
+ if (x < 1)
+ fun_l21_n71(x)
+ else
+ fun_l21_n276(x)
+ end
+end
+
+def fun_l20_n544(x)
+ if (x < 1)
+ fun_l21_n888(x)
+ else
+ fun_l21_n525(x)
+ end
+end
+
+def fun_l20_n545(x)
+ if (x < 1)
+ fun_l21_n797(x)
+ else
+ fun_l21_n487(x)
+ end
+end
+
+def fun_l20_n546(x)
+ if (x < 1)
+ fun_l21_n825(x)
+ else
+ fun_l21_n349(x)
+ end
+end
+
+def fun_l20_n547(x)
+ if (x < 1)
+ fun_l21_n538(x)
+ else
+ fun_l21_n817(x)
+ end
+end
+
+def fun_l20_n548(x)
+ if (x < 1)
+ fun_l21_n630(x)
+ else
+ fun_l21_n432(x)
+ end
+end
+
+def fun_l20_n549(x)
+ if (x < 1)
+ fun_l21_n553(x)
+ else
+ fun_l21_n179(x)
+ end
+end
+
+def fun_l20_n550(x)
+ if (x < 1)
+ fun_l21_n982(x)
+ else
+ fun_l21_n350(x)
+ end
+end
+
+def fun_l20_n551(x)
+ if (x < 1)
+ fun_l21_n404(x)
+ else
+ fun_l21_n313(x)
+ end
+end
+
+def fun_l20_n552(x)
+ if (x < 1)
+ fun_l21_n893(x)
+ else
+ fun_l21_n879(x)
+ end
+end
+
+def fun_l20_n553(x)
+ if (x < 1)
+ fun_l21_n360(x)
+ else
+ fun_l21_n403(x)
+ end
+end
+
+def fun_l20_n554(x)
+ if (x < 1)
+ fun_l21_n607(x)
+ else
+ fun_l21_n18(x)
+ end
+end
+
+def fun_l20_n555(x)
+ if (x < 1)
+ fun_l21_n269(x)
+ else
+ fun_l21_n514(x)
+ end
+end
+
+def fun_l20_n556(x)
+ if (x < 1)
+ fun_l21_n22(x)
+ else
+ fun_l21_n164(x)
+ end
+end
+
+def fun_l20_n557(x)
+ if (x < 1)
+ fun_l21_n560(x)
+ else
+ fun_l21_n671(x)
+ end
+end
+
+def fun_l20_n558(x)
+ if (x < 1)
+ fun_l21_n857(x)
+ else
+ fun_l21_n34(x)
+ end
+end
+
+def fun_l20_n559(x)
+ if (x < 1)
+ fun_l21_n750(x)
+ else
+ fun_l21_n267(x)
+ end
+end
+
+def fun_l20_n560(x)
+ if (x < 1)
+ fun_l21_n97(x)
+ else
+ fun_l21_n72(x)
+ end
+end
+
+def fun_l20_n561(x)
+ if (x < 1)
+ fun_l21_n482(x)
+ else
+ fun_l21_n644(x)
+ end
+end
+
+def fun_l20_n562(x)
+ if (x < 1)
+ fun_l21_n147(x)
+ else
+ fun_l21_n524(x)
+ end
+end
+
+def fun_l20_n563(x)
+ if (x < 1)
+ fun_l21_n509(x)
+ else
+ fun_l21_n124(x)
+ end
+end
+
+def fun_l20_n564(x)
+ if (x < 1)
+ fun_l21_n183(x)
+ else
+ fun_l21_n254(x)
+ end
+end
+
+def fun_l20_n565(x)
+ if (x < 1)
+ fun_l21_n919(x)
+ else
+ fun_l21_n727(x)
+ end
+end
+
+def fun_l20_n566(x)
+ if (x < 1)
+ fun_l21_n847(x)
+ else
+ fun_l21_n546(x)
+ end
+end
+
+def fun_l20_n567(x)
+ if (x < 1)
+ fun_l21_n214(x)
+ else
+ fun_l21_n692(x)
+ end
+end
+
+def fun_l20_n568(x)
+ if (x < 1)
+ fun_l21_n867(x)
+ else
+ fun_l21_n747(x)
+ end
+end
+
+def fun_l20_n569(x)
+ if (x < 1)
+ fun_l21_n277(x)
+ else
+ fun_l21_n130(x)
+ end
+end
+
+def fun_l20_n570(x)
+ if (x < 1)
+ fun_l21_n472(x)
+ else
+ fun_l21_n296(x)
+ end
+end
+
+def fun_l20_n571(x)
+ if (x < 1)
+ fun_l21_n633(x)
+ else
+ fun_l21_n704(x)
+ end
+end
+
+def fun_l20_n572(x)
+ if (x < 1)
+ fun_l21_n179(x)
+ else
+ fun_l21_n683(x)
+ end
+end
+
+def fun_l20_n573(x)
+ if (x < 1)
+ fun_l21_n607(x)
+ else
+ fun_l21_n140(x)
+ end
+end
+
+def fun_l20_n574(x)
+ if (x < 1)
+ fun_l21_n647(x)
+ else
+ fun_l21_n233(x)
+ end
+end
+
+def fun_l20_n575(x)
+ if (x < 1)
+ fun_l21_n992(x)
+ else
+ fun_l21_n951(x)
+ end
+end
+
+def fun_l20_n576(x)
+ if (x < 1)
+ fun_l21_n750(x)
+ else
+ fun_l21_n574(x)
+ end
+end
+
+def fun_l20_n577(x)
+ if (x < 1)
+ fun_l21_n116(x)
+ else
+ fun_l21_n488(x)
+ end
+end
+
+def fun_l20_n578(x)
+ if (x < 1)
+ fun_l21_n580(x)
+ else
+ fun_l21_n547(x)
+ end
+end
+
+def fun_l20_n579(x)
+ if (x < 1)
+ fun_l21_n576(x)
+ else
+ fun_l21_n744(x)
+ end
+end
+
+def fun_l20_n580(x)
+ if (x < 1)
+ fun_l21_n791(x)
+ else
+ fun_l21_n495(x)
+ end
+end
+
+def fun_l20_n581(x)
+ if (x < 1)
+ fun_l21_n188(x)
+ else
+ fun_l21_n795(x)
+ end
+end
+
+def fun_l20_n582(x)
+ if (x < 1)
+ fun_l21_n477(x)
+ else
+ fun_l21_n965(x)
+ end
+end
+
+def fun_l20_n583(x)
+ if (x < 1)
+ fun_l21_n436(x)
+ else
+ fun_l21_n169(x)
+ end
+end
+
+def fun_l20_n584(x)
+ if (x < 1)
+ fun_l21_n518(x)
+ else
+ fun_l21_n849(x)
+ end
+end
+
+def fun_l20_n585(x)
+ if (x < 1)
+ fun_l21_n747(x)
+ else
+ fun_l21_n882(x)
+ end
+end
+
+def fun_l20_n586(x)
+ if (x < 1)
+ fun_l21_n0(x)
+ else
+ fun_l21_n481(x)
+ end
+end
+
+def fun_l20_n587(x)
+ if (x < 1)
+ fun_l21_n876(x)
+ else
+ fun_l21_n279(x)
+ end
+end
+
+def fun_l20_n588(x)
+ if (x < 1)
+ fun_l21_n355(x)
+ else
+ fun_l21_n744(x)
+ end
+end
+
+def fun_l20_n589(x)
+ if (x < 1)
+ fun_l21_n408(x)
+ else
+ fun_l21_n27(x)
+ end
+end
+
+def fun_l20_n590(x)
+ if (x < 1)
+ fun_l21_n152(x)
+ else
+ fun_l21_n867(x)
+ end
+end
+
+def fun_l20_n591(x)
+ if (x < 1)
+ fun_l21_n543(x)
+ else
+ fun_l21_n193(x)
+ end
+end
+
+def fun_l20_n592(x)
+ if (x < 1)
+ fun_l21_n160(x)
+ else
+ fun_l21_n185(x)
+ end
+end
+
+def fun_l20_n593(x)
+ if (x < 1)
+ fun_l21_n613(x)
+ else
+ fun_l21_n403(x)
+ end
+end
+
+def fun_l20_n594(x)
+ if (x < 1)
+ fun_l21_n660(x)
+ else
+ fun_l21_n933(x)
+ end
+end
+
+def fun_l20_n595(x)
+ if (x < 1)
+ fun_l21_n222(x)
+ else
+ fun_l21_n922(x)
+ end
+end
+
+def fun_l20_n596(x)
+ if (x < 1)
+ fun_l21_n668(x)
+ else
+ fun_l21_n857(x)
+ end
+end
+
+def fun_l20_n597(x)
+ if (x < 1)
+ fun_l21_n846(x)
+ else
+ fun_l21_n164(x)
+ end
+end
+
+def fun_l20_n598(x)
+ if (x < 1)
+ fun_l21_n755(x)
+ else
+ fun_l21_n591(x)
+ end
+end
+
+def fun_l20_n599(x)
+ if (x < 1)
+ fun_l21_n224(x)
+ else
+ fun_l21_n390(x)
+ end
+end
+
+def fun_l20_n600(x)
+ if (x < 1)
+ fun_l21_n713(x)
+ else
+ fun_l21_n735(x)
+ end
+end
+
+def fun_l20_n601(x)
+ if (x < 1)
+ fun_l21_n551(x)
+ else
+ fun_l21_n57(x)
+ end
+end
+
+def fun_l20_n602(x)
+ if (x < 1)
+ fun_l21_n808(x)
+ else
+ fun_l21_n928(x)
+ end
+end
+
+def fun_l20_n603(x)
+ if (x < 1)
+ fun_l21_n471(x)
+ else
+ fun_l21_n436(x)
+ end
+end
+
+def fun_l20_n604(x)
+ if (x < 1)
+ fun_l21_n482(x)
+ else
+ fun_l21_n445(x)
+ end
+end
+
+def fun_l20_n605(x)
+ if (x < 1)
+ fun_l21_n680(x)
+ else
+ fun_l21_n433(x)
+ end
+end
+
+def fun_l20_n606(x)
+ if (x < 1)
+ fun_l21_n687(x)
+ else
+ fun_l21_n885(x)
+ end
+end
+
+def fun_l20_n607(x)
+ if (x < 1)
+ fun_l21_n370(x)
+ else
+ fun_l21_n414(x)
+ end
+end
+
+def fun_l20_n608(x)
+ if (x < 1)
+ fun_l21_n11(x)
+ else
+ fun_l21_n792(x)
+ end
+end
+
+def fun_l20_n609(x)
+ if (x < 1)
+ fun_l21_n490(x)
+ else
+ fun_l21_n947(x)
+ end
+end
+
+def fun_l20_n610(x)
+ if (x < 1)
+ fun_l21_n609(x)
+ else
+ fun_l21_n514(x)
+ end
+end
+
+def fun_l20_n611(x)
+ if (x < 1)
+ fun_l21_n873(x)
+ else
+ fun_l21_n247(x)
+ end
+end
+
+def fun_l20_n612(x)
+ if (x < 1)
+ fun_l21_n199(x)
+ else
+ fun_l21_n421(x)
+ end
+end
+
+def fun_l20_n613(x)
+ if (x < 1)
+ fun_l21_n807(x)
+ else
+ fun_l21_n905(x)
+ end
+end
+
+def fun_l20_n614(x)
+ if (x < 1)
+ fun_l21_n260(x)
+ else
+ fun_l21_n926(x)
+ end
+end
+
+def fun_l20_n615(x)
+ if (x < 1)
+ fun_l21_n288(x)
+ else
+ fun_l21_n944(x)
+ end
+end
+
+def fun_l20_n616(x)
+ if (x < 1)
+ fun_l21_n346(x)
+ else
+ fun_l21_n949(x)
+ end
+end
+
+def fun_l20_n617(x)
+ if (x < 1)
+ fun_l21_n243(x)
+ else
+ fun_l21_n527(x)
+ end
+end
+
+def fun_l20_n618(x)
+ if (x < 1)
+ fun_l21_n193(x)
+ else
+ fun_l21_n576(x)
+ end
+end
+
+def fun_l20_n619(x)
+ if (x < 1)
+ fun_l21_n861(x)
+ else
+ fun_l21_n19(x)
+ end
+end
+
+def fun_l20_n620(x)
+ if (x < 1)
+ fun_l21_n735(x)
+ else
+ fun_l21_n477(x)
+ end
+end
+
+def fun_l20_n621(x)
+ if (x < 1)
+ fun_l21_n368(x)
+ else
+ fun_l21_n250(x)
+ end
+end
+
+def fun_l20_n622(x)
+ if (x < 1)
+ fun_l21_n235(x)
+ else
+ fun_l21_n461(x)
+ end
+end
+
+def fun_l20_n623(x)
+ if (x < 1)
+ fun_l21_n289(x)
+ else
+ fun_l21_n217(x)
+ end
+end
+
+def fun_l20_n624(x)
+ if (x < 1)
+ fun_l21_n951(x)
+ else
+ fun_l21_n124(x)
+ end
+end
+
+def fun_l20_n625(x)
+ if (x < 1)
+ fun_l21_n590(x)
+ else
+ fun_l21_n163(x)
+ end
+end
+
+def fun_l20_n626(x)
+ if (x < 1)
+ fun_l21_n122(x)
+ else
+ fun_l21_n34(x)
+ end
+end
+
+def fun_l20_n627(x)
+ if (x < 1)
+ fun_l21_n139(x)
+ else
+ fun_l21_n452(x)
+ end
+end
+
+def fun_l20_n628(x)
+ if (x < 1)
+ fun_l21_n626(x)
+ else
+ fun_l21_n816(x)
+ end
+end
+
+def fun_l20_n629(x)
+ if (x < 1)
+ fun_l21_n713(x)
+ else
+ fun_l21_n291(x)
+ end
+end
+
+def fun_l20_n630(x)
+ if (x < 1)
+ fun_l21_n896(x)
+ else
+ fun_l21_n167(x)
+ end
+end
+
+def fun_l20_n631(x)
+ if (x < 1)
+ fun_l21_n461(x)
+ else
+ fun_l21_n965(x)
+ end
+end
+
+def fun_l20_n632(x)
+ if (x < 1)
+ fun_l21_n984(x)
+ else
+ fun_l21_n336(x)
+ end
+end
+
+def fun_l20_n633(x)
+ if (x < 1)
+ fun_l21_n525(x)
+ else
+ fun_l21_n500(x)
+ end
+end
+
+def fun_l20_n634(x)
+ if (x < 1)
+ fun_l21_n296(x)
+ else
+ fun_l21_n535(x)
+ end
+end
+
+def fun_l20_n635(x)
+ if (x < 1)
+ fun_l21_n961(x)
+ else
+ fun_l21_n296(x)
+ end
+end
+
+def fun_l20_n636(x)
+ if (x < 1)
+ fun_l21_n736(x)
+ else
+ fun_l21_n474(x)
+ end
+end
+
+def fun_l20_n637(x)
+ if (x < 1)
+ fun_l21_n942(x)
+ else
+ fun_l21_n503(x)
+ end
+end
+
+def fun_l20_n638(x)
+ if (x < 1)
+ fun_l21_n906(x)
+ else
+ fun_l21_n612(x)
+ end
+end
+
+def fun_l20_n639(x)
+ if (x < 1)
+ fun_l21_n152(x)
+ else
+ fun_l21_n772(x)
+ end
+end
+
+def fun_l20_n640(x)
+ if (x < 1)
+ fun_l21_n109(x)
+ else
+ fun_l21_n416(x)
+ end
+end
+
+def fun_l20_n641(x)
+ if (x < 1)
+ fun_l21_n189(x)
+ else
+ fun_l21_n353(x)
+ end
+end
+
+def fun_l20_n642(x)
+ if (x < 1)
+ fun_l21_n414(x)
+ else
+ fun_l21_n550(x)
+ end
+end
+
+def fun_l20_n643(x)
+ if (x < 1)
+ fun_l21_n469(x)
+ else
+ fun_l21_n542(x)
+ end
+end
+
+def fun_l20_n644(x)
+ if (x < 1)
+ fun_l21_n465(x)
+ else
+ fun_l21_n742(x)
+ end
+end
+
+def fun_l20_n645(x)
+ if (x < 1)
+ fun_l21_n139(x)
+ else
+ fun_l21_n138(x)
+ end
+end
+
+def fun_l20_n646(x)
+ if (x < 1)
+ fun_l21_n550(x)
+ else
+ fun_l21_n910(x)
+ end
+end
+
+def fun_l20_n647(x)
+ if (x < 1)
+ fun_l21_n939(x)
+ else
+ fun_l21_n347(x)
+ end
+end
+
+def fun_l20_n648(x)
+ if (x < 1)
+ fun_l21_n391(x)
+ else
+ fun_l21_n648(x)
+ end
+end
+
+def fun_l20_n649(x)
+ if (x < 1)
+ fun_l21_n690(x)
+ else
+ fun_l21_n627(x)
+ end
+end
+
+def fun_l20_n650(x)
+ if (x < 1)
+ fun_l21_n596(x)
+ else
+ fun_l21_n681(x)
+ end
+end
+
+def fun_l20_n651(x)
+ if (x < 1)
+ fun_l21_n686(x)
+ else
+ fun_l21_n399(x)
+ end
+end
+
+def fun_l20_n652(x)
+ if (x < 1)
+ fun_l21_n461(x)
+ else
+ fun_l21_n851(x)
+ end
+end
+
+def fun_l20_n653(x)
+ if (x < 1)
+ fun_l21_n562(x)
+ else
+ fun_l21_n60(x)
+ end
+end
+
+def fun_l20_n654(x)
+ if (x < 1)
+ fun_l21_n269(x)
+ else
+ fun_l21_n937(x)
+ end
+end
+
+def fun_l20_n655(x)
+ if (x < 1)
+ fun_l21_n994(x)
+ else
+ fun_l21_n386(x)
+ end
+end
+
+def fun_l20_n656(x)
+ if (x < 1)
+ fun_l21_n568(x)
+ else
+ fun_l21_n180(x)
+ end
+end
+
+def fun_l20_n657(x)
+ if (x < 1)
+ fun_l21_n334(x)
+ else
+ fun_l21_n362(x)
+ end
+end
+
+def fun_l20_n658(x)
+ if (x < 1)
+ fun_l21_n14(x)
+ else
+ fun_l21_n311(x)
+ end
+end
+
+def fun_l20_n659(x)
+ if (x < 1)
+ fun_l21_n715(x)
+ else
+ fun_l21_n945(x)
+ end
+end
+
+def fun_l20_n660(x)
+ if (x < 1)
+ fun_l21_n739(x)
+ else
+ fun_l21_n456(x)
+ end
+end
+
+def fun_l20_n661(x)
+ if (x < 1)
+ fun_l21_n298(x)
+ else
+ fun_l21_n344(x)
+ end
+end
+
+def fun_l20_n662(x)
+ if (x < 1)
+ fun_l21_n134(x)
+ else
+ fun_l21_n828(x)
+ end
+end
+
+def fun_l20_n663(x)
+ if (x < 1)
+ fun_l21_n831(x)
+ else
+ fun_l21_n231(x)
+ end
+end
+
+def fun_l20_n664(x)
+ if (x < 1)
+ fun_l21_n330(x)
+ else
+ fun_l21_n733(x)
+ end
+end
+
+def fun_l20_n665(x)
+ if (x < 1)
+ fun_l21_n22(x)
+ else
+ fun_l21_n973(x)
+ end
+end
+
+def fun_l20_n666(x)
+ if (x < 1)
+ fun_l21_n277(x)
+ else
+ fun_l21_n988(x)
+ end
+end
+
+def fun_l20_n667(x)
+ if (x < 1)
+ fun_l21_n252(x)
+ else
+ fun_l21_n8(x)
+ end
+end
+
+def fun_l20_n668(x)
+ if (x < 1)
+ fun_l21_n991(x)
+ else
+ fun_l21_n801(x)
+ end
+end
+
+def fun_l20_n669(x)
+ if (x < 1)
+ fun_l21_n811(x)
+ else
+ fun_l21_n660(x)
+ end
+end
+
+def fun_l20_n670(x)
+ if (x < 1)
+ fun_l21_n384(x)
+ else
+ fun_l21_n596(x)
+ end
+end
+
+def fun_l20_n671(x)
+ if (x < 1)
+ fun_l21_n509(x)
+ else
+ fun_l21_n133(x)
+ end
+end
+
+def fun_l20_n672(x)
+ if (x < 1)
+ fun_l21_n650(x)
+ else
+ fun_l21_n679(x)
+ end
+end
+
+def fun_l20_n673(x)
+ if (x < 1)
+ fun_l21_n323(x)
+ else
+ fun_l21_n824(x)
+ end
+end
+
+def fun_l20_n674(x)
+ if (x < 1)
+ fun_l21_n728(x)
+ else
+ fun_l21_n697(x)
+ end
+end
+
+def fun_l20_n675(x)
+ if (x < 1)
+ fun_l21_n367(x)
+ else
+ fun_l21_n383(x)
+ end
+end
+
+def fun_l20_n676(x)
+ if (x < 1)
+ fun_l21_n280(x)
+ else
+ fun_l21_n309(x)
+ end
+end
+
+def fun_l20_n677(x)
+ if (x < 1)
+ fun_l21_n17(x)
+ else
+ fun_l21_n687(x)
+ end
+end
+
+def fun_l20_n678(x)
+ if (x < 1)
+ fun_l21_n133(x)
+ else
+ fun_l21_n250(x)
+ end
+end
+
+def fun_l20_n679(x)
+ if (x < 1)
+ fun_l21_n713(x)
+ else
+ fun_l21_n630(x)
+ end
+end
+
+def fun_l20_n680(x)
+ if (x < 1)
+ fun_l21_n348(x)
+ else
+ fun_l21_n737(x)
+ end
+end
+
+def fun_l20_n681(x)
+ if (x < 1)
+ fun_l21_n450(x)
+ else
+ fun_l21_n283(x)
+ end
+end
+
+def fun_l20_n682(x)
+ if (x < 1)
+ fun_l21_n568(x)
+ else
+ fun_l21_n22(x)
+ end
+end
+
+def fun_l20_n683(x)
+ if (x < 1)
+ fun_l21_n173(x)
+ else
+ fun_l21_n457(x)
+ end
+end
+
+def fun_l20_n684(x)
+ if (x < 1)
+ fun_l21_n846(x)
+ else
+ fun_l21_n415(x)
+ end
+end
+
+def fun_l20_n685(x)
+ if (x < 1)
+ fun_l21_n757(x)
+ else
+ fun_l21_n817(x)
+ end
+end
+
+def fun_l20_n686(x)
+ if (x < 1)
+ fun_l21_n282(x)
+ else
+ fun_l21_n503(x)
+ end
+end
+
+def fun_l20_n687(x)
+ if (x < 1)
+ fun_l21_n337(x)
+ else
+ fun_l21_n407(x)
+ end
+end
+
+def fun_l20_n688(x)
+ if (x < 1)
+ fun_l21_n783(x)
+ else
+ fun_l21_n307(x)
+ end
+end
+
+def fun_l20_n689(x)
+ if (x < 1)
+ fun_l21_n397(x)
+ else
+ fun_l21_n10(x)
+ end
+end
+
+def fun_l20_n690(x)
+ if (x < 1)
+ fun_l21_n100(x)
+ else
+ fun_l21_n704(x)
+ end
+end
+
+def fun_l20_n691(x)
+ if (x < 1)
+ fun_l21_n380(x)
+ else
+ fun_l21_n780(x)
+ end
+end
+
+def fun_l20_n692(x)
+ if (x < 1)
+ fun_l21_n782(x)
+ else
+ fun_l21_n955(x)
+ end
+end
+
+def fun_l20_n693(x)
+ if (x < 1)
+ fun_l21_n40(x)
+ else
+ fun_l21_n599(x)
+ end
+end
+
+def fun_l20_n694(x)
+ if (x < 1)
+ fun_l21_n730(x)
+ else
+ fun_l21_n215(x)
+ end
+end
+
+def fun_l20_n695(x)
+ if (x < 1)
+ fun_l21_n168(x)
+ else
+ fun_l21_n757(x)
+ end
+end
+
+def fun_l20_n696(x)
+ if (x < 1)
+ fun_l21_n622(x)
+ else
+ fun_l21_n411(x)
+ end
+end
+
+def fun_l20_n697(x)
+ if (x < 1)
+ fun_l21_n958(x)
+ else
+ fun_l21_n832(x)
+ end
+end
+
+def fun_l20_n698(x)
+ if (x < 1)
+ fun_l21_n452(x)
+ else
+ fun_l21_n390(x)
+ end
+end
+
+def fun_l20_n699(x)
+ if (x < 1)
+ fun_l21_n669(x)
+ else
+ fun_l21_n642(x)
+ end
+end
+
+def fun_l20_n700(x)
+ if (x < 1)
+ fun_l21_n481(x)
+ else
+ fun_l21_n273(x)
+ end
+end
+
+def fun_l20_n701(x)
+ if (x < 1)
+ fun_l21_n305(x)
+ else
+ fun_l21_n783(x)
+ end
+end
+
+def fun_l20_n702(x)
+ if (x < 1)
+ fun_l21_n766(x)
+ else
+ fun_l21_n943(x)
+ end
+end
+
+def fun_l20_n703(x)
+ if (x < 1)
+ fun_l21_n440(x)
+ else
+ fun_l21_n875(x)
+ end
+end
+
+def fun_l20_n704(x)
+ if (x < 1)
+ fun_l21_n332(x)
+ else
+ fun_l21_n839(x)
+ end
+end
+
+def fun_l20_n705(x)
+ if (x < 1)
+ fun_l21_n459(x)
+ else
+ fun_l21_n341(x)
+ end
+end
+
+def fun_l20_n706(x)
+ if (x < 1)
+ fun_l21_n897(x)
+ else
+ fun_l21_n235(x)
+ end
+end
+
+def fun_l20_n707(x)
+ if (x < 1)
+ fun_l21_n400(x)
+ else
+ fun_l21_n349(x)
+ end
+end
+
+def fun_l20_n708(x)
+ if (x < 1)
+ fun_l21_n121(x)
+ else
+ fun_l21_n40(x)
+ end
+end
+
+def fun_l20_n709(x)
+ if (x < 1)
+ fun_l21_n496(x)
+ else
+ fun_l21_n473(x)
+ end
+end
+
+def fun_l20_n710(x)
+ if (x < 1)
+ fun_l21_n146(x)
+ else
+ fun_l21_n944(x)
+ end
+end
+
+def fun_l20_n711(x)
+ if (x < 1)
+ fun_l21_n497(x)
+ else
+ fun_l21_n322(x)
+ end
+end
+
+def fun_l20_n712(x)
+ if (x < 1)
+ fun_l21_n647(x)
+ else
+ fun_l21_n76(x)
+ end
+end
+
+def fun_l20_n713(x)
+ if (x < 1)
+ fun_l21_n402(x)
+ else
+ fun_l21_n904(x)
+ end
+end
+
+def fun_l20_n714(x)
+ if (x < 1)
+ fun_l21_n834(x)
+ else
+ fun_l21_n904(x)
+ end
+end
+
+def fun_l20_n715(x)
+ if (x < 1)
+ fun_l21_n482(x)
+ else
+ fun_l21_n399(x)
+ end
+end
+
+def fun_l20_n716(x)
+ if (x < 1)
+ fun_l21_n441(x)
+ else
+ fun_l21_n348(x)
+ end
+end
+
+def fun_l20_n717(x)
+ if (x < 1)
+ fun_l21_n577(x)
+ else
+ fun_l21_n815(x)
+ end
+end
+
+def fun_l20_n718(x)
+ if (x < 1)
+ fun_l21_n18(x)
+ else
+ fun_l21_n399(x)
+ end
+end
+
+def fun_l20_n719(x)
+ if (x < 1)
+ fun_l21_n245(x)
+ else
+ fun_l21_n928(x)
+ end
+end
+
+def fun_l20_n720(x)
+ if (x < 1)
+ fun_l21_n373(x)
+ else
+ fun_l21_n432(x)
+ end
+end
+
+def fun_l20_n721(x)
+ if (x < 1)
+ fun_l21_n20(x)
+ else
+ fun_l21_n485(x)
+ end
+end
+
+def fun_l20_n722(x)
+ if (x < 1)
+ fun_l21_n79(x)
+ else
+ fun_l21_n525(x)
+ end
+end
+
+def fun_l20_n723(x)
+ if (x < 1)
+ fun_l21_n474(x)
+ else
+ fun_l21_n706(x)
+ end
+end
+
+def fun_l20_n724(x)
+ if (x < 1)
+ fun_l21_n27(x)
+ else
+ fun_l21_n833(x)
+ end
+end
+
+def fun_l20_n725(x)
+ if (x < 1)
+ fun_l21_n386(x)
+ else
+ fun_l21_n422(x)
+ end
+end
+
+def fun_l20_n726(x)
+ if (x < 1)
+ fun_l21_n816(x)
+ else
+ fun_l21_n204(x)
+ end
+end
+
+def fun_l20_n727(x)
+ if (x < 1)
+ fun_l21_n502(x)
+ else
+ fun_l21_n554(x)
+ end
+end
+
+def fun_l20_n728(x)
+ if (x < 1)
+ fun_l21_n846(x)
+ else
+ fun_l21_n948(x)
+ end
+end
+
+def fun_l20_n729(x)
+ if (x < 1)
+ fun_l21_n308(x)
+ else
+ fun_l21_n408(x)
+ end
+end
+
+def fun_l20_n730(x)
+ if (x < 1)
+ fun_l21_n882(x)
+ else
+ fun_l21_n151(x)
+ end
+end
+
+def fun_l20_n731(x)
+ if (x < 1)
+ fun_l21_n22(x)
+ else
+ fun_l21_n839(x)
+ end
+end
+
+def fun_l20_n732(x)
+ if (x < 1)
+ fun_l21_n482(x)
+ else
+ fun_l21_n942(x)
+ end
+end
+
+def fun_l20_n733(x)
+ if (x < 1)
+ fun_l21_n959(x)
+ else
+ fun_l21_n615(x)
+ end
+end
+
+def fun_l20_n734(x)
+ if (x < 1)
+ fun_l21_n137(x)
+ else
+ fun_l21_n455(x)
+ end
+end
+
+def fun_l20_n735(x)
+ if (x < 1)
+ fun_l21_n388(x)
+ else
+ fun_l21_n362(x)
+ end
+end
+
+def fun_l20_n736(x)
+ if (x < 1)
+ fun_l21_n107(x)
+ else
+ fun_l21_n883(x)
+ end
+end
+
+def fun_l20_n737(x)
+ if (x < 1)
+ fun_l21_n42(x)
+ else
+ fun_l21_n288(x)
+ end
+end
+
+def fun_l20_n738(x)
+ if (x < 1)
+ fun_l21_n885(x)
+ else
+ fun_l21_n443(x)
+ end
+end
+
+def fun_l20_n739(x)
+ if (x < 1)
+ fun_l21_n414(x)
+ else
+ fun_l21_n976(x)
+ end
+end
+
+def fun_l20_n740(x)
+ if (x < 1)
+ fun_l21_n244(x)
+ else
+ fun_l21_n327(x)
+ end
+end
+
+def fun_l20_n741(x)
+ if (x < 1)
+ fun_l21_n832(x)
+ else
+ fun_l21_n951(x)
+ end
+end
+
+def fun_l20_n742(x)
+ if (x < 1)
+ fun_l21_n408(x)
+ else
+ fun_l21_n978(x)
+ end
+end
+
+def fun_l20_n743(x)
+ if (x < 1)
+ fun_l21_n517(x)
+ else
+ fun_l21_n468(x)
+ end
+end
+
+def fun_l20_n744(x)
+ if (x < 1)
+ fun_l21_n281(x)
+ else
+ fun_l21_n9(x)
+ end
+end
+
+def fun_l20_n745(x)
+ if (x < 1)
+ fun_l21_n488(x)
+ else
+ fun_l21_n526(x)
+ end
+end
+
+def fun_l20_n746(x)
+ if (x < 1)
+ fun_l21_n494(x)
+ else
+ fun_l21_n769(x)
+ end
+end
+
+def fun_l20_n747(x)
+ if (x < 1)
+ fun_l21_n277(x)
+ else
+ fun_l21_n103(x)
+ end
+end
+
+def fun_l20_n748(x)
+ if (x < 1)
+ fun_l21_n663(x)
+ else
+ fun_l21_n281(x)
+ end
+end
+
+def fun_l20_n749(x)
+ if (x < 1)
+ fun_l21_n260(x)
+ else
+ fun_l21_n320(x)
+ end
+end
+
+def fun_l20_n750(x)
+ if (x < 1)
+ fun_l21_n781(x)
+ else
+ fun_l21_n705(x)
+ end
+end
+
+def fun_l20_n751(x)
+ if (x < 1)
+ fun_l21_n317(x)
+ else
+ fun_l21_n728(x)
+ end
+end
+
+def fun_l20_n752(x)
+ if (x < 1)
+ fun_l21_n573(x)
+ else
+ fun_l21_n172(x)
+ end
+end
+
+def fun_l20_n753(x)
+ if (x < 1)
+ fun_l21_n352(x)
+ else
+ fun_l21_n933(x)
+ end
+end
+
+def fun_l20_n754(x)
+ if (x < 1)
+ fun_l21_n876(x)
+ else
+ fun_l21_n180(x)
+ end
+end
+
+def fun_l20_n755(x)
+ if (x < 1)
+ fun_l21_n937(x)
+ else
+ fun_l21_n387(x)
+ end
+end
+
+def fun_l20_n756(x)
+ if (x < 1)
+ fun_l21_n154(x)
+ else
+ fun_l21_n187(x)
+ end
+end
+
+def fun_l20_n757(x)
+ if (x < 1)
+ fun_l21_n766(x)
+ else
+ fun_l21_n259(x)
+ end
+end
+
+def fun_l20_n758(x)
+ if (x < 1)
+ fun_l21_n235(x)
+ else
+ fun_l21_n636(x)
+ end
+end
+
+def fun_l20_n759(x)
+ if (x < 1)
+ fun_l21_n872(x)
+ else
+ fun_l21_n913(x)
+ end
+end
+
+def fun_l20_n760(x)
+ if (x < 1)
+ fun_l21_n73(x)
+ else
+ fun_l21_n743(x)
+ end
+end
+
+def fun_l20_n761(x)
+ if (x < 1)
+ fun_l21_n666(x)
+ else
+ fun_l21_n777(x)
+ end
+end
+
+def fun_l20_n762(x)
+ if (x < 1)
+ fun_l21_n829(x)
+ else
+ fun_l21_n800(x)
+ end
+end
+
+def fun_l20_n763(x)
+ if (x < 1)
+ fun_l21_n37(x)
+ else
+ fun_l21_n152(x)
+ end
+end
+
+def fun_l20_n764(x)
+ if (x < 1)
+ fun_l21_n53(x)
+ else
+ fun_l21_n196(x)
+ end
+end
+
+def fun_l20_n765(x)
+ if (x < 1)
+ fun_l21_n511(x)
+ else
+ fun_l21_n415(x)
+ end
+end
+
+def fun_l20_n766(x)
+ if (x < 1)
+ fun_l21_n375(x)
+ else
+ fun_l21_n885(x)
+ end
+end
+
+def fun_l20_n767(x)
+ if (x < 1)
+ fun_l21_n267(x)
+ else
+ fun_l21_n597(x)
+ end
+end
+
+def fun_l20_n768(x)
+ if (x < 1)
+ fun_l21_n920(x)
+ else
+ fun_l21_n943(x)
+ end
+end
+
+def fun_l20_n769(x)
+ if (x < 1)
+ fun_l21_n585(x)
+ else
+ fun_l21_n659(x)
+ end
+end
+
+def fun_l20_n770(x)
+ if (x < 1)
+ fun_l21_n897(x)
+ else
+ fun_l21_n742(x)
+ end
+end
+
+def fun_l20_n771(x)
+ if (x < 1)
+ fun_l21_n41(x)
+ else
+ fun_l21_n431(x)
+ end
+end
+
+def fun_l20_n772(x)
+ if (x < 1)
+ fun_l21_n446(x)
+ else
+ fun_l21_n22(x)
+ end
+end
+
+def fun_l20_n773(x)
+ if (x < 1)
+ fun_l21_n918(x)
+ else
+ fun_l21_n387(x)
+ end
+end
+
+def fun_l20_n774(x)
+ if (x < 1)
+ fun_l21_n88(x)
+ else
+ fun_l21_n763(x)
+ end
+end
+
+def fun_l20_n775(x)
+ if (x < 1)
+ fun_l21_n224(x)
+ else
+ fun_l21_n886(x)
+ end
+end
+
+def fun_l20_n776(x)
+ if (x < 1)
+ fun_l21_n860(x)
+ else
+ fun_l21_n145(x)
+ end
+end
+
+def fun_l20_n777(x)
+ if (x < 1)
+ fun_l21_n198(x)
+ else
+ fun_l21_n593(x)
+ end
+end
+
+def fun_l20_n778(x)
+ if (x < 1)
+ fun_l21_n510(x)
+ else
+ fun_l21_n146(x)
+ end
+end
+
+def fun_l20_n779(x)
+ if (x < 1)
+ fun_l21_n125(x)
+ else
+ fun_l21_n390(x)
+ end
+end
+
+def fun_l20_n780(x)
+ if (x < 1)
+ fun_l21_n278(x)
+ else
+ fun_l21_n100(x)
+ end
+end
+
+def fun_l20_n781(x)
+ if (x < 1)
+ fun_l21_n9(x)
+ else
+ fun_l21_n312(x)
+ end
+end
+
+def fun_l20_n782(x)
+ if (x < 1)
+ fun_l21_n883(x)
+ else
+ fun_l21_n118(x)
+ end
+end
+
+def fun_l20_n783(x)
+ if (x < 1)
+ fun_l21_n314(x)
+ else
+ fun_l21_n357(x)
+ end
+end
+
+def fun_l20_n784(x)
+ if (x < 1)
+ fun_l21_n599(x)
+ else
+ fun_l21_n211(x)
+ end
+end
+
+def fun_l20_n785(x)
+ if (x < 1)
+ fun_l21_n882(x)
+ else
+ fun_l21_n903(x)
+ end
+end
+
+def fun_l20_n786(x)
+ if (x < 1)
+ fun_l21_n741(x)
+ else
+ fun_l21_n634(x)
+ end
+end
+
+def fun_l20_n787(x)
+ if (x < 1)
+ fun_l21_n186(x)
+ else
+ fun_l21_n68(x)
+ end
+end
+
+def fun_l20_n788(x)
+ if (x < 1)
+ fun_l21_n620(x)
+ else
+ fun_l21_n976(x)
+ end
+end
+
+def fun_l20_n789(x)
+ if (x < 1)
+ fun_l21_n692(x)
+ else
+ fun_l21_n8(x)
+ end
+end
+
+def fun_l20_n790(x)
+ if (x < 1)
+ fun_l21_n893(x)
+ else
+ fun_l21_n916(x)
+ end
+end
+
+def fun_l20_n791(x)
+ if (x < 1)
+ fun_l21_n823(x)
+ else
+ fun_l21_n498(x)
+ end
+end
+
+def fun_l20_n792(x)
+ if (x < 1)
+ fun_l21_n390(x)
+ else
+ fun_l21_n711(x)
+ end
+end
+
+def fun_l20_n793(x)
+ if (x < 1)
+ fun_l21_n918(x)
+ else
+ fun_l21_n819(x)
+ end
+end
+
+def fun_l20_n794(x)
+ if (x < 1)
+ fun_l21_n809(x)
+ else
+ fun_l21_n320(x)
+ end
+end
+
+def fun_l20_n795(x)
+ if (x < 1)
+ fun_l21_n387(x)
+ else
+ fun_l21_n377(x)
+ end
+end
+
+def fun_l20_n796(x)
+ if (x < 1)
+ fun_l21_n243(x)
+ else
+ fun_l21_n555(x)
+ end
+end
+
+def fun_l20_n797(x)
+ if (x < 1)
+ fun_l21_n946(x)
+ else
+ fun_l21_n811(x)
+ end
+end
+
+def fun_l20_n798(x)
+ if (x < 1)
+ fun_l21_n492(x)
+ else
+ fun_l21_n367(x)
+ end
+end
+
+def fun_l20_n799(x)
+ if (x < 1)
+ fun_l21_n161(x)
+ else
+ fun_l21_n818(x)
+ end
+end
+
+def fun_l20_n800(x)
+ if (x < 1)
+ fun_l21_n365(x)
+ else
+ fun_l21_n560(x)
+ end
+end
+
+def fun_l20_n801(x)
+ if (x < 1)
+ fun_l21_n456(x)
+ else
+ fun_l21_n880(x)
+ end
+end
+
+def fun_l20_n802(x)
+ if (x < 1)
+ fun_l21_n683(x)
+ else
+ fun_l21_n71(x)
+ end
+end
+
+def fun_l20_n803(x)
+ if (x < 1)
+ fun_l21_n250(x)
+ else
+ fun_l21_n183(x)
+ end
+end
+
+def fun_l20_n804(x)
+ if (x < 1)
+ fun_l21_n900(x)
+ else
+ fun_l21_n63(x)
+ end
+end
+
+def fun_l20_n805(x)
+ if (x < 1)
+ fun_l21_n798(x)
+ else
+ fun_l21_n91(x)
+ end
+end
+
+def fun_l20_n806(x)
+ if (x < 1)
+ fun_l21_n525(x)
+ else
+ fun_l21_n59(x)
+ end
+end
+
+def fun_l20_n807(x)
+ if (x < 1)
+ fun_l21_n515(x)
+ else
+ fun_l21_n457(x)
+ end
+end
+
+def fun_l20_n808(x)
+ if (x < 1)
+ fun_l21_n410(x)
+ else
+ fun_l21_n172(x)
+ end
+end
+
+def fun_l20_n809(x)
+ if (x < 1)
+ fun_l21_n194(x)
+ else
+ fun_l21_n425(x)
+ end
+end
+
+def fun_l20_n810(x)
+ if (x < 1)
+ fun_l21_n660(x)
+ else
+ fun_l21_n120(x)
+ end
+end
+
+def fun_l20_n811(x)
+ if (x < 1)
+ fun_l21_n920(x)
+ else
+ fun_l21_n97(x)
+ end
+end
+
+def fun_l20_n812(x)
+ if (x < 1)
+ fun_l21_n443(x)
+ else
+ fun_l21_n876(x)
+ end
+end
+
+def fun_l20_n813(x)
+ if (x < 1)
+ fun_l21_n935(x)
+ else
+ fun_l21_n186(x)
+ end
+end
+
+def fun_l20_n814(x)
+ if (x < 1)
+ fun_l21_n139(x)
+ else
+ fun_l21_n313(x)
+ end
+end
+
+def fun_l20_n815(x)
+ if (x < 1)
+ fun_l21_n21(x)
+ else
+ fun_l21_n500(x)
+ end
+end
+
+def fun_l20_n816(x)
+ if (x < 1)
+ fun_l21_n682(x)
+ else
+ fun_l21_n17(x)
+ end
+end
+
+def fun_l20_n817(x)
+ if (x < 1)
+ fun_l21_n945(x)
+ else
+ fun_l21_n472(x)
+ end
+end
+
+def fun_l20_n818(x)
+ if (x < 1)
+ fun_l21_n76(x)
+ else
+ fun_l21_n464(x)
+ end
+end
+
+def fun_l20_n819(x)
+ if (x < 1)
+ fun_l21_n696(x)
+ else
+ fun_l21_n989(x)
+ end
+end
+
+def fun_l20_n820(x)
+ if (x < 1)
+ fun_l21_n150(x)
+ else
+ fun_l21_n459(x)
+ end
+end
+
+def fun_l20_n821(x)
+ if (x < 1)
+ fun_l21_n280(x)
+ else
+ fun_l21_n535(x)
+ end
+end
+
+def fun_l20_n822(x)
+ if (x < 1)
+ fun_l21_n120(x)
+ else
+ fun_l21_n553(x)
+ end
+end
+
+def fun_l20_n823(x)
+ if (x < 1)
+ fun_l21_n450(x)
+ else
+ fun_l21_n168(x)
+ end
+end
+
+def fun_l20_n824(x)
+ if (x < 1)
+ fun_l21_n635(x)
+ else
+ fun_l21_n45(x)
+ end
+end
+
+def fun_l20_n825(x)
+ if (x < 1)
+ fun_l21_n245(x)
+ else
+ fun_l21_n491(x)
+ end
+end
+
+def fun_l20_n826(x)
+ if (x < 1)
+ fun_l21_n202(x)
+ else
+ fun_l21_n307(x)
+ end
+end
+
+def fun_l20_n827(x)
+ if (x < 1)
+ fun_l21_n883(x)
+ else
+ fun_l21_n113(x)
+ end
+end
+
+def fun_l20_n828(x)
+ if (x < 1)
+ fun_l21_n864(x)
+ else
+ fun_l21_n982(x)
+ end
+end
+
+def fun_l20_n829(x)
+ if (x < 1)
+ fun_l21_n707(x)
+ else
+ fun_l21_n909(x)
+ end
+end
+
+def fun_l20_n830(x)
+ if (x < 1)
+ fun_l21_n838(x)
+ else
+ fun_l21_n784(x)
+ end
+end
+
+def fun_l20_n831(x)
+ if (x < 1)
+ fun_l21_n179(x)
+ else
+ fun_l21_n445(x)
+ end
+end
+
+def fun_l20_n832(x)
+ if (x < 1)
+ fun_l21_n563(x)
+ else
+ fun_l21_n981(x)
+ end
+end
+
+def fun_l20_n833(x)
+ if (x < 1)
+ fun_l21_n441(x)
+ else
+ fun_l21_n911(x)
+ end
+end
+
+def fun_l20_n834(x)
+ if (x < 1)
+ fun_l21_n46(x)
+ else
+ fun_l21_n244(x)
+ end
+end
+
+def fun_l20_n835(x)
+ if (x < 1)
+ fun_l21_n740(x)
+ else
+ fun_l21_n877(x)
+ end
+end
+
+def fun_l20_n836(x)
+ if (x < 1)
+ fun_l21_n987(x)
+ else
+ fun_l21_n459(x)
+ end
+end
+
+def fun_l20_n837(x)
+ if (x < 1)
+ fun_l21_n51(x)
+ else
+ fun_l21_n533(x)
+ end
+end
+
+def fun_l20_n838(x)
+ if (x < 1)
+ fun_l21_n530(x)
+ else
+ fun_l21_n916(x)
+ end
+end
+
+def fun_l20_n839(x)
+ if (x < 1)
+ fun_l21_n644(x)
+ else
+ fun_l21_n574(x)
+ end
+end
+
+def fun_l20_n840(x)
+ if (x < 1)
+ fun_l21_n167(x)
+ else
+ fun_l21_n935(x)
+ end
+end
+
+def fun_l20_n841(x)
+ if (x < 1)
+ fun_l21_n657(x)
+ else
+ fun_l21_n914(x)
+ end
+end
+
+def fun_l20_n842(x)
+ if (x < 1)
+ fun_l21_n646(x)
+ else
+ fun_l21_n191(x)
+ end
+end
+
+def fun_l20_n843(x)
+ if (x < 1)
+ fun_l21_n881(x)
+ else
+ fun_l21_n744(x)
+ end
+end
+
+def fun_l20_n844(x)
+ if (x < 1)
+ fun_l21_n293(x)
+ else
+ fun_l21_n474(x)
+ end
+end
+
+def fun_l20_n845(x)
+ if (x < 1)
+ fun_l21_n481(x)
+ else
+ fun_l21_n80(x)
+ end
+end
+
+def fun_l20_n846(x)
+ if (x < 1)
+ fun_l21_n785(x)
+ else
+ fun_l21_n694(x)
+ end
+end
+
+def fun_l20_n847(x)
+ if (x < 1)
+ fun_l21_n874(x)
+ else
+ fun_l21_n465(x)
+ end
+end
+
+def fun_l20_n848(x)
+ if (x < 1)
+ fun_l21_n43(x)
+ else
+ fun_l21_n666(x)
+ end
+end
+
+def fun_l20_n849(x)
+ if (x < 1)
+ fun_l21_n868(x)
+ else
+ fun_l21_n272(x)
+ end
+end
+
+def fun_l20_n850(x)
+ if (x < 1)
+ fun_l21_n194(x)
+ else
+ fun_l21_n995(x)
+ end
+end
+
+def fun_l20_n851(x)
+ if (x < 1)
+ fun_l21_n989(x)
+ else
+ fun_l21_n385(x)
+ end
+end
+
+def fun_l20_n852(x)
+ if (x < 1)
+ fun_l21_n396(x)
+ else
+ fun_l21_n366(x)
+ end
+end
+
+def fun_l20_n853(x)
+ if (x < 1)
+ fun_l21_n439(x)
+ else
+ fun_l21_n141(x)
+ end
+end
+
+def fun_l20_n854(x)
+ if (x < 1)
+ fun_l21_n78(x)
+ else
+ fun_l21_n180(x)
+ end
+end
+
+def fun_l20_n855(x)
+ if (x < 1)
+ fun_l21_n203(x)
+ else
+ fun_l21_n382(x)
+ end
+end
+
+def fun_l20_n856(x)
+ if (x < 1)
+ fun_l21_n387(x)
+ else
+ fun_l21_n696(x)
+ end
+end
+
+def fun_l20_n857(x)
+ if (x < 1)
+ fun_l21_n383(x)
+ else
+ fun_l21_n655(x)
+ end
+end
+
+def fun_l20_n858(x)
+ if (x < 1)
+ fun_l21_n375(x)
+ else
+ fun_l21_n14(x)
+ end
+end
+
+def fun_l20_n859(x)
+ if (x < 1)
+ fun_l21_n418(x)
+ else
+ fun_l21_n435(x)
+ end
+end
+
+def fun_l20_n860(x)
+ if (x < 1)
+ fun_l21_n75(x)
+ else
+ fun_l21_n258(x)
+ end
+end
+
+def fun_l20_n861(x)
+ if (x < 1)
+ fun_l21_n509(x)
+ else
+ fun_l21_n585(x)
+ end
+end
+
+def fun_l20_n862(x)
+ if (x < 1)
+ fun_l21_n388(x)
+ else
+ fun_l21_n962(x)
+ end
+end
+
+def fun_l20_n863(x)
+ if (x < 1)
+ fun_l21_n826(x)
+ else
+ fun_l21_n691(x)
+ end
+end
+
+def fun_l20_n864(x)
+ if (x < 1)
+ fun_l21_n230(x)
+ else
+ fun_l21_n588(x)
+ end
+end
+
+def fun_l20_n865(x)
+ if (x < 1)
+ fun_l21_n138(x)
+ else
+ fun_l21_n779(x)
+ end
+end
+
+def fun_l20_n866(x)
+ if (x < 1)
+ fun_l21_n994(x)
+ else
+ fun_l21_n325(x)
+ end
+end
+
+def fun_l20_n867(x)
+ if (x < 1)
+ fun_l21_n169(x)
+ else
+ fun_l21_n384(x)
+ end
+end
+
+def fun_l20_n868(x)
+ if (x < 1)
+ fun_l21_n30(x)
+ else
+ fun_l21_n922(x)
+ end
+end
+
+def fun_l20_n869(x)
+ if (x < 1)
+ fun_l21_n500(x)
+ else
+ fun_l21_n896(x)
+ end
+end
+
+def fun_l20_n870(x)
+ if (x < 1)
+ fun_l21_n25(x)
+ else
+ fun_l21_n292(x)
+ end
+end
+
+def fun_l20_n871(x)
+ if (x < 1)
+ fun_l21_n266(x)
+ else
+ fun_l21_n58(x)
+ end
+end
+
+def fun_l20_n872(x)
+ if (x < 1)
+ fun_l21_n172(x)
+ else
+ fun_l21_n721(x)
+ end
+end
+
+def fun_l20_n873(x)
+ if (x < 1)
+ fun_l21_n87(x)
+ else
+ fun_l21_n717(x)
+ end
+end
+
+def fun_l20_n874(x)
+ if (x < 1)
+ fun_l21_n235(x)
+ else
+ fun_l21_n891(x)
+ end
+end
+
+def fun_l20_n875(x)
+ if (x < 1)
+ fun_l21_n87(x)
+ else
+ fun_l21_n810(x)
+ end
+end
+
+def fun_l20_n876(x)
+ if (x < 1)
+ fun_l21_n785(x)
+ else
+ fun_l21_n668(x)
+ end
+end
+
+def fun_l20_n877(x)
+ if (x < 1)
+ fun_l21_n532(x)
+ else
+ fun_l21_n505(x)
+ end
+end
+
+def fun_l20_n878(x)
+ if (x < 1)
+ fun_l21_n885(x)
+ else
+ fun_l21_n820(x)
+ end
+end
+
+def fun_l20_n879(x)
+ if (x < 1)
+ fun_l21_n986(x)
+ else
+ fun_l21_n916(x)
+ end
+end
+
+def fun_l20_n880(x)
+ if (x < 1)
+ fun_l21_n46(x)
+ else
+ fun_l21_n751(x)
+ end
+end
+
+def fun_l20_n881(x)
+ if (x < 1)
+ fun_l21_n964(x)
+ else
+ fun_l21_n829(x)
+ end
+end
+
+def fun_l20_n882(x)
+ if (x < 1)
+ fun_l21_n938(x)
+ else
+ fun_l21_n862(x)
+ end
+end
+
+def fun_l20_n883(x)
+ if (x < 1)
+ fun_l21_n880(x)
+ else
+ fun_l21_n548(x)
+ end
+end
+
+def fun_l20_n884(x)
+ if (x < 1)
+ fun_l21_n621(x)
+ else
+ fun_l21_n184(x)
+ end
+end
+
+def fun_l20_n885(x)
+ if (x < 1)
+ fun_l21_n587(x)
+ else
+ fun_l21_n603(x)
+ end
+end
+
+def fun_l20_n886(x)
+ if (x < 1)
+ fun_l21_n935(x)
+ else
+ fun_l21_n105(x)
+ end
+end
+
+def fun_l20_n887(x)
+ if (x < 1)
+ fun_l21_n76(x)
+ else
+ fun_l21_n96(x)
+ end
+end
+
+def fun_l20_n888(x)
+ if (x < 1)
+ fun_l21_n241(x)
+ else
+ fun_l21_n56(x)
+ end
+end
+
+def fun_l20_n889(x)
+ if (x < 1)
+ fun_l21_n180(x)
+ else
+ fun_l21_n360(x)
+ end
+end
+
+def fun_l20_n890(x)
+ if (x < 1)
+ fun_l21_n179(x)
+ else
+ fun_l21_n510(x)
+ end
+end
+
+def fun_l20_n891(x)
+ if (x < 1)
+ fun_l21_n641(x)
+ else
+ fun_l21_n70(x)
+ end
+end
+
+def fun_l20_n892(x)
+ if (x < 1)
+ fun_l21_n615(x)
+ else
+ fun_l21_n30(x)
+ end
+end
+
+def fun_l20_n893(x)
+ if (x < 1)
+ fun_l21_n787(x)
+ else
+ fun_l21_n914(x)
+ end
+end
+
+def fun_l20_n894(x)
+ if (x < 1)
+ fun_l21_n949(x)
+ else
+ fun_l21_n449(x)
+ end
+end
+
+def fun_l20_n895(x)
+ if (x < 1)
+ fun_l21_n182(x)
+ else
+ fun_l21_n935(x)
+ end
+end
+
+def fun_l20_n896(x)
+ if (x < 1)
+ fun_l21_n411(x)
+ else
+ fun_l21_n43(x)
+ end
+end
+
+def fun_l20_n897(x)
+ if (x < 1)
+ fun_l21_n70(x)
+ else
+ fun_l21_n363(x)
+ end
+end
+
+def fun_l20_n898(x)
+ if (x < 1)
+ fun_l21_n910(x)
+ else
+ fun_l21_n271(x)
+ end
+end
+
+def fun_l20_n899(x)
+ if (x < 1)
+ fun_l21_n722(x)
+ else
+ fun_l21_n793(x)
+ end
+end
+
+def fun_l20_n900(x)
+ if (x < 1)
+ fun_l21_n356(x)
+ else
+ fun_l21_n301(x)
+ end
+end
+
+def fun_l20_n901(x)
+ if (x < 1)
+ fun_l21_n915(x)
+ else
+ fun_l21_n373(x)
+ end
+end
+
+def fun_l20_n902(x)
+ if (x < 1)
+ fun_l21_n468(x)
+ else
+ fun_l21_n632(x)
+ end
+end
+
+def fun_l20_n903(x)
+ if (x < 1)
+ fun_l21_n970(x)
+ else
+ fun_l21_n54(x)
+ end
+end
+
+def fun_l20_n904(x)
+ if (x < 1)
+ fun_l21_n452(x)
+ else
+ fun_l21_n536(x)
+ end
+end
+
+def fun_l20_n905(x)
+ if (x < 1)
+ fun_l21_n223(x)
+ else
+ fun_l21_n423(x)
+ end
+end
+
+def fun_l20_n906(x)
+ if (x < 1)
+ fun_l21_n102(x)
+ else
+ fun_l21_n755(x)
+ end
+end
+
+def fun_l20_n907(x)
+ if (x < 1)
+ fun_l21_n537(x)
+ else
+ fun_l21_n84(x)
+ end
+end
+
+def fun_l20_n908(x)
+ if (x < 1)
+ fun_l21_n786(x)
+ else
+ fun_l21_n979(x)
+ end
+end
+
+def fun_l20_n909(x)
+ if (x < 1)
+ fun_l21_n573(x)
+ else
+ fun_l21_n965(x)
+ end
+end
+
+def fun_l20_n910(x)
+ if (x < 1)
+ fun_l21_n764(x)
+ else
+ fun_l21_n375(x)
+ end
+end
+
+def fun_l20_n911(x)
+ if (x < 1)
+ fun_l21_n673(x)
+ else
+ fun_l21_n545(x)
+ end
+end
+
+def fun_l20_n912(x)
+ if (x < 1)
+ fun_l21_n616(x)
+ else
+ fun_l21_n257(x)
+ end
+end
+
+def fun_l20_n913(x)
+ if (x < 1)
+ fun_l21_n276(x)
+ else
+ fun_l21_n670(x)
+ end
+end
+
+def fun_l20_n914(x)
+ if (x < 1)
+ fun_l21_n969(x)
+ else
+ fun_l21_n482(x)
+ end
+end
+
+def fun_l20_n915(x)
+ if (x < 1)
+ fun_l21_n603(x)
+ else
+ fun_l21_n916(x)
+ end
+end
+
+def fun_l20_n916(x)
+ if (x < 1)
+ fun_l21_n287(x)
+ else
+ fun_l21_n253(x)
+ end
+end
+
+def fun_l20_n917(x)
+ if (x < 1)
+ fun_l21_n201(x)
+ else
+ fun_l21_n175(x)
+ end
+end
+
+def fun_l20_n918(x)
+ if (x < 1)
+ fun_l21_n557(x)
+ else
+ fun_l21_n668(x)
+ end
+end
+
+def fun_l20_n919(x)
+ if (x < 1)
+ fun_l21_n598(x)
+ else
+ fun_l21_n85(x)
+ end
+end
+
+def fun_l20_n920(x)
+ if (x < 1)
+ fun_l21_n998(x)
+ else
+ fun_l21_n611(x)
+ end
+end
+
+def fun_l20_n921(x)
+ if (x < 1)
+ fun_l21_n22(x)
+ else
+ fun_l21_n76(x)
+ end
+end
+
+def fun_l20_n922(x)
+ if (x < 1)
+ fun_l21_n611(x)
+ else
+ fun_l21_n823(x)
+ end
+end
+
+def fun_l20_n923(x)
+ if (x < 1)
+ fun_l21_n739(x)
+ else
+ fun_l21_n231(x)
+ end
+end
+
+def fun_l20_n924(x)
+ if (x < 1)
+ fun_l21_n806(x)
+ else
+ fun_l21_n362(x)
+ end
+end
+
+def fun_l20_n925(x)
+ if (x < 1)
+ fun_l21_n32(x)
+ else
+ fun_l21_n593(x)
+ end
+end
+
+def fun_l20_n926(x)
+ if (x < 1)
+ fun_l21_n592(x)
+ else
+ fun_l21_n422(x)
+ end
+end
+
+def fun_l20_n927(x)
+ if (x < 1)
+ fun_l21_n624(x)
+ else
+ fun_l21_n690(x)
+ end
+end
+
+def fun_l20_n928(x)
+ if (x < 1)
+ fun_l21_n838(x)
+ else
+ fun_l21_n351(x)
+ end
+end
+
+def fun_l20_n929(x)
+ if (x < 1)
+ fun_l21_n289(x)
+ else
+ fun_l21_n842(x)
+ end
+end
+
+def fun_l20_n930(x)
+ if (x < 1)
+ fun_l21_n948(x)
+ else
+ fun_l21_n679(x)
+ end
+end
+
+def fun_l20_n931(x)
+ if (x < 1)
+ fun_l21_n746(x)
+ else
+ fun_l21_n267(x)
+ end
+end
+
+def fun_l20_n932(x)
+ if (x < 1)
+ fun_l21_n494(x)
+ else
+ fun_l21_n19(x)
+ end
+end
+
+def fun_l20_n933(x)
+ if (x < 1)
+ fun_l21_n8(x)
+ else
+ fun_l21_n234(x)
+ end
+end
+
+def fun_l20_n934(x)
+ if (x < 1)
+ fun_l21_n743(x)
+ else
+ fun_l21_n175(x)
+ end
+end
+
+def fun_l20_n935(x)
+ if (x < 1)
+ fun_l21_n111(x)
+ else
+ fun_l21_n300(x)
+ end
+end
+
+def fun_l20_n936(x)
+ if (x < 1)
+ fun_l21_n482(x)
+ else
+ fun_l21_n431(x)
+ end
+end
+
+def fun_l20_n937(x)
+ if (x < 1)
+ fun_l21_n885(x)
+ else
+ fun_l21_n523(x)
+ end
+end
+
+def fun_l20_n938(x)
+ if (x < 1)
+ fun_l21_n661(x)
+ else
+ fun_l21_n461(x)
+ end
+end
+
+def fun_l20_n939(x)
+ if (x < 1)
+ fun_l21_n809(x)
+ else
+ fun_l21_n868(x)
+ end
+end
+
+def fun_l20_n940(x)
+ if (x < 1)
+ fun_l21_n549(x)
+ else
+ fun_l21_n287(x)
+ end
+end
+
+def fun_l20_n941(x)
+ if (x < 1)
+ fun_l21_n246(x)
+ else
+ fun_l21_n228(x)
+ end
+end
+
+def fun_l20_n942(x)
+ if (x < 1)
+ fun_l21_n656(x)
+ else
+ fun_l21_n399(x)
+ end
+end
+
+def fun_l20_n943(x)
+ if (x < 1)
+ fun_l21_n344(x)
+ else
+ fun_l21_n77(x)
+ end
+end
+
+def fun_l20_n944(x)
+ if (x < 1)
+ fun_l21_n862(x)
+ else
+ fun_l21_n696(x)
+ end
+end
+
+def fun_l20_n945(x)
+ if (x < 1)
+ fun_l21_n892(x)
+ else
+ fun_l21_n782(x)
+ end
+end
+
+def fun_l20_n946(x)
+ if (x < 1)
+ fun_l21_n461(x)
+ else
+ fun_l21_n946(x)
+ end
+end
+
+def fun_l20_n947(x)
+ if (x < 1)
+ fun_l21_n576(x)
+ else
+ fun_l21_n216(x)
+ end
+end
+
+def fun_l20_n948(x)
+ if (x < 1)
+ fun_l21_n136(x)
+ else
+ fun_l21_n132(x)
+ end
+end
+
+def fun_l20_n949(x)
+ if (x < 1)
+ fun_l21_n987(x)
+ else
+ fun_l21_n615(x)
+ end
+end
+
+def fun_l20_n950(x)
+ if (x < 1)
+ fun_l21_n170(x)
+ else
+ fun_l21_n55(x)
+ end
+end
+
+def fun_l20_n951(x)
+ if (x < 1)
+ fun_l21_n260(x)
+ else
+ fun_l21_n675(x)
+ end
+end
+
+def fun_l20_n952(x)
+ if (x < 1)
+ fun_l21_n406(x)
+ else
+ fun_l21_n569(x)
+ end
+end
+
+def fun_l20_n953(x)
+ if (x < 1)
+ fun_l21_n41(x)
+ else
+ fun_l21_n951(x)
+ end
+end
+
+def fun_l20_n954(x)
+ if (x < 1)
+ fun_l21_n467(x)
+ else
+ fun_l21_n837(x)
+ end
+end
+
+def fun_l20_n955(x)
+ if (x < 1)
+ fun_l21_n41(x)
+ else
+ fun_l21_n349(x)
+ end
+end
+
+def fun_l20_n956(x)
+ if (x < 1)
+ fun_l21_n105(x)
+ else
+ fun_l21_n595(x)
+ end
+end
+
+def fun_l20_n957(x)
+ if (x < 1)
+ fun_l21_n132(x)
+ else
+ fun_l21_n622(x)
+ end
+end
+
+def fun_l20_n958(x)
+ if (x < 1)
+ fun_l21_n1(x)
+ else
+ fun_l21_n770(x)
+ end
+end
+
+def fun_l20_n959(x)
+ if (x < 1)
+ fun_l21_n768(x)
+ else
+ fun_l21_n979(x)
+ end
+end
+
+def fun_l20_n960(x)
+ if (x < 1)
+ fun_l21_n954(x)
+ else
+ fun_l21_n906(x)
+ end
+end
+
+def fun_l20_n961(x)
+ if (x < 1)
+ fun_l21_n759(x)
+ else
+ fun_l21_n381(x)
+ end
+end
+
+def fun_l20_n962(x)
+ if (x < 1)
+ fun_l21_n590(x)
+ else
+ fun_l21_n868(x)
+ end
+end
+
+def fun_l20_n963(x)
+ if (x < 1)
+ fun_l21_n119(x)
+ else
+ fun_l21_n962(x)
+ end
+end
+
+def fun_l20_n964(x)
+ if (x < 1)
+ fun_l21_n350(x)
+ else
+ fun_l21_n930(x)
+ end
+end
+
+def fun_l20_n965(x)
+ if (x < 1)
+ fun_l21_n542(x)
+ else
+ fun_l21_n217(x)
+ end
+end
+
+def fun_l20_n966(x)
+ if (x < 1)
+ fun_l21_n375(x)
+ else
+ fun_l21_n244(x)
+ end
+end
+
+def fun_l20_n967(x)
+ if (x < 1)
+ fun_l21_n160(x)
+ else
+ fun_l21_n610(x)
+ end
+end
+
+def fun_l20_n968(x)
+ if (x < 1)
+ fun_l21_n28(x)
+ else
+ fun_l21_n925(x)
+ end
+end
+
+def fun_l20_n969(x)
+ if (x < 1)
+ fun_l21_n661(x)
+ else
+ fun_l21_n944(x)
+ end
+end
+
+def fun_l20_n970(x)
+ if (x < 1)
+ fun_l21_n534(x)
+ else
+ fun_l21_n872(x)
+ end
+end
+
+def fun_l20_n971(x)
+ if (x < 1)
+ fun_l21_n684(x)
+ else
+ fun_l21_n271(x)
+ end
+end
+
+def fun_l20_n972(x)
+ if (x < 1)
+ fun_l21_n493(x)
+ else
+ fun_l21_n893(x)
+ end
+end
+
+def fun_l20_n973(x)
+ if (x < 1)
+ fun_l21_n912(x)
+ else
+ fun_l21_n385(x)
+ end
+end
+
+def fun_l20_n974(x)
+ if (x < 1)
+ fun_l21_n528(x)
+ else
+ fun_l21_n948(x)
+ end
+end
+
+def fun_l20_n975(x)
+ if (x < 1)
+ fun_l21_n263(x)
+ else
+ fun_l21_n362(x)
+ end
+end
+
+def fun_l20_n976(x)
+ if (x < 1)
+ fun_l21_n86(x)
+ else
+ fun_l21_n937(x)
+ end
+end
+
+def fun_l20_n977(x)
+ if (x < 1)
+ fun_l21_n886(x)
+ else
+ fun_l21_n845(x)
+ end
+end
+
+def fun_l20_n978(x)
+ if (x < 1)
+ fun_l21_n681(x)
+ else
+ fun_l21_n437(x)
+ end
+end
+
+def fun_l20_n979(x)
+ if (x < 1)
+ fun_l21_n342(x)
+ else
+ fun_l21_n333(x)
+ end
+end
+
+def fun_l20_n980(x)
+ if (x < 1)
+ fun_l21_n160(x)
+ else
+ fun_l21_n635(x)
+ end
+end
+
+def fun_l20_n981(x)
+ if (x < 1)
+ fun_l21_n580(x)
+ else
+ fun_l21_n895(x)
+ end
+end
+
+def fun_l20_n982(x)
+ if (x < 1)
+ fun_l21_n578(x)
+ else
+ fun_l21_n669(x)
+ end
+end
+
+def fun_l20_n983(x)
+ if (x < 1)
+ fun_l21_n939(x)
+ else
+ fun_l21_n321(x)
+ end
+end
+
+def fun_l20_n984(x)
+ if (x < 1)
+ fun_l21_n465(x)
+ else
+ fun_l21_n175(x)
+ end
+end
+
+def fun_l20_n985(x)
+ if (x < 1)
+ fun_l21_n522(x)
+ else
+ fun_l21_n108(x)
+ end
+end
+
+def fun_l20_n986(x)
+ if (x < 1)
+ fun_l21_n347(x)
+ else
+ fun_l21_n207(x)
+ end
+end
+
+def fun_l20_n987(x)
+ if (x < 1)
+ fun_l21_n844(x)
+ else
+ fun_l21_n39(x)
+ end
+end
+
+def fun_l20_n988(x)
+ if (x < 1)
+ fun_l21_n104(x)
+ else
+ fun_l21_n528(x)
+ end
+end
+
+def fun_l20_n989(x)
+ if (x < 1)
+ fun_l21_n486(x)
+ else
+ fun_l21_n443(x)
+ end
+end
+
+def fun_l20_n990(x)
+ if (x < 1)
+ fun_l21_n643(x)
+ else
+ fun_l21_n503(x)
+ end
+end
+
+def fun_l20_n991(x)
+ if (x < 1)
+ fun_l21_n428(x)
+ else
+ fun_l21_n813(x)
+ end
+end
+
+def fun_l20_n992(x)
+ if (x < 1)
+ fun_l21_n452(x)
+ else
+ fun_l21_n536(x)
+ end
+end
+
+def fun_l20_n993(x)
+ if (x < 1)
+ fun_l21_n247(x)
+ else
+ fun_l21_n961(x)
+ end
+end
+
+def fun_l20_n994(x)
+ if (x < 1)
+ fun_l21_n749(x)
+ else
+ fun_l21_n554(x)
+ end
+end
+
+def fun_l20_n995(x)
+ if (x < 1)
+ fun_l21_n333(x)
+ else
+ fun_l21_n162(x)
+ end
+end
+
+def fun_l20_n996(x)
+ if (x < 1)
+ fun_l21_n686(x)
+ else
+ fun_l21_n635(x)
+ end
+end
+
+def fun_l20_n997(x)
+ if (x < 1)
+ fun_l21_n709(x)
+ else
+ fun_l21_n953(x)
+ end
+end
+
+def fun_l20_n998(x)
+ if (x < 1)
+ fun_l21_n315(x)
+ else
+ fun_l21_n818(x)
+ end
+end
+
+def fun_l20_n999(x)
+ if (x < 1)
+ fun_l21_n543(x)
+ else
+ fun_l21_n385(x)
+ end
+end
+
+def fun_l21_n0(x)
+ if (x < 1)
+ fun_l22_n736(x)
+ else
+ fun_l22_n837(x)
+ end
+end
+
+def fun_l21_n1(x)
+ if (x < 1)
+ fun_l22_n333(x)
+ else
+ fun_l22_n358(x)
+ end
+end
+
+def fun_l21_n2(x)
+ if (x < 1)
+ fun_l22_n150(x)
+ else
+ fun_l22_n469(x)
+ end
+end
+
+def fun_l21_n3(x)
+ if (x < 1)
+ fun_l22_n899(x)
+ else
+ fun_l22_n917(x)
+ end
+end
+
+def fun_l21_n4(x)
+ if (x < 1)
+ fun_l22_n943(x)
+ else
+ fun_l22_n435(x)
+ end
+end
+
+def fun_l21_n5(x)
+ if (x < 1)
+ fun_l22_n56(x)
+ else
+ fun_l22_n123(x)
+ end
+end
+
+def fun_l21_n6(x)
+ if (x < 1)
+ fun_l22_n849(x)
+ else
+ fun_l22_n475(x)
+ end
+end
+
+def fun_l21_n7(x)
+ if (x < 1)
+ fun_l22_n931(x)
+ else
+ fun_l22_n529(x)
+ end
+end
+
+def fun_l21_n8(x)
+ if (x < 1)
+ fun_l22_n192(x)
+ else
+ fun_l22_n441(x)
+ end
+end
+
+def fun_l21_n9(x)
+ if (x < 1)
+ fun_l22_n84(x)
+ else
+ fun_l22_n428(x)
+ end
+end
+
+def fun_l21_n10(x)
+ if (x < 1)
+ fun_l22_n355(x)
+ else
+ fun_l22_n432(x)
+ end
+end
+
+def fun_l21_n11(x)
+ if (x < 1)
+ fun_l22_n380(x)
+ else
+ fun_l22_n739(x)
+ end
+end
+
+def fun_l21_n12(x)
+ if (x < 1)
+ fun_l22_n559(x)
+ else
+ fun_l22_n492(x)
+ end
+end
+
+def fun_l21_n13(x)
+ if (x < 1)
+ fun_l22_n542(x)
+ else
+ fun_l22_n284(x)
+ end
+end
+
+def fun_l21_n14(x)
+ if (x < 1)
+ fun_l22_n106(x)
+ else
+ fun_l22_n443(x)
+ end
+end
+
+def fun_l21_n15(x)
+ if (x < 1)
+ fun_l22_n769(x)
+ else
+ fun_l22_n111(x)
+ end
+end
+
+def fun_l21_n16(x)
+ if (x < 1)
+ fun_l22_n982(x)
+ else
+ fun_l22_n855(x)
+ end
+end
+
+def fun_l21_n17(x)
+ if (x < 1)
+ fun_l22_n994(x)
+ else
+ fun_l22_n952(x)
+ end
+end
+
+def fun_l21_n18(x)
+ if (x < 1)
+ fun_l22_n567(x)
+ else
+ fun_l22_n741(x)
+ end
+end
+
+def fun_l21_n19(x)
+ if (x < 1)
+ fun_l22_n851(x)
+ else
+ fun_l22_n830(x)
+ end
+end
+
+def fun_l21_n20(x)
+ if (x < 1)
+ fun_l22_n353(x)
+ else
+ fun_l22_n184(x)
+ end
+end
+
+def fun_l21_n21(x)
+ if (x < 1)
+ fun_l22_n891(x)
+ else
+ fun_l22_n629(x)
+ end
+end
+
+def fun_l21_n22(x)
+ if (x < 1)
+ fun_l22_n521(x)
+ else
+ fun_l22_n932(x)
+ end
+end
+
+def fun_l21_n23(x)
+ if (x < 1)
+ fun_l22_n834(x)
+ else
+ fun_l22_n913(x)
+ end
+end
+
+def fun_l21_n24(x)
+ if (x < 1)
+ fun_l22_n839(x)
+ else
+ fun_l22_n402(x)
+ end
+end
+
+def fun_l21_n25(x)
+ if (x < 1)
+ fun_l22_n525(x)
+ else
+ fun_l22_n247(x)
+ end
+end
+
+def fun_l21_n26(x)
+ if (x < 1)
+ fun_l22_n906(x)
+ else
+ fun_l22_n392(x)
+ end
+end
+
+def fun_l21_n27(x)
+ if (x < 1)
+ fun_l22_n716(x)
+ else
+ fun_l22_n804(x)
+ end
+end
+
+def fun_l21_n28(x)
+ if (x < 1)
+ fun_l22_n444(x)
+ else
+ fun_l22_n21(x)
+ end
+end
+
+def fun_l21_n29(x)
+ if (x < 1)
+ fun_l22_n674(x)
+ else
+ fun_l22_n695(x)
+ end
+end
+
+def fun_l21_n30(x)
+ if (x < 1)
+ fun_l22_n948(x)
+ else
+ fun_l22_n447(x)
+ end
+end
+
+def fun_l21_n31(x)
+ if (x < 1)
+ fun_l22_n460(x)
+ else
+ fun_l22_n743(x)
+ end
+end
+
+def fun_l21_n32(x)
+ if (x < 1)
+ fun_l22_n369(x)
+ else
+ fun_l22_n331(x)
+ end
+end
+
+def fun_l21_n33(x)
+ if (x < 1)
+ fun_l22_n602(x)
+ else
+ fun_l22_n934(x)
+ end
+end
+
+def fun_l21_n34(x)
+ if (x < 1)
+ fun_l22_n572(x)
+ else
+ fun_l22_n267(x)
+ end
+end
+
+def fun_l21_n35(x)
+ if (x < 1)
+ fun_l22_n517(x)
+ else
+ fun_l22_n298(x)
+ end
+end
+
+def fun_l21_n36(x)
+ if (x < 1)
+ fun_l22_n998(x)
+ else
+ fun_l22_n561(x)
+ end
+end
+
+def fun_l21_n37(x)
+ if (x < 1)
+ fun_l22_n457(x)
+ else
+ fun_l22_n513(x)
+ end
+end
+
+def fun_l21_n38(x)
+ if (x < 1)
+ fun_l22_n378(x)
+ else
+ fun_l22_n238(x)
+ end
+end
+
+def fun_l21_n39(x)
+ if (x < 1)
+ fun_l22_n788(x)
+ else
+ fun_l22_n45(x)
+ end
+end
+
+def fun_l21_n40(x)
+ if (x < 1)
+ fun_l22_n299(x)
+ else
+ fun_l22_n516(x)
+ end
+end
+
+def fun_l21_n41(x)
+ if (x < 1)
+ fun_l22_n454(x)
+ else
+ fun_l22_n274(x)
+ end
+end
+
+def fun_l21_n42(x)
+ if (x < 1)
+ fun_l22_n855(x)
+ else
+ fun_l22_n360(x)
+ end
+end
+
+def fun_l21_n43(x)
+ if (x < 1)
+ fun_l22_n577(x)
+ else
+ fun_l22_n213(x)
+ end
+end
+
+def fun_l21_n44(x)
+ if (x < 1)
+ fun_l22_n569(x)
+ else
+ fun_l22_n857(x)
+ end
+end
+
+def fun_l21_n45(x)
+ if (x < 1)
+ fun_l22_n667(x)
+ else
+ fun_l22_n285(x)
+ end
+end
+
+def fun_l21_n46(x)
+ if (x < 1)
+ fun_l22_n915(x)
+ else
+ fun_l22_n232(x)
+ end
+end
+
+def fun_l21_n47(x)
+ if (x < 1)
+ fun_l22_n124(x)
+ else
+ fun_l22_n708(x)
+ end
+end
+
+def fun_l21_n48(x)
+ if (x < 1)
+ fun_l22_n184(x)
+ else
+ fun_l22_n272(x)
+ end
+end
+
+def fun_l21_n49(x)
+ if (x < 1)
+ fun_l22_n376(x)
+ else
+ fun_l22_n138(x)
+ end
+end
+
+def fun_l21_n50(x)
+ if (x < 1)
+ fun_l22_n897(x)
+ else
+ fun_l22_n857(x)
+ end
+end
+
+def fun_l21_n51(x)
+ if (x < 1)
+ fun_l22_n335(x)
+ else
+ fun_l22_n614(x)
+ end
+end
+
+def fun_l21_n52(x)
+ if (x < 1)
+ fun_l22_n921(x)
+ else
+ fun_l22_n109(x)
+ end
+end
+
+def fun_l21_n53(x)
+ if (x < 1)
+ fun_l22_n27(x)
+ else
+ fun_l22_n609(x)
+ end
+end
+
+def fun_l21_n54(x)
+ if (x < 1)
+ fun_l22_n831(x)
+ else
+ fun_l22_n769(x)
+ end
+end
+
+def fun_l21_n55(x)
+ if (x < 1)
+ fun_l22_n936(x)
+ else
+ fun_l22_n250(x)
+ end
+end
+
+def fun_l21_n56(x)
+ if (x < 1)
+ fun_l22_n261(x)
+ else
+ fun_l22_n142(x)
+ end
+end
+
+def fun_l21_n57(x)
+ if (x < 1)
+ fun_l22_n721(x)
+ else
+ fun_l22_n604(x)
+ end
+end
+
+def fun_l21_n58(x)
+ if (x < 1)
+ fun_l22_n760(x)
+ else
+ fun_l22_n545(x)
+ end
+end
+
+def fun_l21_n59(x)
+ if (x < 1)
+ fun_l22_n934(x)
+ else
+ fun_l22_n110(x)
+ end
+end
+
+def fun_l21_n60(x)
+ if (x < 1)
+ fun_l22_n422(x)
+ else
+ fun_l22_n31(x)
+ end
+end
+
+def fun_l21_n61(x)
+ if (x < 1)
+ fun_l22_n776(x)
+ else
+ fun_l22_n251(x)
+ end
+end
+
+def fun_l21_n62(x)
+ if (x < 1)
+ fun_l22_n76(x)
+ else
+ fun_l22_n930(x)
+ end
+end
+
+def fun_l21_n63(x)
+ if (x < 1)
+ fun_l22_n331(x)
+ else
+ fun_l22_n550(x)
+ end
+end
+
+def fun_l21_n64(x)
+ if (x < 1)
+ fun_l22_n845(x)
+ else
+ fun_l22_n62(x)
+ end
+end
+
+def fun_l21_n65(x)
+ if (x < 1)
+ fun_l22_n887(x)
+ else
+ fun_l22_n784(x)
+ end
+end
+
+def fun_l21_n66(x)
+ if (x < 1)
+ fun_l22_n353(x)
+ else
+ fun_l22_n918(x)
+ end
+end
+
+def fun_l21_n67(x)
+ if (x < 1)
+ fun_l22_n682(x)
+ else
+ fun_l22_n840(x)
+ end
+end
+
+def fun_l21_n68(x)
+ if (x < 1)
+ fun_l22_n966(x)
+ else
+ fun_l22_n187(x)
+ end
+end
+
+def fun_l21_n69(x)
+ if (x < 1)
+ fun_l22_n424(x)
+ else
+ fun_l22_n674(x)
+ end
+end
+
+def fun_l21_n70(x)
+ if (x < 1)
+ fun_l22_n530(x)
+ else
+ fun_l22_n148(x)
+ end
+end
+
+def fun_l21_n71(x)
+ if (x < 1)
+ fun_l22_n616(x)
+ else
+ fun_l22_n945(x)
+ end
+end
+
+def fun_l21_n72(x)
+ if (x < 1)
+ fun_l22_n634(x)
+ else
+ fun_l22_n945(x)
+ end
+end
+
+def fun_l21_n73(x)
+ if (x < 1)
+ fun_l22_n153(x)
+ else
+ fun_l22_n657(x)
+ end
+end
+
+def fun_l21_n74(x)
+ if (x < 1)
+ fun_l22_n284(x)
+ else
+ fun_l22_n83(x)
+ end
+end
+
+def fun_l21_n75(x)
+ if (x < 1)
+ fun_l22_n292(x)
+ else
+ fun_l22_n440(x)
+ end
+end
+
+def fun_l21_n76(x)
+ if (x < 1)
+ fun_l22_n932(x)
+ else
+ fun_l22_n29(x)
+ end
+end
+
+def fun_l21_n77(x)
+ if (x < 1)
+ fun_l22_n292(x)
+ else
+ fun_l22_n866(x)
+ end
+end
+
+def fun_l21_n78(x)
+ if (x < 1)
+ fun_l22_n822(x)
+ else
+ fun_l22_n838(x)
+ end
+end
+
+def fun_l21_n79(x)
+ if (x < 1)
+ fun_l22_n297(x)
+ else
+ fun_l22_n677(x)
+ end
+end
+
+def fun_l21_n80(x)
+ if (x < 1)
+ fun_l22_n540(x)
+ else
+ fun_l22_n975(x)
+ end
+end
+
+def fun_l21_n81(x)
+ if (x < 1)
+ fun_l22_n375(x)
+ else
+ fun_l22_n735(x)
+ end
+end
+
+def fun_l21_n82(x)
+ if (x < 1)
+ fun_l22_n549(x)
+ else
+ fun_l22_n844(x)
+ end
+end
+
+def fun_l21_n83(x)
+ if (x < 1)
+ fun_l22_n763(x)
+ else
+ fun_l22_n863(x)
+ end
+end
+
+def fun_l21_n84(x)
+ if (x < 1)
+ fun_l22_n993(x)
+ else
+ fun_l22_n155(x)
+ end
+end
+
+def fun_l21_n85(x)
+ if (x < 1)
+ fun_l22_n751(x)
+ else
+ fun_l22_n264(x)
+ end
+end
+
+def fun_l21_n86(x)
+ if (x < 1)
+ fun_l22_n517(x)
+ else
+ fun_l22_n752(x)
+ end
+end
+
+def fun_l21_n87(x)
+ if (x < 1)
+ fun_l22_n477(x)
+ else
+ fun_l22_n486(x)
+ end
+end
+
+def fun_l21_n88(x)
+ if (x < 1)
+ fun_l22_n220(x)
+ else
+ fun_l22_n4(x)
+ end
+end
+
+def fun_l21_n89(x)
+ if (x < 1)
+ fun_l22_n678(x)
+ else
+ fun_l22_n692(x)
+ end
+end
+
+def fun_l21_n90(x)
+ if (x < 1)
+ fun_l22_n75(x)
+ else
+ fun_l22_n306(x)
+ end
+end
+
+def fun_l21_n91(x)
+ if (x < 1)
+ fun_l22_n460(x)
+ else
+ fun_l22_n514(x)
+ end
+end
+
+def fun_l21_n92(x)
+ if (x < 1)
+ fun_l22_n446(x)
+ else
+ fun_l22_n201(x)
+ end
+end
+
+def fun_l21_n93(x)
+ if (x < 1)
+ fun_l22_n872(x)
+ else
+ fun_l22_n611(x)
+ end
+end
+
+def fun_l21_n94(x)
+ if (x < 1)
+ fun_l22_n809(x)
+ else
+ fun_l22_n91(x)
+ end
+end
+
+def fun_l21_n95(x)
+ if (x < 1)
+ fun_l22_n565(x)
+ else
+ fun_l22_n968(x)
+ end
+end
+
+def fun_l21_n96(x)
+ if (x < 1)
+ fun_l22_n765(x)
+ else
+ fun_l22_n622(x)
+ end
+end
+
+def fun_l21_n97(x)
+ if (x < 1)
+ fun_l22_n856(x)
+ else
+ fun_l22_n923(x)
+ end
+end
+
+def fun_l21_n98(x)
+ if (x < 1)
+ fun_l22_n14(x)
+ else
+ fun_l22_n742(x)
+ end
+end
+
+def fun_l21_n99(x)
+ if (x < 1)
+ fun_l22_n214(x)
+ else
+ fun_l22_n118(x)
+ end
+end
+
+def fun_l21_n100(x)
+ if (x < 1)
+ fun_l22_n992(x)
+ else
+ fun_l22_n610(x)
+ end
+end
+
+def fun_l21_n101(x)
+ if (x < 1)
+ fun_l22_n603(x)
+ else
+ fun_l22_n208(x)
+ end
+end
+
+def fun_l21_n102(x)
+ if (x < 1)
+ fun_l22_n647(x)
+ else
+ fun_l22_n753(x)
+ end
+end
+
+def fun_l21_n103(x)
+ if (x < 1)
+ fun_l22_n952(x)
+ else
+ fun_l22_n25(x)
+ end
+end
+
+def fun_l21_n104(x)
+ if (x < 1)
+ fun_l22_n635(x)
+ else
+ fun_l22_n381(x)
+ end
+end
+
+def fun_l21_n105(x)
+ if (x < 1)
+ fun_l22_n258(x)
+ else
+ fun_l22_n346(x)
+ end
+end
+
+def fun_l21_n106(x)
+ if (x < 1)
+ fun_l22_n732(x)
+ else
+ fun_l22_n851(x)
+ end
+end
+
+def fun_l21_n107(x)
+ if (x < 1)
+ fun_l22_n67(x)
+ else
+ fun_l22_n80(x)
+ end
+end
+
+def fun_l21_n108(x)
+ if (x < 1)
+ fun_l22_n237(x)
+ else
+ fun_l22_n600(x)
+ end
+end
+
+def fun_l21_n109(x)
+ if (x < 1)
+ fun_l22_n448(x)
+ else
+ fun_l22_n768(x)
+ end
+end
+
+def fun_l21_n110(x)
+ if (x < 1)
+ fun_l22_n52(x)
+ else
+ fun_l22_n849(x)
+ end
+end
+
+def fun_l21_n111(x)
+ if (x < 1)
+ fun_l22_n471(x)
+ else
+ fun_l22_n400(x)
+ end
+end
+
+def fun_l21_n112(x)
+ if (x < 1)
+ fun_l22_n655(x)
+ else
+ fun_l22_n691(x)
+ end
+end
+
+def fun_l21_n113(x)
+ if (x < 1)
+ fun_l22_n325(x)
+ else
+ fun_l22_n936(x)
+ end
+end
+
+def fun_l21_n114(x)
+ if (x < 1)
+ fun_l22_n693(x)
+ else
+ fun_l22_n118(x)
+ end
+end
+
+def fun_l21_n115(x)
+ if (x < 1)
+ fun_l22_n881(x)
+ else
+ fun_l22_n167(x)
+ end
+end
+
+def fun_l21_n116(x)
+ if (x < 1)
+ fun_l22_n958(x)
+ else
+ fun_l22_n36(x)
+ end
+end
+
+def fun_l21_n117(x)
+ if (x < 1)
+ fun_l22_n233(x)
+ else
+ fun_l22_n649(x)
+ end
+end
+
+def fun_l21_n118(x)
+ if (x < 1)
+ fun_l22_n847(x)
+ else
+ fun_l22_n544(x)
+ end
+end
+
+def fun_l21_n119(x)
+ if (x < 1)
+ fun_l22_n392(x)
+ else
+ fun_l22_n2(x)
+ end
+end
+
+def fun_l21_n120(x)
+ if (x < 1)
+ fun_l22_n750(x)
+ else
+ fun_l22_n481(x)
+ end
+end
+
+def fun_l21_n121(x)
+ if (x < 1)
+ fun_l22_n124(x)
+ else
+ fun_l22_n769(x)
+ end
+end
+
+def fun_l21_n122(x)
+ if (x < 1)
+ fun_l22_n483(x)
+ else
+ fun_l22_n147(x)
+ end
+end
+
+def fun_l21_n123(x)
+ if (x < 1)
+ fun_l22_n543(x)
+ else
+ fun_l22_n454(x)
+ end
+end
+
+def fun_l21_n124(x)
+ if (x < 1)
+ fun_l22_n24(x)
+ else
+ fun_l22_n815(x)
+ end
+end
+
+def fun_l21_n125(x)
+ if (x < 1)
+ fun_l22_n315(x)
+ else
+ fun_l22_n263(x)
+ end
+end
+
+def fun_l21_n126(x)
+ if (x < 1)
+ fun_l22_n934(x)
+ else
+ fun_l22_n351(x)
+ end
+end
+
+def fun_l21_n127(x)
+ if (x < 1)
+ fun_l22_n982(x)
+ else
+ fun_l22_n755(x)
+ end
+end
+
+def fun_l21_n128(x)
+ if (x < 1)
+ fun_l22_n146(x)
+ else
+ fun_l22_n345(x)
+ end
+end
+
+def fun_l21_n129(x)
+ if (x < 1)
+ fun_l22_n85(x)
+ else
+ fun_l22_n356(x)
+ end
+end
+
+def fun_l21_n130(x)
+ if (x < 1)
+ fun_l22_n987(x)
+ else
+ fun_l22_n103(x)
+ end
+end
+
+def fun_l21_n131(x)
+ if (x < 1)
+ fun_l22_n413(x)
+ else
+ fun_l22_n260(x)
+ end
+end
+
+def fun_l21_n132(x)
+ if (x < 1)
+ fun_l22_n615(x)
+ else
+ fun_l22_n742(x)
+ end
+end
+
+def fun_l21_n133(x)
+ if (x < 1)
+ fun_l22_n836(x)
+ else
+ fun_l22_n214(x)
+ end
+end
+
+def fun_l21_n134(x)
+ if (x < 1)
+ fun_l22_n85(x)
+ else
+ fun_l22_n916(x)
+ end
+end
+
+def fun_l21_n135(x)
+ if (x < 1)
+ fun_l22_n21(x)
+ else
+ fun_l22_n902(x)
+ end
+end
+
+def fun_l21_n136(x)
+ if (x < 1)
+ fun_l22_n842(x)
+ else
+ fun_l22_n475(x)
+ end
+end
+
+def fun_l21_n137(x)
+ if (x < 1)
+ fun_l22_n573(x)
+ else
+ fun_l22_n108(x)
+ end
+end
+
+def fun_l21_n138(x)
+ if (x < 1)
+ fun_l22_n394(x)
+ else
+ fun_l22_n783(x)
+ end
+end
+
+def fun_l21_n139(x)
+ if (x < 1)
+ fun_l22_n514(x)
+ else
+ fun_l22_n37(x)
+ end
+end
+
+def fun_l21_n140(x)
+ if (x < 1)
+ fun_l22_n358(x)
+ else
+ fun_l22_n768(x)
+ end
+end
+
+def fun_l21_n141(x)
+ if (x < 1)
+ fun_l22_n201(x)
+ else
+ fun_l22_n981(x)
+ end
+end
+
+def fun_l21_n142(x)
+ if (x < 1)
+ fun_l22_n371(x)
+ else
+ fun_l22_n66(x)
+ end
+end
+
+def fun_l21_n143(x)
+ if (x < 1)
+ fun_l22_n41(x)
+ else
+ fun_l22_n869(x)
+ end
+end
+
+def fun_l21_n144(x)
+ if (x < 1)
+ fun_l22_n961(x)
+ else
+ fun_l22_n488(x)
+ end
+end
+
+def fun_l21_n145(x)
+ if (x < 1)
+ fun_l22_n769(x)
+ else
+ fun_l22_n82(x)
+ end
+end
+
+def fun_l21_n146(x)
+ if (x < 1)
+ fun_l22_n700(x)
+ else
+ fun_l22_n276(x)
+ end
+end
+
+def fun_l21_n147(x)
+ if (x < 1)
+ fun_l22_n439(x)
+ else
+ fun_l22_n654(x)
+ end
+end
+
+def fun_l21_n148(x)
+ if (x < 1)
+ fun_l22_n130(x)
+ else
+ fun_l22_n825(x)
+ end
+end
+
+def fun_l21_n149(x)
+ if (x < 1)
+ fun_l22_n174(x)
+ else
+ fun_l22_n907(x)
+ end
+end
+
+def fun_l21_n150(x)
+ if (x < 1)
+ fun_l22_n386(x)
+ else
+ fun_l22_n760(x)
+ end
+end
+
+def fun_l21_n151(x)
+ if (x < 1)
+ fun_l22_n460(x)
+ else
+ fun_l22_n403(x)
+ end
+end
+
+def fun_l21_n152(x)
+ if (x < 1)
+ fun_l22_n861(x)
+ else
+ fun_l22_n832(x)
+ end
+end
+
+def fun_l21_n153(x)
+ if (x < 1)
+ fun_l22_n564(x)
+ else
+ fun_l22_n604(x)
+ end
+end
+
+def fun_l21_n154(x)
+ if (x < 1)
+ fun_l22_n402(x)
+ else
+ fun_l22_n999(x)
+ end
+end
+
+def fun_l21_n155(x)
+ if (x < 1)
+ fun_l22_n645(x)
+ else
+ fun_l22_n807(x)
+ end
+end
+
+def fun_l21_n156(x)
+ if (x < 1)
+ fun_l22_n709(x)
+ else
+ fun_l22_n930(x)
+ end
+end
+
+def fun_l21_n157(x)
+ if (x < 1)
+ fun_l22_n353(x)
+ else
+ fun_l22_n462(x)
+ end
+end
+
+def fun_l21_n158(x)
+ if (x < 1)
+ fun_l22_n697(x)
+ else
+ fun_l22_n463(x)
+ end
+end
+
+def fun_l21_n159(x)
+ if (x < 1)
+ fun_l22_n690(x)
+ else
+ fun_l22_n309(x)
+ end
+end
+
+def fun_l21_n160(x)
+ if (x < 1)
+ fun_l22_n889(x)
+ else
+ fun_l22_n326(x)
+ end
+end
+
+def fun_l21_n161(x)
+ if (x < 1)
+ fun_l22_n952(x)
+ else
+ fun_l22_n225(x)
+ end
+end
+
+def fun_l21_n162(x)
+ if (x < 1)
+ fun_l22_n345(x)
+ else
+ fun_l22_n168(x)
+ end
+end
+
+def fun_l21_n163(x)
+ if (x < 1)
+ fun_l22_n437(x)
+ else
+ fun_l22_n494(x)
+ end
+end
+
+def fun_l21_n164(x)
+ if (x < 1)
+ fun_l22_n151(x)
+ else
+ fun_l22_n846(x)
+ end
+end
+
+def fun_l21_n165(x)
+ if (x < 1)
+ fun_l22_n324(x)
+ else
+ fun_l22_n999(x)
+ end
+end
+
+def fun_l21_n166(x)
+ if (x < 1)
+ fun_l22_n232(x)
+ else
+ fun_l22_n473(x)
+ end
+end
+
+def fun_l21_n167(x)
+ if (x < 1)
+ fun_l22_n934(x)
+ else
+ fun_l22_n437(x)
+ end
+end
+
+def fun_l21_n168(x)
+ if (x < 1)
+ fun_l22_n738(x)
+ else
+ fun_l22_n410(x)
+ end
+end
+
+def fun_l21_n169(x)
+ if (x < 1)
+ fun_l22_n686(x)
+ else
+ fun_l22_n108(x)
+ end
+end
+
+def fun_l21_n170(x)
+ if (x < 1)
+ fun_l22_n595(x)
+ else
+ fun_l22_n935(x)
+ end
+end
+
+def fun_l21_n171(x)
+ if (x < 1)
+ fun_l22_n723(x)
+ else
+ fun_l22_n478(x)
+ end
+end
+
+def fun_l21_n172(x)
+ if (x < 1)
+ fun_l22_n610(x)
+ else
+ fun_l22_n709(x)
+ end
+end
+
+def fun_l21_n173(x)
+ if (x < 1)
+ fun_l22_n539(x)
+ else
+ fun_l22_n17(x)
+ end
+end
+
+def fun_l21_n174(x)
+ if (x < 1)
+ fun_l22_n612(x)
+ else
+ fun_l22_n235(x)
+ end
+end
+
+def fun_l21_n175(x)
+ if (x < 1)
+ fun_l22_n835(x)
+ else
+ fun_l22_n138(x)
+ end
+end
+
+def fun_l21_n176(x)
+ if (x < 1)
+ fun_l22_n997(x)
+ else
+ fun_l22_n123(x)
+ end
+end
+
+def fun_l21_n177(x)
+ if (x < 1)
+ fun_l22_n97(x)
+ else
+ fun_l22_n997(x)
+ end
+end
+
+def fun_l21_n178(x)
+ if (x < 1)
+ fun_l22_n842(x)
+ else
+ fun_l22_n925(x)
+ end
+end
+
+def fun_l21_n179(x)
+ if (x < 1)
+ fun_l22_n159(x)
+ else
+ fun_l22_n412(x)
+ end
+end
+
+def fun_l21_n180(x)
+ if (x < 1)
+ fun_l22_n109(x)
+ else
+ fun_l22_n691(x)
+ end
+end
+
+def fun_l21_n181(x)
+ if (x < 1)
+ fun_l22_n315(x)
+ else
+ fun_l22_n127(x)
+ end
+end
+
+def fun_l21_n182(x)
+ if (x < 1)
+ fun_l22_n220(x)
+ else
+ fun_l22_n143(x)
+ end
+end
+
+def fun_l21_n183(x)
+ if (x < 1)
+ fun_l22_n493(x)
+ else
+ fun_l22_n895(x)
+ end
+end
+
+def fun_l21_n184(x)
+ if (x < 1)
+ fun_l22_n667(x)
+ else
+ fun_l22_n675(x)
+ end
+end
+
+def fun_l21_n185(x)
+ if (x < 1)
+ fun_l22_n995(x)
+ else
+ fun_l22_n4(x)
+ end
+end
+
+def fun_l21_n186(x)
+ if (x < 1)
+ fun_l22_n210(x)
+ else
+ fun_l22_n690(x)
+ end
+end
+
+def fun_l21_n187(x)
+ if (x < 1)
+ fun_l22_n413(x)
+ else
+ fun_l22_n227(x)
+ end
+end
+
+def fun_l21_n188(x)
+ if (x < 1)
+ fun_l22_n562(x)
+ else
+ fun_l22_n591(x)
+ end
+end
+
+def fun_l21_n189(x)
+ if (x < 1)
+ fun_l22_n171(x)
+ else
+ fun_l22_n891(x)
+ end
+end
+
+def fun_l21_n190(x)
+ if (x < 1)
+ fun_l22_n207(x)
+ else
+ fun_l22_n401(x)
+ end
+end
+
+def fun_l21_n191(x)
+ if (x < 1)
+ fun_l22_n703(x)
+ else
+ fun_l22_n604(x)
+ end
+end
+
+def fun_l21_n192(x)
+ if (x < 1)
+ fun_l22_n772(x)
+ else
+ fun_l22_n321(x)
+ end
+end
+
+def fun_l21_n193(x)
+ if (x < 1)
+ fun_l22_n576(x)
+ else
+ fun_l22_n273(x)
+ end
+end
+
+def fun_l21_n194(x)
+ if (x < 1)
+ fun_l22_n897(x)
+ else
+ fun_l22_n624(x)
+ end
+end
+
+def fun_l21_n195(x)
+ if (x < 1)
+ fun_l22_n909(x)
+ else
+ fun_l22_n216(x)
+ end
+end
+
+def fun_l21_n196(x)
+ if (x < 1)
+ fun_l22_n904(x)
+ else
+ fun_l22_n618(x)
+ end
+end
+
+def fun_l21_n197(x)
+ if (x < 1)
+ fun_l22_n410(x)
+ else
+ fun_l22_n926(x)
+ end
+end
+
+def fun_l21_n198(x)
+ if (x < 1)
+ fun_l22_n884(x)
+ else
+ fun_l22_n174(x)
+ end
+end
+
+def fun_l21_n199(x)
+ if (x < 1)
+ fun_l22_n407(x)
+ else
+ fun_l22_n270(x)
+ end
+end
+
+def fun_l21_n200(x)
+ if (x < 1)
+ fun_l22_n741(x)
+ else
+ fun_l22_n2(x)
+ end
+end
+
+def fun_l21_n201(x)
+ if (x < 1)
+ fun_l22_n143(x)
+ else
+ fun_l22_n93(x)
+ end
+end
+
+def fun_l21_n202(x)
+ if (x < 1)
+ fun_l22_n397(x)
+ else
+ fun_l22_n424(x)
+ end
+end
+
+def fun_l21_n203(x)
+ if (x < 1)
+ fun_l22_n183(x)
+ else
+ fun_l22_n258(x)
+ end
+end
+
+def fun_l21_n204(x)
+ if (x < 1)
+ fun_l22_n12(x)
+ else
+ fun_l22_n50(x)
+ end
+end
+
+def fun_l21_n205(x)
+ if (x < 1)
+ fun_l22_n488(x)
+ else
+ fun_l22_n148(x)
+ end
+end
+
+def fun_l21_n206(x)
+ if (x < 1)
+ fun_l22_n516(x)
+ else
+ fun_l22_n87(x)
+ end
+end
+
+def fun_l21_n207(x)
+ if (x < 1)
+ fun_l22_n810(x)
+ else
+ fun_l22_n773(x)
+ end
+end
+
+def fun_l21_n208(x)
+ if (x < 1)
+ fun_l22_n508(x)
+ else
+ fun_l22_n898(x)
+ end
+end
+
+def fun_l21_n209(x)
+ if (x < 1)
+ fun_l22_n188(x)
+ else
+ fun_l22_n815(x)
+ end
+end
+
+def fun_l21_n210(x)
+ if (x < 1)
+ fun_l22_n86(x)
+ else
+ fun_l22_n615(x)
+ end
+end
+
+def fun_l21_n211(x)
+ if (x < 1)
+ fun_l22_n589(x)
+ else
+ fun_l22_n774(x)
+ end
+end
+
+def fun_l21_n212(x)
+ if (x < 1)
+ fun_l22_n926(x)
+ else
+ fun_l22_n14(x)
+ end
+end
+
+def fun_l21_n213(x)
+ if (x < 1)
+ fun_l22_n104(x)
+ else
+ fun_l22_n723(x)
+ end
+end
+
+def fun_l21_n214(x)
+ if (x < 1)
+ fun_l22_n699(x)
+ else
+ fun_l22_n775(x)
+ end
+end
+
+def fun_l21_n215(x)
+ if (x < 1)
+ fun_l22_n941(x)
+ else
+ fun_l22_n997(x)
+ end
+end
+
+def fun_l21_n216(x)
+ if (x < 1)
+ fun_l22_n182(x)
+ else
+ fun_l22_n409(x)
+ end
+end
+
+def fun_l21_n217(x)
+ if (x < 1)
+ fun_l22_n410(x)
+ else
+ fun_l22_n807(x)
+ end
+end
+
+def fun_l21_n218(x)
+ if (x < 1)
+ fun_l22_n787(x)
+ else
+ fun_l22_n143(x)
+ end
+end
+
+def fun_l21_n219(x)
+ if (x < 1)
+ fun_l22_n515(x)
+ else
+ fun_l22_n558(x)
+ end
+end
+
+def fun_l21_n220(x)
+ if (x < 1)
+ fun_l22_n22(x)
+ else
+ fun_l22_n37(x)
+ end
+end
+
+def fun_l21_n221(x)
+ if (x < 1)
+ fun_l22_n366(x)
+ else
+ fun_l22_n63(x)
+ end
+end
+
+def fun_l21_n222(x)
+ if (x < 1)
+ fun_l22_n846(x)
+ else
+ fun_l22_n655(x)
+ end
+end
+
+def fun_l21_n223(x)
+ if (x < 1)
+ fun_l22_n946(x)
+ else
+ fun_l22_n587(x)
+ end
+end
+
+def fun_l21_n224(x)
+ if (x < 1)
+ fun_l22_n841(x)
+ else
+ fun_l22_n874(x)
+ end
+end
+
+def fun_l21_n225(x)
+ if (x < 1)
+ fun_l22_n19(x)
+ else
+ fun_l22_n142(x)
+ end
+end
+
+def fun_l21_n226(x)
+ if (x < 1)
+ fun_l22_n939(x)
+ else
+ fun_l22_n214(x)
+ end
+end
+
+def fun_l21_n227(x)
+ if (x < 1)
+ fun_l22_n900(x)
+ else
+ fun_l22_n673(x)
+ end
+end
+
+def fun_l21_n228(x)
+ if (x < 1)
+ fun_l22_n784(x)
+ else
+ fun_l22_n258(x)
+ end
+end
+
+def fun_l21_n229(x)
+ if (x < 1)
+ fun_l22_n553(x)
+ else
+ fun_l22_n253(x)
+ end
+end
+
+def fun_l21_n230(x)
+ if (x < 1)
+ fun_l22_n927(x)
+ else
+ fun_l22_n9(x)
+ end
+end
+
+def fun_l21_n231(x)
+ if (x < 1)
+ fun_l22_n822(x)
+ else
+ fun_l22_n870(x)
+ end
+end
+
+def fun_l21_n232(x)
+ if (x < 1)
+ fun_l22_n741(x)
+ else
+ fun_l22_n185(x)
+ end
+end
+
+def fun_l21_n233(x)
+ if (x < 1)
+ fun_l22_n691(x)
+ else
+ fun_l22_n613(x)
+ end
+end
+
+def fun_l21_n234(x)
+ if (x < 1)
+ fun_l22_n995(x)
+ else
+ fun_l22_n73(x)
+ end
+end
+
+def fun_l21_n235(x)
+ if (x < 1)
+ fun_l22_n250(x)
+ else
+ fun_l22_n356(x)
+ end
+end
+
+def fun_l21_n236(x)
+ if (x < 1)
+ fun_l22_n531(x)
+ else
+ fun_l22_n335(x)
+ end
+end
+
+def fun_l21_n237(x)
+ if (x < 1)
+ fun_l22_n376(x)
+ else
+ fun_l22_n732(x)
+ end
+end
+
+def fun_l21_n238(x)
+ if (x < 1)
+ fun_l22_n293(x)
+ else
+ fun_l22_n886(x)
+ end
+end
+
+def fun_l21_n239(x)
+ if (x < 1)
+ fun_l22_n266(x)
+ else
+ fun_l22_n820(x)
+ end
+end
+
+def fun_l21_n240(x)
+ if (x < 1)
+ fun_l22_n450(x)
+ else
+ fun_l22_n418(x)
+ end
+end
+
+def fun_l21_n241(x)
+ if (x < 1)
+ fun_l22_n902(x)
+ else
+ fun_l22_n991(x)
+ end
+end
+
+def fun_l21_n242(x)
+ if (x < 1)
+ fun_l22_n521(x)
+ else
+ fun_l22_n516(x)
+ end
+end
+
+def fun_l21_n243(x)
+ if (x < 1)
+ fun_l22_n97(x)
+ else
+ fun_l22_n388(x)
+ end
+end
+
+def fun_l21_n244(x)
+ if (x < 1)
+ fun_l22_n596(x)
+ else
+ fun_l22_n758(x)
+ end
+end
+
+def fun_l21_n245(x)
+ if (x < 1)
+ fun_l22_n370(x)
+ else
+ fun_l22_n747(x)
+ end
+end
+
+def fun_l21_n246(x)
+ if (x < 1)
+ fun_l22_n73(x)
+ else
+ fun_l22_n84(x)
+ end
+end
+
+def fun_l21_n247(x)
+ if (x < 1)
+ fun_l22_n489(x)
+ else
+ fun_l22_n166(x)
+ end
+end
+
+def fun_l21_n248(x)
+ if (x < 1)
+ fun_l22_n419(x)
+ else
+ fun_l22_n698(x)
+ end
+end
+
+def fun_l21_n249(x)
+ if (x < 1)
+ fun_l22_n330(x)
+ else
+ fun_l22_n995(x)
+ end
+end
+
+def fun_l21_n250(x)
+ if (x < 1)
+ fun_l22_n443(x)
+ else
+ fun_l22_n341(x)
+ end
+end
+
+def fun_l21_n251(x)
+ if (x < 1)
+ fun_l22_n442(x)
+ else
+ fun_l22_n311(x)
+ end
+end
+
+def fun_l21_n252(x)
+ if (x < 1)
+ fun_l22_n60(x)
+ else
+ fun_l22_n399(x)
+ end
+end
+
+def fun_l21_n253(x)
+ if (x < 1)
+ fun_l22_n831(x)
+ else
+ fun_l22_n245(x)
+ end
+end
+
+def fun_l21_n254(x)
+ if (x < 1)
+ fun_l22_n946(x)
+ else
+ fun_l22_n205(x)
+ end
+end
+
+def fun_l21_n255(x)
+ if (x < 1)
+ fun_l22_n499(x)
+ else
+ fun_l22_n476(x)
+ end
+end
+
+def fun_l21_n256(x)
+ if (x < 1)
+ fun_l22_n841(x)
+ else
+ fun_l22_n70(x)
+ end
+end
+
+def fun_l21_n257(x)
+ if (x < 1)
+ fun_l22_n289(x)
+ else
+ fun_l22_n329(x)
+ end
+end
+
+def fun_l21_n258(x)
+ if (x < 1)
+ fun_l22_n149(x)
+ else
+ fun_l22_n270(x)
+ end
+end
+
+def fun_l21_n259(x)
+ if (x < 1)
+ fun_l22_n569(x)
+ else
+ fun_l22_n972(x)
+ end
+end
+
+def fun_l21_n260(x)
+ if (x < 1)
+ fun_l22_n313(x)
+ else
+ fun_l22_n573(x)
+ end
+end
+
+def fun_l21_n261(x)
+ if (x < 1)
+ fun_l22_n458(x)
+ else
+ fun_l22_n964(x)
+ end
+end
+
+def fun_l21_n262(x)
+ if (x < 1)
+ fun_l22_n308(x)
+ else
+ fun_l22_n825(x)
+ end
+end
+
+def fun_l21_n263(x)
+ if (x < 1)
+ fun_l22_n810(x)
+ else
+ fun_l22_n864(x)
+ end
+end
+
+def fun_l21_n264(x)
+ if (x < 1)
+ fun_l22_n52(x)
+ else
+ fun_l22_n486(x)
+ end
+end
+
+def fun_l21_n265(x)
+ if (x < 1)
+ fun_l22_n520(x)
+ else
+ fun_l22_n758(x)
+ end
+end
+
+def fun_l21_n266(x)
+ if (x < 1)
+ fun_l22_n954(x)
+ else
+ fun_l22_n819(x)
+ end
+end
+
+def fun_l21_n267(x)
+ if (x < 1)
+ fun_l22_n226(x)
+ else
+ fun_l22_n893(x)
+ end
+end
+
+def fun_l21_n268(x)
+ if (x < 1)
+ fun_l22_n854(x)
+ else
+ fun_l22_n281(x)
+ end
+end
+
+def fun_l21_n269(x)
+ if (x < 1)
+ fun_l22_n354(x)
+ else
+ fun_l22_n296(x)
+ end
+end
+
+def fun_l21_n270(x)
+ if (x < 1)
+ fun_l22_n970(x)
+ else
+ fun_l22_n898(x)
+ end
+end
+
+def fun_l21_n271(x)
+ if (x < 1)
+ fun_l22_n769(x)
+ else
+ fun_l22_n94(x)
+ end
+end
+
+def fun_l21_n272(x)
+ if (x < 1)
+ fun_l22_n100(x)
+ else
+ fun_l22_n830(x)
+ end
+end
+
+def fun_l21_n273(x)
+ if (x < 1)
+ fun_l22_n514(x)
+ else
+ fun_l22_n522(x)
+ end
+end
+
+def fun_l21_n274(x)
+ if (x < 1)
+ fun_l22_n897(x)
+ else
+ fun_l22_n260(x)
+ end
+end
+
+def fun_l21_n275(x)
+ if (x < 1)
+ fun_l22_n834(x)
+ else
+ fun_l22_n125(x)
+ end
+end
+
+def fun_l21_n276(x)
+ if (x < 1)
+ fun_l22_n262(x)
+ else
+ fun_l22_n617(x)
+ end
+end
+
+def fun_l21_n277(x)
+ if (x < 1)
+ fun_l22_n84(x)
+ else
+ fun_l22_n483(x)
+ end
+end
+
+def fun_l21_n278(x)
+ if (x < 1)
+ fun_l22_n657(x)
+ else
+ fun_l22_n10(x)
+ end
+end
+
+def fun_l21_n279(x)
+ if (x < 1)
+ fun_l22_n142(x)
+ else
+ fun_l22_n666(x)
+ end
+end
+
+def fun_l21_n280(x)
+ if (x < 1)
+ fun_l22_n824(x)
+ else
+ fun_l22_n408(x)
+ end
+end
+
+def fun_l21_n281(x)
+ if (x < 1)
+ fun_l22_n39(x)
+ else
+ fun_l22_n225(x)
+ end
+end
+
+def fun_l21_n282(x)
+ if (x < 1)
+ fun_l22_n93(x)
+ else
+ fun_l22_n410(x)
+ end
+end
+
+def fun_l21_n283(x)
+ if (x < 1)
+ fun_l22_n294(x)
+ else
+ fun_l22_n268(x)
+ end
+end
+
+def fun_l21_n284(x)
+ if (x < 1)
+ fun_l22_n636(x)
+ else
+ fun_l22_n767(x)
+ end
+end
+
+def fun_l21_n285(x)
+ if (x < 1)
+ fun_l22_n181(x)
+ else
+ fun_l22_n317(x)
+ end
+end
+
+def fun_l21_n286(x)
+ if (x < 1)
+ fun_l22_n208(x)
+ else
+ fun_l22_n803(x)
+ end
+end
+
+def fun_l21_n287(x)
+ if (x < 1)
+ fun_l22_n910(x)
+ else
+ fun_l22_n872(x)
+ end
+end
+
+def fun_l21_n288(x)
+ if (x < 1)
+ fun_l22_n771(x)
+ else
+ fun_l22_n858(x)
+ end
+end
+
+def fun_l21_n289(x)
+ if (x < 1)
+ fun_l22_n109(x)
+ else
+ fun_l22_n577(x)
+ end
+end
+
+def fun_l21_n290(x)
+ if (x < 1)
+ fun_l22_n474(x)
+ else
+ fun_l22_n289(x)
+ end
+end
+
+def fun_l21_n291(x)
+ if (x < 1)
+ fun_l22_n55(x)
+ else
+ fun_l22_n448(x)
+ end
+end
+
+def fun_l21_n292(x)
+ if (x < 1)
+ fun_l22_n644(x)
+ else
+ fun_l22_n958(x)
+ end
+end
+
+def fun_l21_n293(x)
+ if (x < 1)
+ fun_l22_n775(x)
+ else
+ fun_l22_n131(x)
+ end
+end
+
+def fun_l21_n294(x)
+ if (x < 1)
+ fun_l22_n950(x)
+ else
+ fun_l22_n216(x)
+ end
+end
+
+def fun_l21_n295(x)
+ if (x < 1)
+ fun_l22_n258(x)
+ else
+ fun_l22_n919(x)
+ end
+end
+
+def fun_l21_n296(x)
+ if (x < 1)
+ fun_l22_n298(x)
+ else
+ fun_l22_n334(x)
+ end
+end
+
+def fun_l21_n297(x)
+ if (x < 1)
+ fun_l22_n124(x)
+ else
+ fun_l22_n704(x)
+ end
+end
+
+def fun_l21_n298(x)
+ if (x < 1)
+ fun_l22_n526(x)
+ else
+ fun_l22_n139(x)
+ end
+end
+
+def fun_l21_n299(x)
+ if (x < 1)
+ fun_l22_n133(x)
+ else
+ fun_l22_n65(x)
+ end
+end
+
+def fun_l21_n300(x)
+ if (x < 1)
+ fun_l22_n476(x)
+ else
+ fun_l22_n858(x)
+ end
+end
+
+def fun_l21_n301(x)
+ if (x < 1)
+ fun_l22_n23(x)
+ else
+ fun_l22_n391(x)
+ end
+end
+
+def fun_l21_n302(x)
+ if (x < 1)
+ fun_l22_n292(x)
+ else
+ fun_l22_n127(x)
+ end
+end
+
+def fun_l21_n303(x)
+ if (x < 1)
+ fun_l22_n935(x)
+ else
+ fun_l22_n399(x)
+ end
+end
+
+def fun_l21_n304(x)
+ if (x < 1)
+ fun_l22_n110(x)
+ else
+ fun_l22_n904(x)
+ end
+end
+
+def fun_l21_n305(x)
+ if (x < 1)
+ fun_l22_n865(x)
+ else
+ fun_l22_n510(x)
+ end
+end
+
+def fun_l21_n306(x)
+ if (x < 1)
+ fun_l22_n930(x)
+ else
+ fun_l22_n892(x)
+ end
+end
+
+def fun_l21_n307(x)
+ if (x < 1)
+ fun_l22_n701(x)
+ else
+ fun_l22_n172(x)
+ end
+end
+
+def fun_l21_n308(x)
+ if (x < 1)
+ fun_l22_n424(x)
+ else
+ fun_l22_n169(x)
+ end
+end
+
+def fun_l21_n309(x)
+ if (x < 1)
+ fun_l22_n494(x)
+ else
+ fun_l22_n608(x)
+ end
+end
+
+def fun_l21_n310(x)
+ if (x < 1)
+ fun_l22_n862(x)
+ else
+ fun_l22_n54(x)
+ end
+end
+
+def fun_l21_n311(x)
+ if (x < 1)
+ fun_l22_n679(x)
+ else
+ fun_l22_n246(x)
+ end
+end
+
+def fun_l21_n312(x)
+ if (x < 1)
+ fun_l22_n897(x)
+ else
+ fun_l22_n581(x)
+ end
+end
+
+def fun_l21_n313(x)
+ if (x < 1)
+ fun_l22_n788(x)
+ else
+ fun_l22_n32(x)
+ end
+end
+
+def fun_l21_n314(x)
+ if (x < 1)
+ fun_l22_n68(x)
+ else
+ fun_l22_n920(x)
+ end
+end
+
+def fun_l21_n315(x)
+ if (x < 1)
+ fun_l22_n520(x)
+ else
+ fun_l22_n814(x)
+ end
+end
+
+def fun_l21_n316(x)
+ if (x < 1)
+ fun_l22_n190(x)
+ else
+ fun_l22_n832(x)
+ end
+end
+
+def fun_l21_n317(x)
+ if (x < 1)
+ fun_l22_n500(x)
+ else
+ fun_l22_n576(x)
+ end
+end
+
+def fun_l21_n318(x)
+ if (x < 1)
+ fun_l22_n999(x)
+ else
+ fun_l22_n423(x)
+ end
+end
+
+def fun_l21_n319(x)
+ if (x < 1)
+ fun_l22_n62(x)
+ else
+ fun_l22_n451(x)
+ end
+end
+
+def fun_l21_n320(x)
+ if (x < 1)
+ fun_l22_n265(x)
+ else
+ fun_l22_n421(x)
+ end
+end
+
+def fun_l21_n321(x)
+ if (x < 1)
+ fun_l22_n340(x)
+ else
+ fun_l22_n297(x)
+ end
+end
+
+def fun_l21_n322(x)
+ if (x < 1)
+ fun_l22_n526(x)
+ else
+ fun_l22_n834(x)
+ end
+end
+
+def fun_l21_n323(x)
+ if (x < 1)
+ fun_l22_n305(x)
+ else
+ fun_l22_n444(x)
+ end
+end
+
+def fun_l21_n324(x)
+ if (x < 1)
+ fun_l22_n117(x)
+ else
+ fun_l22_n617(x)
+ end
+end
+
+def fun_l21_n325(x)
+ if (x < 1)
+ fun_l22_n715(x)
+ else
+ fun_l22_n551(x)
+ end
+end
+
+def fun_l21_n326(x)
+ if (x < 1)
+ fun_l22_n921(x)
+ else
+ fun_l22_n69(x)
+ end
+end
+
+def fun_l21_n327(x)
+ if (x < 1)
+ fun_l22_n226(x)
+ else
+ fun_l22_n21(x)
+ end
+end
+
+def fun_l21_n328(x)
+ if (x < 1)
+ fun_l22_n181(x)
+ else
+ fun_l22_n409(x)
+ end
+end
+
+def fun_l21_n329(x)
+ if (x < 1)
+ fun_l22_n894(x)
+ else
+ fun_l22_n17(x)
+ end
+end
+
+def fun_l21_n330(x)
+ if (x < 1)
+ fun_l22_n633(x)
+ else
+ fun_l22_n370(x)
+ end
+end
+
+def fun_l21_n331(x)
+ if (x < 1)
+ fun_l22_n638(x)
+ else
+ fun_l22_n994(x)
+ end
+end
+
+def fun_l21_n332(x)
+ if (x < 1)
+ fun_l22_n663(x)
+ else
+ fun_l22_n981(x)
+ end
+end
+
+def fun_l21_n333(x)
+ if (x < 1)
+ fun_l22_n861(x)
+ else
+ fun_l22_n472(x)
+ end
+end
+
+def fun_l21_n334(x)
+ if (x < 1)
+ fun_l22_n265(x)
+ else
+ fun_l22_n534(x)
+ end
+end
+
+def fun_l21_n335(x)
+ if (x < 1)
+ fun_l22_n43(x)
+ else
+ fun_l22_n613(x)
+ end
+end
+
+def fun_l21_n336(x)
+ if (x < 1)
+ fun_l22_n788(x)
+ else
+ fun_l22_n649(x)
+ end
+end
+
+def fun_l21_n337(x)
+ if (x < 1)
+ fun_l22_n406(x)
+ else
+ fun_l22_n644(x)
+ end
+end
+
+def fun_l21_n338(x)
+ if (x < 1)
+ fun_l22_n582(x)
+ else
+ fun_l22_n463(x)
+ end
+end
+
+def fun_l21_n339(x)
+ if (x < 1)
+ fun_l22_n825(x)
+ else
+ fun_l22_n775(x)
+ end
+end
+
+def fun_l21_n340(x)
+ if (x < 1)
+ fun_l22_n696(x)
+ else
+ fun_l22_n318(x)
+ end
+end
+
+def fun_l21_n341(x)
+ if (x < 1)
+ fun_l22_n21(x)
+ else
+ fun_l22_n285(x)
+ end
+end
+
+def fun_l21_n342(x)
+ if (x < 1)
+ fun_l22_n10(x)
+ else
+ fun_l22_n423(x)
+ end
+end
+
+def fun_l21_n343(x)
+ if (x < 1)
+ fun_l22_n205(x)
+ else
+ fun_l22_n86(x)
+ end
+end
+
+def fun_l21_n344(x)
+ if (x < 1)
+ fun_l22_n437(x)
+ else
+ fun_l22_n712(x)
+ end
+end
+
+def fun_l21_n345(x)
+ if (x < 1)
+ fun_l22_n941(x)
+ else
+ fun_l22_n655(x)
+ end
+end
+
+def fun_l21_n346(x)
+ if (x < 1)
+ fun_l22_n673(x)
+ else
+ fun_l22_n750(x)
+ end
+end
+
+def fun_l21_n347(x)
+ if (x < 1)
+ fun_l22_n728(x)
+ else
+ fun_l22_n605(x)
+ end
+end
+
+def fun_l21_n348(x)
+ if (x < 1)
+ fun_l22_n452(x)
+ else
+ fun_l22_n968(x)
+ end
+end
+
+def fun_l21_n349(x)
+ if (x < 1)
+ fun_l22_n554(x)
+ else
+ fun_l22_n997(x)
+ end
+end
+
+def fun_l21_n350(x)
+ if (x < 1)
+ fun_l22_n784(x)
+ else
+ fun_l22_n801(x)
+ end
+end
+
+def fun_l21_n351(x)
+ if (x < 1)
+ fun_l22_n397(x)
+ else
+ fun_l22_n636(x)
+ end
+end
+
+def fun_l21_n352(x)
+ if (x < 1)
+ fun_l22_n562(x)
+ else
+ fun_l22_n150(x)
+ end
+end
+
+def fun_l21_n353(x)
+ if (x < 1)
+ fun_l22_n142(x)
+ else
+ fun_l22_n396(x)
+ end
+end
+
+def fun_l21_n354(x)
+ if (x < 1)
+ fun_l22_n455(x)
+ else
+ fun_l22_n424(x)
+ end
+end
+
+def fun_l21_n355(x)
+ if (x < 1)
+ fun_l22_n736(x)
+ else
+ fun_l22_n534(x)
+ end
+end
+
+def fun_l21_n356(x)
+ if (x < 1)
+ fun_l22_n111(x)
+ else
+ fun_l22_n903(x)
+ end
+end
+
+def fun_l21_n357(x)
+ if (x < 1)
+ fun_l22_n996(x)
+ else
+ fun_l22_n350(x)
+ end
+end
+
+def fun_l21_n358(x)
+ if (x < 1)
+ fun_l22_n516(x)
+ else
+ fun_l22_n202(x)
+ end
+end
+
+def fun_l21_n359(x)
+ if (x < 1)
+ fun_l22_n68(x)
+ else
+ fun_l22_n823(x)
+ end
+end
+
+def fun_l21_n360(x)
+ if (x < 1)
+ fun_l22_n298(x)
+ else
+ fun_l22_n873(x)
+ end
+end
+
+def fun_l21_n361(x)
+ if (x < 1)
+ fun_l22_n491(x)
+ else
+ fun_l22_n86(x)
+ end
+end
+
+def fun_l21_n362(x)
+ if (x < 1)
+ fun_l22_n340(x)
+ else
+ fun_l22_n215(x)
+ end
+end
+
+def fun_l21_n363(x)
+ if (x < 1)
+ fun_l22_n452(x)
+ else
+ fun_l22_n416(x)
+ end
+end
+
+def fun_l21_n364(x)
+ if (x < 1)
+ fun_l22_n625(x)
+ else
+ fun_l22_n638(x)
+ end
+end
+
+def fun_l21_n365(x)
+ if (x < 1)
+ fun_l22_n166(x)
+ else
+ fun_l22_n380(x)
+ end
+end
+
+def fun_l21_n366(x)
+ if (x < 1)
+ fun_l22_n934(x)
+ else
+ fun_l22_n937(x)
+ end
+end
+
+def fun_l21_n367(x)
+ if (x < 1)
+ fun_l22_n77(x)
+ else
+ fun_l22_n117(x)
+ end
+end
+
+def fun_l21_n368(x)
+ if (x < 1)
+ fun_l22_n688(x)
+ else
+ fun_l22_n529(x)
+ end
+end
+
+def fun_l21_n369(x)
+ if (x < 1)
+ fun_l22_n950(x)
+ else
+ fun_l22_n148(x)
+ end
+end
+
+def fun_l21_n370(x)
+ if (x < 1)
+ fun_l22_n216(x)
+ else
+ fun_l22_n588(x)
+ end
+end
+
+def fun_l21_n371(x)
+ if (x < 1)
+ fun_l22_n127(x)
+ else
+ fun_l22_n901(x)
+ end
+end
+
+def fun_l21_n372(x)
+ if (x < 1)
+ fun_l22_n244(x)
+ else
+ fun_l22_n516(x)
+ end
+end
+
+def fun_l21_n373(x)
+ if (x < 1)
+ fun_l22_n791(x)
+ else
+ fun_l22_n466(x)
+ end
+end
+
+def fun_l21_n374(x)
+ if (x < 1)
+ fun_l22_n469(x)
+ else
+ fun_l22_n38(x)
+ end
+end
+
+def fun_l21_n375(x)
+ if (x < 1)
+ fun_l22_n894(x)
+ else
+ fun_l22_n82(x)
+ end
+end
+
+def fun_l21_n376(x)
+ if (x < 1)
+ fun_l22_n663(x)
+ else
+ fun_l22_n865(x)
+ end
+end
+
+def fun_l21_n377(x)
+ if (x < 1)
+ fun_l22_n782(x)
+ else
+ fun_l22_n10(x)
+ end
+end
+
+def fun_l21_n378(x)
+ if (x < 1)
+ fun_l22_n930(x)
+ else
+ fun_l22_n767(x)
+ end
+end
+
+def fun_l21_n379(x)
+ if (x < 1)
+ fun_l22_n130(x)
+ else
+ fun_l22_n437(x)
+ end
+end
+
+def fun_l21_n380(x)
+ if (x < 1)
+ fun_l22_n496(x)
+ else
+ fun_l22_n413(x)
+ end
+end
+
+def fun_l21_n381(x)
+ if (x < 1)
+ fun_l22_n453(x)
+ else
+ fun_l22_n542(x)
+ end
+end
+
+def fun_l21_n382(x)
+ if (x < 1)
+ fun_l22_n404(x)
+ else
+ fun_l22_n637(x)
+ end
+end
+
+def fun_l21_n383(x)
+ if (x < 1)
+ fun_l22_n829(x)
+ else
+ fun_l22_n526(x)
+ end
+end
+
+def fun_l21_n384(x)
+ if (x < 1)
+ fun_l22_n882(x)
+ else
+ fun_l22_n922(x)
+ end
+end
+
+def fun_l21_n385(x)
+ if (x < 1)
+ fun_l22_n58(x)
+ else
+ fun_l22_n401(x)
+ end
+end
+
+def fun_l21_n386(x)
+ if (x < 1)
+ fun_l22_n936(x)
+ else
+ fun_l22_n164(x)
+ end
+end
+
+def fun_l21_n387(x)
+ if (x < 1)
+ fun_l22_n773(x)
+ else
+ fun_l22_n323(x)
+ end
+end
+
+def fun_l21_n388(x)
+ if (x < 1)
+ fun_l22_n718(x)
+ else
+ fun_l22_n189(x)
+ end
+end
+
+def fun_l21_n389(x)
+ if (x < 1)
+ fun_l22_n950(x)
+ else
+ fun_l22_n283(x)
+ end
+end
+
+def fun_l21_n390(x)
+ if (x < 1)
+ fun_l22_n278(x)
+ else
+ fun_l22_n325(x)
+ end
+end
+
+def fun_l21_n391(x)
+ if (x < 1)
+ fun_l22_n98(x)
+ else
+ fun_l22_n162(x)
+ end
+end
+
+def fun_l21_n392(x)
+ if (x < 1)
+ fun_l22_n268(x)
+ else
+ fun_l22_n416(x)
+ end
+end
+
+def fun_l21_n393(x)
+ if (x < 1)
+ fun_l22_n344(x)
+ else
+ fun_l22_n680(x)
+ end
+end
+
+def fun_l21_n394(x)
+ if (x < 1)
+ fun_l22_n545(x)
+ else
+ fun_l22_n41(x)
+ end
+end
+
+def fun_l21_n395(x)
+ if (x < 1)
+ fun_l22_n149(x)
+ else
+ fun_l22_n659(x)
+ end
+end
+
+def fun_l21_n396(x)
+ if (x < 1)
+ fun_l22_n81(x)
+ else
+ fun_l22_n316(x)
+ end
+end
+
+def fun_l21_n397(x)
+ if (x < 1)
+ fun_l22_n657(x)
+ else
+ fun_l22_n414(x)
+ end
+end
+
+def fun_l21_n398(x)
+ if (x < 1)
+ fun_l22_n262(x)
+ else
+ fun_l22_n26(x)
+ end
+end
+
+def fun_l21_n399(x)
+ if (x < 1)
+ fun_l22_n509(x)
+ else
+ fun_l22_n658(x)
+ end
+end
+
+def fun_l21_n400(x)
+ if (x < 1)
+ fun_l22_n533(x)
+ else
+ fun_l22_n416(x)
+ end
+end
+
+def fun_l21_n401(x)
+ if (x < 1)
+ fun_l22_n631(x)
+ else
+ fun_l22_n575(x)
+ end
+end
+
+def fun_l21_n402(x)
+ if (x < 1)
+ fun_l22_n171(x)
+ else
+ fun_l22_n727(x)
+ end
+end
+
+def fun_l21_n403(x)
+ if (x < 1)
+ fun_l22_n65(x)
+ else
+ fun_l22_n109(x)
+ end
+end
+
+def fun_l21_n404(x)
+ if (x < 1)
+ fun_l22_n818(x)
+ else
+ fun_l22_n638(x)
+ end
+end
+
+def fun_l21_n405(x)
+ if (x < 1)
+ fun_l22_n515(x)
+ else
+ fun_l22_n86(x)
+ end
+end
+
+def fun_l21_n406(x)
+ if (x < 1)
+ fun_l22_n500(x)
+ else
+ fun_l22_n367(x)
+ end
+end
+
+def fun_l21_n407(x)
+ if (x < 1)
+ fun_l22_n609(x)
+ else
+ fun_l22_n926(x)
+ end
+end
+
+def fun_l21_n408(x)
+ if (x < 1)
+ fun_l22_n553(x)
+ else
+ fun_l22_n494(x)
+ end
+end
+
+def fun_l21_n409(x)
+ if (x < 1)
+ fun_l22_n837(x)
+ else
+ fun_l22_n800(x)
+ end
+end
+
+def fun_l21_n410(x)
+ if (x < 1)
+ fun_l22_n511(x)
+ else
+ fun_l22_n376(x)
+ end
+end
+
+def fun_l21_n411(x)
+ if (x < 1)
+ fun_l22_n691(x)
+ else
+ fun_l22_n135(x)
+ end
+end
+
+def fun_l21_n412(x)
+ if (x < 1)
+ fun_l22_n537(x)
+ else
+ fun_l22_n708(x)
+ end
+end
+
+def fun_l21_n413(x)
+ if (x < 1)
+ fun_l22_n858(x)
+ else
+ fun_l22_n75(x)
+ end
+end
+
+def fun_l21_n414(x)
+ if (x < 1)
+ fun_l22_n473(x)
+ else
+ fun_l22_n26(x)
+ end
+end
+
+def fun_l21_n415(x)
+ if (x < 1)
+ fun_l22_n443(x)
+ else
+ fun_l22_n709(x)
+ end
+end
+
+def fun_l21_n416(x)
+ if (x < 1)
+ fun_l22_n464(x)
+ else
+ fun_l22_n329(x)
+ end
+end
+
+def fun_l21_n417(x)
+ if (x < 1)
+ fun_l22_n402(x)
+ else
+ fun_l22_n438(x)
+ end
+end
+
+def fun_l21_n418(x)
+ if (x < 1)
+ fun_l22_n741(x)
+ else
+ fun_l22_n704(x)
+ end
+end
+
+def fun_l21_n419(x)
+ if (x < 1)
+ fun_l22_n949(x)
+ else
+ fun_l22_n46(x)
+ end
+end
+
+def fun_l21_n420(x)
+ if (x < 1)
+ fun_l22_n102(x)
+ else
+ fun_l22_n20(x)
+ end
+end
+
+def fun_l21_n421(x)
+ if (x < 1)
+ fun_l22_n834(x)
+ else
+ fun_l22_n876(x)
+ end
+end
+
+def fun_l21_n422(x)
+ if (x < 1)
+ fun_l22_n881(x)
+ else
+ fun_l22_n100(x)
+ end
+end
+
+def fun_l21_n423(x)
+ if (x < 1)
+ fun_l22_n155(x)
+ else
+ fun_l22_n99(x)
+ end
+end
+
+def fun_l21_n424(x)
+ if (x < 1)
+ fun_l22_n913(x)
+ else
+ fun_l22_n839(x)
+ end
+end
+
+def fun_l21_n425(x)
+ if (x < 1)
+ fun_l22_n981(x)
+ else
+ fun_l22_n73(x)
+ end
+end
+
+def fun_l21_n426(x)
+ if (x < 1)
+ fun_l22_n221(x)
+ else
+ fun_l22_n548(x)
+ end
+end
+
+def fun_l21_n427(x)
+ if (x < 1)
+ fun_l22_n563(x)
+ else
+ fun_l22_n978(x)
+ end
+end
+
+def fun_l21_n428(x)
+ if (x < 1)
+ fun_l22_n310(x)
+ else
+ fun_l22_n591(x)
+ end
+end
+
+def fun_l21_n429(x)
+ if (x < 1)
+ fun_l22_n962(x)
+ else
+ fun_l22_n156(x)
+ end
+end
+
+def fun_l21_n430(x)
+ if (x < 1)
+ fun_l22_n810(x)
+ else
+ fun_l22_n766(x)
+ end
+end
+
+def fun_l21_n431(x)
+ if (x < 1)
+ fun_l22_n675(x)
+ else
+ fun_l22_n354(x)
+ end
+end
+
+def fun_l21_n432(x)
+ if (x < 1)
+ fun_l22_n320(x)
+ else
+ fun_l22_n474(x)
+ end
+end
+
+def fun_l21_n433(x)
+ if (x < 1)
+ fun_l22_n50(x)
+ else
+ fun_l22_n626(x)
+ end
+end
+
+def fun_l21_n434(x)
+ if (x < 1)
+ fun_l22_n956(x)
+ else
+ fun_l22_n238(x)
+ end
+end
+
+def fun_l21_n435(x)
+ if (x < 1)
+ fun_l22_n966(x)
+ else
+ fun_l22_n729(x)
+ end
+end
+
+def fun_l21_n436(x)
+ if (x < 1)
+ fun_l22_n856(x)
+ else
+ fun_l22_n553(x)
+ end
+end
+
+def fun_l21_n437(x)
+ if (x < 1)
+ fun_l22_n833(x)
+ else
+ fun_l22_n312(x)
+ end
+end
+
+def fun_l21_n438(x)
+ if (x < 1)
+ fun_l22_n254(x)
+ else
+ fun_l22_n515(x)
+ end
+end
+
+def fun_l21_n439(x)
+ if (x < 1)
+ fun_l22_n548(x)
+ else
+ fun_l22_n184(x)
+ end
+end
+
+def fun_l21_n440(x)
+ if (x < 1)
+ fun_l22_n922(x)
+ else
+ fun_l22_n465(x)
+ end
+end
+
+def fun_l21_n441(x)
+ if (x < 1)
+ fun_l22_n136(x)
+ else
+ fun_l22_n739(x)
+ end
+end
+
+def fun_l21_n442(x)
+ if (x < 1)
+ fun_l22_n4(x)
+ else
+ fun_l22_n359(x)
+ end
+end
+
+def fun_l21_n443(x)
+ if (x < 1)
+ fun_l22_n269(x)
+ else
+ fun_l22_n417(x)
+ end
+end
+
+def fun_l21_n444(x)
+ if (x < 1)
+ fun_l22_n809(x)
+ else
+ fun_l22_n430(x)
+ end
+end
+
+def fun_l21_n445(x)
+ if (x < 1)
+ fun_l22_n428(x)
+ else
+ fun_l22_n55(x)
+ end
+end
+
+def fun_l21_n446(x)
+ if (x < 1)
+ fun_l22_n265(x)
+ else
+ fun_l22_n394(x)
+ end
+end
+
+def fun_l21_n447(x)
+ if (x < 1)
+ fun_l22_n885(x)
+ else
+ fun_l22_n139(x)
+ end
+end
+
+def fun_l21_n448(x)
+ if (x < 1)
+ fun_l22_n219(x)
+ else
+ fun_l22_n578(x)
+ end
+end
+
+def fun_l21_n449(x)
+ if (x < 1)
+ fun_l22_n458(x)
+ else
+ fun_l22_n226(x)
+ end
+end
+
+def fun_l21_n450(x)
+ if (x < 1)
+ fun_l22_n128(x)
+ else
+ fun_l22_n790(x)
+ end
+end
+
+def fun_l21_n451(x)
+ if (x < 1)
+ fun_l22_n134(x)
+ else
+ fun_l22_n471(x)
+ end
+end
+
+def fun_l21_n452(x)
+ if (x < 1)
+ fun_l22_n180(x)
+ else
+ fun_l22_n183(x)
+ end
+end
+
+def fun_l21_n453(x)
+ if (x < 1)
+ fun_l22_n823(x)
+ else
+ fun_l22_n667(x)
+ end
+end
+
+def fun_l21_n454(x)
+ if (x < 1)
+ fun_l22_n324(x)
+ else
+ fun_l22_n487(x)
+ end
+end
+
+def fun_l21_n455(x)
+ if (x < 1)
+ fun_l22_n341(x)
+ else
+ fun_l22_n784(x)
+ end
+end
+
+def fun_l21_n456(x)
+ if (x < 1)
+ fun_l22_n32(x)
+ else
+ fun_l22_n227(x)
+ end
+end
+
+def fun_l21_n457(x)
+ if (x < 1)
+ fun_l22_n567(x)
+ else
+ fun_l22_n774(x)
+ end
+end
+
+def fun_l21_n458(x)
+ if (x < 1)
+ fun_l22_n342(x)
+ else
+ fun_l22_n126(x)
+ end
+end
+
+def fun_l21_n459(x)
+ if (x < 1)
+ fun_l22_n116(x)
+ else
+ fun_l22_n367(x)
+ end
+end
+
+def fun_l21_n460(x)
+ if (x < 1)
+ fun_l22_n864(x)
+ else
+ fun_l22_n618(x)
+ end
+end
+
+def fun_l21_n461(x)
+ if (x < 1)
+ fun_l22_n823(x)
+ else
+ fun_l22_n799(x)
+ end
+end
+
+def fun_l21_n462(x)
+ if (x < 1)
+ fun_l22_n684(x)
+ else
+ fun_l22_n758(x)
+ end
+end
+
+def fun_l21_n463(x)
+ if (x < 1)
+ fun_l22_n662(x)
+ else
+ fun_l22_n514(x)
+ end
+end
+
+def fun_l21_n464(x)
+ if (x < 1)
+ fun_l22_n736(x)
+ else
+ fun_l22_n794(x)
+ end
+end
+
+def fun_l21_n465(x)
+ if (x < 1)
+ fun_l22_n200(x)
+ else
+ fun_l22_n565(x)
+ end
+end
+
+def fun_l21_n466(x)
+ if (x < 1)
+ fun_l22_n787(x)
+ else
+ fun_l22_n835(x)
+ end
+end
+
+def fun_l21_n467(x)
+ if (x < 1)
+ fun_l22_n927(x)
+ else
+ fun_l22_n399(x)
+ end
+end
+
+def fun_l21_n468(x)
+ if (x < 1)
+ fun_l22_n102(x)
+ else
+ fun_l22_n738(x)
+ end
+end
+
+def fun_l21_n469(x)
+ if (x < 1)
+ fun_l22_n833(x)
+ else
+ fun_l22_n917(x)
+ end
+end
+
+def fun_l21_n470(x)
+ if (x < 1)
+ fun_l22_n422(x)
+ else
+ fun_l22_n108(x)
+ end
+end
+
+def fun_l21_n471(x)
+ if (x < 1)
+ fun_l22_n884(x)
+ else
+ fun_l22_n19(x)
+ end
+end
+
+def fun_l21_n472(x)
+ if (x < 1)
+ fun_l22_n849(x)
+ else
+ fun_l22_n251(x)
+ end
+end
+
+def fun_l21_n473(x)
+ if (x < 1)
+ fun_l22_n636(x)
+ else
+ fun_l22_n439(x)
+ end
+end
+
+def fun_l21_n474(x)
+ if (x < 1)
+ fun_l22_n867(x)
+ else
+ fun_l22_n227(x)
+ end
+end
+
+def fun_l21_n475(x)
+ if (x < 1)
+ fun_l22_n809(x)
+ else
+ fun_l22_n548(x)
+ end
+end
+
+def fun_l21_n476(x)
+ if (x < 1)
+ fun_l22_n213(x)
+ else
+ fun_l22_n607(x)
+ end
+end
+
+def fun_l21_n477(x)
+ if (x < 1)
+ fun_l22_n44(x)
+ else
+ fun_l22_n38(x)
+ end
+end
+
+def fun_l21_n478(x)
+ if (x < 1)
+ fun_l22_n400(x)
+ else
+ fun_l22_n436(x)
+ end
+end
+
+def fun_l21_n479(x)
+ if (x < 1)
+ fun_l22_n701(x)
+ else
+ fun_l22_n84(x)
+ end
+end
+
+def fun_l21_n480(x)
+ if (x < 1)
+ fun_l22_n21(x)
+ else
+ fun_l22_n215(x)
+ end
+end
+
+def fun_l21_n481(x)
+ if (x < 1)
+ fun_l22_n27(x)
+ else
+ fun_l22_n198(x)
+ end
+end
+
+def fun_l21_n482(x)
+ if (x < 1)
+ fun_l22_n803(x)
+ else
+ fun_l22_n82(x)
+ end
+end
+
+def fun_l21_n483(x)
+ if (x < 1)
+ fun_l22_n490(x)
+ else
+ fun_l22_n126(x)
+ end
+end
+
+def fun_l21_n484(x)
+ if (x < 1)
+ fun_l22_n348(x)
+ else
+ fun_l22_n586(x)
+ end
+end
+
+def fun_l21_n485(x)
+ if (x < 1)
+ fun_l22_n279(x)
+ else
+ fun_l22_n266(x)
+ end
+end
+
+def fun_l21_n486(x)
+ if (x < 1)
+ fun_l22_n398(x)
+ else
+ fun_l22_n26(x)
+ end
+end
+
+def fun_l21_n487(x)
+ if (x < 1)
+ fun_l22_n529(x)
+ else
+ fun_l22_n972(x)
+ end
+end
+
+def fun_l21_n488(x)
+ if (x < 1)
+ fun_l22_n390(x)
+ else
+ fun_l22_n220(x)
+ end
+end
+
+def fun_l21_n489(x)
+ if (x < 1)
+ fun_l22_n909(x)
+ else
+ fun_l22_n777(x)
+ end
+end
+
+def fun_l21_n490(x)
+ if (x < 1)
+ fun_l22_n797(x)
+ else
+ fun_l22_n643(x)
+ end
+end
+
+def fun_l21_n491(x)
+ if (x < 1)
+ fun_l22_n920(x)
+ else
+ fun_l22_n820(x)
+ end
+end
+
+def fun_l21_n492(x)
+ if (x < 1)
+ fun_l22_n170(x)
+ else
+ fun_l22_n236(x)
+ end
+end
+
+def fun_l21_n493(x)
+ if (x < 1)
+ fun_l22_n352(x)
+ else
+ fun_l22_n147(x)
+ end
+end
+
+def fun_l21_n494(x)
+ if (x < 1)
+ fun_l22_n938(x)
+ else
+ fun_l22_n83(x)
+ end
+end
+
+def fun_l21_n495(x)
+ if (x < 1)
+ fun_l22_n512(x)
+ else
+ fun_l22_n798(x)
+ end
+end
+
+def fun_l21_n496(x)
+ if (x < 1)
+ fun_l22_n254(x)
+ else
+ fun_l22_n827(x)
+ end
+end
+
+def fun_l21_n497(x)
+ if (x < 1)
+ fun_l22_n730(x)
+ else
+ fun_l22_n995(x)
+ end
+end
+
+def fun_l21_n498(x)
+ if (x < 1)
+ fun_l22_n130(x)
+ else
+ fun_l22_n269(x)
+ end
+end
+
+def fun_l21_n499(x)
+ if (x < 1)
+ fun_l22_n275(x)
+ else
+ fun_l22_n176(x)
+ end
+end
+
+def fun_l21_n500(x)
+ if (x < 1)
+ fun_l22_n493(x)
+ else
+ fun_l22_n322(x)
+ end
+end
+
+def fun_l21_n501(x)
+ if (x < 1)
+ fun_l22_n421(x)
+ else
+ fun_l22_n859(x)
+ end
+end
+
+def fun_l21_n502(x)
+ if (x < 1)
+ fun_l22_n611(x)
+ else
+ fun_l22_n727(x)
+ end
+end
+
+def fun_l21_n503(x)
+ if (x < 1)
+ fun_l22_n42(x)
+ else
+ fun_l22_n294(x)
+ end
+end
+
+def fun_l21_n504(x)
+ if (x < 1)
+ fun_l22_n735(x)
+ else
+ fun_l22_n145(x)
+ end
+end
+
+def fun_l21_n505(x)
+ if (x < 1)
+ fun_l22_n865(x)
+ else
+ fun_l22_n225(x)
+ end
+end
+
+def fun_l21_n506(x)
+ if (x < 1)
+ fun_l22_n922(x)
+ else
+ fun_l22_n619(x)
+ end
+end
+
+def fun_l21_n507(x)
+ if (x < 1)
+ fun_l22_n646(x)
+ else
+ fun_l22_n145(x)
+ end
+end
+
+def fun_l21_n508(x)
+ if (x < 1)
+ fun_l22_n608(x)
+ else
+ fun_l22_n320(x)
+ end
+end
+
+def fun_l21_n509(x)
+ if (x < 1)
+ fun_l22_n624(x)
+ else
+ fun_l22_n984(x)
+ end
+end
+
+def fun_l21_n510(x)
+ if (x < 1)
+ fun_l22_n454(x)
+ else
+ fun_l22_n988(x)
+ end
+end
+
+def fun_l21_n511(x)
+ if (x < 1)
+ fun_l22_n593(x)
+ else
+ fun_l22_n796(x)
+ end
+end
+
+def fun_l21_n512(x)
+ if (x < 1)
+ fun_l22_n922(x)
+ else
+ fun_l22_n5(x)
+ end
+end
+
+def fun_l21_n513(x)
+ if (x < 1)
+ fun_l22_n0(x)
+ else
+ fun_l22_n338(x)
+ end
+end
+
+def fun_l21_n514(x)
+ if (x < 1)
+ fun_l22_n454(x)
+ else
+ fun_l22_n743(x)
+ end
+end
+
+def fun_l21_n515(x)
+ if (x < 1)
+ fun_l22_n215(x)
+ else
+ fun_l22_n689(x)
+ end
+end
+
+def fun_l21_n516(x)
+ if (x < 1)
+ fun_l22_n148(x)
+ else
+ fun_l22_n850(x)
+ end
+end
+
+def fun_l21_n517(x)
+ if (x < 1)
+ fun_l22_n466(x)
+ else
+ fun_l22_n529(x)
+ end
+end
+
+def fun_l21_n518(x)
+ if (x < 1)
+ fun_l22_n967(x)
+ else
+ fun_l22_n790(x)
+ end
+end
+
+def fun_l21_n519(x)
+ if (x < 1)
+ fun_l22_n97(x)
+ else
+ fun_l22_n461(x)
+ end
+end
+
+def fun_l21_n520(x)
+ if (x < 1)
+ fun_l22_n106(x)
+ else
+ fun_l22_n41(x)
+ end
+end
+
+def fun_l21_n521(x)
+ if (x < 1)
+ fun_l22_n561(x)
+ else
+ fun_l22_n428(x)
+ end
+end
+
+def fun_l21_n522(x)
+ if (x < 1)
+ fun_l22_n816(x)
+ else
+ fun_l22_n42(x)
+ end
+end
+
+def fun_l21_n523(x)
+ if (x < 1)
+ fun_l22_n229(x)
+ else
+ fun_l22_n720(x)
+ end
+end
+
+def fun_l21_n524(x)
+ if (x < 1)
+ fun_l22_n341(x)
+ else
+ fun_l22_n875(x)
+ end
+end
+
+def fun_l21_n525(x)
+ if (x < 1)
+ fun_l22_n23(x)
+ else
+ fun_l22_n227(x)
+ end
+end
+
+def fun_l21_n526(x)
+ if (x < 1)
+ fun_l22_n230(x)
+ else
+ fun_l22_n655(x)
+ end
+end
+
+def fun_l21_n527(x)
+ if (x < 1)
+ fun_l22_n19(x)
+ else
+ fun_l22_n957(x)
+ end
+end
+
+def fun_l21_n528(x)
+ if (x < 1)
+ fun_l22_n680(x)
+ else
+ fun_l22_n142(x)
+ end
+end
+
+def fun_l21_n529(x)
+ if (x < 1)
+ fun_l22_n994(x)
+ else
+ fun_l22_n674(x)
+ end
+end
+
+def fun_l21_n530(x)
+ if (x < 1)
+ fun_l22_n762(x)
+ else
+ fun_l22_n10(x)
+ end
+end
+
+def fun_l21_n531(x)
+ if (x < 1)
+ fun_l22_n75(x)
+ else
+ fun_l22_n43(x)
+ end
+end
+
+def fun_l21_n532(x)
+ if (x < 1)
+ fun_l22_n481(x)
+ else
+ fun_l22_n766(x)
+ end
+end
+
+def fun_l21_n533(x)
+ if (x < 1)
+ fun_l22_n261(x)
+ else
+ fun_l22_n256(x)
+ end
+end
+
+def fun_l21_n534(x)
+ if (x < 1)
+ fun_l22_n316(x)
+ else
+ fun_l22_n547(x)
+ end
+end
+
+def fun_l21_n535(x)
+ if (x < 1)
+ fun_l22_n304(x)
+ else
+ fun_l22_n392(x)
+ end
+end
+
+def fun_l21_n536(x)
+ if (x < 1)
+ fun_l22_n83(x)
+ else
+ fun_l22_n789(x)
+ end
+end
+
+def fun_l21_n537(x)
+ if (x < 1)
+ fun_l22_n434(x)
+ else
+ fun_l22_n783(x)
+ end
+end
+
+def fun_l21_n538(x)
+ if (x < 1)
+ fun_l22_n445(x)
+ else
+ fun_l22_n960(x)
+ end
+end
+
+def fun_l21_n539(x)
+ if (x < 1)
+ fun_l22_n398(x)
+ else
+ fun_l22_n529(x)
+ end
+end
+
+def fun_l21_n540(x)
+ if (x < 1)
+ fun_l22_n413(x)
+ else
+ fun_l22_n684(x)
+ end
+end
+
+def fun_l21_n541(x)
+ if (x < 1)
+ fun_l22_n812(x)
+ else
+ fun_l22_n257(x)
+ end
+end
+
+def fun_l21_n542(x)
+ if (x < 1)
+ fun_l22_n186(x)
+ else
+ fun_l22_n35(x)
+ end
+end
+
+def fun_l21_n543(x)
+ if (x < 1)
+ fun_l22_n489(x)
+ else
+ fun_l22_n93(x)
+ end
+end
+
+def fun_l21_n544(x)
+ if (x < 1)
+ fun_l22_n105(x)
+ else
+ fun_l22_n282(x)
+ end
+end
+
+def fun_l21_n545(x)
+ if (x < 1)
+ fun_l22_n586(x)
+ else
+ fun_l22_n614(x)
+ end
+end
+
+def fun_l21_n546(x)
+ if (x < 1)
+ fun_l22_n75(x)
+ else
+ fun_l22_n589(x)
+ end
+end
+
+def fun_l21_n547(x)
+ if (x < 1)
+ fun_l22_n128(x)
+ else
+ fun_l22_n552(x)
+ end
+end
+
+def fun_l21_n548(x)
+ if (x < 1)
+ fun_l22_n961(x)
+ else
+ fun_l22_n209(x)
+ end
+end
+
+def fun_l21_n549(x)
+ if (x < 1)
+ fun_l22_n727(x)
+ else
+ fun_l22_n615(x)
+ end
+end
+
+def fun_l21_n550(x)
+ if (x < 1)
+ fun_l22_n45(x)
+ else
+ fun_l22_n161(x)
+ end
+end
+
+def fun_l21_n551(x)
+ if (x < 1)
+ fun_l22_n480(x)
+ else
+ fun_l22_n852(x)
+ end
+end
+
+def fun_l21_n552(x)
+ if (x < 1)
+ fun_l22_n383(x)
+ else
+ fun_l22_n698(x)
+ end
+end
+
+def fun_l21_n553(x)
+ if (x < 1)
+ fun_l22_n805(x)
+ else
+ fun_l22_n309(x)
+ end
+end
+
+def fun_l21_n554(x)
+ if (x < 1)
+ fun_l22_n635(x)
+ else
+ fun_l22_n821(x)
+ end
+end
+
+def fun_l21_n555(x)
+ if (x < 1)
+ fun_l22_n616(x)
+ else
+ fun_l22_n52(x)
+ end
+end
+
+def fun_l21_n556(x)
+ if (x < 1)
+ fun_l22_n283(x)
+ else
+ fun_l22_n514(x)
+ end
+end
+
+def fun_l21_n557(x)
+ if (x < 1)
+ fun_l22_n6(x)
+ else
+ fun_l22_n174(x)
+ end
+end
+
+def fun_l21_n558(x)
+ if (x < 1)
+ fun_l22_n344(x)
+ else
+ fun_l22_n932(x)
+ end
+end
+
+def fun_l21_n559(x)
+ if (x < 1)
+ fun_l22_n287(x)
+ else
+ fun_l22_n98(x)
+ end
+end
+
+def fun_l21_n560(x)
+ if (x < 1)
+ fun_l22_n510(x)
+ else
+ fun_l22_n672(x)
+ end
+end
+
+def fun_l21_n561(x)
+ if (x < 1)
+ fun_l22_n951(x)
+ else
+ fun_l22_n984(x)
+ end
+end
+
+def fun_l21_n562(x)
+ if (x < 1)
+ fun_l22_n133(x)
+ else
+ fun_l22_n207(x)
+ end
+end
+
+def fun_l21_n563(x)
+ if (x < 1)
+ fun_l22_n780(x)
+ else
+ fun_l22_n402(x)
+ end
+end
+
+def fun_l21_n564(x)
+ if (x < 1)
+ fun_l22_n783(x)
+ else
+ fun_l22_n189(x)
+ end
+end
+
+def fun_l21_n565(x)
+ if (x < 1)
+ fun_l22_n736(x)
+ else
+ fun_l22_n590(x)
+ end
+end
+
+def fun_l21_n566(x)
+ if (x < 1)
+ fun_l22_n724(x)
+ else
+ fun_l22_n69(x)
+ end
+end
+
+def fun_l21_n567(x)
+ if (x < 1)
+ fun_l22_n521(x)
+ else
+ fun_l22_n242(x)
+ end
+end
+
+def fun_l21_n568(x)
+ if (x < 1)
+ fun_l22_n440(x)
+ else
+ fun_l22_n156(x)
+ end
+end
+
+def fun_l21_n569(x)
+ if (x < 1)
+ fun_l22_n776(x)
+ else
+ fun_l22_n456(x)
+ end
+end
+
+def fun_l21_n570(x)
+ if (x < 1)
+ fun_l22_n336(x)
+ else
+ fun_l22_n615(x)
+ end
+end
+
+def fun_l21_n571(x)
+ if (x < 1)
+ fun_l22_n775(x)
+ else
+ fun_l22_n585(x)
+ end
+end
+
+def fun_l21_n572(x)
+ if (x < 1)
+ fun_l22_n466(x)
+ else
+ fun_l22_n559(x)
+ end
+end
+
+def fun_l21_n573(x)
+ if (x < 1)
+ fun_l22_n609(x)
+ else
+ fun_l22_n177(x)
+ end
+end
+
+def fun_l21_n574(x)
+ if (x < 1)
+ fun_l22_n310(x)
+ else
+ fun_l22_n190(x)
+ end
+end
+
+def fun_l21_n575(x)
+ if (x < 1)
+ fun_l22_n861(x)
+ else
+ fun_l22_n289(x)
+ end
+end
+
+def fun_l21_n576(x)
+ if (x < 1)
+ fun_l22_n978(x)
+ else
+ fun_l22_n460(x)
+ end
+end
+
+def fun_l21_n577(x)
+ if (x < 1)
+ fun_l22_n440(x)
+ else
+ fun_l22_n816(x)
+ end
+end
+
+def fun_l21_n578(x)
+ if (x < 1)
+ fun_l22_n522(x)
+ else
+ fun_l22_n214(x)
+ end
+end
+
+def fun_l21_n579(x)
+ if (x < 1)
+ fun_l22_n38(x)
+ else
+ fun_l22_n166(x)
+ end
+end
+
+def fun_l21_n580(x)
+ if (x < 1)
+ fun_l22_n114(x)
+ else
+ fun_l22_n314(x)
+ end
+end
+
+def fun_l21_n581(x)
+ if (x < 1)
+ fun_l22_n233(x)
+ else
+ fun_l22_n840(x)
+ end
+end
+
+def fun_l21_n582(x)
+ if (x < 1)
+ fun_l22_n867(x)
+ else
+ fun_l22_n213(x)
+ end
+end
+
+def fun_l21_n583(x)
+ if (x < 1)
+ fun_l22_n742(x)
+ else
+ fun_l22_n798(x)
+ end
+end
+
+def fun_l21_n584(x)
+ if (x < 1)
+ fun_l22_n772(x)
+ else
+ fun_l22_n400(x)
+ end
+end
+
+def fun_l21_n585(x)
+ if (x < 1)
+ fun_l22_n564(x)
+ else
+ fun_l22_n70(x)
+ end
+end
+
+def fun_l21_n586(x)
+ if (x < 1)
+ fun_l22_n836(x)
+ else
+ fun_l22_n188(x)
+ end
+end
+
+def fun_l21_n587(x)
+ if (x < 1)
+ fun_l22_n624(x)
+ else
+ fun_l22_n923(x)
+ end
+end
+
+def fun_l21_n588(x)
+ if (x < 1)
+ fun_l22_n265(x)
+ else
+ fun_l22_n733(x)
+ end
+end
+
+def fun_l21_n589(x)
+ if (x < 1)
+ fun_l22_n545(x)
+ else
+ fun_l22_n399(x)
+ end
+end
+
+def fun_l21_n590(x)
+ if (x < 1)
+ fun_l22_n22(x)
+ else
+ fun_l22_n266(x)
+ end
+end
+
+def fun_l21_n591(x)
+ if (x < 1)
+ fun_l22_n504(x)
+ else
+ fun_l22_n798(x)
+ end
+end
+
+def fun_l21_n592(x)
+ if (x < 1)
+ fun_l22_n979(x)
+ else
+ fun_l22_n712(x)
+ end
+end
+
+def fun_l21_n593(x)
+ if (x < 1)
+ fun_l22_n343(x)
+ else
+ fun_l22_n54(x)
+ end
+end
+
+def fun_l21_n594(x)
+ if (x < 1)
+ fun_l22_n893(x)
+ else
+ fun_l22_n465(x)
+ end
+end
+
+def fun_l21_n595(x)
+ if (x < 1)
+ fun_l22_n28(x)
+ else
+ fun_l22_n162(x)
+ end
+end
+
+def fun_l21_n596(x)
+ if (x < 1)
+ fun_l22_n609(x)
+ else
+ fun_l22_n882(x)
+ end
+end
+
+def fun_l21_n597(x)
+ if (x < 1)
+ fun_l22_n575(x)
+ else
+ fun_l22_n951(x)
+ end
+end
+
+def fun_l21_n598(x)
+ if (x < 1)
+ fun_l22_n794(x)
+ else
+ fun_l22_n767(x)
+ end
+end
+
+def fun_l21_n599(x)
+ if (x < 1)
+ fun_l22_n605(x)
+ else
+ fun_l22_n141(x)
+ end
+end
+
+def fun_l21_n600(x)
+ if (x < 1)
+ fun_l22_n54(x)
+ else
+ fun_l22_n958(x)
+ end
+end
+
+def fun_l21_n601(x)
+ if (x < 1)
+ fun_l22_n506(x)
+ else
+ fun_l22_n269(x)
+ end
+end
+
+def fun_l21_n602(x)
+ if (x < 1)
+ fun_l22_n401(x)
+ else
+ fun_l22_n104(x)
+ end
+end
+
+def fun_l21_n603(x)
+ if (x < 1)
+ fun_l22_n379(x)
+ else
+ fun_l22_n489(x)
+ end
+end
+
+def fun_l21_n604(x)
+ if (x < 1)
+ fun_l22_n673(x)
+ else
+ fun_l22_n502(x)
+ end
+end
+
+def fun_l21_n605(x)
+ if (x < 1)
+ fun_l22_n355(x)
+ else
+ fun_l22_n483(x)
+ end
+end
+
+def fun_l21_n606(x)
+ if (x < 1)
+ fun_l22_n763(x)
+ else
+ fun_l22_n160(x)
+ end
+end
+
+def fun_l21_n607(x)
+ if (x < 1)
+ fun_l22_n802(x)
+ else
+ fun_l22_n414(x)
+ end
+end
+
+def fun_l21_n608(x)
+ if (x < 1)
+ fun_l22_n401(x)
+ else
+ fun_l22_n987(x)
+ end
+end
+
+def fun_l21_n609(x)
+ if (x < 1)
+ fun_l22_n741(x)
+ else
+ fun_l22_n511(x)
+ end
+end
+
+def fun_l21_n610(x)
+ if (x < 1)
+ fun_l22_n883(x)
+ else
+ fun_l22_n73(x)
+ end
+end
+
+def fun_l21_n611(x)
+ if (x < 1)
+ fun_l22_n105(x)
+ else
+ fun_l22_n612(x)
+ end
+end
+
+def fun_l21_n612(x)
+ if (x < 1)
+ fun_l22_n911(x)
+ else
+ fun_l22_n764(x)
+ end
+end
+
+def fun_l21_n613(x)
+ if (x < 1)
+ fun_l22_n818(x)
+ else
+ fun_l22_n43(x)
+ end
+end
+
+def fun_l21_n614(x)
+ if (x < 1)
+ fun_l22_n388(x)
+ else
+ fun_l22_n99(x)
+ end
+end
+
+def fun_l21_n615(x)
+ if (x < 1)
+ fun_l22_n657(x)
+ else
+ fun_l22_n231(x)
+ end
+end
+
+def fun_l21_n616(x)
+ if (x < 1)
+ fun_l22_n937(x)
+ else
+ fun_l22_n357(x)
+ end
+end
+
+def fun_l21_n617(x)
+ if (x < 1)
+ fun_l22_n691(x)
+ else
+ fun_l22_n952(x)
+ end
+end
+
+def fun_l21_n618(x)
+ if (x < 1)
+ fun_l22_n712(x)
+ else
+ fun_l22_n84(x)
+ end
+end
+
+def fun_l21_n619(x)
+ if (x < 1)
+ fun_l22_n483(x)
+ else
+ fun_l22_n506(x)
+ end
+end
+
+def fun_l21_n620(x)
+ if (x < 1)
+ fun_l22_n804(x)
+ else
+ fun_l22_n813(x)
+ end
+end
+
+def fun_l21_n621(x)
+ if (x < 1)
+ fun_l22_n280(x)
+ else
+ fun_l22_n626(x)
+ end
+end
+
+def fun_l21_n622(x)
+ if (x < 1)
+ fun_l22_n979(x)
+ else
+ fun_l22_n508(x)
+ end
+end
+
+def fun_l21_n623(x)
+ if (x < 1)
+ fun_l22_n482(x)
+ else
+ fun_l22_n120(x)
+ end
+end
+
+def fun_l21_n624(x)
+ if (x < 1)
+ fun_l22_n99(x)
+ else
+ fun_l22_n975(x)
+ end
+end
+
+def fun_l21_n625(x)
+ if (x < 1)
+ fun_l22_n540(x)
+ else
+ fun_l22_n68(x)
+ end
+end
+
+def fun_l21_n626(x)
+ if (x < 1)
+ fun_l22_n818(x)
+ else
+ fun_l22_n591(x)
+ end
+end
+
+def fun_l21_n627(x)
+ if (x < 1)
+ fun_l22_n37(x)
+ else
+ fun_l22_n984(x)
+ end
+end
+
+def fun_l21_n628(x)
+ if (x < 1)
+ fun_l22_n547(x)
+ else
+ fun_l22_n482(x)
+ end
+end
+
+def fun_l21_n629(x)
+ if (x < 1)
+ fun_l22_n851(x)
+ else
+ fun_l22_n335(x)
+ end
+end
+
+def fun_l21_n630(x)
+ if (x < 1)
+ fun_l22_n474(x)
+ else
+ fun_l22_n402(x)
+ end
+end
+
+def fun_l21_n631(x)
+ if (x < 1)
+ fun_l22_n433(x)
+ else
+ fun_l22_n298(x)
+ end
+end
+
+def fun_l21_n632(x)
+ if (x < 1)
+ fun_l22_n376(x)
+ else
+ fun_l22_n898(x)
+ end
+end
+
+def fun_l21_n633(x)
+ if (x < 1)
+ fun_l22_n456(x)
+ else
+ fun_l22_n753(x)
+ end
+end
+
+def fun_l21_n634(x)
+ if (x < 1)
+ fun_l22_n888(x)
+ else
+ fun_l22_n394(x)
+ end
+end
+
+def fun_l21_n635(x)
+ if (x < 1)
+ fun_l22_n555(x)
+ else
+ fun_l22_n69(x)
+ end
+end
+
+def fun_l21_n636(x)
+ if (x < 1)
+ fun_l22_n572(x)
+ else
+ fun_l22_n822(x)
+ end
+end
+
+def fun_l21_n637(x)
+ if (x < 1)
+ fun_l22_n645(x)
+ else
+ fun_l22_n968(x)
+ end
+end
+
+def fun_l21_n638(x)
+ if (x < 1)
+ fun_l22_n406(x)
+ else
+ fun_l22_n318(x)
+ end
+end
+
+def fun_l21_n639(x)
+ if (x < 1)
+ fun_l22_n554(x)
+ else
+ fun_l22_n591(x)
+ end
+end
+
+def fun_l21_n640(x)
+ if (x < 1)
+ fun_l22_n478(x)
+ else
+ fun_l22_n962(x)
+ end
+end
+
+def fun_l21_n641(x)
+ if (x < 1)
+ fun_l22_n688(x)
+ else
+ fun_l22_n305(x)
+ end
+end
+
+def fun_l21_n642(x)
+ if (x < 1)
+ fun_l22_n767(x)
+ else
+ fun_l22_n156(x)
+ end
+end
+
+def fun_l21_n643(x)
+ if (x < 1)
+ fun_l22_n264(x)
+ else
+ fun_l22_n489(x)
+ end
+end
+
+def fun_l21_n644(x)
+ if (x < 1)
+ fun_l22_n678(x)
+ else
+ fun_l22_n196(x)
+ end
+end
+
+def fun_l21_n645(x)
+ if (x < 1)
+ fun_l22_n849(x)
+ else
+ fun_l22_n488(x)
+ end
+end
+
+def fun_l21_n646(x)
+ if (x < 1)
+ fun_l22_n837(x)
+ else
+ fun_l22_n274(x)
+ end
+end
+
+def fun_l21_n647(x)
+ if (x < 1)
+ fun_l22_n58(x)
+ else
+ fun_l22_n694(x)
+ end
+end
+
+def fun_l21_n648(x)
+ if (x < 1)
+ fun_l22_n878(x)
+ else
+ fun_l22_n356(x)
+ end
+end
+
+def fun_l21_n649(x)
+ if (x < 1)
+ fun_l22_n945(x)
+ else
+ fun_l22_n28(x)
+ end
+end
+
+def fun_l21_n650(x)
+ if (x < 1)
+ fun_l22_n10(x)
+ else
+ fun_l22_n330(x)
+ end
+end
+
+def fun_l21_n651(x)
+ if (x < 1)
+ fun_l22_n461(x)
+ else
+ fun_l22_n872(x)
+ end
+end
+
+def fun_l21_n652(x)
+ if (x < 1)
+ fun_l22_n860(x)
+ else
+ fun_l22_n358(x)
+ end
+end
+
+def fun_l21_n653(x)
+ if (x < 1)
+ fun_l22_n11(x)
+ else
+ fun_l22_n596(x)
+ end
+end
+
+def fun_l21_n654(x)
+ if (x < 1)
+ fun_l22_n340(x)
+ else
+ fun_l22_n335(x)
+ end
+end
+
+def fun_l21_n655(x)
+ if (x < 1)
+ fun_l22_n259(x)
+ else
+ fun_l22_n642(x)
+ end
+end
+
+def fun_l21_n656(x)
+ if (x < 1)
+ fun_l22_n78(x)
+ else
+ fun_l22_n442(x)
+ end
+end
+
+def fun_l21_n657(x)
+ if (x < 1)
+ fun_l22_n151(x)
+ else
+ fun_l22_n122(x)
+ end
+end
+
+def fun_l21_n658(x)
+ if (x < 1)
+ fun_l22_n440(x)
+ else
+ fun_l22_n940(x)
+ end
+end
+
+def fun_l21_n659(x)
+ if (x < 1)
+ fun_l22_n237(x)
+ else
+ fun_l22_n899(x)
+ end
+end
+
+def fun_l21_n660(x)
+ if (x < 1)
+ fun_l22_n906(x)
+ else
+ fun_l22_n789(x)
+ end
+end
+
+def fun_l21_n661(x)
+ if (x < 1)
+ fun_l22_n812(x)
+ else
+ fun_l22_n492(x)
+ end
+end
+
+def fun_l21_n662(x)
+ if (x < 1)
+ fun_l22_n241(x)
+ else
+ fun_l22_n732(x)
+ end
+end
+
+def fun_l21_n663(x)
+ if (x < 1)
+ fun_l22_n557(x)
+ else
+ fun_l22_n570(x)
+ end
+end
+
+def fun_l21_n664(x)
+ if (x < 1)
+ fun_l22_n928(x)
+ else
+ fun_l22_n943(x)
+ end
+end
+
+def fun_l21_n665(x)
+ if (x < 1)
+ fun_l22_n400(x)
+ else
+ fun_l22_n914(x)
+ end
+end
+
+def fun_l21_n666(x)
+ if (x < 1)
+ fun_l22_n368(x)
+ else
+ fun_l22_n434(x)
+ end
+end
+
+def fun_l21_n667(x)
+ if (x < 1)
+ fun_l22_n827(x)
+ else
+ fun_l22_n213(x)
+ end
+end
+
+def fun_l21_n668(x)
+ if (x < 1)
+ fun_l22_n729(x)
+ else
+ fun_l22_n273(x)
+ end
+end
+
+def fun_l21_n669(x)
+ if (x < 1)
+ fun_l22_n649(x)
+ else
+ fun_l22_n29(x)
+ end
+end
+
+def fun_l21_n670(x)
+ if (x < 1)
+ fun_l22_n878(x)
+ else
+ fun_l22_n794(x)
+ end
+end
+
+def fun_l21_n671(x)
+ if (x < 1)
+ fun_l22_n474(x)
+ else
+ fun_l22_n960(x)
+ end
+end
+
+def fun_l21_n672(x)
+ if (x < 1)
+ fun_l22_n250(x)
+ else
+ fun_l22_n935(x)
+ end
+end
+
+def fun_l21_n673(x)
+ if (x < 1)
+ fun_l22_n766(x)
+ else
+ fun_l22_n325(x)
+ end
+end
+
+def fun_l21_n674(x)
+ if (x < 1)
+ fun_l22_n64(x)
+ else
+ fun_l22_n334(x)
+ end
+end
+
+def fun_l21_n675(x)
+ if (x < 1)
+ fun_l22_n737(x)
+ else
+ fun_l22_n983(x)
+ end
+end
+
+def fun_l21_n676(x)
+ if (x < 1)
+ fun_l22_n506(x)
+ else
+ fun_l22_n393(x)
+ end
+end
+
+def fun_l21_n677(x)
+ if (x < 1)
+ fun_l22_n348(x)
+ else
+ fun_l22_n558(x)
+ end
+end
+
+def fun_l21_n678(x)
+ if (x < 1)
+ fun_l22_n68(x)
+ else
+ fun_l22_n483(x)
+ end
+end
+
+def fun_l21_n679(x)
+ if (x < 1)
+ fun_l22_n816(x)
+ else
+ fun_l22_n959(x)
+ end
+end
+
+def fun_l21_n680(x)
+ if (x < 1)
+ fun_l22_n128(x)
+ else
+ fun_l22_n393(x)
+ end
+end
+
+def fun_l21_n681(x)
+ if (x < 1)
+ fun_l22_n738(x)
+ else
+ fun_l22_n609(x)
+ end
+end
+
+def fun_l21_n682(x)
+ if (x < 1)
+ fun_l22_n113(x)
+ else
+ fun_l22_n664(x)
+ end
+end
+
+def fun_l21_n683(x)
+ if (x < 1)
+ fun_l22_n904(x)
+ else
+ fun_l22_n699(x)
+ end
+end
+
+def fun_l21_n684(x)
+ if (x < 1)
+ fun_l22_n759(x)
+ else
+ fun_l22_n277(x)
+ end
+end
+
+def fun_l21_n685(x)
+ if (x < 1)
+ fun_l22_n359(x)
+ else
+ fun_l22_n961(x)
+ end
+end
+
+def fun_l21_n686(x)
+ if (x < 1)
+ fun_l22_n269(x)
+ else
+ fun_l22_n66(x)
+ end
+end
+
+def fun_l21_n687(x)
+ if (x < 1)
+ fun_l22_n510(x)
+ else
+ fun_l22_n935(x)
+ end
+end
+
+def fun_l21_n688(x)
+ if (x < 1)
+ fun_l22_n127(x)
+ else
+ fun_l22_n441(x)
+ end
+end
+
+def fun_l21_n689(x)
+ if (x < 1)
+ fun_l22_n515(x)
+ else
+ fun_l22_n184(x)
+ end
+end
+
+def fun_l21_n690(x)
+ if (x < 1)
+ fun_l22_n339(x)
+ else
+ fun_l22_n121(x)
+ end
+end
+
+def fun_l21_n691(x)
+ if (x < 1)
+ fun_l22_n74(x)
+ else
+ fun_l22_n172(x)
+ end
+end
+
+def fun_l21_n692(x)
+ if (x < 1)
+ fun_l22_n156(x)
+ else
+ fun_l22_n829(x)
+ end
+end
+
+def fun_l21_n693(x)
+ if (x < 1)
+ fun_l22_n761(x)
+ else
+ fun_l22_n322(x)
+ end
+end
+
+def fun_l21_n694(x)
+ if (x < 1)
+ fun_l22_n168(x)
+ else
+ fun_l22_n789(x)
+ end
+end
+
+def fun_l21_n695(x)
+ if (x < 1)
+ fun_l22_n896(x)
+ else
+ fun_l22_n275(x)
+ end
+end
+
+def fun_l21_n696(x)
+ if (x < 1)
+ fun_l22_n283(x)
+ else
+ fun_l22_n195(x)
+ end
+end
+
+def fun_l21_n697(x)
+ if (x < 1)
+ fun_l22_n353(x)
+ else
+ fun_l22_n664(x)
+ end
+end
+
+def fun_l21_n698(x)
+ if (x < 1)
+ fun_l22_n801(x)
+ else
+ fun_l22_n544(x)
+ end
+end
+
+def fun_l21_n699(x)
+ if (x < 1)
+ fun_l22_n729(x)
+ else
+ fun_l22_n323(x)
+ end
+end
+
+def fun_l21_n700(x)
+ if (x < 1)
+ fun_l22_n47(x)
+ else
+ fun_l22_n340(x)
+ end
+end
+
+def fun_l21_n701(x)
+ if (x < 1)
+ fun_l22_n132(x)
+ else
+ fun_l22_n968(x)
+ end
+end
+
+def fun_l21_n702(x)
+ if (x < 1)
+ fun_l22_n556(x)
+ else
+ fun_l22_n23(x)
+ end
+end
+
+def fun_l21_n703(x)
+ if (x < 1)
+ fun_l22_n274(x)
+ else
+ fun_l22_n276(x)
+ end
+end
+
+def fun_l21_n704(x)
+ if (x < 1)
+ fun_l22_n152(x)
+ else
+ fun_l22_n244(x)
+ end
+end
+
+def fun_l21_n705(x)
+ if (x < 1)
+ fun_l22_n508(x)
+ else
+ fun_l22_n350(x)
+ end
+end
+
+def fun_l21_n706(x)
+ if (x < 1)
+ fun_l22_n188(x)
+ else
+ fun_l22_n60(x)
+ end
+end
+
+def fun_l21_n707(x)
+ if (x < 1)
+ fun_l22_n970(x)
+ else
+ fun_l22_n55(x)
+ end
+end
+
+def fun_l21_n708(x)
+ if (x < 1)
+ fun_l22_n840(x)
+ else
+ fun_l22_n990(x)
+ end
+end
+
+def fun_l21_n709(x)
+ if (x < 1)
+ fun_l22_n466(x)
+ else
+ fun_l22_n25(x)
+ end
+end
+
+def fun_l21_n710(x)
+ if (x < 1)
+ fun_l22_n741(x)
+ else
+ fun_l22_n481(x)
+ end
+end
+
+def fun_l21_n711(x)
+ if (x < 1)
+ fun_l22_n859(x)
+ else
+ fun_l22_n58(x)
+ end
+end
+
+def fun_l21_n712(x)
+ if (x < 1)
+ fun_l22_n282(x)
+ else
+ fun_l22_n807(x)
+ end
+end
+
+def fun_l21_n713(x)
+ if (x < 1)
+ fun_l22_n387(x)
+ else
+ fun_l22_n235(x)
+ end
+end
+
+def fun_l21_n714(x)
+ if (x < 1)
+ fun_l22_n558(x)
+ else
+ fun_l22_n494(x)
+ end
+end
+
+def fun_l21_n715(x)
+ if (x < 1)
+ fun_l22_n613(x)
+ else
+ fun_l22_n194(x)
+ end
+end
+
+def fun_l21_n716(x)
+ if (x < 1)
+ fun_l22_n120(x)
+ else
+ fun_l22_n154(x)
+ end
+end
+
+def fun_l21_n717(x)
+ if (x < 1)
+ fun_l22_n501(x)
+ else
+ fun_l22_n540(x)
+ end
+end
+
+def fun_l21_n718(x)
+ if (x < 1)
+ fun_l22_n283(x)
+ else
+ fun_l22_n102(x)
+ end
+end
+
+def fun_l21_n719(x)
+ if (x < 1)
+ fun_l22_n569(x)
+ else
+ fun_l22_n407(x)
+ end
+end
+
+def fun_l21_n720(x)
+ if (x < 1)
+ fun_l22_n86(x)
+ else
+ fun_l22_n99(x)
+ end
+end
+
+def fun_l21_n721(x)
+ if (x < 1)
+ fun_l22_n872(x)
+ else
+ fun_l22_n331(x)
+ end
+end
+
+def fun_l21_n722(x)
+ if (x < 1)
+ fun_l22_n772(x)
+ else
+ fun_l22_n57(x)
+ end
+end
+
+def fun_l21_n723(x)
+ if (x < 1)
+ fun_l22_n396(x)
+ else
+ fun_l22_n534(x)
+ end
+end
+
+def fun_l21_n724(x)
+ if (x < 1)
+ fun_l22_n928(x)
+ else
+ fun_l22_n576(x)
+ end
+end
+
+def fun_l21_n725(x)
+ if (x < 1)
+ fun_l22_n650(x)
+ else
+ fun_l22_n790(x)
+ end
+end
+
+def fun_l21_n726(x)
+ if (x < 1)
+ fun_l22_n173(x)
+ else
+ fun_l22_n480(x)
+ end
+end
+
+def fun_l21_n727(x)
+ if (x < 1)
+ fun_l22_n222(x)
+ else
+ fun_l22_n258(x)
+ end
+end
+
+def fun_l21_n728(x)
+ if (x < 1)
+ fun_l22_n797(x)
+ else
+ fun_l22_n793(x)
+ end
+end
+
+def fun_l21_n729(x)
+ if (x < 1)
+ fun_l22_n260(x)
+ else
+ fun_l22_n737(x)
+ end
+end
+
+def fun_l21_n730(x)
+ if (x < 1)
+ fun_l22_n419(x)
+ else
+ fun_l22_n974(x)
+ end
+end
+
+def fun_l21_n731(x)
+ if (x < 1)
+ fun_l22_n837(x)
+ else
+ fun_l22_n628(x)
+ end
+end
+
+def fun_l21_n732(x)
+ if (x < 1)
+ fun_l22_n753(x)
+ else
+ fun_l22_n380(x)
+ end
+end
+
+def fun_l21_n733(x)
+ if (x < 1)
+ fun_l22_n420(x)
+ else
+ fun_l22_n890(x)
+ end
+end
+
+def fun_l21_n734(x)
+ if (x < 1)
+ fun_l22_n993(x)
+ else
+ fun_l22_n172(x)
+ end
+end
+
+def fun_l21_n735(x)
+ if (x < 1)
+ fun_l22_n123(x)
+ else
+ fun_l22_n290(x)
+ end
+end
+
+def fun_l21_n736(x)
+ if (x < 1)
+ fun_l22_n805(x)
+ else
+ fun_l22_n923(x)
+ end
+end
+
+def fun_l21_n737(x)
+ if (x < 1)
+ fun_l22_n124(x)
+ else
+ fun_l22_n25(x)
+ end
+end
+
+def fun_l21_n738(x)
+ if (x < 1)
+ fun_l22_n192(x)
+ else
+ fun_l22_n258(x)
+ end
+end
+
+def fun_l21_n739(x)
+ if (x < 1)
+ fun_l22_n243(x)
+ else
+ fun_l22_n512(x)
+ end
+end
+
+def fun_l21_n740(x)
+ if (x < 1)
+ fun_l22_n577(x)
+ else
+ fun_l22_n307(x)
+ end
+end
+
+def fun_l21_n741(x)
+ if (x < 1)
+ fun_l22_n422(x)
+ else
+ fun_l22_n51(x)
+ end
+end
+
+def fun_l21_n742(x)
+ if (x < 1)
+ fun_l22_n247(x)
+ else
+ fun_l22_n453(x)
+ end
+end
+
+def fun_l21_n743(x)
+ if (x < 1)
+ fun_l22_n369(x)
+ else
+ fun_l22_n564(x)
+ end
+end
+
+def fun_l21_n744(x)
+ if (x < 1)
+ fun_l22_n815(x)
+ else
+ fun_l22_n894(x)
+ end
+end
+
+def fun_l21_n745(x)
+ if (x < 1)
+ fun_l22_n526(x)
+ else
+ fun_l22_n555(x)
+ end
+end
+
+def fun_l21_n746(x)
+ if (x < 1)
+ fun_l22_n281(x)
+ else
+ fun_l22_n121(x)
+ end
+end
+
+def fun_l21_n747(x)
+ if (x < 1)
+ fun_l22_n141(x)
+ else
+ fun_l22_n335(x)
+ end
+end
+
+def fun_l21_n748(x)
+ if (x < 1)
+ fun_l22_n73(x)
+ else
+ fun_l22_n241(x)
+ end
+end
+
+def fun_l21_n749(x)
+ if (x < 1)
+ fun_l22_n201(x)
+ else
+ fun_l22_n650(x)
+ end
+end
+
+def fun_l21_n750(x)
+ if (x < 1)
+ fun_l22_n569(x)
+ else
+ fun_l22_n231(x)
+ end
+end
+
+def fun_l21_n751(x)
+ if (x < 1)
+ fun_l22_n23(x)
+ else
+ fun_l22_n315(x)
+ end
+end
+
+def fun_l21_n752(x)
+ if (x < 1)
+ fun_l22_n951(x)
+ else
+ fun_l22_n697(x)
+ end
+end
+
+def fun_l21_n753(x)
+ if (x < 1)
+ fun_l22_n734(x)
+ else
+ fun_l22_n991(x)
+ end
+end
+
+def fun_l21_n754(x)
+ if (x < 1)
+ fun_l22_n557(x)
+ else
+ fun_l22_n85(x)
+ end
+end
+
+def fun_l21_n755(x)
+ if (x < 1)
+ fun_l22_n213(x)
+ else
+ fun_l22_n918(x)
+ end
+end
+
+def fun_l21_n756(x)
+ if (x < 1)
+ fun_l22_n995(x)
+ else
+ fun_l22_n134(x)
+ end
+end
+
+def fun_l21_n757(x)
+ if (x < 1)
+ fun_l22_n173(x)
+ else
+ fun_l22_n764(x)
+ end
+end
+
+def fun_l21_n758(x)
+ if (x < 1)
+ fun_l22_n503(x)
+ else
+ fun_l22_n370(x)
+ end
+end
+
+def fun_l21_n759(x)
+ if (x < 1)
+ fun_l22_n922(x)
+ else
+ fun_l22_n819(x)
+ end
+end
+
+def fun_l21_n760(x)
+ if (x < 1)
+ fun_l22_n901(x)
+ else
+ fun_l22_n252(x)
+ end
+end
+
+def fun_l21_n761(x)
+ if (x < 1)
+ fun_l22_n928(x)
+ else
+ fun_l22_n958(x)
+ end
+end
+
+def fun_l21_n762(x)
+ if (x < 1)
+ fun_l22_n402(x)
+ else
+ fun_l22_n756(x)
+ end
+end
+
+def fun_l21_n763(x)
+ if (x < 1)
+ fun_l22_n223(x)
+ else
+ fun_l22_n781(x)
+ end
+end
+
+def fun_l21_n764(x)
+ if (x < 1)
+ fun_l22_n692(x)
+ else
+ fun_l22_n893(x)
+ end
+end
+
+def fun_l21_n765(x)
+ if (x < 1)
+ fun_l22_n308(x)
+ else
+ fun_l22_n485(x)
+ end
+end
+
+def fun_l21_n766(x)
+ if (x < 1)
+ fun_l22_n858(x)
+ else
+ fun_l22_n316(x)
+ end
+end
+
+def fun_l21_n767(x)
+ if (x < 1)
+ fun_l22_n546(x)
+ else
+ fun_l22_n793(x)
+ end
+end
+
+def fun_l21_n768(x)
+ if (x < 1)
+ fun_l22_n75(x)
+ else
+ fun_l22_n999(x)
+ end
+end
+
+def fun_l21_n769(x)
+ if (x < 1)
+ fun_l22_n758(x)
+ else
+ fun_l22_n149(x)
+ end
+end
+
+def fun_l21_n770(x)
+ if (x < 1)
+ fun_l22_n801(x)
+ else
+ fun_l22_n594(x)
+ end
+end
+
+def fun_l21_n771(x)
+ if (x < 1)
+ fun_l22_n544(x)
+ else
+ fun_l22_n477(x)
+ end
+end
+
+def fun_l21_n772(x)
+ if (x < 1)
+ fun_l22_n118(x)
+ else
+ fun_l22_n406(x)
+ end
+end
+
+def fun_l21_n773(x)
+ if (x < 1)
+ fun_l22_n741(x)
+ else
+ fun_l22_n539(x)
+ end
+end
+
+def fun_l21_n774(x)
+ if (x < 1)
+ fun_l22_n99(x)
+ else
+ fun_l22_n636(x)
+ end
+end
+
+def fun_l21_n775(x)
+ if (x < 1)
+ fun_l22_n54(x)
+ else
+ fun_l22_n139(x)
+ end
+end
+
+def fun_l21_n776(x)
+ if (x < 1)
+ fun_l22_n990(x)
+ else
+ fun_l22_n518(x)
+ end
+end
+
+def fun_l21_n777(x)
+ if (x < 1)
+ fun_l22_n172(x)
+ else
+ fun_l22_n432(x)
+ end
+end
+
+def fun_l21_n778(x)
+ if (x < 1)
+ fun_l22_n302(x)
+ else
+ fun_l22_n406(x)
+ end
+end
+
+def fun_l21_n779(x)
+ if (x < 1)
+ fun_l22_n199(x)
+ else
+ fun_l22_n198(x)
+ end
+end
+
+def fun_l21_n780(x)
+ if (x < 1)
+ fun_l22_n454(x)
+ else
+ fun_l22_n547(x)
+ end
+end
+
+def fun_l21_n781(x)
+ if (x < 1)
+ fun_l22_n234(x)
+ else
+ fun_l22_n332(x)
+ end
+end
+
+def fun_l21_n782(x)
+ if (x < 1)
+ fun_l22_n693(x)
+ else
+ fun_l22_n800(x)
+ end
+end
+
+def fun_l21_n783(x)
+ if (x < 1)
+ fun_l22_n728(x)
+ else
+ fun_l22_n799(x)
+ end
+end
+
+def fun_l21_n784(x)
+ if (x < 1)
+ fun_l22_n594(x)
+ else
+ fun_l22_n350(x)
+ end
+end
+
+def fun_l21_n785(x)
+ if (x < 1)
+ fun_l22_n695(x)
+ else
+ fun_l22_n596(x)
+ end
+end
+
+def fun_l21_n786(x)
+ if (x < 1)
+ fun_l22_n141(x)
+ else
+ fun_l22_n372(x)
+ end
+end
+
+def fun_l21_n787(x)
+ if (x < 1)
+ fun_l22_n15(x)
+ else
+ fun_l22_n352(x)
+ end
+end
+
+def fun_l21_n788(x)
+ if (x < 1)
+ fun_l22_n769(x)
+ else
+ fun_l22_n62(x)
+ end
+end
+
+def fun_l21_n789(x)
+ if (x < 1)
+ fun_l22_n284(x)
+ else
+ fun_l22_n119(x)
+ end
+end
+
+def fun_l21_n790(x)
+ if (x < 1)
+ fun_l22_n335(x)
+ else
+ fun_l22_n570(x)
+ end
+end
+
+def fun_l21_n791(x)
+ if (x < 1)
+ fun_l22_n779(x)
+ else
+ fun_l22_n104(x)
+ end
+end
+
+def fun_l21_n792(x)
+ if (x < 1)
+ fun_l22_n835(x)
+ else
+ fun_l22_n612(x)
+ end
+end
+
+def fun_l21_n793(x)
+ if (x < 1)
+ fun_l22_n241(x)
+ else
+ fun_l22_n883(x)
+ end
+end
+
+def fun_l21_n794(x)
+ if (x < 1)
+ fun_l22_n957(x)
+ else
+ fun_l22_n357(x)
+ end
+end
+
+def fun_l21_n795(x)
+ if (x < 1)
+ fun_l22_n78(x)
+ else
+ fun_l22_n392(x)
+ end
+end
+
+def fun_l21_n796(x)
+ if (x < 1)
+ fun_l22_n711(x)
+ else
+ fun_l22_n364(x)
+ end
+end
+
+def fun_l21_n797(x)
+ if (x < 1)
+ fun_l22_n909(x)
+ else
+ fun_l22_n77(x)
+ end
+end
+
+def fun_l21_n798(x)
+ if (x < 1)
+ fun_l22_n901(x)
+ else
+ fun_l22_n483(x)
+ end
+end
+
+def fun_l21_n799(x)
+ if (x < 1)
+ fun_l22_n429(x)
+ else
+ fun_l22_n244(x)
+ end
+end
+
+def fun_l21_n800(x)
+ if (x < 1)
+ fun_l22_n394(x)
+ else
+ fun_l22_n652(x)
+ end
+end
+
+def fun_l21_n801(x)
+ if (x < 1)
+ fun_l22_n831(x)
+ else
+ fun_l22_n698(x)
+ end
+end
+
+def fun_l21_n802(x)
+ if (x < 1)
+ fun_l22_n623(x)
+ else
+ fun_l22_n382(x)
+ end
+end
+
+def fun_l21_n803(x)
+ if (x < 1)
+ fun_l22_n803(x)
+ else
+ fun_l22_n370(x)
+ end
+end
+
+def fun_l21_n804(x)
+ if (x < 1)
+ fun_l22_n173(x)
+ else
+ fun_l22_n697(x)
+ end
+end
+
+def fun_l21_n805(x)
+ if (x < 1)
+ fun_l22_n653(x)
+ else
+ fun_l22_n514(x)
+ end
+end
+
+def fun_l21_n806(x)
+ if (x < 1)
+ fun_l22_n703(x)
+ else
+ fun_l22_n642(x)
+ end
+end
+
+def fun_l21_n807(x)
+ if (x < 1)
+ fun_l22_n788(x)
+ else
+ fun_l22_n594(x)
+ end
+end
+
+def fun_l21_n808(x)
+ if (x < 1)
+ fun_l22_n389(x)
+ else
+ fun_l22_n3(x)
+ end
+end
+
+def fun_l21_n809(x)
+ if (x < 1)
+ fun_l22_n548(x)
+ else
+ fun_l22_n338(x)
+ end
+end
+
+def fun_l21_n810(x)
+ if (x < 1)
+ fun_l22_n157(x)
+ else
+ fun_l22_n967(x)
+ end
+end
+
+def fun_l21_n811(x)
+ if (x < 1)
+ fun_l22_n573(x)
+ else
+ fun_l22_n91(x)
+ end
+end
+
+def fun_l21_n812(x)
+ if (x < 1)
+ fun_l22_n594(x)
+ else
+ fun_l22_n240(x)
+ end
+end
+
+def fun_l21_n813(x)
+ if (x < 1)
+ fun_l22_n661(x)
+ else
+ fun_l22_n557(x)
+ end
+end
+
+def fun_l21_n814(x)
+ if (x < 1)
+ fun_l22_n29(x)
+ else
+ fun_l22_n808(x)
+ end
+end
+
+def fun_l21_n815(x)
+ if (x < 1)
+ fun_l22_n212(x)
+ else
+ fun_l22_n592(x)
+ end
+end
+
+def fun_l21_n816(x)
+ if (x < 1)
+ fun_l22_n57(x)
+ else
+ fun_l22_n248(x)
+ end
+end
+
+def fun_l21_n817(x)
+ if (x < 1)
+ fun_l22_n656(x)
+ else
+ fun_l22_n588(x)
+ end
+end
+
+def fun_l21_n818(x)
+ if (x < 1)
+ fun_l22_n949(x)
+ else
+ fun_l22_n284(x)
+ end
+end
+
+def fun_l21_n819(x)
+ if (x < 1)
+ fun_l22_n488(x)
+ else
+ fun_l22_n543(x)
+ end
+end
+
+def fun_l21_n820(x)
+ if (x < 1)
+ fun_l22_n938(x)
+ else
+ fun_l22_n155(x)
+ end
+end
+
+def fun_l21_n821(x)
+ if (x < 1)
+ fun_l22_n4(x)
+ else
+ fun_l22_n888(x)
+ end
+end
+
+def fun_l21_n822(x)
+ if (x < 1)
+ fun_l22_n460(x)
+ else
+ fun_l22_n249(x)
+ end
+end
+
+def fun_l21_n823(x)
+ if (x < 1)
+ fun_l22_n494(x)
+ else
+ fun_l22_n864(x)
+ end
+end
+
+def fun_l21_n824(x)
+ if (x < 1)
+ fun_l22_n239(x)
+ else
+ fun_l22_n305(x)
+ end
+end
+
+def fun_l21_n825(x)
+ if (x < 1)
+ fun_l22_n578(x)
+ else
+ fun_l22_n568(x)
+ end
+end
+
+def fun_l21_n826(x)
+ if (x < 1)
+ fun_l22_n669(x)
+ else
+ fun_l22_n28(x)
+ end
+end
+
+def fun_l21_n827(x)
+ if (x < 1)
+ fun_l22_n928(x)
+ else
+ fun_l22_n43(x)
+ end
+end
+
+def fun_l21_n828(x)
+ if (x < 1)
+ fun_l22_n459(x)
+ else
+ fun_l22_n450(x)
+ end
+end
+
+def fun_l21_n829(x)
+ if (x < 1)
+ fun_l22_n834(x)
+ else
+ fun_l22_n583(x)
+ end
+end
+
+def fun_l21_n830(x)
+ if (x < 1)
+ fun_l22_n655(x)
+ else
+ fun_l22_n674(x)
+ end
+end
+
+def fun_l21_n831(x)
+ if (x < 1)
+ fun_l22_n551(x)
+ else
+ fun_l22_n367(x)
+ end
+end
+
+def fun_l21_n832(x)
+ if (x < 1)
+ fun_l22_n921(x)
+ else
+ fun_l22_n750(x)
+ end
+end
+
+def fun_l21_n833(x)
+ if (x < 1)
+ fun_l22_n255(x)
+ else
+ fun_l22_n253(x)
+ end
+end
+
+def fun_l21_n834(x)
+ if (x < 1)
+ fun_l22_n873(x)
+ else
+ fun_l22_n84(x)
+ end
+end
+
+def fun_l21_n835(x)
+ if (x < 1)
+ fun_l22_n362(x)
+ else
+ fun_l22_n976(x)
+ end
+end
+
+def fun_l21_n836(x)
+ if (x < 1)
+ fun_l22_n677(x)
+ else
+ fun_l22_n429(x)
+ end
+end
+
+def fun_l21_n837(x)
+ if (x < 1)
+ fun_l22_n78(x)
+ else
+ fun_l22_n782(x)
+ end
+end
+
+def fun_l21_n838(x)
+ if (x < 1)
+ fun_l22_n339(x)
+ else
+ fun_l22_n855(x)
+ end
+end
+
+def fun_l21_n839(x)
+ if (x < 1)
+ fun_l22_n73(x)
+ else
+ fun_l22_n13(x)
+ end
+end
+
+def fun_l21_n840(x)
+ if (x < 1)
+ fun_l22_n788(x)
+ else
+ fun_l22_n701(x)
+ end
+end
+
+def fun_l21_n841(x)
+ if (x < 1)
+ fun_l22_n583(x)
+ else
+ fun_l22_n501(x)
+ end
+end
+
+def fun_l21_n842(x)
+ if (x < 1)
+ fun_l22_n532(x)
+ else
+ fun_l22_n190(x)
+ end
+end
+
+def fun_l21_n843(x)
+ if (x < 1)
+ fun_l22_n206(x)
+ else
+ fun_l22_n718(x)
+ end
+end
+
+def fun_l21_n844(x)
+ if (x < 1)
+ fun_l22_n307(x)
+ else
+ fun_l22_n200(x)
+ end
+end
+
+def fun_l21_n845(x)
+ if (x < 1)
+ fun_l22_n83(x)
+ else
+ fun_l22_n294(x)
+ end
+end
+
+def fun_l21_n846(x)
+ if (x < 1)
+ fun_l22_n157(x)
+ else
+ fun_l22_n225(x)
+ end
+end
+
+def fun_l21_n847(x)
+ if (x < 1)
+ fun_l22_n935(x)
+ else
+ fun_l22_n888(x)
+ end
+end
+
+def fun_l21_n848(x)
+ if (x < 1)
+ fun_l22_n840(x)
+ else
+ fun_l22_n606(x)
+ end
+end
+
+def fun_l21_n849(x)
+ if (x < 1)
+ fun_l22_n214(x)
+ else
+ fun_l22_n198(x)
+ end
+end
+
+def fun_l21_n850(x)
+ if (x < 1)
+ fun_l22_n793(x)
+ else
+ fun_l22_n503(x)
+ end
+end
+
+def fun_l21_n851(x)
+ if (x < 1)
+ fun_l22_n210(x)
+ else
+ fun_l22_n267(x)
+ end
+end
+
+def fun_l21_n852(x)
+ if (x < 1)
+ fun_l22_n558(x)
+ else
+ fun_l22_n226(x)
+ end
+end
+
+def fun_l21_n853(x)
+ if (x < 1)
+ fun_l22_n12(x)
+ else
+ fun_l22_n765(x)
+ end
+end
+
+def fun_l21_n854(x)
+ if (x < 1)
+ fun_l22_n136(x)
+ else
+ fun_l22_n713(x)
+ end
+end
+
+def fun_l21_n855(x)
+ if (x < 1)
+ fun_l22_n638(x)
+ else
+ fun_l22_n999(x)
+ end
+end
+
+def fun_l21_n856(x)
+ if (x < 1)
+ fun_l22_n366(x)
+ else
+ fun_l22_n505(x)
+ end
+end
+
+def fun_l21_n857(x)
+ if (x < 1)
+ fun_l22_n935(x)
+ else
+ fun_l22_n657(x)
+ end
+end
+
+def fun_l21_n858(x)
+ if (x < 1)
+ fun_l22_n4(x)
+ else
+ fun_l22_n732(x)
+ end
+end
+
+def fun_l21_n859(x)
+ if (x < 1)
+ fun_l22_n433(x)
+ else
+ fun_l22_n350(x)
+ end
+end
+
+def fun_l21_n860(x)
+ if (x < 1)
+ fun_l22_n988(x)
+ else
+ fun_l22_n855(x)
+ end
+end
+
+def fun_l21_n861(x)
+ if (x < 1)
+ fun_l22_n906(x)
+ else
+ fun_l22_n118(x)
+ end
+end
+
+def fun_l21_n862(x)
+ if (x < 1)
+ fun_l22_n127(x)
+ else
+ fun_l22_n299(x)
+ end
+end
+
+def fun_l21_n863(x)
+ if (x < 1)
+ fun_l22_n324(x)
+ else
+ fun_l22_n776(x)
+ end
+end
+
+def fun_l21_n864(x)
+ if (x < 1)
+ fun_l22_n208(x)
+ else
+ fun_l22_n827(x)
+ end
+end
+
+def fun_l21_n865(x)
+ if (x < 1)
+ fun_l22_n846(x)
+ else
+ fun_l22_n750(x)
+ end
+end
+
+def fun_l21_n866(x)
+ if (x < 1)
+ fun_l22_n275(x)
+ else
+ fun_l22_n179(x)
+ end
+end
+
+def fun_l21_n867(x)
+ if (x < 1)
+ fun_l22_n234(x)
+ else
+ fun_l22_n809(x)
+ end
+end
+
+def fun_l21_n868(x)
+ if (x < 1)
+ fun_l22_n597(x)
+ else
+ fun_l22_n563(x)
+ end
+end
+
+def fun_l21_n869(x)
+ if (x < 1)
+ fun_l22_n987(x)
+ else
+ fun_l22_n690(x)
+ end
+end
+
+def fun_l21_n870(x)
+ if (x < 1)
+ fun_l22_n176(x)
+ else
+ fun_l22_n991(x)
+ end
+end
+
+def fun_l21_n871(x)
+ if (x < 1)
+ fun_l22_n272(x)
+ else
+ fun_l22_n211(x)
+ end
+end
+
+def fun_l21_n872(x)
+ if (x < 1)
+ fun_l22_n976(x)
+ else
+ fun_l22_n940(x)
+ end
+end
+
+def fun_l21_n873(x)
+ if (x < 1)
+ fun_l22_n871(x)
+ else
+ fun_l22_n866(x)
+ end
+end
+
+def fun_l21_n874(x)
+ if (x < 1)
+ fun_l22_n727(x)
+ else
+ fun_l22_n560(x)
+ end
+end
+
+def fun_l21_n875(x)
+ if (x < 1)
+ fun_l22_n201(x)
+ else
+ fun_l22_n423(x)
+ end
+end
+
+def fun_l21_n876(x)
+ if (x < 1)
+ fun_l22_n245(x)
+ else
+ fun_l22_n33(x)
+ end
+end
+
+def fun_l21_n877(x)
+ if (x < 1)
+ fun_l22_n535(x)
+ else
+ fun_l22_n11(x)
+ end
+end
+
+def fun_l21_n878(x)
+ if (x < 1)
+ fun_l22_n11(x)
+ else
+ fun_l22_n140(x)
+ end
+end
+
+def fun_l21_n879(x)
+ if (x < 1)
+ fun_l22_n757(x)
+ else
+ fun_l22_n64(x)
+ end
+end
+
+def fun_l21_n880(x)
+ if (x < 1)
+ fun_l22_n982(x)
+ else
+ fun_l22_n774(x)
+ end
+end
+
+def fun_l21_n881(x)
+ if (x < 1)
+ fun_l22_n324(x)
+ else
+ fun_l22_n903(x)
+ end
+end
+
+def fun_l21_n882(x)
+ if (x < 1)
+ fun_l22_n257(x)
+ else
+ fun_l22_n232(x)
+ end
+end
+
+def fun_l21_n883(x)
+ if (x < 1)
+ fun_l22_n546(x)
+ else
+ fun_l22_n317(x)
+ end
+end
+
+def fun_l21_n884(x)
+ if (x < 1)
+ fun_l22_n40(x)
+ else
+ fun_l22_n393(x)
+ end
+end
+
+def fun_l21_n885(x)
+ if (x < 1)
+ fun_l22_n281(x)
+ else
+ fun_l22_n572(x)
+ end
+end
+
+def fun_l21_n886(x)
+ if (x < 1)
+ fun_l22_n41(x)
+ else
+ fun_l22_n656(x)
+ end
+end
+
+def fun_l21_n887(x)
+ if (x < 1)
+ fun_l22_n911(x)
+ else
+ fun_l22_n55(x)
+ end
+end
+
+def fun_l21_n888(x)
+ if (x < 1)
+ fun_l22_n555(x)
+ else
+ fun_l22_n60(x)
+ end
+end
+
+def fun_l21_n889(x)
+ if (x < 1)
+ fun_l22_n69(x)
+ else
+ fun_l22_n330(x)
+ end
+end
+
+def fun_l21_n890(x)
+ if (x < 1)
+ fun_l22_n332(x)
+ else
+ fun_l22_n573(x)
+ end
+end
+
+def fun_l21_n891(x)
+ if (x < 1)
+ fun_l22_n529(x)
+ else
+ fun_l22_n555(x)
+ end
+end
+
+def fun_l21_n892(x)
+ if (x < 1)
+ fun_l22_n900(x)
+ else
+ fun_l22_n137(x)
+ end
+end
+
+def fun_l21_n893(x)
+ if (x < 1)
+ fun_l22_n479(x)
+ else
+ fun_l22_n196(x)
+ end
+end
+
+def fun_l21_n894(x)
+ if (x < 1)
+ fun_l22_n418(x)
+ else
+ fun_l22_n124(x)
+ end
+end
+
+def fun_l21_n895(x)
+ if (x < 1)
+ fun_l22_n658(x)
+ else
+ fun_l22_n196(x)
+ end
+end
+
+def fun_l21_n896(x)
+ if (x < 1)
+ fun_l22_n739(x)
+ else
+ fun_l22_n454(x)
+ end
+end
+
+def fun_l21_n897(x)
+ if (x < 1)
+ fun_l22_n716(x)
+ else
+ fun_l22_n150(x)
+ end
+end
+
+def fun_l21_n898(x)
+ if (x < 1)
+ fun_l22_n356(x)
+ else
+ fun_l22_n264(x)
+ end
+end
+
+def fun_l21_n899(x)
+ if (x < 1)
+ fun_l22_n667(x)
+ else
+ fun_l22_n629(x)
+ end
+end
+
+def fun_l21_n900(x)
+ if (x < 1)
+ fun_l22_n879(x)
+ else
+ fun_l22_n237(x)
+ end
+end
+
+def fun_l21_n901(x)
+ if (x < 1)
+ fun_l22_n462(x)
+ else
+ fun_l22_n401(x)
+ end
+end
+
+def fun_l21_n902(x)
+ if (x < 1)
+ fun_l22_n902(x)
+ else
+ fun_l22_n203(x)
+ end
+end
+
+def fun_l21_n903(x)
+ if (x < 1)
+ fun_l22_n802(x)
+ else
+ fun_l22_n383(x)
+ end
+end
+
+def fun_l21_n904(x)
+ if (x < 1)
+ fun_l22_n672(x)
+ else
+ fun_l22_n808(x)
+ end
+end
+
+def fun_l21_n905(x)
+ if (x < 1)
+ fun_l22_n625(x)
+ else
+ fun_l22_n320(x)
+ end
+end
+
+def fun_l21_n906(x)
+ if (x < 1)
+ fun_l22_n963(x)
+ else
+ fun_l22_n101(x)
+ end
+end
+
+def fun_l21_n907(x)
+ if (x < 1)
+ fun_l22_n609(x)
+ else
+ fun_l22_n500(x)
+ end
+end
+
+def fun_l21_n908(x)
+ if (x < 1)
+ fun_l22_n79(x)
+ else
+ fun_l22_n774(x)
+ end
+end
+
+def fun_l21_n909(x)
+ if (x < 1)
+ fun_l22_n152(x)
+ else
+ fun_l22_n245(x)
+ end
+end
+
+def fun_l21_n910(x)
+ if (x < 1)
+ fun_l22_n981(x)
+ else
+ fun_l22_n647(x)
+ end
+end
+
+def fun_l21_n911(x)
+ if (x < 1)
+ fun_l22_n457(x)
+ else
+ fun_l22_n394(x)
+ end
+end
+
+def fun_l21_n912(x)
+ if (x < 1)
+ fun_l22_n516(x)
+ else
+ fun_l22_n411(x)
+ end
+end
+
+def fun_l21_n913(x)
+ if (x < 1)
+ fun_l22_n212(x)
+ else
+ fun_l22_n159(x)
+ end
+end
+
+def fun_l21_n914(x)
+ if (x < 1)
+ fun_l22_n756(x)
+ else
+ fun_l22_n612(x)
+ end
+end
+
+def fun_l21_n915(x)
+ if (x < 1)
+ fun_l22_n78(x)
+ else
+ fun_l22_n387(x)
+ end
+end
+
+def fun_l21_n916(x)
+ if (x < 1)
+ fun_l22_n973(x)
+ else
+ fun_l22_n854(x)
+ end
+end
+
+def fun_l21_n917(x)
+ if (x < 1)
+ fun_l22_n613(x)
+ else
+ fun_l22_n78(x)
+ end
+end
+
+def fun_l21_n918(x)
+ if (x < 1)
+ fun_l22_n199(x)
+ else
+ fun_l22_n637(x)
+ end
+end
+
+def fun_l21_n919(x)
+ if (x < 1)
+ fun_l22_n834(x)
+ else
+ fun_l22_n804(x)
+ end
+end
+
+def fun_l21_n920(x)
+ if (x < 1)
+ fun_l22_n410(x)
+ else
+ fun_l22_n728(x)
+ end
+end
+
+def fun_l21_n921(x)
+ if (x < 1)
+ fun_l22_n139(x)
+ else
+ fun_l22_n236(x)
+ end
+end
+
+def fun_l21_n922(x)
+ if (x < 1)
+ fun_l22_n443(x)
+ else
+ fun_l22_n683(x)
+ end
+end
+
+def fun_l21_n923(x)
+ if (x < 1)
+ fun_l22_n226(x)
+ else
+ fun_l22_n906(x)
+ end
+end
+
+def fun_l21_n924(x)
+ if (x < 1)
+ fun_l22_n487(x)
+ else
+ fun_l22_n551(x)
+ end
+end
+
+def fun_l21_n925(x)
+ if (x < 1)
+ fun_l22_n143(x)
+ else
+ fun_l22_n932(x)
+ end
+end
+
+def fun_l21_n926(x)
+ if (x < 1)
+ fun_l22_n533(x)
+ else
+ fun_l22_n307(x)
+ end
+end
+
+def fun_l21_n927(x)
+ if (x < 1)
+ fun_l22_n89(x)
+ else
+ fun_l22_n278(x)
+ end
+end
+
+def fun_l21_n928(x)
+ if (x < 1)
+ fun_l22_n802(x)
+ else
+ fun_l22_n18(x)
+ end
+end
+
+def fun_l21_n929(x)
+ if (x < 1)
+ fun_l22_n266(x)
+ else
+ fun_l22_n924(x)
+ end
+end
+
+def fun_l21_n930(x)
+ if (x < 1)
+ fun_l22_n607(x)
+ else
+ fun_l22_n47(x)
+ end
+end
+
+def fun_l21_n931(x)
+ if (x < 1)
+ fun_l22_n241(x)
+ else
+ fun_l22_n983(x)
+ end
+end
+
+def fun_l21_n932(x)
+ if (x < 1)
+ fun_l22_n264(x)
+ else
+ fun_l22_n88(x)
+ end
+end
+
+def fun_l21_n933(x)
+ if (x < 1)
+ fun_l22_n26(x)
+ else
+ fun_l22_n940(x)
+ end
+end
+
+def fun_l21_n934(x)
+ if (x < 1)
+ fun_l22_n688(x)
+ else
+ fun_l22_n248(x)
+ end
+end
+
+def fun_l21_n935(x)
+ if (x < 1)
+ fun_l22_n704(x)
+ else
+ fun_l22_n808(x)
+ end
+end
+
+def fun_l21_n936(x)
+ if (x < 1)
+ fun_l22_n91(x)
+ else
+ fun_l22_n650(x)
+ end
+end
+
+def fun_l21_n937(x)
+ if (x < 1)
+ fun_l22_n308(x)
+ else
+ fun_l22_n389(x)
+ end
+end
+
+def fun_l21_n938(x)
+ if (x < 1)
+ fun_l22_n63(x)
+ else
+ fun_l22_n704(x)
+ end
+end
+
+def fun_l21_n939(x)
+ if (x < 1)
+ fun_l22_n785(x)
+ else
+ fun_l22_n852(x)
+ end
+end
+
+def fun_l21_n940(x)
+ if (x < 1)
+ fun_l22_n515(x)
+ else
+ fun_l22_n148(x)
+ end
+end
+
+def fun_l21_n941(x)
+ if (x < 1)
+ fun_l22_n607(x)
+ else
+ fun_l22_n162(x)
+ end
+end
+
+def fun_l21_n942(x)
+ if (x < 1)
+ fun_l22_n34(x)
+ else
+ fun_l22_n167(x)
+ end
+end
+
+def fun_l21_n943(x)
+ if (x < 1)
+ fun_l22_n239(x)
+ else
+ fun_l22_n100(x)
+ end
+end
+
+def fun_l21_n944(x)
+ if (x < 1)
+ fun_l22_n724(x)
+ else
+ fun_l22_n702(x)
+ end
+end
+
+def fun_l21_n945(x)
+ if (x < 1)
+ fun_l22_n121(x)
+ else
+ fun_l22_n89(x)
+ end
+end
+
+def fun_l21_n946(x)
+ if (x < 1)
+ fun_l22_n699(x)
+ else
+ fun_l22_n410(x)
+ end
+end
+
+def fun_l21_n947(x)
+ if (x < 1)
+ fun_l22_n33(x)
+ else
+ fun_l22_n843(x)
+ end
+end
+
+def fun_l21_n948(x)
+ if (x < 1)
+ fun_l22_n327(x)
+ else
+ fun_l22_n702(x)
+ end
+end
+
+def fun_l21_n949(x)
+ if (x < 1)
+ fun_l22_n191(x)
+ else
+ fun_l22_n137(x)
+ end
+end
+
+def fun_l21_n950(x)
+ if (x < 1)
+ fun_l22_n834(x)
+ else
+ fun_l22_n504(x)
+ end
+end
+
+def fun_l21_n951(x)
+ if (x < 1)
+ fun_l22_n444(x)
+ else
+ fun_l22_n857(x)
+ end
+end
+
+def fun_l21_n952(x)
+ if (x < 1)
+ fun_l22_n961(x)
+ else
+ fun_l22_n817(x)
+ end
+end
+
+def fun_l21_n953(x)
+ if (x < 1)
+ fun_l22_n166(x)
+ else
+ fun_l22_n538(x)
+ end
+end
+
+def fun_l21_n954(x)
+ if (x < 1)
+ fun_l22_n934(x)
+ else
+ fun_l22_n552(x)
+ end
+end
+
+def fun_l21_n955(x)
+ if (x < 1)
+ fun_l22_n144(x)
+ else
+ fun_l22_n814(x)
+ end
+end
+
+def fun_l21_n956(x)
+ if (x < 1)
+ fun_l22_n965(x)
+ else
+ fun_l22_n929(x)
+ end
+end
+
+def fun_l21_n957(x)
+ if (x < 1)
+ fun_l22_n812(x)
+ else
+ fun_l22_n529(x)
+ end
+end
+
+def fun_l21_n958(x)
+ if (x < 1)
+ fun_l22_n625(x)
+ else
+ fun_l22_n974(x)
+ end
+end
+
+def fun_l21_n959(x)
+ if (x < 1)
+ fun_l22_n627(x)
+ else
+ fun_l22_n262(x)
+ end
+end
+
+def fun_l21_n960(x)
+ if (x < 1)
+ fun_l22_n751(x)
+ else
+ fun_l22_n858(x)
+ end
+end
+
+def fun_l21_n961(x)
+ if (x < 1)
+ fun_l22_n819(x)
+ else
+ fun_l22_n408(x)
+ end
+end
+
+def fun_l21_n962(x)
+ if (x < 1)
+ fun_l22_n635(x)
+ else
+ fun_l22_n730(x)
+ end
+end
+
+def fun_l21_n963(x)
+ if (x < 1)
+ fun_l22_n865(x)
+ else
+ fun_l22_n919(x)
+ end
+end
+
+def fun_l21_n964(x)
+ if (x < 1)
+ fun_l22_n368(x)
+ else
+ fun_l22_n912(x)
+ end
+end
+
+def fun_l21_n965(x)
+ if (x < 1)
+ fun_l22_n202(x)
+ else
+ fun_l22_n493(x)
+ end
+end
+
+def fun_l21_n966(x)
+ if (x < 1)
+ fun_l22_n191(x)
+ else
+ fun_l22_n632(x)
+ end
+end
+
+def fun_l21_n967(x)
+ if (x < 1)
+ fun_l22_n96(x)
+ else
+ fun_l22_n329(x)
+ end
+end
+
+def fun_l21_n968(x)
+ if (x < 1)
+ fun_l22_n42(x)
+ else
+ fun_l22_n196(x)
+ end
+end
+
+def fun_l21_n969(x)
+ if (x < 1)
+ fun_l22_n521(x)
+ else
+ fun_l22_n875(x)
+ end
+end
+
+def fun_l21_n970(x)
+ if (x < 1)
+ fun_l22_n202(x)
+ else
+ fun_l22_n373(x)
+ end
+end
+
+def fun_l21_n971(x)
+ if (x < 1)
+ fun_l22_n647(x)
+ else
+ fun_l22_n591(x)
+ end
+end
+
+def fun_l21_n972(x)
+ if (x < 1)
+ fun_l22_n341(x)
+ else
+ fun_l22_n935(x)
+ end
+end
+
+def fun_l21_n973(x)
+ if (x < 1)
+ fun_l22_n151(x)
+ else
+ fun_l22_n396(x)
+ end
+end
+
+def fun_l21_n974(x)
+ if (x < 1)
+ fun_l22_n65(x)
+ else
+ fun_l22_n562(x)
+ end
+end
+
+def fun_l21_n975(x)
+ if (x < 1)
+ fun_l22_n450(x)
+ else
+ fun_l22_n482(x)
+ end
+end
+
+def fun_l21_n976(x)
+ if (x < 1)
+ fun_l22_n179(x)
+ else
+ fun_l22_n838(x)
+ end
+end
+
+def fun_l21_n977(x)
+ if (x < 1)
+ fun_l22_n571(x)
+ else
+ fun_l22_n703(x)
+ end
+end
+
+def fun_l21_n978(x)
+ if (x < 1)
+ fun_l22_n540(x)
+ else
+ fun_l22_n728(x)
+ end
+end
+
+def fun_l21_n979(x)
+ if (x < 1)
+ fun_l22_n170(x)
+ else
+ fun_l22_n487(x)
+ end
+end
+
+def fun_l21_n980(x)
+ if (x < 1)
+ fun_l22_n12(x)
+ else
+ fun_l22_n165(x)
+ end
+end
+
+def fun_l21_n981(x)
+ if (x < 1)
+ fun_l22_n722(x)
+ else
+ fun_l22_n456(x)
+ end
+end
+
+def fun_l21_n982(x)
+ if (x < 1)
+ fun_l22_n313(x)
+ else
+ fun_l22_n175(x)
+ end
+end
+
+def fun_l21_n983(x)
+ if (x < 1)
+ fun_l22_n473(x)
+ else
+ fun_l22_n840(x)
+ end
+end
+
+def fun_l21_n984(x)
+ if (x < 1)
+ fun_l22_n942(x)
+ else
+ fun_l22_n804(x)
+ end
+end
+
+def fun_l21_n985(x)
+ if (x < 1)
+ fun_l22_n116(x)
+ else
+ fun_l22_n117(x)
+ end
+end
+
+def fun_l21_n986(x)
+ if (x < 1)
+ fun_l22_n610(x)
+ else
+ fun_l22_n580(x)
+ end
+end
+
+def fun_l21_n987(x)
+ if (x < 1)
+ fun_l22_n299(x)
+ else
+ fun_l22_n416(x)
+ end
+end
+
+def fun_l21_n988(x)
+ if (x < 1)
+ fun_l22_n507(x)
+ else
+ fun_l22_n995(x)
+ end
+end
+
+def fun_l21_n989(x)
+ if (x < 1)
+ fun_l22_n239(x)
+ else
+ fun_l22_n414(x)
+ end
+end
+
+def fun_l21_n990(x)
+ if (x < 1)
+ fun_l22_n488(x)
+ else
+ fun_l22_n874(x)
+ end
+end
+
+def fun_l21_n991(x)
+ if (x < 1)
+ fun_l22_n586(x)
+ else
+ fun_l22_n88(x)
+ end
+end
+
+def fun_l21_n992(x)
+ if (x < 1)
+ fun_l22_n391(x)
+ else
+ fun_l22_n254(x)
+ end
+end
+
+def fun_l21_n993(x)
+ if (x < 1)
+ fun_l22_n64(x)
+ else
+ fun_l22_n485(x)
+ end
+end
+
+def fun_l21_n994(x)
+ if (x < 1)
+ fun_l22_n507(x)
+ else
+ fun_l22_n266(x)
+ end
+end
+
+def fun_l21_n995(x)
+ if (x < 1)
+ fun_l22_n660(x)
+ else
+ fun_l22_n208(x)
+ end
+end
+
+def fun_l21_n996(x)
+ if (x < 1)
+ fun_l22_n731(x)
+ else
+ fun_l22_n882(x)
+ end
+end
+
+def fun_l21_n997(x)
+ if (x < 1)
+ fun_l22_n283(x)
+ else
+ fun_l22_n719(x)
+ end
+end
+
+def fun_l21_n998(x)
+ if (x < 1)
+ fun_l22_n794(x)
+ else
+ fun_l22_n654(x)
+ end
+end
+
+def fun_l21_n999(x)
+ if (x < 1)
+ fun_l22_n642(x)
+ else
+ fun_l22_n158(x)
+ end
+end
+
+def fun_l22_n0(x)
+ if (x < 1)
+ fun_l23_n423(x)
+ else
+ fun_l23_n28(x)
+ end
+end
+
+def fun_l22_n1(x)
+ if (x < 1)
+ fun_l23_n494(x)
+ else
+ fun_l23_n894(x)
+ end
+end
+
+def fun_l22_n2(x)
+ if (x < 1)
+ fun_l23_n735(x)
+ else
+ fun_l23_n584(x)
+ end
+end
+
+def fun_l22_n3(x)
+ if (x < 1)
+ fun_l23_n982(x)
+ else
+ fun_l23_n790(x)
+ end
+end
+
+def fun_l22_n4(x)
+ if (x < 1)
+ fun_l23_n281(x)
+ else
+ fun_l23_n256(x)
+ end
+end
+
+def fun_l22_n5(x)
+ if (x < 1)
+ fun_l23_n286(x)
+ else
+ fun_l23_n48(x)
+ end
+end
+
+def fun_l22_n6(x)
+ if (x < 1)
+ fun_l23_n982(x)
+ else
+ fun_l23_n731(x)
+ end
+end
+
+def fun_l22_n7(x)
+ if (x < 1)
+ fun_l23_n83(x)
+ else
+ fun_l23_n267(x)
+ end
+end
+
+def fun_l22_n8(x)
+ if (x < 1)
+ fun_l23_n730(x)
+ else
+ fun_l23_n47(x)
+ end
+end
+
+def fun_l22_n9(x)
+ if (x < 1)
+ fun_l23_n106(x)
+ else
+ fun_l23_n125(x)
+ end
+end
+
+def fun_l22_n10(x)
+ if (x < 1)
+ fun_l23_n392(x)
+ else
+ fun_l23_n114(x)
+ end
+end
+
+def fun_l22_n11(x)
+ if (x < 1)
+ fun_l23_n778(x)
+ else
+ fun_l23_n103(x)
+ end
+end
+
+def fun_l22_n12(x)
+ if (x < 1)
+ fun_l23_n145(x)
+ else
+ fun_l23_n449(x)
+ end
+end
+
+def fun_l22_n13(x)
+ if (x < 1)
+ fun_l23_n106(x)
+ else
+ fun_l23_n67(x)
+ end
+end
+
+def fun_l22_n14(x)
+ if (x < 1)
+ fun_l23_n721(x)
+ else
+ fun_l23_n844(x)
+ end
+end
+
+def fun_l22_n15(x)
+ if (x < 1)
+ fun_l23_n411(x)
+ else
+ fun_l23_n479(x)
+ end
+end
+
+def fun_l22_n16(x)
+ if (x < 1)
+ fun_l23_n718(x)
+ else
+ fun_l23_n203(x)
+ end
+end
+
+def fun_l22_n17(x)
+ if (x < 1)
+ fun_l23_n660(x)
+ else
+ fun_l23_n606(x)
+ end
+end
+
+def fun_l22_n18(x)
+ if (x < 1)
+ fun_l23_n225(x)
+ else
+ fun_l23_n310(x)
+ end
+end
+
+def fun_l22_n19(x)
+ if (x < 1)
+ fun_l23_n923(x)
+ else
+ fun_l23_n10(x)
+ end
+end
+
+def fun_l22_n20(x)
+ if (x < 1)
+ fun_l23_n88(x)
+ else
+ fun_l23_n488(x)
+ end
+end
+
+def fun_l22_n21(x)
+ if (x < 1)
+ fun_l23_n986(x)
+ else
+ fun_l23_n123(x)
+ end
+end
+
+def fun_l22_n22(x)
+ if (x < 1)
+ fun_l23_n91(x)
+ else
+ fun_l23_n445(x)
+ end
+end
+
+def fun_l22_n23(x)
+ if (x < 1)
+ fun_l23_n525(x)
+ else
+ fun_l23_n454(x)
+ end
+end
+
+def fun_l22_n24(x)
+ if (x < 1)
+ fun_l23_n55(x)
+ else
+ fun_l23_n540(x)
+ end
+end
+
+def fun_l22_n25(x)
+ if (x < 1)
+ fun_l23_n562(x)
+ else
+ fun_l23_n323(x)
+ end
+end
+
+def fun_l22_n26(x)
+ if (x < 1)
+ fun_l23_n796(x)
+ else
+ fun_l23_n443(x)
+ end
+end
+
+def fun_l22_n27(x)
+ if (x < 1)
+ fun_l23_n421(x)
+ else
+ fun_l23_n654(x)
+ end
+end
+
+def fun_l22_n28(x)
+ if (x < 1)
+ fun_l23_n910(x)
+ else
+ fun_l23_n421(x)
+ end
+end
+
+def fun_l22_n29(x)
+ if (x < 1)
+ fun_l23_n184(x)
+ else
+ fun_l23_n24(x)
+ end
+end
+
+def fun_l22_n30(x)
+ if (x < 1)
+ fun_l23_n803(x)
+ else
+ fun_l23_n375(x)
+ end
+end
+
+def fun_l22_n31(x)
+ if (x < 1)
+ fun_l23_n662(x)
+ else
+ fun_l23_n50(x)
+ end
+end
+
+def fun_l22_n32(x)
+ if (x < 1)
+ fun_l23_n69(x)
+ else
+ fun_l23_n198(x)
+ end
+end
+
+def fun_l22_n33(x)
+ if (x < 1)
+ fun_l23_n465(x)
+ else
+ fun_l23_n979(x)
+ end
+end
+
+def fun_l22_n34(x)
+ if (x < 1)
+ fun_l23_n743(x)
+ else
+ fun_l23_n859(x)
+ end
+end
+
+def fun_l22_n35(x)
+ if (x < 1)
+ fun_l23_n524(x)
+ else
+ fun_l23_n157(x)
+ end
+end
+
+def fun_l22_n36(x)
+ if (x < 1)
+ fun_l23_n530(x)
+ else
+ fun_l23_n938(x)
+ end
+end
+
+def fun_l22_n37(x)
+ if (x < 1)
+ fun_l23_n386(x)
+ else
+ fun_l23_n882(x)
+ end
+end
+
+def fun_l22_n38(x)
+ if (x < 1)
+ fun_l23_n373(x)
+ else
+ fun_l23_n220(x)
+ end
+end
+
+def fun_l22_n39(x)
+ if (x < 1)
+ fun_l23_n783(x)
+ else
+ fun_l23_n731(x)
+ end
+end
+
+def fun_l22_n40(x)
+ if (x < 1)
+ fun_l23_n911(x)
+ else
+ fun_l23_n373(x)
+ end
+end
+
+def fun_l22_n41(x)
+ if (x < 1)
+ fun_l23_n516(x)
+ else
+ fun_l23_n586(x)
+ end
+end
+
+def fun_l22_n42(x)
+ if (x < 1)
+ fun_l23_n40(x)
+ else
+ fun_l23_n350(x)
+ end
+end
+
+def fun_l22_n43(x)
+ if (x < 1)
+ fun_l23_n690(x)
+ else
+ fun_l23_n349(x)
+ end
+end
+
+def fun_l22_n44(x)
+ if (x < 1)
+ fun_l23_n170(x)
+ else
+ fun_l23_n758(x)
+ end
+end
+
+def fun_l22_n45(x)
+ if (x < 1)
+ fun_l23_n317(x)
+ else
+ fun_l23_n856(x)
+ end
+end
+
+def fun_l22_n46(x)
+ if (x < 1)
+ fun_l23_n692(x)
+ else
+ fun_l23_n330(x)
+ end
+end
+
+def fun_l22_n47(x)
+ if (x < 1)
+ fun_l23_n848(x)
+ else
+ fun_l23_n767(x)
+ end
+end
+
+def fun_l22_n48(x)
+ if (x < 1)
+ fun_l23_n683(x)
+ else
+ fun_l23_n225(x)
+ end
+end
+
+def fun_l22_n49(x)
+ if (x < 1)
+ fun_l23_n967(x)
+ else
+ fun_l23_n872(x)
+ end
+end
+
+def fun_l22_n50(x)
+ if (x < 1)
+ fun_l23_n584(x)
+ else
+ fun_l23_n799(x)
+ end
+end
+
+def fun_l22_n51(x)
+ if (x < 1)
+ fun_l23_n156(x)
+ else
+ fun_l23_n710(x)
+ end
+end
+
+def fun_l22_n52(x)
+ if (x < 1)
+ fun_l23_n129(x)
+ else
+ fun_l23_n733(x)
+ end
+end
+
+def fun_l22_n53(x)
+ if (x < 1)
+ fun_l23_n364(x)
+ else
+ fun_l23_n460(x)
+ end
+end
+
+def fun_l22_n54(x)
+ if (x < 1)
+ fun_l23_n284(x)
+ else
+ fun_l23_n13(x)
+ end
+end
+
+def fun_l22_n55(x)
+ if (x < 1)
+ fun_l23_n734(x)
+ else
+ fun_l23_n498(x)
+ end
+end
+
+def fun_l22_n56(x)
+ if (x < 1)
+ fun_l23_n981(x)
+ else
+ fun_l23_n602(x)
+ end
+end
+
+def fun_l22_n57(x)
+ if (x < 1)
+ fun_l23_n632(x)
+ else
+ fun_l23_n123(x)
+ end
+end
+
+def fun_l22_n58(x)
+ if (x < 1)
+ fun_l23_n602(x)
+ else
+ fun_l23_n274(x)
+ end
+end
+
+def fun_l22_n59(x)
+ if (x < 1)
+ fun_l23_n718(x)
+ else
+ fun_l23_n351(x)
+ end
+end
+
+def fun_l22_n60(x)
+ if (x < 1)
+ fun_l23_n618(x)
+ else
+ fun_l23_n583(x)
+ end
+end
+
+def fun_l22_n61(x)
+ if (x < 1)
+ fun_l23_n63(x)
+ else
+ fun_l23_n573(x)
+ end
+end
+
+def fun_l22_n62(x)
+ if (x < 1)
+ fun_l23_n73(x)
+ else
+ fun_l23_n429(x)
+ end
+end
+
+def fun_l22_n63(x)
+ if (x < 1)
+ fun_l23_n969(x)
+ else
+ fun_l23_n518(x)
+ end
+end
+
+def fun_l22_n64(x)
+ if (x < 1)
+ fun_l23_n493(x)
+ else
+ fun_l23_n868(x)
+ end
+end
+
+def fun_l22_n65(x)
+ if (x < 1)
+ fun_l23_n31(x)
+ else
+ fun_l23_n366(x)
+ end
+end
+
+def fun_l22_n66(x)
+ if (x < 1)
+ fun_l23_n442(x)
+ else
+ fun_l23_n362(x)
+ end
+end
+
+def fun_l22_n67(x)
+ if (x < 1)
+ fun_l23_n804(x)
+ else
+ fun_l23_n513(x)
+ end
+end
+
+def fun_l22_n68(x)
+ if (x < 1)
+ fun_l23_n973(x)
+ else
+ fun_l23_n723(x)
+ end
+end
+
+def fun_l22_n69(x)
+ if (x < 1)
+ fun_l23_n424(x)
+ else
+ fun_l23_n247(x)
+ end
+end
+
+def fun_l22_n70(x)
+ if (x < 1)
+ fun_l23_n992(x)
+ else
+ fun_l23_n944(x)
+ end
+end
+
+def fun_l22_n71(x)
+ if (x < 1)
+ fun_l23_n209(x)
+ else
+ fun_l23_n645(x)
+ end
+end
+
+def fun_l22_n72(x)
+ if (x < 1)
+ fun_l23_n373(x)
+ else
+ fun_l23_n540(x)
+ end
+end
+
+def fun_l22_n73(x)
+ if (x < 1)
+ fun_l23_n785(x)
+ else
+ fun_l23_n840(x)
+ end
+end
+
+def fun_l22_n74(x)
+ if (x < 1)
+ fun_l23_n607(x)
+ else
+ fun_l23_n584(x)
+ end
+end
+
+def fun_l22_n75(x)
+ if (x < 1)
+ fun_l23_n331(x)
+ else
+ fun_l23_n196(x)
+ end
+end
+
+def fun_l22_n76(x)
+ if (x < 1)
+ fun_l23_n453(x)
+ else
+ fun_l23_n991(x)
+ end
+end
+
+def fun_l22_n77(x)
+ if (x < 1)
+ fun_l23_n689(x)
+ else
+ fun_l23_n222(x)
+ end
+end
+
+def fun_l22_n78(x)
+ if (x < 1)
+ fun_l23_n446(x)
+ else
+ fun_l23_n767(x)
+ end
+end
+
+def fun_l22_n79(x)
+ if (x < 1)
+ fun_l23_n648(x)
+ else
+ fun_l23_n811(x)
+ end
+end
+
+def fun_l22_n80(x)
+ if (x < 1)
+ fun_l23_n210(x)
+ else
+ fun_l23_n52(x)
+ end
+end
+
+def fun_l22_n81(x)
+ if (x < 1)
+ fun_l23_n786(x)
+ else
+ fun_l23_n984(x)
+ end
+end
+
+def fun_l22_n82(x)
+ if (x < 1)
+ fun_l23_n693(x)
+ else
+ fun_l23_n103(x)
+ end
+end
+
+def fun_l22_n83(x)
+ if (x < 1)
+ fun_l23_n768(x)
+ else
+ fun_l23_n794(x)
+ end
+end
+
+def fun_l22_n84(x)
+ if (x < 1)
+ fun_l23_n820(x)
+ else
+ fun_l23_n774(x)
+ end
+end
+
+def fun_l22_n85(x)
+ if (x < 1)
+ fun_l23_n972(x)
+ else
+ fun_l23_n254(x)
+ end
+end
+
+def fun_l22_n86(x)
+ if (x < 1)
+ fun_l23_n609(x)
+ else
+ fun_l23_n524(x)
+ end
+end
+
+def fun_l22_n87(x)
+ if (x < 1)
+ fun_l23_n486(x)
+ else
+ fun_l23_n173(x)
+ end
+end
+
+def fun_l22_n88(x)
+ if (x < 1)
+ fun_l23_n236(x)
+ else
+ fun_l23_n359(x)
+ end
+end
+
+def fun_l22_n89(x)
+ if (x < 1)
+ fun_l23_n292(x)
+ else
+ fun_l23_n232(x)
+ end
+end
+
+def fun_l22_n90(x)
+ if (x < 1)
+ fun_l23_n104(x)
+ else
+ fun_l23_n799(x)
+ end
+end
+
+def fun_l22_n91(x)
+ if (x < 1)
+ fun_l23_n957(x)
+ else
+ fun_l23_n836(x)
+ end
+end
+
+def fun_l22_n92(x)
+ if (x < 1)
+ fun_l23_n179(x)
+ else
+ fun_l23_n416(x)
+ end
+end
+
+def fun_l22_n93(x)
+ if (x < 1)
+ fun_l23_n281(x)
+ else
+ fun_l23_n530(x)
+ end
+end
+
+def fun_l22_n94(x)
+ if (x < 1)
+ fun_l23_n627(x)
+ else
+ fun_l23_n577(x)
+ end
+end
+
+def fun_l22_n95(x)
+ if (x < 1)
+ fun_l23_n594(x)
+ else
+ fun_l23_n949(x)
+ end
+end
+
+def fun_l22_n96(x)
+ if (x < 1)
+ fun_l23_n408(x)
+ else
+ fun_l23_n547(x)
+ end
+end
+
+def fun_l22_n97(x)
+ if (x < 1)
+ fun_l23_n276(x)
+ else
+ fun_l23_n105(x)
+ end
+end
+
+def fun_l22_n98(x)
+ if (x < 1)
+ fun_l23_n181(x)
+ else
+ fun_l23_n659(x)
+ end
+end
+
+def fun_l22_n99(x)
+ if (x < 1)
+ fun_l23_n7(x)
+ else
+ fun_l23_n423(x)
+ end
+end
+
+def fun_l22_n100(x)
+ if (x < 1)
+ fun_l23_n123(x)
+ else
+ fun_l23_n244(x)
+ end
+end
+
+def fun_l22_n101(x)
+ if (x < 1)
+ fun_l23_n476(x)
+ else
+ fun_l23_n319(x)
+ end
+end
+
+def fun_l22_n102(x)
+ if (x < 1)
+ fun_l23_n443(x)
+ else
+ fun_l23_n959(x)
+ end
+end
+
+def fun_l22_n103(x)
+ if (x < 1)
+ fun_l23_n78(x)
+ else
+ fun_l23_n490(x)
+ end
+end
+
+def fun_l22_n104(x)
+ if (x < 1)
+ fun_l23_n761(x)
+ else
+ fun_l23_n23(x)
+ end
+end
+
+def fun_l22_n105(x)
+ if (x < 1)
+ fun_l23_n126(x)
+ else
+ fun_l23_n426(x)
+ end
+end
+
+def fun_l22_n106(x)
+ if (x < 1)
+ fun_l23_n740(x)
+ else
+ fun_l23_n328(x)
+ end
+end
+
+def fun_l22_n107(x)
+ if (x < 1)
+ fun_l23_n249(x)
+ else
+ fun_l23_n890(x)
+ end
+end
+
+def fun_l22_n108(x)
+ if (x < 1)
+ fun_l23_n665(x)
+ else
+ fun_l23_n60(x)
+ end
+end
+
+def fun_l22_n109(x)
+ if (x < 1)
+ fun_l23_n617(x)
+ else
+ fun_l23_n42(x)
+ end
+end
+
+def fun_l22_n110(x)
+ if (x < 1)
+ fun_l23_n484(x)
+ else
+ fun_l23_n480(x)
+ end
+end
+
+def fun_l22_n111(x)
+ if (x < 1)
+ fun_l23_n135(x)
+ else
+ fun_l23_n447(x)
+ end
+end
+
+def fun_l22_n112(x)
+ if (x < 1)
+ fun_l23_n881(x)
+ else
+ fun_l23_n410(x)
+ end
+end
+
+def fun_l22_n113(x)
+ if (x < 1)
+ fun_l23_n989(x)
+ else
+ fun_l23_n849(x)
+ end
+end
+
+def fun_l22_n114(x)
+ if (x < 1)
+ fun_l23_n660(x)
+ else
+ fun_l23_n307(x)
+ end
+end
+
+def fun_l22_n115(x)
+ if (x < 1)
+ fun_l23_n372(x)
+ else
+ fun_l23_n150(x)
+ end
+end
+
+def fun_l22_n116(x)
+ if (x < 1)
+ fun_l23_n770(x)
+ else
+ fun_l23_n109(x)
+ end
+end
+
+def fun_l22_n117(x)
+ if (x < 1)
+ fun_l23_n364(x)
+ else
+ fun_l23_n321(x)
+ end
+end
+
+def fun_l22_n118(x)
+ if (x < 1)
+ fun_l23_n363(x)
+ else
+ fun_l23_n876(x)
+ end
+end
+
+def fun_l22_n119(x)
+ if (x < 1)
+ fun_l23_n114(x)
+ else
+ fun_l23_n25(x)
+ end
+end
+
+def fun_l22_n120(x)
+ if (x < 1)
+ fun_l23_n160(x)
+ else
+ fun_l23_n744(x)
+ end
+end
+
+def fun_l22_n121(x)
+ if (x < 1)
+ fun_l23_n265(x)
+ else
+ fun_l23_n972(x)
+ end
+end
+
+def fun_l22_n122(x)
+ if (x < 1)
+ fun_l23_n259(x)
+ else
+ fun_l23_n203(x)
+ end
+end
+
+def fun_l22_n123(x)
+ if (x < 1)
+ fun_l23_n865(x)
+ else
+ fun_l23_n137(x)
+ end
+end
+
+def fun_l22_n124(x)
+ if (x < 1)
+ fun_l23_n427(x)
+ else
+ fun_l23_n437(x)
+ end
+end
+
+def fun_l22_n125(x)
+ if (x < 1)
+ fun_l23_n405(x)
+ else
+ fun_l23_n603(x)
+ end
+end
+
+def fun_l22_n126(x)
+ if (x < 1)
+ fun_l23_n938(x)
+ else
+ fun_l23_n505(x)
+ end
+end
+
+def fun_l22_n127(x)
+ if (x < 1)
+ fun_l23_n307(x)
+ else
+ fun_l23_n26(x)
+ end
+end
+
+def fun_l22_n128(x)
+ if (x < 1)
+ fun_l23_n15(x)
+ else
+ fun_l23_n406(x)
+ end
+end
+
+def fun_l22_n129(x)
+ if (x < 1)
+ fun_l23_n633(x)
+ else
+ fun_l23_n831(x)
+ end
+end
+
+def fun_l22_n130(x)
+ if (x < 1)
+ fun_l23_n805(x)
+ else
+ fun_l23_n216(x)
+ end
+end
+
+def fun_l22_n131(x)
+ if (x < 1)
+ fun_l23_n552(x)
+ else
+ fun_l23_n864(x)
+ end
+end
+
+def fun_l22_n132(x)
+ if (x < 1)
+ fun_l23_n50(x)
+ else
+ fun_l23_n805(x)
+ end
+end
+
+def fun_l22_n133(x)
+ if (x < 1)
+ fun_l23_n823(x)
+ else
+ fun_l23_n427(x)
+ end
+end
+
+def fun_l22_n134(x)
+ if (x < 1)
+ fun_l23_n964(x)
+ else
+ fun_l23_n214(x)
+ end
+end
+
+def fun_l22_n135(x)
+ if (x < 1)
+ fun_l23_n267(x)
+ else
+ fun_l23_n351(x)
+ end
+end
+
+def fun_l22_n136(x)
+ if (x < 1)
+ fun_l23_n557(x)
+ else
+ fun_l23_n257(x)
+ end
+end
+
+def fun_l22_n137(x)
+ if (x < 1)
+ fun_l23_n966(x)
+ else
+ fun_l23_n248(x)
+ end
+end
+
+def fun_l22_n138(x)
+ if (x < 1)
+ fun_l23_n569(x)
+ else
+ fun_l23_n376(x)
+ end
+end
+
+def fun_l22_n139(x)
+ if (x < 1)
+ fun_l23_n198(x)
+ else
+ fun_l23_n595(x)
+ end
+end
+
+def fun_l22_n140(x)
+ if (x < 1)
+ fun_l23_n107(x)
+ else
+ fun_l23_n134(x)
+ end
+end
+
+def fun_l22_n141(x)
+ if (x < 1)
+ fun_l23_n113(x)
+ else
+ fun_l23_n290(x)
+ end
+end
+
+def fun_l22_n142(x)
+ if (x < 1)
+ fun_l23_n721(x)
+ else
+ fun_l23_n641(x)
+ end
+end
+
+def fun_l22_n143(x)
+ if (x < 1)
+ fun_l23_n535(x)
+ else
+ fun_l23_n103(x)
+ end
+end
+
+def fun_l22_n144(x)
+ if (x < 1)
+ fun_l23_n690(x)
+ else
+ fun_l23_n125(x)
+ end
+end
+
+def fun_l22_n145(x)
+ if (x < 1)
+ fun_l23_n514(x)
+ else
+ fun_l23_n999(x)
+ end
+end
+
+def fun_l22_n146(x)
+ if (x < 1)
+ fun_l23_n503(x)
+ else
+ fun_l23_n951(x)
+ end
+end
+
+def fun_l22_n147(x)
+ if (x < 1)
+ fun_l23_n413(x)
+ else
+ fun_l23_n634(x)
+ end
+end
+
+def fun_l22_n148(x)
+ if (x < 1)
+ fun_l23_n818(x)
+ else
+ fun_l23_n286(x)
+ end
+end
+
+def fun_l22_n149(x)
+ if (x < 1)
+ fun_l23_n768(x)
+ else
+ fun_l23_n832(x)
+ end
+end
+
+def fun_l22_n150(x)
+ if (x < 1)
+ fun_l23_n128(x)
+ else
+ fun_l23_n588(x)
+ end
+end
+
+def fun_l22_n151(x)
+ if (x < 1)
+ fun_l23_n787(x)
+ else
+ fun_l23_n742(x)
+ end
+end
+
+def fun_l22_n152(x)
+ if (x < 1)
+ fun_l23_n166(x)
+ else
+ fun_l23_n856(x)
+ end
+end
+
+def fun_l22_n153(x)
+ if (x < 1)
+ fun_l23_n377(x)
+ else
+ fun_l23_n90(x)
+ end
+end
+
+def fun_l22_n154(x)
+ if (x < 1)
+ fun_l23_n851(x)
+ else
+ fun_l23_n591(x)
+ end
+end
+
+def fun_l22_n155(x)
+ if (x < 1)
+ fun_l23_n896(x)
+ else
+ fun_l23_n372(x)
+ end
+end
+
+def fun_l22_n156(x)
+ if (x < 1)
+ fun_l23_n132(x)
+ else
+ fun_l23_n144(x)
+ end
+end
+
+def fun_l22_n157(x)
+ if (x < 1)
+ fun_l23_n251(x)
+ else
+ fun_l23_n620(x)
+ end
+end
+
+def fun_l22_n158(x)
+ if (x < 1)
+ fun_l23_n612(x)
+ else
+ fun_l23_n246(x)
+ end
+end
+
+def fun_l22_n159(x)
+ if (x < 1)
+ fun_l23_n530(x)
+ else
+ fun_l23_n94(x)
+ end
+end
+
+def fun_l22_n160(x)
+ if (x < 1)
+ fun_l23_n310(x)
+ else
+ fun_l23_n706(x)
+ end
+end
+
+def fun_l22_n161(x)
+ if (x < 1)
+ fun_l23_n420(x)
+ else
+ fun_l23_n576(x)
+ end
+end
+
+def fun_l22_n162(x)
+ if (x < 1)
+ fun_l23_n544(x)
+ else
+ fun_l23_n277(x)
+ end
+end
+
+def fun_l22_n163(x)
+ if (x < 1)
+ fun_l23_n770(x)
+ else
+ fun_l23_n94(x)
+ end
+end
+
+def fun_l22_n164(x)
+ if (x < 1)
+ fun_l23_n49(x)
+ else
+ fun_l23_n576(x)
+ end
+end
+
+def fun_l22_n165(x)
+ if (x < 1)
+ fun_l23_n610(x)
+ else
+ fun_l23_n184(x)
+ end
+end
+
+def fun_l22_n166(x)
+ if (x < 1)
+ fun_l23_n974(x)
+ else
+ fun_l23_n54(x)
+ end
+end
+
+def fun_l22_n167(x)
+ if (x < 1)
+ fun_l23_n179(x)
+ else
+ fun_l23_n485(x)
+ end
+end
+
+def fun_l22_n168(x)
+ if (x < 1)
+ fun_l23_n114(x)
+ else
+ fun_l23_n766(x)
+ end
+end
+
+def fun_l22_n169(x)
+ if (x < 1)
+ fun_l23_n399(x)
+ else
+ fun_l23_n830(x)
+ end
+end
+
+def fun_l22_n170(x)
+ if (x < 1)
+ fun_l23_n332(x)
+ else
+ fun_l23_n536(x)
+ end
+end
+
+def fun_l22_n171(x)
+ if (x < 1)
+ fun_l23_n384(x)
+ else
+ fun_l23_n773(x)
+ end
+end
+
+def fun_l22_n172(x)
+ if (x < 1)
+ fun_l23_n52(x)
+ else
+ fun_l23_n7(x)
+ end
+end
+
+def fun_l22_n173(x)
+ if (x < 1)
+ fun_l23_n85(x)
+ else
+ fun_l23_n803(x)
+ end
+end
+
+def fun_l22_n174(x)
+ if (x < 1)
+ fun_l23_n853(x)
+ else
+ fun_l23_n682(x)
+ end
+end
+
+def fun_l22_n175(x)
+ if (x < 1)
+ fun_l23_n112(x)
+ else
+ fun_l23_n295(x)
+ end
+end
+
+def fun_l22_n176(x)
+ if (x < 1)
+ fun_l23_n347(x)
+ else
+ fun_l23_n908(x)
+ end
+end
+
+def fun_l22_n177(x)
+ if (x < 1)
+ fun_l23_n267(x)
+ else
+ fun_l23_n19(x)
+ end
+end
+
+def fun_l22_n178(x)
+ if (x < 1)
+ fun_l23_n8(x)
+ else
+ fun_l23_n739(x)
+ end
+end
+
+def fun_l22_n179(x)
+ if (x < 1)
+ fun_l23_n201(x)
+ else
+ fun_l23_n321(x)
+ end
+end
+
+def fun_l22_n180(x)
+ if (x < 1)
+ fun_l23_n773(x)
+ else
+ fun_l23_n224(x)
+ end
+end
+
+def fun_l22_n181(x)
+ if (x < 1)
+ fun_l23_n966(x)
+ else
+ fun_l23_n324(x)
+ end
+end
+
+def fun_l22_n182(x)
+ if (x < 1)
+ fun_l23_n389(x)
+ else
+ fun_l23_n190(x)
+ end
+end
+
+def fun_l22_n183(x)
+ if (x < 1)
+ fun_l23_n918(x)
+ else
+ fun_l23_n512(x)
+ end
+end
+
+def fun_l22_n184(x)
+ if (x < 1)
+ fun_l23_n360(x)
+ else
+ fun_l23_n702(x)
+ end
+end
+
+def fun_l22_n185(x)
+ if (x < 1)
+ fun_l23_n794(x)
+ else
+ fun_l23_n51(x)
+ end
+end
+
+def fun_l22_n186(x)
+ if (x < 1)
+ fun_l23_n982(x)
+ else
+ fun_l23_n779(x)
+ end
+end
+
+def fun_l22_n187(x)
+ if (x < 1)
+ fun_l23_n263(x)
+ else
+ fun_l23_n659(x)
+ end
+end
+
+def fun_l22_n188(x)
+ if (x < 1)
+ fun_l23_n203(x)
+ else
+ fun_l23_n705(x)
+ end
+end
+
+def fun_l22_n189(x)
+ if (x < 1)
+ fun_l23_n976(x)
+ else
+ fun_l23_n307(x)
+ end
+end
+
+def fun_l22_n190(x)
+ if (x < 1)
+ fun_l23_n281(x)
+ else
+ fun_l23_n880(x)
+ end
+end
+
+def fun_l22_n191(x)
+ if (x < 1)
+ fun_l23_n238(x)
+ else
+ fun_l23_n752(x)
+ end
+end
+
+def fun_l22_n192(x)
+ if (x < 1)
+ fun_l23_n679(x)
+ else
+ fun_l23_n935(x)
+ end
+end
+
+def fun_l22_n193(x)
+ if (x < 1)
+ fun_l23_n823(x)
+ else
+ fun_l23_n340(x)
+ end
+end
+
+def fun_l22_n194(x)
+ if (x < 1)
+ fun_l23_n687(x)
+ else
+ fun_l23_n71(x)
+ end
+end
+
+def fun_l22_n195(x)
+ if (x < 1)
+ fun_l23_n47(x)
+ else
+ fun_l23_n119(x)
+ end
+end
+
+def fun_l22_n196(x)
+ if (x < 1)
+ fun_l23_n702(x)
+ else
+ fun_l23_n213(x)
+ end
+end
+
+def fun_l22_n197(x)
+ if (x < 1)
+ fun_l23_n300(x)
+ else
+ fun_l23_n52(x)
+ end
+end
+
+def fun_l22_n198(x)
+ if (x < 1)
+ fun_l23_n85(x)
+ else
+ fun_l23_n845(x)
+ end
+end
+
+def fun_l22_n199(x)
+ if (x < 1)
+ fun_l23_n503(x)
+ else
+ fun_l23_n322(x)
+ end
+end
+
+def fun_l22_n200(x)
+ if (x < 1)
+ fun_l23_n151(x)
+ else
+ fun_l23_n743(x)
+ end
+end
+
+def fun_l22_n201(x)
+ if (x < 1)
+ fun_l23_n531(x)
+ else
+ fun_l23_n597(x)
+ end
+end
+
+def fun_l22_n202(x)
+ if (x < 1)
+ fun_l23_n120(x)
+ else
+ fun_l23_n300(x)
+ end
+end
+
+def fun_l22_n203(x)
+ if (x < 1)
+ fun_l23_n124(x)
+ else
+ fun_l23_n609(x)
+ end
+end
+
+def fun_l22_n204(x)
+ if (x < 1)
+ fun_l23_n945(x)
+ else
+ fun_l23_n498(x)
+ end
+end
+
+def fun_l22_n205(x)
+ if (x < 1)
+ fun_l23_n983(x)
+ else
+ fun_l23_n16(x)
+ end
+end
+
+def fun_l22_n206(x)
+ if (x < 1)
+ fun_l23_n271(x)
+ else
+ fun_l23_n612(x)
+ end
+end
+
+def fun_l22_n207(x)
+ if (x < 1)
+ fun_l23_n762(x)
+ else
+ fun_l23_n596(x)
+ end
+end
+
+def fun_l22_n208(x)
+ if (x < 1)
+ fun_l23_n992(x)
+ else
+ fun_l23_n90(x)
+ end
+end
+
+def fun_l22_n209(x)
+ if (x < 1)
+ fun_l23_n994(x)
+ else
+ fun_l23_n265(x)
+ end
+end
+
+def fun_l22_n210(x)
+ if (x < 1)
+ fun_l23_n449(x)
+ else
+ fun_l23_n609(x)
+ end
+end
+
+def fun_l22_n211(x)
+ if (x < 1)
+ fun_l23_n816(x)
+ else
+ fun_l23_n8(x)
+ end
+end
+
+def fun_l22_n212(x)
+ if (x < 1)
+ fun_l23_n526(x)
+ else
+ fun_l23_n982(x)
+ end
+end
+
+def fun_l22_n213(x)
+ if (x < 1)
+ fun_l23_n25(x)
+ else
+ fun_l23_n302(x)
+ end
+end
+
+def fun_l22_n214(x)
+ if (x < 1)
+ fun_l23_n868(x)
+ else
+ fun_l23_n895(x)
+ end
+end
+
+def fun_l22_n215(x)
+ if (x < 1)
+ fun_l23_n3(x)
+ else
+ fun_l23_n914(x)
+ end
+end
+
+def fun_l22_n216(x)
+ if (x < 1)
+ fun_l23_n106(x)
+ else
+ fun_l23_n271(x)
+ end
+end
+
+def fun_l22_n217(x)
+ if (x < 1)
+ fun_l23_n567(x)
+ else
+ fun_l23_n931(x)
+ end
+end
+
+def fun_l22_n218(x)
+ if (x < 1)
+ fun_l23_n7(x)
+ else
+ fun_l23_n319(x)
+ end
+end
+
+def fun_l22_n219(x)
+ if (x < 1)
+ fun_l23_n510(x)
+ else
+ fun_l23_n753(x)
+ end
+end
+
+def fun_l22_n220(x)
+ if (x < 1)
+ fun_l23_n529(x)
+ else
+ fun_l23_n514(x)
+ end
+end
+
+def fun_l22_n221(x)
+ if (x < 1)
+ fun_l23_n871(x)
+ else
+ fun_l23_n571(x)
+ end
+end
+
+def fun_l22_n222(x)
+ if (x < 1)
+ fun_l23_n739(x)
+ else
+ fun_l23_n716(x)
+ end
+end
+
+def fun_l22_n223(x)
+ if (x < 1)
+ fun_l23_n781(x)
+ else
+ fun_l23_n730(x)
+ end
+end
+
+def fun_l22_n224(x)
+ if (x < 1)
+ fun_l23_n647(x)
+ else
+ fun_l23_n647(x)
+ end
+end
+
+def fun_l22_n225(x)
+ if (x < 1)
+ fun_l23_n968(x)
+ else
+ fun_l23_n680(x)
+ end
+end
+
+def fun_l22_n226(x)
+ if (x < 1)
+ fun_l23_n400(x)
+ else
+ fun_l23_n725(x)
+ end
+end
+
+def fun_l22_n227(x)
+ if (x < 1)
+ fun_l23_n386(x)
+ else
+ fun_l23_n859(x)
+ end
+end
+
+def fun_l22_n228(x)
+ if (x < 1)
+ fun_l23_n751(x)
+ else
+ fun_l23_n640(x)
+ end
+end
+
+def fun_l22_n229(x)
+ if (x < 1)
+ fun_l23_n273(x)
+ else
+ fun_l23_n754(x)
+ end
+end
+
+def fun_l22_n230(x)
+ if (x < 1)
+ fun_l23_n861(x)
+ else
+ fun_l23_n783(x)
+ end
+end
+
+def fun_l22_n231(x)
+ if (x < 1)
+ fun_l23_n665(x)
+ else
+ fun_l23_n18(x)
+ end
+end
+
+def fun_l22_n232(x)
+ if (x < 1)
+ fun_l23_n680(x)
+ else
+ fun_l23_n471(x)
+ end
+end
+
+def fun_l22_n233(x)
+ if (x < 1)
+ fun_l23_n400(x)
+ else
+ fun_l23_n935(x)
+ end
+end
+
+def fun_l22_n234(x)
+ if (x < 1)
+ fun_l23_n563(x)
+ else
+ fun_l23_n799(x)
+ end
+end
+
+def fun_l22_n235(x)
+ if (x < 1)
+ fun_l23_n712(x)
+ else
+ fun_l23_n20(x)
+ end
+end
+
+def fun_l22_n236(x)
+ if (x < 1)
+ fun_l23_n579(x)
+ else
+ fun_l23_n152(x)
+ end
+end
+
+def fun_l22_n237(x)
+ if (x < 1)
+ fun_l23_n752(x)
+ else
+ fun_l23_n282(x)
+ end
+end
+
+def fun_l22_n238(x)
+ if (x < 1)
+ fun_l23_n609(x)
+ else
+ fun_l23_n980(x)
+ end
+end
+
+def fun_l22_n239(x)
+ if (x < 1)
+ fun_l23_n916(x)
+ else
+ fun_l23_n52(x)
+ end
+end
+
+def fun_l22_n240(x)
+ if (x < 1)
+ fun_l23_n468(x)
+ else
+ fun_l23_n735(x)
+ end
+end
+
+def fun_l22_n241(x)
+ if (x < 1)
+ fun_l23_n894(x)
+ else
+ fun_l23_n776(x)
+ end
+end
+
+def fun_l22_n242(x)
+ if (x < 1)
+ fun_l23_n782(x)
+ else
+ fun_l23_n406(x)
+ end
+end
+
+def fun_l22_n243(x)
+ if (x < 1)
+ fun_l23_n90(x)
+ else
+ fun_l23_n226(x)
+ end
+end
+
+def fun_l22_n244(x)
+ if (x < 1)
+ fun_l23_n967(x)
+ else
+ fun_l23_n252(x)
+ end
+end
+
+def fun_l22_n245(x)
+ if (x < 1)
+ fun_l23_n189(x)
+ else
+ fun_l23_n252(x)
+ end
+end
+
+def fun_l22_n246(x)
+ if (x < 1)
+ fun_l23_n919(x)
+ else
+ fun_l23_n581(x)
+ end
+end
+
+def fun_l22_n247(x)
+ if (x < 1)
+ fun_l23_n212(x)
+ else
+ fun_l23_n465(x)
+ end
+end
+
+def fun_l22_n248(x)
+ if (x < 1)
+ fun_l23_n880(x)
+ else
+ fun_l23_n823(x)
+ end
+end
+
+def fun_l22_n249(x)
+ if (x < 1)
+ fun_l23_n227(x)
+ else
+ fun_l23_n620(x)
+ end
+end
+
+def fun_l22_n250(x)
+ if (x < 1)
+ fun_l23_n875(x)
+ else
+ fun_l23_n707(x)
+ end
+end
+
+def fun_l22_n251(x)
+ if (x < 1)
+ fun_l23_n623(x)
+ else
+ fun_l23_n132(x)
+ end
+end
+
+def fun_l22_n252(x)
+ if (x < 1)
+ fun_l23_n739(x)
+ else
+ fun_l23_n417(x)
+ end
+end
+
+def fun_l22_n253(x)
+ if (x < 1)
+ fun_l23_n977(x)
+ else
+ fun_l23_n216(x)
+ end
+end
+
+def fun_l22_n254(x)
+ if (x < 1)
+ fun_l23_n725(x)
+ else
+ fun_l23_n168(x)
+ end
+end
+
+def fun_l22_n255(x)
+ if (x < 1)
+ fun_l23_n878(x)
+ else
+ fun_l23_n699(x)
+ end
+end
+
+def fun_l22_n256(x)
+ if (x < 1)
+ fun_l23_n423(x)
+ else
+ fun_l23_n626(x)
+ end
+end
+
+def fun_l22_n257(x)
+ if (x < 1)
+ fun_l23_n29(x)
+ else
+ fun_l23_n248(x)
+ end
+end
+
+def fun_l22_n258(x)
+ if (x < 1)
+ fun_l23_n78(x)
+ else
+ fun_l23_n925(x)
+ end
+end
+
+def fun_l22_n259(x)
+ if (x < 1)
+ fun_l23_n798(x)
+ else
+ fun_l23_n220(x)
+ end
+end
+
+def fun_l22_n260(x)
+ if (x < 1)
+ fun_l23_n621(x)
+ else
+ fun_l23_n936(x)
+ end
+end
+
+def fun_l22_n261(x)
+ if (x < 1)
+ fun_l23_n894(x)
+ else
+ fun_l23_n463(x)
+ end
+end
+
+def fun_l22_n262(x)
+ if (x < 1)
+ fun_l23_n336(x)
+ else
+ fun_l23_n535(x)
+ end
+end
+
+def fun_l22_n263(x)
+ if (x < 1)
+ fun_l23_n246(x)
+ else
+ fun_l23_n676(x)
+ end
+end
+
+def fun_l22_n264(x)
+ if (x < 1)
+ fun_l23_n986(x)
+ else
+ fun_l23_n675(x)
+ end
+end
+
+def fun_l22_n265(x)
+ if (x < 1)
+ fun_l23_n92(x)
+ else
+ fun_l23_n380(x)
+ end
+end
+
+def fun_l22_n266(x)
+ if (x < 1)
+ fun_l23_n945(x)
+ else
+ fun_l23_n842(x)
+ end
+end
+
+def fun_l22_n267(x)
+ if (x < 1)
+ fun_l23_n351(x)
+ else
+ fun_l23_n261(x)
+ end
+end
+
+def fun_l22_n268(x)
+ if (x < 1)
+ fun_l23_n784(x)
+ else
+ fun_l23_n306(x)
+ end
+end
+
+def fun_l22_n269(x)
+ if (x < 1)
+ fun_l23_n940(x)
+ else
+ fun_l23_n129(x)
+ end
+end
+
+def fun_l22_n270(x)
+ if (x < 1)
+ fun_l23_n491(x)
+ else
+ fun_l23_n806(x)
+ end
+end
+
+def fun_l22_n271(x)
+ if (x < 1)
+ fun_l23_n68(x)
+ else
+ fun_l23_n91(x)
+ end
+end
+
+def fun_l22_n272(x)
+ if (x < 1)
+ fun_l23_n965(x)
+ else
+ fun_l23_n665(x)
+ end
+end
+
+def fun_l22_n273(x)
+ if (x < 1)
+ fun_l23_n461(x)
+ else
+ fun_l23_n619(x)
+ end
+end
+
+def fun_l22_n274(x)
+ if (x < 1)
+ fun_l23_n635(x)
+ else
+ fun_l23_n755(x)
+ end
+end
+
+def fun_l22_n275(x)
+ if (x < 1)
+ fun_l23_n192(x)
+ else
+ fun_l23_n729(x)
+ end
+end
+
+def fun_l22_n276(x)
+ if (x < 1)
+ fun_l23_n94(x)
+ else
+ fun_l23_n832(x)
+ end
+end
+
+def fun_l22_n277(x)
+ if (x < 1)
+ fun_l23_n619(x)
+ else
+ fun_l23_n444(x)
+ end
+end
+
+def fun_l22_n278(x)
+ if (x < 1)
+ fun_l23_n682(x)
+ else
+ fun_l23_n579(x)
+ end
+end
+
+def fun_l22_n279(x)
+ if (x < 1)
+ fun_l23_n889(x)
+ else
+ fun_l23_n425(x)
+ end
+end
+
+def fun_l22_n280(x)
+ if (x < 1)
+ fun_l23_n101(x)
+ else
+ fun_l23_n215(x)
+ end
+end
+
+def fun_l22_n281(x)
+ if (x < 1)
+ fun_l23_n747(x)
+ else
+ fun_l23_n436(x)
+ end
+end
+
+def fun_l22_n282(x)
+ if (x < 1)
+ fun_l23_n519(x)
+ else
+ fun_l23_n438(x)
+ end
+end
+
+def fun_l22_n283(x)
+ if (x < 1)
+ fun_l23_n312(x)
+ else
+ fun_l23_n804(x)
+ end
+end
+
+def fun_l22_n284(x)
+ if (x < 1)
+ fun_l23_n150(x)
+ else
+ fun_l23_n71(x)
+ end
+end
+
+def fun_l22_n285(x)
+ if (x < 1)
+ fun_l23_n698(x)
+ else
+ fun_l23_n254(x)
+ end
+end
+
+def fun_l22_n286(x)
+ if (x < 1)
+ fun_l23_n97(x)
+ else
+ fun_l23_n782(x)
+ end
+end
+
+def fun_l22_n287(x)
+ if (x < 1)
+ fun_l23_n315(x)
+ else
+ fun_l23_n164(x)
+ end
+end
+
+def fun_l22_n288(x)
+ if (x < 1)
+ fun_l23_n704(x)
+ else
+ fun_l23_n927(x)
+ end
+end
+
+def fun_l22_n289(x)
+ if (x < 1)
+ fun_l23_n447(x)
+ else
+ fun_l23_n104(x)
+ end
+end
+
+def fun_l22_n290(x)
+ if (x < 1)
+ fun_l23_n533(x)
+ else
+ fun_l23_n687(x)
+ end
+end
+
+def fun_l22_n291(x)
+ if (x < 1)
+ fun_l23_n897(x)
+ else
+ fun_l23_n692(x)
+ end
+end
+
+def fun_l22_n292(x)
+ if (x < 1)
+ fun_l23_n515(x)
+ else
+ fun_l23_n258(x)
+ end
+end
+
+def fun_l22_n293(x)
+ if (x < 1)
+ fun_l23_n25(x)
+ else
+ fun_l23_n608(x)
+ end
+end
+
+def fun_l22_n294(x)
+ if (x < 1)
+ fun_l23_n313(x)
+ else
+ fun_l23_n675(x)
+ end
+end
+
+def fun_l22_n295(x)
+ if (x < 1)
+ fun_l23_n154(x)
+ else
+ fun_l23_n779(x)
+ end
+end
+
+def fun_l22_n296(x)
+ if (x < 1)
+ fun_l23_n731(x)
+ else
+ fun_l23_n310(x)
+ end
+end
+
+def fun_l22_n297(x)
+ if (x < 1)
+ fun_l23_n443(x)
+ else
+ fun_l23_n709(x)
+ end
+end
+
+def fun_l22_n298(x)
+ if (x < 1)
+ fun_l23_n100(x)
+ else
+ fun_l23_n900(x)
+ end
+end
+
+def fun_l22_n299(x)
+ if (x < 1)
+ fun_l23_n64(x)
+ else
+ fun_l23_n80(x)
+ end
+end
+
+def fun_l22_n300(x)
+ if (x < 1)
+ fun_l23_n361(x)
+ else
+ fun_l23_n535(x)
+ end
+end
+
+def fun_l22_n301(x)
+ if (x < 1)
+ fun_l23_n628(x)
+ else
+ fun_l23_n272(x)
+ end
+end
+
+def fun_l22_n302(x)
+ if (x < 1)
+ fun_l23_n930(x)
+ else
+ fun_l23_n795(x)
+ end
+end
+
+def fun_l22_n303(x)
+ if (x < 1)
+ fun_l23_n642(x)
+ else
+ fun_l23_n766(x)
+ end
+end
+
+def fun_l22_n304(x)
+ if (x < 1)
+ fun_l23_n191(x)
+ else
+ fun_l23_n439(x)
+ end
+end
+
+def fun_l22_n305(x)
+ if (x < 1)
+ fun_l23_n387(x)
+ else
+ fun_l23_n999(x)
+ end
+end
+
+def fun_l22_n306(x)
+ if (x < 1)
+ fun_l23_n470(x)
+ else
+ fun_l23_n572(x)
+ end
+end
+
+def fun_l22_n307(x)
+ if (x < 1)
+ fun_l23_n942(x)
+ else
+ fun_l23_n254(x)
+ end
+end
+
+def fun_l22_n308(x)
+ if (x < 1)
+ fun_l23_n664(x)
+ else
+ fun_l23_n73(x)
+ end
+end
+
+def fun_l22_n309(x)
+ if (x < 1)
+ fun_l23_n63(x)
+ else
+ fun_l23_n321(x)
+ end
+end
+
+def fun_l22_n310(x)
+ if (x < 1)
+ fun_l23_n348(x)
+ else
+ fun_l23_n961(x)
+ end
+end
+
+def fun_l22_n311(x)
+ if (x < 1)
+ fun_l23_n555(x)
+ else
+ fun_l23_n315(x)
+ end
+end
+
+def fun_l22_n312(x)
+ if (x < 1)
+ fun_l23_n978(x)
+ else
+ fun_l23_n498(x)
+ end
+end
+
+def fun_l22_n313(x)
+ if (x < 1)
+ fun_l23_n880(x)
+ else
+ fun_l23_n696(x)
+ end
+end
+
+def fun_l22_n314(x)
+ if (x < 1)
+ fun_l23_n325(x)
+ else
+ fun_l23_n43(x)
+ end
+end
+
+def fun_l22_n315(x)
+ if (x < 1)
+ fun_l23_n848(x)
+ else
+ fun_l23_n314(x)
+ end
+end
+
+def fun_l22_n316(x)
+ if (x < 1)
+ fun_l23_n660(x)
+ else
+ fun_l23_n378(x)
+ end
+end
+
+def fun_l22_n317(x)
+ if (x < 1)
+ fun_l23_n975(x)
+ else
+ fun_l23_n503(x)
+ end
+end
+
+def fun_l22_n318(x)
+ if (x < 1)
+ fun_l23_n41(x)
+ else
+ fun_l23_n746(x)
+ end
+end
+
+def fun_l22_n319(x)
+ if (x < 1)
+ fun_l23_n325(x)
+ else
+ fun_l23_n565(x)
+ end
+end
+
+def fun_l22_n320(x)
+ if (x < 1)
+ fun_l23_n19(x)
+ else
+ fun_l23_n922(x)
+ end
+end
+
+def fun_l22_n321(x)
+ if (x < 1)
+ fun_l23_n235(x)
+ else
+ fun_l23_n284(x)
+ end
+end
+
+def fun_l22_n322(x)
+ if (x < 1)
+ fun_l23_n591(x)
+ else
+ fun_l23_n821(x)
+ end
+end
+
+def fun_l22_n323(x)
+ if (x < 1)
+ fun_l23_n23(x)
+ else
+ fun_l23_n151(x)
+ end
+end
+
+def fun_l22_n324(x)
+ if (x < 1)
+ fun_l23_n361(x)
+ else
+ fun_l23_n322(x)
+ end
+end
+
+def fun_l22_n325(x)
+ if (x < 1)
+ fun_l23_n245(x)
+ else
+ fun_l23_n205(x)
+ end
+end
+
+def fun_l22_n326(x)
+ if (x < 1)
+ fun_l23_n568(x)
+ else
+ fun_l23_n133(x)
+ end
+end
+
+def fun_l22_n327(x)
+ if (x < 1)
+ fun_l23_n895(x)
+ else
+ fun_l23_n315(x)
+ end
+end
+
+def fun_l22_n328(x)
+ if (x < 1)
+ fun_l23_n473(x)
+ else
+ fun_l23_n315(x)
+ end
+end
+
+def fun_l22_n329(x)
+ if (x < 1)
+ fun_l23_n618(x)
+ else
+ fun_l23_n196(x)
+ end
+end
+
+def fun_l22_n330(x)
+ if (x < 1)
+ fun_l23_n97(x)
+ else
+ fun_l23_n422(x)
+ end
+end
+
+def fun_l22_n331(x)
+ if (x < 1)
+ fun_l23_n101(x)
+ else
+ fun_l23_n447(x)
+ end
+end
+
+def fun_l22_n332(x)
+ if (x < 1)
+ fun_l23_n875(x)
+ else
+ fun_l23_n197(x)
+ end
+end
+
+def fun_l22_n333(x)
+ if (x < 1)
+ fun_l23_n25(x)
+ else
+ fun_l23_n499(x)
+ end
+end
+
+def fun_l22_n334(x)
+ if (x < 1)
+ fun_l23_n602(x)
+ else
+ fun_l23_n75(x)
+ end
+end
+
+def fun_l22_n335(x)
+ if (x < 1)
+ fun_l23_n370(x)
+ else
+ fun_l23_n150(x)
+ end
+end
+
+def fun_l22_n336(x)
+ if (x < 1)
+ fun_l23_n960(x)
+ else
+ fun_l23_n498(x)
+ end
+end
+
+def fun_l22_n337(x)
+ if (x < 1)
+ fun_l23_n675(x)
+ else
+ fun_l23_n525(x)
+ end
+end
+
+def fun_l22_n338(x)
+ if (x < 1)
+ fun_l23_n445(x)
+ else
+ fun_l23_n581(x)
+ end
+end
+
+def fun_l22_n339(x)
+ if (x < 1)
+ fun_l23_n718(x)
+ else
+ fun_l23_n995(x)
+ end
+end
+
+def fun_l22_n340(x)
+ if (x < 1)
+ fun_l23_n790(x)
+ else
+ fun_l23_n370(x)
+ end
+end
+
+def fun_l22_n341(x)
+ if (x < 1)
+ fun_l23_n234(x)
+ else
+ fun_l23_n187(x)
+ end
+end
+
+def fun_l22_n342(x)
+ if (x < 1)
+ fun_l23_n777(x)
+ else
+ fun_l23_n411(x)
+ end
+end
+
+def fun_l22_n343(x)
+ if (x < 1)
+ fun_l23_n258(x)
+ else
+ fun_l23_n129(x)
+ end
+end
+
+def fun_l22_n344(x)
+ if (x < 1)
+ fun_l23_n715(x)
+ else
+ fun_l23_n381(x)
+ end
+end
+
+def fun_l22_n345(x)
+ if (x < 1)
+ fun_l23_n495(x)
+ else
+ fun_l23_n892(x)
+ end
+end
+
+def fun_l22_n346(x)
+ if (x < 1)
+ fun_l23_n433(x)
+ else
+ fun_l23_n987(x)
+ end
+end
+
+def fun_l22_n347(x)
+ if (x < 1)
+ fun_l23_n569(x)
+ else
+ fun_l23_n832(x)
+ end
+end
+
+def fun_l22_n348(x)
+ if (x < 1)
+ fun_l23_n425(x)
+ else
+ fun_l23_n894(x)
+ end
+end
+
+def fun_l22_n349(x)
+ if (x < 1)
+ fun_l23_n186(x)
+ else
+ fun_l23_n211(x)
+ end
+end
+
+def fun_l22_n350(x)
+ if (x < 1)
+ fun_l23_n435(x)
+ else
+ fun_l23_n393(x)
+ end
+end
+
+def fun_l22_n351(x)
+ if (x < 1)
+ fun_l23_n942(x)
+ else
+ fun_l23_n364(x)
+ end
+end
+
+def fun_l22_n352(x)
+ if (x < 1)
+ fun_l23_n29(x)
+ else
+ fun_l23_n574(x)
+ end
+end
+
+def fun_l22_n353(x)
+ if (x < 1)
+ fun_l23_n548(x)
+ else
+ fun_l23_n663(x)
+ end
+end
+
+def fun_l22_n354(x)
+ if (x < 1)
+ fun_l23_n238(x)
+ else
+ fun_l23_n693(x)
+ end
+end
+
+def fun_l22_n355(x)
+ if (x < 1)
+ fun_l23_n459(x)
+ else
+ fun_l23_n197(x)
+ end
+end
+
+def fun_l22_n356(x)
+ if (x < 1)
+ fun_l23_n478(x)
+ else
+ fun_l23_n905(x)
+ end
+end
+
+def fun_l22_n357(x)
+ if (x < 1)
+ fun_l23_n732(x)
+ else
+ fun_l23_n124(x)
+ end
+end
+
+def fun_l22_n358(x)
+ if (x < 1)
+ fun_l23_n716(x)
+ else
+ fun_l23_n758(x)
+ end
+end
+
+def fun_l22_n359(x)
+ if (x < 1)
+ fun_l23_n376(x)
+ else
+ fun_l23_n883(x)
+ end
+end
+
+def fun_l22_n360(x)
+ if (x < 1)
+ fun_l23_n100(x)
+ else
+ fun_l23_n485(x)
+ end
+end
+
+def fun_l22_n361(x)
+ if (x < 1)
+ fun_l23_n62(x)
+ else
+ fun_l23_n794(x)
+ end
+end
+
+def fun_l22_n362(x)
+ if (x < 1)
+ fun_l23_n951(x)
+ else
+ fun_l23_n23(x)
+ end
+end
+
+def fun_l22_n363(x)
+ if (x < 1)
+ fun_l23_n298(x)
+ else
+ fun_l23_n775(x)
+ end
+end
+
+def fun_l22_n364(x)
+ if (x < 1)
+ fun_l23_n53(x)
+ else
+ fun_l23_n595(x)
+ end
+end
+
+def fun_l22_n365(x)
+ if (x < 1)
+ fun_l23_n695(x)
+ else
+ fun_l23_n401(x)
+ end
+end
+
+def fun_l22_n366(x)
+ if (x < 1)
+ fun_l23_n475(x)
+ else
+ fun_l23_n762(x)
+ end
+end
+
+def fun_l22_n367(x)
+ if (x < 1)
+ fun_l23_n706(x)
+ else
+ fun_l23_n527(x)
+ end
+end
+
+def fun_l22_n368(x)
+ if (x < 1)
+ fun_l23_n919(x)
+ else
+ fun_l23_n301(x)
+ end
+end
+
+def fun_l22_n369(x)
+ if (x < 1)
+ fun_l23_n755(x)
+ else
+ fun_l23_n256(x)
+ end
+end
+
+def fun_l22_n370(x)
+ if (x < 1)
+ fun_l23_n592(x)
+ else
+ fun_l23_n608(x)
+ end
+end
+
+def fun_l22_n371(x)
+ if (x < 1)
+ fun_l23_n192(x)
+ else
+ fun_l23_n10(x)
+ end
+end
+
+def fun_l22_n372(x)
+ if (x < 1)
+ fun_l23_n332(x)
+ else
+ fun_l23_n448(x)
+ end
+end
+
+def fun_l22_n373(x)
+ if (x < 1)
+ fun_l23_n135(x)
+ else
+ fun_l23_n793(x)
+ end
+end
+
+def fun_l22_n374(x)
+ if (x < 1)
+ fun_l23_n141(x)
+ else
+ fun_l23_n669(x)
+ end
+end
+
+def fun_l22_n375(x)
+ if (x < 1)
+ fun_l23_n474(x)
+ else
+ fun_l23_n356(x)
+ end
+end
+
+def fun_l22_n376(x)
+ if (x < 1)
+ fun_l23_n69(x)
+ else
+ fun_l23_n384(x)
+ end
+end
+
+def fun_l22_n377(x)
+ if (x < 1)
+ fun_l23_n386(x)
+ else
+ fun_l23_n552(x)
+ end
+end
+
+def fun_l22_n378(x)
+ if (x < 1)
+ fun_l23_n878(x)
+ else
+ fun_l23_n131(x)
+ end
+end
+
+def fun_l22_n379(x)
+ if (x < 1)
+ fun_l23_n929(x)
+ else
+ fun_l23_n479(x)
+ end
+end
+
+def fun_l22_n380(x)
+ if (x < 1)
+ fun_l23_n782(x)
+ else
+ fun_l23_n745(x)
+ end
+end
+
+def fun_l22_n381(x)
+ if (x < 1)
+ fun_l23_n126(x)
+ else
+ fun_l23_n732(x)
+ end
+end
+
+def fun_l22_n382(x)
+ if (x < 1)
+ fun_l23_n694(x)
+ else
+ fun_l23_n291(x)
+ end
+end
+
+def fun_l22_n383(x)
+ if (x < 1)
+ fun_l23_n165(x)
+ else
+ fun_l23_n49(x)
+ end
+end
+
+def fun_l22_n384(x)
+ if (x < 1)
+ fun_l23_n453(x)
+ else
+ fun_l23_n144(x)
+ end
+end
+
+def fun_l22_n385(x)
+ if (x < 1)
+ fun_l23_n182(x)
+ else
+ fun_l23_n974(x)
+ end
+end
+
+def fun_l22_n386(x)
+ if (x < 1)
+ fun_l23_n861(x)
+ else
+ fun_l23_n185(x)
+ end
+end
+
+def fun_l22_n387(x)
+ if (x < 1)
+ fun_l23_n962(x)
+ else
+ fun_l23_n578(x)
+ end
+end
+
+def fun_l22_n388(x)
+ if (x < 1)
+ fun_l23_n88(x)
+ else
+ fun_l23_n508(x)
+ end
+end
+
+def fun_l22_n389(x)
+ if (x < 1)
+ fun_l23_n421(x)
+ else
+ fun_l23_n886(x)
+ end
+end
+
+def fun_l22_n390(x)
+ if (x < 1)
+ fun_l23_n992(x)
+ else
+ fun_l23_n540(x)
+ end
+end
+
+def fun_l22_n391(x)
+ if (x < 1)
+ fun_l23_n996(x)
+ else
+ fun_l23_n533(x)
+ end
+end
+
+def fun_l22_n392(x)
+ if (x < 1)
+ fun_l23_n97(x)
+ else
+ fun_l23_n803(x)
+ end
+end
+
+def fun_l22_n393(x)
+ if (x < 1)
+ fun_l23_n505(x)
+ else
+ fun_l23_n263(x)
+ end
+end
+
+def fun_l22_n394(x)
+ if (x < 1)
+ fun_l23_n52(x)
+ else
+ fun_l23_n566(x)
+ end
+end
+
+def fun_l22_n395(x)
+ if (x < 1)
+ fun_l23_n290(x)
+ else
+ fun_l23_n558(x)
+ end
+end
+
+def fun_l22_n396(x)
+ if (x < 1)
+ fun_l23_n51(x)
+ else
+ fun_l23_n365(x)
+ end
+end
+
+def fun_l22_n397(x)
+ if (x < 1)
+ fun_l23_n505(x)
+ else
+ fun_l23_n461(x)
+ end
+end
+
+def fun_l22_n398(x)
+ if (x < 1)
+ fun_l23_n415(x)
+ else
+ fun_l23_n460(x)
+ end
+end
+
+def fun_l22_n399(x)
+ if (x < 1)
+ fun_l23_n370(x)
+ else
+ fun_l23_n377(x)
+ end
+end
+
+def fun_l22_n400(x)
+ if (x < 1)
+ fun_l23_n644(x)
+ else
+ fun_l23_n300(x)
+ end
+end
+
+def fun_l22_n401(x)
+ if (x < 1)
+ fun_l23_n22(x)
+ else
+ fun_l23_n348(x)
+ end
+end
+
+def fun_l22_n402(x)
+ if (x < 1)
+ fun_l23_n286(x)
+ else
+ fun_l23_n991(x)
+ end
+end
+
+def fun_l22_n403(x)
+ if (x < 1)
+ fun_l23_n928(x)
+ else
+ fun_l23_n627(x)
+ end
+end
+
+def fun_l22_n404(x)
+ if (x < 1)
+ fun_l23_n884(x)
+ else
+ fun_l23_n326(x)
+ end
+end
+
+def fun_l22_n405(x)
+ if (x < 1)
+ fun_l23_n586(x)
+ else
+ fun_l23_n913(x)
+ end
+end
+
+def fun_l22_n406(x)
+ if (x < 1)
+ fun_l23_n732(x)
+ else
+ fun_l23_n964(x)
+ end
+end
+
+def fun_l22_n407(x)
+ if (x < 1)
+ fun_l23_n301(x)
+ else
+ fun_l23_n946(x)
+ end
+end
+
+def fun_l22_n408(x)
+ if (x < 1)
+ fun_l23_n540(x)
+ else
+ fun_l23_n29(x)
+ end
+end
+
+def fun_l22_n409(x)
+ if (x < 1)
+ fun_l23_n793(x)
+ else
+ fun_l23_n420(x)
+ end
+end
+
+def fun_l22_n410(x)
+ if (x < 1)
+ fun_l23_n766(x)
+ else
+ fun_l23_n473(x)
+ end
+end
+
+def fun_l22_n411(x)
+ if (x < 1)
+ fun_l23_n683(x)
+ else
+ fun_l23_n12(x)
+ end
+end
+
+def fun_l22_n412(x)
+ if (x < 1)
+ fun_l23_n273(x)
+ else
+ fun_l23_n45(x)
+ end
+end
+
+def fun_l22_n413(x)
+ if (x < 1)
+ fun_l23_n732(x)
+ else
+ fun_l23_n313(x)
+ end
+end
+
+def fun_l22_n414(x)
+ if (x < 1)
+ fun_l23_n291(x)
+ else
+ fun_l23_n216(x)
+ end
+end
+
+def fun_l22_n415(x)
+ if (x < 1)
+ fun_l23_n6(x)
+ else
+ fun_l23_n482(x)
+ end
+end
+
+def fun_l22_n416(x)
+ if (x < 1)
+ fun_l23_n214(x)
+ else
+ fun_l23_n341(x)
+ end
+end
+
+def fun_l22_n417(x)
+ if (x < 1)
+ fun_l23_n690(x)
+ else
+ fun_l23_n773(x)
+ end
+end
+
+def fun_l22_n418(x)
+ if (x < 1)
+ fun_l23_n437(x)
+ else
+ fun_l23_n941(x)
+ end
+end
+
+def fun_l22_n419(x)
+ if (x < 1)
+ fun_l23_n131(x)
+ else
+ fun_l23_n14(x)
+ end
+end
+
+def fun_l22_n420(x)
+ if (x < 1)
+ fun_l23_n924(x)
+ else
+ fun_l23_n359(x)
+ end
+end
+
+def fun_l22_n421(x)
+ if (x < 1)
+ fun_l23_n653(x)
+ else
+ fun_l23_n875(x)
+ end
+end
+
+def fun_l22_n422(x)
+ if (x < 1)
+ fun_l23_n411(x)
+ else
+ fun_l23_n981(x)
+ end
+end
+
+def fun_l22_n423(x)
+ if (x < 1)
+ fun_l23_n258(x)
+ else
+ fun_l23_n876(x)
+ end
+end
+
+def fun_l22_n424(x)
+ if (x < 1)
+ fun_l23_n430(x)
+ else
+ fun_l23_n62(x)
+ end
+end
+
+def fun_l22_n425(x)
+ if (x < 1)
+ fun_l23_n444(x)
+ else
+ fun_l23_n48(x)
+ end
+end
+
+def fun_l22_n426(x)
+ if (x < 1)
+ fun_l23_n905(x)
+ else
+ fun_l23_n458(x)
+ end
+end
+
+def fun_l22_n427(x)
+ if (x < 1)
+ fun_l23_n440(x)
+ else
+ fun_l23_n411(x)
+ end
+end
+
+def fun_l22_n428(x)
+ if (x < 1)
+ fun_l23_n655(x)
+ else
+ fun_l23_n622(x)
+ end
+end
+
+def fun_l22_n429(x)
+ if (x < 1)
+ fun_l23_n587(x)
+ else
+ fun_l23_n638(x)
+ end
+end
+
+def fun_l22_n430(x)
+ if (x < 1)
+ fun_l23_n156(x)
+ else
+ fun_l23_n900(x)
+ end
+end
+
+def fun_l22_n431(x)
+ if (x < 1)
+ fun_l23_n136(x)
+ else
+ fun_l23_n562(x)
+ end
+end
+
+def fun_l22_n432(x)
+ if (x < 1)
+ fun_l23_n897(x)
+ else
+ fun_l23_n16(x)
+ end
+end
+
+def fun_l22_n433(x)
+ if (x < 1)
+ fun_l23_n28(x)
+ else
+ fun_l23_n504(x)
+ end
+end
+
+def fun_l22_n434(x)
+ if (x < 1)
+ fun_l23_n987(x)
+ else
+ fun_l23_n640(x)
+ end
+end
+
+def fun_l22_n435(x)
+ if (x < 1)
+ fun_l23_n395(x)
+ else
+ fun_l23_n922(x)
+ end
+end
+
+def fun_l22_n436(x)
+ if (x < 1)
+ fun_l23_n679(x)
+ else
+ fun_l23_n576(x)
+ end
+end
+
+def fun_l22_n437(x)
+ if (x < 1)
+ fun_l23_n915(x)
+ else
+ fun_l23_n240(x)
+ end
+end
+
+def fun_l22_n438(x)
+ if (x < 1)
+ fun_l23_n889(x)
+ else
+ fun_l23_n38(x)
+ end
+end
+
+def fun_l22_n439(x)
+ if (x < 1)
+ fun_l23_n522(x)
+ else
+ fun_l23_n481(x)
+ end
+end
+
+def fun_l22_n440(x)
+ if (x < 1)
+ fun_l23_n458(x)
+ else
+ fun_l23_n81(x)
+ end
+end
+
+def fun_l22_n441(x)
+ if (x < 1)
+ fun_l23_n220(x)
+ else
+ fun_l23_n393(x)
+ end
+end
+
+def fun_l22_n442(x)
+ if (x < 1)
+ fun_l23_n404(x)
+ else
+ fun_l23_n945(x)
+ end
+end
+
+def fun_l22_n443(x)
+ if (x < 1)
+ fun_l23_n347(x)
+ else
+ fun_l23_n377(x)
+ end
+end
+
+def fun_l22_n444(x)
+ if (x < 1)
+ fun_l23_n484(x)
+ else
+ fun_l23_n277(x)
+ end
+end
+
+def fun_l22_n445(x)
+ if (x < 1)
+ fun_l23_n118(x)
+ else
+ fun_l23_n578(x)
+ end
+end
+
+def fun_l22_n446(x)
+ if (x < 1)
+ fun_l23_n674(x)
+ else
+ fun_l23_n238(x)
+ end
+end
+
+def fun_l22_n447(x)
+ if (x < 1)
+ fun_l23_n290(x)
+ else
+ fun_l23_n275(x)
+ end
+end
+
+def fun_l22_n448(x)
+ if (x < 1)
+ fun_l23_n358(x)
+ else
+ fun_l23_n939(x)
+ end
+end
+
+def fun_l22_n449(x)
+ if (x < 1)
+ fun_l23_n38(x)
+ else
+ fun_l23_n122(x)
+ end
+end
+
+def fun_l22_n450(x)
+ if (x < 1)
+ fun_l23_n575(x)
+ else
+ fun_l23_n582(x)
+ end
+end
+
+def fun_l22_n451(x)
+ if (x < 1)
+ fun_l23_n657(x)
+ else
+ fun_l23_n986(x)
+ end
+end
+
+def fun_l22_n452(x)
+ if (x < 1)
+ fun_l23_n771(x)
+ else
+ fun_l23_n603(x)
+ end
+end
+
+def fun_l22_n453(x)
+ if (x < 1)
+ fun_l23_n981(x)
+ else
+ fun_l23_n762(x)
+ end
+end
+
+def fun_l22_n454(x)
+ if (x < 1)
+ fun_l23_n93(x)
+ else
+ fun_l23_n26(x)
+ end
+end
+
+def fun_l22_n455(x)
+ if (x < 1)
+ fun_l23_n675(x)
+ else
+ fun_l23_n332(x)
+ end
+end
+
+def fun_l22_n456(x)
+ if (x < 1)
+ fun_l23_n923(x)
+ else
+ fun_l23_n416(x)
+ end
+end
+
+def fun_l22_n457(x)
+ if (x < 1)
+ fun_l23_n179(x)
+ else
+ fun_l23_n485(x)
+ end
+end
+
+def fun_l22_n458(x)
+ if (x < 1)
+ fun_l23_n38(x)
+ else
+ fun_l23_n319(x)
+ end
+end
+
+def fun_l22_n459(x)
+ if (x < 1)
+ fun_l23_n22(x)
+ else
+ fun_l23_n747(x)
+ end
+end
+
+def fun_l22_n460(x)
+ if (x < 1)
+ fun_l23_n643(x)
+ else
+ fun_l23_n132(x)
+ end
+end
+
+def fun_l22_n461(x)
+ if (x < 1)
+ fun_l23_n165(x)
+ else
+ fun_l23_n673(x)
+ end
+end
+
+def fun_l22_n462(x)
+ if (x < 1)
+ fun_l23_n988(x)
+ else
+ fun_l23_n916(x)
+ end
+end
+
+def fun_l22_n463(x)
+ if (x < 1)
+ fun_l23_n331(x)
+ else
+ fun_l23_n853(x)
+ end
+end
+
+def fun_l22_n464(x)
+ if (x < 1)
+ fun_l23_n699(x)
+ else
+ fun_l23_n771(x)
+ end
+end
+
+def fun_l22_n465(x)
+ if (x < 1)
+ fun_l23_n358(x)
+ else
+ fun_l23_n966(x)
+ end
+end
+
+def fun_l22_n466(x)
+ if (x < 1)
+ fun_l23_n723(x)
+ else
+ fun_l23_n897(x)
+ end
+end
+
+def fun_l22_n467(x)
+ if (x < 1)
+ fun_l23_n69(x)
+ else
+ fun_l23_n186(x)
+ end
+end
+
+def fun_l22_n468(x)
+ if (x < 1)
+ fun_l23_n661(x)
+ else
+ fun_l23_n420(x)
+ end
+end
+
+def fun_l22_n469(x)
+ if (x < 1)
+ fun_l23_n175(x)
+ else
+ fun_l23_n270(x)
+ end
+end
+
+def fun_l22_n470(x)
+ if (x < 1)
+ fun_l23_n556(x)
+ else
+ fun_l23_n344(x)
+ end
+end
+
+def fun_l22_n471(x)
+ if (x < 1)
+ fun_l23_n413(x)
+ else
+ fun_l23_n338(x)
+ end
+end
+
+def fun_l22_n472(x)
+ if (x < 1)
+ fun_l23_n456(x)
+ else
+ fun_l23_n125(x)
+ end
+end
+
+def fun_l22_n473(x)
+ if (x < 1)
+ fun_l23_n364(x)
+ else
+ fun_l23_n347(x)
+ end
+end
+
+def fun_l22_n474(x)
+ if (x < 1)
+ fun_l23_n436(x)
+ else
+ fun_l23_n897(x)
+ end
+end
+
+def fun_l22_n475(x)
+ if (x < 1)
+ fun_l23_n613(x)
+ else
+ fun_l23_n851(x)
+ end
+end
+
+def fun_l22_n476(x)
+ if (x < 1)
+ fun_l23_n754(x)
+ else
+ fun_l23_n755(x)
+ end
+end
+
+def fun_l22_n477(x)
+ if (x < 1)
+ fun_l23_n899(x)
+ else
+ fun_l23_n496(x)
+ end
+end
+
+def fun_l22_n478(x)
+ if (x < 1)
+ fun_l23_n183(x)
+ else
+ fun_l23_n864(x)
+ end
+end
+
+def fun_l22_n479(x)
+ if (x < 1)
+ fun_l23_n11(x)
+ else
+ fun_l23_n679(x)
+ end
+end
+
+def fun_l22_n480(x)
+ if (x < 1)
+ fun_l23_n160(x)
+ else
+ fun_l23_n747(x)
+ end
+end
+
+def fun_l22_n481(x)
+ if (x < 1)
+ fun_l23_n138(x)
+ else
+ fun_l23_n762(x)
+ end
+end
+
+def fun_l22_n482(x)
+ if (x < 1)
+ fun_l23_n467(x)
+ else
+ fun_l23_n148(x)
+ end
+end
+
+def fun_l22_n483(x)
+ if (x < 1)
+ fun_l23_n97(x)
+ else
+ fun_l23_n826(x)
+ end
+end
+
+def fun_l22_n484(x)
+ if (x < 1)
+ fun_l23_n754(x)
+ else
+ fun_l23_n661(x)
+ end
+end
+
+def fun_l22_n485(x)
+ if (x < 1)
+ fun_l23_n415(x)
+ else
+ fun_l23_n531(x)
+ end
+end
+
+def fun_l22_n486(x)
+ if (x < 1)
+ fun_l23_n543(x)
+ else
+ fun_l23_n271(x)
+ end
+end
+
+def fun_l22_n487(x)
+ if (x < 1)
+ fun_l23_n240(x)
+ else
+ fun_l23_n221(x)
+ end
+end
+
+def fun_l22_n488(x)
+ if (x < 1)
+ fun_l23_n208(x)
+ else
+ fun_l23_n633(x)
+ end
+end
+
+def fun_l22_n489(x)
+ if (x < 1)
+ fun_l23_n539(x)
+ else
+ fun_l23_n925(x)
+ end
+end
+
+def fun_l22_n490(x)
+ if (x < 1)
+ fun_l23_n141(x)
+ else
+ fun_l23_n142(x)
+ end
+end
+
+def fun_l22_n491(x)
+ if (x < 1)
+ fun_l23_n899(x)
+ else
+ fun_l23_n407(x)
+ end
+end
+
+def fun_l22_n492(x)
+ if (x < 1)
+ fun_l23_n237(x)
+ else
+ fun_l23_n836(x)
+ end
+end
+
+def fun_l22_n493(x)
+ if (x < 1)
+ fun_l23_n23(x)
+ else
+ fun_l23_n266(x)
+ end
+end
+
+def fun_l22_n494(x)
+ if (x < 1)
+ fun_l23_n819(x)
+ else
+ fun_l23_n473(x)
+ end
+end
+
+def fun_l22_n495(x)
+ if (x < 1)
+ fun_l23_n182(x)
+ else
+ fun_l23_n253(x)
+ end
+end
+
+def fun_l22_n496(x)
+ if (x < 1)
+ fun_l23_n459(x)
+ else
+ fun_l23_n421(x)
+ end
+end
+
+def fun_l22_n497(x)
+ if (x < 1)
+ fun_l23_n553(x)
+ else
+ fun_l23_n207(x)
+ end
+end
+
+def fun_l22_n498(x)
+ if (x < 1)
+ fun_l23_n5(x)
+ else
+ fun_l23_n261(x)
+ end
+end
+
+def fun_l22_n499(x)
+ if (x < 1)
+ fun_l23_n53(x)
+ else
+ fun_l23_n478(x)
+ end
+end
+
+def fun_l22_n500(x)
+ if (x < 1)
+ fun_l23_n489(x)
+ else
+ fun_l23_n77(x)
+ end
+end
+
+def fun_l22_n501(x)
+ if (x < 1)
+ fun_l23_n551(x)
+ else
+ fun_l23_n854(x)
+ end
+end
+
+def fun_l22_n502(x)
+ if (x < 1)
+ fun_l23_n32(x)
+ else
+ fun_l23_n241(x)
+ end
+end
+
+def fun_l22_n503(x)
+ if (x < 1)
+ fun_l23_n536(x)
+ else
+ fun_l23_n820(x)
+ end
+end
+
+def fun_l22_n504(x)
+ if (x < 1)
+ fun_l23_n521(x)
+ else
+ fun_l23_n551(x)
+ end
+end
+
+def fun_l22_n505(x)
+ if (x < 1)
+ fun_l23_n812(x)
+ else
+ fun_l23_n885(x)
+ end
+end
+
+def fun_l22_n506(x)
+ if (x < 1)
+ fun_l23_n935(x)
+ else
+ fun_l23_n38(x)
+ end
+end
+
+def fun_l22_n507(x)
+ if (x < 1)
+ fun_l23_n99(x)
+ else
+ fun_l23_n907(x)
+ end
+end
+
+def fun_l22_n508(x)
+ if (x < 1)
+ fun_l23_n89(x)
+ else
+ fun_l23_n322(x)
+ end
+end
+
+def fun_l22_n509(x)
+ if (x < 1)
+ fun_l23_n279(x)
+ else
+ fun_l23_n103(x)
+ end
+end
+
+def fun_l22_n510(x)
+ if (x < 1)
+ fun_l23_n476(x)
+ else
+ fun_l23_n947(x)
+ end
+end
+
+def fun_l22_n511(x)
+ if (x < 1)
+ fun_l23_n872(x)
+ else
+ fun_l23_n497(x)
+ end
+end
+
+def fun_l22_n512(x)
+ if (x < 1)
+ fun_l23_n508(x)
+ else
+ fun_l23_n548(x)
+ end
+end
+
+def fun_l22_n513(x)
+ if (x < 1)
+ fun_l23_n640(x)
+ else
+ fun_l23_n696(x)
+ end
+end
+
+def fun_l22_n514(x)
+ if (x < 1)
+ fun_l23_n694(x)
+ else
+ fun_l23_n483(x)
+ end
+end
+
+def fun_l22_n515(x)
+ if (x < 1)
+ fun_l23_n914(x)
+ else
+ fun_l23_n772(x)
+ end
+end
+
+def fun_l22_n516(x)
+ if (x < 1)
+ fun_l23_n192(x)
+ else
+ fun_l23_n35(x)
+ end
+end
+
+def fun_l22_n517(x)
+ if (x < 1)
+ fun_l23_n597(x)
+ else
+ fun_l23_n473(x)
+ end
+end
+
+def fun_l22_n518(x)
+ if (x < 1)
+ fun_l23_n974(x)
+ else
+ fun_l23_n315(x)
+ end
+end
+
+def fun_l22_n519(x)
+ if (x < 1)
+ fun_l23_n391(x)
+ else
+ fun_l23_n800(x)
+ end
+end
+
+def fun_l22_n520(x)
+ if (x < 1)
+ fun_l23_n106(x)
+ else
+ fun_l23_n170(x)
+ end
+end
+
+def fun_l22_n521(x)
+ if (x < 1)
+ fun_l23_n926(x)
+ else
+ fun_l23_n495(x)
+ end
+end
+
+def fun_l22_n522(x)
+ if (x < 1)
+ fun_l23_n135(x)
+ else
+ fun_l23_n304(x)
+ end
+end
+
+def fun_l22_n523(x)
+ if (x < 1)
+ fun_l23_n765(x)
+ else
+ fun_l23_n53(x)
+ end
+end
+
+def fun_l22_n524(x)
+ if (x < 1)
+ fun_l23_n699(x)
+ else
+ fun_l23_n158(x)
+ end
+end
+
+def fun_l22_n525(x)
+ if (x < 1)
+ fun_l23_n759(x)
+ else
+ fun_l23_n34(x)
+ end
+end
+
+def fun_l22_n526(x)
+ if (x < 1)
+ fun_l23_n813(x)
+ else
+ fun_l23_n938(x)
+ end
+end
+
+def fun_l22_n527(x)
+ if (x < 1)
+ fun_l23_n207(x)
+ else
+ fun_l23_n549(x)
+ end
+end
+
+def fun_l22_n528(x)
+ if (x < 1)
+ fun_l23_n468(x)
+ else
+ fun_l23_n681(x)
+ end
+end
+
+def fun_l22_n529(x)
+ if (x < 1)
+ fun_l23_n643(x)
+ else
+ fun_l23_n652(x)
+ end
+end
+
+def fun_l22_n530(x)
+ if (x < 1)
+ fun_l23_n254(x)
+ else
+ fun_l23_n283(x)
+ end
+end
+
+def fun_l22_n531(x)
+ if (x < 1)
+ fun_l23_n750(x)
+ else
+ fun_l23_n969(x)
+ end
+end
+
+def fun_l22_n532(x)
+ if (x < 1)
+ fun_l23_n343(x)
+ else
+ fun_l23_n578(x)
+ end
+end
+
+def fun_l22_n533(x)
+ if (x < 1)
+ fun_l23_n240(x)
+ else
+ fun_l23_n698(x)
+ end
+end
+
+def fun_l22_n534(x)
+ if (x < 1)
+ fun_l23_n497(x)
+ else
+ fun_l23_n992(x)
+ end
+end
+
+def fun_l22_n535(x)
+ if (x < 1)
+ fun_l23_n554(x)
+ else
+ fun_l23_n53(x)
+ end
+end
+
+def fun_l22_n536(x)
+ if (x < 1)
+ fun_l23_n165(x)
+ else
+ fun_l23_n467(x)
+ end
+end
+
+def fun_l22_n537(x)
+ if (x < 1)
+ fun_l23_n2(x)
+ else
+ fun_l23_n560(x)
+ end
+end
+
+def fun_l22_n538(x)
+ if (x < 1)
+ fun_l23_n151(x)
+ else
+ fun_l23_n434(x)
+ end
+end
+
+def fun_l22_n539(x)
+ if (x < 1)
+ fun_l23_n108(x)
+ else
+ fun_l23_n108(x)
+ end
+end
+
+def fun_l22_n540(x)
+ if (x < 1)
+ fun_l23_n879(x)
+ else
+ fun_l23_n608(x)
+ end
+end
+
+def fun_l22_n541(x)
+ if (x < 1)
+ fun_l23_n160(x)
+ else
+ fun_l23_n820(x)
+ end
+end
+
+def fun_l22_n542(x)
+ if (x < 1)
+ fun_l23_n813(x)
+ else
+ fun_l23_n169(x)
+ end
+end
+
+def fun_l22_n543(x)
+ if (x < 1)
+ fun_l23_n151(x)
+ else
+ fun_l23_n420(x)
+ end
+end
+
+def fun_l22_n544(x)
+ if (x < 1)
+ fun_l23_n81(x)
+ else
+ fun_l23_n226(x)
+ end
+end
+
+def fun_l22_n545(x)
+ if (x < 1)
+ fun_l23_n464(x)
+ else
+ fun_l23_n602(x)
+ end
+end
+
+def fun_l22_n546(x)
+ if (x < 1)
+ fun_l23_n798(x)
+ else
+ fun_l23_n395(x)
+ end
+end
+
+def fun_l22_n547(x)
+ if (x < 1)
+ fun_l23_n597(x)
+ else
+ fun_l23_n147(x)
+ end
+end
+
+def fun_l22_n548(x)
+ if (x < 1)
+ fun_l23_n952(x)
+ else
+ fun_l23_n515(x)
+ end
+end
+
+def fun_l22_n549(x)
+ if (x < 1)
+ fun_l23_n134(x)
+ else
+ fun_l23_n154(x)
+ end
+end
+
+def fun_l22_n550(x)
+ if (x < 1)
+ fun_l23_n35(x)
+ else
+ fun_l23_n492(x)
+ end
+end
+
+def fun_l22_n551(x)
+ if (x < 1)
+ fun_l23_n878(x)
+ else
+ fun_l23_n899(x)
+ end
+end
+
+def fun_l22_n552(x)
+ if (x < 1)
+ fun_l23_n574(x)
+ else
+ fun_l23_n108(x)
+ end
+end
+
+def fun_l22_n553(x)
+ if (x < 1)
+ fun_l23_n386(x)
+ else
+ fun_l23_n565(x)
+ end
+end
+
+def fun_l22_n554(x)
+ if (x < 1)
+ fun_l23_n551(x)
+ else
+ fun_l23_n905(x)
+ end
+end
+
+def fun_l22_n555(x)
+ if (x < 1)
+ fun_l23_n680(x)
+ else
+ fun_l23_n367(x)
+ end
+end
+
+def fun_l22_n556(x)
+ if (x < 1)
+ fun_l23_n452(x)
+ else
+ fun_l23_n211(x)
+ end
+end
+
+def fun_l22_n557(x)
+ if (x < 1)
+ fun_l23_n597(x)
+ else
+ fun_l23_n112(x)
+ end
+end
+
+def fun_l22_n558(x)
+ if (x < 1)
+ fun_l23_n22(x)
+ else
+ fun_l23_n966(x)
+ end
+end
+
+def fun_l22_n559(x)
+ if (x < 1)
+ fun_l23_n512(x)
+ else
+ fun_l23_n337(x)
+ end
+end
+
+def fun_l22_n560(x)
+ if (x < 1)
+ fun_l23_n649(x)
+ else
+ fun_l23_n361(x)
+ end
+end
+
+def fun_l22_n561(x)
+ if (x < 1)
+ fun_l23_n500(x)
+ else
+ fun_l23_n113(x)
+ end
+end
+
+def fun_l22_n562(x)
+ if (x < 1)
+ fun_l23_n455(x)
+ else
+ fun_l23_n734(x)
+ end
+end
+
+def fun_l22_n563(x)
+ if (x < 1)
+ fun_l23_n847(x)
+ else
+ fun_l23_n86(x)
+ end
+end
+
+def fun_l22_n564(x)
+ if (x < 1)
+ fun_l23_n251(x)
+ else
+ fun_l23_n203(x)
+ end
+end
+
+def fun_l22_n565(x)
+ if (x < 1)
+ fun_l23_n977(x)
+ else
+ fun_l23_n893(x)
+ end
+end
+
+def fun_l22_n566(x)
+ if (x < 1)
+ fun_l23_n693(x)
+ else
+ fun_l23_n507(x)
+ end
+end
+
+def fun_l22_n567(x)
+ if (x < 1)
+ fun_l23_n194(x)
+ else
+ fun_l23_n972(x)
+ end
+end
+
+def fun_l22_n568(x)
+ if (x < 1)
+ fun_l23_n44(x)
+ else
+ fun_l23_n694(x)
+ end
+end
+
+def fun_l22_n569(x)
+ if (x < 1)
+ fun_l23_n277(x)
+ else
+ fun_l23_n317(x)
+ end
+end
+
+def fun_l22_n570(x)
+ if (x < 1)
+ fun_l23_n40(x)
+ else
+ fun_l23_n10(x)
+ end
+end
+
+def fun_l22_n571(x)
+ if (x < 1)
+ fun_l23_n199(x)
+ else
+ fun_l23_n454(x)
+ end
+end
+
+def fun_l22_n572(x)
+ if (x < 1)
+ fun_l23_n821(x)
+ else
+ fun_l23_n556(x)
+ end
+end
+
+def fun_l22_n573(x)
+ if (x < 1)
+ fun_l23_n142(x)
+ else
+ fun_l23_n307(x)
+ end
+end
+
+def fun_l22_n574(x)
+ if (x < 1)
+ fun_l23_n291(x)
+ else
+ fun_l23_n152(x)
+ end
+end
+
+def fun_l22_n575(x)
+ if (x < 1)
+ fun_l23_n547(x)
+ else
+ fun_l23_n580(x)
+ end
+end
+
+def fun_l22_n576(x)
+ if (x < 1)
+ fun_l23_n841(x)
+ else
+ fun_l23_n518(x)
+ end
+end
+
+def fun_l22_n577(x)
+ if (x < 1)
+ fun_l23_n91(x)
+ else
+ fun_l23_n730(x)
+ end
+end
+
+def fun_l22_n578(x)
+ if (x < 1)
+ fun_l23_n626(x)
+ else
+ fun_l23_n403(x)
+ end
+end
+
+def fun_l22_n579(x)
+ if (x < 1)
+ fun_l23_n12(x)
+ else
+ fun_l23_n863(x)
+ end
+end
+
+def fun_l22_n580(x)
+ if (x < 1)
+ fun_l23_n878(x)
+ else
+ fun_l23_n28(x)
+ end
+end
+
+def fun_l22_n581(x)
+ if (x < 1)
+ fun_l23_n793(x)
+ else
+ fun_l23_n942(x)
+ end
+end
+
+def fun_l22_n582(x)
+ if (x < 1)
+ fun_l23_n168(x)
+ else
+ fun_l23_n102(x)
+ end
+end
+
+def fun_l22_n583(x)
+ if (x < 1)
+ fun_l23_n40(x)
+ else
+ fun_l23_n231(x)
+ end
+end
+
+def fun_l22_n584(x)
+ if (x < 1)
+ fun_l23_n54(x)
+ else
+ fun_l23_n734(x)
+ end
+end
+
+def fun_l22_n585(x)
+ if (x < 1)
+ fun_l23_n878(x)
+ else
+ fun_l23_n938(x)
+ end
+end
+
+def fun_l22_n586(x)
+ if (x < 1)
+ fun_l23_n89(x)
+ else
+ fun_l23_n533(x)
+ end
+end
+
+def fun_l22_n587(x)
+ if (x < 1)
+ fun_l23_n289(x)
+ else
+ fun_l23_n587(x)
+ end
+end
+
+def fun_l22_n588(x)
+ if (x < 1)
+ fun_l23_n716(x)
+ else
+ fun_l23_n785(x)
+ end
+end
+
+def fun_l22_n589(x)
+ if (x < 1)
+ fun_l23_n22(x)
+ else
+ fun_l23_n820(x)
+ end
+end
+
+def fun_l22_n590(x)
+ if (x < 1)
+ fun_l23_n945(x)
+ else
+ fun_l23_n644(x)
+ end
+end
+
+def fun_l22_n591(x)
+ if (x < 1)
+ fun_l23_n209(x)
+ else
+ fun_l23_n86(x)
+ end
+end
+
+def fun_l22_n592(x)
+ if (x < 1)
+ fun_l23_n209(x)
+ else
+ fun_l23_n971(x)
+ end
+end
+
+def fun_l22_n593(x)
+ if (x < 1)
+ fun_l23_n489(x)
+ else
+ fun_l23_n725(x)
+ end
+end
+
+def fun_l22_n594(x)
+ if (x < 1)
+ fun_l23_n42(x)
+ else
+ fun_l23_n405(x)
+ end
+end
+
+def fun_l22_n595(x)
+ if (x < 1)
+ fun_l23_n162(x)
+ else
+ fun_l23_n222(x)
+ end
+end
+
+def fun_l22_n596(x)
+ if (x < 1)
+ fun_l23_n942(x)
+ else
+ fun_l23_n193(x)
+ end
+end
+
+def fun_l22_n597(x)
+ if (x < 1)
+ fun_l23_n616(x)
+ else
+ fun_l23_n806(x)
+ end
+end
+
+def fun_l22_n598(x)
+ if (x < 1)
+ fun_l23_n278(x)
+ else
+ fun_l23_n330(x)
+ end
+end
+
+def fun_l22_n599(x)
+ if (x < 1)
+ fun_l23_n863(x)
+ else
+ fun_l23_n428(x)
+ end
+end
+
+def fun_l22_n600(x)
+ if (x < 1)
+ fun_l23_n315(x)
+ else
+ fun_l23_n319(x)
+ end
+end
+
+def fun_l22_n601(x)
+ if (x < 1)
+ fun_l23_n409(x)
+ else
+ fun_l23_n682(x)
+ end
+end
+
+def fun_l22_n602(x)
+ if (x < 1)
+ fun_l23_n307(x)
+ else
+ fun_l23_n47(x)
+ end
+end
+
+def fun_l22_n603(x)
+ if (x < 1)
+ fun_l23_n578(x)
+ else
+ fun_l23_n762(x)
+ end
+end
+
+def fun_l22_n604(x)
+ if (x < 1)
+ fun_l23_n208(x)
+ else
+ fun_l23_n314(x)
+ end
+end
+
+def fun_l22_n605(x)
+ if (x < 1)
+ fun_l23_n259(x)
+ else
+ fun_l23_n720(x)
+ end
+end
+
+def fun_l22_n606(x)
+ if (x < 1)
+ fun_l23_n272(x)
+ else
+ fun_l23_n619(x)
+ end
+end
+
+def fun_l22_n607(x)
+ if (x < 1)
+ fun_l23_n550(x)
+ else
+ fun_l23_n850(x)
+ end
+end
+
+def fun_l22_n608(x)
+ if (x < 1)
+ fun_l23_n617(x)
+ else
+ fun_l23_n999(x)
+ end
+end
+
+def fun_l22_n609(x)
+ if (x < 1)
+ fun_l23_n203(x)
+ else
+ fun_l23_n597(x)
+ end
+end
+
+def fun_l22_n610(x)
+ if (x < 1)
+ fun_l23_n547(x)
+ else
+ fun_l23_n252(x)
+ end
+end
+
+def fun_l22_n611(x)
+ if (x < 1)
+ fun_l23_n427(x)
+ else
+ fun_l23_n16(x)
+ end
+end
+
+def fun_l22_n612(x)
+ if (x < 1)
+ fun_l23_n236(x)
+ else
+ fun_l23_n142(x)
+ end
+end
+
+def fun_l22_n613(x)
+ if (x < 1)
+ fun_l23_n94(x)
+ else
+ fun_l23_n739(x)
+ end
+end
+
+def fun_l22_n614(x)
+ if (x < 1)
+ fun_l23_n504(x)
+ else
+ fun_l23_n101(x)
+ end
+end
+
+def fun_l22_n615(x)
+ if (x < 1)
+ fun_l23_n469(x)
+ else
+ fun_l23_n650(x)
+ end
+end
+
+def fun_l22_n616(x)
+ if (x < 1)
+ fun_l23_n752(x)
+ else
+ fun_l23_n262(x)
+ end
+end
+
+def fun_l22_n617(x)
+ if (x < 1)
+ fun_l23_n256(x)
+ else
+ fun_l23_n269(x)
+ end
+end
+
+def fun_l22_n618(x)
+ if (x < 1)
+ fun_l23_n784(x)
+ else
+ fun_l23_n402(x)
+ end
+end
+
+def fun_l22_n619(x)
+ if (x < 1)
+ fun_l23_n405(x)
+ else
+ fun_l23_n585(x)
+ end
+end
+
+def fun_l22_n620(x)
+ if (x < 1)
+ fun_l23_n33(x)
+ else
+ fun_l23_n357(x)
+ end
+end
+
+def fun_l22_n621(x)
+ if (x < 1)
+ fun_l23_n448(x)
+ else
+ fun_l23_n618(x)
+ end
+end
+
+def fun_l22_n622(x)
+ if (x < 1)
+ fun_l23_n520(x)
+ else
+ fun_l23_n612(x)
+ end
+end
+
+def fun_l22_n623(x)
+ if (x < 1)
+ fun_l23_n54(x)
+ else
+ fun_l23_n872(x)
+ end
+end
+
+def fun_l22_n624(x)
+ if (x < 1)
+ fun_l23_n915(x)
+ else
+ fun_l23_n1(x)
+ end
+end
+
+def fun_l22_n625(x)
+ if (x < 1)
+ fun_l23_n274(x)
+ else
+ fun_l23_n509(x)
+ end
+end
+
+def fun_l22_n626(x)
+ if (x < 1)
+ fun_l23_n506(x)
+ else
+ fun_l23_n938(x)
+ end
+end
+
+def fun_l22_n627(x)
+ if (x < 1)
+ fun_l23_n463(x)
+ else
+ fun_l23_n436(x)
+ end
+end
+
+def fun_l22_n628(x)
+ if (x < 1)
+ fun_l23_n33(x)
+ else
+ fun_l23_n279(x)
+ end
+end
+
+def fun_l22_n629(x)
+ if (x < 1)
+ fun_l23_n825(x)
+ else
+ fun_l23_n11(x)
+ end
+end
+
+def fun_l22_n630(x)
+ if (x < 1)
+ fun_l23_n778(x)
+ else
+ fun_l23_n77(x)
+ end
+end
+
+def fun_l22_n631(x)
+ if (x < 1)
+ fun_l23_n826(x)
+ else
+ fun_l23_n601(x)
+ end
+end
+
+def fun_l22_n632(x)
+ if (x < 1)
+ fun_l23_n973(x)
+ else
+ fun_l23_n444(x)
+ end
+end
+
+def fun_l22_n633(x)
+ if (x < 1)
+ fun_l23_n59(x)
+ else
+ fun_l23_n578(x)
+ end
+end
+
+def fun_l22_n634(x)
+ if (x < 1)
+ fun_l23_n366(x)
+ else
+ fun_l23_n128(x)
+ end
+end
+
+def fun_l22_n635(x)
+ if (x < 1)
+ fun_l23_n733(x)
+ else
+ fun_l23_n486(x)
+ end
+end
+
+def fun_l22_n636(x)
+ if (x < 1)
+ fun_l23_n22(x)
+ else
+ fun_l23_n997(x)
+ end
+end
+
+def fun_l22_n637(x)
+ if (x < 1)
+ fun_l23_n286(x)
+ else
+ fun_l23_n609(x)
+ end
+end
+
+def fun_l22_n638(x)
+ if (x < 1)
+ fun_l23_n519(x)
+ else
+ fun_l23_n381(x)
+ end
+end
+
+def fun_l22_n639(x)
+ if (x < 1)
+ fun_l23_n697(x)
+ else
+ fun_l23_n954(x)
+ end
+end
+
+def fun_l22_n640(x)
+ if (x < 1)
+ fun_l23_n348(x)
+ else
+ fun_l23_n261(x)
+ end
+end
+
+def fun_l22_n641(x)
+ if (x < 1)
+ fun_l23_n426(x)
+ else
+ fun_l23_n166(x)
+ end
+end
+
+def fun_l22_n642(x)
+ if (x < 1)
+ fun_l23_n488(x)
+ else
+ fun_l23_n79(x)
+ end
+end
+
+def fun_l22_n643(x)
+ if (x < 1)
+ fun_l23_n186(x)
+ else
+ fun_l23_n723(x)
+ end
+end
+
+def fun_l22_n644(x)
+ if (x < 1)
+ fun_l23_n582(x)
+ else
+ fun_l23_n365(x)
+ end
+end
+
+def fun_l22_n645(x)
+ if (x < 1)
+ fun_l23_n36(x)
+ else
+ fun_l23_n726(x)
+ end
+end
+
+def fun_l22_n646(x)
+ if (x < 1)
+ fun_l23_n585(x)
+ else
+ fun_l23_n770(x)
+ end
+end
+
+def fun_l22_n647(x)
+ if (x < 1)
+ fun_l23_n68(x)
+ else
+ fun_l23_n261(x)
+ end
+end
+
+def fun_l22_n648(x)
+ if (x < 1)
+ fun_l23_n208(x)
+ else
+ fun_l23_n302(x)
+ end
+end
+
+def fun_l22_n649(x)
+ if (x < 1)
+ fun_l23_n539(x)
+ else
+ fun_l23_n731(x)
+ end
+end
+
+def fun_l22_n650(x)
+ if (x < 1)
+ fun_l23_n709(x)
+ else
+ fun_l23_n144(x)
+ end
+end
+
+def fun_l22_n651(x)
+ if (x < 1)
+ fun_l23_n802(x)
+ else
+ fun_l23_n886(x)
+ end
+end
+
+def fun_l22_n652(x)
+ if (x < 1)
+ fun_l23_n796(x)
+ else
+ fun_l23_n574(x)
+ end
+end
+
+def fun_l22_n653(x)
+ if (x < 1)
+ fun_l23_n755(x)
+ else
+ fun_l23_n960(x)
+ end
+end
+
+def fun_l22_n654(x)
+ if (x < 1)
+ fun_l23_n415(x)
+ else
+ fun_l23_n543(x)
+ end
+end
+
+def fun_l22_n655(x)
+ if (x < 1)
+ fun_l23_n932(x)
+ else
+ fun_l23_n412(x)
+ end
+end
+
+def fun_l22_n656(x)
+ if (x < 1)
+ fun_l23_n216(x)
+ else
+ fun_l23_n869(x)
+ end
+end
+
+def fun_l22_n657(x)
+ if (x < 1)
+ fun_l23_n750(x)
+ else
+ fun_l23_n66(x)
+ end
+end
+
+def fun_l22_n658(x)
+ if (x < 1)
+ fun_l23_n400(x)
+ else
+ fun_l23_n31(x)
+ end
+end
+
+def fun_l22_n659(x)
+ if (x < 1)
+ fun_l23_n815(x)
+ else
+ fun_l23_n866(x)
+ end
+end
+
+def fun_l22_n660(x)
+ if (x < 1)
+ fun_l23_n459(x)
+ else
+ fun_l23_n833(x)
+ end
+end
+
+def fun_l22_n661(x)
+ if (x < 1)
+ fun_l23_n167(x)
+ else
+ fun_l23_n861(x)
+ end
+end
+
+def fun_l22_n662(x)
+ if (x < 1)
+ fun_l23_n789(x)
+ else
+ fun_l23_n543(x)
+ end
+end
+
+def fun_l22_n663(x)
+ if (x < 1)
+ fun_l23_n850(x)
+ else
+ fun_l23_n899(x)
+ end
+end
+
+def fun_l22_n664(x)
+ if (x < 1)
+ fun_l23_n986(x)
+ else
+ fun_l23_n924(x)
+ end
+end
+
+def fun_l22_n665(x)
+ if (x < 1)
+ fun_l23_n667(x)
+ else
+ fun_l23_n510(x)
+ end
+end
+
+def fun_l22_n666(x)
+ if (x < 1)
+ fun_l23_n744(x)
+ else
+ fun_l23_n530(x)
+ end
+end
+
+def fun_l22_n667(x)
+ if (x < 1)
+ fun_l23_n930(x)
+ else
+ fun_l23_n693(x)
+ end
+end
+
+def fun_l22_n668(x)
+ if (x < 1)
+ fun_l23_n942(x)
+ else
+ fun_l23_n785(x)
+ end
+end
+
+def fun_l22_n669(x)
+ if (x < 1)
+ fun_l23_n520(x)
+ else
+ fun_l23_n342(x)
+ end
+end
+
+def fun_l22_n670(x)
+ if (x < 1)
+ fun_l23_n865(x)
+ else
+ fun_l23_n63(x)
+ end
+end
+
+def fun_l22_n671(x)
+ if (x < 1)
+ fun_l23_n173(x)
+ else
+ fun_l23_n142(x)
+ end
+end
+
+def fun_l22_n672(x)
+ if (x < 1)
+ fun_l23_n487(x)
+ else
+ fun_l23_n400(x)
+ end
+end
+
+def fun_l22_n673(x)
+ if (x < 1)
+ fun_l23_n330(x)
+ else
+ fun_l23_n639(x)
+ end
+end
+
+def fun_l22_n674(x)
+ if (x < 1)
+ fun_l23_n593(x)
+ else
+ fun_l23_n653(x)
+ end
+end
+
+def fun_l22_n675(x)
+ if (x < 1)
+ fun_l23_n167(x)
+ else
+ fun_l23_n173(x)
+ end
+end
+
+def fun_l22_n676(x)
+ if (x < 1)
+ fun_l23_n288(x)
+ else
+ fun_l23_n412(x)
+ end
+end
+
+def fun_l22_n677(x)
+ if (x < 1)
+ fun_l23_n266(x)
+ else
+ fun_l23_n728(x)
+ end
+end
+
+def fun_l22_n678(x)
+ if (x < 1)
+ fun_l23_n137(x)
+ else
+ fun_l23_n277(x)
+ end
+end
+
+def fun_l22_n679(x)
+ if (x < 1)
+ fun_l23_n732(x)
+ else
+ fun_l23_n760(x)
+ end
+end
+
+def fun_l22_n680(x)
+ if (x < 1)
+ fun_l23_n372(x)
+ else
+ fun_l23_n26(x)
+ end
+end
+
+def fun_l22_n681(x)
+ if (x < 1)
+ fun_l23_n156(x)
+ else
+ fun_l23_n449(x)
+ end
+end
+
+def fun_l22_n682(x)
+ if (x < 1)
+ fun_l23_n117(x)
+ else
+ fun_l23_n711(x)
+ end
+end
+
+def fun_l22_n683(x)
+ if (x < 1)
+ fun_l23_n732(x)
+ else
+ fun_l23_n922(x)
+ end
+end
+
+def fun_l22_n684(x)
+ if (x < 1)
+ fun_l23_n116(x)
+ else
+ fun_l23_n347(x)
+ end
+end
+
+def fun_l22_n685(x)
+ if (x < 1)
+ fun_l23_n277(x)
+ else
+ fun_l23_n837(x)
+ end
+end
+
+def fun_l22_n686(x)
+ if (x < 1)
+ fun_l23_n578(x)
+ else
+ fun_l23_n290(x)
+ end
+end
+
+def fun_l22_n687(x)
+ if (x < 1)
+ fun_l23_n858(x)
+ else
+ fun_l23_n390(x)
+ end
+end
+
+def fun_l22_n688(x)
+ if (x < 1)
+ fun_l23_n52(x)
+ else
+ fun_l23_n759(x)
+ end
+end
+
+def fun_l22_n689(x)
+ if (x < 1)
+ fun_l23_n873(x)
+ else
+ fun_l23_n25(x)
+ end
+end
+
+def fun_l22_n690(x)
+ if (x < 1)
+ fun_l23_n262(x)
+ else
+ fun_l23_n511(x)
+ end
+end
+
+def fun_l22_n691(x)
+ if (x < 1)
+ fun_l23_n654(x)
+ else
+ fun_l23_n359(x)
+ end
+end
+
+def fun_l22_n692(x)
+ if (x < 1)
+ fun_l23_n933(x)
+ else
+ fun_l23_n369(x)
+ end
+end
+
+def fun_l22_n693(x)
+ if (x < 1)
+ fun_l23_n845(x)
+ else
+ fun_l23_n999(x)
+ end
+end
+
+def fun_l22_n694(x)
+ if (x < 1)
+ fun_l23_n479(x)
+ else
+ fun_l23_n284(x)
+ end
+end
+
+def fun_l22_n695(x)
+ if (x < 1)
+ fun_l23_n383(x)
+ else
+ fun_l23_n91(x)
+ end
+end
+
+def fun_l22_n696(x)
+ if (x < 1)
+ fun_l23_n467(x)
+ else
+ fun_l23_n555(x)
+ end
+end
+
+def fun_l22_n697(x)
+ if (x < 1)
+ fun_l23_n590(x)
+ else
+ fun_l23_n372(x)
+ end
+end
+
+def fun_l22_n698(x)
+ if (x < 1)
+ fun_l23_n706(x)
+ else
+ fun_l23_n195(x)
+ end
+end
+
+def fun_l22_n699(x)
+ if (x < 1)
+ fun_l23_n621(x)
+ else
+ fun_l23_n265(x)
+ end
+end
+
+def fun_l22_n700(x)
+ if (x < 1)
+ fun_l23_n505(x)
+ else
+ fun_l23_n831(x)
+ end
+end
+
+def fun_l22_n701(x)
+ if (x < 1)
+ fun_l23_n361(x)
+ else
+ fun_l23_n74(x)
+ end
+end
+
+def fun_l22_n702(x)
+ if (x < 1)
+ fun_l23_n734(x)
+ else
+ fun_l23_n922(x)
+ end
+end
+
+def fun_l22_n703(x)
+ if (x < 1)
+ fun_l23_n457(x)
+ else
+ fun_l23_n219(x)
+ end
+end
+
+def fun_l22_n704(x)
+ if (x < 1)
+ fun_l23_n436(x)
+ else
+ fun_l23_n733(x)
+ end
+end
+
+def fun_l22_n705(x)
+ if (x < 1)
+ fun_l23_n150(x)
+ else
+ fun_l23_n463(x)
+ end
+end
+
+def fun_l22_n706(x)
+ if (x < 1)
+ fun_l23_n486(x)
+ else
+ fun_l23_n906(x)
+ end
+end
+
+def fun_l22_n707(x)
+ if (x < 1)
+ fun_l23_n826(x)
+ else
+ fun_l23_n829(x)
+ end
+end
+
+def fun_l22_n708(x)
+ if (x < 1)
+ fun_l23_n186(x)
+ else
+ fun_l23_n555(x)
+ end
+end
+
+def fun_l22_n709(x)
+ if (x < 1)
+ fun_l23_n186(x)
+ else
+ fun_l23_n739(x)
+ end
+end
+
+def fun_l22_n710(x)
+ if (x < 1)
+ fun_l23_n58(x)
+ else
+ fun_l23_n395(x)
+ end
+end
+
+def fun_l22_n711(x)
+ if (x < 1)
+ fun_l23_n916(x)
+ else
+ fun_l23_n546(x)
+ end
+end
+
+def fun_l22_n712(x)
+ if (x < 1)
+ fun_l23_n309(x)
+ else
+ fun_l23_n582(x)
+ end
+end
+
+def fun_l22_n713(x)
+ if (x < 1)
+ fun_l23_n460(x)
+ else
+ fun_l23_n1(x)
+ end
+end
+
+def fun_l22_n714(x)
+ if (x < 1)
+ fun_l23_n270(x)
+ else
+ fun_l23_n888(x)
+ end
+end
+
+def fun_l22_n715(x)
+ if (x < 1)
+ fun_l23_n564(x)
+ else
+ fun_l23_n652(x)
+ end
+end
+
+def fun_l22_n716(x)
+ if (x < 1)
+ fun_l23_n14(x)
+ else
+ fun_l23_n862(x)
+ end
+end
+
+def fun_l22_n717(x)
+ if (x < 1)
+ fun_l23_n15(x)
+ else
+ fun_l23_n366(x)
+ end
+end
+
+def fun_l22_n718(x)
+ if (x < 1)
+ fun_l23_n580(x)
+ else
+ fun_l23_n367(x)
+ end
+end
+
+def fun_l22_n719(x)
+ if (x < 1)
+ fun_l23_n256(x)
+ else
+ fun_l23_n385(x)
+ end
+end
+
+def fun_l22_n720(x)
+ if (x < 1)
+ fun_l23_n735(x)
+ else
+ fun_l23_n811(x)
+ end
+end
+
+def fun_l22_n721(x)
+ if (x < 1)
+ fun_l23_n348(x)
+ else
+ fun_l23_n681(x)
+ end
+end
+
+def fun_l22_n722(x)
+ if (x < 1)
+ fun_l23_n908(x)
+ else
+ fun_l23_n80(x)
+ end
+end
+
+def fun_l22_n723(x)
+ if (x < 1)
+ fun_l23_n523(x)
+ else
+ fun_l23_n91(x)
+ end
+end
+
+def fun_l22_n724(x)
+ if (x < 1)
+ fun_l23_n212(x)
+ else
+ fun_l23_n220(x)
+ end
+end
+
+def fun_l22_n725(x)
+ if (x < 1)
+ fun_l23_n396(x)
+ else
+ fun_l23_n855(x)
+ end
+end
+
+def fun_l22_n726(x)
+ if (x < 1)
+ fun_l23_n717(x)
+ else
+ fun_l23_n314(x)
+ end
+end
+
+def fun_l22_n727(x)
+ if (x < 1)
+ fun_l23_n152(x)
+ else
+ fun_l23_n374(x)
+ end
+end
+
+def fun_l22_n728(x)
+ if (x < 1)
+ fun_l23_n464(x)
+ else
+ fun_l23_n439(x)
+ end
+end
+
+def fun_l22_n729(x)
+ if (x < 1)
+ fun_l23_n631(x)
+ else
+ fun_l23_n601(x)
+ end
+end
+
+def fun_l22_n730(x)
+ if (x < 1)
+ fun_l23_n689(x)
+ else
+ fun_l23_n929(x)
+ end
+end
+
+def fun_l22_n731(x)
+ if (x < 1)
+ fun_l23_n691(x)
+ else
+ fun_l23_n868(x)
+ end
+end
+
+def fun_l22_n732(x)
+ if (x < 1)
+ fun_l23_n629(x)
+ else
+ fun_l23_n997(x)
+ end
+end
+
+def fun_l22_n733(x)
+ if (x < 1)
+ fun_l23_n815(x)
+ else
+ fun_l23_n696(x)
+ end
+end
+
+def fun_l22_n734(x)
+ if (x < 1)
+ fun_l23_n636(x)
+ else
+ fun_l23_n858(x)
+ end
+end
+
+def fun_l22_n735(x)
+ if (x < 1)
+ fun_l23_n131(x)
+ else
+ fun_l23_n350(x)
+ end
+end
+
+def fun_l22_n736(x)
+ if (x < 1)
+ fun_l23_n509(x)
+ else
+ fun_l23_n197(x)
+ end
+end
+
+def fun_l22_n737(x)
+ if (x < 1)
+ fun_l23_n549(x)
+ else
+ fun_l23_n16(x)
+ end
+end
+
+def fun_l22_n738(x)
+ if (x < 1)
+ fun_l23_n797(x)
+ else
+ fun_l23_n829(x)
+ end
+end
+
+def fun_l22_n739(x)
+ if (x < 1)
+ fun_l23_n78(x)
+ else
+ fun_l23_n299(x)
+ end
+end
+
+def fun_l22_n740(x)
+ if (x < 1)
+ fun_l23_n165(x)
+ else
+ fun_l23_n822(x)
+ end
+end
+
+def fun_l22_n741(x)
+ if (x < 1)
+ fun_l23_n494(x)
+ else
+ fun_l23_n226(x)
+ end
+end
+
+def fun_l22_n742(x)
+ if (x < 1)
+ fun_l23_n930(x)
+ else
+ fun_l23_n301(x)
+ end
+end
+
+def fun_l22_n743(x)
+ if (x < 1)
+ fun_l23_n357(x)
+ else
+ fun_l23_n399(x)
+ end
+end
+
+def fun_l22_n744(x)
+ if (x < 1)
+ fun_l23_n865(x)
+ else
+ fun_l23_n499(x)
+ end
+end
+
+def fun_l22_n745(x)
+ if (x < 1)
+ fun_l23_n437(x)
+ else
+ fun_l23_n145(x)
+ end
+end
+
+def fun_l22_n746(x)
+ if (x < 1)
+ fun_l23_n883(x)
+ else
+ fun_l23_n269(x)
+ end
+end
+
+def fun_l22_n747(x)
+ if (x < 1)
+ fun_l23_n323(x)
+ else
+ fun_l23_n199(x)
+ end
+end
+
+def fun_l22_n748(x)
+ if (x < 1)
+ fun_l23_n843(x)
+ else
+ fun_l23_n179(x)
+ end
+end
+
+def fun_l22_n749(x)
+ if (x < 1)
+ fun_l23_n413(x)
+ else
+ fun_l23_n195(x)
+ end
+end
+
+def fun_l22_n750(x)
+ if (x < 1)
+ fun_l23_n50(x)
+ else
+ fun_l23_n219(x)
+ end
+end
+
+def fun_l22_n751(x)
+ if (x < 1)
+ fun_l23_n574(x)
+ else
+ fun_l23_n649(x)
+ end
+end
+
+def fun_l22_n752(x)
+ if (x < 1)
+ fun_l23_n495(x)
+ else
+ fun_l23_n664(x)
+ end
+end
+
+def fun_l22_n753(x)
+ if (x < 1)
+ fun_l23_n899(x)
+ else
+ fun_l23_n14(x)
+ end
+end
+
+def fun_l22_n754(x)
+ if (x < 1)
+ fun_l23_n230(x)
+ else
+ fun_l23_n933(x)
+ end
+end
+
+def fun_l22_n755(x)
+ if (x < 1)
+ fun_l23_n236(x)
+ else
+ fun_l23_n854(x)
+ end
+end
+
+def fun_l22_n756(x)
+ if (x < 1)
+ fun_l23_n786(x)
+ else
+ fun_l23_n599(x)
+ end
+end
+
+def fun_l22_n757(x)
+ if (x < 1)
+ fun_l23_n921(x)
+ else
+ fun_l23_n805(x)
+ end
+end
+
+def fun_l22_n758(x)
+ if (x < 1)
+ fun_l23_n990(x)
+ else
+ fun_l23_n724(x)
+ end
+end
+
+def fun_l22_n759(x)
+ if (x < 1)
+ fun_l23_n376(x)
+ else
+ fun_l23_n568(x)
+ end
+end
+
+def fun_l22_n760(x)
+ if (x < 1)
+ fun_l23_n676(x)
+ else
+ fun_l23_n995(x)
+ end
+end
+
+def fun_l22_n761(x)
+ if (x < 1)
+ fun_l23_n144(x)
+ else
+ fun_l23_n104(x)
+ end
+end
+
+def fun_l22_n762(x)
+ if (x < 1)
+ fun_l23_n463(x)
+ else
+ fun_l23_n736(x)
+ end
+end
+
+def fun_l22_n763(x)
+ if (x < 1)
+ fun_l23_n436(x)
+ else
+ fun_l23_n475(x)
+ end
+end
+
+def fun_l22_n764(x)
+ if (x < 1)
+ fun_l23_n607(x)
+ else
+ fun_l23_n737(x)
+ end
+end
+
+def fun_l22_n765(x)
+ if (x < 1)
+ fun_l23_n108(x)
+ else
+ fun_l23_n396(x)
+ end
+end
+
+def fun_l22_n766(x)
+ if (x < 1)
+ fun_l23_n35(x)
+ else
+ fun_l23_n422(x)
+ end
+end
+
+def fun_l22_n767(x)
+ if (x < 1)
+ fun_l23_n541(x)
+ else
+ fun_l23_n756(x)
+ end
+end
+
+def fun_l22_n768(x)
+ if (x < 1)
+ fun_l23_n558(x)
+ else
+ fun_l23_n858(x)
+ end
+end
+
+def fun_l22_n769(x)
+ if (x < 1)
+ fun_l23_n153(x)
+ else
+ fun_l23_n544(x)
+ end
+end
+
+def fun_l22_n770(x)
+ if (x < 1)
+ fun_l23_n201(x)
+ else
+ fun_l23_n905(x)
+ end
+end
+
+def fun_l22_n771(x)
+ if (x < 1)
+ fun_l23_n373(x)
+ else
+ fun_l23_n420(x)
+ end
+end
+
+def fun_l22_n772(x)
+ if (x < 1)
+ fun_l23_n635(x)
+ else
+ fun_l23_n464(x)
+ end
+end
+
+def fun_l22_n773(x)
+ if (x < 1)
+ fun_l23_n822(x)
+ else
+ fun_l23_n803(x)
+ end
+end
+
+def fun_l22_n774(x)
+ if (x < 1)
+ fun_l23_n118(x)
+ else
+ fun_l23_n127(x)
+ end
+end
+
+def fun_l22_n775(x)
+ if (x < 1)
+ fun_l23_n364(x)
+ else
+ fun_l23_n512(x)
+ end
+end
+
+def fun_l22_n776(x)
+ if (x < 1)
+ fun_l23_n186(x)
+ else
+ fun_l23_n275(x)
+ end
+end
+
+def fun_l22_n777(x)
+ if (x < 1)
+ fun_l23_n803(x)
+ else
+ fun_l23_n105(x)
+ end
+end
+
+def fun_l22_n778(x)
+ if (x < 1)
+ fun_l23_n535(x)
+ else
+ fun_l23_n569(x)
+ end
+end
+
+def fun_l22_n779(x)
+ if (x < 1)
+ fun_l23_n847(x)
+ else
+ fun_l23_n505(x)
+ end
+end
+
+def fun_l22_n780(x)
+ if (x < 1)
+ fun_l23_n323(x)
+ else
+ fun_l23_n552(x)
+ end
+end
+
+def fun_l22_n781(x)
+ if (x < 1)
+ fun_l23_n294(x)
+ else
+ fun_l23_n914(x)
+ end
+end
+
+def fun_l22_n782(x)
+ if (x < 1)
+ fun_l23_n887(x)
+ else
+ fun_l23_n214(x)
+ end
+end
+
+def fun_l22_n783(x)
+ if (x < 1)
+ fun_l23_n900(x)
+ else
+ fun_l23_n729(x)
+ end
+end
+
+def fun_l22_n784(x)
+ if (x < 1)
+ fun_l23_n458(x)
+ else
+ fun_l23_n233(x)
+ end
+end
+
+def fun_l22_n785(x)
+ if (x < 1)
+ fun_l23_n553(x)
+ else
+ fun_l23_n306(x)
+ end
+end
+
+def fun_l22_n786(x)
+ if (x < 1)
+ fun_l23_n853(x)
+ else
+ fun_l23_n946(x)
+ end
+end
+
+def fun_l22_n787(x)
+ if (x < 1)
+ fun_l23_n595(x)
+ else
+ fun_l23_n288(x)
+ end
+end
+
+def fun_l22_n788(x)
+ if (x < 1)
+ fun_l23_n785(x)
+ else
+ fun_l23_n752(x)
+ end
+end
+
+def fun_l22_n789(x)
+ if (x < 1)
+ fun_l23_n787(x)
+ else
+ fun_l23_n788(x)
+ end
+end
+
+def fun_l22_n790(x)
+ if (x < 1)
+ fun_l23_n461(x)
+ else
+ fun_l23_n251(x)
+ end
+end
+
+def fun_l22_n791(x)
+ if (x < 1)
+ fun_l23_n523(x)
+ else
+ fun_l23_n328(x)
+ end
+end
+
+def fun_l22_n792(x)
+ if (x < 1)
+ fun_l23_n200(x)
+ else
+ fun_l23_n689(x)
+ end
+end
+
+def fun_l22_n793(x)
+ if (x < 1)
+ fun_l23_n612(x)
+ else
+ fun_l23_n398(x)
+ end
+end
+
+def fun_l22_n794(x)
+ if (x < 1)
+ fun_l23_n937(x)
+ else
+ fun_l23_n965(x)
+ end
+end
+
+def fun_l22_n795(x)
+ if (x < 1)
+ fun_l23_n362(x)
+ else
+ fun_l23_n789(x)
+ end
+end
+
+def fun_l22_n796(x)
+ if (x < 1)
+ fun_l23_n145(x)
+ else
+ fun_l23_n36(x)
+ end
+end
+
+def fun_l22_n797(x)
+ if (x < 1)
+ fun_l23_n923(x)
+ else
+ fun_l23_n251(x)
+ end
+end
+
+def fun_l22_n798(x)
+ if (x < 1)
+ fun_l23_n15(x)
+ else
+ fun_l23_n563(x)
+ end
+end
+
+def fun_l22_n799(x)
+ if (x < 1)
+ fun_l23_n554(x)
+ else
+ fun_l23_n336(x)
+ end
+end
+
+def fun_l22_n800(x)
+ if (x < 1)
+ fun_l23_n939(x)
+ else
+ fun_l23_n993(x)
+ end
+end
+
+def fun_l22_n801(x)
+ if (x < 1)
+ fun_l23_n506(x)
+ else
+ fun_l23_n656(x)
+ end
+end
+
+def fun_l22_n802(x)
+ if (x < 1)
+ fun_l23_n591(x)
+ else
+ fun_l23_n582(x)
+ end
+end
+
+def fun_l22_n803(x)
+ if (x < 1)
+ fun_l23_n707(x)
+ else
+ fun_l23_n235(x)
+ end
+end
+
+def fun_l22_n804(x)
+ if (x < 1)
+ fun_l23_n474(x)
+ else
+ fun_l23_n253(x)
+ end
+end
+
+def fun_l22_n805(x)
+ if (x < 1)
+ fun_l23_n707(x)
+ else
+ fun_l23_n885(x)
+ end
+end
+
+def fun_l22_n806(x)
+ if (x < 1)
+ fun_l23_n155(x)
+ else
+ fun_l23_n210(x)
+ end
+end
+
+def fun_l22_n807(x)
+ if (x < 1)
+ fun_l23_n489(x)
+ else
+ fun_l23_n249(x)
+ end
+end
+
+def fun_l22_n808(x)
+ if (x < 1)
+ fun_l23_n840(x)
+ else
+ fun_l23_n748(x)
+ end
+end
+
+def fun_l22_n809(x)
+ if (x < 1)
+ fun_l23_n910(x)
+ else
+ fun_l23_n884(x)
+ end
+end
+
+def fun_l22_n810(x)
+ if (x < 1)
+ fun_l23_n653(x)
+ else
+ fun_l23_n321(x)
+ end
+end
+
+def fun_l22_n811(x)
+ if (x < 1)
+ fun_l23_n310(x)
+ else
+ fun_l23_n366(x)
+ end
+end
+
+def fun_l22_n812(x)
+ if (x < 1)
+ fun_l23_n441(x)
+ else
+ fun_l23_n795(x)
+ end
+end
+
+def fun_l22_n813(x)
+ if (x < 1)
+ fun_l23_n666(x)
+ else
+ fun_l23_n631(x)
+ end
+end
+
+def fun_l22_n814(x)
+ if (x < 1)
+ fun_l23_n680(x)
+ else
+ fun_l23_n88(x)
+ end
+end
+
+def fun_l22_n815(x)
+ if (x < 1)
+ fun_l23_n80(x)
+ else
+ fun_l23_n989(x)
+ end
+end
+
+def fun_l22_n816(x)
+ if (x < 1)
+ fun_l23_n65(x)
+ else
+ fun_l23_n46(x)
+ end
+end
+
+def fun_l22_n817(x)
+ if (x < 1)
+ fun_l23_n427(x)
+ else
+ fun_l23_n868(x)
+ end
+end
+
+def fun_l22_n818(x)
+ if (x < 1)
+ fun_l23_n900(x)
+ else
+ fun_l23_n213(x)
+ end
+end
+
+def fun_l22_n819(x)
+ if (x < 1)
+ fun_l23_n394(x)
+ else
+ fun_l23_n647(x)
+ end
+end
+
+def fun_l22_n820(x)
+ if (x < 1)
+ fun_l23_n981(x)
+ else
+ fun_l23_n530(x)
+ end
+end
+
+def fun_l22_n821(x)
+ if (x < 1)
+ fun_l23_n806(x)
+ else
+ fun_l23_n511(x)
+ end
+end
+
+def fun_l22_n822(x)
+ if (x < 1)
+ fun_l23_n141(x)
+ else
+ fun_l23_n91(x)
+ end
+end
+
+def fun_l22_n823(x)
+ if (x < 1)
+ fun_l23_n604(x)
+ else
+ fun_l23_n270(x)
+ end
+end
+
+def fun_l22_n824(x)
+ if (x < 1)
+ fun_l23_n347(x)
+ else
+ fun_l23_n937(x)
+ end
+end
+
+def fun_l22_n825(x)
+ if (x < 1)
+ fun_l23_n302(x)
+ else
+ fun_l23_n659(x)
+ end
+end
+
+def fun_l22_n826(x)
+ if (x < 1)
+ fun_l23_n386(x)
+ else
+ fun_l23_n174(x)
+ end
+end
+
+def fun_l22_n827(x)
+ if (x < 1)
+ fun_l23_n347(x)
+ else
+ fun_l23_n659(x)
+ end
+end
+
+def fun_l22_n828(x)
+ if (x < 1)
+ fun_l23_n647(x)
+ else
+ fun_l23_n648(x)
+ end
+end
+
+def fun_l22_n829(x)
+ if (x < 1)
+ fun_l23_n892(x)
+ else
+ fun_l23_n910(x)
+ end
+end
+
+def fun_l22_n830(x)
+ if (x < 1)
+ fun_l23_n274(x)
+ else
+ fun_l23_n739(x)
+ end
+end
+
+def fun_l22_n831(x)
+ if (x < 1)
+ fun_l23_n211(x)
+ else
+ fun_l23_n658(x)
+ end
+end
+
+def fun_l22_n832(x)
+ if (x < 1)
+ fun_l23_n584(x)
+ else
+ fun_l23_n163(x)
+ end
+end
+
+def fun_l22_n833(x)
+ if (x < 1)
+ fun_l23_n598(x)
+ else
+ fun_l23_n735(x)
+ end
+end
+
+def fun_l22_n834(x)
+ if (x < 1)
+ fun_l23_n934(x)
+ else
+ fun_l23_n579(x)
+ end
+end
+
+def fun_l22_n835(x)
+ if (x < 1)
+ fun_l23_n483(x)
+ else
+ fun_l23_n632(x)
+ end
+end
+
+def fun_l22_n836(x)
+ if (x < 1)
+ fun_l23_n329(x)
+ else
+ fun_l23_n799(x)
+ end
+end
+
+def fun_l22_n837(x)
+ if (x < 1)
+ fun_l23_n699(x)
+ else
+ fun_l23_n846(x)
+ end
+end
+
+def fun_l22_n838(x)
+ if (x < 1)
+ fun_l23_n40(x)
+ else
+ fun_l23_n715(x)
+ end
+end
+
+def fun_l22_n839(x)
+ if (x < 1)
+ fun_l23_n917(x)
+ else
+ fun_l23_n595(x)
+ end
+end
+
+def fun_l22_n840(x)
+ if (x < 1)
+ fun_l23_n171(x)
+ else
+ fun_l23_n204(x)
+ end
+end
+
+def fun_l22_n841(x)
+ if (x < 1)
+ fun_l23_n652(x)
+ else
+ fun_l23_n342(x)
+ end
+end
+
+def fun_l22_n842(x)
+ if (x < 1)
+ fun_l23_n853(x)
+ else
+ fun_l23_n981(x)
+ end
+end
+
+def fun_l22_n843(x)
+ if (x < 1)
+ fun_l23_n673(x)
+ else
+ fun_l23_n2(x)
+ end
+end
+
+def fun_l22_n844(x)
+ if (x < 1)
+ fun_l23_n799(x)
+ else
+ fun_l23_n654(x)
+ end
+end
+
+def fun_l22_n845(x)
+ if (x < 1)
+ fun_l23_n989(x)
+ else
+ fun_l23_n563(x)
+ end
+end
+
+def fun_l22_n846(x)
+ if (x < 1)
+ fun_l23_n415(x)
+ else
+ fun_l23_n245(x)
+ end
+end
+
+def fun_l22_n847(x)
+ if (x < 1)
+ fun_l23_n836(x)
+ else
+ fun_l23_n347(x)
+ end
+end
+
+def fun_l22_n848(x)
+ if (x < 1)
+ fun_l23_n493(x)
+ else
+ fun_l23_n712(x)
+ end
+end
+
+def fun_l22_n849(x)
+ if (x < 1)
+ fun_l23_n780(x)
+ else
+ fun_l23_n43(x)
+ end
+end
+
+def fun_l22_n850(x)
+ if (x < 1)
+ fun_l23_n511(x)
+ else
+ fun_l23_n356(x)
+ end
+end
+
+def fun_l22_n851(x)
+ if (x < 1)
+ fun_l23_n229(x)
+ else
+ fun_l23_n355(x)
+ end
+end
+
+def fun_l22_n852(x)
+ if (x < 1)
+ fun_l23_n50(x)
+ else
+ fun_l23_n908(x)
+ end
+end
+
+def fun_l22_n853(x)
+ if (x < 1)
+ fun_l23_n156(x)
+ else
+ fun_l23_n422(x)
+ end
+end
+
+def fun_l22_n854(x)
+ if (x < 1)
+ fun_l23_n448(x)
+ else
+ fun_l23_n763(x)
+ end
+end
+
+def fun_l22_n855(x)
+ if (x < 1)
+ fun_l23_n662(x)
+ else
+ fun_l23_n887(x)
+ end
+end
+
+def fun_l22_n856(x)
+ if (x < 1)
+ fun_l23_n511(x)
+ else
+ fun_l23_n292(x)
+ end
+end
+
+def fun_l22_n857(x)
+ if (x < 1)
+ fun_l23_n313(x)
+ else
+ fun_l23_n207(x)
+ end
+end
+
+def fun_l22_n858(x)
+ if (x < 1)
+ fun_l23_n544(x)
+ else
+ fun_l23_n488(x)
+ end
+end
+
+def fun_l22_n859(x)
+ if (x < 1)
+ fun_l23_n34(x)
+ else
+ fun_l23_n133(x)
+ end
+end
+
+def fun_l22_n860(x)
+ if (x < 1)
+ fun_l23_n739(x)
+ else
+ fun_l23_n127(x)
+ end
+end
+
+def fun_l22_n861(x)
+ if (x < 1)
+ fun_l23_n727(x)
+ else
+ fun_l23_n339(x)
+ end
+end
+
+def fun_l22_n862(x)
+ if (x < 1)
+ fun_l23_n78(x)
+ else
+ fun_l23_n101(x)
+ end
+end
+
+def fun_l22_n863(x)
+ if (x < 1)
+ fun_l23_n310(x)
+ else
+ fun_l23_n884(x)
+ end
+end
+
+def fun_l22_n864(x)
+ if (x < 1)
+ fun_l23_n97(x)
+ else
+ fun_l23_n716(x)
+ end
+end
+
+def fun_l22_n865(x)
+ if (x < 1)
+ fun_l23_n63(x)
+ else
+ fun_l23_n654(x)
+ end
+end
+
+def fun_l22_n866(x)
+ if (x < 1)
+ fun_l23_n336(x)
+ else
+ fun_l23_n334(x)
+ end
+end
+
+def fun_l22_n867(x)
+ if (x < 1)
+ fun_l23_n317(x)
+ else
+ fun_l23_n197(x)
+ end
+end
+
+def fun_l22_n868(x)
+ if (x < 1)
+ fun_l23_n98(x)
+ else
+ fun_l23_n466(x)
+ end
+end
+
+def fun_l22_n869(x)
+ if (x < 1)
+ fun_l23_n157(x)
+ else
+ fun_l23_n43(x)
+ end
+end
+
+def fun_l22_n870(x)
+ if (x < 1)
+ fun_l23_n347(x)
+ else
+ fun_l23_n961(x)
+ end
+end
+
+def fun_l22_n871(x)
+ if (x < 1)
+ fun_l23_n460(x)
+ else
+ fun_l23_n820(x)
+ end
+end
+
+def fun_l22_n872(x)
+ if (x < 1)
+ fun_l23_n216(x)
+ else
+ fun_l23_n419(x)
+ end
+end
+
+def fun_l22_n873(x)
+ if (x < 1)
+ fun_l23_n879(x)
+ else
+ fun_l23_n343(x)
+ end
+end
+
+def fun_l22_n874(x)
+ if (x < 1)
+ fun_l23_n507(x)
+ else
+ fun_l23_n572(x)
+ end
+end
+
+def fun_l22_n875(x)
+ if (x < 1)
+ fun_l23_n959(x)
+ else
+ fun_l23_n750(x)
+ end
+end
+
+def fun_l22_n876(x)
+ if (x < 1)
+ fun_l23_n718(x)
+ else
+ fun_l23_n406(x)
+ end
+end
+
+def fun_l22_n877(x)
+ if (x < 1)
+ fun_l23_n733(x)
+ else
+ fun_l23_n486(x)
+ end
+end
+
+def fun_l22_n878(x)
+ if (x < 1)
+ fun_l23_n95(x)
+ else
+ fun_l23_n842(x)
+ end
+end
+
+def fun_l22_n879(x)
+ if (x < 1)
+ fun_l23_n626(x)
+ else
+ fun_l23_n428(x)
+ end
+end
+
+def fun_l22_n880(x)
+ if (x < 1)
+ fun_l23_n194(x)
+ else
+ fun_l23_n441(x)
+ end
+end
+
+def fun_l22_n881(x)
+ if (x < 1)
+ fun_l23_n10(x)
+ else
+ fun_l23_n727(x)
+ end
+end
+
+def fun_l22_n882(x)
+ if (x < 1)
+ fun_l23_n173(x)
+ else
+ fun_l23_n301(x)
+ end
+end
+
+def fun_l22_n883(x)
+ if (x < 1)
+ fun_l23_n338(x)
+ else
+ fun_l23_n420(x)
+ end
+end
+
+def fun_l22_n884(x)
+ if (x < 1)
+ fun_l23_n615(x)
+ else
+ fun_l23_n923(x)
+ end
+end
+
+def fun_l22_n885(x)
+ if (x < 1)
+ fun_l23_n547(x)
+ else
+ fun_l23_n979(x)
+ end
+end
+
+def fun_l22_n886(x)
+ if (x < 1)
+ fun_l23_n28(x)
+ else
+ fun_l23_n213(x)
+ end
+end
+
+def fun_l22_n887(x)
+ if (x < 1)
+ fun_l23_n919(x)
+ else
+ fun_l23_n228(x)
+ end
+end
+
+def fun_l22_n888(x)
+ if (x < 1)
+ fun_l23_n264(x)
+ else
+ fun_l23_n156(x)
+ end
+end
+
+def fun_l22_n889(x)
+ if (x < 1)
+ fun_l23_n137(x)
+ else
+ fun_l23_n582(x)
+ end
+end
+
+def fun_l22_n890(x)
+ if (x < 1)
+ fun_l23_n468(x)
+ else
+ fun_l23_n409(x)
+ end
+end
+
+def fun_l22_n891(x)
+ if (x < 1)
+ fun_l23_n823(x)
+ else
+ fun_l23_n999(x)
+ end
+end
+
+def fun_l22_n892(x)
+ if (x < 1)
+ fun_l23_n248(x)
+ else
+ fun_l23_n821(x)
+ end
+end
+
+def fun_l22_n893(x)
+ if (x < 1)
+ fun_l23_n117(x)
+ else
+ fun_l23_n127(x)
+ end
+end
+
+def fun_l22_n894(x)
+ if (x < 1)
+ fun_l23_n622(x)
+ else
+ fun_l23_n737(x)
+ end
+end
+
+def fun_l22_n895(x)
+ if (x < 1)
+ fun_l23_n66(x)
+ else
+ fun_l23_n261(x)
+ end
+end
+
+def fun_l22_n896(x)
+ if (x < 1)
+ fun_l23_n245(x)
+ else
+ fun_l23_n18(x)
+ end
+end
+
+def fun_l22_n897(x)
+ if (x < 1)
+ fun_l23_n269(x)
+ else
+ fun_l23_n666(x)
+ end
+end
+
+def fun_l22_n898(x)
+ if (x < 1)
+ fun_l23_n807(x)
+ else
+ fun_l23_n449(x)
+ end
+end
+
+def fun_l22_n899(x)
+ if (x < 1)
+ fun_l23_n801(x)
+ else
+ fun_l23_n34(x)
+ end
+end
+
+def fun_l22_n900(x)
+ if (x < 1)
+ fun_l23_n17(x)
+ else
+ fun_l23_n117(x)
+ end
+end
+
+def fun_l22_n901(x)
+ if (x < 1)
+ fun_l23_n677(x)
+ else
+ fun_l23_n872(x)
+ end
+end
+
+def fun_l22_n902(x)
+ if (x < 1)
+ fun_l23_n221(x)
+ else
+ fun_l23_n685(x)
+ end
+end
+
+def fun_l22_n903(x)
+ if (x < 1)
+ fun_l23_n224(x)
+ else
+ fun_l23_n15(x)
+ end
+end
+
+def fun_l22_n904(x)
+ if (x < 1)
+ fun_l23_n353(x)
+ else
+ fun_l23_n367(x)
+ end
+end
+
+def fun_l22_n905(x)
+ if (x < 1)
+ fun_l23_n466(x)
+ else
+ fun_l23_n466(x)
+ end
+end
+
+def fun_l22_n906(x)
+ if (x < 1)
+ fun_l23_n674(x)
+ else
+ fun_l23_n521(x)
+ end
+end
+
+def fun_l22_n907(x)
+ if (x < 1)
+ fun_l23_n978(x)
+ else
+ fun_l23_n79(x)
+ end
+end
+
+def fun_l22_n908(x)
+ if (x < 1)
+ fun_l23_n976(x)
+ else
+ fun_l23_n513(x)
+ end
+end
+
+def fun_l22_n909(x)
+ if (x < 1)
+ fun_l23_n478(x)
+ else
+ fun_l23_n524(x)
+ end
+end
+
+def fun_l22_n910(x)
+ if (x < 1)
+ fun_l23_n744(x)
+ else
+ fun_l23_n451(x)
+ end
+end
+
+def fun_l22_n911(x)
+ if (x < 1)
+ fun_l23_n524(x)
+ else
+ fun_l23_n409(x)
+ end
+end
+
+def fun_l22_n912(x)
+ if (x < 1)
+ fun_l23_n651(x)
+ else
+ fun_l23_n424(x)
+ end
+end
+
+def fun_l22_n913(x)
+ if (x < 1)
+ fun_l23_n740(x)
+ else
+ fun_l23_n841(x)
+ end
+end
+
+def fun_l22_n914(x)
+ if (x < 1)
+ fun_l23_n388(x)
+ else
+ fun_l23_n790(x)
+ end
+end
+
+def fun_l22_n915(x)
+ if (x < 1)
+ fun_l23_n625(x)
+ else
+ fun_l23_n276(x)
+ end
+end
+
+def fun_l22_n916(x)
+ if (x < 1)
+ fun_l23_n322(x)
+ else
+ fun_l23_n598(x)
+ end
+end
+
+def fun_l22_n917(x)
+ if (x < 1)
+ fun_l23_n51(x)
+ else
+ fun_l23_n286(x)
+ end
+end
+
+def fun_l22_n918(x)
+ if (x < 1)
+ fun_l23_n265(x)
+ else
+ fun_l23_n553(x)
+ end
+end
+
+def fun_l22_n919(x)
+ if (x < 1)
+ fun_l23_n525(x)
+ else
+ fun_l23_n825(x)
+ end
+end
+
+def fun_l22_n920(x)
+ if (x < 1)
+ fun_l23_n59(x)
+ else
+ fun_l23_n643(x)
+ end
+end
+
+def fun_l22_n921(x)
+ if (x < 1)
+ fun_l23_n135(x)
+ else
+ fun_l23_n811(x)
+ end
+end
+
+def fun_l22_n922(x)
+ if (x < 1)
+ fun_l23_n587(x)
+ else
+ fun_l23_n564(x)
+ end
+end
+
+def fun_l22_n923(x)
+ if (x < 1)
+ fun_l23_n235(x)
+ else
+ fun_l23_n337(x)
+ end
+end
+
+def fun_l22_n924(x)
+ if (x < 1)
+ fun_l23_n99(x)
+ else
+ fun_l23_n805(x)
+ end
+end
+
+def fun_l22_n925(x)
+ if (x < 1)
+ fun_l23_n360(x)
+ else
+ fun_l23_n67(x)
+ end
+end
+
+def fun_l22_n926(x)
+ if (x < 1)
+ fun_l23_n438(x)
+ else
+ fun_l23_n948(x)
+ end
+end
+
+def fun_l22_n927(x)
+ if (x < 1)
+ fun_l23_n545(x)
+ else
+ fun_l23_n287(x)
+ end
+end
+
+def fun_l22_n928(x)
+ if (x < 1)
+ fun_l23_n632(x)
+ else
+ fun_l23_n769(x)
+ end
+end
+
+def fun_l22_n929(x)
+ if (x < 1)
+ fun_l23_n17(x)
+ else
+ fun_l23_n240(x)
+ end
+end
+
+def fun_l22_n930(x)
+ if (x < 1)
+ fun_l23_n948(x)
+ else
+ fun_l23_n690(x)
+ end
+end
+
+def fun_l22_n931(x)
+ if (x < 1)
+ fun_l23_n12(x)
+ else
+ fun_l23_n640(x)
+ end
+end
+
+def fun_l22_n932(x)
+ if (x < 1)
+ fun_l23_n157(x)
+ else
+ fun_l23_n594(x)
+ end
+end
+
+def fun_l22_n933(x)
+ if (x < 1)
+ fun_l23_n96(x)
+ else
+ fun_l23_n771(x)
+ end
+end
+
+def fun_l22_n934(x)
+ if (x < 1)
+ fun_l23_n237(x)
+ else
+ fun_l23_n910(x)
+ end
+end
+
+def fun_l22_n935(x)
+ if (x < 1)
+ fun_l23_n553(x)
+ else
+ fun_l23_n300(x)
+ end
+end
+
+def fun_l22_n936(x)
+ if (x < 1)
+ fun_l23_n224(x)
+ else
+ fun_l23_n566(x)
+ end
+end
+
+def fun_l22_n937(x)
+ if (x < 1)
+ fun_l23_n314(x)
+ else
+ fun_l23_n328(x)
+ end
+end
+
+def fun_l22_n938(x)
+ if (x < 1)
+ fun_l23_n775(x)
+ else
+ fun_l23_n72(x)
+ end
+end
+
+def fun_l22_n939(x)
+ if (x < 1)
+ fun_l23_n273(x)
+ else
+ fun_l23_n43(x)
+ end
+end
+
+def fun_l22_n940(x)
+ if (x < 1)
+ fun_l23_n215(x)
+ else
+ fun_l23_n646(x)
+ end
+end
+
+def fun_l22_n941(x)
+ if (x < 1)
+ fun_l23_n925(x)
+ else
+ fun_l23_n97(x)
+ end
+end
+
+def fun_l22_n942(x)
+ if (x < 1)
+ fun_l23_n391(x)
+ else
+ fun_l23_n972(x)
+ end
+end
+
+def fun_l22_n943(x)
+ if (x < 1)
+ fun_l23_n276(x)
+ else
+ fun_l23_n725(x)
+ end
+end
+
+def fun_l22_n944(x)
+ if (x < 1)
+ fun_l23_n928(x)
+ else
+ fun_l23_n94(x)
+ end
+end
+
+def fun_l22_n945(x)
+ if (x < 1)
+ fun_l23_n176(x)
+ else
+ fun_l23_n598(x)
+ end
+end
+
+def fun_l22_n946(x)
+ if (x < 1)
+ fun_l23_n530(x)
+ else
+ fun_l23_n37(x)
+ end
+end
+
+def fun_l22_n947(x)
+ if (x < 1)
+ fun_l23_n412(x)
+ else
+ fun_l23_n718(x)
+ end
+end
+
+def fun_l22_n948(x)
+ if (x < 1)
+ fun_l23_n905(x)
+ else
+ fun_l23_n723(x)
+ end
+end
+
+def fun_l22_n949(x)
+ if (x < 1)
+ fun_l23_n451(x)
+ else
+ fun_l23_n232(x)
+ end
+end
+
+def fun_l22_n950(x)
+ if (x < 1)
+ fun_l23_n312(x)
+ else
+ fun_l23_n556(x)
+ end
+end
+
+def fun_l22_n951(x)
+ if (x < 1)
+ fun_l23_n906(x)
+ else
+ fun_l23_n33(x)
+ end
+end
+
+def fun_l22_n952(x)
+ if (x < 1)
+ fun_l23_n964(x)
+ else
+ fun_l23_n46(x)
+ end
+end
+
+def fun_l22_n953(x)
+ if (x < 1)
+ fun_l23_n813(x)
+ else
+ fun_l23_n494(x)
+ end
+end
+
+def fun_l22_n954(x)
+ if (x < 1)
+ fun_l23_n725(x)
+ else
+ fun_l23_n705(x)
+ end
+end
+
+def fun_l22_n955(x)
+ if (x < 1)
+ fun_l23_n525(x)
+ else
+ fun_l23_n370(x)
+ end
+end
+
+def fun_l22_n956(x)
+ if (x < 1)
+ fun_l23_n266(x)
+ else
+ fun_l23_n872(x)
+ end
+end
+
+def fun_l22_n957(x)
+ if (x < 1)
+ fun_l23_n492(x)
+ else
+ fun_l23_n730(x)
+ end
+end
+
+def fun_l22_n958(x)
+ if (x < 1)
+ fun_l23_n950(x)
+ else
+ fun_l23_n557(x)
+ end
+end
+
+def fun_l22_n959(x)
+ if (x < 1)
+ fun_l23_n156(x)
+ else
+ fun_l23_n379(x)
+ end
+end
+
+def fun_l22_n960(x)
+ if (x < 1)
+ fun_l23_n270(x)
+ else
+ fun_l23_n486(x)
+ end
+end
+
+def fun_l22_n961(x)
+ if (x < 1)
+ fun_l23_n789(x)
+ else
+ fun_l23_n316(x)
+ end
+end
+
+def fun_l22_n962(x)
+ if (x < 1)
+ fun_l23_n425(x)
+ else
+ fun_l23_n470(x)
+ end
+end
+
+def fun_l22_n963(x)
+ if (x < 1)
+ fun_l23_n598(x)
+ else
+ fun_l23_n304(x)
+ end
+end
+
+def fun_l22_n964(x)
+ if (x < 1)
+ fun_l23_n249(x)
+ else
+ fun_l23_n517(x)
+ end
+end
+
+def fun_l22_n965(x)
+ if (x < 1)
+ fun_l23_n775(x)
+ else
+ fun_l23_n892(x)
+ end
+end
+
+def fun_l22_n966(x)
+ if (x < 1)
+ fun_l23_n771(x)
+ else
+ fun_l23_n879(x)
+ end
+end
+
+def fun_l22_n967(x)
+ if (x < 1)
+ fun_l23_n596(x)
+ else
+ fun_l23_n22(x)
+ end
+end
+
+def fun_l22_n968(x)
+ if (x < 1)
+ fun_l23_n722(x)
+ else
+ fun_l23_n203(x)
+ end
+end
+
+def fun_l22_n969(x)
+ if (x < 1)
+ fun_l23_n912(x)
+ else
+ fun_l23_n216(x)
+ end
+end
+
+def fun_l22_n970(x)
+ if (x < 1)
+ fun_l23_n230(x)
+ else
+ fun_l23_n295(x)
+ end
+end
+
+def fun_l22_n971(x)
+ if (x < 1)
+ fun_l23_n255(x)
+ else
+ fun_l23_n407(x)
+ end
+end
+
+def fun_l22_n972(x)
+ if (x < 1)
+ fun_l23_n673(x)
+ else
+ fun_l23_n940(x)
+ end
+end
+
+def fun_l22_n973(x)
+ if (x < 1)
+ fun_l23_n793(x)
+ else
+ fun_l23_n776(x)
+ end
+end
+
+def fun_l22_n974(x)
+ if (x < 1)
+ fun_l23_n812(x)
+ else
+ fun_l23_n653(x)
+ end
+end
+
+def fun_l22_n975(x)
+ if (x < 1)
+ fun_l23_n866(x)
+ else
+ fun_l23_n25(x)
+ end
+end
+
+def fun_l22_n976(x)
+ if (x < 1)
+ fun_l23_n143(x)
+ else
+ fun_l23_n236(x)
+ end
+end
+
+def fun_l22_n977(x)
+ if (x < 1)
+ fun_l23_n274(x)
+ else
+ fun_l23_n414(x)
+ end
+end
+
+def fun_l22_n978(x)
+ if (x < 1)
+ fun_l23_n281(x)
+ else
+ fun_l23_n946(x)
+ end
+end
+
+def fun_l22_n979(x)
+ if (x < 1)
+ fun_l23_n255(x)
+ else
+ fun_l23_n585(x)
+ end
+end
+
+def fun_l22_n980(x)
+ if (x < 1)
+ fun_l23_n269(x)
+ else
+ fun_l23_n182(x)
+ end
+end
+
+def fun_l22_n981(x)
+ if (x < 1)
+ fun_l23_n340(x)
+ else
+ fun_l23_n262(x)
+ end
+end
+
+def fun_l22_n982(x)
+ if (x < 1)
+ fun_l23_n713(x)
+ else
+ fun_l23_n247(x)
+ end
+end
+
+def fun_l22_n983(x)
+ if (x < 1)
+ fun_l23_n827(x)
+ else
+ fun_l23_n821(x)
+ end
+end
+
+def fun_l22_n984(x)
+ if (x < 1)
+ fun_l23_n628(x)
+ else
+ fun_l23_n243(x)
+ end
+end
+
+def fun_l22_n985(x)
+ if (x < 1)
+ fun_l23_n479(x)
+ else
+ fun_l23_n440(x)
+ end
+end
+
+def fun_l22_n986(x)
+ if (x < 1)
+ fun_l23_n451(x)
+ else
+ fun_l23_n299(x)
+ end
+end
+
+def fun_l22_n987(x)
+ if (x < 1)
+ fun_l23_n528(x)
+ else
+ fun_l23_n336(x)
+ end
+end
+
+def fun_l22_n988(x)
+ if (x < 1)
+ fun_l23_n825(x)
+ else
+ fun_l23_n767(x)
+ end
+end
+
+def fun_l22_n989(x)
+ if (x < 1)
+ fun_l23_n427(x)
+ else
+ fun_l23_n996(x)
+ end
+end
+
+def fun_l22_n990(x)
+ if (x < 1)
+ fun_l23_n175(x)
+ else
+ fun_l23_n888(x)
+ end
+end
+
+def fun_l22_n991(x)
+ if (x < 1)
+ fun_l23_n351(x)
+ else
+ fun_l23_n982(x)
+ end
+end
+
+def fun_l22_n992(x)
+ if (x < 1)
+ fun_l23_n235(x)
+ else
+ fun_l23_n91(x)
+ end
+end
+
+def fun_l22_n993(x)
+ if (x < 1)
+ fun_l23_n966(x)
+ else
+ fun_l23_n520(x)
+ end
+end
+
+def fun_l22_n994(x)
+ if (x < 1)
+ fun_l23_n854(x)
+ else
+ fun_l23_n937(x)
+ end
+end
+
+def fun_l22_n995(x)
+ if (x < 1)
+ fun_l23_n922(x)
+ else
+ fun_l23_n176(x)
+ end
+end
+
+def fun_l22_n996(x)
+ if (x < 1)
+ fun_l23_n925(x)
+ else
+ fun_l23_n271(x)
+ end
+end
+
+def fun_l22_n997(x)
+ if (x < 1)
+ fun_l23_n513(x)
+ else
+ fun_l23_n195(x)
+ end
+end
+
+def fun_l22_n998(x)
+ if (x < 1)
+ fun_l23_n135(x)
+ else
+ fun_l23_n834(x)
+ end
+end
+
+def fun_l22_n999(x)
+ if (x < 1)
+ fun_l23_n664(x)
+ else
+ fun_l23_n861(x)
+ end
+end
+
+def fun_l23_n0(x)
+ if (x < 1)
+ fun_l24_n327(x)
+ else
+ fun_l24_n159(x)
+ end
+end
+
+def fun_l23_n1(x)
+ if (x < 1)
+ fun_l24_n433(x)
+ else
+ fun_l24_n862(x)
+ end
+end
+
+def fun_l23_n2(x)
+ if (x < 1)
+ fun_l24_n56(x)
+ else
+ fun_l24_n651(x)
+ end
+end
+
+def fun_l23_n3(x)
+ if (x < 1)
+ fun_l24_n267(x)
+ else
+ fun_l24_n566(x)
+ end
+end
+
+def fun_l23_n4(x)
+ if (x < 1)
+ fun_l24_n880(x)
+ else
+ fun_l24_n886(x)
+ end
+end
+
+def fun_l23_n5(x)
+ if (x < 1)
+ fun_l24_n66(x)
+ else
+ fun_l24_n894(x)
+ end
+end
+
+def fun_l23_n6(x)
+ if (x < 1)
+ fun_l24_n965(x)
+ else
+ fun_l24_n453(x)
+ end
+end
+
+def fun_l23_n7(x)
+ if (x < 1)
+ fun_l24_n250(x)
+ else
+ fun_l24_n42(x)
+ end
+end
+
+def fun_l23_n8(x)
+ if (x < 1)
+ fun_l24_n376(x)
+ else
+ fun_l24_n736(x)
+ end
+end
+
+def fun_l23_n9(x)
+ if (x < 1)
+ fun_l24_n434(x)
+ else
+ fun_l24_n334(x)
+ end
+end
+
+def fun_l23_n10(x)
+ if (x < 1)
+ fun_l24_n944(x)
+ else
+ fun_l24_n70(x)
+ end
+end
+
+def fun_l23_n11(x)
+ if (x < 1)
+ fun_l24_n38(x)
+ else
+ fun_l24_n532(x)
+ end
+end
+
+def fun_l23_n12(x)
+ if (x < 1)
+ fun_l24_n603(x)
+ else
+ fun_l24_n682(x)
+ end
+end
+
+def fun_l23_n13(x)
+ if (x < 1)
+ fun_l24_n716(x)
+ else
+ fun_l24_n754(x)
+ end
+end
+
+def fun_l23_n14(x)
+ if (x < 1)
+ fun_l24_n578(x)
+ else
+ fun_l24_n727(x)
+ end
+end
+
+def fun_l23_n15(x)
+ if (x < 1)
+ fun_l24_n166(x)
+ else
+ fun_l24_n224(x)
+ end
+end
+
+def fun_l23_n16(x)
+ if (x < 1)
+ fun_l24_n755(x)
+ else
+ fun_l24_n548(x)
+ end
+end
+
+def fun_l23_n17(x)
+ if (x < 1)
+ fun_l24_n355(x)
+ else
+ fun_l24_n625(x)
+ end
+end
+
+def fun_l23_n18(x)
+ if (x < 1)
+ fun_l24_n400(x)
+ else
+ fun_l24_n834(x)
+ end
+end
+
+def fun_l23_n19(x)
+ if (x < 1)
+ fun_l24_n188(x)
+ else
+ fun_l24_n305(x)
+ end
+end
+
+def fun_l23_n20(x)
+ if (x < 1)
+ fun_l24_n392(x)
+ else
+ fun_l24_n466(x)
+ end
+end
+
+def fun_l23_n21(x)
+ if (x < 1)
+ fun_l24_n937(x)
+ else
+ fun_l24_n603(x)
+ end
+end
+
+def fun_l23_n22(x)
+ if (x < 1)
+ fun_l24_n767(x)
+ else
+ fun_l24_n750(x)
+ end
+end
+
+def fun_l23_n23(x)
+ if (x < 1)
+ fun_l24_n888(x)
+ else
+ fun_l24_n472(x)
+ end
+end
+
+def fun_l23_n24(x)
+ if (x < 1)
+ fun_l24_n937(x)
+ else
+ fun_l24_n192(x)
+ end
+end
+
+def fun_l23_n25(x)
+ if (x < 1)
+ fun_l24_n704(x)
+ else
+ fun_l24_n839(x)
+ end
+end
+
+def fun_l23_n26(x)
+ if (x < 1)
+ fun_l24_n758(x)
+ else
+ fun_l24_n579(x)
+ end
+end
+
+def fun_l23_n27(x)
+ if (x < 1)
+ fun_l24_n161(x)
+ else
+ fun_l24_n268(x)
+ end
+end
+
+def fun_l23_n28(x)
+ if (x < 1)
+ fun_l24_n628(x)
+ else
+ fun_l24_n413(x)
+ end
+end
+
+def fun_l23_n29(x)
+ if (x < 1)
+ fun_l24_n954(x)
+ else
+ fun_l24_n962(x)
+ end
+end
+
+def fun_l23_n30(x)
+ if (x < 1)
+ fun_l24_n723(x)
+ else
+ fun_l24_n220(x)
+ end
+end
+
+def fun_l23_n31(x)
+ if (x < 1)
+ fun_l24_n841(x)
+ else
+ fun_l24_n331(x)
+ end
+end
+
+def fun_l23_n32(x)
+ if (x < 1)
+ fun_l24_n42(x)
+ else
+ fun_l24_n331(x)
+ end
+end
+
+def fun_l23_n33(x)
+ if (x < 1)
+ fun_l24_n873(x)
+ else
+ fun_l24_n58(x)
+ end
+end
+
+def fun_l23_n34(x)
+ if (x < 1)
+ fun_l24_n586(x)
+ else
+ fun_l24_n981(x)
+ end
+end
+
+def fun_l23_n35(x)
+ if (x < 1)
+ fun_l24_n455(x)
+ else
+ fun_l24_n279(x)
+ end
+end
+
+def fun_l23_n36(x)
+ if (x < 1)
+ fun_l24_n401(x)
+ else
+ fun_l24_n633(x)
+ end
+end
+
+def fun_l23_n37(x)
+ if (x < 1)
+ fun_l24_n432(x)
+ else
+ fun_l24_n389(x)
+ end
+end
+
+def fun_l23_n38(x)
+ if (x < 1)
+ fun_l24_n46(x)
+ else
+ fun_l24_n426(x)
+ end
+end
+
+def fun_l23_n39(x)
+ if (x < 1)
+ fun_l24_n679(x)
+ else
+ fun_l24_n222(x)
+ end
+end
+
+def fun_l23_n40(x)
+ if (x < 1)
+ fun_l24_n129(x)
+ else
+ fun_l24_n2(x)
+ end
+end
+
+def fun_l23_n41(x)
+ if (x < 1)
+ fun_l24_n228(x)
+ else
+ fun_l24_n386(x)
+ end
+end
+
+def fun_l23_n42(x)
+ if (x < 1)
+ fun_l24_n740(x)
+ else
+ fun_l24_n605(x)
+ end
+end
+
+def fun_l23_n43(x)
+ if (x < 1)
+ fun_l24_n686(x)
+ else
+ fun_l24_n755(x)
+ end
+end
+
+def fun_l23_n44(x)
+ if (x < 1)
+ fun_l24_n569(x)
+ else
+ fun_l24_n553(x)
+ end
+end
+
+def fun_l23_n45(x)
+ if (x < 1)
+ fun_l24_n908(x)
+ else
+ fun_l24_n388(x)
+ end
+end
+
+def fun_l23_n46(x)
+ if (x < 1)
+ fun_l24_n106(x)
+ else
+ fun_l24_n335(x)
+ end
+end
+
+def fun_l23_n47(x)
+ if (x < 1)
+ fun_l24_n876(x)
+ else
+ fun_l24_n813(x)
+ end
+end
+
+def fun_l23_n48(x)
+ if (x < 1)
+ fun_l24_n337(x)
+ else
+ fun_l24_n967(x)
+ end
+end
+
+def fun_l23_n49(x)
+ if (x < 1)
+ fun_l24_n309(x)
+ else
+ fun_l24_n988(x)
+ end
+end
+
+def fun_l23_n50(x)
+ if (x < 1)
+ fun_l24_n325(x)
+ else
+ fun_l24_n703(x)
+ end
+end
+
+def fun_l23_n51(x)
+ if (x < 1)
+ fun_l24_n755(x)
+ else
+ fun_l24_n146(x)
+ end
+end
+
+def fun_l23_n52(x)
+ if (x < 1)
+ fun_l24_n597(x)
+ else
+ fun_l24_n764(x)
+ end
+end
+
+def fun_l23_n53(x)
+ if (x < 1)
+ fun_l24_n259(x)
+ else
+ fun_l24_n9(x)
+ end
+end
+
+def fun_l23_n54(x)
+ if (x < 1)
+ fun_l24_n73(x)
+ else
+ fun_l24_n700(x)
+ end
+end
+
+def fun_l23_n55(x)
+ if (x < 1)
+ fun_l24_n369(x)
+ else
+ fun_l24_n632(x)
+ end
+end
+
+def fun_l23_n56(x)
+ if (x < 1)
+ fun_l24_n475(x)
+ else
+ fun_l24_n553(x)
+ end
+end
+
+def fun_l23_n57(x)
+ if (x < 1)
+ fun_l24_n473(x)
+ else
+ fun_l24_n84(x)
+ end
+end
+
+def fun_l23_n58(x)
+ if (x < 1)
+ fun_l24_n837(x)
+ else
+ fun_l24_n164(x)
+ end
+end
+
+def fun_l23_n59(x)
+ if (x < 1)
+ fun_l24_n129(x)
+ else
+ fun_l24_n993(x)
+ end
+end
+
+def fun_l23_n60(x)
+ if (x < 1)
+ fun_l24_n201(x)
+ else
+ fun_l24_n644(x)
+ end
+end
+
+def fun_l23_n61(x)
+ if (x < 1)
+ fun_l24_n825(x)
+ else
+ fun_l24_n513(x)
+ end
+end
+
+def fun_l23_n62(x)
+ if (x < 1)
+ fun_l24_n162(x)
+ else
+ fun_l24_n575(x)
+ end
+end
+
+def fun_l23_n63(x)
+ if (x < 1)
+ fun_l24_n959(x)
+ else
+ fun_l24_n514(x)
+ end
+end
+
+def fun_l23_n64(x)
+ if (x < 1)
+ fun_l24_n133(x)
+ else
+ fun_l24_n731(x)
+ end
+end
+
+def fun_l23_n65(x)
+ if (x < 1)
+ fun_l24_n370(x)
+ else
+ fun_l24_n903(x)
+ end
+end
+
+def fun_l23_n66(x)
+ if (x < 1)
+ fun_l24_n787(x)
+ else
+ fun_l24_n11(x)
+ end
+end
+
+def fun_l23_n67(x)
+ if (x < 1)
+ fun_l24_n307(x)
+ else
+ fun_l24_n7(x)
+ end
+end
+
+def fun_l23_n68(x)
+ if (x < 1)
+ fun_l24_n157(x)
+ else
+ fun_l24_n747(x)
+ end
+end
+
+def fun_l23_n69(x)
+ if (x < 1)
+ fun_l24_n435(x)
+ else
+ fun_l24_n763(x)
+ end
+end
+
+def fun_l23_n70(x)
+ if (x < 1)
+ fun_l24_n623(x)
+ else
+ fun_l24_n279(x)
+ end
+end
+
+def fun_l23_n71(x)
+ if (x < 1)
+ fun_l24_n456(x)
+ else
+ fun_l24_n465(x)
+ end
+end
+
+def fun_l23_n72(x)
+ if (x < 1)
+ fun_l24_n411(x)
+ else
+ fun_l24_n397(x)
+ end
+end
+
+def fun_l23_n73(x)
+ if (x < 1)
+ fun_l24_n964(x)
+ else
+ fun_l24_n144(x)
+ end
+end
+
+def fun_l23_n74(x)
+ if (x < 1)
+ fun_l24_n170(x)
+ else
+ fun_l24_n406(x)
+ end
+end
+
+def fun_l23_n75(x)
+ if (x < 1)
+ fun_l24_n838(x)
+ else
+ fun_l24_n295(x)
+ end
+end
+
+def fun_l23_n76(x)
+ if (x < 1)
+ fun_l24_n89(x)
+ else
+ fun_l24_n803(x)
+ end
+end
+
+def fun_l23_n77(x)
+ if (x < 1)
+ fun_l24_n580(x)
+ else
+ fun_l24_n931(x)
+ end
+end
+
+def fun_l23_n78(x)
+ if (x < 1)
+ fun_l24_n504(x)
+ else
+ fun_l24_n150(x)
+ end
+end
+
+def fun_l23_n79(x)
+ if (x < 1)
+ fun_l24_n363(x)
+ else
+ fun_l24_n717(x)
+ end
+end
+
+def fun_l23_n80(x)
+ if (x < 1)
+ fun_l24_n765(x)
+ else
+ fun_l24_n917(x)
+ end
+end
+
+def fun_l23_n81(x)
+ if (x < 1)
+ fun_l24_n673(x)
+ else
+ fun_l24_n549(x)
+ end
+end
+
+def fun_l23_n82(x)
+ if (x < 1)
+ fun_l24_n986(x)
+ else
+ fun_l24_n177(x)
+ end
+end
+
+def fun_l23_n83(x)
+ if (x < 1)
+ fun_l24_n821(x)
+ else
+ fun_l24_n302(x)
+ end
+end
+
+def fun_l23_n84(x)
+ if (x < 1)
+ fun_l24_n530(x)
+ else
+ fun_l24_n744(x)
+ end
+end
+
+def fun_l23_n85(x)
+ if (x < 1)
+ fun_l24_n456(x)
+ else
+ fun_l24_n964(x)
+ end
+end
+
+def fun_l23_n86(x)
+ if (x < 1)
+ fun_l24_n901(x)
+ else
+ fun_l24_n214(x)
+ end
+end
+
+def fun_l23_n87(x)
+ if (x < 1)
+ fun_l24_n308(x)
+ else
+ fun_l24_n329(x)
+ end
+end
+
+def fun_l23_n88(x)
+ if (x < 1)
+ fun_l24_n749(x)
+ else
+ fun_l24_n822(x)
+ end
+end
+
+def fun_l23_n89(x)
+ if (x < 1)
+ fun_l24_n283(x)
+ else
+ fun_l24_n865(x)
+ end
+end
+
+def fun_l23_n90(x)
+ if (x < 1)
+ fun_l24_n834(x)
+ else
+ fun_l24_n422(x)
+ end
+end
+
+def fun_l23_n91(x)
+ if (x < 1)
+ fun_l24_n920(x)
+ else
+ fun_l24_n799(x)
+ end
+end
+
+def fun_l23_n92(x)
+ if (x < 1)
+ fun_l24_n272(x)
+ else
+ fun_l24_n846(x)
+ end
+end
+
+def fun_l23_n93(x)
+ if (x < 1)
+ fun_l24_n447(x)
+ else
+ fun_l24_n809(x)
+ end
+end
+
+def fun_l23_n94(x)
+ if (x < 1)
+ fun_l24_n826(x)
+ else
+ fun_l24_n521(x)
+ end
+end
+
+def fun_l23_n95(x)
+ if (x < 1)
+ fun_l24_n934(x)
+ else
+ fun_l24_n774(x)
+ end
+end
+
+def fun_l23_n96(x)
+ if (x < 1)
+ fun_l24_n440(x)
+ else
+ fun_l24_n40(x)
+ end
+end
+
+def fun_l23_n97(x)
+ if (x < 1)
+ fun_l24_n980(x)
+ else
+ fun_l24_n801(x)
+ end
+end
+
+def fun_l23_n98(x)
+ if (x < 1)
+ fun_l24_n344(x)
+ else
+ fun_l24_n239(x)
+ end
+end
+
+def fun_l23_n99(x)
+ if (x < 1)
+ fun_l24_n918(x)
+ else
+ fun_l24_n241(x)
+ end
+end
+
+def fun_l23_n100(x)
+ if (x < 1)
+ fun_l24_n902(x)
+ else
+ fun_l24_n12(x)
+ end
+end
+
+def fun_l23_n101(x)
+ if (x < 1)
+ fun_l24_n533(x)
+ else
+ fun_l24_n510(x)
+ end
+end
+
+def fun_l23_n102(x)
+ if (x < 1)
+ fun_l24_n337(x)
+ else
+ fun_l24_n144(x)
+ end
+end
+
+def fun_l23_n103(x)
+ if (x < 1)
+ fun_l24_n835(x)
+ else
+ fun_l24_n268(x)
+ end
+end
+
+def fun_l23_n104(x)
+ if (x < 1)
+ fun_l24_n352(x)
+ else
+ fun_l24_n772(x)
+ end
+end
+
+def fun_l23_n105(x)
+ if (x < 1)
+ fun_l24_n135(x)
+ else
+ fun_l24_n97(x)
+ end
+end
+
+def fun_l23_n106(x)
+ if (x < 1)
+ fun_l24_n70(x)
+ else
+ fun_l24_n528(x)
+ end
+end
+
+def fun_l23_n107(x)
+ if (x < 1)
+ fun_l24_n945(x)
+ else
+ fun_l24_n85(x)
+ end
+end
+
+def fun_l23_n108(x)
+ if (x < 1)
+ fun_l24_n233(x)
+ else
+ fun_l24_n637(x)
+ end
+end
+
+def fun_l23_n109(x)
+ if (x < 1)
+ fun_l24_n715(x)
+ else
+ fun_l24_n111(x)
+ end
+end
+
+def fun_l23_n110(x)
+ if (x < 1)
+ fun_l24_n673(x)
+ else
+ fun_l24_n423(x)
+ end
+end
+
+def fun_l23_n111(x)
+ if (x < 1)
+ fun_l24_n408(x)
+ else
+ fun_l24_n5(x)
+ end
+end
+
+def fun_l23_n112(x)
+ if (x < 1)
+ fun_l24_n89(x)
+ else
+ fun_l24_n669(x)
+ end
+end
+
+def fun_l23_n113(x)
+ if (x < 1)
+ fun_l24_n733(x)
+ else
+ fun_l24_n76(x)
+ end
+end
+
+def fun_l23_n114(x)
+ if (x < 1)
+ fun_l24_n767(x)
+ else
+ fun_l24_n465(x)
+ end
+end
+
+def fun_l23_n115(x)
+ if (x < 1)
+ fun_l24_n428(x)
+ else
+ fun_l24_n948(x)
+ end
+end
+
+def fun_l23_n116(x)
+ if (x < 1)
+ fun_l24_n412(x)
+ else
+ fun_l24_n355(x)
+ end
+end
+
+def fun_l23_n117(x)
+ if (x < 1)
+ fun_l24_n550(x)
+ else
+ fun_l24_n616(x)
+ end
+end
+
+def fun_l23_n118(x)
+ if (x < 1)
+ fun_l24_n858(x)
+ else
+ fun_l24_n74(x)
+ end
+end
+
+def fun_l23_n119(x)
+ if (x < 1)
+ fun_l24_n709(x)
+ else
+ fun_l24_n939(x)
+ end
+end
+
+def fun_l23_n120(x)
+ if (x < 1)
+ fun_l24_n712(x)
+ else
+ fun_l24_n74(x)
+ end
+end
+
+def fun_l23_n121(x)
+ if (x < 1)
+ fun_l24_n34(x)
+ else
+ fun_l24_n532(x)
+ end
+end
+
+def fun_l23_n122(x)
+ if (x < 1)
+ fun_l24_n998(x)
+ else
+ fun_l24_n736(x)
+ end
+end
+
+def fun_l23_n123(x)
+ if (x < 1)
+ fun_l24_n33(x)
+ else
+ fun_l24_n561(x)
+ end
+end
+
+def fun_l23_n124(x)
+ if (x < 1)
+ fun_l24_n750(x)
+ else
+ fun_l24_n634(x)
+ end
+end
+
+def fun_l23_n125(x)
+ if (x < 1)
+ fun_l24_n935(x)
+ else
+ fun_l24_n29(x)
+ end
+end
+
+def fun_l23_n126(x)
+ if (x < 1)
+ fun_l24_n249(x)
+ else
+ fun_l24_n571(x)
+ end
+end
+
+def fun_l23_n127(x)
+ if (x < 1)
+ fun_l24_n827(x)
+ else
+ fun_l24_n892(x)
+ end
+end
+
+def fun_l23_n128(x)
+ if (x < 1)
+ fun_l24_n903(x)
+ else
+ fun_l24_n171(x)
+ end
+end
+
+def fun_l23_n129(x)
+ if (x < 1)
+ fun_l24_n725(x)
+ else
+ fun_l24_n358(x)
+ end
+end
+
+def fun_l23_n130(x)
+ if (x < 1)
+ fun_l24_n616(x)
+ else
+ fun_l24_n795(x)
+ end
+end
+
+def fun_l23_n131(x)
+ if (x < 1)
+ fun_l24_n942(x)
+ else
+ fun_l24_n574(x)
+ end
+end
+
+def fun_l23_n132(x)
+ if (x < 1)
+ fun_l24_n290(x)
+ else
+ fun_l24_n869(x)
+ end
+end
+
+def fun_l23_n133(x)
+ if (x < 1)
+ fun_l24_n73(x)
+ else
+ fun_l24_n542(x)
+ end
+end
+
+def fun_l23_n134(x)
+ if (x < 1)
+ fun_l24_n730(x)
+ else
+ fun_l24_n857(x)
+ end
+end
+
+def fun_l23_n135(x)
+ if (x < 1)
+ fun_l24_n754(x)
+ else
+ fun_l24_n579(x)
+ end
+end
+
+def fun_l23_n136(x)
+ if (x < 1)
+ fun_l24_n503(x)
+ else
+ fun_l24_n574(x)
+ end
+end
+
+def fun_l23_n137(x)
+ if (x < 1)
+ fun_l24_n682(x)
+ else
+ fun_l24_n630(x)
+ end
+end
+
+def fun_l23_n138(x)
+ if (x < 1)
+ fun_l24_n918(x)
+ else
+ fun_l24_n440(x)
+ end
+end
+
+def fun_l23_n139(x)
+ if (x < 1)
+ fun_l24_n938(x)
+ else
+ fun_l24_n524(x)
+ end
+end
+
+def fun_l23_n140(x)
+ if (x < 1)
+ fun_l24_n966(x)
+ else
+ fun_l24_n921(x)
+ end
+end
+
+def fun_l23_n141(x)
+ if (x < 1)
+ fun_l24_n87(x)
+ else
+ fun_l24_n548(x)
+ end
+end
+
+def fun_l23_n142(x)
+ if (x < 1)
+ fun_l24_n828(x)
+ else
+ fun_l24_n708(x)
+ end
+end
+
+def fun_l23_n143(x)
+ if (x < 1)
+ fun_l24_n655(x)
+ else
+ fun_l24_n322(x)
+ end
+end
+
+def fun_l23_n144(x)
+ if (x < 1)
+ fun_l24_n382(x)
+ else
+ fun_l24_n484(x)
+ end
+end
+
+def fun_l23_n145(x)
+ if (x < 1)
+ fun_l24_n830(x)
+ else
+ fun_l24_n755(x)
+ end
+end
+
+def fun_l23_n146(x)
+ if (x < 1)
+ fun_l24_n432(x)
+ else
+ fun_l24_n487(x)
+ end
+end
+
+def fun_l23_n147(x)
+ if (x < 1)
+ fun_l24_n954(x)
+ else
+ fun_l24_n453(x)
+ end
+end
+
+def fun_l23_n148(x)
+ if (x < 1)
+ fun_l24_n562(x)
+ else
+ fun_l24_n872(x)
+ end
+end
+
+def fun_l23_n149(x)
+ if (x < 1)
+ fun_l24_n929(x)
+ else
+ fun_l24_n212(x)
+ end
+end
+
+def fun_l23_n150(x)
+ if (x < 1)
+ fun_l24_n143(x)
+ else
+ fun_l24_n344(x)
+ end
+end
+
+def fun_l23_n151(x)
+ if (x < 1)
+ fun_l24_n475(x)
+ else
+ fun_l24_n379(x)
+ end
+end
+
+def fun_l23_n152(x)
+ if (x < 1)
+ fun_l24_n160(x)
+ else
+ fun_l24_n774(x)
+ end
+end
+
+def fun_l23_n153(x)
+ if (x < 1)
+ fun_l24_n689(x)
+ else
+ fun_l24_n19(x)
+ end
+end
+
+def fun_l23_n154(x)
+ if (x < 1)
+ fun_l24_n98(x)
+ else
+ fun_l24_n572(x)
+ end
+end
+
+def fun_l23_n155(x)
+ if (x < 1)
+ fun_l24_n104(x)
+ else
+ fun_l24_n797(x)
+ end
+end
+
+def fun_l23_n156(x)
+ if (x < 1)
+ fun_l24_n892(x)
+ else
+ fun_l24_n874(x)
+ end
+end
+
+def fun_l23_n157(x)
+ if (x < 1)
+ fun_l24_n900(x)
+ else
+ fun_l24_n458(x)
+ end
+end
+
+def fun_l23_n158(x)
+ if (x < 1)
+ fun_l24_n50(x)
+ else
+ fun_l24_n912(x)
+ end
+end
+
+def fun_l23_n159(x)
+ if (x < 1)
+ fun_l24_n303(x)
+ else
+ fun_l24_n373(x)
+ end
+end
+
+def fun_l23_n160(x)
+ if (x < 1)
+ fun_l24_n137(x)
+ else
+ fun_l24_n102(x)
+ end
+end
+
+def fun_l23_n161(x)
+ if (x < 1)
+ fun_l24_n263(x)
+ else
+ fun_l24_n818(x)
+ end
+end
+
+def fun_l23_n162(x)
+ if (x < 1)
+ fun_l24_n618(x)
+ else
+ fun_l24_n895(x)
+ end
+end
+
+def fun_l23_n163(x)
+ if (x < 1)
+ fun_l24_n845(x)
+ else
+ fun_l24_n26(x)
+ end
+end
+
+def fun_l23_n164(x)
+ if (x < 1)
+ fun_l24_n941(x)
+ else
+ fun_l24_n242(x)
+ end
+end
+
+def fun_l23_n165(x)
+ if (x < 1)
+ fun_l24_n145(x)
+ else
+ fun_l24_n492(x)
+ end
+end
+
+def fun_l23_n166(x)
+ if (x < 1)
+ fun_l24_n261(x)
+ else
+ fun_l24_n235(x)
+ end
+end
+
+def fun_l23_n167(x)
+ if (x < 1)
+ fun_l24_n941(x)
+ else
+ fun_l24_n618(x)
+ end
+end
+
+def fun_l23_n168(x)
+ if (x < 1)
+ fun_l24_n709(x)
+ else
+ fun_l24_n908(x)
+ end
+end
+
+def fun_l23_n169(x)
+ if (x < 1)
+ fun_l24_n746(x)
+ else
+ fun_l24_n116(x)
+ end
+end
+
+def fun_l23_n170(x)
+ if (x < 1)
+ fun_l24_n911(x)
+ else
+ fun_l24_n599(x)
+ end
+end
+
+def fun_l23_n171(x)
+ if (x < 1)
+ fun_l24_n526(x)
+ else
+ fun_l24_n275(x)
+ end
+end
+
+def fun_l23_n172(x)
+ if (x < 1)
+ fun_l24_n919(x)
+ else
+ fun_l24_n525(x)
+ end
+end
+
+def fun_l23_n173(x)
+ if (x < 1)
+ fun_l24_n945(x)
+ else
+ fun_l24_n894(x)
+ end
+end
+
+def fun_l23_n174(x)
+ if (x < 1)
+ fun_l24_n349(x)
+ else
+ fun_l24_n434(x)
+ end
+end
+
+def fun_l23_n175(x)
+ if (x < 1)
+ fun_l24_n498(x)
+ else
+ fun_l24_n679(x)
+ end
+end
+
+def fun_l23_n176(x)
+ if (x < 1)
+ fun_l24_n867(x)
+ else
+ fun_l24_n177(x)
+ end
+end
+
+def fun_l23_n177(x)
+ if (x < 1)
+ fun_l24_n680(x)
+ else
+ fun_l24_n601(x)
+ end
+end
+
+def fun_l23_n178(x)
+ if (x < 1)
+ fun_l24_n838(x)
+ else
+ fun_l24_n5(x)
+ end
+end
+
+def fun_l23_n179(x)
+ if (x < 1)
+ fun_l24_n418(x)
+ else
+ fun_l24_n780(x)
+ end
+end
+
+def fun_l23_n180(x)
+ if (x < 1)
+ fun_l24_n88(x)
+ else
+ fun_l24_n333(x)
+ end
+end
+
+def fun_l23_n181(x)
+ if (x < 1)
+ fun_l24_n657(x)
+ else
+ fun_l24_n787(x)
+ end
+end
+
+def fun_l23_n182(x)
+ if (x < 1)
+ fun_l24_n767(x)
+ else
+ fun_l24_n903(x)
+ end
+end
+
+def fun_l23_n183(x)
+ if (x < 1)
+ fun_l24_n878(x)
+ else
+ fun_l24_n426(x)
+ end
+end
+
+def fun_l23_n184(x)
+ if (x < 1)
+ fun_l24_n649(x)
+ else
+ fun_l24_n221(x)
+ end
+end
+
+def fun_l23_n185(x)
+ if (x < 1)
+ fun_l24_n315(x)
+ else
+ fun_l24_n955(x)
+ end
+end
+
+def fun_l23_n186(x)
+ if (x < 1)
+ fun_l24_n599(x)
+ else
+ fun_l24_n201(x)
+ end
+end
+
+def fun_l23_n187(x)
+ if (x < 1)
+ fun_l24_n851(x)
+ else
+ fun_l24_n294(x)
+ end
+end
+
+def fun_l23_n188(x)
+ if (x < 1)
+ fun_l24_n585(x)
+ else
+ fun_l24_n139(x)
+ end
+end
+
+def fun_l23_n189(x)
+ if (x < 1)
+ fun_l24_n893(x)
+ else
+ fun_l24_n159(x)
+ end
+end
+
+def fun_l23_n190(x)
+ if (x < 1)
+ fun_l24_n70(x)
+ else
+ fun_l24_n50(x)
+ end
+end
+
+def fun_l23_n191(x)
+ if (x < 1)
+ fun_l24_n111(x)
+ else
+ fun_l24_n967(x)
+ end
+end
+
+def fun_l23_n192(x)
+ if (x < 1)
+ fun_l24_n979(x)
+ else
+ fun_l24_n91(x)
+ end
+end
+
+def fun_l23_n193(x)
+ if (x < 1)
+ fun_l24_n651(x)
+ else
+ fun_l24_n321(x)
+ end
+end
+
+def fun_l23_n194(x)
+ if (x < 1)
+ fun_l24_n236(x)
+ else
+ fun_l24_n251(x)
+ end
+end
+
+def fun_l23_n195(x)
+ if (x < 1)
+ fun_l24_n947(x)
+ else
+ fun_l24_n116(x)
+ end
+end
+
+def fun_l23_n196(x)
+ if (x < 1)
+ fun_l24_n336(x)
+ else
+ fun_l24_n637(x)
+ end
+end
+
+def fun_l23_n197(x)
+ if (x < 1)
+ fun_l24_n192(x)
+ else
+ fun_l24_n824(x)
+ end
+end
+
+def fun_l23_n198(x)
+ if (x < 1)
+ fun_l24_n747(x)
+ else
+ fun_l24_n610(x)
+ end
+end
+
+def fun_l23_n199(x)
+ if (x < 1)
+ fun_l24_n735(x)
+ else
+ fun_l24_n347(x)
+ end
+end
+
+def fun_l23_n200(x)
+ if (x < 1)
+ fun_l24_n543(x)
+ else
+ fun_l24_n463(x)
+ end
+end
+
+def fun_l23_n201(x)
+ if (x < 1)
+ fun_l24_n933(x)
+ else
+ fun_l24_n185(x)
+ end
+end
+
+def fun_l23_n202(x)
+ if (x < 1)
+ fun_l24_n319(x)
+ else
+ fun_l24_n739(x)
+ end
+end
+
+def fun_l23_n203(x)
+ if (x < 1)
+ fun_l24_n994(x)
+ else
+ fun_l24_n248(x)
+ end
+end
+
+def fun_l23_n204(x)
+ if (x < 1)
+ fun_l24_n980(x)
+ else
+ fun_l24_n248(x)
+ end
+end
+
+def fun_l23_n205(x)
+ if (x < 1)
+ fun_l24_n427(x)
+ else
+ fun_l24_n670(x)
+ end
+end
+
+def fun_l23_n206(x)
+ if (x < 1)
+ fun_l24_n562(x)
+ else
+ fun_l24_n752(x)
+ end
+end
+
+def fun_l23_n207(x)
+ if (x < 1)
+ fun_l24_n424(x)
+ else
+ fun_l24_n310(x)
+ end
+end
+
+def fun_l23_n208(x)
+ if (x < 1)
+ fun_l24_n761(x)
+ else
+ fun_l24_n562(x)
+ end
+end
+
+def fun_l23_n209(x)
+ if (x < 1)
+ fun_l24_n264(x)
+ else
+ fun_l24_n20(x)
+ end
+end
+
+def fun_l23_n210(x)
+ if (x < 1)
+ fun_l24_n886(x)
+ else
+ fun_l24_n505(x)
+ end
+end
+
+def fun_l23_n211(x)
+ if (x < 1)
+ fun_l24_n715(x)
+ else
+ fun_l24_n641(x)
+ end
+end
+
+def fun_l23_n212(x)
+ if (x < 1)
+ fun_l24_n132(x)
+ else
+ fun_l24_n875(x)
+ end
+end
+
+def fun_l23_n213(x)
+ if (x < 1)
+ fun_l24_n121(x)
+ else
+ fun_l24_n38(x)
+ end
+end
+
+def fun_l23_n214(x)
+ if (x < 1)
+ fun_l24_n672(x)
+ else
+ fun_l24_n497(x)
+ end
+end
+
+def fun_l23_n215(x)
+ if (x < 1)
+ fun_l24_n36(x)
+ else
+ fun_l24_n696(x)
+ end
+end
+
+def fun_l23_n216(x)
+ if (x < 1)
+ fun_l24_n559(x)
+ else
+ fun_l24_n772(x)
+ end
+end
+
+def fun_l23_n217(x)
+ if (x < 1)
+ fun_l24_n63(x)
+ else
+ fun_l24_n990(x)
+ end
+end
+
+def fun_l23_n218(x)
+ if (x < 1)
+ fun_l24_n482(x)
+ else
+ fun_l24_n811(x)
+ end
+end
+
+def fun_l23_n219(x)
+ if (x < 1)
+ fun_l24_n572(x)
+ else
+ fun_l24_n651(x)
+ end
+end
+
+def fun_l23_n220(x)
+ if (x < 1)
+ fun_l24_n588(x)
+ else
+ fun_l24_n87(x)
+ end
+end
+
+def fun_l23_n221(x)
+ if (x < 1)
+ fun_l24_n462(x)
+ else
+ fun_l24_n909(x)
+ end
+end
+
+def fun_l23_n222(x)
+ if (x < 1)
+ fun_l24_n729(x)
+ else
+ fun_l24_n364(x)
+ end
+end
+
+def fun_l23_n223(x)
+ if (x < 1)
+ fun_l24_n259(x)
+ else
+ fun_l24_n661(x)
+ end
+end
+
+def fun_l23_n224(x)
+ if (x < 1)
+ fun_l24_n504(x)
+ else
+ fun_l24_n531(x)
+ end
+end
+
+def fun_l23_n225(x)
+ if (x < 1)
+ fun_l24_n114(x)
+ else
+ fun_l24_n292(x)
+ end
+end
+
+def fun_l23_n226(x)
+ if (x < 1)
+ fun_l24_n207(x)
+ else
+ fun_l24_n206(x)
+ end
+end
+
+def fun_l23_n227(x)
+ if (x < 1)
+ fun_l24_n153(x)
+ else
+ fun_l24_n572(x)
+ end
+end
+
+def fun_l23_n228(x)
+ if (x < 1)
+ fun_l24_n738(x)
+ else
+ fun_l24_n767(x)
+ end
+end
+
+def fun_l23_n229(x)
+ if (x < 1)
+ fun_l24_n374(x)
+ else
+ fun_l24_n336(x)
+ end
+end
+
+def fun_l23_n230(x)
+ if (x < 1)
+ fun_l24_n727(x)
+ else
+ fun_l24_n842(x)
+ end
+end
+
+def fun_l23_n231(x)
+ if (x < 1)
+ fun_l24_n506(x)
+ else
+ fun_l24_n8(x)
+ end
+end
+
+def fun_l23_n232(x)
+ if (x < 1)
+ fun_l24_n101(x)
+ else
+ fun_l24_n502(x)
+ end
+end
+
+def fun_l23_n233(x)
+ if (x < 1)
+ fun_l24_n469(x)
+ else
+ fun_l24_n274(x)
+ end
+end
+
+def fun_l23_n234(x)
+ if (x < 1)
+ fun_l24_n67(x)
+ else
+ fun_l24_n66(x)
+ end
+end
+
+def fun_l23_n235(x)
+ if (x < 1)
+ fun_l24_n874(x)
+ else
+ fun_l24_n104(x)
+ end
+end
+
+def fun_l23_n236(x)
+ if (x < 1)
+ fun_l24_n154(x)
+ else
+ fun_l24_n723(x)
+ end
+end
+
+def fun_l23_n237(x)
+ if (x < 1)
+ fun_l24_n300(x)
+ else
+ fun_l24_n0(x)
+ end
+end
+
+def fun_l23_n238(x)
+ if (x < 1)
+ fun_l24_n767(x)
+ else
+ fun_l24_n134(x)
+ end
+end
+
+def fun_l23_n239(x)
+ if (x < 1)
+ fun_l24_n647(x)
+ else
+ fun_l24_n890(x)
+ end
+end
+
+def fun_l23_n240(x)
+ if (x < 1)
+ fun_l24_n258(x)
+ else
+ fun_l24_n302(x)
+ end
+end
+
+def fun_l23_n241(x)
+ if (x < 1)
+ fun_l24_n104(x)
+ else
+ fun_l24_n335(x)
+ end
+end
+
+def fun_l23_n242(x)
+ if (x < 1)
+ fun_l24_n500(x)
+ else
+ fun_l24_n383(x)
+ end
+end
+
+def fun_l23_n243(x)
+ if (x < 1)
+ fun_l24_n63(x)
+ else
+ fun_l24_n421(x)
+ end
+end
+
+def fun_l23_n244(x)
+ if (x < 1)
+ fun_l24_n105(x)
+ else
+ fun_l24_n451(x)
+ end
+end
+
+def fun_l23_n245(x)
+ if (x < 1)
+ fun_l24_n729(x)
+ else
+ fun_l24_n333(x)
+ end
+end
+
+def fun_l23_n246(x)
+ if (x < 1)
+ fun_l24_n966(x)
+ else
+ fun_l24_n556(x)
+ end
+end
+
+def fun_l23_n247(x)
+ if (x < 1)
+ fun_l24_n118(x)
+ else
+ fun_l24_n565(x)
+ end
+end
+
+def fun_l23_n248(x)
+ if (x < 1)
+ fun_l24_n61(x)
+ else
+ fun_l24_n816(x)
+ end
+end
+
+def fun_l23_n249(x)
+ if (x < 1)
+ fun_l24_n769(x)
+ else
+ fun_l24_n183(x)
+ end
+end
+
+def fun_l23_n250(x)
+ if (x < 1)
+ fun_l24_n688(x)
+ else
+ fun_l24_n60(x)
+ end
+end
+
+def fun_l23_n251(x)
+ if (x < 1)
+ fun_l24_n859(x)
+ else
+ fun_l24_n434(x)
+ end
+end
+
+def fun_l23_n252(x)
+ if (x < 1)
+ fun_l24_n650(x)
+ else
+ fun_l24_n448(x)
+ end
+end
+
+def fun_l23_n253(x)
+ if (x < 1)
+ fun_l24_n519(x)
+ else
+ fun_l24_n963(x)
+ end
+end
+
+def fun_l23_n254(x)
+ if (x < 1)
+ fun_l24_n176(x)
+ else
+ fun_l24_n908(x)
+ end
+end
+
+def fun_l23_n255(x)
+ if (x < 1)
+ fun_l24_n146(x)
+ else
+ fun_l24_n751(x)
+ end
+end
+
+def fun_l23_n256(x)
+ if (x < 1)
+ fun_l24_n742(x)
+ else
+ fun_l24_n928(x)
+ end
+end
+
+def fun_l23_n257(x)
+ if (x < 1)
+ fun_l24_n22(x)
+ else
+ fun_l24_n48(x)
+ end
+end
+
+def fun_l23_n258(x)
+ if (x < 1)
+ fun_l24_n158(x)
+ else
+ fun_l24_n299(x)
+ end
+end
+
+def fun_l23_n259(x)
+ if (x < 1)
+ fun_l24_n247(x)
+ else
+ fun_l24_n419(x)
+ end
+end
+
+def fun_l23_n260(x)
+ if (x < 1)
+ fun_l24_n161(x)
+ else
+ fun_l24_n387(x)
+ end
+end
+
+def fun_l23_n261(x)
+ if (x < 1)
+ fun_l24_n627(x)
+ else
+ fun_l24_n321(x)
+ end
+end
+
+def fun_l23_n262(x)
+ if (x < 1)
+ fun_l24_n946(x)
+ else
+ fun_l24_n617(x)
+ end
+end
+
+def fun_l23_n263(x)
+ if (x < 1)
+ fun_l24_n853(x)
+ else
+ fun_l24_n208(x)
+ end
+end
+
+def fun_l23_n264(x)
+ if (x < 1)
+ fun_l24_n213(x)
+ else
+ fun_l24_n27(x)
+ end
+end
+
+def fun_l23_n265(x)
+ if (x < 1)
+ fun_l24_n819(x)
+ else
+ fun_l24_n438(x)
+ end
+end
+
+def fun_l23_n266(x)
+ if (x < 1)
+ fun_l24_n351(x)
+ else
+ fun_l24_n739(x)
+ end
+end
+
+def fun_l23_n267(x)
+ if (x < 1)
+ fun_l24_n333(x)
+ else
+ fun_l24_n179(x)
+ end
+end
+
+def fun_l23_n268(x)
+ if (x < 1)
+ fun_l24_n528(x)
+ else
+ fun_l24_n397(x)
+ end
+end
+
+def fun_l23_n269(x)
+ if (x < 1)
+ fun_l24_n655(x)
+ else
+ fun_l24_n994(x)
+ end
+end
+
+def fun_l23_n270(x)
+ if (x < 1)
+ fun_l24_n257(x)
+ else
+ fun_l24_n346(x)
+ end
+end
+
+def fun_l23_n271(x)
+ if (x < 1)
+ fun_l24_n183(x)
+ else
+ fun_l24_n908(x)
+ end
+end
+
+def fun_l23_n272(x)
+ if (x < 1)
+ fun_l24_n742(x)
+ else
+ fun_l24_n483(x)
+ end
+end
+
+def fun_l23_n273(x)
+ if (x < 1)
+ fun_l24_n803(x)
+ else
+ fun_l24_n318(x)
+ end
+end
+
+def fun_l23_n274(x)
+ if (x < 1)
+ fun_l24_n228(x)
+ else
+ fun_l24_n540(x)
+ end
+end
+
+def fun_l23_n275(x)
+ if (x < 1)
+ fun_l24_n999(x)
+ else
+ fun_l24_n55(x)
+ end
+end
+
+def fun_l23_n276(x)
+ if (x < 1)
+ fun_l24_n129(x)
+ else
+ fun_l24_n235(x)
+ end
+end
+
+def fun_l23_n277(x)
+ if (x < 1)
+ fun_l24_n320(x)
+ else
+ fun_l24_n211(x)
+ end
+end
+
+def fun_l23_n278(x)
+ if (x < 1)
+ fun_l24_n757(x)
+ else
+ fun_l24_n440(x)
+ end
+end
+
+def fun_l23_n279(x)
+ if (x < 1)
+ fun_l24_n784(x)
+ else
+ fun_l24_n117(x)
+ end
+end
+
+def fun_l23_n280(x)
+ if (x < 1)
+ fun_l24_n280(x)
+ else
+ fun_l24_n560(x)
+ end
+end
+
+def fun_l23_n281(x)
+ if (x < 1)
+ fun_l24_n981(x)
+ else
+ fun_l24_n939(x)
+ end
+end
+
+def fun_l23_n282(x)
+ if (x < 1)
+ fun_l24_n500(x)
+ else
+ fun_l24_n90(x)
+ end
+end
+
+def fun_l23_n283(x)
+ if (x < 1)
+ fun_l24_n958(x)
+ else
+ fun_l24_n415(x)
+ end
+end
+
+def fun_l23_n284(x)
+ if (x < 1)
+ fun_l24_n237(x)
+ else
+ fun_l24_n556(x)
+ end
+end
+
+def fun_l23_n285(x)
+ if (x < 1)
+ fun_l24_n87(x)
+ else
+ fun_l24_n630(x)
+ end
+end
+
+def fun_l23_n286(x)
+ if (x < 1)
+ fun_l24_n121(x)
+ else
+ fun_l24_n974(x)
+ end
+end
+
+def fun_l23_n287(x)
+ if (x < 1)
+ fun_l24_n491(x)
+ else
+ fun_l24_n505(x)
+ end
+end
+
+def fun_l23_n288(x)
+ if (x < 1)
+ fun_l24_n342(x)
+ else
+ fun_l24_n408(x)
+ end
+end
+
+def fun_l23_n289(x)
+ if (x < 1)
+ fun_l24_n456(x)
+ else
+ fun_l24_n768(x)
+ end
+end
+
+def fun_l23_n290(x)
+ if (x < 1)
+ fun_l24_n64(x)
+ else
+ fun_l24_n515(x)
+ end
+end
+
+def fun_l23_n291(x)
+ if (x < 1)
+ fun_l24_n86(x)
+ else
+ fun_l24_n420(x)
+ end
+end
+
+def fun_l23_n292(x)
+ if (x < 1)
+ fun_l24_n61(x)
+ else
+ fun_l24_n295(x)
+ end
+end
+
+def fun_l23_n293(x)
+ if (x < 1)
+ fun_l24_n893(x)
+ else
+ fun_l24_n680(x)
+ end
+end
+
+def fun_l23_n294(x)
+ if (x < 1)
+ fun_l24_n81(x)
+ else
+ fun_l24_n946(x)
+ end
+end
+
+def fun_l23_n295(x)
+ if (x < 1)
+ fun_l24_n444(x)
+ else
+ fun_l24_n205(x)
+ end
+end
+
+def fun_l23_n296(x)
+ if (x < 1)
+ fun_l24_n898(x)
+ else
+ fun_l24_n101(x)
+ end
+end
+
+def fun_l23_n297(x)
+ if (x < 1)
+ fun_l24_n617(x)
+ else
+ fun_l24_n660(x)
+ end
+end
+
+def fun_l23_n298(x)
+ if (x < 1)
+ fun_l24_n117(x)
+ else
+ fun_l24_n806(x)
+ end
+end
+
+def fun_l23_n299(x)
+ if (x < 1)
+ fun_l24_n92(x)
+ else
+ fun_l24_n660(x)
+ end
+end
+
+def fun_l23_n300(x)
+ if (x < 1)
+ fun_l24_n202(x)
+ else
+ fun_l24_n611(x)
+ end
+end
+
+def fun_l23_n301(x)
+ if (x < 1)
+ fun_l24_n852(x)
+ else
+ fun_l24_n569(x)
+ end
+end
+
+def fun_l23_n302(x)
+ if (x < 1)
+ fun_l24_n69(x)
+ else
+ fun_l24_n725(x)
+ end
+end
+
+def fun_l23_n303(x)
+ if (x < 1)
+ fun_l24_n183(x)
+ else
+ fun_l24_n406(x)
+ end
+end
+
+def fun_l23_n304(x)
+ if (x < 1)
+ fun_l24_n926(x)
+ else
+ fun_l24_n838(x)
+ end
+end
+
+def fun_l23_n305(x)
+ if (x < 1)
+ fun_l24_n16(x)
+ else
+ fun_l24_n681(x)
+ end
+end
+
+def fun_l23_n306(x)
+ if (x < 1)
+ fun_l24_n43(x)
+ else
+ fun_l24_n504(x)
+ end
+end
+
+def fun_l23_n307(x)
+ if (x < 1)
+ fun_l24_n417(x)
+ else
+ fun_l24_n239(x)
+ end
+end
+
+def fun_l23_n308(x)
+ if (x < 1)
+ fun_l24_n353(x)
+ else
+ fun_l24_n467(x)
+ end
+end
+
+def fun_l23_n309(x)
+ if (x < 1)
+ fun_l24_n633(x)
+ else
+ fun_l24_n593(x)
+ end
+end
+
+def fun_l23_n310(x)
+ if (x < 1)
+ fun_l24_n974(x)
+ else
+ fun_l24_n894(x)
+ end
+end
+
+def fun_l23_n311(x)
+ if (x < 1)
+ fun_l24_n3(x)
+ else
+ fun_l24_n751(x)
+ end
+end
+
+def fun_l23_n312(x)
+ if (x < 1)
+ fun_l24_n728(x)
+ else
+ fun_l24_n116(x)
+ end
+end
+
+def fun_l23_n313(x)
+ if (x < 1)
+ fun_l24_n588(x)
+ else
+ fun_l24_n636(x)
+ end
+end
+
+def fun_l23_n314(x)
+ if (x < 1)
+ fun_l24_n284(x)
+ else
+ fun_l24_n751(x)
+ end
+end
+
+def fun_l23_n315(x)
+ if (x < 1)
+ fun_l24_n567(x)
+ else
+ fun_l24_n356(x)
+ end
+end
+
+def fun_l23_n316(x)
+ if (x < 1)
+ fun_l24_n78(x)
+ else
+ fun_l24_n714(x)
+ end
+end
+
+def fun_l23_n317(x)
+ if (x < 1)
+ fun_l24_n592(x)
+ else
+ fun_l24_n720(x)
+ end
+end
+
+def fun_l23_n318(x)
+ if (x < 1)
+ fun_l24_n273(x)
+ else
+ fun_l24_n367(x)
+ end
+end
+
+def fun_l23_n319(x)
+ if (x < 1)
+ fun_l24_n816(x)
+ else
+ fun_l24_n964(x)
+ end
+end
+
+def fun_l23_n320(x)
+ if (x < 1)
+ fun_l24_n59(x)
+ else
+ fun_l24_n630(x)
+ end
+end
+
+def fun_l23_n321(x)
+ if (x < 1)
+ fun_l24_n298(x)
+ else
+ fun_l24_n639(x)
+ end
+end
+
+def fun_l23_n322(x)
+ if (x < 1)
+ fun_l24_n70(x)
+ else
+ fun_l24_n714(x)
+ end
+end
+
+def fun_l23_n323(x)
+ if (x < 1)
+ fun_l24_n495(x)
+ else
+ fun_l24_n630(x)
+ end
+end
+
+def fun_l23_n324(x)
+ if (x < 1)
+ fun_l24_n780(x)
+ else
+ fun_l24_n932(x)
+ end
+end
+
+def fun_l23_n325(x)
+ if (x < 1)
+ fun_l24_n494(x)
+ else
+ fun_l24_n610(x)
+ end
+end
+
+def fun_l23_n326(x)
+ if (x < 1)
+ fun_l24_n509(x)
+ else
+ fun_l24_n635(x)
+ end
+end
+
+def fun_l23_n327(x)
+ if (x < 1)
+ fun_l24_n991(x)
+ else
+ fun_l24_n355(x)
+ end
+end
+
+def fun_l23_n328(x)
+ if (x < 1)
+ fun_l24_n153(x)
+ else
+ fun_l24_n234(x)
+ end
+end
+
+def fun_l23_n329(x)
+ if (x < 1)
+ fun_l24_n483(x)
+ else
+ fun_l24_n812(x)
+ end
+end
+
+def fun_l23_n330(x)
+ if (x < 1)
+ fun_l24_n123(x)
+ else
+ fun_l24_n665(x)
+ end
+end
+
+def fun_l23_n331(x)
+ if (x < 1)
+ fun_l24_n752(x)
+ else
+ fun_l24_n471(x)
+ end
+end
+
+def fun_l23_n332(x)
+ if (x < 1)
+ fun_l24_n440(x)
+ else
+ fun_l24_n788(x)
+ end
+end
+
+def fun_l23_n333(x)
+ if (x < 1)
+ fun_l24_n381(x)
+ else
+ fun_l24_n95(x)
+ end
+end
+
+def fun_l23_n334(x)
+ if (x < 1)
+ fun_l24_n379(x)
+ else
+ fun_l24_n982(x)
+ end
+end
+
+def fun_l23_n335(x)
+ if (x < 1)
+ fun_l24_n766(x)
+ else
+ fun_l24_n14(x)
+ end
+end
+
+def fun_l23_n336(x)
+ if (x < 1)
+ fun_l24_n733(x)
+ else
+ fun_l24_n614(x)
+ end
+end
+
+def fun_l23_n337(x)
+ if (x < 1)
+ fun_l24_n946(x)
+ else
+ fun_l24_n408(x)
+ end
+end
+
+def fun_l23_n338(x)
+ if (x < 1)
+ fun_l24_n98(x)
+ else
+ fun_l24_n542(x)
+ end
+end
+
+def fun_l23_n339(x)
+ if (x < 1)
+ fun_l24_n60(x)
+ else
+ fun_l24_n970(x)
+ end
+end
+
+def fun_l23_n340(x)
+ if (x < 1)
+ fun_l24_n933(x)
+ else
+ fun_l24_n517(x)
+ end
+end
+
+def fun_l23_n341(x)
+ if (x < 1)
+ fun_l24_n634(x)
+ else
+ fun_l24_n943(x)
+ end
+end
+
+def fun_l23_n342(x)
+ if (x < 1)
+ fun_l24_n50(x)
+ else
+ fun_l24_n800(x)
+ end
+end
+
+def fun_l23_n343(x)
+ if (x < 1)
+ fun_l24_n352(x)
+ else
+ fun_l24_n450(x)
+ end
+end
+
+def fun_l23_n344(x)
+ if (x < 1)
+ fun_l24_n340(x)
+ else
+ fun_l24_n101(x)
+ end
+end
+
+def fun_l23_n345(x)
+ if (x < 1)
+ fun_l24_n383(x)
+ else
+ fun_l24_n493(x)
+ end
+end
+
+def fun_l23_n346(x)
+ if (x < 1)
+ fun_l24_n805(x)
+ else
+ fun_l24_n845(x)
+ end
+end
+
+def fun_l23_n347(x)
+ if (x < 1)
+ fun_l24_n491(x)
+ else
+ fun_l24_n756(x)
+ end
+end
+
+def fun_l23_n348(x)
+ if (x < 1)
+ fun_l24_n508(x)
+ else
+ fun_l24_n2(x)
+ end
+end
+
+def fun_l23_n349(x)
+ if (x < 1)
+ fun_l24_n865(x)
+ else
+ fun_l24_n55(x)
+ end
+end
+
+def fun_l23_n350(x)
+ if (x < 1)
+ fun_l24_n218(x)
+ else
+ fun_l24_n456(x)
+ end
+end
+
+def fun_l23_n351(x)
+ if (x < 1)
+ fun_l24_n162(x)
+ else
+ fun_l24_n312(x)
+ end
+end
+
+def fun_l23_n352(x)
+ if (x < 1)
+ fun_l24_n309(x)
+ else
+ fun_l24_n431(x)
+ end
+end
+
+def fun_l23_n353(x)
+ if (x < 1)
+ fun_l24_n411(x)
+ else
+ fun_l24_n684(x)
+ end
+end
+
+def fun_l23_n354(x)
+ if (x < 1)
+ fun_l24_n381(x)
+ else
+ fun_l24_n703(x)
+ end
+end
+
+def fun_l23_n355(x)
+ if (x < 1)
+ fun_l24_n189(x)
+ else
+ fun_l24_n217(x)
+ end
+end
+
+def fun_l23_n356(x)
+ if (x < 1)
+ fun_l24_n180(x)
+ else
+ fun_l24_n706(x)
+ end
+end
+
+def fun_l23_n357(x)
+ if (x < 1)
+ fun_l24_n76(x)
+ else
+ fun_l24_n575(x)
+ end
+end
+
+def fun_l23_n358(x)
+ if (x < 1)
+ fun_l24_n574(x)
+ else
+ fun_l24_n842(x)
+ end
+end
+
+def fun_l23_n359(x)
+ if (x < 1)
+ fun_l24_n281(x)
+ else
+ fun_l24_n572(x)
+ end
+end
+
+def fun_l23_n360(x)
+ if (x < 1)
+ fun_l24_n2(x)
+ else
+ fun_l24_n928(x)
+ end
+end
+
+def fun_l23_n361(x)
+ if (x < 1)
+ fun_l24_n840(x)
+ else
+ fun_l24_n794(x)
+ end
+end
+
+def fun_l23_n362(x)
+ if (x < 1)
+ fun_l24_n657(x)
+ else
+ fun_l24_n987(x)
+ end
+end
+
+def fun_l23_n363(x)
+ if (x < 1)
+ fun_l24_n400(x)
+ else
+ fun_l24_n151(x)
+ end
+end
+
+def fun_l23_n364(x)
+ if (x < 1)
+ fun_l24_n123(x)
+ else
+ fun_l24_n873(x)
+ end
+end
+
+def fun_l23_n365(x)
+ if (x < 1)
+ fun_l24_n51(x)
+ else
+ fun_l24_n52(x)
+ end
+end
+
+def fun_l23_n366(x)
+ if (x < 1)
+ fun_l24_n809(x)
+ else
+ fun_l24_n32(x)
+ end
+end
+
+def fun_l23_n367(x)
+ if (x < 1)
+ fun_l24_n928(x)
+ else
+ fun_l24_n618(x)
+ end
+end
+
+def fun_l23_n368(x)
+ if (x < 1)
+ fun_l24_n563(x)
+ else
+ fun_l24_n937(x)
+ end
+end
+
+def fun_l23_n369(x)
+ if (x < 1)
+ fun_l24_n312(x)
+ else
+ fun_l24_n918(x)
+ end
+end
+
+def fun_l23_n370(x)
+ if (x < 1)
+ fun_l24_n940(x)
+ else
+ fun_l24_n994(x)
+ end
+end
+
+def fun_l23_n371(x)
+ if (x < 1)
+ fun_l24_n788(x)
+ else
+ fun_l24_n187(x)
+ end
+end
+
+def fun_l23_n372(x)
+ if (x < 1)
+ fun_l24_n110(x)
+ else
+ fun_l24_n523(x)
+ end
+end
+
+def fun_l23_n373(x)
+ if (x < 1)
+ fun_l24_n158(x)
+ else
+ fun_l24_n656(x)
+ end
+end
+
+def fun_l23_n374(x)
+ if (x < 1)
+ fun_l24_n522(x)
+ else
+ fun_l24_n395(x)
+ end
+end
+
+def fun_l23_n375(x)
+ if (x < 1)
+ fun_l24_n90(x)
+ else
+ fun_l24_n732(x)
+ end
+end
+
+def fun_l23_n376(x)
+ if (x < 1)
+ fun_l24_n809(x)
+ else
+ fun_l24_n513(x)
+ end
+end
+
+def fun_l23_n377(x)
+ if (x < 1)
+ fun_l24_n916(x)
+ else
+ fun_l24_n962(x)
+ end
+end
+
+def fun_l23_n378(x)
+ if (x < 1)
+ fun_l24_n852(x)
+ else
+ fun_l24_n350(x)
+ end
+end
+
+def fun_l23_n379(x)
+ if (x < 1)
+ fun_l24_n555(x)
+ else
+ fun_l24_n375(x)
+ end
+end
+
+def fun_l23_n380(x)
+ if (x < 1)
+ fun_l24_n17(x)
+ else
+ fun_l24_n566(x)
+ end
+end
+
+def fun_l23_n381(x)
+ if (x < 1)
+ fun_l24_n332(x)
+ else
+ fun_l24_n35(x)
+ end
+end
+
+def fun_l23_n382(x)
+ if (x < 1)
+ fun_l24_n531(x)
+ else
+ fun_l24_n368(x)
+ end
+end
+
+def fun_l23_n383(x)
+ if (x < 1)
+ fun_l24_n712(x)
+ else
+ fun_l24_n32(x)
+ end
+end
+
+def fun_l23_n384(x)
+ if (x < 1)
+ fun_l24_n239(x)
+ else
+ fun_l24_n542(x)
+ end
+end
+
+def fun_l23_n385(x)
+ if (x < 1)
+ fun_l24_n914(x)
+ else
+ fun_l24_n820(x)
+ end
+end
+
+def fun_l23_n386(x)
+ if (x < 1)
+ fun_l24_n579(x)
+ else
+ fun_l24_n202(x)
+ end
+end
+
+def fun_l23_n387(x)
+ if (x < 1)
+ fun_l24_n36(x)
+ else
+ fun_l24_n591(x)
+ end
+end
+
+def fun_l23_n388(x)
+ if (x < 1)
+ fun_l24_n485(x)
+ else
+ fun_l24_n707(x)
+ end
+end
+
+def fun_l23_n389(x)
+ if (x < 1)
+ fun_l24_n587(x)
+ else
+ fun_l24_n588(x)
+ end
+end
+
+def fun_l23_n390(x)
+ if (x < 1)
+ fun_l24_n837(x)
+ else
+ fun_l24_n352(x)
+ end
+end
+
+def fun_l23_n391(x)
+ if (x < 1)
+ fun_l24_n926(x)
+ else
+ fun_l24_n553(x)
+ end
+end
+
+def fun_l23_n392(x)
+ if (x < 1)
+ fun_l24_n557(x)
+ else
+ fun_l24_n944(x)
+ end
+end
+
+def fun_l23_n393(x)
+ if (x < 1)
+ fun_l24_n870(x)
+ else
+ fun_l24_n632(x)
+ end
+end
+
+def fun_l23_n394(x)
+ if (x < 1)
+ fun_l24_n732(x)
+ else
+ fun_l24_n285(x)
+ end
+end
+
+def fun_l23_n395(x)
+ if (x < 1)
+ fun_l24_n249(x)
+ else
+ fun_l24_n709(x)
+ end
+end
+
+def fun_l23_n396(x)
+ if (x < 1)
+ fun_l24_n674(x)
+ else
+ fun_l24_n693(x)
+ end
+end
+
+def fun_l23_n397(x)
+ if (x < 1)
+ fun_l24_n20(x)
+ else
+ fun_l24_n367(x)
+ end
+end
+
+def fun_l23_n398(x)
+ if (x < 1)
+ fun_l24_n545(x)
+ else
+ fun_l24_n973(x)
+ end
+end
+
+def fun_l23_n399(x)
+ if (x < 1)
+ fun_l24_n460(x)
+ else
+ fun_l24_n627(x)
+ end
+end
+
+def fun_l23_n400(x)
+ if (x < 1)
+ fun_l24_n941(x)
+ else
+ fun_l24_n679(x)
+ end
+end
+
+def fun_l23_n401(x)
+ if (x < 1)
+ fun_l24_n161(x)
+ else
+ fun_l24_n518(x)
+ end
+end
+
+def fun_l23_n402(x)
+ if (x < 1)
+ fun_l24_n738(x)
+ else
+ fun_l24_n393(x)
+ end
+end
+
+def fun_l23_n403(x)
+ if (x < 1)
+ fun_l24_n75(x)
+ else
+ fun_l24_n776(x)
+ end
+end
+
+def fun_l23_n404(x)
+ if (x < 1)
+ fun_l24_n996(x)
+ else
+ fun_l24_n71(x)
+ end
+end
+
+def fun_l23_n405(x)
+ if (x < 1)
+ fun_l24_n732(x)
+ else
+ fun_l24_n649(x)
+ end
+end
+
+def fun_l23_n406(x)
+ if (x < 1)
+ fun_l24_n142(x)
+ else
+ fun_l24_n563(x)
+ end
+end
+
+def fun_l23_n407(x)
+ if (x < 1)
+ fun_l24_n63(x)
+ else
+ fun_l24_n629(x)
+ end
+end
+
+def fun_l23_n408(x)
+ if (x < 1)
+ fun_l24_n734(x)
+ else
+ fun_l24_n857(x)
+ end
+end
+
+def fun_l23_n409(x)
+ if (x < 1)
+ fun_l24_n100(x)
+ else
+ fun_l24_n340(x)
+ end
+end
+
+def fun_l23_n410(x)
+ if (x < 1)
+ fun_l24_n471(x)
+ else
+ fun_l24_n114(x)
+ end
+end
+
+def fun_l23_n411(x)
+ if (x < 1)
+ fun_l24_n316(x)
+ else
+ fun_l24_n965(x)
+ end
+end
+
+def fun_l23_n412(x)
+ if (x < 1)
+ fun_l24_n909(x)
+ else
+ fun_l24_n779(x)
+ end
+end
+
+def fun_l23_n413(x)
+ if (x < 1)
+ fun_l24_n846(x)
+ else
+ fun_l24_n473(x)
+ end
+end
+
+def fun_l23_n414(x)
+ if (x < 1)
+ fun_l24_n117(x)
+ else
+ fun_l24_n751(x)
+ end
+end
+
+def fun_l23_n415(x)
+ if (x < 1)
+ fun_l24_n360(x)
+ else
+ fun_l24_n285(x)
+ end
+end
+
+def fun_l23_n416(x)
+ if (x < 1)
+ fun_l24_n430(x)
+ else
+ fun_l24_n273(x)
+ end
+end
+
+def fun_l23_n417(x)
+ if (x < 1)
+ fun_l24_n925(x)
+ else
+ fun_l24_n928(x)
+ end
+end
+
+def fun_l23_n418(x)
+ if (x < 1)
+ fun_l24_n478(x)
+ else
+ fun_l24_n511(x)
+ end
+end
+
+def fun_l23_n419(x)
+ if (x < 1)
+ fun_l24_n415(x)
+ else
+ fun_l24_n127(x)
+ end
+end
+
+def fun_l23_n420(x)
+ if (x < 1)
+ fun_l24_n33(x)
+ else
+ fun_l24_n897(x)
+ end
+end
+
+def fun_l23_n421(x)
+ if (x < 1)
+ fun_l24_n112(x)
+ else
+ fun_l24_n87(x)
+ end
+end
+
+def fun_l23_n422(x)
+ if (x < 1)
+ fun_l24_n386(x)
+ else
+ fun_l24_n450(x)
+ end
+end
+
+def fun_l23_n423(x)
+ if (x < 1)
+ fun_l24_n430(x)
+ else
+ fun_l24_n517(x)
+ end
+end
+
+def fun_l23_n424(x)
+ if (x < 1)
+ fun_l24_n413(x)
+ else
+ fun_l24_n799(x)
+ end
+end
+
+def fun_l23_n425(x)
+ if (x < 1)
+ fun_l24_n744(x)
+ else
+ fun_l24_n218(x)
+ end
+end
+
+def fun_l23_n426(x)
+ if (x < 1)
+ fun_l24_n231(x)
+ else
+ fun_l24_n454(x)
+ end
+end
+
+def fun_l23_n427(x)
+ if (x < 1)
+ fun_l24_n693(x)
+ else
+ fun_l24_n28(x)
+ end
+end
+
+def fun_l23_n428(x)
+ if (x < 1)
+ fun_l24_n694(x)
+ else
+ fun_l24_n712(x)
+ end
+end
+
+def fun_l23_n429(x)
+ if (x < 1)
+ fun_l24_n949(x)
+ else
+ fun_l24_n983(x)
+ end
+end
+
+def fun_l23_n430(x)
+ if (x < 1)
+ fun_l24_n324(x)
+ else
+ fun_l24_n818(x)
+ end
+end
+
+def fun_l23_n431(x)
+ if (x < 1)
+ fun_l24_n820(x)
+ else
+ fun_l24_n662(x)
+ end
+end
+
+def fun_l23_n432(x)
+ if (x < 1)
+ fun_l24_n391(x)
+ else
+ fun_l24_n801(x)
+ end
+end
+
+def fun_l23_n433(x)
+ if (x < 1)
+ fun_l24_n285(x)
+ else
+ fun_l24_n79(x)
+ end
+end
+
+def fun_l23_n434(x)
+ if (x < 1)
+ fun_l24_n582(x)
+ else
+ fun_l24_n820(x)
+ end
+end
+
+def fun_l23_n435(x)
+ if (x < 1)
+ fun_l24_n324(x)
+ else
+ fun_l24_n348(x)
+ end
+end
+
+def fun_l23_n436(x)
+ if (x < 1)
+ fun_l24_n241(x)
+ else
+ fun_l24_n568(x)
+ end
+end
+
+def fun_l23_n437(x)
+ if (x < 1)
+ fun_l24_n261(x)
+ else
+ fun_l24_n374(x)
+ end
+end
+
+def fun_l23_n438(x)
+ if (x < 1)
+ fun_l24_n886(x)
+ else
+ fun_l24_n38(x)
+ end
+end
+
+def fun_l23_n439(x)
+ if (x < 1)
+ fun_l24_n344(x)
+ else
+ fun_l24_n991(x)
+ end
+end
+
+def fun_l23_n440(x)
+ if (x < 1)
+ fun_l24_n792(x)
+ else
+ fun_l24_n298(x)
+ end
+end
+
+def fun_l23_n441(x)
+ if (x < 1)
+ fun_l24_n728(x)
+ else
+ fun_l24_n575(x)
+ end
+end
+
+def fun_l23_n442(x)
+ if (x < 1)
+ fun_l24_n22(x)
+ else
+ fun_l24_n804(x)
+ end
+end
+
+def fun_l23_n443(x)
+ if (x < 1)
+ fun_l24_n406(x)
+ else
+ fun_l24_n723(x)
+ end
+end
+
+def fun_l23_n444(x)
+ if (x < 1)
+ fun_l24_n921(x)
+ else
+ fun_l24_n455(x)
+ end
+end
+
+def fun_l23_n445(x)
+ if (x < 1)
+ fun_l24_n725(x)
+ else
+ fun_l24_n799(x)
+ end
+end
+
+def fun_l23_n446(x)
+ if (x < 1)
+ fun_l24_n543(x)
+ else
+ fun_l24_n350(x)
+ end
+end
+
+def fun_l23_n447(x)
+ if (x < 1)
+ fun_l24_n849(x)
+ else
+ fun_l24_n447(x)
+ end
+end
+
+def fun_l23_n448(x)
+ if (x < 1)
+ fun_l24_n357(x)
+ else
+ fun_l24_n915(x)
+ end
+end
+
+def fun_l23_n449(x)
+ if (x < 1)
+ fun_l24_n143(x)
+ else
+ fun_l24_n164(x)
+ end
+end
+
+def fun_l23_n450(x)
+ if (x < 1)
+ fun_l24_n702(x)
+ else
+ fun_l24_n940(x)
+ end
+end
+
+def fun_l23_n451(x)
+ if (x < 1)
+ fun_l24_n76(x)
+ else
+ fun_l24_n229(x)
+ end
+end
+
+def fun_l23_n452(x)
+ if (x < 1)
+ fun_l24_n55(x)
+ else
+ fun_l24_n177(x)
+ end
+end
+
+def fun_l23_n453(x)
+ if (x < 1)
+ fun_l24_n65(x)
+ else
+ fun_l24_n310(x)
+ end
+end
+
+def fun_l23_n454(x)
+ if (x < 1)
+ fun_l24_n818(x)
+ else
+ fun_l24_n1(x)
+ end
+end
+
+def fun_l23_n455(x)
+ if (x < 1)
+ fun_l24_n555(x)
+ else
+ fun_l24_n475(x)
+ end
+end
+
+def fun_l23_n456(x)
+ if (x < 1)
+ fun_l24_n867(x)
+ else
+ fun_l24_n350(x)
+ end
+end
+
+def fun_l23_n457(x)
+ if (x < 1)
+ fun_l24_n953(x)
+ else
+ fun_l24_n932(x)
+ end
+end
+
+def fun_l23_n458(x)
+ if (x < 1)
+ fun_l24_n104(x)
+ else
+ fun_l24_n555(x)
+ end
+end
+
+def fun_l23_n459(x)
+ if (x < 1)
+ fun_l24_n259(x)
+ else
+ fun_l24_n196(x)
+ end
+end
+
+def fun_l23_n460(x)
+ if (x < 1)
+ fun_l24_n747(x)
+ else
+ fun_l24_n788(x)
+ end
+end
+
+def fun_l23_n461(x)
+ if (x < 1)
+ fun_l24_n302(x)
+ else
+ fun_l24_n479(x)
+ end
+end
+
+def fun_l23_n462(x)
+ if (x < 1)
+ fun_l24_n292(x)
+ else
+ fun_l24_n235(x)
+ end
+end
+
+def fun_l23_n463(x)
+ if (x < 1)
+ fun_l24_n589(x)
+ else
+ fun_l24_n277(x)
+ end
+end
+
+def fun_l23_n464(x)
+ if (x < 1)
+ fun_l24_n212(x)
+ else
+ fun_l24_n334(x)
+ end
+end
+
+def fun_l23_n465(x)
+ if (x < 1)
+ fun_l24_n878(x)
+ else
+ fun_l24_n111(x)
+ end
+end
+
+def fun_l23_n466(x)
+ if (x < 1)
+ fun_l24_n862(x)
+ else
+ fun_l24_n736(x)
+ end
+end
+
+def fun_l23_n467(x)
+ if (x < 1)
+ fun_l24_n257(x)
+ else
+ fun_l24_n745(x)
+ end
+end
+
+def fun_l23_n468(x)
+ if (x < 1)
+ fun_l24_n922(x)
+ else
+ fun_l24_n453(x)
+ end
+end
+
+def fun_l23_n469(x)
+ if (x < 1)
+ fun_l24_n334(x)
+ else
+ fun_l24_n23(x)
+ end
+end
+
+def fun_l23_n470(x)
+ if (x < 1)
+ fun_l24_n585(x)
+ else
+ fun_l24_n512(x)
+ end
+end
+
+def fun_l23_n471(x)
+ if (x < 1)
+ fun_l24_n135(x)
+ else
+ fun_l24_n244(x)
+ end
+end
+
+def fun_l23_n472(x)
+ if (x < 1)
+ fun_l24_n151(x)
+ else
+ fun_l24_n479(x)
+ end
+end
+
+def fun_l23_n473(x)
+ if (x < 1)
+ fun_l24_n192(x)
+ else
+ fun_l24_n748(x)
+ end
+end
+
+def fun_l23_n474(x)
+ if (x < 1)
+ fun_l24_n729(x)
+ else
+ fun_l24_n283(x)
+ end
+end
+
+def fun_l23_n475(x)
+ if (x < 1)
+ fun_l24_n453(x)
+ else
+ fun_l24_n244(x)
+ end
+end
+
+def fun_l23_n476(x)
+ if (x < 1)
+ fun_l24_n210(x)
+ else
+ fun_l24_n6(x)
+ end
+end
+
+def fun_l23_n477(x)
+ if (x < 1)
+ fun_l24_n387(x)
+ else
+ fun_l24_n857(x)
+ end
+end
+
+def fun_l23_n478(x)
+ if (x < 1)
+ fun_l24_n312(x)
+ else
+ fun_l24_n378(x)
+ end
+end
+
+def fun_l23_n479(x)
+ if (x < 1)
+ fun_l24_n553(x)
+ else
+ fun_l24_n264(x)
+ end
+end
+
+def fun_l23_n480(x)
+ if (x < 1)
+ fun_l24_n903(x)
+ else
+ fun_l24_n374(x)
+ end
+end
+
+def fun_l23_n481(x)
+ if (x < 1)
+ fun_l24_n9(x)
+ else
+ fun_l24_n494(x)
+ end
+end
+
+def fun_l23_n482(x)
+ if (x < 1)
+ fun_l24_n4(x)
+ else
+ fun_l24_n119(x)
+ end
+end
+
+def fun_l23_n483(x)
+ if (x < 1)
+ fun_l24_n969(x)
+ else
+ fun_l24_n716(x)
+ end
+end
+
+def fun_l23_n484(x)
+ if (x < 1)
+ fun_l24_n132(x)
+ else
+ fun_l24_n950(x)
+ end
+end
+
+def fun_l23_n485(x)
+ if (x < 1)
+ fun_l24_n641(x)
+ else
+ fun_l24_n134(x)
+ end
+end
+
+def fun_l23_n486(x)
+ if (x < 1)
+ fun_l24_n499(x)
+ else
+ fun_l24_n506(x)
+ end
+end
+
+def fun_l23_n487(x)
+ if (x < 1)
+ fun_l24_n594(x)
+ else
+ fun_l24_n508(x)
+ end
+end
+
+def fun_l23_n488(x)
+ if (x < 1)
+ fun_l24_n730(x)
+ else
+ fun_l24_n464(x)
+ end
+end
+
+def fun_l23_n489(x)
+ if (x < 1)
+ fun_l24_n564(x)
+ else
+ fun_l24_n716(x)
+ end
+end
+
+def fun_l23_n490(x)
+ if (x < 1)
+ fun_l24_n658(x)
+ else
+ fun_l24_n63(x)
+ end
+end
+
+def fun_l23_n491(x)
+ if (x < 1)
+ fun_l24_n404(x)
+ else
+ fun_l24_n982(x)
+ end
+end
+
+def fun_l23_n492(x)
+ if (x < 1)
+ fun_l24_n182(x)
+ else
+ fun_l24_n97(x)
+ end
+end
+
+def fun_l23_n493(x)
+ if (x < 1)
+ fun_l24_n97(x)
+ else
+ fun_l24_n765(x)
+ end
+end
+
+def fun_l23_n494(x)
+ if (x < 1)
+ fun_l24_n728(x)
+ else
+ fun_l24_n703(x)
+ end
+end
+
+def fun_l23_n495(x)
+ if (x < 1)
+ fun_l24_n327(x)
+ else
+ fun_l24_n484(x)
+ end
+end
+
+def fun_l23_n496(x)
+ if (x < 1)
+ fun_l24_n544(x)
+ else
+ fun_l24_n814(x)
+ end
+end
+
+def fun_l23_n497(x)
+ if (x < 1)
+ fun_l24_n555(x)
+ else
+ fun_l24_n160(x)
+ end
+end
+
+def fun_l23_n498(x)
+ if (x < 1)
+ fun_l24_n336(x)
+ else
+ fun_l24_n544(x)
+ end
+end
+
+def fun_l23_n499(x)
+ if (x < 1)
+ fun_l24_n242(x)
+ else
+ fun_l24_n337(x)
+ end
+end
+
+def fun_l23_n500(x)
+ if (x < 1)
+ fun_l24_n71(x)
+ else
+ fun_l24_n446(x)
+ end
+end
+
+def fun_l23_n501(x)
+ if (x < 1)
+ fun_l24_n726(x)
+ else
+ fun_l24_n127(x)
+ end
+end
+
+def fun_l23_n502(x)
+ if (x < 1)
+ fun_l24_n430(x)
+ else
+ fun_l24_n136(x)
+ end
+end
+
+def fun_l23_n503(x)
+ if (x < 1)
+ fun_l24_n140(x)
+ else
+ fun_l24_n942(x)
+ end
+end
+
+def fun_l23_n504(x)
+ if (x < 1)
+ fun_l24_n135(x)
+ else
+ fun_l24_n701(x)
+ end
+end
+
+def fun_l23_n505(x)
+ if (x < 1)
+ fun_l24_n409(x)
+ else
+ fun_l24_n825(x)
+ end
+end
+
+def fun_l23_n506(x)
+ if (x < 1)
+ fun_l24_n415(x)
+ else
+ fun_l24_n336(x)
+ end
+end
+
+def fun_l23_n507(x)
+ if (x < 1)
+ fun_l24_n118(x)
+ else
+ fun_l24_n904(x)
+ end
+end
+
+def fun_l23_n508(x)
+ if (x < 1)
+ fun_l24_n870(x)
+ else
+ fun_l24_n473(x)
+ end
+end
+
+def fun_l23_n509(x)
+ if (x < 1)
+ fun_l24_n99(x)
+ else
+ fun_l24_n157(x)
+ end
+end
+
+def fun_l23_n510(x)
+ if (x < 1)
+ fun_l24_n484(x)
+ else
+ fun_l24_n933(x)
+ end
+end
+
+def fun_l23_n511(x)
+ if (x < 1)
+ fun_l24_n204(x)
+ else
+ fun_l24_n95(x)
+ end
+end
+
+def fun_l23_n512(x)
+ if (x < 1)
+ fun_l24_n783(x)
+ else
+ fun_l24_n490(x)
+ end
+end
+
+def fun_l23_n513(x)
+ if (x < 1)
+ fun_l24_n642(x)
+ else
+ fun_l24_n622(x)
+ end
+end
+
+def fun_l23_n514(x)
+ if (x < 1)
+ fun_l24_n514(x)
+ else
+ fun_l24_n287(x)
+ end
+end
+
+def fun_l23_n515(x)
+ if (x < 1)
+ fun_l24_n174(x)
+ else
+ fun_l24_n19(x)
+ end
+end
+
+def fun_l23_n516(x)
+ if (x < 1)
+ fun_l24_n840(x)
+ else
+ fun_l24_n710(x)
+ end
+end
+
+def fun_l23_n517(x)
+ if (x < 1)
+ fun_l24_n921(x)
+ else
+ fun_l24_n11(x)
+ end
+end
+
+def fun_l23_n518(x)
+ if (x < 1)
+ fun_l24_n162(x)
+ else
+ fun_l24_n185(x)
+ end
+end
+
+def fun_l23_n519(x)
+ if (x < 1)
+ fun_l24_n654(x)
+ else
+ fun_l24_n514(x)
+ end
+end
+
+def fun_l23_n520(x)
+ if (x < 1)
+ fun_l24_n763(x)
+ else
+ fun_l24_n158(x)
+ end
+end
+
+def fun_l23_n521(x)
+ if (x < 1)
+ fun_l24_n471(x)
+ else
+ fun_l24_n617(x)
+ end
+end
+
+def fun_l23_n522(x)
+ if (x < 1)
+ fun_l24_n146(x)
+ else
+ fun_l24_n6(x)
+ end
+end
+
+def fun_l23_n523(x)
+ if (x < 1)
+ fun_l24_n447(x)
+ else
+ fun_l24_n981(x)
+ end
+end
+
+def fun_l23_n524(x)
+ if (x < 1)
+ fun_l24_n809(x)
+ else
+ fun_l24_n78(x)
+ end
+end
+
+def fun_l23_n525(x)
+ if (x < 1)
+ fun_l24_n554(x)
+ else
+ fun_l24_n50(x)
+ end
+end
+
+def fun_l23_n526(x)
+ if (x < 1)
+ fun_l24_n970(x)
+ else
+ fun_l24_n600(x)
+ end
+end
+
+def fun_l23_n527(x)
+ if (x < 1)
+ fun_l24_n700(x)
+ else
+ fun_l24_n982(x)
+ end
+end
+
+def fun_l23_n528(x)
+ if (x < 1)
+ fun_l24_n947(x)
+ else
+ fun_l24_n886(x)
+ end
+end
+
+def fun_l23_n529(x)
+ if (x < 1)
+ fun_l24_n198(x)
+ else
+ fun_l24_n283(x)
+ end
+end
+
+def fun_l23_n530(x)
+ if (x < 1)
+ fun_l24_n641(x)
+ else
+ fun_l24_n879(x)
+ end
+end
+
+def fun_l23_n531(x)
+ if (x < 1)
+ fun_l24_n393(x)
+ else
+ fun_l24_n451(x)
+ end
+end
+
+def fun_l23_n532(x)
+ if (x < 1)
+ fun_l24_n802(x)
+ else
+ fun_l24_n271(x)
+ end
+end
+
+def fun_l23_n533(x)
+ if (x < 1)
+ fun_l24_n926(x)
+ else
+ fun_l24_n315(x)
+ end
+end
+
+def fun_l23_n534(x)
+ if (x < 1)
+ fun_l24_n544(x)
+ else
+ fun_l24_n358(x)
+ end
+end
+
+def fun_l23_n535(x)
+ if (x < 1)
+ fun_l24_n456(x)
+ else
+ fun_l24_n569(x)
+ end
+end
+
+def fun_l23_n536(x)
+ if (x < 1)
+ fun_l24_n235(x)
+ else
+ fun_l24_n182(x)
+ end
+end
+
+def fun_l23_n537(x)
+ if (x < 1)
+ fun_l24_n159(x)
+ else
+ fun_l24_n674(x)
+ end
+end
+
+def fun_l23_n538(x)
+ if (x < 1)
+ fun_l24_n956(x)
+ else
+ fun_l24_n145(x)
+ end
+end
+
+def fun_l23_n539(x)
+ if (x < 1)
+ fun_l24_n294(x)
+ else
+ fun_l24_n910(x)
+ end
+end
+
+def fun_l23_n540(x)
+ if (x < 1)
+ fun_l24_n434(x)
+ else
+ fun_l24_n336(x)
+ end
+end
+
+def fun_l23_n541(x)
+ if (x < 1)
+ fun_l24_n635(x)
+ else
+ fun_l24_n182(x)
+ end
+end
+
+def fun_l23_n542(x)
+ if (x < 1)
+ fun_l24_n418(x)
+ else
+ fun_l24_n828(x)
+ end
+end
+
+def fun_l23_n543(x)
+ if (x < 1)
+ fun_l24_n337(x)
+ else
+ fun_l24_n740(x)
+ end
+end
+
+def fun_l23_n544(x)
+ if (x < 1)
+ fun_l24_n893(x)
+ else
+ fun_l24_n402(x)
+ end
+end
+
+def fun_l23_n545(x)
+ if (x < 1)
+ fun_l24_n407(x)
+ else
+ fun_l24_n124(x)
+ end
+end
+
+def fun_l23_n546(x)
+ if (x < 1)
+ fun_l24_n170(x)
+ else
+ fun_l24_n64(x)
+ end
+end
+
+def fun_l23_n547(x)
+ if (x < 1)
+ fun_l24_n936(x)
+ else
+ fun_l24_n876(x)
+ end
+end
+
+def fun_l23_n548(x)
+ if (x < 1)
+ fun_l24_n387(x)
+ else
+ fun_l24_n655(x)
+ end
+end
+
+def fun_l23_n549(x)
+ if (x < 1)
+ fun_l24_n162(x)
+ else
+ fun_l24_n210(x)
+ end
+end
+
+def fun_l23_n550(x)
+ if (x < 1)
+ fun_l24_n454(x)
+ else
+ fun_l24_n695(x)
+ end
+end
+
+def fun_l23_n551(x)
+ if (x < 1)
+ fun_l24_n410(x)
+ else
+ fun_l24_n529(x)
+ end
+end
+
+def fun_l23_n552(x)
+ if (x < 1)
+ fun_l24_n726(x)
+ else
+ fun_l24_n450(x)
+ end
+end
+
+def fun_l23_n553(x)
+ if (x < 1)
+ fun_l24_n39(x)
+ else
+ fun_l24_n37(x)
+ end
+end
+
+def fun_l23_n554(x)
+ if (x < 1)
+ fun_l24_n994(x)
+ else
+ fun_l24_n106(x)
+ end
+end
+
+def fun_l23_n555(x)
+ if (x < 1)
+ fun_l24_n929(x)
+ else
+ fun_l24_n766(x)
+ end
+end
+
+def fun_l23_n556(x)
+ if (x < 1)
+ fun_l24_n531(x)
+ else
+ fun_l24_n502(x)
+ end
+end
+
+def fun_l23_n557(x)
+ if (x < 1)
+ fun_l24_n890(x)
+ else
+ fun_l24_n919(x)
+ end
+end
+
+def fun_l23_n558(x)
+ if (x < 1)
+ fun_l24_n803(x)
+ else
+ fun_l24_n460(x)
+ end
+end
+
+def fun_l23_n559(x)
+ if (x < 1)
+ fun_l24_n5(x)
+ else
+ fun_l24_n464(x)
+ end
+end
+
+def fun_l23_n560(x)
+ if (x < 1)
+ fun_l24_n506(x)
+ else
+ fun_l24_n891(x)
+ end
+end
+
+def fun_l23_n561(x)
+ if (x < 1)
+ fun_l24_n98(x)
+ else
+ fun_l24_n534(x)
+ end
+end
+
+def fun_l23_n562(x)
+ if (x < 1)
+ fun_l24_n130(x)
+ else
+ fun_l24_n54(x)
+ end
+end
+
+def fun_l23_n563(x)
+ if (x < 1)
+ fun_l24_n881(x)
+ else
+ fun_l24_n699(x)
+ end
+end
+
+def fun_l23_n564(x)
+ if (x < 1)
+ fun_l24_n192(x)
+ else
+ fun_l24_n112(x)
+ end
+end
+
+def fun_l23_n565(x)
+ if (x < 1)
+ fun_l24_n249(x)
+ else
+ fun_l24_n796(x)
+ end
+end
+
+def fun_l23_n566(x)
+ if (x < 1)
+ fun_l24_n113(x)
+ else
+ fun_l24_n599(x)
+ end
+end
+
+def fun_l23_n567(x)
+ if (x < 1)
+ fun_l24_n334(x)
+ else
+ fun_l24_n80(x)
+ end
+end
+
+def fun_l23_n568(x)
+ if (x < 1)
+ fun_l24_n347(x)
+ else
+ fun_l24_n726(x)
+ end
+end
+
+def fun_l23_n569(x)
+ if (x < 1)
+ fun_l24_n60(x)
+ else
+ fun_l24_n249(x)
+ end
+end
+
+def fun_l23_n570(x)
+ if (x < 1)
+ fun_l24_n400(x)
+ else
+ fun_l24_n773(x)
+ end
+end
+
+def fun_l23_n571(x)
+ if (x < 1)
+ fun_l24_n172(x)
+ else
+ fun_l24_n787(x)
+ end
+end
+
+def fun_l23_n572(x)
+ if (x < 1)
+ fun_l24_n973(x)
+ else
+ fun_l24_n875(x)
+ end
+end
+
+def fun_l23_n573(x)
+ if (x < 1)
+ fun_l24_n290(x)
+ else
+ fun_l24_n225(x)
+ end
+end
+
+def fun_l23_n574(x)
+ if (x < 1)
+ fun_l24_n383(x)
+ else
+ fun_l24_n714(x)
+ end
+end
+
+def fun_l23_n575(x)
+ if (x < 1)
+ fun_l24_n32(x)
+ else
+ fun_l24_n508(x)
+ end
+end
+
+def fun_l23_n576(x)
+ if (x < 1)
+ fun_l24_n74(x)
+ else
+ fun_l24_n368(x)
+ end
+end
+
+def fun_l23_n577(x)
+ if (x < 1)
+ fun_l24_n431(x)
+ else
+ fun_l24_n2(x)
+ end
+end
+
+def fun_l23_n578(x)
+ if (x < 1)
+ fun_l24_n758(x)
+ else
+ fun_l24_n178(x)
+ end
+end
+
+def fun_l23_n579(x)
+ if (x < 1)
+ fun_l24_n130(x)
+ else
+ fun_l24_n512(x)
+ end
+end
+
+def fun_l23_n580(x)
+ if (x < 1)
+ fun_l24_n790(x)
+ else
+ fun_l24_n280(x)
+ end
+end
+
+def fun_l23_n581(x)
+ if (x < 1)
+ fun_l24_n76(x)
+ else
+ fun_l24_n596(x)
+ end
+end
+
+def fun_l23_n582(x)
+ if (x < 1)
+ fun_l24_n643(x)
+ else
+ fun_l24_n506(x)
+ end
+end
+
+def fun_l23_n583(x)
+ if (x < 1)
+ fun_l24_n392(x)
+ else
+ fun_l24_n671(x)
+ end
+end
+
+def fun_l23_n584(x)
+ if (x < 1)
+ fun_l24_n722(x)
+ else
+ fun_l24_n390(x)
+ end
+end
+
+def fun_l23_n585(x)
+ if (x < 1)
+ fun_l24_n613(x)
+ else
+ fun_l24_n461(x)
+ end
+end
+
+def fun_l23_n586(x)
+ if (x < 1)
+ fun_l24_n784(x)
+ else
+ fun_l24_n426(x)
+ end
+end
+
+def fun_l23_n587(x)
+ if (x < 1)
+ fun_l24_n351(x)
+ else
+ fun_l24_n68(x)
+ end
+end
+
+def fun_l23_n588(x)
+ if (x < 1)
+ fun_l24_n8(x)
+ else
+ fun_l24_n9(x)
+ end
+end
+
+def fun_l23_n589(x)
+ if (x < 1)
+ fun_l24_n984(x)
+ else
+ fun_l24_n704(x)
+ end
+end
+
+def fun_l23_n590(x)
+ if (x < 1)
+ fun_l24_n150(x)
+ else
+ fun_l24_n36(x)
+ end
+end
+
+def fun_l23_n591(x)
+ if (x < 1)
+ fun_l24_n232(x)
+ else
+ fun_l24_n293(x)
+ end
+end
+
+def fun_l23_n592(x)
+ if (x < 1)
+ fun_l24_n763(x)
+ else
+ fun_l24_n444(x)
+ end
+end
+
+def fun_l23_n593(x)
+ if (x < 1)
+ fun_l24_n246(x)
+ else
+ fun_l24_n101(x)
+ end
+end
+
+def fun_l23_n594(x)
+ if (x < 1)
+ fun_l24_n145(x)
+ else
+ fun_l24_n626(x)
+ end
+end
+
+def fun_l23_n595(x)
+ if (x < 1)
+ fun_l24_n835(x)
+ else
+ fun_l24_n827(x)
+ end
+end
+
+def fun_l23_n596(x)
+ if (x < 1)
+ fun_l24_n925(x)
+ else
+ fun_l24_n875(x)
+ end
+end
+
+def fun_l23_n597(x)
+ if (x < 1)
+ fun_l24_n600(x)
+ else
+ fun_l24_n817(x)
+ end
+end
+
+def fun_l23_n598(x)
+ if (x < 1)
+ fun_l24_n653(x)
+ else
+ fun_l24_n632(x)
+ end
+end
+
+def fun_l23_n599(x)
+ if (x < 1)
+ fun_l24_n103(x)
+ else
+ fun_l24_n675(x)
+ end
+end
+
+def fun_l23_n600(x)
+ if (x < 1)
+ fun_l24_n1(x)
+ else
+ fun_l24_n899(x)
+ end
+end
+
+def fun_l23_n601(x)
+ if (x < 1)
+ fun_l24_n357(x)
+ else
+ fun_l24_n88(x)
+ end
+end
+
+def fun_l23_n602(x)
+ if (x < 1)
+ fun_l24_n213(x)
+ else
+ fun_l24_n71(x)
+ end
+end
+
+def fun_l23_n603(x)
+ if (x < 1)
+ fun_l24_n299(x)
+ else
+ fun_l24_n283(x)
+ end
+end
+
+def fun_l23_n604(x)
+ if (x < 1)
+ fun_l24_n647(x)
+ else
+ fun_l24_n891(x)
+ end
+end
+
+def fun_l23_n605(x)
+ if (x < 1)
+ fun_l24_n86(x)
+ else
+ fun_l24_n581(x)
+ end
+end
+
+def fun_l23_n606(x)
+ if (x < 1)
+ fun_l24_n749(x)
+ else
+ fun_l24_n780(x)
+ end
+end
+
+def fun_l23_n607(x)
+ if (x < 1)
+ fun_l24_n537(x)
+ else
+ fun_l24_n22(x)
+ end
+end
+
+def fun_l23_n608(x)
+ if (x < 1)
+ fun_l24_n535(x)
+ else
+ fun_l24_n379(x)
+ end
+end
+
+def fun_l23_n609(x)
+ if (x < 1)
+ fun_l24_n860(x)
+ else
+ fun_l24_n220(x)
+ end
+end
+
+def fun_l23_n610(x)
+ if (x < 1)
+ fun_l24_n366(x)
+ else
+ fun_l24_n216(x)
+ end
+end
+
+def fun_l23_n611(x)
+ if (x < 1)
+ fun_l24_n79(x)
+ else
+ fun_l24_n506(x)
+ end
+end
+
+def fun_l23_n612(x)
+ if (x < 1)
+ fun_l24_n600(x)
+ else
+ fun_l24_n367(x)
+ end
+end
+
+def fun_l23_n613(x)
+ if (x < 1)
+ fun_l24_n764(x)
+ else
+ fun_l24_n167(x)
+ end
+end
+
+def fun_l23_n614(x)
+ if (x < 1)
+ fun_l24_n113(x)
+ else
+ fun_l24_n398(x)
+ end
+end
+
+def fun_l23_n615(x)
+ if (x < 1)
+ fun_l24_n292(x)
+ else
+ fun_l24_n1(x)
+ end
+end
+
+def fun_l23_n616(x)
+ if (x < 1)
+ fun_l24_n523(x)
+ else
+ fun_l24_n344(x)
+ end
+end
+
+def fun_l23_n617(x)
+ if (x < 1)
+ fun_l24_n60(x)
+ else
+ fun_l24_n618(x)
+ end
+end
+
+def fun_l23_n618(x)
+ if (x < 1)
+ fun_l24_n252(x)
+ else
+ fun_l24_n718(x)
+ end
+end
+
+def fun_l23_n619(x)
+ if (x < 1)
+ fun_l24_n962(x)
+ else
+ fun_l24_n69(x)
+ end
+end
+
+def fun_l23_n620(x)
+ if (x < 1)
+ fun_l24_n10(x)
+ else
+ fun_l24_n87(x)
+ end
+end
+
+def fun_l23_n621(x)
+ if (x < 1)
+ fun_l24_n128(x)
+ else
+ fun_l24_n958(x)
+ end
+end
+
+def fun_l23_n622(x)
+ if (x < 1)
+ fun_l24_n775(x)
+ else
+ fun_l24_n205(x)
+ end
+end
+
+def fun_l23_n623(x)
+ if (x < 1)
+ fun_l24_n121(x)
+ else
+ fun_l24_n69(x)
+ end
+end
+
+def fun_l23_n624(x)
+ if (x < 1)
+ fun_l24_n768(x)
+ else
+ fun_l24_n439(x)
+ end
+end
+
+def fun_l23_n625(x)
+ if (x < 1)
+ fun_l24_n332(x)
+ else
+ fun_l24_n73(x)
+ end
+end
+
+def fun_l23_n626(x)
+ if (x < 1)
+ fun_l24_n735(x)
+ else
+ fun_l24_n651(x)
+ end
+end
+
+def fun_l23_n627(x)
+ if (x < 1)
+ fun_l24_n661(x)
+ else
+ fun_l24_n827(x)
+ end
+end
+
+def fun_l23_n628(x)
+ if (x < 1)
+ fun_l24_n607(x)
+ else
+ fun_l24_n343(x)
+ end
+end
+
+def fun_l23_n629(x)
+ if (x < 1)
+ fun_l24_n868(x)
+ else
+ fun_l24_n633(x)
+ end
+end
+
+def fun_l23_n630(x)
+ if (x < 1)
+ fun_l24_n321(x)
+ else
+ fun_l24_n44(x)
+ end
+end
+
+def fun_l23_n631(x)
+ if (x < 1)
+ fun_l24_n840(x)
+ else
+ fun_l24_n265(x)
+ end
+end
+
+def fun_l23_n632(x)
+ if (x < 1)
+ fun_l24_n710(x)
+ else
+ fun_l24_n343(x)
+ end
+end
+
+def fun_l23_n633(x)
+ if (x < 1)
+ fun_l24_n640(x)
+ else
+ fun_l24_n112(x)
+ end
+end
+
+def fun_l23_n634(x)
+ if (x < 1)
+ fun_l24_n237(x)
+ else
+ fun_l24_n83(x)
+ end
+end
+
+def fun_l23_n635(x)
+ if (x < 1)
+ fun_l24_n235(x)
+ else
+ fun_l24_n970(x)
+ end
+end
+
+def fun_l23_n636(x)
+ if (x < 1)
+ fun_l24_n576(x)
+ else
+ fun_l24_n891(x)
+ end
+end
+
+def fun_l23_n637(x)
+ if (x < 1)
+ fun_l24_n489(x)
+ else
+ fun_l24_n136(x)
+ end
+end
+
+def fun_l23_n638(x)
+ if (x < 1)
+ fun_l24_n532(x)
+ else
+ fun_l24_n150(x)
+ end
+end
+
+def fun_l23_n639(x)
+ if (x < 1)
+ fun_l24_n496(x)
+ else
+ fun_l24_n57(x)
+ end
+end
+
+def fun_l23_n640(x)
+ if (x < 1)
+ fun_l24_n857(x)
+ else
+ fun_l24_n564(x)
+ end
+end
+
+def fun_l23_n641(x)
+ if (x < 1)
+ fun_l24_n203(x)
+ else
+ fun_l24_n730(x)
+ end
+end
+
+def fun_l23_n642(x)
+ if (x < 1)
+ fun_l24_n38(x)
+ else
+ fun_l24_n388(x)
+ end
+end
+
+def fun_l23_n643(x)
+ if (x < 1)
+ fun_l24_n650(x)
+ else
+ fun_l24_n672(x)
+ end
+end
+
+def fun_l23_n644(x)
+ if (x < 1)
+ fun_l24_n842(x)
+ else
+ fun_l24_n473(x)
+ end
+end
+
+def fun_l23_n645(x)
+ if (x < 1)
+ fun_l24_n650(x)
+ else
+ fun_l24_n36(x)
+ end
+end
+
+def fun_l23_n646(x)
+ if (x < 1)
+ fun_l24_n25(x)
+ else
+ fun_l24_n696(x)
+ end
+end
+
+def fun_l23_n647(x)
+ if (x < 1)
+ fun_l24_n24(x)
+ else
+ fun_l24_n414(x)
+ end
+end
+
+def fun_l23_n648(x)
+ if (x < 1)
+ fun_l24_n778(x)
+ else
+ fun_l24_n794(x)
+ end
+end
+
+def fun_l23_n649(x)
+ if (x < 1)
+ fun_l24_n132(x)
+ else
+ fun_l24_n833(x)
+ end
+end
+
+def fun_l23_n650(x)
+ if (x < 1)
+ fun_l24_n718(x)
+ else
+ fun_l24_n327(x)
+ end
+end
+
+def fun_l23_n651(x)
+ if (x < 1)
+ fun_l24_n969(x)
+ else
+ fun_l24_n865(x)
+ end
+end
+
+def fun_l23_n652(x)
+ if (x < 1)
+ fun_l24_n904(x)
+ else
+ fun_l24_n4(x)
+ end
+end
+
+def fun_l23_n653(x)
+ if (x < 1)
+ fun_l24_n342(x)
+ else
+ fun_l24_n953(x)
+ end
+end
+
+def fun_l23_n654(x)
+ if (x < 1)
+ fun_l24_n393(x)
+ else
+ fun_l24_n175(x)
+ end
+end
+
+def fun_l23_n655(x)
+ if (x < 1)
+ fun_l24_n241(x)
+ else
+ fun_l24_n835(x)
+ end
+end
+
+def fun_l23_n656(x)
+ if (x < 1)
+ fun_l24_n326(x)
+ else
+ fun_l24_n294(x)
+ end
+end
+
+def fun_l23_n657(x)
+ if (x < 1)
+ fun_l24_n8(x)
+ else
+ fun_l24_n327(x)
+ end
+end
+
+def fun_l23_n658(x)
+ if (x < 1)
+ fun_l24_n859(x)
+ else
+ fun_l24_n138(x)
+ end
+end
+
+def fun_l23_n659(x)
+ if (x < 1)
+ fun_l24_n389(x)
+ else
+ fun_l24_n840(x)
+ end
+end
+
+def fun_l23_n660(x)
+ if (x < 1)
+ fun_l24_n171(x)
+ else
+ fun_l24_n731(x)
+ end
+end
+
+def fun_l23_n661(x)
+ if (x < 1)
+ fun_l24_n284(x)
+ else
+ fun_l24_n358(x)
+ end
+end
+
+def fun_l23_n662(x)
+ if (x < 1)
+ fun_l24_n329(x)
+ else
+ fun_l24_n459(x)
+ end
+end
+
+def fun_l23_n663(x)
+ if (x < 1)
+ fun_l24_n6(x)
+ else
+ fun_l24_n29(x)
+ end
+end
+
+def fun_l23_n664(x)
+ if (x < 1)
+ fun_l24_n324(x)
+ else
+ fun_l24_n58(x)
+ end
+end
+
+def fun_l23_n665(x)
+ if (x < 1)
+ fun_l24_n473(x)
+ else
+ fun_l24_n932(x)
+ end
+end
+
+def fun_l23_n666(x)
+ if (x < 1)
+ fun_l24_n425(x)
+ else
+ fun_l24_n49(x)
+ end
+end
+
+def fun_l23_n667(x)
+ if (x < 1)
+ fun_l24_n122(x)
+ else
+ fun_l24_n515(x)
+ end
+end
+
+def fun_l23_n668(x)
+ if (x < 1)
+ fun_l24_n883(x)
+ else
+ fun_l24_n383(x)
+ end
+end
+
+def fun_l23_n669(x)
+ if (x < 1)
+ fun_l24_n316(x)
+ else
+ fun_l24_n456(x)
+ end
+end
+
+def fun_l23_n670(x)
+ if (x < 1)
+ fun_l24_n812(x)
+ else
+ fun_l24_n625(x)
+ end
+end
+
+def fun_l23_n671(x)
+ if (x < 1)
+ fun_l24_n431(x)
+ else
+ fun_l24_n685(x)
+ end
+end
+
+def fun_l23_n672(x)
+ if (x < 1)
+ fun_l24_n68(x)
+ else
+ fun_l24_n112(x)
+ end
+end
+
+def fun_l23_n673(x)
+ if (x < 1)
+ fun_l24_n137(x)
+ else
+ fun_l24_n349(x)
+ end
+end
+
+def fun_l23_n674(x)
+ if (x < 1)
+ fun_l24_n629(x)
+ else
+ fun_l24_n165(x)
+ end
+end
+
+def fun_l23_n675(x)
+ if (x < 1)
+ fun_l24_n484(x)
+ else
+ fun_l24_n102(x)
+ end
+end
+
+def fun_l23_n676(x)
+ if (x < 1)
+ fun_l24_n641(x)
+ else
+ fun_l24_n912(x)
+ end
+end
+
+def fun_l23_n677(x)
+ if (x < 1)
+ fun_l24_n817(x)
+ else
+ fun_l24_n975(x)
+ end
+end
+
+def fun_l23_n678(x)
+ if (x < 1)
+ fun_l24_n510(x)
+ else
+ fun_l24_n346(x)
+ end
+end
+
+def fun_l23_n679(x)
+ if (x < 1)
+ fun_l24_n129(x)
+ else
+ fun_l24_n602(x)
+ end
+end
+
+def fun_l23_n680(x)
+ if (x < 1)
+ fun_l24_n991(x)
+ else
+ fun_l24_n406(x)
+ end
+end
+
+def fun_l23_n681(x)
+ if (x < 1)
+ fun_l24_n433(x)
+ else
+ fun_l24_n998(x)
+ end
+end
+
+def fun_l23_n682(x)
+ if (x < 1)
+ fun_l24_n645(x)
+ else
+ fun_l24_n275(x)
+ end
+end
+
+def fun_l23_n683(x)
+ if (x < 1)
+ fun_l24_n832(x)
+ else
+ fun_l24_n346(x)
+ end
+end
+
+def fun_l23_n684(x)
+ if (x < 1)
+ fun_l24_n769(x)
+ else
+ fun_l24_n927(x)
+ end
+end
+
+def fun_l23_n685(x)
+ if (x < 1)
+ fun_l24_n389(x)
+ else
+ fun_l24_n777(x)
+ end
+end
+
+def fun_l23_n686(x)
+ if (x < 1)
+ fun_l24_n658(x)
+ else
+ fun_l24_n184(x)
+ end
+end
+
+def fun_l23_n687(x)
+ if (x < 1)
+ fun_l24_n134(x)
+ else
+ fun_l24_n517(x)
+ end
+end
+
+def fun_l23_n688(x)
+ if (x < 1)
+ fun_l24_n49(x)
+ else
+ fun_l24_n392(x)
+ end
+end
+
+def fun_l23_n689(x)
+ if (x < 1)
+ fun_l24_n23(x)
+ else
+ fun_l24_n402(x)
+ end
+end
+
+def fun_l23_n690(x)
+ if (x < 1)
+ fun_l24_n719(x)
+ else
+ fun_l24_n529(x)
+ end
+end
+
+def fun_l23_n691(x)
+ if (x < 1)
+ fun_l24_n543(x)
+ else
+ fun_l24_n789(x)
+ end
+end
+
+def fun_l23_n692(x)
+ if (x < 1)
+ fun_l24_n850(x)
+ else
+ fun_l24_n50(x)
+ end
+end
+
+def fun_l23_n693(x)
+ if (x < 1)
+ fun_l24_n728(x)
+ else
+ fun_l24_n730(x)
+ end
+end
+
+def fun_l23_n694(x)
+ if (x < 1)
+ fun_l24_n810(x)
+ else
+ fun_l24_n999(x)
+ end
+end
+
+def fun_l23_n695(x)
+ if (x < 1)
+ fun_l24_n856(x)
+ else
+ fun_l24_n404(x)
+ end
+end
+
+def fun_l23_n696(x)
+ if (x < 1)
+ fun_l24_n405(x)
+ else
+ fun_l24_n275(x)
+ end
+end
+
+def fun_l23_n697(x)
+ if (x < 1)
+ fun_l24_n446(x)
+ else
+ fun_l24_n773(x)
+ end
+end
+
+def fun_l23_n698(x)
+ if (x < 1)
+ fun_l24_n509(x)
+ else
+ fun_l24_n146(x)
+ end
+end
+
+def fun_l23_n699(x)
+ if (x < 1)
+ fun_l24_n770(x)
+ else
+ fun_l24_n275(x)
+ end
+end
+
+def fun_l23_n700(x)
+ if (x < 1)
+ fun_l24_n222(x)
+ else
+ fun_l24_n60(x)
+ end
+end
+
+def fun_l23_n701(x)
+ if (x < 1)
+ fun_l24_n380(x)
+ else
+ fun_l24_n654(x)
+ end
+end
+
+def fun_l23_n702(x)
+ if (x < 1)
+ fun_l24_n417(x)
+ else
+ fun_l24_n221(x)
+ end
+end
+
+def fun_l23_n703(x)
+ if (x < 1)
+ fun_l24_n283(x)
+ else
+ fun_l24_n171(x)
+ end
+end
+
+def fun_l23_n704(x)
+ if (x < 1)
+ fun_l24_n822(x)
+ else
+ fun_l24_n72(x)
+ end
+end
+
+def fun_l23_n705(x)
+ if (x < 1)
+ fun_l24_n171(x)
+ else
+ fun_l24_n258(x)
+ end
+end
+
+def fun_l23_n706(x)
+ if (x < 1)
+ fun_l24_n147(x)
+ else
+ fun_l24_n518(x)
+ end
+end
+
+def fun_l23_n707(x)
+ if (x < 1)
+ fun_l24_n479(x)
+ else
+ fun_l24_n267(x)
+ end
+end
+
+def fun_l23_n708(x)
+ if (x < 1)
+ fun_l24_n424(x)
+ else
+ fun_l24_n517(x)
+ end
+end
+
+def fun_l23_n709(x)
+ if (x < 1)
+ fun_l24_n816(x)
+ else
+ fun_l24_n329(x)
+ end
+end
+
+def fun_l23_n710(x)
+ if (x < 1)
+ fun_l24_n870(x)
+ else
+ fun_l24_n185(x)
+ end
+end
+
+def fun_l23_n711(x)
+ if (x < 1)
+ fun_l24_n726(x)
+ else
+ fun_l24_n950(x)
+ end
+end
+
+def fun_l23_n712(x)
+ if (x < 1)
+ fun_l24_n473(x)
+ else
+ fun_l24_n179(x)
+ end
+end
+
+def fun_l23_n713(x)
+ if (x < 1)
+ fun_l24_n345(x)
+ else
+ fun_l24_n872(x)
+ end
+end
+
+def fun_l23_n714(x)
+ if (x < 1)
+ fun_l24_n757(x)
+ else
+ fun_l24_n364(x)
+ end
+end
+
+def fun_l23_n715(x)
+ if (x < 1)
+ fun_l24_n91(x)
+ else
+ fun_l24_n999(x)
+ end
+end
+
+def fun_l23_n716(x)
+ if (x < 1)
+ fun_l24_n308(x)
+ else
+ fun_l24_n281(x)
+ end
+end
+
+def fun_l23_n717(x)
+ if (x < 1)
+ fun_l24_n855(x)
+ else
+ fun_l24_n175(x)
+ end
+end
+
+def fun_l23_n718(x)
+ if (x < 1)
+ fun_l24_n251(x)
+ else
+ fun_l24_n532(x)
+ end
+end
+
+def fun_l23_n719(x)
+ if (x < 1)
+ fun_l24_n261(x)
+ else
+ fun_l24_n755(x)
+ end
+end
+
+def fun_l23_n720(x)
+ if (x < 1)
+ fun_l24_n182(x)
+ else
+ fun_l24_n115(x)
+ end
+end
+
+def fun_l23_n721(x)
+ if (x < 1)
+ fun_l24_n648(x)
+ else
+ fun_l24_n728(x)
+ end
+end
+
+def fun_l23_n722(x)
+ if (x < 1)
+ fun_l24_n552(x)
+ else
+ fun_l24_n549(x)
+ end
+end
+
+def fun_l23_n723(x)
+ if (x < 1)
+ fun_l24_n24(x)
+ else
+ fun_l24_n794(x)
+ end
+end
+
+def fun_l23_n724(x)
+ if (x < 1)
+ fun_l24_n242(x)
+ else
+ fun_l24_n980(x)
+ end
+end
+
+def fun_l23_n725(x)
+ if (x < 1)
+ fun_l24_n931(x)
+ else
+ fun_l24_n711(x)
+ end
+end
+
+def fun_l23_n726(x)
+ if (x < 1)
+ fun_l24_n659(x)
+ else
+ fun_l24_n981(x)
+ end
+end
+
+def fun_l23_n727(x)
+ if (x < 1)
+ fun_l24_n258(x)
+ else
+ fun_l24_n915(x)
+ end
+end
+
+def fun_l23_n728(x)
+ if (x < 1)
+ fun_l24_n544(x)
+ else
+ fun_l24_n89(x)
+ end
+end
+
+def fun_l23_n729(x)
+ if (x < 1)
+ fun_l24_n497(x)
+ else
+ fun_l24_n320(x)
+ end
+end
+
+def fun_l23_n730(x)
+ if (x < 1)
+ fun_l24_n936(x)
+ else
+ fun_l24_n209(x)
+ end
+end
+
+def fun_l23_n731(x)
+ if (x < 1)
+ fun_l24_n763(x)
+ else
+ fun_l24_n836(x)
+ end
+end
+
+def fun_l23_n732(x)
+ if (x < 1)
+ fun_l24_n60(x)
+ else
+ fun_l24_n867(x)
+ end
+end
+
+def fun_l23_n733(x)
+ if (x < 1)
+ fun_l24_n146(x)
+ else
+ fun_l24_n294(x)
+ end
+end
+
+def fun_l23_n734(x)
+ if (x < 1)
+ fun_l24_n905(x)
+ else
+ fun_l24_n463(x)
+ end
+end
+
+def fun_l23_n735(x)
+ if (x < 1)
+ fun_l24_n566(x)
+ else
+ fun_l24_n240(x)
+ end
+end
+
+def fun_l23_n736(x)
+ if (x < 1)
+ fun_l24_n321(x)
+ else
+ fun_l24_n597(x)
+ end
+end
+
+def fun_l23_n737(x)
+ if (x < 1)
+ fun_l24_n169(x)
+ else
+ fun_l24_n201(x)
+ end
+end
+
+def fun_l23_n738(x)
+ if (x < 1)
+ fun_l24_n157(x)
+ else
+ fun_l24_n349(x)
+ end
+end
+
+def fun_l23_n739(x)
+ if (x < 1)
+ fun_l24_n503(x)
+ else
+ fun_l24_n342(x)
+ end
+end
+
+def fun_l23_n740(x)
+ if (x < 1)
+ fun_l24_n974(x)
+ else
+ fun_l24_n467(x)
+ end
+end
+
+def fun_l23_n741(x)
+ if (x < 1)
+ fun_l24_n566(x)
+ else
+ fun_l24_n162(x)
+ end
+end
+
+def fun_l23_n742(x)
+ if (x < 1)
+ fun_l24_n19(x)
+ else
+ fun_l24_n750(x)
+ end
+end
+
+def fun_l23_n743(x)
+ if (x < 1)
+ fun_l24_n409(x)
+ else
+ fun_l24_n362(x)
+ end
+end
+
+def fun_l23_n744(x)
+ if (x < 1)
+ fun_l24_n281(x)
+ else
+ fun_l24_n439(x)
+ end
+end
+
+def fun_l23_n745(x)
+ if (x < 1)
+ fun_l24_n808(x)
+ else
+ fun_l24_n794(x)
+ end
+end
+
+def fun_l23_n746(x)
+ if (x < 1)
+ fun_l24_n173(x)
+ else
+ fun_l24_n892(x)
+ end
+end
+
+def fun_l23_n747(x)
+ if (x < 1)
+ fun_l24_n762(x)
+ else
+ fun_l24_n339(x)
+ end
+end
+
+def fun_l23_n748(x)
+ if (x < 1)
+ fun_l24_n319(x)
+ else
+ fun_l24_n753(x)
+ end
+end
+
+def fun_l23_n749(x)
+ if (x < 1)
+ fun_l24_n546(x)
+ else
+ fun_l24_n727(x)
+ end
+end
+
+def fun_l23_n750(x)
+ if (x < 1)
+ fun_l24_n699(x)
+ else
+ fun_l24_n173(x)
+ end
+end
+
+def fun_l23_n751(x)
+ if (x < 1)
+ fun_l24_n280(x)
+ else
+ fun_l24_n468(x)
+ end
+end
+
+def fun_l23_n752(x)
+ if (x < 1)
+ fun_l24_n910(x)
+ else
+ fun_l24_n500(x)
+ end
+end
+
+def fun_l23_n753(x)
+ if (x < 1)
+ fun_l24_n463(x)
+ else
+ fun_l24_n81(x)
+ end
+end
+
+def fun_l23_n754(x)
+ if (x < 1)
+ fun_l24_n769(x)
+ else
+ fun_l24_n584(x)
+ end
+end
+
+def fun_l23_n755(x)
+ if (x < 1)
+ fun_l24_n702(x)
+ else
+ fun_l24_n337(x)
+ end
+end
+
+def fun_l23_n756(x)
+ if (x < 1)
+ fun_l24_n12(x)
+ else
+ fun_l24_n335(x)
+ end
+end
+
+def fun_l23_n757(x)
+ if (x < 1)
+ fun_l24_n100(x)
+ else
+ fun_l24_n743(x)
+ end
+end
+
+def fun_l23_n758(x)
+ if (x < 1)
+ fun_l24_n865(x)
+ else
+ fun_l24_n594(x)
+ end
+end
+
+def fun_l23_n759(x)
+ if (x < 1)
+ fun_l24_n948(x)
+ else
+ fun_l24_n32(x)
+ end
+end
+
+def fun_l23_n760(x)
+ if (x < 1)
+ fun_l24_n487(x)
+ else
+ fun_l24_n72(x)
+ end
+end
+
+def fun_l23_n761(x)
+ if (x < 1)
+ fun_l24_n566(x)
+ else
+ fun_l24_n290(x)
+ end
+end
+
+def fun_l23_n762(x)
+ if (x < 1)
+ fun_l24_n896(x)
+ else
+ fun_l24_n840(x)
+ end
+end
+
+def fun_l23_n763(x)
+ if (x < 1)
+ fun_l24_n175(x)
+ else
+ fun_l24_n50(x)
+ end
+end
+
+def fun_l23_n764(x)
+ if (x < 1)
+ fun_l24_n107(x)
+ else
+ fun_l24_n446(x)
+ end
+end
+
+def fun_l23_n765(x)
+ if (x < 1)
+ fun_l24_n238(x)
+ else
+ fun_l24_n944(x)
+ end
+end
+
+def fun_l23_n766(x)
+ if (x < 1)
+ fun_l24_n999(x)
+ else
+ fun_l24_n419(x)
+ end
+end
+
+def fun_l23_n767(x)
+ if (x < 1)
+ fun_l24_n476(x)
+ else
+ fun_l24_n976(x)
+ end
+end
+
+def fun_l23_n768(x)
+ if (x < 1)
+ fun_l24_n328(x)
+ else
+ fun_l24_n782(x)
+ end
+end
+
+def fun_l23_n769(x)
+ if (x < 1)
+ fun_l24_n875(x)
+ else
+ fun_l24_n847(x)
+ end
+end
+
+def fun_l23_n770(x)
+ if (x < 1)
+ fun_l24_n391(x)
+ else
+ fun_l24_n123(x)
+ end
+end
+
+def fun_l23_n771(x)
+ if (x < 1)
+ fun_l24_n968(x)
+ else
+ fun_l24_n915(x)
+ end
+end
+
+def fun_l23_n772(x)
+ if (x < 1)
+ fun_l24_n883(x)
+ else
+ fun_l24_n604(x)
+ end
+end
+
+def fun_l23_n773(x)
+ if (x < 1)
+ fun_l24_n307(x)
+ else
+ fun_l24_n70(x)
+ end
+end
+
+def fun_l23_n774(x)
+ if (x < 1)
+ fun_l24_n615(x)
+ else
+ fun_l24_n115(x)
+ end
+end
+
+def fun_l23_n775(x)
+ if (x < 1)
+ fun_l24_n250(x)
+ else
+ fun_l24_n178(x)
+ end
+end
+
+def fun_l23_n776(x)
+ if (x < 1)
+ fun_l24_n982(x)
+ else
+ fun_l24_n570(x)
+ end
+end
+
+def fun_l23_n777(x)
+ if (x < 1)
+ fun_l24_n317(x)
+ else
+ fun_l24_n170(x)
+ end
+end
+
+def fun_l23_n778(x)
+ if (x < 1)
+ fun_l24_n895(x)
+ else
+ fun_l24_n147(x)
+ end
+end
+
+def fun_l23_n779(x)
+ if (x < 1)
+ fun_l24_n393(x)
+ else
+ fun_l24_n513(x)
+ end
+end
+
+def fun_l23_n780(x)
+ if (x < 1)
+ fun_l24_n635(x)
+ else
+ fun_l24_n161(x)
+ end
+end
+
+def fun_l23_n781(x)
+ if (x < 1)
+ fun_l24_n189(x)
+ else
+ fun_l24_n225(x)
+ end
+end
+
+def fun_l23_n782(x)
+ if (x < 1)
+ fun_l24_n205(x)
+ else
+ fun_l24_n620(x)
+ end
+end
+
+def fun_l23_n783(x)
+ if (x < 1)
+ fun_l24_n203(x)
+ else
+ fun_l24_n58(x)
+ end
+end
+
+def fun_l23_n784(x)
+ if (x < 1)
+ fun_l24_n198(x)
+ else
+ fun_l24_n948(x)
+ end
+end
+
+def fun_l23_n785(x)
+ if (x < 1)
+ fun_l24_n60(x)
+ else
+ fun_l24_n406(x)
+ end
+end
+
+def fun_l23_n786(x)
+ if (x < 1)
+ fun_l24_n538(x)
+ else
+ fun_l24_n992(x)
+ end
+end
+
+def fun_l23_n787(x)
+ if (x < 1)
+ fun_l24_n83(x)
+ else
+ fun_l24_n544(x)
+ end
+end
+
+def fun_l23_n788(x)
+ if (x < 1)
+ fun_l24_n964(x)
+ else
+ fun_l24_n939(x)
+ end
+end
+
+def fun_l23_n789(x)
+ if (x < 1)
+ fun_l24_n120(x)
+ else
+ fun_l24_n843(x)
+ end
+end
+
+def fun_l23_n790(x)
+ if (x < 1)
+ fun_l24_n772(x)
+ else
+ fun_l24_n111(x)
+ end
+end
+
+def fun_l23_n791(x)
+ if (x < 1)
+ fun_l24_n983(x)
+ else
+ fun_l24_n934(x)
+ end
+end
+
+def fun_l23_n792(x)
+ if (x < 1)
+ fun_l24_n475(x)
+ else
+ fun_l24_n532(x)
+ end
+end
+
+def fun_l23_n793(x)
+ if (x < 1)
+ fun_l24_n316(x)
+ else
+ fun_l24_n400(x)
+ end
+end
+
+def fun_l23_n794(x)
+ if (x < 1)
+ fun_l24_n103(x)
+ else
+ fun_l24_n19(x)
+ end
+end
+
+def fun_l23_n795(x)
+ if (x < 1)
+ fun_l24_n371(x)
+ else
+ fun_l24_n176(x)
+ end
+end
+
+def fun_l23_n796(x)
+ if (x < 1)
+ fun_l24_n469(x)
+ else
+ fun_l24_n958(x)
+ end
+end
+
+def fun_l23_n797(x)
+ if (x < 1)
+ fun_l24_n706(x)
+ else
+ fun_l24_n953(x)
+ end
+end
+
+def fun_l23_n798(x)
+ if (x < 1)
+ fun_l24_n384(x)
+ else
+ fun_l24_n439(x)
+ end
+end
+
+def fun_l23_n799(x)
+ if (x < 1)
+ fun_l24_n352(x)
+ else
+ fun_l24_n36(x)
+ end
+end
+
+def fun_l23_n800(x)
+ if (x < 1)
+ fun_l24_n390(x)
+ else
+ fun_l24_n963(x)
+ end
+end
+
+def fun_l23_n801(x)
+ if (x < 1)
+ fun_l24_n470(x)
+ else
+ fun_l24_n818(x)
+ end
+end
+
+def fun_l23_n802(x)
+ if (x < 1)
+ fun_l24_n262(x)
+ else
+ fun_l24_n893(x)
+ end
+end
+
+def fun_l23_n803(x)
+ if (x < 1)
+ fun_l24_n118(x)
+ else
+ fun_l24_n684(x)
+ end
+end
+
+def fun_l23_n804(x)
+ if (x < 1)
+ fun_l24_n484(x)
+ else
+ fun_l24_n520(x)
+ end
+end
+
+def fun_l23_n805(x)
+ if (x < 1)
+ fun_l24_n370(x)
+ else
+ fun_l24_n80(x)
+ end
+end
+
+def fun_l23_n806(x)
+ if (x < 1)
+ fun_l24_n326(x)
+ else
+ fun_l24_n436(x)
+ end
+end
+
+def fun_l23_n807(x)
+ if (x < 1)
+ fun_l24_n490(x)
+ else
+ fun_l24_n811(x)
+ end
+end
+
+def fun_l23_n808(x)
+ if (x < 1)
+ fun_l24_n447(x)
+ else
+ fun_l24_n150(x)
+ end
+end
+
+def fun_l23_n809(x)
+ if (x < 1)
+ fun_l24_n339(x)
+ else
+ fun_l24_n367(x)
+ end
+end
+
+def fun_l23_n810(x)
+ if (x < 1)
+ fun_l24_n221(x)
+ else
+ fun_l24_n505(x)
+ end
+end
+
+def fun_l23_n811(x)
+ if (x < 1)
+ fun_l24_n637(x)
+ else
+ fun_l24_n101(x)
+ end
+end
+
+def fun_l23_n812(x)
+ if (x < 1)
+ fun_l24_n83(x)
+ else
+ fun_l24_n538(x)
+ end
+end
+
+def fun_l23_n813(x)
+ if (x < 1)
+ fun_l24_n927(x)
+ else
+ fun_l24_n513(x)
+ end
+end
+
+def fun_l23_n814(x)
+ if (x < 1)
+ fun_l24_n496(x)
+ else
+ fun_l24_n290(x)
+ end
+end
+
+def fun_l23_n815(x)
+ if (x < 1)
+ fun_l24_n640(x)
+ else
+ fun_l24_n796(x)
+ end
+end
+
+def fun_l23_n816(x)
+ if (x < 1)
+ fun_l24_n999(x)
+ else
+ fun_l24_n54(x)
+ end
+end
+
+def fun_l23_n817(x)
+ if (x < 1)
+ fun_l24_n162(x)
+ else
+ fun_l24_n617(x)
+ end
+end
+
+def fun_l23_n818(x)
+ if (x < 1)
+ fun_l24_n118(x)
+ else
+ fun_l24_n187(x)
+ end
+end
+
+def fun_l23_n819(x)
+ if (x < 1)
+ fun_l24_n334(x)
+ else
+ fun_l24_n901(x)
+ end
+end
+
+def fun_l23_n820(x)
+ if (x < 1)
+ fun_l24_n939(x)
+ else
+ fun_l24_n896(x)
+ end
+end
+
+def fun_l23_n821(x)
+ if (x < 1)
+ fun_l24_n970(x)
+ else
+ fun_l24_n725(x)
+ end
+end
+
+def fun_l23_n822(x)
+ if (x < 1)
+ fun_l24_n357(x)
+ else
+ fun_l24_n771(x)
+ end
+end
+
+def fun_l23_n823(x)
+ if (x < 1)
+ fun_l24_n8(x)
+ else
+ fun_l24_n214(x)
+ end
+end
+
+def fun_l23_n824(x)
+ if (x < 1)
+ fun_l24_n412(x)
+ else
+ fun_l24_n145(x)
+ end
+end
+
+def fun_l23_n825(x)
+ if (x < 1)
+ fun_l24_n218(x)
+ else
+ fun_l24_n700(x)
+ end
+end
+
+def fun_l23_n826(x)
+ if (x < 1)
+ fun_l24_n945(x)
+ else
+ fun_l24_n523(x)
+ end
+end
+
+def fun_l23_n827(x)
+ if (x < 1)
+ fun_l24_n251(x)
+ else
+ fun_l24_n854(x)
+ end
+end
+
+def fun_l23_n828(x)
+ if (x < 1)
+ fun_l24_n704(x)
+ else
+ fun_l24_n879(x)
+ end
+end
+
+def fun_l23_n829(x)
+ if (x < 1)
+ fun_l24_n161(x)
+ else
+ fun_l24_n529(x)
+ end
+end
+
+def fun_l23_n830(x)
+ if (x < 1)
+ fun_l24_n751(x)
+ else
+ fun_l24_n409(x)
+ end
+end
+
+def fun_l23_n831(x)
+ if (x < 1)
+ fun_l24_n883(x)
+ else
+ fun_l24_n1(x)
+ end
+end
+
+def fun_l23_n832(x)
+ if (x < 1)
+ fun_l24_n135(x)
+ else
+ fun_l24_n738(x)
+ end
+end
+
+def fun_l23_n833(x)
+ if (x < 1)
+ fun_l24_n507(x)
+ else
+ fun_l24_n727(x)
+ end
+end
+
+def fun_l23_n834(x)
+ if (x < 1)
+ fun_l24_n677(x)
+ else
+ fun_l24_n602(x)
+ end
+end
+
+def fun_l23_n835(x)
+ if (x < 1)
+ fun_l24_n197(x)
+ else
+ fun_l24_n481(x)
+ end
+end
+
+def fun_l23_n836(x)
+ if (x < 1)
+ fun_l24_n39(x)
+ else
+ fun_l24_n149(x)
+ end
+end
+
+def fun_l23_n837(x)
+ if (x < 1)
+ fun_l24_n950(x)
+ else
+ fun_l24_n455(x)
+ end
+end
+
+def fun_l23_n838(x)
+ if (x < 1)
+ fun_l24_n718(x)
+ else
+ fun_l24_n264(x)
+ end
+end
+
+def fun_l23_n839(x)
+ if (x < 1)
+ fun_l24_n831(x)
+ else
+ fun_l24_n576(x)
+ end
+end
+
+def fun_l23_n840(x)
+ if (x < 1)
+ fun_l24_n813(x)
+ else
+ fun_l24_n564(x)
+ end
+end
+
+def fun_l23_n841(x)
+ if (x < 1)
+ fun_l24_n537(x)
+ else
+ fun_l24_n880(x)
+ end
+end
+
+def fun_l23_n842(x)
+ if (x < 1)
+ fun_l24_n958(x)
+ else
+ fun_l24_n963(x)
+ end
+end
+
+def fun_l23_n843(x)
+ if (x < 1)
+ fun_l24_n879(x)
+ else
+ fun_l24_n281(x)
+ end
+end
+
+def fun_l23_n844(x)
+ if (x < 1)
+ fun_l24_n138(x)
+ else
+ fun_l24_n562(x)
+ end
+end
+
+def fun_l23_n845(x)
+ if (x < 1)
+ fun_l24_n804(x)
+ else
+ fun_l24_n283(x)
+ end
+end
+
+def fun_l23_n846(x)
+ if (x < 1)
+ fun_l24_n253(x)
+ else
+ fun_l24_n339(x)
+ end
+end
+
+def fun_l23_n847(x)
+ if (x < 1)
+ fun_l24_n99(x)
+ else
+ fun_l24_n623(x)
+ end
+end
+
+def fun_l23_n848(x)
+ if (x < 1)
+ fun_l24_n955(x)
+ else
+ fun_l24_n121(x)
+ end
+end
+
+def fun_l23_n849(x)
+ if (x < 1)
+ fun_l24_n437(x)
+ else
+ fun_l24_n387(x)
+ end
+end
+
+def fun_l23_n850(x)
+ if (x < 1)
+ fun_l24_n19(x)
+ else
+ fun_l24_n790(x)
+ end
+end
+
+def fun_l23_n851(x)
+ if (x < 1)
+ fun_l24_n11(x)
+ else
+ fun_l24_n931(x)
+ end
+end
+
+def fun_l23_n852(x)
+ if (x < 1)
+ fun_l24_n506(x)
+ else
+ fun_l24_n162(x)
+ end
+end
+
+def fun_l23_n853(x)
+ if (x < 1)
+ fun_l24_n262(x)
+ else
+ fun_l24_n1(x)
+ end
+end
+
+def fun_l23_n854(x)
+ if (x < 1)
+ fun_l24_n275(x)
+ else
+ fun_l24_n549(x)
+ end
+end
+
+def fun_l23_n855(x)
+ if (x < 1)
+ fun_l24_n865(x)
+ else
+ fun_l24_n472(x)
+ end
+end
+
+def fun_l23_n856(x)
+ if (x < 1)
+ fun_l24_n270(x)
+ else
+ fun_l24_n312(x)
+ end
+end
+
+def fun_l23_n857(x)
+ if (x < 1)
+ fun_l24_n261(x)
+ else
+ fun_l24_n240(x)
+ end
+end
+
+def fun_l23_n858(x)
+ if (x < 1)
+ fun_l24_n166(x)
+ else
+ fun_l24_n996(x)
+ end
+end
+
+def fun_l23_n859(x)
+ if (x < 1)
+ fun_l24_n653(x)
+ else
+ fun_l24_n464(x)
+ end
+end
+
+def fun_l23_n860(x)
+ if (x < 1)
+ fun_l24_n446(x)
+ else
+ fun_l24_n706(x)
+ end
+end
+
+def fun_l23_n861(x)
+ if (x < 1)
+ fun_l24_n744(x)
+ else
+ fun_l24_n53(x)
+ end
+end
+
+def fun_l23_n862(x)
+ if (x < 1)
+ fun_l24_n983(x)
+ else
+ fun_l24_n188(x)
+ end
+end
+
+def fun_l23_n863(x)
+ if (x < 1)
+ fun_l24_n399(x)
+ else
+ fun_l24_n582(x)
+ end
+end
+
+def fun_l23_n864(x)
+ if (x < 1)
+ fun_l24_n392(x)
+ else
+ fun_l24_n937(x)
+ end
+end
+
+def fun_l23_n865(x)
+ if (x < 1)
+ fun_l24_n495(x)
+ else
+ fun_l24_n557(x)
+ end
+end
+
+def fun_l23_n866(x)
+ if (x < 1)
+ fun_l24_n94(x)
+ else
+ fun_l24_n295(x)
+ end
+end
+
+def fun_l23_n867(x)
+ if (x < 1)
+ fun_l24_n628(x)
+ else
+ fun_l24_n432(x)
+ end
+end
+
+def fun_l23_n868(x)
+ if (x < 1)
+ fun_l24_n386(x)
+ else
+ fun_l24_n385(x)
+ end
+end
+
+def fun_l23_n869(x)
+ if (x < 1)
+ fun_l24_n376(x)
+ else
+ fun_l24_n469(x)
+ end
+end
+
+def fun_l23_n870(x)
+ if (x < 1)
+ fun_l24_n74(x)
+ else
+ fun_l24_n712(x)
+ end
+end
+
+def fun_l23_n871(x)
+ if (x < 1)
+ fun_l24_n72(x)
+ else
+ fun_l24_n642(x)
+ end
+end
+
+def fun_l23_n872(x)
+ if (x < 1)
+ fun_l24_n937(x)
+ else
+ fun_l24_n751(x)
+ end
+end
+
+def fun_l23_n873(x)
+ if (x < 1)
+ fun_l24_n385(x)
+ else
+ fun_l24_n404(x)
+ end
+end
+
+def fun_l23_n874(x)
+ if (x < 1)
+ fun_l24_n336(x)
+ else
+ fun_l24_n226(x)
+ end
+end
+
+def fun_l23_n875(x)
+ if (x < 1)
+ fun_l24_n289(x)
+ else
+ fun_l24_n989(x)
+ end
+end
+
+def fun_l23_n876(x)
+ if (x < 1)
+ fun_l24_n45(x)
+ else
+ fun_l24_n279(x)
+ end
+end
+
+def fun_l23_n877(x)
+ if (x < 1)
+ fun_l24_n683(x)
+ else
+ fun_l24_n342(x)
+ end
+end
+
+def fun_l23_n878(x)
+ if (x < 1)
+ fun_l24_n279(x)
+ else
+ fun_l24_n600(x)
+ end
+end
+
+def fun_l23_n879(x)
+ if (x < 1)
+ fun_l24_n82(x)
+ else
+ fun_l24_n177(x)
+ end
+end
+
+def fun_l23_n880(x)
+ if (x < 1)
+ fun_l24_n167(x)
+ else
+ fun_l24_n912(x)
+ end
+end
+
+def fun_l23_n881(x)
+ if (x < 1)
+ fun_l24_n311(x)
+ else
+ fun_l24_n634(x)
+ end
+end
+
+def fun_l23_n882(x)
+ if (x < 1)
+ fun_l24_n127(x)
+ else
+ fun_l24_n661(x)
+ end
+end
+
+def fun_l23_n883(x)
+ if (x < 1)
+ fun_l24_n199(x)
+ else
+ fun_l24_n999(x)
+ end
+end
+
+def fun_l23_n884(x)
+ if (x < 1)
+ fun_l24_n525(x)
+ else
+ fun_l24_n948(x)
+ end
+end
+
+def fun_l23_n885(x)
+ if (x < 1)
+ fun_l24_n590(x)
+ else
+ fun_l24_n822(x)
+ end
+end
+
+def fun_l23_n886(x)
+ if (x < 1)
+ fun_l24_n811(x)
+ else
+ fun_l24_n975(x)
+ end
+end
+
+def fun_l23_n887(x)
+ if (x < 1)
+ fun_l24_n446(x)
+ else
+ fun_l24_n710(x)
+ end
+end
+
+def fun_l23_n888(x)
+ if (x < 1)
+ fun_l24_n31(x)
+ else
+ fun_l24_n92(x)
+ end
+end
+
+def fun_l23_n889(x)
+ if (x < 1)
+ fun_l24_n535(x)
+ else
+ fun_l24_n819(x)
+ end
+end
+
+def fun_l23_n890(x)
+ if (x < 1)
+ fun_l24_n526(x)
+ else
+ fun_l24_n207(x)
+ end
+end
+
+def fun_l23_n891(x)
+ if (x < 1)
+ fun_l24_n752(x)
+ else
+ fun_l24_n994(x)
+ end
+end
+
+def fun_l23_n892(x)
+ if (x < 1)
+ fun_l24_n758(x)
+ else
+ fun_l24_n292(x)
+ end
+end
+
+def fun_l23_n893(x)
+ if (x < 1)
+ fun_l24_n106(x)
+ else
+ fun_l24_n742(x)
+ end
+end
+
+def fun_l23_n894(x)
+ if (x < 1)
+ fun_l24_n385(x)
+ else
+ fun_l24_n562(x)
+ end
+end
+
+def fun_l23_n895(x)
+ if (x < 1)
+ fun_l24_n565(x)
+ else
+ fun_l24_n242(x)
+ end
+end
+
+def fun_l23_n896(x)
+ if (x < 1)
+ fun_l24_n570(x)
+ else
+ fun_l24_n241(x)
+ end
+end
+
+def fun_l23_n897(x)
+ if (x < 1)
+ fun_l24_n840(x)
+ else
+ fun_l24_n681(x)
+ end
+end
+
+def fun_l23_n898(x)
+ if (x < 1)
+ fun_l24_n524(x)
+ else
+ fun_l24_n9(x)
+ end
+end
+
+def fun_l23_n899(x)
+ if (x < 1)
+ fun_l24_n161(x)
+ else
+ fun_l24_n795(x)
+ end
+end
+
+def fun_l23_n900(x)
+ if (x < 1)
+ fun_l24_n64(x)
+ else
+ fun_l24_n447(x)
+ end
+end
+
+def fun_l23_n901(x)
+ if (x < 1)
+ fun_l24_n676(x)
+ else
+ fun_l24_n286(x)
+ end
+end
+
+def fun_l23_n902(x)
+ if (x < 1)
+ fun_l24_n623(x)
+ else
+ fun_l24_n298(x)
+ end
+end
+
+def fun_l23_n903(x)
+ if (x < 1)
+ fun_l24_n795(x)
+ else
+ fun_l24_n646(x)
+ end
+end
+
+def fun_l23_n904(x)
+ if (x < 1)
+ fun_l24_n746(x)
+ else
+ fun_l24_n7(x)
+ end
+end
+
+def fun_l23_n905(x)
+ if (x < 1)
+ fun_l24_n311(x)
+ else
+ fun_l24_n417(x)
+ end
+end
+
+def fun_l23_n906(x)
+ if (x < 1)
+ fun_l24_n338(x)
+ else
+ fun_l24_n592(x)
+ end
+end
+
+def fun_l23_n907(x)
+ if (x < 1)
+ fun_l24_n667(x)
+ else
+ fun_l24_n370(x)
+ end
+end
+
+def fun_l23_n908(x)
+ if (x < 1)
+ fun_l24_n444(x)
+ else
+ fun_l24_n703(x)
+ end
+end
+
+def fun_l23_n909(x)
+ if (x < 1)
+ fun_l24_n325(x)
+ else
+ fun_l24_n977(x)
+ end
+end
+
+def fun_l23_n910(x)
+ if (x < 1)
+ fun_l24_n994(x)
+ else
+ fun_l24_n765(x)
+ end
+end
+
+def fun_l23_n911(x)
+ if (x < 1)
+ fun_l24_n327(x)
+ else
+ fun_l24_n657(x)
+ end
+end
+
+def fun_l23_n912(x)
+ if (x < 1)
+ fun_l24_n932(x)
+ else
+ fun_l24_n769(x)
+ end
+end
+
+def fun_l23_n913(x)
+ if (x < 1)
+ fun_l24_n263(x)
+ else
+ fun_l24_n729(x)
+ end
+end
+
+def fun_l23_n914(x)
+ if (x < 1)
+ fun_l24_n248(x)
+ else
+ fun_l24_n412(x)
+ end
+end
+
+def fun_l23_n915(x)
+ if (x < 1)
+ fun_l24_n793(x)
+ else
+ fun_l24_n329(x)
+ end
+end
+
+def fun_l23_n916(x)
+ if (x < 1)
+ fun_l24_n7(x)
+ else
+ fun_l24_n460(x)
+ end
+end
+
+def fun_l23_n917(x)
+ if (x < 1)
+ fun_l24_n612(x)
+ else
+ fun_l24_n79(x)
+ end
+end
+
+def fun_l23_n918(x)
+ if (x < 1)
+ fun_l24_n450(x)
+ else
+ fun_l24_n950(x)
+ end
+end
+
+def fun_l23_n919(x)
+ if (x < 1)
+ fun_l24_n72(x)
+ else
+ fun_l24_n550(x)
+ end
+end
+
+def fun_l23_n920(x)
+ if (x < 1)
+ fun_l24_n73(x)
+ else
+ fun_l24_n339(x)
+ end
+end
+
+def fun_l23_n921(x)
+ if (x < 1)
+ fun_l24_n6(x)
+ else
+ fun_l24_n865(x)
+ end
+end
+
+def fun_l23_n922(x)
+ if (x < 1)
+ fun_l24_n507(x)
+ else
+ fun_l24_n475(x)
+ end
+end
+
+def fun_l23_n923(x)
+ if (x < 1)
+ fun_l24_n579(x)
+ else
+ fun_l24_n832(x)
+ end
+end
+
+def fun_l23_n924(x)
+ if (x < 1)
+ fun_l24_n681(x)
+ else
+ fun_l24_n253(x)
+ end
+end
+
+def fun_l23_n925(x)
+ if (x < 1)
+ fun_l24_n611(x)
+ else
+ fun_l24_n831(x)
+ end
+end
+
+def fun_l23_n926(x)
+ if (x < 1)
+ fun_l24_n371(x)
+ else
+ fun_l24_n236(x)
+ end
+end
+
+def fun_l23_n927(x)
+ if (x < 1)
+ fun_l24_n941(x)
+ else
+ fun_l24_n905(x)
+ end
+end
+
+def fun_l23_n928(x)
+ if (x < 1)
+ fun_l24_n616(x)
+ else
+ fun_l24_n421(x)
+ end
+end
+
+def fun_l23_n929(x)
+ if (x < 1)
+ fun_l24_n469(x)
+ else
+ fun_l24_n405(x)
+ end
+end
+
+def fun_l23_n930(x)
+ if (x < 1)
+ fun_l24_n584(x)
+ else
+ fun_l24_n694(x)
+ end
+end
+
+def fun_l23_n931(x)
+ if (x < 1)
+ fun_l24_n530(x)
+ else
+ fun_l24_n112(x)
+ end
+end
+
+def fun_l23_n932(x)
+ if (x < 1)
+ fun_l24_n115(x)
+ else
+ fun_l24_n667(x)
+ end
+end
+
+def fun_l23_n933(x)
+ if (x < 1)
+ fun_l24_n23(x)
+ else
+ fun_l24_n68(x)
+ end
+end
+
+def fun_l23_n934(x)
+ if (x < 1)
+ fun_l24_n215(x)
+ else
+ fun_l24_n459(x)
+ end
+end
+
+def fun_l23_n935(x)
+ if (x < 1)
+ fun_l24_n533(x)
+ else
+ fun_l24_n882(x)
+ end
+end
+
+def fun_l23_n936(x)
+ if (x < 1)
+ fun_l24_n918(x)
+ else
+ fun_l24_n522(x)
+ end
+end
+
+def fun_l23_n937(x)
+ if (x < 1)
+ fun_l24_n472(x)
+ else
+ fun_l24_n322(x)
+ end
+end
+
+def fun_l23_n938(x)
+ if (x < 1)
+ fun_l24_n528(x)
+ else
+ fun_l24_n937(x)
+ end
+end
+
+def fun_l23_n939(x)
+ if (x < 1)
+ fun_l24_n426(x)
+ else
+ fun_l24_n904(x)
+ end
+end
+
+def fun_l23_n940(x)
+ if (x < 1)
+ fun_l24_n259(x)
+ else
+ fun_l24_n350(x)
+ end
+end
+
+def fun_l23_n941(x)
+ if (x < 1)
+ fun_l24_n770(x)
+ else
+ fun_l24_n449(x)
+ end
+end
+
+def fun_l23_n942(x)
+ if (x < 1)
+ fun_l24_n159(x)
+ else
+ fun_l24_n312(x)
+ end
+end
+
+def fun_l23_n943(x)
+ if (x < 1)
+ fun_l24_n168(x)
+ else
+ fun_l24_n820(x)
+ end
+end
+
+def fun_l23_n944(x)
+ if (x < 1)
+ fun_l24_n861(x)
+ else
+ fun_l24_n395(x)
+ end
+end
+
+def fun_l23_n945(x)
+ if (x < 1)
+ fun_l24_n802(x)
+ else
+ fun_l24_n651(x)
+ end
+end
+
+def fun_l23_n946(x)
+ if (x < 1)
+ fun_l24_n519(x)
+ else
+ fun_l24_n736(x)
+ end
+end
+
+def fun_l23_n947(x)
+ if (x < 1)
+ fun_l24_n277(x)
+ else
+ fun_l24_n705(x)
+ end
+end
+
+def fun_l23_n948(x)
+ if (x < 1)
+ fun_l24_n658(x)
+ else
+ fun_l24_n983(x)
+ end
+end
+
+def fun_l23_n949(x)
+ if (x < 1)
+ fun_l24_n390(x)
+ else
+ fun_l24_n365(x)
+ end
+end
+
+def fun_l23_n950(x)
+ if (x < 1)
+ fun_l24_n362(x)
+ else
+ fun_l24_n895(x)
+ end
+end
+
+def fun_l23_n951(x)
+ if (x < 1)
+ fun_l24_n431(x)
+ else
+ fun_l24_n240(x)
+ end
+end
+
+def fun_l23_n952(x)
+ if (x < 1)
+ fun_l24_n87(x)
+ else
+ fun_l24_n923(x)
+ end
+end
+
+def fun_l23_n953(x)
+ if (x < 1)
+ fun_l24_n605(x)
+ else
+ fun_l24_n369(x)
+ end
+end
+
+def fun_l23_n954(x)
+ if (x < 1)
+ fun_l24_n659(x)
+ else
+ fun_l24_n485(x)
+ end
+end
+
+def fun_l23_n955(x)
+ if (x < 1)
+ fun_l24_n204(x)
+ else
+ fun_l24_n719(x)
+ end
+end
+
+def fun_l23_n956(x)
+ if (x < 1)
+ fun_l24_n752(x)
+ else
+ fun_l24_n522(x)
+ end
+end
+
+def fun_l23_n957(x)
+ if (x < 1)
+ fun_l24_n827(x)
+ else
+ fun_l24_n740(x)
+ end
+end
+
+def fun_l23_n958(x)
+ if (x < 1)
+ fun_l24_n476(x)
+ else
+ fun_l24_n766(x)
+ end
+end
+
+def fun_l23_n959(x)
+ if (x < 1)
+ fun_l24_n167(x)
+ else
+ fun_l24_n552(x)
+ end
+end
+
+def fun_l23_n960(x)
+ if (x < 1)
+ fun_l24_n352(x)
+ else
+ fun_l24_n147(x)
+ end
+end
+
+def fun_l23_n961(x)
+ if (x < 1)
+ fun_l24_n641(x)
+ else
+ fun_l24_n263(x)
+ end
+end
+
+def fun_l23_n962(x)
+ if (x < 1)
+ fun_l24_n2(x)
+ else
+ fun_l24_n819(x)
+ end
+end
+
+def fun_l23_n963(x)
+ if (x < 1)
+ fun_l24_n649(x)
+ else
+ fun_l24_n589(x)
+ end
+end
+
+def fun_l23_n964(x)
+ if (x < 1)
+ fun_l24_n351(x)
+ else
+ fun_l24_n170(x)
+ end
+end
+
+def fun_l23_n965(x)
+ if (x < 1)
+ fun_l24_n913(x)
+ else
+ fun_l24_n141(x)
+ end
+end
+
+def fun_l23_n966(x)
+ if (x < 1)
+ fun_l24_n230(x)
+ else
+ fun_l24_n438(x)
+ end
+end
+
+def fun_l23_n967(x)
+ if (x < 1)
+ fun_l24_n649(x)
+ else
+ fun_l24_n867(x)
+ end
+end
+
+def fun_l23_n968(x)
+ if (x < 1)
+ fun_l24_n877(x)
+ else
+ fun_l24_n341(x)
+ end
+end
+
+def fun_l23_n969(x)
+ if (x < 1)
+ fun_l24_n802(x)
+ else
+ fun_l24_n409(x)
+ end
+end
+
+def fun_l23_n970(x)
+ if (x < 1)
+ fun_l24_n388(x)
+ else
+ fun_l24_n521(x)
+ end
+end
+
+def fun_l23_n971(x)
+ if (x < 1)
+ fun_l24_n533(x)
+ else
+ fun_l24_n856(x)
+ end
+end
+
+def fun_l23_n972(x)
+ if (x < 1)
+ fun_l24_n409(x)
+ else
+ fun_l24_n119(x)
+ end
+end
+
+def fun_l23_n973(x)
+ if (x < 1)
+ fun_l24_n774(x)
+ else
+ fun_l24_n561(x)
+ end
+end
+
+def fun_l23_n974(x)
+ if (x < 1)
+ fun_l24_n96(x)
+ else
+ fun_l24_n629(x)
+ end
+end
+
+def fun_l23_n975(x)
+ if (x < 1)
+ fun_l24_n985(x)
+ else
+ fun_l24_n651(x)
+ end
+end
+
+def fun_l23_n976(x)
+ if (x < 1)
+ fun_l24_n977(x)
+ else
+ fun_l24_n274(x)
+ end
+end
+
+def fun_l23_n977(x)
+ if (x < 1)
+ fun_l24_n85(x)
+ else
+ fun_l24_n337(x)
+ end
+end
+
+def fun_l23_n978(x)
+ if (x < 1)
+ fun_l24_n312(x)
+ else
+ fun_l24_n990(x)
+ end
+end
+
+def fun_l23_n979(x)
+ if (x < 1)
+ fun_l24_n438(x)
+ else
+ fun_l24_n42(x)
+ end
+end
+
+def fun_l23_n980(x)
+ if (x < 1)
+ fun_l24_n341(x)
+ else
+ fun_l24_n27(x)
+ end
+end
+
+def fun_l23_n981(x)
+ if (x < 1)
+ fun_l24_n300(x)
+ else
+ fun_l24_n669(x)
+ end
+end
+
+def fun_l23_n982(x)
+ if (x < 1)
+ fun_l24_n586(x)
+ else
+ fun_l24_n822(x)
+ end
+end
+
+def fun_l23_n983(x)
+ if (x < 1)
+ fun_l24_n388(x)
+ else
+ fun_l24_n966(x)
+ end
+end
+
+def fun_l23_n984(x)
+ if (x < 1)
+ fun_l24_n661(x)
+ else
+ fun_l24_n66(x)
+ end
+end
+
+def fun_l23_n985(x)
+ if (x < 1)
+ fun_l24_n384(x)
+ else
+ fun_l24_n419(x)
+ end
+end
+
+def fun_l23_n986(x)
+ if (x < 1)
+ fun_l24_n698(x)
+ else
+ fun_l24_n961(x)
+ end
+end
+
+def fun_l23_n987(x)
+ if (x < 1)
+ fun_l24_n820(x)
+ else
+ fun_l24_n112(x)
+ end
+end
+
+def fun_l23_n988(x)
+ if (x < 1)
+ fun_l24_n976(x)
+ else
+ fun_l24_n232(x)
+ end
+end
+
+def fun_l23_n989(x)
+ if (x < 1)
+ fun_l24_n292(x)
+ else
+ fun_l24_n77(x)
+ end
+end
+
+def fun_l23_n990(x)
+ if (x < 1)
+ fun_l24_n572(x)
+ else
+ fun_l24_n524(x)
+ end
+end
+
+def fun_l23_n991(x)
+ if (x < 1)
+ fun_l24_n226(x)
+ else
+ fun_l24_n821(x)
+ end
+end
+
+def fun_l23_n992(x)
+ if (x < 1)
+ fun_l24_n12(x)
+ else
+ fun_l24_n891(x)
+ end
+end
+
+def fun_l23_n993(x)
+ if (x < 1)
+ fun_l24_n101(x)
+ else
+ fun_l24_n592(x)
+ end
+end
+
+def fun_l23_n994(x)
+ if (x < 1)
+ fun_l24_n796(x)
+ else
+ fun_l24_n594(x)
+ end
+end
+
+def fun_l23_n995(x)
+ if (x < 1)
+ fun_l24_n707(x)
+ else
+ fun_l24_n577(x)
+ end
+end
+
+def fun_l23_n996(x)
+ if (x < 1)
+ fun_l24_n123(x)
+ else
+ fun_l24_n730(x)
+ end
+end
+
+def fun_l23_n997(x)
+ if (x < 1)
+ fun_l24_n520(x)
+ else
+ fun_l24_n888(x)
+ end
+end
+
+def fun_l23_n998(x)
+ if (x < 1)
+ fun_l24_n165(x)
+ else
+ fun_l24_n576(x)
+ end
+end
+
+def fun_l23_n999(x)
+ if (x < 1)
+ fun_l24_n496(x)
+ else
+ fun_l24_n722(x)
+ end
+end
+
+def fun_l24_n0(x)
+ if (x < 1)
+ fun_l25_n357(x)
+ else
+ fun_l25_n144(x)
+ end
+end
+
+def fun_l24_n1(x)
+ if (x < 1)
+ fun_l25_n49(x)
+ else
+ fun_l25_n870(x)
+ end
+end
+
+def fun_l24_n2(x)
+ if (x < 1)
+ fun_l25_n547(x)
+ else
+ fun_l25_n357(x)
+ end
+end
+
+def fun_l24_n3(x)
+ if (x < 1)
+ fun_l25_n167(x)
+ else
+ fun_l25_n908(x)
+ end
+end
+
+def fun_l24_n4(x)
+ if (x < 1)
+ fun_l25_n943(x)
+ else
+ fun_l25_n882(x)
+ end
+end
+
+def fun_l24_n5(x)
+ if (x < 1)
+ fun_l25_n635(x)
+ else
+ fun_l25_n988(x)
+ end
+end
+
+def fun_l24_n6(x)
+ if (x < 1)
+ fun_l25_n648(x)
+ else
+ fun_l25_n62(x)
+ end
+end
+
+def fun_l24_n7(x)
+ if (x < 1)
+ fun_l25_n896(x)
+ else
+ fun_l25_n636(x)
+ end
+end
+
+def fun_l24_n8(x)
+ if (x < 1)
+ fun_l25_n666(x)
+ else
+ fun_l25_n50(x)
+ end
+end
+
+def fun_l24_n9(x)
+ if (x < 1)
+ fun_l25_n42(x)
+ else
+ fun_l25_n216(x)
+ end
+end
+
+def fun_l24_n10(x)
+ if (x < 1)
+ fun_l25_n979(x)
+ else
+ fun_l25_n27(x)
+ end
+end
+
+def fun_l24_n11(x)
+ if (x < 1)
+ fun_l25_n421(x)
+ else
+ fun_l25_n239(x)
+ end
+end
+
+def fun_l24_n12(x)
+ if (x < 1)
+ fun_l25_n465(x)
+ else
+ fun_l25_n483(x)
+ end
+end
+
+def fun_l24_n13(x)
+ if (x < 1)
+ fun_l25_n172(x)
+ else
+ fun_l25_n918(x)
+ end
+end
+
+def fun_l24_n14(x)
+ if (x < 1)
+ fun_l25_n130(x)
+ else
+ fun_l25_n144(x)
+ end
+end
+
+def fun_l24_n15(x)
+ if (x < 1)
+ fun_l25_n569(x)
+ else
+ fun_l25_n319(x)
+ end
+end
+
+def fun_l24_n16(x)
+ if (x < 1)
+ fun_l25_n54(x)
+ else
+ fun_l25_n253(x)
+ end
+end
+
+def fun_l24_n17(x)
+ if (x < 1)
+ fun_l25_n127(x)
+ else
+ fun_l25_n594(x)
+ end
+end
+
+def fun_l24_n18(x)
+ if (x < 1)
+ fun_l25_n94(x)
+ else
+ fun_l25_n486(x)
+ end
+end
+
+def fun_l24_n19(x)
+ if (x < 1)
+ fun_l25_n322(x)
+ else
+ fun_l25_n731(x)
+ end
+end
+
+def fun_l24_n20(x)
+ if (x < 1)
+ fun_l25_n828(x)
+ else
+ fun_l25_n410(x)
+ end
+end
+
+def fun_l24_n21(x)
+ if (x < 1)
+ fun_l25_n422(x)
+ else
+ fun_l25_n265(x)
+ end
+end
+
+def fun_l24_n22(x)
+ if (x < 1)
+ fun_l25_n259(x)
+ else
+ fun_l25_n902(x)
+ end
+end
+
+def fun_l24_n23(x)
+ if (x < 1)
+ fun_l25_n660(x)
+ else
+ fun_l25_n525(x)
+ end
+end
+
+def fun_l24_n24(x)
+ if (x < 1)
+ fun_l25_n898(x)
+ else
+ fun_l25_n231(x)
+ end
+end
+
+def fun_l24_n25(x)
+ if (x < 1)
+ fun_l25_n319(x)
+ else
+ fun_l25_n306(x)
+ end
+end
+
+def fun_l24_n26(x)
+ if (x < 1)
+ fun_l25_n447(x)
+ else
+ fun_l25_n110(x)
+ end
+end
+
+def fun_l24_n27(x)
+ if (x < 1)
+ fun_l25_n416(x)
+ else
+ fun_l25_n335(x)
+ end
+end
+
+def fun_l24_n28(x)
+ if (x < 1)
+ fun_l25_n132(x)
+ else
+ fun_l25_n549(x)
+ end
+end
+
+def fun_l24_n29(x)
+ if (x < 1)
+ fun_l25_n878(x)
+ else
+ fun_l25_n790(x)
+ end
+end
+
+def fun_l24_n30(x)
+ if (x < 1)
+ fun_l25_n205(x)
+ else
+ fun_l25_n328(x)
+ end
+end
+
+def fun_l24_n31(x)
+ if (x < 1)
+ fun_l25_n448(x)
+ else
+ fun_l25_n255(x)
+ end
+end
+
+def fun_l24_n32(x)
+ if (x < 1)
+ fun_l25_n800(x)
+ else
+ fun_l25_n254(x)
+ end
+end
+
+def fun_l24_n33(x)
+ if (x < 1)
+ fun_l25_n377(x)
+ else
+ fun_l25_n178(x)
+ end
+end
+
+def fun_l24_n34(x)
+ if (x < 1)
+ fun_l25_n317(x)
+ else
+ fun_l25_n271(x)
+ end
+end
+
+def fun_l24_n35(x)
+ if (x < 1)
+ fun_l25_n50(x)
+ else
+ fun_l25_n801(x)
+ end
+end
+
+def fun_l24_n36(x)
+ if (x < 1)
+ fun_l25_n720(x)
+ else
+ fun_l25_n267(x)
+ end
+end
+
+def fun_l24_n37(x)
+ if (x < 1)
+ fun_l25_n688(x)
+ else
+ fun_l25_n901(x)
+ end
+end
+
+def fun_l24_n38(x)
+ if (x < 1)
+ fun_l25_n752(x)
+ else
+ fun_l25_n541(x)
+ end
+end
+
+def fun_l24_n39(x)
+ if (x < 1)
+ fun_l25_n716(x)
+ else
+ fun_l25_n884(x)
+ end
+end
+
+def fun_l24_n40(x)
+ if (x < 1)
+ fun_l25_n138(x)
+ else
+ fun_l25_n536(x)
+ end
+end
+
+def fun_l24_n41(x)
+ if (x < 1)
+ fun_l25_n382(x)
+ else
+ fun_l25_n496(x)
+ end
+end
+
+def fun_l24_n42(x)
+ if (x < 1)
+ fun_l25_n729(x)
+ else
+ fun_l25_n443(x)
+ end
+end
+
+def fun_l24_n43(x)
+ if (x < 1)
+ fun_l25_n401(x)
+ else
+ fun_l25_n300(x)
+ end
+end
+
+def fun_l24_n44(x)
+ if (x < 1)
+ fun_l25_n695(x)
+ else
+ fun_l25_n139(x)
+ end
+end
+
+def fun_l24_n45(x)
+ if (x < 1)
+ fun_l25_n186(x)
+ else
+ fun_l25_n446(x)
+ end
+end
+
+def fun_l24_n46(x)
+ if (x < 1)
+ fun_l25_n102(x)
+ else
+ fun_l25_n415(x)
+ end
+end
+
+def fun_l24_n47(x)
+ if (x < 1)
+ fun_l25_n74(x)
+ else
+ fun_l25_n947(x)
+ end
+end
+
+def fun_l24_n48(x)
+ if (x < 1)
+ fun_l25_n720(x)
+ else
+ fun_l25_n873(x)
+ end
+end
+
+def fun_l24_n49(x)
+ if (x < 1)
+ fun_l25_n779(x)
+ else
+ fun_l25_n61(x)
+ end
+end
+
+def fun_l24_n50(x)
+ if (x < 1)
+ fun_l25_n889(x)
+ else
+ fun_l25_n620(x)
+ end
+end
+
+def fun_l24_n51(x)
+ if (x < 1)
+ fun_l25_n323(x)
+ else
+ fun_l25_n412(x)
+ end
+end
+
+def fun_l24_n52(x)
+ if (x < 1)
+ fun_l25_n986(x)
+ else
+ fun_l25_n950(x)
+ end
+end
+
+def fun_l24_n53(x)
+ if (x < 1)
+ fun_l25_n810(x)
+ else
+ fun_l25_n956(x)
+ end
+end
+
+def fun_l24_n54(x)
+ if (x < 1)
+ fun_l25_n89(x)
+ else
+ fun_l25_n110(x)
+ end
+end
+
+def fun_l24_n55(x)
+ if (x < 1)
+ fun_l25_n255(x)
+ else
+ fun_l25_n953(x)
+ end
+end
+
+def fun_l24_n56(x)
+ if (x < 1)
+ fun_l25_n200(x)
+ else
+ fun_l25_n366(x)
+ end
+end
+
+def fun_l24_n57(x)
+ if (x < 1)
+ fun_l25_n431(x)
+ else
+ fun_l25_n49(x)
+ end
+end
+
+def fun_l24_n58(x)
+ if (x < 1)
+ fun_l25_n705(x)
+ else
+ fun_l25_n362(x)
+ end
+end
+
+def fun_l24_n59(x)
+ if (x < 1)
+ fun_l25_n587(x)
+ else
+ fun_l25_n511(x)
+ end
+end
+
+def fun_l24_n60(x)
+ if (x < 1)
+ fun_l25_n72(x)
+ else
+ fun_l25_n560(x)
+ end
+end
+
+def fun_l24_n61(x)
+ if (x < 1)
+ fun_l25_n732(x)
+ else
+ fun_l25_n214(x)
+ end
+end
+
+def fun_l24_n62(x)
+ if (x < 1)
+ fun_l25_n348(x)
+ else
+ fun_l25_n70(x)
+ end
+end
+
+def fun_l24_n63(x)
+ if (x < 1)
+ fun_l25_n371(x)
+ else
+ fun_l25_n625(x)
+ end
+end
+
+def fun_l24_n64(x)
+ if (x < 1)
+ fun_l25_n204(x)
+ else
+ fun_l25_n249(x)
+ end
+end
+
+def fun_l24_n65(x)
+ if (x < 1)
+ fun_l25_n608(x)
+ else
+ fun_l25_n682(x)
+ end
+end
+
+def fun_l24_n66(x)
+ if (x < 1)
+ fun_l25_n450(x)
+ else
+ fun_l25_n951(x)
+ end
+end
+
+def fun_l24_n67(x)
+ if (x < 1)
+ fun_l25_n749(x)
+ else
+ fun_l25_n39(x)
+ end
+end
+
+def fun_l24_n68(x)
+ if (x < 1)
+ fun_l25_n169(x)
+ else
+ fun_l25_n801(x)
+ end
+end
+
+def fun_l24_n69(x)
+ if (x < 1)
+ fun_l25_n55(x)
+ else
+ fun_l25_n728(x)
+ end
+end
+
+def fun_l24_n70(x)
+ if (x < 1)
+ fun_l25_n115(x)
+ else
+ fun_l25_n689(x)
+ end
+end
+
+def fun_l24_n71(x)
+ if (x < 1)
+ fun_l25_n332(x)
+ else
+ fun_l25_n474(x)
+ end
+end
+
+def fun_l24_n72(x)
+ if (x < 1)
+ fun_l25_n846(x)
+ else
+ fun_l25_n808(x)
+ end
+end
+
+def fun_l24_n73(x)
+ if (x < 1)
+ fun_l25_n521(x)
+ else
+ fun_l25_n229(x)
+ end
+end
+
+def fun_l24_n74(x)
+ if (x < 1)
+ fun_l25_n307(x)
+ else
+ fun_l25_n992(x)
+ end
+end
+
+def fun_l24_n75(x)
+ if (x < 1)
+ fun_l25_n564(x)
+ else
+ fun_l25_n940(x)
+ end
+end
+
+def fun_l24_n76(x)
+ if (x < 1)
+ fun_l25_n348(x)
+ else
+ fun_l25_n453(x)
+ end
+end
+
+def fun_l24_n77(x)
+ if (x < 1)
+ fun_l25_n252(x)
+ else
+ fun_l25_n270(x)
+ end
+end
+
+def fun_l24_n78(x)
+ if (x < 1)
+ fun_l25_n333(x)
+ else
+ fun_l25_n980(x)
+ end
+end
+
+def fun_l24_n79(x)
+ if (x < 1)
+ fun_l25_n486(x)
+ else
+ fun_l25_n276(x)
+ end
+end
+
+def fun_l24_n80(x)
+ if (x < 1)
+ fun_l25_n45(x)
+ else
+ fun_l25_n930(x)
+ end
+end
+
+def fun_l24_n81(x)
+ if (x < 1)
+ fun_l25_n527(x)
+ else
+ fun_l25_n181(x)
+ end
+end
+
+def fun_l24_n82(x)
+ if (x < 1)
+ fun_l25_n768(x)
+ else
+ fun_l25_n869(x)
+ end
+end
+
+def fun_l24_n83(x)
+ if (x < 1)
+ fun_l25_n505(x)
+ else
+ fun_l25_n214(x)
+ end
+end
+
+def fun_l24_n84(x)
+ if (x < 1)
+ fun_l25_n41(x)
+ else
+ fun_l25_n873(x)
+ end
+end
+
+def fun_l24_n85(x)
+ if (x < 1)
+ fun_l25_n646(x)
+ else
+ fun_l25_n105(x)
+ end
+end
+
+def fun_l24_n86(x)
+ if (x < 1)
+ fun_l25_n675(x)
+ else
+ fun_l25_n830(x)
+ end
+end
+
+def fun_l24_n87(x)
+ if (x < 1)
+ fun_l25_n953(x)
+ else
+ fun_l25_n268(x)
+ end
+end
+
+def fun_l24_n88(x)
+ if (x < 1)
+ fun_l25_n36(x)
+ else
+ fun_l25_n31(x)
+ end
+end
+
+def fun_l24_n89(x)
+ if (x < 1)
+ fun_l25_n810(x)
+ else
+ fun_l25_n315(x)
+ end
+end
+
+def fun_l24_n90(x)
+ if (x < 1)
+ fun_l25_n100(x)
+ else
+ fun_l25_n882(x)
+ end
+end
+
+def fun_l24_n91(x)
+ if (x < 1)
+ fun_l25_n278(x)
+ else
+ fun_l25_n720(x)
+ end
+end
+
+def fun_l24_n92(x)
+ if (x < 1)
+ fun_l25_n472(x)
+ else
+ fun_l25_n615(x)
+ end
+end
+
+def fun_l24_n93(x)
+ if (x < 1)
+ fun_l25_n42(x)
+ else
+ fun_l25_n16(x)
+ end
+end
+
+def fun_l24_n94(x)
+ if (x < 1)
+ fun_l25_n905(x)
+ else
+ fun_l25_n988(x)
+ end
+end
+
+def fun_l24_n95(x)
+ if (x < 1)
+ fun_l25_n862(x)
+ else
+ fun_l25_n355(x)
+ end
+end
+
+def fun_l24_n96(x)
+ if (x < 1)
+ fun_l25_n931(x)
+ else
+ fun_l25_n539(x)
+ end
+end
+
+def fun_l24_n97(x)
+ if (x < 1)
+ fun_l25_n185(x)
+ else
+ fun_l25_n868(x)
+ end
+end
+
+def fun_l24_n98(x)
+ if (x < 1)
+ fun_l25_n276(x)
+ else
+ fun_l25_n591(x)
+ end
+end
+
+def fun_l24_n99(x)
+ if (x < 1)
+ fun_l25_n695(x)
+ else
+ fun_l25_n965(x)
+ end
+end
+
+def fun_l24_n100(x)
+ if (x < 1)
+ fun_l25_n293(x)
+ else
+ fun_l25_n127(x)
+ end
+end
+
+def fun_l24_n101(x)
+ if (x < 1)
+ fun_l25_n71(x)
+ else
+ fun_l25_n245(x)
+ end
+end
+
+def fun_l24_n102(x)
+ if (x < 1)
+ fun_l25_n397(x)
+ else
+ fun_l25_n893(x)
+ end
+end
+
+def fun_l24_n103(x)
+ if (x < 1)
+ fun_l25_n191(x)
+ else
+ fun_l25_n101(x)
+ end
+end
+
+def fun_l24_n104(x)
+ if (x < 1)
+ fun_l25_n982(x)
+ else
+ fun_l25_n101(x)
+ end
+end
+
+def fun_l24_n105(x)
+ if (x < 1)
+ fun_l25_n385(x)
+ else
+ fun_l25_n651(x)
+ end
+end
+
+def fun_l24_n106(x)
+ if (x < 1)
+ fun_l25_n577(x)
+ else
+ fun_l25_n241(x)
+ end
+end
+
+def fun_l24_n107(x)
+ if (x < 1)
+ fun_l25_n219(x)
+ else
+ fun_l25_n92(x)
+ end
+end
+
+def fun_l24_n108(x)
+ if (x < 1)
+ fun_l25_n202(x)
+ else
+ fun_l25_n133(x)
+ end
+end
+
+def fun_l24_n109(x)
+ if (x < 1)
+ fun_l25_n706(x)
+ else
+ fun_l25_n970(x)
+ end
+end
+
+def fun_l24_n110(x)
+ if (x < 1)
+ fun_l25_n948(x)
+ else
+ fun_l25_n595(x)
+ end
+end
+
+def fun_l24_n111(x)
+ if (x < 1)
+ fun_l25_n775(x)
+ else
+ fun_l25_n609(x)
+ end
+end
+
+def fun_l24_n112(x)
+ if (x < 1)
+ fun_l25_n905(x)
+ else
+ fun_l25_n11(x)
+ end
+end
+
+def fun_l24_n113(x)
+ if (x < 1)
+ fun_l25_n730(x)
+ else
+ fun_l25_n826(x)
+ end
+end
+
+def fun_l24_n114(x)
+ if (x < 1)
+ fun_l25_n403(x)
+ else
+ fun_l25_n562(x)
+ end
+end
+
+def fun_l24_n115(x)
+ if (x < 1)
+ fun_l25_n272(x)
+ else
+ fun_l25_n844(x)
+ end
+end
+
+def fun_l24_n116(x)
+ if (x < 1)
+ fun_l25_n907(x)
+ else
+ fun_l25_n797(x)
+ end
+end
+
+def fun_l24_n117(x)
+ if (x < 1)
+ fun_l25_n910(x)
+ else
+ fun_l25_n632(x)
+ end
+end
+
+def fun_l24_n118(x)
+ if (x < 1)
+ fun_l25_n570(x)
+ else
+ fun_l25_n645(x)
+ end
+end
+
+def fun_l24_n119(x)
+ if (x < 1)
+ fun_l25_n930(x)
+ else
+ fun_l25_n31(x)
+ end
+end
+
+def fun_l24_n120(x)
+ if (x < 1)
+ fun_l25_n228(x)
+ else
+ fun_l25_n340(x)
+ end
+end
+
+def fun_l24_n121(x)
+ if (x < 1)
+ fun_l25_n891(x)
+ else
+ fun_l25_n395(x)
+ end
+end
+
+def fun_l24_n122(x)
+ if (x < 1)
+ fun_l25_n340(x)
+ else
+ fun_l25_n966(x)
+ end
+end
+
+def fun_l24_n123(x)
+ if (x < 1)
+ fun_l25_n835(x)
+ else
+ fun_l25_n407(x)
+ end
+end
+
+def fun_l24_n124(x)
+ if (x < 1)
+ fun_l25_n156(x)
+ else
+ fun_l25_n151(x)
+ end
+end
+
+def fun_l24_n125(x)
+ if (x < 1)
+ fun_l25_n912(x)
+ else
+ fun_l25_n733(x)
+ end
+end
+
+def fun_l24_n126(x)
+ if (x < 1)
+ fun_l25_n385(x)
+ else
+ fun_l25_n406(x)
+ end
+end
+
+def fun_l24_n127(x)
+ if (x < 1)
+ fun_l25_n662(x)
+ else
+ fun_l25_n932(x)
+ end
+end
+
+def fun_l24_n128(x)
+ if (x < 1)
+ fun_l25_n418(x)
+ else
+ fun_l25_n445(x)
+ end
+end
+
+def fun_l24_n129(x)
+ if (x < 1)
+ fun_l25_n659(x)
+ else
+ fun_l25_n518(x)
+ end
+end
+
+def fun_l24_n130(x)
+ if (x < 1)
+ fun_l25_n784(x)
+ else
+ fun_l25_n342(x)
+ end
+end
+
+def fun_l24_n131(x)
+ if (x < 1)
+ fun_l25_n184(x)
+ else
+ fun_l25_n316(x)
+ end
+end
+
+def fun_l24_n132(x)
+ if (x < 1)
+ fun_l25_n76(x)
+ else
+ fun_l25_n156(x)
+ end
+end
+
+def fun_l24_n133(x)
+ if (x < 1)
+ fun_l25_n355(x)
+ else
+ fun_l25_n430(x)
+ end
+end
+
+def fun_l24_n134(x)
+ if (x < 1)
+ fun_l25_n643(x)
+ else
+ fun_l25_n109(x)
+ end
+end
+
+def fun_l24_n135(x)
+ if (x < 1)
+ fun_l25_n277(x)
+ else
+ fun_l25_n76(x)
+ end
+end
+
+def fun_l24_n136(x)
+ if (x < 1)
+ fun_l25_n898(x)
+ else
+ fun_l25_n870(x)
+ end
+end
+
+def fun_l24_n137(x)
+ if (x < 1)
+ fun_l25_n275(x)
+ else
+ fun_l25_n762(x)
+ end
+end
+
+def fun_l24_n138(x)
+ if (x < 1)
+ fun_l25_n109(x)
+ else
+ fun_l25_n913(x)
+ end
+end
+
+def fun_l24_n139(x)
+ if (x < 1)
+ fun_l25_n731(x)
+ else
+ fun_l25_n767(x)
+ end
+end
+
+def fun_l24_n140(x)
+ if (x < 1)
+ fun_l25_n385(x)
+ else
+ fun_l25_n743(x)
+ end
+end
+
+def fun_l24_n141(x)
+ if (x < 1)
+ fun_l25_n518(x)
+ else
+ fun_l25_n185(x)
+ end
+end
+
+def fun_l24_n142(x)
+ if (x < 1)
+ fun_l25_n656(x)
+ else
+ fun_l25_n614(x)
+ end
+end
+
+def fun_l24_n143(x)
+ if (x < 1)
+ fun_l25_n86(x)
+ else
+ fun_l25_n825(x)
+ end
+end
+
+def fun_l24_n144(x)
+ if (x < 1)
+ fun_l25_n982(x)
+ else
+ fun_l25_n970(x)
+ end
+end
+
+def fun_l24_n145(x)
+ if (x < 1)
+ fun_l25_n608(x)
+ else
+ fun_l25_n970(x)
+ end
+end
+
+def fun_l24_n146(x)
+ if (x < 1)
+ fun_l25_n273(x)
+ else
+ fun_l25_n4(x)
+ end
+end
+
+def fun_l24_n147(x)
+ if (x < 1)
+ fun_l25_n366(x)
+ else
+ fun_l25_n902(x)
+ end
+end
+
+def fun_l24_n148(x)
+ if (x < 1)
+ fun_l25_n682(x)
+ else
+ fun_l25_n210(x)
+ end
+end
+
+def fun_l24_n149(x)
+ if (x < 1)
+ fun_l25_n212(x)
+ else
+ fun_l25_n429(x)
+ end
+end
+
+def fun_l24_n150(x)
+ if (x < 1)
+ fun_l25_n680(x)
+ else
+ fun_l25_n959(x)
+ end
+end
+
+def fun_l24_n151(x)
+ if (x < 1)
+ fun_l25_n65(x)
+ else
+ fun_l25_n654(x)
+ end
+end
+
+def fun_l24_n152(x)
+ if (x < 1)
+ fun_l25_n465(x)
+ else
+ fun_l25_n24(x)
+ end
+end
+
+def fun_l24_n153(x)
+ if (x < 1)
+ fun_l25_n254(x)
+ else
+ fun_l25_n611(x)
+ end
+end
+
+def fun_l24_n154(x)
+ if (x < 1)
+ fun_l25_n525(x)
+ else
+ fun_l25_n25(x)
+ end
+end
+
+def fun_l24_n155(x)
+ if (x < 1)
+ fun_l25_n967(x)
+ else
+ fun_l25_n163(x)
+ end
+end
+
+def fun_l24_n156(x)
+ if (x < 1)
+ fun_l25_n191(x)
+ else
+ fun_l25_n603(x)
+ end
+end
+
+def fun_l24_n157(x)
+ if (x < 1)
+ fun_l25_n724(x)
+ else
+ fun_l25_n537(x)
+ end
+end
+
+def fun_l24_n158(x)
+ if (x < 1)
+ fun_l25_n115(x)
+ else
+ fun_l25_n967(x)
+ end
+end
+
+def fun_l24_n159(x)
+ if (x < 1)
+ fun_l25_n247(x)
+ else
+ fun_l25_n650(x)
+ end
+end
+
+def fun_l24_n160(x)
+ if (x < 1)
+ fun_l25_n681(x)
+ else
+ fun_l25_n754(x)
+ end
+end
+
+def fun_l24_n161(x)
+ if (x < 1)
+ fun_l25_n689(x)
+ else
+ fun_l25_n283(x)
+ end
+end
+
+def fun_l24_n162(x)
+ if (x < 1)
+ fun_l25_n697(x)
+ else
+ fun_l25_n262(x)
+ end
+end
+
+def fun_l24_n163(x)
+ if (x < 1)
+ fun_l25_n584(x)
+ else
+ fun_l25_n502(x)
+ end
+end
+
+def fun_l24_n164(x)
+ if (x < 1)
+ fun_l25_n949(x)
+ else
+ fun_l25_n738(x)
+ end
+end
+
+def fun_l24_n165(x)
+ if (x < 1)
+ fun_l25_n847(x)
+ else
+ fun_l25_n317(x)
+ end
+end
+
+def fun_l24_n166(x)
+ if (x < 1)
+ fun_l25_n827(x)
+ else
+ fun_l25_n831(x)
+ end
+end
+
+def fun_l24_n167(x)
+ if (x < 1)
+ fun_l25_n400(x)
+ else
+ fun_l25_n60(x)
+ end
+end
+
+def fun_l24_n168(x)
+ if (x < 1)
+ fun_l25_n411(x)
+ else
+ fun_l25_n333(x)
+ end
+end
+
+def fun_l24_n169(x)
+ if (x < 1)
+ fun_l25_n481(x)
+ else
+ fun_l25_n336(x)
+ end
+end
+
+def fun_l24_n170(x)
+ if (x < 1)
+ fun_l25_n551(x)
+ else
+ fun_l25_n184(x)
+ end
+end
+
+def fun_l24_n171(x)
+ if (x < 1)
+ fun_l25_n700(x)
+ else
+ fun_l25_n542(x)
+ end
+end
+
+def fun_l24_n172(x)
+ if (x < 1)
+ fun_l25_n496(x)
+ else
+ fun_l25_n494(x)
+ end
+end
+
+def fun_l24_n173(x)
+ if (x < 1)
+ fun_l25_n684(x)
+ else
+ fun_l25_n865(x)
+ end
+end
+
+def fun_l24_n174(x)
+ if (x < 1)
+ fun_l25_n304(x)
+ else
+ fun_l25_n641(x)
+ end
+end
+
+def fun_l24_n175(x)
+ if (x < 1)
+ fun_l25_n252(x)
+ else
+ fun_l25_n573(x)
+ end
+end
+
+def fun_l24_n176(x)
+ if (x < 1)
+ fun_l25_n463(x)
+ else
+ fun_l25_n596(x)
+ end
+end
+
+def fun_l24_n177(x)
+ if (x < 1)
+ fun_l25_n864(x)
+ else
+ fun_l25_n810(x)
+ end
+end
+
+def fun_l24_n178(x)
+ if (x < 1)
+ fun_l25_n182(x)
+ else
+ fun_l25_n900(x)
+ end
+end
+
+def fun_l24_n179(x)
+ if (x < 1)
+ fun_l25_n678(x)
+ else
+ fun_l25_n299(x)
+ end
+end
+
+def fun_l24_n180(x)
+ if (x < 1)
+ fun_l25_n423(x)
+ else
+ fun_l25_n791(x)
+ end
+end
+
+def fun_l24_n181(x)
+ if (x < 1)
+ fun_l25_n582(x)
+ else
+ fun_l25_n382(x)
+ end
+end
+
+def fun_l24_n182(x)
+ if (x < 1)
+ fun_l25_n498(x)
+ else
+ fun_l25_n247(x)
+ end
+end
+
+def fun_l24_n183(x)
+ if (x < 1)
+ fun_l25_n534(x)
+ else
+ fun_l25_n504(x)
+ end
+end
+
+def fun_l24_n184(x)
+ if (x < 1)
+ fun_l25_n947(x)
+ else
+ fun_l25_n708(x)
+ end
+end
+
+def fun_l24_n185(x)
+ if (x < 1)
+ fun_l25_n673(x)
+ else
+ fun_l25_n711(x)
+ end
+end
+
+def fun_l24_n186(x)
+ if (x < 1)
+ fun_l25_n155(x)
+ else
+ fun_l25_n233(x)
+ end
+end
+
+def fun_l24_n187(x)
+ if (x < 1)
+ fun_l25_n669(x)
+ else
+ fun_l25_n558(x)
+ end
+end
+
+def fun_l24_n188(x)
+ if (x < 1)
+ fun_l25_n307(x)
+ else
+ fun_l25_n839(x)
+ end
+end
+
+def fun_l24_n189(x)
+ if (x < 1)
+ fun_l25_n623(x)
+ else
+ fun_l25_n17(x)
+ end
+end
+
+def fun_l24_n190(x)
+ if (x < 1)
+ fun_l25_n468(x)
+ else
+ fun_l25_n391(x)
+ end
+end
+
+def fun_l24_n191(x)
+ if (x < 1)
+ fun_l25_n492(x)
+ else
+ fun_l25_n953(x)
+ end
+end
+
+def fun_l24_n192(x)
+ if (x < 1)
+ fun_l25_n644(x)
+ else
+ fun_l25_n724(x)
+ end
+end
+
+def fun_l24_n193(x)
+ if (x < 1)
+ fun_l25_n438(x)
+ else
+ fun_l25_n110(x)
+ end
+end
+
+def fun_l24_n194(x)
+ if (x < 1)
+ fun_l25_n763(x)
+ else
+ fun_l25_n0(x)
+ end
+end
+
+def fun_l24_n195(x)
+ if (x < 1)
+ fun_l25_n766(x)
+ else
+ fun_l25_n436(x)
+ end
+end
+
+def fun_l24_n196(x)
+ if (x < 1)
+ fun_l25_n646(x)
+ else
+ fun_l25_n264(x)
+ end
+end
+
+def fun_l24_n197(x)
+ if (x < 1)
+ fun_l25_n140(x)
+ else
+ fun_l25_n387(x)
+ end
+end
+
+def fun_l24_n198(x)
+ if (x < 1)
+ fun_l25_n890(x)
+ else
+ fun_l25_n756(x)
+ end
+end
+
+def fun_l24_n199(x)
+ if (x < 1)
+ fun_l25_n597(x)
+ else
+ fun_l25_n330(x)
+ end
+end
+
+def fun_l24_n200(x)
+ if (x < 1)
+ fun_l25_n656(x)
+ else
+ fun_l25_n292(x)
+ end
+end
+
+def fun_l24_n201(x)
+ if (x < 1)
+ fun_l25_n224(x)
+ else
+ fun_l25_n233(x)
+ end
+end
+
+def fun_l24_n202(x)
+ if (x < 1)
+ fun_l25_n153(x)
+ else
+ fun_l25_n926(x)
+ end
+end
+
+def fun_l24_n203(x)
+ if (x < 1)
+ fun_l25_n897(x)
+ else
+ fun_l25_n680(x)
+ end
+end
+
+def fun_l24_n204(x)
+ if (x < 1)
+ fun_l25_n610(x)
+ else
+ fun_l25_n154(x)
+ end
+end
+
+def fun_l24_n205(x)
+ if (x < 1)
+ fun_l25_n307(x)
+ else
+ fun_l25_n451(x)
+ end
+end
+
+def fun_l24_n206(x)
+ if (x < 1)
+ fun_l25_n138(x)
+ else
+ fun_l25_n875(x)
+ end
+end
+
+def fun_l24_n207(x)
+ if (x < 1)
+ fun_l25_n306(x)
+ else
+ fun_l25_n474(x)
+ end
+end
+
+def fun_l24_n208(x)
+ if (x < 1)
+ fun_l25_n771(x)
+ else
+ fun_l25_n105(x)
+ end
+end
+
+def fun_l24_n209(x)
+ if (x < 1)
+ fun_l25_n120(x)
+ else
+ fun_l25_n961(x)
+ end
+end
+
+def fun_l24_n210(x)
+ if (x < 1)
+ fun_l25_n455(x)
+ else
+ fun_l25_n244(x)
+ end
+end
+
+def fun_l24_n211(x)
+ if (x < 1)
+ fun_l25_n93(x)
+ else
+ fun_l25_n31(x)
+ end
+end
+
+def fun_l24_n212(x)
+ if (x < 1)
+ fun_l25_n69(x)
+ else
+ fun_l25_n39(x)
+ end
+end
+
+def fun_l24_n213(x)
+ if (x < 1)
+ fun_l25_n379(x)
+ else
+ fun_l25_n482(x)
+ end
+end
+
+def fun_l24_n214(x)
+ if (x < 1)
+ fun_l25_n839(x)
+ else
+ fun_l25_n669(x)
+ end
+end
+
+def fun_l24_n215(x)
+ if (x < 1)
+ fun_l25_n27(x)
+ else
+ fun_l25_n46(x)
+ end
+end
+
+def fun_l24_n216(x)
+ if (x < 1)
+ fun_l25_n290(x)
+ else
+ fun_l25_n908(x)
+ end
+end
+
+def fun_l24_n217(x)
+ if (x < 1)
+ fun_l25_n618(x)
+ else
+ fun_l25_n242(x)
+ end
+end
+
+def fun_l24_n218(x)
+ if (x < 1)
+ fun_l25_n42(x)
+ else
+ fun_l25_n674(x)
+ end
+end
+
+def fun_l24_n219(x)
+ if (x < 1)
+ fun_l25_n510(x)
+ else
+ fun_l25_n963(x)
+ end
+end
+
+def fun_l24_n220(x)
+ if (x < 1)
+ fun_l25_n345(x)
+ else
+ fun_l25_n666(x)
+ end
+end
+
+def fun_l24_n221(x)
+ if (x < 1)
+ fun_l25_n548(x)
+ else
+ fun_l25_n424(x)
+ end
+end
+
+def fun_l24_n222(x)
+ if (x < 1)
+ fun_l25_n387(x)
+ else
+ fun_l25_n30(x)
+ end
+end
+
+def fun_l24_n223(x)
+ if (x < 1)
+ fun_l25_n124(x)
+ else
+ fun_l25_n374(x)
+ end
+end
+
+def fun_l24_n224(x)
+ if (x < 1)
+ fun_l25_n200(x)
+ else
+ fun_l25_n108(x)
+ end
+end
+
+def fun_l24_n225(x)
+ if (x < 1)
+ fun_l25_n462(x)
+ else
+ fun_l25_n11(x)
+ end
+end
+
+def fun_l24_n226(x)
+ if (x < 1)
+ fun_l25_n930(x)
+ else
+ fun_l25_n791(x)
+ end
+end
+
+def fun_l24_n227(x)
+ if (x < 1)
+ fun_l25_n10(x)
+ else
+ fun_l25_n447(x)
+ end
+end
+
+def fun_l24_n228(x)
+ if (x < 1)
+ fun_l25_n858(x)
+ else
+ fun_l25_n472(x)
+ end
+end
+
+def fun_l24_n229(x)
+ if (x < 1)
+ fun_l25_n409(x)
+ else
+ fun_l25_n228(x)
+ end
+end
+
+def fun_l24_n230(x)
+ if (x < 1)
+ fun_l25_n82(x)
+ else
+ fun_l25_n665(x)
+ end
+end
+
+def fun_l24_n231(x)
+ if (x < 1)
+ fun_l25_n148(x)
+ else
+ fun_l25_n174(x)
+ end
+end
+
+def fun_l24_n232(x)
+ if (x < 1)
+ fun_l25_n785(x)
+ else
+ fun_l25_n996(x)
+ end
+end
+
+def fun_l24_n233(x)
+ if (x < 1)
+ fun_l25_n827(x)
+ else
+ fun_l25_n393(x)
+ end
+end
+
+def fun_l24_n234(x)
+ if (x < 1)
+ fun_l25_n619(x)
+ else
+ fun_l25_n361(x)
+ end
+end
+
+def fun_l24_n235(x)
+ if (x < 1)
+ fun_l25_n52(x)
+ else
+ fun_l25_n420(x)
+ end
+end
+
+def fun_l24_n236(x)
+ if (x < 1)
+ fun_l25_n355(x)
+ else
+ fun_l25_n561(x)
+ end
+end
+
+def fun_l24_n237(x)
+ if (x < 1)
+ fun_l25_n36(x)
+ else
+ fun_l25_n885(x)
+ end
+end
+
+def fun_l24_n238(x)
+ if (x < 1)
+ fun_l25_n15(x)
+ else
+ fun_l25_n19(x)
+ end
+end
+
+def fun_l24_n239(x)
+ if (x < 1)
+ fun_l25_n137(x)
+ else
+ fun_l25_n34(x)
+ end
+end
+
+def fun_l24_n240(x)
+ if (x < 1)
+ fun_l25_n776(x)
+ else
+ fun_l25_n199(x)
+ end
+end
+
+def fun_l24_n241(x)
+ if (x < 1)
+ fun_l25_n904(x)
+ else
+ fun_l25_n396(x)
+ end
+end
+
+def fun_l24_n242(x)
+ if (x < 1)
+ fun_l25_n122(x)
+ else
+ fun_l25_n720(x)
+ end
+end
+
+def fun_l24_n243(x)
+ if (x < 1)
+ fun_l25_n513(x)
+ else
+ fun_l25_n429(x)
+ end
+end
+
+def fun_l24_n244(x)
+ if (x < 1)
+ fun_l25_n289(x)
+ else
+ fun_l25_n265(x)
+ end
+end
+
+def fun_l24_n245(x)
+ if (x < 1)
+ fun_l25_n334(x)
+ else
+ fun_l25_n42(x)
+ end
+end
+
+def fun_l24_n246(x)
+ if (x < 1)
+ fun_l25_n55(x)
+ else
+ fun_l25_n67(x)
+ end
+end
+
+def fun_l24_n247(x)
+ if (x < 1)
+ fun_l25_n648(x)
+ else
+ fun_l25_n38(x)
+ end
+end
+
+def fun_l24_n248(x)
+ if (x < 1)
+ fun_l25_n904(x)
+ else
+ fun_l25_n732(x)
+ end
+end
+
+def fun_l24_n249(x)
+ if (x < 1)
+ fun_l25_n243(x)
+ else
+ fun_l25_n704(x)
+ end
+end
+
+def fun_l24_n250(x)
+ if (x < 1)
+ fun_l25_n513(x)
+ else
+ fun_l25_n326(x)
+ end
+end
+
+def fun_l24_n251(x)
+ if (x < 1)
+ fun_l25_n122(x)
+ else
+ fun_l25_n617(x)
+ end
+end
+
+def fun_l24_n252(x)
+ if (x < 1)
+ fun_l25_n837(x)
+ else
+ fun_l25_n891(x)
+ end
+end
+
+def fun_l24_n253(x)
+ if (x < 1)
+ fun_l25_n39(x)
+ else
+ fun_l25_n318(x)
+ end
+end
+
+def fun_l24_n254(x)
+ if (x < 1)
+ fun_l25_n79(x)
+ else
+ fun_l25_n195(x)
+ end
+end
+
+def fun_l24_n255(x)
+ if (x < 1)
+ fun_l25_n671(x)
+ else
+ fun_l25_n485(x)
+ end
+end
+
+def fun_l24_n256(x)
+ if (x < 1)
+ fun_l25_n775(x)
+ else
+ fun_l25_n187(x)
+ end
+end
+
+def fun_l24_n257(x)
+ if (x < 1)
+ fun_l25_n150(x)
+ else
+ fun_l25_n740(x)
+ end
+end
+
+def fun_l24_n258(x)
+ if (x < 1)
+ fun_l25_n131(x)
+ else
+ fun_l25_n960(x)
+ end
+end
+
+def fun_l24_n259(x)
+ if (x < 1)
+ fun_l25_n608(x)
+ else
+ fun_l25_n931(x)
+ end
+end
+
+def fun_l24_n260(x)
+ if (x < 1)
+ fun_l25_n846(x)
+ else
+ fun_l25_n278(x)
+ end
+end
+
+def fun_l24_n261(x)
+ if (x < 1)
+ fun_l25_n532(x)
+ else
+ fun_l25_n432(x)
+ end
+end
+
+def fun_l24_n262(x)
+ if (x < 1)
+ fun_l25_n367(x)
+ else
+ fun_l25_n847(x)
+ end
+end
+
+def fun_l24_n263(x)
+ if (x < 1)
+ fun_l25_n782(x)
+ else
+ fun_l25_n33(x)
+ end
+end
+
+def fun_l24_n264(x)
+ if (x < 1)
+ fun_l25_n822(x)
+ else
+ fun_l25_n711(x)
+ end
+end
+
+def fun_l24_n265(x)
+ if (x < 1)
+ fun_l25_n994(x)
+ else
+ fun_l25_n573(x)
+ end
+end
+
+def fun_l24_n266(x)
+ if (x < 1)
+ fun_l25_n234(x)
+ else
+ fun_l25_n617(x)
+ end
+end
+
+def fun_l24_n267(x)
+ if (x < 1)
+ fun_l25_n52(x)
+ else
+ fun_l25_n759(x)
+ end
+end
+
+def fun_l24_n268(x)
+ if (x < 1)
+ fun_l25_n161(x)
+ else
+ fun_l25_n167(x)
+ end
+end
+
+def fun_l24_n269(x)
+ if (x < 1)
+ fun_l25_n113(x)
+ else
+ fun_l25_n158(x)
+ end
+end
+
+def fun_l24_n270(x)
+ if (x < 1)
+ fun_l25_n151(x)
+ else
+ fun_l25_n127(x)
+ end
+end
+
+def fun_l24_n271(x)
+ if (x < 1)
+ fun_l25_n811(x)
+ else
+ fun_l25_n81(x)
+ end
+end
+
+def fun_l24_n272(x)
+ if (x < 1)
+ fun_l25_n622(x)
+ else
+ fun_l25_n796(x)
+ end
+end
+
+def fun_l24_n273(x)
+ if (x < 1)
+ fun_l25_n106(x)
+ else
+ fun_l25_n697(x)
+ end
+end
+
+def fun_l24_n274(x)
+ if (x < 1)
+ fun_l25_n63(x)
+ else
+ fun_l25_n599(x)
+ end
+end
+
+def fun_l24_n275(x)
+ if (x < 1)
+ fun_l25_n999(x)
+ else
+ fun_l25_n188(x)
+ end
+end
+
+def fun_l24_n276(x)
+ if (x < 1)
+ fun_l25_n491(x)
+ else
+ fun_l25_n614(x)
+ end
+end
+
+def fun_l24_n277(x)
+ if (x < 1)
+ fun_l25_n549(x)
+ else
+ fun_l25_n141(x)
+ end
+end
+
+def fun_l24_n278(x)
+ if (x < 1)
+ fun_l25_n442(x)
+ else
+ fun_l25_n900(x)
+ end
+end
+
+def fun_l24_n279(x)
+ if (x < 1)
+ fun_l25_n816(x)
+ else
+ fun_l25_n904(x)
+ end
+end
+
+def fun_l24_n280(x)
+ if (x < 1)
+ fun_l25_n508(x)
+ else
+ fun_l25_n569(x)
+ end
+end
+
+def fun_l24_n281(x)
+ if (x < 1)
+ fun_l25_n438(x)
+ else
+ fun_l25_n750(x)
+ end
+end
+
+def fun_l24_n282(x)
+ if (x < 1)
+ fun_l25_n984(x)
+ else
+ fun_l25_n573(x)
+ end
+end
+
+def fun_l24_n283(x)
+ if (x < 1)
+ fun_l25_n425(x)
+ else
+ fun_l25_n963(x)
+ end
+end
+
+def fun_l24_n284(x)
+ if (x < 1)
+ fun_l25_n213(x)
+ else
+ fun_l25_n344(x)
+ end
+end
+
+def fun_l24_n285(x)
+ if (x < 1)
+ fun_l25_n1(x)
+ else
+ fun_l25_n826(x)
+ end
+end
+
+def fun_l24_n286(x)
+ if (x < 1)
+ fun_l25_n297(x)
+ else
+ fun_l25_n266(x)
+ end
+end
+
+def fun_l24_n287(x)
+ if (x < 1)
+ fun_l25_n203(x)
+ else
+ fun_l25_n570(x)
+ end
+end
+
+def fun_l24_n288(x)
+ if (x < 1)
+ fun_l25_n849(x)
+ else
+ fun_l25_n336(x)
+ end
+end
+
+def fun_l24_n289(x)
+ if (x < 1)
+ fun_l25_n982(x)
+ else
+ fun_l25_n38(x)
+ end
+end
+
+def fun_l24_n290(x)
+ if (x < 1)
+ fun_l25_n687(x)
+ else
+ fun_l25_n906(x)
+ end
+end
+
+def fun_l24_n291(x)
+ if (x < 1)
+ fun_l25_n921(x)
+ else
+ fun_l25_n229(x)
+ end
+end
+
+def fun_l24_n292(x)
+ if (x < 1)
+ fun_l25_n494(x)
+ else
+ fun_l25_n138(x)
+ end
+end
+
+def fun_l24_n293(x)
+ if (x < 1)
+ fun_l25_n175(x)
+ else
+ fun_l25_n575(x)
+ end
+end
+
+def fun_l24_n294(x)
+ if (x < 1)
+ fun_l25_n126(x)
+ else
+ fun_l25_n902(x)
+ end
+end
+
+def fun_l24_n295(x)
+ if (x < 1)
+ fun_l25_n634(x)
+ else
+ fun_l25_n199(x)
+ end
+end
+
+def fun_l24_n296(x)
+ if (x < 1)
+ fun_l25_n929(x)
+ else
+ fun_l25_n468(x)
+ end
+end
+
+def fun_l24_n297(x)
+ if (x < 1)
+ fun_l25_n856(x)
+ else
+ fun_l25_n135(x)
+ end
+end
+
+def fun_l24_n298(x)
+ if (x < 1)
+ fun_l25_n655(x)
+ else
+ fun_l25_n545(x)
+ end
+end
+
+def fun_l24_n299(x)
+ if (x < 1)
+ fun_l25_n373(x)
+ else
+ fun_l25_n173(x)
+ end
+end
+
+def fun_l24_n300(x)
+ if (x < 1)
+ fun_l25_n874(x)
+ else
+ fun_l25_n85(x)
+ end
+end
+
+def fun_l24_n301(x)
+ if (x < 1)
+ fun_l25_n398(x)
+ else
+ fun_l25_n43(x)
+ end
+end
+
+def fun_l24_n302(x)
+ if (x < 1)
+ fun_l25_n995(x)
+ else
+ fun_l25_n890(x)
+ end
+end
+
+def fun_l24_n303(x)
+ if (x < 1)
+ fun_l25_n971(x)
+ else
+ fun_l25_n250(x)
+ end
+end
+
+def fun_l24_n304(x)
+ if (x < 1)
+ fun_l25_n752(x)
+ else
+ fun_l25_n681(x)
+ end
+end
+
+def fun_l24_n305(x)
+ if (x < 1)
+ fun_l25_n688(x)
+ else
+ fun_l25_n451(x)
+ end
+end
+
+def fun_l24_n306(x)
+ if (x < 1)
+ fun_l25_n167(x)
+ else
+ fun_l25_n784(x)
+ end
+end
+
+def fun_l24_n307(x)
+ if (x < 1)
+ fun_l25_n479(x)
+ else
+ fun_l25_n295(x)
+ end
+end
+
+def fun_l24_n308(x)
+ if (x < 1)
+ fun_l25_n779(x)
+ else
+ fun_l25_n472(x)
+ end
+end
+
+def fun_l24_n309(x)
+ if (x < 1)
+ fun_l25_n10(x)
+ else
+ fun_l25_n301(x)
+ end
+end
+
+def fun_l24_n310(x)
+ if (x < 1)
+ fun_l25_n197(x)
+ else
+ fun_l25_n152(x)
+ end
+end
+
+def fun_l24_n311(x)
+ if (x < 1)
+ fun_l25_n300(x)
+ else
+ fun_l25_n105(x)
+ end
+end
+
+def fun_l24_n312(x)
+ if (x < 1)
+ fun_l25_n1(x)
+ else
+ fun_l25_n956(x)
+ end
+end
+
+def fun_l24_n313(x)
+ if (x < 1)
+ fun_l25_n310(x)
+ else
+ fun_l25_n701(x)
+ end
+end
+
+def fun_l24_n314(x)
+ if (x < 1)
+ fun_l25_n0(x)
+ else
+ fun_l25_n58(x)
+ end
+end
+
+def fun_l24_n315(x)
+ if (x < 1)
+ fun_l25_n31(x)
+ else
+ fun_l25_n69(x)
+ end
+end
+
+def fun_l24_n316(x)
+ if (x < 1)
+ fun_l25_n967(x)
+ else
+ fun_l25_n130(x)
+ end
+end
+
+def fun_l24_n317(x)
+ if (x < 1)
+ fun_l25_n995(x)
+ else
+ fun_l25_n630(x)
+ end
+end
+
+def fun_l24_n318(x)
+ if (x < 1)
+ fun_l25_n349(x)
+ else
+ fun_l25_n916(x)
+ end
+end
+
+def fun_l24_n319(x)
+ if (x < 1)
+ fun_l25_n230(x)
+ else
+ fun_l25_n880(x)
+ end
+end
+
+def fun_l24_n320(x)
+ if (x < 1)
+ fun_l25_n452(x)
+ else
+ fun_l25_n316(x)
+ end
+end
+
+def fun_l24_n321(x)
+ if (x < 1)
+ fun_l25_n581(x)
+ else
+ fun_l25_n262(x)
+ end
+end
+
+def fun_l24_n322(x)
+ if (x < 1)
+ fun_l25_n70(x)
+ else
+ fun_l25_n674(x)
+ end
+end
+
+def fun_l24_n323(x)
+ if (x < 1)
+ fun_l25_n726(x)
+ else
+ fun_l25_n943(x)
+ end
+end
+
+def fun_l24_n324(x)
+ if (x < 1)
+ fun_l25_n779(x)
+ else
+ fun_l25_n209(x)
+ end
+end
+
+def fun_l24_n325(x)
+ if (x < 1)
+ fun_l25_n132(x)
+ else
+ fun_l25_n301(x)
+ end
+end
+
+def fun_l24_n326(x)
+ if (x < 1)
+ fun_l25_n255(x)
+ else
+ fun_l25_n154(x)
+ end
+end
+
+def fun_l24_n327(x)
+ if (x < 1)
+ fun_l25_n248(x)
+ else
+ fun_l25_n152(x)
+ end
+end
+
+def fun_l24_n328(x)
+ if (x < 1)
+ fun_l25_n536(x)
+ else
+ fun_l25_n703(x)
+ end
+end
+
+def fun_l24_n329(x)
+ if (x < 1)
+ fun_l25_n744(x)
+ else
+ fun_l25_n133(x)
+ end
+end
+
+def fun_l24_n330(x)
+ if (x < 1)
+ fun_l25_n455(x)
+ else
+ fun_l25_n576(x)
+ end
+end
+
+def fun_l24_n331(x)
+ if (x < 1)
+ fun_l25_n590(x)
+ else
+ fun_l25_n357(x)
+ end
+end
+
+def fun_l24_n332(x)
+ if (x < 1)
+ fun_l25_n151(x)
+ else
+ fun_l25_n969(x)
+ end
+end
+
+def fun_l24_n333(x)
+ if (x < 1)
+ fun_l25_n725(x)
+ else
+ fun_l25_n681(x)
+ end
+end
+
+def fun_l24_n334(x)
+ if (x < 1)
+ fun_l25_n157(x)
+ else
+ fun_l25_n643(x)
+ end
+end
+
+def fun_l24_n335(x)
+ if (x < 1)
+ fun_l25_n42(x)
+ else
+ fun_l25_n749(x)
+ end
+end
+
+def fun_l24_n336(x)
+ if (x < 1)
+ fun_l25_n831(x)
+ else
+ fun_l25_n126(x)
+ end
+end
+
+def fun_l24_n337(x)
+ if (x < 1)
+ fun_l25_n424(x)
+ else
+ fun_l25_n559(x)
+ end
+end
+
+def fun_l24_n338(x)
+ if (x < 1)
+ fun_l25_n897(x)
+ else
+ fun_l25_n89(x)
+ end
+end
+
+def fun_l24_n339(x)
+ if (x < 1)
+ fun_l25_n755(x)
+ else
+ fun_l25_n506(x)
+ end
+end
+
+def fun_l24_n340(x)
+ if (x < 1)
+ fun_l25_n387(x)
+ else
+ fun_l25_n631(x)
+ end
+end
+
+def fun_l24_n341(x)
+ if (x < 1)
+ fun_l25_n694(x)
+ else
+ fun_l25_n707(x)
+ end
+end
+
+def fun_l24_n342(x)
+ if (x < 1)
+ fun_l25_n65(x)
+ else
+ fun_l25_n687(x)
+ end
+end
+
+def fun_l24_n343(x)
+ if (x < 1)
+ fun_l25_n84(x)
+ else
+ fun_l25_n738(x)
+ end
+end
+
+def fun_l24_n344(x)
+ if (x < 1)
+ fun_l25_n729(x)
+ else
+ fun_l25_n639(x)
+ end
+end
+
+def fun_l24_n345(x)
+ if (x < 1)
+ fun_l25_n102(x)
+ else
+ fun_l25_n299(x)
+ end
+end
+
+def fun_l24_n346(x)
+ if (x < 1)
+ fun_l25_n604(x)
+ else
+ fun_l25_n94(x)
+ end
+end
+
+def fun_l24_n347(x)
+ if (x < 1)
+ fun_l25_n93(x)
+ else
+ fun_l25_n975(x)
+ end
+end
+
+def fun_l24_n348(x)
+ if (x < 1)
+ fun_l25_n124(x)
+ else
+ fun_l25_n927(x)
+ end
+end
+
+def fun_l24_n349(x)
+ if (x < 1)
+ fun_l25_n944(x)
+ else
+ fun_l25_n162(x)
+ end
+end
+
+def fun_l24_n350(x)
+ if (x < 1)
+ fun_l25_n623(x)
+ else
+ fun_l25_n5(x)
+ end
+end
+
+def fun_l24_n351(x)
+ if (x < 1)
+ fun_l25_n885(x)
+ else
+ fun_l25_n884(x)
+ end
+end
+
+def fun_l24_n352(x)
+ if (x < 1)
+ fun_l25_n1(x)
+ else
+ fun_l25_n366(x)
+ end
+end
+
+def fun_l24_n353(x)
+ if (x < 1)
+ fun_l25_n240(x)
+ else
+ fun_l25_n630(x)
+ end
+end
+
+def fun_l24_n354(x)
+ if (x < 1)
+ fun_l25_n232(x)
+ else
+ fun_l25_n758(x)
+ end
+end
+
+def fun_l24_n355(x)
+ if (x < 1)
+ fun_l25_n529(x)
+ else
+ fun_l25_n810(x)
+ end
+end
+
+def fun_l24_n356(x)
+ if (x < 1)
+ fun_l25_n438(x)
+ else
+ fun_l25_n146(x)
+ end
+end
+
+def fun_l24_n357(x)
+ if (x < 1)
+ fun_l25_n551(x)
+ else
+ fun_l25_n727(x)
+ end
+end
+
+def fun_l24_n358(x)
+ if (x < 1)
+ fun_l25_n764(x)
+ else
+ fun_l25_n379(x)
+ end
+end
+
+def fun_l24_n359(x)
+ if (x < 1)
+ fun_l25_n89(x)
+ else
+ fun_l25_n518(x)
+ end
+end
+
+def fun_l24_n360(x)
+ if (x < 1)
+ fun_l25_n567(x)
+ else
+ fun_l25_n98(x)
+ end
+end
+
+def fun_l24_n361(x)
+ if (x < 1)
+ fun_l25_n26(x)
+ else
+ fun_l25_n818(x)
+ end
+end
+
+def fun_l24_n362(x)
+ if (x < 1)
+ fun_l25_n205(x)
+ else
+ fun_l25_n460(x)
+ end
+end
+
+def fun_l24_n363(x)
+ if (x < 1)
+ fun_l25_n19(x)
+ else
+ fun_l25_n134(x)
+ end
+end
+
+def fun_l24_n364(x)
+ if (x < 1)
+ fun_l25_n221(x)
+ else
+ fun_l25_n391(x)
+ end
+end
+
+def fun_l24_n365(x)
+ if (x < 1)
+ fun_l25_n546(x)
+ else
+ fun_l25_n62(x)
+ end
+end
+
+def fun_l24_n366(x)
+ if (x < 1)
+ fun_l25_n412(x)
+ else
+ fun_l25_n593(x)
+ end
+end
+
+def fun_l24_n367(x)
+ if (x < 1)
+ fun_l25_n576(x)
+ else
+ fun_l25_n798(x)
+ end
+end
+
+def fun_l24_n368(x)
+ if (x < 1)
+ fun_l25_n528(x)
+ else
+ fun_l25_n575(x)
+ end
+end
+
+def fun_l24_n369(x)
+ if (x < 1)
+ fun_l25_n914(x)
+ else
+ fun_l25_n417(x)
+ end
+end
+
+def fun_l24_n370(x)
+ if (x < 1)
+ fun_l25_n397(x)
+ else
+ fun_l25_n684(x)
+ end
+end
+
+def fun_l24_n371(x)
+ if (x < 1)
+ fun_l25_n827(x)
+ else
+ fun_l25_n677(x)
+ end
+end
+
+def fun_l24_n372(x)
+ if (x < 1)
+ fun_l25_n256(x)
+ else
+ fun_l25_n841(x)
+ end
+end
+
+def fun_l24_n373(x)
+ if (x < 1)
+ fun_l25_n671(x)
+ else
+ fun_l25_n712(x)
+ end
+end
+
+def fun_l24_n374(x)
+ if (x < 1)
+ fun_l25_n696(x)
+ else
+ fun_l25_n598(x)
+ end
+end
+
+def fun_l24_n375(x)
+ if (x < 1)
+ fun_l25_n384(x)
+ else
+ fun_l25_n426(x)
+ end
+end
+
+def fun_l24_n376(x)
+ if (x < 1)
+ fun_l25_n578(x)
+ else
+ fun_l25_n555(x)
+ end
+end
+
+def fun_l24_n377(x)
+ if (x < 1)
+ fun_l25_n290(x)
+ else
+ fun_l25_n480(x)
+ end
+end
+
+def fun_l24_n378(x)
+ if (x < 1)
+ fun_l25_n481(x)
+ else
+ fun_l25_n647(x)
+ end
+end
+
+def fun_l24_n379(x)
+ if (x < 1)
+ fun_l25_n502(x)
+ else
+ fun_l25_n985(x)
+ end
+end
+
+def fun_l24_n380(x)
+ if (x < 1)
+ fun_l25_n275(x)
+ else
+ fun_l25_n575(x)
+ end
+end
+
+def fun_l24_n381(x)
+ if (x < 1)
+ fun_l25_n901(x)
+ else
+ fun_l25_n396(x)
+ end
+end
+
+def fun_l24_n382(x)
+ if (x < 1)
+ fun_l25_n283(x)
+ else
+ fun_l25_n544(x)
+ end
+end
+
+def fun_l24_n383(x)
+ if (x < 1)
+ fun_l25_n192(x)
+ else
+ fun_l25_n953(x)
+ end
+end
+
+def fun_l24_n384(x)
+ if (x < 1)
+ fun_l25_n862(x)
+ else
+ fun_l25_n264(x)
+ end
+end
+
+def fun_l24_n385(x)
+ if (x < 1)
+ fun_l25_n528(x)
+ else
+ fun_l25_n429(x)
+ end
+end
+
+def fun_l24_n386(x)
+ if (x < 1)
+ fun_l25_n29(x)
+ else
+ fun_l25_n831(x)
+ end
+end
+
+def fun_l24_n387(x)
+ if (x < 1)
+ fun_l25_n152(x)
+ else
+ fun_l25_n902(x)
+ end
+end
+
+def fun_l24_n388(x)
+ if (x < 1)
+ fun_l25_n538(x)
+ else
+ fun_l25_n468(x)
+ end
+end
+
+def fun_l24_n389(x)
+ if (x < 1)
+ fun_l25_n772(x)
+ else
+ fun_l25_n105(x)
+ end
+end
+
+def fun_l24_n390(x)
+ if (x < 1)
+ fun_l25_n875(x)
+ else
+ fun_l25_n723(x)
+ end
+end
+
+def fun_l24_n391(x)
+ if (x < 1)
+ fun_l25_n330(x)
+ else
+ fun_l25_n659(x)
+ end
+end
+
+def fun_l24_n392(x)
+ if (x < 1)
+ fun_l25_n168(x)
+ else
+ fun_l25_n68(x)
+ end
+end
+
+def fun_l24_n393(x)
+ if (x < 1)
+ fun_l25_n481(x)
+ else
+ fun_l25_n200(x)
+ end
+end
+
+def fun_l24_n394(x)
+ if (x < 1)
+ fun_l25_n391(x)
+ else
+ fun_l25_n255(x)
+ end
+end
+
+def fun_l24_n395(x)
+ if (x < 1)
+ fun_l25_n383(x)
+ else
+ fun_l25_n250(x)
+ end
+end
+
+def fun_l24_n396(x)
+ if (x < 1)
+ fun_l25_n537(x)
+ else
+ fun_l25_n283(x)
+ end
+end
+
+def fun_l24_n397(x)
+ if (x < 1)
+ fun_l25_n504(x)
+ else
+ fun_l25_n916(x)
+ end
+end
+
+def fun_l24_n398(x)
+ if (x < 1)
+ fun_l25_n992(x)
+ else
+ fun_l25_n504(x)
+ end
+end
+
+def fun_l24_n399(x)
+ if (x < 1)
+ fun_l25_n294(x)
+ else
+ fun_l25_n412(x)
+ end
+end
+
+def fun_l24_n400(x)
+ if (x < 1)
+ fun_l25_n686(x)
+ else
+ fun_l25_n85(x)
+ end
+end
+
+def fun_l24_n401(x)
+ if (x < 1)
+ fun_l25_n874(x)
+ else
+ fun_l25_n980(x)
+ end
+end
+
+def fun_l24_n402(x)
+ if (x < 1)
+ fun_l25_n454(x)
+ else
+ fun_l25_n867(x)
+ end
+end
+
+def fun_l24_n403(x)
+ if (x < 1)
+ fun_l25_n594(x)
+ else
+ fun_l25_n970(x)
+ end
+end
+
+def fun_l24_n404(x)
+ if (x < 1)
+ fun_l25_n281(x)
+ else
+ fun_l25_n881(x)
+ end
+end
+
+def fun_l24_n405(x)
+ if (x < 1)
+ fun_l25_n713(x)
+ else
+ fun_l25_n530(x)
+ end
+end
+
+def fun_l24_n406(x)
+ if (x < 1)
+ fun_l25_n874(x)
+ else
+ fun_l25_n953(x)
+ end
+end
+
+def fun_l24_n407(x)
+ if (x < 1)
+ fun_l25_n569(x)
+ else
+ fun_l25_n991(x)
+ end
+end
+
+def fun_l24_n408(x)
+ if (x < 1)
+ fun_l25_n875(x)
+ else
+ fun_l25_n409(x)
+ end
+end
+
+def fun_l24_n409(x)
+ if (x < 1)
+ fun_l25_n604(x)
+ else
+ fun_l25_n454(x)
+ end
+end
+
+def fun_l24_n410(x)
+ if (x < 1)
+ fun_l25_n267(x)
+ else
+ fun_l25_n100(x)
+ end
+end
+
+def fun_l24_n411(x)
+ if (x < 1)
+ fun_l25_n966(x)
+ else
+ fun_l25_n537(x)
+ end
+end
+
+def fun_l24_n412(x)
+ if (x < 1)
+ fun_l25_n261(x)
+ else
+ fun_l25_n106(x)
+ end
+end
+
+def fun_l24_n413(x)
+ if (x < 1)
+ fun_l25_n869(x)
+ else
+ fun_l25_n890(x)
+ end
+end
+
+def fun_l24_n414(x)
+ if (x < 1)
+ fun_l25_n784(x)
+ else
+ fun_l25_n147(x)
+ end
+end
+
+def fun_l24_n415(x)
+ if (x < 1)
+ fun_l25_n6(x)
+ else
+ fun_l25_n808(x)
+ end
+end
+
+def fun_l24_n416(x)
+ if (x < 1)
+ fun_l25_n940(x)
+ else
+ fun_l25_n680(x)
+ end
+end
+
+def fun_l24_n417(x)
+ if (x < 1)
+ fun_l25_n3(x)
+ else
+ fun_l25_n799(x)
+ end
+end
+
+def fun_l24_n418(x)
+ if (x < 1)
+ fun_l25_n196(x)
+ else
+ fun_l25_n785(x)
+ end
+end
+
+def fun_l24_n419(x)
+ if (x < 1)
+ fun_l25_n786(x)
+ else
+ fun_l25_n607(x)
+ end
+end
+
+def fun_l24_n420(x)
+ if (x < 1)
+ fun_l25_n720(x)
+ else
+ fun_l25_n74(x)
+ end
+end
+
+def fun_l24_n421(x)
+ if (x < 1)
+ fun_l25_n962(x)
+ else
+ fun_l25_n489(x)
+ end
+end
+
+def fun_l24_n422(x)
+ if (x < 1)
+ fun_l25_n231(x)
+ else
+ fun_l25_n878(x)
+ end
+end
+
+def fun_l24_n423(x)
+ if (x < 1)
+ fun_l25_n720(x)
+ else
+ fun_l25_n988(x)
+ end
+end
+
+def fun_l24_n424(x)
+ if (x < 1)
+ fun_l25_n883(x)
+ else
+ fun_l25_n510(x)
+ end
+end
+
+def fun_l24_n425(x)
+ if (x < 1)
+ fun_l25_n443(x)
+ else
+ fun_l25_n533(x)
+ end
+end
+
+def fun_l24_n426(x)
+ if (x < 1)
+ fun_l25_n541(x)
+ else
+ fun_l25_n747(x)
+ end
+end
+
+def fun_l24_n427(x)
+ if (x < 1)
+ fun_l25_n308(x)
+ else
+ fun_l25_n373(x)
+ end
+end
+
+def fun_l24_n428(x)
+ if (x < 1)
+ fun_l25_n484(x)
+ else
+ fun_l25_n632(x)
+ end
+end
+
+def fun_l24_n429(x)
+ if (x < 1)
+ fun_l25_n777(x)
+ else
+ fun_l25_n128(x)
+ end
+end
+
+def fun_l24_n430(x)
+ if (x < 1)
+ fun_l25_n729(x)
+ else
+ fun_l25_n644(x)
+ end
+end
+
+def fun_l24_n431(x)
+ if (x < 1)
+ fun_l25_n330(x)
+ else
+ fun_l25_n947(x)
+ end
+end
+
+def fun_l24_n432(x)
+ if (x < 1)
+ fun_l25_n929(x)
+ else
+ fun_l25_n80(x)
+ end
+end
+
+def fun_l24_n433(x)
+ if (x < 1)
+ fun_l25_n269(x)
+ else
+ fun_l25_n307(x)
+ end
+end
+
+def fun_l24_n434(x)
+ if (x < 1)
+ fun_l25_n824(x)
+ else
+ fun_l25_n451(x)
+ end
+end
+
+def fun_l24_n435(x)
+ if (x < 1)
+ fun_l25_n93(x)
+ else
+ fun_l25_n198(x)
+ end
+end
+
+def fun_l24_n436(x)
+ if (x < 1)
+ fun_l25_n359(x)
+ else
+ fun_l25_n412(x)
+ end
+end
+
+def fun_l24_n437(x)
+ if (x < 1)
+ fun_l25_n427(x)
+ else
+ fun_l25_n321(x)
+ end
+end
+
+def fun_l24_n438(x)
+ if (x < 1)
+ fun_l25_n765(x)
+ else
+ fun_l25_n223(x)
+ end
+end
+
+def fun_l24_n439(x)
+ if (x < 1)
+ fun_l25_n918(x)
+ else
+ fun_l25_n902(x)
+ end
+end
+
+def fun_l24_n440(x)
+ if (x < 1)
+ fun_l25_n320(x)
+ else
+ fun_l25_n428(x)
+ end
+end
+
+def fun_l24_n441(x)
+ if (x < 1)
+ fun_l25_n159(x)
+ else
+ fun_l25_n857(x)
+ end
+end
+
+def fun_l24_n442(x)
+ if (x < 1)
+ fun_l25_n505(x)
+ else
+ fun_l25_n565(x)
+ end
+end
+
+def fun_l24_n443(x)
+ if (x < 1)
+ fun_l25_n214(x)
+ else
+ fun_l25_n861(x)
+ end
+end
+
+def fun_l24_n444(x)
+ if (x < 1)
+ fun_l25_n185(x)
+ else
+ fun_l25_n255(x)
+ end
+end
+
+def fun_l24_n445(x)
+ if (x < 1)
+ fun_l25_n198(x)
+ else
+ fun_l25_n314(x)
+ end
+end
+
+def fun_l24_n446(x)
+ if (x < 1)
+ fun_l25_n334(x)
+ else
+ fun_l25_n633(x)
+ end
+end
+
+def fun_l24_n447(x)
+ if (x < 1)
+ fun_l25_n972(x)
+ else
+ fun_l25_n671(x)
+ end
+end
+
+def fun_l24_n448(x)
+ if (x < 1)
+ fun_l25_n608(x)
+ else
+ fun_l25_n720(x)
+ end
+end
+
+def fun_l24_n449(x)
+ if (x < 1)
+ fun_l25_n71(x)
+ else
+ fun_l25_n479(x)
+ end
+end
+
+def fun_l24_n450(x)
+ if (x < 1)
+ fun_l25_n689(x)
+ else
+ fun_l25_n716(x)
+ end
+end
+
+def fun_l24_n451(x)
+ if (x < 1)
+ fun_l25_n696(x)
+ else
+ fun_l25_n453(x)
+ end
+end
+
+def fun_l24_n452(x)
+ if (x < 1)
+ fun_l25_n804(x)
+ else
+ fun_l25_n508(x)
+ end
+end
+
+def fun_l24_n453(x)
+ if (x < 1)
+ fun_l25_n32(x)
+ else
+ fun_l25_n180(x)
+ end
+end
+
+def fun_l24_n454(x)
+ if (x < 1)
+ fun_l25_n493(x)
+ else
+ fun_l25_n200(x)
+ end
+end
+
+def fun_l24_n455(x)
+ if (x < 1)
+ fun_l25_n763(x)
+ else
+ fun_l25_n362(x)
+ end
+end
+
+def fun_l24_n456(x)
+ if (x < 1)
+ fun_l25_n488(x)
+ else
+ fun_l25_n202(x)
+ end
+end
+
+def fun_l24_n457(x)
+ if (x < 1)
+ fun_l25_n752(x)
+ else
+ fun_l25_n670(x)
+ end
+end
+
+def fun_l24_n458(x)
+ if (x < 1)
+ fun_l25_n462(x)
+ else
+ fun_l25_n457(x)
+ end
+end
+
+def fun_l24_n459(x)
+ if (x < 1)
+ fun_l25_n266(x)
+ else
+ fun_l25_n455(x)
+ end
+end
+
+def fun_l24_n460(x)
+ if (x < 1)
+ fun_l25_n173(x)
+ else
+ fun_l25_n873(x)
+ end
+end
+
+def fun_l24_n461(x)
+ if (x < 1)
+ fun_l25_n127(x)
+ else
+ fun_l25_n213(x)
+ end
+end
+
+def fun_l24_n462(x)
+ if (x < 1)
+ fun_l25_n579(x)
+ else
+ fun_l25_n44(x)
+ end
+end
+
+def fun_l24_n463(x)
+ if (x < 1)
+ fun_l25_n68(x)
+ else
+ fun_l25_n989(x)
+ end
+end
+
+def fun_l24_n464(x)
+ if (x < 1)
+ fun_l25_n826(x)
+ else
+ fun_l25_n883(x)
+ end
+end
+
+def fun_l24_n465(x)
+ if (x < 1)
+ fun_l25_n855(x)
+ else
+ fun_l25_n131(x)
+ end
+end
+
+def fun_l24_n466(x)
+ if (x < 1)
+ fun_l25_n923(x)
+ else
+ fun_l25_n433(x)
+ end
+end
+
+def fun_l24_n467(x)
+ if (x < 1)
+ fun_l25_n84(x)
+ else
+ fun_l25_n648(x)
+ end
+end
+
+def fun_l24_n468(x)
+ if (x < 1)
+ fun_l25_n53(x)
+ else
+ fun_l25_n766(x)
+ end
+end
+
+def fun_l24_n469(x)
+ if (x < 1)
+ fun_l25_n689(x)
+ else
+ fun_l25_n201(x)
+ end
+end
+
+def fun_l24_n470(x)
+ if (x < 1)
+ fun_l25_n361(x)
+ else
+ fun_l25_n459(x)
+ end
+end
+
+def fun_l24_n471(x)
+ if (x < 1)
+ fun_l25_n550(x)
+ else
+ fun_l25_n522(x)
+ end
+end
+
+def fun_l24_n472(x)
+ if (x < 1)
+ fun_l25_n128(x)
+ else
+ fun_l25_n417(x)
+ end
+end
+
+def fun_l24_n473(x)
+ if (x < 1)
+ fun_l25_n600(x)
+ else
+ fun_l25_n137(x)
+ end
+end
+
+def fun_l24_n474(x)
+ if (x < 1)
+ fun_l25_n72(x)
+ else
+ fun_l25_n548(x)
+ end
+end
+
+def fun_l24_n475(x)
+ if (x < 1)
+ fun_l25_n879(x)
+ else
+ fun_l25_n376(x)
+ end
+end
+
+def fun_l24_n476(x)
+ if (x < 1)
+ fun_l25_n822(x)
+ else
+ fun_l25_n695(x)
+ end
+end
+
+def fun_l24_n477(x)
+ if (x < 1)
+ fun_l25_n991(x)
+ else
+ fun_l25_n208(x)
+ end
+end
+
+def fun_l24_n478(x)
+ if (x < 1)
+ fun_l25_n17(x)
+ else
+ fun_l25_n332(x)
+ end
+end
+
+def fun_l24_n479(x)
+ if (x < 1)
+ fun_l25_n353(x)
+ else
+ fun_l25_n438(x)
+ end
+end
+
+def fun_l24_n480(x)
+ if (x < 1)
+ fun_l25_n109(x)
+ else
+ fun_l25_n360(x)
+ end
+end
+
+def fun_l24_n481(x)
+ if (x < 1)
+ fun_l25_n57(x)
+ else
+ fun_l25_n417(x)
+ end
+end
+
+def fun_l24_n482(x)
+ if (x < 1)
+ fun_l25_n903(x)
+ else
+ fun_l25_n486(x)
+ end
+end
+
+def fun_l24_n483(x)
+ if (x < 1)
+ fun_l25_n677(x)
+ else
+ fun_l25_n77(x)
+ end
+end
+
+def fun_l24_n484(x)
+ if (x < 1)
+ fun_l25_n117(x)
+ else
+ fun_l25_n582(x)
+ end
+end
+
+def fun_l24_n485(x)
+ if (x < 1)
+ fun_l25_n454(x)
+ else
+ fun_l25_n198(x)
+ end
+end
+
+def fun_l24_n486(x)
+ if (x < 1)
+ fun_l25_n779(x)
+ else
+ fun_l25_n301(x)
+ end
+end
+
+def fun_l24_n487(x)
+ if (x < 1)
+ fun_l25_n3(x)
+ else
+ fun_l25_n363(x)
+ end
+end
+
+def fun_l24_n488(x)
+ if (x < 1)
+ fun_l25_n84(x)
+ else
+ fun_l25_n793(x)
+ end
+end
+
+def fun_l24_n489(x)
+ if (x < 1)
+ fun_l25_n344(x)
+ else
+ fun_l25_n342(x)
+ end
+end
+
+def fun_l24_n490(x)
+ if (x < 1)
+ fun_l25_n365(x)
+ else
+ fun_l25_n546(x)
+ end
+end
+
+def fun_l24_n491(x)
+ if (x < 1)
+ fun_l25_n431(x)
+ else
+ fun_l25_n193(x)
+ end
+end
+
+def fun_l24_n492(x)
+ if (x < 1)
+ fun_l25_n763(x)
+ else
+ fun_l25_n174(x)
+ end
+end
+
+def fun_l24_n493(x)
+ if (x < 1)
+ fun_l25_n231(x)
+ else
+ fun_l25_n435(x)
+ end
+end
+
+def fun_l24_n494(x)
+ if (x < 1)
+ fun_l25_n408(x)
+ else
+ fun_l25_n848(x)
+ end
+end
+
+def fun_l24_n495(x)
+ if (x < 1)
+ fun_l25_n955(x)
+ else
+ fun_l25_n232(x)
+ end
+end
+
+def fun_l24_n496(x)
+ if (x < 1)
+ fun_l25_n72(x)
+ else
+ fun_l25_n11(x)
+ end
+end
+
+def fun_l24_n497(x)
+ if (x < 1)
+ fun_l25_n196(x)
+ else
+ fun_l25_n180(x)
+ end
+end
+
+def fun_l24_n498(x)
+ if (x < 1)
+ fun_l25_n102(x)
+ else
+ fun_l25_n360(x)
+ end
+end
+
+def fun_l24_n499(x)
+ if (x < 1)
+ fun_l25_n755(x)
+ else
+ fun_l25_n760(x)
+ end
+end
+
+def fun_l24_n500(x)
+ if (x < 1)
+ fun_l25_n676(x)
+ else
+ fun_l25_n825(x)
+ end
+end
+
+def fun_l24_n501(x)
+ if (x < 1)
+ fun_l25_n203(x)
+ else
+ fun_l25_n731(x)
+ end
+end
+
+def fun_l24_n502(x)
+ if (x < 1)
+ fun_l25_n551(x)
+ else
+ fun_l25_n165(x)
+ end
+end
+
+def fun_l24_n503(x)
+ if (x < 1)
+ fun_l25_n702(x)
+ else
+ fun_l25_n779(x)
+ end
+end
+
+def fun_l24_n504(x)
+ if (x < 1)
+ fun_l25_n525(x)
+ else
+ fun_l25_n846(x)
+ end
+end
+
+def fun_l24_n505(x)
+ if (x < 1)
+ fun_l25_n97(x)
+ else
+ fun_l25_n331(x)
+ end
+end
+
+def fun_l24_n506(x)
+ if (x < 1)
+ fun_l25_n572(x)
+ else
+ fun_l25_n759(x)
+ end
+end
+
+def fun_l24_n507(x)
+ if (x < 1)
+ fun_l25_n402(x)
+ else
+ fun_l25_n460(x)
+ end
+end
+
+def fun_l24_n508(x)
+ if (x < 1)
+ fun_l25_n640(x)
+ else
+ fun_l25_n833(x)
+ end
+end
+
+def fun_l24_n509(x)
+ if (x < 1)
+ fun_l25_n190(x)
+ else
+ fun_l25_n524(x)
+ end
+end
+
+def fun_l24_n510(x)
+ if (x < 1)
+ fun_l25_n307(x)
+ else
+ fun_l25_n92(x)
+ end
+end
+
+def fun_l24_n511(x)
+ if (x < 1)
+ fun_l25_n444(x)
+ else
+ fun_l25_n593(x)
+ end
+end
+
+def fun_l24_n512(x)
+ if (x < 1)
+ fun_l25_n684(x)
+ else
+ fun_l25_n163(x)
+ end
+end
+
+def fun_l24_n513(x)
+ if (x < 1)
+ fun_l25_n998(x)
+ else
+ fun_l25_n582(x)
+ end
+end
+
+def fun_l24_n514(x)
+ if (x < 1)
+ fun_l25_n767(x)
+ else
+ fun_l25_n557(x)
+ end
+end
+
+def fun_l24_n515(x)
+ if (x < 1)
+ fun_l25_n893(x)
+ else
+ fun_l25_n179(x)
+ end
+end
+
+def fun_l24_n516(x)
+ if (x < 1)
+ fun_l25_n726(x)
+ else
+ fun_l25_n651(x)
+ end
+end
+
+def fun_l24_n517(x)
+ if (x < 1)
+ fun_l25_n57(x)
+ else
+ fun_l25_n454(x)
+ end
+end
+
+def fun_l24_n518(x)
+ if (x < 1)
+ fun_l25_n598(x)
+ else
+ fun_l25_n554(x)
+ end
+end
+
+def fun_l24_n519(x)
+ if (x < 1)
+ fun_l25_n437(x)
+ else
+ fun_l25_n349(x)
+ end
+end
+
+def fun_l24_n520(x)
+ if (x < 1)
+ fun_l25_n754(x)
+ else
+ fun_l25_n259(x)
+ end
+end
+
+def fun_l24_n521(x)
+ if (x < 1)
+ fun_l25_n856(x)
+ else
+ fun_l25_n155(x)
+ end
+end
+
+def fun_l24_n522(x)
+ if (x < 1)
+ fun_l25_n607(x)
+ else
+ fun_l25_n751(x)
+ end
+end
+
+def fun_l24_n523(x)
+ if (x < 1)
+ fun_l25_n510(x)
+ else
+ fun_l25_n297(x)
+ end
+end
+
+def fun_l24_n524(x)
+ if (x < 1)
+ fun_l25_n433(x)
+ else
+ fun_l25_n102(x)
+ end
+end
+
+def fun_l24_n525(x)
+ if (x < 1)
+ fun_l25_n173(x)
+ else
+ fun_l25_n487(x)
+ end
+end
+
+def fun_l24_n526(x)
+ if (x < 1)
+ fun_l25_n716(x)
+ else
+ fun_l25_n230(x)
+ end
+end
+
+def fun_l24_n527(x)
+ if (x < 1)
+ fun_l25_n511(x)
+ else
+ fun_l25_n272(x)
+ end
+end
+
+def fun_l24_n528(x)
+ if (x < 1)
+ fun_l25_n974(x)
+ else
+ fun_l25_n954(x)
+ end
+end
+
+def fun_l24_n529(x)
+ if (x < 1)
+ fun_l25_n92(x)
+ else
+ fun_l25_n704(x)
+ end
+end
+
+def fun_l24_n530(x)
+ if (x < 1)
+ fun_l25_n117(x)
+ else
+ fun_l25_n725(x)
+ end
+end
+
+def fun_l24_n531(x)
+ if (x < 1)
+ fun_l25_n817(x)
+ else
+ fun_l25_n6(x)
+ end
+end
+
+def fun_l24_n532(x)
+ if (x < 1)
+ fun_l25_n27(x)
+ else
+ fun_l25_n438(x)
+ end
+end
+
+def fun_l24_n533(x)
+ if (x < 1)
+ fun_l25_n964(x)
+ else
+ fun_l25_n291(x)
+ end
+end
+
+def fun_l24_n534(x)
+ if (x < 1)
+ fun_l25_n786(x)
+ else
+ fun_l25_n871(x)
+ end
+end
+
+def fun_l24_n535(x)
+ if (x < 1)
+ fun_l25_n79(x)
+ else
+ fun_l25_n786(x)
+ end
+end
+
+def fun_l24_n536(x)
+ if (x < 1)
+ fun_l25_n403(x)
+ else
+ fun_l25_n78(x)
+ end
+end
+
+def fun_l24_n537(x)
+ if (x < 1)
+ fun_l25_n20(x)
+ else
+ fun_l25_n239(x)
+ end
+end
+
+def fun_l24_n538(x)
+ if (x < 1)
+ fun_l25_n818(x)
+ else
+ fun_l25_n917(x)
+ end
+end
+
+def fun_l24_n539(x)
+ if (x < 1)
+ fun_l25_n598(x)
+ else
+ fun_l25_n708(x)
+ end
+end
+
+def fun_l24_n540(x)
+ if (x < 1)
+ fun_l25_n802(x)
+ else
+ fun_l25_n208(x)
+ end
+end
+
+def fun_l24_n541(x)
+ if (x < 1)
+ fun_l25_n962(x)
+ else
+ fun_l25_n487(x)
+ end
+end
+
+def fun_l24_n542(x)
+ if (x < 1)
+ fun_l25_n690(x)
+ else
+ fun_l25_n503(x)
+ end
+end
+
+def fun_l24_n543(x)
+ if (x < 1)
+ fun_l25_n548(x)
+ else
+ fun_l25_n295(x)
+ end
+end
+
+def fun_l24_n544(x)
+ if (x < 1)
+ fun_l25_n373(x)
+ else
+ fun_l25_n896(x)
+ end
+end
+
+def fun_l24_n545(x)
+ if (x < 1)
+ fun_l25_n759(x)
+ else
+ fun_l25_n171(x)
+ end
+end
+
+def fun_l24_n546(x)
+ if (x < 1)
+ fun_l25_n269(x)
+ else
+ fun_l25_n153(x)
+ end
+end
+
+def fun_l24_n547(x)
+ if (x < 1)
+ fun_l25_n489(x)
+ else
+ fun_l25_n628(x)
+ end
+end
+
+def fun_l24_n548(x)
+ if (x < 1)
+ fun_l25_n540(x)
+ else
+ fun_l25_n7(x)
+ end
+end
+
+def fun_l24_n549(x)
+ if (x < 1)
+ fun_l25_n916(x)
+ else
+ fun_l25_n365(x)
+ end
+end
+
+def fun_l24_n550(x)
+ if (x < 1)
+ fun_l25_n377(x)
+ else
+ fun_l25_n420(x)
+ end
+end
+
+def fun_l24_n551(x)
+ if (x < 1)
+ fun_l25_n331(x)
+ else
+ fun_l25_n568(x)
+ end
+end
+
+def fun_l24_n552(x)
+ if (x < 1)
+ fun_l25_n348(x)
+ else
+ fun_l25_n934(x)
+ end
+end
+
+def fun_l24_n553(x)
+ if (x < 1)
+ fun_l25_n676(x)
+ else
+ fun_l25_n142(x)
+ end
+end
+
+def fun_l24_n554(x)
+ if (x < 1)
+ fun_l25_n913(x)
+ else
+ fun_l25_n255(x)
+ end
+end
+
+def fun_l24_n555(x)
+ if (x < 1)
+ fun_l25_n873(x)
+ else
+ fun_l25_n951(x)
+ end
+end
+
+def fun_l24_n556(x)
+ if (x < 1)
+ fun_l25_n300(x)
+ else
+ fun_l25_n969(x)
+ end
+end
+
+def fun_l24_n557(x)
+ if (x < 1)
+ fun_l25_n674(x)
+ else
+ fun_l25_n290(x)
+ end
+end
+
+def fun_l24_n558(x)
+ if (x < 1)
+ fun_l25_n323(x)
+ else
+ fun_l25_n325(x)
+ end
+end
+
+def fun_l24_n559(x)
+ if (x < 1)
+ fun_l25_n547(x)
+ else
+ fun_l25_n207(x)
+ end
+end
+
+def fun_l24_n560(x)
+ if (x < 1)
+ fun_l25_n858(x)
+ else
+ fun_l25_n304(x)
+ end
+end
+
+def fun_l24_n561(x)
+ if (x < 1)
+ fun_l25_n831(x)
+ else
+ fun_l25_n840(x)
+ end
+end
+
+def fun_l24_n562(x)
+ if (x < 1)
+ fun_l25_n174(x)
+ else
+ fun_l25_n162(x)
+ end
+end
+
+def fun_l24_n563(x)
+ if (x < 1)
+ fun_l25_n662(x)
+ else
+ fun_l25_n676(x)
+ end
+end
+
+def fun_l24_n564(x)
+ if (x < 1)
+ fun_l25_n474(x)
+ else
+ fun_l25_n173(x)
+ end
+end
+
+def fun_l24_n565(x)
+ if (x < 1)
+ fun_l25_n232(x)
+ else
+ fun_l25_n57(x)
+ end
+end
+
+def fun_l24_n566(x)
+ if (x < 1)
+ fun_l25_n615(x)
+ else
+ fun_l25_n944(x)
+ end
+end
+
+def fun_l24_n567(x)
+ if (x < 1)
+ fun_l25_n586(x)
+ else
+ fun_l25_n183(x)
+ end
+end
+
+def fun_l24_n568(x)
+ if (x < 1)
+ fun_l25_n758(x)
+ else
+ fun_l25_n376(x)
+ end
+end
+
+def fun_l24_n569(x)
+ if (x < 1)
+ fun_l25_n755(x)
+ else
+ fun_l25_n903(x)
+ end
+end
+
+def fun_l24_n570(x)
+ if (x < 1)
+ fun_l25_n562(x)
+ else
+ fun_l25_n843(x)
+ end
+end
+
+def fun_l24_n571(x)
+ if (x < 1)
+ fun_l25_n369(x)
+ else
+ fun_l25_n712(x)
+ end
+end
+
+def fun_l24_n572(x)
+ if (x < 1)
+ fun_l25_n183(x)
+ else
+ fun_l25_n273(x)
+ end
+end
+
+def fun_l24_n573(x)
+ if (x < 1)
+ fun_l25_n150(x)
+ else
+ fun_l25_n309(x)
+ end
+end
+
+def fun_l24_n574(x)
+ if (x < 1)
+ fun_l25_n485(x)
+ else
+ fun_l25_n20(x)
+ end
+end
+
+def fun_l24_n575(x)
+ if (x < 1)
+ fun_l25_n325(x)
+ else
+ fun_l25_n770(x)
+ end
+end
+
+def fun_l24_n576(x)
+ if (x < 1)
+ fun_l25_n528(x)
+ else
+ fun_l25_n529(x)
+ end
+end
+
+def fun_l24_n577(x)
+ if (x < 1)
+ fun_l25_n557(x)
+ else
+ fun_l25_n416(x)
+ end
+end
+
+def fun_l24_n578(x)
+ if (x < 1)
+ fun_l25_n501(x)
+ else
+ fun_l25_n81(x)
+ end
+end
+
+def fun_l24_n579(x)
+ if (x < 1)
+ fun_l25_n355(x)
+ else
+ fun_l25_n391(x)
+ end
+end
+
+def fun_l24_n580(x)
+ if (x < 1)
+ fun_l25_n665(x)
+ else
+ fun_l25_n656(x)
+ end
+end
+
+def fun_l24_n581(x)
+ if (x < 1)
+ fun_l25_n496(x)
+ else
+ fun_l25_n933(x)
+ end
+end
+
+def fun_l24_n582(x)
+ if (x < 1)
+ fun_l25_n71(x)
+ else
+ fun_l25_n815(x)
+ end
+end
+
+def fun_l24_n583(x)
+ if (x < 1)
+ fun_l25_n488(x)
+ else
+ fun_l25_n587(x)
+ end
+end
+
+def fun_l24_n584(x)
+ if (x < 1)
+ fun_l25_n909(x)
+ else
+ fun_l25_n673(x)
+ end
+end
+
+def fun_l24_n585(x)
+ if (x < 1)
+ fun_l25_n452(x)
+ else
+ fun_l25_n774(x)
+ end
+end
+
+def fun_l24_n586(x)
+ if (x < 1)
+ fun_l25_n376(x)
+ else
+ fun_l25_n855(x)
+ end
+end
+
+def fun_l24_n587(x)
+ if (x < 1)
+ fun_l25_n452(x)
+ else
+ fun_l25_n331(x)
+ end
+end
+
+def fun_l24_n588(x)
+ if (x < 1)
+ fun_l25_n718(x)
+ else
+ fun_l25_n496(x)
+ end
+end
+
+def fun_l24_n589(x)
+ if (x < 1)
+ fun_l25_n923(x)
+ else
+ fun_l25_n633(x)
+ end
+end
+
+def fun_l24_n590(x)
+ if (x < 1)
+ fun_l25_n815(x)
+ else
+ fun_l25_n633(x)
+ end
+end
+
+def fun_l24_n591(x)
+ if (x < 1)
+ fun_l25_n699(x)
+ else
+ fun_l25_n609(x)
+ end
+end
+
+def fun_l24_n592(x)
+ if (x < 1)
+ fun_l25_n722(x)
+ else
+ fun_l25_n884(x)
+ end
+end
+
+def fun_l24_n593(x)
+ if (x < 1)
+ fun_l25_n580(x)
+ else
+ fun_l25_n48(x)
+ end
+end
+
+def fun_l24_n594(x)
+ if (x < 1)
+ fun_l25_n245(x)
+ else
+ fun_l25_n126(x)
+ end
+end
+
+def fun_l24_n595(x)
+ if (x < 1)
+ fun_l25_n778(x)
+ else
+ fun_l25_n989(x)
+ end
+end
+
+def fun_l24_n596(x)
+ if (x < 1)
+ fun_l25_n813(x)
+ else
+ fun_l25_n117(x)
+ end
+end
+
+def fun_l24_n597(x)
+ if (x < 1)
+ fun_l25_n622(x)
+ else
+ fun_l25_n293(x)
+ end
+end
+
+def fun_l24_n598(x)
+ if (x < 1)
+ fun_l25_n996(x)
+ else
+ fun_l25_n704(x)
+ end
+end
+
+def fun_l24_n599(x)
+ if (x < 1)
+ fun_l25_n173(x)
+ else
+ fun_l25_n336(x)
+ end
+end
+
+def fun_l24_n600(x)
+ if (x < 1)
+ fun_l25_n295(x)
+ else
+ fun_l25_n293(x)
+ end
+end
+
+def fun_l24_n601(x)
+ if (x < 1)
+ fun_l25_n104(x)
+ else
+ fun_l25_n907(x)
+ end
+end
+
+def fun_l24_n602(x)
+ if (x < 1)
+ fun_l25_n136(x)
+ else
+ fun_l25_n915(x)
+ end
+end
+
+def fun_l24_n603(x)
+ if (x < 1)
+ fun_l25_n19(x)
+ else
+ fun_l25_n113(x)
+ end
+end
+
+def fun_l24_n604(x)
+ if (x < 1)
+ fun_l25_n389(x)
+ else
+ fun_l25_n863(x)
+ end
+end
+
+def fun_l24_n605(x)
+ if (x < 1)
+ fun_l25_n20(x)
+ else
+ fun_l25_n830(x)
+ end
+end
+
+def fun_l24_n606(x)
+ if (x < 1)
+ fun_l25_n723(x)
+ else
+ fun_l25_n956(x)
+ end
+end
+
+def fun_l24_n607(x)
+ if (x < 1)
+ fun_l25_n765(x)
+ else
+ fun_l25_n27(x)
+ end
+end
+
+def fun_l24_n608(x)
+ if (x < 1)
+ fun_l25_n682(x)
+ else
+ fun_l25_n953(x)
+ end
+end
+
+def fun_l24_n609(x)
+ if (x < 1)
+ fun_l25_n501(x)
+ else
+ fun_l25_n81(x)
+ end
+end
+
+def fun_l24_n610(x)
+ if (x < 1)
+ fun_l25_n896(x)
+ else
+ fun_l25_n192(x)
+ end
+end
+
+def fun_l24_n611(x)
+ if (x < 1)
+ fun_l25_n605(x)
+ else
+ fun_l25_n443(x)
+ end
+end
+
+def fun_l24_n612(x)
+ if (x < 1)
+ fun_l25_n298(x)
+ else
+ fun_l25_n818(x)
+ end
+end
+
+def fun_l24_n613(x)
+ if (x < 1)
+ fun_l25_n289(x)
+ else
+ fun_l25_n227(x)
+ end
+end
+
+def fun_l24_n614(x)
+ if (x < 1)
+ fun_l25_n511(x)
+ else
+ fun_l25_n460(x)
+ end
+end
+
+def fun_l24_n615(x)
+ if (x < 1)
+ fun_l25_n774(x)
+ else
+ fun_l25_n794(x)
+ end
+end
+
+def fun_l24_n616(x)
+ if (x < 1)
+ fun_l25_n933(x)
+ else
+ fun_l25_n448(x)
+ end
+end
+
+def fun_l24_n617(x)
+ if (x < 1)
+ fun_l25_n239(x)
+ else
+ fun_l25_n156(x)
+ end
+end
+
+def fun_l24_n618(x)
+ if (x < 1)
+ fun_l25_n713(x)
+ else
+ fun_l25_n337(x)
+ end
+end
+
+def fun_l24_n619(x)
+ if (x < 1)
+ fun_l25_n450(x)
+ else
+ fun_l25_n282(x)
+ end
+end
+
+def fun_l24_n620(x)
+ if (x < 1)
+ fun_l25_n97(x)
+ else
+ fun_l25_n360(x)
+ end
+end
+
+def fun_l24_n621(x)
+ if (x < 1)
+ fun_l25_n197(x)
+ else
+ fun_l25_n406(x)
+ end
+end
+
+def fun_l24_n622(x)
+ if (x < 1)
+ fun_l25_n791(x)
+ else
+ fun_l25_n876(x)
+ end
+end
+
+def fun_l24_n623(x)
+ if (x < 1)
+ fun_l25_n989(x)
+ else
+ fun_l25_n616(x)
+ end
+end
+
+def fun_l24_n624(x)
+ if (x < 1)
+ fun_l25_n754(x)
+ else
+ fun_l25_n605(x)
+ end
+end
+
+def fun_l24_n625(x)
+ if (x < 1)
+ fun_l25_n113(x)
+ else
+ fun_l25_n400(x)
+ end
+end
+
+def fun_l24_n626(x)
+ if (x < 1)
+ fun_l25_n6(x)
+ else
+ fun_l25_n742(x)
+ end
+end
+
+def fun_l24_n627(x)
+ if (x < 1)
+ fun_l25_n916(x)
+ else
+ fun_l25_n5(x)
+ end
+end
+
+def fun_l24_n628(x)
+ if (x < 1)
+ fun_l25_n5(x)
+ else
+ fun_l25_n327(x)
+ end
+end
+
+def fun_l24_n629(x)
+ if (x < 1)
+ fun_l25_n867(x)
+ else
+ fun_l25_n37(x)
+ end
+end
+
+def fun_l24_n630(x)
+ if (x < 1)
+ fun_l25_n409(x)
+ else
+ fun_l25_n137(x)
+ end
+end
+
+def fun_l24_n631(x)
+ if (x < 1)
+ fun_l25_n128(x)
+ else
+ fun_l25_n499(x)
+ end
+end
+
+def fun_l24_n632(x)
+ if (x < 1)
+ fun_l25_n694(x)
+ else
+ fun_l25_n983(x)
+ end
+end
+
+def fun_l24_n633(x)
+ if (x < 1)
+ fun_l25_n62(x)
+ else
+ fun_l25_n538(x)
+ end
+end
+
+def fun_l24_n634(x)
+ if (x < 1)
+ fun_l25_n740(x)
+ else
+ fun_l25_n795(x)
+ end
+end
+
+def fun_l24_n635(x)
+ if (x < 1)
+ fun_l25_n597(x)
+ else
+ fun_l25_n557(x)
+ end
+end
+
+def fun_l24_n636(x)
+ if (x < 1)
+ fun_l25_n642(x)
+ else
+ fun_l25_n40(x)
+ end
+end
+
+def fun_l24_n637(x)
+ if (x < 1)
+ fun_l25_n303(x)
+ else
+ fun_l25_n931(x)
+ end
+end
+
+def fun_l24_n638(x)
+ if (x < 1)
+ fun_l25_n977(x)
+ else
+ fun_l25_n848(x)
+ end
+end
+
+def fun_l24_n639(x)
+ if (x < 1)
+ fun_l25_n983(x)
+ else
+ fun_l25_n11(x)
+ end
+end
+
+def fun_l24_n640(x)
+ if (x < 1)
+ fun_l25_n258(x)
+ else
+ fun_l25_n280(x)
+ end
+end
+
+def fun_l24_n641(x)
+ if (x < 1)
+ fun_l25_n553(x)
+ else
+ fun_l25_n351(x)
+ end
+end
+
+def fun_l24_n642(x)
+ if (x < 1)
+ fun_l25_n4(x)
+ else
+ fun_l25_n375(x)
+ end
+end
+
+def fun_l24_n643(x)
+ if (x < 1)
+ fun_l25_n678(x)
+ else
+ fun_l25_n139(x)
+ end
+end
+
+def fun_l24_n644(x)
+ if (x < 1)
+ fun_l25_n193(x)
+ else
+ fun_l25_n490(x)
+ end
+end
+
+def fun_l24_n645(x)
+ if (x < 1)
+ fun_l25_n146(x)
+ else
+ fun_l25_n450(x)
+ end
+end
+
+def fun_l24_n646(x)
+ if (x < 1)
+ fun_l25_n813(x)
+ else
+ fun_l25_n59(x)
+ end
+end
+
+def fun_l24_n647(x)
+ if (x < 1)
+ fun_l25_n726(x)
+ else
+ fun_l25_n792(x)
+ end
+end
+
+def fun_l24_n648(x)
+ if (x < 1)
+ fun_l25_n508(x)
+ else
+ fun_l25_n496(x)
+ end
+end
+
+def fun_l24_n649(x)
+ if (x < 1)
+ fun_l25_n231(x)
+ else
+ fun_l25_n688(x)
+ end
+end
+
+def fun_l24_n650(x)
+ if (x < 1)
+ fun_l25_n602(x)
+ else
+ fun_l25_n641(x)
+ end
+end
+
+def fun_l24_n651(x)
+ if (x < 1)
+ fun_l25_n101(x)
+ else
+ fun_l25_n394(x)
+ end
+end
+
+def fun_l24_n652(x)
+ if (x < 1)
+ fun_l25_n454(x)
+ else
+ fun_l25_n466(x)
+ end
+end
+
+def fun_l24_n653(x)
+ if (x < 1)
+ fun_l25_n147(x)
+ else
+ fun_l25_n116(x)
+ end
+end
+
+def fun_l24_n654(x)
+ if (x < 1)
+ fun_l25_n83(x)
+ else
+ fun_l25_n951(x)
+ end
+end
+
+def fun_l24_n655(x)
+ if (x < 1)
+ fun_l25_n667(x)
+ else
+ fun_l25_n293(x)
+ end
+end
+
+def fun_l24_n656(x)
+ if (x < 1)
+ fun_l25_n413(x)
+ else
+ fun_l25_n708(x)
+ end
+end
+
+def fun_l24_n657(x)
+ if (x < 1)
+ fun_l25_n495(x)
+ else
+ fun_l25_n277(x)
+ end
+end
+
+def fun_l24_n658(x)
+ if (x < 1)
+ fun_l25_n926(x)
+ else
+ fun_l25_n624(x)
+ end
+end
+
+def fun_l24_n659(x)
+ if (x < 1)
+ fun_l25_n612(x)
+ else
+ fun_l25_n666(x)
+ end
+end
+
+def fun_l24_n660(x)
+ if (x < 1)
+ fun_l25_n32(x)
+ else
+ fun_l25_n290(x)
+ end
+end
+
+def fun_l24_n661(x)
+ if (x < 1)
+ fun_l25_n674(x)
+ else
+ fun_l25_n937(x)
+ end
+end
+
+def fun_l24_n662(x)
+ if (x < 1)
+ fun_l25_n556(x)
+ else
+ fun_l25_n576(x)
+ end
+end
+
+def fun_l24_n663(x)
+ if (x < 1)
+ fun_l25_n763(x)
+ else
+ fun_l25_n898(x)
+ end
+end
+
+def fun_l24_n664(x)
+ if (x < 1)
+ fun_l25_n564(x)
+ else
+ fun_l25_n478(x)
+ end
+end
+
+def fun_l24_n665(x)
+ if (x < 1)
+ fun_l25_n515(x)
+ else
+ fun_l25_n991(x)
+ end
+end
+
+def fun_l24_n666(x)
+ if (x < 1)
+ fun_l25_n737(x)
+ else
+ fun_l25_n936(x)
+ end
+end
+
+def fun_l24_n667(x)
+ if (x < 1)
+ fun_l25_n829(x)
+ else
+ fun_l25_n350(x)
+ end
+end
+
+def fun_l24_n668(x)
+ if (x < 1)
+ fun_l25_n59(x)
+ else
+ fun_l25_n979(x)
+ end
+end
+
+def fun_l24_n669(x)
+ if (x < 1)
+ fun_l25_n866(x)
+ else
+ fun_l25_n624(x)
+ end
+end
+
+def fun_l24_n670(x)
+ if (x < 1)
+ fun_l25_n572(x)
+ else
+ fun_l25_n203(x)
+ end
+end
+
+def fun_l24_n671(x)
+ if (x < 1)
+ fun_l25_n96(x)
+ else
+ fun_l25_n862(x)
+ end
+end
+
+def fun_l24_n672(x)
+ if (x < 1)
+ fun_l25_n979(x)
+ else
+ fun_l25_n484(x)
+ end
+end
+
+def fun_l24_n673(x)
+ if (x < 1)
+ fun_l25_n20(x)
+ else
+ fun_l25_n201(x)
+ end
+end
+
+def fun_l24_n674(x)
+ if (x < 1)
+ fun_l25_n109(x)
+ else
+ fun_l25_n788(x)
+ end
+end
+
+def fun_l24_n675(x)
+ if (x < 1)
+ fun_l25_n792(x)
+ else
+ fun_l25_n132(x)
+ end
+end
+
+def fun_l24_n676(x)
+ if (x < 1)
+ fun_l25_n786(x)
+ else
+ fun_l25_n77(x)
+ end
+end
+
+def fun_l24_n677(x)
+ if (x < 1)
+ fun_l25_n21(x)
+ else
+ fun_l25_n96(x)
+ end
+end
+
+def fun_l24_n678(x)
+ if (x < 1)
+ fun_l25_n299(x)
+ else
+ fun_l25_n649(x)
+ end
+end
+
+def fun_l24_n679(x)
+ if (x < 1)
+ fun_l25_n247(x)
+ else
+ fun_l25_n607(x)
+ end
+end
+
+def fun_l24_n680(x)
+ if (x < 1)
+ fun_l25_n480(x)
+ else
+ fun_l25_n471(x)
+ end
+end
+
+def fun_l24_n681(x)
+ if (x < 1)
+ fun_l25_n277(x)
+ else
+ fun_l25_n460(x)
+ end
+end
+
+def fun_l24_n682(x)
+ if (x < 1)
+ fun_l25_n573(x)
+ else
+ fun_l25_n193(x)
+ end
+end
+
+def fun_l24_n683(x)
+ if (x < 1)
+ fun_l25_n741(x)
+ else
+ fun_l25_n441(x)
+ end
+end
+
+def fun_l24_n684(x)
+ if (x < 1)
+ fun_l25_n821(x)
+ else
+ fun_l25_n24(x)
+ end
+end
+
+def fun_l24_n685(x)
+ if (x < 1)
+ fun_l25_n150(x)
+ else
+ fun_l25_n530(x)
+ end
+end
+
+def fun_l24_n686(x)
+ if (x < 1)
+ fun_l25_n564(x)
+ else
+ fun_l25_n26(x)
+ end
+end
+
+def fun_l24_n687(x)
+ if (x < 1)
+ fun_l25_n872(x)
+ else
+ fun_l25_n522(x)
+ end
+end
+
+def fun_l24_n688(x)
+ if (x < 1)
+ fun_l25_n963(x)
+ else
+ fun_l25_n422(x)
+ end
+end
+
+def fun_l24_n689(x)
+ if (x < 1)
+ fun_l25_n418(x)
+ else
+ fun_l25_n900(x)
+ end
+end
+
+def fun_l24_n690(x)
+ if (x < 1)
+ fun_l25_n117(x)
+ else
+ fun_l25_n900(x)
+ end
+end
+
+def fun_l24_n691(x)
+ if (x < 1)
+ fun_l25_n412(x)
+ else
+ fun_l25_n466(x)
+ end
+end
+
+def fun_l24_n692(x)
+ if (x < 1)
+ fun_l25_n761(x)
+ else
+ fun_l25_n190(x)
+ end
+end
+
+def fun_l24_n693(x)
+ if (x < 1)
+ fun_l25_n875(x)
+ else
+ fun_l25_n222(x)
+ end
+end
+
+def fun_l24_n694(x)
+ if (x < 1)
+ fun_l25_n405(x)
+ else
+ fun_l25_n66(x)
+ end
+end
+
+def fun_l24_n695(x)
+ if (x < 1)
+ fun_l25_n570(x)
+ else
+ fun_l25_n801(x)
+ end
+end
+
+def fun_l24_n696(x)
+ if (x < 1)
+ fun_l25_n591(x)
+ else
+ fun_l25_n121(x)
+ end
+end
+
+def fun_l24_n697(x)
+ if (x < 1)
+ fun_l25_n27(x)
+ else
+ fun_l25_n610(x)
+ end
+end
+
+def fun_l24_n698(x)
+ if (x < 1)
+ fun_l25_n843(x)
+ else
+ fun_l25_n488(x)
+ end
+end
+
+def fun_l24_n699(x)
+ if (x < 1)
+ fun_l25_n946(x)
+ else
+ fun_l25_n164(x)
+ end
+end
+
+def fun_l24_n700(x)
+ if (x < 1)
+ fun_l25_n424(x)
+ else
+ fun_l25_n614(x)
+ end
+end
+
+def fun_l24_n701(x)
+ if (x < 1)
+ fun_l25_n692(x)
+ else
+ fun_l25_n893(x)
+ end
+end
+
+def fun_l24_n702(x)
+ if (x < 1)
+ fun_l25_n39(x)
+ else
+ fun_l25_n274(x)
+ end
+end
+
+def fun_l24_n703(x)
+ if (x < 1)
+ fun_l25_n814(x)
+ else
+ fun_l25_n281(x)
+ end
+end
+
+def fun_l24_n704(x)
+ if (x < 1)
+ fun_l25_n670(x)
+ else
+ fun_l25_n882(x)
+ end
+end
+
+def fun_l24_n705(x)
+ if (x < 1)
+ fun_l25_n498(x)
+ else
+ fun_l25_n881(x)
+ end
+end
+
+def fun_l24_n706(x)
+ if (x < 1)
+ fun_l25_n193(x)
+ else
+ fun_l25_n10(x)
+ end
+end
+
+def fun_l24_n707(x)
+ if (x < 1)
+ fun_l25_n531(x)
+ else
+ fun_l25_n870(x)
+ end
+end
+
+def fun_l24_n708(x)
+ if (x < 1)
+ fun_l25_n106(x)
+ else
+ fun_l25_n692(x)
+ end
+end
+
+def fun_l24_n709(x)
+ if (x < 1)
+ fun_l25_n484(x)
+ else
+ fun_l25_n700(x)
+ end
+end
+
+def fun_l24_n710(x)
+ if (x < 1)
+ fun_l25_n699(x)
+ else
+ fun_l25_n117(x)
+ end
+end
+
+def fun_l24_n711(x)
+ if (x < 1)
+ fun_l25_n138(x)
+ else
+ fun_l25_n532(x)
+ end
+end
+
+def fun_l24_n712(x)
+ if (x < 1)
+ fun_l25_n468(x)
+ else
+ fun_l25_n350(x)
+ end
+end
+
+def fun_l24_n713(x)
+ if (x < 1)
+ fun_l25_n906(x)
+ else
+ fun_l25_n25(x)
+ end
+end
+
+def fun_l24_n714(x)
+ if (x < 1)
+ fun_l25_n23(x)
+ else
+ fun_l25_n745(x)
+ end
+end
+
+def fun_l24_n715(x)
+ if (x < 1)
+ fun_l25_n917(x)
+ else
+ fun_l25_n942(x)
+ end
+end
+
+def fun_l24_n716(x)
+ if (x < 1)
+ fun_l25_n986(x)
+ else
+ fun_l25_n605(x)
+ end
+end
+
+def fun_l24_n717(x)
+ if (x < 1)
+ fun_l25_n771(x)
+ else
+ fun_l25_n100(x)
+ end
+end
+
+def fun_l24_n718(x)
+ if (x < 1)
+ fun_l25_n994(x)
+ else
+ fun_l25_n249(x)
+ end
+end
+
+def fun_l24_n719(x)
+ if (x < 1)
+ fun_l25_n368(x)
+ else
+ fun_l25_n657(x)
+ end
+end
+
+def fun_l24_n720(x)
+ if (x < 1)
+ fun_l25_n856(x)
+ else
+ fun_l25_n650(x)
+ end
+end
+
+def fun_l24_n721(x)
+ if (x < 1)
+ fun_l25_n667(x)
+ else
+ fun_l25_n609(x)
+ end
+end
+
+def fun_l24_n722(x)
+ if (x < 1)
+ fun_l25_n353(x)
+ else
+ fun_l25_n665(x)
+ end
+end
+
+def fun_l24_n723(x)
+ if (x < 1)
+ fun_l25_n520(x)
+ else
+ fun_l25_n771(x)
+ end
+end
+
+def fun_l24_n724(x)
+ if (x < 1)
+ fun_l25_n636(x)
+ else
+ fun_l25_n34(x)
+ end
+end
+
+def fun_l24_n725(x)
+ if (x < 1)
+ fun_l25_n222(x)
+ else
+ fun_l25_n444(x)
+ end
+end
+
+def fun_l24_n726(x)
+ if (x < 1)
+ fun_l25_n519(x)
+ else
+ fun_l25_n675(x)
+ end
+end
+
+def fun_l24_n727(x)
+ if (x < 1)
+ fun_l25_n739(x)
+ else
+ fun_l25_n910(x)
+ end
+end
+
+def fun_l24_n728(x)
+ if (x < 1)
+ fun_l25_n669(x)
+ else
+ fun_l25_n645(x)
+ end
+end
+
+def fun_l24_n729(x)
+ if (x < 1)
+ fun_l25_n358(x)
+ else
+ fun_l25_n316(x)
+ end
+end
+
+def fun_l24_n730(x)
+ if (x < 1)
+ fun_l25_n614(x)
+ else
+ fun_l25_n484(x)
+ end
+end
+
+def fun_l24_n731(x)
+ if (x < 1)
+ fun_l25_n640(x)
+ else
+ fun_l25_n613(x)
+ end
+end
+
+def fun_l24_n732(x)
+ if (x < 1)
+ fun_l25_n16(x)
+ else
+ fun_l25_n596(x)
+ end
+end
+
+def fun_l24_n733(x)
+ if (x < 1)
+ fun_l25_n780(x)
+ else
+ fun_l25_n673(x)
+ end
+end
+
+def fun_l24_n734(x)
+ if (x < 1)
+ fun_l25_n999(x)
+ else
+ fun_l25_n210(x)
+ end
+end
+
+def fun_l24_n735(x)
+ if (x < 1)
+ fun_l25_n915(x)
+ else
+ fun_l25_n788(x)
+ end
+end
+
+def fun_l24_n736(x)
+ if (x < 1)
+ fun_l25_n484(x)
+ else
+ fun_l25_n369(x)
+ end
+end
+
+def fun_l24_n737(x)
+ if (x < 1)
+ fun_l25_n851(x)
+ else
+ fun_l25_n674(x)
+ end
+end
+
+def fun_l24_n738(x)
+ if (x < 1)
+ fun_l25_n830(x)
+ else
+ fun_l25_n382(x)
+ end
+end
+
+def fun_l24_n739(x)
+ if (x < 1)
+ fun_l25_n861(x)
+ else
+ fun_l25_n482(x)
+ end
+end
+
+def fun_l24_n740(x)
+ if (x < 1)
+ fun_l25_n244(x)
+ else
+ fun_l25_n414(x)
+ end
+end
+
+def fun_l24_n741(x)
+ if (x < 1)
+ fun_l25_n829(x)
+ else
+ fun_l25_n846(x)
+ end
+end
+
+def fun_l24_n742(x)
+ if (x < 1)
+ fun_l25_n197(x)
+ else
+ fun_l25_n943(x)
+ end
+end
+
+def fun_l24_n743(x)
+ if (x < 1)
+ fun_l25_n290(x)
+ else
+ fun_l25_n394(x)
+ end
+end
+
+def fun_l24_n744(x)
+ if (x < 1)
+ fun_l25_n965(x)
+ else
+ fun_l25_n987(x)
+ end
+end
+
+def fun_l24_n745(x)
+ if (x < 1)
+ fun_l25_n104(x)
+ else
+ fun_l25_n369(x)
+ end
+end
+
+def fun_l24_n746(x)
+ if (x < 1)
+ fun_l25_n880(x)
+ else
+ fun_l25_n541(x)
+ end
+end
+
+def fun_l24_n747(x)
+ if (x < 1)
+ fun_l25_n345(x)
+ else
+ fun_l25_n155(x)
+ end
+end
+
+def fun_l24_n748(x)
+ if (x < 1)
+ fun_l25_n803(x)
+ else
+ fun_l25_n383(x)
+ end
+end
+
+def fun_l24_n749(x)
+ if (x < 1)
+ fun_l25_n848(x)
+ else
+ fun_l25_n340(x)
+ end
+end
+
+def fun_l24_n750(x)
+ if (x < 1)
+ fun_l25_n197(x)
+ else
+ fun_l25_n313(x)
+ end
+end
+
+def fun_l24_n751(x)
+ if (x < 1)
+ fun_l25_n253(x)
+ else
+ fun_l25_n99(x)
+ end
+end
+
+def fun_l24_n752(x)
+ if (x < 1)
+ fun_l25_n873(x)
+ else
+ fun_l25_n347(x)
+ end
+end
+
+def fun_l24_n753(x)
+ if (x < 1)
+ fun_l25_n849(x)
+ else
+ fun_l25_n627(x)
+ end
+end
+
+def fun_l24_n754(x)
+ if (x < 1)
+ fun_l25_n817(x)
+ else
+ fun_l25_n441(x)
+ end
+end
+
+def fun_l24_n755(x)
+ if (x < 1)
+ fun_l25_n235(x)
+ else
+ fun_l25_n602(x)
+ end
+end
+
+def fun_l24_n756(x)
+ if (x < 1)
+ fun_l25_n950(x)
+ else
+ fun_l25_n516(x)
+ end
+end
+
+def fun_l24_n757(x)
+ if (x < 1)
+ fun_l25_n646(x)
+ else
+ fun_l25_n996(x)
+ end
+end
+
+def fun_l24_n758(x)
+ if (x < 1)
+ fun_l25_n27(x)
+ else
+ fun_l25_n650(x)
+ end
+end
+
+def fun_l24_n759(x)
+ if (x < 1)
+ fun_l25_n290(x)
+ else
+ fun_l25_n852(x)
+ end
+end
+
+def fun_l24_n760(x)
+ if (x < 1)
+ fun_l25_n118(x)
+ else
+ fun_l25_n871(x)
+ end
+end
+
+def fun_l24_n761(x)
+ if (x < 1)
+ fun_l25_n372(x)
+ else
+ fun_l25_n537(x)
+ end
+end
+
+def fun_l24_n762(x)
+ if (x < 1)
+ fun_l25_n124(x)
+ else
+ fun_l25_n939(x)
+ end
+end
+
+def fun_l24_n763(x)
+ if (x < 1)
+ fun_l25_n163(x)
+ else
+ fun_l25_n787(x)
+ end
+end
+
+def fun_l24_n764(x)
+ if (x < 1)
+ fun_l25_n485(x)
+ else
+ fun_l25_n753(x)
+ end
+end
+
+def fun_l24_n765(x)
+ if (x < 1)
+ fun_l25_n181(x)
+ else
+ fun_l25_n595(x)
+ end
+end
+
+def fun_l24_n766(x)
+ if (x < 1)
+ fun_l25_n909(x)
+ else
+ fun_l25_n734(x)
+ end
+end
+
+def fun_l24_n767(x)
+ if (x < 1)
+ fun_l25_n980(x)
+ else
+ fun_l25_n673(x)
+ end
+end
+
+def fun_l24_n768(x)
+ if (x < 1)
+ fun_l25_n756(x)
+ else
+ fun_l25_n429(x)
+ end
+end
+
+def fun_l24_n769(x)
+ if (x < 1)
+ fun_l25_n301(x)
+ else
+ fun_l25_n197(x)
+ end
+end
+
+def fun_l24_n770(x)
+ if (x < 1)
+ fun_l25_n977(x)
+ else
+ fun_l25_n569(x)
+ end
+end
+
+def fun_l24_n771(x)
+ if (x < 1)
+ fun_l25_n829(x)
+ else
+ fun_l25_n34(x)
+ end
+end
+
+def fun_l24_n772(x)
+ if (x < 1)
+ fun_l25_n601(x)
+ else
+ fun_l25_n762(x)
+ end
+end
+
+def fun_l24_n773(x)
+ if (x < 1)
+ fun_l25_n790(x)
+ else
+ fun_l25_n282(x)
+ end
+end
+
+def fun_l24_n774(x)
+ if (x < 1)
+ fun_l25_n464(x)
+ else
+ fun_l25_n814(x)
+ end
+end
+
+def fun_l24_n775(x)
+ if (x < 1)
+ fun_l25_n562(x)
+ else
+ fun_l25_n543(x)
+ end
+end
+
+def fun_l24_n776(x)
+ if (x < 1)
+ fun_l25_n869(x)
+ else
+ fun_l25_n857(x)
+ end
+end
+
+def fun_l24_n777(x)
+ if (x < 1)
+ fun_l25_n206(x)
+ else
+ fun_l25_n369(x)
+ end
+end
+
+def fun_l24_n778(x)
+ if (x < 1)
+ fun_l25_n43(x)
+ else
+ fun_l25_n405(x)
+ end
+end
+
+def fun_l24_n779(x)
+ if (x < 1)
+ fun_l25_n116(x)
+ else
+ fun_l25_n644(x)
+ end
+end
+
+def fun_l24_n780(x)
+ if (x < 1)
+ fun_l25_n455(x)
+ else
+ fun_l25_n174(x)
+ end
+end
+
+def fun_l24_n781(x)
+ if (x < 1)
+ fun_l25_n234(x)
+ else
+ fun_l25_n887(x)
+ end
+end
+
+def fun_l24_n782(x)
+ if (x < 1)
+ fun_l25_n157(x)
+ else
+ fun_l25_n459(x)
+ end
+end
+
+def fun_l24_n783(x)
+ if (x < 1)
+ fun_l25_n441(x)
+ else
+ fun_l25_n830(x)
+ end
+end
+
+def fun_l24_n784(x)
+ if (x < 1)
+ fun_l25_n908(x)
+ else
+ fun_l25_n363(x)
+ end
+end
+
+def fun_l24_n785(x)
+ if (x < 1)
+ fun_l25_n495(x)
+ else
+ fun_l25_n790(x)
+ end
+end
+
+def fun_l24_n786(x)
+ if (x < 1)
+ fun_l25_n365(x)
+ else
+ fun_l25_n561(x)
+ end
+end
+
+def fun_l24_n787(x)
+ if (x < 1)
+ fun_l25_n419(x)
+ else
+ fun_l25_n471(x)
+ end
+end
+
+def fun_l24_n788(x)
+ if (x < 1)
+ fun_l25_n568(x)
+ else
+ fun_l25_n807(x)
+ end
+end
+
+def fun_l24_n789(x)
+ if (x < 1)
+ fun_l25_n148(x)
+ else
+ fun_l25_n476(x)
+ end
+end
+
+def fun_l24_n790(x)
+ if (x < 1)
+ fun_l25_n470(x)
+ else
+ fun_l25_n662(x)
+ end
+end
+
+def fun_l24_n791(x)
+ if (x < 1)
+ fun_l25_n307(x)
+ else
+ fun_l25_n828(x)
+ end
+end
+
+def fun_l24_n792(x)
+ if (x < 1)
+ fun_l25_n227(x)
+ else
+ fun_l25_n802(x)
+ end
+end
+
+def fun_l24_n793(x)
+ if (x < 1)
+ fun_l25_n891(x)
+ else
+ fun_l25_n561(x)
+ end
+end
+
+def fun_l24_n794(x)
+ if (x < 1)
+ fun_l25_n465(x)
+ else
+ fun_l25_n805(x)
+ end
+end
+
+def fun_l24_n795(x)
+ if (x < 1)
+ fun_l25_n869(x)
+ else
+ fun_l25_n250(x)
+ end
+end
+
+def fun_l24_n796(x)
+ if (x < 1)
+ fun_l25_n479(x)
+ else
+ fun_l25_n996(x)
+ end
+end
+
+def fun_l24_n797(x)
+ if (x < 1)
+ fun_l25_n773(x)
+ else
+ fun_l25_n294(x)
+ end
+end
+
+def fun_l24_n798(x)
+ if (x < 1)
+ fun_l25_n601(x)
+ else
+ fun_l25_n259(x)
+ end
+end
+
+def fun_l24_n799(x)
+ if (x < 1)
+ fun_l25_n334(x)
+ else
+ fun_l25_n696(x)
+ end
+end
+
+def fun_l24_n800(x)
+ if (x < 1)
+ fun_l25_n6(x)
+ else
+ fun_l25_n184(x)
+ end
+end
+
+def fun_l24_n801(x)
+ if (x < 1)
+ fun_l25_n345(x)
+ else
+ fun_l25_n476(x)
+ end
+end
+
+def fun_l24_n802(x)
+ if (x < 1)
+ fun_l25_n957(x)
+ else
+ fun_l25_n893(x)
+ end
+end
+
+def fun_l24_n803(x)
+ if (x < 1)
+ fun_l25_n541(x)
+ else
+ fun_l25_n562(x)
+ end
+end
+
+def fun_l24_n804(x)
+ if (x < 1)
+ fun_l25_n403(x)
+ else
+ fun_l25_n398(x)
+ end
+end
+
+def fun_l24_n805(x)
+ if (x < 1)
+ fun_l25_n759(x)
+ else
+ fun_l25_n861(x)
+ end
+end
+
+def fun_l24_n806(x)
+ if (x < 1)
+ fun_l25_n145(x)
+ else
+ fun_l25_n460(x)
+ end
+end
+
+def fun_l24_n807(x)
+ if (x < 1)
+ fun_l25_n960(x)
+ else
+ fun_l25_n865(x)
+ end
+end
+
+def fun_l24_n808(x)
+ if (x < 1)
+ fun_l25_n386(x)
+ else
+ fun_l25_n443(x)
+ end
+end
+
+def fun_l24_n809(x)
+ if (x < 1)
+ fun_l25_n789(x)
+ else
+ fun_l25_n295(x)
+ end
+end
+
+def fun_l24_n810(x)
+ if (x < 1)
+ fun_l25_n985(x)
+ else
+ fun_l25_n15(x)
+ end
+end
+
+def fun_l24_n811(x)
+ if (x < 1)
+ fun_l25_n976(x)
+ else
+ fun_l25_n636(x)
+ end
+end
+
+def fun_l24_n812(x)
+ if (x < 1)
+ fun_l25_n183(x)
+ else
+ fun_l25_n146(x)
+ end
+end
+
+def fun_l24_n813(x)
+ if (x < 1)
+ fun_l25_n457(x)
+ else
+ fun_l25_n141(x)
+ end
+end
+
+def fun_l24_n814(x)
+ if (x < 1)
+ fun_l25_n1(x)
+ else
+ fun_l25_n708(x)
+ end
+end
+
+def fun_l24_n815(x)
+ if (x < 1)
+ fun_l25_n696(x)
+ else
+ fun_l25_n898(x)
+ end
+end
+
+def fun_l24_n816(x)
+ if (x < 1)
+ fun_l25_n423(x)
+ else
+ fun_l25_n250(x)
+ end
+end
+
+def fun_l24_n817(x)
+ if (x < 1)
+ fun_l25_n432(x)
+ else
+ fun_l25_n918(x)
+ end
+end
+
+def fun_l24_n818(x)
+ if (x < 1)
+ fun_l25_n712(x)
+ else
+ fun_l25_n8(x)
+ end
+end
+
+def fun_l24_n819(x)
+ if (x < 1)
+ fun_l25_n331(x)
+ else
+ fun_l25_n194(x)
+ end
+end
+
+def fun_l24_n820(x)
+ if (x < 1)
+ fun_l25_n106(x)
+ else
+ fun_l25_n588(x)
+ end
+end
+
+def fun_l24_n821(x)
+ if (x < 1)
+ fun_l25_n662(x)
+ else
+ fun_l25_n365(x)
+ end
+end
+
+def fun_l24_n822(x)
+ if (x < 1)
+ fun_l25_n461(x)
+ else
+ fun_l25_n931(x)
+ end
+end
+
+def fun_l24_n823(x)
+ if (x < 1)
+ fun_l25_n243(x)
+ else
+ fun_l25_n26(x)
+ end
+end
+
+def fun_l24_n824(x)
+ if (x < 1)
+ fun_l25_n6(x)
+ else
+ fun_l25_n787(x)
+ end
+end
+
+def fun_l24_n825(x)
+ if (x < 1)
+ fun_l25_n536(x)
+ else
+ fun_l25_n721(x)
+ end
+end
+
+def fun_l24_n826(x)
+ if (x < 1)
+ fun_l25_n693(x)
+ else
+ fun_l25_n649(x)
+ end
+end
+
+def fun_l24_n827(x)
+ if (x < 1)
+ fun_l25_n662(x)
+ else
+ fun_l25_n981(x)
+ end
+end
+
+def fun_l24_n828(x)
+ if (x < 1)
+ fun_l25_n594(x)
+ else
+ fun_l25_n345(x)
+ end
+end
+
+def fun_l24_n829(x)
+ if (x < 1)
+ fun_l25_n917(x)
+ else
+ fun_l25_n665(x)
+ end
+end
+
+def fun_l24_n830(x)
+ if (x < 1)
+ fun_l25_n246(x)
+ else
+ fun_l25_n58(x)
+ end
+end
+
+def fun_l24_n831(x)
+ if (x < 1)
+ fun_l25_n415(x)
+ else
+ fun_l25_n617(x)
+ end
+end
+
+def fun_l24_n832(x)
+ if (x < 1)
+ fun_l25_n596(x)
+ else
+ fun_l25_n858(x)
+ end
+end
+
+def fun_l24_n833(x)
+ if (x < 1)
+ fun_l25_n810(x)
+ else
+ fun_l25_n532(x)
+ end
+end
+
+def fun_l24_n834(x)
+ if (x < 1)
+ fun_l25_n298(x)
+ else
+ fun_l25_n881(x)
+ end
+end
+
+def fun_l24_n835(x)
+ if (x < 1)
+ fun_l25_n791(x)
+ else
+ fun_l25_n344(x)
+ end
+end
+
+def fun_l24_n836(x)
+ if (x < 1)
+ fun_l25_n531(x)
+ else
+ fun_l25_n880(x)
+ end
+end
+
+def fun_l24_n837(x)
+ if (x < 1)
+ fun_l25_n571(x)
+ else
+ fun_l25_n306(x)
+ end
+end
+
+def fun_l24_n838(x)
+ if (x < 1)
+ fun_l25_n191(x)
+ else
+ fun_l25_n450(x)
+ end
+end
+
+def fun_l24_n839(x)
+ if (x < 1)
+ fun_l25_n777(x)
+ else
+ fun_l25_n234(x)
+ end
+end
+
+def fun_l24_n840(x)
+ if (x < 1)
+ fun_l25_n876(x)
+ else
+ fun_l25_n548(x)
+ end
+end
+
+def fun_l24_n841(x)
+ if (x < 1)
+ fun_l25_n83(x)
+ else
+ fun_l25_n346(x)
+ end
+end
+
+def fun_l24_n842(x)
+ if (x < 1)
+ fun_l25_n976(x)
+ else
+ fun_l25_n843(x)
+ end
+end
+
+def fun_l24_n843(x)
+ if (x < 1)
+ fun_l25_n559(x)
+ else
+ fun_l25_n424(x)
+ end
+end
+
+def fun_l24_n844(x)
+ if (x < 1)
+ fun_l25_n974(x)
+ else
+ fun_l25_n906(x)
+ end
+end
+
+def fun_l24_n845(x)
+ if (x < 1)
+ fun_l25_n274(x)
+ else
+ fun_l25_n528(x)
+ end
+end
+
+def fun_l24_n846(x)
+ if (x < 1)
+ fun_l25_n773(x)
+ else
+ fun_l25_n507(x)
+ end
+end
+
+def fun_l24_n847(x)
+ if (x < 1)
+ fun_l25_n80(x)
+ else
+ fun_l25_n274(x)
+ end
+end
+
+def fun_l24_n848(x)
+ if (x < 1)
+ fun_l25_n557(x)
+ else
+ fun_l25_n541(x)
+ end
+end
+
+def fun_l24_n849(x)
+ if (x < 1)
+ fun_l25_n208(x)
+ else
+ fun_l25_n765(x)
+ end
+end
+
+def fun_l24_n850(x)
+ if (x < 1)
+ fun_l25_n705(x)
+ else
+ fun_l25_n81(x)
+ end
+end
+
+def fun_l24_n851(x)
+ if (x < 1)
+ fun_l25_n151(x)
+ else
+ fun_l25_n706(x)
+ end
+end
+
+def fun_l24_n852(x)
+ if (x < 1)
+ fun_l25_n723(x)
+ else
+ fun_l25_n451(x)
+ end
+end
+
+def fun_l24_n853(x)
+ if (x < 1)
+ fun_l25_n155(x)
+ else
+ fun_l25_n48(x)
+ end
+end
+
+def fun_l24_n854(x)
+ if (x < 1)
+ fun_l25_n317(x)
+ else
+ fun_l25_n118(x)
+ end
+end
+
+def fun_l24_n855(x)
+ if (x < 1)
+ fun_l25_n794(x)
+ else
+ fun_l25_n880(x)
+ end
+end
+
+def fun_l24_n856(x)
+ if (x < 1)
+ fun_l25_n556(x)
+ else
+ fun_l25_n255(x)
+ end
+end
+
+def fun_l24_n857(x)
+ if (x < 1)
+ fun_l25_n665(x)
+ else
+ fun_l25_n640(x)
+ end
+end
+
+def fun_l24_n858(x)
+ if (x < 1)
+ fun_l25_n732(x)
+ else
+ fun_l25_n771(x)
+ end
+end
+
+def fun_l24_n859(x)
+ if (x < 1)
+ fun_l25_n367(x)
+ else
+ fun_l25_n616(x)
+ end
+end
+
+def fun_l24_n860(x)
+ if (x < 1)
+ fun_l25_n184(x)
+ else
+ fun_l25_n912(x)
+ end
+end
+
+def fun_l24_n861(x)
+ if (x < 1)
+ fun_l25_n916(x)
+ else
+ fun_l25_n66(x)
+ end
+end
+
+def fun_l24_n862(x)
+ if (x < 1)
+ fun_l25_n526(x)
+ else
+ fun_l25_n807(x)
+ end
+end
+
+def fun_l24_n863(x)
+ if (x < 1)
+ fun_l25_n83(x)
+ else
+ fun_l25_n180(x)
+ end
+end
+
+def fun_l24_n864(x)
+ if (x < 1)
+ fun_l25_n199(x)
+ else
+ fun_l25_n471(x)
+ end
+end
+
+def fun_l24_n865(x)
+ if (x < 1)
+ fun_l25_n763(x)
+ else
+ fun_l25_n16(x)
+ end
+end
+
+def fun_l24_n866(x)
+ if (x < 1)
+ fun_l25_n280(x)
+ else
+ fun_l25_n66(x)
+ end
+end
+
+def fun_l24_n867(x)
+ if (x < 1)
+ fun_l25_n366(x)
+ else
+ fun_l25_n143(x)
+ end
+end
+
+def fun_l24_n868(x)
+ if (x < 1)
+ fun_l25_n110(x)
+ else
+ fun_l25_n151(x)
+ end
+end
+
+def fun_l24_n869(x)
+ if (x < 1)
+ fun_l25_n936(x)
+ else
+ fun_l25_n153(x)
+ end
+end
+
+def fun_l24_n870(x)
+ if (x < 1)
+ fun_l25_n555(x)
+ else
+ fun_l25_n915(x)
+ end
+end
+
+def fun_l24_n871(x)
+ if (x < 1)
+ fun_l25_n199(x)
+ else
+ fun_l25_n613(x)
+ end
+end
+
+def fun_l24_n872(x)
+ if (x < 1)
+ fun_l25_n381(x)
+ else
+ fun_l25_n899(x)
+ end
+end
+
+def fun_l24_n873(x)
+ if (x < 1)
+ fun_l25_n64(x)
+ else
+ fun_l25_n337(x)
+ end
+end
+
+def fun_l24_n874(x)
+ if (x < 1)
+ fun_l25_n753(x)
+ else
+ fun_l25_n981(x)
+ end
+end
+
+def fun_l24_n875(x)
+ if (x < 1)
+ fun_l25_n113(x)
+ else
+ fun_l25_n126(x)
+ end
+end
+
+def fun_l24_n876(x)
+ if (x < 1)
+ fun_l25_n3(x)
+ else
+ fun_l25_n288(x)
+ end
+end
+
+def fun_l24_n877(x)
+ if (x < 1)
+ fun_l25_n359(x)
+ else
+ fun_l25_n596(x)
+ end
+end
+
+def fun_l24_n878(x)
+ if (x < 1)
+ fun_l25_n937(x)
+ else
+ fun_l25_n72(x)
+ end
+end
+
+def fun_l24_n879(x)
+ if (x < 1)
+ fun_l25_n495(x)
+ else
+ fun_l25_n368(x)
+ end
+end
+
+def fun_l24_n880(x)
+ if (x < 1)
+ fun_l25_n524(x)
+ else
+ fun_l25_n228(x)
+ end
+end
+
+def fun_l24_n881(x)
+ if (x < 1)
+ fun_l25_n438(x)
+ else
+ fun_l25_n986(x)
+ end
+end
+
+def fun_l24_n882(x)
+ if (x < 1)
+ fun_l25_n334(x)
+ else
+ fun_l25_n54(x)
+ end
+end
+
+def fun_l24_n883(x)
+ if (x < 1)
+ fun_l25_n612(x)
+ else
+ fun_l25_n126(x)
+ end
+end
+
+def fun_l24_n884(x)
+ if (x < 1)
+ fun_l25_n316(x)
+ else
+ fun_l25_n222(x)
+ end
+end
+
+def fun_l24_n885(x)
+ if (x < 1)
+ fun_l25_n915(x)
+ else
+ fun_l25_n971(x)
+ end
+end
+
+def fun_l24_n886(x)
+ if (x < 1)
+ fun_l25_n987(x)
+ else
+ fun_l25_n499(x)
+ end
+end
+
+def fun_l24_n887(x)
+ if (x < 1)
+ fun_l25_n476(x)
+ else
+ fun_l25_n280(x)
+ end
+end
+
+def fun_l24_n888(x)
+ if (x < 1)
+ fun_l25_n420(x)
+ else
+ fun_l25_n584(x)
+ end
+end
+
+def fun_l24_n889(x)
+ if (x < 1)
+ fun_l25_n560(x)
+ else
+ fun_l25_n767(x)
+ end
+end
+
+def fun_l24_n890(x)
+ if (x < 1)
+ fun_l25_n26(x)
+ else
+ fun_l25_n431(x)
+ end
+end
+
+def fun_l24_n891(x)
+ if (x < 1)
+ fun_l25_n107(x)
+ else
+ fun_l25_n803(x)
+ end
+end
+
+def fun_l24_n892(x)
+ if (x < 1)
+ fun_l25_n225(x)
+ else
+ fun_l25_n665(x)
+ end
+end
+
+def fun_l24_n893(x)
+ if (x < 1)
+ fun_l25_n19(x)
+ else
+ fun_l25_n507(x)
+ end
+end
+
+def fun_l24_n894(x)
+ if (x < 1)
+ fun_l25_n44(x)
+ else
+ fun_l25_n420(x)
+ end
+end
+
+def fun_l24_n895(x)
+ if (x < 1)
+ fun_l25_n526(x)
+ else
+ fun_l25_n871(x)
+ end
+end
+
+def fun_l24_n896(x)
+ if (x < 1)
+ fun_l25_n900(x)
+ else
+ fun_l25_n824(x)
+ end
+end
+
+def fun_l24_n897(x)
+ if (x < 1)
+ fun_l25_n105(x)
+ else
+ fun_l25_n602(x)
+ end
+end
+
+def fun_l24_n898(x)
+ if (x < 1)
+ fun_l25_n228(x)
+ else
+ fun_l25_n993(x)
+ end
+end
+
+def fun_l24_n899(x)
+ if (x < 1)
+ fun_l25_n330(x)
+ else
+ fun_l25_n60(x)
+ end
+end
+
+def fun_l24_n900(x)
+ if (x < 1)
+ fun_l25_n512(x)
+ else
+ fun_l25_n708(x)
+ end
+end
+
+def fun_l24_n901(x)
+ if (x < 1)
+ fun_l25_n791(x)
+ else
+ fun_l25_n554(x)
+ end
+end
+
+def fun_l24_n902(x)
+ if (x < 1)
+ fun_l25_n204(x)
+ else
+ fun_l25_n439(x)
+ end
+end
+
+def fun_l24_n903(x)
+ if (x < 1)
+ fun_l25_n577(x)
+ else
+ fun_l25_n174(x)
+ end
+end
+
+def fun_l24_n904(x)
+ if (x < 1)
+ fun_l25_n713(x)
+ else
+ fun_l25_n35(x)
+ end
+end
+
+def fun_l24_n905(x)
+ if (x < 1)
+ fun_l25_n290(x)
+ else
+ fun_l25_n342(x)
+ end
+end
+
+def fun_l24_n906(x)
+ if (x < 1)
+ fun_l25_n607(x)
+ else
+ fun_l25_n52(x)
+ end
+end
+
+def fun_l24_n907(x)
+ if (x < 1)
+ fun_l25_n72(x)
+ else
+ fun_l25_n169(x)
+ end
+end
+
+def fun_l24_n908(x)
+ if (x < 1)
+ fun_l25_n179(x)
+ else
+ fun_l25_n383(x)
+ end
+end
+
+def fun_l24_n909(x)
+ if (x < 1)
+ fun_l25_n52(x)
+ else
+ fun_l25_n504(x)
+ end
+end
+
+def fun_l24_n910(x)
+ if (x < 1)
+ fun_l25_n346(x)
+ else
+ fun_l25_n775(x)
+ end
+end
+
+def fun_l24_n911(x)
+ if (x < 1)
+ fun_l25_n535(x)
+ else
+ fun_l25_n210(x)
+ end
+end
+
+def fun_l24_n912(x)
+ if (x < 1)
+ fun_l25_n937(x)
+ else
+ fun_l25_n409(x)
+ end
+end
+
+def fun_l24_n913(x)
+ if (x < 1)
+ fun_l25_n889(x)
+ else
+ fun_l25_n463(x)
+ end
+end
+
+def fun_l24_n914(x)
+ if (x < 1)
+ fun_l25_n75(x)
+ else
+ fun_l25_n817(x)
+ end
+end
+
+def fun_l24_n915(x)
+ if (x < 1)
+ fun_l25_n277(x)
+ else
+ fun_l25_n3(x)
+ end
+end
+
+def fun_l24_n916(x)
+ if (x < 1)
+ fun_l25_n97(x)
+ else
+ fun_l25_n819(x)
+ end
+end
+
+def fun_l24_n917(x)
+ if (x < 1)
+ fun_l25_n412(x)
+ else
+ fun_l25_n851(x)
+ end
+end
+
+def fun_l24_n918(x)
+ if (x < 1)
+ fun_l25_n803(x)
+ else
+ fun_l25_n429(x)
+ end
+end
+
+def fun_l24_n919(x)
+ if (x < 1)
+ fun_l25_n12(x)
+ else
+ fun_l25_n434(x)
+ end
+end
+
+def fun_l24_n920(x)
+ if (x < 1)
+ fun_l25_n721(x)
+ else
+ fun_l25_n553(x)
+ end
+end
+
+def fun_l24_n921(x)
+ if (x < 1)
+ fun_l25_n438(x)
+ else
+ fun_l25_n211(x)
+ end
+end
+
+def fun_l24_n922(x)
+ if (x < 1)
+ fun_l25_n123(x)
+ else
+ fun_l25_n89(x)
+ end
+end
+
+def fun_l24_n923(x)
+ if (x < 1)
+ fun_l25_n696(x)
+ else
+ fun_l25_n78(x)
+ end
+end
+
+def fun_l24_n924(x)
+ if (x < 1)
+ fun_l25_n556(x)
+ else
+ fun_l25_n788(x)
+ end
+end
+
+def fun_l24_n925(x)
+ if (x < 1)
+ fun_l25_n928(x)
+ else
+ fun_l25_n797(x)
+ end
+end
+
+def fun_l24_n926(x)
+ if (x < 1)
+ fun_l25_n796(x)
+ else
+ fun_l25_n84(x)
+ end
+end
+
+def fun_l24_n927(x)
+ if (x < 1)
+ fun_l25_n874(x)
+ else
+ fun_l25_n255(x)
+ end
+end
+
+def fun_l24_n928(x)
+ if (x < 1)
+ fun_l25_n715(x)
+ else
+ fun_l25_n812(x)
+ end
+end
+
+def fun_l24_n929(x)
+ if (x < 1)
+ fun_l25_n384(x)
+ else
+ fun_l25_n859(x)
+ end
+end
+
+def fun_l24_n930(x)
+ if (x < 1)
+ fun_l25_n133(x)
+ else
+ fun_l25_n923(x)
+ end
+end
+
+def fun_l24_n931(x)
+ if (x < 1)
+ fun_l25_n712(x)
+ else
+ fun_l25_n850(x)
+ end
+end
+
+def fun_l24_n932(x)
+ if (x < 1)
+ fun_l25_n301(x)
+ else
+ fun_l25_n743(x)
+ end
+end
+
+def fun_l24_n933(x)
+ if (x < 1)
+ fun_l25_n554(x)
+ else
+ fun_l25_n4(x)
+ end
+end
+
+def fun_l24_n934(x)
+ if (x < 1)
+ fun_l25_n407(x)
+ else
+ fun_l25_n656(x)
+ end
+end
+
+def fun_l24_n935(x)
+ if (x < 1)
+ fun_l25_n109(x)
+ else
+ fun_l25_n356(x)
+ end
+end
+
+def fun_l24_n936(x)
+ if (x < 1)
+ fun_l25_n985(x)
+ else
+ fun_l25_n183(x)
+ end
+end
+
+def fun_l24_n937(x)
+ if (x < 1)
+ fun_l25_n365(x)
+ else
+ fun_l25_n949(x)
+ end
+end
+
+def fun_l24_n938(x)
+ if (x < 1)
+ fun_l25_n672(x)
+ else
+ fun_l25_n417(x)
+ end
+end
+
+def fun_l24_n939(x)
+ if (x < 1)
+ fun_l25_n360(x)
+ else
+ fun_l25_n271(x)
+ end
+end
+
+def fun_l24_n940(x)
+ if (x < 1)
+ fun_l25_n654(x)
+ else
+ fun_l25_n365(x)
+ end
+end
+
+def fun_l24_n941(x)
+ if (x < 1)
+ fun_l25_n836(x)
+ else
+ fun_l25_n303(x)
+ end
+end
+
+def fun_l24_n942(x)
+ if (x < 1)
+ fun_l25_n299(x)
+ else
+ fun_l25_n130(x)
+ end
+end
+
+def fun_l24_n943(x)
+ if (x < 1)
+ fun_l25_n566(x)
+ else
+ fun_l25_n347(x)
+ end
+end
+
+def fun_l24_n944(x)
+ if (x < 1)
+ fun_l25_n754(x)
+ else
+ fun_l25_n670(x)
+ end
+end
+
+def fun_l24_n945(x)
+ if (x < 1)
+ fun_l25_n484(x)
+ else
+ fun_l25_n278(x)
+ end
+end
+
+def fun_l24_n946(x)
+ if (x < 1)
+ fun_l25_n35(x)
+ else
+ fun_l25_n915(x)
+ end
+end
+
+def fun_l24_n947(x)
+ if (x < 1)
+ fun_l25_n488(x)
+ else
+ fun_l25_n664(x)
+ end
+end
+
+def fun_l24_n948(x)
+ if (x < 1)
+ fun_l25_n249(x)
+ else
+ fun_l25_n931(x)
+ end
+end
+
+def fun_l24_n949(x)
+ if (x < 1)
+ fun_l25_n165(x)
+ else
+ fun_l25_n101(x)
+ end
+end
+
+def fun_l24_n950(x)
+ if (x < 1)
+ fun_l25_n304(x)
+ else
+ fun_l25_n668(x)
+ end
+end
+
+def fun_l24_n951(x)
+ if (x < 1)
+ fun_l25_n279(x)
+ else
+ fun_l25_n600(x)
+ end
+end
+
+def fun_l24_n952(x)
+ if (x < 1)
+ fun_l25_n70(x)
+ else
+ fun_l25_n852(x)
+ end
+end
+
+def fun_l24_n953(x)
+ if (x < 1)
+ fun_l25_n419(x)
+ else
+ fun_l25_n856(x)
+ end
+end
+
+def fun_l24_n954(x)
+ if (x < 1)
+ fun_l25_n55(x)
+ else
+ fun_l25_n857(x)
+ end
+end
+
+def fun_l24_n955(x)
+ if (x < 1)
+ fun_l25_n122(x)
+ else
+ fun_l25_n658(x)
+ end
+end
+
+def fun_l24_n956(x)
+ if (x < 1)
+ fun_l25_n973(x)
+ else
+ fun_l25_n421(x)
+ end
+end
+
+def fun_l24_n957(x)
+ if (x < 1)
+ fun_l25_n82(x)
+ else
+ fun_l25_n264(x)
+ end
+end
+
+def fun_l24_n958(x)
+ if (x < 1)
+ fun_l25_n608(x)
+ else
+ fun_l25_n469(x)
+ end
+end
+
+def fun_l24_n959(x)
+ if (x < 1)
+ fun_l25_n823(x)
+ else
+ fun_l25_n320(x)
+ end
+end
+
+def fun_l24_n960(x)
+ if (x < 1)
+ fun_l25_n765(x)
+ else
+ fun_l25_n461(x)
+ end
+end
+
+def fun_l24_n961(x)
+ if (x < 1)
+ fun_l25_n343(x)
+ else
+ fun_l25_n18(x)
+ end
+end
+
+def fun_l24_n962(x)
+ if (x < 1)
+ fun_l25_n346(x)
+ else
+ fun_l25_n821(x)
+ end
+end
+
+def fun_l24_n963(x)
+ if (x < 1)
+ fun_l25_n80(x)
+ else
+ fun_l25_n949(x)
+ end
+end
+
+def fun_l24_n964(x)
+ if (x < 1)
+ fun_l25_n171(x)
+ else
+ fun_l25_n514(x)
+ end
+end
+
+def fun_l24_n965(x)
+ if (x < 1)
+ fun_l25_n625(x)
+ else
+ fun_l25_n768(x)
+ end
+end
+
+def fun_l24_n966(x)
+ if (x < 1)
+ fun_l25_n390(x)
+ else
+ fun_l25_n195(x)
+ end
+end
+
+def fun_l24_n967(x)
+ if (x < 1)
+ fun_l25_n774(x)
+ else
+ fun_l25_n928(x)
+ end
+end
+
+def fun_l24_n968(x)
+ if (x < 1)
+ fun_l25_n997(x)
+ else
+ fun_l25_n441(x)
+ end
+end
+
+def fun_l24_n969(x)
+ if (x < 1)
+ fun_l25_n865(x)
+ else
+ fun_l25_n418(x)
+ end
+end
+
+def fun_l24_n970(x)
+ if (x < 1)
+ fun_l25_n238(x)
+ else
+ fun_l25_n816(x)
+ end
+end
+
+def fun_l24_n971(x)
+ if (x < 1)
+ fun_l25_n521(x)
+ else
+ fun_l25_n427(x)
+ end
+end
+
+def fun_l24_n972(x)
+ if (x < 1)
+ fun_l25_n214(x)
+ else
+ fun_l25_n282(x)
+ end
+end
+
+def fun_l24_n973(x)
+ if (x < 1)
+ fun_l25_n611(x)
+ else
+ fun_l25_n439(x)
+ end
+end
+
+def fun_l24_n974(x)
+ if (x < 1)
+ fun_l25_n395(x)
+ else
+ fun_l25_n593(x)
+ end
+end
+
+def fun_l24_n975(x)
+ if (x < 1)
+ fun_l25_n720(x)
+ else
+ fun_l25_n477(x)
+ end
+end
+
+def fun_l24_n976(x)
+ if (x < 1)
+ fun_l25_n204(x)
+ else
+ fun_l25_n912(x)
+ end
+end
+
+def fun_l24_n977(x)
+ if (x < 1)
+ fun_l25_n703(x)
+ else
+ fun_l25_n651(x)
+ end
+end
+
+def fun_l24_n978(x)
+ if (x < 1)
+ fun_l25_n247(x)
+ else
+ fun_l25_n917(x)
+ end
+end
+
+def fun_l24_n979(x)
+ if (x < 1)
+ fun_l25_n792(x)
+ else
+ fun_l25_n320(x)
+ end
+end
+
+def fun_l24_n980(x)
+ if (x < 1)
+ fun_l25_n480(x)
+ else
+ fun_l25_n128(x)
+ end
+end
+
+def fun_l24_n981(x)
+ if (x < 1)
+ fun_l25_n848(x)
+ else
+ fun_l25_n344(x)
+ end
+end
+
+def fun_l24_n982(x)
+ if (x < 1)
+ fun_l25_n84(x)
+ else
+ fun_l25_n977(x)
+ end
+end
+
+def fun_l24_n983(x)
+ if (x < 1)
+ fun_l25_n213(x)
+ else
+ fun_l25_n131(x)
+ end
+end
+
+def fun_l24_n984(x)
+ if (x < 1)
+ fun_l25_n2(x)
+ else
+ fun_l25_n21(x)
+ end
+end
+
+def fun_l24_n985(x)
+ if (x < 1)
+ fun_l25_n301(x)
+ else
+ fun_l25_n910(x)
+ end
+end
+
+def fun_l24_n986(x)
+ if (x < 1)
+ fun_l25_n533(x)
+ else
+ fun_l25_n397(x)
+ end
+end
+
+def fun_l24_n987(x)
+ if (x < 1)
+ fun_l25_n226(x)
+ else
+ fun_l25_n281(x)
+ end
+end
+
+def fun_l24_n988(x)
+ if (x < 1)
+ fun_l25_n402(x)
+ else
+ fun_l25_n70(x)
+ end
+end
+
+def fun_l24_n989(x)
+ if (x < 1)
+ fun_l25_n190(x)
+ else
+ fun_l25_n70(x)
+ end
+end
+
+def fun_l24_n990(x)
+ if (x < 1)
+ fun_l25_n376(x)
+ else
+ fun_l25_n331(x)
+ end
+end
+
+def fun_l24_n991(x)
+ if (x < 1)
+ fun_l25_n915(x)
+ else
+ fun_l25_n234(x)
+ end
+end
+
+def fun_l24_n992(x)
+ if (x < 1)
+ fun_l25_n146(x)
+ else
+ fun_l25_n825(x)
+ end
+end
+
+def fun_l24_n993(x)
+ if (x < 1)
+ fun_l25_n877(x)
+ else
+ fun_l25_n237(x)
+ end
+end
+
+def fun_l24_n994(x)
+ if (x < 1)
+ fun_l25_n454(x)
+ else
+ fun_l25_n852(x)
+ end
+end
+
+def fun_l24_n995(x)
+ if (x < 1)
+ fun_l25_n45(x)
+ else
+ fun_l25_n337(x)
+ end
+end
+
+def fun_l24_n996(x)
+ if (x < 1)
+ fun_l25_n491(x)
+ else
+ fun_l25_n319(x)
+ end
+end
+
+def fun_l24_n997(x)
+ if (x < 1)
+ fun_l25_n216(x)
+ else
+ fun_l25_n249(x)
+ end
+end
+
+def fun_l24_n998(x)
+ if (x < 1)
+ fun_l25_n370(x)
+ else
+ fun_l25_n747(x)
+ end
+end
+
+def fun_l24_n999(x)
+ if (x < 1)
+ fun_l25_n584(x)
+ else
+ fun_l25_n813(x)
+ end
+end
+
+def fun_l25_n0(x)
+ if (x < 1)
+ fun_l26_n818(x)
+ else
+ fun_l26_n750(x)
+ end
+end
+
+def fun_l25_n1(x)
+ if (x < 1)
+ fun_l26_n725(x)
+ else
+ fun_l26_n848(x)
+ end
+end
+
+def fun_l25_n2(x)
+ if (x < 1)
+ fun_l26_n716(x)
+ else
+ fun_l26_n190(x)
+ end
+end
+
+def fun_l25_n3(x)
+ if (x < 1)
+ fun_l26_n977(x)
+ else
+ fun_l26_n222(x)
+ end
+end
+
+def fun_l25_n4(x)
+ if (x < 1)
+ fun_l26_n931(x)
+ else
+ fun_l26_n615(x)
+ end
+end
+
+def fun_l25_n5(x)
+ if (x < 1)
+ fun_l26_n720(x)
+ else
+ fun_l26_n440(x)
+ end
+end
+
+def fun_l25_n6(x)
+ if (x < 1)
+ fun_l26_n400(x)
+ else
+ fun_l26_n336(x)
+ end
+end
+
+def fun_l25_n7(x)
+ if (x < 1)
+ fun_l26_n109(x)
+ else
+ fun_l26_n74(x)
+ end
+end
+
+def fun_l25_n8(x)
+ if (x < 1)
+ fun_l26_n12(x)
+ else
+ fun_l26_n857(x)
+ end
+end
+
+def fun_l25_n9(x)
+ if (x < 1)
+ fun_l26_n778(x)
+ else
+ fun_l26_n286(x)
+ end
+end
+
+def fun_l25_n10(x)
+ if (x < 1)
+ fun_l26_n857(x)
+ else
+ fun_l26_n311(x)
+ end
+end
+
+def fun_l25_n11(x)
+ if (x < 1)
+ fun_l26_n204(x)
+ else
+ fun_l26_n348(x)
+ end
+end
+
+def fun_l25_n12(x)
+ if (x < 1)
+ fun_l26_n626(x)
+ else
+ fun_l26_n983(x)
+ end
+end
+
+def fun_l25_n13(x)
+ if (x < 1)
+ fun_l26_n417(x)
+ else
+ fun_l26_n334(x)
+ end
+end
+
+def fun_l25_n14(x)
+ if (x < 1)
+ fun_l26_n34(x)
+ else
+ fun_l26_n269(x)
+ end
+end
+
+def fun_l25_n15(x)
+ if (x < 1)
+ fun_l26_n184(x)
+ else
+ fun_l26_n183(x)
+ end
+end
+
+def fun_l25_n16(x)
+ if (x < 1)
+ fun_l26_n744(x)
+ else
+ fun_l26_n450(x)
+ end
+end
+
+def fun_l25_n17(x)
+ if (x < 1)
+ fun_l26_n763(x)
+ else
+ fun_l26_n390(x)
+ end
+end
+
+def fun_l25_n18(x)
+ if (x < 1)
+ fun_l26_n926(x)
+ else
+ fun_l26_n379(x)
+ end
+end
+
+def fun_l25_n19(x)
+ if (x < 1)
+ fun_l26_n746(x)
+ else
+ fun_l26_n946(x)
+ end
+end
+
+def fun_l25_n20(x)
+ if (x < 1)
+ fun_l26_n500(x)
+ else
+ fun_l26_n599(x)
+ end
+end
+
+def fun_l25_n21(x)
+ if (x < 1)
+ fun_l26_n757(x)
+ else
+ fun_l26_n725(x)
+ end
+end
+
+def fun_l25_n22(x)
+ if (x < 1)
+ fun_l26_n738(x)
+ else
+ fun_l26_n24(x)
+ end
+end
+
+def fun_l25_n23(x)
+ if (x < 1)
+ fun_l26_n350(x)
+ else
+ fun_l26_n344(x)
+ end
+end
+
+def fun_l25_n24(x)
+ if (x < 1)
+ fun_l26_n521(x)
+ else
+ fun_l26_n680(x)
+ end
+end
+
+def fun_l25_n25(x)
+ if (x < 1)
+ fun_l26_n647(x)
+ else
+ fun_l26_n604(x)
+ end
+end
+
+def fun_l25_n26(x)
+ if (x < 1)
+ fun_l26_n990(x)
+ else
+ fun_l26_n262(x)
+ end
+end
+
+def fun_l25_n27(x)
+ if (x < 1)
+ fun_l26_n309(x)
+ else
+ fun_l26_n759(x)
+ end
+end
+
+def fun_l25_n28(x)
+ if (x < 1)
+ fun_l26_n720(x)
+ else
+ fun_l26_n11(x)
+ end
+end
+
+def fun_l25_n29(x)
+ if (x < 1)
+ fun_l26_n761(x)
+ else
+ fun_l26_n690(x)
+ end
+end
+
+def fun_l25_n30(x)
+ if (x < 1)
+ fun_l26_n729(x)
+ else
+ fun_l26_n577(x)
+ end
+end
+
+def fun_l25_n31(x)
+ if (x < 1)
+ fun_l26_n321(x)
+ else
+ fun_l26_n608(x)
+ end
+end
+
+def fun_l25_n32(x)
+ if (x < 1)
+ fun_l26_n325(x)
+ else
+ fun_l26_n541(x)
+ end
+end
+
+def fun_l25_n33(x)
+ if (x < 1)
+ fun_l26_n644(x)
+ else
+ fun_l26_n15(x)
+ end
+end
+
+def fun_l25_n34(x)
+ if (x < 1)
+ fun_l26_n53(x)
+ else
+ fun_l26_n887(x)
+ end
+end
+
+def fun_l25_n35(x)
+ if (x < 1)
+ fun_l26_n470(x)
+ else
+ fun_l26_n564(x)
+ end
+end
+
+def fun_l25_n36(x)
+ if (x < 1)
+ fun_l26_n198(x)
+ else
+ fun_l26_n542(x)
+ end
+end
+
+def fun_l25_n37(x)
+ if (x < 1)
+ fun_l26_n455(x)
+ else
+ fun_l26_n373(x)
+ end
+end
+
+def fun_l25_n38(x)
+ if (x < 1)
+ fun_l26_n216(x)
+ else
+ fun_l26_n86(x)
+ end
+end
+
+def fun_l25_n39(x)
+ if (x < 1)
+ fun_l26_n417(x)
+ else
+ fun_l26_n50(x)
+ end
+end
+
+def fun_l25_n40(x)
+ if (x < 1)
+ fun_l26_n955(x)
+ else
+ fun_l26_n979(x)
+ end
+end
+
+def fun_l25_n41(x)
+ if (x < 1)
+ fun_l26_n692(x)
+ else
+ fun_l26_n935(x)
+ end
+end
+
+def fun_l25_n42(x)
+ if (x < 1)
+ fun_l26_n360(x)
+ else
+ fun_l26_n246(x)
+ end
+end
+
+def fun_l25_n43(x)
+ if (x < 1)
+ fun_l26_n826(x)
+ else
+ fun_l26_n433(x)
+ end
+end
+
+def fun_l25_n44(x)
+ if (x < 1)
+ fun_l26_n222(x)
+ else
+ fun_l26_n101(x)
+ end
+end
+
+def fun_l25_n45(x)
+ if (x < 1)
+ fun_l26_n590(x)
+ else
+ fun_l26_n398(x)
+ end
+end
+
+def fun_l25_n46(x)
+ if (x < 1)
+ fun_l26_n959(x)
+ else
+ fun_l26_n620(x)
+ end
+end
+
+def fun_l25_n47(x)
+ if (x < 1)
+ fun_l26_n530(x)
+ else
+ fun_l26_n503(x)
+ end
+end
+
+def fun_l25_n48(x)
+ if (x < 1)
+ fun_l26_n615(x)
+ else
+ fun_l26_n640(x)
+ end
+end
+
+def fun_l25_n49(x)
+ if (x < 1)
+ fun_l26_n774(x)
+ else
+ fun_l26_n23(x)
+ end
+end
+
+def fun_l25_n50(x)
+ if (x < 1)
+ fun_l26_n344(x)
+ else
+ fun_l26_n303(x)
+ end
+end
+
+def fun_l25_n51(x)
+ if (x < 1)
+ fun_l26_n54(x)
+ else
+ fun_l26_n26(x)
+ end
+end
+
+def fun_l25_n52(x)
+ if (x < 1)
+ fun_l26_n545(x)
+ else
+ fun_l26_n791(x)
+ end
+end
+
+def fun_l25_n53(x)
+ if (x < 1)
+ fun_l26_n554(x)
+ else
+ fun_l26_n42(x)
+ end
+end
+
+def fun_l25_n54(x)
+ if (x < 1)
+ fun_l26_n419(x)
+ else
+ fun_l26_n179(x)
+ end
+end
+
+def fun_l25_n55(x)
+ if (x < 1)
+ fun_l26_n845(x)
+ else
+ fun_l26_n641(x)
+ end
+end
+
+def fun_l25_n56(x)
+ if (x < 1)
+ fun_l26_n389(x)
+ else
+ fun_l26_n547(x)
+ end
+end
+
+def fun_l25_n57(x)
+ if (x < 1)
+ fun_l26_n744(x)
+ else
+ fun_l26_n946(x)
+ end
+end
+
+def fun_l25_n58(x)
+ if (x < 1)
+ fun_l26_n410(x)
+ else
+ fun_l26_n909(x)
+ end
+end
+
+def fun_l25_n59(x)
+ if (x < 1)
+ fun_l26_n126(x)
+ else
+ fun_l26_n382(x)
+ end
+end
+
+def fun_l25_n60(x)
+ if (x < 1)
+ fun_l26_n355(x)
+ else
+ fun_l26_n902(x)
+ end
+end
+
+def fun_l25_n61(x)
+ if (x < 1)
+ fun_l26_n759(x)
+ else
+ fun_l26_n445(x)
+ end
+end
+
+def fun_l25_n62(x)
+ if (x < 1)
+ fun_l26_n859(x)
+ else
+ fun_l26_n362(x)
+ end
+end
+
+def fun_l25_n63(x)
+ if (x < 1)
+ fun_l26_n488(x)
+ else
+ fun_l26_n725(x)
+ end
+end
+
+def fun_l25_n64(x)
+ if (x < 1)
+ fun_l26_n268(x)
+ else
+ fun_l26_n865(x)
+ end
+end
+
+def fun_l25_n65(x)
+ if (x < 1)
+ fun_l26_n33(x)
+ else
+ fun_l26_n417(x)
+ end
+end
+
+def fun_l25_n66(x)
+ if (x < 1)
+ fun_l26_n281(x)
+ else
+ fun_l26_n485(x)
+ end
+end
+
+def fun_l25_n67(x)
+ if (x < 1)
+ fun_l26_n627(x)
+ else
+ fun_l26_n200(x)
+ end
+end
+
+def fun_l25_n68(x)
+ if (x < 1)
+ fun_l26_n392(x)
+ else
+ fun_l26_n639(x)
+ end
+end
+
+def fun_l25_n69(x)
+ if (x < 1)
+ fun_l26_n799(x)
+ else
+ fun_l26_n242(x)
+ end
+end
+
+def fun_l25_n70(x)
+ if (x < 1)
+ fun_l26_n783(x)
+ else
+ fun_l26_n564(x)
+ end
+end
+
+def fun_l25_n71(x)
+ if (x < 1)
+ fun_l26_n768(x)
+ else
+ fun_l26_n908(x)
+ end
+end
+
+def fun_l25_n72(x)
+ if (x < 1)
+ fun_l26_n567(x)
+ else
+ fun_l26_n365(x)
+ end
+end
+
+def fun_l25_n73(x)
+ if (x < 1)
+ fun_l26_n291(x)
+ else
+ fun_l26_n887(x)
+ end
+end
+
+def fun_l25_n74(x)
+ if (x < 1)
+ fun_l26_n889(x)
+ else
+ fun_l26_n180(x)
+ end
+end
+
+def fun_l25_n75(x)
+ if (x < 1)
+ fun_l26_n142(x)
+ else
+ fun_l26_n101(x)
+ end
+end
+
+def fun_l25_n76(x)
+ if (x < 1)
+ fun_l26_n108(x)
+ else
+ fun_l26_n863(x)
+ end
+end
+
+def fun_l25_n77(x)
+ if (x < 1)
+ fun_l26_n441(x)
+ else
+ fun_l26_n51(x)
+ end
+end
+
+def fun_l25_n78(x)
+ if (x < 1)
+ fun_l26_n787(x)
+ else
+ fun_l26_n543(x)
+ end
+end
+
+def fun_l25_n79(x)
+ if (x < 1)
+ fun_l26_n699(x)
+ else
+ fun_l26_n513(x)
+ end
+end
+
+def fun_l25_n80(x)
+ if (x < 1)
+ fun_l26_n400(x)
+ else
+ fun_l26_n72(x)
+ end
+end
+
+def fun_l25_n81(x)
+ if (x < 1)
+ fun_l26_n814(x)
+ else
+ fun_l26_n732(x)
+ end
+end
+
+def fun_l25_n82(x)
+ if (x < 1)
+ fun_l26_n755(x)
+ else
+ fun_l26_n606(x)
+ end
+end
+
+def fun_l25_n83(x)
+ if (x < 1)
+ fun_l26_n351(x)
+ else
+ fun_l26_n208(x)
+ end
+end
+
+def fun_l25_n84(x)
+ if (x < 1)
+ fun_l26_n124(x)
+ else
+ fun_l26_n554(x)
+ end
+end
+
+def fun_l25_n85(x)
+ if (x < 1)
+ fun_l26_n19(x)
+ else
+ fun_l26_n58(x)
+ end
+end
+
+def fun_l25_n86(x)
+ if (x < 1)
+ fun_l26_n710(x)
+ else
+ fun_l26_n300(x)
+ end
+end
+
+def fun_l25_n87(x)
+ if (x < 1)
+ fun_l26_n833(x)
+ else
+ fun_l26_n53(x)
+ end
+end
+
+def fun_l25_n88(x)
+ if (x < 1)
+ fun_l26_n923(x)
+ else
+ fun_l26_n445(x)
+ end
+end
+
+def fun_l25_n89(x)
+ if (x < 1)
+ fun_l26_n674(x)
+ else
+ fun_l26_n176(x)
+ end
+end
+
+def fun_l25_n90(x)
+ if (x < 1)
+ fun_l26_n78(x)
+ else
+ fun_l26_n506(x)
+ end
+end
+
+def fun_l25_n91(x)
+ if (x < 1)
+ fun_l26_n352(x)
+ else
+ fun_l26_n312(x)
+ end
+end
+
+def fun_l25_n92(x)
+ if (x < 1)
+ fun_l26_n400(x)
+ else
+ fun_l26_n787(x)
+ end
+end
+
+def fun_l25_n93(x)
+ if (x < 1)
+ fun_l26_n897(x)
+ else
+ fun_l26_n395(x)
+ end
+end
+
+def fun_l25_n94(x)
+ if (x < 1)
+ fun_l26_n267(x)
+ else
+ fun_l26_n974(x)
+ end
+end
+
+def fun_l25_n95(x)
+ if (x < 1)
+ fun_l26_n547(x)
+ else
+ fun_l26_n280(x)
+ end
+end
+
+def fun_l25_n96(x)
+ if (x < 1)
+ fun_l26_n281(x)
+ else
+ fun_l26_n222(x)
+ end
+end
+
+def fun_l25_n97(x)
+ if (x < 1)
+ fun_l26_n130(x)
+ else
+ fun_l26_n232(x)
+ end
+end
+
+def fun_l25_n98(x)
+ if (x < 1)
+ fun_l26_n863(x)
+ else
+ fun_l26_n970(x)
+ end
+end
+
+def fun_l25_n99(x)
+ if (x < 1)
+ fun_l26_n28(x)
+ else
+ fun_l26_n344(x)
+ end
+end
+
+def fun_l25_n100(x)
+ if (x < 1)
+ fun_l26_n906(x)
+ else
+ fun_l26_n818(x)
+ end
+end
+
+def fun_l25_n101(x)
+ if (x < 1)
+ fun_l26_n658(x)
+ else
+ fun_l26_n708(x)
+ end
+end
+
+def fun_l25_n102(x)
+ if (x < 1)
+ fun_l26_n545(x)
+ else
+ fun_l26_n627(x)
+ end
+end
+
+def fun_l25_n103(x)
+ if (x < 1)
+ fun_l26_n377(x)
+ else
+ fun_l26_n555(x)
+ end
+end
+
+def fun_l25_n104(x)
+ if (x < 1)
+ fun_l26_n628(x)
+ else
+ fun_l26_n465(x)
+ end
+end
+
+def fun_l25_n105(x)
+ if (x < 1)
+ fun_l26_n208(x)
+ else
+ fun_l26_n720(x)
+ end
+end
+
+def fun_l25_n106(x)
+ if (x < 1)
+ fun_l26_n203(x)
+ else
+ fun_l26_n984(x)
+ end
+end
+
+def fun_l25_n107(x)
+ if (x < 1)
+ fun_l26_n265(x)
+ else
+ fun_l26_n124(x)
+ end
+end
+
+def fun_l25_n108(x)
+ if (x < 1)
+ fun_l26_n786(x)
+ else
+ fun_l26_n305(x)
+ end
+end
+
+def fun_l25_n109(x)
+ if (x < 1)
+ fun_l26_n907(x)
+ else
+ fun_l26_n57(x)
+ end
+end
+
+def fun_l25_n110(x)
+ if (x < 1)
+ fun_l26_n883(x)
+ else
+ fun_l26_n107(x)
+ end
+end
+
+def fun_l25_n111(x)
+ if (x < 1)
+ fun_l26_n783(x)
+ else
+ fun_l26_n443(x)
+ end
+end
+
+def fun_l25_n112(x)
+ if (x < 1)
+ fun_l26_n309(x)
+ else
+ fun_l26_n127(x)
+ end
+end
+
+def fun_l25_n113(x)
+ if (x < 1)
+ fun_l26_n578(x)
+ else
+ fun_l26_n656(x)
+ end
+end
+
+def fun_l25_n114(x)
+ if (x < 1)
+ fun_l26_n352(x)
+ else
+ fun_l26_n610(x)
+ end
+end
+
+def fun_l25_n115(x)
+ if (x < 1)
+ fun_l26_n975(x)
+ else
+ fun_l26_n580(x)
+ end
+end
+
+def fun_l25_n116(x)
+ if (x < 1)
+ fun_l26_n892(x)
+ else
+ fun_l26_n596(x)
+ end
+end
+
+def fun_l25_n117(x)
+ if (x < 1)
+ fun_l26_n80(x)
+ else
+ fun_l26_n759(x)
+ end
+end
+
+def fun_l25_n118(x)
+ if (x < 1)
+ fun_l26_n866(x)
+ else
+ fun_l26_n964(x)
+ end
+end
+
+def fun_l25_n119(x)
+ if (x < 1)
+ fun_l26_n367(x)
+ else
+ fun_l26_n896(x)
+ end
+end
+
+def fun_l25_n120(x)
+ if (x < 1)
+ fun_l26_n787(x)
+ else
+ fun_l26_n17(x)
+ end
+end
+
+def fun_l25_n121(x)
+ if (x < 1)
+ fun_l26_n312(x)
+ else
+ fun_l26_n247(x)
+ end
+end
+
+def fun_l25_n122(x)
+ if (x < 1)
+ fun_l26_n163(x)
+ else
+ fun_l26_n906(x)
+ end
+end
+
+def fun_l25_n123(x)
+ if (x < 1)
+ fun_l26_n706(x)
+ else
+ fun_l26_n840(x)
+ end
+end
+
+def fun_l25_n124(x)
+ if (x < 1)
+ fun_l26_n85(x)
+ else
+ fun_l26_n200(x)
+ end
+end
+
+def fun_l25_n125(x)
+ if (x < 1)
+ fun_l26_n389(x)
+ else
+ fun_l26_n274(x)
+ end
+end
+
+def fun_l25_n126(x)
+ if (x < 1)
+ fun_l26_n509(x)
+ else
+ fun_l26_n471(x)
+ end
+end
+
+def fun_l25_n127(x)
+ if (x < 1)
+ fun_l26_n924(x)
+ else
+ fun_l26_n132(x)
+ end
+end
+
+def fun_l25_n128(x)
+ if (x < 1)
+ fun_l26_n496(x)
+ else
+ fun_l26_n865(x)
+ end
+end
+
+def fun_l25_n129(x)
+ if (x < 1)
+ fun_l26_n775(x)
+ else
+ fun_l26_n22(x)
+ end
+end
+
+def fun_l25_n130(x)
+ if (x < 1)
+ fun_l26_n875(x)
+ else
+ fun_l26_n771(x)
+ end
+end
+
+def fun_l25_n131(x)
+ if (x < 1)
+ fun_l26_n656(x)
+ else
+ fun_l26_n709(x)
+ end
+end
+
+def fun_l25_n132(x)
+ if (x < 1)
+ fun_l26_n733(x)
+ else
+ fun_l26_n343(x)
+ end
+end
+
+def fun_l25_n133(x)
+ if (x < 1)
+ fun_l26_n791(x)
+ else
+ fun_l26_n954(x)
+ end
+end
+
+def fun_l25_n134(x)
+ if (x < 1)
+ fun_l26_n792(x)
+ else
+ fun_l26_n118(x)
+ end
+end
+
+def fun_l25_n135(x)
+ if (x < 1)
+ fun_l26_n93(x)
+ else
+ fun_l26_n683(x)
+ end
+end
+
+def fun_l25_n136(x)
+ if (x < 1)
+ fun_l26_n290(x)
+ else
+ fun_l26_n787(x)
+ end
+end
+
+def fun_l25_n137(x)
+ if (x < 1)
+ fun_l26_n459(x)
+ else
+ fun_l26_n283(x)
+ end
+end
+
+def fun_l25_n138(x)
+ if (x < 1)
+ fun_l26_n240(x)
+ else
+ fun_l26_n552(x)
+ end
+end
+
+def fun_l25_n139(x)
+ if (x < 1)
+ fun_l26_n323(x)
+ else
+ fun_l26_n157(x)
+ end
+end
+
+def fun_l25_n140(x)
+ if (x < 1)
+ fun_l26_n926(x)
+ else
+ fun_l26_n446(x)
+ end
+end
+
+def fun_l25_n141(x)
+ if (x < 1)
+ fun_l26_n382(x)
+ else
+ fun_l26_n317(x)
+ end
+end
+
+def fun_l25_n142(x)
+ if (x < 1)
+ fun_l26_n296(x)
+ else
+ fun_l26_n672(x)
+ end
+end
+
+def fun_l25_n143(x)
+ if (x < 1)
+ fun_l26_n313(x)
+ else
+ fun_l26_n222(x)
+ end
+end
+
+def fun_l25_n144(x)
+ if (x < 1)
+ fun_l26_n25(x)
+ else
+ fun_l26_n260(x)
+ end
+end
+
+def fun_l25_n145(x)
+ if (x < 1)
+ fun_l26_n457(x)
+ else
+ fun_l26_n876(x)
+ end
+end
+
+def fun_l25_n146(x)
+ if (x < 1)
+ fun_l26_n503(x)
+ else
+ fun_l26_n850(x)
+ end
+end
+
+def fun_l25_n147(x)
+ if (x < 1)
+ fun_l26_n811(x)
+ else
+ fun_l26_n293(x)
+ end
+end
+
+def fun_l25_n148(x)
+ if (x < 1)
+ fun_l26_n433(x)
+ else
+ fun_l26_n582(x)
+ end
+end
+
+def fun_l25_n149(x)
+ if (x < 1)
+ fun_l26_n860(x)
+ else
+ fun_l26_n663(x)
+ end
+end
+
+def fun_l25_n150(x)
+ if (x < 1)
+ fun_l26_n293(x)
+ else
+ fun_l26_n341(x)
+ end
+end
+
+def fun_l25_n151(x)
+ if (x < 1)
+ fun_l26_n187(x)
+ else
+ fun_l26_n430(x)
+ end
+end
+
+def fun_l25_n152(x)
+ if (x < 1)
+ fun_l26_n914(x)
+ else
+ fun_l26_n250(x)
+ end
+end
+
+def fun_l25_n153(x)
+ if (x < 1)
+ fun_l26_n370(x)
+ else
+ fun_l26_n378(x)
+ end
+end
+
+def fun_l25_n154(x)
+ if (x < 1)
+ fun_l26_n238(x)
+ else
+ fun_l26_n743(x)
+ end
+end
+
+def fun_l25_n155(x)
+ if (x < 1)
+ fun_l26_n149(x)
+ else
+ fun_l26_n556(x)
+ end
+end
+
+def fun_l25_n156(x)
+ if (x < 1)
+ fun_l26_n530(x)
+ else
+ fun_l26_n543(x)
+ end
+end
+
+def fun_l25_n157(x)
+ if (x < 1)
+ fun_l26_n230(x)
+ else
+ fun_l26_n600(x)
+ end
+end
+
+def fun_l25_n158(x)
+ if (x < 1)
+ fun_l26_n110(x)
+ else
+ fun_l26_n954(x)
+ end
+end
+
+def fun_l25_n159(x)
+ if (x < 1)
+ fun_l26_n952(x)
+ else
+ fun_l26_n110(x)
+ end
+end
+
+def fun_l25_n160(x)
+ if (x < 1)
+ fun_l26_n525(x)
+ else
+ fun_l26_n435(x)
+ end
+end
+
+def fun_l25_n161(x)
+ if (x < 1)
+ fun_l26_n511(x)
+ else
+ fun_l26_n10(x)
+ end
+end
+
+def fun_l25_n162(x)
+ if (x < 1)
+ fun_l26_n755(x)
+ else
+ fun_l26_n567(x)
+ end
+end
+
+def fun_l25_n163(x)
+ if (x < 1)
+ fun_l26_n618(x)
+ else
+ fun_l26_n249(x)
+ end
+end
+
+def fun_l25_n164(x)
+ if (x < 1)
+ fun_l26_n803(x)
+ else
+ fun_l26_n512(x)
+ end
+end
+
+def fun_l25_n165(x)
+ if (x < 1)
+ fun_l26_n234(x)
+ else
+ fun_l26_n806(x)
+ end
+end
+
+def fun_l25_n166(x)
+ if (x < 1)
+ fun_l26_n442(x)
+ else
+ fun_l26_n904(x)
+ end
+end
+
+def fun_l25_n167(x)
+ if (x < 1)
+ fun_l26_n369(x)
+ else
+ fun_l26_n910(x)
+ end
+end
+
+def fun_l25_n168(x)
+ if (x < 1)
+ fun_l26_n107(x)
+ else
+ fun_l26_n125(x)
+ end
+end
+
+def fun_l25_n169(x)
+ if (x < 1)
+ fun_l26_n415(x)
+ else
+ fun_l26_n37(x)
+ end
+end
+
+def fun_l25_n170(x)
+ if (x < 1)
+ fun_l26_n315(x)
+ else
+ fun_l26_n977(x)
+ end
+end
+
+def fun_l25_n171(x)
+ if (x < 1)
+ fun_l26_n106(x)
+ else
+ fun_l26_n908(x)
+ end
+end
+
+def fun_l25_n172(x)
+ if (x < 1)
+ fun_l26_n870(x)
+ else
+ fun_l26_n74(x)
+ end
+end
+
+def fun_l25_n173(x)
+ if (x < 1)
+ fun_l26_n290(x)
+ else
+ fun_l26_n938(x)
+ end
+end
+
+def fun_l25_n174(x)
+ if (x < 1)
+ fun_l26_n908(x)
+ else
+ fun_l26_n215(x)
+ end
+end
+
+def fun_l25_n175(x)
+ if (x < 1)
+ fun_l26_n671(x)
+ else
+ fun_l26_n976(x)
+ end
+end
+
+def fun_l25_n176(x)
+ if (x < 1)
+ fun_l26_n727(x)
+ else
+ fun_l26_n559(x)
+ end
+end
+
+def fun_l25_n177(x)
+ if (x < 1)
+ fun_l26_n684(x)
+ else
+ fun_l26_n353(x)
+ end
+end
+
+def fun_l25_n178(x)
+ if (x < 1)
+ fun_l26_n353(x)
+ else
+ fun_l26_n327(x)
+ end
+end
+
+def fun_l25_n179(x)
+ if (x < 1)
+ fun_l26_n393(x)
+ else
+ fun_l26_n774(x)
+ end
+end
+
+def fun_l25_n180(x)
+ if (x < 1)
+ fun_l26_n500(x)
+ else
+ fun_l26_n23(x)
+ end
+end
+
+def fun_l25_n181(x)
+ if (x < 1)
+ fun_l26_n49(x)
+ else
+ fun_l26_n504(x)
+ end
+end
+
+def fun_l25_n182(x)
+ if (x < 1)
+ fun_l26_n631(x)
+ else
+ fun_l26_n147(x)
+ end
+end
+
+def fun_l25_n183(x)
+ if (x < 1)
+ fun_l26_n353(x)
+ else
+ fun_l26_n64(x)
+ end
+end
+
+def fun_l25_n184(x)
+ if (x < 1)
+ fun_l26_n215(x)
+ else
+ fun_l26_n416(x)
+ end
+end
+
+def fun_l25_n185(x)
+ if (x < 1)
+ fun_l26_n701(x)
+ else
+ fun_l26_n809(x)
+ end
+end
+
+def fun_l25_n186(x)
+ if (x < 1)
+ fun_l26_n267(x)
+ else
+ fun_l26_n197(x)
+ end
+end
+
+def fun_l25_n187(x)
+ if (x < 1)
+ fun_l26_n436(x)
+ else
+ fun_l26_n609(x)
+ end
+end
+
+def fun_l25_n188(x)
+ if (x < 1)
+ fun_l26_n993(x)
+ else
+ fun_l26_n740(x)
+ end
+end
+
+def fun_l25_n189(x)
+ if (x < 1)
+ fun_l26_n742(x)
+ else
+ fun_l26_n507(x)
+ end
+end
+
+def fun_l25_n190(x)
+ if (x < 1)
+ fun_l26_n850(x)
+ else
+ fun_l26_n394(x)
+ end
+end
+
+def fun_l25_n191(x)
+ if (x < 1)
+ fun_l26_n494(x)
+ else
+ fun_l26_n219(x)
+ end
+end
+
+def fun_l25_n192(x)
+ if (x < 1)
+ fun_l26_n477(x)
+ else
+ fun_l26_n115(x)
+ end
+end
+
+def fun_l25_n193(x)
+ if (x < 1)
+ fun_l26_n629(x)
+ else
+ fun_l26_n772(x)
+ end
+end
+
+def fun_l25_n194(x)
+ if (x < 1)
+ fun_l26_n995(x)
+ else
+ fun_l26_n75(x)
+ end
+end
+
+def fun_l25_n195(x)
+ if (x < 1)
+ fun_l26_n34(x)
+ else
+ fun_l26_n590(x)
+ end
+end
+
+def fun_l25_n196(x)
+ if (x < 1)
+ fun_l26_n767(x)
+ else
+ fun_l26_n468(x)
+ end
+end
+
+def fun_l25_n197(x)
+ if (x < 1)
+ fun_l26_n883(x)
+ else
+ fun_l26_n757(x)
+ end
+end
+
+def fun_l25_n198(x)
+ if (x < 1)
+ fun_l26_n687(x)
+ else
+ fun_l26_n288(x)
+ end
+end
+
+def fun_l25_n199(x)
+ if (x < 1)
+ fun_l26_n328(x)
+ else
+ fun_l26_n556(x)
+ end
+end
+
+def fun_l25_n200(x)
+ if (x < 1)
+ fun_l26_n894(x)
+ else
+ fun_l26_n854(x)
+ end
+end
+
+def fun_l25_n201(x)
+ if (x < 1)
+ fun_l26_n343(x)
+ else
+ fun_l26_n889(x)
+ end
+end
+
+def fun_l25_n202(x)
+ if (x < 1)
+ fun_l26_n430(x)
+ else
+ fun_l26_n935(x)
+ end
+end
+
+def fun_l25_n203(x)
+ if (x < 1)
+ fun_l26_n384(x)
+ else
+ fun_l26_n37(x)
+ end
+end
+
+def fun_l25_n204(x)
+ if (x < 1)
+ fun_l26_n821(x)
+ else
+ fun_l26_n509(x)
+ end
+end
+
+def fun_l25_n205(x)
+ if (x < 1)
+ fun_l26_n985(x)
+ else
+ fun_l26_n877(x)
+ end
+end
+
+def fun_l25_n206(x)
+ if (x < 1)
+ fun_l26_n184(x)
+ else
+ fun_l26_n568(x)
+ end
+end
+
+def fun_l25_n207(x)
+ if (x < 1)
+ fun_l26_n753(x)
+ else
+ fun_l26_n922(x)
+ end
+end
+
+def fun_l25_n208(x)
+ if (x < 1)
+ fun_l26_n454(x)
+ else
+ fun_l26_n499(x)
+ end
+end
+
+def fun_l25_n209(x)
+ if (x < 1)
+ fun_l26_n695(x)
+ else
+ fun_l26_n181(x)
+ end
+end
+
+def fun_l25_n210(x)
+ if (x < 1)
+ fun_l26_n139(x)
+ else
+ fun_l26_n456(x)
+ end
+end
+
+def fun_l25_n211(x)
+ if (x < 1)
+ fun_l26_n745(x)
+ else
+ fun_l26_n447(x)
+ end
+end
+
+def fun_l25_n212(x)
+ if (x < 1)
+ fun_l26_n785(x)
+ else
+ fun_l26_n946(x)
+ end
+end
+
+def fun_l25_n213(x)
+ if (x < 1)
+ fun_l26_n161(x)
+ else
+ fun_l26_n283(x)
+ end
+end
+
+def fun_l25_n214(x)
+ if (x < 1)
+ fun_l26_n16(x)
+ else
+ fun_l26_n450(x)
+ end
+end
+
+def fun_l25_n215(x)
+ if (x < 1)
+ fun_l26_n818(x)
+ else
+ fun_l26_n2(x)
+ end
+end
+
+def fun_l25_n216(x)
+ if (x < 1)
+ fun_l26_n242(x)
+ else
+ fun_l26_n691(x)
+ end
+end
+
+def fun_l25_n217(x)
+ if (x < 1)
+ fun_l26_n18(x)
+ else
+ fun_l26_n522(x)
+ end
+end
+
+def fun_l25_n218(x)
+ if (x < 1)
+ fun_l26_n87(x)
+ else
+ fun_l26_n888(x)
+ end
+end
+
+def fun_l25_n219(x)
+ if (x < 1)
+ fun_l26_n317(x)
+ else
+ fun_l26_n593(x)
+ end
+end
+
+def fun_l25_n220(x)
+ if (x < 1)
+ fun_l26_n650(x)
+ else
+ fun_l26_n258(x)
+ end
+end
+
+def fun_l25_n221(x)
+ if (x < 1)
+ fun_l26_n381(x)
+ else
+ fun_l26_n500(x)
+ end
+end
+
+def fun_l25_n222(x)
+ if (x < 1)
+ fun_l26_n607(x)
+ else
+ fun_l26_n138(x)
+ end
+end
+
+def fun_l25_n223(x)
+ if (x < 1)
+ fun_l26_n595(x)
+ else
+ fun_l26_n657(x)
+ end
+end
+
+def fun_l25_n224(x)
+ if (x < 1)
+ fun_l26_n166(x)
+ else
+ fun_l26_n420(x)
+ end
+end
+
+def fun_l25_n225(x)
+ if (x < 1)
+ fun_l26_n744(x)
+ else
+ fun_l26_n684(x)
+ end
+end
+
+def fun_l25_n226(x)
+ if (x < 1)
+ fun_l26_n225(x)
+ else
+ fun_l26_n264(x)
+ end
+end
+
+def fun_l25_n227(x)
+ if (x < 1)
+ fun_l26_n140(x)
+ else
+ fun_l26_n387(x)
+ end
+end
+
+def fun_l25_n228(x)
+ if (x < 1)
+ fun_l26_n563(x)
+ else
+ fun_l26_n83(x)
+ end
+end
+
+def fun_l25_n229(x)
+ if (x < 1)
+ fun_l26_n392(x)
+ else
+ fun_l26_n130(x)
+ end
+end
+
+def fun_l25_n230(x)
+ if (x < 1)
+ fun_l26_n687(x)
+ else
+ fun_l26_n970(x)
+ end
+end
+
+def fun_l25_n231(x)
+ if (x < 1)
+ fun_l26_n328(x)
+ else
+ fun_l26_n809(x)
+ end
+end
+
+def fun_l25_n232(x)
+ if (x < 1)
+ fun_l26_n963(x)
+ else
+ fun_l26_n429(x)
+ end
+end
+
+def fun_l25_n233(x)
+ if (x < 1)
+ fun_l26_n290(x)
+ else
+ fun_l26_n131(x)
+ end
+end
+
+def fun_l25_n234(x)
+ if (x < 1)
+ fun_l26_n877(x)
+ else
+ fun_l26_n729(x)
+ end
+end
+
+def fun_l25_n235(x)
+ if (x < 1)
+ fun_l26_n916(x)
+ else
+ fun_l26_n694(x)
+ end
+end
+
+def fun_l25_n236(x)
+ if (x < 1)
+ fun_l26_n901(x)
+ else
+ fun_l26_n226(x)
+ end
+end
+
+def fun_l25_n237(x)
+ if (x < 1)
+ fun_l26_n65(x)
+ else
+ fun_l26_n748(x)
+ end
+end
+
+def fun_l25_n238(x)
+ if (x < 1)
+ fun_l26_n171(x)
+ else
+ fun_l26_n858(x)
+ end
+end
+
+def fun_l25_n239(x)
+ if (x < 1)
+ fun_l26_n391(x)
+ else
+ fun_l26_n809(x)
+ end
+end
+
+def fun_l25_n240(x)
+ if (x < 1)
+ fun_l26_n336(x)
+ else
+ fun_l26_n391(x)
+ end
+end
+
+def fun_l25_n241(x)
+ if (x < 1)
+ fun_l26_n418(x)
+ else
+ fun_l26_n133(x)
+ end
+end
+
+def fun_l25_n242(x)
+ if (x < 1)
+ fun_l26_n617(x)
+ else
+ fun_l26_n283(x)
+ end
+end
+
+def fun_l25_n243(x)
+ if (x < 1)
+ fun_l26_n962(x)
+ else
+ fun_l26_n763(x)
+ end
+end
+
+def fun_l25_n244(x)
+ if (x < 1)
+ fun_l26_n34(x)
+ else
+ fun_l26_n629(x)
+ end
+end
+
+def fun_l25_n245(x)
+ if (x < 1)
+ fun_l26_n444(x)
+ else
+ fun_l26_n271(x)
+ end
+end
+
+def fun_l25_n246(x)
+ if (x < 1)
+ fun_l26_n478(x)
+ else
+ fun_l26_n541(x)
+ end
+end
+
+def fun_l25_n247(x)
+ if (x < 1)
+ fun_l26_n796(x)
+ else
+ fun_l26_n673(x)
+ end
+end
+
+def fun_l25_n248(x)
+ if (x < 1)
+ fun_l26_n400(x)
+ else
+ fun_l26_n602(x)
+ end
+end
+
+def fun_l25_n249(x)
+ if (x < 1)
+ fun_l26_n70(x)
+ else
+ fun_l26_n796(x)
+ end
+end
+
+def fun_l25_n250(x)
+ if (x < 1)
+ fun_l26_n187(x)
+ else
+ fun_l26_n602(x)
+ end
+end
+
+def fun_l25_n251(x)
+ if (x < 1)
+ fun_l26_n29(x)
+ else
+ fun_l26_n283(x)
+ end
+end
+
+def fun_l25_n252(x)
+ if (x < 1)
+ fun_l26_n49(x)
+ else
+ fun_l26_n522(x)
+ end
+end
+
+def fun_l25_n253(x)
+ if (x < 1)
+ fun_l26_n998(x)
+ else
+ fun_l26_n986(x)
+ end
+end
+
+def fun_l25_n254(x)
+ if (x < 1)
+ fun_l26_n586(x)
+ else
+ fun_l26_n566(x)
+ end
+end
+
+def fun_l25_n255(x)
+ if (x < 1)
+ fun_l26_n474(x)
+ else
+ fun_l26_n279(x)
+ end
+end
+
+def fun_l25_n256(x)
+ if (x < 1)
+ fun_l26_n769(x)
+ else
+ fun_l26_n240(x)
+ end
+end
+
+def fun_l25_n257(x)
+ if (x < 1)
+ fun_l26_n212(x)
+ else
+ fun_l26_n512(x)
+ end
+end
+
+def fun_l25_n258(x)
+ if (x < 1)
+ fun_l26_n980(x)
+ else
+ fun_l26_n715(x)
+ end
+end
+
+def fun_l25_n259(x)
+ if (x < 1)
+ fun_l26_n237(x)
+ else
+ fun_l26_n355(x)
+ end
+end
+
+def fun_l25_n260(x)
+ if (x < 1)
+ fun_l26_n406(x)
+ else
+ fun_l26_n584(x)
+ end
+end
+
+def fun_l25_n261(x)
+ if (x < 1)
+ fun_l26_n632(x)
+ else
+ fun_l26_n28(x)
+ end
+end
+
+def fun_l25_n262(x)
+ if (x < 1)
+ fun_l26_n481(x)
+ else
+ fun_l26_n303(x)
+ end
+end
+
+def fun_l25_n263(x)
+ if (x < 1)
+ fun_l26_n676(x)
+ else
+ fun_l26_n220(x)
+ end
+end
+
+def fun_l25_n264(x)
+ if (x < 1)
+ fun_l26_n757(x)
+ else
+ fun_l26_n58(x)
+ end
+end
+
+def fun_l25_n265(x)
+ if (x < 1)
+ fun_l26_n525(x)
+ else
+ fun_l26_n168(x)
+ end
+end
+
+def fun_l25_n266(x)
+ if (x < 1)
+ fun_l26_n832(x)
+ else
+ fun_l26_n754(x)
+ end
+end
+
+def fun_l25_n267(x)
+ if (x < 1)
+ fun_l26_n723(x)
+ else
+ fun_l26_n830(x)
+ end
+end
+
+def fun_l25_n268(x)
+ if (x < 1)
+ fun_l26_n171(x)
+ else
+ fun_l26_n411(x)
+ end
+end
+
+def fun_l25_n269(x)
+ if (x < 1)
+ fun_l26_n150(x)
+ else
+ fun_l26_n360(x)
+ end
+end
+
+def fun_l25_n270(x)
+ if (x < 1)
+ fun_l26_n401(x)
+ else
+ fun_l26_n767(x)
+ end
+end
+
+def fun_l25_n271(x)
+ if (x < 1)
+ fun_l26_n462(x)
+ else
+ fun_l26_n305(x)
+ end
+end
+
+def fun_l25_n272(x)
+ if (x < 1)
+ fun_l26_n989(x)
+ else
+ fun_l26_n780(x)
+ end
+end
+
+def fun_l25_n273(x)
+ if (x < 1)
+ fun_l26_n2(x)
+ else
+ fun_l26_n735(x)
+ end
+end
+
+def fun_l25_n274(x)
+ if (x < 1)
+ fun_l26_n646(x)
+ else
+ fun_l26_n30(x)
+ end
+end
+
+def fun_l25_n275(x)
+ if (x < 1)
+ fun_l26_n197(x)
+ else
+ fun_l26_n262(x)
+ end
+end
+
+def fun_l25_n276(x)
+ if (x < 1)
+ fun_l26_n647(x)
+ else
+ fun_l26_n715(x)
+ end
+end
+
+def fun_l25_n277(x)
+ if (x < 1)
+ fun_l26_n597(x)
+ else
+ fun_l26_n228(x)
+ end
+end
+
+def fun_l25_n278(x)
+ if (x < 1)
+ fun_l26_n880(x)
+ else
+ fun_l26_n324(x)
+ end
+end
+
+def fun_l25_n279(x)
+ if (x < 1)
+ fun_l26_n40(x)
+ else
+ fun_l26_n615(x)
+ end
+end
+
+def fun_l25_n280(x)
+ if (x < 1)
+ fun_l26_n697(x)
+ else
+ fun_l26_n671(x)
+ end
+end
+
+def fun_l25_n281(x)
+ if (x < 1)
+ fun_l26_n819(x)
+ else
+ fun_l26_n469(x)
+ end
+end
+
+def fun_l25_n282(x)
+ if (x < 1)
+ fun_l26_n427(x)
+ else
+ fun_l26_n295(x)
+ end
+end
+
+def fun_l25_n283(x)
+ if (x < 1)
+ fun_l26_n35(x)
+ else
+ fun_l26_n432(x)
+ end
+end
+
+def fun_l25_n284(x)
+ if (x < 1)
+ fun_l26_n691(x)
+ else
+ fun_l26_n846(x)
+ end
+end
+
+def fun_l25_n285(x)
+ if (x < 1)
+ fun_l26_n353(x)
+ else
+ fun_l26_n473(x)
+ end
+end
+
+def fun_l25_n286(x)
+ if (x < 1)
+ fun_l26_n959(x)
+ else
+ fun_l26_n608(x)
+ end
+end
+
+def fun_l25_n287(x)
+ if (x < 1)
+ fun_l26_n728(x)
+ else
+ fun_l26_n993(x)
+ end
+end
+
+def fun_l25_n288(x)
+ if (x < 1)
+ fun_l26_n836(x)
+ else
+ fun_l26_n587(x)
+ end
+end
+
+def fun_l25_n289(x)
+ if (x < 1)
+ fun_l26_n300(x)
+ else
+ fun_l26_n965(x)
+ end
+end
+
+def fun_l25_n290(x)
+ if (x < 1)
+ fun_l26_n925(x)
+ else
+ fun_l26_n180(x)
+ end
+end
+
+def fun_l25_n291(x)
+ if (x < 1)
+ fun_l26_n934(x)
+ else
+ fun_l26_n579(x)
+ end
+end
+
+def fun_l25_n292(x)
+ if (x < 1)
+ fun_l26_n97(x)
+ else
+ fun_l26_n33(x)
+ end
+end
+
+def fun_l25_n293(x)
+ if (x < 1)
+ fun_l26_n653(x)
+ else
+ fun_l26_n968(x)
+ end
+end
+
+def fun_l25_n294(x)
+ if (x < 1)
+ fun_l26_n264(x)
+ else
+ fun_l26_n68(x)
+ end
+end
+
+def fun_l25_n295(x)
+ if (x < 1)
+ fun_l26_n420(x)
+ else
+ fun_l26_n450(x)
+ end
+end
+
+def fun_l25_n296(x)
+ if (x < 1)
+ fun_l26_n200(x)
+ else
+ fun_l26_n599(x)
+ end
+end
+
+def fun_l25_n297(x)
+ if (x < 1)
+ fun_l26_n922(x)
+ else
+ fun_l26_n36(x)
+ end
+end
+
+def fun_l25_n298(x)
+ if (x < 1)
+ fun_l26_n741(x)
+ else
+ fun_l26_n743(x)
+ end
+end
+
+def fun_l25_n299(x)
+ if (x < 1)
+ fun_l26_n989(x)
+ else
+ fun_l26_n777(x)
+ end
+end
+
+def fun_l25_n300(x)
+ if (x < 1)
+ fun_l26_n600(x)
+ else
+ fun_l26_n228(x)
+ end
+end
+
+def fun_l25_n301(x)
+ if (x < 1)
+ fun_l26_n493(x)
+ else
+ fun_l26_n852(x)
+ end
+end
+
+def fun_l25_n302(x)
+ if (x < 1)
+ fun_l26_n552(x)
+ else
+ fun_l26_n305(x)
+ end
+end
+
+def fun_l25_n303(x)
+ if (x < 1)
+ fun_l26_n280(x)
+ else
+ fun_l26_n373(x)
+ end
+end
+
+def fun_l25_n304(x)
+ if (x < 1)
+ fun_l26_n379(x)
+ else
+ fun_l26_n877(x)
+ end
+end
+
+def fun_l25_n305(x)
+ if (x < 1)
+ fun_l26_n562(x)
+ else
+ fun_l26_n165(x)
+ end
+end
+
+def fun_l25_n306(x)
+ if (x < 1)
+ fun_l26_n890(x)
+ else
+ fun_l26_n24(x)
+ end
+end
+
+def fun_l25_n307(x)
+ if (x < 1)
+ fun_l26_n881(x)
+ else
+ fun_l26_n936(x)
+ end
+end
+
+def fun_l25_n308(x)
+ if (x < 1)
+ fun_l26_n31(x)
+ else
+ fun_l26_n851(x)
+ end
+end
+
+def fun_l25_n309(x)
+ if (x < 1)
+ fun_l26_n894(x)
+ else
+ fun_l26_n496(x)
+ end
+end
+
+def fun_l25_n310(x)
+ if (x < 1)
+ fun_l26_n477(x)
+ else
+ fun_l26_n436(x)
+ end
+end
+
+def fun_l25_n311(x)
+ if (x < 1)
+ fun_l26_n943(x)
+ else
+ fun_l26_n565(x)
+ end
+end
+
+def fun_l25_n312(x)
+ if (x < 1)
+ fun_l26_n795(x)
+ else
+ fun_l26_n416(x)
+ end
+end
+
+def fun_l25_n313(x)
+ if (x < 1)
+ fun_l26_n264(x)
+ else
+ fun_l26_n528(x)
+ end
+end
+
+def fun_l25_n314(x)
+ if (x < 1)
+ fun_l26_n269(x)
+ else
+ fun_l26_n666(x)
+ end
+end
+
+def fun_l25_n315(x)
+ if (x < 1)
+ fun_l26_n166(x)
+ else
+ fun_l26_n633(x)
+ end
+end
+
+def fun_l25_n316(x)
+ if (x < 1)
+ fun_l26_n463(x)
+ else
+ fun_l26_n82(x)
+ end
+end
+
+def fun_l25_n317(x)
+ if (x < 1)
+ fun_l26_n379(x)
+ else
+ fun_l26_n429(x)
+ end
+end
+
+def fun_l25_n318(x)
+ if (x < 1)
+ fun_l26_n538(x)
+ else
+ fun_l26_n714(x)
+ end
+end
+
+def fun_l25_n319(x)
+ if (x < 1)
+ fun_l26_n913(x)
+ else
+ fun_l26_n584(x)
+ end
+end
+
+def fun_l25_n320(x)
+ if (x < 1)
+ fun_l26_n833(x)
+ else
+ fun_l26_n887(x)
+ end
+end
+
+def fun_l25_n321(x)
+ if (x < 1)
+ fun_l26_n332(x)
+ else
+ fun_l26_n720(x)
+ end
+end
+
+def fun_l25_n322(x)
+ if (x < 1)
+ fun_l26_n409(x)
+ else
+ fun_l26_n924(x)
+ end
+end
+
+def fun_l25_n323(x)
+ if (x < 1)
+ fun_l26_n201(x)
+ else
+ fun_l26_n15(x)
+ end
+end
+
+def fun_l25_n324(x)
+ if (x < 1)
+ fun_l26_n454(x)
+ else
+ fun_l26_n348(x)
+ end
+end
+
+def fun_l25_n325(x)
+ if (x < 1)
+ fun_l26_n798(x)
+ else
+ fun_l26_n310(x)
+ end
+end
+
+def fun_l25_n326(x)
+ if (x < 1)
+ fun_l26_n70(x)
+ else
+ fun_l26_n973(x)
+ end
+end
+
+def fun_l25_n327(x)
+ if (x < 1)
+ fun_l26_n683(x)
+ else
+ fun_l26_n857(x)
+ end
+end
+
+def fun_l25_n328(x)
+ if (x < 1)
+ fun_l26_n885(x)
+ else
+ fun_l26_n855(x)
+ end
+end
+
+def fun_l25_n329(x)
+ if (x < 1)
+ fun_l26_n725(x)
+ else
+ fun_l26_n625(x)
+ end
+end
+
+def fun_l25_n330(x)
+ if (x < 1)
+ fun_l26_n960(x)
+ else
+ fun_l26_n710(x)
+ end
+end
+
+def fun_l25_n331(x)
+ if (x < 1)
+ fun_l26_n899(x)
+ else
+ fun_l26_n671(x)
+ end
+end
+
+def fun_l25_n332(x)
+ if (x < 1)
+ fun_l26_n743(x)
+ else
+ fun_l26_n541(x)
+ end
+end
+
+def fun_l25_n333(x)
+ if (x < 1)
+ fun_l26_n353(x)
+ else
+ fun_l26_n336(x)
+ end
+end
+
+def fun_l25_n334(x)
+ if (x < 1)
+ fun_l26_n53(x)
+ else
+ fun_l26_n422(x)
+ end
+end
+
+def fun_l25_n335(x)
+ if (x < 1)
+ fun_l26_n291(x)
+ else
+ fun_l26_n586(x)
+ end
+end
+
+def fun_l25_n336(x)
+ if (x < 1)
+ fun_l26_n395(x)
+ else
+ fun_l26_n716(x)
+ end
+end
+
+def fun_l25_n337(x)
+ if (x < 1)
+ fun_l26_n655(x)
+ else
+ fun_l26_n590(x)
+ end
+end
+
+def fun_l25_n338(x)
+ if (x < 1)
+ fun_l26_n443(x)
+ else
+ fun_l26_n680(x)
+ end
+end
+
+def fun_l25_n339(x)
+ if (x < 1)
+ fun_l26_n930(x)
+ else
+ fun_l26_n828(x)
+ end
+end
+
+def fun_l25_n340(x)
+ if (x < 1)
+ fun_l26_n488(x)
+ else
+ fun_l26_n514(x)
+ end
+end
+
+def fun_l25_n341(x)
+ if (x < 1)
+ fun_l26_n504(x)
+ else
+ fun_l26_n592(x)
+ end
+end
+
+def fun_l25_n342(x)
+ if (x < 1)
+ fun_l26_n695(x)
+ else
+ fun_l26_n945(x)
+ end
+end
+
+def fun_l25_n343(x)
+ if (x < 1)
+ fun_l26_n483(x)
+ else
+ fun_l26_n511(x)
+ end
+end
+
+def fun_l25_n344(x)
+ if (x < 1)
+ fun_l26_n958(x)
+ else
+ fun_l26_n316(x)
+ end
+end
+
+def fun_l25_n345(x)
+ if (x < 1)
+ fun_l26_n481(x)
+ else
+ fun_l26_n473(x)
+ end
+end
+
+def fun_l25_n346(x)
+ if (x < 1)
+ fun_l26_n340(x)
+ else
+ fun_l26_n672(x)
+ end
+end
+
+def fun_l25_n347(x)
+ if (x < 1)
+ fun_l26_n222(x)
+ else
+ fun_l26_n232(x)
+ end
+end
+
+def fun_l25_n348(x)
+ if (x < 1)
+ fun_l26_n162(x)
+ else
+ fun_l26_n846(x)
+ end
+end
+
+def fun_l25_n349(x)
+ if (x < 1)
+ fun_l26_n56(x)
+ else
+ fun_l26_n93(x)
+ end
+end
+
+def fun_l25_n350(x)
+ if (x < 1)
+ fun_l26_n191(x)
+ else
+ fun_l26_n245(x)
+ end
+end
+
+def fun_l25_n351(x)
+ if (x < 1)
+ fun_l26_n294(x)
+ else
+ fun_l26_n494(x)
+ end
+end
+
+def fun_l25_n352(x)
+ if (x < 1)
+ fun_l26_n591(x)
+ else
+ fun_l26_n524(x)
+ end
+end
+
+def fun_l25_n353(x)
+ if (x < 1)
+ fun_l26_n904(x)
+ else
+ fun_l26_n793(x)
+ end
+end
+
+def fun_l25_n354(x)
+ if (x < 1)
+ fun_l26_n1(x)
+ else
+ fun_l26_n432(x)
+ end
+end
+
+def fun_l25_n355(x)
+ if (x < 1)
+ fun_l26_n757(x)
+ else
+ fun_l26_n733(x)
+ end
+end
+
+def fun_l25_n356(x)
+ if (x < 1)
+ fun_l26_n987(x)
+ else
+ fun_l26_n425(x)
+ end
+end
+
+def fun_l25_n357(x)
+ if (x < 1)
+ fun_l26_n288(x)
+ else
+ fun_l26_n587(x)
+ end
+end
+
+def fun_l25_n358(x)
+ if (x < 1)
+ fun_l26_n843(x)
+ else
+ fun_l26_n731(x)
+ end
+end
+
+def fun_l25_n359(x)
+ if (x < 1)
+ fun_l26_n433(x)
+ else
+ fun_l26_n208(x)
+ end
+end
+
+def fun_l25_n360(x)
+ if (x < 1)
+ fun_l26_n473(x)
+ else
+ fun_l26_n992(x)
+ end
+end
+
+def fun_l25_n361(x)
+ if (x < 1)
+ fun_l26_n210(x)
+ else
+ fun_l26_n704(x)
+ end
+end
+
+def fun_l25_n362(x)
+ if (x < 1)
+ fun_l26_n625(x)
+ else
+ fun_l26_n365(x)
+ end
+end
+
+def fun_l25_n363(x)
+ if (x < 1)
+ fun_l26_n55(x)
+ else
+ fun_l26_n555(x)
+ end
+end
+
+def fun_l25_n364(x)
+ if (x < 1)
+ fun_l26_n763(x)
+ else
+ fun_l26_n417(x)
+ end
+end
+
+def fun_l25_n365(x)
+ if (x < 1)
+ fun_l26_n557(x)
+ else
+ fun_l26_n24(x)
+ end
+end
+
+def fun_l25_n366(x)
+ if (x < 1)
+ fun_l26_n791(x)
+ else
+ fun_l26_n753(x)
+ end
+end
+
+def fun_l25_n367(x)
+ if (x < 1)
+ fun_l26_n490(x)
+ else
+ fun_l26_n765(x)
+ end
+end
+
+def fun_l25_n368(x)
+ if (x < 1)
+ fun_l26_n875(x)
+ else
+ fun_l26_n628(x)
+ end
+end
+
+def fun_l25_n369(x)
+ if (x < 1)
+ fun_l26_n544(x)
+ else
+ fun_l26_n234(x)
+ end
+end
+
+def fun_l25_n370(x)
+ if (x < 1)
+ fun_l26_n288(x)
+ else
+ fun_l26_n524(x)
+ end
+end
+
+def fun_l25_n371(x)
+ if (x < 1)
+ fun_l26_n548(x)
+ else
+ fun_l26_n782(x)
+ end
+end
+
+def fun_l25_n372(x)
+ if (x < 1)
+ fun_l26_n112(x)
+ else
+ fun_l26_n861(x)
+ end
+end
+
+def fun_l25_n373(x)
+ if (x < 1)
+ fun_l26_n565(x)
+ else
+ fun_l26_n442(x)
+ end
+end
+
+def fun_l25_n374(x)
+ if (x < 1)
+ fun_l26_n37(x)
+ else
+ fun_l26_n810(x)
+ end
+end
+
+def fun_l25_n375(x)
+ if (x < 1)
+ fun_l26_n384(x)
+ else
+ fun_l26_n103(x)
+ end
+end
+
+def fun_l25_n376(x)
+ if (x < 1)
+ fun_l26_n371(x)
+ else
+ fun_l26_n219(x)
+ end
+end
+
+def fun_l25_n377(x)
+ if (x < 1)
+ fun_l26_n964(x)
+ else
+ fun_l26_n542(x)
+ end
+end
+
+def fun_l25_n378(x)
+ if (x < 1)
+ fun_l26_n617(x)
+ else
+ fun_l26_n616(x)
+ end
+end
+
+def fun_l25_n379(x)
+ if (x < 1)
+ fun_l26_n94(x)
+ else
+ fun_l26_n870(x)
+ end
+end
+
+def fun_l25_n380(x)
+ if (x < 1)
+ fun_l26_n538(x)
+ else
+ fun_l26_n483(x)
+ end
+end
+
+def fun_l25_n381(x)
+ if (x < 1)
+ fun_l26_n395(x)
+ else
+ fun_l26_n873(x)
+ end
+end
+
+def fun_l25_n382(x)
+ if (x < 1)
+ fun_l26_n406(x)
+ else
+ fun_l26_n843(x)
+ end
+end
+
+def fun_l25_n383(x)
+ if (x < 1)
+ fun_l26_n422(x)
+ else
+ fun_l26_n367(x)
+ end
+end
+
+def fun_l25_n384(x)
+ if (x < 1)
+ fun_l26_n472(x)
+ else
+ fun_l26_n676(x)
+ end
+end
+
+def fun_l25_n385(x)
+ if (x < 1)
+ fun_l26_n782(x)
+ else
+ fun_l26_n995(x)
+ end
+end
+
+def fun_l25_n386(x)
+ if (x < 1)
+ fun_l26_n655(x)
+ else
+ fun_l26_n758(x)
+ end
+end
+
+def fun_l25_n387(x)
+ if (x < 1)
+ fun_l26_n665(x)
+ else
+ fun_l26_n775(x)
+ end
+end
+
+def fun_l25_n388(x)
+ if (x < 1)
+ fun_l26_n168(x)
+ else
+ fun_l26_n604(x)
+ end
+end
+
+def fun_l25_n389(x)
+ if (x < 1)
+ fun_l26_n31(x)
+ else
+ fun_l26_n681(x)
+ end
+end
+
+def fun_l25_n390(x)
+ if (x < 1)
+ fun_l26_n758(x)
+ else
+ fun_l26_n596(x)
+ end
+end
+
+def fun_l25_n391(x)
+ if (x < 1)
+ fun_l26_n413(x)
+ else
+ fun_l26_n528(x)
+ end
+end
+
+def fun_l25_n392(x)
+ if (x < 1)
+ fun_l26_n136(x)
+ else
+ fun_l26_n408(x)
+ end
+end
+
+def fun_l25_n393(x)
+ if (x < 1)
+ fun_l26_n493(x)
+ else
+ fun_l26_n182(x)
+ end
+end
+
+def fun_l25_n394(x)
+ if (x < 1)
+ fun_l26_n156(x)
+ else
+ fun_l26_n775(x)
+ end
+end
+
+def fun_l25_n395(x)
+ if (x < 1)
+ fun_l26_n839(x)
+ else
+ fun_l26_n823(x)
+ end
+end
+
+def fun_l25_n396(x)
+ if (x < 1)
+ fun_l26_n248(x)
+ else
+ fun_l26_n679(x)
+ end
+end
+
+def fun_l25_n397(x)
+ if (x < 1)
+ fun_l26_n594(x)
+ else
+ fun_l26_n117(x)
+ end
+end
+
+def fun_l25_n398(x)
+ if (x < 1)
+ fun_l26_n82(x)
+ else
+ fun_l26_n595(x)
+ end
+end
+
+def fun_l25_n399(x)
+ if (x < 1)
+ fun_l26_n978(x)
+ else
+ fun_l26_n391(x)
+ end
+end
+
+def fun_l25_n400(x)
+ if (x < 1)
+ fun_l26_n731(x)
+ else
+ fun_l26_n252(x)
+ end
+end
+
+def fun_l25_n401(x)
+ if (x < 1)
+ fun_l26_n297(x)
+ else
+ fun_l26_n918(x)
+ end
+end
+
+def fun_l25_n402(x)
+ if (x < 1)
+ fun_l26_n745(x)
+ else
+ fun_l26_n972(x)
+ end
+end
+
+def fun_l25_n403(x)
+ if (x < 1)
+ fun_l26_n685(x)
+ else
+ fun_l26_n555(x)
+ end
+end
+
+def fun_l25_n404(x)
+ if (x < 1)
+ fun_l26_n667(x)
+ else
+ fun_l26_n384(x)
+ end
+end
+
+def fun_l25_n405(x)
+ if (x < 1)
+ fun_l26_n330(x)
+ else
+ fun_l26_n440(x)
+ end
+end
+
+def fun_l25_n406(x)
+ if (x < 1)
+ fun_l26_n911(x)
+ else
+ fun_l26_n580(x)
+ end
+end
+
+def fun_l25_n407(x)
+ if (x < 1)
+ fun_l26_n789(x)
+ else
+ fun_l26_n297(x)
+ end
+end
+
+def fun_l25_n408(x)
+ if (x < 1)
+ fun_l26_n879(x)
+ else
+ fun_l26_n201(x)
+ end
+end
+
+def fun_l25_n409(x)
+ if (x < 1)
+ fun_l26_n36(x)
+ else
+ fun_l26_n885(x)
+ end
+end
+
+def fun_l25_n410(x)
+ if (x < 1)
+ fun_l26_n224(x)
+ else
+ fun_l26_n571(x)
+ end
+end
+
+def fun_l25_n411(x)
+ if (x < 1)
+ fun_l26_n395(x)
+ else
+ fun_l26_n640(x)
+ end
+end
+
+def fun_l25_n412(x)
+ if (x < 1)
+ fun_l26_n754(x)
+ else
+ fun_l26_n754(x)
+ end
+end
+
+def fun_l25_n413(x)
+ if (x < 1)
+ fun_l26_n885(x)
+ else
+ fun_l26_n857(x)
+ end
+end
+
+def fun_l25_n414(x)
+ if (x < 1)
+ fun_l26_n464(x)
+ else
+ fun_l26_n44(x)
+ end
+end
+
+def fun_l25_n415(x)
+ if (x < 1)
+ fun_l26_n13(x)
+ else
+ fun_l26_n546(x)
+ end
+end
+
+def fun_l25_n416(x)
+ if (x < 1)
+ fun_l26_n318(x)
+ else
+ fun_l26_n313(x)
+ end
+end
+
+def fun_l25_n417(x)
+ if (x < 1)
+ fun_l26_n98(x)
+ else
+ fun_l26_n139(x)
+ end
+end
+
+def fun_l25_n418(x)
+ if (x < 1)
+ fun_l26_n654(x)
+ else
+ fun_l26_n602(x)
+ end
+end
+
+def fun_l25_n419(x)
+ if (x < 1)
+ fun_l26_n808(x)
+ else
+ fun_l26_n987(x)
+ end
+end
+
+def fun_l25_n420(x)
+ if (x < 1)
+ fun_l26_n878(x)
+ else
+ fun_l26_n36(x)
+ end
+end
+
+def fun_l25_n421(x)
+ if (x < 1)
+ fun_l26_n427(x)
+ else
+ fun_l26_n620(x)
+ end
+end
+
+def fun_l25_n422(x)
+ if (x < 1)
+ fun_l26_n118(x)
+ else
+ fun_l26_n145(x)
+ end
+end
+
+def fun_l25_n423(x)
+ if (x < 1)
+ fun_l26_n131(x)
+ else
+ fun_l26_n520(x)
+ end
+end
+
+def fun_l25_n424(x)
+ if (x < 1)
+ fun_l26_n295(x)
+ else
+ fun_l26_n197(x)
+ end
+end
+
+def fun_l25_n425(x)
+ if (x < 1)
+ fun_l26_n632(x)
+ else
+ fun_l26_n951(x)
+ end
+end
+
+def fun_l25_n426(x)
+ if (x < 1)
+ fun_l26_n92(x)
+ else
+ fun_l26_n96(x)
+ end
+end
+
+def fun_l25_n427(x)
+ if (x < 1)
+ fun_l26_n677(x)
+ else
+ fun_l26_n5(x)
+ end
+end
+
+def fun_l25_n428(x)
+ if (x < 1)
+ fun_l26_n425(x)
+ else
+ fun_l26_n864(x)
+ end
+end
+
+def fun_l25_n429(x)
+ if (x < 1)
+ fun_l26_n187(x)
+ else
+ fun_l26_n62(x)
+ end
+end
+
+def fun_l25_n430(x)
+ if (x < 1)
+ fun_l26_n964(x)
+ else
+ fun_l26_n704(x)
+ end
+end
+
+def fun_l25_n431(x)
+ if (x < 1)
+ fun_l26_n109(x)
+ else
+ fun_l26_n181(x)
+ end
+end
+
+def fun_l25_n432(x)
+ if (x < 1)
+ fun_l26_n620(x)
+ else
+ fun_l26_n484(x)
+ end
+end
+
+def fun_l25_n433(x)
+ if (x < 1)
+ fun_l26_n283(x)
+ else
+ fun_l26_n622(x)
+ end
+end
+
+def fun_l25_n434(x)
+ if (x < 1)
+ fun_l26_n377(x)
+ else
+ fun_l26_n357(x)
+ end
+end
+
+def fun_l25_n435(x)
+ if (x < 1)
+ fun_l26_n375(x)
+ else
+ fun_l26_n346(x)
+ end
+end
+
+def fun_l25_n436(x)
+ if (x < 1)
+ fun_l26_n50(x)
+ else
+ fun_l26_n283(x)
+ end
+end
+
+def fun_l25_n437(x)
+ if (x < 1)
+ fun_l26_n348(x)
+ else
+ fun_l26_n465(x)
+ end
+end
+
+def fun_l25_n438(x)
+ if (x < 1)
+ fun_l26_n206(x)
+ else
+ fun_l26_n968(x)
+ end
+end
+
+def fun_l25_n439(x)
+ if (x < 1)
+ fun_l26_n878(x)
+ else
+ fun_l26_n248(x)
+ end
+end
+
+def fun_l25_n440(x)
+ if (x < 1)
+ fun_l26_n469(x)
+ else
+ fun_l26_n842(x)
+ end
+end
+
+def fun_l25_n441(x)
+ if (x < 1)
+ fun_l26_n476(x)
+ else
+ fun_l26_n666(x)
+ end
+end
+
+def fun_l25_n442(x)
+ if (x < 1)
+ fun_l26_n491(x)
+ else
+ fun_l26_n365(x)
+ end
+end
+
+def fun_l25_n443(x)
+ if (x < 1)
+ fun_l26_n412(x)
+ else
+ fun_l26_n308(x)
+ end
+end
+
+def fun_l25_n444(x)
+ if (x < 1)
+ fun_l26_n750(x)
+ else
+ fun_l26_n82(x)
+ end
+end
+
+def fun_l25_n445(x)
+ if (x < 1)
+ fun_l26_n434(x)
+ else
+ fun_l26_n711(x)
+ end
+end
+
+def fun_l25_n446(x)
+ if (x < 1)
+ fun_l26_n698(x)
+ else
+ fun_l26_n407(x)
+ end
+end
+
+def fun_l25_n447(x)
+ if (x < 1)
+ fun_l26_n992(x)
+ else
+ fun_l26_n404(x)
+ end
+end
+
+def fun_l25_n448(x)
+ if (x < 1)
+ fun_l26_n723(x)
+ else
+ fun_l26_n317(x)
+ end
+end
+
+def fun_l25_n449(x)
+ if (x < 1)
+ fun_l26_n582(x)
+ else
+ fun_l26_n384(x)
+ end
+end
+
+def fun_l25_n450(x)
+ if (x < 1)
+ fun_l26_n956(x)
+ else
+ fun_l26_n111(x)
+ end
+end
+
+def fun_l25_n451(x)
+ if (x < 1)
+ fun_l26_n506(x)
+ else
+ fun_l26_n775(x)
+ end
+end
+
+def fun_l25_n452(x)
+ if (x < 1)
+ fun_l26_n857(x)
+ else
+ fun_l26_n884(x)
+ end
+end
+
+def fun_l25_n453(x)
+ if (x < 1)
+ fun_l26_n889(x)
+ else
+ fun_l26_n471(x)
+ end
+end
+
+def fun_l25_n454(x)
+ if (x < 1)
+ fun_l26_n850(x)
+ else
+ fun_l26_n204(x)
+ end
+end
+
+def fun_l25_n455(x)
+ if (x < 1)
+ fun_l26_n244(x)
+ else
+ fun_l26_n507(x)
+ end
+end
+
+def fun_l25_n456(x)
+ if (x < 1)
+ fun_l26_n875(x)
+ else
+ fun_l26_n694(x)
+ end
+end
+
+def fun_l25_n457(x)
+ if (x < 1)
+ fun_l26_n517(x)
+ else
+ fun_l26_n64(x)
+ end
+end
+
+def fun_l25_n458(x)
+ if (x < 1)
+ fun_l26_n870(x)
+ else
+ fun_l26_n495(x)
+ end
+end
+
+def fun_l25_n459(x)
+ if (x < 1)
+ fun_l26_n577(x)
+ else
+ fun_l26_n42(x)
+ end
+end
+
+def fun_l25_n460(x)
+ if (x < 1)
+ fun_l26_n919(x)
+ else
+ fun_l26_n508(x)
+ end
+end
+
+def fun_l25_n461(x)
+ if (x < 1)
+ fun_l26_n334(x)
+ else
+ fun_l26_n720(x)
+ end
+end
+
+def fun_l25_n462(x)
+ if (x < 1)
+ fun_l26_n682(x)
+ else
+ fun_l26_n422(x)
+ end
+end
+
+def fun_l25_n463(x)
+ if (x < 1)
+ fun_l26_n415(x)
+ else
+ fun_l26_n505(x)
+ end
+end
+
+def fun_l25_n464(x)
+ if (x < 1)
+ fun_l26_n783(x)
+ else
+ fun_l26_n269(x)
+ end
+end
+
+def fun_l25_n465(x)
+ if (x < 1)
+ fun_l26_n797(x)
+ else
+ fun_l26_n780(x)
+ end
+end
+
+def fun_l25_n466(x)
+ if (x < 1)
+ fun_l26_n806(x)
+ else
+ fun_l26_n773(x)
+ end
+end
+
+def fun_l25_n467(x)
+ if (x < 1)
+ fun_l26_n922(x)
+ else
+ fun_l26_n45(x)
+ end
+end
+
+def fun_l25_n468(x)
+ if (x < 1)
+ fun_l26_n919(x)
+ else
+ fun_l26_n780(x)
+ end
+end
+
+def fun_l25_n469(x)
+ if (x < 1)
+ fun_l26_n354(x)
+ else
+ fun_l26_n360(x)
+ end
+end
+
+def fun_l25_n470(x)
+ if (x < 1)
+ fun_l26_n492(x)
+ else
+ fun_l26_n230(x)
+ end
+end
+
+def fun_l25_n471(x)
+ if (x < 1)
+ fun_l26_n1(x)
+ else
+ fun_l26_n845(x)
+ end
+end
+
+def fun_l25_n472(x)
+ if (x < 1)
+ fun_l26_n854(x)
+ else
+ fun_l26_n408(x)
+ end
+end
+
+def fun_l25_n473(x)
+ if (x < 1)
+ fun_l26_n17(x)
+ else
+ fun_l26_n570(x)
+ end
+end
+
+def fun_l25_n474(x)
+ if (x < 1)
+ fun_l26_n485(x)
+ else
+ fun_l26_n953(x)
+ end
+end
+
+def fun_l25_n475(x)
+ if (x < 1)
+ fun_l26_n398(x)
+ else
+ fun_l26_n712(x)
+ end
+end
+
+def fun_l25_n476(x)
+ if (x < 1)
+ fun_l26_n499(x)
+ else
+ fun_l26_n218(x)
+ end
+end
+
+def fun_l25_n477(x)
+ if (x < 1)
+ fun_l26_n107(x)
+ else
+ fun_l26_n38(x)
+ end
+end
+
+def fun_l25_n478(x)
+ if (x < 1)
+ fun_l26_n234(x)
+ else
+ fun_l26_n718(x)
+ end
+end
+
+def fun_l25_n479(x)
+ if (x < 1)
+ fun_l26_n396(x)
+ else
+ fun_l26_n247(x)
+ end
+end
+
+def fun_l25_n480(x)
+ if (x < 1)
+ fun_l26_n457(x)
+ else
+ fun_l26_n259(x)
+ end
+end
+
+def fun_l25_n481(x)
+ if (x < 1)
+ fun_l26_n581(x)
+ else
+ fun_l26_n512(x)
+ end
+end
+
+def fun_l25_n482(x)
+ if (x < 1)
+ fun_l26_n262(x)
+ else
+ fun_l26_n790(x)
+ end
+end
+
+def fun_l25_n483(x)
+ if (x < 1)
+ fun_l26_n140(x)
+ else
+ fun_l26_n821(x)
+ end
+end
+
+def fun_l25_n484(x)
+ if (x < 1)
+ fun_l26_n133(x)
+ else
+ fun_l26_n863(x)
+ end
+end
+
+def fun_l25_n485(x)
+ if (x < 1)
+ fun_l26_n440(x)
+ else
+ fun_l26_n265(x)
+ end
+end
+
+def fun_l25_n486(x)
+ if (x < 1)
+ fun_l26_n913(x)
+ else
+ fun_l26_n994(x)
+ end
+end
+
+def fun_l25_n487(x)
+ if (x < 1)
+ fun_l26_n186(x)
+ else
+ fun_l26_n433(x)
+ end
+end
+
+def fun_l25_n488(x)
+ if (x < 1)
+ fun_l26_n357(x)
+ else
+ fun_l26_n16(x)
+ end
+end
+
+def fun_l25_n489(x)
+ if (x < 1)
+ fun_l26_n165(x)
+ else
+ fun_l26_n674(x)
+ end
+end
+
+def fun_l25_n490(x)
+ if (x < 1)
+ fun_l26_n772(x)
+ else
+ fun_l26_n749(x)
+ end
+end
+
+def fun_l25_n491(x)
+ if (x < 1)
+ fun_l26_n677(x)
+ else
+ fun_l26_n36(x)
+ end
+end
+
+def fun_l25_n492(x)
+ if (x < 1)
+ fun_l26_n962(x)
+ else
+ fun_l26_n750(x)
+ end
+end
+
+def fun_l25_n493(x)
+ if (x < 1)
+ fun_l26_n22(x)
+ else
+ fun_l26_n657(x)
+ end
+end
+
+def fun_l25_n494(x)
+ if (x < 1)
+ fun_l26_n302(x)
+ else
+ fun_l26_n394(x)
+ end
+end
+
+def fun_l25_n495(x)
+ if (x < 1)
+ fun_l26_n313(x)
+ else
+ fun_l26_n552(x)
+ end
+end
+
+def fun_l25_n496(x)
+ if (x < 1)
+ fun_l26_n946(x)
+ else
+ fun_l26_n447(x)
+ end
+end
+
+def fun_l25_n497(x)
+ if (x < 1)
+ fun_l26_n565(x)
+ else
+ fun_l26_n242(x)
+ end
+end
+
+def fun_l25_n498(x)
+ if (x < 1)
+ fun_l26_n932(x)
+ else
+ fun_l26_n413(x)
+ end
+end
+
+def fun_l25_n499(x)
+ if (x < 1)
+ fun_l26_n751(x)
+ else
+ fun_l26_n921(x)
+ end
+end
+
+def fun_l25_n500(x)
+ if (x < 1)
+ fun_l26_n1(x)
+ else
+ fun_l26_n722(x)
+ end
+end
+
+def fun_l25_n501(x)
+ if (x < 1)
+ fun_l26_n63(x)
+ else
+ fun_l26_n205(x)
+ end
+end
+
+def fun_l25_n502(x)
+ if (x < 1)
+ fun_l26_n67(x)
+ else
+ fun_l26_n638(x)
+ end
+end
+
+def fun_l25_n503(x)
+ if (x < 1)
+ fun_l26_n762(x)
+ else
+ fun_l26_n688(x)
+ end
+end
+
+def fun_l25_n504(x)
+ if (x < 1)
+ fun_l26_n839(x)
+ else
+ fun_l26_n775(x)
+ end
+end
+
+def fun_l25_n505(x)
+ if (x < 1)
+ fun_l26_n773(x)
+ else
+ fun_l26_n986(x)
+ end
+end
+
+def fun_l25_n506(x)
+ if (x < 1)
+ fun_l26_n934(x)
+ else
+ fun_l26_n117(x)
+ end
+end
+
+def fun_l25_n507(x)
+ if (x < 1)
+ fun_l26_n507(x)
+ else
+ fun_l26_n217(x)
+ end
+end
+
+def fun_l25_n508(x)
+ if (x < 1)
+ fun_l26_n833(x)
+ else
+ fun_l26_n779(x)
+ end
+end
+
+def fun_l25_n509(x)
+ if (x < 1)
+ fun_l26_n244(x)
+ else
+ fun_l26_n71(x)
+ end
+end
+
+def fun_l25_n510(x)
+ if (x < 1)
+ fun_l26_n466(x)
+ else
+ fun_l26_n440(x)
+ end
+end
+
+def fun_l25_n511(x)
+ if (x < 1)
+ fun_l26_n829(x)
+ else
+ fun_l26_n459(x)
+ end
+end
+
+def fun_l25_n512(x)
+ if (x < 1)
+ fun_l26_n923(x)
+ else
+ fun_l26_n672(x)
+ end
+end
+
+def fun_l25_n513(x)
+ if (x < 1)
+ fun_l26_n925(x)
+ else
+ fun_l26_n758(x)
+ end
+end
+
+def fun_l25_n514(x)
+ if (x < 1)
+ fun_l26_n782(x)
+ else
+ fun_l26_n157(x)
+ end
+end
+
+def fun_l25_n515(x)
+ if (x < 1)
+ fun_l26_n987(x)
+ else
+ fun_l26_n407(x)
+ end
+end
+
+def fun_l25_n516(x)
+ if (x < 1)
+ fun_l26_n224(x)
+ else
+ fun_l26_n531(x)
+ end
+end
+
+def fun_l25_n517(x)
+ if (x < 1)
+ fun_l26_n222(x)
+ else
+ fun_l26_n141(x)
+ end
+end
+
+def fun_l25_n518(x)
+ if (x < 1)
+ fun_l26_n723(x)
+ else
+ fun_l26_n787(x)
+ end
+end
+
+def fun_l25_n519(x)
+ if (x < 1)
+ fun_l26_n802(x)
+ else
+ fun_l26_n448(x)
+ end
+end
+
+def fun_l25_n520(x)
+ if (x < 1)
+ fun_l26_n152(x)
+ else
+ fun_l26_n666(x)
+ end
+end
+
+def fun_l25_n521(x)
+ if (x < 1)
+ fun_l26_n476(x)
+ else
+ fun_l26_n7(x)
+ end
+end
+
+def fun_l25_n522(x)
+ if (x < 1)
+ fun_l26_n523(x)
+ else
+ fun_l26_n326(x)
+ end
+end
+
+def fun_l25_n523(x)
+ if (x < 1)
+ fun_l26_n432(x)
+ else
+ fun_l26_n525(x)
+ end
+end
+
+def fun_l25_n524(x)
+ if (x < 1)
+ fun_l26_n403(x)
+ else
+ fun_l26_n983(x)
+ end
+end
+
+def fun_l25_n525(x)
+ if (x < 1)
+ fun_l26_n681(x)
+ else
+ fun_l26_n326(x)
+ end
+end
+
+def fun_l25_n526(x)
+ if (x < 1)
+ fun_l26_n352(x)
+ else
+ fun_l26_n402(x)
+ end
+end
+
+def fun_l25_n527(x)
+ if (x < 1)
+ fun_l26_n870(x)
+ else
+ fun_l26_n181(x)
+ end
+end
+
+def fun_l25_n528(x)
+ if (x < 1)
+ fun_l26_n382(x)
+ else
+ fun_l26_n880(x)
+ end
+end
+
+def fun_l25_n529(x)
+ if (x < 1)
+ fun_l26_n337(x)
+ else
+ fun_l26_n616(x)
+ end
+end
+
+def fun_l25_n530(x)
+ if (x < 1)
+ fun_l26_n959(x)
+ else
+ fun_l26_n239(x)
+ end
+end
+
+def fun_l25_n531(x)
+ if (x < 1)
+ fun_l26_n57(x)
+ else
+ fun_l26_n896(x)
+ end
+end
+
+def fun_l25_n532(x)
+ if (x < 1)
+ fun_l26_n456(x)
+ else
+ fun_l26_n365(x)
+ end
+end
+
+def fun_l25_n533(x)
+ if (x < 1)
+ fun_l26_n73(x)
+ else
+ fun_l26_n420(x)
+ end
+end
+
+def fun_l25_n534(x)
+ if (x < 1)
+ fun_l26_n295(x)
+ else
+ fun_l26_n663(x)
+ end
+end
+
+def fun_l25_n535(x)
+ if (x < 1)
+ fun_l26_n881(x)
+ else
+ fun_l26_n391(x)
+ end
+end
+
+def fun_l25_n536(x)
+ if (x < 1)
+ fun_l26_n775(x)
+ else
+ fun_l26_n19(x)
+ end
+end
+
+def fun_l25_n537(x)
+ if (x < 1)
+ fun_l26_n954(x)
+ else
+ fun_l26_n97(x)
+ end
+end
+
+def fun_l25_n538(x)
+ if (x < 1)
+ fun_l26_n764(x)
+ else
+ fun_l26_n353(x)
+ end
+end
+
+def fun_l25_n539(x)
+ if (x < 1)
+ fun_l26_n220(x)
+ else
+ fun_l26_n958(x)
+ end
+end
+
+def fun_l25_n540(x)
+ if (x < 1)
+ fun_l26_n915(x)
+ else
+ fun_l26_n792(x)
+ end
+end
+
+def fun_l25_n541(x)
+ if (x < 1)
+ fun_l26_n880(x)
+ else
+ fun_l26_n374(x)
+ end
+end
+
+def fun_l25_n542(x)
+ if (x < 1)
+ fun_l26_n655(x)
+ else
+ fun_l26_n578(x)
+ end
+end
+
+def fun_l25_n543(x)
+ if (x < 1)
+ fun_l26_n862(x)
+ else
+ fun_l26_n177(x)
+ end
+end
+
+def fun_l25_n544(x)
+ if (x < 1)
+ fun_l26_n286(x)
+ else
+ fun_l26_n670(x)
+ end
+end
+
+def fun_l25_n545(x)
+ if (x < 1)
+ fun_l26_n862(x)
+ else
+ fun_l26_n45(x)
+ end
+end
+
+def fun_l25_n546(x)
+ if (x < 1)
+ fun_l26_n743(x)
+ else
+ fun_l26_n575(x)
+ end
+end
+
+def fun_l25_n547(x)
+ if (x < 1)
+ fun_l26_n909(x)
+ else
+ fun_l26_n457(x)
+ end
+end
+
+def fun_l25_n548(x)
+ if (x < 1)
+ fun_l26_n784(x)
+ else
+ fun_l26_n482(x)
+ end
+end
+
+def fun_l25_n549(x)
+ if (x < 1)
+ fun_l26_n381(x)
+ else
+ fun_l26_n560(x)
+ end
+end
+
+def fun_l25_n550(x)
+ if (x < 1)
+ fun_l26_n62(x)
+ else
+ fun_l26_n640(x)
+ end
+end
+
+def fun_l25_n551(x)
+ if (x < 1)
+ fun_l26_n714(x)
+ else
+ fun_l26_n898(x)
+ end
+end
+
+def fun_l25_n552(x)
+ if (x < 1)
+ fun_l26_n515(x)
+ else
+ fun_l26_n221(x)
+ end
+end
+
+def fun_l25_n553(x)
+ if (x < 1)
+ fun_l26_n217(x)
+ else
+ fun_l26_n932(x)
+ end
+end
+
+def fun_l25_n554(x)
+ if (x < 1)
+ fun_l26_n583(x)
+ else
+ fun_l26_n722(x)
+ end
+end
+
+def fun_l25_n555(x)
+ if (x < 1)
+ fun_l26_n398(x)
+ else
+ fun_l26_n503(x)
+ end
+end
+
+def fun_l25_n556(x)
+ if (x < 1)
+ fun_l26_n891(x)
+ else
+ fun_l26_n72(x)
+ end
+end
+
+def fun_l25_n557(x)
+ if (x < 1)
+ fun_l26_n367(x)
+ else
+ fun_l26_n141(x)
+ end
+end
+
+def fun_l25_n558(x)
+ if (x < 1)
+ fun_l26_n477(x)
+ else
+ fun_l26_n40(x)
+ end
+end
+
+def fun_l25_n559(x)
+ if (x < 1)
+ fun_l26_n156(x)
+ else
+ fun_l26_n491(x)
+ end
+end
+
+def fun_l25_n560(x)
+ if (x < 1)
+ fun_l26_n859(x)
+ else
+ fun_l26_n423(x)
+ end
+end
+
+def fun_l25_n561(x)
+ if (x < 1)
+ fun_l26_n693(x)
+ else
+ fun_l26_n281(x)
+ end
+end
+
+def fun_l25_n562(x)
+ if (x < 1)
+ fun_l26_n460(x)
+ else
+ fun_l26_n151(x)
+ end
+end
+
+def fun_l25_n563(x)
+ if (x < 1)
+ fun_l26_n14(x)
+ else
+ fun_l26_n395(x)
+ end
+end
+
+def fun_l25_n564(x)
+ if (x < 1)
+ fun_l26_n423(x)
+ else
+ fun_l26_n198(x)
+ end
+end
+
+def fun_l25_n565(x)
+ if (x < 1)
+ fun_l26_n911(x)
+ else
+ fun_l26_n841(x)
+ end
+end
+
+def fun_l25_n566(x)
+ if (x < 1)
+ fun_l26_n273(x)
+ else
+ fun_l26_n361(x)
+ end
+end
+
+def fun_l25_n567(x)
+ if (x < 1)
+ fun_l26_n94(x)
+ else
+ fun_l26_n932(x)
+ end
+end
+
+def fun_l25_n568(x)
+ if (x < 1)
+ fun_l26_n734(x)
+ else
+ fun_l26_n191(x)
+ end
+end
+
+def fun_l25_n569(x)
+ if (x < 1)
+ fun_l26_n699(x)
+ else
+ fun_l26_n496(x)
+ end
+end
+
+def fun_l25_n570(x)
+ if (x < 1)
+ fun_l26_n90(x)
+ else
+ fun_l26_n574(x)
+ end
+end
+
+def fun_l25_n571(x)
+ if (x < 1)
+ fun_l26_n818(x)
+ else
+ fun_l26_n529(x)
+ end
+end
+
+def fun_l25_n572(x)
+ if (x < 1)
+ fun_l26_n459(x)
+ else
+ fun_l26_n770(x)
+ end
+end
+
+def fun_l25_n573(x)
+ if (x < 1)
+ fun_l26_n725(x)
+ else
+ fun_l26_n896(x)
+ end
+end
+
+def fun_l25_n574(x)
+ if (x < 1)
+ fun_l26_n773(x)
+ else
+ fun_l26_n8(x)
+ end
+end
+
+def fun_l25_n575(x)
+ if (x < 1)
+ fun_l26_n582(x)
+ else
+ fun_l26_n274(x)
+ end
+end
+
+def fun_l25_n576(x)
+ if (x < 1)
+ fun_l26_n529(x)
+ else
+ fun_l26_n434(x)
+ end
+end
+
+def fun_l25_n577(x)
+ if (x < 1)
+ fun_l26_n197(x)
+ else
+ fun_l26_n88(x)
+ end
+end
+
+def fun_l25_n578(x)
+ if (x < 1)
+ fun_l26_n938(x)
+ else
+ fun_l26_n184(x)
+ end
+end
+
+def fun_l25_n579(x)
+ if (x < 1)
+ fun_l26_n801(x)
+ else
+ fun_l26_n990(x)
+ end
+end
+
+def fun_l25_n580(x)
+ if (x < 1)
+ fun_l26_n732(x)
+ else
+ fun_l26_n955(x)
+ end
+end
+
+def fun_l25_n581(x)
+ if (x < 1)
+ fun_l26_n130(x)
+ else
+ fun_l26_n167(x)
+ end
+end
+
+def fun_l25_n582(x)
+ if (x < 1)
+ fun_l26_n942(x)
+ else
+ fun_l26_n352(x)
+ end
+end
+
+def fun_l25_n583(x)
+ if (x < 1)
+ fun_l26_n673(x)
+ else
+ fun_l26_n613(x)
+ end
+end
+
+def fun_l25_n584(x)
+ if (x < 1)
+ fun_l26_n386(x)
+ else
+ fun_l26_n840(x)
+ end
+end
+
+def fun_l25_n585(x)
+ if (x < 1)
+ fun_l26_n847(x)
+ else
+ fun_l26_n372(x)
+ end
+end
+
+def fun_l25_n586(x)
+ if (x < 1)
+ fun_l26_n0(x)
+ else
+ fun_l26_n717(x)
+ end
+end
+
+def fun_l25_n587(x)
+ if (x < 1)
+ fun_l26_n403(x)
+ else
+ fun_l26_n689(x)
+ end
+end
+
+def fun_l25_n588(x)
+ if (x < 1)
+ fun_l26_n325(x)
+ else
+ fun_l26_n75(x)
+ end
+end
+
+def fun_l25_n589(x)
+ if (x < 1)
+ fun_l26_n653(x)
+ else
+ fun_l26_n993(x)
+ end
+end
+
+def fun_l25_n590(x)
+ if (x < 1)
+ fun_l26_n413(x)
+ else
+ fun_l26_n428(x)
+ end
+end
+
+def fun_l25_n591(x)
+ if (x < 1)
+ fun_l26_n93(x)
+ else
+ fun_l26_n264(x)
+ end
+end
+
+def fun_l25_n592(x)
+ if (x < 1)
+ fun_l26_n117(x)
+ else
+ fun_l26_n466(x)
+ end
+end
+
+def fun_l25_n593(x)
+ if (x < 1)
+ fun_l26_n463(x)
+ else
+ fun_l26_n270(x)
+ end
+end
+
+def fun_l25_n594(x)
+ if (x < 1)
+ fun_l26_n348(x)
+ else
+ fun_l26_n844(x)
+ end
+end
+
+def fun_l25_n595(x)
+ if (x < 1)
+ fun_l26_n939(x)
+ else
+ fun_l26_n891(x)
+ end
+end
+
+def fun_l25_n596(x)
+ if (x < 1)
+ fun_l26_n949(x)
+ else
+ fun_l26_n743(x)
+ end
+end
+
+def fun_l25_n597(x)
+ if (x < 1)
+ fun_l26_n884(x)
+ else
+ fun_l26_n831(x)
+ end
+end
+
+def fun_l25_n598(x)
+ if (x < 1)
+ fun_l26_n910(x)
+ else
+ fun_l26_n79(x)
+ end
+end
+
+def fun_l25_n599(x)
+ if (x < 1)
+ fun_l26_n491(x)
+ else
+ fun_l26_n727(x)
+ end
+end
+
+def fun_l25_n600(x)
+ if (x < 1)
+ fun_l26_n295(x)
+ else
+ fun_l26_n929(x)
+ end
+end
+
+def fun_l25_n601(x)
+ if (x < 1)
+ fun_l26_n130(x)
+ else
+ fun_l26_n35(x)
+ end
+end
+
+def fun_l25_n602(x)
+ if (x < 1)
+ fun_l26_n673(x)
+ else
+ fun_l26_n103(x)
+ end
+end
+
+def fun_l25_n603(x)
+ if (x < 1)
+ fun_l26_n669(x)
+ else
+ fun_l26_n449(x)
+ end
+end
+
+def fun_l25_n604(x)
+ if (x < 1)
+ fun_l26_n201(x)
+ else
+ fun_l26_n616(x)
+ end
+end
+
+def fun_l25_n605(x)
+ if (x < 1)
+ fun_l26_n326(x)
+ else
+ fun_l26_n718(x)
+ end
+end
+
+def fun_l25_n606(x)
+ if (x < 1)
+ fun_l26_n857(x)
+ else
+ fun_l26_n188(x)
+ end
+end
+
+def fun_l25_n607(x)
+ if (x < 1)
+ fun_l26_n351(x)
+ else
+ fun_l26_n688(x)
+ end
+end
+
+def fun_l25_n608(x)
+ if (x < 1)
+ fun_l26_n652(x)
+ else
+ fun_l26_n280(x)
+ end
+end
+
+def fun_l25_n609(x)
+ if (x < 1)
+ fun_l26_n994(x)
+ else
+ fun_l26_n341(x)
+ end
+end
+
+def fun_l25_n610(x)
+ if (x < 1)
+ fun_l26_n876(x)
+ else
+ fun_l26_n643(x)
+ end
+end
+
+def fun_l25_n611(x)
+ if (x < 1)
+ fun_l26_n825(x)
+ else
+ fun_l26_n306(x)
+ end
+end
+
+def fun_l25_n612(x)
+ if (x < 1)
+ fun_l26_n139(x)
+ else
+ fun_l26_n452(x)
+ end
+end
+
+def fun_l25_n613(x)
+ if (x < 1)
+ fun_l26_n689(x)
+ else
+ fun_l26_n818(x)
+ end
+end
+
+def fun_l25_n614(x)
+ if (x < 1)
+ fun_l26_n171(x)
+ else
+ fun_l26_n366(x)
+ end
+end
+
+def fun_l25_n615(x)
+ if (x < 1)
+ fun_l26_n658(x)
+ else
+ fun_l26_n603(x)
+ end
+end
+
+def fun_l25_n616(x)
+ if (x < 1)
+ fun_l26_n150(x)
+ else
+ fun_l26_n603(x)
+ end
+end
+
+def fun_l25_n617(x)
+ if (x < 1)
+ fun_l26_n432(x)
+ else
+ fun_l26_n391(x)
+ end
+end
+
+def fun_l25_n618(x)
+ if (x < 1)
+ fun_l26_n79(x)
+ else
+ fun_l26_n416(x)
+ end
+end
+
+def fun_l25_n619(x)
+ if (x < 1)
+ fun_l26_n494(x)
+ else
+ fun_l26_n355(x)
+ end
+end
+
+def fun_l25_n620(x)
+ if (x < 1)
+ fun_l26_n868(x)
+ else
+ fun_l26_n461(x)
+ end
+end
+
+def fun_l25_n621(x)
+ if (x < 1)
+ fun_l26_n954(x)
+ else
+ fun_l26_n31(x)
+ end
+end
+
+def fun_l25_n622(x)
+ if (x < 1)
+ fun_l26_n620(x)
+ else
+ fun_l26_n777(x)
+ end
+end
+
+def fun_l25_n623(x)
+ if (x < 1)
+ fun_l26_n938(x)
+ else
+ fun_l26_n339(x)
+ end
+end
+
+def fun_l25_n624(x)
+ if (x < 1)
+ fun_l26_n385(x)
+ else
+ fun_l26_n462(x)
+ end
+end
+
+def fun_l25_n625(x)
+ if (x < 1)
+ fun_l26_n83(x)
+ else
+ fun_l26_n351(x)
+ end
+end
+
+def fun_l25_n626(x)
+ if (x < 1)
+ fun_l26_n317(x)
+ else
+ fun_l26_n16(x)
+ end
+end
+
+def fun_l25_n627(x)
+ if (x < 1)
+ fun_l26_n321(x)
+ else
+ fun_l26_n955(x)
+ end
+end
+
+def fun_l25_n628(x)
+ if (x < 1)
+ fun_l26_n649(x)
+ else
+ fun_l26_n195(x)
+ end
+end
+
+def fun_l25_n629(x)
+ if (x < 1)
+ fun_l26_n351(x)
+ else
+ fun_l26_n429(x)
+ end
+end
+
+def fun_l25_n630(x)
+ if (x < 1)
+ fun_l26_n338(x)
+ else
+ fun_l26_n334(x)
+ end
+end
+
+def fun_l25_n631(x)
+ if (x < 1)
+ fun_l26_n355(x)
+ else
+ fun_l26_n782(x)
+ end
+end
+
+def fun_l25_n632(x)
+ if (x < 1)
+ fun_l26_n619(x)
+ else
+ fun_l26_n189(x)
+ end
+end
+
+def fun_l25_n633(x)
+ if (x < 1)
+ fun_l26_n818(x)
+ else
+ fun_l26_n740(x)
+ end
+end
+
+def fun_l25_n634(x)
+ if (x < 1)
+ fun_l26_n725(x)
+ else
+ fun_l26_n114(x)
+ end
+end
+
+def fun_l25_n635(x)
+ if (x < 1)
+ fun_l26_n948(x)
+ else
+ fun_l26_n587(x)
+ end
+end
+
+def fun_l25_n636(x)
+ if (x < 1)
+ fun_l26_n268(x)
+ else
+ fun_l26_n871(x)
+ end
+end
+
+def fun_l25_n637(x)
+ if (x < 1)
+ fun_l26_n128(x)
+ else
+ fun_l26_n5(x)
+ end
+end
+
+def fun_l25_n638(x)
+ if (x < 1)
+ fun_l26_n981(x)
+ else
+ fun_l26_n209(x)
+ end
+end
+
+def fun_l25_n639(x)
+ if (x < 1)
+ fun_l26_n729(x)
+ else
+ fun_l26_n786(x)
+ end
+end
+
+def fun_l25_n640(x)
+ if (x < 1)
+ fun_l26_n86(x)
+ else
+ fun_l26_n320(x)
+ end
+end
+
+def fun_l25_n641(x)
+ if (x < 1)
+ fun_l26_n59(x)
+ else
+ fun_l26_n457(x)
+ end
+end
+
+def fun_l25_n642(x)
+ if (x < 1)
+ fun_l26_n517(x)
+ else
+ fun_l26_n249(x)
+ end
+end
+
+def fun_l25_n643(x)
+ if (x < 1)
+ fun_l26_n528(x)
+ else
+ fun_l26_n754(x)
+ end
+end
+
+def fun_l25_n644(x)
+ if (x < 1)
+ fun_l26_n254(x)
+ else
+ fun_l26_n886(x)
+ end
+end
+
+def fun_l25_n645(x)
+ if (x < 1)
+ fun_l26_n244(x)
+ else
+ fun_l26_n364(x)
+ end
+end
+
+def fun_l25_n646(x)
+ if (x < 1)
+ fun_l26_n550(x)
+ else
+ fun_l26_n877(x)
+ end
+end
+
+def fun_l25_n647(x)
+ if (x < 1)
+ fun_l26_n274(x)
+ else
+ fun_l26_n712(x)
+ end
+end
+
+def fun_l25_n648(x)
+ if (x < 1)
+ fun_l26_n299(x)
+ else
+ fun_l26_n957(x)
+ end
+end
+
+def fun_l25_n649(x)
+ if (x < 1)
+ fun_l26_n996(x)
+ else
+ fun_l26_n671(x)
+ end
+end
+
+def fun_l25_n650(x)
+ if (x < 1)
+ fun_l26_n91(x)
+ else
+ fun_l26_n867(x)
+ end
+end
+
+def fun_l25_n651(x)
+ if (x < 1)
+ fun_l26_n987(x)
+ else
+ fun_l26_n643(x)
+ end
+end
+
+def fun_l25_n652(x)
+ if (x < 1)
+ fun_l26_n429(x)
+ else
+ fun_l26_n802(x)
+ end
+end
+
+def fun_l25_n653(x)
+ if (x < 1)
+ fun_l26_n967(x)
+ else
+ fun_l26_n590(x)
+ end
+end
+
+def fun_l25_n654(x)
+ if (x < 1)
+ fun_l26_n404(x)
+ else
+ fun_l26_n283(x)
+ end
+end
+
+def fun_l25_n655(x)
+ if (x < 1)
+ fun_l26_n438(x)
+ else
+ fun_l26_n232(x)
+ end
+end
+
+def fun_l25_n656(x)
+ if (x < 1)
+ fun_l26_n295(x)
+ else
+ fun_l26_n559(x)
+ end
+end
+
+def fun_l25_n657(x)
+ if (x < 1)
+ fun_l26_n892(x)
+ else
+ fun_l26_n46(x)
+ end
+end
+
+def fun_l25_n658(x)
+ if (x < 1)
+ fun_l26_n30(x)
+ else
+ fun_l26_n640(x)
+ end
+end
+
+def fun_l25_n659(x)
+ if (x < 1)
+ fun_l26_n323(x)
+ else
+ fun_l26_n583(x)
+ end
+end
+
+def fun_l25_n660(x)
+ if (x < 1)
+ fun_l26_n682(x)
+ else
+ fun_l26_n668(x)
+ end
+end
+
+def fun_l25_n661(x)
+ if (x < 1)
+ fun_l26_n78(x)
+ else
+ fun_l26_n83(x)
+ end
+end
+
+def fun_l25_n662(x)
+ if (x < 1)
+ fun_l26_n457(x)
+ else
+ fun_l26_n289(x)
+ end
+end
+
+def fun_l25_n663(x)
+ if (x < 1)
+ fun_l26_n444(x)
+ else
+ fun_l26_n159(x)
+ end
+end
+
+def fun_l25_n664(x)
+ if (x < 1)
+ fun_l26_n10(x)
+ else
+ fun_l26_n925(x)
+ end
+end
+
+def fun_l25_n665(x)
+ if (x < 1)
+ fun_l26_n870(x)
+ else
+ fun_l26_n253(x)
+ end
+end
+
+def fun_l25_n666(x)
+ if (x < 1)
+ fun_l26_n55(x)
+ else
+ fun_l26_n705(x)
+ end
+end
+
+def fun_l25_n667(x)
+ if (x < 1)
+ fun_l26_n179(x)
+ else
+ fun_l26_n607(x)
+ end
+end
+
+def fun_l25_n668(x)
+ if (x < 1)
+ fun_l26_n359(x)
+ else
+ fun_l26_n56(x)
+ end
+end
+
+def fun_l25_n669(x)
+ if (x < 1)
+ fun_l26_n908(x)
+ else
+ fun_l26_n997(x)
+ end
+end
+
+def fun_l25_n670(x)
+ if (x < 1)
+ fun_l26_n469(x)
+ else
+ fun_l26_n438(x)
+ end
+end
+
+def fun_l25_n671(x)
+ if (x < 1)
+ fun_l26_n740(x)
+ else
+ fun_l26_n847(x)
+ end
+end
+
+def fun_l25_n672(x)
+ if (x < 1)
+ fun_l26_n123(x)
+ else
+ fun_l26_n636(x)
+ end
+end
+
+def fun_l25_n673(x)
+ if (x < 1)
+ fun_l26_n654(x)
+ else
+ fun_l26_n221(x)
+ end
+end
+
+def fun_l25_n674(x)
+ if (x < 1)
+ fun_l26_n14(x)
+ else
+ fun_l26_n792(x)
+ end
+end
+
+def fun_l25_n675(x)
+ if (x < 1)
+ fun_l26_n424(x)
+ else
+ fun_l26_n999(x)
+ end
+end
+
+def fun_l25_n676(x)
+ if (x < 1)
+ fun_l26_n491(x)
+ else
+ fun_l26_n698(x)
+ end
+end
+
+def fun_l25_n677(x)
+ if (x < 1)
+ fun_l26_n859(x)
+ else
+ fun_l26_n749(x)
+ end
+end
+
+def fun_l25_n678(x)
+ if (x < 1)
+ fun_l26_n357(x)
+ else
+ fun_l26_n861(x)
+ end
+end
+
+def fun_l25_n679(x)
+ if (x < 1)
+ fun_l26_n144(x)
+ else
+ fun_l26_n347(x)
+ end
+end
+
+def fun_l25_n680(x)
+ if (x < 1)
+ fun_l26_n42(x)
+ else
+ fun_l26_n168(x)
+ end
+end
+
+def fun_l25_n681(x)
+ if (x < 1)
+ fun_l26_n808(x)
+ else
+ fun_l26_n639(x)
+ end
+end
+
+def fun_l25_n682(x)
+ if (x < 1)
+ fun_l26_n943(x)
+ else
+ fun_l26_n152(x)
+ end
+end
+
+def fun_l25_n683(x)
+ if (x < 1)
+ fun_l26_n668(x)
+ else
+ fun_l26_n186(x)
+ end
+end
+
+def fun_l25_n684(x)
+ if (x < 1)
+ fun_l26_n607(x)
+ else
+ fun_l26_n141(x)
+ end
+end
+
+def fun_l25_n685(x)
+ if (x < 1)
+ fun_l26_n221(x)
+ else
+ fun_l26_n960(x)
+ end
+end
+
+def fun_l25_n686(x)
+ if (x < 1)
+ fun_l26_n85(x)
+ else
+ fun_l26_n285(x)
+ end
+end
+
+def fun_l25_n687(x)
+ if (x < 1)
+ fun_l26_n707(x)
+ else
+ fun_l26_n638(x)
+ end
+end
+
+def fun_l25_n688(x)
+ if (x < 1)
+ fun_l26_n288(x)
+ else
+ fun_l26_n318(x)
+ end
+end
+
+def fun_l25_n689(x)
+ if (x < 1)
+ fun_l26_n505(x)
+ else
+ fun_l26_n802(x)
+ end
+end
+
+def fun_l25_n690(x)
+ if (x < 1)
+ fun_l26_n757(x)
+ else
+ fun_l26_n988(x)
+ end
+end
+
+def fun_l25_n691(x)
+ if (x < 1)
+ fun_l26_n211(x)
+ else
+ fun_l26_n868(x)
+ end
+end
+
+def fun_l25_n692(x)
+ if (x < 1)
+ fun_l26_n945(x)
+ else
+ fun_l26_n689(x)
+ end
+end
+
+def fun_l25_n693(x)
+ if (x < 1)
+ fun_l26_n65(x)
+ else
+ fun_l26_n326(x)
+ end
+end
+
+def fun_l25_n694(x)
+ if (x < 1)
+ fun_l26_n905(x)
+ else
+ fun_l26_n912(x)
+ end
+end
+
+def fun_l25_n695(x)
+ if (x < 1)
+ fun_l26_n408(x)
+ else
+ fun_l26_n834(x)
+ end
+end
+
+def fun_l25_n696(x)
+ if (x < 1)
+ fun_l26_n862(x)
+ else
+ fun_l26_n827(x)
+ end
+end
+
+def fun_l25_n697(x)
+ if (x < 1)
+ fun_l26_n356(x)
+ else
+ fun_l26_n201(x)
+ end
+end
+
+def fun_l25_n698(x)
+ if (x < 1)
+ fun_l26_n819(x)
+ else
+ fun_l26_n672(x)
+ end
+end
+
+def fun_l25_n699(x)
+ if (x < 1)
+ fun_l26_n252(x)
+ else
+ fun_l26_n672(x)
+ end
+end
+
+def fun_l25_n700(x)
+ if (x < 1)
+ fun_l26_n620(x)
+ else
+ fun_l26_n693(x)
+ end
+end
+
+def fun_l25_n701(x)
+ if (x < 1)
+ fun_l26_n393(x)
+ else
+ fun_l26_n246(x)
+ end
+end
+
+def fun_l25_n702(x)
+ if (x < 1)
+ fun_l26_n601(x)
+ else
+ fun_l26_n230(x)
+ end
+end
+
+def fun_l25_n703(x)
+ if (x < 1)
+ fun_l26_n583(x)
+ else
+ fun_l26_n503(x)
+ end
+end
+
+def fun_l25_n704(x)
+ if (x < 1)
+ fun_l26_n156(x)
+ else
+ fun_l26_n951(x)
+ end
+end
+
+def fun_l25_n705(x)
+ if (x < 1)
+ fun_l26_n681(x)
+ else
+ fun_l26_n692(x)
+ end
+end
+
+def fun_l25_n706(x)
+ if (x < 1)
+ fun_l26_n176(x)
+ else
+ fun_l26_n158(x)
+ end
+end
+
+def fun_l25_n707(x)
+ if (x < 1)
+ fun_l26_n607(x)
+ else
+ fun_l26_n3(x)
+ end
+end
+
+def fun_l25_n708(x)
+ if (x < 1)
+ fun_l26_n999(x)
+ else
+ fun_l26_n614(x)
+ end
+end
+
+def fun_l25_n709(x)
+ if (x < 1)
+ fun_l26_n930(x)
+ else
+ fun_l26_n888(x)
+ end
+end
+
+def fun_l25_n710(x)
+ if (x < 1)
+ fun_l26_n347(x)
+ else
+ fun_l26_n106(x)
+ end
+end
+
+def fun_l25_n711(x)
+ if (x < 1)
+ fun_l26_n425(x)
+ else
+ fun_l26_n474(x)
+ end
+end
+
+def fun_l25_n712(x)
+ if (x < 1)
+ fun_l26_n265(x)
+ else
+ fun_l26_n519(x)
+ end
+end
+
+def fun_l25_n713(x)
+ if (x < 1)
+ fun_l26_n205(x)
+ else
+ fun_l26_n76(x)
+ end
+end
+
+def fun_l25_n714(x)
+ if (x < 1)
+ fun_l26_n628(x)
+ else
+ fun_l26_n784(x)
+ end
+end
+
+def fun_l25_n715(x)
+ if (x < 1)
+ fun_l26_n217(x)
+ else
+ fun_l26_n484(x)
+ end
+end
+
+def fun_l25_n716(x)
+ if (x < 1)
+ fun_l26_n883(x)
+ else
+ fun_l26_n5(x)
+ end
+end
+
+def fun_l25_n717(x)
+ if (x < 1)
+ fun_l26_n23(x)
+ else
+ fun_l26_n457(x)
+ end
+end
+
+def fun_l25_n718(x)
+ if (x < 1)
+ fun_l26_n370(x)
+ else
+ fun_l26_n789(x)
+ end
+end
+
+def fun_l25_n719(x)
+ if (x < 1)
+ fun_l26_n636(x)
+ else
+ fun_l26_n776(x)
+ end
+end
+
+def fun_l25_n720(x)
+ if (x < 1)
+ fun_l26_n558(x)
+ else
+ fun_l26_n491(x)
+ end
+end
+
+def fun_l25_n721(x)
+ if (x < 1)
+ fun_l26_n867(x)
+ else
+ fun_l26_n49(x)
+ end
+end
+
+def fun_l25_n722(x)
+ if (x < 1)
+ fun_l26_n178(x)
+ else
+ fun_l26_n835(x)
+ end
+end
+
+def fun_l25_n723(x)
+ if (x < 1)
+ fun_l26_n967(x)
+ else
+ fun_l26_n266(x)
+ end
+end
+
+def fun_l25_n724(x)
+ if (x < 1)
+ fun_l26_n191(x)
+ else
+ fun_l26_n58(x)
+ end
+end
+
+def fun_l25_n725(x)
+ if (x < 1)
+ fun_l26_n536(x)
+ else
+ fun_l26_n78(x)
+ end
+end
+
+def fun_l25_n726(x)
+ if (x < 1)
+ fun_l26_n128(x)
+ else
+ fun_l26_n764(x)
+ end
+end
+
+def fun_l25_n727(x)
+ if (x < 1)
+ fun_l26_n243(x)
+ else
+ fun_l26_n217(x)
+ end
+end
+
+def fun_l25_n728(x)
+ if (x < 1)
+ fun_l26_n608(x)
+ else
+ fun_l26_n613(x)
+ end
+end
+
+def fun_l25_n729(x)
+ if (x < 1)
+ fun_l26_n765(x)
+ else
+ fun_l26_n822(x)
+ end
+end
+
+def fun_l25_n730(x)
+ if (x < 1)
+ fun_l26_n445(x)
+ else
+ fun_l26_n160(x)
+ end
+end
+
+def fun_l25_n731(x)
+ if (x < 1)
+ fun_l26_n209(x)
+ else
+ fun_l26_n980(x)
+ end
+end
+
+def fun_l25_n732(x)
+ if (x < 1)
+ fun_l26_n888(x)
+ else
+ fun_l26_n726(x)
+ end
+end
+
+def fun_l25_n733(x)
+ if (x < 1)
+ fun_l26_n232(x)
+ else
+ fun_l26_n47(x)
+ end
+end
+
+def fun_l25_n734(x)
+ if (x < 1)
+ fun_l26_n278(x)
+ else
+ fun_l26_n878(x)
+ end
+end
+
+def fun_l25_n735(x)
+ if (x < 1)
+ fun_l26_n894(x)
+ else
+ fun_l26_n523(x)
+ end
+end
+
+def fun_l25_n736(x)
+ if (x < 1)
+ fun_l26_n334(x)
+ else
+ fun_l26_n270(x)
+ end
+end
+
+def fun_l25_n737(x)
+ if (x < 1)
+ fun_l26_n877(x)
+ else
+ fun_l26_n105(x)
+ end
+end
+
+def fun_l25_n738(x)
+ if (x < 1)
+ fun_l26_n761(x)
+ else
+ fun_l26_n187(x)
+ end
+end
+
+def fun_l25_n739(x)
+ if (x < 1)
+ fun_l26_n668(x)
+ else
+ fun_l26_n592(x)
+ end
+end
+
+def fun_l25_n740(x)
+ if (x < 1)
+ fun_l26_n497(x)
+ else
+ fun_l26_n98(x)
+ end
+end
+
+def fun_l25_n741(x)
+ if (x < 1)
+ fun_l26_n415(x)
+ else
+ fun_l26_n85(x)
+ end
+end
+
+def fun_l25_n742(x)
+ if (x < 1)
+ fun_l26_n883(x)
+ else
+ fun_l26_n505(x)
+ end
+end
+
+def fun_l25_n743(x)
+ if (x < 1)
+ fun_l26_n12(x)
+ else
+ fun_l26_n91(x)
+ end
+end
+
+def fun_l25_n744(x)
+ if (x < 1)
+ fun_l26_n487(x)
+ else
+ fun_l26_n336(x)
+ end
+end
+
+def fun_l25_n745(x)
+ if (x < 1)
+ fun_l26_n489(x)
+ else
+ fun_l26_n186(x)
+ end
+end
+
+def fun_l25_n746(x)
+ if (x < 1)
+ fun_l26_n783(x)
+ else
+ fun_l26_n233(x)
+ end
+end
+
+def fun_l25_n747(x)
+ if (x < 1)
+ fun_l26_n171(x)
+ else
+ fun_l26_n574(x)
+ end
+end
+
+def fun_l25_n748(x)
+ if (x < 1)
+ fun_l26_n171(x)
+ else
+ fun_l26_n61(x)
+ end
+end
+
+def fun_l25_n749(x)
+ if (x < 1)
+ fun_l26_n444(x)
+ else
+ fun_l26_n89(x)
+ end
+end
+
+def fun_l25_n750(x)
+ if (x < 1)
+ fun_l26_n609(x)
+ else
+ fun_l26_n998(x)
+ end
+end
+
+def fun_l25_n751(x)
+ if (x < 1)
+ fun_l26_n914(x)
+ else
+ fun_l26_n893(x)
+ end
+end
+
+def fun_l25_n752(x)
+ if (x < 1)
+ fun_l26_n782(x)
+ else
+ fun_l26_n984(x)
+ end
+end
+
+def fun_l25_n753(x)
+ if (x < 1)
+ fun_l26_n351(x)
+ else
+ fun_l26_n370(x)
+ end
+end
+
+def fun_l25_n754(x)
+ if (x < 1)
+ fun_l26_n689(x)
+ else
+ fun_l26_n234(x)
+ end
+end
+
+def fun_l25_n755(x)
+ if (x < 1)
+ fun_l26_n131(x)
+ else
+ fun_l26_n960(x)
+ end
+end
+
+def fun_l25_n756(x)
+ if (x < 1)
+ fun_l26_n635(x)
+ else
+ fun_l26_n89(x)
+ end
+end
+
+def fun_l25_n757(x)
+ if (x < 1)
+ fun_l26_n309(x)
+ else
+ fun_l26_n74(x)
+ end
+end
+
+def fun_l25_n758(x)
+ if (x < 1)
+ fun_l26_n818(x)
+ else
+ fun_l26_n520(x)
+ end
+end
+
+def fun_l25_n759(x)
+ if (x < 1)
+ fun_l26_n873(x)
+ else
+ fun_l26_n761(x)
+ end
+end
+
+def fun_l25_n760(x)
+ if (x < 1)
+ fun_l26_n216(x)
+ else
+ fun_l26_n449(x)
+ end
+end
+
+def fun_l25_n761(x)
+ if (x < 1)
+ fun_l26_n596(x)
+ else
+ fun_l26_n617(x)
+ end
+end
+
+def fun_l25_n762(x)
+ if (x < 1)
+ fun_l26_n485(x)
+ else
+ fun_l26_n164(x)
+ end
+end
+
+def fun_l25_n763(x)
+ if (x < 1)
+ fun_l26_n434(x)
+ else
+ fun_l26_n422(x)
+ end
+end
+
+def fun_l25_n764(x)
+ if (x < 1)
+ fun_l26_n845(x)
+ else
+ fun_l26_n678(x)
+ end
+end
+
+def fun_l25_n765(x)
+ if (x < 1)
+ fun_l26_n376(x)
+ else
+ fun_l26_n128(x)
+ end
+end
+
+def fun_l25_n766(x)
+ if (x < 1)
+ fun_l26_n217(x)
+ else
+ fun_l26_n721(x)
+ end
+end
+
+def fun_l25_n767(x)
+ if (x < 1)
+ fun_l26_n929(x)
+ else
+ fun_l26_n425(x)
+ end
+end
+
+def fun_l25_n768(x)
+ if (x < 1)
+ fun_l26_n420(x)
+ else
+ fun_l26_n990(x)
+ end
+end
+
+def fun_l25_n769(x)
+ if (x < 1)
+ fun_l26_n310(x)
+ else
+ fun_l26_n901(x)
+ end
+end
+
+def fun_l25_n770(x)
+ if (x < 1)
+ fun_l26_n667(x)
+ else
+ fun_l26_n627(x)
+ end
+end
+
+def fun_l25_n771(x)
+ if (x < 1)
+ fun_l26_n265(x)
+ else
+ fun_l26_n852(x)
+ end
+end
+
+def fun_l25_n772(x)
+ if (x < 1)
+ fun_l26_n520(x)
+ else
+ fun_l26_n596(x)
+ end
+end
+
+def fun_l25_n773(x)
+ if (x < 1)
+ fun_l26_n280(x)
+ else
+ fun_l26_n0(x)
+ end
+end
+
+def fun_l25_n774(x)
+ if (x < 1)
+ fun_l26_n451(x)
+ else
+ fun_l26_n828(x)
+ end
+end
+
+def fun_l25_n775(x)
+ if (x < 1)
+ fun_l26_n814(x)
+ else
+ fun_l26_n797(x)
+ end
+end
+
+def fun_l25_n776(x)
+ if (x < 1)
+ fun_l26_n345(x)
+ else
+ fun_l26_n223(x)
+ end
+end
+
+def fun_l25_n777(x)
+ if (x < 1)
+ fun_l26_n392(x)
+ else
+ fun_l26_n847(x)
+ end
+end
+
+def fun_l25_n778(x)
+ if (x < 1)
+ fun_l26_n957(x)
+ else
+ fun_l26_n474(x)
+ end
+end
+
+def fun_l25_n779(x)
+ if (x < 1)
+ fun_l26_n950(x)
+ else
+ fun_l26_n804(x)
+ end
+end
+
+def fun_l25_n780(x)
+ if (x < 1)
+ fun_l26_n939(x)
+ else
+ fun_l26_n133(x)
+ end
+end
+
+def fun_l25_n781(x)
+ if (x < 1)
+ fun_l26_n176(x)
+ else
+ fun_l26_n237(x)
+ end
+end
+
+def fun_l25_n782(x)
+ if (x < 1)
+ fun_l26_n156(x)
+ else
+ fun_l26_n268(x)
+ end
+end
+
+def fun_l25_n783(x)
+ if (x < 1)
+ fun_l26_n750(x)
+ else
+ fun_l26_n88(x)
+ end
+end
+
+def fun_l25_n784(x)
+ if (x < 1)
+ fun_l26_n638(x)
+ else
+ fun_l26_n147(x)
+ end
+end
+
+def fun_l25_n785(x)
+ if (x < 1)
+ fun_l26_n570(x)
+ else
+ fun_l26_n698(x)
+ end
+end
+
+def fun_l25_n786(x)
+ if (x < 1)
+ fun_l26_n749(x)
+ else
+ fun_l26_n728(x)
+ end
+end
+
+def fun_l25_n787(x)
+ if (x < 1)
+ fun_l26_n183(x)
+ else
+ fun_l26_n649(x)
+ end
+end
+
+def fun_l25_n788(x)
+ if (x < 1)
+ fun_l26_n157(x)
+ else
+ fun_l26_n55(x)
+ end
+end
+
+def fun_l25_n789(x)
+ if (x < 1)
+ fun_l26_n559(x)
+ else
+ fun_l26_n228(x)
+ end
+end
+
+def fun_l25_n790(x)
+ if (x < 1)
+ fun_l26_n690(x)
+ else
+ fun_l26_n214(x)
+ end
+end
+
+def fun_l25_n791(x)
+ if (x < 1)
+ fun_l26_n621(x)
+ else
+ fun_l26_n184(x)
+ end
+end
+
+def fun_l25_n792(x)
+ if (x < 1)
+ fun_l26_n13(x)
+ else
+ fun_l26_n610(x)
+ end
+end
+
+def fun_l25_n793(x)
+ if (x < 1)
+ fun_l26_n709(x)
+ else
+ fun_l26_n40(x)
+ end
+end
+
+def fun_l25_n794(x)
+ if (x < 1)
+ fun_l26_n51(x)
+ else
+ fun_l26_n288(x)
+ end
+end
+
+def fun_l25_n795(x)
+ if (x < 1)
+ fun_l26_n526(x)
+ else
+ fun_l26_n237(x)
+ end
+end
+
+def fun_l25_n796(x)
+ if (x < 1)
+ fun_l26_n279(x)
+ else
+ fun_l26_n157(x)
+ end
+end
+
+def fun_l25_n797(x)
+ if (x < 1)
+ fun_l26_n299(x)
+ else
+ fun_l26_n999(x)
+ end
+end
+
+def fun_l25_n798(x)
+ if (x < 1)
+ fun_l26_n547(x)
+ else
+ fun_l26_n41(x)
+ end
+end
+
+def fun_l25_n799(x)
+ if (x < 1)
+ fun_l26_n522(x)
+ else
+ fun_l26_n544(x)
+ end
+end
+
+def fun_l25_n800(x)
+ if (x < 1)
+ fun_l26_n509(x)
+ else
+ fun_l26_n364(x)
+ end
+end
+
+def fun_l25_n801(x)
+ if (x < 1)
+ fun_l26_n412(x)
+ else
+ fun_l26_n719(x)
+ end
+end
+
+def fun_l25_n802(x)
+ if (x < 1)
+ fun_l26_n844(x)
+ else
+ fun_l26_n452(x)
+ end
+end
+
+def fun_l25_n803(x)
+ if (x < 1)
+ fun_l26_n681(x)
+ else
+ fun_l26_n217(x)
+ end
+end
+
+def fun_l25_n804(x)
+ if (x < 1)
+ fun_l26_n855(x)
+ else
+ fun_l26_n97(x)
+ end
+end
+
+def fun_l25_n805(x)
+ if (x < 1)
+ fun_l26_n32(x)
+ else
+ fun_l26_n512(x)
+ end
+end
+
+def fun_l25_n806(x)
+ if (x < 1)
+ fun_l26_n674(x)
+ else
+ fun_l26_n675(x)
+ end
+end
+
+def fun_l25_n807(x)
+ if (x < 1)
+ fun_l26_n684(x)
+ else
+ fun_l26_n848(x)
+ end
+end
+
+def fun_l25_n808(x)
+ if (x < 1)
+ fun_l26_n784(x)
+ else
+ fun_l26_n603(x)
+ end
+end
+
+def fun_l25_n809(x)
+ if (x < 1)
+ fun_l26_n58(x)
+ else
+ fun_l26_n20(x)
+ end
+end
+
+def fun_l25_n810(x)
+ if (x < 1)
+ fun_l26_n654(x)
+ else
+ fun_l26_n230(x)
+ end
+end
+
+def fun_l25_n811(x)
+ if (x < 1)
+ fun_l26_n627(x)
+ else
+ fun_l26_n812(x)
+ end
+end
+
+def fun_l25_n812(x)
+ if (x < 1)
+ fun_l26_n30(x)
+ else
+ fun_l26_n315(x)
+ end
+end
+
+def fun_l25_n813(x)
+ if (x < 1)
+ fun_l26_n690(x)
+ else
+ fun_l26_n755(x)
+ end
+end
+
+def fun_l25_n814(x)
+ if (x < 1)
+ fun_l26_n566(x)
+ else
+ fun_l26_n44(x)
+ end
+end
+
+def fun_l25_n815(x)
+ if (x < 1)
+ fun_l26_n884(x)
+ else
+ fun_l26_n954(x)
+ end
+end
+
+def fun_l25_n816(x)
+ if (x < 1)
+ fun_l26_n64(x)
+ else
+ fun_l26_n179(x)
+ end
+end
+
+def fun_l25_n817(x)
+ if (x < 1)
+ fun_l26_n341(x)
+ else
+ fun_l26_n440(x)
+ end
+end
+
+def fun_l25_n818(x)
+ if (x < 1)
+ fun_l26_n934(x)
+ else
+ fun_l26_n678(x)
+ end
+end
+
+def fun_l25_n819(x)
+ if (x < 1)
+ fun_l26_n225(x)
+ else
+ fun_l26_n807(x)
+ end
+end
+
+def fun_l25_n820(x)
+ if (x < 1)
+ fun_l26_n625(x)
+ else
+ fun_l26_n63(x)
+ end
+end
+
+def fun_l25_n821(x)
+ if (x < 1)
+ fun_l26_n744(x)
+ else
+ fun_l26_n68(x)
+ end
+end
+
+def fun_l25_n822(x)
+ if (x < 1)
+ fun_l26_n962(x)
+ else
+ fun_l26_n205(x)
+ end
+end
+
+def fun_l25_n823(x)
+ if (x < 1)
+ fun_l26_n715(x)
+ else
+ fun_l26_n130(x)
+ end
+end
+
+def fun_l25_n824(x)
+ if (x < 1)
+ fun_l26_n843(x)
+ else
+ fun_l26_n853(x)
+ end
+end
+
+def fun_l25_n825(x)
+ if (x < 1)
+ fun_l26_n34(x)
+ else
+ fun_l26_n665(x)
+ end
+end
+
+def fun_l25_n826(x)
+ if (x < 1)
+ fun_l26_n540(x)
+ else
+ fun_l26_n693(x)
+ end
+end
+
+def fun_l25_n827(x)
+ if (x < 1)
+ fun_l26_n482(x)
+ else
+ fun_l26_n527(x)
+ end
+end
+
+def fun_l25_n828(x)
+ if (x < 1)
+ fun_l26_n98(x)
+ else
+ fun_l26_n888(x)
+ end
+end
+
+def fun_l25_n829(x)
+ if (x < 1)
+ fun_l26_n681(x)
+ else
+ fun_l26_n176(x)
+ end
+end
+
+def fun_l25_n830(x)
+ if (x < 1)
+ fun_l26_n453(x)
+ else
+ fun_l26_n455(x)
+ end
+end
+
+def fun_l25_n831(x)
+ if (x < 1)
+ fun_l26_n587(x)
+ else
+ fun_l26_n501(x)
+ end
+end
+
+def fun_l25_n832(x)
+ if (x < 1)
+ fun_l26_n725(x)
+ else
+ fun_l26_n608(x)
+ end
+end
+
+def fun_l25_n833(x)
+ if (x < 1)
+ fun_l26_n589(x)
+ else
+ fun_l26_n945(x)
+ end
+end
+
+def fun_l25_n834(x)
+ if (x < 1)
+ fun_l26_n41(x)
+ else
+ fun_l26_n925(x)
+ end
+end
+
+def fun_l25_n835(x)
+ if (x < 1)
+ fun_l26_n858(x)
+ else
+ fun_l26_n840(x)
+ end
+end
+
+def fun_l25_n836(x)
+ if (x < 1)
+ fun_l26_n572(x)
+ else
+ fun_l26_n360(x)
+ end
+end
+
+def fun_l25_n837(x)
+ if (x < 1)
+ fun_l26_n446(x)
+ else
+ fun_l26_n912(x)
+ end
+end
+
+def fun_l25_n838(x)
+ if (x < 1)
+ fun_l26_n104(x)
+ else
+ fun_l26_n795(x)
+ end
+end
+
+def fun_l25_n839(x)
+ if (x < 1)
+ fun_l26_n607(x)
+ else
+ fun_l26_n803(x)
+ end
+end
+
+def fun_l25_n840(x)
+ if (x < 1)
+ fun_l26_n156(x)
+ else
+ fun_l26_n874(x)
+ end
+end
+
+def fun_l25_n841(x)
+ if (x < 1)
+ fun_l26_n314(x)
+ else
+ fun_l26_n28(x)
+ end
+end
+
+def fun_l25_n842(x)
+ if (x < 1)
+ fun_l26_n683(x)
+ else
+ fun_l26_n695(x)
+ end
+end
+
+def fun_l25_n843(x)
+ if (x < 1)
+ fun_l26_n881(x)
+ else
+ fun_l26_n272(x)
+ end
+end
+
+def fun_l25_n844(x)
+ if (x < 1)
+ fun_l26_n354(x)
+ else
+ fun_l26_n993(x)
+ end
+end
+
+def fun_l25_n845(x)
+ if (x < 1)
+ fun_l26_n686(x)
+ else
+ fun_l26_n594(x)
+ end
+end
+
+def fun_l25_n846(x)
+ if (x < 1)
+ fun_l26_n644(x)
+ else
+ fun_l26_n930(x)
+ end
+end
+
+def fun_l25_n847(x)
+ if (x < 1)
+ fun_l26_n417(x)
+ else
+ fun_l26_n705(x)
+ end
+end
+
+def fun_l25_n848(x)
+ if (x < 1)
+ fun_l26_n694(x)
+ else
+ fun_l26_n331(x)
+ end
+end
+
+def fun_l25_n849(x)
+ if (x < 1)
+ fun_l26_n546(x)
+ else
+ fun_l26_n848(x)
+ end
+end
+
+def fun_l25_n850(x)
+ if (x < 1)
+ fun_l26_n199(x)
+ else
+ fun_l26_n49(x)
+ end
+end
+
+def fun_l25_n851(x)
+ if (x < 1)
+ fun_l26_n439(x)
+ else
+ fun_l26_n406(x)
+ end
+end
+
+def fun_l25_n852(x)
+ if (x < 1)
+ fun_l26_n355(x)
+ else
+ fun_l26_n582(x)
+ end
+end
+
+def fun_l25_n853(x)
+ if (x < 1)
+ fun_l26_n839(x)
+ else
+ fun_l26_n485(x)
+ end
+end
+
+def fun_l25_n854(x)
+ if (x < 1)
+ fun_l26_n952(x)
+ else
+ fun_l26_n781(x)
+ end
+end
+
+def fun_l25_n855(x)
+ if (x < 1)
+ fun_l26_n616(x)
+ else
+ fun_l26_n811(x)
+ end
+end
+
+def fun_l25_n856(x)
+ if (x < 1)
+ fun_l26_n590(x)
+ else
+ fun_l26_n977(x)
+ end
+end
+
+def fun_l25_n857(x)
+ if (x < 1)
+ fun_l26_n167(x)
+ else
+ fun_l26_n329(x)
+ end
+end
+
+def fun_l25_n858(x)
+ if (x < 1)
+ fun_l26_n732(x)
+ else
+ fun_l26_n707(x)
+ end
+end
+
+def fun_l25_n859(x)
+ if (x < 1)
+ fun_l26_n956(x)
+ else
+ fun_l26_n955(x)
+ end
+end
+
+def fun_l25_n860(x)
+ if (x < 1)
+ fun_l26_n443(x)
+ else
+ fun_l26_n816(x)
+ end
+end
+
+def fun_l25_n861(x)
+ if (x < 1)
+ fun_l26_n584(x)
+ else
+ fun_l26_n671(x)
+ end
+end
+
+def fun_l25_n862(x)
+ if (x < 1)
+ fun_l26_n43(x)
+ else
+ fun_l26_n0(x)
+ end
+end
+
+def fun_l25_n863(x)
+ if (x < 1)
+ fun_l26_n697(x)
+ else
+ fun_l26_n842(x)
+ end
+end
+
+def fun_l25_n864(x)
+ if (x < 1)
+ fun_l26_n423(x)
+ else
+ fun_l26_n509(x)
+ end
+end
+
+def fun_l25_n865(x)
+ if (x < 1)
+ fun_l26_n239(x)
+ else
+ fun_l26_n257(x)
+ end
+end
+
+def fun_l25_n866(x)
+ if (x < 1)
+ fun_l26_n78(x)
+ else
+ fun_l26_n450(x)
+ end
+end
+
+def fun_l25_n867(x)
+ if (x < 1)
+ fun_l26_n121(x)
+ else
+ fun_l26_n453(x)
+ end
+end
+
+def fun_l25_n868(x)
+ if (x < 1)
+ fun_l26_n844(x)
+ else
+ fun_l26_n977(x)
+ end
+end
+
+def fun_l25_n869(x)
+ if (x < 1)
+ fun_l26_n54(x)
+ else
+ fun_l26_n869(x)
+ end
+end
+
+def fun_l25_n870(x)
+ if (x < 1)
+ fun_l26_n18(x)
+ else
+ fun_l26_n799(x)
+ end
+end
+
+def fun_l25_n871(x)
+ if (x < 1)
+ fun_l26_n990(x)
+ else
+ fun_l26_n53(x)
+ end
+end
+
+def fun_l25_n872(x)
+ if (x < 1)
+ fun_l26_n607(x)
+ else
+ fun_l26_n822(x)
+ end
+end
+
+def fun_l25_n873(x)
+ if (x < 1)
+ fun_l26_n378(x)
+ else
+ fun_l26_n158(x)
+ end
+end
+
+def fun_l25_n874(x)
+ if (x < 1)
+ fun_l26_n206(x)
+ else
+ fun_l26_n271(x)
+ end
+end
+
+def fun_l25_n875(x)
+ if (x < 1)
+ fun_l26_n536(x)
+ else
+ fun_l26_n850(x)
+ end
+end
+
+def fun_l25_n876(x)
+ if (x < 1)
+ fun_l26_n129(x)
+ else
+ fun_l26_n750(x)
+ end
+end
+
+def fun_l25_n877(x)
+ if (x < 1)
+ fun_l26_n553(x)
+ else
+ fun_l26_n815(x)
+ end
+end
+
+def fun_l25_n878(x)
+ if (x < 1)
+ fun_l26_n619(x)
+ else
+ fun_l26_n182(x)
+ end
+end
+
+def fun_l25_n879(x)
+ if (x < 1)
+ fun_l26_n529(x)
+ else
+ fun_l26_n541(x)
+ end
+end
+
+def fun_l25_n880(x)
+ if (x < 1)
+ fun_l26_n228(x)
+ else
+ fun_l26_n672(x)
+ end
+end
+
+def fun_l25_n881(x)
+ if (x < 1)
+ fun_l26_n834(x)
+ else
+ fun_l26_n830(x)
+ end
+end
+
+def fun_l25_n882(x)
+ if (x < 1)
+ fun_l26_n80(x)
+ else
+ fun_l26_n257(x)
+ end
+end
+
+def fun_l25_n883(x)
+ if (x < 1)
+ fun_l26_n805(x)
+ else
+ fun_l26_n589(x)
+ end
+end
+
+def fun_l25_n884(x)
+ if (x < 1)
+ fun_l26_n20(x)
+ else
+ fun_l26_n880(x)
+ end
+end
+
+def fun_l25_n885(x)
+ if (x < 1)
+ fun_l26_n924(x)
+ else
+ fun_l26_n832(x)
+ end
+end
+
+def fun_l25_n886(x)
+ if (x < 1)
+ fun_l26_n262(x)
+ else
+ fun_l26_n928(x)
+ end
+end
+
+def fun_l25_n887(x)
+ if (x < 1)
+ fun_l26_n461(x)
+ else
+ fun_l26_n81(x)
+ end
+end
+
+def fun_l25_n888(x)
+ if (x < 1)
+ fun_l26_n484(x)
+ else
+ fun_l26_n376(x)
+ end
+end
+
+def fun_l25_n889(x)
+ if (x < 1)
+ fun_l26_n26(x)
+ else
+ fun_l26_n28(x)
+ end
+end
+
+def fun_l25_n890(x)
+ if (x < 1)
+ fun_l26_n184(x)
+ else
+ fun_l26_n623(x)
+ end
+end
+
+def fun_l25_n891(x)
+ if (x < 1)
+ fun_l26_n326(x)
+ else
+ fun_l26_n441(x)
+ end
+end
+
+def fun_l25_n892(x)
+ if (x < 1)
+ fun_l26_n35(x)
+ else
+ fun_l26_n543(x)
+ end
+end
+
+def fun_l25_n893(x)
+ if (x < 1)
+ fun_l26_n568(x)
+ else
+ fun_l26_n229(x)
+ end
+end
+
+def fun_l25_n894(x)
+ if (x < 1)
+ fun_l26_n163(x)
+ else
+ fun_l26_n505(x)
+ end
+end
+
+def fun_l25_n895(x)
+ if (x < 1)
+ fun_l26_n675(x)
+ else
+ fun_l26_n508(x)
+ end
+end
+
+def fun_l25_n896(x)
+ if (x < 1)
+ fun_l26_n285(x)
+ else
+ fun_l26_n936(x)
+ end
+end
+
+def fun_l25_n897(x)
+ if (x < 1)
+ fun_l26_n848(x)
+ else
+ fun_l26_n169(x)
+ end
+end
+
+def fun_l25_n898(x)
+ if (x < 1)
+ fun_l26_n139(x)
+ else
+ fun_l26_n479(x)
+ end
+end
+
+def fun_l25_n899(x)
+ if (x < 1)
+ fun_l26_n355(x)
+ else
+ fun_l26_n49(x)
+ end
+end
+
+def fun_l25_n900(x)
+ if (x < 1)
+ fun_l26_n918(x)
+ else
+ fun_l26_n215(x)
+ end
+end
+
+def fun_l25_n901(x)
+ if (x < 1)
+ fun_l26_n55(x)
+ else
+ fun_l26_n550(x)
+ end
+end
+
+def fun_l25_n902(x)
+ if (x < 1)
+ fun_l26_n660(x)
+ else
+ fun_l26_n117(x)
+ end
+end
+
+def fun_l25_n903(x)
+ if (x < 1)
+ fun_l26_n968(x)
+ else
+ fun_l26_n279(x)
+ end
+end
+
+def fun_l25_n904(x)
+ if (x < 1)
+ fun_l26_n693(x)
+ else
+ fun_l26_n57(x)
+ end
+end
+
+def fun_l25_n905(x)
+ if (x < 1)
+ fun_l26_n248(x)
+ else
+ fun_l26_n154(x)
+ end
+end
+
+def fun_l25_n906(x)
+ if (x < 1)
+ fun_l26_n837(x)
+ else
+ fun_l26_n698(x)
+ end
+end
+
+def fun_l25_n907(x)
+ if (x < 1)
+ fun_l26_n630(x)
+ else
+ fun_l26_n460(x)
+ end
+end
+
+def fun_l25_n908(x)
+ if (x < 1)
+ fun_l26_n424(x)
+ else
+ fun_l26_n243(x)
+ end
+end
+
+def fun_l25_n909(x)
+ if (x < 1)
+ fun_l26_n897(x)
+ else
+ fun_l26_n736(x)
+ end
+end
+
+def fun_l25_n910(x)
+ if (x < 1)
+ fun_l26_n573(x)
+ else
+ fun_l26_n205(x)
+ end
+end
+
+def fun_l25_n911(x)
+ if (x < 1)
+ fun_l26_n535(x)
+ else
+ fun_l26_n970(x)
+ end
+end
+
+def fun_l25_n912(x)
+ if (x < 1)
+ fun_l26_n826(x)
+ else
+ fun_l26_n744(x)
+ end
+end
+
+def fun_l25_n913(x)
+ if (x < 1)
+ fun_l26_n244(x)
+ else
+ fun_l26_n216(x)
+ end
+end
+
+def fun_l25_n914(x)
+ if (x < 1)
+ fun_l26_n958(x)
+ else
+ fun_l26_n617(x)
+ end
+end
+
+def fun_l25_n915(x)
+ if (x < 1)
+ fun_l26_n911(x)
+ else
+ fun_l26_n684(x)
+ end
+end
+
+def fun_l25_n916(x)
+ if (x < 1)
+ fun_l26_n294(x)
+ else
+ fun_l26_n319(x)
+ end
+end
+
+def fun_l25_n917(x)
+ if (x < 1)
+ fun_l26_n665(x)
+ else
+ fun_l26_n867(x)
+ end
+end
+
+def fun_l25_n918(x)
+ if (x < 1)
+ fun_l26_n733(x)
+ else
+ fun_l26_n746(x)
+ end
+end
+
+def fun_l25_n919(x)
+ if (x < 1)
+ fun_l26_n243(x)
+ else
+ fun_l26_n328(x)
+ end
+end
+
+def fun_l25_n920(x)
+ if (x < 1)
+ fun_l26_n897(x)
+ else
+ fun_l26_n197(x)
+ end
+end
+
+def fun_l25_n921(x)
+ if (x < 1)
+ fun_l26_n528(x)
+ else
+ fun_l26_n229(x)
+ end
+end
+
+def fun_l25_n922(x)
+ if (x < 1)
+ fun_l26_n897(x)
+ else
+ fun_l26_n547(x)
+ end
+end
+
+def fun_l25_n923(x)
+ if (x < 1)
+ fun_l26_n234(x)
+ else
+ fun_l26_n920(x)
+ end
+end
+
+def fun_l25_n924(x)
+ if (x < 1)
+ fun_l26_n827(x)
+ else
+ fun_l26_n257(x)
+ end
+end
+
+def fun_l25_n925(x)
+ if (x < 1)
+ fun_l26_n847(x)
+ else
+ fun_l26_n469(x)
+ end
+end
+
+def fun_l25_n926(x)
+ if (x < 1)
+ fun_l26_n27(x)
+ else
+ fun_l26_n974(x)
+ end
+end
+
+def fun_l25_n927(x)
+ if (x < 1)
+ fun_l26_n872(x)
+ else
+ fun_l26_n535(x)
+ end
+end
+
+def fun_l25_n928(x)
+ if (x < 1)
+ fun_l26_n870(x)
+ else
+ fun_l26_n783(x)
+ end
+end
+
+def fun_l25_n929(x)
+ if (x < 1)
+ fun_l26_n993(x)
+ else
+ fun_l26_n168(x)
+ end
+end
+
+def fun_l25_n930(x)
+ if (x < 1)
+ fun_l26_n852(x)
+ else
+ fun_l26_n41(x)
+ end
+end
+
+def fun_l25_n931(x)
+ if (x < 1)
+ fun_l26_n290(x)
+ else
+ fun_l26_n249(x)
+ end
+end
+
+def fun_l25_n932(x)
+ if (x < 1)
+ fun_l26_n446(x)
+ else
+ fun_l26_n841(x)
+ end
+end
+
+def fun_l25_n933(x)
+ if (x < 1)
+ fun_l26_n303(x)
+ else
+ fun_l26_n779(x)
+ end
+end
+
+def fun_l25_n934(x)
+ if (x < 1)
+ fun_l26_n352(x)
+ else
+ fun_l26_n731(x)
+ end
+end
+
+def fun_l25_n935(x)
+ if (x < 1)
+ fun_l26_n377(x)
+ else
+ fun_l26_n214(x)
+ end
+end
+
+def fun_l25_n936(x)
+ if (x < 1)
+ fun_l26_n374(x)
+ else
+ fun_l26_n793(x)
+ end
+end
+
+def fun_l25_n937(x)
+ if (x < 1)
+ fun_l26_n656(x)
+ else
+ fun_l26_n575(x)
+ end
+end
+
+def fun_l25_n938(x)
+ if (x < 1)
+ fun_l26_n777(x)
+ else
+ fun_l26_n773(x)
+ end
+end
+
+def fun_l25_n939(x)
+ if (x < 1)
+ fun_l26_n5(x)
+ else
+ fun_l26_n206(x)
+ end
+end
+
+def fun_l25_n940(x)
+ if (x < 1)
+ fun_l26_n780(x)
+ else
+ fun_l26_n486(x)
+ end
+end
+
+def fun_l25_n941(x)
+ if (x < 1)
+ fun_l26_n634(x)
+ else
+ fun_l26_n727(x)
+ end
+end
+
+def fun_l25_n942(x)
+ if (x < 1)
+ fun_l26_n78(x)
+ else
+ fun_l26_n918(x)
+ end
+end
+
+def fun_l25_n943(x)
+ if (x < 1)
+ fun_l26_n616(x)
+ else
+ fun_l26_n35(x)
+ end
+end
+
+def fun_l25_n944(x)
+ if (x < 1)
+ fun_l26_n540(x)
+ else
+ fun_l26_n837(x)
+ end
+end
+
+def fun_l25_n945(x)
+ if (x < 1)
+ fun_l26_n365(x)
+ else
+ fun_l26_n561(x)
+ end
+end
+
+def fun_l25_n946(x)
+ if (x < 1)
+ fun_l26_n519(x)
+ else
+ fun_l26_n440(x)
+ end
+end
+
+def fun_l25_n947(x)
+ if (x < 1)
+ fun_l26_n144(x)
+ else
+ fun_l26_n426(x)
+ end
+end
+
+def fun_l25_n948(x)
+ if (x < 1)
+ fun_l26_n973(x)
+ else
+ fun_l26_n63(x)
+ end
+end
+
+def fun_l25_n949(x)
+ if (x < 1)
+ fun_l26_n258(x)
+ else
+ fun_l26_n690(x)
+ end
+end
+
+def fun_l25_n950(x)
+ if (x < 1)
+ fun_l26_n368(x)
+ else
+ fun_l26_n307(x)
+ end
+end
+
+def fun_l25_n951(x)
+ if (x < 1)
+ fun_l26_n133(x)
+ else
+ fun_l26_n774(x)
+ end
+end
+
+def fun_l25_n952(x)
+ if (x < 1)
+ fun_l26_n866(x)
+ else
+ fun_l26_n299(x)
+ end
+end
+
+def fun_l25_n953(x)
+ if (x < 1)
+ fun_l26_n72(x)
+ else
+ fun_l26_n421(x)
+ end
+end
+
+def fun_l25_n954(x)
+ if (x < 1)
+ fun_l26_n990(x)
+ else
+ fun_l26_n716(x)
+ end
+end
+
+def fun_l25_n955(x)
+ if (x < 1)
+ fun_l26_n138(x)
+ else
+ fun_l26_n387(x)
+ end
+end
+
+def fun_l25_n956(x)
+ if (x < 1)
+ fun_l26_n451(x)
+ else
+ fun_l26_n965(x)
+ end
+end
+
+def fun_l25_n957(x)
+ if (x < 1)
+ fun_l26_n292(x)
+ else
+ fun_l26_n741(x)
+ end
+end
+
+def fun_l25_n958(x)
+ if (x < 1)
+ fun_l26_n835(x)
+ else
+ fun_l26_n82(x)
+ end
+end
+
+def fun_l25_n959(x)
+ if (x < 1)
+ fun_l26_n73(x)
+ else
+ fun_l26_n987(x)
+ end
+end
+
+def fun_l25_n960(x)
+ if (x < 1)
+ fun_l26_n465(x)
+ else
+ fun_l26_n893(x)
+ end
+end
+
+def fun_l25_n961(x)
+ if (x < 1)
+ fun_l26_n277(x)
+ else
+ fun_l26_n846(x)
+ end
+end
+
+def fun_l25_n962(x)
+ if (x < 1)
+ fun_l26_n1(x)
+ else
+ fun_l26_n408(x)
+ end
+end
+
+def fun_l25_n963(x)
+ if (x < 1)
+ fun_l26_n139(x)
+ else
+ fun_l26_n43(x)
+ end
+end
+
+def fun_l25_n964(x)
+ if (x < 1)
+ fun_l26_n238(x)
+ else
+ fun_l26_n427(x)
+ end
+end
+
+def fun_l25_n965(x)
+ if (x < 1)
+ fun_l26_n150(x)
+ else
+ fun_l26_n60(x)
+ end
+end
+
+def fun_l25_n966(x)
+ if (x < 1)
+ fun_l26_n423(x)
+ else
+ fun_l26_n166(x)
+ end
+end
+
+def fun_l25_n967(x)
+ if (x < 1)
+ fun_l26_n102(x)
+ else
+ fun_l26_n679(x)
+ end
+end
+
+def fun_l25_n968(x)
+ if (x < 1)
+ fun_l26_n41(x)
+ else
+ fun_l26_n553(x)
+ end
+end
+
+def fun_l25_n969(x)
+ if (x < 1)
+ fun_l26_n577(x)
+ else
+ fun_l26_n589(x)
+ end
+end
+
+def fun_l25_n970(x)
+ if (x < 1)
+ fun_l26_n569(x)
+ else
+ fun_l26_n677(x)
+ end
+end
+
+def fun_l25_n971(x)
+ if (x < 1)
+ fun_l26_n845(x)
+ else
+ fun_l26_n237(x)
+ end
+end
+
+def fun_l25_n972(x)
+ if (x < 1)
+ fun_l26_n33(x)
+ else
+ fun_l26_n281(x)
+ end
+end
+
+def fun_l25_n973(x)
+ if (x < 1)
+ fun_l26_n432(x)
+ else
+ fun_l26_n800(x)
+ end
+end
+
+def fun_l25_n974(x)
+ if (x < 1)
+ fun_l26_n49(x)
+ else
+ fun_l26_n864(x)
+ end
+end
+
+def fun_l25_n975(x)
+ if (x < 1)
+ fun_l26_n379(x)
+ else
+ fun_l26_n704(x)
+ end
+end
+
+def fun_l25_n976(x)
+ if (x < 1)
+ fun_l26_n778(x)
+ else
+ fun_l26_n310(x)
+ end
+end
+
+def fun_l25_n977(x)
+ if (x < 1)
+ fun_l26_n137(x)
+ else
+ fun_l26_n261(x)
+ end
+end
+
+def fun_l25_n978(x)
+ if (x < 1)
+ fun_l26_n38(x)
+ else
+ fun_l26_n244(x)
+ end
+end
+
+def fun_l25_n979(x)
+ if (x < 1)
+ fun_l26_n665(x)
+ else
+ fun_l26_n883(x)
+ end
+end
+
+def fun_l25_n980(x)
+ if (x < 1)
+ fun_l26_n448(x)
+ else
+ fun_l26_n619(x)
+ end
+end
+
+def fun_l25_n981(x)
+ if (x < 1)
+ fun_l26_n652(x)
+ else
+ fun_l26_n804(x)
+ end
+end
+
+def fun_l25_n982(x)
+ if (x < 1)
+ fun_l26_n804(x)
+ else
+ fun_l26_n110(x)
+ end
+end
+
+def fun_l25_n983(x)
+ if (x < 1)
+ fun_l26_n151(x)
+ else
+ fun_l26_n588(x)
+ end
+end
+
+def fun_l25_n984(x)
+ if (x < 1)
+ fun_l26_n379(x)
+ else
+ fun_l26_n156(x)
+ end
+end
+
+def fun_l25_n985(x)
+ if (x < 1)
+ fun_l26_n936(x)
+ else
+ fun_l26_n31(x)
+ end
+end
+
+def fun_l25_n986(x)
+ if (x < 1)
+ fun_l26_n65(x)
+ else
+ fun_l26_n303(x)
+ end
+end
+
+def fun_l25_n987(x)
+ if (x < 1)
+ fun_l26_n273(x)
+ else
+ fun_l26_n4(x)
+ end
+end
+
+def fun_l25_n988(x)
+ if (x < 1)
+ fun_l26_n538(x)
+ else
+ fun_l26_n357(x)
+ end
+end
+
+def fun_l25_n989(x)
+ if (x < 1)
+ fun_l26_n922(x)
+ else
+ fun_l26_n457(x)
+ end
+end
+
+def fun_l25_n990(x)
+ if (x < 1)
+ fun_l26_n250(x)
+ else
+ fun_l26_n945(x)
+ end
+end
+
+def fun_l25_n991(x)
+ if (x < 1)
+ fun_l26_n878(x)
+ else
+ fun_l26_n992(x)
+ end
+end
+
+def fun_l25_n992(x)
+ if (x < 1)
+ fun_l26_n767(x)
+ else
+ fun_l26_n132(x)
+ end
+end
+
+def fun_l25_n993(x)
+ if (x < 1)
+ fun_l26_n737(x)
+ else
+ fun_l26_n323(x)
+ end
+end
+
+def fun_l25_n994(x)
+ if (x < 1)
+ fun_l26_n173(x)
+ else
+ fun_l26_n424(x)
+ end
+end
+
+def fun_l25_n995(x)
+ if (x < 1)
+ fun_l26_n860(x)
+ else
+ fun_l26_n390(x)
+ end
+end
+
+def fun_l25_n996(x)
+ if (x < 1)
+ fun_l26_n794(x)
+ else
+ fun_l26_n613(x)
+ end
+end
+
+def fun_l25_n997(x)
+ if (x < 1)
+ fun_l26_n807(x)
+ else
+ fun_l26_n277(x)
+ end
+end
+
+def fun_l25_n998(x)
+ if (x < 1)
+ fun_l26_n418(x)
+ else
+ fun_l26_n830(x)
+ end
+end
+
+def fun_l25_n999(x)
+ if (x < 1)
+ fun_l26_n212(x)
+ else
+ fun_l26_n863(x)
+ end
+end
+
+def fun_l26_n0(x)
+ if (x < 1)
+ fun_l27_n276(x)
+ else
+ fun_l27_n243(x)
+ end
+end
+
+def fun_l26_n1(x)
+ if (x < 1)
+ fun_l27_n136(x)
+ else
+ fun_l27_n625(x)
+ end
+end
+
+def fun_l26_n2(x)
+ if (x < 1)
+ fun_l27_n205(x)
+ else
+ fun_l27_n576(x)
+ end
+end
+
+def fun_l26_n3(x)
+ if (x < 1)
+ fun_l27_n97(x)
+ else
+ fun_l27_n753(x)
+ end
+end
+
+def fun_l26_n4(x)
+ if (x < 1)
+ fun_l27_n984(x)
+ else
+ fun_l27_n827(x)
+ end
+end
+
+def fun_l26_n5(x)
+ if (x < 1)
+ fun_l27_n428(x)
+ else
+ fun_l27_n559(x)
+ end
+end
+
+def fun_l26_n6(x)
+ if (x < 1)
+ fun_l27_n148(x)
+ else
+ fun_l27_n351(x)
+ end
+end
+
+def fun_l26_n7(x)
+ if (x < 1)
+ fun_l27_n90(x)
+ else
+ fun_l27_n241(x)
+ end
+end
+
+def fun_l26_n8(x)
+ if (x < 1)
+ fun_l27_n860(x)
+ else
+ fun_l27_n495(x)
+ end
+end
+
+def fun_l26_n9(x)
+ if (x < 1)
+ fun_l27_n245(x)
+ else
+ fun_l27_n429(x)
+ end
+end
+
+def fun_l26_n10(x)
+ if (x < 1)
+ fun_l27_n999(x)
+ else
+ fun_l27_n536(x)
+ end
+end
+
+def fun_l26_n11(x)
+ if (x < 1)
+ fun_l27_n777(x)
+ else
+ fun_l27_n823(x)
+ end
+end
+
+def fun_l26_n12(x)
+ if (x < 1)
+ fun_l27_n158(x)
+ else
+ fun_l27_n249(x)
+ end
+end
+
+def fun_l26_n13(x)
+ if (x < 1)
+ fun_l27_n781(x)
+ else
+ fun_l27_n710(x)
+ end
+end
+
+def fun_l26_n14(x)
+ if (x < 1)
+ fun_l27_n784(x)
+ else
+ fun_l27_n728(x)
+ end
+end
+
+def fun_l26_n15(x)
+ if (x < 1)
+ fun_l27_n225(x)
+ else
+ fun_l27_n216(x)
+ end
+end
+
+def fun_l26_n16(x)
+ if (x < 1)
+ fun_l27_n228(x)
+ else
+ fun_l27_n219(x)
+ end
+end
+
+def fun_l26_n17(x)
+ if (x < 1)
+ fun_l27_n849(x)
+ else
+ fun_l27_n348(x)
+ end
+end
+
+def fun_l26_n18(x)
+ if (x < 1)
+ fun_l27_n722(x)
+ else
+ fun_l27_n884(x)
+ end
+end
+
+def fun_l26_n19(x)
+ if (x < 1)
+ fun_l27_n756(x)
+ else
+ fun_l27_n715(x)
+ end
+end
+
+def fun_l26_n20(x)
+ if (x < 1)
+ fun_l27_n217(x)
+ else
+ fun_l27_n909(x)
+ end
+end
+
+def fun_l26_n21(x)
+ if (x < 1)
+ fun_l27_n239(x)
+ else
+ fun_l27_n370(x)
+ end
+end
+
+def fun_l26_n22(x)
+ if (x < 1)
+ fun_l27_n954(x)
+ else
+ fun_l27_n223(x)
+ end
+end
+
+def fun_l26_n23(x)
+ if (x < 1)
+ fun_l27_n781(x)
+ else
+ fun_l27_n845(x)
+ end
+end
+
+def fun_l26_n24(x)
+ if (x < 1)
+ fun_l27_n80(x)
+ else
+ fun_l27_n71(x)
+ end
+end
+
+def fun_l26_n25(x)
+ if (x < 1)
+ fun_l27_n850(x)
+ else
+ fun_l27_n715(x)
+ end
+end
+
+def fun_l26_n26(x)
+ if (x < 1)
+ fun_l27_n632(x)
+ else
+ fun_l27_n624(x)
+ end
+end
+
+def fun_l26_n27(x)
+ if (x < 1)
+ fun_l27_n342(x)
+ else
+ fun_l27_n999(x)
+ end
+end
+
+def fun_l26_n28(x)
+ if (x < 1)
+ fun_l27_n105(x)
+ else
+ fun_l27_n390(x)
+ end
+end
+
+def fun_l26_n29(x)
+ if (x < 1)
+ fun_l27_n972(x)
+ else
+ fun_l27_n451(x)
+ end
+end
+
+def fun_l26_n30(x)
+ if (x < 1)
+ fun_l27_n364(x)
+ else
+ fun_l27_n392(x)
+ end
+end
+
+def fun_l26_n31(x)
+ if (x < 1)
+ fun_l27_n892(x)
+ else
+ fun_l27_n874(x)
+ end
+end
+
+def fun_l26_n32(x)
+ if (x < 1)
+ fun_l27_n783(x)
+ else
+ fun_l27_n456(x)
+ end
+end
+
+def fun_l26_n33(x)
+ if (x < 1)
+ fun_l27_n491(x)
+ else
+ fun_l27_n479(x)
+ end
+end
+
+def fun_l26_n34(x)
+ if (x < 1)
+ fun_l27_n799(x)
+ else
+ fun_l27_n438(x)
+ end
+end
+
+def fun_l26_n35(x)
+ if (x < 1)
+ fun_l27_n335(x)
+ else
+ fun_l27_n263(x)
+ end
+end
+
+def fun_l26_n36(x)
+ if (x < 1)
+ fun_l27_n935(x)
+ else
+ fun_l27_n715(x)
+ end
+end
+
+def fun_l26_n37(x)
+ if (x < 1)
+ fun_l27_n2(x)
+ else
+ fun_l27_n13(x)
+ end
+end
+
+def fun_l26_n38(x)
+ if (x < 1)
+ fun_l27_n567(x)
+ else
+ fun_l27_n878(x)
+ end
+end
+
+def fun_l26_n39(x)
+ if (x < 1)
+ fun_l27_n144(x)
+ else
+ fun_l27_n349(x)
+ end
+end
+
+def fun_l26_n40(x)
+ if (x < 1)
+ fun_l27_n957(x)
+ else
+ fun_l27_n990(x)
+ end
+end
+
+def fun_l26_n41(x)
+ if (x < 1)
+ fun_l27_n501(x)
+ else
+ fun_l27_n752(x)
+ end
+end
+
+def fun_l26_n42(x)
+ if (x < 1)
+ fun_l27_n23(x)
+ else
+ fun_l27_n200(x)
+ end
+end
+
+def fun_l26_n43(x)
+ if (x < 1)
+ fun_l27_n61(x)
+ else
+ fun_l27_n306(x)
+ end
+end
+
+def fun_l26_n44(x)
+ if (x < 1)
+ fun_l27_n336(x)
+ else
+ fun_l27_n468(x)
+ end
+end
+
+def fun_l26_n45(x)
+ if (x < 1)
+ fun_l27_n350(x)
+ else
+ fun_l27_n359(x)
+ end
+end
+
+def fun_l26_n46(x)
+ if (x < 1)
+ fun_l27_n574(x)
+ else
+ fun_l27_n791(x)
+ end
+end
+
+def fun_l26_n47(x)
+ if (x < 1)
+ fun_l27_n859(x)
+ else
+ fun_l27_n524(x)
+ end
+end
+
+def fun_l26_n48(x)
+ if (x < 1)
+ fun_l27_n530(x)
+ else
+ fun_l27_n387(x)
+ end
+end
+
+def fun_l26_n49(x)
+ if (x < 1)
+ fun_l27_n174(x)
+ else
+ fun_l27_n673(x)
+ end
+end
+
+def fun_l26_n50(x)
+ if (x < 1)
+ fun_l27_n457(x)
+ else
+ fun_l27_n996(x)
+ end
+end
+
+def fun_l26_n51(x)
+ if (x < 1)
+ fun_l27_n757(x)
+ else
+ fun_l27_n84(x)
+ end
+end
+
+def fun_l26_n52(x)
+ if (x < 1)
+ fun_l27_n315(x)
+ else
+ fun_l27_n790(x)
+ end
+end
+
+def fun_l26_n53(x)
+ if (x < 1)
+ fun_l27_n452(x)
+ else
+ fun_l27_n201(x)
+ end
+end
+
+def fun_l26_n54(x)
+ if (x < 1)
+ fun_l27_n153(x)
+ else
+ fun_l27_n143(x)
+ end
+end
+
+def fun_l26_n55(x)
+ if (x < 1)
+ fun_l27_n476(x)
+ else
+ fun_l27_n149(x)
+ end
+end
+
+def fun_l26_n56(x)
+ if (x < 1)
+ fun_l27_n737(x)
+ else
+ fun_l27_n628(x)
+ end
+end
+
+def fun_l26_n57(x)
+ if (x < 1)
+ fun_l27_n780(x)
+ else
+ fun_l27_n906(x)
+ end
+end
+
+def fun_l26_n58(x)
+ if (x < 1)
+ fun_l27_n914(x)
+ else
+ fun_l27_n197(x)
+ end
+end
+
+def fun_l26_n59(x)
+ if (x < 1)
+ fun_l27_n816(x)
+ else
+ fun_l27_n16(x)
+ end
+end
+
+def fun_l26_n60(x)
+ if (x < 1)
+ fun_l27_n643(x)
+ else
+ fun_l27_n90(x)
+ end
+end
+
+def fun_l26_n61(x)
+ if (x < 1)
+ fun_l27_n514(x)
+ else
+ fun_l27_n156(x)
+ end
+end
+
+def fun_l26_n62(x)
+ if (x < 1)
+ fun_l27_n261(x)
+ else
+ fun_l27_n410(x)
+ end
+end
+
+def fun_l26_n63(x)
+ if (x < 1)
+ fun_l27_n82(x)
+ else
+ fun_l27_n817(x)
+ end
+end
+
+def fun_l26_n64(x)
+ if (x < 1)
+ fun_l27_n755(x)
+ else
+ fun_l27_n438(x)
+ end
+end
+
+def fun_l26_n65(x)
+ if (x < 1)
+ fun_l27_n960(x)
+ else
+ fun_l27_n600(x)
+ end
+end
+
+def fun_l26_n66(x)
+ if (x < 1)
+ fun_l27_n100(x)
+ else
+ fun_l27_n699(x)
+ end
+end
+
+def fun_l26_n67(x)
+ if (x < 1)
+ fun_l27_n367(x)
+ else
+ fun_l27_n783(x)
+ end
+end
+
+def fun_l26_n68(x)
+ if (x < 1)
+ fun_l27_n691(x)
+ else
+ fun_l27_n996(x)
+ end
+end
+
+def fun_l26_n69(x)
+ if (x < 1)
+ fun_l27_n989(x)
+ else
+ fun_l27_n628(x)
+ end
+end
+
+def fun_l26_n70(x)
+ if (x < 1)
+ fun_l27_n139(x)
+ else
+ fun_l27_n4(x)
+ end
+end
+
+def fun_l26_n71(x)
+ if (x < 1)
+ fun_l27_n890(x)
+ else
+ fun_l27_n88(x)
+ end
+end
+
+def fun_l26_n72(x)
+ if (x < 1)
+ fun_l27_n35(x)
+ else
+ fun_l27_n991(x)
+ end
+end
+
+def fun_l26_n73(x)
+ if (x < 1)
+ fun_l27_n613(x)
+ else
+ fun_l27_n836(x)
+ end
+end
+
+def fun_l26_n74(x)
+ if (x < 1)
+ fun_l27_n739(x)
+ else
+ fun_l27_n455(x)
+ end
+end
+
+def fun_l26_n75(x)
+ if (x < 1)
+ fun_l27_n382(x)
+ else
+ fun_l27_n909(x)
+ end
+end
+
+def fun_l26_n76(x)
+ if (x < 1)
+ fun_l27_n480(x)
+ else
+ fun_l27_n178(x)
+ end
+end
+
+def fun_l26_n77(x)
+ if (x < 1)
+ fun_l27_n180(x)
+ else
+ fun_l27_n577(x)
+ end
+end
+
+def fun_l26_n78(x)
+ if (x < 1)
+ fun_l27_n910(x)
+ else
+ fun_l27_n659(x)
+ end
+end
+
+def fun_l26_n79(x)
+ if (x < 1)
+ fun_l27_n710(x)
+ else
+ fun_l27_n159(x)
+ end
+end
+
+def fun_l26_n80(x)
+ if (x < 1)
+ fun_l27_n153(x)
+ else
+ fun_l27_n367(x)
+ end
+end
+
+def fun_l26_n81(x)
+ if (x < 1)
+ fun_l27_n935(x)
+ else
+ fun_l27_n389(x)
+ end
+end
+
+def fun_l26_n82(x)
+ if (x < 1)
+ fun_l27_n782(x)
+ else
+ fun_l27_n333(x)
+ end
+end
+
+def fun_l26_n83(x)
+ if (x < 1)
+ fun_l27_n85(x)
+ else
+ fun_l27_n122(x)
+ end
+end
+
+def fun_l26_n84(x)
+ if (x < 1)
+ fun_l27_n722(x)
+ else
+ fun_l27_n937(x)
+ end
+end
+
+def fun_l26_n85(x)
+ if (x < 1)
+ fun_l27_n403(x)
+ else
+ fun_l27_n270(x)
+ end
+end
+
+def fun_l26_n86(x)
+ if (x < 1)
+ fun_l27_n987(x)
+ else
+ fun_l27_n622(x)
+ end
+end
+
+def fun_l26_n87(x)
+ if (x < 1)
+ fun_l27_n316(x)
+ else
+ fun_l27_n519(x)
+ end
+end
+
+def fun_l26_n88(x)
+ if (x < 1)
+ fun_l27_n503(x)
+ else
+ fun_l27_n320(x)
+ end
+end
+
+def fun_l26_n89(x)
+ if (x < 1)
+ fun_l27_n936(x)
+ else
+ fun_l27_n77(x)
+ end
+end
+
+def fun_l26_n90(x)
+ if (x < 1)
+ fun_l27_n875(x)
+ else
+ fun_l27_n857(x)
+ end
+end
+
+def fun_l26_n91(x)
+ if (x < 1)
+ fun_l27_n277(x)
+ else
+ fun_l27_n231(x)
+ end
+end
+
+def fun_l26_n92(x)
+ if (x < 1)
+ fun_l27_n743(x)
+ else
+ fun_l27_n468(x)
+ end
+end
+
+def fun_l26_n93(x)
+ if (x < 1)
+ fun_l27_n997(x)
+ else
+ fun_l27_n49(x)
+ end
+end
+
+def fun_l26_n94(x)
+ if (x < 1)
+ fun_l27_n410(x)
+ else
+ fun_l27_n123(x)
+ end
+end
+
+def fun_l26_n95(x)
+ if (x < 1)
+ fun_l27_n696(x)
+ else
+ fun_l27_n799(x)
+ end
+end
+
+def fun_l26_n96(x)
+ if (x < 1)
+ fun_l27_n47(x)
+ else
+ fun_l27_n195(x)
+ end
+end
+
+def fun_l26_n97(x)
+ if (x < 1)
+ fun_l27_n559(x)
+ else
+ fun_l27_n242(x)
+ end
+end
+
+def fun_l26_n98(x)
+ if (x < 1)
+ fun_l27_n407(x)
+ else
+ fun_l27_n797(x)
+ end
+end
+
+def fun_l26_n99(x)
+ if (x < 1)
+ fun_l27_n886(x)
+ else
+ fun_l27_n253(x)
+ end
+end
+
+def fun_l26_n100(x)
+ if (x < 1)
+ fun_l27_n753(x)
+ else
+ fun_l27_n103(x)
+ end
+end
+
+def fun_l26_n101(x)
+ if (x < 1)
+ fun_l27_n717(x)
+ else
+ fun_l27_n596(x)
+ end
+end
+
+def fun_l26_n102(x)
+ if (x < 1)
+ fun_l27_n88(x)
+ else
+ fun_l27_n916(x)
+ end
+end
+
+def fun_l26_n103(x)
+ if (x < 1)
+ fun_l27_n504(x)
+ else
+ fun_l27_n91(x)
+ end
+end
+
+def fun_l26_n104(x)
+ if (x < 1)
+ fun_l27_n418(x)
+ else
+ fun_l27_n810(x)
+ end
+end
+
+def fun_l26_n105(x)
+ if (x < 1)
+ fun_l27_n736(x)
+ else
+ fun_l27_n515(x)
+ end
+end
+
+def fun_l26_n106(x)
+ if (x < 1)
+ fun_l27_n450(x)
+ else
+ fun_l27_n778(x)
+ end
+end
+
+def fun_l26_n107(x)
+ if (x < 1)
+ fun_l27_n670(x)
+ else
+ fun_l27_n483(x)
+ end
+end
+
+def fun_l26_n108(x)
+ if (x < 1)
+ fun_l27_n592(x)
+ else
+ fun_l27_n638(x)
+ end
+end
+
+def fun_l26_n109(x)
+ if (x < 1)
+ fun_l27_n803(x)
+ else
+ fun_l27_n865(x)
+ end
+end
+
+def fun_l26_n110(x)
+ if (x < 1)
+ fun_l27_n555(x)
+ else
+ fun_l27_n123(x)
+ end
+end
+
+def fun_l26_n111(x)
+ if (x < 1)
+ fun_l27_n5(x)
+ else
+ fun_l27_n768(x)
+ end
+end
+
+def fun_l26_n112(x)
+ if (x < 1)
+ fun_l27_n452(x)
+ else
+ fun_l27_n356(x)
+ end
+end
+
+def fun_l26_n113(x)
+ if (x < 1)
+ fun_l27_n353(x)
+ else
+ fun_l27_n513(x)
+ end
+end
+
+def fun_l26_n114(x)
+ if (x < 1)
+ fun_l27_n859(x)
+ else
+ fun_l27_n851(x)
+ end
+end
+
+def fun_l26_n115(x)
+ if (x < 1)
+ fun_l27_n47(x)
+ else
+ fun_l27_n206(x)
+ end
+end
+
+def fun_l26_n116(x)
+ if (x < 1)
+ fun_l27_n260(x)
+ else
+ fun_l27_n746(x)
+ end
+end
+
+def fun_l26_n117(x)
+ if (x < 1)
+ fun_l27_n733(x)
+ else
+ fun_l27_n906(x)
+ end
+end
+
+def fun_l26_n118(x)
+ if (x < 1)
+ fun_l27_n40(x)
+ else
+ fun_l27_n467(x)
+ end
+end
+
+def fun_l26_n119(x)
+ if (x < 1)
+ fun_l27_n764(x)
+ else
+ fun_l27_n69(x)
+ end
+end
+
+def fun_l26_n120(x)
+ if (x < 1)
+ fun_l27_n851(x)
+ else
+ fun_l27_n905(x)
+ end
+end
+
+def fun_l26_n121(x)
+ if (x < 1)
+ fun_l27_n793(x)
+ else
+ fun_l27_n169(x)
+ end
+end
+
+def fun_l26_n122(x)
+ if (x < 1)
+ fun_l27_n126(x)
+ else
+ fun_l27_n440(x)
+ end
+end
+
+def fun_l26_n123(x)
+ if (x < 1)
+ fun_l27_n147(x)
+ else
+ fun_l27_n720(x)
+ end
+end
+
+def fun_l26_n124(x)
+ if (x < 1)
+ fun_l27_n843(x)
+ else
+ fun_l27_n789(x)
+ end
+end
+
+def fun_l26_n125(x)
+ if (x < 1)
+ fun_l27_n927(x)
+ else
+ fun_l27_n364(x)
+ end
+end
+
+def fun_l26_n126(x)
+ if (x < 1)
+ fun_l27_n203(x)
+ else
+ fun_l27_n344(x)
+ end
+end
+
+def fun_l26_n127(x)
+ if (x < 1)
+ fun_l27_n398(x)
+ else
+ fun_l27_n202(x)
+ end
+end
+
+def fun_l26_n128(x)
+ if (x < 1)
+ fun_l27_n216(x)
+ else
+ fun_l27_n344(x)
+ end
+end
+
+def fun_l26_n129(x)
+ if (x < 1)
+ fun_l27_n496(x)
+ else
+ fun_l27_n40(x)
+ end
+end
+
+def fun_l26_n130(x)
+ if (x < 1)
+ fun_l27_n615(x)
+ else
+ fun_l27_n762(x)
+ end
+end
+
+def fun_l26_n131(x)
+ if (x < 1)
+ fun_l27_n642(x)
+ else
+ fun_l27_n329(x)
+ end
+end
+
+def fun_l26_n132(x)
+ if (x < 1)
+ fun_l27_n364(x)
+ else
+ fun_l27_n436(x)
+ end
+end
+
+def fun_l26_n133(x)
+ if (x < 1)
+ fun_l27_n502(x)
+ else
+ fun_l27_n176(x)
+ end
+end
+
+def fun_l26_n134(x)
+ if (x < 1)
+ fun_l27_n591(x)
+ else
+ fun_l27_n119(x)
+ end
+end
+
+def fun_l26_n135(x)
+ if (x < 1)
+ fun_l27_n946(x)
+ else
+ fun_l27_n963(x)
+ end
+end
+
+def fun_l26_n136(x)
+ if (x < 1)
+ fun_l27_n688(x)
+ else
+ fun_l27_n44(x)
+ end
+end
+
+def fun_l26_n137(x)
+ if (x < 1)
+ fun_l27_n786(x)
+ else
+ fun_l27_n965(x)
+ end
+end
+
+def fun_l26_n138(x)
+ if (x < 1)
+ fun_l27_n259(x)
+ else
+ fun_l27_n63(x)
+ end
+end
+
+def fun_l26_n139(x)
+ if (x < 1)
+ fun_l27_n568(x)
+ else
+ fun_l27_n129(x)
+ end
+end
+
+def fun_l26_n140(x)
+ if (x < 1)
+ fun_l27_n255(x)
+ else
+ fun_l27_n873(x)
+ end
+end
+
+def fun_l26_n141(x)
+ if (x < 1)
+ fun_l27_n777(x)
+ else
+ fun_l27_n86(x)
+ end
+end
+
+def fun_l26_n142(x)
+ if (x < 1)
+ fun_l27_n134(x)
+ else
+ fun_l27_n569(x)
+ end
+end
+
+def fun_l26_n143(x)
+ if (x < 1)
+ fun_l27_n147(x)
+ else
+ fun_l27_n388(x)
+ end
+end
+
+def fun_l26_n144(x)
+ if (x < 1)
+ fun_l27_n633(x)
+ else
+ fun_l27_n256(x)
+ end
+end
+
+def fun_l26_n145(x)
+ if (x < 1)
+ fun_l27_n38(x)
+ else
+ fun_l27_n94(x)
+ end
+end
+
+def fun_l26_n146(x)
+ if (x < 1)
+ fun_l27_n710(x)
+ else
+ fun_l27_n489(x)
+ end
+end
+
+def fun_l26_n147(x)
+ if (x < 1)
+ fun_l27_n187(x)
+ else
+ fun_l27_n252(x)
+ end
+end
+
+def fun_l26_n148(x)
+ if (x < 1)
+ fun_l27_n978(x)
+ else
+ fun_l27_n835(x)
+ end
+end
+
+def fun_l26_n149(x)
+ if (x < 1)
+ fun_l27_n759(x)
+ else
+ fun_l27_n742(x)
+ end
+end
+
+def fun_l26_n150(x)
+ if (x < 1)
+ fun_l27_n438(x)
+ else
+ fun_l27_n808(x)
+ end
+end
+
+def fun_l26_n151(x)
+ if (x < 1)
+ fun_l27_n424(x)
+ else
+ fun_l27_n54(x)
+ end
+end
+
+def fun_l26_n152(x)
+ if (x < 1)
+ fun_l27_n455(x)
+ else
+ fun_l27_n953(x)
+ end
+end
+
+def fun_l26_n153(x)
+ if (x < 1)
+ fun_l27_n13(x)
+ else
+ fun_l27_n330(x)
+ end
+end
+
+def fun_l26_n154(x)
+ if (x < 1)
+ fun_l27_n399(x)
+ else
+ fun_l27_n81(x)
+ end
+end
+
+def fun_l26_n155(x)
+ if (x < 1)
+ fun_l27_n356(x)
+ else
+ fun_l27_n237(x)
+ end
+end
+
+def fun_l26_n156(x)
+ if (x < 1)
+ fun_l27_n636(x)
+ else
+ fun_l27_n446(x)
+ end
+end
+
+def fun_l26_n157(x)
+ if (x < 1)
+ fun_l27_n715(x)
+ else
+ fun_l27_n800(x)
+ end
+end
+
+def fun_l26_n158(x)
+ if (x < 1)
+ fun_l27_n284(x)
+ else
+ fun_l27_n280(x)
+ end
+end
+
+def fun_l26_n159(x)
+ if (x < 1)
+ fun_l27_n41(x)
+ else
+ fun_l27_n65(x)
+ end
+end
+
+def fun_l26_n160(x)
+ if (x < 1)
+ fun_l27_n691(x)
+ else
+ fun_l27_n76(x)
+ end
+end
+
+def fun_l26_n161(x)
+ if (x < 1)
+ fun_l27_n863(x)
+ else
+ fun_l27_n878(x)
+ end
+end
+
+def fun_l26_n162(x)
+ if (x < 1)
+ fun_l27_n694(x)
+ else
+ fun_l27_n5(x)
+ end
+end
+
+def fun_l26_n163(x)
+ if (x < 1)
+ fun_l27_n16(x)
+ else
+ fun_l27_n644(x)
+ end
+end
+
+def fun_l26_n164(x)
+ if (x < 1)
+ fun_l27_n760(x)
+ else
+ fun_l27_n167(x)
+ end
+end
+
+def fun_l26_n165(x)
+ if (x < 1)
+ fun_l27_n884(x)
+ else
+ fun_l27_n297(x)
+ end
+end
+
+def fun_l26_n166(x)
+ if (x < 1)
+ fun_l27_n707(x)
+ else
+ fun_l27_n456(x)
+ end
+end
+
+def fun_l26_n167(x)
+ if (x < 1)
+ fun_l27_n140(x)
+ else
+ fun_l27_n143(x)
+ end
+end
+
+def fun_l26_n168(x)
+ if (x < 1)
+ fun_l27_n581(x)
+ else
+ fun_l27_n369(x)
+ end
+end
+
+def fun_l26_n169(x)
+ if (x < 1)
+ fun_l27_n538(x)
+ else
+ fun_l27_n276(x)
+ end
+end
+
+def fun_l26_n170(x)
+ if (x < 1)
+ fun_l27_n984(x)
+ else
+ fun_l27_n729(x)
+ end
+end
+
+def fun_l26_n171(x)
+ if (x < 1)
+ fun_l27_n274(x)
+ else
+ fun_l27_n519(x)
+ end
+end
+
+def fun_l26_n172(x)
+ if (x < 1)
+ fun_l27_n597(x)
+ else
+ fun_l27_n632(x)
+ end
+end
+
+def fun_l26_n173(x)
+ if (x < 1)
+ fun_l27_n485(x)
+ else
+ fun_l27_n130(x)
+ end
+end
+
+def fun_l26_n174(x)
+ if (x < 1)
+ fun_l27_n460(x)
+ else
+ fun_l27_n133(x)
+ end
+end
+
+def fun_l26_n175(x)
+ if (x < 1)
+ fun_l27_n512(x)
+ else
+ fun_l27_n252(x)
+ end
+end
+
+def fun_l26_n176(x)
+ if (x < 1)
+ fun_l27_n429(x)
+ else
+ fun_l27_n297(x)
+ end
+end
+
+def fun_l26_n177(x)
+ if (x < 1)
+ fun_l27_n497(x)
+ else
+ fun_l27_n845(x)
+ end
+end
+
+def fun_l26_n178(x)
+ if (x < 1)
+ fun_l27_n930(x)
+ else
+ fun_l27_n923(x)
+ end
+end
+
+def fun_l26_n179(x)
+ if (x < 1)
+ fun_l27_n218(x)
+ else
+ fun_l27_n921(x)
+ end
+end
+
+def fun_l26_n180(x)
+ if (x < 1)
+ fun_l27_n793(x)
+ else
+ fun_l27_n278(x)
+ end
+end
+
+def fun_l26_n181(x)
+ if (x < 1)
+ fun_l27_n606(x)
+ else
+ fun_l27_n9(x)
+ end
+end
+
+def fun_l26_n182(x)
+ if (x < 1)
+ fun_l27_n297(x)
+ else
+ fun_l27_n62(x)
+ end
+end
+
+def fun_l26_n183(x)
+ if (x < 1)
+ fun_l27_n174(x)
+ else
+ fun_l27_n698(x)
+ end
+end
+
+def fun_l26_n184(x)
+ if (x < 1)
+ fun_l27_n773(x)
+ else
+ fun_l27_n312(x)
+ end
+end
+
+def fun_l26_n185(x)
+ if (x < 1)
+ fun_l27_n75(x)
+ else
+ fun_l27_n65(x)
+ end
+end
+
+def fun_l26_n186(x)
+ if (x < 1)
+ fun_l27_n389(x)
+ else
+ fun_l27_n27(x)
+ end
+end
+
+def fun_l26_n187(x)
+ if (x < 1)
+ fun_l27_n674(x)
+ else
+ fun_l27_n70(x)
+ end
+end
+
+def fun_l26_n188(x)
+ if (x < 1)
+ fun_l27_n157(x)
+ else
+ fun_l27_n160(x)
+ end
+end
+
+def fun_l26_n189(x)
+ if (x < 1)
+ fun_l27_n401(x)
+ else
+ fun_l27_n340(x)
+ end
+end
+
+def fun_l26_n190(x)
+ if (x < 1)
+ fun_l27_n550(x)
+ else
+ fun_l27_n551(x)
+ end
+end
+
+def fun_l26_n191(x)
+ if (x < 1)
+ fun_l27_n971(x)
+ else
+ fun_l27_n925(x)
+ end
+end
+
+def fun_l26_n192(x)
+ if (x < 1)
+ fun_l27_n370(x)
+ else
+ fun_l27_n697(x)
+ end
+end
+
+def fun_l26_n193(x)
+ if (x < 1)
+ fun_l27_n188(x)
+ else
+ fun_l27_n989(x)
+ end
+end
+
+def fun_l26_n194(x)
+ if (x < 1)
+ fun_l27_n848(x)
+ else
+ fun_l27_n288(x)
+ end
+end
+
+def fun_l26_n195(x)
+ if (x < 1)
+ fun_l27_n886(x)
+ else
+ fun_l27_n554(x)
+ end
+end
+
+def fun_l26_n196(x)
+ if (x < 1)
+ fun_l27_n989(x)
+ else
+ fun_l27_n577(x)
+ end
+end
+
+def fun_l26_n197(x)
+ if (x < 1)
+ fun_l27_n55(x)
+ else
+ fun_l27_n951(x)
+ end
+end
+
+def fun_l26_n198(x)
+ if (x < 1)
+ fun_l27_n750(x)
+ else
+ fun_l27_n941(x)
+ end
+end
+
+def fun_l26_n199(x)
+ if (x < 1)
+ fun_l27_n468(x)
+ else
+ fun_l27_n64(x)
+ end
+end
+
+def fun_l26_n200(x)
+ if (x < 1)
+ fun_l27_n617(x)
+ else
+ fun_l27_n156(x)
+ end
+end
+
+def fun_l26_n201(x)
+ if (x < 1)
+ fun_l27_n119(x)
+ else
+ fun_l27_n63(x)
+ end
+end
+
+def fun_l26_n202(x)
+ if (x < 1)
+ fun_l27_n524(x)
+ else
+ fun_l27_n455(x)
+ end
+end
+
+def fun_l26_n203(x)
+ if (x < 1)
+ fun_l27_n489(x)
+ else
+ fun_l27_n328(x)
+ end
+end
+
+def fun_l26_n204(x)
+ if (x < 1)
+ fun_l27_n854(x)
+ else
+ fun_l27_n605(x)
+ end
+end
+
+def fun_l26_n205(x)
+ if (x < 1)
+ fun_l27_n591(x)
+ else
+ fun_l27_n787(x)
+ end
+end
+
+def fun_l26_n206(x)
+ if (x < 1)
+ fun_l27_n122(x)
+ else
+ fun_l27_n977(x)
+ end
+end
+
+def fun_l26_n207(x)
+ if (x < 1)
+ fun_l27_n204(x)
+ else
+ fun_l27_n652(x)
+ end
+end
+
+def fun_l26_n208(x)
+ if (x < 1)
+ fun_l27_n213(x)
+ else
+ fun_l27_n699(x)
+ end
+end
+
+def fun_l26_n209(x)
+ if (x < 1)
+ fun_l27_n731(x)
+ else
+ fun_l27_n910(x)
+ end
+end
+
+def fun_l26_n210(x)
+ if (x < 1)
+ fun_l27_n398(x)
+ else
+ fun_l27_n2(x)
+ end
+end
+
+def fun_l26_n211(x)
+ if (x < 1)
+ fun_l27_n132(x)
+ else
+ fun_l27_n574(x)
+ end
+end
+
+def fun_l26_n212(x)
+ if (x < 1)
+ fun_l27_n701(x)
+ else
+ fun_l27_n617(x)
+ end
+end
+
+def fun_l26_n213(x)
+ if (x < 1)
+ fun_l27_n486(x)
+ else
+ fun_l27_n861(x)
+ end
+end
+
+def fun_l26_n214(x)
+ if (x < 1)
+ fun_l27_n305(x)
+ else
+ fun_l27_n20(x)
+ end
+end
+
+def fun_l26_n215(x)
+ if (x < 1)
+ fun_l27_n598(x)
+ else
+ fun_l27_n842(x)
+ end
+end
+
+def fun_l26_n216(x)
+ if (x < 1)
+ fun_l27_n948(x)
+ else
+ fun_l27_n669(x)
+ end
+end
+
+def fun_l26_n217(x)
+ if (x < 1)
+ fun_l27_n344(x)
+ else
+ fun_l27_n101(x)
+ end
+end
+
+def fun_l26_n218(x)
+ if (x < 1)
+ fun_l27_n527(x)
+ else
+ fun_l27_n930(x)
+ end
+end
+
+def fun_l26_n219(x)
+ if (x < 1)
+ fun_l27_n889(x)
+ else
+ fun_l27_n380(x)
+ end
+end
+
+def fun_l26_n220(x)
+ if (x < 1)
+ fun_l27_n873(x)
+ else
+ fun_l27_n925(x)
+ end
+end
+
+def fun_l26_n221(x)
+ if (x < 1)
+ fun_l27_n403(x)
+ else
+ fun_l27_n280(x)
+ end
+end
+
+def fun_l26_n222(x)
+ if (x < 1)
+ fun_l27_n614(x)
+ else
+ fun_l27_n370(x)
+ end
+end
+
+def fun_l26_n223(x)
+ if (x < 1)
+ fun_l27_n543(x)
+ else
+ fun_l27_n543(x)
+ end
+end
+
+def fun_l26_n224(x)
+ if (x < 1)
+ fun_l27_n873(x)
+ else
+ fun_l27_n895(x)
+ end
+end
+
+def fun_l26_n225(x)
+ if (x < 1)
+ fun_l27_n665(x)
+ else
+ fun_l27_n259(x)
+ end
+end
+
+def fun_l26_n226(x)
+ if (x < 1)
+ fun_l27_n663(x)
+ else
+ fun_l27_n271(x)
+ end
+end
+
+def fun_l26_n227(x)
+ if (x < 1)
+ fun_l27_n816(x)
+ else
+ fun_l27_n353(x)
+ end
+end
+
+def fun_l26_n228(x)
+ if (x < 1)
+ fun_l27_n941(x)
+ else
+ fun_l27_n484(x)
+ end
+end
+
+def fun_l26_n229(x)
+ if (x < 1)
+ fun_l27_n455(x)
+ else
+ fun_l27_n385(x)
+ end
+end
+
+def fun_l26_n230(x)
+ if (x < 1)
+ fun_l27_n398(x)
+ else
+ fun_l27_n888(x)
+ end
+end
+
+def fun_l26_n231(x)
+ if (x < 1)
+ fun_l27_n93(x)
+ else
+ fun_l27_n297(x)
+ end
+end
+
+def fun_l26_n232(x)
+ if (x < 1)
+ fun_l27_n197(x)
+ else
+ fun_l27_n779(x)
+ end
+end
+
+def fun_l26_n233(x)
+ if (x < 1)
+ fun_l27_n826(x)
+ else
+ fun_l27_n835(x)
+ end
+end
+
+def fun_l26_n234(x)
+ if (x < 1)
+ fun_l27_n32(x)
+ else
+ fun_l27_n430(x)
+ end
+end
+
+def fun_l26_n235(x)
+ if (x < 1)
+ fun_l27_n133(x)
+ else
+ fun_l27_n743(x)
+ end
+end
+
+def fun_l26_n236(x)
+ if (x < 1)
+ fun_l27_n763(x)
+ else
+ fun_l27_n683(x)
+ end
+end
+
+def fun_l26_n237(x)
+ if (x < 1)
+ fun_l27_n211(x)
+ else
+ fun_l27_n726(x)
+ end
+end
+
+def fun_l26_n238(x)
+ if (x < 1)
+ fun_l27_n19(x)
+ else
+ fun_l27_n404(x)
+ end
+end
+
+def fun_l26_n239(x)
+ if (x < 1)
+ fun_l27_n635(x)
+ else
+ fun_l27_n427(x)
+ end
+end
+
+def fun_l26_n240(x)
+ if (x < 1)
+ fun_l27_n102(x)
+ else
+ fun_l27_n875(x)
+ end
+end
+
+def fun_l26_n241(x)
+ if (x < 1)
+ fun_l27_n930(x)
+ else
+ fun_l27_n189(x)
+ end
+end
+
+def fun_l26_n242(x)
+ if (x < 1)
+ fun_l27_n860(x)
+ else
+ fun_l27_n347(x)
+ end
+end
+
+def fun_l26_n243(x)
+ if (x < 1)
+ fun_l27_n826(x)
+ else
+ fun_l27_n848(x)
+ end
+end
+
+def fun_l26_n244(x)
+ if (x < 1)
+ fun_l27_n491(x)
+ else
+ fun_l27_n797(x)
+ end
+end
+
+def fun_l26_n245(x)
+ if (x < 1)
+ fun_l27_n361(x)
+ else
+ fun_l27_n382(x)
+ end
+end
+
+def fun_l26_n246(x)
+ if (x < 1)
+ fun_l27_n391(x)
+ else
+ fun_l27_n907(x)
+ end
+end
+
+def fun_l26_n247(x)
+ if (x < 1)
+ fun_l27_n352(x)
+ else
+ fun_l27_n501(x)
+ end
+end
+
+def fun_l26_n248(x)
+ if (x < 1)
+ fun_l27_n235(x)
+ else
+ fun_l27_n610(x)
+ end
+end
+
+def fun_l26_n249(x)
+ if (x < 1)
+ fun_l27_n970(x)
+ else
+ fun_l27_n561(x)
+ end
+end
+
+def fun_l26_n250(x)
+ if (x < 1)
+ fun_l27_n625(x)
+ else
+ fun_l27_n526(x)
+ end
+end
+
+def fun_l26_n251(x)
+ if (x < 1)
+ fun_l27_n185(x)
+ else
+ fun_l27_n911(x)
+ end
+end
+
+def fun_l26_n252(x)
+ if (x < 1)
+ fun_l27_n426(x)
+ else
+ fun_l27_n247(x)
+ end
+end
+
+def fun_l26_n253(x)
+ if (x < 1)
+ fun_l27_n874(x)
+ else
+ fun_l27_n28(x)
+ end
+end
+
+def fun_l26_n254(x)
+ if (x < 1)
+ fun_l27_n178(x)
+ else
+ fun_l27_n290(x)
+ end
+end
+
+def fun_l26_n255(x)
+ if (x < 1)
+ fun_l27_n218(x)
+ else
+ fun_l27_n816(x)
+ end
+end
+
+def fun_l26_n256(x)
+ if (x < 1)
+ fun_l27_n27(x)
+ else
+ fun_l27_n896(x)
+ end
+end
+
+def fun_l26_n257(x)
+ if (x < 1)
+ fun_l27_n690(x)
+ else
+ fun_l27_n27(x)
+ end
+end
+
+def fun_l26_n258(x)
+ if (x < 1)
+ fun_l27_n549(x)
+ else
+ fun_l27_n481(x)
+ end
+end
+
+def fun_l26_n259(x)
+ if (x < 1)
+ fun_l27_n357(x)
+ else
+ fun_l27_n604(x)
+ end
+end
+
+def fun_l26_n260(x)
+ if (x < 1)
+ fun_l27_n731(x)
+ else
+ fun_l27_n111(x)
+ end
+end
+
+def fun_l26_n261(x)
+ if (x < 1)
+ fun_l27_n849(x)
+ else
+ fun_l27_n91(x)
+ end
+end
+
+def fun_l26_n262(x)
+ if (x < 1)
+ fun_l27_n686(x)
+ else
+ fun_l27_n969(x)
+ end
+end
+
+def fun_l26_n263(x)
+ if (x < 1)
+ fun_l27_n17(x)
+ else
+ fun_l27_n424(x)
+ end
+end
+
+def fun_l26_n264(x)
+ if (x < 1)
+ fun_l27_n25(x)
+ else
+ fun_l27_n487(x)
+ end
+end
+
+def fun_l26_n265(x)
+ if (x < 1)
+ fun_l27_n715(x)
+ else
+ fun_l27_n210(x)
+ end
+end
+
+def fun_l26_n266(x)
+ if (x < 1)
+ fun_l27_n997(x)
+ else
+ fun_l27_n563(x)
+ end
+end
+
+def fun_l26_n267(x)
+ if (x < 1)
+ fun_l27_n489(x)
+ else
+ fun_l27_n666(x)
+ end
+end
+
+def fun_l26_n268(x)
+ if (x < 1)
+ fun_l27_n85(x)
+ else
+ fun_l27_n780(x)
+ end
+end
+
+def fun_l26_n269(x)
+ if (x < 1)
+ fun_l27_n420(x)
+ else
+ fun_l27_n897(x)
+ end
+end
+
+def fun_l26_n270(x)
+ if (x < 1)
+ fun_l27_n152(x)
+ else
+ fun_l27_n841(x)
+ end
+end
+
+def fun_l26_n271(x)
+ if (x < 1)
+ fun_l27_n60(x)
+ else
+ fun_l27_n808(x)
+ end
+end
+
+def fun_l26_n272(x)
+ if (x < 1)
+ fun_l27_n27(x)
+ else
+ fun_l27_n69(x)
+ end
+end
+
+def fun_l26_n273(x)
+ if (x < 1)
+ fun_l27_n992(x)
+ else
+ fun_l27_n306(x)
+ end
+end
+
+def fun_l26_n274(x)
+ if (x < 1)
+ fun_l27_n893(x)
+ else
+ fun_l27_n837(x)
+ end
+end
+
+def fun_l26_n275(x)
+ if (x < 1)
+ fun_l27_n617(x)
+ else
+ fun_l27_n628(x)
+ end
+end
+
+def fun_l26_n276(x)
+ if (x < 1)
+ fun_l27_n402(x)
+ else
+ fun_l27_n766(x)
+ end
+end
+
+def fun_l26_n277(x)
+ if (x < 1)
+ fun_l27_n692(x)
+ else
+ fun_l27_n999(x)
+ end
+end
+
+def fun_l26_n278(x)
+ if (x < 1)
+ fun_l27_n896(x)
+ else
+ fun_l27_n941(x)
+ end
+end
+
+def fun_l26_n279(x)
+ if (x < 1)
+ fun_l27_n440(x)
+ else
+ fun_l27_n888(x)
+ end
+end
+
+def fun_l26_n280(x)
+ if (x < 1)
+ fun_l27_n350(x)
+ else
+ fun_l27_n19(x)
+ end
+end
+
+def fun_l26_n281(x)
+ if (x < 1)
+ fun_l27_n324(x)
+ else
+ fun_l27_n63(x)
+ end
+end
+
+def fun_l26_n282(x)
+ if (x < 1)
+ fun_l27_n422(x)
+ else
+ fun_l27_n369(x)
+ end
+end
+
+def fun_l26_n283(x)
+ if (x < 1)
+ fun_l27_n629(x)
+ else
+ fun_l27_n200(x)
+ end
+end
+
+def fun_l26_n284(x)
+ if (x < 1)
+ fun_l27_n466(x)
+ else
+ fun_l27_n392(x)
+ end
+end
+
+def fun_l26_n285(x)
+ if (x < 1)
+ fun_l27_n995(x)
+ else
+ fun_l27_n374(x)
+ end
+end
+
+def fun_l26_n286(x)
+ if (x < 1)
+ fun_l27_n808(x)
+ else
+ fun_l27_n529(x)
+ end
+end
+
+def fun_l26_n287(x)
+ if (x < 1)
+ fun_l27_n764(x)
+ else
+ fun_l27_n155(x)
+ end
+end
+
+def fun_l26_n288(x)
+ if (x < 1)
+ fun_l27_n282(x)
+ else
+ fun_l27_n676(x)
+ end
+end
+
+def fun_l26_n289(x)
+ if (x < 1)
+ fun_l27_n797(x)
+ else
+ fun_l27_n462(x)
+ end
+end
+
+def fun_l26_n290(x)
+ if (x < 1)
+ fun_l27_n572(x)
+ else
+ fun_l27_n909(x)
+ end
+end
+
+def fun_l26_n291(x)
+ if (x < 1)
+ fun_l27_n401(x)
+ else
+ fun_l27_n906(x)
+ end
+end
+
+def fun_l26_n292(x)
+ if (x < 1)
+ fun_l27_n680(x)
+ else
+ fun_l27_n922(x)
+ end
+end
+
+def fun_l26_n293(x)
+ if (x < 1)
+ fun_l27_n876(x)
+ else
+ fun_l27_n882(x)
+ end
+end
+
+def fun_l26_n294(x)
+ if (x < 1)
+ fun_l27_n40(x)
+ else
+ fun_l27_n752(x)
+ end
+end
+
+def fun_l26_n295(x)
+ if (x < 1)
+ fun_l27_n164(x)
+ else
+ fun_l27_n479(x)
+ end
+end
+
+def fun_l26_n296(x)
+ if (x < 1)
+ fun_l27_n836(x)
+ else
+ fun_l27_n956(x)
+ end
+end
+
+def fun_l26_n297(x)
+ if (x < 1)
+ fun_l27_n197(x)
+ else
+ fun_l27_n135(x)
+ end
+end
+
+def fun_l26_n298(x)
+ if (x < 1)
+ fun_l27_n289(x)
+ else
+ fun_l27_n314(x)
+ end
+end
+
+def fun_l26_n299(x)
+ if (x < 1)
+ fun_l27_n942(x)
+ else
+ fun_l27_n747(x)
+ end
+end
+
+def fun_l26_n300(x)
+ if (x < 1)
+ fun_l27_n4(x)
+ else
+ fun_l27_n355(x)
+ end
+end
+
+def fun_l26_n301(x)
+ if (x < 1)
+ fun_l27_n616(x)
+ else
+ fun_l27_n681(x)
+ end
+end
+
+def fun_l26_n302(x)
+ if (x < 1)
+ fun_l27_n175(x)
+ else
+ fun_l27_n859(x)
+ end
+end
+
+def fun_l26_n303(x)
+ if (x < 1)
+ fun_l27_n323(x)
+ else
+ fun_l27_n491(x)
+ end
+end
+
+def fun_l26_n304(x)
+ if (x < 1)
+ fun_l27_n630(x)
+ else
+ fun_l27_n821(x)
+ end
+end
+
+def fun_l26_n305(x)
+ if (x < 1)
+ fun_l27_n416(x)
+ else
+ fun_l27_n927(x)
+ end
+end
+
+def fun_l26_n306(x)
+ if (x < 1)
+ fun_l27_n80(x)
+ else
+ fun_l27_n69(x)
+ end
+end
+
+def fun_l26_n307(x)
+ if (x < 1)
+ fun_l27_n209(x)
+ else
+ fun_l27_n476(x)
+ end
+end
+
+def fun_l26_n308(x)
+ if (x < 1)
+ fun_l27_n201(x)
+ else
+ fun_l27_n18(x)
+ end
+end
+
+def fun_l26_n309(x)
+ if (x < 1)
+ fun_l27_n712(x)
+ else
+ fun_l27_n697(x)
+ end
+end
+
+def fun_l26_n310(x)
+ if (x < 1)
+ fun_l27_n815(x)
+ else
+ fun_l27_n626(x)
+ end
+end
+
+def fun_l26_n311(x)
+ if (x < 1)
+ fun_l27_n159(x)
+ else
+ fun_l27_n483(x)
+ end
+end
+
+def fun_l26_n312(x)
+ if (x < 1)
+ fun_l27_n304(x)
+ else
+ fun_l27_n260(x)
+ end
+end
+
+def fun_l26_n313(x)
+ if (x < 1)
+ fun_l27_n15(x)
+ else
+ fun_l27_n50(x)
+ end
+end
+
+def fun_l26_n314(x)
+ if (x < 1)
+ fun_l27_n748(x)
+ else
+ fun_l27_n71(x)
+ end
+end
+
+def fun_l26_n315(x)
+ if (x < 1)
+ fun_l27_n957(x)
+ else
+ fun_l27_n90(x)
+ end
+end
+
+def fun_l26_n316(x)
+ if (x < 1)
+ fun_l27_n189(x)
+ else
+ fun_l27_n276(x)
+ end
+end
+
+def fun_l26_n317(x)
+ if (x < 1)
+ fun_l27_n926(x)
+ else
+ fun_l27_n916(x)
+ end
+end
+
+def fun_l26_n318(x)
+ if (x < 1)
+ fun_l27_n74(x)
+ else
+ fun_l27_n395(x)
+ end
+end
+
+def fun_l26_n319(x)
+ if (x < 1)
+ fun_l27_n424(x)
+ else
+ fun_l27_n826(x)
+ end
+end
+
+def fun_l26_n320(x)
+ if (x < 1)
+ fun_l27_n321(x)
+ else
+ fun_l27_n553(x)
+ end
+end
+
+def fun_l26_n321(x)
+ if (x < 1)
+ fun_l27_n906(x)
+ else
+ fun_l27_n344(x)
+ end
+end
+
+def fun_l26_n322(x)
+ if (x < 1)
+ fun_l27_n706(x)
+ else
+ fun_l27_n189(x)
+ end
+end
+
+def fun_l26_n323(x)
+ if (x < 1)
+ fun_l27_n303(x)
+ else
+ fun_l27_n135(x)
+ end
+end
+
+def fun_l26_n324(x)
+ if (x < 1)
+ fun_l27_n103(x)
+ else
+ fun_l27_n579(x)
+ end
+end
+
+def fun_l26_n325(x)
+ if (x < 1)
+ fun_l27_n655(x)
+ else
+ fun_l27_n619(x)
+ end
+end
+
+def fun_l26_n326(x)
+ if (x < 1)
+ fun_l27_n119(x)
+ else
+ fun_l27_n950(x)
+ end
+end
+
+def fun_l26_n327(x)
+ if (x < 1)
+ fun_l27_n402(x)
+ else
+ fun_l27_n490(x)
+ end
+end
+
+def fun_l26_n328(x)
+ if (x < 1)
+ fun_l27_n6(x)
+ else
+ fun_l27_n844(x)
+ end
+end
+
+def fun_l26_n329(x)
+ if (x < 1)
+ fun_l27_n297(x)
+ else
+ fun_l27_n879(x)
+ end
+end
+
+def fun_l26_n330(x)
+ if (x < 1)
+ fun_l27_n747(x)
+ else
+ fun_l27_n701(x)
+ end
+end
+
+def fun_l26_n331(x)
+ if (x < 1)
+ fun_l27_n714(x)
+ else
+ fun_l27_n770(x)
+ end
+end
+
+def fun_l26_n332(x)
+ if (x < 1)
+ fun_l27_n377(x)
+ else
+ fun_l27_n434(x)
+ end
+end
+
+def fun_l26_n333(x)
+ if (x < 1)
+ fun_l27_n530(x)
+ else
+ fun_l27_n678(x)
+ end
+end
+
+def fun_l26_n334(x)
+ if (x < 1)
+ fun_l27_n28(x)
+ else
+ fun_l27_n154(x)
+ end
+end
+
+def fun_l26_n335(x)
+ if (x < 1)
+ fun_l27_n905(x)
+ else
+ fun_l27_n207(x)
+ end
+end
+
+def fun_l26_n336(x)
+ if (x < 1)
+ fun_l27_n537(x)
+ else
+ fun_l27_n426(x)
+ end
+end
+
+def fun_l26_n337(x)
+ if (x < 1)
+ fun_l27_n284(x)
+ else
+ fun_l27_n118(x)
+ end
+end
+
+def fun_l26_n338(x)
+ if (x < 1)
+ fun_l27_n40(x)
+ else
+ fun_l27_n123(x)
+ end
+end
+
+def fun_l26_n339(x)
+ if (x < 1)
+ fun_l27_n620(x)
+ else
+ fun_l27_n370(x)
+ end
+end
+
+def fun_l26_n340(x)
+ if (x < 1)
+ fun_l27_n946(x)
+ else
+ fun_l27_n994(x)
+ end
+end
+
+def fun_l26_n341(x)
+ if (x < 1)
+ fun_l27_n685(x)
+ else
+ fun_l27_n911(x)
+ end
+end
+
+def fun_l26_n342(x)
+ if (x < 1)
+ fun_l27_n641(x)
+ else
+ fun_l27_n339(x)
+ end
+end
+
+def fun_l26_n343(x)
+ if (x < 1)
+ fun_l27_n936(x)
+ else
+ fun_l27_n344(x)
+ end
+end
+
+def fun_l26_n344(x)
+ if (x < 1)
+ fun_l27_n822(x)
+ else
+ fun_l27_n939(x)
+ end
+end
+
+def fun_l26_n345(x)
+ if (x < 1)
+ fun_l27_n608(x)
+ else
+ fun_l27_n870(x)
+ end
+end
+
+def fun_l26_n346(x)
+ if (x < 1)
+ fun_l27_n211(x)
+ else
+ fun_l27_n124(x)
+ end
+end
+
+def fun_l26_n347(x)
+ if (x < 1)
+ fun_l27_n71(x)
+ else
+ fun_l27_n9(x)
+ end
+end
+
+def fun_l26_n348(x)
+ if (x < 1)
+ fun_l27_n68(x)
+ else
+ fun_l27_n51(x)
+ end
+end
+
+def fun_l26_n349(x)
+ if (x < 1)
+ fun_l27_n641(x)
+ else
+ fun_l27_n665(x)
+ end
+end
+
+def fun_l26_n350(x)
+ if (x < 1)
+ fun_l27_n516(x)
+ else
+ fun_l27_n364(x)
+ end
+end
+
+def fun_l26_n351(x)
+ if (x < 1)
+ fun_l27_n104(x)
+ else
+ fun_l27_n569(x)
+ end
+end
+
+def fun_l26_n352(x)
+ if (x < 1)
+ fun_l27_n90(x)
+ else
+ fun_l27_n565(x)
+ end
+end
+
+def fun_l26_n353(x)
+ if (x < 1)
+ fun_l27_n647(x)
+ else
+ fun_l27_n124(x)
+ end
+end
+
+def fun_l26_n354(x)
+ if (x < 1)
+ fun_l27_n332(x)
+ else
+ fun_l27_n368(x)
+ end
+end
+
+def fun_l26_n355(x)
+ if (x < 1)
+ fun_l27_n547(x)
+ else
+ fun_l27_n797(x)
+ end
+end
+
+def fun_l26_n356(x)
+ if (x < 1)
+ fun_l27_n462(x)
+ else
+ fun_l27_n503(x)
+ end
+end
+
+def fun_l26_n357(x)
+ if (x < 1)
+ fun_l27_n25(x)
+ else
+ fun_l27_n920(x)
+ end
+end
+
+def fun_l26_n358(x)
+ if (x < 1)
+ fun_l27_n891(x)
+ else
+ fun_l27_n136(x)
+ end
+end
+
+def fun_l26_n359(x)
+ if (x < 1)
+ fun_l27_n785(x)
+ else
+ fun_l27_n600(x)
+ end
+end
+
+def fun_l26_n360(x)
+ if (x < 1)
+ fun_l27_n945(x)
+ else
+ fun_l27_n617(x)
+ end
+end
+
+def fun_l26_n361(x)
+ if (x < 1)
+ fun_l27_n995(x)
+ else
+ fun_l27_n781(x)
+ end
+end
+
+def fun_l26_n362(x)
+ if (x < 1)
+ fun_l27_n553(x)
+ else
+ fun_l27_n650(x)
+ end
+end
+
+def fun_l26_n363(x)
+ if (x < 1)
+ fun_l27_n937(x)
+ else
+ fun_l27_n382(x)
+ end
+end
+
+def fun_l26_n364(x)
+ if (x < 1)
+ fun_l27_n946(x)
+ else
+ fun_l27_n980(x)
+ end
+end
+
+def fun_l26_n365(x)
+ if (x < 1)
+ fun_l27_n293(x)
+ else
+ fun_l27_n225(x)
+ end
+end
+
+def fun_l26_n366(x)
+ if (x < 1)
+ fun_l27_n872(x)
+ else
+ fun_l27_n535(x)
+ end
+end
+
+def fun_l26_n367(x)
+ if (x < 1)
+ fun_l27_n427(x)
+ else
+ fun_l27_n175(x)
+ end
+end
+
+def fun_l26_n368(x)
+ if (x < 1)
+ fun_l27_n111(x)
+ else
+ fun_l27_n379(x)
+ end
+end
+
+def fun_l26_n369(x)
+ if (x < 1)
+ fun_l27_n735(x)
+ else
+ fun_l27_n921(x)
+ end
+end
+
+def fun_l26_n370(x)
+ if (x < 1)
+ fun_l27_n818(x)
+ else
+ fun_l27_n189(x)
+ end
+end
+
+def fun_l26_n371(x)
+ if (x < 1)
+ fun_l27_n932(x)
+ else
+ fun_l27_n884(x)
+ end
+end
+
+def fun_l26_n372(x)
+ if (x < 1)
+ fun_l27_n40(x)
+ else
+ fun_l27_n732(x)
+ end
+end
+
+def fun_l26_n373(x)
+ if (x < 1)
+ fun_l27_n54(x)
+ else
+ fun_l27_n365(x)
+ end
+end
+
+def fun_l26_n374(x)
+ if (x < 1)
+ fun_l27_n742(x)
+ else
+ fun_l27_n319(x)
+ end
+end
+
+def fun_l26_n375(x)
+ if (x < 1)
+ fun_l27_n149(x)
+ else
+ fun_l27_n504(x)
+ end
+end
+
+def fun_l26_n376(x)
+ if (x < 1)
+ fun_l27_n185(x)
+ else
+ fun_l27_n458(x)
+ end
+end
+
+def fun_l26_n377(x)
+ if (x < 1)
+ fun_l27_n107(x)
+ else
+ fun_l27_n201(x)
+ end
+end
+
+def fun_l26_n378(x)
+ if (x < 1)
+ fun_l27_n94(x)
+ else
+ fun_l27_n173(x)
+ end
+end
+
+def fun_l26_n379(x)
+ if (x < 1)
+ fun_l27_n198(x)
+ else
+ fun_l27_n885(x)
+ end
+end
+
+def fun_l26_n380(x)
+ if (x < 1)
+ fun_l27_n164(x)
+ else
+ fun_l27_n23(x)
+ end
+end
+
+def fun_l26_n381(x)
+ if (x < 1)
+ fun_l27_n170(x)
+ else
+ fun_l27_n431(x)
+ end
+end
+
+def fun_l26_n382(x)
+ if (x < 1)
+ fun_l27_n679(x)
+ else
+ fun_l27_n613(x)
+ end
+end
+
+def fun_l26_n383(x)
+ if (x < 1)
+ fun_l27_n981(x)
+ else
+ fun_l27_n69(x)
+ end
+end
+
+def fun_l26_n384(x)
+ if (x < 1)
+ fun_l27_n600(x)
+ else
+ fun_l27_n544(x)
+ end
+end
+
+def fun_l26_n385(x)
+ if (x < 1)
+ fun_l27_n153(x)
+ else
+ fun_l27_n332(x)
+ end
+end
+
+def fun_l26_n386(x)
+ if (x < 1)
+ fun_l27_n63(x)
+ else
+ fun_l27_n597(x)
+ end
+end
+
+def fun_l26_n387(x)
+ if (x < 1)
+ fun_l27_n259(x)
+ else
+ fun_l27_n33(x)
+ end
+end
+
+def fun_l26_n388(x)
+ if (x < 1)
+ fun_l27_n363(x)
+ else
+ fun_l27_n765(x)
+ end
+end
+
+def fun_l26_n389(x)
+ if (x < 1)
+ fun_l27_n495(x)
+ else
+ fun_l27_n133(x)
+ end
+end
+
+def fun_l26_n390(x)
+ if (x < 1)
+ fun_l27_n62(x)
+ else
+ fun_l27_n462(x)
+ end
+end
+
+def fun_l26_n391(x)
+ if (x < 1)
+ fun_l27_n811(x)
+ else
+ fun_l27_n30(x)
+ end
+end
+
+def fun_l26_n392(x)
+ if (x < 1)
+ fun_l27_n222(x)
+ else
+ fun_l27_n451(x)
+ end
+end
+
+def fun_l26_n393(x)
+ if (x < 1)
+ fun_l27_n286(x)
+ else
+ fun_l27_n664(x)
+ end
+end
+
+def fun_l26_n394(x)
+ if (x < 1)
+ fun_l27_n935(x)
+ else
+ fun_l27_n392(x)
+ end
+end
+
+def fun_l26_n395(x)
+ if (x < 1)
+ fun_l27_n621(x)
+ else
+ fun_l27_n434(x)
+ end
+end
+
+def fun_l26_n396(x)
+ if (x < 1)
+ fun_l27_n318(x)
+ else
+ fun_l27_n410(x)
+ end
+end
+
+def fun_l26_n397(x)
+ if (x < 1)
+ fun_l27_n847(x)
+ else
+ fun_l27_n727(x)
+ end
+end
+
+def fun_l26_n398(x)
+ if (x < 1)
+ fun_l27_n705(x)
+ else
+ fun_l27_n453(x)
+ end
+end
+
+def fun_l26_n399(x)
+ if (x < 1)
+ fun_l27_n787(x)
+ else
+ fun_l27_n442(x)
+ end
+end
+
+def fun_l26_n400(x)
+ if (x < 1)
+ fun_l27_n854(x)
+ else
+ fun_l27_n885(x)
+ end
+end
+
+def fun_l26_n401(x)
+ if (x < 1)
+ fun_l27_n825(x)
+ else
+ fun_l27_n399(x)
+ end
+end
+
+def fun_l26_n402(x)
+ if (x < 1)
+ fun_l27_n420(x)
+ else
+ fun_l27_n747(x)
+ end
+end
+
+def fun_l26_n403(x)
+ if (x < 1)
+ fun_l27_n985(x)
+ else
+ fun_l27_n875(x)
+ end
+end
+
+def fun_l26_n404(x)
+ if (x < 1)
+ fun_l27_n193(x)
+ else
+ fun_l27_n448(x)
+ end
+end
+
+def fun_l26_n405(x)
+ if (x < 1)
+ fun_l27_n594(x)
+ else
+ fun_l27_n769(x)
+ end
+end
+
+def fun_l26_n406(x)
+ if (x < 1)
+ fun_l27_n774(x)
+ else
+ fun_l27_n44(x)
+ end
+end
+
+def fun_l26_n407(x)
+ if (x < 1)
+ fun_l27_n563(x)
+ else
+ fun_l27_n979(x)
+ end
+end
+
+def fun_l26_n408(x)
+ if (x < 1)
+ fun_l27_n369(x)
+ else
+ fun_l27_n825(x)
+ end
+end
+
+def fun_l26_n409(x)
+ if (x < 1)
+ fun_l27_n70(x)
+ else
+ fun_l27_n894(x)
+ end
+end
+
+def fun_l26_n410(x)
+ if (x < 1)
+ fun_l27_n651(x)
+ else
+ fun_l27_n224(x)
+ end
+end
+
+def fun_l26_n411(x)
+ if (x < 1)
+ fun_l27_n219(x)
+ else
+ fun_l27_n193(x)
+ end
+end
+
+def fun_l26_n412(x)
+ if (x < 1)
+ fun_l27_n16(x)
+ else
+ fun_l27_n113(x)
+ end
+end
+
+def fun_l26_n413(x)
+ if (x < 1)
+ fun_l27_n653(x)
+ else
+ fun_l27_n754(x)
+ end
+end
+
+def fun_l26_n414(x)
+ if (x < 1)
+ fun_l27_n682(x)
+ else
+ fun_l27_n378(x)
+ end
+end
+
+def fun_l26_n415(x)
+ if (x < 1)
+ fun_l27_n326(x)
+ else
+ fun_l27_n534(x)
+ end
+end
+
+def fun_l26_n416(x)
+ if (x < 1)
+ fun_l27_n552(x)
+ else
+ fun_l27_n627(x)
+ end
+end
+
+def fun_l26_n417(x)
+ if (x < 1)
+ fun_l27_n486(x)
+ else
+ fun_l27_n729(x)
+ end
+end
+
+def fun_l26_n418(x)
+ if (x < 1)
+ fun_l27_n153(x)
+ else
+ fun_l27_n220(x)
+ end
+end
+
+def fun_l26_n419(x)
+ if (x < 1)
+ fun_l27_n636(x)
+ else
+ fun_l27_n492(x)
+ end
+end
+
+def fun_l26_n420(x)
+ if (x < 1)
+ fun_l27_n692(x)
+ else
+ fun_l27_n7(x)
+ end
+end
+
+def fun_l26_n421(x)
+ if (x < 1)
+ fun_l27_n303(x)
+ else
+ fun_l27_n396(x)
+ end
+end
+
+def fun_l26_n422(x)
+ if (x < 1)
+ fun_l27_n937(x)
+ else
+ fun_l27_n940(x)
+ end
+end
+
+def fun_l26_n423(x)
+ if (x < 1)
+ fun_l27_n581(x)
+ else
+ fun_l27_n355(x)
+ end
+end
+
+def fun_l26_n424(x)
+ if (x < 1)
+ fun_l27_n743(x)
+ else
+ fun_l27_n636(x)
+ end
+end
+
+def fun_l26_n425(x)
+ if (x < 1)
+ fun_l27_n385(x)
+ else
+ fun_l27_n573(x)
+ end
+end
+
+def fun_l26_n426(x)
+ if (x < 1)
+ fun_l27_n595(x)
+ else
+ fun_l27_n873(x)
+ end
+end
+
+def fun_l26_n427(x)
+ if (x < 1)
+ fun_l27_n700(x)
+ else
+ fun_l27_n541(x)
+ end
+end
+
+def fun_l26_n428(x)
+ if (x < 1)
+ fun_l27_n445(x)
+ else
+ fun_l27_n239(x)
+ end
+end
+
+def fun_l26_n429(x)
+ if (x < 1)
+ fun_l27_n500(x)
+ else
+ fun_l27_n7(x)
+ end
+end
+
+def fun_l26_n430(x)
+ if (x < 1)
+ fun_l27_n615(x)
+ else
+ fun_l27_n383(x)
+ end
+end
+
+def fun_l26_n431(x)
+ if (x < 1)
+ fun_l27_n962(x)
+ else
+ fun_l27_n424(x)
+ end
+end
+
+def fun_l26_n432(x)
+ if (x < 1)
+ fun_l27_n289(x)
+ else
+ fun_l27_n142(x)
+ end
+end
+
+def fun_l26_n433(x)
+ if (x < 1)
+ fun_l27_n527(x)
+ else
+ fun_l27_n112(x)
+ end
+end
+
+def fun_l26_n434(x)
+ if (x < 1)
+ fun_l27_n884(x)
+ else
+ fun_l27_n509(x)
+ end
+end
+
+def fun_l26_n435(x)
+ if (x < 1)
+ fun_l27_n65(x)
+ else
+ fun_l27_n431(x)
+ end
+end
+
+def fun_l26_n436(x)
+ if (x < 1)
+ fun_l27_n324(x)
+ else
+ fun_l27_n885(x)
+ end
+end
+
+def fun_l26_n437(x)
+ if (x < 1)
+ fun_l27_n826(x)
+ else
+ fun_l27_n372(x)
+ end
+end
+
+def fun_l26_n438(x)
+ if (x < 1)
+ fun_l27_n291(x)
+ else
+ fun_l27_n793(x)
+ end
+end
+
+def fun_l26_n439(x)
+ if (x < 1)
+ fun_l27_n677(x)
+ else
+ fun_l27_n31(x)
+ end
+end
+
+def fun_l26_n440(x)
+ if (x < 1)
+ fun_l27_n948(x)
+ else
+ fun_l27_n320(x)
+ end
+end
+
+def fun_l26_n441(x)
+ if (x < 1)
+ fun_l27_n951(x)
+ else
+ fun_l27_n504(x)
+ end
+end
+
+def fun_l26_n442(x)
+ if (x < 1)
+ fun_l27_n388(x)
+ else
+ fun_l27_n1(x)
+ end
+end
+
+def fun_l26_n443(x)
+ if (x < 1)
+ fun_l27_n92(x)
+ else
+ fun_l27_n570(x)
+ end
+end
+
+def fun_l26_n444(x)
+ if (x < 1)
+ fun_l27_n956(x)
+ else
+ fun_l27_n120(x)
+ end
+end
+
+def fun_l26_n445(x)
+ if (x < 1)
+ fun_l27_n985(x)
+ else
+ fun_l27_n233(x)
+ end
+end
+
+def fun_l26_n446(x)
+ if (x < 1)
+ fun_l27_n153(x)
+ else
+ fun_l27_n590(x)
+ end
+end
+
+def fun_l26_n447(x)
+ if (x < 1)
+ fun_l27_n793(x)
+ else
+ fun_l27_n675(x)
+ end
+end
+
+def fun_l26_n448(x)
+ if (x < 1)
+ fun_l27_n351(x)
+ else
+ fun_l27_n781(x)
+ end
+end
+
+def fun_l26_n449(x)
+ if (x < 1)
+ fun_l27_n137(x)
+ else
+ fun_l27_n147(x)
+ end
+end
+
+def fun_l26_n450(x)
+ if (x < 1)
+ fun_l27_n138(x)
+ else
+ fun_l27_n636(x)
+ end
+end
+
+def fun_l26_n451(x)
+ if (x < 1)
+ fun_l27_n154(x)
+ else
+ fun_l27_n755(x)
+ end
+end
+
+def fun_l26_n452(x)
+ if (x < 1)
+ fun_l27_n665(x)
+ else
+ fun_l27_n65(x)
+ end
+end
+
+def fun_l26_n453(x)
+ if (x < 1)
+ fun_l27_n769(x)
+ else
+ fun_l27_n847(x)
+ end
+end
+
+def fun_l26_n454(x)
+ if (x < 1)
+ fun_l27_n959(x)
+ else
+ fun_l27_n731(x)
+ end
+end
+
+def fun_l26_n455(x)
+ if (x < 1)
+ fun_l27_n565(x)
+ else
+ fun_l27_n916(x)
+ end
+end
+
+def fun_l26_n456(x)
+ if (x < 1)
+ fun_l27_n421(x)
+ else
+ fun_l27_n57(x)
+ end
+end
+
+def fun_l26_n457(x)
+ if (x < 1)
+ fun_l27_n595(x)
+ else
+ fun_l27_n920(x)
+ end
+end
+
+def fun_l26_n458(x)
+ if (x < 1)
+ fun_l27_n660(x)
+ else
+ fun_l27_n835(x)
+ end
+end
+
+def fun_l26_n459(x)
+ if (x < 1)
+ fun_l27_n114(x)
+ else
+ fun_l27_n418(x)
+ end
+end
+
+def fun_l26_n460(x)
+ if (x < 1)
+ fun_l27_n744(x)
+ else
+ fun_l27_n674(x)
+ end
+end
+
+def fun_l26_n461(x)
+ if (x < 1)
+ fun_l27_n436(x)
+ else
+ fun_l27_n448(x)
+ end
+end
+
+def fun_l26_n462(x)
+ if (x < 1)
+ fun_l27_n796(x)
+ else
+ fun_l27_n960(x)
+ end
+end
+
+def fun_l26_n463(x)
+ if (x < 1)
+ fun_l27_n871(x)
+ else
+ fun_l27_n300(x)
+ end
+end
+
+def fun_l26_n464(x)
+ if (x < 1)
+ fun_l27_n942(x)
+ else
+ fun_l27_n625(x)
+ end
+end
+
+def fun_l26_n465(x)
+ if (x < 1)
+ fun_l27_n219(x)
+ else
+ fun_l27_n383(x)
+ end
+end
+
+def fun_l26_n466(x)
+ if (x < 1)
+ fun_l27_n440(x)
+ else
+ fun_l27_n177(x)
+ end
+end
+
+def fun_l26_n467(x)
+ if (x < 1)
+ fun_l27_n958(x)
+ else
+ fun_l27_n441(x)
+ end
+end
+
+def fun_l26_n468(x)
+ if (x < 1)
+ fun_l27_n899(x)
+ else
+ fun_l27_n613(x)
+ end
+end
+
+def fun_l26_n469(x)
+ if (x < 1)
+ fun_l27_n535(x)
+ else
+ fun_l27_n439(x)
+ end
+end
+
+def fun_l26_n470(x)
+ if (x < 1)
+ fun_l27_n18(x)
+ else
+ fun_l27_n716(x)
+ end
+end
+
+def fun_l26_n471(x)
+ if (x < 1)
+ fun_l27_n768(x)
+ else
+ fun_l27_n374(x)
+ end
+end
+
+def fun_l26_n472(x)
+ if (x < 1)
+ fun_l27_n537(x)
+ else
+ fun_l27_n434(x)
+ end
+end
+
+def fun_l26_n473(x)
+ if (x < 1)
+ fun_l27_n632(x)
+ else
+ fun_l27_n733(x)
+ end
+end
+
+def fun_l26_n474(x)
+ if (x < 1)
+ fun_l27_n347(x)
+ else
+ fun_l27_n562(x)
+ end
+end
+
+def fun_l26_n475(x)
+ if (x < 1)
+ fun_l27_n741(x)
+ else
+ fun_l27_n684(x)
+ end
+end
+
+def fun_l26_n476(x)
+ if (x < 1)
+ fun_l27_n222(x)
+ else
+ fun_l27_n41(x)
+ end
+end
+
+def fun_l26_n477(x)
+ if (x < 1)
+ fun_l27_n23(x)
+ else
+ fun_l27_n541(x)
+ end
+end
+
+def fun_l26_n478(x)
+ if (x < 1)
+ fun_l27_n588(x)
+ else
+ fun_l27_n394(x)
+ end
+end
+
+def fun_l26_n479(x)
+ if (x < 1)
+ fun_l27_n526(x)
+ else
+ fun_l27_n974(x)
+ end
+end
+
+def fun_l26_n480(x)
+ if (x < 1)
+ fun_l27_n845(x)
+ else
+ fun_l27_n528(x)
+ end
+end
+
+def fun_l26_n481(x)
+ if (x < 1)
+ fun_l27_n505(x)
+ else
+ fun_l27_n913(x)
+ end
+end
+
+def fun_l26_n482(x)
+ if (x < 1)
+ fun_l27_n100(x)
+ else
+ fun_l27_n233(x)
+ end
+end
+
+def fun_l26_n483(x)
+ if (x < 1)
+ fun_l27_n87(x)
+ else
+ fun_l27_n339(x)
+ end
+end
+
+def fun_l26_n484(x)
+ if (x < 1)
+ fun_l27_n744(x)
+ else
+ fun_l27_n404(x)
+ end
+end
+
+def fun_l26_n485(x)
+ if (x < 1)
+ fun_l27_n965(x)
+ else
+ fun_l27_n86(x)
+ end
+end
+
+def fun_l26_n486(x)
+ if (x < 1)
+ fun_l27_n826(x)
+ else
+ fun_l27_n25(x)
+ end
+end
+
+def fun_l26_n487(x)
+ if (x < 1)
+ fun_l27_n950(x)
+ else
+ fun_l27_n876(x)
+ end
+end
+
+def fun_l26_n488(x)
+ if (x < 1)
+ fun_l27_n964(x)
+ else
+ fun_l27_n60(x)
+ end
+end
+
+def fun_l26_n489(x)
+ if (x < 1)
+ fun_l27_n171(x)
+ else
+ fun_l27_n768(x)
+ end
+end
+
+def fun_l26_n490(x)
+ if (x < 1)
+ fun_l27_n391(x)
+ else
+ fun_l27_n308(x)
+ end
+end
+
+def fun_l26_n491(x)
+ if (x < 1)
+ fun_l27_n440(x)
+ else
+ fun_l27_n51(x)
+ end
+end
+
+def fun_l26_n492(x)
+ if (x < 1)
+ fun_l27_n403(x)
+ else
+ fun_l27_n956(x)
+ end
+end
+
+def fun_l26_n493(x)
+ if (x < 1)
+ fun_l27_n802(x)
+ else
+ fun_l27_n931(x)
+ end
+end
+
+def fun_l26_n494(x)
+ if (x < 1)
+ fun_l27_n7(x)
+ else
+ fun_l27_n291(x)
+ end
+end
+
+def fun_l26_n495(x)
+ if (x < 1)
+ fun_l27_n149(x)
+ else
+ fun_l27_n173(x)
+ end
+end
+
+def fun_l26_n496(x)
+ if (x < 1)
+ fun_l27_n864(x)
+ else
+ fun_l27_n488(x)
+ end
+end
+
+def fun_l26_n497(x)
+ if (x < 1)
+ fun_l27_n290(x)
+ else
+ fun_l27_n431(x)
+ end
+end
+
+def fun_l26_n498(x)
+ if (x < 1)
+ fun_l27_n269(x)
+ else
+ fun_l27_n622(x)
+ end
+end
+
+def fun_l26_n499(x)
+ if (x < 1)
+ fun_l27_n168(x)
+ else
+ fun_l27_n225(x)
+ end
+end
+
+def fun_l26_n500(x)
+ if (x < 1)
+ fun_l27_n512(x)
+ else
+ fun_l27_n363(x)
+ end
+end
+
+def fun_l26_n501(x)
+ if (x < 1)
+ fun_l27_n844(x)
+ else
+ fun_l27_n15(x)
+ end
+end
+
+def fun_l26_n502(x)
+ if (x < 1)
+ fun_l27_n242(x)
+ else
+ fun_l27_n479(x)
+ end
+end
+
+def fun_l26_n503(x)
+ if (x < 1)
+ fun_l27_n285(x)
+ else
+ fun_l27_n202(x)
+ end
+end
+
+def fun_l26_n504(x)
+ if (x < 1)
+ fun_l27_n64(x)
+ else
+ fun_l27_n223(x)
+ end
+end
+
+def fun_l26_n505(x)
+ if (x < 1)
+ fun_l27_n85(x)
+ else
+ fun_l27_n477(x)
+ end
+end
+
+def fun_l26_n506(x)
+ if (x < 1)
+ fun_l27_n360(x)
+ else
+ fun_l27_n406(x)
+ end
+end
+
+def fun_l26_n507(x)
+ if (x < 1)
+ fun_l27_n515(x)
+ else
+ fun_l27_n599(x)
+ end
+end
+
+def fun_l26_n508(x)
+ if (x < 1)
+ fun_l27_n848(x)
+ else
+ fun_l27_n832(x)
+ end
+end
+
+def fun_l26_n509(x)
+ if (x < 1)
+ fun_l27_n831(x)
+ else
+ fun_l27_n334(x)
+ end
+end
+
+def fun_l26_n510(x)
+ if (x < 1)
+ fun_l27_n53(x)
+ else
+ fun_l27_n937(x)
+ end
+end
+
+def fun_l26_n511(x)
+ if (x < 1)
+ fun_l27_n583(x)
+ else
+ fun_l27_n901(x)
+ end
+end
+
+def fun_l26_n512(x)
+ if (x < 1)
+ fun_l27_n394(x)
+ else
+ fun_l27_n135(x)
+ end
+end
+
+def fun_l26_n513(x)
+ if (x < 1)
+ fun_l27_n175(x)
+ else
+ fun_l27_n339(x)
+ end
+end
+
+def fun_l26_n514(x)
+ if (x < 1)
+ fun_l27_n200(x)
+ else
+ fun_l27_n124(x)
+ end
+end
+
+def fun_l26_n515(x)
+ if (x < 1)
+ fun_l27_n145(x)
+ else
+ fun_l27_n426(x)
+ end
+end
+
+def fun_l26_n516(x)
+ if (x < 1)
+ fun_l27_n803(x)
+ else
+ fun_l27_n466(x)
+ end
+end
+
+def fun_l26_n517(x)
+ if (x < 1)
+ fun_l27_n773(x)
+ else
+ fun_l27_n296(x)
+ end
+end
+
+def fun_l26_n518(x)
+ if (x < 1)
+ fun_l27_n957(x)
+ else
+ fun_l27_n373(x)
+ end
+end
+
+def fun_l26_n519(x)
+ if (x < 1)
+ fun_l27_n887(x)
+ else
+ fun_l27_n498(x)
+ end
+end
+
+def fun_l26_n520(x)
+ if (x < 1)
+ fun_l27_n629(x)
+ else
+ fun_l27_n477(x)
+ end
+end
+
+def fun_l26_n521(x)
+ if (x < 1)
+ fun_l27_n634(x)
+ else
+ fun_l27_n138(x)
+ end
+end
+
+def fun_l26_n522(x)
+ if (x < 1)
+ fun_l27_n942(x)
+ else
+ fun_l27_n853(x)
+ end
+end
+
+def fun_l26_n523(x)
+ if (x < 1)
+ fun_l27_n453(x)
+ else
+ fun_l27_n520(x)
+ end
+end
+
+def fun_l26_n524(x)
+ if (x < 1)
+ fun_l27_n125(x)
+ else
+ fun_l27_n922(x)
+ end
+end
+
+def fun_l26_n525(x)
+ if (x < 1)
+ fun_l27_n629(x)
+ else
+ fun_l27_n711(x)
+ end
+end
+
+def fun_l26_n526(x)
+ if (x < 1)
+ fun_l27_n243(x)
+ else
+ fun_l27_n374(x)
+ end
+end
+
+def fun_l26_n527(x)
+ if (x < 1)
+ fun_l27_n476(x)
+ else
+ fun_l27_n348(x)
+ end
+end
+
+def fun_l26_n528(x)
+ if (x < 1)
+ fun_l27_n532(x)
+ else
+ fun_l27_n156(x)
+ end
+end
+
+def fun_l26_n529(x)
+ if (x < 1)
+ fun_l27_n139(x)
+ else
+ fun_l27_n976(x)
+ end
+end
+
+def fun_l26_n530(x)
+ if (x < 1)
+ fun_l27_n323(x)
+ else
+ fun_l27_n48(x)
+ end
+end
+
+def fun_l26_n531(x)
+ if (x < 1)
+ fun_l27_n626(x)
+ else
+ fun_l27_n913(x)
+ end
+end
+
+def fun_l26_n532(x)
+ if (x < 1)
+ fun_l27_n98(x)
+ else
+ fun_l27_n369(x)
+ end
+end
+
+def fun_l26_n533(x)
+ if (x < 1)
+ fun_l27_n50(x)
+ else
+ fun_l27_n41(x)
+ end
+end
+
+def fun_l26_n534(x)
+ if (x < 1)
+ fun_l27_n163(x)
+ else
+ fun_l27_n722(x)
+ end
+end
+
+def fun_l26_n535(x)
+ if (x < 1)
+ fun_l27_n640(x)
+ else
+ fun_l27_n622(x)
+ end
+end
+
+def fun_l26_n536(x)
+ if (x < 1)
+ fun_l27_n98(x)
+ else
+ fun_l27_n970(x)
+ end
+end
+
+def fun_l26_n537(x)
+ if (x < 1)
+ fun_l27_n828(x)
+ else
+ fun_l27_n240(x)
+ end
+end
+
+def fun_l26_n538(x)
+ if (x < 1)
+ fun_l27_n303(x)
+ else
+ fun_l27_n116(x)
+ end
+end
+
+def fun_l26_n539(x)
+ if (x < 1)
+ fun_l27_n341(x)
+ else
+ fun_l27_n545(x)
+ end
+end
+
+def fun_l26_n540(x)
+ if (x < 1)
+ fun_l27_n476(x)
+ else
+ fun_l27_n943(x)
+ end
+end
+
+def fun_l26_n541(x)
+ if (x < 1)
+ fun_l27_n380(x)
+ else
+ fun_l27_n894(x)
+ end
+end
+
+def fun_l26_n542(x)
+ if (x < 1)
+ fun_l27_n330(x)
+ else
+ fun_l27_n96(x)
+ end
+end
+
+def fun_l26_n543(x)
+ if (x < 1)
+ fun_l27_n676(x)
+ else
+ fun_l27_n876(x)
+ end
+end
+
+def fun_l26_n544(x)
+ if (x < 1)
+ fun_l27_n396(x)
+ else
+ fun_l27_n116(x)
+ end
+end
+
+def fun_l26_n545(x)
+ if (x < 1)
+ fun_l27_n691(x)
+ else
+ fun_l27_n178(x)
+ end
+end
+
+def fun_l26_n546(x)
+ if (x < 1)
+ fun_l27_n118(x)
+ else
+ fun_l27_n956(x)
+ end
+end
+
+def fun_l26_n547(x)
+ if (x < 1)
+ fun_l27_n20(x)
+ else
+ fun_l27_n777(x)
+ end
+end
+
+def fun_l26_n548(x)
+ if (x < 1)
+ fun_l27_n522(x)
+ else
+ fun_l27_n808(x)
+ end
+end
+
+def fun_l26_n549(x)
+ if (x < 1)
+ fun_l27_n624(x)
+ else
+ fun_l27_n54(x)
+ end
+end
+
+def fun_l26_n550(x)
+ if (x < 1)
+ fun_l27_n364(x)
+ else
+ fun_l27_n243(x)
+ end
+end
+
+def fun_l26_n551(x)
+ if (x < 1)
+ fun_l27_n283(x)
+ else
+ fun_l27_n913(x)
+ end
+end
+
+def fun_l26_n552(x)
+ if (x < 1)
+ fun_l27_n101(x)
+ else
+ fun_l27_n136(x)
+ end
+end
+
+def fun_l26_n553(x)
+ if (x < 1)
+ fun_l27_n965(x)
+ else
+ fun_l27_n453(x)
+ end
+end
+
+def fun_l26_n554(x)
+ if (x < 1)
+ fun_l27_n807(x)
+ else
+ fun_l27_n442(x)
+ end
+end
+
+def fun_l26_n555(x)
+ if (x < 1)
+ fun_l27_n987(x)
+ else
+ fun_l27_n883(x)
+ end
+end
+
+def fun_l26_n556(x)
+ if (x < 1)
+ fun_l27_n475(x)
+ else
+ fun_l27_n439(x)
+ end
+end
+
+def fun_l26_n557(x)
+ if (x < 1)
+ fun_l27_n580(x)
+ else
+ fun_l27_n301(x)
+ end
+end
+
+def fun_l26_n558(x)
+ if (x < 1)
+ fun_l27_n91(x)
+ else
+ fun_l27_n514(x)
+ end
+end
+
+def fun_l26_n559(x)
+ if (x < 1)
+ fun_l27_n395(x)
+ else
+ fun_l27_n583(x)
+ end
+end
+
+def fun_l26_n560(x)
+ if (x < 1)
+ fun_l27_n81(x)
+ else
+ fun_l27_n817(x)
+ end
+end
+
+def fun_l26_n561(x)
+ if (x < 1)
+ fun_l27_n816(x)
+ else
+ fun_l27_n423(x)
+ end
+end
+
+def fun_l26_n562(x)
+ if (x < 1)
+ fun_l27_n513(x)
+ else
+ fun_l27_n577(x)
+ end
+end
+
+def fun_l26_n563(x)
+ if (x < 1)
+ fun_l27_n864(x)
+ else
+ fun_l27_n249(x)
+ end
+end
+
+def fun_l26_n564(x)
+ if (x < 1)
+ fun_l27_n408(x)
+ else
+ fun_l27_n281(x)
+ end
+end
+
+def fun_l26_n565(x)
+ if (x < 1)
+ fun_l27_n963(x)
+ else
+ fun_l27_n736(x)
+ end
+end
+
+def fun_l26_n566(x)
+ if (x < 1)
+ fun_l27_n366(x)
+ else
+ fun_l27_n774(x)
+ end
+end
+
+def fun_l26_n567(x)
+ if (x < 1)
+ fun_l27_n239(x)
+ else
+ fun_l27_n473(x)
+ end
+end
+
+def fun_l26_n568(x)
+ if (x < 1)
+ fun_l27_n272(x)
+ else
+ fun_l27_n790(x)
+ end
+end
+
+def fun_l26_n569(x)
+ if (x < 1)
+ fun_l27_n225(x)
+ else
+ fun_l27_n970(x)
+ end
+end
+
+def fun_l26_n570(x)
+ if (x < 1)
+ fun_l27_n631(x)
+ else
+ fun_l27_n988(x)
+ end
+end
+
+def fun_l26_n571(x)
+ if (x < 1)
+ fun_l27_n224(x)
+ else
+ fun_l27_n286(x)
+ end
+end
+
+def fun_l26_n572(x)
+ if (x < 1)
+ fun_l27_n141(x)
+ else
+ fun_l27_n573(x)
+ end
+end
+
+def fun_l26_n573(x)
+ if (x < 1)
+ fun_l27_n493(x)
+ else
+ fun_l27_n288(x)
+ end
+end
+
+def fun_l26_n574(x)
+ if (x < 1)
+ fun_l27_n573(x)
+ else
+ fun_l27_n88(x)
+ end
+end
+
+def fun_l26_n575(x)
+ if (x < 1)
+ fun_l27_n174(x)
+ else
+ fun_l27_n635(x)
+ end
+end
+
+def fun_l26_n576(x)
+ if (x < 1)
+ fun_l27_n146(x)
+ else
+ fun_l27_n48(x)
+ end
+end
+
+def fun_l26_n577(x)
+ if (x < 1)
+ fun_l27_n344(x)
+ else
+ fun_l27_n668(x)
+ end
+end
+
+def fun_l26_n578(x)
+ if (x < 1)
+ fun_l27_n624(x)
+ else
+ fun_l27_n516(x)
+ end
+end
+
+def fun_l26_n579(x)
+ if (x < 1)
+ fun_l27_n349(x)
+ else
+ fun_l27_n510(x)
+ end
+end
+
+def fun_l26_n580(x)
+ if (x < 1)
+ fun_l27_n625(x)
+ else
+ fun_l27_n474(x)
+ end
+end
+
+def fun_l26_n581(x)
+ if (x < 1)
+ fun_l27_n473(x)
+ else
+ fun_l27_n785(x)
+ end
+end
+
+def fun_l26_n582(x)
+ if (x < 1)
+ fun_l27_n246(x)
+ else
+ fun_l27_n803(x)
+ end
+end
+
+def fun_l26_n583(x)
+ if (x < 1)
+ fun_l27_n232(x)
+ else
+ fun_l27_n981(x)
+ end
+end
+
+def fun_l26_n584(x)
+ if (x < 1)
+ fun_l27_n825(x)
+ else
+ fun_l27_n65(x)
+ end
+end
+
+def fun_l26_n585(x)
+ if (x < 1)
+ fun_l27_n258(x)
+ else
+ fun_l27_n700(x)
+ end
+end
+
+def fun_l26_n586(x)
+ if (x < 1)
+ fun_l27_n404(x)
+ else
+ fun_l27_n124(x)
+ end
+end
+
+def fun_l26_n587(x)
+ if (x < 1)
+ fun_l27_n390(x)
+ else
+ fun_l27_n812(x)
+ end
+end
+
+def fun_l26_n588(x)
+ if (x < 1)
+ fun_l27_n874(x)
+ else
+ fun_l27_n249(x)
+ end
+end
+
+def fun_l26_n589(x)
+ if (x < 1)
+ fun_l27_n837(x)
+ else
+ fun_l27_n480(x)
+ end
+end
+
+def fun_l26_n590(x)
+ if (x < 1)
+ fun_l27_n126(x)
+ else
+ fun_l27_n446(x)
+ end
+end
+
+def fun_l26_n591(x)
+ if (x < 1)
+ fun_l27_n838(x)
+ else
+ fun_l27_n285(x)
+ end
+end
+
+def fun_l26_n592(x)
+ if (x < 1)
+ fun_l27_n364(x)
+ else
+ fun_l27_n821(x)
+ end
+end
+
+def fun_l26_n593(x)
+ if (x < 1)
+ fun_l27_n781(x)
+ else
+ fun_l27_n310(x)
+ end
+end
+
+def fun_l26_n594(x)
+ if (x < 1)
+ fun_l27_n343(x)
+ else
+ fun_l27_n853(x)
+ end
+end
+
+def fun_l26_n595(x)
+ if (x < 1)
+ fun_l27_n216(x)
+ else
+ fun_l27_n334(x)
+ end
+end
+
+def fun_l26_n596(x)
+ if (x < 1)
+ fun_l27_n866(x)
+ else
+ fun_l27_n981(x)
+ end
+end
+
+def fun_l26_n597(x)
+ if (x < 1)
+ fun_l27_n551(x)
+ else
+ fun_l27_n184(x)
+ end
+end
+
+def fun_l26_n598(x)
+ if (x < 1)
+ fun_l27_n538(x)
+ else
+ fun_l27_n878(x)
+ end
+end
+
+def fun_l26_n599(x)
+ if (x < 1)
+ fun_l27_n909(x)
+ else
+ fun_l27_n435(x)
+ end
+end
+
+def fun_l26_n600(x)
+ if (x < 1)
+ fun_l27_n695(x)
+ else
+ fun_l27_n886(x)
+ end
+end
+
+def fun_l26_n601(x)
+ if (x < 1)
+ fun_l27_n927(x)
+ else
+ fun_l27_n303(x)
+ end
+end
+
+def fun_l26_n602(x)
+ if (x < 1)
+ fun_l27_n323(x)
+ else
+ fun_l27_n534(x)
+ end
+end
+
+def fun_l26_n603(x)
+ if (x < 1)
+ fun_l27_n803(x)
+ else
+ fun_l27_n34(x)
+ end
+end
+
+def fun_l26_n604(x)
+ if (x < 1)
+ fun_l27_n266(x)
+ else
+ fun_l27_n800(x)
+ end
+end
+
+def fun_l26_n605(x)
+ if (x < 1)
+ fun_l27_n831(x)
+ else
+ fun_l27_n338(x)
+ end
+end
+
+def fun_l26_n606(x)
+ if (x < 1)
+ fun_l27_n97(x)
+ else
+ fun_l27_n772(x)
+ end
+end
+
+def fun_l26_n607(x)
+ if (x < 1)
+ fun_l27_n291(x)
+ else
+ fun_l27_n756(x)
+ end
+end
+
+def fun_l26_n608(x)
+ if (x < 1)
+ fun_l27_n906(x)
+ else
+ fun_l27_n861(x)
+ end
+end
+
+def fun_l26_n609(x)
+ if (x < 1)
+ fun_l27_n793(x)
+ else
+ fun_l27_n845(x)
+ end
+end
+
+def fun_l26_n610(x)
+ if (x < 1)
+ fun_l27_n83(x)
+ else
+ fun_l27_n359(x)
+ end
+end
+
+def fun_l26_n611(x)
+ if (x < 1)
+ fun_l27_n911(x)
+ else
+ fun_l27_n526(x)
+ end
+end
+
+def fun_l26_n612(x)
+ if (x < 1)
+ fun_l27_n377(x)
+ else
+ fun_l27_n387(x)
+ end
+end
+
+def fun_l26_n613(x)
+ if (x < 1)
+ fun_l27_n809(x)
+ else
+ fun_l27_n802(x)
+ end
+end
+
+def fun_l26_n614(x)
+ if (x < 1)
+ fun_l27_n984(x)
+ else
+ fun_l27_n683(x)
+ end
+end
+
+def fun_l26_n615(x)
+ if (x < 1)
+ fun_l27_n330(x)
+ else
+ fun_l27_n439(x)
+ end
+end
+
+def fun_l26_n616(x)
+ if (x < 1)
+ fun_l27_n16(x)
+ else
+ fun_l27_n831(x)
+ end
+end
+
+def fun_l26_n617(x)
+ if (x < 1)
+ fun_l27_n149(x)
+ else
+ fun_l27_n934(x)
+ end
+end
+
+def fun_l26_n618(x)
+ if (x < 1)
+ fun_l27_n383(x)
+ else
+ fun_l27_n439(x)
+ end
+end
+
+def fun_l26_n619(x)
+ if (x < 1)
+ fun_l27_n599(x)
+ else
+ fun_l27_n855(x)
+ end
+end
+
+def fun_l26_n620(x)
+ if (x < 1)
+ fun_l27_n202(x)
+ else
+ fun_l27_n902(x)
+ end
+end
+
+def fun_l26_n621(x)
+ if (x < 1)
+ fun_l27_n219(x)
+ else
+ fun_l27_n13(x)
+ end
+end
+
+def fun_l26_n622(x)
+ if (x < 1)
+ fun_l27_n473(x)
+ else
+ fun_l27_n12(x)
+ end
+end
+
+def fun_l26_n623(x)
+ if (x < 1)
+ fun_l27_n918(x)
+ else
+ fun_l27_n50(x)
+ end
+end
+
+def fun_l26_n624(x)
+ if (x < 1)
+ fun_l27_n585(x)
+ else
+ fun_l27_n902(x)
+ end
+end
+
+def fun_l26_n625(x)
+ if (x < 1)
+ fun_l27_n676(x)
+ else
+ fun_l27_n533(x)
+ end
+end
+
+def fun_l26_n626(x)
+ if (x < 1)
+ fun_l27_n122(x)
+ else
+ fun_l27_n823(x)
+ end
+end
+
+def fun_l26_n627(x)
+ if (x < 1)
+ fun_l27_n214(x)
+ else
+ fun_l27_n485(x)
+ end
+end
+
+def fun_l26_n628(x)
+ if (x < 1)
+ fun_l27_n453(x)
+ else
+ fun_l27_n312(x)
+ end
+end
+
+def fun_l26_n629(x)
+ if (x < 1)
+ fun_l27_n929(x)
+ else
+ fun_l27_n272(x)
+ end
+end
+
+def fun_l26_n630(x)
+ if (x < 1)
+ fun_l27_n546(x)
+ else
+ fun_l27_n950(x)
+ end
+end
+
+def fun_l26_n631(x)
+ if (x < 1)
+ fun_l27_n222(x)
+ else
+ fun_l27_n780(x)
+ end
+end
+
+def fun_l26_n632(x)
+ if (x < 1)
+ fun_l27_n878(x)
+ else
+ fun_l27_n721(x)
+ end
+end
+
+def fun_l26_n633(x)
+ if (x < 1)
+ fun_l27_n611(x)
+ else
+ fun_l27_n15(x)
+ end
+end
+
+def fun_l26_n634(x)
+ if (x < 1)
+ fun_l27_n728(x)
+ else
+ fun_l27_n848(x)
+ end
+end
+
+def fun_l26_n635(x)
+ if (x < 1)
+ fun_l27_n489(x)
+ else
+ fun_l27_n3(x)
+ end
+end
+
+def fun_l26_n636(x)
+ if (x < 1)
+ fun_l27_n138(x)
+ else
+ fun_l27_n231(x)
+ end
+end
+
+def fun_l26_n637(x)
+ if (x < 1)
+ fun_l27_n861(x)
+ else
+ fun_l27_n115(x)
+ end
+end
+
+def fun_l26_n638(x)
+ if (x < 1)
+ fun_l27_n7(x)
+ else
+ fun_l27_n894(x)
+ end
+end
+
+def fun_l26_n639(x)
+ if (x < 1)
+ fun_l27_n683(x)
+ else
+ fun_l27_n964(x)
+ end
+end
+
+def fun_l26_n640(x)
+ if (x < 1)
+ fun_l27_n100(x)
+ else
+ fun_l27_n40(x)
+ end
+end
+
+def fun_l26_n641(x)
+ if (x < 1)
+ fun_l27_n744(x)
+ else
+ fun_l27_n855(x)
+ end
+end
+
+def fun_l26_n642(x)
+ if (x < 1)
+ fun_l27_n923(x)
+ else
+ fun_l27_n664(x)
+ end
+end
+
+def fun_l26_n643(x)
+ if (x < 1)
+ fun_l27_n150(x)
+ else
+ fun_l27_n713(x)
+ end
+end
+
+def fun_l26_n644(x)
+ if (x < 1)
+ fun_l27_n95(x)
+ else
+ fun_l27_n566(x)
+ end
+end
+
+def fun_l26_n645(x)
+ if (x < 1)
+ fun_l27_n886(x)
+ else
+ fun_l27_n811(x)
+ end
+end
+
+def fun_l26_n646(x)
+ if (x < 1)
+ fun_l27_n547(x)
+ else
+ fun_l27_n412(x)
+ end
+end
+
+def fun_l26_n647(x)
+ if (x < 1)
+ fun_l27_n570(x)
+ else
+ fun_l27_n606(x)
+ end
+end
+
+def fun_l26_n648(x)
+ if (x < 1)
+ fun_l27_n181(x)
+ else
+ fun_l27_n216(x)
+ end
+end
+
+def fun_l26_n649(x)
+ if (x < 1)
+ fun_l27_n198(x)
+ else
+ fun_l27_n988(x)
+ end
+end
+
+def fun_l26_n650(x)
+ if (x < 1)
+ fun_l27_n503(x)
+ else
+ fun_l27_n257(x)
+ end
+end
+
+def fun_l26_n651(x)
+ if (x < 1)
+ fun_l27_n799(x)
+ else
+ fun_l27_n175(x)
+ end
+end
+
+def fun_l26_n652(x)
+ if (x < 1)
+ fun_l27_n338(x)
+ else
+ fun_l27_n560(x)
+ end
+end
+
+def fun_l26_n653(x)
+ if (x < 1)
+ fun_l27_n597(x)
+ else
+ fun_l27_n988(x)
+ end
+end
+
+def fun_l26_n654(x)
+ if (x < 1)
+ fun_l27_n319(x)
+ else
+ fun_l27_n299(x)
+ end
+end
+
+def fun_l26_n655(x)
+ if (x < 1)
+ fun_l27_n510(x)
+ else
+ fun_l27_n375(x)
+ end
+end
+
+def fun_l26_n656(x)
+ if (x < 1)
+ fun_l27_n808(x)
+ else
+ fun_l27_n289(x)
+ end
+end
+
+def fun_l26_n657(x)
+ if (x < 1)
+ fun_l27_n170(x)
+ else
+ fun_l27_n64(x)
+ end
+end
+
+def fun_l26_n658(x)
+ if (x < 1)
+ fun_l27_n966(x)
+ else
+ fun_l27_n487(x)
+ end
+end
+
+def fun_l26_n659(x)
+ if (x < 1)
+ fun_l27_n238(x)
+ else
+ fun_l27_n638(x)
+ end
+end
+
+def fun_l26_n660(x)
+ if (x < 1)
+ fun_l27_n814(x)
+ else
+ fun_l27_n203(x)
+ end
+end
+
+def fun_l26_n661(x)
+ if (x < 1)
+ fun_l27_n840(x)
+ else
+ fun_l27_n867(x)
+ end
+end
+
+def fun_l26_n662(x)
+ if (x < 1)
+ fun_l27_n753(x)
+ else
+ fun_l27_n543(x)
+ end
+end
+
+def fun_l26_n663(x)
+ if (x < 1)
+ fun_l27_n850(x)
+ else
+ fun_l27_n539(x)
+ end
+end
+
+def fun_l26_n664(x)
+ if (x < 1)
+ fun_l27_n878(x)
+ else
+ fun_l27_n648(x)
+ end
+end
+
+def fun_l26_n665(x)
+ if (x < 1)
+ fun_l27_n256(x)
+ else
+ fun_l27_n243(x)
+ end
+end
+
+def fun_l26_n666(x)
+ if (x < 1)
+ fun_l27_n833(x)
+ else
+ fun_l27_n251(x)
+ end
+end
+
+def fun_l26_n667(x)
+ if (x < 1)
+ fun_l27_n26(x)
+ else
+ fun_l27_n206(x)
+ end
+end
+
+def fun_l26_n668(x)
+ if (x < 1)
+ fun_l27_n860(x)
+ else
+ fun_l27_n736(x)
+ end
+end
+
+def fun_l26_n669(x)
+ if (x < 1)
+ fun_l27_n794(x)
+ else
+ fun_l27_n185(x)
+ end
+end
+
+def fun_l26_n670(x)
+ if (x < 1)
+ fun_l27_n849(x)
+ else
+ fun_l27_n218(x)
+ end
+end
+
+def fun_l26_n671(x)
+ if (x < 1)
+ fun_l27_n423(x)
+ else
+ fun_l27_n163(x)
+ end
+end
+
+def fun_l26_n672(x)
+ if (x < 1)
+ fun_l27_n94(x)
+ else
+ fun_l27_n341(x)
+ end
+end
+
+def fun_l26_n673(x)
+ if (x < 1)
+ fun_l27_n927(x)
+ else
+ fun_l27_n721(x)
+ end
+end
+
+def fun_l26_n674(x)
+ if (x < 1)
+ fun_l27_n390(x)
+ else
+ fun_l27_n807(x)
+ end
+end
+
+def fun_l26_n675(x)
+ if (x < 1)
+ fun_l27_n818(x)
+ else
+ fun_l27_n532(x)
+ end
+end
+
+def fun_l26_n676(x)
+ if (x < 1)
+ fun_l27_n513(x)
+ else
+ fun_l27_n414(x)
+ end
+end
+
+def fun_l26_n677(x)
+ if (x < 1)
+ fun_l27_n364(x)
+ else
+ fun_l27_n940(x)
+ end
+end
+
+def fun_l26_n678(x)
+ if (x < 1)
+ fun_l27_n178(x)
+ else
+ fun_l27_n857(x)
+ end
+end
+
+def fun_l26_n679(x)
+ if (x < 1)
+ fun_l27_n806(x)
+ else
+ fun_l27_n838(x)
+ end
+end
+
+def fun_l26_n680(x)
+ if (x < 1)
+ fun_l27_n216(x)
+ else
+ fun_l27_n774(x)
+ end
+end
+
+def fun_l26_n681(x)
+ if (x < 1)
+ fun_l27_n969(x)
+ else
+ fun_l27_n247(x)
+ end
+end
+
+def fun_l26_n682(x)
+ if (x < 1)
+ fun_l27_n175(x)
+ else
+ fun_l27_n588(x)
+ end
+end
+
+def fun_l26_n683(x)
+ if (x < 1)
+ fun_l27_n310(x)
+ else
+ fun_l27_n48(x)
+ end
+end
+
+def fun_l26_n684(x)
+ if (x < 1)
+ fun_l27_n669(x)
+ else
+ fun_l27_n428(x)
+ end
+end
+
+def fun_l26_n685(x)
+ if (x < 1)
+ fun_l27_n592(x)
+ else
+ fun_l27_n535(x)
+ end
+end
+
+def fun_l26_n686(x)
+ if (x < 1)
+ fun_l27_n81(x)
+ else
+ fun_l27_n259(x)
+ end
+end
+
+def fun_l26_n687(x)
+ if (x < 1)
+ fun_l27_n498(x)
+ else
+ fun_l27_n859(x)
+ end
+end
+
+def fun_l26_n688(x)
+ if (x < 1)
+ fun_l27_n695(x)
+ else
+ fun_l27_n67(x)
+ end
+end
+
+def fun_l26_n689(x)
+ if (x < 1)
+ fun_l27_n97(x)
+ else
+ fun_l27_n11(x)
+ end
+end
+
+def fun_l26_n690(x)
+ if (x < 1)
+ fun_l27_n901(x)
+ else
+ fun_l27_n525(x)
+ end
+end
+
+def fun_l26_n691(x)
+ if (x < 1)
+ fun_l27_n545(x)
+ else
+ fun_l27_n649(x)
+ end
+end
+
+def fun_l26_n692(x)
+ if (x < 1)
+ fun_l27_n866(x)
+ else
+ fun_l27_n379(x)
+ end
+end
+
+def fun_l26_n693(x)
+ if (x < 1)
+ fun_l27_n475(x)
+ else
+ fun_l27_n504(x)
+ end
+end
+
+def fun_l26_n694(x)
+ if (x < 1)
+ fun_l27_n527(x)
+ else
+ fun_l27_n701(x)
+ end
+end
+
+def fun_l26_n695(x)
+ if (x < 1)
+ fun_l27_n159(x)
+ else
+ fun_l27_n946(x)
+ end
+end
+
+def fun_l26_n696(x)
+ if (x < 1)
+ fun_l27_n850(x)
+ else
+ fun_l27_n200(x)
+ end
+end
+
+def fun_l26_n697(x)
+ if (x < 1)
+ fun_l27_n318(x)
+ else
+ fun_l27_n55(x)
+ end
+end
+
+def fun_l26_n698(x)
+ if (x < 1)
+ fun_l27_n563(x)
+ else
+ fun_l27_n413(x)
+ end
+end
+
+def fun_l26_n699(x)
+ if (x < 1)
+ fun_l27_n976(x)
+ else
+ fun_l27_n42(x)
+ end
+end
+
+def fun_l26_n700(x)
+ if (x < 1)
+ fun_l27_n112(x)
+ else
+ fun_l27_n764(x)
+ end
+end
+
+def fun_l26_n701(x)
+ if (x < 1)
+ fun_l27_n519(x)
+ else
+ fun_l27_n800(x)
+ end
+end
+
+def fun_l26_n702(x)
+ if (x < 1)
+ fun_l27_n701(x)
+ else
+ fun_l27_n102(x)
+ end
+end
+
+def fun_l26_n703(x)
+ if (x < 1)
+ fun_l27_n200(x)
+ else
+ fun_l27_n685(x)
+ end
+end
+
+def fun_l26_n704(x)
+ if (x < 1)
+ fun_l27_n770(x)
+ else
+ fun_l27_n47(x)
+ end
+end
+
+def fun_l26_n705(x)
+ if (x < 1)
+ fun_l27_n479(x)
+ else
+ fun_l27_n875(x)
+ end
+end
+
+def fun_l26_n706(x)
+ if (x < 1)
+ fun_l27_n369(x)
+ else
+ fun_l27_n53(x)
+ end
+end
+
+def fun_l26_n707(x)
+ if (x < 1)
+ fun_l27_n16(x)
+ else
+ fun_l27_n612(x)
+ end
+end
+
+def fun_l26_n708(x)
+ if (x < 1)
+ fun_l27_n235(x)
+ else
+ fun_l27_n211(x)
+ end
+end
+
+def fun_l26_n709(x)
+ if (x < 1)
+ fun_l27_n636(x)
+ else
+ fun_l27_n890(x)
+ end
+end
+
+def fun_l26_n710(x)
+ if (x < 1)
+ fun_l27_n877(x)
+ else
+ fun_l27_n301(x)
+ end
+end
+
+def fun_l26_n711(x)
+ if (x < 1)
+ fun_l27_n783(x)
+ else
+ fun_l27_n409(x)
+ end
+end
+
+def fun_l26_n712(x)
+ if (x < 1)
+ fun_l27_n595(x)
+ else
+ fun_l27_n968(x)
+ end
+end
+
+def fun_l26_n713(x)
+ if (x < 1)
+ fun_l27_n858(x)
+ else
+ fun_l27_n879(x)
+ end
+end
+
+def fun_l26_n714(x)
+ if (x < 1)
+ fun_l27_n66(x)
+ else
+ fun_l27_n107(x)
+ end
+end
+
+def fun_l26_n715(x)
+ if (x < 1)
+ fun_l27_n636(x)
+ else
+ fun_l27_n912(x)
+ end
+end
+
+def fun_l26_n716(x)
+ if (x < 1)
+ fun_l27_n605(x)
+ else
+ fun_l27_n935(x)
+ end
+end
+
+def fun_l26_n717(x)
+ if (x < 1)
+ fun_l27_n186(x)
+ else
+ fun_l27_n664(x)
+ end
+end
+
+def fun_l26_n718(x)
+ if (x < 1)
+ fun_l27_n865(x)
+ else
+ fun_l27_n462(x)
+ end
+end
+
+def fun_l26_n719(x)
+ if (x < 1)
+ fun_l27_n783(x)
+ else
+ fun_l27_n668(x)
+ end
+end
+
+def fun_l26_n720(x)
+ if (x < 1)
+ fun_l27_n697(x)
+ else
+ fun_l27_n850(x)
+ end
+end
+
+def fun_l26_n721(x)
+ if (x < 1)
+ fun_l27_n668(x)
+ else
+ fun_l27_n493(x)
+ end
+end
+
+def fun_l26_n722(x)
+ if (x < 1)
+ fun_l27_n25(x)
+ else
+ fun_l27_n473(x)
+ end
+end
+
+def fun_l26_n723(x)
+ if (x < 1)
+ fun_l27_n311(x)
+ else
+ fun_l27_n380(x)
+ end
+end
+
+def fun_l26_n724(x)
+ if (x < 1)
+ fun_l27_n766(x)
+ else
+ fun_l27_n303(x)
+ end
+end
+
+def fun_l26_n725(x)
+ if (x < 1)
+ fun_l27_n97(x)
+ else
+ fun_l27_n306(x)
+ end
+end
+
+def fun_l26_n726(x)
+ if (x < 1)
+ fun_l27_n333(x)
+ else
+ fun_l27_n590(x)
+ end
+end
+
+def fun_l26_n727(x)
+ if (x < 1)
+ fun_l27_n596(x)
+ else
+ fun_l27_n509(x)
+ end
+end
+
+def fun_l26_n728(x)
+ if (x < 1)
+ fun_l27_n234(x)
+ else
+ fun_l27_n583(x)
+ end
+end
+
+def fun_l26_n729(x)
+ if (x < 1)
+ fun_l27_n692(x)
+ else
+ fun_l27_n890(x)
+ end
+end
+
+def fun_l26_n730(x)
+ if (x < 1)
+ fun_l27_n864(x)
+ else
+ fun_l27_n433(x)
+ end
+end
+
+def fun_l26_n731(x)
+ if (x < 1)
+ fun_l27_n866(x)
+ else
+ fun_l27_n350(x)
+ end
+end
+
+def fun_l26_n732(x)
+ if (x < 1)
+ fun_l27_n913(x)
+ else
+ fun_l27_n651(x)
+ end
+end
+
+def fun_l26_n733(x)
+ if (x < 1)
+ fun_l27_n919(x)
+ else
+ fun_l27_n902(x)
+ end
+end
+
+def fun_l26_n734(x)
+ if (x < 1)
+ fun_l27_n731(x)
+ else
+ fun_l27_n768(x)
+ end
+end
+
+def fun_l26_n735(x)
+ if (x < 1)
+ fun_l27_n613(x)
+ else
+ fun_l27_n550(x)
+ end
+end
+
+def fun_l26_n736(x)
+ if (x < 1)
+ fun_l27_n795(x)
+ else
+ fun_l27_n152(x)
+ end
+end
+
+def fun_l26_n737(x)
+ if (x < 1)
+ fun_l27_n214(x)
+ else
+ fun_l27_n990(x)
+ end
+end
+
+def fun_l26_n738(x)
+ if (x < 1)
+ fun_l27_n521(x)
+ else
+ fun_l27_n773(x)
+ end
+end
+
+def fun_l26_n739(x)
+ if (x < 1)
+ fun_l27_n44(x)
+ else
+ fun_l27_n580(x)
+ end
+end
+
+def fun_l26_n740(x)
+ if (x < 1)
+ fun_l27_n800(x)
+ else
+ fun_l27_n385(x)
+ end
+end
+
+def fun_l26_n741(x)
+ if (x < 1)
+ fun_l27_n412(x)
+ else
+ fun_l27_n979(x)
+ end
+end
+
+def fun_l26_n742(x)
+ if (x < 1)
+ fun_l27_n392(x)
+ else
+ fun_l27_n627(x)
+ end
+end
+
+def fun_l26_n743(x)
+ if (x < 1)
+ fun_l27_n348(x)
+ else
+ fun_l27_n141(x)
+ end
+end
+
+def fun_l26_n744(x)
+ if (x < 1)
+ fun_l27_n199(x)
+ else
+ fun_l27_n327(x)
+ end
+end
+
+def fun_l26_n745(x)
+ if (x < 1)
+ fun_l27_n302(x)
+ else
+ fun_l27_n708(x)
+ end
+end
+
+def fun_l26_n746(x)
+ if (x < 1)
+ fun_l27_n431(x)
+ else
+ fun_l27_n362(x)
+ end
+end
+
+def fun_l26_n747(x)
+ if (x < 1)
+ fun_l27_n409(x)
+ else
+ fun_l27_n102(x)
+ end
+end
+
+def fun_l26_n748(x)
+ if (x < 1)
+ fun_l27_n631(x)
+ else
+ fun_l27_n415(x)
+ end
+end
+
+def fun_l26_n749(x)
+ if (x < 1)
+ fun_l27_n196(x)
+ else
+ fun_l27_n835(x)
+ end
+end
+
+def fun_l26_n750(x)
+ if (x < 1)
+ fun_l27_n731(x)
+ else
+ fun_l27_n400(x)
+ end
+end
+
+def fun_l26_n751(x)
+ if (x < 1)
+ fun_l27_n561(x)
+ else
+ fun_l27_n444(x)
+ end
+end
+
+def fun_l26_n752(x)
+ if (x < 1)
+ fun_l27_n444(x)
+ else
+ fun_l27_n245(x)
+ end
+end
+
+def fun_l26_n753(x)
+ if (x < 1)
+ fun_l27_n784(x)
+ else
+ fun_l27_n640(x)
+ end
+end
+
+def fun_l26_n754(x)
+ if (x < 1)
+ fun_l27_n988(x)
+ else
+ fun_l27_n335(x)
+ end
+end
+
+def fun_l26_n755(x)
+ if (x < 1)
+ fun_l27_n188(x)
+ else
+ fun_l27_n584(x)
+ end
+end
+
+def fun_l26_n756(x)
+ if (x < 1)
+ fun_l27_n356(x)
+ else
+ fun_l27_n989(x)
+ end
+end
+
+def fun_l26_n757(x)
+ if (x < 1)
+ fun_l27_n687(x)
+ else
+ fun_l27_n409(x)
+ end
+end
+
+def fun_l26_n758(x)
+ if (x < 1)
+ fun_l27_n383(x)
+ else
+ fun_l27_n502(x)
+ end
+end
+
+def fun_l26_n759(x)
+ if (x < 1)
+ fun_l27_n507(x)
+ else
+ fun_l27_n868(x)
+ end
+end
+
+def fun_l26_n760(x)
+ if (x < 1)
+ fun_l27_n109(x)
+ else
+ fun_l27_n641(x)
+ end
+end
+
+def fun_l26_n761(x)
+ if (x < 1)
+ fun_l27_n831(x)
+ else
+ fun_l27_n248(x)
+ end
+end
+
+def fun_l26_n762(x)
+ if (x < 1)
+ fun_l27_n150(x)
+ else
+ fun_l27_n116(x)
+ end
+end
+
+def fun_l26_n763(x)
+ if (x < 1)
+ fun_l27_n811(x)
+ else
+ fun_l27_n680(x)
+ end
+end
+
+def fun_l26_n764(x)
+ if (x < 1)
+ fun_l27_n593(x)
+ else
+ fun_l27_n756(x)
+ end
+end
+
+def fun_l26_n765(x)
+ if (x < 1)
+ fun_l27_n468(x)
+ else
+ fun_l27_n888(x)
+ end
+end
+
+def fun_l26_n766(x)
+ if (x < 1)
+ fun_l27_n154(x)
+ else
+ fun_l27_n65(x)
+ end
+end
+
+def fun_l26_n767(x)
+ if (x < 1)
+ fun_l27_n709(x)
+ else
+ fun_l27_n878(x)
+ end
+end
+
+def fun_l26_n768(x)
+ if (x < 1)
+ fun_l27_n270(x)
+ else
+ fun_l27_n393(x)
+ end
+end
+
+def fun_l26_n769(x)
+ if (x < 1)
+ fun_l27_n315(x)
+ else
+ fun_l27_n46(x)
+ end
+end
+
+def fun_l26_n770(x)
+ if (x < 1)
+ fun_l27_n448(x)
+ else
+ fun_l27_n364(x)
+ end
+end
+
+def fun_l26_n771(x)
+ if (x < 1)
+ fun_l27_n865(x)
+ else
+ fun_l27_n842(x)
+ end
+end
+
+def fun_l26_n772(x)
+ if (x < 1)
+ fun_l27_n231(x)
+ else
+ fun_l27_n731(x)
+ end
+end
+
+def fun_l26_n773(x)
+ if (x < 1)
+ fun_l27_n303(x)
+ else
+ fun_l27_n769(x)
+ end
+end
+
+def fun_l26_n774(x)
+ if (x < 1)
+ fun_l27_n257(x)
+ else
+ fun_l27_n513(x)
+ end
+end
+
+def fun_l26_n775(x)
+ if (x < 1)
+ fun_l27_n805(x)
+ else
+ fun_l27_n947(x)
+ end
+end
+
+def fun_l26_n776(x)
+ if (x < 1)
+ fun_l27_n199(x)
+ else
+ fun_l27_n413(x)
+ end
+end
+
+def fun_l26_n777(x)
+ if (x < 1)
+ fun_l27_n631(x)
+ else
+ fun_l27_n734(x)
+ end
+end
+
+def fun_l26_n778(x)
+ if (x < 1)
+ fun_l27_n978(x)
+ else
+ fun_l27_n638(x)
+ end
+end
+
+def fun_l26_n779(x)
+ if (x < 1)
+ fun_l27_n441(x)
+ else
+ fun_l27_n936(x)
+ end
+end
+
+def fun_l26_n780(x)
+ if (x < 1)
+ fun_l27_n120(x)
+ else
+ fun_l27_n37(x)
+ end
+end
+
+def fun_l26_n781(x)
+ if (x < 1)
+ fun_l27_n44(x)
+ else
+ fun_l27_n240(x)
+ end
+end
+
+def fun_l26_n782(x)
+ if (x < 1)
+ fun_l27_n920(x)
+ else
+ fun_l27_n54(x)
+ end
+end
+
+def fun_l26_n783(x)
+ if (x < 1)
+ fun_l27_n488(x)
+ else
+ fun_l27_n965(x)
+ end
+end
+
+def fun_l26_n784(x)
+ if (x < 1)
+ fun_l27_n226(x)
+ else
+ fun_l27_n449(x)
+ end
+end
+
+def fun_l26_n785(x)
+ if (x < 1)
+ fun_l27_n794(x)
+ else
+ fun_l27_n469(x)
+ end
+end
+
+def fun_l26_n786(x)
+ if (x < 1)
+ fun_l27_n287(x)
+ else
+ fun_l27_n863(x)
+ end
+end
+
+def fun_l26_n787(x)
+ if (x < 1)
+ fun_l27_n714(x)
+ else
+ fun_l27_n606(x)
+ end
+end
+
+def fun_l26_n788(x)
+ if (x < 1)
+ fun_l27_n649(x)
+ else
+ fun_l27_n347(x)
+ end
+end
+
+def fun_l26_n789(x)
+ if (x < 1)
+ fun_l27_n176(x)
+ else
+ fun_l27_n410(x)
+ end
+end
+
+def fun_l26_n790(x)
+ if (x < 1)
+ fun_l27_n688(x)
+ else
+ fun_l27_n248(x)
+ end
+end
+
+def fun_l26_n791(x)
+ if (x < 1)
+ fun_l27_n157(x)
+ else
+ fun_l27_n119(x)
+ end
+end
+
+def fun_l26_n792(x)
+ if (x < 1)
+ fun_l27_n470(x)
+ else
+ fun_l27_n657(x)
+ end
+end
+
+def fun_l26_n793(x)
+ if (x < 1)
+ fun_l27_n246(x)
+ else
+ fun_l27_n262(x)
+ end
+end
+
+def fun_l26_n794(x)
+ if (x < 1)
+ fun_l27_n142(x)
+ else
+ fun_l27_n524(x)
+ end
+end
+
+def fun_l26_n795(x)
+ if (x < 1)
+ fun_l27_n695(x)
+ else
+ fun_l27_n88(x)
+ end
+end
+
+def fun_l26_n796(x)
+ if (x < 1)
+ fun_l27_n599(x)
+ else
+ fun_l27_n776(x)
+ end
+end
+
+def fun_l26_n797(x)
+ if (x < 1)
+ fun_l27_n364(x)
+ else
+ fun_l27_n616(x)
+ end
+end
+
+def fun_l26_n798(x)
+ if (x < 1)
+ fun_l27_n793(x)
+ else
+ fun_l27_n416(x)
+ end
+end
+
+def fun_l26_n799(x)
+ if (x < 1)
+ fun_l27_n552(x)
+ else
+ fun_l27_n490(x)
+ end
+end
+
+def fun_l26_n800(x)
+ if (x < 1)
+ fun_l27_n691(x)
+ else
+ fun_l27_n743(x)
+ end
+end
+
+def fun_l26_n801(x)
+ if (x < 1)
+ fun_l27_n257(x)
+ else
+ fun_l27_n687(x)
+ end
+end
+
+def fun_l26_n802(x)
+ if (x < 1)
+ fun_l27_n877(x)
+ else
+ fun_l27_n273(x)
+ end
+end
+
+def fun_l26_n803(x)
+ if (x < 1)
+ fun_l27_n398(x)
+ else
+ fun_l27_n874(x)
+ end
+end
+
+def fun_l26_n804(x)
+ if (x < 1)
+ fun_l27_n114(x)
+ else
+ fun_l27_n96(x)
+ end
+end
+
+def fun_l26_n805(x)
+ if (x < 1)
+ fun_l27_n489(x)
+ else
+ fun_l27_n537(x)
+ end
+end
+
+def fun_l26_n806(x)
+ if (x < 1)
+ fun_l27_n619(x)
+ else
+ fun_l27_n813(x)
+ end
+end
+
+def fun_l26_n807(x)
+ if (x < 1)
+ fun_l27_n335(x)
+ else
+ fun_l27_n467(x)
+ end
+end
+
+def fun_l26_n808(x)
+ if (x < 1)
+ fun_l27_n17(x)
+ else
+ fun_l27_n133(x)
+ end
+end
+
+def fun_l26_n809(x)
+ if (x < 1)
+ fun_l27_n266(x)
+ else
+ fun_l27_n383(x)
+ end
+end
+
+def fun_l26_n810(x)
+ if (x < 1)
+ fun_l27_n391(x)
+ else
+ fun_l27_n326(x)
+ end
+end
+
+def fun_l26_n811(x)
+ if (x < 1)
+ fun_l27_n292(x)
+ else
+ fun_l27_n444(x)
+ end
+end
+
+def fun_l26_n812(x)
+ if (x < 1)
+ fun_l27_n920(x)
+ else
+ fun_l27_n909(x)
+ end
+end
+
+def fun_l26_n813(x)
+ if (x < 1)
+ fun_l27_n575(x)
+ else
+ fun_l27_n221(x)
+ end
+end
+
+def fun_l26_n814(x)
+ if (x < 1)
+ fun_l27_n66(x)
+ else
+ fun_l27_n241(x)
+ end
+end
+
+def fun_l26_n815(x)
+ if (x < 1)
+ fun_l27_n552(x)
+ else
+ fun_l27_n906(x)
+ end
+end
+
+def fun_l26_n816(x)
+ if (x < 1)
+ fun_l27_n301(x)
+ else
+ fun_l27_n656(x)
+ end
+end
+
+def fun_l26_n817(x)
+ if (x < 1)
+ fun_l27_n472(x)
+ else
+ fun_l27_n688(x)
+ end
+end
+
+def fun_l26_n818(x)
+ if (x < 1)
+ fun_l27_n712(x)
+ else
+ fun_l27_n830(x)
+ end
+end
+
+def fun_l26_n819(x)
+ if (x < 1)
+ fun_l27_n102(x)
+ else
+ fun_l27_n146(x)
+ end
+end
+
+def fun_l26_n820(x)
+ if (x < 1)
+ fun_l27_n448(x)
+ else
+ fun_l27_n207(x)
+ end
+end
+
+def fun_l26_n821(x)
+ if (x < 1)
+ fun_l27_n732(x)
+ else
+ fun_l27_n285(x)
+ end
+end
+
+def fun_l26_n822(x)
+ if (x < 1)
+ fun_l27_n973(x)
+ else
+ fun_l27_n395(x)
+ end
+end
+
+def fun_l26_n823(x)
+ if (x < 1)
+ fun_l27_n329(x)
+ else
+ fun_l27_n748(x)
+ end
+end
+
+def fun_l26_n824(x)
+ if (x < 1)
+ fun_l27_n280(x)
+ else
+ fun_l27_n676(x)
+ end
+end
+
+def fun_l26_n825(x)
+ if (x < 1)
+ fun_l27_n867(x)
+ else
+ fun_l27_n285(x)
+ end
+end
+
+def fun_l26_n826(x)
+ if (x < 1)
+ fun_l27_n380(x)
+ else
+ fun_l27_n720(x)
+ end
+end
+
+def fun_l26_n827(x)
+ if (x < 1)
+ fun_l27_n595(x)
+ else
+ fun_l27_n740(x)
+ end
+end
+
+def fun_l26_n828(x)
+ if (x < 1)
+ fun_l27_n356(x)
+ else
+ fun_l27_n878(x)
+ end
+end
+
+def fun_l26_n829(x)
+ if (x < 1)
+ fun_l27_n453(x)
+ else
+ fun_l27_n234(x)
+ end
+end
+
+def fun_l26_n830(x)
+ if (x < 1)
+ fun_l27_n775(x)
+ else
+ fun_l27_n13(x)
+ end
+end
+
+def fun_l26_n831(x)
+ if (x < 1)
+ fun_l27_n242(x)
+ else
+ fun_l27_n144(x)
+ end
+end
+
+def fun_l26_n832(x)
+ if (x < 1)
+ fun_l27_n734(x)
+ else
+ fun_l27_n432(x)
+ end
+end
+
+def fun_l26_n833(x)
+ if (x < 1)
+ fun_l27_n996(x)
+ else
+ fun_l27_n396(x)
+ end
+end
+
+def fun_l26_n834(x)
+ if (x < 1)
+ fun_l27_n367(x)
+ else
+ fun_l27_n991(x)
+ end
+end
+
+def fun_l26_n835(x)
+ if (x < 1)
+ fun_l27_n285(x)
+ else
+ fun_l27_n526(x)
+ end
+end
+
+def fun_l26_n836(x)
+ if (x < 1)
+ fun_l27_n945(x)
+ else
+ fun_l27_n418(x)
+ end
+end
+
+def fun_l26_n837(x)
+ if (x < 1)
+ fun_l27_n622(x)
+ else
+ fun_l27_n922(x)
+ end
+end
+
+def fun_l26_n838(x)
+ if (x < 1)
+ fun_l27_n997(x)
+ else
+ fun_l27_n786(x)
+ end
+end
+
+def fun_l26_n839(x)
+ if (x < 1)
+ fun_l27_n478(x)
+ else
+ fun_l27_n991(x)
+ end
+end
+
+def fun_l26_n840(x)
+ if (x < 1)
+ fun_l27_n473(x)
+ else
+ fun_l27_n801(x)
+ end
+end
+
+def fun_l26_n841(x)
+ if (x < 1)
+ fun_l27_n675(x)
+ else
+ fun_l27_n486(x)
+ end
+end
+
+def fun_l26_n842(x)
+ if (x < 1)
+ fun_l27_n170(x)
+ else
+ fun_l27_n27(x)
+ end
+end
+
+def fun_l26_n843(x)
+ if (x < 1)
+ fun_l27_n699(x)
+ else
+ fun_l27_n536(x)
+ end
+end
+
+def fun_l26_n844(x)
+ if (x < 1)
+ fun_l27_n388(x)
+ else
+ fun_l27_n431(x)
+ end
+end
+
+def fun_l26_n845(x)
+ if (x < 1)
+ fun_l27_n248(x)
+ else
+ fun_l27_n64(x)
+ end
+end
+
+def fun_l26_n846(x)
+ if (x < 1)
+ fun_l27_n64(x)
+ else
+ fun_l27_n829(x)
+ end
+end
+
+def fun_l26_n847(x)
+ if (x < 1)
+ fun_l27_n850(x)
+ else
+ fun_l27_n626(x)
+ end
+end
+
+def fun_l26_n848(x)
+ if (x < 1)
+ fun_l27_n889(x)
+ else
+ fun_l27_n504(x)
+ end
+end
+
+def fun_l26_n849(x)
+ if (x < 1)
+ fun_l27_n121(x)
+ else
+ fun_l27_n864(x)
+ end
+end
+
+def fun_l26_n850(x)
+ if (x < 1)
+ fun_l27_n985(x)
+ else
+ fun_l27_n447(x)
+ end
+end
+
+def fun_l26_n851(x)
+ if (x < 1)
+ fun_l27_n952(x)
+ else
+ fun_l27_n30(x)
+ end
+end
+
+def fun_l26_n852(x)
+ if (x < 1)
+ fun_l27_n444(x)
+ else
+ fun_l27_n780(x)
+ end
+end
+
+def fun_l26_n853(x)
+ if (x < 1)
+ fun_l27_n969(x)
+ else
+ fun_l27_n400(x)
+ end
+end
+
+def fun_l26_n854(x)
+ if (x < 1)
+ fun_l27_n711(x)
+ else
+ fun_l27_n165(x)
+ end
+end
+
+def fun_l26_n855(x)
+ if (x < 1)
+ fun_l27_n514(x)
+ else
+ fun_l27_n464(x)
+ end
+end
+
+def fun_l26_n856(x)
+ if (x < 1)
+ fun_l27_n531(x)
+ else
+ fun_l27_n548(x)
+ end
+end
+
+def fun_l26_n857(x)
+ if (x < 1)
+ fun_l27_n996(x)
+ else
+ fun_l27_n63(x)
+ end
+end
+
+def fun_l26_n858(x)
+ if (x < 1)
+ fun_l27_n516(x)
+ else
+ fun_l27_n905(x)
+ end
+end
+
+def fun_l26_n859(x)
+ if (x < 1)
+ fun_l27_n42(x)
+ else
+ fun_l27_n327(x)
+ end
+end
+
+def fun_l26_n860(x)
+ if (x < 1)
+ fun_l27_n300(x)
+ else
+ fun_l27_n276(x)
+ end
+end
+
+def fun_l26_n861(x)
+ if (x < 1)
+ fun_l27_n734(x)
+ else
+ fun_l27_n859(x)
+ end
+end
+
+def fun_l26_n862(x)
+ if (x < 1)
+ fun_l27_n135(x)
+ else
+ fun_l27_n821(x)
+ end
+end
+
+def fun_l26_n863(x)
+ if (x < 1)
+ fun_l27_n645(x)
+ else
+ fun_l27_n287(x)
+ end
+end
+
+def fun_l26_n864(x)
+ if (x < 1)
+ fun_l27_n243(x)
+ else
+ fun_l27_n844(x)
+ end
+end
+
+def fun_l26_n865(x)
+ if (x < 1)
+ fun_l27_n909(x)
+ else
+ fun_l27_n291(x)
+ end
+end
+
+def fun_l26_n866(x)
+ if (x < 1)
+ fun_l27_n925(x)
+ else
+ fun_l27_n484(x)
+ end
+end
+
+def fun_l26_n867(x)
+ if (x < 1)
+ fun_l27_n678(x)
+ else
+ fun_l27_n205(x)
+ end
+end
+
+def fun_l26_n868(x)
+ if (x < 1)
+ fun_l27_n612(x)
+ else
+ fun_l27_n339(x)
+ end
+end
+
+def fun_l26_n869(x)
+ if (x < 1)
+ fun_l27_n622(x)
+ else
+ fun_l27_n246(x)
+ end
+end
+
+def fun_l26_n870(x)
+ if (x < 1)
+ fun_l27_n431(x)
+ else
+ fun_l27_n635(x)
+ end
+end
+
+def fun_l26_n871(x)
+ if (x < 1)
+ fun_l27_n89(x)
+ else
+ fun_l27_n969(x)
+ end
+end
+
+def fun_l26_n872(x)
+ if (x < 1)
+ fun_l27_n839(x)
+ else
+ fun_l27_n398(x)
+ end
+end
+
+def fun_l26_n873(x)
+ if (x < 1)
+ fun_l27_n230(x)
+ else
+ fun_l27_n885(x)
+ end
+end
+
+def fun_l26_n874(x)
+ if (x < 1)
+ fun_l27_n202(x)
+ else
+ fun_l27_n530(x)
+ end
+end
+
+def fun_l26_n875(x)
+ if (x < 1)
+ fun_l27_n153(x)
+ else
+ fun_l27_n959(x)
+ end
+end
+
+def fun_l26_n876(x)
+ if (x < 1)
+ fun_l27_n891(x)
+ else
+ fun_l27_n307(x)
+ end
+end
+
+def fun_l26_n877(x)
+ if (x < 1)
+ fun_l27_n648(x)
+ else
+ fun_l27_n767(x)
+ end
+end
+
+def fun_l26_n878(x)
+ if (x < 1)
+ fun_l27_n120(x)
+ else
+ fun_l27_n614(x)
+ end
+end
+
+def fun_l26_n879(x)
+ if (x < 1)
+ fun_l27_n46(x)
+ else
+ fun_l27_n766(x)
+ end
+end
+
+def fun_l26_n880(x)
+ if (x < 1)
+ fun_l27_n882(x)
+ else
+ fun_l27_n745(x)
+ end
+end
+
+def fun_l26_n881(x)
+ if (x < 1)
+ fun_l27_n966(x)
+ else
+ fun_l27_n699(x)
+ end
+end
+
+def fun_l26_n882(x)
+ if (x < 1)
+ fun_l27_n354(x)
+ else
+ fun_l27_n698(x)
+ end
+end
+
+def fun_l26_n883(x)
+ if (x < 1)
+ fun_l27_n723(x)
+ else
+ fun_l27_n507(x)
+ end
+end
+
+def fun_l26_n884(x)
+ if (x < 1)
+ fun_l27_n705(x)
+ else
+ fun_l27_n865(x)
+ end
+end
+
+def fun_l26_n885(x)
+ if (x < 1)
+ fun_l27_n609(x)
+ else
+ fun_l27_n830(x)
+ end
+end
+
+def fun_l26_n886(x)
+ if (x < 1)
+ fun_l27_n679(x)
+ else
+ fun_l27_n359(x)
+ end
+end
+
+def fun_l26_n887(x)
+ if (x < 1)
+ fun_l27_n830(x)
+ else
+ fun_l27_n59(x)
+ end
+end
+
+def fun_l26_n888(x)
+ if (x < 1)
+ fun_l27_n160(x)
+ else
+ fun_l27_n559(x)
+ end
+end
+
+def fun_l26_n889(x)
+ if (x < 1)
+ fun_l27_n233(x)
+ else
+ fun_l27_n148(x)
+ end
+end
+
+def fun_l26_n890(x)
+ if (x < 1)
+ fun_l27_n520(x)
+ else
+ fun_l27_n104(x)
+ end
+end
+
+def fun_l26_n891(x)
+ if (x < 1)
+ fun_l27_n826(x)
+ else
+ fun_l27_n884(x)
+ end
+end
+
+def fun_l26_n892(x)
+ if (x < 1)
+ fun_l27_n546(x)
+ else
+ fun_l27_n651(x)
+ end
+end
+
+def fun_l26_n893(x)
+ if (x < 1)
+ fun_l27_n181(x)
+ else
+ fun_l27_n430(x)
+ end
+end
+
+def fun_l26_n894(x)
+ if (x < 1)
+ fun_l27_n540(x)
+ else
+ fun_l27_n424(x)
+ end
+end
+
+def fun_l26_n895(x)
+ if (x < 1)
+ fun_l27_n321(x)
+ else
+ fun_l27_n72(x)
+ end
+end
+
+def fun_l26_n896(x)
+ if (x < 1)
+ fun_l27_n532(x)
+ else
+ fun_l27_n535(x)
+ end
+end
+
+def fun_l26_n897(x)
+ if (x < 1)
+ fun_l27_n171(x)
+ else
+ fun_l27_n575(x)
+ end
+end
+
+def fun_l26_n898(x)
+ if (x < 1)
+ fun_l27_n150(x)
+ else
+ fun_l27_n539(x)
+ end
+end
+
+def fun_l26_n899(x)
+ if (x < 1)
+ fun_l27_n27(x)
+ else
+ fun_l27_n487(x)
+ end
+end
+
+def fun_l26_n900(x)
+ if (x < 1)
+ fun_l27_n484(x)
+ else
+ fun_l27_n366(x)
+ end
+end
+
+def fun_l26_n901(x)
+ if (x < 1)
+ fun_l27_n708(x)
+ else
+ fun_l27_n624(x)
+ end
+end
+
+def fun_l26_n902(x)
+ if (x < 1)
+ fun_l27_n811(x)
+ else
+ fun_l27_n905(x)
+ end
+end
+
+def fun_l26_n903(x)
+ if (x < 1)
+ fun_l27_n474(x)
+ else
+ fun_l27_n252(x)
+ end
+end
+
+def fun_l26_n904(x)
+ if (x < 1)
+ fun_l27_n765(x)
+ else
+ fun_l27_n86(x)
+ end
+end
+
+def fun_l26_n905(x)
+ if (x < 1)
+ fun_l27_n120(x)
+ else
+ fun_l27_n868(x)
+ end
+end
+
+def fun_l26_n906(x)
+ if (x < 1)
+ fun_l27_n824(x)
+ else
+ fun_l27_n167(x)
+ end
+end
+
+def fun_l26_n907(x)
+ if (x < 1)
+ fun_l27_n874(x)
+ else
+ fun_l27_n428(x)
+ end
+end
+
+def fun_l26_n908(x)
+ if (x < 1)
+ fun_l27_n270(x)
+ else
+ fun_l27_n539(x)
+ end
+end
+
+def fun_l26_n909(x)
+ if (x < 1)
+ fun_l27_n451(x)
+ else
+ fun_l27_n64(x)
+ end
+end
+
+def fun_l26_n910(x)
+ if (x < 1)
+ fun_l27_n680(x)
+ else
+ fun_l27_n556(x)
+ end
+end
+
+def fun_l26_n911(x)
+ if (x < 1)
+ fun_l27_n480(x)
+ else
+ fun_l27_n599(x)
+ end
+end
+
+def fun_l26_n912(x)
+ if (x < 1)
+ fun_l27_n861(x)
+ else
+ fun_l27_n768(x)
+ end
+end
+
+def fun_l26_n913(x)
+ if (x < 1)
+ fun_l27_n679(x)
+ else
+ fun_l27_n541(x)
+ end
+end
+
+def fun_l26_n914(x)
+ if (x < 1)
+ fun_l27_n69(x)
+ else
+ fun_l27_n904(x)
+ end
+end
+
+def fun_l26_n915(x)
+ if (x < 1)
+ fun_l27_n658(x)
+ else
+ fun_l27_n580(x)
+ end
+end
+
+def fun_l26_n916(x)
+ if (x < 1)
+ fun_l27_n595(x)
+ else
+ fun_l27_n194(x)
+ end
+end
+
+def fun_l26_n917(x)
+ if (x < 1)
+ fun_l27_n518(x)
+ else
+ fun_l27_n613(x)
+ end
+end
+
+def fun_l26_n918(x)
+ if (x < 1)
+ fun_l27_n46(x)
+ else
+ fun_l27_n910(x)
+ end
+end
+
+def fun_l26_n919(x)
+ if (x < 1)
+ fun_l27_n471(x)
+ else
+ fun_l27_n562(x)
+ end
+end
+
+def fun_l26_n920(x)
+ if (x < 1)
+ fun_l27_n637(x)
+ else
+ fun_l27_n638(x)
+ end
+end
+
+def fun_l26_n921(x)
+ if (x < 1)
+ fun_l27_n77(x)
+ else
+ fun_l27_n100(x)
+ end
+end
+
+def fun_l26_n922(x)
+ if (x < 1)
+ fun_l27_n382(x)
+ else
+ fun_l27_n235(x)
+ end
+end
+
+def fun_l26_n923(x)
+ if (x < 1)
+ fun_l27_n576(x)
+ else
+ fun_l27_n404(x)
+ end
+end
+
+def fun_l26_n924(x)
+ if (x < 1)
+ fun_l27_n338(x)
+ else
+ fun_l27_n919(x)
+ end
+end
+
+def fun_l26_n925(x)
+ if (x < 1)
+ fun_l27_n758(x)
+ else
+ fun_l27_n141(x)
+ end
+end
+
+def fun_l26_n926(x)
+ if (x < 1)
+ fun_l27_n904(x)
+ else
+ fun_l27_n965(x)
+ end
+end
+
+def fun_l26_n927(x)
+ if (x < 1)
+ fun_l27_n149(x)
+ else
+ fun_l27_n707(x)
+ end
+end
+
+def fun_l26_n928(x)
+ if (x < 1)
+ fun_l27_n337(x)
+ else
+ fun_l27_n601(x)
+ end
+end
+
+def fun_l26_n929(x)
+ if (x < 1)
+ fun_l27_n34(x)
+ else
+ fun_l27_n383(x)
+ end
+end
+
+def fun_l26_n930(x)
+ if (x < 1)
+ fun_l27_n937(x)
+ else
+ fun_l27_n656(x)
+ end
+end
+
+def fun_l26_n931(x)
+ if (x < 1)
+ fun_l27_n786(x)
+ else
+ fun_l27_n73(x)
+ end
+end
+
+def fun_l26_n932(x)
+ if (x < 1)
+ fun_l27_n568(x)
+ else
+ fun_l27_n465(x)
+ end
+end
+
+def fun_l26_n933(x)
+ if (x < 1)
+ fun_l27_n552(x)
+ else
+ fun_l27_n557(x)
+ end
+end
+
+def fun_l26_n934(x)
+ if (x < 1)
+ fun_l27_n261(x)
+ else
+ fun_l27_n612(x)
+ end
+end
+
+def fun_l26_n935(x)
+ if (x < 1)
+ fun_l27_n707(x)
+ else
+ fun_l27_n955(x)
+ end
+end
+
+def fun_l26_n936(x)
+ if (x < 1)
+ fun_l27_n948(x)
+ else
+ fun_l27_n78(x)
+ end
+end
+
+def fun_l26_n937(x)
+ if (x < 1)
+ fun_l27_n963(x)
+ else
+ fun_l27_n203(x)
+ end
+end
+
+def fun_l26_n938(x)
+ if (x < 1)
+ fun_l27_n779(x)
+ else
+ fun_l27_n393(x)
+ end
+end
+
+def fun_l26_n939(x)
+ if (x < 1)
+ fun_l27_n403(x)
+ else
+ fun_l27_n303(x)
+ end
+end
+
+def fun_l26_n940(x)
+ if (x < 1)
+ fun_l27_n779(x)
+ else
+ fun_l27_n934(x)
+ end
+end
+
+def fun_l26_n941(x)
+ if (x < 1)
+ fun_l27_n191(x)
+ else
+ fun_l27_n414(x)
+ end
+end
+
+def fun_l26_n942(x)
+ if (x < 1)
+ fun_l27_n22(x)
+ else
+ fun_l27_n101(x)
+ end
+end
+
+def fun_l26_n943(x)
+ if (x < 1)
+ fun_l27_n501(x)
+ else
+ fun_l27_n43(x)
+ end
+end
+
+def fun_l26_n944(x)
+ if (x < 1)
+ fun_l27_n154(x)
+ else
+ fun_l27_n659(x)
+ end
+end
+
+def fun_l26_n945(x)
+ if (x < 1)
+ fun_l27_n346(x)
+ else
+ fun_l27_n380(x)
+ end
+end
+
+def fun_l26_n946(x)
+ if (x < 1)
+ fun_l27_n653(x)
+ else
+ fun_l27_n762(x)
+ end
+end
+
+def fun_l26_n947(x)
+ if (x < 1)
+ fun_l27_n191(x)
+ else
+ fun_l27_n649(x)
+ end
+end
+
+def fun_l26_n948(x)
+ if (x < 1)
+ fun_l27_n645(x)
+ else
+ fun_l27_n199(x)
+ end
+end
+
+def fun_l26_n949(x)
+ if (x < 1)
+ fun_l27_n251(x)
+ else
+ fun_l27_n461(x)
+ end
+end
+
+def fun_l26_n950(x)
+ if (x < 1)
+ fun_l27_n720(x)
+ else
+ fun_l27_n645(x)
+ end
+end
+
+def fun_l26_n951(x)
+ if (x < 1)
+ fun_l27_n200(x)
+ else
+ fun_l27_n73(x)
+ end
+end
+
+def fun_l26_n952(x)
+ if (x < 1)
+ fun_l27_n86(x)
+ else
+ fun_l27_n526(x)
+ end
+end
+
+def fun_l26_n953(x)
+ if (x < 1)
+ fun_l27_n448(x)
+ else
+ fun_l27_n108(x)
+ end
+end
+
+def fun_l26_n954(x)
+ if (x < 1)
+ fun_l27_n931(x)
+ else
+ fun_l27_n540(x)
+ end
+end
+
+def fun_l26_n955(x)
+ if (x < 1)
+ fun_l27_n298(x)
+ else
+ fun_l27_n836(x)
+ end
+end
+
+def fun_l26_n956(x)
+ if (x < 1)
+ fun_l27_n232(x)
+ else
+ fun_l27_n200(x)
+ end
+end
+
+def fun_l26_n957(x)
+ if (x < 1)
+ fun_l27_n342(x)
+ else
+ fun_l27_n885(x)
+ end
+end
+
+def fun_l26_n958(x)
+ if (x < 1)
+ fun_l27_n254(x)
+ else
+ fun_l27_n764(x)
+ end
+end
+
+def fun_l26_n959(x)
+ if (x < 1)
+ fun_l27_n765(x)
+ else
+ fun_l27_n264(x)
+ end
+end
+
+def fun_l26_n960(x)
+ if (x < 1)
+ fun_l27_n45(x)
+ else
+ fun_l27_n993(x)
+ end
+end
+
+def fun_l26_n961(x)
+ if (x < 1)
+ fun_l27_n105(x)
+ else
+ fun_l27_n100(x)
+ end
+end
+
+def fun_l26_n962(x)
+ if (x < 1)
+ fun_l27_n979(x)
+ else
+ fun_l27_n87(x)
+ end
+end
+
+def fun_l26_n963(x)
+ if (x < 1)
+ fun_l27_n103(x)
+ else
+ fun_l27_n927(x)
+ end
+end
+
+def fun_l26_n964(x)
+ if (x < 1)
+ fun_l27_n635(x)
+ else
+ fun_l27_n489(x)
+ end
+end
+
+def fun_l26_n965(x)
+ if (x < 1)
+ fun_l27_n565(x)
+ else
+ fun_l27_n70(x)
+ end
+end
+
+def fun_l26_n966(x)
+ if (x < 1)
+ fun_l27_n370(x)
+ else
+ fun_l27_n975(x)
+ end
+end
+
+def fun_l26_n967(x)
+ if (x < 1)
+ fun_l27_n997(x)
+ else
+ fun_l27_n132(x)
+ end
+end
+
+def fun_l26_n968(x)
+ if (x < 1)
+ fun_l27_n964(x)
+ else
+ fun_l27_n201(x)
+ end
+end
+
+def fun_l26_n969(x)
+ if (x < 1)
+ fun_l27_n710(x)
+ else
+ fun_l27_n875(x)
+ end
+end
+
+def fun_l26_n970(x)
+ if (x < 1)
+ fun_l27_n736(x)
+ else
+ fun_l27_n338(x)
+ end
+end
+
+def fun_l26_n971(x)
+ if (x < 1)
+ fun_l27_n429(x)
+ else
+ fun_l27_n64(x)
+ end
+end
+
+def fun_l26_n972(x)
+ if (x < 1)
+ fun_l27_n986(x)
+ else
+ fun_l27_n27(x)
+ end
+end
+
+def fun_l26_n973(x)
+ if (x < 1)
+ fun_l27_n419(x)
+ else
+ fun_l27_n579(x)
+ end
+end
+
+def fun_l26_n974(x)
+ if (x < 1)
+ fun_l27_n479(x)
+ else
+ fun_l27_n709(x)
+ end
+end
+
+def fun_l26_n975(x)
+ if (x < 1)
+ fun_l27_n524(x)
+ else
+ fun_l27_n550(x)
+ end
+end
+
+def fun_l26_n976(x)
+ if (x < 1)
+ fun_l27_n679(x)
+ else
+ fun_l27_n822(x)
+ end
+end
+
+def fun_l26_n977(x)
+ if (x < 1)
+ fun_l27_n535(x)
+ else
+ fun_l27_n198(x)
+ end
+end
+
+def fun_l26_n978(x)
+ if (x < 1)
+ fun_l27_n226(x)
+ else
+ fun_l27_n610(x)
+ end
+end
+
+def fun_l26_n979(x)
+ if (x < 1)
+ fun_l27_n460(x)
+ else
+ fun_l27_n562(x)
+ end
+end
+
+def fun_l26_n980(x)
+ if (x < 1)
+ fun_l27_n109(x)
+ else
+ fun_l27_n632(x)
+ end
+end
+
+def fun_l26_n981(x)
+ if (x < 1)
+ fun_l27_n936(x)
+ else
+ fun_l27_n288(x)
+ end
+end
+
+def fun_l26_n982(x)
+ if (x < 1)
+ fun_l27_n668(x)
+ else
+ fun_l27_n5(x)
+ end
+end
+
+def fun_l26_n983(x)
+ if (x < 1)
+ fun_l27_n458(x)
+ else
+ fun_l27_n861(x)
+ end
+end
+
+def fun_l26_n984(x)
+ if (x < 1)
+ fun_l27_n722(x)
+ else
+ fun_l27_n838(x)
+ end
+end
+
+def fun_l26_n985(x)
+ if (x < 1)
+ fun_l27_n883(x)
+ else
+ fun_l27_n124(x)
+ end
+end
+
+def fun_l26_n986(x)
+ if (x < 1)
+ fun_l27_n873(x)
+ else
+ fun_l27_n399(x)
+ end
+end
+
+def fun_l26_n987(x)
+ if (x < 1)
+ fun_l27_n449(x)
+ else
+ fun_l27_n34(x)
+ end
+end
+
+def fun_l26_n988(x)
+ if (x < 1)
+ fun_l27_n549(x)
+ else
+ fun_l27_n304(x)
+ end
+end
+
+def fun_l26_n989(x)
+ if (x < 1)
+ fun_l27_n287(x)
+ else
+ fun_l27_n270(x)
+ end
+end
+
+def fun_l26_n990(x)
+ if (x < 1)
+ fun_l27_n950(x)
+ else
+ fun_l27_n203(x)
+ end
+end
+
+def fun_l26_n991(x)
+ if (x < 1)
+ fun_l27_n39(x)
+ else
+ fun_l27_n284(x)
+ end
+end
+
+def fun_l26_n992(x)
+ if (x < 1)
+ fun_l27_n944(x)
+ else
+ fun_l27_n420(x)
+ end
+end
+
+def fun_l26_n993(x)
+ if (x < 1)
+ fun_l27_n254(x)
+ else
+ fun_l27_n960(x)
+ end
+end
+
+def fun_l26_n994(x)
+ if (x < 1)
+ fun_l27_n374(x)
+ else
+ fun_l27_n354(x)
+ end
+end
+
+def fun_l26_n995(x)
+ if (x < 1)
+ fun_l27_n766(x)
+ else
+ fun_l27_n937(x)
+ end
+end
+
+def fun_l26_n996(x)
+ if (x < 1)
+ fun_l27_n299(x)
+ else
+ fun_l27_n565(x)
+ end
+end
+
+def fun_l26_n997(x)
+ if (x < 1)
+ fun_l27_n390(x)
+ else
+ fun_l27_n924(x)
+ end
+end
+
+def fun_l26_n998(x)
+ if (x < 1)
+ fun_l27_n452(x)
+ else
+ fun_l27_n653(x)
+ end
+end
+
+def fun_l26_n999(x)
+ if (x < 1)
+ fun_l27_n110(x)
+ else
+ fun_l27_n781(x)
+ end
+end
+
+def fun_l27_n0(x)
+ if (x < 1)
+ fun_l28_n77(x)
+ else
+ fun_l28_n170(x)
+ end
+end
+
+def fun_l27_n1(x)
+ if (x < 1)
+ fun_l28_n420(x)
+ else
+ fun_l28_n414(x)
+ end
+end
+
+def fun_l27_n2(x)
+ if (x < 1)
+ fun_l28_n802(x)
+ else
+ fun_l28_n702(x)
+ end
+end
+
+def fun_l27_n3(x)
+ if (x < 1)
+ fun_l28_n742(x)
+ else
+ fun_l28_n819(x)
+ end
+end
+
+def fun_l27_n4(x)
+ if (x < 1)
+ fun_l28_n75(x)
+ else
+ fun_l28_n675(x)
+ end
+end
+
+def fun_l27_n5(x)
+ if (x < 1)
+ fun_l28_n276(x)
+ else
+ fun_l28_n554(x)
+ end
+end
+
+def fun_l27_n6(x)
+ if (x < 1)
+ fun_l28_n505(x)
+ else
+ fun_l28_n462(x)
+ end
+end
+
+def fun_l27_n7(x)
+ if (x < 1)
+ fun_l28_n401(x)
+ else
+ fun_l28_n437(x)
+ end
+end
+
+def fun_l27_n8(x)
+ if (x < 1)
+ fun_l28_n987(x)
+ else
+ fun_l28_n911(x)
+ end
+end
+
+def fun_l27_n9(x)
+ if (x < 1)
+ fun_l28_n196(x)
+ else
+ fun_l28_n507(x)
+ end
+end
+
+def fun_l27_n10(x)
+ if (x < 1)
+ fun_l28_n676(x)
+ else
+ fun_l28_n612(x)
+ end
+end
+
+def fun_l27_n11(x)
+ if (x < 1)
+ fun_l28_n630(x)
+ else
+ fun_l28_n897(x)
+ end
+end
+
+def fun_l27_n12(x)
+ if (x < 1)
+ fun_l28_n655(x)
+ else
+ fun_l28_n58(x)
+ end
+end
+
+def fun_l27_n13(x)
+ if (x < 1)
+ fun_l28_n777(x)
+ else
+ fun_l28_n138(x)
+ end
+end
+
+def fun_l27_n14(x)
+ if (x < 1)
+ fun_l28_n233(x)
+ else
+ fun_l28_n296(x)
+ end
+end
+
+def fun_l27_n15(x)
+ if (x < 1)
+ fun_l28_n580(x)
+ else
+ fun_l28_n538(x)
+ end
+end
+
+def fun_l27_n16(x)
+ if (x < 1)
+ fun_l28_n124(x)
+ else
+ fun_l28_n285(x)
+ end
+end
+
+def fun_l27_n17(x)
+ if (x < 1)
+ fun_l28_n250(x)
+ else
+ fun_l28_n255(x)
+ end
+end
+
+def fun_l27_n18(x)
+ if (x < 1)
+ fun_l28_n872(x)
+ else
+ fun_l28_n242(x)
+ end
+end
+
+def fun_l27_n19(x)
+ if (x < 1)
+ fun_l28_n548(x)
+ else
+ fun_l28_n30(x)
+ end
+end
+
+def fun_l27_n20(x)
+ if (x < 1)
+ fun_l28_n411(x)
+ else
+ fun_l28_n997(x)
+ end
+end
+
+def fun_l27_n21(x)
+ if (x < 1)
+ fun_l28_n860(x)
+ else
+ fun_l28_n22(x)
+ end
+end
+
+def fun_l27_n22(x)
+ if (x < 1)
+ fun_l28_n147(x)
+ else
+ fun_l28_n210(x)
+ end
+end
+
+def fun_l27_n23(x)
+ if (x < 1)
+ fun_l28_n763(x)
+ else
+ fun_l28_n652(x)
+ end
+end
+
+def fun_l27_n24(x)
+ if (x < 1)
+ fun_l28_n678(x)
+ else
+ fun_l28_n637(x)
+ end
+end
+
+def fun_l27_n25(x)
+ if (x < 1)
+ fun_l28_n748(x)
+ else
+ fun_l28_n445(x)
+ end
+end
+
+def fun_l27_n26(x)
+ if (x < 1)
+ fun_l28_n796(x)
+ else
+ fun_l28_n780(x)
+ end
+end
+
+def fun_l27_n27(x)
+ if (x < 1)
+ fun_l28_n26(x)
+ else
+ fun_l28_n737(x)
+ end
+end
+
+def fun_l27_n28(x)
+ if (x < 1)
+ fun_l28_n779(x)
+ else
+ fun_l28_n206(x)
+ end
+end
+
+def fun_l27_n29(x)
+ if (x < 1)
+ fun_l28_n236(x)
+ else
+ fun_l28_n864(x)
+ end
+end
+
+def fun_l27_n30(x)
+ if (x < 1)
+ fun_l28_n937(x)
+ else
+ fun_l28_n524(x)
+ end
+end
+
+def fun_l27_n31(x)
+ if (x < 1)
+ fun_l28_n61(x)
+ else
+ fun_l28_n791(x)
+ end
+end
+
+def fun_l27_n32(x)
+ if (x < 1)
+ fun_l28_n891(x)
+ else
+ fun_l28_n424(x)
+ end
+end
+
+def fun_l27_n33(x)
+ if (x < 1)
+ fun_l28_n856(x)
+ else
+ fun_l28_n544(x)
+ end
+end
+
+def fun_l27_n34(x)
+ if (x < 1)
+ fun_l28_n575(x)
+ else
+ fun_l28_n608(x)
+ end
+end
+
+def fun_l27_n35(x)
+ if (x < 1)
+ fun_l28_n546(x)
+ else
+ fun_l28_n164(x)
+ end
+end
+
+def fun_l27_n36(x)
+ if (x < 1)
+ fun_l28_n482(x)
+ else
+ fun_l28_n854(x)
+ end
+end
+
+def fun_l27_n37(x)
+ if (x < 1)
+ fun_l28_n667(x)
+ else
+ fun_l28_n568(x)
+ end
+end
+
+def fun_l27_n38(x)
+ if (x < 1)
+ fun_l28_n8(x)
+ else
+ fun_l28_n794(x)
+ end
+end
+
+def fun_l27_n39(x)
+ if (x < 1)
+ fun_l28_n504(x)
+ else
+ fun_l28_n199(x)
+ end
+end
+
+def fun_l27_n40(x)
+ if (x < 1)
+ fun_l28_n360(x)
+ else
+ fun_l28_n714(x)
+ end
+end
+
+def fun_l27_n41(x)
+ if (x < 1)
+ fun_l28_n758(x)
+ else
+ fun_l28_n499(x)
+ end
+end
+
+def fun_l27_n42(x)
+ if (x < 1)
+ fun_l28_n617(x)
+ else
+ fun_l28_n239(x)
+ end
+end
+
+def fun_l27_n43(x)
+ if (x < 1)
+ fun_l28_n357(x)
+ else
+ fun_l28_n950(x)
+ end
+end
+
+def fun_l27_n44(x)
+ if (x < 1)
+ fun_l28_n308(x)
+ else
+ fun_l28_n248(x)
+ end
+end
+
+def fun_l27_n45(x)
+ if (x < 1)
+ fun_l28_n887(x)
+ else
+ fun_l28_n541(x)
+ end
+end
+
+def fun_l27_n46(x)
+ if (x < 1)
+ fun_l28_n922(x)
+ else
+ fun_l28_n21(x)
+ end
+end
+
+def fun_l27_n47(x)
+ if (x < 1)
+ fun_l28_n398(x)
+ else
+ fun_l28_n781(x)
+ end
+end
+
+def fun_l27_n48(x)
+ if (x < 1)
+ fun_l28_n573(x)
+ else
+ fun_l28_n22(x)
+ end
+end
+
+def fun_l27_n49(x)
+ if (x < 1)
+ fun_l28_n324(x)
+ else
+ fun_l28_n764(x)
+ end
+end
+
+def fun_l27_n50(x)
+ if (x < 1)
+ fun_l28_n428(x)
+ else
+ fun_l28_n3(x)
+ end
+end
+
+def fun_l27_n51(x)
+ if (x < 1)
+ fun_l28_n637(x)
+ else
+ fun_l28_n871(x)
+ end
+end
+
+def fun_l27_n52(x)
+ if (x < 1)
+ fun_l28_n547(x)
+ else
+ fun_l28_n370(x)
+ end
+end
+
+def fun_l27_n53(x)
+ if (x < 1)
+ fun_l28_n864(x)
+ else
+ fun_l28_n360(x)
+ end
+end
+
+def fun_l27_n54(x)
+ if (x < 1)
+ fun_l28_n960(x)
+ else
+ fun_l28_n80(x)
+ end
+end
+
+def fun_l27_n55(x)
+ if (x < 1)
+ fun_l28_n339(x)
+ else
+ fun_l28_n828(x)
+ end
+end
+
+def fun_l27_n56(x)
+ if (x < 1)
+ fun_l28_n613(x)
+ else
+ fun_l28_n109(x)
+ end
+end
+
+def fun_l27_n57(x)
+ if (x < 1)
+ fun_l28_n458(x)
+ else
+ fun_l28_n339(x)
+ end
+end
+
+def fun_l27_n58(x)
+ if (x < 1)
+ fun_l28_n313(x)
+ else
+ fun_l28_n20(x)
+ end
+end
+
+def fun_l27_n59(x)
+ if (x < 1)
+ fun_l28_n642(x)
+ else
+ fun_l28_n582(x)
+ end
+end
+
+def fun_l27_n60(x)
+ if (x < 1)
+ fun_l28_n407(x)
+ else
+ fun_l28_n182(x)
+ end
+end
+
+def fun_l27_n61(x)
+ if (x < 1)
+ fun_l28_n475(x)
+ else
+ fun_l28_n865(x)
+ end
+end
+
+def fun_l27_n62(x)
+ if (x < 1)
+ fun_l28_n867(x)
+ else
+ fun_l28_n935(x)
+ end
+end
+
+def fun_l27_n63(x)
+ if (x < 1)
+ fun_l28_n361(x)
+ else
+ fun_l28_n675(x)
+ end
+end
+
+def fun_l27_n64(x)
+ if (x < 1)
+ fun_l28_n583(x)
+ else
+ fun_l28_n990(x)
+ end
+end
+
+def fun_l27_n65(x)
+ if (x < 1)
+ fun_l28_n305(x)
+ else
+ fun_l28_n918(x)
+ end
+end
+
+def fun_l27_n66(x)
+ if (x < 1)
+ fun_l28_n449(x)
+ else
+ fun_l28_n172(x)
+ end
+end
+
+def fun_l27_n67(x)
+ if (x < 1)
+ fun_l28_n384(x)
+ else
+ fun_l28_n102(x)
+ end
+end
+
+def fun_l27_n68(x)
+ if (x < 1)
+ fun_l28_n27(x)
+ else
+ fun_l28_n638(x)
+ end
+end
+
+def fun_l27_n69(x)
+ if (x < 1)
+ fun_l28_n370(x)
+ else
+ fun_l28_n305(x)
+ end
+end
+
+def fun_l27_n70(x)
+ if (x < 1)
+ fun_l28_n91(x)
+ else
+ fun_l28_n516(x)
+ end
+end
+
+def fun_l27_n71(x)
+ if (x < 1)
+ fun_l28_n835(x)
+ else
+ fun_l28_n422(x)
+ end
+end
+
+def fun_l27_n72(x)
+ if (x < 1)
+ fun_l28_n528(x)
+ else
+ fun_l28_n924(x)
+ end
+end
+
+def fun_l27_n73(x)
+ if (x < 1)
+ fun_l28_n910(x)
+ else
+ fun_l28_n177(x)
+ end
+end
+
+def fun_l27_n74(x)
+ if (x < 1)
+ fun_l28_n424(x)
+ else
+ fun_l28_n133(x)
+ end
+end
+
+def fun_l27_n75(x)
+ if (x < 1)
+ fun_l28_n207(x)
+ else
+ fun_l28_n206(x)
+ end
+end
+
+def fun_l27_n76(x)
+ if (x < 1)
+ fun_l28_n285(x)
+ else
+ fun_l28_n513(x)
+ end
+end
+
+def fun_l27_n77(x)
+ if (x < 1)
+ fun_l28_n446(x)
+ else
+ fun_l28_n985(x)
+ end
+end
+
+def fun_l27_n78(x)
+ if (x < 1)
+ fun_l28_n814(x)
+ else
+ fun_l28_n43(x)
+ end
+end
+
+def fun_l27_n79(x)
+ if (x < 1)
+ fun_l28_n155(x)
+ else
+ fun_l28_n944(x)
+ end
+end
+
+def fun_l27_n80(x)
+ if (x < 1)
+ fun_l28_n22(x)
+ else
+ fun_l28_n815(x)
+ end
+end
+
+def fun_l27_n81(x)
+ if (x < 1)
+ fun_l28_n465(x)
+ else
+ fun_l28_n132(x)
+ end
+end
+
+def fun_l27_n82(x)
+ if (x < 1)
+ fun_l28_n540(x)
+ else
+ fun_l28_n199(x)
+ end
+end
+
+def fun_l27_n83(x)
+ if (x < 1)
+ fun_l28_n28(x)
+ else
+ fun_l28_n64(x)
+ end
+end
+
+def fun_l27_n84(x)
+ if (x < 1)
+ fun_l28_n4(x)
+ else
+ fun_l28_n782(x)
+ end
+end
+
+def fun_l27_n85(x)
+ if (x < 1)
+ fun_l28_n685(x)
+ else
+ fun_l28_n57(x)
+ end
+end
+
+def fun_l27_n86(x)
+ if (x < 1)
+ fun_l28_n755(x)
+ else
+ fun_l28_n317(x)
+ end
+end
+
+def fun_l27_n87(x)
+ if (x < 1)
+ fun_l28_n298(x)
+ else
+ fun_l28_n645(x)
+ end
+end
+
+def fun_l27_n88(x)
+ if (x < 1)
+ fun_l28_n489(x)
+ else
+ fun_l28_n357(x)
+ end
+end
+
+def fun_l27_n89(x)
+ if (x < 1)
+ fun_l28_n225(x)
+ else
+ fun_l28_n465(x)
+ end
+end
+
+def fun_l27_n90(x)
+ if (x < 1)
+ fun_l28_n729(x)
+ else
+ fun_l28_n688(x)
+ end
+end
+
+def fun_l27_n91(x)
+ if (x < 1)
+ fun_l28_n936(x)
+ else
+ fun_l28_n62(x)
+ end
+end
+
+def fun_l27_n92(x)
+ if (x < 1)
+ fun_l28_n564(x)
+ else
+ fun_l28_n497(x)
+ end
+end
+
+def fun_l27_n93(x)
+ if (x < 1)
+ fun_l28_n78(x)
+ else
+ fun_l28_n167(x)
+ end
+end
+
+def fun_l27_n94(x)
+ if (x < 1)
+ fun_l28_n24(x)
+ else
+ fun_l28_n543(x)
+ end
+end
+
+def fun_l27_n95(x)
+ if (x < 1)
+ fun_l28_n56(x)
+ else
+ fun_l28_n796(x)
+ end
+end
+
+def fun_l27_n96(x)
+ if (x < 1)
+ fun_l28_n768(x)
+ else
+ fun_l28_n909(x)
+ end
+end
+
+def fun_l27_n97(x)
+ if (x < 1)
+ fun_l28_n72(x)
+ else
+ fun_l28_n604(x)
+ end
+end
+
+def fun_l27_n98(x)
+ if (x < 1)
+ fun_l28_n903(x)
+ else
+ fun_l28_n998(x)
+ end
+end
+
+def fun_l27_n99(x)
+ if (x < 1)
+ fun_l28_n525(x)
+ else
+ fun_l28_n158(x)
+ end
+end
+
+def fun_l27_n100(x)
+ if (x < 1)
+ fun_l28_n54(x)
+ else
+ fun_l28_n667(x)
+ end
+end
+
+def fun_l27_n101(x)
+ if (x < 1)
+ fun_l28_n894(x)
+ else
+ fun_l28_n807(x)
+ end
+end
+
+def fun_l27_n102(x)
+ if (x < 1)
+ fun_l28_n334(x)
+ else
+ fun_l28_n479(x)
+ end
+end
+
+def fun_l27_n103(x)
+ if (x < 1)
+ fun_l28_n211(x)
+ else
+ fun_l28_n383(x)
+ end
+end
+
+def fun_l27_n104(x)
+ if (x < 1)
+ fun_l28_n598(x)
+ else
+ fun_l28_n793(x)
+ end
+end
+
+def fun_l27_n105(x)
+ if (x < 1)
+ fun_l28_n812(x)
+ else
+ fun_l28_n806(x)
+ end
+end
+
+def fun_l27_n106(x)
+ if (x < 1)
+ fun_l28_n726(x)
+ else
+ fun_l28_n769(x)
+ end
+end
+
+def fun_l27_n107(x)
+ if (x < 1)
+ fun_l28_n593(x)
+ else
+ fun_l28_n173(x)
+ end
+end
+
+def fun_l27_n108(x)
+ if (x < 1)
+ fun_l28_n490(x)
+ else
+ fun_l28_n681(x)
+ end
+end
+
+def fun_l27_n109(x)
+ if (x < 1)
+ fun_l28_n691(x)
+ else
+ fun_l28_n323(x)
+ end
+end
+
+def fun_l27_n110(x)
+ if (x < 1)
+ fun_l28_n710(x)
+ else
+ fun_l28_n624(x)
+ end
+end
+
+def fun_l27_n111(x)
+ if (x < 1)
+ fun_l28_n563(x)
+ else
+ fun_l28_n335(x)
+ end
+end
+
+def fun_l27_n112(x)
+ if (x < 1)
+ fun_l28_n510(x)
+ else
+ fun_l28_n879(x)
+ end
+end
+
+def fun_l27_n113(x)
+ if (x < 1)
+ fun_l28_n900(x)
+ else
+ fun_l28_n119(x)
+ end
+end
+
+def fun_l27_n114(x)
+ if (x < 1)
+ fun_l28_n17(x)
+ else
+ fun_l28_n8(x)
+ end
+end
+
+def fun_l27_n115(x)
+ if (x < 1)
+ fun_l28_n813(x)
+ else
+ fun_l28_n948(x)
+ end
+end
+
+def fun_l27_n116(x)
+ if (x < 1)
+ fun_l28_n644(x)
+ else
+ fun_l28_n177(x)
+ end
+end
+
+def fun_l27_n117(x)
+ if (x < 1)
+ fun_l28_n635(x)
+ else
+ fun_l28_n489(x)
+ end
+end
+
+def fun_l27_n118(x)
+ if (x < 1)
+ fun_l28_n520(x)
+ else
+ fun_l28_n127(x)
+ end
+end
+
+def fun_l27_n119(x)
+ if (x < 1)
+ fun_l28_n859(x)
+ else
+ fun_l28_n264(x)
+ end
+end
+
+def fun_l27_n120(x)
+ if (x < 1)
+ fun_l28_n29(x)
+ else
+ fun_l28_n984(x)
+ end
+end
+
+def fun_l27_n121(x)
+ if (x < 1)
+ fun_l28_n2(x)
+ else
+ fun_l28_n858(x)
+ end
+end
+
+def fun_l27_n122(x)
+ if (x < 1)
+ fun_l28_n907(x)
+ else
+ fun_l28_n34(x)
+ end
+end
+
+def fun_l27_n123(x)
+ if (x < 1)
+ fun_l28_n495(x)
+ else
+ fun_l28_n144(x)
+ end
+end
+
+def fun_l27_n124(x)
+ if (x < 1)
+ fun_l28_n160(x)
+ else
+ fun_l28_n987(x)
+ end
+end
+
+def fun_l27_n125(x)
+ if (x < 1)
+ fun_l28_n60(x)
+ else
+ fun_l28_n415(x)
+ end
+end
+
+def fun_l27_n126(x)
+ if (x < 1)
+ fun_l28_n473(x)
+ else
+ fun_l28_n461(x)
+ end
+end
+
+def fun_l27_n127(x)
+ if (x < 1)
+ fun_l28_n664(x)
+ else
+ fun_l28_n764(x)
+ end
+end
+
+def fun_l27_n128(x)
+ if (x < 1)
+ fun_l28_n815(x)
+ else
+ fun_l28_n677(x)
+ end
+end
+
+def fun_l27_n129(x)
+ if (x < 1)
+ fun_l28_n828(x)
+ else
+ fun_l28_n575(x)
+ end
+end
+
+def fun_l27_n130(x)
+ if (x < 1)
+ fun_l28_n100(x)
+ else
+ fun_l28_n811(x)
+ end
+end
+
+def fun_l27_n131(x)
+ if (x < 1)
+ fun_l28_n789(x)
+ else
+ fun_l28_n246(x)
+ end
+end
+
+def fun_l27_n132(x)
+ if (x < 1)
+ fun_l28_n506(x)
+ else
+ fun_l28_n555(x)
+ end
+end
+
+def fun_l27_n133(x)
+ if (x < 1)
+ fun_l28_n272(x)
+ else
+ fun_l28_n115(x)
+ end
+end
+
+def fun_l27_n134(x)
+ if (x < 1)
+ fun_l28_n925(x)
+ else
+ fun_l28_n34(x)
+ end
+end
+
+def fun_l27_n135(x)
+ if (x < 1)
+ fun_l28_n844(x)
+ else
+ fun_l28_n725(x)
+ end
+end
+
+def fun_l27_n136(x)
+ if (x < 1)
+ fun_l28_n825(x)
+ else
+ fun_l28_n38(x)
+ end
+end
+
+def fun_l27_n137(x)
+ if (x < 1)
+ fun_l28_n607(x)
+ else
+ fun_l28_n343(x)
+ end
+end
+
+def fun_l27_n138(x)
+ if (x < 1)
+ fun_l28_n874(x)
+ else
+ fun_l28_n449(x)
+ end
+end
+
+def fun_l27_n139(x)
+ if (x < 1)
+ fun_l28_n632(x)
+ else
+ fun_l28_n454(x)
+ end
+end
+
+def fun_l27_n140(x)
+ if (x < 1)
+ fun_l28_n902(x)
+ else
+ fun_l28_n301(x)
+ end
+end
+
+def fun_l27_n141(x)
+ if (x < 1)
+ fun_l28_n395(x)
+ else
+ fun_l28_n890(x)
+ end
+end
+
+def fun_l27_n142(x)
+ if (x < 1)
+ fun_l28_n625(x)
+ else
+ fun_l28_n246(x)
+ end
+end
+
+def fun_l27_n143(x)
+ if (x < 1)
+ fun_l28_n312(x)
+ else
+ fun_l28_n975(x)
+ end
+end
+
+def fun_l27_n144(x)
+ if (x < 1)
+ fun_l28_n974(x)
+ else
+ fun_l28_n451(x)
+ end
+end
+
+def fun_l27_n145(x)
+ if (x < 1)
+ fun_l28_n541(x)
+ else
+ fun_l28_n566(x)
+ end
+end
+
+def fun_l27_n146(x)
+ if (x < 1)
+ fun_l28_n285(x)
+ else
+ fun_l28_n443(x)
+ end
+end
+
+def fun_l27_n147(x)
+ if (x < 1)
+ fun_l28_n71(x)
+ else
+ fun_l28_n200(x)
+ end
+end
+
+def fun_l27_n148(x)
+ if (x < 1)
+ fun_l28_n681(x)
+ else
+ fun_l28_n561(x)
+ end
+end
+
+def fun_l27_n149(x)
+ if (x < 1)
+ fun_l28_n470(x)
+ else
+ fun_l28_n529(x)
+ end
+end
+
+def fun_l27_n150(x)
+ if (x < 1)
+ fun_l28_n83(x)
+ else
+ fun_l28_n755(x)
+ end
+end
+
+def fun_l27_n151(x)
+ if (x < 1)
+ fun_l28_n142(x)
+ else
+ fun_l28_n631(x)
+ end
+end
+
+def fun_l27_n152(x)
+ if (x < 1)
+ fun_l28_n49(x)
+ else
+ fun_l28_n531(x)
+ end
+end
+
+def fun_l27_n153(x)
+ if (x < 1)
+ fun_l28_n237(x)
+ else
+ fun_l28_n241(x)
+ end
+end
+
+def fun_l27_n154(x)
+ if (x < 1)
+ fun_l28_n36(x)
+ else
+ fun_l28_n862(x)
+ end
+end
+
+def fun_l27_n155(x)
+ if (x < 1)
+ fun_l28_n310(x)
+ else
+ fun_l28_n387(x)
+ end
+end
+
+def fun_l27_n156(x)
+ if (x < 1)
+ fun_l28_n1(x)
+ else
+ fun_l28_n131(x)
+ end
+end
+
+def fun_l27_n157(x)
+ if (x < 1)
+ fun_l28_n232(x)
+ else
+ fun_l28_n503(x)
+ end
+end
+
+def fun_l27_n158(x)
+ if (x < 1)
+ fun_l28_n48(x)
+ else
+ fun_l28_n68(x)
+ end
+end
+
+def fun_l27_n159(x)
+ if (x < 1)
+ fun_l28_n98(x)
+ else
+ fun_l28_n82(x)
+ end
+end
+
+def fun_l27_n160(x)
+ if (x < 1)
+ fun_l28_n175(x)
+ else
+ fun_l28_n466(x)
+ end
+end
+
+def fun_l27_n161(x)
+ if (x < 1)
+ fun_l28_n105(x)
+ else
+ fun_l28_n159(x)
+ end
+end
+
+def fun_l27_n162(x)
+ if (x < 1)
+ fun_l28_n336(x)
+ else
+ fun_l28_n314(x)
+ end
+end
+
+def fun_l27_n163(x)
+ if (x < 1)
+ fun_l28_n458(x)
+ else
+ fun_l28_n901(x)
+ end
+end
+
+def fun_l27_n164(x)
+ if (x < 1)
+ fun_l28_n621(x)
+ else
+ fun_l28_n876(x)
+ end
+end
+
+def fun_l27_n165(x)
+ if (x < 1)
+ fun_l28_n830(x)
+ else
+ fun_l28_n468(x)
+ end
+end
+
+def fun_l27_n166(x)
+ if (x < 1)
+ fun_l28_n606(x)
+ else
+ fun_l28_n253(x)
+ end
+end
+
+def fun_l27_n167(x)
+ if (x < 1)
+ fun_l28_n905(x)
+ else
+ fun_l28_n582(x)
+ end
+end
+
+def fun_l27_n168(x)
+ if (x < 1)
+ fun_l28_n882(x)
+ else
+ fun_l28_n280(x)
+ end
+end
+
+def fun_l27_n169(x)
+ if (x < 1)
+ fun_l28_n824(x)
+ else
+ fun_l28_n672(x)
+ end
+end
+
+def fun_l27_n170(x)
+ if (x < 1)
+ fun_l28_n455(x)
+ else
+ fun_l28_n621(x)
+ end
+end
+
+def fun_l27_n171(x)
+ if (x < 1)
+ fun_l28_n594(x)
+ else
+ fun_l28_n143(x)
+ end
+end
+
+def fun_l27_n172(x)
+ if (x < 1)
+ fun_l28_n414(x)
+ else
+ fun_l28_n371(x)
+ end
+end
+
+def fun_l27_n173(x)
+ if (x < 1)
+ fun_l28_n2(x)
+ else
+ fun_l28_n883(x)
+ end
+end
+
+def fun_l27_n174(x)
+ if (x < 1)
+ fun_l28_n710(x)
+ else
+ fun_l28_n322(x)
+ end
+end
+
+def fun_l27_n175(x)
+ if (x < 1)
+ fun_l28_n271(x)
+ else
+ fun_l28_n110(x)
+ end
+end
+
+def fun_l27_n176(x)
+ if (x < 1)
+ fun_l28_n100(x)
+ else
+ fun_l28_n870(x)
+ end
+end
+
+def fun_l27_n177(x)
+ if (x < 1)
+ fun_l28_n446(x)
+ else
+ fun_l28_n742(x)
+ end
+end
+
+def fun_l27_n178(x)
+ if (x < 1)
+ fun_l28_n175(x)
+ else
+ fun_l28_n170(x)
+ end
+end
+
+def fun_l27_n179(x)
+ if (x < 1)
+ fun_l28_n724(x)
+ else
+ fun_l28_n364(x)
+ end
+end
+
+def fun_l27_n180(x)
+ if (x < 1)
+ fun_l28_n167(x)
+ else
+ fun_l28_n826(x)
+ end
+end
+
+def fun_l27_n181(x)
+ if (x < 1)
+ fun_l28_n65(x)
+ else
+ fun_l28_n375(x)
+ end
+end
+
+def fun_l27_n182(x)
+ if (x < 1)
+ fun_l28_n709(x)
+ else
+ fun_l28_n62(x)
+ end
+end
+
+def fun_l27_n183(x)
+ if (x < 1)
+ fun_l28_n584(x)
+ else
+ fun_l28_n611(x)
+ end
+end
+
+def fun_l27_n184(x)
+ if (x < 1)
+ fun_l28_n442(x)
+ else
+ fun_l28_n174(x)
+ end
+end
+
+def fun_l27_n185(x)
+ if (x < 1)
+ fun_l28_n684(x)
+ else
+ fun_l28_n768(x)
+ end
+end
+
+def fun_l27_n186(x)
+ if (x < 1)
+ fun_l28_n424(x)
+ else
+ fun_l28_n207(x)
+ end
+end
+
+def fun_l27_n187(x)
+ if (x < 1)
+ fun_l28_n670(x)
+ else
+ fun_l28_n970(x)
+ end
+end
+
+def fun_l27_n188(x)
+ if (x < 1)
+ fun_l28_n470(x)
+ else
+ fun_l28_n774(x)
+ end
+end
+
+def fun_l27_n189(x)
+ if (x < 1)
+ fun_l28_n58(x)
+ else
+ fun_l28_n578(x)
+ end
+end
+
+def fun_l27_n190(x)
+ if (x < 1)
+ fun_l28_n697(x)
+ else
+ fun_l28_n310(x)
+ end
+end
+
+def fun_l27_n191(x)
+ if (x < 1)
+ fun_l28_n493(x)
+ else
+ fun_l28_n56(x)
+ end
+end
+
+def fun_l27_n192(x)
+ if (x < 1)
+ fun_l28_n12(x)
+ else
+ fun_l28_n471(x)
+ end
+end
+
+def fun_l27_n193(x)
+ if (x < 1)
+ fun_l28_n306(x)
+ else
+ fun_l28_n10(x)
+ end
+end
+
+def fun_l27_n194(x)
+ if (x < 1)
+ fun_l28_n87(x)
+ else
+ fun_l28_n59(x)
+ end
+end
+
+def fun_l27_n195(x)
+ if (x < 1)
+ fun_l28_n207(x)
+ else
+ fun_l28_n555(x)
+ end
+end
+
+def fun_l27_n196(x)
+ if (x < 1)
+ fun_l28_n563(x)
+ else
+ fun_l28_n256(x)
+ end
+end
+
+def fun_l27_n197(x)
+ if (x < 1)
+ fun_l28_n14(x)
+ else
+ fun_l28_n895(x)
+ end
+end
+
+def fun_l27_n198(x)
+ if (x < 1)
+ fun_l28_n986(x)
+ else
+ fun_l28_n287(x)
+ end
+end
+
+def fun_l27_n199(x)
+ if (x < 1)
+ fun_l28_n810(x)
+ else
+ fun_l28_n66(x)
+ end
+end
+
+def fun_l27_n200(x)
+ if (x < 1)
+ fun_l28_n457(x)
+ else
+ fun_l28_n186(x)
+ end
+end
+
+def fun_l27_n201(x)
+ if (x < 1)
+ fun_l28_n580(x)
+ else
+ fun_l28_n248(x)
+ end
+end
+
+def fun_l27_n202(x)
+ if (x < 1)
+ fun_l28_n9(x)
+ else
+ fun_l28_n66(x)
+ end
+end
+
+def fun_l27_n203(x)
+ if (x < 1)
+ fun_l28_n659(x)
+ else
+ fun_l28_n403(x)
+ end
+end
+
+def fun_l27_n204(x)
+ if (x < 1)
+ fun_l28_n66(x)
+ else
+ fun_l28_n524(x)
+ end
+end
+
+def fun_l27_n205(x)
+ if (x < 1)
+ fun_l28_n754(x)
+ else
+ fun_l28_n46(x)
+ end
+end
+
+def fun_l27_n206(x)
+ if (x < 1)
+ fun_l28_n32(x)
+ else
+ fun_l28_n655(x)
+ end
+end
+
+def fun_l27_n207(x)
+ if (x < 1)
+ fun_l28_n559(x)
+ else
+ fun_l28_n619(x)
+ end
+end
+
+def fun_l27_n208(x)
+ if (x < 1)
+ fun_l28_n251(x)
+ else
+ fun_l28_n410(x)
+ end
+end
+
+def fun_l27_n209(x)
+ if (x < 1)
+ fun_l28_n339(x)
+ else
+ fun_l28_n726(x)
+ end
+end
+
+def fun_l27_n210(x)
+ if (x < 1)
+ fun_l28_n104(x)
+ else
+ fun_l28_n733(x)
+ end
+end
+
+def fun_l27_n211(x)
+ if (x < 1)
+ fun_l28_n500(x)
+ else
+ fun_l28_n654(x)
+ end
+end
+
+def fun_l27_n212(x)
+ if (x < 1)
+ fun_l28_n244(x)
+ else
+ fun_l28_n471(x)
+ end
+end
+
+def fun_l27_n213(x)
+ if (x < 1)
+ fun_l28_n692(x)
+ else
+ fun_l28_n56(x)
+ end
+end
+
+def fun_l27_n214(x)
+ if (x < 1)
+ fun_l28_n54(x)
+ else
+ fun_l28_n753(x)
+ end
+end
+
+def fun_l27_n215(x)
+ if (x < 1)
+ fun_l28_n770(x)
+ else
+ fun_l28_n756(x)
+ end
+end
+
+def fun_l27_n216(x)
+ if (x < 1)
+ fun_l28_n771(x)
+ else
+ fun_l28_n407(x)
+ end
+end
+
+def fun_l27_n217(x)
+ if (x < 1)
+ fun_l28_n728(x)
+ else
+ fun_l28_n361(x)
+ end
+end
+
+def fun_l27_n218(x)
+ if (x < 1)
+ fun_l28_n983(x)
+ else
+ fun_l28_n440(x)
+ end
+end
+
+def fun_l27_n219(x)
+ if (x < 1)
+ fun_l28_n105(x)
+ else
+ fun_l28_n906(x)
+ end
+end
+
+def fun_l27_n220(x)
+ if (x < 1)
+ fun_l28_n694(x)
+ else
+ fun_l28_n792(x)
+ end
+end
+
+def fun_l27_n221(x)
+ if (x < 1)
+ fun_l28_n325(x)
+ else
+ fun_l28_n98(x)
+ end
+end
+
+def fun_l27_n222(x)
+ if (x < 1)
+ fun_l28_n354(x)
+ else
+ fun_l28_n683(x)
+ end
+end
+
+def fun_l27_n223(x)
+ if (x < 1)
+ fun_l28_n236(x)
+ else
+ fun_l28_n999(x)
+ end
+end
+
+def fun_l27_n224(x)
+ if (x < 1)
+ fun_l28_n671(x)
+ else
+ fun_l28_n621(x)
+ end
+end
+
+def fun_l27_n225(x)
+ if (x < 1)
+ fun_l28_n113(x)
+ else
+ fun_l28_n532(x)
+ end
+end
+
+def fun_l27_n226(x)
+ if (x < 1)
+ fun_l28_n43(x)
+ else
+ fun_l28_n449(x)
+ end
+end
+
+def fun_l27_n227(x)
+ if (x < 1)
+ fun_l28_n402(x)
+ else
+ fun_l28_n298(x)
+ end
+end
+
+def fun_l27_n228(x)
+ if (x < 1)
+ fun_l28_n858(x)
+ else
+ fun_l28_n626(x)
+ end
+end
+
+def fun_l27_n229(x)
+ if (x < 1)
+ fun_l28_n596(x)
+ else
+ fun_l28_n21(x)
+ end
+end
+
+def fun_l27_n230(x)
+ if (x < 1)
+ fun_l28_n713(x)
+ else
+ fun_l28_n755(x)
+ end
+end
+
+def fun_l27_n231(x)
+ if (x < 1)
+ fun_l28_n59(x)
+ else
+ fun_l28_n695(x)
+ end
+end
+
+def fun_l27_n232(x)
+ if (x < 1)
+ fun_l28_n715(x)
+ else
+ fun_l28_n614(x)
+ end
+end
+
+def fun_l27_n233(x)
+ if (x < 1)
+ fun_l28_n124(x)
+ else
+ fun_l28_n877(x)
+ end
+end
+
+def fun_l27_n234(x)
+ if (x < 1)
+ fun_l28_n563(x)
+ else
+ fun_l28_n273(x)
+ end
+end
+
+def fun_l27_n235(x)
+ if (x < 1)
+ fun_l28_n331(x)
+ else
+ fun_l28_n866(x)
+ end
+end
+
+def fun_l27_n236(x)
+ if (x < 1)
+ fun_l28_n950(x)
+ else
+ fun_l28_n765(x)
+ end
+end
+
+def fun_l27_n237(x)
+ if (x < 1)
+ fun_l28_n550(x)
+ else
+ fun_l28_n133(x)
+ end
+end
+
+def fun_l27_n238(x)
+ if (x < 1)
+ fun_l28_n0(x)
+ else
+ fun_l28_n749(x)
+ end
+end
+
+def fun_l27_n239(x)
+ if (x < 1)
+ fun_l28_n578(x)
+ else
+ fun_l28_n692(x)
+ end
+end
+
+def fun_l27_n240(x)
+ if (x < 1)
+ fun_l28_n111(x)
+ else
+ fun_l28_n301(x)
+ end
+end
+
+def fun_l27_n241(x)
+ if (x < 1)
+ fun_l28_n191(x)
+ else
+ fun_l28_n272(x)
+ end
+end
+
+def fun_l27_n242(x)
+ if (x < 1)
+ fun_l28_n547(x)
+ else
+ fun_l28_n425(x)
+ end
+end
+
+def fun_l27_n243(x)
+ if (x < 1)
+ fun_l28_n173(x)
+ else
+ fun_l28_n101(x)
+ end
+end
+
+def fun_l27_n244(x)
+ if (x < 1)
+ fun_l28_n511(x)
+ else
+ fun_l28_n758(x)
+ end
+end
+
+def fun_l27_n245(x)
+ if (x < 1)
+ fun_l28_n272(x)
+ else
+ fun_l28_n497(x)
+ end
+end
+
+def fun_l27_n246(x)
+ if (x < 1)
+ fun_l28_n59(x)
+ else
+ fun_l28_n348(x)
+ end
+end
+
+def fun_l27_n247(x)
+ if (x < 1)
+ fun_l28_n583(x)
+ else
+ fun_l28_n730(x)
+ end
+end
+
+def fun_l27_n248(x)
+ if (x < 1)
+ fun_l28_n635(x)
+ else
+ fun_l28_n714(x)
+ end
+end
+
+def fun_l27_n249(x)
+ if (x < 1)
+ fun_l28_n815(x)
+ else
+ fun_l28_n844(x)
+ end
+end
+
+def fun_l27_n250(x)
+ if (x < 1)
+ fun_l28_n694(x)
+ else
+ fun_l28_n869(x)
+ end
+end
+
+def fun_l27_n251(x)
+ if (x < 1)
+ fun_l28_n681(x)
+ else
+ fun_l28_n894(x)
+ end
+end
+
+def fun_l27_n252(x)
+ if (x < 1)
+ fun_l28_n756(x)
+ else
+ fun_l28_n657(x)
+ end
+end
+
+def fun_l27_n253(x)
+ if (x < 1)
+ fun_l28_n392(x)
+ else
+ fun_l28_n706(x)
+ end
+end
+
+def fun_l27_n254(x)
+ if (x < 1)
+ fun_l28_n267(x)
+ else
+ fun_l28_n238(x)
+ end
+end
+
+def fun_l27_n255(x)
+ if (x < 1)
+ fun_l28_n914(x)
+ else
+ fun_l28_n574(x)
+ end
+end
+
+def fun_l27_n256(x)
+ if (x < 1)
+ fun_l28_n872(x)
+ else
+ fun_l28_n269(x)
+ end
+end
+
+def fun_l27_n257(x)
+ if (x < 1)
+ fun_l28_n454(x)
+ else
+ fun_l28_n485(x)
+ end
+end
+
+def fun_l27_n258(x)
+ if (x < 1)
+ fun_l28_n994(x)
+ else
+ fun_l28_n83(x)
+ end
+end
+
+def fun_l27_n259(x)
+ if (x < 1)
+ fun_l28_n41(x)
+ else
+ fun_l28_n495(x)
+ end
+end
+
+def fun_l27_n260(x)
+ if (x < 1)
+ fun_l28_n75(x)
+ else
+ fun_l28_n508(x)
+ end
+end
+
+def fun_l27_n261(x)
+ if (x < 1)
+ fun_l28_n684(x)
+ else
+ fun_l28_n524(x)
+ end
+end
+
+def fun_l27_n262(x)
+ if (x < 1)
+ fun_l28_n78(x)
+ else
+ fun_l28_n563(x)
+ end
+end
+
+def fun_l27_n263(x)
+ if (x < 1)
+ fun_l28_n227(x)
+ else
+ fun_l28_n359(x)
+ end
+end
+
+def fun_l27_n264(x)
+ if (x < 1)
+ fun_l28_n679(x)
+ else
+ fun_l28_n711(x)
+ end
+end
+
+def fun_l27_n265(x)
+ if (x < 1)
+ fun_l28_n0(x)
+ else
+ fun_l28_n720(x)
+ end
+end
+
+def fun_l27_n266(x)
+ if (x < 1)
+ fun_l28_n384(x)
+ else
+ fun_l28_n915(x)
+ end
+end
+
+def fun_l27_n267(x)
+ if (x < 1)
+ fun_l28_n912(x)
+ else
+ fun_l28_n24(x)
+ end
+end
+
+def fun_l27_n268(x)
+ if (x < 1)
+ fun_l28_n337(x)
+ else
+ fun_l28_n880(x)
+ end
+end
+
+def fun_l27_n269(x)
+ if (x < 1)
+ fun_l28_n84(x)
+ else
+ fun_l28_n387(x)
+ end
+end
+
+def fun_l27_n270(x)
+ if (x < 1)
+ fun_l28_n155(x)
+ else
+ fun_l28_n705(x)
+ end
+end
+
+def fun_l27_n271(x)
+ if (x < 1)
+ fun_l28_n159(x)
+ else
+ fun_l28_n815(x)
+ end
+end
+
+def fun_l27_n272(x)
+ if (x < 1)
+ fun_l28_n182(x)
+ else
+ fun_l28_n210(x)
+ end
+end
+
+def fun_l27_n273(x)
+ if (x < 1)
+ fun_l28_n446(x)
+ else
+ fun_l28_n524(x)
+ end
+end
+
+def fun_l27_n274(x)
+ if (x < 1)
+ fun_l28_n828(x)
+ else
+ fun_l28_n14(x)
+ end
+end
+
+def fun_l27_n275(x)
+ if (x < 1)
+ fun_l28_n176(x)
+ else
+ fun_l28_n857(x)
+ end
+end
+
+def fun_l27_n276(x)
+ if (x < 1)
+ fun_l28_n39(x)
+ else
+ fun_l28_n973(x)
+ end
+end
+
+def fun_l27_n277(x)
+ if (x < 1)
+ fun_l28_n310(x)
+ else
+ fun_l28_n900(x)
+ end
+end
+
+def fun_l27_n278(x)
+ if (x < 1)
+ fun_l28_n729(x)
+ else
+ fun_l28_n544(x)
+ end
+end
+
+def fun_l27_n279(x)
+ if (x < 1)
+ fun_l28_n111(x)
+ else
+ fun_l28_n939(x)
+ end
+end
+
+def fun_l27_n280(x)
+ if (x < 1)
+ fun_l28_n102(x)
+ else
+ fun_l28_n658(x)
+ end
+end
+
+def fun_l27_n281(x)
+ if (x < 1)
+ fun_l28_n186(x)
+ else
+ fun_l28_n939(x)
+ end
+end
+
+def fun_l27_n282(x)
+ if (x < 1)
+ fun_l28_n276(x)
+ else
+ fun_l28_n428(x)
+ end
+end
+
+def fun_l27_n283(x)
+ if (x < 1)
+ fun_l28_n137(x)
+ else
+ fun_l28_n876(x)
+ end
+end
+
+def fun_l27_n284(x)
+ if (x < 1)
+ fun_l28_n31(x)
+ else
+ fun_l28_n351(x)
+ end
+end
+
+def fun_l27_n285(x)
+ if (x < 1)
+ fun_l28_n143(x)
+ else
+ fun_l28_n192(x)
+ end
+end
+
+def fun_l27_n286(x)
+ if (x < 1)
+ fun_l28_n63(x)
+ else
+ fun_l28_n764(x)
+ end
+end
+
+def fun_l27_n287(x)
+ if (x < 1)
+ fun_l28_n361(x)
+ else
+ fun_l28_n512(x)
+ end
+end
+
+def fun_l27_n288(x)
+ if (x < 1)
+ fun_l28_n817(x)
+ else
+ fun_l28_n997(x)
+ end
+end
+
+def fun_l27_n289(x)
+ if (x < 1)
+ fun_l28_n837(x)
+ else
+ fun_l28_n834(x)
+ end
+end
+
+def fun_l27_n290(x)
+ if (x < 1)
+ fun_l28_n436(x)
+ else
+ fun_l28_n873(x)
+ end
+end
+
+def fun_l27_n291(x)
+ if (x < 1)
+ fun_l28_n412(x)
+ else
+ fun_l28_n494(x)
+ end
+end
+
+def fun_l27_n292(x)
+ if (x < 1)
+ fun_l28_n794(x)
+ else
+ fun_l28_n972(x)
+ end
+end
+
+def fun_l27_n293(x)
+ if (x < 1)
+ fun_l28_n486(x)
+ else
+ fun_l28_n401(x)
+ end
+end
+
+def fun_l27_n294(x)
+ if (x < 1)
+ fun_l28_n171(x)
+ else
+ fun_l28_n334(x)
+ end
+end
+
+def fun_l27_n295(x)
+ if (x < 1)
+ fun_l28_n681(x)
+ else
+ fun_l28_n753(x)
+ end
+end
+
+def fun_l27_n296(x)
+ if (x < 1)
+ fun_l28_n541(x)
+ else
+ fun_l28_n855(x)
+ end
+end
+
+def fun_l27_n297(x)
+ if (x < 1)
+ fun_l28_n270(x)
+ else
+ fun_l28_n257(x)
+ end
+end
+
+def fun_l27_n298(x)
+ if (x < 1)
+ fun_l28_n923(x)
+ else
+ fun_l28_n997(x)
+ end
+end
+
+def fun_l27_n299(x)
+ if (x < 1)
+ fun_l28_n508(x)
+ else
+ fun_l28_n649(x)
+ end
+end
+
+def fun_l27_n300(x)
+ if (x < 1)
+ fun_l28_n351(x)
+ else
+ fun_l28_n966(x)
+ end
+end
+
+def fun_l27_n301(x)
+ if (x < 1)
+ fun_l28_n622(x)
+ else
+ fun_l28_n436(x)
+ end
+end
+
+def fun_l27_n302(x)
+ if (x < 1)
+ fun_l28_n723(x)
+ else
+ fun_l28_n261(x)
+ end
+end
+
+def fun_l27_n303(x)
+ if (x < 1)
+ fun_l28_n269(x)
+ else
+ fun_l28_n483(x)
+ end
+end
+
+def fun_l27_n304(x)
+ if (x < 1)
+ fun_l28_n449(x)
+ else
+ fun_l28_n5(x)
+ end
+end
+
+def fun_l27_n305(x)
+ if (x < 1)
+ fun_l28_n967(x)
+ else
+ fun_l28_n967(x)
+ end
+end
+
+def fun_l27_n306(x)
+ if (x < 1)
+ fun_l28_n866(x)
+ else
+ fun_l28_n590(x)
+ end
+end
+
+def fun_l27_n307(x)
+ if (x < 1)
+ fun_l28_n145(x)
+ else
+ fun_l28_n75(x)
+ end
+end
+
+def fun_l27_n308(x)
+ if (x < 1)
+ fun_l28_n329(x)
+ else
+ fun_l28_n834(x)
+ end
+end
+
+def fun_l27_n309(x)
+ if (x < 1)
+ fun_l28_n668(x)
+ else
+ fun_l28_n909(x)
+ end
+end
+
+def fun_l27_n310(x)
+ if (x < 1)
+ fun_l28_n70(x)
+ else
+ fun_l28_n311(x)
+ end
+end
+
+def fun_l27_n311(x)
+ if (x < 1)
+ fun_l28_n669(x)
+ else
+ fun_l28_n90(x)
+ end
+end
+
+def fun_l27_n312(x)
+ if (x < 1)
+ fun_l28_n805(x)
+ else
+ fun_l28_n558(x)
+ end
+end
+
+def fun_l27_n313(x)
+ if (x < 1)
+ fun_l28_n493(x)
+ else
+ fun_l28_n642(x)
+ end
+end
+
+def fun_l27_n314(x)
+ if (x < 1)
+ fun_l28_n285(x)
+ else
+ fun_l28_n968(x)
+ end
+end
+
+def fun_l27_n315(x)
+ if (x < 1)
+ fun_l28_n806(x)
+ else
+ fun_l28_n731(x)
+ end
+end
+
+def fun_l27_n316(x)
+ if (x < 1)
+ fun_l28_n284(x)
+ else
+ fun_l28_n441(x)
+ end
+end
+
+def fun_l27_n317(x)
+ if (x < 1)
+ fun_l28_n644(x)
+ else
+ fun_l28_n16(x)
+ end
+end
+
+def fun_l27_n318(x)
+ if (x < 1)
+ fun_l28_n411(x)
+ else
+ fun_l28_n739(x)
+ end
+end
+
+def fun_l27_n319(x)
+ if (x < 1)
+ fun_l28_n462(x)
+ else
+ fun_l28_n680(x)
+ end
+end
+
+def fun_l27_n320(x)
+ if (x < 1)
+ fun_l28_n126(x)
+ else
+ fun_l28_n558(x)
+ end
+end
+
+def fun_l27_n321(x)
+ if (x < 1)
+ fun_l28_n869(x)
+ else
+ fun_l28_n581(x)
+ end
+end
+
+def fun_l27_n322(x)
+ if (x < 1)
+ fun_l28_n25(x)
+ else
+ fun_l28_n352(x)
+ end
+end
+
+def fun_l27_n323(x)
+ if (x < 1)
+ fun_l28_n203(x)
+ else
+ fun_l28_n776(x)
+ end
+end
+
+def fun_l27_n324(x)
+ if (x < 1)
+ fun_l28_n6(x)
+ else
+ fun_l28_n833(x)
+ end
+end
+
+def fun_l27_n325(x)
+ if (x < 1)
+ fun_l28_n817(x)
+ else
+ fun_l28_n258(x)
+ end
+end
+
+def fun_l27_n326(x)
+ if (x < 1)
+ fun_l28_n607(x)
+ else
+ fun_l28_n813(x)
+ end
+end
+
+def fun_l27_n327(x)
+ if (x < 1)
+ fun_l28_n761(x)
+ else
+ fun_l28_n893(x)
+ end
+end
+
+def fun_l27_n328(x)
+ if (x < 1)
+ fun_l28_n861(x)
+ else
+ fun_l28_n879(x)
+ end
+end
+
+def fun_l27_n329(x)
+ if (x < 1)
+ fun_l28_n682(x)
+ else
+ fun_l28_n680(x)
+ end
+end
+
+def fun_l27_n330(x)
+ if (x < 1)
+ fun_l28_n61(x)
+ else
+ fun_l28_n481(x)
+ end
+end
+
+def fun_l27_n331(x)
+ if (x < 1)
+ fun_l28_n738(x)
+ else
+ fun_l28_n230(x)
+ end
+end
+
+def fun_l27_n332(x)
+ if (x < 1)
+ fun_l28_n45(x)
+ else
+ fun_l28_n279(x)
+ end
+end
+
+def fun_l27_n333(x)
+ if (x < 1)
+ fun_l28_n24(x)
+ else
+ fun_l28_n561(x)
+ end
+end
+
+def fun_l27_n334(x)
+ if (x < 1)
+ fun_l28_n459(x)
+ else
+ fun_l28_n594(x)
+ end
+end
+
+def fun_l27_n335(x)
+ if (x < 1)
+ fun_l28_n695(x)
+ else
+ fun_l28_n513(x)
+ end
+end
+
+def fun_l27_n336(x)
+ if (x < 1)
+ fun_l28_n729(x)
+ else
+ fun_l28_n89(x)
+ end
+end
+
+def fun_l27_n337(x)
+ if (x < 1)
+ fun_l28_n509(x)
+ else
+ fun_l28_n574(x)
+ end
+end
+
+def fun_l27_n338(x)
+ if (x < 1)
+ fun_l28_n80(x)
+ else
+ fun_l28_n448(x)
+ end
+end
+
+def fun_l27_n339(x)
+ if (x < 1)
+ fun_l28_n279(x)
+ else
+ fun_l28_n177(x)
+ end
+end
+
+def fun_l27_n340(x)
+ if (x < 1)
+ fun_l28_n508(x)
+ else
+ fun_l28_n706(x)
+ end
+end
+
+def fun_l27_n341(x)
+ if (x < 1)
+ fun_l28_n790(x)
+ else
+ fun_l28_n774(x)
+ end
+end
+
+def fun_l27_n342(x)
+ if (x < 1)
+ fun_l28_n606(x)
+ else
+ fun_l28_n642(x)
+ end
+end
+
+def fun_l27_n343(x)
+ if (x < 1)
+ fun_l28_n108(x)
+ else
+ fun_l28_n539(x)
+ end
+end
+
+def fun_l27_n344(x)
+ if (x < 1)
+ fun_l28_n418(x)
+ else
+ fun_l28_n687(x)
+ end
+end
+
+def fun_l27_n345(x)
+ if (x < 1)
+ fun_l28_n386(x)
+ else
+ fun_l28_n170(x)
+ end
+end
+
+def fun_l27_n346(x)
+ if (x < 1)
+ fun_l28_n648(x)
+ else
+ fun_l28_n340(x)
+ end
+end
+
+def fun_l27_n347(x)
+ if (x < 1)
+ fun_l28_n516(x)
+ else
+ fun_l28_n586(x)
+ end
+end
+
+def fun_l27_n348(x)
+ if (x < 1)
+ fun_l28_n646(x)
+ else
+ fun_l28_n448(x)
+ end
+end
+
+def fun_l27_n349(x)
+ if (x < 1)
+ fun_l28_n378(x)
+ else
+ fun_l28_n413(x)
+ end
+end
+
+def fun_l27_n350(x)
+ if (x < 1)
+ fun_l28_n885(x)
+ else
+ fun_l28_n932(x)
+ end
+end
+
+def fun_l27_n351(x)
+ if (x < 1)
+ fun_l28_n9(x)
+ else
+ fun_l28_n843(x)
+ end
+end
+
+def fun_l27_n352(x)
+ if (x < 1)
+ fun_l28_n502(x)
+ else
+ fun_l28_n229(x)
+ end
+end
+
+def fun_l27_n353(x)
+ if (x < 1)
+ fun_l28_n752(x)
+ else
+ fun_l28_n677(x)
+ end
+end
+
+def fun_l27_n354(x)
+ if (x < 1)
+ fun_l28_n246(x)
+ else
+ fun_l28_n32(x)
+ end
+end
+
+def fun_l27_n355(x)
+ if (x < 1)
+ fun_l28_n969(x)
+ else
+ fun_l28_n933(x)
+ end
+end
+
+def fun_l27_n356(x)
+ if (x < 1)
+ fun_l28_n44(x)
+ else
+ fun_l28_n704(x)
+ end
+end
+
+def fun_l27_n357(x)
+ if (x < 1)
+ fun_l28_n863(x)
+ else
+ fun_l28_n324(x)
+ end
+end
+
+def fun_l27_n358(x)
+ if (x < 1)
+ fun_l28_n467(x)
+ else
+ fun_l28_n418(x)
+ end
+end
+
+def fun_l27_n359(x)
+ if (x < 1)
+ fun_l28_n222(x)
+ else
+ fun_l28_n138(x)
+ end
+end
+
+def fun_l27_n360(x)
+ if (x < 1)
+ fun_l28_n261(x)
+ else
+ fun_l28_n605(x)
+ end
+end
+
+def fun_l27_n361(x)
+ if (x < 1)
+ fun_l28_n470(x)
+ else
+ fun_l28_n519(x)
+ end
+end
+
+def fun_l27_n362(x)
+ if (x < 1)
+ fun_l28_n717(x)
+ else
+ fun_l28_n817(x)
+ end
+end
+
+def fun_l27_n363(x)
+ if (x < 1)
+ fun_l28_n591(x)
+ else
+ fun_l28_n537(x)
+ end
+end
+
+def fun_l27_n364(x)
+ if (x < 1)
+ fun_l28_n733(x)
+ else
+ fun_l28_n222(x)
+ end
+end
+
+def fun_l27_n365(x)
+ if (x < 1)
+ fun_l28_n137(x)
+ else
+ fun_l28_n225(x)
+ end
+end
+
+def fun_l27_n366(x)
+ if (x < 1)
+ fun_l28_n610(x)
+ else
+ fun_l28_n870(x)
+ end
+end
+
+def fun_l27_n367(x)
+ if (x < 1)
+ fun_l28_n697(x)
+ else
+ fun_l28_n866(x)
+ end
+end
+
+def fun_l27_n368(x)
+ if (x < 1)
+ fun_l28_n902(x)
+ else
+ fun_l28_n827(x)
+ end
+end
+
+def fun_l27_n369(x)
+ if (x < 1)
+ fun_l28_n769(x)
+ else
+ fun_l28_n238(x)
+ end
+end
+
+def fun_l27_n370(x)
+ if (x < 1)
+ fun_l28_n66(x)
+ else
+ fun_l28_n958(x)
+ end
+end
+
+def fun_l27_n371(x)
+ if (x < 1)
+ fun_l28_n847(x)
+ else
+ fun_l28_n177(x)
+ end
+end
+
+def fun_l27_n372(x)
+ if (x < 1)
+ fun_l28_n64(x)
+ else
+ fun_l28_n198(x)
+ end
+end
+
+def fun_l27_n373(x)
+ if (x < 1)
+ fun_l28_n36(x)
+ else
+ fun_l28_n282(x)
+ end
+end
+
+def fun_l27_n374(x)
+ if (x < 1)
+ fun_l28_n647(x)
+ else
+ fun_l28_n228(x)
+ end
+end
+
+def fun_l27_n375(x)
+ if (x < 1)
+ fun_l28_n737(x)
+ else
+ fun_l28_n689(x)
+ end
+end
+
+def fun_l27_n376(x)
+ if (x < 1)
+ fun_l28_n336(x)
+ else
+ fun_l28_n20(x)
+ end
+end
+
+def fun_l27_n377(x)
+ if (x < 1)
+ fun_l28_n859(x)
+ else
+ fun_l28_n661(x)
+ end
+end
+
+def fun_l27_n378(x)
+ if (x < 1)
+ fun_l28_n148(x)
+ else
+ fun_l28_n197(x)
+ end
+end
+
+def fun_l27_n379(x)
+ if (x < 1)
+ fun_l28_n986(x)
+ else
+ fun_l28_n441(x)
+ end
+end
+
+def fun_l27_n380(x)
+ if (x < 1)
+ fun_l28_n966(x)
+ else
+ fun_l28_n994(x)
+ end
+end
+
+def fun_l27_n381(x)
+ if (x < 1)
+ fun_l28_n546(x)
+ else
+ fun_l28_n687(x)
+ end
+end
+
+def fun_l27_n382(x)
+ if (x < 1)
+ fun_l28_n63(x)
+ else
+ fun_l28_n366(x)
+ end
+end
+
+def fun_l27_n383(x)
+ if (x < 1)
+ fun_l28_n146(x)
+ else
+ fun_l28_n96(x)
+ end
+end
+
+def fun_l27_n384(x)
+ if (x < 1)
+ fun_l28_n747(x)
+ else
+ fun_l28_n168(x)
+ end
+end
+
+def fun_l27_n385(x)
+ if (x < 1)
+ fun_l28_n556(x)
+ else
+ fun_l28_n194(x)
+ end
+end
+
+def fun_l27_n386(x)
+ if (x < 1)
+ fun_l28_n180(x)
+ else
+ fun_l28_n648(x)
+ end
+end
+
+def fun_l27_n387(x)
+ if (x < 1)
+ fun_l28_n898(x)
+ else
+ fun_l28_n499(x)
+ end
+end
+
+def fun_l27_n388(x)
+ if (x < 1)
+ fun_l28_n720(x)
+ else
+ fun_l28_n996(x)
+ end
+end
+
+def fun_l27_n389(x)
+ if (x < 1)
+ fun_l28_n743(x)
+ else
+ fun_l28_n781(x)
+ end
+end
+
+def fun_l27_n390(x)
+ if (x < 1)
+ fun_l28_n372(x)
+ else
+ fun_l28_n907(x)
+ end
+end
+
+def fun_l27_n391(x)
+ if (x < 1)
+ fun_l28_n893(x)
+ else
+ fun_l28_n911(x)
+ end
+end
+
+def fun_l27_n392(x)
+ if (x < 1)
+ fun_l28_n304(x)
+ else
+ fun_l28_n164(x)
+ end
+end
+
+def fun_l27_n393(x)
+ if (x < 1)
+ fun_l28_n212(x)
+ else
+ fun_l28_n575(x)
+ end
+end
+
+def fun_l27_n394(x)
+ if (x < 1)
+ fun_l28_n279(x)
+ else
+ fun_l28_n306(x)
+ end
+end
+
+def fun_l27_n395(x)
+ if (x < 1)
+ fun_l28_n662(x)
+ else
+ fun_l28_n838(x)
+ end
+end
+
+def fun_l27_n396(x)
+ if (x < 1)
+ fun_l28_n882(x)
+ else
+ fun_l28_n321(x)
+ end
+end
+
+def fun_l27_n397(x)
+ if (x < 1)
+ fun_l28_n996(x)
+ else
+ fun_l28_n170(x)
+ end
+end
+
+def fun_l27_n398(x)
+ if (x < 1)
+ fun_l28_n309(x)
+ else
+ fun_l28_n805(x)
+ end
+end
+
+def fun_l27_n399(x)
+ if (x < 1)
+ fun_l28_n584(x)
+ else
+ fun_l28_n304(x)
+ end
+end
+
+def fun_l27_n400(x)
+ if (x < 1)
+ fun_l28_n575(x)
+ else
+ fun_l28_n405(x)
+ end
+end
+
+def fun_l27_n401(x)
+ if (x < 1)
+ fun_l28_n507(x)
+ else
+ fun_l28_n773(x)
+ end
+end
+
+def fun_l27_n402(x)
+ if (x < 1)
+ fun_l28_n759(x)
+ else
+ fun_l28_n583(x)
+ end
+end
+
+def fun_l27_n403(x)
+ if (x < 1)
+ fun_l28_n689(x)
+ else
+ fun_l28_n511(x)
+ end
+end
+
+def fun_l27_n404(x)
+ if (x < 1)
+ fun_l28_n706(x)
+ else
+ fun_l28_n258(x)
+ end
+end
+
+def fun_l27_n405(x)
+ if (x < 1)
+ fun_l28_n736(x)
+ else
+ fun_l28_n482(x)
+ end
+end
+
+def fun_l27_n406(x)
+ if (x < 1)
+ fun_l28_n851(x)
+ else
+ fun_l28_n898(x)
+ end
+end
+
+def fun_l27_n407(x)
+ if (x < 1)
+ fun_l28_n86(x)
+ else
+ fun_l28_n913(x)
+ end
+end
+
+def fun_l27_n408(x)
+ if (x < 1)
+ fun_l28_n277(x)
+ else
+ fun_l28_n960(x)
+ end
+end
+
+def fun_l27_n409(x)
+ if (x < 1)
+ fun_l28_n137(x)
+ else
+ fun_l28_n789(x)
+ end
+end
+
+def fun_l27_n410(x)
+ if (x < 1)
+ fun_l28_n23(x)
+ else
+ fun_l28_n633(x)
+ end
+end
+
+def fun_l27_n411(x)
+ if (x < 1)
+ fun_l28_n246(x)
+ else
+ fun_l28_n560(x)
+ end
+end
+
+def fun_l27_n412(x)
+ if (x < 1)
+ fun_l28_n218(x)
+ else
+ fun_l28_n66(x)
+ end
+end
+
+def fun_l27_n413(x)
+ if (x < 1)
+ fun_l28_n680(x)
+ else
+ fun_l28_n9(x)
+ end
+end
+
+def fun_l27_n414(x)
+ if (x < 1)
+ fun_l28_n693(x)
+ else
+ fun_l28_n625(x)
+ end
+end
+
+def fun_l27_n415(x)
+ if (x < 1)
+ fun_l28_n560(x)
+ else
+ fun_l28_n739(x)
+ end
+end
+
+def fun_l27_n416(x)
+ if (x < 1)
+ fun_l28_n467(x)
+ else
+ fun_l28_n542(x)
+ end
+end
+
+def fun_l27_n417(x)
+ if (x < 1)
+ fun_l28_n364(x)
+ else
+ fun_l28_n468(x)
+ end
+end
+
+def fun_l27_n418(x)
+ if (x < 1)
+ fun_l28_n123(x)
+ else
+ fun_l28_n775(x)
+ end
+end
+
+def fun_l27_n419(x)
+ if (x < 1)
+ fun_l28_n17(x)
+ else
+ fun_l28_n875(x)
+ end
+end
+
+def fun_l27_n420(x)
+ if (x < 1)
+ fun_l28_n596(x)
+ else
+ fun_l28_n163(x)
+ end
+end
+
+def fun_l27_n421(x)
+ if (x < 1)
+ fun_l28_n638(x)
+ else
+ fun_l28_n426(x)
+ end
+end
+
+def fun_l27_n422(x)
+ if (x < 1)
+ fun_l28_n637(x)
+ else
+ fun_l28_n696(x)
+ end
+end
+
+def fun_l27_n423(x)
+ if (x < 1)
+ fun_l28_n299(x)
+ else
+ fun_l28_n218(x)
+ end
+end
+
+def fun_l27_n424(x)
+ if (x < 1)
+ fun_l28_n683(x)
+ else
+ fun_l28_n248(x)
+ end
+end
+
+def fun_l27_n425(x)
+ if (x < 1)
+ fun_l28_n272(x)
+ else
+ fun_l28_n359(x)
+ end
+end
+
+def fun_l27_n426(x)
+ if (x < 1)
+ fun_l28_n327(x)
+ else
+ fun_l28_n984(x)
+ end
+end
+
+def fun_l27_n427(x)
+ if (x < 1)
+ fun_l28_n912(x)
+ else
+ fun_l28_n393(x)
+ end
+end
+
+def fun_l27_n428(x)
+ if (x < 1)
+ fun_l28_n842(x)
+ else
+ fun_l28_n919(x)
+ end
+end
+
+def fun_l27_n429(x)
+ if (x < 1)
+ fun_l28_n721(x)
+ else
+ fun_l28_n36(x)
+ end
+end
+
+def fun_l27_n430(x)
+ if (x < 1)
+ fun_l28_n16(x)
+ else
+ fun_l28_n418(x)
+ end
+end
+
+def fun_l27_n431(x)
+ if (x < 1)
+ fun_l28_n747(x)
+ else
+ fun_l28_n132(x)
+ end
+end
+
+def fun_l27_n432(x)
+ if (x < 1)
+ fun_l28_n906(x)
+ else
+ fun_l28_n718(x)
+ end
+end
+
+def fun_l27_n433(x)
+ if (x < 1)
+ fun_l28_n508(x)
+ else
+ fun_l28_n862(x)
+ end
+end
+
+def fun_l27_n434(x)
+ if (x < 1)
+ fun_l28_n478(x)
+ else
+ fun_l28_n542(x)
+ end
+end
+
+def fun_l27_n435(x)
+ if (x < 1)
+ fun_l28_n186(x)
+ else
+ fun_l28_n976(x)
+ end
+end
+
+def fun_l27_n436(x)
+ if (x < 1)
+ fun_l28_n637(x)
+ else
+ fun_l28_n49(x)
+ end
+end
+
+def fun_l27_n437(x)
+ if (x < 1)
+ fun_l28_n242(x)
+ else
+ fun_l28_n774(x)
+ end
+end
+
+def fun_l27_n438(x)
+ if (x < 1)
+ fun_l28_n303(x)
+ else
+ fun_l28_n175(x)
+ end
+end
+
+def fun_l27_n439(x)
+ if (x < 1)
+ fun_l28_n851(x)
+ else
+ fun_l28_n908(x)
+ end
+end
+
+def fun_l27_n440(x)
+ if (x < 1)
+ fun_l28_n139(x)
+ else
+ fun_l28_n473(x)
+ end
+end
+
+def fun_l27_n441(x)
+ if (x < 1)
+ fun_l28_n70(x)
+ else
+ fun_l28_n406(x)
+ end
+end
+
+def fun_l27_n442(x)
+ if (x < 1)
+ fun_l28_n368(x)
+ else
+ fun_l28_n624(x)
+ end
+end
+
+def fun_l27_n443(x)
+ if (x < 1)
+ fun_l28_n900(x)
+ else
+ fun_l28_n173(x)
+ end
+end
+
+def fun_l27_n444(x)
+ if (x < 1)
+ fun_l28_n646(x)
+ else
+ fun_l28_n733(x)
+ end
+end
+
+def fun_l27_n445(x)
+ if (x < 1)
+ fun_l28_n859(x)
+ else
+ fun_l28_n100(x)
+ end
+end
+
+def fun_l27_n446(x)
+ if (x < 1)
+ fun_l28_n418(x)
+ else
+ fun_l28_n765(x)
+ end
+end
+
+def fun_l27_n447(x)
+ if (x < 1)
+ fun_l28_n204(x)
+ else
+ fun_l28_n541(x)
+ end
+end
+
+def fun_l27_n448(x)
+ if (x < 1)
+ fun_l28_n192(x)
+ else
+ fun_l28_n414(x)
+ end
+end
+
+def fun_l27_n449(x)
+ if (x < 1)
+ fun_l28_n904(x)
+ else
+ fun_l28_n247(x)
+ end
+end
+
+def fun_l27_n450(x)
+ if (x < 1)
+ fun_l28_n528(x)
+ else
+ fun_l28_n24(x)
+ end
+end
+
+def fun_l27_n451(x)
+ if (x < 1)
+ fun_l28_n312(x)
+ else
+ fun_l28_n48(x)
+ end
+end
+
+def fun_l27_n452(x)
+ if (x < 1)
+ fun_l28_n169(x)
+ else
+ fun_l28_n37(x)
+ end
+end
+
+def fun_l27_n453(x)
+ if (x < 1)
+ fun_l28_n713(x)
+ else
+ fun_l28_n168(x)
+ end
+end
+
+def fun_l27_n454(x)
+ if (x < 1)
+ fun_l28_n748(x)
+ else
+ fun_l28_n213(x)
+ end
+end
+
+def fun_l27_n455(x)
+ if (x < 1)
+ fun_l28_n157(x)
+ else
+ fun_l28_n444(x)
+ end
+end
+
+def fun_l27_n456(x)
+ if (x < 1)
+ fun_l28_n32(x)
+ else
+ fun_l28_n475(x)
+ end
+end
+
+def fun_l27_n457(x)
+ if (x < 1)
+ fun_l28_n252(x)
+ else
+ fun_l28_n730(x)
+ end
+end
+
+def fun_l27_n458(x)
+ if (x < 1)
+ fun_l28_n261(x)
+ else
+ fun_l28_n576(x)
+ end
+end
+
+def fun_l27_n459(x)
+ if (x < 1)
+ fun_l28_n859(x)
+ else
+ fun_l28_n401(x)
+ end
+end
+
+def fun_l27_n460(x)
+ if (x < 1)
+ fun_l28_n394(x)
+ else
+ fun_l28_n10(x)
+ end
+end
+
+def fun_l27_n461(x)
+ if (x < 1)
+ fun_l28_n89(x)
+ else
+ fun_l28_n402(x)
+ end
+end
+
+def fun_l27_n462(x)
+ if (x < 1)
+ fun_l28_n100(x)
+ else
+ fun_l28_n207(x)
+ end
+end
+
+def fun_l27_n463(x)
+ if (x < 1)
+ fun_l28_n907(x)
+ else
+ fun_l28_n354(x)
+ end
+end
+
+def fun_l27_n464(x)
+ if (x < 1)
+ fun_l28_n612(x)
+ else
+ fun_l28_n31(x)
+ end
+end
+
+def fun_l27_n465(x)
+ if (x < 1)
+ fun_l28_n622(x)
+ else
+ fun_l28_n342(x)
+ end
+end
+
+def fun_l27_n466(x)
+ if (x < 1)
+ fun_l28_n373(x)
+ else
+ fun_l28_n831(x)
+ end
+end
+
+def fun_l27_n467(x)
+ if (x < 1)
+ fun_l28_n858(x)
+ else
+ fun_l28_n233(x)
+ end
+end
+
+def fun_l27_n468(x)
+ if (x < 1)
+ fun_l28_n104(x)
+ else
+ fun_l28_n918(x)
+ end
+end
+
+def fun_l27_n469(x)
+ if (x < 1)
+ fun_l28_n778(x)
+ else
+ fun_l28_n758(x)
+ end
+end
+
+def fun_l27_n470(x)
+ if (x < 1)
+ fun_l28_n695(x)
+ else
+ fun_l28_n217(x)
+ end
+end
+
+def fun_l27_n471(x)
+ if (x < 1)
+ fun_l28_n781(x)
+ else
+ fun_l28_n584(x)
+ end
+end
+
+def fun_l27_n472(x)
+ if (x < 1)
+ fun_l28_n883(x)
+ else
+ fun_l28_n152(x)
+ end
+end
+
+def fun_l27_n473(x)
+ if (x < 1)
+ fun_l28_n525(x)
+ else
+ fun_l28_n369(x)
+ end
+end
+
+def fun_l27_n474(x)
+ if (x < 1)
+ fun_l28_n42(x)
+ else
+ fun_l28_n299(x)
+ end
+end
+
+def fun_l27_n475(x)
+ if (x < 1)
+ fun_l28_n174(x)
+ else
+ fun_l28_n664(x)
+ end
+end
+
+def fun_l27_n476(x)
+ if (x < 1)
+ fun_l28_n489(x)
+ else
+ fun_l28_n296(x)
+ end
+end
+
+def fun_l27_n477(x)
+ if (x < 1)
+ fun_l28_n725(x)
+ else
+ fun_l28_n384(x)
+ end
+end
+
+def fun_l27_n478(x)
+ if (x < 1)
+ fun_l28_n138(x)
+ else
+ fun_l28_n812(x)
+ end
+end
+
+def fun_l27_n479(x)
+ if (x < 1)
+ fun_l28_n161(x)
+ else
+ fun_l28_n786(x)
+ end
+end
+
+def fun_l27_n480(x)
+ if (x < 1)
+ fun_l28_n751(x)
+ else
+ fun_l28_n91(x)
+ end
+end
+
+def fun_l27_n481(x)
+ if (x < 1)
+ fun_l28_n434(x)
+ else
+ fun_l28_n507(x)
+ end
+end
+
+def fun_l27_n482(x)
+ if (x < 1)
+ fun_l28_n101(x)
+ else
+ fun_l28_n809(x)
+ end
+end
+
+def fun_l27_n483(x)
+ if (x < 1)
+ fun_l28_n79(x)
+ else
+ fun_l28_n565(x)
+ end
+end
+
+def fun_l27_n484(x)
+ if (x < 1)
+ fun_l28_n681(x)
+ else
+ fun_l28_n390(x)
+ end
+end
+
+def fun_l27_n485(x)
+ if (x < 1)
+ fun_l28_n950(x)
+ else
+ fun_l28_n262(x)
+ end
+end
+
+def fun_l27_n486(x)
+ if (x < 1)
+ fun_l28_n188(x)
+ else
+ fun_l28_n731(x)
+ end
+end
+
+def fun_l27_n487(x)
+ if (x < 1)
+ fun_l28_n724(x)
+ else
+ fun_l28_n806(x)
+ end
+end
+
+def fun_l27_n488(x)
+ if (x < 1)
+ fun_l28_n680(x)
+ else
+ fun_l28_n475(x)
+ end
+end
+
+def fun_l27_n489(x)
+ if (x < 1)
+ fun_l28_n662(x)
+ else
+ fun_l28_n242(x)
+ end
+end
+
+def fun_l27_n490(x)
+ if (x < 1)
+ fun_l28_n578(x)
+ else
+ fun_l28_n534(x)
+ end
+end
+
+def fun_l27_n491(x)
+ if (x < 1)
+ fun_l28_n173(x)
+ else
+ fun_l28_n239(x)
+ end
+end
+
+def fun_l27_n492(x)
+ if (x < 1)
+ fun_l28_n724(x)
+ else
+ fun_l28_n579(x)
+ end
+end
+
+def fun_l27_n493(x)
+ if (x < 1)
+ fun_l28_n449(x)
+ else
+ fun_l28_n44(x)
+ end
+end
+
+def fun_l27_n494(x)
+ if (x < 1)
+ fun_l28_n180(x)
+ else
+ fun_l28_n836(x)
+ end
+end
+
+def fun_l27_n495(x)
+ if (x < 1)
+ fun_l28_n232(x)
+ else
+ fun_l28_n371(x)
+ end
+end
+
+def fun_l27_n496(x)
+ if (x < 1)
+ fun_l28_n558(x)
+ else
+ fun_l28_n904(x)
+ end
+end
+
+def fun_l27_n497(x)
+ if (x < 1)
+ fun_l28_n324(x)
+ else
+ fun_l28_n85(x)
+ end
+end
+
+def fun_l27_n498(x)
+ if (x < 1)
+ fun_l28_n272(x)
+ else
+ fun_l28_n469(x)
+ end
+end
+
+def fun_l27_n499(x)
+ if (x < 1)
+ fun_l28_n232(x)
+ else
+ fun_l28_n899(x)
+ end
+end
+
+def fun_l27_n500(x)
+ if (x < 1)
+ fun_l28_n654(x)
+ else
+ fun_l28_n390(x)
+ end
+end
+
+def fun_l27_n501(x)
+ if (x < 1)
+ fun_l28_n84(x)
+ else
+ fun_l28_n74(x)
+ end
+end
+
+def fun_l27_n502(x)
+ if (x < 1)
+ fun_l28_n799(x)
+ else
+ fun_l28_n224(x)
+ end
+end
+
+def fun_l27_n503(x)
+ if (x < 1)
+ fun_l28_n635(x)
+ else
+ fun_l28_n770(x)
+ end
+end
+
+def fun_l27_n504(x)
+ if (x < 1)
+ fun_l28_n734(x)
+ else
+ fun_l28_n451(x)
+ end
+end
+
+def fun_l27_n505(x)
+ if (x < 1)
+ fun_l28_n340(x)
+ else
+ fun_l28_n318(x)
+ end
+end
+
+def fun_l27_n506(x)
+ if (x < 1)
+ fun_l28_n521(x)
+ else
+ fun_l28_n590(x)
+ end
+end
+
+def fun_l27_n507(x)
+ if (x < 1)
+ fun_l28_n727(x)
+ else
+ fun_l28_n825(x)
+ end
+end
+
+def fun_l27_n508(x)
+ if (x < 1)
+ fun_l28_n923(x)
+ else
+ fun_l28_n413(x)
+ end
+end
+
+def fun_l27_n509(x)
+ if (x < 1)
+ fun_l28_n825(x)
+ else
+ fun_l28_n235(x)
+ end
+end
+
+def fun_l27_n510(x)
+ if (x < 1)
+ fun_l28_n212(x)
+ else
+ fun_l28_n509(x)
+ end
+end
+
+def fun_l27_n511(x)
+ if (x < 1)
+ fun_l28_n6(x)
+ else
+ fun_l28_n16(x)
+ end
+end
+
+def fun_l27_n512(x)
+ if (x < 1)
+ fun_l28_n409(x)
+ else
+ fun_l28_n473(x)
+ end
+end
+
+def fun_l27_n513(x)
+ if (x < 1)
+ fun_l28_n220(x)
+ else
+ fun_l28_n383(x)
+ end
+end
+
+def fun_l27_n514(x)
+ if (x < 1)
+ fun_l28_n338(x)
+ else
+ fun_l28_n32(x)
+ end
+end
+
+def fun_l27_n515(x)
+ if (x < 1)
+ fun_l28_n218(x)
+ else
+ fun_l28_n307(x)
+ end
+end
+
+def fun_l27_n516(x)
+ if (x < 1)
+ fun_l28_n591(x)
+ else
+ fun_l28_n545(x)
+ end
+end
+
+def fun_l27_n517(x)
+ if (x < 1)
+ fun_l28_n405(x)
+ else
+ fun_l28_n241(x)
+ end
+end
+
+def fun_l27_n518(x)
+ if (x < 1)
+ fun_l28_n545(x)
+ else
+ fun_l28_n215(x)
+ end
+end
+
+def fun_l27_n519(x)
+ if (x < 1)
+ fun_l28_n989(x)
+ else
+ fun_l28_n480(x)
+ end
+end
+
+def fun_l27_n520(x)
+ if (x < 1)
+ fun_l28_n479(x)
+ else
+ fun_l28_n869(x)
+ end
+end
+
+def fun_l27_n521(x)
+ if (x < 1)
+ fun_l28_n376(x)
+ else
+ fun_l28_n216(x)
+ end
+end
+
+def fun_l27_n522(x)
+ if (x < 1)
+ fun_l28_n74(x)
+ else
+ fun_l28_n370(x)
+ end
+end
+
+def fun_l27_n523(x)
+ if (x < 1)
+ fun_l28_n665(x)
+ else
+ fun_l28_n982(x)
+ end
+end
+
+def fun_l27_n524(x)
+ if (x < 1)
+ fun_l28_n412(x)
+ else
+ fun_l28_n515(x)
+ end
+end
+
+def fun_l27_n525(x)
+ if (x < 1)
+ fun_l28_n421(x)
+ else
+ fun_l28_n718(x)
+ end
+end
+
+def fun_l27_n526(x)
+ if (x < 1)
+ fun_l28_n914(x)
+ else
+ fun_l28_n297(x)
+ end
+end
+
+def fun_l27_n527(x)
+ if (x < 1)
+ fun_l28_n134(x)
+ else
+ fun_l28_n602(x)
+ end
+end
+
+def fun_l27_n528(x)
+ if (x < 1)
+ fun_l28_n0(x)
+ else
+ fun_l28_n23(x)
+ end
+end
+
+def fun_l27_n529(x)
+ if (x < 1)
+ fun_l28_n610(x)
+ else
+ fun_l28_n736(x)
+ end
+end
+
+def fun_l27_n530(x)
+ if (x < 1)
+ fun_l28_n350(x)
+ else
+ fun_l28_n51(x)
+ end
+end
+
+def fun_l27_n531(x)
+ if (x < 1)
+ fun_l28_n648(x)
+ else
+ fun_l28_n382(x)
+ end
+end
+
+def fun_l27_n532(x)
+ if (x < 1)
+ fun_l28_n432(x)
+ else
+ fun_l28_n872(x)
+ end
+end
+
+def fun_l27_n533(x)
+ if (x < 1)
+ fun_l28_n747(x)
+ else
+ fun_l28_n588(x)
+ end
+end
+
+def fun_l27_n534(x)
+ if (x < 1)
+ fun_l28_n763(x)
+ else
+ fun_l28_n846(x)
+ end
+end
+
+def fun_l27_n535(x)
+ if (x < 1)
+ fun_l28_n300(x)
+ else
+ fun_l28_n26(x)
+ end
+end
+
+def fun_l27_n536(x)
+ if (x < 1)
+ fun_l28_n851(x)
+ else
+ fun_l28_n907(x)
+ end
+end
+
+def fun_l27_n537(x)
+ if (x < 1)
+ fun_l28_n759(x)
+ else
+ fun_l28_n927(x)
+ end
+end
+
+def fun_l27_n538(x)
+ if (x < 1)
+ fun_l28_n188(x)
+ else
+ fun_l28_n199(x)
+ end
+end
+
+def fun_l27_n539(x)
+ if (x < 1)
+ fun_l28_n496(x)
+ else
+ fun_l28_n664(x)
+ end
+end
+
+def fun_l27_n540(x)
+ if (x < 1)
+ fun_l28_n595(x)
+ else
+ fun_l28_n651(x)
+ end
+end
+
+def fun_l27_n541(x)
+ if (x < 1)
+ fun_l28_n678(x)
+ else
+ fun_l28_n172(x)
+ end
+end
+
+def fun_l27_n542(x)
+ if (x < 1)
+ fun_l28_n37(x)
+ else
+ fun_l28_n255(x)
+ end
+end
+
+def fun_l27_n543(x)
+ if (x < 1)
+ fun_l28_n58(x)
+ else
+ fun_l28_n367(x)
+ end
+end
+
+def fun_l27_n544(x)
+ if (x < 1)
+ fun_l28_n275(x)
+ else
+ fun_l28_n925(x)
+ end
+end
+
+def fun_l27_n545(x)
+ if (x < 1)
+ fun_l28_n469(x)
+ else
+ fun_l28_n774(x)
+ end
+end
+
+def fun_l27_n546(x)
+ if (x < 1)
+ fun_l28_n508(x)
+ else
+ fun_l28_n267(x)
+ end
+end
+
+def fun_l27_n547(x)
+ if (x < 1)
+ fun_l28_n288(x)
+ else
+ fun_l28_n64(x)
+ end
+end
+
+def fun_l27_n548(x)
+ if (x < 1)
+ fun_l28_n941(x)
+ else
+ fun_l28_n632(x)
+ end
+end
+
+def fun_l27_n549(x)
+ if (x < 1)
+ fun_l28_n816(x)
+ else
+ fun_l28_n551(x)
+ end
+end
+
+def fun_l27_n550(x)
+ if (x < 1)
+ fun_l28_n848(x)
+ else
+ fun_l28_n778(x)
+ end
+end
+
+def fun_l27_n551(x)
+ if (x < 1)
+ fun_l28_n273(x)
+ else
+ fun_l28_n846(x)
+ end
+end
+
+def fun_l27_n552(x)
+ if (x < 1)
+ fun_l28_n18(x)
+ else
+ fun_l28_n530(x)
+ end
+end
+
+def fun_l27_n553(x)
+ if (x < 1)
+ fun_l28_n673(x)
+ else
+ fun_l28_n824(x)
+ end
+end
+
+def fun_l27_n554(x)
+ if (x < 1)
+ fun_l28_n376(x)
+ else
+ fun_l28_n32(x)
+ end
+end
+
+def fun_l27_n555(x)
+ if (x < 1)
+ fun_l28_n500(x)
+ else
+ fun_l28_n389(x)
+ end
+end
+
+def fun_l27_n556(x)
+ if (x < 1)
+ fun_l28_n712(x)
+ else
+ fun_l28_n729(x)
+ end
+end
+
+def fun_l27_n557(x)
+ if (x < 1)
+ fun_l28_n951(x)
+ else
+ fun_l28_n846(x)
+ end
+end
+
+def fun_l27_n558(x)
+ if (x < 1)
+ fun_l28_n269(x)
+ else
+ fun_l28_n538(x)
+ end
+end
+
+def fun_l27_n559(x)
+ if (x < 1)
+ fun_l28_n72(x)
+ else
+ fun_l28_n711(x)
+ end
+end
+
+def fun_l27_n560(x)
+ if (x < 1)
+ fun_l28_n510(x)
+ else
+ fun_l28_n718(x)
+ end
+end
+
+def fun_l27_n561(x)
+ if (x < 1)
+ fun_l28_n123(x)
+ else
+ fun_l28_n983(x)
+ end
+end
+
+def fun_l27_n562(x)
+ if (x < 1)
+ fun_l28_n486(x)
+ else
+ fun_l28_n796(x)
+ end
+end
+
+def fun_l27_n563(x)
+ if (x < 1)
+ fun_l28_n925(x)
+ else
+ fun_l28_n499(x)
+ end
+end
+
+def fun_l27_n564(x)
+ if (x < 1)
+ fun_l28_n811(x)
+ else
+ fun_l28_n604(x)
+ end
+end
+
+def fun_l27_n565(x)
+ if (x < 1)
+ fun_l28_n685(x)
+ else
+ fun_l28_n721(x)
+ end
+end
+
+def fun_l27_n566(x)
+ if (x < 1)
+ fun_l28_n946(x)
+ else
+ fun_l28_n890(x)
+ end
+end
+
+def fun_l27_n567(x)
+ if (x < 1)
+ fun_l28_n646(x)
+ else
+ fun_l28_n2(x)
+ end
+end
+
+def fun_l27_n568(x)
+ if (x < 1)
+ fun_l28_n570(x)
+ else
+ fun_l28_n427(x)
+ end
+end
+
+def fun_l27_n569(x)
+ if (x < 1)
+ fun_l28_n435(x)
+ else
+ fun_l28_n877(x)
+ end
+end
+
+def fun_l27_n570(x)
+ if (x < 1)
+ fun_l28_n67(x)
+ else
+ fun_l28_n879(x)
+ end
+end
+
+def fun_l27_n571(x)
+ if (x < 1)
+ fun_l28_n278(x)
+ else
+ fun_l28_n90(x)
+ end
+end
+
+def fun_l27_n572(x)
+ if (x < 1)
+ fun_l28_n748(x)
+ else
+ fun_l28_n202(x)
+ end
+end
+
+def fun_l27_n573(x)
+ if (x < 1)
+ fun_l28_n795(x)
+ else
+ fun_l28_n862(x)
+ end
+end
+
+def fun_l27_n574(x)
+ if (x < 1)
+ fun_l28_n208(x)
+ else
+ fun_l28_n979(x)
+ end
+end
+
+def fun_l27_n575(x)
+ if (x < 1)
+ fun_l28_n134(x)
+ else
+ fun_l28_n208(x)
+ end
+end
+
+def fun_l27_n576(x)
+ if (x < 1)
+ fun_l28_n591(x)
+ else
+ fun_l28_n400(x)
+ end
+end
+
+def fun_l27_n577(x)
+ if (x < 1)
+ fun_l28_n579(x)
+ else
+ fun_l28_n675(x)
+ end
+end
+
+def fun_l27_n578(x)
+ if (x < 1)
+ fun_l28_n186(x)
+ else
+ fun_l28_n643(x)
+ end
+end
+
+def fun_l27_n579(x)
+ if (x < 1)
+ fun_l28_n974(x)
+ else
+ fun_l28_n716(x)
+ end
+end
+
+def fun_l27_n580(x)
+ if (x < 1)
+ fun_l28_n168(x)
+ else
+ fun_l28_n10(x)
+ end
+end
+
+def fun_l27_n581(x)
+ if (x < 1)
+ fun_l28_n124(x)
+ else
+ fun_l28_n657(x)
+ end
+end
+
+def fun_l27_n582(x)
+ if (x < 1)
+ fun_l28_n240(x)
+ else
+ fun_l28_n335(x)
+ end
+end
+
+def fun_l27_n583(x)
+ if (x < 1)
+ fun_l28_n346(x)
+ else
+ fun_l28_n170(x)
+ end
+end
+
+def fun_l27_n584(x)
+ if (x < 1)
+ fun_l28_n854(x)
+ else
+ fun_l28_n681(x)
+ end
+end
+
+def fun_l27_n585(x)
+ if (x < 1)
+ fun_l28_n515(x)
+ else
+ fun_l28_n884(x)
+ end
+end
+
+def fun_l27_n586(x)
+ if (x < 1)
+ fun_l28_n901(x)
+ else
+ fun_l28_n12(x)
+ end
+end
+
+def fun_l27_n587(x)
+ if (x < 1)
+ fun_l28_n300(x)
+ else
+ fun_l28_n205(x)
+ end
+end
+
+def fun_l27_n588(x)
+ if (x < 1)
+ fun_l28_n52(x)
+ else
+ fun_l28_n823(x)
+ end
+end
+
+def fun_l27_n589(x)
+ if (x < 1)
+ fun_l28_n170(x)
+ else
+ fun_l28_n588(x)
+ end
+end
+
+def fun_l27_n590(x)
+ if (x < 1)
+ fun_l28_n777(x)
+ else
+ fun_l28_n232(x)
+ end
+end
+
+def fun_l27_n591(x)
+ if (x < 1)
+ fun_l28_n234(x)
+ else
+ fun_l28_n552(x)
+ end
+end
+
+def fun_l27_n592(x)
+ if (x < 1)
+ fun_l28_n83(x)
+ else
+ fun_l28_n736(x)
+ end
+end
+
+def fun_l27_n593(x)
+ if (x < 1)
+ fun_l28_n623(x)
+ else
+ fun_l28_n663(x)
+ end
+end
+
+def fun_l27_n594(x)
+ if (x < 1)
+ fun_l28_n137(x)
+ else
+ fun_l28_n858(x)
+ end
+end
+
+def fun_l27_n595(x)
+ if (x < 1)
+ fun_l28_n238(x)
+ else
+ fun_l28_n11(x)
+ end
+end
+
+def fun_l27_n596(x)
+ if (x < 1)
+ fun_l28_n692(x)
+ else
+ fun_l28_n815(x)
+ end
+end
+
+def fun_l27_n597(x)
+ if (x < 1)
+ fun_l28_n259(x)
+ else
+ fun_l28_n535(x)
+ end
+end
+
+def fun_l27_n598(x)
+ if (x < 1)
+ fun_l28_n135(x)
+ else
+ fun_l28_n567(x)
+ end
+end
+
+def fun_l27_n599(x)
+ if (x < 1)
+ fun_l28_n725(x)
+ else
+ fun_l28_n393(x)
+ end
+end
+
+def fun_l27_n600(x)
+ if (x < 1)
+ fun_l28_n790(x)
+ else
+ fun_l28_n478(x)
+ end
+end
+
+def fun_l27_n601(x)
+ if (x < 1)
+ fun_l28_n248(x)
+ else
+ fun_l28_n62(x)
+ end
+end
+
+def fun_l27_n602(x)
+ if (x < 1)
+ fun_l28_n790(x)
+ else
+ fun_l28_n854(x)
+ end
+end
+
+def fun_l27_n603(x)
+ if (x < 1)
+ fun_l28_n345(x)
+ else
+ fun_l28_n795(x)
+ end
+end
+
+def fun_l27_n604(x)
+ if (x < 1)
+ fun_l28_n689(x)
+ else
+ fun_l28_n357(x)
+ end
+end
+
+def fun_l27_n605(x)
+ if (x < 1)
+ fun_l28_n314(x)
+ else
+ fun_l28_n886(x)
+ end
+end
+
+def fun_l27_n606(x)
+ if (x < 1)
+ fun_l28_n401(x)
+ else
+ fun_l28_n688(x)
+ end
+end
+
+def fun_l27_n607(x)
+ if (x < 1)
+ fun_l28_n386(x)
+ else
+ fun_l28_n126(x)
+ end
+end
+
+def fun_l27_n608(x)
+ if (x < 1)
+ fun_l28_n232(x)
+ else
+ fun_l28_n387(x)
+ end
+end
+
+def fun_l27_n609(x)
+ if (x < 1)
+ fun_l28_n938(x)
+ else
+ fun_l28_n657(x)
+ end
+end
+
+def fun_l27_n610(x)
+ if (x < 1)
+ fun_l28_n40(x)
+ else
+ fun_l28_n141(x)
+ end
+end
+
+def fun_l27_n611(x)
+ if (x < 1)
+ fun_l28_n909(x)
+ else
+ fun_l28_n265(x)
+ end
+end
+
+def fun_l27_n612(x)
+ if (x < 1)
+ fun_l28_n486(x)
+ else
+ fun_l28_n470(x)
+ end
+end
+
+def fun_l27_n613(x)
+ if (x < 1)
+ fun_l28_n959(x)
+ else
+ fun_l28_n793(x)
+ end
+end
+
+def fun_l27_n614(x)
+ if (x < 1)
+ fun_l28_n422(x)
+ else
+ fun_l28_n246(x)
+ end
+end
+
+def fun_l27_n615(x)
+ if (x < 1)
+ fun_l28_n860(x)
+ else
+ fun_l28_n315(x)
+ end
+end
+
+def fun_l27_n616(x)
+ if (x < 1)
+ fun_l28_n529(x)
+ else
+ fun_l28_n647(x)
+ end
+end
+
+def fun_l27_n617(x)
+ if (x < 1)
+ fun_l28_n860(x)
+ else
+ fun_l28_n860(x)
+ end
+end
+
+def fun_l27_n618(x)
+ if (x < 1)
+ fun_l28_n147(x)
+ else
+ fun_l28_n814(x)
+ end
+end
+
+def fun_l27_n619(x)
+ if (x < 1)
+ fun_l28_n828(x)
+ else
+ fun_l28_n854(x)
+ end
+end
+
+def fun_l27_n620(x)
+ if (x < 1)
+ fun_l28_n464(x)
+ else
+ fun_l28_n838(x)
+ end
+end
+
+def fun_l27_n621(x)
+ if (x < 1)
+ fun_l28_n89(x)
+ else
+ fun_l28_n884(x)
+ end
+end
+
+def fun_l27_n622(x)
+ if (x < 1)
+ fun_l28_n933(x)
+ else
+ fun_l28_n889(x)
+ end
+end
+
+def fun_l27_n623(x)
+ if (x < 1)
+ fun_l28_n638(x)
+ else
+ fun_l28_n246(x)
+ end
+end
+
+def fun_l27_n624(x)
+ if (x < 1)
+ fun_l28_n724(x)
+ else
+ fun_l28_n305(x)
+ end
+end
+
+def fun_l27_n625(x)
+ if (x < 1)
+ fun_l28_n927(x)
+ else
+ fun_l28_n772(x)
+ end
+end
+
+def fun_l27_n626(x)
+ if (x < 1)
+ fun_l28_n612(x)
+ else
+ fun_l28_n953(x)
+ end
+end
+
+def fun_l27_n627(x)
+ if (x < 1)
+ fun_l28_n694(x)
+ else
+ fun_l28_n529(x)
+ end
+end
+
+def fun_l27_n628(x)
+ if (x < 1)
+ fun_l28_n136(x)
+ else
+ fun_l28_n977(x)
+ end
+end
+
+def fun_l27_n629(x)
+ if (x < 1)
+ fun_l28_n108(x)
+ else
+ fun_l28_n940(x)
+ end
+end
+
+def fun_l27_n630(x)
+ if (x < 1)
+ fun_l28_n773(x)
+ else
+ fun_l28_n62(x)
+ end
+end
+
+def fun_l27_n631(x)
+ if (x < 1)
+ fun_l28_n531(x)
+ else
+ fun_l28_n68(x)
+ end
+end
+
+def fun_l27_n632(x)
+ if (x < 1)
+ fun_l28_n910(x)
+ else
+ fun_l28_n638(x)
+ end
+end
+
+def fun_l27_n633(x)
+ if (x < 1)
+ fun_l28_n943(x)
+ else
+ fun_l28_n530(x)
+ end
+end
+
+def fun_l27_n634(x)
+ if (x < 1)
+ fun_l28_n161(x)
+ else
+ fun_l28_n842(x)
+ end
+end
+
+def fun_l27_n635(x)
+ if (x < 1)
+ fun_l28_n252(x)
+ else
+ fun_l28_n659(x)
+ end
+end
+
+def fun_l27_n636(x)
+ if (x < 1)
+ fun_l28_n739(x)
+ else
+ fun_l28_n116(x)
+ end
+end
+
+def fun_l27_n637(x)
+ if (x < 1)
+ fun_l28_n528(x)
+ else
+ fun_l28_n451(x)
+ end
+end
+
+def fun_l27_n638(x)
+ if (x < 1)
+ fun_l28_n772(x)
+ else
+ fun_l28_n163(x)
+ end
+end
+
+def fun_l27_n639(x)
+ if (x < 1)
+ fun_l28_n300(x)
+ else
+ fun_l28_n174(x)
+ end
+end
+
+def fun_l27_n640(x)
+ if (x < 1)
+ fun_l28_n967(x)
+ else
+ fun_l28_n437(x)
+ end
+end
+
+def fun_l27_n641(x)
+ if (x < 1)
+ fun_l28_n716(x)
+ else
+ fun_l28_n855(x)
+ end
+end
+
+def fun_l27_n642(x)
+ if (x < 1)
+ fun_l28_n510(x)
+ else
+ fun_l28_n958(x)
+ end
+end
+
+def fun_l27_n643(x)
+ if (x < 1)
+ fun_l28_n57(x)
+ else
+ fun_l28_n347(x)
+ end
+end
+
+def fun_l27_n644(x)
+ if (x < 1)
+ fun_l28_n145(x)
+ else
+ fun_l28_n652(x)
+ end
+end
+
+def fun_l27_n645(x)
+ if (x < 1)
+ fun_l28_n730(x)
+ else
+ fun_l28_n388(x)
+ end
+end
+
+def fun_l27_n646(x)
+ if (x < 1)
+ fun_l28_n409(x)
+ else
+ fun_l28_n394(x)
+ end
+end
+
+def fun_l27_n647(x)
+ if (x < 1)
+ fun_l28_n484(x)
+ else
+ fun_l28_n754(x)
+ end
+end
+
+def fun_l27_n648(x)
+ if (x < 1)
+ fun_l28_n888(x)
+ else
+ fun_l28_n229(x)
+ end
+end
+
+def fun_l27_n649(x)
+ if (x < 1)
+ fun_l28_n1(x)
+ else
+ fun_l28_n995(x)
+ end
+end
+
+def fun_l27_n650(x)
+ if (x < 1)
+ fun_l28_n992(x)
+ else
+ fun_l28_n522(x)
+ end
+end
+
+def fun_l27_n651(x)
+ if (x < 1)
+ fun_l28_n69(x)
+ else
+ fun_l28_n696(x)
+ end
+end
+
+def fun_l27_n652(x)
+ if (x < 1)
+ fun_l28_n496(x)
+ else
+ fun_l28_n47(x)
+ end
+end
+
+def fun_l27_n653(x)
+ if (x < 1)
+ fun_l28_n176(x)
+ else
+ fun_l28_n830(x)
+ end
+end
+
+def fun_l27_n654(x)
+ if (x < 1)
+ fun_l28_n277(x)
+ else
+ fun_l28_n311(x)
+ end
+end
+
+def fun_l27_n655(x)
+ if (x < 1)
+ fun_l28_n994(x)
+ else
+ fun_l28_n518(x)
+ end
+end
+
+def fun_l27_n656(x)
+ if (x < 1)
+ fun_l28_n238(x)
+ else
+ fun_l28_n99(x)
+ end
+end
+
+def fun_l27_n657(x)
+ if (x < 1)
+ fun_l28_n636(x)
+ else
+ fun_l28_n734(x)
+ end
+end
+
+def fun_l27_n658(x)
+ if (x < 1)
+ fun_l28_n796(x)
+ else
+ fun_l28_n109(x)
+ end
+end
+
+def fun_l27_n659(x)
+ if (x < 1)
+ fun_l28_n271(x)
+ else
+ fun_l28_n348(x)
+ end
+end
+
+def fun_l27_n660(x)
+ if (x < 1)
+ fun_l28_n847(x)
+ else
+ fun_l28_n926(x)
+ end
+end
+
+def fun_l27_n661(x)
+ if (x < 1)
+ fun_l28_n559(x)
+ else
+ fun_l28_n636(x)
+ end
+end
+
+def fun_l27_n662(x)
+ if (x < 1)
+ fun_l28_n528(x)
+ else
+ fun_l28_n0(x)
+ end
+end
+
+def fun_l27_n663(x)
+ if (x < 1)
+ fun_l28_n835(x)
+ else
+ fun_l28_n41(x)
+ end
+end
+
+def fun_l27_n664(x)
+ if (x < 1)
+ fun_l28_n135(x)
+ else
+ fun_l28_n356(x)
+ end
+end
+
+def fun_l27_n665(x)
+ if (x < 1)
+ fun_l28_n825(x)
+ else
+ fun_l28_n55(x)
+ end
+end
+
+def fun_l27_n666(x)
+ if (x < 1)
+ fun_l28_n659(x)
+ else
+ fun_l28_n384(x)
+ end
+end
+
+def fun_l27_n667(x)
+ if (x < 1)
+ fun_l28_n604(x)
+ else
+ fun_l28_n870(x)
+ end
+end
+
+def fun_l27_n668(x)
+ if (x < 1)
+ fun_l28_n136(x)
+ else
+ fun_l28_n343(x)
+ end
+end
+
+def fun_l27_n669(x)
+ if (x < 1)
+ fun_l28_n206(x)
+ else
+ fun_l28_n341(x)
+ end
+end
+
+def fun_l27_n670(x)
+ if (x < 1)
+ fun_l28_n947(x)
+ else
+ fun_l28_n926(x)
+ end
+end
+
+def fun_l27_n671(x)
+ if (x < 1)
+ fun_l28_n303(x)
+ else
+ fun_l28_n79(x)
+ end
+end
+
+def fun_l27_n672(x)
+ if (x < 1)
+ fun_l28_n181(x)
+ else
+ fun_l28_n937(x)
+ end
+end
+
+def fun_l27_n673(x)
+ if (x < 1)
+ fun_l28_n301(x)
+ else
+ fun_l28_n687(x)
+ end
+end
+
+def fun_l27_n674(x)
+ if (x < 1)
+ fun_l28_n992(x)
+ else
+ fun_l28_n814(x)
+ end
+end
+
+def fun_l27_n675(x)
+ if (x < 1)
+ fun_l28_n239(x)
+ else
+ fun_l28_n248(x)
+ end
+end
+
+def fun_l27_n676(x)
+ if (x < 1)
+ fun_l28_n728(x)
+ else
+ fun_l28_n368(x)
+ end
+end
+
+def fun_l27_n677(x)
+ if (x < 1)
+ fun_l28_n411(x)
+ else
+ fun_l28_n773(x)
+ end
+end
+
+def fun_l27_n678(x)
+ if (x < 1)
+ fun_l28_n522(x)
+ else
+ fun_l28_n754(x)
+ end
+end
+
+def fun_l27_n679(x)
+ if (x < 1)
+ fun_l28_n538(x)
+ else
+ fun_l28_n976(x)
+ end
+end
+
+def fun_l27_n680(x)
+ if (x < 1)
+ fun_l28_n744(x)
+ else
+ fun_l28_n752(x)
+ end
+end
+
+def fun_l27_n681(x)
+ if (x < 1)
+ fun_l28_n658(x)
+ else
+ fun_l28_n19(x)
+ end
+end
+
+def fun_l27_n682(x)
+ if (x < 1)
+ fun_l28_n843(x)
+ else
+ fun_l28_n657(x)
+ end
+end
+
+def fun_l27_n683(x)
+ if (x < 1)
+ fun_l28_n256(x)
+ else
+ fun_l28_n744(x)
+ end
+end
+
+def fun_l27_n684(x)
+ if (x < 1)
+ fun_l28_n380(x)
+ else
+ fun_l28_n223(x)
+ end
+end
+
+def fun_l27_n685(x)
+ if (x < 1)
+ fun_l28_n762(x)
+ else
+ fun_l28_n122(x)
+ end
+end
+
+def fun_l27_n686(x)
+ if (x < 1)
+ fun_l28_n860(x)
+ else
+ fun_l28_n51(x)
+ end
+end
+
+def fun_l27_n687(x)
+ if (x < 1)
+ fun_l28_n210(x)
+ else
+ fun_l28_n658(x)
+ end
+end
+
+def fun_l27_n688(x)
+ if (x < 1)
+ fun_l28_n250(x)
+ else
+ fun_l28_n165(x)
+ end
+end
+
+def fun_l27_n689(x)
+ if (x < 1)
+ fun_l28_n955(x)
+ else
+ fun_l28_n862(x)
+ end
+end
+
+def fun_l27_n690(x)
+ if (x < 1)
+ fun_l28_n592(x)
+ else
+ fun_l28_n54(x)
+ end
+end
+
+def fun_l27_n691(x)
+ if (x < 1)
+ fun_l28_n558(x)
+ else
+ fun_l28_n750(x)
+ end
+end
+
+def fun_l27_n692(x)
+ if (x < 1)
+ fun_l28_n307(x)
+ else
+ fun_l28_n143(x)
+ end
+end
+
+def fun_l27_n693(x)
+ if (x < 1)
+ fun_l28_n625(x)
+ else
+ fun_l28_n743(x)
+ end
+end
+
+def fun_l27_n694(x)
+ if (x < 1)
+ fun_l28_n883(x)
+ else
+ fun_l28_n567(x)
+ end
+end
+
+def fun_l27_n695(x)
+ if (x < 1)
+ fun_l28_n889(x)
+ else
+ fun_l28_n805(x)
+ end
+end
+
+def fun_l27_n696(x)
+ if (x < 1)
+ fun_l28_n366(x)
+ else
+ fun_l28_n112(x)
+ end
+end
+
+def fun_l27_n697(x)
+ if (x < 1)
+ fun_l28_n746(x)
+ else
+ fun_l28_n924(x)
+ end
+end
+
+def fun_l27_n698(x)
+ if (x < 1)
+ fun_l28_n694(x)
+ else
+ fun_l28_n703(x)
+ end
+end
+
+def fun_l27_n699(x)
+ if (x < 1)
+ fun_l28_n304(x)
+ else
+ fun_l28_n200(x)
+ end
+end
+
+def fun_l27_n700(x)
+ if (x < 1)
+ fun_l28_n477(x)
+ else
+ fun_l28_n851(x)
+ end
+end
+
+def fun_l27_n701(x)
+ if (x < 1)
+ fun_l28_n940(x)
+ else
+ fun_l28_n8(x)
+ end
+end
+
+def fun_l27_n702(x)
+ if (x < 1)
+ fun_l28_n675(x)
+ else
+ fun_l28_n631(x)
+ end
+end
+
+def fun_l27_n703(x)
+ if (x < 1)
+ fun_l28_n683(x)
+ else
+ fun_l28_n191(x)
+ end
+end
+
+def fun_l27_n704(x)
+ if (x < 1)
+ fun_l28_n431(x)
+ else
+ fun_l28_n573(x)
+ end
+end
+
+def fun_l27_n705(x)
+ if (x < 1)
+ fun_l28_n86(x)
+ else
+ fun_l28_n89(x)
+ end
+end
+
+def fun_l27_n706(x)
+ if (x < 1)
+ fun_l28_n315(x)
+ else
+ fun_l28_n388(x)
+ end
+end
+
+def fun_l27_n707(x)
+ if (x < 1)
+ fun_l28_n94(x)
+ else
+ fun_l28_n176(x)
+ end
+end
+
+def fun_l27_n708(x)
+ if (x < 1)
+ fun_l28_n391(x)
+ else
+ fun_l28_n187(x)
+ end
+end
+
+def fun_l27_n709(x)
+ if (x < 1)
+ fun_l28_n845(x)
+ else
+ fun_l28_n497(x)
+ end
+end
+
+def fun_l27_n710(x)
+ if (x < 1)
+ fun_l28_n195(x)
+ else
+ fun_l28_n242(x)
+ end
+end
+
+def fun_l27_n711(x)
+ if (x < 1)
+ fun_l28_n276(x)
+ else
+ fun_l28_n856(x)
+ end
+end
+
+def fun_l27_n712(x)
+ if (x < 1)
+ fun_l28_n42(x)
+ else
+ fun_l28_n184(x)
+ end
+end
+
+def fun_l27_n713(x)
+ if (x < 1)
+ fun_l28_n270(x)
+ else
+ fun_l28_n813(x)
+ end
+end
+
+def fun_l27_n714(x)
+ if (x < 1)
+ fun_l28_n281(x)
+ else
+ fun_l28_n54(x)
+ end
+end
+
+def fun_l27_n715(x)
+ if (x < 1)
+ fun_l28_n226(x)
+ else
+ fun_l28_n202(x)
+ end
+end
+
+def fun_l27_n716(x)
+ if (x < 1)
+ fun_l28_n391(x)
+ else
+ fun_l28_n143(x)
+ end
+end
+
+def fun_l27_n717(x)
+ if (x < 1)
+ fun_l28_n449(x)
+ else
+ fun_l28_n530(x)
+ end
+end
+
+def fun_l27_n718(x)
+ if (x < 1)
+ fun_l28_n198(x)
+ else
+ fun_l28_n342(x)
+ end
+end
+
+def fun_l27_n719(x)
+ if (x < 1)
+ fun_l28_n741(x)
+ else
+ fun_l28_n703(x)
+ end
+end
+
+def fun_l27_n720(x)
+ if (x < 1)
+ fun_l28_n779(x)
+ else
+ fun_l28_n706(x)
+ end
+end
+
+def fun_l27_n721(x)
+ if (x < 1)
+ fun_l28_n184(x)
+ else
+ fun_l28_n472(x)
+ end
+end
+
+def fun_l27_n722(x)
+ if (x < 1)
+ fun_l28_n752(x)
+ else
+ fun_l28_n230(x)
+ end
+end
+
+def fun_l27_n723(x)
+ if (x < 1)
+ fun_l28_n137(x)
+ else
+ fun_l28_n228(x)
+ end
+end
+
+def fun_l27_n724(x)
+ if (x < 1)
+ fun_l28_n360(x)
+ else
+ fun_l28_n186(x)
+ end
+end
+
+def fun_l27_n725(x)
+ if (x < 1)
+ fun_l28_n791(x)
+ else
+ fun_l28_n752(x)
+ end
+end
+
+def fun_l27_n726(x)
+ if (x < 1)
+ fun_l28_n162(x)
+ else
+ fun_l28_n492(x)
+ end
+end
+
+def fun_l27_n727(x)
+ if (x < 1)
+ fun_l28_n329(x)
+ else
+ fun_l28_n286(x)
+ end
+end
+
+def fun_l27_n728(x)
+ if (x < 1)
+ fun_l28_n262(x)
+ else
+ fun_l28_n775(x)
+ end
+end
+
+def fun_l27_n729(x)
+ if (x < 1)
+ fun_l28_n773(x)
+ else
+ fun_l28_n424(x)
+ end
+end
+
+def fun_l27_n730(x)
+ if (x < 1)
+ fun_l28_n202(x)
+ else
+ fun_l28_n379(x)
+ end
+end
+
+def fun_l27_n731(x)
+ if (x < 1)
+ fun_l28_n761(x)
+ else
+ fun_l28_n759(x)
+ end
+end
+
+def fun_l27_n732(x)
+ if (x < 1)
+ fun_l28_n544(x)
+ else
+ fun_l28_n980(x)
+ end
+end
+
+def fun_l27_n733(x)
+ if (x < 1)
+ fun_l28_n75(x)
+ else
+ fun_l28_n786(x)
+ end
+end
+
+def fun_l27_n734(x)
+ if (x < 1)
+ fun_l28_n708(x)
+ else
+ fun_l28_n92(x)
+ end
+end
+
+def fun_l27_n735(x)
+ if (x < 1)
+ fun_l28_n213(x)
+ else
+ fun_l28_n966(x)
+ end
+end
+
+def fun_l27_n736(x)
+ if (x < 1)
+ fun_l28_n298(x)
+ else
+ fun_l28_n517(x)
+ end
+end
+
+def fun_l27_n737(x)
+ if (x < 1)
+ fun_l28_n665(x)
+ else
+ fun_l28_n960(x)
+ end
+end
+
+def fun_l27_n738(x)
+ if (x < 1)
+ fun_l28_n51(x)
+ else
+ fun_l28_n605(x)
+ end
+end
+
+def fun_l27_n739(x)
+ if (x < 1)
+ fun_l28_n931(x)
+ else
+ fun_l28_n697(x)
+ end
+end
+
+def fun_l27_n740(x)
+ if (x < 1)
+ fun_l28_n341(x)
+ else
+ fun_l28_n57(x)
+ end
+end
+
+def fun_l27_n741(x)
+ if (x < 1)
+ fun_l28_n614(x)
+ else
+ fun_l28_n623(x)
+ end
+end
+
+def fun_l27_n742(x)
+ if (x < 1)
+ fun_l28_n466(x)
+ else
+ fun_l28_n260(x)
+ end
+end
+
+def fun_l27_n743(x)
+ if (x < 1)
+ fun_l28_n741(x)
+ else
+ fun_l28_n337(x)
+ end
+end
+
+def fun_l27_n744(x)
+ if (x < 1)
+ fun_l28_n414(x)
+ else
+ fun_l28_n277(x)
+ end
+end
+
+def fun_l27_n745(x)
+ if (x < 1)
+ fun_l28_n377(x)
+ else
+ fun_l28_n245(x)
+ end
+end
+
+def fun_l27_n746(x)
+ if (x < 1)
+ fun_l28_n441(x)
+ else
+ fun_l28_n347(x)
+ end
+end
+
+def fun_l27_n747(x)
+ if (x < 1)
+ fun_l28_n473(x)
+ else
+ fun_l28_n54(x)
+ end
+end
+
+def fun_l27_n748(x)
+ if (x < 1)
+ fun_l28_n140(x)
+ else
+ fun_l28_n680(x)
+ end
+end
+
+def fun_l27_n749(x)
+ if (x < 1)
+ fun_l28_n491(x)
+ else
+ fun_l28_n830(x)
+ end
+end
+
+def fun_l27_n750(x)
+ if (x < 1)
+ fun_l28_n803(x)
+ else
+ fun_l28_n917(x)
+ end
+end
+
+def fun_l27_n751(x)
+ if (x < 1)
+ fun_l28_n97(x)
+ else
+ fun_l28_n702(x)
+ end
+end
+
+def fun_l27_n752(x)
+ if (x < 1)
+ fun_l28_n113(x)
+ else
+ fun_l28_n447(x)
+ end
+end
+
+def fun_l27_n753(x)
+ if (x < 1)
+ fun_l28_n589(x)
+ else
+ fun_l28_n933(x)
+ end
+end
+
+def fun_l27_n754(x)
+ if (x < 1)
+ fun_l28_n610(x)
+ else
+ fun_l28_n365(x)
+ end
+end
+
+def fun_l27_n755(x)
+ if (x < 1)
+ fun_l28_n813(x)
+ else
+ fun_l28_n930(x)
+ end
+end
+
+def fun_l27_n756(x)
+ if (x < 1)
+ fun_l28_n997(x)
+ else
+ fun_l28_n112(x)
+ end
+end
+
+def fun_l27_n757(x)
+ if (x < 1)
+ fun_l28_n635(x)
+ else
+ fun_l28_n852(x)
+ end
+end
+
+def fun_l27_n758(x)
+ if (x < 1)
+ fun_l28_n735(x)
+ else
+ fun_l28_n3(x)
+ end
+end
+
+def fun_l27_n759(x)
+ if (x < 1)
+ fun_l28_n473(x)
+ else
+ fun_l28_n276(x)
+ end
+end
+
+def fun_l27_n760(x)
+ if (x < 1)
+ fun_l28_n708(x)
+ else
+ fun_l28_n602(x)
+ end
+end
+
+def fun_l27_n761(x)
+ if (x < 1)
+ fun_l28_n178(x)
+ else
+ fun_l28_n766(x)
+ end
+end
+
+def fun_l27_n762(x)
+ if (x < 1)
+ fun_l28_n968(x)
+ else
+ fun_l28_n935(x)
+ end
+end
+
+def fun_l27_n763(x)
+ if (x < 1)
+ fun_l28_n17(x)
+ else
+ fun_l28_n680(x)
+ end
+end
+
+def fun_l27_n764(x)
+ if (x < 1)
+ fun_l28_n465(x)
+ else
+ fun_l28_n484(x)
+ end
+end
+
+def fun_l27_n765(x)
+ if (x < 1)
+ fun_l28_n157(x)
+ else
+ fun_l28_n33(x)
+ end
+end
+
+def fun_l27_n766(x)
+ if (x < 1)
+ fun_l28_n306(x)
+ else
+ fun_l28_n588(x)
+ end
+end
+
+def fun_l27_n767(x)
+ if (x < 1)
+ fun_l28_n73(x)
+ else
+ fun_l28_n144(x)
+ end
+end
+
+def fun_l27_n768(x)
+ if (x < 1)
+ fun_l28_n838(x)
+ else
+ fun_l28_n984(x)
+ end
+end
+
+def fun_l27_n769(x)
+ if (x < 1)
+ fun_l28_n541(x)
+ else
+ fun_l28_n687(x)
+ end
+end
+
+def fun_l27_n770(x)
+ if (x < 1)
+ fun_l28_n129(x)
+ else
+ fun_l28_n256(x)
+ end
+end
+
+def fun_l27_n771(x)
+ if (x < 1)
+ fun_l28_n78(x)
+ else
+ fun_l28_n617(x)
+ end
+end
+
+def fun_l27_n772(x)
+ if (x < 1)
+ fun_l28_n590(x)
+ else
+ fun_l28_n78(x)
+ end
+end
+
+def fun_l27_n773(x)
+ if (x < 1)
+ fun_l28_n609(x)
+ else
+ fun_l28_n942(x)
+ end
+end
+
+def fun_l27_n774(x)
+ if (x < 1)
+ fun_l28_n794(x)
+ else
+ fun_l28_n361(x)
+ end
+end
+
+def fun_l27_n775(x)
+ if (x < 1)
+ fun_l28_n632(x)
+ else
+ fun_l28_n722(x)
+ end
+end
+
+def fun_l27_n776(x)
+ if (x < 1)
+ fun_l28_n655(x)
+ else
+ fun_l28_n944(x)
+ end
+end
+
+def fun_l27_n777(x)
+ if (x < 1)
+ fun_l28_n117(x)
+ else
+ fun_l28_n725(x)
+ end
+end
+
+def fun_l27_n778(x)
+ if (x < 1)
+ fun_l28_n511(x)
+ else
+ fun_l28_n934(x)
+ end
+end
+
+def fun_l27_n779(x)
+ if (x < 1)
+ fun_l28_n11(x)
+ else
+ fun_l28_n421(x)
+ end
+end
+
+def fun_l27_n780(x)
+ if (x < 1)
+ fun_l28_n957(x)
+ else
+ fun_l28_n941(x)
+ end
+end
+
+def fun_l27_n781(x)
+ if (x < 1)
+ fun_l28_n899(x)
+ else
+ fun_l28_n122(x)
+ end
+end
+
+def fun_l27_n782(x)
+ if (x < 1)
+ fun_l28_n42(x)
+ else
+ fun_l28_n885(x)
+ end
+end
+
+def fun_l27_n783(x)
+ if (x < 1)
+ fun_l28_n696(x)
+ else
+ fun_l28_n25(x)
+ end
+end
+
+def fun_l27_n784(x)
+ if (x < 1)
+ fun_l28_n683(x)
+ else
+ fun_l28_n201(x)
+ end
+end
+
+def fun_l27_n785(x)
+ if (x < 1)
+ fun_l28_n337(x)
+ else
+ fun_l28_n977(x)
+ end
+end
+
+def fun_l27_n786(x)
+ if (x < 1)
+ fun_l28_n113(x)
+ else
+ fun_l28_n946(x)
+ end
+end
+
+def fun_l27_n787(x)
+ if (x < 1)
+ fun_l28_n311(x)
+ else
+ fun_l28_n396(x)
+ end
+end
+
+def fun_l27_n788(x)
+ if (x < 1)
+ fun_l28_n963(x)
+ else
+ fun_l28_n592(x)
+ end
+end
+
+def fun_l27_n789(x)
+ if (x < 1)
+ fun_l28_n647(x)
+ else
+ fun_l28_n614(x)
+ end
+end
+
+def fun_l27_n790(x)
+ if (x < 1)
+ fun_l28_n15(x)
+ else
+ fun_l28_n602(x)
+ end
+end
+
+def fun_l27_n791(x)
+ if (x < 1)
+ fun_l28_n648(x)
+ else
+ fun_l28_n921(x)
+ end
+end
+
+def fun_l27_n792(x)
+ if (x < 1)
+ fun_l28_n272(x)
+ else
+ fun_l28_n585(x)
+ end
+end
+
+def fun_l27_n793(x)
+ if (x < 1)
+ fun_l28_n74(x)
+ else
+ fun_l28_n412(x)
+ end
+end
+
+def fun_l27_n794(x)
+ if (x < 1)
+ fun_l28_n610(x)
+ else
+ fun_l28_n121(x)
+ end
+end
+
+def fun_l27_n795(x)
+ if (x < 1)
+ fun_l28_n905(x)
+ else
+ fun_l28_n620(x)
+ end
+end
+
+def fun_l27_n796(x)
+ if (x < 1)
+ fun_l28_n691(x)
+ else
+ fun_l28_n833(x)
+ end
+end
+
+def fun_l27_n797(x)
+ if (x < 1)
+ fun_l28_n148(x)
+ else
+ fun_l28_n223(x)
+ end
+end
+
+def fun_l27_n798(x)
+ if (x < 1)
+ fun_l28_n835(x)
+ else
+ fun_l28_n59(x)
+ end
+end
+
+def fun_l27_n799(x)
+ if (x < 1)
+ fun_l28_n317(x)
+ else
+ fun_l28_n39(x)
+ end
+end
+
+def fun_l27_n800(x)
+ if (x < 1)
+ fun_l28_n694(x)
+ else
+ fun_l28_n833(x)
+ end
+end
+
+def fun_l27_n801(x)
+ if (x < 1)
+ fun_l28_n280(x)
+ else
+ fun_l28_n322(x)
+ end
+end
+
+def fun_l27_n802(x)
+ if (x < 1)
+ fun_l28_n612(x)
+ else
+ fun_l28_n866(x)
+ end
+end
+
+def fun_l27_n803(x)
+ if (x < 1)
+ fun_l28_n114(x)
+ else
+ fun_l28_n901(x)
+ end
+end
+
+def fun_l27_n804(x)
+ if (x < 1)
+ fun_l28_n983(x)
+ else
+ fun_l28_n837(x)
+ end
+end
+
+def fun_l27_n805(x)
+ if (x < 1)
+ fun_l28_n225(x)
+ else
+ fun_l28_n345(x)
+ end
+end
+
+def fun_l27_n806(x)
+ if (x < 1)
+ fun_l28_n879(x)
+ else
+ fun_l28_n929(x)
+ end
+end
+
+def fun_l27_n807(x)
+ if (x < 1)
+ fun_l28_n41(x)
+ else
+ fun_l28_n670(x)
+ end
+end
+
+def fun_l27_n808(x)
+ if (x < 1)
+ fun_l28_n407(x)
+ else
+ fun_l28_n46(x)
+ end
+end
+
+def fun_l27_n809(x)
+ if (x < 1)
+ fun_l28_n377(x)
+ else
+ fun_l28_n646(x)
+ end
+end
+
+def fun_l27_n810(x)
+ if (x < 1)
+ fun_l28_n293(x)
+ else
+ fun_l28_n40(x)
+ end
+end
+
+def fun_l27_n811(x)
+ if (x < 1)
+ fun_l28_n150(x)
+ else
+ fun_l28_n743(x)
+ end
+end
+
+def fun_l27_n812(x)
+ if (x < 1)
+ fun_l28_n285(x)
+ else
+ fun_l28_n124(x)
+ end
+end
+
+def fun_l27_n813(x)
+ if (x < 1)
+ fun_l28_n861(x)
+ else
+ fun_l28_n641(x)
+ end
+end
+
+def fun_l27_n814(x)
+ if (x < 1)
+ fun_l28_n917(x)
+ else
+ fun_l28_n51(x)
+ end
+end
+
+def fun_l27_n815(x)
+ if (x < 1)
+ fun_l28_n573(x)
+ else
+ fun_l28_n551(x)
+ end
+end
+
+def fun_l27_n816(x)
+ if (x < 1)
+ fun_l28_n420(x)
+ else
+ fun_l28_n155(x)
+ end
+end
+
+def fun_l27_n817(x)
+ if (x < 1)
+ fun_l28_n283(x)
+ else
+ fun_l28_n797(x)
+ end
+end
+
+def fun_l27_n818(x)
+ if (x < 1)
+ fun_l28_n744(x)
+ else
+ fun_l28_n22(x)
+ end
+end
+
+def fun_l27_n819(x)
+ if (x < 1)
+ fun_l28_n370(x)
+ else
+ fun_l28_n287(x)
+ end
+end
+
+def fun_l27_n820(x)
+ if (x < 1)
+ fun_l28_n435(x)
+ else
+ fun_l28_n23(x)
+ end
+end
+
+def fun_l27_n821(x)
+ if (x < 1)
+ fun_l28_n947(x)
+ else
+ fun_l28_n200(x)
+ end
+end
+
+def fun_l27_n822(x)
+ if (x < 1)
+ fun_l28_n259(x)
+ else
+ fun_l28_n444(x)
+ end
+end
+
+def fun_l27_n823(x)
+ if (x < 1)
+ fun_l28_n663(x)
+ else
+ fun_l28_n755(x)
+ end
+end
+
+def fun_l27_n824(x)
+ if (x < 1)
+ fun_l28_n564(x)
+ else
+ fun_l28_n572(x)
+ end
+end
+
+def fun_l27_n825(x)
+ if (x < 1)
+ fun_l28_n679(x)
+ else
+ fun_l28_n351(x)
+ end
+end
+
+def fun_l27_n826(x)
+ if (x < 1)
+ fun_l28_n654(x)
+ else
+ fun_l28_n393(x)
+ end
+end
+
+def fun_l27_n827(x)
+ if (x < 1)
+ fun_l28_n454(x)
+ else
+ fun_l28_n698(x)
+ end
+end
+
+def fun_l27_n828(x)
+ if (x < 1)
+ fun_l28_n389(x)
+ else
+ fun_l28_n118(x)
+ end
+end
+
+def fun_l27_n829(x)
+ if (x < 1)
+ fun_l28_n918(x)
+ else
+ fun_l28_n176(x)
+ end
+end
+
+def fun_l27_n830(x)
+ if (x < 1)
+ fun_l28_n158(x)
+ else
+ fun_l28_n309(x)
+ end
+end
+
+def fun_l27_n831(x)
+ if (x < 1)
+ fun_l28_n86(x)
+ else
+ fun_l28_n250(x)
+ end
+end
+
+def fun_l27_n832(x)
+ if (x < 1)
+ fun_l28_n21(x)
+ else
+ fun_l28_n688(x)
+ end
+end
+
+def fun_l27_n833(x)
+ if (x < 1)
+ fun_l28_n587(x)
+ else
+ fun_l28_n484(x)
+ end
+end
+
+def fun_l27_n834(x)
+ if (x < 1)
+ fun_l28_n886(x)
+ else
+ fun_l28_n579(x)
+ end
+end
+
+def fun_l27_n835(x)
+ if (x < 1)
+ fun_l28_n923(x)
+ else
+ fun_l28_n140(x)
+ end
+end
+
+def fun_l27_n836(x)
+ if (x < 1)
+ fun_l28_n120(x)
+ else
+ fun_l28_n704(x)
+ end
+end
+
+def fun_l27_n837(x)
+ if (x < 1)
+ fun_l28_n905(x)
+ else
+ fun_l28_n918(x)
+ end
+end
+
+def fun_l27_n838(x)
+ if (x < 1)
+ fun_l28_n679(x)
+ else
+ fun_l28_n588(x)
+ end
+end
+
+def fun_l27_n839(x)
+ if (x < 1)
+ fun_l28_n445(x)
+ else
+ fun_l28_n187(x)
+ end
+end
+
+def fun_l27_n840(x)
+ if (x < 1)
+ fun_l28_n695(x)
+ else
+ fun_l28_n86(x)
+ end
+end
+
+def fun_l27_n841(x)
+ if (x < 1)
+ fun_l28_n784(x)
+ else
+ fun_l28_n802(x)
+ end
+end
+
+def fun_l27_n842(x)
+ if (x < 1)
+ fun_l28_n854(x)
+ else
+ fun_l28_n617(x)
+ end
+end
+
+def fun_l27_n843(x)
+ if (x < 1)
+ fun_l28_n466(x)
+ else
+ fun_l28_n261(x)
+ end
+end
+
+def fun_l27_n844(x)
+ if (x < 1)
+ fun_l28_n326(x)
+ else
+ fun_l28_n517(x)
+ end
+end
+
+def fun_l27_n845(x)
+ if (x < 1)
+ fun_l28_n686(x)
+ else
+ fun_l28_n81(x)
+ end
+end
+
+def fun_l27_n846(x)
+ if (x < 1)
+ fun_l28_n71(x)
+ else
+ fun_l28_n685(x)
+ end
+end
+
+def fun_l27_n847(x)
+ if (x < 1)
+ fun_l28_n622(x)
+ else
+ fun_l28_n469(x)
+ end
+end
+
+def fun_l27_n848(x)
+ if (x < 1)
+ fun_l28_n125(x)
+ else
+ fun_l28_n252(x)
+ end
+end
+
+def fun_l27_n849(x)
+ if (x < 1)
+ fun_l28_n820(x)
+ else
+ fun_l28_n752(x)
+ end
+end
+
+def fun_l27_n850(x)
+ if (x < 1)
+ fun_l28_n278(x)
+ else
+ fun_l28_n198(x)
+ end
+end
+
+def fun_l27_n851(x)
+ if (x < 1)
+ fun_l28_n631(x)
+ else
+ fun_l28_n241(x)
+ end
+end
+
+def fun_l27_n852(x)
+ if (x < 1)
+ fun_l28_n917(x)
+ else
+ fun_l28_n95(x)
+ end
+end
+
+def fun_l27_n853(x)
+ if (x < 1)
+ fun_l28_n271(x)
+ else
+ fun_l28_n493(x)
+ end
+end
+
+def fun_l27_n854(x)
+ if (x < 1)
+ fun_l28_n578(x)
+ else
+ fun_l28_n31(x)
+ end
+end
+
+def fun_l27_n855(x)
+ if (x < 1)
+ fun_l28_n407(x)
+ else
+ fun_l28_n694(x)
+ end
+end
+
+def fun_l27_n856(x)
+ if (x < 1)
+ fun_l28_n541(x)
+ else
+ fun_l28_n81(x)
+ end
+end
+
+def fun_l27_n857(x)
+ if (x < 1)
+ fun_l28_n144(x)
+ else
+ fun_l28_n965(x)
+ end
+end
+
+def fun_l27_n858(x)
+ if (x < 1)
+ fun_l28_n476(x)
+ else
+ fun_l28_n44(x)
+ end
+end
+
+def fun_l27_n859(x)
+ if (x < 1)
+ fun_l28_n647(x)
+ else
+ fun_l28_n973(x)
+ end
+end
+
+def fun_l27_n860(x)
+ if (x < 1)
+ fun_l28_n641(x)
+ else
+ fun_l28_n331(x)
+ end
+end
+
+def fun_l27_n861(x)
+ if (x < 1)
+ fun_l28_n75(x)
+ else
+ fun_l28_n10(x)
+ end
+end
+
+def fun_l27_n862(x)
+ if (x < 1)
+ fun_l28_n435(x)
+ else
+ fun_l28_n182(x)
+ end
+end
+
+def fun_l27_n863(x)
+ if (x < 1)
+ fun_l28_n244(x)
+ else
+ fun_l28_n135(x)
+ end
+end
+
+def fun_l27_n864(x)
+ if (x < 1)
+ fun_l28_n598(x)
+ else
+ fun_l28_n495(x)
+ end
+end
+
+def fun_l27_n865(x)
+ if (x < 1)
+ fun_l28_n456(x)
+ else
+ fun_l28_n16(x)
+ end
+end
+
+def fun_l27_n866(x)
+ if (x < 1)
+ fun_l28_n43(x)
+ else
+ fun_l28_n279(x)
+ end
+end
+
+def fun_l27_n867(x)
+ if (x < 1)
+ fun_l28_n853(x)
+ else
+ fun_l28_n906(x)
+ end
+end
+
+def fun_l27_n868(x)
+ if (x < 1)
+ fun_l28_n641(x)
+ else
+ fun_l28_n479(x)
+ end
+end
+
+def fun_l27_n869(x)
+ if (x < 1)
+ fun_l28_n78(x)
+ else
+ fun_l28_n727(x)
+ end
+end
+
+def fun_l27_n870(x)
+ if (x < 1)
+ fun_l28_n815(x)
+ else
+ fun_l28_n803(x)
+ end
+end
+
+def fun_l27_n871(x)
+ if (x < 1)
+ fun_l28_n343(x)
+ else
+ fun_l28_n665(x)
+ end
+end
+
+def fun_l27_n872(x)
+ if (x < 1)
+ fun_l28_n907(x)
+ else
+ fun_l28_n410(x)
+ end
+end
+
+def fun_l27_n873(x)
+ if (x < 1)
+ fun_l28_n797(x)
+ else
+ fun_l28_n626(x)
+ end
+end
+
+def fun_l27_n874(x)
+ if (x < 1)
+ fun_l28_n784(x)
+ else
+ fun_l28_n679(x)
+ end
+end
+
+def fun_l27_n875(x)
+ if (x < 1)
+ fun_l28_n247(x)
+ else
+ fun_l28_n89(x)
+ end
+end
+
+def fun_l27_n876(x)
+ if (x < 1)
+ fun_l28_n911(x)
+ else
+ fun_l28_n503(x)
+ end
+end
+
+def fun_l27_n877(x)
+ if (x < 1)
+ fun_l28_n233(x)
+ else
+ fun_l28_n437(x)
+ end
+end
+
+def fun_l27_n878(x)
+ if (x < 1)
+ fun_l28_n913(x)
+ else
+ fun_l28_n984(x)
+ end
+end
+
+def fun_l27_n879(x)
+ if (x < 1)
+ fun_l28_n690(x)
+ else
+ fun_l28_n642(x)
+ end
+end
+
+def fun_l27_n880(x)
+ if (x < 1)
+ fun_l28_n222(x)
+ else
+ fun_l28_n400(x)
+ end
+end
+
+def fun_l27_n881(x)
+ if (x < 1)
+ fun_l28_n611(x)
+ else
+ fun_l28_n446(x)
+ end
+end
+
+def fun_l27_n882(x)
+ if (x < 1)
+ fun_l28_n821(x)
+ else
+ fun_l28_n784(x)
+ end
+end
+
+def fun_l27_n883(x)
+ if (x < 1)
+ fun_l28_n849(x)
+ else
+ fun_l28_n83(x)
+ end
+end
+
+def fun_l27_n884(x)
+ if (x < 1)
+ fun_l28_n366(x)
+ else
+ fun_l28_n822(x)
+ end
+end
+
+def fun_l27_n885(x)
+ if (x < 1)
+ fun_l28_n40(x)
+ else
+ fun_l28_n626(x)
+ end
+end
+
+def fun_l27_n886(x)
+ if (x < 1)
+ fun_l28_n280(x)
+ else
+ fun_l28_n957(x)
+ end
+end
+
+def fun_l27_n887(x)
+ if (x < 1)
+ fun_l28_n466(x)
+ else
+ fun_l28_n377(x)
+ end
+end
+
+def fun_l27_n888(x)
+ if (x < 1)
+ fun_l28_n258(x)
+ else
+ fun_l28_n816(x)
+ end
+end
+
+def fun_l27_n889(x)
+ if (x < 1)
+ fun_l28_n893(x)
+ else
+ fun_l28_n263(x)
+ end
+end
+
+def fun_l27_n890(x)
+ if (x < 1)
+ fun_l28_n366(x)
+ else
+ fun_l28_n890(x)
+ end
+end
+
+def fun_l27_n891(x)
+ if (x < 1)
+ fun_l28_n692(x)
+ else
+ fun_l28_n781(x)
+ end
+end
+
+def fun_l27_n892(x)
+ if (x < 1)
+ fun_l28_n301(x)
+ else
+ fun_l28_n142(x)
+ end
+end
+
+def fun_l27_n893(x)
+ if (x < 1)
+ fun_l28_n275(x)
+ else
+ fun_l28_n302(x)
+ end
+end
+
+def fun_l27_n894(x)
+ if (x < 1)
+ fun_l28_n726(x)
+ else
+ fun_l28_n445(x)
+ end
+end
+
+def fun_l27_n895(x)
+ if (x < 1)
+ fun_l28_n859(x)
+ else
+ fun_l28_n839(x)
+ end
+end
+
+def fun_l27_n896(x)
+ if (x < 1)
+ fun_l28_n252(x)
+ else
+ fun_l28_n844(x)
+ end
+end
+
+def fun_l27_n897(x)
+ if (x < 1)
+ fun_l28_n245(x)
+ else
+ fun_l28_n133(x)
+ end
+end
+
+def fun_l27_n898(x)
+ if (x < 1)
+ fun_l28_n233(x)
+ else
+ fun_l28_n417(x)
+ end
+end
+
+def fun_l27_n899(x)
+ if (x < 1)
+ fun_l28_n171(x)
+ else
+ fun_l28_n479(x)
+ end
+end
+
+def fun_l27_n900(x)
+ if (x < 1)
+ fun_l28_n528(x)
+ else
+ fun_l28_n196(x)
+ end
+end
+
+def fun_l27_n901(x)
+ if (x < 1)
+ fun_l28_n243(x)
+ else
+ fun_l28_n270(x)
+ end
+end
+
+def fun_l27_n902(x)
+ if (x < 1)
+ fun_l28_n319(x)
+ else
+ fun_l28_n885(x)
+ end
+end
+
+def fun_l27_n903(x)
+ if (x < 1)
+ fun_l28_n570(x)
+ else
+ fun_l28_n321(x)
+ end
+end
+
+def fun_l27_n904(x)
+ if (x < 1)
+ fun_l28_n522(x)
+ else
+ fun_l28_n720(x)
+ end
+end
+
+def fun_l27_n905(x)
+ if (x < 1)
+ fun_l28_n820(x)
+ else
+ fun_l28_n789(x)
+ end
+end
+
+def fun_l27_n906(x)
+ if (x < 1)
+ fun_l28_n592(x)
+ else
+ fun_l28_n113(x)
+ end
+end
+
+def fun_l27_n907(x)
+ if (x < 1)
+ fun_l28_n432(x)
+ else
+ fun_l28_n591(x)
+ end
+end
+
+def fun_l27_n908(x)
+ if (x < 1)
+ fun_l28_n538(x)
+ else
+ fun_l28_n701(x)
+ end
+end
+
+def fun_l27_n909(x)
+ if (x < 1)
+ fun_l28_n963(x)
+ else
+ fun_l28_n756(x)
+ end
+end
+
+def fun_l27_n910(x)
+ if (x < 1)
+ fun_l28_n871(x)
+ else
+ fun_l28_n387(x)
+ end
+end
+
+def fun_l27_n911(x)
+ if (x < 1)
+ fun_l28_n779(x)
+ else
+ fun_l28_n862(x)
+ end
+end
+
+def fun_l27_n912(x)
+ if (x < 1)
+ fun_l28_n0(x)
+ else
+ fun_l28_n208(x)
+ end
+end
+
+def fun_l27_n913(x)
+ if (x < 1)
+ fun_l28_n994(x)
+ else
+ fun_l28_n756(x)
+ end
+end
+
+def fun_l27_n914(x)
+ if (x < 1)
+ fun_l28_n950(x)
+ else
+ fun_l28_n770(x)
+ end
+end
+
+def fun_l27_n915(x)
+ if (x < 1)
+ fun_l28_n922(x)
+ else
+ fun_l28_n372(x)
+ end
+end
+
+def fun_l27_n916(x)
+ if (x < 1)
+ fun_l28_n786(x)
+ else
+ fun_l28_n786(x)
+ end
+end
+
+def fun_l27_n917(x)
+ if (x < 1)
+ fun_l28_n745(x)
+ else
+ fun_l28_n822(x)
+ end
+end
+
+def fun_l27_n918(x)
+ if (x < 1)
+ fun_l28_n69(x)
+ else
+ fun_l28_n669(x)
+ end
+end
+
+def fun_l27_n919(x)
+ if (x < 1)
+ fun_l28_n714(x)
+ else
+ fun_l28_n777(x)
+ end
+end
+
+def fun_l27_n920(x)
+ if (x < 1)
+ fun_l28_n934(x)
+ else
+ fun_l28_n392(x)
+ end
+end
+
+def fun_l27_n921(x)
+ if (x < 1)
+ fun_l28_n746(x)
+ else
+ fun_l28_n355(x)
+ end
+end
+
+def fun_l27_n922(x)
+ if (x < 1)
+ fun_l28_n645(x)
+ else
+ fun_l28_n351(x)
+ end
+end
+
+def fun_l27_n923(x)
+ if (x < 1)
+ fun_l28_n48(x)
+ else
+ fun_l28_n826(x)
+ end
+end
+
+def fun_l27_n924(x)
+ if (x < 1)
+ fun_l28_n531(x)
+ else
+ fun_l28_n577(x)
+ end
+end
+
+def fun_l27_n925(x)
+ if (x < 1)
+ fun_l28_n907(x)
+ else
+ fun_l28_n136(x)
+ end
+end
+
+def fun_l27_n926(x)
+ if (x < 1)
+ fun_l28_n256(x)
+ else
+ fun_l28_n527(x)
+ end
+end
+
+def fun_l27_n927(x)
+ if (x < 1)
+ fun_l28_n870(x)
+ else
+ fun_l28_n475(x)
+ end
+end
+
+def fun_l27_n928(x)
+ if (x < 1)
+ fun_l28_n184(x)
+ else
+ fun_l28_n397(x)
+ end
+end
+
+def fun_l27_n929(x)
+ if (x < 1)
+ fun_l28_n99(x)
+ else
+ fun_l28_n363(x)
+ end
+end
+
+def fun_l27_n930(x)
+ if (x < 1)
+ fun_l28_n217(x)
+ else
+ fun_l28_n978(x)
+ end
+end
+
+def fun_l27_n931(x)
+ if (x < 1)
+ fun_l28_n372(x)
+ else
+ fun_l28_n542(x)
+ end
+end
+
+def fun_l27_n932(x)
+ if (x < 1)
+ fun_l28_n337(x)
+ else
+ fun_l28_n150(x)
+ end
+end
+
+def fun_l27_n933(x)
+ if (x < 1)
+ fun_l28_n81(x)
+ else
+ fun_l28_n206(x)
+ end
+end
+
+def fun_l27_n934(x)
+ if (x < 1)
+ fun_l28_n984(x)
+ else
+ fun_l28_n748(x)
+ end
+end
+
+def fun_l27_n935(x)
+ if (x < 1)
+ fun_l28_n746(x)
+ else
+ fun_l28_n824(x)
+ end
+end
+
+def fun_l27_n936(x)
+ if (x < 1)
+ fun_l28_n737(x)
+ else
+ fun_l28_n353(x)
+ end
+end
+
+def fun_l27_n937(x)
+ if (x < 1)
+ fun_l28_n681(x)
+ else
+ fun_l28_n518(x)
+ end
+end
+
+def fun_l27_n938(x)
+ if (x < 1)
+ fun_l28_n401(x)
+ else
+ fun_l28_n99(x)
+ end
+end
+
+def fun_l27_n939(x)
+ if (x < 1)
+ fun_l28_n821(x)
+ else
+ fun_l28_n456(x)
+ end
+end
+
+def fun_l27_n940(x)
+ if (x < 1)
+ fun_l28_n411(x)
+ else
+ fun_l28_n578(x)
+ end
+end
+
+def fun_l27_n941(x)
+ if (x < 1)
+ fun_l28_n318(x)
+ else
+ fun_l28_n479(x)
+ end
+end
+
+def fun_l27_n942(x)
+ if (x < 1)
+ fun_l28_n229(x)
+ else
+ fun_l28_n338(x)
+ end
+end
+
+def fun_l27_n943(x)
+ if (x < 1)
+ fun_l28_n195(x)
+ else
+ fun_l28_n667(x)
+ end
+end
+
+def fun_l27_n944(x)
+ if (x < 1)
+ fun_l28_n256(x)
+ else
+ fun_l28_n309(x)
+ end
+end
+
+def fun_l27_n945(x)
+ if (x < 1)
+ fun_l28_n939(x)
+ else
+ fun_l28_n284(x)
+ end
+end
+
+def fun_l27_n946(x)
+ if (x < 1)
+ fun_l28_n70(x)
+ else
+ fun_l28_n408(x)
+ end
+end
+
+def fun_l27_n947(x)
+ if (x < 1)
+ fun_l28_n586(x)
+ else
+ fun_l28_n931(x)
+ end
+end
+
+def fun_l27_n948(x)
+ if (x < 1)
+ fun_l28_n878(x)
+ else
+ fun_l28_n95(x)
+ end
+end
+
+def fun_l27_n949(x)
+ if (x < 1)
+ fun_l28_n749(x)
+ else
+ fun_l28_n414(x)
+ end
+end
+
+def fun_l27_n950(x)
+ if (x < 1)
+ fun_l28_n913(x)
+ else
+ fun_l28_n933(x)
+ end
+end
+
+def fun_l27_n951(x)
+ if (x < 1)
+ fun_l28_n394(x)
+ else
+ fun_l28_n121(x)
+ end
+end
+
+def fun_l27_n952(x)
+ if (x < 1)
+ fun_l28_n381(x)
+ else
+ fun_l28_n279(x)
+ end
+end
+
+def fun_l27_n953(x)
+ if (x < 1)
+ fun_l28_n302(x)
+ else
+ fun_l28_n710(x)
+ end
+end
+
+def fun_l27_n954(x)
+ if (x < 1)
+ fun_l28_n765(x)
+ else
+ fun_l28_n254(x)
+ end
+end
+
+def fun_l27_n955(x)
+ if (x < 1)
+ fun_l28_n736(x)
+ else
+ fun_l28_n67(x)
+ end
+end
+
+def fun_l27_n956(x)
+ if (x < 1)
+ fun_l28_n61(x)
+ else
+ fun_l28_n873(x)
+ end
+end
+
+def fun_l27_n957(x)
+ if (x < 1)
+ fun_l28_n920(x)
+ else
+ fun_l28_n261(x)
+ end
+end
+
+def fun_l27_n958(x)
+ if (x < 1)
+ fun_l28_n350(x)
+ else
+ fun_l28_n545(x)
+ end
+end
+
+def fun_l27_n959(x)
+ if (x < 1)
+ fun_l28_n538(x)
+ else
+ fun_l28_n829(x)
+ end
+end
+
+def fun_l27_n960(x)
+ if (x < 1)
+ fun_l28_n920(x)
+ else
+ fun_l28_n534(x)
+ end
+end
+
+def fun_l27_n961(x)
+ if (x < 1)
+ fun_l28_n730(x)
+ else
+ fun_l28_n19(x)
+ end
+end
+
+def fun_l27_n962(x)
+ if (x < 1)
+ fun_l28_n293(x)
+ else
+ fun_l28_n187(x)
+ end
+end
+
+def fun_l27_n963(x)
+ if (x < 1)
+ fun_l28_n169(x)
+ else
+ fun_l28_n751(x)
+ end
+end
+
+def fun_l27_n964(x)
+ if (x < 1)
+ fun_l28_n195(x)
+ else
+ fun_l28_n112(x)
+ end
+end
+
+def fun_l27_n965(x)
+ if (x < 1)
+ fun_l28_n756(x)
+ else
+ fun_l28_n700(x)
+ end
+end
+
+def fun_l27_n966(x)
+ if (x < 1)
+ fun_l28_n739(x)
+ else
+ fun_l28_n320(x)
+ end
+end
+
+def fun_l27_n967(x)
+ if (x < 1)
+ fun_l28_n693(x)
+ else
+ fun_l28_n101(x)
+ end
+end
+
+def fun_l27_n968(x)
+ if (x < 1)
+ fun_l28_n94(x)
+ else
+ fun_l28_n131(x)
+ end
+end
+
+def fun_l27_n969(x)
+ if (x < 1)
+ fun_l28_n142(x)
+ else
+ fun_l28_n839(x)
+ end
+end
+
+def fun_l27_n970(x)
+ if (x < 1)
+ fun_l28_n792(x)
+ else
+ fun_l28_n243(x)
+ end
+end
+
+def fun_l27_n971(x)
+ if (x < 1)
+ fun_l28_n268(x)
+ else
+ fun_l28_n525(x)
+ end
+end
+
+def fun_l27_n972(x)
+ if (x < 1)
+ fun_l28_n776(x)
+ else
+ fun_l28_n117(x)
+ end
+end
+
+def fun_l27_n973(x)
+ if (x < 1)
+ fun_l28_n401(x)
+ else
+ fun_l28_n571(x)
+ end
+end
+
+def fun_l27_n974(x)
+ if (x < 1)
+ fun_l28_n515(x)
+ else
+ fun_l28_n5(x)
+ end
+end
+
+def fun_l27_n975(x)
+ if (x < 1)
+ fun_l28_n225(x)
+ else
+ fun_l28_n956(x)
+ end
+end
+
+def fun_l27_n976(x)
+ if (x < 1)
+ fun_l28_n536(x)
+ else
+ fun_l28_n379(x)
+ end
+end
+
+def fun_l27_n977(x)
+ if (x < 1)
+ fun_l28_n942(x)
+ else
+ fun_l28_n665(x)
+ end
+end
+
+def fun_l27_n978(x)
+ if (x < 1)
+ fun_l28_n753(x)
+ else
+ fun_l28_n807(x)
+ end
+end
+
+def fun_l27_n979(x)
+ if (x < 1)
+ fun_l28_n206(x)
+ else
+ fun_l28_n548(x)
+ end
+end
+
+def fun_l27_n980(x)
+ if (x < 1)
+ fun_l28_n149(x)
+ else
+ fun_l28_n126(x)
+ end
+end
+
+def fun_l27_n981(x)
+ if (x < 1)
+ fun_l28_n829(x)
+ else
+ fun_l28_n384(x)
+ end
+end
+
+def fun_l27_n982(x)
+ if (x < 1)
+ fun_l28_n764(x)
+ else
+ fun_l28_n554(x)
+ end
+end
+
+def fun_l27_n983(x)
+ if (x < 1)
+ fun_l28_n868(x)
+ else
+ fun_l28_n933(x)
+ end
+end
+
+def fun_l27_n984(x)
+ if (x < 1)
+ fun_l28_n627(x)
+ else
+ fun_l28_n791(x)
+ end
+end
+
+def fun_l27_n985(x)
+ if (x < 1)
+ fun_l28_n796(x)
+ else
+ fun_l28_n352(x)
+ end
+end
+
+def fun_l27_n986(x)
+ if (x < 1)
+ fun_l28_n213(x)
+ else
+ fun_l28_n282(x)
+ end
+end
+
+def fun_l27_n987(x)
+ if (x < 1)
+ fun_l28_n403(x)
+ else
+ fun_l28_n504(x)
+ end
+end
+
+def fun_l27_n988(x)
+ if (x < 1)
+ fun_l28_n78(x)
+ else
+ fun_l28_n283(x)
+ end
+end
+
+def fun_l27_n989(x)
+ if (x < 1)
+ fun_l28_n364(x)
+ else
+ fun_l28_n802(x)
+ end
+end
+
+def fun_l27_n990(x)
+ if (x < 1)
+ fun_l28_n508(x)
+ else
+ fun_l28_n561(x)
+ end
+end
+
+def fun_l27_n991(x)
+ if (x < 1)
+ fun_l28_n922(x)
+ else
+ fun_l28_n901(x)
+ end
+end
+
+def fun_l27_n992(x)
+ if (x < 1)
+ fun_l28_n103(x)
+ else
+ fun_l28_n275(x)
+ end
+end
+
+def fun_l27_n993(x)
+ if (x < 1)
+ fun_l28_n566(x)
+ else
+ fun_l28_n88(x)
+ end
+end
+
+def fun_l27_n994(x)
+ if (x < 1)
+ fun_l28_n174(x)
+ else
+ fun_l28_n741(x)
+ end
+end
+
+def fun_l27_n995(x)
+ if (x < 1)
+ fun_l28_n40(x)
+ else
+ fun_l28_n426(x)
+ end
+end
+
+def fun_l27_n996(x)
+ if (x < 1)
+ fun_l28_n941(x)
+ else
+ fun_l28_n941(x)
+ end
+end
+
+def fun_l27_n997(x)
+ if (x < 1)
+ fun_l28_n651(x)
+ else
+ fun_l28_n301(x)
+ end
+end
+
+def fun_l27_n998(x)
+ if (x < 1)
+ fun_l28_n789(x)
+ else
+ fun_l28_n720(x)
+ end
+end
+
+def fun_l27_n999(x)
+ if (x < 1)
+ fun_l28_n536(x)
+ else
+ fun_l28_n903(x)
+ end
+end
+
+def fun_l28_n0(x)
+ if (x < 1)
+ fun_l29_n585(x)
+ else
+ fun_l29_n979(x)
+ end
+end
+
+def fun_l28_n1(x)
+ if (x < 1)
+ fun_l29_n182(x)
+ else
+ fun_l29_n513(x)
+ end
+end
+
+def fun_l28_n2(x)
+ if (x < 1)
+ fun_l29_n975(x)
+ else
+ fun_l29_n445(x)
+ end
+end
+
+def fun_l28_n3(x)
+ if (x < 1)
+ fun_l29_n7(x)
+ else
+ fun_l29_n958(x)
+ end
+end
+
+def fun_l28_n4(x)
+ if (x < 1)
+ fun_l29_n751(x)
+ else
+ fun_l29_n426(x)
+ end
+end
+
+def fun_l28_n5(x)
+ if (x < 1)
+ fun_l29_n29(x)
+ else
+ fun_l29_n840(x)
+ end
+end
+
+def fun_l28_n6(x)
+ if (x < 1)
+ fun_l29_n571(x)
+ else
+ fun_l29_n971(x)
+ end
+end
+
+def fun_l28_n7(x)
+ if (x < 1)
+ fun_l29_n384(x)
+ else
+ fun_l29_n495(x)
+ end
+end
+
+def fun_l28_n8(x)
+ if (x < 1)
+ fun_l29_n185(x)
+ else
+ fun_l29_n507(x)
+ end
+end
+
+def fun_l28_n9(x)
+ if (x < 1)
+ fun_l29_n496(x)
+ else
+ fun_l29_n241(x)
+ end
+end
+
+def fun_l28_n10(x)
+ if (x < 1)
+ fun_l29_n494(x)
+ else
+ fun_l29_n473(x)
+ end
+end
+
+def fun_l28_n11(x)
+ if (x < 1)
+ fun_l29_n851(x)
+ else
+ fun_l29_n809(x)
+ end
+end
+
+def fun_l28_n12(x)
+ if (x < 1)
+ fun_l29_n875(x)
+ else
+ fun_l29_n135(x)
+ end
+end
+
+def fun_l28_n13(x)
+ if (x < 1)
+ fun_l29_n957(x)
+ else
+ fun_l29_n337(x)
+ end
+end
+
+def fun_l28_n14(x)
+ if (x < 1)
+ fun_l29_n82(x)
+ else
+ fun_l29_n901(x)
+ end
+end
+
+def fun_l28_n15(x)
+ if (x < 1)
+ fun_l29_n608(x)
+ else
+ fun_l29_n334(x)
+ end
+end
+
+def fun_l28_n16(x)
+ if (x < 1)
+ fun_l29_n772(x)
+ else
+ fun_l29_n912(x)
+ end
+end
+
+def fun_l28_n17(x)
+ if (x < 1)
+ fun_l29_n971(x)
+ else
+ fun_l29_n127(x)
+ end
+end
+
+def fun_l28_n18(x)
+ if (x < 1)
+ fun_l29_n667(x)
+ else
+ fun_l29_n347(x)
+ end
+end
+
+def fun_l28_n19(x)
+ if (x < 1)
+ fun_l29_n453(x)
+ else
+ fun_l29_n39(x)
+ end
+end
+
+def fun_l28_n20(x)
+ if (x < 1)
+ fun_l29_n853(x)
+ else
+ fun_l29_n747(x)
+ end
+end
+
+def fun_l28_n21(x)
+ if (x < 1)
+ fun_l29_n433(x)
+ else
+ fun_l29_n298(x)
+ end
+end
+
+def fun_l28_n22(x)
+ if (x < 1)
+ fun_l29_n94(x)
+ else
+ fun_l29_n307(x)
+ end
+end
+
+def fun_l28_n23(x)
+ if (x < 1)
+ fun_l29_n424(x)
+ else
+ fun_l29_n599(x)
+ end
+end
+
+def fun_l28_n24(x)
+ if (x < 1)
+ fun_l29_n986(x)
+ else
+ fun_l29_n232(x)
+ end
+end
+
+def fun_l28_n25(x)
+ if (x < 1)
+ fun_l29_n658(x)
+ else
+ fun_l29_n744(x)
+ end
+end
+
+def fun_l28_n26(x)
+ if (x < 1)
+ fun_l29_n151(x)
+ else
+ fun_l29_n855(x)
+ end
+end
+
+def fun_l28_n27(x)
+ if (x < 1)
+ fun_l29_n416(x)
+ else
+ fun_l29_n763(x)
+ end
+end
+
+def fun_l28_n28(x)
+ if (x < 1)
+ fun_l29_n489(x)
+ else
+ fun_l29_n55(x)
+ end
+end
+
+def fun_l28_n29(x)
+ if (x < 1)
+ fun_l29_n714(x)
+ else
+ fun_l29_n489(x)
+ end
+end
+
+def fun_l28_n30(x)
+ if (x < 1)
+ fun_l29_n328(x)
+ else
+ fun_l29_n476(x)
+ end
+end
+
+def fun_l28_n31(x)
+ if (x < 1)
+ fun_l29_n317(x)
+ else
+ fun_l29_n836(x)
+ end
+end
+
+def fun_l28_n32(x)
+ if (x < 1)
+ fun_l29_n970(x)
+ else
+ fun_l29_n48(x)
+ end
+end
+
+def fun_l28_n33(x)
+ if (x < 1)
+ fun_l29_n159(x)
+ else
+ fun_l29_n449(x)
+ end
+end
+
+def fun_l28_n34(x)
+ if (x < 1)
+ fun_l29_n80(x)
+ else
+ fun_l29_n994(x)
+ end
+end
+
+def fun_l28_n35(x)
+ if (x < 1)
+ fun_l29_n413(x)
+ else
+ fun_l29_n718(x)
+ end
+end
+
+def fun_l28_n36(x)
+ if (x < 1)
+ fun_l29_n196(x)
+ else
+ fun_l29_n713(x)
+ end
+end
+
+def fun_l28_n37(x)
+ if (x < 1)
+ fun_l29_n815(x)
+ else
+ fun_l29_n595(x)
+ end
+end
+
+def fun_l28_n38(x)
+ if (x < 1)
+ fun_l29_n862(x)
+ else
+ fun_l29_n546(x)
+ end
+end
+
+def fun_l28_n39(x)
+ if (x < 1)
+ fun_l29_n875(x)
+ else
+ fun_l29_n456(x)
+ end
+end
+
+def fun_l28_n40(x)
+ if (x < 1)
+ fun_l29_n424(x)
+ else
+ fun_l29_n445(x)
+ end
+end
+
+def fun_l28_n41(x)
+ if (x < 1)
+ fun_l29_n743(x)
+ else
+ fun_l29_n498(x)
+ end
+end
+
+def fun_l28_n42(x)
+ if (x < 1)
+ fun_l29_n950(x)
+ else
+ fun_l29_n497(x)
+ end
+end
+
+def fun_l28_n43(x)
+ if (x < 1)
+ fun_l29_n792(x)
+ else
+ fun_l29_n487(x)
+ end
+end
+
+def fun_l28_n44(x)
+ if (x < 1)
+ fun_l29_n421(x)
+ else
+ fun_l29_n484(x)
+ end
+end
+
+def fun_l28_n45(x)
+ if (x < 1)
+ fun_l29_n862(x)
+ else
+ fun_l29_n824(x)
+ end
+end
+
+def fun_l28_n46(x)
+ if (x < 1)
+ fun_l29_n163(x)
+ else
+ fun_l29_n184(x)
+ end
+end
+
+def fun_l28_n47(x)
+ if (x < 1)
+ fun_l29_n374(x)
+ else
+ fun_l29_n954(x)
+ end
+end
+
+def fun_l28_n48(x)
+ if (x < 1)
+ fun_l29_n422(x)
+ else
+ fun_l29_n223(x)
+ end
+end
+
+def fun_l28_n49(x)
+ if (x < 1)
+ fun_l29_n885(x)
+ else
+ fun_l29_n527(x)
+ end
+end
+
+def fun_l28_n50(x)
+ if (x < 1)
+ fun_l29_n694(x)
+ else
+ fun_l29_n702(x)
+ end
+end
+
+def fun_l28_n51(x)
+ if (x < 1)
+ fun_l29_n273(x)
+ else
+ fun_l29_n504(x)
+ end
+end
+
+def fun_l28_n52(x)
+ if (x < 1)
+ fun_l29_n330(x)
+ else
+ fun_l29_n267(x)
+ end
+end
+
+def fun_l28_n53(x)
+ if (x < 1)
+ fun_l29_n103(x)
+ else
+ fun_l29_n407(x)
+ end
+end
+
+def fun_l28_n54(x)
+ if (x < 1)
+ fun_l29_n210(x)
+ else
+ fun_l29_n645(x)
+ end
+end
+
+def fun_l28_n55(x)
+ if (x < 1)
+ fun_l29_n871(x)
+ else
+ fun_l29_n641(x)
+ end
+end
+
+def fun_l28_n56(x)
+ if (x < 1)
+ fun_l29_n233(x)
+ else
+ fun_l29_n715(x)
+ end
+end
+
+def fun_l28_n57(x)
+ if (x < 1)
+ fun_l29_n742(x)
+ else
+ fun_l29_n104(x)
+ end
+end
+
+def fun_l28_n58(x)
+ if (x < 1)
+ fun_l29_n713(x)
+ else
+ fun_l29_n919(x)
+ end
+end
+
+def fun_l28_n59(x)
+ if (x < 1)
+ fun_l29_n192(x)
+ else
+ fun_l29_n988(x)
+ end
+end
+
+def fun_l28_n60(x)
+ if (x < 1)
+ fun_l29_n533(x)
+ else
+ fun_l29_n972(x)
+ end
+end
+
+def fun_l28_n61(x)
+ if (x < 1)
+ fun_l29_n286(x)
+ else
+ fun_l29_n129(x)
+ end
+end
+
+def fun_l28_n62(x)
+ if (x < 1)
+ fun_l29_n208(x)
+ else
+ fun_l29_n715(x)
+ end
+end
+
+def fun_l28_n63(x)
+ if (x < 1)
+ fun_l29_n588(x)
+ else
+ fun_l29_n975(x)
+ end
+end
+
+def fun_l28_n64(x)
+ if (x < 1)
+ fun_l29_n202(x)
+ else
+ fun_l29_n784(x)
+ end
+end
+
+def fun_l28_n65(x)
+ if (x < 1)
+ fun_l29_n531(x)
+ else
+ fun_l29_n758(x)
+ end
+end
+
+def fun_l28_n66(x)
+ if (x < 1)
+ fun_l29_n102(x)
+ else
+ fun_l29_n23(x)
+ end
+end
+
+def fun_l28_n67(x)
+ if (x < 1)
+ fun_l29_n546(x)
+ else
+ fun_l29_n964(x)
+ end
+end
+
+def fun_l28_n68(x)
+ if (x < 1)
+ fun_l29_n31(x)
+ else
+ fun_l29_n223(x)
+ end
+end
+
+def fun_l28_n69(x)
+ if (x < 1)
+ fun_l29_n344(x)
+ else
+ fun_l29_n250(x)
+ end
+end
+
+def fun_l28_n70(x)
+ if (x < 1)
+ fun_l29_n910(x)
+ else
+ fun_l29_n880(x)
+ end
+end
+
+def fun_l28_n71(x)
+ if (x < 1)
+ fun_l29_n181(x)
+ else
+ fun_l29_n950(x)
+ end
+end
+
+def fun_l28_n72(x)
+ if (x < 1)
+ fun_l29_n405(x)
+ else
+ fun_l29_n105(x)
+ end
+end
+
+def fun_l28_n73(x)
+ if (x < 1)
+ fun_l29_n419(x)
+ else
+ fun_l29_n120(x)
+ end
+end
+
+def fun_l28_n74(x)
+ if (x < 1)
+ fun_l29_n485(x)
+ else
+ fun_l29_n616(x)
+ end
+end
+
+def fun_l28_n75(x)
+ if (x < 1)
+ fun_l29_n690(x)
+ else
+ fun_l29_n581(x)
+ end
+end
+
+def fun_l28_n76(x)
+ if (x < 1)
+ fun_l29_n68(x)
+ else
+ fun_l29_n47(x)
+ end
+end
+
+def fun_l28_n77(x)
+ if (x < 1)
+ fun_l29_n324(x)
+ else
+ fun_l29_n102(x)
+ end
+end
+
+def fun_l28_n78(x)
+ if (x < 1)
+ fun_l29_n416(x)
+ else
+ fun_l29_n965(x)
+ end
+end
+
+def fun_l28_n79(x)
+ if (x < 1)
+ fun_l29_n584(x)
+ else
+ fun_l29_n901(x)
+ end
+end
+
+def fun_l28_n80(x)
+ if (x < 1)
+ fun_l29_n914(x)
+ else
+ fun_l29_n890(x)
+ end
+end
+
+def fun_l28_n81(x)
+ if (x < 1)
+ fun_l29_n85(x)
+ else
+ fun_l29_n822(x)
+ end
+end
+
+def fun_l28_n82(x)
+ if (x < 1)
+ fun_l29_n311(x)
+ else
+ fun_l29_n621(x)
+ end
+end
+
+def fun_l28_n83(x)
+ if (x < 1)
+ fun_l29_n361(x)
+ else
+ fun_l29_n336(x)
+ end
+end
+
+def fun_l28_n84(x)
+ if (x < 1)
+ fun_l29_n642(x)
+ else
+ fun_l29_n495(x)
+ end
+end
+
+def fun_l28_n85(x)
+ if (x < 1)
+ fun_l29_n688(x)
+ else
+ fun_l29_n20(x)
+ end
+end
+
+def fun_l28_n86(x)
+ if (x < 1)
+ fun_l29_n805(x)
+ else
+ fun_l29_n363(x)
+ end
+end
+
+def fun_l28_n87(x)
+ if (x < 1)
+ fun_l29_n215(x)
+ else
+ fun_l29_n530(x)
+ end
+end
+
+def fun_l28_n88(x)
+ if (x < 1)
+ fun_l29_n355(x)
+ else
+ fun_l29_n820(x)
+ end
+end
+
+def fun_l28_n89(x)
+ if (x < 1)
+ fun_l29_n593(x)
+ else
+ fun_l29_n443(x)
+ end
+end
+
+def fun_l28_n90(x)
+ if (x < 1)
+ fun_l29_n917(x)
+ else
+ fun_l29_n920(x)
+ end
+end
+
+def fun_l28_n91(x)
+ if (x < 1)
+ fun_l29_n571(x)
+ else
+ fun_l29_n545(x)
+ end
+end
+
+def fun_l28_n92(x)
+ if (x < 1)
+ fun_l29_n871(x)
+ else
+ fun_l29_n497(x)
+ end
+end
+
+def fun_l28_n93(x)
+ if (x < 1)
+ fun_l29_n433(x)
+ else
+ fun_l29_n899(x)
+ end
+end
+
+def fun_l28_n94(x)
+ if (x < 1)
+ fun_l29_n139(x)
+ else
+ fun_l29_n836(x)
+ end
+end
+
+def fun_l28_n95(x)
+ if (x < 1)
+ fun_l29_n265(x)
+ else
+ fun_l29_n297(x)
+ end
+end
+
+def fun_l28_n96(x)
+ if (x < 1)
+ fun_l29_n554(x)
+ else
+ fun_l29_n345(x)
+ end
+end
+
+def fun_l28_n97(x)
+ if (x < 1)
+ fun_l29_n674(x)
+ else
+ fun_l29_n632(x)
+ end
+end
+
+def fun_l28_n98(x)
+ if (x < 1)
+ fun_l29_n287(x)
+ else
+ fun_l29_n606(x)
+ end
+end
+
+def fun_l28_n99(x)
+ if (x < 1)
+ fun_l29_n288(x)
+ else
+ fun_l29_n751(x)
+ end
+end
+
+def fun_l28_n100(x)
+ if (x < 1)
+ fun_l29_n673(x)
+ else
+ fun_l29_n461(x)
+ end
+end
+
+def fun_l28_n101(x)
+ if (x < 1)
+ fun_l29_n633(x)
+ else
+ fun_l29_n688(x)
+ end
+end
+
+def fun_l28_n102(x)
+ if (x < 1)
+ fun_l29_n487(x)
+ else
+ fun_l29_n879(x)
+ end
+end
+
+def fun_l28_n103(x)
+ if (x < 1)
+ fun_l29_n12(x)
+ else
+ fun_l29_n808(x)
+ end
+end
+
+def fun_l28_n104(x)
+ if (x < 1)
+ fun_l29_n560(x)
+ else
+ fun_l29_n174(x)
+ end
+end
+
+def fun_l28_n105(x)
+ if (x < 1)
+ fun_l29_n379(x)
+ else
+ fun_l29_n509(x)
+ end
+end
+
+def fun_l28_n106(x)
+ if (x < 1)
+ fun_l29_n848(x)
+ else
+ fun_l29_n783(x)
+ end
+end
+
+def fun_l28_n107(x)
+ if (x < 1)
+ fun_l29_n564(x)
+ else
+ fun_l29_n584(x)
+ end
+end
+
+def fun_l28_n108(x)
+ if (x < 1)
+ fun_l29_n251(x)
+ else
+ fun_l29_n77(x)
+ end
+end
+
+def fun_l28_n109(x)
+ if (x < 1)
+ fun_l29_n588(x)
+ else
+ fun_l29_n351(x)
+ end
+end
+
+def fun_l28_n110(x)
+ if (x < 1)
+ fun_l29_n43(x)
+ else
+ fun_l29_n102(x)
+ end
+end
+
+def fun_l28_n111(x)
+ if (x < 1)
+ fun_l29_n33(x)
+ else
+ fun_l29_n168(x)
+ end
+end
+
+def fun_l28_n112(x)
+ if (x < 1)
+ fun_l29_n977(x)
+ else
+ fun_l29_n832(x)
+ end
+end
+
+def fun_l28_n113(x)
+ if (x < 1)
+ fun_l29_n189(x)
+ else
+ fun_l29_n657(x)
+ end
+end
+
+def fun_l28_n114(x)
+ if (x < 1)
+ fun_l29_n833(x)
+ else
+ fun_l29_n237(x)
+ end
+end
+
+def fun_l28_n115(x)
+ if (x < 1)
+ fun_l29_n621(x)
+ else
+ fun_l29_n675(x)
+ end
+end
+
+def fun_l28_n116(x)
+ if (x < 1)
+ fun_l29_n944(x)
+ else
+ fun_l29_n469(x)
+ end
+end
+
+def fun_l28_n117(x)
+ if (x < 1)
+ fun_l29_n2(x)
+ else
+ fun_l29_n959(x)
+ end
+end
+
+def fun_l28_n118(x)
+ if (x < 1)
+ fun_l29_n260(x)
+ else
+ fun_l29_n580(x)
+ end
+end
+
+def fun_l28_n119(x)
+ if (x < 1)
+ fun_l29_n464(x)
+ else
+ fun_l29_n411(x)
+ end
+end
+
+def fun_l28_n120(x)
+ if (x < 1)
+ fun_l29_n973(x)
+ else
+ fun_l29_n837(x)
+ end
+end
+
+def fun_l28_n121(x)
+ if (x < 1)
+ fun_l29_n511(x)
+ else
+ fun_l29_n896(x)
+ end
+end
+
+def fun_l28_n122(x)
+ if (x < 1)
+ fun_l29_n621(x)
+ else
+ fun_l29_n952(x)
+ end
+end
+
+def fun_l28_n123(x)
+ if (x < 1)
+ fun_l29_n250(x)
+ else
+ fun_l29_n551(x)
+ end
+end
+
+def fun_l28_n124(x)
+ if (x < 1)
+ fun_l29_n761(x)
+ else
+ fun_l29_n659(x)
+ end
+end
+
+def fun_l28_n125(x)
+ if (x < 1)
+ fun_l29_n43(x)
+ else
+ fun_l29_n265(x)
+ end
+end
+
+def fun_l28_n126(x)
+ if (x < 1)
+ fun_l29_n794(x)
+ else
+ fun_l29_n953(x)
+ end
+end
+
+def fun_l28_n127(x)
+ if (x < 1)
+ fun_l29_n858(x)
+ else
+ fun_l29_n582(x)
+ end
+end
+
+def fun_l28_n128(x)
+ if (x < 1)
+ fun_l29_n762(x)
+ else
+ fun_l29_n710(x)
+ end
+end
+
+def fun_l28_n129(x)
+ if (x < 1)
+ fun_l29_n541(x)
+ else
+ fun_l29_n182(x)
+ end
+end
+
+def fun_l28_n130(x)
+ if (x < 1)
+ fun_l29_n325(x)
+ else
+ fun_l29_n318(x)
+ end
+end
+
+def fun_l28_n131(x)
+ if (x < 1)
+ fun_l29_n751(x)
+ else
+ fun_l29_n499(x)
+ end
+end
+
+def fun_l28_n132(x)
+ if (x < 1)
+ fun_l29_n185(x)
+ else
+ fun_l29_n547(x)
+ end
+end
+
+def fun_l28_n133(x)
+ if (x < 1)
+ fun_l29_n155(x)
+ else
+ fun_l29_n691(x)
+ end
+end
+
+def fun_l28_n134(x)
+ if (x < 1)
+ fun_l29_n326(x)
+ else
+ fun_l29_n950(x)
+ end
+end
+
+def fun_l28_n135(x)
+ if (x < 1)
+ fun_l29_n782(x)
+ else
+ fun_l29_n968(x)
+ end
+end
+
+def fun_l28_n136(x)
+ if (x < 1)
+ fun_l29_n349(x)
+ else
+ fun_l29_n668(x)
+ end
+end
+
+def fun_l28_n137(x)
+ if (x < 1)
+ fun_l29_n897(x)
+ else
+ fun_l29_n243(x)
+ end
+end
+
+def fun_l28_n138(x)
+ if (x < 1)
+ fun_l29_n994(x)
+ else
+ fun_l29_n84(x)
+ end
+end
+
+def fun_l28_n139(x)
+ if (x < 1)
+ fun_l29_n95(x)
+ else
+ fun_l29_n705(x)
+ end
+end
+
+def fun_l28_n140(x)
+ if (x < 1)
+ fun_l29_n864(x)
+ else
+ fun_l29_n636(x)
+ end
+end
+
+def fun_l28_n141(x)
+ if (x < 1)
+ fun_l29_n587(x)
+ else
+ fun_l29_n908(x)
+ end
+end
+
+def fun_l28_n142(x)
+ if (x < 1)
+ fun_l29_n255(x)
+ else
+ fun_l29_n633(x)
+ end
+end
+
+def fun_l28_n143(x)
+ if (x < 1)
+ fun_l29_n142(x)
+ else
+ fun_l29_n305(x)
+ end
+end
+
+def fun_l28_n144(x)
+ if (x < 1)
+ fun_l29_n735(x)
+ else
+ fun_l29_n637(x)
+ end
+end
+
+def fun_l28_n145(x)
+ if (x < 1)
+ fun_l29_n637(x)
+ else
+ fun_l29_n975(x)
+ end
+end
+
+def fun_l28_n146(x)
+ if (x < 1)
+ fun_l29_n560(x)
+ else
+ fun_l29_n534(x)
+ end
+end
+
+def fun_l28_n147(x)
+ if (x < 1)
+ fun_l29_n829(x)
+ else
+ fun_l29_n344(x)
+ end
+end
+
+def fun_l28_n148(x)
+ if (x < 1)
+ fun_l29_n38(x)
+ else
+ fun_l29_n339(x)
+ end
+end
+
+def fun_l28_n149(x)
+ if (x < 1)
+ fun_l29_n178(x)
+ else
+ fun_l29_n178(x)
+ end
+end
+
+def fun_l28_n150(x)
+ if (x < 1)
+ fun_l29_n434(x)
+ else
+ fun_l29_n677(x)
+ end
+end
+
+def fun_l28_n151(x)
+ if (x < 1)
+ fun_l29_n910(x)
+ else
+ fun_l29_n230(x)
+ end
+end
+
+def fun_l28_n152(x)
+ if (x < 1)
+ fun_l29_n750(x)
+ else
+ fun_l29_n534(x)
+ end
+end
+
+def fun_l28_n153(x)
+ if (x < 1)
+ fun_l29_n550(x)
+ else
+ fun_l29_n757(x)
+ end
+end
+
+def fun_l28_n154(x)
+ if (x < 1)
+ fun_l29_n832(x)
+ else
+ fun_l29_n177(x)
+ end
+end
+
+def fun_l28_n155(x)
+ if (x < 1)
+ fun_l29_n724(x)
+ else
+ fun_l29_n669(x)
+ end
+end
+
+def fun_l28_n156(x)
+ if (x < 1)
+ fun_l29_n362(x)
+ else
+ fun_l29_n882(x)
+ end
+end
+
+def fun_l28_n157(x)
+ if (x < 1)
+ fun_l29_n164(x)
+ else
+ fun_l29_n919(x)
+ end
+end
+
+def fun_l28_n158(x)
+ if (x < 1)
+ fun_l29_n300(x)
+ else
+ fun_l29_n343(x)
+ end
+end
+
+def fun_l28_n159(x)
+ if (x < 1)
+ fun_l29_n395(x)
+ else
+ fun_l29_n535(x)
+ end
+end
+
+def fun_l28_n160(x)
+ if (x < 1)
+ fun_l29_n127(x)
+ else
+ fun_l29_n666(x)
+ end
+end
+
+def fun_l28_n161(x)
+ if (x < 1)
+ fun_l29_n207(x)
+ else
+ fun_l29_n935(x)
+ end
+end
+
+def fun_l28_n162(x)
+ if (x < 1)
+ fun_l29_n865(x)
+ else
+ fun_l29_n692(x)
+ end
+end
+
+def fun_l28_n163(x)
+ if (x < 1)
+ fun_l29_n429(x)
+ else
+ fun_l29_n329(x)
+ end
+end
+
+def fun_l28_n164(x)
+ if (x < 1)
+ fun_l29_n874(x)
+ else
+ fun_l29_n650(x)
+ end
+end
+
+def fun_l28_n165(x)
+ if (x < 1)
+ fun_l29_n985(x)
+ else
+ fun_l29_n488(x)
+ end
+end
+
+def fun_l28_n166(x)
+ if (x < 1)
+ fun_l29_n425(x)
+ else
+ fun_l29_n297(x)
+ end
+end
+
+def fun_l28_n167(x)
+ if (x < 1)
+ fun_l29_n468(x)
+ else
+ fun_l29_n331(x)
+ end
+end
+
+def fun_l28_n168(x)
+ if (x < 1)
+ fun_l29_n991(x)
+ else
+ fun_l29_n399(x)
+ end
+end
+
+def fun_l28_n169(x)
+ if (x < 1)
+ fun_l29_n402(x)
+ else
+ fun_l29_n931(x)
+ end
+end
+
+def fun_l28_n170(x)
+ if (x < 1)
+ fun_l29_n984(x)
+ else
+ fun_l29_n586(x)
+ end
+end
+
+def fun_l28_n171(x)
+ if (x < 1)
+ fun_l29_n305(x)
+ else
+ fun_l29_n638(x)
+ end
+end
+
+def fun_l28_n172(x)
+ if (x < 1)
+ fun_l29_n251(x)
+ else
+ fun_l29_n94(x)
+ end
+end
+
+def fun_l28_n173(x)
+ if (x < 1)
+ fun_l29_n225(x)
+ else
+ fun_l29_n466(x)
+ end
+end
+
+def fun_l28_n174(x)
+ if (x < 1)
+ fun_l29_n643(x)
+ else
+ fun_l29_n974(x)
+ end
+end
+
+def fun_l28_n175(x)
+ if (x < 1)
+ fun_l29_n634(x)
+ else
+ fun_l29_n321(x)
+ end
+end
+
+def fun_l28_n176(x)
+ if (x < 1)
+ fun_l29_n269(x)
+ else
+ fun_l29_n237(x)
+ end
+end
+
+def fun_l28_n177(x)
+ if (x < 1)
+ fun_l29_n649(x)
+ else
+ fun_l29_n661(x)
+ end
+end
+
+def fun_l28_n178(x)
+ if (x < 1)
+ fun_l29_n919(x)
+ else
+ fun_l29_n997(x)
+ end
+end
+
+def fun_l28_n179(x)
+ if (x < 1)
+ fun_l29_n634(x)
+ else
+ fun_l29_n967(x)
+ end
+end
+
+def fun_l28_n180(x)
+ if (x < 1)
+ fun_l29_n798(x)
+ else
+ fun_l29_n733(x)
+ end
+end
+
+def fun_l28_n181(x)
+ if (x < 1)
+ fun_l29_n975(x)
+ else
+ fun_l29_n28(x)
+ end
+end
+
+def fun_l28_n182(x)
+ if (x < 1)
+ fun_l29_n973(x)
+ else
+ fun_l29_n616(x)
+ end
+end
+
+def fun_l28_n183(x)
+ if (x < 1)
+ fun_l29_n360(x)
+ else
+ fun_l29_n18(x)
+ end
+end
+
+def fun_l28_n184(x)
+ if (x < 1)
+ fun_l29_n281(x)
+ else
+ fun_l29_n271(x)
+ end
+end
+
+def fun_l28_n185(x)
+ if (x < 1)
+ fun_l29_n216(x)
+ else
+ fun_l29_n193(x)
+ end
+end
+
+def fun_l28_n186(x)
+ if (x < 1)
+ fun_l29_n262(x)
+ else
+ fun_l29_n509(x)
+ end
+end
+
+def fun_l28_n187(x)
+ if (x < 1)
+ fun_l29_n160(x)
+ else
+ fun_l29_n770(x)
+ end
+end
+
+def fun_l28_n188(x)
+ if (x < 1)
+ fun_l29_n411(x)
+ else
+ fun_l29_n605(x)
+ end
+end
+
+def fun_l28_n189(x)
+ if (x < 1)
+ fun_l29_n397(x)
+ else
+ fun_l29_n205(x)
+ end
+end
+
+def fun_l28_n190(x)
+ if (x < 1)
+ fun_l29_n529(x)
+ else
+ fun_l29_n545(x)
+ end
+end
+
+def fun_l28_n191(x)
+ if (x < 1)
+ fun_l29_n528(x)
+ else
+ fun_l29_n472(x)
+ end
+end
+
+def fun_l28_n192(x)
+ if (x < 1)
+ fun_l29_n843(x)
+ else
+ fun_l29_n88(x)
+ end
+end
+
+def fun_l28_n193(x)
+ if (x < 1)
+ fun_l29_n827(x)
+ else
+ fun_l29_n6(x)
+ end
+end
+
+def fun_l28_n194(x)
+ if (x < 1)
+ fun_l29_n567(x)
+ else
+ fun_l29_n622(x)
+ end
+end
+
+def fun_l28_n195(x)
+ if (x < 1)
+ fun_l29_n799(x)
+ else
+ fun_l29_n605(x)
+ end
+end
+
+def fun_l28_n196(x)
+ if (x < 1)
+ fun_l29_n930(x)
+ else
+ fun_l29_n643(x)
+ end
+end
+
+def fun_l28_n197(x)
+ if (x < 1)
+ fun_l29_n445(x)
+ else
+ fun_l29_n226(x)
+ end
+end
+
+def fun_l28_n198(x)
+ if (x < 1)
+ fun_l29_n453(x)
+ else
+ fun_l29_n941(x)
+ end
+end
+
+def fun_l28_n199(x)
+ if (x < 1)
+ fun_l29_n40(x)
+ else
+ fun_l29_n602(x)
+ end
+end
+
+def fun_l28_n200(x)
+ if (x < 1)
+ fun_l29_n804(x)
+ else
+ fun_l29_n355(x)
+ end
+end
+
+def fun_l28_n201(x)
+ if (x < 1)
+ fun_l29_n894(x)
+ else
+ fun_l29_n749(x)
+ end
+end
+
+def fun_l28_n202(x)
+ if (x < 1)
+ fun_l29_n105(x)
+ else
+ fun_l29_n182(x)
+ end
+end
+
+def fun_l28_n203(x)
+ if (x < 1)
+ fun_l29_n106(x)
+ else
+ fun_l29_n670(x)
+ end
+end
+
+def fun_l28_n204(x)
+ if (x < 1)
+ fun_l29_n897(x)
+ else
+ fun_l29_n337(x)
+ end
+end
+
+def fun_l28_n205(x)
+ if (x < 1)
+ fun_l29_n149(x)
+ else
+ fun_l29_n822(x)
+ end
+end
+
+def fun_l28_n206(x)
+ if (x < 1)
+ fun_l29_n2(x)
+ else
+ fun_l29_n370(x)
+ end
+end
+
+def fun_l28_n207(x)
+ if (x < 1)
+ fun_l29_n430(x)
+ else
+ fun_l29_n262(x)
+ end
+end
+
+def fun_l28_n208(x)
+ if (x < 1)
+ fun_l29_n275(x)
+ else
+ fun_l29_n156(x)
+ end
+end
+
+def fun_l28_n209(x)
+ if (x < 1)
+ fun_l29_n677(x)
+ else
+ fun_l29_n620(x)
+ end
+end
+
+def fun_l28_n210(x)
+ if (x < 1)
+ fun_l29_n732(x)
+ else
+ fun_l29_n533(x)
+ end
+end
+
+def fun_l28_n211(x)
+ if (x < 1)
+ fun_l29_n934(x)
+ else
+ fun_l29_n334(x)
+ end
+end
+
+def fun_l28_n212(x)
+ if (x < 1)
+ fun_l29_n656(x)
+ else
+ fun_l29_n889(x)
+ end
+end
+
+def fun_l28_n213(x)
+ if (x < 1)
+ fun_l29_n210(x)
+ else
+ fun_l29_n225(x)
+ end
+end
+
+def fun_l28_n214(x)
+ if (x < 1)
+ fun_l29_n496(x)
+ else
+ fun_l29_n901(x)
+ end
+end
+
+def fun_l28_n215(x)
+ if (x < 1)
+ fun_l29_n190(x)
+ else
+ fun_l29_n254(x)
+ end
+end
+
+def fun_l28_n216(x)
+ if (x < 1)
+ fun_l29_n708(x)
+ else
+ fun_l29_n680(x)
+ end
+end
+
+def fun_l28_n217(x)
+ if (x < 1)
+ fun_l29_n616(x)
+ else
+ fun_l29_n942(x)
+ end
+end
+
+def fun_l28_n218(x)
+ if (x < 1)
+ fun_l29_n515(x)
+ else
+ fun_l29_n269(x)
+ end
+end
+
+def fun_l28_n219(x)
+ if (x < 1)
+ fun_l29_n422(x)
+ else
+ fun_l29_n644(x)
+ end
+end
+
+def fun_l28_n220(x)
+ if (x < 1)
+ fun_l29_n114(x)
+ else
+ fun_l29_n566(x)
+ end
+end
+
+def fun_l28_n221(x)
+ if (x < 1)
+ fun_l29_n750(x)
+ else
+ fun_l29_n799(x)
+ end
+end
+
+def fun_l28_n222(x)
+ if (x < 1)
+ fun_l29_n121(x)
+ else
+ fun_l29_n556(x)
+ end
+end
+
+def fun_l28_n223(x)
+ if (x < 1)
+ fun_l29_n161(x)
+ else
+ fun_l29_n422(x)
+ end
+end
+
+def fun_l28_n224(x)
+ if (x < 1)
+ fun_l29_n779(x)
+ else
+ fun_l29_n214(x)
+ end
+end
+
+def fun_l28_n225(x)
+ if (x < 1)
+ fun_l29_n355(x)
+ else
+ fun_l29_n10(x)
+ end
+end
+
+def fun_l28_n226(x)
+ if (x < 1)
+ fun_l29_n923(x)
+ else
+ fun_l29_n672(x)
+ end
+end
+
+def fun_l28_n227(x)
+ if (x < 1)
+ fun_l29_n578(x)
+ else
+ fun_l29_n809(x)
+ end
+end
+
+def fun_l28_n228(x)
+ if (x < 1)
+ fun_l29_n277(x)
+ else
+ fun_l29_n979(x)
+ end
+end
+
+def fun_l28_n229(x)
+ if (x < 1)
+ fun_l29_n248(x)
+ else
+ fun_l29_n731(x)
+ end
+end
+
+def fun_l28_n230(x)
+ if (x < 1)
+ fun_l29_n374(x)
+ else
+ fun_l29_n675(x)
+ end
+end
+
+def fun_l28_n231(x)
+ if (x < 1)
+ fun_l29_n339(x)
+ else
+ fun_l29_n62(x)
+ end
+end
+
+def fun_l28_n232(x)
+ if (x < 1)
+ fun_l29_n350(x)
+ else
+ fun_l29_n51(x)
+ end
+end
+
+def fun_l28_n233(x)
+ if (x < 1)
+ fun_l29_n606(x)
+ else
+ fun_l29_n460(x)
+ end
+end
+
+def fun_l28_n234(x)
+ if (x < 1)
+ fun_l29_n266(x)
+ else
+ fun_l29_n843(x)
+ end
+end
+
+def fun_l28_n235(x)
+ if (x < 1)
+ fun_l29_n762(x)
+ else
+ fun_l29_n1(x)
+ end
+end
+
+def fun_l28_n236(x)
+ if (x < 1)
+ fun_l29_n405(x)
+ else
+ fun_l29_n867(x)
+ end
+end
+
+def fun_l28_n237(x)
+ if (x < 1)
+ fun_l29_n62(x)
+ else
+ fun_l29_n288(x)
+ end
+end
+
+def fun_l28_n238(x)
+ if (x < 1)
+ fun_l29_n120(x)
+ else
+ fun_l29_n346(x)
+ end
+end
+
+def fun_l28_n239(x)
+ if (x < 1)
+ fun_l29_n789(x)
+ else
+ fun_l29_n633(x)
+ end
+end
+
+def fun_l28_n240(x)
+ if (x < 1)
+ fun_l29_n467(x)
+ else
+ fun_l29_n150(x)
+ end
+end
+
+def fun_l28_n241(x)
+ if (x < 1)
+ fun_l29_n487(x)
+ else
+ fun_l29_n671(x)
+ end
+end
+
+def fun_l28_n242(x)
+ if (x < 1)
+ fun_l29_n147(x)
+ else
+ fun_l29_n636(x)
+ end
+end
+
+def fun_l28_n243(x)
+ if (x < 1)
+ fun_l29_n710(x)
+ else
+ fun_l29_n196(x)
+ end
+end
+
+def fun_l28_n244(x)
+ if (x < 1)
+ fun_l29_n943(x)
+ else
+ fun_l29_n768(x)
+ end
+end
+
+def fun_l28_n245(x)
+ if (x < 1)
+ fun_l29_n670(x)
+ else
+ fun_l29_n522(x)
+ end
+end
+
+def fun_l28_n246(x)
+ if (x < 1)
+ fun_l29_n12(x)
+ else
+ fun_l29_n459(x)
+ end
+end
+
+def fun_l28_n247(x)
+ if (x < 1)
+ fun_l29_n901(x)
+ else
+ fun_l29_n726(x)
+ end
+end
+
+def fun_l28_n248(x)
+ if (x < 1)
+ fun_l29_n824(x)
+ else
+ fun_l29_n327(x)
+ end
+end
+
+def fun_l28_n249(x)
+ if (x < 1)
+ fun_l29_n327(x)
+ else
+ fun_l29_n343(x)
+ end
+end
+
+def fun_l28_n250(x)
+ if (x < 1)
+ fun_l29_n242(x)
+ else
+ fun_l29_n764(x)
+ end
+end
+
+def fun_l28_n251(x)
+ if (x < 1)
+ fun_l29_n780(x)
+ else
+ fun_l29_n117(x)
+ end
+end
+
+def fun_l28_n252(x)
+ if (x < 1)
+ fun_l29_n309(x)
+ else
+ fun_l29_n821(x)
+ end
+end
+
+def fun_l28_n253(x)
+ if (x < 1)
+ fun_l29_n250(x)
+ else
+ fun_l29_n933(x)
+ end
+end
+
+def fun_l28_n254(x)
+ if (x < 1)
+ fun_l29_n470(x)
+ else
+ fun_l29_n808(x)
+ end
+end
+
+def fun_l28_n255(x)
+ if (x < 1)
+ fun_l29_n425(x)
+ else
+ fun_l29_n800(x)
+ end
+end
+
+def fun_l28_n256(x)
+ if (x < 1)
+ fun_l29_n913(x)
+ else
+ fun_l29_n199(x)
+ end
+end
+
+def fun_l28_n257(x)
+ if (x < 1)
+ fun_l29_n25(x)
+ else
+ fun_l29_n412(x)
+ end
+end
+
+def fun_l28_n258(x)
+ if (x < 1)
+ fun_l29_n194(x)
+ else
+ fun_l29_n606(x)
+ end
+end
+
+def fun_l28_n259(x)
+ if (x < 1)
+ fun_l29_n653(x)
+ else
+ fun_l29_n72(x)
+ end
+end
+
+def fun_l28_n260(x)
+ if (x < 1)
+ fun_l29_n198(x)
+ else
+ fun_l29_n742(x)
+ end
+end
+
+def fun_l28_n261(x)
+ if (x < 1)
+ fun_l29_n452(x)
+ else
+ fun_l29_n522(x)
+ end
+end
+
+def fun_l28_n262(x)
+ if (x < 1)
+ fun_l29_n214(x)
+ else
+ fun_l29_n131(x)
+ end
+end
+
+def fun_l28_n263(x)
+ if (x < 1)
+ fun_l29_n481(x)
+ else
+ fun_l29_n848(x)
+ end
+end
+
+def fun_l28_n264(x)
+ if (x < 1)
+ fun_l29_n147(x)
+ else
+ fun_l29_n187(x)
+ end
+end
+
+def fun_l28_n265(x)
+ if (x < 1)
+ fun_l29_n476(x)
+ else
+ fun_l29_n859(x)
+ end
+end
+
+def fun_l28_n266(x)
+ if (x < 1)
+ fun_l29_n130(x)
+ else
+ fun_l29_n356(x)
+ end
+end
+
+def fun_l28_n267(x)
+ if (x < 1)
+ fun_l29_n427(x)
+ else
+ fun_l29_n578(x)
+ end
+end
+
+def fun_l28_n268(x)
+ if (x < 1)
+ fun_l29_n810(x)
+ else
+ fun_l29_n483(x)
+ end
+end
+
+def fun_l28_n269(x)
+ if (x < 1)
+ fun_l29_n496(x)
+ else
+ fun_l29_n548(x)
+ end
+end
+
+def fun_l28_n270(x)
+ if (x < 1)
+ fun_l29_n159(x)
+ else
+ fun_l29_n184(x)
+ end
+end
+
+def fun_l28_n271(x)
+ if (x < 1)
+ fun_l29_n407(x)
+ else
+ fun_l29_n855(x)
+ end
+end
+
+def fun_l28_n272(x)
+ if (x < 1)
+ fun_l29_n41(x)
+ else
+ fun_l29_n493(x)
+ end
+end
+
+def fun_l28_n273(x)
+ if (x < 1)
+ fun_l29_n853(x)
+ else
+ fun_l29_n711(x)
+ end
+end
+
+def fun_l28_n274(x)
+ if (x < 1)
+ fun_l29_n397(x)
+ else
+ fun_l29_n68(x)
+ end
+end
+
+def fun_l28_n275(x)
+ if (x < 1)
+ fun_l29_n744(x)
+ else
+ fun_l29_n944(x)
+ end
+end
+
+def fun_l28_n276(x)
+ if (x < 1)
+ fun_l29_n641(x)
+ else
+ fun_l29_n766(x)
+ end
+end
+
+def fun_l28_n277(x)
+ if (x < 1)
+ fun_l29_n983(x)
+ else
+ fun_l29_n587(x)
+ end
+end
+
+def fun_l28_n278(x)
+ if (x < 1)
+ fun_l29_n683(x)
+ else
+ fun_l29_n192(x)
+ end
+end
+
+def fun_l28_n279(x)
+ if (x < 1)
+ fun_l29_n252(x)
+ else
+ fun_l29_n30(x)
+ end
+end
+
+def fun_l28_n280(x)
+ if (x < 1)
+ fun_l29_n129(x)
+ else
+ fun_l29_n561(x)
+ end
+end
+
+def fun_l28_n281(x)
+ if (x < 1)
+ fun_l29_n828(x)
+ else
+ fun_l29_n697(x)
+ end
+end
+
+def fun_l28_n282(x)
+ if (x < 1)
+ fun_l29_n492(x)
+ else
+ fun_l29_n243(x)
+ end
+end
+
+def fun_l28_n283(x)
+ if (x < 1)
+ fun_l29_n642(x)
+ else
+ fun_l29_n736(x)
+ end
+end
+
+def fun_l28_n284(x)
+ if (x < 1)
+ fun_l29_n448(x)
+ else
+ fun_l29_n838(x)
+ end
+end
+
+def fun_l28_n285(x)
+ if (x < 1)
+ fun_l29_n133(x)
+ else
+ fun_l29_n372(x)
+ end
+end
+
+def fun_l28_n286(x)
+ if (x < 1)
+ fun_l29_n318(x)
+ else
+ fun_l29_n739(x)
+ end
+end
+
+def fun_l28_n287(x)
+ if (x < 1)
+ fun_l29_n449(x)
+ else
+ fun_l29_n743(x)
+ end
+end
+
+def fun_l28_n288(x)
+ if (x < 1)
+ fun_l29_n769(x)
+ else
+ fun_l29_n496(x)
+ end
+end
+
+def fun_l28_n289(x)
+ if (x < 1)
+ fun_l29_n455(x)
+ else
+ fun_l29_n893(x)
+ end
+end
+
+def fun_l28_n290(x)
+ if (x < 1)
+ fun_l29_n651(x)
+ else
+ fun_l29_n865(x)
+ end
+end
+
+def fun_l28_n291(x)
+ if (x < 1)
+ fun_l29_n194(x)
+ else
+ fun_l29_n491(x)
+ end
+end
+
+def fun_l28_n292(x)
+ if (x < 1)
+ fun_l29_n178(x)
+ else
+ fun_l29_n96(x)
+ end
+end
+
+def fun_l28_n293(x)
+ if (x < 1)
+ fun_l29_n32(x)
+ else
+ fun_l29_n262(x)
+ end
+end
+
+def fun_l28_n294(x)
+ if (x < 1)
+ fun_l29_n706(x)
+ else
+ fun_l29_n864(x)
+ end
+end
+
+def fun_l28_n295(x)
+ if (x < 1)
+ fun_l29_n209(x)
+ else
+ fun_l29_n220(x)
+ end
+end
+
+def fun_l28_n296(x)
+ if (x < 1)
+ fun_l29_n970(x)
+ else
+ fun_l29_n194(x)
+ end
+end
+
+def fun_l28_n297(x)
+ if (x < 1)
+ fun_l29_n959(x)
+ else
+ fun_l29_n472(x)
+ end
+end
+
+def fun_l28_n298(x)
+ if (x < 1)
+ fun_l29_n778(x)
+ else
+ fun_l29_n66(x)
+ end
+end
+
+def fun_l28_n299(x)
+ if (x < 1)
+ fun_l29_n942(x)
+ else
+ fun_l29_n461(x)
+ end
+end
+
+def fun_l28_n300(x)
+ if (x < 1)
+ fun_l29_n563(x)
+ else
+ fun_l29_n426(x)
+ end
+end
+
+def fun_l28_n301(x)
+ if (x < 1)
+ fun_l29_n603(x)
+ else
+ fun_l29_n968(x)
+ end
+end
+
+def fun_l28_n302(x)
+ if (x < 1)
+ fun_l29_n908(x)
+ else
+ fun_l29_n767(x)
+ end
+end
+
+def fun_l28_n303(x)
+ if (x < 1)
+ fun_l29_n387(x)
+ else
+ fun_l29_n484(x)
+ end
+end
+
+def fun_l28_n304(x)
+ if (x < 1)
+ fun_l29_n744(x)
+ else
+ fun_l29_n463(x)
+ end
+end
+
+def fun_l28_n305(x)
+ if (x < 1)
+ fun_l29_n964(x)
+ else
+ fun_l29_n43(x)
+ end
+end
+
+def fun_l28_n306(x)
+ if (x < 1)
+ fun_l29_n65(x)
+ else
+ fun_l29_n910(x)
+ end
+end
+
+def fun_l28_n307(x)
+ if (x < 1)
+ fun_l29_n318(x)
+ else
+ fun_l29_n375(x)
+ end
+end
+
+def fun_l28_n308(x)
+ if (x < 1)
+ fun_l29_n775(x)
+ else
+ fun_l29_n588(x)
+ end
+end
+
+def fun_l28_n309(x)
+ if (x < 1)
+ fun_l29_n977(x)
+ else
+ fun_l29_n299(x)
+ end
+end
+
+def fun_l28_n310(x)
+ if (x < 1)
+ fun_l29_n497(x)
+ else
+ fun_l29_n792(x)
+ end
+end
+
+def fun_l28_n311(x)
+ if (x < 1)
+ fun_l29_n909(x)
+ else
+ fun_l29_n740(x)
+ end
+end
+
+def fun_l28_n312(x)
+ if (x < 1)
+ fun_l29_n967(x)
+ else
+ fun_l29_n4(x)
+ end
+end
+
+def fun_l28_n313(x)
+ if (x < 1)
+ fun_l29_n455(x)
+ else
+ fun_l29_n11(x)
+ end
+end
+
+def fun_l28_n314(x)
+ if (x < 1)
+ fun_l29_n996(x)
+ else
+ fun_l29_n851(x)
+ end
+end
+
+def fun_l28_n315(x)
+ if (x < 1)
+ fun_l29_n110(x)
+ else
+ fun_l29_n517(x)
+ end
+end
+
+def fun_l28_n316(x)
+ if (x < 1)
+ fun_l29_n648(x)
+ else
+ fun_l29_n279(x)
+ end
+end
+
+def fun_l28_n317(x)
+ if (x < 1)
+ fun_l29_n820(x)
+ else
+ fun_l29_n157(x)
+ end
+end
+
+def fun_l28_n318(x)
+ if (x < 1)
+ fun_l29_n957(x)
+ else
+ fun_l29_n93(x)
+ end
+end
+
+def fun_l28_n319(x)
+ if (x < 1)
+ fun_l29_n681(x)
+ else
+ fun_l29_n508(x)
+ end
+end
+
+def fun_l28_n320(x)
+ if (x < 1)
+ fun_l29_n613(x)
+ else
+ fun_l29_n274(x)
+ end
+end
+
+def fun_l28_n321(x)
+ if (x < 1)
+ fun_l29_n239(x)
+ else
+ fun_l29_n862(x)
+ end
+end
+
+def fun_l28_n322(x)
+ if (x < 1)
+ fun_l29_n101(x)
+ else
+ fun_l29_n81(x)
+ end
+end
+
+def fun_l28_n323(x)
+ if (x < 1)
+ fun_l29_n96(x)
+ else
+ fun_l29_n908(x)
+ end
+end
+
+def fun_l28_n324(x)
+ if (x < 1)
+ fun_l29_n443(x)
+ else
+ fun_l29_n78(x)
+ end
+end
+
+def fun_l28_n325(x)
+ if (x < 1)
+ fun_l29_n857(x)
+ else
+ fun_l29_n210(x)
+ end
+end
+
+def fun_l28_n326(x)
+ if (x < 1)
+ fun_l29_n51(x)
+ else
+ fun_l29_n524(x)
+ end
+end
+
+def fun_l28_n327(x)
+ if (x < 1)
+ fun_l29_n381(x)
+ else
+ fun_l29_n309(x)
+ end
+end
+
+def fun_l28_n328(x)
+ if (x < 1)
+ fun_l29_n787(x)
+ else
+ fun_l29_n176(x)
+ end
+end
+
+def fun_l28_n329(x)
+ if (x < 1)
+ fun_l29_n568(x)
+ else
+ fun_l29_n652(x)
+ end
+end
+
+def fun_l28_n330(x)
+ if (x < 1)
+ fun_l29_n1(x)
+ else
+ fun_l29_n634(x)
+ end
+end
+
+def fun_l28_n331(x)
+ if (x < 1)
+ fun_l29_n491(x)
+ else
+ fun_l29_n365(x)
+ end
+end
+
+def fun_l28_n332(x)
+ if (x < 1)
+ fun_l29_n604(x)
+ else
+ fun_l29_n586(x)
+ end
+end
+
+def fun_l28_n333(x)
+ if (x < 1)
+ fun_l29_n811(x)
+ else
+ fun_l29_n981(x)
+ end
+end
+
+def fun_l28_n334(x)
+ if (x < 1)
+ fun_l29_n485(x)
+ else
+ fun_l29_n843(x)
+ end
+end
+
+def fun_l28_n335(x)
+ if (x < 1)
+ fun_l29_n188(x)
+ else
+ fun_l29_n805(x)
+ end
+end
+
+def fun_l28_n336(x)
+ if (x < 1)
+ fun_l29_n818(x)
+ else
+ fun_l29_n650(x)
+ end
+end
+
+def fun_l28_n337(x)
+ if (x < 1)
+ fun_l29_n829(x)
+ else
+ fun_l29_n13(x)
+ end
+end
+
+def fun_l28_n338(x)
+ if (x < 1)
+ fun_l29_n665(x)
+ else
+ fun_l29_n7(x)
+ end
+end
+
+def fun_l28_n339(x)
+ if (x < 1)
+ fun_l29_n347(x)
+ else
+ fun_l29_n914(x)
+ end
+end
+
+def fun_l28_n340(x)
+ if (x < 1)
+ fun_l29_n819(x)
+ else
+ fun_l29_n7(x)
+ end
+end
+
+def fun_l28_n341(x)
+ if (x < 1)
+ fun_l29_n108(x)
+ else
+ fun_l29_n838(x)
+ end
+end
+
+def fun_l28_n342(x)
+ if (x < 1)
+ fun_l29_n292(x)
+ else
+ fun_l29_n831(x)
+ end
+end
+
+def fun_l28_n343(x)
+ if (x < 1)
+ fun_l29_n892(x)
+ else
+ fun_l29_n717(x)
+ end
+end
+
+def fun_l28_n344(x)
+ if (x < 1)
+ fun_l29_n664(x)
+ else
+ fun_l29_n422(x)
+ end
+end
+
+def fun_l28_n345(x)
+ if (x < 1)
+ fun_l29_n59(x)
+ else
+ fun_l29_n858(x)
+ end
+end
+
+def fun_l28_n346(x)
+ if (x < 1)
+ fun_l29_n88(x)
+ else
+ fun_l29_n97(x)
+ end
+end
+
+def fun_l28_n347(x)
+ if (x < 1)
+ fun_l29_n852(x)
+ else
+ fun_l29_n37(x)
+ end
+end
+
+def fun_l28_n348(x)
+ if (x < 1)
+ fun_l29_n201(x)
+ else
+ fun_l29_n663(x)
+ end
+end
+
+def fun_l28_n349(x)
+ if (x < 1)
+ fun_l29_n928(x)
+ else
+ fun_l29_n743(x)
+ end
+end
+
+def fun_l28_n350(x)
+ if (x < 1)
+ fun_l29_n206(x)
+ else
+ fun_l29_n609(x)
+ end
+end
+
+def fun_l28_n351(x)
+ if (x < 1)
+ fun_l29_n98(x)
+ else
+ fun_l29_n659(x)
+ end
+end
+
+def fun_l28_n352(x)
+ if (x < 1)
+ fun_l29_n350(x)
+ else
+ fun_l29_n604(x)
+ end
+end
+
+def fun_l28_n353(x)
+ if (x < 1)
+ fun_l29_n273(x)
+ else
+ fun_l29_n831(x)
+ end
+end
+
+def fun_l28_n354(x)
+ if (x < 1)
+ fun_l29_n377(x)
+ else
+ fun_l29_n926(x)
+ end
+end
+
+def fun_l28_n355(x)
+ if (x < 1)
+ fun_l29_n783(x)
+ else
+ fun_l29_n646(x)
+ end
+end
+
+def fun_l28_n356(x)
+ if (x < 1)
+ fun_l29_n968(x)
+ else
+ fun_l29_n587(x)
+ end
+end
+
+def fun_l28_n357(x)
+ if (x < 1)
+ fun_l29_n813(x)
+ else
+ fun_l29_n791(x)
+ end
+end
+
+def fun_l28_n358(x)
+ if (x < 1)
+ fun_l29_n130(x)
+ else
+ fun_l29_n851(x)
+ end
+end
+
+def fun_l28_n359(x)
+ if (x < 1)
+ fun_l29_n858(x)
+ else
+ fun_l29_n112(x)
+ end
+end
+
+def fun_l28_n360(x)
+ if (x < 1)
+ fun_l29_n349(x)
+ else
+ fun_l29_n612(x)
+ end
+end
+
+def fun_l28_n361(x)
+ if (x < 1)
+ fun_l29_n282(x)
+ else
+ fun_l29_n357(x)
+ end
+end
+
+def fun_l28_n362(x)
+ if (x < 1)
+ fun_l29_n144(x)
+ else
+ fun_l29_n426(x)
+ end
+end
+
+def fun_l28_n363(x)
+ if (x < 1)
+ fun_l29_n438(x)
+ else
+ fun_l29_n539(x)
+ end
+end
+
+def fun_l28_n364(x)
+ if (x < 1)
+ fun_l29_n321(x)
+ else
+ fun_l29_n874(x)
+ end
+end
+
+def fun_l28_n365(x)
+ if (x < 1)
+ fun_l29_n443(x)
+ else
+ fun_l29_n985(x)
+ end
+end
+
+def fun_l28_n366(x)
+ if (x < 1)
+ fun_l29_n436(x)
+ else
+ fun_l29_n787(x)
+ end
+end
+
+def fun_l28_n367(x)
+ if (x < 1)
+ fun_l29_n354(x)
+ else
+ fun_l29_n75(x)
+ end
+end
+
+def fun_l28_n368(x)
+ if (x < 1)
+ fun_l29_n515(x)
+ else
+ fun_l29_n57(x)
+ end
+end
+
+def fun_l28_n369(x)
+ if (x < 1)
+ fun_l29_n222(x)
+ else
+ fun_l29_n954(x)
+ end
+end
+
+def fun_l28_n370(x)
+ if (x < 1)
+ fun_l29_n37(x)
+ else
+ fun_l29_n683(x)
+ end
+end
+
+def fun_l28_n371(x)
+ if (x < 1)
+ fun_l29_n104(x)
+ else
+ fun_l29_n721(x)
+ end
+end
+
+def fun_l28_n372(x)
+ if (x < 1)
+ fun_l29_n763(x)
+ else
+ fun_l29_n173(x)
+ end
+end
+
+def fun_l28_n373(x)
+ if (x < 1)
+ fun_l29_n693(x)
+ else
+ fun_l29_n132(x)
+ end
+end
+
+def fun_l28_n374(x)
+ if (x < 1)
+ fun_l29_n586(x)
+ else
+ fun_l29_n992(x)
+ end
+end
+
+def fun_l28_n375(x)
+ if (x < 1)
+ fun_l29_n815(x)
+ else
+ fun_l29_n721(x)
+ end
+end
+
+def fun_l28_n376(x)
+ if (x < 1)
+ fun_l29_n653(x)
+ else
+ fun_l29_n67(x)
+ end
+end
+
+def fun_l28_n377(x)
+ if (x < 1)
+ fun_l29_n710(x)
+ else
+ fun_l29_n787(x)
+ end
+end
+
+def fun_l28_n378(x)
+ if (x < 1)
+ fun_l29_n448(x)
+ else
+ fun_l29_n170(x)
+ end
+end
+
+def fun_l28_n379(x)
+ if (x < 1)
+ fun_l29_n433(x)
+ else
+ fun_l29_n970(x)
+ end
+end
+
+def fun_l28_n380(x)
+ if (x < 1)
+ fun_l29_n933(x)
+ else
+ fun_l29_n995(x)
+ end
+end
+
+def fun_l28_n381(x)
+ if (x < 1)
+ fun_l29_n78(x)
+ else
+ fun_l29_n791(x)
+ end
+end
+
+def fun_l28_n382(x)
+ if (x < 1)
+ fun_l29_n101(x)
+ else
+ fun_l29_n592(x)
+ end
+end
+
+def fun_l28_n383(x)
+ if (x < 1)
+ fun_l29_n470(x)
+ else
+ fun_l29_n988(x)
+ end
+end
+
+def fun_l28_n384(x)
+ if (x < 1)
+ fun_l29_n260(x)
+ else
+ fun_l29_n359(x)
+ end
+end
+
+def fun_l28_n385(x)
+ if (x < 1)
+ fun_l29_n743(x)
+ else
+ fun_l29_n373(x)
+ end
+end
+
+def fun_l28_n386(x)
+ if (x < 1)
+ fun_l29_n49(x)
+ else
+ fun_l29_n591(x)
+ end
+end
+
+def fun_l28_n387(x)
+ if (x < 1)
+ fun_l29_n271(x)
+ else
+ fun_l29_n924(x)
+ end
+end
+
+def fun_l28_n388(x)
+ if (x < 1)
+ fun_l29_n876(x)
+ else
+ fun_l29_n219(x)
+ end
+end
+
+def fun_l28_n389(x)
+ if (x < 1)
+ fun_l29_n262(x)
+ else
+ fun_l29_n857(x)
+ end
+end
+
+def fun_l28_n390(x)
+ if (x < 1)
+ fun_l29_n217(x)
+ else
+ fun_l29_n198(x)
+ end
+end
+
+def fun_l28_n391(x)
+ if (x < 1)
+ fun_l29_n603(x)
+ else
+ fun_l29_n87(x)
+ end
+end
+
+def fun_l28_n392(x)
+ if (x < 1)
+ fun_l29_n498(x)
+ else
+ fun_l29_n913(x)
+ end
+end
+
+def fun_l28_n393(x)
+ if (x < 1)
+ fun_l29_n795(x)
+ else
+ fun_l29_n87(x)
+ end
+end
+
+def fun_l28_n394(x)
+ if (x < 1)
+ fun_l29_n528(x)
+ else
+ fun_l29_n217(x)
+ end
+end
+
+def fun_l28_n395(x)
+ if (x < 1)
+ fun_l29_n300(x)
+ else
+ fun_l29_n725(x)
+ end
+end
+
+def fun_l28_n396(x)
+ if (x < 1)
+ fun_l29_n538(x)
+ else
+ fun_l29_n812(x)
+ end
+end
+
+def fun_l28_n397(x)
+ if (x < 1)
+ fun_l29_n179(x)
+ else
+ fun_l29_n765(x)
+ end
+end
+
+def fun_l28_n398(x)
+ if (x < 1)
+ fun_l29_n28(x)
+ else
+ fun_l29_n475(x)
+ end
+end
+
+def fun_l28_n399(x)
+ if (x < 1)
+ fun_l29_n471(x)
+ else
+ fun_l29_n368(x)
+ end
+end
+
+def fun_l28_n400(x)
+ if (x < 1)
+ fun_l29_n241(x)
+ else
+ fun_l29_n461(x)
+ end
+end
+
+def fun_l28_n401(x)
+ if (x < 1)
+ fun_l29_n707(x)
+ else
+ fun_l29_n502(x)
+ end
+end
+
+def fun_l28_n402(x)
+ if (x < 1)
+ fun_l29_n129(x)
+ else
+ fun_l29_n176(x)
+ end
+end
+
+def fun_l28_n403(x)
+ if (x < 1)
+ fun_l29_n410(x)
+ else
+ fun_l29_n954(x)
+ end
+end
+
+def fun_l28_n404(x)
+ if (x < 1)
+ fun_l29_n203(x)
+ else
+ fun_l29_n455(x)
+ end
+end
+
+def fun_l28_n405(x)
+ if (x < 1)
+ fun_l29_n238(x)
+ else
+ fun_l29_n865(x)
+ end
+end
+
+def fun_l28_n406(x)
+ if (x < 1)
+ fun_l29_n836(x)
+ else
+ fun_l29_n778(x)
+ end
+end
+
+def fun_l28_n407(x)
+ if (x < 1)
+ fun_l29_n620(x)
+ else
+ fun_l29_n879(x)
+ end
+end
+
+def fun_l28_n408(x)
+ if (x < 1)
+ fun_l29_n656(x)
+ else
+ fun_l29_n594(x)
+ end
+end
+
+def fun_l28_n409(x)
+ if (x < 1)
+ fun_l29_n382(x)
+ else
+ fun_l29_n51(x)
+ end
+end
+
+def fun_l28_n410(x)
+ if (x < 1)
+ fun_l29_n357(x)
+ else
+ fun_l29_n660(x)
+ end
+end
+
+def fun_l28_n411(x)
+ if (x < 1)
+ fun_l29_n900(x)
+ else
+ fun_l29_n902(x)
+ end
+end
+
+def fun_l28_n412(x)
+ if (x < 1)
+ fun_l29_n645(x)
+ else
+ fun_l29_n0(x)
+ end
+end
+
+def fun_l28_n413(x)
+ if (x < 1)
+ fun_l29_n250(x)
+ else
+ fun_l29_n499(x)
+ end
+end
+
+def fun_l28_n414(x)
+ if (x < 1)
+ fun_l29_n700(x)
+ else
+ fun_l29_n301(x)
+ end
+end
+
+def fun_l28_n415(x)
+ if (x < 1)
+ fun_l29_n711(x)
+ else
+ fun_l29_n83(x)
+ end
+end
+
+def fun_l28_n416(x)
+ if (x < 1)
+ fun_l29_n332(x)
+ else
+ fun_l29_n237(x)
+ end
+end
+
+def fun_l28_n417(x)
+ if (x < 1)
+ fun_l29_n573(x)
+ else
+ fun_l29_n822(x)
+ end
+end
+
+def fun_l28_n418(x)
+ if (x < 1)
+ fun_l29_n766(x)
+ else
+ fun_l29_n131(x)
+ end
+end
+
+def fun_l28_n419(x)
+ if (x < 1)
+ fun_l29_n696(x)
+ else
+ fun_l29_n772(x)
+ end
+end
+
+def fun_l28_n420(x)
+ if (x < 1)
+ fun_l29_n361(x)
+ else
+ fun_l29_n598(x)
+ end
+end
+
+def fun_l28_n421(x)
+ if (x < 1)
+ fun_l29_n941(x)
+ else
+ fun_l29_n403(x)
+ end
+end
+
+def fun_l28_n422(x)
+ if (x < 1)
+ fun_l29_n471(x)
+ else
+ fun_l29_n636(x)
+ end
+end
+
+def fun_l28_n423(x)
+ if (x < 1)
+ fun_l29_n650(x)
+ else
+ fun_l29_n787(x)
+ end
+end
+
+def fun_l28_n424(x)
+ if (x < 1)
+ fun_l29_n982(x)
+ else
+ fun_l29_n51(x)
+ end
+end
+
+def fun_l28_n425(x)
+ if (x < 1)
+ fun_l29_n140(x)
+ else
+ fun_l29_n255(x)
+ end
+end
+
+def fun_l28_n426(x)
+ if (x < 1)
+ fun_l29_n694(x)
+ else
+ fun_l29_n777(x)
+ end
+end
+
+def fun_l28_n427(x)
+ if (x < 1)
+ fun_l29_n984(x)
+ else
+ fun_l29_n118(x)
+ end
+end
+
+def fun_l28_n428(x)
+ if (x < 1)
+ fun_l29_n641(x)
+ else
+ fun_l29_n904(x)
+ end
+end
+
+def fun_l28_n429(x)
+ if (x < 1)
+ fun_l29_n537(x)
+ else
+ fun_l29_n950(x)
+ end
+end
+
+def fun_l28_n430(x)
+ if (x < 1)
+ fun_l29_n844(x)
+ else
+ fun_l29_n350(x)
+ end
+end
+
+def fun_l28_n431(x)
+ if (x < 1)
+ fun_l29_n223(x)
+ else
+ fun_l29_n711(x)
+ end
+end
+
+def fun_l28_n432(x)
+ if (x < 1)
+ fun_l29_n287(x)
+ else
+ fun_l29_n424(x)
+ end
+end
+
+def fun_l28_n433(x)
+ if (x < 1)
+ fun_l29_n447(x)
+ else
+ fun_l29_n253(x)
+ end
+end
+
+def fun_l28_n434(x)
+ if (x < 1)
+ fun_l29_n484(x)
+ else
+ fun_l29_n377(x)
+ end
+end
+
+def fun_l28_n435(x)
+ if (x < 1)
+ fun_l29_n899(x)
+ else
+ fun_l29_n385(x)
+ end
+end
+
+def fun_l28_n436(x)
+ if (x < 1)
+ fun_l29_n13(x)
+ else
+ fun_l29_n910(x)
+ end
+end
+
+def fun_l28_n437(x)
+ if (x < 1)
+ fun_l29_n431(x)
+ else
+ fun_l29_n505(x)
+ end
+end
+
+def fun_l28_n438(x)
+ if (x < 1)
+ fun_l29_n974(x)
+ else
+ fun_l29_n162(x)
+ end
+end
+
+def fun_l28_n439(x)
+ if (x < 1)
+ fun_l29_n833(x)
+ else
+ fun_l29_n26(x)
+ end
+end
+
+def fun_l28_n440(x)
+ if (x < 1)
+ fun_l29_n576(x)
+ else
+ fun_l29_n783(x)
+ end
+end
+
+def fun_l28_n441(x)
+ if (x < 1)
+ fun_l29_n580(x)
+ else
+ fun_l29_n476(x)
+ end
+end
+
+def fun_l28_n442(x)
+ if (x < 1)
+ fun_l29_n415(x)
+ else
+ fun_l29_n695(x)
+ end
+end
+
+def fun_l28_n443(x)
+ if (x < 1)
+ fun_l29_n279(x)
+ else
+ fun_l29_n442(x)
+ end
+end
+
+def fun_l28_n444(x)
+ if (x < 1)
+ fun_l29_n784(x)
+ else
+ fun_l29_n25(x)
+ end
+end
+
+def fun_l28_n445(x)
+ if (x < 1)
+ fun_l29_n682(x)
+ else
+ fun_l29_n632(x)
+ end
+end
+
+def fun_l28_n446(x)
+ if (x < 1)
+ fun_l29_n793(x)
+ else
+ fun_l29_n199(x)
+ end
+end
+
+def fun_l28_n447(x)
+ if (x < 1)
+ fun_l29_n885(x)
+ else
+ fun_l29_n590(x)
+ end
+end
+
+def fun_l28_n448(x)
+ if (x < 1)
+ fun_l29_n457(x)
+ else
+ fun_l29_n664(x)
+ end
+end
+
+def fun_l28_n449(x)
+ if (x < 1)
+ fun_l29_n272(x)
+ else
+ fun_l29_n207(x)
+ end
+end
+
+def fun_l28_n450(x)
+ if (x < 1)
+ fun_l29_n73(x)
+ else
+ fun_l29_n598(x)
+ end
+end
+
+def fun_l28_n451(x)
+ if (x < 1)
+ fun_l29_n674(x)
+ else
+ fun_l29_n305(x)
+ end
+end
+
+def fun_l28_n452(x)
+ if (x < 1)
+ fun_l29_n97(x)
+ else
+ fun_l29_n472(x)
+ end
+end
+
+def fun_l28_n453(x)
+ if (x < 1)
+ fun_l29_n995(x)
+ else
+ fun_l29_n156(x)
+ end
+end
+
+def fun_l28_n454(x)
+ if (x < 1)
+ fun_l29_n890(x)
+ else
+ fun_l29_n885(x)
+ end
+end
+
+def fun_l28_n455(x)
+ if (x < 1)
+ fun_l29_n481(x)
+ else
+ fun_l29_n712(x)
+ end
+end
+
+def fun_l28_n456(x)
+ if (x < 1)
+ fun_l29_n34(x)
+ else
+ fun_l29_n186(x)
+ end
+end
+
+def fun_l28_n457(x)
+ if (x < 1)
+ fun_l29_n767(x)
+ else
+ fun_l29_n769(x)
+ end
+end
+
+def fun_l28_n458(x)
+ if (x < 1)
+ fun_l29_n185(x)
+ else
+ fun_l29_n55(x)
+ end
+end
+
+def fun_l28_n459(x)
+ if (x < 1)
+ fun_l29_n826(x)
+ else
+ fun_l29_n954(x)
+ end
+end
+
+def fun_l28_n460(x)
+ if (x < 1)
+ fun_l29_n111(x)
+ else
+ fun_l29_n374(x)
+ end
+end
+
+def fun_l28_n461(x)
+ if (x < 1)
+ fun_l29_n988(x)
+ else
+ fun_l29_n719(x)
+ end
+end
+
+def fun_l28_n462(x)
+ if (x < 1)
+ fun_l29_n355(x)
+ else
+ fun_l29_n772(x)
+ end
+end
+
+def fun_l28_n463(x)
+ if (x < 1)
+ fun_l29_n348(x)
+ else
+ fun_l29_n973(x)
+ end
+end
+
+def fun_l28_n464(x)
+ if (x < 1)
+ fun_l29_n466(x)
+ else
+ fun_l29_n661(x)
+ end
+end
+
+def fun_l28_n465(x)
+ if (x < 1)
+ fun_l29_n95(x)
+ else
+ fun_l29_n300(x)
+ end
+end
+
+def fun_l28_n466(x)
+ if (x < 1)
+ fun_l29_n373(x)
+ else
+ fun_l29_n425(x)
+ end
+end
+
+def fun_l28_n467(x)
+ if (x < 1)
+ fun_l29_n669(x)
+ else
+ fun_l29_n990(x)
+ end
+end
+
+def fun_l28_n468(x)
+ if (x < 1)
+ fun_l29_n908(x)
+ else
+ fun_l29_n416(x)
+ end
+end
+
+def fun_l28_n469(x)
+ if (x < 1)
+ fun_l29_n795(x)
+ else
+ fun_l29_n7(x)
+ end
+end
+
+def fun_l28_n470(x)
+ if (x < 1)
+ fun_l29_n660(x)
+ else
+ fun_l29_n938(x)
+ end
+end
+
+def fun_l28_n471(x)
+ if (x < 1)
+ fun_l29_n816(x)
+ else
+ fun_l29_n857(x)
+ end
+end
+
+def fun_l28_n472(x)
+ if (x < 1)
+ fun_l29_n685(x)
+ else
+ fun_l29_n631(x)
+ end
+end
+
+def fun_l28_n473(x)
+ if (x < 1)
+ fun_l29_n521(x)
+ else
+ fun_l29_n21(x)
+ end
+end
+
+def fun_l28_n474(x)
+ if (x < 1)
+ fun_l29_n994(x)
+ else
+ fun_l29_n888(x)
+ end
+end
+
+def fun_l28_n475(x)
+ if (x < 1)
+ fun_l29_n819(x)
+ else
+ fun_l29_n735(x)
+ end
+end
+
+def fun_l28_n476(x)
+ if (x < 1)
+ fun_l29_n809(x)
+ else
+ fun_l29_n265(x)
+ end
+end
+
+def fun_l28_n477(x)
+ if (x < 1)
+ fun_l29_n99(x)
+ else
+ fun_l29_n484(x)
+ end
+end
+
+def fun_l28_n478(x)
+ if (x < 1)
+ fun_l29_n985(x)
+ else
+ fun_l29_n922(x)
+ end
+end
+
+def fun_l28_n479(x)
+ if (x < 1)
+ fun_l29_n502(x)
+ else
+ fun_l29_n475(x)
+ end
+end
+
+def fun_l28_n480(x)
+ if (x < 1)
+ fun_l29_n104(x)
+ else
+ fun_l29_n168(x)
+ end
+end
+
+def fun_l28_n481(x)
+ if (x < 1)
+ fun_l29_n176(x)
+ else
+ fun_l29_n736(x)
+ end
+end
+
+def fun_l28_n482(x)
+ if (x < 1)
+ fun_l29_n817(x)
+ else
+ fun_l29_n155(x)
+ end
+end
+
+def fun_l28_n483(x)
+ if (x < 1)
+ fun_l29_n162(x)
+ else
+ fun_l29_n45(x)
+ end
+end
+
+def fun_l28_n484(x)
+ if (x < 1)
+ fun_l29_n733(x)
+ else
+ fun_l29_n438(x)
+ end
+end
+
+def fun_l28_n485(x)
+ if (x < 1)
+ fun_l29_n323(x)
+ else
+ fun_l29_n410(x)
+ end
+end
+
+def fun_l28_n486(x)
+ if (x < 1)
+ fun_l29_n141(x)
+ else
+ fun_l29_n327(x)
+ end
+end
+
+def fun_l28_n487(x)
+ if (x < 1)
+ fun_l29_n122(x)
+ else
+ fun_l29_n280(x)
+ end
+end
+
+def fun_l28_n488(x)
+ if (x < 1)
+ fun_l29_n966(x)
+ else
+ fun_l29_n407(x)
+ end
+end
+
+def fun_l28_n489(x)
+ if (x < 1)
+ fun_l29_n826(x)
+ else
+ fun_l29_n852(x)
+ end
+end
+
+def fun_l28_n490(x)
+ if (x < 1)
+ fun_l29_n823(x)
+ else
+ fun_l29_n724(x)
+ end
+end
+
+def fun_l28_n491(x)
+ if (x < 1)
+ fun_l29_n291(x)
+ else
+ fun_l29_n151(x)
+ end
+end
+
+def fun_l28_n492(x)
+ if (x < 1)
+ fun_l29_n944(x)
+ else
+ fun_l29_n663(x)
+ end
+end
+
+def fun_l28_n493(x)
+ if (x < 1)
+ fun_l29_n552(x)
+ else
+ fun_l29_n954(x)
+ end
+end
+
+def fun_l28_n494(x)
+ if (x < 1)
+ fun_l29_n622(x)
+ else
+ fun_l29_n378(x)
+ end
+end
+
+def fun_l28_n495(x)
+ if (x < 1)
+ fun_l29_n824(x)
+ else
+ fun_l29_n377(x)
+ end
+end
+
+def fun_l28_n496(x)
+ if (x < 1)
+ fun_l29_n939(x)
+ else
+ fun_l29_n927(x)
+ end
+end
+
+def fun_l28_n497(x)
+ if (x < 1)
+ fun_l29_n760(x)
+ else
+ fun_l29_n215(x)
+ end
+end
+
+def fun_l28_n498(x)
+ if (x < 1)
+ fun_l29_n208(x)
+ else
+ fun_l29_n256(x)
+ end
+end
+
+def fun_l28_n499(x)
+ if (x < 1)
+ fun_l29_n19(x)
+ else
+ fun_l29_n956(x)
+ end
+end
+
+def fun_l28_n500(x)
+ if (x < 1)
+ fun_l29_n963(x)
+ else
+ fun_l29_n322(x)
+ end
+end
+
+def fun_l28_n501(x)
+ if (x < 1)
+ fun_l29_n564(x)
+ else
+ fun_l29_n261(x)
+ end
+end
+
+def fun_l28_n502(x)
+ if (x < 1)
+ fun_l29_n105(x)
+ else
+ fun_l29_n82(x)
+ end
+end
+
+def fun_l28_n503(x)
+ if (x < 1)
+ fun_l29_n165(x)
+ else
+ fun_l29_n101(x)
+ end
+end
+
+def fun_l28_n504(x)
+ if (x < 1)
+ fun_l29_n619(x)
+ else
+ fun_l29_n453(x)
+ end
+end
+
+def fun_l28_n505(x)
+ if (x < 1)
+ fun_l29_n20(x)
+ else
+ fun_l29_n329(x)
+ end
+end
+
+def fun_l28_n506(x)
+ if (x < 1)
+ fun_l29_n889(x)
+ else
+ fun_l29_n392(x)
+ end
+end
+
+def fun_l28_n507(x)
+ if (x < 1)
+ fun_l29_n824(x)
+ else
+ fun_l29_n709(x)
+ end
+end
+
+def fun_l28_n508(x)
+ if (x < 1)
+ fun_l29_n838(x)
+ else
+ fun_l29_n384(x)
+ end
+end
+
+def fun_l28_n509(x)
+ if (x < 1)
+ fun_l29_n364(x)
+ else
+ fun_l29_n789(x)
+ end
+end
+
+def fun_l28_n510(x)
+ if (x < 1)
+ fun_l29_n824(x)
+ else
+ fun_l29_n4(x)
+ end
+end
+
+def fun_l28_n511(x)
+ if (x < 1)
+ fun_l29_n481(x)
+ else
+ fun_l29_n883(x)
+ end
+end
+
+def fun_l28_n512(x)
+ if (x < 1)
+ fun_l29_n842(x)
+ else
+ fun_l29_n959(x)
+ end
+end
+
+def fun_l28_n513(x)
+ if (x < 1)
+ fun_l29_n989(x)
+ else
+ fun_l29_n400(x)
+ end
+end
+
+def fun_l28_n514(x)
+ if (x < 1)
+ fun_l29_n952(x)
+ else
+ fun_l29_n245(x)
+ end
+end
+
+def fun_l28_n515(x)
+ if (x < 1)
+ fun_l29_n966(x)
+ else
+ fun_l29_n91(x)
+ end
+end
+
+def fun_l28_n516(x)
+ if (x < 1)
+ fun_l29_n489(x)
+ else
+ fun_l29_n280(x)
+ end
+end
+
+def fun_l28_n517(x)
+ if (x < 1)
+ fun_l29_n128(x)
+ else
+ fun_l29_n722(x)
+ end
+end
+
+def fun_l28_n518(x)
+ if (x < 1)
+ fun_l29_n429(x)
+ else
+ fun_l29_n412(x)
+ end
+end
+
+def fun_l28_n519(x)
+ if (x < 1)
+ fun_l29_n884(x)
+ else
+ fun_l29_n993(x)
+ end
+end
+
+def fun_l28_n520(x)
+ if (x < 1)
+ fun_l29_n470(x)
+ else
+ fun_l29_n308(x)
+ end
+end
+
+def fun_l28_n521(x)
+ if (x < 1)
+ fun_l29_n583(x)
+ else
+ fun_l29_n683(x)
+ end
+end
+
+def fun_l28_n522(x)
+ if (x < 1)
+ fun_l29_n400(x)
+ else
+ fun_l29_n643(x)
+ end
+end
+
+def fun_l28_n523(x)
+ if (x < 1)
+ fun_l29_n750(x)
+ else
+ fun_l29_n388(x)
+ end
+end
+
+def fun_l28_n524(x)
+ if (x < 1)
+ fun_l29_n252(x)
+ else
+ fun_l29_n426(x)
+ end
+end
+
+def fun_l28_n525(x)
+ if (x < 1)
+ fun_l29_n51(x)
+ else
+ fun_l29_n720(x)
+ end
+end
+
+def fun_l28_n526(x)
+ if (x < 1)
+ fun_l29_n633(x)
+ else
+ fun_l29_n160(x)
+ end
+end
+
+def fun_l28_n527(x)
+ if (x < 1)
+ fun_l29_n507(x)
+ else
+ fun_l29_n630(x)
+ end
+end
+
+def fun_l28_n528(x)
+ if (x < 1)
+ fun_l29_n53(x)
+ else
+ fun_l29_n189(x)
+ end
+end
+
+def fun_l28_n529(x)
+ if (x < 1)
+ fun_l29_n191(x)
+ else
+ fun_l29_n767(x)
+ end
+end
+
+def fun_l28_n530(x)
+ if (x < 1)
+ fun_l29_n265(x)
+ else
+ fun_l29_n130(x)
+ end
+end
+
+def fun_l28_n531(x)
+ if (x < 1)
+ fun_l29_n936(x)
+ else
+ fun_l29_n270(x)
+ end
+end
+
+def fun_l28_n532(x)
+ if (x < 1)
+ fun_l29_n910(x)
+ else
+ fun_l29_n144(x)
+ end
+end
+
+def fun_l28_n533(x)
+ if (x < 1)
+ fun_l29_n155(x)
+ else
+ fun_l29_n947(x)
+ end
+end
+
+def fun_l28_n534(x)
+ if (x < 1)
+ fun_l29_n977(x)
+ else
+ fun_l29_n372(x)
+ end
+end
+
+def fun_l28_n535(x)
+ if (x < 1)
+ fun_l29_n728(x)
+ else
+ fun_l29_n657(x)
+ end
+end
+
+def fun_l28_n536(x)
+ if (x < 1)
+ fun_l29_n360(x)
+ else
+ fun_l29_n154(x)
+ end
+end
+
+def fun_l28_n537(x)
+ if (x < 1)
+ fun_l29_n934(x)
+ else
+ fun_l29_n93(x)
+ end
+end
+
+def fun_l28_n538(x)
+ if (x < 1)
+ fun_l29_n254(x)
+ else
+ fun_l29_n201(x)
+ end
+end
+
+def fun_l28_n539(x)
+ if (x < 1)
+ fun_l29_n310(x)
+ else
+ fun_l29_n104(x)
+ end
+end
+
+def fun_l28_n540(x)
+ if (x < 1)
+ fun_l29_n197(x)
+ else
+ fun_l29_n332(x)
+ end
+end
+
+def fun_l28_n541(x)
+ if (x < 1)
+ fun_l29_n144(x)
+ else
+ fun_l29_n519(x)
+ end
+end
+
+def fun_l28_n542(x)
+ if (x < 1)
+ fun_l29_n582(x)
+ else
+ fun_l29_n257(x)
+ end
+end
+
+def fun_l28_n543(x)
+ if (x < 1)
+ fun_l29_n984(x)
+ else
+ fun_l29_n375(x)
+ end
+end
+
+def fun_l28_n544(x)
+ if (x < 1)
+ fun_l29_n201(x)
+ else
+ fun_l29_n746(x)
+ end
+end
+
+def fun_l28_n545(x)
+ if (x < 1)
+ fun_l29_n530(x)
+ else
+ fun_l29_n209(x)
+ end
+end
+
+def fun_l28_n546(x)
+ if (x < 1)
+ fun_l29_n764(x)
+ else
+ fun_l29_n858(x)
+ end
+end
+
+def fun_l28_n547(x)
+ if (x < 1)
+ fun_l29_n830(x)
+ else
+ fun_l29_n58(x)
+ end
+end
+
+def fun_l28_n548(x)
+ if (x < 1)
+ fun_l29_n746(x)
+ else
+ fun_l29_n374(x)
+ end
+end
+
+def fun_l28_n549(x)
+ if (x < 1)
+ fun_l29_n923(x)
+ else
+ fun_l29_n489(x)
+ end
+end
+
+def fun_l28_n550(x)
+ if (x < 1)
+ fun_l29_n188(x)
+ else
+ fun_l29_n866(x)
+ end
+end
+
+def fun_l28_n551(x)
+ if (x < 1)
+ fun_l29_n959(x)
+ else
+ fun_l29_n493(x)
+ end
+end
+
+def fun_l28_n552(x)
+ if (x < 1)
+ fun_l29_n568(x)
+ else
+ fun_l29_n747(x)
+ end
+end
+
+def fun_l28_n553(x)
+ if (x < 1)
+ fun_l29_n972(x)
+ else
+ fun_l29_n507(x)
+ end
+end
+
+def fun_l28_n554(x)
+ if (x < 1)
+ fun_l29_n557(x)
+ else
+ fun_l29_n765(x)
+ end
+end
+
+def fun_l28_n555(x)
+ if (x < 1)
+ fun_l29_n430(x)
+ else
+ fun_l29_n941(x)
+ end
+end
+
+def fun_l28_n556(x)
+ if (x < 1)
+ fun_l29_n631(x)
+ else
+ fun_l29_n384(x)
+ end
+end
+
+def fun_l28_n557(x)
+ if (x < 1)
+ fun_l29_n681(x)
+ else
+ fun_l29_n976(x)
+ end
+end
+
+def fun_l28_n558(x)
+ if (x < 1)
+ fun_l29_n326(x)
+ else
+ fun_l29_n481(x)
+ end
+end
+
+def fun_l28_n559(x)
+ if (x < 1)
+ fun_l29_n882(x)
+ else
+ fun_l29_n129(x)
+ end
+end
+
+def fun_l28_n560(x)
+ if (x < 1)
+ fun_l29_n471(x)
+ else
+ fun_l29_n156(x)
+ end
+end
+
+def fun_l28_n561(x)
+ if (x < 1)
+ fun_l29_n692(x)
+ else
+ fun_l29_n968(x)
+ end
+end
+
+def fun_l28_n562(x)
+ if (x < 1)
+ fun_l29_n207(x)
+ else
+ fun_l29_n251(x)
+ end
+end
+
+def fun_l28_n563(x)
+ if (x < 1)
+ fun_l29_n519(x)
+ else
+ fun_l29_n749(x)
+ end
+end
+
+def fun_l28_n564(x)
+ if (x < 1)
+ fun_l29_n609(x)
+ else
+ fun_l29_n657(x)
+ end
+end
+
+def fun_l28_n565(x)
+ if (x < 1)
+ fun_l29_n100(x)
+ else
+ fun_l29_n932(x)
+ end
+end
+
+def fun_l28_n566(x)
+ if (x < 1)
+ fun_l29_n499(x)
+ else
+ fun_l29_n455(x)
+ end
+end
+
+def fun_l28_n567(x)
+ if (x < 1)
+ fun_l29_n486(x)
+ else
+ fun_l29_n13(x)
+ end
+end
+
+def fun_l28_n568(x)
+ if (x < 1)
+ fun_l29_n855(x)
+ else
+ fun_l29_n809(x)
+ end
+end
+
+def fun_l28_n569(x)
+ if (x < 1)
+ fun_l29_n295(x)
+ else
+ fun_l29_n576(x)
+ end
+end
+
+def fun_l28_n570(x)
+ if (x < 1)
+ fun_l29_n354(x)
+ else
+ fun_l29_n430(x)
+ end
+end
+
+def fun_l28_n571(x)
+ if (x < 1)
+ fun_l29_n307(x)
+ else
+ fun_l29_n560(x)
+ end
+end
+
+def fun_l28_n572(x)
+ if (x < 1)
+ fun_l29_n528(x)
+ else
+ fun_l29_n642(x)
+ end
+end
+
+def fun_l28_n573(x)
+ if (x < 1)
+ fun_l29_n552(x)
+ else
+ fun_l29_n421(x)
+ end
+end
+
+def fun_l28_n574(x)
+ if (x < 1)
+ fun_l29_n238(x)
+ else
+ fun_l29_n471(x)
+ end
+end
+
+def fun_l28_n575(x)
+ if (x < 1)
+ fun_l29_n748(x)
+ else
+ fun_l29_n381(x)
+ end
+end
+
+def fun_l28_n576(x)
+ if (x < 1)
+ fun_l29_n75(x)
+ else
+ fun_l29_n994(x)
+ end
+end
+
+def fun_l28_n577(x)
+ if (x < 1)
+ fun_l29_n159(x)
+ else
+ fun_l29_n923(x)
+ end
+end
+
+def fun_l28_n578(x)
+ if (x < 1)
+ fun_l29_n657(x)
+ else
+ fun_l29_n984(x)
+ end
+end
+
+def fun_l28_n579(x)
+ if (x < 1)
+ fun_l29_n150(x)
+ else
+ fun_l29_n887(x)
+ end
+end
+
+def fun_l28_n580(x)
+ if (x < 1)
+ fun_l29_n362(x)
+ else
+ fun_l29_n574(x)
+ end
+end
+
+def fun_l28_n581(x)
+ if (x < 1)
+ fun_l29_n95(x)
+ else
+ fun_l29_n258(x)
+ end
+end
+
+def fun_l28_n582(x)
+ if (x < 1)
+ fun_l29_n123(x)
+ else
+ fun_l29_n501(x)
+ end
+end
+
+def fun_l28_n583(x)
+ if (x < 1)
+ fun_l29_n934(x)
+ else
+ fun_l29_n94(x)
+ end
+end
+
+def fun_l28_n584(x)
+ if (x < 1)
+ fun_l29_n764(x)
+ else
+ fun_l29_n350(x)
+ end
+end
+
+def fun_l28_n585(x)
+ if (x < 1)
+ fun_l29_n328(x)
+ else
+ fun_l29_n483(x)
+ end
+end
+
+def fun_l28_n586(x)
+ if (x < 1)
+ fun_l29_n533(x)
+ else
+ fun_l29_n956(x)
+ end
+end
+
+def fun_l28_n587(x)
+ if (x < 1)
+ fun_l29_n632(x)
+ else
+ fun_l29_n243(x)
+ end
+end
+
+def fun_l28_n588(x)
+ if (x < 1)
+ fun_l29_n897(x)
+ else
+ fun_l29_n894(x)
+ end
+end
+
+def fun_l28_n589(x)
+ if (x < 1)
+ fun_l29_n867(x)
+ else
+ fun_l29_n68(x)
+ end
+end
+
+def fun_l28_n590(x)
+ if (x < 1)
+ fun_l29_n266(x)
+ else
+ fun_l29_n763(x)
+ end
+end
+
+def fun_l28_n591(x)
+ if (x < 1)
+ fun_l29_n104(x)
+ else
+ fun_l29_n940(x)
+ end
+end
+
+def fun_l28_n592(x)
+ if (x < 1)
+ fun_l29_n409(x)
+ else
+ fun_l29_n561(x)
+ end
+end
+
+def fun_l28_n593(x)
+ if (x < 1)
+ fun_l29_n485(x)
+ else
+ fun_l29_n780(x)
+ end
+end
+
+def fun_l28_n594(x)
+ if (x < 1)
+ fun_l29_n925(x)
+ else
+ fun_l29_n581(x)
+ end
+end
+
+def fun_l28_n595(x)
+ if (x < 1)
+ fun_l29_n566(x)
+ else
+ fun_l29_n288(x)
+ end
+end
+
+def fun_l28_n596(x)
+ if (x < 1)
+ fun_l29_n166(x)
+ else
+ fun_l29_n702(x)
+ end
+end
+
+def fun_l28_n597(x)
+ if (x < 1)
+ fun_l29_n82(x)
+ else
+ fun_l29_n815(x)
+ end
+end
+
+def fun_l28_n598(x)
+ if (x < 1)
+ fun_l29_n913(x)
+ else
+ fun_l29_n623(x)
+ end
+end
+
+def fun_l28_n599(x)
+ if (x < 1)
+ fun_l29_n431(x)
+ else
+ fun_l29_n216(x)
+ end
+end
+
+def fun_l28_n600(x)
+ if (x < 1)
+ fun_l29_n260(x)
+ else
+ fun_l29_n907(x)
+ end
+end
+
+def fun_l28_n601(x)
+ if (x < 1)
+ fun_l29_n232(x)
+ else
+ fun_l29_n504(x)
+ end
+end
+
+def fun_l28_n602(x)
+ if (x < 1)
+ fun_l29_n25(x)
+ else
+ fun_l29_n844(x)
+ end
+end
+
+def fun_l28_n603(x)
+ if (x < 1)
+ fun_l29_n997(x)
+ else
+ fun_l29_n821(x)
+ end
+end
+
+def fun_l28_n604(x)
+ if (x < 1)
+ fun_l29_n732(x)
+ else
+ fun_l29_n301(x)
+ end
+end
+
+def fun_l28_n605(x)
+ if (x < 1)
+ fun_l29_n971(x)
+ else
+ fun_l29_n522(x)
+ end
+end
+
+def fun_l28_n606(x)
+ if (x < 1)
+ fun_l29_n518(x)
+ else
+ fun_l29_n874(x)
+ end
+end
+
+def fun_l28_n607(x)
+ if (x < 1)
+ fun_l29_n104(x)
+ else
+ fun_l29_n529(x)
+ end
+end
+
+def fun_l28_n608(x)
+ if (x < 1)
+ fun_l29_n662(x)
+ else
+ fun_l29_n830(x)
+ end
+end
+
+def fun_l28_n609(x)
+ if (x < 1)
+ fun_l29_n521(x)
+ else
+ fun_l29_n944(x)
+ end
+end
+
+def fun_l28_n610(x)
+ if (x < 1)
+ fun_l29_n231(x)
+ else
+ fun_l29_n92(x)
+ end
+end
+
+def fun_l28_n611(x)
+ if (x < 1)
+ fun_l29_n290(x)
+ else
+ fun_l29_n261(x)
+ end
+end
+
+def fun_l28_n612(x)
+ if (x < 1)
+ fun_l29_n490(x)
+ else
+ fun_l29_n621(x)
+ end
+end
+
+def fun_l28_n613(x)
+ if (x < 1)
+ fun_l29_n131(x)
+ else
+ fun_l29_n946(x)
+ end
+end
+
+def fun_l28_n614(x)
+ if (x < 1)
+ fun_l29_n34(x)
+ else
+ fun_l29_n159(x)
+ end
+end
+
+def fun_l28_n615(x)
+ if (x < 1)
+ fun_l29_n811(x)
+ else
+ fun_l29_n895(x)
+ end
+end
+
+def fun_l28_n616(x)
+ if (x < 1)
+ fun_l29_n713(x)
+ else
+ fun_l29_n686(x)
+ end
+end
+
+def fun_l28_n617(x)
+ if (x < 1)
+ fun_l29_n650(x)
+ else
+ fun_l29_n256(x)
+ end
+end
+
+def fun_l28_n618(x)
+ if (x < 1)
+ fun_l29_n815(x)
+ else
+ fun_l29_n537(x)
+ end
+end
+
+def fun_l28_n619(x)
+ if (x < 1)
+ fun_l29_n739(x)
+ else
+ fun_l29_n735(x)
+ end
+end
+
+def fun_l28_n620(x)
+ if (x < 1)
+ fun_l29_n857(x)
+ else
+ fun_l29_n863(x)
+ end
+end
+
+def fun_l28_n621(x)
+ if (x < 1)
+ fun_l29_n81(x)
+ else
+ fun_l29_n755(x)
+ end
+end
+
+def fun_l28_n622(x)
+ if (x < 1)
+ fun_l29_n841(x)
+ else
+ fun_l29_n597(x)
+ end
+end
+
+def fun_l28_n623(x)
+ if (x < 1)
+ fun_l29_n87(x)
+ else
+ fun_l29_n676(x)
+ end
+end
+
+def fun_l28_n624(x)
+ if (x < 1)
+ fun_l29_n67(x)
+ else
+ fun_l29_n883(x)
+ end
+end
+
+def fun_l28_n625(x)
+ if (x < 1)
+ fun_l29_n223(x)
+ else
+ fun_l29_n139(x)
+ end
+end
+
+def fun_l28_n626(x)
+ if (x < 1)
+ fun_l29_n351(x)
+ else
+ fun_l29_n11(x)
+ end
+end
+
+def fun_l28_n627(x)
+ if (x < 1)
+ fun_l29_n281(x)
+ else
+ fun_l29_n138(x)
+ end
+end
+
+def fun_l28_n628(x)
+ if (x < 1)
+ fun_l29_n118(x)
+ else
+ fun_l29_n44(x)
+ end
+end
+
+def fun_l28_n629(x)
+ if (x < 1)
+ fun_l29_n55(x)
+ else
+ fun_l29_n249(x)
+ end
+end
+
+def fun_l28_n630(x)
+ if (x < 1)
+ fun_l29_n636(x)
+ else
+ fun_l29_n717(x)
+ end
+end
+
+def fun_l28_n631(x)
+ if (x < 1)
+ fun_l29_n88(x)
+ else
+ fun_l29_n670(x)
+ end
+end
+
+def fun_l28_n632(x)
+ if (x < 1)
+ fun_l29_n311(x)
+ else
+ fun_l29_n337(x)
+ end
+end
+
+def fun_l28_n633(x)
+ if (x < 1)
+ fun_l29_n67(x)
+ else
+ fun_l29_n12(x)
+ end
+end
+
+def fun_l28_n634(x)
+ if (x < 1)
+ fun_l29_n581(x)
+ else
+ fun_l29_n618(x)
+ end
+end
+
+def fun_l28_n635(x)
+ if (x < 1)
+ fun_l29_n709(x)
+ else
+ fun_l29_n120(x)
+ end
+end
+
+def fun_l28_n636(x)
+ if (x < 1)
+ fun_l29_n904(x)
+ else
+ fun_l29_n987(x)
+ end
+end
+
+def fun_l28_n637(x)
+ if (x < 1)
+ fun_l29_n274(x)
+ else
+ fun_l29_n219(x)
+ end
+end
+
+def fun_l28_n638(x)
+ if (x < 1)
+ fun_l29_n444(x)
+ else
+ fun_l29_n609(x)
+ end
+end
+
+def fun_l28_n639(x)
+ if (x < 1)
+ fun_l29_n473(x)
+ else
+ fun_l29_n433(x)
+ end
+end
+
+def fun_l28_n640(x)
+ if (x < 1)
+ fun_l29_n344(x)
+ else
+ fun_l29_n59(x)
+ end
+end
+
+def fun_l28_n641(x)
+ if (x < 1)
+ fun_l29_n973(x)
+ else
+ fun_l29_n506(x)
+ end
+end
+
+def fun_l28_n642(x)
+ if (x < 1)
+ fun_l29_n387(x)
+ else
+ fun_l29_n347(x)
+ end
+end
+
+def fun_l28_n643(x)
+ if (x < 1)
+ fun_l29_n138(x)
+ else
+ fun_l29_n597(x)
+ end
+end
+
+def fun_l28_n644(x)
+ if (x < 1)
+ fun_l29_n622(x)
+ else
+ fun_l29_n276(x)
+ end
+end
+
+def fun_l28_n645(x)
+ if (x < 1)
+ fun_l29_n454(x)
+ else
+ fun_l29_n930(x)
+ end
+end
+
+def fun_l28_n646(x)
+ if (x < 1)
+ fun_l29_n586(x)
+ else
+ fun_l29_n3(x)
+ end
+end
+
+def fun_l28_n647(x)
+ if (x < 1)
+ fun_l29_n508(x)
+ else
+ fun_l29_n489(x)
+ end
+end
+
+def fun_l28_n648(x)
+ if (x < 1)
+ fun_l29_n549(x)
+ else
+ fun_l29_n57(x)
+ end
+end
+
+def fun_l28_n649(x)
+ if (x < 1)
+ fun_l29_n32(x)
+ else
+ fun_l29_n487(x)
+ end
+end
+
+def fun_l28_n650(x)
+ if (x < 1)
+ fun_l29_n567(x)
+ else
+ fun_l29_n733(x)
+ end
+end
+
+def fun_l28_n651(x)
+ if (x < 1)
+ fun_l29_n401(x)
+ else
+ fun_l29_n234(x)
+ end
+end
+
+def fun_l28_n652(x)
+ if (x < 1)
+ fun_l29_n124(x)
+ else
+ fun_l29_n387(x)
+ end
+end
+
+def fun_l28_n653(x)
+ if (x < 1)
+ fun_l29_n517(x)
+ else
+ fun_l29_n150(x)
+ end
+end
+
+def fun_l28_n654(x)
+ if (x < 1)
+ fun_l29_n502(x)
+ else
+ fun_l29_n139(x)
+ end
+end
+
+def fun_l28_n655(x)
+ if (x < 1)
+ fun_l29_n304(x)
+ else
+ fun_l29_n871(x)
+ end
+end
+
+def fun_l28_n656(x)
+ if (x < 1)
+ fun_l29_n413(x)
+ else
+ fun_l29_n759(x)
+ end
+end
+
+def fun_l28_n657(x)
+ if (x < 1)
+ fun_l29_n810(x)
+ else
+ fun_l29_n274(x)
+ end
+end
+
+def fun_l28_n658(x)
+ if (x < 1)
+ fun_l29_n706(x)
+ else
+ fun_l29_n564(x)
+ end
+end
+
+def fun_l28_n659(x)
+ if (x < 1)
+ fun_l29_n205(x)
+ else
+ fun_l29_n857(x)
+ end
+end
+
+def fun_l28_n660(x)
+ if (x < 1)
+ fun_l29_n534(x)
+ else
+ fun_l29_n853(x)
+ end
+end
+
+def fun_l28_n661(x)
+ if (x < 1)
+ fun_l29_n436(x)
+ else
+ fun_l29_n227(x)
+ end
+end
+
+def fun_l28_n662(x)
+ if (x < 1)
+ fun_l29_n784(x)
+ else
+ fun_l29_n352(x)
+ end
+end
+
+def fun_l28_n663(x)
+ if (x < 1)
+ fun_l29_n889(x)
+ else
+ fun_l29_n186(x)
+ end
+end
+
+def fun_l28_n664(x)
+ if (x < 1)
+ fun_l29_n872(x)
+ else
+ fun_l29_n217(x)
+ end
+end
+
+def fun_l28_n665(x)
+ if (x < 1)
+ fun_l29_n111(x)
+ else
+ fun_l29_n355(x)
+ end
+end
+
+def fun_l28_n666(x)
+ if (x < 1)
+ fun_l29_n175(x)
+ else
+ fun_l29_n971(x)
+ end
+end
+
+def fun_l28_n667(x)
+ if (x < 1)
+ fun_l29_n823(x)
+ else
+ fun_l29_n123(x)
+ end
+end
+
+def fun_l28_n668(x)
+ if (x < 1)
+ fun_l29_n239(x)
+ else
+ fun_l29_n58(x)
+ end
+end
+
+def fun_l28_n669(x)
+ if (x < 1)
+ fun_l29_n127(x)
+ else
+ fun_l29_n628(x)
+ end
+end
+
+def fun_l28_n670(x)
+ if (x < 1)
+ fun_l29_n967(x)
+ else
+ fun_l29_n575(x)
+ end
+end
+
+def fun_l28_n671(x)
+ if (x < 1)
+ fun_l29_n994(x)
+ else
+ fun_l29_n352(x)
+ end
+end
+
+def fun_l28_n672(x)
+ if (x < 1)
+ fun_l29_n598(x)
+ else
+ fun_l29_n620(x)
+ end
+end
+
+def fun_l28_n673(x)
+ if (x < 1)
+ fun_l29_n407(x)
+ else
+ fun_l29_n132(x)
+ end
+end
+
+def fun_l28_n674(x)
+ if (x < 1)
+ fun_l29_n553(x)
+ else
+ fun_l29_n807(x)
+ end
+end
+
+def fun_l28_n675(x)
+ if (x < 1)
+ fun_l29_n918(x)
+ else
+ fun_l29_n462(x)
+ end
+end
+
+def fun_l28_n676(x)
+ if (x < 1)
+ fun_l29_n340(x)
+ else
+ fun_l29_n905(x)
+ end
+end
+
+def fun_l28_n677(x)
+ if (x < 1)
+ fun_l29_n322(x)
+ else
+ fun_l29_n657(x)
+ end
+end
+
+def fun_l28_n678(x)
+ if (x < 1)
+ fun_l29_n249(x)
+ else
+ fun_l29_n691(x)
+ end
+end
+
+def fun_l28_n679(x)
+ if (x < 1)
+ fun_l29_n227(x)
+ else
+ fun_l29_n559(x)
+ end
+end
+
+def fun_l28_n680(x)
+ if (x < 1)
+ fun_l29_n151(x)
+ else
+ fun_l29_n191(x)
+ end
+end
+
+def fun_l28_n681(x)
+ if (x < 1)
+ fun_l29_n211(x)
+ else
+ fun_l29_n400(x)
+ end
+end
+
+def fun_l28_n682(x)
+ if (x < 1)
+ fun_l29_n124(x)
+ else
+ fun_l29_n334(x)
+ end
+end
+
+def fun_l28_n683(x)
+ if (x < 1)
+ fun_l29_n876(x)
+ else
+ fun_l29_n839(x)
+ end
+end
+
+def fun_l28_n684(x)
+ if (x < 1)
+ fun_l29_n764(x)
+ else
+ fun_l29_n449(x)
+ end
+end
+
+def fun_l28_n685(x)
+ if (x < 1)
+ fun_l29_n316(x)
+ else
+ fun_l29_n730(x)
+ end
+end
+
+def fun_l28_n686(x)
+ if (x < 1)
+ fun_l29_n557(x)
+ else
+ fun_l29_n851(x)
+ end
+end
+
+def fun_l28_n687(x)
+ if (x < 1)
+ fun_l29_n315(x)
+ else
+ fun_l29_n280(x)
+ end
+end
+
+def fun_l28_n688(x)
+ if (x < 1)
+ fun_l29_n467(x)
+ else
+ fun_l29_n593(x)
+ end
+end
+
+def fun_l28_n689(x)
+ if (x < 1)
+ fun_l29_n537(x)
+ else
+ fun_l29_n37(x)
+ end
+end
+
+def fun_l28_n690(x)
+ if (x < 1)
+ fun_l29_n582(x)
+ else
+ fun_l29_n205(x)
+ end
+end
+
+def fun_l28_n691(x)
+ if (x < 1)
+ fun_l29_n672(x)
+ else
+ fun_l29_n656(x)
+ end
+end
+
+def fun_l28_n692(x)
+ if (x < 1)
+ fun_l29_n280(x)
+ else
+ fun_l29_n404(x)
+ end
+end
+
+def fun_l28_n693(x)
+ if (x < 1)
+ fun_l29_n609(x)
+ else
+ fun_l29_n914(x)
+ end
+end
+
+def fun_l28_n694(x)
+ if (x < 1)
+ fun_l29_n563(x)
+ else
+ fun_l29_n215(x)
+ end
+end
+
+def fun_l28_n695(x)
+ if (x < 1)
+ fun_l29_n207(x)
+ else
+ fun_l29_n548(x)
+ end
+end
+
+def fun_l28_n696(x)
+ if (x < 1)
+ fun_l29_n981(x)
+ else
+ fun_l29_n79(x)
+ end
+end
+
+def fun_l28_n697(x)
+ if (x < 1)
+ fun_l29_n747(x)
+ else
+ fun_l29_n687(x)
+ end
+end
+
+def fun_l28_n698(x)
+ if (x < 1)
+ fun_l29_n30(x)
+ else
+ fun_l29_n104(x)
+ end
+end
+
+def fun_l28_n699(x)
+ if (x < 1)
+ fun_l29_n587(x)
+ else
+ fun_l29_n414(x)
+ end
+end
+
+def fun_l28_n700(x)
+ if (x < 1)
+ fun_l29_n956(x)
+ else
+ fun_l29_n601(x)
+ end
+end
+
+def fun_l28_n701(x)
+ if (x < 1)
+ fun_l29_n276(x)
+ else
+ fun_l29_n815(x)
+ end
+end
+
+def fun_l28_n702(x)
+ if (x < 1)
+ fun_l29_n294(x)
+ else
+ fun_l29_n94(x)
+ end
+end
+
+def fun_l28_n703(x)
+ if (x < 1)
+ fun_l29_n161(x)
+ else
+ fun_l29_n133(x)
+ end
+end
+
+def fun_l28_n704(x)
+ if (x < 1)
+ fun_l29_n898(x)
+ else
+ fun_l29_n483(x)
+ end
+end
+
+def fun_l28_n705(x)
+ if (x < 1)
+ fun_l29_n651(x)
+ else
+ fun_l29_n577(x)
+ end
+end
+
+def fun_l28_n706(x)
+ if (x < 1)
+ fun_l29_n389(x)
+ else
+ fun_l29_n595(x)
+ end
+end
+
+def fun_l28_n707(x)
+ if (x < 1)
+ fun_l29_n856(x)
+ else
+ fun_l29_n65(x)
+ end
+end
+
+def fun_l28_n708(x)
+ if (x < 1)
+ fun_l29_n77(x)
+ else
+ fun_l29_n687(x)
+ end
+end
+
+def fun_l28_n709(x)
+ if (x < 1)
+ fun_l29_n962(x)
+ else
+ fun_l29_n517(x)
+ end
+end
+
+def fun_l28_n710(x)
+ if (x < 1)
+ fun_l29_n934(x)
+ else
+ fun_l29_n804(x)
+ end
+end
+
+def fun_l28_n711(x)
+ if (x < 1)
+ fun_l29_n267(x)
+ else
+ fun_l29_n557(x)
+ end
+end
+
+def fun_l28_n712(x)
+ if (x < 1)
+ fun_l29_n691(x)
+ else
+ fun_l29_n558(x)
+ end
+end
+
+def fun_l28_n713(x)
+ if (x < 1)
+ fun_l29_n420(x)
+ else
+ fun_l29_n150(x)
+ end
+end
+
+def fun_l28_n714(x)
+ if (x < 1)
+ fun_l29_n289(x)
+ else
+ fun_l29_n814(x)
+ end
+end
+
+def fun_l28_n715(x)
+ if (x < 1)
+ fun_l29_n579(x)
+ else
+ fun_l29_n730(x)
+ end
+end
+
+def fun_l28_n716(x)
+ if (x < 1)
+ fun_l29_n331(x)
+ else
+ fun_l29_n178(x)
+ end
+end
+
+def fun_l28_n717(x)
+ if (x < 1)
+ fun_l29_n914(x)
+ else
+ fun_l29_n176(x)
+ end
+end
+
+def fun_l28_n718(x)
+ if (x < 1)
+ fun_l29_n261(x)
+ else
+ fun_l29_n203(x)
+ end
+end
+
+def fun_l28_n719(x)
+ if (x < 1)
+ fun_l29_n621(x)
+ else
+ fun_l29_n236(x)
+ end
+end
+
+def fun_l28_n720(x)
+ if (x < 1)
+ fun_l29_n453(x)
+ else
+ fun_l29_n420(x)
+ end
+end
+
+def fun_l28_n721(x)
+ if (x < 1)
+ fun_l29_n39(x)
+ else
+ fun_l29_n499(x)
+ end
+end
+
+def fun_l28_n722(x)
+ if (x < 1)
+ fun_l29_n629(x)
+ else
+ fun_l29_n23(x)
+ end
+end
+
+def fun_l28_n723(x)
+ if (x < 1)
+ fun_l29_n55(x)
+ else
+ fun_l29_n497(x)
+ end
+end
+
+def fun_l28_n724(x)
+ if (x < 1)
+ fun_l29_n934(x)
+ else
+ fun_l29_n891(x)
+ end
+end
+
+def fun_l28_n725(x)
+ if (x < 1)
+ fun_l29_n532(x)
+ else
+ fun_l29_n959(x)
+ end
+end
+
+def fun_l28_n726(x)
+ if (x < 1)
+ fun_l29_n510(x)
+ else
+ fun_l29_n171(x)
+ end
+end
+
+def fun_l28_n727(x)
+ if (x < 1)
+ fun_l29_n42(x)
+ else
+ fun_l29_n680(x)
+ end
+end
+
+def fun_l28_n728(x)
+ if (x < 1)
+ fun_l29_n488(x)
+ else
+ fun_l29_n994(x)
+ end
+end
+
+def fun_l28_n729(x)
+ if (x < 1)
+ fun_l29_n347(x)
+ else
+ fun_l29_n135(x)
+ end
+end
+
+def fun_l28_n730(x)
+ if (x < 1)
+ fun_l29_n97(x)
+ else
+ fun_l29_n176(x)
+ end
+end
+
+def fun_l28_n731(x)
+ if (x < 1)
+ fun_l29_n4(x)
+ else
+ fun_l29_n330(x)
+ end
+end
+
+def fun_l28_n732(x)
+ if (x < 1)
+ fun_l29_n808(x)
+ else
+ fun_l29_n491(x)
+ end
+end
+
+def fun_l28_n733(x)
+ if (x < 1)
+ fun_l29_n147(x)
+ else
+ fun_l29_n520(x)
+ end
+end
+
+def fun_l28_n734(x)
+ if (x < 1)
+ fun_l29_n510(x)
+ else
+ fun_l29_n980(x)
+ end
+end
+
+def fun_l28_n735(x)
+ if (x < 1)
+ fun_l29_n656(x)
+ else
+ fun_l29_n861(x)
+ end
+end
+
+def fun_l28_n736(x)
+ if (x < 1)
+ fun_l29_n445(x)
+ else
+ fun_l29_n625(x)
+ end
+end
+
+def fun_l28_n737(x)
+ if (x < 1)
+ fun_l29_n101(x)
+ else
+ fun_l29_n874(x)
+ end
+end
+
+def fun_l28_n738(x)
+ if (x < 1)
+ fun_l29_n337(x)
+ else
+ fun_l29_n231(x)
+ end
+end
+
+def fun_l28_n739(x)
+ if (x < 1)
+ fun_l29_n518(x)
+ else
+ fun_l29_n575(x)
+ end
+end
+
+def fun_l28_n740(x)
+ if (x < 1)
+ fun_l29_n472(x)
+ else
+ fun_l29_n401(x)
+ end
+end
+
+def fun_l28_n741(x)
+ if (x < 1)
+ fun_l29_n47(x)
+ else
+ fun_l29_n435(x)
+ end
+end
+
+def fun_l28_n742(x)
+ if (x < 1)
+ fun_l29_n113(x)
+ else
+ fun_l29_n56(x)
+ end
+end
+
+def fun_l28_n743(x)
+ if (x < 1)
+ fun_l29_n435(x)
+ else
+ fun_l29_n972(x)
+ end
+end
+
+def fun_l28_n744(x)
+ if (x < 1)
+ fun_l29_n692(x)
+ else
+ fun_l29_n328(x)
+ end
+end
+
+def fun_l28_n745(x)
+ if (x < 1)
+ fun_l29_n830(x)
+ else
+ fun_l29_n92(x)
+ end
+end
+
+def fun_l28_n746(x)
+ if (x < 1)
+ fun_l29_n921(x)
+ else
+ fun_l29_n340(x)
+ end
+end
+
+def fun_l28_n747(x)
+ if (x < 1)
+ fun_l29_n346(x)
+ else
+ fun_l29_n654(x)
+ end
+end
+
+def fun_l28_n748(x)
+ if (x < 1)
+ fun_l29_n850(x)
+ else
+ fun_l29_n40(x)
+ end
+end
+
+def fun_l28_n749(x)
+ if (x < 1)
+ fun_l29_n432(x)
+ else
+ fun_l29_n445(x)
+ end
+end
+
+def fun_l28_n750(x)
+ if (x < 1)
+ fun_l29_n28(x)
+ else
+ fun_l29_n537(x)
+ end
+end
+
+def fun_l28_n751(x)
+ if (x < 1)
+ fun_l29_n858(x)
+ else
+ fun_l29_n375(x)
+ end
+end
+
+def fun_l28_n752(x)
+ if (x < 1)
+ fun_l29_n625(x)
+ else
+ fun_l29_n581(x)
+ end
+end
+
+def fun_l28_n753(x)
+ if (x < 1)
+ fun_l29_n223(x)
+ else
+ fun_l29_n509(x)
+ end
+end
+
+def fun_l28_n754(x)
+ if (x < 1)
+ fun_l29_n655(x)
+ else
+ fun_l29_n218(x)
+ end
+end
+
+def fun_l28_n755(x)
+ if (x < 1)
+ fun_l29_n998(x)
+ else
+ fun_l29_n177(x)
+ end
+end
+
+def fun_l28_n756(x)
+ if (x < 1)
+ fun_l29_n66(x)
+ else
+ fun_l29_n763(x)
+ end
+end
+
+def fun_l28_n757(x)
+ if (x < 1)
+ fun_l29_n112(x)
+ else
+ fun_l29_n494(x)
+ end
+end
+
+def fun_l28_n758(x)
+ if (x < 1)
+ fun_l29_n144(x)
+ else
+ fun_l29_n402(x)
+ end
+end
+
+def fun_l28_n759(x)
+ if (x < 1)
+ fun_l29_n162(x)
+ else
+ fun_l29_n338(x)
+ end
+end
+
+def fun_l28_n760(x)
+ if (x < 1)
+ fun_l29_n975(x)
+ else
+ fun_l29_n431(x)
+ end
+end
+
+def fun_l28_n761(x)
+ if (x < 1)
+ fun_l29_n676(x)
+ else
+ fun_l29_n787(x)
+ end
+end
+
+def fun_l28_n762(x)
+ if (x < 1)
+ fun_l29_n90(x)
+ else
+ fun_l29_n828(x)
+ end
+end
+
+def fun_l28_n763(x)
+ if (x < 1)
+ fun_l29_n816(x)
+ else
+ fun_l29_n119(x)
+ end
+end
+
+def fun_l28_n764(x)
+ if (x < 1)
+ fun_l29_n624(x)
+ else
+ fun_l29_n885(x)
+ end
+end
+
+def fun_l28_n765(x)
+ if (x < 1)
+ fun_l29_n933(x)
+ else
+ fun_l29_n378(x)
+ end
+end
+
+def fun_l28_n766(x)
+ if (x < 1)
+ fun_l29_n967(x)
+ else
+ fun_l29_n580(x)
+ end
+end
+
+def fun_l28_n767(x)
+ if (x < 1)
+ fun_l29_n752(x)
+ else
+ fun_l29_n607(x)
+ end
+end
+
+def fun_l28_n768(x)
+ if (x < 1)
+ fun_l29_n333(x)
+ else
+ fun_l29_n339(x)
+ end
+end
+
+def fun_l28_n769(x)
+ if (x < 1)
+ fun_l29_n720(x)
+ else
+ fun_l29_n952(x)
+ end
+end
+
+def fun_l28_n770(x)
+ if (x < 1)
+ fun_l29_n323(x)
+ else
+ fun_l29_n542(x)
+ end
+end
+
+def fun_l28_n771(x)
+ if (x < 1)
+ fun_l29_n472(x)
+ else
+ fun_l29_n4(x)
+ end
+end
+
+def fun_l28_n772(x)
+ if (x < 1)
+ fun_l29_n962(x)
+ else
+ fun_l29_n345(x)
+ end
+end
+
+def fun_l28_n773(x)
+ if (x < 1)
+ fun_l29_n305(x)
+ else
+ fun_l29_n106(x)
+ end
+end
+
+def fun_l28_n774(x)
+ if (x < 1)
+ fun_l29_n880(x)
+ else
+ fun_l29_n731(x)
+ end
+end
+
+def fun_l28_n775(x)
+ if (x < 1)
+ fun_l29_n760(x)
+ else
+ fun_l29_n460(x)
+ end
+end
+
+def fun_l28_n776(x)
+ if (x < 1)
+ fun_l29_n445(x)
+ else
+ fun_l29_n725(x)
+ end
+end
+
+def fun_l28_n777(x)
+ if (x < 1)
+ fun_l29_n850(x)
+ else
+ fun_l29_n121(x)
+ end
+end
+
+def fun_l28_n778(x)
+ if (x < 1)
+ fun_l29_n270(x)
+ else
+ fun_l29_n85(x)
+ end
+end
+
+def fun_l28_n779(x)
+ if (x < 1)
+ fun_l29_n208(x)
+ else
+ fun_l29_n822(x)
+ end
+end
+
+def fun_l28_n780(x)
+ if (x < 1)
+ fun_l29_n832(x)
+ else
+ fun_l29_n712(x)
+ end
+end
+
+def fun_l28_n781(x)
+ if (x < 1)
+ fun_l29_n456(x)
+ else
+ fun_l29_n947(x)
+ end
+end
+
+def fun_l28_n782(x)
+ if (x < 1)
+ fun_l29_n973(x)
+ else
+ fun_l29_n912(x)
+ end
+end
+
+def fun_l28_n783(x)
+ if (x < 1)
+ fun_l29_n365(x)
+ else
+ fun_l29_n496(x)
+ end
+end
+
+def fun_l28_n784(x)
+ if (x < 1)
+ fun_l29_n717(x)
+ else
+ fun_l29_n157(x)
+ end
+end
+
+def fun_l28_n785(x)
+ if (x < 1)
+ fun_l29_n754(x)
+ else
+ fun_l29_n462(x)
+ end
+end
+
+def fun_l28_n786(x)
+ if (x < 1)
+ fun_l29_n470(x)
+ else
+ fun_l29_n528(x)
+ end
+end
+
+def fun_l28_n787(x)
+ if (x < 1)
+ fun_l29_n463(x)
+ else
+ fun_l29_n107(x)
+ end
+end
+
+def fun_l28_n788(x)
+ if (x < 1)
+ fun_l29_n583(x)
+ else
+ fun_l29_n387(x)
+ end
+end
+
+def fun_l28_n789(x)
+ if (x < 1)
+ fun_l29_n55(x)
+ else
+ fun_l29_n694(x)
+ end
+end
+
+def fun_l28_n790(x)
+ if (x < 1)
+ fun_l29_n834(x)
+ else
+ fun_l29_n306(x)
+ end
+end
+
+def fun_l28_n791(x)
+ if (x < 1)
+ fun_l29_n374(x)
+ else
+ fun_l29_n502(x)
+ end
+end
+
+def fun_l28_n792(x)
+ if (x < 1)
+ fun_l29_n462(x)
+ else
+ fun_l29_n221(x)
+ end
+end
+
+def fun_l28_n793(x)
+ if (x < 1)
+ fun_l29_n680(x)
+ else
+ fun_l29_n966(x)
+ end
+end
+
+def fun_l28_n794(x)
+ if (x < 1)
+ fun_l29_n936(x)
+ else
+ fun_l29_n911(x)
+ end
+end
+
+def fun_l28_n795(x)
+ if (x < 1)
+ fun_l29_n863(x)
+ else
+ fun_l29_n978(x)
+ end
+end
+
+def fun_l28_n796(x)
+ if (x < 1)
+ fun_l29_n1(x)
+ else
+ fun_l29_n399(x)
+ end
+end
+
+def fun_l28_n797(x)
+ if (x < 1)
+ fun_l29_n628(x)
+ else
+ fun_l29_n603(x)
+ end
+end
+
+def fun_l28_n798(x)
+ if (x < 1)
+ fun_l29_n799(x)
+ else
+ fun_l29_n979(x)
+ end
+end
+
+def fun_l28_n799(x)
+ if (x < 1)
+ fun_l29_n856(x)
+ else
+ fun_l29_n946(x)
+ end
+end
+
+def fun_l28_n800(x)
+ if (x < 1)
+ fun_l29_n556(x)
+ else
+ fun_l29_n816(x)
+ end
+end
+
+def fun_l28_n801(x)
+ if (x < 1)
+ fun_l29_n619(x)
+ else
+ fun_l29_n19(x)
+ end
+end
+
+def fun_l28_n802(x)
+ if (x < 1)
+ fun_l29_n143(x)
+ else
+ fun_l29_n287(x)
+ end
+end
+
+def fun_l28_n803(x)
+ if (x < 1)
+ fun_l29_n816(x)
+ else
+ fun_l29_n271(x)
+ end
+end
+
+def fun_l28_n804(x)
+ if (x < 1)
+ fun_l29_n517(x)
+ else
+ fun_l29_n931(x)
+ end
+end
+
+def fun_l28_n805(x)
+ if (x < 1)
+ fun_l29_n298(x)
+ else
+ fun_l29_n509(x)
+ end
+end
+
+def fun_l28_n806(x)
+ if (x < 1)
+ fun_l29_n493(x)
+ else
+ fun_l29_n341(x)
+ end
+end
+
+def fun_l28_n807(x)
+ if (x < 1)
+ fun_l29_n270(x)
+ else
+ fun_l29_n82(x)
+ end
+end
+
+def fun_l28_n808(x)
+ if (x < 1)
+ fun_l29_n980(x)
+ else
+ fun_l29_n771(x)
+ end
+end
+
+def fun_l28_n809(x)
+ if (x < 1)
+ fun_l29_n784(x)
+ else
+ fun_l29_n696(x)
+ end
+end
+
+def fun_l28_n810(x)
+ if (x < 1)
+ fun_l29_n966(x)
+ else
+ fun_l29_n216(x)
+ end
+end
+
+def fun_l28_n811(x)
+ if (x < 1)
+ fun_l29_n374(x)
+ else
+ fun_l29_n482(x)
+ end
+end
+
+def fun_l28_n812(x)
+ if (x < 1)
+ fun_l29_n682(x)
+ else
+ fun_l29_n42(x)
+ end
+end
+
+def fun_l28_n813(x)
+ if (x < 1)
+ fun_l29_n254(x)
+ else
+ fun_l29_n899(x)
+ end
+end
+
+def fun_l28_n814(x)
+ if (x < 1)
+ fun_l29_n115(x)
+ else
+ fun_l29_n336(x)
+ end
+end
+
+def fun_l28_n815(x)
+ if (x < 1)
+ fun_l29_n842(x)
+ else
+ fun_l29_n201(x)
+ end
+end
+
+def fun_l28_n816(x)
+ if (x < 1)
+ fun_l29_n258(x)
+ else
+ fun_l29_n675(x)
+ end
+end
+
+def fun_l28_n817(x)
+ if (x < 1)
+ fun_l29_n594(x)
+ else
+ fun_l29_n61(x)
+ end
+end
+
+def fun_l28_n818(x)
+ if (x < 1)
+ fun_l29_n691(x)
+ else
+ fun_l29_n627(x)
+ end
+end
+
+def fun_l28_n819(x)
+ if (x < 1)
+ fun_l29_n963(x)
+ else
+ fun_l29_n611(x)
+ end
+end
+
+def fun_l28_n820(x)
+ if (x < 1)
+ fun_l29_n455(x)
+ else
+ fun_l29_n829(x)
+ end
+end
+
+def fun_l28_n821(x)
+ if (x < 1)
+ fun_l29_n818(x)
+ else
+ fun_l29_n242(x)
+ end
+end
+
+def fun_l28_n822(x)
+ if (x < 1)
+ fun_l29_n242(x)
+ else
+ fun_l29_n474(x)
+ end
+end
+
+def fun_l28_n823(x)
+ if (x < 1)
+ fun_l29_n847(x)
+ else
+ fun_l29_n119(x)
+ end
+end
+
+def fun_l28_n824(x)
+ if (x < 1)
+ fun_l29_n141(x)
+ else
+ fun_l29_n371(x)
+ end
+end
+
+def fun_l28_n825(x)
+ if (x < 1)
+ fun_l29_n913(x)
+ else
+ fun_l29_n129(x)
+ end
+end
+
+def fun_l28_n826(x)
+ if (x < 1)
+ fun_l29_n440(x)
+ else
+ fun_l29_n860(x)
+ end
+end
+
+def fun_l28_n827(x)
+ if (x < 1)
+ fun_l29_n194(x)
+ else
+ fun_l29_n940(x)
+ end
+end
+
+def fun_l28_n828(x)
+ if (x < 1)
+ fun_l29_n444(x)
+ else
+ fun_l29_n332(x)
+ end
+end
+
+def fun_l28_n829(x)
+ if (x < 1)
+ fun_l29_n435(x)
+ else
+ fun_l29_n559(x)
+ end
+end
+
+def fun_l28_n830(x)
+ if (x < 1)
+ fun_l29_n898(x)
+ else
+ fun_l29_n418(x)
+ end
+end
+
+def fun_l28_n831(x)
+ if (x < 1)
+ fun_l29_n13(x)
+ else
+ fun_l29_n917(x)
+ end
+end
+
+def fun_l28_n832(x)
+ if (x < 1)
+ fun_l29_n705(x)
+ else
+ fun_l29_n738(x)
+ end
+end
+
+def fun_l28_n833(x)
+ if (x < 1)
+ fun_l29_n519(x)
+ else
+ fun_l29_n35(x)
+ end
+end
+
+def fun_l28_n834(x)
+ if (x < 1)
+ fun_l29_n205(x)
+ else
+ fun_l29_n928(x)
+ end
+end
+
+def fun_l28_n835(x)
+ if (x < 1)
+ fun_l29_n401(x)
+ else
+ fun_l29_n191(x)
+ end
+end
+
+def fun_l28_n836(x)
+ if (x < 1)
+ fun_l29_n497(x)
+ else
+ fun_l29_n789(x)
+ end
+end
+
+def fun_l28_n837(x)
+ if (x < 1)
+ fun_l29_n745(x)
+ else
+ fun_l29_n714(x)
+ end
+end
+
+def fun_l28_n838(x)
+ if (x < 1)
+ fun_l29_n885(x)
+ else
+ fun_l29_n845(x)
+ end
+end
+
+def fun_l28_n839(x)
+ if (x < 1)
+ fun_l29_n423(x)
+ else
+ fun_l29_n835(x)
+ end
+end
+
+def fun_l28_n840(x)
+ if (x < 1)
+ fun_l29_n844(x)
+ else
+ fun_l29_n296(x)
+ end
+end
+
+def fun_l28_n841(x)
+ if (x < 1)
+ fun_l29_n980(x)
+ else
+ fun_l29_n298(x)
+ end
+end
+
+def fun_l28_n842(x)
+ if (x < 1)
+ fun_l29_n169(x)
+ else
+ fun_l29_n613(x)
+ end
+end
+
+def fun_l28_n843(x)
+ if (x < 1)
+ fun_l29_n323(x)
+ else
+ fun_l29_n437(x)
+ end
+end
+
+def fun_l28_n844(x)
+ if (x < 1)
+ fun_l29_n532(x)
+ else
+ fun_l29_n841(x)
+ end
+end
+
+def fun_l28_n845(x)
+ if (x < 1)
+ fun_l29_n984(x)
+ else
+ fun_l29_n696(x)
+ end
+end
+
+def fun_l28_n846(x)
+ if (x < 1)
+ fun_l29_n474(x)
+ else
+ fun_l29_n346(x)
+ end
+end
+
+def fun_l28_n847(x)
+ if (x < 1)
+ fun_l29_n725(x)
+ else
+ fun_l29_n994(x)
+ end
+end
+
+def fun_l28_n848(x)
+ if (x < 1)
+ fun_l29_n650(x)
+ else
+ fun_l29_n920(x)
+ end
+end
+
+def fun_l28_n849(x)
+ if (x < 1)
+ fun_l29_n626(x)
+ else
+ fun_l29_n704(x)
+ end
+end
+
+def fun_l28_n850(x)
+ if (x < 1)
+ fun_l29_n506(x)
+ else
+ fun_l29_n440(x)
+ end
+end
+
+def fun_l28_n851(x)
+ if (x < 1)
+ fun_l29_n512(x)
+ else
+ fun_l29_n811(x)
+ end
+end
+
+def fun_l28_n852(x)
+ if (x < 1)
+ fun_l29_n763(x)
+ else
+ fun_l29_n986(x)
+ end
+end
+
+def fun_l28_n853(x)
+ if (x < 1)
+ fun_l29_n866(x)
+ else
+ fun_l29_n972(x)
+ end
+end
+
+def fun_l28_n854(x)
+ if (x < 1)
+ fun_l29_n71(x)
+ else
+ fun_l29_n347(x)
+ end
+end
+
+def fun_l28_n855(x)
+ if (x < 1)
+ fun_l29_n380(x)
+ else
+ fun_l29_n809(x)
+ end
+end
+
+def fun_l28_n856(x)
+ if (x < 1)
+ fun_l29_n802(x)
+ else
+ fun_l29_n13(x)
+ end
+end
+
+def fun_l28_n857(x)
+ if (x < 1)
+ fun_l29_n631(x)
+ else
+ fun_l29_n636(x)
+ end
+end
+
+def fun_l28_n858(x)
+ if (x < 1)
+ fun_l29_n542(x)
+ else
+ fun_l29_n166(x)
+ end
+end
+
+def fun_l28_n859(x)
+ if (x < 1)
+ fun_l29_n393(x)
+ else
+ fun_l29_n317(x)
+ end
+end
+
+def fun_l28_n860(x)
+ if (x < 1)
+ fun_l29_n833(x)
+ else
+ fun_l29_n424(x)
+ end
+end
+
+def fun_l28_n861(x)
+ if (x < 1)
+ fun_l29_n62(x)
+ else
+ fun_l29_n78(x)
+ end
+end
+
+def fun_l28_n862(x)
+ if (x < 1)
+ fun_l29_n145(x)
+ else
+ fun_l29_n322(x)
+ end
+end
+
+def fun_l28_n863(x)
+ if (x < 1)
+ fun_l29_n733(x)
+ else
+ fun_l29_n171(x)
+ end
+end
+
+def fun_l28_n864(x)
+ if (x < 1)
+ fun_l29_n35(x)
+ else
+ fun_l29_n626(x)
+ end
+end
+
+def fun_l28_n865(x)
+ if (x < 1)
+ fun_l29_n356(x)
+ else
+ fun_l29_n832(x)
+ end
+end
+
+def fun_l28_n866(x)
+ if (x < 1)
+ fun_l29_n823(x)
+ else
+ fun_l29_n480(x)
+ end
+end
+
+def fun_l28_n867(x)
+ if (x < 1)
+ fun_l29_n397(x)
+ else
+ fun_l29_n245(x)
+ end
+end
+
+def fun_l28_n868(x)
+ if (x < 1)
+ fun_l29_n403(x)
+ else
+ fun_l29_n682(x)
+ end
+end
+
+def fun_l28_n869(x)
+ if (x < 1)
+ fun_l29_n481(x)
+ else
+ fun_l29_n543(x)
+ end
+end
+
+def fun_l28_n870(x)
+ if (x < 1)
+ fun_l29_n759(x)
+ else
+ fun_l29_n281(x)
+ end
+end
+
+def fun_l28_n871(x)
+ if (x < 1)
+ fun_l29_n671(x)
+ else
+ fun_l29_n644(x)
+ end
+end
+
+def fun_l28_n872(x)
+ if (x < 1)
+ fun_l29_n210(x)
+ else
+ fun_l29_n76(x)
+ end
+end
+
+def fun_l28_n873(x)
+ if (x < 1)
+ fun_l29_n823(x)
+ else
+ fun_l29_n461(x)
+ end
+end
+
+def fun_l28_n874(x)
+ if (x < 1)
+ fun_l29_n269(x)
+ else
+ fun_l29_n368(x)
+ end
+end
+
+def fun_l28_n875(x)
+ if (x < 1)
+ fun_l29_n727(x)
+ else
+ fun_l29_n37(x)
+ end
+end
+
+def fun_l28_n876(x)
+ if (x < 1)
+ fun_l29_n670(x)
+ else
+ fun_l29_n389(x)
+ end
+end
+
+def fun_l28_n877(x)
+ if (x < 1)
+ fun_l29_n844(x)
+ else
+ fun_l29_n424(x)
+ end
+end
+
+def fun_l28_n878(x)
+ if (x < 1)
+ fun_l29_n612(x)
+ else
+ fun_l29_n201(x)
+ end
+end
+
+def fun_l28_n879(x)
+ if (x < 1)
+ fun_l29_n790(x)
+ else
+ fun_l29_n270(x)
+ end
+end
+
+def fun_l28_n880(x)
+ if (x < 1)
+ fun_l29_n976(x)
+ else
+ fun_l29_n362(x)
+ end
+end
+
+def fun_l28_n881(x)
+ if (x < 1)
+ fun_l29_n701(x)
+ else
+ fun_l29_n846(x)
+ end
+end
+
+def fun_l28_n882(x)
+ if (x < 1)
+ fun_l29_n354(x)
+ else
+ fun_l29_n803(x)
+ end
+end
+
+def fun_l28_n883(x)
+ if (x < 1)
+ fun_l29_n40(x)
+ else
+ fun_l29_n168(x)
+ end
+end
+
+def fun_l28_n884(x)
+ if (x < 1)
+ fun_l29_n471(x)
+ else
+ fun_l29_n15(x)
+ end
+end
+
+def fun_l28_n885(x)
+ if (x < 1)
+ fun_l29_n87(x)
+ else
+ fun_l29_n287(x)
+ end
+end
+
+def fun_l28_n886(x)
+ if (x < 1)
+ fun_l29_n659(x)
+ else
+ fun_l29_n623(x)
+ end
+end
+
+def fun_l28_n887(x)
+ if (x < 1)
+ fun_l29_n318(x)
+ else
+ fun_l29_n377(x)
+ end
+end
+
+def fun_l28_n888(x)
+ if (x < 1)
+ fun_l29_n996(x)
+ else
+ fun_l29_n393(x)
+ end
+end
+
+def fun_l28_n889(x)
+ if (x < 1)
+ fun_l29_n999(x)
+ else
+ fun_l29_n370(x)
+ end
+end
+
+def fun_l28_n890(x)
+ if (x < 1)
+ fun_l29_n900(x)
+ else
+ fun_l29_n902(x)
+ end
+end
+
+def fun_l28_n891(x)
+ if (x < 1)
+ fun_l29_n180(x)
+ else
+ fun_l29_n477(x)
+ end
+end
+
+def fun_l28_n892(x)
+ if (x < 1)
+ fun_l29_n254(x)
+ else
+ fun_l29_n762(x)
+ end
+end
+
+def fun_l28_n893(x)
+ if (x < 1)
+ fun_l29_n36(x)
+ else
+ fun_l29_n198(x)
+ end
+end
+
+def fun_l28_n894(x)
+ if (x < 1)
+ fun_l29_n811(x)
+ else
+ fun_l29_n667(x)
+ end
+end
+
+def fun_l28_n895(x)
+ if (x < 1)
+ fun_l29_n711(x)
+ else
+ fun_l29_n462(x)
+ end
+end
+
+def fun_l28_n896(x)
+ if (x < 1)
+ fun_l29_n535(x)
+ else
+ fun_l29_n759(x)
+ end
+end
+
+def fun_l28_n897(x)
+ if (x < 1)
+ fun_l29_n336(x)
+ else
+ fun_l29_n72(x)
+ end
+end
+
+def fun_l28_n898(x)
+ if (x < 1)
+ fun_l29_n556(x)
+ else
+ fun_l29_n324(x)
+ end
+end
+
+def fun_l28_n899(x)
+ if (x < 1)
+ fun_l29_n821(x)
+ else
+ fun_l29_n520(x)
+ end
+end
+
+def fun_l28_n900(x)
+ if (x < 1)
+ fun_l29_n820(x)
+ else
+ fun_l29_n581(x)
+ end
+end
+
+def fun_l28_n901(x)
+ if (x < 1)
+ fun_l29_n416(x)
+ else
+ fun_l29_n662(x)
+ end
+end
+
+def fun_l28_n902(x)
+ if (x < 1)
+ fun_l29_n574(x)
+ else
+ fun_l29_n472(x)
+ end
+end
+
+def fun_l28_n903(x)
+ if (x < 1)
+ fun_l29_n140(x)
+ else
+ fun_l29_n608(x)
+ end
+end
+
+def fun_l28_n904(x)
+ if (x < 1)
+ fun_l29_n492(x)
+ else
+ fun_l29_n50(x)
+ end
+end
+
+def fun_l28_n905(x)
+ if (x < 1)
+ fun_l29_n240(x)
+ else
+ fun_l29_n308(x)
+ end
+end
+
+def fun_l28_n906(x)
+ if (x < 1)
+ fun_l29_n400(x)
+ else
+ fun_l29_n560(x)
+ end
+end
+
+def fun_l28_n907(x)
+ if (x < 1)
+ fun_l29_n974(x)
+ else
+ fun_l29_n580(x)
+ end
+end
+
+def fun_l28_n908(x)
+ if (x < 1)
+ fun_l29_n234(x)
+ else
+ fun_l29_n921(x)
+ end
+end
+
+def fun_l28_n909(x)
+ if (x < 1)
+ fun_l29_n712(x)
+ else
+ fun_l29_n861(x)
+ end
+end
+
+def fun_l28_n910(x)
+ if (x < 1)
+ fun_l29_n716(x)
+ else
+ fun_l29_n818(x)
+ end
+end
+
+def fun_l28_n911(x)
+ if (x < 1)
+ fun_l29_n574(x)
+ else
+ fun_l29_n668(x)
+ end
+end
+
+def fun_l28_n912(x)
+ if (x < 1)
+ fun_l29_n259(x)
+ else
+ fun_l29_n573(x)
+ end
+end
+
+def fun_l28_n913(x)
+ if (x < 1)
+ fun_l29_n427(x)
+ else
+ fun_l29_n572(x)
+ end
+end
+
+def fun_l28_n914(x)
+ if (x < 1)
+ fun_l29_n449(x)
+ else
+ fun_l29_n25(x)
+ end
+end
+
+def fun_l28_n915(x)
+ if (x < 1)
+ fun_l29_n234(x)
+ else
+ fun_l29_n391(x)
+ end
+end
+
+def fun_l28_n916(x)
+ if (x < 1)
+ fun_l29_n115(x)
+ else
+ fun_l29_n918(x)
+ end
+end
+
+def fun_l28_n917(x)
+ if (x < 1)
+ fun_l29_n83(x)
+ else
+ fun_l29_n295(x)
+ end
+end
+
+def fun_l28_n918(x)
+ if (x < 1)
+ fun_l29_n917(x)
+ else
+ fun_l29_n542(x)
+ end
+end
+
+def fun_l28_n919(x)
+ if (x < 1)
+ fun_l29_n836(x)
+ else
+ fun_l29_n460(x)
+ end
+end
+
+def fun_l28_n920(x)
+ if (x < 1)
+ fun_l29_n333(x)
+ else
+ fun_l29_n622(x)
+ end
+end
+
+def fun_l28_n921(x)
+ if (x < 1)
+ fun_l29_n717(x)
+ else
+ fun_l29_n342(x)
+ end
+end
+
+def fun_l28_n922(x)
+ if (x < 1)
+ fun_l29_n670(x)
+ else
+ fun_l29_n735(x)
+ end
+end
+
+def fun_l28_n923(x)
+ if (x < 1)
+ fun_l29_n723(x)
+ else
+ fun_l29_n994(x)
+ end
+end
+
+def fun_l28_n924(x)
+ if (x < 1)
+ fun_l29_n477(x)
+ else
+ fun_l29_n234(x)
+ end
+end
+
+def fun_l28_n925(x)
+ if (x < 1)
+ fun_l29_n514(x)
+ else
+ fun_l29_n194(x)
+ end
+end
+
+def fun_l28_n926(x)
+ if (x < 1)
+ fun_l29_n33(x)
+ else
+ fun_l29_n149(x)
+ end
+end
+
+def fun_l28_n927(x)
+ if (x < 1)
+ fun_l29_n805(x)
+ else
+ fun_l29_n9(x)
+ end
+end
+
+def fun_l28_n928(x)
+ if (x < 1)
+ fun_l29_n351(x)
+ else
+ fun_l29_n250(x)
+ end
+end
+
+def fun_l28_n929(x)
+ if (x < 1)
+ fun_l29_n22(x)
+ else
+ fun_l29_n294(x)
+ end
+end
+
+def fun_l28_n930(x)
+ if (x < 1)
+ fun_l29_n456(x)
+ else
+ fun_l29_n194(x)
+ end
+end
+
+def fun_l28_n931(x)
+ if (x < 1)
+ fun_l29_n354(x)
+ else
+ fun_l29_n341(x)
+ end
+end
+
+def fun_l28_n932(x)
+ if (x < 1)
+ fun_l29_n782(x)
+ else
+ fun_l29_n159(x)
+ end
+end
+
+def fun_l28_n933(x)
+ if (x < 1)
+ fun_l29_n636(x)
+ else
+ fun_l29_n588(x)
+ end
+end
+
+def fun_l28_n934(x)
+ if (x < 1)
+ fun_l29_n473(x)
+ else
+ fun_l29_n527(x)
+ end
+end
+
+def fun_l28_n935(x)
+ if (x < 1)
+ fun_l29_n776(x)
+ else
+ fun_l29_n349(x)
+ end
+end
+
+def fun_l28_n936(x)
+ if (x < 1)
+ fun_l29_n786(x)
+ else
+ fun_l29_n95(x)
+ end
+end
+
+def fun_l28_n937(x)
+ if (x < 1)
+ fun_l29_n276(x)
+ else
+ fun_l29_n952(x)
+ end
+end
+
+def fun_l28_n938(x)
+ if (x < 1)
+ fun_l29_n826(x)
+ else
+ fun_l29_n183(x)
+ end
+end
+
+def fun_l28_n939(x)
+ if (x < 1)
+ fun_l29_n11(x)
+ else
+ fun_l29_n775(x)
+ end
+end
+
+def fun_l28_n940(x)
+ if (x < 1)
+ fun_l29_n161(x)
+ else
+ fun_l29_n255(x)
+ end
+end
+
+def fun_l28_n941(x)
+ if (x < 1)
+ fun_l29_n77(x)
+ else
+ fun_l29_n673(x)
+ end
+end
+
+def fun_l28_n942(x)
+ if (x < 1)
+ fun_l29_n659(x)
+ else
+ fun_l29_n413(x)
+ end
+end
+
+def fun_l28_n943(x)
+ if (x < 1)
+ fun_l29_n827(x)
+ else
+ fun_l29_n262(x)
+ end
+end
+
+def fun_l28_n944(x)
+ if (x < 1)
+ fun_l29_n720(x)
+ else
+ fun_l29_n476(x)
+ end
+end
+
+def fun_l28_n945(x)
+ if (x < 1)
+ fun_l29_n457(x)
+ else
+ fun_l29_n613(x)
+ end
+end
+
+def fun_l28_n946(x)
+ if (x < 1)
+ fun_l29_n137(x)
+ else
+ fun_l29_n763(x)
+ end
+end
+
+def fun_l28_n947(x)
+ if (x < 1)
+ fun_l29_n569(x)
+ else
+ fun_l29_n331(x)
+ end
+end
+
+def fun_l28_n948(x)
+ if (x < 1)
+ fun_l29_n687(x)
+ else
+ fun_l29_n684(x)
+ end
+end
+
+def fun_l28_n949(x)
+ if (x < 1)
+ fun_l29_n532(x)
+ else
+ fun_l29_n203(x)
+ end
+end
+
+def fun_l28_n950(x)
+ if (x < 1)
+ fun_l29_n211(x)
+ else
+ fun_l29_n606(x)
+ end
+end
+
+def fun_l28_n951(x)
+ if (x < 1)
+ fun_l29_n522(x)
+ else
+ fun_l29_n907(x)
+ end
+end
+
+def fun_l28_n952(x)
+ if (x < 1)
+ fun_l29_n64(x)
+ else
+ fun_l29_n742(x)
+ end
+end
+
+def fun_l28_n953(x)
+ if (x < 1)
+ fun_l29_n28(x)
+ else
+ fun_l29_n712(x)
+ end
+end
+
+def fun_l28_n954(x)
+ if (x < 1)
+ fun_l29_n177(x)
+ else
+ fun_l29_n327(x)
+ end
+end
+
+def fun_l28_n955(x)
+ if (x < 1)
+ fun_l29_n274(x)
+ else
+ fun_l29_n830(x)
+ end
+end
+
+def fun_l28_n956(x)
+ if (x < 1)
+ fun_l29_n709(x)
+ else
+ fun_l29_n115(x)
+ end
+end
+
+def fun_l28_n957(x)
+ if (x < 1)
+ fun_l29_n72(x)
+ else
+ fun_l29_n849(x)
+ end
+end
+
+def fun_l28_n958(x)
+ if (x < 1)
+ fun_l29_n347(x)
+ else
+ fun_l29_n317(x)
+ end
+end
+
+def fun_l28_n959(x)
+ if (x < 1)
+ fun_l29_n540(x)
+ else
+ fun_l29_n226(x)
+ end
+end
+
+def fun_l28_n960(x)
+ if (x < 1)
+ fun_l29_n383(x)
+ else
+ fun_l29_n634(x)
+ end
+end
+
+def fun_l28_n961(x)
+ if (x < 1)
+ fun_l29_n616(x)
+ else
+ fun_l29_n300(x)
+ end
+end
+
+def fun_l28_n962(x)
+ if (x < 1)
+ fun_l29_n955(x)
+ else
+ fun_l29_n861(x)
+ end
+end
+
+def fun_l28_n963(x)
+ if (x < 1)
+ fun_l29_n143(x)
+ else
+ fun_l29_n106(x)
+ end
+end
+
+def fun_l28_n964(x)
+ if (x < 1)
+ fun_l29_n883(x)
+ else
+ fun_l29_n997(x)
+ end
+end
+
+def fun_l28_n965(x)
+ if (x < 1)
+ fun_l29_n247(x)
+ else
+ fun_l29_n471(x)
+ end
+end
+
+def fun_l28_n966(x)
+ if (x < 1)
+ fun_l29_n237(x)
+ else
+ fun_l29_n107(x)
+ end
+end
+
+def fun_l28_n967(x)
+ if (x < 1)
+ fun_l29_n754(x)
+ else
+ fun_l29_n996(x)
+ end
+end
+
+def fun_l28_n968(x)
+ if (x < 1)
+ fun_l29_n951(x)
+ else
+ fun_l29_n216(x)
+ end
+end
+
+def fun_l28_n969(x)
+ if (x < 1)
+ fun_l29_n36(x)
+ else
+ fun_l29_n815(x)
+ end
+end
+
+def fun_l28_n970(x)
+ if (x < 1)
+ fun_l29_n362(x)
+ else
+ fun_l29_n27(x)
+ end
+end
+
+def fun_l28_n971(x)
+ if (x < 1)
+ fun_l29_n837(x)
+ else
+ fun_l29_n230(x)
+ end
+end
+
+def fun_l28_n972(x)
+ if (x < 1)
+ fun_l29_n295(x)
+ else
+ fun_l29_n772(x)
+ end
+end
+
+def fun_l28_n973(x)
+ if (x < 1)
+ fun_l29_n570(x)
+ else
+ fun_l29_n514(x)
+ end
+end
+
+def fun_l28_n974(x)
+ if (x < 1)
+ fun_l29_n151(x)
+ else
+ fun_l29_n368(x)
+ end
+end
+
+def fun_l28_n975(x)
+ if (x < 1)
+ fun_l29_n229(x)
+ else
+ fun_l29_n408(x)
+ end
+end
+
+def fun_l28_n976(x)
+ if (x < 1)
+ fun_l29_n209(x)
+ else
+ fun_l29_n513(x)
+ end
+end
+
+def fun_l28_n977(x)
+ if (x < 1)
+ fun_l29_n753(x)
+ else
+ fun_l29_n36(x)
+ end
+end
+
+def fun_l28_n978(x)
+ if (x < 1)
+ fun_l29_n887(x)
+ else
+ fun_l29_n330(x)
+ end
+end
+
+def fun_l28_n979(x)
+ if (x < 1)
+ fun_l29_n880(x)
+ else
+ fun_l29_n6(x)
+ end
+end
+
+def fun_l28_n980(x)
+ if (x < 1)
+ fun_l29_n953(x)
+ else
+ fun_l29_n573(x)
+ end
+end
+
+def fun_l28_n981(x)
+ if (x < 1)
+ fun_l29_n960(x)
+ else
+ fun_l29_n774(x)
+ end
+end
+
+def fun_l28_n982(x)
+ if (x < 1)
+ fun_l29_n769(x)
+ else
+ fun_l29_n43(x)
+ end
+end
+
+def fun_l28_n983(x)
+ if (x < 1)
+ fun_l29_n43(x)
+ else
+ fun_l29_n168(x)
+ end
+end
+
+def fun_l28_n984(x)
+ if (x < 1)
+ fun_l29_n70(x)
+ else
+ fun_l29_n695(x)
+ end
+end
+
+def fun_l28_n985(x)
+ if (x < 1)
+ fun_l29_n421(x)
+ else
+ fun_l29_n9(x)
+ end
+end
+
+def fun_l28_n986(x)
+ if (x < 1)
+ fun_l29_n588(x)
+ else
+ fun_l29_n916(x)
+ end
+end
+
+def fun_l28_n987(x)
+ if (x < 1)
+ fun_l29_n693(x)
+ else
+ fun_l29_n979(x)
+ end
+end
+
+def fun_l28_n988(x)
+ if (x < 1)
+ fun_l29_n684(x)
+ else
+ fun_l29_n342(x)
+ end
+end
+
+def fun_l28_n989(x)
+ if (x < 1)
+ fun_l29_n148(x)
+ else
+ fun_l29_n348(x)
+ end
+end
+
+def fun_l28_n990(x)
+ if (x < 1)
+ fun_l29_n740(x)
+ else
+ fun_l29_n120(x)
+ end
+end
+
+def fun_l28_n991(x)
+ if (x < 1)
+ fun_l29_n258(x)
+ else
+ fun_l29_n670(x)
+ end
+end
+
+def fun_l28_n992(x)
+ if (x < 1)
+ fun_l29_n514(x)
+ else
+ fun_l29_n198(x)
+ end
+end
+
+def fun_l28_n993(x)
+ if (x < 1)
+ fun_l29_n563(x)
+ else
+ fun_l29_n174(x)
+ end
+end
+
+def fun_l28_n994(x)
+ if (x < 1)
+ fun_l29_n391(x)
+ else
+ fun_l29_n689(x)
+ end
+end
+
+def fun_l28_n995(x)
+ if (x < 1)
+ fun_l29_n156(x)
+ else
+ fun_l29_n579(x)
+ end
+end
+
+def fun_l28_n996(x)
+ if (x < 1)
+ fun_l29_n411(x)
+ else
+ fun_l29_n212(x)
+ end
+end
+
+def fun_l28_n997(x)
+ if (x < 1)
+ fun_l29_n709(x)
+ else
+ fun_l29_n735(x)
+ end
+end
+
+def fun_l28_n998(x)
+ if (x < 1)
+ fun_l29_n960(x)
+ else
+ fun_l29_n813(x)
+ end
+end
+
+def fun_l28_n999(x)
+ if (x < 1)
+ fun_l29_n553(x)
+ else
+ fun_l29_n875(x)
+ end
+end
+
+def fun_l29_n0(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n1(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n2(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n3(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n4(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n5(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n6(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n7(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n8(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n9(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n10(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n11(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n12(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n13(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n14(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n15(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n16(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n17(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n18(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n19(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n20(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n21(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n22(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n23(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n24(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n25(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n26(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n27(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n28(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n29(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n30(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n31(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n32(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n33(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n34(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n35(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n36(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n37(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n38(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n39(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n40(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n41(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n42(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n43(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n44(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n45(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n46(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n47(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n48(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n49(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n50(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n51(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n52(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n53(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n54(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n55(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n56(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n57(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n58(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n59(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n60(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n61(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n62(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n63(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n64(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n65(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n66(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n67(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n68(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n69(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n70(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n71(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n72(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n73(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n74(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n75(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n76(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n77(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n78(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n79(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n80(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n81(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n82(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n83(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n84(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n85(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n86(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n87(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n88(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n89(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n90(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n91(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n92(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n93(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n94(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n95(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n96(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n97(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n98(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n99(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n100(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n101(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n102(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n103(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n104(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n105(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n106(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n107(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n108(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n109(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n110(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n111(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n112(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n113(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n114(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n115(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n116(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n117(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n118(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n119(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n120(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n121(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n122(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n123(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n124(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n125(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n126(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n127(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n128(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n129(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n130(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n131(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n132(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n133(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n134(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n135(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n136(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n137(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n138(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n139(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n140(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n141(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n142(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n143(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n144(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n145(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n146(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n147(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n148(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n149(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n150(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n151(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n152(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n153(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n154(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n155(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n156(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n157(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n158(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n159(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n160(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n161(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n162(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n163(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n164(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n165(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n166(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n167(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n168(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n169(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n170(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n171(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n172(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n173(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n174(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n175(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n176(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n177(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n178(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n179(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n180(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n181(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n182(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n183(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n184(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n185(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n186(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n187(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n188(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n189(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n190(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n191(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n192(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n193(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n194(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n195(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n196(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n197(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n198(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n199(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n200(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n201(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n202(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n203(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n204(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n205(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n206(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n207(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n208(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n209(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n210(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n211(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n212(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n213(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n214(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n215(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n216(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n217(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n218(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n219(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n220(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n221(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n222(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n223(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n224(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n225(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n226(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n227(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n228(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n229(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n230(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n231(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n232(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n233(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n234(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n235(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n236(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n237(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n238(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n239(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n240(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n241(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n242(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n243(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n244(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n245(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n246(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n247(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n248(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n249(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n250(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n251(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n252(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n253(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n254(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n255(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n256(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n257(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n258(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n259(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n260(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n261(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n262(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n263(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n264(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n265(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n266(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n267(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n268(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n269(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n270(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n271(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n272(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n273(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n274(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n275(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n276(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n277(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n278(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n279(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n280(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n281(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n282(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n283(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n284(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n285(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n286(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n287(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n288(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n289(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n290(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n291(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n292(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n293(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n294(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n295(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n296(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n297(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n298(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n299(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n300(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n301(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n302(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n303(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n304(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n305(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n306(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n307(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n308(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n309(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n310(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n311(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n312(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n313(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n314(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n315(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n316(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n317(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n318(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n319(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n320(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n321(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n322(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n323(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n324(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n325(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n326(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n327(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n328(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n329(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n330(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n331(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n332(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n333(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n334(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n335(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n336(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n337(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n338(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n339(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n340(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n341(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n342(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n343(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n344(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n345(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n346(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n347(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n348(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n349(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n350(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n351(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n352(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n353(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n354(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n355(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n356(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n357(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n358(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n359(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n360(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n361(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n362(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n363(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n364(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n365(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n366(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n367(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n368(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n369(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n370(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n371(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n372(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n373(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n374(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n375(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n376(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n377(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n378(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n379(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n380(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n381(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n382(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n383(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n384(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n385(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n386(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n387(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n388(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n389(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n390(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n391(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n392(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n393(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n394(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n395(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n396(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n397(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n398(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n399(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n400(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n401(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n402(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n403(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n404(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n405(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n406(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n407(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n408(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n409(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n410(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n411(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n412(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n413(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n414(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n415(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n416(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n417(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n418(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n419(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n420(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n421(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n422(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n423(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n424(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n425(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n426(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n427(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n428(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n429(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n430(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n431(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n432(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n433(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n434(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n435(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n436(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n437(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n438(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n439(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n440(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n441(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n442(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n443(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n444(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n445(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n446(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n447(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n448(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n449(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n450(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n451(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n452(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n453(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n454(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n455(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n456(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n457(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n458(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n459(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n460(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n461(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n462(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n463(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n464(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n465(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n466(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n467(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n468(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n469(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n470(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n471(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n472(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n473(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n474(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n475(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n476(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n477(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n478(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n479(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n480(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n481(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n482(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n483(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n484(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n485(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n486(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n487(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n488(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n489(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n490(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n491(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n492(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n493(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n494(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n495(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n496(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n497(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n498(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n499(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n500(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n501(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n502(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n503(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n504(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n505(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n506(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n507(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n508(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n509(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n510(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n511(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n512(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n513(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n514(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n515(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n516(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n517(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n518(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n519(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n520(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n521(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n522(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n523(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n524(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n525(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n526(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n527(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n528(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n529(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n530(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n531(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n532(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n533(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n534(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n535(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n536(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n537(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n538(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n539(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n540(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n541(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n542(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n543(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n544(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n545(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n546(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n547(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n548(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n549(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n550(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n551(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n552(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n553(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n554(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n555(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n556(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n557(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n558(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n559(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n560(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n561(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n562(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n563(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n564(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n565(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n566(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n567(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n568(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n569(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n570(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n571(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n572(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n573(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n574(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n575(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n576(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n577(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n578(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n579(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n580(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n581(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n582(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n583(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n584(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n585(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n586(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n587(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n588(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n589(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n590(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n591(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n592(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n593(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n594(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n595(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n596(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n597(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n598(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n599(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n600(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n601(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n602(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n603(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n604(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n605(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n606(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n607(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n608(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n609(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n610(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n611(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n612(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n613(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n614(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n615(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n616(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n617(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n618(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n619(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n620(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n621(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n622(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n623(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n624(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n625(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n626(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n627(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n628(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n629(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n630(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n631(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n632(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n633(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n634(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n635(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n636(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n637(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n638(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n639(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n640(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n641(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n642(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n643(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n644(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n645(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n646(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n647(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n648(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n649(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n650(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n651(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n652(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n653(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n654(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n655(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n656(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n657(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n658(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n659(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n660(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n661(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n662(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n663(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n664(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n665(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n666(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n667(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n668(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n669(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n670(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n671(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n672(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n673(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n674(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n675(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n676(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n677(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n678(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n679(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n680(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n681(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n682(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n683(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n684(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n685(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n686(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n687(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n688(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n689(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n690(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n691(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n692(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n693(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n694(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n695(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n696(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n697(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n698(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n699(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n700(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n701(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n702(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n703(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n704(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n705(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n706(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n707(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n708(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n709(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n710(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n711(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n712(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n713(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n714(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n715(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n716(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n717(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n718(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n719(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n720(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n721(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n722(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n723(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n724(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n725(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n726(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n727(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n728(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n729(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n730(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n731(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n732(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n733(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n734(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n735(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n736(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n737(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n738(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n739(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n740(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n741(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n742(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n743(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n744(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n745(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n746(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n747(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n748(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n749(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n750(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n751(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n752(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n753(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n754(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n755(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n756(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n757(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n758(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n759(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n760(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n761(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n762(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n763(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n764(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n765(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n766(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n767(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n768(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n769(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n770(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n771(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n772(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n773(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n774(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n775(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n776(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n777(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n778(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n779(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n780(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n781(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n782(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n783(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n784(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n785(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n786(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n787(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n788(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n789(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n790(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n791(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n792(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n793(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n794(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n795(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n796(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n797(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n798(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n799(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n800(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n801(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n802(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n803(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n804(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n805(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n806(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n807(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n808(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n809(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n810(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n811(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n812(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n813(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n814(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n815(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n816(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n817(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n818(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n819(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n820(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n821(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n822(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n823(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n824(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n825(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n826(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n827(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n828(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n829(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n830(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n831(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n832(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n833(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n834(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n835(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n836(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n837(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n838(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n839(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n840(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n841(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n842(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n843(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n844(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n845(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n846(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n847(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n848(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n849(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n850(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n851(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n852(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n853(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n854(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n855(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n856(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n857(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n858(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n859(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n860(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n861(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n862(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n863(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n864(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n865(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n866(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n867(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n868(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n869(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n870(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n871(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n872(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n873(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n874(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n875(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n876(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n877(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n878(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n879(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n880(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n881(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n882(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n883(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n884(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n885(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n886(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n887(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n888(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n889(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n890(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n891(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n892(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n893(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n894(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n895(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n896(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n897(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n898(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n899(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n900(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n901(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n902(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n903(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n904(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n905(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n906(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n907(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n908(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n909(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n910(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n911(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n912(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n913(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n914(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n915(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n916(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n917(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n918(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n919(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n920(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n921(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n922(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n923(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n924(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n925(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n926(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n927(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n928(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n929(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n930(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n931(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n932(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n933(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n934(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n935(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n936(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n937(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n938(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n939(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n940(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n941(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n942(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n943(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n944(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n945(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n946(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n947(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n948(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n949(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n950(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n951(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n952(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n953(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n954(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n955(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n956(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n957(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n958(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n959(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n960(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n961(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n962(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n963(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n964(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n965(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n966(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n967(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n968(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n969(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n970(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n971(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n972(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n973(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n974(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n975(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n976(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n977(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n978(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n979(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n980(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n981(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n982(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n983(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n984(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n985(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n986(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n987(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n988(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n989(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n990(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n991(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n992(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n993(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n994(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n995(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n996(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n997(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n998(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+def fun_l29_n999(x)
+ if (x < 1)
+ inc(x)
+ else
+ inc(x)
+ end
+end
+
+@a = 0
+@b = 0
+@c = 0
+@d = 0
+
+@count = 0
+def inc(x)
+ @count += 1
+end
+
+@x = 0
+
+100.times do
+ @x = (@x < 1)? 1:0
+ fun_l0_n0(@x)
+ fun_l0_n1(@x)
+ fun_l0_n2(@x)
+ fun_l0_n3(@x)
+ fun_l0_n4(@x)
+ fun_l0_n5(@x)
+ fun_l0_n6(@x)
+ fun_l0_n7(@x)
+ fun_l0_n8(@x)
+ fun_l0_n9(@x)
+ fun_l0_n10(@x)
+ fun_l0_n11(@x)
+ fun_l0_n12(@x)
+ fun_l0_n13(@x)
+ fun_l0_n14(@x)
+ fun_l0_n15(@x)
+ fun_l0_n16(@x)
+ fun_l0_n17(@x)
+ fun_l0_n18(@x)
+ fun_l0_n19(@x)
+ fun_l0_n20(@x)
+ fun_l0_n21(@x)
+ fun_l0_n22(@x)
+ fun_l0_n23(@x)
+ fun_l0_n24(@x)
+ fun_l0_n25(@x)
+ fun_l0_n26(@x)
+ fun_l0_n27(@x)
+ fun_l0_n28(@x)
+ fun_l0_n29(@x)
+ fun_l0_n30(@x)
+ fun_l0_n31(@x)
+ fun_l0_n32(@x)
+ fun_l0_n33(@x)
+ fun_l0_n34(@x)
+ fun_l0_n35(@x)
+ fun_l0_n36(@x)
+ fun_l0_n37(@x)
+ fun_l0_n38(@x)
+ fun_l0_n39(@x)
+ fun_l0_n40(@x)
+ fun_l0_n41(@x)
+ fun_l0_n42(@x)
+ fun_l0_n43(@x)
+ fun_l0_n44(@x)
+ fun_l0_n45(@x)
+ fun_l0_n46(@x)
+ fun_l0_n47(@x)
+ fun_l0_n48(@x)
+ fun_l0_n49(@x)
+ fun_l0_n50(@x)
+ fun_l0_n51(@x)
+ fun_l0_n52(@x)
+ fun_l0_n53(@x)
+ fun_l0_n54(@x)
+ fun_l0_n55(@x)
+ fun_l0_n56(@x)
+ fun_l0_n57(@x)
+ fun_l0_n58(@x)
+ fun_l0_n59(@x)
+ fun_l0_n60(@x)
+ fun_l0_n61(@x)
+ fun_l0_n62(@x)
+ fun_l0_n63(@x)
+ fun_l0_n64(@x)
+ fun_l0_n65(@x)
+ fun_l0_n66(@x)
+ fun_l0_n67(@x)
+ fun_l0_n68(@x)
+ fun_l0_n69(@x)
+ fun_l0_n70(@x)
+ fun_l0_n71(@x)
+ fun_l0_n72(@x)
+ fun_l0_n73(@x)
+ fun_l0_n74(@x)
+ fun_l0_n75(@x)
+ fun_l0_n76(@x)
+ fun_l0_n77(@x)
+ fun_l0_n78(@x)
+ fun_l0_n79(@x)
+ fun_l0_n80(@x)
+ fun_l0_n81(@x)
+ fun_l0_n82(@x)
+ fun_l0_n83(@x)
+ fun_l0_n84(@x)
+ fun_l0_n85(@x)
+ fun_l0_n86(@x)
+ fun_l0_n87(@x)
+ fun_l0_n88(@x)
+ fun_l0_n89(@x)
+ fun_l0_n90(@x)
+ fun_l0_n91(@x)
+ fun_l0_n92(@x)
+ fun_l0_n93(@x)
+ fun_l0_n94(@x)
+ fun_l0_n95(@x)
+ fun_l0_n96(@x)
+ fun_l0_n97(@x)
+ fun_l0_n98(@x)
+ fun_l0_n99(@x)
+ fun_l0_n100(@x)
+ fun_l0_n101(@x)
+ fun_l0_n102(@x)
+ fun_l0_n103(@x)
+ fun_l0_n104(@x)
+ fun_l0_n105(@x)
+ fun_l0_n106(@x)
+ fun_l0_n107(@x)
+ fun_l0_n108(@x)
+ fun_l0_n109(@x)
+ fun_l0_n110(@x)
+ fun_l0_n111(@x)
+ fun_l0_n112(@x)
+ fun_l0_n113(@x)
+ fun_l0_n114(@x)
+ fun_l0_n115(@x)
+ fun_l0_n116(@x)
+ fun_l0_n117(@x)
+ fun_l0_n118(@x)
+ fun_l0_n119(@x)
+ fun_l0_n120(@x)
+ fun_l0_n121(@x)
+ fun_l0_n122(@x)
+ fun_l0_n123(@x)
+ fun_l0_n124(@x)
+ fun_l0_n125(@x)
+ fun_l0_n126(@x)
+ fun_l0_n127(@x)
+ fun_l0_n128(@x)
+ fun_l0_n129(@x)
+ fun_l0_n130(@x)
+ fun_l0_n131(@x)
+ fun_l0_n132(@x)
+ fun_l0_n133(@x)
+ fun_l0_n134(@x)
+ fun_l0_n135(@x)
+ fun_l0_n136(@x)
+ fun_l0_n137(@x)
+ fun_l0_n138(@x)
+ fun_l0_n139(@x)
+ fun_l0_n140(@x)
+ fun_l0_n141(@x)
+ fun_l0_n142(@x)
+ fun_l0_n143(@x)
+ fun_l0_n144(@x)
+ fun_l0_n145(@x)
+ fun_l0_n146(@x)
+ fun_l0_n147(@x)
+ fun_l0_n148(@x)
+ fun_l0_n149(@x)
+ fun_l0_n150(@x)
+ fun_l0_n151(@x)
+ fun_l0_n152(@x)
+ fun_l0_n153(@x)
+ fun_l0_n154(@x)
+ fun_l0_n155(@x)
+ fun_l0_n156(@x)
+ fun_l0_n157(@x)
+ fun_l0_n158(@x)
+ fun_l0_n159(@x)
+ fun_l0_n160(@x)
+ fun_l0_n161(@x)
+ fun_l0_n162(@x)
+ fun_l0_n163(@x)
+ fun_l0_n164(@x)
+ fun_l0_n165(@x)
+ fun_l0_n166(@x)
+ fun_l0_n167(@x)
+ fun_l0_n168(@x)
+ fun_l0_n169(@x)
+ fun_l0_n170(@x)
+ fun_l0_n171(@x)
+ fun_l0_n172(@x)
+ fun_l0_n173(@x)
+ fun_l0_n174(@x)
+ fun_l0_n175(@x)
+ fun_l0_n176(@x)
+ fun_l0_n177(@x)
+ fun_l0_n178(@x)
+ fun_l0_n179(@x)
+ fun_l0_n180(@x)
+ fun_l0_n181(@x)
+ fun_l0_n182(@x)
+ fun_l0_n183(@x)
+ fun_l0_n184(@x)
+ fun_l0_n185(@x)
+ fun_l0_n186(@x)
+ fun_l0_n187(@x)
+ fun_l0_n188(@x)
+ fun_l0_n189(@x)
+ fun_l0_n190(@x)
+ fun_l0_n191(@x)
+ fun_l0_n192(@x)
+ fun_l0_n193(@x)
+ fun_l0_n194(@x)
+ fun_l0_n195(@x)
+ fun_l0_n196(@x)
+ fun_l0_n197(@x)
+ fun_l0_n198(@x)
+ fun_l0_n199(@x)
+ fun_l0_n200(@x)
+ fun_l0_n201(@x)
+ fun_l0_n202(@x)
+ fun_l0_n203(@x)
+ fun_l0_n204(@x)
+ fun_l0_n205(@x)
+ fun_l0_n206(@x)
+ fun_l0_n207(@x)
+ fun_l0_n208(@x)
+ fun_l0_n209(@x)
+ fun_l0_n210(@x)
+ fun_l0_n211(@x)
+ fun_l0_n212(@x)
+ fun_l0_n213(@x)
+ fun_l0_n214(@x)
+ fun_l0_n215(@x)
+ fun_l0_n216(@x)
+ fun_l0_n217(@x)
+ fun_l0_n218(@x)
+ fun_l0_n219(@x)
+ fun_l0_n220(@x)
+ fun_l0_n221(@x)
+ fun_l0_n222(@x)
+ fun_l0_n223(@x)
+ fun_l0_n224(@x)
+ fun_l0_n225(@x)
+ fun_l0_n226(@x)
+ fun_l0_n227(@x)
+ fun_l0_n228(@x)
+ fun_l0_n229(@x)
+ fun_l0_n230(@x)
+ fun_l0_n231(@x)
+ fun_l0_n232(@x)
+ fun_l0_n233(@x)
+ fun_l0_n234(@x)
+ fun_l0_n235(@x)
+ fun_l0_n236(@x)
+ fun_l0_n237(@x)
+ fun_l0_n238(@x)
+ fun_l0_n239(@x)
+ fun_l0_n240(@x)
+ fun_l0_n241(@x)
+ fun_l0_n242(@x)
+ fun_l0_n243(@x)
+ fun_l0_n244(@x)
+ fun_l0_n245(@x)
+ fun_l0_n246(@x)
+ fun_l0_n247(@x)
+ fun_l0_n248(@x)
+ fun_l0_n249(@x)
+ fun_l0_n250(@x)
+ fun_l0_n251(@x)
+ fun_l0_n252(@x)
+ fun_l0_n253(@x)
+ fun_l0_n254(@x)
+ fun_l0_n255(@x)
+ fun_l0_n256(@x)
+ fun_l0_n257(@x)
+ fun_l0_n258(@x)
+ fun_l0_n259(@x)
+ fun_l0_n260(@x)
+ fun_l0_n261(@x)
+ fun_l0_n262(@x)
+ fun_l0_n263(@x)
+ fun_l0_n264(@x)
+ fun_l0_n265(@x)
+ fun_l0_n266(@x)
+ fun_l0_n267(@x)
+ fun_l0_n268(@x)
+ fun_l0_n269(@x)
+ fun_l0_n270(@x)
+ fun_l0_n271(@x)
+ fun_l0_n272(@x)
+ fun_l0_n273(@x)
+ fun_l0_n274(@x)
+ fun_l0_n275(@x)
+ fun_l0_n276(@x)
+ fun_l0_n277(@x)
+ fun_l0_n278(@x)
+ fun_l0_n279(@x)
+ fun_l0_n280(@x)
+ fun_l0_n281(@x)
+ fun_l0_n282(@x)
+ fun_l0_n283(@x)
+ fun_l0_n284(@x)
+ fun_l0_n285(@x)
+ fun_l0_n286(@x)
+ fun_l0_n287(@x)
+ fun_l0_n288(@x)
+ fun_l0_n289(@x)
+ fun_l0_n290(@x)
+ fun_l0_n291(@x)
+ fun_l0_n292(@x)
+ fun_l0_n293(@x)
+ fun_l0_n294(@x)
+ fun_l0_n295(@x)
+ fun_l0_n296(@x)
+ fun_l0_n297(@x)
+ fun_l0_n298(@x)
+ fun_l0_n299(@x)
+ fun_l0_n300(@x)
+ fun_l0_n301(@x)
+ fun_l0_n302(@x)
+ fun_l0_n303(@x)
+ fun_l0_n304(@x)
+ fun_l0_n305(@x)
+ fun_l0_n306(@x)
+ fun_l0_n307(@x)
+ fun_l0_n308(@x)
+ fun_l0_n309(@x)
+ fun_l0_n310(@x)
+ fun_l0_n311(@x)
+ fun_l0_n312(@x)
+ fun_l0_n313(@x)
+ fun_l0_n314(@x)
+ fun_l0_n315(@x)
+ fun_l0_n316(@x)
+ fun_l0_n317(@x)
+ fun_l0_n318(@x)
+ fun_l0_n319(@x)
+ fun_l0_n320(@x)
+ fun_l0_n321(@x)
+ fun_l0_n322(@x)
+ fun_l0_n323(@x)
+ fun_l0_n324(@x)
+ fun_l0_n325(@x)
+ fun_l0_n326(@x)
+ fun_l0_n327(@x)
+ fun_l0_n328(@x)
+ fun_l0_n329(@x)
+ fun_l0_n330(@x)
+ fun_l0_n331(@x)
+ fun_l0_n332(@x)
+ fun_l0_n333(@x)
+ fun_l0_n334(@x)
+ fun_l0_n335(@x)
+ fun_l0_n336(@x)
+ fun_l0_n337(@x)
+ fun_l0_n338(@x)
+ fun_l0_n339(@x)
+ fun_l0_n340(@x)
+ fun_l0_n341(@x)
+ fun_l0_n342(@x)
+ fun_l0_n343(@x)
+ fun_l0_n344(@x)
+ fun_l0_n345(@x)
+ fun_l0_n346(@x)
+ fun_l0_n347(@x)
+ fun_l0_n348(@x)
+ fun_l0_n349(@x)
+ fun_l0_n350(@x)
+ fun_l0_n351(@x)
+ fun_l0_n352(@x)
+ fun_l0_n353(@x)
+ fun_l0_n354(@x)
+ fun_l0_n355(@x)
+ fun_l0_n356(@x)
+ fun_l0_n357(@x)
+ fun_l0_n358(@x)
+ fun_l0_n359(@x)
+ fun_l0_n360(@x)
+ fun_l0_n361(@x)
+ fun_l0_n362(@x)
+ fun_l0_n363(@x)
+ fun_l0_n364(@x)
+ fun_l0_n365(@x)
+ fun_l0_n366(@x)
+ fun_l0_n367(@x)
+ fun_l0_n368(@x)
+ fun_l0_n369(@x)
+ fun_l0_n370(@x)
+ fun_l0_n371(@x)
+ fun_l0_n372(@x)
+ fun_l0_n373(@x)
+ fun_l0_n374(@x)
+ fun_l0_n375(@x)
+ fun_l0_n376(@x)
+ fun_l0_n377(@x)
+ fun_l0_n378(@x)
+ fun_l0_n379(@x)
+ fun_l0_n380(@x)
+ fun_l0_n381(@x)
+ fun_l0_n382(@x)
+ fun_l0_n383(@x)
+ fun_l0_n384(@x)
+ fun_l0_n385(@x)
+ fun_l0_n386(@x)
+ fun_l0_n387(@x)
+ fun_l0_n388(@x)
+ fun_l0_n389(@x)
+ fun_l0_n390(@x)
+ fun_l0_n391(@x)
+ fun_l0_n392(@x)
+ fun_l0_n393(@x)
+ fun_l0_n394(@x)
+ fun_l0_n395(@x)
+ fun_l0_n396(@x)
+ fun_l0_n397(@x)
+ fun_l0_n398(@x)
+ fun_l0_n399(@x)
+ fun_l0_n400(@x)
+ fun_l0_n401(@x)
+ fun_l0_n402(@x)
+ fun_l0_n403(@x)
+ fun_l0_n404(@x)
+ fun_l0_n405(@x)
+ fun_l0_n406(@x)
+ fun_l0_n407(@x)
+ fun_l0_n408(@x)
+ fun_l0_n409(@x)
+ fun_l0_n410(@x)
+ fun_l0_n411(@x)
+ fun_l0_n412(@x)
+ fun_l0_n413(@x)
+ fun_l0_n414(@x)
+ fun_l0_n415(@x)
+ fun_l0_n416(@x)
+ fun_l0_n417(@x)
+ fun_l0_n418(@x)
+ fun_l0_n419(@x)
+ fun_l0_n420(@x)
+ fun_l0_n421(@x)
+ fun_l0_n422(@x)
+ fun_l0_n423(@x)
+ fun_l0_n424(@x)
+ fun_l0_n425(@x)
+ fun_l0_n426(@x)
+ fun_l0_n427(@x)
+ fun_l0_n428(@x)
+ fun_l0_n429(@x)
+ fun_l0_n430(@x)
+ fun_l0_n431(@x)
+ fun_l0_n432(@x)
+ fun_l0_n433(@x)
+ fun_l0_n434(@x)
+ fun_l0_n435(@x)
+ fun_l0_n436(@x)
+ fun_l0_n437(@x)
+ fun_l0_n438(@x)
+ fun_l0_n439(@x)
+ fun_l0_n440(@x)
+ fun_l0_n441(@x)
+ fun_l0_n442(@x)
+ fun_l0_n443(@x)
+ fun_l0_n444(@x)
+ fun_l0_n445(@x)
+ fun_l0_n446(@x)
+ fun_l0_n447(@x)
+ fun_l0_n448(@x)
+ fun_l0_n449(@x)
+ fun_l0_n450(@x)
+ fun_l0_n451(@x)
+ fun_l0_n452(@x)
+ fun_l0_n453(@x)
+ fun_l0_n454(@x)
+ fun_l0_n455(@x)
+ fun_l0_n456(@x)
+ fun_l0_n457(@x)
+ fun_l0_n458(@x)
+ fun_l0_n459(@x)
+ fun_l0_n460(@x)
+ fun_l0_n461(@x)
+ fun_l0_n462(@x)
+ fun_l0_n463(@x)
+ fun_l0_n464(@x)
+ fun_l0_n465(@x)
+ fun_l0_n466(@x)
+ fun_l0_n467(@x)
+ fun_l0_n468(@x)
+ fun_l0_n469(@x)
+ fun_l0_n470(@x)
+ fun_l0_n471(@x)
+ fun_l0_n472(@x)
+ fun_l0_n473(@x)
+ fun_l0_n474(@x)
+ fun_l0_n475(@x)
+ fun_l0_n476(@x)
+ fun_l0_n477(@x)
+ fun_l0_n478(@x)
+ fun_l0_n479(@x)
+ fun_l0_n480(@x)
+ fun_l0_n481(@x)
+ fun_l0_n482(@x)
+ fun_l0_n483(@x)
+ fun_l0_n484(@x)
+ fun_l0_n485(@x)
+ fun_l0_n486(@x)
+ fun_l0_n487(@x)
+ fun_l0_n488(@x)
+ fun_l0_n489(@x)
+ fun_l0_n490(@x)
+ fun_l0_n491(@x)
+ fun_l0_n492(@x)
+ fun_l0_n493(@x)
+ fun_l0_n494(@x)
+ fun_l0_n495(@x)
+ fun_l0_n496(@x)
+ fun_l0_n497(@x)
+ fun_l0_n498(@x)
+ fun_l0_n499(@x)
+ fun_l0_n500(@x)
+ fun_l0_n501(@x)
+ fun_l0_n502(@x)
+ fun_l0_n503(@x)
+ fun_l0_n504(@x)
+ fun_l0_n505(@x)
+ fun_l0_n506(@x)
+ fun_l0_n507(@x)
+ fun_l0_n508(@x)
+ fun_l0_n509(@x)
+ fun_l0_n510(@x)
+ fun_l0_n511(@x)
+ fun_l0_n512(@x)
+ fun_l0_n513(@x)
+ fun_l0_n514(@x)
+ fun_l0_n515(@x)
+ fun_l0_n516(@x)
+ fun_l0_n517(@x)
+ fun_l0_n518(@x)
+ fun_l0_n519(@x)
+ fun_l0_n520(@x)
+ fun_l0_n521(@x)
+ fun_l0_n522(@x)
+ fun_l0_n523(@x)
+ fun_l0_n524(@x)
+ fun_l0_n525(@x)
+ fun_l0_n526(@x)
+ fun_l0_n527(@x)
+ fun_l0_n528(@x)
+ fun_l0_n529(@x)
+ fun_l0_n530(@x)
+ fun_l0_n531(@x)
+ fun_l0_n532(@x)
+ fun_l0_n533(@x)
+ fun_l0_n534(@x)
+ fun_l0_n535(@x)
+ fun_l0_n536(@x)
+ fun_l0_n537(@x)
+ fun_l0_n538(@x)
+ fun_l0_n539(@x)
+ fun_l0_n540(@x)
+ fun_l0_n541(@x)
+ fun_l0_n542(@x)
+ fun_l0_n543(@x)
+ fun_l0_n544(@x)
+ fun_l0_n545(@x)
+ fun_l0_n546(@x)
+ fun_l0_n547(@x)
+ fun_l0_n548(@x)
+ fun_l0_n549(@x)
+ fun_l0_n550(@x)
+ fun_l0_n551(@x)
+ fun_l0_n552(@x)
+ fun_l0_n553(@x)
+ fun_l0_n554(@x)
+ fun_l0_n555(@x)
+ fun_l0_n556(@x)
+ fun_l0_n557(@x)
+ fun_l0_n558(@x)
+ fun_l0_n559(@x)
+ fun_l0_n560(@x)
+ fun_l0_n561(@x)
+ fun_l0_n562(@x)
+ fun_l0_n563(@x)
+ fun_l0_n564(@x)
+ fun_l0_n565(@x)
+ fun_l0_n566(@x)
+ fun_l0_n567(@x)
+ fun_l0_n568(@x)
+ fun_l0_n569(@x)
+ fun_l0_n570(@x)
+ fun_l0_n571(@x)
+ fun_l0_n572(@x)
+ fun_l0_n573(@x)
+ fun_l0_n574(@x)
+ fun_l0_n575(@x)
+ fun_l0_n576(@x)
+ fun_l0_n577(@x)
+ fun_l0_n578(@x)
+ fun_l0_n579(@x)
+ fun_l0_n580(@x)
+ fun_l0_n581(@x)
+ fun_l0_n582(@x)
+ fun_l0_n583(@x)
+ fun_l0_n584(@x)
+ fun_l0_n585(@x)
+ fun_l0_n586(@x)
+ fun_l0_n587(@x)
+ fun_l0_n588(@x)
+ fun_l0_n589(@x)
+ fun_l0_n590(@x)
+ fun_l0_n591(@x)
+ fun_l0_n592(@x)
+ fun_l0_n593(@x)
+ fun_l0_n594(@x)
+ fun_l0_n595(@x)
+ fun_l0_n596(@x)
+ fun_l0_n597(@x)
+ fun_l0_n598(@x)
+ fun_l0_n599(@x)
+ fun_l0_n600(@x)
+ fun_l0_n601(@x)
+ fun_l0_n602(@x)
+ fun_l0_n603(@x)
+ fun_l0_n604(@x)
+ fun_l0_n605(@x)
+ fun_l0_n606(@x)
+ fun_l0_n607(@x)
+ fun_l0_n608(@x)
+ fun_l0_n609(@x)
+ fun_l0_n610(@x)
+ fun_l0_n611(@x)
+ fun_l0_n612(@x)
+ fun_l0_n613(@x)
+ fun_l0_n614(@x)
+ fun_l0_n615(@x)
+ fun_l0_n616(@x)
+ fun_l0_n617(@x)
+ fun_l0_n618(@x)
+ fun_l0_n619(@x)
+ fun_l0_n620(@x)
+ fun_l0_n621(@x)
+ fun_l0_n622(@x)
+ fun_l0_n623(@x)
+ fun_l0_n624(@x)
+ fun_l0_n625(@x)
+ fun_l0_n626(@x)
+ fun_l0_n627(@x)
+ fun_l0_n628(@x)
+ fun_l0_n629(@x)
+ fun_l0_n630(@x)
+ fun_l0_n631(@x)
+ fun_l0_n632(@x)
+ fun_l0_n633(@x)
+ fun_l0_n634(@x)
+ fun_l0_n635(@x)
+ fun_l0_n636(@x)
+ fun_l0_n637(@x)
+ fun_l0_n638(@x)
+ fun_l0_n639(@x)
+ fun_l0_n640(@x)
+ fun_l0_n641(@x)
+ fun_l0_n642(@x)
+ fun_l0_n643(@x)
+ fun_l0_n644(@x)
+ fun_l0_n645(@x)
+ fun_l0_n646(@x)
+ fun_l0_n647(@x)
+ fun_l0_n648(@x)
+ fun_l0_n649(@x)
+ fun_l0_n650(@x)
+ fun_l0_n651(@x)
+ fun_l0_n652(@x)
+ fun_l0_n653(@x)
+ fun_l0_n654(@x)
+ fun_l0_n655(@x)
+ fun_l0_n656(@x)
+ fun_l0_n657(@x)
+ fun_l0_n658(@x)
+ fun_l0_n659(@x)
+ fun_l0_n660(@x)
+ fun_l0_n661(@x)
+ fun_l0_n662(@x)
+ fun_l0_n663(@x)
+ fun_l0_n664(@x)
+ fun_l0_n665(@x)
+ fun_l0_n666(@x)
+ fun_l0_n667(@x)
+ fun_l0_n668(@x)
+ fun_l0_n669(@x)
+ fun_l0_n670(@x)
+ fun_l0_n671(@x)
+ fun_l0_n672(@x)
+ fun_l0_n673(@x)
+ fun_l0_n674(@x)
+ fun_l0_n675(@x)
+ fun_l0_n676(@x)
+ fun_l0_n677(@x)
+ fun_l0_n678(@x)
+ fun_l0_n679(@x)
+ fun_l0_n680(@x)
+ fun_l0_n681(@x)
+ fun_l0_n682(@x)
+ fun_l0_n683(@x)
+ fun_l0_n684(@x)
+ fun_l0_n685(@x)
+ fun_l0_n686(@x)
+ fun_l0_n687(@x)
+ fun_l0_n688(@x)
+ fun_l0_n689(@x)
+ fun_l0_n690(@x)
+ fun_l0_n691(@x)
+ fun_l0_n692(@x)
+ fun_l0_n693(@x)
+ fun_l0_n694(@x)
+ fun_l0_n695(@x)
+ fun_l0_n696(@x)
+ fun_l0_n697(@x)
+ fun_l0_n698(@x)
+ fun_l0_n699(@x)
+ fun_l0_n700(@x)
+ fun_l0_n701(@x)
+ fun_l0_n702(@x)
+ fun_l0_n703(@x)
+ fun_l0_n704(@x)
+ fun_l0_n705(@x)
+ fun_l0_n706(@x)
+ fun_l0_n707(@x)
+ fun_l0_n708(@x)
+ fun_l0_n709(@x)
+ fun_l0_n710(@x)
+ fun_l0_n711(@x)
+ fun_l0_n712(@x)
+ fun_l0_n713(@x)
+ fun_l0_n714(@x)
+ fun_l0_n715(@x)
+ fun_l0_n716(@x)
+ fun_l0_n717(@x)
+ fun_l0_n718(@x)
+ fun_l0_n719(@x)
+ fun_l0_n720(@x)
+ fun_l0_n721(@x)
+ fun_l0_n722(@x)
+ fun_l0_n723(@x)
+ fun_l0_n724(@x)
+ fun_l0_n725(@x)
+ fun_l0_n726(@x)
+ fun_l0_n727(@x)
+ fun_l0_n728(@x)
+ fun_l0_n729(@x)
+ fun_l0_n730(@x)
+ fun_l0_n731(@x)
+ fun_l0_n732(@x)
+ fun_l0_n733(@x)
+ fun_l0_n734(@x)
+ fun_l0_n735(@x)
+ fun_l0_n736(@x)
+ fun_l0_n737(@x)
+ fun_l0_n738(@x)
+ fun_l0_n739(@x)
+ fun_l0_n740(@x)
+ fun_l0_n741(@x)
+ fun_l0_n742(@x)
+ fun_l0_n743(@x)
+ fun_l0_n744(@x)
+ fun_l0_n745(@x)
+ fun_l0_n746(@x)
+ fun_l0_n747(@x)
+ fun_l0_n748(@x)
+ fun_l0_n749(@x)
+ fun_l0_n750(@x)
+ fun_l0_n751(@x)
+ fun_l0_n752(@x)
+ fun_l0_n753(@x)
+ fun_l0_n754(@x)
+ fun_l0_n755(@x)
+ fun_l0_n756(@x)
+ fun_l0_n757(@x)
+ fun_l0_n758(@x)
+ fun_l0_n759(@x)
+ fun_l0_n760(@x)
+ fun_l0_n761(@x)
+ fun_l0_n762(@x)
+ fun_l0_n763(@x)
+ fun_l0_n764(@x)
+ fun_l0_n765(@x)
+ fun_l0_n766(@x)
+ fun_l0_n767(@x)
+ fun_l0_n768(@x)
+ fun_l0_n769(@x)
+ fun_l0_n770(@x)
+ fun_l0_n771(@x)
+ fun_l0_n772(@x)
+ fun_l0_n773(@x)
+ fun_l0_n774(@x)
+ fun_l0_n775(@x)
+ fun_l0_n776(@x)
+ fun_l0_n777(@x)
+ fun_l0_n778(@x)
+ fun_l0_n779(@x)
+ fun_l0_n780(@x)
+ fun_l0_n781(@x)
+ fun_l0_n782(@x)
+ fun_l0_n783(@x)
+ fun_l0_n784(@x)
+ fun_l0_n785(@x)
+ fun_l0_n786(@x)
+ fun_l0_n787(@x)
+ fun_l0_n788(@x)
+ fun_l0_n789(@x)
+ fun_l0_n790(@x)
+ fun_l0_n791(@x)
+ fun_l0_n792(@x)
+ fun_l0_n793(@x)
+ fun_l0_n794(@x)
+ fun_l0_n795(@x)
+ fun_l0_n796(@x)
+ fun_l0_n797(@x)
+ fun_l0_n798(@x)
+ fun_l0_n799(@x)
+ fun_l0_n800(@x)
+ fun_l0_n801(@x)
+ fun_l0_n802(@x)
+ fun_l0_n803(@x)
+ fun_l0_n804(@x)
+ fun_l0_n805(@x)
+ fun_l0_n806(@x)
+ fun_l0_n807(@x)
+ fun_l0_n808(@x)
+ fun_l0_n809(@x)
+ fun_l0_n810(@x)
+ fun_l0_n811(@x)
+ fun_l0_n812(@x)
+ fun_l0_n813(@x)
+ fun_l0_n814(@x)
+ fun_l0_n815(@x)
+ fun_l0_n816(@x)
+ fun_l0_n817(@x)
+ fun_l0_n818(@x)
+ fun_l0_n819(@x)
+ fun_l0_n820(@x)
+ fun_l0_n821(@x)
+ fun_l0_n822(@x)
+ fun_l0_n823(@x)
+ fun_l0_n824(@x)
+ fun_l0_n825(@x)
+ fun_l0_n826(@x)
+ fun_l0_n827(@x)
+ fun_l0_n828(@x)
+ fun_l0_n829(@x)
+ fun_l0_n830(@x)
+ fun_l0_n831(@x)
+ fun_l0_n832(@x)
+ fun_l0_n833(@x)
+ fun_l0_n834(@x)
+ fun_l0_n835(@x)
+ fun_l0_n836(@x)
+ fun_l0_n837(@x)
+ fun_l0_n838(@x)
+ fun_l0_n839(@x)
+ fun_l0_n840(@x)
+ fun_l0_n841(@x)
+ fun_l0_n842(@x)
+ fun_l0_n843(@x)
+ fun_l0_n844(@x)
+ fun_l0_n845(@x)
+ fun_l0_n846(@x)
+ fun_l0_n847(@x)
+ fun_l0_n848(@x)
+ fun_l0_n849(@x)
+ fun_l0_n850(@x)
+ fun_l0_n851(@x)
+ fun_l0_n852(@x)
+ fun_l0_n853(@x)
+ fun_l0_n854(@x)
+ fun_l0_n855(@x)
+ fun_l0_n856(@x)
+ fun_l0_n857(@x)
+ fun_l0_n858(@x)
+ fun_l0_n859(@x)
+ fun_l0_n860(@x)
+ fun_l0_n861(@x)
+ fun_l0_n862(@x)
+ fun_l0_n863(@x)
+ fun_l0_n864(@x)
+ fun_l0_n865(@x)
+ fun_l0_n866(@x)
+ fun_l0_n867(@x)
+ fun_l0_n868(@x)
+ fun_l0_n869(@x)
+ fun_l0_n870(@x)
+ fun_l0_n871(@x)
+ fun_l0_n872(@x)
+ fun_l0_n873(@x)
+ fun_l0_n874(@x)
+ fun_l0_n875(@x)
+ fun_l0_n876(@x)
+ fun_l0_n877(@x)
+ fun_l0_n878(@x)
+ fun_l0_n879(@x)
+ fun_l0_n880(@x)
+ fun_l0_n881(@x)
+ fun_l0_n882(@x)
+ fun_l0_n883(@x)
+ fun_l0_n884(@x)
+ fun_l0_n885(@x)
+ fun_l0_n886(@x)
+ fun_l0_n887(@x)
+ fun_l0_n888(@x)
+ fun_l0_n889(@x)
+ fun_l0_n890(@x)
+ fun_l0_n891(@x)
+ fun_l0_n892(@x)
+ fun_l0_n893(@x)
+ fun_l0_n894(@x)
+ fun_l0_n895(@x)
+ fun_l0_n896(@x)
+ fun_l0_n897(@x)
+ fun_l0_n898(@x)
+ fun_l0_n899(@x)
+ fun_l0_n900(@x)
+ fun_l0_n901(@x)
+ fun_l0_n902(@x)
+ fun_l0_n903(@x)
+ fun_l0_n904(@x)
+ fun_l0_n905(@x)
+ fun_l0_n906(@x)
+ fun_l0_n907(@x)
+ fun_l0_n908(@x)
+ fun_l0_n909(@x)
+ fun_l0_n910(@x)
+ fun_l0_n911(@x)
+ fun_l0_n912(@x)
+ fun_l0_n913(@x)
+ fun_l0_n914(@x)
+ fun_l0_n915(@x)
+ fun_l0_n916(@x)
+ fun_l0_n917(@x)
+ fun_l0_n918(@x)
+ fun_l0_n919(@x)
+ fun_l0_n920(@x)
+ fun_l0_n921(@x)
+ fun_l0_n922(@x)
+ fun_l0_n923(@x)
+ fun_l0_n924(@x)
+ fun_l0_n925(@x)
+ fun_l0_n926(@x)
+ fun_l0_n927(@x)
+ fun_l0_n928(@x)
+ fun_l0_n929(@x)
+ fun_l0_n930(@x)
+ fun_l0_n931(@x)
+ fun_l0_n932(@x)
+ fun_l0_n933(@x)
+ fun_l0_n934(@x)
+ fun_l0_n935(@x)
+ fun_l0_n936(@x)
+ fun_l0_n937(@x)
+ fun_l0_n938(@x)
+ fun_l0_n939(@x)
+ fun_l0_n940(@x)
+ fun_l0_n941(@x)
+ fun_l0_n942(@x)
+ fun_l0_n943(@x)
+ fun_l0_n944(@x)
+ fun_l0_n945(@x)
+ fun_l0_n946(@x)
+ fun_l0_n947(@x)
+ fun_l0_n948(@x)
+ fun_l0_n949(@x)
+ fun_l0_n950(@x)
+ fun_l0_n951(@x)
+ fun_l0_n952(@x)
+ fun_l0_n953(@x)
+ fun_l0_n954(@x)
+ fun_l0_n955(@x)
+ fun_l0_n956(@x)
+ fun_l0_n957(@x)
+ fun_l0_n958(@x)
+ fun_l0_n959(@x)
+ fun_l0_n960(@x)
+ fun_l0_n961(@x)
+ fun_l0_n962(@x)
+ fun_l0_n963(@x)
+ fun_l0_n964(@x)
+ fun_l0_n965(@x)
+ fun_l0_n966(@x)
+ fun_l0_n967(@x)
+ fun_l0_n968(@x)
+ fun_l0_n969(@x)
+ fun_l0_n970(@x)
+ fun_l0_n971(@x)
+ fun_l0_n972(@x)
+ fun_l0_n973(@x)
+ fun_l0_n974(@x)
+ fun_l0_n975(@x)
+ fun_l0_n976(@x)
+ fun_l0_n977(@x)
+ fun_l0_n978(@x)
+ fun_l0_n979(@x)
+ fun_l0_n980(@x)
+ fun_l0_n981(@x)
+ fun_l0_n982(@x)
+ fun_l0_n983(@x)
+ fun_l0_n984(@x)
+ fun_l0_n985(@x)
+ fun_l0_n986(@x)
+ fun_l0_n987(@x)
+ fun_l0_n988(@x)
+ fun_l0_n989(@x)
+ fun_l0_n990(@x)
+ fun_l0_n991(@x)
+ fun_l0_n992(@x)
+ fun_l0_n993(@x)
+ fun_l0_n994(@x)
+ fun_l0_n995(@x)
+ fun_l0_n996(@x)
+ fun_l0_n997(@x)
+ fun_l0_n998(@x)
+ fun_l0_n999(@x)
+end
+
+@count
+
+}
diff --git a/bootstraptest/test_yjit_30k_methods.rb b/bootstraptest/test_yjit_30k_methods.rb
new file mode 100644
index 0000000000..f2acea4ce5
--- /dev/null
+++ b/bootstraptest/test_yjit_30k_methods.rb
@@ -0,0 +1,121018 @@
+# This is a torture test for the JIT.
+# There are 30K tiny methods in a 30-deep call hierarchy.
+assert_equal '1000000', %q{
+
+def fun_l0_n0()
+ fun_l1_n758
+end
+
+def fun_l0_n1()
+ fun_l1_n491
+end
+
+def fun_l0_n2()
+ fun_l1_n804
+end
+
+def fun_l0_n3()
+ fun_l1_n253
+end
+
+def fun_l0_n4()
+ fun_l1_n409
+end
+
+def fun_l0_n5()
+ fun_l1_n383
+end
+
+def fun_l0_n6()
+ fun_l1_n170
+end
+
+def fun_l0_n7()
+ fun_l1_n821
+end
+
+def fun_l0_n8()
+ fun_l1_n424
+end
+
+def fun_l0_n9()
+ fun_l1_n328
+end
+
+def fun_l0_n10()
+ fun_l1_n326
+end
+
+def fun_l0_n11()
+ fun_l1_n879
+end
+
+def fun_l0_n12()
+ fun_l1_n509
+end
+
+def fun_l0_n13()
+ fun_l1_n464
+end
+
+def fun_l0_n14()
+ fun_l1_n806
+end
+
+def fun_l0_n15()
+ fun_l1_n277
+end
+
+def fun_l0_n16()
+ fun_l1_n684
+end
+
+def fun_l0_n17()
+ fun_l1_n54
+end
+
+def fun_l0_n18()
+ fun_l1_n514
+end
+
+def fun_l0_n19()
+ fun_l1_n967
+end
+
+def fun_l0_n20()
+ fun_l1_n50
+end
+
+def fun_l0_n21()
+ fun_l1_n248
+end
+
+def fun_l0_n22()
+ fun_l1_n410
+end
+
+def fun_l0_n23()
+ fun_l1_n411
+end
+
+def fun_l0_n24()
+ fun_l1_n422
+end
+
+def fun_l0_n25()
+ fun_l1_n427
+end
+
+def fun_l0_n26()
+ fun_l1_n929
+end
+
+def fun_l0_n27()
+ fun_l1_n93
+end
+
+def fun_l0_n28()
+ fun_l1_n790
+end
+
+def fun_l0_n29()
+ fun_l1_n107
+end
+
+def fun_l0_n30()
+ fun_l1_n29
+end
+
+def fun_l0_n31()
+ fun_l1_n164
+end
+
+def fun_l0_n32()
+ fun_l1_n720
+end
+
+def fun_l0_n33()
+ fun_l1_n30
+end
+
+def fun_l0_n34()
+ fun_l1_n133
+end
+
+def fun_l0_n35()
+ fun_l1_n122
+end
+
+def fun_l0_n36()
+ fun_l1_n101
+end
+
+def fun_l0_n37()
+ fun_l1_n80
+end
+
+def fun_l0_n38()
+ fun_l1_n759
+end
+
+def fun_l0_n39()
+ fun_l1_n315
+end
+
+def fun_l0_n40()
+ fun_l1_n508
+end
+
+def fun_l0_n41()
+ fun_l1_n750
+end
+
+def fun_l0_n42()
+ fun_l1_n200
+end
+
+def fun_l0_n43()
+ fun_l1_n662
+end
+
+def fun_l0_n44()
+ fun_l1_n2
+end
+
+def fun_l0_n45()
+ fun_l1_n864
+end
+
+def fun_l0_n46()
+ fun_l1_n482
+end
+
+def fun_l0_n47()
+ fun_l1_n196
+end
+
+def fun_l0_n48()
+ fun_l1_n867
+end
+
+def fun_l0_n49()
+ fun_l1_n942
+end
+
+def fun_l0_n50()
+ fun_l1_n179
+end
+
+def fun_l0_n51()
+ fun_l1_n442
+end
+
+def fun_l0_n52()
+ fun_l1_n613
+end
+
+def fun_l0_n53()
+ fun_l1_n282
+end
+
+def fun_l0_n54()
+ fun_l1_n624
+end
+
+def fun_l0_n55()
+ fun_l1_n514
+end
+
+def fun_l0_n56()
+ fun_l1_n59
+end
+
+def fun_l0_n57()
+ fun_l1_n401
+end
+
+def fun_l0_n58()
+ fun_l1_n693
+end
+
+def fun_l0_n59()
+ fun_l1_n643
+end
+
+def fun_l0_n60()
+ fun_l1_n104
+end
+
+def fun_l0_n61()
+ fun_l1_n407
+end
+
+def fun_l0_n62()
+ fun_l1_n418
+end
+
+def fun_l0_n63()
+ fun_l1_n775
+end
+
+def fun_l0_n64()
+ fun_l1_n351
+end
+
+def fun_l0_n65()
+ fun_l1_n320
+end
+
+def fun_l0_n66()
+ fun_l1_n181
+end
+
+def fun_l0_n67()
+ fun_l1_n878
+end
+
+def fun_l0_n68()
+ fun_l1_n404
+end
+
+def fun_l0_n69()
+ fun_l1_n660
+end
+
+def fun_l0_n70()
+ fun_l1_n644
+end
+
+def fun_l0_n71()
+ fun_l1_n416
+end
+
+def fun_l0_n72()
+ fun_l1_n372
+end
+
+def fun_l0_n73()
+ fun_l1_n525
+end
+
+def fun_l0_n74()
+ fun_l1_n468
+end
+
+def fun_l0_n75()
+ fun_l1_n652
+end
+
+def fun_l0_n76()
+ fun_l1_n418
+end
+
+def fun_l0_n77()
+ fun_l1_n935
+end
+
+def fun_l0_n78()
+ fun_l1_n170
+end
+
+def fun_l0_n79()
+ fun_l1_n805
+end
+
+def fun_l0_n80()
+ fun_l1_n405
+end
+
+def fun_l0_n81()
+ fun_l1_n994
+end
+
+def fun_l0_n82()
+ fun_l1_n395
+end
+
+def fun_l0_n83()
+ fun_l1_n399
+end
+
+def fun_l0_n84()
+ fun_l1_n503
+end
+
+def fun_l0_n85()
+ fun_l1_n451
+end
+
+def fun_l0_n86()
+ fun_l1_n920
+end
+
+def fun_l0_n87()
+ fun_l1_n446
+end
+
+def fun_l0_n88()
+ fun_l1_n637
+end
+
+def fun_l0_n89()
+ fun_l1_n732
+end
+
+def fun_l0_n90()
+ fun_l1_n823
+end
+
+def fun_l0_n91()
+ fun_l1_n347
+end
+
+def fun_l0_n92()
+ fun_l1_n808
+end
+
+def fun_l0_n93()
+ fun_l1_n941
+end
+
+def fun_l0_n94()
+ fun_l1_n808
+end
+
+def fun_l0_n95()
+ fun_l1_n575
+end
+
+def fun_l0_n96()
+ fun_l1_n835
+end
+
+def fun_l0_n97()
+ fun_l1_n601
+end
+
+def fun_l0_n98()
+ fun_l1_n522
+end
+
+def fun_l0_n99()
+ fun_l1_n884
+end
+
+def fun_l0_n100()
+ fun_l1_n234
+end
+
+def fun_l0_n101()
+ fun_l1_n58
+end
+
+def fun_l0_n102()
+ fun_l1_n702
+end
+
+def fun_l0_n103()
+ fun_l1_n816
+end
+
+def fun_l0_n104()
+ fun_l1_n92
+end
+
+def fun_l0_n105()
+ fun_l1_n673
+end
+
+def fun_l0_n106()
+ fun_l1_n360
+end
+
+def fun_l0_n107()
+ fun_l1_n305
+end
+
+def fun_l0_n108()
+ fun_l1_n202
+end
+
+def fun_l0_n109()
+ fun_l1_n879
+end
+
+def fun_l0_n110()
+ fun_l1_n84
+end
+
+def fun_l0_n111()
+ fun_l1_n50
+end
+
+def fun_l0_n112()
+ fun_l1_n648
+end
+
+def fun_l0_n113()
+ fun_l1_n786
+end
+
+def fun_l0_n114()
+ fun_l1_n627
+end
+
+def fun_l0_n115()
+ fun_l1_n404
+end
+
+def fun_l0_n116()
+ fun_l1_n496
+end
+
+def fun_l0_n117()
+ fun_l1_n778
+end
+
+def fun_l0_n118()
+ fun_l1_n119
+end
+
+def fun_l0_n119()
+ fun_l1_n350
+end
+
+def fun_l0_n120()
+ fun_l1_n767
+end
+
+def fun_l0_n121()
+ fun_l1_n463
+end
+
+def fun_l0_n122()
+ fun_l1_n481
+end
+
+def fun_l0_n123()
+ fun_l1_n80
+end
+
+def fun_l0_n124()
+ fun_l1_n271
+end
+
+def fun_l0_n125()
+ fun_l1_n315
+end
+
+def fun_l0_n126()
+ fun_l1_n545
+end
+
+def fun_l0_n127()
+ fun_l1_n598
+end
+
+def fun_l0_n128()
+ fun_l1_n599
+end
+
+def fun_l0_n129()
+ fun_l1_n263
+end
+
+def fun_l0_n130()
+ fun_l1_n514
+end
+
+def fun_l0_n131()
+ fun_l1_n779
+end
+
+def fun_l0_n132()
+ fun_l1_n585
+end
+
+def fun_l0_n133()
+ fun_l1_n919
+end
+
+def fun_l0_n134()
+ fun_l1_n665
+end
+
+def fun_l0_n135()
+ fun_l1_n442
+end
+
+def fun_l0_n136()
+ fun_l1_n84
+end
+
+def fun_l0_n137()
+ fun_l1_n74
+end
+
+def fun_l0_n138()
+ fun_l1_n606
+end
+
+def fun_l0_n139()
+ fun_l1_n655
+end
+
+def fun_l0_n140()
+ fun_l1_n130
+end
+
+def fun_l0_n141()
+ fun_l1_n626
+end
+
+def fun_l0_n142()
+ fun_l1_n605
+end
+
+def fun_l0_n143()
+ fun_l1_n420
+end
+
+def fun_l0_n144()
+ fun_l1_n100
+end
+
+def fun_l0_n145()
+ fun_l1_n961
+end
+
+def fun_l0_n146()
+ fun_l1_n721
+end
+
+def fun_l0_n147()
+ fun_l1_n453
+end
+
+def fun_l0_n148()
+ fun_l1_n737
+end
+
+def fun_l0_n149()
+ fun_l1_n230
+end
+
+def fun_l0_n150()
+ fun_l1_n881
+end
+
+def fun_l0_n151()
+ fun_l1_n471
+end
+
+def fun_l0_n152()
+ fun_l1_n72
+end
+
+def fun_l0_n153()
+ fun_l1_n221
+end
+
+def fun_l0_n154()
+ fun_l1_n504
+end
+
+def fun_l0_n155()
+ fun_l1_n222
+end
+
+def fun_l0_n156()
+ fun_l1_n348
+end
+
+def fun_l0_n157()
+ fun_l1_n738
+end
+
+def fun_l0_n158()
+ fun_l1_n588
+end
+
+def fun_l0_n159()
+ fun_l1_n64
+end
+
+def fun_l0_n160()
+ fun_l1_n829
+end
+
+def fun_l0_n161()
+ fun_l1_n265
+end
+
+def fun_l0_n162()
+ fun_l1_n471
+end
+
+def fun_l0_n163()
+ fun_l1_n304
+end
+
+def fun_l0_n164()
+ fun_l1_n518
+end
+
+def fun_l0_n165()
+ fun_l1_n89
+end
+
+def fun_l0_n166()
+ fun_l1_n728
+end
+
+def fun_l0_n167()
+ fun_l1_n292
+end
+
+def fun_l0_n168()
+ fun_l1_n142
+end
+
+def fun_l0_n169()
+ fun_l1_n374
+end
+
+def fun_l0_n170()
+ fun_l1_n371
+end
+
+def fun_l0_n171()
+ fun_l1_n904
+end
+
+def fun_l0_n172()
+ fun_l1_n519
+end
+
+def fun_l0_n173()
+ fun_l1_n239
+end
+
+def fun_l0_n174()
+ fun_l1_n664
+end
+
+def fun_l0_n175()
+ fun_l1_n701
+end
+
+def fun_l0_n176()
+ fun_l1_n586
+end
+
+def fun_l0_n177()
+ fun_l1_n78
+end
+
+def fun_l0_n178()
+ fun_l1_n663
+end
+
+def fun_l0_n179()
+ fun_l1_n46
+end
+
+def fun_l0_n180()
+ fun_l1_n273
+end
+
+def fun_l0_n181()
+ fun_l1_n250
+end
+
+def fun_l0_n182()
+ fun_l1_n362
+end
+
+def fun_l0_n183()
+ fun_l1_n69
+end
+
+def fun_l0_n184()
+ fun_l1_n874
+end
+
+def fun_l0_n185()
+ fun_l1_n135
+end
+
+def fun_l0_n186()
+ fun_l1_n634
+end
+
+def fun_l0_n187()
+ fun_l1_n885
+end
+
+def fun_l0_n188()
+ fun_l1_n589
+end
+
+def fun_l0_n189()
+ fun_l1_n21
+end
+
+def fun_l0_n190()
+ fun_l1_n962
+end
+
+def fun_l0_n191()
+ fun_l1_n267
+end
+
+def fun_l0_n192()
+ fun_l1_n569
+end
+
+def fun_l0_n193()
+ fun_l1_n921
+end
+
+def fun_l0_n194()
+ fun_l1_n535
+end
+
+def fun_l0_n195()
+ fun_l1_n362
+end
+
+def fun_l0_n196()
+ fun_l1_n862
+end
+
+def fun_l0_n197()
+ fun_l1_n565
+end
+
+def fun_l0_n198()
+ fun_l1_n779
+end
+
+def fun_l0_n199()
+ fun_l1_n848
+end
+
+def fun_l0_n200()
+ fun_l1_n755
+end
+
+def fun_l0_n201()
+ fun_l1_n493
+end
+
+def fun_l0_n202()
+ fun_l1_n574
+end
+
+def fun_l0_n203()
+ fun_l1_n172
+end
+
+def fun_l0_n204()
+ fun_l1_n388
+end
+
+def fun_l0_n205()
+ fun_l1_n67
+end
+
+def fun_l0_n206()
+ fun_l1_n449
+end
+
+def fun_l0_n207()
+ fun_l1_n883
+end
+
+def fun_l0_n208()
+ fun_l1_n749
+end
+
+def fun_l0_n209()
+ fun_l1_n425
+end
+
+def fun_l0_n210()
+ fun_l1_n848
+end
+
+def fun_l0_n211()
+ fun_l1_n320
+end
+
+def fun_l0_n212()
+ fun_l1_n122
+end
+
+def fun_l0_n213()
+ fun_l1_n878
+end
+
+def fun_l0_n214()
+ fun_l1_n763
+end
+
+def fun_l0_n215()
+ fun_l1_n70
+end
+
+def fun_l0_n216()
+ fun_l1_n494
+end
+
+def fun_l0_n217()
+ fun_l1_n13
+end
+
+def fun_l0_n218()
+ fun_l1_n907
+end
+
+def fun_l0_n219()
+ fun_l1_n775
+end
+
+def fun_l0_n220()
+ fun_l1_n633
+end
+
+def fun_l0_n221()
+ fun_l1_n371
+end
+
+def fun_l0_n222()
+ fun_l1_n691
+end
+
+def fun_l0_n223()
+ fun_l1_n994
+end
+
+def fun_l0_n224()
+ fun_l1_n268
+end
+
+def fun_l0_n225()
+ fun_l1_n52
+end
+
+def fun_l0_n226()
+ fun_l1_n291
+end
+
+def fun_l0_n227()
+ fun_l1_n903
+end
+
+def fun_l0_n228()
+ fun_l1_n369
+end
+
+def fun_l0_n229()
+ fun_l1_n232
+end
+
+def fun_l0_n230()
+ fun_l1_n554
+end
+
+def fun_l0_n231()
+ fun_l1_n479
+end
+
+def fun_l0_n232()
+ fun_l1_n838
+end
+
+def fun_l0_n233()
+ fun_l1_n316
+end
+
+def fun_l0_n234()
+ fun_l1_n685
+end
+
+def fun_l0_n235()
+ fun_l1_n95
+end
+
+def fun_l0_n236()
+ fun_l1_n629
+end
+
+def fun_l0_n237()
+ fun_l1_n218
+end
+
+def fun_l0_n238()
+ fun_l1_n406
+end
+
+def fun_l0_n239()
+ fun_l1_n187
+end
+
+def fun_l0_n240()
+ fun_l1_n905
+end
+
+def fun_l0_n241()
+ fun_l1_n262
+end
+
+def fun_l0_n242()
+ fun_l1_n314
+end
+
+def fun_l0_n243()
+ fun_l1_n669
+end
+
+def fun_l0_n244()
+ fun_l1_n112
+end
+
+def fun_l0_n245()
+ fun_l1_n744
+end
+
+def fun_l0_n246()
+ fun_l1_n637
+end
+
+def fun_l0_n247()
+ fun_l1_n409
+end
+
+def fun_l0_n248()
+ fun_l1_n706
+end
+
+def fun_l0_n249()
+ fun_l1_n150
+end
+
+def fun_l0_n250()
+ fun_l1_n863
+end
+
+def fun_l0_n251()
+ fun_l1_n364
+end
+
+def fun_l0_n252()
+ fun_l1_n989
+end
+
+def fun_l0_n253()
+ fun_l1_n565
+end
+
+def fun_l0_n254()
+ fun_l1_n701
+end
+
+def fun_l0_n255()
+ fun_l1_n48
+end
+
+def fun_l0_n256()
+ fun_l1_n278
+end
+
+def fun_l0_n257()
+ fun_l1_n816
+end
+
+def fun_l0_n258()
+ fun_l1_n981
+end
+
+def fun_l0_n259()
+ fun_l1_n556
+end
+
+def fun_l0_n260()
+ fun_l1_n887
+end
+
+def fun_l0_n261()
+ fun_l1_n193
+end
+
+def fun_l0_n262()
+ fun_l1_n690
+end
+
+def fun_l0_n263()
+ fun_l1_n144
+end
+
+def fun_l0_n264()
+ fun_l1_n577
+end
+
+def fun_l0_n265()
+ fun_l1_n949
+end
+
+def fun_l0_n266()
+ fun_l1_n320
+end
+
+def fun_l0_n267()
+ fun_l1_n857
+end
+
+def fun_l0_n268()
+ fun_l1_n676
+end
+
+def fun_l0_n269()
+ fun_l1_n683
+end
+
+def fun_l0_n270()
+ fun_l1_n303
+end
+
+def fun_l0_n271()
+ fun_l1_n847
+end
+
+def fun_l0_n272()
+ fun_l1_n588
+end
+
+def fun_l0_n273()
+ fun_l1_n456
+end
+
+def fun_l0_n274()
+ fun_l1_n355
+end
+
+def fun_l0_n275()
+ fun_l1_n183
+end
+
+def fun_l0_n276()
+ fun_l1_n271
+end
+
+def fun_l0_n277()
+ fun_l1_n746
+end
+
+def fun_l0_n278()
+ fun_l1_n885
+end
+
+def fun_l0_n279()
+ fun_l1_n951
+end
+
+def fun_l0_n280()
+ fun_l1_n935
+end
+
+def fun_l0_n281()
+ fun_l1_n445
+end
+
+def fun_l0_n282()
+ fun_l1_n2
+end
+
+def fun_l0_n283()
+ fun_l1_n52
+end
+
+def fun_l0_n284()
+ fun_l1_n208
+end
+
+def fun_l0_n285()
+ fun_l1_n27
+end
+
+def fun_l0_n286()
+ fun_l1_n657
+end
+
+def fun_l0_n287()
+ fun_l1_n373
+end
+
+def fun_l0_n288()
+ fun_l1_n439
+end
+
+def fun_l0_n289()
+ fun_l1_n974
+end
+
+def fun_l0_n290()
+ fun_l1_n834
+end
+
+def fun_l0_n291()
+ fun_l1_n673
+end
+
+def fun_l0_n292()
+ fun_l1_n978
+end
+
+def fun_l0_n293()
+ fun_l1_n123
+end
+
+def fun_l0_n294()
+ fun_l1_n644
+end
+
+def fun_l0_n295()
+ fun_l1_n715
+end
+
+def fun_l0_n296()
+ fun_l1_n912
+end
+
+def fun_l0_n297()
+ fun_l1_n954
+end
+
+def fun_l0_n298()
+ fun_l1_n519
+end
+
+def fun_l0_n299()
+ fun_l1_n726
+end
+
+def fun_l0_n300()
+ fun_l1_n417
+end
+
+def fun_l0_n301()
+ fun_l1_n199
+end
+
+def fun_l0_n302()
+ fun_l1_n157
+end
+
+def fun_l0_n303()
+ fun_l1_n432
+end
+
+def fun_l0_n304()
+ fun_l1_n59
+end
+
+def fun_l0_n305()
+ fun_l1_n604
+end
+
+def fun_l0_n306()
+ fun_l1_n301
+end
+
+def fun_l0_n307()
+ fun_l1_n558
+end
+
+def fun_l0_n308()
+ fun_l1_n443
+end
+
+def fun_l0_n309()
+ fun_l1_n873
+end
+
+def fun_l0_n310()
+ fun_l1_n415
+end
+
+def fun_l0_n311()
+ fun_l1_n907
+end
+
+def fun_l0_n312()
+ fun_l1_n159
+end
+
+def fun_l0_n313()
+ fun_l1_n695
+end
+
+def fun_l0_n314()
+ fun_l1_n679
+end
+
+def fun_l0_n315()
+ fun_l1_n788
+end
+
+def fun_l0_n316()
+ fun_l1_n510
+end
+
+def fun_l0_n317()
+ fun_l1_n997
+end
+
+def fun_l0_n318()
+ fun_l1_n821
+end
+
+def fun_l0_n319()
+ fun_l1_n554
+end
+
+def fun_l0_n320()
+ fun_l1_n982
+end
+
+def fun_l0_n321()
+ fun_l1_n996
+end
+
+def fun_l0_n322()
+ fun_l1_n73
+end
+
+def fun_l0_n323()
+ fun_l1_n951
+end
+
+def fun_l0_n324()
+ fun_l1_n597
+end
+
+def fun_l0_n325()
+ fun_l1_n502
+end
+
+def fun_l0_n326()
+ fun_l1_n150
+end
+
+def fun_l0_n327()
+ fun_l1_n979
+end
+
+def fun_l0_n328()
+ fun_l1_n81
+end
+
+def fun_l0_n329()
+ fun_l1_n87
+end
+
+def fun_l0_n330()
+ fun_l1_n726
+end
+
+def fun_l0_n331()
+ fun_l1_n159
+end
+
+def fun_l0_n332()
+ fun_l1_n799
+end
+
+def fun_l0_n333()
+ fun_l1_n202
+end
+
+def fun_l0_n334()
+ fun_l1_n904
+end
+
+def fun_l0_n335()
+ fun_l1_n14
+end
+
+def fun_l0_n336()
+ fun_l1_n136
+end
+
+def fun_l0_n337()
+ fun_l1_n865
+end
+
+def fun_l0_n338()
+ fun_l1_n307
+end
+
+def fun_l0_n339()
+ fun_l1_n827
+end
+
+def fun_l0_n340()
+ fun_l1_n518
+end
+
+def fun_l0_n341()
+ fun_l1_n416
+end
+
+def fun_l0_n342()
+ fun_l1_n277
+end
+
+def fun_l0_n343()
+ fun_l1_n609
+end
+
+def fun_l0_n344()
+ fun_l1_n328
+end
+
+def fun_l0_n345()
+ fun_l1_n941
+end
+
+def fun_l0_n346()
+ fun_l1_n707
+end
+
+def fun_l0_n347()
+ fun_l1_n452
+end
+
+def fun_l0_n348()
+ fun_l1_n874
+end
+
+def fun_l0_n349()
+ fun_l1_n117
+end
+
+def fun_l0_n350()
+ fun_l1_n739
+end
+
+def fun_l0_n351()
+ fun_l1_n202
+end
+
+def fun_l0_n352()
+ fun_l1_n80
+end
+
+def fun_l0_n353()
+ fun_l1_n373
+end
+
+def fun_l0_n354()
+ fun_l1_n747
+end
+
+def fun_l0_n355()
+ fun_l1_n949
+end
+
+def fun_l0_n356()
+ fun_l1_n901
+end
+
+def fun_l0_n357()
+ fun_l1_n512
+end
+
+def fun_l0_n358()
+ fun_l1_n528
+end
+
+def fun_l0_n359()
+ fun_l1_n895
+end
+
+def fun_l0_n360()
+ fun_l1_n683
+end
+
+def fun_l0_n361()
+ fun_l1_n80
+end
+
+def fun_l0_n362()
+ fun_l1_n718
+end
+
+def fun_l0_n363()
+ fun_l1_n388
+end
+
+def fun_l0_n364()
+ fun_l1_n701
+end
+
+def fun_l0_n365()
+ fun_l1_n146
+end
+
+def fun_l0_n366()
+ fun_l1_n143
+end
+
+def fun_l0_n367()
+ fun_l1_n872
+end
+
+def fun_l0_n368()
+ fun_l1_n818
+end
+
+def fun_l0_n369()
+ fun_l1_n821
+end
+
+def fun_l0_n370()
+ fun_l1_n180
+end
+
+def fun_l0_n371()
+ fun_l1_n346
+end
+
+def fun_l0_n372()
+ fun_l1_n524
+end
+
+def fun_l0_n373()
+ fun_l1_n451
+end
+
+def fun_l0_n374()
+ fun_l1_n592
+end
+
+def fun_l0_n375()
+ fun_l1_n215
+end
+
+def fun_l0_n376()
+ fun_l1_n737
+end
+
+def fun_l0_n377()
+ fun_l1_n631
+end
+
+def fun_l0_n378()
+ fun_l1_n385
+end
+
+def fun_l0_n379()
+ fun_l1_n593
+end
+
+def fun_l0_n380()
+ fun_l1_n484
+end
+
+def fun_l0_n381()
+ fun_l1_n979
+end
+
+def fun_l0_n382()
+ fun_l1_n491
+end
+
+def fun_l0_n383()
+ fun_l1_n632
+end
+
+def fun_l0_n384()
+ fun_l1_n939
+end
+
+def fun_l0_n385()
+ fun_l1_n932
+end
+
+def fun_l0_n386()
+ fun_l1_n816
+end
+
+def fun_l0_n387()
+ fun_l1_n308
+end
+
+def fun_l0_n388()
+ fun_l1_n525
+end
+
+def fun_l0_n389()
+ fun_l1_n160
+end
+
+def fun_l0_n390()
+ fun_l1_n313
+end
+
+def fun_l0_n391()
+ fun_l1_n816
+end
+
+def fun_l0_n392()
+ fun_l1_n641
+end
+
+def fun_l0_n393()
+ fun_l1_n319
+end
+
+def fun_l0_n394()
+ fun_l1_n559
+end
+
+def fun_l0_n395()
+ fun_l1_n520
+end
+
+def fun_l0_n396()
+ fun_l1_n277
+end
+
+def fun_l0_n397()
+ fun_l1_n410
+end
+
+def fun_l0_n398()
+ fun_l1_n956
+end
+
+def fun_l0_n399()
+ fun_l1_n101
+end
+
+def fun_l0_n400()
+ fun_l1_n33
+end
+
+def fun_l0_n401()
+ fun_l1_n554
+end
+
+def fun_l0_n402()
+ fun_l1_n821
+end
+
+def fun_l0_n403()
+ fun_l1_n230
+end
+
+def fun_l0_n404()
+ fun_l1_n185
+end
+
+def fun_l0_n405()
+ fun_l1_n430
+end
+
+def fun_l0_n406()
+ fun_l1_n94
+end
+
+def fun_l0_n407()
+ fun_l1_n776
+end
+
+def fun_l0_n408()
+ fun_l1_n981
+end
+
+def fun_l0_n409()
+ fun_l1_n414
+end
+
+def fun_l0_n410()
+ fun_l1_n421
+end
+
+def fun_l0_n411()
+ fun_l1_n343
+end
+
+def fun_l0_n412()
+ fun_l1_n484
+end
+
+def fun_l0_n413()
+ fun_l1_n818
+end
+
+def fun_l0_n414()
+ fun_l1_n860
+end
+
+def fun_l0_n415()
+ fun_l1_n70
+end
+
+def fun_l0_n416()
+ fun_l1_n643
+end
+
+def fun_l0_n417()
+ fun_l1_n382
+end
+
+def fun_l0_n418()
+ fun_l1_n174
+end
+
+def fun_l0_n419()
+ fun_l1_n500
+end
+
+def fun_l0_n420()
+ fun_l1_n904
+end
+
+def fun_l0_n421()
+ fun_l1_n971
+end
+
+def fun_l0_n422()
+ fun_l1_n438
+end
+
+def fun_l0_n423()
+ fun_l1_n524
+end
+
+def fun_l0_n424()
+ fun_l1_n537
+end
+
+def fun_l0_n425()
+ fun_l1_n564
+end
+
+def fun_l0_n426()
+ fun_l1_n378
+end
+
+def fun_l0_n427()
+ fun_l1_n603
+end
+
+def fun_l0_n428()
+ fun_l1_n442
+end
+
+def fun_l0_n429()
+ fun_l1_n687
+end
+
+def fun_l0_n430()
+ fun_l1_n682
+end
+
+def fun_l0_n431()
+ fun_l1_n664
+end
+
+def fun_l0_n432()
+ fun_l1_n319
+end
+
+def fun_l0_n433()
+ fun_l1_n671
+end
+
+def fun_l0_n434()
+ fun_l1_n211
+end
+
+def fun_l0_n435()
+ fun_l1_n65
+end
+
+def fun_l0_n436()
+ fun_l1_n2
+end
+
+def fun_l0_n437()
+ fun_l1_n36
+end
+
+def fun_l0_n438()
+ fun_l1_n270
+end
+
+def fun_l0_n439()
+ fun_l1_n793
+end
+
+def fun_l0_n440()
+ fun_l1_n312
+end
+
+def fun_l0_n441()
+ fun_l1_n134
+end
+
+def fun_l0_n442()
+ fun_l1_n246
+end
+
+def fun_l0_n443()
+ fun_l1_n498
+end
+
+def fun_l0_n444()
+ fun_l1_n606
+end
+
+def fun_l0_n445()
+ fun_l1_n986
+end
+
+def fun_l0_n446()
+ fun_l1_n659
+end
+
+def fun_l0_n447()
+ fun_l1_n823
+end
+
+def fun_l0_n448()
+ fun_l1_n635
+end
+
+def fun_l0_n449()
+ fun_l1_n388
+end
+
+def fun_l0_n450()
+ fun_l1_n474
+end
+
+def fun_l0_n451()
+ fun_l1_n742
+end
+
+def fun_l0_n452()
+ fun_l1_n605
+end
+
+def fun_l0_n453()
+ fun_l1_n0
+end
+
+def fun_l0_n454()
+ fun_l1_n691
+end
+
+def fun_l0_n455()
+ fun_l1_n791
+end
+
+def fun_l0_n456()
+ fun_l1_n363
+end
+
+def fun_l0_n457()
+ fun_l1_n370
+end
+
+def fun_l0_n458()
+ fun_l1_n168
+end
+
+def fun_l0_n459()
+ fun_l1_n626
+end
+
+def fun_l0_n460()
+ fun_l1_n139
+end
+
+def fun_l0_n461()
+ fun_l1_n708
+end
+
+def fun_l0_n462()
+ fun_l1_n77
+end
+
+def fun_l0_n463()
+ fun_l1_n27
+end
+
+def fun_l0_n464()
+ fun_l1_n706
+end
+
+def fun_l0_n465()
+ fun_l1_n29
+end
+
+def fun_l0_n466()
+ fun_l1_n470
+end
+
+def fun_l0_n467()
+ fun_l1_n606
+end
+
+def fun_l0_n468()
+ fun_l1_n458
+end
+
+def fun_l0_n469()
+ fun_l1_n465
+end
+
+def fun_l0_n470()
+ fun_l1_n23
+end
+
+def fun_l0_n471()
+ fun_l1_n364
+end
+
+def fun_l0_n472()
+ fun_l1_n606
+end
+
+def fun_l0_n473()
+ fun_l1_n109
+end
+
+def fun_l0_n474()
+ fun_l1_n904
+end
+
+def fun_l0_n475()
+ fun_l1_n923
+end
+
+def fun_l0_n476()
+ fun_l1_n19
+end
+
+def fun_l0_n477()
+ fun_l1_n871
+end
+
+def fun_l0_n478()
+ fun_l1_n422
+end
+
+def fun_l0_n479()
+ fun_l1_n72
+end
+
+def fun_l0_n480()
+ fun_l1_n528
+end
+
+def fun_l0_n481()
+ fun_l1_n181
+end
+
+def fun_l0_n482()
+ fun_l1_n33
+end
+
+def fun_l0_n483()
+ fun_l1_n951
+end
+
+def fun_l0_n484()
+ fun_l1_n747
+end
+
+def fun_l0_n485()
+ fun_l1_n200
+end
+
+def fun_l0_n486()
+ fun_l1_n474
+end
+
+def fun_l0_n487()
+ fun_l1_n126
+end
+
+def fun_l0_n488()
+ fun_l1_n757
+end
+
+def fun_l0_n489()
+ fun_l1_n101
+end
+
+def fun_l0_n490()
+ fun_l1_n925
+end
+
+def fun_l0_n491()
+ fun_l1_n791
+end
+
+def fun_l0_n492()
+ fun_l1_n404
+end
+
+def fun_l0_n493()
+ fun_l1_n841
+end
+
+def fun_l0_n494()
+ fun_l1_n774
+end
+
+def fun_l0_n495()
+ fun_l1_n230
+end
+
+def fun_l0_n496()
+ fun_l1_n796
+end
+
+def fun_l0_n497()
+ fun_l1_n270
+end
+
+def fun_l0_n498()
+ fun_l1_n795
+end
+
+def fun_l0_n499()
+ fun_l1_n628
+end
+
+def fun_l0_n500()
+ fun_l1_n865
+end
+
+def fun_l0_n501()
+ fun_l1_n105
+end
+
+def fun_l0_n502()
+ fun_l1_n538
+end
+
+def fun_l0_n503()
+ fun_l1_n769
+end
+
+def fun_l0_n504()
+ fun_l1_n714
+end
+
+def fun_l0_n505()
+ fun_l1_n889
+end
+
+def fun_l0_n506()
+ fun_l1_n191
+end
+
+def fun_l0_n507()
+ fun_l1_n966
+end
+
+def fun_l0_n508()
+ fun_l1_n196
+end
+
+def fun_l0_n509()
+ fun_l1_n878
+end
+
+def fun_l0_n510()
+ fun_l1_n487
+end
+
+def fun_l0_n511()
+ fun_l1_n242
+end
+
+def fun_l0_n512()
+ fun_l1_n740
+end
+
+def fun_l0_n513()
+ fun_l1_n938
+end
+
+def fun_l0_n514()
+ fun_l1_n485
+end
+
+def fun_l0_n515()
+ fun_l1_n380
+end
+
+def fun_l0_n516()
+ fun_l1_n936
+end
+
+def fun_l0_n517()
+ fun_l1_n237
+end
+
+def fun_l0_n518()
+ fun_l1_n79
+end
+
+def fun_l0_n519()
+ fun_l1_n501
+end
+
+def fun_l0_n520()
+ fun_l1_n966
+end
+
+def fun_l0_n521()
+ fun_l1_n741
+end
+
+def fun_l0_n522()
+ fun_l1_n170
+end
+
+def fun_l0_n523()
+ fun_l1_n183
+end
+
+def fun_l0_n524()
+ fun_l1_n556
+end
+
+def fun_l0_n525()
+ fun_l1_n865
+end
+
+def fun_l0_n526()
+ fun_l1_n884
+end
+
+def fun_l0_n527()
+ fun_l1_n725
+end
+
+def fun_l0_n528()
+ fun_l1_n205
+end
+
+def fun_l0_n529()
+ fun_l1_n72
+end
+
+def fun_l0_n530()
+ fun_l1_n432
+end
+
+def fun_l0_n531()
+ fun_l1_n90
+end
+
+def fun_l0_n532()
+ fun_l1_n189
+end
+
+def fun_l0_n533()
+ fun_l1_n395
+end
+
+def fun_l0_n534()
+ fun_l1_n201
+end
+
+def fun_l0_n535()
+ fun_l1_n534
+end
+
+def fun_l0_n536()
+ fun_l1_n748
+end
+
+def fun_l0_n537()
+ fun_l1_n439
+end
+
+def fun_l0_n538()
+ fun_l1_n495
+end
+
+def fun_l0_n539()
+ fun_l1_n904
+end
+
+def fun_l0_n540()
+ fun_l1_n525
+end
+
+def fun_l0_n541()
+ fun_l1_n924
+end
+
+def fun_l0_n542()
+ fun_l1_n549
+end
+
+def fun_l0_n543()
+ fun_l1_n2
+end
+
+def fun_l0_n544()
+ fun_l1_n257
+end
+
+def fun_l0_n545()
+ fun_l1_n921
+end
+
+def fun_l0_n546()
+ fun_l1_n82
+end
+
+def fun_l0_n547()
+ fun_l1_n384
+end
+
+def fun_l0_n548()
+ fun_l1_n219
+end
+
+def fun_l0_n549()
+ fun_l1_n379
+end
+
+def fun_l0_n550()
+ fun_l1_n488
+end
+
+def fun_l0_n551()
+ fun_l1_n4
+end
+
+def fun_l0_n552()
+ fun_l1_n150
+end
+
+def fun_l0_n553()
+ fun_l1_n168
+end
+
+def fun_l0_n554()
+ fun_l1_n773
+end
+
+def fun_l0_n555()
+ fun_l1_n444
+end
+
+def fun_l0_n556()
+ fun_l1_n201
+end
+
+def fun_l0_n557()
+ fun_l1_n333
+end
+
+def fun_l0_n558()
+ fun_l1_n556
+end
+
+def fun_l0_n559()
+ fun_l1_n394
+end
+
+def fun_l0_n560()
+ fun_l1_n540
+end
+
+def fun_l0_n561()
+ fun_l1_n640
+end
+
+def fun_l0_n562()
+ fun_l1_n321
+end
+
+def fun_l0_n563()
+ fun_l1_n286
+end
+
+def fun_l0_n564()
+ fun_l1_n320
+end
+
+def fun_l0_n565()
+ fun_l1_n2
+end
+
+def fun_l0_n566()
+ fun_l1_n50
+end
+
+def fun_l0_n567()
+ fun_l1_n269
+end
+
+def fun_l0_n568()
+ fun_l1_n412
+end
+
+def fun_l0_n569()
+ fun_l1_n984
+end
+
+def fun_l0_n570()
+ fun_l1_n307
+end
+
+def fun_l0_n571()
+ fun_l1_n954
+end
+
+def fun_l0_n572()
+ fun_l1_n728
+end
+
+def fun_l0_n573()
+ fun_l1_n227
+end
+
+def fun_l0_n574()
+ fun_l1_n917
+end
+
+def fun_l0_n575()
+ fun_l1_n974
+end
+
+def fun_l0_n576()
+ fun_l1_n995
+end
+
+def fun_l0_n577()
+ fun_l1_n593
+end
+
+def fun_l0_n578()
+ fun_l1_n704
+end
+
+def fun_l0_n579()
+ fun_l1_n142
+end
+
+def fun_l0_n580()
+ fun_l1_n585
+end
+
+def fun_l0_n581()
+ fun_l1_n634
+end
+
+def fun_l0_n582()
+ fun_l1_n888
+end
+
+def fun_l0_n583()
+ fun_l1_n873
+end
+
+def fun_l0_n584()
+ fun_l1_n674
+end
+
+def fun_l0_n585()
+ fun_l1_n657
+end
+
+def fun_l0_n586()
+ fun_l1_n248
+end
+
+def fun_l0_n587()
+ fun_l1_n478
+end
+
+def fun_l0_n588()
+ fun_l1_n263
+end
+
+def fun_l0_n589()
+ fun_l1_n908
+end
+
+def fun_l0_n590()
+ fun_l1_n741
+end
+
+def fun_l0_n591()
+ fun_l1_n299
+end
+
+def fun_l0_n592()
+ fun_l1_n763
+end
+
+def fun_l0_n593()
+ fun_l1_n746
+end
+
+def fun_l0_n594()
+ fun_l1_n367
+end
+
+def fun_l0_n595()
+ fun_l1_n394
+end
+
+def fun_l0_n596()
+ fun_l1_n304
+end
+
+def fun_l0_n597()
+ fun_l1_n939
+end
+
+def fun_l0_n598()
+ fun_l1_n392
+end
+
+def fun_l0_n599()
+ fun_l1_n758
+end
+
+def fun_l0_n600()
+ fun_l1_n133
+end
+
+def fun_l0_n601()
+ fun_l1_n212
+end
+
+def fun_l0_n602()
+ fun_l1_n719
+end
+
+def fun_l0_n603()
+ fun_l1_n952
+end
+
+def fun_l0_n604()
+ fun_l1_n818
+end
+
+def fun_l0_n605()
+ fun_l1_n216
+end
+
+def fun_l0_n606()
+ fun_l1_n438
+end
+
+def fun_l0_n607()
+ fun_l1_n315
+end
+
+def fun_l0_n608()
+ fun_l1_n450
+end
+
+def fun_l0_n609()
+ fun_l1_n420
+end
+
+def fun_l0_n610()
+ fun_l1_n917
+end
+
+def fun_l0_n611()
+ fun_l1_n921
+end
+
+def fun_l0_n612()
+ fun_l1_n596
+end
+
+def fun_l0_n613()
+ fun_l1_n253
+end
+
+def fun_l0_n614()
+ fun_l1_n395
+end
+
+def fun_l0_n615()
+ fun_l1_n120
+end
+
+def fun_l0_n616()
+ fun_l1_n742
+end
+
+def fun_l0_n617()
+ fun_l1_n489
+end
+
+def fun_l0_n618()
+ fun_l1_n338
+end
+
+def fun_l0_n619()
+ fun_l1_n351
+end
+
+def fun_l0_n620()
+ fun_l1_n384
+end
+
+def fun_l0_n621()
+ fun_l1_n581
+end
+
+def fun_l0_n622()
+ fun_l1_n667
+end
+
+def fun_l0_n623()
+ fun_l1_n956
+end
+
+def fun_l0_n624()
+ fun_l1_n156
+end
+
+def fun_l0_n625()
+ fun_l1_n909
+end
+
+def fun_l0_n626()
+ fun_l1_n548
+end
+
+def fun_l0_n627()
+ fun_l1_n293
+end
+
+def fun_l0_n628()
+ fun_l1_n997
+end
+
+def fun_l0_n629()
+ fun_l1_n950
+end
+
+def fun_l0_n630()
+ fun_l1_n761
+end
+
+def fun_l0_n631()
+ fun_l1_n72
+end
+
+def fun_l0_n632()
+ fun_l1_n213
+end
+
+def fun_l0_n633()
+ fun_l1_n746
+end
+
+def fun_l0_n634()
+ fun_l1_n327
+end
+
+def fun_l0_n635()
+ fun_l1_n166
+end
+
+def fun_l0_n636()
+ fun_l1_n749
+end
+
+def fun_l0_n637()
+ fun_l1_n196
+end
+
+def fun_l0_n638()
+ fun_l1_n786
+end
+
+def fun_l0_n639()
+ fun_l1_n613
+end
+
+def fun_l0_n640()
+ fun_l1_n903
+end
+
+def fun_l0_n641()
+ fun_l1_n836
+end
+
+def fun_l0_n642()
+ fun_l1_n687
+end
+
+def fun_l0_n643()
+ fun_l1_n533
+end
+
+def fun_l0_n644()
+ fun_l1_n544
+end
+
+def fun_l0_n645()
+ fun_l1_n637
+end
+
+def fun_l0_n646()
+ fun_l1_n859
+end
+
+def fun_l0_n647()
+ fun_l1_n917
+end
+
+def fun_l0_n648()
+ fun_l1_n119
+end
+
+def fun_l0_n649()
+ fun_l1_n327
+end
+
+def fun_l0_n650()
+ fun_l1_n759
+end
+
+def fun_l0_n651()
+ fun_l1_n169
+end
+
+def fun_l0_n652()
+ fun_l1_n497
+end
+
+def fun_l0_n653()
+ fun_l1_n441
+end
+
+def fun_l0_n654()
+ fun_l1_n151
+end
+
+def fun_l0_n655()
+ fun_l1_n553
+end
+
+def fun_l0_n656()
+ fun_l1_n441
+end
+
+def fun_l0_n657()
+ fun_l1_n390
+end
+
+def fun_l0_n658()
+ fun_l1_n615
+end
+
+def fun_l0_n659()
+ fun_l1_n578
+end
+
+def fun_l0_n660()
+ fun_l1_n873
+end
+
+def fun_l0_n661()
+ fun_l1_n608
+end
+
+def fun_l0_n662()
+ fun_l1_n446
+end
+
+def fun_l0_n663()
+ fun_l1_n647
+end
+
+def fun_l0_n664()
+ fun_l1_n601
+end
+
+def fun_l0_n665()
+ fun_l1_n945
+end
+
+def fun_l0_n666()
+ fun_l1_n172
+end
+
+def fun_l0_n667()
+ fun_l1_n547
+end
+
+def fun_l0_n668()
+ fun_l1_n977
+end
+
+def fun_l0_n669()
+ fun_l1_n419
+end
+
+def fun_l0_n670()
+ fun_l1_n626
+end
+
+def fun_l0_n671()
+ fun_l1_n345
+end
+
+def fun_l0_n672()
+ fun_l1_n899
+end
+
+def fun_l0_n673()
+ fun_l1_n442
+end
+
+def fun_l0_n674()
+ fun_l1_n296
+end
+
+def fun_l0_n675()
+ fun_l1_n303
+end
+
+def fun_l0_n676()
+ fun_l1_n679
+end
+
+def fun_l0_n677()
+ fun_l1_n655
+end
+
+def fun_l0_n678()
+ fun_l1_n998
+end
+
+def fun_l0_n679()
+ fun_l1_n157
+end
+
+def fun_l0_n680()
+ fun_l1_n705
+end
+
+def fun_l0_n681()
+ fun_l1_n832
+end
+
+def fun_l0_n682()
+ fun_l1_n113
+end
+
+def fun_l0_n683()
+ fun_l1_n550
+end
+
+def fun_l0_n684()
+ fun_l1_n21
+end
+
+def fun_l0_n685()
+ fun_l1_n21
+end
+
+def fun_l0_n686()
+ fun_l1_n195
+end
+
+def fun_l0_n687()
+ fun_l1_n269
+end
+
+def fun_l0_n688()
+ fun_l1_n12
+end
+
+def fun_l0_n689()
+ fun_l1_n49
+end
+
+def fun_l0_n690()
+ fun_l1_n836
+end
+
+def fun_l0_n691()
+ fun_l1_n808
+end
+
+def fun_l0_n692()
+ fun_l1_n938
+end
+
+def fun_l0_n693()
+ fun_l1_n531
+end
+
+def fun_l0_n694()
+ fun_l1_n296
+end
+
+def fun_l0_n695()
+ fun_l1_n32
+end
+
+def fun_l0_n696()
+ fun_l1_n641
+end
+
+def fun_l0_n697()
+ fun_l1_n549
+end
+
+def fun_l0_n698()
+ fun_l1_n437
+end
+
+def fun_l0_n699()
+ fun_l1_n133
+end
+
+def fun_l0_n700()
+ fun_l1_n734
+end
+
+def fun_l0_n701()
+ fun_l1_n340
+end
+
+def fun_l0_n702()
+ fun_l1_n768
+end
+
+def fun_l0_n703()
+ fun_l1_n97
+end
+
+def fun_l0_n704()
+ fun_l1_n52
+end
+
+def fun_l0_n705()
+ fun_l1_n121
+end
+
+def fun_l0_n706()
+ fun_l1_n471
+end
+
+def fun_l0_n707()
+ fun_l1_n94
+end
+
+def fun_l0_n708()
+ fun_l1_n946
+end
+
+def fun_l0_n709()
+ fun_l1_n151
+end
+
+def fun_l0_n710()
+ fun_l1_n946
+end
+
+def fun_l0_n711()
+ fun_l1_n191
+end
+
+def fun_l0_n712()
+ fun_l1_n552
+end
+
+def fun_l0_n713()
+ fun_l1_n733
+end
+
+def fun_l0_n714()
+ fun_l1_n895
+end
+
+def fun_l0_n715()
+ fun_l1_n850
+end
+
+def fun_l0_n716()
+ fun_l1_n113
+end
+
+def fun_l0_n717()
+ fun_l1_n69
+end
+
+def fun_l0_n718()
+ fun_l1_n862
+end
+
+def fun_l0_n719()
+ fun_l1_n635
+end
+
+def fun_l0_n720()
+ fun_l1_n714
+end
+
+def fun_l0_n721()
+ fun_l1_n179
+end
+
+def fun_l0_n722()
+ fun_l1_n17
+end
+
+def fun_l0_n723()
+ fun_l1_n299
+end
+
+def fun_l0_n724()
+ fun_l1_n141
+end
+
+def fun_l0_n725()
+ fun_l1_n338
+end
+
+def fun_l0_n726()
+ fun_l1_n650
+end
+
+def fun_l0_n727()
+ fun_l1_n784
+end
+
+def fun_l0_n728()
+ fun_l1_n333
+end
+
+def fun_l0_n729()
+ fun_l1_n10
+end
+
+def fun_l0_n730()
+ fun_l1_n271
+end
+
+def fun_l0_n731()
+ fun_l1_n882
+end
+
+def fun_l0_n732()
+ fun_l1_n512
+end
+
+def fun_l0_n733()
+ fun_l1_n932
+end
+
+def fun_l0_n734()
+ fun_l1_n68
+end
+
+def fun_l0_n735()
+ fun_l1_n111
+end
+
+def fun_l0_n736()
+ fun_l1_n649
+end
+
+def fun_l0_n737()
+ fun_l1_n512
+end
+
+def fun_l0_n738()
+ fun_l1_n551
+end
+
+def fun_l0_n739()
+ fun_l1_n153
+end
+
+def fun_l0_n740()
+ fun_l1_n582
+end
+
+def fun_l0_n741()
+ fun_l1_n366
+end
+
+def fun_l0_n742()
+ fun_l1_n135
+end
+
+def fun_l0_n743()
+ fun_l1_n136
+end
+
+def fun_l0_n744()
+ fun_l1_n782
+end
+
+def fun_l0_n745()
+ fun_l1_n258
+end
+
+def fun_l0_n746()
+ fun_l1_n44
+end
+
+def fun_l0_n747()
+ fun_l1_n379
+end
+
+def fun_l0_n748()
+ fun_l1_n14
+end
+
+def fun_l0_n749()
+ fun_l1_n563
+end
+
+def fun_l0_n750()
+ fun_l1_n361
+end
+
+def fun_l0_n751()
+ fun_l1_n624
+end
+
+def fun_l0_n752()
+ fun_l1_n516
+end
+
+def fun_l0_n753()
+ fun_l1_n944
+end
+
+def fun_l0_n754()
+ fun_l1_n783
+end
+
+def fun_l0_n755()
+ fun_l1_n744
+end
+
+def fun_l0_n756()
+ fun_l1_n500
+end
+
+def fun_l0_n757()
+ fun_l1_n809
+end
+
+def fun_l0_n758()
+ fun_l1_n757
+end
+
+def fun_l0_n759()
+ fun_l1_n995
+end
+
+def fun_l0_n760()
+ fun_l1_n114
+end
+
+def fun_l0_n761()
+ fun_l1_n802
+end
+
+def fun_l0_n762()
+ fun_l1_n114
+end
+
+def fun_l0_n763()
+ fun_l1_n683
+end
+
+def fun_l0_n764()
+ fun_l1_n775
+end
+
+def fun_l0_n765()
+ fun_l1_n967
+end
+
+def fun_l0_n766()
+ fun_l1_n499
+end
+
+def fun_l0_n767()
+ fun_l1_n561
+end
+
+def fun_l0_n768()
+ fun_l1_n206
+end
+
+def fun_l0_n769()
+ fun_l1_n738
+end
+
+def fun_l0_n770()
+ fun_l1_n953
+end
+
+def fun_l0_n771()
+ fun_l1_n394
+end
+
+def fun_l0_n772()
+ fun_l1_n393
+end
+
+def fun_l0_n773()
+ fun_l1_n226
+end
+
+def fun_l0_n774()
+ fun_l1_n363
+end
+
+def fun_l0_n775()
+ fun_l1_n928
+end
+
+def fun_l0_n776()
+ fun_l1_n213
+end
+
+def fun_l0_n777()
+ fun_l1_n3
+end
+
+def fun_l0_n778()
+ fun_l1_n656
+end
+
+def fun_l0_n779()
+ fun_l1_n927
+end
+
+def fun_l0_n780()
+ fun_l1_n406
+end
+
+def fun_l0_n781()
+ fun_l1_n589
+end
+
+def fun_l0_n782()
+ fun_l1_n56
+end
+
+def fun_l0_n783()
+ fun_l1_n280
+end
+
+def fun_l0_n784()
+ fun_l1_n156
+end
+
+def fun_l0_n785()
+ fun_l1_n257
+end
+
+def fun_l0_n786()
+ fun_l1_n269
+end
+
+def fun_l0_n787()
+ fun_l1_n453
+end
+
+def fun_l0_n788()
+ fun_l1_n293
+end
+
+def fun_l0_n789()
+ fun_l1_n570
+end
+
+def fun_l0_n790()
+ fun_l1_n194
+end
+
+def fun_l0_n791()
+ fun_l1_n120
+end
+
+def fun_l0_n792()
+ fun_l1_n976
+end
+
+def fun_l0_n793()
+ fun_l1_n115
+end
+
+def fun_l0_n794()
+ fun_l1_n74
+end
+
+def fun_l0_n795()
+ fun_l1_n25
+end
+
+def fun_l0_n796()
+ fun_l1_n288
+end
+
+def fun_l0_n797()
+ fun_l1_n49
+end
+
+def fun_l0_n798()
+ fun_l1_n237
+end
+
+def fun_l0_n799()
+ fun_l1_n481
+end
+
+def fun_l0_n800()
+ fun_l1_n329
+end
+
+def fun_l0_n801()
+ fun_l1_n907
+end
+
+def fun_l0_n802()
+ fun_l1_n804
+end
+
+def fun_l0_n803()
+ fun_l1_n8
+end
+
+def fun_l0_n804()
+ fun_l1_n270
+end
+
+def fun_l0_n805()
+ fun_l1_n315
+end
+
+def fun_l0_n806()
+ fun_l1_n941
+end
+
+def fun_l0_n807()
+ fun_l1_n343
+end
+
+def fun_l0_n808()
+ fun_l1_n817
+end
+
+def fun_l0_n809()
+ fun_l1_n315
+end
+
+def fun_l0_n810()
+ fun_l1_n156
+end
+
+def fun_l0_n811()
+ fun_l1_n689
+end
+
+def fun_l0_n812()
+ fun_l1_n644
+end
+
+def fun_l0_n813()
+ fun_l1_n158
+end
+
+def fun_l0_n814()
+ fun_l1_n588
+end
+
+def fun_l0_n815()
+ fun_l1_n820
+end
+
+def fun_l0_n816()
+ fun_l1_n86
+end
+
+def fun_l0_n817()
+ fun_l1_n176
+end
+
+def fun_l0_n818()
+ fun_l1_n611
+end
+
+def fun_l0_n819()
+ fun_l1_n816
+end
+
+def fun_l0_n820()
+ fun_l1_n332
+end
+
+def fun_l0_n821()
+ fun_l1_n170
+end
+
+def fun_l0_n822()
+ fun_l1_n483
+end
+
+def fun_l0_n823()
+ fun_l1_n768
+end
+
+def fun_l0_n824()
+ fun_l1_n825
+end
+
+def fun_l0_n825()
+ fun_l1_n114
+end
+
+def fun_l0_n826()
+ fun_l1_n102
+end
+
+def fun_l0_n827()
+ fun_l1_n963
+end
+
+def fun_l0_n828()
+ fun_l1_n202
+end
+
+def fun_l0_n829()
+ fun_l1_n708
+end
+
+def fun_l0_n830()
+ fun_l1_n350
+end
+
+def fun_l0_n831()
+ fun_l1_n976
+end
+
+def fun_l0_n832()
+ fun_l1_n834
+end
+
+def fun_l0_n833()
+ fun_l1_n342
+end
+
+def fun_l0_n834()
+ fun_l1_n764
+end
+
+def fun_l0_n835()
+ fun_l1_n211
+end
+
+def fun_l0_n836()
+ fun_l1_n173
+end
+
+def fun_l0_n837()
+ fun_l1_n988
+end
+
+def fun_l0_n838()
+ fun_l1_n369
+end
+
+def fun_l0_n839()
+ fun_l1_n481
+end
+
+def fun_l0_n840()
+ fun_l1_n580
+end
+
+def fun_l0_n841()
+ fun_l1_n255
+end
+
+def fun_l0_n842()
+ fun_l1_n476
+end
+
+def fun_l0_n843()
+ fun_l1_n795
+end
+
+def fun_l0_n844()
+ fun_l1_n296
+end
+
+def fun_l0_n845()
+ fun_l1_n880
+end
+
+def fun_l0_n846()
+ fun_l1_n457
+end
+
+def fun_l0_n847()
+ fun_l1_n88
+end
+
+def fun_l0_n848()
+ fun_l1_n901
+end
+
+def fun_l0_n849()
+ fun_l1_n988
+end
+
+def fun_l0_n850()
+ fun_l1_n396
+end
+
+def fun_l0_n851()
+ fun_l1_n60
+end
+
+def fun_l0_n852()
+ fun_l1_n738
+end
+
+def fun_l0_n853()
+ fun_l1_n2
+end
+
+def fun_l0_n854()
+ fun_l1_n652
+end
+
+def fun_l0_n855()
+ fun_l1_n982
+end
+
+def fun_l0_n856()
+ fun_l1_n987
+end
+
+def fun_l0_n857()
+ fun_l1_n488
+end
+
+def fun_l0_n858()
+ fun_l1_n354
+end
+
+def fun_l0_n859()
+ fun_l1_n320
+end
+
+def fun_l0_n860()
+ fun_l1_n378
+end
+
+def fun_l0_n861()
+ fun_l1_n965
+end
+
+def fun_l0_n862()
+ fun_l1_n858
+end
+
+def fun_l0_n863()
+ fun_l1_n360
+end
+
+def fun_l0_n864()
+ fun_l1_n812
+end
+
+def fun_l0_n865()
+ fun_l1_n590
+end
+
+def fun_l0_n866()
+ fun_l1_n339
+end
+
+def fun_l0_n867()
+ fun_l1_n365
+end
+
+def fun_l0_n868()
+ fun_l1_n190
+end
+
+def fun_l0_n869()
+ fun_l1_n555
+end
+
+def fun_l0_n870()
+ fun_l1_n676
+end
+
+def fun_l0_n871()
+ fun_l1_n681
+end
+
+def fun_l0_n872()
+ fun_l1_n283
+end
+
+def fun_l0_n873()
+ fun_l1_n865
+end
+
+def fun_l0_n874()
+ fun_l1_n402
+end
+
+def fun_l0_n875()
+ fun_l1_n530
+end
+
+def fun_l0_n876()
+ fun_l1_n25
+end
+
+def fun_l0_n877()
+ fun_l1_n10
+end
+
+def fun_l0_n878()
+ fun_l1_n252
+end
+
+def fun_l0_n879()
+ fun_l1_n174
+end
+
+def fun_l0_n880()
+ fun_l1_n449
+end
+
+def fun_l0_n881()
+ fun_l1_n385
+end
+
+def fun_l0_n882()
+ fun_l1_n689
+end
+
+def fun_l0_n883()
+ fun_l1_n492
+end
+
+def fun_l0_n884()
+ fun_l1_n949
+end
+
+def fun_l0_n885()
+ fun_l1_n912
+end
+
+def fun_l0_n886()
+ fun_l1_n131
+end
+
+def fun_l0_n887()
+ fun_l1_n484
+end
+
+def fun_l0_n888()
+ fun_l1_n647
+end
+
+def fun_l0_n889()
+ fun_l1_n679
+end
+
+def fun_l0_n890()
+ fun_l1_n16
+end
+
+def fun_l0_n891()
+ fun_l1_n745
+end
+
+def fun_l0_n892()
+ fun_l1_n490
+end
+
+def fun_l0_n893()
+ fun_l1_n104
+end
+
+def fun_l0_n894()
+ fun_l1_n91
+end
+
+def fun_l0_n895()
+ fun_l1_n368
+end
+
+def fun_l0_n896()
+ fun_l1_n439
+end
+
+def fun_l0_n897()
+ fun_l1_n23
+end
+
+def fun_l0_n898()
+ fun_l1_n277
+end
+
+def fun_l0_n899()
+ fun_l1_n597
+end
+
+def fun_l0_n900()
+ fun_l1_n644
+end
+
+def fun_l0_n901()
+ fun_l1_n255
+end
+
+def fun_l0_n902()
+ fun_l1_n767
+end
+
+def fun_l0_n903()
+ fun_l1_n417
+end
+
+def fun_l0_n904()
+ fun_l1_n517
+end
+
+def fun_l0_n905()
+ fun_l1_n609
+end
+
+def fun_l0_n906()
+ fun_l1_n498
+end
+
+def fun_l0_n907()
+ fun_l1_n24
+end
+
+def fun_l0_n908()
+ fun_l1_n722
+end
+
+def fun_l0_n909()
+ fun_l1_n494
+end
+
+def fun_l0_n910()
+ fun_l1_n450
+end
+
+def fun_l0_n911()
+ fun_l1_n302
+end
+
+def fun_l0_n912()
+ fun_l1_n801
+end
+
+def fun_l0_n913()
+ fun_l1_n709
+end
+
+def fun_l0_n914()
+ fun_l1_n555
+end
+
+def fun_l0_n915()
+ fun_l1_n955
+end
+
+def fun_l0_n916()
+ fun_l1_n310
+end
+
+def fun_l0_n917()
+ fun_l1_n839
+end
+
+def fun_l0_n918()
+ fun_l1_n590
+end
+
+def fun_l0_n919()
+ fun_l1_n83
+end
+
+def fun_l0_n920()
+ fun_l1_n335
+end
+
+def fun_l0_n921()
+ fun_l1_n740
+end
+
+def fun_l0_n922()
+ fun_l1_n357
+end
+
+def fun_l0_n923()
+ fun_l1_n312
+end
+
+def fun_l0_n924()
+ fun_l1_n544
+end
+
+def fun_l0_n925()
+ fun_l1_n611
+end
+
+def fun_l0_n926()
+ fun_l1_n651
+end
+
+def fun_l0_n927()
+ fun_l1_n730
+end
+
+def fun_l0_n928()
+ fun_l1_n623
+end
+
+def fun_l0_n929()
+ fun_l1_n337
+end
+
+def fun_l0_n930()
+ fun_l1_n574
+end
+
+def fun_l0_n931()
+ fun_l1_n795
+end
+
+def fun_l0_n932()
+ fun_l1_n224
+end
+
+def fun_l0_n933()
+ fun_l1_n355
+end
+
+def fun_l0_n934()
+ fun_l1_n286
+end
+
+def fun_l0_n935()
+ fun_l1_n893
+end
+
+def fun_l0_n936()
+ fun_l1_n278
+end
+
+def fun_l0_n937()
+ fun_l1_n970
+end
+
+def fun_l0_n938()
+ fun_l1_n761
+end
+
+def fun_l0_n939()
+ fun_l1_n244
+end
+
+def fun_l0_n940()
+ fun_l1_n381
+end
+
+def fun_l0_n941()
+ fun_l1_n661
+end
+
+def fun_l0_n942()
+ fun_l1_n543
+end
+
+def fun_l0_n943()
+ fun_l1_n432
+end
+
+def fun_l0_n944()
+ fun_l1_n237
+end
+
+def fun_l0_n945()
+ fun_l1_n815
+end
+
+def fun_l0_n946()
+ fun_l1_n580
+end
+
+def fun_l0_n947()
+ fun_l1_n99
+end
+
+def fun_l0_n948()
+ fun_l1_n492
+end
+
+def fun_l0_n949()
+ fun_l1_n799
+end
+
+def fun_l0_n950()
+ fun_l1_n727
+end
+
+def fun_l0_n951()
+ fun_l1_n632
+end
+
+def fun_l0_n952()
+ fun_l1_n689
+end
+
+def fun_l0_n953()
+ fun_l1_n69
+end
+
+def fun_l0_n954()
+ fun_l1_n782
+end
+
+def fun_l0_n955()
+ fun_l1_n140
+end
+
+def fun_l0_n956()
+ fun_l1_n451
+end
+
+def fun_l0_n957()
+ fun_l1_n440
+end
+
+def fun_l0_n958()
+ fun_l1_n88
+end
+
+def fun_l0_n959()
+ fun_l1_n775
+end
+
+def fun_l0_n960()
+ fun_l1_n455
+end
+
+def fun_l0_n961()
+ fun_l1_n402
+end
+
+def fun_l0_n962()
+ fun_l1_n906
+end
+
+def fun_l0_n963()
+ fun_l1_n990
+end
+
+def fun_l0_n964()
+ fun_l1_n432
+end
+
+def fun_l0_n965()
+ fun_l1_n419
+end
+
+def fun_l0_n966()
+ fun_l1_n568
+end
+
+def fun_l0_n967()
+ fun_l1_n177
+end
+
+def fun_l0_n968()
+ fun_l1_n206
+end
+
+def fun_l0_n969()
+ fun_l1_n170
+end
+
+def fun_l0_n970()
+ fun_l1_n216
+end
+
+def fun_l0_n971()
+ fun_l1_n700
+end
+
+def fun_l0_n972()
+ fun_l1_n286
+end
+
+def fun_l0_n973()
+ fun_l1_n817
+end
+
+def fun_l0_n974()
+ fun_l1_n605
+end
+
+def fun_l0_n975()
+ fun_l1_n400
+end
+
+def fun_l0_n976()
+ fun_l1_n282
+end
+
+def fun_l0_n977()
+ fun_l1_n978
+end
+
+def fun_l0_n978()
+ fun_l1_n661
+end
+
+def fun_l0_n979()
+ fun_l1_n42
+end
+
+def fun_l0_n980()
+ fun_l1_n1
+end
+
+def fun_l0_n981()
+ fun_l1_n864
+end
+
+def fun_l0_n982()
+ fun_l1_n829
+end
+
+def fun_l0_n983()
+ fun_l1_n713
+end
+
+def fun_l0_n984()
+ fun_l1_n653
+end
+
+def fun_l0_n985()
+ fun_l1_n332
+end
+
+def fun_l0_n986()
+ fun_l1_n21
+end
+
+def fun_l0_n987()
+ fun_l1_n532
+end
+
+def fun_l0_n988()
+ fun_l1_n163
+end
+
+def fun_l0_n989()
+ fun_l1_n154
+end
+
+def fun_l0_n990()
+ fun_l1_n351
+end
+
+def fun_l0_n991()
+ fun_l1_n708
+end
+
+def fun_l0_n992()
+ fun_l1_n955
+end
+
+def fun_l0_n993()
+ fun_l1_n250
+end
+
+def fun_l0_n994()
+ fun_l1_n645
+end
+
+def fun_l0_n995()
+ fun_l1_n668
+end
+
+def fun_l0_n996()
+ fun_l1_n764
+end
+
+def fun_l0_n997()
+ fun_l1_n79
+end
+
+def fun_l0_n998()
+ fun_l1_n251
+end
+
+def fun_l0_n999()
+ fun_l1_n586
+end
+
+def fun_l1_n0()
+ fun_l2_n188
+end
+
+def fun_l1_n1()
+ fun_l2_n165
+end
+
+def fun_l1_n2()
+ fun_l2_n875
+end
+
+def fun_l1_n3()
+ fun_l2_n246
+end
+
+def fun_l1_n4()
+ fun_l2_n887
+end
+
+def fun_l1_n5()
+ fun_l2_n191
+end
+
+def fun_l1_n6()
+ fun_l2_n187
+end
+
+def fun_l1_n7()
+ fun_l2_n138
+end
+
+def fun_l1_n8()
+ fun_l2_n455
+end
+
+def fun_l1_n9()
+ fun_l2_n861
+end
+
+def fun_l1_n10()
+ fun_l2_n588
+end
+
+def fun_l1_n11()
+ fun_l2_n157
+end
+
+def fun_l1_n12()
+ fun_l2_n903
+end
+
+def fun_l1_n13()
+ fun_l2_n655
+end
+
+def fun_l1_n14()
+ fun_l2_n252
+end
+
+def fun_l1_n15()
+ fun_l2_n894
+end
+
+def fun_l1_n16()
+ fun_l2_n908
+end
+
+def fun_l1_n17()
+ fun_l2_n649
+end
+
+def fun_l1_n18()
+ fun_l2_n890
+end
+
+def fun_l1_n19()
+ fun_l2_n451
+end
+
+def fun_l1_n20()
+ fun_l2_n775
+end
+
+def fun_l1_n21()
+ fun_l2_n522
+end
+
+def fun_l1_n22()
+ fun_l2_n666
+end
+
+def fun_l1_n23()
+ fun_l2_n784
+end
+
+def fun_l1_n24()
+ fun_l2_n204
+end
+
+def fun_l1_n25()
+ fun_l2_n310
+end
+
+def fun_l1_n26()
+ fun_l2_n740
+end
+
+def fun_l1_n27()
+ fun_l2_n22
+end
+
+def fun_l1_n28()
+ fun_l2_n114
+end
+
+def fun_l1_n29()
+ fun_l2_n132
+end
+
+def fun_l1_n30()
+ fun_l2_n935
+end
+
+def fun_l1_n31()
+ fun_l2_n459
+end
+
+def fun_l1_n32()
+ fun_l2_n262
+end
+
+def fun_l1_n33()
+ fun_l2_n22
+end
+
+def fun_l1_n34()
+ fun_l2_n649
+end
+
+def fun_l1_n35()
+ fun_l2_n817
+end
+
+def fun_l1_n36()
+ fun_l2_n17
+end
+
+def fun_l1_n37()
+ fun_l2_n685
+end
+
+def fun_l1_n38()
+ fun_l2_n118
+end
+
+def fun_l1_n39()
+ fun_l2_n285
+end
+
+def fun_l1_n40()
+ fun_l2_n186
+end
+
+def fun_l1_n41()
+ fun_l2_n318
+end
+
+def fun_l1_n42()
+ fun_l2_n133
+end
+
+def fun_l1_n43()
+ fun_l2_n364
+end
+
+def fun_l1_n44()
+ fun_l2_n672
+end
+
+def fun_l1_n45()
+ fun_l2_n710
+end
+
+def fun_l1_n46()
+ fun_l2_n568
+end
+
+def fun_l1_n47()
+ fun_l2_n923
+end
+
+def fun_l1_n48()
+ fun_l2_n664
+end
+
+def fun_l1_n49()
+ fun_l2_n460
+end
+
+def fun_l1_n50()
+ fun_l2_n900
+end
+
+def fun_l1_n51()
+ fun_l2_n144
+end
+
+def fun_l1_n52()
+ fun_l2_n798
+end
+
+def fun_l1_n53()
+ fun_l2_n529
+end
+
+def fun_l1_n54()
+ fun_l2_n547
+end
+
+def fun_l1_n55()
+ fun_l2_n643
+end
+
+def fun_l1_n56()
+ fun_l2_n454
+end
+
+def fun_l1_n57()
+ fun_l2_n210
+end
+
+def fun_l1_n58()
+ fun_l2_n69
+end
+
+def fun_l1_n59()
+ fun_l2_n140
+end
+
+def fun_l1_n60()
+ fun_l2_n844
+end
+
+def fun_l1_n61()
+ fun_l2_n933
+end
+
+def fun_l1_n62()
+ fun_l2_n569
+end
+
+def fun_l1_n63()
+ fun_l2_n596
+end
+
+def fun_l1_n64()
+ fun_l2_n254
+end
+
+def fun_l1_n65()
+ fun_l2_n838
+end
+
+def fun_l1_n66()
+ fun_l2_n796
+end
+
+def fun_l1_n67()
+ fun_l2_n262
+end
+
+def fun_l1_n68()
+ fun_l2_n379
+end
+
+def fun_l1_n69()
+ fun_l2_n700
+end
+
+def fun_l1_n70()
+ fun_l2_n947
+end
+
+def fun_l1_n71()
+ fun_l2_n226
+end
+
+def fun_l1_n72()
+ fun_l2_n550
+end
+
+def fun_l1_n73()
+ fun_l2_n791
+end
+
+def fun_l1_n74()
+ fun_l2_n252
+end
+
+def fun_l1_n75()
+ fun_l2_n347
+end
+
+def fun_l1_n76()
+ fun_l2_n812
+end
+
+def fun_l1_n77()
+ fun_l2_n14
+end
+
+def fun_l1_n78()
+ fun_l2_n19
+end
+
+def fun_l1_n79()
+ fun_l2_n296
+end
+
+def fun_l1_n80()
+ fun_l2_n217
+end
+
+def fun_l1_n81()
+ fun_l2_n979
+end
+
+def fun_l1_n82()
+ fun_l2_n815
+end
+
+def fun_l1_n83()
+ fun_l2_n879
+end
+
+def fun_l1_n84()
+ fun_l2_n311
+end
+
+def fun_l1_n85()
+ fun_l2_n351
+end
+
+def fun_l1_n86()
+ fun_l2_n997
+end
+
+def fun_l1_n87()
+ fun_l2_n551
+end
+
+def fun_l1_n88()
+ fun_l2_n221
+end
+
+def fun_l1_n89()
+ fun_l2_n869
+end
+
+def fun_l1_n90()
+ fun_l2_n700
+end
+
+def fun_l1_n91()
+ fun_l2_n627
+end
+
+def fun_l1_n92()
+ fun_l2_n106
+end
+
+def fun_l1_n93()
+ fun_l2_n731
+end
+
+def fun_l1_n94()
+ fun_l2_n61
+end
+
+def fun_l1_n95()
+ fun_l2_n386
+end
+
+def fun_l1_n96()
+ fun_l2_n960
+end
+
+def fun_l1_n97()
+ fun_l2_n75
+end
+
+def fun_l1_n98()
+ fun_l2_n896
+end
+
+def fun_l1_n99()
+ fun_l2_n597
+end
+
+def fun_l1_n100()
+ fun_l2_n73
+end
+
+def fun_l1_n101()
+ fun_l2_n78
+end
+
+def fun_l1_n102()
+ fun_l2_n919
+end
+
+def fun_l1_n103()
+ fun_l2_n784
+end
+
+def fun_l1_n104()
+ fun_l2_n798
+end
+
+def fun_l1_n105()
+ fun_l2_n478
+end
+
+def fun_l1_n106()
+ fun_l2_n883
+end
+
+def fun_l1_n107()
+ fun_l2_n855
+end
+
+def fun_l1_n108()
+ fun_l2_n581
+end
+
+def fun_l1_n109()
+ fun_l2_n694
+end
+
+def fun_l1_n110()
+ fun_l2_n490
+end
+
+def fun_l1_n111()
+ fun_l2_n44
+end
+
+def fun_l1_n112()
+ fun_l2_n537
+end
+
+def fun_l1_n113()
+ fun_l2_n21
+end
+
+def fun_l1_n114()
+ fun_l2_n312
+end
+
+def fun_l1_n115()
+ fun_l2_n700
+end
+
+def fun_l1_n116()
+ fun_l2_n227
+end
+
+def fun_l1_n117()
+ fun_l2_n689
+end
+
+def fun_l1_n118()
+ fun_l2_n664
+end
+
+def fun_l1_n119()
+ fun_l2_n669
+end
+
+def fun_l1_n120()
+ fun_l2_n306
+end
+
+def fun_l1_n121()
+ fun_l2_n278
+end
+
+def fun_l1_n122()
+ fun_l2_n312
+end
+
+def fun_l1_n123()
+ fun_l2_n416
+end
+
+def fun_l1_n124()
+ fun_l2_n912
+end
+
+def fun_l1_n125()
+ fun_l2_n135
+end
+
+def fun_l1_n126()
+ fun_l2_n814
+end
+
+def fun_l1_n127()
+ fun_l2_n468
+end
+
+def fun_l1_n128()
+ fun_l2_n342
+end
+
+def fun_l1_n129()
+ fun_l2_n584
+end
+
+def fun_l1_n130()
+ fun_l2_n826
+end
+
+def fun_l1_n131()
+ fun_l2_n361
+end
+
+def fun_l1_n132()
+ fun_l2_n517
+end
+
+def fun_l1_n133()
+ fun_l2_n894
+end
+
+def fun_l1_n134()
+ fun_l2_n40
+end
+
+def fun_l1_n135()
+ fun_l2_n674
+end
+
+def fun_l1_n136()
+ fun_l2_n137
+end
+
+def fun_l1_n137()
+ fun_l2_n915
+end
+
+def fun_l1_n138()
+ fun_l2_n990
+end
+
+def fun_l1_n139()
+ fun_l2_n86
+end
+
+def fun_l1_n140()
+ fun_l2_n692
+end
+
+def fun_l1_n141()
+ fun_l2_n977
+end
+
+def fun_l1_n142()
+ fun_l2_n956
+end
+
+def fun_l1_n143()
+ fun_l2_n909
+end
+
+def fun_l1_n144()
+ fun_l2_n854
+end
+
+def fun_l1_n145()
+ fun_l2_n223
+end
+
+def fun_l1_n146()
+ fun_l2_n873
+end
+
+def fun_l1_n147()
+ fun_l2_n962
+end
+
+def fun_l1_n148()
+ fun_l2_n441
+end
+
+def fun_l1_n149()
+ fun_l2_n598
+end
+
+def fun_l1_n150()
+ fun_l2_n329
+end
+
+def fun_l1_n151()
+ fun_l2_n749
+end
+
+def fun_l1_n152()
+ fun_l2_n756
+end
+
+def fun_l1_n153()
+ fun_l2_n567
+end
+
+def fun_l1_n154()
+ fun_l2_n23
+end
+
+def fun_l1_n155()
+ fun_l2_n626
+end
+
+def fun_l1_n156()
+ fun_l2_n368
+end
+
+def fun_l1_n157()
+ fun_l2_n169
+end
+
+def fun_l1_n158()
+ fun_l2_n496
+end
+
+def fun_l1_n159()
+ fun_l2_n582
+end
+
+def fun_l1_n160()
+ fun_l2_n443
+end
+
+def fun_l1_n161()
+ fun_l2_n406
+end
+
+def fun_l1_n162()
+ fun_l2_n97
+end
+
+def fun_l1_n163()
+ fun_l2_n293
+end
+
+def fun_l1_n164()
+ fun_l2_n608
+end
+
+def fun_l1_n165()
+ fun_l2_n255
+end
+
+def fun_l1_n166()
+ fun_l2_n421
+end
+
+def fun_l1_n167()
+ fun_l2_n126
+end
+
+def fun_l1_n168()
+ fun_l2_n894
+end
+
+def fun_l1_n169()
+ fun_l2_n486
+end
+
+def fun_l1_n170()
+ fun_l2_n219
+end
+
+def fun_l1_n171()
+ fun_l2_n343
+end
+
+def fun_l1_n172()
+ fun_l2_n914
+end
+
+def fun_l1_n173()
+ fun_l2_n815
+end
+
+def fun_l1_n174()
+ fun_l2_n436
+end
+
+def fun_l1_n175()
+ fun_l2_n923
+end
+
+def fun_l1_n176()
+ fun_l2_n706
+end
+
+def fun_l1_n177()
+ fun_l2_n769
+end
+
+def fun_l1_n178()
+ fun_l2_n271
+end
+
+def fun_l1_n179()
+ fun_l2_n489
+end
+
+def fun_l1_n180()
+ fun_l2_n724
+end
+
+def fun_l1_n181()
+ fun_l2_n202
+end
+
+def fun_l1_n182()
+ fun_l2_n884
+end
+
+def fun_l1_n183()
+ fun_l2_n957
+end
+
+def fun_l1_n184()
+ fun_l2_n690
+end
+
+def fun_l1_n185()
+ fun_l2_n468
+end
+
+def fun_l1_n186()
+ fun_l2_n6
+end
+
+def fun_l1_n187()
+ fun_l2_n94
+end
+
+def fun_l1_n188()
+ fun_l2_n226
+end
+
+def fun_l1_n189()
+ fun_l2_n462
+end
+
+def fun_l1_n190()
+ fun_l2_n228
+end
+
+def fun_l1_n191()
+ fun_l2_n497
+end
+
+def fun_l1_n192()
+ fun_l2_n246
+end
+
+def fun_l1_n193()
+ fun_l2_n960
+end
+
+def fun_l1_n194()
+ fun_l2_n492
+end
+
+def fun_l1_n195()
+ fun_l2_n485
+end
+
+def fun_l1_n196()
+ fun_l2_n18
+end
+
+def fun_l1_n197()
+ fun_l2_n536
+end
+
+def fun_l1_n198()
+ fun_l2_n802
+end
+
+def fun_l1_n199()
+ fun_l2_n151
+end
+
+def fun_l1_n200()
+ fun_l2_n82
+end
+
+def fun_l1_n201()
+ fun_l2_n266
+end
+
+def fun_l1_n202()
+ fun_l2_n445
+end
+
+def fun_l1_n203()
+ fun_l2_n64
+end
+
+def fun_l1_n204()
+ fun_l2_n11
+end
+
+def fun_l1_n205()
+ fun_l2_n351
+end
+
+def fun_l1_n206()
+ fun_l2_n994
+end
+
+def fun_l1_n207()
+ fun_l2_n305
+end
+
+def fun_l1_n208()
+ fun_l2_n258
+end
+
+def fun_l1_n209()
+ fun_l2_n122
+end
+
+def fun_l1_n210()
+ fun_l2_n426
+end
+
+def fun_l1_n211()
+ fun_l2_n385
+end
+
+def fun_l1_n212()
+ fun_l2_n556
+end
+
+def fun_l1_n213()
+ fun_l2_n490
+end
+
+def fun_l1_n214()
+ fun_l2_n809
+end
+
+def fun_l1_n215()
+ fun_l2_n547
+end
+
+def fun_l1_n216()
+ fun_l2_n62
+end
+
+def fun_l1_n217()
+ fun_l2_n675
+end
+
+def fun_l1_n218()
+ fun_l2_n923
+end
+
+def fun_l1_n219()
+ fun_l2_n746
+end
+
+def fun_l1_n220()
+ fun_l2_n222
+end
+
+def fun_l1_n221()
+ fun_l2_n962
+end
+
+def fun_l1_n222()
+ fun_l2_n925
+end
+
+def fun_l1_n223()
+ fun_l2_n908
+end
+
+def fun_l1_n224()
+ fun_l2_n593
+end
+
+def fun_l1_n225()
+ fun_l2_n653
+end
+
+def fun_l1_n226()
+ fun_l2_n21
+end
+
+def fun_l1_n227()
+ fun_l2_n135
+end
+
+def fun_l1_n228()
+ fun_l2_n892
+end
+
+def fun_l1_n229()
+ fun_l2_n976
+end
+
+def fun_l1_n230()
+ fun_l2_n20
+end
+
+def fun_l1_n231()
+ fun_l2_n469
+end
+
+def fun_l1_n232()
+ fun_l2_n741
+end
+
+def fun_l1_n233()
+ fun_l2_n259
+end
+
+def fun_l1_n234()
+ fun_l2_n638
+end
+
+def fun_l1_n235()
+ fun_l2_n335
+end
+
+def fun_l1_n236()
+ fun_l2_n775
+end
+
+def fun_l1_n237()
+ fun_l2_n228
+end
+
+def fun_l1_n238()
+ fun_l2_n287
+end
+
+def fun_l1_n239()
+ fun_l2_n690
+end
+
+def fun_l1_n240()
+ fun_l2_n241
+end
+
+def fun_l1_n241()
+ fun_l2_n728
+end
+
+def fun_l1_n242()
+ fun_l2_n507
+end
+
+def fun_l1_n243()
+ fun_l2_n631
+end
+
+def fun_l1_n244()
+ fun_l2_n338
+end
+
+def fun_l1_n245()
+ fun_l2_n41
+end
+
+def fun_l1_n246()
+ fun_l2_n744
+end
+
+def fun_l1_n247()
+ fun_l2_n52
+end
+
+def fun_l1_n248()
+ fun_l2_n406
+end
+
+def fun_l1_n249()
+ fun_l2_n619
+end
+
+def fun_l1_n250()
+ fun_l2_n710
+end
+
+def fun_l1_n251()
+ fun_l2_n54
+end
+
+def fun_l1_n252()
+ fun_l2_n162
+end
+
+def fun_l1_n253()
+ fun_l2_n952
+end
+
+def fun_l1_n254()
+ fun_l2_n909
+end
+
+def fun_l1_n255()
+ fun_l2_n270
+end
+
+def fun_l1_n256()
+ fun_l2_n752
+end
+
+def fun_l1_n257()
+ fun_l2_n377
+end
+
+def fun_l1_n258()
+ fun_l2_n606
+end
+
+def fun_l1_n259()
+ fun_l2_n368
+end
+
+def fun_l1_n260()
+ fun_l2_n165
+end
+
+def fun_l1_n261()
+ fun_l2_n353
+end
+
+def fun_l1_n262()
+ fun_l2_n199
+end
+
+def fun_l1_n263()
+ fun_l2_n17
+end
+
+def fun_l1_n264()
+ fun_l2_n613
+end
+
+def fun_l1_n265()
+ fun_l2_n329
+end
+
+def fun_l1_n266()
+ fun_l2_n827
+end
+
+def fun_l1_n267()
+ fun_l2_n415
+end
+
+def fun_l1_n268()
+ fun_l2_n835
+end
+
+def fun_l1_n269()
+ fun_l2_n267
+end
+
+def fun_l1_n270()
+ fun_l2_n911
+end
+
+def fun_l1_n271()
+ fun_l2_n640
+end
+
+def fun_l1_n272()
+ fun_l2_n810
+end
+
+def fun_l1_n273()
+ fun_l2_n469
+end
+
+def fun_l1_n274()
+ fun_l2_n121
+end
+
+def fun_l1_n275()
+ fun_l2_n661
+end
+
+def fun_l1_n276()
+ fun_l2_n882
+end
+
+def fun_l1_n277()
+ fun_l2_n469
+end
+
+def fun_l1_n278()
+ fun_l2_n356
+end
+
+def fun_l1_n279()
+ fun_l2_n328
+end
+
+def fun_l1_n280()
+ fun_l2_n155
+end
+
+def fun_l1_n281()
+ fun_l2_n386
+end
+
+def fun_l1_n282()
+ fun_l2_n974
+end
+
+def fun_l1_n283()
+ fun_l2_n126
+end
+
+def fun_l1_n284()
+ fun_l2_n294
+end
+
+def fun_l1_n285()
+ fun_l2_n338
+end
+
+def fun_l1_n286()
+ fun_l2_n366
+end
+
+def fun_l1_n287()
+ fun_l2_n159
+end
+
+def fun_l1_n288()
+ fun_l2_n729
+end
+
+def fun_l1_n289()
+ fun_l2_n422
+end
+
+def fun_l1_n290()
+ fun_l2_n865
+end
+
+def fun_l1_n291()
+ fun_l2_n930
+end
+
+def fun_l1_n292()
+ fun_l2_n469
+end
+
+def fun_l1_n293()
+ fun_l2_n567
+end
+
+def fun_l1_n294()
+ fun_l2_n521
+end
+
+def fun_l1_n295()
+ fun_l2_n208
+end
+
+def fun_l1_n296()
+ fun_l2_n778
+end
+
+def fun_l1_n297()
+ fun_l2_n898
+end
+
+def fun_l1_n298()
+ fun_l2_n523
+end
+
+def fun_l1_n299()
+ fun_l2_n475
+end
+
+def fun_l1_n300()
+ fun_l2_n0
+end
+
+def fun_l1_n301()
+ fun_l2_n818
+end
+
+def fun_l1_n302()
+ fun_l2_n278
+end
+
+def fun_l1_n303()
+ fun_l2_n420
+end
+
+def fun_l1_n304()
+ fun_l2_n988
+end
+
+def fun_l1_n305()
+ fun_l2_n311
+end
+
+def fun_l1_n306()
+ fun_l2_n258
+end
+
+def fun_l1_n307()
+ fun_l2_n41
+end
+
+def fun_l1_n308()
+ fun_l2_n654
+end
+
+def fun_l1_n309()
+ fun_l2_n1
+end
+
+def fun_l1_n310()
+ fun_l2_n161
+end
+
+def fun_l1_n311()
+ fun_l2_n438
+end
+
+def fun_l1_n312()
+ fun_l2_n615
+end
+
+def fun_l1_n313()
+ fun_l2_n461
+end
+
+def fun_l1_n314()
+ fun_l2_n617
+end
+
+def fun_l1_n315()
+ fun_l2_n589
+end
+
+def fun_l1_n316()
+ fun_l2_n793
+end
+
+def fun_l1_n317()
+ fun_l2_n955
+end
+
+def fun_l1_n318()
+ fun_l2_n570
+end
+
+def fun_l1_n319()
+ fun_l2_n15
+end
+
+def fun_l1_n320()
+ fun_l2_n422
+end
+
+def fun_l1_n321()
+ fun_l2_n736
+end
+
+def fun_l1_n322()
+ fun_l2_n726
+end
+
+def fun_l1_n323()
+ fun_l2_n704
+end
+
+def fun_l1_n324()
+ fun_l2_n141
+end
+
+def fun_l1_n325()
+ fun_l2_n262
+end
+
+def fun_l1_n326()
+ fun_l2_n426
+end
+
+def fun_l1_n327()
+ fun_l2_n525
+end
+
+def fun_l1_n328()
+ fun_l2_n806
+end
+
+def fun_l1_n329()
+ fun_l2_n450
+end
+
+def fun_l1_n330()
+ fun_l2_n326
+end
+
+def fun_l1_n331()
+ fun_l2_n760
+end
+
+def fun_l1_n332()
+ fun_l2_n51
+end
+
+def fun_l1_n333()
+ fun_l2_n456
+end
+
+def fun_l1_n334()
+ fun_l2_n94
+end
+
+def fun_l1_n335()
+ fun_l2_n503
+end
+
+def fun_l1_n336()
+ fun_l2_n499
+end
+
+def fun_l1_n337()
+ fun_l2_n645
+end
+
+def fun_l1_n338()
+ fun_l2_n279
+end
+
+def fun_l1_n339()
+ fun_l2_n665
+end
+
+def fun_l1_n340()
+ fun_l2_n153
+end
+
+def fun_l1_n341()
+ fun_l2_n184
+end
+
+def fun_l1_n342()
+ fun_l2_n630
+end
+
+def fun_l1_n343()
+ fun_l2_n59
+end
+
+def fun_l1_n344()
+ fun_l2_n745
+end
+
+def fun_l1_n345()
+ fun_l2_n310
+end
+
+def fun_l1_n346()
+ fun_l2_n380
+end
+
+def fun_l1_n347()
+ fun_l2_n11
+end
+
+def fun_l1_n348()
+ fun_l2_n424
+end
+
+def fun_l1_n349()
+ fun_l2_n484
+end
+
+def fun_l1_n350()
+ fun_l2_n255
+end
+
+def fun_l1_n351()
+ fun_l2_n350
+end
+
+def fun_l1_n352()
+ fun_l2_n672
+end
+
+def fun_l1_n353()
+ fun_l2_n835
+end
+
+def fun_l1_n354()
+ fun_l2_n380
+end
+
+def fun_l1_n355()
+ fun_l2_n897
+end
+
+def fun_l1_n356()
+ fun_l2_n963
+end
+
+def fun_l1_n357()
+ fun_l2_n16
+end
+
+def fun_l1_n358()
+ fun_l2_n584
+end
+
+def fun_l1_n359()
+ fun_l2_n684
+end
+
+def fun_l1_n360()
+ fun_l2_n582
+end
+
+def fun_l1_n361()
+ fun_l2_n982
+end
+
+def fun_l1_n362()
+ fun_l2_n224
+end
+
+def fun_l1_n363()
+ fun_l2_n143
+end
+
+def fun_l1_n364()
+ fun_l2_n809
+end
+
+def fun_l1_n365()
+ fun_l2_n94
+end
+
+def fun_l1_n366()
+ fun_l2_n643
+end
+
+def fun_l1_n367()
+ fun_l2_n511
+end
+
+def fun_l1_n368()
+ fun_l2_n858
+end
+
+def fun_l1_n369()
+ fun_l2_n649
+end
+
+def fun_l1_n370()
+ fun_l2_n98
+end
+
+def fun_l1_n371()
+ fun_l2_n537
+end
+
+def fun_l1_n372()
+ fun_l2_n418
+end
+
+def fun_l1_n373()
+ fun_l2_n456
+end
+
+def fun_l1_n374()
+ fun_l2_n694
+end
+
+def fun_l1_n375()
+ fun_l2_n37
+end
+
+def fun_l1_n376()
+ fun_l2_n152
+end
+
+def fun_l1_n377()
+ fun_l2_n916
+end
+
+def fun_l1_n378()
+ fun_l2_n926
+end
+
+def fun_l1_n379()
+ fun_l2_n978
+end
+
+def fun_l1_n380()
+ fun_l2_n706
+end
+
+def fun_l1_n381()
+ fun_l2_n666
+end
+
+def fun_l1_n382()
+ fun_l2_n407
+end
+
+def fun_l1_n383()
+ fun_l2_n839
+end
+
+def fun_l1_n384()
+ fun_l2_n936
+end
+
+def fun_l1_n385()
+ fun_l2_n122
+end
+
+def fun_l1_n386()
+ fun_l2_n189
+end
+
+def fun_l1_n387()
+ fun_l2_n799
+end
+
+def fun_l1_n388()
+ fun_l2_n494
+end
+
+def fun_l1_n389()
+ fun_l2_n534
+end
+
+def fun_l1_n390()
+ fun_l2_n986
+end
+
+def fun_l1_n391()
+ fun_l2_n870
+end
+
+def fun_l1_n392()
+ fun_l2_n341
+end
+
+def fun_l1_n393()
+ fun_l2_n251
+end
+
+def fun_l1_n394()
+ fun_l2_n95
+end
+
+def fun_l1_n395()
+ fun_l2_n127
+end
+
+def fun_l1_n396()
+ fun_l2_n496
+end
+
+def fun_l1_n397()
+ fun_l2_n81
+end
+
+def fun_l1_n398()
+ fun_l2_n628
+end
+
+def fun_l1_n399()
+ fun_l2_n212
+end
+
+def fun_l1_n400()
+ fun_l2_n968
+end
+
+def fun_l1_n401()
+ fun_l2_n3
+end
+
+def fun_l1_n402()
+ fun_l2_n266
+end
+
+def fun_l1_n403()
+ fun_l2_n227
+end
+
+def fun_l1_n404()
+ fun_l2_n311
+end
+
+def fun_l1_n405()
+ fun_l2_n977
+end
+
+def fun_l1_n406()
+ fun_l2_n298
+end
+
+def fun_l1_n407()
+ fun_l2_n619
+end
+
+def fun_l1_n408()
+ fun_l2_n11
+end
+
+def fun_l1_n409()
+ fun_l2_n40
+end
+
+def fun_l1_n410()
+ fun_l2_n238
+end
+
+def fun_l1_n411()
+ fun_l2_n378
+end
+
+def fun_l1_n412()
+ fun_l2_n166
+end
+
+def fun_l1_n413()
+ fun_l2_n392
+end
+
+def fun_l1_n414()
+ fun_l2_n374
+end
+
+def fun_l1_n415()
+ fun_l2_n195
+end
+
+def fun_l1_n416()
+ fun_l2_n627
+end
+
+def fun_l1_n417()
+ fun_l2_n795
+end
+
+def fun_l1_n418()
+ fun_l2_n79
+end
+
+def fun_l1_n419()
+ fun_l2_n425
+end
+
+def fun_l1_n420()
+ fun_l2_n733
+end
+
+def fun_l1_n421()
+ fun_l2_n974
+end
+
+def fun_l1_n422()
+ fun_l2_n697
+end
+
+def fun_l1_n423()
+ fun_l2_n997
+end
+
+def fun_l1_n424()
+ fun_l2_n860
+end
+
+def fun_l1_n425()
+ fun_l2_n446
+end
+
+def fun_l1_n426()
+ fun_l2_n250
+end
+
+def fun_l1_n427()
+ fun_l2_n556
+end
+
+def fun_l1_n428()
+ fun_l2_n945
+end
+
+def fun_l1_n429()
+ fun_l2_n307
+end
+
+def fun_l1_n430()
+ fun_l2_n541
+end
+
+def fun_l1_n431()
+ fun_l2_n171
+end
+
+def fun_l1_n432()
+ fun_l2_n859
+end
+
+def fun_l1_n433()
+ fun_l2_n351
+end
+
+def fun_l1_n434()
+ fun_l2_n218
+end
+
+def fun_l1_n435()
+ fun_l2_n456
+end
+
+def fun_l1_n436()
+ fun_l2_n418
+end
+
+def fun_l1_n437()
+ fun_l2_n611
+end
+
+def fun_l1_n438()
+ fun_l2_n797
+end
+
+def fun_l1_n439()
+ fun_l2_n738
+end
+
+def fun_l1_n440()
+ fun_l2_n796
+end
+
+def fun_l1_n441()
+ fun_l2_n978
+end
+
+def fun_l1_n442()
+ fun_l2_n400
+end
+
+def fun_l1_n443()
+ fun_l2_n295
+end
+
+def fun_l1_n444()
+ fun_l2_n749
+end
+
+def fun_l1_n445()
+ fun_l2_n401
+end
+
+def fun_l1_n446()
+ fun_l2_n96
+end
+
+def fun_l1_n447()
+ fun_l2_n134
+end
+
+def fun_l1_n448()
+ fun_l2_n149
+end
+
+def fun_l1_n449()
+ fun_l2_n306
+end
+
+def fun_l1_n450()
+ fun_l2_n125
+end
+
+def fun_l1_n451()
+ fun_l2_n34
+end
+
+def fun_l1_n452()
+ fun_l2_n891
+end
+
+def fun_l1_n453()
+ fun_l2_n260
+end
+
+def fun_l1_n454()
+ fun_l2_n104
+end
+
+def fun_l1_n455()
+ fun_l2_n766
+end
+
+def fun_l1_n456()
+ fun_l2_n246
+end
+
+def fun_l1_n457()
+ fun_l2_n292
+end
+
+def fun_l1_n458()
+ fun_l2_n730
+end
+
+def fun_l1_n459()
+ fun_l2_n536
+end
+
+def fun_l1_n460()
+ fun_l2_n139
+end
+
+def fun_l1_n461()
+ fun_l2_n433
+end
+
+def fun_l1_n462()
+ fun_l2_n983
+end
+
+def fun_l1_n463()
+ fun_l2_n730
+end
+
+def fun_l1_n464()
+ fun_l2_n543
+end
+
+def fun_l1_n465()
+ fun_l2_n499
+end
+
+def fun_l1_n466()
+ fun_l2_n180
+end
+
+def fun_l1_n467()
+ fun_l2_n242
+end
+
+def fun_l1_n468()
+ fun_l2_n351
+end
+
+def fun_l1_n469()
+ fun_l2_n229
+end
+
+def fun_l1_n470()
+ fun_l2_n999
+end
+
+def fun_l1_n471()
+ fun_l2_n261
+end
+
+def fun_l1_n472()
+ fun_l2_n738
+end
+
+def fun_l1_n473()
+ fun_l2_n406
+end
+
+def fun_l1_n474()
+ fun_l2_n672
+end
+
+def fun_l1_n475()
+ fun_l2_n86
+end
+
+def fun_l1_n476()
+ fun_l2_n616
+end
+
+def fun_l1_n477()
+ fun_l2_n555
+end
+
+def fun_l1_n478()
+ fun_l2_n686
+end
+
+def fun_l1_n479()
+ fun_l2_n964
+end
+
+def fun_l1_n480()
+ fun_l2_n171
+end
+
+def fun_l1_n481()
+ fun_l2_n525
+end
+
+def fun_l1_n482()
+ fun_l2_n106
+end
+
+def fun_l1_n483()
+ fun_l2_n992
+end
+
+def fun_l1_n484()
+ fun_l2_n988
+end
+
+def fun_l1_n485()
+ fun_l2_n657
+end
+
+def fun_l1_n486()
+ fun_l2_n464
+end
+
+def fun_l1_n487()
+ fun_l2_n55
+end
+
+def fun_l1_n488()
+ fun_l2_n416
+end
+
+def fun_l1_n489()
+ fun_l2_n582
+end
+
+def fun_l1_n490()
+ fun_l2_n873
+end
+
+def fun_l1_n491()
+ fun_l2_n629
+end
+
+def fun_l1_n492()
+ fun_l2_n156
+end
+
+def fun_l1_n493()
+ fun_l2_n68
+end
+
+def fun_l1_n494()
+ fun_l2_n239
+end
+
+def fun_l1_n495()
+ fun_l2_n319
+end
+
+def fun_l1_n496()
+ fun_l2_n539
+end
+
+def fun_l1_n497()
+ fun_l2_n237
+end
+
+def fun_l1_n498()
+ fun_l2_n241
+end
+
+def fun_l1_n499()
+ fun_l2_n34
+end
+
+def fun_l1_n500()
+ fun_l2_n588
+end
+
+def fun_l1_n501()
+ fun_l2_n540
+end
+
+def fun_l1_n502()
+ fun_l2_n591
+end
+
+def fun_l1_n503()
+ fun_l2_n199
+end
+
+def fun_l1_n504()
+ fun_l2_n265
+end
+
+def fun_l1_n505()
+ fun_l2_n170
+end
+
+def fun_l1_n506()
+ fun_l2_n29
+end
+
+def fun_l1_n507()
+ fun_l2_n741
+end
+
+def fun_l1_n508()
+ fun_l2_n877
+end
+
+def fun_l1_n509()
+ fun_l2_n710
+end
+
+def fun_l1_n510()
+ fun_l2_n197
+end
+
+def fun_l1_n511()
+ fun_l2_n319
+end
+
+def fun_l1_n512()
+ fun_l2_n60
+end
+
+def fun_l1_n513()
+ fun_l2_n753
+end
+
+def fun_l1_n514()
+ fun_l2_n492
+end
+
+def fun_l1_n515()
+ fun_l2_n961
+end
+
+def fun_l1_n516()
+ fun_l2_n227
+end
+
+def fun_l1_n517()
+ fun_l2_n361
+end
+
+def fun_l1_n518()
+ fun_l2_n265
+end
+
+def fun_l1_n519()
+ fun_l2_n392
+end
+
+def fun_l1_n520()
+ fun_l2_n425
+end
+
+def fun_l1_n521()
+ fun_l2_n869
+end
+
+def fun_l1_n522()
+ fun_l2_n859
+end
+
+def fun_l1_n523()
+ fun_l2_n140
+end
+
+def fun_l1_n524()
+ fun_l2_n451
+end
+
+def fun_l1_n525()
+ fun_l2_n274
+end
+
+def fun_l1_n526()
+ fun_l2_n358
+end
+
+def fun_l1_n527()
+ fun_l2_n475
+end
+
+def fun_l1_n528()
+ fun_l2_n948
+end
+
+def fun_l1_n529()
+ fun_l2_n866
+end
+
+def fun_l1_n530()
+ fun_l2_n70
+end
+
+def fun_l1_n531()
+ fun_l2_n756
+end
+
+def fun_l1_n532()
+ fun_l2_n704
+end
+
+def fun_l1_n533()
+ fun_l2_n59
+end
+
+def fun_l1_n534()
+ fun_l2_n174
+end
+
+def fun_l1_n535()
+ fun_l2_n476
+end
+
+def fun_l1_n536()
+ fun_l2_n269
+end
+
+def fun_l1_n537()
+ fun_l2_n897
+end
+
+def fun_l1_n538()
+ fun_l2_n550
+end
+
+def fun_l1_n539()
+ fun_l2_n404
+end
+
+def fun_l1_n540()
+ fun_l2_n167
+end
+
+def fun_l1_n541()
+ fun_l2_n332
+end
+
+def fun_l1_n542()
+ fun_l2_n853
+end
+
+def fun_l1_n543()
+ fun_l2_n621
+end
+
+def fun_l1_n544()
+ fun_l2_n36
+end
+
+def fun_l1_n545()
+ fun_l2_n978
+end
+
+def fun_l1_n546()
+ fun_l2_n295
+end
+
+def fun_l1_n547()
+ fun_l2_n537
+end
+
+def fun_l1_n548()
+ fun_l2_n315
+end
+
+def fun_l1_n549()
+ fun_l2_n944
+end
+
+def fun_l1_n550()
+ fun_l2_n933
+end
+
+def fun_l1_n551()
+ fun_l2_n209
+end
+
+def fun_l1_n552()
+ fun_l2_n524
+end
+
+def fun_l1_n553()
+ fun_l2_n115
+end
+
+def fun_l1_n554()
+ fun_l2_n475
+end
+
+def fun_l1_n555()
+ fun_l2_n417
+end
+
+def fun_l1_n556()
+ fun_l2_n507
+end
+
+def fun_l1_n557()
+ fun_l2_n812
+end
+
+def fun_l1_n558()
+ fun_l2_n261
+end
+
+def fun_l1_n559()
+ fun_l2_n268
+end
+
+def fun_l1_n560()
+ fun_l2_n34
+end
+
+def fun_l1_n561()
+ fun_l2_n774
+end
+
+def fun_l1_n562()
+ fun_l2_n102
+end
+
+def fun_l1_n563()
+ fun_l2_n791
+end
+
+def fun_l1_n564()
+ fun_l2_n760
+end
+
+def fun_l1_n565()
+ fun_l2_n376
+end
+
+def fun_l1_n566()
+ fun_l2_n897
+end
+
+def fun_l1_n567()
+ fun_l2_n456
+end
+
+def fun_l1_n568()
+ fun_l2_n120
+end
+
+def fun_l1_n569()
+ fun_l2_n892
+end
+
+def fun_l1_n570()
+ fun_l2_n948
+end
+
+def fun_l1_n571()
+ fun_l2_n586
+end
+
+def fun_l1_n572()
+ fun_l2_n428
+end
+
+def fun_l1_n573()
+ fun_l2_n182
+end
+
+def fun_l1_n574()
+ fun_l2_n980
+end
+
+def fun_l1_n575()
+ fun_l2_n192
+end
+
+def fun_l1_n576()
+ fun_l2_n440
+end
+
+def fun_l1_n577()
+ fun_l2_n381
+end
+
+def fun_l1_n578()
+ fun_l2_n508
+end
+
+def fun_l1_n579()
+ fun_l2_n560
+end
+
+def fun_l1_n580()
+ fun_l2_n673
+end
+
+def fun_l1_n581()
+ fun_l2_n236
+end
+
+def fun_l1_n582()
+ fun_l2_n936
+end
+
+def fun_l1_n583()
+ fun_l2_n104
+end
+
+def fun_l1_n584()
+ fun_l2_n439
+end
+
+def fun_l1_n585()
+ fun_l2_n844
+end
+
+def fun_l1_n586()
+ fun_l2_n115
+end
+
+def fun_l1_n587()
+ fun_l2_n114
+end
+
+def fun_l1_n588()
+ fun_l2_n963
+end
+
+def fun_l1_n589()
+ fun_l2_n972
+end
+
+def fun_l1_n590()
+ fun_l2_n333
+end
+
+def fun_l1_n591()
+ fun_l2_n624
+end
+
+def fun_l1_n592()
+ fun_l2_n478
+end
+
+def fun_l1_n593()
+ fun_l2_n581
+end
+
+def fun_l1_n594()
+ fun_l2_n199
+end
+
+def fun_l1_n595()
+ fun_l2_n596
+end
+
+def fun_l1_n596()
+ fun_l2_n458
+end
+
+def fun_l1_n597()
+ fun_l2_n729
+end
+
+def fun_l1_n598()
+ fun_l2_n545
+end
+
+def fun_l1_n599()
+ fun_l2_n60
+end
+
+def fun_l1_n600()
+ fun_l2_n801
+end
+
+def fun_l1_n601()
+ fun_l2_n164
+end
+
+def fun_l1_n602()
+ fun_l2_n3
+end
+
+def fun_l1_n603()
+ fun_l2_n334
+end
+
+def fun_l1_n604()
+ fun_l2_n887
+end
+
+def fun_l1_n605()
+ fun_l2_n777
+end
+
+def fun_l1_n606()
+ fun_l2_n765
+end
+
+def fun_l1_n607()
+ fun_l2_n529
+end
+
+def fun_l1_n608()
+ fun_l2_n233
+end
+
+def fun_l1_n609()
+ fun_l2_n164
+end
+
+def fun_l1_n610()
+ fun_l2_n289
+end
+
+def fun_l1_n611()
+ fun_l2_n918
+end
+
+def fun_l1_n612()
+ fun_l2_n13
+end
+
+def fun_l1_n613()
+ fun_l2_n530
+end
+
+def fun_l1_n614()
+ fun_l2_n574
+end
+
+def fun_l1_n615()
+ fun_l2_n383
+end
+
+def fun_l1_n616()
+ fun_l2_n470
+end
+
+def fun_l1_n617()
+ fun_l2_n551
+end
+
+def fun_l1_n618()
+ fun_l2_n539
+end
+
+def fun_l1_n619()
+ fun_l2_n858
+end
+
+def fun_l1_n620()
+ fun_l2_n523
+end
+
+def fun_l1_n621()
+ fun_l2_n439
+end
+
+def fun_l1_n622()
+ fun_l2_n909
+end
+
+def fun_l1_n623()
+ fun_l2_n686
+end
+
+def fun_l1_n624()
+ fun_l2_n133
+end
+
+def fun_l1_n625()
+ fun_l2_n92
+end
+
+def fun_l1_n626()
+ fun_l2_n443
+end
+
+def fun_l1_n627()
+ fun_l2_n682
+end
+
+def fun_l1_n628()
+ fun_l2_n113
+end
+
+def fun_l1_n629()
+ fun_l2_n353
+end
+
+def fun_l1_n630()
+ fun_l2_n631
+end
+
+def fun_l1_n631()
+ fun_l2_n858
+end
+
+def fun_l1_n632()
+ fun_l2_n816
+end
+
+def fun_l1_n633()
+ fun_l2_n683
+end
+
+def fun_l1_n634()
+ fun_l2_n32
+end
+
+def fun_l1_n635()
+ fun_l2_n983
+end
+
+def fun_l1_n636()
+ fun_l2_n587
+end
+
+def fun_l1_n637()
+ fun_l2_n17
+end
+
+def fun_l1_n638()
+ fun_l2_n129
+end
+
+def fun_l1_n639()
+ fun_l2_n166
+end
+
+def fun_l1_n640()
+ fun_l2_n742
+end
+
+def fun_l1_n641()
+ fun_l2_n8
+end
+
+def fun_l1_n642()
+ fun_l2_n119
+end
+
+def fun_l1_n643()
+ fun_l2_n615
+end
+
+def fun_l1_n644()
+ fun_l2_n419
+end
+
+def fun_l1_n645()
+ fun_l2_n324
+end
+
+def fun_l1_n646()
+ fun_l2_n806
+end
+
+def fun_l1_n647()
+ fun_l2_n722
+end
+
+def fun_l1_n648()
+ fun_l2_n462
+end
+
+def fun_l1_n649()
+ fun_l2_n602
+end
+
+def fun_l1_n650()
+ fun_l2_n39
+end
+
+def fun_l1_n651()
+ fun_l2_n53
+end
+
+def fun_l1_n652()
+ fun_l2_n201
+end
+
+def fun_l1_n653()
+ fun_l2_n403
+end
+
+def fun_l1_n654()
+ fun_l2_n595
+end
+
+def fun_l1_n655()
+ fun_l2_n467
+end
+
+def fun_l1_n656()
+ fun_l2_n904
+end
+
+def fun_l1_n657()
+ fun_l2_n429
+end
+
+def fun_l1_n658()
+ fun_l2_n463
+end
+
+def fun_l1_n659()
+ fun_l2_n470
+end
+
+def fun_l1_n660()
+ fun_l2_n0
+end
+
+def fun_l1_n661()
+ fun_l2_n258
+end
+
+def fun_l1_n662()
+ fun_l2_n950
+end
+
+def fun_l1_n663()
+ fun_l2_n953
+end
+
+def fun_l1_n664()
+ fun_l2_n664
+end
+
+def fun_l1_n665()
+ fun_l2_n12
+end
+
+def fun_l1_n666()
+ fun_l2_n317
+end
+
+def fun_l1_n667()
+ fun_l2_n526
+end
+
+def fun_l1_n668()
+ fun_l2_n984
+end
+
+def fun_l1_n669()
+ fun_l2_n273
+end
+
+def fun_l1_n670()
+ fun_l2_n822
+end
+
+def fun_l1_n671()
+ fun_l2_n759
+end
+
+def fun_l1_n672()
+ fun_l2_n927
+end
+
+def fun_l1_n673()
+ fun_l2_n419
+end
+
+def fun_l1_n674()
+ fun_l2_n546
+end
+
+def fun_l1_n675()
+ fun_l2_n879
+end
+
+def fun_l1_n676()
+ fun_l2_n659
+end
+
+def fun_l1_n677()
+ fun_l2_n317
+end
+
+def fun_l1_n678()
+ fun_l2_n234
+end
+
+def fun_l1_n679()
+ fun_l2_n416
+end
+
+def fun_l1_n680()
+ fun_l2_n890
+end
+
+def fun_l1_n681()
+ fun_l2_n401
+end
+
+def fun_l1_n682()
+ fun_l2_n271
+end
+
+def fun_l1_n683()
+ fun_l2_n915
+end
+
+def fun_l1_n684()
+ fun_l2_n666
+end
+
+def fun_l1_n685()
+ fun_l2_n151
+end
+
+def fun_l1_n686()
+ fun_l2_n786
+end
+
+def fun_l1_n687()
+ fun_l2_n82
+end
+
+def fun_l1_n688()
+ fun_l2_n831
+end
+
+def fun_l1_n689()
+ fun_l2_n830
+end
+
+def fun_l1_n690()
+ fun_l2_n221
+end
+
+def fun_l1_n691()
+ fun_l2_n530
+end
+
+def fun_l1_n692()
+ fun_l2_n131
+end
+
+def fun_l1_n693()
+ fun_l2_n17
+end
+
+def fun_l1_n694()
+ fun_l2_n265
+end
+
+def fun_l1_n695()
+ fun_l2_n111
+end
+
+def fun_l1_n696()
+ fun_l2_n39
+end
+
+def fun_l1_n697()
+ fun_l2_n326
+end
+
+def fun_l1_n698()
+ fun_l2_n713
+end
+
+def fun_l1_n699()
+ fun_l2_n960
+end
+
+def fun_l1_n700()
+ fun_l2_n633
+end
+
+def fun_l1_n701()
+ fun_l2_n291
+end
+
+def fun_l1_n702()
+ fun_l2_n746
+end
+
+def fun_l1_n703()
+ fun_l2_n316
+end
+
+def fun_l1_n704()
+ fun_l2_n116
+end
+
+def fun_l1_n705()
+ fun_l2_n195
+end
+
+def fun_l1_n706()
+ fun_l2_n614
+end
+
+def fun_l1_n707()
+ fun_l2_n591
+end
+
+def fun_l1_n708()
+ fun_l2_n879
+end
+
+def fun_l1_n709()
+ fun_l2_n770
+end
+
+def fun_l1_n710()
+ fun_l2_n332
+end
+
+def fun_l1_n711()
+ fun_l2_n696
+end
+
+def fun_l1_n712()
+ fun_l2_n42
+end
+
+def fun_l1_n713()
+ fun_l2_n126
+end
+
+def fun_l1_n714()
+ fun_l2_n486
+end
+
+def fun_l1_n715()
+ fun_l2_n259
+end
+
+def fun_l1_n716()
+ fun_l2_n390
+end
+
+def fun_l1_n717()
+ fun_l2_n590
+end
+
+def fun_l1_n718()
+ fun_l2_n180
+end
+
+def fun_l1_n719()
+ fun_l2_n673
+end
+
+def fun_l1_n720()
+ fun_l2_n565
+end
+
+def fun_l1_n721()
+ fun_l2_n504
+end
+
+def fun_l1_n722()
+ fun_l2_n585
+end
+
+def fun_l1_n723()
+ fun_l2_n746
+end
+
+def fun_l1_n724()
+ fun_l2_n797
+end
+
+def fun_l1_n725()
+ fun_l2_n281
+end
+
+def fun_l1_n726()
+ fun_l2_n670
+end
+
+def fun_l1_n727()
+ fun_l2_n678
+end
+
+def fun_l1_n728()
+ fun_l2_n329
+end
+
+def fun_l1_n729()
+ fun_l2_n581
+end
+
+def fun_l1_n730()
+ fun_l2_n313
+end
+
+def fun_l1_n731()
+ fun_l2_n893
+end
+
+def fun_l1_n732()
+ fun_l2_n773
+end
+
+def fun_l1_n733()
+ fun_l2_n527
+end
+
+def fun_l1_n734()
+ fun_l2_n473
+end
+
+def fun_l1_n735()
+ fun_l2_n242
+end
+
+def fun_l1_n736()
+ fun_l2_n681
+end
+
+def fun_l1_n737()
+ fun_l2_n593
+end
+
+def fun_l1_n738()
+ fun_l2_n214
+end
+
+def fun_l1_n739()
+ fun_l2_n931
+end
+
+def fun_l1_n740()
+ fun_l2_n157
+end
+
+def fun_l1_n741()
+ fun_l2_n207
+end
+
+def fun_l1_n742()
+ fun_l2_n583
+end
+
+def fun_l1_n743()
+ fun_l2_n978
+end
+
+def fun_l1_n744()
+ fun_l2_n220
+end
+
+def fun_l1_n745()
+ fun_l2_n0
+end
+
+def fun_l1_n746()
+ fun_l2_n871
+end
+
+def fun_l1_n747()
+ fun_l2_n344
+end
+
+def fun_l1_n748()
+ fun_l2_n445
+end
+
+def fun_l1_n749()
+ fun_l2_n682
+end
+
+def fun_l1_n750()
+ fun_l2_n553
+end
+
+def fun_l1_n751()
+ fun_l2_n616
+end
+
+def fun_l1_n752()
+ fun_l2_n93
+end
+
+def fun_l1_n753()
+ fun_l2_n297
+end
+
+def fun_l1_n754()
+ fun_l2_n653
+end
+
+def fun_l1_n755()
+ fun_l2_n730
+end
+
+def fun_l1_n756()
+ fun_l2_n375
+end
+
+def fun_l1_n757()
+ fun_l2_n522
+end
+
+def fun_l1_n758()
+ fun_l2_n855
+end
+
+def fun_l1_n759()
+ fun_l2_n727
+end
+
+def fun_l1_n760()
+ fun_l2_n516
+end
+
+def fun_l1_n761()
+ fun_l2_n322
+end
+
+def fun_l1_n762()
+ fun_l2_n84
+end
+
+def fun_l1_n763()
+ fun_l2_n704
+end
+
+def fun_l1_n764()
+ fun_l2_n516
+end
+
+def fun_l1_n765()
+ fun_l2_n97
+end
+
+def fun_l1_n766()
+ fun_l2_n678
+end
+
+def fun_l1_n767()
+ fun_l2_n690
+end
+
+def fun_l1_n768()
+ fun_l2_n704
+end
+
+def fun_l1_n769()
+ fun_l2_n664
+end
+
+def fun_l1_n770()
+ fun_l2_n157
+end
+
+def fun_l1_n771()
+ fun_l2_n24
+end
+
+def fun_l1_n772()
+ fun_l2_n399
+end
+
+def fun_l1_n773()
+ fun_l2_n362
+end
+
+def fun_l1_n774()
+ fun_l2_n687
+end
+
+def fun_l1_n775()
+ fun_l2_n228
+end
+
+def fun_l1_n776()
+ fun_l2_n781
+end
+
+def fun_l1_n777()
+ fun_l2_n112
+end
+
+def fun_l1_n778()
+ fun_l2_n126
+end
+
+def fun_l1_n779()
+ fun_l2_n298
+end
+
+def fun_l1_n780()
+ fun_l2_n779
+end
+
+def fun_l1_n781()
+ fun_l2_n354
+end
+
+def fun_l1_n782()
+ fun_l2_n357
+end
+
+def fun_l1_n783()
+ fun_l2_n814
+end
+
+def fun_l1_n784()
+ fun_l2_n975
+end
+
+def fun_l1_n785()
+ fun_l2_n853
+end
+
+def fun_l1_n786()
+ fun_l2_n58
+end
+
+def fun_l1_n787()
+ fun_l2_n455
+end
+
+def fun_l1_n788()
+ fun_l2_n31
+end
+
+def fun_l1_n789()
+ fun_l2_n621
+end
+
+def fun_l1_n790()
+ fun_l2_n714
+end
+
+def fun_l1_n791()
+ fun_l2_n931
+end
+
+def fun_l1_n792()
+ fun_l2_n511
+end
+
+def fun_l1_n793()
+ fun_l2_n128
+end
+
+def fun_l1_n794()
+ fun_l2_n750
+end
+
+def fun_l1_n795()
+ fun_l2_n121
+end
+
+def fun_l1_n796()
+ fun_l2_n226
+end
+
+def fun_l1_n797()
+ fun_l2_n515
+end
+
+def fun_l1_n798()
+ fun_l2_n8
+end
+
+def fun_l1_n799()
+ fun_l2_n372
+end
+
+def fun_l1_n800()
+ fun_l2_n646
+end
+
+def fun_l1_n801()
+ fun_l2_n722
+end
+
+def fun_l1_n802()
+ fun_l2_n932
+end
+
+def fun_l1_n803()
+ fun_l2_n992
+end
+
+def fun_l1_n804()
+ fun_l2_n628
+end
+
+def fun_l1_n805()
+ fun_l2_n97
+end
+
+def fun_l1_n806()
+ fun_l2_n113
+end
+
+def fun_l1_n807()
+ fun_l2_n249
+end
+
+def fun_l1_n808()
+ fun_l2_n211
+end
+
+def fun_l1_n809()
+ fun_l2_n40
+end
+
+def fun_l1_n810()
+ fun_l2_n608
+end
+
+def fun_l1_n811()
+ fun_l2_n560
+end
+
+def fun_l1_n812()
+ fun_l2_n182
+end
+
+def fun_l1_n813()
+ fun_l2_n7
+end
+
+def fun_l1_n814()
+ fun_l2_n641
+end
+
+def fun_l1_n815()
+ fun_l2_n541
+end
+
+def fun_l1_n816()
+ fun_l2_n951
+end
+
+def fun_l1_n817()
+ fun_l2_n122
+end
+
+def fun_l1_n818()
+ fun_l2_n270
+end
+
+def fun_l1_n819()
+ fun_l2_n631
+end
+
+def fun_l1_n820()
+ fun_l2_n787
+end
+
+def fun_l1_n821()
+ fun_l2_n543
+end
+
+def fun_l1_n822()
+ fun_l2_n599
+end
+
+def fun_l1_n823()
+ fun_l2_n686
+end
+
+def fun_l1_n824()
+ fun_l2_n11
+end
+
+def fun_l1_n825()
+ fun_l2_n379
+end
+
+def fun_l1_n826()
+ fun_l2_n190
+end
+
+def fun_l1_n827()
+ fun_l2_n815
+end
+
+def fun_l1_n828()
+ fun_l2_n117
+end
+
+def fun_l1_n829()
+ fun_l2_n465
+end
+
+def fun_l1_n830()
+ fun_l2_n333
+end
+
+def fun_l1_n831()
+ fun_l2_n928
+end
+
+def fun_l1_n832()
+ fun_l2_n565
+end
+
+def fun_l1_n833()
+ fun_l2_n83
+end
+
+def fun_l1_n834()
+ fun_l2_n364
+end
+
+def fun_l1_n835()
+ fun_l2_n93
+end
+
+def fun_l1_n836()
+ fun_l2_n20
+end
+
+def fun_l1_n837()
+ fun_l2_n223
+end
+
+def fun_l1_n838()
+ fun_l2_n720
+end
+
+def fun_l1_n839()
+ fun_l2_n848
+end
+
+def fun_l1_n840()
+ fun_l2_n228
+end
+
+def fun_l1_n841()
+ fun_l2_n607
+end
+
+def fun_l1_n842()
+ fun_l2_n253
+end
+
+def fun_l1_n843()
+ fun_l2_n426
+end
+
+def fun_l1_n844()
+ fun_l2_n295
+end
+
+def fun_l1_n845()
+ fun_l2_n213
+end
+
+def fun_l1_n846()
+ fun_l2_n991
+end
+
+def fun_l1_n847()
+ fun_l2_n169
+end
+
+def fun_l1_n848()
+ fun_l2_n32
+end
+
+def fun_l1_n849()
+ fun_l2_n495
+end
+
+def fun_l1_n850()
+ fun_l2_n528
+end
+
+def fun_l1_n851()
+ fun_l2_n862
+end
+
+def fun_l1_n852()
+ fun_l2_n712
+end
+
+def fun_l1_n853()
+ fun_l2_n234
+end
+
+def fun_l1_n854()
+ fun_l2_n646
+end
+
+def fun_l1_n855()
+ fun_l2_n720
+end
+
+def fun_l1_n856()
+ fun_l2_n605
+end
+
+def fun_l1_n857()
+ fun_l2_n966
+end
+
+def fun_l1_n858()
+ fun_l2_n68
+end
+
+def fun_l1_n859()
+ fun_l2_n914
+end
+
+def fun_l1_n860()
+ fun_l2_n234
+end
+
+def fun_l1_n861()
+ fun_l2_n410
+end
+
+def fun_l1_n862()
+ fun_l2_n370
+end
+
+def fun_l1_n863()
+ fun_l2_n127
+end
+
+def fun_l1_n864()
+ fun_l2_n187
+end
+
+def fun_l1_n865()
+ fun_l2_n98
+end
+
+def fun_l1_n866()
+ fun_l2_n256
+end
+
+def fun_l1_n867()
+ fun_l2_n747
+end
+
+def fun_l1_n868()
+ fun_l2_n344
+end
+
+def fun_l1_n869()
+ fun_l2_n570
+end
+
+def fun_l1_n870()
+ fun_l2_n552
+end
+
+def fun_l1_n871()
+ fun_l2_n499
+end
+
+def fun_l1_n872()
+ fun_l2_n763
+end
+
+def fun_l1_n873()
+ fun_l2_n35
+end
+
+def fun_l1_n874()
+ fun_l2_n229
+end
+
+def fun_l1_n875()
+ fun_l2_n124
+end
+
+def fun_l1_n876()
+ fun_l2_n258
+end
+
+def fun_l1_n877()
+ fun_l2_n280
+end
+
+def fun_l1_n878()
+ fun_l2_n899
+end
+
+def fun_l1_n879()
+ fun_l2_n211
+end
+
+def fun_l1_n880()
+ fun_l2_n741
+end
+
+def fun_l1_n881()
+ fun_l2_n32
+end
+
+def fun_l1_n882()
+ fun_l2_n212
+end
+
+def fun_l1_n883()
+ fun_l2_n661
+end
+
+def fun_l1_n884()
+ fun_l2_n889
+end
+
+def fun_l1_n885()
+ fun_l2_n975
+end
+
+def fun_l1_n886()
+ fun_l2_n288
+end
+
+def fun_l1_n887()
+ fun_l2_n448
+end
+
+def fun_l1_n888()
+ fun_l2_n520
+end
+
+def fun_l1_n889()
+ fun_l2_n284
+end
+
+def fun_l1_n890()
+ fun_l2_n254
+end
+
+def fun_l1_n891()
+ fun_l2_n703
+end
+
+def fun_l1_n892()
+ fun_l2_n706
+end
+
+def fun_l1_n893()
+ fun_l2_n9
+end
+
+def fun_l1_n894()
+ fun_l2_n717
+end
+
+def fun_l1_n895()
+ fun_l2_n290
+end
+
+def fun_l1_n896()
+ fun_l2_n657
+end
+
+def fun_l1_n897()
+ fun_l2_n452
+end
+
+def fun_l1_n898()
+ fun_l2_n493
+end
+
+def fun_l1_n899()
+ fun_l2_n308
+end
+
+def fun_l1_n900()
+ fun_l2_n781
+end
+
+def fun_l1_n901()
+ fun_l2_n970
+end
+
+def fun_l1_n902()
+ fun_l2_n371
+end
+
+def fun_l1_n903()
+ fun_l2_n195
+end
+
+def fun_l1_n904()
+ fun_l2_n662
+end
+
+def fun_l1_n905()
+ fun_l2_n172
+end
+
+def fun_l1_n906()
+ fun_l2_n579
+end
+
+def fun_l1_n907()
+ fun_l2_n913
+end
+
+def fun_l1_n908()
+ fun_l2_n949
+end
+
+def fun_l1_n909()
+ fun_l2_n386
+end
+
+def fun_l1_n910()
+ fun_l2_n727
+end
+
+def fun_l1_n911()
+ fun_l2_n283
+end
+
+def fun_l1_n912()
+ fun_l2_n136
+end
+
+def fun_l1_n913()
+ fun_l2_n818
+end
+
+def fun_l1_n914()
+ fun_l2_n118
+end
+
+def fun_l1_n915()
+ fun_l2_n366
+end
+
+def fun_l1_n916()
+ fun_l2_n362
+end
+
+def fun_l1_n917()
+ fun_l2_n854
+end
+
+def fun_l1_n918()
+ fun_l2_n272
+end
+
+def fun_l1_n919()
+ fun_l2_n754
+end
+
+def fun_l1_n920()
+ fun_l2_n145
+end
+
+def fun_l1_n921()
+ fun_l2_n631
+end
+
+def fun_l1_n922()
+ fun_l2_n131
+end
+
+def fun_l1_n923()
+ fun_l2_n862
+end
+
+def fun_l1_n924()
+ fun_l2_n930
+end
+
+def fun_l1_n925()
+ fun_l2_n24
+end
+
+def fun_l1_n926()
+ fun_l2_n336
+end
+
+def fun_l1_n927()
+ fun_l2_n438
+end
+
+def fun_l1_n928()
+ fun_l2_n306
+end
+
+def fun_l1_n929()
+ fun_l2_n897
+end
+
+def fun_l1_n930()
+ fun_l2_n186
+end
+
+def fun_l1_n931()
+ fun_l2_n227
+end
+
+def fun_l1_n932()
+ fun_l2_n462
+end
+
+def fun_l1_n933()
+ fun_l2_n224
+end
+
+def fun_l1_n934()
+ fun_l2_n210
+end
+
+def fun_l1_n935()
+ fun_l2_n315
+end
+
+def fun_l1_n936()
+ fun_l2_n850
+end
+
+def fun_l1_n937()
+ fun_l2_n997
+end
+
+def fun_l1_n938()
+ fun_l2_n703
+end
+
+def fun_l1_n939()
+ fun_l2_n635
+end
+
+def fun_l1_n940()
+ fun_l2_n507
+end
+
+def fun_l1_n941()
+ fun_l2_n202
+end
+
+def fun_l1_n942()
+ fun_l2_n319
+end
+
+def fun_l1_n943()
+ fun_l2_n785
+end
+
+def fun_l1_n944()
+ fun_l2_n26
+end
+
+def fun_l1_n945()
+ fun_l2_n777
+end
+
+def fun_l1_n946()
+ fun_l2_n235
+end
+
+def fun_l1_n947()
+ fun_l2_n845
+end
+
+def fun_l1_n948()
+ fun_l2_n515
+end
+
+def fun_l1_n949()
+ fun_l2_n427
+end
+
+def fun_l1_n950()
+ fun_l2_n34
+end
+
+def fun_l1_n951()
+ fun_l2_n905
+end
+
+def fun_l1_n952()
+ fun_l2_n683
+end
+
+def fun_l1_n953()
+ fun_l2_n171
+end
+
+def fun_l1_n954()
+ fun_l2_n593
+end
+
+def fun_l1_n955()
+ fun_l2_n191
+end
+
+def fun_l1_n956()
+ fun_l2_n370
+end
+
+def fun_l1_n957()
+ fun_l2_n911
+end
+
+def fun_l1_n958()
+ fun_l2_n813
+end
+
+def fun_l1_n959()
+ fun_l2_n765
+end
+
+def fun_l1_n960()
+ fun_l2_n434
+end
+
+def fun_l1_n961()
+ fun_l2_n442
+end
+
+def fun_l1_n962()
+ fun_l2_n390
+end
+
+def fun_l1_n963()
+ fun_l2_n549
+end
+
+def fun_l1_n964()
+ fun_l2_n757
+end
+
+def fun_l1_n965()
+ fun_l2_n12
+end
+
+def fun_l1_n966()
+ fun_l2_n456
+end
+
+def fun_l1_n967()
+ fun_l2_n889
+end
+
+def fun_l1_n968()
+ fun_l2_n933
+end
+
+def fun_l1_n969()
+ fun_l2_n695
+end
+
+def fun_l1_n970()
+ fun_l2_n628
+end
+
+def fun_l1_n971()
+ fun_l2_n265
+end
+
+def fun_l1_n972()
+ fun_l2_n634
+end
+
+def fun_l1_n973()
+ fun_l2_n31
+end
+
+def fun_l1_n974()
+ fun_l2_n49
+end
+
+def fun_l1_n975()
+ fun_l2_n872
+end
+
+def fun_l1_n976()
+ fun_l2_n475
+end
+
+def fun_l1_n977()
+ fun_l2_n927
+end
+
+def fun_l1_n978()
+ fun_l2_n459
+end
+
+def fun_l1_n979()
+ fun_l2_n364
+end
+
+def fun_l1_n980()
+ fun_l2_n246
+end
+
+def fun_l1_n981()
+ fun_l2_n693
+end
+
+def fun_l1_n982()
+ fun_l2_n218
+end
+
+def fun_l1_n983()
+ fun_l2_n21
+end
+
+def fun_l1_n984()
+ fun_l2_n967
+end
+
+def fun_l1_n985()
+ fun_l2_n81
+end
+
+def fun_l1_n986()
+ fun_l2_n753
+end
+
+def fun_l1_n987()
+ fun_l2_n386
+end
+
+def fun_l1_n988()
+ fun_l2_n394
+end
+
+def fun_l1_n989()
+ fun_l2_n804
+end
+
+def fun_l1_n990()
+ fun_l2_n55
+end
+
+def fun_l1_n991()
+ fun_l2_n359
+end
+
+def fun_l1_n992()
+ fun_l2_n883
+end
+
+def fun_l1_n993()
+ fun_l2_n404
+end
+
+def fun_l1_n994()
+ fun_l2_n145
+end
+
+def fun_l1_n995()
+ fun_l2_n684
+end
+
+def fun_l1_n996()
+ fun_l2_n38
+end
+
+def fun_l1_n997()
+ fun_l2_n309
+end
+
+def fun_l1_n998()
+ fun_l2_n560
+end
+
+def fun_l1_n999()
+ fun_l2_n95
+end
+
+def fun_l2_n0()
+ fun_l3_n813
+end
+
+def fun_l2_n1()
+ fun_l3_n785
+end
+
+def fun_l2_n2()
+ fun_l3_n218
+end
+
+def fun_l2_n3()
+ fun_l3_n111
+end
+
+def fun_l2_n4()
+ fun_l3_n581
+end
+
+def fun_l2_n5()
+ fun_l3_n873
+end
+
+def fun_l2_n6()
+ fun_l3_n123
+end
+
+def fun_l2_n7()
+ fun_l3_n576
+end
+
+def fun_l2_n8()
+ fun_l3_n543
+end
+
+def fun_l2_n9()
+ fun_l3_n720
+end
+
+def fun_l2_n10()
+ fun_l3_n970
+end
+
+def fun_l2_n11()
+ fun_l3_n663
+end
+
+def fun_l2_n12()
+ fun_l3_n549
+end
+
+def fun_l2_n13()
+ fun_l3_n787
+end
+
+def fun_l2_n14()
+ fun_l3_n15
+end
+
+def fun_l2_n15()
+ fun_l3_n858
+end
+
+def fun_l2_n16()
+ fun_l3_n873
+end
+
+def fun_l2_n17()
+ fun_l3_n482
+end
+
+def fun_l2_n18()
+ fun_l3_n26
+end
+
+def fun_l2_n19()
+ fun_l3_n591
+end
+
+def fun_l2_n20()
+ fun_l3_n879
+end
+
+def fun_l2_n21()
+ fun_l3_n891
+end
+
+def fun_l2_n22()
+ fun_l3_n381
+end
+
+def fun_l2_n23()
+ fun_l3_n504
+end
+
+def fun_l2_n24()
+ fun_l3_n595
+end
+
+def fun_l2_n25()
+ fun_l3_n985
+end
+
+def fun_l2_n26()
+ fun_l3_n77
+end
+
+def fun_l2_n27()
+ fun_l3_n144
+end
+
+def fun_l2_n28()
+ fun_l3_n912
+end
+
+def fun_l2_n29()
+ fun_l3_n1
+end
+
+def fun_l2_n30()
+ fun_l3_n816
+end
+
+def fun_l2_n31()
+ fun_l3_n246
+end
+
+def fun_l2_n32()
+ fun_l3_n599
+end
+
+def fun_l2_n33()
+ fun_l3_n961
+end
+
+def fun_l2_n34()
+ fun_l3_n392
+end
+
+def fun_l2_n35()
+ fun_l3_n437
+end
+
+def fun_l2_n36()
+ fun_l3_n520
+end
+
+def fun_l2_n37()
+ fun_l3_n146
+end
+
+def fun_l2_n38()
+ fun_l3_n186
+end
+
+def fun_l2_n39()
+ fun_l3_n699
+end
+
+def fun_l2_n40()
+ fun_l3_n863
+end
+
+def fun_l2_n41()
+ fun_l3_n539
+end
+
+def fun_l2_n42()
+ fun_l3_n581
+end
+
+def fun_l2_n43()
+ fun_l3_n325
+end
+
+def fun_l2_n44()
+ fun_l3_n604
+end
+
+def fun_l2_n45()
+ fun_l3_n79
+end
+
+def fun_l2_n46()
+ fun_l3_n530
+end
+
+def fun_l2_n47()
+ fun_l3_n344
+end
+
+def fun_l2_n48()
+ fun_l3_n92
+end
+
+def fun_l2_n49()
+ fun_l3_n826
+end
+
+def fun_l2_n50()
+ fun_l3_n283
+end
+
+def fun_l2_n51()
+ fun_l3_n220
+end
+
+def fun_l2_n52()
+ fun_l3_n96
+end
+
+def fun_l2_n53()
+ fun_l3_n647
+end
+
+def fun_l2_n54()
+ fun_l3_n664
+end
+
+def fun_l2_n55()
+ fun_l3_n718
+end
+
+def fun_l2_n56()
+ fun_l3_n281
+end
+
+def fun_l2_n57()
+ fun_l3_n214
+end
+
+def fun_l2_n58()
+ fun_l3_n143
+end
+
+def fun_l2_n59()
+ fun_l3_n423
+end
+
+def fun_l2_n60()
+ fun_l3_n815
+end
+
+def fun_l2_n61()
+ fun_l3_n561
+end
+
+def fun_l2_n62()
+ fun_l3_n634
+end
+
+def fun_l2_n63()
+ fun_l3_n354
+end
+
+def fun_l2_n64()
+ fun_l3_n39
+end
+
+def fun_l2_n65()
+ fun_l3_n704
+end
+
+def fun_l2_n66()
+ fun_l3_n193
+end
+
+def fun_l2_n67()
+ fun_l3_n267
+end
+
+def fun_l2_n68()
+ fun_l3_n225
+end
+
+def fun_l2_n69()
+ fun_l3_n253
+end
+
+def fun_l2_n70()
+ fun_l3_n97
+end
+
+def fun_l2_n71()
+ fun_l3_n312
+end
+
+def fun_l2_n72()
+ fun_l3_n663
+end
+
+def fun_l2_n73()
+ fun_l3_n730
+end
+
+def fun_l2_n74()
+ fun_l3_n31
+end
+
+def fun_l2_n75()
+ fun_l3_n94
+end
+
+def fun_l2_n76()
+ fun_l3_n719
+end
+
+def fun_l2_n77()
+ fun_l3_n72
+end
+
+def fun_l2_n78()
+ fun_l3_n593
+end
+
+def fun_l2_n79()
+ fun_l3_n586
+end
+
+def fun_l2_n80()
+ fun_l3_n477
+end
+
+def fun_l2_n81()
+ fun_l3_n406
+end
+
+def fun_l2_n82()
+ fun_l3_n624
+end
+
+def fun_l2_n83()
+ fun_l3_n127
+end
+
+def fun_l2_n84()
+ fun_l3_n993
+end
+
+def fun_l2_n85()
+ fun_l3_n764
+end
+
+def fun_l2_n86()
+ fun_l3_n892
+end
+
+def fun_l2_n87()
+ fun_l3_n147
+end
+
+def fun_l2_n88()
+ fun_l3_n971
+end
+
+def fun_l2_n89()
+ fun_l3_n239
+end
+
+def fun_l2_n90()
+ fun_l3_n96
+end
+
+def fun_l2_n91()
+ fun_l3_n686
+end
+
+def fun_l2_n92()
+ fun_l3_n388
+end
+
+def fun_l2_n93()
+ fun_l3_n848
+end
+
+def fun_l2_n94()
+ fun_l3_n415
+end
+
+def fun_l2_n95()
+ fun_l3_n155
+end
+
+def fun_l2_n96()
+ fun_l3_n245
+end
+
+def fun_l2_n97()
+ fun_l3_n103
+end
+
+def fun_l2_n98()
+ fun_l3_n591
+end
+
+def fun_l2_n99()
+ fun_l3_n610
+end
+
+def fun_l2_n100()
+ fun_l3_n925
+end
+
+def fun_l2_n101()
+ fun_l3_n435
+end
+
+def fun_l2_n102()
+ fun_l3_n580
+end
+
+def fun_l2_n103()
+ fun_l3_n116
+end
+
+def fun_l2_n104()
+ fun_l3_n160
+end
+
+def fun_l2_n105()
+ fun_l3_n245
+end
+
+def fun_l2_n106()
+ fun_l3_n970
+end
+
+def fun_l2_n107()
+ fun_l3_n540
+end
+
+def fun_l2_n108()
+ fun_l3_n385
+end
+
+def fun_l2_n109()
+ fun_l3_n292
+end
+
+def fun_l2_n110()
+ fun_l3_n785
+end
+
+def fun_l2_n111()
+ fun_l3_n310
+end
+
+def fun_l2_n112()
+ fun_l3_n983
+end
+
+def fun_l2_n113()
+ fun_l3_n378
+end
+
+def fun_l2_n114()
+ fun_l3_n538
+end
+
+def fun_l2_n115()
+ fun_l3_n161
+end
+
+def fun_l2_n116()
+ fun_l3_n537
+end
+
+def fun_l2_n117()
+ fun_l3_n1
+end
+
+def fun_l2_n118()
+ fun_l3_n606
+end
+
+def fun_l2_n119()
+ fun_l3_n377
+end
+
+def fun_l2_n120()
+ fun_l3_n839
+end
+
+def fun_l2_n121()
+ fun_l3_n174
+end
+
+def fun_l2_n122()
+ fun_l3_n709
+end
+
+def fun_l2_n123()
+ fun_l3_n384
+end
+
+def fun_l2_n124()
+ fun_l3_n566
+end
+
+def fun_l2_n125()
+ fun_l3_n329
+end
+
+def fun_l2_n126()
+ fun_l3_n238
+end
+
+def fun_l2_n127()
+ fun_l3_n366
+end
+
+def fun_l2_n128()
+ fun_l3_n443
+end
+
+def fun_l2_n129()
+ fun_l3_n901
+end
+
+def fun_l2_n130()
+ fun_l3_n16
+end
+
+def fun_l2_n131()
+ fun_l3_n959
+end
+
+def fun_l2_n132()
+ fun_l3_n460
+end
+
+def fun_l2_n133()
+ fun_l3_n26
+end
+
+def fun_l2_n134()
+ fun_l3_n552
+end
+
+def fun_l2_n135()
+ fun_l3_n207
+end
+
+def fun_l2_n136()
+ fun_l3_n804
+end
+
+def fun_l2_n137()
+ fun_l3_n178
+end
+
+def fun_l2_n138()
+ fun_l3_n826
+end
+
+def fun_l2_n139()
+ fun_l3_n421
+end
+
+def fun_l2_n140()
+ fun_l3_n101
+end
+
+def fun_l2_n141()
+ fun_l3_n529
+end
+
+def fun_l2_n142()
+ fun_l3_n594
+end
+
+def fun_l2_n143()
+ fun_l3_n977
+end
+
+def fun_l2_n144()
+ fun_l3_n859
+end
+
+def fun_l2_n145()
+ fun_l3_n24
+end
+
+def fun_l2_n146()
+ fun_l3_n806
+end
+
+def fun_l2_n147()
+ fun_l3_n355
+end
+
+def fun_l2_n148()
+ fun_l3_n648
+end
+
+def fun_l2_n149()
+ fun_l3_n554
+end
+
+def fun_l2_n150()
+ fun_l3_n188
+end
+
+def fun_l2_n151()
+ fun_l3_n711
+end
+
+def fun_l2_n152()
+ fun_l3_n574
+end
+
+def fun_l2_n153()
+ fun_l3_n667
+end
+
+def fun_l2_n154()
+ fun_l3_n638
+end
+
+def fun_l2_n155()
+ fun_l3_n283
+end
+
+def fun_l2_n156()
+ fun_l3_n999
+end
+
+def fun_l2_n157()
+ fun_l3_n412
+end
+
+def fun_l2_n158()
+ fun_l3_n621
+end
+
+def fun_l2_n159()
+ fun_l3_n821
+end
+
+def fun_l2_n160()
+ fun_l3_n857
+end
+
+def fun_l2_n161()
+ fun_l3_n73
+end
+
+def fun_l2_n162()
+ fun_l3_n768
+end
+
+def fun_l2_n163()
+ fun_l3_n929
+end
+
+def fun_l2_n164()
+ fun_l3_n205
+end
+
+def fun_l2_n165()
+ fun_l3_n120
+end
+
+def fun_l2_n166()
+ fun_l3_n787
+end
+
+def fun_l2_n167()
+ fun_l3_n69
+end
+
+def fun_l2_n168()
+ fun_l3_n567
+end
+
+def fun_l2_n169()
+ fun_l3_n106
+end
+
+def fun_l2_n170()
+ fun_l3_n751
+end
+
+def fun_l2_n171()
+ fun_l3_n642
+end
+
+def fun_l2_n172()
+ fun_l3_n744
+end
+
+def fun_l2_n173()
+ fun_l3_n730
+end
+
+def fun_l2_n174()
+ fun_l3_n681
+end
+
+def fun_l2_n175()
+ fun_l3_n493
+end
+
+def fun_l2_n176()
+ fun_l3_n773
+end
+
+def fun_l2_n177()
+ fun_l3_n393
+end
+
+def fun_l2_n178()
+ fun_l3_n702
+end
+
+def fun_l2_n179()
+ fun_l3_n353
+end
+
+def fun_l2_n180()
+ fun_l3_n21
+end
+
+def fun_l2_n181()
+ fun_l3_n575
+end
+
+def fun_l2_n182()
+ fun_l3_n975
+end
+
+def fun_l2_n183()
+ fun_l3_n969
+end
+
+def fun_l2_n184()
+ fun_l3_n8
+end
+
+def fun_l2_n185()
+ fun_l3_n81
+end
+
+def fun_l2_n186()
+ fun_l3_n650
+end
+
+def fun_l2_n187()
+ fun_l3_n257
+end
+
+def fun_l2_n188()
+ fun_l3_n443
+end
+
+def fun_l2_n189()
+ fun_l3_n647
+end
+
+def fun_l2_n190()
+ fun_l3_n783
+end
+
+def fun_l2_n191()
+ fun_l3_n447
+end
+
+def fun_l2_n192()
+ fun_l3_n50
+end
+
+def fun_l2_n193()
+ fun_l3_n25
+end
+
+def fun_l2_n194()
+ fun_l3_n646
+end
+
+def fun_l2_n195()
+ fun_l3_n878
+end
+
+def fun_l2_n196()
+ fun_l3_n156
+end
+
+def fun_l2_n197()
+ fun_l3_n999
+end
+
+def fun_l2_n198()
+ fun_l3_n292
+end
+
+def fun_l2_n199()
+ fun_l3_n386
+end
+
+def fun_l2_n200()
+ fun_l3_n3
+end
+
+def fun_l2_n201()
+ fun_l3_n111
+end
+
+def fun_l2_n202()
+ fun_l3_n89
+end
+
+def fun_l2_n203()
+ fun_l3_n628
+end
+
+def fun_l2_n204()
+ fun_l3_n384
+end
+
+def fun_l2_n205()
+ fun_l3_n951
+end
+
+def fun_l2_n206()
+ fun_l3_n662
+end
+
+def fun_l2_n207()
+ fun_l3_n607
+end
+
+def fun_l2_n208()
+ fun_l3_n245
+end
+
+def fun_l2_n209()
+ fun_l3_n875
+end
+
+def fun_l2_n210()
+ fun_l3_n493
+end
+
+def fun_l2_n211()
+ fun_l3_n639
+end
+
+def fun_l2_n212()
+ fun_l3_n257
+end
+
+def fun_l2_n213()
+ fun_l3_n710
+end
+
+def fun_l2_n214()
+ fun_l3_n848
+end
+
+def fun_l2_n215()
+ fun_l3_n86
+end
+
+def fun_l2_n216()
+ fun_l3_n269
+end
+
+def fun_l2_n217()
+ fun_l3_n907
+end
+
+def fun_l2_n218()
+ fun_l3_n491
+end
+
+def fun_l2_n219()
+ fun_l3_n194
+end
+
+def fun_l2_n220()
+ fun_l3_n204
+end
+
+def fun_l2_n221()
+ fun_l3_n647
+end
+
+def fun_l2_n222()
+ fun_l3_n277
+end
+
+def fun_l2_n223()
+ fun_l3_n687
+end
+
+def fun_l2_n224()
+ fun_l3_n438
+end
+
+def fun_l2_n225()
+ fun_l3_n634
+end
+
+def fun_l2_n226()
+ fun_l3_n826
+end
+
+def fun_l2_n227()
+ fun_l3_n702
+end
+
+def fun_l2_n228()
+ fun_l3_n541
+end
+
+def fun_l2_n229()
+ fun_l3_n741
+end
+
+def fun_l2_n230()
+ fun_l3_n886
+end
+
+def fun_l2_n231()
+ fun_l3_n243
+end
+
+def fun_l2_n232()
+ fun_l3_n313
+end
+
+def fun_l2_n233()
+ fun_l3_n499
+end
+
+def fun_l2_n234()
+ fun_l3_n100
+end
+
+def fun_l2_n235()
+ fun_l3_n958
+end
+
+def fun_l2_n236()
+ fun_l3_n192
+end
+
+def fun_l2_n237()
+ fun_l3_n529
+end
+
+def fun_l2_n238()
+ fun_l3_n761
+end
+
+def fun_l2_n239()
+ fun_l3_n558
+end
+
+def fun_l2_n240()
+ fun_l3_n58
+end
+
+def fun_l2_n241()
+ fun_l3_n65
+end
+
+def fun_l2_n242()
+ fun_l3_n685
+end
+
+def fun_l2_n243()
+ fun_l3_n418
+end
+
+def fun_l2_n244()
+ fun_l3_n206
+end
+
+def fun_l2_n245()
+ fun_l3_n147
+end
+
+def fun_l2_n246()
+ fun_l3_n98
+end
+
+def fun_l2_n247()
+ fun_l3_n104
+end
+
+def fun_l2_n248()
+ fun_l3_n336
+end
+
+def fun_l2_n249()
+ fun_l3_n406
+end
+
+def fun_l2_n250()
+ fun_l3_n835
+end
+
+def fun_l2_n251()
+ fun_l3_n611
+end
+
+def fun_l2_n252()
+ fun_l3_n890
+end
+
+def fun_l2_n253()
+ fun_l3_n272
+end
+
+def fun_l2_n254()
+ fun_l3_n962
+end
+
+def fun_l2_n255()
+ fun_l3_n960
+end
+
+def fun_l2_n256()
+ fun_l3_n675
+end
+
+def fun_l2_n257()
+ fun_l3_n161
+end
+
+def fun_l2_n258()
+ fun_l3_n509
+end
+
+def fun_l2_n259()
+ fun_l3_n36
+end
+
+def fun_l2_n260()
+ fun_l3_n381
+end
+
+def fun_l2_n261()
+ fun_l3_n721
+end
+
+def fun_l2_n262()
+ fun_l3_n807
+end
+
+def fun_l2_n263()
+ fun_l3_n424
+end
+
+def fun_l2_n264()
+ fun_l3_n733
+end
+
+def fun_l2_n265()
+ fun_l3_n417
+end
+
+def fun_l2_n266()
+ fun_l3_n630
+end
+
+def fun_l2_n267()
+ fun_l3_n733
+end
+
+def fun_l2_n268()
+ fun_l3_n797
+end
+
+def fun_l2_n269()
+ fun_l3_n446
+end
+
+def fun_l2_n270()
+ fun_l3_n877
+end
+
+def fun_l2_n271()
+ fun_l3_n64
+end
+
+def fun_l2_n272()
+ fun_l3_n553
+end
+
+def fun_l2_n273()
+ fun_l3_n369
+end
+
+def fun_l2_n274()
+ fun_l3_n261
+end
+
+def fun_l2_n275()
+ fun_l3_n244
+end
+
+def fun_l2_n276()
+ fun_l3_n544
+end
+
+def fun_l2_n277()
+ fun_l3_n779
+end
+
+def fun_l2_n278()
+ fun_l3_n864
+end
+
+def fun_l2_n279()
+ fun_l3_n235
+end
+
+def fun_l2_n280()
+ fun_l3_n343
+end
+
+def fun_l2_n281()
+ fun_l3_n601
+end
+
+def fun_l2_n282()
+ fun_l3_n925
+end
+
+def fun_l2_n283()
+ fun_l3_n822
+end
+
+def fun_l2_n284()
+ fun_l3_n675
+end
+
+def fun_l2_n285()
+ fun_l3_n791
+end
+
+def fun_l2_n286()
+ fun_l3_n359
+end
+
+def fun_l2_n287()
+ fun_l3_n596
+end
+
+def fun_l2_n288()
+ fun_l3_n153
+end
+
+def fun_l2_n289()
+ fun_l3_n420
+end
+
+def fun_l2_n290()
+ fun_l3_n464
+end
+
+def fun_l2_n291()
+ fun_l3_n393
+end
+
+def fun_l2_n292()
+ fun_l3_n614
+end
+
+def fun_l2_n293()
+ fun_l3_n449
+end
+
+def fun_l2_n294()
+ fun_l3_n561
+end
+
+def fun_l2_n295()
+ fun_l3_n119
+end
+
+def fun_l2_n296()
+ fun_l3_n82
+end
+
+def fun_l2_n297()
+ fun_l3_n932
+end
+
+def fun_l2_n298()
+ fun_l3_n505
+end
+
+def fun_l2_n299()
+ fun_l3_n664
+end
+
+def fun_l2_n300()
+ fun_l3_n222
+end
+
+def fun_l2_n301()
+ fun_l3_n428
+end
+
+def fun_l2_n302()
+ fun_l3_n975
+end
+
+def fun_l2_n303()
+ fun_l3_n481
+end
+
+def fun_l2_n304()
+ fun_l3_n263
+end
+
+def fun_l2_n305()
+ fun_l3_n816
+end
+
+def fun_l2_n306()
+ fun_l3_n58
+end
+
+def fun_l2_n307()
+ fun_l3_n89
+end
+
+def fun_l2_n308()
+ fun_l3_n509
+end
+
+def fun_l2_n309()
+ fun_l3_n162
+end
+
+def fun_l2_n310()
+ fun_l3_n222
+end
+
+def fun_l2_n311()
+ fun_l3_n999
+end
+
+def fun_l2_n312()
+ fun_l3_n26
+end
+
+def fun_l2_n313()
+ fun_l3_n857
+end
+
+def fun_l2_n314()
+ fun_l3_n485
+end
+
+def fun_l2_n315()
+ fun_l3_n935
+end
+
+def fun_l2_n316()
+ fun_l3_n159
+end
+
+def fun_l2_n317()
+ fun_l3_n987
+end
+
+def fun_l2_n318()
+ fun_l3_n122
+end
+
+def fun_l2_n319()
+ fun_l3_n675
+end
+
+def fun_l2_n320()
+ fun_l3_n88
+end
+
+def fun_l2_n321()
+ fun_l3_n84
+end
+
+def fun_l2_n322()
+ fun_l3_n17
+end
+
+def fun_l2_n323()
+ fun_l3_n859
+end
+
+def fun_l2_n324()
+ fun_l3_n340
+end
+
+def fun_l2_n325()
+ fun_l3_n122
+end
+
+def fun_l2_n326()
+ fun_l3_n675
+end
+
+def fun_l2_n327()
+ fun_l3_n502
+end
+
+def fun_l2_n328()
+ fun_l3_n56
+end
+
+def fun_l2_n329()
+ fun_l3_n398
+end
+
+def fun_l2_n330()
+ fun_l3_n985
+end
+
+def fun_l2_n331()
+ fun_l3_n117
+end
+
+def fun_l2_n332()
+ fun_l3_n264
+end
+
+def fun_l2_n333()
+ fun_l3_n664
+end
+
+def fun_l2_n334()
+ fun_l3_n958
+end
+
+def fun_l2_n335()
+ fun_l3_n495
+end
+
+def fun_l2_n336()
+ fun_l3_n794
+end
+
+def fun_l2_n337()
+ fun_l3_n95
+end
+
+def fun_l2_n338()
+ fun_l3_n202
+end
+
+def fun_l2_n339()
+ fun_l3_n510
+end
+
+def fun_l2_n340()
+ fun_l3_n919
+end
+
+def fun_l2_n341()
+ fun_l3_n602
+end
+
+def fun_l2_n342()
+ fun_l3_n750
+end
+
+def fun_l2_n343()
+ fun_l3_n122
+end
+
+def fun_l2_n344()
+ fun_l3_n358
+end
+
+def fun_l2_n345()
+ fun_l3_n539
+end
+
+def fun_l2_n346()
+ fun_l3_n67
+end
+
+def fun_l2_n347()
+ fun_l3_n881
+end
+
+def fun_l2_n348()
+ fun_l3_n257
+end
+
+def fun_l2_n349()
+ fun_l3_n987
+end
+
+def fun_l2_n350()
+ fun_l3_n482
+end
+
+def fun_l2_n351()
+ fun_l3_n803
+end
+
+def fun_l2_n352()
+ fun_l3_n172
+end
+
+def fun_l2_n353()
+ fun_l3_n826
+end
+
+def fun_l2_n354()
+ fun_l3_n977
+end
+
+def fun_l2_n355()
+ fun_l3_n976
+end
+
+def fun_l2_n356()
+ fun_l3_n970
+end
+
+def fun_l2_n357()
+ fun_l3_n904
+end
+
+def fun_l2_n358()
+ fun_l3_n735
+end
+
+def fun_l2_n359()
+ fun_l3_n146
+end
+
+def fun_l2_n360()
+ fun_l3_n810
+end
+
+def fun_l2_n361()
+ fun_l3_n591
+end
+
+def fun_l2_n362()
+ fun_l3_n882
+end
+
+def fun_l2_n363()
+ fun_l3_n980
+end
+
+def fun_l2_n364()
+ fun_l3_n594
+end
+
+def fun_l2_n365()
+ fun_l3_n431
+end
+
+def fun_l2_n366()
+ fun_l3_n225
+end
+
+def fun_l2_n367()
+ fun_l3_n11
+end
+
+def fun_l2_n368()
+ fun_l3_n283
+end
+
+def fun_l2_n369()
+ fun_l3_n476
+end
+
+def fun_l2_n370()
+ fun_l3_n382
+end
+
+def fun_l2_n371()
+ fun_l3_n422
+end
+
+def fun_l2_n372()
+ fun_l3_n272
+end
+
+def fun_l2_n373()
+ fun_l3_n911
+end
+
+def fun_l2_n374()
+ fun_l3_n282
+end
+
+def fun_l2_n375()
+ fun_l3_n388
+end
+
+def fun_l2_n376()
+ fun_l3_n928
+end
+
+def fun_l2_n377()
+ fun_l3_n784
+end
+
+def fun_l2_n378()
+ fun_l3_n817
+end
+
+def fun_l2_n379()
+ fun_l3_n799
+end
+
+def fun_l2_n380()
+ fun_l3_n538
+end
+
+def fun_l2_n381()
+ fun_l3_n24
+end
+
+def fun_l2_n382()
+ fun_l3_n726
+end
+
+def fun_l2_n383()
+ fun_l3_n213
+end
+
+def fun_l2_n384()
+ fun_l3_n15
+end
+
+def fun_l2_n385()
+ fun_l3_n915
+end
+
+def fun_l2_n386()
+ fun_l3_n357
+end
+
+def fun_l2_n387()
+ fun_l3_n343
+end
+
+def fun_l2_n388()
+ fun_l3_n258
+end
+
+def fun_l2_n389()
+ fun_l3_n396
+end
+
+def fun_l2_n390()
+ fun_l3_n478
+end
+
+def fun_l2_n391()
+ fun_l3_n122
+end
+
+def fun_l2_n392()
+ fun_l3_n925
+end
+
+def fun_l2_n393()
+ fun_l3_n6
+end
+
+def fun_l2_n394()
+ fun_l3_n251
+end
+
+def fun_l2_n395()
+ fun_l3_n21
+end
+
+def fun_l2_n396()
+ fun_l3_n781
+end
+
+def fun_l2_n397()
+ fun_l3_n765
+end
+
+def fun_l2_n398()
+ fun_l3_n574
+end
+
+def fun_l2_n399()
+ fun_l3_n347
+end
+
+def fun_l2_n400()
+ fun_l3_n409
+end
+
+def fun_l2_n401()
+ fun_l3_n343
+end
+
+def fun_l2_n402()
+ fun_l3_n580
+end
+
+def fun_l2_n403()
+ fun_l3_n878
+end
+
+def fun_l2_n404()
+ fun_l3_n150
+end
+
+def fun_l2_n405()
+ fun_l3_n900
+end
+
+def fun_l2_n406()
+ fun_l3_n19
+end
+
+def fun_l2_n407()
+ fun_l3_n671
+end
+
+def fun_l2_n408()
+ fun_l3_n714
+end
+
+def fun_l2_n409()
+ fun_l3_n865
+end
+
+def fun_l2_n410()
+ fun_l3_n634
+end
+
+def fun_l2_n411()
+ fun_l3_n780
+end
+
+def fun_l2_n412()
+ fun_l3_n404
+end
+
+def fun_l2_n413()
+ fun_l3_n506
+end
+
+def fun_l2_n414()
+ fun_l3_n503
+end
+
+def fun_l2_n415()
+ fun_l3_n120
+end
+
+def fun_l2_n416()
+ fun_l3_n603
+end
+
+def fun_l2_n417()
+ fun_l3_n263
+end
+
+def fun_l2_n418()
+ fun_l3_n142
+end
+
+def fun_l2_n419()
+ fun_l3_n174
+end
+
+def fun_l2_n420()
+ fun_l3_n474
+end
+
+def fun_l2_n421()
+ fun_l3_n980
+end
+
+def fun_l2_n422()
+ fun_l3_n302
+end
+
+def fun_l2_n423()
+ fun_l3_n850
+end
+
+def fun_l2_n424()
+ fun_l3_n395
+end
+
+def fun_l2_n425()
+ fun_l3_n49
+end
+
+def fun_l2_n426()
+ fun_l3_n732
+end
+
+def fun_l2_n427()
+ fun_l3_n473
+end
+
+def fun_l2_n428()
+ fun_l3_n906
+end
+
+def fun_l2_n429()
+ fun_l3_n120
+end
+
+def fun_l2_n430()
+ fun_l3_n818
+end
+
+def fun_l2_n431()
+ fun_l3_n177
+end
+
+def fun_l2_n432()
+ fun_l3_n47
+end
+
+def fun_l2_n433()
+ fun_l3_n423
+end
+
+def fun_l2_n434()
+ fun_l3_n435
+end
+
+def fun_l2_n435()
+ fun_l3_n748
+end
+
+def fun_l2_n436()
+ fun_l3_n953
+end
+
+def fun_l2_n437()
+ fun_l3_n78
+end
+
+def fun_l2_n438()
+ fun_l3_n184
+end
+
+def fun_l2_n439()
+ fun_l3_n533
+end
+
+def fun_l2_n440()
+ fun_l3_n184
+end
+
+def fun_l2_n441()
+ fun_l3_n698
+end
+
+def fun_l2_n442()
+ fun_l3_n752
+end
+
+def fun_l2_n443()
+ fun_l3_n448
+end
+
+def fun_l2_n444()
+ fun_l3_n307
+end
+
+def fun_l2_n445()
+ fun_l3_n333
+end
+
+def fun_l2_n446()
+ fun_l3_n237
+end
+
+def fun_l2_n447()
+ fun_l3_n550
+end
+
+def fun_l2_n448()
+ fun_l3_n951
+end
+
+def fun_l2_n449()
+ fun_l3_n341
+end
+
+def fun_l2_n450()
+ fun_l3_n188
+end
+
+def fun_l2_n451()
+ fun_l3_n505
+end
+
+def fun_l2_n452()
+ fun_l3_n779
+end
+
+def fun_l2_n453()
+ fun_l3_n368
+end
+
+def fun_l2_n454()
+ fun_l3_n191
+end
+
+def fun_l2_n455()
+ fun_l3_n952
+end
+
+def fun_l2_n456()
+ fun_l3_n472
+end
+
+def fun_l2_n457()
+ fun_l3_n294
+end
+
+def fun_l2_n458()
+ fun_l3_n280
+end
+
+def fun_l2_n459()
+ fun_l3_n794
+end
+
+def fun_l2_n460()
+ fun_l3_n780
+end
+
+def fun_l2_n461()
+ fun_l3_n527
+end
+
+def fun_l2_n462()
+ fun_l3_n129
+end
+
+def fun_l2_n463()
+ fun_l3_n365
+end
+
+def fun_l2_n464()
+ fun_l3_n898
+end
+
+def fun_l2_n465()
+ fun_l3_n932
+end
+
+def fun_l2_n466()
+ fun_l3_n616
+end
+
+def fun_l2_n467()
+ fun_l3_n828
+end
+
+def fun_l2_n468()
+ fun_l3_n660
+end
+
+def fun_l2_n469()
+ fun_l3_n255
+end
+
+def fun_l2_n470()
+ fun_l3_n845
+end
+
+def fun_l2_n471()
+ fun_l3_n347
+end
+
+def fun_l2_n472()
+ fun_l3_n154
+end
+
+def fun_l2_n473()
+ fun_l3_n349
+end
+
+def fun_l2_n474()
+ fun_l3_n276
+end
+
+def fun_l2_n475()
+ fun_l3_n962
+end
+
+def fun_l2_n476()
+ fun_l3_n195
+end
+
+def fun_l2_n477()
+ fun_l3_n648
+end
+
+def fun_l2_n478()
+ fun_l3_n692
+end
+
+def fun_l2_n479()
+ fun_l3_n294
+end
+
+def fun_l2_n480()
+ fun_l3_n144
+end
+
+def fun_l2_n481()
+ fun_l3_n702
+end
+
+def fun_l2_n482()
+ fun_l3_n110
+end
+
+def fun_l2_n483()
+ fun_l3_n169
+end
+
+def fun_l2_n484()
+ fun_l3_n140
+end
+
+def fun_l2_n485()
+ fun_l3_n614
+end
+
+def fun_l2_n486()
+ fun_l3_n309
+end
+
+def fun_l2_n487()
+ fun_l3_n792
+end
+
+def fun_l2_n488()
+ fun_l3_n465
+end
+
+def fun_l2_n489()
+ fun_l3_n892
+end
+
+def fun_l2_n490()
+ fun_l3_n205
+end
+
+def fun_l2_n491()
+ fun_l3_n267
+end
+
+def fun_l2_n492()
+ fun_l3_n743
+end
+
+def fun_l2_n493()
+ fun_l3_n669
+end
+
+def fun_l2_n494()
+ fun_l3_n882
+end
+
+def fun_l2_n495()
+ fun_l3_n654
+end
+
+def fun_l2_n496()
+ fun_l3_n885
+end
+
+def fun_l2_n497()
+ fun_l3_n955
+end
+
+def fun_l2_n498()
+ fun_l3_n251
+end
+
+def fun_l2_n499()
+ fun_l3_n521
+end
+
+def fun_l2_n500()
+ fun_l3_n484
+end
+
+def fun_l2_n501()
+ fun_l3_n525
+end
+
+def fun_l2_n502()
+ fun_l3_n493
+end
+
+def fun_l2_n503()
+ fun_l3_n161
+end
+
+def fun_l2_n504()
+ fun_l3_n447
+end
+
+def fun_l2_n505()
+ fun_l3_n339
+end
+
+def fun_l2_n506()
+ fun_l3_n946
+end
+
+def fun_l2_n507()
+ fun_l3_n564
+end
+
+def fun_l2_n508()
+ fun_l3_n586
+end
+
+def fun_l2_n509()
+ fun_l3_n345
+end
+
+def fun_l2_n510()
+ fun_l3_n814
+end
+
+def fun_l2_n511()
+ fun_l3_n946
+end
+
+def fun_l2_n512()
+ fun_l3_n629
+end
+
+def fun_l2_n513()
+ fun_l3_n726
+end
+
+def fun_l2_n514()
+ fun_l3_n91
+end
+
+def fun_l2_n515()
+ fun_l3_n393
+end
+
+def fun_l2_n516()
+ fun_l3_n620
+end
+
+def fun_l2_n517()
+ fun_l3_n907
+end
+
+def fun_l2_n518()
+ fun_l3_n911
+end
+
+def fun_l2_n519()
+ fun_l3_n361
+end
+
+def fun_l2_n520()
+ fun_l3_n420
+end
+
+def fun_l2_n521()
+ fun_l3_n479
+end
+
+def fun_l2_n522()
+ fun_l3_n686
+end
+
+def fun_l2_n523()
+ fun_l3_n888
+end
+
+def fun_l2_n524()
+ fun_l3_n141
+end
+
+def fun_l2_n525()
+ fun_l3_n830
+end
+
+def fun_l2_n526()
+ fun_l3_n681
+end
+
+def fun_l2_n527()
+ fun_l3_n58
+end
+
+def fun_l2_n528()
+ fun_l3_n835
+end
+
+def fun_l2_n529()
+ fun_l3_n390
+end
+
+def fun_l2_n530()
+ fun_l3_n930
+end
+
+def fun_l2_n531()
+ fun_l3_n569
+end
+
+def fun_l2_n532()
+ fun_l3_n943
+end
+
+def fun_l2_n533()
+ fun_l3_n888
+end
+
+def fun_l2_n534()
+ fun_l3_n220
+end
+
+def fun_l2_n535()
+ fun_l3_n809
+end
+
+def fun_l2_n536()
+ fun_l3_n382
+end
+
+def fun_l2_n537()
+ fun_l3_n356
+end
+
+def fun_l2_n538()
+ fun_l3_n912
+end
+
+def fun_l2_n539()
+ fun_l3_n151
+end
+
+def fun_l2_n540()
+ fun_l3_n740
+end
+
+def fun_l2_n541()
+ fun_l3_n925
+end
+
+def fun_l2_n542()
+ fun_l3_n776
+end
+
+def fun_l2_n543()
+ fun_l3_n4
+end
+
+def fun_l2_n544()
+ fun_l3_n549
+end
+
+def fun_l2_n545()
+ fun_l3_n220
+end
+
+def fun_l2_n546()
+ fun_l3_n932
+end
+
+def fun_l2_n547()
+ fun_l3_n267
+end
+
+def fun_l2_n548()
+ fun_l3_n646
+end
+
+def fun_l2_n549()
+ fun_l3_n217
+end
+
+def fun_l2_n550()
+ fun_l3_n217
+end
+
+def fun_l2_n551()
+ fun_l3_n197
+end
+
+def fun_l2_n552()
+ fun_l3_n419
+end
+
+def fun_l2_n553()
+ fun_l3_n232
+end
+
+def fun_l2_n554()
+ fun_l3_n327
+end
+
+def fun_l2_n555()
+ fun_l3_n201
+end
+
+def fun_l2_n556()
+ fun_l3_n567
+end
+
+def fun_l2_n557()
+ fun_l3_n870
+end
+
+def fun_l2_n558()
+ fun_l3_n222
+end
+
+def fun_l2_n559()
+ fun_l3_n792
+end
+
+def fun_l2_n560()
+ fun_l3_n157
+end
+
+def fun_l2_n561()
+ fun_l3_n870
+end
+
+def fun_l2_n562()
+ fun_l3_n564
+end
+
+def fun_l2_n563()
+ fun_l3_n571
+end
+
+def fun_l2_n564()
+ fun_l3_n211
+end
+
+def fun_l2_n565()
+ fun_l3_n657
+end
+
+def fun_l2_n566()
+ fun_l3_n869
+end
+
+def fun_l2_n567()
+ fun_l3_n288
+end
+
+def fun_l2_n568()
+ fun_l3_n736
+end
+
+def fun_l2_n569()
+ fun_l3_n273
+end
+
+def fun_l2_n570()
+ fun_l3_n194
+end
+
+def fun_l2_n571()
+ fun_l3_n435
+end
+
+def fun_l2_n572()
+ fun_l3_n775
+end
+
+def fun_l2_n573()
+ fun_l3_n342
+end
+
+def fun_l2_n574()
+ fun_l3_n843
+end
+
+def fun_l2_n575()
+ fun_l3_n585
+end
+
+def fun_l2_n576()
+ fun_l3_n518
+end
+
+def fun_l2_n577()
+ fun_l3_n524
+end
+
+def fun_l2_n578()
+ fun_l3_n457
+end
+
+def fun_l2_n579()
+ fun_l3_n905
+end
+
+def fun_l2_n580()
+ fun_l3_n346
+end
+
+def fun_l2_n581()
+ fun_l3_n412
+end
+
+def fun_l2_n582()
+ fun_l3_n970
+end
+
+def fun_l2_n583()
+ fun_l3_n648
+end
+
+def fun_l2_n584()
+ fun_l3_n870
+end
+
+def fun_l2_n585()
+ fun_l3_n783
+end
+
+def fun_l2_n586()
+ fun_l3_n856
+end
+
+def fun_l2_n587()
+ fun_l3_n708
+end
+
+def fun_l2_n588()
+ fun_l3_n473
+end
+
+def fun_l2_n589()
+ fun_l3_n277
+end
+
+def fun_l2_n590()
+ fun_l3_n112
+end
+
+def fun_l2_n591()
+ fun_l3_n785
+end
+
+def fun_l2_n592()
+ fun_l3_n283
+end
+
+def fun_l2_n593()
+ fun_l3_n720
+end
+
+def fun_l2_n594()
+ fun_l3_n195
+end
+
+def fun_l2_n595()
+ fun_l3_n923
+end
+
+def fun_l2_n596()
+ fun_l3_n306
+end
+
+def fun_l2_n597()
+ fun_l3_n108
+end
+
+def fun_l2_n598()
+ fun_l3_n615
+end
+
+def fun_l2_n599()
+ fun_l3_n135
+end
+
+def fun_l2_n600()
+ fun_l3_n710
+end
+
+def fun_l2_n601()
+ fun_l3_n722
+end
+
+def fun_l2_n602()
+ fun_l3_n943
+end
+
+def fun_l2_n603()
+ fun_l3_n626
+end
+
+def fun_l2_n604()
+ fun_l3_n702
+end
+
+def fun_l2_n605()
+ fun_l3_n812
+end
+
+def fun_l2_n606()
+ fun_l3_n551
+end
+
+def fun_l2_n607()
+ fun_l3_n497
+end
+
+def fun_l2_n608()
+ fun_l3_n123
+end
+
+def fun_l2_n609()
+ fun_l3_n302
+end
+
+def fun_l2_n610()
+ fun_l3_n850
+end
+
+def fun_l2_n611()
+ fun_l3_n327
+end
+
+def fun_l2_n612()
+ fun_l3_n529
+end
+
+def fun_l2_n613()
+ fun_l3_n441
+end
+
+def fun_l2_n614()
+ fun_l3_n26
+end
+
+def fun_l2_n615()
+ fun_l3_n275
+end
+
+def fun_l2_n616()
+ fun_l3_n211
+end
+
+def fun_l2_n617()
+ fun_l3_n253
+end
+
+def fun_l2_n618()
+ fun_l3_n767
+end
+
+def fun_l2_n619()
+ fun_l3_n601
+end
+
+def fun_l2_n620()
+ fun_l3_n350
+end
+
+def fun_l2_n621()
+ fun_l3_n407
+end
+
+def fun_l2_n622()
+ fun_l3_n12
+end
+
+def fun_l2_n623()
+ fun_l3_n378
+end
+
+def fun_l2_n624()
+ fun_l3_n159
+end
+
+def fun_l2_n625()
+ fun_l3_n521
+end
+
+def fun_l2_n626()
+ fun_l3_n657
+end
+
+def fun_l2_n627()
+ fun_l3_n997
+end
+
+def fun_l2_n628()
+ fun_l3_n504
+end
+
+def fun_l2_n629()
+ fun_l3_n177
+end
+
+def fun_l2_n630()
+ fun_l3_n352
+end
+
+def fun_l2_n631()
+ fun_l3_n579
+end
+
+def fun_l2_n632()
+ fun_l3_n607
+end
+
+def fun_l2_n633()
+ fun_l3_n430
+end
+
+def fun_l2_n634()
+ fun_l3_n437
+end
+
+def fun_l2_n635()
+ fun_l3_n495
+end
+
+def fun_l2_n636()
+ fun_l3_n247
+end
+
+def fun_l2_n637()
+ fun_l3_n68
+end
+
+def fun_l2_n638()
+ fun_l3_n815
+end
+
+def fun_l2_n639()
+ fun_l3_n477
+end
+
+def fun_l2_n640()
+ fun_l3_n894
+end
+
+def fun_l2_n641()
+ fun_l3_n804
+end
+
+def fun_l2_n642()
+ fun_l3_n198
+end
+
+def fun_l2_n643()
+ fun_l3_n676
+end
+
+def fun_l2_n644()
+ fun_l3_n306
+end
+
+def fun_l2_n645()
+ fun_l3_n545
+end
+
+def fun_l2_n646()
+ fun_l3_n519
+end
+
+def fun_l2_n647()
+ fun_l3_n328
+end
+
+def fun_l2_n648()
+ fun_l3_n654
+end
+
+def fun_l2_n649()
+ fun_l3_n879
+end
+
+def fun_l2_n650()
+ fun_l3_n224
+end
+
+def fun_l2_n651()
+ fun_l3_n826
+end
+
+def fun_l2_n652()
+ fun_l3_n976
+end
+
+def fun_l2_n653()
+ fun_l3_n287
+end
+
+def fun_l2_n654()
+ fun_l3_n471
+end
+
+def fun_l2_n655()
+ fun_l3_n738
+end
+
+def fun_l2_n656()
+ fun_l3_n545
+end
+
+def fun_l2_n657()
+ fun_l3_n819
+end
+
+def fun_l2_n658()
+ fun_l3_n866
+end
+
+def fun_l2_n659()
+ fun_l3_n215
+end
+
+def fun_l2_n660()
+ fun_l3_n656
+end
+
+def fun_l2_n661()
+ fun_l3_n519
+end
+
+def fun_l2_n662()
+ fun_l3_n812
+end
+
+def fun_l2_n663()
+ fun_l3_n241
+end
+
+def fun_l2_n664()
+ fun_l3_n245
+end
+
+def fun_l2_n665()
+ fun_l3_n60
+end
+
+def fun_l2_n666()
+ fun_l3_n516
+end
+
+def fun_l2_n667()
+ fun_l3_n264
+end
+
+def fun_l2_n668()
+ fun_l3_n254
+end
+
+def fun_l2_n669()
+ fun_l3_n952
+end
+
+def fun_l2_n670()
+ fun_l3_n928
+end
+
+def fun_l2_n671()
+ fun_l3_n718
+end
+
+def fun_l2_n672()
+ fun_l3_n937
+end
+
+def fun_l2_n673()
+ fun_l3_n549
+end
+
+def fun_l2_n674()
+ fun_l3_n138
+end
+
+def fun_l2_n675()
+ fun_l3_n441
+end
+
+def fun_l2_n676()
+ fun_l3_n641
+end
+
+def fun_l2_n677()
+ fun_l3_n611
+end
+
+def fun_l2_n678()
+ fun_l3_n711
+end
+
+def fun_l2_n679()
+ fun_l3_n60
+end
+
+def fun_l2_n680()
+ fun_l3_n894
+end
+
+def fun_l2_n681()
+ fun_l3_n957
+end
+
+def fun_l2_n682()
+ fun_l3_n516
+end
+
+def fun_l2_n683()
+ fun_l3_n348
+end
+
+def fun_l2_n684()
+ fun_l3_n600
+end
+
+def fun_l2_n685()
+ fun_l3_n955
+end
+
+def fun_l2_n686()
+ fun_l3_n842
+end
+
+def fun_l2_n687()
+ fun_l3_n126
+end
+
+def fun_l2_n688()
+ fun_l3_n739
+end
+
+def fun_l2_n689()
+ fun_l3_n435
+end
+
+def fun_l2_n690()
+ fun_l3_n445
+end
+
+def fun_l2_n691()
+ fun_l3_n973
+end
+
+def fun_l2_n692()
+ fun_l3_n54
+end
+
+def fun_l2_n693()
+ fun_l3_n629
+end
+
+def fun_l2_n694()
+ fun_l3_n83
+end
+
+def fun_l2_n695()
+ fun_l3_n887
+end
+
+def fun_l2_n696()
+ fun_l3_n552
+end
+
+def fun_l2_n697()
+ fun_l3_n263
+end
+
+def fun_l2_n698()
+ fun_l3_n532
+end
+
+def fun_l2_n699()
+ fun_l3_n462
+end
+
+def fun_l2_n700()
+ fun_l3_n319
+end
+
+def fun_l2_n701()
+ fun_l3_n464
+end
+
+def fun_l2_n702()
+ fun_l3_n340
+end
+
+def fun_l2_n703()
+ fun_l3_n188
+end
+
+def fun_l2_n704()
+ fun_l3_n157
+end
+
+def fun_l2_n705()
+ fun_l3_n345
+end
+
+def fun_l2_n706()
+ fun_l3_n637
+end
+
+def fun_l2_n707()
+ fun_l3_n157
+end
+
+def fun_l2_n708()
+ fun_l3_n270
+end
+
+def fun_l2_n709()
+ fun_l3_n13
+end
+
+def fun_l2_n710()
+ fun_l3_n360
+end
+
+def fun_l2_n711()
+ fun_l3_n890
+end
+
+def fun_l2_n712()
+ fun_l3_n539
+end
+
+def fun_l2_n713()
+ fun_l3_n582
+end
+
+def fun_l2_n714()
+ fun_l3_n466
+end
+
+def fun_l2_n715()
+ fun_l3_n623
+end
+
+def fun_l2_n716()
+ fun_l3_n995
+end
+
+def fun_l2_n717()
+ fun_l3_n810
+end
+
+def fun_l2_n718()
+ fun_l3_n95
+end
+
+def fun_l2_n719()
+ fun_l3_n103
+end
+
+def fun_l2_n720()
+ fun_l3_n755
+end
+
+def fun_l2_n721()
+ fun_l3_n858
+end
+
+def fun_l2_n722()
+ fun_l3_n519
+end
+
+def fun_l2_n723()
+ fun_l3_n489
+end
+
+def fun_l2_n724()
+ fun_l3_n578
+end
+
+def fun_l2_n725()
+ fun_l3_n176
+end
+
+def fun_l2_n726()
+ fun_l3_n58
+end
+
+def fun_l2_n727()
+ fun_l3_n817
+end
+
+def fun_l2_n728()
+ fun_l3_n612
+end
+
+def fun_l2_n729()
+ fun_l3_n510
+end
+
+def fun_l2_n730()
+ fun_l3_n934
+end
+
+def fun_l2_n731()
+ fun_l3_n691
+end
+
+def fun_l2_n732()
+ fun_l3_n697
+end
+
+def fun_l2_n733()
+ fun_l3_n667
+end
+
+def fun_l2_n734()
+ fun_l3_n49
+end
+
+def fun_l2_n735()
+ fun_l3_n113
+end
+
+def fun_l2_n736()
+ fun_l3_n157
+end
+
+def fun_l2_n737()
+ fun_l3_n756
+end
+
+def fun_l2_n738()
+ fun_l3_n888
+end
+
+def fun_l2_n739()
+ fun_l3_n847
+end
+
+def fun_l2_n740()
+ fun_l3_n693
+end
+
+def fun_l2_n741()
+ fun_l3_n116
+end
+
+def fun_l2_n742()
+ fun_l3_n95
+end
+
+def fun_l2_n743()
+ fun_l3_n662
+end
+
+def fun_l2_n744()
+ fun_l3_n744
+end
+
+def fun_l2_n745()
+ fun_l3_n800
+end
+
+def fun_l2_n746()
+ fun_l3_n732
+end
+
+def fun_l2_n747()
+ fun_l3_n278
+end
+
+def fun_l2_n748()
+ fun_l3_n441
+end
+
+def fun_l2_n749()
+ fun_l3_n838
+end
+
+def fun_l2_n750()
+ fun_l3_n616
+end
+
+def fun_l2_n751()
+ fun_l3_n438
+end
+
+def fun_l2_n752()
+ fun_l3_n271
+end
+
+def fun_l2_n753()
+ fun_l3_n527
+end
+
+def fun_l2_n754()
+ fun_l3_n568
+end
+
+def fun_l2_n755()
+ fun_l3_n584
+end
+
+def fun_l2_n756()
+ fun_l3_n514
+end
+
+def fun_l2_n757()
+ fun_l3_n599
+end
+
+def fun_l2_n758()
+ fun_l3_n878
+end
+
+def fun_l2_n759()
+ fun_l3_n314
+end
+
+def fun_l2_n760()
+ fun_l3_n277
+end
+
+def fun_l2_n761()
+ fun_l3_n296
+end
+
+def fun_l2_n762()
+ fun_l3_n729
+end
+
+def fun_l2_n763()
+ fun_l3_n192
+end
+
+def fun_l2_n764()
+ fun_l3_n549
+end
+
+def fun_l2_n765()
+ fun_l3_n304
+end
+
+def fun_l2_n766()
+ fun_l3_n133
+end
+
+def fun_l2_n767()
+ fun_l3_n678
+end
+
+def fun_l2_n768()
+ fun_l3_n608
+end
+
+def fun_l2_n769()
+ fun_l3_n830
+end
+
+def fun_l2_n770()
+ fun_l3_n419
+end
+
+def fun_l2_n771()
+ fun_l3_n174
+end
+
+def fun_l2_n772()
+ fun_l3_n806
+end
+
+def fun_l2_n773()
+ fun_l3_n257
+end
+
+def fun_l2_n774()
+ fun_l3_n203
+end
+
+def fun_l2_n775()
+ fun_l3_n572
+end
+
+def fun_l2_n776()
+ fun_l3_n665
+end
+
+def fun_l2_n777()
+ fun_l3_n417
+end
+
+def fun_l2_n778()
+ fun_l3_n44
+end
+
+def fun_l2_n779()
+ fun_l3_n202
+end
+
+def fun_l2_n780()
+ fun_l3_n343
+end
+
+def fun_l2_n781()
+ fun_l3_n343
+end
+
+def fun_l2_n782()
+ fun_l3_n57
+end
+
+def fun_l2_n783()
+ fun_l3_n836
+end
+
+def fun_l2_n784()
+ fun_l3_n634
+end
+
+def fun_l2_n785()
+ fun_l3_n788
+end
+
+def fun_l2_n786()
+ fun_l3_n541
+end
+
+def fun_l2_n787()
+ fun_l3_n906
+end
+
+def fun_l2_n788()
+ fun_l3_n12
+end
+
+def fun_l2_n789()
+ fun_l3_n682
+end
+
+def fun_l2_n790()
+ fun_l3_n80
+end
+
+def fun_l2_n791()
+ fun_l3_n594
+end
+
+def fun_l2_n792()
+ fun_l3_n120
+end
+
+def fun_l2_n793()
+ fun_l3_n551
+end
+
+def fun_l2_n794()
+ fun_l3_n164
+end
+
+def fun_l2_n795()
+ fun_l3_n817
+end
+
+def fun_l2_n796()
+ fun_l3_n611
+end
+
+def fun_l2_n797()
+ fun_l3_n878
+end
+
+def fun_l2_n798()
+ fun_l3_n235
+end
+
+def fun_l2_n799()
+ fun_l3_n210
+end
+
+def fun_l2_n800()
+ fun_l3_n343
+end
+
+def fun_l2_n801()
+ fun_l3_n445
+end
+
+def fun_l2_n802()
+ fun_l3_n549
+end
+
+def fun_l2_n803()
+ fun_l3_n992
+end
+
+def fun_l2_n804()
+ fun_l3_n751
+end
+
+def fun_l2_n805()
+ fun_l3_n514
+end
+
+def fun_l2_n806()
+ fun_l3_n593
+end
+
+def fun_l2_n807()
+ fun_l3_n876
+end
+
+def fun_l2_n808()
+ fun_l3_n612
+end
+
+def fun_l2_n809()
+ fun_l3_n184
+end
+
+def fun_l2_n810()
+ fun_l3_n34
+end
+
+def fun_l2_n811()
+ fun_l3_n703
+end
+
+def fun_l2_n812()
+ fun_l3_n296
+end
+
+def fun_l2_n813()
+ fun_l3_n815
+end
+
+def fun_l2_n814()
+ fun_l3_n417
+end
+
+def fun_l2_n815()
+ fun_l3_n230
+end
+
+def fun_l2_n816()
+ fun_l3_n140
+end
+
+def fun_l2_n817()
+ fun_l3_n772
+end
+
+def fun_l2_n818()
+ fun_l3_n671
+end
+
+def fun_l2_n819()
+ fun_l3_n670
+end
+
+def fun_l2_n820()
+ fun_l3_n286
+end
+
+def fun_l2_n821()
+ fun_l3_n406
+end
+
+def fun_l2_n822()
+ fun_l3_n757
+end
+
+def fun_l2_n823()
+ fun_l3_n995
+end
+
+def fun_l2_n824()
+ fun_l3_n816
+end
+
+def fun_l2_n825()
+ fun_l3_n624
+end
+
+def fun_l2_n826()
+ fun_l3_n625
+end
+
+def fun_l2_n827()
+ fun_l3_n559
+end
+
+def fun_l2_n828()
+ fun_l3_n224
+end
+
+def fun_l2_n829()
+ fun_l3_n437
+end
+
+def fun_l2_n830()
+ fun_l3_n745
+end
+
+def fun_l2_n831()
+ fun_l3_n289
+end
+
+def fun_l2_n832()
+ fun_l3_n555
+end
+
+def fun_l2_n833()
+ fun_l3_n477
+end
+
+def fun_l2_n834()
+ fun_l3_n545
+end
+
+def fun_l2_n835()
+ fun_l3_n87
+end
+
+def fun_l2_n836()
+ fun_l3_n100
+end
+
+def fun_l2_n837()
+ fun_l3_n796
+end
+
+def fun_l2_n838()
+ fun_l3_n166
+end
+
+def fun_l2_n839()
+ fun_l3_n91
+end
+
+def fun_l2_n840()
+ fun_l3_n325
+end
+
+def fun_l2_n841()
+ fun_l3_n717
+end
+
+def fun_l2_n842()
+ fun_l3_n522
+end
+
+def fun_l2_n843()
+ fun_l3_n560
+end
+
+def fun_l2_n844()
+ fun_l3_n811
+end
+
+def fun_l2_n845()
+ fun_l3_n451
+end
+
+def fun_l2_n846()
+ fun_l3_n45
+end
+
+def fun_l2_n847()
+ fun_l3_n410
+end
+
+def fun_l2_n848()
+ fun_l3_n976
+end
+
+def fun_l2_n849()
+ fun_l3_n873
+end
+
+def fun_l2_n850()
+ fun_l3_n302
+end
+
+def fun_l2_n851()
+ fun_l3_n346
+end
+
+def fun_l2_n852()
+ fun_l3_n314
+end
+
+def fun_l2_n853()
+ fun_l3_n829
+end
+
+def fun_l2_n854()
+ fun_l3_n259
+end
+
+def fun_l2_n855()
+ fun_l3_n799
+end
+
+def fun_l2_n856()
+ fun_l3_n451
+end
+
+def fun_l2_n857()
+ fun_l3_n154
+end
+
+def fun_l2_n858()
+ fun_l3_n867
+end
+
+def fun_l2_n859()
+ fun_l3_n806
+end
+
+def fun_l2_n860()
+ fun_l3_n138
+end
+
+def fun_l2_n861()
+ fun_l3_n508
+end
+
+def fun_l2_n862()
+ fun_l3_n627
+end
+
+def fun_l2_n863()
+ fun_l3_n931
+end
+
+def fun_l2_n864()
+ fun_l3_n95
+end
+
+def fun_l2_n865()
+ fun_l3_n533
+end
+
+def fun_l2_n866()
+ fun_l3_n425
+end
+
+def fun_l2_n867()
+ fun_l3_n996
+end
+
+def fun_l2_n868()
+ fun_l3_n331
+end
+
+def fun_l2_n869()
+ fun_l3_n126
+end
+
+def fun_l2_n870()
+ fun_l3_n848
+end
+
+def fun_l2_n871()
+ fun_l3_n174
+end
+
+def fun_l2_n872()
+ fun_l3_n867
+end
+
+def fun_l2_n873()
+ fun_l3_n800
+end
+
+def fun_l2_n874()
+ fun_l3_n526
+end
+
+def fun_l2_n875()
+ fun_l3_n250
+end
+
+def fun_l2_n876()
+ fun_l3_n896
+end
+
+def fun_l2_n877()
+ fun_l3_n229
+end
+
+def fun_l2_n878()
+ fun_l3_n290
+end
+
+def fun_l2_n879()
+ fun_l3_n130
+end
+
+def fun_l2_n880()
+ fun_l3_n437
+end
+
+def fun_l2_n881()
+ fun_l3_n654
+end
+
+def fun_l2_n882()
+ fun_l3_n93
+end
+
+def fun_l2_n883()
+ fun_l3_n632
+end
+
+def fun_l2_n884()
+ fun_l3_n772
+end
+
+def fun_l2_n885()
+ fun_l3_n597
+end
+
+def fun_l2_n886()
+ fun_l3_n668
+end
+
+def fun_l2_n887()
+ fun_l3_n969
+end
+
+def fun_l2_n888()
+ fun_l3_n908
+end
+
+def fun_l2_n889()
+ fun_l3_n10
+end
+
+def fun_l2_n890()
+ fun_l3_n676
+end
+
+def fun_l2_n891()
+ fun_l3_n729
+end
+
+def fun_l2_n892()
+ fun_l3_n659
+end
+
+def fun_l2_n893()
+ fun_l3_n121
+end
+
+def fun_l2_n894()
+ fun_l3_n543
+end
+
+def fun_l2_n895()
+ fun_l3_n931
+end
+
+def fun_l2_n896()
+ fun_l3_n64
+end
+
+def fun_l2_n897()
+ fun_l3_n500
+end
+
+def fun_l2_n898()
+ fun_l3_n664
+end
+
+def fun_l2_n899()
+ fun_l3_n929
+end
+
+def fun_l2_n900()
+ fun_l3_n772
+end
+
+def fun_l2_n901()
+ fun_l3_n309
+end
+
+def fun_l2_n902()
+ fun_l3_n284
+end
+
+def fun_l2_n903()
+ fun_l3_n304
+end
+
+def fun_l2_n904()
+ fun_l3_n18
+end
+
+def fun_l2_n905()
+ fun_l3_n715
+end
+
+def fun_l2_n906()
+ fun_l3_n469
+end
+
+def fun_l2_n907()
+ fun_l3_n524
+end
+
+def fun_l2_n908()
+ fun_l3_n476
+end
+
+def fun_l2_n909()
+ fun_l3_n90
+end
+
+def fun_l2_n910()
+ fun_l3_n471
+end
+
+def fun_l2_n911()
+ fun_l3_n885
+end
+
+def fun_l2_n912()
+ fun_l3_n696
+end
+
+def fun_l2_n913()
+ fun_l3_n393
+end
+
+def fun_l2_n914()
+ fun_l3_n987
+end
+
+def fun_l2_n915()
+ fun_l3_n830
+end
+
+def fun_l2_n916()
+ fun_l3_n684
+end
+
+def fun_l2_n917()
+ fun_l3_n379
+end
+
+def fun_l2_n918()
+ fun_l3_n237
+end
+
+def fun_l2_n919()
+ fun_l3_n115
+end
+
+def fun_l2_n920()
+ fun_l3_n499
+end
+
+def fun_l2_n921()
+ fun_l3_n88
+end
+
+def fun_l2_n922()
+ fun_l3_n563
+end
+
+def fun_l2_n923()
+ fun_l3_n280
+end
+
+def fun_l2_n924()
+ fun_l3_n400
+end
+
+def fun_l2_n925()
+ fun_l3_n750
+end
+
+def fun_l2_n926()
+ fun_l3_n429
+end
+
+def fun_l2_n927()
+ fun_l3_n669
+end
+
+def fun_l2_n928()
+ fun_l3_n275
+end
+
+def fun_l2_n929()
+ fun_l3_n468
+end
+
+def fun_l2_n930()
+ fun_l3_n617
+end
+
+def fun_l2_n931()
+ fun_l3_n291
+end
+
+def fun_l2_n932()
+ fun_l3_n870
+end
+
+def fun_l2_n933()
+ fun_l3_n169
+end
+
+def fun_l2_n934()
+ fun_l3_n603
+end
+
+def fun_l2_n935()
+ fun_l3_n669
+end
+
+def fun_l2_n936()
+ fun_l3_n738
+end
+
+def fun_l2_n937()
+ fun_l3_n417
+end
+
+def fun_l2_n938()
+ fun_l3_n339
+end
+
+def fun_l2_n939()
+ fun_l3_n660
+end
+
+def fun_l2_n940()
+ fun_l3_n253
+end
+
+def fun_l2_n941()
+ fun_l3_n598
+end
+
+def fun_l2_n942()
+ fun_l3_n369
+end
+
+def fun_l2_n943()
+ fun_l3_n453
+end
+
+def fun_l2_n944()
+ fun_l3_n535
+end
+
+def fun_l2_n945()
+ fun_l3_n492
+end
+
+def fun_l2_n946()
+ fun_l3_n950
+end
+
+def fun_l2_n947()
+ fun_l3_n939
+end
+
+def fun_l2_n948()
+ fun_l3_n607
+end
+
+def fun_l2_n949()
+ fun_l3_n440
+end
+
+def fun_l2_n950()
+ fun_l3_n615
+end
+
+def fun_l2_n951()
+ fun_l3_n690
+end
+
+def fun_l2_n952()
+ fun_l3_n205
+end
+
+def fun_l2_n953()
+ fun_l3_n831
+end
+
+def fun_l2_n954()
+ fun_l3_n56
+end
+
+def fun_l2_n955()
+ fun_l3_n695
+end
+
+def fun_l2_n956()
+ fun_l3_n358
+end
+
+def fun_l2_n957()
+ fun_l3_n2
+end
+
+def fun_l2_n958()
+ fun_l3_n663
+end
+
+def fun_l2_n959()
+ fun_l3_n829
+end
+
+def fun_l2_n960()
+ fun_l3_n627
+end
+
+def fun_l2_n961()
+ fun_l3_n43
+end
+
+def fun_l2_n962()
+ fun_l3_n293
+end
+
+def fun_l2_n963()
+ fun_l3_n982
+end
+
+def fun_l2_n964()
+ fun_l3_n472
+end
+
+def fun_l2_n965()
+ fun_l3_n703
+end
+
+def fun_l2_n966()
+ fun_l3_n884
+end
+
+def fun_l2_n967()
+ fun_l3_n395
+end
+
+def fun_l2_n968()
+ fun_l3_n398
+end
+
+def fun_l2_n969()
+ fun_l3_n251
+end
+
+def fun_l2_n970()
+ fun_l3_n52
+end
+
+def fun_l2_n971()
+ fun_l3_n263
+end
+
+def fun_l2_n972()
+ fun_l3_n172
+end
+
+def fun_l2_n973()
+ fun_l3_n334
+end
+
+def fun_l2_n974()
+ fun_l3_n552
+end
+
+def fun_l2_n975()
+ fun_l3_n898
+end
+
+def fun_l2_n976()
+ fun_l3_n55
+end
+
+def fun_l2_n977()
+ fun_l3_n556
+end
+
+def fun_l2_n978()
+ fun_l3_n852
+end
+
+def fun_l2_n979()
+ fun_l3_n681
+end
+
+def fun_l2_n980()
+ fun_l3_n470
+end
+
+def fun_l2_n981()
+ fun_l3_n807
+end
+
+def fun_l2_n982()
+ fun_l3_n411
+end
+
+def fun_l2_n983()
+ fun_l3_n251
+end
+
+def fun_l2_n984()
+ fun_l3_n302
+end
+
+def fun_l2_n985()
+ fun_l3_n598
+end
+
+def fun_l2_n986()
+ fun_l3_n897
+end
+
+def fun_l2_n987()
+ fun_l3_n449
+end
+
+def fun_l2_n988()
+ fun_l3_n178
+end
+
+def fun_l2_n989()
+ fun_l3_n208
+end
+
+def fun_l2_n990()
+ fun_l3_n287
+end
+
+def fun_l2_n991()
+ fun_l3_n237
+end
+
+def fun_l2_n992()
+ fun_l3_n56
+end
+
+def fun_l2_n993()
+ fun_l3_n66
+end
+
+def fun_l2_n994()
+ fun_l3_n838
+end
+
+def fun_l2_n995()
+ fun_l3_n726
+end
+
+def fun_l2_n996()
+ fun_l3_n758
+end
+
+def fun_l2_n997()
+ fun_l3_n850
+end
+
+def fun_l2_n998()
+ fun_l3_n132
+end
+
+def fun_l2_n999()
+ fun_l3_n477
+end
+
+def fun_l3_n0()
+ fun_l4_n984
+end
+
+def fun_l3_n1()
+ fun_l4_n136
+end
+
+def fun_l3_n2()
+ fun_l4_n494
+end
+
+def fun_l3_n3()
+ fun_l4_n267
+end
+
+def fun_l3_n4()
+ fun_l4_n305
+end
+
+def fun_l3_n5()
+ fun_l4_n646
+end
+
+def fun_l3_n6()
+ fun_l4_n144
+end
+
+def fun_l3_n7()
+ fun_l4_n341
+end
+
+def fun_l3_n8()
+ fun_l4_n142
+end
+
+def fun_l3_n9()
+ fun_l4_n382
+end
+
+def fun_l3_n10()
+ fun_l4_n726
+end
+
+def fun_l3_n11()
+ fun_l4_n23
+end
+
+def fun_l3_n12()
+ fun_l4_n911
+end
+
+def fun_l3_n13()
+ fun_l4_n221
+end
+
+def fun_l3_n14()
+ fun_l4_n554
+end
+
+def fun_l3_n15()
+ fun_l4_n602
+end
+
+def fun_l3_n16()
+ fun_l4_n893
+end
+
+def fun_l3_n17()
+ fun_l4_n943
+end
+
+def fun_l3_n18()
+ fun_l4_n523
+end
+
+def fun_l3_n19()
+ fun_l4_n896
+end
+
+def fun_l3_n20()
+ fun_l4_n539
+end
+
+def fun_l3_n21()
+ fun_l4_n333
+end
+
+def fun_l3_n22()
+ fun_l4_n230
+end
+
+def fun_l3_n23()
+ fun_l4_n256
+end
+
+def fun_l3_n24()
+ fun_l4_n278
+end
+
+def fun_l3_n25()
+ fun_l4_n699
+end
+
+def fun_l3_n26()
+ fun_l4_n584
+end
+
+def fun_l3_n27()
+ fun_l4_n259
+end
+
+def fun_l3_n28()
+ fun_l4_n993
+end
+
+def fun_l3_n29()
+ fun_l4_n183
+end
+
+def fun_l3_n30()
+ fun_l4_n249
+end
+
+def fun_l3_n31()
+ fun_l4_n253
+end
+
+def fun_l3_n32()
+ fun_l4_n507
+end
+
+def fun_l3_n33()
+ fun_l4_n507
+end
+
+def fun_l3_n34()
+ fun_l4_n142
+end
+
+def fun_l3_n35()
+ fun_l4_n392
+end
+
+def fun_l3_n36()
+ fun_l4_n962
+end
+
+def fun_l3_n37()
+ fun_l4_n799
+end
+
+def fun_l3_n38()
+ fun_l4_n110
+end
+
+def fun_l3_n39()
+ fun_l4_n623
+end
+
+def fun_l3_n40()
+ fun_l4_n508
+end
+
+def fun_l3_n41()
+ fun_l4_n726
+end
+
+def fun_l3_n42()
+ fun_l4_n282
+end
+
+def fun_l3_n43()
+ fun_l4_n942
+end
+
+def fun_l3_n44()
+ fun_l4_n711
+end
+
+def fun_l3_n45()
+ fun_l4_n926
+end
+
+def fun_l3_n46()
+ fun_l4_n793
+end
+
+def fun_l3_n47()
+ fun_l4_n658
+end
+
+def fun_l3_n48()
+ fun_l4_n802
+end
+
+def fun_l3_n49()
+ fun_l4_n499
+end
+
+def fun_l3_n50()
+ fun_l4_n648
+end
+
+def fun_l3_n51()
+ fun_l4_n465
+end
+
+def fun_l3_n52()
+ fun_l4_n460
+end
+
+def fun_l3_n53()
+ fun_l4_n904
+end
+
+def fun_l3_n54()
+ fun_l4_n939
+end
+
+def fun_l3_n55()
+ fun_l4_n306
+end
+
+def fun_l3_n56()
+ fun_l4_n235
+end
+
+def fun_l3_n57()
+ fun_l4_n783
+end
+
+def fun_l3_n58()
+ fun_l4_n992
+end
+
+def fun_l3_n59()
+ fun_l4_n196
+end
+
+def fun_l3_n60()
+ fun_l4_n637
+end
+
+def fun_l3_n61()
+ fun_l4_n512
+end
+
+def fun_l3_n62()
+ fun_l4_n480
+end
+
+def fun_l3_n63()
+ fun_l4_n31
+end
+
+def fun_l3_n64()
+ fun_l4_n277
+end
+
+def fun_l3_n65()
+ fun_l4_n814
+end
+
+def fun_l3_n66()
+ fun_l4_n170
+end
+
+def fun_l3_n67()
+ fun_l4_n604
+end
+
+def fun_l3_n68()
+ fun_l4_n794
+end
+
+def fun_l3_n69()
+ fun_l4_n530
+end
+
+def fun_l3_n70()
+ fun_l4_n291
+end
+
+def fun_l3_n71()
+ fun_l4_n146
+end
+
+def fun_l3_n72()
+ fun_l4_n588
+end
+
+def fun_l3_n73()
+ fun_l4_n624
+end
+
+def fun_l3_n74()
+ fun_l4_n210
+end
+
+def fun_l3_n75()
+ fun_l4_n924
+end
+
+def fun_l3_n76()
+ fun_l4_n77
+end
+
+def fun_l3_n77()
+ fun_l4_n727
+end
+
+def fun_l3_n78()
+ fun_l4_n840
+end
+
+def fun_l3_n79()
+ fun_l4_n257
+end
+
+def fun_l3_n80()
+ fun_l4_n654
+end
+
+def fun_l3_n81()
+ fun_l4_n498
+end
+
+def fun_l3_n82()
+ fun_l4_n445
+end
+
+def fun_l3_n83()
+ fun_l4_n820
+end
+
+def fun_l3_n84()
+ fun_l4_n376
+end
+
+def fun_l3_n85()
+ fun_l4_n702
+end
+
+def fun_l3_n86()
+ fun_l4_n22
+end
+
+def fun_l3_n87()
+ fun_l4_n278
+end
+
+def fun_l3_n88()
+ fun_l4_n399
+end
+
+def fun_l3_n89()
+ fun_l4_n166
+end
+
+def fun_l3_n90()
+ fun_l4_n461
+end
+
+def fun_l3_n91()
+ fun_l4_n992
+end
+
+def fun_l3_n92()
+ fun_l4_n207
+end
+
+def fun_l3_n93()
+ fun_l4_n915
+end
+
+def fun_l3_n94()
+ fun_l4_n852
+end
+
+def fun_l3_n95()
+ fun_l4_n591
+end
+
+def fun_l3_n96()
+ fun_l4_n74
+end
+
+def fun_l3_n97()
+ fun_l4_n735
+end
+
+def fun_l3_n98()
+ fun_l4_n863
+end
+
+def fun_l3_n99()
+ fun_l4_n692
+end
+
+def fun_l3_n100()
+ fun_l4_n633
+end
+
+def fun_l3_n101()
+ fun_l4_n618
+end
+
+def fun_l3_n102()
+ fun_l4_n306
+end
+
+def fun_l3_n103()
+ fun_l4_n620
+end
+
+def fun_l3_n104()
+ fun_l4_n981
+end
+
+def fun_l3_n105()
+ fun_l4_n763
+end
+
+def fun_l3_n106()
+ fun_l4_n727
+end
+
+def fun_l3_n107()
+ fun_l4_n173
+end
+
+def fun_l3_n108()
+ fun_l4_n645
+end
+
+def fun_l3_n109()
+ fun_l4_n333
+end
+
+def fun_l3_n110()
+ fun_l4_n847
+end
+
+def fun_l3_n111()
+ fun_l4_n905
+end
+
+def fun_l3_n112()
+ fun_l4_n753
+end
+
+def fun_l3_n113()
+ fun_l4_n294
+end
+
+def fun_l3_n114()
+ fun_l4_n891
+end
+
+def fun_l3_n115()
+ fun_l4_n495
+end
+
+def fun_l3_n116()
+ fun_l4_n683
+end
+
+def fun_l3_n117()
+ fun_l4_n925
+end
+
+def fun_l3_n118()
+ fun_l4_n630
+end
+
+def fun_l3_n119()
+ fun_l4_n548
+end
+
+def fun_l3_n120()
+ fun_l4_n767
+end
+
+def fun_l3_n121()
+ fun_l4_n623
+end
+
+def fun_l3_n122()
+ fun_l4_n0
+end
+
+def fun_l3_n123()
+ fun_l4_n849
+end
+
+def fun_l3_n124()
+ fun_l4_n643
+end
+
+def fun_l3_n125()
+ fun_l4_n559
+end
+
+def fun_l3_n126()
+ fun_l4_n533
+end
+
+def fun_l3_n127()
+ fun_l4_n287
+end
+
+def fun_l3_n128()
+ fun_l4_n146
+end
+
+def fun_l3_n129()
+ fun_l4_n636
+end
+
+def fun_l3_n130()
+ fun_l4_n914
+end
+
+def fun_l3_n131()
+ fun_l4_n274
+end
+
+def fun_l3_n132()
+ fun_l4_n60
+end
+
+def fun_l3_n133()
+ fun_l4_n858
+end
+
+def fun_l3_n134()
+ fun_l4_n334
+end
+
+def fun_l3_n135()
+ fun_l4_n892
+end
+
+def fun_l3_n136()
+ fun_l4_n81
+end
+
+def fun_l3_n137()
+ fun_l4_n567
+end
+
+def fun_l3_n138()
+ fun_l4_n456
+end
+
+def fun_l3_n139()
+ fun_l4_n625
+end
+
+def fun_l3_n140()
+ fun_l4_n690
+end
+
+def fun_l3_n141()
+ fun_l4_n919
+end
+
+def fun_l3_n142()
+ fun_l4_n504
+end
+
+def fun_l3_n143()
+ fun_l4_n986
+end
+
+def fun_l3_n144()
+ fun_l4_n99
+end
+
+def fun_l3_n145()
+ fun_l4_n312
+end
+
+def fun_l3_n146()
+ fun_l4_n36
+end
+
+def fun_l3_n147()
+ fun_l4_n3
+end
+
+def fun_l3_n148()
+ fun_l4_n328
+end
+
+def fun_l3_n149()
+ fun_l4_n978
+end
+
+def fun_l3_n150()
+ fun_l4_n474
+end
+
+def fun_l3_n151()
+ fun_l4_n985
+end
+
+def fun_l3_n152()
+ fun_l4_n809
+end
+
+def fun_l3_n153()
+ fun_l4_n379
+end
+
+def fun_l3_n154()
+ fun_l4_n589
+end
+
+def fun_l3_n155()
+ fun_l4_n625
+end
+
+def fun_l3_n156()
+ fun_l4_n937
+end
+
+def fun_l3_n157()
+ fun_l4_n774
+end
+
+def fun_l3_n158()
+ fun_l4_n465
+end
+
+def fun_l3_n159()
+ fun_l4_n315
+end
+
+def fun_l3_n160()
+ fun_l4_n733
+end
+
+def fun_l3_n161()
+ fun_l4_n572
+end
+
+def fun_l3_n162()
+ fun_l4_n794
+end
+
+def fun_l3_n163()
+ fun_l4_n76
+end
+
+def fun_l3_n164()
+ fun_l4_n550
+end
+
+def fun_l3_n165()
+ fun_l4_n913
+end
+
+def fun_l3_n166()
+ fun_l4_n553
+end
+
+def fun_l3_n167()
+ fun_l4_n383
+end
+
+def fun_l3_n168()
+ fun_l4_n118
+end
+
+def fun_l3_n169()
+ fun_l4_n561
+end
+
+def fun_l3_n170()
+ fun_l4_n517
+end
+
+def fun_l3_n171()
+ fun_l4_n680
+end
+
+def fun_l3_n172()
+ fun_l4_n466
+end
+
+def fun_l3_n173()
+ fun_l4_n629
+end
+
+def fun_l3_n174()
+ fun_l4_n469
+end
+
+def fun_l3_n175()
+ fun_l4_n731
+end
+
+def fun_l3_n176()
+ fun_l4_n579
+end
+
+def fun_l3_n177()
+ fun_l4_n574
+end
+
+def fun_l3_n178()
+ fun_l4_n936
+end
+
+def fun_l3_n179()
+ fun_l4_n405
+end
+
+def fun_l3_n180()
+ fun_l4_n667
+end
+
+def fun_l3_n181()
+ fun_l4_n369
+end
+
+def fun_l3_n182()
+ fun_l4_n852
+end
+
+def fun_l3_n183()
+ fun_l4_n861
+end
+
+def fun_l3_n184()
+ fun_l4_n425
+end
+
+def fun_l3_n185()
+ fun_l4_n4
+end
+
+def fun_l3_n186()
+ fun_l4_n28
+end
+
+def fun_l3_n187()
+ fun_l4_n470
+end
+
+def fun_l3_n188()
+ fun_l4_n568
+end
+
+def fun_l3_n189()
+ fun_l4_n83
+end
+
+def fun_l3_n190()
+ fun_l4_n981
+end
+
+def fun_l3_n191()
+ fun_l4_n526
+end
+
+def fun_l3_n192()
+ fun_l4_n496
+end
+
+def fun_l3_n193()
+ fun_l4_n954
+end
+
+def fun_l3_n194()
+ fun_l4_n340
+end
+
+def fun_l3_n195()
+ fun_l4_n343
+end
+
+def fun_l3_n196()
+ fun_l4_n964
+end
+
+def fun_l3_n197()
+ fun_l4_n58
+end
+
+def fun_l3_n198()
+ fun_l4_n317
+end
+
+def fun_l3_n199()
+ fun_l4_n255
+end
+
+def fun_l3_n200()
+ fun_l4_n546
+end
+
+def fun_l3_n201()
+ fun_l4_n933
+end
+
+def fun_l3_n202()
+ fun_l4_n387
+end
+
+def fun_l3_n203()
+ fun_l4_n32
+end
+
+def fun_l3_n204()
+ fun_l4_n514
+end
+
+def fun_l3_n205()
+ fun_l4_n175
+end
+
+def fun_l3_n206()
+ fun_l4_n813
+end
+
+def fun_l3_n207()
+ fun_l4_n881
+end
+
+def fun_l3_n208()
+ fun_l4_n52
+end
+
+def fun_l3_n209()
+ fun_l4_n839
+end
+
+def fun_l3_n210()
+ fun_l4_n919
+end
+
+def fun_l3_n211()
+ fun_l4_n208
+end
+
+def fun_l3_n212()
+ fun_l4_n111
+end
+
+def fun_l3_n213()
+ fun_l4_n878
+end
+
+def fun_l3_n214()
+ fun_l4_n110
+end
+
+def fun_l3_n215()
+ fun_l4_n701
+end
+
+def fun_l3_n216()
+ fun_l4_n769
+end
+
+def fun_l3_n217()
+ fun_l4_n487
+end
+
+def fun_l3_n218()
+ fun_l4_n940
+end
+
+def fun_l3_n219()
+ fun_l4_n427
+end
+
+def fun_l3_n220()
+ fun_l4_n731
+end
+
+def fun_l3_n221()
+ fun_l4_n92
+end
+
+def fun_l3_n222()
+ fun_l4_n246
+end
+
+def fun_l3_n223()
+ fun_l4_n574
+end
+
+def fun_l3_n224()
+ fun_l4_n297
+end
+
+def fun_l3_n225()
+ fun_l4_n48
+end
+
+def fun_l3_n226()
+ fun_l4_n433
+end
+
+def fun_l3_n227()
+ fun_l4_n628
+end
+
+def fun_l3_n228()
+ fun_l4_n426
+end
+
+def fun_l3_n229()
+ fun_l4_n22
+end
+
+def fun_l3_n230()
+ fun_l4_n878
+end
+
+def fun_l3_n231()
+ fun_l4_n905
+end
+
+def fun_l3_n232()
+ fun_l4_n222
+end
+
+def fun_l3_n233()
+ fun_l4_n523
+end
+
+def fun_l3_n234()
+ fun_l4_n9
+end
+
+def fun_l3_n235()
+ fun_l4_n705
+end
+
+def fun_l3_n236()
+ fun_l4_n811
+end
+
+def fun_l3_n237()
+ fun_l4_n987
+end
+
+def fun_l3_n238()
+ fun_l4_n915
+end
+
+def fun_l3_n239()
+ fun_l4_n302
+end
+
+def fun_l3_n240()
+ fun_l4_n766
+end
+
+def fun_l3_n241()
+ fun_l4_n29
+end
+
+def fun_l3_n242()
+ fun_l4_n154
+end
+
+def fun_l3_n243()
+ fun_l4_n853
+end
+
+def fun_l3_n244()
+ fun_l4_n619
+end
+
+def fun_l3_n245()
+ fun_l4_n739
+end
+
+def fun_l3_n246()
+ fun_l4_n814
+end
+
+def fun_l3_n247()
+ fun_l4_n768
+end
+
+def fun_l3_n248()
+ fun_l4_n2
+end
+
+def fun_l3_n249()
+ fun_l4_n595
+end
+
+def fun_l3_n250()
+ fun_l4_n606
+end
+
+def fun_l3_n251()
+ fun_l4_n144
+end
+
+def fun_l3_n252()
+ fun_l4_n550
+end
+
+def fun_l3_n253()
+ fun_l4_n268
+end
+
+def fun_l3_n254()
+ fun_l4_n320
+end
+
+def fun_l3_n255()
+ fun_l4_n59
+end
+
+def fun_l3_n256()
+ fun_l4_n586
+end
+
+def fun_l3_n257()
+ fun_l4_n766
+end
+
+def fun_l3_n258()
+ fun_l4_n96
+end
+
+def fun_l3_n259()
+ fun_l4_n964
+end
+
+def fun_l3_n260()
+ fun_l4_n163
+end
+
+def fun_l3_n261()
+ fun_l4_n305
+end
+
+def fun_l3_n262()
+ fun_l4_n155
+end
+
+def fun_l3_n263()
+ fun_l4_n249
+end
+
+def fun_l3_n264()
+ fun_l4_n887
+end
+
+def fun_l3_n265()
+ fun_l4_n625
+end
+
+def fun_l3_n266()
+ fun_l4_n241
+end
+
+def fun_l3_n267()
+ fun_l4_n385
+end
+
+def fun_l3_n268()
+ fun_l4_n287
+end
+
+def fun_l3_n269()
+ fun_l4_n375
+end
+
+def fun_l3_n270()
+ fun_l4_n13
+end
+
+def fun_l3_n271()
+ fun_l4_n44
+end
+
+def fun_l3_n272()
+ fun_l4_n259
+end
+
+def fun_l3_n273()
+ fun_l4_n231
+end
+
+def fun_l3_n274()
+ fun_l4_n692
+end
+
+def fun_l3_n275()
+ fun_l4_n279
+end
+
+def fun_l3_n276()
+ fun_l4_n353
+end
+
+def fun_l3_n277()
+ fun_l4_n287
+end
+
+def fun_l3_n278()
+ fun_l4_n254
+end
+
+def fun_l3_n279()
+ fun_l4_n717
+end
+
+def fun_l3_n280()
+ fun_l4_n635
+end
+
+def fun_l3_n281()
+ fun_l4_n264
+end
+
+def fun_l3_n282()
+ fun_l4_n390
+end
+
+def fun_l3_n283()
+ fun_l4_n824
+end
+
+def fun_l3_n284()
+ fun_l4_n919
+end
+
+def fun_l3_n285()
+ fun_l4_n273
+end
+
+def fun_l3_n286()
+ fun_l4_n566
+end
+
+def fun_l3_n287()
+ fun_l4_n6
+end
+
+def fun_l3_n288()
+ fun_l4_n28
+end
+
+def fun_l3_n289()
+ fun_l4_n602
+end
+
+def fun_l3_n290()
+ fun_l4_n209
+end
+
+def fun_l3_n291()
+ fun_l4_n753
+end
+
+def fun_l3_n292()
+ fun_l4_n914
+end
+
+def fun_l3_n293()
+ fun_l4_n345
+end
+
+def fun_l3_n294()
+ fun_l4_n616
+end
+
+def fun_l3_n295()
+ fun_l4_n640
+end
+
+def fun_l3_n296()
+ fun_l4_n47
+end
+
+def fun_l3_n297()
+ fun_l4_n542
+end
+
+def fun_l3_n298()
+ fun_l4_n379
+end
+
+def fun_l3_n299()
+ fun_l4_n14
+end
+
+def fun_l3_n300()
+ fun_l4_n126
+end
+
+def fun_l3_n301()
+ fun_l4_n913
+end
+
+def fun_l3_n302()
+ fun_l4_n933
+end
+
+def fun_l3_n303()
+ fun_l4_n429
+end
+
+def fun_l3_n304()
+ fun_l4_n175
+end
+
+def fun_l3_n305()
+ fun_l4_n152
+end
+
+def fun_l3_n306()
+ fun_l4_n556
+end
+
+def fun_l3_n307()
+ fun_l4_n799
+end
+
+def fun_l3_n308()
+ fun_l4_n865
+end
+
+def fun_l3_n309()
+ fun_l4_n501
+end
+
+def fun_l3_n310()
+ fun_l4_n148
+end
+
+def fun_l3_n311()
+ fun_l4_n160
+end
+
+def fun_l3_n312()
+ fun_l4_n333
+end
+
+def fun_l3_n313()
+ fun_l4_n987
+end
+
+def fun_l3_n314()
+ fun_l4_n449
+end
+
+def fun_l3_n315()
+ fun_l4_n460
+end
+
+def fun_l3_n316()
+ fun_l4_n866
+end
+
+def fun_l3_n317()
+ fun_l4_n554
+end
+
+def fun_l3_n318()
+ fun_l4_n497
+end
+
+def fun_l3_n319()
+ fun_l4_n25
+end
+
+def fun_l3_n320()
+ fun_l4_n483
+end
+
+def fun_l3_n321()
+ fun_l4_n412
+end
+
+def fun_l3_n322()
+ fun_l4_n594
+end
+
+def fun_l3_n323()
+ fun_l4_n727
+end
+
+def fun_l3_n324()
+ fun_l4_n209
+end
+
+def fun_l3_n325()
+ fun_l4_n956
+end
+
+def fun_l3_n326()
+ fun_l4_n127
+end
+
+def fun_l3_n327()
+ fun_l4_n942
+end
+
+def fun_l3_n328()
+ fun_l4_n984
+end
+
+def fun_l3_n329()
+ fun_l4_n387
+end
+
+def fun_l3_n330()
+ fun_l4_n834
+end
+
+def fun_l3_n331()
+ fun_l4_n723
+end
+
+def fun_l3_n332()
+ fun_l4_n576
+end
+
+def fun_l3_n333()
+ fun_l4_n949
+end
+
+def fun_l3_n334()
+ fun_l4_n792
+end
+
+def fun_l3_n335()
+ fun_l4_n28
+end
+
+def fun_l3_n336()
+ fun_l4_n805
+end
+
+def fun_l3_n337()
+ fun_l4_n469
+end
+
+def fun_l3_n338()
+ fun_l4_n651
+end
+
+def fun_l3_n339()
+ fun_l4_n672
+end
+
+def fun_l3_n340()
+ fun_l4_n835
+end
+
+def fun_l3_n341()
+ fun_l4_n902
+end
+
+def fun_l3_n342()
+ fun_l4_n9
+end
+
+def fun_l3_n343()
+ fun_l4_n111
+end
+
+def fun_l3_n344()
+ fun_l4_n234
+end
+
+def fun_l3_n345()
+ fun_l4_n608
+end
+
+def fun_l3_n346()
+ fun_l4_n577
+end
+
+def fun_l3_n347()
+ fun_l4_n966
+end
+
+def fun_l3_n348()
+ fun_l4_n777
+end
+
+def fun_l3_n349()
+ fun_l4_n387
+end
+
+def fun_l3_n350()
+ fun_l4_n27
+end
+
+def fun_l3_n351()
+ fun_l4_n94
+end
+
+def fun_l3_n352()
+ fun_l4_n12
+end
+
+def fun_l3_n353()
+ fun_l4_n632
+end
+
+def fun_l3_n354()
+ fun_l4_n314
+end
+
+def fun_l3_n355()
+ fun_l4_n472
+end
+
+def fun_l3_n356()
+ fun_l4_n737
+end
+
+def fun_l3_n357()
+ fun_l4_n775
+end
+
+def fun_l3_n358()
+ fun_l4_n255
+end
+
+def fun_l3_n359()
+ fun_l4_n474
+end
+
+def fun_l3_n360()
+ fun_l4_n668
+end
+
+def fun_l3_n361()
+ fun_l4_n907
+end
+
+def fun_l3_n362()
+ fun_l4_n608
+end
+
+def fun_l3_n363()
+ fun_l4_n885
+end
+
+def fun_l3_n364()
+ fun_l4_n63
+end
+
+def fun_l3_n365()
+ fun_l4_n432
+end
+
+def fun_l3_n366()
+ fun_l4_n748
+end
+
+def fun_l3_n367()
+ fun_l4_n741
+end
+
+def fun_l3_n368()
+ fun_l4_n799
+end
+
+def fun_l3_n369()
+ fun_l4_n747
+end
+
+def fun_l3_n370()
+ fun_l4_n939
+end
+
+def fun_l3_n371()
+ fun_l4_n569
+end
+
+def fun_l3_n372()
+ fun_l4_n267
+end
+
+def fun_l3_n373()
+ fun_l4_n640
+end
+
+def fun_l3_n374()
+ fun_l4_n647
+end
+
+def fun_l3_n375()
+ fun_l4_n658
+end
+
+def fun_l3_n376()
+ fun_l4_n346
+end
+
+def fun_l3_n377()
+ fun_l4_n781
+end
+
+def fun_l3_n378()
+ fun_l4_n820
+end
+
+def fun_l3_n379()
+ fun_l4_n11
+end
+
+def fun_l3_n380()
+ fun_l4_n238
+end
+
+def fun_l3_n381()
+ fun_l4_n78
+end
+
+def fun_l3_n382()
+ fun_l4_n497
+end
+
+def fun_l3_n383()
+ fun_l4_n815
+end
+
+def fun_l3_n384()
+ fun_l4_n876
+end
+
+def fun_l3_n385()
+ fun_l4_n392
+end
+
+def fun_l3_n386()
+ fun_l4_n228
+end
+
+def fun_l3_n387()
+ fun_l4_n230
+end
+
+def fun_l3_n388()
+ fun_l4_n216
+end
+
+def fun_l3_n389()
+ fun_l4_n661
+end
+
+def fun_l3_n390()
+ fun_l4_n831
+end
+
+def fun_l3_n391()
+ fun_l4_n588
+end
+
+def fun_l3_n392()
+ fun_l4_n377
+end
+
+def fun_l3_n393()
+ fun_l4_n245
+end
+
+def fun_l3_n394()
+ fun_l4_n546
+end
+
+def fun_l3_n395()
+ fun_l4_n48
+end
+
+def fun_l3_n396()
+ fun_l4_n109
+end
+
+def fun_l3_n397()
+ fun_l4_n958
+end
+
+def fun_l3_n398()
+ fun_l4_n779
+end
+
+def fun_l3_n399()
+ fun_l4_n942
+end
+
+def fun_l3_n400()
+ fun_l4_n436
+end
+
+def fun_l3_n401()
+ fun_l4_n321
+end
+
+def fun_l3_n402()
+ fun_l4_n789
+end
+
+def fun_l3_n403()
+ fun_l4_n96
+end
+
+def fun_l3_n404()
+ fun_l4_n101
+end
+
+def fun_l3_n405()
+ fun_l4_n373
+end
+
+def fun_l3_n406()
+ fun_l4_n143
+end
+
+def fun_l3_n407()
+ fun_l4_n869
+end
+
+def fun_l3_n408()
+ fun_l4_n836
+end
+
+def fun_l3_n409()
+ fun_l4_n278
+end
+
+def fun_l3_n410()
+ fun_l4_n819
+end
+
+def fun_l3_n411()
+ fun_l4_n716
+end
+
+def fun_l3_n412()
+ fun_l4_n729
+end
+
+def fun_l3_n413()
+ fun_l4_n565
+end
+
+def fun_l3_n414()
+ fun_l4_n258
+end
+
+def fun_l3_n415()
+ fun_l4_n187
+end
+
+def fun_l3_n416()
+ fun_l4_n425
+end
+
+def fun_l3_n417()
+ fun_l4_n239
+end
+
+def fun_l3_n418()
+ fun_l4_n352
+end
+
+def fun_l3_n419()
+ fun_l4_n747
+end
+
+def fun_l3_n420()
+ fun_l4_n103
+end
+
+def fun_l3_n421()
+ fun_l4_n276
+end
+
+def fun_l3_n422()
+ fun_l4_n348
+end
+
+def fun_l3_n423()
+ fun_l4_n737
+end
+
+def fun_l3_n424()
+ fun_l4_n615
+end
+
+def fun_l3_n425()
+ fun_l4_n305
+end
+
+def fun_l3_n426()
+ fun_l4_n474
+end
+
+def fun_l3_n427()
+ fun_l4_n304
+end
+
+def fun_l3_n428()
+ fun_l4_n607
+end
+
+def fun_l3_n429()
+ fun_l4_n202
+end
+
+def fun_l3_n430()
+ fun_l4_n370
+end
+
+def fun_l3_n431()
+ fun_l4_n580
+end
+
+def fun_l3_n432()
+ fun_l4_n752
+end
+
+def fun_l3_n433()
+ fun_l4_n720
+end
+
+def fun_l3_n434()
+ fun_l4_n916
+end
+
+def fun_l3_n435()
+ fun_l4_n424
+end
+
+def fun_l3_n436()
+ fun_l4_n922
+end
+
+def fun_l3_n437()
+ fun_l4_n885
+end
+
+def fun_l3_n438()
+ fun_l4_n849
+end
+
+def fun_l3_n439()
+ fun_l4_n595
+end
+
+def fun_l3_n440()
+ fun_l4_n753
+end
+
+def fun_l3_n441()
+ fun_l4_n871
+end
+
+def fun_l3_n442()
+ fun_l4_n979
+end
+
+def fun_l3_n443()
+ fun_l4_n217
+end
+
+def fun_l3_n444()
+ fun_l4_n249
+end
+
+def fun_l3_n445()
+ fun_l4_n181
+end
+
+def fun_l3_n446()
+ fun_l4_n283
+end
+
+def fun_l3_n447()
+ fun_l4_n495
+end
+
+def fun_l3_n448()
+ fun_l4_n701
+end
+
+def fun_l3_n449()
+ fun_l4_n897
+end
+
+def fun_l3_n450()
+ fun_l4_n479
+end
+
+def fun_l3_n451()
+ fun_l4_n410
+end
+
+def fun_l3_n452()
+ fun_l4_n842
+end
+
+def fun_l3_n453()
+ fun_l4_n700
+end
+
+def fun_l3_n454()
+ fun_l4_n855
+end
+
+def fun_l3_n455()
+ fun_l4_n743
+end
+
+def fun_l3_n456()
+ fun_l4_n842
+end
+
+def fun_l3_n457()
+ fun_l4_n575
+end
+
+def fun_l3_n458()
+ fun_l4_n48
+end
+
+def fun_l3_n459()
+ fun_l4_n650
+end
+
+def fun_l3_n460()
+ fun_l4_n714
+end
+
+def fun_l3_n461()
+ fun_l4_n409
+end
+
+def fun_l3_n462()
+ fun_l4_n225
+end
+
+def fun_l3_n463()
+ fun_l4_n419
+end
+
+def fun_l3_n464()
+ fun_l4_n563
+end
+
+def fun_l3_n465()
+ fun_l4_n416
+end
+
+def fun_l3_n466()
+ fun_l4_n738
+end
+
+def fun_l3_n467()
+ fun_l4_n955
+end
+
+def fun_l3_n468()
+ fun_l4_n406
+end
+
+def fun_l3_n469()
+ fun_l4_n157
+end
+
+def fun_l3_n470()
+ fun_l4_n732
+end
+
+def fun_l3_n471()
+ fun_l4_n567
+end
+
+def fun_l3_n472()
+ fun_l4_n895
+end
+
+def fun_l3_n473()
+ fun_l4_n377
+end
+
+def fun_l3_n474()
+ fun_l4_n105
+end
+
+def fun_l3_n475()
+ fun_l4_n640
+end
+
+def fun_l3_n476()
+ fun_l4_n617
+end
+
+def fun_l3_n477()
+ fun_l4_n109
+end
+
+def fun_l3_n478()
+ fun_l4_n358
+end
+
+def fun_l3_n479()
+ fun_l4_n522
+end
+
+def fun_l3_n480()
+ fun_l4_n550
+end
+
+def fun_l3_n481()
+ fun_l4_n648
+end
+
+def fun_l3_n482()
+ fun_l4_n533
+end
+
+def fun_l3_n483()
+ fun_l4_n782
+end
+
+def fun_l3_n484()
+ fun_l4_n369
+end
+
+def fun_l3_n485()
+ fun_l4_n644
+end
+
+def fun_l3_n486()
+ fun_l4_n989
+end
+
+def fun_l3_n487()
+ fun_l4_n434
+end
+
+def fun_l3_n488()
+ fun_l4_n914
+end
+
+def fun_l3_n489()
+ fun_l4_n2
+end
+
+def fun_l3_n490()
+ fun_l4_n494
+end
+
+def fun_l3_n491()
+ fun_l4_n479
+end
+
+def fun_l3_n492()
+ fun_l4_n733
+end
+
+def fun_l3_n493()
+ fun_l4_n394
+end
+
+def fun_l3_n494()
+ fun_l4_n39
+end
+
+def fun_l3_n495()
+ fun_l4_n866
+end
+
+def fun_l3_n496()
+ fun_l4_n151
+end
+
+def fun_l3_n497()
+ fun_l4_n155
+end
+
+def fun_l3_n498()
+ fun_l4_n417
+end
+
+def fun_l3_n499()
+ fun_l4_n933
+end
+
+def fun_l3_n500()
+ fun_l4_n44
+end
+
+def fun_l3_n501()
+ fun_l4_n738
+end
+
+def fun_l3_n502()
+ fun_l4_n859
+end
+
+def fun_l3_n503()
+ fun_l4_n124
+end
+
+def fun_l3_n504()
+ fun_l4_n344
+end
+
+def fun_l3_n505()
+ fun_l4_n921
+end
+
+def fun_l3_n506()
+ fun_l4_n168
+end
+
+def fun_l3_n507()
+ fun_l4_n135
+end
+
+def fun_l3_n508()
+ fun_l4_n730
+end
+
+def fun_l3_n509()
+ fun_l4_n671
+end
+
+def fun_l3_n510()
+ fun_l4_n899
+end
+
+def fun_l3_n511()
+ fun_l4_n630
+end
+
+def fun_l3_n512()
+ fun_l4_n228
+end
+
+def fun_l3_n513()
+ fun_l4_n429
+end
+
+def fun_l3_n514()
+ fun_l4_n723
+end
+
+def fun_l3_n515()
+ fun_l4_n185
+end
+
+def fun_l3_n516()
+ fun_l4_n161
+end
+
+def fun_l3_n517()
+ fun_l4_n491
+end
+
+def fun_l3_n518()
+ fun_l4_n643
+end
+
+def fun_l3_n519()
+ fun_l4_n3
+end
+
+def fun_l3_n520()
+ fun_l4_n399
+end
+
+def fun_l3_n521()
+ fun_l4_n927
+end
+
+def fun_l3_n522()
+ fun_l4_n501
+end
+
+def fun_l3_n523()
+ fun_l4_n729
+end
+
+def fun_l3_n524()
+ fun_l4_n628
+end
+
+def fun_l3_n525()
+ fun_l4_n469
+end
+
+def fun_l3_n526()
+ fun_l4_n754
+end
+
+def fun_l3_n527()
+ fun_l4_n448
+end
+
+def fun_l3_n528()
+ fun_l4_n562
+end
+
+def fun_l3_n529()
+ fun_l4_n779
+end
+
+def fun_l3_n530()
+ fun_l4_n452
+end
+
+def fun_l3_n531()
+ fun_l4_n756
+end
+
+def fun_l3_n532()
+ fun_l4_n107
+end
+
+def fun_l3_n533()
+ fun_l4_n311
+end
+
+def fun_l3_n534()
+ fun_l4_n169
+end
+
+def fun_l3_n535()
+ fun_l4_n956
+end
+
+def fun_l3_n536()
+ fun_l4_n754
+end
+
+def fun_l3_n537()
+ fun_l4_n675
+end
+
+def fun_l3_n538()
+ fun_l4_n636
+end
+
+def fun_l3_n539()
+ fun_l4_n691
+end
+
+def fun_l3_n540()
+ fun_l4_n867
+end
+
+def fun_l3_n541()
+ fun_l4_n179
+end
+
+def fun_l3_n542()
+ fun_l4_n153
+end
+
+def fun_l3_n543()
+ fun_l4_n133
+end
+
+def fun_l3_n544()
+ fun_l4_n592
+end
+
+def fun_l3_n545()
+ fun_l4_n71
+end
+
+def fun_l3_n546()
+ fun_l4_n87
+end
+
+def fun_l3_n547()
+ fun_l4_n740
+end
+
+def fun_l3_n548()
+ fun_l4_n436
+end
+
+def fun_l3_n549()
+ fun_l4_n59
+end
+
+def fun_l3_n550()
+ fun_l4_n252
+end
+
+def fun_l3_n551()
+ fun_l4_n596
+end
+
+def fun_l3_n552()
+ fun_l4_n851
+end
+
+def fun_l3_n553()
+ fun_l4_n708
+end
+
+def fun_l3_n554()
+ fun_l4_n210
+end
+
+def fun_l3_n555()
+ fun_l4_n931
+end
+
+def fun_l3_n556()
+ fun_l4_n293
+end
+
+def fun_l3_n557()
+ fun_l4_n413
+end
+
+def fun_l3_n558()
+ fun_l4_n547
+end
+
+def fun_l3_n559()
+ fun_l4_n338
+end
+
+def fun_l3_n560()
+ fun_l4_n194
+end
+
+def fun_l3_n561()
+ fun_l4_n937
+end
+
+def fun_l3_n562()
+ fun_l4_n19
+end
+
+def fun_l3_n563()
+ fun_l4_n651
+end
+
+def fun_l3_n564()
+ fun_l4_n364
+end
+
+def fun_l3_n565()
+ fun_l4_n295
+end
+
+def fun_l3_n566()
+ fun_l4_n946
+end
+
+def fun_l3_n567()
+ fun_l4_n712
+end
+
+def fun_l3_n568()
+ fun_l4_n243
+end
+
+def fun_l3_n569()
+ fun_l4_n563
+end
+
+def fun_l3_n570()
+ fun_l4_n651
+end
+
+def fun_l3_n571()
+ fun_l4_n645
+end
+
+def fun_l3_n572()
+ fun_l4_n46
+end
+
+def fun_l3_n573()
+ fun_l4_n971
+end
+
+def fun_l3_n574()
+ fun_l4_n769
+end
+
+def fun_l3_n575()
+ fun_l4_n315
+end
+
+def fun_l3_n576()
+ fun_l4_n657
+end
+
+def fun_l3_n577()
+ fun_l4_n607
+end
+
+def fun_l3_n578()
+ fun_l4_n352
+end
+
+def fun_l3_n579()
+ fun_l4_n346
+end
+
+def fun_l3_n580()
+ fun_l4_n424
+end
+
+def fun_l3_n581()
+ fun_l4_n703
+end
+
+def fun_l3_n582()
+ fun_l4_n872
+end
+
+def fun_l3_n583()
+ fun_l4_n828
+end
+
+def fun_l3_n584()
+ fun_l4_n283
+end
+
+def fun_l3_n585()
+ fun_l4_n557
+end
+
+def fun_l3_n586()
+ fun_l4_n942
+end
+
+def fun_l3_n587()
+ fun_l4_n121
+end
+
+def fun_l3_n588()
+ fun_l4_n866
+end
+
+def fun_l3_n589()
+ fun_l4_n539
+end
+
+def fun_l3_n590()
+ fun_l4_n240
+end
+
+def fun_l3_n591()
+ fun_l4_n438
+end
+
+def fun_l3_n592()
+ fun_l4_n652
+end
+
+def fun_l3_n593()
+ fun_l4_n540
+end
+
+def fun_l3_n594()
+ fun_l4_n122
+end
+
+def fun_l3_n595()
+ fun_l4_n877
+end
+
+def fun_l3_n596()
+ fun_l4_n30
+end
+
+def fun_l3_n597()
+ fun_l4_n465
+end
+
+def fun_l3_n598()
+ fun_l4_n964
+end
+
+def fun_l3_n599()
+ fun_l4_n123
+end
+
+def fun_l3_n600()
+ fun_l4_n365
+end
+
+def fun_l3_n601()
+ fun_l4_n531
+end
+
+def fun_l3_n602()
+ fun_l4_n774
+end
+
+def fun_l3_n603()
+ fun_l4_n961
+end
+
+def fun_l3_n604()
+ fun_l4_n360
+end
+
+def fun_l3_n605()
+ fun_l4_n640
+end
+
+def fun_l3_n606()
+ fun_l4_n785
+end
+
+def fun_l3_n607()
+ fun_l4_n433
+end
+
+def fun_l3_n608()
+ fun_l4_n528
+end
+
+def fun_l3_n609()
+ fun_l4_n125
+end
+
+def fun_l3_n610()
+ fun_l4_n179
+end
+
+def fun_l3_n611()
+ fun_l4_n946
+end
+
+def fun_l3_n612()
+ fun_l4_n899
+end
+
+def fun_l3_n613()
+ fun_l4_n917
+end
+
+def fun_l3_n614()
+ fun_l4_n444
+end
+
+def fun_l3_n615()
+ fun_l4_n823
+end
+
+def fun_l3_n616()
+ fun_l4_n221
+end
+
+def fun_l3_n617()
+ fun_l4_n483
+end
+
+def fun_l3_n618()
+ fun_l4_n112
+end
+
+def fun_l3_n619()
+ fun_l4_n814
+end
+
+def fun_l3_n620()
+ fun_l4_n648
+end
+
+def fun_l3_n621()
+ fun_l4_n823
+end
+
+def fun_l3_n622()
+ fun_l4_n457
+end
+
+def fun_l3_n623()
+ fun_l4_n92
+end
+
+def fun_l3_n624()
+ fun_l4_n8
+end
+
+def fun_l3_n625()
+ fun_l4_n297
+end
+
+def fun_l3_n626()
+ fun_l4_n517
+end
+
+def fun_l3_n627()
+ fun_l4_n159
+end
+
+def fun_l3_n628()
+ fun_l4_n79
+end
+
+def fun_l3_n629()
+ fun_l4_n791
+end
+
+def fun_l3_n630()
+ fun_l4_n692
+end
+
+def fun_l3_n631()
+ fun_l4_n554
+end
+
+def fun_l3_n632()
+ fun_l4_n872
+end
+
+def fun_l3_n633()
+ fun_l4_n871
+end
+
+def fun_l3_n634()
+ fun_l4_n524
+end
+
+def fun_l3_n635()
+ fun_l4_n588
+end
+
+def fun_l3_n636()
+ fun_l4_n596
+end
+
+def fun_l3_n637()
+ fun_l4_n936
+end
+
+def fun_l3_n638()
+ fun_l4_n478
+end
+
+def fun_l3_n639()
+ fun_l4_n893
+end
+
+def fun_l3_n640()
+ fun_l4_n348
+end
+
+def fun_l3_n641()
+ fun_l4_n806
+end
+
+def fun_l3_n642()
+ fun_l4_n522
+end
+
+def fun_l3_n643()
+ fun_l4_n249
+end
+
+def fun_l3_n644()
+ fun_l4_n208
+end
+
+def fun_l3_n645()
+ fun_l4_n989
+end
+
+def fun_l3_n646()
+ fun_l4_n194
+end
+
+def fun_l3_n647()
+ fun_l4_n157
+end
+
+def fun_l3_n648()
+ fun_l4_n395
+end
+
+def fun_l3_n649()
+ fun_l4_n191
+end
+
+def fun_l3_n650()
+ fun_l4_n292
+end
+
+def fun_l3_n651()
+ fun_l4_n640
+end
+
+def fun_l3_n652()
+ fun_l4_n818
+end
+
+def fun_l3_n653()
+ fun_l4_n481
+end
+
+def fun_l3_n654()
+ fun_l4_n304
+end
+
+def fun_l3_n655()
+ fun_l4_n102
+end
+
+def fun_l3_n656()
+ fun_l4_n51
+end
+
+def fun_l3_n657()
+ fun_l4_n110
+end
+
+def fun_l3_n658()
+ fun_l4_n226
+end
+
+def fun_l3_n659()
+ fun_l4_n48
+end
+
+def fun_l3_n660()
+ fun_l4_n112
+end
+
+def fun_l3_n661()
+ fun_l4_n677
+end
+
+def fun_l3_n662()
+ fun_l4_n168
+end
+
+def fun_l3_n663()
+ fun_l4_n15
+end
+
+def fun_l3_n664()
+ fun_l4_n311
+end
+
+def fun_l3_n665()
+ fun_l4_n935
+end
+
+def fun_l3_n666()
+ fun_l4_n861
+end
+
+def fun_l3_n667()
+ fun_l4_n169
+end
+
+def fun_l3_n668()
+ fun_l4_n395
+end
+
+def fun_l3_n669()
+ fun_l4_n371
+end
+
+def fun_l3_n670()
+ fun_l4_n625
+end
+
+def fun_l3_n671()
+ fun_l4_n183
+end
+
+def fun_l3_n672()
+ fun_l4_n299
+end
+
+def fun_l3_n673()
+ fun_l4_n104
+end
+
+def fun_l3_n674()
+ fun_l4_n413
+end
+
+def fun_l3_n675()
+ fun_l4_n957
+end
+
+def fun_l3_n676()
+ fun_l4_n878
+end
+
+def fun_l3_n677()
+ fun_l4_n222
+end
+
+def fun_l3_n678()
+ fun_l4_n832
+end
+
+def fun_l3_n679()
+ fun_l4_n406
+end
+
+def fun_l3_n680()
+ fun_l4_n779
+end
+
+def fun_l3_n681()
+ fun_l4_n874
+end
+
+def fun_l3_n682()
+ fun_l4_n328
+end
+
+def fun_l3_n683()
+ fun_l4_n412
+end
+
+def fun_l3_n684()
+ fun_l4_n46
+end
+
+def fun_l3_n685()
+ fun_l4_n799
+end
+
+def fun_l3_n686()
+ fun_l4_n751
+end
+
+def fun_l3_n687()
+ fun_l4_n32
+end
+
+def fun_l3_n688()
+ fun_l4_n237
+end
+
+def fun_l3_n689()
+ fun_l4_n770
+end
+
+def fun_l3_n690()
+ fun_l4_n120
+end
+
+def fun_l3_n691()
+ fun_l4_n977
+end
+
+def fun_l3_n692()
+ fun_l4_n35
+end
+
+def fun_l3_n693()
+ fun_l4_n398
+end
+
+def fun_l3_n694()
+ fun_l4_n551
+end
+
+def fun_l3_n695()
+ fun_l4_n122
+end
+
+def fun_l3_n696()
+ fun_l4_n268
+end
+
+def fun_l3_n697()
+ fun_l4_n628
+end
+
+def fun_l3_n698()
+ fun_l4_n611
+end
+
+def fun_l3_n699()
+ fun_l4_n382
+end
+
+def fun_l3_n700()
+ fun_l4_n819
+end
+
+def fun_l3_n701()
+ fun_l4_n124
+end
+
+def fun_l3_n702()
+ fun_l4_n529
+end
+
+def fun_l3_n703()
+ fun_l4_n838
+end
+
+def fun_l3_n704()
+ fun_l4_n181
+end
+
+def fun_l3_n705()
+ fun_l4_n123
+end
+
+def fun_l3_n706()
+ fun_l4_n646
+end
+
+def fun_l3_n707()
+ fun_l4_n193
+end
+
+def fun_l3_n708()
+ fun_l4_n233
+end
+
+def fun_l3_n709()
+ fun_l4_n621
+end
+
+def fun_l3_n710()
+ fun_l4_n772
+end
+
+def fun_l3_n711()
+ fun_l4_n461
+end
+
+def fun_l3_n712()
+ fun_l4_n673
+end
+
+def fun_l3_n713()
+ fun_l4_n101
+end
+
+def fun_l3_n714()
+ fun_l4_n467
+end
+
+def fun_l3_n715()
+ fun_l4_n211
+end
+
+def fun_l3_n716()
+ fun_l4_n554
+end
+
+def fun_l3_n717()
+ fun_l4_n276
+end
+
+def fun_l3_n718()
+ fun_l4_n655
+end
+
+def fun_l3_n719()
+ fun_l4_n425
+end
+
+def fun_l3_n720()
+ fun_l4_n241
+end
+
+def fun_l3_n721()
+ fun_l4_n904
+end
+
+def fun_l3_n722()
+ fun_l4_n839
+end
+
+def fun_l3_n723()
+ fun_l4_n991
+end
+
+def fun_l3_n724()
+ fun_l4_n556
+end
+
+def fun_l3_n725()
+ fun_l4_n86
+end
+
+def fun_l3_n726()
+ fun_l4_n953
+end
+
+def fun_l3_n727()
+ fun_l4_n18
+end
+
+def fun_l3_n728()
+ fun_l4_n374
+end
+
+def fun_l3_n729()
+ fun_l4_n712
+end
+
+def fun_l3_n730()
+ fun_l4_n228
+end
+
+def fun_l3_n731()
+ fun_l4_n830
+end
+
+def fun_l3_n732()
+ fun_l4_n49
+end
+
+def fun_l3_n733()
+ fun_l4_n987
+end
+
+def fun_l3_n734()
+ fun_l4_n815
+end
+
+def fun_l3_n735()
+ fun_l4_n386
+end
+
+def fun_l3_n736()
+ fun_l4_n843
+end
+
+def fun_l3_n737()
+ fun_l4_n958
+end
+
+def fun_l3_n738()
+ fun_l4_n317
+end
+
+def fun_l3_n739()
+ fun_l4_n361
+end
+
+def fun_l3_n740()
+ fun_l4_n392
+end
+
+def fun_l3_n741()
+ fun_l4_n888
+end
+
+def fun_l3_n742()
+ fun_l4_n186
+end
+
+def fun_l3_n743()
+ fun_l4_n493
+end
+
+def fun_l3_n744()
+ fun_l4_n302
+end
+
+def fun_l3_n745()
+ fun_l4_n690
+end
+
+def fun_l3_n746()
+ fun_l4_n601
+end
+
+def fun_l3_n747()
+ fun_l4_n975
+end
+
+def fun_l3_n748()
+ fun_l4_n543
+end
+
+def fun_l3_n749()
+ fun_l4_n8
+end
+
+def fun_l3_n750()
+ fun_l4_n905
+end
+
+def fun_l3_n751()
+ fun_l4_n964
+end
+
+def fun_l3_n752()
+ fun_l4_n739
+end
+
+def fun_l3_n753()
+ fun_l4_n24
+end
+
+def fun_l3_n754()
+ fun_l4_n806
+end
+
+def fun_l3_n755()
+ fun_l4_n704
+end
+
+def fun_l3_n756()
+ fun_l4_n579
+end
+
+def fun_l3_n757()
+ fun_l4_n264
+end
+
+def fun_l3_n758()
+ fun_l4_n357
+end
+
+def fun_l3_n759()
+ fun_l4_n333
+end
+
+def fun_l3_n760()
+ fun_l4_n309
+end
+
+def fun_l3_n761()
+ fun_l4_n419
+end
+
+def fun_l3_n762()
+ fun_l4_n347
+end
+
+def fun_l3_n763()
+ fun_l4_n132
+end
+
+def fun_l3_n764()
+ fun_l4_n45
+end
+
+def fun_l3_n765()
+ fun_l4_n740
+end
+
+def fun_l3_n766()
+ fun_l4_n332
+end
+
+def fun_l3_n767()
+ fun_l4_n600
+end
+
+def fun_l3_n768()
+ fun_l4_n343
+end
+
+def fun_l3_n769()
+ fun_l4_n872
+end
+
+def fun_l3_n770()
+ fun_l4_n326
+end
+
+def fun_l3_n771()
+ fun_l4_n862
+end
+
+def fun_l3_n772()
+ fun_l4_n800
+end
+
+def fun_l3_n773()
+ fun_l4_n616
+end
+
+def fun_l3_n774()
+ fun_l4_n392
+end
+
+def fun_l3_n775()
+ fun_l4_n252
+end
+
+def fun_l3_n776()
+ fun_l4_n289
+end
+
+def fun_l3_n777()
+ fun_l4_n789
+end
+
+def fun_l3_n778()
+ fun_l4_n370
+end
+
+def fun_l3_n779()
+ fun_l4_n969
+end
+
+def fun_l3_n780()
+ fun_l4_n444
+end
+
+def fun_l3_n781()
+ fun_l4_n671
+end
+
+def fun_l3_n782()
+ fun_l4_n301
+end
+
+def fun_l3_n783()
+ fun_l4_n418
+end
+
+def fun_l3_n784()
+ fun_l4_n491
+end
+
+def fun_l3_n785()
+ fun_l4_n746
+end
+
+def fun_l3_n786()
+ fun_l4_n212
+end
+
+def fun_l3_n787()
+ fun_l4_n856
+end
+
+def fun_l3_n788()
+ fun_l4_n155
+end
+
+def fun_l3_n789()
+ fun_l4_n685
+end
+
+def fun_l3_n790()
+ fun_l4_n879
+end
+
+def fun_l3_n791()
+ fun_l4_n363
+end
+
+def fun_l3_n792()
+ fun_l4_n231
+end
+
+def fun_l3_n793()
+ fun_l4_n727
+end
+
+def fun_l3_n794()
+ fun_l4_n355
+end
+
+def fun_l3_n795()
+ fun_l4_n671
+end
+
+def fun_l3_n796()
+ fun_l4_n20
+end
+
+def fun_l3_n797()
+ fun_l4_n523
+end
+
+def fun_l3_n798()
+ fun_l4_n26
+end
+
+def fun_l3_n799()
+ fun_l4_n785
+end
+
+def fun_l3_n800()
+ fun_l4_n458
+end
+
+def fun_l3_n801()
+ fun_l4_n160
+end
+
+def fun_l3_n802()
+ fun_l4_n543
+end
+
+def fun_l3_n803()
+ fun_l4_n292
+end
+
+def fun_l3_n804()
+ fun_l4_n64
+end
+
+def fun_l3_n805()
+ fun_l4_n851
+end
+
+def fun_l3_n806()
+ fun_l4_n369
+end
+
+def fun_l3_n807()
+ fun_l4_n827
+end
+
+def fun_l3_n808()
+ fun_l4_n420
+end
+
+def fun_l3_n809()
+ fun_l4_n98
+end
+
+def fun_l3_n810()
+ fun_l4_n508
+end
+
+def fun_l3_n811()
+ fun_l4_n366
+end
+
+def fun_l3_n812()
+ fun_l4_n795
+end
+
+def fun_l3_n813()
+ fun_l4_n345
+end
+
+def fun_l3_n814()
+ fun_l4_n505
+end
+
+def fun_l3_n815()
+ fun_l4_n302
+end
+
+def fun_l3_n816()
+ fun_l4_n561
+end
+
+def fun_l3_n817()
+ fun_l4_n781
+end
+
+def fun_l3_n818()
+ fun_l4_n599
+end
+
+def fun_l3_n819()
+ fun_l4_n967
+end
+
+def fun_l3_n820()
+ fun_l4_n691
+end
+
+def fun_l3_n821()
+ fun_l4_n563
+end
+
+def fun_l3_n822()
+ fun_l4_n769
+end
+
+def fun_l3_n823()
+ fun_l4_n531
+end
+
+def fun_l3_n824()
+ fun_l4_n957
+end
+
+def fun_l3_n825()
+ fun_l4_n395
+end
+
+def fun_l3_n826()
+ fun_l4_n92
+end
+
+def fun_l3_n827()
+ fun_l4_n781
+end
+
+def fun_l3_n828()
+ fun_l4_n758
+end
+
+def fun_l3_n829()
+ fun_l4_n648
+end
+
+def fun_l3_n830()
+ fun_l4_n799
+end
+
+def fun_l3_n831()
+ fun_l4_n922
+end
+
+def fun_l3_n832()
+ fun_l4_n808
+end
+
+def fun_l3_n833()
+ fun_l4_n180
+end
+
+def fun_l3_n834()
+ fun_l4_n126
+end
+
+def fun_l3_n835()
+ fun_l4_n261
+end
+
+def fun_l3_n836()
+ fun_l4_n470
+end
+
+def fun_l3_n837()
+ fun_l4_n441
+end
+
+def fun_l3_n838()
+ fun_l4_n505
+end
+
+def fun_l3_n839()
+ fun_l4_n490
+end
+
+def fun_l3_n840()
+ fun_l4_n663
+end
+
+def fun_l3_n841()
+ fun_l4_n256
+end
+
+def fun_l3_n842()
+ fun_l4_n797
+end
+
+def fun_l3_n843()
+ fun_l4_n836
+end
+
+def fun_l3_n844()
+ fun_l4_n868
+end
+
+def fun_l3_n845()
+ fun_l4_n927
+end
+
+def fun_l3_n846()
+ fun_l4_n746
+end
+
+def fun_l3_n847()
+ fun_l4_n143
+end
+
+def fun_l3_n848()
+ fun_l4_n90
+end
+
+def fun_l3_n849()
+ fun_l4_n63
+end
+
+def fun_l3_n850()
+ fun_l4_n629
+end
+
+def fun_l3_n851()
+ fun_l4_n66
+end
+
+def fun_l3_n852()
+ fun_l4_n192
+end
+
+def fun_l3_n853()
+ fun_l4_n780
+end
+
+def fun_l3_n854()
+ fun_l4_n744
+end
+
+def fun_l3_n855()
+ fun_l4_n989
+end
+
+def fun_l3_n856()
+ fun_l4_n609
+end
+
+def fun_l3_n857()
+ fun_l4_n534
+end
+
+def fun_l3_n858()
+ fun_l4_n961
+end
+
+def fun_l3_n859()
+ fun_l4_n605
+end
+
+def fun_l3_n860()
+ fun_l4_n675
+end
+
+def fun_l3_n861()
+ fun_l4_n520
+end
+
+def fun_l3_n862()
+ fun_l4_n656
+end
+
+def fun_l3_n863()
+ fun_l4_n917
+end
+
+def fun_l3_n864()
+ fun_l4_n291
+end
+
+def fun_l3_n865()
+ fun_l4_n343
+end
+
+def fun_l3_n866()
+ fun_l4_n704
+end
+
+def fun_l3_n867()
+ fun_l4_n368
+end
+
+def fun_l3_n868()
+ fun_l4_n678
+end
+
+def fun_l3_n869()
+ fun_l4_n788
+end
+
+def fun_l3_n870()
+ fun_l4_n458
+end
+
+def fun_l3_n871()
+ fun_l4_n882
+end
+
+def fun_l3_n872()
+ fun_l4_n830
+end
+
+def fun_l3_n873()
+ fun_l4_n434
+end
+
+def fun_l3_n874()
+ fun_l4_n92
+end
+
+def fun_l3_n875()
+ fun_l4_n633
+end
+
+def fun_l3_n876()
+ fun_l4_n243
+end
+
+def fun_l3_n877()
+ fun_l4_n641
+end
+
+def fun_l3_n878()
+ fun_l4_n114
+end
+
+def fun_l3_n879()
+ fun_l4_n696
+end
+
+def fun_l3_n880()
+ fun_l4_n354
+end
+
+def fun_l3_n881()
+ fun_l4_n644
+end
+
+def fun_l3_n882()
+ fun_l4_n771
+end
+
+def fun_l3_n883()
+ fun_l4_n196
+end
+
+def fun_l3_n884()
+ fun_l4_n202
+end
+
+def fun_l3_n885()
+ fun_l4_n322
+end
+
+def fun_l3_n886()
+ fun_l4_n125
+end
+
+def fun_l3_n887()
+ fun_l4_n760
+end
+
+def fun_l3_n888()
+ fun_l4_n69
+end
+
+def fun_l3_n889()
+ fun_l4_n101
+end
+
+def fun_l3_n890()
+ fun_l4_n108
+end
+
+def fun_l3_n891()
+ fun_l4_n929
+end
+
+def fun_l3_n892()
+ fun_l4_n766
+end
+
+def fun_l3_n893()
+ fun_l4_n811
+end
+
+def fun_l3_n894()
+ fun_l4_n169
+end
+
+def fun_l3_n895()
+ fun_l4_n613
+end
+
+def fun_l3_n896()
+ fun_l4_n145
+end
+
+def fun_l3_n897()
+ fun_l4_n780
+end
+
+def fun_l3_n898()
+ fun_l4_n972
+end
+
+def fun_l3_n899()
+ fun_l4_n508
+end
+
+def fun_l3_n900()
+ fun_l4_n468
+end
+
+def fun_l3_n901()
+ fun_l4_n968
+end
+
+def fun_l3_n902()
+ fun_l4_n714
+end
+
+def fun_l3_n903()
+ fun_l4_n817
+end
+
+def fun_l3_n904()
+ fun_l4_n111
+end
+
+def fun_l3_n905()
+ fun_l4_n115
+end
+
+def fun_l3_n906()
+ fun_l4_n593
+end
+
+def fun_l3_n907()
+ fun_l4_n961
+end
+
+def fun_l3_n908()
+ fun_l4_n362
+end
+
+def fun_l3_n909()
+ fun_l4_n251
+end
+
+def fun_l3_n910()
+ fun_l4_n532
+end
+
+def fun_l3_n911()
+ fun_l4_n252
+end
+
+def fun_l3_n912()
+ fun_l4_n751
+end
+
+def fun_l3_n913()
+ fun_l4_n962
+end
+
+def fun_l3_n914()
+ fun_l4_n151
+end
+
+def fun_l3_n915()
+ fun_l4_n91
+end
+
+def fun_l3_n916()
+ fun_l4_n164
+end
+
+def fun_l3_n917()
+ fun_l4_n714
+end
+
+def fun_l3_n918()
+ fun_l4_n496
+end
+
+def fun_l3_n919()
+ fun_l4_n833
+end
+
+def fun_l3_n920()
+ fun_l4_n315
+end
+
+def fun_l3_n921()
+ fun_l4_n551
+end
+
+def fun_l3_n922()
+ fun_l4_n986
+end
+
+def fun_l3_n923()
+ fun_l4_n924
+end
+
+def fun_l3_n924()
+ fun_l4_n670
+end
+
+def fun_l3_n925()
+ fun_l4_n611
+end
+
+def fun_l3_n926()
+ fun_l4_n590
+end
+
+def fun_l3_n927()
+ fun_l4_n951
+end
+
+def fun_l3_n928()
+ fun_l4_n438
+end
+
+def fun_l3_n929()
+ fun_l4_n914
+end
+
+def fun_l3_n930()
+ fun_l4_n357
+end
+
+def fun_l3_n931()
+ fun_l4_n330
+end
+
+def fun_l3_n932()
+ fun_l4_n737
+end
+
+def fun_l3_n933()
+ fun_l4_n857
+end
+
+def fun_l3_n934()
+ fun_l4_n32
+end
+
+def fun_l3_n935()
+ fun_l4_n980
+end
+
+def fun_l3_n936()
+ fun_l4_n229
+end
+
+def fun_l3_n937()
+ fun_l4_n779
+end
+
+def fun_l3_n938()
+ fun_l4_n365
+end
+
+def fun_l3_n939()
+ fun_l4_n681
+end
+
+def fun_l3_n940()
+ fun_l4_n55
+end
+
+def fun_l3_n941()
+ fun_l4_n324
+end
+
+def fun_l3_n942()
+ fun_l4_n630
+end
+
+def fun_l3_n943()
+ fun_l4_n910
+end
+
+def fun_l3_n944()
+ fun_l4_n590
+end
+
+def fun_l3_n945()
+ fun_l4_n798
+end
+
+def fun_l3_n946()
+ fun_l4_n973
+end
+
+def fun_l3_n947()
+ fun_l4_n180
+end
+
+def fun_l3_n948()
+ fun_l4_n425
+end
+
+def fun_l3_n949()
+ fun_l4_n446
+end
+
+def fun_l3_n950()
+ fun_l4_n296
+end
+
+def fun_l3_n951()
+ fun_l4_n61
+end
+
+def fun_l3_n952()
+ fun_l4_n797
+end
+
+def fun_l3_n953()
+ fun_l4_n824
+end
+
+def fun_l3_n954()
+ fun_l4_n336
+end
+
+def fun_l3_n955()
+ fun_l4_n82
+end
+
+def fun_l3_n956()
+ fun_l4_n310
+end
+
+def fun_l3_n957()
+ fun_l4_n983
+end
+
+def fun_l3_n958()
+ fun_l4_n780
+end
+
+def fun_l3_n959()
+ fun_l4_n697
+end
+
+def fun_l3_n960()
+ fun_l4_n822
+end
+
+def fun_l3_n961()
+ fun_l4_n209
+end
+
+def fun_l3_n962()
+ fun_l4_n549
+end
+
+def fun_l3_n963()
+ fun_l4_n226
+end
+
+def fun_l3_n964()
+ fun_l4_n324
+end
+
+def fun_l3_n965()
+ fun_l4_n63
+end
+
+def fun_l3_n966()
+ fun_l4_n430
+end
+
+def fun_l3_n967()
+ fun_l4_n645
+end
+
+def fun_l3_n968()
+ fun_l4_n875
+end
+
+def fun_l3_n969()
+ fun_l4_n713
+end
+
+def fun_l3_n970()
+ fun_l4_n457
+end
+
+def fun_l3_n971()
+ fun_l4_n768
+end
+
+def fun_l3_n972()
+ fun_l4_n548
+end
+
+def fun_l3_n973()
+ fun_l4_n577
+end
+
+def fun_l3_n974()
+ fun_l4_n109
+end
+
+def fun_l3_n975()
+ fun_l4_n460
+end
+
+def fun_l3_n976()
+ fun_l4_n83
+end
+
+def fun_l3_n977()
+ fun_l4_n152
+end
+
+def fun_l3_n978()
+ fun_l4_n224
+end
+
+def fun_l3_n979()
+ fun_l4_n897
+end
+
+def fun_l3_n980()
+ fun_l4_n830
+end
+
+def fun_l3_n981()
+ fun_l4_n747
+end
+
+def fun_l3_n982()
+ fun_l4_n21
+end
+
+def fun_l3_n983()
+ fun_l4_n84
+end
+
+def fun_l3_n984()
+ fun_l4_n342
+end
+
+def fun_l3_n985()
+ fun_l4_n950
+end
+
+def fun_l3_n986()
+ fun_l4_n33
+end
+
+def fun_l3_n987()
+ fun_l4_n388
+end
+
+def fun_l3_n988()
+ fun_l4_n766
+end
+
+def fun_l3_n989()
+ fun_l4_n708
+end
+
+def fun_l3_n990()
+ fun_l4_n392
+end
+
+def fun_l3_n991()
+ fun_l4_n782
+end
+
+def fun_l3_n992()
+ fun_l4_n223
+end
+
+def fun_l3_n993()
+ fun_l4_n416
+end
+
+def fun_l3_n994()
+ fun_l4_n609
+end
+
+def fun_l3_n995()
+ fun_l4_n158
+end
+
+def fun_l3_n996()
+ fun_l4_n246
+end
+
+def fun_l3_n997()
+ fun_l4_n667
+end
+
+def fun_l3_n998()
+ fun_l4_n126
+end
+
+def fun_l3_n999()
+ fun_l4_n726
+end
+
+def fun_l4_n0()
+ fun_l5_n544
+end
+
+def fun_l4_n1()
+ fun_l5_n456
+end
+
+def fun_l4_n2()
+ fun_l5_n364
+end
+
+def fun_l4_n3()
+ fun_l5_n929
+end
+
+def fun_l4_n4()
+ fun_l5_n593
+end
+
+def fun_l4_n5()
+ fun_l5_n287
+end
+
+def fun_l4_n6()
+ fun_l5_n272
+end
+
+def fun_l4_n7()
+ fun_l5_n71
+end
+
+def fun_l4_n8()
+ fun_l5_n704
+end
+
+def fun_l4_n9()
+ fun_l5_n462
+end
+
+def fun_l4_n10()
+ fun_l5_n239
+end
+
+def fun_l4_n11()
+ fun_l5_n853
+end
+
+def fun_l4_n12()
+ fun_l5_n217
+end
+
+def fun_l4_n13()
+ fun_l5_n822
+end
+
+def fun_l4_n14()
+ fun_l5_n663
+end
+
+def fun_l4_n15()
+ fun_l5_n400
+end
+
+def fun_l4_n16()
+ fun_l5_n307
+end
+
+def fun_l4_n17()
+ fun_l5_n820
+end
+
+def fun_l4_n18()
+ fun_l5_n885
+end
+
+def fun_l4_n19()
+ fun_l5_n680
+end
+
+def fun_l4_n20()
+ fun_l5_n592
+end
+
+def fun_l4_n21()
+ fun_l5_n615
+end
+
+def fun_l4_n22()
+ fun_l5_n669
+end
+
+def fun_l4_n23()
+ fun_l5_n978
+end
+
+def fun_l4_n24()
+ fun_l5_n946
+end
+
+def fun_l4_n25()
+ fun_l5_n915
+end
+
+def fun_l4_n26()
+ fun_l5_n286
+end
+
+def fun_l4_n27()
+ fun_l5_n466
+end
+
+def fun_l4_n28()
+ fun_l5_n970
+end
+
+def fun_l4_n29()
+ fun_l5_n822
+end
+
+def fun_l4_n30()
+ fun_l5_n883
+end
+
+def fun_l4_n31()
+ fun_l5_n137
+end
+
+def fun_l4_n32()
+ fun_l5_n957
+end
+
+def fun_l4_n33()
+ fun_l5_n912
+end
+
+def fun_l4_n34()
+ fun_l5_n156
+end
+
+def fun_l4_n35()
+ fun_l5_n207
+end
+
+def fun_l4_n36()
+ fun_l5_n525
+end
+
+def fun_l4_n37()
+ fun_l5_n673
+end
+
+def fun_l4_n38()
+ fun_l5_n151
+end
+
+def fun_l4_n39()
+ fun_l5_n517
+end
+
+def fun_l4_n40()
+ fun_l5_n459
+end
+
+def fun_l4_n41()
+ fun_l5_n738
+end
+
+def fun_l4_n42()
+ fun_l5_n809
+end
+
+def fun_l4_n43()
+ fun_l5_n853
+end
+
+def fun_l4_n44()
+ fun_l5_n653
+end
+
+def fun_l4_n45()
+ fun_l5_n346
+end
+
+def fun_l4_n46()
+ fun_l5_n704
+end
+
+def fun_l4_n47()
+ fun_l5_n662
+end
+
+def fun_l4_n48()
+ fun_l5_n990
+end
+
+def fun_l4_n49()
+ fun_l5_n731
+end
+
+def fun_l4_n50()
+ fun_l5_n305
+end
+
+def fun_l4_n51()
+ fun_l5_n238
+end
+
+def fun_l4_n52()
+ fun_l5_n710
+end
+
+def fun_l4_n53()
+ fun_l5_n61
+end
+
+def fun_l4_n54()
+ fun_l5_n572
+end
+
+def fun_l4_n55()
+ fun_l5_n939
+end
+
+def fun_l4_n56()
+ fun_l5_n223
+end
+
+def fun_l4_n57()
+ fun_l5_n466
+end
+
+def fun_l4_n58()
+ fun_l5_n442
+end
+
+def fun_l4_n59()
+ fun_l5_n971
+end
+
+def fun_l4_n60()
+ fun_l5_n42
+end
+
+def fun_l4_n61()
+ fun_l5_n390
+end
+
+def fun_l4_n62()
+ fun_l5_n254
+end
+
+def fun_l4_n63()
+ fun_l5_n522
+end
+
+def fun_l4_n64()
+ fun_l5_n16
+end
+
+def fun_l4_n65()
+ fun_l5_n567
+end
+
+def fun_l4_n66()
+ fun_l5_n353
+end
+
+def fun_l4_n67()
+ fun_l5_n676
+end
+
+def fun_l4_n68()
+ fun_l5_n526
+end
+
+def fun_l4_n69()
+ fun_l5_n140
+end
+
+def fun_l4_n70()
+ fun_l5_n829
+end
+
+def fun_l4_n71()
+ fun_l5_n562
+end
+
+def fun_l4_n72()
+ fun_l5_n489
+end
+
+def fun_l4_n73()
+ fun_l5_n205
+end
+
+def fun_l4_n74()
+ fun_l5_n558
+end
+
+def fun_l4_n75()
+ fun_l5_n689
+end
+
+def fun_l4_n76()
+ fun_l5_n803
+end
+
+def fun_l4_n77()
+ fun_l5_n222
+end
+
+def fun_l4_n78()
+ fun_l5_n696
+end
+
+def fun_l4_n79()
+ fun_l5_n457
+end
+
+def fun_l4_n80()
+ fun_l5_n794
+end
+
+def fun_l4_n81()
+ fun_l5_n886
+end
+
+def fun_l4_n82()
+ fun_l5_n742
+end
+
+def fun_l4_n83()
+ fun_l5_n560
+end
+
+def fun_l4_n84()
+ fun_l5_n207
+end
+
+def fun_l4_n85()
+ fun_l5_n265
+end
+
+def fun_l4_n86()
+ fun_l5_n871
+end
+
+def fun_l4_n87()
+ fun_l5_n113
+end
+
+def fun_l4_n88()
+ fun_l5_n141
+end
+
+def fun_l4_n89()
+ fun_l5_n231
+end
+
+def fun_l4_n90()
+ fun_l5_n980
+end
+
+def fun_l4_n91()
+ fun_l5_n586
+end
+
+def fun_l4_n92()
+ fun_l5_n961
+end
+
+def fun_l4_n93()
+ fun_l5_n128
+end
+
+def fun_l4_n94()
+ fun_l5_n395
+end
+
+def fun_l4_n95()
+ fun_l5_n810
+end
+
+def fun_l4_n96()
+ fun_l5_n337
+end
+
+def fun_l4_n97()
+ fun_l5_n256
+end
+
+def fun_l4_n98()
+ fun_l5_n188
+end
+
+def fun_l4_n99()
+ fun_l5_n358
+end
+
+def fun_l4_n100()
+ fun_l5_n751
+end
+
+def fun_l4_n101()
+ fun_l5_n898
+end
+
+def fun_l4_n102()
+ fun_l5_n323
+end
+
+def fun_l4_n103()
+ fun_l5_n455
+end
+
+def fun_l4_n104()
+ fun_l5_n976
+end
+
+def fun_l4_n105()
+ fun_l5_n962
+end
+
+def fun_l4_n106()
+ fun_l5_n781
+end
+
+def fun_l4_n107()
+ fun_l5_n277
+end
+
+def fun_l4_n108()
+ fun_l5_n146
+end
+
+def fun_l4_n109()
+ fun_l5_n793
+end
+
+def fun_l4_n110()
+ fun_l5_n787
+end
+
+def fun_l4_n111()
+ fun_l5_n597
+end
+
+def fun_l4_n112()
+ fun_l5_n799
+end
+
+def fun_l4_n113()
+ fun_l5_n598
+end
+
+def fun_l4_n114()
+ fun_l5_n456
+end
+
+def fun_l4_n115()
+ fun_l5_n45
+end
+
+def fun_l4_n116()
+ fun_l5_n265
+end
+
+def fun_l4_n117()
+ fun_l5_n661
+end
+
+def fun_l4_n118()
+ fun_l5_n657
+end
+
+def fun_l4_n119()
+ fun_l5_n703
+end
+
+def fun_l4_n120()
+ fun_l5_n164
+end
+
+def fun_l4_n121()
+ fun_l5_n182
+end
+
+def fun_l4_n122()
+ fun_l5_n605
+end
+
+def fun_l4_n123()
+ fun_l5_n237
+end
+
+def fun_l4_n124()
+ fun_l5_n582
+end
+
+def fun_l4_n125()
+ fun_l5_n381
+end
+
+def fun_l4_n126()
+ fun_l5_n244
+end
+
+def fun_l4_n127()
+ fun_l5_n272
+end
+
+def fun_l4_n128()
+ fun_l5_n989
+end
+
+def fun_l4_n129()
+ fun_l5_n366
+end
+
+def fun_l4_n130()
+ fun_l5_n640
+end
+
+def fun_l4_n131()
+ fun_l5_n953
+end
+
+def fun_l4_n132()
+ fun_l5_n990
+end
+
+def fun_l4_n133()
+ fun_l5_n497
+end
+
+def fun_l4_n134()
+ fun_l5_n12
+end
+
+def fun_l4_n135()
+ fun_l5_n993
+end
+
+def fun_l4_n136()
+ fun_l5_n802
+end
+
+def fun_l4_n137()
+ fun_l5_n411
+end
+
+def fun_l4_n138()
+ fun_l5_n154
+end
+
+def fun_l4_n139()
+ fun_l5_n924
+end
+
+def fun_l4_n140()
+ fun_l5_n772
+end
+
+def fun_l4_n141()
+ fun_l5_n972
+end
+
+def fun_l4_n142()
+ fun_l5_n847
+end
+
+def fun_l4_n143()
+ fun_l5_n481
+end
+
+def fun_l4_n144()
+ fun_l5_n52
+end
+
+def fun_l4_n145()
+ fun_l5_n451
+end
+
+def fun_l4_n146()
+ fun_l5_n339
+end
+
+def fun_l4_n147()
+ fun_l5_n531
+end
+
+def fun_l4_n148()
+ fun_l5_n735
+end
+
+def fun_l4_n149()
+ fun_l5_n747
+end
+
+def fun_l4_n150()
+ fun_l5_n750
+end
+
+def fun_l4_n151()
+ fun_l5_n762
+end
+
+def fun_l4_n152()
+ fun_l5_n131
+end
+
+def fun_l4_n153()
+ fun_l5_n532
+end
+
+def fun_l4_n154()
+ fun_l5_n398
+end
+
+def fun_l4_n155()
+ fun_l5_n660
+end
+
+def fun_l4_n156()
+ fun_l5_n374
+end
+
+def fun_l4_n157()
+ fun_l5_n245
+end
+
+def fun_l4_n158()
+ fun_l5_n850
+end
+
+def fun_l4_n159()
+ fun_l5_n518
+end
+
+def fun_l4_n160()
+ fun_l5_n607
+end
+
+def fun_l4_n161()
+ fun_l5_n823
+end
+
+def fun_l4_n162()
+ fun_l5_n816
+end
+
+def fun_l4_n163()
+ fun_l5_n735
+end
+
+def fun_l4_n164()
+ fun_l5_n802
+end
+
+def fun_l4_n165()
+ fun_l5_n398
+end
+
+def fun_l4_n166()
+ fun_l5_n149
+end
+
+def fun_l4_n167()
+ fun_l5_n292
+end
+
+def fun_l4_n168()
+ fun_l5_n733
+end
+
+def fun_l4_n169()
+ fun_l5_n145
+end
+
+def fun_l4_n170()
+ fun_l5_n288
+end
+
+def fun_l4_n171()
+ fun_l5_n131
+end
+
+def fun_l4_n172()
+ fun_l5_n31
+end
+
+def fun_l4_n173()
+ fun_l5_n253
+end
+
+def fun_l4_n174()
+ fun_l5_n41
+end
+
+def fun_l4_n175()
+ fun_l5_n403
+end
+
+def fun_l4_n176()
+ fun_l5_n859
+end
+
+def fun_l4_n177()
+ fun_l5_n804
+end
+
+def fun_l4_n178()
+ fun_l5_n26
+end
+
+def fun_l4_n179()
+ fun_l5_n729
+end
+
+def fun_l4_n180()
+ fun_l5_n978
+end
+
+def fun_l4_n181()
+ fun_l5_n42
+end
+
+def fun_l4_n182()
+ fun_l5_n38
+end
+
+def fun_l4_n183()
+ fun_l5_n758
+end
+
+def fun_l4_n184()
+ fun_l5_n885
+end
+
+def fun_l4_n185()
+ fun_l5_n473
+end
+
+def fun_l4_n186()
+ fun_l5_n737
+end
+
+def fun_l4_n187()
+ fun_l5_n889
+end
+
+def fun_l4_n188()
+ fun_l5_n398
+end
+
+def fun_l4_n189()
+ fun_l5_n72
+end
+
+def fun_l4_n190()
+ fun_l5_n725
+end
+
+def fun_l4_n191()
+ fun_l5_n774
+end
+
+def fun_l4_n192()
+ fun_l5_n453
+end
+
+def fun_l4_n193()
+ fun_l5_n370
+end
+
+def fun_l4_n194()
+ fun_l5_n648
+end
+
+def fun_l4_n195()
+ fun_l5_n882
+end
+
+def fun_l4_n196()
+ fun_l5_n745
+end
+
+def fun_l4_n197()
+ fun_l5_n529
+end
+
+def fun_l4_n198()
+ fun_l5_n957
+end
+
+def fun_l4_n199()
+ fun_l5_n423
+end
+
+def fun_l4_n200()
+ fun_l5_n399
+end
+
+def fun_l4_n201()
+ fun_l5_n917
+end
+
+def fun_l4_n202()
+ fun_l5_n634
+end
+
+def fun_l4_n203()
+ fun_l5_n868
+end
+
+def fun_l4_n204()
+ fun_l5_n627
+end
+
+def fun_l4_n205()
+ fun_l5_n514
+end
+
+def fun_l4_n206()
+ fun_l5_n61
+end
+
+def fun_l4_n207()
+ fun_l5_n848
+end
+
+def fun_l4_n208()
+ fun_l5_n611
+end
+
+def fun_l4_n209()
+ fun_l5_n417
+end
+
+def fun_l4_n210()
+ fun_l5_n423
+end
+
+def fun_l4_n211()
+ fun_l5_n247
+end
+
+def fun_l4_n212()
+ fun_l5_n208
+end
+
+def fun_l4_n213()
+ fun_l5_n253
+end
+
+def fun_l4_n214()
+ fun_l5_n833
+end
+
+def fun_l4_n215()
+ fun_l5_n351
+end
+
+def fun_l4_n216()
+ fun_l5_n326
+end
+
+def fun_l4_n217()
+ fun_l5_n741
+end
+
+def fun_l4_n218()
+ fun_l5_n958
+end
+
+def fun_l4_n219()
+ fun_l5_n347
+end
+
+def fun_l4_n220()
+ fun_l5_n317
+end
+
+def fun_l4_n221()
+ fun_l5_n291
+end
+
+def fun_l4_n222()
+ fun_l5_n863
+end
+
+def fun_l4_n223()
+ fun_l5_n30
+end
+
+def fun_l4_n224()
+ fun_l5_n413
+end
+
+def fun_l4_n225()
+ fun_l5_n352
+end
+
+def fun_l4_n226()
+ fun_l5_n125
+end
+
+def fun_l4_n227()
+ fun_l5_n266
+end
+
+def fun_l4_n228()
+ fun_l5_n264
+end
+
+def fun_l4_n229()
+ fun_l5_n745
+end
+
+def fun_l4_n230()
+ fun_l5_n622
+end
+
+def fun_l4_n231()
+ fun_l5_n160
+end
+
+def fun_l4_n232()
+ fun_l5_n121
+end
+
+def fun_l4_n233()
+ fun_l5_n150
+end
+
+def fun_l4_n234()
+ fun_l5_n495
+end
+
+def fun_l4_n235()
+ fun_l5_n905
+end
+
+def fun_l4_n236()
+ fun_l5_n886
+end
+
+def fun_l4_n237()
+ fun_l5_n221
+end
+
+def fun_l4_n238()
+ fun_l5_n912
+end
+
+def fun_l4_n239()
+ fun_l5_n834
+end
+
+def fun_l4_n240()
+ fun_l5_n703
+end
+
+def fun_l4_n241()
+ fun_l5_n651
+end
+
+def fun_l4_n242()
+ fun_l5_n404
+end
+
+def fun_l4_n243()
+ fun_l5_n213
+end
+
+def fun_l4_n244()
+ fun_l5_n342
+end
+
+def fun_l4_n245()
+ fun_l5_n887
+end
+
+def fun_l4_n246()
+ fun_l5_n69
+end
+
+def fun_l4_n247()
+ fun_l5_n835
+end
+
+def fun_l4_n248()
+ fun_l5_n856
+end
+
+def fun_l4_n249()
+ fun_l5_n485
+end
+
+def fun_l4_n250()
+ fun_l5_n441
+end
+
+def fun_l4_n251()
+ fun_l5_n976
+end
+
+def fun_l4_n252()
+ fun_l5_n586
+end
+
+def fun_l4_n253()
+ fun_l5_n728
+end
+
+def fun_l4_n254()
+ fun_l5_n377
+end
+
+def fun_l4_n255()
+ fun_l5_n293
+end
+
+def fun_l4_n256()
+ fun_l5_n149
+end
+
+def fun_l4_n257()
+ fun_l5_n205
+end
+
+def fun_l4_n258()
+ fun_l5_n301
+end
+
+def fun_l4_n259()
+ fun_l5_n528
+end
+
+def fun_l4_n260()
+ fun_l5_n642
+end
+
+def fun_l4_n261()
+ fun_l5_n430
+end
+
+def fun_l4_n262()
+ fun_l5_n14
+end
+
+def fun_l4_n263()
+ fun_l5_n796
+end
+
+def fun_l4_n264()
+ fun_l5_n849
+end
+
+def fun_l4_n265()
+ fun_l5_n547
+end
+
+def fun_l4_n266()
+ fun_l5_n946
+end
+
+def fun_l4_n267()
+ fun_l5_n131
+end
+
+def fun_l4_n268()
+ fun_l5_n141
+end
+
+def fun_l4_n269()
+ fun_l5_n9
+end
+
+def fun_l4_n270()
+ fun_l5_n884
+end
+
+def fun_l4_n271()
+ fun_l5_n978
+end
+
+def fun_l4_n272()
+ fun_l5_n47
+end
+
+def fun_l4_n273()
+ fun_l5_n100
+end
+
+def fun_l4_n274()
+ fun_l5_n254
+end
+
+def fun_l4_n275()
+ fun_l5_n972
+end
+
+def fun_l4_n276()
+ fun_l5_n705
+end
+
+def fun_l4_n277()
+ fun_l5_n504
+end
+
+def fun_l4_n278()
+ fun_l5_n854
+end
+
+def fun_l4_n279()
+ fun_l5_n331
+end
+
+def fun_l4_n280()
+ fun_l5_n394
+end
+
+def fun_l4_n281()
+ fun_l5_n922
+end
+
+def fun_l4_n282()
+ fun_l5_n503
+end
+
+def fun_l4_n283()
+ fun_l5_n854
+end
+
+def fun_l4_n284()
+ fun_l5_n679
+end
+
+def fun_l4_n285()
+ fun_l5_n317
+end
+
+def fun_l4_n286()
+ fun_l5_n753
+end
+
+def fun_l4_n287()
+ fun_l5_n154
+end
+
+def fun_l4_n288()
+ fun_l5_n184
+end
+
+def fun_l4_n289()
+ fun_l5_n416
+end
+
+def fun_l4_n290()
+ fun_l5_n426
+end
+
+def fun_l4_n291()
+ fun_l5_n186
+end
+
+def fun_l4_n292()
+ fun_l5_n527
+end
+
+def fun_l4_n293()
+ fun_l5_n483
+end
+
+def fun_l4_n294()
+ fun_l5_n718
+end
+
+def fun_l4_n295()
+ fun_l5_n469
+end
+
+def fun_l4_n296()
+ fun_l5_n842
+end
+
+def fun_l4_n297()
+ fun_l5_n998
+end
+
+def fun_l4_n298()
+ fun_l5_n964
+end
+
+def fun_l4_n299()
+ fun_l5_n377
+end
+
+def fun_l4_n300()
+ fun_l5_n9
+end
+
+def fun_l4_n301()
+ fun_l5_n234
+end
+
+def fun_l4_n302()
+ fun_l5_n813
+end
+
+def fun_l4_n303()
+ fun_l5_n211
+end
+
+def fun_l4_n304()
+ fun_l5_n593
+end
+
+def fun_l4_n305()
+ fun_l5_n847
+end
+
+def fun_l4_n306()
+ fun_l5_n628
+end
+
+def fun_l4_n307()
+ fun_l5_n827
+end
+
+def fun_l4_n308()
+ fun_l5_n417
+end
+
+def fun_l4_n309()
+ fun_l5_n958
+end
+
+def fun_l4_n310()
+ fun_l5_n838
+end
+
+def fun_l4_n311()
+ fun_l5_n712
+end
+
+def fun_l4_n312()
+ fun_l5_n615
+end
+
+def fun_l4_n313()
+ fun_l5_n693
+end
+
+def fun_l4_n314()
+ fun_l5_n708
+end
+
+def fun_l4_n315()
+ fun_l5_n525
+end
+
+def fun_l4_n316()
+ fun_l5_n943
+end
+
+def fun_l4_n317()
+ fun_l5_n959
+end
+
+def fun_l4_n318()
+ fun_l5_n316
+end
+
+def fun_l4_n319()
+ fun_l5_n424
+end
+
+def fun_l4_n320()
+ fun_l5_n391
+end
+
+def fun_l4_n321()
+ fun_l5_n303
+end
+
+def fun_l4_n322()
+ fun_l5_n159
+end
+
+def fun_l4_n323()
+ fun_l5_n853
+end
+
+def fun_l4_n324()
+ fun_l5_n525
+end
+
+def fun_l4_n325()
+ fun_l5_n390
+end
+
+def fun_l4_n326()
+ fun_l5_n225
+end
+
+def fun_l4_n327()
+ fun_l5_n983
+end
+
+def fun_l4_n328()
+ fun_l5_n509
+end
+
+def fun_l4_n329()
+ fun_l5_n141
+end
+
+def fun_l4_n330()
+ fun_l5_n92
+end
+
+def fun_l4_n331()
+ fun_l5_n288
+end
+
+def fun_l4_n332()
+ fun_l5_n213
+end
+
+def fun_l4_n333()
+ fun_l5_n830
+end
+
+def fun_l4_n334()
+ fun_l5_n512
+end
+
+def fun_l4_n335()
+ fun_l5_n449
+end
+
+def fun_l4_n336()
+ fun_l5_n148
+end
+
+def fun_l4_n337()
+ fun_l5_n829
+end
+
+def fun_l4_n338()
+ fun_l5_n232
+end
+
+def fun_l4_n339()
+ fun_l5_n989
+end
+
+def fun_l4_n340()
+ fun_l5_n226
+end
+
+def fun_l4_n341()
+ fun_l5_n187
+end
+
+def fun_l4_n342()
+ fun_l5_n874
+end
+
+def fun_l4_n343()
+ fun_l5_n621
+end
+
+def fun_l4_n344()
+ fun_l5_n861
+end
+
+def fun_l4_n345()
+ fun_l5_n22
+end
+
+def fun_l4_n346()
+ fun_l5_n6
+end
+
+def fun_l4_n347()
+ fun_l5_n580
+end
+
+def fun_l4_n348()
+ fun_l5_n56
+end
+
+def fun_l4_n349()
+ fun_l5_n834
+end
+
+def fun_l4_n350()
+ fun_l5_n460
+end
+
+def fun_l4_n351()
+ fun_l5_n697
+end
+
+def fun_l4_n352()
+ fun_l5_n792
+end
+
+def fun_l4_n353()
+ fun_l5_n777
+end
+
+def fun_l4_n354()
+ fun_l5_n73
+end
+
+def fun_l4_n355()
+ fun_l5_n555
+end
+
+def fun_l4_n356()
+ fun_l5_n32
+end
+
+def fun_l4_n357()
+ fun_l5_n242
+end
+
+def fun_l4_n358()
+ fun_l5_n791
+end
+
+def fun_l4_n359()
+ fun_l5_n570
+end
+
+def fun_l4_n360()
+ fun_l5_n272
+end
+
+def fun_l4_n361()
+ fun_l5_n757
+end
+
+def fun_l4_n362()
+ fun_l5_n946
+end
+
+def fun_l4_n363()
+ fun_l5_n127
+end
+
+def fun_l4_n364()
+ fun_l5_n940
+end
+
+def fun_l4_n365()
+ fun_l5_n662
+end
+
+def fun_l4_n366()
+ fun_l5_n99
+end
+
+def fun_l4_n367()
+ fun_l5_n107
+end
+
+def fun_l4_n368()
+ fun_l5_n370
+end
+
+def fun_l4_n369()
+ fun_l5_n738
+end
+
+def fun_l4_n370()
+ fun_l5_n346
+end
+
+def fun_l4_n371()
+ fun_l5_n63
+end
+
+def fun_l4_n372()
+ fun_l5_n274
+end
+
+def fun_l4_n373()
+ fun_l5_n936
+end
+
+def fun_l4_n374()
+ fun_l5_n602
+end
+
+def fun_l4_n375()
+ fun_l5_n362
+end
+
+def fun_l4_n376()
+ fun_l5_n605
+end
+
+def fun_l4_n377()
+ fun_l5_n477
+end
+
+def fun_l4_n378()
+ fun_l5_n349
+end
+
+def fun_l4_n379()
+ fun_l5_n241
+end
+
+def fun_l4_n380()
+ fun_l5_n913
+end
+
+def fun_l4_n381()
+ fun_l5_n392
+end
+
+def fun_l4_n382()
+ fun_l5_n669
+end
+
+def fun_l4_n383()
+ fun_l5_n41
+end
+
+def fun_l4_n384()
+ fun_l5_n928
+end
+
+def fun_l4_n385()
+ fun_l5_n646
+end
+
+def fun_l4_n386()
+ fun_l5_n23
+end
+
+def fun_l4_n387()
+ fun_l5_n815
+end
+
+def fun_l4_n388()
+ fun_l5_n595
+end
+
+def fun_l4_n389()
+ fun_l5_n210
+end
+
+def fun_l4_n390()
+ fun_l5_n247
+end
+
+def fun_l4_n391()
+ fun_l5_n914
+end
+
+def fun_l4_n392()
+ fun_l5_n882
+end
+
+def fun_l4_n393()
+ fun_l5_n319
+end
+
+def fun_l4_n394()
+ fun_l5_n764
+end
+
+def fun_l4_n395()
+ fun_l5_n282
+end
+
+def fun_l4_n396()
+ fun_l5_n585
+end
+
+def fun_l4_n397()
+ fun_l5_n551
+end
+
+def fun_l4_n398()
+ fun_l5_n56
+end
+
+def fun_l4_n399()
+ fun_l5_n807
+end
+
+def fun_l4_n400()
+ fun_l5_n678
+end
+
+def fun_l4_n401()
+ fun_l5_n153
+end
+
+def fun_l4_n402()
+ fun_l5_n993
+end
+
+def fun_l4_n403()
+ fun_l5_n835
+end
+
+def fun_l4_n404()
+ fun_l5_n642
+end
+
+def fun_l4_n405()
+ fun_l5_n460
+end
+
+def fun_l4_n406()
+ fun_l5_n135
+end
+
+def fun_l4_n407()
+ fun_l5_n199
+end
+
+def fun_l4_n408()
+ fun_l5_n782
+end
+
+def fun_l4_n409()
+ fun_l5_n723
+end
+
+def fun_l4_n410()
+ fun_l5_n638
+end
+
+def fun_l4_n411()
+ fun_l5_n157
+end
+
+def fun_l4_n412()
+ fun_l5_n840
+end
+
+def fun_l4_n413()
+ fun_l5_n11
+end
+
+def fun_l4_n414()
+ fun_l5_n148
+end
+
+def fun_l4_n415()
+ fun_l5_n577
+end
+
+def fun_l4_n416()
+ fun_l5_n403
+end
+
+def fun_l4_n417()
+ fun_l5_n971
+end
+
+def fun_l4_n418()
+ fun_l5_n951
+end
+
+def fun_l4_n419()
+ fun_l5_n620
+end
+
+def fun_l4_n420()
+ fun_l5_n120
+end
+
+def fun_l4_n421()
+ fun_l5_n981
+end
+
+def fun_l4_n422()
+ fun_l5_n543
+end
+
+def fun_l4_n423()
+ fun_l5_n543
+end
+
+def fun_l4_n424()
+ fun_l5_n161
+end
+
+def fun_l4_n425()
+ fun_l5_n308
+end
+
+def fun_l4_n426()
+ fun_l5_n94
+end
+
+def fun_l4_n427()
+ fun_l5_n209
+end
+
+def fun_l4_n428()
+ fun_l5_n543
+end
+
+def fun_l4_n429()
+ fun_l5_n825
+end
+
+def fun_l4_n430()
+ fun_l5_n808
+end
+
+def fun_l4_n431()
+ fun_l5_n315
+end
+
+def fun_l4_n432()
+ fun_l5_n846
+end
+
+def fun_l4_n433()
+ fun_l5_n448
+end
+
+def fun_l4_n434()
+ fun_l5_n903
+end
+
+def fun_l4_n435()
+ fun_l5_n933
+end
+
+def fun_l4_n436()
+ fun_l5_n872
+end
+
+def fun_l4_n437()
+ fun_l5_n297
+end
+
+def fun_l4_n438()
+ fun_l5_n689
+end
+
+def fun_l4_n439()
+ fun_l5_n700
+end
+
+def fun_l4_n440()
+ fun_l5_n316
+end
+
+def fun_l4_n441()
+ fun_l5_n983
+end
+
+def fun_l4_n442()
+ fun_l5_n32
+end
+
+def fun_l4_n443()
+ fun_l5_n404
+end
+
+def fun_l4_n444()
+ fun_l5_n770
+end
+
+def fun_l4_n445()
+ fun_l5_n497
+end
+
+def fun_l4_n446()
+ fun_l5_n762
+end
+
+def fun_l4_n447()
+ fun_l5_n402
+end
+
+def fun_l4_n448()
+ fun_l5_n773
+end
+
+def fun_l4_n449()
+ fun_l5_n264
+end
+
+def fun_l4_n450()
+ fun_l5_n373
+end
+
+def fun_l4_n451()
+ fun_l5_n907
+end
+
+def fun_l4_n452()
+ fun_l5_n477
+end
+
+def fun_l4_n453()
+ fun_l5_n15
+end
+
+def fun_l4_n454()
+ fun_l5_n550
+end
+
+def fun_l4_n455()
+ fun_l5_n973
+end
+
+def fun_l4_n456()
+ fun_l5_n247
+end
+
+def fun_l4_n457()
+ fun_l5_n231
+end
+
+def fun_l4_n458()
+ fun_l5_n431
+end
+
+def fun_l4_n459()
+ fun_l5_n549
+end
+
+def fun_l4_n460()
+ fun_l5_n251
+end
+
+def fun_l4_n461()
+ fun_l5_n313
+end
+
+def fun_l4_n462()
+ fun_l5_n826
+end
+
+def fun_l4_n463()
+ fun_l5_n454
+end
+
+def fun_l4_n464()
+ fun_l5_n329
+end
+
+def fun_l4_n465()
+ fun_l5_n502
+end
+
+def fun_l4_n466()
+ fun_l5_n786
+end
+
+def fun_l4_n467()
+ fun_l5_n195
+end
+
+def fun_l4_n468()
+ fun_l5_n710
+end
+
+def fun_l4_n469()
+ fun_l5_n970
+end
+
+def fun_l4_n470()
+ fun_l5_n925
+end
+
+def fun_l4_n471()
+ fun_l5_n420
+end
+
+def fun_l4_n472()
+ fun_l5_n231
+end
+
+def fun_l4_n473()
+ fun_l5_n867
+end
+
+def fun_l4_n474()
+ fun_l5_n798
+end
+
+def fun_l4_n475()
+ fun_l5_n697
+end
+
+def fun_l4_n476()
+ fun_l5_n767
+end
+
+def fun_l4_n477()
+ fun_l5_n199
+end
+
+def fun_l4_n478()
+ fun_l5_n190
+end
+
+def fun_l4_n479()
+ fun_l5_n524
+end
+
+def fun_l4_n480()
+ fun_l5_n451
+end
+
+def fun_l4_n481()
+ fun_l5_n182
+end
+
+def fun_l4_n482()
+ fun_l5_n906
+end
+
+def fun_l4_n483()
+ fun_l5_n806
+end
+
+def fun_l4_n484()
+ fun_l5_n871
+end
+
+def fun_l4_n485()
+ fun_l5_n947
+end
+
+def fun_l4_n486()
+ fun_l5_n599
+end
+
+def fun_l4_n487()
+ fun_l5_n266
+end
+
+def fun_l4_n488()
+ fun_l5_n20
+end
+
+def fun_l4_n489()
+ fun_l5_n875
+end
+
+def fun_l4_n490()
+ fun_l5_n393
+end
+
+def fun_l4_n491()
+ fun_l5_n673
+end
+
+def fun_l4_n492()
+ fun_l5_n159
+end
+
+def fun_l4_n493()
+ fun_l5_n327
+end
+
+def fun_l4_n494()
+ fun_l5_n71
+end
+
+def fun_l4_n495()
+ fun_l5_n146
+end
+
+def fun_l4_n496()
+ fun_l5_n372
+end
+
+def fun_l4_n497()
+ fun_l5_n654
+end
+
+def fun_l4_n498()
+ fun_l5_n1
+end
+
+def fun_l4_n499()
+ fun_l5_n448
+end
+
+def fun_l4_n500()
+ fun_l5_n684
+end
+
+def fun_l4_n501()
+ fun_l5_n561
+end
+
+def fun_l4_n502()
+ fun_l5_n47
+end
+
+def fun_l4_n503()
+ fun_l5_n313
+end
+
+def fun_l4_n504()
+ fun_l5_n380
+end
+
+def fun_l4_n505()
+ fun_l5_n416
+end
+
+def fun_l4_n506()
+ fun_l5_n90
+end
+
+def fun_l4_n507()
+ fun_l5_n65
+end
+
+def fun_l4_n508()
+ fun_l5_n61
+end
+
+def fun_l4_n509()
+ fun_l5_n451
+end
+
+def fun_l4_n510()
+ fun_l5_n174
+end
+
+def fun_l4_n511()
+ fun_l5_n236
+end
+
+def fun_l4_n512()
+ fun_l5_n470
+end
+
+def fun_l4_n513()
+ fun_l5_n304
+end
+
+def fun_l4_n514()
+ fun_l5_n146
+end
+
+def fun_l4_n515()
+ fun_l5_n671
+end
+
+def fun_l4_n516()
+ fun_l5_n626
+end
+
+def fun_l4_n517()
+ fun_l5_n164
+end
+
+def fun_l4_n518()
+ fun_l5_n308
+end
+
+def fun_l4_n519()
+ fun_l5_n799
+end
+
+def fun_l4_n520()
+ fun_l5_n521
+end
+
+def fun_l4_n521()
+ fun_l5_n675
+end
+
+def fun_l4_n522()
+ fun_l5_n110
+end
+
+def fun_l4_n523()
+ fun_l5_n726
+end
+
+def fun_l4_n524()
+ fun_l5_n189
+end
+
+def fun_l4_n525()
+ fun_l5_n303
+end
+
+def fun_l4_n526()
+ fun_l5_n571
+end
+
+def fun_l4_n527()
+ fun_l5_n693
+end
+
+def fun_l4_n528()
+ fun_l5_n782
+end
+
+def fun_l4_n529()
+ fun_l5_n764
+end
+
+def fun_l4_n530()
+ fun_l5_n629
+end
+
+def fun_l4_n531()
+ fun_l5_n677
+end
+
+def fun_l4_n532()
+ fun_l5_n745
+end
+
+def fun_l4_n533()
+ fun_l5_n868
+end
+
+def fun_l4_n534()
+ fun_l5_n771
+end
+
+def fun_l4_n535()
+ fun_l5_n248
+end
+
+def fun_l4_n536()
+ fun_l5_n412
+end
+
+def fun_l4_n537()
+ fun_l5_n736
+end
+
+def fun_l4_n538()
+ fun_l5_n296
+end
+
+def fun_l4_n539()
+ fun_l5_n847
+end
+
+def fun_l4_n540()
+ fun_l5_n188
+end
+
+def fun_l4_n541()
+ fun_l5_n131
+end
+
+def fun_l4_n542()
+ fun_l5_n31
+end
+
+def fun_l4_n543()
+ fun_l5_n563
+end
+
+def fun_l4_n544()
+ fun_l5_n479
+end
+
+def fun_l4_n545()
+ fun_l5_n243
+end
+
+def fun_l4_n546()
+ fun_l5_n471
+end
+
+def fun_l4_n547()
+ fun_l5_n237
+end
+
+def fun_l4_n548()
+ fun_l5_n772
+end
+
+def fun_l4_n549()
+ fun_l5_n723
+end
+
+def fun_l4_n550()
+ fun_l5_n733
+end
+
+def fun_l4_n551()
+ fun_l5_n274
+end
+
+def fun_l4_n552()
+ fun_l5_n351
+end
+
+def fun_l4_n553()
+ fun_l5_n30
+end
+
+def fun_l4_n554()
+ fun_l5_n112
+end
+
+def fun_l4_n555()
+ fun_l5_n438
+end
+
+def fun_l4_n556()
+ fun_l5_n969
+end
+
+def fun_l4_n557()
+ fun_l5_n57
+end
+
+def fun_l4_n558()
+ fun_l5_n971
+end
+
+def fun_l4_n559()
+ fun_l5_n831
+end
+
+def fun_l4_n560()
+ fun_l5_n833
+end
+
+def fun_l4_n561()
+ fun_l5_n896
+end
+
+def fun_l4_n562()
+ fun_l5_n607
+end
+
+def fun_l4_n563()
+ fun_l5_n793
+end
+
+def fun_l4_n564()
+ fun_l5_n711
+end
+
+def fun_l4_n565()
+ fun_l5_n570
+end
+
+def fun_l4_n566()
+ fun_l5_n933
+end
+
+def fun_l4_n567()
+ fun_l5_n917
+end
+
+def fun_l4_n568()
+ fun_l5_n811
+end
+
+def fun_l4_n569()
+ fun_l5_n414
+end
+
+def fun_l4_n570()
+ fun_l5_n14
+end
+
+def fun_l4_n571()
+ fun_l5_n911
+end
+
+def fun_l4_n572()
+ fun_l5_n114
+end
+
+def fun_l4_n573()
+ fun_l5_n732
+end
+
+def fun_l4_n574()
+ fun_l5_n913
+end
+
+def fun_l4_n575()
+ fun_l5_n66
+end
+
+def fun_l4_n576()
+ fun_l5_n330
+end
+
+def fun_l4_n577()
+ fun_l5_n892
+end
+
+def fun_l4_n578()
+ fun_l5_n329
+end
+
+def fun_l4_n579()
+ fun_l5_n539
+end
+
+def fun_l4_n580()
+ fun_l5_n268
+end
+
+def fun_l4_n581()
+ fun_l5_n357
+end
+
+def fun_l4_n582()
+ fun_l5_n259
+end
+
+def fun_l4_n583()
+ fun_l5_n968
+end
+
+def fun_l4_n584()
+ fun_l5_n873
+end
+
+def fun_l4_n585()
+ fun_l5_n644
+end
+
+def fun_l4_n586()
+ fun_l5_n659
+end
+
+def fun_l4_n587()
+ fun_l5_n906
+end
+
+def fun_l4_n588()
+ fun_l5_n746
+end
+
+def fun_l4_n589()
+ fun_l5_n802
+end
+
+def fun_l4_n590()
+ fun_l5_n9
+end
+
+def fun_l4_n591()
+ fun_l5_n620
+end
+
+def fun_l4_n592()
+ fun_l5_n507
+end
+
+def fun_l4_n593()
+ fun_l5_n338
+end
+
+def fun_l4_n594()
+ fun_l5_n396
+end
+
+def fun_l4_n595()
+ fun_l5_n627
+end
+
+def fun_l4_n596()
+ fun_l5_n621
+end
+
+def fun_l4_n597()
+ fun_l5_n597
+end
+
+def fun_l4_n598()
+ fun_l5_n496
+end
+
+def fun_l4_n599()
+ fun_l5_n265
+end
+
+def fun_l4_n600()
+ fun_l5_n897
+end
+
+def fun_l4_n601()
+ fun_l5_n142
+end
+
+def fun_l4_n602()
+ fun_l5_n614
+end
+
+def fun_l4_n603()
+ fun_l5_n565
+end
+
+def fun_l4_n604()
+ fun_l5_n653
+end
+
+def fun_l4_n605()
+ fun_l5_n728
+end
+
+def fun_l4_n606()
+ fun_l5_n799
+end
+
+def fun_l4_n607()
+ fun_l5_n714
+end
+
+def fun_l4_n608()
+ fun_l5_n448
+end
+
+def fun_l4_n609()
+ fun_l5_n778
+end
+
+def fun_l4_n610()
+ fun_l5_n508
+end
+
+def fun_l4_n611()
+ fun_l5_n216
+end
+
+def fun_l4_n612()
+ fun_l5_n604
+end
+
+def fun_l4_n613()
+ fun_l5_n231
+end
+
+def fun_l4_n614()
+ fun_l5_n696
+end
+
+def fun_l4_n615()
+ fun_l5_n354
+end
+
+def fun_l4_n616()
+ fun_l5_n595
+end
+
+def fun_l4_n617()
+ fun_l5_n747
+end
+
+def fun_l4_n618()
+ fun_l5_n377
+end
+
+def fun_l4_n619()
+ fun_l5_n852
+end
+
+def fun_l4_n620()
+ fun_l5_n381
+end
+
+def fun_l4_n621()
+ fun_l5_n674
+end
+
+def fun_l4_n622()
+ fun_l5_n696
+end
+
+def fun_l4_n623()
+ fun_l5_n25
+end
+
+def fun_l4_n624()
+ fun_l5_n133
+end
+
+def fun_l4_n625()
+ fun_l5_n419
+end
+
+def fun_l4_n626()
+ fun_l5_n612
+end
+
+def fun_l4_n627()
+ fun_l5_n798
+end
+
+def fun_l4_n628()
+ fun_l5_n702
+end
+
+def fun_l4_n629()
+ fun_l5_n125
+end
+
+def fun_l4_n630()
+ fun_l5_n567
+end
+
+def fun_l4_n631()
+ fun_l5_n825
+end
+
+def fun_l4_n632()
+ fun_l5_n794
+end
+
+def fun_l4_n633()
+ fun_l5_n802
+end
+
+def fun_l4_n634()
+ fun_l5_n297
+end
+
+def fun_l4_n635()
+ fun_l5_n366
+end
+
+def fun_l4_n636()
+ fun_l5_n149
+end
+
+def fun_l4_n637()
+ fun_l5_n648
+end
+
+def fun_l4_n638()
+ fun_l5_n997
+end
+
+def fun_l4_n639()
+ fun_l5_n569
+end
+
+def fun_l4_n640()
+ fun_l5_n917
+end
+
+def fun_l4_n641()
+ fun_l5_n172
+end
+
+def fun_l4_n642()
+ fun_l5_n353
+end
+
+def fun_l4_n643()
+ fun_l5_n940
+end
+
+def fun_l4_n644()
+ fun_l5_n255
+end
+
+def fun_l4_n645()
+ fun_l5_n690
+end
+
+def fun_l4_n646()
+ fun_l5_n17
+end
+
+def fun_l4_n647()
+ fun_l5_n320
+end
+
+def fun_l4_n648()
+ fun_l5_n328
+end
+
+def fun_l4_n649()
+ fun_l5_n467
+end
+
+def fun_l4_n650()
+ fun_l5_n352
+end
+
+def fun_l4_n651()
+ fun_l5_n671
+end
+
+def fun_l4_n652()
+ fun_l5_n104
+end
+
+def fun_l4_n653()
+ fun_l5_n40
+end
+
+def fun_l4_n654()
+ fun_l5_n445
+end
+
+def fun_l4_n655()
+ fun_l5_n703
+end
+
+def fun_l4_n656()
+ fun_l5_n699
+end
+
+def fun_l4_n657()
+ fun_l5_n156
+end
+
+def fun_l4_n658()
+ fun_l5_n1
+end
+
+def fun_l4_n659()
+ fun_l5_n728
+end
+
+def fun_l4_n660()
+ fun_l5_n200
+end
+
+def fun_l4_n661()
+ fun_l5_n369
+end
+
+def fun_l4_n662()
+ fun_l5_n621
+end
+
+def fun_l4_n663()
+ fun_l5_n600
+end
+
+def fun_l4_n664()
+ fun_l5_n342
+end
+
+def fun_l4_n665()
+ fun_l5_n129
+end
+
+def fun_l4_n666()
+ fun_l5_n627
+end
+
+def fun_l4_n667()
+ fun_l5_n44
+end
+
+def fun_l4_n668()
+ fun_l5_n43
+end
+
+def fun_l4_n669()
+ fun_l5_n708
+end
+
+def fun_l4_n670()
+ fun_l5_n378
+end
+
+def fun_l4_n671()
+ fun_l5_n320
+end
+
+def fun_l4_n672()
+ fun_l5_n896
+end
+
+def fun_l4_n673()
+ fun_l5_n185
+end
+
+def fun_l4_n674()
+ fun_l5_n456
+end
+
+def fun_l4_n675()
+ fun_l5_n520
+end
+
+def fun_l4_n676()
+ fun_l5_n633
+end
+
+def fun_l4_n677()
+ fun_l5_n122
+end
+
+def fun_l4_n678()
+ fun_l5_n333
+end
+
+def fun_l4_n679()
+ fun_l5_n100
+end
+
+def fun_l4_n680()
+ fun_l5_n941
+end
+
+def fun_l4_n681()
+ fun_l5_n468
+end
+
+def fun_l4_n682()
+ fun_l5_n45
+end
+
+def fun_l4_n683()
+ fun_l5_n295
+end
+
+def fun_l4_n684()
+ fun_l5_n400
+end
+
+def fun_l4_n685()
+ fun_l5_n999
+end
+
+def fun_l4_n686()
+ fun_l5_n294
+end
+
+def fun_l4_n687()
+ fun_l5_n575
+end
+
+def fun_l4_n688()
+ fun_l5_n372
+end
+
+def fun_l4_n689()
+ fun_l5_n777
+end
+
+def fun_l4_n690()
+ fun_l5_n795
+end
+
+def fun_l4_n691()
+ fun_l5_n44
+end
+
+def fun_l4_n692()
+ fun_l5_n27
+end
+
+def fun_l4_n693()
+ fun_l5_n488
+end
+
+def fun_l4_n694()
+ fun_l5_n932
+end
+
+def fun_l4_n695()
+ fun_l5_n104
+end
+
+def fun_l4_n696()
+ fun_l5_n552
+end
+
+def fun_l4_n697()
+ fun_l5_n830
+end
+
+def fun_l4_n698()
+ fun_l5_n612
+end
+
+def fun_l4_n699()
+ fun_l5_n889
+end
+
+def fun_l4_n700()
+ fun_l5_n205
+end
+
+def fun_l4_n701()
+ fun_l5_n90
+end
+
+def fun_l4_n702()
+ fun_l5_n210
+end
+
+def fun_l4_n703()
+ fun_l5_n514
+end
+
+def fun_l4_n704()
+ fun_l5_n374
+end
+
+def fun_l4_n705()
+ fun_l5_n176
+end
+
+def fun_l4_n706()
+ fun_l5_n465
+end
+
+def fun_l4_n707()
+ fun_l5_n542
+end
+
+def fun_l4_n708()
+ fun_l5_n175
+end
+
+def fun_l4_n709()
+ fun_l5_n148
+end
+
+def fun_l4_n710()
+ fun_l5_n212
+end
+
+def fun_l4_n711()
+ fun_l5_n418
+end
+
+def fun_l4_n712()
+ fun_l5_n401
+end
+
+def fun_l4_n713()
+ fun_l5_n14
+end
+
+def fun_l4_n714()
+ fun_l5_n965
+end
+
+def fun_l4_n715()
+ fun_l5_n783
+end
+
+def fun_l4_n716()
+ fun_l5_n421
+end
+
+def fun_l4_n717()
+ fun_l5_n346
+end
+
+def fun_l4_n718()
+ fun_l5_n176
+end
+
+def fun_l4_n719()
+ fun_l5_n522
+end
+
+def fun_l4_n720()
+ fun_l5_n207
+end
+
+def fun_l4_n721()
+ fun_l5_n707
+end
+
+def fun_l4_n722()
+ fun_l5_n593
+end
+
+def fun_l4_n723()
+ fun_l5_n609
+end
+
+def fun_l4_n724()
+ fun_l5_n798
+end
+
+def fun_l4_n725()
+ fun_l5_n744
+end
+
+def fun_l4_n726()
+ fun_l5_n514
+end
+
+def fun_l4_n727()
+ fun_l5_n278
+end
+
+def fun_l4_n728()
+ fun_l5_n425
+end
+
+def fun_l4_n729()
+ fun_l5_n147
+end
+
+def fun_l4_n730()
+ fun_l5_n676
+end
+
+def fun_l4_n731()
+ fun_l5_n887
+end
+
+def fun_l4_n732()
+ fun_l5_n865
+end
+
+def fun_l4_n733()
+ fun_l5_n811
+end
+
+def fun_l4_n734()
+ fun_l5_n545
+end
+
+def fun_l4_n735()
+ fun_l5_n219
+end
+
+def fun_l4_n736()
+ fun_l5_n121
+end
+
+def fun_l4_n737()
+ fun_l5_n253
+end
+
+def fun_l4_n738()
+ fun_l5_n349
+end
+
+def fun_l4_n739()
+ fun_l5_n540
+end
+
+def fun_l4_n740()
+ fun_l5_n301
+end
+
+def fun_l4_n741()
+ fun_l5_n367
+end
+
+def fun_l4_n742()
+ fun_l5_n989
+end
+
+def fun_l4_n743()
+ fun_l5_n454
+end
+
+def fun_l4_n744()
+ fun_l5_n390
+end
+
+def fun_l4_n745()
+ fun_l5_n650
+end
+
+def fun_l4_n746()
+ fun_l5_n403
+end
+
+def fun_l4_n747()
+ fun_l5_n807
+end
+
+def fun_l4_n748()
+ fun_l5_n219
+end
+
+def fun_l4_n749()
+ fun_l5_n756
+end
+
+def fun_l4_n750()
+ fun_l5_n730
+end
+
+def fun_l4_n751()
+ fun_l5_n923
+end
+
+def fun_l4_n752()
+ fun_l5_n407
+end
+
+def fun_l4_n753()
+ fun_l5_n734
+end
+
+def fun_l4_n754()
+ fun_l5_n192
+end
+
+def fun_l4_n755()
+ fun_l5_n26
+end
+
+def fun_l4_n756()
+ fun_l5_n571
+end
+
+def fun_l4_n757()
+ fun_l5_n515
+end
+
+def fun_l4_n758()
+ fun_l5_n701
+end
+
+def fun_l4_n759()
+ fun_l5_n808
+end
+
+def fun_l4_n760()
+ fun_l5_n607
+end
+
+def fun_l4_n761()
+ fun_l5_n231
+end
+
+def fun_l4_n762()
+ fun_l5_n144
+end
+
+def fun_l4_n763()
+ fun_l5_n829
+end
+
+def fun_l4_n764()
+ fun_l5_n939
+end
+
+def fun_l4_n765()
+ fun_l5_n486
+end
+
+def fun_l4_n766()
+ fun_l5_n73
+end
+
+def fun_l4_n767()
+ fun_l5_n409
+end
+
+def fun_l4_n768()
+ fun_l5_n197
+end
+
+def fun_l4_n769()
+ fun_l5_n803
+end
+
+def fun_l4_n770()
+ fun_l5_n877
+end
+
+def fun_l4_n771()
+ fun_l5_n739
+end
+
+def fun_l4_n772()
+ fun_l5_n500
+end
+
+def fun_l4_n773()
+ fun_l5_n104
+end
+
+def fun_l4_n774()
+ fun_l5_n526
+end
+
+def fun_l4_n775()
+ fun_l5_n443
+end
+
+def fun_l4_n776()
+ fun_l5_n397
+end
+
+def fun_l4_n777()
+ fun_l5_n496
+end
+
+def fun_l4_n778()
+ fun_l5_n360
+end
+
+def fun_l4_n779()
+ fun_l5_n93
+end
+
+def fun_l4_n780()
+ fun_l5_n635
+end
+
+def fun_l4_n781()
+ fun_l5_n724
+end
+
+def fun_l4_n782()
+ fun_l5_n445
+end
+
+def fun_l4_n783()
+ fun_l5_n546
+end
+
+def fun_l4_n784()
+ fun_l5_n353
+end
+
+def fun_l4_n785()
+ fun_l5_n546
+end
+
+def fun_l4_n786()
+ fun_l5_n243
+end
+
+def fun_l4_n787()
+ fun_l5_n614
+end
+
+def fun_l4_n788()
+ fun_l5_n249
+end
+
+def fun_l4_n789()
+ fun_l5_n281
+end
+
+def fun_l4_n790()
+ fun_l5_n22
+end
+
+def fun_l4_n791()
+ fun_l5_n857
+end
+
+def fun_l4_n792()
+ fun_l5_n685
+end
+
+def fun_l4_n793()
+ fun_l5_n784
+end
+
+def fun_l4_n794()
+ fun_l5_n522
+end
+
+def fun_l4_n795()
+ fun_l5_n970
+end
+
+def fun_l4_n796()
+ fun_l5_n734
+end
+
+def fun_l4_n797()
+ fun_l5_n36
+end
+
+def fun_l4_n798()
+ fun_l5_n257
+end
+
+def fun_l4_n799()
+ fun_l5_n677
+end
+
+def fun_l4_n800()
+ fun_l5_n556
+end
+
+def fun_l4_n801()
+ fun_l5_n783
+end
+
+def fun_l4_n802()
+ fun_l5_n501
+end
+
+def fun_l4_n803()
+ fun_l5_n731
+end
+
+def fun_l4_n804()
+ fun_l5_n175
+end
+
+def fun_l4_n805()
+ fun_l5_n712
+end
+
+def fun_l4_n806()
+ fun_l5_n566
+end
+
+def fun_l4_n807()
+ fun_l5_n158
+end
+
+def fun_l4_n808()
+ fun_l5_n63
+end
+
+def fun_l4_n809()
+ fun_l5_n354
+end
+
+def fun_l4_n810()
+ fun_l5_n552
+end
+
+def fun_l4_n811()
+ fun_l5_n255
+end
+
+def fun_l4_n812()
+ fun_l5_n830
+end
+
+def fun_l4_n813()
+ fun_l5_n792
+end
+
+def fun_l4_n814()
+ fun_l5_n214
+end
+
+def fun_l4_n815()
+ fun_l5_n906
+end
+
+def fun_l4_n816()
+ fun_l5_n852
+end
+
+def fun_l4_n817()
+ fun_l5_n286
+end
+
+def fun_l4_n818()
+ fun_l5_n704
+end
+
+def fun_l4_n819()
+ fun_l5_n860
+end
+
+def fun_l4_n820()
+ fun_l5_n150
+end
+
+def fun_l4_n821()
+ fun_l5_n793
+end
+
+def fun_l4_n822()
+ fun_l5_n356
+end
+
+def fun_l4_n823()
+ fun_l5_n369
+end
+
+def fun_l4_n824()
+ fun_l5_n519
+end
+
+def fun_l4_n825()
+ fun_l5_n765
+end
+
+def fun_l4_n826()
+ fun_l5_n974
+end
+
+def fun_l4_n827()
+ fun_l5_n265
+end
+
+def fun_l4_n828()
+ fun_l5_n948
+end
+
+def fun_l4_n829()
+ fun_l5_n2
+end
+
+def fun_l4_n830()
+ fun_l5_n269
+end
+
+def fun_l4_n831()
+ fun_l5_n96
+end
+
+def fun_l4_n832()
+ fun_l5_n964
+end
+
+def fun_l4_n833()
+ fun_l5_n362
+end
+
+def fun_l4_n834()
+ fun_l5_n915
+end
+
+def fun_l4_n835()
+ fun_l5_n179
+end
+
+def fun_l4_n836()
+ fun_l5_n128
+end
+
+def fun_l4_n837()
+ fun_l5_n195
+end
+
+def fun_l4_n838()
+ fun_l5_n393
+end
+
+def fun_l4_n839()
+ fun_l5_n120
+end
+
+def fun_l4_n840()
+ fun_l5_n239
+end
+
+def fun_l4_n841()
+ fun_l5_n669
+end
+
+def fun_l4_n842()
+ fun_l5_n234
+end
+
+def fun_l4_n843()
+ fun_l5_n60
+end
+
+def fun_l4_n844()
+ fun_l5_n962
+end
+
+def fun_l4_n845()
+ fun_l5_n770
+end
+
+def fun_l4_n846()
+ fun_l5_n207
+end
+
+def fun_l4_n847()
+ fun_l5_n46
+end
+
+def fun_l4_n848()
+ fun_l5_n615
+end
+
+def fun_l4_n849()
+ fun_l5_n709
+end
+
+def fun_l4_n850()
+ fun_l5_n198
+end
+
+def fun_l4_n851()
+ fun_l5_n639
+end
+
+def fun_l4_n852()
+ fun_l5_n125
+end
+
+def fun_l4_n853()
+ fun_l5_n193
+end
+
+def fun_l4_n854()
+ fun_l5_n806
+end
+
+def fun_l4_n855()
+ fun_l5_n237
+end
+
+def fun_l4_n856()
+ fun_l5_n319
+end
+
+def fun_l4_n857()
+ fun_l5_n533
+end
+
+def fun_l4_n858()
+ fun_l5_n320
+end
+
+def fun_l4_n859()
+ fun_l5_n501
+end
+
+def fun_l4_n860()
+ fun_l5_n404
+end
+
+def fun_l4_n861()
+ fun_l5_n849
+end
+
+def fun_l4_n862()
+ fun_l5_n743
+end
+
+def fun_l4_n863()
+ fun_l5_n764
+end
+
+def fun_l4_n864()
+ fun_l5_n956
+end
+
+def fun_l4_n865()
+ fun_l5_n914
+end
+
+def fun_l4_n866()
+ fun_l5_n652
+end
+
+def fun_l4_n867()
+ fun_l5_n30
+end
+
+def fun_l4_n868()
+ fun_l5_n330
+end
+
+def fun_l4_n869()
+ fun_l5_n677
+end
+
+def fun_l4_n870()
+ fun_l5_n988
+end
+
+def fun_l4_n871()
+ fun_l5_n676
+end
+
+def fun_l4_n872()
+ fun_l5_n752
+end
+
+def fun_l4_n873()
+ fun_l5_n636
+end
+
+def fun_l4_n874()
+ fun_l5_n395
+end
+
+def fun_l4_n875()
+ fun_l5_n428
+end
+
+def fun_l4_n876()
+ fun_l5_n83
+end
+
+def fun_l4_n877()
+ fun_l5_n712
+end
+
+def fun_l4_n878()
+ fun_l5_n708
+end
+
+def fun_l4_n879()
+ fun_l5_n418
+end
+
+def fun_l4_n880()
+ fun_l5_n265
+end
+
+def fun_l4_n881()
+ fun_l5_n379
+end
+
+def fun_l4_n882()
+ fun_l5_n758
+end
+
+def fun_l4_n883()
+ fun_l5_n251
+end
+
+def fun_l4_n884()
+ fun_l5_n723
+end
+
+def fun_l4_n885()
+ fun_l5_n216
+end
+
+def fun_l4_n886()
+ fun_l5_n197
+end
+
+def fun_l4_n887()
+ fun_l5_n261
+end
+
+def fun_l4_n888()
+ fun_l5_n62
+end
+
+def fun_l4_n889()
+ fun_l5_n941
+end
+
+def fun_l4_n890()
+ fun_l5_n535
+end
+
+def fun_l4_n891()
+ fun_l5_n727
+end
+
+def fun_l4_n892()
+ fun_l5_n279
+end
+
+def fun_l4_n893()
+ fun_l5_n541
+end
+
+def fun_l4_n894()
+ fun_l5_n684
+end
+
+def fun_l4_n895()
+ fun_l5_n649
+end
+
+def fun_l4_n896()
+ fun_l5_n396
+end
+
+def fun_l4_n897()
+ fun_l5_n992
+end
+
+def fun_l4_n898()
+ fun_l5_n160
+end
+
+def fun_l4_n899()
+ fun_l5_n84
+end
+
+def fun_l4_n900()
+ fun_l5_n318
+end
+
+def fun_l4_n901()
+ fun_l5_n428
+end
+
+def fun_l4_n902()
+ fun_l5_n534
+end
+
+def fun_l4_n903()
+ fun_l5_n25
+end
+
+def fun_l4_n904()
+ fun_l5_n392
+end
+
+def fun_l4_n905()
+ fun_l5_n926
+end
+
+def fun_l4_n906()
+ fun_l5_n724
+end
+
+def fun_l4_n907()
+ fun_l5_n311
+end
+
+def fun_l4_n908()
+ fun_l5_n535
+end
+
+def fun_l4_n909()
+ fun_l5_n179
+end
+
+def fun_l4_n910()
+ fun_l5_n533
+end
+
+def fun_l4_n911()
+ fun_l5_n875
+end
+
+def fun_l4_n912()
+ fun_l5_n105
+end
+
+def fun_l4_n913()
+ fun_l5_n618
+end
+
+def fun_l4_n914()
+ fun_l5_n827
+end
+
+def fun_l4_n915()
+ fun_l5_n555
+end
+
+def fun_l4_n916()
+ fun_l5_n339
+end
+
+def fun_l4_n917()
+ fun_l5_n848
+end
+
+def fun_l4_n918()
+ fun_l5_n676
+end
+
+def fun_l4_n919()
+ fun_l5_n204
+end
+
+def fun_l4_n920()
+ fun_l5_n769
+end
+
+def fun_l4_n921()
+ fun_l5_n229
+end
+
+def fun_l4_n922()
+ fun_l5_n92
+end
+
+def fun_l4_n923()
+ fun_l5_n973
+end
+
+def fun_l4_n924()
+ fun_l5_n700
+end
+
+def fun_l4_n925()
+ fun_l5_n581
+end
+
+def fun_l4_n926()
+ fun_l5_n138
+end
+
+def fun_l4_n927()
+ fun_l5_n43
+end
+
+def fun_l4_n928()
+ fun_l5_n537
+end
+
+def fun_l4_n929()
+ fun_l5_n882
+end
+
+def fun_l4_n930()
+ fun_l5_n871
+end
+
+def fun_l4_n931()
+ fun_l5_n158
+end
+
+def fun_l4_n932()
+ fun_l5_n542
+end
+
+def fun_l4_n933()
+ fun_l5_n468
+end
+
+def fun_l4_n934()
+ fun_l5_n28
+end
+
+def fun_l4_n935()
+ fun_l5_n976
+end
+
+def fun_l4_n936()
+ fun_l5_n632
+end
+
+def fun_l4_n937()
+ fun_l5_n857
+end
+
+def fun_l4_n938()
+ fun_l5_n841
+end
+
+def fun_l4_n939()
+ fun_l5_n762
+end
+
+def fun_l4_n940()
+ fun_l5_n522
+end
+
+def fun_l4_n941()
+ fun_l5_n841
+end
+
+def fun_l4_n942()
+ fun_l5_n42
+end
+
+def fun_l4_n943()
+ fun_l5_n771
+end
+
+def fun_l4_n944()
+ fun_l5_n145
+end
+
+def fun_l4_n945()
+ fun_l5_n435
+end
+
+def fun_l4_n946()
+ fun_l5_n573
+end
+
+def fun_l4_n947()
+ fun_l5_n422
+end
+
+def fun_l4_n948()
+ fun_l5_n34
+end
+
+def fun_l4_n949()
+ fun_l5_n577
+end
+
+def fun_l4_n950()
+ fun_l5_n156
+end
+
+def fun_l4_n951()
+ fun_l5_n707
+end
+
+def fun_l4_n952()
+ fun_l5_n198
+end
+
+def fun_l4_n953()
+ fun_l5_n950
+end
+
+def fun_l4_n954()
+ fun_l5_n474
+end
+
+def fun_l4_n955()
+ fun_l5_n319
+end
+
+def fun_l4_n956()
+ fun_l5_n208
+end
+
+def fun_l4_n957()
+ fun_l5_n360
+end
+
+def fun_l4_n958()
+ fun_l5_n101
+end
+
+def fun_l4_n959()
+ fun_l5_n37
+end
+
+def fun_l4_n960()
+ fun_l5_n20
+end
+
+def fun_l4_n961()
+ fun_l5_n897
+end
+
+def fun_l4_n962()
+ fun_l5_n92
+end
+
+def fun_l4_n963()
+ fun_l5_n105
+end
+
+def fun_l4_n964()
+ fun_l5_n255
+end
+
+def fun_l4_n965()
+ fun_l5_n97
+end
+
+def fun_l4_n966()
+ fun_l5_n398
+end
+
+def fun_l4_n967()
+ fun_l5_n393
+end
+
+def fun_l4_n968()
+ fun_l5_n135
+end
+
+def fun_l4_n969()
+ fun_l5_n306
+end
+
+def fun_l4_n970()
+ fun_l5_n202
+end
+
+def fun_l4_n971()
+ fun_l5_n832
+end
+
+def fun_l4_n972()
+ fun_l5_n444
+end
+
+def fun_l4_n973()
+ fun_l5_n768
+end
+
+def fun_l4_n974()
+ fun_l5_n384
+end
+
+def fun_l4_n975()
+ fun_l5_n142
+end
+
+def fun_l4_n976()
+ fun_l5_n208
+end
+
+def fun_l4_n977()
+ fun_l5_n818
+end
+
+def fun_l4_n978()
+ fun_l5_n5
+end
+
+def fun_l4_n979()
+ fun_l5_n410
+end
+
+def fun_l4_n980()
+ fun_l5_n713
+end
+
+def fun_l4_n981()
+ fun_l5_n42
+end
+
+def fun_l4_n982()
+ fun_l5_n335
+end
+
+def fun_l4_n983()
+ fun_l5_n446
+end
+
+def fun_l4_n984()
+ fun_l5_n957
+end
+
+def fun_l4_n985()
+ fun_l5_n652
+end
+
+def fun_l4_n986()
+ fun_l5_n341
+end
+
+def fun_l4_n987()
+ fun_l5_n300
+end
+
+def fun_l4_n988()
+ fun_l5_n859
+end
+
+def fun_l4_n989()
+ fun_l5_n467
+end
+
+def fun_l4_n990()
+ fun_l5_n182
+end
+
+def fun_l4_n991()
+ fun_l5_n755
+end
+
+def fun_l4_n992()
+ fun_l5_n925
+end
+
+def fun_l4_n993()
+ fun_l5_n695
+end
+
+def fun_l4_n994()
+ fun_l5_n901
+end
+
+def fun_l4_n995()
+ fun_l5_n844
+end
+
+def fun_l4_n996()
+ fun_l5_n430
+end
+
+def fun_l4_n997()
+ fun_l5_n568
+end
+
+def fun_l4_n998()
+ fun_l5_n472
+end
+
+def fun_l4_n999()
+ fun_l5_n871
+end
+
+def fun_l5_n0()
+ fun_l6_n383
+end
+
+def fun_l5_n1()
+ fun_l6_n172
+end
+
+def fun_l5_n2()
+ fun_l6_n405
+end
+
+def fun_l5_n3()
+ fun_l6_n960
+end
+
+def fun_l5_n4()
+ fun_l6_n846
+end
+
+def fun_l5_n5()
+ fun_l6_n207
+end
+
+def fun_l5_n6()
+ fun_l6_n217
+end
+
+def fun_l5_n7()
+ fun_l6_n317
+end
+
+def fun_l5_n8()
+ fun_l6_n628
+end
+
+def fun_l5_n9()
+ fun_l6_n407
+end
+
+def fun_l5_n10()
+ fun_l6_n933
+end
+
+def fun_l5_n11()
+ fun_l6_n318
+end
+
+def fun_l5_n12()
+ fun_l6_n349
+end
+
+def fun_l5_n13()
+ fun_l6_n559
+end
+
+def fun_l5_n14()
+ fun_l6_n352
+end
+
+def fun_l5_n15()
+ fun_l6_n531
+end
+
+def fun_l5_n16()
+ fun_l6_n6
+end
+
+def fun_l5_n17()
+ fun_l6_n285
+end
+
+def fun_l5_n18()
+ fun_l6_n419
+end
+
+def fun_l5_n19()
+ fun_l6_n232
+end
+
+def fun_l5_n20()
+ fun_l6_n285
+end
+
+def fun_l5_n21()
+ fun_l6_n814
+end
+
+def fun_l5_n22()
+ fun_l6_n773
+end
+
+def fun_l5_n23()
+ fun_l6_n771
+end
+
+def fun_l5_n24()
+ fun_l6_n903
+end
+
+def fun_l5_n25()
+ fun_l6_n116
+end
+
+def fun_l5_n26()
+ fun_l6_n116
+end
+
+def fun_l5_n27()
+ fun_l6_n531
+end
+
+def fun_l5_n28()
+ fun_l6_n418
+end
+
+def fun_l5_n29()
+ fun_l6_n564
+end
+
+def fun_l5_n30()
+ fun_l6_n691
+end
+
+def fun_l5_n31()
+ fun_l6_n267
+end
+
+def fun_l5_n32()
+ fun_l6_n209
+end
+
+def fun_l5_n33()
+ fun_l6_n27
+end
+
+def fun_l5_n34()
+ fun_l6_n312
+end
+
+def fun_l5_n35()
+ fun_l6_n240
+end
+
+def fun_l5_n36()
+ fun_l6_n507
+end
+
+def fun_l5_n37()
+ fun_l6_n808
+end
+
+def fun_l5_n38()
+ fun_l6_n28
+end
+
+def fun_l5_n39()
+ fun_l6_n33
+end
+
+def fun_l5_n40()
+ fun_l6_n808
+end
+
+def fun_l5_n41()
+ fun_l6_n15
+end
+
+def fun_l5_n42()
+ fun_l6_n995
+end
+
+def fun_l5_n43()
+ fun_l6_n886
+end
+
+def fun_l5_n44()
+ fun_l6_n164
+end
+
+def fun_l5_n45()
+ fun_l6_n804
+end
+
+def fun_l5_n46()
+ fun_l6_n776
+end
+
+def fun_l5_n47()
+ fun_l6_n584
+end
+
+def fun_l5_n48()
+ fun_l6_n220
+end
+
+def fun_l5_n49()
+ fun_l6_n680
+end
+
+def fun_l5_n50()
+ fun_l6_n438
+end
+
+def fun_l5_n51()
+ fun_l6_n565
+end
+
+def fun_l5_n52()
+ fun_l6_n394
+end
+
+def fun_l5_n53()
+ fun_l6_n867
+end
+
+def fun_l5_n54()
+ fun_l6_n468
+end
+
+def fun_l5_n55()
+ fun_l6_n622
+end
+
+def fun_l5_n56()
+ fun_l6_n846
+end
+
+def fun_l5_n57()
+ fun_l6_n718
+end
+
+def fun_l5_n58()
+ fun_l6_n367
+end
+
+def fun_l5_n59()
+ fun_l6_n284
+end
+
+def fun_l5_n60()
+ fun_l6_n350
+end
+
+def fun_l5_n61()
+ fun_l6_n849
+end
+
+def fun_l5_n62()
+ fun_l6_n537
+end
+
+def fun_l5_n63()
+ fun_l6_n475
+end
+
+def fun_l5_n64()
+ fun_l6_n525
+end
+
+def fun_l5_n65()
+ fun_l6_n416
+end
+
+def fun_l5_n66()
+ fun_l6_n261
+end
+
+def fun_l5_n67()
+ fun_l6_n528
+end
+
+def fun_l5_n68()
+ fun_l6_n331
+end
+
+def fun_l5_n69()
+ fun_l6_n387
+end
+
+def fun_l5_n70()
+ fun_l6_n780
+end
+
+def fun_l5_n71()
+ fun_l6_n542
+end
+
+def fun_l5_n72()
+ fun_l6_n930
+end
+
+def fun_l5_n73()
+ fun_l6_n79
+end
+
+def fun_l5_n74()
+ fun_l6_n351
+end
+
+def fun_l5_n75()
+ fun_l6_n290
+end
+
+def fun_l5_n76()
+ fun_l6_n659
+end
+
+def fun_l5_n77()
+ fun_l6_n421
+end
+
+def fun_l5_n78()
+ fun_l6_n454
+end
+
+def fun_l5_n79()
+ fun_l6_n78
+end
+
+def fun_l5_n80()
+ fun_l6_n63
+end
+
+def fun_l5_n81()
+ fun_l6_n555
+end
+
+def fun_l5_n82()
+ fun_l6_n54
+end
+
+def fun_l5_n83()
+ fun_l6_n46
+end
+
+def fun_l5_n84()
+ fun_l6_n225
+end
+
+def fun_l5_n85()
+ fun_l6_n330
+end
+
+def fun_l5_n86()
+ fun_l6_n772
+end
+
+def fun_l5_n87()
+ fun_l6_n654
+end
+
+def fun_l5_n88()
+ fun_l6_n281
+end
+
+def fun_l5_n89()
+ fun_l6_n857
+end
+
+def fun_l5_n90()
+ fun_l6_n453
+end
+
+def fun_l5_n91()
+ fun_l6_n504
+end
+
+def fun_l5_n92()
+ fun_l6_n649
+end
+
+def fun_l5_n93()
+ fun_l6_n90
+end
+
+def fun_l5_n94()
+ fun_l6_n520
+end
+
+def fun_l5_n95()
+ fun_l6_n251
+end
+
+def fun_l5_n96()
+ fun_l6_n738
+end
+
+def fun_l5_n97()
+ fun_l6_n837
+end
+
+def fun_l5_n98()
+ fun_l6_n98
+end
+
+def fun_l5_n99()
+ fun_l6_n844
+end
+
+def fun_l5_n100()
+ fun_l6_n699
+end
+
+def fun_l5_n101()
+ fun_l6_n901
+end
+
+def fun_l5_n102()
+ fun_l6_n342
+end
+
+def fun_l5_n103()
+ fun_l6_n856
+end
+
+def fun_l5_n104()
+ fun_l6_n113
+end
+
+def fun_l5_n105()
+ fun_l6_n530
+end
+
+def fun_l5_n106()
+ fun_l6_n445
+end
+
+def fun_l5_n107()
+ fun_l6_n515
+end
+
+def fun_l5_n108()
+ fun_l6_n958
+end
+
+def fun_l5_n109()
+ fun_l6_n561
+end
+
+def fun_l5_n110()
+ fun_l6_n130
+end
+
+def fun_l5_n111()
+ fun_l6_n653
+end
+
+def fun_l5_n112()
+ fun_l6_n367
+end
+
+def fun_l5_n113()
+ fun_l6_n515
+end
+
+def fun_l5_n114()
+ fun_l6_n50
+end
+
+def fun_l5_n115()
+ fun_l6_n259
+end
+
+def fun_l5_n116()
+ fun_l6_n280
+end
+
+def fun_l5_n117()
+ fun_l6_n589
+end
+
+def fun_l5_n118()
+ fun_l6_n988
+end
+
+def fun_l5_n119()
+ fun_l6_n544
+end
+
+def fun_l5_n120()
+ fun_l6_n564
+end
+
+def fun_l5_n121()
+ fun_l6_n468
+end
+
+def fun_l5_n122()
+ fun_l6_n586
+end
+
+def fun_l5_n123()
+ fun_l6_n705
+end
+
+def fun_l5_n124()
+ fun_l6_n510
+end
+
+def fun_l5_n125()
+ fun_l6_n995
+end
+
+def fun_l5_n126()
+ fun_l6_n576
+end
+
+def fun_l5_n127()
+ fun_l6_n221
+end
+
+def fun_l5_n128()
+ fun_l6_n498
+end
+
+def fun_l5_n129()
+ fun_l6_n113
+end
+
+def fun_l5_n130()
+ fun_l6_n916
+end
+
+def fun_l5_n131()
+ fun_l6_n626
+end
+
+def fun_l5_n132()
+ fun_l6_n635
+end
+
+def fun_l5_n133()
+ fun_l6_n605
+end
+
+def fun_l5_n134()
+ fun_l6_n931
+end
+
+def fun_l5_n135()
+ fun_l6_n282
+end
+
+def fun_l5_n136()
+ fun_l6_n904
+end
+
+def fun_l5_n137()
+ fun_l6_n522
+end
+
+def fun_l5_n138()
+ fun_l6_n255
+end
+
+def fun_l5_n139()
+ fun_l6_n308
+end
+
+def fun_l5_n140()
+ fun_l6_n482
+end
+
+def fun_l5_n141()
+ fun_l6_n911
+end
+
+def fun_l5_n142()
+ fun_l6_n640
+end
+
+def fun_l5_n143()
+ fun_l6_n783
+end
+
+def fun_l5_n144()
+ fun_l6_n980
+end
+
+def fun_l5_n145()
+ fun_l6_n85
+end
+
+def fun_l5_n146()
+ fun_l6_n181
+end
+
+def fun_l5_n147()
+ fun_l6_n963
+end
+
+def fun_l5_n148()
+ fun_l6_n516
+end
+
+def fun_l5_n149()
+ fun_l6_n315
+end
+
+def fun_l5_n150()
+ fun_l6_n822
+end
+
+def fun_l5_n151()
+ fun_l6_n528
+end
+
+def fun_l5_n152()
+ fun_l6_n220
+end
+
+def fun_l5_n153()
+ fun_l6_n13
+end
+
+def fun_l5_n154()
+ fun_l6_n172
+end
+
+def fun_l5_n155()
+ fun_l6_n987
+end
+
+def fun_l5_n156()
+ fun_l6_n414
+end
+
+def fun_l5_n157()
+ fun_l6_n758
+end
+
+def fun_l5_n158()
+ fun_l6_n889
+end
+
+def fun_l5_n159()
+ fun_l6_n526
+end
+
+def fun_l5_n160()
+ fun_l6_n576
+end
+
+def fun_l5_n161()
+ fun_l6_n35
+end
+
+def fun_l5_n162()
+ fun_l6_n382
+end
+
+def fun_l5_n163()
+ fun_l6_n503
+end
+
+def fun_l5_n164()
+ fun_l6_n950
+end
+
+def fun_l5_n165()
+ fun_l6_n796
+end
+
+def fun_l5_n166()
+ fun_l6_n72
+end
+
+def fun_l5_n167()
+ fun_l6_n258
+end
+
+def fun_l5_n168()
+ fun_l6_n624
+end
+
+def fun_l5_n169()
+ fun_l6_n146
+end
+
+def fun_l5_n170()
+ fun_l6_n202
+end
+
+def fun_l5_n171()
+ fun_l6_n18
+end
+
+def fun_l5_n172()
+ fun_l6_n822
+end
+
+def fun_l5_n173()
+ fun_l6_n839
+end
+
+def fun_l5_n174()
+ fun_l6_n201
+end
+
+def fun_l5_n175()
+ fun_l6_n109
+end
+
+def fun_l5_n176()
+ fun_l6_n265
+end
+
+def fun_l5_n177()
+ fun_l6_n899
+end
+
+def fun_l5_n178()
+ fun_l6_n805
+end
+
+def fun_l5_n179()
+ fun_l6_n245
+end
+
+def fun_l5_n180()
+ fun_l6_n309
+end
+
+def fun_l5_n181()
+ fun_l6_n31
+end
+
+def fun_l5_n182()
+ fun_l6_n642
+end
+
+def fun_l5_n183()
+ fun_l6_n552
+end
+
+def fun_l5_n184()
+ fun_l6_n217
+end
+
+def fun_l5_n185()
+ fun_l6_n382
+end
+
+def fun_l5_n186()
+ fun_l6_n642
+end
+
+def fun_l5_n187()
+ fun_l6_n415
+end
+
+def fun_l5_n188()
+ fun_l6_n246
+end
+
+def fun_l5_n189()
+ fun_l6_n754
+end
+
+def fun_l5_n190()
+ fun_l6_n869
+end
+
+def fun_l5_n191()
+ fun_l6_n944
+end
+
+def fun_l5_n192()
+ fun_l6_n558
+end
+
+def fun_l5_n193()
+ fun_l6_n548
+end
+
+def fun_l5_n194()
+ fun_l6_n156
+end
+
+def fun_l5_n195()
+ fun_l6_n507
+end
+
+def fun_l5_n196()
+ fun_l6_n897
+end
+
+def fun_l5_n197()
+ fun_l6_n297
+end
+
+def fun_l5_n198()
+ fun_l6_n775
+end
+
+def fun_l5_n199()
+ fun_l6_n897
+end
+
+def fun_l5_n200()
+ fun_l6_n232
+end
+
+def fun_l5_n201()
+ fun_l6_n341
+end
+
+def fun_l5_n202()
+ fun_l6_n881
+end
+
+def fun_l5_n203()
+ fun_l6_n757
+end
+
+def fun_l5_n204()
+ fun_l6_n673
+end
+
+def fun_l5_n205()
+ fun_l6_n753
+end
+
+def fun_l5_n206()
+ fun_l6_n191
+end
+
+def fun_l5_n207()
+ fun_l6_n768
+end
+
+def fun_l5_n208()
+ fun_l6_n963
+end
+
+def fun_l5_n209()
+ fun_l6_n102
+end
+
+def fun_l5_n210()
+ fun_l6_n355
+end
+
+def fun_l5_n211()
+ fun_l6_n838
+end
+
+def fun_l5_n212()
+ fun_l6_n388
+end
+
+def fun_l5_n213()
+ fun_l6_n840
+end
+
+def fun_l5_n214()
+ fun_l6_n501
+end
+
+def fun_l5_n215()
+ fun_l6_n792
+end
+
+def fun_l5_n216()
+ fun_l6_n360
+end
+
+def fun_l5_n217()
+ fun_l6_n70
+end
+
+def fun_l5_n218()
+ fun_l6_n887
+end
+
+def fun_l5_n219()
+ fun_l6_n57
+end
+
+def fun_l5_n220()
+ fun_l6_n595
+end
+
+def fun_l5_n221()
+ fun_l6_n988
+end
+
+def fun_l5_n222()
+ fun_l6_n191
+end
+
+def fun_l5_n223()
+ fun_l6_n667
+end
+
+def fun_l5_n224()
+ fun_l6_n410
+end
+
+def fun_l5_n225()
+ fun_l6_n636
+end
+
+def fun_l5_n226()
+ fun_l6_n669
+end
+
+def fun_l5_n227()
+ fun_l6_n980
+end
+
+def fun_l5_n228()
+ fun_l6_n521
+end
+
+def fun_l5_n229()
+ fun_l6_n707
+end
+
+def fun_l5_n230()
+ fun_l6_n757
+end
+
+def fun_l5_n231()
+ fun_l6_n360
+end
+
+def fun_l5_n232()
+ fun_l6_n480
+end
+
+def fun_l5_n233()
+ fun_l6_n8
+end
+
+def fun_l5_n234()
+ fun_l6_n47
+end
+
+def fun_l5_n235()
+ fun_l6_n985
+end
+
+def fun_l5_n236()
+ fun_l6_n331
+end
+
+def fun_l5_n237()
+ fun_l6_n314
+end
+
+def fun_l5_n238()
+ fun_l6_n666
+end
+
+def fun_l5_n239()
+ fun_l6_n289
+end
+
+def fun_l5_n240()
+ fun_l6_n487
+end
+
+def fun_l5_n241()
+ fun_l6_n298
+end
+
+def fun_l5_n242()
+ fun_l6_n460
+end
+
+def fun_l5_n243()
+ fun_l6_n63
+end
+
+def fun_l5_n244()
+ fun_l6_n898
+end
+
+def fun_l5_n245()
+ fun_l6_n706
+end
+
+def fun_l5_n246()
+ fun_l6_n276
+end
+
+def fun_l5_n247()
+ fun_l6_n709
+end
+
+def fun_l5_n248()
+ fun_l6_n60
+end
+
+def fun_l5_n249()
+ fun_l6_n53
+end
+
+def fun_l5_n250()
+ fun_l6_n396
+end
+
+def fun_l5_n251()
+ fun_l6_n124
+end
+
+def fun_l5_n252()
+ fun_l6_n713
+end
+
+def fun_l5_n253()
+ fun_l6_n208
+end
+
+def fun_l5_n254()
+ fun_l6_n345
+end
+
+def fun_l5_n255()
+ fun_l6_n976
+end
+
+def fun_l5_n256()
+ fun_l6_n775
+end
+
+def fun_l5_n257()
+ fun_l6_n20
+end
+
+def fun_l5_n258()
+ fun_l6_n476
+end
+
+def fun_l5_n259()
+ fun_l6_n80
+end
+
+def fun_l5_n260()
+ fun_l6_n160
+end
+
+def fun_l5_n261()
+ fun_l6_n624
+end
+
+def fun_l5_n262()
+ fun_l6_n275
+end
+
+def fun_l5_n263()
+ fun_l6_n301
+end
+
+def fun_l5_n264()
+ fun_l6_n640
+end
+
+def fun_l5_n265()
+ fun_l6_n473
+end
+
+def fun_l5_n266()
+ fun_l6_n991
+end
+
+def fun_l5_n267()
+ fun_l6_n458
+end
+
+def fun_l5_n268()
+ fun_l6_n128
+end
+
+def fun_l5_n269()
+ fun_l6_n28
+end
+
+def fun_l5_n270()
+ fun_l6_n40
+end
+
+def fun_l5_n271()
+ fun_l6_n48
+end
+
+def fun_l5_n272()
+ fun_l6_n916
+end
+
+def fun_l5_n273()
+ fun_l6_n114
+end
+
+def fun_l5_n274()
+ fun_l6_n747
+end
+
+def fun_l5_n275()
+ fun_l6_n239
+end
+
+def fun_l5_n276()
+ fun_l6_n151
+end
+
+def fun_l5_n277()
+ fun_l6_n820
+end
+
+def fun_l5_n278()
+ fun_l6_n684
+end
+
+def fun_l5_n279()
+ fun_l6_n628
+end
+
+def fun_l5_n280()
+ fun_l6_n248
+end
+
+def fun_l5_n281()
+ fun_l6_n793
+end
+
+def fun_l5_n282()
+ fun_l6_n137
+end
+
+def fun_l5_n283()
+ fun_l6_n520
+end
+
+def fun_l5_n284()
+ fun_l6_n750
+end
+
+def fun_l5_n285()
+ fun_l6_n445
+end
+
+def fun_l5_n286()
+ fun_l6_n419
+end
+
+def fun_l5_n287()
+ fun_l6_n681
+end
+
+def fun_l5_n288()
+ fun_l6_n16
+end
+
+def fun_l5_n289()
+ fun_l6_n939
+end
+
+def fun_l5_n290()
+ fun_l6_n664
+end
+
+def fun_l5_n291()
+ fun_l6_n580
+end
+
+def fun_l5_n292()
+ fun_l6_n945
+end
+
+def fun_l5_n293()
+ fun_l6_n129
+end
+
+def fun_l5_n294()
+ fun_l6_n142
+end
+
+def fun_l5_n295()
+ fun_l6_n774
+end
+
+def fun_l5_n296()
+ fun_l6_n667
+end
+
+def fun_l5_n297()
+ fun_l6_n659
+end
+
+def fun_l5_n298()
+ fun_l6_n82
+end
+
+def fun_l5_n299()
+ fun_l6_n452
+end
+
+def fun_l5_n300()
+ fun_l6_n340
+end
+
+def fun_l5_n301()
+ fun_l6_n675
+end
+
+def fun_l5_n302()
+ fun_l6_n506
+end
+
+def fun_l5_n303()
+ fun_l6_n166
+end
+
+def fun_l5_n304()
+ fun_l6_n220
+end
+
+def fun_l5_n305()
+ fun_l6_n894
+end
+
+def fun_l5_n306()
+ fun_l6_n467
+end
+
+def fun_l5_n307()
+ fun_l6_n204
+end
+
+def fun_l5_n308()
+ fun_l6_n580
+end
+
+def fun_l5_n309()
+ fun_l6_n90
+end
+
+def fun_l5_n310()
+ fun_l6_n854
+end
+
+def fun_l5_n311()
+ fun_l6_n384
+end
+
+def fun_l5_n312()
+ fun_l6_n540
+end
+
+def fun_l5_n313()
+ fun_l6_n314
+end
+
+def fun_l5_n314()
+ fun_l6_n90
+end
+
+def fun_l5_n315()
+ fun_l6_n106
+end
+
+def fun_l5_n316()
+ fun_l6_n404
+end
+
+def fun_l5_n317()
+ fun_l6_n396
+end
+
+def fun_l5_n318()
+ fun_l6_n229
+end
+
+def fun_l5_n319()
+ fun_l6_n137
+end
+
+def fun_l5_n320()
+ fun_l6_n781
+end
+
+def fun_l5_n321()
+ fun_l6_n949
+end
+
+def fun_l5_n322()
+ fun_l6_n810
+end
+
+def fun_l5_n323()
+ fun_l6_n574
+end
+
+def fun_l5_n324()
+ fun_l6_n465
+end
+
+def fun_l5_n325()
+ fun_l6_n785
+end
+
+def fun_l5_n326()
+ fun_l6_n408
+end
+
+def fun_l5_n327()
+ fun_l6_n658
+end
+
+def fun_l5_n328()
+ fun_l6_n1
+end
+
+def fun_l5_n329()
+ fun_l6_n586
+end
+
+def fun_l5_n330()
+ fun_l6_n375
+end
+
+def fun_l5_n331()
+ fun_l6_n950
+end
+
+def fun_l5_n332()
+ fun_l6_n924
+end
+
+def fun_l5_n333()
+ fun_l6_n224
+end
+
+def fun_l5_n334()
+ fun_l6_n786
+end
+
+def fun_l5_n335()
+ fun_l6_n184
+end
+
+def fun_l5_n336()
+ fun_l6_n125
+end
+
+def fun_l5_n337()
+ fun_l6_n215
+end
+
+def fun_l5_n338()
+ fun_l6_n110
+end
+
+def fun_l5_n339()
+ fun_l6_n16
+end
+
+def fun_l5_n340()
+ fun_l6_n746
+end
+
+def fun_l5_n341()
+ fun_l6_n50
+end
+
+def fun_l5_n342()
+ fun_l6_n198
+end
+
+def fun_l5_n343()
+ fun_l6_n735
+end
+
+def fun_l5_n344()
+ fun_l6_n260
+end
+
+def fun_l5_n345()
+ fun_l6_n481
+end
+
+def fun_l5_n346()
+ fun_l6_n100
+end
+
+def fun_l5_n347()
+ fun_l6_n581
+end
+
+def fun_l5_n348()
+ fun_l6_n803
+end
+
+def fun_l5_n349()
+ fun_l6_n495
+end
+
+def fun_l5_n350()
+ fun_l6_n316
+end
+
+def fun_l5_n351()
+ fun_l6_n810
+end
+
+def fun_l5_n352()
+ fun_l6_n21
+end
+
+def fun_l5_n353()
+ fun_l6_n409
+end
+
+def fun_l5_n354()
+ fun_l6_n814
+end
+
+def fun_l5_n355()
+ fun_l6_n525
+end
+
+def fun_l5_n356()
+ fun_l6_n445
+end
+
+def fun_l5_n357()
+ fun_l6_n940
+end
+
+def fun_l5_n358()
+ fun_l6_n508
+end
+
+def fun_l5_n359()
+ fun_l6_n511
+end
+
+def fun_l5_n360()
+ fun_l6_n29
+end
+
+def fun_l5_n361()
+ fun_l6_n272
+end
+
+def fun_l5_n362()
+ fun_l6_n715
+end
+
+def fun_l5_n363()
+ fun_l6_n518
+end
+
+def fun_l5_n364()
+ fun_l6_n392
+end
+
+def fun_l5_n365()
+ fun_l6_n762
+end
+
+def fun_l5_n366()
+ fun_l6_n250
+end
+
+def fun_l5_n367()
+ fun_l6_n192
+end
+
+def fun_l5_n368()
+ fun_l6_n741
+end
+
+def fun_l5_n369()
+ fun_l6_n340
+end
+
+def fun_l5_n370()
+ fun_l6_n891
+end
+
+def fun_l5_n371()
+ fun_l6_n22
+end
+
+def fun_l5_n372()
+ fun_l6_n369
+end
+
+def fun_l5_n373()
+ fun_l6_n653
+end
+
+def fun_l5_n374()
+ fun_l6_n282
+end
+
+def fun_l5_n375()
+ fun_l6_n7
+end
+
+def fun_l5_n376()
+ fun_l6_n511
+end
+
+def fun_l5_n377()
+ fun_l6_n511
+end
+
+def fun_l5_n378()
+ fun_l6_n718
+end
+
+def fun_l5_n379()
+ fun_l6_n521
+end
+
+def fun_l5_n380()
+ fun_l6_n331
+end
+
+def fun_l5_n381()
+ fun_l6_n343
+end
+
+def fun_l5_n382()
+ fun_l6_n411
+end
+
+def fun_l5_n383()
+ fun_l6_n780
+end
+
+def fun_l5_n384()
+ fun_l6_n398
+end
+
+def fun_l5_n385()
+ fun_l6_n173
+end
+
+def fun_l5_n386()
+ fun_l6_n693
+end
+
+def fun_l5_n387()
+ fun_l6_n360
+end
+
+def fun_l5_n388()
+ fun_l6_n146
+end
+
+def fun_l5_n389()
+ fun_l6_n796
+end
+
+def fun_l5_n390()
+ fun_l6_n403
+end
+
+def fun_l5_n391()
+ fun_l6_n662
+end
+
+def fun_l5_n392()
+ fun_l6_n281
+end
+
+def fun_l5_n393()
+ fun_l6_n617
+end
+
+def fun_l5_n394()
+ fun_l6_n367
+end
+
+def fun_l5_n395()
+ fun_l6_n433
+end
+
+def fun_l5_n396()
+ fun_l6_n748
+end
+
+def fun_l5_n397()
+ fun_l6_n600
+end
+
+def fun_l5_n398()
+ fun_l6_n490
+end
+
+def fun_l5_n399()
+ fun_l6_n120
+end
+
+def fun_l5_n400()
+ fun_l6_n549
+end
+
+def fun_l5_n401()
+ fun_l6_n148
+end
+
+def fun_l5_n402()
+ fun_l6_n488
+end
+
+def fun_l5_n403()
+ fun_l6_n316
+end
+
+def fun_l5_n404()
+ fun_l6_n106
+end
+
+def fun_l5_n405()
+ fun_l6_n702
+end
+
+def fun_l5_n406()
+ fun_l6_n787
+end
+
+def fun_l5_n407()
+ fun_l6_n9
+end
+
+def fun_l5_n408()
+ fun_l6_n338
+end
+
+def fun_l5_n409()
+ fun_l6_n83
+end
+
+def fun_l5_n410()
+ fun_l6_n234
+end
+
+def fun_l5_n411()
+ fun_l6_n147
+end
+
+def fun_l5_n412()
+ fun_l6_n602
+end
+
+def fun_l5_n413()
+ fun_l6_n173
+end
+
+def fun_l5_n414()
+ fun_l6_n420
+end
+
+def fun_l5_n415()
+ fun_l6_n214
+end
+
+def fun_l5_n416()
+ fun_l6_n400
+end
+
+def fun_l5_n417()
+ fun_l6_n35
+end
+
+def fun_l5_n418()
+ fun_l6_n545
+end
+
+def fun_l5_n419()
+ fun_l6_n823
+end
+
+def fun_l5_n420()
+ fun_l6_n401
+end
+
+def fun_l5_n421()
+ fun_l6_n447
+end
+
+def fun_l5_n422()
+ fun_l6_n461
+end
+
+def fun_l5_n423()
+ fun_l6_n447
+end
+
+def fun_l5_n424()
+ fun_l6_n530
+end
+
+def fun_l5_n425()
+ fun_l6_n104
+end
+
+def fun_l5_n426()
+ fun_l6_n206
+end
+
+def fun_l5_n427()
+ fun_l6_n25
+end
+
+def fun_l5_n428()
+ fun_l6_n867
+end
+
+def fun_l5_n429()
+ fun_l6_n160
+end
+
+def fun_l5_n430()
+ fun_l6_n152
+end
+
+def fun_l5_n431()
+ fun_l6_n308
+end
+
+def fun_l5_n432()
+ fun_l6_n603
+end
+
+def fun_l5_n433()
+ fun_l6_n270
+end
+
+def fun_l5_n434()
+ fun_l6_n397
+end
+
+def fun_l5_n435()
+ fun_l6_n819
+end
+
+def fun_l5_n436()
+ fun_l6_n476
+end
+
+def fun_l5_n437()
+ fun_l6_n533
+end
+
+def fun_l5_n438()
+ fun_l6_n989
+end
+
+def fun_l5_n439()
+ fun_l6_n329
+end
+
+def fun_l5_n440()
+ fun_l6_n216
+end
+
+def fun_l5_n441()
+ fun_l6_n54
+end
+
+def fun_l5_n442()
+ fun_l6_n374
+end
+
+def fun_l5_n443()
+ fun_l6_n544
+end
+
+def fun_l5_n444()
+ fun_l6_n586
+end
+
+def fun_l5_n445()
+ fun_l6_n137
+end
+
+def fun_l5_n446()
+ fun_l6_n115
+end
+
+def fun_l5_n447()
+ fun_l6_n908
+end
+
+def fun_l5_n448()
+ fun_l6_n657
+end
+
+def fun_l5_n449()
+ fun_l6_n876
+end
+
+def fun_l5_n450()
+ fun_l6_n585
+end
+
+def fun_l5_n451()
+ fun_l6_n159
+end
+
+def fun_l5_n452()
+ fun_l6_n66
+end
+
+def fun_l5_n453()
+ fun_l6_n327
+end
+
+def fun_l5_n454()
+ fun_l6_n441
+end
+
+def fun_l5_n455()
+ fun_l6_n399
+end
+
+def fun_l5_n456()
+ fun_l6_n335
+end
+
+def fun_l5_n457()
+ fun_l6_n820
+end
+
+def fun_l5_n458()
+ fun_l6_n494
+end
+
+def fun_l5_n459()
+ fun_l6_n683
+end
+
+def fun_l5_n460()
+ fun_l6_n453
+end
+
+def fun_l5_n461()
+ fun_l6_n202
+end
+
+def fun_l5_n462()
+ fun_l6_n274
+end
+
+def fun_l5_n463()
+ fun_l6_n493
+end
+
+def fun_l5_n464()
+ fun_l6_n874
+end
+
+def fun_l5_n465()
+ fun_l6_n882
+end
+
+def fun_l5_n466()
+ fun_l6_n706
+end
+
+def fun_l5_n467()
+ fun_l6_n356
+end
+
+def fun_l5_n468()
+ fun_l6_n21
+end
+
+def fun_l5_n469()
+ fun_l6_n131
+end
+
+def fun_l5_n470()
+ fun_l6_n818
+end
+
+def fun_l5_n471()
+ fun_l6_n58
+end
+
+def fun_l5_n472()
+ fun_l6_n606
+end
+
+def fun_l5_n473()
+ fun_l6_n368
+end
+
+def fun_l5_n474()
+ fun_l6_n266
+end
+
+def fun_l5_n475()
+ fun_l6_n910
+end
+
+def fun_l5_n476()
+ fun_l6_n406
+end
+
+def fun_l5_n477()
+ fun_l6_n522
+end
+
+def fun_l5_n478()
+ fun_l6_n479
+end
+
+def fun_l5_n479()
+ fun_l6_n247
+end
+
+def fun_l5_n480()
+ fun_l6_n785
+end
+
+def fun_l5_n481()
+ fun_l6_n953
+end
+
+def fun_l5_n482()
+ fun_l6_n443
+end
+
+def fun_l5_n483()
+ fun_l6_n834
+end
+
+def fun_l5_n484()
+ fun_l6_n494
+end
+
+def fun_l5_n485()
+ fun_l6_n65
+end
+
+def fun_l5_n486()
+ fun_l6_n93
+end
+
+def fun_l5_n487()
+ fun_l6_n702
+end
+
+def fun_l5_n488()
+ fun_l6_n571
+end
+
+def fun_l5_n489()
+ fun_l6_n233
+end
+
+def fun_l5_n490()
+ fun_l6_n106
+end
+
+def fun_l5_n491()
+ fun_l6_n806
+end
+
+def fun_l5_n492()
+ fun_l6_n795
+end
+
+def fun_l5_n493()
+ fun_l6_n273
+end
+
+def fun_l5_n494()
+ fun_l6_n943
+end
+
+def fun_l5_n495()
+ fun_l6_n710
+end
+
+def fun_l5_n496()
+ fun_l6_n419
+end
+
+def fun_l5_n497()
+ fun_l6_n758
+end
+
+def fun_l5_n498()
+ fun_l6_n677
+end
+
+def fun_l5_n499()
+ fun_l6_n573
+end
+
+def fun_l5_n500()
+ fun_l6_n576
+end
+
+def fun_l5_n501()
+ fun_l6_n654
+end
+
+def fun_l5_n502()
+ fun_l6_n497
+end
+
+def fun_l5_n503()
+ fun_l6_n75
+end
+
+def fun_l5_n504()
+ fun_l6_n660
+end
+
+def fun_l5_n505()
+ fun_l6_n923
+end
+
+def fun_l5_n506()
+ fun_l6_n250
+end
+
+def fun_l5_n507()
+ fun_l6_n648
+end
+
+def fun_l5_n508()
+ fun_l6_n785
+end
+
+def fun_l5_n509()
+ fun_l6_n158
+end
+
+def fun_l5_n510()
+ fun_l6_n564
+end
+
+def fun_l5_n511()
+ fun_l6_n916
+end
+
+def fun_l5_n512()
+ fun_l6_n943
+end
+
+def fun_l5_n513()
+ fun_l6_n468
+end
+
+def fun_l5_n514()
+ fun_l6_n165
+end
+
+def fun_l5_n515()
+ fun_l6_n566
+end
+
+def fun_l5_n516()
+ fun_l6_n280
+end
+
+def fun_l5_n517()
+ fun_l6_n998
+end
+
+def fun_l5_n518()
+ fun_l6_n282
+end
+
+def fun_l5_n519()
+ fun_l6_n419
+end
+
+def fun_l5_n520()
+ fun_l6_n10
+end
+
+def fun_l5_n521()
+ fun_l6_n298
+end
+
+def fun_l5_n522()
+ fun_l6_n571
+end
+
+def fun_l5_n523()
+ fun_l6_n873
+end
+
+def fun_l5_n524()
+ fun_l6_n165
+end
+
+def fun_l5_n525()
+ fun_l6_n807
+end
+
+def fun_l5_n526()
+ fun_l6_n194
+end
+
+def fun_l5_n527()
+ fun_l6_n410
+end
+
+def fun_l5_n528()
+ fun_l6_n377
+end
+
+def fun_l5_n529()
+ fun_l6_n328
+end
+
+def fun_l5_n530()
+ fun_l6_n322
+end
+
+def fun_l5_n531()
+ fun_l6_n760
+end
+
+def fun_l5_n532()
+ fun_l6_n738
+end
+
+def fun_l5_n533()
+ fun_l6_n388
+end
+
+def fun_l5_n534()
+ fun_l6_n609
+end
+
+def fun_l5_n535()
+ fun_l6_n808
+end
+
+def fun_l5_n536()
+ fun_l6_n686
+end
+
+def fun_l5_n537()
+ fun_l6_n825
+end
+
+def fun_l5_n538()
+ fun_l6_n940
+end
+
+def fun_l5_n539()
+ fun_l6_n147
+end
+
+def fun_l5_n540()
+ fun_l6_n851
+end
+
+def fun_l5_n541()
+ fun_l6_n983
+end
+
+def fun_l5_n542()
+ fun_l6_n938
+end
+
+def fun_l5_n543()
+ fun_l6_n323
+end
+
+def fun_l5_n544()
+ fun_l6_n662
+end
+
+def fun_l5_n545()
+ fun_l6_n611
+end
+
+def fun_l5_n546()
+ fun_l6_n185
+end
+
+def fun_l5_n547()
+ fun_l6_n321
+end
+
+def fun_l5_n548()
+ fun_l6_n353
+end
+
+def fun_l5_n549()
+ fun_l6_n240
+end
+
+def fun_l5_n550()
+ fun_l6_n69
+end
+
+def fun_l5_n551()
+ fun_l6_n58
+end
+
+def fun_l5_n552()
+ fun_l6_n108
+end
+
+def fun_l5_n553()
+ fun_l6_n169
+end
+
+def fun_l5_n554()
+ fun_l6_n649
+end
+
+def fun_l5_n555()
+ fun_l6_n28
+end
+
+def fun_l5_n556()
+ fun_l6_n136
+end
+
+def fun_l5_n557()
+ fun_l6_n958
+end
+
+def fun_l5_n558()
+ fun_l6_n107
+end
+
+def fun_l5_n559()
+ fun_l6_n495
+end
+
+def fun_l5_n560()
+ fun_l6_n927
+end
+
+def fun_l5_n561()
+ fun_l6_n994
+end
+
+def fun_l5_n562()
+ fun_l6_n134
+end
+
+def fun_l5_n563()
+ fun_l6_n393
+end
+
+def fun_l5_n564()
+ fun_l6_n73
+end
+
+def fun_l5_n565()
+ fun_l6_n860
+end
+
+def fun_l5_n566()
+ fun_l6_n763
+end
+
+def fun_l5_n567()
+ fun_l6_n545
+end
+
+def fun_l5_n568()
+ fun_l6_n429
+end
+
+def fun_l5_n569()
+ fun_l6_n430
+end
+
+def fun_l5_n570()
+ fun_l6_n50
+end
+
+def fun_l5_n571()
+ fun_l6_n574
+end
+
+def fun_l5_n572()
+ fun_l6_n195
+end
+
+def fun_l5_n573()
+ fun_l6_n327
+end
+
+def fun_l5_n574()
+ fun_l6_n207
+end
+
+def fun_l5_n575()
+ fun_l6_n669
+end
+
+def fun_l5_n576()
+ fun_l6_n978
+end
+
+def fun_l5_n577()
+ fun_l6_n60
+end
+
+def fun_l5_n578()
+ fun_l6_n561
+end
+
+def fun_l5_n579()
+ fun_l6_n298
+end
+
+def fun_l5_n580()
+ fun_l6_n790
+end
+
+def fun_l5_n581()
+ fun_l6_n887
+end
+
+def fun_l5_n582()
+ fun_l6_n516
+end
+
+def fun_l5_n583()
+ fun_l6_n895
+end
+
+def fun_l5_n584()
+ fun_l6_n345
+end
+
+def fun_l5_n585()
+ fun_l6_n117
+end
+
+def fun_l5_n586()
+ fun_l6_n493
+end
+
+def fun_l5_n587()
+ fun_l6_n84
+end
+
+def fun_l5_n588()
+ fun_l6_n62
+end
+
+def fun_l5_n589()
+ fun_l6_n91
+end
+
+def fun_l5_n590()
+ fun_l6_n113
+end
+
+def fun_l5_n591()
+ fun_l6_n568
+end
+
+def fun_l5_n592()
+ fun_l6_n273
+end
+
+def fun_l5_n593()
+ fun_l6_n557
+end
+
+def fun_l5_n594()
+ fun_l6_n528
+end
+
+def fun_l5_n595()
+ fun_l6_n283
+end
+
+def fun_l5_n596()
+ fun_l6_n962
+end
+
+def fun_l5_n597()
+ fun_l6_n140
+end
+
+def fun_l5_n598()
+ fun_l6_n780
+end
+
+def fun_l5_n599()
+ fun_l6_n220
+end
+
+def fun_l5_n600()
+ fun_l6_n43
+end
+
+def fun_l5_n601()
+ fun_l6_n256
+end
+
+def fun_l5_n602()
+ fun_l6_n619
+end
+
+def fun_l5_n603()
+ fun_l6_n873
+end
+
+def fun_l5_n604()
+ fun_l6_n975
+end
+
+def fun_l5_n605()
+ fun_l6_n308
+end
+
+def fun_l5_n606()
+ fun_l6_n519
+end
+
+def fun_l5_n607()
+ fun_l6_n356
+end
+
+def fun_l5_n608()
+ fun_l6_n7
+end
+
+def fun_l5_n609()
+ fun_l6_n161
+end
+
+def fun_l5_n610()
+ fun_l6_n122
+end
+
+def fun_l5_n611()
+ fun_l6_n311
+end
+
+def fun_l5_n612()
+ fun_l6_n130
+end
+
+def fun_l5_n613()
+ fun_l6_n603
+end
+
+def fun_l5_n614()
+ fun_l6_n53
+end
+
+def fun_l5_n615()
+ fun_l6_n478
+end
+
+def fun_l5_n616()
+ fun_l6_n585
+end
+
+def fun_l5_n617()
+ fun_l6_n639
+end
+
+def fun_l5_n618()
+ fun_l6_n943
+end
+
+def fun_l5_n619()
+ fun_l6_n432
+end
+
+def fun_l5_n620()
+ fun_l6_n959
+end
+
+def fun_l5_n621()
+ fun_l6_n220
+end
+
+def fun_l5_n622()
+ fun_l6_n243
+end
+
+def fun_l5_n623()
+ fun_l6_n755
+end
+
+def fun_l5_n624()
+ fun_l6_n312
+end
+
+def fun_l5_n625()
+ fun_l6_n61
+end
+
+def fun_l5_n626()
+ fun_l6_n290
+end
+
+def fun_l5_n627()
+ fun_l6_n452
+end
+
+def fun_l5_n628()
+ fun_l6_n225
+end
+
+def fun_l5_n629()
+ fun_l6_n69
+end
+
+def fun_l5_n630()
+ fun_l6_n329
+end
+
+def fun_l5_n631()
+ fun_l6_n24
+end
+
+def fun_l5_n632()
+ fun_l6_n798
+end
+
+def fun_l5_n633()
+ fun_l6_n931
+end
+
+def fun_l5_n634()
+ fun_l6_n801
+end
+
+def fun_l5_n635()
+ fun_l6_n725
+end
+
+def fun_l5_n636()
+ fun_l6_n839
+end
+
+def fun_l5_n637()
+ fun_l6_n870
+end
+
+def fun_l5_n638()
+ fun_l6_n847
+end
+
+def fun_l5_n639()
+ fun_l6_n448
+end
+
+def fun_l5_n640()
+ fun_l6_n46
+end
+
+def fun_l5_n641()
+ fun_l6_n359
+end
+
+def fun_l5_n642()
+ fun_l6_n102
+end
+
+def fun_l5_n643()
+ fun_l6_n149
+end
+
+def fun_l5_n644()
+ fun_l6_n126
+end
+
+def fun_l5_n645()
+ fun_l6_n72
+end
+
+def fun_l5_n646()
+ fun_l6_n320
+end
+
+def fun_l5_n647()
+ fun_l6_n483
+end
+
+def fun_l5_n648()
+ fun_l6_n797
+end
+
+def fun_l5_n649()
+ fun_l6_n130
+end
+
+def fun_l5_n650()
+ fun_l6_n711
+end
+
+def fun_l5_n651()
+ fun_l6_n979
+end
+
+def fun_l5_n652()
+ fun_l6_n534
+end
+
+def fun_l5_n653()
+ fun_l6_n335
+end
+
+def fun_l5_n654()
+ fun_l6_n181
+end
+
+def fun_l5_n655()
+ fun_l6_n435
+end
+
+def fun_l5_n656()
+ fun_l6_n412
+end
+
+def fun_l5_n657()
+ fun_l6_n247
+end
+
+def fun_l5_n658()
+ fun_l6_n450
+end
+
+def fun_l5_n659()
+ fun_l6_n367
+end
+
+def fun_l5_n660()
+ fun_l6_n220
+end
+
+def fun_l5_n661()
+ fun_l6_n410
+end
+
+def fun_l5_n662()
+ fun_l6_n739
+end
+
+def fun_l5_n663()
+ fun_l6_n846
+end
+
+def fun_l5_n664()
+ fun_l6_n238
+end
+
+def fun_l5_n665()
+ fun_l6_n419
+end
+
+def fun_l5_n666()
+ fun_l6_n687
+end
+
+def fun_l5_n667()
+ fun_l6_n229
+end
+
+def fun_l5_n668()
+ fun_l6_n129
+end
+
+def fun_l5_n669()
+ fun_l6_n767
+end
+
+def fun_l5_n670()
+ fun_l6_n809
+end
+
+def fun_l5_n671()
+ fun_l6_n301
+end
+
+def fun_l5_n672()
+ fun_l6_n268
+end
+
+def fun_l5_n673()
+ fun_l6_n635
+end
+
+def fun_l5_n674()
+ fun_l6_n623
+end
+
+def fun_l5_n675()
+ fun_l6_n601
+end
+
+def fun_l5_n676()
+ fun_l6_n464
+end
+
+def fun_l5_n677()
+ fun_l6_n285
+end
+
+def fun_l5_n678()
+ fun_l6_n536
+end
+
+def fun_l5_n679()
+ fun_l6_n233
+end
+
+def fun_l5_n680()
+ fun_l6_n78
+end
+
+def fun_l5_n681()
+ fun_l6_n644
+end
+
+def fun_l5_n682()
+ fun_l6_n289
+end
+
+def fun_l5_n683()
+ fun_l6_n314
+end
+
+def fun_l5_n684()
+ fun_l6_n743
+end
+
+def fun_l5_n685()
+ fun_l6_n444
+end
+
+def fun_l5_n686()
+ fun_l6_n645
+end
+
+def fun_l5_n687()
+ fun_l6_n800
+end
+
+def fun_l5_n688()
+ fun_l6_n507
+end
+
+def fun_l5_n689()
+ fun_l6_n675
+end
+
+def fun_l5_n690()
+ fun_l6_n231
+end
+
+def fun_l5_n691()
+ fun_l6_n595
+end
+
+def fun_l5_n692()
+ fun_l6_n675
+end
+
+def fun_l5_n693()
+ fun_l6_n555
+end
+
+def fun_l5_n694()
+ fun_l6_n35
+end
+
+def fun_l5_n695()
+ fun_l6_n342
+end
+
+def fun_l5_n696()
+ fun_l6_n250
+end
+
+def fun_l5_n697()
+ fun_l6_n706
+end
+
+def fun_l5_n698()
+ fun_l6_n550
+end
+
+def fun_l5_n699()
+ fun_l6_n446
+end
+
+def fun_l5_n700()
+ fun_l6_n190
+end
+
+def fun_l5_n701()
+ fun_l6_n404
+end
+
+def fun_l5_n702()
+ fun_l6_n545
+end
+
+def fun_l5_n703()
+ fun_l6_n721
+end
+
+def fun_l5_n704()
+ fun_l6_n681
+end
+
+def fun_l5_n705()
+ fun_l6_n760
+end
+
+def fun_l5_n706()
+ fun_l6_n853
+end
+
+def fun_l5_n707()
+ fun_l6_n847
+end
+
+def fun_l5_n708()
+ fun_l6_n661
+end
+
+def fun_l5_n709()
+ fun_l6_n257
+end
+
+def fun_l5_n710()
+ fun_l6_n151
+end
+
+def fun_l5_n711()
+ fun_l6_n120
+end
+
+def fun_l5_n712()
+ fun_l6_n701
+end
+
+def fun_l5_n713()
+ fun_l6_n89
+end
+
+def fun_l5_n714()
+ fun_l6_n443
+end
+
+def fun_l5_n715()
+ fun_l6_n969
+end
+
+def fun_l5_n716()
+ fun_l6_n879
+end
+
+def fun_l5_n717()
+ fun_l6_n525
+end
+
+def fun_l5_n718()
+ fun_l6_n471
+end
+
+def fun_l5_n719()
+ fun_l6_n762
+end
+
+def fun_l5_n720()
+ fun_l6_n803
+end
+
+def fun_l5_n721()
+ fun_l6_n741
+end
+
+def fun_l5_n722()
+ fun_l6_n279
+end
+
+def fun_l5_n723()
+ fun_l6_n903
+end
+
+def fun_l5_n724()
+ fun_l6_n20
+end
+
+def fun_l5_n725()
+ fun_l6_n930
+end
+
+def fun_l5_n726()
+ fun_l6_n504
+end
+
+def fun_l5_n727()
+ fun_l6_n978
+end
+
+def fun_l5_n728()
+ fun_l6_n304
+end
+
+def fun_l5_n729()
+ fun_l6_n133
+end
+
+def fun_l5_n730()
+ fun_l6_n430
+end
+
+def fun_l5_n731()
+ fun_l6_n917
+end
+
+def fun_l5_n732()
+ fun_l6_n987
+end
+
+def fun_l5_n733()
+ fun_l6_n24
+end
+
+def fun_l5_n734()
+ fun_l6_n884
+end
+
+def fun_l5_n735()
+ fun_l6_n928
+end
+
+def fun_l5_n736()
+ fun_l6_n126
+end
+
+def fun_l5_n737()
+ fun_l6_n425
+end
+
+def fun_l5_n738()
+ fun_l6_n113
+end
+
+def fun_l5_n739()
+ fun_l6_n779
+end
+
+def fun_l5_n740()
+ fun_l6_n649
+end
+
+def fun_l5_n741()
+ fun_l6_n352
+end
+
+def fun_l5_n742()
+ fun_l6_n369
+end
+
+def fun_l5_n743()
+ fun_l6_n13
+end
+
+def fun_l5_n744()
+ fun_l6_n460
+end
+
+def fun_l5_n745()
+ fun_l6_n476
+end
+
+def fun_l5_n746()
+ fun_l6_n146
+end
+
+def fun_l5_n747()
+ fun_l6_n38
+end
+
+def fun_l5_n748()
+ fun_l6_n86
+end
+
+def fun_l5_n749()
+ fun_l6_n875
+end
+
+def fun_l5_n750()
+ fun_l6_n812
+end
+
+def fun_l5_n751()
+ fun_l6_n282
+end
+
+def fun_l5_n752()
+ fun_l6_n474
+end
+
+def fun_l5_n753()
+ fun_l6_n546
+end
+
+def fun_l5_n754()
+ fun_l6_n107
+end
+
+def fun_l5_n755()
+ fun_l6_n550
+end
+
+def fun_l5_n756()
+ fun_l6_n868
+end
+
+def fun_l5_n757()
+ fun_l6_n149
+end
+
+def fun_l5_n758()
+ fun_l6_n662
+end
+
+def fun_l5_n759()
+ fun_l6_n642
+end
+
+def fun_l5_n760()
+ fun_l6_n760
+end
+
+def fun_l5_n761()
+ fun_l6_n530
+end
+
+def fun_l5_n762()
+ fun_l6_n765
+end
+
+def fun_l5_n763()
+ fun_l6_n634
+end
+
+def fun_l5_n764()
+ fun_l6_n946
+end
+
+def fun_l5_n765()
+ fun_l6_n423
+end
+
+def fun_l5_n766()
+ fun_l6_n478
+end
+
+def fun_l5_n767()
+ fun_l6_n142
+end
+
+def fun_l5_n768()
+ fun_l6_n550
+end
+
+def fun_l5_n769()
+ fun_l6_n610
+end
+
+def fun_l5_n770()
+ fun_l6_n340
+end
+
+def fun_l5_n771()
+ fun_l6_n29
+end
+
+def fun_l5_n772()
+ fun_l6_n164
+end
+
+def fun_l5_n773()
+ fun_l6_n476
+end
+
+def fun_l5_n774()
+ fun_l6_n48
+end
+
+def fun_l5_n775()
+ fun_l6_n123
+end
+
+def fun_l5_n776()
+ fun_l6_n879
+end
+
+def fun_l5_n777()
+ fun_l6_n958
+end
+
+def fun_l5_n778()
+ fun_l6_n100
+end
+
+def fun_l5_n779()
+ fun_l6_n927
+end
+
+def fun_l5_n780()
+ fun_l6_n105
+end
+
+def fun_l5_n781()
+ fun_l6_n360
+end
+
+def fun_l5_n782()
+ fun_l6_n327
+end
+
+def fun_l5_n783()
+ fun_l6_n677
+end
+
+def fun_l5_n784()
+ fun_l6_n378
+end
+
+def fun_l5_n785()
+ fun_l6_n9
+end
+
+def fun_l5_n786()
+ fun_l6_n692
+end
+
+def fun_l5_n787()
+ fun_l6_n952
+end
+
+def fun_l5_n788()
+ fun_l6_n156
+end
+
+def fun_l5_n789()
+ fun_l6_n222
+end
+
+def fun_l5_n790()
+ fun_l6_n419
+end
+
+def fun_l5_n791()
+ fun_l6_n128
+end
+
+def fun_l5_n792()
+ fun_l6_n311
+end
+
+def fun_l5_n793()
+ fun_l6_n610
+end
+
+def fun_l5_n794()
+ fun_l6_n897
+end
+
+def fun_l5_n795()
+ fun_l6_n806
+end
+
+def fun_l5_n796()
+ fun_l6_n291
+end
+
+def fun_l5_n797()
+ fun_l6_n942
+end
+
+def fun_l5_n798()
+ fun_l6_n208
+end
+
+def fun_l5_n799()
+ fun_l6_n776
+end
+
+def fun_l5_n800()
+ fun_l6_n866
+end
+
+def fun_l5_n801()
+ fun_l6_n132
+end
+
+def fun_l5_n802()
+ fun_l6_n436
+end
+
+def fun_l5_n803()
+ fun_l6_n804
+end
+
+def fun_l5_n804()
+ fun_l6_n810
+end
+
+def fun_l5_n805()
+ fun_l6_n302
+end
+
+def fun_l5_n806()
+ fun_l6_n501
+end
+
+def fun_l5_n807()
+ fun_l6_n812
+end
+
+def fun_l5_n808()
+ fun_l6_n861
+end
+
+def fun_l5_n809()
+ fun_l6_n359
+end
+
+def fun_l5_n810()
+ fun_l6_n366
+end
+
+def fun_l5_n811()
+ fun_l6_n855
+end
+
+def fun_l5_n812()
+ fun_l6_n960
+end
+
+def fun_l5_n813()
+ fun_l6_n868
+end
+
+def fun_l5_n814()
+ fun_l6_n101
+end
+
+def fun_l5_n815()
+ fun_l6_n540
+end
+
+def fun_l5_n816()
+ fun_l6_n486
+end
+
+def fun_l5_n817()
+ fun_l6_n896
+end
+
+def fun_l5_n818()
+ fun_l6_n240
+end
+
+def fun_l5_n819()
+ fun_l6_n425
+end
+
+def fun_l5_n820()
+ fun_l6_n408
+end
+
+def fun_l5_n821()
+ fun_l6_n779
+end
+
+def fun_l5_n822()
+ fun_l6_n486
+end
+
+def fun_l5_n823()
+ fun_l6_n903
+end
+
+def fun_l5_n824()
+ fun_l6_n957
+end
+
+def fun_l5_n825()
+ fun_l6_n213
+end
+
+def fun_l5_n826()
+ fun_l6_n326
+end
+
+def fun_l5_n827()
+ fun_l6_n944
+end
+
+def fun_l5_n828()
+ fun_l6_n772
+end
+
+def fun_l5_n829()
+ fun_l6_n879
+end
+
+def fun_l5_n830()
+ fun_l6_n406
+end
+
+def fun_l5_n831()
+ fun_l6_n488
+end
+
+def fun_l5_n832()
+ fun_l6_n615
+end
+
+def fun_l5_n833()
+ fun_l6_n113
+end
+
+def fun_l5_n834()
+ fun_l6_n826
+end
+
+def fun_l5_n835()
+ fun_l6_n621
+end
+
+def fun_l5_n836()
+ fun_l6_n520
+end
+
+def fun_l5_n837()
+ fun_l6_n729
+end
+
+def fun_l5_n838()
+ fun_l6_n83
+end
+
+def fun_l5_n839()
+ fun_l6_n616
+end
+
+def fun_l5_n840()
+ fun_l6_n477
+end
+
+def fun_l5_n841()
+ fun_l6_n25
+end
+
+def fun_l5_n842()
+ fun_l6_n391
+end
+
+def fun_l5_n843()
+ fun_l6_n974
+end
+
+def fun_l5_n844()
+ fun_l6_n970
+end
+
+def fun_l5_n845()
+ fun_l6_n316
+end
+
+def fun_l5_n846()
+ fun_l6_n596
+end
+
+def fun_l5_n847()
+ fun_l6_n518
+end
+
+def fun_l5_n848()
+ fun_l6_n437
+end
+
+def fun_l5_n849()
+ fun_l6_n268
+end
+
+def fun_l5_n850()
+ fun_l6_n347
+end
+
+def fun_l5_n851()
+ fun_l6_n110
+end
+
+def fun_l5_n852()
+ fun_l6_n783
+end
+
+def fun_l5_n853()
+ fun_l6_n503
+end
+
+def fun_l5_n854()
+ fun_l6_n56
+end
+
+def fun_l5_n855()
+ fun_l6_n294
+end
+
+def fun_l5_n856()
+ fun_l6_n145
+end
+
+def fun_l5_n857()
+ fun_l6_n627
+end
+
+def fun_l5_n858()
+ fun_l6_n917
+end
+
+def fun_l5_n859()
+ fun_l6_n242
+end
+
+def fun_l5_n860()
+ fun_l6_n35
+end
+
+def fun_l5_n861()
+ fun_l6_n883
+end
+
+def fun_l5_n862()
+ fun_l6_n766
+end
+
+def fun_l5_n863()
+ fun_l6_n877
+end
+
+def fun_l5_n864()
+ fun_l6_n974
+end
+
+def fun_l5_n865()
+ fun_l6_n525
+end
+
+def fun_l5_n866()
+ fun_l6_n490
+end
+
+def fun_l5_n867()
+ fun_l6_n920
+end
+
+def fun_l5_n868()
+ fun_l6_n28
+end
+
+def fun_l5_n869()
+ fun_l6_n855
+end
+
+def fun_l5_n870()
+ fun_l6_n246
+end
+
+def fun_l5_n871()
+ fun_l6_n60
+end
+
+def fun_l5_n872()
+ fun_l6_n868
+end
+
+def fun_l5_n873()
+ fun_l6_n706
+end
+
+def fun_l5_n874()
+ fun_l6_n629
+end
+
+def fun_l5_n875()
+ fun_l6_n44
+end
+
+def fun_l5_n876()
+ fun_l6_n521
+end
+
+def fun_l5_n877()
+ fun_l6_n607
+end
+
+def fun_l5_n878()
+ fun_l6_n385
+end
+
+def fun_l5_n879()
+ fun_l6_n109
+end
+
+def fun_l5_n880()
+ fun_l6_n296
+end
+
+def fun_l5_n881()
+ fun_l6_n466
+end
+
+def fun_l5_n882()
+ fun_l6_n933
+end
+
+def fun_l5_n883()
+ fun_l6_n529
+end
+
+def fun_l5_n884()
+ fun_l6_n863
+end
+
+def fun_l5_n885()
+ fun_l6_n112
+end
+
+def fun_l5_n886()
+ fun_l6_n262
+end
+
+def fun_l5_n887()
+ fun_l6_n853
+end
+
+def fun_l5_n888()
+ fun_l6_n657
+end
+
+def fun_l5_n889()
+ fun_l6_n860
+end
+
+def fun_l5_n890()
+ fun_l6_n878
+end
+
+def fun_l5_n891()
+ fun_l6_n810
+end
+
+def fun_l5_n892()
+ fun_l6_n285
+end
+
+def fun_l5_n893()
+ fun_l6_n319
+end
+
+def fun_l5_n894()
+ fun_l6_n927
+end
+
+def fun_l5_n895()
+ fun_l6_n530
+end
+
+def fun_l5_n896()
+ fun_l6_n874
+end
+
+def fun_l5_n897()
+ fun_l6_n522
+end
+
+def fun_l5_n898()
+ fun_l6_n31
+end
+
+def fun_l5_n899()
+ fun_l6_n292
+end
+
+def fun_l5_n900()
+ fun_l6_n847
+end
+
+def fun_l5_n901()
+ fun_l6_n989
+end
+
+def fun_l5_n902()
+ fun_l6_n435
+end
+
+def fun_l5_n903()
+ fun_l6_n368
+end
+
+def fun_l5_n904()
+ fun_l6_n320
+end
+
+def fun_l5_n905()
+ fun_l6_n889
+end
+
+def fun_l5_n906()
+ fun_l6_n101
+end
+
+def fun_l5_n907()
+ fun_l6_n717
+end
+
+def fun_l5_n908()
+ fun_l6_n456
+end
+
+def fun_l5_n909()
+ fun_l6_n448
+end
+
+def fun_l5_n910()
+ fun_l6_n523
+end
+
+def fun_l5_n911()
+ fun_l6_n604
+end
+
+def fun_l5_n912()
+ fun_l6_n429
+end
+
+def fun_l5_n913()
+ fun_l6_n947
+end
+
+def fun_l5_n914()
+ fun_l6_n804
+end
+
+def fun_l5_n915()
+ fun_l6_n665
+end
+
+def fun_l5_n916()
+ fun_l6_n195
+end
+
+def fun_l5_n917()
+ fun_l6_n803
+end
+
+def fun_l5_n918()
+ fun_l6_n957
+end
+
+def fun_l5_n919()
+ fun_l6_n187
+end
+
+def fun_l5_n920()
+ fun_l6_n489
+end
+
+def fun_l5_n921()
+ fun_l6_n315
+end
+
+def fun_l5_n922()
+ fun_l6_n216
+end
+
+def fun_l5_n923()
+ fun_l6_n482
+end
+
+def fun_l5_n924()
+ fun_l6_n20
+end
+
+def fun_l5_n925()
+ fun_l6_n941
+end
+
+def fun_l5_n926()
+ fun_l6_n73
+end
+
+def fun_l5_n927()
+ fun_l6_n563
+end
+
+def fun_l5_n928()
+ fun_l6_n179
+end
+
+def fun_l5_n929()
+ fun_l6_n861
+end
+
+def fun_l5_n930()
+ fun_l6_n811
+end
+
+def fun_l5_n931()
+ fun_l6_n996
+end
+
+def fun_l5_n932()
+ fun_l6_n25
+end
+
+def fun_l5_n933()
+ fun_l6_n232
+end
+
+def fun_l5_n934()
+ fun_l6_n671
+end
+
+def fun_l5_n935()
+ fun_l6_n162
+end
+
+def fun_l5_n936()
+ fun_l6_n363
+end
+
+def fun_l5_n937()
+ fun_l6_n517
+end
+
+def fun_l5_n938()
+ fun_l6_n655
+end
+
+def fun_l5_n939()
+ fun_l6_n825
+end
+
+def fun_l5_n940()
+ fun_l6_n58
+end
+
+def fun_l5_n941()
+ fun_l6_n440
+end
+
+def fun_l5_n942()
+ fun_l6_n106
+end
+
+def fun_l5_n943()
+ fun_l6_n218
+end
+
+def fun_l5_n944()
+ fun_l6_n580
+end
+
+def fun_l5_n945()
+ fun_l6_n63
+end
+
+def fun_l5_n946()
+ fun_l6_n116
+end
+
+def fun_l5_n947()
+ fun_l6_n329
+end
+
+def fun_l5_n948()
+ fun_l6_n511
+end
+
+def fun_l5_n949()
+ fun_l6_n499
+end
+
+def fun_l5_n950()
+ fun_l6_n469
+end
+
+def fun_l5_n951()
+ fun_l6_n18
+end
+
+def fun_l5_n952()
+ fun_l6_n200
+end
+
+def fun_l5_n953()
+ fun_l6_n924
+end
+
+def fun_l5_n954()
+ fun_l6_n879
+end
+
+def fun_l5_n955()
+ fun_l6_n959
+end
+
+def fun_l5_n956()
+ fun_l6_n867
+end
+
+def fun_l5_n957()
+ fun_l6_n650
+end
+
+def fun_l5_n958()
+ fun_l6_n481
+end
+
+def fun_l5_n959()
+ fun_l6_n892
+end
+
+def fun_l5_n960()
+ fun_l6_n499
+end
+
+def fun_l5_n961()
+ fun_l6_n406
+end
+
+def fun_l5_n962()
+ fun_l6_n762
+end
+
+def fun_l5_n963()
+ fun_l6_n479
+end
+
+def fun_l5_n964()
+ fun_l6_n869
+end
+
+def fun_l5_n965()
+ fun_l6_n321
+end
+
+def fun_l5_n966()
+ fun_l6_n722
+end
+
+def fun_l5_n967()
+ fun_l6_n834
+end
+
+def fun_l5_n968()
+ fun_l6_n873
+end
+
+def fun_l5_n969()
+ fun_l6_n295
+end
+
+def fun_l5_n970()
+ fun_l6_n394
+end
+
+def fun_l5_n971()
+ fun_l6_n944
+end
+
+def fun_l5_n972()
+ fun_l6_n335
+end
+
+def fun_l5_n973()
+ fun_l6_n958
+end
+
+def fun_l5_n974()
+ fun_l6_n159
+end
+
+def fun_l5_n975()
+ fun_l6_n336
+end
+
+def fun_l5_n976()
+ fun_l6_n979
+end
+
+def fun_l5_n977()
+ fun_l6_n106
+end
+
+def fun_l5_n978()
+ fun_l6_n587
+end
+
+def fun_l5_n979()
+ fun_l6_n693
+end
+
+def fun_l5_n980()
+ fun_l6_n633
+end
+
+def fun_l5_n981()
+ fun_l6_n359
+end
+
+def fun_l5_n982()
+ fun_l6_n118
+end
+
+def fun_l5_n983()
+ fun_l6_n689
+end
+
+def fun_l5_n984()
+ fun_l6_n398
+end
+
+def fun_l5_n985()
+ fun_l6_n985
+end
+
+def fun_l5_n986()
+ fun_l6_n381
+end
+
+def fun_l5_n987()
+ fun_l6_n322
+end
+
+def fun_l5_n988()
+ fun_l6_n817
+end
+
+def fun_l5_n989()
+ fun_l6_n793
+end
+
+def fun_l5_n990()
+ fun_l6_n619
+end
+
+def fun_l5_n991()
+ fun_l6_n876
+end
+
+def fun_l5_n992()
+ fun_l6_n390
+end
+
+def fun_l5_n993()
+ fun_l6_n58
+end
+
+def fun_l5_n994()
+ fun_l6_n545
+end
+
+def fun_l5_n995()
+ fun_l6_n364
+end
+
+def fun_l5_n996()
+ fun_l6_n849
+end
+
+def fun_l5_n997()
+ fun_l6_n185
+end
+
+def fun_l5_n998()
+ fun_l6_n56
+end
+
+def fun_l5_n999()
+ fun_l6_n156
+end
+
+def fun_l6_n0()
+ fun_l7_n367
+end
+
+def fun_l6_n1()
+ fun_l7_n681
+end
+
+def fun_l6_n2()
+ fun_l7_n170
+end
+
+def fun_l6_n3()
+ fun_l7_n39
+end
+
+def fun_l6_n4()
+ fun_l7_n320
+end
+
+def fun_l6_n5()
+ fun_l7_n862
+end
+
+def fun_l6_n6()
+ fun_l7_n604
+end
+
+def fun_l6_n7()
+ fun_l7_n816
+end
+
+def fun_l6_n8()
+ fun_l7_n31
+end
+
+def fun_l6_n9()
+ fun_l7_n285
+end
+
+def fun_l6_n10()
+ fun_l7_n74
+end
+
+def fun_l6_n11()
+ fun_l7_n638
+end
+
+def fun_l6_n12()
+ fun_l7_n471
+end
+
+def fun_l6_n13()
+ fun_l7_n909
+end
+
+def fun_l6_n14()
+ fun_l7_n677
+end
+
+def fun_l6_n15()
+ fun_l7_n603
+end
+
+def fun_l6_n16()
+ fun_l7_n670
+end
+
+def fun_l6_n17()
+ fun_l7_n270
+end
+
+def fun_l6_n18()
+ fun_l7_n10
+end
+
+def fun_l6_n19()
+ fun_l7_n963
+end
+
+def fun_l6_n20()
+ fun_l7_n517
+end
+
+def fun_l6_n21()
+ fun_l7_n956
+end
+
+def fun_l6_n22()
+ fun_l7_n13
+end
+
+def fun_l6_n23()
+ fun_l7_n157
+end
+
+def fun_l6_n24()
+ fun_l7_n828
+end
+
+def fun_l6_n25()
+ fun_l7_n895
+end
+
+def fun_l6_n26()
+ fun_l7_n48
+end
+
+def fun_l6_n27()
+ fun_l7_n760
+end
+
+def fun_l6_n28()
+ fun_l7_n674
+end
+
+def fun_l6_n29()
+ fun_l7_n639
+end
+
+def fun_l6_n30()
+ fun_l7_n395
+end
+
+def fun_l6_n31()
+ fun_l7_n541
+end
+
+def fun_l6_n32()
+ fun_l7_n548
+end
+
+def fun_l6_n33()
+ fun_l7_n348
+end
+
+def fun_l6_n34()
+ fun_l7_n257
+end
+
+def fun_l6_n35()
+ fun_l7_n531
+end
+
+def fun_l6_n36()
+ fun_l7_n210
+end
+
+def fun_l6_n37()
+ fun_l7_n56
+end
+
+def fun_l6_n38()
+ fun_l7_n466
+end
+
+def fun_l6_n39()
+ fun_l7_n369
+end
+
+def fun_l6_n40()
+ fun_l7_n465
+end
+
+def fun_l6_n41()
+ fun_l7_n665
+end
+
+def fun_l6_n42()
+ fun_l7_n662
+end
+
+def fun_l6_n43()
+ fun_l7_n205
+end
+
+def fun_l6_n44()
+ fun_l7_n997
+end
+
+def fun_l6_n45()
+ fun_l7_n840
+end
+
+def fun_l6_n46()
+ fun_l7_n998
+end
+
+def fun_l6_n47()
+ fun_l7_n563
+end
+
+def fun_l6_n48()
+ fun_l7_n442
+end
+
+def fun_l6_n49()
+ fun_l7_n768
+end
+
+def fun_l6_n50()
+ fun_l7_n948
+end
+
+def fun_l6_n51()
+ fun_l7_n773
+end
+
+def fun_l6_n52()
+ fun_l7_n910
+end
+
+def fun_l6_n53()
+ fun_l7_n152
+end
+
+def fun_l6_n54()
+ fun_l7_n277
+end
+
+def fun_l6_n55()
+ fun_l7_n139
+end
+
+def fun_l6_n56()
+ fun_l7_n530
+end
+
+def fun_l6_n57()
+ fun_l7_n587
+end
+
+def fun_l6_n58()
+ fun_l7_n650
+end
+
+def fun_l6_n59()
+ fun_l7_n30
+end
+
+def fun_l6_n60()
+ fun_l7_n31
+end
+
+def fun_l6_n61()
+ fun_l7_n908
+end
+
+def fun_l6_n62()
+ fun_l7_n228
+end
+
+def fun_l6_n63()
+ fun_l7_n210
+end
+
+def fun_l6_n64()
+ fun_l7_n854
+end
+
+def fun_l6_n65()
+ fun_l7_n198
+end
+
+def fun_l6_n66()
+ fun_l7_n183
+end
+
+def fun_l6_n67()
+ fun_l7_n633
+end
+
+def fun_l6_n68()
+ fun_l7_n523
+end
+
+def fun_l6_n69()
+ fun_l7_n392
+end
+
+def fun_l6_n70()
+ fun_l7_n293
+end
+
+def fun_l6_n71()
+ fun_l7_n523
+end
+
+def fun_l6_n72()
+ fun_l7_n314
+end
+
+def fun_l6_n73()
+ fun_l7_n500
+end
+
+def fun_l6_n74()
+ fun_l7_n685
+end
+
+def fun_l6_n75()
+ fun_l7_n692
+end
+
+def fun_l6_n76()
+ fun_l7_n773
+end
+
+def fun_l6_n77()
+ fun_l7_n582
+end
+
+def fun_l6_n78()
+ fun_l7_n934
+end
+
+def fun_l6_n79()
+ fun_l7_n829
+end
+
+def fun_l6_n80()
+ fun_l7_n603
+end
+
+def fun_l6_n81()
+ fun_l7_n735
+end
+
+def fun_l6_n82()
+ fun_l7_n906
+end
+
+def fun_l6_n83()
+ fun_l7_n828
+end
+
+def fun_l6_n84()
+ fun_l7_n945
+end
+
+def fun_l6_n85()
+ fun_l7_n316
+end
+
+def fun_l6_n86()
+ fun_l7_n135
+end
+
+def fun_l6_n87()
+ fun_l7_n444
+end
+
+def fun_l6_n88()
+ fun_l7_n300
+end
+
+def fun_l6_n89()
+ fun_l7_n975
+end
+
+def fun_l6_n90()
+ fun_l7_n385
+end
+
+def fun_l6_n91()
+ fun_l7_n885
+end
+
+def fun_l6_n92()
+ fun_l7_n838
+end
+
+def fun_l6_n93()
+ fun_l7_n769
+end
+
+def fun_l6_n94()
+ fun_l7_n263
+end
+
+def fun_l6_n95()
+ fun_l7_n719
+end
+
+def fun_l6_n96()
+ fun_l7_n585
+end
+
+def fun_l6_n97()
+ fun_l7_n238
+end
+
+def fun_l6_n98()
+ fun_l7_n366
+end
+
+def fun_l6_n99()
+ fun_l7_n498
+end
+
+def fun_l6_n100()
+ fun_l7_n596
+end
+
+def fun_l6_n101()
+ fun_l7_n437
+end
+
+def fun_l6_n102()
+ fun_l7_n441
+end
+
+def fun_l6_n103()
+ fun_l7_n721
+end
+
+def fun_l6_n104()
+ fun_l7_n9
+end
+
+def fun_l6_n105()
+ fun_l7_n412
+end
+
+def fun_l6_n106()
+ fun_l7_n981
+end
+
+def fun_l6_n107()
+ fun_l7_n824
+end
+
+def fun_l6_n108()
+ fun_l7_n255
+end
+
+def fun_l6_n109()
+ fun_l7_n608
+end
+
+def fun_l6_n110()
+ fun_l7_n481
+end
+
+def fun_l6_n111()
+ fun_l7_n804
+end
+
+def fun_l6_n112()
+ fun_l7_n316
+end
+
+def fun_l6_n113()
+ fun_l7_n446
+end
+
+def fun_l6_n114()
+ fun_l7_n123
+end
+
+def fun_l6_n115()
+ fun_l7_n522
+end
+
+def fun_l6_n116()
+ fun_l7_n52
+end
+
+def fun_l6_n117()
+ fun_l7_n559
+end
+
+def fun_l6_n118()
+ fun_l7_n937
+end
+
+def fun_l6_n119()
+ fun_l7_n425
+end
+
+def fun_l6_n120()
+ fun_l7_n112
+end
+
+def fun_l6_n121()
+ fun_l7_n83
+end
+
+def fun_l6_n122()
+ fun_l7_n305
+end
+
+def fun_l6_n123()
+ fun_l7_n157
+end
+
+def fun_l6_n124()
+ fun_l7_n944
+end
+
+def fun_l6_n125()
+ fun_l7_n356
+end
+
+def fun_l6_n126()
+ fun_l7_n69
+end
+
+def fun_l6_n127()
+ fun_l7_n689
+end
+
+def fun_l6_n128()
+ fun_l7_n145
+end
+
+def fun_l6_n129()
+ fun_l7_n633
+end
+
+def fun_l6_n130()
+ fun_l7_n389
+end
+
+def fun_l6_n131()
+ fun_l7_n646
+end
+
+def fun_l6_n132()
+ fun_l7_n684
+end
+
+def fun_l6_n133()
+ fun_l7_n38
+end
+
+def fun_l6_n134()
+ fun_l7_n104
+end
+
+def fun_l6_n135()
+ fun_l7_n856
+end
+
+def fun_l6_n136()
+ fun_l7_n237
+end
+
+def fun_l6_n137()
+ fun_l7_n594
+end
+
+def fun_l6_n138()
+ fun_l7_n929
+end
+
+def fun_l6_n139()
+ fun_l7_n686
+end
+
+def fun_l6_n140()
+ fun_l7_n501
+end
+
+def fun_l6_n141()
+ fun_l7_n309
+end
+
+def fun_l6_n142()
+ fun_l7_n567
+end
+
+def fun_l6_n143()
+ fun_l7_n451
+end
+
+def fun_l6_n144()
+ fun_l7_n325
+end
+
+def fun_l6_n145()
+ fun_l7_n363
+end
+
+def fun_l6_n146()
+ fun_l7_n650
+end
+
+def fun_l6_n147()
+ fun_l7_n551
+end
+
+def fun_l6_n148()
+ fun_l7_n495
+end
+
+def fun_l6_n149()
+ fun_l7_n998
+end
+
+def fun_l6_n150()
+ fun_l7_n584
+end
+
+def fun_l6_n151()
+ fun_l7_n36
+end
+
+def fun_l6_n152()
+ fun_l7_n109
+end
+
+def fun_l6_n153()
+ fun_l7_n855
+end
+
+def fun_l6_n154()
+ fun_l7_n544
+end
+
+def fun_l6_n155()
+ fun_l7_n580
+end
+
+def fun_l6_n156()
+ fun_l7_n872
+end
+
+def fun_l6_n157()
+ fun_l7_n954
+end
+
+def fun_l6_n158()
+ fun_l7_n14
+end
+
+def fun_l6_n159()
+ fun_l7_n802
+end
+
+def fun_l6_n160()
+ fun_l7_n298
+end
+
+def fun_l6_n161()
+ fun_l7_n876
+end
+
+def fun_l6_n162()
+ fun_l7_n694
+end
+
+def fun_l6_n163()
+ fun_l7_n538
+end
+
+def fun_l6_n164()
+ fun_l7_n325
+end
+
+def fun_l6_n165()
+ fun_l7_n47
+end
+
+def fun_l6_n166()
+ fun_l7_n433
+end
+
+def fun_l6_n167()
+ fun_l7_n356
+end
+
+def fun_l6_n168()
+ fun_l7_n81
+end
+
+def fun_l6_n169()
+ fun_l7_n10
+end
+
+def fun_l6_n170()
+ fun_l7_n391
+end
+
+def fun_l6_n171()
+ fun_l7_n770
+end
+
+def fun_l6_n172()
+ fun_l7_n45
+end
+
+def fun_l6_n173()
+ fun_l7_n808
+end
+
+def fun_l6_n174()
+ fun_l7_n722
+end
+
+def fun_l6_n175()
+ fun_l7_n532
+end
+
+def fun_l6_n176()
+ fun_l7_n983
+end
+
+def fun_l6_n177()
+ fun_l7_n666
+end
+
+def fun_l6_n178()
+ fun_l7_n505
+end
+
+def fun_l6_n179()
+ fun_l7_n200
+end
+
+def fun_l6_n180()
+ fun_l7_n57
+end
+
+def fun_l6_n181()
+ fun_l7_n888
+end
+
+def fun_l6_n182()
+ fun_l7_n288
+end
+
+def fun_l6_n183()
+ fun_l7_n435
+end
+
+def fun_l6_n184()
+ fun_l7_n330
+end
+
+def fun_l6_n185()
+ fun_l7_n432
+end
+
+def fun_l6_n186()
+ fun_l7_n321
+end
+
+def fun_l6_n187()
+ fun_l7_n160
+end
+
+def fun_l6_n188()
+ fun_l7_n806
+end
+
+def fun_l6_n189()
+ fun_l7_n929
+end
+
+def fun_l6_n190()
+ fun_l7_n49
+end
+
+def fun_l6_n191()
+ fun_l7_n642
+end
+
+def fun_l6_n192()
+ fun_l7_n551
+end
+
+def fun_l6_n193()
+ fun_l7_n243
+end
+
+def fun_l6_n194()
+ fun_l7_n126
+end
+
+def fun_l6_n195()
+ fun_l7_n594
+end
+
+def fun_l6_n196()
+ fun_l7_n166
+end
+
+def fun_l6_n197()
+ fun_l7_n610
+end
+
+def fun_l6_n198()
+ fun_l7_n730
+end
+
+def fun_l6_n199()
+ fun_l7_n770
+end
+
+def fun_l6_n200()
+ fun_l7_n873
+end
+
+def fun_l6_n201()
+ fun_l7_n833
+end
+
+def fun_l6_n202()
+ fun_l7_n883
+end
+
+def fun_l6_n203()
+ fun_l7_n639
+end
+
+def fun_l6_n204()
+ fun_l7_n563
+end
+
+def fun_l6_n205()
+ fun_l7_n437
+end
+
+def fun_l6_n206()
+ fun_l7_n722
+end
+
+def fun_l6_n207()
+ fun_l7_n785
+end
+
+def fun_l6_n208()
+ fun_l7_n241
+end
+
+def fun_l6_n209()
+ fun_l7_n42
+end
+
+def fun_l6_n210()
+ fun_l7_n352
+end
+
+def fun_l6_n211()
+ fun_l7_n633
+end
+
+def fun_l6_n212()
+ fun_l7_n758
+end
+
+def fun_l6_n213()
+ fun_l7_n194
+end
+
+def fun_l6_n214()
+ fun_l7_n864
+end
+
+def fun_l6_n215()
+ fun_l7_n407
+end
+
+def fun_l6_n216()
+ fun_l7_n78
+end
+
+def fun_l6_n217()
+ fun_l7_n723
+end
+
+def fun_l6_n218()
+ fun_l7_n98
+end
+
+def fun_l6_n219()
+ fun_l7_n909
+end
+
+def fun_l6_n220()
+ fun_l7_n380
+end
+
+def fun_l6_n221()
+ fun_l7_n348
+end
+
+def fun_l6_n222()
+ fun_l7_n934
+end
+
+def fun_l6_n223()
+ fun_l7_n114
+end
+
+def fun_l6_n224()
+ fun_l7_n34
+end
+
+def fun_l6_n225()
+ fun_l7_n774
+end
+
+def fun_l6_n226()
+ fun_l7_n681
+end
+
+def fun_l6_n227()
+ fun_l7_n215
+end
+
+def fun_l6_n228()
+ fun_l7_n526
+end
+
+def fun_l6_n229()
+ fun_l7_n38
+end
+
+def fun_l6_n230()
+ fun_l7_n506
+end
+
+def fun_l6_n231()
+ fun_l7_n456
+end
+
+def fun_l6_n232()
+ fun_l7_n476
+end
+
+def fun_l6_n233()
+ fun_l7_n183
+end
+
+def fun_l6_n234()
+ fun_l7_n73
+end
+
+def fun_l6_n235()
+ fun_l7_n639
+end
+
+def fun_l6_n236()
+ fun_l7_n344
+end
+
+def fun_l6_n237()
+ fun_l7_n656
+end
+
+def fun_l6_n238()
+ fun_l7_n887
+end
+
+def fun_l6_n239()
+ fun_l7_n705
+end
+
+def fun_l6_n240()
+ fun_l7_n342
+end
+
+def fun_l6_n241()
+ fun_l7_n461
+end
+
+def fun_l6_n242()
+ fun_l7_n215
+end
+
+def fun_l6_n243()
+ fun_l7_n74
+end
+
+def fun_l6_n244()
+ fun_l7_n715
+end
+
+def fun_l6_n245()
+ fun_l7_n317
+end
+
+def fun_l6_n246()
+ fun_l7_n238
+end
+
+def fun_l6_n247()
+ fun_l7_n899
+end
+
+def fun_l6_n248()
+ fun_l7_n360
+end
+
+def fun_l6_n249()
+ fun_l7_n753
+end
+
+def fun_l6_n250()
+ fun_l7_n722
+end
+
+def fun_l6_n251()
+ fun_l7_n649
+end
+
+def fun_l6_n252()
+ fun_l7_n640
+end
+
+def fun_l6_n253()
+ fun_l7_n146
+end
+
+def fun_l6_n254()
+ fun_l7_n385
+end
+
+def fun_l6_n255()
+ fun_l7_n483
+end
+
+def fun_l6_n256()
+ fun_l7_n142
+end
+
+def fun_l6_n257()
+ fun_l7_n815
+end
+
+def fun_l6_n258()
+ fun_l7_n499
+end
+
+def fun_l6_n259()
+ fun_l7_n827
+end
+
+def fun_l6_n260()
+ fun_l7_n799
+end
+
+def fun_l6_n261()
+ fun_l7_n633
+end
+
+def fun_l6_n262()
+ fun_l7_n399
+end
+
+def fun_l6_n263()
+ fun_l7_n123
+end
+
+def fun_l6_n264()
+ fun_l7_n94
+end
+
+def fun_l6_n265()
+ fun_l7_n799
+end
+
+def fun_l6_n266()
+ fun_l7_n884
+end
+
+def fun_l6_n267()
+ fun_l7_n983
+end
+
+def fun_l6_n268()
+ fun_l7_n880
+end
+
+def fun_l6_n269()
+ fun_l7_n58
+end
+
+def fun_l6_n270()
+ fun_l7_n181
+end
+
+def fun_l6_n271()
+ fun_l7_n241
+end
+
+def fun_l6_n272()
+ fun_l7_n971
+end
+
+def fun_l6_n273()
+ fun_l7_n297
+end
+
+def fun_l6_n274()
+ fun_l7_n435
+end
+
+def fun_l6_n275()
+ fun_l7_n57
+end
+
+def fun_l6_n276()
+ fun_l7_n665
+end
+
+def fun_l6_n277()
+ fun_l7_n725
+end
+
+def fun_l6_n278()
+ fun_l7_n258
+end
+
+def fun_l6_n279()
+ fun_l7_n680
+end
+
+def fun_l6_n280()
+ fun_l7_n969
+end
+
+def fun_l6_n281()
+ fun_l7_n714
+end
+
+def fun_l6_n282()
+ fun_l7_n166
+end
+
+def fun_l6_n283()
+ fun_l7_n876
+end
+
+def fun_l6_n284()
+ fun_l7_n893
+end
+
+def fun_l6_n285()
+ fun_l7_n530
+end
+
+def fun_l6_n286()
+ fun_l7_n552
+end
+
+def fun_l6_n287()
+ fun_l7_n212
+end
+
+def fun_l6_n288()
+ fun_l7_n194
+end
+
+def fun_l6_n289()
+ fun_l7_n375
+end
+
+def fun_l6_n290()
+ fun_l7_n726
+end
+
+def fun_l6_n291()
+ fun_l7_n498
+end
+
+def fun_l6_n292()
+ fun_l7_n630
+end
+
+def fun_l6_n293()
+ fun_l7_n781
+end
+
+def fun_l6_n294()
+ fun_l7_n122
+end
+
+def fun_l6_n295()
+ fun_l7_n864
+end
+
+def fun_l6_n296()
+ fun_l7_n931
+end
+
+def fun_l6_n297()
+ fun_l7_n561
+end
+
+def fun_l6_n298()
+ fun_l7_n891
+end
+
+def fun_l6_n299()
+ fun_l7_n149
+end
+
+def fun_l6_n300()
+ fun_l7_n697
+end
+
+def fun_l6_n301()
+ fun_l7_n152
+end
+
+def fun_l6_n302()
+ fun_l7_n973
+end
+
+def fun_l6_n303()
+ fun_l7_n32
+end
+
+def fun_l6_n304()
+ fun_l7_n254
+end
+
+def fun_l6_n305()
+ fun_l7_n68
+end
+
+def fun_l6_n306()
+ fun_l7_n46
+end
+
+def fun_l6_n307()
+ fun_l7_n2
+end
+
+def fun_l6_n308()
+ fun_l7_n862
+end
+
+def fun_l6_n309()
+ fun_l7_n722
+end
+
+def fun_l6_n310()
+ fun_l7_n501
+end
+
+def fun_l6_n311()
+ fun_l7_n779
+end
+
+def fun_l6_n312()
+ fun_l7_n899
+end
+
+def fun_l6_n313()
+ fun_l7_n209
+end
+
+def fun_l6_n314()
+ fun_l7_n445
+end
+
+def fun_l6_n315()
+ fun_l7_n882
+end
+
+def fun_l6_n316()
+ fun_l7_n825
+end
+
+def fun_l6_n317()
+ fun_l7_n52
+end
+
+def fun_l6_n318()
+ fun_l7_n813
+end
+
+def fun_l6_n319()
+ fun_l7_n103
+end
+
+def fun_l6_n320()
+ fun_l7_n480
+end
+
+def fun_l6_n321()
+ fun_l7_n357
+end
+
+def fun_l6_n322()
+ fun_l7_n138
+end
+
+def fun_l6_n323()
+ fun_l7_n277
+end
+
+def fun_l6_n324()
+ fun_l7_n287
+end
+
+def fun_l6_n325()
+ fun_l7_n822
+end
+
+def fun_l6_n326()
+ fun_l7_n299
+end
+
+def fun_l6_n327()
+ fun_l7_n617
+end
+
+def fun_l6_n328()
+ fun_l7_n618
+end
+
+def fun_l6_n329()
+ fun_l7_n721
+end
+
+def fun_l6_n330()
+ fun_l7_n600
+end
+
+def fun_l6_n331()
+ fun_l7_n349
+end
+
+def fun_l6_n332()
+ fun_l7_n978
+end
+
+def fun_l6_n333()
+ fun_l7_n889
+end
+
+def fun_l6_n334()
+ fun_l7_n129
+end
+
+def fun_l6_n335()
+ fun_l7_n404
+end
+
+def fun_l6_n336()
+ fun_l7_n169
+end
+
+def fun_l6_n337()
+ fun_l7_n498
+end
+
+def fun_l6_n338()
+ fun_l7_n428
+end
+
+def fun_l6_n339()
+ fun_l7_n910
+end
+
+def fun_l6_n340()
+ fun_l7_n441
+end
+
+def fun_l6_n341()
+ fun_l7_n649
+end
+
+def fun_l6_n342()
+ fun_l7_n251
+end
+
+def fun_l6_n343()
+ fun_l7_n146
+end
+
+def fun_l6_n344()
+ fun_l7_n979
+end
+
+def fun_l6_n345()
+ fun_l7_n561
+end
+
+def fun_l6_n346()
+ fun_l7_n667
+end
+
+def fun_l6_n347()
+ fun_l7_n50
+end
+
+def fun_l6_n348()
+ fun_l7_n324
+end
+
+def fun_l6_n349()
+ fun_l7_n60
+end
+
+def fun_l6_n350()
+ fun_l7_n292
+end
+
+def fun_l6_n351()
+ fun_l7_n227
+end
+
+def fun_l6_n352()
+ fun_l7_n99
+end
+
+def fun_l6_n353()
+ fun_l7_n124
+end
+
+def fun_l6_n354()
+ fun_l7_n519
+end
+
+def fun_l6_n355()
+ fun_l7_n245
+end
+
+def fun_l6_n356()
+ fun_l7_n438
+end
+
+def fun_l6_n357()
+ fun_l7_n916
+end
+
+def fun_l6_n358()
+ fun_l7_n865
+end
+
+def fun_l6_n359()
+ fun_l7_n886
+end
+
+def fun_l6_n360()
+ fun_l7_n432
+end
+
+def fun_l6_n361()
+ fun_l7_n406
+end
+
+def fun_l6_n362()
+ fun_l7_n709
+end
+
+def fun_l6_n363()
+ fun_l7_n271
+end
+
+def fun_l6_n364()
+ fun_l7_n320
+end
+
+def fun_l6_n365()
+ fun_l7_n3
+end
+
+def fun_l6_n366()
+ fun_l7_n831
+end
+
+def fun_l6_n367()
+ fun_l7_n417
+end
+
+def fun_l6_n368()
+ fun_l7_n949
+end
+
+def fun_l6_n369()
+ fun_l7_n941
+end
+
+def fun_l6_n370()
+ fun_l7_n404
+end
+
+def fun_l6_n371()
+ fun_l7_n715
+end
+
+def fun_l6_n372()
+ fun_l7_n223
+end
+
+def fun_l6_n373()
+ fun_l7_n813
+end
+
+def fun_l6_n374()
+ fun_l7_n594
+end
+
+def fun_l6_n375()
+ fun_l7_n949
+end
+
+def fun_l6_n376()
+ fun_l7_n107
+end
+
+def fun_l6_n377()
+ fun_l7_n951
+end
+
+def fun_l6_n378()
+ fun_l7_n940
+end
+
+def fun_l6_n379()
+ fun_l7_n224
+end
+
+def fun_l6_n380()
+ fun_l7_n82
+end
+
+def fun_l6_n381()
+ fun_l7_n815
+end
+
+def fun_l6_n382()
+ fun_l7_n443
+end
+
+def fun_l6_n383()
+ fun_l7_n566
+end
+
+def fun_l6_n384()
+ fun_l7_n954
+end
+
+def fun_l6_n385()
+ fun_l7_n562
+end
+
+def fun_l6_n386()
+ fun_l7_n9
+end
+
+def fun_l6_n387()
+ fun_l7_n233
+end
+
+def fun_l6_n388()
+ fun_l7_n510
+end
+
+def fun_l6_n389()
+ fun_l7_n616
+end
+
+def fun_l6_n390()
+ fun_l7_n991
+end
+
+def fun_l6_n391()
+ fun_l7_n184
+end
+
+def fun_l6_n392()
+ fun_l7_n288
+end
+
+def fun_l6_n393()
+ fun_l7_n282
+end
+
+def fun_l6_n394()
+ fun_l7_n81
+end
+
+def fun_l6_n395()
+ fun_l7_n567
+end
+
+def fun_l6_n396()
+ fun_l7_n465
+end
+
+def fun_l6_n397()
+ fun_l7_n856
+end
+
+def fun_l6_n398()
+ fun_l7_n268
+end
+
+def fun_l6_n399()
+ fun_l7_n695
+end
+
+def fun_l6_n400()
+ fun_l7_n403
+end
+
+def fun_l6_n401()
+ fun_l7_n153
+end
+
+def fun_l6_n402()
+ fun_l7_n321
+end
+
+def fun_l6_n403()
+ fun_l7_n233
+end
+
+def fun_l6_n404()
+ fun_l7_n218
+end
+
+def fun_l6_n405()
+ fun_l7_n285
+end
+
+def fun_l6_n406()
+ fun_l7_n829
+end
+
+def fun_l6_n407()
+ fun_l7_n218
+end
+
+def fun_l6_n408()
+ fun_l7_n457
+end
+
+def fun_l6_n409()
+ fun_l7_n513
+end
+
+def fun_l6_n410()
+ fun_l7_n677
+end
+
+def fun_l6_n411()
+ fun_l7_n849
+end
+
+def fun_l6_n412()
+ fun_l7_n579
+end
+
+def fun_l6_n413()
+ fun_l7_n160
+end
+
+def fun_l6_n414()
+ fun_l7_n567
+end
+
+def fun_l6_n415()
+ fun_l7_n394
+end
+
+def fun_l6_n416()
+ fun_l7_n480
+end
+
+def fun_l6_n417()
+ fun_l7_n234
+end
+
+def fun_l6_n418()
+ fun_l7_n410
+end
+
+def fun_l6_n419()
+ fun_l7_n405
+end
+
+def fun_l6_n420()
+ fun_l7_n497
+end
+
+def fun_l6_n421()
+ fun_l7_n242
+end
+
+def fun_l6_n422()
+ fun_l7_n190
+end
+
+def fun_l6_n423()
+ fun_l7_n513
+end
+
+def fun_l6_n424()
+ fun_l7_n790
+end
+
+def fun_l6_n425()
+ fun_l7_n112
+end
+
+def fun_l6_n426()
+ fun_l7_n792
+end
+
+def fun_l6_n427()
+ fun_l7_n209
+end
+
+def fun_l6_n428()
+ fun_l7_n451
+end
+
+def fun_l6_n429()
+ fun_l7_n897
+end
+
+def fun_l6_n430()
+ fun_l7_n884
+end
+
+def fun_l6_n431()
+ fun_l7_n81
+end
+
+def fun_l6_n432()
+ fun_l7_n764
+end
+
+def fun_l6_n433()
+ fun_l7_n204
+end
+
+def fun_l6_n434()
+ fun_l7_n56
+end
+
+def fun_l6_n435()
+ fun_l7_n394
+end
+
+def fun_l6_n436()
+ fun_l7_n903
+end
+
+def fun_l6_n437()
+ fun_l7_n423
+end
+
+def fun_l6_n438()
+ fun_l7_n899
+end
+
+def fun_l6_n439()
+ fun_l7_n40
+end
+
+def fun_l6_n440()
+ fun_l7_n145
+end
+
+def fun_l6_n441()
+ fun_l7_n811
+end
+
+def fun_l6_n442()
+ fun_l7_n821
+end
+
+def fun_l6_n443()
+ fun_l7_n675
+end
+
+def fun_l6_n444()
+ fun_l7_n665
+end
+
+def fun_l6_n445()
+ fun_l7_n1
+end
+
+def fun_l6_n446()
+ fun_l7_n936
+end
+
+def fun_l6_n447()
+ fun_l7_n838
+end
+
+def fun_l6_n448()
+ fun_l7_n820
+end
+
+def fun_l6_n449()
+ fun_l7_n206
+end
+
+def fun_l6_n450()
+ fun_l7_n234
+end
+
+def fun_l6_n451()
+ fun_l7_n150
+end
+
+def fun_l6_n452()
+ fun_l7_n699
+end
+
+def fun_l6_n453()
+ fun_l7_n369
+end
+
+def fun_l6_n454()
+ fun_l7_n759
+end
+
+def fun_l6_n455()
+ fun_l7_n836
+end
+
+def fun_l6_n456()
+ fun_l7_n55
+end
+
+def fun_l6_n457()
+ fun_l7_n457
+end
+
+def fun_l6_n458()
+ fun_l7_n623
+end
+
+def fun_l6_n459()
+ fun_l7_n679
+end
+
+def fun_l6_n460()
+ fun_l7_n199
+end
+
+def fun_l6_n461()
+ fun_l7_n738
+end
+
+def fun_l6_n462()
+ fun_l7_n479
+end
+
+def fun_l6_n463()
+ fun_l7_n673
+end
+
+def fun_l6_n464()
+ fun_l7_n323
+end
+
+def fun_l6_n465()
+ fun_l7_n652
+end
+
+def fun_l6_n466()
+ fun_l7_n470
+end
+
+def fun_l6_n467()
+ fun_l7_n133
+end
+
+def fun_l6_n468()
+ fun_l7_n179
+end
+
+def fun_l6_n469()
+ fun_l7_n647
+end
+
+def fun_l6_n470()
+ fun_l7_n869
+end
+
+def fun_l6_n471()
+ fun_l7_n553
+end
+
+def fun_l6_n472()
+ fun_l7_n173
+end
+
+def fun_l6_n473()
+ fun_l7_n188
+end
+
+def fun_l6_n474()
+ fun_l7_n530
+end
+
+def fun_l6_n475()
+ fun_l7_n233
+end
+
+def fun_l6_n476()
+ fun_l7_n46
+end
+
+def fun_l6_n477()
+ fun_l7_n892
+end
+
+def fun_l6_n478()
+ fun_l7_n879
+end
+
+def fun_l6_n479()
+ fun_l7_n507
+end
+
+def fun_l6_n480()
+ fun_l7_n383
+end
+
+def fun_l6_n481()
+ fun_l7_n500
+end
+
+def fun_l6_n482()
+ fun_l7_n595
+end
+
+def fun_l6_n483()
+ fun_l7_n225
+end
+
+def fun_l6_n484()
+ fun_l7_n396
+end
+
+def fun_l6_n485()
+ fun_l7_n61
+end
+
+def fun_l6_n486()
+ fun_l7_n953
+end
+
+def fun_l6_n487()
+ fun_l7_n891
+end
+
+def fun_l6_n488()
+ fun_l7_n620
+end
+
+def fun_l6_n489()
+ fun_l7_n672
+end
+
+def fun_l6_n490()
+ fun_l7_n824
+end
+
+def fun_l6_n491()
+ fun_l7_n216
+end
+
+def fun_l6_n492()
+ fun_l7_n404
+end
+
+def fun_l6_n493()
+ fun_l7_n428
+end
+
+def fun_l6_n494()
+ fun_l7_n907
+end
+
+def fun_l6_n495()
+ fun_l7_n297
+end
+
+def fun_l6_n496()
+ fun_l7_n349
+end
+
+def fun_l6_n497()
+ fun_l7_n291
+end
+
+def fun_l6_n498()
+ fun_l7_n642
+end
+
+def fun_l6_n499()
+ fun_l7_n906
+end
+
+def fun_l6_n500()
+ fun_l7_n78
+end
+
+def fun_l6_n501()
+ fun_l7_n568
+end
+
+def fun_l6_n502()
+ fun_l7_n591
+end
+
+def fun_l6_n503()
+ fun_l7_n921
+end
+
+def fun_l6_n504()
+ fun_l7_n832
+end
+
+def fun_l6_n505()
+ fun_l7_n826
+end
+
+def fun_l6_n506()
+ fun_l7_n930
+end
+
+def fun_l6_n507()
+ fun_l7_n791
+end
+
+def fun_l6_n508()
+ fun_l7_n608
+end
+
+def fun_l6_n509()
+ fun_l7_n144
+end
+
+def fun_l6_n510()
+ fun_l7_n202
+end
+
+def fun_l6_n511()
+ fun_l7_n379
+end
+
+def fun_l6_n512()
+ fun_l7_n354
+end
+
+def fun_l6_n513()
+ fun_l7_n245
+end
+
+def fun_l6_n514()
+ fun_l7_n402
+end
+
+def fun_l6_n515()
+ fun_l7_n875
+end
+
+def fun_l6_n516()
+ fun_l7_n847
+end
+
+def fun_l6_n517()
+ fun_l7_n736
+end
+
+def fun_l6_n518()
+ fun_l7_n325
+end
+
+def fun_l6_n519()
+ fun_l7_n949
+end
+
+def fun_l6_n520()
+ fun_l7_n993
+end
+
+def fun_l6_n521()
+ fun_l7_n271
+end
+
+def fun_l6_n522()
+ fun_l7_n799
+end
+
+def fun_l6_n523()
+ fun_l7_n861
+end
+
+def fun_l6_n524()
+ fun_l7_n164
+end
+
+def fun_l6_n525()
+ fun_l7_n293
+end
+
+def fun_l6_n526()
+ fun_l7_n948
+end
+
+def fun_l6_n527()
+ fun_l7_n682
+end
+
+def fun_l6_n528()
+ fun_l7_n914
+end
+
+def fun_l6_n529()
+ fun_l7_n395
+end
+
+def fun_l6_n530()
+ fun_l7_n399
+end
+
+def fun_l6_n531()
+ fun_l7_n220
+end
+
+def fun_l6_n532()
+ fun_l7_n874
+end
+
+def fun_l6_n533()
+ fun_l7_n504
+end
+
+def fun_l6_n534()
+ fun_l7_n713
+end
+
+def fun_l6_n535()
+ fun_l7_n185
+end
+
+def fun_l6_n536()
+ fun_l7_n229
+end
+
+def fun_l6_n537()
+ fun_l7_n696
+end
+
+def fun_l6_n538()
+ fun_l7_n840
+end
+
+def fun_l6_n539()
+ fun_l7_n323
+end
+
+def fun_l6_n540()
+ fun_l7_n342
+end
+
+def fun_l6_n541()
+ fun_l7_n60
+end
+
+def fun_l6_n542()
+ fun_l7_n149
+end
+
+def fun_l6_n543()
+ fun_l7_n465
+end
+
+def fun_l6_n544()
+ fun_l7_n392
+end
+
+def fun_l6_n545()
+ fun_l7_n210
+end
+
+def fun_l6_n546()
+ fun_l7_n565
+end
+
+def fun_l6_n547()
+ fun_l7_n63
+end
+
+def fun_l6_n548()
+ fun_l7_n722
+end
+
+def fun_l6_n549()
+ fun_l7_n119
+end
+
+def fun_l6_n550()
+ fun_l7_n933
+end
+
+def fun_l6_n551()
+ fun_l7_n612
+end
+
+def fun_l6_n552()
+ fun_l7_n479
+end
+
+def fun_l6_n553()
+ fun_l7_n866
+end
+
+def fun_l6_n554()
+ fun_l7_n268
+end
+
+def fun_l6_n555()
+ fun_l7_n547
+end
+
+def fun_l6_n556()
+ fun_l7_n621
+end
+
+def fun_l6_n557()
+ fun_l7_n461
+end
+
+def fun_l6_n558()
+ fun_l7_n907
+end
+
+def fun_l6_n559()
+ fun_l7_n660
+end
+
+def fun_l6_n560()
+ fun_l7_n857
+end
+
+def fun_l6_n561()
+ fun_l7_n398
+end
+
+def fun_l6_n562()
+ fun_l7_n484
+end
+
+def fun_l6_n563()
+ fun_l7_n16
+end
+
+def fun_l6_n564()
+ fun_l7_n697
+end
+
+def fun_l6_n565()
+ fun_l7_n135
+end
+
+def fun_l6_n566()
+ fun_l7_n265
+end
+
+def fun_l6_n567()
+ fun_l7_n627
+end
+
+def fun_l6_n568()
+ fun_l7_n345
+end
+
+def fun_l6_n569()
+ fun_l7_n528
+end
+
+def fun_l6_n570()
+ fun_l7_n926
+end
+
+def fun_l6_n571()
+ fun_l7_n198
+end
+
+def fun_l6_n572()
+ fun_l7_n837
+end
+
+def fun_l6_n573()
+ fun_l7_n95
+end
+
+def fun_l6_n574()
+ fun_l7_n802
+end
+
+def fun_l6_n575()
+ fun_l7_n265
+end
+
+def fun_l6_n576()
+ fun_l7_n884
+end
+
+def fun_l6_n577()
+ fun_l7_n227
+end
+
+def fun_l6_n578()
+ fun_l7_n915
+end
+
+def fun_l6_n579()
+ fun_l7_n221
+end
+
+def fun_l6_n580()
+ fun_l7_n718
+end
+
+def fun_l6_n581()
+ fun_l7_n179
+end
+
+def fun_l6_n582()
+ fun_l7_n975
+end
+
+def fun_l6_n583()
+ fun_l7_n207
+end
+
+def fun_l6_n584()
+ fun_l7_n874
+end
+
+def fun_l6_n585()
+ fun_l7_n540
+end
+
+def fun_l6_n586()
+ fun_l7_n765
+end
+
+def fun_l6_n587()
+ fun_l7_n613
+end
+
+def fun_l6_n588()
+ fun_l7_n853
+end
+
+def fun_l6_n589()
+ fun_l7_n241
+end
+
+def fun_l6_n590()
+ fun_l7_n91
+end
+
+def fun_l6_n591()
+ fun_l7_n383
+end
+
+def fun_l6_n592()
+ fun_l7_n567
+end
+
+def fun_l6_n593()
+ fun_l7_n144
+end
+
+def fun_l6_n594()
+ fun_l7_n663
+end
+
+def fun_l6_n595()
+ fun_l7_n674
+end
+
+def fun_l6_n596()
+ fun_l7_n407
+end
+
+def fun_l6_n597()
+ fun_l7_n207
+end
+
+def fun_l6_n598()
+ fun_l7_n746
+end
+
+def fun_l6_n599()
+ fun_l7_n24
+end
+
+def fun_l6_n600()
+ fun_l7_n150
+end
+
+def fun_l6_n601()
+ fun_l7_n317
+end
+
+def fun_l6_n602()
+ fun_l7_n773
+end
+
+def fun_l6_n603()
+ fun_l7_n932
+end
+
+def fun_l6_n604()
+ fun_l7_n772
+end
+
+def fun_l6_n605()
+ fun_l7_n495
+end
+
+def fun_l6_n606()
+ fun_l7_n526
+end
+
+def fun_l6_n607()
+ fun_l7_n758
+end
+
+def fun_l6_n608()
+ fun_l7_n941
+end
+
+def fun_l6_n609()
+ fun_l7_n998
+end
+
+def fun_l6_n610()
+ fun_l7_n543
+end
+
+def fun_l6_n611()
+ fun_l7_n216
+end
+
+def fun_l6_n612()
+ fun_l7_n445
+end
+
+def fun_l6_n613()
+ fun_l7_n314
+end
+
+def fun_l6_n614()
+ fun_l7_n840
+end
+
+def fun_l6_n615()
+ fun_l7_n722
+end
+
+def fun_l6_n616()
+ fun_l7_n89
+end
+
+def fun_l6_n617()
+ fun_l7_n353
+end
+
+def fun_l6_n618()
+ fun_l7_n800
+end
+
+def fun_l6_n619()
+ fun_l7_n736
+end
+
+def fun_l6_n620()
+ fun_l7_n376
+end
+
+def fun_l6_n621()
+ fun_l7_n24
+end
+
+def fun_l6_n622()
+ fun_l7_n258
+end
+
+def fun_l6_n623()
+ fun_l7_n943
+end
+
+def fun_l6_n624()
+ fun_l7_n963
+end
+
+def fun_l6_n625()
+ fun_l7_n709
+end
+
+def fun_l6_n626()
+ fun_l7_n350
+end
+
+def fun_l6_n627()
+ fun_l7_n322
+end
+
+def fun_l6_n628()
+ fun_l7_n717
+end
+
+def fun_l6_n629()
+ fun_l7_n529
+end
+
+def fun_l6_n630()
+ fun_l7_n365
+end
+
+def fun_l6_n631()
+ fun_l7_n977
+end
+
+def fun_l6_n632()
+ fun_l7_n606
+end
+
+def fun_l6_n633()
+ fun_l7_n712
+end
+
+def fun_l6_n634()
+ fun_l7_n559
+end
+
+def fun_l6_n635()
+ fun_l7_n499
+end
+
+def fun_l6_n636()
+ fun_l7_n871
+end
+
+def fun_l6_n637()
+ fun_l7_n684
+end
+
+def fun_l6_n638()
+ fun_l7_n558
+end
+
+def fun_l6_n639()
+ fun_l7_n333
+end
+
+def fun_l6_n640()
+ fun_l7_n37
+end
+
+def fun_l6_n641()
+ fun_l7_n559
+end
+
+def fun_l6_n642()
+ fun_l7_n17
+end
+
+def fun_l6_n643()
+ fun_l7_n913
+end
+
+def fun_l6_n644()
+ fun_l7_n79
+end
+
+def fun_l6_n645()
+ fun_l7_n402
+end
+
+def fun_l6_n646()
+ fun_l7_n268
+end
+
+def fun_l6_n647()
+ fun_l7_n797
+end
+
+def fun_l6_n648()
+ fun_l7_n985
+end
+
+def fun_l6_n649()
+ fun_l7_n192
+end
+
+def fun_l6_n650()
+ fun_l7_n774
+end
+
+def fun_l6_n651()
+ fun_l7_n805
+end
+
+def fun_l6_n652()
+ fun_l7_n208
+end
+
+def fun_l6_n653()
+ fun_l7_n608
+end
+
+def fun_l6_n654()
+ fun_l7_n714
+end
+
+def fun_l6_n655()
+ fun_l7_n883
+end
+
+def fun_l6_n656()
+ fun_l7_n841
+end
+
+def fun_l6_n657()
+ fun_l7_n646
+end
+
+def fun_l6_n658()
+ fun_l7_n39
+end
+
+def fun_l6_n659()
+ fun_l7_n432
+end
+
+def fun_l6_n660()
+ fun_l7_n177
+end
+
+def fun_l6_n661()
+ fun_l7_n700
+end
+
+def fun_l6_n662()
+ fun_l7_n815
+end
+
+def fun_l6_n663()
+ fun_l7_n553
+end
+
+def fun_l6_n664()
+ fun_l7_n540
+end
+
+def fun_l6_n665()
+ fun_l7_n853
+end
+
+def fun_l6_n666()
+ fun_l7_n526
+end
+
+def fun_l6_n667()
+ fun_l7_n670
+end
+
+def fun_l6_n668()
+ fun_l7_n753
+end
+
+def fun_l6_n669()
+ fun_l7_n811
+end
+
+def fun_l6_n670()
+ fun_l7_n782
+end
+
+def fun_l6_n671()
+ fun_l7_n275
+end
+
+def fun_l6_n672()
+ fun_l7_n884
+end
+
+def fun_l6_n673()
+ fun_l7_n984
+end
+
+def fun_l6_n674()
+ fun_l7_n980
+end
+
+def fun_l6_n675()
+ fun_l7_n341
+end
+
+def fun_l6_n676()
+ fun_l7_n346
+end
+
+def fun_l6_n677()
+ fun_l7_n164
+end
+
+def fun_l6_n678()
+ fun_l7_n600
+end
+
+def fun_l6_n679()
+ fun_l7_n351
+end
+
+def fun_l6_n680()
+ fun_l7_n527
+end
+
+def fun_l6_n681()
+ fun_l7_n206
+end
+
+def fun_l6_n682()
+ fun_l7_n50
+end
+
+def fun_l6_n683()
+ fun_l7_n476
+end
+
+def fun_l6_n684()
+ fun_l7_n684
+end
+
+def fun_l6_n685()
+ fun_l7_n883
+end
+
+def fun_l6_n686()
+ fun_l7_n41
+end
+
+def fun_l6_n687()
+ fun_l7_n382
+end
+
+def fun_l6_n688()
+ fun_l7_n418
+end
+
+def fun_l6_n689()
+ fun_l7_n22
+end
+
+def fun_l6_n690()
+ fun_l7_n543
+end
+
+def fun_l6_n691()
+ fun_l7_n143
+end
+
+def fun_l6_n692()
+ fun_l7_n120
+end
+
+def fun_l6_n693()
+ fun_l7_n431
+end
+
+def fun_l6_n694()
+ fun_l7_n405
+end
+
+def fun_l6_n695()
+ fun_l7_n474
+end
+
+def fun_l6_n696()
+ fun_l7_n117
+end
+
+def fun_l6_n697()
+ fun_l7_n475
+end
+
+def fun_l6_n698()
+ fun_l7_n674
+end
+
+def fun_l6_n699()
+ fun_l7_n398
+end
+
+def fun_l6_n700()
+ fun_l7_n709
+end
+
+def fun_l6_n701()
+ fun_l7_n360
+end
+
+def fun_l6_n702()
+ fun_l7_n241
+end
+
+def fun_l6_n703()
+ fun_l7_n837
+end
+
+def fun_l6_n704()
+ fun_l7_n483
+end
+
+def fun_l6_n705()
+ fun_l7_n943
+end
+
+def fun_l6_n706()
+ fun_l7_n292
+end
+
+def fun_l6_n707()
+ fun_l7_n659
+end
+
+def fun_l6_n708()
+ fun_l7_n657
+end
+
+def fun_l6_n709()
+ fun_l7_n143
+end
+
+def fun_l6_n710()
+ fun_l7_n883
+end
+
+def fun_l6_n711()
+ fun_l7_n764
+end
+
+def fun_l6_n712()
+ fun_l7_n421
+end
+
+def fun_l6_n713()
+ fun_l7_n611
+end
+
+def fun_l6_n714()
+ fun_l7_n657
+end
+
+def fun_l6_n715()
+ fun_l7_n765
+end
+
+def fun_l6_n716()
+ fun_l7_n793
+end
+
+def fun_l6_n717()
+ fun_l7_n752
+end
+
+def fun_l6_n718()
+ fun_l7_n713
+end
+
+def fun_l6_n719()
+ fun_l7_n577
+end
+
+def fun_l6_n720()
+ fun_l7_n422
+end
+
+def fun_l6_n721()
+ fun_l7_n368
+end
+
+def fun_l6_n722()
+ fun_l7_n2
+end
+
+def fun_l6_n723()
+ fun_l7_n739
+end
+
+def fun_l6_n724()
+ fun_l7_n481
+end
+
+def fun_l6_n725()
+ fun_l7_n516
+end
+
+def fun_l6_n726()
+ fun_l7_n266
+end
+
+def fun_l6_n727()
+ fun_l7_n269
+end
+
+def fun_l6_n728()
+ fun_l7_n308
+end
+
+def fun_l6_n729()
+ fun_l7_n915
+end
+
+def fun_l6_n730()
+ fun_l7_n603
+end
+
+def fun_l6_n731()
+ fun_l7_n585
+end
+
+def fun_l6_n732()
+ fun_l7_n182
+end
+
+def fun_l6_n733()
+ fun_l7_n28
+end
+
+def fun_l6_n734()
+ fun_l7_n829
+end
+
+def fun_l6_n735()
+ fun_l7_n365
+end
+
+def fun_l6_n736()
+ fun_l7_n208
+end
+
+def fun_l6_n737()
+ fun_l7_n395
+end
+
+def fun_l6_n738()
+ fun_l7_n745
+end
+
+def fun_l6_n739()
+ fun_l7_n90
+end
+
+def fun_l6_n740()
+ fun_l7_n696
+end
+
+def fun_l6_n741()
+ fun_l7_n730
+end
+
+def fun_l6_n742()
+ fun_l7_n143
+end
+
+def fun_l6_n743()
+ fun_l7_n753
+end
+
+def fun_l6_n744()
+ fun_l7_n484
+end
+
+def fun_l6_n745()
+ fun_l7_n779
+end
+
+def fun_l6_n746()
+ fun_l7_n668
+end
+
+def fun_l6_n747()
+ fun_l7_n331
+end
+
+def fun_l6_n748()
+ fun_l7_n961
+end
+
+def fun_l6_n749()
+ fun_l7_n875
+end
+
+def fun_l6_n750()
+ fun_l7_n541
+end
+
+def fun_l6_n751()
+ fun_l7_n122
+end
+
+def fun_l6_n752()
+ fun_l7_n278
+end
+
+def fun_l6_n753()
+ fun_l7_n510
+end
+
+def fun_l6_n754()
+ fun_l7_n619
+end
+
+def fun_l6_n755()
+ fun_l7_n165
+end
+
+def fun_l6_n756()
+ fun_l7_n537
+end
+
+def fun_l6_n757()
+ fun_l7_n917
+end
+
+def fun_l6_n758()
+ fun_l7_n102
+end
+
+def fun_l6_n759()
+ fun_l7_n504
+end
+
+def fun_l6_n760()
+ fun_l7_n768
+end
+
+def fun_l6_n761()
+ fun_l7_n259
+end
+
+def fun_l6_n762()
+ fun_l7_n371
+end
+
+def fun_l6_n763()
+ fun_l7_n727
+end
+
+def fun_l6_n764()
+ fun_l7_n959
+end
+
+def fun_l6_n765()
+ fun_l7_n191
+end
+
+def fun_l6_n766()
+ fun_l7_n570
+end
+
+def fun_l6_n767()
+ fun_l7_n746
+end
+
+def fun_l6_n768()
+ fun_l7_n133
+end
+
+def fun_l6_n769()
+ fun_l7_n520
+end
+
+def fun_l6_n770()
+ fun_l7_n602
+end
+
+def fun_l6_n771()
+ fun_l7_n722
+end
+
+def fun_l6_n772()
+ fun_l7_n165
+end
+
+def fun_l6_n773()
+ fun_l7_n132
+end
+
+def fun_l6_n774()
+ fun_l7_n328
+end
+
+def fun_l6_n775()
+ fun_l7_n88
+end
+
+def fun_l6_n776()
+ fun_l7_n296
+end
+
+def fun_l6_n777()
+ fun_l7_n389
+end
+
+def fun_l6_n778()
+ fun_l7_n433
+end
+
+def fun_l6_n779()
+ fun_l7_n525
+end
+
+def fun_l6_n780()
+ fun_l7_n736
+end
+
+def fun_l6_n781()
+ fun_l7_n300
+end
+
+def fun_l6_n782()
+ fun_l7_n663
+end
+
+def fun_l6_n783()
+ fun_l7_n33
+end
+
+def fun_l6_n784()
+ fun_l7_n964
+end
+
+def fun_l6_n785()
+ fun_l7_n459
+end
+
+def fun_l6_n786()
+ fun_l7_n397
+end
+
+def fun_l6_n787()
+ fun_l7_n453
+end
+
+def fun_l6_n788()
+ fun_l7_n951
+end
+
+def fun_l6_n789()
+ fun_l7_n485
+end
+
+def fun_l6_n790()
+ fun_l7_n480
+end
+
+def fun_l6_n791()
+ fun_l7_n663
+end
+
+def fun_l6_n792()
+ fun_l7_n245
+end
+
+def fun_l6_n793()
+ fun_l7_n933
+end
+
+def fun_l6_n794()
+ fun_l7_n253
+end
+
+def fun_l6_n795()
+ fun_l7_n746
+end
+
+def fun_l6_n796()
+ fun_l7_n242
+end
+
+def fun_l6_n797()
+ fun_l7_n435
+end
+
+def fun_l6_n798()
+ fun_l7_n982
+end
+
+def fun_l6_n799()
+ fun_l7_n516
+end
+
+def fun_l6_n800()
+ fun_l7_n118
+end
+
+def fun_l6_n801()
+ fun_l7_n787
+end
+
+def fun_l6_n802()
+ fun_l7_n13
+end
+
+def fun_l6_n803()
+ fun_l7_n381
+end
+
+def fun_l6_n804()
+ fun_l7_n601
+end
+
+def fun_l6_n805()
+ fun_l7_n95
+end
+
+def fun_l6_n806()
+ fun_l7_n589
+end
+
+def fun_l6_n807()
+ fun_l7_n33
+end
+
+def fun_l6_n808()
+ fun_l7_n801
+end
+
+def fun_l6_n809()
+ fun_l7_n857
+end
+
+def fun_l6_n810()
+ fun_l7_n23
+end
+
+def fun_l6_n811()
+ fun_l7_n998
+end
+
+def fun_l6_n812()
+ fun_l7_n424
+end
+
+def fun_l6_n813()
+ fun_l7_n525
+end
+
+def fun_l6_n814()
+ fun_l7_n428
+end
+
+def fun_l6_n815()
+ fun_l7_n509
+end
+
+def fun_l6_n816()
+ fun_l7_n599
+end
+
+def fun_l6_n817()
+ fun_l7_n642
+end
+
+def fun_l6_n818()
+ fun_l7_n381
+end
+
+def fun_l6_n819()
+ fun_l7_n802
+end
+
+def fun_l6_n820()
+ fun_l7_n324
+end
+
+def fun_l6_n821()
+ fun_l7_n804
+end
+
+def fun_l6_n822()
+ fun_l7_n743
+end
+
+def fun_l6_n823()
+ fun_l7_n961
+end
+
+def fun_l6_n824()
+ fun_l7_n222
+end
+
+def fun_l6_n825()
+ fun_l7_n184
+end
+
+def fun_l6_n826()
+ fun_l7_n157
+end
+
+def fun_l6_n827()
+ fun_l7_n387
+end
+
+def fun_l6_n828()
+ fun_l7_n963
+end
+
+def fun_l6_n829()
+ fun_l7_n817
+end
+
+def fun_l6_n830()
+ fun_l7_n673
+end
+
+def fun_l6_n831()
+ fun_l7_n471
+end
+
+def fun_l6_n832()
+ fun_l7_n662
+end
+
+def fun_l6_n833()
+ fun_l7_n385
+end
+
+def fun_l6_n834()
+ fun_l7_n802
+end
+
+def fun_l6_n835()
+ fun_l7_n827
+end
+
+def fun_l6_n836()
+ fun_l7_n495
+end
+
+def fun_l6_n837()
+ fun_l7_n44
+end
+
+def fun_l6_n838()
+ fun_l7_n958
+end
+
+def fun_l6_n839()
+ fun_l7_n436
+end
+
+def fun_l6_n840()
+ fun_l7_n210
+end
+
+def fun_l6_n841()
+ fun_l7_n14
+end
+
+def fun_l6_n842()
+ fun_l7_n67
+end
+
+def fun_l6_n843()
+ fun_l7_n0
+end
+
+def fun_l6_n844()
+ fun_l7_n50
+end
+
+def fun_l6_n845()
+ fun_l7_n398
+end
+
+def fun_l6_n846()
+ fun_l7_n269
+end
+
+def fun_l6_n847()
+ fun_l7_n478
+end
+
+def fun_l6_n848()
+ fun_l7_n879
+end
+
+def fun_l6_n849()
+ fun_l7_n713
+end
+
+def fun_l6_n850()
+ fun_l7_n496
+end
+
+def fun_l6_n851()
+ fun_l7_n995
+end
+
+def fun_l6_n852()
+ fun_l7_n973
+end
+
+def fun_l6_n853()
+ fun_l7_n990
+end
+
+def fun_l6_n854()
+ fun_l7_n193
+end
+
+def fun_l6_n855()
+ fun_l7_n200
+end
+
+def fun_l6_n856()
+ fun_l7_n377
+end
+
+def fun_l6_n857()
+ fun_l7_n82
+end
+
+def fun_l6_n858()
+ fun_l7_n261
+end
+
+def fun_l6_n859()
+ fun_l7_n464
+end
+
+def fun_l6_n860()
+ fun_l7_n358
+end
+
+def fun_l6_n861()
+ fun_l7_n920
+end
+
+def fun_l6_n862()
+ fun_l7_n724
+end
+
+def fun_l6_n863()
+ fun_l7_n536
+end
+
+def fun_l6_n864()
+ fun_l7_n127
+end
+
+def fun_l6_n865()
+ fun_l7_n919
+end
+
+def fun_l6_n866()
+ fun_l7_n972
+end
+
+def fun_l6_n867()
+ fun_l7_n773
+end
+
+def fun_l6_n868()
+ fun_l7_n444
+end
+
+def fun_l6_n869()
+ fun_l7_n242
+end
+
+def fun_l6_n870()
+ fun_l7_n910
+end
+
+def fun_l6_n871()
+ fun_l7_n396
+end
+
+def fun_l6_n872()
+ fun_l7_n110
+end
+
+def fun_l6_n873()
+ fun_l7_n393
+end
+
+def fun_l6_n874()
+ fun_l7_n295
+end
+
+def fun_l6_n875()
+ fun_l7_n998
+end
+
+def fun_l6_n876()
+ fun_l7_n357
+end
+
+def fun_l6_n877()
+ fun_l7_n586
+end
+
+def fun_l6_n878()
+ fun_l7_n752
+end
+
+def fun_l6_n879()
+ fun_l7_n998
+end
+
+def fun_l6_n880()
+ fun_l7_n33
+end
+
+def fun_l6_n881()
+ fun_l7_n472
+end
+
+def fun_l6_n882()
+ fun_l7_n511
+end
+
+def fun_l6_n883()
+ fun_l7_n677
+end
+
+def fun_l6_n884()
+ fun_l7_n562
+end
+
+def fun_l6_n885()
+ fun_l7_n100
+end
+
+def fun_l6_n886()
+ fun_l7_n964
+end
+
+def fun_l6_n887()
+ fun_l7_n306
+end
+
+def fun_l6_n888()
+ fun_l7_n295
+end
+
+def fun_l6_n889()
+ fun_l7_n323
+end
+
+def fun_l6_n890()
+ fun_l7_n559
+end
+
+def fun_l6_n891()
+ fun_l7_n872
+end
+
+def fun_l6_n892()
+ fun_l7_n236
+end
+
+def fun_l6_n893()
+ fun_l7_n845
+end
+
+def fun_l6_n894()
+ fun_l7_n853
+end
+
+def fun_l6_n895()
+ fun_l7_n333
+end
+
+def fun_l6_n896()
+ fun_l7_n404
+end
+
+def fun_l6_n897()
+ fun_l7_n17
+end
+
+def fun_l6_n898()
+ fun_l7_n997
+end
+
+def fun_l6_n899()
+ fun_l7_n844
+end
+
+def fun_l6_n900()
+ fun_l7_n327
+end
+
+def fun_l6_n901()
+ fun_l7_n863
+end
+
+def fun_l6_n902()
+ fun_l7_n516
+end
+
+def fun_l6_n903()
+ fun_l7_n298
+end
+
+def fun_l6_n904()
+ fun_l7_n171
+end
+
+def fun_l6_n905()
+ fun_l7_n908
+end
+
+def fun_l6_n906()
+ fun_l7_n934
+end
+
+def fun_l6_n907()
+ fun_l7_n361
+end
+
+def fun_l6_n908()
+ fun_l7_n901
+end
+
+def fun_l6_n909()
+ fun_l7_n830
+end
+
+def fun_l6_n910()
+ fun_l7_n313
+end
+
+def fun_l6_n911()
+ fun_l7_n799
+end
+
+def fun_l6_n912()
+ fun_l7_n223
+end
+
+def fun_l6_n913()
+ fun_l7_n108
+end
+
+def fun_l6_n914()
+ fun_l7_n822
+end
+
+def fun_l6_n915()
+ fun_l7_n42
+end
+
+def fun_l6_n916()
+ fun_l7_n276
+end
+
+def fun_l6_n917()
+ fun_l7_n535
+end
+
+def fun_l6_n918()
+ fun_l7_n586
+end
+
+def fun_l6_n919()
+ fun_l7_n847
+end
+
+def fun_l6_n920()
+ fun_l7_n851
+end
+
+def fun_l6_n921()
+ fun_l7_n544
+end
+
+def fun_l6_n922()
+ fun_l7_n416
+end
+
+def fun_l6_n923()
+ fun_l7_n670
+end
+
+def fun_l6_n924()
+ fun_l7_n366
+end
+
+def fun_l6_n925()
+ fun_l7_n94
+end
+
+def fun_l6_n926()
+ fun_l7_n187
+end
+
+def fun_l6_n927()
+ fun_l7_n72
+end
+
+def fun_l6_n928()
+ fun_l7_n19
+end
+
+def fun_l6_n929()
+ fun_l7_n424
+end
+
+def fun_l6_n930()
+ fun_l7_n833
+end
+
+def fun_l6_n931()
+ fun_l7_n438
+end
+
+def fun_l6_n932()
+ fun_l7_n9
+end
+
+def fun_l6_n933()
+ fun_l7_n967
+end
+
+def fun_l6_n934()
+ fun_l7_n155
+end
+
+def fun_l6_n935()
+ fun_l7_n119
+end
+
+def fun_l6_n936()
+ fun_l7_n916
+end
+
+def fun_l6_n937()
+ fun_l7_n232
+end
+
+def fun_l6_n938()
+ fun_l7_n880
+end
+
+def fun_l6_n939()
+ fun_l7_n456
+end
+
+def fun_l6_n940()
+ fun_l7_n764
+end
+
+def fun_l6_n941()
+ fun_l7_n525
+end
+
+def fun_l6_n942()
+ fun_l7_n794
+end
+
+def fun_l6_n943()
+ fun_l7_n887
+end
+
+def fun_l6_n944()
+ fun_l7_n756
+end
+
+def fun_l6_n945()
+ fun_l7_n863
+end
+
+def fun_l6_n946()
+ fun_l7_n959
+end
+
+def fun_l6_n947()
+ fun_l7_n597
+end
+
+def fun_l6_n948()
+ fun_l7_n919
+end
+
+def fun_l6_n949()
+ fun_l7_n196
+end
+
+def fun_l6_n950()
+ fun_l7_n505
+end
+
+def fun_l6_n951()
+ fun_l7_n374
+end
+
+def fun_l6_n952()
+ fun_l7_n272
+end
+
+def fun_l6_n953()
+ fun_l7_n317
+end
+
+def fun_l6_n954()
+ fun_l7_n149
+end
+
+def fun_l6_n955()
+ fun_l7_n885
+end
+
+def fun_l6_n956()
+ fun_l7_n174
+end
+
+def fun_l6_n957()
+ fun_l7_n234
+end
+
+def fun_l6_n958()
+ fun_l7_n848
+end
+
+def fun_l6_n959()
+ fun_l7_n18
+end
+
+def fun_l6_n960()
+ fun_l7_n111
+end
+
+def fun_l6_n961()
+ fun_l7_n355
+end
+
+def fun_l6_n962()
+ fun_l7_n640
+end
+
+def fun_l6_n963()
+ fun_l7_n486
+end
+
+def fun_l6_n964()
+ fun_l7_n940
+end
+
+def fun_l6_n965()
+ fun_l7_n54
+end
+
+def fun_l6_n966()
+ fun_l7_n970
+end
+
+def fun_l6_n967()
+ fun_l7_n127
+end
+
+def fun_l6_n968()
+ fun_l7_n581
+end
+
+def fun_l6_n969()
+ fun_l7_n921
+end
+
+def fun_l6_n970()
+ fun_l7_n837
+end
+
+def fun_l6_n971()
+ fun_l7_n933
+end
+
+def fun_l6_n972()
+ fun_l7_n109
+end
+
+def fun_l6_n973()
+ fun_l7_n846
+end
+
+def fun_l6_n974()
+ fun_l7_n178
+end
+
+def fun_l6_n975()
+ fun_l7_n278
+end
+
+def fun_l6_n976()
+ fun_l7_n404
+end
+
+def fun_l6_n977()
+ fun_l7_n456
+end
+
+def fun_l6_n978()
+ fun_l7_n860
+end
+
+def fun_l6_n979()
+ fun_l7_n637
+end
+
+def fun_l6_n980()
+ fun_l7_n201
+end
+
+def fun_l6_n981()
+ fun_l7_n836
+end
+
+def fun_l6_n982()
+ fun_l7_n172
+end
+
+def fun_l6_n983()
+ fun_l7_n935
+end
+
+def fun_l6_n984()
+ fun_l7_n937
+end
+
+def fun_l6_n985()
+ fun_l7_n817
+end
+
+def fun_l6_n986()
+ fun_l7_n16
+end
+
+def fun_l6_n987()
+ fun_l7_n152
+end
+
+def fun_l6_n988()
+ fun_l7_n359
+end
+
+def fun_l6_n989()
+ fun_l7_n357
+end
+
+def fun_l6_n990()
+ fun_l7_n609
+end
+
+def fun_l6_n991()
+ fun_l7_n604
+end
+
+def fun_l6_n992()
+ fun_l7_n998
+end
+
+def fun_l6_n993()
+ fun_l7_n366
+end
+
+def fun_l6_n994()
+ fun_l7_n150
+end
+
+def fun_l6_n995()
+ fun_l7_n823
+end
+
+def fun_l6_n996()
+ fun_l7_n476
+end
+
+def fun_l6_n997()
+ fun_l7_n535
+end
+
+def fun_l6_n998()
+ fun_l7_n222
+end
+
+def fun_l6_n999()
+ fun_l7_n238
+end
+
+def fun_l7_n0()
+ fun_l8_n3
+end
+
+def fun_l7_n1()
+ fun_l8_n706
+end
+
+def fun_l7_n2()
+ fun_l8_n887
+end
+
+def fun_l7_n3()
+ fun_l8_n693
+end
+
+def fun_l7_n4()
+ fun_l8_n11
+end
+
+def fun_l7_n5()
+ fun_l8_n155
+end
+
+def fun_l7_n6()
+ fun_l8_n604
+end
+
+def fun_l7_n7()
+ fun_l8_n616
+end
+
+def fun_l7_n8()
+ fun_l8_n686
+end
+
+def fun_l7_n9()
+ fun_l8_n257
+end
+
+def fun_l7_n10()
+ fun_l8_n594
+end
+
+def fun_l7_n11()
+ fun_l8_n548
+end
+
+def fun_l7_n12()
+ fun_l8_n305
+end
+
+def fun_l7_n13()
+ fun_l8_n125
+end
+
+def fun_l7_n14()
+ fun_l8_n183
+end
+
+def fun_l7_n15()
+ fun_l8_n799
+end
+
+def fun_l7_n16()
+ fun_l8_n333
+end
+
+def fun_l7_n17()
+ fun_l8_n873
+end
+
+def fun_l7_n18()
+ fun_l8_n110
+end
+
+def fun_l7_n19()
+ fun_l8_n578
+end
+
+def fun_l7_n20()
+ fun_l8_n423
+end
+
+def fun_l7_n21()
+ fun_l8_n686
+end
+
+def fun_l7_n22()
+ fun_l8_n162
+end
+
+def fun_l7_n23()
+ fun_l8_n277
+end
+
+def fun_l7_n24()
+ fun_l8_n651
+end
+
+def fun_l7_n25()
+ fun_l8_n575
+end
+
+def fun_l7_n26()
+ fun_l8_n937
+end
+
+def fun_l7_n27()
+ fun_l8_n636
+end
+
+def fun_l7_n28()
+ fun_l8_n1
+end
+
+def fun_l7_n29()
+ fun_l8_n83
+end
+
+def fun_l7_n30()
+ fun_l8_n318
+end
+
+def fun_l7_n31()
+ fun_l8_n675
+end
+
+def fun_l7_n32()
+ fun_l8_n118
+end
+
+def fun_l7_n33()
+ fun_l8_n522
+end
+
+def fun_l7_n34()
+ fun_l8_n507
+end
+
+def fun_l7_n35()
+ fun_l8_n846
+end
+
+def fun_l7_n36()
+ fun_l8_n584
+end
+
+def fun_l7_n37()
+ fun_l8_n816
+end
+
+def fun_l7_n38()
+ fun_l8_n217
+end
+
+def fun_l7_n39()
+ fun_l8_n366
+end
+
+def fun_l7_n40()
+ fun_l8_n283
+end
+
+def fun_l7_n41()
+ fun_l8_n536
+end
+
+def fun_l7_n42()
+ fun_l8_n414
+end
+
+def fun_l7_n43()
+ fun_l8_n216
+end
+
+def fun_l7_n44()
+ fun_l8_n743
+end
+
+def fun_l7_n45()
+ fun_l8_n449
+end
+
+def fun_l7_n46()
+ fun_l8_n629
+end
+
+def fun_l7_n47()
+ fun_l8_n711
+end
+
+def fun_l7_n48()
+ fun_l8_n113
+end
+
+def fun_l7_n49()
+ fun_l8_n440
+end
+
+def fun_l7_n50()
+ fun_l8_n822
+end
+
+def fun_l7_n51()
+ fun_l8_n567
+end
+
+def fun_l7_n52()
+ fun_l8_n854
+end
+
+def fun_l7_n53()
+ fun_l8_n204
+end
+
+def fun_l7_n54()
+ fun_l8_n796
+end
+
+def fun_l7_n55()
+ fun_l8_n989
+end
+
+def fun_l7_n56()
+ fun_l8_n504
+end
+
+def fun_l7_n57()
+ fun_l8_n952
+end
+
+def fun_l7_n58()
+ fun_l8_n797
+end
+
+def fun_l7_n59()
+ fun_l8_n492
+end
+
+def fun_l7_n60()
+ fun_l8_n949
+end
+
+def fun_l7_n61()
+ fun_l8_n215
+end
+
+def fun_l7_n62()
+ fun_l8_n306
+end
+
+def fun_l7_n63()
+ fun_l8_n632
+end
+
+def fun_l7_n64()
+ fun_l8_n572
+end
+
+def fun_l7_n65()
+ fun_l8_n69
+end
+
+def fun_l7_n66()
+ fun_l8_n97
+end
+
+def fun_l7_n67()
+ fun_l8_n708
+end
+
+def fun_l7_n68()
+ fun_l8_n548
+end
+
+def fun_l7_n69()
+ fun_l8_n999
+end
+
+def fun_l7_n70()
+ fun_l8_n872
+end
+
+def fun_l7_n71()
+ fun_l8_n20
+end
+
+def fun_l7_n72()
+ fun_l8_n220
+end
+
+def fun_l7_n73()
+ fun_l8_n28
+end
+
+def fun_l7_n74()
+ fun_l8_n79
+end
+
+def fun_l7_n75()
+ fun_l8_n248
+end
+
+def fun_l7_n76()
+ fun_l8_n601
+end
+
+def fun_l7_n77()
+ fun_l8_n469
+end
+
+def fun_l7_n78()
+ fun_l8_n315
+end
+
+def fun_l7_n79()
+ fun_l8_n712
+end
+
+def fun_l7_n80()
+ fun_l8_n177
+end
+
+def fun_l7_n81()
+ fun_l8_n106
+end
+
+def fun_l7_n82()
+ fun_l8_n668
+end
+
+def fun_l7_n83()
+ fun_l8_n299
+end
+
+def fun_l7_n84()
+ fun_l8_n59
+end
+
+def fun_l7_n85()
+ fun_l8_n120
+end
+
+def fun_l7_n86()
+ fun_l8_n209
+end
+
+def fun_l7_n87()
+ fun_l8_n502
+end
+
+def fun_l7_n88()
+ fun_l8_n935
+end
+
+def fun_l7_n89()
+ fun_l8_n697
+end
+
+def fun_l7_n90()
+ fun_l8_n231
+end
+
+def fun_l7_n91()
+ fun_l8_n47
+end
+
+def fun_l7_n92()
+ fun_l8_n125
+end
+
+def fun_l7_n93()
+ fun_l8_n975
+end
+
+def fun_l7_n94()
+ fun_l8_n627
+end
+
+def fun_l7_n95()
+ fun_l8_n898
+end
+
+def fun_l7_n96()
+ fun_l8_n124
+end
+
+def fun_l7_n97()
+ fun_l8_n722
+end
+
+def fun_l7_n98()
+ fun_l8_n745
+end
+
+def fun_l7_n99()
+ fun_l8_n999
+end
+
+def fun_l7_n100()
+ fun_l8_n791
+end
+
+def fun_l7_n101()
+ fun_l8_n360
+end
+
+def fun_l7_n102()
+ fun_l8_n755
+end
+
+def fun_l7_n103()
+ fun_l8_n718
+end
+
+def fun_l7_n104()
+ fun_l8_n495
+end
+
+def fun_l7_n105()
+ fun_l8_n19
+end
+
+def fun_l7_n106()
+ fun_l8_n280
+end
+
+def fun_l7_n107()
+ fun_l8_n710
+end
+
+def fun_l7_n108()
+ fun_l8_n871
+end
+
+def fun_l7_n109()
+ fun_l8_n727
+end
+
+def fun_l7_n110()
+ fun_l8_n807
+end
+
+def fun_l7_n111()
+ fun_l8_n170
+end
+
+def fun_l7_n112()
+ fun_l8_n661
+end
+
+def fun_l7_n113()
+ fun_l8_n684
+end
+
+def fun_l7_n114()
+ fun_l8_n202
+end
+
+def fun_l7_n115()
+ fun_l8_n679
+end
+
+def fun_l7_n116()
+ fun_l8_n773
+end
+
+def fun_l7_n117()
+ fun_l8_n538
+end
+
+def fun_l7_n118()
+ fun_l8_n411
+end
+
+def fun_l7_n119()
+ fun_l8_n264
+end
+
+def fun_l7_n120()
+ fun_l8_n487
+end
+
+def fun_l7_n121()
+ fun_l8_n906
+end
+
+def fun_l7_n122()
+ fun_l8_n833
+end
+
+def fun_l7_n123()
+ fun_l8_n721
+end
+
+def fun_l7_n124()
+ fun_l8_n792
+end
+
+def fun_l7_n125()
+ fun_l8_n852
+end
+
+def fun_l7_n126()
+ fun_l8_n876
+end
+
+def fun_l7_n127()
+ fun_l8_n489
+end
+
+def fun_l7_n128()
+ fun_l8_n715
+end
+
+def fun_l7_n129()
+ fun_l8_n863
+end
+
+def fun_l7_n130()
+ fun_l8_n842
+end
+
+def fun_l7_n131()
+ fun_l8_n99
+end
+
+def fun_l7_n132()
+ fun_l8_n472
+end
+
+def fun_l7_n133()
+ fun_l8_n826
+end
+
+def fun_l7_n134()
+ fun_l8_n805
+end
+
+def fun_l7_n135()
+ fun_l8_n914
+end
+
+def fun_l7_n136()
+ fun_l8_n691
+end
+
+def fun_l7_n137()
+ fun_l8_n880
+end
+
+def fun_l7_n138()
+ fun_l8_n708
+end
+
+def fun_l7_n139()
+ fun_l8_n445
+end
+
+def fun_l7_n140()
+ fun_l8_n173
+end
+
+def fun_l7_n141()
+ fun_l8_n785
+end
+
+def fun_l7_n142()
+ fun_l8_n638
+end
+
+def fun_l7_n143()
+ fun_l8_n319
+end
+
+def fun_l7_n144()
+ fun_l8_n825
+end
+
+def fun_l7_n145()
+ fun_l8_n497
+end
+
+def fun_l7_n146()
+ fun_l8_n941
+end
+
+def fun_l7_n147()
+ fun_l8_n164
+end
+
+def fun_l7_n148()
+ fun_l8_n773
+end
+
+def fun_l7_n149()
+ fun_l8_n603
+end
+
+def fun_l7_n150()
+ fun_l8_n701
+end
+
+def fun_l7_n151()
+ fun_l8_n279
+end
+
+def fun_l7_n152()
+ fun_l8_n120
+end
+
+def fun_l7_n153()
+ fun_l8_n352
+end
+
+def fun_l7_n154()
+ fun_l8_n401
+end
+
+def fun_l7_n155()
+ fun_l8_n195
+end
+
+def fun_l7_n156()
+ fun_l8_n206
+end
+
+def fun_l7_n157()
+ fun_l8_n209
+end
+
+def fun_l7_n158()
+ fun_l8_n594
+end
+
+def fun_l7_n159()
+ fun_l8_n49
+end
+
+def fun_l7_n160()
+ fun_l8_n835
+end
+
+def fun_l7_n161()
+ fun_l8_n108
+end
+
+def fun_l7_n162()
+ fun_l8_n499
+end
+
+def fun_l7_n163()
+ fun_l8_n822
+end
+
+def fun_l7_n164()
+ fun_l8_n712
+end
+
+def fun_l7_n165()
+ fun_l8_n757
+end
+
+def fun_l7_n166()
+ fun_l8_n706
+end
+
+def fun_l7_n167()
+ fun_l8_n517
+end
+
+def fun_l7_n168()
+ fun_l8_n74
+end
+
+def fun_l7_n169()
+ fun_l8_n292
+end
+
+def fun_l7_n170()
+ fun_l8_n560
+end
+
+def fun_l7_n171()
+ fun_l8_n476
+end
+
+def fun_l7_n172()
+ fun_l8_n818
+end
+
+def fun_l7_n173()
+ fun_l8_n91
+end
+
+def fun_l7_n174()
+ fun_l8_n835
+end
+
+def fun_l7_n175()
+ fun_l8_n84
+end
+
+def fun_l7_n176()
+ fun_l8_n506
+end
+
+def fun_l7_n177()
+ fun_l8_n602
+end
+
+def fun_l7_n178()
+ fun_l8_n758
+end
+
+def fun_l7_n179()
+ fun_l8_n591
+end
+
+def fun_l7_n180()
+ fun_l8_n757
+end
+
+def fun_l7_n181()
+ fun_l8_n127
+end
+
+def fun_l7_n182()
+ fun_l8_n287
+end
+
+def fun_l7_n183()
+ fun_l8_n672
+end
+
+def fun_l7_n184()
+ fun_l8_n870
+end
+
+def fun_l7_n185()
+ fun_l8_n267
+end
+
+def fun_l7_n186()
+ fun_l8_n396
+end
+
+def fun_l7_n187()
+ fun_l8_n128
+end
+
+def fun_l7_n188()
+ fun_l8_n670
+end
+
+def fun_l7_n189()
+ fun_l8_n142
+end
+
+def fun_l7_n190()
+ fun_l8_n320
+end
+
+def fun_l7_n191()
+ fun_l8_n829
+end
+
+def fun_l7_n192()
+ fun_l8_n788
+end
+
+def fun_l7_n193()
+ fun_l8_n174
+end
+
+def fun_l7_n194()
+ fun_l8_n526
+end
+
+def fun_l7_n195()
+ fun_l8_n185
+end
+
+def fun_l7_n196()
+ fun_l8_n746
+end
+
+def fun_l7_n197()
+ fun_l8_n889
+end
+
+def fun_l7_n198()
+ fun_l8_n154
+end
+
+def fun_l7_n199()
+ fun_l8_n19
+end
+
+def fun_l7_n200()
+ fun_l8_n913
+end
+
+def fun_l7_n201()
+ fun_l8_n560
+end
+
+def fun_l7_n202()
+ fun_l8_n768
+end
+
+def fun_l7_n203()
+ fun_l8_n412
+end
+
+def fun_l7_n204()
+ fun_l8_n394
+end
+
+def fun_l7_n205()
+ fun_l8_n641
+end
+
+def fun_l7_n206()
+ fun_l8_n83
+end
+
+def fun_l7_n207()
+ fun_l8_n39
+end
+
+def fun_l7_n208()
+ fun_l8_n502
+end
+
+def fun_l7_n209()
+ fun_l8_n904
+end
+
+def fun_l7_n210()
+ fun_l8_n639
+end
+
+def fun_l7_n211()
+ fun_l8_n873
+end
+
+def fun_l7_n212()
+ fun_l8_n940
+end
+
+def fun_l7_n213()
+ fun_l8_n594
+end
+
+def fun_l7_n214()
+ fun_l8_n397
+end
+
+def fun_l7_n215()
+ fun_l8_n318
+end
+
+def fun_l7_n216()
+ fun_l8_n116
+end
+
+def fun_l7_n217()
+ fun_l8_n888
+end
+
+def fun_l7_n218()
+ fun_l8_n148
+end
+
+def fun_l7_n219()
+ fun_l8_n329
+end
+
+def fun_l7_n220()
+ fun_l8_n973
+end
+
+def fun_l7_n221()
+ fun_l8_n913
+end
+
+def fun_l7_n222()
+ fun_l8_n170
+end
+
+def fun_l7_n223()
+ fun_l8_n103
+end
+
+def fun_l7_n224()
+ fun_l8_n835
+end
+
+def fun_l7_n225()
+ fun_l8_n104
+end
+
+def fun_l7_n226()
+ fun_l8_n111
+end
+
+def fun_l7_n227()
+ fun_l8_n12
+end
+
+def fun_l7_n228()
+ fun_l8_n299
+end
+
+def fun_l7_n229()
+ fun_l8_n639
+end
+
+def fun_l7_n230()
+ fun_l8_n789
+end
+
+def fun_l7_n231()
+ fun_l8_n968
+end
+
+def fun_l7_n232()
+ fun_l8_n905
+end
+
+def fun_l7_n233()
+ fun_l8_n325
+end
+
+def fun_l7_n234()
+ fun_l8_n841
+end
+
+def fun_l7_n235()
+ fun_l8_n605
+end
+
+def fun_l7_n236()
+ fun_l8_n495
+end
+
+def fun_l7_n237()
+ fun_l8_n154
+end
+
+def fun_l7_n238()
+ fun_l8_n331
+end
+
+def fun_l7_n239()
+ fun_l8_n30
+end
+
+def fun_l7_n240()
+ fun_l8_n170
+end
+
+def fun_l7_n241()
+ fun_l8_n376
+end
+
+def fun_l7_n242()
+ fun_l8_n49
+end
+
+def fun_l7_n243()
+ fun_l8_n463
+end
+
+def fun_l7_n244()
+ fun_l8_n269
+end
+
+def fun_l7_n245()
+ fun_l8_n573
+end
+
+def fun_l7_n246()
+ fun_l8_n782
+end
+
+def fun_l7_n247()
+ fun_l8_n85
+end
+
+def fun_l7_n248()
+ fun_l8_n667
+end
+
+def fun_l7_n249()
+ fun_l8_n686
+end
+
+def fun_l7_n250()
+ fun_l8_n575
+end
+
+def fun_l7_n251()
+ fun_l8_n349
+end
+
+def fun_l7_n252()
+ fun_l8_n252
+end
+
+def fun_l7_n253()
+ fun_l8_n490
+end
+
+def fun_l7_n254()
+ fun_l8_n600
+end
+
+def fun_l7_n255()
+ fun_l8_n772
+end
+
+def fun_l7_n256()
+ fun_l8_n645
+end
+
+def fun_l7_n257()
+ fun_l8_n633
+end
+
+def fun_l7_n258()
+ fun_l8_n323
+end
+
+def fun_l7_n259()
+ fun_l8_n590
+end
+
+def fun_l7_n260()
+ fun_l8_n77
+end
+
+def fun_l7_n261()
+ fun_l8_n349
+end
+
+def fun_l7_n262()
+ fun_l8_n98
+end
+
+def fun_l7_n263()
+ fun_l8_n312
+end
+
+def fun_l7_n264()
+ fun_l8_n449
+end
+
+def fun_l7_n265()
+ fun_l8_n550
+end
+
+def fun_l7_n266()
+ fun_l8_n717
+end
+
+def fun_l7_n267()
+ fun_l8_n249
+end
+
+def fun_l7_n268()
+ fun_l8_n940
+end
+
+def fun_l7_n269()
+ fun_l8_n243
+end
+
+def fun_l7_n270()
+ fun_l8_n392
+end
+
+def fun_l7_n271()
+ fun_l8_n129
+end
+
+def fun_l7_n272()
+ fun_l8_n704
+end
+
+def fun_l7_n273()
+ fun_l8_n815
+end
+
+def fun_l7_n274()
+ fun_l8_n123
+end
+
+def fun_l7_n275()
+ fun_l8_n281
+end
+
+def fun_l7_n276()
+ fun_l8_n110
+end
+
+def fun_l7_n277()
+ fun_l8_n250
+end
+
+def fun_l7_n278()
+ fun_l8_n245
+end
+
+def fun_l7_n279()
+ fun_l8_n612
+end
+
+def fun_l7_n280()
+ fun_l8_n693
+end
+
+def fun_l7_n281()
+ fun_l8_n441
+end
+
+def fun_l7_n282()
+ fun_l8_n716
+end
+
+def fun_l7_n283()
+ fun_l8_n467
+end
+
+def fun_l7_n284()
+ fun_l8_n944
+end
+
+def fun_l7_n285()
+ fun_l8_n14
+end
+
+def fun_l7_n286()
+ fun_l8_n453
+end
+
+def fun_l7_n287()
+ fun_l8_n342
+end
+
+def fun_l7_n288()
+ fun_l8_n666
+end
+
+def fun_l7_n289()
+ fun_l8_n111
+end
+
+def fun_l7_n290()
+ fun_l8_n353
+end
+
+def fun_l7_n291()
+ fun_l8_n279
+end
+
+def fun_l7_n292()
+ fun_l8_n556
+end
+
+def fun_l7_n293()
+ fun_l8_n780
+end
+
+def fun_l7_n294()
+ fun_l8_n137
+end
+
+def fun_l7_n295()
+ fun_l8_n760
+end
+
+def fun_l7_n296()
+ fun_l8_n56
+end
+
+def fun_l7_n297()
+ fun_l8_n927
+end
+
+def fun_l7_n298()
+ fun_l8_n861
+end
+
+def fun_l7_n299()
+ fun_l8_n653
+end
+
+def fun_l7_n300()
+ fun_l8_n948
+end
+
+def fun_l7_n301()
+ fun_l8_n159
+end
+
+def fun_l7_n302()
+ fun_l8_n426
+end
+
+def fun_l7_n303()
+ fun_l8_n175
+end
+
+def fun_l7_n304()
+ fun_l8_n35
+end
+
+def fun_l7_n305()
+ fun_l8_n700
+end
+
+def fun_l7_n306()
+ fun_l8_n603
+end
+
+def fun_l7_n307()
+ fun_l8_n600
+end
+
+def fun_l7_n308()
+ fun_l8_n280
+end
+
+def fun_l7_n309()
+ fun_l8_n599
+end
+
+def fun_l7_n310()
+ fun_l8_n404
+end
+
+def fun_l7_n311()
+ fun_l8_n475
+end
+
+def fun_l7_n312()
+ fun_l8_n837
+end
+
+def fun_l7_n313()
+ fun_l8_n61
+end
+
+def fun_l7_n314()
+ fun_l8_n571
+end
+
+def fun_l7_n315()
+ fun_l8_n442
+end
+
+def fun_l7_n316()
+ fun_l8_n256
+end
+
+def fun_l7_n317()
+ fun_l8_n751
+end
+
+def fun_l7_n318()
+ fun_l8_n672
+end
+
+def fun_l7_n319()
+ fun_l8_n953
+end
+
+def fun_l7_n320()
+ fun_l8_n330
+end
+
+def fun_l7_n321()
+ fun_l8_n54
+end
+
+def fun_l7_n322()
+ fun_l8_n11
+end
+
+def fun_l7_n323()
+ fun_l8_n504
+end
+
+def fun_l7_n324()
+ fun_l8_n786
+end
+
+def fun_l7_n325()
+ fun_l8_n32
+end
+
+def fun_l7_n326()
+ fun_l8_n85
+end
+
+def fun_l7_n327()
+ fun_l8_n727
+end
+
+def fun_l7_n328()
+ fun_l8_n445
+end
+
+def fun_l7_n329()
+ fun_l8_n787
+end
+
+def fun_l7_n330()
+ fun_l8_n663
+end
+
+def fun_l7_n331()
+ fun_l8_n461
+end
+
+def fun_l7_n332()
+ fun_l8_n82
+end
+
+def fun_l7_n333()
+ fun_l8_n974
+end
+
+def fun_l7_n334()
+ fun_l8_n511
+end
+
+def fun_l7_n335()
+ fun_l8_n827
+end
+
+def fun_l7_n336()
+ fun_l8_n12
+end
+
+def fun_l7_n337()
+ fun_l8_n696
+end
+
+def fun_l7_n338()
+ fun_l8_n325
+end
+
+def fun_l7_n339()
+ fun_l8_n148
+end
+
+def fun_l7_n340()
+ fun_l8_n609
+end
+
+def fun_l7_n341()
+ fun_l8_n471
+end
+
+def fun_l7_n342()
+ fun_l8_n63
+end
+
+def fun_l7_n343()
+ fun_l8_n358
+end
+
+def fun_l7_n344()
+ fun_l8_n658
+end
+
+def fun_l7_n345()
+ fun_l8_n730
+end
+
+def fun_l7_n346()
+ fun_l8_n139
+end
+
+def fun_l7_n347()
+ fun_l8_n951
+end
+
+def fun_l7_n348()
+ fun_l8_n113
+end
+
+def fun_l7_n349()
+ fun_l8_n695
+end
+
+def fun_l7_n350()
+ fun_l8_n803
+end
+
+def fun_l7_n351()
+ fun_l8_n93
+end
+
+def fun_l7_n352()
+ fun_l8_n340
+end
+
+def fun_l7_n353()
+ fun_l8_n551
+end
+
+def fun_l7_n354()
+ fun_l8_n5
+end
+
+def fun_l7_n355()
+ fun_l8_n960
+end
+
+def fun_l7_n356()
+ fun_l8_n76
+end
+
+def fun_l7_n357()
+ fun_l8_n142
+end
+
+def fun_l7_n358()
+ fun_l8_n305
+end
+
+def fun_l7_n359()
+ fun_l8_n739
+end
+
+def fun_l7_n360()
+ fun_l8_n293
+end
+
+def fun_l7_n361()
+ fun_l8_n812
+end
+
+def fun_l7_n362()
+ fun_l8_n635
+end
+
+def fun_l7_n363()
+ fun_l8_n239
+end
+
+def fun_l7_n364()
+ fun_l8_n880
+end
+
+def fun_l7_n365()
+ fun_l8_n999
+end
+
+def fun_l7_n366()
+ fun_l8_n997
+end
+
+def fun_l7_n367()
+ fun_l8_n190
+end
+
+def fun_l7_n368()
+ fun_l8_n763
+end
+
+def fun_l7_n369()
+ fun_l8_n369
+end
+
+def fun_l7_n370()
+ fun_l8_n538
+end
+
+def fun_l7_n371()
+ fun_l8_n553
+end
+
+def fun_l7_n372()
+ fun_l8_n844
+end
+
+def fun_l7_n373()
+ fun_l8_n773
+end
+
+def fun_l7_n374()
+ fun_l8_n589
+end
+
+def fun_l7_n375()
+ fun_l8_n492
+end
+
+def fun_l7_n376()
+ fun_l8_n848
+end
+
+def fun_l7_n377()
+ fun_l8_n715
+end
+
+def fun_l7_n378()
+ fun_l8_n82
+end
+
+def fun_l7_n379()
+ fun_l8_n267
+end
+
+def fun_l7_n380()
+ fun_l8_n84
+end
+
+def fun_l7_n381()
+ fun_l8_n996
+end
+
+def fun_l7_n382()
+ fun_l8_n536
+end
+
+def fun_l7_n383()
+ fun_l8_n518
+end
+
+def fun_l7_n384()
+ fun_l8_n70
+end
+
+def fun_l7_n385()
+ fun_l8_n545
+end
+
+def fun_l7_n386()
+ fun_l8_n156
+end
+
+def fun_l7_n387()
+ fun_l8_n558
+end
+
+def fun_l7_n388()
+ fun_l8_n519
+end
+
+def fun_l7_n389()
+ fun_l8_n321
+end
+
+def fun_l7_n390()
+ fun_l8_n133
+end
+
+def fun_l7_n391()
+ fun_l8_n253
+end
+
+def fun_l7_n392()
+ fun_l8_n969
+end
+
+def fun_l7_n393()
+ fun_l8_n986
+end
+
+def fun_l7_n394()
+ fun_l8_n991
+end
+
+def fun_l7_n395()
+ fun_l8_n757
+end
+
+def fun_l7_n396()
+ fun_l8_n496
+end
+
+def fun_l7_n397()
+ fun_l8_n841
+end
+
+def fun_l7_n398()
+ fun_l8_n922
+end
+
+def fun_l7_n399()
+ fun_l8_n51
+end
+
+def fun_l7_n400()
+ fun_l8_n961
+end
+
+def fun_l7_n401()
+ fun_l8_n82
+end
+
+def fun_l7_n402()
+ fun_l8_n190
+end
+
+def fun_l7_n403()
+ fun_l8_n543
+end
+
+def fun_l7_n404()
+ fun_l8_n768
+end
+
+def fun_l7_n405()
+ fun_l8_n810
+end
+
+def fun_l7_n406()
+ fun_l8_n714
+end
+
+def fun_l7_n407()
+ fun_l8_n692
+end
+
+def fun_l7_n408()
+ fun_l8_n357
+end
+
+def fun_l7_n409()
+ fun_l8_n380
+end
+
+def fun_l7_n410()
+ fun_l8_n958
+end
+
+def fun_l7_n411()
+ fun_l8_n992
+end
+
+def fun_l7_n412()
+ fun_l8_n819
+end
+
+def fun_l7_n413()
+ fun_l8_n4
+end
+
+def fun_l7_n414()
+ fun_l8_n429
+end
+
+def fun_l7_n415()
+ fun_l8_n56
+end
+
+def fun_l7_n416()
+ fun_l8_n212
+end
+
+def fun_l7_n417()
+ fun_l8_n267
+end
+
+def fun_l7_n418()
+ fun_l8_n948
+end
+
+def fun_l7_n419()
+ fun_l8_n221
+end
+
+def fun_l7_n420()
+ fun_l8_n711
+end
+
+def fun_l7_n421()
+ fun_l8_n307
+end
+
+def fun_l7_n422()
+ fun_l8_n482
+end
+
+def fun_l7_n423()
+ fun_l8_n522
+end
+
+def fun_l7_n424()
+ fun_l8_n166
+end
+
+def fun_l7_n425()
+ fun_l8_n410
+end
+
+def fun_l7_n426()
+ fun_l8_n143
+end
+
+def fun_l7_n427()
+ fun_l8_n54
+end
+
+def fun_l7_n428()
+ fun_l8_n217
+end
+
+def fun_l7_n429()
+ fun_l8_n423
+end
+
+def fun_l7_n430()
+ fun_l8_n181
+end
+
+def fun_l7_n431()
+ fun_l8_n456
+end
+
+def fun_l7_n432()
+ fun_l8_n640
+end
+
+def fun_l7_n433()
+ fun_l8_n588
+end
+
+def fun_l7_n434()
+ fun_l8_n49
+end
+
+def fun_l7_n435()
+ fun_l8_n373
+end
+
+def fun_l7_n436()
+ fun_l8_n668
+end
+
+def fun_l7_n437()
+ fun_l8_n478
+end
+
+def fun_l7_n438()
+ fun_l8_n468
+end
+
+def fun_l7_n439()
+ fun_l8_n230
+end
+
+def fun_l7_n440()
+ fun_l8_n361
+end
+
+def fun_l7_n441()
+ fun_l8_n770
+end
+
+def fun_l7_n442()
+ fun_l8_n876
+end
+
+def fun_l7_n443()
+ fun_l8_n383
+end
+
+def fun_l7_n444()
+ fun_l8_n568
+end
+
+def fun_l7_n445()
+ fun_l8_n236
+end
+
+def fun_l7_n446()
+ fun_l8_n136
+end
+
+def fun_l7_n447()
+ fun_l8_n883
+end
+
+def fun_l7_n448()
+ fun_l8_n227
+end
+
+def fun_l7_n449()
+ fun_l8_n634
+end
+
+def fun_l7_n450()
+ fun_l8_n985
+end
+
+def fun_l7_n451()
+ fun_l8_n314
+end
+
+def fun_l7_n452()
+ fun_l8_n90
+end
+
+def fun_l7_n453()
+ fun_l8_n31
+end
+
+def fun_l7_n454()
+ fun_l8_n226
+end
+
+def fun_l7_n455()
+ fun_l8_n309
+end
+
+def fun_l7_n456()
+ fun_l8_n912
+end
+
+def fun_l7_n457()
+ fun_l8_n7
+end
+
+def fun_l7_n458()
+ fun_l8_n304
+end
+
+def fun_l7_n459()
+ fun_l8_n488
+end
+
+def fun_l7_n460()
+ fun_l8_n576
+end
+
+def fun_l7_n461()
+ fun_l8_n854
+end
+
+def fun_l7_n462()
+ fun_l8_n164
+end
+
+def fun_l7_n463()
+ fun_l8_n381
+end
+
+def fun_l7_n464()
+ fun_l8_n241
+end
+
+def fun_l7_n465()
+ fun_l8_n330
+end
+
+def fun_l7_n466()
+ fun_l8_n517
+end
+
+def fun_l7_n467()
+ fun_l8_n647
+end
+
+def fun_l7_n468()
+ fun_l8_n320
+end
+
+def fun_l7_n469()
+ fun_l8_n479
+end
+
+def fun_l7_n470()
+ fun_l8_n913
+end
+
+def fun_l7_n471()
+ fun_l8_n13
+end
+
+def fun_l7_n472()
+ fun_l8_n601
+end
+
+def fun_l7_n473()
+ fun_l8_n364
+end
+
+def fun_l7_n474()
+ fun_l8_n360
+end
+
+def fun_l7_n475()
+ fun_l8_n374
+end
+
+def fun_l7_n476()
+ fun_l8_n651
+end
+
+def fun_l7_n477()
+ fun_l8_n579
+end
+
+def fun_l7_n478()
+ fun_l8_n583
+end
+
+def fun_l7_n479()
+ fun_l8_n693
+end
+
+def fun_l7_n480()
+ fun_l8_n941
+end
+
+def fun_l7_n481()
+ fun_l8_n743
+end
+
+def fun_l7_n482()
+ fun_l8_n511
+end
+
+def fun_l7_n483()
+ fun_l8_n528
+end
+
+def fun_l7_n484()
+ fun_l8_n898
+end
+
+def fun_l7_n485()
+ fun_l8_n175
+end
+
+def fun_l7_n486()
+ fun_l8_n45
+end
+
+def fun_l7_n487()
+ fun_l8_n871
+end
+
+def fun_l7_n488()
+ fun_l8_n464
+end
+
+def fun_l7_n489()
+ fun_l8_n69
+end
+
+def fun_l7_n490()
+ fun_l8_n334
+end
+
+def fun_l7_n491()
+ fun_l8_n687
+end
+
+def fun_l7_n492()
+ fun_l8_n729
+end
+
+def fun_l7_n493()
+ fun_l8_n47
+end
+
+def fun_l7_n494()
+ fun_l8_n905
+end
+
+def fun_l7_n495()
+ fun_l8_n586
+end
+
+def fun_l7_n496()
+ fun_l8_n657
+end
+
+def fun_l7_n497()
+ fun_l8_n673
+end
+
+def fun_l7_n498()
+ fun_l8_n173
+end
+
+def fun_l7_n499()
+ fun_l8_n333
+end
+
+def fun_l7_n500()
+ fun_l8_n712
+end
+
+def fun_l7_n501()
+ fun_l8_n349
+end
+
+def fun_l7_n502()
+ fun_l8_n969
+end
+
+def fun_l7_n503()
+ fun_l8_n678
+end
+
+def fun_l7_n504()
+ fun_l8_n507
+end
+
+def fun_l7_n505()
+ fun_l8_n206
+end
+
+def fun_l7_n506()
+ fun_l8_n370
+end
+
+def fun_l7_n507()
+ fun_l8_n270
+end
+
+def fun_l7_n508()
+ fun_l8_n20
+end
+
+def fun_l7_n509()
+ fun_l8_n545
+end
+
+def fun_l7_n510()
+ fun_l8_n926
+end
+
+def fun_l7_n511()
+ fun_l8_n882
+end
+
+def fun_l7_n512()
+ fun_l8_n630
+end
+
+def fun_l7_n513()
+ fun_l8_n51
+end
+
+def fun_l7_n514()
+ fun_l8_n69
+end
+
+def fun_l7_n515()
+ fun_l8_n859
+end
+
+def fun_l7_n516()
+ fun_l8_n808
+end
+
+def fun_l7_n517()
+ fun_l8_n800
+end
+
+def fun_l7_n518()
+ fun_l8_n226
+end
+
+def fun_l7_n519()
+ fun_l8_n340
+end
+
+def fun_l7_n520()
+ fun_l8_n391
+end
+
+def fun_l7_n521()
+ fun_l8_n538
+end
+
+def fun_l7_n522()
+ fun_l8_n458
+end
+
+def fun_l7_n523()
+ fun_l8_n114
+end
+
+def fun_l7_n524()
+ fun_l8_n593
+end
+
+def fun_l7_n525()
+ fun_l8_n276
+end
+
+def fun_l7_n526()
+ fun_l8_n276
+end
+
+def fun_l7_n527()
+ fun_l8_n719
+end
+
+def fun_l7_n528()
+ fun_l8_n75
+end
+
+def fun_l7_n529()
+ fun_l8_n855
+end
+
+def fun_l7_n530()
+ fun_l8_n731
+end
+
+def fun_l7_n531()
+ fun_l8_n257
+end
+
+def fun_l7_n532()
+ fun_l8_n572
+end
+
+def fun_l7_n533()
+ fun_l8_n483
+end
+
+def fun_l7_n534()
+ fun_l8_n548
+end
+
+def fun_l7_n535()
+ fun_l8_n867
+end
+
+def fun_l7_n536()
+ fun_l8_n923
+end
+
+def fun_l7_n537()
+ fun_l8_n988
+end
+
+def fun_l7_n538()
+ fun_l8_n813
+end
+
+def fun_l7_n539()
+ fun_l8_n503
+end
+
+def fun_l7_n540()
+ fun_l8_n326
+end
+
+def fun_l7_n541()
+ fun_l8_n521
+end
+
+def fun_l7_n542()
+ fun_l8_n804
+end
+
+def fun_l7_n543()
+ fun_l8_n693
+end
+
+def fun_l7_n544()
+ fun_l8_n887
+end
+
+def fun_l7_n545()
+ fun_l8_n543
+end
+
+def fun_l7_n546()
+ fun_l8_n438
+end
+
+def fun_l7_n547()
+ fun_l8_n295
+end
+
+def fun_l7_n548()
+ fun_l8_n361
+end
+
+def fun_l7_n549()
+ fun_l8_n495
+end
+
+def fun_l7_n550()
+ fun_l8_n34
+end
+
+def fun_l7_n551()
+ fun_l8_n491
+end
+
+def fun_l7_n552()
+ fun_l8_n659
+end
+
+def fun_l7_n553()
+ fun_l8_n589
+end
+
+def fun_l7_n554()
+ fun_l8_n450
+end
+
+def fun_l7_n555()
+ fun_l8_n365
+end
+
+def fun_l7_n556()
+ fun_l8_n171
+end
+
+def fun_l7_n557()
+ fun_l8_n145
+end
+
+def fun_l7_n558()
+ fun_l8_n760
+end
+
+def fun_l7_n559()
+ fun_l8_n767
+end
+
+def fun_l7_n560()
+ fun_l8_n51
+end
+
+def fun_l7_n561()
+ fun_l8_n596
+end
+
+def fun_l7_n562()
+ fun_l8_n744
+end
+
+def fun_l7_n563()
+ fun_l8_n80
+end
+
+def fun_l7_n564()
+ fun_l8_n787
+end
+
+def fun_l7_n565()
+ fun_l8_n783
+end
+
+def fun_l7_n566()
+ fun_l8_n310
+end
+
+def fun_l7_n567()
+ fun_l8_n703
+end
+
+def fun_l7_n568()
+ fun_l8_n665
+end
+
+def fun_l7_n569()
+ fun_l8_n866
+end
+
+def fun_l7_n570()
+ fun_l8_n80
+end
+
+def fun_l7_n571()
+ fun_l8_n694
+end
+
+def fun_l7_n572()
+ fun_l8_n970
+end
+
+def fun_l7_n573()
+ fun_l8_n102
+end
+
+def fun_l7_n574()
+ fun_l8_n362
+end
+
+def fun_l7_n575()
+ fun_l8_n119
+end
+
+def fun_l7_n576()
+ fun_l8_n772
+end
+
+def fun_l7_n577()
+ fun_l8_n715
+end
+
+def fun_l7_n578()
+ fun_l8_n487
+end
+
+def fun_l7_n579()
+ fun_l8_n48
+end
+
+def fun_l7_n580()
+ fun_l8_n824
+end
+
+def fun_l7_n581()
+ fun_l8_n208
+end
+
+def fun_l7_n582()
+ fun_l8_n494
+end
+
+def fun_l7_n583()
+ fun_l8_n138
+end
+
+def fun_l7_n584()
+ fun_l8_n961
+end
+
+def fun_l7_n585()
+ fun_l8_n553
+end
+
+def fun_l7_n586()
+ fun_l8_n302
+end
+
+def fun_l7_n587()
+ fun_l8_n266
+end
+
+def fun_l7_n588()
+ fun_l8_n589
+end
+
+def fun_l7_n589()
+ fun_l8_n964
+end
+
+def fun_l7_n590()
+ fun_l8_n238
+end
+
+def fun_l7_n591()
+ fun_l8_n139
+end
+
+def fun_l7_n592()
+ fun_l8_n680
+end
+
+def fun_l7_n593()
+ fun_l8_n252
+end
+
+def fun_l7_n594()
+ fun_l8_n701
+end
+
+def fun_l7_n595()
+ fun_l8_n100
+end
+
+def fun_l7_n596()
+ fun_l8_n358
+end
+
+def fun_l7_n597()
+ fun_l8_n770
+end
+
+def fun_l7_n598()
+ fun_l8_n880
+end
+
+def fun_l7_n599()
+ fun_l8_n761
+end
+
+def fun_l7_n600()
+ fun_l8_n876
+end
+
+def fun_l7_n601()
+ fun_l8_n373
+end
+
+def fun_l7_n602()
+ fun_l8_n775
+end
+
+def fun_l7_n603()
+ fun_l8_n317
+end
+
+def fun_l7_n604()
+ fun_l8_n456
+end
+
+def fun_l7_n605()
+ fun_l8_n343
+end
+
+def fun_l7_n606()
+ fun_l8_n68
+end
+
+def fun_l7_n607()
+ fun_l8_n25
+end
+
+def fun_l7_n608()
+ fun_l8_n399
+end
+
+def fun_l7_n609()
+ fun_l8_n14
+end
+
+def fun_l7_n610()
+ fun_l8_n549
+end
+
+def fun_l7_n611()
+ fun_l8_n45
+end
+
+def fun_l7_n612()
+ fun_l8_n516
+end
+
+def fun_l7_n613()
+ fun_l8_n345
+end
+
+def fun_l7_n614()
+ fun_l8_n909
+end
+
+def fun_l7_n615()
+ fun_l8_n954
+end
+
+def fun_l7_n616()
+ fun_l8_n893
+end
+
+def fun_l7_n617()
+ fun_l8_n57
+end
+
+def fun_l7_n618()
+ fun_l8_n83
+end
+
+def fun_l7_n619()
+ fun_l8_n658
+end
+
+def fun_l7_n620()
+ fun_l8_n585
+end
+
+def fun_l7_n621()
+ fun_l8_n260
+end
+
+def fun_l7_n622()
+ fun_l8_n226
+end
+
+def fun_l7_n623()
+ fun_l8_n186
+end
+
+def fun_l7_n624()
+ fun_l8_n994
+end
+
+def fun_l7_n625()
+ fun_l8_n408
+end
+
+def fun_l7_n626()
+ fun_l8_n878
+end
+
+def fun_l7_n627()
+ fun_l8_n473
+end
+
+def fun_l7_n628()
+ fun_l8_n153
+end
+
+def fun_l7_n629()
+ fun_l8_n590
+end
+
+def fun_l7_n630()
+ fun_l8_n610
+end
+
+def fun_l7_n631()
+ fun_l8_n438
+end
+
+def fun_l7_n632()
+ fun_l8_n484
+end
+
+def fun_l7_n633()
+ fun_l8_n908
+end
+
+def fun_l7_n634()
+ fun_l8_n992
+end
+
+def fun_l7_n635()
+ fun_l8_n556
+end
+
+def fun_l7_n636()
+ fun_l8_n929
+end
+
+def fun_l7_n637()
+ fun_l8_n128
+end
+
+def fun_l7_n638()
+ fun_l8_n372
+end
+
+def fun_l7_n639()
+ fun_l8_n36
+end
+
+def fun_l7_n640()
+ fun_l8_n545
+end
+
+def fun_l7_n641()
+ fun_l8_n801
+end
+
+def fun_l7_n642()
+ fun_l8_n444
+end
+
+def fun_l7_n643()
+ fun_l8_n822
+end
+
+def fun_l7_n644()
+ fun_l8_n587
+end
+
+def fun_l7_n645()
+ fun_l8_n418
+end
+
+def fun_l7_n646()
+ fun_l8_n539
+end
+
+def fun_l7_n647()
+ fun_l8_n266
+end
+
+def fun_l7_n648()
+ fun_l8_n869
+end
+
+def fun_l7_n649()
+ fun_l8_n84
+end
+
+def fun_l7_n650()
+ fun_l8_n265
+end
+
+def fun_l7_n651()
+ fun_l8_n551
+end
+
+def fun_l7_n652()
+ fun_l8_n35
+end
+
+def fun_l7_n653()
+ fun_l8_n606
+end
+
+def fun_l7_n654()
+ fun_l8_n379
+end
+
+def fun_l7_n655()
+ fun_l8_n417
+end
+
+def fun_l7_n656()
+ fun_l8_n641
+end
+
+def fun_l7_n657()
+ fun_l8_n889
+end
+
+def fun_l7_n658()
+ fun_l8_n232
+end
+
+def fun_l7_n659()
+ fun_l8_n957
+end
+
+def fun_l7_n660()
+ fun_l8_n666
+end
+
+def fun_l7_n661()
+ fun_l8_n588
+end
+
+def fun_l7_n662()
+ fun_l8_n591
+end
+
+def fun_l7_n663()
+ fun_l8_n489
+end
+
+def fun_l7_n664()
+ fun_l8_n927
+end
+
+def fun_l7_n665()
+ fun_l8_n304
+end
+
+def fun_l7_n666()
+ fun_l8_n856
+end
+
+def fun_l7_n667()
+ fun_l8_n969
+end
+
+def fun_l7_n668()
+ fun_l8_n36
+end
+
+def fun_l7_n669()
+ fun_l8_n335
+end
+
+def fun_l7_n670()
+ fun_l8_n51
+end
+
+def fun_l7_n671()
+ fun_l8_n765
+end
+
+def fun_l7_n672()
+ fun_l8_n262
+end
+
+def fun_l7_n673()
+ fun_l8_n858
+end
+
+def fun_l7_n674()
+ fun_l8_n412
+end
+
+def fun_l7_n675()
+ fun_l8_n789
+end
+
+def fun_l7_n676()
+ fun_l8_n290
+end
+
+def fun_l7_n677()
+ fun_l8_n935
+end
+
+def fun_l7_n678()
+ fun_l8_n212
+end
+
+def fun_l7_n679()
+ fun_l8_n35
+end
+
+def fun_l7_n680()
+ fun_l8_n141
+end
+
+def fun_l7_n681()
+ fun_l8_n985
+end
+
+def fun_l7_n682()
+ fun_l8_n626
+end
+
+def fun_l7_n683()
+ fun_l8_n996
+end
+
+def fun_l7_n684()
+ fun_l8_n906
+end
+
+def fun_l7_n685()
+ fun_l8_n242
+end
+
+def fun_l7_n686()
+ fun_l8_n431
+end
+
+def fun_l7_n687()
+ fun_l8_n494
+end
+
+def fun_l7_n688()
+ fun_l8_n564
+end
+
+def fun_l7_n689()
+ fun_l8_n737
+end
+
+def fun_l7_n690()
+ fun_l8_n366
+end
+
+def fun_l7_n691()
+ fun_l8_n763
+end
+
+def fun_l7_n692()
+ fun_l8_n556
+end
+
+def fun_l7_n693()
+ fun_l8_n436
+end
+
+def fun_l7_n694()
+ fun_l8_n17
+end
+
+def fun_l7_n695()
+ fun_l8_n283
+end
+
+def fun_l7_n696()
+ fun_l8_n641
+end
+
+def fun_l7_n697()
+ fun_l8_n298
+end
+
+def fun_l7_n698()
+ fun_l8_n819
+end
+
+def fun_l7_n699()
+ fun_l8_n858
+end
+
+def fun_l7_n700()
+ fun_l8_n161
+end
+
+def fun_l7_n701()
+ fun_l8_n813
+end
+
+def fun_l7_n702()
+ fun_l8_n604
+end
+
+def fun_l7_n703()
+ fun_l8_n878
+end
+
+def fun_l7_n704()
+ fun_l8_n880
+end
+
+def fun_l7_n705()
+ fun_l8_n431
+end
+
+def fun_l7_n706()
+ fun_l8_n944
+end
+
+def fun_l7_n707()
+ fun_l8_n672
+end
+
+def fun_l7_n708()
+ fun_l8_n983
+end
+
+def fun_l7_n709()
+ fun_l8_n224
+end
+
+def fun_l7_n710()
+ fun_l8_n915
+end
+
+def fun_l7_n711()
+ fun_l8_n699
+end
+
+def fun_l7_n712()
+ fun_l8_n112
+end
+
+def fun_l7_n713()
+ fun_l8_n64
+end
+
+def fun_l7_n714()
+ fun_l8_n3
+end
+
+def fun_l7_n715()
+ fun_l8_n508
+end
+
+def fun_l7_n716()
+ fun_l8_n172
+end
+
+def fun_l7_n717()
+ fun_l8_n777
+end
+
+def fun_l7_n718()
+ fun_l8_n328
+end
+
+def fun_l7_n719()
+ fun_l8_n338
+end
+
+def fun_l7_n720()
+ fun_l8_n897
+end
+
+def fun_l7_n721()
+ fun_l8_n373
+end
+
+def fun_l7_n722()
+ fun_l8_n91
+end
+
+def fun_l7_n723()
+ fun_l8_n149
+end
+
+def fun_l7_n724()
+ fun_l8_n65
+end
+
+def fun_l7_n725()
+ fun_l8_n685
+end
+
+def fun_l7_n726()
+ fun_l8_n939
+end
+
+def fun_l7_n727()
+ fun_l8_n427
+end
+
+def fun_l7_n728()
+ fun_l8_n606
+end
+
+def fun_l7_n729()
+ fun_l8_n818
+end
+
+def fun_l7_n730()
+ fun_l8_n24
+end
+
+def fun_l7_n731()
+ fun_l8_n901
+end
+
+def fun_l7_n732()
+ fun_l8_n979
+end
+
+def fun_l7_n733()
+ fun_l8_n88
+end
+
+def fun_l7_n734()
+ fun_l8_n516
+end
+
+def fun_l7_n735()
+ fun_l8_n44
+end
+
+def fun_l7_n736()
+ fun_l8_n540
+end
+
+def fun_l7_n737()
+ fun_l8_n586
+end
+
+def fun_l7_n738()
+ fun_l8_n695
+end
+
+def fun_l7_n739()
+ fun_l8_n774
+end
+
+def fun_l7_n740()
+ fun_l8_n797
+end
+
+def fun_l7_n741()
+ fun_l8_n524
+end
+
+def fun_l7_n742()
+ fun_l8_n784
+end
+
+def fun_l7_n743()
+ fun_l8_n203
+end
+
+def fun_l7_n744()
+ fun_l8_n808
+end
+
+def fun_l7_n745()
+ fun_l8_n216
+end
+
+def fun_l7_n746()
+ fun_l8_n14
+end
+
+def fun_l7_n747()
+ fun_l8_n799
+end
+
+def fun_l7_n748()
+ fun_l8_n660
+end
+
+def fun_l7_n749()
+ fun_l8_n417
+end
+
+def fun_l7_n750()
+ fun_l8_n573
+end
+
+def fun_l7_n751()
+ fun_l8_n919
+end
+
+def fun_l7_n752()
+ fun_l8_n956
+end
+
+def fun_l7_n753()
+ fun_l8_n475
+end
+
+def fun_l7_n754()
+ fun_l8_n941
+end
+
+def fun_l7_n755()
+ fun_l8_n629
+end
+
+def fun_l7_n756()
+ fun_l8_n745
+end
+
+def fun_l7_n757()
+ fun_l8_n656
+end
+
+def fun_l7_n758()
+ fun_l8_n315
+end
+
+def fun_l7_n759()
+ fun_l8_n952
+end
+
+def fun_l7_n760()
+ fun_l8_n241
+end
+
+def fun_l7_n761()
+ fun_l8_n341
+end
+
+def fun_l7_n762()
+ fun_l8_n156
+end
+
+def fun_l7_n763()
+ fun_l8_n258
+end
+
+def fun_l7_n764()
+ fun_l8_n275
+end
+
+def fun_l7_n765()
+ fun_l8_n950
+end
+
+def fun_l7_n766()
+ fun_l8_n715
+end
+
+def fun_l7_n767()
+ fun_l8_n746
+end
+
+def fun_l7_n768()
+ fun_l8_n428
+end
+
+def fun_l7_n769()
+ fun_l8_n176
+end
+
+def fun_l7_n770()
+ fun_l8_n586
+end
+
+def fun_l7_n771()
+ fun_l8_n912
+end
+
+def fun_l7_n772()
+ fun_l8_n484
+end
+
+def fun_l7_n773()
+ fun_l8_n155
+end
+
+def fun_l7_n774()
+ fun_l8_n648
+end
+
+def fun_l7_n775()
+ fun_l8_n27
+end
+
+def fun_l7_n776()
+ fun_l8_n188
+end
+
+def fun_l7_n777()
+ fun_l8_n804
+end
+
+def fun_l7_n778()
+ fun_l8_n646
+end
+
+def fun_l7_n779()
+ fun_l8_n884
+end
+
+def fun_l7_n780()
+ fun_l8_n332
+end
+
+def fun_l7_n781()
+ fun_l8_n28
+end
+
+def fun_l7_n782()
+ fun_l8_n966
+end
+
+def fun_l7_n783()
+ fun_l8_n531
+end
+
+def fun_l7_n784()
+ fun_l8_n955
+end
+
+def fun_l7_n785()
+ fun_l8_n264
+end
+
+def fun_l7_n786()
+ fun_l8_n387
+end
+
+def fun_l7_n787()
+ fun_l8_n274
+end
+
+def fun_l7_n788()
+ fun_l8_n790
+end
+
+def fun_l7_n789()
+ fun_l8_n80
+end
+
+def fun_l7_n790()
+ fun_l8_n551
+end
+
+def fun_l7_n791()
+ fun_l8_n762
+end
+
+def fun_l7_n792()
+ fun_l8_n777
+end
+
+def fun_l7_n793()
+ fun_l8_n120
+end
+
+def fun_l7_n794()
+ fun_l8_n189
+end
+
+def fun_l7_n795()
+ fun_l8_n241
+end
+
+def fun_l7_n796()
+ fun_l8_n608
+end
+
+def fun_l7_n797()
+ fun_l8_n689
+end
+
+def fun_l7_n798()
+ fun_l8_n406
+end
+
+def fun_l7_n799()
+ fun_l8_n853
+end
+
+def fun_l7_n800()
+ fun_l8_n606
+end
+
+def fun_l7_n801()
+ fun_l8_n723
+end
+
+def fun_l7_n802()
+ fun_l8_n498
+end
+
+def fun_l7_n803()
+ fun_l8_n109
+end
+
+def fun_l7_n804()
+ fun_l8_n400
+end
+
+def fun_l7_n805()
+ fun_l8_n266
+end
+
+def fun_l7_n806()
+ fun_l8_n661
+end
+
+def fun_l7_n807()
+ fun_l8_n107
+end
+
+def fun_l7_n808()
+ fun_l8_n541
+end
+
+def fun_l7_n809()
+ fun_l8_n44
+end
+
+def fun_l7_n810()
+ fun_l8_n184
+end
+
+def fun_l7_n811()
+ fun_l8_n516
+end
+
+def fun_l7_n812()
+ fun_l8_n706
+end
+
+def fun_l7_n813()
+ fun_l8_n714
+end
+
+def fun_l7_n814()
+ fun_l8_n399
+end
+
+def fun_l7_n815()
+ fun_l8_n877
+end
+
+def fun_l7_n816()
+ fun_l8_n301
+end
+
+def fun_l7_n817()
+ fun_l8_n75
+end
+
+def fun_l7_n818()
+ fun_l8_n169
+end
+
+def fun_l7_n819()
+ fun_l8_n99
+end
+
+def fun_l7_n820()
+ fun_l8_n155
+end
+
+def fun_l7_n821()
+ fun_l8_n281
+end
+
+def fun_l7_n822()
+ fun_l8_n210
+end
+
+def fun_l7_n823()
+ fun_l8_n835
+end
+
+def fun_l7_n824()
+ fun_l8_n700
+end
+
+def fun_l7_n825()
+ fun_l8_n231
+end
+
+def fun_l7_n826()
+ fun_l8_n967
+end
+
+def fun_l7_n827()
+ fun_l8_n818
+end
+
+def fun_l7_n828()
+ fun_l8_n670
+end
+
+def fun_l7_n829()
+ fun_l8_n311
+end
+
+def fun_l7_n830()
+ fun_l8_n919
+end
+
+def fun_l7_n831()
+ fun_l8_n949
+end
+
+def fun_l7_n832()
+ fun_l8_n677
+end
+
+def fun_l7_n833()
+ fun_l8_n626
+end
+
+def fun_l7_n834()
+ fun_l8_n171
+end
+
+def fun_l7_n835()
+ fun_l8_n723
+end
+
+def fun_l7_n836()
+ fun_l8_n606
+end
+
+def fun_l7_n837()
+ fun_l8_n580
+end
+
+def fun_l7_n838()
+ fun_l8_n369
+end
+
+def fun_l7_n839()
+ fun_l8_n510
+end
+
+def fun_l7_n840()
+ fun_l8_n554
+end
+
+def fun_l7_n841()
+ fun_l8_n749
+end
+
+def fun_l7_n842()
+ fun_l8_n623
+end
+
+def fun_l7_n843()
+ fun_l8_n735
+end
+
+def fun_l7_n844()
+ fun_l8_n401
+end
+
+def fun_l7_n845()
+ fun_l8_n693
+end
+
+def fun_l7_n846()
+ fun_l8_n367
+end
+
+def fun_l7_n847()
+ fun_l8_n351
+end
+
+def fun_l7_n848()
+ fun_l8_n527
+end
+
+def fun_l7_n849()
+ fun_l8_n964
+end
+
+def fun_l7_n850()
+ fun_l8_n193
+end
+
+def fun_l7_n851()
+ fun_l8_n401
+end
+
+def fun_l7_n852()
+ fun_l8_n873
+end
+
+def fun_l7_n853()
+ fun_l8_n326
+end
+
+def fun_l7_n854()
+ fun_l8_n292
+end
+
+def fun_l7_n855()
+ fun_l8_n519
+end
+
+def fun_l7_n856()
+ fun_l8_n801
+end
+
+def fun_l7_n857()
+ fun_l8_n45
+end
+
+def fun_l7_n858()
+ fun_l8_n212
+end
+
+def fun_l7_n859()
+ fun_l8_n812
+end
+
+def fun_l7_n860()
+ fun_l8_n541
+end
+
+def fun_l7_n861()
+ fun_l8_n410
+end
+
+def fun_l7_n862()
+ fun_l8_n177
+end
+
+def fun_l7_n863()
+ fun_l8_n940
+end
+
+def fun_l7_n864()
+ fun_l8_n832
+end
+
+def fun_l7_n865()
+ fun_l8_n7
+end
+
+def fun_l7_n866()
+ fun_l8_n654
+end
+
+def fun_l7_n867()
+ fun_l8_n282
+end
+
+def fun_l7_n868()
+ fun_l8_n916
+end
+
+def fun_l7_n869()
+ fun_l8_n638
+end
+
+def fun_l7_n870()
+ fun_l8_n71
+end
+
+def fun_l7_n871()
+ fun_l8_n153
+end
+
+def fun_l7_n872()
+ fun_l8_n285
+end
+
+def fun_l7_n873()
+ fun_l8_n744
+end
+
+def fun_l7_n874()
+ fun_l8_n912
+end
+
+def fun_l7_n875()
+ fun_l8_n258
+end
+
+def fun_l7_n876()
+ fun_l8_n346
+end
+
+def fun_l7_n877()
+ fun_l8_n366
+end
+
+def fun_l7_n878()
+ fun_l8_n165
+end
+
+def fun_l7_n879()
+ fun_l8_n745
+end
+
+def fun_l7_n880()
+ fun_l8_n472
+end
+
+def fun_l7_n881()
+ fun_l8_n290
+end
+
+def fun_l7_n882()
+ fun_l8_n695
+end
+
+def fun_l7_n883()
+ fun_l8_n522
+end
+
+def fun_l7_n884()
+ fun_l8_n851
+end
+
+def fun_l7_n885()
+ fun_l8_n870
+end
+
+def fun_l7_n886()
+ fun_l8_n70
+end
+
+def fun_l7_n887()
+ fun_l8_n334
+end
+
+def fun_l7_n888()
+ fun_l8_n786
+end
+
+def fun_l7_n889()
+ fun_l8_n41
+end
+
+def fun_l7_n890()
+ fun_l8_n316
+end
+
+def fun_l7_n891()
+ fun_l8_n594
+end
+
+def fun_l7_n892()
+ fun_l8_n168
+end
+
+def fun_l7_n893()
+ fun_l8_n960
+end
+
+def fun_l7_n894()
+ fun_l8_n357
+end
+
+def fun_l7_n895()
+ fun_l8_n695
+end
+
+def fun_l7_n896()
+ fun_l8_n616
+end
+
+def fun_l7_n897()
+ fun_l8_n63
+end
+
+def fun_l7_n898()
+ fun_l8_n59
+end
+
+def fun_l7_n899()
+ fun_l8_n958
+end
+
+def fun_l7_n900()
+ fun_l8_n623
+end
+
+def fun_l7_n901()
+ fun_l8_n427
+end
+
+def fun_l7_n902()
+ fun_l8_n203
+end
+
+def fun_l7_n903()
+ fun_l8_n752
+end
+
+def fun_l7_n904()
+ fun_l8_n28
+end
+
+def fun_l7_n905()
+ fun_l8_n687
+end
+
+def fun_l7_n906()
+ fun_l8_n723
+end
+
+def fun_l7_n907()
+ fun_l8_n688
+end
+
+def fun_l7_n908()
+ fun_l8_n417
+end
+
+def fun_l7_n909()
+ fun_l8_n769
+end
+
+def fun_l7_n910()
+ fun_l8_n683
+end
+
+def fun_l7_n911()
+ fun_l8_n865
+end
+
+def fun_l7_n912()
+ fun_l8_n75
+end
+
+def fun_l7_n913()
+ fun_l8_n671
+end
+
+def fun_l7_n914()
+ fun_l8_n168
+end
+
+def fun_l7_n915()
+ fun_l8_n958
+end
+
+def fun_l7_n916()
+ fun_l8_n96
+end
+
+def fun_l7_n917()
+ fun_l8_n981
+end
+
+def fun_l7_n918()
+ fun_l8_n481
+end
+
+def fun_l7_n919()
+ fun_l8_n887
+end
+
+def fun_l7_n920()
+ fun_l8_n319
+end
+
+def fun_l7_n921()
+ fun_l8_n349
+end
+
+def fun_l7_n922()
+ fun_l8_n774
+end
+
+def fun_l7_n923()
+ fun_l8_n490
+end
+
+def fun_l7_n924()
+ fun_l8_n64
+end
+
+def fun_l7_n925()
+ fun_l8_n581
+end
+
+def fun_l7_n926()
+ fun_l8_n306
+end
+
+def fun_l7_n927()
+ fun_l8_n141
+end
+
+def fun_l7_n928()
+ fun_l8_n353
+end
+
+def fun_l7_n929()
+ fun_l8_n653
+end
+
+def fun_l7_n930()
+ fun_l8_n995
+end
+
+def fun_l7_n931()
+ fun_l8_n546
+end
+
+def fun_l7_n932()
+ fun_l8_n163
+end
+
+def fun_l7_n933()
+ fun_l8_n986
+end
+
+def fun_l7_n934()
+ fun_l8_n822
+end
+
+def fun_l7_n935()
+ fun_l8_n445
+end
+
+def fun_l7_n936()
+ fun_l8_n595
+end
+
+def fun_l7_n937()
+ fun_l8_n457
+end
+
+def fun_l7_n938()
+ fun_l8_n119
+end
+
+def fun_l7_n939()
+ fun_l8_n575
+end
+
+def fun_l7_n940()
+ fun_l8_n738
+end
+
+def fun_l7_n941()
+ fun_l8_n307
+end
+
+def fun_l7_n942()
+ fun_l8_n322
+end
+
+def fun_l7_n943()
+ fun_l8_n938
+end
+
+def fun_l7_n944()
+ fun_l8_n787
+end
+
+def fun_l7_n945()
+ fun_l8_n834
+end
+
+def fun_l7_n946()
+ fun_l8_n360
+end
+
+def fun_l7_n947()
+ fun_l8_n631
+end
+
+def fun_l7_n948()
+ fun_l8_n796
+end
+
+def fun_l7_n949()
+ fun_l8_n498
+end
+
+def fun_l7_n950()
+ fun_l8_n494
+end
+
+def fun_l7_n951()
+ fun_l8_n303
+end
+
+def fun_l7_n952()
+ fun_l8_n107
+end
+
+def fun_l7_n953()
+ fun_l8_n403
+end
+
+def fun_l7_n954()
+ fun_l8_n635
+end
+
+def fun_l7_n955()
+ fun_l8_n81
+end
+
+def fun_l7_n956()
+ fun_l8_n770
+end
+
+def fun_l7_n957()
+ fun_l8_n123
+end
+
+def fun_l7_n958()
+ fun_l8_n389
+end
+
+def fun_l7_n959()
+ fun_l8_n965
+end
+
+def fun_l7_n960()
+ fun_l8_n579
+end
+
+def fun_l7_n961()
+ fun_l8_n816
+end
+
+def fun_l7_n962()
+ fun_l8_n570
+end
+
+def fun_l7_n963()
+ fun_l8_n85
+end
+
+def fun_l7_n964()
+ fun_l8_n70
+end
+
+def fun_l7_n965()
+ fun_l8_n13
+end
+
+def fun_l7_n966()
+ fun_l8_n142
+end
+
+def fun_l7_n967()
+ fun_l8_n765
+end
+
+def fun_l7_n968()
+ fun_l8_n912
+end
+
+def fun_l7_n969()
+ fun_l8_n496
+end
+
+def fun_l7_n970()
+ fun_l8_n77
+end
+
+def fun_l7_n971()
+ fun_l8_n75
+end
+
+def fun_l7_n972()
+ fun_l8_n822
+end
+
+def fun_l7_n973()
+ fun_l8_n859
+end
+
+def fun_l7_n974()
+ fun_l8_n502
+end
+
+def fun_l7_n975()
+ fun_l8_n673
+end
+
+def fun_l7_n976()
+ fun_l8_n3
+end
+
+def fun_l7_n977()
+ fun_l8_n288
+end
+
+def fun_l7_n978()
+ fun_l8_n547
+end
+
+def fun_l7_n979()
+ fun_l8_n720
+end
+
+def fun_l7_n980()
+ fun_l8_n822
+end
+
+def fun_l7_n981()
+ fun_l8_n518
+end
+
+def fun_l7_n982()
+ fun_l8_n243
+end
+
+def fun_l7_n983()
+ fun_l8_n695
+end
+
+def fun_l7_n984()
+ fun_l8_n182
+end
+
+def fun_l7_n985()
+ fun_l8_n783
+end
+
+def fun_l7_n986()
+ fun_l8_n237
+end
+
+def fun_l7_n987()
+ fun_l8_n722
+end
+
+def fun_l7_n988()
+ fun_l8_n154
+end
+
+def fun_l7_n989()
+ fun_l8_n728
+end
+
+def fun_l7_n990()
+ fun_l8_n673
+end
+
+def fun_l7_n991()
+ fun_l8_n885
+end
+
+def fun_l7_n992()
+ fun_l8_n490
+end
+
+def fun_l7_n993()
+ fun_l8_n50
+end
+
+def fun_l7_n994()
+ fun_l8_n557
+end
+
+def fun_l7_n995()
+ fun_l8_n993
+end
+
+def fun_l7_n996()
+ fun_l8_n509
+end
+
+def fun_l7_n997()
+ fun_l8_n40
+end
+
+def fun_l7_n998()
+ fun_l8_n754
+end
+
+def fun_l7_n999()
+ fun_l8_n651
+end
+
+def fun_l8_n0()
+ fun_l9_n463
+end
+
+def fun_l8_n1()
+ fun_l9_n312
+end
+
+def fun_l8_n2()
+ fun_l9_n831
+end
+
+def fun_l8_n3()
+ fun_l9_n378
+end
+
+def fun_l8_n4()
+ fun_l9_n706
+end
+
+def fun_l8_n5()
+ fun_l9_n367
+end
+
+def fun_l8_n6()
+ fun_l9_n890
+end
+
+def fun_l8_n7()
+ fun_l9_n315
+end
+
+def fun_l8_n8()
+ fun_l9_n808
+end
+
+def fun_l8_n9()
+ fun_l9_n338
+end
+
+def fun_l8_n10()
+ fun_l9_n911
+end
+
+def fun_l8_n11()
+ fun_l9_n630
+end
+
+def fun_l8_n12()
+ fun_l9_n273
+end
+
+def fun_l8_n13()
+ fun_l9_n835
+end
+
+def fun_l8_n14()
+ fun_l9_n306
+end
+
+def fun_l8_n15()
+ fun_l9_n81
+end
+
+def fun_l8_n16()
+ fun_l9_n26
+end
+
+def fun_l8_n17()
+ fun_l9_n210
+end
+
+def fun_l8_n18()
+ fun_l9_n74
+end
+
+def fun_l8_n19()
+ fun_l9_n297
+end
+
+def fun_l8_n20()
+ fun_l9_n94
+end
+
+def fun_l8_n21()
+ fun_l9_n897
+end
+
+def fun_l8_n22()
+ fun_l9_n839
+end
+
+def fun_l8_n23()
+ fun_l9_n384
+end
+
+def fun_l8_n24()
+ fun_l9_n297
+end
+
+def fun_l8_n25()
+ fun_l9_n198
+end
+
+def fun_l8_n26()
+ fun_l9_n829
+end
+
+def fun_l8_n27()
+ fun_l9_n796
+end
+
+def fun_l8_n28()
+ fun_l9_n89
+end
+
+def fun_l8_n29()
+ fun_l9_n510
+end
+
+def fun_l8_n30()
+ fun_l9_n761
+end
+
+def fun_l8_n31()
+ fun_l9_n665
+end
+
+def fun_l8_n32()
+ fun_l9_n570
+end
+
+def fun_l8_n33()
+ fun_l9_n270
+end
+
+def fun_l8_n34()
+ fun_l9_n600
+end
+
+def fun_l8_n35()
+ fun_l9_n390
+end
+
+def fun_l8_n36()
+ fun_l9_n583
+end
+
+def fun_l8_n37()
+ fun_l9_n392
+end
+
+def fun_l8_n38()
+ fun_l9_n862
+end
+
+def fun_l8_n39()
+ fun_l9_n164
+end
+
+def fun_l8_n40()
+ fun_l9_n626
+end
+
+def fun_l8_n41()
+ fun_l9_n558
+end
+
+def fun_l8_n42()
+ fun_l9_n929
+end
+
+def fun_l8_n43()
+ fun_l9_n161
+end
+
+def fun_l8_n44()
+ fun_l9_n80
+end
+
+def fun_l8_n45()
+ fun_l9_n884
+end
+
+def fun_l8_n46()
+ fun_l9_n784
+end
+
+def fun_l8_n47()
+ fun_l9_n41
+end
+
+def fun_l8_n48()
+ fun_l9_n787
+end
+
+def fun_l8_n49()
+ fun_l9_n179
+end
+
+def fun_l8_n50()
+ fun_l9_n852
+end
+
+def fun_l8_n51()
+ fun_l9_n697
+end
+
+def fun_l8_n52()
+ fun_l9_n8
+end
+
+def fun_l8_n53()
+ fun_l9_n320
+end
+
+def fun_l8_n54()
+ fun_l9_n768
+end
+
+def fun_l8_n55()
+ fun_l9_n574
+end
+
+def fun_l8_n56()
+ fun_l9_n339
+end
+
+def fun_l8_n57()
+ fun_l9_n757
+end
+
+def fun_l8_n58()
+ fun_l9_n221
+end
+
+def fun_l8_n59()
+ fun_l9_n34
+end
+
+def fun_l8_n60()
+ fun_l9_n36
+end
+
+def fun_l8_n61()
+ fun_l9_n244
+end
+
+def fun_l8_n62()
+ fun_l9_n347
+end
+
+def fun_l8_n63()
+ fun_l9_n330
+end
+
+def fun_l8_n64()
+ fun_l9_n717
+end
+
+def fun_l8_n65()
+ fun_l9_n187
+end
+
+def fun_l8_n66()
+ fun_l9_n179
+end
+
+def fun_l8_n67()
+ fun_l9_n807
+end
+
+def fun_l8_n68()
+ fun_l9_n350
+end
+
+def fun_l8_n69()
+ fun_l9_n882
+end
+
+def fun_l8_n70()
+ fun_l9_n936
+end
+
+def fun_l8_n71()
+ fun_l9_n282
+end
+
+def fun_l8_n72()
+ fun_l9_n483
+end
+
+def fun_l8_n73()
+ fun_l9_n296
+end
+
+def fun_l8_n74()
+ fun_l9_n461
+end
+
+def fun_l8_n75()
+ fun_l9_n153
+end
+
+def fun_l8_n76()
+ fun_l9_n555
+end
+
+def fun_l8_n77()
+ fun_l9_n826
+end
+
+def fun_l8_n78()
+ fun_l9_n134
+end
+
+def fun_l8_n79()
+ fun_l9_n552
+end
+
+def fun_l8_n80()
+ fun_l9_n793
+end
+
+def fun_l8_n81()
+ fun_l9_n832
+end
+
+def fun_l8_n82()
+ fun_l9_n270
+end
+
+def fun_l8_n83()
+ fun_l9_n685
+end
+
+def fun_l8_n84()
+ fun_l9_n145
+end
+
+def fun_l8_n85()
+ fun_l9_n331
+end
+
+def fun_l8_n86()
+ fun_l9_n775
+end
+
+def fun_l8_n87()
+ fun_l9_n350
+end
+
+def fun_l8_n88()
+ fun_l9_n569
+end
+
+def fun_l8_n89()
+ fun_l9_n808
+end
+
+def fun_l8_n90()
+ fun_l9_n537
+end
+
+def fun_l8_n91()
+ fun_l9_n40
+end
+
+def fun_l8_n92()
+ fun_l9_n180
+end
+
+def fun_l8_n93()
+ fun_l9_n79
+end
+
+def fun_l8_n94()
+ fun_l9_n664
+end
+
+def fun_l8_n95()
+ fun_l9_n43
+end
+
+def fun_l8_n96()
+ fun_l9_n113
+end
+
+def fun_l8_n97()
+ fun_l9_n108
+end
+
+def fun_l8_n98()
+ fun_l9_n343
+end
+
+def fun_l8_n99()
+ fun_l9_n881
+end
+
+def fun_l8_n100()
+ fun_l9_n272
+end
+
+def fun_l8_n101()
+ fun_l9_n559
+end
+
+def fun_l8_n102()
+ fun_l9_n500
+end
+
+def fun_l8_n103()
+ fun_l9_n738
+end
+
+def fun_l8_n104()
+ fun_l9_n195
+end
+
+def fun_l8_n105()
+ fun_l9_n220
+end
+
+def fun_l8_n106()
+ fun_l9_n321
+end
+
+def fun_l8_n107()
+ fun_l9_n965
+end
+
+def fun_l8_n108()
+ fun_l9_n771
+end
+
+def fun_l8_n109()
+ fun_l9_n227
+end
+
+def fun_l8_n110()
+ fun_l9_n710
+end
+
+def fun_l8_n111()
+ fun_l9_n865
+end
+
+def fun_l8_n112()
+ fun_l9_n791
+end
+
+def fun_l8_n113()
+ fun_l9_n591
+end
+
+def fun_l8_n114()
+ fun_l9_n296
+end
+
+def fun_l8_n115()
+ fun_l9_n269
+end
+
+def fun_l8_n116()
+ fun_l9_n816
+end
+
+def fun_l8_n117()
+ fun_l9_n666
+end
+
+def fun_l8_n118()
+ fun_l9_n31
+end
+
+def fun_l8_n119()
+ fun_l9_n275
+end
+
+def fun_l8_n120()
+ fun_l9_n660
+end
+
+def fun_l8_n121()
+ fun_l9_n514
+end
+
+def fun_l8_n122()
+ fun_l9_n435
+end
+
+def fun_l8_n123()
+ fun_l9_n351
+end
+
+def fun_l8_n124()
+ fun_l9_n190
+end
+
+def fun_l8_n125()
+ fun_l9_n276
+end
+
+def fun_l8_n126()
+ fun_l9_n536
+end
+
+def fun_l8_n127()
+ fun_l9_n551
+end
+
+def fun_l8_n128()
+ fun_l9_n315
+end
+
+def fun_l8_n129()
+ fun_l9_n957
+end
+
+def fun_l8_n130()
+ fun_l9_n609
+end
+
+def fun_l8_n131()
+ fun_l9_n31
+end
+
+def fun_l8_n132()
+ fun_l9_n375
+end
+
+def fun_l8_n133()
+ fun_l9_n363
+end
+
+def fun_l8_n134()
+ fun_l9_n797
+end
+
+def fun_l8_n135()
+ fun_l9_n985
+end
+
+def fun_l8_n136()
+ fun_l9_n797
+end
+
+def fun_l8_n137()
+ fun_l9_n992
+end
+
+def fun_l8_n138()
+ fun_l9_n503
+end
+
+def fun_l8_n139()
+ fun_l9_n336
+end
+
+def fun_l8_n140()
+ fun_l9_n328
+end
+
+def fun_l8_n141()
+ fun_l9_n326
+end
+
+def fun_l8_n142()
+ fun_l9_n983
+end
+
+def fun_l8_n143()
+ fun_l9_n509
+end
+
+def fun_l8_n144()
+ fun_l9_n873
+end
+
+def fun_l8_n145()
+ fun_l9_n97
+end
+
+def fun_l8_n146()
+ fun_l9_n46
+end
+
+def fun_l8_n147()
+ fun_l9_n146
+end
+
+def fun_l8_n148()
+ fun_l9_n293
+end
+
+def fun_l8_n149()
+ fun_l9_n993
+end
+
+def fun_l8_n150()
+ fun_l9_n230
+end
+
+def fun_l8_n151()
+ fun_l9_n485
+end
+
+def fun_l8_n152()
+ fun_l9_n844
+end
+
+def fun_l8_n153()
+ fun_l9_n782
+end
+
+def fun_l8_n154()
+ fun_l9_n493
+end
+
+def fun_l8_n155()
+ fun_l9_n699
+end
+
+def fun_l8_n156()
+ fun_l9_n132
+end
+
+def fun_l8_n157()
+ fun_l9_n573
+end
+
+def fun_l8_n158()
+ fun_l9_n993
+end
+
+def fun_l8_n159()
+ fun_l9_n644
+end
+
+def fun_l8_n160()
+ fun_l9_n151
+end
+
+def fun_l8_n161()
+ fun_l9_n181
+end
+
+def fun_l8_n162()
+ fun_l9_n314
+end
+
+def fun_l8_n163()
+ fun_l9_n716
+end
+
+def fun_l8_n164()
+ fun_l9_n541
+end
+
+def fun_l8_n165()
+ fun_l9_n283
+end
+
+def fun_l8_n166()
+ fun_l9_n55
+end
+
+def fun_l8_n167()
+ fun_l9_n351
+end
+
+def fun_l8_n168()
+ fun_l9_n29
+end
+
+def fun_l8_n169()
+ fun_l9_n117
+end
+
+def fun_l8_n170()
+ fun_l9_n529
+end
+
+def fun_l8_n171()
+ fun_l9_n735
+end
+
+def fun_l8_n172()
+ fun_l9_n161
+end
+
+def fun_l8_n173()
+ fun_l9_n399
+end
+
+def fun_l8_n174()
+ fun_l9_n952
+end
+
+def fun_l8_n175()
+ fun_l9_n420
+end
+
+def fun_l8_n176()
+ fun_l9_n664
+end
+
+def fun_l8_n177()
+ fun_l9_n697
+end
+
+def fun_l8_n178()
+ fun_l9_n506
+end
+
+def fun_l8_n179()
+ fun_l9_n241
+end
+
+def fun_l8_n180()
+ fun_l9_n516
+end
+
+def fun_l8_n181()
+ fun_l9_n540
+end
+
+def fun_l8_n182()
+ fun_l9_n891
+end
+
+def fun_l8_n183()
+ fun_l9_n200
+end
+
+def fun_l8_n184()
+ fun_l9_n118
+end
+
+def fun_l8_n185()
+ fun_l9_n186
+end
+
+def fun_l8_n186()
+ fun_l9_n899
+end
+
+def fun_l8_n187()
+ fun_l9_n766
+end
+
+def fun_l8_n188()
+ fun_l9_n437
+end
+
+def fun_l8_n189()
+ fun_l9_n431
+end
+
+def fun_l8_n190()
+ fun_l9_n814
+end
+
+def fun_l8_n191()
+ fun_l9_n446
+end
+
+def fun_l8_n192()
+ fun_l9_n364
+end
+
+def fun_l8_n193()
+ fun_l9_n634
+end
+
+def fun_l8_n194()
+ fun_l9_n74
+end
+
+def fun_l8_n195()
+ fun_l9_n258
+end
+
+def fun_l8_n196()
+ fun_l9_n105
+end
+
+def fun_l8_n197()
+ fun_l9_n295
+end
+
+def fun_l8_n198()
+ fun_l9_n811
+end
+
+def fun_l8_n199()
+ fun_l9_n210
+end
+
+def fun_l8_n200()
+ fun_l9_n566
+end
+
+def fun_l8_n201()
+ fun_l9_n813
+end
+
+def fun_l8_n202()
+ fun_l9_n624
+end
+
+def fun_l8_n203()
+ fun_l9_n757
+end
+
+def fun_l8_n204()
+ fun_l9_n256
+end
+
+def fun_l8_n205()
+ fun_l9_n439
+end
+
+def fun_l8_n206()
+ fun_l9_n359
+end
+
+def fun_l8_n207()
+ fun_l9_n795
+end
+
+def fun_l8_n208()
+ fun_l9_n178
+end
+
+def fun_l8_n209()
+ fun_l9_n96
+end
+
+def fun_l8_n210()
+ fun_l9_n273
+end
+
+def fun_l8_n211()
+ fun_l9_n976
+end
+
+def fun_l8_n212()
+ fun_l9_n412
+end
+
+def fun_l8_n213()
+ fun_l9_n372
+end
+
+def fun_l8_n214()
+ fun_l9_n902
+end
+
+def fun_l8_n215()
+ fun_l9_n283
+end
+
+def fun_l8_n216()
+ fun_l9_n101
+end
+
+def fun_l8_n217()
+ fun_l9_n792
+end
+
+def fun_l8_n218()
+ fun_l9_n207
+end
+
+def fun_l8_n219()
+ fun_l9_n653
+end
+
+def fun_l8_n220()
+ fun_l9_n784
+end
+
+def fun_l8_n221()
+ fun_l9_n455
+end
+
+def fun_l8_n222()
+ fun_l9_n188
+end
+
+def fun_l8_n223()
+ fun_l9_n169
+end
+
+def fun_l8_n224()
+ fun_l9_n88
+end
+
+def fun_l8_n225()
+ fun_l9_n132
+end
+
+def fun_l8_n226()
+ fun_l9_n269
+end
+
+def fun_l8_n227()
+ fun_l9_n903
+end
+
+def fun_l8_n228()
+ fun_l9_n463
+end
+
+def fun_l8_n229()
+ fun_l9_n73
+end
+
+def fun_l8_n230()
+ fun_l9_n36
+end
+
+def fun_l8_n231()
+ fun_l9_n224
+end
+
+def fun_l8_n232()
+ fun_l9_n739
+end
+
+def fun_l8_n233()
+ fun_l9_n887
+end
+
+def fun_l8_n234()
+ fun_l9_n522
+end
+
+def fun_l8_n235()
+ fun_l9_n261
+end
+
+def fun_l8_n236()
+ fun_l9_n222
+end
+
+def fun_l8_n237()
+ fun_l9_n358
+end
+
+def fun_l8_n238()
+ fun_l9_n855
+end
+
+def fun_l8_n239()
+ fun_l9_n263
+end
+
+def fun_l8_n240()
+ fun_l9_n411
+end
+
+def fun_l8_n241()
+ fun_l9_n450
+end
+
+def fun_l8_n242()
+ fun_l9_n706
+end
+
+def fun_l8_n243()
+ fun_l9_n125
+end
+
+def fun_l8_n244()
+ fun_l9_n163
+end
+
+def fun_l8_n245()
+ fun_l9_n758
+end
+
+def fun_l8_n246()
+ fun_l9_n168
+end
+
+def fun_l8_n247()
+ fun_l9_n250
+end
+
+def fun_l8_n248()
+ fun_l9_n73
+end
+
+def fun_l8_n249()
+ fun_l9_n25
+end
+
+def fun_l8_n250()
+ fun_l9_n311
+end
+
+def fun_l8_n251()
+ fun_l9_n992
+end
+
+def fun_l8_n252()
+ fun_l9_n95
+end
+
+def fun_l8_n253()
+ fun_l9_n470
+end
+
+def fun_l8_n254()
+ fun_l9_n906
+end
+
+def fun_l8_n255()
+ fun_l9_n695
+end
+
+def fun_l8_n256()
+ fun_l9_n835
+end
+
+def fun_l8_n257()
+ fun_l9_n601
+end
+
+def fun_l8_n258()
+ fun_l9_n20
+end
+
+def fun_l8_n259()
+ fun_l9_n806
+end
+
+def fun_l8_n260()
+ fun_l9_n689
+end
+
+def fun_l8_n261()
+ fun_l9_n183
+end
+
+def fun_l8_n262()
+ fun_l9_n444
+end
+
+def fun_l8_n263()
+ fun_l9_n344
+end
+
+def fun_l8_n264()
+ fun_l9_n585
+end
+
+def fun_l8_n265()
+ fun_l9_n109
+end
+
+def fun_l8_n266()
+ fun_l9_n551
+end
+
+def fun_l8_n267()
+ fun_l9_n654
+end
+
+def fun_l8_n268()
+ fun_l9_n573
+end
+
+def fun_l8_n269()
+ fun_l9_n196
+end
+
+def fun_l8_n270()
+ fun_l9_n764
+end
+
+def fun_l8_n271()
+ fun_l9_n349
+end
+
+def fun_l8_n272()
+ fun_l9_n8
+end
+
+def fun_l8_n273()
+ fun_l9_n815
+end
+
+def fun_l8_n274()
+ fun_l9_n343
+end
+
+def fun_l8_n275()
+ fun_l9_n98
+end
+
+def fun_l8_n276()
+ fun_l9_n967
+end
+
+def fun_l8_n277()
+ fun_l9_n368
+end
+
+def fun_l8_n278()
+ fun_l9_n626
+end
+
+def fun_l8_n279()
+ fun_l9_n931
+end
+
+def fun_l8_n280()
+ fun_l9_n723
+end
+
+def fun_l8_n281()
+ fun_l9_n319
+end
+
+def fun_l8_n282()
+ fun_l9_n243
+end
+
+def fun_l8_n283()
+ fun_l9_n683
+end
+
+def fun_l8_n284()
+ fun_l9_n127
+end
+
+def fun_l8_n285()
+ fun_l9_n941
+end
+
+def fun_l8_n286()
+ fun_l9_n263
+end
+
+def fun_l8_n287()
+ fun_l9_n227
+end
+
+def fun_l8_n288()
+ fun_l9_n807
+end
+
+def fun_l8_n289()
+ fun_l9_n486
+end
+
+def fun_l8_n290()
+ fun_l9_n801
+end
+
+def fun_l8_n291()
+ fun_l9_n319
+end
+
+def fun_l8_n292()
+ fun_l9_n687
+end
+
+def fun_l8_n293()
+ fun_l9_n639
+end
+
+def fun_l8_n294()
+ fun_l9_n908
+end
+
+def fun_l8_n295()
+ fun_l9_n522
+end
+
+def fun_l8_n296()
+ fun_l9_n839
+end
+
+def fun_l8_n297()
+ fun_l9_n238
+end
+
+def fun_l8_n298()
+ fun_l9_n66
+end
+
+def fun_l8_n299()
+ fun_l9_n224
+end
+
+def fun_l8_n300()
+ fun_l9_n114
+end
+
+def fun_l8_n301()
+ fun_l9_n237
+end
+
+def fun_l8_n302()
+ fun_l9_n416
+end
+
+def fun_l8_n303()
+ fun_l9_n554
+end
+
+def fun_l8_n304()
+ fun_l9_n613
+end
+
+def fun_l8_n305()
+ fun_l9_n641
+end
+
+def fun_l8_n306()
+ fun_l9_n507
+end
+
+def fun_l8_n307()
+ fun_l9_n367
+end
+
+def fun_l8_n308()
+ fun_l9_n387
+end
+
+def fun_l8_n309()
+ fun_l9_n423
+end
+
+def fun_l8_n310()
+ fun_l9_n981
+end
+
+def fun_l8_n311()
+ fun_l9_n658
+end
+
+def fun_l8_n312()
+ fun_l9_n845
+end
+
+def fun_l8_n313()
+ fun_l9_n944
+end
+
+def fun_l8_n314()
+ fun_l9_n87
+end
+
+def fun_l8_n315()
+ fun_l9_n106
+end
+
+def fun_l8_n316()
+ fun_l9_n461
+end
+
+def fun_l8_n317()
+ fun_l9_n722
+end
+
+def fun_l8_n318()
+ fun_l9_n636
+end
+
+def fun_l8_n319()
+ fun_l9_n420
+end
+
+def fun_l8_n320()
+ fun_l9_n633
+end
+
+def fun_l8_n321()
+ fun_l9_n801
+end
+
+def fun_l8_n322()
+ fun_l9_n754
+end
+
+def fun_l8_n323()
+ fun_l9_n697
+end
+
+def fun_l8_n324()
+ fun_l9_n983
+end
+
+def fun_l8_n325()
+ fun_l9_n244
+end
+
+def fun_l8_n326()
+ fun_l9_n980
+end
+
+def fun_l8_n327()
+ fun_l9_n242
+end
+
+def fun_l8_n328()
+ fun_l9_n798
+end
+
+def fun_l8_n329()
+ fun_l9_n395
+end
+
+def fun_l8_n330()
+ fun_l9_n931
+end
+
+def fun_l8_n331()
+ fun_l9_n827
+end
+
+def fun_l8_n332()
+ fun_l9_n704
+end
+
+def fun_l8_n333()
+ fun_l9_n392
+end
+
+def fun_l8_n334()
+ fun_l9_n288
+end
+
+def fun_l8_n335()
+ fun_l9_n95
+end
+
+def fun_l8_n336()
+ fun_l9_n123
+end
+
+def fun_l8_n337()
+ fun_l9_n238
+end
+
+def fun_l8_n338()
+ fun_l9_n903
+end
+
+def fun_l8_n339()
+ fun_l9_n515
+end
+
+def fun_l8_n340()
+ fun_l9_n368
+end
+
+def fun_l8_n341()
+ fun_l9_n156
+end
+
+def fun_l8_n342()
+ fun_l9_n714
+end
+
+def fun_l8_n343()
+ fun_l9_n435
+end
+
+def fun_l8_n344()
+ fun_l9_n653
+end
+
+def fun_l8_n345()
+ fun_l9_n304
+end
+
+def fun_l8_n346()
+ fun_l9_n880
+end
+
+def fun_l8_n347()
+ fun_l9_n701
+end
+
+def fun_l8_n348()
+ fun_l9_n815
+end
+
+def fun_l8_n349()
+ fun_l9_n180
+end
+
+def fun_l8_n350()
+ fun_l9_n24
+end
+
+def fun_l8_n351()
+ fun_l9_n970
+end
+
+def fun_l8_n352()
+ fun_l9_n829
+end
+
+def fun_l8_n353()
+ fun_l9_n908
+end
+
+def fun_l8_n354()
+ fun_l9_n355
+end
+
+def fun_l8_n355()
+ fun_l9_n844
+end
+
+def fun_l8_n356()
+ fun_l9_n936
+end
+
+def fun_l8_n357()
+ fun_l9_n555
+end
+
+def fun_l8_n358()
+ fun_l9_n936
+end
+
+def fun_l8_n359()
+ fun_l9_n61
+end
+
+def fun_l8_n360()
+ fun_l9_n936
+end
+
+def fun_l8_n361()
+ fun_l9_n244
+end
+
+def fun_l8_n362()
+ fun_l9_n799
+end
+
+def fun_l8_n363()
+ fun_l9_n429
+end
+
+def fun_l8_n364()
+ fun_l9_n676
+end
+
+def fun_l8_n365()
+ fun_l9_n877
+end
+
+def fun_l8_n366()
+ fun_l9_n862
+end
+
+def fun_l8_n367()
+ fun_l9_n937
+end
+
+def fun_l8_n368()
+ fun_l9_n59
+end
+
+def fun_l8_n369()
+ fun_l9_n50
+end
+
+def fun_l8_n370()
+ fun_l9_n550
+end
+
+def fun_l8_n371()
+ fun_l9_n562
+end
+
+def fun_l8_n372()
+ fun_l9_n270
+end
+
+def fun_l8_n373()
+ fun_l9_n774
+end
+
+def fun_l8_n374()
+ fun_l9_n61
+end
+
+def fun_l8_n375()
+ fun_l9_n221
+end
+
+def fun_l8_n376()
+ fun_l9_n483
+end
+
+def fun_l8_n377()
+ fun_l9_n63
+end
+
+def fun_l8_n378()
+ fun_l9_n921
+end
+
+def fun_l8_n379()
+ fun_l9_n34
+end
+
+def fun_l8_n380()
+ fun_l9_n684
+end
+
+def fun_l8_n381()
+ fun_l9_n583
+end
+
+def fun_l8_n382()
+ fun_l9_n918
+end
+
+def fun_l8_n383()
+ fun_l9_n193
+end
+
+def fun_l8_n384()
+ fun_l9_n525
+end
+
+def fun_l8_n385()
+ fun_l9_n789
+end
+
+def fun_l8_n386()
+ fun_l9_n158
+end
+
+def fun_l8_n387()
+ fun_l9_n32
+end
+
+def fun_l8_n388()
+ fun_l9_n741
+end
+
+def fun_l8_n389()
+ fun_l9_n880
+end
+
+def fun_l8_n390()
+ fun_l9_n710
+end
+
+def fun_l8_n391()
+ fun_l9_n837
+end
+
+def fun_l8_n392()
+ fun_l9_n866
+end
+
+def fun_l8_n393()
+ fun_l9_n511
+end
+
+def fun_l8_n394()
+ fun_l9_n794
+end
+
+def fun_l8_n395()
+ fun_l9_n508
+end
+
+def fun_l8_n396()
+ fun_l9_n102
+end
+
+def fun_l8_n397()
+ fun_l9_n24
+end
+
+def fun_l8_n398()
+ fun_l9_n512
+end
+
+def fun_l8_n399()
+ fun_l9_n764
+end
+
+def fun_l8_n400()
+ fun_l9_n100
+end
+
+def fun_l8_n401()
+ fun_l9_n159
+end
+
+def fun_l8_n402()
+ fun_l9_n774
+end
+
+def fun_l8_n403()
+ fun_l9_n382
+end
+
+def fun_l8_n404()
+ fun_l9_n596
+end
+
+def fun_l8_n405()
+ fun_l9_n581
+end
+
+def fun_l8_n406()
+ fun_l9_n818
+end
+
+def fun_l8_n407()
+ fun_l9_n158
+end
+
+def fun_l8_n408()
+ fun_l9_n59
+end
+
+def fun_l8_n409()
+ fun_l9_n392
+end
+
+def fun_l8_n410()
+ fun_l9_n877
+end
+
+def fun_l8_n411()
+ fun_l9_n49
+end
+
+def fun_l8_n412()
+ fun_l9_n379
+end
+
+def fun_l8_n413()
+ fun_l9_n367
+end
+
+def fun_l8_n414()
+ fun_l9_n740
+end
+
+def fun_l8_n415()
+ fun_l9_n880
+end
+
+def fun_l8_n416()
+ fun_l9_n354
+end
+
+def fun_l8_n417()
+ fun_l9_n874
+end
+
+def fun_l8_n418()
+ fun_l9_n769
+end
+
+def fun_l8_n419()
+ fun_l9_n821
+end
+
+def fun_l8_n420()
+ fun_l9_n595
+end
+
+def fun_l8_n421()
+ fun_l9_n471
+end
+
+def fun_l8_n422()
+ fun_l9_n963
+end
+
+def fun_l8_n423()
+ fun_l9_n806
+end
+
+def fun_l8_n424()
+ fun_l9_n863
+end
+
+def fun_l8_n425()
+ fun_l9_n255
+end
+
+def fun_l8_n426()
+ fun_l9_n787
+end
+
+def fun_l8_n427()
+ fun_l9_n369
+end
+
+def fun_l8_n428()
+ fun_l9_n876
+end
+
+def fun_l8_n429()
+ fun_l9_n660
+end
+
+def fun_l8_n430()
+ fun_l9_n678
+end
+
+def fun_l8_n431()
+ fun_l9_n690
+end
+
+def fun_l8_n432()
+ fun_l9_n954
+end
+
+def fun_l8_n433()
+ fun_l9_n250
+end
+
+def fun_l8_n434()
+ fun_l9_n834
+end
+
+def fun_l8_n435()
+ fun_l9_n852
+end
+
+def fun_l8_n436()
+ fun_l9_n987
+end
+
+def fun_l8_n437()
+ fun_l9_n297
+end
+
+def fun_l8_n438()
+ fun_l9_n263
+end
+
+def fun_l8_n439()
+ fun_l9_n120
+end
+
+def fun_l8_n440()
+ fun_l9_n57
+end
+
+def fun_l8_n441()
+ fun_l9_n363
+end
+
+def fun_l8_n442()
+ fun_l9_n458
+end
+
+def fun_l8_n443()
+ fun_l9_n323
+end
+
+def fun_l8_n444()
+ fun_l9_n80
+end
+
+def fun_l8_n445()
+ fun_l9_n88
+end
+
+def fun_l8_n446()
+ fun_l9_n928
+end
+
+def fun_l8_n447()
+ fun_l9_n682
+end
+
+def fun_l8_n448()
+ fun_l9_n740
+end
+
+def fun_l8_n449()
+ fun_l9_n132
+end
+
+def fun_l8_n450()
+ fun_l9_n194
+end
+
+def fun_l8_n451()
+ fun_l9_n694
+end
+
+def fun_l8_n452()
+ fun_l9_n53
+end
+
+def fun_l8_n453()
+ fun_l9_n84
+end
+
+def fun_l8_n454()
+ fun_l9_n801
+end
+
+def fun_l8_n455()
+ fun_l9_n176
+end
+
+def fun_l8_n456()
+ fun_l9_n375
+end
+
+def fun_l8_n457()
+ fun_l9_n161
+end
+
+def fun_l8_n458()
+ fun_l9_n723
+end
+
+def fun_l8_n459()
+ fun_l9_n704
+end
+
+def fun_l8_n460()
+ fun_l9_n335
+end
+
+def fun_l8_n461()
+ fun_l9_n106
+end
+
+def fun_l8_n462()
+ fun_l9_n425
+end
+
+def fun_l8_n463()
+ fun_l9_n972
+end
+
+def fun_l8_n464()
+ fun_l9_n18
+end
+
+def fun_l8_n465()
+ fun_l9_n872
+end
+
+def fun_l8_n466()
+ fun_l9_n453
+end
+
+def fun_l8_n467()
+ fun_l9_n220
+end
+
+def fun_l8_n468()
+ fun_l9_n283
+end
+
+def fun_l8_n469()
+ fun_l9_n48
+end
+
+def fun_l8_n470()
+ fun_l9_n891
+end
+
+def fun_l8_n471()
+ fun_l9_n640
+end
+
+def fun_l8_n472()
+ fun_l9_n842
+end
+
+def fun_l8_n473()
+ fun_l9_n440
+end
+
+def fun_l8_n474()
+ fun_l9_n109
+end
+
+def fun_l8_n475()
+ fun_l9_n910
+end
+
+def fun_l8_n476()
+ fun_l9_n136
+end
+
+def fun_l8_n477()
+ fun_l9_n187
+end
+
+def fun_l8_n478()
+ fun_l9_n279
+end
+
+def fun_l8_n479()
+ fun_l9_n8
+end
+
+def fun_l8_n480()
+ fun_l9_n372
+end
+
+def fun_l8_n481()
+ fun_l9_n504
+end
+
+def fun_l8_n482()
+ fun_l9_n250
+end
+
+def fun_l8_n483()
+ fun_l9_n122
+end
+
+def fun_l8_n484()
+ fun_l9_n435
+end
+
+def fun_l8_n485()
+ fun_l9_n282
+end
+
+def fun_l8_n486()
+ fun_l9_n213
+end
+
+def fun_l8_n487()
+ fun_l9_n256
+end
+
+def fun_l8_n488()
+ fun_l9_n162
+end
+
+def fun_l8_n489()
+ fun_l9_n419
+end
+
+def fun_l8_n490()
+ fun_l9_n286
+end
+
+def fun_l8_n491()
+ fun_l9_n102
+end
+
+def fun_l8_n492()
+ fun_l9_n434
+end
+
+def fun_l8_n493()
+ fun_l9_n782
+end
+
+def fun_l8_n494()
+ fun_l9_n993
+end
+
+def fun_l8_n495()
+ fun_l9_n275
+end
+
+def fun_l8_n496()
+ fun_l9_n873
+end
+
+def fun_l8_n497()
+ fun_l9_n346
+end
+
+def fun_l8_n498()
+ fun_l9_n57
+end
+
+def fun_l8_n499()
+ fun_l9_n77
+end
+
+def fun_l8_n500()
+ fun_l9_n936
+end
+
+def fun_l8_n501()
+ fun_l9_n320
+end
+
+def fun_l8_n502()
+ fun_l9_n921
+end
+
+def fun_l8_n503()
+ fun_l9_n505
+end
+
+def fun_l8_n504()
+ fun_l9_n184
+end
+
+def fun_l8_n505()
+ fun_l9_n476
+end
+
+def fun_l8_n506()
+ fun_l9_n2
+end
+
+def fun_l8_n507()
+ fun_l9_n573
+end
+
+def fun_l8_n508()
+ fun_l9_n150
+end
+
+def fun_l8_n509()
+ fun_l9_n637
+end
+
+def fun_l8_n510()
+ fun_l9_n435
+end
+
+def fun_l8_n511()
+ fun_l9_n361
+end
+
+def fun_l8_n512()
+ fun_l9_n808
+end
+
+def fun_l8_n513()
+ fun_l9_n129
+end
+
+def fun_l8_n514()
+ fun_l9_n57
+end
+
+def fun_l8_n515()
+ fun_l9_n646
+end
+
+def fun_l8_n516()
+ fun_l9_n679
+end
+
+def fun_l8_n517()
+ fun_l9_n256
+end
+
+def fun_l8_n518()
+ fun_l9_n672
+end
+
+def fun_l8_n519()
+ fun_l9_n406
+end
+
+def fun_l8_n520()
+ fun_l9_n59
+end
+
+def fun_l8_n521()
+ fun_l9_n215
+end
+
+def fun_l8_n522()
+ fun_l9_n435
+end
+
+def fun_l8_n523()
+ fun_l9_n693
+end
+
+def fun_l8_n524()
+ fun_l9_n863
+end
+
+def fun_l8_n525()
+ fun_l9_n79
+end
+
+def fun_l8_n526()
+ fun_l9_n527
+end
+
+def fun_l8_n527()
+ fun_l9_n711
+end
+
+def fun_l8_n528()
+ fun_l9_n51
+end
+
+def fun_l8_n529()
+ fun_l9_n712
+end
+
+def fun_l8_n530()
+ fun_l9_n84
+end
+
+def fun_l8_n531()
+ fun_l9_n854
+end
+
+def fun_l8_n532()
+ fun_l9_n43
+end
+
+def fun_l8_n533()
+ fun_l9_n354
+end
+
+def fun_l8_n534()
+ fun_l9_n74
+end
+
+def fun_l8_n535()
+ fun_l9_n736
+end
+
+def fun_l8_n536()
+ fun_l9_n573
+end
+
+def fun_l8_n537()
+ fun_l9_n56
+end
+
+def fun_l8_n538()
+ fun_l9_n818
+end
+
+def fun_l8_n539()
+ fun_l9_n861
+end
+
+def fun_l8_n540()
+ fun_l9_n531
+end
+
+def fun_l8_n541()
+ fun_l9_n204
+end
+
+def fun_l8_n542()
+ fun_l9_n451
+end
+
+def fun_l8_n543()
+ fun_l9_n138
+end
+
+def fun_l8_n544()
+ fun_l9_n888
+end
+
+def fun_l8_n545()
+ fun_l9_n846
+end
+
+def fun_l8_n546()
+ fun_l9_n873
+end
+
+def fun_l8_n547()
+ fun_l9_n467
+end
+
+def fun_l8_n548()
+ fun_l9_n210
+end
+
+def fun_l8_n549()
+ fun_l9_n773
+end
+
+def fun_l8_n550()
+ fun_l9_n546
+end
+
+def fun_l8_n551()
+ fun_l9_n768
+end
+
+def fun_l8_n552()
+ fun_l9_n115
+end
+
+def fun_l8_n553()
+ fun_l9_n20
+end
+
+def fun_l8_n554()
+ fun_l9_n891
+end
+
+def fun_l8_n555()
+ fun_l9_n924
+end
+
+def fun_l8_n556()
+ fun_l9_n192
+end
+
+def fun_l8_n557()
+ fun_l9_n581
+end
+
+def fun_l8_n558()
+ fun_l9_n517
+end
+
+def fun_l8_n559()
+ fun_l9_n533
+end
+
+def fun_l8_n560()
+ fun_l9_n930
+end
+
+def fun_l8_n561()
+ fun_l9_n321
+end
+
+def fun_l8_n562()
+ fun_l9_n648
+end
+
+def fun_l8_n563()
+ fun_l9_n963
+end
+
+def fun_l8_n564()
+ fun_l9_n406
+end
+
+def fun_l8_n565()
+ fun_l9_n823
+end
+
+def fun_l8_n566()
+ fun_l9_n394
+end
+
+def fun_l8_n567()
+ fun_l9_n442
+end
+
+def fun_l8_n568()
+ fun_l9_n851
+end
+
+def fun_l8_n569()
+ fun_l9_n652
+end
+
+def fun_l8_n570()
+ fun_l9_n165
+end
+
+def fun_l8_n571()
+ fun_l9_n213
+end
+
+def fun_l8_n572()
+ fun_l9_n633
+end
+
+def fun_l8_n573()
+ fun_l9_n243
+end
+
+def fun_l8_n574()
+ fun_l9_n232
+end
+
+def fun_l8_n575()
+ fun_l9_n76
+end
+
+def fun_l8_n576()
+ fun_l9_n547
+end
+
+def fun_l8_n577()
+ fun_l9_n628
+end
+
+def fun_l8_n578()
+ fun_l9_n20
+end
+
+def fun_l8_n579()
+ fun_l9_n525
+end
+
+def fun_l8_n580()
+ fun_l9_n788
+end
+
+def fun_l8_n581()
+ fun_l9_n326
+end
+
+def fun_l8_n582()
+ fun_l9_n206
+end
+
+def fun_l8_n583()
+ fun_l9_n709
+end
+
+def fun_l8_n584()
+ fun_l9_n185
+end
+
+def fun_l8_n585()
+ fun_l9_n106
+end
+
+def fun_l8_n586()
+ fun_l9_n180
+end
+
+def fun_l8_n587()
+ fun_l9_n304
+end
+
+def fun_l8_n588()
+ fun_l9_n689
+end
+
+def fun_l8_n589()
+ fun_l9_n124
+end
+
+def fun_l8_n590()
+ fun_l9_n91
+end
+
+def fun_l8_n591()
+ fun_l9_n856
+end
+
+def fun_l8_n592()
+ fun_l9_n16
+end
+
+def fun_l8_n593()
+ fun_l9_n875
+end
+
+def fun_l8_n594()
+ fun_l9_n407
+end
+
+def fun_l8_n595()
+ fun_l9_n386
+end
+
+def fun_l8_n596()
+ fun_l9_n269
+end
+
+def fun_l8_n597()
+ fun_l9_n254
+end
+
+def fun_l8_n598()
+ fun_l9_n452
+end
+
+def fun_l8_n599()
+ fun_l9_n450
+end
+
+def fun_l8_n600()
+ fun_l9_n268
+end
+
+def fun_l8_n601()
+ fun_l9_n965
+end
+
+def fun_l8_n602()
+ fun_l9_n190
+end
+
+def fun_l8_n603()
+ fun_l9_n811
+end
+
+def fun_l8_n604()
+ fun_l9_n802
+end
+
+def fun_l8_n605()
+ fun_l9_n732
+end
+
+def fun_l8_n606()
+ fun_l9_n997
+end
+
+def fun_l8_n607()
+ fun_l9_n929
+end
+
+def fun_l8_n608()
+ fun_l9_n18
+end
+
+def fun_l8_n609()
+ fun_l9_n260
+end
+
+def fun_l8_n610()
+ fun_l9_n17
+end
+
+def fun_l8_n611()
+ fun_l9_n324
+end
+
+def fun_l8_n612()
+ fun_l9_n473
+end
+
+def fun_l8_n613()
+ fun_l9_n266
+end
+
+def fun_l8_n614()
+ fun_l9_n753
+end
+
+def fun_l8_n615()
+ fun_l9_n929
+end
+
+def fun_l8_n616()
+ fun_l9_n374
+end
+
+def fun_l8_n617()
+ fun_l9_n254
+end
+
+def fun_l8_n618()
+ fun_l9_n520
+end
+
+def fun_l8_n619()
+ fun_l9_n561
+end
+
+def fun_l8_n620()
+ fun_l9_n309
+end
+
+def fun_l8_n621()
+ fun_l9_n875
+end
+
+def fun_l8_n622()
+ fun_l9_n635
+end
+
+def fun_l8_n623()
+ fun_l9_n138
+end
+
+def fun_l8_n624()
+ fun_l9_n554
+end
+
+def fun_l8_n625()
+ fun_l9_n903
+end
+
+def fun_l8_n626()
+ fun_l9_n771
+end
+
+def fun_l8_n627()
+ fun_l9_n358
+end
+
+def fun_l8_n628()
+ fun_l9_n238
+end
+
+def fun_l8_n629()
+ fun_l9_n896
+end
+
+def fun_l8_n630()
+ fun_l9_n675
+end
+
+def fun_l8_n631()
+ fun_l9_n817
+end
+
+def fun_l8_n632()
+ fun_l9_n530
+end
+
+def fun_l8_n633()
+ fun_l9_n262
+end
+
+def fun_l8_n634()
+ fun_l9_n221
+end
+
+def fun_l8_n635()
+ fun_l9_n590
+end
+
+def fun_l8_n636()
+ fun_l9_n536
+end
+
+def fun_l8_n637()
+ fun_l9_n910
+end
+
+def fun_l8_n638()
+ fun_l9_n383
+end
+
+def fun_l8_n639()
+ fun_l9_n977
+end
+
+def fun_l8_n640()
+ fun_l9_n172
+end
+
+def fun_l8_n641()
+ fun_l9_n428
+end
+
+def fun_l8_n642()
+ fun_l9_n278
+end
+
+def fun_l8_n643()
+ fun_l9_n77
+end
+
+def fun_l8_n644()
+ fun_l9_n992
+end
+
+def fun_l8_n645()
+ fun_l9_n783
+end
+
+def fun_l8_n646()
+ fun_l9_n285
+end
+
+def fun_l8_n647()
+ fun_l9_n589
+end
+
+def fun_l8_n648()
+ fun_l9_n280
+end
+
+def fun_l8_n649()
+ fun_l9_n626
+end
+
+def fun_l8_n650()
+ fun_l9_n172
+end
+
+def fun_l8_n651()
+ fun_l9_n389
+end
+
+def fun_l8_n652()
+ fun_l9_n53
+end
+
+def fun_l8_n653()
+ fun_l9_n676
+end
+
+def fun_l8_n654()
+ fun_l9_n499
+end
+
+def fun_l8_n655()
+ fun_l9_n270
+end
+
+def fun_l8_n656()
+ fun_l9_n976
+end
+
+def fun_l8_n657()
+ fun_l9_n681
+end
+
+def fun_l8_n658()
+ fun_l9_n960
+end
+
+def fun_l8_n659()
+ fun_l9_n779
+end
+
+def fun_l8_n660()
+ fun_l9_n953
+end
+
+def fun_l8_n661()
+ fun_l9_n856
+end
+
+def fun_l8_n662()
+ fun_l9_n672
+end
+
+def fun_l8_n663()
+ fun_l9_n877
+end
+
+def fun_l8_n664()
+ fun_l9_n667
+end
+
+def fun_l8_n665()
+ fun_l9_n593
+end
+
+def fun_l8_n666()
+ fun_l9_n115
+end
+
+def fun_l8_n667()
+ fun_l9_n117
+end
+
+def fun_l8_n668()
+ fun_l9_n582
+end
+
+def fun_l8_n669()
+ fun_l9_n695
+end
+
+def fun_l8_n670()
+ fun_l9_n119
+end
+
+def fun_l8_n671()
+ fun_l9_n521
+end
+
+def fun_l8_n672()
+ fun_l9_n291
+end
+
+def fun_l8_n673()
+ fun_l9_n630
+end
+
+def fun_l8_n674()
+ fun_l9_n8
+end
+
+def fun_l8_n675()
+ fun_l9_n331
+end
+
+def fun_l8_n676()
+ fun_l9_n32
+end
+
+def fun_l8_n677()
+ fun_l9_n494
+end
+
+def fun_l8_n678()
+ fun_l9_n744
+end
+
+def fun_l8_n679()
+ fun_l9_n220
+end
+
+def fun_l8_n680()
+ fun_l9_n793
+end
+
+def fun_l8_n681()
+ fun_l9_n592
+end
+
+def fun_l8_n682()
+ fun_l9_n40
+end
+
+def fun_l8_n683()
+ fun_l9_n442
+end
+
+def fun_l8_n684()
+ fun_l9_n606
+end
+
+def fun_l8_n685()
+ fun_l9_n592
+end
+
+def fun_l8_n686()
+ fun_l9_n264
+end
+
+def fun_l8_n687()
+ fun_l9_n570
+end
+
+def fun_l8_n688()
+ fun_l9_n69
+end
+
+def fun_l8_n689()
+ fun_l9_n137
+end
+
+def fun_l8_n690()
+ fun_l9_n712
+end
+
+def fun_l8_n691()
+ fun_l9_n593
+end
+
+def fun_l8_n692()
+ fun_l9_n481
+end
+
+def fun_l8_n693()
+ fun_l9_n669
+end
+
+def fun_l8_n694()
+ fun_l9_n504
+end
+
+def fun_l8_n695()
+ fun_l9_n732
+end
+
+def fun_l8_n696()
+ fun_l9_n771
+end
+
+def fun_l8_n697()
+ fun_l9_n258
+end
+
+def fun_l8_n698()
+ fun_l9_n756
+end
+
+def fun_l8_n699()
+ fun_l9_n61
+end
+
+def fun_l8_n700()
+ fun_l9_n257
+end
+
+def fun_l8_n701()
+ fun_l9_n788
+end
+
+def fun_l8_n702()
+ fun_l9_n142
+end
+
+def fun_l8_n703()
+ fun_l9_n380
+end
+
+def fun_l8_n704()
+ fun_l9_n698
+end
+
+def fun_l8_n705()
+ fun_l9_n482
+end
+
+def fun_l8_n706()
+ fun_l9_n515
+end
+
+def fun_l8_n707()
+ fun_l9_n253
+end
+
+def fun_l8_n708()
+ fun_l9_n323
+end
+
+def fun_l8_n709()
+ fun_l9_n524
+end
+
+def fun_l8_n710()
+ fun_l9_n681
+end
+
+def fun_l8_n711()
+ fun_l9_n473
+end
+
+def fun_l8_n712()
+ fun_l9_n186
+end
+
+def fun_l8_n713()
+ fun_l9_n117
+end
+
+def fun_l8_n714()
+ fun_l9_n682
+end
+
+def fun_l8_n715()
+ fun_l9_n475
+end
+
+def fun_l8_n716()
+ fun_l9_n190
+end
+
+def fun_l8_n717()
+ fun_l9_n56
+end
+
+def fun_l8_n718()
+ fun_l9_n492
+end
+
+def fun_l8_n719()
+ fun_l9_n561
+end
+
+def fun_l8_n720()
+ fun_l9_n130
+end
+
+def fun_l8_n721()
+ fun_l9_n296
+end
+
+def fun_l8_n722()
+ fun_l9_n425
+end
+
+def fun_l8_n723()
+ fun_l9_n248
+end
+
+def fun_l8_n724()
+ fun_l9_n523
+end
+
+def fun_l8_n725()
+ fun_l9_n730
+end
+
+def fun_l8_n726()
+ fun_l9_n231
+end
+
+def fun_l8_n727()
+ fun_l9_n953
+end
+
+def fun_l8_n728()
+ fun_l9_n511
+end
+
+def fun_l8_n729()
+ fun_l9_n78
+end
+
+def fun_l8_n730()
+ fun_l9_n284
+end
+
+def fun_l8_n731()
+ fun_l9_n450
+end
+
+def fun_l8_n732()
+ fun_l9_n149
+end
+
+def fun_l8_n733()
+ fun_l9_n396
+end
+
+def fun_l8_n734()
+ fun_l9_n202
+end
+
+def fun_l8_n735()
+ fun_l9_n250
+end
+
+def fun_l8_n736()
+ fun_l9_n459
+end
+
+def fun_l8_n737()
+ fun_l9_n869
+end
+
+def fun_l8_n738()
+ fun_l9_n454
+end
+
+def fun_l8_n739()
+ fun_l9_n322
+end
+
+def fun_l8_n740()
+ fun_l9_n190
+end
+
+def fun_l8_n741()
+ fun_l9_n997
+end
+
+def fun_l8_n742()
+ fun_l9_n983
+end
+
+def fun_l8_n743()
+ fun_l9_n191
+end
+
+def fun_l8_n744()
+ fun_l9_n773
+end
+
+def fun_l8_n745()
+ fun_l9_n261
+end
+
+def fun_l8_n746()
+ fun_l9_n442
+end
+
+def fun_l8_n747()
+ fun_l9_n297
+end
+
+def fun_l8_n748()
+ fun_l9_n103
+end
+
+def fun_l8_n749()
+ fun_l9_n981
+end
+
+def fun_l8_n750()
+ fun_l9_n143
+end
+
+def fun_l8_n751()
+ fun_l9_n499
+end
+
+def fun_l8_n752()
+ fun_l9_n129
+end
+
+def fun_l8_n753()
+ fun_l9_n357
+end
+
+def fun_l8_n754()
+ fun_l9_n273
+end
+
+def fun_l8_n755()
+ fun_l9_n217
+end
+
+def fun_l8_n756()
+ fun_l9_n383
+end
+
+def fun_l8_n757()
+ fun_l9_n965
+end
+
+def fun_l8_n758()
+ fun_l9_n305
+end
+
+def fun_l8_n759()
+ fun_l9_n450
+end
+
+def fun_l8_n760()
+ fun_l9_n450
+end
+
+def fun_l8_n761()
+ fun_l9_n545
+end
+
+def fun_l8_n762()
+ fun_l9_n236
+end
+
+def fun_l8_n763()
+ fun_l9_n329
+end
+
+def fun_l8_n764()
+ fun_l9_n536
+end
+
+def fun_l8_n765()
+ fun_l9_n56
+end
+
+def fun_l8_n766()
+ fun_l9_n214
+end
+
+def fun_l8_n767()
+ fun_l9_n227
+end
+
+def fun_l8_n768()
+ fun_l9_n585
+end
+
+def fun_l8_n769()
+ fun_l9_n368
+end
+
+def fun_l8_n770()
+ fun_l9_n997
+end
+
+def fun_l8_n771()
+ fun_l9_n895
+end
+
+def fun_l8_n772()
+ fun_l9_n601
+end
+
+def fun_l8_n773()
+ fun_l9_n975
+end
+
+def fun_l8_n774()
+ fun_l9_n687
+end
+
+def fun_l8_n775()
+ fun_l9_n498
+end
+
+def fun_l8_n776()
+ fun_l9_n665
+end
+
+def fun_l8_n777()
+ fun_l9_n915
+end
+
+def fun_l8_n778()
+ fun_l9_n823
+end
+
+def fun_l8_n779()
+ fun_l9_n479
+end
+
+def fun_l8_n780()
+ fun_l9_n632
+end
+
+def fun_l8_n781()
+ fun_l9_n793
+end
+
+def fun_l8_n782()
+ fun_l9_n698
+end
+
+def fun_l8_n783()
+ fun_l9_n940
+end
+
+def fun_l8_n784()
+ fun_l9_n982
+end
+
+def fun_l8_n785()
+ fun_l9_n983
+end
+
+def fun_l8_n786()
+ fun_l9_n711
+end
+
+def fun_l8_n787()
+ fun_l9_n61
+end
+
+def fun_l8_n788()
+ fun_l9_n347
+end
+
+def fun_l8_n789()
+ fun_l9_n856
+end
+
+def fun_l8_n790()
+ fun_l9_n363
+end
+
+def fun_l8_n791()
+ fun_l9_n995
+end
+
+def fun_l8_n792()
+ fun_l9_n296
+end
+
+def fun_l8_n793()
+ fun_l9_n497
+end
+
+def fun_l8_n794()
+ fun_l9_n915
+end
+
+def fun_l8_n795()
+ fun_l9_n899
+end
+
+def fun_l8_n796()
+ fun_l9_n388
+end
+
+def fun_l8_n797()
+ fun_l9_n538
+end
+
+def fun_l8_n798()
+ fun_l9_n247
+end
+
+def fun_l8_n799()
+ fun_l9_n426
+end
+
+def fun_l8_n800()
+ fun_l9_n127
+end
+
+def fun_l8_n801()
+ fun_l9_n945
+end
+
+def fun_l8_n802()
+ fun_l9_n656
+end
+
+def fun_l8_n803()
+ fun_l9_n900
+end
+
+def fun_l8_n804()
+ fun_l9_n262
+end
+
+def fun_l8_n805()
+ fun_l9_n371
+end
+
+def fun_l8_n806()
+ fun_l9_n876
+end
+
+def fun_l8_n807()
+ fun_l9_n601
+end
+
+def fun_l8_n808()
+ fun_l9_n271
+end
+
+def fun_l8_n809()
+ fun_l9_n837
+end
+
+def fun_l8_n810()
+ fun_l9_n969
+end
+
+def fun_l8_n811()
+ fun_l9_n287
+end
+
+def fun_l8_n812()
+ fun_l9_n224
+end
+
+def fun_l8_n813()
+ fun_l9_n129
+end
+
+def fun_l8_n814()
+ fun_l9_n938
+end
+
+def fun_l8_n815()
+ fun_l9_n198
+end
+
+def fun_l8_n816()
+ fun_l9_n33
+end
+
+def fun_l8_n817()
+ fun_l9_n535
+end
+
+def fun_l8_n818()
+ fun_l9_n705
+end
+
+def fun_l8_n819()
+ fun_l9_n19
+end
+
+def fun_l8_n820()
+ fun_l9_n434
+end
+
+def fun_l8_n821()
+ fun_l9_n430
+end
+
+def fun_l8_n822()
+ fun_l9_n501
+end
+
+def fun_l8_n823()
+ fun_l9_n349
+end
+
+def fun_l8_n824()
+ fun_l9_n970
+end
+
+def fun_l8_n825()
+ fun_l9_n467
+end
+
+def fun_l8_n826()
+ fun_l9_n218
+end
+
+def fun_l8_n827()
+ fun_l9_n163
+end
+
+def fun_l8_n828()
+ fun_l9_n752
+end
+
+def fun_l8_n829()
+ fun_l9_n34
+end
+
+def fun_l8_n830()
+ fun_l9_n977
+end
+
+def fun_l8_n831()
+ fun_l9_n517
+end
+
+def fun_l8_n832()
+ fun_l9_n740
+end
+
+def fun_l8_n833()
+ fun_l9_n7
+end
+
+def fun_l8_n834()
+ fun_l9_n117
+end
+
+def fun_l8_n835()
+ fun_l9_n879
+end
+
+def fun_l8_n836()
+ fun_l9_n916
+end
+
+def fun_l8_n837()
+ fun_l9_n895
+end
+
+def fun_l8_n838()
+ fun_l9_n831
+end
+
+def fun_l8_n839()
+ fun_l9_n559
+end
+
+def fun_l8_n840()
+ fun_l9_n419
+end
+
+def fun_l8_n841()
+ fun_l9_n994
+end
+
+def fun_l8_n842()
+ fun_l9_n893
+end
+
+def fun_l8_n843()
+ fun_l9_n664
+end
+
+def fun_l8_n844()
+ fun_l9_n611
+end
+
+def fun_l8_n845()
+ fun_l9_n988
+end
+
+def fun_l8_n846()
+ fun_l9_n501
+end
+
+def fun_l8_n847()
+ fun_l9_n97
+end
+
+def fun_l8_n848()
+ fun_l9_n348
+end
+
+def fun_l8_n849()
+ fun_l9_n23
+end
+
+def fun_l8_n850()
+ fun_l9_n164
+end
+
+def fun_l8_n851()
+ fun_l9_n751
+end
+
+def fun_l8_n852()
+ fun_l9_n544
+end
+
+def fun_l8_n853()
+ fun_l9_n944
+end
+
+def fun_l8_n854()
+ fun_l9_n25
+end
+
+def fun_l8_n855()
+ fun_l9_n125
+end
+
+def fun_l8_n856()
+ fun_l9_n720
+end
+
+def fun_l8_n857()
+ fun_l9_n298
+end
+
+def fun_l8_n858()
+ fun_l9_n7
+end
+
+def fun_l8_n859()
+ fun_l9_n885
+end
+
+def fun_l8_n860()
+ fun_l9_n785
+end
+
+def fun_l8_n861()
+ fun_l9_n653
+end
+
+def fun_l8_n862()
+ fun_l9_n206
+end
+
+def fun_l8_n863()
+ fun_l9_n460
+end
+
+def fun_l8_n864()
+ fun_l9_n361
+end
+
+def fun_l8_n865()
+ fun_l9_n782
+end
+
+def fun_l8_n866()
+ fun_l9_n965
+end
+
+def fun_l8_n867()
+ fun_l9_n653
+end
+
+def fun_l8_n868()
+ fun_l9_n757
+end
+
+def fun_l8_n869()
+ fun_l9_n892
+end
+
+def fun_l8_n870()
+ fun_l9_n939
+end
+
+def fun_l8_n871()
+ fun_l9_n105
+end
+
+def fun_l8_n872()
+ fun_l9_n334
+end
+
+def fun_l8_n873()
+ fun_l9_n120
+end
+
+def fun_l8_n874()
+ fun_l9_n530
+end
+
+def fun_l8_n875()
+ fun_l9_n777
+end
+
+def fun_l8_n876()
+ fun_l9_n546
+end
+
+def fun_l8_n877()
+ fun_l9_n235
+end
+
+def fun_l8_n878()
+ fun_l9_n647
+end
+
+def fun_l8_n879()
+ fun_l9_n813
+end
+
+def fun_l8_n880()
+ fun_l9_n756
+end
+
+def fun_l8_n881()
+ fun_l9_n202
+end
+
+def fun_l8_n882()
+ fun_l9_n58
+end
+
+def fun_l8_n883()
+ fun_l9_n895
+end
+
+def fun_l8_n884()
+ fun_l9_n556
+end
+
+def fun_l8_n885()
+ fun_l9_n974
+end
+
+def fun_l8_n886()
+ fun_l9_n671
+end
+
+def fun_l8_n887()
+ fun_l9_n700
+end
+
+def fun_l8_n888()
+ fun_l9_n788
+end
+
+def fun_l8_n889()
+ fun_l9_n568
+end
+
+def fun_l8_n890()
+ fun_l9_n431
+end
+
+def fun_l8_n891()
+ fun_l9_n517
+end
+
+def fun_l8_n892()
+ fun_l9_n330
+end
+
+def fun_l8_n893()
+ fun_l9_n573
+end
+
+def fun_l8_n894()
+ fun_l9_n510
+end
+
+def fun_l8_n895()
+ fun_l9_n784
+end
+
+def fun_l8_n896()
+ fun_l9_n75
+end
+
+def fun_l8_n897()
+ fun_l9_n314
+end
+
+def fun_l8_n898()
+ fun_l9_n703
+end
+
+def fun_l8_n899()
+ fun_l9_n740
+end
+
+def fun_l8_n900()
+ fun_l9_n806
+end
+
+def fun_l8_n901()
+ fun_l9_n208
+end
+
+def fun_l8_n902()
+ fun_l9_n678
+end
+
+def fun_l8_n903()
+ fun_l9_n443
+end
+
+def fun_l8_n904()
+ fun_l9_n285
+end
+
+def fun_l8_n905()
+ fun_l9_n840
+end
+
+def fun_l8_n906()
+ fun_l9_n896
+end
+
+def fun_l8_n907()
+ fun_l9_n253
+end
+
+def fun_l8_n908()
+ fun_l9_n786
+end
+
+def fun_l8_n909()
+ fun_l9_n364
+end
+
+def fun_l8_n910()
+ fun_l9_n314
+end
+
+def fun_l8_n911()
+ fun_l9_n178
+end
+
+def fun_l8_n912()
+ fun_l9_n14
+end
+
+def fun_l8_n913()
+ fun_l9_n594
+end
+
+def fun_l8_n914()
+ fun_l9_n524
+end
+
+def fun_l8_n915()
+ fun_l9_n449
+end
+
+def fun_l8_n916()
+ fun_l9_n970
+end
+
+def fun_l8_n917()
+ fun_l9_n418
+end
+
+def fun_l8_n918()
+ fun_l9_n978
+end
+
+def fun_l8_n919()
+ fun_l9_n266
+end
+
+def fun_l8_n920()
+ fun_l9_n384
+end
+
+def fun_l8_n921()
+ fun_l9_n806
+end
+
+def fun_l8_n922()
+ fun_l9_n99
+end
+
+def fun_l8_n923()
+ fun_l9_n116
+end
+
+def fun_l8_n924()
+ fun_l9_n494
+end
+
+def fun_l8_n925()
+ fun_l9_n891
+end
+
+def fun_l8_n926()
+ fun_l9_n49
+end
+
+def fun_l8_n927()
+ fun_l9_n87
+end
+
+def fun_l8_n928()
+ fun_l9_n502
+end
+
+def fun_l8_n929()
+ fun_l9_n528
+end
+
+def fun_l8_n930()
+ fun_l9_n403
+end
+
+def fun_l8_n931()
+ fun_l9_n385
+end
+
+def fun_l8_n932()
+ fun_l9_n965
+end
+
+def fun_l8_n933()
+ fun_l9_n658
+end
+
+def fun_l8_n934()
+ fun_l9_n316
+end
+
+def fun_l8_n935()
+ fun_l9_n441
+end
+
+def fun_l8_n936()
+ fun_l9_n453
+end
+
+def fun_l8_n937()
+ fun_l9_n957
+end
+
+def fun_l8_n938()
+ fun_l9_n360
+end
+
+def fun_l8_n939()
+ fun_l9_n150
+end
+
+def fun_l8_n940()
+ fun_l9_n934
+end
+
+def fun_l8_n941()
+ fun_l9_n676
+end
+
+def fun_l8_n942()
+ fun_l9_n943
+end
+
+def fun_l8_n943()
+ fun_l9_n824
+end
+
+def fun_l8_n944()
+ fun_l9_n7
+end
+
+def fun_l8_n945()
+ fun_l9_n640
+end
+
+def fun_l8_n946()
+ fun_l9_n18
+end
+
+def fun_l8_n947()
+ fun_l9_n483
+end
+
+def fun_l8_n948()
+ fun_l9_n495
+end
+
+def fun_l8_n949()
+ fun_l9_n711
+end
+
+def fun_l8_n950()
+ fun_l9_n382
+end
+
+def fun_l8_n951()
+ fun_l9_n479
+end
+
+def fun_l8_n952()
+ fun_l9_n920
+end
+
+def fun_l8_n953()
+ fun_l9_n477
+end
+
+def fun_l8_n954()
+ fun_l9_n411
+end
+
+def fun_l8_n955()
+ fun_l9_n801
+end
+
+def fun_l8_n956()
+ fun_l9_n630
+end
+
+def fun_l8_n957()
+ fun_l9_n172
+end
+
+def fun_l8_n958()
+ fun_l9_n104
+end
+
+def fun_l8_n959()
+ fun_l9_n197
+end
+
+def fun_l8_n960()
+ fun_l9_n231
+end
+
+def fun_l8_n961()
+ fun_l9_n769
+end
+
+def fun_l8_n962()
+ fun_l9_n293
+end
+
+def fun_l8_n963()
+ fun_l9_n580
+end
+
+def fun_l8_n964()
+ fun_l9_n345
+end
+
+def fun_l8_n965()
+ fun_l9_n199
+end
+
+def fun_l8_n966()
+ fun_l9_n899
+end
+
+def fun_l8_n967()
+ fun_l9_n68
+end
+
+def fun_l8_n968()
+ fun_l9_n954
+end
+
+def fun_l8_n969()
+ fun_l9_n205
+end
+
+def fun_l8_n970()
+ fun_l9_n697
+end
+
+def fun_l8_n971()
+ fun_l9_n445
+end
+
+def fun_l8_n972()
+ fun_l9_n294
+end
+
+def fun_l8_n973()
+ fun_l9_n96
+end
+
+def fun_l8_n974()
+ fun_l9_n798
+end
+
+def fun_l8_n975()
+ fun_l9_n509
+end
+
+def fun_l8_n976()
+ fun_l9_n918
+end
+
+def fun_l8_n977()
+ fun_l9_n624
+end
+
+def fun_l8_n978()
+ fun_l9_n798
+end
+
+def fun_l8_n979()
+ fun_l9_n267
+end
+
+def fun_l8_n980()
+ fun_l9_n977
+end
+
+def fun_l8_n981()
+ fun_l9_n128
+end
+
+def fun_l8_n982()
+ fun_l9_n759
+end
+
+def fun_l8_n983()
+ fun_l9_n999
+end
+
+def fun_l8_n984()
+ fun_l9_n908
+end
+
+def fun_l8_n985()
+ fun_l9_n713
+end
+
+def fun_l8_n986()
+ fun_l9_n423
+end
+
+def fun_l8_n987()
+ fun_l9_n789
+end
+
+def fun_l8_n988()
+ fun_l9_n342
+end
+
+def fun_l8_n989()
+ fun_l9_n963
+end
+
+def fun_l8_n990()
+ fun_l9_n393
+end
+
+def fun_l8_n991()
+ fun_l9_n446
+end
+
+def fun_l8_n992()
+ fun_l9_n62
+end
+
+def fun_l8_n993()
+ fun_l9_n567
+end
+
+def fun_l8_n994()
+ fun_l9_n99
+end
+
+def fun_l8_n995()
+ fun_l9_n6
+end
+
+def fun_l8_n996()
+ fun_l9_n582
+end
+
+def fun_l8_n997()
+ fun_l9_n714
+end
+
+def fun_l8_n998()
+ fun_l9_n440
+end
+
+def fun_l8_n999()
+ fun_l9_n89
+end
+
+def fun_l9_n0()
+ fun_l10_n441
+end
+
+def fun_l9_n1()
+ fun_l10_n18
+end
+
+def fun_l9_n2()
+ fun_l10_n406
+end
+
+def fun_l9_n3()
+ fun_l10_n623
+end
+
+def fun_l9_n4()
+ fun_l10_n323
+end
+
+def fun_l9_n5()
+ fun_l10_n702
+end
+
+def fun_l9_n6()
+ fun_l10_n46
+end
+
+def fun_l9_n7()
+ fun_l10_n519
+end
+
+def fun_l9_n8()
+ fun_l10_n572
+end
+
+def fun_l9_n9()
+ fun_l10_n670
+end
+
+def fun_l9_n10()
+ fun_l10_n917
+end
+
+def fun_l9_n11()
+ fun_l10_n160
+end
+
+def fun_l9_n12()
+ fun_l10_n153
+end
+
+def fun_l9_n13()
+ fun_l10_n73
+end
+
+def fun_l9_n14()
+ fun_l10_n775
+end
+
+def fun_l9_n15()
+ fun_l10_n97
+end
+
+def fun_l9_n16()
+ fun_l10_n307
+end
+
+def fun_l9_n17()
+ fun_l10_n630
+end
+
+def fun_l9_n18()
+ fun_l10_n446
+end
+
+def fun_l9_n19()
+ fun_l10_n798
+end
+
+def fun_l9_n20()
+ fun_l10_n633
+end
+
+def fun_l9_n21()
+ fun_l10_n83
+end
+
+def fun_l9_n22()
+ fun_l10_n373
+end
+
+def fun_l9_n23()
+ fun_l10_n777
+end
+
+def fun_l9_n24()
+ fun_l10_n47
+end
+
+def fun_l9_n25()
+ fun_l10_n533
+end
+
+def fun_l9_n26()
+ fun_l10_n780
+end
+
+def fun_l9_n27()
+ fun_l10_n220
+end
+
+def fun_l9_n28()
+ fun_l10_n777
+end
+
+def fun_l9_n29()
+ fun_l10_n71
+end
+
+def fun_l9_n30()
+ fun_l10_n590
+end
+
+def fun_l9_n31()
+ fun_l10_n544
+end
+
+def fun_l9_n32()
+ fun_l10_n173
+end
+
+def fun_l9_n33()
+ fun_l10_n464
+end
+
+def fun_l9_n34()
+ fun_l10_n267
+end
+
+def fun_l9_n35()
+ fun_l10_n152
+end
+
+def fun_l9_n36()
+ fun_l10_n330
+end
+
+def fun_l9_n37()
+ fun_l10_n267
+end
+
+def fun_l9_n38()
+ fun_l10_n499
+end
+
+def fun_l9_n39()
+ fun_l10_n213
+end
+
+def fun_l9_n40()
+ fun_l10_n825
+end
+
+def fun_l9_n41()
+ fun_l10_n567
+end
+
+def fun_l9_n42()
+ fun_l10_n112
+end
+
+def fun_l9_n43()
+ fun_l10_n483
+end
+
+def fun_l9_n44()
+ fun_l10_n52
+end
+
+def fun_l9_n45()
+ fun_l10_n564
+end
+
+def fun_l9_n46()
+ fun_l10_n667
+end
+
+def fun_l9_n47()
+ fun_l10_n965
+end
+
+def fun_l9_n48()
+ fun_l10_n49
+end
+
+def fun_l9_n49()
+ fun_l10_n206
+end
+
+def fun_l9_n50()
+ fun_l10_n904
+end
+
+def fun_l9_n51()
+ fun_l10_n161
+end
+
+def fun_l9_n52()
+ fun_l10_n739
+end
+
+def fun_l9_n53()
+ fun_l10_n62
+end
+
+def fun_l9_n54()
+ fun_l10_n881
+end
+
+def fun_l9_n55()
+ fun_l10_n392
+end
+
+def fun_l9_n56()
+ fun_l10_n560
+end
+
+def fun_l9_n57()
+ fun_l10_n202
+end
+
+def fun_l9_n58()
+ fun_l10_n486
+end
+
+def fun_l9_n59()
+ fun_l10_n347
+end
+
+def fun_l9_n60()
+ fun_l10_n593
+end
+
+def fun_l9_n61()
+ fun_l10_n542
+end
+
+def fun_l9_n62()
+ fun_l10_n914
+end
+
+def fun_l9_n63()
+ fun_l10_n956
+end
+
+def fun_l9_n64()
+ fun_l10_n337
+end
+
+def fun_l9_n65()
+ fun_l10_n383
+end
+
+def fun_l9_n66()
+ fun_l10_n332
+end
+
+def fun_l9_n67()
+ fun_l10_n610
+end
+
+def fun_l9_n68()
+ fun_l10_n396
+end
+
+def fun_l9_n69()
+ fun_l10_n847
+end
+
+def fun_l9_n70()
+ fun_l10_n473
+end
+
+def fun_l9_n71()
+ fun_l10_n657
+end
+
+def fun_l9_n72()
+ fun_l10_n933
+end
+
+def fun_l9_n73()
+ fun_l10_n384
+end
+
+def fun_l9_n74()
+ fun_l10_n275
+end
+
+def fun_l9_n75()
+ fun_l10_n90
+end
+
+def fun_l9_n76()
+ fun_l10_n841
+end
+
+def fun_l9_n77()
+ fun_l10_n326
+end
+
+def fun_l9_n78()
+ fun_l10_n275
+end
+
+def fun_l9_n79()
+ fun_l10_n153
+end
+
+def fun_l9_n80()
+ fun_l10_n651
+end
+
+def fun_l9_n81()
+ fun_l10_n724
+end
+
+def fun_l9_n82()
+ fun_l10_n204
+end
+
+def fun_l9_n83()
+ fun_l10_n389
+end
+
+def fun_l9_n84()
+ fun_l10_n583
+end
+
+def fun_l9_n85()
+ fun_l10_n938
+end
+
+def fun_l9_n86()
+ fun_l10_n433
+end
+
+def fun_l9_n87()
+ fun_l10_n917
+end
+
+def fun_l9_n88()
+ fun_l10_n147
+end
+
+def fun_l9_n89()
+ fun_l10_n578
+end
+
+def fun_l9_n90()
+ fun_l10_n760
+end
+
+def fun_l9_n91()
+ fun_l10_n891
+end
+
+def fun_l9_n92()
+ fun_l10_n676
+end
+
+def fun_l9_n93()
+ fun_l10_n130
+end
+
+def fun_l9_n94()
+ fun_l10_n506
+end
+
+def fun_l9_n95()
+ fun_l10_n67
+end
+
+def fun_l9_n96()
+ fun_l10_n98
+end
+
+def fun_l9_n97()
+ fun_l10_n788
+end
+
+def fun_l9_n98()
+ fun_l10_n151
+end
+
+def fun_l9_n99()
+ fun_l10_n170
+end
+
+def fun_l9_n100()
+ fun_l10_n853
+end
+
+def fun_l9_n101()
+ fun_l10_n76
+end
+
+def fun_l9_n102()
+ fun_l10_n577
+end
+
+def fun_l9_n103()
+ fun_l10_n703
+end
+
+def fun_l9_n104()
+ fun_l10_n436
+end
+
+def fun_l9_n105()
+ fun_l10_n983
+end
+
+def fun_l9_n106()
+ fun_l10_n715
+end
+
+def fun_l9_n107()
+ fun_l10_n703
+end
+
+def fun_l9_n108()
+ fun_l10_n986
+end
+
+def fun_l9_n109()
+ fun_l10_n328
+end
+
+def fun_l9_n110()
+ fun_l10_n719
+end
+
+def fun_l9_n111()
+ fun_l10_n885
+end
+
+def fun_l9_n112()
+ fun_l10_n364
+end
+
+def fun_l9_n113()
+ fun_l10_n554
+end
+
+def fun_l9_n114()
+ fun_l10_n909
+end
+
+def fun_l9_n115()
+ fun_l10_n718
+end
+
+def fun_l9_n116()
+ fun_l10_n866
+end
+
+def fun_l9_n117()
+ fun_l10_n592
+end
+
+def fun_l9_n118()
+ fun_l10_n954
+end
+
+def fun_l9_n119()
+ fun_l10_n204
+end
+
+def fun_l9_n120()
+ fun_l10_n565
+end
+
+def fun_l9_n121()
+ fun_l10_n982
+end
+
+def fun_l9_n122()
+ fun_l10_n64
+end
+
+def fun_l9_n123()
+ fun_l10_n851
+end
+
+def fun_l9_n124()
+ fun_l10_n615
+end
+
+def fun_l9_n125()
+ fun_l10_n141
+end
+
+def fun_l9_n126()
+ fun_l10_n663
+end
+
+def fun_l9_n127()
+ fun_l10_n625
+end
+
+def fun_l9_n128()
+ fun_l10_n183
+end
+
+def fun_l9_n129()
+ fun_l10_n433
+end
+
+def fun_l9_n130()
+ fun_l10_n620
+end
+
+def fun_l9_n131()
+ fun_l10_n251
+end
+
+def fun_l9_n132()
+ fun_l10_n726
+end
+
+def fun_l9_n133()
+ fun_l10_n871
+end
+
+def fun_l9_n134()
+ fun_l10_n835
+end
+
+def fun_l9_n135()
+ fun_l10_n643
+end
+
+def fun_l9_n136()
+ fun_l10_n342
+end
+
+def fun_l9_n137()
+ fun_l10_n13
+end
+
+def fun_l9_n138()
+ fun_l10_n173
+end
+
+def fun_l9_n139()
+ fun_l10_n555
+end
+
+def fun_l9_n140()
+ fun_l10_n723
+end
+
+def fun_l9_n141()
+ fun_l10_n269
+end
+
+def fun_l9_n142()
+ fun_l10_n127
+end
+
+def fun_l9_n143()
+ fun_l10_n238
+end
+
+def fun_l9_n144()
+ fun_l10_n962
+end
+
+def fun_l9_n145()
+ fun_l10_n259
+end
+
+def fun_l9_n146()
+ fun_l10_n813
+end
+
+def fun_l9_n147()
+ fun_l10_n506
+end
+
+def fun_l9_n148()
+ fun_l10_n38
+end
+
+def fun_l9_n149()
+ fun_l10_n465
+end
+
+def fun_l9_n150()
+ fun_l10_n602
+end
+
+def fun_l9_n151()
+ fun_l10_n857
+end
+
+def fun_l9_n152()
+ fun_l10_n346
+end
+
+def fun_l9_n153()
+ fun_l10_n611
+end
+
+def fun_l9_n154()
+ fun_l10_n696
+end
+
+def fun_l9_n155()
+ fun_l10_n93
+end
+
+def fun_l9_n156()
+ fun_l10_n874
+end
+
+def fun_l9_n157()
+ fun_l10_n750
+end
+
+def fun_l9_n158()
+ fun_l10_n339
+end
+
+def fun_l9_n159()
+ fun_l10_n395
+end
+
+def fun_l9_n160()
+ fun_l10_n838
+end
+
+def fun_l9_n161()
+ fun_l10_n620
+end
+
+def fun_l9_n162()
+ fun_l10_n934
+end
+
+def fun_l9_n163()
+ fun_l10_n908
+end
+
+def fun_l9_n164()
+ fun_l10_n603
+end
+
+def fun_l9_n165()
+ fun_l10_n906
+end
+
+def fun_l9_n166()
+ fun_l10_n718
+end
+
+def fun_l9_n167()
+ fun_l10_n514
+end
+
+def fun_l9_n168()
+ fun_l10_n766
+end
+
+def fun_l9_n169()
+ fun_l10_n179
+end
+
+def fun_l9_n170()
+ fun_l10_n290
+end
+
+def fun_l9_n171()
+ fun_l10_n833
+end
+
+def fun_l9_n172()
+ fun_l10_n420
+end
+
+def fun_l9_n173()
+ fun_l10_n605
+end
+
+def fun_l9_n174()
+ fun_l10_n356
+end
+
+def fun_l9_n175()
+ fun_l10_n744
+end
+
+def fun_l9_n176()
+ fun_l10_n715
+end
+
+def fun_l9_n177()
+ fun_l10_n725
+end
+
+def fun_l9_n178()
+ fun_l10_n434
+end
+
+def fun_l9_n179()
+ fun_l10_n127
+end
+
+def fun_l9_n180()
+ fun_l10_n982
+end
+
+def fun_l9_n181()
+ fun_l10_n377
+end
+
+def fun_l9_n182()
+ fun_l10_n302
+end
+
+def fun_l9_n183()
+ fun_l10_n472
+end
+
+def fun_l9_n184()
+ fun_l10_n850
+end
+
+def fun_l9_n185()
+ fun_l10_n900
+end
+
+def fun_l9_n186()
+ fun_l10_n581
+end
+
+def fun_l9_n187()
+ fun_l10_n628
+end
+
+def fun_l9_n188()
+ fun_l10_n453
+end
+
+def fun_l9_n189()
+ fun_l10_n31
+end
+
+def fun_l9_n190()
+ fun_l10_n257
+end
+
+def fun_l9_n191()
+ fun_l10_n416
+end
+
+def fun_l9_n192()
+ fun_l10_n399
+end
+
+def fun_l9_n193()
+ fun_l10_n113
+end
+
+def fun_l9_n194()
+ fun_l10_n217
+end
+
+def fun_l9_n195()
+ fun_l10_n975
+end
+
+def fun_l9_n196()
+ fun_l10_n525
+end
+
+def fun_l9_n197()
+ fun_l10_n534
+end
+
+def fun_l9_n198()
+ fun_l10_n986
+end
+
+def fun_l9_n199()
+ fun_l10_n992
+end
+
+def fun_l9_n200()
+ fun_l10_n579
+end
+
+def fun_l9_n201()
+ fun_l10_n776
+end
+
+def fun_l9_n202()
+ fun_l10_n102
+end
+
+def fun_l9_n203()
+ fun_l10_n287
+end
+
+def fun_l9_n204()
+ fun_l10_n11
+end
+
+def fun_l9_n205()
+ fun_l10_n522
+end
+
+def fun_l9_n206()
+ fun_l10_n777
+end
+
+def fun_l9_n207()
+ fun_l10_n984
+end
+
+def fun_l9_n208()
+ fun_l10_n369
+end
+
+def fun_l9_n209()
+ fun_l10_n889
+end
+
+def fun_l9_n210()
+ fun_l10_n619
+end
+
+def fun_l9_n211()
+ fun_l10_n878
+end
+
+def fun_l9_n212()
+ fun_l10_n540
+end
+
+def fun_l9_n213()
+ fun_l10_n285
+end
+
+def fun_l9_n214()
+ fun_l10_n627
+end
+
+def fun_l9_n215()
+ fun_l10_n196
+end
+
+def fun_l9_n216()
+ fun_l10_n166
+end
+
+def fun_l9_n217()
+ fun_l10_n648
+end
+
+def fun_l9_n218()
+ fun_l10_n980
+end
+
+def fun_l9_n219()
+ fun_l10_n801
+end
+
+def fun_l9_n220()
+ fun_l10_n949
+end
+
+def fun_l9_n221()
+ fun_l10_n985
+end
+
+def fun_l9_n222()
+ fun_l10_n384
+end
+
+def fun_l9_n223()
+ fun_l10_n840
+end
+
+def fun_l9_n224()
+ fun_l10_n80
+end
+
+def fun_l9_n225()
+ fun_l10_n79
+end
+
+def fun_l9_n226()
+ fun_l10_n630
+end
+
+def fun_l9_n227()
+ fun_l10_n20
+end
+
+def fun_l9_n228()
+ fun_l10_n224
+end
+
+def fun_l9_n229()
+ fun_l10_n480
+end
+
+def fun_l9_n230()
+ fun_l10_n145
+end
+
+def fun_l9_n231()
+ fun_l10_n923
+end
+
+def fun_l9_n232()
+ fun_l10_n794
+end
+
+def fun_l9_n233()
+ fun_l10_n271
+end
+
+def fun_l9_n234()
+ fun_l10_n124
+end
+
+def fun_l9_n235()
+ fun_l10_n925
+end
+
+def fun_l9_n236()
+ fun_l10_n938
+end
+
+def fun_l9_n237()
+ fun_l10_n470
+end
+
+def fun_l9_n238()
+ fun_l10_n557
+end
+
+def fun_l9_n239()
+ fun_l10_n152
+end
+
+def fun_l9_n240()
+ fun_l10_n200
+end
+
+def fun_l9_n241()
+ fun_l10_n110
+end
+
+def fun_l9_n242()
+ fun_l10_n329
+end
+
+def fun_l9_n243()
+ fun_l10_n2
+end
+
+def fun_l9_n244()
+ fun_l10_n432
+end
+
+def fun_l9_n245()
+ fun_l10_n175
+end
+
+def fun_l9_n246()
+ fun_l10_n33
+end
+
+def fun_l9_n247()
+ fun_l10_n441
+end
+
+def fun_l9_n248()
+ fun_l10_n54
+end
+
+def fun_l9_n249()
+ fun_l10_n408
+end
+
+def fun_l9_n250()
+ fun_l10_n911
+end
+
+def fun_l9_n251()
+ fun_l10_n100
+end
+
+def fun_l9_n252()
+ fun_l10_n645
+end
+
+def fun_l9_n253()
+ fun_l10_n826
+end
+
+def fun_l9_n254()
+ fun_l10_n319
+end
+
+def fun_l9_n255()
+ fun_l10_n735
+end
+
+def fun_l9_n256()
+ fun_l10_n6
+end
+
+def fun_l9_n257()
+ fun_l10_n428
+end
+
+def fun_l9_n258()
+ fun_l10_n511
+end
+
+def fun_l9_n259()
+ fun_l10_n47
+end
+
+def fun_l9_n260()
+ fun_l10_n985
+end
+
+def fun_l9_n261()
+ fun_l10_n278
+end
+
+def fun_l9_n262()
+ fun_l10_n839
+end
+
+def fun_l9_n263()
+ fun_l10_n948
+end
+
+def fun_l9_n264()
+ fun_l10_n572
+end
+
+def fun_l9_n265()
+ fun_l10_n864
+end
+
+def fun_l9_n266()
+ fun_l10_n159
+end
+
+def fun_l9_n267()
+ fun_l10_n870
+end
+
+def fun_l9_n268()
+ fun_l10_n194
+end
+
+def fun_l9_n269()
+ fun_l10_n424
+end
+
+def fun_l9_n270()
+ fun_l10_n238
+end
+
+def fun_l9_n271()
+ fun_l10_n804
+end
+
+def fun_l9_n272()
+ fun_l10_n945
+end
+
+def fun_l9_n273()
+ fun_l10_n181
+end
+
+def fun_l9_n274()
+ fun_l10_n90
+end
+
+def fun_l9_n275()
+ fun_l10_n552
+end
+
+def fun_l9_n276()
+ fun_l10_n690
+end
+
+def fun_l9_n277()
+ fun_l10_n416
+end
+
+def fun_l9_n278()
+ fun_l10_n977
+end
+
+def fun_l9_n279()
+ fun_l10_n930
+end
+
+def fun_l9_n280()
+ fun_l10_n77
+end
+
+def fun_l9_n281()
+ fun_l10_n102
+end
+
+def fun_l9_n282()
+ fun_l10_n263
+end
+
+def fun_l9_n283()
+ fun_l10_n973
+end
+
+def fun_l9_n284()
+ fun_l10_n119
+end
+
+def fun_l9_n285()
+ fun_l10_n102
+end
+
+def fun_l9_n286()
+ fun_l10_n744
+end
+
+def fun_l9_n287()
+ fun_l10_n430
+end
+
+def fun_l9_n288()
+ fun_l10_n465
+end
+
+def fun_l9_n289()
+ fun_l10_n54
+end
+
+def fun_l9_n290()
+ fun_l10_n191
+end
+
+def fun_l9_n291()
+ fun_l10_n781
+end
+
+def fun_l9_n292()
+ fun_l10_n158
+end
+
+def fun_l9_n293()
+ fun_l10_n512
+end
+
+def fun_l9_n294()
+ fun_l10_n396
+end
+
+def fun_l9_n295()
+ fun_l10_n814
+end
+
+def fun_l9_n296()
+ fun_l10_n509
+end
+
+def fun_l9_n297()
+ fun_l10_n340
+end
+
+def fun_l9_n298()
+ fun_l10_n338
+end
+
+def fun_l9_n299()
+ fun_l10_n822
+end
+
+def fun_l9_n300()
+ fun_l10_n64
+end
+
+def fun_l9_n301()
+ fun_l10_n867
+end
+
+def fun_l9_n302()
+ fun_l10_n924
+end
+
+def fun_l9_n303()
+ fun_l10_n628
+end
+
+def fun_l9_n304()
+ fun_l10_n929
+end
+
+def fun_l9_n305()
+ fun_l10_n874
+end
+
+def fun_l9_n306()
+ fun_l10_n411
+end
+
+def fun_l9_n307()
+ fun_l10_n836
+end
+
+def fun_l9_n308()
+ fun_l10_n574
+end
+
+def fun_l9_n309()
+ fun_l10_n865
+end
+
+def fun_l9_n310()
+ fun_l10_n992
+end
+
+def fun_l9_n311()
+ fun_l10_n75
+end
+
+def fun_l9_n312()
+ fun_l10_n221
+end
+
+def fun_l9_n313()
+ fun_l10_n439
+end
+
+def fun_l9_n314()
+ fun_l10_n826
+end
+
+def fun_l9_n315()
+ fun_l10_n589
+end
+
+def fun_l9_n316()
+ fun_l10_n123
+end
+
+def fun_l9_n317()
+ fun_l10_n641
+end
+
+def fun_l9_n318()
+ fun_l10_n556
+end
+
+def fun_l9_n319()
+ fun_l10_n92
+end
+
+def fun_l9_n320()
+ fun_l10_n728
+end
+
+def fun_l9_n321()
+ fun_l10_n503
+end
+
+def fun_l9_n322()
+ fun_l10_n626
+end
+
+def fun_l9_n323()
+ fun_l10_n416
+end
+
+def fun_l9_n324()
+ fun_l10_n331
+end
+
+def fun_l9_n325()
+ fun_l10_n330
+end
+
+def fun_l9_n326()
+ fun_l10_n387
+end
+
+def fun_l9_n327()
+ fun_l10_n337
+end
+
+def fun_l9_n328()
+ fun_l10_n652
+end
+
+def fun_l9_n329()
+ fun_l10_n654
+end
+
+def fun_l9_n330()
+ fun_l10_n413
+end
+
+def fun_l9_n331()
+ fun_l10_n763
+end
+
+def fun_l9_n332()
+ fun_l10_n962
+end
+
+def fun_l9_n333()
+ fun_l10_n944
+end
+
+def fun_l9_n334()
+ fun_l10_n655
+end
+
+def fun_l9_n335()
+ fun_l10_n907
+end
+
+def fun_l9_n336()
+ fun_l10_n293
+end
+
+def fun_l9_n337()
+ fun_l10_n684
+end
+
+def fun_l9_n338()
+ fun_l10_n566
+end
+
+def fun_l9_n339()
+ fun_l10_n547
+end
+
+def fun_l9_n340()
+ fun_l10_n112
+end
+
+def fun_l9_n341()
+ fun_l10_n854
+end
+
+def fun_l9_n342()
+ fun_l10_n336
+end
+
+def fun_l9_n343()
+ fun_l10_n473
+end
+
+def fun_l9_n344()
+ fun_l10_n485
+end
+
+def fun_l9_n345()
+ fun_l10_n588
+end
+
+def fun_l9_n346()
+ fun_l10_n889
+end
+
+def fun_l9_n347()
+ fun_l10_n523
+end
+
+def fun_l9_n348()
+ fun_l10_n8
+end
+
+def fun_l9_n349()
+ fun_l10_n368
+end
+
+def fun_l9_n350()
+ fun_l10_n636
+end
+
+def fun_l9_n351()
+ fun_l10_n879
+end
+
+def fun_l9_n352()
+ fun_l10_n524
+end
+
+def fun_l9_n353()
+ fun_l10_n209
+end
+
+def fun_l9_n354()
+ fun_l10_n271
+end
+
+def fun_l9_n355()
+ fun_l10_n90
+end
+
+def fun_l9_n356()
+ fun_l10_n698
+end
+
+def fun_l9_n357()
+ fun_l10_n268
+end
+
+def fun_l9_n358()
+ fun_l10_n948
+end
+
+def fun_l9_n359()
+ fun_l10_n847
+end
+
+def fun_l9_n360()
+ fun_l10_n985
+end
+
+def fun_l9_n361()
+ fun_l10_n978
+end
+
+def fun_l9_n362()
+ fun_l10_n808
+end
+
+def fun_l9_n363()
+ fun_l10_n796
+end
+
+def fun_l9_n364()
+ fun_l10_n810
+end
+
+def fun_l9_n365()
+ fun_l10_n665
+end
+
+def fun_l9_n366()
+ fun_l10_n765
+end
+
+def fun_l9_n367()
+ fun_l10_n74
+end
+
+def fun_l9_n368()
+ fun_l10_n330
+end
+
+def fun_l9_n369()
+ fun_l10_n125
+end
+
+def fun_l9_n370()
+ fun_l10_n814
+end
+
+def fun_l9_n371()
+ fun_l10_n498
+end
+
+def fun_l9_n372()
+ fun_l10_n783
+end
+
+def fun_l9_n373()
+ fun_l10_n169
+end
+
+def fun_l9_n374()
+ fun_l10_n490
+end
+
+def fun_l9_n375()
+ fun_l10_n923
+end
+
+def fun_l9_n376()
+ fun_l10_n63
+end
+
+def fun_l9_n377()
+ fun_l10_n687
+end
+
+def fun_l9_n378()
+ fun_l10_n603
+end
+
+def fun_l9_n379()
+ fun_l10_n916
+end
+
+def fun_l9_n380()
+ fun_l10_n930
+end
+
+def fun_l9_n381()
+ fun_l10_n884
+end
+
+def fun_l9_n382()
+ fun_l10_n782
+end
+
+def fun_l9_n383()
+ fun_l10_n63
+end
+
+def fun_l9_n384()
+ fun_l10_n488
+end
+
+def fun_l9_n385()
+ fun_l10_n188
+end
+
+def fun_l9_n386()
+ fun_l10_n692
+end
+
+def fun_l9_n387()
+ fun_l10_n213
+end
+
+def fun_l9_n388()
+ fun_l10_n358
+end
+
+def fun_l9_n389()
+ fun_l10_n200
+end
+
+def fun_l9_n390()
+ fun_l10_n881
+end
+
+def fun_l9_n391()
+ fun_l10_n533
+end
+
+def fun_l9_n392()
+ fun_l10_n889
+end
+
+def fun_l9_n393()
+ fun_l10_n444
+end
+
+def fun_l9_n394()
+ fun_l10_n184
+end
+
+def fun_l9_n395()
+ fun_l10_n775
+end
+
+def fun_l9_n396()
+ fun_l10_n714
+end
+
+def fun_l9_n397()
+ fun_l10_n385
+end
+
+def fun_l9_n398()
+ fun_l10_n432
+end
+
+def fun_l9_n399()
+ fun_l10_n357
+end
+
+def fun_l9_n400()
+ fun_l10_n223
+end
+
+def fun_l9_n401()
+ fun_l10_n73
+end
+
+def fun_l9_n402()
+ fun_l10_n139
+end
+
+def fun_l9_n403()
+ fun_l10_n930
+end
+
+def fun_l9_n404()
+ fun_l10_n43
+end
+
+def fun_l9_n405()
+ fun_l10_n104
+end
+
+def fun_l9_n406()
+ fun_l10_n334
+end
+
+def fun_l9_n407()
+ fun_l10_n959
+end
+
+def fun_l9_n408()
+ fun_l10_n59
+end
+
+def fun_l9_n409()
+ fun_l10_n794
+end
+
+def fun_l9_n410()
+ fun_l10_n204
+end
+
+def fun_l9_n411()
+ fun_l10_n225
+end
+
+def fun_l9_n412()
+ fun_l10_n849
+end
+
+def fun_l9_n413()
+ fun_l10_n227
+end
+
+def fun_l9_n414()
+ fun_l10_n59
+end
+
+def fun_l9_n415()
+ fun_l10_n352
+end
+
+def fun_l9_n416()
+ fun_l10_n910
+end
+
+def fun_l9_n417()
+ fun_l10_n628
+end
+
+def fun_l9_n418()
+ fun_l10_n653
+end
+
+def fun_l9_n419()
+ fun_l10_n827
+end
+
+def fun_l9_n420()
+ fun_l10_n960
+end
+
+def fun_l9_n421()
+ fun_l10_n142
+end
+
+def fun_l9_n422()
+ fun_l10_n928
+end
+
+def fun_l9_n423()
+ fun_l10_n370
+end
+
+def fun_l9_n424()
+ fun_l10_n121
+end
+
+def fun_l9_n425()
+ fun_l10_n684
+end
+
+def fun_l9_n426()
+ fun_l10_n187
+end
+
+def fun_l9_n427()
+ fun_l10_n93
+end
+
+def fun_l9_n428()
+ fun_l10_n792
+end
+
+def fun_l9_n429()
+ fun_l10_n565
+end
+
+def fun_l9_n430()
+ fun_l10_n933
+end
+
+def fun_l9_n431()
+ fun_l10_n393
+end
+
+def fun_l9_n432()
+ fun_l10_n412
+end
+
+def fun_l9_n433()
+ fun_l10_n121
+end
+
+def fun_l9_n434()
+ fun_l10_n522
+end
+
+def fun_l9_n435()
+ fun_l10_n408
+end
+
+def fun_l9_n436()
+ fun_l10_n670
+end
+
+def fun_l9_n437()
+ fun_l10_n685
+end
+
+def fun_l9_n438()
+ fun_l10_n138
+end
+
+def fun_l9_n439()
+ fun_l10_n658
+end
+
+def fun_l9_n440()
+ fun_l10_n567
+end
+
+def fun_l9_n441()
+ fun_l10_n121
+end
+
+def fun_l9_n442()
+ fun_l10_n532
+end
+
+def fun_l9_n443()
+ fun_l10_n37
+end
+
+def fun_l9_n444()
+ fun_l10_n502
+end
+
+def fun_l9_n445()
+ fun_l10_n779
+end
+
+def fun_l9_n446()
+ fun_l10_n376
+end
+
+def fun_l9_n447()
+ fun_l10_n412
+end
+
+def fun_l9_n448()
+ fun_l10_n932
+end
+
+def fun_l9_n449()
+ fun_l10_n779
+end
+
+def fun_l9_n450()
+ fun_l10_n231
+end
+
+def fun_l9_n451()
+ fun_l10_n302
+end
+
+def fun_l9_n452()
+ fun_l10_n273
+end
+
+def fun_l9_n453()
+ fun_l10_n531
+end
+
+def fun_l9_n454()
+ fun_l10_n291
+end
+
+def fun_l9_n455()
+ fun_l10_n56
+end
+
+def fun_l9_n456()
+ fun_l10_n970
+end
+
+def fun_l9_n457()
+ fun_l10_n936
+end
+
+def fun_l9_n458()
+ fun_l10_n537
+end
+
+def fun_l9_n459()
+ fun_l10_n145
+end
+
+def fun_l9_n460()
+ fun_l10_n756
+end
+
+def fun_l9_n461()
+ fun_l10_n0
+end
+
+def fun_l9_n462()
+ fun_l10_n691
+end
+
+def fun_l9_n463()
+ fun_l10_n635
+end
+
+def fun_l9_n464()
+ fun_l10_n485
+end
+
+def fun_l9_n465()
+ fun_l10_n407
+end
+
+def fun_l9_n466()
+ fun_l10_n393
+end
+
+def fun_l9_n467()
+ fun_l10_n336
+end
+
+def fun_l9_n468()
+ fun_l10_n169
+end
+
+def fun_l9_n469()
+ fun_l10_n43
+end
+
+def fun_l9_n470()
+ fun_l10_n907
+end
+
+def fun_l9_n471()
+ fun_l10_n215
+end
+
+def fun_l9_n472()
+ fun_l10_n118
+end
+
+def fun_l9_n473()
+ fun_l10_n735
+end
+
+def fun_l9_n474()
+ fun_l10_n319
+end
+
+def fun_l9_n475()
+ fun_l10_n631
+end
+
+def fun_l9_n476()
+ fun_l10_n150
+end
+
+def fun_l9_n477()
+ fun_l10_n899
+end
+
+def fun_l9_n478()
+ fun_l10_n407
+end
+
+def fun_l9_n479()
+ fun_l10_n830
+end
+
+def fun_l9_n480()
+ fun_l10_n931
+end
+
+def fun_l9_n481()
+ fun_l10_n392
+end
+
+def fun_l9_n482()
+ fun_l10_n100
+end
+
+def fun_l9_n483()
+ fun_l10_n210
+end
+
+def fun_l9_n484()
+ fun_l10_n506
+end
+
+def fun_l9_n485()
+ fun_l10_n160
+end
+
+def fun_l9_n486()
+ fun_l10_n998
+end
+
+def fun_l9_n487()
+ fun_l10_n170
+end
+
+def fun_l9_n488()
+ fun_l10_n722
+end
+
+def fun_l9_n489()
+ fun_l10_n196
+end
+
+def fun_l9_n490()
+ fun_l10_n518
+end
+
+def fun_l9_n491()
+ fun_l10_n350
+end
+
+def fun_l9_n492()
+ fun_l10_n89
+end
+
+def fun_l9_n493()
+ fun_l10_n49
+end
+
+def fun_l9_n494()
+ fun_l10_n366
+end
+
+def fun_l9_n495()
+ fun_l10_n850
+end
+
+def fun_l9_n496()
+ fun_l10_n430
+end
+
+def fun_l9_n497()
+ fun_l10_n485
+end
+
+def fun_l9_n498()
+ fun_l10_n584
+end
+
+def fun_l9_n499()
+ fun_l10_n36
+end
+
+def fun_l9_n500()
+ fun_l10_n58
+end
+
+def fun_l9_n501()
+ fun_l10_n81
+end
+
+def fun_l9_n502()
+ fun_l10_n161
+end
+
+def fun_l9_n503()
+ fun_l10_n983
+end
+
+def fun_l9_n504()
+ fun_l10_n994
+end
+
+def fun_l9_n505()
+ fun_l10_n26
+end
+
+def fun_l9_n506()
+ fun_l10_n286
+end
+
+def fun_l9_n507()
+ fun_l10_n118
+end
+
+def fun_l9_n508()
+ fun_l10_n509
+end
+
+def fun_l9_n509()
+ fun_l10_n630
+end
+
+def fun_l9_n510()
+ fun_l10_n302
+end
+
+def fun_l9_n511()
+ fun_l10_n307
+end
+
+def fun_l9_n512()
+ fun_l10_n810
+end
+
+def fun_l9_n513()
+ fun_l10_n21
+end
+
+def fun_l9_n514()
+ fun_l10_n76
+end
+
+def fun_l9_n515()
+ fun_l10_n769
+end
+
+def fun_l9_n516()
+ fun_l10_n58
+end
+
+def fun_l9_n517()
+ fun_l10_n368
+end
+
+def fun_l9_n518()
+ fun_l10_n8
+end
+
+def fun_l9_n519()
+ fun_l10_n559
+end
+
+def fun_l9_n520()
+ fun_l10_n949
+end
+
+def fun_l9_n521()
+ fun_l10_n781
+end
+
+def fun_l9_n522()
+ fun_l10_n453
+end
+
+def fun_l9_n523()
+ fun_l10_n227
+end
+
+def fun_l9_n524()
+ fun_l10_n389
+end
+
+def fun_l9_n525()
+ fun_l10_n641
+end
+
+def fun_l9_n526()
+ fun_l10_n221
+end
+
+def fun_l9_n527()
+ fun_l10_n322
+end
+
+def fun_l9_n528()
+ fun_l10_n918
+end
+
+def fun_l9_n529()
+ fun_l10_n246
+end
+
+def fun_l9_n530()
+ fun_l10_n431
+end
+
+def fun_l9_n531()
+ fun_l10_n445
+end
+
+def fun_l9_n532()
+ fun_l10_n781
+end
+
+def fun_l9_n533()
+ fun_l10_n626
+end
+
+def fun_l9_n534()
+ fun_l10_n51
+end
+
+def fun_l9_n535()
+ fun_l10_n441
+end
+
+def fun_l9_n536()
+ fun_l10_n806
+end
+
+def fun_l9_n537()
+ fun_l10_n58
+end
+
+def fun_l9_n538()
+ fun_l10_n710
+end
+
+def fun_l9_n539()
+ fun_l10_n782
+end
+
+def fun_l9_n540()
+ fun_l10_n991
+end
+
+def fun_l9_n541()
+ fun_l10_n792
+end
+
+def fun_l9_n542()
+ fun_l10_n376
+end
+
+def fun_l9_n543()
+ fun_l10_n716
+end
+
+def fun_l9_n544()
+ fun_l10_n500
+end
+
+def fun_l9_n545()
+ fun_l10_n251
+end
+
+def fun_l9_n546()
+ fun_l10_n951
+end
+
+def fun_l9_n547()
+ fun_l10_n584
+end
+
+def fun_l9_n548()
+ fun_l10_n150
+end
+
+def fun_l9_n549()
+ fun_l10_n380
+end
+
+def fun_l9_n550()
+ fun_l10_n432
+end
+
+def fun_l9_n551()
+ fun_l10_n787
+end
+
+def fun_l9_n552()
+ fun_l10_n749
+end
+
+def fun_l9_n553()
+ fun_l10_n646
+end
+
+def fun_l9_n554()
+ fun_l10_n405
+end
+
+def fun_l9_n555()
+ fun_l10_n345
+end
+
+def fun_l9_n556()
+ fun_l10_n855
+end
+
+def fun_l9_n557()
+ fun_l10_n575
+end
+
+def fun_l9_n558()
+ fun_l10_n368
+end
+
+def fun_l9_n559()
+ fun_l10_n511
+end
+
+def fun_l9_n560()
+ fun_l10_n158
+end
+
+def fun_l9_n561()
+ fun_l10_n243
+end
+
+def fun_l9_n562()
+ fun_l10_n536
+end
+
+def fun_l9_n563()
+ fun_l10_n107
+end
+
+def fun_l9_n564()
+ fun_l10_n270
+end
+
+def fun_l9_n565()
+ fun_l10_n783
+end
+
+def fun_l9_n566()
+ fun_l10_n289
+end
+
+def fun_l9_n567()
+ fun_l10_n360
+end
+
+def fun_l9_n568()
+ fun_l10_n190
+end
+
+def fun_l9_n569()
+ fun_l10_n245
+end
+
+def fun_l9_n570()
+ fun_l10_n565
+end
+
+def fun_l9_n571()
+ fun_l10_n310
+end
+
+def fun_l9_n572()
+ fun_l10_n939
+end
+
+def fun_l9_n573()
+ fun_l10_n955
+end
+
+def fun_l9_n574()
+ fun_l10_n521
+end
+
+def fun_l9_n575()
+ fun_l10_n597
+end
+
+def fun_l9_n576()
+ fun_l10_n122
+end
+
+def fun_l9_n577()
+ fun_l10_n987
+end
+
+def fun_l9_n578()
+ fun_l10_n267
+end
+
+def fun_l9_n579()
+ fun_l10_n798
+end
+
+def fun_l9_n580()
+ fun_l10_n468
+end
+
+def fun_l9_n581()
+ fun_l10_n807
+end
+
+def fun_l9_n582()
+ fun_l10_n749
+end
+
+def fun_l9_n583()
+ fun_l10_n578
+end
+
+def fun_l9_n584()
+ fun_l10_n878
+end
+
+def fun_l9_n585()
+ fun_l10_n404
+end
+
+def fun_l9_n586()
+ fun_l10_n501
+end
+
+def fun_l9_n587()
+ fun_l10_n165
+end
+
+def fun_l9_n588()
+ fun_l10_n270
+end
+
+def fun_l9_n589()
+ fun_l10_n197
+end
+
+def fun_l9_n590()
+ fun_l10_n940
+end
+
+def fun_l9_n591()
+ fun_l10_n667
+end
+
+def fun_l9_n592()
+ fun_l10_n67
+end
+
+def fun_l9_n593()
+ fun_l10_n652
+end
+
+def fun_l9_n594()
+ fun_l10_n728
+end
+
+def fun_l9_n595()
+ fun_l10_n829
+end
+
+def fun_l9_n596()
+ fun_l10_n528
+end
+
+def fun_l9_n597()
+ fun_l10_n765
+end
+
+def fun_l9_n598()
+ fun_l10_n841
+end
+
+def fun_l9_n599()
+ fun_l10_n605
+end
+
+def fun_l9_n600()
+ fun_l10_n316
+end
+
+def fun_l9_n601()
+ fun_l10_n676
+end
+
+def fun_l9_n602()
+ fun_l10_n673
+end
+
+def fun_l9_n603()
+ fun_l10_n400
+end
+
+def fun_l9_n604()
+ fun_l10_n774
+end
+
+def fun_l9_n605()
+ fun_l10_n717
+end
+
+def fun_l9_n606()
+ fun_l10_n853
+end
+
+def fun_l9_n607()
+ fun_l10_n336
+end
+
+def fun_l9_n608()
+ fun_l10_n169
+end
+
+def fun_l9_n609()
+ fun_l10_n7
+end
+
+def fun_l9_n610()
+ fun_l10_n846
+end
+
+def fun_l9_n611()
+ fun_l10_n87
+end
+
+def fun_l9_n612()
+ fun_l10_n805
+end
+
+def fun_l9_n613()
+ fun_l10_n591
+end
+
+def fun_l9_n614()
+ fun_l10_n674
+end
+
+def fun_l9_n615()
+ fun_l10_n796
+end
+
+def fun_l9_n616()
+ fun_l10_n390
+end
+
+def fun_l9_n617()
+ fun_l10_n107
+end
+
+def fun_l9_n618()
+ fun_l10_n302
+end
+
+def fun_l9_n619()
+ fun_l10_n848
+end
+
+def fun_l9_n620()
+ fun_l10_n263
+end
+
+def fun_l9_n621()
+ fun_l10_n380
+end
+
+def fun_l9_n622()
+ fun_l10_n778
+end
+
+def fun_l9_n623()
+ fun_l10_n593
+end
+
+def fun_l9_n624()
+ fun_l10_n147
+end
+
+def fun_l9_n625()
+ fun_l10_n683
+end
+
+def fun_l9_n626()
+ fun_l10_n850
+end
+
+def fun_l9_n627()
+ fun_l10_n545
+end
+
+def fun_l9_n628()
+ fun_l10_n549
+end
+
+def fun_l9_n629()
+ fun_l10_n692
+end
+
+def fun_l9_n630()
+ fun_l10_n688
+end
+
+def fun_l9_n631()
+ fun_l10_n656
+end
+
+def fun_l9_n632()
+ fun_l10_n201
+end
+
+def fun_l9_n633()
+ fun_l10_n216
+end
+
+def fun_l9_n634()
+ fun_l10_n661
+end
+
+def fun_l9_n635()
+ fun_l10_n670
+end
+
+def fun_l9_n636()
+ fun_l10_n436
+end
+
+def fun_l9_n637()
+ fun_l10_n591
+end
+
+def fun_l9_n638()
+ fun_l10_n419
+end
+
+def fun_l9_n639()
+ fun_l10_n133
+end
+
+def fun_l9_n640()
+ fun_l10_n998
+end
+
+def fun_l9_n641()
+ fun_l10_n20
+end
+
+def fun_l9_n642()
+ fun_l10_n484
+end
+
+def fun_l9_n643()
+ fun_l10_n349
+end
+
+def fun_l9_n644()
+ fun_l10_n548
+end
+
+def fun_l9_n645()
+ fun_l10_n67
+end
+
+def fun_l9_n646()
+ fun_l10_n99
+end
+
+def fun_l9_n647()
+ fun_l10_n758
+end
+
+def fun_l9_n648()
+ fun_l10_n559
+end
+
+def fun_l9_n649()
+ fun_l10_n518
+end
+
+def fun_l9_n650()
+ fun_l10_n698
+end
+
+def fun_l9_n651()
+ fun_l10_n807
+end
+
+def fun_l9_n652()
+ fun_l10_n557
+end
+
+def fun_l9_n653()
+ fun_l10_n53
+end
+
+def fun_l9_n654()
+ fun_l10_n783
+end
+
+def fun_l9_n655()
+ fun_l10_n687
+end
+
+def fun_l9_n656()
+ fun_l10_n40
+end
+
+def fun_l9_n657()
+ fun_l10_n758
+end
+
+def fun_l9_n658()
+ fun_l10_n308
+end
+
+def fun_l9_n659()
+ fun_l10_n828
+end
+
+def fun_l9_n660()
+ fun_l10_n510
+end
+
+def fun_l9_n661()
+ fun_l10_n621
+end
+
+def fun_l9_n662()
+ fun_l10_n885
+end
+
+def fun_l9_n663()
+ fun_l10_n765
+end
+
+def fun_l9_n664()
+ fun_l10_n213
+end
+
+def fun_l9_n665()
+ fun_l10_n530
+end
+
+def fun_l9_n666()
+ fun_l10_n178
+end
+
+def fun_l9_n667()
+ fun_l10_n550
+end
+
+def fun_l9_n668()
+ fun_l10_n650
+end
+
+def fun_l9_n669()
+ fun_l10_n695
+end
+
+def fun_l9_n670()
+ fun_l10_n295
+end
+
+def fun_l9_n671()
+ fun_l10_n672
+end
+
+def fun_l9_n672()
+ fun_l10_n603
+end
+
+def fun_l9_n673()
+ fun_l10_n394
+end
+
+def fun_l9_n674()
+ fun_l10_n470
+end
+
+def fun_l9_n675()
+ fun_l10_n869
+end
+
+def fun_l9_n676()
+ fun_l10_n270
+end
+
+def fun_l9_n677()
+ fun_l10_n933
+end
+
+def fun_l9_n678()
+ fun_l10_n268
+end
+
+def fun_l9_n679()
+ fun_l10_n862
+end
+
+def fun_l9_n680()
+ fun_l10_n84
+end
+
+def fun_l9_n681()
+ fun_l10_n370
+end
+
+def fun_l9_n682()
+ fun_l10_n538
+end
+
+def fun_l9_n683()
+ fun_l10_n752
+end
+
+def fun_l9_n684()
+ fun_l10_n868
+end
+
+def fun_l9_n685()
+ fun_l10_n278
+end
+
+def fun_l9_n686()
+ fun_l10_n65
+end
+
+def fun_l9_n687()
+ fun_l10_n713
+end
+
+def fun_l9_n688()
+ fun_l10_n577
+end
+
+def fun_l9_n689()
+ fun_l10_n508
+end
+
+def fun_l9_n690()
+ fun_l10_n400
+end
+
+def fun_l9_n691()
+ fun_l10_n830
+end
+
+def fun_l9_n692()
+ fun_l10_n366
+end
+
+def fun_l9_n693()
+ fun_l10_n545
+end
+
+def fun_l9_n694()
+ fun_l10_n479
+end
+
+def fun_l9_n695()
+ fun_l10_n978
+end
+
+def fun_l9_n696()
+ fun_l10_n935
+end
+
+def fun_l9_n697()
+ fun_l10_n235
+end
+
+def fun_l9_n698()
+ fun_l10_n196
+end
+
+def fun_l9_n699()
+ fun_l10_n508
+end
+
+def fun_l9_n700()
+ fun_l10_n879
+end
+
+def fun_l9_n701()
+ fun_l10_n81
+end
+
+def fun_l9_n702()
+ fun_l10_n676
+end
+
+def fun_l9_n703()
+ fun_l10_n276
+end
+
+def fun_l9_n704()
+ fun_l10_n565
+end
+
+def fun_l9_n705()
+ fun_l10_n98
+end
+
+def fun_l9_n706()
+ fun_l10_n66
+end
+
+def fun_l9_n707()
+ fun_l10_n894
+end
+
+def fun_l9_n708()
+ fun_l10_n258
+end
+
+def fun_l9_n709()
+ fun_l10_n465
+end
+
+def fun_l9_n710()
+ fun_l10_n677
+end
+
+def fun_l9_n711()
+ fun_l10_n644
+end
+
+def fun_l9_n712()
+ fun_l10_n729
+end
+
+def fun_l9_n713()
+ fun_l10_n222
+end
+
+def fun_l9_n714()
+ fun_l10_n186
+end
+
+def fun_l9_n715()
+ fun_l10_n387
+end
+
+def fun_l9_n716()
+ fun_l10_n933
+end
+
+def fun_l9_n717()
+ fun_l10_n280
+end
+
+def fun_l9_n718()
+ fun_l10_n939
+end
+
+def fun_l9_n719()
+ fun_l10_n993
+end
+
+def fun_l9_n720()
+ fun_l10_n529
+end
+
+def fun_l9_n721()
+ fun_l10_n189
+end
+
+def fun_l9_n722()
+ fun_l10_n544
+end
+
+def fun_l9_n723()
+ fun_l10_n655
+end
+
+def fun_l9_n724()
+ fun_l10_n88
+end
+
+def fun_l9_n725()
+ fun_l10_n448
+end
+
+def fun_l9_n726()
+ fun_l10_n656
+end
+
+def fun_l9_n727()
+ fun_l10_n106
+end
+
+def fun_l9_n728()
+ fun_l10_n711
+end
+
+def fun_l9_n729()
+ fun_l10_n400
+end
+
+def fun_l9_n730()
+ fun_l10_n138
+end
+
+def fun_l9_n731()
+ fun_l10_n90
+end
+
+def fun_l9_n732()
+ fun_l10_n290
+end
+
+def fun_l9_n733()
+ fun_l10_n563
+end
+
+def fun_l9_n734()
+ fun_l10_n103
+end
+
+def fun_l9_n735()
+ fun_l10_n115
+end
+
+def fun_l9_n736()
+ fun_l10_n771
+end
+
+def fun_l9_n737()
+ fun_l10_n291
+end
+
+def fun_l9_n738()
+ fun_l10_n46
+end
+
+def fun_l9_n739()
+ fun_l10_n872
+end
+
+def fun_l9_n740()
+ fun_l10_n871
+end
+
+def fun_l9_n741()
+ fun_l10_n190
+end
+
+def fun_l9_n742()
+ fun_l10_n641
+end
+
+def fun_l9_n743()
+ fun_l10_n951
+end
+
+def fun_l9_n744()
+ fun_l10_n248
+end
+
+def fun_l9_n745()
+ fun_l10_n275
+end
+
+def fun_l9_n746()
+ fun_l10_n943
+end
+
+def fun_l9_n747()
+ fun_l10_n995
+end
+
+def fun_l9_n748()
+ fun_l10_n194
+end
+
+def fun_l9_n749()
+ fun_l10_n121
+end
+
+def fun_l9_n750()
+ fun_l10_n707
+end
+
+def fun_l9_n751()
+ fun_l10_n591
+end
+
+def fun_l9_n752()
+ fun_l10_n616
+end
+
+def fun_l9_n753()
+ fun_l10_n155
+end
+
+def fun_l9_n754()
+ fun_l10_n779
+end
+
+def fun_l9_n755()
+ fun_l10_n449
+end
+
+def fun_l9_n756()
+ fun_l10_n937
+end
+
+def fun_l9_n757()
+ fun_l10_n571
+end
+
+def fun_l9_n758()
+ fun_l10_n892
+end
+
+def fun_l9_n759()
+ fun_l10_n441
+end
+
+def fun_l9_n760()
+ fun_l10_n686
+end
+
+def fun_l9_n761()
+ fun_l10_n55
+end
+
+def fun_l9_n762()
+ fun_l10_n852
+end
+
+def fun_l9_n763()
+ fun_l10_n102
+end
+
+def fun_l9_n764()
+ fun_l10_n207
+end
+
+def fun_l9_n765()
+ fun_l10_n269
+end
+
+def fun_l9_n766()
+ fun_l10_n422
+end
+
+def fun_l9_n767()
+ fun_l10_n589
+end
+
+def fun_l9_n768()
+ fun_l10_n406
+end
+
+def fun_l9_n769()
+ fun_l10_n88
+end
+
+def fun_l9_n770()
+ fun_l10_n441
+end
+
+def fun_l9_n771()
+ fun_l10_n506
+end
+
+def fun_l9_n772()
+ fun_l10_n797
+end
+
+def fun_l9_n773()
+ fun_l10_n639
+end
+
+def fun_l9_n774()
+ fun_l10_n390
+end
+
+def fun_l9_n775()
+ fun_l10_n511
+end
+
+def fun_l9_n776()
+ fun_l10_n353
+end
+
+def fun_l9_n777()
+ fun_l10_n137
+end
+
+def fun_l9_n778()
+ fun_l10_n692
+end
+
+def fun_l9_n779()
+ fun_l10_n522
+end
+
+def fun_l9_n780()
+ fun_l10_n532
+end
+
+def fun_l9_n781()
+ fun_l10_n4
+end
+
+def fun_l9_n782()
+ fun_l10_n548
+end
+
+def fun_l9_n783()
+ fun_l10_n386
+end
+
+def fun_l9_n784()
+ fun_l10_n932
+end
+
+def fun_l9_n785()
+ fun_l10_n552
+end
+
+def fun_l9_n786()
+ fun_l10_n215
+end
+
+def fun_l9_n787()
+ fun_l10_n981
+end
+
+def fun_l9_n788()
+ fun_l10_n379
+end
+
+def fun_l9_n789()
+ fun_l10_n208
+end
+
+def fun_l9_n790()
+ fun_l10_n252
+end
+
+def fun_l9_n791()
+ fun_l10_n471
+end
+
+def fun_l9_n792()
+ fun_l10_n300
+end
+
+def fun_l9_n793()
+ fun_l10_n877
+end
+
+def fun_l9_n794()
+ fun_l10_n92
+end
+
+def fun_l9_n795()
+ fun_l10_n75
+end
+
+def fun_l9_n796()
+ fun_l10_n837
+end
+
+def fun_l9_n797()
+ fun_l10_n328
+end
+
+def fun_l9_n798()
+ fun_l10_n454
+end
+
+def fun_l9_n799()
+ fun_l10_n392
+end
+
+def fun_l9_n800()
+ fun_l10_n115
+end
+
+def fun_l9_n801()
+ fun_l10_n966
+end
+
+def fun_l9_n802()
+ fun_l10_n565
+end
+
+def fun_l9_n803()
+ fun_l10_n268
+end
+
+def fun_l9_n804()
+ fun_l10_n13
+end
+
+def fun_l9_n805()
+ fun_l10_n484
+end
+
+def fun_l9_n806()
+ fun_l10_n893
+end
+
+def fun_l9_n807()
+ fun_l10_n59
+end
+
+def fun_l9_n808()
+ fun_l10_n87
+end
+
+def fun_l9_n809()
+ fun_l10_n455
+end
+
+def fun_l9_n810()
+ fun_l10_n972
+end
+
+def fun_l9_n811()
+ fun_l10_n804
+end
+
+def fun_l9_n812()
+ fun_l10_n20
+end
+
+def fun_l9_n813()
+ fun_l10_n148
+end
+
+def fun_l9_n814()
+ fun_l10_n284
+end
+
+def fun_l9_n815()
+ fun_l10_n704
+end
+
+def fun_l9_n816()
+ fun_l10_n346
+end
+
+def fun_l9_n817()
+ fun_l10_n101
+end
+
+def fun_l9_n818()
+ fun_l10_n543
+end
+
+def fun_l9_n819()
+ fun_l10_n207
+end
+
+def fun_l9_n820()
+ fun_l10_n256
+end
+
+def fun_l9_n821()
+ fun_l10_n300
+end
+
+def fun_l9_n822()
+ fun_l10_n69
+end
+
+def fun_l9_n823()
+ fun_l10_n139
+end
+
+def fun_l9_n824()
+ fun_l10_n566
+end
+
+def fun_l9_n825()
+ fun_l10_n277
+end
+
+def fun_l9_n826()
+ fun_l10_n75
+end
+
+def fun_l9_n827()
+ fun_l10_n585
+end
+
+def fun_l9_n828()
+ fun_l10_n2
+end
+
+def fun_l9_n829()
+ fun_l10_n959
+end
+
+def fun_l9_n830()
+ fun_l10_n982
+end
+
+def fun_l9_n831()
+ fun_l10_n621
+end
+
+def fun_l9_n832()
+ fun_l10_n680
+end
+
+def fun_l9_n833()
+ fun_l10_n535
+end
+
+def fun_l9_n834()
+ fun_l10_n732
+end
+
+def fun_l9_n835()
+ fun_l10_n282
+end
+
+def fun_l9_n836()
+ fun_l10_n825
+end
+
+def fun_l9_n837()
+ fun_l10_n323
+end
+
+def fun_l9_n838()
+ fun_l10_n963
+end
+
+def fun_l9_n839()
+ fun_l10_n138
+end
+
+def fun_l9_n840()
+ fun_l10_n370
+end
+
+def fun_l9_n841()
+ fun_l10_n44
+end
+
+def fun_l9_n842()
+ fun_l10_n694
+end
+
+def fun_l9_n843()
+ fun_l10_n532
+end
+
+def fun_l9_n844()
+ fun_l10_n987
+end
+
+def fun_l9_n845()
+ fun_l10_n730
+end
+
+def fun_l9_n846()
+ fun_l10_n376
+end
+
+def fun_l9_n847()
+ fun_l10_n33
+end
+
+def fun_l9_n848()
+ fun_l10_n381
+end
+
+def fun_l9_n849()
+ fun_l10_n569
+end
+
+def fun_l9_n850()
+ fun_l10_n264
+end
+
+def fun_l9_n851()
+ fun_l10_n260
+end
+
+def fun_l9_n852()
+ fun_l10_n750
+end
+
+def fun_l9_n853()
+ fun_l10_n710
+end
+
+def fun_l9_n854()
+ fun_l10_n665
+end
+
+def fun_l9_n855()
+ fun_l10_n544
+end
+
+def fun_l9_n856()
+ fun_l10_n306
+end
+
+def fun_l9_n857()
+ fun_l10_n303
+end
+
+def fun_l9_n858()
+ fun_l10_n754
+end
+
+def fun_l9_n859()
+ fun_l10_n552
+end
+
+def fun_l9_n860()
+ fun_l10_n404
+end
+
+def fun_l9_n861()
+ fun_l10_n123
+end
+
+def fun_l9_n862()
+ fun_l10_n240
+end
+
+def fun_l9_n863()
+ fun_l10_n213
+end
+
+def fun_l9_n864()
+ fun_l10_n697
+end
+
+def fun_l9_n865()
+ fun_l10_n185
+end
+
+def fun_l9_n866()
+ fun_l10_n245
+end
+
+def fun_l9_n867()
+ fun_l10_n889
+end
+
+def fun_l9_n868()
+ fun_l10_n64
+end
+
+def fun_l9_n869()
+ fun_l10_n685
+end
+
+def fun_l9_n870()
+ fun_l10_n653
+end
+
+def fun_l9_n871()
+ fun_l10_n331
+end
+
+def fun_l9_n872()
+ fun_l10_n548
+end
+
+def fun_l9_n873()
+ fun_l10_n120
+end
+
+def fun_l9_n874()
+ fun_l10_n511
+end
+
+def fun_l9_n875()
+ fun_l10_n280
+end
+
+def fun_l9_n876()
+ fun_l10_n250
+end
+
+def fun_l9_n877()
+ fun_l10_n871
+end
+
+def fun_l9_n878()
+ fun_l10_n356
+end
+
+def fun_l9_n879()
+ fun_l10_n985
+end
+
+def fun_l9_n880()
+ fun_l10_n285
+end
+
+def fun_l9_n881()
+ fun_l10_n836
+end
+
+def fun_l9_n882()
+ fun_l10_n906
+end
+
+def fun_l9_n883()
+ fun_l10_n497
+end
+
+def fun_l9_n884()
+ fun_l10_n320
+end
+
+def fun_l9_n885()
+ fun_l10_n932
+end
+
+def fun_l9_n886()
+ fun_l10_n470
+end
+
+def fun_l9_n887()
+ fun_l10_n453
+end
+
+def fun_l9_n888()
+ fun_l10_n208
+end
+
+def fun_l9_n889()
+ fun_l10_n80
+end
+
+def fun_l9_n890()
+ fun_l10_n943
+end
+
+def fun_l9_n891()
+ fun_l10_n711
+end
+
+def fun_l9_n892()
+ fun_l10_n548
+end
+
+def fun_l9_n893()
+ fun_l10_n160
+end
+
+def fun_l9_n894()
+ fun_l10_n44
+end
+
+def fun_l9_n895()
+ fun_l10_n241
+end
+
+def fun_l9_n896()
+ fun_l10_n390
+end
+
+def fun_l9_n897()
+ fun_l10_n133
+end
+
+def fun_l9_n898()
+ fun_l10_n3
+end
+
+def fun_l9_n899()
+ fun_l10_n651
+end
+
+def fun_l9_n900()
+ fun_l10_n556
+end
+
+def fun_l9_n901()
+ fun_l10_n423
+end
+
+def fun_l9_n902()
+ fun_l10_n521
+end
+
+def fun_l9_n903()
+ fun_l10_n589
+end
+
+def fun_l9_n904()
+ fun_l10_n284
+end
+
+def fun_l9_n905()
+ fun_l10_n816
+end
+
+def fun_l9_n906()
+ fun_l10_n326
+end
+
+def fun_l9_n907()
+ fun_l10_n309
+end
+
+def fun_l9_n908()
+ fun_l10_n656
+end
+
+def fun_l9_n909()
+ fun_l10_n636
+end
+
+def fun_l9_n910()
+ fun_l10_n633
+end
+
+def fun_l9_n911()
+ fun_l10_n955
+end
+
+def fun_l9_n912()
+ fun_l10_n807
+end
+
+def fun_l9_n913()
+ fun_l10_n547
+end
+
+def fun_l9_n914()
+ fun_l10_n300
+end
+
+def fun_l9_n915()
+ fun_l10_n98
+end
+
+def fun_l9_n916()
+ fun_l10_n848
+end
+
+def fun_l9_n917()
+ fun_l10_n702
+end
+
+def fun_l9_n918()
+ fun_l10_n102
+end
+
+def fun_l9_n919()
+ fun_l10_n184
+end
+
+def fun_l9_n920()
+ fun_l10_n91
+end
+
+def fun_l9_n921()
+ fun_l10_n744
+end
+
+def fun_l9_n922()
+ fun_l10_n923
+end
+
+def fun_l9_n923()
+ fun_l10_n710
+end
+
+def fun_l9_n924()
+ fun_l10_n137
+end
+
+def fun_l9_n925()
+ fun_l10_n381
+end
+
+def fun_l9_n926()
+ fun_l10_n795
+end
+
+def fun_l9_n927()
+ fun_l10_n255
+end
+
+def fun_l9_n928()
+ fun_l10_n191
+end
+
+def fun_l9_n929()
+ fun_l10_n650
+end
+
+def fun_l9_n930()
+ fun_l10_n928
+end
+
+def fun_l9_n931()
+ fun_l10_n277
+end
+
+def fun_l9_n932()
+ fun_l10_n269
+end
+
+def fun_l9_n933()
+ fun_l10_n221
+end
+
+def fun_l9_n934()
+ fun_l10_n2
+end
+
+def fun_l9_n935()
+ fun_l10_n359
+end
+
+def fun_l9_n936()
+ fun_l10_n403
+end
+
+def fun_l9_n937()
+ fun_l10_n376
+end
+
+def fun_l9_n938()
+ fun_l10_n309
+end
+
+def fun_l9_n939()
+ fun_l10_n245
+end
+
+def fun_l9_n940()
+ fun_l10_n973
+end
+
+def fun_l9_n941()
+ fun_l10_n835
+end
+
+def fun_l9_n942()
+ fun_l10_n884
+end
+
+def fun_l9_n943()
+ fun_l10_n700
+end
+
+def fun_l9_n944()
+ fun_l10_n809
+end
+
+def fun_l9_n945()
+ fun_l10_n864
+end
+
+def fun_l9_n946()
+ fun_l10_n577
+end
+
+def fun_l9_n947()
+ fun_l10_n487
+end
+
+def fun_l9_n948()
+ fun_l10_n205
+end
+
+def fun_l9_n949()
+ fun_l10_n980
+end
+
+def fun_l9_n950()
+ fun_l10_n855
+end
+
+def fun_l9_n951()
+ fun_l10_n100
+end
+
+def fun_l9_n952()
+ fun_l10_n514
+end
+
+def fun_l9_n953()
+ fun_l10_n385
+end
+
+def fun_l9_n954()
+ fun_l10_n676
+end
+
+def fun_l9_n955()
+ fun_l10_n808
+end
+
+def fun_l9_n956()
+ fun_l10_n111
+end
+
+def fun_l9_n957()
+ fun_l10_n571
+end
+
+def fun_l9_n958()
+ fun_l10_n895
+end
+
+def fun_l9_n959()
+ fun_l10_n858
+end
+
+def fun_l9_n960()
+ fun_l10_n74
+end
+
+def fun_l9_n961()
+ fun_l10_n952
+end
+
+def fun_l9_n962()
+ fun_l10_n164
+end
+
+def fun_l9_n963()
+ fun_l10_n149
+end
+
+def fun_l9_n964()
+ fun_l10_n705
+end
+
+def fun_l9_n965()
+ fun_l10_n406
+end
+
+def fun_l9_n966()
+ fun_l10_n569
+end
+
+def fun_l9_n967()
+ fun_l10_n57
+end
+
+def fun_l9_n968()
+ fun_l10_n402
+end
+
+def fun_l9_n969()
+ fun_l10_n988
+end
+
+def fun_l9_n970()
+ fun_l10_n114
+end
+
+def fun_l9_n971()
+ fun_l10_n456
+end
+
+def fun_l9_n972()
+ fun_l10_n346
+end
+
+def fun_l9_n973()
+ fun_l10_n250
+end
+
+def fun_l9_n974()
+ fun_l10_n684
+end
+
+def fun_l9_n975()
+ fun_l10_n445
+end
+
+def fun_l9_n976()
+ fun_l10_n628
+end
+
+def fun_l9_n977()
+ fun_l10_n536
+end
+
+def fun_l9_n978()
+ fun_l10_n937
+end
+
+def fun_l9_n979()
+ fun_l10_n320
+end
+
+def fun_l9_n980()
+ fun_l10_n412
+end
+
+def fun_l9_n981()
+ fun_l10_n280
+end
+
+def fun_l9_n982()
+ fun_l10_n435
+end
+
+def fun_l9_n983()
+ fun_l10_n643
+end
+
+def fun_l9_n984()
+ fun_l10_n702
+end
+
+def fun_l9_n985()
+ fun_l10_n919
+end
+
+def fun_l9_n986()
+ fun_l10_n127
+end
+
+def fun_l9_n987()
+ fun_l10_n770
+end
+
+def fun_l9_n988()
+ fun_l10_n673
+end
+
+def fun_l9_n989()
+ fun_l10_n625
+end
+
+def fun_l9_n990()
+ fun_l10_n196
+end
+
+def fun_l9_n991()
+ fun_l10_n676
+end
+
+def fun_l9_n992()
+ fun_l10_n634
+end
+
+def fun_l9_n993()
+ fun_l10_n694
+end
+
+def fun_l9_n994()
+ fun_l10_n46
+end
+
+def fun_l9_n995()
+ fun_l10_n762
+end
+
+def fun_l9_n996()
+ fun_l10_n163
+end
+
+def fun_l9_n997()
+ fun_l10_n24
+end
+
+def fun_l9_n998()
+ fun_l10_n279
+end
+
+def fun_l9_n999()
+ fun_l10_n110
+end
+
+def fun_l10_n0()
+ fun_l11_n375
+end
+
+def fun_l10_n1()
+ fun_l11_n360
+end
+
+def fun_l10_n2()
+ fun_l11_n220
+end
+
+def fun_l10_n3()
+ fun_l11_n847
+end
+
+def fun_l10_n4()
+ fun_l11_n431
+end
+
+def fun_l10_n5()
+ fun_l11_n609
+end
+
+def fun_l10_n6()
+ fun_l11_n584
+end
+
+def fun_l10_n7()
+ fun_l11_n41
+end
+
+def fun_l10_n8()
+ fun_l11_n259
+end
+
+def fun_l10_n9()
+ fun_l11_n885
+end
+
+def fun_l10_n10()
+ fun_l11_n353
+end
+
+def fun_l10_n11()
+ fun_l11_n675
+end
+
+def fun_l10_n12()
+ fun_l11_n208
+end
+
+def fun_l10_n13()
+ fun_l11_n66
+end
+
+def fun_l10_n14()
+ fun_l11_n420
+end
+
+def fun_l10_n15()
+ fun_l11_n987
+end
+
+def fun_l10_n16()
+ fun_l11_n703
+end
+
+def fun_l10_n17()
+ fun_l11_n755
+end
+
+def fun_l10_n18()
+ fun_l11_n996
+end
+
+def fun_l10_n19()
+ fun_l11_n189
+end
+
+def fun_l10_n20()
+ fun_l11_n950
+end
+
+def fun_l10_n21()
+ fun_l11_n602
+end
+
+def fun_l10_n22()
+ fun_l11_n971
+end
+
+def fun_l10_n23()
+ fun_l11_n797
+end
+
+def fun_l10_n24()
+ fun_l11_n950
+end
+
+def fun_l10_n25()
+ fun_l11_n606
+end
+
+def fun_l10_n26()
+ fun_l11_n201
+end
+
+def fun_l10_n27()
+ fun_l11_n844
+end
+
+def fun_l10_n28()
+ fun_l11_n546
+end
+
+def fun_l10_n29()
+ fun_l11_n448
+end
+
+def fun_l10_n30()
+ fun_l11_n717
+end
+
+def fun_l10_n31()
+ fun_l11_n236
+end
+
+def fun_l10_n32()
+ fun_l11_n49
+end
+
+def fun_l10_n33()
+ fun_l11_n930
+end
+
+def fun_l10_n34()
+ fun_l11_n818
+end
+
+def fun_l10_n35()
+ fun_l11_n795
+end
+
+def fun_l10_n36()
+ fun_l11_n933
+end
+
+def fun_l10_n37()
+ fun_l11_n198
+end
+
+def fun_l10_n38()
+ fun_l11_n666
+end
+
+def fun_l10_n39()
+ fun_l11_n998
+end
+
+def fun_l10_n40()
+ fun_l11_n570
+end
+
+def fun_l10_n41()
+ fun_l11_n759
+end
+
+def fun_l10_n42()
+ fun_l11_n306
+end
+
+def fun_l10_n43()
+ fun_l11_n735
+end
+
+def fun_l10_n44()
+ fun_l11_n730
+end
+
+def fun_l10_n45()
+ fun_l11_n429
+end
+
+def fun_l10_n46()
+ fun_l11_n239
+end
+
+def fun_l10_n47()
+ fun_l11_n877
+end
+
+def fun_l10_n48()
+ fun_l11_n615
+end
+
+def fun_l10_n49()
+ fun_l11_n462
+end
+
+def fun_l10_n50()
+ fun_l11_n187
+end
+
+def fun_l10_n51()
+ fun_l11_n584
+end
+
+def fun_l10_n52()
+ fun_l11_n565
+end
+
+def fun_l10_n53()
+ fun_l11_n53
+end
+
+def fun_l10_n54()
+ fun_l11_n69
+end
+
+def fun_l10_n55()
+ fun_l11_n594
+end
+
+def fun_l10_n56()
+ fun_l11_n307
+end
+
+def fun_l10_n57()
+ fun_l11_n913
+end
+
+def fun_l10_n58()
+ fun_l11_n814
+end
+
+def fun_l10_n59()
+ fun_l11_n764
+end
+
+def fun_l10_n60()
+ fun_l11_n367
+end
+
+def fun_l10_n61()
+ fun_l11_n335
+end
+
+def fun_l10_n62()
+ fun_l11_n166
+end
+
+def fun_l10_n63()
+ fun_l11_n348
+end
+
+def fun_l10_n64()
+ fun_l11_n175
+end
+
+def fun_l10_n65()
+ fun_l11_n685
+end
+
+def fun_l10_n66()
+ fun_l11_n804
+end
+
+def fun_l10_n67()
+ fun_l11_n857
+end
+
+def fun_l10_n68()
+ fun_l11_n361
+end
+
+def fun_l10_n69()
+ fun_l11_n744
+end
+
+def fun_l10_n70()
+ fun_l11_n902
+end
+
+def fun_l10_n71()
+ fun_l11_n142
+end
+
+def fun_l10_n72()
+ fun_l11_n129
+end
+
+def fun_l10_n73()
+ fun_l11_n597
+end
+
+def fun_l10_n74()
+ fun_l11_n416
+end
+
+def fun_l10_n75()
+ fun_l11_n983
+end
+
+def fun_l10_n76()
+ fun_l11_n504
+end
+
+def fun_l10_n77()
+ fun_l11_n887
+end
+
+def fun_l10_n78()
+ fun_l11_n114
+end
+
+def fun_l10_n79()
+ fun_l11_n292
+end
+
+def fun_l10_n80()
+ fun_l11_n635
+end
+
+def fun_l10_n81()
+ fun_l11_n910
+end
+
+def fun_l10_n82()
+ fun_l11_n82
+end
+
+def fun_l10_n83()
+ fun_l11_n149
+end
+
+def fun_l10_n84()
+ fun_l11_n240
+end
+
+def fun_l10_n85()
+ fun_l11_n349
+end
+
+def fun_l10_n86()
+ fun_l11_n873
+end
+
+def fun_l10_n87()
+ fun_l11_n269
+end
+
+def fun_l10_n88()
+ fun_l11_n81
+end
+
+def fun_l10_n89()
+ fun_l11_n735
+end
+
+def fun_l10_n90()
+ fun_l11_n21
+end
+
+def fun_l10_n91()
+ fun_l11_n491
+end
+
+def fun_l10_n92()
+ fun_l11_n808
+end
+
+def fun_l10_n93()
+ fun_l11_n628
+end
+
+def fun_l10_n94()
+ fun_l11_n456
+end
+
+def fun_l10_n95()
+ fun_l11_n982
+end
+
+def fun_l10_n96()
+ fun_l11_n440
+end
+
+def fun_l10_n97()
+ fun_l11_n406
+end
+
+def fun_l10_n98()
+ fun_l11_n920
+end
+
+def fun_l10_n99()
+ fun_l11_n155
+end
+
+def fun_l10_n100()
+ fun_l11_n673
+end
+
+def fun_l10_n101()
+ fun_l11_n902
+end
+
+def fun_l10_n102()
+ fun_l11_n321
+end
+
+def fun_l10_n103()
+ fun_l11_n723
+end
+
+def fun_l10_n104()
+ fun_l11_n914
+end
+
+def fun_l10_n105()
+ fun_l11_n305
+end
+
+def fun_l10_n106()
+ fun_l11_n16
+end
+
+def fun_l10_n107()
+ fun_l11_n342
+end
+
+def fun_l10_n108()
+ fun_l11_n808
+end
+
+def fun_l10_n109()
+ fun_l11_n593
+end
+
+def fun_l10_n110()
+ fun_l11_n912
+end
+
+def fun_l10_n111()
+ fun_l11_n373
+end
+
+def fun_l10_n112()
+ fun_l11_n491
+end
+
+def fun_l10_n113()
+ fun_l11_n893
+end
+
+def fun_l10_n114()
+ fun_l11_n776
+end
+
+def fun_l10_n115()
+ fun_l11_n932
+end
+
+def fun_l10_n116()
+ fun_l11_n347
+end
+
+def fun_l10_n117()
+ fun_l11_n475
+end
+
+def fun_l10_n118()
+ fun_l11_n656
+end
+
+def fun_l10_n119()
+ fun_l11_n199
+end
+
+def fun_l10_n120()
+ fun_l11_n888
+end
+
+def fun_l10_n121()
+ fun_l11_n110
+end
+
+def fun_l10_n122()
+ fun_l11_n520
+end
+
+def fun_l10_n123()
+ fun_l11_n743
+end
+
+def fun_l10_n124()
+ fun_l11_n830
+end
+
+def fun_l10_n125()
+ fun_l11_n740
+end
+
+def fun_l10_n126()
+ fun_l11_n693
+end
+
+def fun_l10_n127()
+ fun_l11_n500
+end
+
+def fun_l10_n128()
+ fun_l11_n311
+end
+
+def fun_l10_n129()
+ fun_l11_n842
+end
+
+def fun_l10_n130()
+ fun_l11_n769
+end
+
+def fun_l10_n131()
+ fun_l11_n341
+end
+
+def fun_l10_n132()
+ fun_l11_n367
+end
+
+def fun_l10_n133()
+ fun_l11_n872
+end
+
+def fun_l10_n134()
+ fun_l11_n460
+end
+
+def fun_l10_n135()
+ fun_l11_n154
+end
+
+def fun_l10_n136()
+ fun_l11_n953
+end
+
+def fun_l10_n137()
+ fun_l11_n300
+end
+
+def fun_l10_n138()
+ fun_l11_n466
+end
+
+def fun_l10_n139()
+ fun_l11_n474
+end
+
+def fun_l10_n140()
+ fun_l11_n145
+end
+
+def fun_l10_n141()
+ fun_l11_n953
+end
+
+def fun_l10_n142()
+ fun_l11_n613
+end
+
+def fun_l10_n143()
+ fun_l11_n55
+end
+
+def fun_l10_n144()
+ fun_l11_n847
+end
+
+def fun_l10_n145()
+ fun_l11_n888
+end
+
+def fun_l10_n146()
+ fun_l11_n721
+end
+
+def fun_l10_n147()
+ fun_l11_n8
+end
+
+def fun_l10_n148()
+ fun_l11_n595
+end
+
+def fun_l10_n149()
+ fun_l11_n326
+end
+
+def fun_l10_n150()
+ fun_l11_n134
+end
+
+def fun_l10_n151()
+ fun_l11_n567
+end
+
+def fun_l10_n152()
+ fun_l11_n87
+end
+
+def fun_l10_n153()
+ fun_l11_n581
+end
+
+def fun_l10_n154()
+ fun_l11_n973
+end
+
+def fun_l10_n155()
+ fun_l11_n349
+end
+
+def fun_l10_n156()
+ fun_l11_n550
+end
+
+def fun_l10_n157()
+ fun_l11_n545
+end
+
+def fun_l10_n158()
+ fun_l11_n325
+end
+
+def fun_l10_n159()
+ fun_l11_n568
+end
+
+def fun_l10_n160()
+ fun_l11_n768
+end
+
+def fun_l10_n161()
+ fun_l11_n320
+end
+
+def fun_l10_n162()
+ fun_l11_n667
+end
+
+def fun_l10_n163()
+ fun_l11_n415
+end
+
+def fun_l10_n164()
+ fun_l11_n185
+end
+
+def fun_l10_n165()
+ fun_l11_n576
+end
+
+def fun_l10_n166()
+ fun_l11_n436
+end
+
+def fun_l10_n167()
+ fun_l11_n290
+end
+
+def fun_l10_n168()
+ fun_l11_n783
+end
+
+def fun_l10_n169()
+ fun_l11_n865
+end
+
+def fun_l10_n170()
+ fun_l11_n837
+end
+
+def fun_l10_n171()
+ fun_l11_n806
+end
+
+def fun_l10_n172()
+ fun_l11_n847
+end
+
+def fun_l10_n173()
+ fun_l11_n425
+end
+
+def fun_l10_n174()
+ fun_l11_n740
+end
+
+def fun_l10_n175()
+ fun_l11_n885
+end
+
+def fun_l10_n176()
+ fun_l11_n787
+end
+
+def fun_l10_n177()
+ fun_l11_n189
+end
+
+def fun_l10_n178()
+ fun_l11_n122
+end
+
+def fun_l10_n179()
+ fun_l11_n132
+end
+
+def fun_l10_n180()
+ fun_l11_n778
+end
+
+def fun_l10_n181()
+ fun_l11_n45
+end
+
+def fun_l10_n182()
+ fun_l11_n856
+end
+
+def fun_l10_n183()
+ fun_l11_n853
+end
+
+def fun_l10_n184()
+ fun_l11_n370
+end
+
+def fun_l10_n185()
+ fun_l11_n850
+end
+
+def fun_l10_n186()
+ fun_l11_n623
+end
+
+def fun_l10_n187()
+ fun_l11_n747
+end
+
+def fun_l10_n188()
+ fun_l11_n792
+end
+
+def fun_l10_n189()
+ fun_l11_n184
+end
+
+def fun_l10_n190()
+ fun_l11_n683
+end
+
+def fun_l10_n191()
+ fun_l11_n831
+end
+
+def fun_l10_n192()
+ fun_l11_n741
+end
+
+def fun_l10_n193()
+ fun_l11_n380
+end
+
+def fun_l10_n194()
+ fun_l11_n183
+end
+
+def fun_l10_n195()
+ fun_l11_n800
+end
+
+def fun_l10_n196()
+ fun_l11_n466
+end
+
+def fun_l10_n197()
+ fun_l11_n930
+end
+
+def fun_l10_n198()
+ fun_l11_n680
+end
+
+def fun_l10_n199()
+ fun_l11_n820
+end
+
+def fun_l10_n200()
+ fun_l11_n699
+end
+
+def fun_l10_n201()
+ fun_l11_n246
+end
+
+def fun_l10_n202()
+ fun_l11_n238
+end
+
+def fun_l10_n203()
+ fun_l11_n481
+end
+
+def fun_l10_n204()
+ fun_l11_n586
+end
+
+def fun_l10_n205()
+ fun_l11_n550
+end
+
+def fun_l10_n206()
+ fun_l11_n662
+end
+
+def fun_l10_n207()
+ fun_l11_n680
+end
+
+def fun_l10_n208()
+ fun_l11_n544
+end
+
+def fun_l10_n209()
+ fun_l11_n927
+end
+
+def fun_l10_n210()
+ fun_l11_n383
+end
+
+def fun_l10_n211()
+ fun_l11_n21
+end
+
+def fun_l10_n212()
+ fun_l11_n628
+end
+
+def fun_l10_n213()
+ fun_l11_n635
+end
+
+def fun_l10_n214()
+ fun_l11_n648
+end
+
+def fun_l10_n215()
+ fun_l11_n349
+end
+
+def fun_l10_n216()
+ fun_l11_n242
+end
+
+def fun_l10_n217()
+ fun_l11_n868
+end
+
+def fun_l10_n218()
+ fun_l11_n804
+end
+
+def fun_l10_n219()
+ fun_l11_n84
+end
+
+def fun_l10_n220()
+ fun_l11_n970
+end
+
+def fun_l10_n221()
+ fun_l11_n400
+end
+
+def fun_l10_n222()
+ fun_l11_n133
+end
+
+def fun_l10_n223()
+ fun_l11_n58
+end
+
+def fun_l10_n224()
+ fun_l11_n790
+end
+
+def fun_l10_n225()
+ fun_l11_n738
+end
+
+def fun_l10_n226()
+ fun_l11_n682
+end
+
+def fun_l10_n227()
+ fun_l11_n822
+end
+
+def fun_l10_n228()
+ fun_l11_n630
+end
+
+def fun_l10_n229()
+ fun_l11_n399
+end
+
+def fun_l10_n230()
+ fun_l11_n177
+end
+
+def fun_l10_n231()
+ fun_l11_n531
+end
+
+def fun_l10_n232()
+ fun_l11_n671
+end
+
+def fun_l10_n233()
+ fun_l11_n34
+end
+
+def fun_l10_n234()
+ fun_l11_n305
+end
+
+def fun_l10_n235()
+ fun_l11_n410
+end
+
+def fun_l10_n236()
+ fun_l11_n72
+end
+
+def fun_l10_n237()
+ fun_l11_n236
+end
+
+def fun_l10_n238()
+ fun_l11_n135
+end
+
+def fun_l10_n239()
+ fun_l11_n718
+end
+
+def fun_l10_n240()
+ fun_l11_n453
+end
+
+def fun_l10_n241()
+ fun_l11_n965
+end
+
+def fun_l10_n242()
+ fun_l11_n919
+end
+
+def fun_l10_n243()
+ fun_l11_n56
+end
+
+def fun_l10_n244()
+ fun_l11_n853
+end
+
+def fun_l10_n245()
+ fun_l11_n719
+end
+
+def fun_l10_n246()
+ fun_l11_n45
+end
+
+def fun_l10_n247()
+ fun_l11_n344
+end
+
+def fun_l10_n248()
+ fun_l11_n907
+end
+
+def fun_l10_n249()
+ fun_l11_n340
+end
+
+def fun_l10_n250()
+ fun_l11_n625
+end
+
+def fun_l10_n251()
+ fun_l11_n274
+end
+
+def fun_l10_n252()
+ fun_l11_n392
+end
+
+def fun_l10_n253()
+ fun_l11_n15
+end
+
+def fun_l10_n254()
+ fun_l11_n474
+end
+
+def fun_l10_n255()
+ fun_l11_n792
+end
+
+def fun_l10_n256()
+ fun_l11_n580
+end
+
+def fun_l10_n257()
+ fun_l11_n375
+end
+
+def fun_l10_n258()
+ fun_l11_n169
+end
+
+def fun_l10_n259()
+ fun_l11_n792
+end
+
+def fun_l10_n260()
+ fun_l11_n553
+end
+
+def fun_l10_n261()
+ fun_l11_n919
+end
+
+def fun_l10_n262()
+ fun_l11_n814
+end
+
+def fun_l10_n263()
+ fun_l11_n845
+end
+
+def fun_l10_n264()
+ fun_l11_n337
+end
+
+def fun_l10_n265()
+ fun_l11_n362
+end
+
+def fun_l10_n266()
+ fun_l11_n400
+end
+
+def fun_l10_n267()
+ fun_l11_n335
+end
+
+def fun_l10_n268()
+ fun_l11_n142
+end
+
+def fun_l10_n269()
+ fun_l11_n262
+end
+
+def fun_l10_n270()
+ fun_l11_n969
+end
+
+def fun_l10_n271()
+ fun_l11_n599
+end
+
+def fun_l10_n272()
+ fun_l11_n763
+end
+
+def fun_l10_n273()
+ fun_l11_n154
+end
+
+def fun_l10_n274()
+ fun_l11_n289
+end
+
+def fun_l10_n275()
+ fun_l11_n852
+end
+
+def fun_l10_n276()
+ fun_l11_n994
+end
+
+def fun_l10_n277()
+ fun_l11_n583
+end
+
+def fun_l10_n278()
+ fun_l11_n580
+end
+
+def fun_l10_n279()
+ fun_l11_n610
+end
+
+def fun_l10_n280()
+ fun_l11_n624
+end
+
+def fun_l10_n281()
+ fun_l11_n987
+end
+
+def fun_l10_n282()
+ fun_l11_n973
+end
+
+def fun_l10_n283()
+ fun_l11_n128
+end
+
+def fun_l10_n284()
+ fun_l11_n864
+end
+
+def fun_l10_n285()
+ fun_l11_n270
+end
+
+def fun_l10_n286()
+ fun_l11_n878
+end
+
+def fun_l10_n287()
+ fun_l11_n242
+end
+
+def fun_l10_n288()
+ fun_l11_n214
+end
+
+def fun_l10_n289()
+ fun_l11_n51
+end
+
+def fun_l10_n290()
+ fun_l11_n122
+end
+
+def fun_l10_n291()
+ fun_l11_n288
+end
+
+def fun_l10_n292()
+ fun_l11_n751
+end
+
+def fun_l10_n293()
+ fun_l11_n723
+end
+
+def fun_l10_n294()
+ fun_l11_n884
+end
+
+def fun_l10_n295()
+ fun_l11_n671
+end
+
+def fun_l10_n296()
+ fun_l11_n949
+end
+
+def fun_l10_n297()
+ fun_l11_n859
+end
+
+def fun_l10_n298()
+ fun_l11_n293
+end
+
+def fun_l10_n299()
+ fun_l11_n548
+end
+
+def fun_l10_n300()
+ fun_l11_n659
+end
+
+def fun_l10_n301()
+ fun_l11_n434
+end
+
+def fun_l10_n302()
+ fun_l11_n251
+end
+
+def fun_l10_n303()
+ fun_l11_n225
+end
+
+def fun_l10_n304()
+ fun_l11_n242
+end
+
+def fun_l10_n305()
+ fun_l11_n401
+end
+
+def fun_l10_n306()
+ fun_l11_n603
+end
+
+def fun_l10_n307()
+ fun_l11_n926
+end
+
+def fun_l10_n308()
+ fun_l11_n922
+end
+
+def fun_l10_n309()
+ fun_l11_n27
+end
+
+def fun_l10_n310()
+ fun_l11_n834
+end
+
+def fun_l10_n311()
+ fun_l11_n119
+end
+
+def fun_l10_n312()
+ fun_l11_n391
+end
+
+def fun_l10_n313()
+ fun_l11_n768
+end
+
+def fun_l10_n314()
+ fun_l11_n147
+end
+
+def fun_l10_n315()
+ fun_l11_n472
+end
+
+def fun_l10_n316()
+ fun_l11_n107
+end
+
+def fun_l10_n317()
+ fun_l11_n682
+end
+
+def fun_l10_n318()
+ fun_l11_n670
+end
+
+def fun_l10_n319()
+ fun_l11_n827
+end
+
+def fun_l10_n320()
+ fun_l11_n812
+end
+
+def fun_l10_n321()
+ fun_l11_n737
+end
+
+def fun_l10_n322()
+ fun_l11_n446
+end
+
+def fun_l10_n323()
+ fun_l11_n312
+end
+
+def fun_l10_n324()
+ fun_l11_n697
+end
+
+def fun_l10_n325()
+ fun_l11_n785
+end
+
+def fun_l10_n326()
+ fun_l11_n379
+end
+
+def fun_l10_n327()
+ fun_l11_n994
+end
+
+def fun_l10_n328()
+ fun_l11_n651
+end
+
+def fun_l10_n329()
+ fun_l11_n896
+end
+
+def fun_l10_n330()
+ fun_l11_n289
+end
+
+def fun_l10_n331()
+ fun_l11_n217
+end
+
+def fun_l10_n332()
+ fun_l11_n502
+end
+
+def fun_l10_n333()
+ fun_l11_n24
+end
+
+def fun_l10_n334()
+ fun_l11_n187
+end
+
+def fun_l10_n335()
+ fun_l11_n301
+end
+
+def fun_l10_n336()
+ fun_l11_n640
+end
+
+def fun_l10_n337()
+ fun_l11_n90
+end
+
+def fun_l10_n338()
+ fun_l11_n226
+end
+
+def fun_l10_n339()
+ fun_l11_n192
+end
+
+def fun_l10_n340()
+ fun_l11_n737
+end
+
+def fun_l10_n341()
+ fun_l11_n197
+end
+
+def fun_l10_n342()
+ fun_l11_n859
+end
+
+def fun_l10_n343()
+ fun_l11_n406
+end
+
+def fun_l10_n344()
+ fun_l11_n179
+end
+
+def fun_l10_n345()
+ fun_l11_n535
+end
+
+def fun_l10_n346()
+ fun_l11_n330
+end
+
+def fun_l10_n347()
+ fun_l11_n117
+end
+
+def fun_l10_n348()
+ fun_l11_n399
+end
+
+def fun_l10_n349()
+ fun_l11_n129
+end
+
+def fun_l10_n350()
+ fun_l11_n295
+end
+
+def fun_l10_n351()
+ fun_l11_n226
+end
+
+def fun_l10_n352()
+ fun_l11_n551
+end
+
+def fun_l10_n353()
+ fun_l11_n394
+end
+
+def fun_l10_n354()
+ fun_l11_n120
+end
+
+def fun_l10_n355()
+ fun_l11_n713
+end
+
+def fun_l10_n356()
+ fun_l11_n873
+end
+
+def fun_l10_n357()
+ fun_l11_n841
+end
+
+def fun_l10_n358()
+ fun_l11_n708
+end
+
+def fun_l10_n359()
+ fun_l11_n351
+end
+
+def fun_l10_n360()
+ fun_l11_n753
+end
+
+def fun_l10_n361()
+ fun_l11_n397
+end
+
+def fun_l10_n362()
+ fun_l11_n986
+end
+
+def fun_l10_n363()
+ fun_l11_n544
+end
+
+def fun_l10_n364()
+ fun_l11_n476
+end
+
+def fun_l10_n365()
+ fun_l11_n596
+end
+
+def fun_l10_n366()
+ fun_l11_n922
+end
+
+def fun_l10_n367()
+ fun_l11_n137
+end
+
+def fun_l10_n368()
+ fun_l11_n87
+end
+
+def fun_l10_n369()
+ fun_l11_n537
+end
+
+def fun_l10_n370()
+ fun_l11_n678
+end
+
+def fun_l10_n371()
+ fun_l11_n729
+end
+
+def fun_l10_n372()
+ fun_l11_n286
+end
+
+def fun_l10_n373()
+ fun_l11_n831
+end
+
+def fun_l10_n374()
+ fun_l11_n130
+end
+
+def fun_l10_n375()
+ fun_l11_n853
+end
+
+def fun_l10_n376()
+ fun_l11_n876
+end
+
+def fun_l10_n377()
+ fun_l11_n291
+end
+
+def fun_l10_n378()
+ fun_l11_n823
+end
+
+def fun_l10_n379()
+ fun_l11_n66
+end
+
+def fun_l10_n380()
+ fun_l11_n460
+end
+
+def fun_l10_n381()
+ fun_l11_n261
+end
+
+def fun_l10_n382()
+ fun_l11_n632
+end
+
+def fun_l10_n383()
+ fun_l11_n341
+end
+
+def fun_l10_n384()
+ fun_l11_n158
+end
+
+def fun_l10_n385()
+ fun_l11_n105
+end
+
+def fun_l10_n386()
+ fun_l11_n735
+end
+
+def fun_l10_n387()
+ fun_l11_n659
+end
+
+def fun_l10_n388()
+ fun_l11_n232
+end
+
+def fun_l10_n389()
+ fun_l11_n909
+end
+
+def fun_l10_n390()
+ fun_l11_n594
+end
+
+def fun_l10_n391()
+ fun_l11_n347
+end
+
+def fun_l10_n392()
+ fun_l11_n650
+end
+
+def fun_l10_n393()
+ fun_l11_n652
+end
+
+def fun_l10_n394()
+ fun_l11_n129
+end
+
+def fun_l10_n395()
+ fun_l11_n791
+end
+
+def fun_l10_n396()
+ fun_l11_n933
+end
+
+def fun_l10_n397()
+ fun_l11_n903
+end
+
+def fun_l10_n398()
+ fun_l11_n301
+end
+
+def fun_l10_n399()
+ fun_l11_n102
+end
+
+def fun_l10_n400()
+ fun_l11_n865
+end
+
+def fun_l10_n401()
+ fun_l11_n112
+end
+
+def fun_l10_n402()
+ fun_l11_n242
+end
+
+def fun_l10_n403()
+ fun_l11_n928
+end
+
+def fun_l10_n404()
+ fun_l11_n289
+end
+
+def fun_l10_n405()
+ fun_l11_n435
+end
+
+def fun_l10_n406()
+ fun_l11_n303
+end
+
+def fun_l10_n407()
+ fun_l11_n979
+end
+
+def fun_l10_n408()
+ fun_l11_n785
+end
+
+def fun_l10_n409()
+ fun_l11_n241
+end
+
+def fun_l10_n410()
+ fun_l11_n32
+end
+
+def fun_l10_n411()
+ fun_l11_n821
+end
+
+def fun_l10_n412()
+ fun_l11_n748
+end
+
+def fun_l10_n413()
+ fun_l11_n454
+end
+
+def fun_l10_n414()
+ fun_l11_n555
+end
+
+def fun_l10_n415()
+ fun_l11_n136
+end
+
+def fun_l10_n416()
+ fun_l11_n996
+end
+
+def fun_l10_n417()
+ fun_l11_n987
+end
+
+def fun_l10_n418()
+ fun_l11_n987
+end
+
+def fun_l10_n419()
+ fun_l11_n817
+end
+
+def fun_l10_n420()
+ fun_l11_n674
+end
+
+def fun_l10_n421()
+ fun_l11_n57
+end
+
+def fun_l10_n422()
+ fun_l11_n43
+end
+
+def fun_l10_n423()
+ fun_l11_n767
+end
+
+def fun_l10_n424()
+ fun_l11_n924
+end
+
+def fun_l10_n425()
+ fun_l11_n63
+end
+
+def fun_l10_n426()
+ fun_l11_n636
+end
+
+def fun_l10_n427()
+ fun_l11_n824
+end
+
+def fun_l10_n428()
+ fun_l11_n266
+end
+
+def fun_l10_n429()
+ fun_l11_n540
+end
+
+def fun_l10_n430()
+ fun_l11_n992
+end
+
+def fun_l10_n431()
+ fun_l11_n215
+end
+
+def fun_l10_n432()
+ fun_l11_n28
+end
+
+def fun_l10_n433()
+ fun_l11_n37
+end
+
+def fun_l10_n434()
+ fun_l11_n38
+end
+
+def fun_l10_n435()
+ fun_l11_n937
+end
+
+def fun_l10_n436()
+ fun_l11_n419
+end
+
+def fun_l10_n437()
+ fun_l11_n390
+end
+
+def fun_l10_n438()
+ fun_l11_n987
+end
+
+def fun_l10_n439()
+ fun_l11_n742
+end
+
+def fun_l10_n440()
+ fun_l11_n173
+end
+
+def fun_l10_n441()
+ fun_l11_n640
+end
+
+def fun_l10_n442()
+ fun_l11_n111
+end
+
+def fun_l10_n443()
+ fun_l11_n492
+end
+
+def fun_l10_n444()
+ fun_l11_n659
+end
+
+def fun_l10_n445()
+ fun_l11_n863
+end
+
+def fun_l10_n446()
+ fun_l11_n938
+end
+
+def fun_l10_n447()
+ fun_l11_n54
+end
+
+def fun_l10_n448()
+ fun_l11_n224
+end
+
+def fun_l10_n449()
+ fun_l11_n863
+end
+
+def fun_l10_n450()
+ fun_l11_n80
+end
+
+def fun_l10_n451()
+ fun_l11_n791
+end
+
+def fun_l10_n452()
+ fun_l11_n93
+end
+
+def fun_l10_n453()
+ fun_l11_n416
+end
+
+def fun_l10_n454()
+ fun_l11_n610
+end
+
+def fun_l10_n455()
+ fun_l11_n455
+end
+
+def fun_l10_n456()
+ fun_l11_n834
+end
+
+def fun_l10_n457()
+ fun_l11_n462
+end
+
+def fun_l10_n458()
+ fun_l11_n69
+end
+
+def fun_l10_n459()
+ fun_l11_n174
+end
+
+def fun_l10_n460()
+ fun_l11_n657
+end
+
+def fun_l10_n461()
+ fun_l11_n608
+end
+
+def fun_l10_n462()
+ fun_l11_n248
+end
+
+def fun_l10_n463()
+ fun_l11_n492
+end
+
+def fun_l10_n464()
+ fun_l11_n125
+end
+
+def fun_l10_n465()
+ fun_l11_n737
+end
+
+def fun_l10_n466()
+ fun_l11_n354
+end
+
+def fun_l10_n467()
+ fun_l11_n890
+end
+
+def fun_l10_n468()
+ fun_l11_n753
+end
+
+def fun_l10_n469()
+ fun_l11_n380
+end
+
+def fun_l10_n470()
+ fun_l11_n428
+end
+
+def fun_l10_n471()
+ fun_l11_n243
+end
+
+def fun_l10_n472()
+ fun_l11_n532
+end
+
+def fun_l10_n473()
+ fun_l11_n328
+end
+
+def fun_l10_n474()
+ fun_l11_n922
+end
+
+def fun_l10_n475()
+ fun_l11_n115
+end
+
+def fun_l10_n476()
+ fun_l11_n705
+end
+
+def fun_l10_n477()
+ fun_l11_n457
+end
+
+def fun_l10_n478()
+ fun_l11_n201
+end
+
+def fun_l10_n479()
+ fun_l11_n801
+end
+
+def fun_l10_n480()
+ fun_l11_n492
+end
+
+def fun_l10_n481()
+ fun_l11_n148
+end
+
+def fun_l10_n482()
+ fun_l11_n802
+end
+
+def fun_l10_n483()
+ fun_l11_n725
+end
+
+def fun_l10_n484()
+ fun_l11_n835
+end
+
+def fun_l10_n485()
+ fun_l11_n564
+end
+
+def fun_l10_n486()
+ fun_l11_n803
+end
+
+def fun_l10_n487()
+ fun_l11_n696
+end
+
+def fun_l10_n488()
+ fun_l11_n171
+end
+
+def fun_l10_n489()
+ fun_l11_n759
+end
+
+def fun_l10_n490()
+ fun_l11_n728
+end
+
+def fun_l10_n491()
+ fun_l11_n64
+end
+
+def fun_l10_n492()
+ fun_l11_n717
+end
+
+def fun_l10_n493()
+ fun_l11_n97
+end
+
+def fun_l10_n494()
+ fun_l11_n157
+end
+
+def fun_l10_n495()
+ fun_l11_n589
+end
+
+def fun_l10_n496()
+ fun_l11_n642
+end
+
+def fun_l10_n497()
+ fun_l11_n994
+end
+
+def fun_l10_n498()
+ fun_l11_n566
+end
+
+def fun_l10_n499()
+ fun_l11_n325
+end
+
+def fun_l10_n500()
+ fun_l11_n905
+end
+
+def fun_l10_n501()
+ fun_l11_n242
+end
+
+def fun_l10_n502()
+ fun_l11_n135
+end
+
+def fun_l10_n503()
+ fun_l11_n476
+end
+
+def fun_l10_n504()
+ fun_l11_n63
+end
+
+def fun_l10_n505()
+ fun_l11_n908
+end
+
+def fun_l10_n506()
+ fun_l11_n51
+end
+
+def fun_l10_n507()
+ fun_l11_n261
+end
+
+def fun_l10_n508()
+ fun_l11_n680
+end
+
+def fun_l10_n509()
+ fun_l11_n346
+end
+
+def fun_l10_n510()
+ fun_l11_n490
+end
+
+def fun_l10_n511()
+ fun_l11_n896
+end
+
+def fun_l10_n512()
+ fun_l11_n788
+end
+
+def fun_l10_n513()
+ fun_l11_n672
+end
+
+def fun_l10_n514()
+ fun_l11_n17
+end
+
+def fun_l10_n515()
+ fun_l11_n744
+end
+
+def fun_l10_n516()
+ fun_l11_n90
+end
+
+def fun_l10_n517()
+ fun_l11_n451
+end
+
+def fun_l10_n518()
+ fun_l11_n942
+end
+
+def fun_l10_n519()
+ fun_l11_n275
+end
+
+def fun_l10_n520()
+ fun_l11_n422
+end
+
+def fun_l10_n521()
+ fun_l11_n463
+end
+
+def fun_l10_n522()
+ fun_l11_n198
+end
+
+def fun_l10_n523()
+ fun_l11_n703
+end
+
+def fun_l10_n524()
+ fun_l11_n745
+end
+
+def fun_l10_n525()
+ fun_l11_n476
+end
+
+def fun_l10_n526()
+ fun_l11_n122
+end
+
+def fun_l10_n527()
+ fun_l11_n111
+end
+
+def fun_l10_n528()
+ fun_l11_n354
+end
+
+def fun_l10_n529()
+ fun_l11_n63
+end
+
+def fun_l10_n530()
+ fun_l11_n652
+end
+
+def fun_l10_n531()
+ fun_l11_n535
+end
+
+def fun_l10_n532()
+ fun_l11_n990
+end
+
+def fun_l10_n533()
+ fun_l11_n506
+end
+
+def fun_l10_n534()
+ fun_l11_n741
+end
+
+def fun_l10_n535()
+ fun_l11_n12
+end
+
+def fun_l10_n536()
+ fun_l11_n138
+end
+
+def fun_l10_n537()
+ fun_l11_n247
+end
+
+def fun_l10_n538()
+ fun_l11_n469
+end
+
+def fun_l10_n539()
+ fun_l11_n574
+end
+
+def fun_l10_n540()
+ fun_l11_n474
+end
+
+def fun_l10_n541()
+ fun_l11_n639
+end
+
+def fun_l10_n542()
+ fun_l11_n932
+end
+
+def fun_l10_n543()
+ fun_l11_n587
+end
+
+def fun_l10_n544()
+ fun_l11_n502
+end
+
+def fun_l10_n545()
+ fun_l11_n134
+end
+
+def fun_l10_n546()
+ fun_l11_n470
+end
+
+def fun_l10_n547()
+ fun_l11_n118
+end
+
+def fun_l10_n548()
+ fun_l11_n253
+end
+
+def fun_l10_n549()
+ fun_l11_n331
+end
+
+def fun_l10_n550()
+ fun_l11_n461
+end
+
+def fun_l10_n551()
+ fun_l11_n807
+end
+
+def fun_l10_n552()
+ fun_l11_n266
+end
+
+def fun_l10_n553()
+ fun_l11_n537
+end
+
+def fun_l10_n554()
+ fun_l11_n649
+end
+
+def fun_l10_n555()
+ fun_l11_n620
+end
+
+def fun_l10_n556()
+ fun_l11_n646
+end
+
+def fun_l10_n557()
+ fun_l11_n972
+end
+
+def fun_l10_n558()
+ fun_l11_n311
+end
+
+def fun_l10_n559()
+ fun_l11_n555
+end
+
+def fun_l10_n560()
+ fun_l11_n930
+end
+
+def fun_l10_n561()
+ fun_l11_n249
+end
+
+def fun_l10_n562()
+ fun_l11_n270
+end
+
+def fun_l10_n563()
+ fun_l11_n769
+end
+
+def fun_l10_n564()
+ fun_l11_n281
+end
+
+def fun_l10_n565()
+ fun_l11_n213
+end
+
+def fun_l10_n566()
+ fun_l11_n849
+end
+
+def fun_l10_n567()
+ fun_l11_n665
+end
+
+def fun_l10_n568()
+ fun_l11_n339
+end
+
+def fun_l10_n569()
+ fun_l11_n476
+end
+
+def fun_l10_n570()
+ fun_l11_n732
+end
+
+def fun_l10_n571()
+ fun_l11_n266
+end
+
+def fun_l10_n572()
+ fun_l11_n85
+end
+
+def fun_l10_n573()
+ fun_l11_n260
+end
+
+def fun_l10_n574()
+ fun_l11_n275
+end
+
+def fun_l10_n575()
+ fun_l11_n673
+end
+
+def fun_l10_n576()
+ fun_l11_n252
+end
+
+def fun_l10_n577()
+ fun_l11_n376
+end
+
+def fun_l10_n578()
+ fun_l11_n407
+end
+
+def fun_l10_n579()
+ fun_l11_n134
+end
+
+def fun_l10_n580()
+ fun_l11_n825
+end
+
+def fun_l10_n581()
+ fun_l11_n266
+end
+
+def fun_l10_n582()
+ fun_l11_n40
+end
+
+def fun_l10_n583()
+ fun_l11_n346
+end
+
+def fun_l10_n584()
+ fun_l11_n503
+end
+
+def fun_l10_n585()
+ fun_l11_n743
+end
+
+def fun_l10_n586()
+ fun_l11_n199
+end
+
+def fun_l10_n587()
+ fun_l11_n268
+end
+
+def fun_l10_n588()
+ fun_l11_n6
+end
+
+def fun_l10_n589()
+ fun_l11_n859
+end
+
+def fun_l10_n590()
+ fun_l11_n499
+end
+
+def fun_l10_n591()
+ fun_l11_n397
+end
+
+def fun_l10_n592()
+ fun_l11_n580
+end
+
+def fun_l10_n593()
+ fun_l11_n299
+end
+
+def fun_l10_n594()
+ fun_l11_n691
+end
+
+def fun_l10_n595()
+ fun_l11_n973
+end
+
+def fun_l10_n596()
+ fun_l11_n987
+end
+
+def fun_l10_n597()
+ fun_l11_n342
+end
+
+def fun_l10_n598()
+ fun_l11_n556
+end
+
+def fun_l10_n599()
+ fun_l11_n754
+end
+
+def fun_l10_n600()
+ fun_l11_n54
+end
+
+def fun_l10_n601()
+ fun_l11_n334
+end
+
+def fun_l10_n602()
+ fun_l11_n6
+end
+
+def fun_l10_n603()
+ fun_l11_n574
+end
+
+def fun_l10_n604()
+ fun_l11_n615
+end
+
+def fun_l10_n605()
+ fun_l11_n314
+end
+
+def fun_l10_n606()
+ fun_l11_n659
+end
+
+def fun_l10_n607()
+ fun_l11_n41
+end
+
+def fun_l10_n608()
+ fun_l11_n119
+end
+
+def fun_l10_n609()
+ fun_l11_n204
+end
+
+def fun_l10_n610()
+ fun_l11_n952
+end
+
+def fun_l10_n611()
+ fun_l11_n587
+end
+
+def fun_l10_n612()
+ fun_l11_n87
+end
+
+def fun_l10_n613()
+ fun_l11_n840
+end
+
+def fun_l10_n614()
+ fun_l11_n520
+end
+
+def fun_l10_n615()
+ fun_l11_n814
+end
+
+def fun_l10_n616()
+ fun_l11_n595
+end
+
+def fun_l10_n617()
+ fun_l11_n765
+end
+
+def fun_l10_n618()
+ fun_l11_n383
+end
+
+def fun_l10_n619()
+ fun_l11_n277
+end
+
+def fun_l10_n620()
+ fun_l11_n897
+end
+
+def fun_l10_n621()
+ fun_l11_n131
+end
+
+def fun_l10_n622()
+ fun_l11_n674
+end
+
+def fun_l10_n623()
+ fun_l11_n971
+end
+
+def fun_l10_n624()
+ fun_l11_n503
+end
+
+def fun_l10_n625()
+ fun_l11_n471
+end
+
+def fun_l10_n626()
+ fun_l11_n805
+end
+
+def fun_l10_n627()
+ fun_l11_n58
+end
+
+def fun_l10_n628()
+ fun_l11_n784
+end
+
+def fun_l10_n629()
+ fun_l11_n222
+end
+
+def fun_l10_n630()
+ fun_l11_n382
+end
+
+def fun_l10_n631()
+ fun_l11_n239
+end
+
+def fun_l10_n632()
+ fun_l11_n53
+end
+
+def fun_l10_n633()
+ fun_l11_n730
+end
+
+def fun_l10_n634()
+ fun_l11_n522
+end
+
+def fun_l10_n635()
+ fun_l11_n182
+end
+
+def fun_l10_n636()
+ fun_l11_n837
+end
+
+def fun_l10_n637()
+ fun_l11_n815
+end
+
+def fun_l10_n638()
+ fun_l11_n754
+end
+
+def fun_l10_n639()
+ fun_l11_n74
+end
+
+def fun_l10_n640()
+ fun_l11_n695
+end
+
+def fun_l10_n641()
+ fun_l11_n454
+end
+
+def fun_l10_n642()
+ fun_l11_n250
+end
+
+def fun_l10_n643()
+ fun_l11_n385
+end
+
+def fun_l10_n644()
+ fun_l11_n115
+end
+
+def fun_l10_n645()
+ fun_l11_n624
+end
+
+def fun_l10_n646()
+ fun_l11_n697
+end
+
+def fun_l10_n647()
+ fun_l11_n184
+end
+
+def fun_l10_n648()
+ fun_l11_n921
+end
+
+def fun_l10_n649()
+ fun_l11_n699
+end
+
+def fun_l10_n650()
+ fun_l11_n952
+end
+
+def fun_l10_n651()
+ fun_l11_n879
+end
+
+def fun_l10_n652()
+ fun_l11_n569
+end
+
+def fun_l10_n653()
+ fun_l11_n85
+end
+
+def fun_l10_n654()
+ fun_l11_n316
+end
+
+def fun_l10_n655()
+ fun_l11_n203
+end
+
+def fun_l10_n656()
+ fun_l11_n424
+end
+
+def fun_l10_n657()
+ fun_l11_n731
+end
+
+def fun_l10_n658()
+ fun_l11_n65
+end
+
+def fun_l10_n659()
+ fun_l11_n232
+end
+
+def fun_l10_n660()
+ fun_l11_n306
+end
+
+def fun_l10_n661()
+ fun_l11_n71
+end
+
+def fun_l10_n662()
+ fun_l11_n577
+end
+
+def fun_l10_n663()
+ fun_l11_n670
+end
+
+def fun_l10_n664()
+ fun_l11_n905
+end
+
+def fun_l10_n665()
+ fun_l11_n717
+end
+
+def fun_l10_n666()
+ fun_l11_n198
+end
+
+def fun_l10_n667()
+ fun_l11_n982
+end
+
+def fun_l10_n668()
+ fun_l11_n933
+end
+
+def fun_l10_n669()
+ fun_l11_n446
+end
+
+def fun_l10_n670()
+ fun_l11_n913
+end
+
+def fun_l10_n671()
+ fun_l11_n794
+end
+
+def fun_l10_n672()
+ fun_l11_n604
+end
+
+def fun_l10_n673()
+ fun_l11_n408
+end
+
+def fun_l10_n674()
+ fun_l11_n297
+end
+
+def fun_l10_n675()
+ fun_l11_n113
+end
+
+def fun_l10_n676()
+ fun_l11_n197
+end
+
+def fun_l10_n677()
+ fun_l11_n606
+end
+
+def fun_l10_n678()
+ fun_l11_n333
+end
+
+def fun_l10_n679()
+ fun_l11_n130
+end
+
+def fun_l10_n680()
+ fun_l11_n893
+end
+
+def fun_l10_n681()
+ fun_l11_n997
+end
+
+def fun_l10_n682()
+ fun_l11_n826
+end
+
+def fun_l10_n683()
+ fun_l11_n889
+end
+
+def fun_l10_n684()
+ fun_l11_n887
+end
+
+def fun_l10_n685()
+ fun_l11_n913
+end
+
+def fun_l10_n686()
+ fun_l11_n563
+end
+
+def fun_l10_n687()
+ fun_l11_n112
+end
+
+def fun_l10_n688()
+ fun_l11_n527
+end
+
+def fun_l10_n689()
+ fun_l11_n423
+end
+
+def fun_l10_n690()
+ fun_l11_n906
+end
+
+def fun_l10_n691()
+ fun_l11_n134
+end
+
+def fun_l10_n692()
+ fun_l11_n549
+end
+
+def fun_l10_n693()
+ fun_l11_n864
+end
+
+def fun_l10_n694()
+ fun_l11_n750
+end
+
+def fun_l10_n695()
+ fun_l11_n357
+end
+
+def fun_l10_n696()
+ fun_l11_n79
+end
+
+def fun_l10_n697()
+ fun_l11_n99
+end
+
+def fun_l10_n698()
+ fun_l11_n638
+end
+
+def fun_l10_n699()
+ fun_l11_n946
+end
+
+def fun_l10_n700()
+ fun_l11_n498
+end
+
+def fun_l10_n701()
+ fun_l11_n490
+end
+
+def fun_l10_n702()
+ fun_l11_n860
+end
+
+def fun_l10_n703()
+ fun_l11_n194
+end
+
+def fun_l10_n704()
+ fun_l11_n130
+end
+
+def fun_l10_n705()
+ fun_l11_n647
+end
+
+def fun_l10_n706()
+ fun_l11_n162
+end
+
+def fun_l10_n707()
+ fun_l11_n41
+end
+
+def fun_l10_n708()
+ fun_l11_n583
+end
+
+def fun_l10_n709()
+ fun_l11_n687
+end
+
+def fun_l10_n710()
+ fun_l11_n83
+end
+
+def fun_l10_n711()
+ fun_l11_n365
+end
+
+def fun_l10_n712()
+ fun_l11_n797
+end
+
+def fun_l10_n713()
+ fun_l11_n730
+end
+
+def fun_l10_n714()
+ fun_l11_n844
+end
+
+def fun_l10_n715()
+ fun_l11_n514
+end
+
+def fun_l10_n716()
+ fun_l11_n212
+end
+
+def fun_l10_n717()
+ fun_l11_n600
+end
+
+def fun_l10_n718()
+ fun_l11_n823
+end
+
+def fun_l10_n719()
+ fun_l11_n439
+end
+
+def fun_l10_n720()
+ fun_l11_n361
+end
+
+def fun_l10_n721()
+ fun_l11_n390
+end
+
+def fun_l10_n722()
+ fun_l11_n10
+end
+
+def fun_l10_n723()
+ fun_l11_n984
+end
+
+def fun_l10_n724()
+ fun_l11_n193
+end
+
+def fun_l10_n725()
+ fun_l11_n584
+end
+
+def fun_l10_n726()
+ fun_l11_n552
+end
+
+def fun_l10_n727()
+ fun_l11_n795
+end
+
+def fun_l10_n728()
+ fun_l11_n958
+end
+
+def fun_l10_n729()
+ fun_l11_n408
+end
+
+def fun_l10_n730()
+ fun_l11_n584
+end
+
+def fun_l10_n731()
+ fun_l11_n707
+end
+
+def fun_l10_n732()
+ fun_l11_n291
+end
+
+def fun_l10_n733()
+ fun_l11_n777
+end
+
+def fun_l10_n734()
+ fun_l11_n634
+end
+
+def fun_l10_n735()
+ fun_l11_n716
+end
+
+def fun_l10_n736()
+ fun_l11_n167
+end
+
+def fun_l10_n737()
+ fun_l11_n119
+end
+
+def fun_l10_n738()
+ fun_l11_n835
+end
+
+def fun_l10_n739()
+ fun_l11_n53
+end
+
+def fun_l10_n740()
+ fun_l11_n743
+end
+
+def fun_l10_n741()
+ fun_l11_n564
+end
+
+def fun_l10_n742()
+ fun_l11_n917
+end
+
+def fun_l10_n743()
+ fun_l11_n848
+end
+
+def fun_l10_n744()
+ fun_l11_n135
+end
+
+def fun_l10_n745()
+ fun_l11_n159
+end
+
+def fun_l10_n746()
+ fun_l11_n374
+end
+
+def fun_l10_n747()
+ fun_l11_n885
+end
+
+def fun_l10_n748()
+ fun_l11_n0
+end
+
+def fun_l10_n749()
+ fun_l11_n735
+end
+
+def fun_l10_n750()
+ fun_l11_n995
+end
+
+def fun_l10_n751()
+ fun_l11_n522
+end
+
+def fun_l10_n752()
+ fun_l11_n166
+end
+
+def fun_l10_n753()
+ fun_l11_n191
+end
+
+def fun_l10_n754()
+ fun_l11_n820
+end
+
+def fun_l10_n755()
+ fun_l11_n180
+end
+
+def fun_l10_n756()
+ fun_l11_n480
+end
+
+def fun_l10_n757()
+ fun_l11_n107
+end
+
+def fun_l10_n758()
+ fun_l11_n263
+end
+
+def fun_l10_n759()
+ fun_l11_n534
+end
+
+def fun_l10_n760()
+ fun_l11_n442
+end
+
+def fun_l10_n761()
+ fun_l11_n719
+end
+
+def fun_l10_n762()
+ fun_l11_n778
+end
+
+def fun_l10_n763()
+ fun_l11_n297
+end
+
+def fun_l10_n764()
+ fun_l11_n582
+end
+
+def fun_l10_n765()
+ fun_l11_n230
+end
+
+def fun_l10_n766()
+ fun_l11_n921
+end
+
+def fun_l10_n767()
+ fun_l11_n629
+end
+
+def fun_l10_n768()
+ fun_l11_n473
+end
+
+def fun_l10_n769()
+ fun_l11_n563
+end
+
+def fun_l10_n770()
+ fun_l11_n61
+end
+
+def fun_l10_n771()
+ fun_l11_n343
+end
+
+def fun_l10_n772()
+ fun_l11_n713
+end
+
+def fun_l10_n773()
+ fun_l11_n724
+end
+
+def fun_l10_n774()
+ fun_l11_n454
+end
+
+def fun_l10_n775()
+ fun_l11_n680
+end
+
+def fun_l10_n776()
+ fun_l11_n620
+end
+
+def fun_l10_n777()
+ fun_l11_n949
+end
+
+def fun_l10_n778()
+ fun_l11_n208
+end
+
+def fun_l10_n779()
+ fun_l11_n904
+end
+
+def fun_l10_n780()
+ fun_l11_n88
+end
+
+def fun_l10_n781()
+ fun_l11_n710
+end
+
+def fun_l10_n782()
+ fun_l11_n875
+end
+
+def fun_l10_n783()
+ fun_l11_n970
+end
+
+def fun_l10_n784()
+ fun_l11_n123
+end
+
+def fun_l10_n785()
+ fun_l11_n420
+end
+
+def fun_l10_n786()
+ fun_l11_n122
+end
+
+def fun_l10_n787()
+ fun_l11_n200
+end
+
+def fun_l10_n788()
+ fun_l11_n716
+end
+
+def fun_l10_n789()
+ fun_l11_n592
+end
+
+def fun_l10_n790()
+ fun_l11_n159
+end
+
+def fun_l10_n791()
+ fun_l11_n852
+end
+
+def fun_l10_n792()
+ fun_l11_n913
+end
+
+def fun_l10_n793()
+ fun_l11_n305
+end
+
+def fun_l10_n794()
+ fun_l11_n123
+end
+
+def fun_l10_n795()
+ fun_l11_n210
+end
+
+def fun_l10_n796()
+ fun_l11_n416
+end
+
+def fun_l10_n797()
+ fun_l11_n800
+end
+
+def fun_l10_n798()
+ fun_l11_n689
+end
+
+def fun_l10_n799()
+ fun_l11_n358
+end
+
+def fun_l10_n800()
+ fun_l11_n542
+end
+
+def fun_l10_n801()
+ fun_l11_n715
+end
+
+def fun_l10_n802()
+ fun_l11_n879
+end
+
+def fun_l10_n803()
+ fun_l11_n414
+end
+
+def fun_l10_n804()
+ fun_l11_n623
+end
+
+def fun_l10_n805()
+ fun_l11_n282
+end
+
+def fun_l10_n806()
+ fun_l11_n719
+end
+
+def fun_l10_n807()
+ fun_l11_n111
+end
+
+def fun_l10_n808()
+ fun_l11_n348
+end
+
+def fun_l10_n809()
+ fun_l11_n836
+end
+
+def fun_l10_n810()
+ fun_l11_n878
+end
+
+def fun_l10_n811()
+ fun_l11_n569
+end
+
+def fun_l10_n812()
+ fun_l11_n701
+end
+
+def fun_l10_n813()
+ fun_l11_n602
+end
+
+def fun_l10_n814()
+ fun_l11_n746
+end
+
+def fun_l10_n815()
+ fun_l11_n892
+end
+
+def fun_l10_n816()
+ fun_l11_n150
+end
+
+def fun_l10_n817()
+ fun_l11_n804
+end
+
+def fun_l10_n818()
+ fun_l11_n459
+end
+
+def fun_l10_n819()
+ fun_l11_n932
+end
+
+def fun_l10_n820()
+ fun_l11_n492
+end
+
+def fun_l10_n821()
+ fun_l11_n351
+end
+
+def fun_l10_n822()
+ fun_l11_n933
+end
+
+def fun_l10_n823()
+ fun_l11_n328
+end
+
+def fun_l10_n824()
+ fun_l11_n75
+end
+
+def fun_l10_n825()
+ fun_l11_n935
+end
+
+def fun_l10_n826()
+ fun_l11_n495
+end
+
+def fun_l10_n827()
+ fun_l11_n328
+end
+
+def fun_l10_n828()
+ fun_l11_n888
+end
+
+def fun_l10_n829()
+ fun_l11_n547
+end
+
+def fun_l10_n830()
+ fun_l11_n315
+end
+
+def fun_l10_n831()
+ fun_l11_n243
+end
+
+def fun_l10_n832()
+ fun_l11_n972
+end
+
+def fun_l10_n833()
+ fun_l11_n33
+end
+
+def fun_l10_n834()
+ fun_l11_n765
+end
+
+def fun_l10_n835()
+ fun_l11_n614
+end
+
+def fun_l10_n836()
+ fun_l11_n686
+end
+
+def fun_l10_n837()
+ fun_l11_n373
+end
+
+def fun_l10_n838()
+ fun_l11_n534
+end
+
+def fun_l10_n839()
+ fun_l11_n375
+end
+
+def fun_l10_n840()
+ fun_l11_n297
+end
+
+def fun_l10_n841()
+ fun_l11_n107
+end
+
+def fun_l10_n842()
+ fun_l11_n409
+end
+
+def fun_l10_n843()
+ fun_l11_n24
+end
+
+def fun_l10_n844()
+ fun_l11_n43
+end
+
+def fun_l10_n845()
+ fun_l11_n93
+end
+
+def fun_l10_n846()
+ fun_l11_n667
+end
+
+def fun_l10_n847()
+ fun_l11_n520
+end
+
+def fun_l10_n848()
+ fun_l11_n109
+end
+
+def fun_l10_n849()
+ fun_l11_n829
+end
+
+def fun_l10_n850()
+ fun_l11_n946
+end
+
+def fun_l10_n851()
+ fun_l11_n232
+end
+
+def fun_l10_n852()
+ fun_l11_n568
+end
+
+def fun_l10_n853()
+ fun_l11_n589
+end
+
+def fun_l10_n854()
+ fun_l11_n76
+end
+
+def fun_l10_n855()
+ fun_l11_n106
+end
+
+def fun_l10_n856()
+ fun_l11_n46
+end
+
+def fun_l10_n857()
+ fun_l11_n261
+end
+
+def fun_l10_n858()
+ fun_l11_n788
+end
+
+def fun_l10_n859()
+ fun_l11_n289
+end
+
+def fun_l10_n860()
+ fun_l11_n269
+end
+
+def fun_l10_n861()
+ fun_l11_n669
+end
+
+def fun_l10_n862()
+ fun_l11_n925
+end
+
+def fun_l10_n863()
+ fun_l11_n782
+end
+
+def fun_l10_n864()
+ fun_l11_n432
+end
+
+def fun_l10_n865()
+ fun_l11_n278
+end
+
+def fun_l10_n866()
+ fun_l11_n380
+end
+
+def fun_l10_n867()
+ fun_l11_n488
+end
+
+def fun_l10_n868()
+ fun_l11_n718
+end
+
+def fun_l10_n869()
+ fun_l11_n569
+end
+
+def fun_l10_n870()
+ fun_l11_n59
+end
+
+def fun_l10_n871()
+ fun_l11_n581
+end
+
+def fun_l10_n872()
+ fun_l11_n128
+end
+
+def fun_l10_n873()
+ fun_l11_n200
+end
+
+def fun_l10_n874()
+ fun_l11_n258
+end
+
+def fun_l10_n875()
+ fun_l11_n869
+end
+
+def fun_l10_n876()
+ fun_l11_n337
+end
+
+def fun_l10_n877()
+ fun_l11_n11
+end
+
+def fun_l10_n878()
+ fun_l11_n968
+end
+
+def fun_l10_n879()
+ fun_l11_n188
+end
+
+def fun_l10_n880()
+ fun_l11_n361
+end
+
+def fun_l10_n881()
+ fun_l11_n268
+end
+
+def fun_l10_n882()
+ fun_l11_n518
+end
+
+def fun_l10_n883()
+ fun_l11_n253
+end
+
+def fun_l10_n884()
+ fun_l11_n159
+end
+
+def fun_l10_n885()
+ fun_l11_n977
+end
+
+def fun_l10_n886()
+ fun_l11_n602
+end
+
+def fun_l10_n887()
+ fun_l11_n957
+end
+
+def fun_l10_n888()
+ fun_l11_n53
+end
+
+def fun_l10_n889()
+ fun_l11_n680
+end
+
+def fun_l10_n890()
+ fun_l11_n6
+end
+
+def fun_l10_n891()
+ fun_l11_n202
+end
+
+def fun_l10_n892()
+ fun_l11_n25
+end
+
+def fun_l10_n893()
+ fun_l11_n857
+end
+
+def fun_l10_n894()
+ fun_l11_n505
+end
+
+def fun_l10_n895()
+ fun_l11_n966
+end
+
+def fun_l10_n896()
+ fun_l11_n381
+end
+
+def fun_l10_n897()
+ fun_l11_n811
+end
+
+def fun_l10_n898()
+ fun_l11_n863
+end
+
+def fun_l10_n899()
+ fun_l11_n902
+end
+
+def fun_l10_n900()
+ fun_l11_n711
+end
+
+def fun_l10_n901()
+ fun_l11_n42
+end
+
+def fun_l10_n902()
+ fun_l11_n324
+end
+
+def fun_l10_n903()
+ fun_l11_n729
+end
+
+def fun_l10_n904()
+ fun_l11_n535
+end
+
+def fun_l10_n905()
+ fun_l11_n427
+end
+
+def fun_l10_n906()
+ fun_l11_n469
+end
+
+def fun_l10_n907()
+ fun_l11_n887
+end
+
+def fun_l10_n908()
+ fun_l11_n822
+end
+
+def fun_l10_n909()
+ fun_l11_n567
+end
+
+def fun_l10_n910()
+ fun_l11_n2
+end
+
+def fun_l10_n911()
+ fun_l11_n957
+end
+
+def fun_l10_n912()
+ fun_l11_n850
+end
+
+def fun_l10_n913()
+ fun_l11_n146
+end
+
+def fun_l10_n914()
+ fun_l11_n318
+end
+
+def fun_l10_n915()
+ fun_l11_n452
+end
+
+def fun_l10_n916()
+ fun_l11_n366
+end
+
+def fun_l10_n917()
+ fun_l11_n126
+end
+
+def fun_l10_n918()
+ fun_l11_n56
+end
+
+def fun_l10_n919()
+ fun_l11_n742
+end
+
+def fun_l10_n920()
+ fun_l11_n1
+end
+
+def fun_l10_n921()
+ fun_l11_n778
+end
+
+def fun_l10_n922()
+ fun_l11_n703
+end
+
+def fun_l10_n923()
+ fun_l11_n622
+end
+
+def fun_l10_n924()
+ fun_l11_n942
+end
+
+def fun_l10_n925()
+ fun_l11_n909
+end
+
+def fun_l10_n926()
+ fun_l11_n98
+end
+
+def fun_l10_n927()
+ fun_l11_n518
+end
+
+def fun_l10_n928()
+ fun_l11_n932
+end
+
+def fun_l10_n929()
+ fun_l11_n768
+end
+
+def fun_l10_n930()
+ fun_l11_n846
+end
+
+def fun_l10_n931()
+ fun_l11_n231
+end
+
+def fun_l10_n932()
+ fun_l11_n944
+end
+
+def fun_l10_n933()
+ fun_l11_n561
+end
+
+def fun_l10_n934()
+ fun_l11_n587
+end
+
+def fun_l10_n935()
+ fun_l11_n372
+end
+
+def fun_l10_n936()
+ fun_l11_n322
+end
+
+def fun_l10_n937()
+ fun_l11_n416
+end
+
+def fun_l10_n938()
+ fun_l11_n191
+end
+
+def fun_l10_n939()
+ fun_l11_n915
+end
+
+def fun_l10_n940()
+ fun_l11_n215
+end
+
+def fun_l10_n941()
+ fun_l11_n271
+end
+
+def fun_l10_n942()
+ fun_l11_n890
+end
+
+def fun_l10_n943()
+ fun_l11_n914
+end
+
+def fun_l10_n944()
+ fun_l11_n313
+end
+
+def fun_l10_n945()
+ fun_l11_n705
+end
+
+def fun_l10_n946()
+ fun_l11_n725
+end
+
+def fun_l10_n947()
+ fun_l11_n46
+end
+
+def fun_l10_n948()
+ fun_l11_n793
+end
+
+def fun_l10_n949()
+ fun_l11_n986
+end
+
+def fun_l10_n950()
+ fun_l11_n607
+end
+
+def fun_l10_n951()
+ fun_l11_n429
+end
+
+def fun_l10_n952()
+ fun_l11_n251
+end
+
+def fun_l10_n953()
+ fun_l11_n264
+end
+
+def fun_l10_n954()
+ fun_l11_n677
+end
+
+def fun_l10_n955()
+ fun_l11_n616
+end
+
+def fun_l10_n956()
+ fun_l11_n264
+end
+
+def fun_l10_n957()
+ fun_l11_n188
+end
+
+def fun_l10_n958()
+ fun_l11_n834
+end
+
+def fun_l10_n959()
+ fun_l11_n231
+end
+
+def fun_l10_n960()
+ fun_l11_n584
+end
+
+def fun_l10_n961()
+ fun_l11_n153
+end
+
+def fun_l10_n962()
+ fun_l11_n215
+end
+
+def fun_l10_n963()
+ fun_l11_n902
+end
+
+def fun_l10_n964()
+ fun_l11_n600
+end
+
+def fun_l10_n965()
+ fun_l11_n113
+end
+
+def fun_l10_n966()
+ fun_l11_n264
+end
+
+def fun_l10_n967()
+ fun_l11_n92
+end
+
+def fun_l10_n968()
+ fun_l11_n346
+end
+
+def fun_l10_n969()
+ fun_l11_n531
+end
+
+def fun_l10_n970()
+ fun_l11_n134
+end
+
+def fun_l10_n971()
+ fun_l11_n883
+end
+
+def fun_l10_n972()
+ fun_l11_n662
+end
+
+def fun_l10_n973()
+ fun_l11_n836
+end
+
+def fun_l10_n974()
+ fun_l11_n418
+end
+
+def fun_l10_n975()
+ fun_l11_n384
+end
+
+def fun_l10_n976()
+ fun_l11_n57
+end
+
+def fun_l10_n977()
+ fun_l11_n827
+end
+
+def fun_l10_n978()
+ fun_l11_n114
+end
+
+def fun_l10_n979()
+ fun_l11_n720
+end
+
+def fun_l10_n980()
+ fun_l11_n328
+end
+
+def fun_l10_n981()
+ fun_l11_n597
+end
+
+def fun_l10_n982()
+ fun_l11_n941
+end
+
+def fun_l10_n983()
+ fun_l11_n848
+end
+
+def fun_l10_n984()
+ fun_l11_n269
+end
+
+def fun_l10_n985()
+ fun_l11_n666
+end
+
+def fun_l10_n986()
+ fun_l11_n538
+end
+
+def fun_l10_n987()
+ fun_l11_n755
+end
+
+def fun_l10_n988()
+ fun_l11_n747
+end
+
+def fun_l10_n989()
+ fun_l11_n100
+end
+
+def fun_l10_n990()
+ fun_l11_n995
+end
+
+def fun_l10_n991()
+ fun_l11_n904
+end
+
+def fun_l10_n992()
+ fun_l11_n948
+end
+
+def fun_l10_n993()
+ fun_l11_n135
+end
+
+def fun_l10_n994()
+ fun_l11_n120
+end
+
+def fun_l10_n995()
+ fun_l11_n156
+end
+
+def fun_l10_n996()
+ fun_l11_n264
+end
+
+def fun_l10_n997()
+ fun_l11_n522
+end
+
+def fun_l10_n998()
+ fun_l11_n105
+end
+
+def fun_l10_n999()
+ fun_l11_n919
+end
+
+def fun_l11_n0()
+ fun_l12_n731
+end
+
+def fun_l11_n1()
+ fun_l12_n521
+end
+
+def fun_l11_n2()
+ fun_l12_n875
+end
+
+def fun_l11_n3()
+ fun_l12_n806
+end
+
+def fun_l11_n4()
+ fun_l12_n211
+end
+
+def fun_l11_n5()
+ fun_l12_n965
+end
+
+def fun_l11_n6()
+ fun_l12_n770
+end
+
+def fun_l11_n7()
+ fun_l12_n440
+end
+
+def fun_l11_n8()
+ fun_l12_n900
+end
+
+def fun_l11_n9()
+ fun_l12_n581
+end
+
+def fun_l11_n10()
+ fun_l12_n427
+end
+
+def fun_l11_n11()
+ fun_l12_n156
+end
+
+def fun_l11_n12()
+ fun_l12_n941
+end
+
+def fun_l11_n13()
+ fun_l12_n711
+end
+
+def fun_l11_n14()
+ fun_l12_n69
+end
+
+def fun_l11_n15()
+ fun_l12_n665
+end
+
+def fun_l11_n16()
+ fun_l12_n325
+end
+
+def fun_l11_n17()
+ fun_l12_n120
+end
+
+def fun_l11_n18()
+ fun_l12_n455
+end
+
+def fun_l11_n19()
+ fun_l12_n14
+end
+
+def fun_l11_n20()
+ fun_l12_n909
+end
+
+def fun_l11_n21()
+ fun_l12_n297
+end
+
+def fun_l11_n22()
+ fun_l12_n81
+end
+
+def fun_l11_n23()
+ fun_l12_n420
+end
+
+def fun_l11_n24()
+ fun_l12_n439
+end
+
+def fun_l11_n25()
+ fun_l12_n867
+end
+
+def fun_l11_n26()
+ fun_l12_n147
+end
+
+def fun_l11_n27()
+ fun_l12_n422
+end
+
+def fun_l11_n28()
+ fun_l12_n338
+end
+
+def fun_l11_n29()
+ fun_l12_n730
+end
+
+def fun_l11_n30()
+ fun_l12_n15
+end
+
+def fun_l11_n31()
+ fun_l12_n276
+end
+
+def fun_l11_n32()
+ fun_l12_n298
+end
+
+def fun_l11_n33()
+ fun_l12_n749
+end
+
+def fun_l11_n34()
+ fun_l12_n255
+end
+
+def fun_l11_n35()
+ fun_l12_n104
+end
+
+def fun_l11_n36()
+ fun_l12_n91
+end
+
+def fun_l11_n37()
+ fun_l12_n825
+end
+
+def fun_l11_n38()
+ fun_l12_n983
+end
+
+def fun_l11_n39()
+ fun_l12_n711
+end
+
+def fun_l11_n40()
+ fun_l12_n991
+end
+
+def fun_l11_n41()
+ fun_l12_n143
+end
+
+def fun_l11_n42()
+ fun_l12_n579
+end
+
+def fun_l11_n43()
+ fun_l12_n217
+end
+
+def fun_l11_n44()
+ fun_l12_n353
+end
+
+def fun_l11_n45()
+ fun_l12_n849
+end
+
+def fun_l11_n46()
+ fun_l12_n452
+end
+
+def fun_l11_n47()
+ fun_l12_n982
+end
+
+def fun_l11_n48()
+ fun_l12_n201
+end
+
+def fun_l11_n49()
+ fun_l12_n289
+end
+
+def fun_l11_n50()
+ fun_l12_n419
+end
+
+def fun_l11_n51()
+ fun_l12_n490
+end
+
+def fun_l11_n52()
+ fun_l12_n969
+end
+
+def fun_l11_n53()
+ fun_l12_n721
+end
+
+def fun_l11_n54()
+ fun_l12_n657
+end
+
+def fun_l11_n55()
+ fun_l12_n498
+end
+
+def fun_l11_n56()
+ fun_l12_n44
+end
+
+def fun_l11_n57()
+ fun_l12_n863
+end
+
+def fun_l11_n58()
+ fun_l12_n366
+end
+
+def fun_l11_n59()
+ fun_l12_n515
+end
+
+def fun_l11_n60()
+ fun_l12_n302
+end
+
+def fun_l11_n61()
+ fun_l12_n717
+end
+
+def fun_l11_n62()
+ fun_l12_n165
+end
+
+def fun_l11_n63()
+ fun_l12_n980
+end
+
+def fun_l11_n64()
+ fun_l12_n988
+end
+
+def fun_l11_n65()
+ fun_l12_n397
+end
+
+def fun_l11_n66()
+ fun_l12_n648
+end
+
+def fun_l11_n67()
+ fun_l12_n8
+end
+
+def fun_l11_n68()
+ fun_l12_n164
+end
+
+def fun_l11_n69()
+ fun_l12_n999
+end
+
+def fun_l11_n70()
+ fun_l12_n434
+end
+
+def fun_l11_n71()
+ fun_l12_n991
+end
+
+def fun_l11_n72()
+ fun_l12_n596
+end
+
+def fun_l11_n73()
+ fun_l12_n533
+end
+
+def fun_l11_n74()
+ fun_l12_n222
+end
+
+def fun_l11_n75()
+ fun_l12_n817
+end
+
+def fun_l11_n76()
+ fun_l12_n740
+end
+
+def fun_l11_n77()
+ fun_l12_n638
+end
+
+def fun_l11_n78()
+ fun_l12_n81
+end
+
+def fun_l11_n79()
+ fun_l12_n702
+end
+
+def fun_l11_n80()
+ fun_l12_n783
+end
+
+def fun_l11_n81()
+ fun_l12_n228
+end
+
+def fun_l11_n82()
+ fun_l12_n487
+end
+
+def fun_l11_n83()
+ fun_l12_n59
+end
+
+def fun_l11_n84()
+ fun_l12_n910
+end
+
+def fun_l11_n85()
+ fun_l12_n581
+end
+
+def fun_l11_n86()
+ fun_l12_n947
+end
+
+def fun_l11_n87()
+ fun_l12_n645
+end
+
+def fun_l11_n88()
+ fun_l12_n505
+end
+
+def fun_l11_n89()
+ fun_l12_n171
+end
+
+def fun_l11_n90()
+ fun_l12_n713
+end
+
+def fun_l11_n91()
+ fun_l12_n414
+end
+
+def fun_l11_n92()
+ fun_l12_n427
+end
+
+def fun_l11_n93()
+ fun_l12_n225
+end
+
+def fun_l11_n94()
+ fun_l12_n655
+end
+
+def fun_l11_n95()
+ fun_l12_n437
+end
+
+def fun_l11_n96()
+ fun_l12_n879
+end
+
+def fun_l11_n97()
+ fun_l12_n222
+end
+
+def fun_l11_n98()
+ fun_l12_n642
+end
+
+def fun_l11_n99()
+ fun_l12_n142
+end
+
+def fun_l11_n100()
+ fun_l12_n612
+end
+
+def fun_l11_n101()
+ fun_l12_n548
+end
+
+def fun_l11_n102()
+ fun_l12_n535
+end
+
+def fun_l11_n103()
+ fun_l12_n245
+end
+
+def fun_l11_n104()
+ fun_l12_n0
+end
+
+def fun_l11_n105()
+ fun_l12_n305
+end
+
+def fun_l11_n106()
+ fun_l12_n674
+end
+
+def fun_l11_n107()
+ fun_l12_n626
+end
+
+def fun_l11_n108()
+ fun_l12_n335
+end
+
+def fun_l11_n109()
+ fun_l12_n963
+end
+
+def fun_l11_n110()
+ fun_l12_n958
+end
+
+def fun_l11_n111()
+ fun_l12_n32
+end
+
+def fun_l11_n112()
+ fun_l12_n149
+end
+
+def fun_l11_n113()
+ fun_l12_n923
+end
+
+def fun_l11_n114()
+ fun_l12_n853
+end
+
+def fun_l11_n115()
+ fun_l12_n793
+end
+
+def fun_l11_n116()
+ fun_l12_n354
+end
+
+def fun_l11_n117()
+ fun_l12_n839
+end
+
+def fun_l11_n118()
+ fun_l12_n995
+end
+
+def fun_l11_n119()
+ fun_l12_n610
+end
+
+def fun_l11_n120()
+ fun_l12_n147
+end
+
+def fun_l11_n121()
+ fun_l12_n191
+end
+
+def fun_l11_n122()
+ fun_l12_n237
+end
+
+def fun_l11_n123()
+ fun_l12_n766
+end
+
+def fun_l11_n124()
+ fun_l12_n830
+end
+
+def fun_l11_n125()
+ fun_l12_n968
+end
+
+def fun_l11_n126()
+ fun_l12_n163
+end
+
+def fun_l11_n127()
+ fun_l12_n357
+end
+
+def fun_l11_n128()
+ fun_l12_n741
+end
+
+def fun_l11_n129()
+ fun_l12_n502
+end
+
+def fun_l11_n130()
+ fun_l12_n569
+end
+
+def fun_l11_n131()
+ fun_l12_n696
+end
+
+def fun_l11_n132()
+ fun_l12_n326
+end
+
+def fun_l11_n133()
+ fun_l12_n765
+end
+
+def fun_l11_n134()
+ fun_l12_n126
+end
+
+def fun_l11_n135()
+ fun_l12_n107
+end
+
+def fun_l11_n136()
+ fun_l12_n8
+end
+
+def fun_l11_n137()
+ fun_l12_n969
+end
+
+def fun_l11_n138()
+ fun_l12_n49
+end
+
+def fun_l11_n139()
+ fun_l12_n65
+end
+
+def fun_l11_n140()
+ fun_l12_n631
+end
+
+def fun_l11_n141()
+ fun_l12_n984
+end
+
+def fun_l11_n142()
+ fun_l12_n520
+end
+
+def fun_l11_n143()
+ fun_l12_n348
+end
+
+def fun_l11_n144()
+ fun_l12_n51
+end
+
+def fun_l11_n145()
+ fun_l12_n756
+end
+
+def fun_l11_n146()
+ fun_l12_n981
+end
+
+def fun_l11_n147()
+ fun_l12_n671
+end
+
+def fun_l11_n148()
+ fun_l12_n4
+end
+
+def fun_l11_n149()
+ fun_l12_n66
+end
+
+def fun_l11_n150()
+ fun_l12_n445
+end
+
+def fun_l11_n151()
+ fun_l12_n131
+end
+
+def fun_l11_n152()
+ fun_l12_n927
+end
+
+def fun_l11_n153()
+ fun_l12_n715
+end
+
+def fun_l11_n154()
+ fun_l12_n767
+end
+
+def fun_l11_n155()
+ fun_l12_n50
+end
+
+def fun_l11_n156()
+ fun_l12_n360
+end
+
+def fun_l11_n157()
+ fun_l12_n311
+end
+
+def fun_l11_n158()
+ fun_l12_n509
+end
+
+def fun_l11_n159()
+ fun_l12_n868
+end
+
+def fun_l11_n160()
+ fun_l12_n185
+end
+
+def fun_l11_n161()
+ fun_l12_n338
+end
+
+def fun_l11_n162()
+ fun_l12_n539
+end
+
+def fun_l11_n163()
+ fun_l12_n30
+end
+
+def fun_l11_n164()
+ fun_l12_n485
+end
+
+def fun_l11_n165()
+ fun_l12_n808
+end
+
+def fun_l11_n166()
+ fun_l12_n78
+end
+
+def fun_l11_n167()
+ fun_l12_n370
+end
+
+def fun_l11_n168()
+ fun_l12_n1
+end
+
+def fun_l11_n169()
+ fun_l12_n473
+end
+
+def fun_l11_n170()
+ fun_l12_n362
+end
+
+def fun_l11_n171()
+ fun_l12_n209
+end
+
+def fun_l11_n172()
+ fun_l12_n431
+end
+
+def fun_l11_n173()
+ fun_l12_n383
+end
+
+def fun_l11_n174()
+ fun_l12_n214
+end
+
+def fun_l11_n175()
+ fun_l12_n215
+end
+
+def fun_l11_n176()
+ fun_l12_n639
+end
+
+def fun_l11_n177()
+ fun_l12_n486
+end
+
+def fun_l11_n178()
+ fun_l12_n486
+end
+
+def fun_l11_n179()
+ fun_l12_n409
+end
+
+def fun_l11_n180()
+ fun_l12_n558
+end
+
+def fun_l11_n181()
+ fun_l12_n546
+end
+
+def fun_l11_n182()
+ fun_l12_n439
+end
+
+def fun_l11_n183()
+ fun_l12_n11
+end
+
+def fun_l11_n184()
+ fun_l12_n304
+end
+
+def fun_l11_n185()
+ fun_l12_n525
+end
+
+def fun_l11_n186()
+ fun_l12_n886
+end
+
+def fun_l11_n187()
+ fun_l12_n17
+end
+
+def fun_l11_n188()
+ fun_l12_n11
+end
+
+def fun_l11_n189()
+ fun_l12_n382
+end
+
+def fun_l11_n190()
+ fun_l12_n185
+end
+
+def fun_l11_n191()
+ fun_l12_n454
+end
+
+def fun_l11_n192()
+ fun_l12_n23
+end
+
+def fun_l11_n193()
+ fun_l12_n900
+end
+
+def fun_l11_n194()
+ fun_l12_n233
+end
+
+def fun_l11_n195()
+ fun_l12_n245
+end
+
+def fun_l11_n196()
+ fun_l12_n474
+end
+
+def fun_l11_n197()
+ fun_l12_n368
+end
+
+def fun_l11_n198()
+ fun_l12_n80
+end
+
+def fun_l11_n199()
+ fun_l12_n522
+end
+
+def fun_l11_n200()
+ fun_l12_n439
+end
+
+def fun_l11_n201()
+ fun_l12_n553
+end
+
+def fun_l11_n202()
+ fun_l12_n713
+end
+
+def fun_l11_n203()
+ fun_l12_n898
+end
+
+def fun_l11_n204()
+ fun_l12_n571
+end
+
+def fun_l11_n205()
+ fun_l12_n830
+end
+
+def fun_l11_n206()
+ fun_l12_n404
+end
+
+def fun_l11_n207()
+ fun_l12_n120
+end
+
+def fun_l11_n208()
+ fun_l12_n147
+end
+
+def fun_l11_n209()
+ fun_l12_n924
+end
+
+def fun_l11_n210()
+ fun_l12_n988
+end
+
+def fun_l11_n211()
+ fun_l12_n25
+end
+
+def fun_l11_n212()
+ fun_l12_n848
+end
+
+def fun_l11_n213()
+ fun_l12_n875
+end
+
+def fun_l11_n214()
+ fun_l12_n718
+end
+
+def fun_l11_n215()
+ fun_l12_n657
+end
+
+def fun_l11_n216()
+ fun_l12_n364
+end
+
+def fun_l11_n217()
+ fun_l12_n342
+end
+
+def fun_l11_n218()
+ fun_l12_n16
+end
+
+def fun_l11_n219()
+ fun_l12_n167
+end
+
+def fun_l11_n220()
+ fun_l12_n719
+end
+
+def fun_l11_n221()
+ fun_l12_n414
+end
+
+def fun_l11_n222()
+ fun_l12_n874
+end
+
+def fun_l11_n223()
+ fun_l12_n482
+end
+
+def fun_l11_n224()
+ fun_l12_n191
+end
+
+def fun_l11_n225()
+ fun_l12_n172
+end
+
+def fun_l11_n226()
+ fun_l12_n768
+end
+
+def fun_l11_n227()
+ fun_l12_n746
+end
+
+def fun_l11_n228()
+ fun_l12_n460
+end
+
+def fun_l11_n229()
+ fun_l12_n64
+end
+
+def fun_l11_n230()
+ fun_l12_n747
+end
+
+def fun_l11_n231()
+ fun_l12_n147
+end
+
+def fun_l11_n232()
+ fun_l12_n157
+end
+
+def fun_l11_n233()
+ fun_l12_n336
+end
+
+def fun_l11_n234()
+ fun_l12_n904
+end
+
+def fun_l11_n235()
+ fun_l12_n76
+end
+
+def fun_l11_n236()
+ fun_l12_n499
+end
+
+def fun_l11_n237()
+ fun_l12_n559
+end
+
+def fun_l11_n238()
+ fun_l12_n949
+end
+
+def fun_l11_n239()
+ fun_l12_n525
+end
+
+def fun_l11_n240()
+ fun_l12_n741
+end
+
+def fun_l11_n241()
+ fun_l12_n11
+end
+
+def fun_l11_n242()
+ fun_l12_n449
+end
+
+def fun_l11_n243()
+ fun_l12_n767
+end
+
+def fun_l11_n244()
+ fun_l12_n94
+end
+
+def fun_l11_n245()
+ fun_l12_n721
+end
+
+def fun_l11_n246()
+ fun_l12_n592
+end
+
+def fun_l11_n247()
+ fun_l12_n184
+end
+
+def fun_l11_n248()
+ fun_l12_n166
+end
+
+def fun_l11_n249()
+ fun_l12_n773
+end
+
+def fun_l11_n250()
+ fun_l12_n334
+end
+
+def fun_l11_n251()
+ fun_l12_n965
+end
+
+def fun_l11_n252()
+ fun_l12_n154
+end
+
+def fun_l11_n253()
+ fun_l12_n182
+end
+
+def fun_l11_n254()
+ fun_l12_n298
+end
+
+def fun_l11_n255()
+ fun_l12_n29
+end
+
+def fun_l11_n256()
+ fun_l12_n409
+end
+
+def fun_l11_n257()
+ fun_l12_n452
+end
+
+def fun_l11_n258()
+ fun_l12_n369
+end
+
+def fun_l11_n259()
+ fun_l12_n794
+end
+
+def fun_l11_n260()
+ fun_l12_n210
+end
+
+def fun_l11_n261()
+ fun_l12_n255
+end
+
+def fun_l11_n262()
+ fun_l12_n801
+end
+
+def fun_l11_n263()
+ fun_l12_n650
+end
+
+def fun_l11_n264()
+ fun_l12_n612
+end
+
+def fun_l11_n265()
+ fun_l12_n122
+end
+
+def fun_l11_n266()
+ fun_l12_n70
+end
+
+def fun_l11_n267()
+ fun_l12_n254
+end
+
+def fun_l11_n268()
+ fun_l12_n104
+end
+
+def fun_l11_n269()
+ fun_l12_n564
+end
+
+def fun_l11_n270()
+ fun_l12_n256
+end
+
+def fun_l11_n271()
+ fun_l12_n525
+end
+
+def fun_l11_n272()
+ fun_l12_n734
+end
+
+def fun_l11_n273()
+ fun_l12_n127
+end
+
+def fun_l11_n274()
+ fun_l12_n705
+end
+
+def fun_l11_n275()
+ fun_l12_n607
+end
+
+def fun_l11_n276()
+ fun_l12_n681
+end
+
+def fun_l11_n277()
+ fun_l12_n510
+end
+
+def fun_l11_n278()
+ fun_l12_n889
+end
+
+def fun_l11_n279()
+ fun_l12_n153
+end
+
+def fun_l11_n280()
+ fun_l12_n457
+end
+
+def fun_l11_n281()
+ fun_l12_n394
+end
+
+def fun_l11_n282()
+ fun_l12_n628
+end
+
+def fun_l11_n283()
+ fun_l12_n576
+end
+
+def fun_l11_n284()
+ fun_l12_n294
+end
+
+def fun_l11_n285()
+ fun_l12_n79
+end
+
+def fun_l11_n286()
+ fun_l12_n505
+end
+
+def fun_l11_n287()
+ fun_l12_n726
+end
+
+def fun_l11_n288()
+ fun_l12_n171
+end
+
+def fun_l11_n289()
+ fun_l12_n317
+end
+
+def fun_l11_n290()
+ fun_l12_n350
+end
+
+def fun_l11_n291()
+ fun_l12_n134
+end
+
+def fun_l11_n292()
+ fun_l12_n595
+end
+
+def fun_l11_n293()
+ fun_l12_n924
+end
+
+def fun_l11_n294()
+ fun_l12_n713
+end
+
+def fun_l11_n295()
+ fun_l12_n630
+end
+
+def fun_l11_n296()
+ fun_l12_n444
+end
+
+def fun_l11_n297()
+ fun_l12_n751
+end
+
+def fun_l11_n298()
+ fun_l12_n324
+end
+
+def fun_l11_n299()
+ fun_l12_n851
+end
+
+def fun_l11_n300()
+ fun_l12_n883
+end
+
+def fun_l11_n301()
+ fun_l12_n289
+end
+
+def fun_l11_n302()
+ fun_l12_n427
+end
+
+def fun_l11_n303()
+ fun_l12_n593
+end
+
+def fun_l11_n304()
+ fun_l12_n380
+end
+
+def fun_l11_n305()
+ fun_l12_n630
+end
+
+def fun_l11_n306()
+ fun_l12_n245
+end
+
+def fun_l11_n307()
+ fun_l12_n369
+end
+
+def fun_l11_n308()
+ fun_l12_n641
+end
+
+def fun_l11_n309()
+ fun_l12_n271
+end
+
+def fun_l11_n310()
+ fun_l12_n67
+end
+
+def fun_l11_n311()
+ fun_l12_n109
+end
+
+def fun_l11_n312()
+ fun_l12_n559
+end
+
+def fun_l11_n313()
+ fun_l12_n211
+end
+
+def fun_l11_n314()
+ fun_l12_n396
+end
+
+def fun_l11_n315()
+ fun_l12_n390
+end
+
+def fun_l11_n316()
+ fun_l12_n72
+end
+
+def fun_l11_n317()
+ fun_l12_n13
+end
+
+def fun_l11_n318()
+ fun_l12_n690
+end
+
+def fun_l11_n319()
+ fun_l12_n104
+end
+
+def fun_l11_n320()
+ fun_l12_n671
+end
+
+def fun_l11_n321()
+ fun_l12_n506
+end
+
+def fun_l11_n322()
+ fun_l12_n679
+end
+
+def fun_l11_n323()
+ fun_l12_n809
+end
+
+def fun_l11_n324()
+ fun_l12_n750
+end
+
+def fun_l11_n325()
+ fun_l12_n754
+end
+
+def fun_l11_n326()
+ fun_l12_n6
+end
+
+def fun_l11_n327()
+ fun_l12_n522
+end
+
+def fun_l11_n328()
+ fun_l12_n414
+end
+
+def fun_l11_n329()
+ fun_l12_n934
+end
+
+def fun_l11_n330()
+ fun_l12_n653
+end
+
+def fun_l11_n331()
+ fun_l12_n290
+end
+
+def fun_l11_n332()
+ fun_l12_n262
+end
+
+def fun_l11_n333()
+ fun_l12_n933
+end
+
+def fun_l11_n334()
+ fun_l12_n332
+end
+
+def fun_l11_n335()
+ fun_l12_n882
+end
+
+def fun_l11_n336()
+ fun_l12_n448
+end
+
+def fun_l11_n337()
+ fun_l12_n5
+end
+
+def fun_l11_n338()
+ fun_l12_n993
+end
+
+def fun_l11_n339()
+ fun_l12_n354
+end
+
+def fun_l11_n340()
+ fun_l12_n643
+end
+
+def fun_l11_n341()
+ fun_l12_n85
+end
+
+def fun_l11_n342()
+ fun_l12_n957
+end
+
+def fun_l11_n343()
+ fun_l12_n581
+end
+
+def fun_l11_n344()
+ fun_l12_n837
+end
+
+def fun_l11_n345()
+ fun_l12_n210
+end
+
+def fun_l11_n346()
+ fun_l12_n45
+end
+
+def fun_l11_n347()
+ fun_l12_n672
+end
+
+def fun_l11_n348()
+ fun_l12_n559
+end
+
+def fun_l11_n349()
+ fun_l12_n76
+end
+
+def fun_l11_n350()
+ fun_l12_n500
+end
+
+def fun_l11_n351()
+ fun_l12_n23
+end
+
+def fun_l11_n352()
+ fun_l12_n364
+end
+
+def fun_l11_n353()
+ fun_l12_n72
+end
+
+def fun_l11_n354()
+ fun_l12_n953
+end
+
+def fun_l11_n355()
+ fun_l12_n104
+end
+
+def fun_l11_n356()
+ fun_l12_n446
+end
+
+def fun_l11_n357()
+ fun_l12_n231
+end
+
+def fun_l11_n358()
+ fun_l12_n923
+end
+
+def fun_l11_n359()
+ fun_l12_n396
+end
+
+def fun_l11_n360()
+ fun_l12_n748
+end
+
+def fun_l11_n361()
+ fun_l12_n168
+end
+
+def fun_l11_n362()
+ fun_l12_n329
+end
+
+def fun_l11_n363()
+ fun_l12_n843
+end
+
+def fun_l11_n364()
+ fun_l12_n864
+end
+
+def fun_l11_n365()
+ fun_l12_n163
+end
+
+def fun_l11_n366()
+ fun_l12_n811
+end
+
+def fun_l11_n367()
+ fun_l12_n7
+end
+
+def fun_l11_n368()
+ fun_l12_n105
+end
+
+def fun_l11_n369()
+ fun_l12_n367
+end
+
+def fun_l11_n370()
+ fun_l12_n650
+end
+
+def fun_l11_n371()
+ fun_l12_n966
+end
+
+def fun_l11_n372()
+ fun_l12_n248
+end
+
+def fun_l11_n373()
+ fun_l12_n431
+end
+
+def fun_l11_n374()
+ fun_l12_n329
+end
+
+def fun_l11_n375()
+ fun_l12_n788
+end
+
+def fun_l11_n376()
+ fun_l12_n407
+end
+
+def fun_l11_n377()
+ fun_l12_n551
+end
+
+def fun_l11_n378()
+ fun_l12_n703
+end
+
+def fun_l11_n379()
+ fun_l12_n414
+end
+
+def fun_l11_n380()
+ fun_l12_n23
+end
+
+def fun_l11_n381()
+ fun_l12_n747
+end
+
+def fun_l11_n382()
+ fun_l12_n10
+end
+
+def fun_l11_n383()
+ fun_l12_n943
+end
+
+def fun_l11_n384()
+ fun_l12_n26
+end
+
+def fun_l11_n385()
+ fun_l12_n459
+end
+
+def fun_l11_n386()
+ fun_l12_n256
+end
+
+def fun_l11_n387()
+ fun_l12_n606
+end
+
+def fun_l11_n388()
+ fun_l12_n138
+end
+
+def fun_l11_n389()
+ fun_l12_n371
+end
+
+def fun_l11_n390()
+ fun_l12_n304
+end
+
+def fun_l11_n391()
+ fun_l12_n459
+end
+
+def fun_l11_n392()
+ fun_l12_n968
+end
+
+def fun_l11_n393()
+ fun_l12_n153
+end
+
+def fun_l11_n394()
+ fun_l12_n742
+end
+
+def fun_l11_n395()
+ fun_l12_n617
+end
+
+def fun_l11_n396()
+ fun_l12_n562
+end
+
+def fun_l11_n397()
+ fun_l12_n474
+end
+
+def fun_l11_n398()
+ fun_l12_n633
+end
+
+def fun_l11_n399()
+ fun_l12_n950
+end
+
+def fun_l11_n400()
+ fun_l12_n370
+end
+
+def fun_l11_n401()
+ fun_l12_n301
+end
+
+def fun_l11_n402()
+ fun_l12_n74
+end
+
+def fun_l11_n403()
+ fun_l12_n759
+end
+
+def fun_l11_n404()
+ fun_l12_n634
+end
+
+def fun_l11_n405()
+ fun_l12_n678
+end
+
+def fun_l11_n406()
+ fun_l12_n761
+end
+
+def fun_l11_n407()
+ fun_l12_n669
+end
+
+def fun_l11_n408()
+ fun_l12_n737
+end
+
+def fun_l11_n409()
+ fun_l12_n666
+end
+
+def fun_l11_n410()
+ fun_l12_n43
+end
+
+def fun_l11_n411()
+ fun_l12_n64
+end
+
+def fun_l11_n412()
+ fun_l12_n956
+end
+
+def fun_l11_n413()
+ fun_l12_n749
+end
+
+def fun_l11_n414()
+ fun_l12_n22
+end
+
+def fun_l11_n415()
+ fun_l12_n170
+end
+
+def fun_l11_n416()
+ fun_l12_n113
+end
+
+def fun_l11_n417()
+ fun_l12_n780
+end
+
+def fun_l11_n418()
+ fun_l12_n855
+end
+
+def fun_l11_n419()
+ fun_l12_n551
+end
+
+def fun_l11_n420()
+ fun_l12_n101
+end
+
+def fun_l11_n421()
+ fun_l12_n543
+end
+
+def fun_l11_n422()
+ fun_l12_n773
+end
+
+def fun_l11_n423()
+ fun_l12_n13
+end
+
+def fun_l11_n424()
+ fun_l12_n997
+end
+
+def fun_l11_n425()
+ fun_l12_n199
+end
+
+def fun_l11_n426()
+ fun_l12_n281
+end
+
+def fun_l11_n427()
+ fun_l12_n685
+end
+
+def fun_l11_n428()
+ fun_l12_n588
+end
+
+def fun_l11_n429()
+ fun_l12_n693
+end
+
+def fun_l11_n430()
+ fun_l12_n595
+end
+
+def fun_l11_n431()
+ fun_l12_n632
+end
+
+def fun_l11_n432()
+ fun_l12_n923
+end
+
+def fun_l11_n433()
+ fun_l12_n388
+end
+
+def fun_l11_n434()
+ fun_l12_n307
+end
+
+def fun_l11_n435()
+ fun_l12_n169
+end
+
+def fun_l11_n436()
+ fun_l12_n13
+end
+
+def fun_l11_n437()
+ fun_l12_n207
+end
+
+def fun_l11_n438()
+ fun_l12_n711
+end
+
+def fun_l11_n439()
+ fun_l12_n649
+end
+
+def fun_l11_n440()
+ fun_l12_n817
+end
+
+def fun_l11_n441()
+ fun_l12_n280
+end
+
+def fun_l11_n442()
+ fun_l12_n833
+end
+
+def fun_l11_n443()
+ fun_l12_n962
+end
+
+def fun_l11_n444()
+ fun_l12_n431
+end
+
+def fun_l11_n445()
+ fun_l12_n564
+end
+
+def fun_l11_n446()
+ fun_l12_n107
+end
+
+def fun_l11_n447()
+ fun_l12_n504
+end
+
+def fun_l11_n448()
+ fun_l12_n680
+end
+
+def fun_l11_n449()
+ fun_l12_n653
+end
+
+def fun_l11_n450()
+ fun_l12_n549
+end
+
+def fun_l11_n451()
+ fun_l12_n34
+end
+
+def fun_l11_n452()
+ fun_l12_n607
+end
+
+def fun_l11_n453()
+ fun_l12_n831
+end
+
+def fun_l11_n454()
+ fun_l12_n974
+end
+
+def fun_l11_n455()
+ fun_l12_n815
+end
+
+def fun_l11_n456()
+ fun_l12_n700
+end
+
+def fun_l11_n457()
+ fun_l12_n583
+end
+
+def fun_l11_n458()
+ fun_l12_n479
+end
+
+def fun_l11_n459()
+ fun_l12_n815
+end
+
+def fun_l11_n460()
+ fun_l12_n45
+end
+
+def fun_l11_n461()
+ fun_l12_n740
+end
+
+def fun_l11_n462()
+ fun_l12_n637
+end
+
+def fun_l11_n463()
+ fun_l12_n568
+end
+
+def fun_l11_n464()
+ fun_l12_n340
+end
+
+def fun_l11_n465()
+ fun_l12_n532
+end
+
+def fun_l11_n466()
+ fun_l12_n13
+end
+
+def fun_l11_n467()
+ fun_l12_n479
+end
+
+def fun_l11_n468()
+ fun_l12_n263
+end
+
+def fun_l11_n469()
+ fun_l12_n109
+end
+
+def fun_l11_n470()
+ fun_l12_n290
+end
+
+def fun_l11_n471()
+ fun_l12_n85
+end
+
+def fun_l11_n472()
+ fun_l12_n360
+end
+
+def fun_l11_n473()
+ fun_l12_n33
+end
+
+def fun_l11_n474()
+ fun_l12_n603
+end
+
+def fun_l11_n475()
+ fun_l12_n82
+end
+
+def fun_l11_n476()
+ fun_l12_n250
+end
+
+def fun_l11_n477()
+ fun_l12_n233
+end
+
+def fun_l11_n478()
+ fun_l12_n530
+end
+
+def fun_l11_n479()
+ fun_l12_n619
+end
+
+def fun_l11_n480()
+ fun_l12_n756
+end
+
+def fun_l11_n481()
+ fun_l12_n681
+end
+
+def fun_l11_n482()
+ fun_l12_n981
+end
+
+def fun_l11_n483()
+ fun_l12_n308
+end
+
+def fun_l11_n484()
+ fun_l12_n955
+end
+
+def fun_l11_n485()
+ fun_l12_n197
+end
+
+def fun_l11_n486()
+ fun_l12_n620
+end
+
+def fun_l11_n487()
+ fun_l12_n485
+end
+
+def fun_l11_n488()
+ fun_l12_n866
+end
+
+def fun_l11_n489()
+ fun_l12_n502
+end
+
+def fun_l11_n490()
+ fun_l12_n16
+end
+
+def fun_l11_n491()
+ fun_l12_n727
+end
+
+def fun_l11_n492()
+ fun_l12_n13
+end
+
+def fun_l11_n493()
+ fun_l12_n268
+end
+
+def fun_l11_n494()
+ fun_l12_n501
+end
+
+def fun_l11_n495()
+ fun_l12_n303
+end
+
+def fun_l11_n496()
+ fun_l12_n223
+end
+
+def fun_l11_n497()
+ fun_l12_n623
+end
+
+def fun_l11_n498()
+ fun_l12_n479
+end
+
+def fun_l11_n499()
+ fun_l12_n310
+end
+
+def fun_l11_n500()
+ fun_l12_n337
+end
+
+def fun_l11_n501()
+ fun_l12_n406
+end
+
+def fun_l11_n502()
+ fun_l12_n727
+end
+
+def fun_l11_n503()
+ fun_l12_n329
+end
+
+def fun_l11_n504()
+ fun_l12_n675
+end
+
+def fun_l11_n505()
+ fun_l12_n41
+end
+
+def fun_l11_n506()
+ fun_l12_n176
+end
+
+def fun_l11_n507()
+ fun_l12_n277
+end
+
+def fun_l11_n508()
+ fun_l12_n767
+end
+
+def fun_l11_n509()
+ fun_l12_n863
+end
+
+def fun_l11_n510()
+ fun_l12_n459
+end
+
+def fun_l11_n511()
+ fun_l12_n360
+end
+
+def fun_l11_n512()
+ fun_l12_n870
+end
+
+def fun_l11_n513()
+ fun_l12_n939
+end
+
+def fun_l11_n514()
+ fun_l12_n697
+end
+
+def fun_l11_n515()
+ fun_l12_n91
+end
+
+def fun_l11_n516()
+ fun_l12_n382
+end
+
+def fun_l11_n517()
+ fun_l12_n649
+end
+
+def fun_l11_n518()
+ fun_l12_n455
+end
+
+def fun_l11_n519()
+ fun_l12_n52
+end
+
+def fun_l11_n520()
+ fun_l12_n857
+end
+
+def fun_l11_n521()
+ fun_l12_n110
+end
+
+def fun_l11_n522()
+ fun_l12_n21
+end
+
+def fun_l11_n523()
+ fun_l12_n786
+end
+
+def fun_l11_n524()
+ fun_l12_n56
+end
+
+def fun_l11_n525()
+ fun_l12_n558
+end
+
+def fun_l11_n526()
+ fun_l12_n923
+end
+
+def fun_l11_n527()
+ fun_l12_n716
+end
+
+def fun_l11_n528()
+ fun_l12_n20
+end
+
+def fun_l11_n529()
+ fun_l12_n503
+end
+
+def fun_l11_n530()
+ fun_l12_n221
+end
+
+def fun_l11_n531()
+ fun_l12_n364
+end
+
+def fun_l11_n532()
+ fun_l12_n412
+end
+
+def fun_l11_n533()
+ fun_l12_n925
+end
+
+def fun_l11_n534()
+ fun_l12_n638
+end
+
+def fun_l11_n535()
+ fun_l12_n413
+end
+
+def fun_l11_n536()
+ fun_l12_n873
+end
+
+def fun_l11_n537()
+ fun_l12_n499
+end
+
+def fun_l11_n538()
+ fun_l12_n231
+end
+
+def fun_l11_n539()
+ fun_l12_n450
+end
+
+def fun_l11_n540()
+ fun_l12_n137
+end
+
+def fun_l11_n541()
+ fun_l12_n516
+end
+
+def fun_l11_n542()
+ fun_l12_n479
+end
+
+def fun_l11_n543()
+ fun_l12_n541
+end
+
+def fun_l11_n544()
+ fun_l12_n42
+end
+
+def fun_l11_n545()
+ fun_l12_n207
+end
+
+def fun_l11_n546()
+ fun_l12_n340
+end
+
+def fun_l11_n547()
+ fun_l12_n888
+end
+
+def fun_l11_n548()
+ fun_l12_n443
+end
+
+def fun_l11_n549()
+ fun_l12_n375
+end
+
+def fun_l11_n550()
+ fun_l12_n972
+end
+
+def fun_l11_n551()
+ fun_l12_n622
+end
+
+def fun_l11_n552()
+ fun_l12_n958
+end
+
+def fun_l11_n553()
+ fun_l12_n279
+end
+
+def fun_l11_n554()
+ fun_l12_n498
+end
+
+def fun_l11_n555()
+ fun_l12_n498
+end
+
+def fun_l11_n556()
+ fun_l12_n502
+end
+
+def fun_l11_n557()
+ fun_l12_n113
+end
+
+def fun_l11_n558()
+ fun_l12_n636
+end
+
+def fun_l11_n559()
+ fun_l12_n525
+end
+
+def fun_l11_n560()
+ fun_l12_n541
+end
+
+def fun_l11_n561()
+ fun_l12_n336
+end
+
+def fun_l11_n562()
+ fun_l12_n787
+end
+
+def fun_l11_n563()
+ fun_l12_n858
+end
+
+def fun_l11_n564()
+ fun_l12_n772
+end
+
+def fun_l11_n565()
+ fun_l12_n831
+end
+
+def fun_l11_n566()
+ fun_l12_n95
+end
+
+def fun_l11_n567()
+ fun_l12_n927
+end
+
+def fun_l11_n568()
+ fun_l12_n888
+end
+
+def fun_l11_n569()
+ fun_l12_n444
+end
+
+def fun_l11_n570()
+ fun_l12_n23
+end
+
+def fun_l11_n571()
+ fun_l12_n995
+end
+
+def fun_l11_n572()
+ fun_l12_n372
+end
+
+def fun_l11_n573()
+ fun_l12_n432
+end
+
+def fun_l11_n574()
+ fun_l12_n156
+end
+
+def fun_l11_n575()
+ fun_l12_n981
+end
+
+def fun_l11_n576()
+ fun_l12_n328
+end
+
+def fun_l11_n577()
+ fun_l12_n411
+end
+
+def fun_l11_n578()
+ fun_l12_n734
+end
+
+def fun_l11_n579()
+ fun_l12_n646
+end
+
+def fun_l11_n580()
+ fun_l12_n214
+end
+
+def fun_l11_n581()
+ fun_l12_n334
+end
+
+def fun_l11_n582()
+ fun_l12_n800
+end
+
+def fun_l11_n583()
+ fun_l12_n344
+end
+
+def fun_l11_n584()
+ fun_l12_n672
+end
+
+def fun_l11_n585()
+ fun_l12_n403
+end
+
+def fun_l11_n586()
+ fun_l12_n351
+end
+
+def fun_l11_n587()
+ fun_l12_n506
+end
+
+def fun_l11_n588()
+ fun_l12_n878
+end
+
+def fun_l11_n589()
+ fun_l12_n986
+end
+
+def fun_l11_n590()
+ fun_l12_n524
+end
+
+def fun_l11_n591()
+ fun_l12_n552
+end
+
+def fun_l11_n592()
+ fun_l12_n735
+end
+
+def fun_l11_n593()
+ fun_l12_n953
+end
+
+def fun_l11_n594()
+ fun_l12_n138
+end
+
+def fun_l11_n595()
+ fun_l12_n185
+end
+
+def fun_l11_n596()
+ fun_l12_n865
+end
+
+def fun_l11_n597()
+ fun_l12_n143
+end
+
+def fun_l11_n598()
+ fun_l12_n879
+end
+
+def fun_l11_n599()
+ fun_l12_n751
+end
+
+def fun_l11_n600()
+ fun_l12_n750
+end
+
+def fun_l11_n601()
+ fun_l12_n574
+end
+
+def fun_l11_n602()
+ fun_l12_n91
+end
+
+def fun_l11_n603()
+ fun_l12_n116
+end
+
+def fun_l11_n604()
+ fun_l12_n398
+end
+
+def fun_l11_n605()
+ fun_l12_n782
+end
+
+def fun_l11_n606()
+ fun_l12_n770
+end
+
+def fun_l11_n607()
+ fun_l12_n240
+end
+
+def fun_l11_n608()
+ fun_l12_n385
+end
+
+def fun_l11_n609()
+ fun_l12_n106
+end
+
+def fun_l11_n610()
+ fun_l12_n959
+end
+
+def fun_l11_n611()
+ fun_l12_n84
+end
+
+def fun_l11_n612()
+ fun_l12_n235
+end
+
+def fun_l11_n613()
+ fun_l12_n429
+end
+
+def fun_l11_n614()
+ fun_l12_n402
+end
+
+def fun_l11_n615()
+ fun_l12_n32
+end
+
+def fun_l11_n616()
+ fun_l12_n517
+end
+
+def fun_l11_n617()
+ fun_l12_n304
+end
+
+def fun_l11_n618()
+ fun_l12_n374
+end
+
+def fun_l11_n619()
+ fun_l12_n884
+end
+
+def fun_l11_n620()
+ fun_l12_n399
+end
+
+def fun_l11_n621()
+ fun_l12_n721
+end
+
+def fun_l11_n622()
+ fun_l12_n58
+end
+
+def fun_l11_n623()
+ fun_l12_n237
+end
+
+def fun_l11_n624()
+ fun_l12_n659
+end
+
+def fun_l11_n625()
+ fun_l12_n454
+end
+
+def fun_l11_n626()
+ fun_l12_n942
+end
+
+def fun_l11_n627()
+ fun_l12_n975
+end
+
+def fun_l11_n628()
+ fun_l12_n192
+end
+
+def fun_l11_n629()
+ fun_l12_n590
+end
+
+def fun_l11_n630()
+ fun_l12_n340
+end
+
+def fun_l11_n631()
+ fun_l12_n229
+end
+
+def fun_l11_n632()
+ fun_l12_n478
+end
+
+def fun_l11_n633()
+ fun_l12_n84
+end
+
+def fun_l11_n634()
+ fun_l12_n280
+end
+
+def fun_l11_n635()
+ fun_l12_n896
+end
+
+def fun_l11_n636()
+ fun_l12_n872
+end
+
+def fun_l11_n637()
+ fun_l12_n924
+end
+
+def fun_l11_n638()
+ fun_l12_n957
+end
+
+def fun_l11_n639()
+ fun_l12_n252
+end
+
+def fun_l11_n640()
+ fun_l12_n308
+end
+
+def fun_l11_n641()
+ fun_l12_n217
+end
+
+def fun_l11_n642()
+ fun_l12_n477
+end
+
+def fun_l11_n643()
+ fun_l12_n754
+end
+
+def fun_l11_n644()
+ fun_l12_n561
+end
+
+def fun_l11_n645()
+ fun_l12_n597
+end
+
+def fun_l11_n646()
+ fun_l12_n194
+end
+
+def fun_l11_n647()
+ fun_l12_n708
+end
+
+def fun_l11_n648()
+ fun_l12_n892
+end
+
+def fun_l11_n649()
+ fun_l12_n771
+end
+
+def fun_l11_n650()
+ fun_l12_n549
+end
+
+def fun_l11_n651()
+ fun_l12_n84
+end
+
+def fun_l11_n652()
+ fun_l12_n256
+end
+
+def fun_l11_n653()
+ fun_l12_n454
+end
+
+def fun_l11_n654()
+ fun_l12_n773
+end
+
+def fun_l11_n655()
+ fun_l12_n674
+end
+
+def fun_l11_n656()
+ fun_l12_n364
+end
+
+def fun_l11_n657()
+ fun_l12_n548
+end
+
+def fun_l11_n658()
+ fun_l12_n287
+end
+
+def fun_l11_n659()
+ fun_l12_n211
+end
+
+def fun_l11_n660()
+ fun_l12_n213
+end
+
+def fun_l11_n661()
+ fun_l12_n975
+end
+
+def fun_l11_n662()
+ fun_l12_n221
+end
+
+def fun_l11_n663()
+ fun_l12_n524
+end
+
+def fun_l11_n664()
+ fun_l12_n167
+end
+
+def fun_l11_n665()
+ fun_l12_n361
+end
+
+def fun_l11_n666()
+ fun_l12_n435
+end
+
+def fun_l11_n667()
+ fun_l12_n881
+end
+
+def fun_l11_n668()
+ fun_l12_n977
+end
+
+def fun_l11_n669()
+ fun_l12_n87
+end
+
+def fun_l11_n670()
+ fun_l12_n281
+end
+
+def fun_l11_n671()
+ fun_l12_n44
+end
+
+def fun_l11_n672()
+ fun_l12_n584
+end
+
+def fun_l11_n673()
+ fun_l12_n645
+end
+
+def fun_l11_n674()
+ fun_l12_n268
+end
+
+def fun_l11_n675()
+ fun_l12_n98
+end
+
+def fun_l11_n676()
+ fun_l12_n861
+end
+
+def fun_l11_n677()
+ fun_l12_n9
+end
+
+def fun_l11_n678()
+ fun_l12_n91
+end
+
+def fun_l11_n679()
+ fun_l12_n976
+end
+
+def fun_l11_n680()
+ fun_l12_n373
+end
+
+def fun_l11_n681()
+ fun_l12_n673
+end
+
+def fun_l11_n682()
+ fun_l12_n206
+end
+
+def fun_l11_n683()
+ fun_l12_n838
+end
+
+def fun_l11_n684()
+ fun_l12_n972
+end
+
+def fun_l11_n685()
+ fun_l12_n607
+end
+
+def fun_l11_n686()
+ fun_l12_n55
+end
+
+def fun_l11_n687()
+ fun_l12_n294
+end
+
+def fun_l11_n688()
+ fun_l12_n871
+end
+
+def fun_l11_n689()
+ fun_l12_n518
+end
+
+def fun_l11_n690()
+ fun_l12_n552
+end
+
+def fun_l11_n691()
+ fun_l12_n622
+end
+
+def fun_l11_n692()
+ fun_l12_n505
+end
+
+def fun_l11_n693()
+ fun_l12_n33
+end
+
+def fun_l11_n694()
+ fun_l12_n522
+end
+
+def fun_l11_n695()
+ fun_l12_n729
+end
+
+def fun_l11_n696()
+ fun_l12_n477
+end
+
+def fun_l11_n697()
+ fun_l12_n424
+end
+
+def fun_l11_n698()
+ fun_l12_n258
+end
+
+def fun_l11_n699()
+ fun_l12_n328
+end
+
+def fun_l11_n700()
+ fun_l12_n501
+end
+
+def fun_l11_n701()
+ fun_l12_n841
+end
+
+def fun_l11_n702()
+ fun_l12_n684
+end
+
+def fun_l11_n703()
+ fun_l12_n864
+end
+
+def fun_l11_n704()
+ fun_l12_n527
+end
+
+def fun_l11_n705()
+ fun_l12_n808
+end
+
+def fun_l11_n706()
+ fun_l12_n213
+end
+
+def fun_l11_n707()
+ fun_l12_n711
+end
+
+def fun_l11_n708()
+ fun_l12_n727
+end
+
+def fun_l11_n709()
+ fun_l12_n82
+end
+
+def fun_l11_n710()
+ fun_l12_n926
+end
+
+def fun_l11_n711()
+ fun_l12_n719
+end
+
+def fun_l11_n712()
+ fun_l12_n180
+end
+
+def fun_l11_n713()
+ fun_l12_n568
+end
+
+def fun_l11_n714()
+ fun_l12_n11
+end
+
+def fun_l11_n715()
+ fun_l12_n624
+end
+
+def fun_l11_n716()
+ fun_l12_n954
+end
+
+def fun_l11_n717()
+ fun_l12_n584
+end
+
+def fun_l11_n718()
+ fun_l12_n222
+end
+
+def fun_l11_n719()
+ fun_l12_n460
+end
+
+def fun_l11_n720()
+ fun_l12_n253
+end
+
+def fun_l11_n721()
+ fun_l12_n938
+end
+
+def fun_l11_n722()
+ fun_l12_n552
+end
+
+def fun_l11_n723()
+ fun_l12_n491
+end
+
+def fun_l11_n724()
+ fun_l12_n146
+end
+
+def fun_l11_n725()
+ fun_l12_n833
+end
+
+def fun_l11_n726()
+ fun_l12_n43
+end
+
+def fun_l11_n727()
+ fun_l12_n700
+end
+
+def fun_l11_n728()
+ fun_l12_n730
+end
+
+def fun_l11_n729()
+ fun_l12_n84
+end
+
+def fun_l11_n730()
+ fun_l12_n468
+end
+
+def fun_l11_n731()
+ fun_l12_n253
+end
+
+def fun_l11_n732()
+ fun_l12_n473
+end
+
+def fun_l11_n733()
+ fun_l12_n997
+end
+
+def fun_l11_n734()
+ fun_l12_n584
+end
+
+def fun_l11_n735()
+ fun_l12_n815
+end
+
+def fun_l11_n736()
+ fun_l12_n577
+end
+
+def fun_l11_n737()
+ fun_l12_n890
+end
+
+def fun_l11_n738()
+ fun_l12_n282
+end
+
+def fun_l11_n739()
+ fun_l12_n794
+end
+
+def fun_l11_n740()
+ fun_l12_n615
+end
+
+def fun_l11_n741()
+ fun_l12_n254
+end
+
+def fun_l11_n742()
+ fun_l12_n250
+end
+
+def fun_l11_n743()
+ fun_l12_n45
+end
+
+def fun_l11_n744()
+ fun_l12_n513
+end
+
+def fun_l11_n745()
+ fun_l12_n786
+end
+
+def fun_l11_n746()
+ fun_l12_n764
+end
+
+def fun_l11_n747()
+ fun_l12_n73
+end
+
+def fun_l11_n748()
+ fun_l12_n944
+end
+
+def fun_l11_n749()
+ fun_l12_n49
+end
+
+def fun_l11_n750()
+ fun_l12_n513
+end
+
+def fun_l11_n751()
+ fun_l12_n367
+end
+
+def fun_l11_n752()
+ fun_l12_n61
+end
+
+def fun_l11_n753()
+ fun_l12_n279
+end
+
+def fun_l11_n754()
+ fun_l12_n991
+end
+
+def fun_l11_n755()
+ fun_l12_n747
+end
+
+def fun_l11_n756()
+ fun_l12_n422
+end
+
+def fun_l11_n757()
+ fun_l12_n414
+end
+
+def fun_l11_n758()
+ fun_l12_n61
+end
+
+def fun_l11_n759()
+ fun_l12_n471
+end
+
+def fun_l11_n760()
+ fun_l12_n436
+end
+
+def fun_l11_n761()
+ fun_l12_n183
+end
+
+def fun_l11_n762()
+ fun_l12_n173
+end
+
+def fun_l11_n763()
+ fun_l12_n362
+end
+
+def fun_l11_n764()
+ fun_l12_n174
+end
+
+def fun_l11_n765()
+ fun_l12_n710
+end
+
+def fun_l11_n766()
+ fun_l12_n212
+end
+
+def fun_l11_n767()
+ fun_l12_n649
+end
+
+def fun_l11_n768()
+ fun_l12_n409
+end
+
+def fun_l11_n769()
+ fun_l12_n375
+end
+
+def fun_l11_n770()
+ fun_l12_n608
+end
+
+def fun_l11_n771()
+ fun_l12_n447
+end
+
+def fun_l11_n772()
+ fun_l12_n530
+end
+
+def fun_l11_n773()
+ fun_l12_n359
+end
+
+def fun_l11_n774()
+ fun_l12_n317
+end
+
+def fun_l11_n775()
+ fun_l12_n105
+end
+
+def fun_l11_n776()
+ fun_l12_n65
+end
+
+def fun_l11_n777()
+ fun_l12_n243
+end
+
+def fun_l11_n778()
+ fun_l12_n274
+end
+
+def fun_l11_n779()
+ fun_l12_n560
+end
+
+def fun_l11_n780()
+ fun_l12_n155
+end
+
+def fun_l11_n781()
+ fun_l12_n277
+end
+
+def fun_l11_n782()
+ fun_l12_n255
+end
+
+def fun_l11_n783()
+ fun_l12_n184
+end
+
+def fun_l11_n784()
+ fun_l12_n495
+end
+
+def fun_l11_n785()
+ fun_l12_n910
+end
+
+def fun_l11_n786()
+ fun_l12_n245
+end
+
+def fun_l11_n787()
+ fun_l12_n761
+end
+
+def fun_l11_n788()
+ fun_l12_n501
+end
+
+def fun_l11_n789()
+ fun_l12_n11
+end
+
+def fun_l11_n790()
+ fun_l12_n87
+end
+
+def fun_l11_n791()
+ fun_l12_n233
+end
+
+def fun_l11_n792()
+ fun_l12_n201
+end
+
+def fun_l11_n793()
+ fun_l12_n471
+end
+
+def fun_l11_n794()
+ fun_l12_n6
+end
+
+def fun_l11_n795()
+ fun_l12_n257
+end
+
+def fun_l11_n796()
+ fun_l12_n104
+end
+
+def fun_l11_n797()
+ fun_l12_n712
+end
+
+def fun_l11_n798()
+ fun_l12_n408
+end
+
+def fun_l11_n799()
+ fun_l12_n713
+end
+
+def fun_l11_n800()
+ fun_l12_n622
+end
+
+def fun_l11_n801()
+ fun_l12_n498
+end
+
+def fun_l11_n802()
+ fun_l12_n904
+end
+
+def fun_l11_n803()
+ fun_l12_n413
+end
+
+def fun_l11_n804()
+ fun_l12_n424
+end
+
+def fun_l11_n805()
+ fun_l12_n209
+end
+
+def fun_l11_n806()
+ fun_l12_n171
+end
+
+def fun_l11_n807()
+ fun_l12_n835
+end
+
+def fun_l11_n808()
+ fun_l12_n872
+end
+
+def fun_l11_n809()
+ fun_l12_n456
+end
+
+def fun_l11_n810()
+ fun_l12_n586
+end
+
+def fun_l11_n811()
+ fun_l12_n422
+end
+
+def fun_l11_n812()
+ fun_l12_n125
+end
+
+def fun_l11_n813()
+ fun_l12_n482
+end
+
+def fun_l11_n814()
+ fun_l12_n17
+end
+
+def fun_l11_n815()
+ fun_l12_n966
+end
+
+def fun_l11_n816()
+ fun_l12_n408
+end
+
+def fun_l11_n817()
+ fun_l12_n874
+end
+
+def fun_l11_n818()
+ fun_l12_n454
+end
+
+def fun_l11_n819()
+ fun_l12_n818
+end
+
+def fun_l11_n820()
+ fun_l12_n469
+end
+
+def fun_l11_n821()
+ fun_l12_n104
+end
+
+def fun_l11_n822()
+ fun_l12_n765
+end
+
+def fun_l11_n823()
+ fun_l12_n472
+end
+
+def fun_l11_n824()
+ fun_l12_n794
+end
+
+def fun_l11_n825()
+ fun_l12_n609
+end
+
+def fun_l11_n826()
+ fun_l12_n609
+end
+
+def fun_l11_n827()
+ fun_l12_n99
+end
+
+def fun_l11_n828()
+ fun_l12_n844
+end
+
+def fun_l11_n829()
+ fun_l12_n423
+end
+
+def fun_l11_n830()
+ fun_l12_n560
+end
+
+def fun_l11_n831()
+ fun_l12_n60
+end
+
+def fun_l11_n832()
+ fun_l12_n670
+end
+
+def fun_l11_n833()
+ fun_l12_n591
+end
+
+def fun_l11_n834()
+ fun_l12_n572
+end
+
+def fun_l11_n835()
+ fun_l12_n96
+end
+
+def fun_l11_n836()
+ fun_l12_n567
+end
+
+def fun_l11_n837()
+ fun_l12_n239
+end
+
+def fun_l11_n838()
+ fun_l12_n937
+end
+
+def fun_l11_n839()
+ fun_l12_n853
+end
+
+def fun_l11_n840()
+ fun_l12_n440
+end
+
+def fun_l11_n841()
+ fun_l12_n930
+end
+
+def fun_l11_n842()
+ fun_l12_n448
+end
+
+def fun_l11_n843()
+ fun_l12_n185
+end
+
+def fun_l11_n844()
+ fun_l12_n904
+end
+
+def fun_l11_n845()
+ fun_l12_n399
+end
+
+def fun_l11_n846()
+ fun_l12_n184
+end
+
+def fun_l11_n847()
+ fun_l12_n985
+end
+
+def fun_l11_n848()
+ fun_l12_n966
+end
+
+def fun_l11_n849()
+ fun_l12_n183
+end
+
+def fun_l11_n850()
+ fun_l12_n418
+end
+
+def fun_l11_n851()
+ fun_l12_n546
+end
+
+def fun_l11_n852()
+ fun_l12_n96
+end
+
+def fun_l11_n853()
+ fun_l12_n172
+end
+
+def fun_l11_n854()
+ fun_l12_n546
+end
+
+def fun_l11_n855()
+ fun_l12_n86
+end
+
+def fun_l11_n856()
+ fun_l12_n815
+end
+
+def fun_l11_n857()
+ fun_l12_n552
+end
+
+def fun_l11_n858()
+ fun_l12_n657
+end
+
+def fun_l11_n859()
+ fun_l12_n567
+end
+
+def fun_l11_n860()
+ fun_l12_n561
+end
+
+def fun_l11_n861()
+ fun_l12_n590
+end
+
+def fun_l11_n862()
+ fun_l12_n28
+end
+
+def fun_l11_n863()
+ fun_l12_n935
+end
+
+def fun_l11_n864()
+ fun_l12_n950
+end
+
+def fun_l11_n865()
+ fun_l12_n946
+end
+
+def fun_l11_n866()
+ fun_l12_n77
+end
+
+def fun_l11_n867()
+ fun_l12_n454
+end
+
+def fun_l11_n868()
+ fun_l12_n813
+end
+
+def fun_l11_n869()
+ fun_l12_n562
+end
+
+def fun_l11_n870()
+ fun_l12_n598
+end
+
+def fun_l11_n871()
+ fun_l12_n331
+end
+
+def fun_l11_n872()
+ fun_l12_n156
+end
+
+def fun_l11_n873()
+ fun_l12_n807
+end
+
+def fun_l11_n874()
+ fun_l12_n442
+end
+
+def fun_l11_n875()
+ fun_l12_n322
+end
+
+def fun_l11_n876()
+ fun_l12_n472
+end
+
+def fun_l11_n877()
+ fun_l12_n581
+end
+
+def fun_l11_n878()
+ fun_l12_n94
+end
+
+def fun_l11_n879()
+ fun_l12_n270
+end
+
+def fun_l11_n880()
+ fun_l12_n63
+end
+
+def fun_l11_n881()
+ fun_l12_n290
+end
+
+def fun_l11_n882()
+ fun_l12_n148
+end
+
+def fun_l11_n883()
+ fun_l12_n862
+end
+
+def fun_l11_n884()
+ fun_l12_n527
+end
+
+def fun_l11_n885()
+ fun_l12_n166
+end
+
+def fun_l11_n886()
+ fun_l12_n422
+end
+
+def fun_l11_n887()
+ fun_l12_n195
+end
+
+def fun_l11_n888()
+ fun_l12_n592
+end
+
+def fun_l11_n889()
+ fun_l12_n116
+end
+
+def fun_l11_n890()
+ fun_l12_n923
+end
+
+def fun_l11_n891()
+ fun_l12_n422
+end
+
+def fun_l11_n892()
+ fun_l12_n945
+end
+
+def fun_l11_n893()
+ fun_l12_n850
+end
+
+def fun_l11_n894()
+ fun_l12_n598
+end
+
+def fun_l11_n895()
+ fun_l12_n448
+end
+
+def fun_l11_n896()
+ fun_l12_n955
+end
+
+def fun_l11_n897()
+ fun_l12_n259
+end
+
+def fun_l11_n898()
+ fun_l12_n145
+end
+
+def fun_l11_n899()
+ fun_l12_n321
+end
+
+def fun_l11_n900()
+ fun_l12_n680
+end
+
+def fun_l11_n901()
+ fun_l12_n856
+end
+
+def fun_l11_n902()
+ fun_l12_n776
+end
+
+def fun_l11_n903()
+ fun_l12_n108
+end
+
+def fun_l11_n904()
+ fun_l12_n340
+end
+
+def fun_l11_n905()
+ fun_l12_n78
+end
+
+def fun_l11_n906()
+ fun_l12_n218
+end
+
+def fun_l11_n907()
+ fun_l12_n288
+end
+
+def fun_l11_n908()
+ fun_l12_n197
+end
+
+def fun_l11_n909()
+ fun_l12_n890
+end
+
+def fun_l11_n910()
+ fun_l12_n850
+end
+
+def fun_l11_n911()
+ fun_l12_n964
+end
+
+def fun_l11_n912()
+ fun_l12_n47
+end
+
+def fun_l11_n913()
+ fun_l12_n462
+end
+
+def fun_l11_n914()
+ fun_l12_n461
+end
+
+def fun_l11_n915()
+ fun_l12_n57
+end
+
+def fun_l11_n916()
+ fun_l12_n938
+end
+
+def fun_l11_n917()
+ fun_l12_n841
+end
+
+def fun_l11_n918()
+ fun_l12_n462
+end
+
+def fun_l11_n919()
+ fun_l12_n425
+end
+
+def fun_l11_n920()
+ fun_l12_n775
+end
+
+def fun_l11_n921()
+ fun_l12_n302
+end
+
+def fun_l11_n922()
+ fun_l12_n921
+end
+
+def fun_l11_n923()
+ fun_l12_n322
+end
+
+def fun_l11_n924()
+ fun_l12_n414
+end
+
+def fun_l11_n925()
+ fun_l12_n461
+end
+
+def fun_l11_n926()
+ fun_l12_n476
+end
+
+def fun_l11_n927()
+ fun_l12_n537
+end
+
+def fun_l11_n928()
+ fun_l12_n359
+end
+
+def fun_l11_n929()
+ fun_l12_n297
+end
+
+def fun_l11_n930()
+ fun_l12_n134
+end
+
+def fun_l11_n931()
+ fun_l12_n875
+end
+
+def fun_l11_n932()
+ fun_l12_n763
+end
+
+def fun_l11_n933()
+ fun_l12_n180
+end
+
+def fun_l11_n934()
+ fun_l12_n522
+end
+
+def fun_l11_n935()
+ fun_l12_n701
+end
+
+def fun_l11_n936()
+ fun_l12_n793
+end
+
+def fun_l11_n937()
+ fun_l12_n853
+end
+
+def fun_l11_n938()
+ fun_l12_n208
+end
+
+def fun_l11_n939()
+ fun_l12_n307
+end
+
+def fun_l11_n940()
+ fun_l12_n695
+end
+
+def fun_l11_n941()
+ fun_l12_n171
+end
+
+def fun_l11_n942()
+ fun_l12_n181
+end
+
+def fun_l11_n943()
+ fun_l12_n58
+end
+
+def fun_l11_n944()
+ fun_l12_n733
+end
+
+def fun_l11_n945()
+ fun_l12_n7
+end
+
+def fun_l11_n946()
+ fun_l12_n332
+end
+
+def fun_l11_n947()
+ fun_l12_n323
+end
+
+def fun_l11_n948()
+ fun_l12_n240
+end
+
+def fun_l11_n949()
+ fun_l12_n21
+end
+
+def fun_l11_n950()
+ fun_l12_n814
+end
+
+def fun_l11_n951()
+ fun_l12_n943
+end
+
+def fun_l11_n952()
+ fun_l12_n4
+end
+
+def fun_l11_n953()
+ fun_l12_n747
+end
+
+def fun_l11_n954()
+ fun_l12_n500
+end
+
+def fun_l11_n955()
+ fun_l12_n361
+end
+
+def fun_l11_n956()
+ fun_l12_n898
+end
+
+def fun_l11_n957()
+ fun_l12_n216
+end
+
+def fun_l11_n958()
+ fun_l12_n58
+end
+
+def fun_l11_n959()
+ fun_l12_n327
+end
+
+def fun_l11_n960()
+ fun_l12_n405
+end
+
+def fun_l11_n961()
+ fun_l12_n665
+end
+
+def fun_l11_n962()
+ fun_l12_n456
+end
+
+def fun_l11_n963()
+ fun_l12_n399
+end
+
+def fun_l11_n964()
+ fun_l12_n836
+end
+
+def fun_l11_n965()
+ fun_l12_n18
+end
+
+def fun_l11_n966()
+ fun_l12_n236
+end
+
+def fun_l11_n967()
+ fun_l12_n594
+end
+
+def fun_l11_n968()
+ fun_l12_n147
+end
+
+def fun_l11_n969()
+ fun_l12_n758
+end
+
+def fun_l11_n970()
+ fun_l12_n271
+end
+
+def fun_l11_n971()
+ fun_l12_n551
+end
+
+def fun_l11_n972()
+ fun_l12_n332
+end
+
+def fun_l11_n973()
+ fun_l12_n348
+end
+
+def fun_l11_n974()
+ fun_l12_n158
+end
+
+def fun_l11_n975()
+ fun_l12_n990
+end
+
+def fun_l11_n976()
+ fun_l12_n330
+end
+
+def fun_l11_n977()
+ fun_l12_n764
+end
+
+def fun_l11_n978()
+ fun_l12_n844
+end
+
+def fun_l11_n979()
+ fun_l12_n452
+end
+
+def fun_l11_n980()
+ fun_l12_n593
+end
+
+def fun_l11_n981()
+ fun_l12_n762
+end
+
+def fun_l11_n982()
+ fun_l12_n736
+end
+
+def fun_l11_n983()
+ fun_l12_n957
+end
+
+def fun_l11_n984()
+ fun_l12_n174
+end
+
+def fun_l11_n985()
+ fun_l12_n454
+end
+
+def fun_l11_n986()
+ fun_l12_n492
+end
+
+def fun_l11_n987()
+ fun_l12_n986
+end
+
+def fun_l11_n988()
+ fun_l12_n868
+end
+
+def fun_l11_n989()
+ fun_l12_n445
+end
+
+def fun_l11_n990()
+ fun_l12_n422
+end
+
+def fun_l11_n991()
+ fun_l12_n877
+end
+
+def fun_l11_n992()
+ fun_l12_n150
+end
+
+def fun_l11_n993()
+ fun_l12_n163
+end
+
+def fun_l11_n994()
+ fun_l12_n183
+end
+
+def fun_l11_n995()
+ fun_l12_n100
+end
+
+def fun_l11_n996()
+ fun_l12_n297
+end
+
+def fun_l11_n997()
+ fun_l12_n43
+end
+
+def fun_l11_n998()
+ fun_l12_n324
+end
+
+def fun_l11_n999()
+ fun_l12_n732
+end
+
+def fun_l12_n0()
+ fun_l13_n595
+end
+
+def fun_l12_n1()
+ fun_l13_n185
+end
+
+def fun_l12_n2()
+ fun_l13_n257
+end
+
+def fun_l12_n3()
+ fun_l13_n865
+end
+
+def fun_l12_n4()
+ fun_l13_n857
+end
+
+def fun_l12_n5()
+ fun_l13_n9
+end
+
+def fun_l12_n6()
+ fun_l13_n41
+end
+
+def fun_l12_n7()
+ fun_l13_n430
+end
+
+def fun_l12_n8()
+ fun_l13_n394
+end
+
+def fun_l12_n9()
+ fun_l13_n20
+end
+
+def fun_l12_n10()
+ fun_l13_n527
+end
+
+def fun_l12_n11()
+ fun_l13_n158
+end
+
+def fun_l12_n12()
+ fun_l13_n229
+end
+
+def fun_l12_n13()
+ fun_l13_n205
+end
+
+def fun_l12_n14()
+ fun_l13_n88
+end
+
+def fun_l12_n15()
+ fun_l13_n359
+end
+
+def fun_l12_n16()
+ fun_l13_n204
+end
+
+def fun_l12_n17()
+ fun_l13_n297
+end
+
+def fun_l12_n18()
+ fun_l13_n531
+end
+
+def fun_l12_n19()
+ fun_l13_n244
+end
+
+def fun_l12_n20()
+ fun_l13_n587
+end
+
+def fun_l12_n21()
+ fun_l13_n731
+end
+
+def fun_l12_n22()
+ fun_l13_n839
+end
+
+def fun_l12_n23()
+ fun_l13_n560
+end
+
+def fun_l12_n24()
+ fun_l13_n22
+end
+
+def fun_l12_n25()
+ fun_l13_n383
+end
+
+def fun_l12_n26()
+ fun_l13_n321
+end
+
+def fun_l12_n27()
+ fun_l13_n286
+end
+
+def fun_l12_n28()
+ fun_l13_n951
+end
+
+def fun_l12_n29()
+ fun_l13_n172
+end
+
+def fun_l12_n30()
+ fun_l13_n804
+end
+
+def fun_l12_n31()
+ fun_l13_n619
+end
+
+def fun_l12_n32()
+ fun_l13_n464
+end
+
+def fun_l12_n33()
+ fun_l13_n87
+end
+
+def fun_l12_n34()
+ fun_l13_n544
+end
+
+def fun_l12_n35()
+ fun_l13_n37
+end
+
+def fun_l12_n36()
+ fun_l13_n614
+end
+
+def fun_l12_n37()
+ fun_l13_n426
+end
+
+def fun_l12_n38()
+ fun_l13_n335
+end
+
+def fun_l12_n39()
+ fun_l13_n689
+end
+
+def fun_l12_n40()
+ fun_l13_n220
+end
+
+def fun_l12_n41()
+ fun_l13_n77
+end
+
+def fun_l12_n42()
+ fun_l13_n791
+end
+
+def fun_l12_n43()
+ fun_l13_n514
+end
+
+def fun_l12_n44()
+ fun_l13_n802
+end
+
+def fun_l12_n45()
+ fun_l13_n860
+end
+
+def fun_l12_n46()
+ fun_l13_n562
+end
+
+def fun_l12_n47()
+ fun_l13_n208
+end
+
+def fun_l12_n48()
+ fun_l13_n167
+end
+
+def fun_l12_n49()
+ fun_l13_n772
+end
+
+def fun_l12_n50()
+ fun_l13_n303
+end
+
+def fun_l12_n51()
+ fun_l13_n757
+end
+
+def fun_l12_n52()
+ fun_l13_n558
+end
+
+def fun_l12_n53()
+ fun_l13_n45
+end
+
+def fun_l12_n54()
+ fun_l13_n292
+end
+
+def fun_l12_n55()
+ fun_l13_n558
+end
+
+def fun_l12_n56()
+ fun_l13_n361
+end
+
+def fun_l12_n57()
+ fun_l13_n605
+end
+
+def fun_l12_n58()
+ fun_l13_n16
+end
+
+def fun_l12_n59()
+ fun_l13_n73
+end
+
+def fun_l12_n60()
+ fun_l13_n292
+end
+
+def fun_l12_n61()
+ fun_l13_n747
+end
+
+def fun_l12_n62()
+ fun_l13_n798
+end
+
+def fun_l12_n63()
+ fun_l13_n130
+end
+
+def fun_l12_n64()
+ fun_l13_n261
+end
+
+def fun_l12_n65()
+ fun_l13_n122
+end
+
+def fun_l12_n66()
+ fun_l13_n346
+end
+
+def fun_l12_n67()
+ fun_l13_n308
+end
+
+def fun_l12_n68()
+ fun_l13_n27
+end
+
+def fun_l12_n69()
+ fun_l13_n433
+end
+
+def fun_l12_n70()
+ fun_l13_n509
+end
+
+def fun_l12_n71()
+ fun_l13_n643
+end
+
+def fun_l12_n72()
+ fun_l13_n462
+end
+
+def fun_l12_n73()
+ fun_l13_n976
+end
+
+def fun_l12_n74()
+ fun_l13_n157
+end
+
+def fun_l12_n75()
+ fun_l13_n733
+end
+
+def fun_l12_n76()
+ fun_l13_n976
+end
+
+def fun_l12_n77()
+ fun_l13_n369
+end
+
+def fun_l12_n78()
+ fun_l13_n308
+end
+
+def fun_l12_n79()
+ fun_l13_n958
+end
+
+def fun_l12_n80()
+ fun_l13_n95
+end
+
+def fun_l12_n81()
+ fun_l13_n653
+end
+
+def fun_l12_n82()
+ fun_l13_n624
+end
+
+def fun_l12_n83()
+ fun_l13_n712
+end
+
+def fun_l12_n84()
+ fun_l13_n950
+end
+
+def fun_l12_n85()
+ fun_l13_n836
+end
+
+def fun_l12_n86()
+ fun_l13_n496
+end
+
+def fun_l12_n87()
+ fun_l13_n727
+end
+
+def fun_l12_n88()
+ fun_l13_n368
+end
+
+def fun_l12_n89()
+ fun_l13_n727
+end
+
+def fun_l12_n90()
+ fun_l13_n682
+end
+
+def fun_l12_n91()
+ fun_l13_n758
+end
+
+def fun_l12_n92()
+ fun_l13_n910
+end
+
+def fun_l12_n93()
+ fun_l13_n490
+end
+
+def fun_l12_n94()
+ fun_l13_n405
+end
+
+def fun_l12_n95()
+ fun_l13_n171
+end
+
+def fun_l12_n96()
+ fun_l13_n69
+end
+
+def fun_l12_n97()
+ fun_l13_n519
+end
+
+def fun_l12_n98()
+ fun_l13_n476
+end
+
+def fun_l12_n99()
+ fun_l13_n399
+end
+
+def fun_l12_n100()
+ fun_l13_n93
+end
+
+def fun_l12_n101()
+ fun_l13_n220
+end
+
+def fun_l12_n102()
+ fun_l13_n483
+end
+
+def fun_l12_n103()
+ fun_l13_n176
+end
+
+def fun_l12_n104()
+ fun_l13_n210
+end
+
+def fun_l12_n105()
+ fun_l13_n111
+end
+
+def fun_l12_n106()
+ fun_l13_n436
+end
+
+def fun_l12_n107()
+ fun_l13_n887
+end
+
+def fun_l12_n108()
+ fun_l13_n118
+end
+
+def fun_l12_n109()
+ fun_l13_n630
+end
+
+def fun_l12_n110()
+ fun_l13_n262
+end
+
+def fun_l12_n111()
+ fun_l13_n975
+end
+
+def fun_l12_n112()
+ fun_l13_n280
+end
+
+def fun_l12_n113()
+ fun_l13_n341
+end
+
+def fun_l12_n114()
+ fun_l13_n452
+end
+
+def fun_l12_n115()
+ fun_l13_n762
+end
+
+def fun_l12_n116()
+ fun_l13_n230
+end
+
+def fun_l12_n117()
+ fun_l13_n470
+end
+
+def fun_l12_n118()
+ fun_l13_n257
+end
+
+def fun_l12_n119()
+ fun_l13_n920
+end
+
+def fun_l12_n120()
+ fun_l13_n600
+end
+
+def fun_l12_n121()
+ fun_l13_n947
+end
+
+def fun_l12_n122()
+ fun_l13_n643
+end
+
+def fun_l12_n123()
+ fun_l13_n18
+end
+
+def fun_l12_n124()
+ fun_l13_n680
+end
+
+def fun_l12_n125()
+ fun_l13_n926
+end
+
+def fun_l12_n126()
+ fun_l13_n841
+end
+
+def fun_l12_n127()
+ fun_l13_n391
+end
+
+def fun_l12_n128()
+ fun_l13_n617
+end
+
+def fun_l12_n129()
+ fun_l13_n484
+end
+
+def fun_l12_n130()
+ fun_l13_n211
+end
+
+def fun_l12_n131()
+ fun_l13_n206
+end
+
+def fun_l12_n132()
+ fun_l13_n789
+end
+
+def fun_l12_n133()
+ fun_l13_n660
+end
+
+def fun_l12_n134()
+ fun_l13_n386
+end
+
+def fun_l12_n135()
+ fun_l13_n414
+end
+
+def fun_l12_n136()
+ fun_l13_n271
+end
+
+def fun_l12_n137()
+ fun_l13_n444
+end
+
+def fun_l12_n138()
+ fun_l13_n661
+end
+
+def fun_l12_n139()
+ fun_l13_n784
+end
+
+def fun_l12_n140()
+ fun_l13_n919
+end
+
+def fun_l12_n141()
+ fun_l13_n29
+end
+
+def fun_l12_n142()
+ fun_l13_n92
+end
+
+def fun_l12_n143()
+ fun_l13_n380
+end
+
+def fun_l12_n144()
+ fun_l13_n826
+end
+
+def fun_l12_n145()
+ fun_l13_n222
+end
+
+def fun_l12_n146()
+ fun_l13_n891
+end
+
+def fun_l12_n147()
+ fun_l13_n162
+end
+
+def fun_l12_n148()
+ fun_l13_n737
+end
+
+def fun_l12_n149()
+ fun_l13_n342
+end
+
+def fun_l12_n150()
+ fun_l13_n371
+end
+
+def fun_l12_n151()
+ fun_l13_n903
+end
+
+def fun_l12_n152()
+ fun_l13_n556
+end
+
+def fun_l12_n153()
+ fun_l13_n333
+end
+
+def fun_l12_n154()
+ fun_l13_n193
+end
+
+def fun_l12_n155()
+ fun_l13_n518
+end
+
+def fun_l12_n156()
+ fun_l13_n411
+end
+
+def fun_l12_n157()
+ fun_l13_n249
+end
+
+def fun_l12_n158()
+ fun_l13_n53
+end
+
+def fun_l12_n159()
+ fun_l13_n467
+end
+
+def fun_l12_n160()
+ fun_l13_n433
+end
+
+def fun_l12_n161()
+ fun_l13_n773
+end
+
+def fun_l12_n162()
+ fun_l13_n178
+end
+
+def fun_l12_n163()
+ fun_l13_n641
+end
+
+def fun_l12_n164()
+ fun_l13_n308
+end
+
+def fun_l12_n165()
+ fun_l13_n787
+end
+
+def fun_l12_n166()
+ fun_l13_n829
+end
+
+def fun_l12_n167()
+ fun_l13_n929
+end
+
+def fun_l12_n168()
+ fun_l13_n788
+end
+
+def fun_l12_n169()
+ fun_l13_n948
+end
+
+def fun_l12_n170()
+ fun_l13_n444
+end
+
+def fun_l12_n171()
+ fun_l13_n946
+end
+
+def fun_l12_n172()
+ fun_l13_n303
+end
+
+def fun_l12_n173()
+ fun_l13_n196
+end
+
+def fun_l12_n174()
+ fun_l13_n521
+end
+
+def fun_l12_n175()
+ fun_l13_n372
+end
+
+def fun_l12_n176()
+ fun_l13_n411
+end
+
+def fun_l12_n177()
+ fun_l13_n434
+end
+
+def fun_l12_n178()
+ fun_l13_n599
+end
+
+def fun_l12_n179()
+ fun_l13_n507
+end
+
+def fun_l12_n180()
+ fun_l13_n781
+end
+
+def fun_l12_n181()
+ fun_l13_n186
+end
+
+def fun_l12_n182()
+ fun_l13_n737
+end
+
+def fun_l12_n183()
+ fun_l13_n993
+end
+
+def fun_l12_n184()
+ fun_l13_n806
+end
+
+def fun_l12_n185()
+ fun_l13_n45
+end
+
+def fun_l12_n186()
+ fun_l13_n30
+end
+
+def fun_l12_n187()
+ fun_l13_n774
+end
+
+def fun_l12_n188()
+ fun_l13_n715
+end
+
+def fun_l12_n189()
+ fun_l13_n351
+end
+
+def fun_l12_n190()
+ fun_l13_n173
+end
+
+def fun_l12_n191()
+ fun_l13_n574
+end
+
+def fun_l12_n192()
+ fun_l13_n768
+end
+
+def fun_l12_n193()
+ fun_l13_n514
+end
+
+def fun_l12_n194()
+ fun_l13_n505
+end
+
+def fun_l12_n195()
+ fun_l13_n460
+end
+
+def fun_l12_n196()
+ fun_l13_n377
+end
+
+def fun_l12_n197()
+ fun_l13_n275
+end
+
+def fun_l12_n198()
+ fun_l13_n642
+end
+
+def fun_l12_n199()
+ fun_l13_n746
+end
+
+def fun_l12_n200()
+ fun_l13_n507
+end
+
+def fun_l12_n201()
+ fun_l13_n576
+end
+
+def fun_l12_n202()
+ fun_l13_n899
+end
+
+def fun_l12_n203()
+ fun_l13_n88
+end
+
+def fun_l12_n204()
+ fun_l13_n735
+end
+
+def fun_l12_n205()
+ fun_l13_n270
+end
+
+def fun_l12_n206()
+ fun_l13_n398
+end
+
+def fun_l12_n207()
+ fun_l13_n98
+end
+
+def fun_l12_n208()
+ fun_l13_n272
+end
+
+def fun_l12_n209()
+ fun_l13_n493
+end
+
+def fun_l12_n210()
+ fun_l13_n893
+end
+
+def fun_l12_n211()
+ fun_l13_n550
+end
+
+def fun_l12_n212()
+ fun_l13_n428
+end
+
+def fun_l12_n213()
+ fun_l13_n20
+end
+
+def fun_l12_n214()
+ fun_l13_n437
+end
+
+def fun_l12_n215()
+ fun_l13_n964
+end
+
+def fun_l12_n216()
+ fun_l13_n880
+end
+
+def fun_l12_n217()
+ fun_l13_n119
+end
+
+def fun_l12_n218()
+ fun_l13_n125
+end
+
+def fun_l12_n219()
+ fun_l13_n48
+end
+
+def fun_l12_n220()
+ fun_l13_n749
+end
+
+def fun_l12_n221()
+ fun_l13_n65
+end
+
+def fun_l12_n222()
+ fun_l13_n535
+end
+
+def fun_l12_n223()
+ fun_l13_n770
+end
+
+def fun_l12_n224()
+ fun_l13_n118
+end
+
+def fun_l12_n225()
+ fun_l13_n859
+end
+
+def fun_l12_n226()
+ fun_l13_n768
+end
+
+def fun_l12_n227()
+ fun_l13_n981
+end
+
+def fun_l12_n228()
+ fun_l13_n518
+end
+
+def fun_l12_n229()
+ fun_l13_n361
+end
+
+def fun_l12_n230()
+ fun_l13_n255
+end
+
+def fun_l12_n231()
+ fun_l13_n922
+end
+
+def fun_l12_n232()
+ fun_l13_n375
+end
+
+def fun_l12_n233()
+ fun_l13_n265
+end
+
+def fun_l12_n234()
+ fun_l13_n832
+end
+
+def fun_l12_n235()
+ fun_l13_n147
+end
+
+def fun_l12_n236()
+ fun_l13_n162
+end
+
+def fun_l12_n237()
+ fun_l13_n832
+end
+
+def fun_l12_n238()
+ fun_l13_n930
+end
+
+def fun_l12_n239()
+ fun_l13_n429
+end
+
+def fun_l12_n240()
+ fun_l13_n429
+end
+
+def fun_l12_n241()
+ fun_l13_n152
+end
+
+def fun_l12_n242()
+ fun_l13_n287
+end
+
+def fun_l12_n243()
+ fun_l13_n140
+end
+
+def fun_l12_n244()
+ fun_l13_n994
+end
+
+def fun_l12_n245()
+ fun_l13_n815
+end
+
+def fun_l12_n246()
+ fun_l13_n865
+end
+
+def fun_l12_n247()
+ fun_l13_n613
+end
+
+def fun_l12_n248()
+ fun_l13_n347
+end
+
+def fun_l12_n249()
+ fun_l13_n959
+end
+
+def fun_l12_n250()
+ fun_l13_n870
+end
+
+def fun_l12_n251()
+ fun_l13_n167
+end
+
+def fun_l12_n252()
+ fun_l13_n860
+end
+
+def fun_l12_n253()
+ fun_l13_n897
+end
+
+def fun_l12_n254()
+ fun_l13_n605
+end
+
+def fun_l12_n255()
+ fun_l13_n136
+end
+
+def fun_l12_n256()
+ fun_l13_n636
+end
+
+def fun_l12_n257()
+ fun_l13_n60
+end
+
+def fun_l12_n258()
+ fun_l13_n925
+end
+
+def fun_l12_n259()
+ fun_l13_n472
+end
+
+def fun_l12_n260()
+ fun_l13_n423
+end
+
+def fun_l12_n261()
+ fun_l13_n798
+end
+
+def fun_l12_n262()
+ fun_l13_n381
+end
+
+def fun_l12_n263()
+ fun_l13_n922
+end
+
+def fun_l12_n264()
+ fun_l13_n923
+end
+
+def fun_l12_n265()
+ fun_l13_n644
+end
+
+def fun_l12_n266()
+ fun_l13_n334
+end
+
+def fun_l12_n267()
+ fun_l13_n201
+end
+
+def fun_l12_n268()
+ fun_l13_n690
+end
+
+def fun_l12_n269()
+ fun_l13_n699
+end
+
+def fun_l12_n270()
+ fun_l13_n269
+end
+
+def fun_l12_n271()
+ fun_l13_n582
+end
+
+def fun_l12_n272()
+ fun_l13_n513
+end
+
+def fun_l12_n273()
+ fun_l13_n723
+end
+
+def fun_l12_n274()
+ fun_l13_n757
+end
+
+def fun_l12_n275()
+ fun_l13_n390
+end
+
+def fun_l12_n276()
+ fun_l13_n459
+end
+
+def fun_l12_n277()
+ fun_l13_n973
+end
+
+def fun_l12_n278()
+ fun_l13_n762
+end
+
+def fun_l12_n279()
+ fun_l13_n829
+end
+
+def fun_l12_n280()
+ fun_l13_n706
+end
+
+def fun_l12_n281()
+ fun_l13_n769
+end
+
+def fun_l12_n282()
+ fun_l13_n736
+end
+
+def fun_l12_n283()
+ fun_l13_n931
+end
+
+def fun_l12_n284()
+ fun_l13_n226
+end
+
+def fun_l12_n285()
+ fun_l13_n688
+end
+
+def fun_l12_n286()
+ fun_l13_n74
+end
+
+def fun_l12_n287()
+ fun_l13_n470
+end
+
+def fun_l12_n288()
+ fun_l13_n932
+end
+
+def fun_l12_n289()
+ fun_l13_n923
+end
+
+def fun_l12_n290()
+ fun_l13_n53
+end
+
+def fun_l12_n291()
+ fun_l13_n113
+end
+
+def fun_l12_n292()
+ fun_l13_n115
+end
+
+def fun_l12_n293()
+ fun_l13_n864
+end
+
+def fun_l12_n294()
+ fun_l13_n503
+end
+
+def fun_l12_n295()
+ fun_l13_n998
+end
+
+def fun_l12_n296()
+ fun_l13_n637
+end
+
+def fun_l12_n297()
+ fun_l13_n655
+end
+
+def fun_l12_n298()
+ fun_l13_n50
+end
+
+def fun_l12_n299()
+ fun_l13_n564
+end
+
+def fun_l12_n300()
+ fun_l13_n39
+end
+
+def fun_l12_n301()
+ fun_l13_n836
+end
+
+def fun_l12_n302()
+ fun_l13_n85
+end
+
+def fun_l12_n303()
+ fun_l13_n992
+end
+
+def fun_l12_n304()
+ fun_l13_n956
+end
+
+def fun_l12_n305()
+ fun_l13_n746
+end
+
+def fun_l12_n306()
+ fun_l13_n281
+end
+
+def fun_l12_n307()
+ fun_l13_n790
+end
+
+def fun_l12_n308()
+ fun_l13_n69
+end
+
+def fun_l12_n309()
+ fun_l13_n296
+end
+
+def fun_l12_n310()
+ fun_l13_n239
+end
+
+def fun_l12_n311()
+ fun_l13_n451
+end
+
+def fun_l12_n312()
+ fun_l13_n756
+end
+
+def fun_l12_n313()
+ fun_l13_n339
+end
+
+def fun_l12_n314()
+ fun_l13_n438
+end
+
+def fun_l12_n315()
+ fun_l13_n840
+end
+
+def fun_l12_n316()
+ fun_l13_n903
+end
+
+def fun_l12_n317()
+ fun_l13_n506
+end
+
+def fun_l12_n318()
+ fun_l13_n529
+end
+
+def fun_l12_n319()
+ fun_l13_n242
+end
+
+def fun_l12_n320()
+ fun_l13_n658
+end
+
+def fun_l12_n321()
+ fun_l13_n34
+end
+
+def fun_l12_n322()
+ fun_l13_n89
+end
+
+def fun_l12_n323()
+ fun_l13_n29
+end
+
+def fun_l12_n324()
+ fun_l13_n981
+end
+
+def fun_l12_n325()
+ fun_l13_n463
+end
+
+def fun_l12_n326()
+ fun_l13_n889
+end
+
+def fun_l12_n327()
+ fun_l13_n583
+end
+
+def fun_l12_n328()
+ fun_l13_n291
+end
+
+def fun_l12_n329()
+ fun_l13_n618
+end
+
+def fun_l12_n330()
+ fun_l13_n660
+end
+
+def fun_l12_n331()
+ fun_l13_n545
+end
+
+def fun_l12_n332()
+ fun_l13_n817
+end
+
+def fun_l12_n333()
+ fun_l13_n399
+end
+
+def fun_l12_n334()
+ fun_l13_n579
+end
+
+def fun_l12_n335()
+ fun_l13_n508
+end
+
+def fun_l12_n336()
+ fun_l13_n979
+end
+
+def fun_l12_n337()
+ fun_l13_n826
+end
+
+def fun_l12_n338()
+ fun_l13_n18
+end
+
+def fun_l12_n339()
+ fun_l13_n218
+end
+
+def fun_l12_n340()
+ fun_l13_n344
+end
+
+def fun_l12_n341()
+ fun_l13_n280
+end
+
+def fun_l12_n342()
+ fun_l13_n244
+end
+
+def fun_l12_n343()
+ fun_l13_n857
+end
+
+def fun_l12_n344()
+ fun_l13_n301
+end
+
+def fun_l12_n345()
+ fun_l13_n428
+end
+
+def fun_l12_n346()
+ fun_l13_n192
+end
+
+def fun_l12_n347()
+ fun_l13_n155
+end
+
+def fun_l12_n348()
+ fun_l13_n414
+end
+
+def fun_l12_n349()
+ fun_l13_n196
+end
+
+def fun_l12_n350()
+ fun_l13_n824
+end
+
+def fun_l12_n351()
+ fun_l13_n901
+end
+
+def fun_l12_n352()
+ fun_l13_n705
+end
+
+def fun_l12_n353()
+ fun_l13_n872
+end
+
+def fun_l12_n354()
+ fun_l13_n82
+end
+
+def fun_l12_n355()
+ fun_l13_n664
+end
+
+def fun_l12_n356()
+ fun_l13_n948
+end
+
+def fun_l12_n357()
+ fun_l13_n430
+end
+
+def fun_l12_n358()
+ fun_l13_n716
+end
+
+def fun_l12_n359()
+ fun_l13_n319
+end
+
+def fun_l12_n360()
+ fun_l13_n680
+end
+
+def fun_l12_n361()
+ fun_l13_n961
+end
+
+def fun_l12_n362()
+ fun_l13_n347
+end
+
+def fun_l12_n363()
+ fun_l13_n164
+end
+
+def fun_l12_n364()
+ fun_l13_n849
+end
+
+def fun_l12_n365()
+ fun_l13_n448
+end
+
+def fun_l12_n366()
+ fun_l13_n622
+end
+
+def fun_l12_n367()
+ fun_l13_n191
+end
+
+def fun_l12_n368()
+ fun_l13_n818
+end
+
+def fun_l12_n369()
+ fun_l13_n525
+end
+
+def fun_l12_n370()
+ fun_l13_n343
+end
+
+def fun_l12_n371()
+ fun_l13_n789
+end
+
+def fun_l12_n372()
+ fun_l13_n811
+end
+
+def fun_l12_n373()
+ fun_l13_n503
+end
+
+def fun_l12_n374()
+ fun_l13_n529
+end
+
+def fun_l12_n375()
+ fun_l13_n471
+end
+
+def fun_l12_n376()
+ fun_l13_n654
+end
+
+def fun_l12_n377()
+ fun_l13_n155
+end
+
+def fun_l12_n378()
+ fun_l13_n79
+end
+
+def fun_l12_n379()
+ fun_l13_n545
+end
+
+def fun_l12_n380()
+ fun_l13_n315
+end
+
+def fun_l12_n381()
+ fun_l13_n655
+end
+
+def fun_l12_n382()
+ fun_l13_n450
+end
+
+def fun_l12_n383()
+ fun_l13_n353
+end
+
+def fun_l12_n384()
+ fun_l13_n700
+end
+
+def fun_l12_n385()
+ fun_l13_n524
+end
+
+def fun_l12_n386()
+ fun_l13_n158
+end
+
+def fun_l12_n387()
+ fun_l13_n880
+end
+
+def fun_l12_n388()
+ fun_l13_n366
+end
+
+def fun_l12_n389()
+ fun_l13_n848
+end
+
+def fun_l12_n390()
+ fun_l13_n45
+end
+
+def fun_l12_n391()
+ fun_l13_n318
+end
+
+def fun_l12_n392()
+ fun_l13_n331
+end
+
+def fun_l12_n393()
+ fun_l13_n528
+end
+
+def fun_l12_n394()
+ fun_l13_n789
+end
+
+def fun_l12_n395()
+ fun_l13_n71
+end
+
+def fun_l12_n396()
+ fun_l13_n317
+end
+
+def fun_l12_n397()
+ fun_l13_n671
+end
+
+def fun_l12_n398()
+ fun_l13_n788
+end
+
+def fun_l12_n399()
+ fun_l13_n276
+end
+
+def fun_l12_n400()
+ fun_l13_n34
+end
+
+def fun_l12_n401()
+ fun_l13_n321
+end
+
+def fun_l12_n402()
+ fun_l13_n737
+end
+
+def fun_l12_n403()
+ fun_l13_n900
+end
+
+def fun_l12_n404()
+ fun_l13_n491
+end
+
+def fun_l12_n405()
+ fun_l13_n826
+end
+
+def fun_l12_n406()
+ fun_l13_n124
+end
+
+def fun_l12_n407()
+ fun_l13_n658
+end
+
+def fun_l12_n408()
+ fun_l13_n159
+end
+
+def fun_l12_n409()
+ fun_l13_n481
+end
+
+def fun_l12_n410()
+ fun_l13_n900
+end
+
+def fun_l12_n411()
+ fun_l13_n481
+end
+
+def fun_l12_n412()
+ fun_l13_n252
+end
+
+def fun_l12_n413()
+ fun_l13_n732
+end
+
+def fun_l12_n414()
+ fun_l13_n94
+end
+
+def fun_l12_n415()
+ fun_l13_n699
+end
+
+def fun_l12_n416()
+ fun_l13_n638
+end
+
+def fun_l12_n417()
+ fun_l13_n108
+end
+
+def fun_l12_n418()
+ fun_l13_n731
+end
+
+def fun_l12_n419()
+ fun_l13_n965
+end
+
+def fun_l12_n420()
+ fun_l13_n704
+end
+
+def fun_l12_n421()
+ fun_l13_n710
+end
+
+def fun_l12_n422()
+ fun_l13_n888
+end
+
+def fun_l12_n423()
+ fun_l13_n331
+end
+
+def fun_l12_n424()
+ fun_l13_n586
+end
+
+def fun_l12_n425()
+ fun_l13_n302
+end
+
+def fun_l12_n426()
+ fun_l13_n514
+end
+
+def fun_l12_n427()
+ fun_l13_n533
+end
+
+def fun_l12_n428()
+ fun_l13_n759
+end
+
+def fun_l12_n429()
+ fun_l13_n652
+end
+
+def fun_l12_n430()
+ fun_l13_n600
+end
+
+def fun_l12_n431()
+ fun_l13_n808
+end
+
+def fun_l12_n432()
+ fun_l13_n345
+end
+
+def fun_l12_n433()
+ fun_l13_n257
+end
+
+def fun_l12_n434()
+ fun_l13_n91
+end
+
+def fun_l12_n435()
+ fun_l13_n627
+end
+
+def fun_l12_n436()
+ fun_l13_n293
+end
+
+def fun_l12_n437()
+ fun_l13_n618
+end
+
+def fun_l12_n438()
+ fun_l13_n462
+end
+
+def fun_l12_n439()
+ fun_l13_n0
+end
+
+def fun_l12_n440()
+ fun_l13_n32
+end
+
+def fun_l12_n441()
+ fun_l13_n4
+end
+
+def fun_l12_n442()
+ fun_l13_n257
+end
+
+def fun_l12_n443()
+ fun_l13_n548
+end
+
+def fun_l12_n444()
+ fun_l13_n300
+end
+
+def fun_l12_n445()
+ fun_l13_n253
+end
+
+def fun_l12_n446()
+ fun_l13_n603
+end
+
+def fun_l12_n447()
+ fun_l13_n295
+end
+
+def fun_l12_n448()
+ fun_l13_n921
+end
+
+def fun_l12_n449()
+ fun_l13_n119
+end
+
+def fun_l12_n450()
+ fun_l13_n51
+end
+
+def fun_l12_n451()
+ fun_l13_n544
+end
+
+def fun_l12_n452()
+ fun_l13_n735
+end
+
+def fun_l12_n453()
+ fun_l13_n20
+end
+
+def fun_l12_n454()
+ fun_l13_n285
+end
+
+def fun_l12_n455()
+ fun_l13_n370
+end
+
+def fun_l12_n456()
+ fun_l13_n245
+end
+
+def fun_l12_n457()
+ fun_l13_n909
+end
+
+def fun_l12_n458()
+ fun_l13_n536
+end
+
+def fun_l12_n459()
+ fun_l13_n665
+end
+
+def fun_l12_n460()
+ fun_l13_n95
+end
+
+def fun_l12_n461()
+ fun_l13_n499
+end
+
+def fun_l12_n462()
+ fun_l13_n105
+end
+
+def fun_l12_n463()
+ fun_l13_n300
+end
+
+def fun_l12_n464()
+ fun_l13_n49
+end
+
+def fun_l12_n465()
+ fun_l13_n567
+end
+
+def fun_l12_n466()
+ fun_l13_n197
+end
+
+def fun_l12_n467()
+ fun_l13_n918
+end
+
+def fun_l12_n468()
+ fun_l13_n735
+end
+
+def fun_l12_n469()
+ fun_l13_n415
+end
+
+def fun_l12_n470()
+ fun_l13_n580
+end
+
+def fun_l12_n471()
+ fun_l13_n119
+end
+
+def fun_l12_n472()
+ fun_l13_n699
+end
+
+def fun_l12_n473()
+ fun_l13_n128
+end
+
+def fun_l12_n474()
+ fun_l13_n251
+end
+
+def fun_l12_n475()
+ fun_l13_n986
+end
+
+def fun_l12_n476()
+ fun_l13_n55
+end
+
+def fun_l12_n477()
+ fun_l13_n394
+end
+
+def fun_l12_n478()
+ fun_l13_n564
+end
+
+def fun_l12_n479()
+ fun_l13_n927
+end
+
+def fun_l12_n480()
+ fun_l13_n614
+end
+
+def fun_l12_n481()
+ fun_l13_n425
+end
+
+def fun_l12_n482()
+ fun_l13_n55
+end
+
+def fun_l12_n483()
+ fun_l13_n212
+end
+
+def fun_l12_n484()
+ fun_l13_n712
+end
+
+def fun_l12_n485()
+ fun_l13_n393
+end
+
+def fun_l12_n486()
+ fun_l13_n891
+end
+
+def fun_l12_n487()
+ fun_l13_n54
+end
+
+def fun_l12_n488()
+ fun_l13_n508
+end
+
+def fun_l12_n489()
+ fun_l13_n266
+end
+
+def fun_l12_n490()
+ fun_l13_n637
+end
+
+def fun_l12_n491()
+ fun_l13_n683
+end
+
+def fun_l12_n492()
+ fun_l13_n499
+end
+
+def fun_l12_n493()
+ fun_l13_n770
+end
+
+def fun_l12_n494()
+ fun_l13_n254
+end
+
+def fun_l12_n495()
+ fun_l13_n801
+end
+
+def fun_l12_n496()
+ fun_l13_n75
+end
+
+def fun_l12_n497()
+ fun_l13_n652
+end
+
+def fun_l12_n498()
+ fun_l13_n638
+end
+
+def fun_l12_n499()
+ fun_l13_n515
+end
+
+def fun_l12_n500()
+ fun_l13_n580
+end
+
+def fun_l12_n501()
+ fun_l13_n198
+end
+
+def fun_l12_n502()
+ fun_l13_n723
+end
+
+def fun_l12_n503()
+ fun_l13_n855
+end
+
+def fun_l12_n504()
+ fun_l13_n969
+end
+
+def fun_l12_n505()
+ fun_l13_n16
+end
+
+def fun_l12_n506()
+ fun_l13_n477
+end
+
+def fun_l12_n507()
+ fun_l13_n873
+end
+
+def fun_l12_n508()
+ fun_l13_n456
+end
+
+def fun_l12_n509()
+ fun_l13_n711
+end
+
+def fun_l12_n510()
+ fun_l13_n979
+end
+
+def fun_l12_n511()
+ fun_l13_n830
+end
+
+def fun_l12_n512()
+ fun_l13_n336
+end
+
+def fun_l12_n513()
+ fun_l13_n579
+end
+
+def fun_l12_n514()
+ fun_l13_n128
+end
+
+def fun_l12_n515()
+ fun_l13_n977
+end
+
+def fun_l12_n516()
+ fun_l13_n870
+end
+
+def fun_l12_n517()
+ fun_l13_n133
+end
+
+def fun_l12_n518()
+ fun_l13_n315
+end
+
+def fun_l12_n519()
+ fun_l13_n324
+end
+
+def fun_l12_n520()
+ fun_l13_n721
+end
+
+def fun_l12_n521()
+ fun_l13_n392
+end
+
+def fun_l12_n522()
+ fun_l13_n945
+end
+
+def fun_l12_n523()
+ fun_l13_n497
+end
+
+def fun_l12_n524()
+ fun_l13_n999
+end
+
+def fun_l12_n525()
+ fun_l13_n152
+end
+
+def fun_l12_n526()
+ fun_l13_n535
+end
+
+def fun_l12_n527()
+ fun_l13_n938
+end
+
+def fun_l12_n528()
+ fun_l13_n813
+end
+
+def fun_l12_n529()
+ fun_l13_n497
+end
+
+def fun_l12_n530()
+ fun_l13_n700
+end
+
+def fun_l12_n531()
+ fun_l13_n493
+end
+
+def fun_l12_n532()
+ fun_l13_n549
+end
+
+def fun_l12_n533()
+ fun_l13_n406
+end
+
+def fun_l12_n534()
+ fun_l13_n918
+end
+
+def fun_l12_n535()
+ fun_l13_n891
+end
+
+def fun_l12_n536()
+ fun_l13_n924
+end
+
+def fun_l12_n537()
+ fun_l13_n753
+end
+
+def fun_l12_n538()
+ fun_l13_n582
+end
+
+def fun_l12_n539()
+ fun_l13_n769
+end
+
+def fun_l12_n540()
+ fun_l13_n297
+end
+
+def fun_l12_n541()
+ fun_l13_n261
+end
+
+def fun_l12_n542()
+ fun_l13_n581
+end
+
+def fun_l12_n543()
+ fun_l13_n667
+end
+
+def fun_l12_n544()
+ fun_l13_n955
+end
+
+def fun_l12_n545()
+ fun_l13_n296
+end
+
+def fun_l12_n546()
+ fun_l13_n762
+end
+
+def fun_l12_n547()
+ fun_l13_n755
+end
+
+def fun_l12_n548()
+ fun_l13_n369
+end
+
+def fun_l12_n549()
+ fun_l13_n685
+end
+
+def fun_l12_n550()
+ fun_l13_n675
+end
+
+def fun_l12_n551()
+ fun_l13_n430
+end
+
+def fun_l12_n552()
+ fun_l13_n530
+end
+
+def fun_l12_n553()
+ fun_l13_n17
+end
+
+def fun_l12_n554()
+ fun_l13_n406
+end
+
+def fun_l12_n555()
+ fun_l13_n687
+end
+
+def fun_l12_n556()
+ fun_l13_n972
+end
+
+def fun_l12_n557()
+ fun_l13_n561
+end
+
+def fun_l12_n558()
+ fun_l13_n202
+end
+
+def fun_l12_n559()
+ fun_l13_n788
+end
+
+def fun_l12_n560()
+ fun_l13_n705
+end
+
+def fun_l12_n561()
+ fun_l13_n434
+end
+
+def fun_l12_n562()
+ fun_l13_n965
+end
+
+def fun_l12_n563()
+ fun_l13_n525
+end
+
+def fun_l12_n564()
+ fun_l13_n938
+end
+
+def fun_l12_n565()
+ fun_l13_n346
+end
+
+def fun_l12_n566()
+ fun_l13_n95
+end
+
+def fun_l12_n567()
+ fun_l13_n458
+end
+
+def fun_l12_n568()
+ fun_l13_n769
+end
+
+def fun_l12_n569()
+ fun_l13_n858
+end
+
+def fun_l12_n570()
+ fun_l13_n230
+end
+
+def fun_l12_n571()
+ fun_l13_n977
+end
+
+def fun_l12_n572()
+ fun_l13_n304
+end
+
+def fun_l12_n573()
+ fun_l13_n271
+end
+
+def fun_l12_n574()
+ fun_l13_n106
+end
+
+def fun_l12_n575()
+ fun_l13_n733
+end
+
+def fun_l12_n576()
+ fun_l13_n197
+end
+
+def fun_l12_n577()
+ fun_l13_n624
+end
+
+def fun_l12_n578()
+ fun_l13_n844
+end
+
+def fun_l12_n579()
+ fun_l13_n268
+end
+
+def fun_l12_n580()
+ fun_l13_n394
+end
+
+def fun_l12_n581()
+ fun_l13_n573
+end
+
+def fun_l12_n582()
+ fun_l13_n950
+end
+
+def fun_l12_n583()
+ fun_l13_n163
+end
+
+def fun_l12_n584()
+ fun_l13_n458
+end
+
+def fun_l12_n585()
+ fun_l13_n569
+end
+
+def fun_l12_n586()
+ fun_l13_n808
+end
+
+def fun_l12_n587()
+ fun_l13_n830
+end
+
+def fun_l12_n588()
+ fun_l13_n328
+end
+
+def fun_l12_n589()
+ fun_l13_n235
+end
+
+def fun_l12_n590()
+ fun_l13_n695
+end
+
+def fun_l12_n591()
+ fun_l13_n543
+end
+
+def fun_l12_n592()
+ fun_l13_n635
+end
+
+def fun_l12_n593()
+ fun_l13_n783
+end
+
+def fun_l12_n594()
+ fun_l13_n349
+end
+
+def fun_l12_n595()
+ fun_l13_n108
+end
+
+def fun_l12_n596()
+ fun_l13_n856
+end
+
+def fun_l12_n597()
+ fun_l13_n743
+end
+
+def fun_l12_n598()
+ fun_l13_n640
+end
+
+def fun_l12_n599()
+ fun_l13_n768
+end
+
+def fun_l12_n600()
+ fun_l13_n798
+end
+
+def fun_l12_n601()
+ fun_l13_n941
+end
+
+def fun_l12_n602()
+ fun_l13_n389
+end
+
+def fun_l12_n603()
+ fun_l13_n624
+end
+
+def fun_l12_n604()
+ fun_l13_n209
+end
+
+def fun_l12_n605()
+ fun_l13_n636
+end
+
+def fun_l12_n606()
+ fun_l13_n741
+end
+
+def fun_l12_n607()
+ fun_l13_n461
+end
+
+def fun_l12_n608()
+ fun_l13_n570
+end
+
+def fun_l12_n609()
+ fun_l13_n358
+end
+
+def fun_l12_n610()
+ fun_l13_n408
+end
+
+def fun_l12_n611()
+ fun_l13_n693
+end
+
+def fun_l12_n612()
+ fun_l13_n760
+end
+
+def fun_l12_n613()
+ fun_l13_n402
+end
+
+def fun_l12_n614()
+ fun_l13_n20
+end
+
+def fun_l12_n615()
+ fun_l13_n15
+end
+
+def fun_l12_n616()
+ fun_l13_n931
+end
+
+def fun_l12_n617()
+ fun_l13_n58
+end
+
+def fun_l12_n618()
+ fun_l13_n627
+end
+
+def fun_l12_n619()
+ fun_l13_n149
+end
+
+def fun_l12_n620()
+ fun_l13_n200
+end
+
+def fun_l12_n621()
+ fun_l13_n832
+end
+
+def fun_l12_n622()
+ fun_l13_n605
+end
+
+def fun_l12_n623()
+ fun_l13_n868
+end
+
+def fun_l12_n624()
+ fun_l13_n480
+end
+
+def fun_l12_n625()
+ fun_l13_n991
+end
+
+def fun_l12_n626()
+ fun_l13_n493
+end
+
+def fun_l12_n627()
+ fun_l13_n2
+end
+
+def fun_l12_n628()
+ fun_l13_n851
+end
+
+def fun_l12_n629()
+ fun_l13_n864
+end
+
+def fun_l12_n630()
+ fun_l13_n293
+end
+
+def fun_l12_n631()
+ fun_l13_n909
+end
+
+def fun_l12_n632()
+ fun_l13_n955
+end
+
+def fun_l12_n633()
+ fun_l13_n276
+end
+
+def fun_l12_n634()
+ fun_l13_n345
+end
+
+def fun_l12_n635()
+ fun_l13_n606
+end
+
+def fun_l12_n636()
+ fun_l13_n685
+end
+
+def fun_l12_n637()
+ fun_l13_n989
+end
+
+def fun_l12_n638()
+ fun_l13_n920
+end
+
+def fun_l12_n639()
+ fun_l13_n702
+end
+
+def fun_l12_n640()
+ fun_l13_n6
+end
+
+def fun_l12_n641()
+ fun_l13_n216
+end
+
+def fun_l12_n642()
+ fun_l13_n501
+end
+
+def fun_l12_n643()
+ fun_l13_n500
+end
+
+def fun_l12_n644()
+ fun_l13_n845
+end
+
+def fun_l12_n645()
+ fun_l13_n758
+end
+
+def fun_l12_n646()
+ fun_l13_n999
+end
+
+def fun_l12_n647()
+ fun_l13_n30
+end
+
+def fun_l12_n648()
+ fun_l13_n670
+end
+
+def fun_l12_n649()
+ fun_l13_n551
+end
+
+def fun_l12_n650()
+ fun_l13_n668
+end
+
+def fun_l12_n651()
+ fun_l13_n51
+end
+
+def fun_l12_n652()
+ fun_l13_n35
+end
+
+def fun_l12_n653()
+ fun_l13_n523
+end
+
+def fun_l12_n654()
+ fun_l13_n118
+end
+
+def fun_l12_n655()
+ fun_l13_n49
+end
+
+def fun_l12_n656()
+ fun_l13_n457
+end
+
+def fun_l12_n657()
+ fun_l13_n669
+end
+
+def fun_l12_n658()
+ fun_l13_n93
+end
+
+def fun_l12_n659()
+ fun_l13_n809
+end
+
+def fun_l12_n660()
+ fun_l13_n759
+end
+
+def fun_l12_n661()
+ fun_l13_n224
+end
+
+def fun_l12_n662()
+ fun_l13_n876
+end
+
+def fun_l12_n663()
+ fun_l13_n784
+end
+
+def fun_l12_n664()
+ fun_l13_n39
+end
+
+def fun_l12_n665()
+ fun_l13_n930
+end
+
+def fun_l12_n666()
+ fun_l13_n250
+end
+
+def fun_l12_n667()
+ fun_l13_n247
+end
+
+def fun_l12_n668()
+ fun_l13_n907
+end
+
+def fun_l12_n669()
+ fun_l13_n333
+end
+
+def fun_l12_n670()
+ fun_l13_n97
+end
+
+def fun_l12_n671()
+ fun_l13_n475
+end
+
+def fun_l12_n672()
+ fun_l13_n480
+end
+
+def fun_l12_n673()
+ fun_l13_n943
+end
+
+def fun_l12_n674()
+ fun_l13_n263
+end
+
+def fun_l12_n675()
+ fun_l13_n879
+end
+
+def fun_l12_n676()
+ fun_l13_n537
+end
+
+def fun_l12_n677()
+ fun_l13_n475
+end
+
+def fun_l12_n678()
+ fun_l13_n626
+end
+
+def fun_l12_n679()
+ fun_l13_n397
+end
+
+def fun_l12_n680()
+ fun_l13_n194
+end
+
+def fun_l12_n681()
+ fun_l13_n468
+end
+
+def fun_l12_n682()
+ fun_l13_n566
+end
+
+def fun_l12_n683()
+ fun_l13_n573
+end
+
+def fun_l12_n684()
+ fun_l13_n354
+end
+
+def fun_l12_n685()
+ fun_l13_n251
+end
+
+def fun_l12_n686()
+ fun_l13_n626
+end
+
+def fun_l12_n687()
+ fun_l13_n954
+end
+
+def fun_l12_n688()
+ fun_l13_n732
+end
+
+def fun_l12_n689()
+ fun_l13_n543
+end
+
+def fun_l12_n690()
+ fun_l13_n878
+end
+
+def fun_l12_n691()
+ fun_l13_n520
+end
+
+def fun_l12_n692()
+ fun_l13_n262
+end
+
+def fun_l12_n693()
+ fun_l13_n179
+end
+
+def fun_l12_n694()
+ fun_l13_n851
+end
+
+def fun_l12_n695()
+ fun_l13_n821
+end
+
+def fun_l12_n696()
+ fun_l13_n951
+end
+
+def fun_l12_n697()
+ fun_l13_n707
+end
+
+def fun_l12_n698()
+ fun_l13_n388
+end
+
+def fun_l12_n699()
+ fun_l13_n660
+end
+
+def fun_l12_n700()
+ fun_l13_n658
+end
+
+def fun_l12_n701()
+ fun_l13_n463
+end
+
+def fun_l12_n702()
+ fun_l13_n547
+end
+
+def fun_l12_n703()
+ fun_l13_n319
+end
+
+def fun_l12_n704()
+ fun_l13_n405
+end
+
+def fun_l12_n705()
+ fun_l13_n645
+end
+
+def fun_l12_n706()
+ fun_l13_n147
+end
+
+def fun_l12_n707()
+ fun_l13_n582
+end
+
+def fun_l12_n708()
+ fun_l13_n618
+end
+
+def fun_l12_n709()
+ fun_l13_n156
+end
+
+def fun_l12_n710()
+ fun_l13_n606
+end
+
+def fun_l12_n711()
+ fun_l13_n525
+end
+
+def fun_l12_n712()
+ fun_l13_n513
+end
+
+def fun_l12_n713()
+ fun_l13_n827
+end
+
+def fun_l12_n714()
+ fun_l13_n438
+end
+
+def fun_l12_n715()
+ fun_l13_n72
+end
+
+def fun_l12_n716()
+ fun_l13_n364
+end
+
+def fun_l12_n717()
+ fun_l13_n380
+end
+
+def fun_l12_n718()
+ fun_l13_n898
+end
+
+def fun_l12_n719()
+ fun_l13_n998
+end
+
+def fun_l12_n720()
+ fun_l13_n679
+end
+
+def fun_l12_n721()
+ fun_l13_n738
+end
+
+def fun_l12_n722()
+ fun_l13_n887
+end
+
+def fun_l12_n723()
+ fun_l13_n73
+end
+
+def fun_l12_n724()
+ fun_l13_n309
+end
+
+def fun_l12_n725()
+ fun_l13_n791
+end
+
+def fun_l12_n726()
+ fun_l13_n939
+end
+
+def fun_l12_n727()
+ fun_l13_n27
+end
+
+def fun_l12_n728()
+ fun_l13_n269
+end
+
+def fun_l12_n729()
+ fun_l13_n418
+end
+
+def fun_l12_n730()
+ fun_l13_n659
+end
+
+def fun_l12_n731()
+ fun_l13_n257
+end
+
+def fun_l12_n732()
+ fun_l13_n519
+end
+
+def fun_l12_n733()
+ fun_l13_n305
+end
+
+def fun_l12_n734()
+ fun_l13_n994
+end
+
+def fun_l12_n735()
+ fun_l13_n159
+end
+
+def fun_l12_n736()
+ fun_l13_n704
+end
+
+def fun_l12_n737()
+ fun_l13_n826
+end
+
+def fun_l12_n738()
+ fun_l13_n204
+end
+
+def fun_l12_n739()
+ fun_l13_n886
+end
+
+def fun_l12_n740()
+ fun_l13_n403
+end
+
+def fun_l12_n741()
+ fun_l13_n567
+end
+
+def fun_l12_n742()
+ fun_l13_n425
+end
+
+def fun_l12_n743()
+ fun_l13_n174
+end
+
+def fun_l12_n744()
+ fun_l13_n530
+end
+
+def fun_l12_n745()
+ fun_l13_n143
+end
+
+def fun_l12_n746()
+ fun_l13_n950
+end
+
+def fun_l12_n747()
+ fun_l13_n982
+end
+
+def fun_l12_n748()
+ fun_l13_n340
+end
+
+def fun_l12_n749()
+ fun_l13_n964
+end
+
+def fun_l12_n750()
+ fun_l13_n747
+end
+
+def fun_l12_n751()
+ fun_l13_n886
+end
+
+def fun_l12_n752()
+ fun_l13_n148
+end
+
+def fun_l12_n753()
+ fun_l13_n675
+end
+
+def fun_l12_n754()
+ fun_l13_n69
+end
+
+def fun_l12_n755()
+ fun_l13_n992
+end
+
+def fun_l12_n756()
+ fun_l13_n126
+end
+
+def fun_l12_n757()
+ fun_l13_n919
+end
+
+def fun_l12_n758()
+ fun_l13_n286
+end
+
+def fun_l12_n759()
+ fun_l13_n472
+end
+
+def fun_l12_n760()
+ fun_l13_n35
+end
+
+def fun_l12_n761()
+ fun_l13_n130
+end
+
+def fun_l12_n762()
+ fun_l13_n394
+end
+
+def fun_l12_n763()
+ fun_l13_n372
+end
+
+def fun_l12_n764()
+ fun_l13_n630
+end
+
+def fun_l12_n765()
+ fun_l13_n439
+end
+
+def fun_l12_n766()
+ fun_l13_n973
+end
+
+def fun_l12_n767()
+ fun_l13_n859
+end
+
+def fun_l12_n768()
+ fun_l13_n903
+end
+
+def fun_l12_n769()
+ fun_l13_n441
+end
+
+def fun_l12_n770()
+ fun_l13_n530
+end
+
+def fun_l12_n771()
+ fun_l13_n584
+end
+
+def fun_l12_n772()
+ fun_l13_n676
+end
+
+def fun_l12_n773()
+ fun_l13_n595
+end
+
+def fun_l12_n774()
+ fun_l13_n523
+end
+
+def fun_l12_n775()
+ fun_l13_n619
+end
+
+def fun_l12_n776()
+ fun_l13_n727
+end
+
+def fun_l12_n777()
+ fun_l13_n793
+end
+
+def fun_l12_n778()
+ fun_l13_n55
+end
+
+def fun_l12_n779()
+ fun_l13_n675
+end
+
+def fun_l12_n780()
+ fun_l13_n779
+end
+
+def fun_l12_n781()
+ fun_l13_n413
+end
+
+def fun_l12_n782()
+ fun_l13_n148
+end
+
+def fun_l12_n783()
+ fun_l13_n149
+end
+
+def fun_l12_n784()
+ fun_l13_n242
+end
+
+def fun_l12_n785()
+ fun_l13_n619
+end
+
+def fun_l12_n786()
+ fun_l13_n171
+end
+
+def fun_l12_n787()
+ fun_l13_n646
+end
+
+def fun_l12_n788()
+ fun_l13_n470
+end
+
+def fun_l12_n789()
+ fun_l13_n812
+end
+
+def fun_l12_n790()
+ fun_l13_n891
+end
+
+def fun_l12_n791()
+ fun_l13_n958
+end
+
+def fun_l12_n792()
+ fun_l13_n451
+end
+
+def fun_l12_n793()
+ fun_l13_n651
+end
+
+def fun_l12_n794()
+ fun_l13_n904
+end
+
+def fun_l12_n795()
+ fun_l13_n400
+end
+
+def fun_l12_n796()
+ fun_l13_n286
+end
+
+def fun_l12_n797()
+ fun_l13_n17
+end
+
+def fun_l12_n798()
+ fun_l13_n280
+end
+
+def fun_l12_n799()
+ fun_l13_n19
+end
+
+def fun_l12_n800()
+ fun_l13_n909
+end
+
+def fun_l12_n801()
+ fun_l13_n434
+end
+
+def fun_l12_n802()
+ fun_l13_n920
+end
+
+def fun_l12_n803()
+ fun_l13_n196
+end
+
+def fun_l12_n804()
+ fun_l13_n374
+end
+
+def fun_l12_n805()
+ fun_l13_n393
+end
+
+def fun_l12_n806()
+ fun_l13_n623
+end
+
+def fun_l12_n807()
+ fun_l13_n846
+end
+
+def fun_l12_n808()
+ fun_l13_n354
+end
+
+def fun_l12_n809()
+ fun_l13_n16
+end
+
+def fun_l12_n810()
+ fun_l13_n371
+end
+
+def fun_l12_n811()
+ fun_l13_n139
+end
+
+def fun_l12_n812()
+ fun_l13_n156
+end
+
+def fun_l12_n813()
+ fun_l13_n799
+end
+
+def fun_l12_n814()
+ fun_l13_n817
+end
+
+def fun_l12_n815()
+ fun_l13_n475
+end
+
+def fun_l12_n816()
+ fun_l13_n799
+end
+
+def fun_l12_n817()
+ fun_l13_n838
+end
+
+def fun_l12_n818()
+ fun_l13_n297
+end
+
+def fun_l12_n819()
+ fun_l13_n834
+end
+
+def fun_l12_n820()
+ fun_l13_n788
+end
+
+def fun_l12_n821()
+ fun_l13_n649
+end
+
+def fun_l12_n822()
+ fun_l13_n908
+end
+
+def fun_l12_n823()
+ fun_l13_n264
+end
+
+def fun_l12_n824()
+ fun_l13_n66
+end
+
+def fun_l12_n825()
+ fun_l13_n367
+end
+
+def fun_l12_n826()
+ fun_l13_n569
+end
+
+def fun_l12_n827()
+ fun_l13_n735
+end
+
+def fun_l12_n828()
+ fun_l13_n704
+end
+
+def fun_l12_n829()
+ fun_l13_n440
+end
+
+def fun_l12_n830()
+ fun_l13_n126
+end
+
+def fun_l12_n831()
+ fun_l13_n590
+end
+
+def fun_l12_n832()
+ fun_l13_n485
+end
+
+def fun_l12_n833()
+ fun_l13_n869
+end
+
+def fun_l12_n834()
+ fun_l13_n691
+end
+
+def fun_l12_n835()
+ fun_l13_n912
+end
+
+def fun_l12_n836()
+ fun_l13_n618
+end
+
+def fun_l12_n837()
+ fun_l13_n64
+end
+
+def fun_l12_n838()
+ fun_l13_n927
+end
+
+def fun_l12_n839()
+ fun_l13_n500
+end
+
+def fun_l12_n840()
+ fun_l13_n280
+end
+
+def fun_l12_n841()
+ fun_l13_n272
+end
+
+def fun_l12_n842()
+ fun_l13_n66
+end
+
+def fun_l12_n843()
+ fun_l13_n169
+end
+
+def fun_l12_n844()
+ fun_l13_n568
+end
+
+def fun_l12_n845()
+ fun_l13_n678
+end
+
+def fun_l12_n846()
+ fun_l13_n269
+end
+
+def fun_l12_n847()
+ fun_l13_n936
+end
+
+def fun_l12_n848()
+ fun_l13_n34
+end
+
+def fun_l12_n849()
+ fun_l13_n475
+end
+
+def fun_l12_n850()
+ fun_l13_n558
+end
+
+def fun_l12_n851()
+ fun_l13_n779
+end
+
+def fun_l12_n852()
+ fun_l13_n421
+end
+
+def fun_l12_n853()
+ fun_l13_n339
+end
+
+def fun_l12_n854()
+ fun_l13_n266
+end
+
+def fun_l12_n855()
+ fun_l13_n346
+end
+
+def fun_l12_n856()
+ fun_l13_n247
+end
+
+def fun_l12_n857()
+ fun_l13_n608
+end
+
+def fun_l12_n858()
+ fun_l13_n878
+end
+
+def fun_l12_n859()
+ fun_l13_n89
+end
+
+def fun_l12_n860()
+ fun_l13_n380
+end
+
+def fun_l12_n861()
+ fun_l13_n859
+end
+
+def fun_l12_n862()
+ fun_l13_n955
+end
+
+def fun_l12_n863()
+ fun_l13_n392
+end
+
+def fun_l12_n864()
+ fun_l13_n43
+end
+
+def fun_l12_n865()
+ fun_l13_n506
+end
+
+def fun_l12_n866()
+ fun_l13_n45
+end
+
+def fun_l12_n867()
+ fun_l13_n898
+end
+
+def fun_l12_n868()
+ fun_l13_n1
+end
+
+def fun_l12_n869()
+ fun_l13_n159
+end
+
+def fun_l12_n870()
+ fun_l13_n265
+end
+
+def fun_l12_n871()
+ fun_l13_n540
+end
+
+def fun_l12_n872()
+ fun_l13_n563
+end
+
+def fun_l12_n873()
+ fun_l13_n845
+end
+
+def fun_l12_n874()
+ fun_l13_n753
+end
+
+def fun_l12_n875()
+ fun_l13_n815
+end
+
+def fun_l12_n876()
+ fun_l13_n483
+end
+
+def fun_l12_n877()
+ fun_l13_n868
+end
+
+def fun_l12_n878()
+ fun_l13_n961
+end
+
+def fun_l12_n879()
+ fun_l13_n688
+end
+
+def fun_l12_n880()
+ fun_l13_n357
+end
+
+def fun_l12_n881()
+ fun_l13_n543
+end
+
+def fun_l12_n882()
+ fun_l13_n965
+end
+
+def fun_l12_n883()
+ fun_l13_n977
+end
+
+def fun_l12_n884()
+ fun_l13_n185
+end
+
+def fun_l12_n885()
+ fun_l13_n734
+end
+
+def fun_l12_n886()
+ fun_l13_n343
+end
+
+def fun_l12_n887()
+ fun_l13_n43
+end
+
+def fun_l12_n888()
+ fun_l13_n248
+end
+
+def fun_l12_n889()
+ fun_l13_n943
+end
+
+def fun_l12_n890()
+ fun_l13_n504
+end
+
+def fun_l12_n891()
+ fun_l13_n330
+end
+
+def fun_l12_n892()
+ fun_l13_n898
+end
+
+def fun_l12_n893()
+ fun_l13_n495
+end
+
+def fun_l12_n894()
+ fun_l13_n180
+end
+
+def fun_l12_n895()
+ fun_l13_n134
+end
+
+def fun_l12_n896()
+ fun_l13_n883
+end
+
+def fun_l12_n897()
+ fun_l13_n881
+end
+
+def fun_l12_n898()
+ fun_l13_n376
+end
+
+def fun_l12_n899()
+ fun_l13_n840
+end
+
+def fun_l12_n900()
+ fun_l13_n784
+end
+
+def fun_l12_n901()
+ fun_l13_n694
+end
+
+def fun_l12_n902()
+ fun_l13_n431
+end
+
+def fun_l12_n903()
+ fun_l13_n16
+end
+
+def fun_l12_n904()
+ fun_l13_n192
+end
+
+def fun_l12_n905()
+ fun_l13_n932
+end
+
+def fun_l12_n906()
+ fun_l13_n160
+end
+
+def fun_l12_n907()
+ fun_l13_n426
+end
+
+def fun_l12_n908()
+ fun_l13_n283
+end
+
+def fun_l12_n909()
+ fun_l13_n569
+end
+
+def fun_l12_n910()
+ fun_l13_n206
+end
+
+def fun_l12_n911()
+ fun_l13_n741
+end
+
+def fun_l12_n912()
+ fun_l13_n173
+end
+
+def fun_l12_n913()
+ fun_l13_n272
+end
+
+def fun_l12_n914()
+ fun_l13_n172
+end
+
+def fun_l12_n915()
+ fun_l13_n63
+end
+
+def fun_l12_n916()
+ fun_l13_n749
+end
+
+def fun_l12_n917()
+ fun_l13_n450
+end
+
+def fun_l12_n918()
+ fun_l13_n53
+end
+
+def fun_l12_n919()
+ fun_l13_n331
+end
+
+def fun_l12_n920()
+ fun_l13_n186
+end
+
+def fun_l12_n921()
+ fun_l13_n454
+end
+
+def fun_l12_n922()
+ fun_l13_n763
+end
+
+def fun_l12_n923()
+ fun_l13_n124
+end
+
+def fun_l12_n924()
+ fun_l13_n134
+end
+
+def fun_l12_n925()
+ fun_l13_n38
+end
+
+def fun_l12_n926()
+ fun_l13_n645
+end
+
+def fun_l12_n927()
+ fun_l13_n683
+end
+
+def fun_l12_n928()
+ fun_l13_n859
+end
+
+def fun_l12_n929()
+ fun_l13_n406
+end
+
+def fun_l12_n930()
+ fun_l13_n534
+end
+
+def fun_l12_n931()
+ fun_l13_n72
+end
+
+def fun_l12_n932()
+ fun_l13_n288
+end
+
+def fun_l12_n933()
+ fun_l13_n3
+end
+
+def fun_l12_n934()
+ fun_l13_n852
+end
+
+def fun_l12_n935()
+ fun_l13_n290
+end
+
+def fun_l12_n936()
+ fun_l13_n237
+end
+
+def fun_l12_n937()
+ fun_l13_n674
+end
+
+def fun_l12_n938()
+ fun_l13_n278
+end
+
+def fun_l12_n939()
+ fun_l13_n579
+end
+
+def fun_l12_n940()
+ fun_l13_n736
+end
+
+def fun_l12_n941()
+ fun_l13_n684
+end
+
+def fun_l12_n942()
+ fun_l13_n744
+end
+
+def fun_l12_n943()
+ fun_l13_n726
+end
+
+def fun_l12_n944()
+ fun_l13_n767
+end
+
+def fun_l12_n945()
+ fun_l13_n466
+end
+
+def fun_l12_n946()
+ fun_l13_n679
+end
+
+def fun_l12_n947()
+ fun_l13_n774
+end
+
+def fun_l12_n948()
+ fun_l13_n104
+end
+
+def fun_l12_n949()
+ fun_l13_n744
+end
+
+def fun_l12_n950()
+ fun_l13_n339
+end
+
+def fun_l12_n951()
+ fun_l13_n848
+end
+
+def fun_l12_n952()
+ fun_l13_n194
+end
+
+def fun_l12_n953()
+ fun_l13_n733
+end
+
+def fun_l12_n954()
+ fun_l13_n430
+end
+
+def fun_l12_n955()
+ fun_l13_n95
+end
+
+def fun_l12_n956()
+ fun_l13_n68
+end
+
+def fun_l12_n957()
+ fun_l13_n951
+end
+
+def fun_l12_n958()
+ fun_l13_n671
+end
+
+def fun_l12_n959()
+ fun_l13_n464
+end
+
+def fun_l12_n960()
+ fun_l13_n700
+end
+
+def fun_l12_n961()
+ fun_l13_n662
+end
+
+def fun_l12_n962()
+ fun_l13_n765
+end
+
+def fun_l12_n963()
+ fun_l13_n662
+end
+
+def fun_l12_n964()
+ fun_l13_n750
+end
+
+def fun_l12_n965()
+ fun_l13_n935
+end
+
+def fun_l12_n966()
+ fun_l13_n585
+end
+
+def fun_l12_n967()
+ fun_l13_n430
+end
+
+def fun_l12_n968()
+ fun_l13_n219
+end
+
+def fun_l12_n969()
+ fun_l13_n895
+end
+
+def fun_l12_n970()
+ fun_l13_n47
+end
+
+def fun_l12_n971()
+ fun_l13_n755
+end
+
+def fun_l12_n972()
+ fun_l13_n56
+end
+
+def fun_l12_n973()
+ fun_l13_n341
+end
+
+def fun_l12_n974()
+ fun_l13_n192
+end
+
+def fun_l12_n975()
+ fun_l13_n434
+end
+
+def fun_l12_n976()
+ fun_l13_n215
+end
+
+def fun_l12_n977()
+ fun_l13_n747
+end
+
+def fun_l12_n978()
+ fun_l13_n463
+end
+
+def fun_l12_n979()
+ fun_l13_n408
+end
+
+def fun_l12_n980()
+ fun_l13_n993
+end
+
+def fun_l12_n981()
+ fun_l13_n583
+end
+
+def fun_l12_n982()
+ fun_l13_n752
+end
+
+def fun_l12_n983()
+ fun_l13_n583
+end
+
+def fun_l12_n984()
+ fun_l13_n601
+end
+
+def fun_l12_n985()
+ fun_l13_n490
+end
+
+def fun_l12_n986()
+ fun_l13_n61
+end
+
+def fun_l12_n987()
+ fun_l13_n89
+end
+
+def fun_l12_n988()
+ fun_l13_n533
+end
+
+def fun_l12_n989()
+ fun_l13_n628
+end
+
+def fun_l12_n990()
+ fun_l13_n301
+end
+
+def fun_l12_n991()
+ fun_l13_n553
+end
+
+def fun_l12_n992()
+ fun_l13_n105
+end
+
+def fun_l12_n993()
+ fun_l13_n595
+end
+
+def fun_l12_n994()
+ fun_l13_n384
+end
+
+def fun_l12_n995()
+ fun_l13_n704
+end
+
+def fun_l12_n996()
+ fun_l13_n657
+end
+
+def fun_l12_n997()
+ fun_l13_n468
+end
+
+def fun_l12_n998()
+ fun_l13_n582
+end
+
+def fun_l12_n999()
+ fun_l13_n335
+end
+
+def fun_l13_n0()
+ fun_l14_n123
+end
+
+def fun_l13_n1()
+ fun_l14_n796
+end
+
+def fun_l13_n2()
+ fun_l14_n217
+end
+
+def fun_l13_n3()
+ fun_l14_n810
+end
+
+def fun_l13_n4()
+ fun_l14_n297
+end
+
+def fun_l13_n5()
+ fun_l14_n682
+end
+
+def fun_l13_n6()
+ fun_l14_n397
+end
+
+def fun_l13_n7()
+ fun_l14_n372
+end
+
+def fun_l13_n8()
+ fun_l14_n688
+end
+
+def fun_l13_n9()
+ fun_l14_n250
+end
+
+def fun_l13_n10()
+ fun_l14_n248
+end
+
+def fun_l13_n11()
+ fun_l14_n335
+end
+
+def fun_l13_n12()
+ fun_l14_n404
+end
+
+def fun_l13_n13()
+ fun_l14_n223
+end
+
+def fun_l13_n14()
+ fun_l14_n894
+end
+
+def fun_l13_n15()
+ fun_l14_n537
+end
+
+def fun_l13_n16()
+ fun_l14_n641
+end
+
+def fun_l13_n17()
+ fun_l14_n509
+end
+
+def fun_l13_n18()
+ fun_l14_n624
+end
+
+def fun_l13_n19()
+ fun_l14_n224
+end
+
+def fun_l13_n20()
+ fun_l14_n283
+end
+
+def fun_l13_n21()
+ fun_l14_n624
+end
+
+def fun_l13_n22()
+ fun_l14_n972
+end
+
+def fun_l13_n23()
+ fun_l14_n698
+end
+
+def fun_l13_n24()
+ fun_l14_n313
+end
+
+def fun_l13_n25()
+ fun_l14_n344
+end
+
+def fun_l13_n26()
+ fun_l14_n823
+end
+
+def fun_l13_n27()
+ fun_l14_n699
+end
+
+def fun_l13_n28()
+ fun_l14_n943
+end
+
+def fun_l13_n29()
+ fun_l14_n69
+end
+
+def fun_l13_n30()
+ fun_l14_n839
+end
+
+def fun_l13_n31()
+ fun_l14_n834
+end
+
+def fun_l13_n32()
+ fun_l14_n143
+end
+
+def fun_l13_n33()
+ fun_l14_n500
+end
+
+def fun_l13_n34()
+ fun_l14_n266
+end
+
+def fun_l13_n35()
+ fun_l14_n576
+end
+
+def fun_l13_n36()
+ fun_l14_n247
+end
+
+def fun_l13_n37()
+ fun_l14_n847
+end
+
+def fun_l13_n38()
+ fun_l14_n474
+end
+
+def fun_l13_n39()
+ fun_l14_n293
+end
+
+def fun_l13_n40()
+ fun_l14_n475
+end
+
+def fun_l13_n41()
+ fun_l14_n641
+end
+
+def fun_l13_n42()
+ fun_l14_n583
+end
+
+def fun_l13_n43()
+ fun_l14_n857
+end
+
+def fun_l13_n44()
+ fun_l14_n97
+end
+
+def fun_l13_n45()
+ fun_l14_n196
+end
+
+def fun_l13_n46()
+ fun_l14_n201
+end
+
+def fun_l13_n47()
+ fun_l14_n877
+end
+
+def fun_l13_n48()
+ fun_l14_n464
+end
+
+def fun_l13_n49()
+ fun_l14_n706
+end
+
+def fun_l13_n50()
+ fun_l14_n274
+end
+
+def fun_l13_n51()
+ fun_l14_n844
+end
+
+def fun_l13_n52()
+ fun_l14_n883
+end
+
+def fun_l13_n53()
+ fun_l14_n77
+end
+
+def fun_l13_n54()
+ fun_l14_n981
+end
+
+def fun_l13_n55()
+ fun_l14_n189
+end
+
+def fun_l13_n56()
+ fun_l14_n597
+end
+
+def fun_l13_n57()
+ fun_l14_n333
+end
+
+def fun_l13_n58()
+ fun_l14_n566
+end
+
+def fun_l13_n59()
+ fun_l14_n231
+end
+
+def fun_l13_n60()
+ fun_l14_n207
+end
+
+def fun_l13_n61()
+ fun_l14_n555
+end
+
+def fun_l13_n62()
+ fun_l14_n46
+end
+
+def fun_l13_n63()
+ fun_l14_n879
+end
+
+def fun_l13_n64()
+ fun_l14_n672
+end
+
+def fun_l13_n65()
+ fun_l14_n266
+end
+
+def fun_l13_n66()
+ fun_l14_n898
+end
+
+def fun_l13_n67()
+ fun_l14_n966
+end
+
+def fun_l13_n68()
+ fun_l14_n63
+end
+
+def fun_l13_n69()
+ fun_l14_n531
+end
+
+def fun_l13_n70()
+ fun_l14_n80
+end
+
+def fun_l13_n71()
+ fun_l14_n206
+end
+
+def fun_l13_n72()
+ fun_l14_n594
+end
+
+def fun_l13_n73()
+ fun_l14_n852
+end
+
+def fun_l13_n74()
+ fun_l14_n443
+end
+
+def fun_l13_n75()
+ fun_l14_n987
+end
+
+def fun_l13_n76()
+ fun_l14_n119
+end
+
+def fun_l13_n77()
+ fun_l14_n113
+end
+
+def fun_l13_n78()
+ fun_l14_n904
+end
+
+def fun_l13_n79()
+ fun_l14_n88
+end
+
+def fun_l13_n80()
+ fun_l14_n209
+end
+
+def fun_l13_n81()
+ fun_l14_n190
+end
+
+def fun_l13_n82()
+ fun_l14_n594
+end
+
+def fun_l13_n83()
+ fun_l14_n87
+end
+
+def fun_l13_n84()
+ fun_l14_n206
+end
+
+def fun_l13_n85()
+ fun_l14_n974
+end
+
+def fun_l13_n86()
+ fun_l14_n646
+end
+
+def fun_l13_n87()
+ fun_l14_n450
+end
+
+def fun_l13_n88()
+ fun_l14_n981
+end
+
+def fun_l13_n89()
+ fun_l14_n277
+end
+
+def fun_l13_n90()
+ fun_l14_n309
+end
+
+def fun_l13_n91()
+ fun_l14_n648
+end
+
+def fun_l13_n92()
+ fun_l14_n353
+end
+
+def fun_l13_n93()
+ fun_l14_n43
+end
+
+def fun_l13_n94()
+ fun_l14_n217
+end
+
+def fun_l13_n95()
+ fun_l14_n945
+end
+
+def fun_l13_n96()
+ fun_l14_n172
+end
+
+def fun_l13_n97()
+ fun_l14_n604
+end
+
+def fun_l13_n98()
+ fun_l14_n252
+end
+
+def fun_l13_n99()
+ fun_l14_n478
+end
+
+def fun_l13_n100()
+ fun_l14_n564
+end
+
+def fun_l13_n101()
+ fun_l14_n937
+end
+
+def fun_l13_n102()
+ fun_l14_n940
+end
+
+def fun_l13_n103()
+ fun_l14_n110
+end
+
+def fun_l13_n104()
+ fun_l14_n175
+end
+
+def fun_l13_n105()
+ fun_l14_n708
+end
+
+def fun_l13_n106()
+ fun_l14_n161
+end
+
+def fun_l13_n107()
+ fun_l14_n129
+end
+
+def fun_l13_n108()
+ fun_l14_n186
+end
+
+def fun_l13_n109()
+ fun_l14_n449
+end
+
+def fun_l13_n110()
+ fun_l14_n358
+end
+
+def fun_l13_n111()
+ fun_l14_n278
+end
+
+def fun_l13_n112()
+ fun_l14_n598
+end
+
+def fun_l13_n113()
+ fun_l14_n896
+end
+
+def fun_l13_n114()
+ fun_l14_n964
+end
+
+def fun_l13_n115()
+ fun_l14_n986
+end
+
+def fun_l13_n116()
+ fun_l14_n268
+end
+
+def fun_l13_n117()
+ fun_l14_n521
+end
+
+def fun_l13_n118()
+ fun_l14_n968
+end
+
+def fun_l13_n119()
+ fun_l14_n380
+end
+
+def fun_l13_n120()
+ fun_l14_n549
+end
+
+def fun_l13_n121()
+ fun_l14_n300
+end
+
+def fun_l13_n122()
+ fun_l14_n246
+end
+
+def fun_l13_n123()
+ fun_l14_n329
+end
+
+def fun_l13_n124()
+ fun_l14_n134
+end
+
+def fun_l13_n125()
+ fun_l14_n740
+end
+
+def fun_l13_n126()
+ fun_l14_n965
+end
+
+def fun_l13_n127()
+ fun_l14_n284
+end
+
+def fun_l13_n128()
+ fun_l14_n409
+end
+
+def fun_l13_n129()
+ fun_l14_n597
+end
+
+def fun_l13_n130()
+ fun_l14_n285
+end
+
+def fun_l13_n131()
+ fun_l14_n270
+end
+
+def fun_l13_n132()
+ fun_l14_n66
+end
+
+def fun_l13_n133()
+ fun_l14_n588
+end
+
+def fun_l13_n134()
+ fun_l14_n534
+end
+
+def fun_l13_n135()
+ fun_l14_n673
+end
+
+def fun_l13_n136()
+ fun_l14_n867
+end
+
+def fun_l13_n137()
+ fun_l14_n157
+end
+
+def fun_l13_n138()
+ fun_l14_n755
+end
+
+def fun_l13_n139()
+ fun_l14_n68
+end
+
+def fun_l13_n140()
+ fun_l14_n859
+end
+
+def fun_l13_n141()
+ fun_l14_n804
+end
+
+def fun_l13_n142()
+ fun_l14_n300
+end
+
+def fun_l13_n143()
+ fun_l14_n157
+end
+
+def fun_l13_n144()
+ fun_l14_n376
+end
+
+def fun_l13_n145()
+ fun_l14_n62
+end
+
+def fun_l13_n146()
+ fun_l14_n755
+end
+
+def fun_l13_n147()
+ fun_l14_n547
+end
+
+def fun_l13_n148()
+ fun_l14_n223
+end
+
+def fun_l13_n149()
+ fun_l14_n277
+end
+
+def fun_l13_n150()
+ fun_l14_n57
+end
+
+def fun_l13_n151()
+ fun_l14_n552
+end
+
+def fun_l13_n152()
+ fun_l14_n390
+end
+
+def fun_l13_n153()
+ fun_l14_n691
+end
+
+def fun_l13_n154()
+ fun_l14_n871
+end
+
+def fun_l13_n155()
+ fun_l14_n14
+end
+
+def fun_l13_n156()
+ fun_l14_n68
+end
+
+def fun_l13_n157()
+ fun_l14_n589
+end
+
+def fun_l13_n158()
+ fun_l14_n504
+end
+
+def fun_l13_n159()
+ fun_l14_n966
+end
+
+def fun_l13_n160()
+ fun_l14_n62
+end
+
+def fun_l13_n161()
+ fun_l14_n880
+end
+
+def fun_l13_n162()
+ fun_l14_n897
+end
+
+def fun_l13_n163()
+ fun_l14_n630
+end
+
+def fun_l13_n164()
+ fun_l14_n129
+end
+
+def fun_l13_n165()
+ fun_l14_n461
+end
+
+def fun_l13_n166()
+ fun_l14_n193
+end
+
+def fun_l13_n167()
+ fun_l14_n588
+end
+
+def fun_l13_n168()
+ fun_l14_n49
+end
+
+def fun_l13_n169()
+ fun_l14_n872
+end
+
+def fun_l13_n170()
+ fun_l14_n199
+end
+
+def fun_l13_n171()
+ fun_l14_n887
+end
+
+def fun_l13_n172()
+ fun_l14_n932
+end
+
+def fun_l13_n173()
+ fun_l14_n616
+end
+
+def fun_l13_n174()
+ fun_l14_n62
+end
+
+def fun_l13_n175()
+ fun_l14_n162
+end
+
+def fun_l13_n176()
+ fun_l14_n979
+end
+
+def fun_l13_n177()
+ fun_l14_n813
+end
+
+def fun_l13_n178()
+ fun_l14_n529
+end
+
+def fun_l13_n179()
+ fun_l14_n202
+end
+
+def fun_l13_n180()
+ fun_l14_n916
+end
+
+def fun_l13_n181()
+ fun_l14_n719
+end
+
+def fun_l13_n182()
+ fun_l14_n256
+end
+
+def fun_l13_n183()
+ fun_l14_n137
+end
+
+def fun_l13_n184()
+ fun_l14_n562
+end
+
+def fun_l13_n185()
+ fun_l14_n614
+end
+
+def fun_l13_n186()
+ fun_l14_n918
+end
+
+def fun_l13_n187()
+ fun_l14_n435
+end
+
+def fun_l13_n188()
+ fun_l14_n429
+end
+
+def fun_l13_n189()
+ fun_l14_n561
+end
+
+def fun_l13_n190()
+ fun_l14_n422
+end
+
+def fun_l13_n191()
+ fun_l14_n396
+end
+
+def fun_l13_n192()
+ fun_l14_n971
+end
+
+def fun_l13_n193()
+ fun_l14_n419
+end
+
+def fun_l13_n194()
+ fun_l14_n319
+end
+
+def fun_l13_n195()
+ fun_l14_n8
+end
+
+def fun_l13_n196()
+ fun_l14_n378
+end
+
+def fun_l13_n197()
+ fun_l14_n709
+end
+
+def fun_l13_n198()
+ fun_l14_n308
+end
+
+def fun_l13_n199()
+ fun_l14_n916
+end
+
+def fun_l13_n200()
+ fun_l14_n822
+end
+
+def fun_l13_n201()
+ fun_l14_n736
+end
+
+def fun_l13_n202()
+ fun_l14_n259
+end
+
+def fun_l13_n203()
+ fun_l14_n965
+end
+
+def fun_l13_n204()
+ fun_l14_n52
+end
+
+def fun_l13_n205()
+ fun_l14_n237
+end
+
+def fun_l13_n206()
+ fun_l14_n850
+end
+
+def fun_l13_n207()
+ fun_l14_n961
+end
+
+def fun_l13_n208()
+ fun_l14_n289
+end
+
+def fun_l13_n209()
+ fun_l14_n465
+end
+
+def fun_l13_n210()
+ fun_l14_n635
+end
+
+def fun_l13_n211()
+ fun_l14_n222
+end
+
+def fun_l13_n212()
+ fun_l14_n796
+end
+
+def fun_l13_n213()
+ fun_l14_n20
+end
+
+def fun_l13_n214()
+ fun_l14_n576
+end
+
+def fun_l13_n215()
+ fun_l14_n947
+end
+
+def fun_l13_n216()
+ fun_l14_n482
+end
+
+def fun_l13_n217()
+ fun_l14_n236
+end
+
+def fun_l13_n218()
+ fun_l14_n405
+end
+
+def fun_l13_n219()
+ fun_l14_n874
+end
+
+def fun_l13_n220()
+ fun_l14_n827
+end
+
+def fun_l13_n221()
+ fun_l14_n975
+end
+
+def fun_l13_n222()
+ fun_l14_n741
+end
+
+def fun_l13_n223()
+ fun_l14_n60
+end
+
+def fun_l13_n224()
+ fun_l14_n587
+end
+
+def fun_l13_n225()
+ fun_l14_n557
+end
+
+def fun_l13_n226()
+ fun_l14_n621
+end
+
+def fun_l13_n227()
+ fun_l14_n426
+end
+
+def fun_l13_n228()
+ fun_l14_n848
+end
+
+def fun_l13_n229()
+ fun_l14_n164
+end
+
+def fun_l13_n230()
+ fun_l14_n427
+end
+
+def fun_l13_n231()
+ fun_l14_n815
+end
+
+def fun_l13_n232()
+ fun_l14_n465
+end
+
+def fun_l13_n233()
+ fun_l14_n474
+end
+
+def fun_l13_n234()
+ fun_l14_n577
+end
+
+def fun_l13_n235()
+ fun_l14_n427
+end
+
+def fun_l13_n236()
+ fun_l14_n580
+end
+
+def fun_l13_n237()
+ fun_l14_n275
+end
+
+def fun_l13_n238()
+ fun_l14_n559
+end
+
+def fun_l13_n239()
+ fun_l14_n834
+end
+
+def fun_l13_n240()
+ fun_l14_n656
+end
+
+def fun_l13_n241()
+ fun_l14_n411
+end
+
+def fun_l13_n242()
+ fun_l14_n54
+end
+
+def fun_l13_n243()
+ fun_l14_n223
+end
+
+def fun_l13_n244()
+ fun_l14_n623
+end
+
+def fun_l13_n245()
+ fun_l14_n251
+end
+
+def fun_l13_n246()
+ fun_l14_n948
+end
+
+def fun_l13_n247()
+ fun_l14_n857
+end
+
+def fun_l13_n248()
+ fun_l14_n528
+end
+
+def fun_l13_n249()
+ fun_l14_n396
+end
+
+def fun_l13_n250()
+ fun_l14_n832
+end
+
+def fun_l13_n251()
+ fun_l14_n191
+end
+
+def fun_l13_n252()
+ fun_l14_n729
+end
+
+def fun_l13_n253()
+ fun_l14_n22
+end
+
+def fun_l13_n254()
+ fun_l14_n10
+end
+
+def fun_l13_n255()
+ fun_l14_n871
+end
+
+def fun_l13_n256()
+ fun_l14_n664
+end
+
+def fun_l13_n257()
+ fun_l14_n877
+end
+
+def fun_l13_n258()
+ fun_l14_n477
+end
+
+def fun_l13_n259()
+ fun_l14_n861
+end
+
+def fun_l13_n260()
+ fun_l14_n160
+end
+
+def fun_l13_n261()
+ fun_l14_n127
+end
+
+def fun_l13_n262()
+ fun_l14_n744
+end
+
+def fun_l13_n263()
+ fun_l14_n305
+end
+
+def fun_l13_n264()
+ fun_l14_n473
+end
+
+def fun_l13_n265()
+ fun_l14_n445
+end
+
+def fun_l13_n266()
+ fun_l14_n31
+end
+
+def fun_l13_n267()
+ fun_l14_n58
+end
+
+def fun_l13_n268()
+ fun_l14_n739
+end
+
+def fun_l13_n269()
+ fun_l14_n840
+end
+
+def fun_l13_n270()
+ fun_l14_n275
+end
+
+def fun_l13_n271()
+ fun_l14_n264
+end
+
+def fun_l13_n272()
+ fun_l14_n503
+end
+
+def fun_l13_n273()
+ fun_l14_n559
+end
+
+def fun_l13_n274()
+ fun_l14_n693
+end
+
+def fun_l13_n275()
+ fun_l14_n723
+end
+
+def fun_l13_n276()
+ fun_l14_n716
+end
+
+def fun_l13_n277()
+ fun_l14_n181
+end
+
+def fun_l13_n278()
+ fun_l14_n904
+end
+
+def fun_l13_n279()
+ fun_l14_n75
+end
+
+def fun_l13_n280()
+ fun_l14_n992
+end
+
+def fun_l13_n281()
+ fun_l14_n904
+end
+
+def fun_l13_n282()
+ fun_l14_n856
+end
+
+def fun_l13_n283()
+ fun_l14_n218
+end
+
+def fun_l13_n284()
+ fun_l14_n896
+end
+
+def fun_l13_n285()
+ fun_l14_n456
+end
+
+def fun_l13_n286()
+ fun_l14_n591
+end
+
+def fun_l13_n287()
+ fun_l14_n960
+end
+
+def fun_l13_n288()
+ fun_l14_n949
+end
+
+def fun_l13_n289()
+ fun_l14_n92
+end
+
+def fun_l13_n290()
+ fun_l14_n945
+end
+
+def fun_l13_n291()
+ fun_l14_n684
+end
+
+def fun_l13_n292()
+ fun_l14_n8
+end
+
+def fun_l13_n293()
+ fun_l14_n147
+end
+
+def fun_l13_n294()
+ fun_l14_n129
+end
+
+def fun_l13_n295()
+ fun_l14_n308
+end
+
+def fun_l13_n296()
+ fun_l14_n112
+end
+
+def fun_l13_n297()
+ fun_l14_n657
+end
+
+def fun_l13_n298()
+ fun_l14_n910
+end
+
+def fun_l13_n299()
+ fun_l14_n804
+end
+
+def fun_l13_n300()
+ fun_l14_n580
+end
+
+def fun_l13_n301()
+ fun_l14_n373
+end
+
+def fun_l13_n302()
+ fun_l14_n749
+end
+
+def fun_l13_n303()
+ fun_l14_n353
+end
+
+def fun_l13_n304()
+ fun_l14_n58
+end
+
+def fun_l13_n305()
+ fun_l14_n207
+end
+
+def fun_l13_n306()
+ fun_l14_n977
+end
+
+def fun_l13_n307()
+ fun_l14_n95
+end
+
+def fun_l13_n308()
+ fun_l14_n836
+end
+
+def fun_l13_n309()
+ fun_l14_n244
+end
+
+def fun_l13_n310()
+ fun_l14_n676
+end
+
+def fun_l13_n311()
+ fun_l14_n617
+end
+
+def fun_l13_n312()
+ fun_l14_n633
+end
+
+def fun_l13_n313()
+ fun_l14_n550
+end
+
+def fun_l13_n314()
+ fun_l14_n564
+end
+
+def fun_l13_n315()
+ fun_l14_n261
+end
+
+def fun_l13_n316()
+ fun_l14_n968
+end
+
+def fun_l13_n317()
+ fun_l14_n16
+end
+
+def fun_l13_n318()
+ fun_l14_n894
+end
+
+def fun_l13_n319()
+ fun_l14_n717
+end
+
+def fun_l13_n320()
+ fun_l14_n802
+end
+
+def fun_l13_n321()
+ fun_l14_n628
+end
+
+def fun_l13_n322()
+ fun_l14_n306
+end
+
+def fun_l13_n323()
+ fun_l14_n121
+end
+
+def fun_l13_n324()
+ fun_l14_n468
+end
+
+def fun_l13_n325()
+ fun_l14_n863
+end
+
+def fun_l13_n326()
+ fun_l14_n970
+end
+
+def fun_l13_n327()
+ fun_l14_n637
+end
+
+def fun_l13_n328()
+ fun_l14_n12
+end
+
+def fun_l13_n329()
+ fun_l14_n244
+end
+
+def fun_l13_n330()
+ fun_l14_n847
+end
+
+def fun_l13_n331()
+ fun_l14_n122
+end
+
+def fun_l13_n332()
+ fun_l14_n546
+end
+
+def fun_l13_n333()
+ fun_l14_n640
+end
+
+def fun_l13_n334()
+ fun_l14_n224
+end
+
+def fun_l13_n335()
+ fun_l14_n73
+end
+
+def fun_l13_n336()
+ fun_l14_n25
+end
+
+def fun_l13_n337()
+ fun_l14_n226
+end
+
+def fun_l13_n338()
+ fun_l14_n63
+end
+
+def fun_l13_n339()
+ fun_l14_n591
+end
+
+def fun_l13_n340()
+ fun_l14_n32
+end
+
+def fun_l13_n341()
+ fun_l14_n646
+end
+
+def fun_l13_n342()
+ fun_l14_n954
+end
+
+def fun_l13_n343()
+ fun_l14_n915
+end
+
+def fun_l13_n344()
+ fun_l14_n359
+end
+
+def fun_l13_n345()
+ fun_l14_n967
+end
+
+def fun_l13_n346()
+ fun_l14_n980
+end
+
+def fun_l13_n347()
+ fun_l14_n324
+end
+
+def fun_l13_n348()
+ fun_l14_n263
+end
+
+def fun_l13_n349()
+ fun_l14_n644
+end
+
+def fun_l13_n350()
+ fun_l14_n575
+end
+
+def fun_l13_n351()
+ fun_l14_n820
+end
+
+def fun_l13_n352()
+ fun_l14_n767
+end
+
+def fun_l13_n353()
+ fun_l14_n175
+end
+
+def fun_l13_n354()
+ fun_l14_n990
+end
+
+def fun_l13_n355()
+ fun_l14_n631
+end
+
+def fun_l13_n356()
+ fun_l14_n503
+end
+
+def fun_l13_n357()
+ fun_l14_n785
+end
+
+def fun_l13_n358()
+ fun_l14_n239
+end
+
+def fun_l13_n359()
+ fun_l14_n678
+end
+
+def fun_l13_n360()
+ fun_l14_n11
+end
+
+def fun_l13_n361()
+ fun_l14_n829
+end
+
+def fun_l13_n362()
+ fun_l14_n205
+end
+
+def fun_l13_n363()
+ fun_l14_n146
+end
+
+def fun_l13_n364()
+ fun_l14_n972
+end
+
+def fun_l13_n365()
+ fun_l14_n68
+end
+
+def fun_l13_n366()
+ fun_l14_n830
+end
+
+def fun_l13_n367()
+ fun_l14_n60
+end
+
+def fun_l13_n368()
+ fun_l14_n521
+end
+
+def fun_l13_n369()
+ fun_l14_n287
+end
+
+def fun_l13_n370()
+ fun_l14_n932
+end
+
+def fun_l13_n371()
+ fun_l14_n268
+end
+
+def fun_l13_n372()
+ fun_l14_n285
+end
+
+def fun_l13_n373()
+ fun_l14_n101
+end
+
+def fun_l13_n374()
+ fun_l14_n811
+end
+
+def fun_l13_n375()
+ fun_l14_n966
+end
+
+def fun_l13_n376()
+ fun_l14_n201
+end
+
+def fun_l13_n377()
+ fun_l14_n176
+end
+
+def fun_l13_n378()
+ fun_l14_n850
+end
+
+def fun_l13_n379()
+ fun_l14_n436
+end
+
+def fun_l13_n380()
+ fun_l14_n83
+end
+
+def fun_l13_n381()
+ fun_l14_n393
+end
+
+def fun_l13_n382()
+ fun_l14_n812
+end
+
+def fun_l13_n383()
+ fun_l14_n276
+end
+
+def fun_l13_n384()
+ fun_l14_n997
+end
+
+def fun_l13_n385()
+ fun_l14_n942
+end
+
+def fun_l13_n386()
+ fun_l14_n851
+end
+
+def fun_l13_n387()
+ fun_l14_n747
+end
+
+def fun_l13_n388()
+ fun_l14_n573
+end
+
+def fun_l13_n389()
+ fun_l14_n949
+end
+
+def fun_l13_n390()
+ fun_l14_n857
+end
+
+def fun_l13_n391()
+ fun_l14_n495
+end
+
+def fun_l13_n392()
+ fun_l14_n399
+end
+
+def fun_l13_n393()
+ fun_l14_n603
+end
+
+def fun_l13_n394()
+ fun_l14_n208
+end
+
+def fun_l13_n395()
+ fun_l14_n736
+end
+
+def fun_l13_n396()
+ fun_l14_n339
+end
+
+def fun_l13_n397()
+ fun_l14_n759
+end
+
+def fun_l13_n398()
+ fun_l14_n912
+end
+
+def fun_l13_n399()
+ fun_l14_n899
+end
+
+def fun_l13_n400()
+ fun_l14_n954
+end
+
+def fun_l13_n401()
+ fun_l14_n143
+end
+
+def fun_l13_n402()
+ fun_l14_n866
+end
+
+def fun_l13_n403()
+ fun_l14_n657
+end
+
+def fun_l13_n404()
+ fun_l14_n854
+end
+
+def fun_l13_n405()
+ fun_l14_n365
+end
+
+def fun_l13_n406()
+ fun_l14_n79
+end
+
+def fun_l13_n407()
+ fun_l14_n724
+end
+
+def fun_l13_n408()
+ fun_l14_n544
+end
+
+def fun_l13_n409()
+ fun_l14_n562
+end
+
+def fun_l13_n410()
+ fun_l14_n946
+end
+
+def fun_l13_n411()
+ fun_l14_n761
+end
+
+def fun_l13_n412()
+ fun_l14_n251
+end
+
+def fun_l13_n413()
+ fun_l14_n689
+end
+
+def fun_l13_n414()
+ fun_l14_n94
+end
+
+def fun_l13_n415()
+ fun_l14_n466
+end
+
+def fun_l13_n416()
+ fun_l14_n186
+end
+
+def fun_l13_n417()
+ fun_l14_n367
+end
+
+def fun_l13_n418()
+ fun_l14_n477
+end
+
+def fun_l13_n419()
+ fun_l14_n356
+end
+
+def fun_l13_n420()
+ fun_l14_n279
+end
+
+def fun_l13_n421()
+ fun_l14_n76
+end
+
+def fun_l13_n422()
+ fun_l14_n677
+end
+
+def fun_l13_n423()
+ fun_l14_n334
+end
+
+def fun_l13_n424()
+ fun_l14_n777
+end
+
+def fun_l13_n425()
+ fun_l14_n632
+end
+
+def fun_l13_n426()
+ fun_l14_n380
+end
+
+def fun_l13_n427()
+ fun_l14_n833
+end
+
+def fun_l13_n428()
+ fun_l14_n395
+end
+
+def fun_l13_n429()
+ fun_l14_n324
+end
+
+def fun_l13_n430()
+ fun_l14_n608
+end
+
+def fun_l13_n431()
+ fun_l14_n916
+end
+
+def fun_l13_n432()
+ fun_l14_n89
+end
+
+def fun_l13_n433()
+ fun_l14_n239
+end
+
+def fun_l13_n434()
+ fun_l14_n712
+end
+
+def fun_l13_n435()
+ fun_l14_n911
+end
+
+def fun_l13_n436()
+ fun_l14_n810
+end
+
+def fun_l13_n437()
+ fun_l14_n670
+end
+
+def fun_l13_n438()
+ fun_l14_n125
+end
+
+def fun_l13_n439()
+ fun_l14_n903
+end
+
+def fun_l13_n440()
+ fun_l14_n277
+end
+
+def fun_l13_n441()
+ fun_l14_n581
+end
+
+def fun_l13_n442()
+ fun_l14_n726
+end
+
+def fun_l13_n443()
+ fun_l14_n360
+end
+
+def fun_l13_n444()
+ fun_l14_n439
+end
+
+def fun_l13_n445()
+ fun_l14_n441
+end
+
+def fun_l13_n446()
+ fun_l14_n464
+end
+
+def fun_l13_n447()
+ fun_l14_n550
+end
+
+def fun_l13_n448()
+ fun_l14_n94
+end
+
+def fun_l13_n449()
+ fun_l14_n844
+end
+
+def fun_l13_n450()
+ fun_l14_n571
+end
+
+def fun_l13_n451()
+ fun_l14_n161
+end
+
+def fun_l13_n452()
+ fun_l14_n863
+end
+
+def fun_l13_n453()
+ fun_l14_n173
+end
+
+def fun_l13_n454()
+ fun_l14_n330
+end
+
+def fun_l13_n455()
+ fun_l14_n175
+end
+
+def fun_l13_n456()
+ fun_l14_n40
+end
+
+def fun_l13_n457()
+ fun_l14_n335
+end
+
+def fun_l13_n458()
+ fun_l14_n46
+end
+
+def fun_l13_n459()
+ fun_l14_n57
+end
+
+def fun_l13_n460()
+ fun_l14_n428
+end
+
+def fun_l13_n461()
+ fun_l14_n773
+end
+
+def fun_l13_n462()
+ fun_l14_n712
+end
+
+def fun_l13_n463()
+ fun_l14_n624
+end
+
+def fun_l13_n464()
+ fun_l14_n103
+end
+
+def fun_l13_n465()
+ fun_l14_n962
+end
+
+def fun_l13_n466()
+ fun_l14_n424
+end
+
+def fun_l13_n467()
+ fun_l14_n780
+end
+
+def fun_l13_n468()
+ fun_l14_n852
+end
+
+def fun_l13_n469()
+ fun_l14_n175
+end
+
+def fun_l13_n470()
+ fun_l14_n900
+end
+
+def fun_l13_n471()
+ fun_l14_n866
+end
+
+def fun_l13_n472()
+ fun_l14_n541
+end
+
+def fun_l13_n473()
+ fun_l14_n966
+end
+
+def fun_l13_n474()
+ fun_l14_n107
+end
+
+def fun_l13_n475()
+ fun_l14_n917
+end
+
+def fun_l13_n476()
+ fun_l14_n683
+end
+
+def fun_l13_n477()
+ fun_l14_n625
+end
+
+def fun_l13_n478()
+ fun_l14_n439
+end
+
+def fun_l13_n479()
+ fun_l14_n69
+end
+
+def fun_l13_n480()
+ fun_l14_n252
+end
+
+def fun_l13_n481()
+ fun_l14_n753
+end
+
+def fun_l13_n482()
+ fun_l14_n50
+end
+
+def fun_l13_n483()
+ fun_l14_n634
+end
+
+def fun_l13_n484()
+ fun_l14_n908
+end
+
+def fun_l13_n485()
+ fun_l14_n733
+end
+
+def fun_l13_n486()
+ fun_l14_n450
+end
+
+def fun_l13_n487()
+ fun_l14_n373
+end
+
+def fun_l13_n488()
+ fun_l14_n226
+end
+
+def fun_l13_n489()
+ fun_l14_n320
+end
+
+def fun_l13_n490()
+ fun_l14_n498
+end
+
+def fun_l13_n491()
+ fun_l14_n49
+end
+
+def fun_l13_n492()
+ fun_l14_n46
+end
+
+def fun_l13_n493()
+ fun_l14_n993
+end
+
+def fun_l13_n494()
+ fun_l14_n123
+end
+
+def fun_l13_n495()
+ fun_l14_n393
+end
+
+def fun_l13_n496()
+ fun_l14_n500
+end
+
+def fun_l13_n497()
+ fun_l14_n328
+end
+
+def fun_l13_n498()
+ fun_l14_n711
+end
+
+def fun_l13_n499()
+ fun_l14_n734
+end
+
+def fun_l13_n500()
+ fun_l14_n354
+end
+
+def fun_l13_n501()
+ fun_l14_n565
+end
+
+def fun_l13_n502()
+ fun_l14_n699
+end
+
+def fun_l13_n503()
+ fun_l14_n157
+end
+
+def fun_l13_n504()
+ fun_l14_n634
+end
+
+def fun_l13_n505()
+ fun_l14_n282
+end
+
+def fun_l13_n506()
+ fun_l14_n484
+end
+
+def fun_l13_n507()
+ fun_l14_n972
+end
+
+def fun_l13_n508()
+ fun_l14_n763
+end
+
+def fun_l13_n509()
+ fun_l14_n530
+end
+
+def fun_l13_n510()
+ fun_l14_n88
+end
+
+def fun_l13_n511()
+ fun_l14_n718
+end
+
+def fun_l13_n512()
+ fun_l14_n988
+end
+
+def fun_l13_n513()
+ fun_l14_n266
+end
+
+def fun_l13_n514()
+ fun_l14_n489
+end
+
+def fun_l13_n515()
+ fun_l14_n662
+end
+
+def fun_l13_n516()
+ fun_l14_n821
+end
+
+def fun_l13_n517()
+ fun_l14_n697
+end
+
+def fun_l13_n518()
+ fun_l14_n984
+end
+
+def fun_l13_n519()
+ fun_l14_n847
+end
+
+def fun_l13_n520()
+ fun_l14_n916
+end
+
+def fun_l13_n521()
+ fun_l14_n304
+end
+
+def fun_l13_n522()
+ fun_l14_n778
+end
+
+def fun_l13_n523()
+ fun_l14_n105
+end
+
+def fun_l13_n524()
+ fun_l14_n272
+end
+
+def fun_l13_n525()
+ fun_l14_n814
+end
+
+def fun_l13_n526()
+ fun_l14_n689
+end
+
+def fun_l13_n527()
+ fun_l14_n314
+end
+
+def fun_l13_n528()
+ fun_l14_n483
+end
+
+def fun_l13_n529()
+ fun_l14_n571
+end
+
+def fun_l13_n530()
+ fun_l14_n162
+end
+
+def fun_l13_n531()
+ fun_l14_n737
+end
+
+def fun_l13_n532()
+ fun_l14_n886
+end
+
+def fun_l13_n533()
+ fun_l14_n638
+end
+
+def fun_l13_n534()
+ fun_l14_n765
+end
+
+def fun_l13_n535()
+ fun_l14_n452
+end
+
+def fun_l13_n536()
+ fun_l14_n367
+end
+
+def fun_l13_n537()
+ fun_l14_n245
+end
+
+def fun_l13_n538()
+ fun_l14_n590
+end
+
+def fun_l13_n539()
+ fun_l14_n383
+end
+
+def fun_l13_n540()
+ fun_l14_n210
+end
+
+def fun_l13_n541()
+ fun_l14_n25
+end
+
+def fun_l13_n542()
+ fun_l14_n612
+end
+
+def fun_l13_n543()
+ fun_l14_n639
+end
+
+def fun_l13_n544()
+ fun_l14_n540
+end
+
+def fun_l13_n545()
+ fun_l14_n538
+end
+
+def fun_l13_n546()
+ fun_l14_n323
+end
+
+def fun_l13_n547()
+ fun_l14_n556
+end
+
+def fun_l13_n548()
+ fun_l14_n219
+end
+
+def fun_l13_n549()
+ fun_l14_n583
+end
+
+def fun_l13_n550()
+ fun_l14_n818
+end
+
+def fun_l13_n551()
+ fun_l14_n167
+end
+
+def fun_l13_n552()
+ fun_l14_n310
+end
+
+def fun_l13_n553()
+ fun_l14_n528
+end
+
+def fun_l13_n554()
+ fun_l14_n604
+end
+
+def fun_l13_n555()
+ fun_l14_n426
+end
+
+def fun_l13_n556()
+ fun_l14_n398
+end
+
+def fun_l13_n557()
+ fun_l14_n885
+end
+
+def fun_l13_n558()
+ fun_l14_n905
+end
+
+def fun_l13_n559()
+ fun_l14_n882
+end
+
+def fun_l13_n560()
+ fun_l14_n536
+end
+
+def fun_l13_n561()
+ fun_l14_n392
+end
+
+def fun_l13_n562()
+ fun_l14_n948
+end
+
+def fun_l13_n563()
+ fun_l14_n522
+end
+
+def fun_l13_n564()
+ fun_l14_n704
+end
+
+def fun_l13_n565()
+ fun_l14_n365
+end
+
+def fun_l13_n566()
+ fun_l14_n925
+end
+
+def fun_l13_n567()
+ fun_l14_n353
+end
+
+def fun_l13_n568()
+ fun_l14_n215
+end
+
+def fun_l13_n569()
+ fun_l14_n932
+end
+
+def fun_l13_n570()
+ fun_l14_n458
+end
+
+def fun_l13_n571()
+ fun_l14_n793
+end
+
+def fun_l13_n572()
+ fun_l14_n650
+end
+
+def fun_l13_n573()
+ fun_l14_n888
+end
+
+def fun_l13_n574()
+ fun_l14_n986
+end
+
+def fun_l13_n575()
+ fun_l14_n834
+end
+
+def fun_l13_n576()
+ fun_l14_n253
+end
+
+def fun_l13_n577()
+ fun_l14_n382
+end
+
+def fun_l13_n578()
+ fun_l14_n300
+end
+
+def fun_l13_n579()
+ fun_l14_n457
+end
+
+def fun_l13_n580()
+ fun_l14_n398
+end
+
+def fun_l13_n581()
+ fun_l14_n93
+end
+
+def fun_l13_n582()
+ fun_l14_n226
+end
+
+def fun_l13_n583()
+ fun_l14_n665
+end
+
+def fun_l13_n584()
+ fun_l14_n354
+end
+
+def fun_l13_n585()
+ fun_l14_n460
+end
+
+def fun_l13_n586()
+ fun_l14_n185
+end
+
+def fun_l13_n587()
+ fun_l14_n577
+end
+
+def fun_l13_n588()
+ fun_l14_n180
+end
+
+def fun_l13_n589()
+ fun_l14_n769
+end
+
+def fun_l13_n590()
+ fun_l14_n78
+end
+
+def fun_l13_n591()
+ fun_l14_n455
+end
+
+def fun_l13_n592()
+ fun_l14_n862
+end
+
+def fun_l13_n593()
+ fun_l14_n471
+end
+
+def fun_l13_n594()
+ fun_l14_n931
+end
+
+def fun_l13_n595()
+ fun_l14_n255
+end
+
+def fun_l13_n596()
+ fun_l14_n261
+end
+
+def fun_l13_n597()
+ fun_l14_n586
+end
+
+def fun_l13_n598()
+ fun_l14_n45
+end
+
+def fun_l13_n599()
+ fun_l14_n892
+end
+
+def fun_l13_n600()
+ fun_l14_n615
+end
+
+def fun_l13_n601()
+ fun_l14_n910
+end
+
+def fun_l13_n602()
+ fun_l14_n888
+end
+
+def fun_l13_n603()
+ fun_l14_n827
+end
+
+def fun_l13_n604()
+ fun_l14_n765
+end
+
+def fun_l13_n605()
+ fun_l14_n118
+end
+
+def fun_l13_n606()
+ fun_l14_n895
+end
+
+def fun_l13_n607()
+ fun_l14_n183
+end
+
+def fun_l13_n608()
+ fun_l14_n200
+end
+
+def fun_l13_n609()
+ fun_l14_n873
+end
+
+def fun_l13_n610()
+ fun_l14_n402
+end
+
+def fun_l13_n611()
+ fun_l14_n414
+end
+
+def fun_l13_n612()
+ fun_l14_n492
+end
+
+def fun_l13_n613()
+ fun_l14_n811
+end
+
+def fun_l13_n614()
+ fun_l14_n814
+end
+
+def fun_l13_n615()
+ fun_l14_n95
+end
+
+def fun_l13_n616()
+ fun_l14_n782
+end
+
+def fun_l13_n617()
+ fun_l14_n329
+end
+
+def fun_l13_n618()
+ fun_l14_n180
+end
+
+def fun_l13_n619()
+ fun_l14_n104
+end
+
+def fun_l13_n620()
+ fun_l14_n341
+end
+
+def fun_l13_n621()
+ fun_l14_n132
+end
+
+def fun_l13_n622()
+ fun_l14_n815
+end
+
+def fun_l13_n623()
+ fun_l14_n785
+end
+
+def fun_l13_n624()
+ fun_l14_n934
+end
+
+def fun_l13_n625()
+ fun_l14_n760
+end
+
+def fun_l13_n626()
+ fun_l14_n307
+end
+
+def fun_l13_n627()
+ fun_l14_n433
+end
+
+def fun_l13_n628()
+ fun_l14_n156
+end
+
+def fun_l13_n629()
+ fun_l14_n95
+end
+
+def fun_l13_n630()
+ fun_l14_n44
+end
+
+def fun_l13_n631()
+ fun_l14_n643
+end
+
+def fun_l13_n632()
+ fun_l14_n876
+end
+
+def fun_l13_n633()
+ fun_l14_n477
+end
+
+def fun_l13_n634()
+ fun_l14_n549
+end
+
+def fun_l13_n635()
+ fun_l14_n795
+end
+
+def fun_l13_n636()
+ fun_l14_n814
+end
+
+def fun_l13_n637()
+ fun_l14_n52
+end
+
+def fun_l13_n638()
+ fun_l14_n542
+end
+
+def fun_l13_n639()
+ fun_l14_n204
+end
+
+def fun_l13_n640()
+ fun_l14_n256
+end
+
+def fun_l13_n641()
+ fun_l14_n198
+end
+
+def fun_l13_n642()
+ fun_l14_n221
+end
+
+def fun_l13_n643()
+ fun_l14_n855
+end
+
+def fun_l13_n644()
+ fun_l14_n978
+end
+
+def fun_l13_n645()
+ fun_l14_n954
+end
+
+def fun_l13_n646()
+ fun_l14_n148
+end
+
+def fun_l13_n647()
+ fun_l14_n528
+end
+
+def fun_l13_n648()
+ fun_l14_n807
+end
+
+def fun_l13_n649()
+ fun_l14_n735
+end
+
+def fun_l13_n650()
+ fun_l14_n518
+end
+
+def fun_l13_n651()
+ fun_l14_n255
+end
+
+def fun_l13_n652()
+ fun_l14_n251
+end
+
+def fun_l13_n653()
+ fun_l14_n311
+end
+
+def fun_l13_n654()
+ fun_l14_n134
+end
+
+def fun_l13_n655()
+ fun_l14_n474
+end
+
+def fun_l13_n656()
+ fun_l14_n857
+end
+
+def fun_l13_n657()
+ fun_l14_n758
+end
+
+def fun_l13_n658()
+ fun_l14_n310
+end
+
+def fun_l13_n659()
+ fun_l14_n846
+end
+
+def fun_l13_n660()
+ fun_l14_n220
+end
+
+def fun_l13_n661()
+ fun_l14_n81
+end
+
+def fun_l13_n662()
+ fun_l14_n958
+end
+
+def fun_l13_n663()
+ fun_l14_n221
+end
+
+def fun_l13_n664()
+ fun_l14_n107
+end
+
+def fun_l13_n665()
+ fun_l14_n131
+end
+
+def fun_l13_n666()
+ fun_l14_n750
+end
+
+def fun_l13_n667()
+ fun_l14_n455
+end
+
+def fun_l13_n668()
+ fun_l14_n354
+end
+
+def fun_l13_n669()
+ fun_l14_n76
+end
+
+def fun_l13_n670()
+ fun_l14_n111
+end
+
+def fun_l13_n671()
+ fun_l14_n411
+end
+
+def fun_l13_n672()
+ fun_l14_n400
+end
+
+def fun_l13_n673()
+ fun_l14_n407
+end
+
+def fun_l13_n674()
+ fun_l14_n851
+end
+
+def fun_l13_n675()
+ fun_l14_n521
+end
+
+def fun_l13_n676()
+ fun_l14_n448
+end
+
+def fun_l13_n677()
+ fun_l14_n615
+end
+
+def fun_l13_n678()
+ fun_l14_n574
+end
+
+def fun_l13_n679()
+ fun_l14_n300
+end
+
+def fun_l13_n680()
+ fun_l14_n783
+end
+
+def fun_l13_n681()
+ fun_l14_n172
+end
+
+def fun_l13_n682()
+ fun_l14_n725
+end
+
+def fun_l13_n683()
+ fun_l14_n657
+end
+
+def fun_l13_n684()
+ fun_l14_n550
+end
+
+def fun_l13_n685()
+ fun_l14_n976
+end
+
+def fun_l13_n686()
+ fun_l14_n77
+end
+
+def fun_l13_n687()
+ fun_l14_n472
+end
+
+def fun_l13_n688()
+ fun_l14_n300
+end
+
+def fun_l13_n689()
+ fun_l14_n139
+end
+
+def fun_l13_n690()
+ fun_l14_n623
+end
+
+def fun_l13_n691()
+ fun_l14_n336
+end
+
+def fun_l13_n692()
+ fun_l14_n502
+end
+
+def fun_l13_n693()
+ fun_l14_n184
+end
+
+def fun_l13_n694()
+ fun_l14_n745
+end
+
+def fun_l13_n695()
+ fun_l14_n27
+end
+
+def fun_l13_n696()
+ fun_l14_n299
+end
+
+def fun_l13_n697()
+ fun_l14_n7
+end
+
+def fun_l13_n698()
+ fun_l14_n842
+end
+
+def fun_l13_n699()
+ fun_l14_n592
+end
+
+def fun_l13_n700()
+ fun_l14_n993
+end
+
+def fun_l13_n701()
+ fun_l14_n113
+end
+
+def fun_l13_n702()
+ fun_l14_n997
+end
+
+def fun_l13_n703()
+ fun_l14_n740
+end
+
+def fun_l13_n704()
+ fun_l14_n261
+end
+
+def fun_l13_n705()
+ fun_l14_n737
+end
+
+def fun_l13_n706()
+ fun_l14_n216
+end
+
+def fun_l13_n707()
+ fun_l14_n607
+end
+
+def fun_l13_n708()
+ fun_l14_n520
+end
+
+def fun_l13_n709()
+ fun_l14_n133
+end
+
+def fun_l13_n710()
+ fun_l14_n615
+end
+
+def fun_l13_n711()
+ fun_l14_n476
+end
+
+def fun_l13_n712()
+ fun_l14_n154
+end
+
+def fun_l13_n713()
+ fun_l14_n947
+end
+
+def fun_l13_n714()
+ fun_l14_n893
+end
+
+def fun_l13_n715()
+ fun_l14_n296
+end
+
+def fun_l13_n716()
+ fun_l14_n275
+end
+
+def fun_l13_n717()
+ fun_l14_n622
+end
+
+def fun_l13_n718()
+ fun_l14_n561
+end
+
+def fun_l13_n719()
+ fun_l14_n216
+end
+
+def fun_l13_n720()
+ fun_l14_n459
+end
+
+def fun_l13_n721()
+ fun_l14_n329
+end
+
+def fun_l13_n722()
+ fun_l14_n901
+end
+
+def fun_l13_n723()
+ fun_l14_n824
+end
+
+def fun_l13_n724()
+ fun_l14_n359
+end
+
+def fun_l13_n725()
+ fun_l14_n399
+end
+
+def fun_l13_n726()
+ fun_l14_n998
+end
+
+def fun_l13_n727()
+ fun_l14_n327
+end
+
+def fun_l13_n728()
+ fun_l14_n659
+end
+
+def fun_l13_n729()
+ fun_l14_n564
+end
+
+def fun_l13_n730()
+ fun_l14_n718
+end
+
+def fun_l13_n731()
+ fun_l14_n751
+end
+
+def fun_l13_n732()
+ fun_l14_n172
+end
+
+def fun_l13_n733()
+ fun_l14_n289
+end
+
+def fun_l13_n734()
+ fun_l14_n956
+end
+
+def fun_l13_n735()
+ fun_l14_n375
+end
+
+def fun_l13_n736()
+ fun_l14_n459
+end
+
+def fun_l13_n737()
+ fun_l14_n471
+end
+
+def fun_l13_n738()
+ fun_l14_n957
+end
+
+def fun_l13_n739()
+ fun_l14_n670
+end
+
+def fun_l13_n740()
+ fun_l14_n396
+end
+
+def fun_l13_n741()
+ fun_l14_n909
+end
+
+def fun_l13_n742()
+ fun_l14_n226
+end
+
+def fun_l13_n743()
+ fun_l14_n458
+end
+
+def fun_l13_n744()
+ fun_l14_n923
+end
+
+def fun_l13_n745()
+ fun_l14_n255
+end
+
+def fun_l13_n746()
+ fun_l14_n2
+end
+
+def fun_l13_n747()
+ fun_l14_n805
+end
+
+def fun_l13_n748()
+ fun_l14_n157
+end
+
+def fun_l13_n749()
+ fun_l14_n952
+end
+
+def fun_l13_n750()
+ fun_l14_n902
+end
+
+def fun_l13_n751()
+ fun_l14_n723
+end
+
+def fun_l13_n752()
+ fun_l14_n204
+end
+
+def fun_l13_n753()
+ fun_l14_n53
+end
+
+def fun_l13_n754()
+ fun_l14_n240
+end
+
+def fun_l13_n755()
+ fun_l14_n161
+end
+
+def fun_l13_n756()
+ fun_l14_n735
+end
+
+def fun_l13_n757()
+ fun_l14_n298
+end
+
+def fun_l13_n758()
+ fun_l14_n743
+end
+
+def fun_l13_n759()
+ fun_l14_n886
+end
+
+def fun_l13_n760()
+ fun_l14_n559
+end
+
+def fun_l13_n761()
+ fun_l14_n42
+end
+
+def fun_l13_n762()
+ fun_l14_n86
+end
+
+def fun_l13_n763()
+ fun_l14_n138
+end
+
+def fun_l13_n764()
+ fun_l14_n477
+end
+
+def fun_l13_n765()
+ fun_l14_n763
+end
+
+def fun_l13_n766()
+ fun_l14_n360
+end
+
+def fun_l13_n767()
+ fun_l14_n486
+end
+
+def fun_l13_n768()
+ fun_l14_n734
+end
+
+def fun_l13_n769()
+ fun_l14_n442
+end
+
+def fun_l13_n770()
+ fun_l14_n512
+end
+
+def fun_l13_n771()
+ fun_l14_n399
+end
+
+def fun_l13_n772()
+ fun_l14_n88
+end
+
+def fun_l13_n773()
+ fun_l14_n55
+end
+
+def fun_l13_n774()
+ fun_l14_n138
+end
+
+def fun_l13_n775()
+ fun_l14_n104
+end
+
+def fun_l13_n776()
+ fun_l14_n901
+end
+
+def fun_l13_n777()
+ fun_l14_n7
+end
+
+def fun_l13_n778()
+ fun_l14_n72
+end
+
+def fun_l13_n779()
+ fun_l14_n588
+end
+
+def fun_l13_n780()
+ fun_l14_n266
+end
+
+def fun_l13_n781()
+ fun_l14_n428
+end
+
+def fun_l13_n782()
+ fun_l14_n802
+end
+
+def fun_l13_n783()
+ fun_l14_n59
+end
+
+def fun_l13_n784()
+ fun_l14_n734
+end
+
+def fun_l13_n785()
+ fun_l14_n674
+end
+
+def fun_l13_n786()
+ fun_l14_n126
+end
+
+def fun_l13_n787()
+ fun_l14_n199
+end
+
+def fun_l13_n788()
+ fun_l14_n695
+end
+
+def fun_l13_n789()
+ fun_l14_n332
+end
+
+def fun_l13_n790()
+ fun_l14_n734
+end
+
+def fun_l13_n791()
+ fun_l14_n856
+end
+
+def fun_l13_n792()
+ fun_l14_n447
+end
+
+def fun_l13_n793()
+ fun_l14_n931
+end
+
+def fun_l13_n794()
+ fun_l14_n608
+end
+
+def fun_l13_n795()
+ fun_l14_n131
+end
+
+def fun_l13_n796()
+ fun_l14_n961
+end
+
+def fun_l13_n797()
+ fun_l14_n109
+end
+
+def fun_l13_n798()
+ fun_l14_n766
+end
+
+def fun_l13_n799()
+ fun_l14_n149
+end
+
+def fun_l13_n800()
+ fun_l14_n44
+end
+
+def fun_l13_n801()
+ fun_l14_n893
+end
+
+def fun_l13_n802()
+ fun_l14_n826
+end
+
+def fun_l13_n803()
+ fun_l14_n372
+end
+
+def fun_l13_n804()
+ fun_l14_n7
+end
+
+def fun_l13_n805()
+ fun_l14_n655
+end
+
+def fun_l13_n806()
+ fun_l14_n418
+end
+
+def fun_l13_n807()
+ fun_l14_n746
+end
+
+def fun_l13_n808()
+ fun_l14_n810
+end
+
+def fun_l13_n809()
+ fun_l14_n838
+end
+
+def fun_l13_n810()
+ fun_l14_n522
+end
+
+def fun_l13_n811()
+ fun_l14_n723
+end
+
+def fun_l13_n812()
+ fun_l14_n476
+end
+
+def fun_l13_n813()
+ fun_l14_n760
+end
+
+def fun_l13_n814()
+ fun_l14_n728
+end
+
+def fun_l13_n815()
+ fun_l14_n926
+end
+
+def fun_l13_n816()
+ fun_l14_n16
+end
+
+def fun_l13_n817()
+ fun_l14_n888
+end
+
+def fun_l13_n818()
+ fun_l14_n812
+end
+
+def fun_l13_n819()
+ fun_l14_n430
+end
+
+def fun_l13_n820()
+ fun_l14_n211
+end
+
+def fun_l13_n821()
+ fun_l14_n204
+end
+
+def fun_l13_n822()
+ fun_l14_n868
+end
+
+def fun_l13_n823()
+ fun_l14_n460
+end
+
+def fun_l13_n824()
+ fun_l14_n597
+end
+
+def fun_l13_n825()
+ fun_l14_n217
+end
+
+def fun_l13_n826()
+ fun_l14_n425
+end
+
+def fun_l13_n827()
+ fun_l14_n216
+end
+
+def fun_l13_n828()
+ fun_l14_n931
+end
+
+def fun_l13_n829()
+ fun_l14_n3
+end
+
+def fun_l13_n830()
+ fun_l14_n55
+end
+
+def fun_l13_n831()
+ fun_l14_n362
+end
+
+def fun_l13_n832()
+ fun_l14_n591
+end
+
+def fun_l13_n833()
+ fun_l14_n339
+end
+
+def fun_l13_n834()
+ fun_l14_n641
+end
+
+def fun_l13_n835()
+ fun_l14_n389
+end
+
+def fun_l13_n836()
+ fun_l14_n668
+end
+
+def fun_l13_n837()
+ fun_l14_n845
+end
+
+def fun_l13_n838()
+ fun_l14_n202
+end
+
+def fun_l13_n839()
+ fun_l14_n575
+end
+
+def fun_l13_n840()
+ fun_l14_n357
+end
+
+def fun_l13_n841()
+ fun_l14_n271
+end
+
+def fun_l13_n842()
+ fun_l14_n876
+end
+
+def fun_l13_n843()
+ fun_l14_n983
+end
+
+def fun_l13_n844()
+ fun_l14_n512
+end
+
+def fun_l13_n845()
+ fun_l14_n205
+end
+
+def fun_l13_n846()
+ fun_l14_n463
+end
+
+def fun_l13_n847()
+ fun_l14_n422
+end
+
+def fun_l13_n848()
+ fun_l14_n54
+end
+
+def fun_l13_n849()
+ fun_l14_n575
+end
+
+def fun_l13_n850()
+ fun_l14_n187
+end
+
+def fun_l13_n851()
+ fun_l14_n151
+end
+
+def fun_l13_n852()
+ fun_l14_n176
+end
+
+def fun_l13_n853()
+ fun_l14_n501
+end
+
+def fun_l13_n854()
+ fun_l14_n390
+end
+
+def fun_l13_n855()
+ fun_l14_n902
+end
+
+def fun_l13_n856()
+ fun_l14_n354
+end
+
+def fun_l13_n857()
+ fun_l14_n245
+end
+
+def fun_l13_n858()
+ fun_l14_n299
+end
+
+def fun_l13_n859()
+ fun_l14_n532
+end
+
+def fun_l13_n860()
+ fun_l14_n263
+end
+
+def fun_l13_n861()
+ fun_l14_n811
+end
+
+def fun_l13_n862()
+ fun_l14_n298
+end
+
+def fun_l13_n863()
+ fun_l14_n635
+end
+
+def fun_l13_n864()
+ fun_l14_n913
+end
+
+def fun_l13_n865()
+ fun_l14_n901
+end
+
+def fun_l13_n866()
+ fun_l14_n380
+end
+
+def fun_l13_n867()
+ fun_l14_n9
+end
+
+def fun_l13_n868()
+ fun_l14_n982
+end
+
+def fun_l13_n869()
+ fun_l14_n703
+end
+
+def fun_l13_n870()
+ fun_l14_n272
+end
+
+def fun_l13_n871()
+ fun_l14_n209
+end
+
+def fun_l13_n872()
+ fun_l14_n429
+end
+
+def fun_l13_n873()
+ fun_l14_n108
+end
+
+def fun_l13_n874()
+ fun_l14_n116
+end
+
+def fun_l13_n875()
+ fun_l14_n169
+end
+
+def fun_l13_n876()
+ fun_l14_n642
+end
+
+def fun_l13_n877()
+ fun_l14_n265
+end
+
+def fun_l13_n878()
+ fun_l14_n227
+end
+
+def fun_l13_n879()
+ fun_l14_n202
+end
+
+def fun_l13_n880()
+ fun_l14_n336
+end
+
+def fun_l13_n881()
+ fun_l14_n856
+end
+
+def fun_l13_n882()
+ fun_l14_n821
+end
+
+def fun_l13_n883()
+ fun_l14_n275
+end
+
+def fun_l13_n884()
+ fun_l14_n903
+end
+
+def fun_l13_n885()
+ fun_l14_n407
+end
+
+def fun_l13_n886()
+ fun_l14_n129
+end
+
+def fun_l13_n887()
+ fun_l14_n68
+end
+
+def fun_l13_n888()
+ fun_l14_n124
+end
+
+def fun_l13_n889()
+ fun_l14_n936
+end
+
+def fun_l13_n890()
+ fun_l14_n401
+end
+
+def fun_l13_n891()
+ fun_l14_n574
+end
+
+def fun_l13_n892()
+ fun_l14_n593
+end
+
+def fun_l13_n893()
+ fun_l14_n262
+end
+
+def fun_l13_n894()
+ fun_l14_n215
+end
+
+def fun_l13_n895()
+ fun_l14_n49
+end
+
+def fun_l13_n896()
+ fun_l14_n767
+end
+
+def fun_l13_n897()
+ fun_l14_n280
+end
+
+def fun_l13_n898()
+ fun_l14_n112
+end
+
+def fun_l13_n899()
+ fun_l14_n202
+end
+
+def fun_l13_n900()
+ fun_l14_n73
+end
+
+def fun_l13_n901()
+ fun_l14_n798
+end
+
+def fun_l13_n902()
+ fun_l14_n827
+end
+
+def fun_l13_n903()
+ fun_l14_n824
+end
+
+def fun_l13_n904()
+ fun_l14_n414
+end
+
+def fun_l13_n905()
+ fun_l14_n502
+end
+
+def fun_l13_n906()
+ fun_l14_n323
+end
+
+def fun_l13_n907()
+ fun_l14_n216
+end
+
+def fun_l13_n908()
+ fun_l14_n173
+end
+
+def fun_l13_n909()
+ fun_l14_n26
+end
+
+def fun_l13_n910()
+ fun_l14_n40
+end
+
+def fun_l13_n911()
+ fun_l14_n883
+end
+
+def fun_l13_n912()
+ fun_l14_n523
+end
+
+def fun_l13_n913()
+ fun_l14_n979
+end
+
+def fun_l13_n914()
+ fun_l14_n921
+end
+
+def fun_l13_n915()
+ fun_l14_n842
+end
+
+def fun_l13_n916()
+ fun_l14_n943
+end
+
+def fun_l13_n917()
+ fun_l14_n97
+end
+
+def fun_l13_n918()
+ fun_l14_n515
+end
+
+def fun_l13_n919()
+ fun_l14_n145
+end
+
+def fun_l13_n920()
+ fun_l14_n497
+end
+
+def fun_l13_n921()
+ fun_l14_n264
+end
+
+def fun_l13_n922()
+ fun_l14_n901
+end
+
+def fun_l13_n923()
+ fun_l14_n436
+end
+
+def fun_l13_n924()
+ fun_l14_n315
+end
+
+def fun_l13_n925()
+ fun_l14_n512
+end
+
+def fun_l13_n926()
+ fun_l14_n611
+end
+
+def fun_l13_n927()
+ fun_l14_n103
+end
+
+def fun_l13_n928()
+ fun_l14_n149
+end
+
+def fun_l13_n929()
+ fun_l14_n407
+end
+
+def fun_l13_n930()
+ fun_l14_n380
+end
+
+def fun_l13_n931()
+ fun_l14_n429
+end
+
+def fun_l13_n932()
+ fun_l14_n870
+end
+
+def fun_l13_n933()
+ fun_l14_n274
+end
+
+def fun_l13_n934()
+ fun_l14_n57
+end
+
+def fun_l13_n935()
+ fun_l14_n718
+end
+
+def fun_l13_n936()
+ fun_l14_n571
+end
+
+def fun_l13_n937()
+ fun_l14_n447
+end
+
+def fun_l13_n938()
+ fun_l14_n742
+end
+
+def fun_l13_n939()
+ fun_l14_n811
+end
+
+def fun_l13_n940()
+ fun_l14_n148
+end
+
+def fun_l13_n941()
+ fun_l14_n795
+end
+
+def fun_l13_n942()
+ fun_l14_n807
+end
+
+def fun_l13_n943()
+ fun_l14_n279
+end
+
+def fun_l13_n944()
+ fun_l14_n939
+end
+
+def fun_l13_n945()
+ fun_l14_n435
+end
+
+def fun_l13_n946()
+ fun_l14_n937
+end
+
+def fun_l13_n947()
+ fun_l14_n543
+end
+
+def fun_l13_n948()
+ fun_l14_n374
+end
+
+def fun_l13_n949()
+ fun_l14_n707
+end
+
+def fun_l13_n950()
+ fun_l14_n866
+end
+
+def fun_l13_n951()
+ fun_l14_n67
+end
+
+def fun_l13_n952()
+ fun_l14_n752
+end
+
+def fun_l13_n953()
+ fun_l14_n113
+end
+
+def fun_l13_n954()
+ fun_l14_n358
+end
+
+def fun_l13_n955()
+ fun_l14_n432
+end
+
+def fun_l13_n956()
+ fun_l14_n132
+end
+
+def fun_l13_n957()
+ fun_l14_n807
+end
+
+def fun_l13_n958()
+ fun_l14_n293
+end
+
+def fun_l13_n959()
+ fun_l14_n681
+end
+
+def fun_l13_n960()
+ fun_l14_n335
+end
+
+def fun_l13_n961()
+ fun_l14_n285
+end
+
+def fun_l13_n962()
+ fun_l14_n366
+end
+
+def fun_l13_n963()
+ fun_l14_n674
+end
+
+def fun_l13_n964()
+ fun_l14_n914
+end
+
+def fun_l13_n965()
+ fun_l14_n776
+end
+
+def fun_l13_n966()
+ fun_l14_n297
+end
+
+def fun_l13_n967()
+ fun_l14_n623
+end
+
+def fun_l13_n968()
+ fun_l14_n357
+end
+
+def fun_l13_n969()
+ fun_l14_n430
+end
+
+def fun_l13_n970()
+ fun_l14_n201
+end
+
+def fun_l13_n971()
+ fun_l14_n482
+end
+
+def fun_l13_n972()
+ fun_l14_n363
+end
+
+def fun_l13_n973()
+ fun_l14_n530
+end
+
+def fun_l13_n974()
+ fun_l14_n892
+end
+
+def fun_l13_n975()
+ fun_l14_n548
+end
+
+def fun_l13_n976()
+ fun_l14_n257
+end
+
+def fun_l13_n977()
+ fun_l14_n449
+end
+
+def fun_l13_n978()
+ fun_l14_n346
+end
+
+def fun_l13_n979()
+ fun_l14_n448
+end
+
+def fun_l13_n980()
+ fun_l14_n912
+end
+
+def fun_l13_n981()
+ fun_l14_n358
+end
+
+def fun_l13_n982()
+ fun_l14_n55
+end
+
+def fun_l13_n983()
+ fun_l14_n712
+end
+
+def fun_l13_n984()
+ fun_l14_n179
+end
+
+def fun_l13_n985()
+ fun_l14_n749
+end
+
+def fun_l13_n986()
+ fun_l14_n469
+end
+
+def fun_l13_n987()
+ fun_l14_n557
+end
+
+def fun_l13_n988()
+ fun_l14_n383
+end
+
+def fun_l13_n989()
+ fun_l14_n929
+end
+
+def fun_l13_n990()
+ fun_l14_n659
+end
+
+def fun_l13_n991()
+ fun_l14_n285
+end
+
+def fun_l13_n992()
+ fun_l14_n779
+end
+
+def fun_l13_n993()
+ fun_l14_n235
+end
+
+def fun_l13_n994()
+ fun_l14_n756
+end
+
+def fun_l13_n995()
+ fun_l14_n249
+end
+
+def fun_l13_n996()
+ fun_l14_n8
+end
+
+def fun_l13_n997()
+ fun_l14_n785
+end
+
+def fun_l13_n998()
+ fun_l14_n945
+end
+
+def fun_l13_n999()
+ fun_l14_n410
+end
+
+def fun_l14_n0()
+ fun_l15_n85
+end
+
+def fun_l14_n1()
+ fun_l15_n932
+end
+
+def fun_l14_n2()
+ fun_l15_n422
+end
+
+def fun_l14_n3()
+ fun_l15_n439
+end
+
+def fun_l14_n4()
+ fun_l15_n186
+end
+
+def fun_l14_n5()
+ fun_l15_n914
+end
+
+def fun_l14_n6()
+ fun_l15_n830
+end
+
+def fun_l14_n7()
+ fun_l15_n384
+end
+
+def fun_l14_n8()
+ fun_l15_n200
+end
+
+def fun_l14_n9()
+ fun_l15_n72
+end
+
+def fun_l14_n10()
+ fun_l15_n498
+end
+
+def fun_l14_n11()
+ fun_l15_n247
+end
+
+def fun_l14_n12()
+ fun_l15_n432
+end
+
+def fun_l14_n13()
+ fun_l15_n718
+end
+
+def fun_l14_n14()
+ fun_l15_n568
+end
+
+def fun_l14_n15()
+ fun_l15_n971
+end
+
+def fun_l14_n16()
+ fun_l15_n545
+end
+
+def fun_l14_n17()
+ fun_l15_n441
+end
+
+def fun_l14_n18()
+ fun_l15_n532
+end
+
+def fun_l14_n19()
+ fun_l15_n484
+end
+
+def fun_l14_n20()
+ fun_l15_n659
+end
+
+def fun_l14_n21()
+ fun_l15_n494
+end
+
+def fun_l14_n22()
+ fun_l15_n379
+end
+
+def fun_l14_n23()
+ fun_l15_n180
+end
+
+def fun_l14_n24()
+ fun_l15_n955
+end
+
+def fun_l14_n25()
+ fun_l15_n536
+end
+
+def fun_l14_n26()
+ fun_l15_n940
+end
+
+def fun_l14_n27()
+ fun_l15_n3
+end
+
+def fun_l14_n28()
+ fun_l15_n520
+end
+
+def fun_l14_n29()
+ fun_l15_n478
+end
+
+def fun_l14_n30()
+ fun_l15_n865
+end
+
+def fun_l14_n31()
+ fun_l15_n330
+end
+
+def fun_l14_n32()
+ fun_l15_n217
+end
+
+def fun_l14_n33()
+ fun_l15_n381
+end
+
+def fun_l14_n34()
+ fun_l15_n88
+end
+
+def fun_l14_n35()
+ fun_l15_n111
+end
+
+def fun_l14_n36()
+ fun_l15_n181
+end
+
+def fun_l14_n37()
+ fun_l15_n978
+end
+
+def fun_l14_n38()
+ fun_l15_n596
+end
+
+def fun_l14_n39()
+ fun_l15_n764
+end
+
+def fun_l14_n40()
+ fun_l15_n779
+end
+
+def fun_l14_n41()
+ fun_l15_n994
+end
+
+def fun_l14_n42()
+ fun_l15_n90
+end
+
+def fun_l14_n43()
+ fun_l15_n329
+end
+
+def fun_l14_n44()
+ fun_l15_n684
+end
+
+def fun_l14_n45()
+ fun_l15_n191
+end
+
+def fun_l14_n46()
+ fun_l15_n282
+end
+
+def fun_l14_n47()
+ fun_l15_n915
+end
+
+def fun_l14_n48()
+ fun_l15_n330
+end
+
+def fun_l14_n49()
+ fun_l15_n136
+end
+
+def fun_l14_n50()
+ fun_l15_n167
+end
+
+def fun_l14_n51()
+ fun_l15_n418
+end
+
+def fun_l14_n52()
+ fun_l15_n822
+end
+
+def fun_l14_n53()
+ fun_l15_n557
+end
+
+def fun_l14_n54()
+ fun_l15_n155
+end
+
+def fun_l14_n55()
+ fun_l15_n629
+end
+
+def fun_l14_n56()
+ fun_l15_n694
+end
+
+def fun_l14_n57()
+ fun_l15_n577
+end
+
+def fun_l14_n58()
+ fun_l15_n412
+end
+
+def fun_l14_n59()
+ fun_l15_n618
+end
+
+def fun_l14_n60()
+ fun_l15_n873
+end
+
+def fun_l14_n61()
+ fun_l15_n758
+end
+
+def fun_l14_n62()
+ fun_l15_n820
+end
+
+def fun_l14_n63()
+ fun_l15_n89
+end
+
+def fun_l14_n64()
+ fun_l15_n788
+end
+
+def fun_l14_n65()
+ fun_l15_n390
+end
+
+def fun_l14_n66()
+ fun_l15_n177
+end
+
+def fun_l14_n67()
+ fun_l15_n972
+end
+
+def fun_l14_n68()
+ fun_l15_n124
+end
+
+def fun_l14_n69()
+ fun_l15_n426
+end
+
+def fun_l14_n70()
+ fun_l15_n490
+end
+
+def fun_l14_n71()
+ fun_l15_n963
+end
+
+def fun_l14_n72()
+ fun_l15_n960
+end
+
+def fun_l14_n73()
+ fun_l15_n111
+end
+
+def fun_l14_n74()
+ fun_l15_n535
+end
+
+def fun_l14_n75()
+ fun_l15_n936
+end
+
+def fun_l14_n76()
+ fun_l15_n17
+end
+
+def fun_l14_n77()
+ fun_l15_n732
+end
+
+def fun_l14_n78()
+ fun_l15_n905
+end
+
+def fun_l14_n79()
+ fun_l15_n658
+end
+
+def fun_l14_n80()
+ fun_l15_n869
+end
+
+def fun_l14_n81()
+ fun_l15_n966
+end
+
+def fun_l14_n82()
+ fun_l15_n413
+end
+
+def fun_l14_n83()
+ fun_l15_n360
+end
+
+def fun_l14_n84()
+ fun_l15_n955
+end
+
+def fun_l14_n85()
+ fun_l15_n612
+end
+
+def fun_l14_n86()
+ fun_l15_n665
+end
+
+def fun_l14_n87()
+ fun_l15_n570
+end
+
+def fun_l14_n88()
+ fun_l15_n381
+end
+
+def fun_l14_n89()
+ fun_l15_n169
+end
+
+def fun_l14_n90()
+ fun_l15_n33
+end
+
+def fun_l14_n91()
+ fun_l15_n574
+end
+
+def fun_l14_n92()
+ fun_l15_n826
+end
+
+def fun_l14_n93()
+ fun_l15_n183
+end
+
+def fun_l14_n94()
+ fun_l15_n878
+end
+
+def fun_l14_n95()
+ fun_l15_n898
+end
+
+def fun_l14_n96()
+ fun_l15_n296
+end
+
+def fun_l14_n97()
+ fun_l15_n769
+end
+
+def fun_l14_n98()
+ fun_l15_n41
+end
+
+def fun_l14_n99()
+ fun_l15_n644
+end
+
+def fun_l14_n100()
+ fun_l15_n218
+end
+
+def fun_l14_n101()
+ fun_l15_n267
+end
+
+def fun_l14_n102()
+ fun_l15_n846
+end
+
+def fun_l14_n103()
+ fun_l15_n409
+end
+
+def fun_l14_n104()
+ fun_l15_n776
+end
+
+def fun_l14_n105()
+ fun_l15_n224
+end
+
+def fun_l14_n106()
+ fun_l15_n401
+end
+
+def fun_l14_n107()
+ fun_l15_n726
+end
+
+def fun_l14_n108()
+ fun_l15_n624
+end
+
+def fun_l14_n109()
+ fun_l15_n319
+end
+
+def fun_l14_n110()
+ fun_l15_n180
+end
+
+def fun_l14_n111()
+ fun_l15_n370
+end
+
+def fun_l14_n112()
+ fun_l15_n834
+end
+
+def fun_l14_n113()
+ fun_l15_n397
+end
+
+def fun_l14_n114()
+ fun_l15_n685
+end
+
+def fun_l14_n115()
+ fun_l15_n286
+end
+
+def fun_l14_n116()
+ fun_l15_n740
+end
+
+def fun_l14_n117()
+ fun_l15_n122
+end
+
+def fun_l14_n118()
+ fun_l15_n112
+end
+
+def fun_l14_n119()
+ fun_l15_n658
+end
+
+def fun_l14_n120()
+ fun_l15_n844
+end
+
+def fun_l14_n121()
+ fun_l15_n715
+end
+
+def fun_l14_n122()
+ fun_l15_n14
+end
+
+def fun_l14_n123()
+ fun_l15_n677
+end
+
+def fun_l14_n124()
+ fun_l15_n742
+end
+
+def fun_l14_n125()
+ fun_l15_n311
+end
+
+def fun_l14_n126()
+ fun_l15_n234
+end
+
+def fun_l14_n127()
+ fun_l15_n746
+end
+
+def fun_l14_n128()
+ fun_l15_n616
+end
+
+def fun_l14_n129()
+ fun_l15_n529
+end
+
+def fun_l14_n130()
+ fun_l15_n330
+end
+
+def fun_l14_n131()
+ fun_l15_n182
+end
+
+def fun_l14_n132()
+ fun_l15_n588
+end
+
+def fun_l14_n133()
+ fun_l15_n477
+end
+
+def fun_l14_n134()
+ fun_l15_n267
+end
+
+def fun_l14_n135()
+ fun_l15_n667
+end
+
+def fun_l14_n136()
+ fun_l15_n233
+end
+
+def fun_l14_n137()
+ fun_l15_n630
+end
+
+def fun_l14_n138()
+ fun_l15_n993
+end
+
+def fun_l14_n139()
+ fun_l15_n79
+end
+
+def fun_l14_n140()
+ fun_l15_n2
+end
+
+def fun_l14_n141()
+ fun_l15_n774
+end
+
+def fun_l14_n142()
+ fun_l15_n762
+end
+
+def fun_l14_n143()
+ fun_l15_n832
+end
+
+def fun_l14_n144()
+ fun_l15_n359
+end
+
+def fun_l14_n145()
+ fun_l15_n344
+end
+
+def fun_l14_n146()
+ fun_l15_n521
+end
+
+def fun_l14_n147()
+ fun_l15_n867
+end
+
+def fun_l14_n148()
+ fun_l15_n132
+end
+
+def fun_l14_n149()
+ fun_l15_n19
+end
+
+def fun_l14_n150()
+ fun_l15_n513
+end
+
+def fun_l14_n151()
+ fun_l15_n732
+end
+
+def fun_l14_n152()
+ fun_l15_n709
+end
+
+def fun_l14_n153()
+ fun_l15_n876
+end
+
+def fun_l14_n154()
+ fun_l15_n400
+end
+
+def fun_l14_n155()
+ fun_l15_n539
+end
+
+def fun_l14_n156()
+ fun_l15_n895
+end
+
+def fun_l14_n157()
+ fun_l15_n208
+end
+
+def fun_l14_n158()
+ fun_l15_n268
+end
+
+def fun_l14_n159()
+ fun_l15_n286
+end
+
+def fun_l14_n160()
+ fun_l15_n457
+end
+
+def fun_l14_n161()
+ fun_l15_n985
+end
+
+def fun_l14_n162()
+ fun_l15_n48
+end
+
+def fun_l14_n163()
+ fun_l15_n495
+end
+
+def fun_l14_n164()
+ fun_l15_n10
+end
+
+def fun_l14_n165()
+ fun_l15_n368
+end
+
+def fun_l14_n166()
+ fun_l15_n266
+end
+
+def fun_l14_n167()
+ fun_l15_n587
+end
+
+def fun_l14_n168()
+ fun_l15_n210
+end
+
+def fun_l14_n169()
+ fun_l15_n5
+end
+
+def fun_l14_n170()
+ fun_l15_n635
+end
+
+def fun_l14_n171()
+ fun_l15_n47
+end
+
+def fun_l14_n172()
+ fun_l15_n88
+end
+
+def fun_l14_n173()
+ fun_l15_n79
+end
+
+def fun_l14_n174()
+ fun_l15_n791
+end
+
+def fun_l14_n175()
+ fun_l15_n812
+end
+
+def fun_l14_n176()
+ fun_l15_n112
+end
+
+def fun_l14_n177()
+ fun_l15_n590
+end
+
+def fun_l14_n178()
+ fun_l15_n59
+end
+
+def fun_l14_n179()
+ fun_l15_n275
+end
+
+def fun_l14_n180()
+ fun_l15_n206
+end
+
+def fun_l14_n181()
+ fun_l15_n385
+end
+
+def fun_l14_n182()
+ fun_l15_n809
+end
+
+def fun_l14_n183()
+ fun_l15_n704
+end
+
+def fun_l14_n184()
+ fun_l15_n331
+end
+
+def fun_l14_n185()
+ fun_l15_n819
+end
+
+def fun_l14_n186()
+ fun_l15_n165
+end
+
+def fun_l14_n187()
+ fun_l15_n623
+end
+
+def fun_l14_n188()
+ fun_l15_n528
+end
+
+def fun_l14_n189()
+ fun_l15_n393
+end
+
+def fun_l14_n190()
+ fun_l15_n712
+end
+
+def fun_l14_n191()
+ fun_l15_n951
+end
+
+def fun_l14_n192()
+ fun_l15_n584
+end
+
+def fun_l14_n193()
+ fun_l15_n984
+end
+
+def fun_l14_n194()
+ fun_l15_n283
+end
+
+def fun_l14_n195()
+ fun_l15_n821
+end
+
+def fun_l14_n196()
+ fun_l15_n105
+end
+
+def fun_l14_n197()
+ fun_l15_n49
+end
+
+def fun_l14_n198()
+ fun_l15_n191
+end
+
+def fun_l14_n199()
+ fun_l15_n751
+end
+
+def fun_l14_n200()
+ fun_l15_n108
+end
+
+def fun_l14_n201()
+ fun_l15_n121
+end
+
+def fun_l14_n202()
+ fun_l15_n751
+end
+
+def fun_l14_n203()
+ fun_l15_n837
+end
+
+def fun_l14_n204()
+ fun_l15_n747
+end
+
+def fun_l14_n205()
+ fun_l15_n682
+end
+
+def fun_l14_n206()
+ fun_l15_n689
+end
+
+def fun_l14_n207()
+ fun_l15_n562
+end
+
+def fun_l14_n208()
+ fun_l15_n580
+end
+
+def fun_l14_n209()
+ fun_l15_n556
+end
+
+def fun_l14_n210()
+ fun_l15_n155
+end
+
+def fun_l14_n211()
+ fun_l15_n661
+end
+
+def fun_l14_n212()
+ fun_l15_n571
+end
+
+def fun_l14_n213()
+ fun_l15_n341
+end
+
+def fun_l14_n214()
+ fun_l15_n200
+end
+
+def fun_l14_n215()
+ fun_l15_n78
+end
+
+def fun_l14_n216()
+ fun_l15_n922
+end
+
+def fun_l14_n217()
+ fun_l15_n437
+end
+
+def fun_l14_n218()
+ fun_l15_n263
+end
+
+def fun_l14_n219()
+ fun_l15_n971
+end
+
+def fun_l14_n220()
+ fun_l15_n65
+end
+
+def fun_l14_n221()
+ fun_l15_n951
+end
+
+def fun_l14_n222()
+ fun_l15_n163
+end
+
+def fun_l14_n223()
+ fun_l15_n732
+end
+
+def fun_l14_n224()
+ fun_l15_n424
+end
+
+def fun_l14_n225()
+ fun_l15_n91
+end
+
+def fun_l14_n226()
+ fun_l15_n711
+end
+
+def fun_l14_n227()
+ fun_l15_n224
+end
+
+def fun_l14_n228()
+ fun_l15_n885
+end
+
+def fun_l14_n229()
+ fun_l15_n489
+end
+
+def fun_l14_n230()
+ fun_l15_n733
+end
+
+def fun_l14_n231()
+ fun_l15_n355
+end
+
+def fun_l14_n232()
+ fun_l15_n819
+end
+
+def fun_l14_n233()
+ fun_l15_n934
+end
+
+def fun_l14_n234()
+ fun_l15_n643
+end
+
+def fun_l14_n235()
+ fun_l15_n555
+end
+
+def fun_l14_n236()
+ fun_l15_n508
+end
+
+def fun_l14_n237()
+ fun_l15_n181
+end
+
+def fun_l14_n238()
+ fun_l15_n171
+end
+
+def fun_l14_n239()
+ fun_l15_n834
+end
+
+def fun_l14_n240()
+ fun_l15_n599
+end
+
+def fun_l14_n241()
+ fun_l15_n492
+end
+
+def fun_l14_n242()
+ fun_l15_n131
+end
+
+def fun_l14_n243()
+ fun_l15_n838
+end
+
+def fun_l14_n244()
+ fun_l15_n745
+end
+
+def fun_l14_n245()
+ fun_l15_n653
+end
+
+def fun_l14_n246()
+ fun_l15_n905
+end
+
+def fun_l14_n247()
+ fun_l15_n962
+end
+
+def fun_l14_n248()
+ fun_l15_n269
+end
+
+def fun_l14_n249()
+ fun_l15_n920
+end
+
+def fun_l14_n250()
+ fun_l15_n428
+end
+
+def fun_l14_n251()
+ fun_l15_n305
+end
+
+def fun_l14_n252()
+ fun_l15_n630
+end
+
+def fun_l14_n253()
+ fun_l15_n458
+end
+
+def fun_l14_n254()
+ fun_l15_n933
+end
+
+def fun_l14_n255()
+ fun_l15_n852
+end
+
+def fun_l14_n256()
+ fun_l15_n855
+end
+
+def fun_l14_n257()
+ fun_l15_n207
+end
+
+def fun_l14_n258()
+ fun_l15_n865
+end
+
+def fun_l14_n259()
+ fun_l15_n958
+end
+
+def fun_l14_n260()
+ fun_l15_n230
+end
+
+def fun_l14_n261()
+ fun_l15_n872
+end
+
+def fun_l14_n262()
+ fun_l15_n963
+end
+
+def fun_l14_n263()
+ fun_l15_n945
+end
+
+def fun_l14_n264()
+ fun_l15_n410
+end
+
+def fun_l14_n265()
+ fun_l15_n735
+end
+
+def fun_l14_n266()
+ fun_l15_n496
+end
+
+def fun_l14_n267()
+ fun_l15_n110
+end
+
+def fun_l14_n268()
+ fun_l15_n267
+end
+
+def fun_l14_n269()
+ fun_l15_n699
+end
+
+def fun_l14_n270()
+ fun_l15_n812
+end
+
+def fun_l14_n271()
+ fun_l15_n273
+end
+
+def fun_l14_n272()
+ fun_l15_n499
+end
+
+def fun_l14_n273()
+ fun_l15_n341
+end
+
+def fun_l14_n274()
+ fun_l15_n512
+end
+
+def fun_l14_n275()
+ fun_l15_n110
+end
+
+def fun_l14_n276()
+ fun_l15_n62
+end
+
+def fun_l14_n277()
+ fun_l15_n541
+end
+
+def fun_l14_n278()
+ fun_l15_n622
+end
+
+def fun_l14_n279()
+ fun_l15_n456
+end
+
+def fun_l14_n280()
+ fun_l15_n527
+end
+
+def fun_l14_n281()
+ fun_l15_n141
+end
+
+def fun_l14_n282()
+ fun_l15_n266
+end
+
+def fun_l14_n283()
+ fun_l15_n817
+end
+
+def fun_l14_n284()
+ fun_l15_n448
+end
+
+def fun_l14_n285()
+ fun_l15_n208
+end
+
+def fun_l14_n286()
+ fun_l15_n368
+end
+
+def fun_l14_n287()
+ fun_l15_n947
+end
+
+def fun_l14_n288()
+ fun_l15_n192
+end
+
+def fun_l14_n289()
+ fun_l15_n68
+end
+
+def fun_l14_n290()
+ fun_l15_n704
+end
+
+def fun_l14_n291()
+ fun_l15_n278
+end
+
+def fun_l14_n292()
+ fun_l15_n352
+end
+
+def fun_l14_n293()
+ fun_l15_n629
+end
+
+def fun_l14_n294()
+ fun_l15_n404
+end
+
+def fun_l14_n295()
+ fun_l15_n89
+end
+
+def fun_l14_n296()
+ fun_l15_n920
+end
+
+def fun_l14_n297()
+ fun_l15_n984
+end
+
+def fun_l14_n298()
+ fun_l15_n198
+end
+
+def fun_l14_n299()
+ fun_l15_n524
+end
+
+def fun_l14_n300()
+ fun_l15_n891
+end
+
+def fun_l14_n301()
+ fun_l15_n921
+end
+
+def fun_l14_n302()
+ fun_l15_n785
+end
+
+def fun_l14_n303()
+ fun_l15_n618
+end
+
+def fun_l14_n304()
+ fun_l15_n387
+end
+
+def fun_l14_n305()
+ fun_l15_n361
+end
+
+def fun_l14_n306()
+ fun_l15_n535
+end
+
+def fun_l14_n307()
+ fun_l15_n137
+end
+
+def fun_l14_n308()
+ fun_l15_n77
+end
+
+def fun_l14_n309()
+ fun_l15_n877
+end
+
+def fun_l14_n310()
+ fun_l15_n178
+end
+
+def fun_l14_n311()
+ fun_l15_n67
+end
+
+def fun_l14_n312()
+ fun_l15_n539
+end
+
+def fun_l14_n313()
+ fun_l15_n971
+end
+
+def fun_l14_n314()
+ fun_l15_n743
+end
+
+def fun_l14_n315()
+ fun_l15_n787
+end
+
+def fun_l14_n316()
+ fun_l15_n451
+end
+
+def fun_l14_n317()
+ fun_l15_n12
+end
+
+def fun_l14_n318()
+ fun_l15_n303
+end
+
+def fun_l14_n319()
+ fun_l15_n210
+end
+
+def fun_l14_n320()
+ fun_l15_n853
+end
+
+def fun_l14_n321()
+ fun_l15_n154
+end
+
+def fun_l14_n322()
+ fun_l15_n71
+end
+
+def fun_l14_n323()
+ fun_l15_n448
+end
+
+def fun_l14_n324()
+ fun_l15_n178
+end
+
+def fun_l14_n325()
+ fun_l15_n312
+end
+
+def fun_l14_n326()
+ fun_l15_n671
+end
+
+def fun_l14_n327()
+ fun_l15_n282
+end
+
+def fun_l14_n328()
+ fun_l15_n315
+end
+
+def fun_l14_n329()
+ fun_l15_n449
+end
+
+def fun_l14_n330()
+ fun_l15_n338
+end
+
+def fun_l14_n331()
+ fun_l15_n260
+end
+
+def fun_l14_n332()
+ fun_l15_n664
+end
+
+def fun_l14_n333()
+ fun_l15_n312
+end
+
+def fun_l14_n334()
+ fun_l15_n202
+end
+
+def fun_l14_n335()
+ fun_l15_n969
+end
+
+def fun_l14_n336()
+ fun_l15_n698
+end
+
+def fun_l14_n337()
+ fun_l15_n802
+end
+
+def fun_l14_n338()
+ fun_l15_n175
+end
+
+def fun_l14_n339()
+ fun_l15_n646
+end
+
+def fun_l14_n340()
+ fun_l15_n145
+end
+
+def fun_l14_n341()
+ fun_l15_n19
+end
+
+def fun_l14_n342()
+ fun_l15_n764
+end
+
+def fun_l14_n343()
+ fun_l15_n970
+end
+
+def fun_l14_n344()
+ fun_l15_n519
+end
+
+def fun_l14_n345()
+ fun_l15_n121
+end
+
+def fun_l14_n346()
+ fun_l15_n299
+end
+
+def fun_l14_n347()
+ fun_l15_n553
+end
+
+def fun_l14_n348()
+ fun_l15_n618
+end
+
+def fun_l14_n349()
+ fun_l15_n725
+end
+
+def fun_l14_n350()
+ fun_l15_n635
+end
+
+def fun_l14_n351()
+ fun_l15_n382
+end
+
+def fun_l14_n352()
+ fun_l15_n529
+end
+
+def fun_l14_n353()
+ fun_l15_n168
+end
+
+def fun_l14_n354()
+ fun_l15_n948
+end
+
+def fun_l14_n355()
+ fun_l15_n192
+end
+
+def fun_l14_n356()
+ fun_l15_n27
+end
+
+def fun_l14_n357()
+ fun_l15_n254
+end
+
+def fun_l14_n358()
+ fun_l15_n384
+end
+
+def fun_l14_n359()
+ fun_l15_n559
+end
+
+def fun_l14_n360()
+ fun_l15_n560
+end
+
+def fun_l14_n361()
+ fun_l15_n781
+end
+
+def fun_l14_n362()
+ fun_l15_n494
+end
+
+def fun_l14_n363()
+ fun_l15_n997
+end
+
+def fun_l14_n364()
+ fun_l15_n203
+end
+
+def fun_l14_n365()
+ fun_l15_n61
+end
+
+def fun_l14_n366()
+ fun_l15_n190
+end
+
+def fun_l14_n367()
+ fun_l15_n755
+end
+
+def fun_l14_n368()
+ fun_l15_n876
+end
+
+def fun_l14_n369()
+ fun_l15_n761
+end
+
+def fun_l14_n370()
+ fun_l15_n641
+end
+
+def fun_l14_n371()
+ fun_l15_n307
+end
+
+def fun_l14_n372()
+ fun_l15_n351
+end
+
+def fun_l14_n373()
+ fun_l15_n929
+end
+
+def fun_l14_n374()
+ fun_l15_n455
+end
+
+def fun_l14_n375()
+ fun_l15_n740
+end
+
+def fun_l14_n376()
+ fun_l15_n803
+end
+
+def fun_l14_n377()
+ fun_l15_n544
+end
+
+def fun_l14_n378()
+ fun_l15_n666
+end
+
+def fun_l14_n379()
+ fun_l15_n274
+end
+
+def fun_l14_n380()
+ fun_l15_n374
+end
+
+def fun_l14_n381()
+ fun_l15_n108
+end
+
+def fun_l14_n382()
+ fun_l15_n632
+end
+
+def fun_l14_n383()
+ fun_l15_n782
+end
+
+def fun_l14_n384()
+ fun_l15_n16
+end
+
+def fun_l14_n385()
+ fun_l15_n323
+end
+
+def fun_l14_n386()
+ fun_l15_n923
+end
+
+def fun_l14_n387()
+ fun_l15_n929
+end
+
+def fun_l14_n388()
+ fun_l15_n318
+end
+
+def fun_l14_n389()
+ fun_l15_n929
+end
+
+def fun_l14_n390()
+ fun_l15_n633
+end
+
+def fun_l14_n391()
+ fun_l15_n159
+end
+
+def fun_l14_n392()
+ fun_l15_n18
+end
+
+def fun_l14_n393()
+ fun_l15_n997
+end
+
+def fun_l14_n394()
+ fun_l15_n585
+end
+
+def fun_l14_n395()
+ fun_l15_n216
+end
+
+def fun_l14_n396()
+ fun_l15_n665
+end
+
+def fun_l14_n397()
+ fun_l15_n51
+end
+
+def fun_l14_n398()
+ fun_l15_n681
+end
+
+def fun_l14_n399()
+ fun_l15_n921
+end
+
+def fun_l14_n400()
+ fun_l15_n937
+end
+
+def fun_l14_n401()
+ fun_l15_n251
+end
+
+def fun_l14_n402()
+ fun_l15_n359
+end
+
+def fun_l14_n403()
+ fun_l15_n262
+end
+
+def fun_l14_n404()
+ fun_l15_n631
+end
+
+def fun_l14_n405()
+ fun_l15_n218
+end
+
+def fun_l14_n406()
+ fun_l15_n138
+end
+
+def fun_l14_n407()
+ fun_l15_n695
+end
+
+def fun_l14_n408()
+ fun_l15_n95
+end
+
+def fun_l14_n409()
+ fun_l15_n166
+end
+
+def fun_l14_n410()
+ fun_l15_n566
+end
+
+def fun_l14_n411()
+ fun_l15_n322
+end
+
+def fun_l14_n412()
+ fun_l15_n278
+end
+
+def fun_l14_n413()
+ fun_l15_n144
+end
+
+def fun_l14_n414()
+ fun_l15_n949
+end
+
+def fun_l14_n415()
+ fun_l15_n351
+end
+
+def fun_l14_n416()
+ fun_l15_n887
+end
+
+def fun_l14_n417()
+ fun_l15_n501
+end
+
+def fun_l14_n418()
+ fun_l15_n997
+end
+
+def fun_l14_n419()
+ fun_l15_n212
+end
+
+def fun_l14_n420()
+ fun_l15_n725
+end
+
+def fun_l14_n421()
+ fun_l15_n728
+end
+
+def fun_l14_n422()
+ fun_l15_n923
+end
+
+def fun_l14_n423()
+ fun_l15_n694
+end
+
+def fun_l14_n424()
+ fun_l15_n472
+end
+
+def fun_l14_n425()
+ fun_l15_n967
+end
+
+def fun_l14_n426()
+ fun_l15_n908
+end
+
+def fun_l14_n427()
+ fun_l15_n199
+end
+
+def fun_l14_n428()
+ fun_l15_n384
+end
+
+def fun_l14_n429()
+ fun_l15_n485
+end
+
+def fun_l14_n430()
+ fun_l15_n767
+end
+
+def fun_l14_n431()
+ fun_l15_n337
+end
+
+def fun_l14_n432()
+ fun_l15_n664
+end
+
+def fun_l14_n433()
+ fun_l15_n735
+end
+
+def fun_l14_n434()
+ fun_l15_n76
+end
+
+def fun_l14_n435()
+ fun_l15_n879
+end
+
+def fun_l14_n436()
+ fun_l15_n815
+end
+
+def fun_l14_n437()
+ fun_l15_n290
+end
+
+def fun_l14_n438()
+ fun_l15_n836
+end
+
+def fun_l14_n439()
+ fun_l15_n56
+end
+
+def fun_l14_n440()
+ fun_l15_n671
+end
+
+def fun_l14_n441()
+ fun_l15_n90
+end
+
+def fun_l14_n442()
+ fun_l15_n930
+end
+
+def fun_l14_n443()
+ fun_l15_n754
+end
+
+def fun_l14_n444()
+ fun_l15_n241
+end
+
+def fun_l14_n445()
+ fun_l15_n362
+end
+
+def fun_l14_n446()
+ fun_l15_n260
+end
+
+def fun_l14_n447()
+ fun_l15_n846
+end
+
+def fun_l14_n448()
+ fun_l15_n754
+end
+
+def fun_l14_n449()
+ fun_l15_n571
+end
+
+def fun_l14_n450()
+ fun_l15_n602
+end
+
+def fun_l14_n451()
+ fun_l15_n243
+end
+
+def fun_l14_n452()
+ fun_l15_n59
+end
+
+def fun_l14_n453()
+ fun_l15_n660
+end
+
+def fun_l14_n454()
+ fun_l15_n338
+end
+
+def fun_l14_n455()
+ fun_l15_n461
+end
+
+def fun_l14_n456()
+ fun_l15_n702
+end
+
+def fun_l14_n457()
+ fun_l15_n878
+end
+
+def fun_l14_n458()
+ fun_l15_n625
+end
+
+def fun_l14_n459()
+ fun_l15_n762
+end
+
+def fun_l14_n460()
+ fun_l15_n36
+end
+
+def fun_l14_n461()
+ fun_l15_n432
+end
+
+def fun_l14_n462()
+ fun_l15_n685
+end
+
+def fun_l14_n463()
+ fun_l15_n398
+end
+
+def fun_l14_n464()
+ fun_l15_n828
+end
+
+def fun_l14_n465()
+ fun_l15_n306
+end
+
+def fun_l14_n466()
+ fun_l15_n717
+end
+
+def fun_l14_n467()
+ fun_l15_n271
+end
+
+def fun_l14_n468()
+ fun_l15_n444
+end
+
+def fun_l14_n469()
+ fun_l15_n82
+end
+
+def fun_l14_n470()
+ fun_l15_n363
+end
+
+def fun_l14_n471()
+ fun_l15_n648
+end
+
+def fun_l14_n472()
+ fun_l15_n33
+end
+
+def fun_l14_n473()
+ fun_l15_n968
+end
+
+def fun_l14_n474()
+ fun_l15_n331
+end
+
+def fun_l14_n475()
+ fun_l15_n228
+end
+
+def fun_l14_n476()
+ fun_l15_n944
+end
+
+def fun_l14_n477()
+ fun_l15_n771
+end
+
+def fun_l14_n478()
+ fun_l15_n228
+end
+
+def fun_l14_n479()
+ fun_l15_n442
+end
+
+def fun_l14_n480()
+ fun_l15_n75
+end
+
+def fun_l14_n481()
+ fun_l15_n911
+end
+
+def fun_l14_n482()
+ fun_l15_n591
+end
+
+def fun_l14_n483()
+ fun_l15_n929
+end
+
+def fun_l14_n484()
+ fun_l15_n504
+end
+
+def fun_l14_n485()
+ fun_l15_n48
+end
+
+def fun_l14_n486()
+ fun_l15_n592
+end
+
+def fun_l14_n487()
+ fun_l15_n399
+end
+
+def fun_l14_n488()
+ fun_l15_n467
+end
+
+def fun_l14_n489()
+ fun_l15_n192
+end
+
+def fun_l14_n490()
+ fun_l15_n347
+end
+
+def fun_l14_n491()
+ fun_l15_n517
+end
+
+def fun_l14_n492()
+ fun_l15_n436
+end
+
+def fun_l14_n493()
+ fun_l15_n50
+end
+
+def fun_l14_n494()
+ fun_l15_n237
+end
+
+def fun_l14_n495()
+ fun_l15_n878
+end
+
+def fun_l14_n496()
+ fun_l15_n46
+end
+
+def fun_l14_n497()
+ fun_l15_n499
+end
+
+def fun_l14_n498()
+ fun_l15_n779
+end
+
+def fun_l14_n499()
+ fun_l15_n763
+end
+
+def fun_l14_n500()
+ fun_l15_n195
+end
+
+def fun_l14_n501()
+ fun_l15_n868
+end
+
+def fun_l14_n502()
+ fun_l15_n83
+end
+
+def fun_l14_n503()
+ fun_l15_n386
+end
+
+def fun_l14_n504()
+ fun_l15_n907
+end
+
+def fun_l14_n505()
+ fun_l15_n889
+end
+
+def fun_l14_n506()
+ fun_l15_n314
+end
+
+def fun_l14_n507()
+ fun_l15_n24
+end
+
+def fun_l14_n508()
+ fun_l15_n122
+end
+
+def fun_l14_n509()
+ fun_l15_n772
+end
+
+def fun_l14_n510()
+ fun_l15_n204
+end
+
+def fun_l14_n511()
+ fun_l15_n646
+end
+
+def fun_l14_n512()
+ fun_l15_n105
+end
+
+def fun_l14_n513()
+ fun_l15_n393
+end
+
+def fun_l14_n514()
+ fun_l15_n533
+end
+
+def fun_l14_n515()
+ fun_l15_n572
+end
+
+def fun_l14_n516()
+ fun_l15_n360
+end
+
+def fun_l14_n517()
+ fun_l15_n241
+end
+
+def fun_l14_n518()
+ fun_l15_n962
+end
+
+def fun_l14_n519()
+ fun_l15_n771
+end
+
+def fun_l14_n520()
+ fun_l15_n379
+end
+
+def fun_l14_n521()
+ fun_l15_n749
+end
+
+def fun_l14_n522()
+ fun_l15_n601
+end
+
+def fun_l14_n523()
+ fun_l15_n0
+end
+
+def fun_l14_n524()
+ fun_l15_n345
+end
+
+def fun_l14_n525()
+ fun_l15_n896
+end
+
+def fun_l14_n526()
+ fun_l15_n612
+end
+
+def fun_l14_n527()
+ fun_l15_n897
+end
+
+def fun_l14_n528()
+ fun_l15_n760
+end
+
+def fun_l14_n529()
+ fun_l15_n283
+end
+
+def fun_l14_n530()
+ fun_l15_n269
+end
+
+def fun_l14_n531()
+ fun_l15_n967
+end
+
+def fun_l14_n532()
+ fun_l15_n399
+end
+
+def fun_l14_n533()
+ fun_l15_n343
+end
+
+def fun_l14_n534()
+ fun_l15_n590
+end
+
+def fun_l14_n535()
+ fun_l15_n37
+end
+
+def fun_l14_n536()
+ fun_l15_n882
+end
+
+def fun_l14_n537()
+ fun_l15_n275
+end
+
+def fun_l14_n538()
+ fun_l15_n169
+end
+
+def fun_l14_n539()
+ fun_l15_n474
+end
+
+def fun_l14_n540()
+ fun_l15_n993
+end
+
+def fun_l14_n541()
+ fun_l15_n872
+end
+
+def fun_l14_n542()
+ fun_l15_n650
+end
+
+def fun_l14_n543()
+ fun_l15_n238
+end
+
+def fun_l14_n544()
+ fun_l15_n80
+end
+
+def fun_l14_n545()
+ fun_l15_n585
+end
+
+def fun_l14_n546()
+ fun_l15_n961
+end
+
+def fun_l14_n547()
+ fun_l15_n574
+end
+
+def fun_l14_n548()
+ fun_l15_n447
+end
+
+def fun_l14_n549()
+ fun_l15_n405
+end
+
+def fun_l14_n550()
+ fun_l15_n347
+end
+
+def fun_l14_n551()
+ fun_l15_n326
+end
+
+def fun_l14_n552()
+ fun_l15_n679
+end
+
+def fun_l14_n553()
+ fun_l15_n848
+end
+
+def fun_l14_n554()
+ fun_l15_n391
+end
+
+def fun_l14_n555()
+ fun_l15_n293
+end
+
+def fun_l14_n556()
+ fun_l15_n997
+end
+
+def fun_l14_n557()
+ fun_l15_n247
+end
+
+def fun_l14_n558()
+ fun_l15_n138
+end
+
+def fun_l14_n559()
+ fun_l15_n737
+end
+
+def fun_l14_n560()
+ fun_l15_n764
+end
+
+def fun_l14_n561()
+ fun_l15_n541
+end
+
+def fun_l14_n562()
+ fun_l15_n373
+end
+
+def fun_l14_n563()
+ fun_l15_n562
+end
+
+def fun_l14_n564()
+ fun_l15_n626
+end
+
+def fun_l14_n565()
+ fun_l15_n601
+end
+
+def fun_l14_n566()
+ fun_l15_n547
+end
+
+def fun_l14_n567()
+ fun_l15_n226
+end
+
+def fun_l14_n568()
+ fun_l15_n182
+end
+
+def fun_l14_n569()
+ fun_l15_n647
+end
+
+def fun_l14_n570()
+ fun_l15_n912
+end
+
+def fun_l14_n571()
+ fun_l15_n33
+end
+
+def fun_l14_n572()
+ fun_l15_n397
+end
+
+def fun_l14_n573()
+ fun_l15_n413
+end
+
+def fun_l14_n574()
+ fun_l15_n714
+end
+
+def fun_l14_n575()
+ fun_l15_n930
+end
+
+def fun_l14_n576()
+ fun_l15_n35
+end
+
+def fun_l14_n577()
+ fun_l15_n868
+end
+
+def fun_l14_n578()
+ fun_l15_n606
+end
+
+def fun_l14_n579()
+ fun_l15_n516
+end
+
+def fun_l14_n580()
+ fun_l15_n127
+end
+
+def fun_l14_n581()
+ fun_l15_n689
+end
+
+def fun_l14_n582()
+ fun_l15_n346
+end
+
+def fun_l14_n583()
+ fun_l15_n352
+end
+
+def fun_l14_n584()
+ fun_l15_n810
+end
+
+def fun_l14_n585()
+ fun_l15_n38
+end
+
+def fun_l14_n586()
+ fun_l15_n751
+end
+
+def fun_l14_n587()
+ fun_l15_n888
+end
+
+def fun_l14_n588()
+ fun_l15_n938
+end
+
+def fun_l14_n589()
+ fun_l15_n941
+end
+
+def fun_l14_n590()
+ fun_l15_n768
+end
+
+def fun_l14_n591()
+ fun_l15_n544
+end
+
+def fun_l14_n592()
+ fun_l15_n393
+end
+
+def fun_l14_n593()
+ fun_l15_n74
+end
+
+def fun_l14_n594()
+ fun_l15_n812
+end
+
+def fun_l14_n595()
+ fun_l15_n94
+end
+
+def fun_l14_n596()
+ fun_l15_n122
+end
+
+def fun_l14_n597()
+ fun_l15_n552
+end
+
+def fun_l14_n598()
+ fun_l15_n586
+end
+
+def fun_l14_n599()
+ fun_l15_n100
+end
+
+def fun_l14_n600()
+ fun_l15_n338
+end
+
+def fun_l14_n601()
+ fun_l15_n627
+end
+
+def fun_l14_n602()
+ fun_l15_n445
+end
+
+def fun_l14_n603()
+ fun_l15_n734
+end
+
+def fun_l14_n604()
+ fun_l15_n852
+end
+
+def fun_l14_n605()
+ fun_l15_n908
+end
+
+def fun_l14_n606()
+ fun_l15_n736
+end
+
+def fun_l14_n607()
+ fun_l15_n590
+end
+
+def fun_l14_n608()
+ fun_l15_n988
+end
+
+def fun_l14_n609()
+ fun_l15_n241
+end
+
+def fun_l14_n610()
+ fun_l15_n375
+end
+
+def fun_l14_n611()
+ fun_l15_n25
+end
+
+def fun_l14_n612()
+ fun_l15_n176
+end
+
+def fun_l14_n613()
+ fun_l15_n375
+end
+
+def fun_l14_n614()
+ fun_l15_n248
+end
+
+def fun_l14_n615()
+ fun_l15_n393
+end
+
+def fun_l14_n616()
+ fun_l15_n2
+end
+
+def fun_l14_n617()
+ fun_l15_n964
+end
+
+def fun_l14_n618()
+ fun_l15_n581
+end
+
+def fun_l14_n619()
+ fun_l15_n190
+end
+
+def fun_l14_n620()
+ fun_l15_n847
+end
+
+def fun_l14_n621()
+ fun_l15_n748
+end
+
+def fun_l14_n622()
+ fun_l15_n27
+end
+
+def fun_l14_n623()
+ fun_l15_n984
+end
+
+def fun_l14_n624()
+ fun_l15_n728
+end
+
+def fun_l14_n625()
+ fun_l15_n740
+end
+
+def fun_l14_n626()
+ fun_l15_n480
+end
+
+def fun_l14_n627()
+ fun_l15_n175
+end
+
+def fun_l14_n628()
+ fun_l15_n152
+end
+
+def fun_l14_n629()
+ fun_l15_n880
+end
+
+def fun_l14_n630()
+ fun_l15_n337
+end
+
+def fun_l14_n631()
+ fun_l15_n862
+end
+
+def fun_l14_n632()
+ fun_l15_n367
+end
+
+def fun_l14_n633()
+ fun_l15_n768
+end
+
+def fun_l14_n634()
+ fun_l15_n178
+end
+
+def fun_l14_n635()
+ fun_l15_n693
+end
+
+def fun_l14_n636()
+ fun_l15_n176
+end
+
+def fun_l14_n637()
+ fun_l15_n348
+end
+
+def fun_l14_n638()
+ fun_l15_n31
+end
+
+def fun_l14_n639()
+ fun_l15_n601
+end
+
+def fun_l14_n640()
+ fun_l15_n824
+end
+
+def fun_l14_n641()
+ fun_l15_n920
+end
+
+def fun_l14_n642()
+ fun_l15_n464
+end
+
+def fun_l14_n643()
+ fun_l15_n747
+end
+
+def fun_l14_n644()
+ fun_l15_n378
+end
+
+def fun_l14_n645()
+ fun_l15_n88
+end
+
+def fun_l14_n646()
+ fun_l15_n267
+end
+
+def fun_l14_n647()
+ fun_l15_n805
+end
+
+def fun_l14_n648()
+ fun_l15_n793
+end
+
+def fun_l14_n649()
+ fun_l15_n135
+end
+
+def fun_l14_n650()
+ fun_l15_n51
+end
+
+def fun_l14_n651()
+ fun_l15_n500
+end
+
+def fun_l14_n652()
+ fun_l15_n726
+end
+
+def fun_l14_n653()
+ fun_l15_n736
+end
+
+def fun_l14_n654()
+ fun_l15_n691
+end
+
+def fun_l14_n655()
+ fun_l15_n718
+end
+
+def fun_l14_n656()
+ fun_l15_n456
+end
+
+def fun_l14_n657()
+ fun_l15_n868
+end
+
+def fun_l14_n658()
+ fun_l15_n818
+end
+
+def fun_l14_n659()
+ fun_l15_n693
+end
+
+def fun_l14_n660()
+ fun_l15_n117
+end
+
+def fun_l14_n661()
+ fun_l15_n872
+end
+
+def fun_l14_n662()
+ fun_l15_n312
+end
+
+def fun_l14_n663()
+ fun_l15_n538
+end
+
+def fun_l14_n664()
+ fun_l15_n449
+end
+
+def fun_l14_n665()
+ fun_l15_n954
+end
+
+def fun_l14_n666()
+ fun_l15_n163
+end
+
+def fun_l14_n667()
+ fun_l15_n291
+end
+
+def fun_l14_n668()
+ fun_l15_n17
+end
+
+def fun_l14_n669()
+ fun_l15_n189
+end
+
+def fun_l14_n670()
+ fun_l15_n25
+end
+
+def fun_l14_n671()
+ fun_l15_n381
+end
+
+def fun_l14_n672()
+ fun_l15_n66
+end
+
+def fun_l14_n673()
+ fun_l15_n28
+end
+
+def fun_l14_n674()
+ fun_l15_n79
+end
+
+def fun_l14_n675()
+ fun_l15_n237
+end
+
+def fun_l14_n676()
+ fun_l15_n301
+end
+
+def fun_l14_n677()
+ fun_l15_n876
+end
+
+def fun_l14_n678()
+ fun_l15_n573
+end
+
+def fun_l14_n679()
+ fun_l15_n758
+end
+
+def fun_l14_n680()
+ fun_l15_n152
+end
+
+def fun_l14_n681()
+ fun_l15_n597
+end
+
+def fun_l14_n682()
+ fun_l15_n872
+end
+
+def fun_l14_n683()
+ fun_l15_n329
+end
+
+def fun_l14_n684()
+ fun_l15_n537
+end
+
+def fun_l14_n685()
+ fun_l15_n379
+end
+
+def fun_l14_n686()
+ fun_l15_n748
+end
+
+def fun_l14_n687()
+ fun_l15_n407
+end
+
+def fun_l14_n688()
+ fun_l15_n762
+end
+
+def fun_l14_n689()
+ fun_l15_n792
+end
+
+def fun_l14_n690()
+ fun_l15_n179
+end
+
+def fun_l14_n691()
+ fun_l15_n855
+end
+
+def fun_l14_n692()
+ fun_l15_n635
+end
+
+def fun_l14_n693()
+ fun_l15_n807
+end
+
+def fun_l14_n694()
+ fun_l15_n957
+end
+
+def fun_l14_n695()
+ fun_l15_n130
+end
+
+def fun_l14_n696()
+ fun_l15_n183
+end
+
+def fun_l14_n697()
+ fun_l15_n881
+end
+
+def fun_l14_n698()
+ fun_l15_n744
+end
+
+def fun_l14_n699()
+ fun_l15_n360
+end
+
+def fun_l14_n700()
+ fun_l15_n661
+end
+
+def fun_l14_n701()
+ fun_l15_n136
+end
+
+def fun_l14_n702()
+ fun_l15_n868
+end
+
+def fun_l14_n703()
+ fun_l15_n718
+end
+
+def fun_l14_n704()
+ fun_l15_n253
+end
+
+def fun_l14_n705()
+ fun_l15_n272
+end
+
+def fun_l14_n706()
+ fun_l15_n474
+end
+
+def fun_l14_n707()
+ fun_l15_n457
+end
+
+def fun_l14_n708()
+ fun_l15_n836
+end
+
+def fun_l14_n709()
+ fun_l15_n141
+end
+
+def fun_l14_n710()
+ fun_l15_n80
+end
+
+def fun_l14_n711()
+ fun_l15_n538
+end
+
+def fun_l14_n712()
+ fun_l15_n68
+end
+
+def fun_l14_n713()
+ fun_l15_n603
+end
+
+def fun_l14_n714()
+ fun_l15_n604
+end
+
+def fun_l14_n715()
+ fun_l15_n415
+end
+
+def fun_l14_n716()
+ fun_l15_n269
+end
+
+def fun_l14_n717()
+ fun_l15_n836
+end
+
+def fun_l14_n718()
+ fun_l15_n599
+end
+
+def fun_l14_n719()
+ fun_l15_n373
+end
+
+def fun_l14_n720()
+ fun_l15_n256
+end
+
+def fun_l14_n721()
+ fun_l15_n18
+end
+
+def fun_l14_n722()
+ fun_l15_n719
+end
+
+def fun_l14_n723()
+ fun_l15_n994
+end
+
+def fun_l14_n724()
+ fun_l15_n361
+end
+
+def fun_l14_n725()
+ fun_l15_n789
+end
+
+def fun_l14_n726()
+ fun_l15_n453
+end
+
+def fun_l14_n727()
+ fun_l15_n950
+end
+
+def fun_l14_n728()
+ fun_l15_n410
+end
+
+def fun_l14_n729()
+ fun_l15_n678
+end
+
+def fun_l14_n730()
+ fun_l15_n948
+end
+
+def fun_l14_n731()
+ fun_l15_n964
+end
+
+def fun_l14_n732()
+ fun_l15_n199
+end
+
+def fun_l14_n733()
+ fun_l15_n812
+end
+
+def fun_l14_n734()
+ fun_l15_n983
+end
+
+def fun_l14_n735()
+ fun_l15_n550
+end
+
+def fun_l14_n736()
+ fun_l15_n776
+end
+
+def fun_l14_n737()
+ fun_l15_n510
+end
+
+def fun_l14_n738()
+ fun_l15_n959
+end
+
+def fun_l14_n739()
+ fun_l15_n537
+end
+
+def fun_l14_n740()
+ fun_l15_n717
+end
+
+def fun_l14_n741()
+ fun_l15_n437
+end
+
+def fun_l14_n742()
+ fun_l15_n364
+end
+
+def fun_l14_n743()
+ fun_l15_n785
+end
+
+def fun_l14_n744()
+ fun_l15_n658
+end
+
+def fun_l14_n745()
+ fun_l15_n462
+end
+
+def fun_l14_n746()
+ fun_l15_n263
+end
+
+def fun_l14_n747()
+ fun_l15_n657
+end
+
+def fun_l14_n748()
+ fun_l15_n395
+end
+
+def fun_l14_n749()
+ fun_l15_n852
+end
+
+def fun_l14_n750()
+ fun_l15_n809
+end
+
+def fun_l14_n751()
+ fun_l15_n959
+end
+
+def fun_l14_n752()
+ fun_l15_n547
+end
+
+def fun_l14_n753()
+ fun_l15_n719
+end
+
+def fun_l14_n754()
+ fun_l15_n118
+end
+
+def fun_l14_n755()
+ fun_l15_n503
+end
+
+def fun_l14_n756()
+ fun_l15_n112
+end
+
+def fun_l14_n757()
+ fun_l15_n39
+end
+
+def fun_l14_n758()
+ fun_l15_n12
+end
+
+def fun_l14_n759()
+ fun_l15_n692
+end
+
+def fun_l14_n760()
+ fun_l15_n276
+end
+
+def fun_l14_n761()
+ fun_l15_n771
+end
+
+def fun_l14_n762()
+ fun_l15_n643
+end
+
+def fun_l14_n763()
+ fun_l15_n820
+end
+
+def fun_l14_n764()
+ fun_l15_n956
+end
+
+def fun_l14_n765()
+ fun_l15_n169
+end
+
+def fun_l14_n766()
+ fun_l15_n558
+end
+
+def fun_l14_n767()
+ fun_l15_n106
+end
+
+def fun_l14_n768()
+ fun_l15_n813
+end
+
+def fun_l14_n769()
+ fun_l15_n65
+end
+
+def fun_l14_n770()
+ fun_l15_n214
+end
+
+def fun_l14_n771()
+ fun_l15_n264
+end
+
+def fun_l14_n772()
+ fun_l15_n687
+end
+
+def fun_l14_n773()
+ fun_l15_n8
+end
+
+def fun_l14_n774()
+ fun_l15_n703
+end
+
+def fun_l14_n775()
+ fun_l15_n971
+end
+
+def fun_l14_n776()
+ fun_l15_n144
+end
+
+def fun_l14_n777()
+ fun_l15_n542
+end
+
+def fun_l14_n778()
+ fun_l15_n57
+end
+
+def fun_l14_n779()
+ fun_l15_n772
+end
+
+def fun_l14_n780()
+ fun_l15_n347
+end
+
+def fun_l14_n781()
+ fun_l15_n895
+end
+
+def fun_l14_n782()
+ fun_l15_n547
+end
+
+def fun_l14_n783()
+ fun_l15_n254
+end
+
+def fun_l14_n784()
+ fun_l15_n358
+end
+
+def fun_l14_n785()
+ fun_l15_n861
+end
+
+def fun_l14_n786()
+ fun_l15_n169
+end
+
+def fun_l14_n787()
+ fun_l15_n607
+end
+
+def fun_l14_n788()
+ fun_l15_n909
+end
+
+def fun_l14_n789()
+ fun_l15_n796
+end
+
+def fun_l14_n790()
+ fun_l15_n414
+end
+
+def fun_l14_n791()
+ fun_l15_n575
+end
+
+def fun_l14_n792()
+ fun_l15_n115
+end
+
+def fun_l14_n793()
+ fun_l15_n289
+end
+
+def fun_l14_n794()
+ fun_l15_n285
+end
+
+def fun_l14_n795()
+ fun_l15_n563
+end
+
+def fun_l14_n796()
+ fun_l15_n78
+end
+
+def fun_l14_n797()
+ fun_l15_n913
+end
+
+def fun_l14_n798()
+ fun_l15_n852
+end
+
+def fun_l14_n799()
+ fun_l15_n779
+end
+
+def fun_l14_n800()
+ fun_l15_n301
+end
+
+def fun_l14_n801()
+ fun_l15_n180
+end
+
+def fun_l14_n802()
+ fun_l15_n618
+end
+
+def fun_l14_n803()
+ fun_l15_n48
+end
+
+def fun_l14_n804()
+ fun_l15_n839
+end
+
+def fun_l14_n805()
+ fun_l15_n608
+end
+
+def fun_l14_n806()
+ fun_l15_n408
+end
+
+def fun_l14_n807()
+ fun_l15_n23
+end
+
+def fun_l14_n808()
+ fun_l15_n723
+end
+
+def fun_l14_n809()
+ fun_l15_n849
+end
+
+def fun_l14_n810()
+ fun_l15_n112
+end
+
+def fun_l14_n811()
+ fun_l15_n801
+end
+
+def fun_l14_n812()
+ fun_l15_n905
+end
+
+def fun_l14_n813()
+ fun_l15_n40
+end
+
+def fun_l14_n814()
+ fun_l15_n628
+end
+
+def fun_l14_n815()
+ fun_l15_n761
+end
+
+def fun_l14_n816()
+ fun_l15_n631
+end
+
+def fun_l14_n817()
+ fun_l15_n565
+end
+
+def fun_l14_n818()
+ fun_l15_n985
+end
+
+def fun_l14_n819()
+ fun_l15_n408
+end
+
+def fun_l14_n820()
+ fun_l15_n173
+end
+
+def fun_l14_n821()
+ fun_l15_n508
+end
+
+def fun_l14_n822()
+ fun_l15_n641
+end
+
+def fun_l14_n823()
+ fun_l15_n348
+end
+
+def fun_l14_n824()
+ fun_l15_n988
+end
+
+def fun_l14_n825()
+ fun_l15_n790
+end
+
+def fun_l14_n826()
+ fun_l15_n915
+end
+
+def fun_l14_n827()
+ fun_l15_n727
+end
+
+def fun_l14_n828()
+ fun_l15_n613
+end
+
+def fun_l14_n829()
+ fun_l15_n21
+end
+
+def fun_l14_n830()
+ fun_l15_n533
+end
+
+def fun_l14_n831()
+ fun_l15_n904
+end
+
+def fun_l14_n832()
+ fun_l15_n586
+end
+
+def fun_l14_n833()
+ fun_l15_n794
+end
+
+def fun_l14_n834()
+ fun_l15_n475
+end
+
+def fun_l14_n835()
+ fun_l15_n14
+end
+
+def fun_l14_n836()
+ fun_l15_n69
+end
+
+def fun_l14_n837()
+ fun_l15_n850
+end
+
+def fun_l14_n838()
+ fun_l15_n426
+end
+
+def fun_l14_n839()
+ fun_l15_n552
+end
+
+def fun_l14_n840()
+ fun_l15_n968
+end
+
+def fun_l14_n841()
+ fun_l15_n305
+end
+
+def fun_l14_n842()
+ fun_l15_n865
+end
+
+def fun_l14_n843()
+ fun_l15_n190
+end
+
+def fun_l14_n844()
+ fun_l15_n610
+end
+
+def fun_l14_n845()
+ fun_l15_n478
+end
+
+def fun_l14_n846()
+ fun_l15_n640
+end
+
+def fun_l14_n847()
+ fun_l15_n294
+end
+
+def fun_l14_n848()
+ fun_l15_n493
+end
+
+def fun_l14_n849()
+ fun_l15_n580
+end
+
+def fun_l14_n850()
+ fun_l15_n173
+end
+
+def fun_l14_n851()
+ fun_l15_n134
+end
+
+def fun_l14_n852()
+ fun_l15_n352
+end
+
+def fun_l14_n853()
+ fun_l15_n738
+end
+
+def fun_l14_n854()
+ fun_l15_n289
+end
+
+def fun_l14_n855()
+ fun_l15_n44
+end
+
+def fun_l14_n856()
+ fun_l15_n200
+end
+
+def fun_l14_n857()
+ fun_l15_n584
+end
+
+def fun_l14_n858()
+ fun_l15_n787
+end
+
+def fun_l14_n859()
+ fun_l15_n901
+end
+
+def fun_l14_n860()
+ fun_l15_n103
+end
+
+def fun_l14_n861()
+ fun_l15_n628
+end
+
+def fun_l14_n862()
+ fun_l15_n521
+end
+
+def fun_l14_n863()
+ fun_l15_n465
+end
+
+def fun_l14_n864()
+ fun_l15_n649
+end
+
+def fun_l14_n865()
+ fun_l15_n60
+end
+
+def fun_l14_n866()
+ fun_l15_n567
+end
+
+def fun_l14_n867()
+ fun_l15_n775
+end
+
+def fun_l14_n868()
+ fun_l15_n333
+end
+
+def fun_l14_n869()
+ fun_l15_n791
+end
+
+def fun_l14_n870()
+ fun_l15_n401
+end
+
+def fun_l14_n871()
+ fun_l15_n289
+end
+
+def fun_l14_n872()
+ fun_l15_n376
+end
+
+def fun_l14_n873()
+ fun_l15_n825
+end
+
+def fun_l14_n874()
+ fun_l15_n233
+end
+
+def fun_l14_n875()
+ fun_l15_n742
+end
+
+def fun_l14_n876()
+ fun_l15_n308
+end
+
+def fun_l14_n877()
+ fun_l15_n793
+end
+
+def fun_l14_n878()
+ fun_l15_n937
+end
+
+def fun_l14_n879()
+ fun_l15_n469
+end
+
+def fun_l14_n880()
+ fun_l15_n129
+end
+
+def fun_l14_n881()
+ fun_l15_n221
+end
+
+def fun_l14_n882()
+ fun_l15_n900
+end
+
+def fun_l14_n883()
+ fun_l15_n548
+end
+
+def fun_l14_n884()
+ fun_l15_n782
+end
+
+def fun_l14_n885()
+ fun_l15_n99
+end
+
+def fun_l14_n886()
+ fun_l15_n33
+end
+
+def fun_l14_n887()
+ fun_l15_n139
+end
+
+def fun_l14_n888()
+ fun_l15_n832
+end
+
+def fun_l14_n889()
+ fun_l15_n24
+end
+
+def fun_l14_n890()
+ fun_l15_n342
+end
+
+def fun_l14_n891()
+ fun_l15_n329
+end
+
+def fun_l14_n892()
+ fun_l15_n706
+end
+
+def fun_l14_n893()
+ fun_l15_n873
+end
+
+def fun_l14_n894()
+ fun_l15_n776
+end
+
+def fun_l14_n895()
+ fun_l15_n799
+end
+
+def fun_l14_n896()
+ fun_l15_n560
+end
+
+def fun_l14_n897()
+ fun_l15_n372
+end
+
+def fun_l14_n898()
+ fun_l15_n370
+end
+
+def fun_l14_n899()
+ fun_l15_n385
+end
+
+def fun_l14_n900()
+ fun_l15_n648
+end
+
+def fun_l14_n901()
+ fun_l15_n376
+end
+
+def fun_l14_n902()
+ fun_l15_n527
+end
+
+def fun_l14_n903()
+ fun_l15_n190
+end
+
+def fun_l14_n904()
+ fun_l15_n633
+end
+
+def fun_l14_n905()
+ fun_l15_n684
+end
+
+def fun_l14_n906()
+ fun_l15_n8
+end
+
+def fun_l14_n907()
+ fun_l15_n814
+end
+
+def fun_l14_n908()
+ fun_l15_n50
+end
+
+def fun_l14_n909()
+ fun_l15_n646
+end
+
+def fun_l14_n910()
+ fun_l15_n442
+end
+
+def fun_l14_n911()
+ fun_l15_n514
+end
+
+def fun_l14_n912()
+ fun_l15_n137
+end
+
+def fun_l14_n913()
+ fun_l15_n126
+end
+
+def fun_l14_n914()
+ fun_l15_n266
+end
+
+def fun_l14_n915()
+ fun_l15_n479
+end
+
+def fun_l14_n916()
+ fun_l15_n985
+end
+
+def fun_l14_n917()
+ fun_l15_n88
+end
+
+def fun_l14_n918()
+ fun_l15_n438
+end
+
+def fun_l14_n919()
+ fun_l15_n347
+end
+
+def fun_l14_n920()
+ fun_l15_n215
+end
+
+def fun_l14_n921()
+ fun_l15_n220
+end
+
+def fun_l14_n922()
+ fun_l15_n507
+end
+
+def fun_l14_n923()
+ fun_l15_n501
+end
+
+def fun_l14_n924()
+ fun_l15_n955
+end
+
+def fun_l14_n925()
+ fun_l15_n59
+end
+
+def fun_l14_n926()
+ fun_l15_n850
+end
+
+def fun_l14_n927()
+ fun_l15_n447
+end
+
+def fun_l14_n928()
+ fun_l15_n298
+end
+
+def fun_l14_n929()
+ fun_l15_n173
+end
+
+def fun_l14_n930()
+ fun_l15_n216
+end
+
+def fun_l14_n931()
+ fun_l15_n594
+end
+
+def fun_l14_n932()
+ fun_l15_n662
+end
+
+def fun_l14_n933()
+ fun_l15_n818
+end
+
+def fun_l14_n934()
+ fun_l15_n783
+end
+
+def fun_l14_n935()
+ fun_l15_n776
+end
+
+def fun_l14_n936()
+ fun_l15_n570
+end
+
+def fun_l14_n937()
+ fun_l15_n495
+end
+
+def fun_l14_n938()
+ fun_l15_n139
+end
+
+def fun_l14_n939()
+ fun_l15_n657
+end
+
+def fun_l14_n940()
+ fun_l15_n773
+end
+
+def fun_l14_n941()
+ fun_l15_n228
+end
+
+def fun_l14_n942()
+ fun_l15_n912
+end
+
+def fun_l14_n943()
+ fun_l15_n837
+end
+
+def fun_l14_n944()
+ fun_l15_n925
+end
+
+def fun_l14_n945()
+ fun_l15_n247
+end
+
+def fun_l14_n946()
+ fun_l15_n890
+end
+
+def fun_l14_n947()
+ fun_l15_n12
+end
+
+def fun_l14_n948()
+ fun_l15_n196
+end
+
+def fun_l14_n949()
+ fun_l15_n887
+end
+
+def fun_l14_n950()
+ fun_l15_n0
+end
+
+def fun_l14_n951()
+ fun_l15_n475
+end
+
+def fun_l14_n952()
+ fun_l15_n548
+end
+
+def fun_l14_n953()
+ fun_l15_n184
+end
+
+def fun_l14_n954()
+ fun_l15_n89
+end
+
+def fun_l14_n955()
+ fun_l15_n604
+end
+
+def fun_l14_n956()
+ fun_l15_n375
+end
+
+def fun_l14_n957()
+ fun_l15_n222
+end
+
+def fun_l14_n958()
+ fun_l15_n629
+end
+
+def fun_l14_n959()
+ fun_l15_n371
+end
+
+def fun_l14_n960()
+ fun_l15_n233
+end
+
+def fun_l14_n961()
+ fun_l15_n268
+end
+
+def fun_l14_n962()
+ fun_l15_n43
+end
+
+def fun_l14_n963()
+ fun_l15_n824
+end
+
+def fun_l14_n964()
+ fun_l15_n574
+end
+
+def fun_l14_n965()
+ fun_l15_n617
+end
+
+def fun_l14_n966()
+ fun_l15_n959
+end
+
+def fun_l14_n967()
+ fun_l15_n757
+end
+
+def fun_l14_n968()
+ fun_l15_n76
+end
+
+def fun_l14_n969()
+ fun_l15_n312
+end
+
+def fun_l14_n970()
+ fun_l15_n895
+end
+
+def fun_l14_n971()
+ fun_l15_n356
+end
+
+def fun_l14_n972()
+ fun_l15_n938
+end
+
+def fun_l14_n973()
+ fun_l15_n233
+end
+
+def fun_l14_n974()
+ fun_l15_n723
+end
+
+def fun_l14_n975()
+ fun_l15_n102
+end
+
+def fun_l14_n976()
+ fun_l15_n8
+end
+
+def fun_l14_n977()
+ fun_l15_n840
+end
+
+def fun_l14_n978()
+ fun_l15_n539
+end
+
+def fun_l14_n979()
+ fun_l15_n936
+end
+
+def fun_l14_n980()
+ fun_l15_n7
+end
+
+def fun_l14_n981()
+ fun_l15_n259
+end
+
+def fun_l14_n982()
+ fun_l15_n680
+end
+
+def fun_l14_n983()
+ fun_l15_n16
+end
+
+def fun_l14_n984()
+ fun_l15_n278
+end
+
+def fun_l14_n985()
+ fun_l15_n951
+end
+
+def fun_l14_n986()
+ fun_l15_n940
+end
+
+def fun_l14_n987()
+ fun_l15_n463
+end
+
+def fun_l14_n988()
+ fun_l15_n54
+end
+
+def fun_l14_n989()
+ fun_l15_n117
+end
+
+def fun_l14_n990()
+ fun_l15_n342
+end
+
+def fun_l14_n991()
+ fun_l15_n345
+end
+
+def fun_l14_n992()
+ fun_l15_n135
+end
+
+def fun_l14_n993()
+ fun_l15_n397
+end
+
+def fun_l14_n994()
+ fun_l15_n406
+end
+
+def fun_l14_n995()
+ fun_l15_n687
+end
+
+def fun_l14_n996()
+ fun_l15_n506
+end
+
+def fun_l14_n997()
+ fun_l15_n406
+end
+
+def fun_l14_n998()
+ fun_l15_n305
+end
+
+def fun_l14_n999()
+ fun_l15_n619
+end
+
+def fun_l15_n0()
+ fun_l16_n214
+end
+
+def fun_l15_n1()
+ fun_l16_n640
+end
+
+def fun_l15_n2()
+ fun_l16_n129
+end
+
+def fun_l15_n3()
+ fun_l16_n883
+end
+
+def fun_l15_n4()
+ fun_l16_n253
+end
+
+def fun_l15_n5()
+ fun_l16_n426
+end
+
+def fun_l15_n6()
+ fun_l16_n969
+end
+
+def fun_l15_n7()
+ fun_l16_n728
+end
+
+def fun_l15_n8()
+ fun_l16_n30
+end
+
+def fun_l15_n9()
+ fun_l16_n337
+end
+
+def fun_l15_n10()
+ fun_l16_n601
+end
+
+def fun_l15_n11()
+ fun_l16_n736
+end
+
+def fun_l15_n12()
+ fun_l16_n905
+end
+
+def fun_l15_n13()
+ fun_l16_n303
+end
+
+def fun_l15_n14()
+ fun_l16_n778
+end
+
+def fun_l15_n15()
+ fun_l16_n92
+end
+
+def fun_l15_n16()
+ fun_l16_n184
+end
+
+def fun_l15_n17()
+ fun_l16_n196
+end
+
+def fun_l15_n18()
+ fun_l16_n68
+end
+
+def fun_l15_n19()
+ fun_l16_n941
+end
+
+def fun_l15_n20()
+ fun_l16_n374
+end
+
+def fun_l15_n21()
+ fun_l16_n680
+end
+
+def fun_l15_n22()
+ fun_l16_n424
+end
+
+def fun_l15_n23()
+ fun_l16_n701
+end
+
+def fun_l15_n24()
+ fun_l16_n211
+end
+
+def fun_l15_n25()
+ fun_l16_n944
+end
+
+def fun_l15_n26()
+ fun_l16_n112
+end
+
+def fun_l15_n27()
+ fun_l16_n219
+end
+
+def fun_l15_n28()
+ fun_l16_n917
+end
+
+def fun_l15_n29()
+ fun_l16_n1
+end
+
+def fun_l15_n30()
+ fun_l16_n178
+end
+
+def fun_l15_n31()
+ fun_l16_n978
+end
+
+def fun_l15_n32()
+ fun_l16_n852
+end
+
+def fun_l15_n33()
+ fun_l16_n633
+end
+
+def fun_l15_n34()
+ fun_l16_n373
+end
+
+def fun_l15_n35()
+ fun_l16_n766
+end
+
+def fun_l15_n36()
+ fun_l16_n324
+end
+
+def fun_l15_n37()
+ fun_l16_n600
+end
+
+def fun_l15_n38()
+ fun_l16_n835
+end
+
+def fun_l15_n39()
+ fun_l16_n518
+end
+
+def fun_l15_n40()
+ fun_l16_n916
+end
+
+def fun_l15_n41()
+ fun_l16_n557
+end
+
+def fun_l15_n42()
+ fun_l16_n401
+end
+
+def fun_l15_n43()
+ fun_l16_n162
+end
+
+def fun_l15_n44()
+ fun_l16_n593
+end
+
+def fun_l15_n45()
+ fun_l16_n615
+end
+
+def fun_l15_n46()
+ fun_l16_n174
+end
+
+def fun_l15_n47()
+ fun_l16_n651
+end
+
+def fun_l15_n48()
+ fun_l16_n168
+end
+
+def fun_l15_n49()
+ fun_l16_n139
+end
+
+def fun_l15_n50()
+ fun_l16_n791
+end
+
+def fun_l15_n51()
+ fun_l16_n1
+end
+
+def fun_l15_n52()
+ fun_l16_n220
+end
+
+def fun_l15_n53()
+ fun_l16_n375
+end
+
+def fun_l15_n54()
+ fun_l16_n530
+end
+
+def fun_l15_n55()
+ fun_l16_n27
+end
+
+def fun_l15_n56()
+ fun_l16_n400
+end
+
+def fun_l15_n57()
+ fun_l16_n489
+end
+
+def fun_l15_n58()
+ fun_l16_n716
+end
+
+def fun_l15_n59()
+ fun_l16_n956
+end
+
+def fun_l15_n60()
+ fun_l16_n147
+end
+
+def fun_l15_n61()
+ fun_l16_n901
+end
+
+def fun_l15_n62()
+ fun_l16_n430
+end
+
+def fun_l15_n63()
+ fun_l16_n161
+end
+
+def fun_l15_n64()
+ fun_l16_n823
+end
+
+def fun_l15_n65()
+ fun_l16_n20
+end
+
+def fun_l15_n66()
+ fun_l16_n767
+end
+
+def fun_l15_n67()
+ fun_l16_n643
+end
+
+def fun_l15_n68()
+ fun_l16_n152
+end
+
+def fun_l15_n69()
+ fun_l16_n54
+end
+
+def fun_l15_n70()
+ fun_l16_n691
+end
+
+def fun_l15_n71()
+ fun_l16_n349
+end
+
+def fun_l15_n72()
+ fun_l16_n9
+end
+
+def fun_l15_n73()
+ fun_l16_n410
+end
+
+def fun_l15_n74()
+ fun_l16_n173
+end
+
+def fun_l15_n75()
+ fun_l16_n187
+end
+
+def fun_l15_n76()
+ fun_l16_n224
+end
+
+def fun_l15_n77()
+ fun_l16_n482
+end
+
+def fun_l15_n78()
+ fun_l16_n230
+end
+
+def fun_l15_n79()
+ fun_l16_n599
+end
+
+def fun_l15_n80()
+ fun_l16_n76
+end
+
+def fun_l15_n81()
+ fun_l16_n343
+end
+
+def fun_l15_n82()
+ fun_l16_n734
+end
+
+def fun_l15_n83()
+ fun_l16_n41
+end
+
+def fun_l15_n84()
+ fun_l16_n338
+end
+
+def fun_l15_n85()
+ fun_l16_n593
+end
+
+def fun_l15_n86()
+ fun_l16_n596
+end
+
+def fun_l15_n87()
+ fun_l16_n610
+end
+
+def fun_l15_n88()
+ fun_l16_n760
+end
+
+def fun_l15_n89()
+ fun_l16_n766
+end
+
+def fun_l15_n90()
+ fun_l16_n946
+end
+
+def fun_l15_n91()
+ fun_l16_n205
+end
+
+def fun_l15_n92()
+ fun_l16_n434
+end
+
+def fun_l15_n93()
+ fun_l16_n507
+end
+
+def fun_l15_n94()
+ fun_l16_n995
+end
+
+def fun_l15_n95()
+ fun_l16_n744
+end
+
+def fun_l15_n96()
+ fun_l16_n706
+end
+
+def fun_l15_n97()
+ fun_l16_n270
+end
+
+def fun_l15_n98()
+ fun_l16_n874
+end
+
+def fun_l15_n99()
+ fun_l16_n18
+end
+
+def fun_l15_n100()
+ fun_l16_n685
+end
+
+def fun_l15_n101()
+ fun_l16_n344
+end
+
+def fun_l15_n102()
+ fun_l16_n265
+end
+
+def fun_l15_n103()
+ fun_l16_n44
+end
+
+def fun_l15_n104()
+ fun_l16_n730
+end
+
+def fun_l15_n105()
+ fun_l16_n314
+end
+
+def fun_l15_n106()
+ fun_l16_n878
+end
+
+def fun_l15_n107()
+ fun_l16_n877
+end
+
+def fun_l15_n108()
+ fun_l16_n237
+end
+
+def fun_l15_n109()
+ fun_l16_n666
+end
+
+def fun_l15_n110()
+ fun_l16_n469
+end
+
+def fun_l15_n111()
+ fun_l16_n925
+end
+
+def fun_l15_n112()
+ fun_l16_n630
+end
+
+def fun_l15_n113()
+ fun_l16_n517
+end
+
+def fun_l15_n114()
+ fun_l16_n550
+end
+
+def fun_l15_n115()
+ fun_l16_n384
+end
+
+def fun_l15_n116()
+ fun_l16_n976
+end
+
+def fun_l15_n117()
+ fun_l16_n702
+end
+
+def fun_l15_n118()
+ fun_l16_n677
+end
+
+def fun_l15_n119()
+ fun_l16_n737
+end
+
+def fun_l15_n120()
+ fun_l16_n380
+end
+
+def fun_l15_n121()
+ fun_l16_n635
+end
+
+def fun_l15_n122()
+ fun_l16_n112
+end
+
+def fun_l15_n123()
+ fun_l16_n779
+end
+
+def fun_l15_n124()
+ fun_l16_n853
+end
+
+def fun_l15_n125()
+ fun_l16_n697
+end
+
+def fun_l15_n126()
+ fun_l16_n289
+end
+
+def fun_l15_n127()
+ fun_l16_n701
+end
+
+def fun_l15_n128()
+ fun_l16_n867
+end
+
+def fun_l15_n129()
+ fun_l16_n537
+end
+
+def fun_l15_n130()
+ fun_l16_n735
+end
+
+def fun_l15_n131()
+ fun_l16_n285
+end
+
+def fun_l15_n132()
+ fun_l16_n196
+end
+
+def fun_l15_n133()
+ fun_l16_n137
+end
+
+def fun_l15_n134()
+ fun_l16_n937
+end
+
+def fun_l15_n135()
+ fun_l16_n285
+end
+
+def fun_l15_n136()
+ fun_l16_n566
+end
+
+def fun_l15_n137()
+ fun_l16_n163
+end
+
+def fun_l15_n138()
+ fun_l16_n223
+end
+
+def fun_l15_n139()
+ fun_l16_n373
+end
+
+def fun_l15_n140()
+ fun_l16_n16
+end
+
+def fun_l15_n141()
+ fun_l16_n539
+end
+
+def fun_l15_n142()
+ fun_l16_n696
+end
+
+def fun_l15_n143()
+ fun_l16_n735
+end
+
+def fun_l15_n144()
+ fun_l16_n81
+end
+
+def fun_l15_n145()
+ fun_l16_n102
+end
+
+def fun_l15_n146()
+ fun_l16_n658
+end
+
+def fun_l15_n147()
+ fun_l16_n858
+end
+
+def fun_l15_n148()
+ fun_l16_n398
+end
+
+def fun_l15_n149()
+ fun_l16_n122
+end
+
+def fun_l15_n150()
+ fun_l16_n712
+end
+
+def fun_l15_n151()
+ fun_l16_n888
+end
+
+def fun_l15_n152()
+ fun_l16_n537
+end
+
+def fun_l15_n153()
+ fun_l16_n190
+end
+
+def fun_l15_n154()
+ fun_l16_n164
+end
+
+def fun_l15_n155()
+ fun_l16_n351
+end
+
+def fun_l15_n156()
+ fun_l16_n641
+end
+
+def fun_l15_n157()
+ fun_l16_n300
+end
+
+def fun_l15_n158()
+ fun_l16_n177
+end
+
+def fun_l15_n159()
+ fun_l16_n634
+end
+
+def fun_l15_n160()
+ fun_l16_n475
+end
+
+def fun_l15_n161()
+ fun_l16_n843
+end
+
+def fun_l15_n162()
+ fun_l16_n262
+end
+
+def fun_l15_n163()
+ fun_l16_n471
+end
+
+def fun_l15_n164()
+ fun_l16_n229
+end
+
+def fun_l15_n165()
+ fun_l16_n374
+end
+
+def fun_l15_n166()
+ fun_l16_n920
+end
+
+def fun_l15_n167()
+ fun_l16_n194
+end
+
+def fun_l15_n168()
+ fun_l16_n369
+end
+
+def fun_l15_n169()
+ fun_l16_n41
+end
+
+def fun_l15_n170()
+ fun_l16_n339
+end
+
+def fun_l15_n171()
+ fun_l16_n152
+end
+
+def fun_l15_n172()
+ fun_l16_n337
+end
+
+def fun_l15_n173()
+ fun_l16_n906
+end
+
+def fun_l15_n174()
+ fun_l16_n13
+end
+
+def fun_l15_n175()
+ fun_l16_n343
+end
+
+def fun_l15_n176()
+ fun_l16_n116
+end
+
+def fun_l15_n177()
+ fun_l16_n722
+end
+
+def fun_l15_n178()
+ fun_l16_n62
+end
+
+def fun_l15_n179()
+ fun_l16_n12
+end
+
+def fun_l15_n180()
+ fun_l16_n177
+end
+
+def fun_l15_n181()
+ fun_l16_n632
+end
+
+def fun_l15_n182()
+ fun_l16_n990
+end
+
+def fun_l15_n183()
+ fun_l16_n749
+end
+
+def fun_l15_n184()
+ fun_l16_n368
+end
+
+def fun_l15_n185()
+ fun_l16_n881
+end
+
+def fun_l15_n186()
+ fun_l16_n760
+end
+
+def fun_l15_n187()
+ fun_l16_n740
+end
+
+def fun_l15_n188()
+ fun_l16_n379
+end
+
+def fun_l15_n189()
+ fun_l16_n194
+end
+
+def fun_l15_n190()
+ fun_l16_n282
+end
+
+def fun_l15_n191()
+ fun_l16_n520
+end
+
+def fun_l15_n192()
+ fun_l16_n113
+end
+
+def fun_l15_n193()
+ fun_l16_n470
+end
+
+def fun_l15_n194()
+ fun_l16_n303
+end
+
+def fun_l15_n195()
+ fun_l16_n712
+end
+
+def fun_l15_n196()
+ fun_l16_n215
+end
+
+def fun_l15_n197()
+ fun_l16_n121
+end
+
+def fun_l15_n198()
+ fun_l16_n281
+end
+
+def fun_l15_n199()
+ fun_l16_n702
+end
+
+def fun_l15_n200()
+ fun_l16_n727
+end
+
+def fun_l15_n201()
+ fun_l16_n856
+end
+
+def fun_l15_n202()
+ fun_l16_n368
+end
+
+def fun_l15_n203()
+ fun_l16_n252
+end
+
+def fun_l15_n204()
+ fun_l16_n86
+end
+
+def fun_l15_n205()
+ fun_l16_n323
+end
+
+def fun_l15_n206()
+ fun_l16_n749
+end
+
+def fun_l15_n207()
+ fun_l16_n728
+end
+
+def fun_l15_n208()
+ fun_l16_n195
+end
+
+def fun_l15_n209()
+ fun_l16_n141
+end
+
+def fun_l15_n210()
+ fun_l16_n685
+end
+
+def fun_l15_n211()
+ fun_l16_n855
+end
+
+def fun_l15_n212()
+ fun_l16_n401
+end
+
+def fun_l15_n213()
+ fun_l16_n415
+end
+
+def fun_l15_n214()
+ fun_l16_n349
+end
+
+def fun_l15_n215()
+ fun_l16_n45
+end
+
+def fun_l15_n216()
+ fun_l16_n534
+end
+
+def fun_l15_n217()
+ fun_l16_n705
+end
+
+def fun_l15_n218()
+ fun_l16_n97
+end
+
+def fun_l15_n219()
+ fun_l16_n828
+end
+
+def fun_l15_n220()
+ fun_l16_n698
+end
+
+def fun_l15_n221()
+ fun_l16_n505
+end
+
+def fun_l15_n222()
+ fun_l16_n100
+end
+
+def fun_l15_n223()
+ fun_l16_n710
+end
+
+def fun_l15_n224()
+ fun_l16_n883
+end
+
+def fun_l15_n225()
+ fun_l16_n503
+end
+
+def fun_l15_n226()
+ fun_l16_n583
+end
+
+def fun_l15_n227()
+ fun_l16_n269
+end
+
+def fun_l15_n228()
+ fun_l16_n570
+end
+
+def fun_l15_n229()
+ fun_l16_n877
+end
+
+def fun_l15_n230()
+ fun_l16_n906
+end
+
+def fun_l15_n231()
+ fun_l16_n123
+end
+
+def fun_l15_n232()
+ fun_l16_n626
+end
+
+def fun_l15_n233()
+ fun_l16_n911
+end
+
+def fun_l15_n234()
+ fun_l16_n741
+end
+
+def fun_l15_n235()
+ fun_l16_n255
+end
+
+def fun_l15_n236()
+ fun_l16_n499
+end
+
+def fun_l15_n237()
+ fun_l16_n998
+end
+
+def fun_l15_n238()
+ fun_l16_n156
+end
+
+def fun_l15_n239()
+ fun_l16_n677
+end
+
+def fun_l15_n240()
+ fun_l16_n551
+end
+
+def fun_l15_n241()
+ fun_l16_n906
+end
+
+def fun_l15_n242()
+ fun_l16_n146
+end
+
+def fun_l15_n243()
+ fun_l16_n372
+end
+
+def fun_l15_n244()
+ fun_l16_n867
+end
+
+def fun_l15_n245()
+ fun_l16_n232
+end
+
+def fun_l15_n246()
+ fun_l16_n952
+end
+
+def fun_l15_n247()
+ fun_l16_n256
+end
+
+def fun_l15_n248()
+ fun_l16_n263
+end
+
+def fun_l15_n249()
+ fun_l16_n642
+end
+
+def fun_l15_n250()
+ fun_l16_n165
+end
+
+def fun_l15_n251()
+ fun_l16_n147
+end
+
+def fun_l15_n252()
+ fun_l16_n182
+end
+
+def fun_l15_n253()
+ fun_l16_n346
+end
+
+def fun_l15_n254()
+ fun_l16_n263
+end
+
+def fun_l15_n255()
+ fun_l16_n512
+end
+
+def fun_l15_n256()
+ fun_l16_n504
+end
+
+def fun_l15_n257()
+ fun_l16_n671
+end
+
+def fun_l15_n258()
+ fun_l16_n219
+end
+
+def fun_l15_n259()
+ fun_l16_n878
+end
+
+def fun_l15_n260()
+ fun_l16_n754
+end
+
+def fun_l15_n261()
+ fun_l16_n976
+end
+
+def fun_l15_n262()
+ fun_l16_n756
+end
+
+def fun_l15_n263()
+ fun_l16_n840
+end
+
+def fun_l15_n264()
+ fun_l16_n320
+end
+
+def fun_l15_n265()
+ fun_l16_n447
+end
+
+def fun_l15_n266()
+ fun_l16_n179
+end
+
+def fun_l15_n267()
+ fun_l16_n669
+end
+
+def fun_l15_n268()
+ fun_l16_n279
+end
+
+def fun_l15_n269()
+ fun_l16_n919
+end
+
+def fun_l15_n270()
+ fun_l16_n55
+end
+
+def fun_l15_n271()
+ fun_l16_n713
+end
+
+def fun_l15_n272()
+ fun_l16_n140
+end
+
+def fun_l15_n273()
+ fun_l16_n738
+end
+
+def fun_l15_n274()
+ fun_l16_n534
+end
+
+def fun_l15_n275()
+ fun_l16_n739
+end
+
+def fun_l15_n276()
+ fun_l16_n733
+end
+
+def fun_l15_n277()
+ fun_l16_n792
+end
+
+def fun_l15_n278()
+ fun_l16_n719
+end
+
+def fun_l15_n279()
+ fun_l16_n946
+end
+
+def fun_l15_n280()
+ fun_l16_n942
+end
+
+def fun_l15_n281()
+ fun_l16_n547
+end
+
+def fun_l15_n282()
+ fun_l16_n961
+end
+
+def fun_l15_n283()
+ fun_l16_n382
+end
+
+def fun_l15_n284()
+ fun_l16_n642
+end
+
+def fun_l15_n285()
+ fun_l16_n761
+end
+
+def fun_l15_n286()
+ fun_l16_n999
+end
+
+def fun_l15_n287()
+ fun_l16_n827
+end
+
+def fun_l15_n288()
+ fun_l16_n364
+end
+
+def fun_l15_n289()
+ fun_l16_n588
+end
+
+def fun_l15_n290()
+ fun_l16_n3
+end
+
+def fun_l15_n291()
+ fun_l16_n741
+end
+
+def fun_l15_n292()
+ fun_l16_n839
+end
+
+def fun_l15_n293()
+ fun_l16_n889
+end
+
+def fun_l15_n294()
+ fun_l16_n106
+end
+
+def fun_l15_n295()
+ fun_l16_n616
+end
+
+def fun_l15_n296()
+ fun_l16_n124
+end
+
+def fun_l15_n297()
+ fun_l16_n691
+end
+
+def fun_l15_n298()
+ fun_l16_n135
+end
+
+def fun_l15_n299()
+ fun_l16_n654
+end
+
+def fun_l15_n300()
+ fun_l16_n706
+end
+
+def fun_l15_n301()
+ fun_l16_n957
+end
+
+def fun_l15_n302()
+ fun_l16_n213
+end
+
+def fun_l15_n303()
+ fun_l16_n340
+end
+
+def fun_l15_n304()
+ fun_l16_n126
+end
+
+def fun_l15_n305()
+ fun_l16_n807
+end
+
+def fun_l15_n306()
+ fun_l16_n901
+end
+
+def fun_l15_n307()
+ fun_l16_n371
+end
+
+def fun_l15_n308()
+ fun_l16_n904
+end
+
+def fun_l15_n309()
+ fun_l16_n475
+end
+
+def fun_l15_n310()
+ fun_l16_n863
+end
+
+def fun_l15_n311()
+ fun_l16_n37
+end
+
+def fun_l15_n312()
+ fun_l16_n315
+end
+
+def fun_l15_n313()
+ fun_l16_n527
+end
+
+def fun_l15_n314()
+ fun_l16_n549
+end
+
+def fun_l15_n315()
+ fun_l16_n351
+end
+
+def fun_l15_n316()
+ fun_l16_n193
+end
+
+def fun_l15_n317()
+ fun_l16_n395
+end
+
+def fun_l15_n318()
+ fun_l16_n373
+end
+
+def fun_l15_n319()
+ fun_l16_n142
+end
+
+def fun_l15_n320()
+ fun_l16_n250
+end
+
+def fun_l15_n321()
+ fun_l16_n544
+end
+
+def fun_l15_n322()
+ fun_l16_n446
+end
+
+def fun_l15_n323()
+ fun_l16_n375
+end
+
+def fun_l15_n324()
+ fun_l16_n832
+end
+
+def fun_l15_n325()
+ fun_l16_n987
+end
+
+def fun_l15_n326()
+ fun_l16_n539
+end
+
+def fun_l15_n327()
+ fun_l16_n293
+end
+
+def fun_l15_n328()
+ fun_l16_n128
+end
+
+def fun_l15_n329()
+ fun_l16_n228
+end
+
+def fun_l15_n330()
+ fun_l16_n952
+end
+
+def fun_l15_n331()
+ fun_l16_n116
+end
+
+def fun_l15_n332()
+ fun_l16_n823
+end
+
+def fun_l15_n333()
+ fun_l16_n933
+end
+
+def fun_l15_n334()
+ fun_l16_n252
+end
+
+def fun_l15_n335()
+ fun_l16_n140
+end
+
+def fun_l15_n336()
+ fun_l16_n245
+end
+
+def fun_l15_n337()
+ fun_l16_n822
+end
+
+def fun_l15_n338()
+ fun_l16_n389
+end
+
+def fun_l15_n339()
+ fun_l16_n824
+end
+
+def fun_l15_n340()
+ fun_l16_n507
+end
+
+def fun_l15_n341()
+ fun_l16_n153
+end
+
+def fun_l15_n342()
+ fun_l16_n661
+end
+
+def fun_l15_n343()
+ fun_l16_n633
+end
+
+def fun_l15_n344()
+ fun_l16_n478
+end
+
+def fun_l15_n345()
+ fun_l16_n423
+end
+
+def fun_l15_n346()
+ fun_l16_n425
+end
+
+def fun_l15_n347()
+ fun_l16_n168
+end
+
+def fun_l15_n348()
+ fun_l16_n426
+end
+
+def fun_l15_n349()
+ fun_l16_n85
+end
+
+def fun_l15_n350()
+ fun_l16_n35
+end
+
+def fun_l15_n351()
+ fun_l16_n796
+end
+
+def fun_l15_n352()
+ fun_l16_n295
+end
+
+def fun_l15_n353()
+ fun_l16_n564
+end
+
+def fun_l15_n354()
+ fun_l16_n273
+end
+
+def fun_l15_n355()
+ fun_l16_n821
+end
+
+def fun_l15_n356()
+ fun_l16_n504
+end
+
+def fun_l15_n357()
+ fun_l16_n911
+end
+
+def fun_l15_n358()
+ fun_l16_n277
+end
+
+def fun_l15_n359()
+ fun_l16_n749
+end
+
+def fun_l15_n360()
+ fun_l16_n886
+end
+
+def fun_l15_n361()
+ fun_l16_n165
+end
+
+def fun_l15_n362()
+ fun_l16_n353
+end
+
+def fun_l15_n363()
+ fun_l16_n309
+end
+
+def fun_l15_n364()
+ fun_l16_n853
+end
+
+def fun_l15_n365()
+ fun_l16_n981
+end
+
+def fun_l15_n366()
+ fun_l16_n429
+end
+
+def fun_l15_n367()
+ fun_l16_n114
+end
+
+def fun_l15_n368()
+ fun_l16_n649
+end
+
+def fun_l15_n369()
+ fun_l16_n966
+end
+
+def fun_l15_n370()
+ fun_l16_n356
+end
+
+def fun_l15_n371()
+ fun_l16_n364
+end
+
+def fun_l15_n372()
+ fun_l16_n12
+end
+
+def fun_l15_n373()
+ fun_l16_n969
+end
+
+def fun_l15_n374()
+ fun_l16_n705
+end
+
+def fun_l15_n375()
+ fun_l16_n194
+end
+
+def fun_l15_n376()
+ fun_l16_n487
+end
+
+def fun_l15_n377()
+ fun_l16_n148
+end
+
+def fun_l15_n378()
+ fun_l16_n419
+end
+
+def fun_l15_n379()
+ fun_l16_n686
+end
+
+def fun_l15_n380()
+ fun_l16_n552
+end
+
+def fun_l15_n381()
+ fun_l16_n630
+end
+
+def fun_l15_n382()
+ fun_l16_n509
+end
+
+def fun_l15_n383()
+ fun_l16_n251
+end
+
+def fun_l15_n384()
+ fun_l16_n506
+end
+
+def fun_l15_n385()
+ fun_l16_n317
+end
+
+def fun_l15_n386()
+ fun_l16_n881
+end
+
+def fun_l15_n387()
+ fun_l16_n12
+end
+
+def fun_l15_n388()
+ fun_l16_n686
+end
+
+def fun_l15_n389()
+ fun_l16_n277
+end
+
+def fun_l15_n390()
+ fun_l16_n174
+end
+
+def fun_l15_n391()
+ fun_l16_n799
+end
+
+def fun_l15_n392()
+ fun_l16_n682
+end
+
+def fun_l15_n393()
+ fun_l16_n102
+end
+
+def fun_l15_n394()
+ fun_l16_n127
+end
+
+def fun_l15_n395()
+ fun_l16_n110
+end
+
+def fun_l15_n396()
+ fun_l16_n331
+end
+
+def fun_l15_n397()
+ fun_l16_n165
+end
+
+def fun_l15_n398()
+ fun_l16_n360
+end
+
+def fun_l15_n399()
+ fun_l16_n622
+end
+
+def fun_l15_n400()
+ fun_l16_n928
+end
+
+def fun_l15_n401()
+ fun_l16_n324
+end
+
+def fun_l15_n402()
+ fun_l16_n712
+end
+
+def fun_l15_n403()
+ fun_l16_n250
+end
+
+def fun_l15_n404()
+ fun_l16_n289
+end
+
+def fun_l15_n405()
+ fun_l16_n520
+end
+
+def fun_l15_n406()
+ fun_l16_n445
+end
+
+def fun_l15_n407()
+ fun_l16_n328
+end
+
+def fun_l15_n408()
+ fun_l16_n496
+end
+
+def fun_l15_n409()
+ fun_l16_n614
+end
+
+def fun_l15_n410()
+ fun_l16_n428
+end
+
+def fun_l15_n411()
+ fun_l16_n226
+end
+
+def fun_l15_n412()
+ fun_l16_n450
+end
+
+def fun_l15_n413()
+ fun_l16_n410
+end
+
+def fun_l15_n414()
+ fun_l16_n926
+end
+
+def fun_l15_n415()
+ fun_l16_n353
+end
+
+def fun_l15_n416()
+ fun_l16_n822
+end
+
+def fun_l15_n417()
+ fun_l16_n800
+end
+
+def fun_l15_n418()
+ fun_l16_n577
+end
+
+def fun_l15_n419()
+ fun_l16_n483
+end
+
+def fun_l15_n420()
+ fun_l16_n744
+end
+
+def fun_l15_n421()
+ fun_l16_n314
+end
+
+def fun_l15_n422()
+ fun_l16_n206
+end
+
+def fun_l15_n423()
+ fun_l16_n359
+end
+
+def fun_l15_n424()
+ fun_l16_n371
+end
+
+def fun_l15_n425()
+ fun_l16_n817
+end
+
+def fun_l15_n426()
+ fun_l16_n471
+end
+
+def fun_l15_n427()
+ fun_l16_n681
+end
+
+def fun_l15_n428()
+ fun_l16_n598
+end
+
+def fun_l15_n429()
+ fun_l16_n532
+end
+
+def fun_l15_n430()
+ fun_l16_n173
+end
+
+def fun_l15_n431()
+ fun_l16_n670
+end
+
+def fun_l15_n432()
+ fun_l16_n310
+end
+
+def fun_l15_n433()
+ fun_l16_n376
+end
+
+def fun_l15_n434()
+ fun_l16_n142
+end
+
+def fun_l15_n435()
+ fun_l16_n591
+end
+
+def fun_l15_n436()
+ fun_l16_n313
+end
+
+def fun_l15_n437()
+ fun_l16_n724
+end
+
+def fun_l15_n438()
+ fun_l16_n313
+end
+
+def fun_l15_n439()
+ fun_l16_n238
+end
+
+def fun_l15_n440()
+ fun_l16_n840
+end
+
+def fun_l15_n441()
+ fun_l16_n235
+end
+
+def fun_l15_n442()
+ fun_l16_n720
+end
+
+def fun_l15_n443()
+ fun_l16_n427
+end
+
+def fun_l15_n444()
+ fun_l16_n269
+end
+
+def fun_l15_n445()
+ fun_l16_n557
+end
+
+def fun_l15_n446()
+ fun_l16_n97
+end
+
+def fun_l15_n447()
+ fun_l16_n655
+end
+
+def fun_l15_n448()
+ fun_l16_n723
+end
+
+def fun_l15_n449()
+ fun_l16_n634
+end
+
+def fun_l15_n450()
+ fun_l16_n208
+end
+
+def fun_l15_n451()
+ fun_l16_n130
+end
+
+def fun_l15_n452()
+ fun_l16_n472
+end
+
+def fun_l15_n453()
+ fun_l16_n172
+end
+
+def fun_l15_n454()
+ fun_l16_n323
+end
+
+def fun_l15_n455()
+ fun_l16_n643
+end
+
+def fun_l15_n456()
+ fun_l16_n20
+end
+
+def fun_l15_n457()
+ fun_l16_n721
+end
+
+def fun_l15_n458()
+ fun_l16_n928
+end
+
+def fun_l15_n459()
+ fun_l16_n312
+end
+
+def fun_l15_n460()
+ fun_l16_n767
+end
+
+def fun_l15_n461()
+ fun_l16_n191
+end
+
+def fun_l15_n462()
+ fun_l16_n88
+end
+
+def fun_l15_n463()
+ fun_l16_n782
+end
+
+def fun_l15_n464()
+ fun_l16_n448
+end
+
+def fun_l15_n465()
+ fun_l16_n595
+end
+
+def fun_l15_n466()
+ fun_l16_n545
+end
+
+def fun_l15_n467()
+ fun_l16_n98
+end
+
+def fun_l15_n468()
+ fun_l16_n523
+end
+
+def fun_l15_n469()
+ fun_l16_n548
+end
+
+def fun_l15_n470()
+ fun_l16_n799
+end
+
+def fun_l15_n471()
+ fun_l16_n727
+end
+
+def fun_l15_n472()
+ fun_l16_n342
+end
+
+def fun_l15_n473()
+ fun_l16_n30
+end
+
+def fun_l15_n474()
+ fun_l16_n461
+end
+
+def fun_l15_n475()
+ fun_l16_n249
+end
+
+def fun_l15_n476()
+ fun_l16_n466
+end
+
+def fun_l15_n477()
+ fun_l16_n28
+end
+
+def fun_l15_n478()
+ fun_l16_n845
+end
+
+def fun_l15_n479()
+ fun_l16_n53
+end
+
+def fun_l15_n480()
+ fun_l16_n122
+end
+
+def fun_l15_n481()
+ fun_l16_n264
+end
+
+def fun_l15_n482()
+ fun_l16_n802
+end
+
+def fun_l15_n483()
+ fun_l16_n688
+end
+
+def fun_l15_n484()
+ fun_l16_n656
+end
+
+def fun_l15_n485()
+ fun_l16_n17
+end
+
+def fun_l15_n486()
+ fun_l16_n956
+end
+
+def fun_l15_n487()
+ fun_l16_n649
+end
+
+def fun_l15_n488()
+ fun_l16_n948
+end
+
+def fun_l15_n489()
+ fun_l16_n85
+end
+
+def fun_l15_n490()
+ fun_l16_n411
+end
+
+def fun_l15_n491()
+ fun_l16_n572
+end
+
+def fun_l15_n492()
+ fun_l16_n698
+end
+
+def fun_l15_n493()
+ fun_l16_n767
+end
+
+def fun_l15_n494()
+ fun_l16_n513
+end
+
+def fun_l15_n495()
+ fun_l16_n983
+end
+
+def fun_l15_n496()
+ fun_l16_n763
+end
+
+def fun_l15_n497()
+ fun_l16_n207
+end
+
+def fun_l15_n498()
+ fun_l16_n154
+end
+
+def fun_l15_n499()
+ fun_l16_n152
+end
+
+def fun_l15_n500()
+ fun_l16_n929
+end
+
+def fun_l15_n501()
+ fun_l16_n573
+end
+
+def fun_l15_n502()
+ fun_l16_n97
+end
+
+def fun_l15_n503()
+ fun_l16_n696
+end
+
+def fun_l15_n504()
+ fun_l16_n877
+end
+
+def fun_l15_n505()
+ fun_l16_n401
+end
+
+def fun_l15_n506()
+ fun_l16_n509
+end
+
+def fun_l15_n507()
+ fun_l16_n933
+end
+
+def fun_l15_n508()
+ fun_l16_n946
+end
+
+def fun_l15_n509()
+ fun_l16_n290
+end
+
+def fun_l15_n510()
+ fun_l16_n630
+end
+
+def fun_l15_n511()
+ fun_l16_n279
+end
+
+def fun_l15_n512()
+ fun_l16_n833
+end
+
+def fun_l15_n513()
+ fun_l16_n984
+end
+
+def fun_l15_n514()
+ fun_l16_n82
+end
+
+def fun_l15_n515()
+ fun_l16_n372
+end
+
+def fun_l15_n516()
+ fun_l16_n407
+end
+
+def fun_l15_n517()
+ fun_l16_n801
+end
+
+def fun_l15_n518()
+ fun_l16_n530
+end
+
+def fun_l15_n519()
+ fun_l16_n349
+end
+
+def fun_l15_n520()
+ fun_l16_n633
+end
+
+def fun_l15_n521()
+ fun_l16_n189
+end
+
+def fun_l15_n522()
+ fun_l16_n613
+end
+
+def fun_l15_n523()
+ fun_l16_n335
+end
+
+def fun_l15_n524()
+ fun_l16_n163
+end
+
+def fun_l15_n525()
+ fun_l16_n542
+end
+
+def fun_l15_n526()
+ fun_l16_n454
+end
+
+def fun_l15_n527()
+ fun_l16_n428
+end
+
+def fun_l15_n528()
+ fun_l16_n985
+end
+
+def fun_l15_n529()
+ fun_l16_n414
+end
+
+def fun_l15_n530()
+ fun_l16_n294
+end
+
+def fun_l15_n531()
+ fun_l16_n493
+end
+
+def fun_l15_n532()
+ fun_l16_n467
+end
+
+def fun_l15_n533()
+ fun_l16_n398
+end
+
+def fun_l15_n534()
+ fun_l16_n861
+end
+
+def fun_l15_n535()
+ fun_l16_n219
+end
+
+def fun_l15_n536()
+ fun_l16_n178
+end
+
+def fun_l15_n537()
+ fun_l16_n436
+end
+
+def fun_l15_n538()
+ fun_l16_n821
+end
+
+def fun_l15_n539()
+ fun_l16_n732
+end
+
+def fun_l15_n540()
+ fun_l16_n432
+end
+
+def fun_l15_n541()
+ fun_l16_n32
+end
+
+def fun_l15_n542()
+ fun_l16_n128
+end
+
+def fun_l15_n543()
+ fun_l16_n2
+end
+
+def fun_l15_n544()
+ fun_l16_n117
+end
+
+def fun_l15_n545()
+ fun_l16_n861
+end
+
+def fun_l15_n546()
+ fun_l16_n817
+end
+
+def fun_l15_n547()
+ fun_l16_n833
+end
+
+def fun_l15_n548()
+ fun_l16_n180
+end
+
+def fun_l15_n549()
+ fun_l16_n176
+end
+
+def fun_l15_n550()
+ fun_l16_n772
+end
+
+def fun_l15_n551()
+ fun_l16_n469
+end
+
+def fun_l15_n552()
+ fun_l16_n209
+end
+
+def fun_l15_n553()
+ fun_l16_n200
+end
+
+def fun_l15_n554()
+ fun_l16_n434
+end
+
+def fun_l15_n555()
+ fun_l16_n529
+end
+
+def fun_l15_n556()
+ fun_l16_n847
+end
+
+def fun_l15_n557()
+ fun_l16_n134
+end
+
+def fun_l15_n558()
+ fun_l16_n748
+end
+
+def fun_l15_n559()
+ fun_l16_n153
+end
+
+def fun_l15_n560()
+ fun_l16_n903
+end
+
+def fun_l15_n561()
+ fun_l16_n449
+end
+
+def fun_l15_n562()
+ fun_l16_n267
+end
+
+def fun_l15_n563()
+ fun_l16_n47
+end
+
+def fun_l15_n564()
+ fun_l16_n762
+end
+
+def fun_l15_n565()
+ fun_l16_n932
+end
+
+def fun_l15_n566()
+ fun_l16_n782
+end
+
+def fun_l15_n567()
+ fun_l16_n580
+end
+
+def fun_l15_n568()
+ fun_l16_n172
+end
+
+def fun_l15_n569()
+ fun_l16_n379
+end
+
+def fun_l15_n570()
+ fun_l16_n890
+end
+
+def fun_l15_n571()
+ fun_l16_n257
+end
+
+def fun_l15_n572()
+ fun_l16_n964
+end
+
+def fun_l15_n573()
+ fun_l16_n164
+end
+
+def fun_l15_n574()
+ fun_l16_n606
+end
+
+def fun_l15_n575()
+ fun_l16_n475
+end
+
+def fun_l15_n576()
+ fun_l16_n500
+end
+
+def fun_l15_n577()
+ fun_l16_n65
+end
+
+def fun_l15_n578()
+ fun_l16_n81
+end
+
+def fun_l15_n579()
+ fun_l16_n952
+end
+
+def fun_l15_n580()
+ fun_l16_n524
+end
+
+def fun_l15_n581()
+ fun_l16_n573
+end
+
+def fun_l15_n582()
+ fun_l16_n812
+end
+
+def fun_l15_n583()
+ fun_l16_n498
+end
+
+def fun_l15_n584()
+ fun_l16_n106
+end
+
+def fun_l15_n585()
+ fun_l16_n807
+end
+
+def fun_l15_n586()
+ fun_l16_n70
+end
+
+def fun_l15_n587()
+ fun_l16_n41
+end
+
+def fun_l15_n588()
+ fun_l16_n78
+end
+
+def fun_l15_n589()
+ fun_l16_n235
+end
+
+def fun_l15_n590()
+ fun_l16_n974
+end
+
+def fun_l15_n591()
+ fun_l16_n450
+end
+
+def fun_l15_n592()
+ fun_l16_n191
+end
+
+def fun_l15_n593()
+ fun_l16_n988
+end
+
+def fun_l15_n594()
+ fun_l16_n516
+end
+
+def fun_l15_n595()
+ fun_l16_n7
+end
+
+def fun_l15_n596()
+ fun_l16_n186
+end
+
+def fun_l15_n597()
+ fun_l16_n249
+end
+
+def fun_l15_n598()
+ fun_l16_n832
+end
+
+def fun_l15_n599()
+ fun_l16_n502
+end
+
+def fun_l15_n600()
+ fun_l16_n967
+end
+
+def fun_l15_n601()
+ fun_l16_n930
+end
+
+def fun_l15_n602()
+ fun_l16_n497
+end
+
+def fun_l15_n603()
+ fun_l16_n467
+end
+
+def fun_l15_n604()
+ fun_l16_n742
+end
+
+def fun_l15_n605()
+ fun_l16_n52
+end
+
+def fun_l15_n606()
+ fun_l16_n494
+end
+
+def fun_l15_n607()
+ fun_l16_n604
+end
+
+def fun_l15_n608()
+ fun_l16_n372
+end
+
+def fun_l15_n609()
+ fun_l16_n503
+end
+
+def fun_l15_n610()
+ fun_l16_n853
+end
+
+def fun_l15_n611()
+ fun_l16_n146
+end
+
+def fun_l15_n612()
+ fun_l16_n812
+end
+
+def fun_l15_n613()
+ fun_l16_n235
+end
+
+def fun_l15_n614()
+ fun_l16_n924
+end
+
+def fun_l15_n615()
+ fun_l16_n212
+end
+
+def fun_l15_n616()
+ fun_l16_n332
+end
+
+def fun_l15_n617()
+ fun_l16_n179
+end
+
+def fun_l15_n618()
+ fun_l16_n767
+end
+
+def fun_l15_n619()
+ fun_l16_n46
+end
+
+def fun_l15_n620()
+ fun_l16_n275
+end
+
+def fun_l15_n621()
+ fun_l16_n348
+end
+
+def fun_l15_n622()
+ fun_l16_n136
+end
+
+def fun_l15_n623()
+ fun_l16_n814
+end
+
+def fun_l15_n624()
+ fun_l16_n782
+end
+
+def fun_l15_n625()
+ fun_l16_n692
+end
+
+def fun_l15_n626()
+ fun_l16_n331
+end
+
+def fun_l15_n627()
+ fun_l16_n228
+end
+
+def fun_l15_n628()
+ fun_l16_n249
+end
+
+def fun_l15_n629()
+ fun_l16_n387
+end
+
+def fun_l15_n630()
+ fun_l16_n994
+end
+
+def fun_l15_n631()
+ fun_l16_n219
+end
+
+def fun_l15_n632()
+ fun_l16_n743
+end
+
+def fun_l15_n633()
+ fun_l16_n674
+end
+
+def fun_l15_n634()
+ fun_l16_n411
+end
+
+def fun_l15_n635()
+ fun_l16_n757
+end
+
+def fun_l15_n636()
+ fun_l16_n568
+end
+
+def fun_l15_n637()
+ fun_l16_n323
+end
+
+def fun_l15_n638()
+ fun_l16_n910
+end
+
+def fun_l15_n639()
+ fun_l16_n823
+end
+
+def fun_l15_n640()
+ fun_l16_n942
+end
+
+def fun_l15_n641()
+ fun_l16_n796
+end
+
+def fun_l15_n642()
+ fun_l16_n507
+end
+
+def fun_l15_n643()
+ fun_l16_n72
+end
+
+def fun_l15_n644()
+ fun_l16_n285
+end
+
+def fun_l15_n645()
+ fun_l16_n654
+end
+
+def fun_l15_n646()
+ fun_l16_n361
+end
+
+def fun_l15_n647()
+ fun_l16_n766
+end
+
+def fun_l15_n648()
+ fun_l16_n587
+end
+
+def fun_l15_n649()
+ fun_l16_n99
+end
+
+def fun_l15_n650()
+ fun_l16_n558
+end
+
+def fun_l15_n651()
+ fun_l16_n623
+end
+
+def fun_l15_n652()
+ fun_l16_n428
+end
+
+def fun_l15_n653()
+ fun_l16_n695
+end
+
+def fun_l15_n654()
+ fun_l16_n514
+end
+
+def fun_l15_n655()
+ fun_l16_n159
+end
+
+def fun_l15_n656()
+ fun_l16_n41
+end
+
+def fun_l15_n657()
+ fun_l16_n510
+end
+
+def fun_l15_n658()
+ fun_l16_n26
+end
+
+def fun_l15_n659()
+ fun_l16_n947
+end
+
+def fun_l15_n660()
+ fun_l16_n766
+end
+
+def fun_l15_n661()
+ fun_l16_n470
+end
+
+def fun_l15_n662()
+ fun_l16_n46
+end
+
+def fun_l15_n663()
+ fun_l16_n499
+end
+
+def fun_l15_n664()
+ fun_l16_n593
+end
+
+def fun_l15_n665()
+ fun_l16_n803
+end
+
+def fun_l15_n666()
+ fun_l16_n321
+end
+
+def fun_l15_n667()
+ fun_l16_n165
+end
+
+def fun_l15_n668()
+ fun_l16_n762
+end
+
+def fun_l15_n669()
+ fun_l16_n800
+end
+
+def fun_l15_n670()
+ fun_l16_n530
+end
+
+def fun_l15_n671()
+ fun_l16_n198
+end
+
+def fun_l15_n672()
+ fun_l16_n365
+end
+
+def fun_l15_n673()
+ fun_l16_n204
+end
+
+def fun_l15_n674()
+ fun_l16_n782
+end
+
+def fun_l15_n675()
+ fun_l16_n465
+end
+
+def fun_l15_n676()
+ fun_l16_n733
+end
+
+def fun_l15_n677()
+ fun_l16_n101
+end
+
+def fun_l15_n678()
+ fun_l16_n38
+end
+
+def fun_l15_n679()
+ fun_l16_n800
+end
+
+def fun_l15_n680()
+ fun_l16_n45
+end
+
+def fun_l15_n681()
+ fun_l16_n996
+end
+
+def fun_l15_n682()
+ fun_l16_n156
+end
+
+def fun_l15_n683()
+ fun_l16_n868
+end
+
+def fun_l15_n684()
+ fun_l16_n537
+end
+
+def fun_l15_n685()
+ fun_l16_n450
+end
+
+def fun_l15_n686()
+ fun_l16_n932
+end
+
+def fun_l15_n687()
+ fun_l16_n733
+end
+
+def fun_l15_n688()
+ fun_l16_n150
+end
+
+def fun_l15_n689()
+ fun_l16_n770
+end
+
+def fun_l15_n690()
+ fun_l16_n522
+end
+
+def fun_l15_n691()
+ fun_l16_n867
+end
+
+def fun_l15_n692()
+ fun_l16_n318
+end
+
+def fun_l15_n693()
+ fun_l16_n23
+end
+
+def fun_l15_n694()
+ fun_l16_n402
+end
+
+def fun_l15_n695()
+ fun_l16_n261
+end
+
+def fun_l15_n696()
+ fun_l16_n726
+end
+
+def fun_l15_n697()
+ fun_l16_n406
+end
+
+def fun_l15_n698()
+ fun_l16_n308
+end
+
+def fun_l15_n699()
+ fun_l16_n428
+end
+
+def fun_l15_n700()
+ fun_l16_n141
+end
+
+def fun_l15_n701()
+ fun_l16_n987
+end
+
+def fun_l15_n702()
+ fun_l16_n371
+end
+
+def fun_l15_n703()
+ fun_l16_n578
+end
+
+def fun_l15_n704()
+ fun_l16_n780
+end
+
+def fun_l15_n705()
+ fun_l16_n914
+end
+
+def fun_l15_n706()
+ fun_l16_n976
+end
+
+def fun_l15_n707()
+ fun_l16_n268
+end
+
+def fun_l15_n708()
+ fun_l16_n431
+end
+
+def fun_l15_n709()
+ fun_l16_n188
+end
+
+def fun_l15_n710()
+ fun_l16_n190
+end
+
+def fun_l15_n711()
+ fun_l16_n742
+end
+
+def fun_l15_n712()
+ fun_l16_n223
+end
+
+def fun_l15_n713()
+ fun_l16_n993
+end
+
+def fun_l15_n714()
+ fun_l16_n482
+end
+
+def fun_l15_n715()
+ fun_l16_n890
+end
+
+def fun_l15_n716()
+ fun_l16_n929
+end
+
+def fun_l15_n717()
+ fun_l16_n644
+end
+
+def fun_l15_n718()
+ fun_l16_n646
+end
+
+def fun_l15_n719()
+ fun_l16_n121
+end
+
+def fun_l15_n720()
+ fun_l16_n417
+end
+
+def fun_l15_n721()
+ fun_l16_n203
+end
+
+def fun_l15_n722()
+ fun_l16_n145
+end
+
+def fun_l15_n723()
+ fun_l16_n401
+end
+
+def fun_l15_n724()
+ fun_l16_n823
+end
+
+def fun_l15_n725()
+ fun_l16_n554
+end
+
+def fun_l15_n726()
+ fun_l16_n641
+end
+
+def fun_l15_n727()
+ fun_l16_n232
+end
+
+def fun_l15_n728()
+ fun_l16_n313
+end
+
+def fun_l15_n729()
+ fun_l16_n943
+end
+
+def fun_l15_n730()
+ fun_l16_n964
+end
+
+def fun_l15_n731()
+ fun_l16_n409
+end
+
+def fun_l15_n732()
+ fun_l16_n375
+end
+
+def fun_l15_n733()
+ fun_l16_n147
+end
+
+def fun_l15_n734()
+ fun_l16_n779
+end
+
+def fun_l15_n735()
+ fun_l16_n690
+end
+
+def fun_l15_n736()
+ fun_l16_n91
+end
+
+def fun_l15_n737()
+ fun_l16_n819
+end
+
+def fun_l15_n738()
+ fun_l16_n68
+end
+
+def fun_l15_n739()
+ fun_l16_n810
+end
+
+def fun_l15_n740()
+ fun_l16_n787
+end
+
+def fun_l15_n741()
+ fun_l16_n90
+end
+
+def fun_l15_n742()
+ fun_l16_n800
+end
+
+def fun_l15_n743()
+ fun_l16_n491
+end
+
+def fun_l15_n744()
+ fun_l16_n729
+end
+
+def fun_l15_n745()
+ fun_l16_n917
+end
+
+def fun_l15_n746()
+ fun_l16_n360
+end
+
+def fun_l15_n747()
+ fun_l16_n489
+end
+
+def fun_l15_n748()
+ fun_l16_n755
+end
+
+def fun_l15_n749()
+ fun_l16_n999
+end
+
+def fun_l15_n750()
+ fun_l16_n268
+end
+
+def fun_l15_n751()
+ fun_l16_n213
+end
+
+def fun_l15_n752()
+ fun_l16_n923
+end
+
+def fun_l15_n753()
+ fun_l16_n456
+end
+
+def fun_l15_n754()
+ fun_l16_n653
+end
+
+def fun_l15_n755()
+ fun_l16_n855
+end
+
+def fun_l15_n756()
+ fun_l16_n833
+end
+
+def fun_l15_n757()
+ fun_l16_n269
+end
+
+def fun_l15_n758()
+ fun_l16_n152
+end
+
+def fun_l15_n759()
+ fun_l16_n391
+end
+
+def fun_l15_n760()
+ fun_l16_n850
+end
+
+def fun_l15_n761()
+ fun_l16_n70
+end
+
+def fun_l15_n762()
+ fun_l16_n774
+end
+
+def fun_l15_n763()
+ fun_l16_n379
+end
+
+def fun_l15_n764()
+ fun_l16_n271
+end
+
+def fun_l15_n765()
+ fun_l16_n667
+end
+
+def fun_l15_n766()
+ fun_l16_n149
+end
+
+def fun_l15_n767()
+ fun_l16_n715
+end
+
+def fun_l15_n768()
+ fun_l16_n645
+end
+
+def fun_l15_n769()
+ fun_l16_n741
+end
+
+def fun_l15_n770()
+ fun_l16_n147
+end
+
+def fun_l15_n771()
+ fun_l16_n23
+end
+
+def fun_l15_n772()
+ fun_l16_n653
+end
+
+def fun_l15_n773()
+ fun_l16_n109
+end
+
+def fun_l15_n774()
+ fun_l16_n402
+end
+
+def fun_l15_n775()
+ fun_l16_n995
+end
+
+def fun_l15_n776()
+ fun_l16_n112
+end
+
+def fun_l15_n777()
+ fun_l16_n416
+end
+
+def fun_l15_n778()
+ fun_l16_n641
+end
+
+def fun_l15_n779()
+ fun_l16_n412
+end
+
+def fun_l15_n780()
+ fun_l16_n548
+end
+
+def fun_l15_n781()
+ fun_l16_n329
+end
+
+def fun_l15_n782()
+ fun_l16_n804
+end
+
+def fun_l15_n783()
+ fun_l16_n377
+end
+
+def fun_l15_n784()
+ fun_l16_n107
+end
+
+def fun_l15_n785()
+ fun_l16_n364
+end
+
+def fun_l15_n786()
+ fun_l16_n950
+end
+
+def fun_l15_n787()
+ fun_l16_n769
+end
+
+def fun_l15_n788()
+ fun_l16_n322
+end
+
+def fun_l15_n789()
+ fun_l16_n604
+end
+
+def fun_l15_n790()
+ fun_l16_n425
+end
+
+def fun_l15_n791()
+ fun_l16_n318
+end
+
+def fun_l15_n792()
+ fun_l16_n236
+end
+
+def fun_l15_n793()
+ fun_l16_n794
+end
+
+def fun_l15_n794()
+ fun_l16_n948
+end
+
+def fun_l15_n795()
+ fun_l16_n421
+end
+
+def fun_l15_n796()
+ fun_l16_n565
+end
+
+def fun_l15_n797()
+ fun_l16_n363
+end
+
+def fun_l15_n798()
+ fun_l16_n274
+end
+
+def fun_l15_n799()
+ fun_l16_n391
+end
+
+def fun_l15_n800()
+ fun_l16_n303
+end
+
+def fun_l15_n801()
+ fun_l16_n31
+end
+
+def fun_l15_n802()
+ fun_l16_n585
+end
+
+def fun_l15_n803()
+ fun_l16_n769
+end
+
+def fun_l15_n804()
+ fun_l16_n749
+end
+
+def fun_l15_n805()
+ fun_l16_n405
+end
+
+def fun_l15_n806()
+ fun_l16_n53
+end
+
+def fun_l15_n807()
+ fun_l16_n951
+end
+
+def fun_l15_n808()
+ fun_l16_n817
+end
+
+def fun_l15_n809()
+ fun_l16_n217
+end
+
+def fun_l15_n810()
+ fun_l16_n210
+end
+
+def fun_l15_n811()
+ fun_l16_n830
+end
+
+def fun_l15_n812()
+ fun_l16_n743
+end
+
+def fun_l15_n813()
+ fun_l16_n908
+end
+
+def fun_l15_n814()
+ fun_l16_n343
+end
+
+def fun_l15_n815()
+ fun_l16_n135
+end
+
+def fun_l15_n816()
+ fun_l16_n346
+end
+
+def fun_l15_n817()
+ fun_l16_n947
+end
+
+def fun_l15_n818()
+ fun_l16_n969
+end
+
+def fun_l15_n819()
+ fun_l16_n313
+end
+
+def fun_l15_n820()
+ fun_l16_n668
+end
+
+def fun_l15_n821()
+ fun_l16_n923
+end
+
+def fun_l15_n822()
+ fun_l16_n650
+end
+
+def fun_l15_n823()
+ fun_l16_n601
+end
+
+def fun_l15_n824()
+ fun_l16_n775
+end
+
+def fun_l15_n825()
+ fun_l16_n748
+end
+
+def fun_l15_n826()
+ fun_l16_n353
+end
+
+def fun_l15_n827()
+ fun_l16_n164
+end
+
+def fun_l15_n828()
+ fun_l16_n458
+end
+
+def fun_l15_n829()
+ fun_l16_n257
+end
+
+def fun_l15_n830()
+ fun_l16_n968
+end
+
+def fun_l15_n831()
+ fun_l16_n932
+end
+
+def fun_l15_n832()
+ fun_l16_n749
+end
+
+def fun_l15_n833()
+ fun_l16_n873
+end
+
+def fun_l15_n834()
+ fun_l16_n940
+end
+
+def fun_l15_n835()
+ fun_l16_n404
+end
+
+def fun_l15_n836()
+ fun_l16_n235
+end
+
+def fun_l15_n837()
+ fun_l16_n584
+end
+
+def fun_l15_n838()
+ fun_l16_n12
+end
+
+def fun_l15_n839()
+ fun_l16_n378
+end
+
+def fun_l15_n840()
+ fun_l16_n463
+end
+
+def fun_l15_n841()
+ fun_l16_n310
+end
+
+def fun_l15_n842()
+ fun_l16_n832
+end
+
+def fun_l15_n843()
+ fun_l16_n641
+end
+
+def fun_l15_n844()
+ fun_l16_n484
+end
+
+def fun_l15_n845()
+ fun_l16_n589
+end
+
+def fun_l15_n846()
+ fun_l16_n315
+end
+
+def fun_l15_n847()
+ fun_l16_n977
+end
+
+def fun_l15_n848()
+ fun_l16_n946
+end
+
+def fun_l15_n849()
+ fun_l16_n848
+end
+
+def fun_l15_n850()
+ fun_l16_n956
+end
+
+def fun_l15_n851()
+ fun_l16_n608
+end
+
+def fun_l15_n852()
+ fun_l16_n787
+end
+
+def fun_l15_n853()
+ fun_l16_n527
+end
+
+def fun_l15_n854()
+ fun_l16_n426
+end
+
+def fun_l15_n855()
+ fun_l16_n330
+end
+
+def fun_l15_n856()
+ fun_l16_n687
+end
+
+def fun_l15_n857()
+ fun_l16_n672
+end
+
+def fun_l15_n858()
+ fun_l16_n133
+end
+
+def fun_l15_n859()
+ fun_l16_n515
+end
+
+def fun_l15_n860()
+ fun_l16_n20
+end
+
+def fun_l15_n861()
+ fun_l16_n419
+end
+
+def fun_l15_n862()
+ fun_l16_n239
+end
+
+def fun_l15_n863()
+ fun_l16_n379
+end
+
+def fun_l15_n864()
+ fun_l16_n241
+end
+
+def fun_l15_n865()
+ fun_l16_n713
+end
+
+def fun_l15_n866()
+ fun_l16_n705
+end
+
+def fun_l15_n867()
+ fun_l16_n487
+end
+
+def fun_l15_n868()
+ fun_l16_n959
+end
+
+def fun_l15_n869()
+ fun_l16_n914
+end
+
+def fun_l15_n870()
+ fun_l16_n325
+end
+
+def fun_l15_n871()
+ fun_l16_n983
+end
+
+def fun_l15_n872()
+ fun_l16_n363
+end
+
+def fun_l15_n873()
+ fun_l16_n617
+end
+
+def fun_l15_n874()
+ fun_l16_n420
+end
+
+def fun_l15_n875()
+ fun_l16_n732
+end
+
+def fun_l15_n876()
+ fun_l16_n560
+end
+
+def fun_l15_n877()
+ fun_l16_n318
+end
+
+def fun_l15_n878()
+ fun_l16_n97
+end
+
+def fun_l15_n879()
+ fun_l16_n242
+end
+
+def fun_l15_n880()
+ fun_l16_n801
+end
+
+def fun_l15_n881()
+ fun_l16_n56
+end
+
+def fun_l15_n882()
+ fun_l16_n68
+end
+
+def fun_l15_n883()
+ fun_l16_n625
+end
+
+def fun_l15_n884()
+ fun_l16_n400
+end
+
+def fun_l15_n885()
+ fun_l16_n405
+end
+
+def fun_l15_n886()
+ fun_l16_n778
+end
+
+def fun_l15_n887()
+ fun_l16_n865
+end
+
+def fun_l15_n888()
+ fun_l16_n737
+end
+
+def fun_l15_n889()
+ fun_l16_n233
+end
+
+def fun_l15_n890()
+ fun_l16_n594
+end
+
+def fun_l15_n891()
+ fun_l16_n240
+end
+
+def fun_l15_n892()
+ fun_l16_n511
+end
+
+def fun_l15_n893()
+ fun_l16_n711
+end
+
+def fun_l15_n894()
+ fun_l16_n238
+end
+
+def fun_l15_n895()
+ fun_l16_n903
+end
+
+def fun_l15_n896()
+ fun_l16_n506
+end
+
+def fun_l15_n897()
+ fun_l16_n794
+end
+
+def fun_l15_n898()
+ fun_l16_n812
+end
+
+def fun_l15_n899()
+ fun_l16_n829
+end
+
+def fun_l15_n900()
+ fun_l16_n686
+end
+
+def fun_l15_n901()
+ fun_l16_n302
+end
+
+def fun_l15_n902()
+ fun_l16_n947
+end
+
+def fun_l15_n903()
+ fun_l16_n107
+end
+
+def fun_l15_n904()
+ fun_l16_n79
+end
+
+def fun_l15_n905()
+ fun_l16_n570
+end
+
+def fun_l15_n906()
+ fun_l16_n567
+end
+
+def fun_l15_n907()
+ fun_l16_n853
+end
+
+def fun_l15_n908()
+ fun_l16_n49
+end
+
+def fun_l15_n909()
+ fun_l16_n721
+end
+
+def fun_l15_n910()
+ fun_l16_n376
+end
+
+def fun_l15_n911()
+ fun_l16_n513
+end
+
+def fun_l15_n912()
+ fun_l16_n863
+end
+
+def fun_l15_n913()
+ fun_l16_n692
+end
+
+def fun_l15_n914()
+ fun_l16_n391
+end
+
+def fun_l15_n915()
+ fun_l16_n263
+end
+
+def fun_l15_n916()
+ fun_l16_n159
+end
+
+def fun_l15_n917()
+ fun_l16_n291
+end
+
+def fun_l15_n918()
+ fun_l16_n290
+end
+
+def fun_l15_n919()
+ fun_l16_n328
+end
+
+def fun_l15_n920()
+ fun_l16_n838
+end
+
+def fun_l15_n921()
+ fun_l16_n66
+end
+
+def fun_l15_n922()
+ fun_l16_n821
+end
+
+def fun_l15_n923()
+ fun_l16_n549
+end
+
+def fun_l15_n924()
+ fun_l16_n235
+end
+
+def fun_l15_n925()
+ fun_l16_n800
+end
+
+def fun_l15_n926()
+ fun_l16_n486
+end
+
+def fun_l15_n927()
+ fun_l16_n824
+end
+
+def fun_l15_n928()
+ fun_l16_n881
+end
+
+def fun_l15_n929()
+ fun_l16_n772
+end
+
+def fun_l15_n930()
+ fun_l16_n563
+end
+
+def fun_l15_n931()
+ fun_l16_n99
+end
+
+def fun_l15_n932()
+ fun_l16_n691
+end
+
+def fun_l15_n933()
+ fun_l16_n983
+end
+
+def fun_l15_n934()
+ fun_l16_n593
+end
+
+def fun_l15_n935()
+ fun_l16_n611
+end
+
+def fun_l15_n936()
+ fun_l16_n600
+end
+
+def fun_l15_n937()
+ fun_l16_n892
+end
+
+def fun_l15_n938()
+ fun_l16_n653
+end
+
+def fun_l15_n939()
+ fun_l16_n78
+end
+
+def fun_l15_n940()
+ fun_l16_n139
+end
+
+def fun_l15_n941()
+ fun_l16_n995
+end
+
+def fun_l15_n942()
+ fun_l16_n63
+end
+
+def fun_l15_n943()
+ fun_l16_n466
+end
+
+def fun_l15_n944()
+ fun_l16_n740
+end
+
+def fun_l15_n945()
+ fun_l16_n870
+end
+
+def fun_l15_n946()
+ fun_l16_n373
+end
+
+def fun_l15_n947()
+ fun_l16_n375
+end
+
+def fun_l15_n948()
+ fun_l16_n360
+end
+
+def fun_l15_n949()
+ fun_l16_n526
+end
+
+def fun_l15_n950()
+ fun_l16_n100
+end
+
+def fun_l15_n951()
+ fun_l16_n644
+end
+
+def fun_l15_n952()
+ fun_l16_n773
+end
+
+def fun_l15_n953()
+ fun_l16_n311
+end
+
+def fun_l15_n954()
+ fun_l16_n152
+end
+
+def fun_l15_n955()
+ fun_l16_n754
+end
+
+def fun_l15_n956()
+ fun_l16_n31
+end
+
+def fun_l15_n957()
+ fun_l16_n501
+end
+
+def fun_l15_n958()
+ fun_l16_n333
+end
+
+def fun_l15_n959()
+ fun_l16_n952
+end
+
+def fun_l15_n960()
+ fun_l16_n753
+end
+
+def fun_l15_n961()
+ fun_l16_n694
+end
+
+def fun_l15_n962()
+ fun_l16_n82
+end
+
+def fun_l15_n963()
+ fun_l16_n204
+end
+
+def fun_l15_n964()
+ fun_l16_n910
+end
+
+def fun_l15_n965()
+ fun_l16_n127
+end
+
+def fun_l15_n966()
+ fun_l16_n203
+end
+
+def fun_l15_n967()
+ fun_l16_n760
+end
+
+def fun_l15_n968()
+ fun_l16_n718
+end
+
+def fun_l15_n969()
+ fun_l16_n446
+end
+
+def fun_l15_n970()
+ fun_l16_n595
+end
+
+def fun_l15_n971()
+ fun_l16_n165
+end
+
+def fun_l15_n972()
+ fun_l16_n393
+end
+
+def fun_l15_n973()
+ fun_l16_n766
+end
+
+def fun_l15_n974()
+ fun_l16_n276
+end
+
+def fun_l15_n975()
+ fun_l16_n97
+end
+
+def fun_l15_n976()
+ fun_l16_n319
+end
+
+def fun_l15_n977()
+ fun_l16_n333
+end
+
+def fun_l15_n978()
+ fun_l16_n635
+end
+
+def fun_l15_n979()
+ fun_l16_n466
+end
+
+def fun_l15_n980()
+ fun_l16_n841
+end
+
+def fun_l15_n981()
+ fun_l16_n415
+end
+
+def fun_l15_n982()
+ fun_l16_n630
+end
+
+def fun_l15_n983()
+ fun_l16_n19
+end
+
+def fun_l15_n984()
+ fun_l16_n901
+end
+
+def fun_l15_n985()
+ fun_l16_n933
+end
+
+def fun_l15_n986()
+ fun_l16_n558
+end
+
+def fun_l15_n987()
+ fun_l16_n357
+end
+
+def fun_l15_n988()
+ fun_l16_n929
+end
+
+def fun_l15_n989()
+ fun_l16_n871
+end
+
+def fun_l15_n990()
+ fun_l16_n967
+end
+
+def fun_l15_n991()
+ fun_l16_n803
+end
+
+def fun_l15_n992()
+ fun_l16_n484
+end
+
+def fun_l15_n993()
+ fun_l16_n270
+end
+
+def fun_l15_n994()
+ fun_l16_n670
+end
+
+def fun_l15_n995()
+ fun_l16_n77
+end
+
+def fun_l15_n996()
+ fun_l16_n480
+end
+
+def fun_l15_n997()
+ fun_l16_n279
+end
+
+def fun_l15_n998()
+ fun_l16_n109
+end
+
+def fun_l15_n999()
+ fun_l16_n333
+end
+
+def fun_l16_n0()
+ fun_l17_n358
+end
+
+def fun_l16_n1()
+ fun_l17_n388
+end
+
+def fun_l16_n2()
+ fun_l17_n450
+end
+
+def fun_l16_n3()
+ fun_l17_n274
+end
+
+def fun_l16_n4()
+ fun_l17_n83
+end
+
+def fun_l16_n5()
+ fun_l17_n148
+end
+
+def fun_l16_n6()
+ fun_l17_n370
+end
+
+def fun_l16_n7()
+ fun_l17_n956
+end
+
+def fun_l16_n8()
+ fun_l17_n137
+end
+
+def fun_l16_n9()
+ fun_l17_n702
+end
+
+def fun_l16_n10()
+ fun_l17_n296
+end
+
+def fun_l16_n11()
+ fun_l17_n44
+end
+
+def fun_l16_n12()
+ fun_l17_n937
+end
+
+def fun_l16_n13()
+ fun_l17_n100
+end
+
+def fun_l16_n14()
+ fun_l17_n599
+end
+
+def fun_l16_n15()
+ fun_l17_n757
+end
+
+def fun_l16_n16()
+ fun_l17_n831
+end
+
+def fun_l16_n17()
+ fun_l17_n753
+end
+
+def fun_l16_n18()
+ fun_l17_n726
+end
+
+def fun_l16_n19()
+ fun_l17_n126
+end
+
+def fun_l16_n20()
+ fun_l17_n106
+end
+
+def fun_l16_n21()
+ fun_l17_n46
+end
+
+def fun_l16_n22()
+ fun_l17_n56
+end
+
+def fun_l16_n23()
+ fun_l17_n16
+end
+
+def fun_l16_n24()
+ fun_l17_n298
+end
+
+def fun_l16_n25()
+ fun_l17_n173
+end
+
+def fun_l16_n26()
+ fun_l17_n479
+end
+
+def fun_l16_n27()
+ fun_l17_n304
+end
+
+def fun_l16_n28()
+ fun_l17_n426
+end
+
+def fun_l16_n29()
+ fun_l17_n214
+end
+
+def fun_l16_n30()
+ fun_l17_n818
+end
+
+def fun_l16_n31()
+ fun_l17_n362
+end
+
+def fun_l16_n32()
+ fun_l17_n392
+end
+
+def fun_l16_n33()
+ fun_l17_n751
+end
+
+def fun_l16_n34()
+ fun_l17_n719
+end
+
+def fun_l16_n35()
+ fun_l17_n258
+end
+
+def fun_l16_n36()
+ fun_l17_n128
+end
+
+def fun_l16_n37()
+ fun_l17_n95
+end
+
+def fun_l16_n38()
+ fun_l17_n30
+end
+
+def fun_l16_n39()
+ fun_l17_n539
+end
+
+def fun_l16_n40()
+ fun_l17_n139
+end
+
+def fun_l16_n41()
+ fun_l17_n309
+end
+
+def fun_l16_n42()
+ fun_l17_n943
+end
+
+def fun_l16_n43()
+ fun_l17_n242
+end
+
+def fun_l16_n44()
+ fun_l17_n402
+end
+
+def fun_l16_n45()
+ fun_l17_n173
+end
+
+def fun_l16_n46()
+ fun_l17_n328
+end
+
+def fun_l16_n47()
+ fun_l17_n883
+end
+
+def fun_l16_n48()
+ fun_l17_n992
+end
+
+def fun_l16_n49()
+ fun_l17_n921
+end
+
+def fun_l16_n50()
+ fun_l17_n130
+end
+
+def fun_l16_n51()
+ fun_l17_n374
+end
+
+def fun_l16_n52()
+ fun_l17_n555
+end
+
+def fun_l16_n53()
+ fun_l17_n965
+end
+
+def fun_l16_n54()
+ fun_l17_n353
+end
+
+def fun_l16_n55()
+ fun_l17_n525
+end
+
+def fun_l16_n56()
+ fun_l17_n569
+end
+
+def fun_l16_n57()
+ fun_l17_n156
+end
+
+def fun_l16_n58()
+ fun_l17_n695
+end
+
+def fun_l16_n59()
+ fun_l17_n864
+end
+
+def fun_l16_n60()
+ fun_l17_n415
+end
+
+def fun_l16_n61()
+ fun_l17_n605
+end
+
+def fun_l16_n62()
+ fun_l17_n995
+end
+
+def fun_l16_n63()
+ fun_l17_n794
+end
+
+def fun_l16_n64()
+ fun_l17_n813
+end
+
+def fun_l16_n65()
+ fun_l17_n839
+end
+
+def fun_l16_n66()
+ fun_l17_n273
+end
+
+def fun_l16_n67()
+ fun_l17_n223
+end
+
+def fun_l16_n68()
+ fun_l17_n168
+end
+
+def fun_l16_n69()
+ fun_l17_n798
+end
+
+def fun_l16_n70()
+ fun_l17_n892
+end
+
+def fun_l16_n71()
+ fun_l17_n966
+end
+
+def fun_l16_n72()
+ fun_l17_n102
+end
+
+def fun_l16_n73()
+ fun_l17_n209
+end
+
+def fun_l16_n74()
+ fun_l17_n618
+end
+
+def fun_l16_n75()
+ fun_l17_n432
+end
+
+def fun_l16_n76()
+ fun_l17_n254
+end
+
+def fun_l16_n77()
+ fun_l17_n413
+end
+
+def fun_l16_n78()
+ fun_l17_n908
+end
+
+def fun_l16_n79()
+ fun_l17_n519
+end
+
+def fun_l16_n80()
+ fun_l17_n67
+end
+
+def fun_l16_n81()
+ fun_l17_n914
+end
+
+def fun_l16_n82()
+ fun_l17_n356
+end
+
+def fun_l16_n83()
+ fun_l17_n138
+end
+
+def fun_l16_n84()
+ fun_l17_n714
+end
+
+def fun_l16_n85()
+ fun_l17_n803
+end
+
+def fun_l16_n86()
+ fun_l17_n770
+end
+
+def fun_l16_n87()
+ fun_l17_n813
+end
+
+def fun_l16_n88()
+ fun_l17_n752
+end
+
+def fun_l16_n89()
+ fun_l17_n580
+end
+
+def fun_l16_n90()
+ fun_l17_n368
+end
+
+def fun_l16_n91()
+ fun_l17_n169
+end
+
+def fun_l16_n92()
+ fun_l17_n565
+end
+
+def fun_l16_n93()
+ fun_l17_n111
+end
+
+def fun_l16_n94()
+ fun_l17_n911
+end
+
+def fun_l16_n95()
+ fun_l17_n448
+end
+
+def fun_l16_n96()
+ fun_l17_n455
+end
+
+def fun_l16_n97()
+ fun_l17_n76
+end
+
+def fun_l16_n98()
+ fun_l17_n27
+end
+
+def fun_l16_n99()
+ fun_l17_n884
+end
+
+def fun_l16_n100()
+ fun_l17_n144
+end
+
+def fun_l16_n101()
+ fun_l17_n344
+end
+
+def fun_l16_n102()
+ fun_l17_n293
+end
+
+def fun_l16_n103()
+ fun_l17_n91
+end
+
+def fun_l16_n104()
+ fun_l17_n398
+end
+
+def fun_l16_n105()
+ fun_l17_n398
+end
+
+def fun_l16_n106()
+ fun_l17_n216
+end
+
+def fun_l16_n107()
+ fun_l17_n22
+end
+
+def fun_l16_n108()
+ fun_l17_n901
+end
+
+def fun_l16_n109()
+ fun_l17_n817
+end
+
+def fun_l16_n110()
+ fun_l17_n574
+end
+
+def fun_l16_n111()
+ fun_l17_n546
+end
+
+def fun_l16_n112()
+ fun_l17_n704
+end
+
+def fun_l16_n113()
+ fun_l17_n184
+end
+
+def fun_l16_n114()
+ fun_l17_n993
+end
+
+def fun_l16_n115()
+ fun_l17_n582
+end
+
+def fun_l16_n116()
+ fun_l17_n943
+end
+
+def fun_l16_n117()
+ fun_l17_n692
+end
+
+def fun_l16_n118()
+ fun_l17_n203
+end
+
+def fun_l16_n119()
+ fun_l17_n283
+end
+
+def fun_l16_n120()
+ fun_l17_n600
+end
+
+def fun_l16_n121()
+ fun_l17_n953
+end
+
+def fun_l16_n122()
+ fun_l17_n810
+end
+
+def fun_l16_n123()
+ fun_l17_n861
+end
+
+def fun_l16_n124()
+ fun_l17_n680
+end
+
+def fun_l16_n125()
+ fun_l17_n401
+end
+
+def fun_l16_n126()
+ fun_l17_n905
+end
+
+def fun_l16_n127()
+ fun_l17_n376
+end
+
+def fun_l16_n128()
+ fun_l17_n231
+end
+
+def fun_l16_n129()
+ fun_l17_n693
+end
+
+def fun_l16_n130()
+ fun_l17_n219
+end
+
+def fun_l16_n131()
+ fun_l17_n560
+end
+
+def fun_l16_n132()
+ fun_l17_n17
+end
+
+def fun_l16_n133()
+ fun_l17_n706
+end
+
+def fun_l16_n134()
+ fun_l17_n355
+end
+
+def fun_l16_n135()
+ fun_l17_n309
+end
+
+def fun_l16_n136()
+ fun_l17_n514
+end
+
+def fun_l16_n137()
+ fun_l17_n428
+end
+
+def fun_l16_n138()
+ fun_l17_n80
+end
+
+def fun_l16_n139()
+ fun_l17_n548
+end
+
+def fun_l16_n140()
+ fun_l17_n514
+end
+
+def fun_l16_n141()
+ fun_l17_n316
+end
+
+def fun_l16_n142()
+ fun_l17_n791
+end
+
+def fun_l16_n143()
+ fun_l17_n70
+end
+
+def fun_l16_n144()
+ fun_l17_n953
+end
+
+def fun_l16_n145()
+ fun_l17_n416
+end
+
+def fun_l16_n146()
+ fun_l17_n989
+end
+
+def fun_l16_n147()
+ fun_l17_n604
+end
+
+def fun_l16_n148()
+ fun_l17_n845
+end
+
+def fun_l16_n149()
+ fun_l17_n576
+end
+
+def fun_l16_n150()
+ fun_l17_n831
+end
+
+def fun_l16_n151()
+ fun_l17_n727
+end
+
+def fun_l16_n152()
+ fun_l17_n231
+end
+
+def fun_l16_n153()
+ fun_l17_n405
+end
+
+def fun_l16_n154()
+ fun_l17_n643
+end
+
+def fun_l16_n155()
+ fun_l17_n117
+end
+
+def fun_l16_n156()
+ fun_l17_n842
+end
+
+def fun_l16_n157()
+ fun_l17_n522
+end
+
+def fun_l16_n158()
+ fun_l17_n415
+end
+
+def fun_l16_n159()
+ fun_l17_n239
+end
+
+def fun_l16_n160()
+ fun_l17_n512
+end
+
+def fun_l16_n161()
+ fun_l17_n247
+end
+
+def fun_l16_n162()
+ fun_l17_n798
+end
+
+def fun_l16_n163()
+ fun_l17_n771
+end
+
+def fun_l16_n164()
+ fun_l17_n47
+end
+
+def fun_l16_n165()
+ fun_l17_n803
+end
+
+def fun_l16_n166()
+ fun_l17_n500
+end
+
+def fun_l16_n167()
+ fun_l17_n797
+end
+
+def fun_l16_n168()
+ fun_l17_n467
+end
+
+def fun_l16_n169()
+ fun_l17_n893
+end
+
+def fun_l16_n170()
+ fun_l17_n900
+end
+
+def fun_l16_n171()
+ fun_l17_n539
+end
+
+def fun_l16_n172()
+ fun_l17_n631
+end
+
+def fun_l16_n173()
+ fun_l17_n113
+end
+
+def fun_l16_n174()
+ fun_l17_n674
+end
+
+def fun_l16_n175()
+ fun_l17_n827
+end
+
+def fun_l16_n176()
+ fun_l17_n751
+end
+
+def fun_l16_n177()
+ fun_l17_n600
+end
+
+def fun_l16_n178()
+ fun_l17_n290
+end
+
+def fun_l16_n179()
+ fun_l17_n947
+end
+
+def fun_l16_n180()
+ fun_l17_n718
+end
+
+def fun_l16_n181()
+ fun_l17_n531
+end
+
+def fun_l16_n182()
+ fun_l17_n849
+end
+
+def fun_l16_n183()
+ fun_l17_n310
+end
+
+def fun_l16_n184()
+ fun_l17_n795
+end
+
+def fun_l16_n185()
+ fun_l17_n65
+end
+
+def fun_l16_n186()
+ fun_l17_n242
+end
+
+def fun_l16_n187()
+ fun_l17_n832
+end
+
+def fun_l16_n188()
+ fun_l17_n749
+end
+
+def fun_l16_n189()
+ fun_l17_n826
+end
+
+def fun_l16_n190()
+ fun_l17_n244
+end
+
+def fun_l16_n191()
+ fun_l17_n279
+end
+
+def fun_l16_n192()
+ fun_l17_n746
+end
+
+def fun_l16_n193()
+ fun_l17_n199
+end
+
+def fun_l16_n194()
+ fun_l17_n458
+end
+
+def fun_l16_n195()
+ fun_l17_n161
+end
+
+def fun_l16_n196()
+ fun_l17_n584
+end
+
+def fun_l16_n197()
+ fun_l17_n400
+end
+
+def fun_l16_n198()
+ fun_l17_n598
+end
+
+def fun_l16_n199()
+ fun_l17_n685
+end
+
+def fun_l16_n200()
+ fun_l17_n939
+end
+
+def fun_l16_n201()
+ fun_l17_n374
+end
+
+def fun_l16_n202()
+ fun_l17_n463
+end
+
+def fun_l16_n203()
+ fun_l17_n677
+end
+
+def fun_l16_n204()
+ fun_l17_n857
+end
+
+def fun_l16_n205()
+ fun_l17_n39
+end
+
+def fun_l16_n206()
+ fun_l17_n899
+end
+
+def fun_l16_n207()
+ fun_l17_n733
+end
+
+def fun_l16_n208()
+ fun_l17_n137
+end
+
+def fun_l16_n209()
+ fun_l17_n988
+end
+
+def fun_l16_n210()
+ fun_l17_n792
+end
+
+def fun_l16_n211()
+ fun_l17_n861
+end
+
+def fun_l16_n212()
+ fun_l17_n889
+end
+
+def fun_l16_n213()
+ fun_l17_n933
+end
+
+def fun_l16_n214()
+ fun_l17_n898
+end
+
+def fun_l16_n215()
+ fun_l17_n723
+end
+
+def fun_l16_n216()
+ fun_l17_n116
+end
+
+def fun_l16_n217()
+ fun_l17_n251
+end
+
+def fun_l16_n218()
+ fun_l17_n586
+end
+
+def fun_l16_n219()
+ fun_l17_n428
+end
+
+def fun_l16_n220()
+ fun_l17_n53
+end
+
+def fun_l16_n221()
+ fun_l17_n611
+end
+
+def fun_l16_n222()
+ fun_l17_n480
+end
+
+def fun_l16_n223()
+ fun_l17_n2
+end
+
+def fun_l16_n224()
+ fun_l17_n623
+end
+
+def fun_l16_n225()
+ fun_l17_n178
+end
+
+def fun_l16_n226()
+ fun_l17_n938
+end
+
+def fun_l16_n227()
+ fun_l17_n284
+end
+
+def fun_l16_n228()
+ fun_l17_n925
+end
+
+def fun_l16_n229()
+ fun_l17_n899
+end
+
+def fun_l16_n230()
+ fun_l17_n314
+end
+
+def fun_l16_n231()
+ fun_l17_n931
+end
+
+def fun_l16_n232()
+ fun_l17_n103
+end
+
+def fun_l16_n233()
+ fun_l17_n201
+end
+
+def fun_l16_n234()
+ fun_l17_n139
+end
+
+def fun_l16_n235()
+ fun_l17_n509
+end
+
+def fun_l16_n236()
+ fun_l17_n168
+end
+
+def fun_l16_n237()
+ fun_l17_n667
+end
+
+def fun_l16_n238()
+ fun_l17_n998
+end
+
+def fun_l16_n239()
+ fun_l17_n931
+end
+
+def fun_l16_n240()
+ fun_l17_n159
+end
+
+def fun_l16_n241()
+ fun_l17_n402
+end
+
+def fun_l16_n242()
+ fun_l17_n488
+end
+
+def fun_l16_n243()
+ fun_l17_n319
+end
+
+def fun_l16_n244()
+ fun_l17_n209
+end
+
+def fun_l16_n245()
+ fun_l17_n409
+end
+
+def fun_l16_n246()
+ fun_l17_n712
+end
+
+def fun_l16_n247()
+ fun_l17_n680
+end
+
+def fun_l16_n248()
+ fun_l17_n57
+end
+
+def fun_l16_n249()
+ fun_l17_n68
+end
+
+def fun_l16_n250()
+ fun_l17_n676
+end
+
+def fun_l16_n251()
+ fun_l17_n870
+end
+
+def fun_l16_n252()
+ fun_l17_n718
+end
+
+def fun_l16_n253()
+ fun_l17_n753
+end
+
+def fun_l16_n254()
+ fun_l17_n317
+end
+
+def fun_l16_n255()
+ fun_l17_n905
+end
+
+def fun_l16_n256()
+ fun_l17_n524
+end
+
+def fun_l16_n257()
+ fun_l17_n496
+end
+
+def fun_l16_n258()
+ fun_l17_n253
+end
+
+def fun_l16_n259()
+ fun_l17_n32
+end
+
+def fun_l16_n260()
+ fun_l17_n299
+end
+
+def fun_l16_n261()
+ fun_l17_n291
+end
+
+def fun_l16_n262()
+ fun_l17_n516
+end
+
+def fun_l16_n263()
+ fun_l17_n542
+end
+
+def fun_l16_n264()
+ fun_l17_n550
+end
+
+def fun_l16_n265()
+ fun_l17_n886
+end
+
+def fun_l16_n266()
+ fun_l17_n428
+end
+
+def fun_l16_n267()
+ fun_l17_n741
+end
+
+def fun_l16_n268()
+ fun_l17_n711
+end
+
+def fun_l16_n269()
+ fun_l17_n709
+end
+
+def fun_l16_n270()
+ fun_l17_n71
+end
+
+def fun_l16_n271()
+ fun_l17_n256
+end
+
+def fun_l16_n272()
+ fun_l17_n585
+end
+
+def fun_l16_n273()
+ fun_l17_n478
+end
+
+def fun_l16_n274()
+ fun_l17_n314
+end
+
+def fun_l16_n275()
+ fun_l17_n223
+end
+
+def fun_l16_n276()
+ fun_l17_n691
+end
+
+def fun_l16_n277()
+ fun_l17_n637
+end
+
+def fun_l16_n278()
+ fun_l17_n218
+end
+
+def fun_l16_n279()
+ fun_l17_n675
+end
+
+def fun_l16_n280()
+ fun_l17_n705
+end
+
+def fun_l16_n281()
+ fun_l17_n492
+end
+
+def fun_l16_n282()
+ fun_l17_n426
+end
+
+def fun_l16_n283()
+ fun_l17_n366
+end
+
+def fun_l16_n284()
+ fun_l17_n533
+end
+
+def fun_l16_n285()
+ fun_l17_n980
+end
+
+def fun_l16_n286()
+ fun_l17_n660
+end
+
+def fun_l16_n287()
+ fun_l17_n550
+end
+
+def fun_l16_n288()
+ fun_l17_n37
+end
+
+def fun_l16_n289()
+ fun_l17_n453
+end
+
+def fun_l16_n290()
+ fun_l17_n687
+end
+
+def fun_l16_n291()
+ fun_l17_n82
+end
+
+def fun_l16_n292()
+ fun_l17_n327
+end
+
+def fun_l16_n293()
+ fun_l17_n842
+end
+
+def fun_l16_n294()
+ fun_l17_n201
+end
+
+def fun_l16_n295()
+ fun_l17_n26
+end
+
+def fun_l16_n296()
+ fun_l17_n153
+end
+
+def fun_l16_n297()
+ fun_l17_n684
+end
+
+def fun_l16_n298()
+ fun_l17_n752
+end
+
+def fun_l16_n299()
+ fun_l17_n763
+end
+
+def fun_l16_n300()
+ fun_l17_n651
+end
+
+def fun_l16_n301()
+ fun_l17_n605
+end
+
+def fun_l16_n302()
+ fun_l17_n48
+end
+
+def fun_l16_n303()
+ fun_l17_n71
+end
+
+def fun_l16_n304()
+ fun_l17_n57
+end
+
+def fun_l16_n305()
+ fun_l17_n72
+end
+
+def fun_l16_n306()
+ fun_l17_n561
+end
+
+def fun_l16_n307()
+ fun_l17_n10
+end
+
+def fun_l16_n308()
+ fun_l17_n543
+end
+
+def fun_l16_n309()
+ fun_l17_n17
+end
+
+def fun_l16_n310()
+ fun_l17_n340
+end
+
+def fun_l16_n311()
+ fun_l17_n184
+end
+
+def fun_l16_n312()
+ fun_l17_n208
+end
+
+def fun_l16_n313()
+ fun_l17_n46
+end
+
+def fun_l16_n314()
+ fun_l17_n386
+end
+
+def fun_l16_n315()
+ fun_l17_n258
+end
+
+def fun_l16_n316()
+ fun_l17_n594
+end
+
+def fun_l16_n317()
+ fun_l17_n968
+end
+
+def fun_l16_n318()
+ fun_l17_n403
+end
+
+def fun_l16_n319()
+ fun_l17_n256
+end
+
+def fun_l16_n320()
+ fun_l17_n212
+end
+
+def fun_l16_n321()
+ fun_l17_n567
+end
+
+def fun_l16_n322()
+ fun_l17_n61
+end
+
+def fun_l16_n323()
+ fun_l17_n925
+end
+
+def fun_l16_n324()
+ fun_l17_n679
+end
+
+def fun_l16_n325()
+ fun_l17_n136
+end
+
+def fun_l16_n326()
+ fun_l17_n403
+end
+
+def fun_l16_n327()
+ fun_l17_n35
+end
+
+def fun_l16_n328()
+ fun_l17_n833
+end
+
+def fun_l16_n329()
+ fun_l17_n925
+end
+
+def fun_l16_n330()
+ fun_l17_n193
+end
+
+def fun_l16_n331()
+ fun_l17_n474
+end
+
+def fun_l16_n332()
+ fun_l17_n271
+end
+
+def fun_l16_n333()
+ fun_l17_n604
+end
+
+def fun_l16_n334()
+ fun_l17_n570
+end
+
+def fun_l16_n335()
+ fun_l17_n110
+end
+
+def fun_l16_n336()
+ fun_l17_n920
+end
+
+def fun_l16_n337()
+ fun_l17_n388
+end
+
+def fun_l16_n338()
+ fun_l17_n207
+end
+
+def fun_l16_n339()
+ fun_l17_n899
+end
+
+def fun_l16_n340()
+ fun_l17_n337
+end
+
+def fun_l16_n341()
+ fun_l17_n611
+end
+
+def fun_l16_n342()
+ fun_l17_n474
+end
+
+def fun_l16_n343()
+ fun_l17_n71
+end
+
+def fun_l16_n344()
+ fun_l17_n347
+end
+
+def fun_l16_n345()
+ fun_l17_n911
+end
+
+def fun_l16_n346()
+ fun_l17_n625
+end
+
+def fun_l16_n347()
+ fun_l17_n683
+end
+
+def fun_l16_n348()
+ fun_l17_n628
+end
+
+def fun_l16_n349()
+ fun_l17_n73
+end
+
+def fun_l16_n350()
+ fun_l17_n710
+end
+
+def fun_l16_n351()
+ fun_l17_n550
+end
+
+def fun_l16_n352()
+ fun_l17_n96
+end
+
+def fun_l16_n353()
+ fun_l17_n815
+end
+
+def fun_l16_n354()
+ fun_l17_n494
+end
+
+def fun_l16_n355()
+ fun_l17_n831
+end
+
+def fun_l16_n356()
+ fun_l17_n174
+end
+
+def fun_l16_n357()
+ fun_l17_n196
+end
+
+def fun_l16_n358()
+ fun_l17_n191
+end
+
+def fun_l16_n359()
+ fun_l17_n278
+end
+
+def fun_l16_n360()
+ fun_l17_n433
+end
+
+def fun_l16_n361()
+ fun_l17_n673
+end
+
+def fun_l16_n362()
+ fun_l17_n313
+end
+
+def fun_l16_n363()
+ fun_l17_n517
+end
+
+def fun_l16_n364()
+ fun_l17_n392
+end
+
+def fun_l16_n365()
+ fun_l17_n574
+end
+
+def fun_l16_n366()
+ fun_l17_n531
+end
+
+def fun_l16_n367()
+ fun_l17_n222
+end
+
+def fun_l16_n368()
+ fun_l17_n226
+end
+
+def fun_l16_n369()
+ fun_l17_n309
+end
+
+def fun_l16_n370()
+ fun_l17_n125
+end
+
+def fun_l16_n371()
+ fun_l17_n523
+end
+
+def fun_l16_n372()
+ fun_l17_n261
+end
+
+def fun_l16_n373()
+ fun_l17_n830
+end
+
+def fun_l16_n374()
+ fun_l17_n851
+end
+
+def fun_l16_n375()
+ fun_l17_n845
+end
+
+def fun_l16_n376()
+ fun_l17_n76
+end
+
+def fun_l16_n377()
+ fun_l17_n405
+end
+
+def fun_l16_n378()
+ fun_l17_n972
+end
+
+def fun_l16_n379()
+ fun_l17_n769
+end
+
+def fun_l16_n380()
+ fun_l17_n246
+end
+
+def fun_l16_n381()
+ fun_l17_n95
+end
+
+def fun_l16_n382()
+ fun_l17_n768
+end
+
+def fun_l16_n383()
+ fun_l17_n12
+end
+
+def fun_l16_n384()
+ fun_l17_n164
+end
+
+def fun_l16_n385()
+ fun_l17_n579
+end
+
+def fun_l16_n386()
+ fun_l17_n241
+end
+
+def fun_l16_n387()
+ fun_l17_n913
+end
+
+def fun_l16_n388()
+ fun_l17_n518
+end
+
+def fun_l16_n389()
+ fun_l17_n376
+end
+
+def fun_l16_n390()
+ fun_l17_n256
+end
+
+def fun_l16_n391()
+ fun_l17_n25
+end
+
+def fun_l16_n392()
+ fun_l17_n699
+end
+
+def fun_l16_n393()
+ fun_l17_n808
+end
+
+def fun_l16_n394()
+ fun_l17_n234
+end
+
+def fun_l16_n395()
+ fun_l17_n517
+end
+
+def fun_l16_n396()
+ fun_l17_n172
+end
+
+def fun_l16_n397()
+ fun_l17_n811
+end
+
+def fun_l16_n398()
+ fun_l17_n513
+end
+
+def fun_l16_n399()
+ fun_l17_n144
+end
+
+def fun_l16_n400()
+ fun_l17_n92
+end
+
+def fun_l16_n401()
+ fun_l17_n599
+end
+
+def fun_l16_n402()
+ fun_l17_n394
+end
+
+def fun_l16_n403()
+ fun_l17_n17
+end
+
+def fun_l16_n404()
+ fun_l17_n450
+end
+
+def fun_l16_n405()
+ fun_l17_n46
+end
+
+def fun_l16_n406()
+ fun_l17_n819
+end
+
+def fun_l16_n407()
+ fun_l17_n955
+end
+
+def fun_l16_n408()
+ fun_l17_n261
+end
+
+def fun_l16_n409()
+ fun_l17_n695
+end
+
+def fun_l16_n410()
+ fun_l17_n90
+end
+
+def fun_l16_n411()
+ fun_l17_n93
+end
+
+def fun_l16_n412()
+ fun_l17_n529
+end
+
+def fun_l16_n413()
+ fun_l17_n831
+end
+
+def fun_l16_n414()
+ fun_l17_n107
+end
+
+def fun_l16_n415()
+ fun_l17_n977
+end
+
+def fun_l16_n416()
+ fun_l17_n891
+end
+
+def fun_l16_n417()
+ fun_l17_n256
+end
+
+def fun_l16_n418()
+ fun_l17_n45
+end
+
+def fun_l16_n419()
+ fun_l17_n862
+end
+
+def fun_l16_n420()
+ fun_l17_n294
+end
+
+def fun_l16_n421()
+ fun_l17_n421
+end
+
+def fun_l16_n422()
+ fun_l17_n749
+end
+
+def fun_l16_n423()
+ fun_l17_n689
+end
+
+def fun_l16_n424()
+ fun_l17_n524
+end
+
+def fun_l16_n425()
+ fun_l17_n946
+end
+
+def fun_l16_n426()
+ fun_l17_n222
+end
+
+def fun_l16_n427()
+ fun_l17_n146
+end
+
+def fun_l16_n428()
+ fun_l17_n219
+end
+
+def fun_l16_n429()
+ fun_l17_n380
+end
+
+def fun_l16_n430()
+ fun_l17_n371
+end
+
+def fun_l16_n431()
+ fun_l17_n813
+end
+
+def fun_l16_n432()
+ fun_l17_n546
+end
+
+def fun_l16_n433()
+ fun_l17_n429
+end
+
+def fun_l16_n434()
+ fun_l17_n672
+end
+
+def fun_l16_n435()
+ fun_l17_n374
+end
+
+def fun_l16_n436()
+ fun_l17_n695
+end
+
+def fun_l16_n437()
+ fun_l17_n682
+end
+
+def fun_l16_n438()
+ fun_l17_n894
+end
+
+def fun_l16_n439()
+ fun_l17_n268
+end
+
+def fun_l16_n440()
+ fun_l17_n393
+end
+
+def fun_l16_n441()
+ fun_l17_n852
+end
+
+def fun_l16_n442()
+ fun_l17_n481
+end
+
+def fun_l16_n443()
+ fun_l17_n598
+end
+
+def fun_l16_n444()
+ fun_l17_n851
+end
+
+def fun_l16_n445()
+ fun_l17_n132
+end
+
+def fun_l16_n446()
+ fun_l17_n357
+end
+
+def fun_l16_n447()
+ fun_l17_n132
+end
+
+def fun_l16_n448()
+ fun_l17_n829
+end
+
+def fun_l16_n449()
+ fun_l17_n591
+end
+
+def fun_l16_n450()
+ fun_l17_n437
+end
+
+def fun_l16_n451()
+ fun_l17_n108
+end
+
+def fun_l16_n452()
+ fun_l17_n898
+end
+
+def fun_l16_n453()
+ fun_l17_n263
+end
+
+def fun_l16_n454()
+ fun_l17_n942
+end
+
+def fun_l16_n455()
+ fun_l17_n470
+end
+
+def fun_l16_n456()
+ fun_l17_n427
+end
+
+def fun_l16_n457()
+ fun_l17_n884
+end
+
+def fun_l16_n458()
+ fun_l17_n413
+end
+
+def fun_l16_n459()
+ fun_l17_n105
+end
+
+def fun_l16_n460()
+ fun_l17_n75
+end
+
+def fun_l16_n461()
+ fun_l17_n149
+end
+
+def fun_l16_n462()
+ fun_l17_n133
+end
+
+def fun_l16_n463()
+ fun_l17_n173
+end
+
+def fun_l16_n464()
+ fun_l17_n232
+end
+
+def fun_l16_n465()
+ fun_l17_n909
+end
+
+def fun_l16_n466()
+ fun_l17_n400
+end
+
+def fun_l16_n467()
+ fun_l17_n500
+end
+
+def fun_l16_n468()
+ fun_l17_n446
+end
+
+def fun_l16_n469()
+ fun_l17_n288
+end
+
+def fun_l16_n470()
+ fun_l17_n228
+end
+
+def fun_l16_n471()
+ fun_l17_n169
+end
+
+def fun_l16_n472()
+ fun_l17_n10
+end
+
+def fun_l16_n473()
+ fun_l17_n538
+end
+
+def fun_l16_n474()
+ fun_l17_n722
+end
+
+def fun_l16_n475()
+ fun_l17_n430
+end
+
+def fun_l16_n476()
+ fun_l17_n687
+end
+
+def fun_l16_n477()
+ fun_l17_n932
+end
+
+def fun_l16_n478()
+ fun_l17_n658
+end
+
+def fun_l16_n479()
+ fun_l17_n104
+end
+
+def fun_l16_n480()
+ fun_l17_n723
+end
+
+def fun_l16_n481()
+ fun_l17_n121
+end
+
+def fun_l16_n482()
+ fun_l17_n836
+end
+
+def fun_l16_n483()
+ fun_l17_n860
+end
+
+def fun_l16_n484()
+ fun_l17_n583
+end
+
+def fun_l16_n485()
+ fun_l17_n582
+end
+
+def fun_l16_n486()
+ fun_l17_n470
+end
+
+def fun_l16_n487()
+ fun_l17_n103
+end
+
+def fun_l16_n488()
+ fun_l17_n69
+end
+
+def fun_l16_n489()
+ fun_l17_n164
+end
+
+def fun_l16_n490()
+ fun_l17_n218
+end
+
+def fun_l16_n491()
+ fun_l17_n458
+end
+
+def fun_l16_n492()
+ fun_l17_n653
+end
+
+def fun_l16_n493()
+ fun_l17_n367
+end
+
+def fun_l16_n494()
+ fun_l17_n40
+end
+
+def fun_l16_n495()
+ fun_l17_n533
+end
+
+def fun_l16_n496()
+ fun_l17_n614
+end
+
+def fun_l16_n497()
+ fun_l17_n228
+end
+
+def fun_l16_n498()
+ fun_l17_n172
+end
+
+def fun_l16_n499()
+ fun_l17_n101
+end
+
+def fun_l16_n500()
+ fun_l17_n843
+end
+
+def fun_l16_n501()
+ fun_l17_n710
+end
+
+def fun_l16_n502()
+ fun_l17_n109
+end
+
+def fun_l16_n503()
+ fun_l17_n858
+end
+
+def fun_l16_n504()
+ fun_l17_n81
+end
+
+def fun_l16_n505()
+ fun_l17_n951
+end
+
+def fun_l16_n506()
+ fun_l17_n303
+end
+
+def fun_l16_n507()
+ fun_l17_n591
+end
+
+def fun_l16_n508()
+ fun_l17_n956
+end
+
+def fun_l16_n509()
+ fun_l17_n207
+end
+
+def fun_l16_n510()
+ fun_l17_n113
+end
+
+def fun_l16_n511()
+ fun_l17_n875
+end
+
+def fun_l16_n512()
+ fun_l17_n514
+end
+
+def fun_l16_n513()
+ fun_l17_n990
+end
+
+def fun_l16_n514()
+ fun_l17_n418
+end
+
+def fun_l16_n515()
+ fun_l17_n849
+end
+
+def fun_l16_n516()
+ fun_l17_n491
+end
+
+def fun_l16_n517()
+ fun_l17_n740
+end
+
+def fun_l16_n518()
+ fun_l17_n46
+end
+
+def fun_l16_n519()
+ fun_l17_n923
+end
+
+def fun_l16_n520()
+ fun_l17_n632
+end
+
+def fun_l16_n521()
+ fun_l17_n198
+end
+
+def fun_l16_n522()
+ fun_l17_n441
+end
+
+def fun_l16_n523()
+ fun_l17_n291
+end
+
+def fun_l16_n524()
+ fun_l17_n32
+end
+
+def fun_l16_n525()
+ fun_l17_n600
+end
+
+def fun_l16_n526()
+ fun_l17_n536
+end
+
+def fun_l16_n527()
+ fun_l17_n702
+end
+
+def fun_l16_n528()
+ fun_l17_n193
+end
+
+def fun_l16_n529()
+ fun_l17_n155
+end
+
+def fun_l16_n530()
+ fun_l17_n957
+end
+
+def fun_l16_n531()
+ fun_l17_n543
+end
+
+def fun_l16_n532()
+ fun_l17_n932
+end
+
+def fun_l16_n533()
+ fun_l17_n685
+end
+
+def fun_l16_n534()
+ fun_l17_n56
+end
+
+def fun_l16_n535()
+ fun_l17_n488
+end
+
+def fun_l16_n536()
+ fun_l17_n894
+end
+
+def fun_l16_n537()
+ fun_l17_n753
+end
+
+def fun_l16_n538()
+ fun_l17_n577
+end
+
+def fun_l16_n539()
+ fun_l17_n827
+end
+
+def fun_l16_n540()
+ fun_l17_n619
+end
+
+def fun_l16_n541()
+ fun_l17_n144
+end
+
+def fun_l16_n542()
+ fun_l17_n756
+end
+
+def fun_l16_n543()
+ fun_l17_n32
+end
+
+def fun_l16_n544()
+ fun_l17_n774
+end
+
+def fun_l16_n545()
+ fun_l17_n143
+end
+
+def fun_l16_n546()
+ fun_l17_n605
+end
+
+def fun_l16_n547()
+ fun_l17_n573
+end
+
+def fun_l16_n548()
+ fun_l17_n242
+end
+
+def fun_l16_n549()
+ fun_l17_n522
+end
+
+def fun_l16_n550()
+ fun_l17_n208
+end
+
+def fun_l16_n551()
+ fun_l17_n740
+end
+
+def fun_l16_n552()
+ fun_l17_n972
+end
+
+def fun_l16_n553()
+ fun_l17_n390
+end
+
+def fun_l16_n554()
+ fun_l17_n889
+end
+
+def fun_l16_n555()
+ fun_l17_n60
+end
+
+def fun_l16_n556()
+ fun_l17_n682
+end
+
+def fun_l16_n557()
+ fun_l17_n592
+end
+
+def fun_l16_n558()
+ fun_l17_n480
+end
+
+def fun_l16_n559()
+ fun_l17_n963
+end
+
+def fun_l16_n560()
+ fun_l17_n128
+end
+
+def fun_l16_n561()
+ fun_l17_n167
+end
+
+def fun_l16_n562()
+ fun_l17_n415
+end
+
+def fun_l16_n563()
+ fun_l17_n199
+end
+
+def fun_l16_n564()
+ fun_l17_n926
+end
+
+def fun_l16_n565()
+ fun_l17_n165
+end
+
+def fun_l16_n566()
+ fun_l17_n226
+end
+
+def fun_l16_n567()
+ fun_l17_n346
+end
+
+def fun_l16_n568()
+ fun_l17_n351
+end
+
+def fun_l16_n569()
+ fun_l17_n934
+end
+
+def fun_l16_n570()
+ fun_l17_n658
+end
+
+def fun_l16_n571()
+ fun_l17_n941
+end
+
+def fun_l16_n572()
+ fun_l17_n20
+end
+
+def fun_l16_n573()
+ fun_l17_n769
+end
+
+def fun_l16_n574()
+ fun_l17_n419
+end
+
+def fun_l16_n575()
+ fun_l17_n51
+end
+
+def fun_l16_n576()
+ fun_l17_n809
+end
+
+def fun_l16_n577()
+ fun_l17_n315
+end
+
+def fun_l16_n578()
+ fun_l17_n479
+end
+
+def fun_l16_n579()
+ fun_l17_n99
+end
+
+def fun_l16_n580()
+ fun_l17_n675
+end
+
+def fun_l16_n581()
+ fun_l17_n381
+end
+
+def fun_l16_n582()
+ fun_l17_n340
+end
+
+def fun_l16_n583()
+ fun_l17_n569
+end
+
+def fun_l16_n584()
+ fun_l17_n697
+end
+
+def fun_l16_n585()
+ fun_l17_n376
+end
+
+def fun_l16_n586()
+ fun_l17_n179
+end
+
+def fun_l16_n587()
+ fun_l17_n266
+end
+
+def fun_l16_n588()
+ fun_l17_n638
+end
+
+def fun_l16_n589()
+ fun_l17_n236
+end
+
+def fun_l16_n590()
+ fun_l17_n293
+end
+
+def fun_l16_n591()
+ fun_l17_n310
+end
+
+def fun_l16_n592()
+ fun_l17_n213
+end
+
+def fun_l16_n593()
+ fun_l17_n716
+end
+
+def fun_l16_n594()
+ fun_l17_n563
+end
+
+def fun_l16_n595()
+ fun_l17_n781
+end
+
+def fun_l16_n596()
+ fun_l17_n961
+end
+
+def fun_l16_n597()
+ fun_l17_n445
+end
+
+def fun_l16_n598()
+ fun_l17_n68
+end
+
+def fun_l16_n599()
+ fun_l17_n946
+end
+
+def fun_l16_n600()
+ fun_l17_n246
+end
+
+def fun_l16_n601()
+ fun_l17_n842
+end
+
+def fun_l16_n602()
+ fun_l17_n43
+end
+
+def fun_l16_n603()
+ fun_l17_n274
+end
+
+def fun_l16_n604()
+ fun_l17_n10
+end
+
+def fun_l16_n605()
+ fun_l17_n319
+end
+
+def fun_l16_n606()
+ fun_l17_n834
+end
+
+def fun_l16_n607()
+ fun_l17_n483
+end
+
+def fun_l16_n608()
+ fun_l17_n846
+end
+
+def fun_l16_n609()
+ fun_l17_n779
+end
+
+def fun_l16_n610()
+ fun_l17_n539
+end
+
+def fun_l16_n611()
+ fun_l17_n579
+end
+
+def fun_l16_n612()
+ fun_l17_n841
+end
+
+def fun_l16_n613()
+ fun_l17_n27
+end
+
+def fun_l16_n614()
+ fun_l17_n283
+end
+
+def fun_l16_n615()
+ fun_l17_n782
+end
+
+def fun_l16_n616()
+ fun_l17_n815
+end
+
+def fun_l16_n617()
+ fun_l17_n961
+end
+
+def fun_l16_n618()
+ fun_l17_n626
+end
+
+def fun_l16_n619()
+ fun_l17_n79
+end
+
+def fun_l16_n620()
+ fun_l17_n814
+end
+
+def fun_l16_n621()
+ fun_l17_n674
+end
+
+def fun_l16_n622()
+ fun_l17_n788
+end
+
+def fun_l16_n623()
+ fun_l17_n714
+end
+
+def fun_l16_n624()
+ fun_l17_n257
+end
+
+def fun_l16_n625()
+ fun_l17_n424
+end
+
+def fun_l16_n626()
+ fun_l17_n393
+end
+
+def fun_l16_n627()
+ fun_l17_n187
+end
+
+def fun_l16_n628()
+ fun_l17_n778
+end
+
+def fun_l16_n629()
+ fun_l17_n466
+end
+
+def fun_l16_n630()
+ fun_l17_n63
+end
+
+def fun_l16_n631()
+ fun_l17_n375
+end
+
+def fun_l16_n632()
+ fun_l17_n584
+end
+
+def fun_l16_n633()
+ fun_l17_n148
+end
+
+def fun_l16_n634()
+ fun_l17_n466
+end
+
+def fun_l16_n635()
+ fun_l17_n889
+end
+
+def fun_l16_n636()
+ fun_l17_n360
+end
+
+def fun_l16_n637()
+ fun_l17_n578
+end
+
+def fun_l16_n638()
+ fun_l17_n345
+end
+
+def fun_l16_n639()
+ fun_l17_n224
+end
+
+def fun_l16_n640()
+ fun_l17_n574
+end
+
+def fun_l16_n641()
+ fun_l17_n175
+end
+
+def fun_l16_n642()
+ fun_l17_n141
+end
+
+def fun_l16_n643()
+ fun_l17_n405
+end
+
+def fun_l16_n644()
+ fun_l17_n992
+end
+
+def fun_l16_n645()
+ fun_l17_n503
+end
+
+def fun_l16_n646()
+ fun_l17_n553
+end
+
+def fun_l16_n647()
+ fun_l17_n615
+end
+
+def fun_l16_n648()
+ fun_l17_n925
+end
+
+def fun_l16_n649()
+ fun_l17_n174
+end
+
+def fun_l16_n650()
+ fun_l17_n552
+end
+
+def fun_l16_n651()
+ fun_l17_n243
+end
+
+def fun_l16_n652()
+ fun_l17_n364
+end
+
+def fun_l16_n653()
+ fun_l17_n76
+end
+
+def fun_l16_n654()
+ fun_l17_n68
+end
+
+def fun_l16_n655()
+ fun_l17_n623
+end
+
+def fun_l16_n656()
+ fun_l17_n539
+end
+
+def fun_l16_n657()
+ fun_l17_n875
+end
+
+def fun_l16_n658()
+ fun_l17_n593
+end
+
+def fun_l16_n659()
+ fun_l17_n740
+end
+
+def fun_l16_n660()
+ fun_l17_n241
+end
+
+def fun_l16_n661()
+ fun_l17_n338
+end
+
+def fun_l16_n662()
+ fun_l17_n430
+end
+
+def fun_l16_n663()
+ fun_l17_n49
+end
+
+def fun_l16_n664()
+ fun_l17_n42
+end
+
+def fun_l16_n665()
+ fun_l17_n254
+end
+
+def fun_l16_n666()
+ fun_l17_n538
+end
+
+def fun_l16_n667()
+ fun_l17_n192
+end
+
+def fun_l16_n668()
+ fun_l17_n803
+end
+
+def fun_l16_n669()
+ fun_l17_n898
+end
+
+def fun_l16_n670()
+ fun_l17_n825
+end
+
+def fun_l16_n671()
+ fun_l17_n968
+end
+
+def fun_l16_n672()
+ fun_l17_n417
+end
+
+def fun_l16_n673()
+ fun_l17_n255
+end
+
+def fun_l16_n674()
+ fun_l17_n311
+end
+
+def fun_l16_n675()
+ fun_l17_n296
+end
+
+def fun_l16_n676()
+ fun_l17_n209
+end
+
+def fun_l16_n677()
+ fun_l17_n560
+end
+
+def fun_l16_n678()
+ fun_l17_n909
+end
+
+def fun_l16_n679()
+ fun_l17_n927
+end
+
+def fun_l16_n680()
+ fun_l17_n844
+end
+
+def fun_l16_n681()
+ fun_l17_n411
+end
+
+def fun_l16_n682()
+ fun_l17_n757
+end
+
+def fun_l16_n683()
+ fun_l17_n723
+end
+
+def fun_l16_n684()
+ fun_l17_n119
+end
+
+def fun_l16_n685()
+ fun_l17_n906
+end
+
+def fun_l16_n686()
+ fun_l17_n674
+end
+
+def fun_l16_n687()
+ fun_l17_n42
+end
+
+def fun_l16_n688()
+ fun_l17_n350
+end
+
+def fun_l16_n689()
+ fun_l17_n574
+end
+
+def fun_l16_n690()
+ fun_l17_n363
+end
+
+def fun_l16_n691()
+ fun_l17_n342
+end
+
+def fun_l16_n692()
+ fun_l17_n79
+end
+
+def fun_l16_n693()
+ fun_l17_n253
+end
+
+def fun_l16_n694()
+ fun_l17_n66
+end
+
+def fun_l16_n695()
+ fun_l17_n503
+end
+
+def fun_l16_n696()
+ fun_l17_n846
+end
+
+def fun_l16_n697()
+ fun_l17_n100
+end
+
+def fun_l16_n698()
+ fun_l17_n844
+end
+
+def fun_l16_n699()
+ fun_l17_n317
+end
+
+def fun_l16_n700()
+ fun_l17_n690
+end
+
+def fun_l16_n701()
+ fun_l17_n484
+end
+
+def fun_l16_n702()
+ fun_l17_n451
+end
+
+def fun_l16_n703()
+ fun_l17_n101
+end
+
+def fun_l16_n704()
+ fun_l17_n962
+end
+
+def fun_l16_n705()
+ fun_l17_n459
+end
+
+def fun_l16_n706()
+ fun_l17_n842
+end
+
+def fun_l16_n707()
+ fun_l17_n705
+end
+
+def fun_l16_n708()
+ fun_l17_n827
+end
+
+def fun_l16_n709()
+ fun_l17_n250
+end
+
+def fun_l16_n710()
+ fun_l17_n561
+end
+
+def fun_l16_n711()
+ fun_l17_n568
+end
+
+def fun_l16_n712()
+ fun_l17_n216
+end
+
+def fun_l16_n713()
+ fun_l17_n292
+end
+
+def fun_l16_n714()
+ fun_l17_n221
+end
+
+def fun_l16_n715()
+ fun_l17_n952
+end
+
+def fun_l16_n716()
+ fun_l17_n486
+end
+
+def fun_l16_n717()
+ fun_l17_n266
+end
+
+def fun_l16_n718()
+ fun_l17_n858
+end
+
+def fun_l16_n719()
+ fun_l17_n464
+end
+
+def fun_l16_n720()
+ fun_l17_n555
+end
+
+def fun_l16_n721()
+ fun_l17_n732
+end
+
+def fun_l16_n722()
+ fun_l17_n281
+end
+
+def fun_l16_n723()
+ fun_l17_n210
+end
+
+def fun_l16_n724()
+ fun_l17_n211
+end
+
+def fun_l16_n725()
+ fun_l17_n971
+end
+
+def fun_l16_n726()
+ fun_l17_n94
+end
+
+def fun_l16_n727()
+ fun_l17_n103
+end
+
+def fun_l16_n728()
+ fun_l17_n655
+end
+
+def fun_l16_n729()
+ fun_l17_n272
+end
+
+def fun_l16_n730()
+ fun_l17_n908
+end
+
+def fun_l16_n731()
+ fun_l17_n126
+end
+
+def fun_l16_n732()
+ fun_l17_n417
+end
+
+def fun_l16_n733()
+ fun_l17_n573
+end
+
+def fun_l16_n734()
+ fun_l17_n733
+end
+
+def fun_l16_n735()
+ fun_l17_n483
+end
+
+def fun_l16_n736()
+ fun_l17_n330
+end
+
+def fun_l16_n737()
+ fun_l17_n159
+end
+
+def fun_l16_n738()
+ fun_l17_n548
+end
+
+def fun_l16_n739()
+ fun_l17_n770
+end
+
+def fun_l16_n740()
+ fun_l17_n320
+end
+
+def fun_l16_n741()
+ fun_l17_n706
+end
+
+def fun_l16_n742()
+ fun_l17_n383
+end
+
+def fun_l16_n743()
+ fun_l17_n737
+end
+
+def fun_l16_n744()
+ fun_l17_n470
+end
+
+def fun_l16_n745()
+ fun_l17_n956
+end
+
+def fun_l16_n746()
+ fun_l17_n582
+end
+
+def fun_l16_n747()
+ fun_l17_n0
+end
+
+def fun_l16_n748()
+ fun_l17_n744
+end
+
+def fun_l16_n749()
+ fun_l17_n810
+end
+
+def fun_l16_n750()
+ fun_l17_n130
+end
+
+def fun_l16_n751()
+ fun_l17_n17
+end
+
+def fun_l16_n752()
+ fun_l17_n191
+end
+
+def fun_l16_n753()
+ fun_l17_n557
+end
+
+def fun_l16_n754()
+ fun_l17_n675
+end
+
+def fun_l16_n755()
+ fun_l17_n43
+end
+
+def fun_l16_n756()
+ fun_l17_n907
+end
+
+def fun_l16_n757()
+ fun_l17_n203
+end
+
+def fun_l16_n758()
+ fun_l17_n388
+end
+
+def fun_l16_n759()
+ fun_l17_n101
+end
+
+def fun_l16_n760()
+ fun_l17_n110
+end
+
+def fun_l16_n761()
+ fun_l17_n765
+end
+
+def fun_l16_n762()
+ fun_l17_n406
+end
+
+def fun_l16_n763()
+ fun_l17_n120
+end
+
+def fun_l16_n764()
+ fun_l17_n266
+end
+
+def fun_l16_n765()
+ fun_l17_n35
+end
+
+def fun_l16_n766()
+ fun_l17_n478
+end
+
+def fun_l16_n767()
+ fun_l17_n135
+end
+
+def fun_l16_n768()
+ fun_l17_n934
+end
+
+def fun_l16_n769()
+ fun_l17_n442
+end
+
+def fun_l16_n770()
+ fun_l17_n233
+end
+
+def fun_l16_n771()
+ fun_l17_n336
+end
+
+def fun_l16_n772()
+ fun_l17_n832
+end
+
+def fun_l16_n773()
+ fun_l17_n207
+end
+
+def fun_l16_n774()
+ fun_l17_n752
+end
+
+def fun_l16_n775()
+ fun_l17_n928
+end
+
+def fun_l16_n776()
+ fun_l17_n217
+end
+
+def fun_l16_n777()
+ fun_l17_n925
+end
+
+def fun_l16_n778()
+ fun_l17_n833
+end
+
+def fun_l16_n779()
+ fun_l17_n421
+end
+
+def fun_l16_n780()
+ fun_l17_n878
+end
+
+def fun_l16_n781()
+ fun_l17_n117
+end
+
+def fun_l16_n782()
+ fun_l17_n55
+end
+
+def fun_l16_n783()
+ fun_l17_n46
+end
+
+def fun_l16_n784()
+ fun_l17_n260
+end
+
+def fun_l16_n785()
+ fun_l17_n270
+end
+
+def fun_l16_n786()
+ fun_l17_n68
+end
+
+def fun_l16_n787()
+ fun_l17_n768
+end
+
+def fun_l16_n788()
+ fun_l17_n671
+end
+
+def fun_l16_n789()
+ fun_l17_n338
+end
+
+def fun_l16_n790()
+ fun_l17_n442
+end
+
+def fun_l16_n791()
+ fun_l17_n677
+end
+
+def fun_l16_n792()
+ fun_l17_n141
+end
+
+def fun_l16_n793()
+ fun_l17_n427
+end
+
+def fun_l16_n794()
+ fun_l17_n493
+end
+
+def fun_l16_n795()
+ fun_l17_n461
+end
+
+def fun_l16_n796()
+ fun_l17_n615
+end
+
+def fun_l16_n797()
+ fun_l17_n895
+end
+
+def fun_l16_n798()
+ fun_l17_n883
+end
+
+def fun_l16_n799()
+ fun_l17_n992
+end
+
+def fun_l16_n800()
+ fun_l17_n754
+end
+
+def fun_l16_n801()
+ fun_l17_n668
+end
+
+def fun_l16_n802()
+ fun_l17_n362
+end
+
+def fun_l16_n803()
+ fun_l17_n179
+end
+
+def fun_l16_n804()
+ fun_l17_n35
+end
+
+def fun_l16_n805()
+ fun_l17_n999
+end
+
+def fun_l16_n806()
+ fun_l17_n211
+end
+
+def fun_l16_n807()
+ fun_l17_n859
+end
+
+def fun_l16_n808()
+ fun_l17_n126
+end
+
+def fun_l16_n809()
+ fun_l17_n935
+end
+
+def fun_l16_n810()
+ fun_l17_n682
+end
+
+def fun_l16_n811()
+ fun_l17_n788
+end
+
+def fun_l16_n812()
+ fun_l17_n939
+end
+
+def fun_l16_n813()
+ fun_l17_n687
+end
+
+def fun_l16_n814()
+ fun_l17_n274
+end
+
+def fun_l16_n815()
+ fun_l17_n699
+end
+
+def fun_l16_n816()
+ fun_l17_n129
+end
+
+def fun_l16_n817()
+ fun_l17_n201
+end
+
+def fun_l16_n818()
+ fun_l17_n448
+end
+
+def fun_l16_n819()
+ fun_l17_n482
+end
+
+def fun_l16_n820()
+ fun_l17_n199
+end
+
+def fun_l16_n821()
+ fun_l17_n283
+end
+
+def fun_l16_n822()
+ fun_l17_n413
+end
+
+def fun_l16_n823()
+ fun_l17_n373
+end
+
+def fun_l16_n824()
+ fun_l17_n368
+end
+
+def fun_l16_n825()
+ fun_l17_n892
+end
+
+def fun_l16_n826()
+ fun_l17_n40
+end
+
+def fun_l16_n827()
+ fun_l17_n258
+end
+
+def fun_l16_n828()
+ fun_l17_n218
+end
+
+def fun_l16_n829()
+ fun_l17_n647
+end
+
+def fun_l16_n830()
+ fun_l17_n429
+end
+
+def fun_l16_n831()
+ fun_l17_n524
+end
+
+def fun_l16_n832()
+ fun_l17_n424
+end
+
+def fun_l16_n833()
+ fun_l17_n755
+end
+
+def fun_l16_n834()
+ fun_l17_n82
+end
+
+def fun_l16_n835()
+ fun_l17_n109
+end
+
+def fun_l16_n836()
+ fun_l17_n399
+end
+
+def fun_l16_n837()
+ fun_l17_n829
+end
+
+def fun_l16_n838()
+ fun_l17_n26
+end
+
+def fun_l16_n839()
+ fun_l17_n537
+end
+
+def fun_l16_n840()
+ fun_l17_n969
+end
+
+def fun_l16_n841()
+ fun_l17_n248
+end
+
+def fun_l16_n842()
+ fun_l17_n178
+end
+
+def fun_l16_n843()
+ fun_l17_n816
+end
+
+def fun_l16_n844()
+ fun_l17_n925
+end
+
+def fun_l16_n845()
+ fun_l17_n388
+end
+
+def fun_l16_n846()
+ fun_l17_n923
+end
+
+def fun_l16_n847()
+ fun_l17_n386
+end
+
+def fun_l16_n848()
+ fun_l17_n940
+end
+
+def fun_l16_n849()
+ fun_l17_n831
+end
+
+def fun_l16_n850()
+ fun_l17_n771
+end
+
+def fun_l16_n851()
+ fun_l17_n45
+end
+
+def fun_l16_n852()
+ fun_l17_n18
+end
+
+def fun_l16_n853()
+ fun_l17_n435
+end
+
+def fun_l16_n854()
+ fun_l17_n397
+end
+
+def fun_l16_n855()
+ fun_l17_n656
+end
+
+def fun_l16_n856()
+ fun_l17_n72
+end
+
+def fun_l16_n857()
+ fun_l17_n531
+end
+
+def fun_l16_n858()
+ fun_l17_n790
+end
+
+def fun_l16_n859()
+ fun_l17_n25
+end
+
+def fun_l16_n860()
+ fun_l17_n926
+end
+
+def fun_l16_n861()
+ fun_l17_n474
+end
+
+def fun_l16_n862()
+ fun_l17_n888
+end
+
+def fun_l16_n863()
+ fun_l17_n110
+end
+
+def fun_l16_n864()
+ fun_l17_n561
+end
+
+def fun_l16_n865()
+ fun_l17_n59
+end
+
+def fun_l16_n866()
+ fun_l17_n611
+end
+
+def fun_l16_n867()
+ fun_l17_n436
+end
+
+def fun_l16_n868()
+ fun_l17_n851
+end
+
+def fun_l16_n869()
+ fun_l17_n714
+end
+
+def fun_l16_n870()
+ fun_l17_n423
+end
+
+def fun_l16_n871()
+ fun_l17_n884
+end
+
+def fun_l16_n872()
+ fun_l17_n230
+end
+
+def fun_l16_n873()
+ fun_l17_n988
+end
+
+def fun_l16_n874()
+ fun_l17_n763
+end
+
+def fun_l16_n875()
+ fun_l17_n929
+end
+
+def fun_l16_n876()
+ fun_l17_n521
+end
+
+def fun_l16_n877()
+ fun_l17_n262
+end
+
+def fun_l16_n878()
+ fun_l17_n774
+end
+
+def fun_l16_n879()
+ fun_l17_n358
+end
+
+def fun_l16_n880()
+ fun_l17_n861
+end
+
+def fun_l16_n881()
+ fun_l17_n984
+end
+
+def fun_l16_n882()
+ fun_l17_n272
+end
+
+def fun_l16_n883()
+ fun_l17_n293
+end
+
+def fun_l16_n884()
+ fun_l17_n525
+end
+
+def fun_l16_n885()
+ fun_l17_n226
+end
+
+def fun_l16_n886()
+ fun_l17_n941
+end
+
+def fun_l16_n887()
+ fun_l17_n671
+end
+
+def fun_l16_n888()
+ fun_l17_n960
+end
+
+def fun_l16_n889()
+ fun_l17_n218
+end
+
+def fun_l16_n890()
+ fun_l17_n475
+end
+
+def fun_l16_n891()
+ fun_l17_n300
+end
+
+def fun_l16_n892()
+ fun_l17_n908
+end
+
+def fun_l16_n893()
+ fun_l17_n739
+end
+
+def fun_l16_n894()
+ fun_l17_n878
+end
+
+def fun_l16_n895()
+ fun_l17_n906
+end
+
+def fun_l16_n896()
+ fun_l17_n944
+end
+
+def fun_l16_n897()
+ fun_l17_n302
+end
+
+def fun_l16_n898()
+ fun_l17_n486
+end
+
+def fun_l16_n899()
+ fun_l17_n135
+end
+
+def fun_l16_n900()
+ fun_l17_n470
+end
+
+def fun_l16_n901()
+ fun_l17_n895
+end
+
+def fun_l16_n902()
+ fun_l17_n333
+end
+
+def fun_l16_n903()
+ fun_l17_n310
+end
+
+def fun_l16_n904()
+ fun_l17_n229
+end
+
+def fun_l16_n905()
+ fun_l17_n315
+end
+
+def fun_l16_n906()
+ fun_l17_n333
+end
+
+def fun_l16_n907()
+ fun_l17_n563
+end
+
+def fun_l16_n908()
+ fun_l17_n558
+end
+
+def fun_l16_n909()
+ fun_l17_n580
+end
+
+def fun_l16_n910()
+ fun_l17_n916
+end
+
+def fun_l16_n911()
+ fun_l17_n378
+end
+
+def fun_l16_n912()
+ fun_l17_n882
+end
+
+def fun_l16_n913()
+ fun_l17_n28
+end
+
+def fun_l16_n914()
+ fun_l17_n767
+end
+
+def fun_l16_n915()
+ fun_l17_n105
+end
+
+def fun_l16_n916()
+ fun_l17_n463
+end
+
+def fun_l16_n917()
+ fun_l17_n92
+end
+
+def fun_l16_n918()
+ fun_l17_n722
+end
+
+def fun_l16_n919()
+ fun_l17_n403
+end
+
+def fun_l16_n920()
+ fun_l17_n771
+end
+
+def fun_l16_n921()
+ fun_l17_n818
+end
+
+def fun_l16_n922()
+ fun_l17_n214
+end
+
+def fun_l16_n923()
+ fun_l17_n167
+end
+
+def fun_l16_n924()
+ fun_l17_n189
+end
+
+def fun_l16_n925()
+ fun_l17_n401
+end
+
+def fun_l16_n926()
+ fun_l17_n377
+end
+
+def fun_l16_n927()
+ fun_l17_n980
+end
+
+def fun_l16_n928()
+ fun_l17_n476
+end
+
+def fun_l16_n929()
+ fun_l17_n321
+end
+
+def fun_l16_n930()
+ fun_l17_n485
+end
+
+def fun_l16_n931()
+ fun_l17_n902
+end
+
+def fun_l16_n932()
+ fun_l17_n269
+end
+
+def fun_l16_n933()
+ fun_l17_n806
+end
+
+def fun_l16_n934()
+ fun_l17_n952
+end
+
+def fun_l16_n935()
+ fun_l17_n401
+end
+
+def fun_l16_n936()
+ fun_l17_n416
+end
+
+def fun_l16_n937()
+ fun_l17_n739
+end
+
+def fun_l16_n938()
+ fun_l17_n47
+end
+
+def fun_l16_n939()
+ fun_l17_n556
+end
+
+def fun_l16_n940()
+ fun_l17_n426
+end
+
+def fun_l16_n941()
+ fun_l17_n474
+end
+
+def fun_l16_n942()
+ fun_l17_n393
+end
+
+def fun_l16_n943()
+ fun_l17_n492
+end
+
+def fun_l16_n944()
+ fun_l17_n528
+end
+
+def fun_l16_n945()
+ fun_l17_n66
+end
+
+def fun_l16_n946()
+ fun_l17_n587
+end
+
+def fun_l16_n947()
+ fun_l17_n116
+end
+
+def fun_l16_n948()
+ fun_l17_n205
+end
+
+def fun_l16_n949()
+ fun_l17_n958
+end
+
+def fun_l16_n950()
+ fun_l17_n264
+end
+
+def fun_l16_n951()
+ fun_l17_n78
+end
+
+def fun_l16_n952()
+ fun_l17_n990
+end
+
+def fun_l16_n953()
+ fun_l17_n154
+end
+
+def fun_l16_n954()
+ fun_l17_n213
+end
+
+def fun_l16_n955()
+ fun_l17_n979
+end
+
+def fun_l16_n956()
+ fun_l17_n632
+end
+
+def fun_l16_n957()
+ fun_l17_n292
+end
+
+def fun_l16_n958()
+ fun_l17_n719
+end
+
+def fun_l16_n959()
+ fun_l17_n320
+end
+
+def fun_l16_n960()
+ fun_l17_n448
+end
+
+def fun_l16_n961()
+ fun_l17_n532
+end
+
+def fun_l16_n962()
+ fun_l17_n662
+end
+
+def fun_l16_n963()
+ fun_l17_n423
+end
+
+def fun_l16_n964()
+ fun_l17_n193
+end
+
+def fun_l16_n965()
+ fun_l17_n475
+end
+
+def fun_l16_n966()
+ fun_l17_n168
+end
+
+def fun_l16_n967()
+ fun_l17_n92
+end
+
+def fun_l16_n968()
+ fun_l17_n925
+end
+
+def fun_l16_n969()
+ fun_l17_n138
+end
+
+def fun_l16_n970()
+ fun_l17_n673
+end
+
+def fun_l16_n971()
+ fun_l17_n697
+end
+
+def fun_l16_n972()
+ fun_l17_n438
+end
+
+def fun_l16_n973()
+ fun_l17_n114
+end
+
+def fun_l16_n974()
+ fun_l17_n40
+end
+
+def fun_l16_n975()
+ fun_l17_n344
+end
+
+def fun_l16_n976()
+ fun_l17_n568
+end
+
+def fun_l16_n977()
+ fun_l17_n350
+end
+
+def fun_l16_n978()
+ fun_l17_n873
+end
+
+def fun_l16_n979()
+ fun_l17_n719
+end
+
+def fun_l16_n980()
+ fun_l17_n631
+end
+
+def fun_l16_n981()
+ fun_l17_n848
+end
+
+def fun_l16_n982()
+ fun_l17_n912
+end
+
+def fun_l16_n983()
+ fun_l17_n872
+end
+
+def fun_l16_n984()
+ fun_l17_n290
+end
+
+def fun_l16_n985()
+ fun_l17_n416
+end
+
+def fun_l16_n986()
+ fun_l17_n552
+end
+
+def fun_l16_n987()
+ fun_l17_n458
+end
+
+def fun_l16_n988()
+ fun_l17_n808
+end
+
+def fun_l16_n989()
+ fun_l17_n953
+end
+
+def fun_l16_n990()
+ fun_l17_n136
+end
+
+def fun_l16_n991()
+ fun_l17_n798
+end
+
+def fun_l16_n992()
+ fun_l17_n419
+end
+
+def fun_l16_n993()
+ fun_l17_n293
+end
+
+def fun_l16_n994()
+ fun_l17_n663
+end
+
+def fun_l16_n995()
+ fun_l17_n533
+end
+
+def fun_l16_n996()
+ fun_l17_n625
+end
+
+def fun_l16_n997()
+ fun_l17_n215
+end
+
+def fun_l16_n998()
+ fun_l17_n954
+end
+
+def fun_l16_n999()
+ fun_l17_n797
+end
+
+def fun_l17_n0()
+ fun_l18_n287
+end
+
+def fun_l17_n1()
+ fun_l18_n242
+end
+
+def fun_l17_n2()
+ fun_l18_n595
+end
+
+def fun_l17_n3()
+ fun_l18_n801
+end
+
+def fun_l17_n4()
+ fun_l18_n367
+end
+
+def fun_l17_n5()
+ fun_l18_n21
+end
+
+def fun_l17_n6()
+ fun_l18_n439
+end
+
+def fun_l17_n7()
+ fun_l18_n96
+end
+
+def fun_l17_n8()
+ fun_l18_n500
+end
+
+def fun_l17_n9()
+ fun_l18_n332
+end
+
+def fun_l17_n10()
+ fun_l18_n374
+end
+
+def fun_l17_n11()
+ fun_l18_n338
+end
+
+def fun_l17_n12()
+ fun_l18_n737
+end
+
+def fun_l17_n13()
+ fun_l18_n437
+end
+
+def fun_l17_n14()
+ fun_l18_n442
+end
+
+def fun_l17_n15()
+ fun_l18_n309
+end
+
+def fun_l17_n16()
+ fun_l18_n173
+end
+
+def fun_l17_n17()
+ fun_l18_n615
+end
+
+def fun_l17_n18()
+ fun_l18_n881
+end
+
+def fun_l17_n19()
+ fun_l18_n629
+end
+
+def fun_l17_n20()
+ fun_l18_n304
+end
+
+def fun_l17_n21()
+ fun_l18_n788
+end
+
+def fun_l17_n22()
+ fun_l18_n425
+end
+
+def fun_l17_n23()
+ fun_l18_n376
+end
+
+def fun_l17_n24()
+ fun_l18_n353
+end
+
+def fun_l17_n25()
+ fun_l18_n273
+end
+
+def fun_l17_n26()
+ fun_l18_n337
+end
+
+def fun_l17_n27()
+ fun_l18_n588
+end
+
+def fun_l17_n28()
+ fun_l18_n64
+end
+
+def fun_l17_n29()
+ fun_l18_n651
+end
+
+def fun_l17_n30()
+ fun_l18_n91
+end
+
+def fun_l17_n31()
+ fun_l18_n392
+end
+
+def fun_l17_n32()
+ fun_l18_n65
+end
+
+def fun_l17_n33()
+ fun_l18_n166
+end
+
+def fun_l17_n34()
+ fun_l18_n917
+end
+
+def fun_l17_n35()
+ fun_l18_n217
+end
+
+def fun_l17_n36()
+ fun_l18_n416
+end
+
+def fun_l17_n37()
+ fun_l18_n977
+end
+
+def fun_l17_n38()
+ fun_l18_n76
+end
+
+def fun_l17_n39()
+ fun_l18_n322
+end
+
+def fun_l17_n40()
+ fun_l18_n253
+end
+
+def fun_l17_n41()
+ fun_l18_n192
+end
+
+def fun_l17_n42()
+ fun_l18_n883
+end
+
+def fun_l17_n43()
+ fun_l18_n132
+end
+
+def fun_l17_n44()
+ fun_l18_n480
+end
+
+def fun_l17_n45()
+ fun_l18_n36
+end
+
+def fun_l17_n46()
+ fun_l18_n142
+end
+
+def fun_l17_n47()
+ fun_l18_n172
+end
+
+def fun_l17_n48()
+ fun_l18_n339
+end
+
+def fun_l17_n49()
+ fun_l18_n664
+end
+
+def fun_l17_n50()
+ fun_l18_n482
+end
+
+def fun_l17_n51()
+ fun_l18_n809
+end
+
+def fun_l17_n52()
+ fun_l18_n525
+end
+
+def fun_l17_n53()
+ fun_l18_n50
+end
+
+def fun_l17_n54()
+ fun_l18_n977
+end
+
+def fun_l17_n55()
+ fun_l18_n730
+end
+
+def fun_l17_n56()
+ fun_l18_n565
+end
+
+def fun_l17_n57()
+ fun_l18_n997
+end
+
+def fun_l17_n58()
+ fun_l18_n811
+end
+
+def fun_l17_n59()
+ fun_l18_n898
+end
+
+def fun_l17_n60()
+ fun_l18_n627
+end
+
+def fun_l17_n61()
+ fun_l18_n539
+end
+
+def fun_l17_n62()
+ fun_l18_n877
+end
+
+def fun_l17_n63()
+ fun_l18_n428
+end
+
+def fun_l17_n64()
+ fun_l18_n779
+end
+
+def fun_l17_n65()
+ fun_l18_n14
+end
+
+def fun_l17_n66()
+ fun_l18_n202
+end
+
+def fun_l17_n67()
+ fun_l18_n23
+end
+
+def fun_l17_n68()
+ fun_l18_n861
+end
+
+def fun_l17_n69()
+ fun_l18_n356
+end
+
+def fun_l17_n70()
+ fun_l18_n997
+end
+
+def fun_l17_n71()
+ fun_l18_n130
+end
+
+def fun_l17_n72()
+ fun_l18_n462
+end
+
+def fun_l17_n73()
+ fun_l18_n590
+end
+
+def fun_l17_n74()
+ fun_l18_n544
+end
+
+def fun_l17_n75()
+ fun_l18_n571
+end
+
+def fun_l17_n76()
+ fun_l18_n336
+end
+
+def fun_l17_n77()
+ fun_l18_n154
+end
+
+def fun_l17_n78()
+ fun_l18_n18
+end
+
+def fun_l17_n79()
+ fun_l18_n911
+end
+
+def fun_l17_n80()
+ fun_l18_n980
+end
+
+def fun_l17_n81()
+ fun_l18_n156
+end
+
+def fun_l17_n82()
+ fun_l18_n487
+end
+
+def fun_l17_n83()
+ fun_l18_n292
+end
+
+def fun_l17_n84()
+ fun_l18_n709
+end
+
+def fun_l17_n85()
+ fun_l18_n557
+end
+
+def fun_l17_n86()
+ fun_l18_n910
+end
+
+def fun_l17_n87()
+ fun_l18_n121
+end
+
+def fun_l17_n88()
+ fun_l18_n706
+end
+
+def fun_l17_n89()
+ fun_l18_n949
+end
+
+def fun_l17_n90()
+ fun_l18_n529
+end
+
+def fun_l17_n91()
+ fun_l18_n778
+end
+
+def fun_l17_n92()
+ fun_l18_n682
+end
+
+def fun_l17_n93()
+ fun_l18_n743
+end
+
+def fun_l17_n94()
+ fun_l18_n714
+end
+
+def fun_l17_n95()
+ fun_l18_n749
+end
+
+def fun_l17_n96()
+ fun_l18_n453
+end
+
+def fun_l17_n97()
+ fun_l18_n248
+end
+
+def fun_l17_n98()
+ fun_l18_n315
+end
+
+def fun_l17_n99()
+ fun_l18_n534
+end
+
+def fun_l17_n100()
+ fun_l18_n391
+end
+
+def fun_l17_n101()
+ fun_l18_n515
+end
+
+def fun_l17_n102()
+ fun_l18_n495
+end
+
+def fun_l17_n103()
+ fun_l18_n776
+end
+
+def fun_l17_n104()
+ fun_l18_n957
+end
+
+def fun_l17_n105()
+ fun_l18_n982
+end
+
+def fun_l17_n106()
+ fun_l18_n401
+end
+
+def fun_l17_n107()
+ fun_l18_n230
+end
+
+def fun_l17_n108()
+ fun_l18_n13
+end
+
+def fun_l17_n109()
+ fun_l18_n318
+end
+
+def fun_l17_n110()
+ fun_l18_n275
+end
+
+def fun_l17_n111()
+ fun_l18_n155
+end
+
+def fun_l17_n112()
+ fun_l18_n86
+end
+
+def fun_l17_n113()
+ fun_l18_n573
+end
+
+def fun_l17_n114()
+ fun_l18_n124
+end
+
+def fun_l17_n115()
+ fun_l18_n694
+end
+
+def fun_l17_n116()
+ fun_l18_n929
+end
+
+def fun_l17_n117()
+ fun_l18_n177
+end
+
+def fun_l17_n118()
+ fun_l18_n510
+end
+
+def fun_l17_n119()
+ fun_l18_n143
+end
+
+def fun_l17_n120()
+ fun_l18_n358
+end
+
+def fun_l17_n121()
+ fun_l18_n739
+end
+
+def fun_l17_n122()
+ fun_l18_n463
+end
+
+def fun_l17_n123()
+ fun_l18_n343
+end
+
+def fun_l17_n124()
+ fun_l18_n714
+end
+
+def fun_l17_n125()
+ fun_l18_n53
+end
+
+def fun_l17_n126()
+ fun_l18_n375
+end
+
+def fun_l17_n127()
+ fun_l18_n870
+end
+
+def fun_l17_n128()
+ fun_l18_n555
+end
+
+def fun_l17_n129()
+ fun_l18_n773
+end
+
+def fun_l17_n130()
+ fun_l18_n309
+end
+
+def fun_l17_n131()
+ fun_l18_n50
+end
+
+def fun_l17_n132()
+ fun_l18_n408
+end
+
+def fun_l17_n133()
+ fun_l18_n339
+end
+
+def fun_l17_n134()
+ fun_l18_n952
+end
+
+def fun_l17_n135()
+ fun_l18_n599
+end
+
+def fun_l17_n136()
+ fun_l18_n280
+end
+
+def fun_l17_n137()
+ fun_l18_n922
+end
+
+def fun_l17_n138()
+ fun_l18_n132
+end
+
+def fun_l17_n139()
+ fun_l18_n224
+end
+
+def fun_l17_n140()
+ fun_l18_n841
+end
+
+def fun_l17_n141()
+ fun_l18_n84
+end
+
+def fun_l17_n142()
+ fun_l18_n697
+end
+
+def fun_l17_n143()
+ fun_l18_n60
+end
+
+def fun_l17_n144()
+ fun_l18_n479
+end
+
+def fun_l17_n145()
+ fun_l18_n671
+end
+
+def fun_l17_n146()
+ fun_l18_n422
+end
+
+def fun_l17_n147()
+ fun_l18_n255
+end
+
+def fun_l17_n148()
+ fun_l18_n615
+end
+
+def fun_l17_n149()
+ fun_l18_n878
+end
+
+def fun_l17_n150()
+ fun_l18_n402
+end
+
+def fun_l17_n151()
+ fun_l18_n134
+end
+
+def fun_l17_n152()
+ fun_l18_n493
+end
+
+def fun_l17_n153()
+ fun_l18_n347
+end
+
+def fun_l17_n154()
+ fun_l18_n679
+end
+
+def fun_l17_n155()
+ fun_l18_n477
+end
+
+def fun_l17_n156()
+ fun_l18_n56
+end
+
+def fun_l17_n157()
+ fun_l18_n43
+end
+
+def fun_l17_n158()
+ fun_l18_n928
+end
+
+def fun_l17_n159()
+ fun_l18_n190
+end
+
+def fun_l17_n160()
+ fun_l18_n402
+end
+
+def fun_l17_n161()
+ fun_l18_n894
+end
+
+def fun_l17_n162()
+ fun_l18_n869
+end
+
+def fun_l17_n163()
+ fun_l18_n36
+end
+
+def fun_l17_n164()
+ fun_l18_n635
+end
+
+def fun_l17_n165()
+ fun_l18_n414
+end
+
+def fun_l17_n166()
+ fun_l18_n744
+end
+
+def fun_l17_n167()
+ fun_l18_n87
+end
+
+def fun_l17_n168()
+ fun_l18_n531
+end
+
+def fun_l17_n169()
+ fun_l18_n923
+end
+
+def fun_l17_n170()
+ fun_l18_n815
+end
+
+def fun_l17_n171()
+ fun_l18_n27
+end
+
+def fun_l17_n172()
+ fun_l18_n194
+end
+
+def fun_l17_n173()
+ fun_l18_n456
+end
+
+def fun_l17_n174()
+ fun_l18_n275
+end
+
+def fun_l17_n175()
+ fun_l18_n48
+end
+
+def fun_l17_n176()
+ fun_l18_n230
+end
+
+def fun_l17_n177()
+ fun_l18_n806
+end
+
+def fun_l17_n178()
+ fun_l18_n851
+end
+
+def fun_l17_n179()
+ fun_l18_n76
+end
+
+def fun_l17_n180()
+ fun_l18_n925
+end
+
+def fun_l17_n181()
+ fun_l18_n680
+end
+
+def fun_l17_n182()
+ fun_l18_n547
+end
+
+def fun_l17_n183()
+ fun_l18_n439
+end
+
+def fun_l17_n184()
+ fun_l18_n642
+end
+
+def fun_l17_n185()
+ fun_l18_n249
+end
+
+def fun_l17_n186()
+ fun_l18_n92
+end
+
+def fun_l17_n187()
+ fun_l18_n727
+end
+
+def fun_l17_n188()
+ fun_l18_n358
+end
+
+def fun_l17_n189()
+ fun_l18_n874
+end
+
+def fun_l17_n190()
+ fun_l18_n357
+end
+
+def fun_l17_n191()
+ fun_l18_n773
+end
+
+def fun_l17_n192()
+ fun_l18_n487
+end
+
+def fun_l17_n193()
+ fun_l18_n985
+end
+
+def fun_l17_n194()
+ fun_l18_n771
+end
+
+def fun_l17_n195()
+ fun_l18_n918
+end
+
+def fun_l17_n196()
+ fun_l18_n768
+end
+
+def fun_l17_n197()
+ fun_l18_n275
+end
+
+def fun_l17_n198()
+ fun_l18_n72
+end
+
+def fun_l17_n199()
+ fun_l18_n288
+end
+
+def fun_l17_n200()
+ fun_l18_n187
+end
+
+def fun_l17_n201()
+ fun_l18_n905
+end
+
+def fun_l17_n202()
+ fun_l18_n61
+end
+
+def fun_l17_n203()
+ fun_l18_n845
+end
+
+def fun_l17_n204()
+ fun_l18_n390
+end
+
+def fun_l17_n205()
+ fun_l18_n501
+end
+
+def fun_l17_n206()
+ fun_l18_n820
+end
+
+def fun_l17_n207()
+ fun_l18_n889
+end
+
+def fun_l17_n208()
+ fun_l18_n746
+end
+
+def fun_l17_n209()
+ fun_l18_n640
+end
+
+def fun_l17_n210()
+ fun_l18_n974
+end
+
+def fun_l17_n211()
+ fun_l18_n128
+end
+
+def fun_l17_n212()
+ fun_l18_n227
+end
+
+def fun_l17_n213()
+ fun_l18_n646
+end
+
+def fun_l17_n214()
+ fun_l18_n55
+end
+
+def fun_l17_n215()
+ fun_l18_n989
+end
+
+def fun_l17_n216()
+ fun_l18_n417
+end
+
+def fun_l17_n217()
+ fun_l18_n85
+end
+
+def fun_l17_n218()
+ fun_l18_n477
+end
+
+def fun_l17_n219()
+ fun_l18_n442
+end
+
+def fun_l17_n220()
+ fun_l18_n804
+end
+
+def fun_l17_n221()
+ fun_l18_n135
+end
+
+def fun_l17_n222()
+ fun_l18_n347
+end
+
+def fun_l17_n223()
+ fun_l18_n34
+end
+
+def fun_l17_n224()
+ fun_l18_n534
+end
+
+def fun_l17_n225()
+ fun_l18_n789
+end
+
+def fun_l17_n226()
+ fun_l18_n938
+end
+
+def fun_l17_n227()
+ fun_l18_n777
+end
+
+def fun_l17_n228()
+ fun_l18_n247
+end
+
+def fun_l17_n229()
+ fun_l18_n935
+end
+
+def fun_l17_n230()
+ fun_l18_n406
+end
+
+def fun_l17_n231()
+ fun_l18_n0
+end
+
+def fun_l17_n232()
+ fun_l18_n530
+end
+
+def fun_l17_n233()
+ fun_l18_n994
+end
+
+def fun_l17_n234()
+ fun_l18_n818
+end
+
+def fun_l17_n235()
+ fun_l18_n941
+end
+
+def fun_l17_n236()
+ fun_l18_n687
+end
+
+def fun_l17_n237()
+ fun_l18_n372
+end
+
+def fun_l17_n238()
+ fun_l18_n344
+end
+
+def fun_l17_n239()
+ fun_l18_n336
+end
+
+def fun_l17_n240()
+ fun_l18_n870
+end
+
+def fun_l17_n241()
+ fun_l18_n694
+end
+
+def fun_l17_n242()
+ fun_l18_n233
+end
+
+def fun_l17_n243()
+ fun_l18_n301
+end
+
+def fun_l17_n244()
+ fun_l18_n425
+end
+
+def fun_l17_n245()
+ fun_l18_n334
+end
+
+def fun_l17_n246()
+ fun_l18_n848
+end
+
+def fun_l17_n247()
+ fun_l18_n27
+end
+
+def fun_l17_n248()
+ fun_l18_n964
+end
+
+def fun_l17_n249()
+ fun_l18_n953
+end
+
+def fun_l17_n250()
+ fun_l18_n4
+end
+
+def fun_l17_n251()
+ fun_l18_n504
+end
+
+def fun_l17_n252()
+ fun_l18_n165
+end
+
+def fun_l17_n253()
+ fun_l18_n401
+end
+
+def fun_l17_n254()
+ fun_l18_n267
+end
+
+def fun_l17_n255()
+ fun_l18_n966
+end
+
+def fun_l17_n256()
+ fun_l18_n854
+end
+
+def fun_l17_n257()
+ fun_l18_n927
+end
+
+def fun_l17_n258()
+ fun_l18_n476
+end
+
+def fun_l17_n259()
+ fun_l18_n274
+end
+
+def fun_l17_n260()
+ fun_l18_n711
+end
+
+def fun_l17_n261()
+ fun_l18_n96
+end
+
+def fun_l17_n262()
+ fun_l18_n901
+end
+
+def fun_l17_n263()
+ fun_l18_n601
+end
+
+def fun_l17_n264()
+ fun_l18_n495
+end
+
+def fun_l17_n265()
+ fun_l18_n672
+end
+
+def fun_l17_n266()
+ fun_l18_n946
+end
+
+def fun_l17_n267()
+ fun_l18_n91
+end
+
+def fun_l17_n268()
+ fun_l18_n547
+end
+
+def fun_l17_n269()
+ fun_l18_n977
+end
+
+def fun_l17_n270()
+ fun_l18_n113
+end
+
+def fun_l17_n271()
+ fun_l18_n818
+end
+
+def fun_l17_n272()
+ fun_l18_n370
+end
+
+def fun_l17_n273()
+ fun_l18_n940
+end
+
+def fun_l17_n274()
+ fun_l18_n892
+end
+
+def fun_l17_n275()
+ fun_l18_n501
+end
+
+def fun_l17_n276()
+ fun_l18_n252
+end
+
+def fun_l17_n277()
+ fun_l18_n720
+end
+
+def fun_l17_n278()
+ fun_l18_n12
+end
+
+def fun_l17_n279()
+ fun_l18_n318
+end
+
+def fun_l17_n280()
+ fun_l18_n536
+end
+
+def fun_l17_n281()
+ fun_l18_n344
+end
+
+def fun_l17_n282()
+ fun_l18_n613
+end
+
+def fun_l17_n283()
+ fun_l18_n198
+end
+
+def fun_l17_n284()
+ fun_l18_n153
+end
+
+def fun_l17_n285()
+ fun_l18_n118
+end
+
+def fun_l17_n286()
+ fun_l18_n694
+end
+
+def fun_l17_n287()
+ fun_l18_n402
+end
+
+def fun_l17_n288()
+ fun_l18_n609
+end
+
+def fun_l17_n289()
+ fun_l18_n334
+end
+
+def fun_l17_n290()
+ fun_l18_n266
+end
+
+def fun_l17_n291()
+ fun_l18_n235
+end
+
+def fun_l17_n292()
+ fun_l18_n942
+end
+
+def fun_l17_n293()
+ fun_l18_n165
+end
+
+def fun_l17_n294()
+ fun_l18_n443
+end
+
+def fun_l17_n295()
+ fun_l18_n837
+end
+
+def fun_l17_n296()
+ fun_l18_n329
+end
+
+def fun_l17_n297()
+ fun_l18_n64
+end
+
+def fun_l17_n298()
+ fun_l18_n469
+end
+
+def fun_l17_n299()
+ fun_l18_n557
+end
+
+def fun_l17_n300()
+ fun_l18_n158
+end
+
+def fun_l17_n301()
+ fun_l18_n250
+end
+
+def fun_l17_n302()
+ fun_l18_n733
+end
+
+def fun_l17_n303()
+ fun_l18_n491
+end
+
+def fun_l17_n304()
+ fun_l18_n966
+end
+
+def fun_l17_n305()
+ fun_l18_n210
+end
+
+def fun_l17_n306()
+ fun_l18_n118
+end
+
+def fun_l17_n307()
+ fun_l18_n394
+end
+
+def fun_l17_n308()
+ fun_l18_n421
+end
+
+def fun_l17_n309()
+ fun_l18_n559
+end
+
+def fun_l17_n310()
+ fun_l18_n386
+end
+
+def fun_l17_n311()
+ fun_l18_n350
+end
+
+def fun_l17_n312()
+ fun_l18_n527
+end
+
+def fun_l17_n313()
+ fun_l18_n539
+end
+
+def fun_l17_n314()
+ fun_l18_n468
+end
+
+def fun_l17_n315()
+ fun_l18_n533
+end
+
+def fun_l17_n316()
+ fun_l18_n607
+end
+
+def fun_l17_n317()
+ fun_l18_n410
+end
+
+def fun_l17_n318()
+ fun_l18_n391
+end
+
+def fun_l17_n319()
+ fun_l18_n709
+end
+
+def fun_l17_n320()
+ fun_l18_n131
+end
+
+def fun_l17_n321()
+ fun_l18_n401
+end
+
+def fun_l17_n322()
+ fun_l18_n249
+end
+
+def fun_l17_n323()
+ fun_l18_n459
+end
+
+def fun_l17_n324()
+ fun_l18_n111
+end
+
+def fun_l17_n325()
+ fun_l18_n539
+end
+
+def fun_l17_n326()
+ fun_l18_n493
+end
+
+def fun_l17_n327()
+ fun_l18_n415
+end
+
+def fun_l17_n328()
+ fun_l18_n334
+end
+
+def fun_l17_n329()
+ fun_l18_n784
+end
+
+def fun_l17_n330()
+ fun_l18_n45
+end
+
+def fun_l17_n331()
+ fun_l18_n820
+end
+
+def fun_l17_n332()
+ fun_l18_n892
+end
+
+def fun_l17_n333()
+ fun_l18_n598
+end
+
+def fun_l17_n334()
+ fun_l18_n800
+end
+
+def fun_l17_n335()
+ fun_l18_n384
+end
+
+def fun_l17_n336()
+ fun_l18_n364
+end
+
+def fun_l17_n337()
+ fun_l18_n857
+end
+
+def fun_l17_n338()
+ fun_l18_n617
+end
+
+def fun_l17_n339()
+ fun_l18_n669
+end
+
+def fun_l17_n340()
+ fun_l18_n332
+end
+
+def fun_l17_n341()
+ fun_l18_n104
+end
+
+def fun_l17_n342()
+ fun_l18_n716
+end
+
+def fun_l17_n343()
+ fun_l18_n836
+end
+
+def fun_l17_n344()
+ fun_l18_n31
+end
+
+def fun_l17_n345()
+ fun_l18_n345
+end
+
+def fun_l17_n346()
+ fun_l18_n988
+end
+
+def fun_l17_n347()
+ fun_l18_n63
+end
+
+def fun_l17_n348()
+ fun_l18_n637
+end
+
+def fun_l17_n349()
+ fun_l18_n767
+end
+
+def fun_l17_n350()
+ fun_l18_n45
+end
+
+def fun_l17_n351()
+ fun_l18_n332
+end
+
+def fun_l17_n352()
+ fun_l18_n622
+end
+
+def fun_l17_n353()
+ fun_l18_n879
+end
+
+def fun_l17_n354()
+ fun_l18_n499
+end
+
+def fun_l17_n355()
+ fun_l18_n446
+end
+
+def fun_l17_n356()
+ fun_l18_n355
+end
+
+def fun_l17_n357()
+ fun_l18_n40
+end
+
+def fun_l17_n358()
+ fun_l18_n602
+end
+
+def fun_l17_n359()
+ fun_l18_n162
+end
+
+def fun_l17_n360()
+ fun_l18_n415
+end
+
+def fun_l17_n361()
+ fun_l18_n966
+end
+
+def fun_l17_n362()
+ fun_l18_n801
+end
+
+def fun_l17_n363()
+ fun_l18_n242
+end
+
+def fun_l17_n364()
+ fun_l18_n563
+end
+
+def fun_l17_n365()
+ fun_l18_n150
+end
+
+def fun_l17_n366()
+ fun_l18_n667
+end
+
+def fun_l17_n367()
+ fun_l18_n997
+end
+
+def fun_l17_n368()
+ fun_l18_n550
+end
+
+def fun_l17_n369()
+ fun_l18_n313
+end
+
+def fun_l17_n370()
+ fun_l18_n434
+end
+
+def fun_l17_n371()
+ fun_l18_n254
+end
+
+def fun_l17_n372()
+ fun_l18_n138
+end
+
+def fun_l17_n373()
+ fun_l18_n371
+end
+
+def fun_l17_n374()
+ fun_l18_n135
+end
+
+def fun_l17_n375()
+ fun_l18_n405
+end
+
+def fun_l17_n376()
+ fun_l18_n501
+end
+
+def fun_l17_n377()
+ fun_l18_n565
+end
+
+def fun_l17_n378()
+ fun_l18_n769
+end
+
+def fun_l17_n379()
+ fun_l18_n20
+end
+
+def fun_l17_n380()
+ fun_l18_n917
+end
+
+def fun_l17_n381()
+ fun_l18_n983
+end
+
+def fun_l17_n382()
+ fun_l18_n783
+end
+
+def fun_l17_n383()
+ fun_l18_n849
+end
+
+def fun_l17_n384()
+ fun_l18_n21
+end
+
+def fun_l17_n385()
+ fun_l18_n806
+end
+
+def fun_l17_n386()
+ fun_l18_n440
+end
+
+def fun_l17_n387()
+ fun_l18_n810
+end
+
+def fun_l17_n388()
+ fun_l18_n744
+end
+
+def fun_l17_n389()
+ fun_l18_n184
+end
+
+def fun_l17_n390()
+ fun_l18_n775
+end
+
+def fun_l17_n391()
+ fun_l18_n704
+end
+
+def fun_l17_n392()
+ fun_l18_n413
+end
+
+def fun_l17_n393()
+ fun_l18_n329
+end
+
+def fun_l17_n394()
+ fun_l18_n874
+end
+
+def fun_l17_n395()
+ fun_l18_n756
+end
+
+def fun_l17_n396()
+ fun_l18_n502
+end
+
+def fun_l17_n397()
+ fun_l18_n675
+end
+
+def fun_l17_n398()
+ fun_l18_n504
+end
+
+def fun_l17_n399()
+ fun_l18_n117
+end
+
+def fun_l17_n400()
+ fun_l18_n203
+end
+
+def fun_l17_n401()
+ fun_l18_n672
+end
+
+def fun_l17_n402()
+ fun_l18_n971
+end
+
+def fun_l17_n403()
+ fun_l18_n742
+end
+
+def fun_l17_n404()
+ fun_l18_n817
+end
+
+def fun_l17_n405()
+ fun_l18_n981
+end
+
+def fun_l17_n406()
+ fun_l18_n791
+end
+
+def fun_l17_n407()
+ fun_l18_n660
+end
+
+def fun_l17_n408()
+ fun_l18_n988
+end
+
+def fun_l17_n409()
+ fun_l18_n875
+end
+
+def fun_l17_n410()
+ fun_l18_n469
+end
+
+def fun_l17_n411()
+ fun_l18_n890
+end
+
+def fun_l17_n412()
+ fun_l18_n739
+end
+
+def fun_l17_n413()
+ fun_l18_n880
+end
+
+def fun_l17_n414()
+ fun_l18_n47
+end
+
+def fun_l17_n415()
+ fun_l18_n474
+end
+
+def fun_l17_n416()
+ fun_l18_n923
+end
+
+def fun_l17_n417()
+ fun_l18_n959
+end
+
+def fun_l17_n418()
+ fun_l18_n748
+end
+
+def fun_l17_n419()
+ fun_l18_n555
+end
+
+def fun_l17_n420()
+ fun_l18_n785
+end
+
+def fun_l17_n421()
+ fun_l18_n49
+end
+
+def fun_l17_n422()
+ fun_l18_n509
+end
+
+def fun_l17_n423()
+ fun_l18_n0
+end
+
+def fun_l17_n424()
+ fun_l18_n388
+end
+
+def fun_l17_n425()
+ fun_l18_n394
+end
+
+def fun_l17_n426()
+ fun_l18_n199
+end
+
+def fun_l17_n427()
+ fun_l18_n554
+end
+
+def fun_l17_n428()
+ fun_l18_n963
+end
+
+def fun_l17_n429()
+ fun_l18_n464
+end
+
+def fun_l17_n430()
+ fun_l18_n941
+end
+
+def fun_l17_n431()
+ fun_l18_n116
+end
+
+def fun_l17_n432()
+ fun_l18_n370
+end
+
+def fun_l17_n433()
+ fun_l18_n848
+end
+
+def fun_l17_n434()
+ fun_l18_n123
+end
+
+def fun_l17_n435()
+ fun_l18_n32
+end
+
+def fun_l17_n436()
+ fun_l18_n285
+end
+
+def fun_l17_n437()
+ fun_l18_n823
+end
+
+def fun_l17_n438()
+ fun_l18_n517
+end
+
+def fun_l17_n439()
+ fun_l18_n292
+end
+
+def fun_l17_n440()
+ fun_l18_n29
+end
+
+def fun_l17_n441()
+ fun_l18_n166
+end
+
+def fun_l17_n442()
+ fun_l18_n282
+end
+
+def fun_l17_n443()
+ fun_l18_n300
+end
+
+def fun_l17_n444()
+ fun_l18_n8
+end
+
+def fun_l17_n445()
+ fun_l18_n458
+end
+
+def fun_l17_n446()
+ fun_l18_n797
+end
+
+def fun_l17_n447()
+ fun_l18_n835
+end
+
+def fun_l17_n448()
+ fun_l18_n535
+end
+
+def fun_l17_n449()
+ fun_l18_n909
+end
+
+def fun_l17_n450()
+ fun_l18_n890
+end
+
+def fun_l17_n451()
+ fun_l18_n706
+end
+
+def fun_l17_n452()
+ fun_l18_n636
+end
+
+def fun_l17_n453()
+ fun_l18_n541
+end
+
+def fun_l17_n454()
+ fun_l18_n332
+end
+
+def fun_l17_n455()
+ fun_l18_n241
+end
+
+def fun_l17_n456()
+ fun_l18_n334
+end
+
+def fun_l17_n457()
+ fun_l18_n212
+end
+
+def fun_l17_n458()
+ fun_l18_n414
+end
+
+def fun_l17_n459()
+ fun_l18_n600
+end
+
+def fun_l17_n460()
+ fun_l18_n237
+end
+
+def fun_l17_n461()
+ fun_l18_n881
+end
+
+def fun_l17_n462()
+ fun_l18_n539
+end
+
+def fun_l17_n463()
+ fun_l18_n262
+end
+
+def fun_l17_n464()
+ fun_l18_n437
+end
+
+def fun_l17_n465()
+ fun_l18_n874
+end
+
+def fun_l17_n466()
+ fun_l18_n418
+end
+
+def fun_l17_n467()
+ fun_l18_n963
+end
+
+def fun_l17_n468()
+ fun_l18_n340
+end
+
+def fun_l17_n469()
+ fun_l18_n708
+end
+
+def fun_l17_n470()
+ fun_l18_n725
+end
+
+def fun_l17_n471()
+ fun_l18_n59
+end
+
+def fun_l17_n472()
+ fun_l18_n309
+end
+
+def fun_l17_n473()
+ fun_l18_n490
+end
+
+def fun_l17_n474()
+ fun_l18_n588
+end
+
+def fun_l17_n475()
+ fun_l18_n623
+end
+
+def fun_l17_n476()
+ fun_l18_n127
+end
+
+def fun_l17_n477()
+ fun_l18_n385
+end
+
+def fun_l17_n478()
+ fun_l18_n381
+end
+
+def fun_l17_n479()
+ fun_l18_n603
+end
+
+def fun_l17_n480()
+ fun_l18_n524
+end
+
+def fun_l17_n481()
+ fun_l18_n829
+end
+
+def fun_l17_n482()
+ fun_l18_n675
+end
+
+def fun_l17_n483()
+ fun_l18_n792
+end
+
+def fun_l17_n484()
+ fun_l18_n438
+end
+
+def fun_l17_n485()
+ fun_l18_n101
+end
+
+def fun_l17_n486()
+ fun_l18_n513
+end
+
+def fun_l17_n487()
+ fun_l18_n44
+end
+
+def fun_l17_n488()
+ fun_l18_n975
+end
+
+def fun_l17_n489()
+ fun_l18_n891
+end
+
+def fun_l17_n490()
+ fun_l18_n650
+end
+
+def fun_l17_n491()
+ fun_l18_n840
+end
+
+def fun_l17_n492()
+ fun_l18_n954
+end
+
+def fun_l17_n493()
+ fun_l18_n326
+end
+
+def fun_l17_n494()
+ fun_l18_n93
+end
+
+def fun_l17_n495()
+ fun_l18_n537
+end
+
+def fun_l17_n496()
+ fun_l18_n871
+end
+
+def fun_l17_n497()
+ fun_l18_n786
+end
+
+def fun_l17_n498()
+ fun_l18_n311
+end
+
+def fun_l17_n499()
+ fun_l18_n494
+end
+
+def fun_l17_n500()
+ fun_l18_n787
+end
+
+def fun_l17_n501()
+ fun_l18_n511
+end
+
+def fun_l17_n502()
+ fun_l18_n342
+end
+
+def fun_l17_n503()
+ fun_l18_n218
+end
+
+def fun_l17_n504()
+ fun_l18_n432
+end
+
+def fun_l17_n505()
+ fun_l18_n637
+end
+
+def fun_l17_n506()
+ fun_l18_n877
+end
+
+def fun_l17_n507()
+ fun_l18_n767
+end
+
+def fun_l17_n508()
+ fun_l18_n854
+end
+
+def fun_l17_n509()
+ fun_l18_n614
+end
+
+def fun_l17_n510()
+ fun_l18_n720
+end
+
+def fun_l17_n511()
+ fun_l18_n556
+end
+
+def fun_l17_n512()
+ fun_l18_n950
+end
+
+def fun_l17_n513()
+ fun_l18_n502
+end
+
+def fun_l17_n514()
+ fun_l18_n841
+end
+
+def fun_l17_n515()
+ fun_l18_n24
+end
+
+def fun_l17_n516()
+ fun_l18_n392
+end
+
+def fun_l17_n517()
+ fun_l18_n99
+end
+
+def fun_l17_n518()
+ fun_l18_n370
+end
+
+def fun_l17_n519()
+ fun_l18_n798
+end
+
+def fun_l17_n520()
+ fun_l18_n405
+end
+
+def fun_l17_n521()
+ fun_l18_n736
+end
+
+def fun_l17_n522()
+ fun_l18_n616
+end
+
+def fun_l17_n523()
+ fun_l18_n701
+end
+
+def fun_l17_n524()
+ fun_l18_n914
+end
+
+def fun_l17_n525()
+ fun_l18_n832
+end
+
+def fun_l17_n526()
+ fun_l18_n234
+end
+
+def fun_l17_n527()
+ fun_l18_n65
+end
+
+def fun_l17_n528()
+ fun_l18_n61
+end
+
+def fun_l17_n529()
+ fun_l18_n639
+end
+
+def fun_l17_n530()
+ fun_l18_n162
+end
+
+def fun_l17_n531()
+ fun_l18_n250
+end
+
+def fun_l17_n532()
+ fun_l18_n567
+end
+
+def fun_l17_n533()
+ fun_l18_n183
+end
+
+def fun_l17_n534()
+ fun_l18_n170
+end
+
+def fun_l17_n535()
+ fun_l18_n663
+end
+
+def fun_l17_n536()
+ fun_l18_n654
+end
+
+def fun_l17_n537()
+ fun_l18_n616
+end
+
+def fun_l17_n538()
+ fun_l18_n836
+end
+
+def fun_l17_n539()
+ fun_l18_n679
+end
+
+def fun_l17_n540()
+ fun_l18_n286
+end
+
+def fun_l17_n541()
+ fun_l18_n35
+end
+
+def fun_l17_n542()
+ fun_l18_n622
+end
+
+def fun_l17_n543()
+ fun_l18_n305
+end
+
+def fun_l17_n544()
+ fun_l18_n665
+end
+
+def fun_l17_n545()
+ fun_l18_n376
+end
+
+def fun_l17_n546()
+ fun_l18_n831
+end
+
+def fun_l17_n547()
+ fun_l18_n917
+end
+
+def fun_l17_n548()
+ fun_l18_n72
+end
+
+def fun_l17_n549()
+ fun_l18_n934
+end
+
+def fun_l17_n550()
+ fun_l18_n450
+end
+
+def fun_l17_n551()
+ fun_l18_n683
+end
+
+def fun_l17_n552()
+ fun_l18_n775
+end
+
+def fun_l17_n553()
+ fun_l18_n418
+end
+
+def fun_l17_n554()
+ fun_l18_n95
+end
+
+def fun_l17_n555()
+ fun_l18_n395
+end
+
+def fun_l17_n556()
+ fun_l18_n398
+end
+
+def fun_l17_n557()
+ fun_l18_n192
+end
+
+def fun_l17_n558()
+ fun_l18_n773
+end
+
+def fun_l17_n559()
+ fun_l18_n924
+end
+
+def fun_l17_n560()
+ fun_l18_n338
+end
+
+def fun_l17_n561()
+ fun_l18_n926
+end
+
+def fun_l17_n562()
+ fun_l18_n153
+end
+
+def fun_l17_n563()
+ fun_l18_n76
+end
+
+def fun_l17_n564()
+ fun_l18_n192
+end
+
+def fun_l17_n565()
+ fun_l18_n605
+end
+
+def fun_l17_n566()
+ fun_l18_n219
+end
+
+def fun_l17_n567()
+ fun_l18_n58
+end
+
+def fun_l17_n568()
+ fun_l18_n245
+end
+
+def fun_l17_n569()
+ fun_l18_n810
+end
+
+def fun_l17_n570()
+ fun_l18_n541
+end
+
+def fun_l17_n571()
+ fun_l18_n37
+end
+
+def fun_l17_n572()
+ fun_l18_n329
+end
+
+def fun_l17_n573()
+ fun_l18_n159
+end
+
+def fun_l17_n574()
+ fun_l18_n926
+end
+
+def fun_l17_n575()
+ fun_l18_n940
+end
+
+def fun_l17_n576()
+ fun_l18_n547
+end
+
+def fun_l17_n577()
+ fun_l18_n694
+end
+
+def fun_l17_n578()
+ fun_l18_n513
+end
+
+def fun_l17_n579()
+ fun_l18_n197
+end
+
+def fun_l17_n580()
+ fun_l18_n97
+end
+
+def fun_l17_n581()
+ fun_l18_n504
+end
+
+def fun_l17_n582()
+ fun_l18_n30
+end
+
+def fun_l17_n583()
+ fun_l18_n972
+end
+
+def fun_l17_n584()
+ fun_l18_n684
+end
+
+def fun_l17_n585()
+ fun_l18_n720
+end
+
+def fun_l17_n586()
+ fun_l18_n999
+end
+
+def fun_l17_n587()
+ fun_l18_n241
+end
+
+def fun_l17_n588()
+ fun_l18_n289
+end
+
+def fun_l17_n589()
+ fun_l18_n168
+end
+
+def fun_l17_n590()
+ fun_l18_n890
+end
+
+def fun_l17_n591()
+ fun_l18_n566
+end
+
+def fun_l17_n592()
+ fun_l18_n722
+end
+
+def fun_l17_n593()
+ fun_l18_n65
+end
+
+def fun_l17_n594()
+ fun_l18_n975
+end
+
+def fun_l17_n595()
+ fun_l18_n68
+end
+
+def fun_l17_n596()
+ fun_l18_n930
+end
+
+def fun_l17_n597()
+ fun_l18_n386
+end
+
+def fun_l17_n598()
+ fun_l18_n755
+end
+
+def fun_l17_n599()
+ fun_l18_n571
+end
+
+def fun_l17_n600()
+ fun_l18_n633
+end
+
+def fun_l17_n601()
+ fun_l18_n823
+end
+
+def fun_l17_n602()
+ fun_l18_n618
+end
+
+def fun_l17_n603()
+ fun_l18_n587
+end
+
+def fun_l17_n604()
+ fun_l18_n730
+end
+
+def fun_l17_n605()
+ fun_l18_n829
+end
+
+def fun_l17_n606()
+ fun_l18_n591
+end
+
+def fun_l17_n607()
+ fun_l18_n971
+end
+
+def fun_l17_n608()
+ fun_l18_n79
+end
+
+def fun_l17_n609()
+ fun_l18_n971
+end
+
+def fun_l17_n610()
+ fun_l18_n571
+end
+
+def fun_l17_n611()
+ fun_l18_n768
+end
+
+def fun_l17_n612()
+ fun_l18_n894
+end
+
+def fun_l17_n613()
+ fun_l18_n424
+end
+
+def fun_l17_n614()
+ fun_l18_n452
+end
+
+def fun_l17_n615()
+ fun_l18_n928
+end
+
+def fun_l17_n616()
+ fun_l18_n273
+end
+
+def fun_l17_n617()
+ fun_l18_n344
+end
+
+def fun_l17_n618()
+ fun_l18_n673
+end
+
+def fun_l17_n619()
+ fun_l18_n849
+end
+
+def fun_l17_n620()
+ fun_l18_n462
+end
+
+def fun_l17_n621()
+ fun_l18_n691
+end
+
+def fun_l17_n622()
+ fun_l18_n111
+end
+
+def fun_l17_n623()
+ fun_l18_n140
+end
+
+def fun_l17_n624()
+ fun_l18_n949
+end
+
+def fun_l17_n625()
+ fun_l18_n743
+end
+
+def fun_l17_n626()
+ fun_l18_n985
+end
+
+def fun_l17_n627()
+ fun_l18_n123
+end
+
+def fun_l17_n628()
+ fun_l18_n59
+end
+
+def fun_l17_n629()
+ fun_l18_n355
+end
+
+def fun_l17_n630()
+ fun_l18_n828
+end
+
+def fun_l17_n631()
+ fun_l18_n602
+end
+
+def fun_l17_n632()
+ fun_l18_n597
+end
+
+def fun_l17_n633()
+ fun_l18_n156
+end
+
+def fun_l17_n634()
+ fun_l18_n249
+end
+
+def fun_l17_n635()
+ fun_l18_n166
+end
+
+def fun_l17_n636()
+ fun_l18_n913
+end
+
+def fun_l17_n637()
+ fun_l18_n667
+end
+
+def fun_l17_n638()
+ fun_l18_n641
+end
+
+def fun_l17_n639()
+ fun_l18_n31
+end
+
+def fun_l17_n640()
+ fun_l18_n481
+end
+
+def fun_l17_n641()
+ fun_l18_n670
+end
+
+def fun_l17_n642()
+ fun_l18_n104
+end
+
+def fun_l17_n643()
+ fun_l18_n490
+end
+
+def fun_l17_n644()
+ fun_l18_n653
+end
+
+def fun_l17_n645()
+ fun_l18_n582
+end
+
+def fun_l17_n646()
+ fun_l18_n805
+end
+
+def fun_l17_n647()
+ fun_l18_n89
+end
+
+def fun_l17_n648()
+ fun_l18_n226
+end
+
+def fun_l17_n649()
+ fun_l18_n657
+end
+
+def fun_l17_n650()
+ fun_l18_n711
+end
+
+def fun_l17_n651()
+ fun_l18_n991
+end
+
+def fun_l17_n652()
+ fun_l18_n955
+end
+
+def fun_l17_n653()
+ fun_l18_n357
+end
+
+def fun_l17_n654()
+ fun_l18_n816
+end
+
+def fun_l17_n655()
+ fun_l18_n3
+end
+
+def fun_l17_n656()
+ fun_l18_n796
+end
+
+def fun_l17_n657()
+ fun_l18_n864
+end
+
+def fun_l17_n658()
+ fun_l18_n484
+end
+
+def fun_l17_n659()
+ fun_l18_n59
+end
+
+def fun_l17_n660()
+ fun_l18_n465
+end
+
+def fun_l17_n661()
+ fun_l18_n175
+end
+
+def fun_l17_n662()
+ fun_l18_n721
+end
+
+def fun_l17_n663()
+ fun_l18_n203
+end
+
+def fun_l17_n664()
+ fun_l18_n77
+end
+
+def fun_l17_n665()
+ fun_l18_n428
+end
+
+def fun_l17_n666()
+ fun_l18_n651
+end
+
+def fun_l17_n667()
+ fun_l18_n652
+end
+
+def fun_l17_n668()
+ fun_l18_n199
+end
+
+def fun_l17_n669()
+ fun_l18_n851
+end
+
+def fun_l17_n670()
+ fun_l18_n27
+end
+
+def fun_l17_n671()
+ fun_l18_n399
+end
+
+def fun_l17_n672()
+ fun_l18_n233
+end
+
+def fun_l17_n673()
+ fun_l18_n213
+end
+
+def fun_l17_n674()
+ fun_l18_n112
+end
+
+def fun_l17_n675()
+ fun_l18_n56
+end
+
+def fun_l17_n676()
+ fun_l18_n813
+end
+
+def fun_l17_n677()
+ fun_l18_n344
+end
+
+def fun_l17_n678()
+ fun_l18_n705
+end
+
+def fun_l17_n679()
+ fun_l18_n117
+end
+
+def fun_l17_n680()
+ fun_l18_n644
+end
+
+def fun_l17_n681()
+ fun_l18_n544
+end
+
+def fun_l17_n682()
+ fun_l18_n910
+end
+
+def fun_l17_n683()
+ fun_l18_n604
+end
+
+def fun_l17_n684()
+ fun_l18_n916
+end
+
+def fun_l17_n685()
+ fun_l18_n795
+end
+
+def fun_l17_n686()
+ fun_l18_n983
+end
+
+def fun_l17_n687()
+ fun_l18_n200
+end
+
+def fun_l17_n688()
+ fun_l18_n699
+end
+
+def fun_l17_n689()
+ fun_l18_n736
+end
+
+def fun_l17_n690()
+ fun_l18_n465
+end
+
+def fun_l17_n691()
+ fun_l18_n496
+end
+
+def fun_l17_n692()
+ fun_l18_n505
+end
+
+def fun_l17_n693()
+ fun_l18_n753
+end
+
+def fun_l17_n694()
+ fun_l18_n473
+end
+
+def fun_l17_n695()
+ fun_l18_n320
+end
+
+def fun_l17_n696()
+ fun_l18_n319
+end
+
+def fun_l17_n697()
+ fun_l18_n789
+end
+
+def fun_l17_n698()
+ fun_l18_n474
+end
+
+def fun_l17_n699()
+ fun_l18_n561
+end
+
+def fun_l17_n700()
+ fun_l18_n455
+end
+
+def fun_l17_n701()
+ fun_l18_n863
+end
+
+def fun_l17_n702()
+ fun_l18_n22
+end
+
+def fun_l17_n703()
+ fun_l18_n850
+end
+
+def fun_l17_n704()
+ fun_l18_n200
+end
+
+def fun_l17_n705()
+ fun_l18_n411
+end
+
+def fun_l17_n706()
+ fun_l18_n655
+end
+
+def fun_l17_n707()
+ fun_l18_n101
+end
+
+def fun_l17_n708()
+ fun_l18_n911
+end
+
+def fun_l17_n709()
+ fun_l18_n974
+end
+
+def fun_l17_n710()
+ fun_l18_n354
+end
+
+def fun_l17_n711()
+ fun_l18_n265
+end
+
+def fun_l17_n712()
+ fun_l18_n995
+end
+
+def fun_l17_n713()
+ fun_l18_n21
+end
+
+def fun_l17_n714()
+ fun_l18_n783
+end
+
+def fun_l17_n715()
+ fun_l18_n974
+end
+
+def fun_l17_n716()
+ fun_l18_n814
+end
+
+def fun_l17_n717()
+ fun_l18_n833
+end
+
+def fun_l17_n718()
+ fun_l18_n919
+end
+
+def fun_l17_n719()
+ fun_l18_n379
+end
+
+def fun_l17_n720()
+ fun_l18_n995
+end
+
+def fun_l17_n721()
+ fun_l18_n473
+end
+
+def fun_l17_n722()
+ fun_l18_n345
+end
+
+def fun_l17_n723()
+ fun_l18_n982
+end
+
+def fun_l17_n724()
+ fun_l18_n857
+end
+
+def fun_l17_n725()
+ fun_l18_n238
+end
+
+def fun_l17_n726()
+ fun_l18_n428
+end
+
+def fun_l17_n727()
+ fun_l18_n387
+end
+
+def fun_l17_n728()
+ fun_l18_n690
+end
+
+def fun_l17_n729()
+ fun_l18_n581
+end
+
+def fun_l17_n730()
+ fun_l18_n110
+end
+
+def fun_l17_n731()
+ fun_l18_n788
+end
+
+def fun_l17_n732()
+ fun_l18_n190
+end
+
+def fun_l17_n733()
+ fun_l18_n856
+end
+
+def fun_l17_n734()
+ fun_l18_n724
+end
+
+def fun_l17_n735()
+ fun_l18_n174
+end
+
+def fun_l17_n736()
+ fun_l18_n527
+end
+
+def fun_l17_n737()
+ fun_l18_n816
+end
+
+def fun_l17_n738()
+ fun_l18_n425
+end
+
+def fun_l17_n739()
+ fun_l18_n476
+end
+
+def fun_l17_n740()
+ fun_l18_n685
+end
+
+def fun_l17_n741()
+ fun_l18_n211
+end
+
+def fun_l17_n742()
+ fun_l18_n354
+end
+
+def fun_l17_n743()
+ fun_l18_n849
+end
+
+def fun_l17_n744()
+ fun_l18_n673
+end
+
+def fun_l17_n745()
+ fun_l18_n274
+end
+
+def fun_l17_n746()
+ fun_l18_n147
+end
+
+def fun_l17_n747()
+ fun_l18_n103
+end
+
+def fun_l17_n748()
+ fun_l18_n185
+end
+
+def fun_l17_n749()
+ fun_l18_n781
+end
+
+def fun_l17_n750()
+ fun_l18_n980
+end
+
+def fun_l17_n751()
+ fun_l18_n961
+end
+
+def fun_l17_n752()
+ fun_l18_n447
+end
+
+def fun_l17_n753()
+ fun_l18_n124
+end
+
+def fun_l17_n754()
+ fun_l18_n605
+end
+
+def fun_l17_n755()
+ fun_l18_n7
+end
+
+def fun_l17_n756()
+ fun_l18_n731
+end
+
+def fun_l17_n757()
+ fun_l18_n479
+end
+
+def fun_l17_n758()
+ fun_l18_n931
+end
+
+def fun_l17_n759()
+ fun_l18_n535
+end
+
+def fun_l17_n760()
+ fun_l18_n772
+end
+
+def fun_l17_n761()
+ fun_l18_n827
+end
+
+def fun_l17_n762()
+ fun_l18_n265
+end
+
+def fun_l17_n763()
+ fun_l18_n81
+end
+
+def fun_l17_n764()
+ fun_l18_n377
+end
+
+def fun_l17_n765()
+ fun_l18_n565
+end
+
+def fun_l17_n766()
+ fun_l18_n520
+end
+
+def fun_l17_n767()
+ fun_l18_n556
+end
+
+def fun_l17_n768()
+ fun_l18_n711
+end
+
+def fun_l17_n769()
+ fun_l18_n460
+end
+
+def fun_l17_n770()
+ fun_l18_n902
+end
+
+def fun_l17_n771()
+ fun_l18_n874
+end
+
+def fun_l17_n772()
+ fun_l18_n742
+end
+
+def fun_l17_n773()
+ fun_l18_n578
+end
+
+def fun_l17_n774()
+ fun_l18_n198
+end
+
+def fun_l17_n775()
+ fun_l18_n965
+end
+
+def fun_l17_n776()
+ fun_l18_n342
+end
+
+def fun_l17_n777()
+ fun_l18_n50
+end
+
+def fun_l17_n778()
+ fun_l18_n299
+end
+
+def fun_l17_n779()
+ fun_l18_n289
+end
+
+def fun_l17_n780()
+ fun_l18_n830
+end
+
+def fun_l17_n781()
+ fun_l18_n157
+end
+
+def fun_l17_n782()
+ fun_l18_n628
+end
+
+def fun_l17_n783()
+ fun_l18_n875
+end
+
+def fun_l17_n784()
+ fun_l18_n810
+end
+
+def fun_l17_n785()
+ fun_l18_n642
+end
+
+def fun_l17_n786()
+ fun_l18_n422
+end
+
+def fun_l17_n787()
+ fun_l18_n816
+end
+
+def fun_l17_n788()
+ fun_l18_n184
+end
+
+def fun_l17_n789()
+ fun_l18_n391
+end
+
+def fun_l17_n790()
+ fun_l18_n804
+end
+
+def fun_l17_n791()
+ fun_l18_n534
+end
+
+def fun_l17_n792()
+ fun_l18_n353
+end
+
+def fun_l17_n793()
+ fun_l18_n329
+end
+
+def fun_l17_n794()
+ fun_l18_n75
+end
+
+def fun_l17_n795()
+ fun_l18_n854
+end
+
+def fun_l17_n796()
+ fun_l18_n478
+end
+
+def fun_l17_n797()
+ fun_l18_n403
+end
+
+def fun_l17_n798()
+ fun_l18_n842
+end
+
+def fun_l17_n799()
+ fun_l18_n569
+end
+
+def fun_l17_n800()
+ fun_l18_n596
+end
+
+def fun_l17_n801()
+ fun_l18_n548
+end
+
+def fun_l17_n802()
+ fun_l18_n393
+end
+
+def fun_l17_n803()
+ fun_l18_n253
+end
+
+def fun_l17_n804()
+ fun_l18_n987
+end
+
+def fun_l17_n805()
+ fun_l18_n560
+end
+
+def fun_l17_n806()
+ fun_l18_n582
+end
+
+def fun_l17_n807()
+ fun_l18_n356
+end
+
+def fun_l17_n808()
+ fun_l18_n458
+end
+
+def fun_l17_n809()
+ fun_l18_n215
+end
+
+def fun_l17_n810()
+ fun_l18_n16
+end
+
+def fun_l17_n811()
+ fun_l18_n586
+end
+
+def fun_l17_n812()
+ fun_l18_n312
+end
+
+def fun_l17_n813()
+ fun_l18_n861
+end
+
+def fun_l17_n814()
+ fun_l18_n455
+end
+
+def fun_l17_n815()
+ fun_l18_n530
+end
+
+def fun_l17_n816()
+ fun_l18_n583
+end
+
+def fun_l17_n817()
+ fun_l18_n511
+end
+
+def fun_l17_n818()
+ fun_l18_n568
+end
+
+def fun_l17_n819()
+ fun_l18_n411
+end
+
+def fun_l17_n820()
+ fun_l18_n404
+end
+
+def fun_l17_n821()
+ fun_l18_n199
+end
+
+def fun_l17_n822()
+ fun_l18_n393
+end
+
+def fun_l17_n823()
+ fun_l18_n856
+end
+
+def fun_l17_n824()
+ fun_l18_n638
+end
+
+def fun_l17_n825()
+ fun_l18_n853
+end
+
+def fun_l17_n826()
+ fun_l18_n896
+end
+
+def fun_l17_n827()
+ fun_l18_n267
+end
+
+def fun_l17_n828()
+ fun_l18_n419
+end
+
+def fun_l17_n829()
+ fun_l18_n47
+end
+
+def fun_l17_n830()
+ fun_l18_n436
+end
+
+def fun_l17_n831()
+ fun_l18_n714
+end
+
+def fun_l17_n832()
+ fun_l18_n156
+end
+
+def fun_l17_n833()
+ fun_l18_n32
+end
+
+def fun_l17_n834()
+ fun_l18_n467
+end
+
+def fun_l17_n835()
+ fun_l18_n905
+end
+
+def fun_l17_n836()
+ fun_l18_n824
+end
+
+def fun_l17_n837()
+ fun_l18_n503
+end
+
+def fun_l17_n838()
+ fun_l18_n454
+end
+
+def fun_l17_n839()
+ fun_l18_n295
+end
+
+def fun_l17_n840()
+ fun_l18_n669
+end
+
+def fun_l17_n841()
+ fun_l18_n618
+end
+
+def fun_l17_n842()
+ fun_l18_n984
+end
+
+def fun_l17_n843()
+ fun_l18_n485
+end
+
+def fun_l17_n844()
+ fun_l18_n952
+end
+
+def fun_l17_n845()
+ fun_l18_n374
+end
+
+def fun_l17_n846()
+ fun_l18_n933
+end
+
+def fun_l17_n847()
+ fun_l18_n246
+end
+
+def fun_l17_n848()
+ fun_l18_n672
+end
+
+def fun_l17_n849()
+ fun_l18_n23
+end
+
+def fun_l17_n850()
+ fun_l18_n641
+end
+
+def fun_l17_n851()
+ fun_l18_n439
+end
+
+def fun_l17_n852()
+ fun_l18_n423
+end
+
+def fun_l17_n853()
+ fun_l18_n565
+end
+
+def fun_l17_n854()
+ fun_l18_n189
+end
+
+def fun_l17_n855()
+ fun_l18_n265
+end
+
+def fun_l17_n856()
+ fun_l18_n101
+end
+
+def fun_l17_n857()
+ fun_l18_n799
+end
+
+def fun_l17_n858()
+ fun_l18_n831
+end
+
+def fun_l17_n859()
+ fun_l18_n222
+end
+
+def fun_l17_n860()
+ fun_l18_n398
+end
+
+def fun_l17_n861()
+ fun_l18_n946
+end
+
+def fun_l17_n862()
+ fun_l18_n693
+end
+
+def fun_l17_n863()
+ fun_l18_n947
+end
+
+def fun_l17_n864()
+ fun_l18_n22
+end
+
+def fun_l17_n865()
+ fun_l18_n386
+end
+
+def fun_l17_n866()
+ fun_l18_n771
+end
+
+def fun_l17_n867()
+ fun_l18_n38
+end
+
+def fun_l17_n868()
+ fun_l18_n290
+end
+
+def fun_l17_n869()
+ fun_l18_n204
+end
+
+def fun_l17_n870()
+ fun_l18_n780
+end
+
+def fun_l17_n871()
+ fun_l18_n275
+end
+
+def fun_l17_n872()
+ fun_l18_n810
+end
+
+def fun_l17_n873()
+ fun_l18_n104
+end
+
+def fun_l17_n874()
+ fun_l18_n433
+end
+
+def fun_l17_n875()
+ fun_l18_n55
+end
+
+def fun_l17_n876()
+ fun_l18_n508
+end
+
+def fun_l17_n877()
+ fun_l18_n997
+end
+
+def fun_l17_n878()
+ fun_l18_n115
+end
+
+def fun_l17_n879()
+ fun_l18_n568
+end
+
+def fun_l17_n880()
+ fun_l18_n385
+end
+
+def fun_l17_n881()
+ fun_l18_n912
+end
+
+def fun_l17_n882()
+ fun_l18_n234
+end
+
+def fun_l17_n883()
+ fun_l18_n85
+end
+
+def fun_l17_n884()
+ fun_l18_n935
+end
+
+def fun_l17_n885()
+ fun_l18_n389
+end
+
+def fun_l17_n886()
+ fun_l18_n925
+end
+
+def fun_l17_n887()
+ fun_l18_n629
+end
+
+def fun_l17_n888()
+ fun_l18_n310
+end
+
+def fun_l17_n889()
+ fun_l18_n538
+end
+
+def fun_l17_n890()
+ fun_l18_n172
+end
+
+def fun_l17_n891()
+ fun_l18_n161
+end
+
+def fun_l17_n892()
+ fun_l18_n11
+end
+
+def fun_l17_n893()
+ fun_l18_n216
+end
+
+def fun_l17_n894()
+ fun_l18_n802
+end
+
+def fun_l17_n895()
+ fun_l18_n982
+end
+
+def fun_l17_n896()
+ fun_l18_n220
+end
+
+def fun_l17_n897()
+ fun_l18_n169
+end
+
+def fun_l17_n898()
+ fun_l18_n64
+end
+
+def fun_l17_n899()
+ fun_l18_n282
+end
+
+def fun_l17_n900()
+ fun_l18_n134
+end
+
+def fun_l17_n901()
+ fun_l18_n424
+end
+
+def fun_l17_n902()
+ fun_l18_n766
+end
+
+def fun_l17_n903()
+ fun_l18_n808
+end
+
+def fun_l17_n904()
+ fun_l18_n766
+end
+
+def fun_l17_n905()
+ fun_l18_n836
+end
+
+def fun_l17_n906()
+ fun_l18_n5
+end
+
+def fun_l17_n907()
+ fun_l18_n47
+end
+
+def fun_l17_n908()
+ fun_l18_n414
+end
+
+def fun_l17_n909()
+ fun_l18_n11
+end
+
+def fun_l17_n910()
+ fun_l18_n446
+end
+
+def fun_l17_n911()
+ fun_l18_n161
+end
+
+def fun_l17_n912()
+ fun_l18_n291
+end
+
+def fun_l17_n913()
+ fun_l18_n728
+end
+
+def fun_l17_n914()
+ fun_l18_n806
+end
+
+def fun_l17_n915()
+ fun_l18_n355
+end
+
+def fun_l17_n916()
+ fun_l18_n157
+end
+
+def fun_l17_n917()
+ fun_l18_n912
+end
+
+def fun_l17_n918()
+ fun_l18_n354
+end
+
+def fun_l17_n919()
+ fun_l18_n84
+end
+
+def fun_l17_n920()
+ fun_l18_n291
+end
+
+def fun_l17_n921()
+ fun_l18_n258
+end
+
+def fun_l17_n922()
+ fun_l18_n935
+end
+
+def fun_l17_n923()
+ fun_l18_n622
+end
+
+def fun_l17_n924()
+ fun_l18_n760
+end
+
+def fun_l17_n925()
+ fun_l18_n153
+end
+
+def fun_l17_n926()
+ fun_l18_n673
+end
+
+def fun_l17_n927()
+ fun_l18_n105
+end
+
+def fun_l17_n928()
+ fun_l18_n432
+end
+
+def fun_l17_n929()
+ fun_l18_n403
+end
+
+def fun_l17_n930()
+ fun_l18_n312
+end
+
+def fun_l17_n931()
+ fun_l18_n874
+end
+
+def fun_l17_n932()
+ fun_l18_n642
+end
+
+def fun_l17_n933()
+ fun_l18_n694
+end
+
+def fun_l17_n934()
+ fun_l18_n247
+end
+
+def fun_l17_n935()
+ fun_l18_n483
+end
+
+def fun_l17_n936()
+ fun_l18_n849
+end
+
+def fun_l17_n937()
+ fun_l18_n784
+end
+
+def fun_l17_n938()
+ fun_l18_n948
+end
+
+def fun_l17_n939()
+ fun_l18_n26
+end
+
+def fun_l17_n940()
+ fun_l18_n36
+end
+
+def fun_l17_n941()
+ fun_l18_n933
+end
+
+def fun_l17_n942()
+ fun_l18_n734
+end
+
+def fun_l17_n943()
+ fun_l18_n33
+end
+
+def fun_l17_n944()
+ fun_l18_n78
+end
+
+def fun_l17_n945()
+ fun_l18_n592
+end
+
+def fun_l17_n946()
+ fun_l18_n504
+end
+
+def fun_l17_n947()
+ fun_l18_n255
+end
+
+def fun_l17_n948()
+ fun_l18_n389
+end
+
+def fun_l17_n949()
+ fun_l18_n71
+end
+
+def fun_l17_n950()
+ fun_l18_n938
+end
+
+def fun_l17_n951()
+ fun_l18_n125
+end
+
+def fun_l17_n952()
+ fun_l18_n310
+end
+
+def fun_l17_n953()
+ fun_l18_n422
+end
+
+def fun_l17_n954()
+ fun_l18_n268
+end
+
+def fun_l17_n955()
+ fun_l18_n655
+end
+
+def fun_l17_n956()
+ fun_l18_n106
+end
+
+def fun_l17_n957()
+ fun_l18_n226
+end
+
+def fun_l17_n958()
+ fun_l18_n247
+end
+
+def fun_l17_n959()
+ fun_l18_n282
+end
+
+def fun_l17_n960()
+ fun_l18_n495
+end
+
+def fun_l17_n961()
+ fun_l18_n333
+end
+
+def fun_l17_n962()
+ fun_l18_n796
+end
+
+def fun_l17_n963()
+ fun_l18_n939
+end
+
+def fun_l17_n964()
+ fun_l18_n529
+end
+
+def fun_l17_n965()
+ fun_l18_n835
+end
+
+def fun_l17_n966()
+ fun_l18_n947
+end
+
+def fun_l17_n967()
+ fun_l18_n925
+end
+
+def fun_l17_n968()
+ fun_l18_n445
+end
+
+def fun_l17_n969()
+ fun_l18_n815
+end
+
+def fun_l17_n970()
+ fun_l18_n476
+end
+
+def fun_l17_n971()
+ fun_l18_n39
+end
+
+def fun_l17_n972()
+ fun_l18_n374
+end
+
+def fun_l17_n973()
+ fun_l18_n332
+end
+
+def fun_l17_n974()
+ fun_l18_n231
+end
+
+def fun_l17_n975()
+ fun_l18_n155
+end
+
+def fun_l17_n976()
+ fun_l18_n892
+end
+
+def fun_l17_n977()
+ fun_l18_n890
+end
+
+def fun_l17_n978()
+ fun_l18_n304
+end
+
+def fun_l17_n979()
+ fun_l18_n67
+end
+
+def fun_l17_n980()
+ fun_l18_n793
+end
+
+def fun_l17_n981()
+ fun_l18_n902
+end
+
+def fun_l17_n982()
+ fun_l18_n990
+end
+
+def fun_l17_n983()
+ fun_l18_n506
+end
+
+def fun_l17_n984()
+ fun_l18_n411
+end
+
+def fun_l17_n985()
+ fun_l18_n360
+end
+
+def fun_l17_n986()
+ fun_l18_n958
+end
+
+def fun_l17_n987()
+ fun_l18_n941
+end
+
+def fun_l17_n988()
+ fun_l18_n896
+end
+
+def fun_l17_n989()
+ fun_l18_n17
+end
+
+def fun_l17_n990()
+ fun_l18_n971
+end
+
+def fun_l17_n991()
+ fun_l18_n71
+end
+
+def fun_l17_n992()
+ fun_l18_n880
+end
+
+def fun_l17_n993()
+ fun_l18_n473
+end
+
+def fun_l17_n994()
+ fun_l18_n602
+end
+
+def fun_l17_n995()
+ fun_l18_n112
+end
+
+def fun_l17_n996()
+ fun_l18_n748
+end
+
+def fun_l17_n997()
+ fun_l18_n156
+end
+
+def fun_l17_n998()
+ fun_l18_n979
+end
+
+def fun_l17_n999()
+ fun_l18_n950
+end
+
+def fun_l18_n0()
+ fun_l19_n673
+end
+
+def fun_l18_n1()
+ fun_l19_n72
+end
+
+def fun_l18_n2()
+ fun_l19_n941
+end
+
+def fun_l18_n3()
+ fun_l19_n32
+end
+
+def fun_l18_n4()
+ fun_l19_n386
+end
+
+def fun_l18_n5()
+ fun_l19_n834
+end
+
+def fun_l18_n6()
+ fun_l19_n337
+end
+
+def fun_l18_n7()
+ fun_l19_n669
+end
+
+def fun_l18_n8()
+ fun_l19_n953
+end
+
+def fun_l18_n9()
+ fun_l19_n823
+end
+
+def fun_l18_n10()
+ fun_l19_n709
+end
+
+def fun_l18_n11()
+ fun_l19_n70
+end
+
+def fun_l18_n12()
+ fun_l19_n54
+end
+
+def fun_l18_n13()
+ fun_l19_n601
+end
+
+def fun_l18_n14()
+ fun_l19_n638
+end
+
+def fun_l18_n15()
+ fun_l19_n497
+end
+
+def fun_l18_n16()
+ fun_l19_n7
+end
+
+def fun_l18_n17()
+ fun_l19_n955
+end
+
+def fun_l18_n18()
+ fun_l19_n229
+end
+
+def fun_l18_n19()
+ fun_l19_n158
+end
+
+def fun_l18_n20()
+ fun_l19_n905
+end
+
+def fun_l18_n21()
+ fun_l19_n34
+end
+
+def fun_l18_n22()
+ fun_l19_n462
+end
+
+def fun_l18_n23()
+ fun_l19_n496
+end
+
+def fun_l18_n24()
+ fun_l19_n560
+end
+
+def fun_l18_n25()
+ fun_l19_n877
+end
+
+def fun_l18_n26()
+ fun_l19_n555
+end
+
+def fun_l18_n27()
+ fun_l19_n973
+end
+
+def fun_l18_n28()
+ fun_l19_n680
+end
+
+def fun_l18_n29()
+ fun_l19_n525
+end
+
+def fun_l18_n30()
+ fun_l19_n26
+end
+
+def fun_l18_n31()
+ fun_l19_n51
+end
+
+def fun_l18_n32()
+ fun_l19_n859
+end
+
+def fun_l18_n33()
+ fun_l19_n345
+end
+
+def fun_l18_n34()
+ fun_l19_n376
+end
+
+def fun_l18_n35()
+ fun_l19_n411
+end
+
+def fun_l18_n36()
+ fun_l19_n717
+end
+
+def fun_l18_n37()
+ fun_l19_n750
+end
+
+def fun_l18_n38()
+ fun_l19_n927
+end
+
+def fun_l18_n39()
+ fun_l19_n129
+end
+
+def fun_l18_n40()
+ fun_l19_n121
+end
+
+def fun_l18_n41()
+ fun_l19_n670
+end
+
+def fun_l18_n42()
+ fun_l19_n926
+end
+
+def fun_l18_n43()
+ fun_l19_n80
+end
+
+def fun_l18_n44()
+ fun_l19_n355
+end
+
+def fun_l18_n45()
+ fun_l19_n107
+end
+
+def fun_l18_n46()
+ fun_l19_n437
+end
+
+def fun_l18_n47()
+ fun_l19_n821
+end
+
+def fun_l18_n48()
+ fun_l19_n215
+end
+
+def fun_l18_n49()
+ fun_l19_n783
+end
+
+def fun_l18_n50()
+ fun_l19_n941
+end
+
+def fun_l18_n51()
+ fun_l19_n156
+end
+
+def fun_l18_n52()
+ fun_l19_n797
+end
+
+def fun_l18_n53()
+ fun_l19_n522
+end
+
+def fun_l18_n54()
+ fun_l19_n294
+end
+
+def fun_l18_n55()
+ fun_l19_n985
+end
+
+def fun_l18_n56()
+ fun_l19_n709
+end
+
+def fun_l18_n57()
+ fun_l19_n492
+end
+
+def fun_l18_n58()
+ fun_l19_n460
+end
+
+def fun_l18_n59()
+ fun_l19_n186
+end
+
+def fun_l18_n60()
+ fun_l19_n764
+end
+
+def fun_l18_n61()
+ fun_l19_n439
+end
+
+def fun_l18_n62()
+ fun_l19_n568
+end
+
+def fun_l18_n63()
+ fun_l19_n797
+end
+
+def fun_l18_n64()
+ fun_l19_n542
+end
+
+def fun_l18_n65()
+ fun_l19_n985
+end
+
+def fun_l18_n66()
+ fun_l19_n787
+end
+
+def fun_l18_n67()
+ fun_l19_n447
+end
+
+def fun_l18_n68()
+ fun_l19_n567
+end
+
+def fun_l18_n69()
+ fun_l19_n406
+end
+
+def fun_l18_n70()
+ fun_l19_n984
+end
+
+def fun_l18_n71()
+ fun_l19_n58
+end
+
+def fun_l18_n72()
+ fun_l19_n820
+end
+
+def fun_l18_n73()
+ fun_l19_n831
+end
+
+def fun_l18_n74()
+ fun_l19_n533
+end
+
+def fun_l18_n75()
+ fun_l19_n277
+end
+
+def fun_l18_n76()
+ fun_l19_n92
+end
+
+def fun_l18_n77()
+ fun_l19_n965
+end
+
+def fun_l18_n78()
+ fun_l19_n127
+end
+
+def fun_l18_n79()
+ fun_l19_n728
+end
+
+def fun_l18_n80()
+ fun_l19_n672
+end
+
+def fun_l18_n81()
+ fun_l19_n748
+end
+
+def fun_l18_n82()
+ fun_l19_n485
+end
+
+def fun_l18_n83()
+ fun_l19_n815
+end
+
+def fun_l18_n84()
+ fun_l19_n957
+end
+
+def fun_l18_n85()
+ fun_l19_n884
+end
+
+def fun_l18_n86()
+ fun_l19_n107
+end
+
+def fun_l18_n87()
+ fun_l19_n255
+end
+
+def fun_l18_n88()
+ fun_l19_n498
+end
+
+def fun_l18_n89()
+ fun_l19_n589
+end
+
+def fun_l18_n90()
+ fun_l19_n726
+end
+
+def fun_l18_n91()
+ fun_l19_n755
+end
+
+def fun_l18_n92()
+ fun_l19_n855
+end
+
+def fun_l18_n93()
+ fun_l19_n490
+end
+
+def fun_l18_n94()
+ fun_l19_n463
+end
+
+def fun_l18_n95()
+ fun_l19_n213
+end
+
+def fun_l18_n96()
+ fun_l19_n946
+end
+
+def fun_l18_n97()
+ fun_l19_n319
+end
+
+def fun_l18_n98()
+ fun_l19_n565
+end
+
+def fun_l18_n99()
+ fun_l19_n805
+end
+
+def fun_l18_n100()
+ fun_l19_n21
+end
+
+def fun_l18_n101()
+ fun_l19_n168
+end
+
+def fun_l18_n102()
+ fun_l19_n462
+end
+
+def fun_l18_n103()
+ fun_l19_n15
+end
+
+def fun_l18_n104()
+ fun_l19_n408
+end
+
+def fun_l18_n105()
+ fun_l19_n736
+end
+
+def fun_l18_n106()
+ fun_l19_n313
+end
+
+def fun_l18_n107()
+ fun_l19_n736
+end
+
+def fun_l18_n108()
+ fun_l19_n703
+end
+
+def fun_l18_n109()
+ fun_l19_n456
+end
+
+def fun_l18_n110()
+ fun_l19_n467
+end
+
+def fun_l18_n111()
+ fun_l19_n287
+end
+
+def fun_l18_n112()
+ fun_l19_n630
+end
+
+def fun_l18_n113()
+ fun_l19_n499
+end
+
+def fun_l18_n114()
+ fun_l19_n308
+end
+
+def fun_l18_n115()
+ fun_l19_n902
+end
+
+def fun_l18_n116()
+ fun_l19_n894
+end
+
+def fun_l18_n117()
+ fun_l19_n545
+end
+
+def fun_l18_n118()
+ fun_l19_n467
+end
+
+def fun_l18_n119()
+ fun_l19_n791
+end
+
+def fun_l18_n120()
+ fun_l19_n845
+end
+
+def fun_l18_n121()
+ fun_l19_n376
+end
+
+def fun_l18_n122()
+ fun_l19_n898
+end
+
+def fun_l18_n123()
+ fun_l19_n200
+end
+
+def fun_l18_n124()
+ fun_l19_n415
+end
+
+def fun_l18_n125()
+ fun_l19_n80
+end
+
+def fun_l18_n126()
+ fun_l19_n6
+end
+
+def fun_l18_n127()
+ fun_l19_n150
+end
+
+def fun_l18_n128()
+ fun_l19_n223
+end
+
+def fun_l18_n129()
+ fun_l19_n179
+end
+
+def fun_l18_n130()
+ fun_l19_n687
+end
+
+def fun_l18_n131()
+ fun_l19_n625
+end
+
+def fun_l18_n132()
+ fun_l19_n332
+end
+
+def fun_l18_n133()
+ fun_l19_n87
+end
+
+def fun_l18_n134()
+ fun_l19_n469
+end
+
+def fun_l18_n135()
+ fun_l19_n4
+end
+
+def fun_l18_n136()
+ fun_l19_n142
+end
+
+def fun_l18_n137()
+ fun_l19_n506
+end
+
+def fun_l18_n138()
+ fun_l19_n227
+end
+
+def fun_l18_n139()
+ fun_l19_n332
+end
+
+def fun_l18_n140()
+ fun_l19_n18
+end
+
+def fun_l18_n141()
+ fun_l19_n773
+end
+
+def fun_l18_n142()
+ fun_l19_n306
+end
+
+def fun_l18_n143()
+ fun_l19_n376
+end
+
+def fun_l18_n144()
+ fun_l19_n524
+end
+
+def fun_l18_n145()
+ fun_l19_n61
+end
+
+def fun_l18_n146()
+ fun_l19_n635
+end
+
+def fun_l18_n147()
+ fun_l19_n816
+end
+
+def fun_l18_n148()
+ fun_l19_n398
+end
+
+def fun_l18_n149()
+ fun_l19_n408
+end
+
+def fun_l18_n150()
+ fun_l19_n889
+end
+
+def fun_l18_n151()
+ fun_l19_n167
+end
+
+def fun_l18_n152()
+ fun_l19_n436
+end
+
+def fun_l18_n153()
+ fun_l19_n738
+end
+
+def fun_l18_n154()
+ fun_l19_n382
+end
+
+def fun_l18_n155()
+ fun_l19_n260
+end
+
+def fun_l18_n156()
+ fun_l19_n227
+end
+
+def fun_l18_n157()
+ fun_l19_n191
+end
+
+def fun_l18_n158()
+ fun_l19_n269
+end
+
+def fun_l18_n159()
+ fun_l19_n599
+end
+
+def fun_l18_n160()
+ fun_l19_n992
+end
+
+def fun_l18_n161()
+ fun_l19_n754
+end
+
+def fun_l18_n162()
+ fun_l19_n578
+end
+
+def fun_l18_n163()
+ fun_l19_n162
+end
+
+def fun_l18_n164()
+ fun_l19_n88
+end
+
+def fun_l18_n165()
+ fun_l19_n592
+end
+
+def fun_l18_n166()
+ fun_l19_n621
+end
+
+def fun_l18_n167()
+ fun_l19_n398
+end
+
+def fun_l18_n168()
+ fun_l19_n585
+end
+
+def fun_l18_n169()
+ fun_l19_n51
+end
+
+def fun_l18_n170()
+ fun_l19_n715
+end
+
+def fun_l18_n171()
+ fun_l19_n841
+end
+
+def fun_l18_n172()
+ fun_l19_n882
+end
+
+def fun_l18_n173()
+ fun_l19_n676
+end
+
+def fun_l18_n174()
+ fun_l19_n93
+end
+
+def fun_l18_n175()
+ fun_l19_n41
+end
+
+def fun_l18_n176()
+ fun_l19_n565
+end
+
+def fun_l18_n177()
+ fun_l19_n895
+end
+
+def fun_l18_n178()
+ fun_l19_n743
+end
+
+def fun_l18_n179()
+ fun_l19_n679
+end
+
+def fun_l18_n180()
+ fun_l19_n77
+end
+
+def fun_l18_n181()
+ fun_l19_n539
+end
+
+def fun_l18_n182()
+ fun_l19_n439
+end
+
+def fun_l18_n183()
+ fun_l19_n758
+end
+
+def fun_l18_n184()
+ fun_l19_n327
+end
+
+def fun_l18_n185()
+ fun_l19_n257
+end
+
+def fun_l18_n186()
+ fun_l19_n544
+end
+
+def fun_l18_n187()
+ fun_l19_n632
+end
+
+def fun_l18_n188()
+ fun_l19_n83
+end
+
+def fun_l18_n189()
+ fun_l19_n88
+end
+
+def fun_l18_n190()
+ fun_l19_n244
+end
+
+def fun_l18_n191()
+ fun_l19_n403
+end
+
+def fun_l18_n192()
+ fun_l19_n644
+end
+
+def fun_l18_n193()
+ fun_l19_n953
+end
+
+def fun_l18_n194()
+ fun_l19_n690
+end
+
+def fun_l18_n195()
+ fun_l19_n534
+end
+
+def fun_l18_n196()
+ fun_l19_n352
+end
+
+def fun_l18_n197()
+ fun_l19_n502
+end
+
+def fun_l18_n198()
+ fun_l19_n924
+end
+
+def fun_l18_n199()
+ fun_l19_n815
+end
+
+def fun_l18_n200()
+ fun_l19_n910
+end
+
+def fun_l18_n201()
+ fun_l19_n391
+end
+
+def fun_l18_n202()
+ fun_l19_n144
+end
+
+def fun_l18_n203()
+ fun_l19_n823
+end
+
+def fun_l18_n204()
+ fun_l19_n732
+end
+
+def fun_l18_n205()
+ fun_l19_n109
+end
+
+def fun_l18_n206()
+ fun_l19_n677
+end
+
+def fun_l18_n207()
+ fun_l19_n736
+end
+
+def fun_l18_n208()
+ fun_l19_n141
+end
+
+def fun_l18_n209()
+ fun_l19_n45
+end
+
+def fun_l18_n210()
+ fun_l19_n11
+end
+
+def fun_l18_n211()
+ fun_l19_n924
+end
+
+def fun_l18_n212()
+ fun_l19_n940
+end
+
+def fun_l18_n213()
+ fun_l19_n683
+end
+
+def fun_l18_n214()
+ fun_l19_n383
+end
+
+def fun_l18_n215()
+ fun_l19_n798
+end
+
+def fun_l18_n216()
+ fun_l19_n99
+end
+
+def fun_l18_n217()
+ fun_l19_n814
+end
+
+def fun_l18_n218()
+ fun_l19_n827
+end
+
+def fun_l18_n219()
+ fun_l19_n629
+end
+
+def fun_l18_n220()
+ fun_l19_n814
+end
+
+def fun_l18_n221()
+ fun_l19_n452
+end
+
+def fun_l18_n222()
+ fun_l19_n388
+end
+
+def fun_l18_n223()
+ fun_l19_n324
+end
+
+def fun_l18_n224()
+ fun_l19_n233
+end
+
+def fun_l18_n225()
+ fun_l19_n596
+end
+
+def fun_l18_n226()
+ fun_l19_n396
+end
+
+def fun_l18_n227()
+ fun_l19_n529
+end
+
+def fun_l18_n228()
+ fun_l19_n603
+end
+
+def fun_l18_n229()
+ fun_l19_n76
+end
+
+def fun_l18_n230()
+ fun_l19_n799
+end
+
+def fun_l18_n231()
+ fun_l19_n576
+end
+
+def fun_l18_n232()
+ fun_l19_n35
+end
+
+def fun_l18_n233()
+ fun_l19_n883
+end
+
+def fun_l18_n234()
+ fun_l19_n776
+end
+
+def fun_l18_n235()
+ fun_l19_n478
+end
+
+def fun_l18_n236()
+ fun_l19_n922
+end
+
+def fun_l18_n237()
+ fun_l19_n636
+end
+
+def fun_l18_n238()
+ fun_l19_n680
+end
+
+def fun_l18_n239()
+ fun_l19_n735
+end
+
+def fun_l18_n240()
+ fun_l19_n893
+end
+
+def fun_l18_n241()
+ fun_l19_n785
+end
+
+def fun_l18_n242()
+ fun_l19_n325
+end
+
+def fun_l18_n243()
+ fun_l19_n25
+end
+
+def fun_l18_n244()
+ fun_l19_n930
+end
+
+def fun_l18_n245()
+ fun_l19_n747
+end
+
+def fun_l18_n246()
+ fun_l19_n808
+end
+
+def fun_l18_n247()
+ fun_l19_n356
+end
+
+def fun_l18_n248()
+ fun_l19_n16
+end
+
+def fun_l18_n249()
+ fun_l19_n191
+end
+
+def fun_l18_n250()
+ fun_l19_n772
+end
+
+def fun_l18_n251()
+ fun_l19_n247
+end
+
+def fun_l18_n252()
+ fun_l19_n112
+end
+
+def fun_l18_n253()
+ fun_l19_n22
+end
+
+def fun_l18_n254()
+ fun_l19_n15
+end
+
+def fun_l18_n255()
+ fun_l19_n444
+end
+
+def fun_l18_n256()
+ fun_l19_n498
+end
+
+def fun_l18_n257()
+ fun_l19_n403
+end
+
+def fun_l18_n258()
+ fun_l19_n572
+end
+
+def fun_l18_n259()
+ fun_l19_n451
+end
+
+def fun_l18_n260()
+ fun_l19_n224
+end
+
+def fun_l18_n261()
+ fun_l19_n197
+end
+
+def fun_l18_n262()
+ fun_l19_n891
+end
+
+def fun_l18_n263()
+ fun_l19_n612
+end
+
+def fun_l18_n264()
+ fun_l19_n107
+end
+
+def fun_l18_n265()
+ fun_l19_n267
+end
+
+def fun_l18_n266()
+ fun_l19_n746
+end
+
+def fun_l18_n267()
+ fun_l19_n547
+end
+
+def fun_l18_n268()
+ fun_l19_n608
+end
+
+def fun_l18_n269()
+ fun_l19_n474
+end
+
+def fun_l18_n270()
+ fun_l19_n285
+end
+
+def fun_l18_n271()
+ fun_l19_n970
+end
+
+def fun_l18_n272()
+ fun_l19_n227
+end
+
+def fun_l18_n273()
+ fun_l19_n440
+end
+
+def fun_l18_n274()
+ fun_l19_n816
+end
+
+def fun_l18_n275()
+ fun_l19_n320
+end
+
+def fun_l18_n276()
+ fun_l19_n237
+end
+
+def fun_l18_n277()
+ fun_l19_n37
+end
+
+def fun_l18_n278()
+ fun_l19_n408
+end
+
+def fun_l18_n279()
+ fun_l19_n229
+end
+
+def fun_l18_n280()
+ fun_l19_n576
+end
+
+def fun_l18_n281()
+ fun_l19_n422
+end
+
+def fun_l18_n282()
+ fun_l19_n725
+end
+
+def fun_l18_n283()
+ fun_l19_n498
+end
+
+def fun_l18_n284()
+ fun_l19_n28
+end
+
+def fun_l18_n285()
+ fun_l19_n711
+end
+
+def fun_l18_n286()
+ fun_l19_n222
+end
+
+def fun_l18_n287()
+ fun_l19_n688
+end
+
+def fun_l18_n288()
+ fun_l19_n885
+end
+
+def fun_l18_n289()
+ fun_l19_n522
+end
+
+def fun_l18_n290()
+ fun_l19_n776
+end
+
+def fun_l18_n291()
+ fun_l19_n862
+end
+
+def fun_l18_n292()
+ fun_l19_n415
+end
+
+def fun_l18_n293()
+ fun_l19_n194
+end
+
+def fun_l18_n294()
+ fun_l19_n652
+end
+
+def fun_l18_n295()
+ fun_l19_n929
+end
+
+def fun_l18_n296()
+ fun_l19_n923
+end
+
+def fun_l18_n297()
+ fun_l19_n104
+end
+
+def fun_l18_n298()
+ fun_l19_n191
+end
+
+def fun_l18_n299()
+ fun_l19_n996
+end
+
+def fun_l18_n300()
+ fun_l19_n426
+end
+
+def fun_l18_n301()
+ fun_l19_n698
+end
+
+def fun_l18_n302()
+ fun_l19_n397
+end
+
+def fun_l18_n303()
+ fun_l19_n287
+end
+
+def fun_l18_n304()
+ fun_l19_n731
+end
+
+def fun_l18_n305()
+ fun_l19_n162
+end
+
+def fun_l18_n306()
+ fun_l19_n794
+end
+
+def fun_l18_n307()
+ fun_l19_n234
+end
+
+def fun_l18_n308()
+ fun_l19_n184
+end
+
+def fun_l18_n309()
+ fun_l19_n314
+end
+
+def fun_l18_n310()
+ fun_l19_n259
+end
+
+def fun_l18_n311()
+ fun_l19_n687
+end
+
+def fun_l18_n312()
+ fun_l19_n653
+end
+
+def fun_l18_n313()
+ fun_l19_n834
+end
+
+def fun_l18_n314()
+ fun_l19_n519
+end
+
+def fun_l18_n315()
+ fun_l19_n706
+end
+
+def fun_l18_n316()
+ fun_l19_n860
+end
+
+def fun_l18_n317()
+ fun_l19_n99
+end
+
+def fun_l18_n318()
+ fun_l19_n757
+end
+
+def fun_l18_n319()
+ fun_l19_n860
+end
+
+def fun_l18_n320()
+ fun_l19_n266
+end
+
+def fun_l18_n321()
+ fun_l19_n802
+end
+
+def fun_l18_n322()
+ fun_l19_n349
+end
+
+def fun_l18_n323()
+ fun_l19_n408
+end
+
+def fun_l18_n324()
+ fun_l19_n539
+end
+
+def fun_l18_n325()
+ fun_l19_n696
+end
+
+def fun_l18_n326()
+ fun_l19_n233
+end
+
+def fun_l18_n327()
+ fun_l19_n476
+end
+
+def fun_l18_n328()
+ fun_l19_n101
+end
+
+def fun_l18_n329()
+ fun_l19_n881
+end
+
+def fun_l18_n330()
+ fun_l19_n699
+end
+
+def fun_l18_n331()
+ fun_l19_n559
+end
+
+def fun_l18_n332()
+ fun_l19_n990
+end
+
+def fun_l18_n333()
+ fun_l19_n382
+end
+
+def fun_l18_n334()
+ fun_l19_n941
+end
+
+def fun_l18_n335()
+ fun_l19_n363
+end
+
+def fun_l18_n336()
+ fun_l19_n870
+end
+
+def fun_l18_n337()
+ fun_l19_n250
+end
+
+def fun_l18_n338()
+ fun_l19_n209
+end
+
+def fun_l18_n339()
+ fun_l19_n156
+end
+
+def fun_l18_n340()
+ fun_l19_n320
+end
+
+def fun_l18_n341()
+ fun_l19_n320
+end
+
+def fun_l18_n342()
+ fun_l19_n68
+end
+
+def fun_l18_n343()
+ fun_l19_n823
+end
+
+def fun_l18_n344()
+ fun_l19_n713
+end
+
+def fun_l18_n345()
+ fun_l19_n893
+end
+
+def fun_l18_n346()
+ fun_l19_n628
+end
+
+def fun_l18_n347()
+ fun_l19_n429
+end
+
+def fun_l18_n348()
+ fun_l19_n766
+end
+
+def fun_l18_n349()
+ fun_l19_n937
+end
+
+def fun_l18_n350()
+ fun_l19_n983
+end
+
+def fun_l18_n351()
+ fun_l19_n131
+end
+
+def fun_l18_n352()
+ fun_l19_n76
+end
+
+def fun_l18_n353()
+ fun_l19_n225
+end
+
+def fun_l18_n354()
+ fun_l19_n979
+end
+
+def fun_l18_n355()
+ fun_l19_n279
+end
+
+def fun_l18_n356()
+ fun_l19_n434
+end
+
+def fun_l18_n357()
+ fun_l19_n723
+end
+
+def fun_l18_n358()
+ fun_l19_n44
+end
+
+def fun_l18_n359()
+ fun_l19_n895
+end
+
+def fun_l18_n360()
+ fun_l19_n602
+end
+
+def fun_l18_n361()
+ fun_l19_n420
+end
+
+def fun_l18_n362()
+ fun_l19_n318
+end
+
+def fun_l18_n363()
+ fun_l19_n990
+end
+
+def fun_l18_n364()
+ fun_l19_n318
+end
+
+def fun_l18_n365()
+ fun_l19_n640
+end
+
+def fun_l18_n366()
+ fun_l19_n679
+end
+
+def fun_l18_n367()
+ fun_l19_n572
+end
+
+def fun_l18_n368()
+ fun_l19_n411
+end
+
+def fun_l18_n369()
+ fun_l19_n703
+end
+
+def fun_l18_n370()
+ fun_l19_n39
+end
+
+def fun_l18_n371()
+ fun_l19_n656
+end
+
+def fun_l18_n372()
+ fun_l19_n960
+end
+
+def fun_l18_n373()
+ fun_l19_n491
+end
+
+def fun_l18_n374()
+ fun_l19_n916
+end
+
+def fun_l18_n375()
+ fun_l19_n413
+end
+
+def fun_l18_n376()
+ fun_l19_n90
+end
+
+def fun_l18_n377()
+ fun_l19_n790
+end
+
+def fun_l18_n378()
+ fun_l19_n424
+end
+
+def fun_l18_n379()
+ fun_l19_n578
+end
+
+def fun_l18_n380()
+ fun_l19_n555
+end
+
+def fun_l18_n381()
+ fun_l19_n405
+end
+
+def fun_l18_n382()
+ fun_l19_n378
+end
+
+def fun_l18_n383()
+ fun_l19_n594
+end
+
+def fun_l18_n384()
+ fun_l19_n593
+end
+
+def fun_l18_n385()
+ fun_l19_n115
+end
+
+def fun_l18_n386()
+ fun_l19_n67
+end
+
+def fun_l18_n387()
+ fun_l19_n531
+end
+
+def fun_l18_n388()
+ fun_l19_n7
+end
+
+def fun_l18_n389()
+ fun_l19_n535
+end
+
+def fun_l18_n390()
+ fun_l19_n35
+end
+
+def fun_l18_n391()
+ fun_l19_n410
+end
+
+def fun_l18_n392()
+ fun_l19_n811
+end
+
+def fun_l18_n393()
+ fun_l19_n719
+end
+
+def fun_l18_n394()
+ fun_l19_n859
+end
+
+def fun_l18_n395()
+ fun_l19_n491
+end
+
+def fun_l18_n396()
+ fun_l19_n131
+end
+
+def fun_l18_n397()
+ fun_l19_n501
+end
+
+def fun_l18_n398()
+ fun_l19_n917
+end
+
+def fun_l18_n399()
+ fun_l19_n467
+end
+
+def fun_l18_n400()
+ fun_l19_n189
+end
+
+def fun_l18_n401()
+ fun_l19_n135
+end
+
+def fun_l18_n402()
+ fun_l19_n105
+end
+
+def fun_l18_n403()
+ fun_l19_n120
+end
+
+def fun_l18_n404()
+ fun_l19_n611
+end
+
+def fun_l18_n405()
+ fun_l19_n386
+end
+
+def fun_l18_n406()
+ fun_l19_n239
+end
+
+def fun_l18_n407()
+ fun_l19_n717
+end
+
+def fun_l18_n408()
+ fun_l19_n425
+end
+
+def fun_l18_n409()
+ fun_l19_n500
+end
+
+def fun_l18_n410()
+ fun_l19_n424
+end
+
+def fun_l18_n411()
+ fun_l19_n654
+end
+
+def fun_l18_n412()
+ fun_l19_n243
+end
+
+def fun_l18_n413()
+ fun_l19_n920
+end
+
+def fun_l18_n414()
+ fun_l19_n556
+end
+
+def fun_l18_n415()
+ fun_l19_n693
+end
+
+def fun_l18_n416()
+ fun_l19_n656
+end
+
+def fun_l18_n417()
+ fun_l19_n596
+end
+
+def fun_l18_n418()
+ fun_l19_n573
+end
+
+def fun_l18_n419()
+ fun_l19_n504
+end
+
+def fun_l18_n420()
+ fun_l19_n5
+end
+
+def fun_l18_n421()
+ fun_l19_n554
+end
+
+def fun_l18_n422()
+ fun_l19_n852
+end
+
+def fun_l18_n423()
+ fun_l19_n725
+end
+
+def fun_l18_n424()
+ fun_l19_n121
+end
+
+def fun_l18_n425()
+ fun_l19_n184
+end
+
+def fun_l18_n426()
+ fun_l19_n752
+end
+
+def fun_l18_n427()
+ fun_l19_n636
+end
+
+def fun_l18_n428()
+ fun_l19_n858
+end
+
+def fun_l18_n429()
+ fun_l19_n249
+end
+
+def fun_l18_n430()
+ fun_l19_n696
+end
+
+def fun_l18_n431()
+ fun_l19_n560
+end
+
+def fun_l18_n432()
+ fun_l19_n978
+end
+
+def fun_l18_n433()
+ fun_l19_n776
+end
+
+def fun_l18_n434()
+ fun_l19_n954
+end
+
+def fun_l18_n435()
+ fun_l19_n552
+end
+
+def fun_l18_n436()
+ fun_l19_n238
+end
+
+def fun_l18_n437()
+ fun_l19_n496
+end
+
+def fun_l18_n438()
+ fun_l19_n444
+end
+
+def fun_l18_n439()
+ fun_l19_n632
+end
+
+def fun_l18_n440()
+ fun_l19_n243
+end
+
+def fun_l18_n441()
+ fun_l19_n41
+end
+
+def fun_l18_n442()
+ fun_l19_n267
+end
+
+def fun_l18_n443()
+ fun_l19_n449
+end
+
+def fun_l18_n444()
+ fun_l19_n718
+end
+
+def fun_l18_n445()
+ fun_l19_n458
+end
+
+def fun_l18_n446()
+ fun_l19_n23
+end
+
+def fun_l18_n447()
+ fun_l19_n642
+end
+
+def fun_l18_n448()
+ fun_l19_n46
+end
+
+def fun_l18_n449()
+ fun_l19_n812
+end
+
+def fun_l18_n450()
+ fun_l19_n659
+end
+
+def fun_l18_n451()
+ fun_l19_n499
+end
+
+def fun_l18_n452()
+ fun_l19_n691
+end
+
+def fun_l18_n453()
+ fun_l19_n453
+end
+
+def fun_l18_n454()
+ fun_l19_n348
+end
+
+def fun_l18_n455()
+ fun_l19_n115
+end
+
+def fun_l18_n456()
+ fun_l19_n429
+end
+
+def fun_l18_n457()
+ fun_l19_n751
+end
+
+def fun_l18_n458()
+ fun_l19_n669
+end
+
+def fun_l18_n459()
+ fun_l19_n692
+end
+
+def fun_l18_n460()
+ fun_l19_n510
+end
+
+def fun_l18_n461()
+ fun_l19_n276
+end
+
+def fun_l18_n462()
+ fun_l19_n967
+end
+
+def fun_l18_n463()
+ fun_l19_n464
+end
+
+def fun_l18_n464()
+ fun_l19_n742
+end
+
+def fun_l18_n465()
+ fun_l19_n512
+end
+
+def fun_l18_n466()
+ fun_l19_n864
+end
+
+def fun_l18_n467()
+ fun_l19_n956
+end
+
+def fun_l18_n468()
+ fun_l19_n547
+end
+
+def fun_l18_n469()
+ fun_l19_n875
+end
+
+def fun_l18_n470()
+ fun_l19_n840
+end
+
+def fun_l18_n471()
+ fun_l19_n37
+end
+
+def fun_l18_n472()
+ fun_l19_n499
+end
+
+def fun_l18_n473()
+ fun_l19_n112
+end
+
+def fun_l18_n474()
+ fun_l19_n293
+end
+
+def fun_l18_n475()
+ fun_l19_n320
+end
+
+def fun_l18_n476()
+ fun_l19_n502
+end
+
+def fun_l18_n477()
+ fun_l19_n224
+end
+
+def fun_l18_n478()
+ fun_l19_n145
+end
+
+def fun_l18_n479()
+ fun_l19_n71
+end
+
+def fun_l18_n480()
+ fun_l19_n349
+end
+
+def fun_l18_n481()
+ fun_l19_n302
+end
+
+def fun_l18_n482()
+ fun_l19_n205
+end
+
+def fun_l18_n483()
+ fun_l19_n951
+end
+
+def fun_l18_n484()
+ fun_l19_n630
+end
+
+def fun_l18_n485()
+ fun_l19_n288
+end
+
+def fun_l18_n486()
+ fun_l19_n542
+end
+
+def fun_l18_n487()
+ fun_l19_n146
+end
+
+def fun_l18_n488()
+ fun_l19_n530
+end
+
+def fun_l18_n489()
+ fun_l19_n762
+end
+
+def fun_l18_n490()
+ fun_l19_n207
+end
+
+def fun_l18_n491()
+ fun_l19_n915
+end
+
+def fun_l18_n492()
+ fun_l19_n424
+end
+
+def fun_l18_n493()
+ fun_l19_n959
+end
+
+def fun_l18_n494()
+ fun_l19_n4
+end
+
+def fun_l18_n495()
+ fun_l19_n349
+end
+
+def fun_l18_n496()
+ fun_l19_n533
+end
+
+def fun_l18_n497()
+ fun_l19_n727
+end
+
+def fun_l18_n498()
+ fun_l19_n42
+end
+
+def fun_l18_n499()
+ fun_l19_n321
+end
+
+def fun_l18_n500()
+ fun_l19_n440
+end
+
+def fun_l18_n501()
+ fun_l19_n401
+end
+
+def fun_l18_n502()
+ fun_l19_n857
+end
+
+def fun_l18_n503()
+ fun_l19_n750
+end
+
+def fun_l18_n504()
+ fun_l19_n494
+end
+
+def fun_l18_n505()
+ fun_l19_n848
+end
+
+def fun_l18_n506()
+ fun_l19_n676
+end
+
+def fun_l18_n507()
+ fun_l19_n390
+end
+
+def fun_l18_n508()
+ fun_l19_n135
+end
+
+def fun_l18_n509()
+ fun_l19_n241
+end
+
+def fun_l18_n510()
+ fun_l19_n290
+end
+
+def fun_l18_n511()
+ fun_l19_n912
+end
+
+def fun_l18_n512()
+ fun_l19_n410
+end
+
+def fun_l18_n513()
+ fun_l19_n911
+end
+
+def fun_l18_n514()
+ fun_l19_n173
+end
+
+def fun_l18_n515()
+ fun_l19_n383
+end
+
+def fun_l18_n516()
+ fun_l19_n540
+end
+
+def fun_l18_n517()
+ fun_l19_n434
+end
+
+def fun_l18_n518()
+ fun_l19_n997
+end
+
+def fun_l18_n519()
+ fun_l19_n355
+end
+
+def fun_l18_n520()
+ fun_l19_n825
+end
+
+def fun_l18_n521()
+ fun_l19_n711
+end
+
+def fun_l18_n522()
+ fun_l19_n937
+end
+
+def fun_l18_n523()
+ fun_l19_n191
+end
+
+def fun_l18_n524()
+ fun_l19_n284
+end
+
+def fun_l18_n525()
+ fun_l19_n483
+end
+
+def fun_l18_n526()
+ fun_l19_n163
+end
+
+def fun_l18_n527()
+ fun_l19_n514
+end
+
+def fun_l18_n528()
+ fun_l19_n111
+end
+
+def fun_l18_n529()
+ fun_l19_n339
+end
+
+def fun_l18_n530()
+ fun_l19_n322
+end
+
+def fun_l18_n531()
+ fun_l19_n208
+end
+
+def fun_l18_n532()
+ fun_l19_n34
+end
+
+def fun_l18_n533()
+ fun_l19_n106
+end
+
+def fun_l18_n534()
+ fun_l19_n532
+end
+
+def fun_l18_n535()
+ fun_l19_n277
+end
+
+def fun_l18_n536()
+ fun_l19_n936
+end
+
+def fun_l18_n537()
+ fun_l19_n955
+end
+
+def fun_l18_n538()
+ fun_l19_n75
+end
+
+def fun_l18_n539()
+ fun_l19_n349
+end
+
+def fun_l18_n540()
+ fun_l19_n430
+end
+
+def fun_l18_n541()
+ fun_l19_n598
+end
+
+def fun_l18_n542()
+ fun_l19_n336
+end
+
+def fun_l18_n543()
+ fun_l19_n763
+end
+
+def fun_l18_n544()
+ fun_l19_n150
+end
+
+def fun_l18_n545()
+ fun_l19_n301
+end
+
+def fun_l18_n546()
+ fun_l19_n600
+end
+
+def fun_l18_n547()
+ fun_l19_n576
+end
+
+def fun_l18_n548()
+ fun_l19_n119
+end
+
+def fun_l18_n549()
+ fun_l19_n681
+end
+
+def fun_l18_n550()
+ fun_l19_n303
+end
+
+def fun_l18_n551()
+ fun_l19_n498
+end
+
+def fun_l18_n552()
+ fun_l19_n75
+end
+
+def fun_l18_n553()
+ fun_l19_n690
+end
+
+def fun_l18_n554()
+ fun_l19_n496
+end
+
+def fun_l18_n555()
+ fun_l19_n542
+end
+
+def fun_l18_n556()
+ fun_l19_n684
+end
+
+def fun_l18_n557()
+ fun_l19_n315
+end
+
+def fun_l18_n558()
+ fun_l19_n470
+end
+
+def fun_l18_n559()
+ fun_l19_n357
+end
+
+def fun_l18_n560()
+ fun_l19_n805
+end
+
+def fun_l18_n561()
+ fun_l19_n306
+end
+
+def fun_l18_n562()
+ fun_l19_n460
+end
+
+def fun_l18_n563()
+ fun_l19_n173
+end
+
+def fun_l18_n564()
+ fun_l19_n327
+end
+
+def fun_l18_n565()
+ fun_l19_n871
+end
+
+def fun_l18_n566()
+ fun_l19_n792
+end
+
+def fun_l18_n567()
+ fun_l19_n251
+end
+
+def fun_l18_n568()
+ fun_l19_n113
+end
+
+def fun_l18_n569()
+ fun_l19_n877
+end
+
+def fun_l18_n570()
+ fun_l19_n921
+end
+
+def fun_l18_n571()
+ fun_l19_n610
+end
+
+def fun_l18_n572()
+ fun_l19_n895
+end
+
+def fun_l18_n573()
+ fun_l19_n215
+end
+
+def fun_l18_n574()
+ fun_l19_n751
+end
+
+def fun_l18_n575()
+ fun_l19_n2
+end
+
+def fun_l18_n576()
+ fun_l19_n32
+end
+
+def fun_l18_n577()
+ fun_l19_n447
+end
+
+def fun_l18_n578()
+ fun_l19_n652
+end
+
+def fun_l18_n579()
+ fun_l19_n74
+end
+
+def fun_l18_n580()
+ fun_l19_n487
+end
+
+def fun_l18_n581()
+ fun_l19_n522
+end
+
+def fun_l18_n582()
+ fun_l19_n422
+end
+
+def fun_l18_n583()
+ fun_l19_n951
+end
+
+def fun_l18_n584()
+ fun_l19_n216
+end
+
+def fun_l18_n585()
+ fun_l19_n897
+end
+
+def fun_l18_n586()
+ fun_l19_n469
+end
+
+def fun_l18_n587()
+ fun_l19_n315
+end
+
+def fun_l18_n588()
+ fun_l19_n937
+end
+
+def fun_l18_n589()
+ fun_l19_n685
+end
+
+def fun_l18_n590()
+ fun_l19_n322
+end
+
+def fun_l18_n591()
+ fun_l19_n234
+end
+
+def fun_l18_n592()
+ fun_l19_n693
+end
+
+def fun_l18_n593()
+ fun_l19_n941
+end
+
+def fun_l18_n594()
+ fun_l19_n626
+end
+
+def fun_l18_n595()
+ fun_l19_n729
+end
+
+def fun_l18_n596()
+ fun_l19_n65
+end
+
+def fun_l18_n597()
+ fun_l19_n359
+end
+
+def fun_l18_n598()
+ fun_l19_n826
+end
+
+def fun_l18_n599()
+ fun_l19_n631
+end
+
+def fun_l18_n600()
+ fun_l19_n156
+end
+
+def fun_l18_n601()
+ fun_l19_n132
+end
+
+def fun_l18_n602()
+ fun_l19_n23
+end
+
+def fun_l18_n603()
+ fun_l19_n867
+end
+
+def fun_l18_n604()
+ fun_l19_n327
+end
+
+def fun_l18_n605()
+ fun_l19_n9
+end
+
+def fun_l18_n606()
+ fun_l19_n99
+end
+
+def fun_l18_n607()
+ fun_l19_n597
+end
+
+def fun_l18_n608()
+ fun_l19_n969
+end
+
+def fun_l18_n609()
+ fun_l19_n106
+end
+
+def fun_l18_n610()
+ fun_l19_n183
+end
+
+def fun_l18_n611()
+ fun_l19_n956
+end
+
+def fun_l18_n612()
+ fun_l19_n661
+end
+
+def fun_l18_n613()
+ fun_l19_n562
+end
+
+def fun_l18_n614()
+ fun_l19_n49
+end
+
+def fun_l18_n615()
+ fun_l19_n769
+end
+
+def fun_l18_n616()
+ fun_l19_n215
+end
+
+def fun_l18_n617()
+ fun_l19_n89
+end
+
+def fun_l18_n618()
+ fun_l19_n928
+end
+
+def fun_l18_n619()
+ fun_l19_n213
+end
+
+def fun_l18_n620()
+ fun_l19_n215
+end
+
+def fun_l18_n621()
+ fun_l19_n472
+end
+
+def fun_l18_n622()
+ fun_l19_n363
+end
+
+def fun_l18_n623()
+ fun_l19_n251
+end
+
+def fun_l18_n624()
+ fun_l19_n780
+end
+
+def fun_l18_n625()
+ fun_l19_n414
+end
+
+def fun_l18_n626()
+ fun_l19_n348
+end
+
+def fun_l18_n627()
+ fun_l19_n268
+end
+
+def fun_l18_n628()
+ fun_l19_n772
+end
+
+def fun_l18_n629()
+ fun_l19_n232
+end
+
+def fun_l18_n630()
+ fun_l19_n775
+end
+
+def fun_l18_n631()
+ fun_l19_n181
+end
+
+def fun_l18_n632()
+ fun_l19_n953
+end
+
+def fun_l18_n633()
+ fun_l19_n927
+end
+
+def fun_l18_n634()
+ fun_l19_n241
+end
+
+def fun_l18_n635()
+ fun_l19_n426
+end
+
+def fun_l18_n636()
+ fun_l19_n337
+end
+
+def fun_l18_n637()
+ fun_l19_n948
+end
+
+def fun_l18_n638()
+ fun_l19_n703
+end
+
+def fun_l18_n639()
+ fun_l19_n938
+end
+
+def fun_l18_n640()
+ fun_l19_n432
+end
+
+def fun_l18_n641()
+ fun_l19_n117
+end
+
+def fun_l18_n642()
+ fun_l19_n362
+end
+
+def fun_l18_n643()
+ fun_l19_n956
+end
+
+def fun_l18_n644()
+ fun_l19_n947
+end
+
+def fun_l18_n645()
+ fun_l19_n954
+end
+
+def fun_l18_n646()
+ fun_l19_n159
+end
+
+def fun_l18_n647()
+ fun_l19_n838
+end
+
+def fun_l18_n648()
+ fun_l19_n614
+end
+
+def fun_l18_n649()
+ fun_l19_n589
+end
+
+def fun_l18_n650()
+ fun_l19_n16
+end
+
+def fun_l18_n651()
+ fun_l19_n721
+end
+
+def fun_l18_n652()
+ fun_l19_n608
+end
+
+def fun_l18_n653()
+ fun_l19_n462
+end
+
+def fun_l18_n654()
+ fun_l19_n66
+end
+
+def fun_l18_n655()
+ fun_l19_n219
+end
+
+def fun_l18_n656()
+ fun_l19_n660
+end
+
+def fun_l18_n657()
+ fun_l19_n466
+end
+
+def fun_l18_n658()
+ fun_l19_n441
+end
+
+def fun_l18_n659()
+ fun_l19_n140
+end
+
+def fun_l18_n660()
+ fun_l19_n538
+end
+
+def fun_l18_n661()
+ fun_l19_n602
+end
+
+def fun_l18_n662()
+ fun_l19_n94
+end
+
+def fun_l18_n663()
+ fun_l19_n435
+end
+
+def fun_l18_n664()
+ fun_l19_n632
+end
+
+def fun_l18_n665()
+ fun_l19_n404
+end
+
+def fun_l18_n666()
+ fun_l19_n894
+end
+
+def fun_l18_n667()
+ fun_l19_n668
+end
+
+def fun_l18_n668()
+ fun_l19_n802
+end
+
+def fun_l18_n669()
+ fun_l19_n785
+end
+
+def fun_l18_n670()
+ fun_l19_n16
+end
+
+def fun_l18_n671()
+ fun_l19_n124
+end
+
+def fun_l18_n672()
+ fun_l19_n587
+end
+
+def fun_l18_n673()
+ fun_l19_n605
+end
+
+def fun_l18_n674()
+ fun_l19_n903
+end
+
+def fun_l18_n675()
+ fun_l19_n980
+end
+
+def fun_l18_n676()
+ fun_l19_n463
+end
+
+def fun_l18_n677()
+ fun_l19_n716
+end
+
+def fun_l18_n678()
+ fun_l19_n815
+end
+
+def fun_l18_n679()
+ fun_l19_n909
+end
+
+def fun_l18_n680()
+ fun_l19_n924
+end
+
+def fun_l18_n681()
+ fun_l19_n383
+end
+
+def fun_l18_n682()
+ fun_l19_n761
+end
+
+def fun_l18_n683()
+ fun_l19_n663
+end
+
+def fun_l18_n684()
+ fun_l19_n176
+end
+
+def fun_l18_n685()
+ fun_l19_n87
+end
+
+def fun_l18_n686()
+ fun_l19_n1
+end
+
+def fun_l18_n687()
+ fun_l19_n953
+end
+
+def fun_l18_n688()
+ fun_l19_n737
+end
+
+def fun_l18_n689()
+ fun_l19_n792
+end
+
+def fun_l18_n690()
+ fun_l19_n165
+end
+
+def fun_l18_n691()
+ fun_l19_n266
+end
+
+def fun_l18_n692()
+ fun_l19_n357
+end
+
+def fun_l18_n693()
+ fun_l19_n780
+end
+
+def fun_l18_n694()
+ fun_l19_n893
+end
+
+def fun_l18_n695()
+ fun_l19_n280
+end
+
+def fun_l18_n696()
+ fun_l19_n117
+end
+
+def fun_l18_n697()
+ fun_l19_n985
+end
+
+def fun_l18_n698()
+ fun_l19_n306
+end
+
+def fun_l18_n699()
+ fun_l19_n421
+end
+
+def fun_l18_n700()
+ fun_l19_n62
+end
+
+def fun_l18_n701()
+ fun_l19_n384
+end
+
+def fun_l18_n702()
+ fun_l19_n394
+end
+
+def fun_l18_n703()
+ fun_l19_n707
+end
+
+def fun_l18_n704()
+ fun_l19_n599
+end
+
+def fun_l18_n705()
+ fun_l19_n590
+end
+
+def fun_l18_n706()
+ fun_l19_n49
+end
+
+def fun_l18_n707()
+ fun_l19_n529
+end
+
+def fun_l18_n708()
+ fun_l19_n824
+end
+
+def fun_l18_n709()
+ fun_l19_n481
+end
+
+def fun_l18_n710()
+ fun_l19_n221
+end
+
+def fun_l18_n711()
+ fun_l19_n305
+end
+
+def fun_l18_n712()
+ fun_l19_n612
+end
+
+def fun_l18_n713()
+ fun_l19_n809
+end
+
+def fun_l18_n714()
+ fun_l19_n41
+end
+
+def fun_l18_n715()
+ fun_l19_n477
+end
+
+def fun_l18_n716()
+ fun_l19_n717
+end
+
+def fun_l18_n717()
+ fun_l19_n447
+end
+
+def fun_l18_n718()
+ fun_l19_n501
+end
+
+def fun_l18_n719()
+ fun_l19_n86
+end
+
+def fun_l18_n720()
+ fun_l19_n250
+end
+
+def fun_l18_n721()
+ fun_l19_n504
+end
+
+def fun_l18_n722()
+ fun_l19_n274
+end
+
+def fun_l18_n723()
+ fun_l19_n167
+end
+
+def fun_l18_n724()
+ fun_l19_n824
+end
+
+def fun_l18_n725()
+ fun_l19_n188
+end
+
+def fun_l18_n726()
+ fun_l19_n953
+end
+
+def fun_l18_n727()
+ fun_l19_n61
+end
+
+def fun_l18_n728()
+ fun_l19_n242
+end
+
+def fun_l18_n729()
+ fun_l19_n167
+end
+
+def fun_l18_n730()
+ fun_l19_n936
+end
+
+def fun_l18_n731()
+ fun_l19_n293
+end
+
+def fun_l18_n732()
+ fun_l19_n951
+end
+
+def fun_l18_n733()
+ fun_l19_n235
+end
+
+def fun_l18_n734()
+ fun_l19_n718
+end
+
+def fun_l18_n735()
+ fun_l19_n930
+end
+
+def fun_l18_n736()
+ fun_l19_n842
+end
+
+def fun_l18_n737()
+ fun_l19_n697
+end
+
+def fun_l18_n738()
+ fun_l19_n503
+end
+
+def fun_l18_n739()
+ fun_l19_n789
+end
+
+def fun_l18_n740()
+ fun_l19_n87
+end
+
+def fun_l18_n741()
+ fun_l19_n919
+end
+
+def fun_l18_n742()
+ fun_l19_n26
+end
+
+def fun_l18_n743()
+ fun_l19_n873
+end
+
+def fun_l18_n744()
+ fun_l19_n334
+end
+
+def fun_l18_n745()
+ fun_l19_n112
+end
+
+def fun_l18_n746()
+ fun_l19_n648
+end
+
+def fun_l18_n747()
+ fun_l19_n261
+end
+
+def fun_l18_n748()
+ fun_l19_n617
+end
+
+def fun_l18_n749()
+ fun_l19_n922
+end
+
+def fun_l18_n750()
+ fun_l19_n434
+end
+
+def fun_l18_n751()
+ fun_l19_n842
+end
+
+def fun_l18_n752()
+ fun_l19_n498
+end
+
+def fun_l18_n753()
+ fun_l19_n367
+end
+
+def fun_l18_n754()
+ fun_l19_n799
+end
+
+def fun_l18_n755()
+ fun_l19_n780
+end
+
+def fun_l18_n756()
+ fun_l19_n119
+end
+
+def fun_l18_n757()
+ fun_l19_n871
+end
+
+def fun_l18_n758()
+ fun_l19_n293
+end
+
+def fun_l18_n759()
+ fun_l19_n645
+end
+
+def fun_l18_n760()
+ fun_l19_n226
+end
+
+def fun_l18_n761()
+ fun_l19_n518
+end
+
+def fun_l18_n762()
+ fun_l19_n223
+end
+
+def fun_l18_n763()
+ fun_l19_n859
+end
+
+def fun_l18_n764()
+ fun_l19_n545
+end
+
+def fun_l18_n765()
+ fun_l19_n452
+end
+
+def fun_l18_n766()
+ fun_l19_n538
+end
+
+def fun_l18_n767()
+ fun_l19_n574
+end
+
+def fun_l18_n768()
+ fun_l19_n605
+end
+
+def fun_l18_n769()
+ fun_l19_n794
+end
+
+def fun_l18_n770()
+ fun_l19_n35
+end
+
+def fun_l18_n771()
+ fun_l19_n990
+end
+
+def fun_l18_n772()
+ fun_l19_n276
+end
+
+def fun_l18_n773()
+ fun_l19_n806
+end
+
+def fun_l18_n774()
+ fun_l19_n321
+end
+
+def fun_l18_n775()
+ fun_l19_n874
+end
+
+def fun_l18_n776()
+ fun_l19_n349
+end
+
+def fun_l18_n777()
+ fun_l19_n595
+end
+
+def fun_l18_n778()
+ fun_l19_n944
+end
+
+def fun_l18_n779()
+ fun_l19_n617
+end
+
+def fun_l18_n780()
+ fun_l19_n982
+end
+
+def fun_l18_n781()
+ fun_l19_n395
+end
+
+def fun_l18_n782()
+ fun_l19_n362
+end
+
+def fun_l18_n783()
+ fun_l19_n533
+end
+
+def fun_l18_n784()
+ fun_l19_n646
+end
+
+def fun_l18_n785()
+ fun_l19_n160
+end
+
+def fun_l18_n786()
+ fun_l19_n288
+end
+
+def fun_l18_n787()
+ fun_l19_n381
+end
+
+def fun_l18_n788()
+ fun_l19_n299
+end
+
+def fun_l18_n789()
+ fun_l19_n546
+end
+
+def fun_l18_n790()
+ fun_l19_n906
+end
+
+def fun_l18_n791()
+ fun_l19_n788
+end
+
+def fun_l18_n792()
+ fun_l19_n389
+end
+
+def fun_l18_n793()
+ fun_l19_n593
+end
+
+def fun_l18_n794()
+ fun_l19_n224
+end
+
+def fun_l18_n795()
+ fun_l19_n815
+end
+
+def fun_l18_n796()
+ fun_l19_n533
+end
+
+def fun_l18_n797()
+ fun_l19_n47
+end
+
+def fun_l18_n798()
+ fun_l19_n457
+end
+
+def fun_l18_n799()
+ fun_l19_n951
+end
+
+def fun_l18_n800()
+ fun_l19_n680
+end
+
+def fun_l18_n801()
+ fun_l19_n362
+end
+
+def fun_l18_n802()
+ fun_l19_n667
+end
+
+def fun_l18_n803()
+ fun_l19_n906
+end
+
+def fun_l18_n804()
+ fun_l19_n444
+end
+
+def fun_l18_n805()
+ fun_l19_n562
+end
+
+def fun_l18_n806()
+ fun_l19_n472
+end
+
+def fun_l18_n807()
+ fun_l19_n706
+end
+
+def fun_l18_n808()
+ fun_l19_n611
+end
+
+def fun_l18_n809()
+ fun_l19_n514
+end
+
+def fun_l18_n810()
+ fun_l19_n742
+end
+
+def fun_l18_n811()
+ fun_l19_n144
+end
+
+def fun_l18_n812()
+ fun_l19_n938
+end
+
+def fun_l18_n813()
+ fun_l19_n835
+end
+
+def fun_l18_n814()
+ fun_l19_n127
+end
+
+def fun_l18_n815()
+ fun_l19_n188
+end
+
+def fun_l18_n816()
+ fun_l19_n511
+end
+
+def fun_l18_n817()
+ fun_l19_n919
+end
+
+def fun_l18_n818()
+ fun_l19_n46
+end
+
+def fun_l18_n819()
+ fun_l19_n927
+end
+
+def fun_l18_n820()
+ fun_l19_n655
+end
+
+def fun_l18_n821()
+ fun_l19_n713
+end
+
+def fun_l18_n822()
+ fun_l19_n803
+end
+
+def fun_l18_n823()
+ fun_l19_n116
+end
+
+def fun_l18_n824()
+ fun_l19_n139
+end
+
+def fun_l18_n825()
+ fun_l19_n263
+end
+
+def fun_l18_n826()
+ fun_l19_n728
+end
+
+def fun_l18_n827()
+ fun_l19_n77
+end
+
+def fun_l18_n828()
+ fun_l19_n958
+end
+
+def fun_l18_n829()
+ fun_l19_n827
+end
+
+def fun_l18_n830()
+ fun_l19_n738
+end
+
+def fun_l18_n831()
+ fun_l19_n430
+end
+
+def fun_l18_n832()
+ fun_l19_n16
+end
+
+def fun_l18_n833()
+ fun_l19_n335
+end
+
+def fun_l18_n834()
+ fun_l19_n674
+end
+
+def fun_l18_n835()
+ fun_l19_n938
+end
+
+def fun_l18_n836()
+ fun_l19_n460
+end
+
+def fun_l18_n837()
+ fun_l19_n268
+end
+
+def fun_l18_n838()
+ fun_l19_n250
+end
+
+def fun_l18_n839()
+ fun_l19_n460
+end
+
+def fun_l18_n840()
+ fun_l19_n966
+end
+
+def fun_l18_n841()
+ fun_l19_n228
+end
+
+def fun_l18_n842()
+ fun_l19_n90
+end
+
+def fun_l18_n843()
+ fun_l19_n227
+end
+
+def fun_l18_n844()
+ fun_l19_n494
+end
+
+def fun_l18_n845()
+ fun_l19_n85
+end
+
+def fun_l18_n846()
+ fun_l19_n497
+end
+
+def fun_l18_n847()
+ fun_l19_n395
+end
+
+def fun_l18_n848()
+ fun_l19_n874
+end
+
+def fun_l18_n849()
+ fun_l19_n826
+end
+
+def fun_l18_n850()
+ fun_l19_n467
+end
+
+def fun_l18_n851()
+ fun_l19_n330
+end
+
+def fun_l18_n852()
+ fun_l19_n229
+end
+
+def fun_l18_n853()
+ fun_l19_n172
+end
+
+def fun_l18_n854()
+ fun_l19_n604
+end
+
+def fun_l18_n855()
+ fun_l19_n314
+end
+
+def fun_l18_n856()
+ fun_l19_n553
+end
+
+def fun_l18_n857()
+ fun_l19_n946
+end
+
+def fun_l18_n858()
+ fun_l19_n347
+end
+
+def fun_l18_n859()
+ fun_l19_n566
+end
+
+def fun_l18_n860()
+ fun_l19_n144
+end
+
+def fun_l18_n861()
+ fun_l19_n812
+end
+
+def fun_l18_n862()
+ fun_l19_n615
+end
+
+def fun_l18_n863()
+ fun_l19_n411
+end
+
+def fun_l18_n864()
+ fun_l19_n67
+end
+
+def fun_l18_n865()
+ fun_l19_n830
+end
+
+def fun_l18_n866()
+ fun_l19_n849
+end
+
+def fun_l18_n867()
+ fun_l19_n933
+end
+
+def fun_l18_n868()
+ fun_l19_n892
+end
+
+def fun_l18_n869()
+ fun_l19_n644
+end
+
+def fun_l18_n870()
+ fun_l19_n567
+end
+
+def fun_l18_n871()
+ fun_l19_n558
+end
+
+def fun_l18_n872()
+ fun_l19_n766
+end
+
+def fun_l18_n873()
+ fun_l19_n715
+end
+
+def fun_l18_n874()
+ fun_l19_n641
+end
+
+def fun_l18_n875()
+ fun_l19_n81
+end
+
+def fun_l18_n876()
+ fun_l19_n472
+end
+
+def fun_l18_n877()
+ fun_l19_n907
+end
+
+def fun_l18_n878()
+ fun_l19_n426
+end
+
+def fun_l18_n879()
+ fun_l19_n329
+end
+
+def fun_l18_n880()
+ fun_l19_n935
+end
+
+def fun_l18_n881()
+ fun_l19_n100
+end
+
+def fun_l18_n882()
+ fun_l19_n540
+end
+
+def fun_l18_n883()
+ fun_l19_n905
+end
+
+def fun_l18_n884()
+ fun_l19_n991
+end
+
+def fun_l18_n885()
+ fun_l19_n700
+end
+
+def fun_l18_n886()
+ fun_l19_n698
+end
+
+def fun_l18_n887()
+ fun_l19_n805
+end
+
+def fun_l18_n888()
+ fun_l19_n736
+end
+
+def fun_l18_n889()
+ fun_l19_n386
+end
+
+def fun_l18_n890()
+ fun_l19_n895
+end
+
+def fun_l18_n891()
+ fun_l19_n542
+end
+
+def fun_l18_n892()
+ fun_l19_n261
+end
+
+def fun_l18_n893()
+ fun_l19_n600
+end
+
+def fun_l18_n894()
+ fun_l19_n153
+end
+
+def fun_l18_n895()
+ fun_l19_n767
+end
+
+def fun_l18_n896()
+ fun_l19_n201
+end
+
+def fun_l18_n897()
+ fun_l19_n98
+end
+
+def fun_l18_n898()
+ fun_l19_n423
+end
+
+def fun_l18_n899()
+ fun_l19_n247
+end
+
+def fun_l18_n900()
+ fun_l19_n720
+end
+
+def fun_l18_n901()
+ fun_l19_n1
+end
+
+def fun_l18_n902()
+ fun_l19_n21
+end
+
+def fun_l18_n903()
+ fun_l19_n591
+end
+
+def fun_l18_n904()
+ fun_l19_n36
+end
+
+def fun_l18_n905()
+ fun_l19_n654
+end
+
+def fun_l18_n906()
+ fun_l19_n378
+end
+
+def fun_l18_n907()
+ fun_l19_n841
+end
+
+def fun_l18_n908()
+ fun_l19_n685
+end
+
+def fun_l18_n909()
+ fun_l19_n933
+end
+
+def fun_l18_n910()
+ fun_l19_n71
+end
+
+def fun_l18_n911()
+ fun_l19_n963
+end
+
+def fun_l18_n912()
+ fun_l19_n590
+end
+
+def fun_l18_n913()
+ fun_l19_n24
+end
+
+def fun_l18_n914()
+ fun_l19_n213
+end
+
+def fun_l18_n915()
+ fun_l19_n862
+end
+
+def fun_l18_n916()
+ fun_l19_n2
+end
+
+def fun_l18_n917()
+ fun_l19_n728
+end
+
+def fun_l18_n918()
+ fun_l19_n23
+end
+
+def fun_l18_n919()
+ fun_l19_n345
+end
+
+def fun_l18_n920()
+ fun_l19_n515
+end
+
+def fun_l18_n921()
+ fun_l19_n803
+end
+
+def fun_l18_n922()
+ fun_l19_n378
+end
+
+def fun_l18_n923()
+ fun_l19_n260
+end
+
+def fun_l18_n924()
+ fun_l19_n824
+end
+
+def fun_l18_n925()
+ fun_l19_n698
+end
+
+def fun_l18_n926()
+ fun_l19_n719
+end
+
+def fun_l18_n927()
+ fun_l19_n126
+end
+
+def fun_l18_n928()
+ fun_l19_n647
+end
+
+def fun_l18_n929()
+ fun_l19_n412
+end
+
+def fun_l18_n930()
+ fun_l19_n617
+end
+
+def fun_l18_n931()
+ fun_l19_n295
+end
+
+def fun_l18_n932()
+ fun_l19_n231
+end
+
+def fun_l18_n933()
+ fun_l19_n301
+end
+
+def fun_l18_n934()
+ fun_l19_n25
+end
+
+def fun_l18_n935()
+ fun_l19_n341
+end
+
+def fun_l18_n936()
+ fun_l19_n845
+end
+
+def fun_l18_n937()
+ fun_l19_n97
+end
+
+def fun_l18_n938()
+ fun_l19_n787
+end
+
+def fun_l18_n939()
+ fun_l19_n828
+end
+
+def fun_l18_n940()
+ fun_l19_n298
+end
+
+def fun_l18_n941()
+ fun_l19_n234
+end
+
+def fun_l18_n942()
+ fun_l19_n74
+end
+
+def fun_l18_n943()
+ fun_l19_n928
+end
+
+def fun_l18_n944()
+ fun_l19_n276
+end
+
+def fun_l18_n945()
+ fun_l19_n699
+end
+
+def fun_l18_n946()
+ fun_l19_n507
+end
+
+def fun_l18_n947()
+ fun_l19_n385
+end
+
+def fun_l18_n948()
+ fun_l19_n651
+end
+
+def fun_l18_n949()
+ fun_l19_n315
+end
+
+def fun_l18_n950()
+ fun_l19_n289
+end
+
+def fun_l18_n951()
+ fun_l19_n879
+end
+
+def fun_l18_n952()
+ fun_l19_n549
+end
+
+def fun_l18_n953()
+ fun_l19_n205
+end
+
+def fun_l18_n954()
+ fun_l19_n468
+end
+
+def fun_l18_n955()
+ fun_l19_n11
+end
+
+def fun_l18_n956()
+ fun_l19_n644
+end
+
+def fun_l18_n957()
+ fun_l19_n492
+end
+
+def fun_l18_n958()
+ fun_l19_n94
+end
+
+def fun_l18_n959()
+ fun_l19_n331
+end
+
+def fun_l18_n960()
+ fun_l19_n708
+end
+
+def fun_l18_n961()
+ fun_l19_n646
+end
+
+def fun_l18_n962()
+ fun_l19_n206
+end
+
+def fun_l18_n963()
+ fun_l19_n793
+end
+
+def fun_l18_n964()
+ fun_l19_n426
+end
+
+def fun_l18_n965()
+ fun_l19_n181
+end
+
+def fun_l18_n966()
+ fun_l19_n773
+end
+
+def fun_l18_n967()
+ fun_l19_n324
+end
+
+def fun_l18_n968()
+ fun_l19_n451
+end
+
+def fun_l18_n969()
+ fun_l19_n155
+end
+
+def fun_l18_n970()
+ fun_l19_n812
+end
+
+def fun_l18_n971()
+ fun_l19_n906
+end
+
+def fun_l18_n972()
+ fun_l19_n367
+end
+
+def fun_l18_n973()
+ fun_l19_n260
+end
+
+def fun_l18_n974()
+ fun_l19_n226
+end
+
+def fun_l18_n975()
+ fun_l19_n189
+end
+
+def fun_l18_n976()
+ fun_l19_n32
+end
+
+def fun_l18_n977()
+ fun_l19_n43
+end
+
+def fun_l18_n978()
+ fun_l19_n285
+end
+
+def fun_l18_n979()
+ fun_l19_n511
+end
+
+def fun_l18_n980()
+ fun_l19_n714
+end
+
+def fun_l18_n981()
+ fun_l19_n587
+end
+
+def fun_l18_n982()
+ fun_l19_n247
+end
+
+def fun_l18_n983()
+ fun_l19_n258
+end
+
+def fun_l18_n984()
+ fun_l19_n115
+end
+
+def fun_l18_n985()
+ fun_l19_n873
+end
+
+def fun_l18_n986()
+ fun_l19_n452
+end
+
+def fun_l18_n987()
+ fun_l19_n994
+end
+
+def fun_l18_n988()
+ fun_l19_n912
+end
+
+def fun_l18_n989()
+ fun_l19_n534
+end
+
+def fun_l18_n990()
+ fun_l19_n186
+end
+
+def fun_l18_n991()
+ fun_l19_n49
+end
+
+def fun_l18_n992()
+ fun_l19_n676
+end
+
+def fun_l18_n993()
+ fun_l19_n466
+end
+
+def fun_l18_n994()
+ fun_l19_n571
+end
+
+def fun_l18_n995()
+ fun_l19_n573
+end
+
+def fun_l18_n996()
+ fun_l19_n47
+end
+
+def fun_l18_n997()
+ fun_l19_n657
+end
+
+def fun_l18_n998()
+ fun_l19_n11
+end
+
+def fun_l18_n999()
+ fun_l19_n342
+end
+
+def fun_l19_n0()
+ fun_l20_n278
+end
+
+def fun_l19_n1()
+ fun_l20_n159
+end
+
+def fun_l19_n2()
+ fun_l20_n289
+end
+
+def fun_l19_n3()
+ fun_l20_n766
+end
+
+def fun_l19_n4()
+ fun_l20_n45
+end
+
+def fun_l19_n5()
+ fun_l20_n453
+end
+
+def fun_l19_n6()
+ fun_l20_n581
+end
+
+def fun_l19_n7()
+ fun_l20_n607
+end
+
+def fun_l19_n8()
+ fun_l20_n427
+end
+
+def fun_l19_n9()
+ fun_l20_n287
+end
+
+def fun_l19_n10()
+ fun_l20_n28
+end
+
+def fun_l19_n11()
+ fun_l20_n456
+end
+
+def fun_l19_n12()
+ fun_l20_n283
+end
+
+def fun_l19_n13()
+ fun_l20_n451
+end
+
+def fun_l19_n14()
+ fun_l20_n220
+end
+
+def fun_l19_n15()
+ fun_l20_n497
+end
+
+def fun_l19_n16()
+ fun_l20_n295
+end
+
+def fun_l19_n17()
+ fun_l20_n66
+end
+
+def fun_l19_n18()
+ fun_l20_n863
+end
+
+def fun_l19_n19()
+ fun_l20_n919
+end
+
+def fun_l19_n20()
+ fun_l20_n712
+end
+
+def fun_l19_n21()
+ fun_l20_n323
+end
+
+def fun_l19_n22()
+ fun_l20_n666
+end
+
+def fun_l19_n23()
+ fun_l20_n947
+end
+
+def fun_l19_n24()
+ fun_l20_n422
+end
+
+def fun_l19_n25()
+ fun_l20_n728
+end
+
+def fun_l19_n26()
+ fun_l20_n886
+end
+
+def fun_l19_n27()
+ fun_l20_n585
+end
+
+def fun_l19_n28()
+ fun_l20_n835
+end
+
+def fun_l19_n29()
+ fun_l20_n812
+end
+
+def fun_l19_n30()
+ fun_l20_n425
+end
+
+def fun_l19_n31()
+ fun_l20_n378
+end
+
+def fun_l19_n32()
+ fun_l20_n128
+end
+
+def fun_l19_n33()
+ fun_l20_n714
+end
+
+def fun_l19_n34()
+ fun_l20_n502
+end
+
+def fun_l19_n35()
+ fun_l20_n447
+end
+
+def fun_l19_n36()
+ fun_l20_n512
+end
+
+def fun_l19_n37()
+ fun_l20_n642
+end
+
+def fun_l19_n38()
+ fun_l20_n839
+end
+
+def fun_l19_n39()
+ fun_l20_n539
+end
+
+def fun_l19_n40()
+ fun_l20_n204
+end
+
+def fun_l19_n41()
+ fun_l20_n294
+end
+
+def fun_l19_n42()
+ fun_l20_n360
+end
+
+def fun_l19_n43()
+ fun_l20_n132
+end
+
+def fun_l19_n44()
+ fun_l20_n529
+end
+
+def fun_l19_n45()
+ fun_l20_n783
+end
+
+def fun_l19_n46()
+ fun_l20_n694
+end
+
+def fun_l19_n47()
+ fun_l20_n939
+end
+
+def fun_l19_n48()
+ fun_l20_n972
+end
+
+def fun_l19_n49()
+ fun_l20_n187
+end
+
+def fun_l19_n50()
+ fun_l20_n236
+end
+
+def fun_l19_n51()
+ fun_l20_n218
+end
+
+def fun_l19_n52()
+ fun_l20_n278
+end
+
+def fun_l19_n53()
+ fun_l20_n895
+end
+
+def fun_l19_n54()
+ fun_l20_n967
+end
+
+def fun_l19_n55()
+ fun_l20_n110
+end
+
+def fun_l19_n56()
+ fun_l20_n918
+end
+
+def fun_l19_n57()
+ fun_l20_n458
+end
+
+def fun_l19_n58()
+ fun_l20_n262
+end
+
+def fun_l19_n59()
+ fun_l20_n978
+end
+
+def fun_l19_n60()
+ fun_l20_n434
+end
+
+def fun_l19_n61()
+ fun_l20_n86
+end
+
+def fun_l19_n62()
+ fun_l20_n364
+end
+
+def fun_l19_n63()
+ fun_l20_n92
+end
+
+def fun_l19_n64()
+ fun_l20_n173
+end
+
+def fun_l19_n65()
+ fun_l20_n530
+end
+
+def fun_l19_n66()
+ fun_l20_n291
+end
+
+def fun_l19_n67()
+ fun_l20_n758
+end
+
+def fun_l19_n68()
+ fun_l20_n311
+end
+
+def fun_l19_n69()
+ fun_l20_n984
+end
+
+def fun_l19_n70()
+ fun_l20_n976
+end
+
+def fun_l19_n71()
+ fun_l20_n622
+end
+
+def fun_l19_n72()
+ fun_l20_n467
+end
+
+def fun_l19_n73()
+ fun_l20_n369
+end
+
+def fun_l19_n74()
+ fun_l20_n81
+end
+
+def fun_l19_n75()
+ fun_l20_n6
+end
+
+def fun_l19_n76()
+ fun_l20_n23
+end
+
+def fun_l19_n77()
+ fun_l20_n631
+end
+
+def fun_l19_n78()
+ fun_l20_n535
+end
+
+def fun_l19_n79()
+ fun_l20_n572
+end
+
+def fun_l19_n80()
+ fun_l20_n905
+end
+
+def fun_l19_n81()
+ fun_l20_n709
+end
+
+def fun_l19_n82()
+ fun_l20_n362
+end
+
+def fun_l19_n83()
+ fun_l20_n505
+end
+
+def fun_l19_n84()
+ fun_l20_n247
+end
+
+def fun_l19_n85()
+ fun_l20_n88
+end
+
+def fun_l19_n86()
+ fun_l20_n214
+end
+
+def fun_l19_n87()
+ fun_l20_n607
+end
+
+def fun_l19_n88()
+ fun_l20_n161
+end
+
+def fun_l19_n89()
+ fun_l20_n419
+end
+
+def fun_l19_n90()
+ fun_l20_n514
+end
+
+def fun_l19_n91()
+ fun_l20_n879
+end
+
+def fun_l19_n92()
+ fun_l20_n11
+end
+
+def fun_l19_n93()
+ fun_l20_n269
+end
+
+def fun_l19_n94()
+ fun_l20_n685
+end
+
+def fun_l19_n95()
+ fun_l20_n435
+end
+
+def fun_l19_n96()
+ fun_l20_n183
+end
+
+def fun_l19_n97()
+ fun_l20_n548
+end
+
+def fun_l19_n98()
+ fun_l20_n460
+end
+
+def fun_l19_n99()
+ fun_l20_n636
+end
+
+def fun_l19_n100()
+ fun_l20_n829
+end
+
+def fun_l19_n101()
+ fun_l20_n224
+end
+
+def fun_l19_n102()
+ fun_l20_n291
+end
+
+def fun_l19_n103()
+ fun_l20_n498
+end
+
+def fun_l19_n104()
+ fun_l20_n403
+end
+
+def fun_l19_n105()
+ fun_l20_n699
+end
+
+def fun_l19_n106()
+ fun_l20_n851
+end
+
+def fun_l19_n107()
+ fun_l20_n400
+end
+
+def fun_l19_n108()
+ fun_l20_n834
+end
+
+def fun_l19_n109()
+ fun_l20_n635
+end
+
+def fun_l19_n110()
+ fun_l20_n651
+end
+
+def fun_l19_n111()
+ fun_l20_n930
+end
+
+def fun_l19_n112()
+ fun_l20_n547
+end
+
+def fun_l19_n113()
+ fun_l20_n237
+end
+
+def fun_l19_n114()
+ fun_l20_n298
+end
+
+def fun_l19_n115()
+ fun_l20_n979
+end
+
+def fun_l19_n116()
+ fun_l20_n409
+end
+
+def fun_l19_n117()
+ fun_l20_n942
+end
+
+def fun_l19_n118()
+ fun_l20_n224
+end
+
+def fun_l19_n119()
+ fun_l20_n288
+end
+
+def fun_l19_n120()
+ fun_l20_n42
+end
+
+def fun_l19_n121()
+ fun_l20_n718
+end
+
+def fun_l19_n122()
+ fun_l20_n392
+end
+
+def fun_l19_n123()
+ fun_l20_n375
+end
+
+def fun_l19_n124()
+ fun_l20_n499
+end
+
+def fun_l19_n125()
+ fun_l20_n499
+end
+
+def fun_l19_n126()
+ fun_l20_n998
+end
+
+def fun_l19_n127()
+ fun_l20_n659
+end
+
+def fun_l19_n128()
+ fun_l20_n782
+end
+
+def fun_l19_n129()
+ fun_l20_n607
+end
+
+def fun_l19_n130()
+ fun_l20_n802
+end
+
+def fun_l19_n131()
+ fun_l20_n773
+end
+
+def fun_l19_n132()
+ fun_l20_n861
+end
+
+def fun_l19_n133()
+ fun_l20_n38
+end
+
+def fun_l19_n134()
+ fun_l20_n614
+end
+
+def fun_l19_n135()
+ fun_l20_n546
+end
+
+def fun_l19_n136()
+ fun_l20_n890
+end
+
+def fun_l19_n137()
+ fun_l20_n987
+end
+
+def fun_l19_n138()
+ fun_l20_n518
+end
+
+def fun_l19_n139()
+ fun_l20_n708
+end
+
+def fun_l19_n140()
+ fun_l20_n838
+end
+
+def fun_l19_n141()
+ fun_l20_n642
+end
+
+def fun_l19_n142()
+ fun_l20_n275
+end
+
+def fun_l19_n143()
+ fun_l20_n274
+end
+
+def fun_l19_n144()
+ fun_l20_n479
+end
+
+def fun_l19_n145()
+ fun_l20_n215
+end
+
+def fun_l19_n146()
+ fun_l20_n794
+end
+
+def fun_l19_n147()
+ fun_l20_n329
+end
+
+def fun_l19_n148()
+ fun_l20_n146
+end
+
+def fun_l19_n149()
+ fun_l20_n561
+end
+
+def fun_l19_n150()
+ fun_l20_n782
+end
+
+def fun_l19_n151()
+ fun_l20_n903
+end
+
+def fun_l19_n152()
+ fun_l20_n97
+end
+
+def fun_l19_n153()
+ fun_l20_n962
+end
+
+def fun_l19_n154()
+ fun_l20_n758
+end
+
+def fun_l19_n155()
+ fun_l20_n58
+end
+
+def fun_l19_n156()
+ fun_l20_n683
+end
+
+def fun_l19_n157()
+ fun_l20_n48
+end
+
+def fun_l19_n158()
+ fun_l20_n476
+end
+
+def fun_l19_n159()
+ fun_l20_n19
+end
+
+def fun_l19_n160()
+ fun_l20_n938
+end
+
+def fun_l19_n161()
+ fun_l20_n40
+end
+
+def fun_l19_n162()
+ fun_l20_n817
+end
+
+def fun_l19_n163()
+ fun_l20_n745
+end
+
+def fun_l19_n164()
+ fun_l20_n10
+end
+
+def fun_l19_n165()
+ fun_l20_n486
+end
+
+def fun_l19_n166()
+ fun_l20_n321
+end
+
+def fun_l19_n167()
+ fun_l20_n255
+end
+
+def fun_l19_n168()
+ fun_l20_n286
+end
+
+def fun_l19_n169()
+ fun_l20_n777
+end
+
+def fun_l19_n170()
+ fun_l20_n985
+end
+
+def fun_l19_n171()
+ fun_l20_n827
+end
+
+def fun_l19_n172()
+ fun_l20_n422
+end
+
+def fun_l19_n173()
+ fun_l20_n194
+end
+
+def fun_l19_n174()
+ fun_l20_n399
+end
+
+def fun_l19_n175()
+ fun_l20_n562
+end
+
+def fun_l19_n176()
+ fun_l20_n808
+end
+
+def fun_l19_n177()
+ fun_l20_n646
+end
+
+def fun_l19_n178()
+ fun_l20_n806
+end
+
+def fun_l19_n179()
+ fun_l20_n203
+end
+
+def fun_l19_n180()
+ fun_l20_n426
+end
+
+def fun_l19_n181()
+ fun_l20_n361
+end
+
+def fun_l19_n182()
+ fun_l20_n738
+end
+
+def fun_l19_n183()
+ fun_l20_n446
+end
+
+def fun_l19_n184()
+ fun_l20_n781
+end
+
+def fun_l19_n185()
+ fun_l20_n521
+end
+
+def fun_l19_n186()
+ fun_l20_n599
+end
+
+def fun_l19_n187()
+ fun_l20_n178
+end
+
+def fun_l19_n188()
+ fun_l20_n15
+end
+
+def fun_l19_n189()
+ fun_l20_n846
+end
+
+def fun_l19_n190()
+ fun_l20_n888
+end
+
+def fun_l19_n191()
+ fun_l20_n53
+end
+
+def fun_l19_n192()
+ fun_l20_n943
+end
+
+def fun_l19_n193()
+ fun_l20_n73
+end
+
+def fun_l19_n194()
+ fun_l20_n918
+end
+
+def fun_l19_n195()
+ fun_l20_n924
+end
+
+def fun_l19_n196()
+ fun_l20_n37
+end
+
+def fun_l19_n197()
+ fun_l20_n674
+end
+
+def fun_l19_n198()
+ fun_l20_n167
+end
+
+def fun_l19_n199()
+ fun_l20_n167
+end
+
+def fun_l19_n200()
+ fun_l20_n201
+end
+
+def fun_l19_n201()
+ fun_l20_n785
+end
+
+def fun_l19_n202()
+ fun_l20_n980
+end
+
+def fun_l19_n203()
+ fun_l20_n295
+end
+
+def fun_l19_n204()
+ fun_l20_n586
+end
+
+def fun_l19_n205()
+ fun_l20_n541
+end
+
+def fun_l19_n206()
+ fun_l20_n220
+end
+
+def fun_l19_n207()
+ fun_l20_n956
+end
+
+def fun_l19_n208()
+ fun_l20_n195
+end
+
+def fun_l19_n209()
+ fun_l20_n232
+end
+
+def fun_l19_n210()
+ fun_l20_n91
+end
+
+def fun_l19_n211()
+ fun_l20_n525
+end
+
+def fun_l19_n212()
+ fun_l20_n50
+end
+
+def fun_l19_n213()
+ fun_l20_n635
+end
+
+def fun_l19_n214()
+ fun_l20_n24
+end
+
+def fun_l19_n215()
+ fun_l20_n795
+end
+
+def fun_l19_n216()
+ fun_l20_n743
+end
+
+def fun_l19_n217()
+ fun_l20_n418
+end
+
+def fun_l19_n218()
+ fun_l20_n63
+end
+
+def fun_l19_n219()
+ fun_l20_n866
+end
+
+def fun_l19_n220()
+ fun_l20_n195
+end
+
+def fun_l19_n221()
+ fun_l20_n178
+end
+
+def fun_l19_n222()
+ fun_l20_n147
+end
+
+def fun_l19_n223()
+ fun_l20_n891
+end
+
+def fun_l19_n224()
+ fun_l20_n804
+end
+
+def fun_l19_n225()
+ fun_l20_n379
+end
+
+def fun_l19_n226()
+ fun_l20_n894
+end
+
+def fun_l19_n227()
+ fun_l20_n767
+end
+
+def fun_l19_n228()
+ fun_l20_n532
+end
+
+def fun_l19_n229()
+ fun_l20_n69
+end
+
+def fun_l19_n230()
+ fun_l20_n602
+end
+
+def fun_l19_n231()
+ fun_l20_n933
+end
+
+def fun_l19_n232()
+ fun_l20_n940
+end
+
+def fun_l19_n233()
+ fun_l20_n935
+end
+
+def fun_l19_n234()
+ fun_l20_n234
+end
+
+def fun_l19_n235()
+ fun_l20_n984
+end
+
+def fun_l19_n236()
+ fun_l20_n962
+end
+
+def fun_l19_n237()
+ fun_l20_n334
+end
+
+def fun_l19_n238()
+ fun_l20_n945
+end
+
+def fun_l19_n239()
+ fun_l20_n778
+end
+
+def fun_l19_n240()
+ fun_l20_n946
+end
+
+def fun_l19_n241()
+ fun_l20_n27
+end
+
+def fun_l19_n242()
+ fun_l20_n535
+end
+
+def fun_l19_n243()
+ fun_l20_n940
+end
+
+def fun_l19_n244()
+ fun_l20_n991
+end
+
+def fun_l19_n245()
+ fun_l20_n926
+end
+
+def fun_l19_n246()
+ fun_l20_n945
+end
+
+def fun_l19_n247()
+ fun_l20_n56
+end
+
+def fun_l19_n248()
+ fun_l20_n529
+end
+
+def fun_l19_n249()
+ fun_l20_n497
+end
+
+def fun_l19_n250()
+ fun_l20_n823
+end
+
+def fun_l19_n251()
+ fun_l20_n296
+end
+
+def fun_l19_n252()
+ fun_l20_n342
+end
+
+def fun_l19_n253()
+ fun_l20_n843
+end
+
+def fun_l19_n254()
+ fun_l20_n95
+end
+
+def fun_l19_n255()
+ fun_l20_n0
+end
+
+def fun_l19_n256()
+ fun_l20_n289
+end
+
+def fun_l19_n257()
+ fun_l20_n816
+end
+
+def fun_l19_n258()
+ fun_l20_n318
+end
+
+def fun_l19_n259()
+ fun_l20_n401
+end
+
+def fun_l19_n260()
+ fun_l20_n495
+end
+
+def fun_l19_n261()
+ fun_l20_n331
+end
+
+def fun_l19_n262()
+ fun_l20_n457
+end
+
+def fun_l19_n263()
+ fun_l20_n169
+end
+
+def fun_l19_n264()
+ fun_l20_n736
+end
+
+def fun_l19_n265()
+ fun_l20_n12
+end
+
+def fun_l19_n266()
+ fun_l20_n552
+end
+
+def fun_l19_n267()
+ fun_l20_n350
+end
+
+def fun_l19_n268()
+ fun_l20_n417
+end
+
+def fun_l19_n269()
+ fun_l20_n960
+end
+
+def fun_l19_n270()
+ fun_l20_n251
+end
+
+def fun_l19_n271()
+ fun_l20_n218
+end
+
+def fun_l19_n272()
+ fun_l20_n496
+end
+
+def fun_l19_n273()
+ fun_l20_n262
+end
+
+def fun_l19_n274()
+ fun_l20_n617
+end
+
+def fun_l19_n275()
+ fun_l20_n225
+end
+
+def fun_l19_n276()
+ fun_l20_n878
+end
+
+def fun_l19_n277()
+ fun_l20_n538
+end
+
+def fun_l19_n278()
+ fun_l20_n99
+end
+
+def fun_l19_n279()
+ fun_l20_n654
+end
+
+def fun_l19_n280()
+ fun_l20_n460
+end
+
+def fun_l19_n281()
+ fun_l20_n108
+end
+
+def fun_l19_n282()
+ fun_l20_n62
+end
+
+def fun_l19_n283()
+ fun_l20_n855
+end
+
+def fun_l19_n284()
+ fun_l20_n790
+end
+
+def fun_l19_n285()
+ fun_l20_n838
+end
+
+def fun_l19_n286()
+ fun_l20_n570
+end
+
+def fun_l19_n287()
+ fun_l20_n376
+end
+
+def fun_l19_n288()
+ fun_l20_n219
+end
+
+def fun_l19_n289()
+ fun_l20_n793
+end
+
+def fun_l19_n290()
+ fun_l20_n17
+end
+
+def fun_l19_n291()
+ fun_l20_n408
+end
+
+def fun_l19_n292()
+ fun_l20_n224
+end
+
+def fun_l19_n293()
+ fun_l20_n953
+end
+
+def fun_l19_n294()
+ fun_l20_n0
+end
+
+def fun_l19_n295()
+ fun_l20_n15
+end
+
+def fun_l19_n296()
+ fun_l20_n304
+end
+
+def fun_l19_n297()
+ fun_l20_n917
+end
+
+def fun_l19_n298()
+ fun_l20_n903
+end
+
+def fun_l19_n299()
+ fun_l20_n151
+end
+
+def fun_l19_n300()
+ fun_l20_n704
+end
+
+def fun_l19_n301()
+ fun_l20_n559
+end
+
+def fun_l19_n302()
+ fun_l20_n957
+end
+
+def fun_l19_n303()
+ fun_l20_n607
+end
+
+def fun_l19_n304()
+ fun_l20_n776
+end
+
+def fun_l19_n305()
+ fun_l20_n661
+end
+
+def fun_l19_n306()
+ fun_l20_n545
+end
+
+def fun_l19_n307()
+ fun_l20_n735
+end
+
+def fun_l19_n308()
+ fun_l20_n427
+end
+
+def fun_l19_n309()
+ fun_l20_n427
+end
+
+def fun_l19_n310()
+ fun_l20_n11
+end
+
+def fun_l19_n311()
+ fun_l20_n109
+end
+
+def fun_l19_n312()
+ fun_l20_n84
+end
+
+def fun_l19_n313()
+ fun_l20_n106
+end
+
+def fun_l19_n314()
+ fun_l20_n758
+end
+
+def fun_l19_n315()
+ fun_l20_n343
+end
+
+def fun_l19_n316()
+ fun_l20_n998
+end
+
+def fun_l19_n317()
+ fun_l20_n174
+end
+
+def fun_l19_n318()
+ fun_l20_n12
+end
+
+def fun_l19_n319()
+ fun_l20_n116
+end
+
+def fun_l19_n320()
+ fun_l20_n517
+end
+
+def fun_l19_n321()
+ fun_l20_n15
+end
+
+def fun_l19_n322()
+ fun_l20_n441
+end
+
+def fun_l19_n323()
+ fun_l20_n25
+end
+
+def fun_l19_n324()
+ fun_l20_n101
+end
+
+def fun_l19_n325()
+ fun_l20_n160
+end
+
+def fun_l19_n326()
+ fun_l20_n784
+end
+
+def fun_l19_n327()
+ fun_l20_n940
+end
+
+def fun_l19_n328()
+ fun_l20_n969
+end
+
+def fun_l19_n329()
+ fun_l20_n306
+end
+
+def fun_l19_n330()
+ fun_l20_n337
+end
+
+def fun_l19_n331()
+ fun_l20_n199
+end
+
+def fun_l19_n332()
+ fun_l20_n341
+end
+
+def fun_l19_n333()
+ fun_l20_n2
+end
+
+def fun_l19_n334()
+ fun_l20_n954
+end
+
+def fun_l19_n335()
+ fun_l20_n463
+end
+
+def fun_l19_n336()
+ fun_l20_n16
+end
+
+def fun_l19_n337()
+ fun_l20_n566
+end
+
+def fun_l19_n338()
+ fun_l20_n807
+end
+
+def fun_l19_n339()
+ fun_l20_n785
+end
+
+def fun_l19_n340()
+ fun_l20_n577
+end
+
+def fun_l19_n341()
+ fun_l20_n744
+end
+
+def fun_l19_n342()
+ fun_l20_n769
+end
+
+def fun_l19_n343()
+ fun_l20_n120
+end
+
+def fun_l19_n344()
+ fun_l20_n846
+end
+
+def fun_l19_n345()
+ fun_l20_n7
+end
+
+def fun_l19_n346()
+ fun_l20_n517
+end
+
+def fun_l19_n347()
+ fun_l20_n138
+end
+
+def fun_l19_n348()
+ fun_l20_n551
+end
+
+def fun_l19_n349()
+ fun_l20_n667
+end
+
+def fun_l19_n350()
+ fun_l20_n983
+end
+
+def fun_l19_n351()
+ fun_l20_n941
+end
+
+def fun_l19_n352()
+ fun_l20_n278
+end
+
+def fun_l19_n353()
+ fun_l20_n360
+end
+
+def fun_l19_n354()
+ fun_l20_n327
+end
+
+def fun_l19_n355()
+ fun_l20_n414
+end
+
+def fun_l19_n356()
+ fun_l20_n200
+end
+
+def fun_l19_n357()
+ fun_l20_n298
+end
+
+def fun_l19_n358()
+ fun_l20_n337
+end
+
+def fun_l19_n359()
+ fun_l20_n602
+end
+
+def fun_l19_n360()
+ fun_l20_n631
+end
+
+def fun_l19_n361()
+ fun_l20_n100
+end
+
+def fun_l19_n362()
+ fun_l20_n179
+end
+
+def fun_l19_n363()
+ fun_l20_n710
+end
+
+def fun_l19_n364()
+ fun_l20_n1
+end
+
+def fun_l19_n365()
+ fun_l20_n88
+end
+
+def fun_l19_n366()
+ fun_l20_n98
+end
+
+def fun_l19_n367()
+ fun_l20_n499
+end
+
+def fun_l19_n368()
+ fun_l20_n610
+end
+
+def fun_l19_n369()
+ fun_l20_n243
+end
+
+def fun_l19_n370()
+ fun_l20_n954
+end
+
+def fun_l19_n371()
+ fun_l20_n204
+end
+
+def fun_l19_n372()
+ fun_l20_n618
+end
+
+def fun_l19_n373()
+ fun_l20_n513
+end
+
+def fun_l19_n374()
+ fun_l20_n341
+end
+
+def fun_l19_n375()
+ fun_l20_n31
+end
+
+def fun_l19_n376()
+ fun_l20_n627
+end
+
+def fun_l19_n377()
+ fun_l20_n817
+end
+
+def fun_l19_n378()
+ fun_l20_n545
+end
+
+def fun_l19_n379()
+ fun_l20_n236
+end
+
+def fun_l19_n380()
+ fun_l20_n926
+end
+
+def fun_l19_n381()
+ fun_l20_n167
+end
+
+def fun_l19_n382()
+ fun_l20_n287
+end
+
+def fun_l19_n383()
+ fun_l20_n264
+end
+
+def fun_l19_n384()
+ fun_l20_n16
+end
+
+def fun_l19_n385()
+ fun_l20_n197
+end
+
+def fun_l19_n386()
+ fun_l20_n791
+end
+
+def fun_l19_n387()
+ fun_l20_n124
+end
+
+def fun_l19_n388()
+ fun_l20_n351
+end
+
+def fun_l19_n389()
+ fun_l20_n893
+end
+
+def fun_l19_n390()
+ fun_l20_n191
+end
+
+def fun_l19_n391()
+ fun_l20_n441
+end
+
+def fun_l19_n392()
+ fun_l20_n781
+end
+
+def fun_l19_n393()
+ fun_l20_n614
+end
+
+def fun_l19_n394()
+ fun_l20_n301
+end
+
+def fun_l19_n395()
+ fun_l20_n749
+end
+
+def fun_l19_n396()
+ fun_l20_n815
+end
+
+def fun_l19_n397()
+ fun_l20_n380
+end
+
+def fun_l19_n398()
+ fun_l20_n594
+end
+
+def fun_l19_n399()
+ fun_l20_n279
+end
+
+def fun_l19_n400()
+ fun_l20_n313
+end
+
+def fun_l19_n401()
+ fun_l20_n151
+end
+
+def fun_l19_n402()
+ fun_l20_n101
+end
+
+def fun_l19_n403()
+ fun_l20_n573
+end
+
+def fun_l19_n404()
+ fun_l20_n386
+end
+
+def fun_l19_n405()
+ fun_l20_n40
+end
+
+def fun_l19_n406()
+ fun_l20_n383
+end
+
+def fun_l19_n407()
+ fun_l20_n612
+end
+
+def fun_l19_n408()
+ fun_l20_n555
+end
+
+def fun_l19_n409()
+ fun_l20_n507
+end
+
+def fun_l19_n410()
+ fun_l20_n519
+end
+
+def fun_l19_n411()
+ fun_l20_n842
+end
+
+def fun_l19_n412()
+ fun_l20_n867
+end
+
+def fun_l19_n413()
+ fun_l20_n84
+end
+
+def fun_l19_n414()
+ fun_l20_n84
+end
+
+def fun_l19_n415()
+ fun_l20_n304
+end
+
+def fun_l19_n416()
+ fun_l20_n776
+end
+
+def fun_l19_n417()
+ fun_l20_n712
+end
+
+def fun_l19_n418()
+ fun_l20_n447
+end
+
+def fun_l19_n419()
+ fun_l20_n428
+end
+
+def fun_l19_n420()
+ fun_l20_n350
+end
+
+def fun_l19_n421()
+ fun_l20_n989
+end
+
+def fun_l19_n422()
+ fun_l20_n444
+end
+
+def fun_l19_n423()
+ fun_l20_n771
+end
+
+def fun_l19_n424()
+ fun_l20_n228
+end
+
+def fun_l19_n425()
+ fun_l20_n870
+end
+
+def fun_l19_n426()
+ fun_l20_n553
+end
+
+def fun_l19_n427()
+ fun_l20_n529
+end
+
+def fun_l19_n428()
+ fun_l20_n118
+end
+
+def fun_l19_n429()
+ fun_l20_n886
+end
+
+def fun_l19_n430()
+ fun_l20_n731
+end
+
+def fun_l19_n431()
+ fun_l20_n585
+end
+
+def fun_l19_n432()
+ fun_l20_n997
+end
+
+def fun_l19_n433()
+ fun_l20_n927
+end
+
+def fun_l19_n434()
+ fun_l20_n739
+end
+
+def fun_l19_n435()
+ fun_l20_n691
+end
+
+def fun_l19_n436()
+ fun_l20_n446
+end
+
+def fun_l19_n437()
+ fun_l20_n932
+end
+
+def fun_l19_n438()
+ fun_l20_n297
+end
+
+def fun_l19_n439()
+ fun_l20_n118
+end
+
+def fun_l19_n440()
+ fun_l20_n464
+end
+
+def fun_l19_n441()
+ fun_l20_n367
+end
+
+def fun_l19_n442()
+ fun_l20_n450
+end
+
+def fun_l19_n443()
+ fun_l20_n690
+end
+
+def fun_l19_n444()
+ fun_l20_n996
+end
+
+def fun_l19_n445()
+ fun_l20_n328
+end
+
+def fun_l19_n446()
+ fun_l20_n873
+end
+
+def fun_l19_n447()
+ fun_l20_n843
+end
+
+def fun_l19_n448()
+ fun_l20_n89
+end
+
+def fun_l19_n449()
+ fun_l20_n485
+end
+
+def fun_l19_n450()
+ fun_l20_n343
+end
+
+def fun_l19_n451()
+ fun_l20_n852
+end
+
+def fun_l19_n452()
+ fun_l20_n545
+end
+
+def fun_l19_n453()
+ fun_l20_n41
+end
+
+def fun_l19_n454()
+ fun_l20_n376
+end
+
+def fun_l19_n455()
+ fun_l20_n625
+end
+
+def fun_l19_n456()
+ fun_l20_n495
+end
+
+def fun_l19_n457()
+ fun_l20_n82
+end
+
+def fun_l19_n458()
+ fun_l20_n238
+end
+
+def fun_l19_n459()
+ fun_l20_n355
+end
+
+def fun_l19_n460()
+ fun_l20_n530
+end
+
+def fun_l19_n461()
+ fun_l20_n926
+end
+
+def fun_l19_n462()
+ fun_l20_n721
+end
+
+def fun_l19_n463()
+ fun_l20_n724
+end
+
+def fun_l19_n464()
+ fun_l20_n280
+end
+
+def fun_l19_n465()
+ fun_l20_n656
+end
+
+def fun_l19_n466()
+ fun_l20_n78
+end
+
+def fun_l19_n467()
+ fun_l20_n353
+end
+
+def fun_l19_n468()
+ fun_l20_n712
+end
+
+def fun_l19_n469()
+ fun_l20_n849
+end
+
+def fun_l19_n470()
+ fun_l20_n682
+end
+
+def fun_l19_n471()
+ fun_l20_n964
+end
+
+def fun_l19_n472()
+ fun_l20_n483
+end
+
+def fun_l19_n473()
+ fun_l20_n6
+end
+
+def fun_l19_n474()
+ fun_l20_n19
+end
+
+def fun_l19_n475()
+ fun_l20_n206
+end
+
+def fun_l19_n476()
+ fun_l20_n165
+end
+
+def fun_l19_n477()
+ fun_l20_n514
+end
+
+def fun_l19_n478()
+ fun_l20_n380
+end
+
+def fun_l19_n479()
+ fun_l20_n381
+end
+
+def fun_l19_n480()
+ fun_l20_n210
+end
+
+def fun_l19_n481()
+ fun_l20_n972
+end
+
+def fun_l19_n482()
+ fun_l20_n211
+end
+
+def fun_l19_n483()
+ fun_l20_n795
+end
+
+def fun_l19_n484()
+ fun_l20_n441
+end
+
+def fun_l19_n485()
+ fun_l20_n539
+end
+
+def fun_l19_n486()
+ fun_l20_n217
+end
+
+def fun_l19_n487()
+ fun_l20_n644
+end
+
+def fun_l19_n488()
+ fun_l20_n641
+end
+
+def fun_l19_n489()
+ fun_l20_n179
+end
+
+def fun_l19_n490()
+ fun_l20_n643
+end
+
+def fun_l19_n491()
+ fun_l20_n797
+end
+
+def fun_l19_n492()
+ fun_l20_n863
+end
+
+def fun_l19_n493()
+ fun_l20_n915
+end
+
+def fun_l19_n494()
+ fun_l20_n13
+end
+
+def fun_l19_n495()
+ fun_l20_n427
+end
+
+def fun_l19_n496()
+ fun_l20_n40
+end
+
+def fun_l19_n497()
+ fun_l20_n724
+end
+
+def fun_l19_n498()
+ fun_l20_n666
+end
+
+def fun_l19_n499()
+ fun_l20_n876
+end
+
+def fun_l19_n500()
+ fun_l20_n980
+end
+
+def fun_l19_n501()
+ fun_l20_n817
+end
+
+def fun_l19_n502()
+ fun_l20_n158
+end
+
+def fun_l19_n503()
+ fun_l20_n738
+end
+
+def fun_l19_n504()
+ fun_l20_n347
+end
+
+def fun_l19_n505()
+ fun_l20_n941
+end
+
+def fun_l19_n506()
+ fun_l20_n330
+end
+
+def fun_l19_n507()
+ fun_l20_n196
+end
+
+def fun_l19_n508()
+ fun_l20_n961
+end
+
+def fun_l19_n509()
+ fun_l20_n909
+end
+
+def fun_l19_n510()
+ fun_l20_n489
+end
+
+def fun_l19_n511()
+ fun_l20_n341
+end
+
+def fun_l19_n512()
+ fun_l20_n437
+end
+
+def fun_l19_n513()
+ fun_l20_n293
+end
+
+def fun_l19_n514()
+ fun_l20_n388
+end
+
+def fun_l19_n515()
+ fun_l20_n85
+end
+
+def fun_l19_n516()
+ fun_l20_n769
+end
+
+def fun_l19_n517()
+ fun_l20_n875
+end
+
+def fun_l19_n518()
+ fun_l20_n247
+end
+
+def fun_l19_n519()
+ fun_l20_n607
+end
+
+def fun_l19_n520()
+ fun_l20_n119
+end
+
+def fun_l19_n521()
+ fun_l20_n44
+end
+
+def fun_l19_n522()
+ fun_l20_n870
+end
+
+def fun_l19_n523()
+ fun_l20_n815
+end
+
+def fun_l19_n524()
+ fun_l20_n393
+end
+
+def fun_l19_n525()
+ fun_l20_n158
+end
+
+def fun_l19_n526()
+ fun_l20_n139
+end
+
+def fun_l19_n527()
+ fun_l20_n808
+end
+
+def fun_l19_n528()
+ fun_l20_n549
+end
+
+def fun_l19_n529()
+ fun_l20_n725
+end
+
+def fun_l19_n530()
+ fun_l20_n758
+end
+
+def fun_l19_n531()
+ fun_l20_n650
+end
+
+def fun_l19_n532()
+ fun_l20_n739
+end
+
+def fun_l19_n533()
+ fun_l20_n912
+end
+
+def fun_l19_n534()
+ fun_l20_n632
+end
+
+def fun_l19_n535()
+ fun_l20_n889
+end
+
+def fun_l19_n536()
+ fun_l20_n609
+end
+
+def fun_l19_n537()
+ fun_l20_n997
+end
+
+def fun_l19_n538()
+ fun_l20_n773
+end
+
+def fun_l19_n539()
+ fun_l20_n48
+end
+
+def fun_l19_n540()
+ fun_l20_n102
+end
+
+def fun_l19_n541()
+ fun_l20_n392
+end
+
+def fun_l19_n542()
+ fun_l20_n570
+end
+
+def fun_l19_n543()
+ fun_l20_n36
+end
+
+def fun_l19_n544()
+ fun_l20_n400
+end
+
+def fun_l19_n545()
+ fun_l20_n545
+end
+
+def fun_l19_n546()
+ fun_l20_n27
+end
+
+def fun_l19_n547()
+ fun_l20_n746
+end
+
+def fun_l19_n548()
+ fun_l20_n796
+end
+
+def fun_l19_n549()
+ fun_l20_n651
+end
+
+def fun_l19_n550()
+ fun_l20_n719
+end
+
+def fun_l19_n551()
+ fun_l20_n941
+end
+
+def fun_l19_n552()
+ fun_l20_n799
+end
+
+def fun_l19_n553()
+ fun_l20_n900
+end
+
+def fun_l19_n554()
+ fun_l20_n288
+end
+
+def fun_l19_n555()
+ fun_l20_n52
+end
+
+def fun_l19_n556()
+ fun_l20_n497
+end
+
+def fun_l19_n557()
+ fun_l20_n781
+end
+
+def fun_l19_n558()
+ fun_l20_n209
+end
+
+def fun_l19_n559()
+ fun_l20_n157
+end
+
+def fun_l19_n560()
+ fun_l20_n102
+end
+
+def fun_l19_n561()
+ fun_l20_n248
+end
+
+def fun_l19_n562()
+ fun_l20_n760
+end
+
+def fun_l19_n563()
+ fun_l20_n640
+end
+
+def fun_l19_n564()
+ fun_l20_n30
+end
+
+def fun_l19_n565()
+ fun_l20_n375
+end
+
+def fun_l19_n566()
+ fun_l20_n472
+end
+
+def fun_l19_n567()
+ fun_l20_n223
+end
+
+def fun_l19_n568()
+ fun_l20_n834
+end
+
+def fun_l19_n569()
+ fun_l20_n804
+end
+
+def fun_l19_n570()
+ fun_l20_n620
+end
+
+def fun_l19_n571()
+ fun_l20_n942
+end
+
+def fun_l19_n572()
+ fun_l20_n58
+end
+
+def fun_l19_n573()
+ fun_l20_n113
+end
+
+def fun_l19_n574()
+ fun_l20_n884
+end
+
+def fun_l19_n575()
+ fun_l20_n965
+end
+
+def fun_l19_n576()
+ fun_l20_n975
+end
+
+def fun_l19_n577()
+ fun_l20_n840
+end
+
+def fun_l19_n578()
+ fun_l20_n422
+end
+
+def fun_l19_n579()
+ fun_l20_n213
+end
+
+def fun_l19_n580()
+ fun_l20_n338
+end
+
+def fun_l19_n581()
+ fun_l20_n823
+end
+
+def fun_l19_n582()
+ fun_l20_n284
+end
+
+def fun_l19_n583()
+ fun_l20_n706
+end
+
+def fun_l19_n584()
+ fun_l20_n148
+end
+
+def fun_l19_n585()
+ fun_l20_n750
+end
+
+def fun_l19_n586()
+ fun_l20_n556
+end
+
+def fun_l19_n587()
+ fun_l20_n939
+end
+
+def fun_l19_n588()
+ fun_l20_n885
+end
+
+def fun_l19_n589()
+ fun_l20_n36
+end
+
+def fun_l19_n590()
+ fun_l20_n771
+end
+
+def fun_l19_n591()
+ fun_l20_n958
+end
+
+def fun_l19_n592()
+ fun_l20_n829
+end
+
+def fun_l19_n593()
+ fun_l20_n334
+end
+
+def fun_l19_n594()
+ fun_l20_n546
+end
+
+def fun_l19_n595()
+ fun_l20_n269
+end
+
+def fun_l19_n596()
+ fun_l20_n528
+end
+
+def fun_l19_n597()
+ fun_l20_n63
+end
+
+def fun_l19_n598()
+ fun_l20_n10
+end
+
+def fun_l19_n599()
+ fun_l20_n160
+end
+
+def fun_l19_n600()
+ fun_l20_n750
+end
+
+def fun_l19_n601()
+ fun_l20_n307
+end
+
+def fun_l19_n602()
+ fun_l20_n700
+end
+
+def fun_l19_n603()
+ fun_l20_n720
+end
+
+def fun_l19_n604()
+ fun_l20_n60
+end
+
+def fun_l19_n605()
+ fun_l20_n179
+end
+
+def fun_l19_n606()
+ fun_l20_n425
+end
+
+def fun_l19_n607()
+ fun_l20_n489
+end
+
+def fun_l19_n608()
+ fun_l20_n804
+end
+
+def fun_l19_n609()
+ fun_l20_n276
+end
+
+def fun_l19_n610()
+ fun_l20_n888
+end
+
+def fun_l19_n611()
+ fun_l20_n412
+end
+
+def fun_l19_n612()
+ fun_l20_n715
+end
+
+def fun_l19_n613()
+ fun_l20_n737
+end
+
+def fun_l19_n614()
+ fun_l20_n332
+end
+
+def fun_l19_n615()
+ fun_l20_n4
+end
+
+def fun_l19_n616()
+ fun_l20_n114
+end
+
+def fun_l19_n617()
+ fun_l20_n502
+end
+
+def fun_l19_n618()
+ fun_l20_n825
+end
+
+def fun_l19_n619()
+ fun_l20_n606
+end
+
+def fun_l19_n620()
+ fun_l20_n396
+end
+
+def fun_l19_n621()
+ fun_l20_n810
+end
+
+def fun_l19_n622()
+ fun_l20_n158
+end
+
+def fun_l19_n623()
+ fun_l20_n246
+end
+
+def fun_l19_n624()
+ fun_l20_n973
+end
+
+def fun_l19_n625()
+ fun_l20_n603
+end
+
+def fun_l19_n626()
+ fun_l20_n192
+end
+
+def fun_l19_n627()
+ fun_l20_n744
+end
+
+def fun_l19_n628()
+ fun_l20_n82
+end
+
+def fun_l19_n629()
+ fun_l20_n491
+end
+
+def fun_l19_n630()
+ fun_l20_n576
+end
+
+def fun_l19_n631()
+ fun_l20_n824
+end
+
+def fun_l19_n632()
+ fun_l20_n711
+end
+
+def fun_l19_n633()
+ fun_l20_n989
+end
+
+def fun_l19_n634()
+ fun_l20_n392
+end
+
+def fun_l19_n635()
+ fun_l20_n39
+end
+
+def fun_l19_n636()
+ fun_l20_n755
+end
+
+def fun_l19_n637()
+ fun_l20_n181
+end
+
+def fun_l19_n638()
+ fun_l20_n538
+end
+
+def fun_l19_n639()
+ fun_l20_n801
+end
+
+def fun_l19_n640()
+ fun_l20_n837
+end
+
+def fun_l19_n641()
+ fun_l20_n587
+end
+
+def fun_l19_n642()
+ fun_l20_n680
+end
+
+def fun_l19_n643()
+ fun_l20_n157
+end
+
+def fun_l19_n644()
+ fun_l20_n885
+end
+
+def fun_l19_n645()
+ fun_l20_n421
+end
+
+def fun_l19_n646()
+ fun_l20_n928
+end
+
+def fun_l19_n647()
+ fun_l20_n819
+end
+
+def fun_l19_n648()
+ fun_l20_n206
+end
+
+def fun_l19_n649()
+ fun_l20_n496
+end
+
+def fun_l19_n650()
+ fun_l20_n706
+end
+
+def fun_l19_n651()
+ fun_l20_n976
+end
+
+def fun_l19_n652()
+ fun_l20_n54
+end
+
+def fun_l19_n653()
+ fun_l20_n530
+end
+
+def fun_l19_n654()
+ fun_l20_n893
+end
+
+def fun_l19_n655()
+ fun_l20_n148
+end
+
+def fun_l19_n656()
+ fun_l20_n461
+end
+
+def fun_l19_n657()
+ fun_l20_n286
+end
+
+def fun_l19_n658()
+ fun_l20_n214
+end
+
+def fun_l19_n659()
+ fun_l20_n818
+end
+
+def fun_l19_n660()
+ fun_l20_n685
+end
+
+def fun_l19_n661()
+ fun_l20_n497
+end
+
+def fun_l19_n662()
+ fun_l20_n251
+end
+
+def fun_l19_n663()
+ fun_l20_n385
+end
+
+def fun_l19_n664()
+ fun_l20_n93
+end
+
+def fun_l19_n665()
+ fun_l20_n853
+end
+
+def fun_l19_n666()
+ fun_l20_n298
+end
+
+def fun_l19_n667()
+ fun_l20_n300
+end
+
+def fun_l19_n668()
+ fun_l20_n702
+end
+
+def fun_l19_n669()
+ fun_l20_n430
+end
+
+def fun_l19_n670()
+ fun_l20_n688
+end
+
+def fun_l19_n671()
+ fun_l20_n272
+end
+
+def fun_l19_n672()
+ fun_l20_n351
+end
+
+def fun_l19_n673()
+ fun_l20_n290
+end
+
+def fun_l19_n674()
+ fun_l20_n45
+end
+
+def fun_l19_n675()
+ fun_l20_n530
+end
+
+def fun_l19_n676()
+ fun_l20_n477
+end
+
+def fun_l19_n677()
+ fun_l20_n770
+end
+
+def fun_l19_n678()
+ fun_l20_n49
+end
+
+def fun_l19_n679()
+ fun_l20_n404
+end
+
+def fun_l19_n680()
+ fun_l20_n344
+end
+
+def fun_l19_n681()
+ fun_l20_n707
+end
+
+def fun_l19_n682()
+ fun_l20_n18
+end
+
+def fun_l19_n683()
+ fun_l20_n590
+end
+
+def fun_l19_n684()
+ fun_l20_n281
+end
+
+def fun_l19_n685()
+ fun_l20_n913
+end
+
+def fun_l19_n686()
+ fun_l20_n884
+end
+
+def fun_l19_n687()
+ fun_l20_n696
+end
+
+def fun_l19_n688()
+ fun_l20_n727
+end
+
+def fun_l19_n689()
+ fun_l20_n168
+end
+
+def fun_l19_n690()
+ fun_l20_n178
+end
+
+def fun_l19_n691()
+ fun_l20_n414
+end
+
+def fun_l19_n692()
+ fun_l20_n331
+end
+
+def fun_l19_n693()
+ fun_l20_n701
+end
+
+def fun_l19_n694()
+ fun_l20_n795
+end
+
+def fun_l19_n695()
+ fun_l20_n413
+end
+
+def fun_l19_n696()
+ fun_l20_n613
+end
+
+def fun_l19_n697()
+ fun_l20_n129
+end
+
+def fun_l19_n698()
+ fun_l20_n162
+end
+
+def fun_l19_n699()
+ fun_l20_n24
+end
+
+def fun_l19_n700()
+ fun_l20_n497
+end
+
+def fun_l19_n701()
+ fun_l20_n850
+end
+
+def fun_l19_n702()
+ fun_l20_n28
+end
+
+def fun_l19_n703()
+ fun_l20_n571
+end
+
+def fun_l19_n704()
+ fun_l20_n77
+end
+
+def fun_l19_n705()
+ fun_l20_n705
+end
+
+def fun_l19_n706()
+ fun_l20_n473
+end
+
+def fun_l19_n707()
+ fun_l20_n993
+end
+
+def fun_l19_n708()
+ fun_l20_n51
+end
+
+def fun_l19_n709()
+ fun_l20_n921
+end
+
+def fun_l19_n710()
+ fun_l20_n773
+end
+
+def fun_l19_n711()
+ fun_l20_n137
+end
+
+def fun_l19_n712()
+ fun_l20_n127
+end
+
+def fun_l19_n713()
+ fun_l20_n714
+end
+
+def fun_l19_n714()
+ fun_l20_n76
+end
+
+def fun_l19_n715()
+ fun_l20_n909
+end
+
+def fun_l19_n716()
+ fun_l20_n206
+end
+
+def fun_l19_n717()
+ fun_l20_n37
+end
+
+def fun_l19_n718()
+ fun_l20_n121
+end
+
+def fun_l19_n719()
+ fun_l20_n438
+end
+
+def fun_l19_n720()
+ fun_l20_n42
+end
+
+def fun_l19_n721()
+ fun_l20_n743
+end
+
+def fun_l19_n722()
+ fun_l20_n730
+end
+
+def fun_l19_n723()
+ fun_l20_n190
+end
+
+def fun_l19_n724()
+ fun_l20_n817
+end
+
+def fun_l19_n725()
+ fun_l20_n119
+end
+
+def fun_l19_n726()
+ fun_l20_n201
+end
+
+def fun_l19_n727()
+ fun_l20_n9
+end
+
+def fun_l19_n728()
+ fun_l20_n666
+end
+
+def fun_l19_n729()
+ fun_l20_n595
+end
+
+def fun_l19_n730()
+ fun_l20_n285
+end
+
+def fun_l19_n731()
+ fun_l20_n586
+end
+
+def fun_l19_n732()
+ fun_l20_n228
+end
+
+def fun_l19_n733()
+ fun_l20_n663
+end
+
+def fun_l19_n734()
+ fun_l20_n810
+end
+
+def fun_l19_n735()
+ fun_l20_n348
+end
+
+def fun_l19_n736()
+ fun_l20_n316
+end
+
+def fun_l19_n737()
+ fun_l20_n140
+end
+
+def fun_l19_n738()
+ fun_l20_n668
+end
+
+def fun_l19_n739()
+ fun_l20_n956
+end
+
+def fun_l19_n740()
+ fun_l20_n252
+end
+
+def fun_l19_n741()
+ fun_l20_n490
+end
+
+def fun_l19_n742()
+ fun_l20_n6
+end
+
+def fun_l19_n743()
+ fun_l20_n389
+end
+
+def fun_l19_n744()
+ fun_l20_n939
+end
+
+def fun_l19_n745()
+ fun_l20_n152
+end
+
+def fun_l19_n746()
+ fun_l20_n895
+end
+
+def fun_l19_n747()
+ fun_l20_n769
+end
+
+def fun_l19_n748()
+ fun_l20_n100
+end
+
+def fun_l19_n749()
+ fun_l20_n492
+end
+
+def fun_l19_n750()
+ fun_l20_n410
+end
+
+def fun_l19_n751()
+ fun_l20_n514
+end
+
+def fun_l19_n752()
+ fun_l20_n801
+end
+
+def fun_l19_n753()
+ fun_l20_n148
+end
+
+def fun_l19_n754()
+ fun_l20_n179
+end
+
+def fun_l19_n755()
+ fun_l20_n35
+end
+
+def fun_l19_n756()
+ fun_l20_n60
+end
+
+def fun_l19_n757()
+ fun_l20_n247
+end
+
+def fun_l19_n758()
+ fun_l20_n783
+end
+
+def fun_l19_n759()
+ fun_l20_n357
+end
+
+def fun_l19_n760()
+ fun_l20_n245
+end
+
+def fun_l19_n761()
+ fun_l20_n26
+end
+
+def fun_l19_n762()
+ fun_l20_n77
+end
+
+def fun_l19_n763()
+ fun_l20_n886
+end
+
+def fun_l19_n764()
+ fun_l20_n375
+end
+
+def fun_l19_n765()
+ fun_l20_n238
+end
+
+def fun_l19_n766()
+ fun_l20_n444
+end
+
+def fun_l19_n767()
+ fun_l20_n665
+end
+
+def fun_l19_n768()
+ fun_l20_n328
+end
+
+def fun_l19_n769()
+ fun_l20_n598
+end
+
+def fun_l19_n770()
+ fun_l20_n988
+end
+
+def fun_l19_n771()
+ fun_l20_n350
+end
+
+def fun_l19_n772()
+ fun_l20_n474
+end
+
+def fun_l19_n773()
+ fun_l20_n460
+end
+
+def fun_l19_n774()
+ fun_l20_n535
+end
+
+def fun_l19_n775()
+ fun_l20_n451
+end
+
+def fun_l19_n776()
+ fun_l20_n945
+end
+
+def fun_l19_n777()
+ fun_l20_n902
+end
+
+def fun_l19_n778()
+ fun_l20_n714
+end
+
+def fun_l19_n779()
+ fun_l20_n5
+end
+
+def fun_l19_n780()
+ fun_l20_n32
+end
+
+def fun_l19_n781()
+ fun_l20_n99
+end
+
+def fun_l19_n782()
+ fun_l20_n931
+end
+
+def fun_l19_n783()
+ fun_l20_n664
+end
+
+def fun_l19_n784()
+ fun_l20_n676
+end
+
+def fun_l19_n785()
+ fun_l20_n671
+end
+
+def fun_l19_n786()
+ fun_l20_n982
+end
+
+def fun_l19_n787()
+ fun_l20_n754
+end
+
+def fun_l19_n788()
+ fun_l20_n945
+end
+
+def fun_l19_n789()
+ fun_l20_n130
+end
+
+def fun_l19_n790()
+ fun_l20_n390
+end
+
+def fun_l19_n791()
+ fun_l20_n999
+end
+
+def fun_l19_n792()
+ fun_l20_n138
+end
+
+def fun_l19_n793()
+ fun_l20_n180
+end
+
+def fun_l19_n794()
+ fun_l20_n897
+end
+
+def fun_l19_n795()
+ fun_l20_n85
+end
+
+def fun_l19_n796()
+ fun_l20_n295
+end
+
+def fun_l19_n797()
+ fun_l20_n577
+end
+
+def fun_l19_n798()
+ fun_l20_n131
+end
+
+def fun_l19_n799()
+ fun_l20_n847
+end
+
+def fun_l19_n800()
+ fun_l20_n703
+end
+
+def fun_l19_n801()
+ fun_l20_n82
+end
+
+def fun_l19_n802()
+ fun_l20_n758
+end
+
+def fun_l19_n803()
+ fun_l20_n789
+end
+
+def fun_l19_n804()
+ fun_l20_n353
+end
+
+def fun_l19_n805()
+ fun_l20_n957
+end
+
+def fun_l19_n806()
+ fun_l20_n135
+end
+
+def fun_l19_n807()
+ fun_l20_n87
+end
+
+def fun_l19_n808()
+ fun_l20_n428
+end
+
+def fun_l19_n809()
+ fun_l20_n660
+end
+
+def fun_l19_n810()
+ fun_l20_n844
+end
+
+def fun_l19_n811()
+ fun_l20_n816
+end
+
+def fun_l19_n812()
+ fun_l20_n478
+end
+
+def fun_l19_n813()
+ fun_l20_n823
+end
+
+def fun_l19_n814()
+ fun_l20_n28
+end
+
+def fun_l19_n815()
+ fun_l20_n965
+end
+
+def fun_l19_n816()
+ fun_l20_n469
+end
+
+def fun_l19_n817()
+ fun_l20_n31
+end
+
+def fun_l19_n818()
+ fun_l20_n639
+end
+
+def fun_l19_n819()
+ fun_l20_n831
+end
+
+def fun_l19_n820()
+ fun_l20_n337
+end
+
+def fun_l19_n821()
+ fun_l20_n330
+end
+
+def fun_l19_n822()
+ fun_l20_n366
+end
+
+def fun_l19_n823()
+ fun_l20_n992
+end
+
+def fun_l19_n824()
+ fun_l20_n349
+end
+
+def fun_l19_n825()
+ fun_l20_n291
+end
+
+def fun_l19_n826()
+ fun_l20_n110
+end
+
+def fun_l19_n827()
+ fun_l20_n204
+end
+
+def fun_l19_n828()
+ fun_l20_n122
+end
+
+def fun_l19_n829()
+ fun_l20_n683
+end
+
+def fun_l19_n830()
+ fun_l20_n759
+end
+
+def fun_l19_n831()
+ fun_l20_n619
+end
+
+def fun_l19_n832()
+ fun_l20_n102
+end
+
+def fun_l19_n833()
+ fun_l20_n532
+end
+
+def fun_l19_n834()
+ fun_l20_n620
+end
+
+def fun_l19_n835()
+ fun_l20_n511
+end
+
+def fun_l19_n836()
+ fun_l20_n80
+end
+
+def fun_l19_n837()
+ fun_l20_n731
+end
+
+def fun_l19_n838()
+ fun_l20_n975
+end
+
+def fun_l19_n839()
+ fun_l20_n947
+end
+
+def fun_l19_n840()
+ fun_l20_n243
+end
+
+def fun_l19_n841()
+ fun_l20_n168
+end
+
+def fun_l19_n842()
+ fun_l20_n31
+end
+
+def fun_l19_n843()
+ fun_l20_n979
+end
+
+def fun_l19_n844()
+ fun_l20_n232
+end
+
+def fun_l19_n845()
+ fun_l20_n596
+end
+
+def fun_l19_n846()
+ fun_l20_n415
+end
+
+def fun_l19_n847()
+ fun_l20_n380
+end
+
+def fun_l19_n848()
+ fun_l20_n904
+end
+
+def fun_l19_n849()
+ fun_l20_n858
+end
+
+def fun_l19_n850()
+ fun_l20_n70
+end
+
+def fun_l19_n851()
+ fun_l20_n204
+end
+
+def fun_l19_n852()
+ fun_l20_n501
+end
+
+def fun_l19_n853()
+ fun_l20_n901
+end
+
+def fun_l19_n854()
+ fun_l20_n107
+end
+
+def fun_l19_n855()
+ fun_l20_n391
+end
+
+def fun_l19_n856()
+ fun_l20_n225
+end
+
+def fun_l19_n857()
+ fun_l20_n173
+end
+
+def fun_l19_n858()
+ fun_l20_n143
+end
+
+def fun_l19_n859()
+ fun_l20_n482
+end
+
+def fun_l19_n860()
+ fun_l20_n614
+end
+
+def fun_l19_n861()
+ fun_l20_n819
+end
+
+def fun_l19_n862()
+ fun_l20_n536
+end
+
+def fun_l19_n863()
+ fun_l20_n370
+end
+
+def fun_l19_n864()
+ fun_l20_n139
+end
+
+def fun_l19_n865()
+ fun_l20_n434
+end
+
+def fun_l19_n866()
+ fun_l20_n529
+end
+
+def fun_l19_n867()
+ fun_l20_n770
+end
+
+def fun_l19_n868()
+ fun_l20_n507
+end
+
+def fun_l19_n869()
+ fun_l20_n453
+end
+
+def fun_l19_n870()
+ fun_l20_n417
+end
+
+def fun_l19_n871()
+ fun_l20_n305
+end
+
+def fun_l19_n872()
+ fun_l20_n537
+end
+
+def fun_l19_n873()
+ fun_l20_n613
+end
+
+def fun_l19_n874()
+ fun_l20_n920
+end
+
+def fun_l19_n875()
+ fun_l20_n623
+end
+
+def fun_l19_n876()
+ fun_l20_n212
+end
+
+def fun_l19_n877()
+ fun_l20_n980
+end
+
+def fun_l19_n878()
+ fun_l20_n580
+end
+
+def fun_l19_n879()
+ fun_l20_n112
+end
+
+def fun_l19_n880()
+ fun_l20_n460
+end
+
+def fun_l19_n881()
+ fun_l20_n364
+end
+
+def fun_l19_n882()
+ fun_l20_n685
+end
+
+def fun_l19_n883()
+ fun_l20_n429
+end
+
+def fun_l19_n884()
+ fun_l20_n90
+end
+
+def fun_l19_n885()
+ fun_l20_n448
+end
+
+def fun_l19_n886()
+ fun_l20_n898
+end
+
+def fun_l19_n887()
+ fun_l20_n10
+end
+
+def fun_l19_n888()
+ fun_l20_n618
+end
+
+def fun_l19_n889()
+ fun_l20_n447
+end
+
+def fun_l19_n890()
+ fun_l20_n414
+end
+
+def fun_l19_n891()
+ fun_l20_n570
+end
+
+def fun_l19_n892()
+ fun_l20_n828
+end
+
+def fun_l19_n893()
+ fun_l20_n367
+end
+
+def fun_l19_n894()
+ fun_l20_n897
+end
+
+def fun_l19_n895()
+ fun_l20_n978
+end
+
+def fun_l19_n896()
+ fun_l20_n57
+end
+
+def fun_l19_n897()
+ fun_l20_n61
+end
+
+def fun_l19_n898()
+ fun_l20_n483
+end
+
+def fun_l19_n899()
+ fun_l20_n407
+end
+
+def fun_l19_n900()
+ fun_l20_n369
+end
+
+def fun_l19_n901()
+ fun_l20_n635
+end
+
+def fun_l19_n902()
+ fun_l20_n800
+end
+
+def fun_l19_n903()
+ fun_l20_n748
+end
+
+def fun_l19_n904()
+ fun_l20_n436
+end
+
+def fun_l19_n905()
+ fun_l20_n990
+end
+
+def fun_l19_n906()
+ fun_l20_n484
+end
+
+def fun_l19_n907()
+ fun_l20_n530
+end
+
+def fun_l19_n908()
+ fun_l20_n692
+end
+
+def fun_l19_n909()
+ fun_l20_n356
+end
+
+def fun_l19_n910()
+ fun_l20_n786
+end
+
+def fun_l19_n911()
+ fun_l20_n894
+end
+
+def fun_l19_n912()
+ fun_l20_n217
+end
+
+def fun_l19_n913()
+ fun_l20_n495
+end
+
+def fun_l19_n914()
+ fun_l20_n878
+end
+
+def fun_l19_n915()
+ fun_l20_n166
+end
+
+def fun_l19_n916()
+ fun_l20_n558
+end
+
+def fun_l19_n917()
+ fun_l20_n704
+end
+
+def fun_l19_n918()
+ fun_l20_n996
+end
+
+def fun_l19_n919()
+ fun_l20_n302
+end
+
+def fun_l19_n920()
+ fun_l20_n44
+end
+
+def fun_l19_n921()
+ fun_l20_n694
+end
+
+def fun_l19_n922()
+ fun_l20_n221
+end
+
+def fun_l19_n923()
+ fun_l20_n419
+end
+
+def fun_l19_n924()
+ fun_l20_n400
+end
+
+def fun_l19_n925()
+ fun_l20_n306
+end
+
+def fun_l19_n926()
+ fun_l20_n785
+end
+
+def fun_l19_n927()
+ fun_l20_n851
+end
+
+def fun_l19_n928()
+ fun_l20_n769
+end
+
+def fun_l19_n929()
+ fun_l20_n547
+end
+
+def fun_l19_n930()
+ fun_l20_n887
+end
+
+def fun_l19_n931()
+ fun_l20_n413
+end
+
+def fun_l19_n932()
+ fun_l20_n253
+end
+
+def fun_l19_n933()
+ fun_l20_n37
+end
+
+def fun_l19_n934()
+ fun_l20_n405
+end
+
+def fun_l19_n935()
+ fun_l20_n926
+end
+
+def fun_l19_n936()
+ fun_l20_n864
+end
+
+def fun_l19_n937()
+ fun_l20_n231
+end
+
+def fun_l19_n938()
+ fun_l20_n688
+end
+
+def fun_l19_n939()
+ fun_l20_n144
+end
+
+def fun_l19_n940()
+ fun_l20_n606
+end
+
+def fun_l19_n941()
+ fun_l20_n180
+end
+
+def fun_l19_n942()
+ fun_l20_n103
+end
+
+def fun_l19_n943()
+ fun_l20_n314
+end
+
+def fun_l19_n944()
+ fun_l20_n966
+end
+
+def fun_l19_n945()
+ fun_l20_n15
+end
+
+def fun_l19_n946()
+ fun_l20_n343
+end
+
+def fun_l19_n947()
+ fun_l20_n388
+end
+
+def fun_l19_n948()
+ fun_l20_n868
+end
+
+def fun_l19_n949()
+ fun_l20_n939
+end
+
+def fun_l19_n950()
+ fun_l20_n364
+end
+
+def fun_l19_n951()
+ fun_l20_n739
+end
+
+def fun_l19_n952()
+ fun_l20_n725
+end
+
+def fun_l19_n953()
+ fun_l20_n463
+end
+
+def fun_l19_n954()
+ fun_l20_n737
+end
+
+def fun_l19_n955()
+ fun_l20_n83
+end
+
+def fun_l19_n956()
+ fun_l20_n807
+end
+
+def fun_l19_n957()
+ fun_l20_n710
+end
+
+def fun_l19_n958()
+ fun_l20_n48
+end
+
+def fun_l19_n959()
+ fun_l20_n82
+end
+
+def fun_l19_n960()
+ fun_l20_n330
+end
+
+def fun_l19_n961()
+ fun_l20_n378
+end
+
+def fun_l19_n962()
+ fun_l20_n35
+end
+
+def fun_l19_n963()
+ fun_l20_n191
+end
+
+def fun_l19_n964()
+ fun_l20_n282
+end
+
+def fun_l19_n965()
+ fun_l20_n222
+end
+
+def fun_l19_n966()
+ fun_l20_n416
+end
+
+def fun_l19_n967()
+ fun_l20_n304
+end
+
+def fun_l19_n968()
+ fun_l20_n325
+end
+
+def fun_l19_n969()
+ fun_l20_n374
+end
+
+def fun_l19_n970()
+ fun_l20_n25
+end
+
+def fun_l19_n971()
+ fun_l20_n815
+end
+
+def fun_l19_n972()
+ fun_l20_n272
+end
+
+def fun_l19_n973()
+ fun_l20_n57
+end
+
+def fun_l19_n974()
+ fun_l20_n567
+end
+
+def fun_l19_n975()
+ fun_l20_n995
+end
+
+def fun_l19_n976()
+ fun_l20_n390
+end
+
+def fun_l19_n977()
+ fun_l20_n706
+end
+
+def fun_l19_n978()
+ fun_l20_n496
+end
+
+def fun_l19_n979()
+ fun_l20_n685
+end
+
+def fun_l19_n980()
+ fun_l20_n277
+end
+
+def fun_l19_n981()
+ fun_l20_n933
+end
+
+def fun_l19_n982()
+ fun_l20_n958
+end
+
+def fun_l19_n983()
+ fun_l20_n9
+end
+
+def fun_l19_n984()
+ fun_l20_n455
+end
+
+def fun_l19_n985()
+ fun_l20_n824
+end
+
+def fun_l19_n986()
+ fun_l20_n855
+end
+
+def fun_l19_n987()
+ fun_l20_n561
+end
+
+def fun_l19_n988()
+ fun_l20_n66
+end
+
+def fun_l19_n989()
+ fun_l20_n836
+end
+
+def fun_l19_n990()
+ fun_l20_n466
+end
+
+def fun_l19_n991()
+ fun_l20_n902
+end
+
+def fun_l19_n992()
+ fun_l20_n196
+end
+
+def fun_l19_n993()
+ fun_l20_n488
+end
+
+def fun_l19_n994()
+ fun_l20_n490
+end
+
+def fun_l19_n995()
+ fun_l20_n463
+end
+
+def fun_l19_n996()
+ fun_l20_n222
+end
+
+def fun_l19_n997()
+ fun_l20_n935
+end
+
+def fun_l19_n998()
+ fun_l20_n664
+end
+
+def fun_l19_n999()
+ fun_l20_n44
+end
+
+def fun_l20_n0()
+ fun_l21_n583
+end
+
+def fun_l20_n1()
+ fun_l21_n600
+end
+
+def fun_l20_n2()
+ fun_l21_n308
+end
+
+def fun_l20_n3()
+ fun_l21_n395
+end
+
+def fun_l20_n4()
+ fun_l21_n468
+end
+
+def fun_l20_n5()
+ fun_l21_n340
+end
+
+def fun_l20_n6()
+ fun_l21_n647
+end
+
+def fun_l20_n7()
+ fun_l21_n53
+end
+
+def fun_l20_n8()
+ fun_l21_n231
+end
+
+def fun_l20_n9()
+ fun_l21_n965
+end
+
+def fun_l20_n10()
+ fun_l21_n82
+end
+
+def fun_l20_n11()
+ fun_l21_n464
+end
+
+def fun_l20_n12()
+ fun_l21_n694
+end
+
+def fun_l20_n13()
+ fun_l21_n398
+end
+
+def fun_l20_n14()
+ fun_l21_n197
+end
+
+def fun_l20_n15()
+ fun_l21_n447
+end
+
+def fun_l20_n16()
+ fun_l21_n976
+end
+
+def fun_l20_n17()
+ fun_l21_n421
+end
+
+def fun_l20_n18()
+ fun_l21_n163
+end
+
+def fun_l20_n19()
+ fun_l21_n467
+end
+
+def fun_l20_n20()
+ fun_l21_n210
+end
+
+def fun_l20_n21()
+ fun_l21_n837
+end
+
+def fun_l20_n22()
+ fun_l21_n257
+end
+
+def fun_l20_n23()
+ fun_l21_n818
+end
+
+def fun_l20_n24()
+ fun_l21_n585
+end
+
+def fun_l20_n25()
+ fun_l21_n125
+end
+
+def fun_l20_n26()
+ fun_l21_n740
+end
+
+def fun_l20_n27()
+ fun_l21_n771
+end
+
+def fun_l20_n28()
+ fun_l21_n559
+end
+
+def fun_l20_n29()
+ fun_l21_n591
+end
+
+def fun_l20_n30()
+ fun_l21_n37
+end
+
+def fun_l20_n31()
+ fun_l21_n796
+end
+
+def fun_l20_n32()
+ fun_l21_n762
+end
+
+def fun_l20_n33()
+ fun_l21_n26
+end
+
+def fun_l20_n34()
+ fun_l21_n70
+end
+
+def fun_l20_n35()
+ fun_l21_n789
+end
+
+def fun_l20_n36()
+ fun_l21_n389
+end
+
+def fun_l20_n37()
+ fun_l21_n769
+end
+
+def fun_l20_n38()
+ fun_l21_n296
+end
+
+def fun_l20_n39()
+ fun_l21_n131
+end
+
+def fun_l20_n40()
+ fun_l21_n405
+end
+
+def fun_l20_n41()
+ fun_l21_n546
+end
+
+def fun_l20_n42()
+ fun_l21_n232
+end
+
+def fun_l20_n43()
+ fun_l21_n538
+end
+
+def fun_l20_n44()
+ fun_l21_n55
+end
+
+def fun_l20_n45()
+ fun_l21_n962
+end
+
+def fun_l20_n46()
+ fun_l21_n664
+end
+
+def fun_l20_n47()
+ fun_l21_n443
+end
+
+def fun_l20_n48()
+ fun_l21_n854
+end
+
+def fun_l20_n49()
+ fun_l21_n392
+end
+
+def fun_l20_n50()
+ fun_l21_n699
+end
+
+def fun_l20_n51()
+ fun_l21_n748
+end
+
+def fun_l20_n52()
+ fun_l21_n891
+end
+
+def fun_l20_n53()
+ fun_l21_n411
+end
+
+def fun_l20_n54()
+ fun_l21_n798
+end
+
+def fun_l20_n55()
+ fun_l21_n99
+end
+
+def fun_l20_n56()
+ fun_l21_n538
+end
+
+def fun_l20_n57()
+ fun_l21_n473
+end
+
+def fun_l20_n58()
+ fun_l21_n498
+end
+
+def fun_l20_n59()
+ fun_l21_n769
+end
+
+def fun_l20_n60()
+ fun_l21_n117
+end
+
+def fun_l20_n61()
+ fun_l21_n487
+end
+
+def fun_l20_n62()
+ fun_l21_n538
+end
+
+def fun_l20_n63()
+ fun_l21_n312
+end
+
+def fun_l20_n64()
+ fun_l21_n642
+end
+
+def fun_l20_n65()
+ fun_l21_n877
+end
+
+def fun_l20_n66()
+ fun_l21_n481
+end
+
+def fun_l20_n67()
+ fun_l21_n252
+end
+
+def fun_l20_n68()
+ fun_l21_n367
+end
+
+def fun_l20_n69()
+ fun_l21_n438
+end
+
+def fun_l20_n70()
+ fun_l21_n811
+end
+
+def fun_l20_n71()
+ fun_l21_n807
+end
+
+def fun_l20_n72()
+ fun_l21_n410
+end
+
+def fun_l20_n73()
+ fun_l21_n590
+end
+
+def fun_l20_n74()
+ fun_l21_n963
+end
+
+def fun_l20_n75()
+ fun_l21_n103
+end
+
+def fun_l20_n76()
+ fun_l21_n786
+end
+
+def fun_l20_n77()
+ fun_l21_n256
+end
+
+def fun_l20_n78()
+ fun_l21_n306
+end
+
+def fun_l20_n79()
+ fun_l21_n248
+end
+
+def fun_l20_n80()
+ fun_l21_n931
+end
+
+def fun_l20_n81()
+ fun_l21_n926
+end
+
+def fun_l20_n82()
+ fun_l21_n702
+end
+
+def fun_l20_n83()
+ fun_l21_n611
+end
+
+def fun_l20_n84()
+ fun_l21_n279
+end
+
+def fun_l20_n85()
+ fun_l21_n977
+end
+
+def fun_l20_n86()
+ fun_l21_n239
+end
+
+def fun_l20_n87()
+ fun_l21_n370
+end
+
+def fun_l20_n88()
+ fun_l21_n652
+end
+
+def fun_l20_n89()
+ fun_l21_n956
+end
+
+def fun_l20_n90()
+ fun_l21_n998
+end
+
+def fun_l20_n91()
+ fun_l21_n523
+end
+
+def fun_l20_n92()
+ fun_l21_n376
+end
+
+def fun_l20_n93()
+ fun_l21_n604
+end
+
+def fun_l20_n94()
+ fun_l21_n908
+end
+
+def fun_l20_n95()
+ fun_l21_n716
+end
+
+def fun_l20_n96()
+ fun_l21_n9
+end
+
+def fun_l20_n97()
+ fun_l21_n571
+end
+
+def fun_l20_n98()
+ fun_l21_n787
+end
+
+def fun_l20_n99()
+ fun_l21_n453
+end
+
+def fun_l20_n100()
+ fun_l21_n899
+end
+
+def fun_l20_n101()
+ fun_l21_n491
+end
+
+def fun_l20_n102()
+ fun_l21_n47
+end
+
+def fun_l20_n103()
+ fun_l21_n892
+end
+
+def fun_l20_n104()
+ fun_l21_n974
+end
+
+def fun_l20_n105()
+ fun_l21_n993
+end
+
+def fun_l20_n106()
+ fun_l21_n625
+end
+
+def fun_l20_n107()
+ fun_l21_n743
+end
+
+def fun_l20_n108()
+ fun_l21_n266
+end
+
+def fun_l20_n109()
+ fun_l21_n650
+end
+
+def fun_l20_n110()
+ fun_l21_n642
+end
+
+def fun_l20_n111()
+ fun_l21_n905
+end
+
+def fun_l20_n112()
+ fun_l21_n225
+end
+
+def fun_l20_n113()
+ fun_l21_n857
+end
+
+def fun_l20_n114()
+ fun_l21_n82
+end
+
+def fun_l20_n115()
+ fun_l21_n166
+end
+
+def fun_l20_n116()
+ fun_l21_n844
+end
+
+def fun_l20_n117()
+ fun_l21_n619
+end
+
+def fun_l20_n118()
+ fun_l21_n743
+end
+
+def fun_l20_n119()
+ fun_l21_n69
+end
+
+def fun_l20_n120()
+ fun_l21_n410
+end
+
+def fun_l20_n121()
+ fun_l21_n364
+end
+
+def fun_l20_n122()
+ fun_l21_n186
+end
+
+def fun_l20_n123()
+ fun_l21_n750
+end
+
+def fun_l20_n124()
+ fun_l21_n683
+end
+
+def fun_l20_n125()
+ fun_l21_n576
+end
+
+def fun_l20_n126()
+ fun_l21_n287
+end
+
+def fun_l20_n127()
+ fun_l21_n483
+end
+
+def fun_l20_n128()
+ fun_l21_n738
+end
+
+def fun_l20_n129()
+ fun_l21_n779
+end
+
+def fun_l20_n130()
+ fun_l21_n209
+end
+
+def fun_l20_n131()
+ fun_l21_n652
+end
+
+def fun_l20_n132()
+ fun_l21_n583
+end
+
+def fun_l20_n133()
+ fun_l21_n389
+end
+
+def fun_l20_n134()
+ fun_l21_n289
+end
+
+def fun_l20_n135()
+ fun_l21_n993
+end
+
+def fun_l20_n136()
+ fun_l21_n216
+end
+
+def fun_l20_n137()
+ fun_l21_n118
+end
+
+def fun_l20_n138()
+ fun_l21_n484
+end
+
+def fun_l20_n139()
+ fun_l21_n602
+end
+
+def fun_l20_n140()
+ fun_l21_n714
+end
+
+def fun_l20_n141()
+ fun_l21_n247
+end
+
+def fun_l20_n142()
+ fun_l21_n27
+end
+
+def fun_l20_n143()
+ fun_l21_n939
+end
+
+def fun_l20_n144()
+ fun_l21_n565
+end
+
+def fun_l20_n145()
+ fun_l21_n869
+end
+
+def fun_l20_n146()
+ fun_l21_n569
+end
+
+def fun_l20_n147()
+ fun_l21_n876
+end
+
+def fun_l20_n148()
+ fun_l21_n796
+end
+
+def fun_l20_n149()
+ fun_l21_n754
+end
+
+def fun_l20_n150()
+ fun_l21_n664
+end
+
+def fun_l20_n151()
+ fun_l21_n836
+end
+
+def fun_l20_n152()
+ fun_l21_n389
+end
+
+def fun_l20_n153()
+ fun_l21_n111
+end
+
+def fun_l20_n154()
+ fun_l21_n361
+end
+
+def fun_l20_n155()
+ fun_l21_n733
+end
+
+def fun_l20_n156()
+ fun_l21_n215
+end
+
+def fun_l20_n157()
+ fun_l21_n509
+end
+
+def fun_l20_n158()
+ fun_l21_n12
+end
+
+def fun_l20_n159()
+ fun_l21_n351
+end
+
+def fun_l20_n160()
+ fun_l21_n872
+end
+
+def fun_l20_n161()
+ fun_l21_n888
+end
+
+def fun_l20_n162()
+ fun_l21_n126
+end
+
+def fun_l20_n163()
+ fun_l21_n681
+end
+
+def fun_l20_n164()
+ fun_l21_n160
+end
+
+def fun_l20_n165()
+ fun_l21_n917
+end
+
+def fun_l20_n166()
+ fun_l21_n255
+end
+
+def fun_l20_n167()
+ fun_l21_n37
+end
+
+def fun_l20_n168()
+ fun_l21_n949
+end
+
+def fun_l20_n169()
+ fun_l21_n925
+end
+
+def fun_l20_n170()
+ fun_l21_n921
+end
+
+def fun_l20_n171()
+ fun_l21_n123
+end
+
+def fun_l20_n172()
+ fun_l21_n783
+end
+
+def fun_l20_n173()
+ fun_l21_n45
+end
+
+def fun_l20_n174()
+ fun_l21_n994
+end
+
+def fun_l20_n175()
+ fun_l21_n745
+end
+
+def fun_l20_n176()
+ fun_l21_n122
+end
+
+def fun_l20_n177()
+ fun_l21_n25
+end
+
+def fun_l20_n178()
+ fun_l21_n594
+end
+
+def fun_l20_n179()
+ fun_l21_n115
+end
+
+def fun_l20_n180()
+ fun_l21_n274
+end
+
+def fun_l20_n181()
+ fun_l21_n423
+end
+
+def fun_l20_n182()
+ fun_l21_n68
+end
+
+def fun_l20_n183()
+ fun_l21_n598
+end
+
+def fun_l20_n184()
+ fun_l21_n640
+end
+
+def fun_l20_n185()
+ fun_l21_n810
+end
+
+def fun_l20_n186()
+ fun_l21_n150
+end
+
+def fun_l20_n187()
+ fun_l21_n4
+end
+
+def fun_l20_n188()
+ fun_l21_n487
+end
+
+def fun_l20_n189()
+ fun_l21_n327
+end
+
+def fun_l20_n190()
+ fun_l21_n652
+end
+
+def fun_l20_n191()
+ fun_l21_n913
+end
+
+def fun_l20_n192()
+ fun_l21_n323
+end
+
+def fun_l20_n193()
+ fun_l21_n193
+end
+
+def fun_l20_n194()
+ fun_l21_n527
+end
+
+def fun_l20_n195()
+ fun_l21_n123
+end
+
+def fun_l20_n196()
+ fun_l21_n568
+end
+
+def fun_l20_n197()
+ fun_l21_n629
+end
+
+def fun_l20_n198()
+ fun_l21_n727
+end
+
+def fun_l20_n199()
+ fun_l21_n470
+end
+
+def fun_l20_n200()
+ fun_l21_n608
+end
+
+def fun_l20_n201()
+ fun_l21_n941
+end
+
+def fun_l20_n202()
+ fun_l21_n256
+end
+
+def fun_l20_n203()
+ fun_l21_n624
+end
+
+def fun_l20_n204()
+ fun_l21_n714
+end
+
+def fun_l20_n205()
+ fun_l21_n754
+end
+
+def fun_l20_n206()
+ fun_l21_n513
+end
+
+def fun_l20_n207()
+ fun_l21_n730
+end
+
+def fun_l20_n208()
+ fun_l21_n132
+end
+
+def fun_l20_n209()
+ fun_l21_n205
+end
+
+def fun_l20_n210()
+ fun_l21_n549
+end
+
+def fun_l20_n211()
+ fun_l21_n713
+end
+
+def fun_l20_n212()
+ fun_l21_n51
+end
+
+def fun_l20_n213()
+ fun_l21_n712
+end
+
+def fun_l20_n214()
+ fun_l21_n439
+end
+
+def fun_l20_n215()
+ fun_l21_n969
+end
+
+def fun_l20_n216()
+ fun_l21_n338
+end
+
+def fun_l20_n217()
+ fun_l21_n852
+end
+
+def fun_l20_n218()
+ fun_l21_n935
+end
+
+def fun_l20_n219()
+ fun_l21_n935
+end
+
+def fun_l20_n220()
+ fun_l21_n967
+end
+
+def fun_l20_n221()
+ fun_l21_n195
+end
+
+def fun_l20_n222()
+ fun_l21_n556
+end
+
+def fun_l20_n223()
+ fun_l21_n669
+end
+
+def fun_l20_n224()
+ fun_l21_n874
+end
+
+def fun_l20_n225()
+ fun_l21_n985
+end
+
+def fun_l20_n226()
+ fun_l21_n769
+end
+
+def fun_l20_n227()
+ fun_l21_n482
+end
+
+def fun_l20_n228()
+ fun_l21_n268
+end
+
+def fun_l20_n229()
+ fun_l21_n161
+end
+
+def fun_l20_n230()
+ fun_l21_n383
+end
+
+def fun_l20_n231()
+ fun_l21_n100
+end
+
+def fun_l20_n232()
+ fun_l21_n285
+end
+
+def fun_l20_n233()
+ fun_l21_n255
+end
+
+def fun_l20_n234()
+ fun_l21_n214
+end
+
+def fun_l20_n235()
+ fun_l21_n206
+end
+
+def fun_l20_n236()
+ fun_l21_n990
+end
+
+def fun_l20_n237()
+ fun_l21_n24
+end
+
+def fun_l20_n238()
+ fun_l21_n531
+end
+
+def fun_l20_n239()
+ fun_l21_n171
+end
+
+def fun_l20_n240()
+ fun_l21_n859
+end
+
+def fun_l20_n241()
+ fun_l21_n342
+end
+
+def fun_l20_n242()
+ fun_l21_n724
+end
+
+def fun_l20_n243()
+ fun_l21_n55
+end
+
+def fun_l20_n244()
+ fun_l21_n404
+end
+
+def fun_l20_n245()
+ fun_l21_n615
+end
+
+def fun_l20_n246()
+ fun_l21_n692
+end
+
+def fun_l20_n247()
+ fun_l21_n851
+end
+
+def fun_l20_n248()
+ fun_l21_n715
+end
+
+def fun_l20_n249()
+ fun_l21_n723
+end
+
+def fun_l20_n250()
+ fun_l21_n929
+end
+
+def fun_l20_n251()
+ fun_l21_n26
+end
+
+def fun_l20_n252()
+ fun_l21_n314
+end
+
+def fun_l20_n253()
+ fun_l21_n182
+end
+
+def fun_l20_n254()
+ fun_l21_n889
+end
+
+def fun_l20_n255()
+ fun_l21_n725
+end
+
+def fun_l20_n256()
+ fun_l21_n538
+end
+
+def fun_l20_n257()
+ fun_l21_n303
+end
+
+def fun_l20_n258()
+ fun_l21_n843
+end
+
+def fun_l20_n259()
+ fun_l21_n977
+end
+
+def fun_l20_n260()
+ fun_l21_n438
+end
+
+def fun_l20_n261()
+ fun_l21_n772
+end
+
+def fun_l20_n262()
+ fun_l21_n432
+end
+
+def fun_l20_n263()
+ fun_l21_n204
+end
+
+def fun_l20_n264()
+ fun_l21_n853
+end
+
+def fun_l20_n265()
+ fun_l21_n7
+end
+
+def fun_l20_n266()
+ fun_l21_n171
+end
+
+def fun_l20_n267()
+ fun_l21_n907
+end
+
+def fun_l20_n268()
+ fun_l21_n450
+end
+
+def fun_l20_n269()
+ fun_l21_n836
+end
+
+def fun_l20_n270()
+ fun_l21_n118
+end
+
+def fun_l20_n271()
+ fun_l21_n782
+end
+
+def fun_l20_n272()
+ fun_l21_n160
+end
+
+def fun_l20_n273()
+ fun_l21_n73
+end
+
+def fun_l20_n274()
+ fun_l21_n339
+end
+
+def fun_l20_n275()
+ fun_l21_n257
+end
+
+def fun_l20_n276()
+ fun_l21_n860
+end
+
+def fun_l20_n277()
+ fun_l21_n837
+end
+
+def fun_l20_n278()
+ fun_l21_n936
+end
+
+def fun_l20_n279()
+ fun_l21_n627
+end
+
+def fun_l20_n280()
+ fun_l21_n45
+end
+
+def fun_l20_n281()
+ fun_l21_n934
+end
+
+def fun_l20_n282()
+ fun_l21_n213
+end
+
+def fun_l20_n283()
+ fun_l21_n629
+end
+
+def fun_l20_n284()
+ fun_l21_n944
+end
+
+def fun_l20_n285()
+ fun_l21_n44
+end
+
+def fun_l20_n286()
+ fun_l21_n306
+end
+
+def fun_l20_n287()
+ fun_l21_n259
+end
+
+def fun_l20_n288()
+ fun_l21_n805
+end
+
+def fun_l20_n289()
+ fun_l21_n118
+end
+
+def fun_l20_n290()
+ fun_l21_n456
+end
+
+def fun_l20_n291()
+ fun_l21_n11
+end
+
+def fun_l20_n292()
+ fun_l21_n138
+end
+
+def fun_l20_n293()
+ fun_l21_n110
+end
+
+def fun_l20_n294()
+ fun_l21_n165
+end
+
+def fun_l20_n295()
+ fun_l21_n129
+end
+
+def fun_l20_n296()
+ fun_l21_n731
+end
+
+def fun_l20_n297()
+ fun_l21_n219
+end
+
+def fun_l20_n298()
+ fun_l21_n175
+end
+
+def fun_l20_n299()
+ fun_l21_n497
+end
+
+def fun_l20_n300()
+ fun_l21_n154
+end
+
+def fun_l20_n301()
+ fun_l21_n446
+end
+
+def fun_l20_n302()
+ fun_l21_n890
+end
+
+def fun_l20_n303()
+ fun_l21_n325
+end
+
+def fun_l20_n304()
+ fun_l21_n616
+end
+
+def fun_l20_n305()
+ fun_l21_n743
+end
+
+def fun_l20_n306()
+ fun_l21_n327
+end
+
+def fun_l20_n307()
+ fun_l21_n890
+end
+
+def fun_l20_n308()
+ fun_l21_n289
+end
+
+def fun_l20_n309()
+ fun_l21_n150
+end
+
+def fun_l20_n310()
+ fun_l21_n22
+end
+
+def fun_l20_n311()
+ fun_l21_n290
+end
+
+def fun_l20_n312()
+ fun_l21_n780
+end
+
+def fun_l20_n313()
+ fun_l21_n204
+end
+
+def fun_l20_n314()
+ fun_l21_n204
+end
+
+def fun_l20_n315()
+ fun_l21_n841
+end
+
+def fun_l20_n316()
+ fun_l21_n990
+end
+
+def fun_l20_n317()
+ fun_l21_n574
+end
+
+def fun_l20_n318()
+ fun_l21_n543
+end
+
+def fun_l20_n319()
+ fun_l21_n388
+end
+
+def fun_l20_n320()
+ fun_l21_n44
+end
+
+def fun_l20_n321()
+ fun_l21_n65
+end
+
+def fun_l20_n322()
+ fun_l21_n952
+end
+
+def fun_l20_n323()
+ fun_l21_n633
+end
+
+def fun_l20_n324()
+ fun_l21_n729
+end
+
+def fun_l20_n325()
+ fun_l21_n356
+end
+
+def fun_l20_n326()
+ fun_l21_n968
+end
+
+def fun_l20_n327()
+ fun_l21_n92
+end
+
+def fun_l20_n328()
+ fun_l21_n285
+end
+
+def fun_l20_n329()
+ fun_l21_n341
+end
+
+def fun_l20_n330()
+ fun_l21_n818
+end
+
+def fun_l20_n331()
+ fun_l21_n373
+end
+
+def fun_l20_n332()
+ fun_l21_n166
+end
+
+def fun_l20_n333()
+ fun_l21_n618
+end
+
+def fun_l20_n334()
+ fun_l21_n160
+end
+
+def fun_l20_n335()
+ fun_l21_n965
+end
+
+def fun_l20_n336()
+ fun_l21_n436
+end
+
+def fun_l20_n337()
+ fun_l21_n244
+end
+
+def fun_l20_n338()
+ fun_l21_n425
+end
+
+def fun_l20_n339()
+ fun_l21_n576
+end
+
+def fun_l20_n340()
+ fun_l21_n789
+end
+
+def fun_l20_n341()
+ fun_l21_n559
+end
+
+def fun_l20_n342()
+ fun_l21_n766
+end
+
+def fun_l20_n343()
+ fun_l21_n131
+end
+
+def fun_l20_n344()
+ fun_l21_n806
+end
+
+def fun_l20_n345()
+ fun_l21_n624
+end
+
+def fun_l20_n346()
+ fun_l21_n342
+end
+
+def fun_l20_n347()
+ fun_l21_n567
+end
+
+def fun_l20_n348()
+ fun_l21_n569
+end
+
+def fun_l20_n349()
+ fun_l21_n623
+end
+
+def fun_l20_n350()
+ fun_l21_n984
+end
+
+def fun_l20_n351()
+ fun_l21_n931
+end
+
+def fun_l20_n352()
+ fun_l21_n48
+end
+
+def fun_l20_n353()
+ fun_l21_n962
+end
+
+def fun_l20_n354()
+ fun_l21_n757
+end
+
+def fun_l20_n355()
+ fun_l21_n844
+end
+
+def fun_l20_n356()
+ fun_l21_n217
+end
+
+def fun_l20_n357()
+ fun_l21_n933
+end
+
+def fun_l20_n358()
+ fun_l21_n579
+end
+
+def fun_l20_n359()
+ fun_l21_n342
+end
+
+def fun_l20_n360()
+ fun_l21_n975
+end
+
+def fun_l20_n361()
+ fun_l21_n177
+end
+
+def fun_l20_n362()
+ fun_l21_n491
+end
+
+def fun_l20_n363()
+ fun_l21_n637
+end
+
+def fun_l20_n364()
+ fun_l21_n505
+end
+
+def fun_l20_n365()
+ fun_l21_n784
+end
+
+def fun_l20_n366()
+ fun_l21_n62
+end
+
+def fun_l20_n367()
+ fun_l21_n478
+end
+
+def fun_l20_n368()
+ fun_l21_n369
+end
+
+def fun_l20_n369()
+ fun_l21_n105
+end
+
+def fun_l20_n370()
+ fun_l21_n352
+end
+
+def fun_l20_n371()
+ fun_l21_n537
+end
+
+def fun_l20_n372()
+ fun_l21_n180
+end
+
+def fun_l20_n373()
+ fun_l21_n216
+end
+
+def fun_l20_n374()
+ fun_l21_n938
+end
+
+def fun_l20_n375()
+ fun_l21_n441
+end
+
+def fun_l20_n376()
+ fun_l21_n308
+end
+
+def fun_l20_n377()
+ fun_l21_n544
+end
+
+def fun_l20_n378()
+ fun_l21_n505
+end
+
+def fun_l20_n379()
+ fun_l21_n681
+end
+
+def fun_l20_n380()
+ fun_l21_n844
+end
+
+def fun_l20_n381()
+ fun_l21_n269
+end
+
+def fun_l20_n382()
+ fun_l21_n195
+end
+
+def fun_l20_n383()
+ fun_l21_n214
+end
+
+def fun_l20_n384()
+ fun_l21_n206
+end
+
+def fun_l20_n385()
+ fun_l21_n807
+end
+
+def fun_l20_n386()
+ fun_l21_n932
+end
+
+def fun_l20_n387()
+ fun_l21_n245
+end
+
+def fun_l20_n388()
+ fun_l21_n942
+end
+
+def fun_l20_n389()
+ fun_l21_n618
+end
+
+def fun_l20_n390()
+ fun_l21_n684
+end
+
+def fun_l20_n391()
+ fun_l21_n536
+end
+
+def fun_l20_n392()
+ fun_l21_n899
+end
+
+def fun_l20_n393()
+ fun_l21_n775
+end
+
+def fun_l20_n394()
+ fun_l21_n634
+end
+
+def fun_l20_n395()
+ fun_l21_n870
+end
+
+def fun_l20_n396()
+ fun_l21_n882
+end
+
+def fun_l20_n397()
+ fun_l21_n317
+end
+
+def fun_l20_n398()
+ fun_l21_n162
+end
+
+def fun_l20_n399()
+ fun_l21_n446
+end
+
+def fun_l20_n400()
+ fun_l21_n716
+end
+
+def fun_l20_n401()
+ fun_l21_n869
+end
+
+def fun_l20_n402()
+ fun_l21_n965
+end
+
+def fun_l20_n403()
+ fun_l21_n616
+end
+
+def fun_l20_n404()
+ fun_l21_n385
+end
+
+def fun_l20_n405()
+ fun_l21_n964
+end
+
+def fun_l20_n406()
+ fun_l21_n360
+end
+
+def fun_l20_n407()
+ fun_l21_n432
+end
+
+def fun_l20_n408()
+ fun_l21_n40
+end
+
+def fun_l20_n409()
+ fun_l21_n734
+end
+
+def fun_l20_n410()
+ fun_l21_n978
+end
+
+def fun_l20_n411()
+ fun_l21_n721
+end
+
+def fun_l20_n412()
+ fun_l21_n941
+end
+
+def fun_l20_n413()
+ fun_l21_n315
+end
+
+def fun_l20_n414()
+ fun_l21_n242
+end
+
+def fun_l20_n415()
+ fun_l21_n153
+end
+
+def fun_l20_n416()
+ fun_l21_n999
+end
+
+def fun_l20_n417()
+ fun_l21_n219
+end
+
+def fun_l20_n418()
+ fun_l21_n809
+end
+
+def fun_l20_n419()
+ fun_l21_n139
+end
+
+def fun_l20_n420()
+ fun_l21_n311
+end
+
+def fun_l20_n421()
+ fun_l21_n460
+end
+
+def fun_l20_n422()
+ fun_l21_n0
+end
+
+def fun_l20_n423()
+ fun_l21_n863
+end
+
+def fun_l20_n424()
+ fun_l21_n216
+end
+
+def fun_l20_n425()
+ fun_l21_n1
+end
+
+def fun_l20_n426()
+ fun_l21_n829
+end
+
+def fun_l20_n427()
+ fun_l21_n844
+end
+
+def fun_l20_n428()
+ fun_l21_n941
+end
+
+def fun_l20_n429()
+ fun_l21_n344
+end
+
+def fun_l20_n430()
+ fun_l21_n443
+end
+
+def fun_l20_n431()
+ fun_l21_n549
+end
+
+def fun_l20_n432()
+ fun_l21_n654
+end
+
+def fun_l20_n433()
+ fun_l21_n167
+end
+
+def fun_l20_n434()
+ fun_l21_n392
+end
+
+def fun_l20_n435()
+ fun_l21_n570
+end
+
+def fun_l20_n436()
+ fun_l21_n370
+end
+
+def fun_l20_n437()
+ fun_l21_n65
+end
+
+def fun_l20_n438()
+ fun_l21_n78
+end
+
+def fun_l20_n439()
+ fun_l21_n271
+end
+
+def fun_l20_n440()
+ fun_l21_n606
+end
+
+def fun_l20_n441()
+ fun_l21_n25
+end
+
+def fun_l20_n442()
+ fun_l21_n629
+end
+
+def fun_l20_n443()
+ fun_l21_n294
+end
+
+def fun_l20_n444()
+ fun_l21_n928
+end
+
+def fun_l20_n445()
+ fun_l21_n596
+end
+
+def fun_l20_n446()
+ fun_l21_n630
+end
+
+def fun_l20_n447()
+ fun_l21_n849
+end
+
+def fun_l20_n448()
+ fun_l21_n239
+end
+
+def fun_l20_n449()
+ fun_l21_n641
+end
+
+def fun_l20_n450()
+ fun_l21_n333
+end
+
+def fun_l20_n451()
+ fun_l21_n86
+end
+
+def fun_l20_n452()
+ fun_l21_n68
+end
+
+def fun_l20_n453()
+ fun_l21_n28
+end
+
+def fun_l20_n454()
+ fun_l21_n644
+end
+
+def fun_l20_n455()
+ fun_l21_n282
+end
+
+def fun_l20_n456()
+ fun_l21_n3
+end
+
+def fun_l20_n457()
+ fun_l21_n594
+end
+
+def fun_l20_n458()
+ fun_l21_n173
+end
+
+def fun_l20_n459()
+ fun_l21_n986
+end
+
+def fun_l20_n460()
+ fun_l21_n597
+end
+
+def fun_l20_n461()
+ fun_l21_n488
+end
+
+def fun_l20_n462()
+ fun_l21_n288
+end
+
+def fun_l20_n463()
+ fun_l21_n729
+end
+
+def fun_l20_n464()
+ fun_l21_n985
+end
+
+def fun_l20_n465()
+ fun_l21_n794
+end
+
+def fun_l20_n466()
+ fun_l21_n405
+end
+
+def fun_l20_n467()
+ fun_l21_n985
+end
+
+def fun_l20_n468()
+ fun_l21_n596
+end
+
+def fun_l20_n469()
+ fun_l21_n331
+end
+
+def fun_l20_n470()
+ fun_l21_n480
+end
+
+def fun_l20_n471()
+ fun_l21_n160
+end
+
+def fun_l20_n472()
+ fun_l21_n529
+end
+
+def fun_l20_n473()
+ fun_l21_n185
+end
+
+def fun_l20_n474()
+ fun_l21_n300
+end
+
+def fun_l20_n475()
+ fun_l21_n131
+end
+
+def fun_l20_n476()
+ fun_l21_n561
+end
+
+def fun_l20_n477()
+ fun_l21_n634
+end
+
+def fun_l20_n478()
+ fun_l21_n92
+end
+
+def fun_l20_n479()
+ fun_l21_n105
+end
+
+def fun_l20_n480()
+ fun_l21_n887
+end
+
+def fun_l20_n481()
+ fun_l21_n841
+end
+
+def fun_l20_n482()
+ fun_l21_n404
+end
+
+def fun_l20_n483()
+ fun_l21_n813
+end
+
+def fun_l20_n484()
+ fun_l21_n90
+end
+
+def fun_l20_n485()
+ fun_l21_n978
+end
+
+def fun_l20_n486()
+ fun_l21_n342
+end
+
+def fun_l20_n487()
+ fun_l21_n263
+end
+
+def fun_l20_n488()
+ fun_l21_n587
+end
+
+def fun_l20_n489()
+ fun_l21_n950
+end
+
+def fun_l20_n490()
+ fun_l21_n121
+end
+
+def fun_l20_n491()
+ fun_l21_n85
+end
+
+def fun_l20_n492()
+ fun_l21_n53
+end
+
+def fun_l20_n493()
+ fun_l21_n706
+end
+
+def fun_l20_n494()
+ fun_l21_n612
+end
+
+def fun_l20_n495()
+ fun_l21_n322
+end
+
+def fun_l20_n496()
+ fun_l21_n610
+end
+
+def fun_l20_n497()
+ fun_l21_n465
+end
+
+def fun_l20_n498()
+ fun_l21_n998
+end
+
+def fun_l20_n499()
+ fun_l21_n79
+end
+
+def fun_l20_n500()
+ fun_l21_n203
+end
+
+def fun_l20_n501()
+ fun_l21_n99
+end
+
+def fun_l20_n502()
+ fun_l21_n958
+end
+
+def fun_l20_n503()
+ fun_l21_n528
+end
+
+def fun_l20_n504()
+ fun_l21_n210
+end
+
+def fun_l20_n505()
+ fun_l21_n546
+end
+
+def fun_l20_n506()
+ fun_l21_n343
+end
+
+def fun_l20_n507()
+ fun_l21_n9
+end
+
+def fun_l20_n508()
+ fun_l21_n486
+end
+
+def fun_l20_n509()
+ fun_l21_n252
+end
+
+def fun_l20_n510()
+ fun_l21_n489
+end
+
+def fun_l20_n511()
+ fun_l21_n851
+end
+
+def fun_l20_n512()
+ fun_l21_n150
+end
+
+def fun_l20_n513()
+ fun_l21_n691
+end
+
+def fun_l20_n514()
+ fun_l21_n718
+end
+
+def fun_l20_n515()
+ fun_l21_n681
+end
+
+def fun_l20_n516()
+ fun_l21_n636
+end
+
+def fun_l20_n517()
+ fun_l21_n828
+end
+
+def fun_l20_n518()
+ fun_l21_n15
+end
+
+def fun_l20_n519()
+ fun_l21_n186
+end
+
+def fun_l20_n520()
+ fun_l21_n260
+end
+
+def fun_l20_n521()
+ fun_l21_n646
+end
+
+def fun_l20_n522()
+ fun_l21_n768
+end
+
+def fun_l20_n523()
+ fun_l21_n387
+end
+
+def fun_l20_n524()
+ fun_l21_n597
+end
+
+def fun_l20_n525()
+ fun_l21_n980
+end
+
+def fun_l20_n526()
+ fun_l21_n996
+end
+
+def fun_l20_n527()
+ fun_l21_n945
+end
+
+def fun_l20_n528()
+ fun_l21_n234
+end
+
+def fun_l20_n529()
+ fun_l21_n673
+end
+
+def fun_l20_n530()
+ fun_l21_n766
+end
+
+def fun_l20_n531()
+ fun_l21_n498
+end
+
+def fun_l20_n532()
+ fun_l21_n210
+end
+
+def fun_l20_n533()
+ fun_l21_n537
+end
+
+def fun_l20_n534()
+ fun_l21_n376
+end
+
+def fun_l20_n535()
+ fun_l21_n13
+end
+
+def fun_l20_n536()
+ fun_l21_n994
+end
+
+def fun_l20_n537()
+ fun_l21_n954
+end
+
+def fun_l20_n538()
+ fun_l21_n171
+end
+
+def fun_l20_n539()
+ fun_l21_n778
+end
+
+def fun_l20_n540()
+ fun_l21_n940
+end
+
+def fun_l20_n541()
+ fun_l21_n114
+end
+
+def fun_l20_n542()
+ fun_l21_n987
+end
+
+def fun_l20_n543()
+ fun_l21_n553
+end
+
+def fun_l20_n544()
+ fun_l21_n473
+end
+
+def fun_l20_n545()
+ fun_l21_n503
+end
+
+def fun_l20_n546()
+ fun_l21_n436
+end
+
+def fun_l20_n547()
+ fun_l21_n901
+end
+
+def fun_l20_n548()
+ fun_l21_n98
+end
+
+def fun_l20_n549()
+ fun_l21_n389
+end
+
+def fun_l20_n550()
+ fun_l21_n852
+end
+
+def fun_l20_n551()
+ fun_l21_n193
+end
+
+def fun_l20_n552()
+ fun_l21_n783
+end
+
+def fun_l20_n553()
+ fun_l21_n46
+end
+
+def fun_l20_n554()
+ fun_l21_n38
+end
+
+def fun_l20_n555()
+ fun_l21_n300
+end
+
+def fun_l20_n556()
+ fun_l21_n221
+end
+
+def fun_l20_n557()
+ fun_l21_n816
+end
+
+def fun_l20_n558()
+ fun_l21_n534
+end
+
+def fun_l20_n559()
+ fun_l21_n932
+end
+
+def fun_l20_n560()
+ fun_l21_n880
+end
+
+def fun_l20_n561()
+ fun_l21_n796
+end
+
+def fun_l20_n562()
+ fun_l21_n927
+end
+
+def fun_l20_n563()
+ fun_l21_n10
+end
+
+def fun_l20_n564()
+ fun_l21_n843
+end
+
+def fun_l20_n565()
+ fun_l21_n625
+end
+
+def fun_l20_n566()
+ fun_l21_n429
+end
+
+def fun_l20_n567()
+ fun_l21_n475
+end
+
+def fun_l20_n568()
+ fun_l21_n931
+end
+
+def fun_l20_n569()
+ fun_l21_n460
+end
+
+def fun_l20_n570()
+ fun_l21_n857
+end
+
+def fun_l20_n571()
+ fun_l21_n607
+end
+
+def fun_l20_n572()
+ fun_l21_n727
+end
+
+def fun_l20_n573()
+ fun_l21_n922
+end
+
+def fun_l20_n574()
+ fun_l21_n393
+end
+
+def fun_l20_n575()
+ fun_l21_n232
+end
+
+def fun_l20_n576()
+ fun_l21_n665
+end
+
+def fun_l20_n577()
+ fun_l21_n796
+end
+
+def fun_l20_n578()
+ fun_l21_n80
+end
+
+def fun_l20_n579()
+ fun_l21_n769
+end
+
+def fun_l20_n580()
+ fun_l21_n558
+end
+
+def fun_l20_n581()
+ fun_l21_n630
+end
+
+def fun_l20_n582()
+ fun_l21_n911
+end
+
+def fun_l20_n583()
+ fun_l21_n457
+end
+
+def fun_l20_n584()
+ fun_l21_n61
+end
+
+def fun_l20_n585()
+ fun_l21_n671
+end
+
+def fun_l20_n586()
+ fun_l21_n493
+end
+
+def fun_l20_n587()
+ fun_l21_n780
+end
+
+def fun_l20_n588()
+ fun_l21_n373
+end
+
+def fun_l20_n589()
+ fun_l21_n138
+end
+
+def fun_l20_n590()
+ fun_l21_n377
+end
+
+def fun_l20_n591()
+ fun_l21_n793
+end
+
+def fun_l20_n592()
+ fun_l21_n995
+end
+
+def fun_l20_n593()
+ fun_l21_n46
+end
+
+def fun_l20_n594()
+ fun_l21_n171
+end
+
+def fun_l20_n595()
+ fun_l21_n907
+end
+
+def fun_l20_n596()
+ fun_l21_n182
+end
+
+def fun_l20_n597()
+ fun_l21_n203
+end
+
+def fun_l20_n598()
+ fun_l21_n475
+end
+
+def fun_l20_n599()
+ fun_l21_n198
+end
+
+def fun_l20_n600()
+ fun_l21_n654
+end
+
+def fun_l20_n601()
+ fun_l21_n236
+end
+
+def fun_l20_n602()
+ fun_l21_n854
+end
+
+def fun_l20_n603()
+ fun_l21_n344
+end
+
+def fun_l20_n604()
+ fun_l21_n575
+end
+
+def fun_l20_n605()
+ fun_l21_n214
+end
+
+def fun_l20_n606()
+ fun_l21_n105
+end
+
+def fun_l20_n607()
+ fun_l21_n624
+end
+
+def fun_l20_n608()
+ fun_l21_n505
+end
+
+def fun_l20_n609()
+ fun_l21_n468
+end
+
+def fun_l20_n610()
+ fun_l21_n946
+end
+
+def fun_l20_n611()
+ fun_l21_n197
+end
+
+def fun_l20_n612()
+ fun_l21_n749
+end
+
+def fun_l20_n613()
+ fun_l21_n280
+end
+
+def fun_l20_n614()
+ fun_l21_n587
+end
+
+def fun_l20_n615()
+ fun_l21_n463
+end
+
+def fun_l20_n616()
+ fun_l21_n47
+end
+
+def fun_l20_n617()
+ fun_l21_n467
+end
+
+def fun_l20_n618()
+ fun_l21_n934
+end
+
+def fun_l20_n619()
+ fun_l21_n648
+end
+
+def fun_l20_n620()
+ fun_l21_n572
+end
+
+def fun_l20_n621()
+ fun_l21_n524
+end
+
+def fun_l20_n622()
+ fun_l21_n623
+end
+
+def fun_l20_n623()
+ fun_l21_n142
+end
+
+def fun_l20_n624()
+ fun_l21_n370
+end
+
+def fun_l20_n625()
+ fun_l21_n427
+end
+
+def fun_l20_n626()
+ fun_l21_n23
+end
+
+def fun_l20_n627()
+ fun_l21_n710
+end
+
+def fun_l20_n628()
+ fun_l21_n714
+end
+
+def fun_l20_n629()
+ fun_l21_n929
+end
+
+def fun_l20_n630()
+ fun_l21_n882
+end
+
+def fun_l20_n631()
+ fun_l21_n971
+end
+
+def fun_l20_n632()
+ fun_l21_n484
+end
+
+def fun_l20_n633()
+ fun_l21_n757
+end
+
+def fun_l20_n634()
+ fun_l21_n543
+end
+
+def fun_l20_n635()
+ fun_l21_n96
+end
+
+def fun_l20_n636()
+ fun_l21_n780
+end
+
+def fun_l20_n637()
+ fun_l21_n912
+end
+
+def fun_l20_n638()
+ fun_l21_n288
+end
+
+def fun_l20_n639()
+ fun_l21_n580
+end
+
+def fun_l20_n640()
+ fun_l21_n831
+end
+
+def fun_l20_n641()
+ fun_l21_n660
+end
+
+def fun_l20_n642()
+ fun_l21_n216
+end
+
+def fun_l20_n643()
+ fun_l21_n341
+end
+
+def fun_l20_n644()
+ fun_l21_n747
+end
+
+def fun_l20_n645()
+ fun_l21_n633
+end
+
+def fun_l20_n646()
+ fun_l21_n422
+end
+
+def fun_l20_n647()
+ fun_l21_n122
+end
+
+def fun_l20_n648()
+ fun_l21_n721
+end
+
+def fun_l20_n649()
+ fun_l21_n439
+end
+
+def fun_l20_n650()
+ fun_l21_n663
+end
+
+def fun_l20_n651()
+ fun_l21_n409
+end
+
+def fun_l20_n652()
+ fun_l21_n475
+end
+
+def fun_l20_n653()
+ fun_l21_n812
+end
+
+def fun_l20_n654()
+ fun_l21_n849
+end
+
+def fun_l20_n655()
+ fun_l21_n500
+end
+
+def fun_l20_n656()
+ fun_l21_n120
+end
+
+def fun_l20_n657()
+ fun_l21_n971
+end
+
+def fun_l20_n658()
+ fun_l21_n935
+end
+
+def fun_l20_n659()
+ fun_l21_n952
+end
+
+def fun_l20_n660()
+ fun_l21_n84
+end
+
+def fun_l20_n661()
+ fun_l21_n393
+end
+
+def fun_l20_n662()
+ fun_l21_n454
+end
+
+def fun_l20_n663()
+ fun_l21_n440
+end
+
+def fun_l20_n664()
+ fun_l21_n5
+end
+
+def fun_l20_n665()
+ fun_l21_n475
+end
+
+def fun_l20_n666()
+ fun_l21_n929
+end
+
+def fun_l20_n667()
+ fun_l21_n164
+end
+
+def fun_l20_n668()
+ fun_l21_n23
+end
+
+def fun_l20_n669()
+ fun_l21_n66
+end
+
+def fun_l20_n670()
+ fun_l21_n463
+end
+
+def fun_l20_n671()
+ fun_l21_n425
+end
+
+def fun_l20_n672()
+ fun_l21_n414
+end
+
+def fun_l20_n673()
+ fun_l21_n990
+end
+
+def fun_l20_n674()
+ fun_l21_n504
+end
+
+def fun_l20_n675()
+ fun_l21_n974
+end
+
+def fun_l20_n676()
+ fun_l21_n620
+end
+
+def fun_l20_n677()
+ fun_l21_n798
+end
+
+def fun_l20_n678()
+ fun_l21_n432
+end
+
+def fun_l20_n679()
+ fun_l21_n487
+end
+
+def fun_l20_n680()
+ fun_l21_n570
+end
+
+def fun_l20_n681()
+ fun_l21_n746
+end
+
+def fun_l20_n682()
+ fun_l21_n358
+end
+
+def fun_l20_n683()
+ fun_l21_n207
+end
+
+def fun_l20_n684()
+ fun_l21_n408
+end
+
+def fun_l20_n685()
+ fun_l21_n679
+end
+
+def fun_l20_n686()
+ fun_l21_n38
+end
+
+def fun_l20_n687()
+ fun_l21_n58
+end
+
+def fun_l20_n688()
+ fun_l21_n460
+end
+
+def fun_l20_n689()
+ fun_l21_n855
+end
+
+def fun_l20_n690()
+ fun_l21_n641
+end
+
+def fun_l20_n691()
+ fun_l21_n146
+end
+
+def fun_l20_n692()
+ fun_l21_n709
+end
+
+def fun_l20_n693()
+ fun_l21_n801
+end
+
+def fun_l20_n694()
+ fun_l21_n375
+end
+
+def fun_l20_n695()
+ fun_l21_n778
+end
+
+def fun_l20_n696()
+ fun_l21_n620
+end
+
+def fun_l20_n697()
+ fun_l21_n630
+end
+
+def fun_l20_n698()
+ fun_l21_n582
+end
+
+def fun_l20_n699()
+ fun_l21_n198
+end
+
+def fun_l20_n700()
+ fun_l21_n830
+end
+
+def fun_l20_n701()
+ fun_l21_n101
+end
+
+def fun_l20_n702()
+ fun_l21_n824
+end
+
+def fun_l20_n703()
+ fun_l21_n97
+end
+
+def fun_l20_n704()
+ fun_l21_n628
+end
+
+def fun_l20_n705()
+ fun_l21_n688
+end
+
+def fun_l20_n706()
+ fun_l21_n120
+end
+
+def fun_l20_n707()
+ fun_l21_n343
+end
+
+def fun_l20_n708()
+ fun_l21_n175
+end
+
+def fun_l20_n709()
+ fun_l21_n122
+end
+
+def fun_l20_n710()
+ fun_l21_n272
+end
+
+def fun_l20_n711()
+ fun_l21_n343
+end
+
+def fun_l20_n712()
+ fun_l21_n317
+end
+
+def fun_l20_n713()
+ fun_l21_n982
+end
+
+def fun_l20_n714()
+ fun_l21_n458
+end
+
+def fun_l20_n715()
+ fun_l21_n906
+end
+
+def fun_l20_n716()
+ fun_l21_n565
+end
+
+def fun_l20_n717()
+ fun_l21_n174
+end
+
+def fun_l20_n718()
+ fun_l21_n34
+end
+
+def fun_l20_n719()
+ fun_l21_n832
+end
+
+def fun_l20_n720()
+ fun_l21_n111
+end
+
+def fun_l20_n721()
+ fun_l21_n701
+end
+
+def fun_l20_n722()
+ fun_l21_n201
+end
+
+def fun_l20_n723()
+ fun_l21_n285
+end
+
+def fun_l20_n724()
+ fun_l21_n269
+end
+
+def fun_l20_n725()
+ fun_l21_n144
+end
+
+def fun_l20_n726()
+ fun_l21_n246
+end
+
+def fun_l20_n727()
+ fun_l21_n221
+end
+
+def fun_l20_n728()
+ fun_l21_n599
+end
+
+def fun_l20_n729()
+ fun_l21_n909
+end
+
+def fun_l20_n730()
+ fun_l21_n693
+end
+
+def fun_l20_n731()
+ fun_l21_n879
+end
+
+def fun_l20_n732()
+ fun_l21_n452
+end
+
+def fun_l20_n733()
+ fun_l21_n772
+end
+
+def fun_l20_n734()
+ fun_l21_n116
+end
+
+def fun_l20_n735()
+ fun_l21_n895
+end
+
+def fun_l20_n736()
+ fun_l21_n937
+end
+
+def fun_l20_n737()
+ fun_l21_n50
+end
+
+def fun_l20_n738()
+ fun_l21_n947
+end
+
+def fun_l20_n739()
+ fun_l21_n500
+end
+
+def fun_l20_n740()
+ fun_l21_n753
+end
+
+def fun_l20_n741()
+ fun_l21_n497
+end
+
+def fun_l20_n742()
+ fun_l21_n524
+end
+
+def fun_l20_n743()
+ fun_l21_n389
+end
+
+def fun_l20_n744()
+ fun_l21_n539
+end
+
+def fun_l20_n745()
+ fun_l21_n70
+end
+
+def fun_l20_n746()
+ fun_l21_n736
+end
+
+def fun_l20_n747()
+ fun_l21_n94
+end
+
+def fun_l20_n748()
+ fun_l21_n686
+end
+
+def fun_l20_n749()
+ fun_l21_n269
+end
+
+def fun_l20_n750()
+ fun_l21_n809
+end
+
+def fun_l20_n751()
+ fun_l21_n570
+end
+
+def fun_l20_n752()
+ fun_l21_n522
+end
+
+def fun_l20_n753()
+ fun_l21_n167
+end
+
+def fun_l20_n754()
+ fun_l21_n610
+end
+
+def fun_l20_n755()
+ fun_l21_n72
+end
+
+def fun_l20_n756()
+ fun_l21_n146
+end
+
+def fun_l20_n757()
+ fun_l21_n916
+end
+
+def fun_l20_n758()
+ fun_l21_n163
+end
+
+def fun_l20_n759()
+ fun_l21_n279
+end
+
+def fun_l20_n760()
+ fun_l21_n677
+end
+
+def fun_l20_n761()
+ fun_l21_n876
+end
+
+def fun_l20_n762()
+ fun_l21_n333
+end
+
+def fun_l20_n763()
+ fun_l21_n36
+end
+
+def fun_l20_n764()
+ fun_l21_n166
+end
+
+def fun_l20_n765()
+ fun_l21_n824
+end
+
+def fun_l20_n766()
+ fun_l21_n416
+end
+
+def fun_l20_n767()
+ fun_l21_n655
+end
+
+def fun_l20_n768()
+ fun_l21_n267
+end
+
+def fun_l20_n769()
+ fun_l21_n257
+end
+
+def fun_l20_n770()
+ fun_l21_n839
+end
+
+def fun_l20_n771()
+ fun_l21_n504
+end
+
+def fun_l20_n772()
+ fun_l21_n717
+end
+
+def fun_l20_n773()
+ fun_l21_n332
+end
+
+def fun_l20_n774()
+ fun_l21_n949
+end
+
+def fun_l20_n775()
+ fun_l21_n226
+end
+
+def fun_l20_n776()
+ fun_l21_n145
+end
+
+def fun_l20_n777()
+ fun_l21_n548
+end
+
+def fun_l20_n778()
+ fun_l21_n912
+end
+
+def fun_l20_n779()
+ fun_l21_n984
+end
+
+def fun_l20_n780()
+ fun_l21_n907
+end
+
+def fun_l20_n781()
+ fun_l21_n433
+end
+
+def fun_l20_n782()
+ fun_l21_n542
+end
+
+def fun_l20_n783()
+ fun_l21_n88
+end
+
+def fun_l20_n784()
+ fun_l21_n104
+end
+
+def fun_l20_n785()
+ fun_l21_n383
+end
+
+def fun_l20_n786()
+ fun_l21_n998
+end
+
+def fun_l20_n787()
+ fun_l21_n525
+end
+
+def fun_l20_n788()
+ fun_l21_n276
+end
+
+def fun_l20_n789()
+ fun_l21_n162
+end
+
+def fun_l20_n790()
+ fun_l21_n420
+end
+
+def fun_l20_n791()
+ fun_l21_n793
+end
+
+def fun_l20_n792()
+ fun_l21_n121
+end
+
+def fun_l20_n793()
+ fun_l21_n164
+end
+
+def fun_l20_n794()
+ fun_l21_n110
+end
+
+def fun_l20_n795()
+ fun_l21_n68
+end
+
+def fun_l20_n796()
+ fun_l21_n417
+end
+
+def fun_l20_n797()
+ fun_l21_n878
+end
+
+def fun_l20_n798()
+ fun_l21_n987
+end
+
+def fun_l20_n799()
+ fun_l21_n197
+end
+
+def fun_l20_n800()
+ fun_l21_n729
+end
+
+def fun_l20_n801()
+ fun_l21_n956
+end
+
+def fun_l20_n802()
+ fun_l21_n33
+end
+
+def fun_l20_n803()
+ fun_l21_n73
+end
+
+def fun_l20_n804()
+ fun_l21_n759
+end
+
+def fun_l20_n805()
+ fun_l21_n784
+end
+
+def fun_l20_n806()
+ fun_l21_n102
+end
+
+def fun_l20_n807()
+ fun_l21_n624
+end
+
+def fun_l20_n808()
+ fun_l21_n580
+end
+
+def fun_l20_n809()
+ fun_l21_n347
+end
+
+def fun_l20_n810()
+ fun_l21_n163
+end
+
+def fun_l20_n811()
+ fun_l21_n220
+end
+
+def fun_l20_n812()
+ fun_l21_n324
+end
+
+def fun_l20_n813()
+ fun_l21_n299
+end
+
+def fun_l20_n814()
+ fun_l21_n958
+end
+
+def fun_l20_n815()
+ fun_l21_n252
+end
+
+def fun_l20_n816()
+ fun_l21_n479
+end
+
+def fun_l20_n817()
+ fun_l21_n536
+end
+
+def fun_l20_n818()
+ fun_l21_n624
+end
+
+def fun_l20_n819()
+ fun_l21_n347
+end
+
+def fun_l20_n820()
+ fun_l21_n308
+end
+
+def fun_l20_n821()
+ fun_l21_n4
+end
+
+def fun_l20_n822()
+ fun_l21_n88
+end
+
+def fun_l20_n823()
+ fun_l21_n787
+end
+
+def fun_l20_n824()
+ fun_l21_n450
+end
+
+def fun_l20_n825()
+ fun_l21_n384
+end
+
+def fun_l20_n826()
+ fun_l21_n416
+end
+
+def fun_l20_n827()
+ fun_l21_n73
+end
+
+def fun_l20_n828()
+ fun_l21_n884
+end
+
+def fun_l20_n829()
+ fun_l21_n51
+end
+
+def fun_l20_n830()
+ fun_l21_n37
+end
+
+def fun_l20_n831()
+ fun_l21_n326
+end
+
+def fun_l20_n832()
+ fun_l21_n120
+end
+
+def fun_l20_n833()
+ fun_l21_n957
+end
+
+def fun_l20_n834()
+ fun_l21_n973
+end
+
+def fun_l20_n835()
+ fun_l21_n966
+end
+
+def fun_l20_n836()
+ fun_l21_n110
+end
+
+def fun_l20_n837()
+ fun_l21_n57
+end
+
+def fun_l20_n838()
+ fun_l21_n836
+end
+
+def fun_l20_n839()
+ fun_l21_n701
+end
+
+def fun_l20_n840()
+ fun_l21_n607
+end
+
+def fun_l20_n841()
+ fun_l21_n92
+end
+
+def fun_l20_n842()
+ fun_l21_n304
+end
+
+def fun_l20_n843()
+ fun_l21_n443
+end
+
+def fun_l20_n844()
+ fun_l21_n282
+end
+
+def fun_l20_n845()
+ fun_l21_n301
+end
+
+def fun_l20_n846()
+ fun_l21_n360
+end
+
+def fun_l20_n847()
+ fun_l21_n848
+end
+
+def fun_l20_n848()
+ fun_l21_n796
+end
+
+def fun_l20_n849()
+ fun_l21_n81
+end
+
+def fun_l20_n850()
+ fun_l21_n126
+end
+
+def fun_l20_n851()
+ fun_l21_n951
+end
+
+def fun_l20_n852()
+ fun_l21_n187
+end
+
+def fun_l20_n853()
+ fun_l21_n498
+end
+
+def fun_l20_n854()
+ fun_l21_n885
+end
+
+def fun_l20_n855()
+ fun_l21_n391
+end
+
+def fun_l20_n856()
+ fun_l21_n823
+end
+
+def fun_l20_n857()
+ fun_l21_n516
+end
+
+def fun_l20_n858()
+ fun_l21_n266
+end
+
+def fun_l20_n859()
+ fun_l21_n617
+end
+
+def fun_l20_n860()
+ fun_l21_n440
+end
+
+def fun_l20_n861()
+ fun_l21_n694
+end
+
+def fun_l20_n862()
+ fun_l21_n128
+end
+
+def fun_l20_n863()
+ fun_l21_n340
+end
+
+def fun_l20_n864()
+ fun_l21_n234
+end
+
+def fun_l20_n865()
+ fun_l21_n324
+end
+
+def fun_l20_n866()
+ fun_l21_n233
+end
+
+def fun_l20_n867()
+ fun_l21_n26
+end
+
+def fun_l20_n868()
+ fun_l21_n548
+end
+
+def fun_l20_n869()
+ fun_l21_n563
+end
+
+def fun_l20_n870()
+ fun_l21_n452
+end
+
+def fun_l20_n871()
+ fun_l21_n223
+end
+
+def fun_l20_n872()
+ fun_l21_n147
+end
+
+def fun_l20_n873()
+ fun_l21_n147
+end
+
+def fun_l20_n874()
+ fun_l21_n266
+end
+
+def fun_l20_n875()
+ fun_l21_n335
+end
+
+def fun_l20_n876()
+ fun_l21_n253
+end
+
+def fun_l20_n877()
+ fun_l21_n479
+end
+
+def fun_l20_n878()
+ fun_l21_n34
+end
+
+def fun_l20_n879()
+ fun_l21_n798
+end
+
+def fun_l20_n880()
+ fun_l21_n223
+end
+
+def fun_l20_n881()
+ fun_l21_n343
+end
+
+def fun_l20_n882()
+ fun_l21_n728
+end
+
+def fun_l20_n883()
+ fun_l21_n351
+end
+
+def fun_l20_n884()
+ fun_l21_n997
+end
+
+def fun_l20_n885()
+ fun_l21_n49
+end
+
+def fun_l20_n886()
+ fun_l21_n773
+end
+
+def fun_l20_n887()
+ fun_l21_n93
+end
+
+def fun_l20_n888()
+ fun_l21_n124
+end
+
+def fun_l20_n889()
+ fun_l21_n897
+end
+
+def fun_l20_n890()
+ fun_l21_n692
+end
+
+def fun_l20_n891()
+ fun_l21_n158
+end
+
+def fun_l20_n892()
+ fun_l21_n456
+end
+
+def fun_l20_n893()
+ fun_l21_n49
+end
+
+def fun_l20_n894()
+ fun_l21_n751
+end
+
+def fun_l20_n895()
+ fun_l21_n672
+end
+
+def fun_l20_n896()
+ fun_l21_n726
+end
+
+def fun_l20_n897()
+ fun_l21_n95
+end
+
+def fun_l20_n898()
+ fun_l21_n420
+end
+
+def fun_l20_n899()
+ fun_l21_n77
+end
+
+def fun_l20_n900()
+ fun_l21_n770
+end
+
+def fun_l20_n901()
+ fun_l21_n127
+end
+
+def fun_l20_n902()
+ fun_l21_n566
+end
+
+def fun_l20_n903()
+ fun_l21_n398
+end
+
+def fun_l20_n904()
+ fun_l21_n720
+end
+
+def fun_l20_n905()
+ fun_l21_n350
+end
+
+def fun_l20_n906()
+ fun_l21_n935
+end
+
+def fun_l20_n907()
+ fun_l21_n172
+end
+
+def fun_l20_n908()
+ fun_l21_n988
+end
+
+def fun_l20_n909()
+ fun_l21_n627
+end
+
+def fun_l20_n910()
+ fun_l21_n776
+end
+
+def fun_l20_n911()
+ fun_l21_n34
+end
+
+def fun_l20_n912()
+ fun_l21_n361
+end
+
+def fun_l20_n913()
+ fun_l21_n408
+end
+
+def fun_l20_n914()
+ fun_l21_n941
+end
+
+def fun_l20_n915()
+ fun_l21_n275
+end
+
+def fun_l20_n916()
+ fun_l21_n864
+end
+
+def fun_l20_n917()
+ fun_l21_n839
+end
+
+def fun_l20_n918()
+ fun_l21_n837
+end
+
+def fun_l20_n919()
+ fun_l21_n837
+end
+
+def fun_l20_n920()
+ fun_l21_n627
+end
+
+def fun_l20_n921()
+ fun_l21_n321
+end
+
+def fun_l20_n922()
+ fun_l21_n308
+end
+
+def fun_l20_n923()
+ fun_l21_n475
+end
+
+def fun_l20_n924()
+ fun_l21_n115
+end
+
+def fun_l20_n925()
+ fun_l21_n794
+end
+
+def fun_l20_n926()
+ fun_l21_n376
+end
+
+def fun_l20_n927()
+ fun_l21_n951
+end
+
+def fun_l20_n928()
+ fun_l21_n744
+end
+
+def fun_l20_n929()
+ fun_l21_n621
+end
+
+def fun_l20_n930()
+ fun_l21_n630
+end
+
+def fun_l20_n931()
+ fun_l21_n459
+end
+
+def fun_l20_n932()
+ fun_l21_n41
+end
+
+def fun_l20_n933()
+ fun_l21_n313
+end
+
+def fun_l20_n934()
+ fun_l21_n130
+end
+
+def fun_l20_n935()
+ fun_l21_n605
+end
+
+def fun_l20_n936()
+ fun_l21_n261
+end
+
+def fun_l20_n937()
+ fun_l21_n54
+end
+
+def fun_l20_n938()
+ fun_l21_n319
+end
+
+def fun_l20_n939()
+ fun_l21_n541
+end
+
+def fun_l20_n940()
+ fun_l21_n104
+end
+
+def fun_l20_n941()
+ fun_l21_n339
+end
+
+def fun_l20_n942()
+ fun_l21_n220
+end
+
+def fun_l20_n943()
+ fun_l21_n560
+end
+
+def fun_l20_n944()
+ fun_l21_n931
+end
+
+def fun_l20_n945()
+ fun_l21_n642
+end
+
+def fun_l20_n946()
+ fun_l21_n584
+end
+
+def fun_l20_n947()
+ fun_l21_n324
+end
+
+def fun_l20_n948()
+ fun_l21_n10
+end
+
+def fun_l20_n949()
+ fun_l21_n976
+end
+
+def fun_l20_n950()
+ fun_l21_n65
+end
+
+def fun_l20_n951()
+ fun_l21_n392
+end
+
+def fun_l20_n952()
+ fun_l21_n263
+end
+
+def fun_l20_n953()
+ fun_l21_n228
+end
+
+def fun_l20_n954()
+ fun_l21_n177
+end
+
+def fun_l20_n955()
+ fun_l21_n81
+end
+
+def fun_l20_n956()
+ fun_l21_n141
+end
+
+def fun_l20_n957()
+ fun_l21_n540
+end
+
+def fun_l20_n958()
+ fun_l21_n802
+end
+
+def fun_l20_n959()
+ fun_l21_n28
+end
+
+def fun_l20_n960()
+ fun_l21_n438
+end
+
+def fun_l20_n961()
+ fun_l21_n722
+end
+
+def fun_l20_n962()
+ fun_l21_n707
+end
+
+def fun_l20_n963()
+ fun_l21_n598
+end
+
+def fun_l20_n964()
+ fun_l21_n687
+end
+
+def fun_l20_n965()
+ fun_l21_n258
+end
+
+def fun_l20_n966()
+ fun_l21_n786
+end
+
+def fun_l20_n967()
+ fun_l21_n362
+end
+
+def fun_l20_n968()
+ fun_l21_n41
+end
+
+def fun_l20_n969()
+ fun_l21_n933
+end
+
+def fun_l20_n970()
+ fun_l21_n250
+end
+
+def fun_l20_n971()
+ fun_l21_n760
+end
+
+def fun_l20_n972()
+ fun_l21_n993
+end
+
+def fun_l20_n973()
+ fun_l21_n278
+end
+
+def fun_l20_n974()
+ fun_l21_n477
+end
+
+def fun_l20_n975()
+ fun_l21_n901
+end
+
+def fun_l20_n976()
+ fun_l21_n820
+end
+
+def fun_l20_n977()
+ fun_l21_n739
+end
+
+def fun_l20_n978()
+ fun_l21_n722
+end
+
+def fun_l20_n979()
+ fun_l21_n418
+end
+
+def fun_l20_n980()
+ fun_l21_n207
+end
+
+def fun_l20_n981()
+ fun_l21_n213
+end
+
+def fun_l20_n982()
+ fun_l21_n30
+end
+
+def fun_l20_n983()
+ fun_l21_n667
+end
+
+def fun_l20_n984()
+ fun_l21_n582
+end
+
+def fun_l20_n985()
+ fun_l21_n398
+end
+
+def fun_l20_n986()
+ fun_l21_n376
+end
+
+def fun_l20_n987()
+ fun_l21_n84
+end
+
+def fun_l20_n988()
+ fun_l21_n701
+end
+
+def fun_l20_n989()
+ fun_l21_n100
+end
+
+def fun_l20_n990()
+ fun_l21_n247
+end
+
+def fun_l20_n991()
+ fun_l21_n992
+end
+
+def fun_l20_n992()
+ fun_l21_n635
+end
+
+def fun_l20_n993()
+ fun_l21_n493
+end
+
+def fun_l20_n994()
+ fun_l21_n184
+end
+
+def fun_l20_n995()
+ fun_l21_n31
+end
+
+def fun_l20_n996()
+ fun_l21_n555
+end
+
+def fun_l20_n997()
+ fun_l21_n258
+end
+
+def fun_l20_n998()
+ fun_l21_n32
+end
+
+def fun_l20_n999()
+ fun_l21_n6
+end
+
+def fun_l21_n0()
+ fun_l22_n98
+end
+
+def fun_l21_n1()
+ fun_l22_n194
+end
+
+def fun_l21_n2()
+ fun_l22_n510
+end
+
+def fun_l21_n3()
+ fun_l22_n707
+end
+
+def fun_l21_n4()
+ fun_l22_n878
+end
+
+def fun_l21_n5()
+ fun_l22_n615
+end
+
+def fun_l21_n6()
+ fun_l22_n891
+end
+
+def fun_l21_n7()
+ fun_l22_n458
+end
+
+def fun_l21_n8()
+ fun_l22_n478
+end
+
+def fun_l21_n9()
+ fun_l22_n30
+end
+
+def fun_l21_n10()
+ fun_l22_n345
+end
+
+def fun_l21_n11()
+ fun_l22_n202
+end
+
+def fun_l21_n12()
+ fun_l22_n354
+end
+
+def fun_l21_n13()
+ fun_l22_n673
+end
+
+def fun_l21_n14()
+ fun_l22_n662
+end
+
+def fun_l21_n15()
+ fun_l22_n593
+end
+
+def fun_l21_n16()
+ fun_l22_n127
+end
+
+def fun_l21_n17()
+ fun_l22_n876
+end
+
+def fun_l21_n18()
+ fun_l22_n862
+end
+
+def fun_l21_n19()
+ fun_l22_n337
+end
+
+def fun_l21_n20()
+ fun_l22_n365
+end
+
+def fun_l21_n21()
+ fun_l22_n323
+end
+
+def fun_l21_n22()
+ fun_l22_n767
+end
+
+def fun_l21_n23()
+ fun_l22_n364
+end
+
+def fun_l21_n24()
+ fun_l22_n562
+end
+
+def fun_l21_n25()
+ fun_l22_n420
+end
+
+def fun_l21_n26()
+ fun_l22_n754
+end
+
+def fun_l21_n27()
+ fun_l22_n381
+end
+
+def fun_l21_n28()
+ fun_l22_n393
+end
+
+def fun_l21_n29()
+ fun_l22_n25
+end
+
+def fun_l21_n30()
+ fun_l22_n951
+end
+
+def fun_l21_n31()
+ fun_l22_n271
+end
+
+def fun_l21_n32()
+ fun_l22_n127
+end
+
+def fun_l21_n33()
+ fun_l22_n962
+end
+
+def fun_l21_n34()
+ fun_l22_n611
+end
+
+def fun_l21_n35()
+ fun_l22_n936
+end
+
+def fun_l21_n36()
+ fun_l22_n340
+end
+
+def fun_l21_n37()
+ fun_l22_n349
+end
+
+def fun_l21_n38()
+ fun_l22_n692
+end
+
+def fun_l21_n39()
+ fun_l22_n184
+end
+
+def fun_l21_n40()
+ fun_l22_n490
+end
+
+def fun_l21_n41()
+ fun_l22_n316
+end
+
+def fun_l21_n42()
+ fun_l22_n545
+end
+
+def fun_l21_n43()
+ fun_l22_n344
+end
+
+def fun_l21_n44()
+ fun_l22_n938
+end
+
+def fun_l21_n45()
+ fun_l22_n820
+end
+
+def fun_l21_n46()
+ fun_l22_n60
+end
+
+def fun_l21_n47()
+ fun_l22_n649
+end
+
+def fun_l21_n48()
+ fun_l22_n41
+end
+
+def fun_l21_n49()
+ fun_l22_n305
+end
+
+def fun_l21_n50()
+ fun_l22_n677
+end
+
+def fun_l21_n51()
+ fun_l22_n880
+end
+
+def fun_l21_n52()
+ fun_l22_n535
+end
+
+def fun_l21_n53()
+ fun_l22_n686
+end
+
+def fun_l21_n54()
+ fun_l22_n194
+end
+
+def fun_l21_n55()
+ fun_l22_n313
+end
+
+def fun_l21_n56()
+ fun_l22_n639
+end
+
+def fun_l21_n57()
+ fun_l22_n182
+end
+
+def fun_l21_n58()
+ fun_l22_n588
+end
+
+def fun_l21_n59()
+ fun_l22_n979
+end
+
+def fun_l21_n60()
+ fun_l22_n230
+end
+
+def fun_l21_n61()
+ fun_l22_n139
+end
+
+def fun_l21_n62()
+ fun_l22_n899
+end
+
+def fun_l21_n63()
+ fun_l22_n532
+end
+
+def fun_l21_n64()
+ fun_l22_n479
+end
+
+def fun_l21_n65()
+ fun_l22_n735
+end
+
+def fun_l21_n66()
+ fun_l22_n425
+end
+
+def fun_l21_n67()
+ fun_l22_n878
+end
+
+def fun_l21_n68()
+ fun_l22_n706
+end
+
+def fun_l21_n69()
+ fun_l22_n826
+end
+
+def fun_l21_n70()
+ fun_l22_n44
+end
+
+def fun_l21_n71()
+ fun_l22_n107
+end
+
+def fun_l21_n72()
+ fun_l22_n737
+end
+
+def fun_l21_n73()
+ fun_l22_n659
+end
+
+def fun_l21_n74()
+ fun_l22_n707
+end
+
+def fun_l21_n75()
+ fun_l22_n658
+end
+
+def fun_l21_n76()
+ fun_l22_n937
+end
+
+def fun_l21_n77()
+ fun_l22_n86
+end
+
+def fun_l21_n78()
+ fun_l22_n606
+end
+
+def fun_l21_n79()
+ fun_l22_n61
+end
+
+def fun_l21_n80()
+ fun_l22_n780
+end
+
+def fun_l21_n81()
+ fun_l22_n560
+end
+
+def fun_l21_n82()
+ fun_l22_n949
+end
+
+def fun_l21_n83()
+ fun_l22_n790
+end
+
+def fun_l21_n84()
+ fun_l22_n851
+end
+
+def fun_l21_n85()
+ fun_l22_n148
+end
+
+def fun_l21_n86()
+ fun_l22_n406
+end
+
+def fun_l21_n87()
+ fun_l22_n38
+end
+
+def fun_l21_n88()
+ fun_l22_n468
+end
+
+def fun_l21_n89()
+ fun_l22_n783
+end
+
+def fun_l21_n90()
+ fun_l22_n853
+end
+
+def fun_l21_n91()
+ fun_l22_n758
+end
+
+def fun_l21_n92()
+ fun_l22_n34
+end
+
+def fun_l21_n93()
+ fun_l22_n387
+end
+
+def fun_l21_n94()
+ fun_l22_n181
+end
+
+def fun_l21_n95()
+ fun_l22_n514
+end
+
+def fun_l21_n96()
+ fun_l22_n139
+end
+
+def fun_l21_n97()
+ fun_l22_n543
+end
+
+def fun_l21_n98()
+ fun_l22_n462
+end
+
+def fun_l21_n99()
+ fun_l22_n570
+end
+
+def fun_l21_n100()
+ fun_l22_n634
+end
+
+def fun_l21_n101()
+ fun_l22_n69
+end
+
+def fun_l21_n102()
+ fun_l22_n142
+end
+
+def fun_l21_n103()
+ fun_l22_n964
+end
+
+def fun_l21_n104()
+ fun_l22_n851
+end
+
+def fun_l21_n105()
+ fun_l22_n410
+end
+
+def fun_l21_n106()
+ fun_l22_n563
+end
+
+def fun_l21_n107()
+ fun_l22_n914
+end
+
+def fun_l21_n108()
+ fun_l22_n163
+end
+
+def fun_l21_n109()
+ fun_l22_n248
+end
+
+def fun_l21_n110()
+ fun_l22_n309
+end
+
+def fun_l21_n111()
+ fun_l22_n894
+end
+
+def fun_l21_n112()
+ fun_l22_n916
+end
+
+def fun_l21_n113()
+ fun_l22_n818
+end
+
+def fun_l21_n114()
+ fun_l22_n824
+end
+
+def fun_l21_n115()
+ fun_l22_n34
+end
+
+def fun_l21_n116()
+ fun_l22_n538
+end
+
+def fun_l21_n117()
+ fun_l22_n841
+end
+
+def fun_l21_n118()
+ fun_l22_n934
+end
+
+def fun_l21_n119()
+ fun_l22_n217
+end
+
+def fun_l21_n120()
+ fun_l22_n479
+end
+
+def fun_l21_n121()
+ fun_l22_n693
+end
+
+def fun_l21_n122()
+ fun_l22_n182
+end
+
+def fun_l21_n123()
+ fun_l22_n269
+end
+
+def fun_l21_n124()
+ fun_l22_n324
+end
+
+def fun_l21_n125()
+ fun_l22_n688
+end
+
+def fun_l21_n126()
+ fun_l22_n725
+end
+
+def fun_l21_n127()
+ fun_l22_n48
+end
+
+def fun_l21_n128()
+ fun_l22_n884
+end
+
+def fun_l21_n129()
+ fun_l22_n295
+end
+
+def fun_l21_n130()
+ fun_l22_n192
+end
+
+def fun_l21_n131()
+ fun_l22_n777
+end
+
+def fun_l21_n132()
+ fun_l22_n87
+end
+
+def fun_l21_n133()
+ fun_l22_n724
+end
+
+def fun_l21_n134()
+ fun_l22_n235
+end
+
+def fun_l21_n135()
+ fun_l22_n239
+end
+
+def fun_l21_n136()
+ fun_l22_n820
+end
+
+def fun_l21_n137()
+ fun_l22_n552
+end
+
+def fun_l21_n138()
+ fun_l22_n227
+end
+
+def fun_l21_n139()
+ fun_l22_n806
+end
+
+def fun_l21_n140()
+ fun_l22_n350
+end
+
+def fun_l21_n141()
+ fun_l22_n226
+end
+
+def fun_l21_n142()
+ fun_l22_n166
+end
+
+def fun_l21_n143()
+ fun_l22_n480
+end
+
+def fun_l21_n144()
+ fun_l22_n28
+end
+
+def fun_l21_n145()
+ fun_l22_n661
+end
+
+def fun_l21_n146()
+ fun_l22_n464
+end
+
+def fun_l21_n147()
+ fun_l22_n573
+end
+
+def fun_l21_n148()
+ fun_l22_n589
+end
+
+def fun_l21_n149()
+ fun_l22_n856
+end
+
+def fun_l21_n150()
+ fun_l22_n181
+end
+
+def fun_l21_n151()
+ fun_l22_n252
+end
+
+def fun_l21_n152()
+ fun_l22_n80
+end
+
+def fun_l21_n153()
+ fun_l22_n417
+end
+
+def fun_l21_n154()
+ fun_l22_n442
+end
+
+def fun_l21_n155()
+ fun_l22_n928
+end
+
+def fun_l21_n156()
+ fun_l22_n38
+end
+
+def fun_l21_n157()
+ fun_l22_n515
+end
+
+def fun_l21_n158()
+ fun_l22_n986
+end
+
+def fun_l21_n159()
+ fun_l22_n173
+end
+
+def fun_l21_n160()
+ fun_l22_n592
+end
+
+def fun_l21_n161()
+ fun_l22_n50
+end
+
+def fun_l21_n162()
+ fun_l22_n625
+end
+
+def fun_l21_n163()
+ fun_l22_n651
+end
+
+def fun_l21_n164()
+ fun_l22_n183
+end
+
+def fun_l21_n165()
+ fun_l22_n976
+end
+
+def fun_l21_n166()
+ fun_l22_n533
+end
+
+def fun_l21_n167()
+ fun_l22_n313
+end
+
+def fun_l21_n168()
+ fun_l22_n948
+end
+
+def fun_l21_n169()
+ fun_l22_n860
+end
+
+def fun_l21_n170()
+ fun_l22_n393
+end
+
+def fun_l21_n171()
+ fun_l22_n986
+end
+
+def fun_l21_n172()
+ fun_l22_n206
+end
+
+def fun_l21_n173()
+ fun_l22_n189
+end
+
+def fun_l21_n174()
+ fun_l22_n209
+end
+
+def fun_l21_n175()
+ fun_l22_n822
+end
+
+def fun_l21_n176()
+ fun_l22_n960
+end
+
+def fun_l21_n177()
+ fun_l22_n646
+end
+
+def fun_l21_n178()
+ fun_l22_n523
+end
+
+def fun_l21_n179()
+ fun_l22_n520
+end
+
+def fun_l21_n180()
+ fun_l22_n146
+end
+
+def fun_l21_n181()
+ fun_l22_n336
+end
+
+def fun_l21_n182()
+ fun_l22_n129
+end
+
+def fun_l21_n183()
+ fun_l22_n382
+end
+
+def fun_l21_n184()
+ fun_l22_n833
+end
+
+def fun_l21_n185()
+ fun_l22_n398
+end
+
+def fun_l21_n186()
+ fun_l22_n919
+end
+
+def fun_l21_n187()
+ fun_l22_n463
+end
+
+def fun_l21_n188()
+ fun_l22_n442
+end
+
+def fun_l21_n189()
+ fun_l22_n395
+end
+
+def fun_l21_n190()
+ fun_l22_n934
+end
+
+def fun_l21_n191()
+ fun_l22_n117
+end
+
+def fun_l21_n192()
+ fun_l22_n436
+end
+
+def fun_l21_n193()
+ fun_l22_n316
+end
+
+def fun_l21_n194()
+ fun_l22_n512
+end
+
+def fun_l21_n195()
+ fun_l22_n565
+end
+
+def fun_l21_n196()
+ fun_l22_n494
+end
+
+def fun_l21_n197()
+ fun_l22_n586
+end
+
+def fun_l21_n198()
+ fun_l22_n456
+end
+
+def fun_l21_n199()
+ fun_l22_n465
+end
+
+def fun_l21_n200()
+ fun_l22_n622
+end
+
+def fun_l21_n201()
+ fun_l22_n747
+end
+
+def fun_l21_n202()
+ fun_l22_n216
+end
+
+def fun_l21_n203()
+ fun_l22_n568
+end
+
+def fun_l21_n204()
+ fun_l22_n94
+end
+
+def fun_l21_n205()
+ fun_l22_n839
+end
+
+def fun_l21_n206()
+ fun_l22_n357
+end
+
+def fun_l21_n207()
+ fun_l22_n485
+end
+
+def fun_l21_n208()
+ fun_l22_n818
+end
+
+def fun_l21_n209()
+ fun_l22_n852
+end
+
+def fun_l21_n210()
+ fun_l22_n264
+end
+
+def fun_l21_n211()
+ fun_l22_n519
+end
+
+def fun_l21_n212()
+ fun_l22_n362
+end
+
+def fun_l21_n213()
+ fun_l22_n955
+end
+
+def fun_l21_n214()
+ fun_l22_n756
+end
+
+def fun_l21_n215()
+ fun_l22_n271
+end
+
+def fun_l21_n216()
+ fun_l22_n169
+end
+
+def fun_l21_n217()
+ fun_l22_n456
+end
+
+def fun_l21_n218()
+ fun_l22_n227
+end
+
+def fun_l21_n219()
+ fun_l22_n75
+end
+
+def fun_l21_n220()
+ fun_l22_n21
+end
+
+def fun_l21_n221()
+ fun_l22_n35
+end
+
+def fun_l21_n222()
+ fun_l22_n386
+end
+
+def fun_l21_n223()
+ fun_l22_n678
+end
+
+def fun_l21_n224()
+ fun_l22_n463
+end
+
+def fun_l21_n225()
+ fun_l22_n200
+end
+
+def fun_l21_n226()
+ fun_l22_n502
+end
+
+def fun_l21_n227()
+ fun_l22_n690
+end
+
+def fun_l21_n228()
+ fun_l22_n153
+end
+
+def fun_l21_n229()
+ fun_l22_n218
+end
+
+def fun_l21_n230()
+ fun_l22_n20
+end
+
+def fun_l21_n231()
+ fun_l22_n48
+end
+
+def fun_l21_n232()
+ fun_l22_n549
+end
+
+def fun_l21_n233()
+ fun_l22_n994
+end
+
+def fun_l21_n234()
+ fun_l22_n242
+end
+
+def fun_l21_n235()
+ fun_l22_n153
+end
+
+def fun_l21_n236()
+ fun_l22_n830
+end
+
+def fun_l21_n237()
+ fun_l22_n663
+end
+
+def fun_l21_n238()
+ fun_l22_n387
+end
+
+def fun_l21_n239()
+ fun_l22_n87
+end
+
+def fun_l21_n240()
+ fun_l22_n341
+end
+
+def fun_l21_n241()
+ fun_l22_n499
+end
+
+def fun_l21_n242()
+ fun_l22_n231
+end
+
+def fun_l21_n243()
+ fun_l22_n644
+end
+
+def fun_l21_n244()
+ fun_l22_n212
+end
+
+def fun_l21_n245()
+ fun_l22_n197
+end
+
+def fun_l21_n246()
+ fun_l22_n831
+end
+
+def fun_l21_n247()
+ fun_l22_n62
+end
+
+def fun_l21_n248()
+ fun_l22_n689
+end
+
+def fun_l21_n249()
+ fun_l22_n884
+end
+
+def fun_l21_n250()
+ fun_l22_n767
+end
+
+def fun_l21_n251()
+ fun_l22_n278
+end
+
+def fun_l21_n252()
+ fun_l22_n881
+end
+
+def fun_l21_n253()
+ fun_l22_n585
+end
+
+def fun_l21_n254()
+ fun_l22_n967
+end
+
+def fun_l21_n255()
+ fun_l22_n381
+end
+
+def fun_l21_n256()
+ fun_l22_n579
+end
+
+def fun_l21_n257()
+ fun_l22_n447
+end
+
+def fun_l21_n258()
+ fun_l22_n156
+end
+
+def fun_l21_n259()
+ fun_l22_n722
+end
+
+def fun_l21_n260()
+ fun_l22_n431
+end
+
+def fun_l21_n261()
+ fun_l22_n83
+end
+
+def fun_l21_n262()
+ fun_l22_n41
+end
+
+def fun_l21_n263()
+ fun_l22_n18
+end
+
+def fun_l21_n264()
+ fun_l22_n686
+end
+
+def fun_l21_n265()
+ fun_l22_n668
+end
+
+def fun_l21_n266()
+ fun_l22_n652
+end
+
+def fun_l21_n267()
+ fun_l22_n121
+end
+
+def fun_l21_n268()
+ fun_l22_n279
+end
+
+def fun_l21_n269()
+ fun_l22_n540
+end
+
+def fun_l21_n270()
+ fun_l22_n360
+end
+
+def fun_l21_n271()
+ fun_l22_n106
+end
+
+def fun_l21_n272()
+ fun_l22_n454
+end
+
+def fun_l21_n273()
+ fun_l22_n882
+end
+
+def fun_l21_n274()
+ fun_l22_n523
+end
+
+def fun_l21_n275()
+ fun_l22_n938
+end
+
+def fun_l21_n276()
+ fun_l22_n932
+end
+
+def fun_l21_n277()
+ fun_l22_n923
+end
+
+def fun_l21_n278()
+ fun_l22_n728
+end
+
+def fun_l21_n279()
+ fun_l22_n587
+end
+
+def fun_l21_n280()
+ fun_l22_n608
+end
+
+def fun_l21_n281()
+ fun_l22_n366
+end
+
+def fun_l21_n282()
+ fun_l22_n486
+end
+
+def fun_l21_n283()
+ fun_l22_n864
+end
+
+def fun_l21_n284()
+ fun_l22_n34
+end
+
+def fun_l21_n285()
+ fun_l22_n658
+end
+
+def fun_l21_n286()
+ fun_l22_n488
+end
+
+def fun_l21_n287()
+ fun_l22_n266
+end
+
+def fun_l21_n288()
+ fun_l22_n810
+end
+
+def fun_l21_n289()
+ fun_l22_n965
+end
+
+def fun_l21_n290()
+ fun_l22_n513
+end
+
+def fun_l21_n291()
+ fun_l22_n608
+end
+
+def fun_l21_n292()
+ fun_l22_n499
+end
+
+def fun_l21_n293()
+ fun_l22_n360
+end
+
+def fun_l21_n294()
+ fun_l22_n511
+end
+
+def fun_l21_n295()
+ fun_l22_n940
+end
+
+def fun_l21_n296()
+ fun_l22_n99
+end
+
+def fun_l21_n297()
+ fun_l22_n496
+end
+
+def fun_l21_n298()
+ fun_l22_n273
+end
+
+def fun_l21_n299()
+ fun_l22_n232
+end
+
+def fun_l21_n300()
+ fun_l22_n165
+end
+
+def fun_l21_n301()
+ fun_l22_n531
+end
+
+def fun_l21_n302()
+ fun_l22_n773
+end
+
+def fun_l21_n303()
+ fun_l22_n610
+end
+
+def fun_l21_n304()
+ fun_l22_n564
+end
+
+def fun_l21_n305()
+ fun_l22_n16
+end
+
+def fun_l21_n306()
+ fun_l22_n176
+end
+
+def fun_l21_n307()
+ fun_l22_n846
+end
+
+def fun_l21_n308()
+ fun_l22_n680
+end
+
+def fun_l21_n309()
+ fun_l22_n858
+end
+
+def fun_l21_n310()
+ fun_l22_n220
+end
+
+def fun_l21_n311()
+ fun_l22_n125
+end
+
+def fun_l21_n312()
+ fun_l22_n441
+end
+
+def fun_l21_n313()
+ fun_l22_n751
+end
+
+def fun_l21_n314()
+ fun_l22_n863
+end
+
+def fun_l21_n315()
+ fun_l22_n284
+end
+
+def fun_l21_n316()
+ fun_l22_n648
+end
+
+def fun_l21_n317()
+ fun_l22_n363
+end
+
+def fun_l21_n318()
+ fun_l22_n427
+end
+
+def fun_l21_n319()
+ fun_l22_n557
+end
+
+def fun_l21_n320()
+ fun_l22_n531
+end
+
+def fun_l21_n321()
+ fun_l22_n252
+end
+
+def fun_l21_n322()
+ fun_l22_n393
+end
+
+def fun_l21_n323()
+ fun_l22_n108
+end
+
+def fun_l21_n324()
+ fun_l22_n138
+end
+
+def fun_l21_n325()
+ fun_l22_n68
+end
+
+def fun_l21_n326()
+ fun_l22_n909
+end
+
+def fun_l21_n327()
+ fun_l22_n672
+end
+
+def fun_l21_n328()
+ fun_l22_n746
+end
+
+def fun_l21_n329()
+ fun_l22_n479
+end
+
+def fun_l21_n330()
+ fun_l22_n892
+end
+
+def fun_l21_n331()
+ fun_l22_n30
+end
+
+def fun_l21_n332()
+ fun_l22_n184
+end
+
+def fun_l21_n333()
+ fun_l22_n956
+end
+
+def fun_l21_n334()
+ fun_l22_n712
+end
+
+def fun_l21_n335()
+ fun_l22_n929
+end
+
+def fun_l21_n336()
+ fun_l22_n914
+end
+
+def fun_l21_n337()
+ fun_l22_n14
+end
+
+def fun_l21_n338()
+ fun_l22_n471
+end
+
+def fun_l21_n339()
+ fun_l22_n488
+end
+
+def fun_l21_n340()
+ fun_l22_n40
+end
+
+def fun_l21_n341()
+ fun_l22_n406
+end
+
+def fun_l21_n342()
+ fun_l22_n11
+end
+
+def fun_l21_n343()
+ fun_l22_n779
+end
+
+def fun_l21_n344()
+ fun_l22_n999
+end
+
+def fun_l21_n345()
+ fun_l22_n833
+end
+
+def fun_l21_n346()
+ fun_l22_n897
+end
+
+def fun_l21_n347()
+ fun_l22_n365
+end
+
+def fun_l21_n348()
+ fun_l22_n583
+end
+
+def fun_l21_n349()
+ fun_l22_n326
+end
+
+def fun_l21_n350()
+ fun_l22_n556
+end
+
+def fun_l21_n351()
+ fun_l22_n249
+end
+
+def fun_l21_n352()
+ fun_l22_n146
+end
+
+def fun_l21_n353()
+ fun_l22_n865
+end
+
+def fun_l21_n354()
+ fun_l22_n303
+end
+
+def fun_l21_n355()
+ fun_l22_n64
+end
+
+def fun_l21_n356()
+ fun_l22_n785
+end
+
+def fun_l21_n357()
+ fun_l22_n176
+end
+
+def fun_l21_n358()
+ fun_l22_n891
+end
+
+def fun_l21_n359()
+ fun_l22_n129
+end
+
+def fun_l21_n360()
+ fun_l22_n19
+end
+
+def fun_l21_n361()
+ fun_l22_n372
+end
+
+def fun_l21_n362()
+ fun_l22_n999
+end
+
+def fun_l21_n363()
+ fun_l22_n450
+end
+
+def fun_l21_n364()
+ fun_l22_n455
+end
+
+def fun_l21_n365()
+ fun_l22_n174
+end
+
+def fun_l21_n366()
+ fun_l22_n719
+end
+
+def fun_l21_n367()
+ fun_l22_n997
+end
+
+def fun_l21_n368()
+ fun_l22_n256
+end
+
+def fun_l21_n369()
+ fun_l22_n206
+end
+
+def fun_l21_n370()
+ fun_l22_n988
+end
+
+def fun_l21_n371()
+ fun_l22_n147
+end
+
+def fun_l21_n372()
+ fun_l22_n750
+end
+
+def fun_l21_n373()
+ fun_l22_n585
+end
+
+def fun_l21_n374()
+ fun_l22_n213
+end
+
+def fun_l21_n375()
+ fun_l22_n583
+end
+
+def fun_l21_n376()
+ fun_l22_n564
+end
+
+def fun_l21_n377()
+ fun_l22_n689
+end
+
+def fun_l21_n378()
+ fun_l22_n955
+end
+
+def fun_l21_n379()
+ fun_l22_n560
+end
+
+def fun_l21_n380()
+ fun_l22_n237
+end
+
+def fun_l21_n381()
+ fun_l22_n272
+end
+
+def fun_l21_n382()
+ fun_l22_n455
+end
+
+def fun_l21_n383()
+ fun_l22_n233
+end
+
+def fun_l21_n384()
+ fun_l22_n658
+end
+
+def fun_l21_n385()
+ fun_l22_n319
+end
+
+def fun_l21_n386()
+ fun_l22_n852
+end
+
+def fun_l21_n387()
+ fun_l22_n343
+end
+
+def fun_l21_n388()
+ fun_l22_n645
+end
+
+def fun_l21_n389()
+ fun_l22_n433
+end
+
+def fun_l21_n390()
+ fun_l22_n430
+end
+
+def fun_l21_n391()
+ fun_l22_n636
+end
+
+def fun_l21_n392()
+ fun_l22_n682
+end
+
+def fun_l21_n393()
+ fun_l22_n859
+end
+
+def fun_l21_n394()
+ fun_l22_n315
+end
+
+def fun_l21_n395()
+ fun_l22_n91
+end
+
+def fun_l21_n396()
+ fun_l22_n817
+end
+
+def fun_l21_n397()
+ fun_l22_n268
+end
+
+def fun_l21_n398()
+ fun_l22_n476
+end
+
+def fun_l21_n399()
+ fun_l22_n612
+end
+
+def fun_l21_n400()
+ fun_l22_n392
+end
+
+def fun_l21_n401()
+ fun_l22_n728
+end
+
+def fun_l21_n402()
+ fun_l22_n652
+end
+
+def fun_l21_n403()
+ fun_l22_n547
+end
+
+def fun_l21_n404()
+ fun_l22_n101
+end
+
+def fun_l21_n405()
+ fun_l22_n666
+end
+
+def fun_l21_n406()
+ fun_l22_n521
+end
+
+def fun_l21_n407()
+ fun_l22_n860
+end
+
+def fun_l21_n408()
+ fun_l22_n577
+end
+
+def fun_l21_n409()
+ fun_l22_n258
+end
+
+def fun_l21_n410()
+ fun_l22_n260
+end
+
+def fun_l21_n411()
+ fun_l22_n927
+end
+
+def fun_l21_n412()
+ fun_l22_n13
+end
+
+def fun_l21_n413()
+ fun_l22_n308
+end
+
+def fun_l21_n414()
+ fun_l22_n189
+end
+
+def fun_l21_n415()
+ fun_l22_n183
+end
+
+def fun_l21_n416()
+ fun_l22_n370
+end
+
+def fun_l21_n417()
+ fun_l22_n407
+end
+
+def fun_l21_n418()
+ fun_l22_n959
+end
+
+def fun_l21_n419()
+ fun_l22_n908
+end
+
+def fun_l21_n420()
+ fun_l22_n84
+end
+
+def fun_l21_n421()
+ fun_l22_n951
+end
+
+def fun_l21_n422()
+ fun_l22_n286
+end
+
+def fun_l21_n423()
+ fun_l22_n54
+end
+
+def fun_l21_n424()
+ fun_l22_n410
+end
+
+def fun_l21_n425()
+ fun_l22_n387
+end
+
+def fun_l21_n426()
+ fun_l22_n751
+end
+
+def fun_l21_n427()
+ fun_l22_n971
+end
+
+def fun_l21_n428()
+ fun_l22_n162
+end
+
+def fun_l21_n429()
+ fun_l22_n15
+end
+
+def fun_l21_n430()
+ fun_l22_n35
+end
+
+def fun_l21_n431()
+ fun_l22_n354
+end
+
+def fun_l21_n432()
+ fun_l22_n979
+end
+
+def fun_l21_n433()
+ fun_l22_n999
+end
+
+def fun_l21_n434()
+ fun_l22_n622
+end
+
+def fun_l21_n435()
+ fun_l22_n970
+end
+
+def fun_l21_n436()
+ fun_l22_n758
+end
+
+def fun_l21_n437()
+ fun_l22_n950
+end
+
+def fun_l21_n438()
+ fun_l22_n865
+end
+
+def fun_l21_n439()
+ fun_l22_n31
+end
+
+def fun_l21_n440()
+ fun_l22_n620
+end
+
+def fun_l21_n441()
+ fun_l22_n170
+end
+
+def fun_l21_n442()
+ fun_l22_n816
+end
+
+def fun_l21_n443()
+ fun_l22_n364
+end
+
+def fun_l21_n444()
+ fun_l22_n289
+end
+
+def fun_l21_n445()
+ fun_l22_n949
+end
+
+def fun_l21_n446()
+ fun_l22_n876
+end
+
+def fun_l21_n447()
+ fun_l22_n971
+end
+
+def fun_l21_n448()
+ fun_l22_n343
+end
+
+def fun_l21_n449()
+ fun_l22_n14
+end
+
+def fun_l21_n450()
+ fun_l22_n925
+end
+
+def fun_l21_n451()
+ fun_l22_n234
+end
+
+def fun_l21_n452()
+ fun_l22_n242
+end
+
+def fun_l21_n453()
+ fun_l22_n184
+end
+
+def fun_l21_n454()
+ fun_l22_n158
+end
+
+def fun_l21_n455()
+ fun_l22_n645
+end
+
+def fun_l21_n456()
+ fun_l22_n173
+end
+
+def fun_l21_n457()
+ fun_l22_n363
+end
+
+def fun_l21_n458()
+ fun_l22_n787
+end
+
+def fun_l21_n459()
+ fun_l22_n102
+end
+
+def fun_l21_n460()
+ fun_l22_n886
+end
+
+def fun_l21_n461()
+ fun_l22_n279
+end
+
+def fun_l21_n462()
+ fun_l22_n909
+end
+
+def fun_l21_n463()
+ fun_l22_n767
+end
+
+def fun_l21_n464()
+ fun_l22_n82
+end
+
+def fun_l21_n465()
+ fun_l22_n249
+end
+
+def fun_l21_n466()
+ fun_l22_n670
+end
+
+def fun_l21_n467()
+ fun_l22_n944
+end
+
+def fun_l21_n468()
+ fun_l22_n191
+end
+
+def fun_l21_n469()
+ fun_l22_n897
+end
+
+def fun_l21_n470()
+ fun_l22_n591
+end
+
+def fun_l21_n471()
+ fun_l22_n164
+end
+
+def fun_l21_n472()
+ fun_l22_n984
+end
+
+def fun_l21_n473()
+ fun_l22_n26
+end
+
+def fun_l21_n474()
+ fun_l22_n398
+end
+
+def fun_l21_n475()
+ fun_l22_n668
+end
+
+def fun_l21_n476()
+ fun_l22_n190
+end
+
+def fun_l21_n477()
+ fun_l22_n249
+end
+
+def fun_l21_n478()
+ fun_l22_n736
+end
+
+def fun_l21_n479()
+ fun_l22_n714
+end
+
+def fun_l21_n480()
+ fun_l22_n929
+end
+
+def fun_l21_n481()
+ fun_l22_n448
+end
+
+def fun_l21_n482()
+ fun_l22_n922
+end
+
+def fun_l21_n483()
+ fun_l22_n992
+end
+
+def fun_l21_n484()
+ fun_l22_n306
+end
+
+def fun_l21_n485()
+ fun_l22_n420
+end
+
+def fun_l21_n486()
+ fun_l22_n630
+end
+
+def fun_l21_n487()
+ fun_l22_n263
+end
+
+def fun_l21_n488()
+ fun_l22_n754
+end
+
+def fun_l21_n489()
+ fun_l22_n96
+end
+
+def fun_l21_n490()
+ fun_l22_n338
+end
+
+def fun_l21_n491()
+ fun_l22_n615
+end
+
+def fun_l21_n492()
+ fun_l22_n704
+end
+
+def fun_l21_n493()
+ fun_l22_n581
+end
+
+def fun_l21_n494()
+ fun_l22_n801
+end
+
+def fun_l21_n495()
+ fun_l22_n204
+end
+
+def fun_l21_n496()
+ fun_l22_n835
+end
+
+def fun_l21_n497()
+ fun_l22_n479
+end
+
+def fun_l21_n498()
+ fun_l22_n379
+end
+
+def fun_l21_n499()
+ fun_l22_n937
+end
+
+def fun_l21_n500()
+ fun_l22_n830
+end
+
+def fun_l21_n501()
+ fun_l22_n458
+end
+
+def fun_l21_n502()
+ fun_l22_n806
+end
+
+def fun_l21_n503()
+ fun_l22_n158
+end
+
+def fun_l21_n504()
+ fun_l22_n151
+end
+
+def fun_l21_n505()
+ fun_l22_n685
+end
+
+def fun_l21_n506()
+ fun_l22_n806
+end
+
+def fun_l21_n507()
+ fun_l22_n584
+end
+
+def fun_l21_n508()
+ fun_l22_n644
+end
+
+def fun_l21_n509()
+ fun_l22_n237
+end
+
+def fun_l21_n510()
+ fun_l22_n542
+end
+
+def fun_l21_n511()
+ fun_l22_n450
+end
+
+def fun_l21_n512()
+ fun_l22_n385
+end
+
+def fun_l21_n513()
+ fun_l22_n321
+end
+
+def fun_l21_n514()
+ fun_l22_n548
+end
+
+def fun_l21_n515()
+ fun_l22_n519
+end
+
+def fun_l21_n516()
+ fun_l22_n309
+end
+
+def fun_l21_n517()
+ fun_l22_n4
+end
+
+def fun_l21_n518()
+ fun_l22_n930
+end
+
+def fun_l21_n519()
+ fun_l22_n245
+end
+
+def fun_l21_n520()
+ fun_l22_n568
+end
+
+def fun_l21_n521()
+ fun_l22_n527
+end
+
+def fun_l21_n522()
+ fun_l22_n650
+end
+
+def fun_l21_n523()
+ fun_l22_n391
+end
+
+def fun_l21_n524()
+ fun_l22_n749
+end
+
+def fun_l21_n525()
+ fun_l22_n810
+end
+
+def fun_l21_n526()
+ fun_l22_n615
+end
+
+def fun_l21_n527()
+ fun_l22_n702
+end
+
+def fun_l21_n528()
+ fun_l22_n62
+end
+
+def fun_l21_n529()
+ fun_l22_n316
+end
+
+def fun_l21_n530()
+ fun_l22_n201
+end
+
+def fun_l21_n531()
+ fun_l22_n447
+end
+
+def fun_l21_n532()
+ fun_l22_n506
+end
+
+def fun_l21_n533()
+ fun_l22_n900
+end
+
+def fun_l21_n534()
+ fun_l22_n652
+end
+
+def fun_l21_n535()
+ fun_l22_n493
+end
+
+def fun_l21_n536()
+ fun_l22_n803
+end
+
+def fun_l21_n537()
+ fun_l22_n263
+end
+
+def fun_l21_n538()
+ fun_l22_n303
+end
+
+def fun_l21_n539()
+ fun_l22_n17
+end
+
+def fun_l21_n540()
+ fun_l22_n900
+end
+
+def fun_l21_n541()
+ fun_l22_n917
+end
+
+def fun_l21_n542()
+ fun_l22_n789
+end
+
+def fun_l21_n543()
+ fun_l22_n668
+end
+
+def fun_l21_n544()
+ fun_l22_n335
+end
+
+def fun_l21_n545()
+ fun_l22_n560
+end
+
+def fun_l21_n546()
+ fun_l22_n705
+end
+
+def fun_l21_n547()
+ fun_l22_n159
+end
+
+def fun_l21_n548()
+ fun_l22_n874
+end
+
+def fun_l21_n549()
+ fun_l22_n809
+end
+
+def fun_l21_n550()
+ fun_l22_n726
+end
+
+def fun_l21_n551()
+ fun_l22_n27
+end
+
+def fun_l21_n552()
+ fun_l22_n63
+end
+
+def fun_l21_n553()
+ fun_l22_n642
+end
+
+def fun_l21_n554()
+ fun_l22_n694
+end
+
+def fun_l21_n555()
+ fun_l22_n432
+end
+
+def fun_l21_n556()
+ fun_l22_n439
+end
+
+def fun_l21_n557()
+ fun_l22_n876
+end
+
+def fun_l21_n558()
+ fun_l22_n998
+end
+
+def fun_l21_n559()
+ fun_l22_n703
+end
+
+def fun_l21_n560()
+ fun_l22_n785
+end
+
+def fun_l21_n561()
+ fun_l22_n543
+end
+
+def fun_l21_n562()
+ fun_l22_n286
+end
+
+def fun_l21_n563()
+ fun_l22_n771
+end
+
+def fun_l21_n564()
+ fun_l22_n447
+end
+
+def fun_l21_n565()
+ fun_l22_n955
+end
+
+def fun_l21_n566()
+ fun_l22_n603
+end
+
+def fun_l21_n567()
+ fun_l22_n258
+end
+
+def fun_l21_n568()
+ fun_l22_n936
+end
+
+def fun_l21_n569()
+ fun_l22_n524
+end
+
+def fun_l21_n570()
+ fun_l22_n205
+end
+
+def fun_l21_n571()
+ fun_l22_n41
+end
+
+def fun_l21_n572()
+ fun_l22_n589
+end
+
+def fun_l21_n573()
+ fun_l22_n519
+end
+
+def fun_l21_n574()
+ fun_l22_n500
+end
+
+def fun_l21_n575()
+ fun_l22_n307
+end
+
+def fun_l21_n576()
+ fun_l22_n598
+end
+
+def fun_l21_n577()
+ fun_l22_n698
+end
+
+def fun_l21_n578()
+ fun_l22_n200
+end
+
+def fun_l21_n579()
+ fun_l22_n657
+end
+
+def fun_l21_n580()
+ fun_l22_n353
+end
+
+def fun_l21_n581()
+ fun_l22_n553
+end
+
+def fun_l21_n582()
+ fun_l22_n490
+end
+
+def fun_l21_n583()
+ fun_l22_n112
+end
+
+def fun_l21_n584()
+ fun_l22_n626
+end
+
+def fun_l21_n585()
+ fun_l22_n815
+end
+
+def fun_l21_n586()
+ fun_l22_n792
+end
+
+def fun_l21_n587()
+ fun_l22_n295
+end
+
+def fun_l21_n588()
+ fun_l22_n201
+end
+
+def fun_l21_n589()
+ fun_l22_n248
+end
+
+def fun_l21_n590()
+ fun_l22_n295
+end
+
+def fun_l21_n591()
+ fun_l22_n708
+end
+
+def fun_l21_n592()
+ fun_l22_n507
+end
+
+def fun_l21_n593()
+ fun_l22_n177
+end
+
+def fun_l21_n594()
+ fun_l22_n467
+end
+
+def fun_l21_n595()
+ fun_l22_n113
+end
+
+def fun_l21_n596()
+ fun_l22_n390
+end
+
+def fun_l21_n597()
+ fun_l22_n348
+end
+
+def fun_l21_n598()
+ fun_l22_n545
+end
+
+def fun_l21_n599()
+ fun_l22_n695
+end
+
+def fun_l21_n600()
+ fun_l22_n170
+end
+
+def fun_l21_n601()
+ fun_l22_n978
+end
+
+def fun_l21_n602()
+ fun_l22_n70
+end
+
+def fun_l21_n603()
+ fun_l22_n161
+end
+
+def fun_l21_n604()
+ fun_l22_n33
+end
+
+def fun_l21_n605()
+ fun_l22_n275
+end
+
+def fun_l21_n606()
+ fun_l22_n738
+end
+
+def fun_l21_n607()
+ fun_l22_n152
+end
+
+def fun_l21_n608()
+ fun_l22_n380
+end
+
+def fun_l21_n609()
+ fun_l22_n903
+end
+
+def fun_l21_n610()
+ fun_l22_n274
+end
+
+def fun_l21_n611()
+ fun_l22_n100
+end
+
+def fun_l21_n612()
+ fun_l22_n206
+end
+
+def fun_l21_n613()
+ fun_l22_n225
+end
+
+def fun_l21_n614()
+ fun_l22_n627
+end
+
+def fun_l21_n615()
+ fun_l22_n332
+end
+
+def fun_l21_n616()
+ fun_l22_n312
+end
+
+def fun_l21_n617()
+ fun_l22_n379
+end
+
+def fun_l21_n618()
+ fun_l22_n889
+end
+
+def fun_l21_n619()
+ fun_l22_n399
+end
+
+def fun_l21_n620()
+ fun_l22_n212
+end
+
+def fun_l21_n621()
+ fun_l22_n289
+end
+
+def fun_l21_n622()
+ fun_l22_n161
+end
+
+def fun_l21_n623()
+ fun_l22_n764
+end
+
+def fun_l21_n624()
+ fun_l22_n165
+end
+
+def fun_l21_n625()
+ fun_l22_n768
+end
+
+def fun_l21_n626()
+ fun_l22_n596
+end
+
+def fun_l21_n627()
+ fun_l22_n506
+end
+
+def fun_l21_n628()
+ fun_l22_n523
+end
+
+def fun_l21_n629()
+ fun_l22_n261
+end
+
+def fun_l21_n630()
+ fun_l22_n683
+end
+
+def fun_l21_n631()
+ fun_l22_n518
+end
+
+def fun_l21_n632()
+ fun_l22_n813
+end
+
+def fun_l21_n633()
+ fun_l22_n949
+end
+
+def fun_l21_n634()
+ fun_l22_n856
+end
+
+def fun_l21_n635()
+ fun_l22_n250
+end
+
+def fun_l21_n636()
+ fun_l22_n840
+end
+
+def fun_l21_n637()
+ fun_l22_n763
+end
+
+def fun_l21_n638()
+ fun_l22_n40
+end
+
+def fun_l21_n639()
+ fun_l22_n13
+end
+
+def fun_l21_n640()
+ fun_l22_n789
+end
+
+def fun_l21_n641()
+ fun_l22_n517
+end
+
+def fun_l21_n642()
+ fun_l22_n366
+end
+
+def fun_l21_n643()
+ fun_l22_n155
+end
+
+def fun_l21_n644()
+ fun_l22_n370
+end
+
+def fun_l21_n645()
+ fun_l22_n633
+end
+
+def fun_l21_n646()
+ fun_l22_n996
+end
+
+def fun_l21_n647()
+ fun_l22_n943
+end
+
+def fun_l21_n648()
+ fun_l22_n81
+end
+
+def fun_l21_n649()
+ fun_l22_n161
+end
+
+def fun_l21_n650()
+ fun_l22_n346
+end
+
+def fun_l21_n651()
+ fun_l22_n338
+end
+
+def fun_l21_n652()
+ fun_l22_n989
+end
+
+def fun_l21_n653()
+ fun_l22_n727
+end
+
+def fun_l21_n654()
+ fun_l22_n261
+end
+
+def fun_l21_n655()
+ fun_l22_n975
+end
+
+def fun_l21_n656()
+ fun_l22_n635
+end
+
+def fun_l21_n657()
+ fun_l22_n622
+end
+
+def fun_l21_n658()
+ fun_l22_n519
+end
+
+def fun_l21_n659()
+ fun_l22_n619
+end
+
+def fun_l21_n660()
+ fun_l22_n489
+end
+
+def fun_l21_n661()
+ fun_l22_n876
+end
+
+def fun_l21_n662()
+ fun_l22_n261
+end
+
+def fun_l21_n663()
+ fun_l22_n96
+end
+
+def fun_l21_n664()
+ fun_l22_n984
+end
+
+def fun_l21_n665()
+ fun_l22_n367
+end
+
+def fun_l21_n666()
+ fun_l22_n100
+end
+
+def fun_l21_n667()
+ fun_l22_n555
+end
+
+def fun_l21_n668()
+ fun_l22_n438
+end
+
+def fun_l21_n669()
+ fun_l22_n141
+end
+
+def fun_l21_n670()
+ fun_l22_n240
+end
+
+def fun_l21_n671()
+ fun_l22_n185
+end
+
+def fun_l21_n672()
+ fun_l22_n199
+end
+
+def fun_l21_n673()
+ fun_l22_n166
+end
+
+def fun_l21_n674()
+ fun_l22_n322
+end
+
+def fun_l21_n675()
+ fun_l22_n811
+end
+
+def fun_l21_n676()
+ fun_l22_n18
+end
+
+def fun_l21_n677()
+ fun_l22_n800
+end
+
+def fun_l21_n678()
+ fun_l22_n729
+end
+
+def fun_l21_n679()
+ fun_l22_n862
+end
+
+def fun_l21_n680()
+ fun_l22_n911
+end
+
+def fun_l21_n681()
+ fun_l22_n342
+end
+
+def fun_l21_n682()
+ fun_l22_n635
+end
+
+def fun_l21_n683()
+ fun_l22_n814
+end
+
+def fun_l21_n684()
+ fun_l22_n786
+end
+
+def fun_l21_n685()
+ fun_l22_n598
+end
+
+def fun_l21_n686()
+ fun_l22_n622
+end
+
+def fun_l21_n687()
+ fun_l22_n847
+end
+
+def fun_l21_n688()
+ fun_l22_n94
+end
+
+def fun_l21_n689()
+ fun_l22_n683
+end
+
+def fun_l21_n690()
+ fun_l22_n260
+end
+
+def fun_l21_n691()
+ fun_l22_n684
+end
+
+def fun_l21_n692()
+ fun_l22_n923
+end
+
+def fun_l21_n693()
+ fun_l22_n124
+end
+
+def fun_l21_n694()
+ fun_l22_n641
+end
+
+def fun_l21_n695()
+ fun_l22_n62
+end
+
+def fun_l21_n696()
+ fun_l22_n394
+end
+
+def fun_l21_n697()
+ fun_l22_n336
+end
+
+def fun_l21_n698()
+ fun_l22_n896
+end
+
+def fun_l21_n699()
+ fun_l22_n451
+end
+
+def fun_l21_n700()
+ fun_l22_n519
+end
+
+def fun_l21_n701()
+ fun_l22_n207
+end
+
+def fun_l21_n702()
+ fun_l22_n690
+end
+
+def fun_l21_n703()
+ fun_l22_n901
+end
+
+def fun_l21_n704()
+ fun_l22_n722
+end
+
+def fun_l21_n705()
+ fun_l22_n446
+end
+
+def fun_l21_n706()
+ fun_l22_n292
+end
+
+def fun_l21_n707()
+ fun_l22_n678
+end
+
+def fun_l21_n708()
+ fun_l22_n77
+end
+
+def fun_l21_n709()
+ fun_l22_n564
+end
+
+def fun_l21_n710()
+ fun_l22_n253
+end
+
+def fun_l21_n711()
+ fun_l22_n342
+end
+
+def fun_l21_n712()
+ fun_l22_n841
+end
+
+def fun_l21_n713()
+ fun_l22_n981
+end
+
+def fun_l21_n714()
+ fun_l22_n130
+end
+
+def fun_l21_n715()
+ fun_l22_n11
+end
+
+def fun_l21_n716()
+ fun_l22_n320
+end
+
+def fun_l21_n717()
+ fun_l22_n653
+end
+
+def fun_l21_n718()
+ fun_l22_n46
+end
+
+def fun_l21_n719()
+ fun_l22_n500
+end
+
+def fun_l21_n720()
+ fun_l22_n694
+end
+
+def fun_l21_n721()
+ fun_l22_n422
+end
+
+def fun_l21_n722()
+ fun_l22_n354
+end
+
+def fun_l21_n723()
+ fun_l22_n951
+end
+
+def fun_l21_n724()
+ fun_l22_n835
+end
+
+def fun_l21_n725()
+ fun_l22_n138
+end
+
+def fun_l21_n726()
+ fun_l22_n416
+end
+
+def fun_l21_n727()
+ fun_l22_n798
+end
+
+def fun_l21_n728()
+ fun_l22_n941
+end
+
+def fun_l21_n729()
+ fun_l22_n522
+end
+
+def fun_l21_n730()
+ fun_l22_n183
+end
+
+def fun_l21_n731()
+ fun_l22_n538
+end
+
+def fun_l21_n732()
+ fun_l22_n422
+end
+
+def fun_l21_n733()
+ fun_l22_n692
+end
+
+def fun_l21_n734()
+ fun_l22_n272
+end
+
+def fun_l21_n735()
+ fun_l22_n434
+end
+
+def fun_l21_n736()
+ fun_l22_n876
+end
+
+def fun_l21_n737()
+ fun_l22_n685
+end
+
+def fun_l21_n738()
+ fun_l22_n338
+end
+
+def fun_l21_n739()
+ fun_l22_n835
+end
+
+def fun_l21_n740()
+ fun_l22_n307
+end
+
+def fun_l21_n741()
+ fun_l22_n270
+end
+
+def fun_l21_n742()
+ fun_l22_n626
+end
+
+def fun_l21_n743()
+ fun_l22_n92
+end
+
+def fun_l21_n744()
+ fun_l22_n532
+end
+
+def fun_l21_n745()
+ fun_l22_n508
+end
+
+def fun_l21_n746()
+ fun_l22_n866
+end
+
+def fun_l21_n747()
+ fun_l22_n474
+end
+
+def fun_l21_n748()
+ fun_l22_n697
+end
+
+def fun_l21_n749()
+ fun_l22_n952
+end
+
+def fun_l21_n750()
+ fun_l22_n835
+end
+
+def fun_l21_n751()
+ fun_l22_n21
+end
+
+def fun_l21_n752()
+ fun_l22_n386
+end
+
+def fun_l21_n753()
+ fun_l22_n55
+end
+
+def fun_l21_n754()
+ fun_l22_n727
+end
+
+def fun_l21_n755()
+ fun_l22_n944
+end
+
+def fun_l21_n756()
+ fun_l22_n850
+end
+
+def fun_l21_n757()
+ fun_l22_n305
+end
+
+def fun_l21_n758()
+ fun_l22_n502
+end
+
+def fun_l21_n759()
+ fun_l22_n544
+end
+
+def fun_l21_n760()
+ fun_l22_n308
+end
+
+def fun_l21_n761()
+ fun_l22_n3
+end
+
+def fun_l21_n762()
+ fun_l22_n724
+end
+
+def fun_l21_n763()
+ fun_l22_n87
+end
+
+def fun_l21_n764()
+ fun_l22_n683
+end
+
+def fun_l21_n765()
+ fun_l22_n597
+end
+
+def fun_l21_n766()
+ fun_l22_n641
+end
+
+def fun_l21_n767()
+ fun_l22_n614
+end
+
+def fun_l21_n768()
+ fun_l22_n668
+end
+
+def fun_l21_n769()
+ fun_l22_n320
+end
+
+def fun_l21_n770()
+ fun_l22_n923
+end
+
+def fun_l21_n771()
+ fun_l22_n762
+end
+
+def fun_l21_n772()
+ fun_l22_n545
+end
+
+def fun_l21_n773()
+ fun_l22_n692
+end
+
+def fun_l21_n774()
+ fun_l22_n237
+end
+
+def fun_l21_n775()
+ fun_l22_n373
+end
+
+def fun_l21_n776()
+ fun_l22_n44
+end
+
+def fun_l21_n777()
+ fun_l22_n78
+end
+
+def fun_l21_n778()
+ fun_l22_n42
+end
+
+def fun_l21_n779()
+ fun_l22_n133
+end
+
+def fun_l21_n780()
+ fun_l22_n428
+end
+
+def fun_l21_n781()
+ fun_l22_n689
+end
+
+def fun_l21_n782()
+ fun_l22_n903
+end
+
+def fun_l21_n783()
+ fun_l22_n758
+end
+
+def fun_l21_n784()
+ fun_l22_n762
+end
+
+def fun_l21_n785()
+ fun_l22_n516
+end
+
+def fun_l21_n786()
+ fun_l22_n466
+end
+
+def fun_l21_n787()
+ fun_l22_n373
+end
+
+def fun_l21_n788()
+ fun_l22_n390
+end
+
+def fun_l21_n789()
+ fun_l22_n109
+end
+
+def fun_l21_n790()
+ fun_l22_n865
+end
+
+def fun_l21_n791()
+ fun_l22_n112
+end
+
+def fun_l21_n792()
+ fun_l22_n865
+end
+
+def fun_l21_n793()
+ fun_l22_n645
+end
+
+def fun_l21_n794()
+ fun_l22_n621
+end
+
+def fun_l21_n795()
+ fun_l22_n758
+end
+
+def fun_l21_n796()
+ fun_l22_n519
+end
+
+def fun_l21_n797()
+ fun_l22_n104
+end
+
+def fun_l21_n798()
+ fun_l22_n79
+end
+
+def fun_l21_n799()
+ fun_l22_n840
+end
+
+def fun_l21_n800()
+ fun_l22_n613
+end
+
+def fun_l21_n801()
+ fun_l22_n982
+end
+
+def fun_l21_n802()
+ fun_l22_n484
+end
+
+def fun_l21_n803()
+ fun_l22_n321
+end
+
+def fun_l21_n804()
+ fun_l22_n445
+end
+
+def fun_l21_n805()
+ fun_l22_n857
+end
+
+def fun_l21_n806()
+ fun_l22_n811
+end
+
+def fun_l21_n807()
+ fun_l22_n763
+end
+
+def fun_l21_n808()
+ fun_l22_n40
+end
+
+def fun_l21_n809()
+ fun_l22_n376
+end
+
+def fun_l21_n810()
+ fun_l22_n111
+end
+
+def fun_l21_n811()
+ fun_l22_n318
+end
+
+def fun_l21_n812()
+ fun_l22_n455
+end
+
+def fun_l21_n813()
+ fun_l22_n860
+end
+
+def fun_l21_n814()
+ fun_l22_n185
+end
+
+def fun_l21_n815()
+ fun_l22_n932
+end
+
+def fun_l21_n816()
+ fun_l22_n673
+end
+
+def fun_l21_n817()
+ fun_l22_n413
+end
+
+def fun_l21_n818()
+ fun_l22_n927
+end
+
+def fun_l21_n819()
+ fun_l22_n827
+end
+
+def fun_l21_n820()
+ fun_l22_n572
+end
+
+def fun_l21_n821()
+ fun_l22_n682
+end
+
+def fun_l21_n822()
+ fun_l22_n810
+end
+
+def fun_l21_n823()
+ fun_l22_n492
+end
+
+def fun_l21_n824()
+ fun_l22_n677
+end
+
+def fun_l21_n825()
+ fun_l22_n658
+end
+
+def fun_l21_n826()
+ fun_l22_n584
+end
+
+def fun_l21_n827()
+ fun_l22_n360
+end
+
+def fun_l21_n828()
+ fun_l22_n677
+end
+
+def fun_l21_n829()
+ fun_l22_n669
+end
+
+def fun_l21_n830()
+ fun_l22_n209
+end
+
+def fun_l21_n831()
+ fun_l22_n526
+end
+
+def fun_l21_n832()
+ fun_l22_n820
+end
+
+def fun_l21_n833()
+ fun_l22_n81
+end
+
+def fun_l21_n834()
+ fun_l22_n140
+end
+
+def fun_l21_n835()
+ fun_l22_n407
+end
+
+def fun_l21_n836()
+ fun_l22_n705
+end
+
+def fun_l21_n837()
+ fun_l22_n785
+end
+
+def fun_l21_n838()
+ fun_l22_n13
+end
+
+def fun_l21_n839()
+ fun_l22_n490
+end
+
+def fun_l21_n840()
+ fun_l22_n835
+end
+
+def fun_l21_n841()
+ fun_l22_n410
+end
+
+def fun_l21_n842()
+ fun_l22_n411
+end
+
+def fun_l21_n843()
+ fun_l22_n315
+end
+
+def fun_l21_n844()
+ fun_l22_n830
+end
+
+def fun_l21_n845()
+ fun_l22_n417
+end
+
+def fun_l21_n846()
+ fun_l22_n66
+end
+
+def fun_l21_n847()
+ fun_l22_n484
+end
+
+def fun_l21_n848()
+ fun_l22_n398
+end
+
+def fun_l21_n849()
+ fun_l22_n191
+end
+
+def fun_l21_n850()
+ fun_l22_n939
+end
+
+def fun_l21_n851()
+ fun_l22_n233
+end
+
+def fun_l21_n852()
+ fun_l22_n554
+end
+
+def fun_l21_n853()
+ fun_l22_n205
+end
+
+def fun_l21_n854()
+ fun_l22_n86
+end
+
+def fun_l21_n855()
+ fun_l22_n396
+end
+
+def fun_l21_n856()
+ fun_l22_n815
+end
+
+def fun_l21_n857()
+ fun_l22_n286
+end
+
+def fun_l21_n858()
+ fun_l22_n874
+end
+
+def fun_l21_n859()
+ fun_l22_n274
+end
+
+def fun_l21_n860()
+ fun_l22_n517
+end
+
+def fun_l21_n861()
+ fun_l22_n295
+end
+
+def fun_l21_n862()
+ fun_l22_n576
+end
+
+def fun_l21_n863()
+ fun_l22_n745
+end
+
+def fun_l21_n864()
+ fun_l22_n842
+end
+
+def fun_l21_n865()
+ fun_l22_n180
+end
+
+def fun_l21_n866()
+ fun_l22_n817
+end
+
+def fun_l21_n867()
+ fun_l22_n663
+end
+
+def fun_l21_n868()
+ fun_l22_n298
+end
+
+def fun_l21_n869()
+ fun_l22_n328
+end
+
+def fun_l21_n870()
+ fun_l22_n863
+end
+
+def fun_l21_n871()
+ fun_l22_n669
+end
+
+def fun_l21_n872()
+ fun_l22_n494
+end
+
+def fun_l21_n873()
+ fun_l22_n483
+end
+
+def fun_l21_n874()
+ fun_l22_n977
+end
+
+def fun_l21_n875()
+ fun_l22_n797
+end
+
+def fun_l21_n876()
+ fun_l22_n258
+end
+
+def fun_l21_n877()
+ fun_l22_n701
+end
+
+def fun_l21_n878()
+ fun_l22_n791
+end
+
+def fun_l21_n879()
+ fun_l22_n201
+end
+
+def fun_l21_n880()
+ fun_l22_n994
+end
+
+def fun_l21_n881()
+ fun_l22_n678
+end
+
+def fun_l21_n882()
+ fun_l22_n653
+end
+
+def fun_l21_n883()
+ fun_l22_n339
+end
+
+def fun_l21_n884()
+ fun_l22_n701
+end
+
+def fun_l21_n885()
+ fun_l22_n188
+end
+
+def fun_l21_n886()
+ fun_l22_n607
+end
+
+def fun_l21_n887()
+ fun_l22_n108
+end
+
+def fun_l21_n888()
+ fun_l22_n190
+end
+
+def fun_l21_n889()
+ fun_l22_n581
+end
+
+def fun_l21_n890()
+ fun_l22_n283
+end
+
+def fun_l21_n891()
+ fun_l22_n743
+end
+
+def fun_l21_n892()
+ fun_l22_n861
+end
+
+def fun_l21_n893()
+ fun_l22_n998
+end
+
+def fun_l21_n894()
+ fun_l22_n752
+end
+
+def fun_l21_n895()
+ fun_l22_n762
+end
+
+def fun_l21_n896()
+ fun_l22_n41
+end
+
+def fun_l21_n897()
+ fun_l22_n820
+end
+
+def fun_l21_n898()
+ fun_l22_n510
+end
+
+def fun_l21_n899()
+ fun_l22_n974
+end
+
+def fun_l21_n900()
+ fun_l22_n524
+end
+
+def fun_l21_n901()
+ fun_l22_n771
+end
+
+def fun_l21_n902()
+ fun_l22_n376
+end
+
+def fun_l21_n903()
+ fun_l22_n684
+end
+
+def fun_l21_n904()
+ fun_l22_n595
+end
+
+def fun_l21_n905()
+ fun_l22_n934
+end
+
+def fun_l21_n906()
+ fun_l22_n228
+end
+
+def fun_l21_n907()
+ fun_l22_n685
+end
+
+def fun_l21_n908()
+ fun_l22_n549
+end
+
+def fun_l21_n909()
+ fun_l22_n374
+end
+
+def fun_l21_n910()
+ fun_l22_n934
+end
+
+def fun_l21_n911()
+ fun_l22_n660
+end
+
+def fun_l21_n912()
+ fun_l22_n756
+end
+
+def fun_l21_n913()
+ fun_l22_n32
+end
+
+def fun_l21_n914()
+ fun_l22_n660
+end
+
+def fun_l21_n915()
+ fun_l22_n52
+end
+
+def fun_l21_n916()
+ fun_l22_n750
+end
+
+def fun_l21_n917()
+ fun_l22_n239
+end
+
+def fun_l21_n918()
+ fun_l22_n290
+end
+
+def fun_l21_n919()
+ fun_l22_n914
+end
+
+def fun_l21_n920()
+ fun_l22_n257
+end
+
+def fun_l21_n921()
+ fun_l22_n307
+end
+
+def fun_l21_n922()
+ fun_l22_n949
+end
+
+def fun_l21_n923()
+ fun_l22_n344
+end
+
+def fun_l21_n924()
+ fun_l22_n479
+end
+
+def fun_l21_n925()
+ fun_l22_n306
+end
+
+def fun_l21_n926()
+ fun_l22_n361
+end
+
+def fun_l21_n927()
+ fun_l22_n429
+end
+
+def fun_l21_n928()
+ fun_l22_n145
+end
+
+def fun_l21_n929()
+ fun_l22_n874
+end
+
+def fun_l21_n930()
+ fun_l22_n127
+end
+
+def fun_l21_n931()
+ fun_l22_n909
+end
+
+def fun_l21_n932()
+ fun_l22_n784
+end
+
+def fun_l21_n933()
+ fun_l22_n966
+end
+
+def fun_l21_n934()
+ fun_l22_n789
+end
+
+def fun_l21_n935()
+ fun_l22_n787
+end
+
+def fun_l21_n936()
+ fun_l22_n325
+end
+
+def fun_l21_n937()
+ fun_l22_n666
+end
+
+def fun_l21_n938()
+ fun_l22_n630
+end
+
+def fun_l21_n939()
+ fun_l22_n321
+end
+
+def fun_l21_n940()
+ fun_l22_n634
+end
+
+def fun_l21_n941()
+ fun_l22_n991
+end
+
+def fun_l21_n942()
+ fun_l22_n978
+end
+
+def fun_l21_n943()
+ fun_l22_n583
+end
+
+def fun_l21_n944()
+ fun_l22_n835
+end
+
+def fun_l21_n945()
+ fun_l22_n968
+end
+
+def fun_l21_n946()
+ fun_l22_n88
+end
+
+def fun_l21_n947()
+ fun_l22_n484
+end
+
+def fun_l21_n948()
+ fun_l22_n82
+end
+
+def fun_l21_n949()
+ fun_l22_n343
+end
+
+def fun_l21_n950()
+ fun_l22_n369
+end
+
+def fun_l21_n951()
+ fun_l22_n565
+end
+
+def fun_l21_n952()
+ fun_l22_n307
+end
+
+def fun_l21_n953()
+ fun_l22_n573
+end
+
+def fun_l21_n954()
+ fun_l22_n363
+end
+
+def fun_l21_n955()
+ fun_l22_n853
+end
+
+def fun_l21_n956()
+ fun_l22_n132
+end
+
+def fun_l21_n957()
+ fun_l22_n13
+end
+
+def fun_l21_n958()
+ fun_l22_n819
+end
+
+def fun_l21_n959()
+ fun_l22_n124
+end
+
+def fun_l21_n960()
+ fun_l22_n898
+end
+
+def fun_l21_n961()
+ fun_l22_n942
+end
+
+def fun_l21_n962()
+ fun_l22_n917
+end
+
+def fun_l21_n963()
+ fun_l22_n199
+end
+
+def fun_l21_n964()
+ fun_l22_n651
+end
+
+def fun_l21_n965()
+ fun_l22_n80
+end
+
+def fun_l21_n966()
+ fun_l22_n415
+end
+
+def fun_l21_n967()
+ fun_l22_n230
+end
+
+def fun_l21_n968()
+ fun_l22_n929
+end
+
+def fun_l21_n969()
+ fun_l22_n889
+end
+
+def fun_l21_n970()
+ fun_l22_n620
+end
+
+def fun_l21_n971()
+ fun_l22_n588
+end
+
+def fun_l21_n972()
+ fun_l22_n284
+end
+
+def fun_l21_n973()
+ fun_l22_n767
+end
+
+def fun_l21_n974()
+ fun_l22_n568
+end
+
+def fun_l21_n975()
+ fun_l22_n687
+end
+
+def fun_l21_n976()
+ fun_l22_n640
+end
+
+def fun_l21_n977()
+ fun_l22_n739
+end
+
+def fun_l21_n978()
+ fun_l22_n81
+end
+
+def fun_l21_n979()
+ fun_l22_n216
+end
+
+def fun_l21_n980()
+ fun_l22_n347
+end
+
+def fun_l21_n981()
+ fun_l22_n228
+end
+
+def fun_l21_n982()
+ fun_l22_n947
+end
+
+def fun_l21_n983()
+ fun_l22_n563
+end
+
+def fun_l21_n984()
+ fun_l22_n839
+end
+
+def fun_l21_n985()
+ fun_l22_n759
+end
+
+def fun_l21_n986()
+ fun_l22_n138
+end
+
+def fun_l21_n987()
+ fun_l22_n269
+end
+
+def fun_l21_n988()
+ fun_l22_n239
+end
+
+def fun_l21_n989()
+ fun_l22_n254
+end
+
+def fun_l21_n990()
+ fun_l22_n802
+end
+
+def fun_l21_n991()
+ fun_l22_n368
+end
+
+def fun_l21_n992()
+ fun_l22_n854
+end
+
+def fun_l21_n993()
+ fun_l22_n463
+end
+
+def fun_l21_n994()
+ fun_l22_n722
+end
+
+def fun_l21_n995()
+ fun_l22_n770
+end
+
+def fun_l21_n996()
+ fun_l22_n635
+end
+
+def fun_l21_n997()
+ fun_l22_n207
+end
+
+def fun_l21_n998()
+ fun_l22_n271
+end
+
+def fun_l21_n999()
+ fun_l22_n815
+end
+
+def fun_l22_n0()
+ fun_l23_n781
+end
+
+def fun_l22_n1()
+ fun_l23_n330
+end
+
+def fun_l22_n2()
+ fun_l23_n493
+end
+
+def fun_l22_n3()
+ fun_l23_n513
+end
+
+def fun_l22_n4()
+ fun_l23_n515
+end
+
+def fun_l22_n5()
+ fun_l23_n746
+end
+
+def fun_l22_n6()
+ fun_l23_n739
+end
+
+def fun_l22_n7()
+ fun_l23_n270
+end
+
+def fun_l22_n8()
+ fun_l23_n918
+end
+
+def fun_l22_n9()
+ fun_l23_n425
+end
+
+def fun_l22_n10()
+ fun_l23_n361
+end
+
+def fun_l22_n11()
+ fun_l23_n696
+end
+
+def fun_l22_n12()
+ fun_l23_n344
+end
+
+def fun_l22_n13()
+ fun_l23_n446
+end
+
+def fun_l22_n14()
+ fun_l23_n487
+end
+
+def fun_l22_n15()
+ fun_l23_n94
+end
+
+def fun_l22_n16()
+ fun_l23_n206
+end
+
+def fun_l22_n17()
+ fun_l23_n10
+end
+
+def fun_l22_n18()
+ fun_l23_n221
+end
+
+def fun_l22_n19()
+ fun_l23_n185
+end
+
+def fun_l22_n20()
+ fun_l23_n869
+end
+
+def fun_l22_n21()
+ fun_l23_n788
+end
+
+def fun_l22_n22()
+ fun_l23_n173
+end
+
+def fun_l22_n23()
+ fun_l23_n73
+end
+
+def fun_l22_n24()
+ fun_l23_n486
+end
+
+def fun_l22_n25()
+ fun_l23_n631
+end
+
+def fun_l22_n26()
+ fun_l23_n849
+end
+
+def fun_l22_n27()
+ fun_l23_n429
+end
+
+def fun_l22_n28()
+ fun_l23_n365
+end
+
+def fun_l22_n29()
+ fun_l23_n429
+end
+
+def fun_l22_n30()
+ fun_l23_n411
+end
+
+def fun_l22_n31()
+ fun_l23_n229
+end
+
+def fun_l22_n32()
+ fun_l23_n921
+end
+
+def fun_l22_n33()
+ fun_l23_n705
+end
+
+def fun_l22_n34()
+ fun_l23_n660
+end
+
+def fun_l22_n35()
+ fun_l23_n264
+end
+
+def fun_l22_n36()
+ fun_l23_n395
+end
+
+def fun_l22_n37()
+ fun_l23_n722
+end
+
+def fun_l22_n38()
+ fun_l23_n402
+end
+
+def fun_l22_n39()
+ fun_l23_n686
+end
+
+def fun_l22_n40()
+ fun_l23_n833
+end
+
+def fun_l22_n41()
+ fun_l23_n573
+end
+
+def fun_l22_n42()
+ fun_l23_n299
+end
+
+def fun_l22_n43()
+ fun_l23_n397
+end
+
+def fun_l22_n44()
+ fun_l23_n387
+end
+
+def fun_l22_n45()
+ fun_l23_n385
+end
+
+def fun_l22_n46()
+ fun_l23_n341
+end
+
+def fun_l22_n47()
+ fun_l23_n862
+end
+
+def fun_l22_n48()
+ fun_l23_n109
+end
+
+def fun_l22_n49()
+ fun_l23_n583
+end
+
+def fun_l22_n50()
+ fun_l23_n126
+end
+
+def fun_l22_n51()
+ fun_l23_n563
+end
+
+def fun_l22_n52()
+ fun_l23_n947
+end
+
+def fun_l22_n53()
+ fun_l23_n329
+end
+
+def fun_l22_n54()
+ fun_l23_n903
+end
+
+def fun_l22_n55()
+ fun_l23_n11
+end
+
+def fun_l22_n56()
+ fun_l23_n520
+end
+
+def fun_l22_n57()
+ fun_l23_n815
+end
+
+def fun_l22_n58()
+ fun_l23_n224
+end
+
+def fun_l22_n59()
+ fun_l23_n144
+end
+
+def fun_l22_n60()
+ fun_l23_n513
+end
+
+def fun_l22_n61()
+ fun_l23_n572
+end
+
+def fun_l22_n62()
+ fun_l23_n33
+end
+
+def fun_l22_n63()
+ fun_l23_n39
+end
+
+def fun_l22_n64()
+ fun_l23_n360
+end
+
+def fun_l22_n65()
+ fun_l23_n6
+end
+
+def fun_l22_n66()
+ fun_l23_n244
+end
+
+def fun_l22_n67()
+ fun_l23_n425
+end
+
+def fun_l22_n68()
+ fun_l23_n472
+end
+
+def fun_l22_n69()
+ fun_l23_n88
+end
+
+def fun_l22_n70()
+ fun_l23_n888
+end
+
+def fun_l22_n71()
+ fun_l23_n215
+end
+
+def fun_l22_n72()
+ fun_l23_n408
+end
+
+def fun_l22_n73()
+ fun_l23_n753
+end
+
+def fun_l22_n74()
+ fun_l23_n4
+end
+
+def fun_l22_n75()
+ fun_l23_n623
+end
+
+def fun_l22_n76()
+ fun_l23_n602
+end
+
+def fun_l22_n77()
+ fun_l23_n430
+end
+
+def fun_l22_n78()
+ fun_l23_n223
+end
+
+def fun_l22_n79()
+ fun_l23_n631
+end
+
+def fun_l22_n80()
+ fun_l23_n931
+end
+
+def fun_l22_n81()
+ fun_l23_n84
+end
+
+def fun_l22_n82()
+ fun_l23_n541
+end
+
+def fun_l22_n83()
+ fun_l23_n329
+end
+
+def fun_l22_n84()
+ fun_l23_n174
+end
+
+def fun_l22_n85()
+ fun_l23_n649
+end
+
+def fun_l22_n86()
+ fun_l23_n503
+end
+
+def fun_l22_n87()
+ fun_l23_n336
+end
+
+def fun_l22_n88()
+ fun_l23_n126
+end
+
+def fun_l22_n89()
+ fun_l23_n556
+end
+
+def fun_l22_n90()
+ fun_l23_n793
+end
+
+def fun_l22_n91()
+ fun_l23_n276
+end
+
+def fun_l22_n92()
+ fun_l23_n374
+end
+
+def fun_l22_n93()
+ fun_l23_n638
+end
+
+def fun_l22_n94()
+ fun_l23_n614
+end
+
+def fun_l22_n95()
+ fun_l23_n851
+end
+
+def fun_l22_n96()
+ fun_l23_n422
+end
+
+def fun_l22_n97()
+ fun_l23_n716
+end
+
+def fun_l22_n98()
+ fun_l23_n521
+end
+
+def fun_l22_n99()
+ fun_l23_n484
+end
+
+def fun_l22_n100()
+ fun_l23_n155
+end
+
+def fun_l22_n101()
+ fun_l23_n863
+end
+
+def fun_l22_n102()
+ fun_l23_n5
+end
+
+def fun_l22_n103()
+ fun_l23_n667
+end
+
+def fun_l22_n104()
+ fun_l23_n633
+end
+
+def fun_l22_n105()
+ fun_l23_n392
+end
+
+def fun_l22_n106()
+ fun_l23_n859
+end
+
+def fun_l22_n107()
+ fun_l23_n930
+end
+
+def fun_l22_n108()
+ fun_l23_n858
+end
+
+def fun_l22_n109()
+ fun_l23_n266
+end
+
+def fun_l22_n110()
+ fun_l23_n567
+end
+
+def fun_l22_n111()
+ fun_l23_n116
+end
+
+def fun_l22_n112()
+ fun_l23_n221
+end
+
+def fun_l22_n113()
+ fun_l23_n650
+end
+
+def fun_l22_n114()
+ fun_l23_n309
+end
+
+def fun_l22_n115()
+ fun_l23_n290
+end
+
+def fun_l22_n116()
+ fun_l23_n305
+end
+
+def fun_l22_n117()
+ fun_l23_n655
+end
+
+def fun_l22_n118()
+ fun_l23_n390
+end
+
+def fun_l22_n119()
+ fun_l23_n561
+end
+
+def fun_l22_n120()
+ fun_l23_n977
+end
+
+def fun_l22_n121()
+ fun_l23_n920
+end
+
+def fun_l22_n122()
+ fun_l23_n662
+end
+
+def fun_l22_n123()
+ fun_l23_n453
+end
+
+def fun_l22_n124()
+ fun_l23_n331
+end
+
+def fun_l22_n125()
+ fun_l23_n135
+end
+
+def fun_l22_n126()
+ fun_l23_n822
+end
+
+def fun_l22_n127()
+ fun_l23_n726
+end
+
+def fun_l22_n128()
+ fun_l23_n93
+end
+
+def fun_l22_n129()
+ fun_l23_n309
+end
+
+def fun_l22_n130()
+ fun_l23_n303
+end
+
+def fun_l22_n131()
+ fun_l23_n907
+end
+
+def fun_l22_n132()
+ fun_l23_n616
+end
+
+def fun_l22_n133()
+ fun_l23_n266
+end
+
+def fun_l22_n134()
+ fun_l23_n920
+end
+
+def fun_l22_n135()
+ fun_l23_n972
+end
+
+def fun_l22_n136()
+ fun_l23_n510
+end
+
+def fun_l22_n137()
+ fun_l23_n40
+end
+
+def fun_l22_n138()
+ fun_l23_n598
+end
+
+def fun_l22_n139()
+ fun_l23_n491
+end
+
+def fun_l22_n140()
+ fun_l23_n590
+end
+
+def fun_l22_n141()
+ fun_l23_n400
+end
+
+def fun_l22_n142()
+ fun_l23_n47
+end
+
+def fun_l22_n143()
+ fun_l23_n669
+end
+
+def fun_l22_n144()
+ fun_l23_n471
+end
+
+def fun_l22_n145()
+ fun_l23_n749
+end
+
+def fun_l22_n146()
+ fun_l23_n5
+end
+
+def fun_l22_n147()
+ fun_l23_n895
+end
+
+def fun_l22_n148()
+ fun_l23_n92
+end
+
+def fun_l22_n149()
+ fun_l23_n940
+end
+
+def fun_l22_n150()
+ fun_l23_n254
+end
+
+def fun_l22_n151()
+ fun_l23_n521
+end
+
+def fun_l22_n152()
+ fun_l23_n482
+end
+
+def fun_l22_n153()
+ fun_l23_n576
+end
+
+def fun_l22_n154()
+ fun_l23_n657
+end
+
+def fun_l22_n155()
+ fun_l23_n897
+end
+
+def fun_l22_n156()
+ fun_l23_n679
+end
+
+def fun_l22_n157()
+ fun_l23_n894
+end
+
+def fun_l22_n158()
+ fun_l23_n496
+end
+
+def fun_l22_n159()
+ fun_l23_n575
+end
+
+def fun_l22_n160()
+ fun_l23_n751
+end
+
+def fun_l22_n161()
+ fun_l23_n357
+end
+
+def fun_l22_n162()
+ fun_l23_n665
+end
+
+def fun_l22_n163()
+ fun_l23_n653
+end
+
+def fun_l22_n164()
+ fun_l23_n904
+end
+
+def fun_l22_n165()
+ fun_l23_n127
+end
+
+def fun_l22_n166()
+ fun_l23_n737
+end
+
+def fun_l22_n167()
+ fun_l23_n710
+end
+
+def fun_l22_n168()
+ fun_l23_n285
+end
+
+def fun_l22_n169()
+ fun_l23_n804
+end
+
+def fun_l22_n170()
+ fun_l23_n766
+end
+
+def fun_l22_n171()
+ fun_l23_n442
+end
+
+def fun_l22_n172()
+ fun_l23_n392
+end
+
+def fun_l22_n173()
+ fun_l23_n512
+end
+
+def fun_l22_n174()
+ fun_l23_n752
+end
+
+def fun_l22_n175()
+ fun_l23_n856
+end
+
+def fun_l22_n176()
+ fun_l23_n840
+end
+
+def fun_l22_n177()
+ fun_l23_n445
+end
+
+def fun_l22_n178()
+ fun_l23_n483
+end
+
+def fun_l22_n179()
+ fun_l23_n676
+end
+
+def fun_l22_n180()
+ fun_l23_n619
+end
+
+def fun_l22_n181()
+ fun_l23_n132
+end
+
+def fun_l22_n182()
+ fun_l23_n600
+end
+
+def fun_l22_n183()
+ fun_l23_n399
+end
+
+def fun_l22_n184()
+ fun_l23_n199
+end
+
+def fun_l22_n185()
+ fun_l23_n152
+end
+
+def fun_l22_n186()
+ fun_l23_n848
+end
+
+def fun_l22_n187()
+ fun_l23_n50
+end
+
+def fun_l22_n188()
+ fun_l23_n524
+end
+
+def fun_l22_n189()
+ fun_l23_n472
+end
+
+def fun_l22_n190()
+ fun_l23_n146
+end
+
+def fun_l22_n191()
+ fun_l23_n115
+end
+
+def fun_l22_n192()
+ fun_l23_n701
+end
+
+def fun_l22_n193()
+ fun_l23_n916
+end
+
+def fun_l22_n194()
+ fun_l23_n362
+end
+
+def fun_l22_n195()
+ fun_l23_n546
+end
+
+def fun_l22_n196()
+ fun_l23_n983
+end
+
+def fun_l22_n197()
+ fun_l23_n898
+end
+
+def fun_l22_n198()
+ fun_l23_n93
+end
+
+def fun_l22_n199()
+ fun_l23_n587
+end
+
+def fun_l22_n200()
+ fun_l23_n84
+end
+
+def fun_l22_n201()
+ fun_l23_n919
+end
+
+def fun_l22_n202()
+ fun_l23_n813
+end
+
+def fun_l22_n203()
+ fun_l23_n481
+end
+
+def fun_l22_n204()
+ fun_l23_n806
+end
+
+def fun_l22_n205()
+ fun_l23_n329
+end
+
+def fun_l22_n206()
+ fun_l23_n873
+end
+
+def fun_l22_n207()
+ fun_l23_n922
+end
+
+def fun_l22_n208()
+ fun_l23_n125
+end
+
+def fun_l22_n209()
+ fun_l23_n861
+end
+
+def fun_l22_n210()
+ fun_l23_n50
+end
+
+def fun_l22_n211()
+ fun_l23_n737
+end
+
+def fun_l22_n212()
+ fun_l23_n55
+end
+
+def fun_l22_n213()
+ fun_l23_n594
+end
+
+def fun_l22_n214()
+ fun_l23_n786
+end
+
+def fun_l22_n215()
+ fun_l23_n33
+end
+
+def fun_l22_n216()
+ fun_l23_n332
+end
+
+def fun_l22_n217()
+ fun_l23_n72
+end
+
+def fun_l22_n218()
+ fun_l23_n619
+end
+
+def fun_l22_n219()
+ fun_l23_n994
+end
+
+def fun_l22_n220()
+ fun_l23_n94
+end
+
+def fun_l22_n221()
+ fun_l23_n562
+end
+
+def fun_l22_n222()
+ fun_l23_n742
+end
+
+def fun_l22_n223()
+ fun_l23_n397
+end
+
+def fun_l22_n224()
+ fun_l23_n641
+end
+
+def fun_l22_n225()
+ fun_l23_n233
+end
+
+def fun_l22_n226()
+ fun_l23_n876
+end
+
+def fun_l22_n227()
+ fun_l23_n13
+end
+
+def fun_l22_n228()
+ fun_l23_n524
+end
+
+def fun_l22_n229()
+ fun_l23_n738
+end
+
+def fun_l22_n230()
+ fun_l23_n34
+end
+
+def fun_l22_n231()
+ fun_l23_n391
+end
+
+def fun_l22_n232()
+ fun_l23_n930
+end
+
+def fun_l22_n233()
+ fun_l23_n714
+end
+
+def fun_l22_n234()
+ fun_l23_n755
+end
+
+def fun_l22_n235()
+ fun_l23_n826
+end
+
+def fun_l22_n236()
+ fun_l23_n797
+end
+
+def fun_l22_n237()
+ fun_l23_n890
+end
+
+def fun_l22_n238()
+ fun_l23_n586
+end
+
+def fun_l22_n239()
+ fun_l23_n924
+end
+
+def fun_l22_n240()
+ fun_l23_n704
+end
+
+def fun_l22_n241()
+ fun_l23_n547
+end
+
+def fun_l22_n242()
+ fun_l23_n581
+end
+
+def fun_l22_n243()
+ fun_l23_n402
+end
+
+def fun_l22_n244()
+ fun_l23_n719
+end
+
+def fun_l22_n245()
+ fun_l23_n471
+end
+
+def fun_l22_n246()
+ fun_l23_n750
+end
+
+def fun_l22_n247()
+ fun_l23_n33
+end
+
+def fun_l22_n248()
+ fun_l23_n304
+end
+
+def fun_l22_n249()
+ fun_l23_n847
+end
+
+def fun_l22_n250()
+ fun_l23_n814
+end
+
+def fun_l22_n251()
+ fun_l23_n724
+end
+
+def fun_l22_n252()
+ fun_l23_n105
+end
+
+def fun_l22_n253()
+ fun_l23_n863
+end
+
+def fun_l22_n254()
+ fun_l23_n282
+end
+
+def fun_l22_n255()
+ fun_l23_n586
+end
+
+def fun_l22_n256()
+ fun_l23_n524
+end
+
+def fun_l22_n257()
+ fun_l23_n772
+end
+
+def fun_l22_n258()
+ fun_l23_n641
+end
+
+def fun_l22_n259()
+ fun_l23_n962
+end
+
+def fun_l22_n260()
+ fun_l23_n737
+end
+
+def fun_l22_n261()
+ fun_l23_n941
+end
+
+def fun_l22_n262()
+ fun_l23_n432
+end
+
+def fun_l22_n263()
+ fun_l23_n400
+end
+
+def fun_l22_n264()
+ fun_l23_n19
+end
+
+def fun_l22_n265()
+ fun_l23_n485
+end
+
+def fun_l22_n266()
+ fun_l23_n210
+end
+
+def fun_l22_n267()
+ fun_l23_n961
+end
+
+def fun_l22_n268()
+ fun_l23_n953
+end
+
+def fun_l22_n269()
+ fun_l23_n987
+end
+
+def fun_l22_n270()
+ fun_l23_n855
+end
+
+def fun_l22_n271()
+ fun_l23_n789
+end
+
+def fun_l22_n272()
+ fun_l23_n708
+end
+
+def fun_l22_n273()
+ fun_l23_n645
+end
+
+def fun_l22_n274()
+ fun_l23_n924
+end
+
+def fun_l22_n275()
+ fun_l23_n496
+end
+
+def fun_l22_n276()
+ fun_l23_n763
+end
+
+def fun_l22_n277()
+ fun_l23_n937
+end
+
+def fun_l22_n278()
+ fun_l23_n679
+end
+
+def fun_l22_n279()
+ fun_l23_n678
+end
+
+def fun_l22_n280()
+ fun_l23_n756
+end
+
+def fun_l22_n281()
+ fun_l23_n198
+end
+
+def fun_l22_n282()
+ fun_l23_n377
+end
+
+def fun_l22_n283()
+ fun_l23_n352
+end
+
+def fun_l22_n284()
+ fun_l23_n211
+end
+
+def fun_l22_n285()
+ fun_l23_n137
+end
+
+def fun_l22_n286()
+ fun_l23_n257
+end
+
+def fun_l22_n287()
+ fun_l23_n878
+end
+
+def fun_l22_n288()
+ fun_l23_n182
+end
+
+def fun_l22_n289()
+ fun_l23_n969
+end
+
+def fun_l22_n290()
+ fun_l23_n622
+end
+
+def fun_l22_n291()
+ fun_l23_n473
+end
+
+def fun_l22_n292()
+ fun_l23_n767
+end
+
+def fun_l22_n293()
+ fun_l23_n496
+end
+
+def fun_l22_n294()
+ fun_l23_n463
+end
+
+def fun_l22_n295()
+ fun_l23_n600
+end
+
+def fun_l22_n296()
+ fun_l23_n262
+end
+
+def fun_l22_n297()
+ fun_l23_n353
+end
+
+def fun_l22_n298()
+ fun_l23_n235
+end
+
+def fun_l22_n299()
+ fun_l23_n680
+end
+
+def fun_l22_n300()
+ fun_l23_n169
+end
+
+def fun_l22_n301()
+ fun_l23_n764
+end
+
+def fun_l22_n302()
+ fun_l23_n105
+end
+
+def fun_l22_n303()
+ fun_l23_n616
+end
+
+def fun_l22_n304()
+ fun_l23_n143
+end
+
+def fun_l22_n305()
+ fun_l23_n612
+end
+
+def fun_l22_n306()
+ fun_l23_n30
+end
+
+def fun_l22_n307()
+ fun_l23_n946
+end
+
+def fun_l22_n308()
+ fun_l23_n590
+end
+
+def fun_l22_n309()
+ fun_l23_n374
+end
+
+def fun_l22_n310()
+ fun_l23_n640
+end
+
+def fun_l22_n311()
+ fun_l23_n156
+end
+
+def fun_l22_n312()
+ fun_l23_n689
+end
+
+def fun_l22_n313()
+ fun_l23_n684
+end
+
+def fun_l22_n314()
+ fun_l23_n915
+end
+
+def fun_l22_n315()
+ fun_l23_n536
+end
+
+def fun_l22_n316()
+ fun_l23_n408
+end
+
+def fun_l22_n317()
+ fun_l23_n644
+end
+
+def fun_l22_n318()
+ fun_l23_n401
+end
+
+def fun_l22_n319()
+ fun_l23_n312
+end
+
+def fun_l22_n320()
+ fun_l23_n280
+end
+
+def fun_l22_n321()
+ fun_l23_n901
+end
+
+def fun_l22_n322()
+ fun_l23_n411
+end
+
+def fun_l22_n323()
+ fun_l23_n709
+end
+
+def fun_l22_n324()
+ fun_l23_n829
+end
+
+def fun_l22_n325()
+ fun_l23_n353
+end
+
+def fun_l22_n326()
+ fun_l23_n408
+end
+
+def fun_l22_n327()
+ fun_l23_n786
+end
+
+def fun_l22_n328()
+ fun_l23_n980
+end
+
+def fun_l22_n329()
+ fun_l23_n60
+end
+
+def fun_l22_n330()
+ fun_l23_n367
+end
+
+def fun_l22_n331()
+ fun_l23_n617
+end
+
+def fun_l22_n332()
+ fun_l23_n155
+end
+
+def fun_l22_n333()
+ fun_l23_n537
+end
+
+def fun_l22_n334()
+ fun_l23_n759
+end
+
+def fun_l22_n335()
+ fun_l23_n998
+end
+
+def fun_l22_n336()
+ fun_l23_n361
+end
+
+def fun_l22_n337()
+ fun_l23_n64
+end
+
+def fun_l22_n338()
+ fun_l23_n992
+end
+
+def fun_l22_n339()
+ fun_l23_n312
+end
+
+def fun_l22_n340()
+ fun_l23_n91
+end
+
+def fun_l22_n341()
+ fun_l23_n73
+end
+
+def fun_l22_n342()
+ fun_l23_n443
+end
+
+def fun_l22_n343()
+ fun_l23_n453
+end
+
+def fun_l22_n344()
+ fun_l23_n723
+end
+
+def fun_l22_n345()
+ fun_l23_n429
+end
+
+def fun_l22_n346()
+ fun_l23_n437
+end
+
+def fun_l22_n347()
+ fun_l23_n406
+end
+
+def fun_l22_n348()
+ fun_l23_n110
+end
+
+def fun_l22_n349()
+ fun_l23_n862
+end
+
+def fun_l22_n350()
+ fun_l23_n247
+end
+
+def fun_l22_n351()
+ fun_l23_n367
+end
+
+def fun_l22_n352()
+ fun_l23_n401
+end
+
+def fun_l22_n353()
+ fun_l23_n245
+end
+
+def fun_l22_n354()
+ fun_l23_n777
+end
+
+def fun_l22_n355()
+ fun_l23_n362
+end
+
+def fun_l22_n356()
+ fun_l23_n703
+end
+
+def fun_l22_n357()
+ fun_l23_n627
+end
+
+def fun_l22_n358()
+ fun_l23_n542
+end
+
+def fun_l22_n359()
+ fun_l23_n830
+end
+
+def fun_l22_n360()
+ fun_l23_n508
+end
+
+def fun_l22_n361()
+ fun_l23_n814
+end
+
+def fun_l22_n362()
+ fun_l23_n147
+end
+
+def fun_l22_n363()
+ fun_l23_n581
+end
+
+def fun_l22_n364()
+ fun_l23_n394
+end
+
+def fun_l22_n365()
+ fun_l23_n366
+end
+
+def fun_l22_n366()
+ fun_l23_n723
+end
+
+def fun_l22_n367()
+ fun_l23_n544
+end
+
+def fun_l22_n368()
+ fun_l23_n231
+end
+
+def fun_l22_n369()
+ fun_l23_n727
+end
+
+def fun_l22_n370()
+ fun_l23_n459
+end
+
+def fun_l22_n371()
+ fun_l23_n290
+end
+
+def fun_l22_n372()
+ fun_l23_n901
+end
+
+def fun_l22_n373()
+ fun_l23_n738
+end
+
+def fun_l22_n374()
+ fun_l23_n733
+end
+
+def fun_l22_n375()
+ fun_l23_n85
+end
+
+def fun_l22_n376()
+ fun_l23_n469
+end
+
+def fun_l22_n377()
+ fun_l23_n599
+end
+
+def fun_l22_n378()
+ fun_l23_n78
+end
+
+def fun_l22_n379()
+ fun_l23_n499
+end
+
+def fun_l22_n380()
+ fun_l23_n527
+end
+
+def fun_l22_n381()
+ fun_l23_n185
+end
+
+def fun_l22_n382()
+ fun_l23_n93
+end
+
+def fun_l22_n383()
+ fun_l23_n233
+end
+
+def fun_l22_n384()
+ fun_l23_n292
+end
+
+def fun_l22_n385()
+ fun_l23_n716
+end
+
+def fun_l22_n386()
+ fun_l23_n81
+end
+
+def fun_l22_n387()
+ fun_l23_n740
+end
+
+def fun_l22_n388()
+ fun_l23_n351
+end
+
+def fun_l22_n389()
+ fun_l23_n488
+end
+
+def fun_l22_n390()
+ fun_l23_n631
+end
+
+def fun_l22_n391()
+ fun_l23_n477
+end
+
+def fun_l22_n392()
+ fun_l23_n541
+end
+
+def fun_l22_n393()
+ fun_l23_n816
+end
+
+def fun_l22_n394()
+ fun_l23_n737
+end
+
+def fun_l22_n395()
+ fun_l23_n839
+end
+
+def fun_l22_n396()
+ fun_l23_n249
+end
+
+def fun_l22_n397()
+ fun_l23_n472
+end
+
+def fun_l22_n398()
+ fun_l23_n150
+end
+
+def fun_l22_n399()
+ fun_l23_n13
+end
+
+def fun_l22_n400()
+ fun_l23_n476
+end
+
+def fun_l22_n401()
+ fun_l23_n373
+end
+
+def fun_l22_n402()
+ fun_l23_n879
+end
+
+def fun_l22_n403()
+ fun_l23_n140
+end
+
+def fun_l22_n404()
+ fun_l23_n662
+end
+
+def fun_l22_n405()
+ fun_l23_n935
+end
+
+def fun_l22_n406()
+ fun_l23_n113
+end
+
+def fun_l22_n407()
+ fun_l23_n731
+end
+
+def fun_l22_n408()
+ fun_l23_n488
+end
+
+def fun_l22_n409()
+ fun_l23_n35
+end
+
+def fun_l22_n410()
+ fun_l23_n872
+end
+
+def fun_l22_n411()
+ fun_l23_n651
+end
+
+def fun_l22_n412()
+ fun_l23_n53
+end
+
+def fun_l22_n413()
+ fun_l23_n329
+end
+
+def fun_l22_n414()
+ fun_l23_n215
+end
+
+def fun_l22_n415()
+ fun_l23_n125
+end
+
+def fun_l22_n416()
+ fun_l23_n722
+end
+
+def fun_l22_n417()
+ fun_l23_n102
+end
+
+def fun_l22_n418()
+ fun_l23_n648
+end
+
+def fun_l22_n419()
+ fun_l23_n122
+end
+
+def fun_l22_n420()
+ fun_l23_n998
+end
+
+def fun_l22_n421()
+ fun_l23_n730
+end
+
+def fun_l22_n422()
+ fun_l23_n148
+end
+
+def fun_l22_n423()
+ fun_l23_n773
+end
+
+def fun_l22_n424()
+ fun_l23_n737
+end
+
+def fun_l22_n425()
+ fun_l23_n383
+end
+
+def fun_l22_n426()
+ fun_l23_n423
+end
+
+def fun_l22_n427()
+ fun_l23_n655
+end
+
+def fun_l22_n428()
+ fun_l23_n573
+end
+
+def fun_l22_n429()
+ fun_l23_n717
+end
+
+def fun_l22_n430()
+ fun_l23_n617
+end
+
+def fun_l22_n431()
+ fun_l23_n575
+end
+
+def fun_l22_n432()
+ fun_l23_n62
+end
+
+def fun_l22_n433()
+ fun_l23_n31
+end
+
+def fun_l22_n434()
+ fun_l23_n812
+end
+
+def fun_l22_n435()
+ fun_l23_n332
+end
+
+def fun_l22_n436()
+ fun_l23_n380
+end
+
+def fun_l22_n437()
+ fun_l23_n5
+end
+
+def fun_l22_n438()
+ fun_l23_n668
+end
+
+def fun_l22_n439()
+ fun_l23_n439
+end
+
+def fun_l22_n440()
+ fun_l23_n878
+end
+
+def fun_l22_n441()
+ fun_l23_n974
+end
+
+def fun_l22_n442()
+ fun_l23_n919
+end
+
+def fun_l22_n443()
+ fun_l23_n597
+end
+
+def fun_l22_n444()
+ fun_l23_n894
+end
+
+def fun_l22_n445()
+ fun_l23_n791
+end
+
+def fun_l22_n446()
+ fun_l23_n999
+end
+
+def fun_l22_n447()
+ fun_l23_n427
+end
+
+def fun_l22_n448()
+ fun_l23_n109
+end
+
+def fun_l22_n449()
+ fun_l23_n151
+end
+
+def fun_l22_n450()
+ fun_l23_n870
+end
+
+def fun_l22_n451()
+ fun_l23_n624
+end
+
+def fun_l22_n452()
+ fun_l23_n336
+end
+
+def fun_l22_n453()
+ fun_l23_n891
+end
+
+def fun_l22_n454()
+ fun_l23_n433
+end
+
+def fun_l22_n455()
+ fun_l23_n392
+end
+
+def fun_l22_n456()
+ fun_l23_n593
+end
+
+def fun_l22_n457()
+ fun_l23_n852
+end
+
+def fun_l22_n458()
+ fun_l23_n675
+end
+
+def fun_l22_n459()
+ fun_l23_n589
+end
+
+def fun_l22_n460()
+ fun_l23_n348
+end
+
+def fun_l22_n461()
+ fun_l23_n137
+end
+
+def fun_l22_n462()
+ fun_l23_n551
+end
+
+def fun_l22_n463()
+ fun_l23_n236
+end
+
+def fun_l22_n464()
+ fun_l23_n266
+end
+
+def fun_l22_n465()
+ fun_l23_n622
+end
+
+def fun_l22_n466()
+ fun_l23_n174
+end
+
+def fun_l22_n467()
+ fun_l23_n79
+end
+
+def fun_l22_n468()
+ fun_l23_n189
+end
+
+def fun_l22_n469()
+ fun_l23_n746
+end
+
+def fun_l22_n470()
+ fun_l23_n917
+end
+
+def fun_l22_n471()
+ fun_l23_n344
+end
+
+def fun_l22_n472()
+ fun_l23_n410
+end
+
+def fun_l22_n473()
+ fun_l23_n844
+end
+
+def fun_l22_n474()
+ fun_l23_n998
+end
+
+def fun_l22_n475()
+ fun_l23_n969
+end
+
+def fun_l22_n476()
+ fun_l23_n853
+end
+
+def fun_l22_n477()
+ fun_l23_n691
+end
+
+def fun_l22_n478()
+ fun_l23_n147
+end
+
+def fun_l22_n479()
+ fun_l23_n983
+end
+
+def fun_l22_n480()
+ fun_l23_n384
+end
+
+def fun_l22_n481()
+ fun_l23_n624
+end
+
+def fun_l22_n482()
+ fun_l23_n852
+end
+
+def fun_l22_n483()
+ fun_l23_n403
+end
+
+def fun_l22_n484()
+ fun_l23_n878
+end
+
+def fun_l22_n485()
+ fun_l23_n998
+end
+
+def fun_l22_n486()
+ fun_l23_n435
+end
+
+def fun_l22_n487()
+ fun_l23_n637
+end
+
+def fun_l22_n488()
+ fun_l23_n283
+end
+
+def fun_l22_n489()
+ fun_l23_n444
+end
+
+def fun_l22_n490()
+ fun_l23_n121
+end
+
+def fun_l22_n491()
+ fun_l23_n478
+end
+
+def fun_l22_n492()
+ fun_l23_n856
+end
+
+def fun_l22_n493()
+ fun_l23_n209
+end
+
+def fun_l22_n494()
+ fun_l23_n752
+end
+
+def fun_l22_n495()
+ fun_l23_n146
+end
+
+def fun_l22_n496()
+ fun_l23_n986
+end
+
+def fun_l22_n497()
+ fun_l23_n912
+end
+
+def fun_l22_n498()
+ fun_l23_n302
+end
+
+def fun_l22_n499()
+ fun_l23_n813
+end
+
+def fun_l22_n500()
+ fun_l23_n140
+end
+
+def fun_l22_n501()
+ fun_l23_n968
+end
+
+def fun_l22_n502()
+ fun_l23_n125
+end
+
+def fun_l22_n503()
+ fun_l23_n595
+end
+
+def fun_l22_n504()
+ fun_l23_n95
+end
+
+def fun_l22_n505()
+ fun_l23_n571
+end
+
+def fun_l22_n506()
+ fun_l23_n639
+end
+
+def fun_l22_n507()
+ fun_l23_n481
+end
+
+def fun_l22_n508()
+ fun_l23_n538
+end
+
+def fun_l22_n509()
+ fun_l23_n469
+end
+
+def fun_l22_n510()
+ fun_l23_n563
+end
+
+def fun_l22_n511()
+ fun_l23_n839
+end
+
+def fun_l22_n512()
+ fun_l23_n764
+end
+
+def fun_l22_n513()
+ fun_l23_n960
+end
+
+def fun_l22_n514()
+ fun_l23_n125
+end
+
+def fun_l22_n515()
+ fun_l23_n776
+end
+
+def fun_l22_n516()
+ fun_l23_n78
+end
+
+def fun_l22_n517()
+ fun_l23_n681
+end
+
+def fun_l22_n518()
+ fun_l23_n959
+end
+
+def fun_l22_n519()
+ fun_l23_n565
+end
+
+def fun_l22_n520()
+ fun_l23_n889
+end
+
+def fun_l22_n521()
+ fun_l23_n377
+end
+
+def fun_l22_n522()
+ fun_l23_n744
+end
+
+def fun_l22_n523()
+ fun_l23_n848
+end
+
+def fun_l22_n524()
+ fun_l23_n223
+end
+
+def fun_l22_n525()
+ fun_l23_n81
+end
+
+def fun_l22_n526()
+ fun_l23_n764
+end
+
+def fun_l22_n527()
+ fun_l23_n667
+end
+
+def fun_l22_n528()
+ fun_l23_n657
+end
+
+def fun_l22_n529()
+ fun_l23_n343
+end
+
+def fun_l22_n530()
+ fun_l23_n526
+end
+
+def fun_l22_n531()
+ fun_l23_n570
+end
+
+def fun_l22_n532()
+ fun_l23_n3
+end
+
+def fun_l22_n533()
+ fun_l23_n501
+end
+
+def fun_l22_n534()
+ fun_l23_n571
+end
+
+def fun_l22_n535()
+ fun_l23_n245
+end
+
+def fun_l22_n536()
+ fun_l23_n834
+end
+
+def fun_l22_n537()
+ fun_l23_n454
+end
+
+def fun_l22_n538()
+ fun_l23_n163
+end
+
+def fun_l22_n539()
+ fun_l23_n598
+end
+
+def fun_l22_n540()
+ fun_l23_n277
+end
+
+def fun_l22_n541()
+ fun_l23_n482
+end
+
+def fun_l22_n542()
+ fun_l23_n202
+end
+
+def fun_l22_n543()
+ fun_l23_n525
+end
+
+def fun_l22_n544()
+ fun_l23_n971
+end
+
+def fun_l22_n545()
+ fun_l23_n258
+end
+
+def fun_l22_n546()
+ fun_l23_n220
+end
+
+def fun_l22_n547()
+ fun_l23_n762
+end
+
+def fun_l22_n548()
+ fun_l23_n431
+end
+
+def fun_l22_n549()
+ fun_l23_n171
+end
+
+def fun_l22_n550()
+ fun_l23_n633
+end
+
+def fun_l22_n551()
+ fun_l23_n275
+end
+
+def fun_l22_n552()
+ fun_l23_n665
+end
+
+def fun_l22_n553()
+ fun_l23_n266
+end
+
+def fun_l22_n554()
+ fun_l23_n440
+end
+
+def fun_l22_n555()
+ fun_l23_n463
+end
+
+def fun_l22_n556()
+ fun_l23_n2
+end
+
+def fun_l22_n557()
+ fun_l23_n536
+end
+
+def fun_l22_n558()
+ fun_l23_n323
+end
+
+def fun_l22_n559()
+ fun_l23_n838
+end
+
+def fun_l22_n560()
+ fun_l23_n431
+end
+
+def fun_l22_n561()
+ fun_l23_n920
+end
+
+def fun_l22_n562()
+ fun_l23_n250
+end
+
+def fun_l22_n563()
+ fun_l23_n871
+end
+
+def fun_l22_n564()
+ fun_l23_n324
+end
+
+def fun_l22_n565()
+ fun_l23_n454
+end
+
+def fun_l22_n566()
+ fun_l23_n308
+end
+
+def fun_l22_n567()
+ fun_l23_n629
+end
+
+def fun_l22_n568()
+ fun_l23_n791
+end
+
+def fun_l22_n569()
+ fun_l23_n55
+end
+
+def fun_l22_n570()
+ fun_l23_n791
+end
+
+def fun_l22_n571()
+ fun_l23_n674
+end
+
+def fun_l22_n572()
+ fun_l23_n749
+end
+
+def fun_l22_n573()
+ fun_l23_n106
+end
+
+def fun_l22_n574()
+ fun_l23_n931
+end
+
+def fun_l22_n575()
+ fun_l23_n165
+end
+
+def fun_l22_n576()
+ fun_l23_n649
+end
+
+def fun_l22_n577()
+ fun_l23_n99
+end
+
+def fun_l22_n578()
+ fun_l23_n609
+end
+
+def fun_l22_n579()
+ fun_l23_n165
+end
+
+def fun_l22_n580()
+ fun_l23_n530
+end
+
+def fun_l22_n581()
+ fun_l23_n545
+end
+
+def fun_l22_n582()
+ fun_l23_n453
+end
+
+def fun_l22_n583()
+ fun_l23_n128
+end
+
+def fun_l22_n584()
+ fun_l23_n200
+end
+
+def fun_l22_n585()
+ fun_l23_n712
+end
+
+def fun_l22_n586()
+ fun_l23_n668
+end
+
+def fun_l22_n587()
+ fun_l23_n903
+end
+
+def fun_l22_n588()
+ fun_l23_n704
+end
+
+def fun_l22_n589()
+ fun_l23_n864
+end
+
+def fun_l22_n590()
+ fun_l23_n98
+end
+
+def fun_l22_n591()
+ fun_l23_n674
+end
+
+def fun_l22_n592()
+ fun_l23_n577
+end
+
+def fun_l22_n593()
+ fun_l23_n969
+end
+
+def fun_l22_n594()
+ fun_l23_n634
+end
+
+def fun_l22_n595()
+ fun_l23_n111
+end
+
+def fun_l22_n596()
+ fun_l23_n866
+end
+
+def fun_l22_n597()
+ fun_l23_n353
+end
+
+def fun_l22_n598()
+ fun_l23_n223
+end
+
+def fun_l22_n599()
+ fun_l23_n229
+end
+
+def fun_l22_n600()
+ fun_l23_n958
+end
+
+def fun_l22_n601()
+ fun_l23_n802
+end
+
+def fun_l22_n602()
+ fun_l23_n124
+end
+
+def fun_l22_n603()
+ fun_l23_n945
+end
+
+def fun_l22_n604()
+ fun_l23_n911
+end
+
+def fun_l22_n605()
+ fun_l23_n410
+end
+
+def fun_l22_n606()
+ fun_l23_n754
+end
+
+def fun_l22_n607()
+ fun_l23_n429
+end
+
+def fun_l22_n608()
+ fun_l23_n529
+end
+
+def fun_l22_n609()
+ fun_l23_n15
+end
+
+def fun_l22_n610()
+ fun_l23_n634
+end
+
+def fun_l22_n611()
+ fun_l23_n608
+end
+
+def fun_l22_n612()
+ fun_l23_n509
+end
+
+def fun_l22_n613()
+ fun_l23_n352
+end
+
+def fun_l22_n614()
+ fun_l23_n706
+end
+
+def fun_l22_n615()
+ fun_l23_n172
+end
+
+def fun_l22_n616()
+ fun_l23_n268
+end
+
+def fun_l22_n617()
+ fun_l23_n275
+end
+
+def fun_l22_n618()
+ fun_l23_n265
+end
+
+def fun_l22_n619()
+ fun_l23_n101
+end
+
+def fun_l22_n620()
+ fun_l23_n402
+end
+
+def fun_l22_n621()
+ fun_l23_n953
+end
+
+def fun_l22_n622()
+ fun_l23_n682
+end
+
+def fun_l22_n623()
+ fun_l23_n745
+end
+
+def fun_l22_n624()
+ fun_l23_n343
+end
+
+def fun_l22_n625()
+ fun_l23_n147
+end
+
+def fun_l22_n626()
+ fun_l23_n39
+end
+
+def fun_l22_n627()
+ fun_l23_n483
+end
+
+def fun_l22_n628()
+ fun_l23_n787
+end
+
+def fun_l22_n629()
+ fun_l23_n643
+end
+
+def fun_l22_n630()
+ fun_l23_n40
+end
+
+def fun_l22_n631()
+ fun_l23_n834
+end
+
+def fun_l22_n632()
+ fun_l23_n220
+end
+
+def fun_l22_n633()
+ fun_l23_n293
+end
+
+def fun_l22_n634()
+ fun_l23_n144
+end
+
+def fun_l22_n635()
+ fun_l23_n602
+end
+
+def fun_l22_n636()
+ fun_l23_n248
+end
+
+def fun_l22_n637()
+ fun_l23_n524
+end
+
+def fun_l22_n638()
+ fun_l23_n639
+end
+
+def fun_l22_n639()
+ fun_l23_n217
+end
+
+def fun_l22_n640()
+ fun_l23_n193
+end
+
+def fun_l22_n641()
+ fun_l23_n158
+end
+
+def fun_l22_n642()
+ fun_l23_n894
+end
+
+def fun_l22_n643()
+ fun_l23_n189
+end
+
+def fun_l22_n644()
+ fun_l23_n877
+end
+
+def fun_l22_n645()
+ fun_l23_n299
+end
+
+def fun_l22_n646()
+ fun_l23_n71
+end
+
+def fun_l22_n647()
+ fun_l23_n290
+end
+
+def fun_l22_n648()
+ fun_l23_n557
+end
+
+def fun_l22_n649()
+ fun_l23_n151
+end
+
+def fun_l22_n650()
+ fun_l23_n297
+end
+
+def fun_l22_n651()
+ fun_l23_n991
+end
+
+def fun_l22_n652()
+ fun_l23_n11
+end
+
+def fun_l22_n653()
+ fun_l23_n465
+end
+
+def fun_l22_n654()
+ fun_l23_n802
+end
+
+def fun_l22_n655()
+ fun_l23_n778
+end
+
+def fun_l22_n656()
+ fun_l23_n877
+end
+
+def fun_l22_n657()
+ fun_l23_n773
+end
+
+def fun_l22_n658()
+ fun_l23_n385
+end
+
+def fun_l22_n659()
+ fun_l23_n151
+end
+
+def fun_l22_n660()
+ fun_l23_n553
+end
+
+def fun_l22_n661()
+ fun_l23_n626
+end
+
+def fun_l22_n662()
+ fun_l23_n715
+end
+
+def fun_l22_n663()
+ fun_l23_n675
+end
+
+def fun_l22_n664()
+ fun_l23_n884
+end
+
+def fun_l22_n665()
+ fun_l23_n875
+end
+
+def fun_l22_n666()
+ fun_l23_n510
+end
+
+def fun_l22_n667()
+ fun_l23_n727
+end
+
+def fun_l22_n668()
+ fun_l23_n530
+end
+
+def fun_l22_n669()
+ fun_l23_n869
+end
+
+def fun_l22_n670()
+ fun_l23_n385
+end
+
+def fun_l22_n671()
+ fun_l23_n66
+end
+
+def fun_l22_n672()
+ fun_l23_n335
+end
+
+def fun_l22_n673()
+ fun_l23_n287
+end
+
+def fun_l22_n674()
+ fun_l23_n426
+end
+
+def fun_l22_n675()
+ fun_l23_n657
+end
+
+def fun_l22_n676()
+ fun_l23_n411
+end
+
+def fun_l22_n677()
+ fun_l23_n982
+end
+
+def fun_l22_n678()
+ fun_l23_n747
+end
+
+def fun_l22_n679()
+ fun_l23_n305
+end
+
+def fun_l22_n680()
+ fun_l23_n767
+end
+
+def fun_l22_n681()
+ fun_l23_n177
+end
+
+def fun_l22_n682()
+ fun_l23_n115
+end
+
+def fun_l22_n683()
+ fun_l23_n625
+end
+
+def fun_l22_n684()
+ fun_l23_n154
+end
+
+def fun_l22_n685()
+ fun_l23_n871
+end
+
+def fun_l22_n686()
+ fun_l23_n921
+end
+
+def fun_l22_n687()
+ fun_l23_n194
+end
+
+def fun_l22_n688()
+ fun_l23_n12
+end
+
+def fun_l22_n689()
+ fun_l23_n464
+end
+
+def fun_l22_n690()
+ fun_l23_n44
+end
+
+def fun_l22_n691()
+ fun_l23_n265
+end
+
+def fun_l22_n692()
+ fun_l23_n256
+end
+
+def fun_l22_n693()
+ fun_l23_n937
+end
+
+def fun_l22_n694()
+ fun_l23_n656
+end
+
+def fun_l22_n695()
+ fun_l23_n986
+end
+
+def fun_l22_n696()
+ fun_l23_n774
+end
+
+def fun_l22_n697()
+ fun_l23_n907
+end
+
+def fun_l22_n698()
+ fun_l23_n763
+end
+
+def fun_l22_n699()
+ fun_l23_n290
+end
+
+def fun_l22_n700()
+ fun_l23_n121
+end
+
+def fun_l22_n701()
+ fun_l23_n605
+end
+
+def fun_l22_n702()
+ fun_l23_n415
+end
+
+def fun_l22_n703()
+ fun_l23_n431
+end
+
+def fun_l22_n704()
+ fun_l23_n65
+end
+
+def fun_l22_n705()
+ fun_l23_n997
+end
+
+def fun_l22_n706()
+ fun_l23_n859
+end
+
+def fun_l22_n707()
+ fun_l23_n768
+end
+
+def fun_l22_n708()
+ fun_l23_n570
+end
+
+def fun_l22_n709()
+ fun_l23_n458
+end
+
+def fun_l22_n710()
+ fun_l23_n964
+end
+
+def fun_l22_n711()
+ fun_l23_n484
+end
+
+def fun_l22_n712()
+ fun_l23_n440
+end
+
+def fun_l22_n713()
+ fun_l23_n133
+end
+
+def fun_l22_n714()
+ fun_l23_n789
+end
+
+def fun_l22_n715()
+ fun_l23_n176
+end
+
+def fun_l22_n716()
+ fun_l23_n380
+end
+
+def fun_l22_n717()
+ fun_l23_n115
+end
+
+def fun_l22_n718()
+ fun_l23_n652
+end
+
+def fun_l22_n719()
+ fun_l23_n210
+end
+
+def fun_l22_n720()
+ fun_l23_n347
+end
+
+def fun_l22_n721()
+ fun_l23_n72
+end
+
+def fun_l22_n722()
+ fun_l23_n426
+end
+
+def fun_l22_n723()
+ fun_l23_n123
+end
+
+def fun_l22_n724()
+ fun_l23_n321
+end
+
+def fun_l22_n725()
+ fun_l23_n582
+end
+
+def fun_l22_n726()
+ fun_l23_n434
+end
+
+def fun_l22_n727()
+ fun_l23_n543
+end
+
+def fun_l22_n728()
+ fun_l23_n794
+end
+
+def fun_l22_n729()
+ fun_l23_n474
+end
+
+def fun_l22_n730()
+ fun_l23_n412
+end
+
+def fun_l22_n731()
+ fun_l23_n898
+end
+
+def fun_l22_n732()
+ fun_l23_n833
+end
+
+def fun_l22_n733()
+ fun_l23_n77
+end
+
+def fun_l22_n734()
+ fun_l23_n728
+end
+
+def fun_l22_n735()
+ fun_l23_n397
+end
+
+def fun_l22_n736()
+ fun_l23_n40
+end
+
+def fun_l22_n737()
+ fun_l23_n501
+end
+
+def fun_l22_n738()
+ fun_l23_n817
+end
+
+def fun_l22_n739()
+ fun_l23_n792
+end
+
+def fun_l22_n740()
+ fun_l23_n435
+end
+
+def fun_l22_n741()
+ fun_l23_n264
+end
+
+def fun_l22_n742()
+ fun_l23_n285
+end
+
+def fun_l22_n743()
+ fun_l23_n756
+end
+
+def fun_l22_n744()
+ fun_l23_n836
+end
+
+def fun_l22_n745()
+ fun_l23_n179
+end
+
+def fun_l22_n746()
+ fun_l23_n375
+end
+
+def fun_l22_n747()
+ fun_l23_n631
+end
+
+def fun_l22_n748()
+ fun_l23_n232
+end
+
+def fun_l22_n749()
+ fun_l23_n215
+end
+
+def fun_l22_n750()
+ fun_l23_n118
+end
+
+def fun_l22_n751()
+ fun_l23_n721
+end
+
+def fun_l22_n752()
+ fun_l23_n378
+end
+
+def fun_l22_n753()
+ fun_l23_n613
+end
+
+def fun_l22_n754()
+ fun_l23_n368
+end
+
+def fun_l22_n755()
+ fun_l23_n748
+end
+
+def fun_l22_n756()
+ fun_l23_n0
+end
+
+def fun_l22_n757()
+ fun_l23_n90
+end
+
+def fun_l22_n758()
+ fun_l23_n895
+end
+
+def fun_l22_n759()
+ fun_l23_n0
+end
+
+def fun_l22_n760()
+ fun_l23_n486
+end
+
+def fun_l22_n761()
+ fun_l23_n568
+end
+
+def fun_l22_n762()
+ fun_l23_n525
+end
+
+def fun_l22_n763()
+ fun_l23_n106
+end
+
+def fun_l22_n764()
+ fun_l23_n607
+end
+
+def fun_l22_n765()
+ fun_l23_n729
+end
+
+def fun_l22_n766()
+ fun_l23_n781
+end
+
+def fun_l22_n767()
+ fun_l23_n79
+end
+
+def fun_l22_n768()
+ fun_l23_n313
+end
+
+def fun_l22_n769()
+ fun_l23_n764
+end
+
+def fun_l22_n770()
+ fun_l23_n348
+end
+
+def fun_l22_n771()
+ fun_l23_n809
+end
+
+def fun_l22_n772()
+ fun_l23_n891
+end
+
+def fun_l22_n773()
+ fun_l23_n806
+end
+
+def fun_l22_n774()
+ fun_l23_n173
+end
+
+def fun_l22_n775()
+ fun_l23_n960
+end
+
+def fun_l22_n776()
+ fun_l23_n186
+end
+
+def fun_l22_n777()
+ fun_l23_n863
+end
+
+def fun_l22_n778()
+ fun_l23_n860
+end
+
+def fun_l22_n779()
+ fun_l23_n122
+end
+
+def fun_l22_n780()
+ fun_l23_n114
+end
+
+def fun_l22_n781()
+ fun_l23_n910
+end
+
+def fun_l22_n782()
+ fun_l23_n20
+end
+
+def fun_l22_n783()
+ fun_l23_n384
+end
+
+def fun_l22_n784()
+ fun_l23_n56
+end
+
+def fun_l22_n785()
+ fun_l23_n833
+end
+
+def fun_l22_n786()
+ fun_l23_n31
+end
+
+def fun_l22_n787()
+ fun_l23_n679
+end
+
+def fun_l22_n788()
+ fun_l23_n8
+end
+
+def fun_l22_n789()
+ fun_l23_n425
+end
+
+def fun_l22_n790()
+ fun_l23_n615
+end
+
+def fun_l22_n791()
+ fun_l23_n220
+end
+
+def fun_l22_n792()
+ fun_l23_n977
+end
+
+def fun_l22_n793()
+ fun_l23_n913
+end
+
+def fun_l22_n794()
+ fun_l23_n714
+end
+
+def fun_l22_n795()
+ fun_l23_n885
+end
+
+def fun_l22_n796()
+ fun_l23_n289
+end
+
+def fun_l22_n797()
+ fun_l23_n205
+end
+
+def fun_l22_n798()
+ fun_l23_n826
+end
+
+def fun_l22_n799()
+ fun_l23_n335
+end
+
+def fun_l22_n800()
+ fun_l23_n754
+end
+
+def fun_l22_n801()
+ fun_l23_n588
+end
+
+def fun_l22_n802()
+ fun_l23_n689
+end
+
+def fun_l22_n803()
+ fun_l23_n731
+end
+
+def fun_l22_n804()
+ fun_l23_n962
+end
+
+def fun_l22_n805()
+ fun_l23_n283
+end
+
+def fun_l22_n806()
+ fun_l23_n692
+end
+
+def fun_l22_n807()
+ fun_l23_n554
+end
+
+def fun_l22_n808()
+ fun_l23_n365
+end
+
+def fun_l22_n809()
+ fun_l23_n684
+end
+
+def fun_l22_n810()
+ fun_l23_n848
+end
+
+def fun_l22_n811()
+ fun_l23_n283
+end
+
+def fun_l22_n812()
+ fun_l23_n378
+end
+
+def fun_l22_n813()
+ fun_l23_n83
+end
+
+def fun_l22_n814()
+ fun_l23_n260
+end
+
+def fun_l22_n815()
+ fun_l23_n382
+end
+
+def fun_l22_n816()
+ fun_l23_n701
+end
+
+def fun_l22_n817()
+ fun_l23_n177
+end
+
+def fun_l22_n818()
+ fun_l23_n703
+end
+
+def fun_l22_n819()
+ fun_l23_n105
+end
+
+def fun_l22_n820()
+ fun_l23_n874
+end
+
+def fun_l22_n821()
+ fun_l23_n952
+end
+
+def fun_l22_n822()
+ fun_l23_n37
+end
+
+def fun_l22_n823()
+ fun_l23_n478
+end
+
+def fun_l22_n824()
+ fun_l23_n164
+end
+
+def fun_l22_n825()
+ fun_l23_n505
+end
+
+def fun_l22_n826()
+ fun_l23_n353
+end
+
+def fun_l22_n827()
+ fun_l23_n799
+end
+
+def fun_l22_n828()
+ fun_l23_n330
+end
+
+def fun_l22_n829()
+ fun_l23_n979
+end
+
+def fun_l22_n830()
+ fun_l23_n842
+end
+
+def fun_l22_n831()
+ fun_l23_n912
+end
+
+def fun_l22_n832()
+ fun_l23_n579
+end
+
+def fun_l22_n833()
+ fun_l23_n123
+end
+
+def fun_l22_n834()
+ fun_l23_n864
+end
+
+def fun_l22_n835()
+ fun_l23_n369
+end
+
+def fun_l22_n836()
+ fun_l23_n145
+end
+
+def fun_l22_n837()
+ fun_l23_n414
+end
+
+def fun_l22_n838()
+ fun_l23_n261
+end
+
+def fun_l22_n839()
+ fun_l23_n88
+end
+
+def fun_l22_n840()
+ fun_l23_n427
+end
+
+def fun_l22_n841()
+ fun_l23_n847
+end
+
+def fun_l22_n842()
+ fun_l23_n734
+end
+
+def fun_l22_n843()
+ fun_l23_n895
+end
+
+def fun_l22_n844()
+ fun_l23_n765
+end
+
+def fun_l22_n845()
+ fun_l23_n647
+end
+
+def fun_l22_n846()
+ fun_l23_n862
+end
+
+def fun_l22_n847()
+ fun_l23_n360
+end
+
+def fun_l22_n848()
+ fun_l23_n922
+end
+
+def fun_l22_n849()
+ fun_l23_n914
+end
+
+def fun_l22_n850()
+ fun_l23_n408
+end
+
+def fun_l22_n851()
+ fun_l23_n248
+end
+
+def fun_l22_n852()
+ fun_l23_n812
+end
+
+def fun_l22_n853()
+ fun_l23_n288
+end
+
+def fun_l22_n854()
+ fun_l23_n885
+end
+
+def fun_l22_n855()
+ fun_l23_n164
+end
+
+def fun_l22_n856()
+ fun_l23_n231
+end
+
+def fun_l22_n857()
+ fun_l23_n428
+end
+
+def fun_l22_n858()
+ fun_l23_n527
+end
+
+def fun_l22_n859()
+ fun_l23_n419
+end
+
+def fun_l22_n860()
+ fun_l23_n348
+end
+
+def fun_l22_n861()
+ fun_l23_n580
+end
+
+def fun_l22_n862()
+ fun_l23_n437
+end
+
+def fun_l22_n863()
+ fun_l23_n486
+end
+
+def fun_l22_n864()
+ fun_l23_n2
+end
+
+def fun_l22_n865()
+ fun_l23_n733
+end
+
+def fun_l22_n866()
+ fun_l23_n50
+end
+
+def fun_l22_n867()
+ fun_l23_n391
+end
+
+def fun_l22_n868()
+ fun_l23_n451
+end
+
+def fun_l22_n869()
+ fun_l23_n86
+end
+
+def fun_l22_n870()
+ fun_l23_n426
+end
+
+def fun_l22_n871()
+ fun_l23_n279
+end
+
+def fun_l22_n872()
+ fun_l23_n41
+end
+
+def fun_l22_n873()
+ fun_l23_n241
+end
+
+def fun_l22_n874()
+ fun_l23_n601
+end
+
+def fun_l22_n875()
+ fun_l23_n187
+end
+
+def fun_l22_n876()
+ fun_l23_n98
+end
+
+def fun_l22_n877()
+ fun_l23_n145
+end
+
+def fun_l22_n878()
+ fun_l23_n327
+end
+
+def fun_l22_n879()
+ fun_l23_n928
+end
+
+def fun_l22_n880()
+ fun_l23_n666
+end
+
+def fun_l22_n881()
+ fun_l23_n152
+end
+
+def fun_l22_n882()
+ fun_l23_n930
+end
+
+def fun_l22_n883()
+ fun_l23_n842
+end
+
+def fun_l22_n884()
+ fun_l23_n865
+end
+
+def fun_l22_n885()
+ fun_l23_n16
+end
+
+def fun_l22_n886()
+ fun_l23_n402
+end
+
+def fun_l22_n887()
+ fun_l23_n711
+end
+
+def fun_l22_n888()
+ fun_l23_n206
+end
+
+def fun_l22_n889()
+ fun_l23_n991
+end
+
+def fun_l22_n890()
+ fun_l23_n852
+end
+
+def fun_l22_n891()
+ fun_l23_n602
+end
+
+def fun_l22_n892()
+ fun_l23_n998
+end
+
+def fun_l22_n893()
+ fun_l23_n740
+end
+
+def fun_l22_n894()
+ fun_l23_n643
+end
+
+def fun_l22_n895()
+ fun_l23_n872
+end
+
+def fun_l22_n896()
+ fun_l23_n689
+end
+
+def fun_l22_n897()
+ fun_l23_n119
+end
+
+def fun_l22_n898()
+ fun_l23_n230
+end
+
+def fun_l22_n899()
+ fun_l23_n345
+end
+
+def fun_l22_n900()
+ fun_l23_n805
+end
+
+def fun_l22_n901()
+ fun_l23_n850
+end
+
+def fun_l22_n902()
+ fun_l23_n930
+end
+
+def fun_l22_n903()
+ fun_l23_n652
+end
+
+def fun_l22_n904()
+ fun_l23_n772
+end
+
+def fun_l22_n905()
+ fun_l23_n219
+end
+
+def fun_l22_n906()
+ fun_l23_n592
+end
+
+def fun_l22_n907()
+ fun_l23_n177
+end
+
+def fun_l22_n908()
+ fun_l23_n552
+end
+
+def fun_l22_n909()
+ fun_l23_n334
+end
+
+def fun_l22_n910()
+ fun_l23_n764
+end
+
+def fun_l22_n911()
+ fun_l23_n482
+end
+
+def fun_l22_n912()
+ fun_l23_n73
+end
+
+def fun_l22_n913()
+ fun_l23_n854
+end
+
+def fun_l22_n914()
+ fun_l23_n215
+end
+
+def fun_l22_n915()
+ fun_l23_n736
+end
+
+def fun_l22_n916()
+ fun_l23_n91
+end
+
+def fun_l22_n917()
+ fun_l23_n506
+end
+
+def fun_l22_n918()
+ fun_l23_n775
+end
+
+def fun_l22_n919()
+ fun_l23_n171
+end
+
+def fun_l22_n920()
+ fun_l23_n414
+end
+
+def fun_l22_n921()
+ fun_l23_n185
+end
+
+def fun_l22_n922()
+ fun_l23_n190
+end
+
+def fun_l22_n923()
+ fun_l23_n696
+end
+
+def fun_l22_n924()
+ fun_l23_n175
+end
+
+def fun_l22_n925()
+ fun_l23_n29
+end
+
+def fun_l22_n926()
+ fun_l23_n729
+end
+
+def fun_l22_n927()
+ fun_l23_n279
+end
+
+def fun_l22_n928()
+ fun_l23_n2
+end
+
+def fun_l22_n929()
+ fun_l23_n44
+end
+
+def fun_l22_n930()
+ fun_l23_n399
+end
+
+def fun_l22_n931()
+ fun_l23_n957
+end
+
+def fun_l22_n932()
+ fun_l23_n513
+end
+
+def fun_l22_n933()
+ fun_l23_n607
+end
+
+def fun_l22_n934()
+ fun_l23_n488
+end
+
+def fun_l22_n935()
+ fun_l23_n308
+end
+
+def fun_l22_n936()
+ fun_l23_n959
+end
+
+def fun_l22_n937()
+ fun_l23_n373
+end
+
+def fun_l22_n938()
+ fun_l23_n759
+end
+
+def fun_l22_n939()
+ fun_l23_n985
+end
+
+def fun_l22_n940()
+ fun_l23_n971
+end
+
+def fun_l22_n941()
+ fun_l23_n493
+end
+
+def fun_l22_n942()
+ fun_l23_n884
+end
+
+def fun_l22_n943()
+ fun_l23_n636
+end
+
+def fun_l22_n944()
+ fun_l23_n423
+end
+
+def fun_l22_n945()
+ fun_l23_n406
+end
+
+def fun_l22_n946()
+ fun_l23_n92
+end
+
+def fun_l22_n947()
+ fun_l23_n11
+end
+
+def fun_l22_n948()
+ fun_l23_n112
+end
+
+def fun_l22_n949()
+ fun_l23_n489
+end
+
+def fun_l22_n950()
+ fun_l23_n829
+end
+
+def fun_l22_n951()
+ fun_l23_n438
+end
+
+def fun_l22_n952()
+ fun_l23_n622
+end
+
+def fun_l22_n953()
+ fun_l23_n133
+end
+
+def fun_l22_n954()
+ fun_l23_n734
+end
+
+def fun_l22_n955()
+ fun_l23_n745
+end
+
+def fun_l22_n956()
+ fun_l23_n743
+end
+
+def fun_l22_n957()
+ fun_l23_n299
+end
+
+def fun_l22_n958()
+ fun_l23_n952
+end
+
+def fun_l22_n959()
+ fun_l23_n841
+end
+
+def fun_l22_n960()
+ fun_l23_n317
+end
+
+def fun_l22_n961()
+ fun_l23_n506
+end
+
+def fun_l22_n962()
+ fun_l23_n823
+end
+
+def fun_l22_n963()
+ fun_l23_n330
+end
+
+def fun_l22_n964()
+ fun_l23_n899
+end
+
+def fun_l22_n965()
+ fun_l23_n994
+end
+
+def fun_l22_n966()
+ fun_l23_n625
+end
+
+def fun_l22_n967()
+ fun_l23_n74
+end
+
+def fun_l22_n968()
+ fun_l23_n911
+end
+
+def fun_l22_n969()
+ fun_l23_n215
+end
+
+def fun_l22_n970()
+ fun_l23_n845
+end
+
+def fun_l22_n971()
+ fun_l23_n813
+end
+
+def fun_l22_n972()
+ fun_l23_n784
+end
+
+def fun_l22_n973()
+ fun_l23_n727
+end
+
+def fun_l22_n974()
+ fun_l23_n62
+end
+
+def fun_l22_n975()
+ fun_l23_n790
+end
+
+def fun_l22_n976()
+ fun_l23_n918
+end
+
+def fun_l22_n977()
+ fun_l23_n658
+end
+
+def fun_l22_n978()
+ fun_l23_n621
+end
+
+def fun_l22_n979()
+ fun_l23_n731
+end
+
+def fun_l22_n980()
+ fun_l23_n728
+end
+
+def fun_l22_n981()
+ fun_l23_n558
+end
+
+def fun_l22_n982()
+ fun_l23_n501
+end
+
+def fun_l22_n983()
+ fun_l23_n794
+end
+
+def fun_l22_n984()
+ fun_l23_n162
+end
+
+def fun_l22_n985()
+ fun_l23_n700
+end
+
+def fun_l22_n986()
+ fun_l23_n875
+end
+
+def fun_l22_n987()
+ fun_l23_n58
+end
+
+def fun_l22_n988()
+ fun_l23_n55
+end
+
+def fun_l22_n989()
+ fun_l23_n491
+end
+
+def fun_l22_n990()
+ fun_l23_n613
+end
+
+def fun_l22_n991()
+ fun_l23_n587
+end
+
+def fun_l22_n992()
+ fun_l23_n311
+end
+
+def fun_l22_n993()
+ fun_l23_n305
+end
+
+def fun_l22_n994()
+ fun_l23_n348
+end
+
+def fun_l22_n995()
+ fun_l23_n679
+end
+
+def fun_l22_n996()
+ fun_l23_n245
+end
+
+def fun_l22_n997()
+ fun_l23_n419
+end
+
+def fun_l22_n998()
+ fun_l23_n456
+end
+
+def fun_l22_n999()
+ fun_l23_n146
+end
+
+def fun_l23_n0()
+ fun_l24_n409
+end
+
+def fun_l23_n1()
+ fun_l24_n825
+end
+
+def fun_l23_n2()
+ fun_l24_n349
+end
+
+def fun_l23_n3()
+ fun_l24_n560
+end
+
+def fun_l23_n4()
+ fun_l24_n949
+end
+
+def fun_l23_n5()
+ fun_l24_n108
+end
+
+def fun_l23_n6()
+ fun_l24_n149
+end
+
+def fun_l23_n7()
+ fun_l24_n224
+end
+
+def fun_l23_n8()
+ fun_l24_n418
+end
+
+def fun_l23_n9()
+ fun_l24_n819
+end
+
+def fun_l23_n10()
+ fun_l24_n269
+end
+
+def fun_l23_n11()
+ fun_l24_n158
+end
+
+def fun_l23_n12()
+ fun_l24_n487
+end
+
+def fun_l23_n13()
+ fun_l24_n561
+end
+
+def fun_l23_n14()
+ fun_l24_n292
+end
+
+def fun_l23_n15()
+ fun_l24_n996
+end
+
+def fun_l23_n16()
+ fun_l24_n399
+end
+
+def fun_l23_n17()
+ fun_l24_n585
+end
+
+def fun_l23_n18()
+ fun_l24_n691
+end
+
+def fun_l23_n19()
+ fun_l24_n884
+end
+
+def fun_l23_n20()
+ fun_l24_n933
+end
+
+def fun_l23_n21()
+ fun_l24_n139
+end
+
+def fun_l23_n22()
+ fun_l24_n770
+end
+
+def fun_l23_n23()
+ fun_l24_n894
+end
+
+def fun_l23_n24()
+ fun_l24_n418
+end
+
+def fun_l23_n25()
+ fun_l24_n695
+end
+
+def fun_l23_n26()
+ fun_l24_n800
+end
+
+def fun_l23_n27()
+ fun_l24_n580
+end
+
+def fun_l23_n28()
+ fun_l24_n1
+end
+
+def fun_l23_n29()
+ fun_l24_n121
+end
+
+def fun_l23_n30()
+ fun_l24_n757
+end
+
+def fun_l23_n31()
+ fun_l24_n461
+end
+
+def fun_l23_n32()
+ fun_l24_n534
+end
+
+def fun_l23_n33()
+ fun_l24_n795
+end
+
+def fun_l23_n34()
+ fun_l24_n286
+end
+
+def fun_l23_n35()
+ fun_l24_n200
+end
+
+def fun_l23_n36()
+ fun_l24_n513
+end
+
+def fun_l23_n37()
+ fun_l24_n340
+end
+
+def fun_l23_n38()
+ fun_l24_n385
+end
+
+def fun_l23_n39()
+ fun_l24_n432
+end
+
+def fun_l23_n40()
+ fun_l24_n990
+end
+
+def fun_l23_n41()
+ fun_l24_n966
+end
+
+def fun_l23_n42()
+ fun_l24_n237
+end
+
+def fun_l23_n43()
+ fun_l24_n249
+end
+
+def fun_l23_n44()
+ fun_l24_n182
+end
+
+def fun_l23_n45()
+ fun_l24_n718
+end
+
+def fun_l23_n46()
+ fun_l24_n902
+end
+
+def fun_l23_n47()
+ fun_l24_n963
+end
+
+def fun_l23_n48()
+ fun_l24_n337
+end
+
+def fun_l23_n49()
+ fun_l24_n615
+end
+
+def fun_l23_n50()
+ fun_l24_n729
+end
+
+def fun_l23_n51()
+ fun_l24_n240
+end
+
+def fun_l23_n52()
+ fun_l24_n309
+end
+
+def fun_l23_n53()
+ fun_l24_n697
+end
+
+def fun_l23_n54()
+ fun_l24_n260
+end
+
+def fun_l23_n55()
+ fun_l24_n11
+end
+
+def fun_l23_n56()
+ fun_l24_n630
+end
+
+def fun_l23_n57()
+ fun_l24_n983
+end
+
+def fun_l23_n58()
+ fun_l24_n678
+end
+
+def fun_l23_n59()
+ fun_l24_n95
+end
+
+def fun_l23_n60()
+ fun_l24_n63
+end
+
+def fun_l23_n61()
+ fun_l24_n43
+end
+
+def fun_l23_n62()
+ fun_l24_n679
+end
+
+def fun_l23_n63()
+ fun_l24_n671
+end
+
+def fun_l23_n64()
+ fun_l24_n377
+end
+
+def fun_l23_n65()
+ fun_l24_n939
+end
+
+def fun_l23_n66()
+ fun_l24_n3
+end
+
+def fun_l23_n67()
+ fun_l24_n230
+end
+
+def fun_l23_n68()
+ fun_l24_n622
+end
+
+def fun_l23_n69()
+ fun_l24_n339
+end
+
+def fun_l23_n70()
+ fun_l24_n736
+end
+
+def fun_l23_n71()
+ fun_l24_n116
+end
+
+def fun_l23_n72()
+ fun_l24_n373
+end
+
+def fun_l23_n73()
+ fun_l24_n891
+end
+
+def fun_l23_n74()
+ fun_l24_n954
+end
+
+def fun_l23_n75()
+ fun_l24_n967
+end
+
+def fun_l23_n76()
+ fun_l24_n205
+end
+
+def fun_l23_n77()
+ fun_l24_n802
+end
+
+def fun_l23_n78()
+ fun_l24_n480
+end
+
+def fun_l23_n79()
+ fun_l24_n935
+end
+
+def fun_l23_n80()
+ fun_l24_n84
+end
+
+def fun_l23_n81()
+ fun_l24_n40
+end
+
+def fun_l23_n82()
+ fun_l24_n559
+end
+
+def fun_l23_n83()
+ fun_l24_n16
+end
+
+def fun_l23_n84()
+ fun_l24_n494
+end
+
+def fun_l23_n85()
+ fun_l24_n580
+end
+
+def fun_l23_n86()
+ fun_l24_n72
+end
+
+def fun_l23_n87()
+ fun_l24_n33
+end
+
+def fun_l23_n88()
+ fun_l24_n742
+end
+
+def fun_l23_n89()
+ fun_l24_n10
+end
+
+def fun_l23_n90()
+ fun_l24_n33
+end
+
+def fun_l23_n91()
+ fun_l24_n306
+end
+
+def fun_l23_n92()
+ fun_l24_n960
+end
+
+def fun_l23_n93()
+ fun_l24_n573
+end
+
+def fun_l23_n94()
+ fun_l24_n145
+end
+
+def fun_l23_n95()
+ fun_l24_n730
+end
+
+def fun_l23_n96()
+ fun_l24_n703
+end
+
+def fun_l23_n97()
+ fun_l24_n772
+end
+
+def fun_l23_n98()
+ fun_l24_n664
+end
+
+def fun_l23_n99()
+ fun_l24_n582
+end
+
+def fun_l23_n100()
+ fun_l24_n144
+end
+
+def fun_l23_n101()
+ fun_l24_n950
+end
+
+def fun_l23_n102()
+ fun_l24_n449
+end
+
+def fun_l23_n103()
+ fun_l24_n416
+end
+
+def fun_l23_n104()
+ fun_l24_n453
+end
+
+def fun_l23_n105()
+ fun_l24_n159
+end
+
+def fun_l23_n106()
+ fun_l24_n483
+end
+
+def fun_l23_n107()
+ fun_l24_n69
+end
+
+def fun_l23_n108()
+ fun_l24_n142
+end
+
+def fun_l23_n109()
+ fun_l24_n968
+end
+
+def fun_l23_n110()
+ fun_l24_n760
+end
+
+def fun_l23_n111()
+ fun_l24_n600
+end
+
+def fun_l23_n112()
+ fun_l24_n821
+end
+
+def fun_l23_n113()
+ fun_l24_n527
+end
+
+def fun_l23_n114()
+ fun_l24_n661
+end
+
+def fun_l23_n115()
+ fun_l24_n15
+end
+
+def fun_l23_n116()
+ fun_l24_n807
+end
+
+def fun_l23_n117()
+ fun_l24_n143
+end
+
+def fun_l23_n118()
+ fun_l24_n962
+end
+
+def fun_l23_n119()
+ fun_l24_n83
+end
+
+def fun_l23_n120()
+ fun_l24_n755
+end
+
+def fun_l23_n121()
+ fun_l24_n645
+end
+
+def fun_l23_n122()
+ fun_l24_n479
+end
+
+def fun_l23_n123()
+ fun_l24_n639
+end
+
+def fun_l23_n124()
+ fun_l24_n528
+end
+
+def fun_l23_n125()
+ fun_l24_n782
+end
+
+def fun_l23_n126()
+ fun_l24_n200
+end
+
+def fun_l23_n127()
+ fun_l24_n60
+end
+
+def fun_l23_n128()
+ fun_l24_n396
+end
+
+def fun_l23_n129()
+ fun_l24_n600
+end
+
+def fun_l23_n130()
+ fun_l24_n397
+end
+
+def fun_l23_n131()
+ fun_l24_n921
+end
+
+def fun_l23_n132()
+ fun_l24_n979
+end
+
+def fun_l23_n133()
+ fun_l24_n849
+end
+
+def fun_l23_n134()
+ fun_l24_n302
+end
+
+def fun_l23_n135()
+ fun_l24_n77
+end
+
+def fun_l23_n136()
+ fun_l24_n249
+end
+
+def fun_l23_n137()
+ fun_l24_n912
+end
+
+def fun_l23_n138()
+ fun_l24_n661
+end
+
+def fun_l23_n139()
+ fun_l24_n500
+end
+
+def fun_l23_n140()
+ fun_l24_n590
+end
+
+def fun_l23_n141()
+ fun_l24_n942
+end
+
+def fun_l23_n142()
+ fun_l24_n299
+end
+
+def fun_l23_n143()
+ fun_l24_n272
+end
+
+def fun_l23_n144()
+ fun_l24_n747
+end
+
+def fun_l23_n145()
+ fun_l24_n88
+end
+
+def fun_l23_n146()
+ fun_l24_n524
+end
+
+def fun_l23_n147()
+ fun_l24_n931
+end
+
+def fun_l23_n148()
+ fun_l24_n712
+end
+
+def fun_l23_n149()
+ fun_l24_n661
+end
+
+def fun_l23_n150()
+ fun_l24_n426
+end
+
+def fun_l23_n151()
+ fun_l24_n693
+end
+
+def fun_l23_n152()
+ fun_l24_n585
+end
+
+def fun_l23_n153()
+ fun_l24_n451
+end
+
+def fun_l23_n154()
+ fun_l24_n333
+end
+
+def fun_l23_n155()
+ fun_l24_n792
+end
+
+def fun_l23_n156()
+ fun_l24_n840
+end
+
+def fun_l23_n157()
+ fun_l24_n643
+end
+
+def fun_l23_n158()
+ fun_l24_n120
+end
+
+def fun_l23_n159()
+ fun_l24_n86
+end
+
+def fun_l23_n160()
+ fun_l24_n352
+end
+
+def fun_l23_n161()
+ fun_l24_n761
+end
+
+def fun_l23_n162()
+ fun_l24_n412
+end
+
+def fun_l23_n163()
+ fun_l24_n156
+end
+
+def fun_l23_n164()
+ fun_l24_n909
+end
+
+def fun_l23_n165()
+ fun_l24_n394
+end
+
+def fun_l23_n166()
+ fun_l24_n973
+end
+
+def fun_l23_n167()
+ fun_l24_n31
+end
+
+def fun_l23_n168()
+ fun_l24_n545
+end
+
+def fun_l23_n169()
+ fun_l24_n180
+end
+
+def fun_l23_n170()
+ fun_l24_n446
+end
+
+def fun_l23_n171()
+ fun_l24_n965
+end
+
+def fun_l23_n172()
+ fun_l24_n102
+end
+
+def fun_l23_n173()
+ fun_l24_n161
+end
+
+def fun_l23_n174()
+ fun_l24_n571
+end
+
+def fun_l23_n175()
+ fun_l24_n451
+end
+
+def fun_l23_n176()
+ fun_l24_n947
+end
+
+def fun_l23_n177()
+ fun_l24_n906
+end
+
+def fun_l23_n178()
+ fun_l24_n356
+end
+
+def fun_l23_n179()
+ fun_l24_n84
+end
+
+def fun_l23_n180()
+ fun_l24_n798
+end
+
+def fun_l23_n181()
+ fun_l24_n500
+end
+
+def fun_l23_n182()
+ fun_l24_n419
+end
+
+def fun_l23_n183()
+ fun_l24_n797
+end
+
+def fun_l23_n184()
+ fun_l24_n459
+end
+
+def fun_l23_n185()
+ fun_l24_n795
+end
+
+def fun_l23_n186()
+ fun_l24_n478
+end
+
+def fun_l23_n187()
+ fun_l24_n742
+end
+
+def fun_l23_n188()
+ fun_l24_n262
+end
+
+def fun_l23_n189()
+ fun_l24_n37
+end
+
+def fun_l23_n190()
+ fun_l24_n340
+end
+
+def fun_l23_n191()
+ fun_l24_n314
+end
+
+def fun_l23_n192()
+ fun_l24_n595
+end
+
+def fun_l23_n193()
+ fun_l24_n769
+end
+
+def fun_l23_n194()
+ fun_l24_n637
+end
+
+def fun_l23_n195()
+ fun_l24_n377
+end
+
+def fun_l23_n196()
+ fun_l24_n77
+end
+
+def fun_l23_n197()
+ fun_l24_n486
+end
+
+def fun_l23_n198()
+ fun_l24_n992
+end
+
+def fun_l23_n199()
+ fun_l24_n546
+end
+
+def fun_l23_n200()
+ fun_l24_n386
+end
+
+def fun_l23_n201()
+ fun_l24_n301
+end
+
+def fun_l23_n202()
+ fun_l24_n867
+end
+
+def fun_l23_n203()
+ fun_l24_n948
+end
+
+def fun_l23_n204()
+ fun_l24_n163
+end
+
+def fun_l23_n205()
+ fun_l24_n618
+end
+
+def fun_l23_n206()
+ fun_l24_n560
+end
+
+def fun_l23_n207()
+ fun_l24_n147
+end
+
+def fun_l23_n208()
+ fun_l24_n474
+end
+
+def fun_l23_n209()
+ fun_l24_n99
+end
+
+def fun_l23_n210()
+ fun_l24_n994
+end
+
+def fun_l23_n211()
+ fun_l24_n594
+end
+
+def fun_l23_n212()
+ fun_l24_n101
+end
+
+def fun_l23_n213()
+ fun_l24_n510
+end
+
+def fun_l23_n214()
+ fun_l24_n965
+end
+
+def fun_l23_n215()
+ fun_l24_n460
+end
+
+def fun_l23_n216()
+ fun_l24_n455
+end
+
+def fun_l23_n217()
+ fun_l24_n783
+end
+
+def fun_l23_n218()
+ fun_l24_n466
+end
+
+def fun_l23_n219()
+ fun_l24_n60
+end
+
+def fun_l23_n220()
+ fun_l24_n486
+end
+
+def fun_l23_n221()
+ fun_l24_n819
+end
+
+def fun_l23_n222()
+ fun_l24_n909
+end
+
+def fun_l23_n223()
+ fun_l24_n446
+end
+
+def fun_l23_n224()
+ fun_l24_n80
+end
+
+def fun_l23_n225()
+ fun_l24_n276
+end
+
+def fun_l23_n226()
+ fun_l24_n638
+end
+
+def fun_l23_n227()
+ fun_l24_n200
+end
+
+def fun_l23_n228()
+ fun_l24_n665
+end
+
+def fun_l23_n229()
+ fun_l24_n814
+end
+
+def fun_l23_n230()
+ fun_l24_n214
+end
+
+def fun_l23_n231()
+ fun_l24_n719
+end
+
+def fun_l23_n232()
+ fun_l24_n62
+end
+
+def fun_l23_n233()
+ fun_l24_n523
+end
+
+def fun_l23_n234()
+ fun_l24_n470
+end
+
+def fun_l23_n235()
+ fun_l24_n338
+end
+
+def fun_l23_n236()
+ fun_l24_n929
+end
+
+def fun_l23_n237()
+ fun_l24_n982
+end
+
+def fun_l23_n238()
+ fun_l24_n391
+end
+
+def fun_l23_n239()
+ fun_l24_n631
+end
+
+def fun_l23_n240()
+ fun_l24_n473
+end
+
+def fun_l23_n241()
+ fun_l24_n25
+end
+
+def fun_l23_n242()
+ fun_l24_n720
+end
+
+def fun_l23_n243()
+ fun_l24_n139
+end
+
+def fun_l23_n244()
+ fun_l24_n859
+end
+
+def fun_l23_n245()
+ fun_l24_n154
+end
+
+def fun_l23_n246()
+ fun_l24_n272
+end
+
+def fun_l23_n247()
+ fun_l24_n248
+end
+
+def fun_l23_n248()
+ fun_l24_n719
+end
+
+def fun_l23_n249()
+ fun_l24_n436
+end
+
+def fun_l23_n250()
+ fun_l24_n935
+end
+
+def fun_l23_n251()
+ fun_l24_n513
+end
+
+def fun_l23_n252()
+ fun_l24_n0
+end
+
+def fun_l23_n253()
+ fun_l24_n104
+end
+
+def fun_l23_n254()
+ fun_l24_n551
+end
+
+def fun_l23_n255()
+ fun_l24_n317
+end
+
+def fun_l23_n256()
+ fun_l24_n225
+end
+
+def fun_l23_n257()
+ fun_l24_n685
+end
+
+def fun_l23_n258()
+ fun_l24_n647
+end
+
+def fun_l23_n259()
+ fun_l24_n489
+end
+
+def fun_l23_n260()
+ fun_l24_n252
+end
+
+def fun_l23_n261()
+ fun_l24_n333
+end
+
+def fun_l23_n262()
+ fun_l24_n179
+end
+
+def fun_l23_n263()
+ fun_l24_n68
+end
+
+def fun_l23_n264()
+ fun_l24_n119
+end
+
+def fun_l23_n265()
+ fun_l24_n840
+end
+
+def fun_l23_n266()
+ fun_l24_n683
+end
+
+def fun_l23_n267()
+ fun_l24_n897
+end
+
+def fun_l23_n268()
+ fun_l24_n323
+end
+
+def fun_l23_n269()
+ fun_l24_n667
+end
+
+def fun_l23_n270()
+ fun_l24_n538
+end
+
+def fun_l23_n271()
+ fun_l24_n597
+end
+
+def fun_l23_n272()
+ fun_l24_n582
+end
+
+def fun_l23_n273()
+ fun_l24_n19
+end
+
+def fun_l23_n274()
+ fun_l24_n331
+end
+
+def fun_l23_n275()
+ fun_l24_n528
+end
+
+def fun_l23_n276()
+ fun_l24_n766
+end
+
+def fun_l23_n277()
+ fun_l24_n742
+end
+
+def fun_l23_n278()
+ fun_l24_n318
+end
+
+def fun_l23_n279()
+ fun_l24_n143
+end
+
+def fun_l23_n280()
+ fun_l24_n910
+end
+
+def fun_l23_n281()
+ fun_l24_n953
+end
+
+def fun_l23_n282()
+ fun_l24_n655
+end
+
+def fun_l23_n283()
+ fun_l24_n804
+end
+
+def fun_l23_n284()
+ fun_l24_n539
+end
+
+def fun_l23_n285()
+ fun_l24_n697
+end
+
+def fun_l23_n286()
+ fun_l24_n258
+end
+
+def fun_l23_n287()
+ fun_l24_n194
+end
+
+def fun_l23_n288()
+ fun_l24_n420
+end
+
+def fun_l23_n289()
+ fun_l24_n253
+end
+
+def fun_l23_n290()
+ fun_l24_n858
+end
+
+def fun_l23_n291()
+ fun_l24_n831
+end
+
+def fun_l23_n292()
+ fun_l24_n798
+end
+
+def fun_l23_n293()
+ fun_l24_n662
+end
+
+def fun_l23_n294()
+ fun_l24_n900
+end
+
+def fun_l23_n295()
+ fun_l24_n408
+end
+
+def fun_l23_n296()
+ fun_l24_n151
+end
+
+def fun_l23_n297()
+ fun_l24_n660
+end
+
+def fun_l23_n298()
+ fun_l24_n233
+end
+
+def fun_l23_n299()
+ fun_l24_n412
+end
+
+def fun_l23_n300()
+ fun_l24_n347
+end
+
+def fun_l23_n301()
+ fun_l24_n360
+end
+
+def fun_l23_n302()
+ fun_l24_n150
+end
+
+def fun_l23_n303()
+ fun_l24_n995
+end
+
+def fun_l23_n304()
+ fun_l24_n623
+end
+
+def fun_l23_n305()
+ fun_l24_n404
+end
+
+def fun_l23_n306()
+ fun_l24_n898
+end
+
+def fun_l23_n307()
+ fun_l24_n736
+end
+
+def fun_l23_n308()
+ fun_l24_n301
+end
+
+def fun_l23_n309()
+ fun_l24_n929
+end
+
+def fun_l23_n310()
+ fun_l24_n795
+end
+
+def fun_l23_n311()
+ fun_l24_n434
+end
+
+def fun_l23_n312()
+ fun_l24_n796
+end
+
+def fun_l23_n313()
+ fun_l24_n71
+end
+
+def fun_l23_n314()
+ fun_l24_n294
+end
+
+def fun_l23_n315()
+ fun_l24_n540
+end
+
+def fun_l23_n316()
+ fun_l24_n137
+end
+
+def fun_l23_n317()
+ fun_l24_n523
+end
+
+def fun_l23_n318()
+ fun_l24_n472
+end
+
+def fun_l23_n319()
+ fun_l24_n141
+end
+
+def fun_l23_n320()
+ fun_l24_n552
+end
+
+def fun_l23_n321()
+ fun_l24_n587
+end
+
+def fun_l23_n322()
+ fun_l24_n308
+end
+
+def fun_l23_n323()
+ fun_l24_n929
+end
+
+def fun_l23_n324()
+ fun_l24_n944
+end
+
+def fun_l23_n325()
+ fun_l24_n472
+end
+
+def fun_l23_n326()
+ fun_l24_n450
+end
+
+def fun_l23_n327()
+ fun_l24_n376
+end
+
+def fun_l23_n328()
+ fun_l24_n70
+end
+
+def fun_l23_n329()
+ fun_l24_n486
+end
+
+def fun_l23_n330()
+ fun_l24_n391
+end
+
+def fun_l23_n331()
+ fun_l24_n133
+end
+
+def fun_l23_n332()
+ fun_l24_n31
+end
+
+def fun_l23_n333()
+ fun_l24_n462
+end
+
+def fun_l23_n334()
+ fun_l24_n521
+end
+
+def fun_l23_n335()
+ fun_l24_n706
+end
+
+def fun_l23_n336()
+ fun_l24_n511
+end
+
+def fun_l23_n337()
+ fun_l24_n932
+end
+
+def fun_l23_n338()
+ fun_l24_n133
+end
+
+def fun_l23_n339()
+ fun_l24_n296
+end
+
+def fun_l23_n340()
+ fun_l24_n591
+end
+
+def fun_l23_n341()
+ fun_l24_n581
+end
+
+def fun_l23_n342()
+ fun_l24_n41
+end
+
+def fun_l23_n343()
+ fun_l24_n256
+end
+
+def fun_l23_n344()
+ fun_l24_n772
+end
+
+def fun_l23_n345()
+ fun_l24_n642
+end
+
+def fun_l23_n346()
+ fun_l24_n110
+end
+
+def fun_l23_n347()
+ fun_l24_n987
+end
+
+def fun_l23_n348()
+ fun_l24_n33
+end
+
+def fun_l23_n349()
+ fun_l24_n913
+end
+
+def fun_l23_n350()
+ fun_l24_n581
+end
+
+def fun_l23_n351()
+ fun_l24_n594
+end
+
+def fun_l23_n352()
+ fun_l24_n484
+end
+
+def fun_l23_n353()
+ fun_l24_n969
+end
+
+def fun_l23_n354()
+ fun_l24_n966
+end
+
+def fun_l23_n355()
+ fun_l24_n122
+end
+
+def fun_l23_n356()
+ fun_l24_n907
+end
+
+def fun_l23_n357()
+ fun_l24_n980
+end
+
+def fun_l23_n358()
+ fun_l24_n557
+end
+
+def fun_l23_n359()
+ fun_l24_n216
+end
+
+def fun_l23_n360()
+ fun_l24_n936
+end
+
+def fun_l23_n361()
+ fun_l24_n476
+end
+
+def fun_l23_n362()
+ fun_l24_n154
+end
+
+def fun_l23_n363()
+ fun_l24_n785
+end
+
+def fun_l23_n364()
+ fun_l24_n967
+end
+
+def fun_l23_n365()
+ fun_l24_n697
+end
+
+def fun_l23_n366()
+ fun_l24_n610
+end
+
+def fun_l23_n367()
+ fun_l24_n415
+end
+
+def fun_l23_n368()
+ fun_l24_n432
+end
+
+def fun_l23_n369()
+ fun_l24_n505
+end
+
+def fun_l23_n370()
+ fun_l24_n581
+end
+
+def fun_l23_n371()
+ fun_l24_n350
+end
+
+def fun_l23_n372()
+ fun_l24_n202
+end
+
+def fun_l23_n373()
+ fun_l24_n757
+end
+
+def fun_l23_n374()
+ fun_l24_n336
+end
+
+def fun_l23_n375()
+ fun_l24_n323
+end
+
+def fun_l23_n376()
+ fun_l24_n670
+end
+
+def fun_l23_n377()
+ fun_l24_n535
+end
+
+def fun_l23_n378()
+ fun_l24_n901
+end
+
+def fun_l23_n379()
+ fun_l24_n218
+end
+
+def fun_l23_n380()
+ fun_l24_n733
+end
+
+def fun_l23_n381()
+ fun_l24_n820
+end
+
+def fun_l23_n382()
+ fun_l24_n229
+end
+
+def fun_l23_n383()
+ fun_l24_n49
+end
+
+def fun_l23_n384()
+ fun_l24_n469
+end
+
+def fun_l23_n385()
+ fun_l24_n904
+end
+
+def fun_l23_n386()
+ fun_l24_n652
+end
+
+def fun_l23_n387()
+ fun_l24_n863
+end
+
+def fun_l23_n388()
+ fun_l24_n356
+end
+
+def fun_l23_n389()
+ fun_l24_n558
+end
+
+def fun_l23_n390()
+ fun_l24_n263
+end
+
+def fun_l23_n391()
+ fun_l24_n593
+end
+
+def fun_l23_n392()
+ fun_l24_n882
+end
+
+def fun_l23_n393()
+ fun_l24_n128
+end
+
+def fun_l23_n394()
+ fun_l24_n855
+end
+
+def fun_l23_n395()
+ fun_l24_n269
+end
+
+def fun_l23_n396()
+ fun_l24_n858
+end
+
+def fun_l23_n397()
+ fun_l24_n34
+end
+
+def fun_l23_n398()
+ fun_l24_n447
+end
+
+def fun_l23_n399()
+ fun_l24_n323
+end
+
+def fun_l23_n400()
+ fun_l24_n624
+end
+
+def fun_l23_n401()
+ fun_l24_n397
+end
+
+def fun_l23_n402()
+ fun_l24_n755
+end
+
+def fun_l23_n403()
+ fun_l24_n477
+end
+
+def fun_l23_n404()
+ fun_l24_n396
+end
+
+def fun_l23_n405()
+ fun_l24_n177
+end
+
+def fun_l23_n406()
+ fun_l24_n964
+end
+
+def fun_l23_n407()
+ fun_l24_n640
+end
+
+def fun_l23_n408()
+ fun_l24_n82
+end
+
+def fun_l23_n409()
+ fun_l24_n224
+end
+
+def fun_l23_n410()
+ fun_l24_n750
+end
+
+def fun_l23_n411()
+ fun_l24_n301
+end
+
+def fun_l23_n412()
+ fun_l24_n32
+end
+
+def fun_l23_n413()
+ fun_l24_n839
+end
+
+def fun_l23_n414()
+ fun_l24_n724
+end
+
+def fun_l23_n415()
+ fun_l24_n663
+end
+
+def fun_l23_n416()
+ fun_l24_n682
+end
+
+def fun_l23_n417()
+ fun_l24_n409
+end
+
+def fun_l23_n418()
+ fun_l24_n769
+end
+
+def fun_l23_n419()
+ fun_l24_n538
+end
+
+def fun_l23_n420()
+ fun_l24_n558
+end
+
+def fun_l23_n421()
+ fun_l24_n524
+end
+
+def fun_l23_n422()
+ fun_l24_n464
+end
+
+def fun_l23_n423()
+ fun_l24_n889
+end
+
+def fun_l23_n424()
+ fun_l24_n656
+end
+
+def fun_l23_n425()
+ fun_l24_n805
+end
+
+def fun_l23_n426()
+ fun_l24_n428
+end
+
+def fun_l23_n427()
+ fun_l24_n793
+end
+
+def fun_l23_n428()
+ fun_l24_n192
+end
+
+def fun_l23_n429()
+ fun_l24_n443
+end
+
+def fun_l23_n430()
+ fun_l24_n481
+end
+
+def fun_l23_n431()
+ fun_l24_n203
+end
+
+def fun_l23_n432()
+ fun_l24_n607
+end
+
+def fun_l23_n433()
+ fun_l24_n871
+end
+
+def fun_l23_n434()
+ fun_l24_n436
+end
+
+def fun_l23_n435()
+ fun_l24_n376
+end
+
+def fun_l23_n436()
+ fun_l24_n936
+end
+
+def fun_l23_n437()
+ fun_l24_n153
+end
+
+def fun_l23_n438()
+ fun_l24_n994
+end
+
+def fun_l23_n439()
+ fun_l24_n777
+end
+
+def fun_l23_n440()
+ fun_l24_n341
+end
+
+def fun_l23_n441()
+ fun_l24_n50
+end
+
+def fun_l23_n442()
+ fun_l24_n1
+end
+
+def fun_l23_n443()
+ fun_l24_n320
+end
+
+def fun_l23_n444()
+ fun_l24_n116
+end
+
+def fun_l23_n445()
+ fun_l24_n202
+end
+
+def fun_l23_n446()
+ fun_l24_n433
+end
+
+def fun_l23_n447()
+ fun_l24_n151
+end
+
+def fun_l23_n448()
+ fun_l24_n581
+end
+
+def fun_l23_n449()
+ fun_l24_n498
+end
+
+def fun_l23_n450()
+ fun_l24_n575
+end
+
+def fun_l23_n451()
+ fun_l24_n161
+end
+
+def fun_l23_n452()
+ fun_l24_n78
+end
+
+def fun_l23_n453()
+ fun_l24_n863
+end
+
+def fun_l23_n454()
+ fun_l24_n269
+end
+
+def fun_l23_n455()
+ fun_l24_n956
+end
+
+def fun_l23_n456()
+ fun_l24_n485
+end
+
+def fun_l23_n457()
+ fun_l24_n106
+end
+
+def fun_l23_n458()
+ fun_l24_n641
+end
+
+def fun_l23_n459()
+ fun_l24_n434
+end
+
+def fun_l23_n460()
+ fun_l24_n308
+end
+
+def fun_l23_n461()
+ fun_l24_n192
+end
+
+def fun_l23_n462()
+ fun_l24_n401
+end
+
+def fun_l23_n463()
+ fun_l24_n62
+end
+
+def fun_l23_n464()
+ fun_l24_n38
+end
+
+def fun_l23_n465()
+ fun_l24_n732
+end
+
+def fun_l23_n466()
+ fun_l24_n143
+end
+
+def fun_l23_n467()
+ fun_l24_n799
+end
+
+def fun_l23_n468()
+ fun_l24_n486
+end
+
+def fun_l23_n469()
+ fun_l24_n161
+end
+
+def fun_l23_n470()
+ fun_l24_n838
+end
+
+def fun_l23_n471()
+ fun_l24_n526
+end
+
+def fun_l23_n472()
+ fun_l24_n421
+end
+
+def fun_l23_n473()
+ fun_l24_n967
+end
+
+def fun_l23_n474()
+ fun_l24_n822
+end
+
+def fun_l23_n475()
+ fun_l24_n939
+end
+
+def fun_l23_n476()
+ fun_l24_n36
+end
+
+def fun_l23_n477()
+ fun_l24_n539
+end
+
+def fun_l23_n478()
+ fun_l24_n759
+end
+
+def fun_l23_n479()
+ fun_l24_n979
+end
+
+def fun_l23_n480()
+ fun_l24_n685
+end
+
+def fun_l23_n481()
+ fun_l24_n548
+end
+
+def fun_l23_n482()
+ fun_l24_n348
+end
+
+def fun_l23_n483()
+ fun_l24_n922
+end
+
+def fun_l23_n484()
+ fun_l24_n185
+end
+
+def fun_l23_n485()
+ fun_l24_n138
+end
+
+def fun_l23_n486()
+ fun_l24_n678
+end
+
+def fun_l23_n487()
+ fun_l24_n44
+end
+
+def fun_l23_n488()
+ fun_l24_n820
+end
+
+def fun_l23_n489()
+ fun_l24_n447
+end
+
+def fun_l23_n490()
+ fun_l24_n455
+end
+
+def fun_l23_n491()
+ fun_l24_n145
+end
+
+def fun_l23_n492()
+ fun_l24_n441
+end
+
+def fun_l23_n493()
+ fun_l24_n354
+end
+
+def fun_l23_n494()
+ fun_l24_n324
+end
+
+def fun_l23_n495()
+ fun_l24_n231
+end
+
+def fun_l23_n496()
+ fun_l24_n775
+end
+
+def fun_l23_n497()
+ fun_l24_n815
+end
+
+def fun_l23_n498()
+ fun_l24_n491
+end
+
+def fun_l23_n499()
+ fun_l24_n437
+end
+
+def fun_l23_n500()
+ fun_l24_n112
+end
+
+def fun_l23_n501()
+ fun_l24_n174
+end
+
+def fun_l23_n502()
+ fun_l24_n683
+end
+
+def fun_l23_n503()
+ fun_l24_n243
+end
+
+def fun_l23_n504()
+ fun_l24_n236
+end
+
+def fun_l23_n505()
+ fun_l24_n106
+end
+
+def fun_l23_n506()
+ fun_l24_n781
+end
+
+def fun_l23_n507()
+ fun_l24_n427
+end
+
+def fun_l23_n508()
+ fun_l24_n410
+end
+
+def fun_l23_n509()
+ fun_l24_n903
+end
+
+def fun_l23_n510()
+ fun_l24_n40
+end
+
+def fun_l23_n511()
+ fun_l24_n559
+end
+
+def fun_l23_n512()
+ fun_l24_n152
+end
+
+def fun_l23_n513()
+ fun_l24_n175
+end
+
+def fun_l23_n514()
+ fun_l24_n305
+end
+
+def fun_l23_n515()
+ fun_l24_n814
+end
+
+def fun_l23_n516()
+ fun_l24_n676
+end
+
+def fun_l23_n517()
+ fun_l24_n448
+end
+
+def fun_l23_n518()
+ fun_l24_n573
+end
+
+def fun_l23_n519()
+ fun_l24_n66
+end
+
+def fun_l23_n520()
+ fun_l24_n893
+end
+
+def fun_l23_n521()
+ fun_l24_n460
+end
+
+def fun_l23_n522()
+ fun_l24_n238
+end
+
+def fun_l23_n523()
+ fun_l24_n200
+end
+
+def fun_l23_n524()
+ fun_l24_n61
+end
+
+def fun_l23_n525()
+ fun_l24_n365
+end
+
+def fun_l23_n526()
+ fun_l24_n360
+end
+
+def fun_l23_n527()
+ fun_l24_n17
+end
+
+def fun_l23_n528()
+ fun_l24_n594
+end
+
+def fun_l23_n529()
+ fun_l24_n494
+end
+
+def fun_l23_n530()
+ fun_l24_n188
+end
+
+def fun_l23_n531()
+ fun_l24_n288
+end
+
+def fun_l23_n532()
+ fun_l24_n348
+end
+
+def fun_l23_n533()
+ fun_l24_n254
+end
+
+def fun_l23_n534()
+ fun_l24_n457
+end
+
+def fun_l23_n535()
+ fun_l24_n742
+end
+
+def fun_l23_n536()
+ fun_l24_n28
+end
+
+def fun_l23_n537()
+ fun_l24_n856
+end
+
+def fun_l23_n538()
+ fun_l24_n345
+end
+
+def fun_l23_n539()
+ fun_l24_n455
+end
+
+def fun_l23_n540()
+ fun_l24_n39
+end
+
+def fun_l23_n541()
+ fun_l24_n667
+end
+
+def fun_l23_n542()
+ fun_l24_n555
+end
+
+def fun_l23_n543()
+ fun_l24_n983
+end
+
+def fun_l23_n544()
+ fun_l24_n71
+end
+
+def fun_l23_n545()
+ fun_l24_n733
+end
+
+def fun_l23_n546()
+ fun_l24_n889
+end
+
+def fun_l23_n547()
+ fun_l24_n152
+end
+
+def fun_l23_n548()
+ fun_l24_n998
+end
+
+def fun_l23_n549()
+ fun_l24_n519
+end
+
+def fun_l23_n550()
+ fun_l24_n723
+end
+
+def fun_l23_n551()
+ fun_l24_n931
+end
+
+def fun_l23_n552()
+ fun_l24_n866
+end
+
+def fun_l23_n553()
+ fun_l24_n598
+end
+
+def fun_l23_n554()
+ fun_l24_n522
+end
+
+def fun_l23_n555()
+ fun_l24_n317
+end
+
+def fun_l23_n556()
+ fun_l24_n712
+end
+
+def fun_l23_n557()
+ fun_l24_n381
+end
+
+def fun_l23_n558()
+ fun_l24_n167
+end
+
+def fun_l23_n559()
+ fun_l24_n136
+end
+
+def fun_l23_n560()
+ fun_l24_n136
+end
+
+def fun_l23_n561()
+ fun_l24_n422
+end
+
+def fun_l23_n562()
+ fun_l24_n75
+end
+
+def fun_l23_n563()
+ fun_l24_n609
+end
+
+def fun_l23_n564()
+ fun_l24_n324
+end
+
+def fun_l23_n565()
+ fun_l24_n49
+end
+
+def fun_l23_n566()
+ fun_l24_n312
+end
+
+def fun_l23_n567()
+ fun_l24_n514
+end
+
+def fun_l23_n568()
+ fun_l24_n773
+end
+
+def fun_l23_n569()
+ fun_l24_n386
+end
+
+def fun_l23_n570()
+ fun_l24_n688
+end
+
+def fun_l23_n571()
+ fun_l24_n857
+end
+
+def fun_l23_n572()
+ fun_l24_n821
+end
+
+def fun_l23_n573()
+ fun_l24_n986
+end
+
+def fun_l23_n574()
+ fun_l24_n785
+end
+
+def fun_l23_n575()
+ fun_l24_n226
+end
+
+def fun_l23_n576()
+ fun_l24_n527
+end
+
+def fun_l23_n577()
+ fun_l24_n703
+end
+
+def fun_l23_n578()
+ fun_l24_n908
+end
+
+def fun_l23_n579()
+ fun_l24_n794
+end
+
+def fun_l23_n580()
+ fun_l24_n521
+end
+
+def fun_l23_n581()
+ fun_l24_n519
+end
+
+def fun_l23_n582()
+ fun_l24_n474
+end
+
+def fun_l23_n583()
+ fun_l24_n980
+end
+
+def fun_l23_n584()
+ fun_l24_n564
+end
+
+def fun_l23_n585()
+ fun_l24_n599
+end
+
+def fun_l23_n586()
+ fun_l24_n730
+end
+
+def fun_l23_n587()
+ fun_l24_n132
+end
+
+def fun_l23_n588()
+ fun_l24_n54
+end
+
+def fun_l23_n589()
+ fun_l24_n725
+end
+
+def fun_l23_n590()
+ fun_l24_n24
+end
+
+def fun_l23_n591()
+ fun_l24_n879
+end
+
+def fun_l23_n592()
+ fun_l24_n857
+end
+
+def fun_l23_n593()
+ fun_l24_n468
+end
+
+def fun_l23_n594()
+ fun_l24_n299
+end
+
+def fun_l23_n595()
+ fun_l24_n62
+end
+
+def fun_l23_n596()
+ fun_l24_n415
+end
+
+def fun_l23_n597()
+ fun_l24_n440
+end
+
+def fun_l23_n598()
+ fun_l24_n550
+end
+
+def fun_l23_n599()
+ fun_l24_n636
+end
+
+def fun_l23_n600()
+ fun_l24_n905
+end
+
+def fun_l23_n601()
+ fun_l24_n147
+end
+
+def fun_l23_n602()
+ fun_l24_n882
+end
+
+def fun_l23_n603()
+ fun_l24_n410
+end
+
+def fun_l23_n604()
+ fun_l24_n963
+end
+
+def fun_l23_n605()
+ fun_l24_n749
+end
+
+def fun_l23_n606()
+ fun_l24_n318
+end
+
+def fun_l23_n607()
+ fun_l24_n177
+end
+
+def fun_l23_n608()
+ fun_l24_n138
+end
+
+def fun_l23_n609()
+ fun_l24_n142
+end
+
+def fun_l23_n610()
+ fun_l24_n671
+end
+
+def fun_l23_n611()
+ fun_l24_n702
+end
+
+def fun_l23_n612()
+ fun_l24_n715
+end
+
+def fun_l23_n613()
+ fun_l24_n356
+end
+
+def fun_l23_n614()
+ fun_l24_n719
+end
+
+def fun_l23_n615()
+ fun_l24_n496
+end
+
+def fun_l23_n616()
+ fun_l24_n131
+end
+
+def fun_l23_n617()
+ fun_l24_n614
+end
+
+def fun_l23_n618()
+ fun_l24_n508
+end
+
+def fun_l23_n619()
+ fun_l24_n848
+end
+
+def fun_l23_n620()
+ fun_l24_n119
+end
+
+def fun_l23_n621()
+ fun_l24_n372
+end
+
+def fun_l23_n622()
+ fun_l24_n672
+end
+
+def fun_l23_n623()
+ fun_l24_n248
+end
+
+def fun_l23_n624()
+ fun_l24_n425
+end
+
+def fun_l23_n625()
+ fun_l24_n875
+end
+
+def fun_l23_n626()
+ fun_l24_n371
+end
+
+def fun_l23_n627()
+ fun_l24_n362
+end
+
+def fun_l23_n628()
+ fun_l24_n139
+end
+
+def fun_l23_n629()
+ fun_l24_n540
+end
+
+def fun_l23_n630()
+ fun_l24_n979
+end
+
+def fun_l23_n631()
+ fun_l24_n243
+end
+
+def fun_l23_n632()
+ fun_l24_n799
+end
+
+def fun_l23_n633()
+ fun_l24_n711
+end
+
+def fun_l23_n634()
+ fun_l24_n834
+end
+
+def fun_l23_n635()
+ fun_l24_n173
+end
+
+def fun_l23_n636()
+ fun_l24_n465
+end
+
+def fun_l23_n637()
+ fun_l24_n986
+end
+
+def fun_l23_n638()
+ fun_l24_n24
+end
+
+def fun_l23_n639()
+ fun_l24_n925
+end
+
+def fun_l23_n640()
+ fun_l24_n829
+end
+
+def fun_l23_n641()
+ fun_l24_n361
+end
+
+def fun_l23_n642()
+ fun_l24_n884
+end
+
+def fun_l23_n643()
+ fun_l24_n132
+end
+
+def fun_l23_n644()
+ fun_l24_n277
+end
+
+def fun_l23_n645()
+ fun_l24_n616
+end
+
+def fun_l23_n646()
+ fun_l24_n122
+end
+
+def fun_l23_n647()
+ fun_l24_n194
+end
+
+def fun_l23_n648()
+ fun_l24_n678
+end
+
+def fun_l23_n649()
+ fun_l24_n119
+end
+
+def fun_l23_n650()
+ fun_l24_n430
+end
+
+def fun_l23_n651()
+ fun_l24_n46
+end
+
+def fun_l23_n652()
+ fun_l24_n653
+end
+
+def fun_l23_n653()
+ fun_l24_n279
+end
+
+def fun_l23_n654()
+ fun_l24_n943
+end
+
+def fun_l23_n655()
+ fun_l24_n480
+end
+
+def fun_l23_n656()
+ fun_l24_n81
+end
+
+def fun_l23_n657()
+ fun_l24_n782
+end
+
+def fun_l23_n658()
+ fun_l24_n986
+end
+
+def fun_l23_n659()
+ fun_l24_n951
+end
+
+def fun_l23_n660()
+ fun_l24_n918
+end
+
+def fun_l23_n661()
+ fun_l24_n524
+end
+
+def fun_l23_n662()
+ fun_l24_n949
+end
+
+def fun_l23_n663()
+ fun_l24_n688
+end
+
+def fun_l23_n664()
+ fun_l24_n606
+end
+
+def fun_l23_n665()
+ fun_l24_n358
+end
+
+def fun_l23_n666()
+ fun_l24_n948
+end
+
+def fun_l23_n667()
+ fun_l24_n254
+end
+
+def fun_l23_n668()
+ fun_l24_n410
+end
+
+def fun_l23_n669()
+ fun_l24_n612
+end
+
+def fun_l23_n670()
+ fun_l24_n693
+end
+
+def fun_l23_n671()
+ fun_l24_n454
+end
+
+def fun_l23_n672()
+ fun_l24_n182
+end
+
+def fun_l23_n673()
+ fun_l24_n556
+end
+
+def fun_l23_n674()
+ fun_l24_n994
+end
+
+def fun_l23_n675()
+ fun_l24_n927
+end
+
+def fun_l23_n676()
+ fun_l24_n624
+end
+
+def fun_l23_n677()
+ fun_l24_n149
+end
+
+def fun_l23_n678()
+ fun_l24_n561
+end
+
+def fun_l23_n679()
+ fun_l24_n250
+end
+
+def fun_l23_n680()
+ fun_l24_n69
+end
+
+def fun_l23_n681()
+ fun_l24_n599
+end
+
+def fun_l23_n682()
+ fun_l24_n145
+end
+
+def fun_l23_n683()
+ fun_l24_n785
+end
+
+def fun_l23_n684()
+ fun_l24_n181
+end
+
+def fun_l23_n685()
+ fun_l24_n646
+end
+
+def fun_l23_n686()
+ fun_l24_n109
+end
+
+def fun_l23_n687()
+ fun_l24_n316
+end
+
+def fun_l23_n688()
+ fun_l24_n816
+end
+
+def fun_l23_n689()
+ fun_l24_n302
+end
+
+def fun_l23_n690()
+ fun_l24_n976
+end
+
+def fun_l23_n691()
+ fun_l24_n508
+end
+
+def fun_l23_n692()
+ fun_l24_n158
+end
+
+def fun_l23_n693()
+ fun_l24_n110
+end
+
+def fun_l23_n694()
+ fun_l24_n581
+end
+
+def fun_l23_n695()
+ fun_l24_n375
+end
+
+def fun_l23_n696()
+ fun_l24_n121
+end
+
+def fun_l23_n697()
+ fun_l24_n920
+end
+
+def fun_l23_n698()
+ fun_l24_n827
+end
+
+def fun_l23_n699()
+ fun_l24_n757
+end
+
+def fun_l23_n700()
+ fun_l24_n932
+end
+
+def fun_l23_n701()
+ fun_l24_n249
+end
+
+def fun_l23_n702()
+ fun_l24_n375
+end
+
+def fun_l23_n703()
+ fun_l24_n976
+end
+
+def fun_l23_n704()
+ fun_l24_n903
+end
+
+def fun_l23_n705()
+ fun_l24_n326
+end
+
+def fun_l23_n706()
+ fun_l24_n732
+end
+
+def fun_l23_n707()
+ fun_l24_n150
+end
+
+def fun_l23_n708()
+ fun_l24_n849
+end
+
+def fun_l23_n709()
+ fun_l24_n341
+end
+
+def fun_l23_n710()
+ fun_l24_n194
+end
+
+def fun_l23_n711()
+ fun_l24_n773
+end
+
+def fun_l23_n712()
+ fun_l24_n665
+end
+
+def fun_l23_n713()
+ fun_l24_n467
+end
+
+def fun_l23_n714()
+ fun_l24_n554
+end
+
+def fun_l23_n715()
+ fun_l24_n160
+end
+
+def fun_l23_n716()
+ fun_l24_n65
+end
+
+def fun_l23_n717()
+ fun_l24_n155
+end
+
+def fun_l23_n718()
+ fun_l24_n930
+end
+
+def fun_l23_n719()
+ fun_l24_n13
+end
+
+def fun_l23_n720()
+ fun_l24_n756
+end
+
+def fun_l23_n721()
+ fun_l24_n174
+end
+
+def fun_l23_n722()
+ fun_l24_n675
+end
+
+def fun_l23_n723()
+ fun_l24_n847
+end
+
+def fun_l23_n724()
+ fun_l24_n277
+end
+
+def fun_l23_n725()
+ fun_l24_n580
+end
+
+def fun_l23_n726()
+ fun_l24_n65
+end
+
+def fun_l23_n727()
+ fun_l24_n507
+end
+
+def fun_l23_n728()
+ fun_l24_n325
+end
+
+def fun_l23_n729()
+ fun_l24_n642
+end
+
+def fun_l23_n730()
+ fun_l24_n607
+end
+
+def fun_l23_n731()
+ fun_l24_n683
+end
+
+def fun_l23_n732()
+ fun_l24_n139
+end
+
+def fun_l23_n733()
+ fun_l24_n719
+end
+
+def fun_l23_n734()
+ fun_l24_n768
+end
+
+def fun_l23_n735()
+ fun_l24_n927
+end
+
+def fun_l23_n736()
+ fun_l24_n346
+end
+
+def fun_l23_n737()
+ fun_l24_n457
+end
+
+def fun_l23_n738()
+ fun_l24_n347
+end
+
+def fun_l23_n739()
+ fun_l24_n26
+end
+
+def fun_l23_n740()
+ fun_l24_n696
+end
+
+def fun_l23_n741()
+ fun_l24_n177
+end
+
+def fun_l23_n742()
+ fun_l24_n414
+end
+
+def fun_l23_n743()
+ fun_l24_n937
+end
+
+def fun_l23_n744()
+ fun_l24_n576
+end
+
+def fun_l23_n745()
+ fun_l24_n560
+end
+
+def fun_l23_n746()
+ fun_l24_n398
+end
+
+def fun_l23_n747()
+ fun_l24_n476
+end
+
+def fun_l23_n748()
+ fun_l24_n758
+end
+
+def fun_l23_n749()
+ fun_l24_n955
+end
+
+def fun_l23_n750()
+ fun_l24_n130
+end
+
+def fun_l23_n751()
+ fun_l24_n673
+end
+
+def fun_l23_n752()
+ fun_l24_n269
+end
+
+def fun_l23_n753()
+ fun_l24_n917
+end
+
+def fun_l23_n754()
+ fun_l24_n738
+end
+
+def fun_l23_n755()
+ fun_l24_n238
+end
+
+def fun_l23_n756()
+ fun_l24_n910
+end
+
+def fun_l23_n757()
+ fun_l24_n912
+end
+
+def fun_l23_n758()
+ fun_l24_n288
+end
+
+def fun_l23_n759()
+ fun_l24_n206
+end
+
+def fun_l23_n760()
+ fun_l24_n519
+end
+
+def fun_l23_n761()
+ fun_l24_n365
+end
+
+def fun_l23_n762()
+ fun_l24_n493
+end
+
+def fun_l23_n763()
+ fun_l24_n222
+end
+
+def fun_l23_n764()
+ fun_l24_n933
+end
+
+def fun_l23_n765()
+ fun_l24_n164
+end
+
+def fun_l23_n766()
+ fun_l24_n606
+end
+
+def fun_l23_n767()
+ fun_l24_n494
+end
+
+def fun_l23_n768()
+ fun_l24_n869
+end
+
+def fun_l23_n769()
+ fun_l24_n339
+end
+
+def fun_l23_n770()
+ fun_l24_n55
+end
+
+def fun_l23_n771()
+ fun_l24_n149
+end
+
+def fun_l23_n772()
+ fun_l24_n926
+end
+
+def fun_l23_n773()
+ fun_l24_n884
+end
+
+def fun_l23_n774()
+ fun_l24_n599
+end
+
+def fun_l23_n775()
+ fun_l24_n74
+end
+
+def fun_l23_n776()
+ fun_l24_n633
+end
+
+def fun_l23_n777()
+ fun_l24_n859
+end
+
+def fun_l23_n778()
+ fun_l24_n895
+end
+
+def fun_l23_n779()
+ fun_l24_n559
+end
+
+def fun_l23_n780()
+ fun_l24_n712
+end
+
+def fun_l23_n781()
+ fun_l24_n275
+end
+
+def fun_l23_n782()
+ fun_l24_n485
+end
+
+def fun_l23_n783()
+ fun_l24_n958
+end
+
+def fun_l23_n784()
+ fun_l24_n905
+end
+
+def fun_l23_n785()
+ fun_l24_n761
+end
+
+def fun_l23_n786()
+ fun_l24_n869
+end
+
+def fun_l23_n787()
+ fun_l24_n542
+end
+
+def fun_l23_n788()
+ fun_l24_n676
+end
+
+def fun_l23_n789()
+ fun_l24_n708
+end
+
+def fun_l23_n790()
+ fun_l24_n298
+end
+
+def fun_l23_n791()
+ fun_l24_n362
+end
+
+def fun_l23_n792()
+ fun_l24_n938
+end
+
+def fun_l23_n793()
+ fun_l24_n414
+end
+
+def fun_l23_n794()
+ fun_l24_n376
+end
+
+def fun_l23_n795()
+ fun_l24_n530
+end
+
+def fun_l23_n796()
+ fun_l24_n1
+end
+
+def fun_l23_n797()
+ fun_l24_n333
+end
+
+def fun_l23_n798()
+ fun_l24_n750
+end
+
+def fun_l23_n799()
+ fun_l24_n254
+end
+
+def fun_l23_n800()
+ fun_l24_n278
+end
+
+def fun_l23_n801()
+ fun_l24_n314
+end
+
+def fun_l23_n802()
+ fun_l24_n275
+end
+
+def fun_l23_n803()
+ fun_l24_n848
+end
+
+def fun_l23_n804()
+ fun_l24_n883
+end
+
+def fun_l23_n805()
+ fun_l24_n483
+end
+
+def fun_l23_n806()
+ fun_l24_n706
+end
+
+def fun_l23_n807()
+ fun_l24_n622
+end
+
+def fun_l23_n808()
+ fun_l24_n551
+end
+
+def fun_l23_n809()
+ fun_l24_n680
+end
+
+def fun_l23_n810()
+ fun_l24_n426
+end
+
+def fun_l23_n811()
+ fun_l24_n418
+end
+
+def fun_l23_n812()
+ fun_l24_n163
+end
+
+def fun_l23_n813()
+ fun_l24_n309
+end
+
+def fun_l23_n814()
+ fun_l24_n308
+end
+
+def fun_l23_n815()
+ fun_l24_n992
+end
+
+def fun_l23_n816()
+ fun_l24_n863
+end
+
+def fun_l23_n817()
+ fun_l24_n58
+end
+
+def fun_l23_n818()
+ fun_l24_n995
+end
+
+def fun_l23_n819()
+ fun_l24_n158
+end
+
+def fun_l23_n820()
+ fun_l24_n568
+end
+
+def fun_l23_n821()
+ fun_l24_n595
+end
+
+def fun_l23_n822()
+ fun_l24_n121
+end
+
+def fun_l23_n823()
+ fun_l24_n395
+end
+
+def fun_l23_n824()
+ fun_l24_n322
+end
+
+def fun_l23_n825()
+ fun_l24_n178
+end
+
+def fun_l23_n826()
+ fun_l24_n470
+end
+
+def fun_l23_n827()
+ fun_l24_n243
+end
+
+def fun_l23_n828()
+ fun_l24_n970
+end
+
+def fun_l23_n829()
+ fun_l24_n41
+end
+
+def fun_l23_n830()
+ fun_l24_n468
+end
+
+def fun_l23_n831()
+ fun_l24_n457
+end
+
+def fun_l23_n832()
+ fun_l24_n104
+end
+
+def fun_l23_n833()
+ fun_l24_n735
+end
+
+def fun_l23_n834()
+ fun_l24_n935
+end
+
+def fun_l23_n835()
+ fun_l24_n693
+end
+
+def fun_l23_n836()
+ fun_l24_n937
+end
+
+def fun_l23_n837()
+ fun_l24_n720
+end
+
+def fun_l23_n838()
+ fun_l24_n969
+end
+
+def fun_l23_n839()
+ fun_l24_n251
+end
+
+def fun_l23_n840()
+ fun_l24_n120
+end
+
+def fun_l23_n841()
+ fun_l24_n24
+end
+
+def fun_l23_n842()
+ fun_l24_n692
+end
+
+def fun_l23_n843()
+ fun_l24_n663
+end
+
+def fun_l23_n844()
+ fun_l24_n84
+end
+
+def fun_l23_n845()
+ fun_l24_n612
+end
+
+def fun_l23_n846()
+ fun_l24_n169
+end
+
+def fun_l23_n847()
+ fun_l24_n708
+end
+
+def fun_l23_n848()
+ fun_l24_n825
+end
+
+def fun_l23_n849()
+ fun_l24_n821
+end
+
+def fun_l23_n850()
+ fun_l24_n593
+end
+
+def fun_l23_n851()
+ fun_l24_n788
+end
+
+def fun_l23_n852()
+ fun_l24_n757
+end
+
+def fun_l23_n853()
+ fun_l24_n104
+end
+
+def fun_l23_n854()
+ fun_l24_n370
+end
+
+def fun_l23_n855()
+ fun_l24_n925
+end
+
+def fun_l23_n856()
+ fun_l24_n312
+end
+
+def fun_l23_n857()
+ fun_l24_n262
+end
+
+def fun_l23_n858()
+ fun_l24_n459
+end
+
+def fun_l23_n859()
+ fun_l24_n296
+end
+
+def fun_l23_n860()
+ fun_l24_n37
+end
+
+def fun_l23_n861()
+ fun_l24_n865
+end
+
+def fun_l23_n862()
+ fun_l24_n435
+end
+
+def fun_l23_n863()
+ fun_l24_n6
+end
+
+def fun_l23_n864()
+ fun_l24_n589
+end
+
+def fun_l23_n865()
+ fun_l24_n247
+end
+
+def fun_l23_n866()
+ fun_l24_n889
+end
+
+def fun_l23_n867()
+ fun_l24_n461
+end
+
+def fun_l23_n868()
+ fun_l24_n949
+end
+
+def fun_l23_n869()
+ fun_l24_n951
+end
+
+def fun_l23_n870()
+ fun_l24_n214
+end
+
+def fun_l23_n871()
+ fun_l24_n44
+end
+
+def fun_l23_n872()
+ fun_l24_n241
+end
+
+def fun_l23_n873()
+ fun_l24_n643
+end
+
+def fun_l23_n874()
+ fun_l24_n918
+end
+
+def fun_l23_n875()
+ fun_l24_n940
+end
+
+def fun_l23_n876()
+ fun_l24_n642
+end
+
+def fun_l23_n877()
+ fun_l24_n859
+end
+
+def fun_l23_n878()
+ fun_l24_n535
+end
+
+def fun_l23_n879()
+ fun_l24_n956
+end
+
+def fun_l23_n880()
+ fun_l24_n212
+end
+
+def fun_l23_n881()
+ fun_l24_n691
+end
+
+def fun_l23_n882()
+ fun_l24_n306
+end
+
+def fun_l23_n883()
+ fun_l24_n769
+end
+
+def fun_l23_n884()
+ fun_l24_n194
+end
+
+def fun_l23_n885()
+ fun_l24_n46
+end
+
+def fun_l23_n886()
+ fun_l24_n409
+end
+
+def fun_l23_n887()
+ fun_l24_n799
+end
+
+def fun_l23_n888()
+ fun_l24_n367
+end
+
+def fun_l23_n889()
+ fun_l24_n454
+end
+
+def fun_l23_n890()
+ fun_l24_n405
+end
+
+def fun_l23_n891()
+ fun_l24_n547
+end
+
+def fun_l23_n892()
+ fun_l24_n998
+end
+
+def fun_l23_n893()
+ fun_l24_n942
+end
+
+def fun_l23_n894()
+ fun_l24_n937
+end
+
+def fun_l23_n895()
+ fun_l24_n33
+end
+
+def fun_l23_n896()
+ fun_l24_n354
+end
+
+def fun_l23_n897()
+ fun_l24_n1
+end
+
+def fun_l23_n898()
+ fun_l24_n142
+end
+
+def fun_l23_n899()
+ fun_l24_n514
+end
+
+def fun_l23_n900()
+ fun_l24_n869
+end
+
+def fun_l23_n901()
+ fun_l24_n126
+end
+
+def fun_l23_n902()
+ fun_l24_n713
+end
+
+def fun_l23_n903()
+ fun_l24_n568
+end
+
+def fun_l23_n904()
+ fun_l24_n433
+end
+
+def fun_l23_n905()
+ fun_l24_n864
+end
+
+def fun_l23_n906()
+ fun_l24_n129
+end
+
+def fun_l23_n907()
+ fun_l24_n255
+end
+
+def fun_l23_n908()
+ fun_l24_n896
+end
+
+def fun_l23_n909()
+ fun_l24_n997
+end
+
+def fun_l23_n910()
+ fun_l24_n849
+end
+
+def fun_l23_n911()
+ fun_l24_n120
+end
+
+def fun_l23_n912()
+ fun_l24_n165
+end
+
+def fun_l23_n913()
+ fun_l24_n637
+end
+
+def fun_l23_n914()
+ fun_l24_n624
+end
+
+def fun_l23_n915()
+ fun_l24_n120
+end
+
+def fun_l23_n916()
+ fun_l24_n637
+end
+
+def fun_l23_n917()
+ fun_l24_n863
+end
+
+def fun_l23_n918()
+ fun_l24_n202
+end
+
+def fun_l23_n919()
+ fun_l24_n844
+end
+
+def fun_l23_n920()
+ fun_l24_n226
+end
+
+def fun_l23_n921()
+ fun_l24_n726
+end
+
+def fun_l23_n922()
+ fun_l24_n277
+end
+
+def fun_l23_n923()
+ fun_l24_n375
+end
+
+def fun_l23_n924()
+ fun_l24_n601
+end
+
+def fun_l23_n925()
+ fun_l24_n118
+end
+
+def fun_l23_n926()
+ fun_l24_n661
+end
+
+def fun_l23_n927()
+ fun_l24_n360
+end
+
+def fun_l23_n928()
+ fun_l24_n627
+end
+
+def fun_l23_n929()
+ fun_l24_n238
+end
+
+def fun_l23_n930()
+ fun_l24_n372
+end
+
+def fun_l23_n931()
+ fun_l24_n768
+end
+
+def fun_l23_n932()
+ fun_l24_n848
+end
+
+def fun_l23_n933()
+ fun_l24_n540
+end
+
+def fun_l23_n934()
+ fun_l24_n848
+end
+
+def fun_l23_n935()
+ fun_l24_n688
+end
+
+def fun_l23_n936()
+ fun_l24_n9
+end
+
+def fun_l23_n937()
+ fun_l24_n362
+end
+
+def fun_l23_n938()
+ fun_l24_n151
+end
+
+def fun_l23_n939()
+ fun_l24_n79
+end
+
+def fun_l23_n940()
+ fun_l24_n673
+end
+
+def fun_l23_n941()
+ fun_l24_n575
+end
+
+def fun_l23_n942()
+ fun_l24_n368
+end
+
+def fun_l23_n943()
+ fun_l24_n264
+end
+
+def fun_l23_n944()
+ fun_l24_n502
+end
+
+def fun_l23_n945()
+ fun_l24_n483
+end
+
+def fun_l23_n946()
+ fun_l24_n623
+end
+
+def fun_l23_n947()
+ fun_l24_n445
+end
+
+def fun_l23_n948()
+ fun_l24_n560
+end
+
+def fun_l23_n949()
+ fun_l24_n152
+end
+
+def fun_l23_n950()
+ fun_l24_n211
+end
+
+def fun_l23_n951()
+ fun_l24_n777
+end
+
+def fun_l23_n952()
+ fun_l24_n623
+end
+
+def fun_l23_n953()
+ fun_l24_n410
+end
+
+def fun_l23_n954()
+ fun_l24_n456
+end
+
+def fun_l23_n955()
+ fun_l24_n35
+end
+
+def fun_l23_n956()
+ fun_l24_n134
+end
+
+def fun_l23_n957()
+ fun_l24_n768
+end
+
+def fun_l23_n958()
+ fun_l24_n827
+end
+
+def fun_l23_n959()
+ fun_l24_n8
+end
+
+def fun_l23_n960()
+ fun_l24_n339
+end
+
+def fun_l23_n961()
+ fun_l24_n580
+end
+
+def fun_l23_n962()
+ fun_l24_n570
+end
+
+def fun_l23_n963()
+ fun_l24_n308
+end
+
+def fun_l23_n964()
+ fun_l24_n531
+end
+
+def fun_l23_n965()
+ fun_l24_n378
+end
+
+def fun_l23_n966()
+ fun_l24_n632
+end
+
+def fun_l23_n967()
+ fun_l24_n465
+end
+
+def fun_l23_n968()
+ fun_l24_n318
+end
+
+def fun_l23_n969()
+ fun_l24_n36
+end
+
+def fun_l23_n970()
+ fun_l24_n408
+end
+
+def fun_l23_n971()
+ fun_l24_n225
+end
+
+def fun_l23_n972()
+ fun_l24_n105
+end
+
+def fun_l23_n973()
+ fun_l24_n736
+end
+
+def fun_l23_n974()
+ fun_l24_n735
+end
+
+def fun_l23_n975()
+ fun_l24_n811
+end
+
+def fun_l23_n976()
+ fun_l24_n495
+end
+
+def fun_l23_n977()
+ fun_l24_n563
+end
+
+def fun_l23_n978()
+ fun_l24_n511
+end
+
+def fun_l23_n979()
+ fun_l24_n158
+end
+
+def fun_l23_n980()
+ fun_l24_n222
+end
+
+def fun_l23_n981()
+ fun_l24_n568
+end
+
+def fun_l23_n982()
+ fun_l24_n936
+end
+
+def fun_l23_n983()
+ fun_l24_n932
+end
+
+def fun_l23_n984()
+ fun_l24_n872
+end
+
+def fun_l23_n985()
+ fun_l24_n70
+end
+
+def fun_l23_n986()
+ fun_l24_n602
+end
+
+def fun_l23_n987()
+ fun_l24_n364
+end
+
+def fun_l23_n988()
+ fun_l24_n904
+end
+
+def fun_l23_n989()
+ fun_l24_n98
+end
+
+def fun_l23_n990()
+ fun_l24_n907
+end
+
+def fun_l23_n991()
+ fun_l24_n435
+end
+
+def fun_l23_n992()
+ fun_l24_n24
+end
+
+def fun_l23_n993()
+ fun_l24_n790
+end
+
+def fun_l23_n994()
+ fun_l24_n249
+end
+
+def fun_l23_n995()
+ fun_l24_n12
+end
+
+def fun_l23_n996()
+ fun_l24_n956
+end
+
+def fun_l23_n997()
+ fun_l24_n539
+end
+
+def fun_l23_n998()
+ fun_l24_n935
+end
+
+def fun_l23_n999()
+ fun_l24_n964
+end
+
+def fun_l24_n0()
+ fun_l25_n193
+end
+
+def fun_l24_n1()
+ fun_l25_n802
+end
+
+def fun_l24_n2()
+ fun_l25_n936
+end
+
+def fun_l24_n3()
+ fun_l25_n672
+end
+
+def fun_l24_n4()
+ fun_l25_n506
+end
+
+def fun_l24_n5()
+ fun_l25_n598
+end
+
+def fun_l24_n6()
+ fun_l25_n368
+end
+
+def fun_l24_n7()
+ fun_l25_n4
+end
+
+def fun_l24_n8()
+ fun_l25_n396
+end
+
+def fun_l24_n9()
+ fun_l25_n772
+end
+
+def fun_l24_n10()
+ fun_l25_n986
+end
+
+def fun_l24_n11()
+ fun_l25_n182
+end
+
+def fun_l24_n12()
+ fun_l25_n663
+end
+
+def fun_l24_n13()
+ fun_l25_n460
+end
+
+def fun_l24_n14()
+ fun_l25_n78
+end
+
+def fun_l24_n15()
+ fun_l25_n590
+end
+
+def fun_l24_n16()
+ fun_l25_n205
+end
+
+def fun_l24_n17()
+ fun_l25_n848
+end
+
+def fun_l24_n18()
+ fun_l25_n270
+end
+
+def fun_l24_n19()
+ fun_l25_n491
+end
+
+def fun_l24_n20()
+ fun_l25_n740
+end
+
+def fun_l24_n21()
+ fun_l25_n800
+end
+
+def fun_l24_n22()
+ fun_l25_n859
+end
+
+def fun_l24_n23()
+ fun_l25_n300
+end
+
+def fun_l24_n24()
+ fun_l25_n705
+end
+
+def fun_l24_n25()
+ fun_l25_n917
+end
+
+def fun_l24_n26()
+ fun_l25_n890
+end
+
+def fun_l24_n27()
+ fun_l25_n700
+end
+
+def fun_l24_n28()
+ fun_l25_n448
+end
+
+def fun_l24_n29()
+ fun_l25_n774
+end
+
+def fun_l24_n30()
+ fun_l25_n13
+end
+
+def fun_l24_n31()
+ fun_l25_n427
+end
+
+def fun_l24_n32()
+ fun_l25_n159
+end
+
+def fun_l24_n33()
+ fun_l25_n180
+end
+
+def fun_l24_n34()
+ fun_l25_n721
+end
+
+def fun_l24_n35()
+ fun_l25_n539
+end
+
+def fun_l24_n36()
+ fun_l25_n808
+end
+
+def fun_l24_n37()
+ fun_l25_n123
+end
+
+def fun_l24_n38()
+ fun_l25_n428
+end
+
+def fun_l24_n39()
+ fun_l25_n678
+end
+
+def fun_l24_n40()
+ fun_l25_n821
+end
+
+def fun_l24_n41()
+ fun_l25_n170
+end
+
+def fun_l24_n42()
+ fun_l25_n115
+end
+
+def fun_l24_n43()
+ fun_l25_n72
+end
+
+def fun_l24_n44()
+ fun_l25_n280
+end
+
+def fun_l24_n45()
+ fun_l25_n950
+end
+
+def fun_l24_n46()
+ fun_l25_n572
+end
+
+def fun_l24_n47()
+ fun_l25_n125
+end
+
+def fun_l24_n48()
+ fun_l25_n607
+end
+
+def fun_l24_n49()
+ fun_l25_n704
+end
+
+def fun_l24_n50()
+ fun_l25_n125
+end
+
+def fun_l24_n51()
+ fun_l25_n179
+end
+
+def fun_l24_n52()
+ fun_l25_n77
+end
+
+def fun_l24_n53()
+ fun_l25_n247
+end
+
+def fun_l24_n54()
+ fun_l25_n828
+end
+
+def fun_l24_n55()
+ fun_l25_n461
+end
+
+def fun_l24_n56()
+ fun_l25_n686
+end
+
+def fun_l24_n57()
+ fun_l25_n222
+end
+
+def fun_l24_n58()
+ fun_l25_n394
+end
+
+def fun_l24_n59()
+ fun_l25_n535
+end
+
+def fun_l24_n60()
+ fun_l25_n199
+end
+
+def fun_l24_n61()
+ fun_l25_n543
+end
+
+def fun_l24_n62()
+ fun_l25_n304
+end
+
+def fun_l24_n63()
+ fun_l25_n520
+end
+
+def fun_l24_n64()
+ fun_l25_n167
+end
+
+def fun_l24_n65()
+ fun_l25_n604
+end
+
+def fun_l24_n66()
+ fun_l25_n685
+end
+
+def fun_l24_n67()
+ fun_l25_n134
+end
+
+def fun_l24_n68()
+ fun_l25_n913
+end
+
+def fun_l24_n69()
+ fun_l25_n899
+end
+
+def fun_l24_n70()
+ fun_l25_n872
+end
+
+def fun_l24_n71()
+ fun_l25_n466
+end
+
+def fun_l24_n72()
+ fun_l25_n352
+end
+
+def fun_l24_n73()
+ fun_l25_n624
+end
+
+def fun_l24_n74()
+ fun_l25_n464
+end
+
+def fun_l24_n75()
+ fun_l25_n513
+end
+
+def fun_l24_n76()
+ fun_l25_n310
+end
+
+def fun_l24_n77()
+ fun_l25_n129
+end
+
+def fun_l24_n78()
+ fun_l25_n770
+end
+
+def fun_l24_n79()
+ fun_l25_n96
+end
+
+def fun_l24_n80()
+ fun_l25_n519
+end
+
+def fun_l24_n81()
+ fun_l25_n495
+end
+
+def fun_l24_n82()
+ fun_l25_n789
+end
+
+def fun_l24_n83()
+ fun_l25_n676
+end
+
+def fun_l24_n84()
+ fun_l25_n877
+end
+
+def fun_l24_n85()
+ fun_l25_n17
+end
+
+def fun_l24_n86()
+ fun_l25_n428
+end
+
+def fun_l24_n87()
+ fun_l25_n282
+end
+
+def fun_l24_n88()
+ fun_l25_n313
+end
+
+def fun_l24_n89()
+ fun_l25_n638
+end
+
+def fun_l24_n90()
+ fun_l25_n543
+end
+
+def fun_l24_n91()
+ fun_l25_n63
+end
+
+def fun_l24_n92()
+ fun_l25_n398
+end
+
+def fun_l24_n93()
+ fun_l25_n726
+end
+
+def fun_l24_n94()
+ fun_l25_n645
+end
+
+def fun_l24_n95()
+ fun_l25_n163
+end
+
+def fun_l24_n96()
+ fun_l25_n228
+end
+
+def fun_l24_n97()
+ fun_l25_n346
+end
+
+def fun_l24_n98()
+ fun_l25_n56
+end
+
+def fun_l24_n99()
+ fun_l25_n258
+end
+
+def fun_l24_n100()
+ fun_l25_n730
+end
+
+def fun_l24_n101()
+ fun_l25_n216
+end
+
+def fun_l24_n102()
+ fun_l25_n370
+end
+
+def fun_l24_n103()
+ fun_l25_n17
+end
+
+def fun_l24_n104()
+ fun_l25_n892
+end
+
+def fun_l24_n105()
+ fun_l25_n977
+end
+
+def fun_l24_n106()
+ fun_l25_n285
+end
+
+def fun_l24_n107()
+ fun_l25_n922
+end
+
+def fun_l24_n108()
+ fun_l25_n62
+end
+
+def fun_l24_n109()
+ fun_l25_n103
+end
+
+def fun_l24_n110()
+ fun_l25_n644
+end
+
+def fun_l24_n111()
+ fun_l25_n467
+end
+
+def fun_l24_n112()
+ fun_l25_n543
+end
+
+def fun_l24_n113()
+ fun_l25_n180
+end
+
+def fun_l24_n114()
+ fun_l25_n186
+end
+
+def fun_l24_n115()
+ fun_l25_n685
+end
+
+def fun_l24_n116()
+ fun_l25_n754
+end
+
+def fun_l24_n117()
+ fun_l25_n842
+end
+
+def fun_l24_n118()
+ fun_l25_n759
+end
+
+def fun_l24_n119()
+ fun_l25_n372
+end
+
+def fun_l24_n120()
+ fun_l25_n874
+end
+
+def fun_l24_n121()
+ fun_l25_n332
+end
+
+def fun_l24_n122()
+ fun_l25_n91
+end
+
+def fun_l24_n123()
+ fun_l25_n229
+end
+
+def fun_l24_n124()
+ fun_l25_n485
+end
+
+def fun_l24_n125()
+ fun_l25_n322
+end
+
+def fun_l24_n126()
+ fun_l25_n750
+end
+
+def fun_l24_n127()
+ fun_l25_n466
+end
+
+def fun_l24_n128()
+ fun_l25_n936
+end
+
+def fun_l24_n129()
+ fun_l25_n172
+end
+
+def fun_l24_n130()
+ fun_l25_n389
+end
+
+def fun_l24_n131()
+ fun_l25_n789
+end
+
+def fun_l24_n132()
+ fun_l25_n165
+end
+
+def fun_l24_n133()
+ fun_l25_n756
+end
+
+def fun_l24_n134()
+ fun_l25_n1
+end
+
+def fun_l24_n135()
+ fun_l25_n362
+end
+
+def fun_l24_n136()
+ fun_l25_n323
+end
+
+def fun_l24_n137()
+ fun_l25_n656
+end
+
+def fun_l24_n138()
+ fun_l25_n463
+end
+
+def fun_l24_n139()
+ fun_l25_n392
+end
+
+def fun_l24_n140()
+ fun_l25_n43
+end
+
+def fun_l24_n141()
+ fun_l25_n788
+end
+
+def fun_l24_n142()
+ fun_l25_n212
+end
+
+def fun_l24_n143()
+ fun_l25_n597
+end
+
+def fun_l24_n144()
+ fun_l25_n885
+end
+
+def fun_l24_n145()
+ fun_l25_n470
+end
+
+def fun_l24_n146()
+ fun_l25_n945
+end
+
+def fun_l24_n147()
+ fun_l25_n884
+end
+
+def fun_l24_n148()
+ fun_l25_n492
+end
+
+def fun_l24_n149()
+ fun_l25_n466
+end
+
+def fun_l24_n150()
+ fun_l25_n548
+end
+
+def fun_l24_n151()
+ fun_l25_n574
+end
+
+def fun_l24_n152()
+ fun_l25_n920
+end
+
+def fun_l24_n153()
+ fun_l25_n530
+end
+
+def fun_l24_n154()
+ fun_l25_n90
+end
+
+def fun_l24_n155()
+ fun_l25_n531
+end
+
+def fun_l24_n156()
+ fun_l25_n848
+end
+
+def fun_l24_n157()
+ fun_l25_n116
+end
+
+def fun_l24_n158()
+ fun_l25_n25
+end
+
+def fun_l24_n159()
+ fun_l25_n432
+end
+
+def fun_l24_n160()
+ fun_l25_n978
+end
+
+def fun_l24_n161()
+ fun_l25_n383
+end
+
+def fun_l24_n162()
+ fun_l25_n678
+end
+
+def fun_l24_n163()
+ fun_l25_n785
+end
+
+def fun_l24_n164()
+ fun_l25_n504
+end
+
+def fun_l24_n165()
+ fun_l25_n682
+end
+
+def fun_l24_n166()
+ fun_l25_n649
+end
+
+def fun_l24_n167()
+ fun_l25_n498
+end
+
+def fun_l24_n168()
+ fun_l25_n805
+end
+
+def fun_l24_n169()
+ fun_l25_n215
+end
+
+def fun_l24_n170()
+ fun_l25_n444
+end
+
+def fun_l24_n171()
+ fun_l25_n585
+end
+
+def fun_l24_n172()
+ fun_l25_n22
+end
+
+def fun_l24_n173()
+ fun_l25_n214
+end
+
+def fun_l24_n174()
+ fun_l25_n942
+end
+
+def fun_l24_n175()
+ fun_l25_n763
+end
+
+def fun_l24_n176()
+ fun_l25_n852
+end
+
+def fun_l24_n177()
+ fun_l25_n591
+end
+
+def fun_l24_n178()
+ fun_l25_n498
+end
+
+def fun_l24_n179()
+ fun_l25_n111
+end
+
+def fun_l24_n180()
+ fun_l25_n286
+end
+
+def fun_l24_n181()
+ fun_l25_n808
+end
+
+def fun_l24_n182()
+ fun_l25_n402
+end
+
+def fun_l24_n183()
+ fun_l25_n222
+end
+
+def fun_l24_n184()
+ fun_l25_n646
+end
+
+def fun_l24_n185()
+ fun_l25_n550
+end
+
+def fun_l24_n186()
+ fun_l25_n284
+end
+
+def fun_l24_n187()
+ fun_l25_n832
+end
+
+def fun_l24_n188()
+ fun_l25_n554
+end
+
+def fun_l24_n189()
+ fun_l25_n982
+end
+
+def fun_l24_n190()
+ fun_l25_n10
+end
+
+def fun_l24_n191()
+ fun_l25_n843
+end
+
+def fun_l24_n192()
+ fun_l25_n126
+end
+
+def fun_l24_n193()
+ fun_l25_n332
+end
+
+def fun_l24_n194()
+ fun_l25_n145
+end
+
+def fun_l24_n195()
+ fun_l25_n657
+end
+
+def fun_l24_n196()
+ fun_l25_n636
+end
+
+def fun_l24_n197()
+ fun_l25_n875
+end
+
+def fun_l24_n198()
+ fun_l25_n160
+end
+
+def fun_l24_n199()
+ fun_l25_n682
+end
+
+def fun_l24_n200()
+ fun_l25_n556
+end
+
+def fun_l24_n201()
+ fun_l25_n154
+end
+
+def fun_l24_n202()
+ fun_l25_n105
+end
+
+def fun_l24_n203()
+ fun_l25_n958
+end
+
+def fun_l24_n204()
+ fun_l25_n998
+end
+
+def fun_l24_n205()
+ fun_l25_n356
+end
+
+def fun_l24_n206()
+ fun_l25_n531
+end
+
+def fun_l24_n207()
+ fun_l25_n62
+end
+
+def fun_l24_n208()
+ fun_l25_n320
+end
+
+def fun_l24_n209()
+ fun_l25_n725
+end
+
+def fun_l24_n210()
+ fun_l25_n790
+end
+
+def fun_l24_n211()
+ fun_l25_n740
+end
+
+def fun_l24_n212()
+ fun_l25_n73
+end
+
+def fun_l24_n213()
+ fun_l25_n949
+end
+
+def fun_l24_n214()
+ fun_l25_n526
+end
+
+def fun_l24_n215()
+ fun_l25_n881
+end
+
+def fun_l24_n216()
+ fun_l25_n43
+end
+
+def fun_l24_n217()
+ fun_l25_n284
+end
+
+def fun_l24_n218()
+ fun_l25_n252
+end
+
+def fun_l24_n219()
+ fun_l25_n973
+end
+
+def fun_l24_n220()
+ fun_l25_n264
+end
+
+def fun_l24_n221()
+ fun_l25_n55
+end
+
+def fun_l24_n222()
+ fun_l25_n731
+end
+
+def fun_l24_n223()
+ fun_l25_n274
+end
+
+def fun_l24_n224()
+ fun_l25_n748
+end
+
+def fun_l24_n225()
+ fun_l25_n990
+end
+
+def fun_l24_n226()
+ fun_l25_n243
+end
+
+def fun_l24_n227()
+ fun_l25_n607
+end
+
+def fun_l24_n228()
+ fun_l25_n352
+end
+
+def fun_l24_n229()
+ fun_l25_n238
+end
+
+def fun_l24_n230()
+ fun_l25_n252
+end
+
+def fun_l24_n231()
+ fun_l25_n534
+end
+
+def fun_l24_n232()
+ fun_l25_n330
+end
+
+def fun_l24_n233()
+ fun_l25_n915
+end
+
+def fun_l24_n234()
+ fun_l25_n106
+end
+
+def fun_l24_n235()
+ fun_l25_n59
+end
+
+def fun_l24_n236()
+ fun_l25_n829
+end
+
+def fun_l24_n237()
+ fun_l25_n563
+end
+
+def fun_l24_n238()
+ fun_l25_n334
+end
+
+def fun_l24_n239()
+ fun_l25_n828
+end
+
+def fun_l24_n240()
+ fun_l25_n530
+end
+
+def fun_l24_n241()
+ fun_l25_n831
+end
+
+def fun_l24_n242()
+ fun_l25_n922
+end
+
+def fun_l24_n243()
+ fun_l25_n822
+end
+
+def fun_l24_n244()
+ fun_l25_n369
+end
+
+def fun_l24_n245()
+ fun_l25_n977
+end
+
+def fun_l24_n246()
+ fun_l25_n797
+end
+
+def fun_l24_n247()
+ fun_l25_n883
+end
+
+def fun_l24_n248()
+ fun_l25_n964
+end
+
+def fun_l24_n249()
+ fun_l25_n490
+end
+
+def fun_l24_n250()
+ fun_l25_n903
+end
+
+def fun_l24_n251()
+ fun_l25_n154
+end
+
+def fun_l24_n252()
+ fun_l25_n74
+end
+
+def fun_l24_n253()
+ fun_l25_n955
+end
+
+def fun_l24_n254()
+ fun_l25_n709
+end
+
+def fun_l24_n255()
+ fun_l25_n154
+end
+
+def fun_l24_n256()
+ fun_l25_n940
+end
+
+def fun_l24_n257()
+ fun_l25_n33
+end
+
+def fun_l24_n258()
+ fun_l25_n450
+end
+
+def fun_l24_n259()
+ fun_l25_n592
+end
+
+def fun_l24_n260()
+ fun_l25_n430
+end
+
+def fun_l24_n261()
+ fun_l25_n650
+end
+
+def fun_l24_n262()
+ fun_l25_n891
+end
+
+def fun_l24_n263()
+ fun_l25_n803
+end
+
+def fun_l24_n264()
+ fun_l25_n622
+end
+
+def fun_l24_n265()
+ fun_l25_n401
+end
+
+def fun_l24_n266()
+ fun_l25_n493
+end
+
+def fun_l24_n267()
+ fun_l25_n240
+end
+
+def fun_l24_n268()
+ fun_l25_n654
+end
+
+def fun_l24_n269()
+ fun_l25_n839
+end
+
+def fun_l24_n270()
+ fun_l25_n889
+end
+
+def fun_l24_n271()
+ fun_l25_n770
+end
+
+def fun_l24_n272()
+ fun_l25_n860
+end
+
+def fun_l24_n273()
+ fun_l25_n634
+end
+
+def fun_l24_n274()
+ fun_l25_n365
+end
+
+def fun_l24_n275()
+ fun_l25_n321
+end
+
+def fun_l24_n276()
+ fun_l25_n628
+end
+
+def fun_l24_n277()
+ fun_l25_n669
+end
+
+def fun_l24_n278()
+ fun_l25_n815
+end
+
+def fun_l24_n279()
+ fun_l25_n647
+end
+
+def fun_l24_n280()
+ fun_l25_n920
+end
+
+def fun_l24_n281()
+ fun_l25_n620
+end
+
+def fun_l24_n282()
+ fun_l25_n609
+end
+
+def fun_l24_n283()
+ fun_l25_n45
+end
+
+def fun_l24_n284()
+ fun_l25_n632
+end
+
+def fun_l24_n285()
+ fun_l25_n961
+end
+
+def fun_l24_n286()
+ fun_l25_n261
+end
+
+def fun_l24_n287()
+ fun_l25_n348
+end
+
+def fun_l24_n288()
+ fun_l25_n687
+end
+
+def fun_l24_n289()
+ fun_l25_n359
+end
+
+def fun_l24_n290()
+ fun_l25_n306
+end
+
+def fun_l24_n291()
+ fun_l25_n487
+end
+
+def fun_l24_n292()
+ fun_l25_n59
+end
+
+def fun_l24_n293()
+ fun_l25_n353
+end
+
+def fun_l24_n294()
+ fun_l25_n553
+end
+
+def fun_l24_n295()
+ fun_l25_n704
+end
+
+def fun_l24_n296()
+ fun_l25_n691
+end
+
+def fun_l24_n297()
+ fun_l25_n332
+end
+
+def fun_l24_n298()
+ fun_l25_n665
+end
+
+def fun_l24_n299()
+ fun_l25_n407
+end
+
+def fun_l24_n300()
+ fun_l25_n182
+end
+
+def fun_l24_n301()
+ fun_l25_n716
+end
+
+def fun_l24_n302()
+ fun_l25_n55
+end
+
+def fun_l24_n303()
+ fun_l25_n946
+end
+
+def fun_l24_n304()
+ fun_l25_n448
+end
+
+def fun_l24_n305()
+ fun_l25_n959
+end
+
+def fun_l24_n306()
+ fun_l25_n23
+end
+
+def fun_l24_n307()
+ fun_l25_n327
+end
+
+def fun_l24_n308()
+ fun_l25_n317
+end
+
+def fun_l24_n309()
+ fun_l25_n2
+end
+
+def fun_l24_n310()
+ fun_l25_n168
+end
+
+def fun_l24_n311()
+ fun_l25_n171
+end
+
+def fun_l24_n312()
+ fun_l25_n138
+end
+
+def fun_l24_n313()
+ fun_l25_n974
+end
+
+def fun_l24_n314()
+ fun_l25_n981
+end
+
+def fun_l24_n315()
+ fun_l25_n382
+end
+
+def fun_l24_n316()
+ fun_l25_n590
+end
+
+def fun_l24_n317()
+ fun_l25_n613
+end
+
+def fun_l24_n318()
+ fun_l25_n119
+end
+
+def fun_l24_n319()
+ fun_l25_n431
+end
+
+def fun_l24_n320()
+ fun_l25_n595
+end
+
+def fun_l24_n321()
+ fun_l25_n406
+end
+
+def fun_l24_n322()
+ fun_l25_n771
+end
+
+def fun_l24_n323()
+ fun_l25_n693
+end
+
+def fun_l24_n324()
+ fun_l25_n442
+end
+
+def fun_l24_n325()
+ fun_l25_n164
+end
+
+def fun_l24_n326()
+ fun_l25_n630
+end
+
+def fun_l24_n327()
+ fun_l25_n31
+end
+
+def fun_l24_n328()
+ fun_l25_n422
+end
+
+def fun_l24_n329()
+ fun_l25_n204
+end
+
+def fun_l24_n330()
+ fun_l25_n304
+end
+
+def fun_l24_n331()
+ fun_l25_n398
+end
+
+def fun_l24_n332()
+ fun_l25_n903
+end
+
+def fun_l24_n333()
+ fun_l25_n841
+end
+
+def fun_l24_n334()
+ fun_l25_n662
+end
+
+def fun_l24_n335()
+ fun_l25_n247
+end
+
+def fun_l24_n336()
+ fun_l25_n348
+end
+
+def fun_l24_n337()
+ fun_l25_n378
+end
+
+def fun_l24_n338()
+ fun_l25_n197
+end
+
+def fun_l24_n339()
+ fun_l25_n897
+end
+
+def fun_l24_n340()
+ fun_l25_n792
+end
+
+def fun_l24_n341()
+ fun_l25_n655
+end
+
+def fun_l24_n342()
+ fun_l25_n352
+end
+
+def fun_l24_n343()
+ fun_l25_n853
+end
+
+def fun_l24_n344()
+ fun_l25_n202
+end
+
+def fun_l24_n345()
+ fun_l25_n420
+end
+
+def fun_l24_n346()
+ fun_l25_n146
+end
+
+def fun_l24_n347()
+ fun_l25_n766
+end
+
+def fun_l24_n348()
+ fun_l25_n245
+end
+
+def fun_l24_n349()
+ fun_l25_n772
+end
+
+def fun_l24_n350()
+ fun_l25_n789
+end
+
+def fun_l24_n351()
+ fun_l25_n180
+end
+
+def fun_l24_n352()
+ fun_l25_n982
+end
+
+def fun_l24_n353()
+ fun_l25_n837
+end
+
+def fun_l24_n354()
+ fun_l25_n515
+end
+
+def fun_l24_n355()
+ fun_l25_n688
+end
+
+def fun_l24_n356()
+ fun_l25_n85
+end
+
+def fun_l24_n357()
+ fun_l25_n918
+end
+
+def fun_l24_n358()
+ fun_l25_n104
+end
+
+def fun_l24_n359()
+ fun_l25_n797
+end
+
+def fun_l24_n360()
+ fun_l25_n488
+end
+
+def fun_l24_n361()
+ fun_l25_n970
+end
+
+def fun_l24_n362()
+ fun_l25_n82
+end
+
+def fun_l24_n363()
+ fun_l25_n815
+end
+
+def fun_l24_n364()
+ fun_l25_n81
+end
+
+def fun_l24_n365()
+ fun_l25_n70
+end
+
+def fun_l24_n366()
+ fun_l25_n686
+end
+
+def fun_l24_n367()
+ fun_l25_n8
+end
+
+def fun_l24_n368()
+ fun_l25_n835
+end
+
+def fun_l24_n369()
+ fun_l25_n473
+end
+
+def fun_l24_n370()
+ fun_l25_n637
+end
+
+def fun_l24_n371()
+ fun_l25_n314
+end
+
+def fun_l24_n372()
+ fun_l25_n857
+end
+
+def fun_l24_n373()
+ fun_l25_n496
+end
+
+def fun_l24_n374()
+ fun_l25_n182
+end
+
+def fun_l24_n375()
+ fun_l25_n730
+end
+
+def fun_l24_n376()
+ fun_l25_n370
+end
+
+def fun_l24_n377()
+ fun_l25_n289
+end
+
+def fun_l24_n378()
+ fun_l25_n12
+end
+
+def fun_l24_n379()
+ fun_l25_n73
+end
+
+def fun_l24_n380()
+ fun_l25_n514
+end
+
+def fun_l24_n381()
+ fun_l25_n947
+end
+
+def fun_l24_n382()
+ fun_l25_n368
+end
+
+def fun_l24_n383()
+ fun_l25_n997
+end
+
+def fun_l24_n384()
+ fun_l25_n542
+end
+
+def fun_l24_n385()
+ fun_l25_n564
+end
+
+def fun_l24_n386()
+ fun_l25_n213
+end
+
+def fun_l24_n387()
+ fun_l25_n748
+end
+
+def fun_l24_n388()
+ fun_l25_n147
+end
+
+def fun_l24_n389()
+ fun_l25_n437
+end
+
+def fun_l24_n390()
+ fun_l25_n844
+end
+
+def fun_l24_n391()
+ fun_l25_n747
+end
+
+def fun_l24_n392()
+ fun_l25_n68
+end
+
+def fun_l24_n393()
+ fun_l25_n746
+end
+
+def fun_l24_n394()
+ fun_l25_n816
+end
+
+def fun_l24_n395()
+ fun_l25_n865
+end
+
+def fun_l24_n396()
+ fun_l25_n235
+end
+
+def fun_l24_n397()
+ fun_l25_n961
+end
+
+def fun_l24_n398()
+ fun_l25_n8
+end
+
+def fun_l24_n399()
+ fun_l25_n741
+end
+
+def fun_l24_n400()
+ fun_l25_n639
+end
+
+def fun_l24_n401()
+ fun_l25_n419
+end
+
+def fun_l24_n402()
+ fun_l25_n381
+end
+
+def fun_l24_n403()
+ fun_l25_n674
+end
+
+def fun_l24_n404()
+ fun_l25_n238
+end
+
+def fun_l24_n405()
+ fun_l25_n75
+end
+
+def fun_l24_n406()
+ fun_l25_n10
+end
+
+def fun_l24_n407()
+ fun_l25_n672
+end
+
+def fun_l24_n408()
+ fun_l25_n154
+end
+
+def fun_l24_n409()
+ fun_l25_n844
+end
+
+def fun_l24_n410()
+ fun_l25_n578
+end
+
+def fun_l24_n411()
+ fun_l25_n535
+end
+
+def fun_l24_n412()
+ fun_l25_n742
+end
+
+def fun_l24_n413()
+ fun_l25_n587
+end
+
+def fun_l24_n414()
+ fun_l25_n967
+end
+
+def fun_l24_n415()
+ fun_l25_n290
+end
+
+def fun_l24_n416()
+ fun_l25_n958
+end
+
+def fun_l24_n417()
+ fun_l25_n19
+end
+
+def fun_l24_n418()
+ fun_l25_n983
+end
+
+def fun_l24_n419()
+ fun_l25_n206
+end
+
+def fun_l24_n420()
+ fun_l25_n317
+end
+
+def fun_l24_n421()
+ fun_l25_n847
+end
+
+def fun_l24_n422()
+ fun_l25_n409
+end
+
+def fun_l24_n423()
+ fun_l25_n584
+end
+
+def fun_l24_n424()
+ fun_l25_n667
+end
+
+def fun_l24_n425()
+ fun_l25_n559
+end
+
+def fun_l24_n426()
+ fun_l25_n503
+end
+
+def fun_l24_n427()
+ fun_l25_n775
+end
+
+def fun_l24_n428()
+ fun_l25_n828
+end
+
+def fun_l24_n429()
+ fun_l25_n375
+end
+
+def fun_l24_n430()
+ fun_l25_n342
+end
+
+def fun_l24_n431()
+ fun_l25_n382
+end
+
+def fun_l24_n432()
+ fun_l25_n978
+end
+
+def fun_l24_n433()
+ fun_l25_n290
+end
+
+def fun_l24_n434()
+ fun_l25_n367
+end
+
+def fun_l24_n435()
+ fun_l25_n485
+end
+
+def fun_l24_n436()
+ fun_l25_n299
+end
+
+def fun_l24_n437()
+ fun_l25_n343
+end
+
+def fun_l24_n438()
+ fun_l25_n620
+end
+
+def fun_l24_n439()
+ fun_l25_n627
+end
+
+def fun_l24_n440()
+ fun_l25_n955
+end
+
+def fun_l24_n441()
+ fun_l25_n330
+end
+
+def fun_l24_n442()
+ fun_l25_n37
+end
+
+def fun_l24_n443()
+ fun_l25_n437
+end
+
+def fun_l24_n444()
+ fun_l25_n879
+end
+
+def fun_l24_n445()
+ fun_l25_n532
+end
+
+def fun_l24_n446()
+ fun_l25_n701
+end
+
+def fun_l24_n447()
+ fun_l25_n936
+end
+
+def fun_l24_n448()
+ fun_l25_n503
+end
+
+def fun_l24_n449()
+ fun_l25_n275
+end
+
+def fun_l24_n450()
+ fun_l25_n77
+end
+
+def fun_l24_n451()
+ fun_l25_n265
+end
+
+def fun_l24_n452()
+ fun_l25_n727
+end
+
+def fun_l24_n453()
+ fun_l25_n547
+end
+
+def fun_l24_n454()
+ fun_l25_n796
+end
+
+def fun_l24_n455()
+ fun_l25_n18
+end
+
+def fun_l24_n456()
+ fun_l25_n328
+end
+
+def fun_l24_n457()
+ fun_l25_n672
+end
+
+def fun_l24_n458()
+ fun_l25_n803
+end
+
+def fun_l24_n459()
+ fun_l25_n590
+end
+
+def fun_l24_n460()
+ fun_l25_n798
+end
+
+def fun_l24_n461()
+ fun_l25_n823
+end
+
+def fun_l24_n462()
+ fun_l25_n258
+end
+
+def fun_l24_n463()
+ fun_l25_n569
+end
+
+def fun_l24_n464()
+ fun_l25_n541
+end
+
+def fun_l24_n465()
+ fun_l25_n313
+end
+
+def fun_l24_n466()
+ fun_l25_n994
+end
+
+def fun_l24_n467()
+ fun_l25_n925
+end
+
+def fun_l24_n468()
+ fun_l25_n277
+end
+
+def fun_l24_n469()
+ fun_l25_n862
+end
+
+def fun_l24_n470()
+ fun_l25_n241
+end
+
+def fun_l24_n471()
+ fun_l25_n203
+end
+
+def fun_l24_n472()
+ fun_l25_n950
+end
+
+def fun_l24_n473()
+ fun_l25_n774
+end
+
+def fun_l24_n474()
+ fun_l25_n699
+end
+
+def fun_l24_n475()
+ fun_l25_n415
+end
+
+def fun_l24_n476()
+ fun_l25_n100
+end
+
+def fun_l24_n477()
+ fun_l25_n97
+end
+
+def fun_l24_n478()
+ fun_l25_n439
+end
+
+def fun_l24_n479()
+ fun_l25_n276
+end
+
+def fun_l24_n480()
+ fun_l25_n761
+end
+
+def fun_l24_n481()
+ fun_l25_n980
+end
+
+def fun_l24_n482()
+ fun_l25_n927
+end
+
+def fun_l24_n483()
+ fun_l25_n276
+end
+
+def fun_l24_n484()
+ fun_l25_n402
+end
+
+def fun_l24_n485()
+ fun_l25_n169
+end
+
+def fun_l24_n486()
+ fun_l25_n928
+end
+
+def fun_l24_n487()
+ fun_l25_n931
+end
+
+def fun_l24_n488()
+ fun_l25_n807
+end
+
+def fun_l24_n489()
+ fun_l25_n258
+end
+
+def fun_l24_n490()
+ fun_l25_n385
+end
+
+def fun_l24_n491()
+ fun_l25_n846
+end
+
+def fun_l24_n492()
+ fun_l25_n872
+end
+
+def fun_l24_n493()
+ fun_l25_n169
+end
+
+def fun_l24_n494()
+ fun_l25_n77
+end
+
+def fun_l24_n495()
+ fun_l25_n775
+end
+
+def fun_l24_n496()
+ fun_l25_n744
+end
+
+def fun_l24_n497()
+ fun_l25_n666
+end
+
+def fun_l24_n498()
+ fun_l25_n607
+end
+
+def fun_l24_n499()
+ fun_l25_n603
+end
+
+def fun_l24_n500()
+ fun_l25_n821
+end
+
+def fun_l24_n501()
+ fun_l25_n83
+end
+
+def fun_l24_n502()
+ fun_l25_n331
+end
+
+def fun_l24_n503()
+ fun_l25_n20
+end
+
+def fun_l24_n504()
+ fun_l25_n115
+end
+
+def fun_l24_n505()
+ fun_l25_n437
+end
+
+def fun_l24_n506()
+ fun_l25_n679
+end
+
+def fun_l24_n507()
+ fun_l25_n424
+end
+
+def fun_l24_n508()
+ fun_l25_n745
+end
+
+def fun_l24_n509()
+ fun_l25_n389
+end
+
+def fun_l24_n510()
+ fun_l25_n762
+end
+
+def fun_l24_n511()
+ fun_l25_n289
+end
+
+def fun_l24_n512()
+ fun_l25_n944
+end
+
+def fun_l24_n513()
+ fun_l25_n601
+end
+
+def fun_l24_n514()
+ fun_l25_n660
+end
+
+def fun_l24_n515()
+ fun_l25_n975
+end
+
+def fun_l24_n516()
+ fun_l25_n815
+end
+
+def fun_l24_n517()
+ fun_l25_n208
+end
+
+def fun_l24_n518()
+ fun_l25_n736
+end
+
+def fun_l24_n519()
+ fun_l25_n189
+end
+
+def fun_l24_n520()
+ fun_l25_n490
+end
+
+def fun_l24_n521()
+ fun_l25_n452
+end
+
+def fun_l24_n522()
+ fun_l25_n96
+end
+
+def fun_l24_n523()
+ fun_l25_n772
+end
+
+def fun_l24_n524()
+ fun_l25_n930
+end
+
+def fun_l24_n525()
+ fun_l25_n322
+end
+
+def fun_l24_n526()
+ fun_l25_n419
+end
+
+def fun_l24_n527()
+ fun_l25_n997
+end
+
+def fun_l24_n528()
+ fun_l25_n475
+end
+
+def fun_l24_n529()
+ fun_l25_n511
+end
+
+def fun_l24_n530()
+ fun_l25_n909
+end
+
+def fun_l24_n531()
+ fun_l25_n33
+end
+
+def fun_l24_n532()
+ fun_l25_n923
+end
+
+def fun_l24_n533()
+ fun_l25_n201
+end
+
+def fun_l24_n534()
+ fun_l25_n444
+end
+
+def fun_l24_n535()
+ fun_l25_n327
+end
+
+def fun_l24_n536()
+ fun_l25_n982
+end
+
+def fun_l24_n537()
+ fun_l25_n969
+end
+
+def fun_l24_n538()
+ fun_l25_n514
+end
+
+def fun_l24_n539()
+ fun_l25_n707
+end
+
+def fun_l24_n540()
+ fun_l25_n571
+end
+
+def fun_l24_n541()
+ fun_l25_n407
+end
+
+def fun_l24_n542()
+ fun_l25_n848
+end
+
+def fun_l24_n543()
+ fun_l25_n457
+end
+
+def fun_l24_n544()
+ fun_l25_n374
+end
+
+def fun_l24_n545()
+ fun_l25_n875
+end
+
+def fun_l24_n546()
+ fun_l25_n166
+end
+
+def fun_l24_n547()
+ fun_l25_n951
+end
+
+def fun_l24_n548()
+ fun_l25_n213
+end
+
+def fun_l24_n549()
+ fun_l25_n148
+end
+
+def fun_l24_n550()
+ fun_l25_n479
+end
+
+def fun_l24_n551()
+ fun_l25_n130
+end
+
+def fun_l24_n552()
+ fun_l25_n823
+end
+
+def fun_l24_n553()
+ fun_l25_n507
+end
+
+def fun_l24_n554()
+ fun_l25_n227
+end
+
+def fun_l24_n555()
+ fun_l25_n811
+end
+
+def fun_l24_n556()
+ fun_l25_n203
+end
+
+def fun_l24_n557()
+ fun_l25_n626
+end
+
+def fun_l24_n558()
+ fun_l25_n965
+end
+
+def fun_l24_n559()
+ fun_l25_n871
+end
+
+def fun_l24_n560()
+ fun_l25_n752
+end
+
+def fun_l24_n561()
+ fun_l25_n89
+end
+
+def fun_l24_n562()
+ fun_l25_n970
+end
+
+def fun_l24_n563()
+ fun_l25_n956
+end
+
+def fun_l24_n564()
+ fun_l25_n871
+end
+
+def fun_l24_n565()
+ fun_l25_n610
+end
+
+def fun_l24_n566()
+ fun_l25_n43
+end
+
+def fun_l24_n567()
+ fun_l25_n176
+end
+
+def fun_l24_n568()
+ fun_l25_n10
+end
+
+def fun_l24_n569()
+ fun_l25_n798
+end
+
+def fun_l24_n570()
+ fun_l25_n141
+end
+
+def fun_l24_n571()
+ fun_l25_n205
+end
+
+def fun_l24_n572()
+ fun_l25_n870
+end
+
+def fun_l24_n573()
+ fun_l25_n324
+end
+
+def fun_l24_n574()
+ fun_l25_n765
+end
+
+def fun_l24_n575()
+ fun_l25_n775
+end
+
+def fun_l24_n576()
+ fun_l25_n232
+end
+
+def fun_l24_n577()
+ fun_l25_n36
+end
+
+def fun_l24_n578()
+ fun_l25_n260
+end
+
+def fun_l24_n579()
+ fun_l25_n84
+end
+
+def fun_l24_n580()
+ fun_l25_n279
+end
+
+def fun_l24_n581()
+ fun_l25_n292
+end
+
+def fun_l24_n582()
+ fun_l25_n472
+end
+
+def fun_l24_n583()
+ fun_l25_n630
+end
+
+def fun_l24_n584()
+ fun_l25_n695
+end
+
+def fun_l24_n585()
+ fun_l25_n974
+end
+
+def fun_l24_n586()
+ fun_l25_n263
+end
+
+def fun_l24_n587()
+ fun_l25_n959
+end
+
+def fun_l24_n588()
+ fun_l25_n76
+end
+
+def fun_l24_n589()
+ fun_l25_n897
+end
+
+def fun_l24_n590()
+ fun_l25_n416
+end
+
+def fun_l24_n591()
+ fun_l25_n225
+end
+
+def fun_l24_n592()
+ fun_l25_n194
+end
+
+def fun_l24_n593()
+ fun_l25_n338
+end
+
+def fun_l24_n594()
+ fun_l25_n565
+end
+
+def fun_l24_n595()
+ fun_l25_n301
+end
+
+def fun_l24_n596()
+ fun_l25_n101
+end
+
+def fun_l24_n597()
+ fun_l25_n876
+end
+
+def fun_l24_n598()
+ fun_l25_n127
+end
+
+def fun_l24_n599()
+ fun_l25_n608
+end
+
+def fun_l24_n600()
+ fun_l25_n45
+end
+
+def fun_l24_n601()
+ fun_l25_n833
+end
+
+def fun_l24_n602()
+ fun_l25_n43
+end
+
+def fun_l24_n603()
+ fun_l25_n136
+end
+
+def fun_l24_n604()
+ fun_l25_n916
+end
+
+def fun_l24_n605()
+ fun_l25_n686
+end
+
+def fun_l24_n606()
+ fun_l25_n574
+end
+
+def fun_l24_n607()
+ fun_l25_n164
+end
+
+def fun_l24_n608()
+ fun_l25_n983
+end
+
+def fun_l24_n609()
+ fun_l25_n883
+end
+
+def fun_l24_n610()
+ fun_l25_n957
+end
+
+def fun_l24_n611()
+ fun_l25_n592
+end
+
+def fun_l24_n612()
+ fun_l25_n684
+end
+
+def fun_l24_n613()
+ fun_l25_n333
+end
+
+def fun_l24_n614()
+ fun_l25_n465
+end
+
+def fun_l24_n615()
+ fun_l25_n297
+end
+
+def fun_l24_n616()
+ fun_l25_n738
+end
+
+def fun_l24_n617()
+ fun_l25_n953
+end
+
+def fun_l24_n618()
+ fun_l25_n27
+end
+
+def fun_l24_n619()
+ fun_l25_n577
+end
+
+def fun_l24_n620()
+ fun_l25_n595
+end
+
+def fun_l24_n621()
+ fun_l25_n408
+end
+
+def fun_l24_n622()
+ fun_l25_n161
+end
+
+def fun_l24_n623()
+ fun_l25_n263
+end
+
+def fun_l24_n624()
+ fun_l25_n557
+end
+
+def fun_l24_n625()
+ fun_l25_n708
+end
+
+def fun_l24_n626()
+ fun_l25_n879
+end
+
+def fun_l24_n627()
+ fun_l25_n235
+end
+
+def fun_l24_n628()
+ fun_l25_n551
+end
+
+def fun_l24_n629()
+ fun_l25_n46
+end
+
+def fun_l24_n630()
+ fun_l25_n718
+end
+
+def fun_l24_n631()
+ fun_l25_n419
+end
+
+def fun_l24_n632()
+ fun_l25_n370
+end
+
+def fun_l24_n633()
+ fun_l25_n322
+end
+
+def fun_l24_n634()
+ fun_l25_n912
+end
+
+def fun_l24_n635()
+ fun_l25_n445
+end
+
+def fun_l24_n636()
+ fun_l25_n850
+end
+
+def fun_l24_n637()
+ fun_l25_n233
+end
+
+def fun_l24_n638()
+ fun_l25_n230
+end
+
+def fun_l24_n639()
+ fun_l25_n188
+end
+
+def fun_l24_n640()
+ fun_l25_n267
+end
+
+def fun_l24_n641()
+ fun_l25_n840
+end
+
+def fun_l24_n642()
+ fun_l25_n786
+end
+
+def fun_l24_n643()
+ fun_l25_n737
+end
+
+def fun_l24_n644()
+ fun_l25_n725
+end
+
+def fun_l24_n645()
+ fun_l25_n200
+end
+
+def fun_l24_n646()
+ fun_l25_n173
+end
+
+def fun_l24_n647()
+ fun_l25_n50
+end
+
+def fun_l24_n648()
+ fun_l25_n460
+end
+
+def fun_l24_n649()
+ fun_l25_n959
+end
+
+def fun_l24_n650()
+ fun_l25_n397
+end
+
+def fun_l24_n651()
+ fun_l25_n108
+end
+
+def fun_l24_n652()
+ fun_l25_n426
+end
+
+def fun_l24_n653()
+ fun_l25_n208
+end
+
+def fun_l24_n654()
+ fun_l25_n989
+end
+
+def fun_l24_n655()
+ fun_l25_n73
+end
+
+def fun_l24_n656()
+ fun_l25_n710
+end
+
+def fun_l24_n657()
+ fun_l25_n707
+end
+
+def fun_l24_n658()
+ fun_l25_n276
+end
+
+def fun_l24_n659()
+ fun_l25_n920
+end
+
+def fun_l24_n660()
+ fun_l25_n735
+end
+
+def fun_l24_n661()
+ fun_l25_n937
+end
+
+def fun_l24_n662()
+ fun_l25_n544
+end
+
+def fun_l24_n663()
+ fun_l25_n663
+end
+
+def fun_l24_n664()
+ fun_l25_n571
+end
+
+def fun_l24_n665()
+ fun_l25_n682
+end
+
+def fun_l24_n666()
+ fun_l25_n79
+end
+
+def fun_l24_n667()
+ fun_l25_n759
+end
+
+def fun_l24_n668()
+ fun_l25_n128
+end
+
+def fun_l24_n669()
+ fun_l25_n895
+end
+
+def fun_l24_n670()
+ fun_l25_n258
+end
+
+def fun_l24_n671()
+ fun_l25_n12
+end
+
+def fun_l24_n672()
+ fun_l25_n397
+end
+
+def fun_l24_n673()
+ fun_l25_n967
+end
+
+def fun_l24_n674()
+ fun_l25_n960
+end
+
+def fun_l24_n675()
+ fun_l25_n867
+end
+
+def fun_l24_n676()
+ fun_l25_n438
+end
+
+def fun_l24_n677()
+ fun_l25_n692
+end
+
+def fun_l24_n678()
+ fun_l25_n161
+end
+
+def fun_l24_n679()
+ fun_l25_n122
+end
+
+def fun_l24_n680()
+ fun_l25_n344
+end
+
+def fun_l24_n681()
+ fun_l25_n285
+end
+
+def fun_l24_n682()
+ fun_l25_n838
+end
+
+def fun_l24_n683()
+ fun_l25_n80
+end
+
+def fun_l24_n684()
+ fun_l25_n81
+end
+
+def fun_l24_n685()
+ fun_l25_n811
+end
+
+def fun_l24_n686()
+ fun_l25_n998
+end
+
+def fun_l24_n687()
+ fun_l25_n739
+end
+
+def fun_l24_n688()
+ fun_l25_n660
+end
+
+def fun_l24_n689()
+ fun_l25_n965
+end
+
+def fun_l24_n690()
+ fun_l25_n124
+end
+
+def fun_l24_n691()
+ fun_l25_n879
+end
+
+def fun_l24_n692()
+ fun_l25_n669
+end
+
+def fun_l24_n693()
+ fun_l25_n428
+end
+
+def fun_l24_n694()
+ fun_l25_n143
+end
+
+def fun_l24_n695()
+ fun_l25_n103
+end
+
+def fun_l24_n696()
+ fun_l25_n738
+end
+
+def fun_l24_n697()
+ fun_l25_n188
+end
+
+def fun_l24_n698()
+ fun_l25_n657
+end
+
+def fun_l24_n699()
+ fun_l25_n258
+end
+
+def fun_l24_n700()
+ fun_l25_n878
+end
+
+def fun_l24_n701()
+ fun_l25_n927
+end
+
+def fun_l24_n702()
+ fun_l25_n9
+end
+
+def fun_l24_n703()
+ fun_l25_n41
+end
+
+def fun_l24_n704()
+ fun_l25_n925
+end
+
+def fun_l24_n705()
+ fun_l25_n473
+end
+
+def fun_l24_n706()
+ fun_l25_n321
+end
+
+def fun_l24_n707()
+ fun_l25_n778
+end
+
+def fun_l24_n708()
+ fun_l25_n951
+end
+
+def fun_l24_n709()
+ fun_l25_n91
+end
+
+def fun_l24_n710()
+ fun_l25_n297
+end
+
+def fun_l24_n711()
+ fun_l25_n185
+end
+
+def fun_l24_n712()
+ fun_l25_n822
+end
+
+def fun_l24_n713()
+ fun_l25_n817
+end
+
+def fun_l24_n714()
+ fun_l25_n558
+end
+
+def fun_l24_n715()
+ fun_l25_n15
+end
+
+def fun_l24_n716()
+ fun_l25_n106
+end
+
+def fun_l24_n717()
+ fun_l25_n173
+end
+
+def fun_l24_n718()
+ fun_l25_n565
+end
+
+def fun_l24_n719()
+ fun_l25_n832
+end
+
+def fun_l24_n720()
+ fun_l25_n798
+end
+
+def fun_l24_n721()
+ fun_l25_n333
+end
+
+def fun_l24_n722()
+ fun_l25_n631
+end
+
+def fun_l24_n723()
+ fun_l25_n135
+end
+
+def fun_l24_n724()
+ fun_l25_n826
+end
+
+def fun_l24_n725()
+ fun_l25_n878
+end
+
+def fun_l24_n726()
+ fun_l25_n612
+end
+
+def fun_l24_n727()
+ fun_l25_n302
+end
+
+def fun_l24_n728()
+ fun_l25_n636
+end
+
+def fun_l24_n729()
+ fun_l25_n308
+end
+
+def fun_l24_n730()
+ fun_l25_n633
+end
+
+def fun_l24_n731()
+ fun_l25_n596
+end
+
+def fun_l24_n732()
+ fun_l25_n948
+end
+
+def fun_l24_n733()
+ fun_l25_n93
+end
+
+def fun_l24_n734()
+ fun_l25_n175
+end
+
+def fun_l24_n735()
+ fun_l25_n590
+end
+
+def fun_l24_n736()
+ fun_l25_n168
+end
+
+def fun_l24_n737()
+ fun_l25_n861
+end
+
+def fun_l24_n738()
+ fun_l25_n890
+end
+
+def fun_l24_n739()
+ fun_l25_n355
+end
+
+def fun_l24_n740()
+ fun_l25_n166
+end
+
+def fun_l24_n741()
+ fun_l25_n397
+end
+
+def fun_l24_n742()
+ fun_l25_n665
+end
+
+def fun_l24_n743()
+ fun_l25_n436
+end
+
+def fun_l24_n744()
+ fun_l25_n274
+end
+
+def fun_l24_n745()
+ fun_l25_n44
+end
+
+def fun_l24_n746()
+ fun_l25_n765
+end
+
+def fun_l24_n747()
+ fun_l25_n916
+end
+
+def fun_l24_n748()
+ fun_l25_n735
+end
+
+def fun_l24_n749()
+ fun_l25_n745
+end
+
+def fun_l24_n750()
+ fun_l25_n813
+end
+
+def fun_l24_n751()
+ fun_l25_n26
+end
+
+def fun_l24_n752()
+ fun_l25_n223
+end
+
+def fun_l24_n753()
+ fun_l25_n256
+end
+
+def fun_l24_n754()
+ fun_l25_n852
+end
+
+def fun_l24_n755()
+ fun_l25_n400
+end
+
+def fun_l24_n756()
+ fun_l25_n973
+end
+
+def fun_l24_n757()
+ fun_l25_n900
+end
+
+def fun_l24_n758()
+ fun_l25_n884
+end
+
+def fun_l24_n759()
+ fun_l25_n171
+end
+
+def fun_l24_n760()
+ fun_l25_n155
+end
+
+def fun_l24_n761()
+ fun_l25_n310
+end
+
+def fun_l24_n762()
+ fun_l25_n706
+end
+
+def fun_l24_n763()
+ fun_l25_n324
+end
+
+def fun_l24_n764()
+ fun_l25_n260
+end
+
+def fun_l24_n765()
+ fun_l25_n247
+end
+
+def fun_l24_n766()
+ fun_l25_n750
+end
+
+def fun_l24_n767()
+ fun_l25_n236
+end
+
+def fun_l24_n768()
+ fun_l25_n956
+end
+
+def fun_l24_n769()
+ fun_l25_n736
+end
+
+def fun_l24_n770()
+ fun_l25_n510
+end
+
+def fun_l24_n771()
+ fun_l25_n101
+end
+
+def fun_l24_n772()
+ fun_l25_n189
+end
+
+def fun_l24_n773()
+ fun_l25_n391
+end
+
+def fun_l24_n774()
+ fun_l25_n212
+end
+
+def fun_l24_n775()
+ fun_l25_n500
+end
+
+def fun_l24_n776()
+ fun_l25_n95
+end
+
+def fun_l24_n777()
+ fun_l25_n30
+end
+
+def fun_l24_n778()
+ fun_l25_n99
+end
+
+def fun_l24_n779()
+ fun_l25_n427
+end
+
+def fun_l24_n780()
+ fun_l25_n659
+end
+
+def fun_l24_n781()
+ fun_l25_n665
+end
+
+def fun_l24_n782()
+ fun_l25_n992
+end
+
+def fun_l24_n783()
+ fun_l25_n180
+end
+
+def fun_l24_n784()
+ fun_l25_n546
+end
+
+def fun_l24_n785()
+ fun_l25_n618
+end
+
+def fun_l24_n786()
+ fun_l25_n615
+end
+
+def fun_l24_n787()
+ fun_l25_n126
+end
+
+def fun_l24_n788()
+ fun_l25_n383
+end
+
+def fun_l24_n789()
+ fun_l25_n429
+end
+
+def fun_l24_n790()
+ fun_l25_n95
+end
+
+def fun_l24_n791()
+ fun_l25_n47
+end
+
+def fun_l24_n792()
+ fun_l25_n582
+end
+
+def fun_l24_n793()
+ fun_l25_n209
+end
+
+def fun_l24_n794()
+ fun_l25_n925
+end
+
+def fun_l24_n795()
+ fun_l25_n746
+end
+
+def fun_l24_n796()
+ fun_l25_n330
+end
+
+def fun_l24_n797()
+ fun_l25_n964
+end
+
+def fun_l24_n798()
+ fun_l25_n241
+end
+
+def fun_l24_n799()
+ fun_l25_n136
+end
+
+def fun_l24_n800()
+ fun_l25_n10
+end
+
+def fun_l24_n801()
+ fun_l25_n255
+end
+
+def fun_l24_n802()
+ fun_l25_n481
+end
+
+def fun_l24_n803()
+ fun_l25_n697
+end
+
+def fun_l24_n804()
+ fun_l25_n275
+end
+
+def fun_l24_n805()
+ fun_l25_n389
+end
+
+def fun_l24_n806()
+ fun_l25_n540
+end
+
+def fun_l24_n807()
+ fun_l25_n182
+end
+
+def fun_l24_n808()
+ fun_l25_n894
+end
+
+def fun_l24_n809()
+ fun_l25_n339
+end
+
+def fun_l24_n810()
+ fun_l25_n409
+end
+
+def fun_l24_n811()
+ fun_l25_n106
+end
+
+def fun_l24_n812()
+ fun_l25_n297
+end
+
+def fun_l24_n813()
+ fun_l25_n477
+end
+
+def fun_l24_n814()
+ fun_l25_n431
+end
+
+def fun_l24_n815()
+ fun_l25_n507
+end
+
+def fun_l24_n816()
+ fun_l25_n311
+end
+
+def fun_l24_n817()
+ fun_l25_n350
+end
+
+def fun_l24_n818()
+ fun_l25_n486
+end
+
+def fun_l24_n819()
+ fun_l25_n872
+end
+
+def fun_l24_n820()
+ fun_l25_n21
+end
+
+def fun_l24_n821()
+ fun_l25_n108
+end
+
+def fun_l24_n822()
+ fun_l25_n383
+end
+
+def fun_l24_n823()
+ fun_l25_n389
+end
+
+def fun_l24_n824()
+ fun_l25_n901
+end
+
+def fun_l24_n825()
+ fun_l25_n94
+end
+
+def fun_l24_n826()
+ fun_l25_n122
+end
+
+def fun_l24_n827()
+ fun_l25_n399
+end
+
+def fun_l24_n828()
+ fun_l25_n424
+end
+
+def fun_l24_n829()
+ fun_l25_n59
+end
+
+def fun_l24_n830()
+ fun_l25_n477
+end
+
+def fun_l24_n831()
+ fun_l25_n766
+end
+
+def fun_l24_n832()
+ fun_l25_n340
+end
+
+def fun_l24_n833()
+ fun_l25_n925
+end
+
+def fun_l24_n834()
+ fun_l25_n993
+end
+
+def fun_l24_n835()
+ fun_l25_n444
+end
+
+def fun_l24_n836()
+ fun_l25_n580
+end
+
+def fun_l24_n837()
+ fun_l25_n997
+end
+
+def fun_l24_n838()
+ fun_l25_n651
+end
+
+def fun_l24_n839()
+ fun_l25_n991
+end
+
+def fun_l24_n840()
+ fun_l25_n850
+end
+
+def fun_l24_n841()
+ fun_l25_n563
+end
+
+def fun_l24_n842()
+ fun_l25_n175
+end
+
+def fun_l24_n843()
+ fun_l25_n77
+end
+
+def fun_l24_n844()
+ fun_l25_n300
+end
+
+def fun_l24_n845()
+ fun_l25_n510
+end
+
+def fun_l24_n846()
+ fun_l25_n871
+end
+
+def fun_l24_n847()
+ fun_l25_n437
+end
+
+def fun_l24_n848()
+ fun_l25_n609
+end
+
+def fun_l24_n849()
+ fun_l25_n505
+end
+
+def fun_l24_n850()
+ fun_l25_n989
+end
+
+def fun_l24_n851()
+ fun_l25_n595
+end
+
+def fun_l24_n852()
+ fun_l25_n917
+end
+
+def fun_l24_n853()
+ fun_l25_n39
+end
+
+def fun_l24_n854()
+ fun_l25_n795
+end
+
+def fun_l24_n855()
+ fun_l25_n242
+end
+
+def fun_l24_n856()
+ fun_l25_n220
+end
+
+def fun_l24_n857()
+ fun_l25_n537
+end
+
+def fun_l24_n858()
+ fun_l25_n790
+end
+
+def fun_l24_n859()
+ fun_l25_n160
+end
+
+def fun_l24_n860()
+ fun_l25_n685
+end
+
+def fun_l24_n861()
+ fun_l25_n665
+end
+
+def fun_l24_n862()
+ fun_l25_n448
+end
+
+def fun_l24_n863()
+ fun_l25_n75
+end
+
+def fun_l24_n864()
+ fun_l25_n293
+end
+
+def fun_l24_n865()
+ fun_l25_n721
+end
+
+def fun_l24_n866()
+ fun_l25_n113
+end
+
+def fun_l24_n867()
+ fun_l25_n565
+end
+
+def fun_l24_n868()
+ fun_l25_n95
+end
+
+def fun_l24_n869()
+ fun_l25_n373
+end
+
+def fun_l24_n870()
+ fun_l25_n351
+end
+
+def fun_l24_n871()
+ fun_l25_n151
+end
+
+def fun_l24_n872()
+ fun_l25_n489
+end
+
+def fun_l24_n873()
+ fun_l25_n882
+end
+
+def fun_l24_n874()
+ fun_l25_n415
+end
+
+def fun_l24_n875()
+ fun_l25_n237
+end
+
+def fun_l24_n876()
+ fun_l25_n59
+end
+
+def fun_l24_n877()
+ fun_l25_n747
+end
+
+def fun_l24_n878()
+ fun_l25_n897
+end
+
+def fun_l24_n879()
+ fun_l25_n746
+end
+
+def fun_l24_n880()
+ fun_l25_n695
+end
+
+def fun_l24_n881()
+ fun_l25_n924
+end
+
+def fun_l24_n882()
+ fun_l25_n933
+end
+
+def fun_l24_n883()
+ fun_l25_n702
+end
+
+def fun_l24_n884()
+ fun_l25_n107
+end
+
+def fun_l24_n885()
+ fun_l25_n333
+end
+
+def fun_l24_n886()
+ fun_l25_n536
+end
+
+def fun_l24_n887()
+ fun_l25_n908
+end
+
+def fun_l24_n888()
+ fun_l25_n84
+end
+
+def fun_l24_n889()
+ fun_l25_n622
+end
+
+def fun_l24_n890()
+ fun_l25_n466
+end
+
+def fun_l24_n891()
+ fun_l25_n344
+end
+
+def fun_l24_n892()
+ fun_l25_n271
+end
+
+def fun_l24_n893()
+ fun_l25_n461
+end
+
+def fun_l24_n894()
+ fun_l25_n297
+end
+
+def fun_l24_n895()
+ fun_l25_n415
+end
+
+def fun_l24_n896()
+ fun_l25_n419
+end
+
+def fun_l24_n897()
+ fun_l25_n374
+end
+
+def fun_l24_n898()
+ fun_l25_n976
+end
+
+def fun_l24_n899()
+ fun_l25_n888
+end
+
+def fun_l24_n900()
+ fun_l25_n540
+end
+
+def fun_l24_n901()
+ fun_l25_n491
+end
+
+def fun_l24_n902()
+ fun_l25_n178
+end
+
+def fun_l24_n903()
+ fun_l25_n197
+end
+
+def fun_l24_n904()
+ fun_l25_n474
+end
+
+def fun_l24_n905()
+ fun_l25_n371
+end
+
+def fun_l24_n906()
+ fun_l25_n960
+end
+
+def fun_l24_n907()
+ fun_l25_n808
+end
+
+def fun_l24_n908()
+ fun_l25_n89
+end
+
+def fun_l24_n909()
+ fun_l25_n892
+end
+
+def fun_l24_n910()
+ fun_l25_n457
+end
+
+def fun_l24_n911()
+ fun_l25_n105
+end
+
+def fun_l24_n912()
+ fun_l25_n787
+end
+
+def fun_l24_n913()
+ fun_l25_n554
+end
+
+def fun_l24_n914()
+ fun_l25_n615
+end
+
+def fun_l24_n915()
+ fun_l25_n61
+end
+
+def fun_l24_n916()
+ fun_l25_n162
+end
+
+def fun_l24_n917()
+ fun_l25_n354
+end
+
+def fun_l24_n918()
+ fun_l25_n388
+end
+
+def fun_l24_n919()
+ fun_l25_n660
+end
+
+def fun_l24_n920()
+ fun_l25_n705
+end
+
+def fun_l24_n921()
+ fun_l25_n990
+end
+
+def fun_l24_n922()
+ fun_l25_n725
+end
+
+def fun_l24_n923()
+ fun_l25_n800
+end
+
+def fun_l24_n924()
+ fun_l25_n368
+end
+
+def fun_l24_n925()
+ fun_l25_n986
+end
+
+def fun_l24_n926()
+ fun_l25_n509
+end
+
+def fun_l24_n927()
+ fun_l25_n706
+end
+
+def fun_l24_n928()
+ fun_l25_n777
+end
+
+def fun_l24_n929()
+ fun_l25_n223
+end
+
+def fun_l24_n930()
+ fun_l25_n972
+end
+
+def fun_l24_n931()
+ fun_l25_n868
+end
+
+def fun_l24_n932()
+ fun_l25_n170
+end
+
+def fun_l24_n933()
+ fun_l25_n176
+end
+
+def fun_l24_n934()
+ fun_l25_n667
+end
+
+def fun_l24_n935()
+ fun_l25_n312
+end
+
+def fun_l24_n936()
+ fun_l25_n680
+end
+
+def fun_l24_n937()
+ fun_l25_n183
+end
+
+def fun_l24_n938()
+ fun_l25_n880
+end
+
+def fun_l24_n939()
+ fun_l25_n634
+end
+
+def fun_l24_n940()
+ fun_l25_n716
+end
+
+def fun_l24_n941()
+ fun_l25_n16
+end
+
+def fun_l24_n942()
+ fun_l25_n227
+end
+
+def fun_l24_n943()
+ fun_l25_n423
+end
+
+def fun_l24_n944()
+ fun_l25_n268
+end
+
+def fun_l24_n945()
+ fun_l25_n947
+end
+
+def fun_l24_n946()
+ fun_l25_n675
+end
+
+def fun_l24_n947()
+ fun_l25_n575
+end
+
+def fun_l24_n948()
+ fun_l25_n280
+end
+
+def fun_l24_n949()
+ fun_l25_n698
+end
+
+def fun_l24_n950()
+ fun_l25_n769
+end
+
+def fun_l24_n951()
+ fun_l25_n225
+end
+
+def fun_l24_n952()
+ fun_l25_n171
+end
+
+def fun_l24_n953()
+ fun_l25_n464
+end
+
+def fun_l24_n954()
+ fun_l25_n662
+end
+
+def fun_l24_n955()
+ fun_l25_n621
+end
+
+def fun_l24_n956()
+ fun_l25_n391
+end
+
+def fun_l24_n957()
+ fun_l25_n340
+end
+
+def fun_l24_n958()
+ fun_l25_n634
+end
+
+def fun_l24_n959()
+ fun_l25_n31
+end
+
+def fun_l24_n960()
+ fun_l25_n132
+end
+
+def fun_l24_n961()
+ fun_l25_n867
+end
+
+def fun_l24_n962()
+ fun_l25_n946
+end
+
+def fun_l24_n963()
+ fun_l25_n339
+end
+
+def fun_l24_n964()
+ fun_l25_n497
+end
+
+def fun_l24_n965()
+ fun_l25_n289
+end
+
+def fun_l24_n966()
+ fun_l25_n842
+end
+
+def fun_l24_n967()
+ fun_l25_n583
+end
+
+def fun_l24_n968()
+ fun_l25_n52
+end
+
+def fun_l24_n969()
+ fun_l25_n177
+end
+
+def fun_l24_n970()
+ fun_l25_n935
+end
+
+def fun_l24_n971()
+ fun_l25_n963
+end
+
+def fun_l24_n972()
+ fun_l25_n779
+end
+
+def fun_l24_n973()
+ fun_l25_n457
+end
+
+def fun_l24_n974()
+ fun_l25_n480
+end
+
+def fun_l24_n975()
+ fun_l25_n333
+end
+
+def fun_l24_n976()
+ fun_l25_n191
+end
+
+def fun_l24_n977()
+ fun_l25_n670
+end
+
+def fun_l24_n978()
+ fun_l25_n822
+end
+
+def fun_l24_n979()
+ fun_l25_n302
+end
+
+def fun_l24_n980()
+ fun_l25_n272
+end
+
+def fun_l24_n981()
+ fun_l25_n467
+end
+
+def fun_l24_n982()
+ fun_l25_n209
+end
+
+def fun_l24_n983()
+ fun_l25_n603
+end
+
+def fun_l24_n984()
+ fun_l25_n134
+end
+
+def fun_l24_n985()
+ fun_l25_n639
+end
+
+def fun_l24_n986()
+ fun_l25_n843
+end
+
+def fun_l24_n987()
+ fun_l25_n576
+end
+
+def fun_l24_n988()
+ fun_l25_n7
+end
+
+def fun_l24_n989()
+ fun_l25_n93
+end
+
+def fun_l24_n990()
+ fun_l25_n351
+end
+
+def fun_l24_n991()
+ fun_l25_n932
+end
+
+def fun_l24_n992()
+ fun_l25_n987
+end
+
+def fun_l24_n993()
+ fun_l25_n796
+end
+
+def fun_l24_n994()
+ fun_l25_n202
+end
+
+def fun_l24_n995()
+ fun_l25_n125
+end
+
+def fun_l24_n996()
+ fun_l25_n404
+end
+
+def fun_l24_n997()
+ fun_l25_n750
+end
+
+def fun_l24_n998()
+ fun_l25_n50
+end
+
+def fun_l24_n999()
+ fun_l25_n71
+end
+
+def fun_l25_n0()
+ fun_l26_n73
+end
+
+def fun_l25_n1()
+ fun_l26_n572
+end
+
+def fun_l25_n2()
+ fun_l26_n639
+end
+
+def fun_l25_n3()
+ fun_l26_n292
+end
+
+def fun_l25_n4()
+ fun_l26_n865
+end
+
+def fun_l25_n5()
+ fun_l26_n618
+end
+
+def fun_l25_n6()
+ fun_l26_n84
+end
+
+def fun_l25_n7()
+ fun_l26_n351
+end
+
+def fun_l25_n8()
+ fun_l26_n534
+end
+
+def fun_l25_n9()
+ fun_l26_n483
+end
+
+def fun_l25_n10()
+ fun_l26_n589
+end
+
+def fun_l25_n11()
+ fun_l26_n450
+end
+
+def fun_l25_n12()
+ fun_l26_n948
+end
+
+def fun_l25_n13()
+ fun_l26_n819
+end
+
+def fun_l25_n14()
+ fun_l26_n845
+end
+
+def fun_l25_n15()
+ fun_l26_n544
+end
+
+def fun_l25_n16()
+ fun_l26_n254
+end
+
+def fun_l25_n17()
+ fun_l26_n71
+end
+
+def fun_l25_n18()
+ fun_l26_n640
+end
+
+def fun_l25_n19()
+ fun_l26_n885
+end
+
+def fun_l25_n20()
+ fun_l26_n725
+end
+
+def fun_l25_n21()
+ fun_l26_n798
+end
+
+def fun_l25_n22()
+ fun_l26_n838
+end
+
+def fun_l25_n23()
+ fun_l26_n835
+end
+
+def fun_l25_n24()
+ fun_l26_n170
+end
+
+def fun_l25_n25()
+ fun_l26_n3
+end
+
+def fun_l25_n26()
+ fun_l26_n910
+end
+
+def fun_l25_n27()
+ fun_l26_n575
+end
+
+def fun_l25_n28()
+ fun_l26_n834
+end
+
+def fun_l25_n29()
+ fun_l26_n767
+end
+
+def fun_l25_n30()
+ fun_l26_n375
+end
+
+def fun_l25_n31()
+ fun_l26_n781
+end
+
+def fun_l25_n32()
+ fun_l26_n173
+end
+
+def fun_l25_n33()
+ fun_l26_n382
+end
+
+def fun_l25_n34()
+ fun_l26_n974
+end
+
+def fun_l25_n35()
+ fun_l26_n14
+end
+
+def fun_l25_n36()
+ fun_l26_n730
+end
+
+def fun_l25_n37()
+ fun_l26_n253
+end
+
+def fun_l25_n38()
+ fun_l26_n405
+end
+
+def fun_l25_n39()
+ fun_l26_n903
+end
+
+def fun_l25_n40()
+ fun_l26_n621
+end
+
+def fun_l25_n41()
+ fun_l26_n309
+end
+
+def fun_l25_n42()
+ fun_l26_n572
+end
+
+def fun_l25_n43()
+ fun_l26_n857
+end
+
+def fun_l25_n44()
+ fun_l26_n769
+end
+
+def fun_l25_n45()
+ fun_l26_n371
+end
+
+def fun_l25_n46()
+ fun_l26_n866
+end
+
+def fun_l25_n47()
+ fun_l26_n279
+end
+
+def fun_l25_n48()
+ fun_l26_n360
+end
+
+def fun_l25_n49()
+ fun_l26_n80
+end
+
+def fun_l25_n50()
+ fun_l26_n101
+end
+
+def fun_l25_n51()
+ fun_l26_n32
+end
+
+def fun_l25_n52()
+ fun_l26_n815
+end
+
+def fun_l25_n53()
+ fun_l26_n599
+end
+
+def fun_l25_n54()
+ fun_l26_n999
+end
+
+def fun_l25_n55()
+ fun_l26_n264
+end
+
+def fun_l25_n56()
+ fun_l26_n941
+end
+
+def fun_l25_n57()
+ fun_l26_n735
+end
+
+def fun_l25_n58()
+ fun_l26_n563
+end
+
+def fun_l25_n59()
+ fun_l26_n439
+end
+
+def fun_l25_n60()
+ fun_l26_n326
+end
+
+def fun_l25_n61()
+ fun_l26_n577
+end
+
+def fun_l25_n62()
+ fun_l26_n174
+end
+
+def fun_l25_n63()
+ fun_l26_n839
+end
+
+def fun_l25_n64()
+ fun_l26_n238
+end
+
+def fun_l25_n65()
+ fun_l26_n953
+end
+
+def fun_l25_n66()
+ fun_l26_n940
+end
+
+def fun_l25_n67()
+ fun_l26_n349
+end
+
+def fun_l25_n68()
+ fun_l26_n675
+end
+
+def fun_l25_n69()
+ fun_l26_n376
+end
+
+def fun_l25_n70()
+ fun_l26_n653
+end
+
+def fun_l25_n71()
+ fun_l26_n377
+end
+
+def fun_l25_n72()
+ fun_l26_n977
+end
+
+def fun_l25_n73()
+ fun_l26_n487
+end
+
+def fun_l25_n74()
+ fun_l26_n722
+end
+
+def fun_l25_n75()
+ fun_l26_n18
+end
+
+def fun_l25_n76()
+ fun_l26_n539
+end
+
+def fun_l25_n77()
+ fun_l26_n825
+end
+
+def fun_l25_n78()
+ fun_l26_n990
+end
+
+def fun_l25_n79()
+ fun_l26_n554
+end
+
+def fun_l25_n80()
+ fun_l26_n715
+end
+
+def fun_l25_n81()
+ fun_l26_n67
+end
+
+def fun_l25_n82()
+ fun_l26_n143
+end
+
+def fun_l25_n83()
+ fun_l26_n99
+end
+
+def fun_l25_n84()
+ fun_l26_n703
+end
+
+def fun_l25_n85()
+ fun_l26_n277
+end
+
+def fun_l25_n86()
+ fun_l26_n283
+end
+
+def fun_l25_n87()
+ fun_l26_n74
+end
+
+def fun_l25_n88()
+ fun_l26_n680
+end
+
+def fun_l25_n89()
+ fun_l26_n269
+end
+
+def fun_l25_n90()
+ fun_l26_n255
+end
+
+def fun_l25_n91()
+ fun_l26_n974
+end
+
+def fun_l25_n92()
+ fun_l26_n109
+end
+
+def fun_l25_n93()
+ fun_l26_n672
+end
+
+def fun_l25_n94()
+ fun_l26_n418
+end
+
+def fun_l25_n95()
+ fun_l26_n75
+end
+
+def fun_l25_n96()
+ fun_l26_n500
+end
+
+def fun_l25_n97()
+ fun_l26_n286
+end
+
+def fun_l25_n98()
+ fun_l26_n890
+end
+
+def fun_l25_n99()
+ fun_l26_n161
+end
+
+def fun_l25_n100()
+ fun_l26_n16
+end
+
+def fun_l25_n101()
+ fun_l26_n742
+end
+
+def fun_l25_n102()
+ fun_l26_n592
+end
+
+def fun_l25_n103()
+ fun_l26_n600
+end
+
+def fun_l25_n104()
+ fun_l26_n665
+end
+
+def fun_l25_n105()
+ fun_l26_n721
+end
+
+def fun_l25_n106()
+ fun_l26_n461
+end
+
+def fun_l25_n107()
+ fun_l26_n818
+end
+
+def fun_l25_n108()
+ fun_l26_n132
+end
+
+def fun_l25_n109()
+ fun_l26_n245
+end
+
+def fun_l25_n110()
+ fun_l26_n511
+end
+
+def fun_l25_n111()
+ fun_l26_n386
+end
+
+def fun_l25_n112()
+ fun_l26_n77
+end
+
+def fun_l25_n113()
+ fun_l26_n329
+end
+
+def fun_l25_n114()
+ fun_l26_n157
+end
+
+def fun_l25_n115()
+ fun_l26_n220
+end
+
+def fun_l25_n116()
+ fun_l26_n880
+end
+
+def fun_l25_n117()
+ fun_l26_n799
+end
+
+def fun_l25_n118()
+ fun_l26_n879
+end
+
+def fun_l25_n119()
+ fun_l26_n639
+end
+
+def fun_l25_n120()
+ fun_l26_n257
+end
+
+def fun_l25_n121()
+ fun_l26_n921
+end
+
+def fun_l25_n122()
+ fun_l26_n115
+end
+
+def fun_l25_n123()
+ fun_l26_n569
+end
+
+def fun_l25_n124()
+ fun_l26_n504
+end
+
+def fun_l25_n125()
+ fun_l26_n962
+end
+
+def fun_l25_n126()
+ fun_l26_n854
+end
+
+def fun_l25_n127()
+ fun_l26_n619
+end
+
+def fun_l25_n128()
+ fun_l26_n657
+end
+
+def fun_l25_n129()
+ fun_l26_n389
+end
+
+def fun_l25_n130()
+ fun_l26_n515
+end
+
+def fun_l25_n131()
+ fun_l26_n253
+end
+
+def fun_l25_n132()
+ fun_l26_n311
+end
+
+def fun_l25_n133()
+ fun_l26_n587
+end
+
+def fun_l25_n134()
+ fun_l26_n802
+end
+
+def fun_l25_n135()
+ fun_l26_n29
+end
+
+def fun_l25_n136()
+ fun_l26_n324
+end
+
+def fun_l25_n137()
+ fun_l26_n892
+end
+
+def fun_l25_n138()
+ fun_l26_n871
+end
+
+def fun_l25_n139()
+ fun_l26_n748
+end
+
+def fun_l25_n140()
+ fun_l26_n7
+end
+
+def fun_l25_n141()
+ fun_l26_n77
+end
+
+def fun_l25_n142()
+ fun_l26_n948
+end
+
+def fun_l25_n143()
+ fun_l26_n624
+end
+
+def fun_l25_n144()
+ fun_l26_n908
+end
+
+def fun_l25_n145()
+ fun_l26_n362
+end
+
+def fun_l25_n146()
+ fun_l26_n653
+end
+
+def fun_l25_n147()
+ fun_l26_n806
+end
+
+def fun_l25_n148()
+ fun_l26_n959
+end
+
+def fun_l25_n149()
+ fun_l26_n677
+end
+
+def fun_l25_n150()
+ fun_l26_n697
+end
+
+def fun_l25_n151()
+ fun_l26_n12
+end
+
+def fun_l25_n152()
+ fun_l26_n67
+end
+
+def fun_l25_n153()
+ fun_l26_n451
+end
+
+def fun_l25_n154()
+ fun_l26_n887
+end
+
+def fun_l25_n155()
+ fun_l26_n908
+end
+
+def fun_l25_n156()
+ fun_l26_n382
+end
+
+def fun_l25_n157()
+ fun_l26_n977
+end
+
+def fun_l25_n158()
+ fun_l26_n62
+end
+
+def fun_l25_n159()
+ fun_l26_n307
+end
+
+def fun_l25_n160()
+ fun_l26_n583
+end
+
+def fun_l25_n161()
+ fun_l26_n291
+end
+
+def fun_l25_n162()
+ fun_l26_n736
+end
+
+def fun_l25_n163()
+ fun_l26_n954
+end
+
+def fun_l25_n164()
+ fun_l26_n414
+end
+
+def fun_l25_n165()
+ fun_l26_n945
+end
+
+def fun_l25_n166()
+ fun_l26_n947
+end
+
+def fun_l25_n167()
+ fun_l26_n639
+end
+
+def fun_l25_n168()
+ fun_l26_n875
+end
+
+def fun_l25_n169()
+ fun_l26_n994
+end
+
+def fun_l25_n170()
+ fun_l26_n855
+end
+
+def fun_l25_n171()
+ fun_l26_n539
+end
+
+def fun_l25_n172()
+ fun_l26_n108
+end
+
+def fun_l25_n173()
+ fun_l26_n806
+end
+
+def fun_l25_n174()
+ fun_l26_n838
+end
+
+def fun_l25_n175()
+ fun_l26_n688
+end
+
+def fun_l25_n176()
+ fun_l26_n696
+end
+
+def fun_l25_n177()
+ fun_l26_n979
+end
+
+def fun_l25_n178()
+ fun_l26_n261
+end
+
+def fun_l25_n179()
+ fun_l26_n266
+end
+
+def fun_l25_n180()
+ fun_l26_n907
+end
+
+def fun_l25_n181()
+ fun_l26_n622
+end
+
+def fun_l25_n182()
+ fun_l26_n42
+end
+
+def fun_l25_n183()
+ fun_l26_n840
+end
+
+def fun_l25_n184()
+ fun_l26_n125
+end
+
+def fun_l25_n185()
+ fun_l26_n402
+end
+
+def fun_l25_n186()
+ fun_l26_n401
+end
+
+def fun_l25_n187()
+ fun_l26_n410
+end
+
+def fun_l25_n188()
+ fun_l26_n552
+end
+
+def fun_l25_n189()
+ fun_l26_n528
+end
+
+def fun_l25_n190()
+ fun_l26_n171
+end
+
+def fun_l25_n191()
+ fun_l26_n787
+end
+
+def fun_l25_n192()
+ fun_l26_n453
+end
+
+def fun_l25_n193()
+ fun_l26_n107
+end
+
+def fun_l25_n194()
+ fun_l26_n171
+end
+
+def fun_l25_n195()
+ fun_l26_n159
+end
+
+def fun_l25_n196()
+ fun_l26_n801
+end
+
+def fun_l25_n197()
+ fun_l26_n569
+end
+
+def fun_l25_n198()
+ fun_l26_n899
+end
+
+def fun_l25_n199()
+ fun_l26_n434
+end
+
+def fun_l25_n200()
+ fun_l26_n943
+end
+
+def fun_l25_n201()
+ fun_l26_n455
+end
+
+def fun_l25_n202()
+ fun_l26_n239
+end
+
+def fun_l25_n203()
+ fun_l26_n892
+end
+
+def fun_l25_n204()
+ fun_l26_n332
+end
+
+def fun_l25_n205()
+ fun_l26_n95
+end
+
+def fun_l25_n206()
+ fun_l26_n735
+end
+
+def fun_l25_n207()
+ fun_l26_n517
+end
+
+def fun_l25_n208()
+ fun_l26_n41
+end
+
+def fun_l25_n209()
+ fun_l26_n827
+end
+
+def fun_l25_n210()
+ fun_l26_n557
+end
+
+def fun_l25_n211()
+ fun_l26_n184
+end
+
+def fun_l25_n212()
+ fun_l26_n123
+end
+
+def fun_l25_n213()
+ fun_l26_n476
+end
+
+def fun_l25_n214()
+ fun_l26_n346
+end
+
+def fun_l25_n215()
+ fun_l26_n720
+end
+
+def fun_l25_n216()
+ fun_l26_n905
+end
+
+def fun_l25_n217()
+ fun_l26_n911
+end
+
+def fun_l25_n218()
+ fun_l26_n317
+end
+
+def fun_l25_n219()
+ fun_l26_n930
+end
+
+def fun_l25_n220()
+ fun_l26_n539
+end
+
+def fun_l25_n221()
+ fun_l26_n173
+end
+
+def fun_l25_n222()
+ fun_l26_n441
+end
+
+def fun_l25_n223()
+ fun_l26_n345
+end
+
+def fun_l25_n224()
+ fun_l26_n463
+end
+
+def fun_l25_n225()
+ fun_l26_n568
+end
+
+def fun_l25_n226()
+ fun_l26_n783
+end
+
+def fun_l25_n227()
+ fun_l26_n359
+end
+
+def fun_l25_n228()
+ fun_l26_n523
+end
+
+def fun_l25_n229()
+ fun_l26_n895
+end
+
+def fun_l25_n230()
+ fun_l26_n159
+end
+
+def fun_l25_n231()
+ fun_l26_n259
+end
+
+def fun_l25_n232()
+ fun_l26_n373
+end
+
+def fun_l25_n233()
+ fun_l26_n471
+end
+
+def fun_l25_n234()
+ fun_l26_n448
+end
+
+def fun_l25_n235()
+ fun_l26_n139
+end
+
+def fun_l25_n236()
+ fun_l26_n795
+end
+
+def fun_l25_n237()
+ fun_l26_n492
+end
+
+def fun_l25_n238()
+ fun_l26_n292
+end
+
+def fun_l25_n239()
+ fun_l26_n253
+end
+
+def fun_l25_n240()
+ fun_l26_n870
+end
+
+def fun_l25_n241()
+ fun_l26_n504
+end
+
+def fun_l25_n242()
+ fun_l26_n315
+end
+
+def fun_l25_n243()
+ fun_l26_n542
+end
+
+def fun_l25_n244()
+ fun_l26_n368
+end
+
+def fun_l25_n245()
+ fun_l26_n954
+end
+
+def fun_l25_n246()
+ fun_l26_n589
+end
+
+def fun_l25_n247()
+ fun_l26_n102
+end
+
+def fun_l25_n248()
+ fun_l26_n839
+end
+
+def fun_l25_n249()
+ fun_l26_n493
+end
+
+def fun_l25_n250()
+ fun_l26_n90
+end
+
+def fun_l25_n251()
+ fun_l26_n974
+end
+
+def fun_l25_n252()
+ fun_l26_n878
+end
+
+def fun_l25_n253()
+ fun_l26_n205
+end
+
+def fun_l25_n254()
+ fun_l26_n485
+end
+
+def fun_l25_n255()
+ fun_l26_n976
+end
+
+def fun_l25_n256()
+ fun_l26_n397
+end
+
+def fun_l25_n257()
+ fun_l26_n593
+end
+
+def fun_l25_n258()
+ fun_l26_n925
+end
+
+def fun_l25_n259()
+ fun_l26_n223
+end
+
+def fun_l25_n260()
+ fun_l26_n491
+end
+
+def fun_l25_n261()
+ fun_l26_n441
+end
+
+def fun_l25_n262()
+ fun_l26_n472
+end
+
+def fun_l25_n263()
+ fun_l26_n357
+end
+
+def fun_l25_n264()
+ fun_l26_n90
+end
+
+def fun_l25_n265()
+ fun_l26_n124
+end
+
+def fun_l25_n266()
+ fun_l26_n607
+end
+
+def fun_l25_n267()
+ fun_l26_n484
+end
+
+def fun_l25_n268()
+ fun_l26_n448
+end
+
+def fun_l25_n269()
+ fun_l26_n456
+end
+
+def fun_l25_n270()
+ fun_l26_n108
+end
+
+def fun_l25_n271()
+ fun_l26_n268
+end
+
+def fun_l25_n272()
+ fun_l26_n250
+end
+
+def fun_l25_n273()
+ fun_l26_n354
+end
+
+def fun_l25_n274()
+ fun_l26_n234
+end
+
+def fun_l25_n275()
+ fun_l26_n833
+end
+
+def fun_l25_n276()
+ fun_l26_n404
+end
+
+def fun_l25_n277()
+ fun_l26_n296
+end
+
+def fun_l25_n278()
+ fun_l26_n640
+end
+
+def fun_l25_n279()
+ fun_l26_n633
+end
+
+def fun_l25_n280()
+ fun_l26_n119
+end
+
+def fun_l25_n281()
+ fun_l26_n272
+end
+
+def fun_l25_n282()
+ fun_l26_n4
+end
+
+def fun_l25_n283()
+ fun_l26_n217
+end
+
+def fun_l25_n284()
+ fun_l26_n923
+end
+
+def fun_l25_n285()
+ fun_l26_n911
+end
+
+def fun_l25_n286()
+ fun_l26_n332
+end
+
+def fun_l25_n287()
+ fun_l26_n83
+end
+
+def fun_l25_n288()
+ fun_l26_n396
+end
+
+def fun_l25_n289()
+ fun_l26_n423
+end
+
+def fun_l25_n290()
+ fun_l26_n182
+end
+
+def fun_l25_n291()
+ fun_l26_n69
+end
+
+def fun_l25_n292()
+ fun_l26_n348
+end
+
+def fun_l25_n293()
+ fun_l26_n85
+end
+
+def fun_l25_n294()
+ fun_l26_n727
+end
+
+def fun_l25_n295()
+ fun_l26_n488
+end
+
+def fun_l25_n296()
+ fun_l26_n629
+end
+
+def fun_l25_n297()
+ fun_l26_n92
+end
+
+def fun_l25_n298()
+ fun_l26_n737
+end
+
+def fun_l25_n299()
+ fun_l26_n68
+end
+
+def fun_l25_n300()
+ fun_l26_n148
+end
+
+def fun_l25_n301()
+ fun_l26_n292
+end
+
+def fun_l25_n302()
+ fun_l26_n836
+end
+
+def fun_l25_n303()
+ fun_l26_n992
+end
+
+def fun_l25_n304()
+ fun_l26_n894
+end
+
+def fun_l25_n305()
+ fun_l26_n850
+end
+
+def fun_l25_n306()
+ fun_l26_n63
+end
+
+def fun_l25_n307()
+ fun_l26_n321
+end
+
+def fun_l25_n308()
+ fun_l26_n497
+end
+
+def fun_l25_n309()
+ fun_l26_n757
+end
+
+def fun_l25_n310()
+ fun_l26_n331
+end
+
+def fun_l25_n311()
+ fun_l26_n522
+end
+
+def fun_l25_n312()
+ fun_l26_n815
+end
+
+def fun_l25_n313()
+ fun_l26_n545
+end
+
+def fun_l25_n314()
+ fun_l26_n78
+end
+
+def fun_l25_n315()
+ fun_l26_n474
+end
+
+def fun_l25_n316()
+ fun_l26_n329
+end
+
+def fun_l25_n317()
+ fun_l26_n19
+end
+
+def fun_l25_n318()
+ fun_l26_n85
+end
+
+def fun_l25_n319()
+ fun_l26_n548
+end
+
+def fun_l25_n320()
+ fun_l26_n435
+end
+
+def fun_l25_n321()
+ fun_l26_n607
+end
+
+def fun_l25_n322()
+ fun_l26_n610
+end
+
+def fun_l25_n323()
+ fun_l26_n218
+end
+
+def fun_l25_n324()
+ fun_l26_n664
+end
+
+def fun_l25_n325()
+ fun_l26_n869
+end
+
+def fun_l25_n326()
+ fun_l26_n110
+end
+
+def fun_l25_n327()
+ fun_l26_n811
+end
+
+def fun_l25_n328()
+ fun_l26_n70
+end
+
+def fun_l25_n329()
+ fun_l26_n852
+end
+
+def fun_l25_n330()
+ fun_l26_n772
+end
+
+def fun_l25_n331()
+ fun_l26_n367
+end
+
+def fun_l25_n332()
+ fun_l26_n34
+end
+
+def fun_l25_n333()
+ fun_l26_n470
+end
+
+def fun_l25_n334()
+ fun_l26_n962
+end
+
+def fun_l25_n335()
+ fun_l26_n957
+end
+
+def fun_l25_n336()
+ fun_l26_n608
+end
+
+def fun_l25_n337()
+ fun_l26_n632
+end
+
+def fun_l25_n338()
+ fun_l26_n960
+end
+
+def fun_l25_n339()
+ fun_l26_n584
+end
+
+def fun_l25_n340()
+ fun_l26_n500
+end
+
+def fun_l25_n341()
+ fun_l26_n317
+end
+
+def fun_l25_n342()
+ fun_l26_n772
+end
+
+def fun_l25_n343()
+ fun_l26_n741
+end
+
+def fun_l25_n344()
+ fun_l26_n584
+end
+
+def fun_l25_n345()
+ fun_l26_n221
+end
+
+def fun_l25_n346()
+ fun_l26_n809
+end
+
+def fun_l25_n347()
+ fun_l26_n28
+end
+
+def fun_l25_n348()
+ fun_l26_n111
+end
+
+def fun_l25_n349()
+ fun_l26_n499
+end
+
+def fun_l25_n350()
+ fun_l26_n35
+end
+
+def fun_l25_n351()
+ fun_l26_n885
+end
+
+def fun_l25_n352()
+ fun_l26_n516
+end
+
+def fun_l25_n353()
+ fun_l26_n394
+end
+
+def fun_l25_n354()
+ fun_l26_n792
+end
+
+def fun_l25_n355()
+ fun_l26_n741
+end
+
+def fun_l25_n356()
+ fun_l26_n851
+end
+
+def fun_l25_n357()
+ fun_l26_n483
+end
+
+def fun_l25_n358()
+ fun_l26_n464
+end
+
+def fun_l25_n359()
+ fun_l26_n886
+end
+
+def fun_l25_n360()
+ fun_l26_n479
+end
+
+def fun_l25_n361()
+ fun_l26_n31
+end
+
+def fun_l25_n362()
+ fun_l26_n154
+end
+
+def fun_l25_n363()
+ fun_l26_n178
+end
+
+def fun_l25_n364()
+ fun_l26_n390
+end
+
+def fun_l25_n365()
+ fun_l26_n597
+end
+
+def fun_l25_n366()
+ fun_l26_n85
+end
+
+def fun_l25_n367()
+ fun_l26_n614
+end
+
+def fun_l25_n368()
+ fun_l26_n796
+end
+
+def fun_l25_n369()
+ fun_l26_n627
+end
+
+def fun_l25_n370()
+ fun_l26_n581
+end
+
+def fun_l25_n371()
+ fun_l26_n63
+end
+
+def fun_l25_n372()
+ fun_l26_n708
+end
+
+def fun_l25_n373()
+ fun_l26_n858
+end
+
+def fun_l25_n374()
+ fun_l26_n143
+end
+
+def fun_l25_n375()
+ fun_l26_n742
+end
+
+def fun_l25_n376()
+ fun_l26_n54
+end
+
+def fun_l25_n377()
+ fun_l26_n299
+end
+
+def fun_l25_n378()
+ fun_l26_n465
+end
+
+def fun_l25_n379()
+ fun_l26_n207
+end
+
+def fun_l25_n380()
+ fun_l26_n3
+end
+
+def fun_l25_n381()
+ fun_l26_n648
+end
+
+def fun_l25_n382()
+ fun_l26_n7
+end
+
+def fun_l25_n383()
+ fun_l26_n586
+end
+
+def fun_l25_n384()
+ fun_l26_n884
+end
+
+def fun_l25_n385()
+ fun_l26_n731
+end
+
+def fun_l25_n386()
+ fun_l26_n60
+end
+
+def fun_l25_n387()
+ fun_l26_n600
+end
+
+def fun_l25_n388()
+ fun_l26_n162
+end
+
+def fun_l25_n389()
+ fun_l26_n229
+end
+
+def fun_l25_n390()
+ fun_l26_n60
+end
+
+def fun_l25_n391()
+ fun_l26_n617
+end
+
+def fun_l25_n392()
+ fun_l26_n823
+end
+
+def fun_l25_n393()
+ fun_l26_n546
+end
+
+def fun_l25_n394()
+ fun_l26_n783
+end
+
+def fun_l25_n395()
+ fun_l26_n616
+end
+
+def fun_l25_n396()
+ fun_l26_n131
+end
+
+def fun_l25_n397()
+ fun_l26_n744
+end
+
+def fun_l25_n398()
+ fun_l26_n344
+end
+
+def fun_l25_n399()
+ fun_l26_n529
+end
+
+def fun_l25_n400()
+ fun_l26_n314
+end
+
+def fun_l25_n401()
+ fun_l26_n571
+end
+
+def fun_l25_n402()
+ fun_l26_n329
+end
+
+def fun_l25_n403()
+ fun_l26_n334
+end
+
+def fun_l25_n404()
+ fun_l26_n232
+end
+
+def fun_l25_n405()
+ fun_l26_n864
+end
+
+def fun_l25_n406()
+ fun_l26_n882
+end
+
+def fun_l25_n407()
+ fun_l26_n153
+end
+
+def fun_l25_n408()
+ fun_l26_n770
+end
+
+def fun_l25_n409()
+ fun_l26_n199
+end
+
+def fun_l25_n410()
+ fun_l26_n799
+end
+
+def fun_l25_n411()
+ fun_l26_n306
+end
+
+def fun_l25_n412()
+ fun_l26_n957
+end
+
+def fun_l25_n413()
+ fun_l26_n519
+end
+
+def fun_l25_n414()
+ fun_l26_n445
+end
+
+def fun_l25_n415()
+ fun_l26_n272
+end
+
+def fun_l25_n416()
+ fun_l26_n119
+end
+
+def fun_l25_n417()
+ fun_l26_n143
+end
+
+def fun_l25_n418()
+ fun_l26_n964
+end
+
+def fun_l25_n419()
+ fun_l26_n574
+end
+
+def fun_l25_n420()
+ fun_l26_n215
+end
+
+def fun_l25_n421()
+ fun_l26_n144
+end
+
+def fun_l25_n422()
+ fun_l26_n345
+end
+
+def fun_l25_n423()
+ fun_l26_n121
+end
+
+def fun_l25_n424()
+ fun_l26_n77
+end
+
+def fun_l25_n425()
+ fun_l26_n112
+end
+
+def fun_l25_n426()
+ fun_l26_n992
+end
+
+def fun_l25_n427()
+ fun_l26_n320
+end
+
+def fun_l25_n428()
+ fun_l26_n980
+end
+
+def fun_l25_n429()
+ fun_l26_n442
+end
+
+def fun_l25_n430()
+ fun_l26_n422
+end
+
+def fun_l25_n431()
+ fun_l26_n164
+end
+
+def fun_l25_n432()
+ fun_l26_n778
+end
+
+def fun_l25_n433()
+ fun_l26_n330
+end
+
+def fun_l25_n434()
+ fun_l26_n535
+end
+
+def fun_l25_n435()
+ fun_l26_n149
+end
+
+def fun_l25_n436()
+ fun_l26_n411
+end
+
+def fun_l25_n437()
+ fun_l26_n465
+end
+
+def fun_l25_n438()
+ fun_l26_n231
+end
+
+def fun_l25_n439()
+ fun_l26_n542
+end
+
+def fun_l25_n440()
+ fun_l26_n720
+end
+
+def fun_l25_n441()
+ fun_l26_n883
+end
+
+def fun_l25_n442()
+ fun_l26_n258
+end
+
+def fun_l25_n443()
+ fun_l26_n633
+end
+
+def fun_l25_n444()
+ fun_l26_n715
+end
+
+def fun_l25_n445()
+ fun_l26_n844
+end
+
+def fun_l25_n446()
+ fun_l26_n837
+end
+
+def fun_l25_n447()
+ fun_l26_n161
+end
+
+def fun_l25_n448()
+ fun_l26_n389
+end
+
+def fun_l25_n449()
+ fun_l26_n246
+end
+
+def fun_l25_n450()
+ fun_l26_n570
+end
+
+def fun_l25_n451()
+ fun_l26_n678
+end
+
+def fun_l25_n452()
+ fun_l26_n243
+end
+
+def fun_l25_n453()
+ fun_l26_n430
+end
+
+def fun_l25_n454()
+ fun_l26_n193
+end
+
+def fun_l25_n455()
+ fun_l26_n666
+end
+
+def fun_l25_n456()
+ fun_l26_n881
+end
+
+def fun_l25_n457()
+ fun_l26_n989
+end
+
+def fun_l25_n458()
+ fun_l26_n450
+end
+
+def fun_l25_n459()
+ fun_l26_n675
+end
+
+def fun_l25_n460()
+ fun_l26_n315
+end
+
+def fun_l25_n461()
+ fun_l26_n40
+end
+
+def fun_l25_n462()
+ fun_l26_n639
+end
+
+def fun_l25_n463()
+ fun_l26_n380
+end
+
+def fun_l25_n464()
+ fun_l26_n680
+end
+
+def fun_l25_n465()
+ fun_l26_n54
+end
+
+def fun_l25_n466()
+ fun_l26_n37
+end
+
+def fun_l25_n467()
+ fun_l26_n910
+end
+
+def fun_l25_n468()
+ fun_l26_n50
+end
+
+def fun_l25_n469()
+ fun_l26_n925
+end
+
+def fun_l25_n470()
+ fun_l26_n385
+end
+
+def fun_l25_n471()
+ fun_l26_n860
+end
+
+def fun_l25_n472()
+ fun_l26_n547
+end
+
+def fun_l25_n473()
+ fun_l26_n31
+end
+
+def fun_l25_n474()
+ fun_l26_n338
+end
+
+def fun_l25_n475()
+ fun_l26_n706
+end
+
+def fun_l25_n476()
+ fun_l26_n81
+end
+
+def fun_l25_n477()
+ fun_l26_n532
+end
+
+def fun_l25_n478()
+ fun_l26_n781
+end
+
+def fun_l25_n479()
+ fun_l26_n588
+end
+
+def fun_l25_n480()
+ fun_l26_n658
+end
+
+def fun_l25_n481()
+ fun_l26_n344
+end
+
+def fun_l25_n482()
+ fun_l26_n914
+end
+
+def fun_l25_n483()
+ fun_l26_n319
+end
+
+def fun_l25_n484()
+ fun_l26_n138
+end
+
+def fun_l25_n485()
+ fun_l26_n927
+end
+
+def fun_l25_n486()
+ fun_l26_n409
+end
+
+def fun_l25_n487()
+ fun_l26_n721
+end
+
+def fun_l25_n488()
+ fun_l26_n197
+end
+
+def fun_l25_n489()
+ fun_l26_n654
+end
+
+def fun_l25_n490()
+ fun_l26_n298
+end
+
+def fun_l25_n491()
+ fun_l26_n763
+end
+
+def fun_l25_n492()
+ fun_l26_n729
+end
+
+def fun_l25_n493()
+ fun_l26_n532
+end
+
+def fun_l25_n494()
+ fun_l26_n508
+end
+
+def fun_l25_n495()
+ fun_l26_n725
+end
+
+def fun_l25_n496()
+ fun_l26_n665
+end
+
+def fun_l25_n497()
+ fun_l26_n21
+end
+
+def fun_l25_n498()
+ fun_l26_n314
+end
+
+def fun_l25_n499()
+ fun_l26_n823
+end
+
+def fun_l25_n500()
+ fun_l26_n983
+end
+
+def fun_l25_n501()
+ fun_l26_n477
+end
+
+def fun_l25_n502()
+ fun_l26_n502
+end
+
+def fun_l25_n503()
+ fun_l26_n731
+end
+
+def fun_l25_n504()
+ fun_l26_n427
+end
+
+def fun_l25_n505()
+ fun_l26_n949
+end
+
+def fun_l25_n506()
+ fun_l26_n566
+end
+
+def fun_l25_n507()
+ fun_l26_n407
+end
+
+def fun_l25_n508()
+ fun_l26_n427
+end
+
+def fun_l25_n509()
+ fun_l26_n423
+end
+
+def fun_l25_n510()
+ fun_l26_n394
+end
+
+def fun_l25_n511()
+ fun_l26_n584
+end
+
+def fun_l25_n512()
+ fun_l26_n35
+end
+
+def fun_l25_n513()
+ fun_l26_n89
+end
+
+def fun_l25_n514()
+ fun_l26_n369
+end
+
+def fun_l25_n515()
+ fun_l26_n483
+end
+
+def fun_l25_n516()
+ fun_l26_n897
+end
+
+def fun_l25_n517()
+ fun_l26_n39
+end
+
+def fun_l25_n518()
+ fun_l26_n904
+end
+
+def fun_l25_n519()
+ fun_l26_n264
+end
+
+def fun_l25_n520()
+ fun_l26_n806
+end
+
+def fun_l25_n521()
+ fun_l26_n206
+end
+
+def fun_l25_n522()
+ fun_l26_n417
+end
+
+def fun_l25_n523()
+ fun_l26_n235
+end
+
+def fun_l25_n524()
+ fun_l26_n192
+end
+
+def fun_l25_n525()
+ fun_l26_n62
+end
+
+def fun_l25_n526()
+ fun_l26_n295
+end
+
+def fun_l25_n527()
+ fun_l26_n998
+end
+
+def fun_l25_n528()
+ fun_l26_n898
+end
+
+def fun_l25_n529()
+ fun_l26_n705
+end
+
+def fun_l25_n530()
+ fun_l26_n571
+end
+
+def fun_l25_n531()
+ fun_l26_n883
+end
+
+def fun_l25_n532()
+ fun_l26_n198
+end
+
+def fun_l25_n533()
+ fun_l26_n893
+end
+
+def fun_l25_n534()
+ fun_l26_n849
+end
+
+def fun_l25_n535()
+ fun_l26_n540
+end
+
+def fun_l25_n536()
+ fun_l26_n509
+end
+
+def fun_l25_n537()
+ fun_l26_n889
+end
+
+def fun_l25_n538()
+ fun_l26_n981
+end
+
+def fun_l25_n539()
+ fun_l26_n477
+end
+
+def fun_l25_n540()
+ fun_l26_n908
+end
+
+def fun_l25_n541()
+ fun_l26_n455
+end
+
+def fun_l25_n542()
+ fun_l26_n547
+end
+
+def fun_l25_n543()
+ fun_l26_n487
+end
+
+def fun_l25_n544()
+ fun_l26_n365
+end
+
+def fun_l25_n545()
+ fun_l26_n853
+end
+
+def fun_l25_n546()
+ fun_l26_n591
+end
+
+def fun_l25_n547()
+ fun_l26_n298
+end
+
+def fun_l25_n548()
+ fun_l26_n529
+end
+
+def fun_l25_n549()
+ fun_l26_n191
+end
+
+def fun_l25_n550()
+ fun_l26_n118
+end
+
+def fun_l25_n551()
+ fun_l26_n82
+end
+
+def fun_l25_n552()
+ fun_l26_n874
+end
+
+def fun_l25_n553()
+ fun_l26_n924
+end
+
+def fun_l25_n554()
+ fun_l26_n683
+end
+
+def fun_l25_n555()
+ fun_l26_n163
+end
+
+def fun_l25_n556()
+ fun_l26_n935
+end
+
+def fun_l25_n557()
+ fun_l26_n657
+end
+
+def fun_l25_n558()
+ fun_l26_n17
+end
+
+def fun_l25_n559()
+ fun_l26_n578
+end
+
+def fun_l25_n560()
+ fun_l26_n105
+end
+
+def fun_l25_n561()
+ fun_l26_n280
+end
+
+def fun_l25_n562()
+ fun_l26_n130
+end
+
+def fun_l25_n563()
+ fun_l26_n824
+end
+
+def fun_l25_n564()
+ fun_l26_n376
+end
+
+def fun_l25_n565()
+ fun_l26_n942
+end
+
+def fun_l25_n566()
+ fun_l26_n771
+end
+
+def fun_l25_n567()
+ fun_l26_n245
+end
+
+def fun_l25_n568()
+ fun_l26_n361
+end
+
+def fun_l25_n569()
+ fun_l26_n328
+end
+
+def fun_l25_n570()
+ fun_l26_n718
+end
+
+def fun_l25_n571()
+ fun_l26_n918
+end
+
+def fun_l25_n572()
+ fun_l26_n592
+end
+
+def fun_l25_n573()
+ fun_l26_n690
+end
+
+def fun_l25_n574()
+ fun_l26_n689
+end
+
+def fun_l25_n575()
+ fun_l26_n571
+end
+
+def fun_l25_n576()
+ fun_l26_n106
+end
+
+def fun_l25_n577()
+ fun_l26_n917
+end
+
+def fun_l25_n578()
+ fun_l26_n954
+end
+
+def fun_l25_n579()
+ fun_l26_n842
+end
+
+def fun_l25_n580()
+ fun_l26_n277
+end
+
+def fun_l25_n581()
+ fun_l26_n511
+end
+
+def fun_l25_n582()
+ fun_l26_n834
+end
+
+def fun_l25_n583()
+ fun_l26_n992
+end
+
+def fun_l25_n584()
+ fun_l26_n711
+end
+
+def fun_l25_n585()
+ fun_l26_n366
+end
+
+def fun_l25_n586()
+ fun_l26_n960
+end
+
+def fun_l25_n587()
+ fun_l26_n229
+end
+
+def fun_l25_n588()
+ fun_l26_n208
+end
+
+def fun_l25_n589()
+ fun_l26_n758
+end
+
+def fun_l25_n590()
+ fun_l26_n98
+end
+
+def fun_l25_n591()
+ fun_l26_n452
+end
+
+def fun_l25_n592()
+ fun_l26_n526
+end
+
+def fun_l25_n593()
+ fun_l26_n92
+end
+
+def fun_l25_n594()
+ fun_l26_n108
+end
+
+def fun_l25_n595()
+ fun_l26_n250
+end
+
+def fun_l25_n596()
+ fun_l26_n186
+end
+
+def fun_l25_n597()
+ fun_l26_n603
+end
+
+def fun_l25_n598()
+ fun_l26_n828
+end
+
+def fun_l25_n599()
+ fun_l26_n610
+end
+
+def fun_l25_n600()
+ fun_l26_n280
+end
+
+def fun_l25_n601()
+ fun_l26_n158
+end
+
+def fun_l25_n602()
+ fun_l26_n386
+end
+
+def fun_l25_n603()
+ fun_l26_n869
+end
+
+def fun_l25_n604()
+ fun_l26_n483
+end
+
+def fun_l25_n605()
+ fun_l26_n682
+end
+
+def fun_l25_n606()
+ fun_l26_n175
+end
+
+def fun_l25_n607()
+ fun_l26_n991
+end
+
+def fun_l25_n608()
+ fun_l26_n165
+end
+
+def fun_l25_n609()
+ fun_l26_n303
+end
+
+def fun_l25_n610()
+ fun_l26_n812
+end
+
+def fun_l25_n611()
+ fun_l26_n563
+end
+
+def fun_l25_n612()
+ fun_l26_n635
+end
+
+def fun_l25_n613()
+ fun_l26_n256
+end
+
+def fun_l25_n614()
+ fun_l26_n96
+end
+
+def fun_l25_n615()
+ fun_l26_n8
+end
+
+def fun_l25_n616()
+ fun_l26_n963
+end
+
+def fun_l25_n617()
+ fun_l26_n860
+end
+
+def fun_l25_n618()
+ fun_l26_n316
+end
+
+def fun_l25_n619()
+ fun_l26_n388
+end
+
+def fun_l25_n620()
+ fun_l26_n427
+end
+
+def fun_l25_n621()
+ fun_l26_n519
+end
+
+def fun_l25_n622()
+ fun_l26_n780
+end
+
+def fun_l25_n623()
+ fun_l26_n142
+end
+
+def fun_l25_n624()
+ fun_l26_n271
+end
+
+def fun_l25_n625()
+ fun_l26_n617
+end
+
+def fun_l25_n626()
+ fun_l26_n968
+end
+
+def fun_l25_n627()
+ fun_l26_n880
+end
+
+def fun_l25_n628()
+ fun_l26_n831
+end
+
+def fun_l25_n629()
+ fun_l26_n616
+end
+
+def fun_l25_n630()
+ fun_l26_n213
+end
+
+def fun_l25_n631()
+ fun_l26_n91
+end
+
+def fun_l25_n632()
+ fun_l26_n295
+end
+
+def fun_l25_n633()
+ fun_l26_n314
+end
+
+def fun_l25_n634()
+ fun_l26_n174
+end
+
+def fun_l25_n635()
+ fun_l26_n668
+end
+
+def fun_l25_n636()
+ fun_l26_n962
+end
+
+def fun_l25_n637()
+ fun_l26_n1
+end
+
+def fun_l25_n638()
+ fun_l26_n361
+end
+
+def fun_l25_n639()
+ fun_l26_n947
+end
+
+def fun_l25_n640()
+ fun_l26_n381
+end
+
+def fun_l25_n641()
+ fun_l26_n388
+end
+
+def fun_l25_n642()
+ fun_l26_n5
+end
+
+def fun_l25_n643()
+ fun_l26_n759
+end
+
+def fun_l25_n644()
+ fun_l26_n454
+end
+
+def fun_l25_n645()
+ fun_l26_n596
+end
+
+def fun_l25_n646()
+ fun_l26_n639
+end
+
+def fun_l25_n647()
+ fun_l26_n156
+end
+
+def fun_l25_n648()
+ fun_l26_n395
+end
+
+def fun_l25_n649()
+ fun_l26_n424
+end
+
+def fun_l25_n650()
+ fun_l26_n21
+end
+
+def fun_l25_n651()
+ fun_l26_n285
+end
+
+def fun_l25_n652()
+ fun_l26_n72
+end
+
+def fun_l25_n653()
+ fun_l26_n25
+end
+
+def fun_l25_n654()
+ fun_l26_n381
+end
+
+def fun_l25_n655()
+ fun_l26_n166
+end
+
+def fun_l25_n656()
+ fun_l26_n850
+end
+
+def fun_l25_n657()
+ fun_l26_n794
+end
+
+def fun_l25_n658()
+ fun_l26_n674
+end
+
+def fun_l25_n659()
+ fun_l26_n934
+end
+
+def fun_l25_n660()
+ fun_l26_n164
+end
+
+def fun_l25_n661()
+ fun_l26_n325
+end
+
+def fun_l25_n662()
+ fun_l26_n514
+end
+
+def fun_l25_n663()
+ fun_l26_n489
+end
+
+def fun_l25_n664()
+ fun_l26_n268
+end
+
+def fun_l25_n665()
+ fun_l26_n4
+end
+
+def fun_l25_n666()
+ fun_l26_n330
+end
+
+def fun_l25_n667()
+ fun_l26_n749
+end
+
+def fun_l25_n668()
+ fun_l26_n324
+end
+
+def fun_l25_n669()
+ fun_l26_n228
+end
+
+def fun_l25_n670()
+ fun_l26_n740
+end
+
+def fun_l25_n671()
+ fun_l26_n240
+end
+
+def fun_l25_n672()
+ fun_l26_n145
+end
+
+def fun_l25_n673()
+ fun_l26_n170
+end
+
+def fun_l25_n674()
+ fun_l26_n222
+end
+
+def fun_l25_n675()
+ fun_l26_n680
+end
+
+def fun_l25_n676()
+ fun_l26_n115
+end
+
+def fun_l25_n677()
+ fun_l26_n359
+end
+
+def fun_l25_n678()
+ fun_l26_n482
+end
+
+def fun_l25_n679()
+ fun_l26_n251
+end
+
+def fun_l25_n680()
+ fun_l26_n95
+end
+
+def fun_l25_n681()
+ fun_l26_n587
+end
+
+def fun_l25_n682()
+ fun_l26_n689
+end
+
+def fun_l25_n683()
+ fun_l26_n317
+end
+
+def fun_l25_n684()
+ fun_l26_n913
+end
+
+def fun_l25_n685()
+ fun_l26_n943
+end
+
+def fun_l25_n686()
+ fun_l26_n770
+end
+
+def fun_l25_n687()
+ fun_l26_n204
+end
+
+def fun_l25_n688()
+ fun_l26_n690
+end
+
+def fun_l25_n689()
+ fun_l26_n745
+end
+
+def fun_l25_n690()
+ fun_l26_n640
+end
+
+def fun_l25_n691()
+ fun_l26_n34
+end
+
+def fun_l25_n692()
+ fun_l26_n296
+end
+
+def fun_l25_n693()
+ fun_l26_n900
+end
+
+def fun_l25_n694()
+ fun_l26_n619
+end
+
+def fun_l25_n695()
+ fun_l26_n81
+end
+
+def fun_l25_n696()
+ fun_l26_n748
+end
+
+def fun_l25_n697()
+ fun_l26_n395
+end
+
+def fun_l25_n698()
+ fun_l26_n518
+end
+
+def fun_l25_n699()
+ fun_l26_n338
+end
+
+def fun_l25_n700()
+ fun_l26_n238
+end
+
+def fun_l25_n701()
+ fun_l26_n445
+end
+
+def fun_l25_n702()
+ fun_l26_n732
+end
+
+def fun_l25_n703()
+ fun_l26_n378
+end
+
+def fun_l25_n704()
+ fun_l26_n858
+end
+
+def fun_l25_n705()
+ fun_l26_n944
+end
+
+def fun_l25_n706()
+ fun_l26_n543
+end
+
+def fun_l25_n707()
+ fun_l26_n750
+end
+
+def fun_l25_n708()
+ fun_l26_n191
+end
+
+def fun_l25_n709()
+ fun_l26_n483
+end
+
+def fun_l25_n710()
+ fun_l26_n614
+end
+
+def fun_l25_n711()
+ fun_l26_n944
+end
+
+def fun_l25_n712()
+ fun_l26_n375
+end
+
+def fun_l25_n713()
+ fun_l26_n464
+end
+
+def fun_l25_n714()
+ fun_l26_n429
+end
+
+def fun_l25_n715()
+ fun_l26_n251
+end
+
+def fun_l25_n716()
+ fun_l26_n401
+end
+
+def fun_l25_n717()
+ fun_l26_n230
+end
+
+def fun_l25_n718()
+ fun_l26_n855
+end
+
+def fun_l25_n719()
+ fun_l26_n63
+end
+
+def fun_l25_n720()
+ fun_l26_n453
+end
+
+def fun_l25_n721()
+ fun_l26_n698
+end
+
+def fun_l25_n722()
+ fun_l26_n691
+end
+
+def fun_l25_n723()
+ fun_l26_n949
+end
+
+def fun_l25_n724()
+ fun_l26_n838
+end
+
+def fun_l25_n725()
+ fun_l26_n962
+end
+
+def fun_l25_n726()
+ fun_l26_n159
+end
+
+def fun_l25_n727()
+ fun_l26_n958
+end
+
+def fun_l25_n728()
+ fun_l26_n915
+end
+
+def fun_l25_n729()
+ fun_l26_n925
+end
+
+def fun_l25_n730()
+ fun_l26_n841
+end
+
+def fun_l25_n731()
+ fun_l26_n710
+end
+
+def fun_l25_n732()
+ fun_l26_n606
+end
+
+def fun_l25_n733()
+ fun_l26_n502
+end
+
+def fun_l25_n734()
+ fun_l26_n275
+end
+
+def fun_l25_n735()
+ fun_l26_n2
+end
+
+def fun_l25_n736()
+ fun_l26_n912
+end
+
+def fun_l25_n737()
+ fun_l26_n908
+end
+
+def fun_l25_n738()
+ fun_l26_n599
+end
+
+def fun_l25_n739()
+ fun_l26_n586
+end
+
+def fun_l25_n740()
+ fun_l26_n675
+end
+
+def fun_l25_n741()
+ fun_l26_n33
+end
+
+def fun_l25_n742()
+ fun_l26_n94
+end
+
+def fun_l25_n743()
+ fun_l26_n512
+end
+
+def fun_l25_n744()
+ fun_l26_n38
+end
+
+def fun_l25_n745()
+ fun_l26_n479
+end
+
+def fun_l25_n746()
+ fun_l26_n191
+end
+
+def fun_l25_n747()
+ fun_l26_n520
+end
+
+def fun_l25_n748()
+ fun_l26_n800
+end
+
+def fun_l25_n749()
+ fun_l26_n401
+end
+
+def fun_l25_n750()
+ fun_l26_n355
+end
+
+def fun_l25_n751()
+ fun_l26_n622
+end
+
+def fun_l25_n752()
+ fun_l26_n48
+end
+
+def fun_l25_n753()
+ fun_l26_n620
+end
+
+def fun_l25_n754()
+ fun_l26_n932
+end
+
+def fun_l25_n755()
+ fun_l26_n204
+end
+
+def fun_l25_n756()
+ fun_l26_n875
+end
+
+def fun_l25_n757()
+ fun_l26_n458
+end
+
+def fun_l25_n758()
+ fun_l26_n364
+end
+
+def fun_l25_n759()
+ fun_l26_n621
+end
+
+def fun_l25_n760()
+ fun_l26_n800
+end
+
+def fun_l25_n761()
+ fun_l26_n297
+end
+
+def fun_l25_n762()
+ fun_l26_n262
+end
+
+def fun_l25_n763()
+ fun_l26_n810
+end
+
+def fun_l25_n764()
+ fun_l26_n518
+end
+
+def fun_l25_n765()
+ fun_l26_n192
+end
+
+def fun_l25_n766()
+ fun_l26_n733
+end
+
+def fun_l25_n767()
+ fun_l26_n410
+end
+
+def fun_l25_n768()
+ fun_l26_n161
+end
+
+def fun_l25_n769()
+ fun_l26_n546
+end
+
+def fun_l25_n770()
+ fun_l26_n863
+end
+
+def fun_l25_n771()
+ fun_l26_n442
+end
+
+def fun_l25_n772()
+ fun_l26_n733
+end
+
+def fun_l25_n773()
+ fun_l26_n340
+end
+
+def fun_l25_n774()
+ fun_l26_n371
+end
+
+def fun_l25_n775()
+ fun_l26_n253
+end
+
+def fun_l25_n776()
+ fun_l26_n607
+end
+
+def fun_l25_n777()
+ fun_l26_n859
+end
+
+def fun_l25_n778()
+ fun_l26_n142
+end
+
+def fun_l25_n779()
+ fun_l26_n504
+end
+
+def fun_l25_n780()
+ fun_l26_n145
+end
+
+def fun_l25_n781()
+ fun_l26_n561
+end
+
+def fun_l25_n782()
+ fun_l26_n442
+end
+
+def fun_l25_n783()
+ fun_l26_n70
+end
+
+def fun_l25_n784()
+ fun_l26_n233
+end
+
+def fun_l25_n785()
+ fun_l26_n680
+end
+
+def fun_l25_n786()
+ fun_l26_n195
+end
+
+def fun_l25_n787()
+ fun_l26_n760
+end
+
+def fun_l25_n788()
+ fun_l26_n951
+end
+
+def fun_l25_n789()
+ fun_l26_n247
+end
+
+def fun_l25_n790()
+ fun_l26_n58
+end
+
+def fun_l25_n791()
+ fun_l26_n926
+end
+
+def fun_l25_n792()
+ fun_l26_n424
+end
+
+def fun_l25_n793()
+ fun_l26_n404
+end
+
+def fun_l25_n794()
+ fun_l26_n98
+end
+
+def fun_l25_n795()
+ fun_l26_n568
+end
+
+def fun_l25_n796()
+ fun_l26_n665
+end
+
+def fun_l25_n797()
+ fun_l26_n138
+end
+
+def fun_l25_n798()
+ fun_l26_n362
+end
+
+def fun_l25_n799()
+ fun_l26_n366
+end
+
+def fun_l25_n800()
+ fun_l26_n667
+end
+
+def fun_l25_n801()
+ fun_l26_n171
+end
+
+def fun_l25_n802()
+ fun_l26_n620
+end
+
+def fun_l25_n803()
+ fun_l26_n88
+end
+
+def fun_l25_n804()
+ fun_l26_n60
+end
+
+def fun_l25_n805()
+ fun_l26_n411
+end
+
+def fun_l25_n806()
+ fun_l26_n994
+end
+
+def fun_l25_n807()
+ fun_l26_n341
+end
+
+def fun_l25_n808()
+ fun_l26_n364
+end
+
+def fun_l25_n809()
+ fun_l26_n253
+end
+
+def fun_l25_n810()
+ fun_l26_n689
+end
+
+def fun_l25_n811()
+ fun_l26_n325
+end
+
+def fun_l25_n812()
+ fun_l26_n573
+end
+
+def fun_l25_n813()
+ fun_l26_n122
+end
+
+def fun_l25_n814()
+ fun_l26_n487
+end
+
+def fun_l25_n815()
+ fun_l26_n461
+end
+
+def fun_l25_n816()
+ fun_l26_n851
+end
+
+def fun_l25_n817()
+ fun_l26_n322
+end
+
+def fun_l25_n818()
+ fun_l26_n472
+end
+
+def fun_l25_n819()
+ fun_l26_n773
+end
+
+def fun_l25_n820()
+ fun_l26_n801
+end
+
+def fun_l25_n821()
+ fun_l26_n454
+end
+
+def fun_l25_n822()
+ fun_l26_n179
+end
+
+def fun_l25_n823()
+ fun_l26_n207
+end
+
+def fun_l25_n824()
+ fun_l26_n464
+end
+
+def fun_l25_n825()
+ fun_l26_n188
+end
+
+def fun_l25_n826()
+ fun_l26_n831
+end
+
+def fun_l25_n827()
+ fun_l26_n918
+end
+
+def fun_l25_n828()
+ fun_l26_n336
+end
+
+def fun_l25_n829()
+ fun_l26_n960
+end
+
+def fun_l25_n830()
+ fun_l26_n767
+end
+
+def fun_l25_n831()
+ fun_l26_n149
+end
+
+def fun_l25_n832()
+ fun_l26_n454
+end
+
+def fun_l25_n833()
+ fun_l26_n756
+end
+
+def fun_l25_n834()
+ fun_l26_n937
+end
+
+def fun_l25_n835()
+ fun_l26_n841
+end
+
+def fun_l25_n836()
+ fun_l26_n210
+end
+
+def fun_l25_n837()
+ fun_l26_n633
+end
+
+def fun_l25_n838()
+ fun_l26_n665
+end
+
+def fun_l25_n839()
+ fun_l26_n502
+end
+
+def fun_l25_n840()
+ fun_l26_n38
+end
+
+def fun_l25_n841()
+ fun_l26_n487
+end
+
+def fun_l25_n842()
+ fun_l26_n101
+end
+
+def fun_l25_n843()
+ fun_l26_n522
+end
+
+def fun_l25_n844()
+ fun_l26_n501
+end
+
+def fun_l25_n845()
+ fun_l26_n759
+end
+
+def fun_l25_n846()
+ fun_l26_n161
+end
+
+def fun_l25_n847()
+ fun_l26_n823
+end
+
+def fun_l25_n848()
+ fun_l26_n687
+end
+
+def fun_l25_n849()
+ fun_l26_n41
+end
+
+def fun_l25_n850()
+ fun_l26_n580
+end
+
+def fun_l25_n851()
+ fun_l26_n728
+end
+
+def fun_l25_n852()
+ fun_l26_n464
+end
+
+def fun_l25_n853()
+ fun_l26_n846
+end
+
+def fun_l25_n854()
+ fun_l26_n708
+end
+
+def fun_l25_n855()
+ fun_l26_n847
+end
+
+def fun_l25_n856()
+ fun_l26_n295
+end
+
+def fun_l25_n857()
+ fun_l26_n569
+end
+
+def fun_l25_n858()
+ fun_l26_n367
+end
+
+def fun_l25_n859()
+ fun_l26_n937
+end
+
+def fun_l25_n860()
+ fun_l26_n116
+end
+
+def fun_l25_n861()
+ fun_l26_n889
+end
+
+def fun_l25_n862()
+ fun_l26_n392
+end
+
+def fun_l25_n863()
+ fun_l26_n70
+end
+
+def fun_l25_n864()
+ fun_l26_n82
+end
+
+def fun_l25_n865()
+ fun_l26_n4
+end
+
+def fun_l25_n866()
+ fun_l26_n286
+end
+
+def fun_l25_n867()
+ fun_l26_n594
+end
+
+def fun_l25_n868()
+ fun_l26_n917
+end
+
+def fun_l25_n869()
+ fun_l26_n385
+end
+
+def fun_l25_n870()
+ fun_l26_n149
+end
+
+def fun_l25_n871()
+ fun_l26_n893
+end
+
+def fun_l25_n872()
+ fun_l26_n832
+end
+
+def fun_l25_n873()
+ fun_l26_n962
+end
+
+def fun_l25_n874()
+ fun_l26_n196
+end
+
+def fun_l25_n875()
+ fun_l26_n841
+end
+
+def fun_l25_n876()
+ fun_l26_n334
+end
+
+def fun_l25_n877()
+ fun_l26_n680
+end
+
+def fun_l25_n878()
+ fun_l26_n858
+end
+
+def fun_l25_n879()
+ fun_l26_n530
+end
+
+def fun_l25_n880()
+ fun_l26_n331
+end
+
+def fun_l25_n881()
+ fun_l26_n287
+end
+
+def fun_l25_n882()
+ fun_l26_n995
+end
+
+def fun_l25_n883()
+ fun_l26_n663
+end
+
+def fun_l25_n884()
+ fun_l26_n352
+end
+
+def fun_l25_n885()
+ fun_l26_n787
+end
+
+def fun_l25_n886()
+ fun_l26_n176
+end
+
+def fun_l25_n887()
+ fun_l26_n303
+end
+
+def fun_l25_n888()
+ fun_l26_n610
+end
+
+def fun_l25_n889()
+ fun_l26_n860
+end
+
+def fun_l25_n890()
+ fun_l26_n35
+end
+
+def fun_l25_n891()
+ fun_l26_n599
+end
+
+def fun_l25_n892()
+ fun_l26_n334
+end
+
+def fun_l25_n893()
+ fun_l26_n904
+end
+
+def fun_l25_n894()
+ fun_l26_n999
+end
+
+def fun_l25_n895()
+ fun_l26_n394
+end
+
+def fun_l25_n896()
+ fun_l26_n901
+end
+
+def fun_l25_n897()
+ fun_l26_n348
+end
+
+def fun_l25_n898()
+ fun_l26_n59
+end
+
+def fun_l25_n899()
+ fun_l26_n67
+end
+
+def fun_l25_n900()
+ fun_l26_n887
+end
+
+def fun_l25_n901()
+ fun_l26_n27
+end
+
+def fun_l25_n902()
+ fun_l26_n635
+end
+
+def fun_l25_n903()
+ fun_l26_n627
+end
+
+def fun_l25_n904()
+ fun_l26_n47
+end
+
+def fun_l25_n905()
+ fun_l26_n256
+end
+
+def fun_l25_n906()
+ fun_l26_n498
+end
+
+def fun_l25_n907()
+ fun_l26_n831
+end
+
+def fun_l25_n908()
+ fun_l26_n723
+end
+
+def fun_l25_n909()
+ fun_l26_n29
+end
+
+def fun_l25_n910()
+ fun_l26_n842
+end
+
+def fun_l25_n911()
+ fun_l26_n762
+end
+
+def fun_l25_n912()
+ fun_l26_n706
+end
+
+def fun_l25_n913()
+ fun_l26_n472
+end
+
+def fun_l25_n914()
+ fun_l26_n825
+end
+
+def fun_l25_n915()
+ fun_l26_n210
+end
+
+def fun_l25_n916()
+ fun_l26_n682
+end
+
+def fun_l25_n917()
+ fun_l26_n793
+end
+
+def fun_l25_n918()
+ fun_l26_n768
+end
+
+def fun_l25_n919()
+ fun_l26_n631
+end
+
+def fun_l25_n920()
+ fun_l26_n188
+end
+
+def fun_l25_n921()
+ fun_l26_n115
+end
+
+def fun_l25_n922()
+ fun_l26_n587
+end
+
+def fun_l25_n923()
+ fun_l26_n998
+end
+
+def fun_l25_n924()
+ fun_l26_n439
+end
+
+def fun_l25_n925()
+ fun_l26_n306
+end
+
+def fun_l25_n926()
+ fun_l26_n810
+end
+
+def fun_l25_n927()
+ fun_l26_n183
+end
+
+def fun_l25_n928()
+ fun_l26_n868
+end
+
+def fun_l25_n929()
+ fun_l26_n733
+end
+
+def fun_l25_n930()
+ fun_l26_n931
+end
+
+def fun_l25_n931()
+ fun_l26_n747
+end
+
+def fun_l25_n932()
+ fun_l26_n126
+end
+
+def fun_l25_n933()
+ fun_l26_n299
+end
+
+def fun_l25_n934()
+ fun_l26_n994
+end
+
+def fun_l25_n935()
+ fun_l26_n76
+end
+
+def fun_l25_n936()
+ fun_l26_n606
+end
+
+def fun_l25_n937()
+ fun_l26_n874
+end
+
+def fun_l25_n938()
+ fun_l26_n333
+end
+
+def fun_l25_n939()
+ fun_l26_n601
+end
+
+def fun_l25_n940()
+ fun_l26_n503
+end
+
+def fun_l25_n941()
+ fun_l26_n819
+end
+
+def fun_l25_n942()
+ fun_l26_n414
+end
+
+def fun_l25_n943()
+ fun_l26_n839
+end
+
+def fun_l25_n944()
+ fun_l26_n655
+end
+
+def fun_l25_n945()
+ fun_l26_n61
+end
+
+def fun_l25_n946()
+ fun_l26_n368
+end
+
+def fun_l25_n947()
+ fun_l26_n481
+end
+
+def fun_l25_n948()
+ fun_l26_n674
+end
+
+def fun_l25_n949()
+ fun_l26_n755
+end
+
+def fun_l25_n950()
+ fun_l26_n940
+end
+
+def fun_l25_n951()
+ fun_l26_n918
+end
+
+def fun_l25_n952()
+ fun_l26_n833
+end
+
+def fun_l25_n953()
+ fun_l26_n81
+end
+
+def fun_l25_n954()
+ fun_l26_n12
+end
+
+def fun_l25_n955()
+ fun_l26_n598
+end
+
+def fun_l25_n956()
+ fun_l26_n10
+end
+
+def fun_l25_n957()
+ fun_l26_n552
+end
+
+def fun_l25_n958()
+ fun_l26_n536
+end
+
+def fun_l25_n959()
+ fun_l26_n291
+end
+
+def fun_l25_n960()
+ fun_l26_n535
+end
+
+def fun_l25_n961()
+ fun_l26_n593
+end
+
+def fun_l25_n962()
+ fun_l26_n834
+end
+
+def fun_l25_n963()
+ fun_l26_n527
+end
+
+def fun_l25_n964()
+ fun_l26_n403
+end
+
+def fun_l25_n965()
+ fun_l26_n246
+end
+
+def fun_l25_n966()
+ fun_l26_n278
+end
+
+def fun_l25_n967()
+ fun_l26_n948
+end
+
+def fun_l25_n968()
+ fun_l26_n989
+end
+
+def fun_l25_n969()
+ fun_l26_n312
+end
+
+def fun_l25_n970()
+ fun_l26_n674
+end
+
+def fun_l25_n971()
+ fun_l26_n592
+end
+
+def fun_l25_n972()
+ fun_l26_n413
+end
+
+def fun_l25_n973()
+ fun_l26_n774
+end
+
+def fun_l25_n974()
+ fun_l26_n148
+end
+
+def fun_l25_n975()
+ fun_l26_n437
+end
+
+def fun_l25_n976()
+ fun_l26_n749
+end
+
+def fun_l25_n977()
+ fun_l26_n938
+end
+
+def fun_l25_n978()
+ fun_l26_n662
+end
+
+def fun_l25_n979()
+ fun_l26_n327
+end
+
+def fun_l25_n980()
+ fun_l26_n665
+end
+
+def fun_l25_n981()
+ fun_l26_n516
+end
+
+def fun_l25_n982()
+ fun_l26_n27
+end
+
+def fun_l25_n983()
+ fun_l26_n624
+end
+
+def fun_l25_n984()
+ fun_l26_n451
+end
+
+def fun_l25_n985()
+ fun_l26_n120
+end
+
+def fun_l25_n986()
+ fun_l26_n220
+end
+
+def fun_l25_n987()
+ fun_l26_n201
+end
+
+def fun_l25_n988()
+ fun_l26_n67
+end
+
+def fun_l25_n989()
+ fun_l26_n484
+end
+
+def fun_l25_n990()
+ fun_l26_n98
+end
+
+def fun_l25_n991()
+ fun_l26_n133
+end
+
+def fun_l25_n992()
+ fun_l26_n642
+end
+
+def fun_l25_n993()
+ fun_l26_n933
+end
+
+def fun_l25_n994()
+ fun_l26_n410
+end
+
+def fun_l25_n995()
+ fun_l26_n415
+end
+
+def fun_l25_n996()
+ fun_l26_n513
+end
+
+def fun_l25_n997()
+ fun_l26_n41
+end
+
+def fun_l25_n998()
+ fun_l26_n517
+end
+
+def fun_l25_n999()
+ fun_l26_n485
+end
+
+def fun_l26_n0()
+ fun_l27_n229
+end
+
+def fun_l26_n1()
+ fun_l27_n178
+end
+
+def fun_l26_n2()
+ fun_l27_n76
+end
+
+def fun_l26_n3()
+ fun_l27_n247
+end
+
+def fun_l26_n4()
+ fun_l27_n564
+end
+
+def fun_l26_n5()
+ fun_l27_n204
+end
+
+def fun_l26_n6()
+ fun_l27_n196
+end
+
+def fun_l26_n7()
+ fun_l27_n57
+end
+
+def fun_l26_n8()
+ fun_l27_n836
+end
+
+def fun_l26_n9()
+ fun_l27_n195
+end
+
+def fun_l26_n10()
+ fun_l27_n149
+end
+
+def fun_l26_n11()
+ fun_l27_n784
+end
+
+def fun_l26_n12()
+ fun_l27_n242
+end
+
+def fun_l26_n13()
+ fun_l27_n771
+end
+
+def fun_l26_n14()
+ fun_l27_n263
+end
+
+def fun_l26_n15()
+ fun_l27_n486
+end
+
+def fun_l26_n16()
+ fun_l27_n351
+end
+
+def fun_l26_n17()
+ fun_l27_n612
+end
+
+def fun_l26_n18()
+ fun_l27_n61
+end
+
+def fun_l26_n19()
+ fun_l27_n119
+end
+
+def fun_l26_n20()
+ fun_l27_n419
+end
+
+def fun_l26_n21()
+ fun_l27_n265
+end
+
+def fun_l26_n22()
+ fun_l27_n70
+end
+
+def fun_l26_n23()
+ fun_l27_n868
+end
+
+def fun_l26_n24()
+ fun_l27_n969
+end
+
+def fun_l26_n25()
+ fun_l27_n355
+end
+
+def fun_l26_n26()
+ fun_l27_n558
+end
+
+def fun_l26_n27()
+ fun_l27_n522
+end
+
+def fun_l26_n28()
+ fun_l27_n704
+end
+
+def fun_l26_n29()
+ fun_l27_n196
+end
+
+def fun_l26_n30()
+ fun_l27_n834
+end
+
+def fun_l26_n31()
+ fun_l27_n187
+end
+
+def fun_l26_n32()
+ fun_l27_n324
+end
+
+def fun_l26_n33()
+ fun_l27_n233
+end
+
+def fun_l26_n34()
+ fun_l27_n559
+end
+
+def fun_l26_n35()
+ fun_l27_n331
+end
+
+def fun_l26_n36()
+ fun_l27_n71
+end
+
+def fun_l26_n37()
+ fun_l27_n572
+end
+
+def fun_l26_n38()
+ fun_l27_n918
+end
+
+def fun_l26_n39()
+ fun_l27_n866
+end
+
+def fun_l26_n40()
+ fun_l27_n909
+end
+
+def fun_l26_n41()
+ fun_l27_n861
+end
+
+def fun_l26_n42()
+ fun_l27_n440
+end
+
+def fun_l26_n43()
+ fun_l27_n213
+end
+
+def fun_l26_n44()
+ fun_l27_n675
+end
+
+def fun_l26_n45()
+ fun_l27_n490
+end
+
+def fun_l26_n46()
+ fun_l27_n579
+end
+
+def fun_l26_n47()
+ fun_l27_n25
+end
+
+def fun_l26_n48()
+ fun_l27_n180
+end
+
+def fun_l26_n49()
+ fun_l27_n346
+end
+
+def fun_l26_n50()
+ fun_l27_n761
+end
+
+def fun_l26_n51()
+ fun_l27_n336
+end
+
+def fun_l26_n52()
+ fun_l27_n124
+end
+
+def fun_l26_n53()
+ fun_l27_n485
+end
+
+def fun_l26_n54()
+ fun_l27_n24
+end
+
+def fun_l26_n55()
+ fun_l27_n666
+end
+
+def fun_l26_n56()
+ fun_l27_n957
+end
+
+def fun_l26_n57()
+ fun_l27_n790
+end
+
+def fun_l26_n58()
+ fun_l27_n475
+end
+
+def fun_l26_n59()
+ fun_l27_n915
+end
+
+def fun_l26_n60()
+ fun_l27_n313
+end
+
+def fun_l26_n61()
+ fun_l27_n148
+end
+
+def fun_l26_n62()
+ fun_l27_n185
+end
+
+def fun_l26_n63()
+ fun_l27_n468
+end
+
+def fun_l26_n64()
+ fun_l27_n549
+end
+
+def fun_l26_n65()
+ fun_l27_n29
+end
+
+def fun_l26_n66()
+ fun_l27_n601
+end
+
+def fun_l26_n67()
+ fun_l27_n3
+end
+
+def fun_l26_n68()
+ fun_l27_n363
+end
+
+def fun_l26_n69()
+ fun_l27_n721
+end
+
+def fun_l26_n70()
+ fun_l27_n76
+end
+
+def fun_l26_n71()
+ fun_l27_n265
+end
+
+def fun_l26_n72()
+ fun_l27_n771
+end
+
+def fun_l26_n73()
+ fun_l27_n660
+end
+
+def fun_l26_n74()
+ fun_l27_n714
+end
+
+def fun_l26_n75()
+ fun_l27_n495
+end
+
+def fun_l26_n76()
+ fun_l27_n133
+end
+
+def fun_l26_n77()
+ fun_l27_n753
+end
+
+def fun_l26_n78()
+ fun_l27_n999
+end
+
+def fun_l26_n79()
+ fun_l27_n527
+end
+
+def fun_l26_n80()
+ fun_l27_n767
+end
+
+def fun_l26_n81()
+ fun_l27_n444
+end
+
+def fun_l26_n82()
+ fun_l27_n160
+end
+
+def fun_l26_n83()
+ fun_l27_n799
+end
+
+def fun_l26_n84()
+ fun_l27_n631
+end
+
+def fun_l26_n85()
+ fun_l27_n480
+end
+
+def fun_l26_n86()
+ fun_l27_n800
+end
+
+def fun_l26_n87()
+ fun_l27_n168
+end
+
+def fun_l26_n88()
+ fun_l27_n191
+end
+
+def fun_l26_n89()
+ fun_l27_n832
+end
+
+def fun_l26_n90()
+ fun_l27_n522
+end
+
+def fun_l26_n91()
+ fun_l27_n747
+end
+
+def fun_l26_n92()
+ fun_l27_n50
+end
+
+def fun_l26_n93()
+ fun_l27_n472
+end
+
+def fun_l26_n94()
+ fun_l27_n778
+end
+
+def fun_l26_n95()
+ fun_l27_n130
+end
+
+def fun_l26_n96()
+ fun_l27_n735
+end
+
+def fun_l26_n97()
+ fun_l27_n130
+end
+
+def fun_l26_n98()
+ fun_l27_n95
+end
+
+def fun_l26_n99()
+ fun_l27_n171
+end
+
+def fun_l26_n100()
+ fun_l27_n121
+end
+
+def fun_l26_n101()
+ fun_l27_n789
+end
+
+def fun_l26_n102()
+ fun_l27_n124
+end
+
+def fun_l26_n103()
+ fun_l27_n836
+end
+
+def fun_l26_n104()
+ fun_l27_n785
+end
+
+def fun_l26_n105()
+ fun_l27_n586
+end
+
+def fun_l26_n106()
+ fun_l27_n220
+end
+
+def fun_l26_n107()
+ fun_l27_n783
+end
+
+def fun_l26_n108()
+ fun_l27_n239
+end
+
+def fun_l26_n109()
+ fun_l27_n838
+end
+
+def fun_l26_n110()
+ fun_l27_n563
+end
+
+def fun_l26_n111()
+ fun_l27_n955
+end
+
+def fun_l26_n112()
+ fun_l27_n889
+end
+
+def fun_l26_n113()
+ fun_l27_n967
+end
+
+def fun_l26_n114()
+ fun_l27_n19
+end
+
+def fun_l26_n115()
+ fun_l27_n637
+end
+
+def fun_l26_n116()
+ fun_l27_n914
+end
+
+def fun_l26_n117()
+ fun_l27_n684
+end
+
+def fun_l26_n118()
+ fun_l27_n352
+end
+
+def fun_l26_n119()
+ fun_l27_n698
+end
+
+def fun_l26_n120()
+ fun_l27_n669
+end
+
+def fun_l26_n121()
+ fun_l27_n52
+end
+
+def fun_l26_n122()
+ fun_l27_n485
+end
+
+def fun_l26_n123()
+ fun_l27_n468
+end
+
+def fun_l26_n124()
+ fun_l27_n340
+end
+
+def fun_l26_n125()
+ fun_l27_n414
+end
+
+def fun_l26_n126()
+ fun_l27_n994
+end
+
+def fun_l26_n127()
+ fun_l27_n601
+end
+
+def fun_l26_n128()
+ fun_l27_n679
+end
+
+def fun_l26_n129()
+ fun_l27_n720
+end
+
+def fun_l26_n130()
+ fun_l27_n66
+end
+
+def fun_l26_n131()
+ fun_l27_n921
+end
+
+def fun_l26_n132()
+ fun_l27_n385
+end
+
+def fun_l26_n133()
+ fun_l27_n88
+end
+
+def fun_l26_n134()
+ fun_l27_n164
+end
+
+def fun_l26_n135()
+ fun_l27_n269
+end
+
+def fun_l26_n136()
+ fun_l27_n371
+end
+
+def fun_l26_n137()
+ fun_l27_n786
+end
+
+def fun_l26_n138()
+ fun_l27_n464
+end
+
+def fun_l26_n139()
+ fun_l27_n96
+end
+
+def fun_l26_n140()
+ fun_l27_n494
+end
+
+def fun_l26_n141()
+ fun_l27_n341
+end
+
+def fun_l26_n142()
+ fun_l27_n646
+end
+
+def fun_l26_n143()
+ fun_l27_n959
+end
+
+def fun_l26_n144()
+ fun_l27_n645
+end
+
+def fun_l26_n145()
+ fun_l27_n825
+end
+
+def fun_l26_n146()
+ fun_l27_n416
+end
+
+def fun_l26_n147()
+ fun_l27_n994
+end
+
+def fun_l26_n148()
+ fun_l27_n875
+end
+
+def fun_l26_n149()
+ fun_l27_n406
+end
+
+def fun_l26_n150()
+ fun_l27_n857
+end
+
+def fun_l26_n151()
+ fun_l27_n348
+end
+
+def fun_l26_n152()
+ fun_l27_n611
+end
+
+def fun_l26_n153()
+ fun_l27_n831
+end
+
+def fun_l26_n154()
+ fun_l27_n412
+end
+
+def fun_l26_n155()
+ fun_l27_n530
+end
+
+def fun_l26_n156()
+ fun_l27_n892
+end
+
+def fun_l26_n157()
+ fun_l27_n70
+end
+
+def fun_l26_n158()
+ fun_l27_n756
+end
+
+def fun_l26_n159()
+ fun_l27_n587
+end
+
+def fun_l26_n160()
+ fun_l27_n796
+end
+
+def fun_l26_n161()
+ fun_l27_n470
+end
+
+def fun_l26_n162()
+ fun_l27_n290
+end
+
+def fun_l26_n163()
+ fun_l27_n723
+end
+
+def fun_l26_n164()
+ fun_l27_n660
+end
+
+def fun_l26_n165()
+ fun_l27_n0
+end
+
+def fun_l26_n166()
+ fun_l27_n223
+end
+
+def fun_l26_n167()
+ fun_l27_n341
+end
+
+def fun_l26_n168()
+ fun_l27_n128
+end
+
+def fun_l26_n169()
+ fun_l27_n367
+end
+
+def fun_l26_n170()
+ fun_l27_n487
+end
+
+def fun_l26_n171()
+ fun_l27_n574
+end
+
+def fun_l26_n172()
+ fun_l27_n437
+end
+
+def fun_l26_n173()
+ fun_l27_n182
+end
+
+def fun_l26_n174()
+ fun_l27_n607
+end
+
+def fun_l26_n175()
+ fun_l27_n252
+end
+
+def fun_l26_n176()
+ fun_l27_n996
+end
+
+def fun_l26_n177()
+ fun_l27_n904
+end
+
+def fun_l26_n178()
+ fun_l27_n505
+end
+
+def fun_l26_n179()
+ fun_l27_n425
+end
+
+def fun_l26_n180()
+ fun_l27_n610
+end
+
+def fun_l26_n181()
+ fun_l27_n734
+end
+
+def fun_l26_n182()
+ fun_l27_n427
+end
+
+def fun_l26_n183()
+ fun_l27_n918
+end
+
+def fun_l26_n184()
+ fun_l27_n376
+end
+
+def fun_l26_n185()
+ fun_l27_n445
+end
+
+def fun_l26_n186()
+ fun_l27_n227
+end
+
+def fun_l26_n187()
+ fun_l27_n129
+end
+
+def fun_l26_n188()
+ fun_l27_n139
+end
+
+def fun_l26_n189()
+ fun_l27_n142
+end
+
+def fun_l26_n190()
+ fun_l27_n388
+end
+
+def fun_l26_n191()
+ fun_l27_n24
+end
+
+def fun_l26_n192()
+ fun_l27_n369
+end
+
+def fun_l26_n193()
+ fun_l27_n984
+end
+
+def fun_l26_n194()
+ fun_l27_n342
+end
+
+def fun_l26_n195()
+ fun_l27_n722
+end
+
+def fun_l26_n196()
+ fun_l27_n846
+end
+
+def fun_l26_n197()
+ fun_l27_n59
+end
+
+def fun_l26_n198()
+ fun_l27_n471
+end
+
+def fun_l26_n199()
+ fun_l27_n626
+end
+
+def fun_l26_n200()
+ fun_l27_n973
+end
+
+def fun_l26_n201()
+ fun_l27_n525
+end
+
+def fun_l26_n202()
+ fun_l27_n412
+end
+
+def fun_l26_n203()
+ fun_l27_n284
+end
+
+def fun_l26_n204()
+ fun_l27_n383
+end
+
+def fun_l26_n205()
+ fun_l27_n414
+end
+
+def fun_l26_n206()
+ fun_l27_n448
+end
+
+def fun_l26_n207()
+ fun_l27_n795
+end
+
+def fun_l26_n208()
+ fun_l27_n708
+end
+
+def fun_l26_n209()
+ fun_l27_n318
+end
+
+def fun_l26_n210()
+ fun_l27_n284
+end
+
+def fun_l26_n211()
+ fun_l27_n100
+end
+
+def fun_l26_n212()
+ fun_l27_n702
+end
+
+def fun_l26_n213()
+ fun_l27_n611
+end
+
+def fun_l26_n214()
+ fun_l27_n106
+end
+
+def fun_l26_n215()
+ fun_l27_n667
+end
+
+def fun_l26_n216()
+ fun_l27_n822
+end
+
+def fun_l26_n217()
+ fun_l27_n502
+end
+
+def fun_l26_n218()
+ fun_l27_n284
+end
+
+def fun_l26_n219()
+ fun_l27_n472
+end
+
+def fun_l26_n220()
+ fun_l27_n907
+end
+
+def fun_l26_n221()
+ fun_l27_n115
+end
+
+def fun_l26_n222()
+ fun_l27_n6
+end
+
+def fun_l26_n223()
+ fun_l27_n872
+end
+
+def fun_l26_n224()
+ fun_l27_n145
+end
+
+def fun_l26_n225()
+ fun_l27_n63
+end
+
+def fun_l26_n226()
+ fun_l27_n295
+end
+
+def fun_l26_n227()
+ fun_l27_n160
+end
+
+def fun_l26_n228()
+ fun_l27_n72
+end
+
+def fun_l26_n229()
+ fun_l27_n750
+end
+
+def fun_l26_n230()
+ fun_l27_n386
+end
+
+def fun_l26_n231()
+ fun_l27_n110
+end
+
+def fun_l26_n232()
+ fun_l27_n497
+end
+
+def fun_l26_n233()
+ fun_l27_n586
+end
+
+def fun_l26_n234()
+ fun_l27_n435
+end
+
+def fun_l26_n235()
+ fun_l27_n849
+end
+
+def fun_l26_n236()
+ fun_l27_n47
+end
+
+def fun_l26_n237()
+ fun_l27_n673
+end
+
+def fun_l26_n238()
+ fun_l27_n435
+end
+
+def fun_l26_n239()
+ fun_l27_n295
+end
+
+def fun_l26_n240()
+ fun_l27_n466
+end
+
+def fun_l26_n241()
+ fun_l27_n76
+end
+
+def fun_l26_n242()
+ fun_l27_n679
+end
+
+def fun_l26_n243()
+ fun_l27_n772
+end
+
+def fun_l26_n244()
+ fun_l27_n137
+end
+
+def fun_l26_n245()
+ fun_l27_n582
+end
+
+def fun_l26_n246()
+ fun_l27_n344
+end
+
+def fun_l26_n247()
+ fun_l27_n944
+end
+
+def fun_l26_n248()
+ fun_l27_n657
+end
+
+def fun_l26_n249()
+ fun_l27_n354
+end
+
+def fun_l26_n250()
+ fun_l27_n467
+end
+
+def fun_l26_n251()
+ fun_l27_n436
+end
+
+def fun_l26_n252()
+ fun_l27_n923
+end
+
+def fun_l26_n253()
+ fun_l27_n252
+end
+
+def fun_l26_n254()
+ fun_l27_n404
+end
+
+def fun_l26_n255()
+ fun_l27_n421
+end
+
+def fun_l26_n256()
+ fun_l27_n422
+end
+
+def fun_l26_n257()
+ fun_l27_n787
+end
+
+def fun_l26_n258()
+ fun_l27_n173
+end
+
+def fun_l26_n259()
+ fun_l27_n930
+end
+
+def fun_l26_n260()
+ fun_l27_n625
+end
+
+def fun_l26_n261()
+ fun_l27_n18
+end
+
+def fun_l26_n262()
+ fun_l27_n763
+end
+
+def fun_l26_n263()
+ fun_l27_n641
+end
+
+def fun_l26_n264()
+ fun_l27_n114
+end
+
+def fun_l26_n265()
+ fun_l27_n556
+end
+
+def fun_l26_n266()
+ fun_l27_n127
+end
+
+def fun_l26_n267()
+ fun_l27_n229
+end
+
+def fun_l26_n268()
+ fun_l27_n901
+end
+
+def fun_l26_n269()
+ fun_l27_n234
+end
+
+def fun_l26_n270()
+ fun_l27_n444
+end
+
+def fun_l26_n271()
+ fun_l27_n156
+end
+
+def fun_l26_n272()
+ fun_l27_n35
+end
+
+def fun_l26_n273()
+ fun_l27_n725
+end
+
+def fun_l26_n274()
+ fun_l27_n983
+end
+
+def fun_l26_n275()
+ fun_l27_n845
+end
+
+def fun_l26_n276()
+ fun_l27_n324
+end
+
+def fun_l26_n277()
+ fun_l27_n813
+end
+
+def fun_l26_n278()
+ fun_l27_n331
+end
+
+def fun_l26_n279()
+ fun_l27_n66
+end
+
+def fun_l26_n280()
+ fun_l27_n471
+end
+
+def fun_l26_n281()
+ fun_l27_n635
+end
+
+def fun_l26_n282()
+ fun_l27_n180
+end
+
+def fun_l26_n283()
+ fun_l27_n563
+end
+
+def fun_l26_n284()
+ fun_l27_n199
+end
+
+def fun_l26_n285()
+ fun_l27_n238
+end
+
+def fun_l26_n286()
+ fun_l27_n789
+end
+
+def fun_l26_n287()
+ fun_l27_n413
+end
+
+def fun_l26_n288()
+ fun_l27_n358
+end
+
+def fun_l26_n289()
+ fun_l27_n923
+end
+
+def fun_l26_n290()
+ fun_l27_n443
+end
+
+def fun_l26_n291()
+ fun_l27_n706
+end
+
+def fun_l26_n292()
+ fun_l27_n752
+end
+
+def fun_l26_n293()
+ fun_l27_n231
+end
+
+def fun_l26_n294()
+ fun_l27_n185
+end
+
+def fun_l26_n295()
+ fun_l27_n604
+end
+
+def fun_l26_n296()
+ fun_l27_n10
+end
+
+def fun_l26_n297()
+ fun_l27_n758
+end
+
+def fun_l26_n298()
+ fun_l27_n417
+end
+
+def fun_l26_n299()
+ fun_l27_n303
+end
+
+def fun_l26_n300()
+ fun_l27_n524
+end
+
+def fun_l26_n301()
+ fun_l27_n198
+end
+
+def fun_l26_n302()
+ fun_l27_n127
+end
+
+def fun_l26_n303()
+ fun_l27_n971
+end
+
+def fun_l26_n304()
+ fun_l27_n4
+end
+
+def fun_l26_n305()
+ fun_l27_n333
+end
+
+def fun_l26_n306()
+ fun_l27_n782
+end
+
+def fun_l26_n307()
+ fun_l27_n158
+end
+
+def fun_l26_n308()
+ fun_l27_n414
+end
+
+def fun_l26_n309()
+ fun_l27_n730
+end
+
+def fun_l26_n310()
+ fun_l27_n912
+end
+
+def fun_l26_n311()
+ fun_l27_n343
+end
+
+def fun_l26_n312()
+ fun_l27_n885
+end
+
+def fun_l26_n313()
+ fun_l27_n682
+end
+
+def fun_l26_n314()
+ fun_l27_n126
+end
+
+def fun_l26_n315()
+ fun_l27_n680
+end
+
+def fun_l26_n316()
+ fun_l27_n884
+end
+
+def fun_l26_n317()
+ fun_l27_n483
+end
+
+def fun_l26_n318()
+ fun_l27_n601
+end
+
+def fun_l26_n319()
+ fun_l27_n265
+end
+
+def fun_l26_n320()
+ fun_l27_n109
+end
+
+def fun_l26_n321()
+ fun_l27_n436
+end
+
+def fun_l26_n322()
+ fun_l27_n209
+end
+
+def fun_l26_n323()
+ fun_l27_n669
+end
+
+def fun_l26_n324()
+ fun_l27_n680
+end
+
+def fun_l26_n325()
+ fun_l27_n844
+end
+
+def fun_l26_n326()
+ fun_l27_n729
+end
+
+def fun_l26_n327()
+ fun_l27_n882
+end
+
+def fun_l26_n328()
+ fun_l27_n99
+end
+
+def fun_l26_n329()
+ fun_l27_n586
+end
+
+def fun_l26_n330()
+ fun_l27_n328
+end
+
+def fun_l26_n331()
+ fun_l27_n694
+end
+
+def fun_l26_n332()
+ fun_l27_n259
+end
+
+def fun_l26_n333()
+ fun_l27_n364
+end
+
+def fun_l26_n334()
+ fun_l27_n944
+end
+
+def fun_l26_n335()
+ fun_l27_n483
+end
+
+def fun_l26_n336()
+ fun_l27_n570
+end
+
+def fun_l26_n337()
+ fun_l27_n348
+end
+
+def fun_l26_n338()
+ fun_l27_n565
+end
+
+def fun_l26_n339()
+ fun_l27_n402
+end
+
+def fun_l26_n340()
+ fun_l27_n890
+end
+
+def fun_l26_n341()
+ fun_l27_n486
+end
+
+def fun_l26_n342()
+ fun_l27_n387
+end
+
+def fun_l26_n343()
+ fun_l27_n239
+end
+
+def fun_l26_n344()
+ fun_l27_n433
+end
+
+def fun_l26_n345()
+ fun_l27_n918
+end
+
+def fun_l26_n346()
+ fun_l27_n524
+end
+
+def fun_l26_n347()
+ fun_l27_n475
+end
+
+def fun_l26_n348()
+ fun_l27_n749
+end
+
+def fun_l26_n349()
+ fun_l27_n61
+end
+
+def fun_l26_n350()
+ fun_l27_n735
+end
+
+def fun_l26_n351()
+ fun_l27_n582
+end
+
+def fun_l26_n352()
+ fun_l27_n519
+end
+
+def fun_l26_n353()
+ fun_l27_n234
+end
+
+def fun_l26_n354()
+ fun_l27_n868
+end
+
+def fun_l26_n355()
+ fun_l27_n109
+end
+
+def fun_l26_n356()
+ fun_l27_n898
+end
+
+def fun_l26_n357()
+ fun_l27_n541
+end
+
+def fun_l26_n358()
+ fun_l27_n328
+end
+
+def fun_l26_n359()
+ fun_l27_n954
+end
+
+def fun_l26_n360()
+ fun_l27_n219
+end
+
+def fun_l26_n361()
+ fun_l27_n776
+end
+
+def fun_l26_n362()
+ fun_l27_n402
+end
+
+def fun_l26_n363()
+ fun_l27_n169
+end
+
+def fun_l26_n364()
+ fun_l27_n395
+end
+
+def fun_l26_n365()
+ fun_l27_n852
+end
+
+def fun_l26_n366()
+ fun_l27_n668
+end
+
+def fun_l26_n367()
+ fun_l27_n0
+end
+
+def fun_l26_n368()
+ fun_l27_n660
+end
+
+def fun_l26_n369()
+ fun_l27_n703
+end
+
+def fun_l26_n370()
+ fun_l27_n946
+end
+
+def fun_l26_n371()
+ fun_l27_n522
+end
+
+def fun_l26_n372()
+ fun_l27_n57
+end
+
+def fun_l26_n373()
+ fun_l27_n228
+end
+
+def fun_l26_n374()
+ fun_l27_n25
+end
+
+def fun_l26_n375()
+ fun_l27_n433
+end
+
+def fun_l26_n376()
+ fun_l27_n557
+end
+
+def fun_l26_n377()
+ fun_l27_n542
+end
+
+def fun_l26_n378()
+ fun_l27_n341
+end
+
+def fun_l26_n379()
+ fun_l27_n28
+end
+
+def fun_l26_n380()
+ fun_l27_n591
+end
+
+def fun_l26_n381()
+ fun_l27_n139
+end
+
+def fun_l26_n382()
+ fun_l27_n303
+end
+
+def fun_l26_n383()
+ fun_l27_n369
+end
+
+def fun_l26_n384()
+ fun_l27_n124
+end
+
+def fun_l26_n385()
+ fun_l27_n459
+end
+
+def fun_l26_n386()
+ fun_l27_n338
+end
+
+def fun_l26_n387()
+ fun_l27_n246
+end
+
+def fun_l26_n388()
+ fun_l27_n248
+end
+
+def fun_l26_n389()
+ fun_l27_n182
+end
+
+def fun_l26_n390()
+ fun_l27_n176
+end
+
+def fun_l26_n391()
+ fun_l27_n307
+end
+
+def fun_l26_n392()
+ fun_l27_n782
+end
+
+def fun_l26_n393()
+ fun_l27_n576
+end
+
+def fun_l26_n394()
+ fun_l27_n777
+end
+
+def fun_l26_n395()
+ fun_l27_n962
+end
+
+def fun_l26_n396()
+ fun_l27_n993
+end
+
+def fun_l26_n397()
+ fun_l27_n592
+end
+
+def fun_l26_n398()
+ fun_l27_n710
+end
+
+def fun_l26_n399()
+ fun_l27_n644
+end
+
+def fun_l26_n400()
+ fun_l27_n11
+end
+
+def fun_l26_n401()
+ fun_l27_n774
+end
+
+def fun_l26_n402()
+ fun_l27_n190
+end
+
+def fun_l26_n403()
+ fun_l27_n15
+end
+
+def fun_l26_n404()
+ fun_l27_n47
+end
+
+def fun_l26_n405()
+ fun_l27_n802
+end
+
+def fun_l26_n406()
+ fun_l27_n659
+end
+
+def fun_l26_n407()
+ fun_l27_n295
+end
+
+def fun_l26_n408()
+ fun_l27_n120
+end
+
+def fun_l26_n409()
+ fun_l27_n438
+end
+
+def fun_l26_n410()
+ fun_l27_n443
+end
+
+def fun_l26_n411()
+ fun_l27_n860
+end
+
+def fun_l26_n412()
+ fun_l27_n285
+end
+
+def fun_l26_n413()
+ fun_l27_n457
+end
+
+def fun_l26_n414()
+ fun_l27_n942
+end
+
+def fun_l26_n415()
+ fun_l27_n425
+end
+
+def fun_l26_n416()
+ fun_l27_n54
+end
+
+def fun_l26_n417()
+ fun_l27_n675
+end
+
+def fun_l26_n418()
+ fun_l27_n739
+end
+
+def fun_l26_n419()
+ fun_l27_n709
+end
+
+def fun_l26_n420()
+ fun_l27_n643
+end
+
+def fun_l26_n421()
+ fun_l27_n473
+end
+
+def fun_l26_n422()
+ fun_l27_n452
+end
+
+def fun_l26_n423()
+ fun_l27_n942
+end
+
+def fun_l26_n424()
+ fun_l27_n270
+end
+
+def fun_l26_n425()
+ fun_l27_n711
+end
+
+def fun_l26_n426()
+ fun_l27_n27
+end
+
+def fun_l26_n427()
+ fun_l27_n120
+end
+
+def fun_l26_n428()
+ fun_l27_n565
+end
+
+def fun_l26_n429()
+ fun_l27_n182
+end
+
+def fun_l26_n430()
+ fun_l27_n641
+end
+
+def fun_l26_n431()
+ fun_l27_n227
+end
+
+def fun_l26_n432()
+ fun_l27_n59
+end
+
+def fun_l26_n433()
+ fun_l27_n599
+end
+
+def fun_l26_n434()
+ fun_l27_n448
+end
+
+def fun_l26_n435()
+ fun_l27_n562
+end
+
+def fun_l26_n436()
+ fun_l27_n201
+end
+
+def fun_l26_n437()
+ fun_l27_n929
+end
+
+def fun_l26_n438()
+ fun_l27_n275
+end
+
+def fun_l26_n439()
+ fun_l27_n339
+end
+
+def fun_l26_n440()
+ fun_l27_n519
+end
+
+def fun_l26_n441()
+ fun_l27_n98
+end
+
+def fun_l26_n442()
+ fun_l27_n581
+end
+
+def fun_l26_n443()
+ fun_l27_n840
+end
+
+def fun_l26_n444()
+ fun_l27_n904
+end
+
+def fun_l26_n445()
+ fun_l27_n468
+end
+
+def fun_l26_n446()
+ fun_l27_n6
+end
+
+def fun_l26_n447()
+ fun_l27_n877
+end
+
+def fun_l26_n448()
+ fun_l27_n609
+end
+
+def fun_l26_n449()
+ fun_l27_n218
+end
+
+def fun_l26_n450()
+ fun_l27_n869
+end
+
+def fun_l26_n451()
+ fun_l27_n184
+end
+
+def fun_l26_n452()
+ fun_l27_n7
+end
+
+def fun_l26_n453()
+ fun_l27_n647
+end
+
+def fun_l26_n454()
+ fun_l27_n470
+end
+
+def fun_l26_n455()
+ fun_l27_n547
+end
+
+def fun_l26_n456()
+ fun_l27_n277
+end
+
+def fun_l26_n457()
+ fun_l27_n302
+end
+
+def fun_l26_n458()
+ fun_l27_n355
+end
+
+def fun_l26_n459()
+ fun_l27_n805
+end
+
+def fun_l26_n460()
+ fun_l27_n201
+end
+
+def fun_l26_n461()
+ fun_l27_n16
+end
+
+def fun_l26_n462()
+ fun_l27_n156
+end
+
+def fun_l26_n463()
+ fun_l27_n219
+end
+
+def fun_l26_n464()
+ fun_l27_n507
+end
+
+def fun_l26_n465()
+ fun_l27_n527
+end
+
+def fun_l26_n466()
+ fun_l27_n307
+end
+
+def fun_l26_n467()
+ fun_l27_n654
+end
+
+def fun_l26_n468()
+ fun_l27_n699
+end
+
+def fun_l26_n469()
+ fun_l27_n772
+end
+
+def fun_l26_n470()
+ fun_l27_n761
+end
+
+def fun_l26_n471()
+ fun_l27_n736
+end
+
+def fun_l26_n472()
+ fun_l27_n104
+end
+
+def fun_l26_n473()
+ fun_l27_n720
+end
+
+def fun_l26_n474()
+ fun_l27_n418
+end
+
+def fun_l26_n475()
+ fun_l27_n403
+end
+
+def fun_l26_n476()
+ fun_l27_n625
+end
+
+def fun_l26_n477()
+ fun_l27_n541
+end
+
+def fun_l26_n478()
+ fun_l27_n441
+end
+
+def fun_l26_n479()
+ fun_l27_n287
+end
+
+def fun_l26_n480()
+ fun_l27_n746
+end
+
+def fun_l26_n481()
+ fun_l27_n205
+end
+
+def fun_l26_n482()
+ fun_l27_n771
+end
+
+def fun_l26_n483()
+ fun_l27_n778
+end
+
+def fun_l26_n484()
+ fun_l27_n284
+end
+
+def fun_l26_n485()
+ fun_l27_n475
+end
+
+def fun_l26_n486()
+ fun_l27_n449
+end
+
+def fun_l26_n487()
+ fun_l27_n485
+end
+
+def fun_l26_n488()
+ fun_l27_n124
+end
+
+def fun_l26_n489()
+ fun_l27_n4
+end
+
+def fun_l26_n490()
+ fun_l27_n270
+end
+
+def fun_l26_n491()
+ fun_l27_n596
+end
+
+def fun_l26_n492()
+ fun_l27_n279
+end
+
+def fun_l26_n493()
+ fun_l27_n226
+end
+
+def fun_l26_n494()
+ fun_l27_n718
+end
+
+def fun_l26_n495()
+ fun_l27_n324
+end
+
+def fun_l26_n496()
+ fun_l27_n430
+end
+
+def fun_l26_n497()
+ fun_l27_n196
+end
+
+def fun_l26_n498()
+ fun_l27_n509
+end
+
+def fun_l26_n499()
+ fun_l27_n282
+end
+
+def fun_l26_n500()
+ fun_l27_n61
+end
+
+def fun_l26_n501()
+ fun_l27_n995
+end
+
+def fun_l26_n502()
+ fun_l27_n75
+end
+
+def fun_l26_n503()
+ fun_l27_n158
+end
+
+def fun_l26_n504()
+ fun_l27_n551
+end
+
+def fun_l26_n505()
+ fun_l27_n936
+end
+
+def fun_l26_n506()
+ fun_l27_n23
+end
+
+def fun_l26_n507()
+ fun_l27_n799
+end
+
+def fun_l26_n508()
+ fun_l27_n25
+end
+
+def fun_l26_n509()
+ fun_l27_n533
+end
+
+def fun_l26_n510()
+ fun_l27_n325
+end
+
+def fun_l26_n511()
+ fun_l27_n375
+end
+
+def fun_l26_n512()
+ fun_l27_n18
+end
+
+def fun_l26_n513()
+ fun_l27_n497
+end
+
+def fun_l26_n514()
+ fun_l27_n51
+end
+
+def fun_l26_n515()
+ fun_l27_n680
+end
+
+def fun_l26_n516()
+ fun_l27_n152
+end
+
+def fun_l26_n517()
+ fun_l27_n495
+end
+
+def fun_l26_n518()
+ fun_l27_n956
+end
+
+def fun_l26_n519()
+ fun_l27_n187
+end
+
+def fun_l26_n520()
+ fun_l27_n292
+end
+
+def fun_l26_n521()
+ fun_l27_n663
+end
+
+def fun_l26_n522()
+ fun_l27_n178
+end
+
+def fun_l26_n523()
+ fun_l27_n323
+end
+
+def fun_l26_n524()
+ fun_l27_n222
+end
+
+def fun_l26_n525()
+ fun_l27_n652
+end
+
+def fun_l26_n526()
+ fun_l27_n519
+end
+
+def fun_l26_n527()
+ fun_l27_n102
+end
+
+def fun_l26_n528()
+ fun_l27_n361
+end
+
+def fun_l26_n529()
+ fun_l27_n201
+end
+
+def fun_l26_n530()
+ fun_l27_n129
+end
+
+def fun_l26_n531()
+ fun_l27_n438
+end
+
+def fun_l26_n532()
+ fun_l27_n387
+end
+
+def fun_l26_n533()
+ fun_l27_n641
+end
+
+def fun_l26_n534()
+ fun_l27_n111
+end
+
+def fun_l26_n535()
+ fun_l27_n548
+end
+
+def fun_l26_n536()
+ fun_l27_n446
+end
+
+def fun_l26_n537()
+ fun_l27_n302
+end
+
+def fun_l26_n538()
+ fun_l27_n438
+end
+
+def fun_l26_n539()
+ fun_l27_n816
+end
+
+def fun_l26_n540()
+ fun_l27_n759
+end
+
+def fun_l26_n541()
+ fun_l27_n318
+end
+
+def fun_l26_n542()
+ fun_l27_n895
+end
+
+def fun_l26_n543()
+ fun_l27_n309
+end
+
+def fun_l26_n544()
+ fun_l27_n35
+end
+
+def fun_l26_n545()
+ fun_l27_n785
+end
+
+def fun_l26_n546()
+ fun_l27_n846
+end
+
+def fun_l26_n547()
+ fun_l27_n191
+end
+
+def fun_l26_n548()
+ fun_l27_n414
+end
+
+def fun_l26_n549()
+ fun_l27_n251
+end
+
+def fun_l26_n550()
+ fun_l27_n982
+end
+
+def fun_l26_n551()
+ fun_l27_n516
+end
+
+def fun_l26_n552()
+ fun_l27_n724
+end
+
+def fun_l26_n553()
+ fun_l27_n473
+end
+
+def fun_l26_n554()
+ fun_l27_n808
+end
+
+def fun_l26_n555()
+ fun_l27_n617
+end
+
+def fun_l26_n556()
+ fun_l27_n306
+end
+
+def fun_l26_n557()
+ fun_l27_n701
+end
+
+def fun_l26_n558()
+ fun_l27_n941
+end
+
+def fun_l26_n559()
+ fun_l27_n60
+end
+
+def fun_l26_n560()
+ fun_l27_n132
+end
+
+def fun_l26_n561()
+ fun_l27_n685
+end
+
+def fun_l26_n562()
+ fun_l27_n619
+end
+
+def fun_l26_n563()
+ fun_l27_n407
+end
+
+def fun_l26_n564()
+ fun_l27_n29
+end
+
+def fun_l26_n565()
+ fun_l27_n53
+end
+
+def fun_l26_n566()
+ fun_l27_n267
+end
+
+def fun_l26_n567()
+ fun_l27_n79
+end
+
+def fun_l26_n568()
+ fun_l27_n170
+end
+
+def fun_l26_n569()
+ fun_l27_n469
+end
+
+def fun_l26_n570()
+ fun_l27_n67
+end
+
+def fun_l26_n571()
+ fun_l27_n794
+end
+
+def fun_l26_n572()
+ fun_l27_n641
+end
+
+def fun_l26_n573()
+ fun_l27_n224
+end
+
+def fun_l26_n574()
+ fun_l27_n415
+end
+
+def fun_l26_n575()
+ fun_l27_n235
+end
+
+def fun_l26_n576()
+ fun_l27_n425
+end
+
+def fun_l26_n577()
+ fun_l27_n335
+end
+
+def fun_l26_n578()
+ fun_l27_n251
+end
+
+def fun_l26_n579()
+ fun_l27_n421
+end
+
+def fun_l26_n580()
+ fun_l27_n20
+end
+
+def fun_l26_n581()
+ fun_l27_n795
+end
+
+def fun_l26_n582()
+ fun_l27_n831
+end
+
+def fun_l26_n583()
+ fun_l27_n666
+end
+
+def fun_l26_n584()
+ fun_l27_n664
+end
+
+def fun_l26_n585()
+ fun_l27_n383
+end
+
+def fun_l26_n586()
+ fun_l27_n587
+end
+
+def fun_l26_n587()
+ fun_l27_n515
+end
+
+def fun_l26_n588()
+ fun_l27_n410
+end
+
+def fun_l26_n589()
+ fun_l27_n379
+end
+
+def fun_l26_n590()
+ fun_l27_n467
+end
+
+def fun_l26_n591()
+ fun_l27_n557
+end
+
+def fun_l26_n592()
+ fun_l27_n444
+end
+
+def fun_l26_n593()
+ fun_l27_n629
+end
+
+def fun_l26_n594()
+ fun_l27_n55
+end
+
+def fun_l26_n595()
+ fun_l27_n581
+end
+
+def fun_l26_n596()
+ fun_l27_n106
+end
+
+def fun_l26_n597()
+ fun_l27_n896
+end
+
+def fun_l26_n598()
+ fun_l27_n180
+end
+
+def fun_l26_n599()
+ fun_l27_n471
+end
+
+def fun_l26_n600()
+ fun_l27_n28
+end
+
+def fun_l26_n601()
+ fun_l27_n195
+end
+
+def fun_l26_n602()
+ fun_l27_n562
+end
+
+def fun_l26_n603()
+ fun_l27_n367
+end
+
+def fun_l26_n604()
+ fun_l27_n609
+end
+
+def fun_l26_n605()
+ fun_l27_n699
+end
+
+def fun_l26_n606()
+ fun_l27_n300
+end
+
+def fun_l26_n607()
+ fun_l27_n28
+end
+
+def fun_l26_n608()
+ fun_l27_n362
+end
+
+def fun_l26_n609()
+ fun_l27_n188
+end
+
+def fun_l26_n610()
+ fun_l27_n320
+end
+
+def fun_l26_n611()
+ fun_l27_n974
+end
+
+def fun_l26_n612()
+ fun_l27_n226
+end
+
+def fun_l26_n613()
+ fun_l27_n723
+end
+
+def fun_l26_n614()
+ fun_l27_n406
+end
+
+def fun_l26_n615()
+ fun_l27_n60
+end
+
+def fun_l26_n616()
+ fun_l27_n921
+end
+
+def fun_l26_n617()
+ fun_l27_n141
+end
+
+def fun_l26_n618()
+ fun_l27_n781
+end
+
+def fun_l26_n619()
+ fun_l27_n279
+end
+
+def fun_l26_n620()
+ fun_l27_n159
+end
+
+def fun_l26_n621()
+ fun_l27_n396
+end
+
+def fun_l26_n622()
+ fun_l27_n365
+end
+
+def fun_l26_n623()
+ fun_l27_n128
+end
+
+def fun_l26_n624()
+ fun_l27_n143
+end
+
+def fun_l26_n625()
+ fun_l27_n553
+end
+
+def fun_l26_n626()
+ fun_l27_n695
+end
+
+def fun_l26_n627()
+ fun_l27_n526
+end
+
+def fun_l26_n628()
+ fun_l27_n623
+end
+
+def fun_l26_n629()
+ fun_l27_n589
+end
+
+def fun_l26_n630()
+ fun_l27_n328
+end
+
+def fun_l26_n631()
+ fun_l27_n959
+end
+
+def fun_l26_n632()
+ fun_l27_n586
+end
+
+def fun_l26_n633()
+ fun_l27_n163
+end
+
+def fun_l26_n634()
+ fun_l27_n821
+end
+
+def fun_l26_n635()
+ fun_l27_n981
+end
+
+def fun_l26_n636()
+ fun_l27_n221
+end
+
+def fun_l26_n637()
+ fun_l27_n752
+end
+
+def fun_l26_n638()
+ fun_l27_n252
+end
+
+def fun_l26_n639()
+ fun_l27_n74
+end
+
+def fun_l26_n640()
+ fun_l27_n694
+end
+
+def fun_l26_n641()
+ fun_l27_n761
+end
+
+def fun_l26_n642()
+ fun_l27_n877
+end
+
+def fun_l26_n643()
+ fun_l27_n480
+end
+
+def fun_l26_n644()
+ fun_l27_n627
+end
+
+def fun_l26_n645()
+ fun_l27_n586
+end
+
+def fun_l26_n646()
+ fun_l27_n820
+end
+
+def fun_l26_n647()
+ fun_l27_n485
+end
+
+def fun_l26_n648()
+ fun_l27_n230
+end
+
+def fun_l26_n649()
+ fun_l27_n698
+end
+
+def fun_l26_n650()
+ fun_l27_n700
+end
+
+def fun_l26_n651()
+ fun_l27_n536
+end
+
+def fun_l26_n652()
+ fun_l27_n343
+end
+
+def fun_l26_n653()
+ fun_l27_n453
+end
+
+def fun_l26_n654()
+ fun_l27_n780
+end
+
+def fun_l26_n655()
+ fun_l27_n402
+end
+
+def fun_l26_n656()
+ fun_l27_n749
+end
+
+def fun_l26_n657()
+ fun_l27_n248
+end
+
+def fun_l26_n658()
+ fun_l27_n326
+end
+
+def fun_l26_n659()
+ fun_l27_n819
+end
+
+def fun_l26_n660()
+ fun_l27_n968
+end
+
+def fun_l26_n661()
+ fun_l27_n123
+end
+
+def fun_l26_n662()
+ fun_l27_n467
+end
+
+def fun_l26_n663()
+ fun_l27_n855
+end
+
+def fun_l26_n664()
+ fun_l27_n861
+end
+
+def fun_l26_n665()
+ fun_l27_n335
+end
+
+def fun_l26_n666()
+ fun_l27_n805
+end
+
+def fun_l26_n667()
+ fun_l27_n284
+end
+
+def fun_l26_n668()
+ fun_l27_n283
+end
+
+def fun_l26_n669()
+ fun_l27_n471
+end
+
+def fun_l26_n670()
+ fun_l27_n479
+end
+
+def fun_l26_n671()
+ fun_l27_n938
+end
+
+def fun_l26_n672()
+ fun_l27_n288
+end
+
+def fun_l26_n673()
+ fun_l27_n0
+end
+
+def fun_l26_n674()
+ fun_l27_n856
+end
+
+def fun_l26_n675()
+ fun_l27_n490
+end
+
+def fun_l26_n676()
+ fun_l27_n88
+end
+
+def fun_l26_n677()
+ fun_l27_n584
+end
+
+def fun_l26_n678()
+ fun_l27_n138
+end
+
+def fun_l26_n679()
+ fun_l27_n998
+end
+
+def fun_l26_n680()
+ fun_l27_n259
+end
+
+def fun_l26_n681()
+ fun_l27_n913
+end
+
+def fun_l26_n682()
+ fun_l27_n697
+end
+
+def fun_l26_n683()
+ fun_l27_n102
+end
+
+def fun_l26_n684()
+ fun_l27_n726
+end
+
+def fun_l26_n685()
+ fun_l27_n655
+end
+
+def fun_l26_n686()
+ fun_l27_n264
+end
+
+def fun_l26_n687()
+ fun_l27_n603
+end
+
+def fun_l26_n688()
+ fun_l27_n331
+end
+
+def fun_l26_n689()
+ fun_l27_n760
+end
+
+def fun_l26_n690()
+ fun_l27_n105
+end
+
+def fun_l26_n691()
+ fun_l27_n554
+end
+
+def fun_l26_n692()
+ fun_l27_n287
+end
+
+def fun_l26_n693()
+ fun_l27_n592
+end
+
+def fun_l26_n694()
+ fun_l27_n22
+end
+
+def fun_l26_n695()
+ fun_l27_n794
+end
+
+def fun_l26_n696()
+ fun_l27_n196
+end
+
+def fun_l26_n697()
+ fun_l27_n848
+end
+
+def fun_l26_n698()
+ fun_l27_n589
+end
+
+def fun_l26_n699()
+ fun_l27_n267
+end
+
+def fun_l26_n700()
+ fun_l27_n562
+end
+
+def fun_l26_n701()
+ fun_l27_n563
+end
+
+def fun_l26_n702()
+ fun_l27_n909
+end
+
+def fun_l26_n703()
+ fun_l27_n92
+end
+
+def fun_l26_n704()
+ fun_l27_n140
+end
+
+def fun_l26_n705()
+ fun_l27_n330
+end
+
+def fun_l26_n706()
+ fun_l27_n734
+end
+
+def fun_l26_n707()
+ fun_l27_n994
+end
+
+def fun_l26_n708()
+ fun_l27_n414
+end
+
+def fun_l26_n709()
+ fun_l27_n931
+end
+
+def fun_l26_n710()
+ fun_l27_n82
+end
+
+def fun_l26_n711()
+ fun_l27_n341
+end
+
+def fun_l26_n712()
+ fun_l27_n9
+end
+
+def fun_l26_n713()
+ fun_l27_n868
+end
+
+def fun_l26_n714()
+ fun_l27_n249
+end
+
+def fun_l26_n715()
+ fun_l27_n393
+end
+
+def fun_l26_n716()
+ fun_l27_n835
+end
+
+def fun_l26_n717()
+ fun_l27_n975
+end
+
+def fun_l26_n718()
+ fun_l27_n110
+end
+
+def fun_l26_n719()
+ fun_l27_n700
+end
+
+def fun_l26_n720()
+ fun_l27_n396
+end
+
+def fun_l26_n721()
+ fun_l27_n973
+end
+
+def fun_l26_n722()
+ fun_l27_n898
+end
+
+def fun_l26_n723()
+ fun_l27_n418
+end
+
+def fun_l26_n724()
+ fun_l27_n342
+end
+
+def fun_l26_n725()
+ fun_l27_n783
+end
+
+def fun_l26_n726()
+ fun_l27_n86
+end
+
+def fun_l26_n727()
+ fun_l27_n556
+end
+
+def fun_l26_n728()
+ fun_l27_n777
+end
+
+def fun_l26_n729()
+ fun_l27_n729
+end
+
+def fun_l26_n730()
+ fun_l27_n156
+end
+
+def fun_l26_n731()
+ fun_l27_n458
+end
+
+def fun_l26_n732()
+ fun_l27_n580
+end
+
+def fun_l26_n733()
+ fun_l27_n764
+end
+
+def fun_l26_n734()
+ fun_l27_n295
+end
+
+def fun_l26_n735()
+ fun_l27_n850
+end
+
+def fun_l26_n736()
+ fun_l27_n881
+end
+
+def fun_l26_n737()
+ fun_l27_n416
+end
+
+def fun_l26_n738()
+ fun_l27_n996
+end
+
+def fun_l26_n739()
+ fun_l27_n347
+end
+
+def fun_l26_n740()
+ fun_l27_n607
+end
+
+def fun_l26_n741()
+ fun_l27_n749
+end
+
+def fun_l26_n742()
+ fun_l27_n564
+end
+
+def fun_l26_n743()
+ fun_l27_n217
+end
+
+def fun_l26_n744()
+ fun_l27_n375
+end
+
+def fun_l26_n745()
+ fun_l27_n487
+end
+
+def fun_l26_n746()
+ fun_l27_n86
+end
+
+def fun_l26_n747()
+ fun_l27_n765
+end
+
+def fun_l26_n748()
+ fun_l27_n569
+end
+
+def fun_l26_n749()
+ fun_l27_n461
+end
+
+def fun_l26_n750()
+ fun_l27_n633
+end
+
+def fun_l26_n751()
+ fun_l27_n89
+end
+
+def fun_l26_n752()
+ fun_l27_n841
+end
+
+def fun_l26_n753()
+ fun_l27_n499
+end
+
+def fun_l26_n754()
+ fun_l27_n947
+end
+
+def fun_l26_n755()
+ fun_l27_n690
+end
+
+def fun_l26_n756()
+ fun_l27_n531
+end
+
+def fun_l26_n757()
+ fun_l27_n766
+end
+
+def fun_l26_n758()
+ fun_l27_n853
+end
+
+def fun_l26_n759()
+ fun_l27_n65
+end
+
+def fun_l26_n760()
+ fun_l27_n884
+end
+
+def fun_l26_n761()
+ fun_l27_n235
+end
+
+def fun_l26_n762()
+ fun_l27_n39
+end
+
+def fun_l26_n763()
+ fun_l27_n868
+end
+
+def fun_l26_n764()
+ fun_l27_n202
+end
+
+def fun_l26_n765()
+ fun_l27_n360
+end
+
+def fun_l26_n766()
+ fun_l27_n450
+end
+
+def fun_l26_n767()
+ fun_l27_n590
+end
+
+def fun_l26_n768()
+ fun_l27_n635
+end
+
+def fun_l26_n769()
+ fun_l27_n314
+end
+
+def fun_l26_n770()
+ fun_l27_n68
+end
+
+def fun_l26_n771()
+ fun_l27_n858
+end
+
+def fun_l26_n772()
+ fun_l27_n51
+end
+
+def fun_l26_n773()
+ fun_l27_n524
+end
+
+def fun_l26_n774()
+ fun_l27_n13
+end
+
+def fun_l26_n775()
+ fun_l27_n451
+end
+
+def fun_l26_n776()
+ fun_l27_n682
+end
+
+def fun_l26_n777()
+ fun_l27_n736
+end
+
+def fun_l26_n778()
+ fun_l27_n250
+end
+
+def fun_l26_n779()
+ fun_l27_n810
+end
+
+def fun_l26_n780()
+ fun_l27_n979
+end
+
+def fun_l26_n781()
+ fun_l27_n102
+end
+
+def fun_l26_n782()
+ fun_l27_n955
+end
+
+def fun_l26_n783()
+ fun_l27_n610
+end
+
+def fun_l26_n784()
+ fun_l27_n301
+end
+
+def fun_l26_n785()
+ fun_l27_n389
+end
+
+def fun_l26_n786()
+ fun_l27_n754
+end
+
+def fun_l26_n787()
+ fun_l27_n717
+end
+
+def fun_l26_n788()
+ fun_l27_n77
+end
+
+def fun_l26_n789()
+ fun_l27_n401
+end
+
+def fun_l26_n790()
+ fun_l27_n430
+end
+
+def fun_l26_n791()
+ fun_l27_n310
+end
+
+def fun_l26_n792()
+ fun_l27_n839
+end
+
+def fun_l26_n793()
+ fun_l27_n682
+end
+
+def fun_l26_n794()
+ fun_l27_n648
+end
+
+def fun_l26_n795()
+ fun_l27_n281
+end
+
+def fun_l26_n796()
+ fun_l27_n749
+end
+
+def fun_l26_n797()
+ fun_l27_n502
+end
+
+def fun_l26_n798()
+ fun_l27_n201
+end
+
+def fun_l26_n799()
+ fun_l27_n851
+end
+
+def fun_l26_n800()
+ fun_l27_n249
+end
+
+def fun_l26_n801()
+ fun_l27_n119
+end
+
+def fun_l26_n802()
+ fun_l27_n519
+end
+
+def fun_l26_n803()
+ fun_l27_n157
+end
+
+def fun_l26_n804()
+ fun_l27_n53
+end
+
+def fun_l26_n805()
+ fun_l27_n765
+end
+
+def fun_l26_n806()
+ fun_l27_n48
+end
+
+def fun_l26_n807()
+ fun_l27_n127
+end
+
+def fun_l26_n808()
+ fun_l27_n418
+end
+
+def fun_l26_n809()
+ fun_l27_n650
+end
+
+def fun_l26_n810()
+ fun_l27_n918
+end
+
+def fun_l26_n811()
+ fun_l27_n878
+end
+
+def fun_l26_n812()
+ fun_l27_n244
+end
+
+def fun_l26_n813()
+ fun_l27_n611
+end
+
+def fun_l26_n814()
+ fun_l27_n82
+end
+
+def fun_l26_n815()
+ fun_l27_n6
+end
+
+def fun_l26_n816()
+ fun_l27_n486
+end
+
+def fun_l26_n817()
+ fun_l27_n711
+end
+
+def fun_l26_n818()
+ fun_l27_n792
+end
+
+def fun_l26_n819()
+ fun_l27_n974
+end
+
+def fun_l26_n820()
+ fun_l27_n480
+end
+
+def fun_l26_n821()
+ fun_l27_n460
+end
+
+def fun_l26_n822()
+ fun_l27_n520
+end
+
+def fun_l26_n823()
+ fun_l27_n803
+end
+
+def fun_l26_n824()
+ fun_l27_n734
+end
+
+def fun_l26_n825()
+ fun_l27_n336
+end
+
+def fun_l26_n826()
+ fun_l27_n657
+end
+
+def fun_l26_n827()
+ fun_l27_n20
+end
+
+def fun_l26_n828()
+ fun_l27_n83
+end
+
+def fun_l26_n829()
+ fun_l27_n452
+end
+
+def fun_l26_n830()
+ fun_l27_n973
+end
+
+def fun_l26_n831()
+ fun_l27_n79
+end
+
+def fun_l26_n832()
+ fun_l27_n327
+end
+
+def fun_l26_n833()
+ fun_l27_n36
+end
+
+def fun_l26_n834()
+ fun_l27_n186
+end
+
+def fun_l26_n835()
+ fun_l27_n946
+end
+
+def fun_l26_n836()
+ fun_l27_n776
+end
+
+def fun_l26_n837()
+ fun_l27_n33
+end
+
+def fun_l26_n838()
+ fun_l27_n966
+end
+
+def fun_l26_n839()
+ fun_l27_n961
+end
+
+def fun_l26_n840()
+ fun_l27_n181
+end
+
+def fun_l26_n841()
+ fun_l27_n103
+end
+
+def fun_l26_n842()
+ fun_l27_n500
+end
+
+def fun_l26_n843()
+ fun_l27_n359
+end
+
+def fun_l26_n844()
+ fun_l27_n316
+end
+
+def fun_l26_n845()
+ fun_l27_n921
+end
+
+def fun_l26_n846()
+ fun_l27_n745
+end
+
+def fun_l26_n847()
+ fun_l27_n555
+end
+
+def fun_l26_n848()
+ fun_l27_n306
+end
+
+def fun_l26_n849()
+ fun_l27_n462
+end
+
+def fun_l26_n850()
+ fun_l27_n369
+end
+
+def fun_l26_n851()
+ fun_l27_n489
+end
+
+def fun_l26_n852()
+ fun_l27_n276
+end
+
+def fun_l26_n853()
+ fun_l27_n509
+end
+
+def fun_l26_n854()
+ fun_l27_n524
+end
+
+def fun_l26_n855()
+ fun_l27_n421
+end
+
+def fun_l26_n856()
+ fun_l27_n845
+end
+
+def fun_l26_n857()
+ fun_l27_n600
+end
+
+def fun_l26_n858()
+ fun_l27_n961
+end
+
+def fun_l26_n859()
+ fun_l27_n506
+end
+
+def fun_l26_n860()
+ fun_l27_n106
+end
+
+def fun_l26_n861()
+ fun_l27_n525
+end
+
+def fun_l26_n862()
+ fun_l27_n515
+end
+
+def fun_l26_n863()
+ fun_l27_n506
+end
+
+def fun_l26_n864()
+ fun_l27_n283
+end
+
+def fun_l26_n865()
+ fun_l27_n189
+end
+
+def fun_l26_n866()
+ fun_l27_n181
+end
+
+def fun_l26_n867()
+ fun_l27_n338
+end
+
+def fun_l26_n868()
+ fun_l27_n965
+end
+
+def fun_l26_n869()
+ fun_l27_n219
+end
+
+def fun_l26_n870()
+ fun_l27_n604
+end
+
+def fun_l26_n871()
+ fun_l27_n211
+end
+
+def fun_l26_n872()
+ fun_l27_n225
+end
+
+def fun_l26_n873()
+ fun_l27_n776
+end
+
+def fun_l26_n874()
+ fun_l27_n723
+end
+
+def fun_l26_n875()
+ fun_l27_n653
+end
+
+def fun_l26_n876()
+ fun_l27_n157
+end
+
+def fun_l26_n877()
+ fun_l27_n321
+end
+
+def fun_l26_n878()
+ fun_l27_n684
+end
+
+def fun_l26_n879()
+ fun_l27_n270
+end
+
+def fun_l26_n880()
+ fun_l27_n575
+end
+
+def fun_l26_n881()
+ fun_l27_n201
+end
+
+def fun_l26_n882()
+ fun_l27_n772
+end
+
+def fun_l26_n883()
+ fun_l27_n610
+end
+
+def fun_l26_n884()
+ fun_l27_n117
+end
+
+def fun_l26_n885()
+ fun_l27_n706
+end
+
+def fun_l26_n886()
+ fun_l27_n245
+end
+
+def fun_l26_n887()
+ fun_l27_n173
+end
+
+def fun_l26_n888()
+ fun_l27_n679
+end
+
+def fun_l26_n889()
+ fun_l27_n725
+end
+
+def fun_l26_n890()
+ fun_l27_n481
+end
+
+def fun_l26_n891()
+ fun_l27_n632
+end
+
+def fun_l26_n892()
+ fun_l27_n20
+end
+
+def fun_l26_n893()
+ fun_l27_n649
+end
+
+def fun_l26_n894()
+ fun_l27_n560
+end
+
+def fun_l26_n895()
+ fun_l27_n861
+end
+
+def fun_l26_n896()
+ fun_l27_n565
+end
+
+def fun_l26_n897()
+ fun_l27_n864
+end
+
+def fun_l26_n898()
+ fun_l27_n590
+end
+
+def fun_l26_n899()
+ fun_l27_n413
+end
+
+def fun_l26_n900()
+ fun_l27_n833
+end
+
+def fun_l26_n901()
+ fun_l27_n948
+end
+
+def fun_l26_n902()
+ fun_l27_n946
+end
+
+def fun_l26_n903()
+ fun_l27_n211
+end
+
+def fun_l26_n904()
+ fun_l27_n367
+end
+
+def fun_l26_n905()
+ fun_l27_n893
+end
+
+def fun_l26_n906()
+ fun_l27_n710
+end
+
+def fun_l26_n907()
+ fun_l27_n655
+end
+
+def fun_l26_n908()
+ fun_l27_n830
+end
+
+def fun_l26_n909()
+ fun_l27_n649
+end
+
+def fun_l26_n910()
+ fun_l27_n195
+end
+
+def fun_l26_n911()
+ fun_l27_n474
+end
+
+def fun_l26_n912()
+ fun_l27_n362
+end
+
+def fun_l26_n913()
+ fun_l27_n199
+end
+
+def fun_l26_n914()
+ fun_l27_n426
+end
+
+def fun_l26_n915()
+ fun_l27_n123
+end
+
+def fun_l26_n916()
+ fun_l27_n734
+end
+
+def fun_l26_n917()
+ fun_l27_n646
+end
+
+def fun_l26_n918()
+ fun_l27_n603
+end
+
+def fun_l26_n919()
+ fun_l27_n907
+end
+
+def fun_l26_n920()
+ fun_l27_n500
+end
+
+def fun_l26_n921()
+ fun_l27_n30
+end
+
+def fun_l26_n922()
+ fun_l27_n393
+end
+
+def fun_l26_n923()
+ fun_l27_n981
+end
+
+def fun_l26_n924()
+ fun_l27_n318
+end
+
+def fun_l26_n925()
+ fun_l27_n979
+end
+
+def fun_l26_n926()
+ fun_l27_n439
+end
+
+def fun_l26_n927()
+ fun_l27_n398
+end
+
+def fun_l26_n928()
+ fun_l27_n301
+end
+
+def fun_l26_n929()
+ fun_l27_n778
+end
+
+def fun_l26_n930()
+ fun_l27_n318
+end
+
+def fun_l26_n931()
+ fun_l27_n835
+end
+
+def fun_l26_n932()
+ fun_l27_n90
+end
+
+def fun_l26_n933()
+ fun_l27_n321
+end
+
+def fun_l26_n934()
+ fun_l27_n600
+end
+
+def fun_l26_n935()
+ fun_l27_n731
+end
+
+def fun_l26_n936()
+ fun_l27_n318
+end
+
+def fun_l26_n937()
+ fun_l27_n229
+end
+
+def fun_l26_n938()
+ fun_l27_n997
+end
+
+def fun_l26_n939()
+ fun_l27_n105
+end
+
+def fun_l26_n940()
+ fun_l27_n122
+end
+
+def fun_l26_n941()
+ fun_l27_n680
+end
+
+def fun_l26_n942()
+ fun_l27_n814
+end
+
+def fun_l26_n943()
+ fun_l27_n350
+end
+
+def fun_l26_n944()
+ fun_l27_n363
+end
+
+def fun_l26_n945()
+ fun_l27_n82
+end
+
+def fun_l26_n946()
+ fun_l27_n82
+end
+
+def fun_l26_n947()
+ fun_l27_n638
+end
+
+def fun_l26_n948()
+ fun_l27_n677
+end
+
+def fun_l26_n949()
+ fun_l27_n931
+end
+
+def fun_l26_n950()
+ fun_l27_n151
+end
+
+def fun_l26_n951()
+ fun_l27_n862
+end
+
+def fun_l26_n952()
+ fun_l27_n984
+end
+
+def fun_l26_n953()
+ fun_l27_n471
+end
+
+def fun_l26_n954()
+ fun_l27_n859
+end
+
+def fun_l26_n955()
+ fun_l27_n127
+end
+
+def fun_l26_n956()
+ fun_l27_n963
+end
+
+def fun_l26_n957()
+ fun_l27_n859
+end
+
+def fun_l26_n958()
+ fun_l27_n900
+end
+
+def fun_l26_n959()
+ fun_l27_n957
+end
+
+def fun_l26_n960()
+ fun_l27_n443
+end
+
+def fun_l26_n961()
+ fun_l27_n826
+end
+
+def fun_l26_n962()
+ fun_l27_n303
+end
+
+def fun_l26_n963()
+ fun_l27_n766
+end
+
+def fun_l26_n964()
+ fun_l27_n420
+end
+
+def fun_l26_n965()
+ fun_l27_n873
+end
+
+def fun_l26_n966()
+ fun_l27_n285
+end
+
+def fun_l26_n967()
+ fun_l27_n490
+end
+
+def fun_l26_n968()
+ fun_l27_n46
+end
+
+def fun_l26_n969()
+ fun_l27_n451
+end
+
+def fun_l26_n970()
+ fun_l27_n157
+end
+
+def fun_l26_n971()
+ fun_l27_n981
+end
+
+def fun_l26_n972()
+ fun_l27_n969
+end
+
+def fun_l26_n973()
+ fun_l27_n644
+end
+
+def fun_l26_n974()
+ fun_l27_n753
+end
+
+def fun_l26_n975()
+ fun_l27_n306
+end
+
+def fun_l26_n976()
+ fun_l27_n617
+end
+
+def fun_l26_n977()
+ fun_l27_n258
+end
+
+def fun_l26_n978()
+ fun_l27_n511
+end
+
+def fun_l26_n979()
+ fun_l27_n267
+end
+
+def fun_l26_n980()
+ fun_l27_n42
+end
+
+def fun_l26_n981()
+ fun_l27_n153
+end
+
+def fun_l26_n982()
+ fun_l27_n77
+end
+
+def fun_l26_n983()
+ fun_l27_n658
+end
+
+def fun_l26_n984()
+ fun_l27_n605
+end
+
+def fun_l26_n985()
+ fun_l27_n40
+end
+
+def fun_l26_n986()
+ fun_l27_n375
+end
+
+def fun_l26_n987()
+ fun_l27_n273
+end
+
+def fun_l26_n988()
+ fun_l27_n290
+end
+
+def fun_l26_n989()
+ fun_l27_n507
+end
+
+def fun_l26_n990()
+ fun_l27_n537
+end
+
+def fun_l26_n991()
+ fun_l27_n373
+end
+
+def fun_l26_n992()
+ fun_l27_n39
+end
+
+def fun_l26_n993()
+ fun_l27_n356
+end
+
+def fun_l26_n994()
+ fun_l27_n875
+end
+
+def fun_l26_n995()
+ fun_l27_n112
+end
+
+def fun_l26_n996()
+ fun_l27_n209
+end
+
+def fun_l26_n997()
+ fun_l27_n690
+end
+
+def fun_l26_n998()
+ fun_l27_n19
+end
+
+def fun_l26_n999()
+ fun_l27_n962
+end
+
+def fun_l27_n0()
+ fun_l28_n602
+end
+
+def fun_l27_n1()
+ fun_l28_n911
+end
+
+def fun_l27_n2()
+ fun_l28_n797
+end
+
+def fun_l27_n3()
+ fun_l28_n261
+end
+
+def fun_l27_n4()
+ fun_l28_n172
+end
+
+def fun_l27_n5()
+ fun_l28_n430
+end
+
+def fun_l27_n6()
+ fun_l28_n397
+end
+
+def fun_l27_n7()
+ fun_l28_n388
+end
+
+def fun_l27_n8()
+ fun_l28_n218
+end
+
+def fun_l27_n9()
+ fun_l28_n71
+end
+
+def fun_l27_n10()
+ fun_l28_n424
+end
+
+def fun_l27_n11()
+ fun_l28_n454
+end
+
+def fun_l27_n12()
+ fun_l28_n388
+end
+
+def fun_l27_n13()
+ fun_l28_n909
+end
+
+def fun_l27_n14()
+ fun_l28_n655
+end
+
+def fun_l27_n15()
+ fun_l28_n355
+end
+
+def fun_l27_n16()
+ fun_l28_n319
+end
+
+def fun_l27_n17()
+ fun_l28_n137
+end
+
+def fun_l27_n18()
+ fun_l28_n929
+end
+
+def fun_l27_n19()
+ fun_l28_n887
+end
+
+def fun_l27_n20()
+ fun_l28_n571
+end
+
+def fun_l27_n21()
+ fun_l28_n480
+end
+
+def fun_l27_n22()
+ fun_l28_n431
+end
+
+def fun_l27_n23()
+ fun_l28_n918
+end
+
+def fun_l27_n24()
+ fun_l28_n673
+end
+
+def fun_l27_n25()
+ fun_l28_n550
+end
+
+def fun_l27_n26()
+ fun_l28_n256
+end
+
+def fun_l27_n27()
+ fun_l28_n624
+end
+
+def fun_l27_n28()
+ fun_l28_n245
+end
+
+def fun_l27_n29()
+ fun_l28_n303
+end
+
+def fun_l27_n30()
+ fun_l28_n260
+end
+
+def fun_l27_n31()
+ fun_l28_n174
+end
+
+def fun_l27_n32()
+ fun_l28_n147
+end
+
+def fun_l27_n33()
+ fun_l28_n590
+end
+
+def fun_l27_n34()
+ fun_l28_n691
+end
+
+def fun_l27_n35()
+ fun_l28_n739
+end
+
+def fun_l27_n36()
+ fun_l28_n530
+end
+
+def fun_l27_n37()
+ fun_l28_n20
+end
+
+def fun_l27_n38()
+ fun_l28_n147
+end
+
+def fun_l27_n39()
+ fun_l28_n362
+end
+
+def fun_l27_n40()
+ fun_l28_n250
+end
+
+def fun_l27_n41()
+ fun_l28_n579
+end
+
+def fun_l27_n42()
+ fun_l28_n557
+end
+
+def fun_l27_n43()
+ fun_l28_n639
+end
+
+def fun_l27_n44()
+ fun_l28_n309
+end
+
+def fun_l27_n45()
+ fun_l28_n213
+end
+
+def fun_l27_n46()
+ fun_l28_n178
+end
+
+def fun_l27_n47()
+ fun_l28_n974
+end
+
+def fun_l27_n48()
+ fun_l28_n500
+end
+
+def fun_l27_n49()
+ fun_l28_n814
+end
+
+def fun_l27_n50()
+ fun_l28_n930
+end
+
+def fun_l27_n51()
+ fun_l28_n329
+end
+
+def fun_l27_n52()
+ fun_l28_n385
+end
+
+def fun_l27_n53()
+ fun_l28_n214
+end
+
+def fun_l27_n54()
+ fun_l28_n934
+end
+
+def fun_l27_n55()
+ fun_l28_n645
+end
+
+def fun_l27_n56()
+ fun_l28_n311
+end
+
+def fun_l27_n57()
+ fun_l28_n15
+end
+
+def fun_l27_n58()
+ fun_l28_n499
+end
+
+def fun_l27_n59()
+ fun_l28_n919
+end
+
+def fun_l27_n60()
+ fun_l28_n659
+end
+
+def fun_l27_n61()
+ fun_l28_n921
+end
+
+def fun_l27_n62()
+ fun_l28_n306
+end
+
+def fun_l27_n63()
+ fun_l28_n128
+end
+
+def fun_l27_n64()
+ fun_l28_n871
+end
+
+def fun_l27_n65()
+ fun_l28_n434
+end
+
+def fun_l27_n66()
+ fun_l28_n775
+end
+
+def fun_l27_n67()
+ fun_l28_n311
+end
+
+def fun_l27_n68()
+ fun_l28_n959
+end
+
+def fun_l27_n69()
+ fun_l28_n648
+end
+
+def fun_l27_n70()
+ fun_l28_n893
+end
+
+def fun_l27_n71()
+ fun_l28_n669
+end
+
+def fun_l27_n72()
+ fun_l28_n121
+end
+
+def fun_l27_n73()
+ fun_l28_n102
+end
+
+def fun_l27_n74()
+ fun_l28_n887
+end
+
+def fun_l27_n75()
+ fun_l28_n326
+end
+
+def fun_l27_n76()
+ fun_l28_n48
+end
+
+def fun_l27_n77()
+ fun_l28_n636
+end
+
+def fun_l27_n78()
+ fun_l28_n804
+end
+
+def fun_l27_n79()
+ fun_l28_n838
+end
+
+def fun_l27_n80()
+ fun_l28_n859
+end
+
+def fun_l27_n81()
+ fun_l28_n683
+end
+
+def fun_l27_n82()
+ fun_l28_n752
+end
+
+def fun_l27_n83()
+ fun_l28_n244
+end
+
+def fun_l27_n84()
+ fun_l28_n727
+end
+
+def fun_l27_n85()
+ fun_l28_n818
+end
+
+def fun_l27_n86()
+ fun_l28_n451
+end
+
+def fun_l27_n87()
+ fun_l28_n9
+end
+
+def fun_l27_n88()
+ fun_l28_n738
+end
+
+def fun_l27_n89()
+ fun_l28_n589
+end
+
+def fun_l27_n90()
+ fun_l28_n140
+end
+
+def fun_l27_n91()
+ fun_l28_n615
+end
+
+def fun_l27_n92()
+ fun_l28_n973
+end
+
+def fun_l27_n93()
+ fun_l28_n668
+end
+
+def fun_l27_n94()
+ fun_l28_n299
+end
+
+def fun_l27_n95()
+ fun_l28_n358
+end
+
+def fun_l27_n96()
+ fun_l28_n319
+end
+
+def fun_l27_n97()
+ fun_l28_n165
+end
+
+def fun_l27_n98()
+ fun_l28_n67
+end
+
+def fun_l27_n99()
+ fun_l28_n494
+end
+
+def fun_l27_n100()
+ fun_l28_n107
+end
+
+def fun_l27_n101()
+ fun_l28_n985
+end
+
+def fun_l27_n102()
+ fun_l28_n239
+end
+
+def fun_l27_n103()
+ fun_l28_n64
+end
+
+def fun_l27_n104()
+ fun_l28_n676
+end
+
+def fun_l27_n105()
+ fun_l28_n852
+end
+
+def fun_l27_n106()
+ fun_l28_n668
+end
+
+def fun_l27_n107()
+ fun_l28_n523
+end
+
+def fun_l27_n108()
+ fun_l28_n15
+end
+
+def fun_l27_n109()
+ fun_l28_n619
+end
+
+def fun_l27_n110()
+ fun_l28_n440
+end
+
+def fun_l27_n111()
+ fun_l28_n792
+end
+
+def fun_l27_n112()
+ fun_l28_n771
+end
+
+def fun_l27_n113()
+ fun_l28_n263
+end
+
+def fun_l27_n114()
+ fun_l28_n180
+end
+
+def fun_l27_n115()
+ fun_l28_n615
+end
+
+def fun_l27_n116()
+ fun_l28_n319
+end
+
+def fun_l27_n117()
+ fun_l28_n970
+end
+
+def fun_l27_n118()
+ fun_l28_n946
+end
+
+def fun_l27_n119()
+ fun_l28_n121
+end
+
+def fun_l27_n120()
+ fun_l28_n655
+end
+
+def fun_l27_n121()
+ fun_l28_n68
+end
+
+def fun_l27_n122()
+ fun_l28_n406
+end
+
+def fun_l27_n123()
+ fun_l28_n535
+end
+
+def fun_l27_n124()
+ fun_l28_n951
+end
+
+def fun_l27_n125()
+ fun_l28_n366
+end
+
+def fun_l27_n126()
+ fun_l28_n192
+end
+
+def fun_l27_n127()
+ fun_l28_n106
+end
+
+def fun_l27_n128()
+ fun_l28_n21
+end
+
+def fun_l27_n129()
+ fun_l28_n339
+end
+
+def fun_l27_n130()
+ fun_l28_n824
+end
+
+def fun_l27_n131()
+ fun_l28_n921
+end
+
+def fun_l27_n132()
+ fun_l28_n678
+end
+
+def fun_l27_n133()
+ fun_l28_n925
+end
+
+def fun_l27_n134()
+ fun_l28_n55
+end
+
+def fun_l27_n135()
+ fun_l28_n726
+end
+
+def fun_l27_n136()
+ fun_l28_n110
+end
+
+def fun_l27_n137()
+ fun_l28_n559
+end
+
+def fun_l27_n138()
+ fun_l28_n879
+end
+
+def fun_l27_n139()
+ fun_l28_n332
+end
+
+def fun_l27_n140()
+ fun_l28_n167
+end
+
+def fun_l27_n141()
+ fun_l28_n123
+end
+
+def fun_l27_n142()
+ fun_l28_n707
+end
+
+def fun_l27_n143()
+ fun_l28_n423
+end
+
+def fun_l27_n144()
+ fun_l28_n659
+end
+
+def fun_l27_n145()
+ fun_l28_n322
+end
+
+def fun_l27_n146()
+ fun_l28_n227
+end
+
+def fun_l27_n147()
+ fun_l28_n679
+end
+
+def fun_l27_n148()
+ fun_l28_n376
+end
+
+def fun_l27_n149()
+ fun_l28_n327
+end
+
+def fun_l27_n150()
+ fun_l28_n328
+end
+
+def fun_l27_n151()
+ fun_l28_n408
+end
+
+def fun_l27_n152()
+ fun_l28_n141
+end
+
+def fun_l27_n153()
+ fun_l28_n728
+end
+
+def fun_l27_n154()
+ fun_l28_n207
+end
+
+def fun_l27_n155()
+ fun_l28_n836
+end
+
+def fun_l27_n156()
+ fun_l28_n71
+end
+
+def fun_l27_n157()
+ fun_l28_n390
+end
+
+def fun_l27_n158()
+ fun_l28_n277
+end
+
+def fun_l27_n159()
+ fun_l28_n960
+end
+
+def fun_l27_n160()
+ fun_l28_n705
+end
+
+def fun_l27_n161()
+ fun_l28_n445
+end
+
+def fun_l27_n162()
+ fun_l28_n570
+end
+
+def fun_l27_n163()
+ fun_l28_n878
+end
+
+def fun_l27_n164()
+ fun_l28_n714
+end
+
+def fun_l27_n165()
+ fun_l28_n933
+end
+
+def fun_l27_n166()
+ fun_l28_n480
+end
+
+def fun_l27_n167()
+ fun_l28_n308
+end
+
+def fun_l27_n168()
+ fun_l28_n604
+end
+
+def fun_l27_n169()
+ fun_l28_n892
+end
+
+def fun_l27_n170()
+ fun_l28_n901
+end
+
+def fun_l27_n171()
+ fun_l28_n524
+end
+
+def fun_l27_n172()
+ fun_l28_n533
+end
+
+def fun_l27_n173()
+ fun_l28_n761
+end
+
+def fun_l27_n174()
+ fun_l28_n97
+end
+
+def fun_l27_n175()
+ fun_l28_n944
+end
+
+def fun_l27_n176()
+ fun_l28_n627
+end
+
+def fun_l27_n177()
+ fun_l28_n720
+end
+
+def fun_l27_n178()
+ fun_l28_n366
+end
+
+def fun_l27_n179()
+ fun_l28_n353
+end
+
+def fun_l27_n180()
+ fun_l28_n441
+end
+
+def fun_l27_n181()
+ fun_l28_n682
+end
+
+def fun_l27_n182()
+ fun_l28_n581
+end
+
+def fun_l27_n183()
+ fun_l28_n974
+end
+
+def fun_l27_n184()
+ fun_l28_n522
+end
+
+def fun_l27_n185()
+ fun_l28_n702
+end
+
+def fun_l27_n186()
+ fun_l28_n941
+end
+
+def fun_l27_n187()
+ fun_l28_n665
+end
+
+def fun_l27_n188()
+ fun_l28_n148
+end
+
+def fun_l27_n189()
+ fun_l28_n91
+end
+
+def fun_l27_n190()
+ fun_l28_n679
+end
+
+def fun_l27_n191()
+ fun_l28_n929
+end
+
+def fun_l27_n192()
+ fun_l28_n828
+end
+
+def fun_l27_n193()
+ fun_l28_n872
+end
+
+def fun_l27_n194()
+ fun_l28_n152
+end
+
+def fun_l27_n195()
+ fun_l28_n593
+end
+
+def fun_l27_n196()
+ fun_l28_n438
+end
+
+def fun_l27_n197()
+ fun_l28_n390
+end
+
+def fun_l27_n198()
+ fun_l28_n354
+end
+
+def fun_l27_n199()
+ fun_l28_n547
+end
+
+def fun_l27_n200()
+ fun_l28_n249
+end
+
+def fun_l27_n201()
+ fun_l28_n562
+end
+
+def fun_l27_n202()
+ fun_l28_n571
+end
+
+def fun_l27_n203()
+ fun_l28_n763
+end
+
+def fun_l27_n204()
+ fun_l28_n961
+end
+
+def fun_l27_n205()
+ fun_l28_n368
+end
+
+def fun_l27_n206()
+ fun_l28_n219
+end
+
+def fun_l27_n207()
+ fun_l28_n414
+end
+
+def fun_l27_n208()
+ fun_l28_n130
+end
+
+def fun_l27_n209()
+ fun_l28_n911
+end
+
+def fun_l27_n210()
+ fun_l28_n94
+end
+
+def fun_l27_n211()
+ fun_l28_n966
+end
+
+def fun_l27_n212()
+ fun_l28_n271
+end
+
+def fun_l27_n213()
+ fun_l28_n372
+end
+
+def fun_l27_n214()
+ fun_l28_n845
+end
+
+def fun_l27_n215()
+ fun_l28_n924
+end
+
+def fun_l27_n216()
+ fun_l28_n220
+end
+
+def fun_l27_n217()
+ fun_l28_n653
+end
+
+def fun_l27_n218()
+ fun_l28_n960
+end
+
+def fun_l27_n219()
+ fun_l28_n343
+end
+
+def fun_l27_n220()
+ fun_l28_n255
+end
+
+def fun_l27_n221()
+ fun_l28_n206
+end
+
+def fun_l27_n222()
+ fun_l28_n190
+end
+
+def fun_l27_n223()
+ fun_l28_n753
+end
+
+def fun_l27_n224()
+ fun_l28_n530
+end
+
+def fun_l27_n225()
+ fun_l28_n198
+end
+
+def fun_l27_n226()
+ fun_l28_n604
+end
+
+def fun_l27_n227()
+ fun_l28_n685
+end
+
+def fun_l27_n228()
+ fun_l28_n268
+end
+
+def fun_l27_n229()
+ fun_l28_n344
+end
+
+def fun_l27_n230()
+ fun_l28_n850
+end
+
+def fun_l27_n231()
+ fun_l28_n612
+end
+
+def fun_l27_n232()
+ fun_l28_n598
+end
+
+def fun_l27_n233()
+ fun_l28_n766
+end
+
+def fun_l27_n234()
+ fun_l28_n994
+end
+
+def fun_l27_n235()
+ fun_l28_n566
+end
+
+def fun_l27_n236()
+ fun_l28_n306
+end
+
+def fun_l27_n237()
+ fun_l28_n592
+end
+
+def fun_l27_n238()
+ fun_l28_n814
+end
+
+def fun_l27_n239()
+ fun_l28_n319
+end
+
+def fun_l27_n240()
+ fun_l28_n619
+end
+
+def fun_l27_n241()
+ fun_l28_n631
+end
+
+def fun_l27_n242()
+ fun_l28_n240
+end
+
+def fun_l27_n243()
+ fun_l28_n714
+end
+
+def fun_l27_n244()
+ fun_l28_n651
+end
+
+def fun_l27_n245()
+ fun_l28_n760
+end
+
+def fun_l27_n246()
+ fun_l28_n925
+end
+
+def fun_l27_n247()
+ fun_l28_n537
+end
+
+def fun_l27_n248()
+ fun_l28_n541
+end
+
+def fun_l27_n249()
+ fun_l28_n963
+end
+
+def fun_l27_n250()
+ fun_l28_n630
+end
+
+def fun_l27_n251()
+ fun_l28_n124
+end
+
+def fun_l27_n252()
+ fun_l28_n894
+end
+
+def fun_l27_n253()
+ fun_l28_n307
+end
+
+def fun_l27_n254()
+ fun_l28_n485
+end
+
+def fun_l27_n255()
+ fun_l28_n272
+end
+
+def fun_l27_n256()
+ fun_l28_n994
+end
+
+def fun_l27_n257()
+ fun_l28_n48
+end
+
+def fun_l27_n258()
+ fun_l28_n374
+end
+
+def fun_l27_n259()
+ fun_l28_n508
+end
+
+def fun_l27_n260()
+ fun_l28_n936
+end
+
+def fun_l27_n261()
+ fun_l28_n43
+end
+
+def fun_l27_n262()
+ fun_l28_n297
+end
+
+def fun_l27_n263()
+ fun_l28_n205
+end
+
+def fun_l27_n264()
+ fun_l28_n234
+end
+
+def fun_l27_n265()
+ fun_l28_n560
+end
+
+def fun_l27_n266()
+ fun_l28_n124
+end
+
+def fun_l27_n267()
+ fun_l28_n912
+end
+
+def fun_l27_n268()
+ fun_l28_n545
+end
+
+def fun_l27_n269()
+ fun_l28_n266
+end
+
+def fun_l27_n270()
+ fun_l28_n917
+end
+
+def fun_l27_n271()
+ fun_l28_n971
+end
+
+def fun_l27_n272()
+ fun_l28_n305
+end
+
+def fun_l27_n273()
+ fun_l28_n158
+end
+
+def fun_l27_n274()
+ fun_l28_n241
+end
+
+def fun_l27_n275()
+ fun_l28_n667
+end
+
+def fun_l27_n276()
+ fun_l28_n857
+end
+
+def fun_l27_n277()
+ fun_l28_n207
+end
+
+def fun_l27_n278()
+ fun_l28_n258
+end
+
+def fun_l27_n279()
+ fun_l28_n410
+end
+
+def fun_l27_n280()
+ fun_l28_n868
+end
+
+def fun_l27_n281()
+ fun_l28_n976
+end
+
+def fun_l27_n282()
+ fun_l28_n519
+end
+
+def fun_l27_n283()
+ fun_l28_n165
+end
+
+def fun_l27_n284()
+ fun_l28_n790
+end
+
+def fun_l27_n285()
+ fun_l28_n825
+end
+
+def fun_l27_n286()
+ fun_l28_n844
+end
+
+def fun_l27_n287()
+ fun_l28_n450
+end
+
+def fun_l27_n288()
+ fun_l28_n913
+end
+
+def fun_l27_n289()
+ fun_l28_n418
+end
+
+def fun_l27_n290()
+ fun_l28_n63
+end
+
+def fun_l27_n291()
+ fun_l28_n306
+end
+
+def fun_l27_n292()
+ fun_l28_n233
+end
+
+def fun_l27_n293()
+ fun_l28_n274
+end
+
+def fun_l27_n294()
+ fun_l28_n292
+end
+
+def fun_l27_n295()
+ fun_l28_n504
+end
+
+def fun_l27_n296()
+ fun_l28_n769
+end
+
+def fun_l27_n297()
+ fun_l28_n404
+end
+
+def fun_l27_n298()
+ fun_l28_n782
+end
+
+def fun_l27_n299()
+ fun_l28_n788
+end
+
+def fun_l27_n300()
+ fun_l28_n727
+end
+
+def fun_l27_n301()
+ fun_l28_n187
+end
+
+def fun_l27_n302()
+ fun_l28_n568
+end
+
+def fun_l27_n303()
+ fun_l28_n195
+end
+
+def fun_l27_n304()
+ fun_l28_n696
+end
+
+def fun_l27_n305()
+ fun_l28_n293
+end
+
+def fun_l27_n306()
+ fun_l28_n722
+end
+
+def fun_l27_n307()
+ fun_l28_n911
+end
+
+def fun_l27_n308()
+ fun_l28_n827
+end
+
+def fun_l27_n309()
+ fun_l28_n767
+end
+
+def fun_l27_n310()
+ fun_l28_n423
+end
+
+def fun_l27_n311()
+ fun_l28_n60
+end
+
+def fun_l27_n312()
+ fun_l28_n466
+end
+
+def fun_l27_n313()
+ fun_l28_n270
+end
+
+def fun_l27_n314()
+ fun_l28_n993
+end
+
+def fun_l27_n315()
+ fun_l28_n231
+end
+
+def fun_l27_n316()
+ fun_l28_n514
+end
+
+def fun_l27_n317()
+ fun_l28_n57
+end
+
+def fun_l27_n318()
+ fun_l28_n646
+end
+
+def fun_l27_n319()
+ fun_l28_n17
+end
+
+def fun_l27_n320()
+ fun_l28_n964
+end
+
+def fun_l27_n321()
+ fun_l28_n1
+end
+
+def fun_l27_n322()
+ fun_l28_n956
+end
+
+def fun_l27_n323()
+ fun_l28_n273
+end
+
+def fun_l27_n324()
+ fun_l28_n370
+end
+
+def fun_l27_n325()
+ fun_l28_n81
+end
+
+def fun_l27_n326()
+ fun_l28_n765
+end
+
+def fun_l27_n327()
+ fun_l28_n506
+end
+
+def fun_l27_n328()
+ fun_l28_n327
+end
+
+def fun_l27_n329()
+ fun_l28_n362
+end
+
+def fun_l27_n330()
+ fun_l28_n852
+end
+
+def fun_l27_n331()
+ fun_l28_n876
+end
+
+def fun_l27_n332()
+ fun_l28_n531
+end
+
+def fun_l27_n333()
+ fun_l28_n426
+end
+
+def fun_l27_n334()
+ fun_l28_n295
+end
+
+def fun_l27_n335()
+ fun_l28_n929
+end
+
+def fun_l27_n336()
+ fun_l28_n693
+end
+
+def fun_l27_n337()
+ fun_l28_n724
+end
+
+def fun_l27_n338()
+ fun_l28_n784
+end
+
+def fun_l27_n339()
+ fun_l28_n752
+end
+
+def fun_l27_n340()
+ fun_l28_n809
+end
+
+def fun_l27_n341()
+ fun_l28_n269
+end
+
+def fun_l27_n342()
+ fun_l28_n33
+end
+
+def fun_l27_n343()
+ fun_l28_n778
+end
+
+def fun_l27_n344()
+ fun_l28_n974
+end
+
+def fun_l27_n345()
+ fun_l28_n843
+end
+
+def fun_l27_n346()
+ fun_l28_n86
+end
+
+def fun_l27_n347()
+ fun_l28_n594
+end
+
+def fun_l27_n348()
+ fun_l28_n111
+end
+
+def fun_l27_n349()
+ fun_l28_n317
+end
+
+def fun_l27_n350()
+ fun_l28_n238
+end
+
+def fun_l27_n351()
+ fun_l28_n447
+end
+
+def fun_l27_n352()
+ fun_l28_n954
+end
+
+def fun_l27_n353()
+ fun_l28_n846
+end
+
+def fun_l27_n354()
+ fun_l28_n124
+end
+
+def fun_l27_n355()
+ fun_l28_n445
+end
+
+def fun_l27_n356()
+ fun_l28_n957
+end
+
+def fun_l27_n357()
+ fun_l28_n365
+end
+
+def fun_l27_n358()
+ fun_l28_n136
+end
+
+def fun_l27_n359()
+ fun_l28_n372
+end
+
+def fun_l27_n360()
+ fun_l28_n487
+end
+
+def fun_l27_n361()
+ fun_l28_n493
+end
+
+def fun_l27_n362()
+ fun_l28_n905
+end
+
+def fun_l27_n363()
+ fun_l28_n146
+end
+
+def fun_l27_n364()
+ fun_l28_n523
+end
+
+def fun_l27_n365()
+ fun_l28_n876
+end
+
+def fun_l27_n366()
+ fun_l28_n67
+end
+
+def fun_l27_n367()
+ fun_l28_n746
+end
+
+def fun_l27_n368()
+ fun_l28_n264
+end
+
+def fun_l27_n369()
+ fun_l28_n470
+end
+
+def fun_l27_n370()
+ fun_l28_n240
+end
+
+def fun_l27_n371()
+ fun_l28_n928
+end
+
+def fun_l27_n372()
+ fun_l28_n574
+end
+
+def fun_l27_n373()
+ fun_l28_n756
+end
+
+def fun_l27_n374()
+ fun_l28_n244
+end
+
+def fun_l27_n375()
+ fun_l28_n46
+end
+
+def fun_l27_n376()
+ fun_l28_n940
+end
+
+def fun_l27_n377()
+ fun_l28_n430
+end
+
+def fun_l27_n378()
+ fun_l28_n879
+end
+
+def fun_l27_n379()
+ fun_l28_n560
+end
+
+def fun_l27_n380()
+ fun_l28_n231
+end
+
+def fun_l27_n381()
+ fun_l28_n283
+end
+
+def fun_l27_n382()
+ fun_l28_n438
+end
+
+def fun_l27_n383()
+ fun_l28_n207
+end
+
+def fun_l27_n384()
+ fun_l28_n185
+end
+
+def fun_l27_n385()
+ fun_l28_n40
+end
+
+def fun_l27_n386()
+ fun_l28_n572
+end
+
+def fun_l27_n387()
+ fun_l28_n975
+end
+
+def fun_l27_n388()
+ fun_l28_n117
+end
+
+def fun_l27_n389()
+ fun_l28_n329
+end
+
+def fun_l27_n390()
+ fun_l28_n311
+end
+
+def fun_l27_n391()
+ fun_l28_n653
+end
+
+def fun_l27_n392()
+ fun_l28_n522
+end
+
+def fun_l27_n393()
+ fun_l28_n452
+end
+
+def fun_l27_n394()
+ fun_l28_n137
+end
+
+def fun_l27_n395()
+ fun_l28_n606
+end
+
+def fun_l27_n396()
+ fun_l28_n901
+end
+
+def fun_l27_n397()
+ fun_l28_n434
+end
+
+def fun_l27_n398()
+ fun_l28_n863
+end
+
+def fun_l27_n399()
+ fun_l28_n117
+end
+
+def fun_l27_n400()
+ fun_l28_n473
+end
+
+def fun_l27_n401()
+ fun_l28_n638
+end
+
+def fun_l27_n402()
+ fun_l28_n71
+end
+
+def fun_l27_n403()
+ fun_l28_n423
+end
+
+def fun_l27_n404()
+ fun_l28_n362
+end
+
+def fun_l27_n405()
+ fun_l28_n537
+end
+
+def fun_l27_n406()
+ fun_l28_n975
+end
+
+def fun_l27_n407()
+ fun_l28_n424
+end
+
+def fun_l27_n408()
+ fun_l28_n613
+end
+
+def fun_l27_n409()
+ fun_l28_n606
+end
+
+def fun_l27_n410()
+ fun_l28_n782
+end
+
+def fun_l27_n411()
+ fun_l28_n445
+end
+
+def fun_l27_n412()
+ fun_l28_n362
+end
+
+def fun_l27_n413()
+ fun_l28_n837
+end
+
+def fun_l27_n414()
+ fun_l28_n335
+end
+
+def fun_l27_n415()
+ fun_l28_n258
+end
+
+def fun_l27_n416()
+ fun_l28_n832
+end
+
+def fun_l27_n417()
+ fun_l28_n102
+end
+
+def fun_l27_n418()
+ fun_l28_n202
+end
+
+def fun_l27_n419()
+ fun_l28_n624
+end
+
+def fun_l27_n420()
+ fun_l28_n118
+end
+
+def fun_l27_n421()
+ fun_l28_n247
+end
+
+def fun_l27_n422()
+ fun_l28_n768
+end
+
+def fun_l27_n423()
+ fun_l28_n879
+end
+
+def fun_l27_n424()
+ fun_l28_n650
+end
+
+def fun_l27_n425()
+ fun_l28_n545
+end
+
+def fun_l27_n426()
+ fun_l28_n854
+end
+
+def fun_l27_n427()
+ fun_l28_n722
+end
+
+def fun_l27_n428()
+ fun_l28_n637
+end
+
+def fun_l27_n429()
+ fun_l28_n295
+end
+
+def fun_l27_n430()
+ fun_l28_n504
+end
+
+def fun_l27_n431()
+ fun_l28_n939
+end
+
+def fun_l27_n432()
+ fun_l28_n52
+end
+
+def fun_l27_n433()
+ fun_l28_n613
+end
+
+def fun_l27_n434()
+ fun_l28_n165
+end
+
+def fun_l27_n435()
+ fun_l28_n948
+end
+
+def fun_l27_n436()
+ fun_l28_n995
+end
+
+def fun_l27_n437()
+ fun_l28_n572
+end
+
+def fun_l27_n438()
+ fun_l28_n919
+end
+
+def fun_l27_n439()
+ fun_l28_n843
+end
+
+def fun_l27_n440()
+ fun_l28_n826
+end
+
+def fun_l27_n441()
+ fun_l28_n328
+end
+
+def fun_l27_n442()
+ fun_l28_n330
+end
+
+def fun_l27_n443()
+ fun_l28_n819
+end
+
+def fun_l27_n444()
+ fun_l28_n949
+end
+
+def fun_l27_n445()
+ fun_l28_n505
+end
+
+def fun_l27_n446()
+ fun_l28_n306
+end
+
+def fun_l27_n447()
+ fun_l28_n731
+end
+
+def fun_l27_n448()
+ fun_l28_n232
+end
+
+def fun_l27_n449()
+ fun_l28_n251
+end
+
+def fun_l27_n450()
+ fun_l28_n807
+end
+
+def fun_l27_n451()
+ fun_l28_n808
+end
+
+def fun_l27_n452()
+ fun_l28_n672
+end
+
+def fun_l27_n453()
+ fun_l28_n0
+end
+
+def fun_l27_n454()
+ fun_l28_n659
+end
+
+def fun_l27_n455()
+ fun_l28_n955
+end
+
+def fun_l27_n456()
+ fun_l28_n314
+end
+
+def fun_l27_n457()
+ fun_l28_n539
+end
+
+def fun_l27_n458()
+ fun_l28_n394
+end
+
+def fun_l27_n459()
+ fun_l28_n48
+end
+
+def fun_l27_n460()
+ fun_l28_n434
+end
+
+def fun_l27_n461()
+ fun_l28_n54
+end
+
+def fun_l27_n462()
+ fun_l28_n108
+end
+
+def fun_l27_n463()
+ fun_l28_n80
+end
+
+def fun_l27_n464()
+ fun_l28_n255
+end
+
+def fun_l27_n465()
+ fun_l28_n273
+end
+
+def fun_l27_n466()
+ fun_l28_n227
+end
+
+def fun_l27_n467()
+ fun_l28_n764
+end
+
+def fun_l27_n468()
+ fun_l28_n210
+end
+
+def fun_l27_n469()
+ fun_l28_n68
+end
+
+def fun_l27_n470()
+ fun_l28_n178
+end
+
+def fun_l27_n471()
+ fun_l28_n500
+end
+
+def fun_l27_n472()
+ fun_l28_n374
+end
+
+def fun_l27_n473()
+ fun_l28_n98
+end
+
+def fun_l27_n474()
+ fun_l28_n232
+end
+
+def fun_l27_n475()
+ fun_l28_n35
+end
+
+def fun_l27_n476()
+ fun_l28_n483
+end
+
+def fun_l27_n477()
+ fun_l28_n282
+end
+
+def fun_l27_n478()
+ fun_l28_n512
+end
+
+def fun_l27_n479()
+ fun_l28_n755
+end
+
+def fun_l27_n480()
+ fun_l28_n299
+end
+
+def fun_l27_n481()
+ fun_l28_n899
+end
+
+def fun_l27_n482()
+ fun_l28_n872
+end
+
+def fun_l27_n483()
+ fun_l28_n558
+end
+
+def fun_l27_n484()
+ fun_l28_n700
+end
+
+def fun_l27_n485()
+ fun_l28_n949
+end
+
+def fun_l27_n486()
+ fun_l28_n272
+end
+
+def fun_l27_n487()
+ fun_l28_n808
+end
+
+def fun_l27_n488()
+ fun_l28_n36
+end
+
+def fun_l27_n489()
+ fun_l28_n698
+end
+
+def fun_l27_n490()
+ fun_l28_n386
+end
+
+def fun_l27_n491()
+ fun_l28_n745
+end
+
+def fun_l27_n492()
+ fun_l28_n26
+end
+
+def fun_l27_n493()
+ fun_l28_n148
+end
+
+def fun_l27_n494()
+ fun_l28_n300
+end
+
+def fun_l27_n495()
+ fun_l28_n292
+end
+
+def fun_l27_n496()
+ fun_l28_n892
+end
+
+def fun_l27_n497()
+ fun_l28_n824
+end
+
+def fun_l27_n498()
+ fun_l28_n89
+end
+
+def fun_l27_n499()
+ fun_l28_n248
+end
+
+def fun_l27_n500()
+ fun_l28_n19
+end
+
+def fun_l27_n501()
+ fun_l28_n600
+end
+
+def fun_l27_n502()
+ fun_l28_n210
+end
+
+def fun_l27_n503()
+ fun_l28_n27
+end
+
+def fun_l27_n504()
+ fun_l28_n866
+end
+
+def fun_l27_n505()
+ fun_l28_n231
+end
+
+def fun_l27_n506()
+ fun_l28_n622
+end
+
+def fun_l27_n507()
+ fun_l28_n381
+end
+
+def fun_l27_n508()
+ fun_l28_n997
+end
+
+def fun_l27_n509()
+ fun_l28_n799
+end
+
+def fun_l27_n510()
+ fun_l28_n18
+end
+
+def fun_l27_n511()
+ fun_l28_n60
+end
+
+def fun_l27_n512()
+ fun_l28_n287
+end
+
+def fun_l27_n513()
+ fun_l28_n478
+end
+
+def fun_l27_n514()
+ fun_l28_n562
+end
+
+def fun_l27_n515()
+ fun_l28_n779
+end
+
+def fun_l27_n516()
+ fun_l28_n585
+end
+
+def fun_l27_n517()
+ fun_l28_n464
+end
+
+def fun_l27_n518()
+ fun_l28_n304
+end
+
+def fun_l27_n519()
+ fun_l28_n189
+end
+
+def fun_l27_n520()
+ fun_l28_n959
+end
+
+def fun_l27_n521()
+ fun_l28_n5
+end
+
+def fun_l27_n522()
+ fun_l28_n866
+end
+
+def fun_l27_n523()
+ fun_l28_n14
+end
+
+def fun_l27_n524()
+ fun_l28_n644
+end
+
+def fun_l27_n525()
+ fun_l28_n725
+end
+
+def fun_l27_n526()
+ fun_l28_n18
+end
+
+def fun_l27_n527()
+ fun_l28_n9
+end
+
+def fun_l27_n528()
+ fun_l28_n0
+end
+
+def fun_l27_n529()
+ fun_l28_n154
+end
+
+def fun_l27_n530()
+ fun_l28_n313
+end
+
+def fun_l27_n531()
+ fun_l28_n478
+end
+
+def fun_l27_n532()
+ fun_l28_n139
+end
+
+def fun_l27_n533()
+ fun_l28_n913
+end
+
+def fun_l27_n534()
+ fun_l28_n113
+end
+
+def fun_l27_n535()
+ fun_l28_n685
+end
+
+def fun_l27_n536()
+ fun_l28_n275
+end
+
+def fun_l27_n537()
+ fun_l28_n556
+end
+
+def fun_l27_n538()
+ fun_l28_n276
+end
+
+def fun_l27_n539()
+ fun_l28_n283
+end
+
+def fun_l27_n540()
+ fun_l28_n694
+end
+
+def fun_l27_n541()
+ fun_l28_n396
+end
+
+def fun_l27_n542()
+ fun_l28_n181
+end
+
+def fun_l27_n543()
+ fun_l28_n231
+end
+
+def fun_l27_n544()
+ fun_l28_n228
+end
+
+def fun_l27_n545()
+ fun_l28_n958
+end
+
+def fun_l27_n546()
+ fun_l28_n91
+end
+
+def fun_l27_n547()
+ fun_l28_n878
+end
+
+def fun_l27_n548()
+ fun_l28_n180
+end
+
+def fun_l27_n549()
+ fun_l28_n13
+end
+
+def fun_l27_n550()
+ fun_l28_n161
+end
+
+def fun_l27_n551()
+ fun_l28_n603
+end
+
+def fun_l27_n552()
+ fun_l28_n101
+end
+
+def fun_l27_n553()
+ fun_l28_n825
+end
+
+def fun_l27_n554()
+ fun_l28_n370
+end
+
+def fun_l27_n555()
+ fun_l28_n983
+end
+
+def fun_l27_n556()
+ fun_l28_n888
+end
+
+def fun_l27_n557()
+ fun_l28_n610
+end
+
+def fun_l27_n558()
+ fun_l28_n630
+end
+
+def fun_l27_n559()
+ fun_l28_n345
+end
+
+def fun_l27_n560()
+ fun_l28_n376
+end
+
+def fun_l27_n561()
+ fun_l28_n409
+end
+
+def fun_l27_n562()
+ fun_l28_n717
+end
+
+def fun_l27_n563()
+ fun_l28_n66
+end
+
+def fun_l27_n564()
+ fun_l28_n228
+end
+
+def fun_l27_n565()
+ fun_l28_n485
+end
+
+def fun_l27_n566()
+ fun_l28_n252
+end
+
+def fun_l27_n567()
+ fun_l28_n444
+end
+
+def fun_l27_n568()
+ fun_l28_n253
+end
+
+def fun_l27_n569()
+ fun_l28_n839
+end
+
+def fun_l27_n570()
+ fun_l28_n216
+end
+
+def fun_l27_n571()
+ fun_l28_n797
+end
+
+def fun_l27_n572()
+ fun_l28_n127
+end
+
+def fun_l27_n573()
+ fun_l28_n335
+end
+
+def fun_l27_n574()
+ fun_l28_n141
+end
+
+def fun_l27_n575()
+ fun_l28_n536
+end
+
+def fun_l27_n576()
+ fun_l28_n463
+end
+
+def fun_l27_n577()
+ fun_l28_n925
+end
+
+def fun_l27_n578()
+ fun_l28_n707
+end
+
+def fun_l27_n579()
+ fun_l28_n530
+end
+
+def fun_l27_n580()
+ fun_l28_n678
+end
+
+def fun_l27_n581()
+ fun_l28_n234
+end
+
+def fun_l27_n582()
+ fun_l28_n803
+end
+
+def fun_l27_n583()
+ fun_l28_n530
+end
+
+def fun_l27_n584()
+ fun_l28_n131
+end
+
+def fun_l27_n585()
+ fun_l28_n512
+end
+
+def fun_l27_n586()
+ fun_l28_n550
+end
+
+def fun_l27_n587()
+ fun_l28_n528
+end
+
+def fun_l27_n588()
+ fun_l28_n214
+end
+
+def fun_l27_n589()
+ fun_l28_n801
+end
+
+def fun_l27_n590()
+ fun_l28_n69
+end
+
+def fun_l27_n591()
+ fun_l28_n519
+end
+
+def fun_l27_n592()
+ fun_l28_n909
+end
+
+def fun_l27_n593()
+ fun_l28_n981
+end
+
+def fun_l27_n594()
+ fun_l28_n108
+end
+
+def fun_l27_n595()
+ fun_l28_n762
+end
+
+def fun_l27_n596()
+ fun_l28_n838
+end
+
+def fun_l27_n597()
+ fun_l28_n311
+end
+
+def fun_l27_n598()
+ fun_l28_n428
+end
+
+def fun_l27_n599()
+ fun_l28_n111
+end
+
+def fun_l27_n600()
+ fun_l28_n600
+end
+
+def fun_l27_n601()
+ fun_l28_n996
+end
+
+def fun_l27_n602()
+ fun_l28_n439
+end
+
+def fun_l27_n603()
+ fun_l28_n379
+end
+
+def fun_l27_n604()
+ fun_l28_n959
+end
+
+def fun_l27_n605()
+ fun_l28_n287
+end
+
+def fun_l27_n606()
+ fun_l28_n893
+end
+
+def fun_l27_n607()
+ fun_l28_n384
+end
+
+def fun_l27_n608()
+ fun_l28_n815
+end
+
+def fun_l27_n609()
+ fun_l28_n733
+end
+
+def fun_l27_n610()
+ fun_l28_n875
+end
+
+def fun_l27_n611()
+ fun_l28_n343
+end
+
+def fun_l27_n612()
+ fun_l28_n605
+end
+
+def fun_l27_n613()
+ fun_l28_n968
+end
+
+def fun_l27_n614()
+ fun_l28_n703
+end
+
+def fun_l27_n615()
+ fun_l28_n50
+end
+
+def fun_l27_n616()
+ fun_l28_n807
+end
+
+def fun_l27_n617()
+ fun_l28_n261
+end
+
+def fun_l27_n618()
+ fun_l28_n887
+end
+
+def fun_l27_n619()
+ fun_l28_n165
+end
+
+def fun_l27_n620()
+ fun_l28_n62
+end
+
+def fun_l27_n621()
+ fun_l28_n437
+end
+
+def fun_l27_n622()
+ fun_l28_n267
+end
+
+def fun_l27_n623()
+ fun_l28_n739
+end
+
+def fun_l27_n624()
+ fun_l28_n624
+end
+
+def fun_l27_n625()
+ fun_l28_n845
+end
+
+def fun_l27_n626()
+ fun_l28_n844
+end
+
+def fun_l27_n627()
+ fun_l28_n541
+end
+
+def fun_l27_n628()
+ fun_l28_n175
+end
+
+def fun_l27_n629()
+ fun_l28_n295
+end
+
+def fun_l27_n630()
+ fun_l28_n600
+end
+
+def fun_l27_n631()
+ fun_l28_n250
+end
+
+def fun_l27_n632()
+ fun_l28_n167
+end
+
+def fun_l27_n633()
+ fun_l28_n7
+end
+
+def fun_l27_n634()
+ fun_l28_n75
+end
+
+def fun_l27_n635()
+ fun_l28_n208
+end
+
+def fun_l27_n636()
+ fun_l28_n53
+end
+
+def fun_l27_n637()
+ fun_l28_n132
+end
+
+def fun_l27_n638()
+ fun_l28_n859
+end
+
+def fun_l27_n639()
+ fun_l28_n925
+end
+
+def fun_l27_n640()
+ fun_l28_n34
+end
+
+def fun_l27_n641()
+ fun_l28_n226
+end
+
+def fun_l27_n642()
+ fun_l28_n916
+end
+
+def fun_l27_n643()
+ fun_l28_n893
+end
+
+def fun_l27_n644()
+ fun_l28_n100
+end
+
+def fun_l27_n645()
+ fun_l28_n526
+end
+
+def fun_l27_n646()
+ fun_l28_n113
+end
+
+def fun_l27_n647()
+ fun_l28_n786
+end
+
+def fun_l27_n648()
+ fun_l28_n995
+end
+
+def fun_l27_n649()
+ fun_l28_n968
+end
+
+def fun_l27_n650()
+ fun_l28_n705
+end
+
+def fun_l27_n651()
+ fun_l28_n581
+end
+
+def fun_l27_n652()
+ fun_l28_n112
+end
+
+def fun_l27_n653()
+ fun_l28_n475
+end
+
+def fun_l27_n654()
+ fun_l28_n264
+end
+
+def fun_l27_n655()
+ fun_l28_n44
+end
+
+def fun_l27_n656()
+ fun_l28_n302
+end
+
+def fun_l27_n657()
+ fun_l28_n830
+end
+
+def fun_l27_n658()
+ fun_l28_n551
+end
+
+def fun_l27_n659()
+ fun_l28_n811
+end
+
+def fun_l27_n660()
+ fun_l28_n476
+end
+
+def fun_l27_n661()
+ fun_l28_n547
+end
+
+def fun_l27_n662()
+ fun_l28_n709
+end
+
+def fun_l27_n663()
+ fun_l28_n435
+end
+
+def fun_l27_n664()
+ fun_l28_n727
+end
+
+def fun_l27_n665()
+ fun_l28_n630
+end
+
+def fun_l27_n666()
+ fun_l28_n514
+end
+
+def fun_l27_n667()
+ fun_l28_n939
+end
+
+def fun_l27_n668()
+ fun_l28_n198
+end
+
+def fun_l27_n669()
+ fun_l28_n165
+end
+
+def fun_l27_n670()
+ fun_l28_n415
+end
+
+def fun_l27_n671()
+ fun_l28_n316
+end
+
+def fun_l27_n672()
+ fun_l28_n602
+end
+
+def fun_l27_n673()
+ fun_l28_n776
+end
+
+def fun_l27_n674()
+ fun_l28_n681
+end
+
+def fun_l27_n675()
+ fun_l28_n131
+end
+
+def fun_l27_n676()
+ fun_l28_n812
+end
+
+def fun_l27_n677()
+ fun_l28_n666
+end
+
+def fun_l27_n678()
+ fun_l28_n209
+end
+
+def fun_l27_n679()
+ fun_l28_n953
+end
+
+def fun_l27_n680()
+ fun_l28_n797
+end
+
+def fun_l27_n681()
+ fun_l28_n317
+end
+
+def fun_l27_n682()
+ fun_l28_n43
+end
+
+def fun_l27_n683()
+ fun_l28_n673
+end
+
+def fun_l27_n684()
+ fun_l28_n701
+end
+
+def fun_l27_n685()
+ fun_l28_n961
+end
+
+def fun_l27_n686()
+ fun_l28_n684
+end
+
+def fun_l27_n687()
+ fun_l28_n677
+end
+
+def fun_l27_n688()
+ fun_l28_n213
+end
+
+def fun_l27_n689()
+ fun_l28_n22
+end
+
+def fun_l27_n690()
+ fun_l28_n296
+end
+
+def fun_l27_n691()
+ fun_l28_n235
+end
+
+def fun_l27_n692()
+ fun_l28_n148
+end
+
+def fun_l27_n693()
+ fun_l28_n756
+end
+
+def fun_l27_n694()
+ fun_l28_n989
+end
+
+def fun_l27_n695()
+ fun_l28_n993
+end
+
+def fun_l27_n696()
+ fun_l28_n646
+end
+
+def fun_l27_n697()
+ fun_l28_n860
+end
+
+def fun_l27_n698()
+ fun_l28_n872
+end
+
+def fun_l27_n699()
+ fun_l28_n122
+end
+
+def fun_l27_n700()
+ fun_l28_n678
+end
+
+def fun_l27_n701()
+ fun_l28_n480
+end
+
+def fun_l27_n702()
+ fun_l28_n888
+end
+
+def fun_l27_n703()
+ fun_l28_n60
+end
+
+def fun_l27_n704()
+ fun_l28_n15
+end
+
+def fun_l27_n705()
+ fun_l28_n529
+end
+
+def fun_l27_n706()
+ fun_l28_n137
+end
+
+def fun_l27_n707()
+ fun_l28_n643
+end
+
+def fun_l27_n708()
+ fun_l28_n432
+end
+
+def fun_l27_n709()
+ fun_l28_n446
+end
+
+def fun_l27_n710()
+ fun_l28_n170
+end
+
+def fun_l27_n711()
+ fun_l28_n507
+end
+
+def fun_l27_n712()
+ fun_l28_n650
+end
+
+def fun_l27_n713()
+ fun_l28_n952
+end
+
+def fun_l27_n714()
+ fun_l28_n629
+end
+
+def fun_l27_n715()
+ fun_l28_n578
+end
+
+def fun_l27_n716()
+ fun_l28_n754
+end
+
+def fun_l27_n717()
+ fun_l28_n431
+end
+
+def fun_l27_n718()
+ fun_l28_n340
+end
+
+def fun_l27_n719()
+ fun_l28_n580
+end
+
+def fun_l27_n720()
+ fun_l28_n976
+end
+
+def fun_l27_n721()
+ fun_l28_n830
+end
+
+def fun_l27_n722()
+ fun_l28_n746
+end
+
+def fun_l27_n723()
+ fun_l28_n139
+end
+
+def fun_l27_n724()
+ fun_l28_n152
+end
+
+def fun_l27_n725()
+ fun_l28_n956
+end
+
+def fun_l27_n726()
+ fun_l28_n152
+end
+
+def fun_l27_n727()
+ fun_l28_n252
+end
+
+def fun_l27_n728()
+ fun_l28_n856
+end
+
+def fun_l27_n729()
+ fun_l28_n862
+end
+
+def fun_l27_n730()
+ fun_l28_n261
+end
+
+def fun_l27_n731()
+ fun_l28_n28
+end
+
+def fun_l27_n732()
+ fun_l28_n873
+end
+
+def fun_l27_n733()
+ fun_l28_n989
+end
+
+def fun_l27_n734()
+ fun_l28_n657
+end
+
+def fun_l27_n735()
+ fun_l28_n259
+end
+
+def fun_l27_n736()
+ fun_l28_n1
+end
+
+def fun_l27_n737()
+ fun_l28_n964
+end
+
+def fun_l27_n738()
+ fun_l28_n215
+end
+
+def fun_l27_n739()
+ fun_l28_n939
+end
+
+def fun_l27_n740()
+ fun_l28_n644
+end
+
+def fun_l27_n741()
+ fun_l28_n335
+end
+
+def fun_l27_n742()
+ fun_l28_n844
+end
+
+def fun_l27_n743()
+ fun_l28_n493
+end
+
+def fun_l27_n744()
+ fun_l28_n25
+end
+
+def fun_l27_n745()
+ fun_l28_n690
+end
+
+def fun_l27_n746()
+ fun_l28_n561
+end
+
+def fun_l27_n747()
+ fun_l28_n682
+end
+
+def fun_l27_n748()
+ fun_l28_n476
+end
+
+def fun_l27_n749()
+ fun_l28_n626
+end
+
+def fun_l27_n750()
+ fun_l28_n607
+end
+
+def fun_l27_n751()
+ fun_l28_n655
+end
+
+def fun_l27_n752()
+ fun_l28_n481
+end
+
+def fun_l27_n753()
+ fun_l28_n634
+end
+
+def fun_l27_n754()
+ fun_l28_n971
+end
+
+def fun_l27_n755()
+ fun_l28_n372
+end
+
+def fun_l27_n756()
+ fun_l28_n701
+end
+
+def fun_l27_n757()
+ fun_l28_n383
+end
+
+def fun_l27_n758()
+ fun_l28_n295
+end
+
+def fun_l27_n759()
+ fun_l28_n58
+end
+
+def fun_l27_n760()
+ fun_l28_n870
+end
+
+def fun_l27_n761()
+ fun_l28_n902
+end
+
+def fun_l27_n762()
+ fun_l28_n352
+end
+
+def fun_l27_n763()
+ fun_l28_n421
+end
+
+def fun_l27_n764()
+ fun_l28_n870
+end
+
+def fun_l27_n765()
+ fun_l28_n604
+end
+
+def fun_l27_n766()
+ fun_l28_n615
+end
+
+def fun_l27_n767()
+ fun_l28_n644
+end
+
+def fun_l27_n768()
+ fun_l28_n304
+end
+
+def fun_l27_n769()
+ fun_l28_n87
+end
+
+def fun_l27_n770()
+ fun_l28_n40
+end
+
+def fun_l27_n771()
+ fun_l28_n80
+end
+
+def fun_l27_n772()
+ fun_l28_n62
+end
+
+def fun_l27_n773()
+ fun_l28_n912
+end
+
+def fun_l27_n774()
+ fun_l28_n808
+end
+
+def fun_l27_n775()
+ fun_l28_n978
+end
+
+def fun_l27_n776()
+ fun_l28_n499
+end
+
+def fun_l27_n777()
+ fun_l28_n299
+end
+
+def fun_l27_n778()
+ fun_l28_n852
+end
+
+def fun_l27_n779()
+ fun_l28_n126
+end
+
+def fun_l27_n780()
+ fun_l28_n578
+end
+
+def fun_l27_n781()
+ fun_l28_n177
+end
+
+def fun_l27_n782()
+ fun_l28_n621
+end
+
+def fun_l27_n783()
+ fun_l28_n833
+end
+
+def fun_l27_n784()
+ fun_l28_n991
+end
+
+def fun_l27_n785()
+ fun_l28_n419
+end
+
+def fun_l27_n786()
+ fun_l28_n723
+end
+
+def fun_l27_n787()
+ fun_l28_n915
+end
+
+def fun_l27_n788()
+ fun_l28_n73
+end
+
+def fun_l27_n789()
+ fun_l28_n725
+end
+
+def fun_l27_n790()
+ fun_l28_n883
+end
+
+def fun_l27_n791()
+ fun_l28_n469
+end
+
+def fun_l27_n792()
+ fun_l28_n524
+end
+
+def fun_l27_n793()
+ fun_l28_n813
+end
+
+def fun_l27_n794()
+ fun_l28_n8
+end
+
+def fun_l27_n795()
+ fun_l28_n776
+end
+
+def fun_l27_n796()
+ fun_l28_n328
+end
+
+def fun_l27_n797()
+ fun_l28_n324
+end
+
+def fun_l27_n798()
+ fun_l28_n428
+end
+
+def fun_l27_n799()
+ fun_l28_n806
+end
+
+def fun_l27_n800()
+ fun_l28_n397
+end
+
+def fun_l27_n801()
+ fun_l28_n680
+end
+
+def fun_l27_n802()
+ fun_l28_n18
+end
+
+def fun_l27_n803()
+ fun_l28_n955
+end
+
+def fun_l27_n804()
+ fun_l28_n566
+end
+
+def fun_l27_n805()
+ fun_l28_n824
+end
+
+def fun_l27_n806()
+ fun_l28_n860
+end
+
+def fun_l27_n807()
+ fun_l28_n411
+end
+
+def fun_l27_n808()
+ fun_l28_n925
+end
+
+def fun_l27_n809()
+ fun_l28_n394
+end
+
+def fun_l27_n810()
+ fun_l28_n70
+end
+
+def fun_l27_n811()
+ fun_l28_n672
+end
+
+def fun_l27_n812()
+ fun_l28_n53
+end
+
+def fun_l27_n813()
+ fun_l28_n574
+end
+
+def fun_l27_n814()
+ fun_l28_n407
+end
+
+def fun_l27_n815()
+ fun_l28_n86
+end
+
+def fun_l27_n816()
+ fun_l28_n611
+end
+
+def fun_l27_n817()
+ fun_l28_n950
+end
+
+def fun_l27_n818()
+ fun_l28_n595
+end
+
+def fun_l27_n819()
+ fun_l28_n411
+end
+
+def fun_l27_n820()
+ fun_l28_n286
+end
+
+def fun_l27_n821()
+ fun_l28_n683
+end
+
+def fun_l27_n822()
+ fun_l28_n706
+end
+
+def fun_l27_n823()
+ fun_l28_n587
+end
+
+def fun_l27_n824()
+ fun_l28_n908
+end
+
+def fun_l27_n825()
+ fun_l28_n641
+end
+
+def fun_l27_n826()
+ fun_l28_n792
+end
+
+def fun_l27_n827()
+ fun_l28_n714
+end
+
+def fun_l27_n828()
+ fun_l28_n594
+end
+
+def fun_l27_n829()
+ fun_l28_n154
+end
+
+def fun_l27_n830()
+ fun_l28_n102
+end
+
+def fun_l27_n831()
+ fun_l28_n819
+end
+
+def fun_l27_n832()
+ fun_l28_n285
+end
+
+def fun_l27_n833()
+ fun_l28_n665
+end
+
+def fun_l27_n834()
+ fun_l28_n896
+end
+
+def fun_l27_n835()
+ fun_l28_n495
+end
+
+def fun_l27_n836()
+ fun_l28_n284
+end
+
+def fun_l27_n837()
+ fun_l28_n747
+end
+
+def fun_l27_n838()
+ fun_l28_n388
+end
+
+def fun_l27_n839()
+ fun_l28_n274
+end
+
+def fun_l27_n840()
+ fun_l28_n236
+end
+
+def fun_l27_n841()
+ fun_l28_n336
+end
+
+def fun_l27_n842()
+ fun_l28_n805
+end
+
+def fun_l27_n843()
+ fun_l28_n196
+end
+
+def fun_l27_n844()
+ fun_l28_n772
+end
+
+def fun_l27_n845()
+ fun_l28_n679
+end
+
+def fun_l27_n846()
+ fun_l28_n703
+end
+
+def fun_l27_n847()
+ fun_l28_n743
+end
+
+def fun_l27_n848()
+ fun_l28_n941
+end
+
+def fun_l27_n849()
+ fun_l28_n903
+end
+
+def fun_l27_n850()
+ fun_l28_n149
+end
+
+def fun_l27_n851()
+ fun_l28_n924
+end
+
+def fun_l27_n852()
+ fun_l28_n638
+end
+
+def fun_l27_n853()
+ fun_l28_n480
+end
+
+def fun_l27_n854()
+ fun_l28_n580
+end
+
+def fun_l27_n855()
+ fun_l28_n184
+end
+
+def fun_l27_n856()
+ fun_l28_n757
+end
+
+def fun_l27_n857()
+ fun_l28_n233
+end
+
+def fun_l27_n858()
+ fun_l28_n315
+end
+
+def fun_l27_n859()
+ fun_l28_n182
+end
+
+def fun_l27_n860()
+ fun_l28_n696
+end
+
+def fun_l27_n861()
+ fun_l28_n155
+end
+
+def fun_l27_n862()
+ fun_l28_n648
+end
+
+def fun_l27_n863()
+ fun_l28_n148
+end
+
+def fun_l27_n864()
+ fun_l28_n40
+end
+
+def fun_l27_n865()
+ fun_l28_n665
+end
+
+def fun_l27_n866()
+ fun_l28_n646
+end
+
+def fun_l27_n867()
+ fun_l28_n158
+end
+
+def fun_l27_n868()
+ fun_l28_n159
+end
+
+def fun_l27_n869()
+ fun_l28_n617
+end
+
+def fun_l27_n870()
+ fun_l28_n637
+end
+
+def fun_l27_n871()
+ fun_l28_n234
+end
+
+def fun_l27_n872()
+ fun_l28_n591
+end
+
+def fun_l27_n873()
+ fun_l28_n207
+end
+
+def fun_l27_n874()
+ fun_l28_n136
+end
+
+def fun_l27_n875()
+ fun_l28_n565
+end
+
+def fun_l27_n876()
+ fun_l28_n152
+end
+
+def fun_l27_n877()
+ fun_l28_n309
+end
+
+def fun_l27_n878()
+ fun_l28_n275
+end
+
+def fun_l27_n879()
+ fun_l28_n355
+end
+
+def fun_l27_n880()
+ fun_l28_n441
+end
+
+def fun_l27_n881()
+ fun_l28_n427
+end
+
+def fun_l27_n882()
+ fun_l28_n249
+end
+
+def fun_l27_n883()
+ fun_l28_n764
+end
+
+def fun_l27_n884()
+ fun_l28_n183
+end
+
+def fun_l27_n885()
+ fun_l28_n302
+end
+
+def fun_l27_n886()
+ fun_l28_n857
+end
+
+def fun_l27_n887()
+ fun_l28_n73
+end
+
+def fun_l27_n888()
+ fun_l28_n702
+end
+
+def fun_l27_n889()
+ fun_l28_n430
+end
+
+def fun_l27_n890()
+ fun_l28_n57
+end
+
+def fun_l27_n891()
+ fun_l28_n994
+end
+
+def fun_l27_n892()
+ fun_l28_n951
+end
+
+def fun_l27_n893()
+ fun_l28_n268
+end
+
+def fun_l27_n894()
+ fun_l28_n629
+end
+
+def fun_l27_n895()
+ fun_l28_n505
+end
+
+def fun_l27_n896()
+ fun_l28_n790
+end
+
+def fun_l27_n897()
+ fun_l28_n213
+end
+
+def fun_l27_n898()
+ fun_l28_n133
+end
+
+def fun_l27_n899()
+ fun_l28_n472
+end
+
+def fun_l27_n900()
+ fun_l28_n212
+end
+
+def fun_l27_n901()
+ fun_l28_n386
+end
+
+def fun_l27_n902()
+ fun_l28_n405
+end
+
+def fun_l27_n903()
+ fun_l28_n807
+end
+
+def fun_l27_n904()
+ fun_l28_n76
+end
+
+def fun_l27_n905()
+ fun_l28_n295
+end
+
+def fun_l27_n906()
+ fun_l28_n860
+end
+
+def fun_l27_n907()
+ fun_l28_n185
+end
+
+def fun_l27_n908()
+ fun_l28_n762
+end
+
+def fun_l27_n909()
+ fun_l28_n493
+end
+
+def fun_l27_n910()
+ fun_l28_n309
+end
+
+def fun_l27_n911()
+ fun_l28_n920
+end
+
+def fun_l27_n912()
+ fun_l28_n284
+end
+
+def fun_l27_n913()
+ fun_l28_n355
+end
+
+def fun_l27_n914()
+ fun_l28_n177
+end
+
+def fun_l27_n915()
+ fun_l28_n901
+end
+
+def fun_l27_n916()
+ fun_l28_n858
+end
+
+def fun_l27_n917()
+ fun_l28_n337
+end
+
+def fun_l27_n918()
+ fun_l28_n872
+end
+
+def fun_l27_n919()
+ fun_l28_n550
+end
+
+def fun_l27_n920()
+ fun_l28_n458
+end
+
+def fun_l27_n921()
+ fun_l28_n739
+end
+
+def fun_l27_n922()
+ fun_l28_n394
+end
+
+def fun_l27_n923()
+ fun_l28_n695
+end
+
+def fun_l27_n924()
+ fun_l28_n455
+end
+
+def fun_l27_n925()
+ fun_l28_n958
+end
+
+def fun_l27_n926()
+ fun_l28_n395
+end
+
+def fun_l27_n927()
+ fun_l28_n645
+end
+
+def fun_l27_n928()
+ fun_l28_n668
+end
+
+def fun_l27_n929()
+ fun_l28_n880
+end
+
+def fun_l27_n930()
+ fun_l28_n743
+end
+
+def fun_l27_n931()
+ fun_l28_n411
+end
+
+def fun_l27_n932()
+ fun_l28_n457
+end
+
+def fun_l27_n933()
+ fun_l28_n852
+end
+
+def fun_l27_n934()
+ fun_l28_n3
+end
+
+def fun_l27_n935()
+ fun_l28_n637
+end
+
+def fun_l27_n936()
+ fun_l28_n35
+end
+
+def fun_l27_n937()
+ fun_l28_n671
+end
+
+def fun_l27_n938()
+ fun_l28_n996
+end
+
+def fun_l27_n939()
+ fun_l28_n545
+end
+
+def fun_l27_n940()
+ fun_l28_n714
+end
+
+def fun_l27_n941()
+ fun_l28_n527
+end
+
+def fun_l27_n942()
+ fun_l28_n272
+end
+
+def fun_l27_n943()
+ fun_l28_n62
+end
+
+def fun_l27_n944()
+ fun_l28_n206
+end
+
+def fun_l27_n945()
+ fun_l28_n115
+end
+
+def fun_l27_n946()
+ fun_l28_n654
+end
+
+def fun_l27_n947()
+ fun_l28_n218
+end
+
+def fun_l27_n948()
+ fun_l28_n315
+end
+
+def fun_l27_n949()
+ fun_l28_n656
+end
+
+def fun_l27_n950()
+ fun_l28_n901
+end
+
+def fun_l27_n951()
+ fun_l28_n60
+end
+
+def fun_l27_n952()
+ fun_l28_n886
+end
+
+def fun_l27_n953()
+ fun_l28_n888
+end
+
+def fun_l27_n954()
+ fun_l28_n640
+end
+
+def fun_l27_n955()
+ fun_l28_n766
+end
+
+def fun_l27_n956()
+ fun_l28_n506
+end
+
+def fun_l27_n957()
+ fun_l28_n757
+end
+
+def fun_l27_n958()
+ fun_l28_n204
+end
+
+def fun_l27_n959()
+ fun_l28_n531
+end
+
+def fun_l27_n960()
+ fun_l28_n982
+end
+
+def fun_l27_n961()
+ fun_l28_n762
+end
+
+def fun_l27_n962()
+ fun_l28_n701
+end
+
+def fun_l27_n963()
+ fun_l28_n866
+end
+
+def fun_l27_n964()
+ fun_l28_n488
+end
+
+def fun_l27_n965()
+ fun_l28_n793
+end
+
+def fun_l27_n966()
+ fun_l28_n969
+end
+
+def fun_l27_n967()
+ fun_l28_n35
+end
+
+def fun_l27_n968()
+ fun_l28_n54
+end
+
+def fun_l27_n969()
+ fun_l28_n746
+end
+
+def fun_l27_n970()
+ fun_l28_n437
+end
+
+def fun_l27_n971()
+ fun_l28_n601
+end
+
+def fun_l27_n972()
+ fun_l28_n477
+end
+
+def fun_l27_n973()
+ fun_l28_n854
+end
+
+def fun_l27_n974()
+ fun_l28_n76
+end
+
+def fun_l27_n975()
+ fun_l28_n145
+end
+
+def fun_l27_n976()
+ fun_l28_n156
+end
+
+def fun_l27_n977()
+ fun_l28_n719
+end
+
+def fun_l27_n978()
+ fun_l28_n389
+end
+
+def fun_l27_n979()
+ fun_l28_n482
+end
+
+def fun_l27_n980()
+ fun_l28_n369
+end
+
+def fun_l27_n981()
+ fun_l28_n42
+end
+
+def fun_l27_n982()
+ fun_l28_n975
+end
+
+def fun_l27_n983()
+ fun_l28_n995
+end
+
+def fun_l27_n984()
+ fun_l28_n880
+end
+
+def fun_l27_n985()
+ fun_l28_n688
+end
+
+def fun_l27_n986()
+ fun_l28_n796
+end
+
+def fun_l27_n987()
+ fun_l28_n291
+end
+
+def fun_l27_n988()
+ fun_l28_n158
+end
+
+def fun_l27_n989()
+ fun_l28_n389
+end
+
+def fun_l27_n990()
+ fun_l28_n582
+end
+
+def fun_l27_n991()
+ fun_l28_n108
+end
+
+def fun_l27_n992()
+ fun_l28_n280
+end
+
+def fun_l27_n993()
+ fun_l28_n842
+end
+
+def fun_l27_n994()
+ fun_l28_n637
+end
+
+def fun_l27_n995()
+ fun_l28_n934
+end
+
+def fun_l27_n996()
+ fun_l28_n451
+end
+
+def fun_l27_n997()
+ fun_l28_n22
+end
+
+def fun_l27_n998()
+ fun_l28_n733
+end
+
+def fun_l27_n999()
+ fun_l28_n984
+end
+
+def fun_l28_n0()
+ fun_l29_n189
+end
+
+def fun_l28_n1()
+ fun_l29_n12
+end
+
+def fun_l28_n2()
+ fun_l29_n850
+end
+
+def fun_l28_n3()
+ fun_l29_n360
+end
+
+def fun_l28_n4()
+ fun_l29_n510
+end
+
+def fun_l28_n5()
+ fun_l29_n541
+end
+
+def fun_l28_n6()
+ fun_l29_n913
+end
+
+def fun_l28_n7()
+ fun_l29_n652
+end
+
+def fun_l28_n8()
+ fun_l29_n378
+end
+
+def fun_l28_n9()
+ fun_l29_n476
+end
+
+def fun_l28_n10()
+ fun_l29_n644
+end
+
+def fun_l28_n11()
+ fun_l29_n484
+end
+
+def fun_l28_n12()
+ fun_l29_n52
+end
+
+def fun_l28_n13()
+ fun_l29_n294
+end
+
+def fun_l28_n14()
+ fun_l29_n387
+end
+
+def fun_l28_n15()
+ fun_l29_n331
+end
+
+def fun_l28_n16()
+ fun_l29_n578
+end
+
+def fun_l28_n17()
+ fun_l29_n783
+end
+
+def fun_l28_n18()
+ fun_l29_n838
+end
+
+def fun_l28_n19()
+ fun_l29_n5
+end
+
+def fun_l28_n20()
+ fun_l29_n909
+end
+
+def fun_l28_n21()
+ fun_l29_n671
+end
+
+def fun_l28_n22()
+ fun_l29_n626
+end
+
+def fun_l28_n23()
+ fun_l29_n685
+end
+
+def fun_l28_n24()
+ fun_l29_n22
+end
+
+def fun_l28_n25()
+ fun_l29_n925
+end
+
+def fun_l28_n26()
+ fun_l29_n816
+end
+
+def fun_l28_n27()
+ fun_l29_n714
+end
+
+def fun_l28_n28()
+ fun_l29_n863
+end
+
+def fun_l28_n29()
+ fun_l29_n475
+end
+
+def fun_l28_n30()
+ fun_l29_n83
+end
+
+def fun_l28_n31()
+ fun_l29_n854
+end
+
+def fun_l28_n32()
+ fun_l29_n616
+end
+
+def fun_l28_n33()
+ fun_l29_n574
+end
+
+def fun_l28_n34()
+ fun_l29_n745
+end
+
+def fun_l28_n35()
+ fun_l29_n921
+end
+
+def fun_l28_n36()
+ fun_l29_n639
+end
+
+def fun_l28_n37()
+ fun_l29_n695
+end
+
+def fun_l28_n38()
+ fun_l29_n527
+end
+
+def fun_l28_n39()
+ fun_l29_n691
+end
+
+def fun_l28_n40()
+ fun_l29_n409
+end
+
+def fun_l28_n41()
+ fun_l29_n788
+end
+
+def fun_l28_n42()
+ fun_l29_n671
+end
+
+def fun_l28_n43()
+ fun_l29_n855
+end
+
+def fun_l28_n44()
+ fun_l29_n364
+end
+
+def fun_l28_n45()
+ fun_l29_n231
+end
+
+def fun_l28_n46()
+ fun_l29_n852
+end
+
+def fun_l28_n47()
+ fun_l29_n596
+end
+
+def fun_l28_n48()
+ fun_l29_n804
+end
+
+def fun_l28_n49()
+ fun_l29_n513
+end
+
+def fun_l28_n50()
+ fun_l29_n498
+end
+
+def fun_l28_n51()
+ fun_l29_n548
+end
+
+def fun_l28_n52()
+ fun_l29_n641
+end
+
+def fun_l28_n53()
+ fun_l29_n784
+end
+
+def fun_l28_n54()
+ fun_l29_n803
+end
+
+def fun_l28_n55()
+ fun_l29_n384
+end
+
+def fun_l28_n56()
+ fun_l29_n304
+end
+
+def fun_l28_n57()
+ fun_l29_n894
+end
+
+def fun_l28_n58()
+ fun_l29_n233
+end
+
+def fun_l28_n59()
+ fun_l29_n344
+end
+
+def fun_l28_n60()
+ fun_l29_n652
+end
+
+def fun_l28_n61()
+ fun_l29_n912
+end
+
+def fun_l28_n62()
+ fun_l29_n266
+end
+
+def fun_l28_n63()
+ fun_l29_n228
+end
+
+def fun_l28_n64()
+ fun_l29_n31
+end
+
+def fun_l28_n65()
+ fun_l29_n679
+end
+
+def fun_l28_n66()
+ fun_l29_n902
+end
+
+def fun_l28_n67()
+ fun_l29_n907
+end
+
+def fun_l28_n68()
+ fun_l29_n830
+end
+
+def fun_l28_n69()
+ fun_l29_n849
+end
+
+def fun_l28_n70()
+ fun_l29_n551
+end
+
+def fun_l28_n71()
+ fun_l29_n586
+end
+
+def fun_l28_n72()
+ fun_l29_n126
+end
+
+def fun_l28_n73()
+ fun_l29_n75
+end
+
+def fun_l28_n74()
+ fun_l29_n706
+end
+
+def fun_l28_n75()
+ fun_l29_n82
+end
+
+def fun_l28_n76()
+ fun_l29_n194
+end
+
+def fun_l28_n77()
+ fun_l29_n761
+end
+
+def fun_l28_n78()
+ fun_l29_n439
+end
+
+def fun_l28_n79()
+ fun_l29_n53
+end
+
+def fun_l28_n80()
+ fun_l29_n889
+end
+
+def fun_l28_n81()
+ fun_l29_n743
+end
+
+def fun_l28_n82()
+ fun_l29_n545
+end
+
+def fun_l28_n83()
+ fun_l29_n88
+end
+
+def fun_l28_n84()
+ fun_l29_n697
+end
+
+def fun_l28_n85()
+ fun_l29_n160
+end
+
+def fun_l28_n86()
+ fun_l29_n895
+end
+
+def fun_l28_n87()
+ fun_l29_n475
+end
+
+def fun_l28_n88()
+ fun_l29_n330
+end
+
+def fun_l28_n89()
+ fun_l29_n464
+end
+
+def fun_l28_n90()
+ fun_l29_n772
+end
+
+def fun_l28_n91()
+ fun_l29_n241
+end
+
+def fun_l28_n92()
+ fun_l29_n838
+end
+
+def fun_l28_n93()
+ fun_l29_n322
+end
+
+def fun_l28_n94()
+ fun_l29_n328
+end
+
+def fun_l28_n95()
+ fun_l29_n475
+end
+
+def fun_l28_n96()
+ fun_l29_n523
+end
+
+def fun_l28_n97()
+ fun_l29_n621
+end
+
+def fun_l28_n98()
+ fun_l29_n646
+end
+
+def fun_l28_n99()
+ fun_l29_n803
+end
+
+def fun_l28_n100()
+ fun_l29_n121
+end
+
+def fun_l28_n101()
+ fun_l29_n432
+end
+
+def fun_l28_n102()
+ fun_l29_n14
+end
+
+def fun_l28_n103()
+ fun_l29_n358
+end
+
+def fun_l28_n104()
+ fun_l29_n257
+end
+
+def fun_l28_n105()
+ fun_l29_n985
+end
+
+def fun_l28_n106()
+ fun_l29_n392
+end
+
+def fun_l28_n107()
+ fun_l29_n11
+end
+
+def fun_l28_n108()
+ fun_l29_n254
+end
+
+def fun_l28_n109()
+ fun_l29_n17
+end
+
+def fun_l28_n110()
+ fun_l29_n146
+end
+
+def fun_l28_n111()
+ fun_l29_n20
+end
+
+def fun_l28_n112()
+ fun_l29_n189
+end
+
+def fun_l28_n113()
+ fun_l29_n838
+end
+
+def fun_l28_n114()
+ fun_l29_n251
+end
+
+def fun_l28_n115()
+ fun_l29_n331
+end
+
+def fun_l28_n116()
+ fun_l29_n816
+end
+
+def fun_l28_n117()
+ fun_l29_n338
+end
+
+def fun_l28_n118()
+ fun_l29_n745
+end
+
+def fun_l28_n119()
+ fun_l29_n301
+end
+
+def fun_l28_n120()
+ fun_l29_n647
+end
+
+def fun_l28_n121()
+ fun_l29_n71
+end
+
+def fun_l28_n122()
+ fun_l29_n371
+end
+
+def fun_l28_n123()
+ fun_l29_n586
+end
+
+def fun_l28_n124()
+ fun_l29_n868
+end
+
+def fun_l28_n125()
+ fun_l29_n519
+end
+
+def fun_l28_n126()
+ fun_l29_n877
+end
+
+def fun_l28_n127()
+ fun_l29_n716
+end
+
+def fun_l28_n128()
+ fun_l29_n184
+end
+
+def fun_l28_n129()
+ fun_l29_n797
+end
+
+def fun_l28_n130()
+ fun_l29_n801
+end
+
+def fun_l28_n131()
+ fun_l29_n278
+end
+
+def fun_l28_n132()
+ fun_l29_n562
+end
+
+def fun_l28_n133()
+ fun_l29_n999
+end
+
+def fun_l28_n134()
+ fun_l29_n128
+end
+
+def fun_l28_n135()
+ fun_l29_n134
+end
+
+def fun_l28_n136()
+ fun_l29_n62
+end
+
+def fun_l28_n137()
+ fun_l29_n923
+end
+
+def fun_l28_n138()
+ fun_l29_n870
+end
+
+def fun_l28_n139()
+ fun_l29_n279
+end
+
+def fun_l28_n140()
+ fun_l29_n971
+end
+
+def fun_l28_n141()
+ fun_l29_n843
+end
+
+def fun_l28_n142()
+ fun_l29_n537
+end
+
+def fun_l28_n143()
+ fun_l29_n584
+end
+
+def fun_l28_n144()
+ fun_l29_n961
+end
+
+def fun_l28_n145()
+ fun_l29_n383
+end
+
+def fun_l28_n146()
+ fun_l29_n44
+end
+
+def fun_l28_n147()
+ fun_l29_n291
+end
+
+def fun_l28_n148()
+ fun_l29_n639
+end
+
+def fun_l28_n149()
+ fun_l29_n751
+end
+
+def fun_l28_n150()
+ fun_l29_n504
+end
+
+def fun_l28_n151()
+ fun_l29_n884
+end
+
+def fun_l28_n152()
+ fun_l29_n505
+end
+
+def fun_l28_n153()
+ fun_l29_n932
+end
+
+def fun_l28_n154()
+ fun_l29_n414
+end
+
+def fun_l28_n155()
+ fun_l29_n121
+end
+
+def fun_l28_n156()
+ fun_l29_n313
+end
+
+def fun_l28_n157()
+ fun_l29_n620
+end
+
+def fun_l28_n158()
+ fun_l29_n412
+end
+
+def fun_l28_n159()
+ fun_l29_n119
+end
+
+def fun_l28_n160()
+ fun_l29_n431
+end
+
+def fun_l28_n161()
+ fun_l29_n943
+end
+
+def fun_l28_n162()
+ fun_l29_n499
+end
+
+def fun_l28_n163()
+ fun_l29_n494
+end
+
+def fun_l28_n164()
+ fun_l29_n716
+end
+
+def fun_l28_n165()
+ fun_l29_n558
+end
+
+def fun_l28_n166()
+ fun_l29_n864
+end
+
+def fun_l28_n167()
+ fun_l29_n13
+end
+
+def fun_l28_n168()
+ fun_l29_n165
+end
+
+def fun_l28_n169()
+ fun_l29_n129
+end
+
+def fun_l28_n170()
+ fun_l29_n478
+end
+
+def fun_l28_n171()
+ fun_l29_n124
+end
+
+def fun_l28_n172()
+ fun_l29_n945
+end
+
+def fun_l28_n173()
+ fun_l29_n574
+end
+
+def fun_l28_n174()
+ fun_l29_n916
+end
+
+def fun_l28_n175()
+ fun_l29_n213
+end
+
+def fun_l28_n176()
+ fun_l29_n68
+end
+
+def fun_l28_n177()
+ fun_l29_n66
+end
+
+def fun_l28_n178()
+ fun_l29_n979
+end
+
+def fun_l28_n179()
+ fun_l29_n909
+end
+
+def fun_l28_n180()
+ fun_l29_n509
+end
+
+def fun_l28_n181()
+ fun_l29_n663
+end
+
+def fun_l28_n182()
+ fun_l29_n407
+end
+
+def fun_l28_n183()
+ fun_l29_n692
+end
+
+def fun_l28_n184()
+ fun_l29_n569
+end
+
+def fun_l28_n185()
+ fun_l29_n950
+end
+
+def fun_l28_n186()
+ fun_l29_n266
+end
+
+def fun_l28_n187()
+ fun_l29_n48
+end
+
+def fun_l28_n188()
+ fun_l29_n244
+end
+
+def fun_l28_n189()
+ fun_l29_n428
+end
+
+def fun_l28_n190()
+ fun_l29_n893
+end
+
+def fun_l28_n191()
+ fun_l29_n581
+end
+
+def fun_l28_n192()
+ fun_l29_n210
+end
+
+def fun_l28_n193()
+ fun_l29_n81
+end
+
+def fun_l28_n194()
+ fun_l29_n295
+end
+
+def fun_l28_n195()
+ fun_l29_n471
+end
+
+def fun_l28_n196()
+ fun_l29_n967
+end
+
+def fun_l28_n197()
+ fun_l29_n318
+end
+
+def fun_l28_n198()
+ fun_l29_n15
+end
+
+def fun_l28_n199()
+ fun_l29_n696
+end
+
+def fun_l28_n200()
+ fun_l29_n702
+end
+
+def fun_l28_n201()
+ fun_l29_n737
+end
+
+def fun_l28_n202()
+ fun_l29_n776
+end
+
+def fun_l28_n203()
+ fun_l29_n623
+end
+
+def fun_l28_n204()
+ fun_l29_n537
+end
+
+def fun_l28_n205()
+ fun_l29_n353
+end
+
+def fun_l28_n206()
+ fun_l29_n156
+end
+
+def fun_l28_n207()
+ fun_l29_n690
+end
+
+def fun_l28_n208()
+ fun_l29_n408
+end
+
+def fun_l28_n209()
+ fun_l29_n388
+end
+
+def fun_l28_n210()
+ fun_l29_n721
+end
+
+def fun_l28_n211()
+ fun_l29_n46
+end
+
+def fun_l28_n212()
+ fun_l29_n238
+end
+
+def fun_l28_n213()
+ fun_l29_n722
+end
+
+def fun_l28_n214()
+ fun_l29_n827
+end
+
+def fun_l28_n215()
+ fun_l29_n496
+end
+
+def fun_l28_n216()
+ fun_l29_n10
+end
+
+def fun_l28_n217()
+ fun_l29_n689
+end
+
+def fun_l28_n218()
+ fun_l29_n962
+end
+
+def fun_l28_n219()
+ fun_l29_n364
+end
+
+def fun_l28_n220()
+ fun_l29_n92
+end
+
+def fun_l28_n221()
+ fun_l29_n246
+end
+
+def fun_l28_n222()
+ fun_l29_n624
+end
+
+def fun_l28_n223()
+ fun_l29_n482
+end
+
+def fun_l28_n224()
+ fun_l29_n992
+end
+
+def fun_l28_n225()
+ fun_l29_n746
+end
+
+def fun_l28_n226()
+ fun_l29_n44
+end
+
+def fun_l28_n227()
+ fun_l29_n389
+end
+
+def fun_l28_n228()
+ fun_l29_n278
+end
+
+def fun_l28_n229()
+ fun_l29_n336
+end
+
+def fun_l28_n230()
+ fun_l29_n415
+end
+
+def fun_l28_n231()
+ fun_l29_n670
+end
+
+def fun_l28_n232()
+ fun_l29_n132
+end
+
+def fun_l28_n233()
+ fun_l29_n669
+end
+
+def fun_l28_n234()
+ fun_l29_n815
+end
+
+def fun_l28_n235()
+ fun_l29_n642
+end
+
+def fun_l28_n236()
+ fun_l29_n59
+end
+
+def fun_l28_n237()
+ fun_l29_n175
+end
+
+def fun_l28_n238()
+ fun_l29_n862
+end
+
+def fun_l28_n239()
+ fun_l29_n570
+end
+
+def fun_l28_n240()
+ fun_l29_n65
+end
+
+def fun_l28_n241()
+ fun_l29_n286
+end
+
+def fun_l28_n242()
+ fun_l29_n467
+end
+
+def fun_l28_n243()
+ fun_l29_n580
+end
+
+def fun_l28_n244()
+ fun_l29_n195
+end
+
+def fun_l28_n245()
+ fun_l29_n571
+end
+
+def fun_l28_n246()
+ fun_l29_n987
+end
+
+def fun_l28_n247()
+ fun_l29_n87
+end
+
+def fun_l28_n248()
+ fun_l29_n331
+end
+
+def fun_l28_n249()
+ fun_l29_n405
+end
+
+def fun_l28_n250()
+ fun_l29_n142
+end
+
+def fun_l28_n251()
+ fun_l29_n652
+end
+
+def fun_l28_n252()
+ fun_l29_n788
+end
+
+def fun_l28_n253()
+ fun_l29_n591
+end
+
+def fun_l28_n254()
+ fun_l29_n613
+end
+
+def fun_l28_n255()
+ fun_l29_n171
+end
+
+def fun_l28_n256()
+ fun_l29_n836
+end
+
+def fun_l28_n257()
+ fun_l29_n420
+end
+
+def fun_l28_n258()
+ fun_l29_n326
+end
+
+def fun_l28_n259()
+ fun_l29_n790
+end
+
+def fun_l28_n260()
+ fun_l29_n515
+end
+
+def fun_l28_n261()
+ fun_l29_n650
+end
+
+def fun_l28_n262()
+ fun_l29_n388
+end
+
+def fun_l28_n263()
+ fun_l29_n56
+end
+
+def fun_l28_n264()
+ fun_l29_n288
+end
+
+def fun_l28_n265()
+ fun_l29_n187
+end
+
+def fun_l28_n266()
+ fun_l29_n461
+end
+
+def fun_l28_n267()
+ fun_l29_n194
+end
+
+def fun_l28_n268()
+ fun_l29_n870
+end
+
+def fun_l28_n269()
+ fun_l29_n425
+end
+
+def fun_l28_n270()
+ fun_l29_n731
+end
+
+def fun_l28_n271()
+ fun_l29_n763
+end
+
+def fun_l28_n272()
+ fun_l29_n128
+end
+
+def fun_l28_n273()
+ fun_l29_n693
+end
+
+def fun_l28_n274()
+ fun_l29_n775
+end
+
+def fun_l28_n275()
+ fun_l29_n769
+end
+
+def fun_l28_n276()
+ fun_l29_n491
+end
+
+def fun_l28_n277()
+ fun_l29_n799
+end
+
+def fun_l28_n278()
+ fun_l29_n506
+end
+
+def fun_l28_n279()
+ fun_l29_n607
+end
+
+def fun_l28_n280()
+ fun_l29_n988
+end
+
+def fun_l28_n281()
+ fun_l29_n290
+end
+
+def fun_l28_n282()
+ fun_l29_n389
+end
+
+def fun_l28_n283()
+ fun_l29_n133
+end
+
+def fun_l28_n284()
+ fun_l29_n631
+end
+
+def fun_l28_n285()
+ fun_l29_n285
+end
+
+def fun_l28_n286()
+ fun_l29_n537
+end
+
+def fun_l28_n287()
+ fun_l29_n911
+end
+
+def fun_l28_n288()
+ fun_l29_n297
+end
+
+def fun_l28_n289()
+ fun_l29_n585
+end
+
+def fun_l28_n290()
+ fun_l29_n535
+end
+
+def fun_l28_n291()
+ fun_l29_n570
+end
+
+def fun_l28_n292()
+ fun_l29_n19
+end
+
+def fun_l28_n293()
+ fun_l29_n444
+end
+
+def fun_l28_n294()
+ fun_l29_n44
+end
+
+def fun_l28_n295()
+ fun_l29_n252
+end
+
+def fun_l28_n296()
+ fun_l29_n623
+end
+
+def fun_l28_n297()
+ fun_l29_n398
+end
+
+def fun_l28_n298()
+ fun_l29_n716
+end
+
+def fun_l28_n299()
+ fun_l29_n607
+end
+
+def fun_l28_n300()
+ fun_l29_n105
+end
+
+def fun_l28_n301()
+ fun_l29_n438
+end
+
+def fun_l28_n302()
+ fun_l29_n308
+end
+
+def fun_l28_n303()
+ fun_l29_n301
+end
+
+def fun_l28_n304()
+ fun_l29_n577
+end
+
+def fun_l28_n305()
+ fun_l29_n537
+end
+
+def fun_l28_n306()
+ fun_l29_n375
+end
+
+def fun_l28_n307()
+ fun_l29_n211
+end
+
+def fun_l28_n308()
+ fun_l29_n227
+end
+
+def fun_l28_n309()
+ fun_l29_n275
+end
+
+def fun_l28_n310()
+ fun_l29_n122
+end
+
+def fun_l28_n311()
+ fun_l29_n983
+end
+
+def fun_l28_n312()
+ fun_l29_n844
+end
+
+def fun_l28_n313()
+ fun_l29_n865
+end
+
+def fun_l28_n314()
+ fun_l29_n27
+end
+
+def fun_l28_n315()
+ fun_l29_n933
+end
+
+def fun_l28_n316()
+ fun_l29_n89
+end
+
+def fun_l28_n317()
+ fun_l29_n11
+end
+
+def fun_l28_n318()
+ fun_l29_n107
+end
+
+def fun_l28_n319()
+ fun_l29_n604
+end
+
+def fun_l28_n320()
+ fun_l29_n768
+end
+
+def fun_l28_n321()
+ fun_l29_n638
+end
+
+def fun_l28_n322()
+ fun_l29_n513
+end
+
+def fun_l28_n323()
+ fun_l29_n61
+end
+
+def fun_l28_n324()
+ fun_l29_n776
+end
+
+def fun_l28_n325()
+ fun_l29_n377
+end
+
+def fun_l28_n326()
+ fun_l29_n768
+end
+
+def fun_l28_n327()
+ fun_l29_n573
+end
+
+def fun_l28_n328()
+ fun_l29_n719
+end
+
+def fun_l28_n329()
+ fun_l29_n878
+end
+
+def fun_l28_n330()
+ fun_l29_n995
+end
+
+def fun_l28_n331()
+ fun_l29_n32
+end
+
+def fun_l28_n332()
+ fun_l29_n647
+end
+
+def fun_l28_n333()
+ fun_l29_n570
+end
+
+def fun_l28_n334()
+ fun_l29_n194
+end
+
+def fun_l28_n335()
+ fun_l29_n182
+end
+
+def fun_l28_n336()
+ fun_l29_n463
+end
+
+def fun_l28_n337()
+ fun_l29_n677
+end
+
+def fun_l28_n338()
+ fun_l29_n524
+end
+
+def fun_l28_n339()
+ fun_l29_n221
+end
+
+def fun_l28_n340()
+ fun_l29_n120
+end
+
+def fun_l28_n341()
+ fun_l29_n633
+end
+
+def fun_l28_n342()
+ fun_l29_n428
+end
+
+def fun_l28_n343()
+ fun_l29_n510
+end
+
+def fun_l28_n344()
+ fun_l29_n576
+end
+
+def fun_l28_n345()
+ fun_l29_n423
+end
+
+def fun_l28_n346()
+ fun_l29_n412
+end
+
+def fun_l28_n347()
+ fun_l29_n315
+end
+
+def fun_l28_n348()
+ fun_l29_n809
+end
+
+def fun_l28_n349()
+ fun_l29_n195
+end
+
+def fun_l28_n350()
+ fun_l29_n724
+end
+
+def fun_l28_n351()
+ fun_l29_n438
+end
+
+def fun_l28_n352()
+ fun_l29_n229
+end
+
+def fun_l28_n353()
+ fun_l29_n113
+end
+
+def fun_l28_n354()
+ fun_l29_n58
+end
+
+def fun_l28_n355()
+ fun_l29_n105
+end
+
+def fun_l28_n356()
+ fun_l29_n371
+end
+
+def fun_l28_n357()
+ fun_l29_n397
+end
+
+def fun_l28_n358()
+ fun_l29_n441
+end
+
+def fun_l28_n359()
+ fun_l29_n765
+end
+
+def fun_l28_n360()
+ fun_l29_n752
+end
+
+def fun_l28_n361()
+ fun_l29_n255
+end
+
+def fun_l28_n362()
+ fun_l29_n981
+end
+
+def fun_l28_n363()
+ fun_l29_n612
+end
+
+def fun_l28_n364()
+ fun_l29_n268
+end
+
+def fun_l28_n365()
+ fun_l29_n573
+end
+
+def fun_l28_n366()
+ fun_l29_n202
+end
+
+def fun_l28_n367()
+ fun_l29_n477
+end
+
+def fun_l28_n368()
+ fun_l29_n353
+end
+
+def fun_l28_n369()
+ fun_l29_n244
+end
+
+def fun_l28_n370()
+ fun_l29_n348
+end
+
+def fun_l28_n371()
+ fun_l29_n96
+end
+
+def fun_l28_n372()
+ fun_l29_n421
+end
+
+def fun_l28_n373()
+ fun_l29_n685
+end
+
+def fun_l28_n374()
+ fun_l29_n408
+end
+
+def fun_l28_n375()
+ fun_l29_n971
+end
+
+def fun_l28_n376()
+ fun_l29_n372
+end
+
+def fun_l28_n377()
+ fun_l29_n852
+end
+
+def fun_l28_n378()
+ fun_l29_n872
+end
+
+def fun_l28_n379()
+ fun_l29_n981
+end
+
+def fun_l28_n380()
+ fun_l29_n939
+end
+
+def fun_l28_n381()
+ fun_l29_n13
+end
+
+def fun_l28_n382()
+ fun_l29_n381
+end
+
+def fun_l28_n383()
+ fun_l29_n291
+end
+
+def fun_l28_n384()
+ fun_l29_n465
+end
+
+def fun_l28_n385()
+ fun_l29_n309
+end
+
+def fun_l28_n386()
+ fun_l29_n53
+end
+
+def fun_l28_n387()
+ fun_l29_n525
+end
+
+def fun_l28_n388()
+ fun_l29_n756
+end
+
+def fun_l28_n389()
+ fun_l29_n347
+end
+
+def fun_l28_n390()
+ fun_l29_n517
+end
+
+def fun_l28_n391()
+ fun_l29_n275
+end
+
+def fun_l28_n392()
+ fun_l29_n973
+end
+
+def fun_l28_n393()
+ fun_l29_n538
+end
+
+def fun_l28_n394()
+ fun_l29_n429
+end
+
+def fun_l28_n395()
+ fun_l29_n219
+end
+
+def fun_l28_n396()
+ fun_l29_n823
+end
+
+def fun_l28_n397()
+ fun_l29_n676
+end
+
+def fun_l28_n398()
+ fun_l29_n319
+end
+
+def fun_l28_n399()
+ fun_l29_n784
+end
+
+def fun_l28_n400()
+ fun_l29_n741
+end
+
+def fun_l28_n401()
+ fun_l29_n876
+end
+
+def fun_l28_n402()
+ fun_l29_n648
+end
+
+def fun_l28_n403()
+ fun_l29_n231
+end
+
+def fun_l28_n404()
+ fun_l29_n459
+end
+
+def fun_l28_n405()
+ fun_l29_n350
+end
+
+def fun_l28_n406()
+ fun_l29_n398
+end
+
+def fun_l28_n407()
+ fun_l29_n692
+end
+
+def fun_l28_n408()
+ fun_l29_n91
+end
+
+def fun_l28_n409()
+ fun_l29_n120
+end
+
+def fun_l28_n410()
+ fun_l29_n337
+end
+
+def fun_l28_n411()
+ fun_l29_n963
+end
+
+def fun_l28_n412()
+ fun_l29_n16
+end
+
+def fun_l28_n413()
+ fun_l29_n956
+end
+
+def fun_l28_n414()
+ fun_l29_n255
+end
+
+def fun_l28_n415()
+ fun_l29_n309
+end
+
+def fun_l28_n416()
+ fun_l29_n430
+end
+
+def fun_l28_n417()
+ fun_l29_n374
+end
+
+def fun_l28_n418()
+ fun_l29_n559
+end
+
+def fun_l28_n419()
+ fun_l29_n393
+end
+
+def fun_l28_n420()
+ fun_l29_n547
+end
+
+def fun_l28_n421()
+ fun_l29_n500
+end
+
+def fun_l28_n422()
+ fun_l29_n771
+end
+
+def fun_l28_n423()
+ fun_l29_n429
+end
+
+def fun_l28_n424()
+ fun_l29_n839
+end
+
+def fun_l28_n425()
+ fun_l29_n871
+end
+
+def fun_l28_n426()
+ fun_l29_n333
+end
+
+def fun_l28_n427()
+ fun_l29_n652
+end
+
+def fun_l28_n428()
+ fun_l29_n87
+end
+
+def fun_l28_n429()
+ fun_l29_n472
+end
+
+def fun_l28_n430()
+ fun_l29_n911
+end
+
+def fun_l28_n431()
+ fun_l29_n305
+end
+
+def fun_l28_n432()
+ fun_l29_n569
+end
+
+def fun_l28_n433()
+ fun_l29_n869
+end
+
+def fun_l28_n434()
+ fun_l29_n203
+end
+
+def fun_l28_n435()
+ fun_l29_n804
+end
+
+def fun_l28_n436()
+ fun_l29_n878
+end
+
+def fun_l28_n437()
+ fun_l29_n984
+end
+
+def fun_l28_n438()
+ fun_l29_n990
+end
+
+def fun_l28_n439()
+ fun_l29_n860
+end
+
+def fun_l28_n440()
+ fun_l29_n866
+end
+
+def fun_l28_n441()
+ fun_l29_n625
+end
+
+def fun_l28_n442()
+ fun_l29_n534
+end
+
+def fun_l28_n443()
+ fun_l29_n232
+end
+
+def fun_l28_n444()
+ fun_l29_n447
+end
+
+def fun_l28_n445()
+ fun_l29_n958
+end
+
+def fun_l28_n446()
+ fun_l29_n343
+end
+
+def fun_l28_n447()
+ fun_l29_n128
+end
+
+def fun_l28_n448()
+ fun_l29_n760
+end
+
+def fun_l28_n449()
+ fun_l29_n204
+end
+
+def fun_l28_n450()
+ fun_l29_n912
+end
+
+def fun_l28_n451()
+ fun_l29_n395
+end
+
+def fun_l28_n452()
+ fun_l29_n721
+end
+
+def fun_l28_n453()
+ fun_l29_n699
+end
+
+def fun_l28_n454()
+ fun_l29_n950
+end
+
+def fun_l28_n455()
+ fun_l29_n436
+end
+
+def fun_l28_n456()
+ fun_l29_n431
+end
+
+def fun_l28_n457()
+ fun_l29_n644
+end
+
+def fun_l28_n458()
+ fun_l29_n638
+end
+
+def fun_l28_n459()
+ fun_l29_n967
+end
+
+def fun_l28_n460()
+ fun_l29_n83
+end
+
+def fun_l28_n461()
+ fun_l29_n141
+end
+
+def fun_l28_n462()
+ fun_l29_n37
+end
+
+def fun_l28_n463()
+ fun_l29_n485
+end
+
+def fun_l28_n464()
+ fun_l29_n826
+end
+
+def fun_l28_n465()
+ fun_l29_n774
+end
+
+def fun_l28_n466()
+ fun_l29_n561
+end
+
+def fun_l28_n467()
+ fun_l29_n809
+end
+
+def fun_l28_n468()
+ fun_l29_n298
+end
+
+def fun_l28_n469()
+ fun_l29_n367
+end
+
+def fun_l28_n470()
+ fun_l29_n517
+end
+
+def fun_l28_n471()
+ fun_l29_n30
+end
+
+def fun_l28_n472()
+ fun_l29_n970
+end
+
+def fun_l28_n473()
+ fun_l29_n686
+end
+
+def fun_l28_n474()
+ fun_l29_n183
+end
+
+def fun_l28_n475()
+ fun_l29_n176
+end
+
+def fun_l28_n476()
+ fun_l29_n87
+end
+
+def fun_l28_n477()
+ fun_l29_n81
+end
+
+def fun_l28_n478()
+ fun_l29_n836
+end
+
+def fun_l28_n479()
+ fun_l29_n898
+end
+
+def fun_l28_n480()
+ fun_l29_n49
+end
+
+def fun_l28_n481()
+ fun_l29_n468
+end
+
+def fun_l28_n482()
+ fun_l29_n314
+end
+
+def fun_l28_n483()
+ fun_l29_n242
+end
+
+def fun_l28_n484()
+ fun_l29_n647
+end
+
+def fun_l28_n485()
+ fun_l29_n167
+end
+
+def fun_l28_n486()
+ fun_l29_n245
+end
+
+def fun_l28_n487()
+ fun_l29_n723
+end
+
+def fun_l28_n488()
+ fun_l29_n576
+end
+
+def fun_l28_n489()
+ fun_l29_n481
+end
+
+def fun_l28_n490()
+ fun_l29_n154
+end
+
+def fun_l28_n491()
+ fun_l29_n271
+end
+
+def fun_l28_n492()
+ fun_l29_n671
+end
+
+def fun_l28_n493()
+ fun_l29_n70
+end
+
+def fun_l28_n494()
+ fun_l29_n14
+end
+
+def fun_l28_n495()
+ fun_l29_n108
+end
+
+def fun_l28_n496()
+ fun_l29_n464
+end
+
+def fun_l28_n497()
+ fun_l29_n7
+end
+
+def fun_l28_n498()
+ fun_l29_n372
+end
+
+def fun_l28_n499()
+ fun_l29_n202
+end
+
+def fun_l28_n500()
+ fun_l29_n208
+end
+
+def fun_l28_n501()
+ fun_l29_n640
+end
+
+def fun_l28_n502()
+ fun_l29_n977
+end
+
+def fun_l28_n503()
+ fun_l29_n287
+end
+
+def fun_l28_n504()
+ fun_l29_n905
+end
+
+def fun_l28_n505()
+ fun_l29_n847
+end
+
+def fun_l28_n506()
+ fun_l29_n18
+end
+
+def fun_l28_n507()
+ fun_l29_n889
+end
+
+def fun_l28_n508()
+ fun_l29_n527
+end
+
+def fun_l28_n509()
+ fun_l29_n137
+end
+
+def fun_l28_n510()
+ fun_l29_n256
+end
+
+def fun_l28_n511()
+ fun_l29_n449
+end
+
+def fun_l28_n512()
+ fun_l29_n252
+end
+
+def fun_l28_n513()
+ fun_l29_n42
+end
+
+def fun_l28_n514()
+ fun_l29_n398
+end
+
+def fun_l28_n515()
+ fun_l29_n655
+end
+
+def fun_l28_n516()
+ fun_l29_n208
+end
+
+def fun_l28_n517()
+ fun_l29_n883
+end
+
+def fun_l28_n518()
+ fun_l29_n401
+end
+
+def fun_l28_n519()
+ fun_l29_n825
+end
+
+def fun_l28_n520()
+ fun_l29_n380
+end
+
+def fun_l28_n521()
+ fun_l29_n277
+end
+
+def fun_l28_n522()
+ fun_l29_n165
+end
+
+def fun_l28_n523()
+ fun_l29_n373
+end
+
+def fun_l28_n524()
+ fun_l29_n378
+end
+
+def fun_l28_n525()
+ fun_l29_n70
+end
+
+def fun_l28_n526()
+ fun_l29_n975
+end
+
+def fun_l28_n527()
+ fun_l29_n34
+end
+
+def fun_l28_n528()
+ fun_l29_n346
+end
+
+def fun_l28_n529()
+ fun_l29_n322
+end
+
+def fun_l28_n530()
+ fun_l29_n429
+end
+
+def fun_l28_n531()
+ fun_l29_n20
+end
+
+def fun_l28_n532()
+ fun_l29_n155
+end
+
+def fun_l28_n533()
+ fun_l29_n896
+end
+
+def fun_l28_n534()
+ fun_l29_n860
+end
+
+def fun_l28_n535()
+ fun_l29_n602
+end
+
+def fun_l28_n536()
+ fun_l29_n573
+end
+
+def fun_l28_n537()
+ fun_l29_n448
+end
+
+def fun_l28_n538()
+ fun_l29_n637
+end
+
+def fun_l28_n539()
+ fun_l29_n890
+end
+
+def fun_l28_n540()
+ fun_l29_n200
+end
+
+def fun_l28_n541()
+ fun_l29_n405
+end
+
+def fun_l28_n542()
+ fun_l29_n656
+end
+
+def fun_l28_n543()
+ fun_l29_n974
+end
+
+def fun_l28_n544()
+ fun_l29_n711
+end
+
+def fun_l28_n545()
+ fun_l29_n206
+end
+
+def fun_l28_n546()
+ fun_l29_n677
+end
+
+def fun_l28_n547()
+ fun_l29_n125
+end
+
+def fun_l28_n548()
+ fun_l29_n576
+end
+
+def fun_l28_n549()
+ fun_l29_n923
+end
+
+def fun_l28_n550()
+ fun_l29_n86
+end
+
+def fun_l28_n551()
+ fun_l29_n827
+end
+
+def fun_l28_n552()
+ fun_l29_n76
+end
+
+def fun_l28_n553()
+ fun_l29_n143
+end
+
+def fun_l28_n554()
+ fun_l29_n435
+end
+
+def fun_l28_n555()
+ fun_l29_n75
+end
+
+def fun_l28_n556()
+ fun_l29_n23
+end
+
+def fun_l28_n557()
+ fun_l29_n658
+end
+
+def fun_l28_n558()
+ fun_l29_n814
+end
+
+def fun_l28_n559()
+ fun_l29_n833
+end
+
+def fun_l28_n560()
+ fun_l29_n101
+end
+
+def fun_l28_n561()
+ fun_l29_n513
+end
+
+def fun_l28_n562()
+ fun_l29_n43
+end
+
+def fun_l28_n563()
+ fun_l29_n576
+end
+
+def fun_l28_n564()
+ fun_l29_n131
+end
+
+def fun_l28_n565()
+ fun_l29_n920
+end
+
+def fun_l28_n566()
+ fun_l29_n299
+end
+
+def fun_l28_n567()
+ fun_l29_n216
+end
+
+def fun_l28_n568()
+ fun_l29_n547
+end
+
+def fun_l28_n569()
+ fun_l29_n728
+end
+
+def fun_l28_n570()
+ fun_l29_n349
+end
+
+def fun_l28_n571()
+ fun_l29_n927
+end
+
+def fun_l28_n572()
+ fun_l29_n328
+end
+
+def fun_l28_n573()
+ fun_l29_n790
+end
+
+def fun_l28_n574()
+ fun_l29_n397
+end
+
+def fun_l28_n575()
+ fun_l29_n423
+end
+
+def fun_l28_n576()
+ fun_l29_n867
+end
+
+def fun_l28_n577()
+ fun_l29_n529
+end
+
+def fun_l28_n578()
+ fun_l29_n825
+end
+
+def fun_l28_n579()
+ fun_l29_n51
+end
+
+def fun_l28_n580()
+ fun_l29_n482
+end
+
+def fun_l28_n581()
+ fun_l29_n395
+end
+
+def fun_l28_n582()
+ fun_l29_n771
+end
+
+def fun_l28_n583()
+ fun_l29_n118
+end
+
+def fun_l28_n584()
+ fun_l29_n348
+end
+
+def fun_l28_n585()
+ fun_l29_n895
+end
+
+def fun_l28_n586()
+ fun_l29_n956
+end
+
+def fun_l28_n587()
+ fun_l29_n251
+end
+
+def fun_l28_n588()
+ fun_l29_n216
+end
+
+def fun_l28_n589()
+ fun_l29_n837
+end
+
+def fun_l28_n590()
+ fun_l29_n956
+end
+
+def fun_l28_n591()
+ fun_l29_n309
+end
+
+def fun_l28_n592()
+ fun_l29_n706
+end
+
+def fun_l28_n593()
+ fun_l29_n58
+end
+
+def fun_l28_n594()
+ fun_l29_n244
+end
+
+def fun_l28_n595()
+ fun_l29_n281
+end
+
+def fun_l28_n596()
+ fun_l29_n748
+end
+
+def fun_l28_n597()
+ fun_l29_n109
+end
+
+def fun_l28_n598()
+ fun_l29_n730
+end
+
+def fun_l28_n599()
+ fun_l29_n590
+end
+
+def fun_l28_n600()
+ fun_l29_n331
+end
+
+def fun_l28_n601()
+ fun_l29_n700
+end
+
+def fun_l28_n602()
+ fun_l29_n606
+end
+
+def fun_l28_n603()
+ fun_l29_n331
+end
+
+def fun_l28_n604()
+ fun_l29_n695
+end
+
+def fun_l28_n605()
+ fun_l29_n355
+end
+
+def fun_l28_n606()
+ fun_l29_n449
+end
+
+def fun_l28_n607()
+ fun_l29_n728
+end
+
+def fun_l28_n608()
+ fun_l29_n248
+end
+
+def fun_l28_n609()
+ fun_l29_n949
+end
+
+def fun_l28_n610()
+ fun_l29_n473
+end
+
+def fun_l28_n611()
+ fun_l29_n244
+end
+
+def fun_l28_n612()
+ fun_l29_n790
+end
+
+def fun_l28_n613()
+ fun_l29_n983
+end
+
+def fun_l28_n614()
+ fun_l29_n76
+end
+
+def fun_l28_n615()
+ fun_l29_n792
+end
+
+def fun_l28_n616()
+ fun_l29_n195
+end
+
+def fun_l28_n617()
+ fun_l29_n559
+end
+
+def fun_l28_n618()
+ fun_l29_n269
+end
+
+def fun_l28_n619()
+ fun_l29_n152
+end
+
+def fun_l28_n620()
+ fun_l29_n507
+end
+
+def fun_l28_n621()
+ fun_l29_n165
+end
+
+def fun_l28_n622()
+ fun_l29_n779
+end
+
+def fun_l28_n623()
+ fun_l29_n182
+end
+
+def fun_l28_n624()
+ fun_l29_n76
+end
+
+def fun_l28_n625()
+ fun_l29_n585
+end
+
+def fun_l28_n626()
+ fun_l29_n943
+end
+
+def fun_l28_n627()
+ fun_l29_n25
+end
+
+def fun_l28_n628()
+ fun_l29_n200
+end
+
+def fun_l28_n629()
+ fun_l29_n590
+end
+
+def fun_l28_n630()
+ fun_l29_n631
+end
+
+def fun_l28_n631()
+ fun_l29_n610
+end
+
+def fun_l28_n632()
+ fun_l29_n197
+end
+
+def fun_l28_n633()
+ fun_l29_n608
+end
+
+def fun_l28_n634()
+ fun_l29_n585
+end
+
+def fun_l28_n635()
+ fun_l29_n987
+end
+
+def fun_l28_n636()
+ fun_l29_n440
+end
+
+def fun_l28_n637()
+ fun_l29_n808
+end
+
+def fun_l28_n638()
+ fun_l29_n208
+end
+
+def fun_l28_n639()
+ fun_l29_n382
+end
+
+def fun_l28_n640()
+ fun_l29_n631
+end
+
+def fun_l28_n641()
+ fun_l29_n107
+end
+
+def fun_l28_n642()
+ fun_l29_n682
+end
+
+def fun_l28_n643()
+ fun_l29_n57
+end
+
+def fun_l28_n644()
+ fun_l29_n375
+end
+
+def fun_l28_n645()
+ fun_l29_n855
+end
+
+def fun_l28_n646()
+ fun_l29_n200
+end
+
+def fun_l28_n647()
+ fun_l29_n820
+end
+
+def fun_l28_n648()
+ fun_l29_n363
+end
+
+def fun_l28_n649()
+ fun_l29_n991
+end
+
+def fun_l28_n650()
+ fun_l29_n342
+end
+
+def fun_l28_n651()
+ fun_l29_n740
+end
+
+def fun_l28_n652()
+ fun_l29_n646
+end
+
+def fun_l28_n653()
+ fun_l29_n743
+end
+
+def fun_l28_n654()
+ fun_l29_n438
+end
+
+def fun_l28_n655()
+ fun_l29_n198
+end
+
+def fun_l28_n656()
+ fun_l29_n45
+end
+
+def fun_l28_n657()
+ fun_l29_n54
+end
+
+def fun_l28_n658()
+ fun_l29_n5
+end
+
+def fun_l28_n659()
+ fun_l29_n30
+end
+
+def fun_l28_n660()
+ fun_l29_n77
+end
+
+def fun_l28_n661()
+ fun_l29_n231
+end
+
+def fun_l28_n662()
+ fun_l29_n515
+end
+
+def fun_l28_n663()
+ fun_l29_n327
+end
+
+def fun_l28_n664()
+ fun_l29_n188
+end
+
+def fun_l28_n665()
+ fun_l29_n976
+end
+
+def fun_l28_n666()
+ fun_l29_n482
+end
+
+def fun_l28_n667()
+ fun_l29_n106
+end
+
+def fun_l28_n668()
+ fun_l29_n339
+end
+
+def fun_l28_n669()
+ fun_l29_n445
+end
+
+def fun_l28_n670()
+ fun_l29_n708
+end
+
+def fun_l28_n671()
+ fun_l29_n846
+end
+
+def fun_l28_n672()
+ fun_l29_n142
+end
+
+def fun_l28_n673()
+ fun_l29_n567
+end
+
+def fun_l28_n674()
+ fun_l29_n875
+end
+
+def fun_l28_n675()
+ fun_l29_n107
+end
+
+def fun_l28_n676()
+ fun_l29_n243
+end
+
+def fun_l28_n677()
+ fun_l29_n580
+end
+
+def fun_l28_n678()
+ fun_l29_n75
+end
+
+def fun_l28_n679()
+ fun_l29_n230
+end
+
+def fun_l28_n680()
+ fun_l29_n72
+end
+
+def fun_l28_n681()
+ fun_l29_n429
+end
+
+def fun_l28_n682()
+ fun_l29_n816
+end
+
+def fun_l28_n683()
+ fun_l29_n896
+end
+
+def fun_l28_n684()
+ fun_l29_n933
+end
+
+def fun_l28_n685()
+ fun_l29_n432
+end
+
+def fun_l28_n686()
+ fun_l29_n547
+end
+
+def fun_l28_n687()
+ fun_l29_n670
+end
+
+def fun_l28_n688()
+ fun_l29_n952
+end
+
+def fun_l28_n689()
+ fun_l29_n137
+end
+
+def fun_l28_n690()
+ fun_l29_n532
+end
+
+def fun_l28_n691()
+ fun_l29_n608
+end
+
+def fun_l28_n692()
+ fun_l29_n264
+end
+
+def fun_l28_n693()
+ fun_l29_n220
+end
+
+def fun_l28_n694()
+ fun_l29_n499
+end
+
+def fun_l28_n695()
+ fun_l29_n244
+end
+
+def fun_l28_n696()
+ fun_l29_n952
+end
+
+def fun_l28_n697()
+ fun_l29_n700
+end
+
+def fun_l28_n698()
+ fun_l29_n415
+end
+
+def fun_l28_n699()
+ fun_l29_n712
+end
+
+def fun_l28_n700()
+ fun_l29_n209
+end
+
+def fun_l28_n701()
+ fun_l29_n759
+end
+
+def fun_l28_n702()
+ fun_l29_n786
+end
+
+def fun_l28_n703()
+ fun_l29_n858
+end
+
+def fun_l28_n704()
+ fun_l29_n328
+end
+
+def fun_l28_n705()
+ fun_l29_n201
+end
+
+def fun_l28_n706()
+ fun_l29_n317
+end
+
+def fun_l28_n707()
+ fun_l29_n335
+end
+
+def fun_l28_n708()
+ fun_l29_n483
+end
+
+def fun_l28_n709()
+ fun_l29_n1
+end
+
+def fun_l28_n710()
+ fun_l29_n962
+end
+
+def fun_l28_n711()
+ fun_l29_n158
+end
+
+def fun_l28_n712()
+ fun_l29_n591
+end
+
+def fun_l28_n713()
+ fun_l29_n849
+end
+
+def fun_l28_n714()
+ fun_l29_n149
+end
+
+def fun_l28_n715()
+ fun_l29_n653
+end
+
+def fun_l28_n716()
+ fun_l29_n173
+end
+
+def fun_l28_n717()
+ fun_l29_n21
+end
+
+def fun_l28_n718()
+ fun_l29_n384
+end
+
+def fun_l28_n719()
+ fun_l29_n601
+end
+
+def fun_l28_n720()
+ fun_l29_n388
+end
+
+def fun_l28_n721()
+ fun_l29_n866
+end
+
+def fun_l28_n722()
+ fun_l29_n261
+end
+
+def fun_l28_n723()
+ fun_l29_n412
+end
+
+def fun_l28_n724()
+ fun_l29_n77
+end
+
+def fun_l28_n725()
+ fun_l29_n395
+end
+
+def fun_l28_n726()
+ fun_l29_n863
+end
+
+def fun_l28_n727()
+ fun_l29_n780
+end
+
+def fun_l28_n728()
+ fun_l29_n400
+end
+
+def fun_l28_n729()
+ fun_l29_n495
+end
+
+def fun_l28_n730()
+ fun_l29_n813
+end
+
+def fun_l28_n731()
+ fun_l29_n330
+end
+
+def fun_l28_n732()
+ fun_l29_n479
+end
+
+def fun_l28_n733()
+ fun_l29_n446
+end
+
+def fun_l28_n734()
+ fun_l29_n354
+end
+
+def fun_l28_n735()
+ fun_l29_n88
+end
+
+def fun_l28_n736()
+ fun_l29_n296
+end
+
+def fun_l28_n737()
+ fun_l29_n457
+end
+
+def fun_l28_n738()
+ fun_l29_n611
+end
+
+def fun_l28_n739()
+ fun_l29_n412
+end
+
+def fun_l28_n740()
+ fun_l29_n290
+end
+
+def fun_l28_n741()
+ fun_l29_n935
+end
+
+def fun_l28_n742()
+ fun_l29_n833
+end
+
+def fun_l28_n743()
+ fun_l29_n296
+end
+
+def fun_l28_n744()
+ fun_l29_n249
+end
+
+def fun_l28_n745()
+ fun_l29_n567
+end
+
+def fun_l28_n746()
+ fun_l29_n707
+end
+
+def fun_l28_n747()
+ fun_l29_n633
+end
+
+def fun_l28_n748()
+ fun_l29_n303
+end
+
+def fun_l28_n749()
+ fun_l29_n971
+end
+
+def fun_l28_n750()
+ fun_l29_n784
+end
+
+def fun_l28_n751()
+ fun_l29_n88
+end
+
+def fun_l28_n752()
+ fun_l29_n782
+end
+
+def fun_l28_n753()
+ fun_l29_n322
+end
+
+def fun_l28_n754()
+ fun_l29_n362
+end
+
+def fun_l28_n755()
+ fun_l29_n894
+end
+
+def fun_l28_n756()
+ fun_l29_n848
+end
+
+def fun_l28_n757()
+ fun_l29_n617
+end
+
+def fun_l28_n758()
+ fun_l29_n103
+end
+
+def fun_l28_n759()
+ fun_l29_n625
+end
+
+def fun_l28_n760()
+ fun_l29_n592
+end
+
+def fun_l28_n761()
+ fun_l29_n597
+end
+
+def fun_l28_n762()
+ fun_l29_n118
+end
+
+def fun_l28_n763()
+ fun_l29_n366
+end
+
+def fun_l28_n764()
+ fun_l29_n609
+end
+
+def fun_l28_n765()
+ fun_l29_n710
+end
+
+def fun_l28_n766()
+ fun_l29_n563
+end
+
+def fun_l28_n767()
+ fun_l29_n324
+end
+
+def fun_l28_n768()
+ fun_l29_n783
+end
+
+def fun_l28_n769()
+ fun_l29_n512
+end
+
+def fun_l28_n770()
+ fun_l29_n0
+end
+
+def fun_l28_n771()
+ fun_l29_n60
+end
+
+def fun_l28_n772()
+ fun_l29_n18
+end
+
+def fun_l28_n773()
+ fun_l29_n741
+end
+
+def fun_l28_n774()
+ fun_l29_n862
+end
+
+def fun_l28_n775()
+ fun_l29_n183
+end
+
+def fun_l28_n776()
+ fun_l29_n148
+end
+
+def fun_l28_n777()
+ fun_l29_n703
+end
+
+def fun_l28_n778()
+ fun_l29_n251
+end
+
+def fun_l28_n779()
+ fun_l29_n84
+end
+
+def fun_l28_n780()
+ fun_l29_n85
+end
+
+def fun_l28_n781()
+ fun_l29_n632
+end
+
+def fun_l28_n782()
+ fun_l29_n28
+end
+
+def fun_l28_n783()
+ fun_l29_n123
+end
+
+def fun_l28_n784()
+ fun_l29_n66
+end
+
+def fun_l28_n785()
+ fun_l29_n266
+end
+
+def fun_l28_n786()
+ fun_l29_n860
+end
+
+def fun_l28_n787()
+ fun_l29_n769
+end
+
+def fun_l28_n788()
+ fun_l29_n921
+end
+
+def fun_l28_n789()
+ fun_l29_n513
+end
+
+def fun_l28_n790()
+ fun_l29_n455
+end
+
+def fun_l28_n791()
+ fun_l29_n589
+end
+
+def fun_l28_n792()
+ fun_l29_n557
+end
+
+def fun_l28_n793()
+ fun_l29_n827
+end
+
+def fun_l28_n794()
+ fun_l29_n561
+end
+
+def fun_l28_n795()
+ fun_l29_n891
+end
+
+def fun_l28_n796()
+ fun_l29_n938
+end
+
+def fun_l28_n797()
+ fun_l29_n157
+end
+
+def fun_l28_n798()
+ fun_l29_n691
+end
+
+def fun_l28_n799()
+ fun_l29_n20
+end
+
+def fun_l28_n800()
+ fun_l29_n737
+end
+
+def fun_l28_n801()
+ fun_l29_n675
+end
+
+def fun_l28_n802()
+ fun_l29_n385
+end
+
+def fun_l28_n803()
+ fun_l29_n206
+end
+
+def fun_l28_n804()
+ fun_l29_n366
+end
+
+def fun_l28_n805()
+ fun_l29_n107
+end
+
+def fun_l28_n806()
+ fun_l29_n425
+end
+
+def fun_l28_n807()
+ fun_l29_n371
+end
+
+def fun_l28_n808()
+ fun_l29_n241
+end
+
+def fun_l28_n809()
+ fun_l29_n168
+end
+
+def fun_l28_n810()
+ fun_l29_n201
+end
+
+def fun_l28_n811()
+ fun_l29_n600
+end
+
+def fun_l28_n812()
+ fun_l29_n251
+end
+
+def fun_l28_n813()
+ fun_l29_n10
+end
+
+def fun_l28_n814()
+ fun_l29_n428
+end
+
+def fun_l28_n815()
+ fun_l29_n850
+end
+
+def fun_l28_n816()
+ fun_l29_n276
+end
+
+def fun_l28_n817()
+ fun_l29_n196
+end
+
+def fun_l28_n818()
+ fun_l29_n623
+end
+
+def fun_l28_n819()
+ fun_l29_n441
+end
+
+def fun_l28_n820()
+ fun_l29_n724
+end
+
+def fun_l28_n821()
+ fun_l29_n958
+end
+
+def fun_l28_n822()
+ fun_l29_n449
+end
+
+def fun_l28_n823()
+ fun_l29_n408
+end
+
+def fun_l28_n824()
+ fun_l29_n74
+end
+
+def fun_l28_n825()
+ fun_l29_n124
+end
+
+def fun_l28_n826()
+ fun_l29_n991
+end
+
+def fun_l28_n827()
+ fun_l29_n576
+end
+
+def fun_l28_n828()
+ fun_l29_n743
+end
+
+def fun_l28_n829()
+ fun_l29_n343
+end
+
+def fun_l28_n830()
+ fun_l29_n376
+end
+
+def fun_l28_n831()
+ fun_l29_n216
+end
+
+def fun_l28_n832()
+ fun_l29_n358
+end
+
+def fun_l28_n833()
+ fun_l29_n567
+end
+
+def fun_l28_n834()
+ fun_l29_n415
+end
+
+def fun_l28_n835()
+ fun_l29_n984
+end
+
+def fun_l28_n836()
+ fun_l29_n367
+end
+
+def fun_l28_n837()
+ fun_l29_n299
+end
+
+def fun_l28_n838()
+ fun_l29_n718
+end
+
+def fun_l28_n839()
+ fun_l29_n241
+end
+
+def fun_l28_n840()
+ fun_l29_n736
+end
+
+def fun_l28_n841()
+ fun_l29_n582
+end
+
+def fun_l28_n842()
+ fun_l29_n994
+end
+
+def fun_l28_n843()
+ fun_l29_n301
+end
+
+def fun_l28_n844()
+ fun_l29_n597
+end
+
+def fun_l28_n845()
+ fun_l29_n141
+end
+
+def fun_l28_n846()
+ fun_l29_n37
+end
+
+def fun_l28_n847()
+ fun_l29_n216
+end
+
+def fun_l28_n848()
+ fun_l29_n286
+end
+
+def fun_l28_n849()
+ fun_l29_n607
+end
+
+def fun_l28_n850()
+ fun_l29_n503
+end
+
+def fun_l28_n851()
+ fun_l29_n321
+end
+
+def fun_l28_n852()
+ fun_l29_n179
+end
+
+def fun_l28_n853()
+ fun_l29_n802
+end
+
+def fun_l28_n854()
+ fun_l29_n742
+end
+
+def fun_l28_n855()
+ fun_l29_n300
+end
+
+def fun_l28_n856()
+ fun_l29_n453
+end
+
+def fun_l28_n857()
+ fun_l29_n520
+end
+
+def fun_l28_n858()
+ fun_l29_n911
+end
+
+def fun_l28_n859()
+ fun_l29_n209
+end
+
+def fun_l28_n860()
+ fun_l29_n921
+end
+
+def fun_l28_n861()
+ fun_l29_n653
+end
+
+def fun_l28_n862()
+ fun_l29_n347
+end
+
+def fun_l28_n863()
+ fun_l29_n733
+end
+
+def fun_l28_n864()
+ fun_l29_n824
+end
+
+def fun_l28_n865()
+ fun_l29_n497
+end
+
+def fun_l28_n866()
+ fun_l29_n256
+end
+
+def fun_l28_n867()
+ fun_l29_n884
+end
+
+def fun_l28_n868()
+ fun_l29_n937
+end
+
+def fun_l28_n869()
+ fun_l29_n894
+end
+
+def fun_l28_n870()
+ fun_l29_n258
+end
+
+def fun_l28_n871()
+ fun_l29_n45
+end
+
+def fun_l28_n872()
+ fun_l29_n640
+end
+
+def fun_l28_n873()
+ fun_l29_n909
+end
+
+def fun_l28_n874()
+ fun_l29_n586
+end
+
+def fun_l28_n875()
+ fun_l29_n600
+end
+
+def fun_l28_n876()
+ fun_l29_n636
+end
+
+def fun_l28_n877()
+ fun_l29_n972
+end
+
+def fun_l28_n878()
+ fun_l29_n627
+end
+
+def fun_l28_n879()
+ fun_l29_n381
+end
+
+def fun_l28_n880()
+ fun_l29_n664
+end
+
+def fun_l28_n881()
+ fun_l29_n350
+end
+
+def fun_l28_n882()
+ fun_l29_n611
+end
+
+def fun_l28_n883()
+ fun_l29_n355
+end
+
+def fun_l28_n884()
+ fun_l29_n945
+end
+
+def fun_l28_n885()
+ fun_l29_n462
+end
+
+def fun_l28_n886()
+ fun_l29_n723
+end
+
+def fun_l28_n887()
+ fun_l29_n500
+end
+
+def fun_l28_n888()
+ fun_l29_n166
+end
+
+def fun_l28_n889()
+ fun_l29_n779
+end
+
+def fun_l28_n890()
+ fun_l29_n151
+end
+
+def fun_l28_n891()
+ fun_l29_n757
+end
+
+def fun_l28_n892()
+ fun_l29_n782
+end
+
+def fun_l28_n893()
+ fun_l29_n108
+end
+
+def fun_l28_n894()
+ fun_l29_n122
+end
+
+def fun_l28_n895()
+ fun_l29_n815
+end
+
+def fun_l28_n896()
+ fun_l29_n742
+end
+
+def fun_l28_n897()
+ fun_l29_n861
+end
+
+def fun_l28_n898()
+ fun_l29_n738
+end
+
+def fun_l28_n899()
+ fun_l29_n765
+end
+
+def fun_l28_n900()
+ fun_l29_n648
+end
+
+def fun_l28_n901()
+ fun_l29_n923
+end
+
+def fun_l28_n902()
+ fun_l29_n269
+end
+
+def fun_l28_n903()
+ fun_l29_n626
+end
+
+def fun_l28_n904()
+ fun_l29_n100
+end
+
+def fun_l28_n905()
+ fun_l29_n587
+end
+
+def fun_l28_n906()
+ fun_l29_n841
+end
+
+def fun_l28_n907()
+ fun_l29_n239
+end
+
+def fun_l28_n908()
+ fun_l29_n87
+end
+
+def fun_l28_n909()
+ fun_l29_n765
+end
+
+def fun_l28_n910()
+ fun_l29_n216
+end
+
+def fun_l28_n911()
+ fun_l29_n110
+end
+
+def fun_l28_n912()
+ fun_l29_n96
+end
+
+def fun_l28_n913()
+ fun_l29_n946
+end
+
+def fun_l28_n914()
+ fun_l29_n762
+end
+
+def fun_l28_n915()
+ fun_l29_n697
+end
+
+def fun_l28_n916()
+ fun_l29_n44
+end
+
+def fun_l28_n917()
+ fun_l29_n257
+end
+
+def fun_l28_n918()
+ fun_l29_n195
+end
+
+def fun_l28_n919()
+ fun_l29_n886
+end
+
+def fun_l28_n920()
+ fun_l29_n432
+end
+
+def fun_l28_n921()
+ fun_l29_n746
+end
+
+def fun_l28_n922()
+ fun_l29_n756
+end
+
+def fun_l28_n923()
+ fun_l29_n33
+end
+
+def fun_l28_n924()
+ fun_l29_n720
+end
+
+def fun_l28_n925()
+ fun_l29_n629
+end
+
+def fun_l28_n926()
+ fun_l29_n144
+end
+
+def fun_l28_n927()
+ fun_l29_n225
+end
+
+def fun_l28_n928()
+ fun_l29_n556
+end
+
+def fun_l28_n929()
+ fun_l29_n436
+end
+
+def fun_l28_n930()
+ fun_l29_n380
+end
+
+def fun_l28_n931()
+ fun_l29_n478
+end
+
+def fun_l28_n932()
+ fun_l29_n949
+end
+
+def fun_l28_n933()
+ fun_l29_n811
+end
+
+def fun_l28_n934()
+ fun_l29_n589
+end
+
+def fun_l28_n935()
+ fun_l29_n961
+end
+
+def fun_l28_n936()
+ fun_l29_n413
+end
+
+def fun_l28_n937()
+ fun_l29_n941
+end
+
+def fun_l28_n938()
+ fun_l29_n507
+end
+
+def fun_l28_n939()
+ fun_l29_n364
+end
+
+def fun_l28_n940()
+ fun_l29_n100
+end
+
+def fun_l28_n941()
+ fun_l29_n254
+end
+
+def fun_l28_n942()
+ fun_l29_n272
+end
+
+def fun_l28_n943()
+ fun_l29_n420
+end
+
+def fun_l28_n944()
+ fun_l29_n132
+end
+
+def fun_l28_n945()
+ fun_l29_n907
+end
+
+def fun_l28_n946()
+ fun_l29_n784
+end
+
+def fun_l28_n947()
+ fun_l29_n938
+end
+
+def fun_l28_n948()
+ fun_l29_n780
+end
+
+def fun_l28_n949()
+ fun_l29_n584
+end
+
+def fun_l28_n950()
+ fun_l29_n258
+end
+
+def fun_l28_n951()
+ fun_l29_n754
+end
+
+def fun_l28_n952()
+ fun_l29_n582
+end
+
+def fun_l28_n953()
+ fun_l29_n278
+end
+
+def fun_l28_n954()
+ fun_l29_n870
+end
+
+def fun_l28_n955()
+ fun_l29_n664
+end
+
+def fun_l28_n956()
+ fun_l29_n375
+end
+
+def fun_l28_n957()
+ fun_l29_n613
+end
+
+def fun_l28_n958()
+ fun_l29_n530
+end
+
+def fun_l28_n959()
+ fun_l29_n933
+end
+
+def fun_l28_n960()
+ fun_l29_n298
+end
+
+def fun_l28_n961()
+ fun_l29_n507
+end
+
+def fun_l28_n962()
+ fun_l29_n526
+end
+
+def fun_l28_n963()
+ fun_l29_n508
+end
+
+def fun_l28_n964()
+ fun_l29_n227
+end
+
+def fun_l28_n965()
+ fun_l29_n999
+end
+
+def fun_l28_n966()
+ fun_l29_n489
+end
+
+def fun_l28_n967()
+ fun_l29_n789
+end
+
+def fun_l28_n968()
+ fun_l29_n304
+end
+
+def fun_l28_n969()
+ fun_l29_n343
+end
+
+def fun_l28_n970()
+ fun_l29_n560
+end
+
+def fun_l28_n971()
+ fun_l29_n610
+end
+
+def fun_l28_n972()
+ fun_l29_n606
+end
+
+def fun_l28_n973()
+ fun_l29_n592
+end
+
+def fun_l28_n974()
+ fun_l29_n135
+end
+
+def fun_l28_n975()
+ fun_l29_n513
+end
+
+def fun_l28_n976()
+ fun_l29_n522
+end
+
+def fun_l28_n977()
+ fun_l29_n323
+end
+
+def fun_l28_n978()
+ fun_l29_n26
+end
+
+def fun_l28_n979()
+ fun_l29_n737
+end
+
+def fun_l28_n980()
+ fun_l29_n705
+end
+
+def fun_l28_n981()
+ fun_l29_n405
+end
+
+def fun_l28_n982()
+ fun_l29_n891
+end
+
+def fun_l28_n983()
+ fun_l29_n155
+end
+
+def fun_l28_n984()
+ fun_l29_n814
+end
+
+def fun_l28_n985()
+ fun_l29_n70
+end
+
+def fun_l28_n986()
+ fun_l29_n940
+end
+
+def fun_l28_n987()
+ fun_l29_n427
+end
+
+def fun_l28_n988()
+ fun_l29_n478
+end
+
+def fun_l28_n989()
+ fun_l29_n432
+end
+
+def fun_l28_n990()
+ fun_l29_n320
+end
+
+def fun_l28_n991()
+ fun_l29_n422
+end
+
+def fun_l28_n992()
+ fun_l29_n917
+end
+
+def fun_l28_n993()
+ fun_l29_n391
+end
+
+def fun_l28_n994()
+ fun_l29_n950
+end
+
+def fun_l28_n995()
+ fun_l29_n635
+end
+
+def fun_l28_n996()
+ fun_l29_n392
+end
+
+def fun_l28_n997()
+ fun_l29_n311
+end
+
+def fun_l28_n998()
+ fun_l29_n320
+end
+
+def fun_l28_n999()
+ fun_l29_n916
+end
+
+def fun_l29_n0()
+ inc
+end
+
+def fun_l29_n1()
+ inc
+end
+
+def fun_l29_n2()
+ inc
+end
+
+def fun_l29_n3()
+ inc
+end
+
+def fun_l29_n4()
+ inc
+end
+
+def fun_l29_n5()
+ inc
+end
+
+def fun_l29_n6()
+ inc
+end
+
+def fun_l29_n7()
+ inc
+end
+
+def fun_l29_n8()
+ inc
+end
+
+def fun_l29_n9()
+ inc
+end
+
+def fun_l29_n10()
+ inc
+end
+
+def fun_l29_n11()
+ inc
+end
+
+def fun_l29_n12()
+ inc
+end
+
+def fun_l29_n13()
+ inc
+end
+
+def fun_l29_n14()
+ inc
+end
+
+def fun_l29_n15()
+ inc
+end
+
+def fun_l29_n16()
+ inc
+end
+
+def fun_l29_n17()
+ inc
+end
+
+def fun_l29_n18()
+ inc
+end
+
+def fun_l29_n19()
+ inc
+end
+
+def fun_l29_n20()
+ inc
+end
+
+def fun_l29_n21()
+ inc
+end
+
+def fun_l29_n22()
+ inc
+end
+
+def fun_l29_n23()
+ inc
+end
+
+def fun_l29_n24()
+ inc
+end
+
+def fun_l29_n25()
+ inc
+end
+
+def fun_l29_n26()
+ inc
+end
+
+def fun_l29_n27()
+ inc
+end
+
+def fun_l29_n28()
+ inc
+end
+
+def fun_l29_n29()
+ inc
+end
+
+def fun_l29_n30()
+ inc
+end
+
+def fun_l29_n31()
+ inc
+end
+
+def fun_l29_n32()
+ inc
+end
+
+def fun_l29_n33()
+ inc
+end
+
+def fun_l29_n34()
+ inc
+end
+
+def fun_l29_n35()
+ inc
+end
+
+def fun_l29_n36()
+ inc
+end
+
+def fun_l29_n37()
+ inc
+end
+
+def fun_l29_n38()
+ inc
+end
+
+def fun_l29_n39()
+ inc
+end
+
+def fun_l29_n40()
+ inc
+end
+
+def fun_l29_n41()
+ inc
+end
+
+def fun_l29_n42()
+ inc
+end
+
+def fun_l29_n43()
+ inc
+end
+
+def fun_l29_n44()
+ inc
+end
+
+def fun_l29_n45()
+ inc
+end
+
+def fun_l29_n46()
+ inc
+end
+
+def fun_l29_n47()
+ inc
+end
+
+def fun_l29_n48()
+ inc
+end
+
+def fun_l29_n49()
+ inc
+end
+
+def fun_l29_n50()
+ inc
+end
+
+def fun_l29_n51()
+ inc
+end
+
+def fun_l29_n52()
+ inc
+end
+
+def fun_l29_n53()
+ inc
+end
+
+def fun_l29_n54()
+ inc
+end
+
+def fun_l29_n55()
+ inc
+end
+
+def fun_l29_n56()
+ inc
+end
+
+def fun_l29_n57()
+ inc
+end
+
+def fun_l29_n58()
+ inc
+end
+
+def fun_l29_n59()
+ inc
+end
+
+def fun_l29_n60()
+ inc
+end
+
+def fun_l29_n61()
+ inc
+end
+
+def fun_l29_n62()
+ inc
+end
+
+def fun_l29_n63()
+ inc
+end
+
+def fun_l29_n64()
+ inc
+end
+
+def fun_l29_n65()
+ inc
+end
+
+def fun_l29_n66()
+ inc
+end
+
+def fun_l29_n67()
+ inc
+end
+
+def fun_l29_n68()
+ inc
+end
+
+def fun_l29_n69()
+ inc
+end
+
+def fun_l29_n70()
+ inc
+end
+
+def fun_l29_n71()
+ inc
+end
+
+def fun_l29_n72()
+ inc
+end
+
+def fun_l29_n73()
+ inc
+end
+
+def fun_l29_n74()
+ inc
+end
+
+def fun_l29_n75()
+ inc
+end
+
+def fun_l29_n76()
+ inc
+end
+
+def fun_l29_n77()
+ inc
+end
+
+def fun_l29_n78()
+ inc
+end
+
+def fun_l29_n79()
+ inc
+end
+
+def fun_l29_n80()
+ inc
+end
+
+def fun_l29_n81()
+ inc
+end
+
+def fun_l29_n82()
+ inc
+end
+
+def fun_l29_n83()
+ inc
+end
+
+def fun_l29_n84()
+ inc
+end
+
+def fun_l29_n85()
+ inc
+end
+
+def fun_l29_n86()
+ inc
+end
+
+def fun_l29_n87()
+ inc
+end
+
+def fun_l29_n88()
+ inc
+end
+
+def fun_l29_n89()
+ inc
+end
+
+def fun_l29_n90()
+ inc
+end
+
+def fun_l29_n91()
+ inc
+end
+
+def fun_l29_n92()
+ inc
+end
+
+def fun_l29_n93()
+ inc
+end
+
+def fun_l29_n94()
+ inc
+end
+
+def fun_l29_n95()
+ inc
+end
+
+def fun_l29_n96()
+ inc
+end
+
+def fun_l29_n97()
+ inc
+end
+
+def fun_l29_n98()
+ inc
+end
+
+def fun_l29_n99()
+ inc
+end
+
+def fun_l29_n100()
+ inc
+end
+
+def fun_l29_n101()
+ inc
+end
+
+def fun_l29_n102()
+ inc
+end
+
+def fun_l29_n103()
+ inc
+end
+
+def fun_l29_n104()
+ inc
+end
+
+def fun_l29_n105()
+ inc
+end
+
+def fun_l29_n106()
+ inc
+end
+
+def fun_l29_n107()
+ inc
+end
+
+def fun_l29_n108()
+ inc
+end
+
+def fun_l29_n109()
+ inc
+end
+
+def fun_l29_n110()
+ inc
+end
+
+def fun_l29_n111()
+ inc
+end
+
+def fun_l29_n112()
+ inc
+end
+
+def fun_l29_n113()
+ inc
+end
+
+def fun_l29_n114()
+ inc
+end
+
+def fun_l29_n115()
+ inc
+end
+
+def fun_l29_n116()
+ inc
+end
+
+def fun_l29_n117()
+ inc
+end
+
+def fun_l29_n118()
+ inc
+end
+
+def fun_l29_n119()
+ inc
+end
+
+def fun_l29_n120()
+ inc
+end
+
+def fun_l29_n121()
+ inc
+end
+
+def fun_l29_n122()
+ inc
+end
+
+def fun_l29_n123()
+ inc
+end
+
+def fun_l29_n124()
+ inc
+end
+
+def fun_l29_n125()
+ inc
+end
+
+def fun_l29_n126()
+ inc
+end
+
+def fun_l29_n127()
+ inc
+end
+
+def fun_l29_n128()
+ inc
+end
+
+def fun_l29_n129()
+ inc
+end
+
+def fun_l29_n130()
+ inc
+end
+
+def fun_l29_n131()
+ inc
+end
+
+def fun_l29_n132()
+ inc
+end
+
+def fun_l29_n133()
+ inc
+end
+
+def fun_l29_n134()
+ inc
+end
+
+def fun_l29_n135()
+ inc
+end
+
+def fun_l29_n136()
+ inc
+end
+
+def fun_l29_n137()
+ inc
+end
+
+def fun_l29_n138()
+ inc
+end
+
+def fun_l29_n139()
+ inc
+end
+
+def fun_l29_n140()
+ inc
+end
+
+def fun_l29_n141()
+ inc
+end
+
+def fun_l29_n142()
+ inc
+end
+
+def fun_l29_n143()
+ inc
+end
+
+def fun_l29_n144()
+ inc
+end
+
+def fun_l29_n145()
+ inc
+end
+
+def fun_l29_n146()
+ inc
+end
+
+def fun_l29_n147()
+ inc
+end
+
+def fun_l29_n148()
+ inc
+end
+
+def fun_l29_n149()
+ inc
+end
+
+def fun_l29_n150()
+ inc
+end
+
+def fun_l29_n151()
+ inc
+end
+
+def fun_l29_n152()
+ inc
+end
+
+def fun_l29_n153()
+ inc
+end
+
+def fun_l29_n154()
+ inc
+end
+
+def fun_l29_n155()
+ inc
+end
+
+def fun_l29_n156()
+ inc
+end
+
+def fun_l29_n157()
+ inc
+end
+
+def fun_l29_n158()
+ inc
+end
+
+def fun_l29_n159()
+ inc
+end
+
+def fun_l29_n160()
+ inc
+end
+
+def fun_l29_n161()
+ inc
+end
+
+def fun_l29_n162()
+ inc
+end
+
+def fun_l29_n163()
+ inc
+end
+
+def fun_l29_n164()
+ inc
+end
+
+def fun_l29_n165()
+ inc
+end
+
+def fun_l29_n166()
+ inc
+end
+
+def fun_l29_n167()
+ inc
+end
+
+def fun_l29_n168()
+ inc
+end
+
+def fun_l29_n169()
+ inc
+end
+
+def fun_l29_n170()
+ inc
+end
+
+def fun_l29_n171()
+ inc
+end
+
+def fun_l29_n172()
+ inc
+end
+
+def fun_l29_n173()
+ inc
+end
+
+def fun_l29_n174()
+ inc
+end
+
+def fun_l29_n175()
+ inc
+end
+
+def fun_l29_n176()
+ inc
+end
+
+def fun_l29_n177()
+ inc
+end
+
+def fun_l29_n178()
+ inc
+end
+
+def fun_l29_n179()
+ inc
+end
+
+def fun_l29_n180()
+ inc
+end
+
+def fun_l29_n181()
+ inc
+end
+
+def fun_l29_n182()
+ inc
+end
+
+def fun_l29_n183()
+ inc
+end
+
+def fun_l29_n184()
+ inc
+end
+
+def fun_l29_n185()
+ inc
+end
+
+def fun_l29_n186()
+ inc
+end
+
+def fun_l29_n187()
+ inc
+end
+
+def fun_l29_n188()
+ inc
+end
+
+def fun_l29_n189()
+ inc
+end
+
+def fun_l29_n190()
+ inc
+end
+
+def fun_l29_n191()
+ inc
+end
+
+def fun_l29_n192()
+ inc
+end
+
+def fun_l29_n193()
+ inc
+end
+
+def fun_l29_n194()
+ inc
+end
+
+def fun_l29_n195()
+ inc
+end
+
+def fun_l29_n196()
+ inc
+end
+
+def fun_l29_n197()
+ inc
+end
+
+def fun_l29_n198()
+ inc
+end
+
+def fun_l29_n199()
+ inc
+end
+
+def fun_l29_n200()
+ inc
+end
+
+def fun_l29_n201()
+ inc
+end
+
+def fun_l29_n202()
+ inc
+end
+
+def fun_l29_n203()
+ inc
+end
+
+def fun_l29_n204()
+ inc
+end
+
+def fun_l29_n205()
+ inc
+end
+
+def fun_l29_n206()
+ inc
+end
+
+def fun_l29_n207()
+ inc
+end
+
+def fun_l29_n208()
+ inc
+end
+
+def fun_l29_n209()
+ inc
+end
+
+def fun_l29_n210()
+ inc
+end
+
+def fun_l29_n211()
+ inc
+end
+
+def fun_l29_n212()
+ inc
+end
+
+def fun_l29_n213()
+ inc
+end
+
+def fun_l29_n214()
+ inc
+end
+
+def fun_l29_n215()
+ inc
+end
+
+def fun_l29_n216()
+ inc
+end
+
+def fun_l29_n217()
+ inc
+end
+
+def fun_l29_n218()
+ inc
+end
+
+def fun_l29_n219()
+ inc
+end
+
+def fun_l29_n220()
+ inc
+end
+
+def fun_l29_n221()
+ inc
+end
+
+def fun_l29_n222()
+ inc
+end
+
+def fun_l29_n223()
+ inc
+end
+
+def fun_l29_n224()
+ inc
+end
+
+def fun_l29_n225()
+ inc
+end
+
+def fun_l29_n226()
+ inc
+end
+
+def fun_l29_n227()
+ inc
+end
+
+def fun_l29_n228()
+ inc
+end
+
+def fun_l29_n229()
+ inc
+end
+
+def fun_l29_n230()
+ inc
+end
+
+def fun_l29_n231()
+ inc
+end
+
+def fun_l29_n232()
+ inc
+end
+
+def fun_l29_n233()
+ inc
+end
+
+def fun_l29_n234()
+ inc
+end
+
+def fun_l29_n235()
+ inc
+end
+
+def fun_l29_n236()
+ inc
+end
+
+def fun_l29_n237()
+ inc
+end
+
+def fun_l29_n238()
+ inc
+end
+
+def fun_l29_n239()
+ inc
+end
+
+def fun_l29_n240()
+ inc
+end
+
+def fun_l29_n241()
+ inc
+end
+
+def fun_l29_n242()
+ inc
+end
+
+def fun_l29_n243()
+ inc
+end
+
+def fun_l29_n244()
+ inc
+end
+
+def fun_l29_n245()
+ inc
+end
+
+def fun_l29_n246()
+ inc
+end
+
+def fun_l29_n247()
+ inc
+end
+
+def fun_l29_n248()
+ inc
+end
+
+def fun_l29_n249()
+ inc
+end
+
+def fun_l29_n250()
+ inc
+end
+
+def fun_l29_n251()
+ inc
+end
+
+def fun_l29_n252()
+ inc
+end
+
+def fun_l29_n253()
+ inc
+end
+
+def fun_l29_n254()
+ inc
+end
+
+def fun_l29_n255()
+ inc
+end
+
+def fun_l29_n256()
+ inc
+end
+
+def fun_l29_n257()
+ inc
+end
+
+def fun_l29_n258()
+ inc
+end
+
+def fun_l29_n259()
+ inc
+end
+
+def fun_l29_n260()
+ inc
+end
+
+def fun_l29_n261()
+ inc
+end
+
+def fun_l29_n262()
+ inc
+end
+
+def fun_l29_n263()
+ inc
+end
+
+def fun_l29_n264()
+ inc
+end
+
+def fun_l29_n265()
+ inc
+end
+
+def fun_l29_n266()
+ inc
+end
+
+def fun_l29_n267()
+ inc
+end
+
+def fun_l29_n268()
+ inc
+end
+
+def fun_l29_n269()
+ inc
+end
+
+def fun_l29_n270()
+ inc
+end
+
+def fun_l29_n271()
+ inc
+end
+
+def fun_l29_n272()
+ inc
+end
+
+def fun_l29_n273()
+ inc
+end
+
+def fun_l29_n274()
+ inc
+end
+
+def fun_l29_n275()
+ inc
+end
+
+def fun_l29_n276()
+ inc
+end
+
+def fun_l29_n277()
+ inc
+end
+
+def fun_l29_n278()
+ inc
+end
+
+def fun_l29_n279()
+ inc
+end
+
+def fun_l29_n280()
+ inc
+end
+
+def fun_l29_n281()
+ inc
+end
+
+def fun_l29_n282()
+ inc
+end
+
+def fun_l29_n283()
+ inc
+end
+
+def fun_l29_n284()
+ inc
+end
+
+def fun_l29_n285()
+ inc
+end
+
+def fun_l29_n286()
+ inc
+end
+
+def fun_l29_n287()
+ inc
+end
+
+def fun_l29_n288()
+ inc
+end
+
+def fun_l29_n289()
+ inc
+end
+
+def fun_l29_n290()
+ inc
+end
+
+def fun_l29_n291()
+ inc
+end
+
+def fun_l29_n292()
+ inc
+end
+
+def fun_l29_n293()
+ inc
+end
+
+def fun_l29_n294()
+ inc
+end
+
+def fun_l29_n295()
+ inc
+end
+
+def fun_l29_n296()
+ inc
+end
+
+def fun_l29_n297()
+ inc
+end
+
+def fun_l29_n298()
+ inc
+end
+
+def fun_l29_n299()
+ inc
+end
+
+def fun_l29_n300()
+ inc
+end
+
+def fun_l29_n301()
+ inc
+end
+
+def fun_l29_n302()
+ inc
+end
+
+def fun_l29_n303()
+ inc
+end
+
+def fun_l29_n304()
+ inc
+end
+
+def fun_l29_n305()
+ inc
+end
+
+def fun_l29_n306()
+ inc
+end
+
+def fun_l29_n307()
+ inc
+end
+
+def fun_l29_n308()
+ inc
+end
+
+def fun_l29_n309()
+ inc
+end
+
+def fun_l29_n310()
+ inc
+end
+
+def fun_l29_n311()
+ inc
+end
+
+def fun_l29_n312()
+ inc
+end
+
+def fun_l29_n313()
+ inc
+end
+
+def fun_l29_n314()
+ inc
+end
+
+def fun_l29_n315()
+ inc
+end
+
+def fun_l29_n316()
+ inc
+end
+
+def fun_l29_n317()
+ inc
+end
+
+def fun_l29_n318()
+ inc
+end
+
+def fun_l29_n319()
+ inc
+end
+
+def fun_l29_n320()
+ inc
+end
+
+def fun_l29_n321()
+ inc
+end
+
+def fun_l29_n322()
+ inc
+end
+
+def fun_l29_n323()
+ inc
+end
+
+def fun_l29_n324()
+ inc
+end
+
+def fun_l29_n325()
+ inc
+end
+
+def fun_l29_n326()
+ inc
+end
+
+def fun_l29_n327()
+ inc
+end
+
+def fun_l29_n328()
+ inc
+end
+
+def fun_l29_n329()
+ inc
+end
+
+def fun_l29_n330()
+ inc
+end
+
+def fun_l29_n331()
+ inc
+end
+
+def fun_l29_n332()
+ inc
+end
+
+def fun_l29_n333()
+ inc
+end
+
+def fun_l29_n334()
+ inc
+end
+
+def fun_l29_n335()
+ inc
+end
+
+def fun_l29_n336()
+ inc
+end
+
+def fun_l29_n337()
+ inc
+end
+
+def fun_l29_n338()
+ inc
+end
+
+def fun_l29_n339()
+ inc
+end
+
+def fun_l29_n340()
+ inc
+end
+
+def fun_l29_n341()
+ inc
+end
+
+def fun_l29_n342()
+ inc
+end
+
+def fun_l29_n343()
+ inc
+end
+
+def fun_l29_n344()
+ inc
+end
+
+def fun_l29_n345()
+ inc
+end
+
+def fun_l29_n346()
+ inc
+end
+
+def fun_l29_n347()
+ inc
+end
+
+def fun_l29_n348()
+ inc
+end
+
+def fun_l29_n349()
+ inc
+end
+
+def fun_l29_n350()
+ inc
+end
+
+def fun_l29_n351()
+ inc
+end
+
+def fun_l29_n352()
+ inc
+end
+
+def fun_l29_n353()
+ inc
+end
+
+def fun_l29_n354()
+ inc
+end
+
+def fun_l29_n355()
+ inc
+end
+
+def fun_l29_n356()
+ inc
+end
+
+def fun_l29_n357()
+ inc
+end
+
+def fun_l29_n358()
+ inc
+end
+
+def fun_l29_n359()
+ inc
+end
+
+def fun_l29_n360()
+ inc
+end
+
+def fun_l29_n361()
+ inc
+end
+
+def fun_l29_n362()
+ inc
+end
+
+def fun_l29_n363()
+ inc
+end
+
+def fun_l29_n364()
+ inc
+end
+
+def fun_l29_n365()
+ inc
+end
+
+def fun_l29_n366()
+ inc
+end
+
+def fun_l29_n367()
+ inc
+end
+
+def fun_l29_n368()
+ inc
+end
+
+def fun_l29_n369()
+ inc
+end
+
+def fun_l29_n370()
+ inc
+end
+
+def fun_l29_n371()
+ inc
+end
+
+def fun_l29_n372()
+ inc
+end
+
+def fun_l29_n373()
+ inc
+end
+
+def fun_l29_n374()
+ inc
+end
+
+def fun_l29_n375()
+ inc
+end
+
+def fun_l29_n376()
+ inc
+end
+
+def fun_l29_n377()
+ inc
+end
+
+def fun_l29_n378()
+ inc
+end
+
+def fun_l29_n379()
+ inc
+end
+
+def fun_l29_n380()
+ inc
+end
+
+def fun_l29_n381()
+ inc
+end
+
+def fun_l29_n382()
+ inc
+end
+
+def fun_l29_n383()
+ inc
+end
+
+def fun_l29_n384()
+ inc
+end
+
+def fun_l29_n385()
+ inc
+end
+
+def fun_l29_n386()
+ inc
+end
+
+def fun_l29_n387()
+ inc
+end
+
+def fun_l29_n388()
+ inc
+end
+
+def fun_l29_n389()
+ inc
+end
+
+def fun_l29_n390()
+ inc
+end
+
+def fun_l29_n391()
+ inc
+end
+
+def fun_l29_n392()
+ inc
+end
+
+def fun_l29_n393()
+ inc
+end
+
+def fun_l29_n394()
+ inc
+end
+
+def fun_l29_n395()
+ inc
+end
+
+def fun_l29_n396()
+ inc
+end
+
+def fun_l29_n397()
+ inc
+end
+
+def fun_l29_n398()
+ inc
+end
+
+def fun_l29_n399()
+ inc
+end
+
+def fun_l29_n400()
+ inc
+end
+
+def fun_l29_n401()
+ inc
+end
+
+def fun_l29_n402()
+ inc
+end
+
+def fun_l29_n403()
+ inc
+end
+
+def fun_l29_n404()
+ inc
+end
+
+def fun_l29_n405()
+ inc
+end
+
+def fun_l29_n406()
+ inc
+end
+
+def fun_l29_n407()
+ inc
+end
+
+def fun_l29_n408()
+ inc
+end
+
+def fun_l29_n409()
+ inc
+end
+
+def fun_l29_n410()
+ inc
+end
+
+def fun_l29_n411()
+ inc
+end
+
+def fun_l29_n412()
+ inc
+end
+
+def fun_l29_n413()
+ inc
+end
+
+def fun_l29_n414()
+ inc
+end
+
+def fun_l29_n415()
+ inc
+end
+
+def fun_l29_n416()
+ inc
+end
+
+def fun_l29_n417()
+ inc
+end
+
+def fun_l29_n418()
+ inc
+end
+
+def fun_l29_n419()
+ inc
+end
+
+def fun_l29_n420()
+ inc
+end
+
+def fun_l29_n421()
+ inc
+end
+
+def fun_l29_n422()
+ inc
+end
+
+def fun_l29_n423()
+ inc
+end
+
+def fun_l29_n424()
+ inc
+end
+
+def fun_l29_n425()
+ inc
+end
+
+def fun_l29_n426()
+ inc
+end
+
+def fun_l29_n427()
+ inc
+end
+
+def fun_l29_n428()
+ inc
+end
+
+def fun_l29_n429()
+ inc
+end
+
+def fun_l29_n430()
+ inc
+end
+
+def fun_l29_n431()
+ inc
+end
+
+def fun_l29_n432()
+ inc
+end
+
+def fun_l29_n433()
+ inc
+end
+
+def fun_l29_n434()
+ inc
+end
+
+def fun_l29_n435()
+ inc
+end
+
+def fun_l29_n436()
+ inc
+end
+
+def fun_l29_n437()
+ inc
+end
+
+def fun_l29_n438()
+ inc
+end
+
+def fun_l29_n439()
+ inc
+end
+
+def fun_l29_n440()
+ inc
+end
+
+def fun_l29_n441()
+ inc
+end
+
+def fun_l29_n442()
+ inc
+end
+
+def fun_l29_n443()
+ inc
+end
+
+def fun_l29_n444()
+ inc
+end
+
+def fun_l29_n445()
+ inc
+end
+
+def fun_l29_n446()
+ inc
+end
+
+def fun_l29_n447()
+ inc
+end
+
+def fun_l29_n448()
+ inc
+end
+
+def fun_l29_n449()
+ inc
+end
+
+def fun_l29_n450()
+ inc
+end
+
+def fun_l29_n451()
+ inc
+end
+
+def fun_l29_n452()
+ inc
+end
+
+def fun_l29_n453()
+ inc
+end
+
+def fun_l29_n454()
+ inc
+end
+
+def fun_l29_n455()
+ inc
+end
+
+def fun_l29_n456()
+ inc
+end
+
+def fun_l29_n457()
+ inc
+end
+
+def fun_l29_n458()
+ inc
+end
+
+def fun_l29_n459()
+ inc
+end
+
+def fun_l29_n460()
+ inc
+end
+
+def fun_l29_n461()
+ inc
+end
+
+def fun_l29_n462()
+ inc
+end
+
+def fun_l29_n463()
+ inc
+end
+
+def fun_l29_n464()
+ inc
+end
+
+def fun_l29_n465()
+ inc
+end
+
+def fun_l29_n466()
+ inc
+end
+
+def fun_l29_n467()
+ inc
+end
+
+def fun_l29_n468()
+ inc
+end
+
+def fun_l29_n469()
+ inc
+end
+
+def fun_l29_n470()
+ inc
+end
+
+def fun_l29_n471()
+ inc
+end
+
+def fun_l29_n472()
+ inc
+end
+
+def fun_l29_n473()
+ inc
+end
+
+def fun_l29_n474()
+ inc
+end
+
+def fun_l29_n475()
+ inc
+end
+
+def fun_l29_n476()
+ inc
+end
+
+def fun_l29_n477()
+ inc
+end
+
+def fun_l29_n478()
+ inc
+end
+
+def fun_l29_n479()
+ inc
+end
+
+def fun_l29_n480()
+ inc
+end
+
+def fun_l29_n481()
+ inc
+end
+
+def fun_l29_n482()
+ inc
+end
+
+def fun_l29_n483()
+ inc
+end
+
+def fun_l29_n484()
+ inc
+end
+
+def fun_l29_n485()
+ inc
+end
+
+def fun_l29_n486()
+ inc
+end
+
+def fun_l29_n487()
+ inc
+end
+
+def fun_l29_n488()
+ inc
+end
+
+def fun_l29_n489()
+ inc
+end
+
+def fun_l29_n490()
+ inc
+end
+
+def fun_l29_n491()
+ inc
+end
+
+def fun_l29_n492()
+ inc
+end
+
+def fun_l29_n493()
+ inc
+end
+
+def fun_l29_n494()
+ inc
+end
+
+def fun_l29_n495()
+ inc
+end
+
+def fun_l29_n496()
+ inc
+end
+
+def fun_l29_n497()
+ inc
+end
+
+def fun_l29_n498()
+ inc
+end
+
+def fun_l29_n499()
+ inc
+end
+
+def fun_l29_n500()
+ inc
+end
+
+def fun_l29_n501()
+ inc
+end
+
+def fun_l29_n502()
+ inc
+end
+
+def fun_l29_n503()
+ inc
+end
+
+def fun_l29_n504()
+ inc
+end
+
+def fun_l29_n505()
+ inc
+end
+
+def fun_l29_n506()
+ inc
+end
+
+def fun_l29_n507()
+ inc
+end
+
+def fun_l29_n508()
+ inc
+end
+
+def fun_l29_n509()
+ inc
+end
+
+def fun_l29_n510()
+ inc
+end
+
+def fun_l29_n511()
+ inc
+end
+
+def fun_l29_n512()
+ inc
+end
+
+def fun_l29_n513()
+ inc
+end
+
+def fun_l29_n514()
+ inc
+end
+
+def fun_l29_n515()
+ inc
+end
+
+def fun_l29_n516()
+ inc
+end
+
+def fun_l29_n517()
+ inc
+end
+
+def fun_l29_n518()
+ inc
+end
+
+def fun_l29_n519()
+ inc
+end
+
+def fun_l29_n520()
+ inc
+end
+
+def fun_l29_n521()
+ inc
+end
+
+def fun_l29_n522()
+ inc
+end
+
+def fun_l29_n523()
+ inc
+end
+
+def fun_l29_n524()
+ inc
+end
+
+def fun_l29_n525()
+ inc
+end
+
+def fun_l29_n526()
+ inc
+end
+
+def fun_l29_n527()
+ inc
+end
+
+def fun_l29_n528()
+ inc
+end
+
+def fun_l29_n529()
+ inc
+end
+
+def fun_l29_n530()
+ inc
+end
+
+def fun_l29_n531()
+ inc
+end
+
+def fun_l29_n532()
+ inc
+end
+
+def fun_l29_n533()
+ inc
+end
+
+def fun_l29_n534()
+ inc
+end
+
+def fun_l29_n535()
+ inc
+end
+
+def fun_l29_n536()
+ inc
+end
+
+def fun_l29_n537()
+ inc
+end
+
+def fun_l29_n538()
+ inc
+end
+
+def fun_l29_n539()
+ inc
+end
+
+def fun_l29_n540()
+ inc
+end
+
+def fun_l29_n541()
+ inc
+end
+
+def fun_l29_n542()
+ inc
+end
+
+def fun_l29_n543()
+ inc
+end
+
+def fun_l29_n544()
+ inc
+end
+
+def fun_l29_n545()
+ inc
+end
+
+def fun_l29_n546()
+ inc
+end
+
+def fun_l29_n547()
+ inc
+end
+
+def fun_l29_n548()
+ inc
+end
+
+def fun_l29_n549()
+ inc
+end
+
+def fun_l29_n550()
+ inc
+end
+
+def fun_l29_n551()
+ inc
+end
+
+def fun_l29_n552()
+ inc
+end
+
+def fun_l29_n553()
+ inc
+end
+
+def fun_l29_n554()
+ inc
+end
+
+def fun_l29_n555()
+ inc
+end
+
+def fun_l29_n556()
+ inc
+end
+
+def fun_l29_n557()
+ inc
+end
+
+def fun_l29_n558()
+ inc
+end
+
+def fun_l29_n559()
+ inc
+end
+
+def fun_l29_n560()
+ inc
+end
+
+def fun_l29_n561()
+ inc
+end
+
+def fun_l29_n562()
+ inc
+end
+
+def fun_l29_n563()
+ inc
+end
+
+def fun_l29_n564()
+ inc
+end
+
+def fun_l29_n565()
+ inc
+end
+
+def fun_l29_n566()
+ inc
+end
+
+def fun_l29_n567()
+ inc
+end
+
+def fun_l29_n568()
+ inc
+end
+
+def fun_l29_n569()
+ inc
+end
+
+def fun_l29_n570()
+ inc
+end
+
+def fun_l29_n571()
+ inc
+end
+
+def fun_l29_n572()
+ inc
+end
+
+def fun_l29_n573()
+ inc
+end
+
+def fun_l29_n574()
+ inc
+end
+
+def fun_l29_n575()
+ inc
+end
+
+def fun_l29_n576()
+ inc
+end
+
+def fun_l29_n577()
+ inc
+end
+
+def fun_l29_n578()
+ inc
+end
+
+def fun_l29_n579()
+ inc
+end
+
+def fun_l29_n580()
+ inc
+end
+
+def fun_l29_n581()
+ inc
+end
+
+def fun_l29_n582()
+ inc
+end
+
+def fun_l29_n583()
+ inc
+end
+
+def fun_l29_n584()
+ inc
+end
+
+def fun_l29_n585()
+ inc
+end
+
+def fun_l29_n586()
+ inc
+end
+
+def fun_l29_n587()
+ inc
+end
+
+def fun_l29_n588()
+ inc
+end
+
+def fun_l29_n589()
+ inc
+end
+
+def fun_l29_n590()
+ inc
+end
+
+def fun_l29_n591()
+ inc
+end
+
+def fun_l29_n592()
+ inc
+end
+
+def fun_l29_n593()
+ inc
+end
+
+def fun_l29_n594()
+ inc
+end
+
+def fun_l29_n595()
+ inc
+end
+
+def fun_l29_n596()
+ inc
+end
+
+def fun_l29_n597()
+ inc
+end
+
+def fun_l29_n598()
+ inc
+end
+
+def fun_l29_n599()
+ inc
+end
+
+def fun_l29_n600()
+ inc
+end
+
+def fun_l29_n601()
+ inc
+end
+
+def fun_l29_n602()
+ inc
+end
+
+def fun_l29_n603()
+ inc
+end
+
+def fun_l29_n604()
+ inc
+end
+
+def fun_l29_n605()
+ inc
+end
+
+def fun_l29_n606()
+ inc
+end
+
+def fun_l29_n607()
+ inc
+end
+
+def fun_l29_n608()
+ inc
+end
+
+def fun_l29_n609()
+ inc
+end
+
+def fun_l29_n610()
+ inc
+end
+
+def fun_l29_n611()
+ inc
+end
+
+def fun_l29_n612()
+ inc
+end
+
+def fun_l29_n613()
+ inc
+end
+
+def fun_l29_n614()
+ inc
+end
+
+def fun_l29_n615()
+ inc
+end
+
+def fun_l29_n616()
+ inc
+end
+
+def fun_l29_n617()
+ inc
+end
+
+def fun_l29_n618()
+ inc
+end
+
+def fun_l29_n619()
+ inc
+end
+
+def fun_l29_n620()
+ inc
+end
+
+def fun_l29_n621()
+ inc
+end
+
+def fun_l29_n622()
+ inc
+end
+
+def fun_l29_n623()
+ inc
+end
+
+def fun_l29_n624()
+ inc
+end
+
+def fun_l29_n625()
+ inc
+end
+
+def fun_l29_n626()
+ inc
+end
+
+def fun_l29_n627()
+ inc
+end
+
+def fun_l29_n628()
+ inc
+end
+
+def fun_l29_n629()
+ inc
+end
+
+def fun_l29_n630()
+ inc
+end
+
+def fun_l29_n631()
+ inc
+end
+
+def fun_l29_n632()
+ inc
+end
+
+def fun_l29_n633()
+ inc
+end
+
+def fun_l29_n634()
+ inc
+end
+
+def fun_l29_n635()
+ inc
+end
+
+def fun_l29_n636()
+ inc
+end
+
+def fun_l29_n637()
+ inc
+end
+
+def fun_l29_n638()
+ inc
+end
+
+def fun_l29_n639()
+ inc
+end
+
+def fun_l29_n640()
+ inc
+end
+
+def fun_l29_n641()
+ inc
+end
+
+def fun_l29_n642()
+ inc
+end
+
+def fun_l29_n643()
+ inc
+end
+
+def fun_l29_n644()
+ inc
+end
+
+def fun_l29_n645()
+ inc
+end
+
+def fun_l29_n646()
+ inc
+end
+
+def fun_l29_n647()
+ inc
+end
+
+def fun_l29_n648()
+ inc
+end
+
+def fun_l29_n649()
+ inc
+end
+
+def fun_l29_n650()
+ inc
+end
+
+def fun_l29_n651()
+ inc
+end
+
+def fun_l29_n652()
+ inc
+end
+
+def fun_l29_n653()
+ inc
+end
+
+def fun_l29_n654()
+ inc
+end
+
+def fun_l29_n655()
+ inc
+end
+
+def fun_l29_n656()
+ inc
+end
+
+def fun_l29_n657()
+ inc
+end
+
+def fun_l29_n658()
+ inc
+end
+
+def fun_l29_n659()
+ inc
+end
+
+def fun_l29_n660()
+ inc
+end
+
+def fun_l29_n661()
+ inc
+end
+
+def fun_l29_n662()
+ inc
+end
+
+def fun_l29_n663()
+ inc
+end
+
+def fun_l29_n664()
+ inc
+end
+
+def fun_l29_n665()
+ inc
+end
+
+def fun_l29_n666()
+ inc
+end
+
+def fun_l29_n667()
+ inc
+end
+
+def fun_l29_n668()
+ inc
+end
+
+def fun_l29_n669()
+ inc
+end
+
+def fun_l29_n670()
+ inc
+end
+
+def fun_l29_n671()
+ inc
+end
+
+def fun_l29_n672()
+ inc
+end
+
+def fun_l29_n673()
+ inc
+end
+
+def fun_l29_n674()
+ inc
+end
+
+def fun_l29_n675()
+ inc
+end
+
+def fun_l29_n676()
+ inc
+end
+
+def fun_l29_n677()
+ inc
+end
+
+def fun_l29_n678()
+ inc
+end
+
+def fun_l29_n679()
+ inc
+end
+
+def fun_l29_n680()
+ inc
+end
+
+def fun_l29_n681()
+ inc
+end
+
+def fun_l29_n682()
+ inc
+end
+
+def fun_l29_n683()
+ inc
+end
+
+def fun_l29_n684()
+ inc
+end
+
+def fun_l29_n685()
+ inc
+end
+
+def fun_l29_n686()
+ inc
+end
+
+def fun_l29_n687()
+ inc
+end
+
+def fun_l29_n688()
+ inc
+end
+
+def fun_l29_n689()
+ inc
+end
+
+def fun_l29_n690()
+ inc
+end
+
+def fun_l29_n691()
+ inc
+end
+
+def fun_l29_n692()
+ inc
+end
+
+def fun_l29_n693()
+ inc
+end
+
+def fun_l29_n694()
+ inc
+end
+
+def fun_l29_n695()
+ inc
+end
+
+def fun_l29_n696()
+ inc
+end
+
+def fun_l29_n697()
+ inc
+end
+
+def fun_l29_n698()
+ inc
+end
+
+def fun_l29_n699()
+ inc
+end
+
+def fun_l29_n700()
+ inc
+end
+
+def fun_l29_n701()
+ inc
+end
+
+def fun_l29_n702()
+ inc
+end
+
+def fun_l29_n703()
+ inc
+end
+
+def fun_l29_n704()
+ inc
+end
+
+def fun_l29_n705()
+ inc
+end
+
+def fun_l29_n706()
+ inc
+end
+
+def fun_l29_n707()
+ inc
+end
+
+def fun_l29_n708()
+ inc
+end
+
+def fun_l29_n709()
+ inc
+end
+
+def fun_l29_n710()
+ inc
+end
+
+def fun_l29_n711()
+ inc
+end
+
+def fun_l29_n712()
+ inc
+end
+
+def fun_l29_n713()
+ inc
+end
+
+def fun_l29_n714()
+ inc
+end
+
+def fun_l29_n715()
+ inc
+end
+
+def fun_l29_n716()
+ inc
+end
+
+def fun_l29_n717()
+ inc
+end
+
+def fun_l29_n718()
+ inc
+end
+
+def fun_l29_n719()
+ inc
+end
+
+def fun_l29_n720()
+ inc
+end
+
+def fun_l29_n721()
+ inc
+end
+
+def fun_l29_n722()
+ inc
+end
+
+def fun_l29_n723()
+ inc
+end
+
+def fun_l29_n724()
+ inc
+end
+
+def fun_l29_n725()
+ inc
+end
+
+def fun_l29_n726()
+ inc
+end
+
+def fun_l29_n727()
+ inc
+end
+
+def fun_l29_n728()
+ inc
+end
+
+def fun_l29_n729()
+ inc
+end
+
+def fun_l29_n730()
+ inc
+end
+
+def fun_l29_n731()
+ inc
+end
+
+def fun_l29_n732()
+ inc
+end
+
+def fun_l29_n733()
+ inc
+end
+
+def fun_l29_n734()
+ inc
+end
+
+def fun_l29_n735()
+ inc
+end
+
+def fun_l29_n736()
+ inc
+end
+
+def fun_l29_n737()
+ inc
+end
+
+def fun_l29_n738()
+ inc
+end
+
+def fun_l29_n739()
+ inc
+end
+
+def fun_l29_n740()
+ inc
+end
+
+def fun_l29_n741()
+ inc
+end
+
+def fun_l29_n742()
+ inc
+end
+
+def fun_l29_n743()
+ inc
+end
+
+def fun_l29_n744()
+ inc
+end
+
+def fun_l29_n745()
+ inc
+end
+
+def fun_l29_n746()
+ inc
+end
+
+def fun_l29_n747()
+ inc
+end
+
+def fun_l29_n748()
+ inc
+end
+
+def fun_l29_n749()
+ inc
+end
+
+def fun_l29_n750()
+ inc
+end
+
+def fun_l29_n751()
+ inc
+end
+
+def fun_l29_n752()
+ inc
+end
+
+def fun_l29_n753()
+ inc
+end
+
+def fun_l29_n754()
+ inc
+end
+
+def fun_l29_n755()
+ inc
+end
+
+def fun_l29_n756()
+ inc
+end
+
+def fun_l29_n757()
+ inc
+end
+
+def fun_l29_n758()
+ inc
+end
+
+def fun_l29_n759()
+ inc
+end
+
+def fun_l29_n760()
+ inc
+end
+
+def fun_l29_n761()
+ inc
+end
+
+def fun_l29_n762()
+ inc
+end
+
+def fun_l29_n763()
+ inc
+end
+
+def fun_l29_n764()
+ inc
+end
+
+def fun_l29_n765()
+ inc
+end
+
+def fun_l29_n766()
+ inc
+end
+
+def fun_l29_n767()
+ inc
+end
+
+def fun_l29_n768()
+ inc
+end
+
+def fun_l29_n769()
+ inc
+end
+
+def fun_l29_n770()
+ inc
+end
+
+def fun_l29_n771()
+ inc
+end
+
+def fun_l29_n772()
+ inc
+end
+
+def fun_l29_n773()
+ inc
+end
+
+def fun_l29_n774()
+ inc
+end
+
+def fun_l29_n775()
+ inc
+end
+
+def fun_l29_n776()
+ inc
+end
+
+def fun_l29_n777()
+ inc
+end
+
+def fun_l29_n778()
+ inc
+end
+
+def fun_l29_n779()
+ inc
+end
+
+def fun_l29_n780()
+ inc
+end
+
+def fun_l29_n781()
+ inc
+end
+
+def fun_l29_n782()
+ inc
+end
+
+def fun_l29_n783()
+ inc
+end
+
+def fun_l29_n784()
+ inc
+end
+
+def fun_l29_n785()
+ inc
+end
+
+def fun_l29_n786()
+ inc
+end
+
+def fun_l29_n787()
+ inc
+end
+
+def fun_l29_n788()
+ inc
+end
+
+def fun_l29_n789()
+ inc
+end
+
+def fun_l29_n790()
+ inc
+end
+
+def fun_l29_n791()
+ inc
+end
+
+def fun_l29_n792()
+ inc
+end
+
+def fun_l29_n793()
+ inc
+end
+
+def fun_l29_n794()
+ inc
+end
+
+def fun_l29_n795()
+ inc
+end
+
+def fun_l29_n796()
+ inc
+end
+
+def fun_l29_n797()
+ inc
+end
+
+def fun_l29_n798()
+ inc
+end
+
+def fun_l29_n799()
+ inc
+end
+
+def fun_l29_n800()
+ inc
+end
+
+def fun_l29_n801()
+ inc
+end
+
+def fun_l29_n802()
+ inc
+end
+
+def fun_l29_n803()
+ inc
+end
+
+def fun_l29_n804()
+ inc
+end
+
+def fun_l29_n805()
+ inc
+end
+
+def fun_l29_n806()
+ inc
+end
+
+def fun_l29_n807()
+ inc
+end
+
+def fun_l29_n808()
+ inc
+end
+
+def fun_l29_n809()
+ inc
+end
+
+def fun_l29_n810()
+ inc
+end
+
+def fun_l29_n811()
+ inc
+end
+
+def fun_l29_n812()
+ inc
+end
+
+def fun_l29_n813()
+ inc
+end
+
+def fun_l29_n814()
+ inc
+end
+
+def fun_l29_n815()
+ inc
+end
+
+def fun_l29_n816()
+ inc
+end
+
+def fun_l29_n817()
+ inc
+end
+
+def fun_l29_n818()
+ inc
+end
+
+def fun_l29_n819()
+ inc
+end
+
+def fun_l29_n820()
+ inc
+end
+
+def fun_l29_n821()
+ inc
+end
+
+def fun_l29_n822()
+ inc
+end
+
+def fun_l29_n823()
+ inc
+end
+
+def fun_l29_n824()
+ inc
+end
+
+def fun_l29_n825()
+ inc
+end
+
+def fun_l29_n826()
+ inc
+end
+
+def fun_l29_n827()
+ inc
+end
+
+def fun_l29_n828()
+ inc
+end
+
+def fun_l29_n829()
+ inc
+end
+
+def fun_l29_n830()
+ inc
+end
+
+def fun_l29_n831()
+ inc
+end
+
+def fun_l29_n832()
+ inc
+end
+
+def fun_l29_n833()
+ inc
+end
+
+def fun_l29_n834()
+ inc
+end
+
+def fun_l29_n835()
+ inc
+end
+
+def fun_l29_n836()
+ inc
+end
+
+def fun_l29_n837()
+ inc
+end
+
+def fun_l29_n838()
+ inc
+end
+
+def fun_l29_n839()
+ inc
+end
+
+def fun_l29_n840()
+ inc
+end
+
+def fun_l29_n841()
+ inc
+end
+
+def fun_l29_n842()
+ inc
+end
+
+def fun_l29_n843()
+ inc
+end
+
+def fun_l29_n844()
+ inc
+end
+
+def fun_l29_n845()
+ inc
+end
+
+def fun_l29_n846()
+ inc
+end
+
+def fun_l29_n847()
+ inc
+end
+
+def fun_l29_n848()
+ inc
+end
+
+def fun_l29_n849()
+ inc
+end
+
+def fun_l29_n850()
+ inc
+end
+
+def fun_l29_n851()
+ inc
+end
+
+def fun_l29_n852()
+ inc
+end
+
+def fun_l29_n853()
+ inc
+end
+
+def fun_l29_n854()
+ inc
+end
+
+def fun_l29_n855()
+ inc
+end
+
+def fun_l29_n856()
+ inc
+end
+
+def fun_l29_n857()
+ inc
+end
+
+def fun_l29_n858()
+ inc
+end
+
+def fun_l29_n859()
+ inc
+end
+
+def fun_l29_n860()
+ inc
+end
+
+def fun_l29_n861()
+ inc
+end
+
+def fun_l29_n862()
+ inc
+end
+
+def fun_l29_n863()
+ inc
+end
+
+def fun_l29_n864()
+ inc
+end
+
+def fun_l29_n865()
+ inc
+end
+
+def fun_l29_n866()
+ inc
+end
+
+def fun_l29_n867()
+ inc
+end
+
+def fun_l29_n868()
+ inc
+end
+
+def fun_l29_n869()
+ inc
+end
+
+def fun_l29_n870()
+ inc
+end
+
+def fun_l29_n871()
+ inc
+end
+
+def fun_l29_n872()
+ inc
+end
+
+def fun_l29_n873()
+ inc
+end
+
+def fun_l29_n874()
+ inc
+end
+
+def fun_l29_n875()
+ inc
+end
+
+def fun_l29_n876()
+ inc
+end
+
+def fun_l29_n877()
+ inc
+end
+
+def fun_l29_n878()
+ inc
+end
+
+def fun_l29_n879()
+ inc
+end
+
+def fun_l29_n880()
+ inc
+end
+
+def fun_l29_n881()
+ inc
+end
+
+def fun_l29_n882()
+ inc
+end
+
+def fun_l29_n883()
+ inc
+end
+
+def fun_l29_n884()
+ inc
+end
+
+def fun_l29_n885()
+ inc
+end
+
+def fun_l29_n886()
+ inc
+end
+
+def fun_l29_n887()
+ inc
+end
+
+def fun_l29_n888()
+ inc
+end
+
+def fun_l29_n889()
+ inc
+end
+
+def fun_l29_n890()
+ inc
+end
+
+def fun_l29_n891()
+ inc
+end
+
+def fun_l29_n892()
+ inc
+end
+
+def fun_l29_n893()
+ inc
+end
+
+def fun_l29_n894()
+ inc
+end
+
+def fun_l29_n895()
+ inc
+end
+
+def fun_l29_n896()
+ inc
+end
+
+def fun_l29_n897()
+ inc
+end
+
+def fun_l29_n898()
+ inc
+end
+
+def fun_l29_n899()
+ inc
+end
+
+def fun_l29_n900()
+ inc
+end
+
+def fun_l29_n901()
+ inc
+end
+
+def fun_l29_n902()
+ inc
+end
+
+def fun_l29_n903()
+ inc
+end
+
+def fun_l29_n904()
+ inc
+end
+
+def fun_l29_n905()
+ inc
+end
+
+def fun_l29_n906()
+ inc
+end
+
+def fun_l29_n907()
+ inc
+end
+
+def fun_l29_n908()
+ inc
+end
+
+def fun_l29_n909()
+ inc
+end
+
+def fun_l29_n910()
+ inc
+end
+
+def fun_l29_n911()
+ inc
+end
+
+def fun_l29_n912()
+ inc
+end
+
+def fun_l29_n913()
+ inc
+end
+
+def fun_l29_n914()
+ inc
+end
+
+def fun_l29_n915()
+ inc
+end
+
+def fun_l29_n916()
+ inc
+end
+
+def fun_l29_n917()
+ inc
+end
+
+def fun_l29_n918()
+ inc
+end
+
+def fun_l29_n919()
+ inc
+end
+
+def fun_l29_n920()
+ inc
+end
+
+def fun_l29_n921()
+ inc
+end
+
+def fun_l29_n922()
+ inc
+end
+
+def fun_l29_n923()
+ inc
+end
+
+def fun_l29_n924()
+ inc
+end
+
+def fun_l29_n925()
+ inc
+end
+
+def fun_l29_n926()
+ inc
+end
+
+def fun_l29_n927()
+ inc
+end
+
+def fun_l29_n928()
+ inc
+end
+
+def fun_l29_n929()
+ inc
+end
+
+def fun_l29_n930()
+ inc
+end
+
+def fun_l29_n931()
+ inc
+end
+
+def fun_l29_n932()
+ inc
+end
+
+def fun_l29_n933()
+ inc
+end
+
+def fun_l29_n934()
+ inc
+end
+
+def fun_l29_n935()
+ inc
+end
+
+def fun_l29_n936()
+ inc
+end
+
+def fun_l29_n937()
+ inc
+end
+
+def fun_l29_n938()
+ inc
+end
+
+def fun_l29_n939()
+ inc
+end
+
+def fun_l29_n940()
+ inc
+end
+
+def fun_l29_n941()
+ inc
+end
+
+def fun_l29_n942()
+ inc
+end
+
+def fun_l29_n943()
+ inc
+end
+
+def fun_l29_n944()
+ inc
+end
+
+def fun_l29_n945()
+ inc
+end
+
+def fun_l29_n946()
+ inc
+end
+
+def fun_l29_n947()
+ inc
+end
+
+def fun_l29_n948()
+ inc
+end
+
+def fun_l29_n949()
+ inc
+end
+
+def fun_l29_n950()
+ inc
+end
+
+def fun_l29_n951()
+ inc
+end
+
+def fun_l29_n952()
+ inc
+end
+
+def fun_l29_n953()
+ inc
+end
+
+def fun_l29_n954()
+ inc
+end
+
+def fun_l29_n955()
+ inc
+end
+
+def fun_l29_n956()
+ inc
+end
+
+def fun_l29_n957()
+ inc
+end
+
+def fun_l29_n958()
+ inc
+end
+
+def fun_l29_n959()
+ inc
+end
+
+def fun_l29_n960()
+ inc
+end
+
+def fun_l29_n961()
+ inc
+end
+
+def fun_l29_n962()
+ inc
+end
+
+def fun_l29_n963()
+ inc
+end
+
+def fun_l29_n964()
+ inc
+end
+
+def fun_l29_n965()
+ inc
+end
+
+def fun_l29_n966()
+ inc
+end
+
+def fun_l29_n967()
+ inc
+end
+
+def fun_l29_n968()
+ inc
+end
+
+def fun_l29_n969()
+ inc
+end
+
+def fun_l29_n970()
+ inc
+end
+
+def fun_l29_n971()
+ inc
+end
+
+def fun_l29_n972()
+ inc
+end
+
+def fun_l29_n973()
+ inc
+end
+
+def fun_l29_n974()
+ inc
+end
+
+def fun_l29_n975()
+ inc
+end
+
+def fun_l29_n976()
+ inc
+end
+
+def fun_l29_n977()
+ inc
+end
+
+def fun_l29_n978()
+ inc
+end
+
+def fun_l29_n979()
+ inc
+end
+
+def fun_l29_n980()
+ inc
+end
+
+def fun_l29_n981()
+ inc
+end
+
+def fun_l29_n982()
+ inc
+end
+
+def fun_l29_n983()
+ inc
+end
+
+def fun_l29_n984()
+ inc
+end
+
+def fun_l29_n985()
+ inc
+end
+
+def fun_l29_n986()
+ inc
+end
+
+def fun_l29_n987()
+ inc
+end
+
+def fun_l29_n988()
+ inc
+end
+
+def fun_l29_n989()
+ inc
+end
+
+def fun_l29_n990()
+ inc
+end
+
+def fun_l29_n991()
+ inc
+end
+
+def fun_l29_n992()
+ inc
+end
+
+def fun_l29_n993()
+ inc
+end
+
+def fun_l29_n994()
+ inc
+end
+
+def fun_l29_n995()
+ inc
+end
+
+def fun_l29_n996()
+ inc
+end
+
+def fun_l29_n997()
+ inc
+end
+
+def fun_l29_n998()
+ inc
+end
+
+def fun_l29_n999()
+ inc
+end
+
+@a = 0
+@b = 0
+@c = 0
+@d = 0
+@count = 0
+def inc()
+ @count += 1
+end
+1000.times do
+ fun_l0_n0
+ fun_l0_n1
+ fun_l0_n2
+ fun_l0_n3
+ fun_l0_n4
+ fun_l0_n5
+ fun_l0_n6
+ fun_l0_n7
+ fun_l0_n8
+ fun_l0_n9
+ fun_l0_n10
+ fun_l0_n11
+ fun_l0_n12
+ fun_l0_n13
+ fun_l0_n14
+ fun_l0_n15
+ fun_l0_n16
+ fun_l0_n17
+ fun_l0_n18
+ fun_l0_n19
+ fun_l0_n20
+ fun_l0_n21
+ fun_l0_n22
+ fun_l0_n23
+ fun_l0_n24
+ fun_l0_n25
+ fun_l0_n26
+ fun_l0_n27
+ fun_l0_n28
+ fun_l0_n29
+ fun_l0_n30
+ fun_l0_n31
+ fun_l0_n32
+ fun_l0_n33
+ fun_l0_n34
+ fun_l0_n35
+ fun_l0_n36
+ fun_l0_n37
+ fun_l0_n38
+ fun_l0_n39
+ fun_l0_n40
+ fun_l0_n41
+ fun_l0_n42
+ fun_l0_n43
+ fun_l0_n44
+ fun_l0_n45
+ fun_l0_n46
+ fun_l0_n47
+ fun_l0_n48
+ fun_l0_n49
+ fun_l0_n50
+ fun_l0_n51
+ fun_l0_n52
+ fun_l0_n53
+ fun_l0_n54
+ fun_l0_n55
+ fun_l0_n56
+ fun_l0_n57
+ fun_l0_n58
+ fun_l0_n59
+ fun_l0_n60
+ fun_l0_n61
+ fun_l0_n62
+ fun_l0_n63
+ fun_l0_n64
+ fun_l0_n65
+ fun_l0_n66
+ fun_l0_n67
+ fun_l0_n68
+ fun_l0_n69
+ fun_l0_n70
+ fun_l0_n71
+ fun_l0_n72
+ fun_l0_n73
+ fun_l0_n74
+ fun_l0_n75
+ fun_l0_n76
+ fun_l0_n77
+ fun_l0_n78
+ fun_l0_n79
+ fun_l0_n80
+ fun_l0_n81
+ fun_l0_n82
+ fun_l0_n83
+ fun_l0_n84
+ fun_l0_n85
+ fun_l0_n86
+ fun_l0_n87
+ fun_l0_n88
+ fun_l0_n89
+ fun_l0_n90
+ fun_l0_n91
+ fun_l0_n92
+ fun_l0_n93
+ fun_l0_n94
+ fun_l0_n95
+ fun_l0_n96
+ fun_l0_n97
+ fun_l0_n98
+ fun_l0_n99
+ fun_l0_n100
+ fun_l0_n101
+ fun_l0_n102
+ fun_l0_n103
+ fun_l0_n104
+ fun_l0_n105
+ fun_l0_n106
+ fun_l0_n107
+ fun_l0_n108
+ fun_l0_n109
+ fun_l0_n110
+ fun_l0_n111
+ fun_l0_n112
+ fun_l0_n113
+ fun_l0_n114
+ fun_l0_n115
+ fun_l0_n116
+ fun_l0_n117
+ fun_l0_n118
+ fun_l0_n119
+ fun_l0_n120
+ fun_l0_n121
+ fun_l0_n122
+ fun_l0_n123
+ fun_l0_n124
+ fun_l0_n125
+ fun_l0_n126
+ fun_l0_n127
+ fun_l0_n128
+ fun_l0_n129
+ fun_l0_n130
+ fun_l0_n131
+ fun_l0_n132
+ fun_l0_n133
+ fun_l0_n134
+ fun_l0_n135
+ fun_l0_n136
+ fun_l0_n137
+ fun_l0_n138
+ fun_l0_n139
+ fun_l0_n140
+ fun_l0_n141
+ fun_l0_n142
+ fun_l0_n143
+ fun_l0_n144
+ fun_l0_n145
+ fun_l0_n146
+ fun_l0_n147
+ fun_l0_n148
+ fun_l0_n149
+ fun_l0_n150
+ fun_l0_n151
+ fun_l0_n152
+ fun_l0_n153
+ fun_l0_n154
+ fun_l0_n155
+ fun_l0_n156
+ fun_l0_n157
+ fun_l0_n158
+ fun_l0_n159
+ fun_l0_n160
+ fun_l0_n161
+ fun_l0_n162
+ fun_l0_n163
+ fun_l0_n164
+ fun_l0_n165
+ fun_l0_n166
+ fun_l0_n167
+ fun_l0_n168
+ fun_l0_n169
+ fun_l0_n170
+ fun_l0_n171
+ fun_l0_n172
+ fun_l0_n173
+ fun_l0_n174
+ fun_l0_n175
+ fun_l0_n176
+ fun_l0_n177
+ fun_l0_n178
+ fun_l0_n179
+ fun_l0_n180
+ fun_l0_n181
+ fun_l0_n182
+ fun_l0_n183
+ fun_l0_n184
+ fun_l0_n185
+ fun_l0_n186
+ fun_l0_n187
+ fun_l0_n188
+ fun_l0_n189
+ fun_l0_n190
+ fun_l0_n191
+ fun_l0_n192
+ fun_l0_n193
+ fun_l0_n194
+ fun_l0_n195
+ fun_l0_n196
+ fun_l0_n197
+ fun_l0_n198
+ fun_l0_n199
+ fun_l0_n200
+ fun_l0_n201
+ fun_l0_n202
+ fun_l0_n203
+ fun_l0_n204
+ fun_l0_n205
+ fun_l0_n206
+ fun_l0_n207
+ fun_l0_n208
+ fun_l0_n209
+ fun_l0_n210
+ fun_l0_n211
+ fun_l0_n212
+ fun_l0_n213
+ fun_l0_n214
+ fun_l0_n215
+ fun_l0_n216
+ fun_l0_n217
+ fun_l0_n218
+ fun_l0_n219
+ fun_l0_n220
+ fun_l0_n221
+ fun_l0_n222
+ fun_l0_n223
+ fun_l0_n224
+ fun_l0_n225
+ fun_l0_n226
+ fun_l0_n227
+ fun_l0_n228
+ fun_l0_n229
+ fun_l0_n230
+ fun_l0_n231
+ fun_l0_n232
+ fun_l0_n233
+ fun_l0_n234
+ fun_l0_n235
+ fun_l0_n236
+ fun_l0_n237
+ fun_l0_n238
+ fun_l0_n239
+ fun_l0_n240
+ fun_l0_n241
+ fun_l0_n242
+ fun_l0_n243
+ fun_l0_n244
+ fun_l0_n245
+ fun_l0_n246
+ fun_l0_n247
+ fun_l0_n248
+ fun_l0_n249
+ fun_l0_n250
+ fun_l0_n251
+ fun_l0_n252
+ fun_l0_n253
+ fun_l0_n254
+ fun_l0_n255
+ fun_l0_n256
+ fun_l0_n257
+ fun_l0_n258
+ fun_l0_n259
+ fun_l0_n260
+ fun_l0_n261
+ fun_l0_n262
+ fun_l0_n263
+ fun_l0_n264
+ fun_l0_n265
+ fun_l0_n266
+ fun_l0_n267
+ fun_l0_n268
+ fun_l0_n269
+ fun_l0_n270
+ fun_l0_n271
+ fun_l0_n272
+ fun_l0_n273
+ fun_l0_n274
+ fun_l0_n275
+ fun_l0_n276
+ fun_l0_n277
+ fun_l0_n278
+ fun_l0_n279
+ fun_l0_n280
+ fun_l0_n281
+ fun_l0_n282
+ fun_l0_n283
+ fun_l0_n284
+ fun_l0_n285
+ fun_l0_n286
+ fun_l0_n287
+ fun_l0_n288
+ fun_l0_n289
+ fun_l0_n290
+ fun_l0_n291
+ fun_l0_n292
+ fun_l0_n293
+ fun_l0_n294
+ fun_l0_n295
+ fun_l0_n296
+ fun_l0_n297
+ fun_l0_n298
+ fun_l0_n299
+ fun_l0_n300
+ fun_l0_n301
+ fun_l0_n302
+ fun_l0_n303
+ fun_l0_n304
+ fun_l0_n305
+ fun_l0_n306
+ fun_l0_n307
+ fun_l0_n308
+ fun_l0_n309
+ fun_l0_n310
+ fun_l0_n311
+ fun_l0_n312
+ fun_l0_n313
+ fun_l0_n314
+ fun_l0_n315
+ fun_l0_n316
+ fun_l0_n317
+ fun_l0_n318
+ fun_l0_n319
+ fun_l0_n320
+ fun_l0_n321
+ fun_l0_n322
+ fun_l0_n323
+ fun_l0_n324
+ fun_l0_n325
+ fun_l0_n326
+ fun_l0_n327
+ fun_l0_n328
+ fun_l0_n329
+ fun_l0_n330
+ fun_l0_n331
+ fun_l0_n332
+ fun_l0_n333
+ fun_l0_n334
+ fun_l0_n335
+ fun_l0_n336
+ fun_l0_n337
+ fun_l0_n338
+ fun_l0_n339
+ fun_l0_n340
+ fun_l0_n341
+ fun_l0_n342
+ fun_l0_n343
+ fun_l0_n344
+ fun_l0_n345
+ fun_l0_n346
+ fun_l0_n347
+ fun_l0_n348
+ fun_l0_n349
+ fun_l0_n350
+ fun_l0_n351
+ fun_l0_n352
+ fun_l0_n353
+ fun_l0_n354
+ fun_l0_n355
+ fun_l0_n356
+ fun_l0_n357
+ fun_l0_n358
+ fun_l0_n359
+ fun_l0_n360
+ fun_l0_n361
+ fun_l0_n362
+ fun_l0_n363
+ fun_l0_n364
+ fun_l0_n365
+ fun_l0_n366
+ fun_l0_n367
+ fun_l0_n368
+ fun_l0_n369
+ fun_l0_n370
+ fun_l0_n371
+ fun_l0_n372
+ fun_l0_n373
+ fun_l0_n374
+ fun_l0_n375
+ fun_l0_n376
+ fun_l0_n377
+ fun_l0_n378
+ fun_l0_n379
+ fun_l0_n380
+ fun_l0_n381
+ fun_l0_n382
+ fun_l0_n383
+ fun_l0_n384
+ fun_l0_n385
+ fun_l0_n386
+ fun_l0_n387
+ fun_l0_n388
+ fun_l0_n389
+ fun_l0_n390
+ fun_l0_n391
+ fun_l0_n392
+ fun_l0_n393
+ fun_l0_n394
+ fun_l0_n395
+ fun_l0_n396
+ fun_l0_n397
+ fun_l0_n398
+ fun_l0_n399
+ fun_l0_n400
+ fun_l0_n401
+ fun_l0_n402
+ fun_l0_n403
+ fun_l0_n404
+ fun_l0_n405
+ fun_l0_n406
+ fun_l0_n407
+ fun_l0_n408
+ fun_l0_n409
+ fun_l0_n410
+ fun_l0_n411
+ fun_l0_n412
+ fun_l0_n413
+ fun_l0_n414
+ fun_l0_n415
+ fun_l0_n416
+ fun_l0_n417
+ fun_l0_n418
+ fun_l0_n419
+ fun_l0_n420
+ fun_l0_n421
+ fun_l0_n422
+ fun_l0_n423
+ fun_l0_n424
+ fun_l0_n425
+ fun_l0_n426
+ fun_l0_n427
+ fun_l0_n428
+ fun_l0_n429
+ fun_l0_n430
+ fun_l0_n431
+ fun_l0_n432
+ fun_l0_n433
+ fun_l0_n434
+ fun_l0_n435
+ fun_l0_n436
+ fun_l0_n437
+ fun_l0_n438
+ fun_l0_n439
+ fun_l0_n440
+ fun_l0_n441
+ fun_l0_n442
+ fun_l0_n443
+ fun_l0_n444
+ fun_l0_n445
+ fun_l0_n446
+ fun_l0_n447
+ fun_l0_n448
+ fun_l0_n449
+ fun_l0_n450
+ fun_l0_n451
+ fun_l0_n452
+ fun_l0_n453
+ fun_l0_n454
+ fun_l0_n455
+ fun_l0_n456
+ fun_l0_n457
+ fun_l0_n458
+ fun_l0_n459
+ fun_l0_n460
+ fun_l0_n461
+ fun_l0_n462
+ fun_l0_n463
+ fun_l0_n464
+ fun_l0_n465
+ fun_l0_n466
+ fun_l0_n467
+ fun_l0_n468
+ fun_l0_n469
+ fun_l0_n470
+ fun_l0_n471
+ fun_l0_n472
+ fun_l0_n473
+ fun_l0_n474
+ fun_l0_n475
+ fun_l0_n476
+ fun_l0_n477
+ fun_l0_n478
+ fun_l0_n479
+ fun_l0_n480
+ fun_l0_n481
+ fun_l0_n482
+ fun_l0_n483
+ fun_l0_n484
+ fun_l0_n485
+ fun_l0_n486
+ fun_l0_n487
+ fun_l0_n488
+ fun_l0_n489
+ fun_l0_n490
+ fun_l0_n491
+ fun_l0_n492
+ fun_l0_n493
+ fun_l0_n494
+ fun_l0_n495
+ fun_l0_n496
+ fun_l0_n497
+ fun_l0_n498
+ fun_l0_n499
+ fun_l0_n500
+ fun_l0_n501
+ fun_l0_n502
+ fun_l0_n503
+ fun_l0_n504
+ fun_l0_n505
+ fun_l0_n506
+ fun_l0_n507
+ fun_l0_n508
+ fun_l0_n509
+ fun_l0_n510
+ fun_l0_n511
+ fun_l0_n512
+ fun_l0_n513
+ fun_l0_n514
+ fun_l0_n515
+ fun_l0_n516
+ fun_l0_n517
+ fun_l0_n518
+ fun_l0_n519
+ fun_l0_n520
+ fun_l0_n521
+ fun_l0_n522
+ fun_l0_n523
+ fun_l0_n524
+ fun_l0_n525
+ fun_l0_n526
+ fun_l0_n527
+ fun_l0_n528
+ fun_l0_n529
+ fun_l0_n530
+ fun_l0_n531
+ fun_l0_n532
+ fun_l0_n533
+ fun_l0_n534
+ fun_l0_n535
+ fun_l0_n536
+ fun_l0_n537
+ fun_l0_n538
+ fun_l0_n539
+ fun_l0_n540
+ fun_l0_n541
+ fun_l0_n542
+ fun_l0_n543
+ fun_l0_n544
+ fun_l0_n545
+ fun_l0_n546
+ fun_l0_n547
+ fun_l0_n548
+ fun_l0_n549
+ fun_l0_n550
+ fun_l0_n551
+ fun_l0_n552
+ fun_l0_n553
+ fun_l0_n554
+ fun_l0_n555
+ fun_l0_n556
+ fun_l0_n557
+ fun_l0_n558
+ fun_l0_n559
+ fun_l0_n560
+ fun_l0_n561
+ fun_l0_n562
+ fun_l0_n563
+ fun_l0_n564
+ fun_l0_n565
+ fun_l0_n566
+ fun_l0_n567
+ fun_l0_n568
+ fun_l0_n569
+ fun_l0_n570
+ fun_l0_n571
+ fun_l0_n572
+ fun_l0_n573
+ fun_l0_n574
+ fun_l0_n575
+ fun_l0_n576
+ fun_l0_n577
+ fun_l0_n578
+ fun_l0_n579
+ fun_l0_n580
+ fun_l0_n581
+ fun_l0_n582
+ fun_l0_n583
+ fun_l0_n584
+ fun_l0_n585
+ fun_l0_n586
+ fun_l0_n587
+ fun_l0_n588
+ fun_l0_n589
+ fun_l0_n590
+ fun_l0_n591
+ fun_l0_n592
+ fun_l0_n593
+ fun_l0_n594
+ fun_l0_n595
+ fun_l0_n596
+ fun_l0_n597
+ fun_l0_n598
+ fun_l0_n599
+ fun_l0_n600
+ fun_l0_n601
+ fun_l0_n602
+ fun_l0_n603
+ fun_l0_n604
+ fun_l0_n605
+ fun_l0_n606
+ fun_l0_n607
+ fun_l0_n608
+ fun_l0_n609
+ fun_l0_n610
+ fun_l0_n611
+ fun_l0_n612
+ fun_l0_n613
+ fun_l0_n614
+ fun_l0_n615
+ fun_l0_n616
+ fun_l0_n617
+ fun_l0_n618
+ fun_l0_n619
+ fun_l0_n620
+ fun_l0_n621
+ fun_l0_n622
+ fun_l0_n623
+ fun_l0_n624
+ fun_l0_n625
+ fun_l0_n626
+ fun_l0_n627
+ fun_l0_n628
+ fun_l0_n629
+ fun_l0_n630
+ fun_l0_n631
+ fun_l0_n632
+ fun_l0_n633
+ fun_l0_n634
+ fun_l0_n635
+ fun_l0_n636
+ fun_l0_n637
+ fun_l0_n638
+ fun_l0_n639
+ fun_l0_n640
+ fun_l0_n641
+ fun_l0_n642
+ fun_l0_n643
+ fun_l0_n644
+ fun_l0_n645
+ fun_l0_n646
+ fun_l0_n647
+ fun_l0_n648
+ fun_l0_n649
+ fun_l0_n650
+ fun_l0_n651
+ fun_l0_n652
+ fun_l0_n653
+ fun_l0_n654
+ fun_l0_n655
+ fun_l0_n656
+ fun_l0_n657
+ fun_l0_n658
+ fun_l0_n659
+ fun_l0_n660
+ fun_l0_n661
+ fun_l0_n662
+ fun_l0_n663
+ fun_l0_n664
+ fun_l0_n665
+ fun_l0_n666
+ fun_l0_n667
+ fun_l0_n668
+ fun_l0_n669
+ fun_l0_n670
+ fun_l0_n671
+ fun_l0_n672
+ fun_l0_n673
+ fun_l0_n674
+ fun_l0_n675
+ fun_l0_n676
+ fun_l0_n677
+ fun_l0_n678
+ fun_l0_n679
+ fun_l0_n680
+ fun_l0_n681
+ fun_l0_n682
+ fun_l0_n683
+ fun_l0_n684
+ fun_l0_n685
+ fun_l0_n686
+ fun_l0_n687
+ fun_l0_n688
+ fun_l0_n689
+ fun_l0_n690
+ fun_l0_n691
+ fun_l0_n692
+ fun_l0_n693
+ fun_l0_n694
+ fun_l0_n695
+ fun_l0_n696
+ fun_l0_n697
+ fun_l0_n698
+ fun_l0_n699
+ fun_l0_n700
+ fun_l0_n701
+ fun_l0_n702
+ fun_l0_n703
+ fun_l0_n704
+ fun_l0_n705
+ fun_l0_n706
+ fun_l0_n707
+ fun_l0_n708
+ fun_l0_n709
+ fun_l0_n710
+ fun_l0_n711
+ fun_l0_n712
+ fun_l0_n713
+ fun_l0_n714
+ fun_l0_n715
+ fun_l0_n716
+ fun_l0_n717
+ fun_l0_n718
+ fun_l0_n719
+ fun_l0_n720
+ fun_l0_n721
+ fun_l0_n722
+ fun_l0_n723
+ fun_l0_n724
+ fun_l0_n725
+ fun_l0_n726
+ fun_l0_n727
+ fun_l0_n728
+ fun_l0_n729
+ fun_l0_n730
+ fun_l0_n731
+ fun_l0_n732
+ fun_l0_n733
+ fun_l0_n734
+ fun_l0_n735
+ fun_l0_n736
+ fun_l0_n737
+ fun_l0_n738
+ fun_l0_n739
+ fun_l0_n740
+ fun_l0_n741
+ fun_l0_n742
+ fun_l0_n743
+ fun_l0_n744
+ fun_l0_n745
+ fun_l0_n746
+ fun_l0_n747
+ fun_l0_n748
+ fun_l0_n749
+ fun_l0_n750
+ fun_l0_n751
+ fun_l0_n752
+ fun_l0_n753
+ fun_l0_n754
+ fun_l0_n755
+ fun_l0_n756
+ fun_l0_n757
+ fun_l0_n758
+ fun_l0_n759
+ fun_l0_n760
+ fun_l0_n761
+ fun_l0_n762
+ fun_l0_n763
+ fun_l0_n764
+ fun_l0_n765
+ fun_l0_n766
+ fun_l0_n767
+ fun_l0_n768
+ fun_l0_n769
+ fun_l0_n770
+ fun_l0_n771
+ fun_l0_n772
+ fun_l0_n773
+ fun_l0_n774
+ fun_l0_n775
+ fun_l0_n776
+ fun_l0_n777
+ fun_l0_n778
+ fun_l0_n779
+ fun_l0_n780
+ fun_l0_n781
+ fun_l0_n782
+ fun_l0_n783
+ fun_l0_n784
+ fun_l0_n785
+ fun_l0_n786
+ fun_l0_n787
+ fun_l0_n788
+ fun_l0_n789
+ fun_l0_n790
+ fun_l0_n791
+ fun_l0_n792
+ fun_l0_n793
+ fun_l0_n794
+ fun_l0_n795
+ fun_l0_n796
+ fun_l0_n797
+ fun_l0_n798
+ fun_l0_n799
+ fun_l0_n800
+ fun_l0_n801
+ fun_l0_n802
+ fun_l0_n803
+ fun_l0_n804
+ fun_l0_n805
+ fun_l0_n806
+ fun_l0_n807
+ fun_l0_n808
+ fun_l0_n809
+ fun_l0_n810
+ fun_l0_n811
+ fun_l0_n812
+ fun_l0_n813
+ fun_l0_n814
+ fun_l0_n815
+ fun_l0_n816
+ fun_l0_n817
+ fun_l0_n818
+ fun_l0_n819
+ fun_l0_n820
+ fun_l0_n821
+ fun_l0_n822
+ fun_l0_n823
+ fun_l0_n824
+ fun_l0_n825
+ fun_l0_n826
+ fun_l0_n827
+ fun_l0_n828
+ fun_l0_n829
+ fun_l0_n830
+ fun_l0_n831
+ fun_l0_n832
+ fun_l0_n833
+ fun_l0_n834
+ fun_l0_n835
+ fun_l0_n836
+ fun_l0_n837
+ fun_l0_n838
+ fun_l0_n839
+ fun_l0_n840
+ fun_l0_n841
+ fun_l0_n842
+ fun_l0_n843
+ fun_l0_n844
+ fun_l0_n845
+ fun_l0_n846
+ fun_l0_n847
+ fun_l0_n848
+ fun_l0_n849
+ fun_l0_n850
+ fun_l0_n851
+ fun_l0_n852
+ fun_l0_n853
+ fun_l0_n854
+ fun_l0_n855
+ fun_l0_n856
+ fun_l0_n857
+ fun_l0_n858
+ fun_l0_n859
+ fun_l0_n860
+ fun_l0_n861
+ fun_l0_n862
+ fun_l0_n863
+ fun_l0_n864
+ fun_l0_n865
+ fun_l0_n866
+ fun_l0_n867
+ fun_l0_n868
+ fun_l0_n869
+ fun_l0_n870
+ fun_l0_n871
+ fun_l0_n872
+ fun_l0_n873
+ fun_l0_n874
+ fun_l0_n875
+ fun_l0_n876
+ fun_l0_n877
+ fun_l0_n878
+ fun_l0_n879
+ fun_l0_n880
+ fun_l0_n881
+ fun_l0_n882
+ fun_l0_n883
+ fun_l0_n884
+ fun_l0_n885
+ fun_l0_n886
+ fun_l0_n887
+ fun_l0_n888
+ fun_l0_n889
+ fun_l0_n890
+ fun_l0_n891
+ fun_l0_n892
+ fun_l0_n893
+ fun_l0_n894
+ fun_l0_n895
+ fun_l0_n896
+ fun_l0_n897
+ fun_l0_n898
+ fun_l0_n899
+ fun_l0_n900
+ fun_l0_n901
+ fun_l0_n902
+ fun_l0_n903
+ fun_l0_n904
+ fun_l0_n905
+ fun_l0_n906
+ fun_l0_n907
+ fun_l0_n908
+ fun_l0_n909
+ fun_l0_n910
+ fun_l0_n911
+ fun_l0_n912
+ fun_l0_n913
+ fun_l0_n914
+ fun_l0_n915
+ fun_l0_n916
+ fun_l0_n917
+ fun_l0_n918
+ fun_l0_n919
+ fun_l0_n920
+ fun_l0_n921
+ fun_l0_n922
+ fun_l0_n923
+ fun_l0_n924
+ fun_l0_n925
+ fun_l0_n926
+ fun_l0_n927
+ fun_l0_n928
+ fun_l0_n929
+ fun_l0_n930
+ fun_l0_n931
+ fun_l0_n932
+ fun_l0_n933
+ fun_l0_n934
+ fun_l0_n935
+ fun_l0_n936
+ fun_l0_n937
+ fun_l0_n938
+ fun_l0_n939
+ fun_l0_n940
+ fun_l0_n941
+ fun_l0_n942
+ fun_l0_n943
+ fun_l0_n944
+ fun_l0_n945
+ fun_l0_n946
+ fun_l0_n947
+ fun_l0_n948
+ fun_l0_n949
+ fun_l0_n950
+ fun_l0_n951
+ fun_l0_n952
+ fun_l0_n953
+ fun_l0_n954
+ fun_l0_n955
+ fun_l0_n956
+ fun_l0_n957
+ fun_l0_n958
+ fun_l0_n959
+ fun_l0_n960
+ fun_l0_n961
+ fun_l0_n962
+ fun_l0_n963
+ fun_l0_n964
+ fun_l0_n965
+ fun_l0_n966
+ fun_l0_n967
+ fun_l0_n968
+ fun_l0_n969
+ fun_l0_n970
+ fun_l0_n971
+ fun_l0_n972
+ fun_l0_n973
+ fun_l0_n974
+ fun_l0_n975
+ fun_l0_n976
+ fun_l0_n977
+ fun_l0_n978
+ fun_l0_n979
+ fun_l0_n980
+ fun_l0_n981
+ fun_l0_n982
+ fun_l0_n983
+ fun_l0_n984
+ fun_l0_n985
+ fun_l0_n986
+ fun_l0_n987
+ fun_l0_n988
+ fun_l0_n989
+ fun_l0_n990
+ fun_l0_n991
+ fun_l0_n992
+ fun_l0_n993
+ fun_l0_n994
+ fun_l0_n995
+ fun_l0_n996
+ fun_l0_n997
+ fun_l0_n998
+ fun_l0_n999
+end
+
+@count
+
+}
diff --git a/bootstraptest/test_yjit_rust_port.rb b/bootstraptest/test_yjit_rust_port.rb
new file mode 100644
index 0000000000..e399e0e49e
--- /dev/null
+++ b/bootstraptest/test_yjit_rust_port.rb
@@ -0,0 +1,422 @@
+# Simple tests that we know we can pass
+# To keep track of what we got working during the Rust port
+# And avoid breaking/losing functionality
+#
+# Say "Thread" here to dodge WASM CI check. We use ractors here
+# which WASM doesn't support and it only greps for "Thread".
+
+# Test for opt_mod
+assert_equal '2', %q{
+ def mod(a, b)
+ a % b
+ end
+
+ mod(7, 5)
+ mod(7, 5)
+}
+
+# Test for opt_mult
+assert_equal '12', %q{
+ def mult(a, b)
+ a * b
+ end
+
+ mult(6, 2)
+ mult(6, 2)
+}
+
+# Test for opt_div
+assert_equal '3', %q{
+ def div(a, b)
+ a / b
+ end
+
+ div(6, 2)
+ div(6, 2)
+}
+
+assert_equal '5', %q{
+ def plus(a, b)
+ a + b
+ end
+
+ plus(3, 2)
+}
+
+assert_equal '1', %q{
+ def foo(a, b)
+ a - b
+ end
+
+ foo(3, 2)
+}
+
+assert_equal 'true', %q{
+ def foo(a, b)
+ a < b
+ end
+
+ foo(2, 3)
+}
+
+# Bitwise left shift
+assert_equal '4', %q{
+ def foo(a, b)
+ 1 << 2
+ end
+
+ foo(1, 2)
+}
+
+assert_equal '-7', %q{
+ def foo(a, b)
+ -7
+ end
+
+ foo(1, 2)
+}
+
+# Putstring
+assert_equal 'foo', %q{
+ def foo(a, b)
+ "foo"
+ end
+
+ foo(1, 2)
+}
+
+assert_equal '-6', %q{
+ def foo(a, b)
+ a + -7
+ end
+
+ foo(1, 2)
+}
+
+assert_equal 'true', %q{
+ def foo(a, b)
+ a == b
+ end
+
+ foo(3, 3)
+}
+
+assert_equal 'true', %q{
+ def foo(a, b)
+ a < b
+ end
+
+ foo(3, 5)
+}
+
+assert_equal '777', %q{
+ def foo(a)
+ if a
+ 777
+ else
+ 333
+ end
+ end
+
+ foo(true)
+}
+
+assert_equal '5', %q{
+ def foo(a, b)
+ while a < b
+ a += 1
+ end
+ a
+ end
+
+ foo(1, 5)
+}
+
+# opt_aref
+assert_equal '2', %q{
+ def foo(a, b)
+ a[b]
+ end
+
+ foo([0, 1, 2], 2)
+}
+
+# Simple function calls with 0, 1, 2 arguments
+assert_equal '-2', %q{
+ def bar()
+ -2
+ end
+
+ def foo(a, b)
+ bar()
+ end
+
+ foo(3, 2)
+}
+assert_equal '2', %q{
+ def bar(a)
+ a
+ end
+
+ def foo(a, b)
+ bar(b)
+ end
+
+ foo(3, 2)
+}
+assert_equal '1', %q{
+ def bar(a, b)
+ a - b
+ end
+
+ def foo(a, b)
+ bar(a, b)
+ end
+
+ foo(3, 2)
+}
+
+# Regression test for assembler bug
+assert_equal '1', %q{
+ def check_index(index)
+ if 0x40000000 < index
+ return -1
+ end
+ 1
+ end
+
+ check_index 2
+}
+
+# Setivar test
+assert_equal '2', %q{
+ class Klass
+ attr_accessor :a
+
+ def set()
+ @a = 2
+ end
+
+ def get()
+ @a
+ end
+ end
+
+ o = Klass.new
+ o.set()
+ o.a
+}
+
+# Regression for putobject bug
+assert_equal '1.5', %q{
+ def foo(x)
+ x
+ end
+
+ def bar
+ foo(1.5)
+ end
+
+ bar()
+}
+
+# Getivar with an extended ivar table
+assert_equal '3', %q{
+ class Foo
+ def initialize
+ @x1 = 1
+ @x2 = 1
+ @x3 = 1
+ @x4 = 3
+ end
+
+ def bar
+ @x4
+ end
+ end
+
+ f = Foo.new
+ f.bar
+}
+
+assert_equal 'true', %q{
+ x = [[false, true]]
+ for i, j in x
+ ;
+ end
+ j
+}
+
+# Regression for getivar
+assert_equal '[nil]', %q{
+ [TrueClass].each do |klass|
+ klass.class_eval("def foo = @foo")
+ end
+
+ [true].map do |instance|
+ instance.foo
+ end
+}
+
+# Regression for send
+assert_equal 'ok', %q{
+ def bar(baz: 2)
+ baz
+ end
+
+ def foo
+ bar(1, baz: 123)
+ end
+
+ begin
+ foo
+ foo
+ rescue ArgumentError => e
+ print "ok"
+ end
+}
+
+# Array access regression test
+assert_equal '[0, 1, 2, 3, 4, 5]', %q{
+ def expandarray_useless_splat
+ arr = [0, 1, 2, 3, 4, 5]
+ a, * = arr
+ end
+
+ expandarray_useless_splat
+}
+
+# Make sure we're correctly reading RStruct's as.ary union for embedded RStructs
+assert_equal '3,12', %q{
+ pt_struct = Struct.new(:x, :y)
+ p = pt_struct.new(3, 12)
+ def pt_inspect(pt)
+ "#{pt.x},#{pt.y}"
+ end
+
+ # Make sure pt_inspect is JITted
+ 10.times { pt_inspect(p) }
+
+ # Make sure it's returning '3,12' instead of e.g. '3,false'
+ pt_inspect(p)
+}
+
+assert_equal '2', %q{
+ def foo(s)
+ s.foo
+ end
+
+ S = Struct.new(:foo)
+ foo(S.new(1))
+ foo(S.new(2))
+}
+
+# Try to compile new method while OOM
+assert_equal 'ok', %q{
+ def foo
+ :ok
+ end
+
+ RubyVM::YJIT.simulate_oom! if defined?(RubyVM::YJIT)
+
+ foo
+}
+
+# test hitting a branch stub when out of memory
+assert_equal 'ok', %q{
+ def nimai(jita)
+ if jita
+ :ng
+ else
+ :ok
+ end
+ end
+
+ nimai(true)
+ nimai(true)
+
+ RubyVM::YJIT.simulate_oom! if defined?(RubyVM::YJIT)
+
+ nimai(false)
+}
+
+# Ractor.current returns a current ractor
+assert_equal 'Ractor', %q{
+ Ractor.current.class
+}
+
+# Ractor.new returns new Ractor
+assert_equal 'Ractor', %q{
+ Ractor.new{}.class
+}
+
+# Ractor.allocate is not supported
+assert_equal "[:ok, :ok]", %q{
+ rs = []
+ begin
+ Ractor.allocate
+ rescue => e
+ rs << :ok if e.message == 'allocator undefined for Ractor'
+ end
+
+ begin
+ Ractor.new{}.dup
+ rescue
+ rs << :ok if e.message == 'allocator undefined for Ractor'
+ end
+
+ rs
+}
+
+# A return value of a Ractor block will be a message from the Ractor.
+assert_equal 'ok', %q{
+ # join
+ r = Ractor.new do
+ 'ok'
+ end
+ r.take
+}
+
+# Passed arguments to Ractor.new will be a block parameter
+# The values are passed with Ractor-communication pass.
+assert_equal 'ok', %q{
+ # ping-pong with arg
+ r = Ractor.new 'ok' do |msg|
+ msg
+ end
+ r.take
+}
+
+# Pass multiple arguments to Ractor.new
+assert_equal 'ok', %q{
+ # ping-pong with two args
+ r = Ractor.new 'ping', 'pong' do |msg, msg2|
+ [msg, msg2]
+ end
+ 'ok' if r.take == ['ping', 'pong']
+}
+
+# Ractor#send passes an object with copy to a Ractor
+# and Ractor.receive in the Ractor block can receive the passed value.
+assert_equal 'ok', %q{
+ r = Ractor.new do
+ msg = Ractor.receive
+ end
+ r.send 'ok'
+ r.take
+}
+
+assert_equal '[1, 2, 3]', %q{
+ def foo(arr)
+ arr << 1
+ arr << 2
+ arr << 3
+ arr
+ end
+
+ def bar()
+ foo([])
+ end
+
+ bar()
+}
diff --git a/builtin.c b/builtin.c
new file mode 100644
index 0000000000..21fff95650
--- /dev/null
+++ b/builtin.c
@@ -0,0 +1,69 @@
+#include "internal.h"
+#include "vm_core.h"
+#include "iseq.h"
+#include "builtin.h"
+
+#ifdef CROSS_COMPILING
+
+#define INCLUDED_BY_BUILTIN_C 1
+#include "mini_builtin.c"
+
+#else
+
+#include "builtin_binary.inc"
+
+static const unsigned char *
+bin4feature(const struct builtin_binary *bb, const char *feature, size_t *psize)
+{
+ *psize = bb->bin_size;
+ return strcmp(bb->feature, feature) ? NULL : bb->bin;
+}
+
+static const unsigned char*
+builtin_lookup(const char *feature, size_t *psize)
+{
+ static int index = 0;
+ const unsigned char *bin = bin4feature(&builtin_binary[index++], feature, psize);
+
+ // usually, `builtin_binary` order is loading order at miniruby.
+ for (const struct builtin_binary *bb = &builtin_binary[0]; bb->feature &&! bin; bb++) {
+ bin = bin4feature(bb++, feature, psize);
+ }
+ return bin;
+}
+
+void
+rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table)
+{
+ // search binary
+ size_t size;
+ const unsigned char *bin = builtin_lookup(feature_name, &size);
+ if (! bin) {
+ rb_bug("builtin_lookup: can not find %s\n", feature_name);
+ }
+
+ // load binary
+ rb_vm_t *vm = GET_VM();
+ if (vm->builtin_function_table != NULL) rb_bug("vm->builtin_function_table should be NULL.");
+ vm->builtin_function_table = table;
+ vm->builtin_inline_index = 0;
+ const rb_iseq_t *iseq = rb_iseq_ibf_load_bytes((const char *)bin, size);
+ vm->builtin_function_table = NULL;
+
+ // exec
+ rb_iseq_eval(rb_iseq_check(iseq));
+}
+
+#endif
+
+void
+Init_builtin(void)
+{
+ // nothing
+}
+
+void
+Init_builtin_features(void)
+{
+ rb_load_with_builtin_functions("gem_prelude", NULL);
+}
diff --git a/builtin.h b/builtin.h
new file mode 100644
index 0000000000..38ad5a1629
--- /dev/null
+++ b/builtin.h
@@ -0,0 +1,121 @@
+#ifndef BUILTIN_H_INCLUDED
+#define BUILTIN_H_INCLUDED
+
+// invoke
+
+struct rb_builtin_function {
+ // for invocation
+ const void * const func_ptr;
+ const int argc;
+
+ // for load
+ const int index;
+ const char * const name;
+
+ // for jit
+ void (*compiler)(VALUE, long, unsigned, bool);
+};
+
+#define RB_BUILTIN_FUNCTION(_i, _name, _fname, _arity, _compiler) {\
+ .name = _i < 0 ? NULL : #_name, \
+ .func_ptr = (void *)_fname, \
+ .argc = _arity, \
+ .index = _i, \
+ .compiler = _compiler, \
+}
+
+void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table);
+
+#ifndef rb_execution_context_t
+typedef struct rb_execution_context_struct rb_execution_context_t;
+#define rb_execution_context_t rb_execution_context_t
+#endif
+
+/* The following code is generated by the following Ruby script:
+
+typedef = proc {|i, args|
+ "typedef VALUE (*rb_builtin_arity#{i}_function_type)(rb_execution_context_t *ec, VALUE self#{args});"
+}
+puts typedef[0, ""]
+(1..15).each {|i|
+ puts typedef[i, ",\n " + (0...i).map{"VALUE"}.join(", ")]
+}
+16.times{|i|
+ puts "static inline void rb_builtin_function_check_arity#{i}(rb_builtin_arity#{i}_function_type f){}"
+}
+*/
+
+typedef VALUE (*rb_builtin_arity0_function_type)(rb_execution_context_t *ec, VALUE self);
+typedef VALUE (*rb_builtin_arity1_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE);
+typedef VALUE (*rb_builtin_arity2_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity3_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity4_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity5_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity6_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity7_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity8_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity9_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity10_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity11_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity12_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity13_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity14_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
+typedef VALUE (*rb_builtin_arity15_function_type)(rb_execution_context_t *ec, VALUE self,
+ VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
+static inline void rb_builtin_function_check_arity0(rb_builtin_arity0_function_type f){}
+static inline void rb_builtin_function_check_arity1(rb_builtin_arity1_function_type f){}
+static inline void rb_builtin_function_check_arity2(rb_builtin_arity2_function_type f){}
+static inline void rb_builtin_function_check_arity3(rb_builtin_arity3_function_type f){}
+static inline void rb_builtin_function_check_arity4(rb_builtin_arity4_function_type f){}
+static inline void rb_builtin_function_check_arity5(rb_builtin_arity5_function_type f){}
+static inline void rb_builtin_function_check_arity6(rb_builtin_arity6_function_type f){}
+static inline void rb_builtin_function_check_arity7(rb_builtin_arity7_function_type f){}
+static inline void rb_builtin_function_check_arity8(rb_builtin_arity8_function_type f){}
+static inline void rb_builtin_function_check_arity9(rb_builtin_arity9_function_type f){}
+static inline void rb_builtin_function_check_arity10(rb_builtin_arity10_function_type f){}
+static inline void rb_builtin_function_check_arity11(rb_builtin_arity11_function_type f){}
+static inline void rb_builtin_function_check_arity12(rb_builtin_arity12_function_type f){}
+static inline void rb_builtin_function_check_arity13(rb_builtin_arity13_function_type f){}
+static inline void rb_builtin_function_check_arity14(rb_builtin_arity14_function_type f){}
+static inline void rb_builtin_function_check_arity15(rb_builtin_arity15_function_type f){}
+
+PUREFUNC(VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index));
+VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index);
+
+// __builtin_inline!
+
+PUREFUNC(static inline VALUE rb_vm_lvar(rb_execution_context_t *ec, int index));
+
+static inline VALUE
+rb_vm_lvar(rb_execution_context_t *ec, int index)
+{
+#if defined(VM_CORE_H_EC_DEFINED) && VM_CORE_H_EC_DEFINED
+ return ec->cfp->ep[index];
+#else
+ return rb_vm_lvar_exposed(ec, index);
+#endif
+}
+
+// dump/load
+
+struct builtin_binary {
+ const char *feature; // feature name
+ const unsigned char *bin; // binary by ISeq#to_binary
+ size_t bin_size;
+};
+
+#endif // BUILTIN_H_INCLUDED
diff --git a/ccan/build_assert/build_assert.h b/ccan/build_assert/build_assert.h
new file mode 100644
index 0000000000..b846849241
--- /dev/null
+++ b/ccan/build_assert/build_assert.h
@@ -0,0 +1,40 @@
+/* CC0 (Public domain) - see ccan/licenses/CC0 file for details */
+#ifndef CCAN_BUILD_ASSERT_H
+#define CCAN_BUILD_ASSERT_H
+
+/**
+ * CCAN_BUILD_ASSERT - assert a build-time dependency.
+ * @cond: the compile-time condition which must be true.
+ *
+ * Your compile will fail if the condition isn't true, or can't be evaluated
+ * by the compiler. This can only be used within a function.
+ *
+ * Example:
+ * #include <stddef.h>
+ * ...
+ * static char *foo_to_char(struct foo *foo)
+ * {
+ * // This code needs string to be at start of foo.
+ * CCAN_BUILD_ASSERT(offsetof(struct foo, string) == 0);
+ * return (char *)foo;
+ * }
+ */
+#define CCAN_BUILD_ASSERT(cond) \
+ do { (void) sizeof(char [1 - 2*!(cond)]); } while(0)
+
+/**
+ * CCAN_BUILD_ASSERT_OR_ZERO - assert a build-time dependency, as an expression.
+ * @cond: the compile-time condition which must be true.
+ *
+ * Your compile will fail if the condition isn't true, or can't be evaluated
+ * by the compiler. This can be used in an expression: its value is "0".
+ *
+ * Example:
+ * #define foo_to_char(foo) \
+ * ((char *)(foo) \
+ * + CCAN_BUILD_ASSERT_OR_ZERO(offsetof(struct foo, string) == 0))
+ */
+#define CCAN_BUILD_ASSERT_OR_ZERO(cond) \
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+
+#endif /* CCAN_BUILD_ASSERT_H */
diff --git a/ccan/check_type/check_type.h b/ccan/check_type/check_type.h
new file mode 100644
index 0000000000..659e1a5a83
--- /dev/null
+++ b/ccan/check_type/check_type.h
@@ -0,0 +1,63 @@
+/* CC0 (Public domain) - see ccan/licenses/CC0 file for details */
+#ifndef CCAN_CHECK_TYPE_H
+#define CCAN_CHECK_TYPE_H
+
+/**
+ * ccan_check_type - issue a warning or build failure if type is not correct.
+ * @expr: the expression whose type we should check (not evaluated).
+ * @type: the exact type we expect the expression to be.
+ *
+ * This macro is usually used within other macros to try to ensure that a macro
+ * argument is of the expected type. No type promotion of the expression is
+ * done: an unsigned int is not the same as an int!
+ *
+ * ccan_check_type() always evaluates to 0.
+ *
+ * If your compiler does not support typeof, then the best we can do is fail
+ * to compile if the sizes of the types are unequal (a less complete check).
+ *
+ * Example:
+ * // They should always pass a 64-bit value to _set_some_value!
+ * #define set_some_value(expr) \
+ * _set_some_value((ccan_check_type((expr), uint64_t), (expr)))
+ */
+
+/**
+ * ccan_check_types_match - issue a warning or build failure if types are not same.
+ * @expr1: the first expression (not evaluated).
+ * @expr2: the second expression (not evaluated).
+ *
+ * This macro is usually used within other macros to try to ensure that
+ * arguments are of identical types. No type promotion of the expressions is
+ * done: an unsigned int is not the same as an int!
+ *
+ * ccan_check_types_match() always evaluates to 0.
+ *
+ * If your compiler does not support typeof, then the best we can do is fail
+ * to compile if the sizes of the types are unequal (a less complete check).
+ *
+ * Example:
+ * // Do subtraction to get to enclosing type, but make sure that
+ * // pointer is of correct type for that member.
+ * #define ccan_container_of(mbr_ptr, encl_type, mbr) \
+ * (ccan_check_types_match((mbr_ptr), &((encl_type *)0)->mbr), \
+ * ((encl_type *) \
+ * ((char *)(mbr_ptr) - offsetof(enclosing_type, mbr))))
+ */
+#if defined(HAVE_TYPEOF) && HAVE_TYPEOF
+#define ccan_check_type(expr, type) \
+ ((typeof(expr) *)0 != (type *)0)
+
+#define ccan_check_types_match(expr1, expr2) \
+ ((typeof(expr1) *)0 != (typeof(expr2) *)0)
+#else
+#include "ccan/build_assert/build_assert.h"
+/* Without typeof, we can only test the sizes. */
+#define ccan_check_type(expr, type) \
+ CCAN_BUILD_ASSERT_OR_ZERO(sizeof(expr) == sizeof(type))
+
+#define ccan_check_types_match(expr1, expr2) \
+ CCAN_BUILD_ASSERT_OR_ZERO(sizeof(expr1) == sizeof(expr2))
+#endif /* HAVE_TYPEOF */
+
+#endif /* CCAN_CHECK_TYPE_H */
diff --git a/ccan/container_of/container_of.h b/ccan/container_of/container_of.h
new file mode 100644
index 0000000000..872bb6ea6e
--- /dev/null
+++ b/ccan/container_of/container_of.h
@@ -0,0 +1,142 @@
+/* CC0 (Public domain) - see ccan/licenses/CC0 file for details */
+#ifndef CCAN_CONTAINER_OF_H
+#define CCAN_CONTAINER_OF_H
+#include "ccan/check_type/check_type.h"
+
+/**
+ * ccan_container_of - get pointer to enclosing structure
+ * @member_ptr: pointer to the structure member
+ * @containing_type: the type this member is within
+ * @member: the name of this member within the structure.
+ *
+ * Given a pointer to a member of a structure, this macro does pointer
+ * subtraction to return the pointer to the enclosing type.
+ *
+ * Example:
+ * struct foo {
+ * int fielda, fieldb;
+ * // ...
+ * };
+ * struct info {
+ * int some_other_field;
+ * struct foo my_foo;
+ * };
+ *
+ * static struct info *foo_to_info(struct foo *foo)
+ * {
+ * return ccan_container_of(foo, struct info, my_foo);
+ * }
+ */
+#define ccan_container_of(member_ptr, containing_type, member) \
+ ((containing_type *) \
+ ((char *)(member_ptr) \
+ - ccan_container_off(containing_type, member)) \
+ + ccan_check_types_match(*(member_ptr), ((containing_type *)0)->member))
+
+
+/**
+ * ccan_container_of_or_null - get pointer to enclosing structure, or NULL
+ * @member_ptr: pointer to the structure member
+ * @containing_type: the type this member is within
+ * @member: the name of this member within the structure.
+ *
+ * Given a pointer to a member of a structure, this macro does pointer
+ * subtraction to return the pointer to the enclosing type, unless it
+ * is given NULL, in which case it also returns NULL.
+ *
+ * Example:
+ * struct foo {
+ * int fielda, fieldb;
+ * // ...
+ * };
+ * struct info {
+ * int some_other_field;
+ * struct foo my_foo;
+ * };
+ *
+ * static struct info *foo_to_info_allowing_null(struct foo *foo)
+ * {
+ * return ccan_container_of_or_null(foo, struct info, my_foo);
+ * }
+ */
+static inline char *container_of_or_null_(void *member_ptr, size_t offset)
+{
+ return member_ptr ? (char *)member_ptr - offset : NULL;
+}
+#define ccan_container_of_or_null(member_ptr, containing_type, member) \
+ ((containing_type *) \
+ ccan_container_of_or_null_(member_ptr, \
+ ccan_container_off(containing_type, member)) \
+ + ccan_check_types_match(*(member_ptr), ((containing_type *)0)->member))
+
+/**
+ * ccan_container_off - get offset to enclosing structure
+ * @containing_type: the type this member is within
+ * @member: the name of this member within the structure.
+ *
+ * Given a pointer to a member of a structure, this macro does
+ * typechecking and figures out the offset to the enclosing type.
+ *
+ * Example:
+ * struct foo {
+ * int fielda, fieldb;
+ * // ...
+ * };
+ * struct info {
+ * int some_other_field;
+ * struct foo my_foo;
+ * };
+ *
+ * static struct info *foo_to_info(struct foo *foo)
+ * {
+ * size_t off = ccan_container_off(struct info, my_foo);
+ * return (void *)((char *)foo - off);
+ * }
+ */
+#define ccan_container_off(containing_type, member) \
+ offsetof(containing_type, member)
+
+/**
+ * ccan_container_of_var - get pointer to enclosing structure using a variable
+ * @member_ptr: pointer to the structure member
+ * @container_var: a pointer of same type as this member's container
+ * @member: the name of this member within the structure.
+ *
+ * Given a pointer to a member of a structure, this macro does pointer
+ * subtraction to return the pointer to the enclosing type.
+ *
+ * Example:
+ * static struct info *foo_to_i(struct foo *foo)
+ * {
+ * struct info *i = ccan_container_of_var(foo, i, my_foo);
+ * return i;
+ * }
+ */
+#if defined(HAVE_TYPEOF) && HAVE_TYPEOF
+#define ccan_container_of_var(member_ptr, container_var, member) \
+ ccan_container_of(member_ptr, typeof(*container_var), member)
+#else
+#define ccan_container_of_var(member_ptr, container_var, member) \
+ ((void *)((char *)(member_ptr) - \
+ ccan_container_off_var(container_var, member)))
+#endif
+
+/**
+ * ccan_container_off_var - get offset of a field in enclosing structure
+ * @container_var: a pointer to a container structure
+ * @member: the name of a member within the structure.
+ *
+ * Given (any) pointer to a structure and a its member name, this
+ * macro does pointer subtraction to return offset of member in a
+ * structure memory layout.
+ *
+ */
+#if defined(HAVE_TYPEOF) && HAVE_TYPEOF
+#define ccan_container_off_var(var, member) \
+ ccan_container_off(typeof(*var), member)
+#else
+#define ccan_container_off_var(var, member) \
+ ((const char *)&(var)->member - (const char *)(var))
+#endif
+
+#endif /* CCAN_CONTAINER_OF_H */
diff --git a/ccan/licenses/BSD-MIT b/ccan/licenses/BSD-MIT
new file mode 100644
index 0000000000..89de354795
--- /dev/null
+++ b/ccan/licenses/BSD-MIT
@@ -0,0 +1,17 @@
+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.
diff --git a/ccan/licenses/CC0 b/ccan/licenses/CC0
new file mode 100644
index 0000000000..feb9b118e6
--- /dev/null
+++ b/ccan/licenses/CC0
@@ -0,0 +1,28 @@
+Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").
+
+Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
+
+For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:
+
+ the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
+ moral rights retained by the original author(s) and/or performer(s);
+ publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
+ rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
+ rights protecting the extraction, dissemination, use and reuse of data in a Work;
+ database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
+ other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
+
+2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.
+
+4. Limitations and Disclaimers.
+
+ No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
+ Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
+ Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
+ Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
diff --git a/ccan/list/list.h b/ccan/list/list.h
new file mode 100644
index 0000000000..30b2af04e9
--- /dev/null
+++ b/ccan/list/list.h
@@ -0,0 +1,789 @@
+/* Licensed under BSD-MIT - see ccan/licenses/BSD-MIT file for details */
+#ifndef CCAN_LIST_H
+#define CCAN_LIST_H
+#include <assert.h>
+#include "ccan/str/str.h"
+#include "ccan/container_of/container_of.h"
+#include "ccan/check_type/check_type.h"
+
+/**
+ * struct ccan_list_node - an entry in a doubly-linked list
+ * @next: next entry (self if empty)
+ * @prev: previous entry (self if empty)
+ *
+ * This is used as an entry in a linked list.
+ * Example:
+ * struct child {
+ * const char *name;
+ * // Linked list of all us children.
+ * struct ccan_list_node list;
+ * };
+ */
+struct ccan_list_node
+{
+ struct ccan_list_node *next, *prev;
+};
+
+/**
+ * struct ccan_list_head - the head of a doubly-linked list
+ * @h: the ccan_list_head (containing next and prev pointers)
+ *
+ * This is used as the head of a linked list.
+ * Example:
+ * struct parent {
+ * const char *name;
+ * struct ccan_list_head children;
+ * unsigned int num_children;
+ * };
+ */
+struct ccan_list_head
+{
+ struct ccan_list_node n;
+};
+
+#define CCAN_LIST_LOC __FILE__ ":" ccan_stringify(__LINE__)
+#define ccan_list_debug(h, loc) ((void)loc, h)
+#define ccan_list_debug_node(n, loc) ((void)loc, n)
+
+/**
+ * CCAN_LIST_HEAD_INIT - initializer for an empty ccan_list_head
+ * @name: the name of the list.
+ *
+ * Explicit initializer for an empty list.
+ *
+ * See also:
+ * CCAN_LIST_HEAD, ccan_list_head_init()
+ *
+ * Example:
+ * static struct ccan_list_head my_list = CCAN_LIST_HEAD_INIT(my_list);
+ */
+#define CCAN_LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
+
+/**
+ * CCAN_LIST_HEAD - define and initialize an empty ccan_list_head
+ * @name: the name of the list.
+ *
+ * The CCAN_LIST_HEAD macro defines a ccan_list_head and initializes it to an empty
+ * list. It can be prepended by "static" to define a static ccan_list_head.
+ *
+ * See also:
+ * CCAN_LIST_HEAD_INIT, ccan_list_head_init()
+ *
+ * Example:
+ * static CCAN_LIST_HEAD(my_global_list);
+ */
+#define CCAN_LIST_HEAD(name) \
+ struct ccan_list_head name = CCAN_LIST_HEAD_INIT(name)
+
+/**
+ * ccan_list_head_init - initialize a ccan_list_head
+ * @h: the ccan_list_head to set to the empty list
+ *
+ * Example:
+ * ...
+ * struct parent *parent = malloc(sizeof(*parent));
+ *
+ * ccan_list_head_init(&parent->children);
+ * parent->num_children = 0;
+ */
+static inline void ccan_list_head_init(struct ccan_list_head *h)
+{
+ h->n.next = h->n.prev = &h->n;
+}
+
+/**
+ * ccan_list_node_init - initialize a ccan_list_node
+ * @n: the ccan_list_node to link to itself.
+ *
+ * You don't need to use this normally! But it lets you ccan_list_del(@n)
+ * safely.
+ */
+static inline void ccan_list_node_init(struct ccan_list_node *n)
+{
+ n->next = n->prev = n;
+}
+
+/**
+ * ccan_list_add_after - add an entry after an existing node in a linked list
+ * @h: the ccan_list_head to add the node to (for debugging)
+ * @p: the existing ccan_list_node to add the node after
+ * @n: the new ccan_list_node to add to the list.
+ *
+ * The existing ccan_list_node must already be a member of the list.
+ * The new ccan_list_node does not need to be initialized; it will be overwritten.
+ *
+ * Example:
+ * struct child c1, c2, c3;
+ * CCAN_LIST_HEAD(h);
+ *
+ * ccan_list_add_tail(&h, &c1.list);
+ * ccan_list_add_tail(&h, &c3.list);
+ * ccan_list_add_after(&h, &c1.list, &c2.list);
+ */
+#define ccan_list_add_after(h, p, n) ccan_list_add_after_(h, p, n, CCAN_LIST_LOC)
+static inline void ccan_list_add_after_(struct ccan_list_head *h,
+ struct ccan_list_node *p,
+ struct ccan_list_node *n,
+ const char *abortstr)
+{
+ n->next = p->next;
+ n->prev = p;
+ p->next->prev = n;
+ p->next = n;
+ (void)ccan_list_debug(h, abortstr);
+}
+
+/**
+ * ccan_list_add - add an entry at the start of a linked list.
+ * @h: the ccan_list_head to add the node to
+ * @n: the ccan_list_node to add to the list.
+ *
+ * The ccan_list_node does not need to be initialized; it will be overwritten.
+ * Example:
+ * struct child *child = malloc(sizeof(*child));
+ *
+ * child->name = "marvin";
+ * ccan_list_add(&parent->children, &child->list);
+ * parent->num_children++;
+ */
+#define ccan_list_add(h, n) ccan_list_add_(h, n, CCAN_LIST_LOC)
+static inline void ccan_list_add_(struct ccan_list_head *h,
+ struct ccan_list_node *n,
+ const char *abortstr)
+{
+ ccan_list_add_after_(h, &h->n, n, abortstr);
+}
+
+/**
+ * ccan_list_add_before - add an entry before an existing node in a linked list
+ * @h: the ccan_list_head to add the node to (for debugging)
+ * @p: the existing ccan_list_node to add the node before
+ * @n: the new ccan_list_node to add to the list.
+ *
+ * The existing ccan_list_node must already be a member of the list.
+ * The new ccan_list_node does not need to be initialized; it will be overwritten.
+ *
+ * Example:
+ * ccan_list_head_init(&h);
+ * ccan_list_add_tail(&h, &c1.list);
+ * ccan_list_add_tail(&h, &c3.list);
+ * ccan_list_add_before(&h, &c3.list, &c2.list);
+ */
+#define ccan_list_add_before(h, p, n) ccan_list_add_before_(h, p, n, CCAN_LIST_LOC)
+static inline void ccan_list_add_before_(struct ccan_list_head *h,
+ struct ccan_list_node *p,
+ struct ccan_list_node *n,
+ const char *abortstr)
+{
+ n->next = p;
+ n->prev = p->prev;
+ p->prev->next = n;
+ p->prev = n;
+ (void)ccan_list_debug(h, abortstr);
+}
+
+/**
+ * ccan_list_add_tail - add an entry at the end of a linked list.
+ * @h: the ccan_list_head to add the node to
+ * @n: the ccan_list_node to add to the list.
+ *
+ * The ccan_list_node does not need to be initialized; it will be overwritten.
+ * Example:
+ * ccan_list_add_tail(&parent->children, &child->list);
+ * parent->num_children++;
+ */
+#define ccan_list_add_tail(h, n) ccan_list_add_tail_(h, n, CCAN_LIST_LOC)
+static inline void ccan_list_add_tail_(struct ccan_list_head *h,
+ struct ccan_list_node *n,
+ const char *abortstr)
+{
+ ccan_list_add_before_(h, &h->n, n, abortstr);
+}
+
+/**
+ * ccan_list_empty - is a list empty?
+ * @h: the ccan_list_head
+ *
+ * If the list is empty, returns true.
+ *
+ * Example:
+ * assert(ccan_list_empty(&parent->children) == (parent->num_children == 0));
+ */
+#define ccan_list_empty(h) ccan_list_empty_(h, CCAN_LIST_LOC)
+static inline int ccan_list_empty_(const struct ccan_list_head *h, const char* abortstr)
+{
+ (void)ccan_list_debug(h, abortstr);
+ return h->n.next == &h->n;
+}
+
+/**
+ * ccan_list_empty_nodebug - is a list empty (and don't perform debug checks)?
+ * @h: the ccan_list_head
+ *
+ * If the list is empty, returns true.
+ * This differs from list_empty() in that if CCAN_LIST_DEBUG is set it
+ * will NOT perform debug checks. Only use this function if you REALLY
+ * know what you're doing.
+ *
+ * Example:
+ * assert(ccan_list_empty_nodebug(&parent->children) == (parent->num_children == 0));
+ */
+#ifndef CCAN_LIST_DEBUG
+#define ccan_list_empty_nodebug(h) ccan_list_empty(h)
+#else
+static inline int ccan_list_empty_nodebug(const struct ccan_list_head *h)
+{
+ return h->n.next == &h->n;
+}
+#endif
+
+/**
+ * ccan_list_empty_nocheck - is a list empty?
+ * @h: the ccan_list_head
+ *
+ * If the list is empty, returns true. This doesn't perform any
+ * debug check for list consistency, so it can be called without
+ * locks, racing with the list being modified. This is ok for
+ * checks where an incorrect result is not an issue (optimized
+ * bail out path for example).
+ */
+static inline bool ccan_list_empty_nocheck(const struct ccan_list_head *h)
+{
+ return h->n.next == &h->n;
+}
+
+/**
+ * ccan_list_del - delete an entry from an (unknown) linked list.
+ * @n: the ccan_list_node to delete from the list.
+ *
+ * Note that this leaves @n in an undefined state; it can be added to
+ * another list, but not deleted again.
+ *
+ * See also:
+ * ccan_list_del_from(), ccan_list_del_init()
+ *
+ * Example:
+ * ccan_list_del(&child->list);
+ * parent->num_children--;
+ */
+#define ccan_list_del(n) ccan_list_del_(n, CCAN_LIST_LOC)
+static inline void ccan_list_del_(struct ccan_list_node *n, const char* abortstr)
+{
+ (void)ccan_list_debug_node(n, abortstr);
+ n->next->prev = n->prev;
+ n->prev->next = n->next;
+#ifdef CCAN_LIST_DEBUG
+ /* Catch use-after-del. */
+ n->next = n->prev = NULL;
+#endif
+}
+
+/**
+ * ccan_list_del_init - delete a node, and reset it so it can be deleted again.
+ * @n: the ccan_list_node to be deleted.
+ *
+ * ccan_list_del(@n) or ccan_list_del_init() again after this will be safe,
+ * which can be useful in some cases.
+ *
+ * See also:
+ * ccan_list_del_from(), ccan_list_del()
+ *
+ * Example:
+ * ccan_list_del_init(&child->list);
+ * parent->num_children--;
+ */
+#define ccan_list_del_init(n) ccan_list_del_init_(n, CCAN_LIST_LOC)
+static inline void ccan_list_del_init_(struct ccan_list_node *n, const char *abortstr)
+{
+ ccan_list_del_(n, abortstr);
+ ccan_list_node_init(n);
+}
+
+/**
+ * ccan_list_del_from - delete an entry from a known linked list.
+ * @h: the ccan_list_head the node is in.
+ * @n: the ccan_list_node to delete from the list.
+ *
+ * This explicitly indicates which list a node is expected to be in,
+ * which is better documentation and can catch more bugs.
+ *
+ * See also: ccan_list_del()
+ *
+ * Example:
+ * ccan_list_del_from(&parent->children, &child->list);
+ * parent->num_children--;
+ */
+static inline void ccan_list_del_from(struct ccan_list_head *h, struct ccan_list_node *n)
+{
+#ifdef CCAN_LIST_DEBUG
+ {
+ /* Thorough check: make sure it was in list! */
+ struct ccan_list_node *i;
+ for (i = h->n.next; i != n; i = i->next)
+ assert(i != &h->n);
+ }
+#endif /* CCAN_LIST_DEBUG */
+
+ /* Quick test that catches a surprising number of bugs. */
+ assert(!ccan_list_empty(h));
+ ccan_list_del(n);
+}
+
+/**
+ * ccan_list_swap - swap out an entry from an (unknown) linked list for a new one.
+ * @o: the ccan_list_node to replace from the list.
+ * @n: the ccan_list_node to insert in place of the old one.
+ *
+ * Note that this leaves @o in an undefined state; it can be added to
+ * another list, but not deleted/swapped again.
+ *
+ * See also:
+ * ccan_list_del()
+ *
+ * Example:
+ * struct child x1, x2;
+ * CCAN_LIST_HEAD(xh);
+ *
+ * ccan_list_add(&xh, &x1.list);
+ * ccan_list_swap(&x1.list, &x2.list);
+ */
+#define ccan_list_swap(o, n) ccan_list_swap_(o, n, CCAN_LIST_LOC)
+static inline void ccan_list_swap_(struct ccan_list_node *o,
+ struct ccan_list_node *n,
+ const char* abortstr)
+{
+ (void)ccan_list_debug_node(o, abortstr);
+ *n = *o;
+ n->next->prev = n;
+ n->prev->next = n;
+#ifdef CCAN_LIST_DEBUG
+ /* Catch use-after-del. */
+ o->next = o->prev = NULL;
+#endif
+}
+
+/**
+ * ccan_list_entry - convert a ccan_list_node back into the structure containing it.
+ * @n: the ccan_list_node
+ * @type: the type of the entry
+ * @member: the ccan_list_node member of the type
+ *
+ * Example:
+ * // First list entry is children.next; convert back to child.
+ * child = ccan_list_entry(parent->children.n.next, struct child, list);
+ *
+ * See Also:
+ * ccan_list_top(), ccan_list_for_each()
+ */
+#define ccan_list_entry(n, type, member) ccan_container_of(n, type, member)
+
+/**
+ * ccan_list_top - get the first entry in a list
+ * @h: the ccan_list_head
+ * @type: the type of the entry
+ * @member: the ccan_list_node member of the type
+ *
+ * If the list is empty, returns NULL.
+ *
+ * Example:
+ * struct child *first;
+ * first = ccan_list_top(&parent->children, struct child, list);
+ * if (!first)
+ * printf("Empty list!\n");
+ */
+#define ccan_list_top(h, type, member) \
+ ((type *)ccan_list_top_((h), ccan_list_off_(type, member)))
+
+static inline const void *ccan_list_top_(const struct ccan_list_head *h, size_t off)
+{
+ if (ccan_list_empty(h))
+ return NULL;
+ return (const char *)h->n.next - off;
+}
+
+/**
+ * ccan_list_pop - remove the first entry in a list
+ * @h: the ccan_list_head
+ * @type: the type of the entry
+ * @member: the ccan_list_node member of the type
+ *
+ * If the list is empty, returns NULL.
+ *
+ * Example:
+ * struct child *one;
+ * one = ccan_list_pop(&parent->children, struct child, list);
+ * if (!one)
+ * printf("Empty list!\n");
+ */
+#define ccan_list_pop(h, type, member) \
+ ((type *)ccan_list_pop_((h), ccan_list_off_(type, member)))
+
+static inline const void *ccan_list_pop_(const struct ccan_list_head *h, size_t off)
+{
+ struct ccan_list_node *n;
+
+ if (ccan_list_empty(h))
+ return NULL;
+ n = h->n.next;
+ ccan_list_del(n);
+ return (const char *)n - off;
+}
+
+/**
+ * ccan_list_tail - get the last entry in a list
+ * @h: the ccan_list_head
+ * @type: the type of the entry
+ * @member: the ccan_list_node member of the type
+ *
+ * If the list is empty, returns NULL.
+ *
+ * Example:
+ * struct child *last;
+ * last = ccan_list_tail(&parent->children, struct child, list);
+ * if (!last)
+ * printf("Empty list!\n");
+ */
+#define ccan_list_tail(h, type, member) \
+ ((type *)ccan_list_tail_((h), ccan_list_off_(type, member)))
+
+static inline const void *ccan_list_tail_(const struct ccan_list_head *h, size_t off)
+{
+ if (ccan_list_empty(h))
+ return NULL;
+ return (const char *)h->n.prev - off;
+}
+
+/**
+ * ccan_list_for_each - iterate through a list.
+ * @h: the ccan_list_head (warning: evaluated multiple times!)
+ * @i: the structure containing the ccan_list_node
+ * @member: the ccan_list_node member of the structure
+ *
+ * This is a convenient wrapper to iterate @i over the entire list. It's
+ * a for loop, so you can break and continue as normal.
+ *
+ * Example:
+ * ccan_list_for_each(&parent->children, child, list)
+ * printf("Name: %s\n", child->name);
+ */
+#define ccan_list_for_each(h, i, member) \
+ ccan_list_for_each_off(h, i, ccan_list_off_var_(i, member))
+
+/**
+ * ccan_list_for_each_rev - iterate through a list backwards.
+ * @h: the ccan_list_head
+ * @i: the structure containing the ccan_list_node
+ * @member: the ccan_list_node member of the structure
+ *
+ * This is a convenient wrapper to iterate @i over the entire list. It's
+ * a for loop, so you can break and continue as normal.
+ *
+ * Example:
+ * ccan_list_for_each_rev(&parent->children, child, list)
+ * printf("Name: %s\n", child->name);
+ */
+#define ccan_list_for_each_rev(h, i, member) \
+ ccan_list_for_each_rev_off(h, i, ccan_list_off_var_(i, member))
+
+/**
+ * ccan_list_for_each_rev_safe - iterate through a list backwards,
+ * maybe during deletion
+ * @h: the ccan_list_head
+ * @i: the structure containing the ccan_list_node
+ * @nxt: the structure containing the ccan_list_node
+ * @member: the ccan_list_node member of the structure
+ *
+ * This is a convenient wrapper to iterate @i over the entire list backwards.
+ * It's a for loop, so you can break and continue as normal. The extra
+ * variable * @nxt is used to hold the next element, so you can delete @i
+ * from the list.
+ *
+ * Example:
+ * struct child *next;
+ * ccan_list_for_each_rev_safe(&parent->children, child, next, list) {
+ * printf("Name: %s\n", child->name);
+ * }
+ */
+#define ccan_list_for_each_rev_safe(h, i, nxt, member) \
+ ccan_list_for_each_rev_safe_off(h, i, nxt, ccan_list_off_var_(i, member))
+
+/**
+ * ccan_list_for_each_safe - iterate through a list, maybe during deletion
+ * @h: the ccan_list_head
+ * @i: the structure containing the ccan_list_node
+ * @nxt: the structure containing the ccan_list_node
+ * @member: the ccan_list_node member of the structure
+ *
+ * This is a convenient wrapper to iterate @i over the entire list. It's
+ * a for loop, so you can break and continue as normal. The extra variable
+ * @nxt is used to hold the next element, so you can delete @i from the list.
+ *
+ * Example:
+ * ccan_list_for_each_safe(&parent->children, child, next, list) {
+ * ccan_list_del(&child->list);
+ * parent->num_children--;
+ * }
+ */
+#define ccan_list_for_each_safe(h, i, nxt, member) \
+ ccan_list_for_each_safe_off(h, i, nxt, ccan_list_off_var_(i, member))
+
+/**
+ * ccan_list_next - get the next entry in a list
+ * @h: the ccan_list_head
+ * @i: a pointer to an entry in the list.
+ * @member: the ccan_list_node member of the structure
+ *
+ * If @i was the last entry in the list, returns NULL.
+ *
+ * Example:
+ * struct child *second;
+ * second = ccan_list_next(&parent->children, first, list);
+ * if (!second)
+ * printf("No second child!\n");
+ */
+#define ccan_list_next(h, i, member) \
+ ((ccan_list_typeof(i))ccan_list_entry_or_null(ccan_list_debug(h, \
+ __FILE__ ":" ccan_stringify(__LINE__)), \
+ (i)->member.next, \
+ ccan_list_off_var_((i), member)))
+
+/**
+ * ccan_list_prev - get the previous entry in a list
+ * @h: the ccan_list_head
+ * @i: a pointer to an entry in the list.
+ * @member: the ccan_list_node member of the structure
+ *
+ * If @i was the first entry in the list, returns NULL.
+ *
+ * Example:
+ * first = ccan_list_prev(&parent->children, second, list);
+ * if (!first)
+ * printf("Can't go back to first child?!\n");
+ */
+#define ccan_list_prev(h, i, member) \
+ ((ccan_list_typeof(i))ccan_list_entry_or_null(ccan_list_debug(h, \
+ __FILE__ ":" ccan_stringify(__LINE__)), \
+ (i)->member.prev, \
+ ccan_list_off_var_((i), member)))
+
+/**
+ * ccan_list_append_list - empty one list onto the end of another.
+ * @to: the list to append into
+ * @from: the list to empty.
+ *
+ * This takes the entire contents of @from and moves it to the end of
+ * @to. After this @from will be empty.
+ *
+ * Example:
+ * struct ccan_list_head adopter;
+ *
+ * ccan_list_append_list(&adopter, &parent->children);
+ * assert(ccan_list_empty(&parent->children));
+ * parent->num_children = 0;
+ */
+#define ccan_list_append_list(t, f) ccan_list_append_list_(t, f, \
+ __FILE__ ":" ccan_stringify(__LINE__))
+static inline void ccan_list_append_list_(struct ccan_list_head *to,
+ struct ccan_list_head *from,
+ const char *abortstr)
+{
+ struct ccan_list_node *from_tail = ccan_list_debug(from, abortstr)->n.prev;
+ struct ccan_list_node *to_tail = ccan_list_debug(to, abortstr)->n.prev;
+
+ /* Sew in head and entire list. */
+ to->n.prev = from_tail;
+ from_tail->next = &to->n;
+ to_tail->next = &from->n;
+ from->n.prev = to_tail;
+
+ /* Now remove head. */
+ ccan_list_del(&from->n);
+ ccan_list_head_init(from);
+}
+
+/**
+ * ccan_list_prepend_list - empty one list into the start of another.
+ * @to: the list to prepend into
+ * @from: the list to empty.
+ *
+ * This takes the entire contents of @from and moves it to the start
+ * of @to. After this @from will be empty.
+ *
+ * Example:
+ * ccan_list_prepend_list(&adopter, &parent->children);
+ * assert(ccan_list_empty(&parent->children));
+ * parent->num_children = 0;
+ */
+#define ccan_list_prepend_list(t, f) ccan_list_prepend_list_(t, f, CCAN_LIST_LOC)
+static inline void ccan_list_prepend_list_(struct ccan_list_head *to,
+ struct ccan_list_head *from,
+ const char *abortstr)
+{
+ struct ccan_list_node *from_tail = ccan_list_debug(from, abortstr)->n.prev;
+ struct ccan_list_node *to_head = ccan_list_debug(to, abortstr)->n.next;
+
+ /* Sew in head and entire list. */
+ to->n.next = &from->n;
+ from->n.prev = &to->n;
+ to_head->prev = from_tail;
+ from_tail->next = to_head;
+
+ /* Now remove head. */
+ ccan_list_del(&from->n);
+ ccan_list_head_init(from);
+}
+
+/* internal macros, do not use directly */
+#define ccan_list_for_each_off_dir_(h, i, off, dir) \
+ for (i = ccan_list_node_to_off_(ccan_list_debug(h, CCAN_LIST_LOC)->n.dir, \
+ (off)); \
+ ccan_list_node_from_off_((void *)i, (off)) != &(h)->n; \
+ i = ccan_list_node_to_off_(ccan_list_node_from_off_((void *)i, (off))->dir, \
+ (off)))
+
+#define ccan_list_for_each_safe_off_dir_(h, i, nxt, off, dir) \
+ for (i = ccan_list_node_to_off_(ccan_list_debug(h, CCAN_LIST_LOC)->n.dir, \
+ (off)), \
+ nxt = ccan_list_node_to_off_(ccan_list_node_from_off_(i, (off))->dir, \
+ (off)); \
+ ccan_list_node_from_off_(i, (off)) != &(h)->n; \
+ i = nxt, \
+ nxt = ccan_list_node_to_off_(ccan_list_node_from_off_(i, (off))->dir, \
+ (off)))
+
+/**
+ * ccan_list_for_each_off - iterate through a list of memory regions.
+ * @h: the ccan_list_head
+ * @i: the pointer to a memory region which contains list node data.
+ * @off: offset(relative to @i) at which list node data resides.
+ *
+ * This is a low-level wrapper to iterate @i over the entire list, used to
+ * implement all other, more high-level, for-each constructs. It's a for loop,
+ * so you can break and continue as normal.
+ *
+ * WARNING! Being the low-level macro that it is, this wrapper doesn't know
+ * nor care about the type of @i. The only assumption made is that @i points
+ * to a chunk of memory that at some @offset, relative to @i, contains a
+ * properly filled `struct ccan_list_node' which in turn contains pointers to
+ * memory chunks and it's turtles all the way down. With all that in mind
+ * remember that given the wrong pointer/offset couple this macro will
+ * happily churn all you memory until SEGFAULT stops it, in other words
+ * caveat emptor.
+ *
+ * It is worth mentioning that one of legitimate use-cases for that wrapper
+ * is operation on opaque types with known offset for `struct ccan_list_node'
+ * member(preferably 0), because it allows you not to disclose the type of
+ * @i.
+ *
+ * Example:
+ * ccan_list_for_each_off(&parent->children, child,
+ * offsetof(struct child, list))
+ * printf("Name: %s\n", child->name);
+ */
+#define ccan_list_for_each_off(h, i, off) \
+ ccan_list_for_each_off_dir_((h),(i),(off),next)
+
+/**
+ * ccan_list_for_each_rev_off - iterate through a list of memory regions backwards
+ * @h: the ccan_list_head
+ * @i: the pointer to a memory region which contains list node data.
+ * @off: offset(relative to @i) at which list node data resides.
+ *
+ * See ccan_list_for_each_off for details
+ */
+#define ccan_list_for_each_rev_off(h, i, off) \
+ ccan_list_for_each_off_dir_((h),(i),(off),prev)
+
+/**
+ * ccan_list_for_each_safe_off - iterate through a list of memory regions, maybe
+ * during deletion
+ * @h: the ccan_list_head
+ * @i: the pointer to a memory region which contains list node data.
+ * @nxt: the structure containing the ccan_list_node
+ * @off: offset(relative to @i) at which list node data resides.
+ *
+ * For details see `ccan_list_for_each_off' and `ccan_list_for_each_safe'
+ * descriptions.
+ *
+ * Example:
+ * ccan_list_for_each_safe_off(&parent->children, child,
+ * next, offsetof(struct child, list))
+ * printf("Name: %s\n", child->name);
+ */
+#define ccan_list_for_each_safe_off(h, i, nxt, off) \
+ ccan_list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
+
+/**
+ * ccan_list_for_each_rev_safe_off - iterate backwards through a list of
+ * memory regions, maybe during deletion
+ * @h: the ccan_list_head
+ * @i: the pointer to a memory region which contains list node data.
+ * @nxt: the structure containing the ccan_list_node
+ * @off: offset(relative to @i) at which list node data resides.
+ *
+ * For details see `ccan_list_for_each_rev_off' and `ccan_list_for_each_rev_safe'
+ * descriptions.
+ *
+ * Example:
+ * ccan_list_for_each_rev_safe_off(&parent->children, child,
+ * next, offsetof(struct child, list))
+ * printf("Name: %s\n", child->name);
+ */
+#define ccan_list_for_each_rev_safe_off(h, i, nxt, off) \
+ ccan_list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
+
+/* Other -off variants. */
+#define ccan_list_entry_off(n, type, off) \
+ ((type *)ccan_list_node_from_off_((n), (off)))
+
+#define ccan_list_head_off(h, type, off) \
+ ((type *)ccan_list_head_off((h), (off)))
+
+#define ccan_list_tail_off(h, type, off) \
+ ((type *)ccan_list_tail_((h), (off)))
+
+#define ccan_list_add_off(h, n, off) \
+ ccan_list_add((h), ccan_list_node_from_off_((n), (off)))
+
+#define ccan_list_del_off(n, off) \
+ ccan_list_del(ccan_list_node_from_off_((n), (off)))
+
+#define ccan_list_del_from_off(h, n, off) \
+ ccan_list_del_from(h, ccan_list_node_from_off_((n), (off)))
+
+/* Offset helper functions so we only single-evaluate. */
+static inline void *ccan_list_node_to_off_(struct ccan_list_node *node, size_t off)
+{
+ return (void *)((char *)node - off);
+}
+static inline struct ccan_list_node *ccan_list_node_from_off_(void *ptr, size_t off)
+{
+ return (struct ccan_list_node *)((char *)ptr + off);
+}
+
+/* Get the offset of the member, but make sure it's a ccan_list_node. */
+#define ccan_list_off_(type, member) \
+ (ccan_container_off(type, member) + \
+ ccan_check_type(((type *)0)->member, struct ccan_list_node))
+
+#define ccan_list_off_var_(var, member) \
+ (ccan_container_off_var(var, member) + \
+ ccan_check_type(var->member, struct ccan_list_node))
+
+#if defined(HAVE_TYPEOF) && HAVE_TYPEOF
+#define ccan_list_typeof(var) typeof(var)
+#else
+#define ccan_list_typeof(var) void *
+#endif
+
+/* Returns member, or NULL if at end of list. */
+static inline void *ccan_list_entry_or_null(const struct ccan_list_head *h,
+ const struct ccan_list_node *n,
+ size_t off)
+{
+ if (n == &h->n)
+ return NULL;
+ return (char *)n - off;
+}
+
+#endif /* CCAN_LIST_H */
diff --git a/ccan/str/str.h b/ccan/str/str.h
new file mode 100644
index 0000000000..6d4cf62423
--- /dev/null
+++ b/ccan/str/str.h
@@ -0,0 +1,17 @@
+/* CC0 (Public domain) - see ccan/licenses/CC0 file for details */
+#ifndef CCAN_STR_H
+#define CCAN_STR_H
+/**
+ * ccan_stringify - Turn expression into a string literal
+ * @expr: any C expression
+ *
+ * Example:
+ * #define PRINT_COND_IF_FALSE(cond) \
+ * ((cond) || printf("%s is false!", ccan_stringify(cond)))
+ */
+#define stringify(expr) ccan_stringify_1(expr)
+#define ccan_stringify(expr) ccan_stringify_1(expr)
+/* Double-indirection required to stringify expansions */
+#define ccan_stringify_1(expr) #expr
+
+#endif /* CCAN_STR_H */
diff --git a/class.c b/class.c
index 946474c69b..cf0b7b821f 100644
--- a/class.c
+++ b/class.c
@@ -3,690 +3,2599 @@
class.c -
$Author$
- $Date$
created at: Tue Aug 10 15:05:44 JST 1993
- Copyright (C) 1993-2000 Yukihiro Matsumoto
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
**********************************************************************/
-#include "ruby.h"
-#include "rubysig.h"
-#include "node.h"
-#include "st.h"
+/*!
+ * \addtogroup class
+ * \{
+ */
+
+#include "ruby/internal/config.h"
#include <ctype.h>
-extern st_table *rb_class_tbl;
+#include "constant.h"
+#include "debug_counter.h"
+#include "id_table.h"
+#include "internal.h"
+#include "internal/class.h"
+#include "internal/eval.h"
+#include "internal/hash.h"
+#include "internal/object.h"
+#include "internal/string.h"
+#include "internal/variable.h"
+#include "ruby/st.h"
+#include "vm_core.h"
+
+#define id_attached id__attached__
+
+#define METACLASS_OF(k) RBASIC(k)->klass
+#define SET_METACLASS_OF(k, cls) RBASIC_SET_CLASS(k, cls)
+
+RUBY_EXTERN rb_serial_t ruby_vm_global_cvar_state;
+
+static rb_subclass_entry_t *
+push_subclass_entry_to_list(VALUE super, VALUE klass)
+{
+ rb_subclass_entry_t *entry, *head;
+
+ entry = ZALLOC(rb_subclass_entry_t);
+ entry->klass = klass;
+
+ head = RCLASS_SUBCLASSES(super);
+ if (!head) {
+ head = ZALLOC(rb_subclass_entry_t);
+ RCLASS_SUBCLASSES(super) = head;
+ }
+ entry->next = head->next;
+ entry->prev = head;
+
+ if (head->next) {
+ head->next->prev = entry;
+ }
+ head->next = entry;
+
+ return entry;
+}
+
+void
+rb_class_subclass_add(VALUE super, VALUE klass)
+{
+ if (super && !UNDEF_P(super)) {
+ rb_subclass_entry_t *entry = push_subclass_entry_to_list(super, klass);
+ RCLASS_SUBCLASS_ENTRY(klass) = entry;
+ }
+}
+
+static void
+rb_module_add_to_subclasses_list(VALUE module, VALUE iclass)
+{
+ rb_subclass_entry_t *entry = push_subclass_entry_to_list(module, iclass);
+ RCLASS_MODULE_SUBCLASS_ENTRY(iclass) = entry;
+}
+
+void
+rb_class_remove_subclass_head(VALUE klass)
+{
+ rb_subclass_entry_t *head = RCLASS_SUBCLASSES(klass);
+
+ if (head) {
+ if (head->next) {
+ head->next->prev = NULL;
+ }
+ RCLASS_SUBCLASSES(klass) = NULL;
+ xfree(head);
+ }
+}
+
+void
+rb_class_remove_from_super_subclasses(VALUE klass)
+{
+ rb_subclass_entry_t *entry = RCLASS_SUBCLASS_ENTRY(klass);
+
+ if (entry) {
+ rb_subclass_entry_t *prev = entry->prev, *next = entry->next;
+
+ if (prev) {
+ prev->next = next;
+ }
+ if (next) {
+ next->prev = prev;
+ }
+
+ xfree(entry);
+ }
+
+ RCLASS_SUBCLASS_ENTRY(klass) = NULL;
+}
+
+void
+rb_class_remove_from_module_subclasses(VALUE klass)
+{
+ rb_subclass_entry_t *entry = RCLASS_MODULE_SUBCLASS_ENTRY(klass);
+
+ if (entry) {
+ rb_subclass_entry_t *prev = entry->prev, *next = entry->next;
+
+ if (prev) {
+ prev->next = next;
+ }
+ if (next) {
+ next->prev = prev;
+ }
+
+ xfree(entry);
+ }
+
+ RCLASS_MODULE_SUBCLASS_ENTRY(klass) = NULL;
+}
+
+void
+rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE arg)
+{
+ // RCLASS_SUBCLASSES should always point to our head element which has NULL klass
+ rb_subclass_entry_t *cur = RCLASS_SUBCLASSES(klass);
+ // if we have a subclasses list, then the head is a placeholder with no valid
+ // class. So ignore it and use the next element in the list (if one exists)
+ if (cur) {
+ RUBY_ASSERT(!cur->klass);
+ cur = cur->next;
+ }
+
+ /* do not be tempted to simplify this loop into a for loop, the order of
+ operations is important here if `f` modifies the linked list */
+ while (cur) {
+ VALUE curklass = cur->klass;
+ cur = cur->next;
+ // do not trigger GC during f, otherwise the cur will become
+ // a dangling pointer if the subclass is collected
+ f(curklass, arg);
+ }
+}
+
+static void
+class_detach_subclasses(VALUE klass, VALUE arg)
+{
+ rb_class_remove_from_super_subclasses(klass);
+}
+
+void
+rb_class_detach_subclasses(VALUE klass)
+{
+ rb_class_foreach_subclass(klass, class_detach_subclasses, Qnil);
+}
+
+static void
+class_detach_module_subclasses(VALUE klass, VALUE arg)
+{
+ rb_class_remove_from_module_subclasses(klass);
+}
+
+void
+rb_class_detach_module_subclasses(VALUE klass)
+{
+ rb_class_foreach_subclass(klass, class_detach_module_subclasses, Qnil);
+}
+
+/**
+ * Allocates a struct RClass for a new class.
+ *
+ * \param flags initial value for basic.flags of the returned class.
+ * \param klass the class of the returned class.
+ * \return an uninitialized Class object.
+ * \pre \p klass must refer \c Class class or an ancestor of Class.
+ * \pre \code (flags | T_CLASS) != 0 \endcode
+ * \post the returned class can safely be \c #initialize 'd.
+ *
+ * \note this function is not Class#allocate.
+ */
+static VALUE
+class_alloc(VALUE flags, VALUE klass)
+{
+ size_t alloc_size = sizeof(struct RClass);
+
+#if RCLASS_EXT_EMBEDDED
+ alloc_size += sizeof(rb_classext_t);
+#endif
+
+ flags &= T_MASK;
+ flags |= FL_PROMOTED1 /* start from age == 2 */;
+ if (RGENGC_WB_PROTECTED_CLASS) flags |= FL_WB_PROTECTED;
+ RVARGC_NEWOBJ_OF(obj, struct RClass, klass, flags, alloc_size);
+
+#if RCLASS_EXT_EMBEDDED
+ memset(RCLASS_EXT(obj), 0, sizeof(rb_classext_t));
+#else
+ obj->ptr = ZALLOC(rb_classext_t);
+#endif
+
+ /* ZALLOC
+ RCLASS_CONST_TBL(obj) = 0;
+ RCLASS_M_TBL(obj) = 0;
+ RCLASS_IV_INDEX_TBL(obj) = 0;
+ RCLASS_SET_SUPER((VALUE)obj, 0);
+ RCLASS_SUBCLASSES(obj) = NULL;
+ RCLASS_PARENT_SUBCLASSES(obj) = NULL;
+ RCLASS_MODULE_SUBCLASSES(obj) = NULL;
+ */
+ RCLASS_SET_ORIGIN((VALUE)obj, (VALUE)obj);
+ RB_OBJ_WRITE(obj, &RCLASS_REFINED_CLASS(obj), Qnil);
+ RCLASS_ALLOCATOR(obj) = 0;
+
+ return (VALUE)obj;
+}
+static void
+RCLASS_M_TBL_INIT(VALUE c)
+{
+ RCLASS_M_TBL(c) = rb_id_table_create(0);
+}
+
+/*!
+ * A utility function that wraps class_alloc.
+ *
+ * allocates a class and initializes safely.
+ * \param super a class from which the new class derives.
+ * \return a class object.
+ * \pre \a super must be a class.
+ * \post the metaclass of the new class is Class.
+ */
VALUE
-rb_class_new(super)
- VALUE super;
+rb_class_boot(VALUE super)
{
- NEWOBJ(klass, struct RClass);
- OBJSETUP(klass, rb_cClass, T_CLASS);
+ VALUE klass = class_alloc(T_CLASS, rb_cClass);
- klass->super = super;
- klass->iv_tbl = 0;
- klass->m_tbl = 0; /* safe GC */
- klass->m_tbl = st_init_numtable();
+ RCLASS_SET_SUPER(klass, super);
+ RCLASS_M_TBL_INIT(klass);
return (VALUE)klass;
}
+static VALUE *
+class_superclasses_including_self(VALUE klass)
+{
+ if (FL_TEST_RAW(klass, RCLASS_SUPERCLASSES_INCLUDE_SELF))
+ return RCLASS_SUPERCLASSES(klass);
+
+ size_t depth = RCLASS_SUPERCLASS_DEPTH(klass);
+ VALUE *superclasses = xmalloc(sizeof(VALUE) * (depth + 1));
+ if (depth > 0)
+ memcpy(superclasses, RCLASS_SUPERCLASSES(klass), sizeof(VALUE) * depth);
+ superclasses[depth] = klass;
+
+ RCLASS_SUPERCLASSES(klass) = superclasses;
+ FL_SET_RAW(klass, RCLASS_SUPERCLASSES_INCLUDE_SELF);
+ return superclasses;
+}
+
+void
+rb_class_update_superclasses(VALUE klass)
+{
+ VALUE super = RCLASS_SUPER(klass);
+
+ if (!RB_TYPE_P(klass, T_CLASS)) return;
+ if (UNDEF_P(super)) return;
+
+ // If the superclass array is already built
+ if (RCLASS_SUPERCLASSES(klass))
+ return;
+
+ // find the proper superclass
+ while (super != Qfalse && !RB_TYPE_P(super, T_CLASS)) {
+ super = RCLASS_SUPER(super);
+ }
+
+ // For BasicObject and uninitialized classes, depth=0 and ary=NULL
+ if (super == Qfalse)
+ return;
+
+ // Sometimes superclasses are set before the full ancestry tree is built
+ // This happens during metaclass construction
+ if (super != rb_cBasicObject && !RCLASS_SUPERCLASS_DEPTH(super)) {
+ rb_class_update_superclasses(super);
+
+ // If it is still unset we need to try later
+ if (!RCLASS_SUPERCLASS_DEPTH(super))
+ return;
+ }
+
+ RCLASS_SUPERCLASSES(klass) = class_superclasses_including_self(super);
+ RCLASS_SUPERCLASS_DEPTH(klass) = RCLASS_SUPERCLASS_DEPTH(super) + 1;
+}
+
+void
+rb_check_inheritable(VALUE super)
+{
+ if (!RB_TYPE_P(super, T_CLASS)) {
+ rb_raise(rb_eTypeError, "superclass must be an instance of Class (given an instance of %"PRIsVALUE")",
+ rb_obj_class(super));
+ }
+ if (RBASIC(super)->flags & FL_SINGLETON) {
+ rb_raise(rb_eTypeError, "can't make subclass of singleton class");
+ }
+ if (super == rb_cClass) {
+ rb_raise(rb_eTypeError, "can't make subclass of Class");
+ }
+}
+
VALUE
-rb_singleton_class_new(super)
- VALUE super;
+rb_class_new(VALUE super)
{
- VALUE klass = rb_class_new(super);
+ Check_Type(super, T_CLASS);
+ rb_check_inheritable(super);
+ VALUE klass = rb_class_boot(super);
+
+ if (super != rb_cObject && super != rb_cBasicObject) {
+ RCLASS_EXT(klass)->max_iv_count = RCLASS_EXT(super)->max_iv_count;
+ }
- FL_SET(klass, FL_SINGLETON);
return klass;
}
+VALUE
+rb_class_s_alloc(VALUE klass)
+{
+ return rb_class_boot(0);
+}
+
+static void
+clone_method(VALUE old_klass, VALUE new_klass, ID mid, const rb_method_entry_t *me)
+{
+ if (me->def->type == VM_METHOD_TYPE_ISEQ) {
+ rb_cref_t *new_cref;
+ rb_vm_rewrite_cref(me->def->body.iseq.cref, old_klass, new_klass, &new_cref);
+ rb_add_method_iseq(new_klass, mid, me->def->body.iseq.iseqptr, new_cref, METHOD_ENTRY_VISI(me));
+ }
+ else {
+ rb_method_entry_set(new_klass, mid, me, METHOD_ENTRY_VISI(me));
+ }
+}
+
+struct clone_method_arg {
+ VALUE new_klass;
+ VALUE old_klass;
+};
+
+static enum rb_id_table_iterator_result
+clone_method_i(ID key, VALUE value, void *data)
+{
+ const struct clone_method_arg *arg = (struct clone_method_arg *)data;
+ clone_method(arg->old_klass, arg->new_klass, key, (const rb_method_entry_t *)value);
+ return ID_TABLE_CONTINUE;
+}
+
+struct clone_const_arg {
+ VALUE klass;
+ struct rb_id_table *tbl;
+};
+
static int
-clone_method(mid, body, tbl)
- ID mid;
- NODE *body;
- st_table *tbl;
+clone_const(ID key, const rb_const_entry_t *ce, struct clone_const_arg *arg)
{
- st_insert(tbl, mid, NEW_METHOD(body->nd_body, body->nd_noex));
- return ST_CONTINUE;
+ rb_const_entry_t *nce = ALLOC(rb_const_entry_t);
+ MEMCPY(nce, ce, rb_const_entry_t, 1);
+ RB_OBJ_WRITTEN(arg->klass, Qundef, ce->value);
+ RB_OBJ_WRITTEN(arg->klass, Qundef, ce->file);
+
+ rb_id_table_insert(arg->tbl, key, (VALUE)nce);
+ return ID_TABLE_CONTINUE;
+}
+
+static enum rb_id_table_iterator_result
+clone_const_i(ID key, VALUE value, void *data)
+{
+ return clone_const(key, (const rb_const_entry_t *)value, data);
}
+static void
+class_init_copy_check(VALUE clone, VALUE orig)
+{
+ if (orig == rb_cBasicObject) {
+ rb_raise(rb_eTypeError, "can't copy the root class");
+ }
+ if (RCLASS_SUPER(clone) != 0 || clone == rb_cBasicObject) {
+ rb_raise(rb_eTypeError, "already initialized class");
+ }
+ if (FL_TEST(orig, FL_SINGLETON)) {
+ rb_raise(rb_eTypeError, "can't copy singleton class");
+ }
+}
+
+struct cvc_table_copy_ctx {
+ VALUE clone;
+ struct rb_id_table * new_table;
+};
+
+static enum rb_id_table_iterator_result
+cvc_table_copy(ID id, VALUE val, void *data) {
+ struct cvc_table_copy_ctx *ctx = (struct cvc_table_copy_ctx *)data;
+ struct rb_cvar_class_tbl_entry * orig_entry;
+ orig_entry = (struct rb_cvar_class_tbl_entry *)val;
+
+ struct rb_cvar_class_tbl_entry *ent;
+
+ ent = ALLOC(struct rb_cvar_class_tbl_entry);
+ ent->class_value = ctx->clone;
+ ent->cref = orig_entry->cref;
+ ent->global_cvar_state = orig_entry->global_cvar_state;
+ rb_id_table_insert(ctx->new_table, id, (VALUE)ent);
+
+ RB_OBJ_WRITTEN(ctx->clone, Qundef, ent->cref);
+
+ return ID_TABLE_CONTINUE;
+}
+
+static void
+copy_tables(VALUE clone, VALUE orig)
+{
+ if (RCLASS_CONST_TBL(clone)) {
+ rb_free_const_table(RCLASS_CONST_TBL(clone));
+ RCLASS_CONST_TBL(clone) = 0;
+ }
+ if (RCLASS_CVC_TBL(orig)) {
+ struct rb_id_table *rb_cvc_tbl = RCLASS_CVC_TBL(orig);
+ struct rb_id_table *rb_cvc_tbl_dup = rb_id_table_create(rb_id_table_size(rb_cvc_tbl));
+
+ struct cvc_table_copy_ctx ctx;
+ ctx.clone = clone;
+ ctx.new_table = rb_cvc_tbl_dup;
+ rb_id_table_foreach(rb_cvc_tbl, cvc_table_copy, &ctx);
+ RCLASS_CVC_TBL(clone) = rb_cvc_tbl_dup;
+ }
+ rb_id_table_free(RCLASS_M_TBL(clone));
+ RCLASS_M_TBL(clone) = 0;
+ if (!RB_TYPE_P(clone, T_ICLASS)) {
+ st_data_t id;
+
+ rb_iv_tbl_copy(clone, orig);
+ CONST_ID(id, "__tmp_classpath__");
+ rb_attr_delete(clone, id);
+ CONST_ID(id, "__classpath__");
+ rb_attr_delete(clone, id);
+ }
+ if (RCLASS_CONST_TBL(orig)) {
+ struct clone_const_arg arg;
+
+ arg.tbl = RCLASS_CONST_TBL(clone) = rb_id_table_create(0);
+ arg.klass = clone;
+ rb_id_table_foreach(RCLASS_CONST_TBL(orig), clone_const_i, &arg);
+ }
+}
+
+static bool ensure_origin(VALUE klass);
+
+/**
+ * If this flag is set, that module is allocated but not initialized yet.
+ */
+enum {RMODULE_ALLOCATED_BUT_NOT_INITIALIZED = RUBY_FL_USER5};
+
+static inline bool
+RMODULE_UNINITIALIZED(VALUE module)
+{
+ return FL_TEST_RAW(module, RMODULE_ALLOCATED_BUT_NOT_INITIALIZED);
+}
+
+void
+rb_module_set_initialized(VALUE mod)
+{
+ FL_UNSET_RAW(mod, RMODULE_ALLOCATED_BUT_NOT_INITIALIZED);
+ /* no more re-initialization */
+}
+
+void
+rb_module_check_initializable(VALUE mod)
+{
+ if (!RMODULE_UNINITIALIZED(mod)) {
+ rb_raise(rb_eTypeError, "already initialized module");
+ }
+}
+
+/* :nodoc: */
VALUE
-rb_singleton_class_clone(klass)
- VALUE klass;
+rb_mod_init_copy(VALUE clone, VALUE orig)
{
- if (!FL_TEST(klass, FL_SINGLETON))
- return klass;
+ switch (BUILTIN_TYPE(clone)) {
+ case T_CLASS:
+ case T_ICLASS:
+ class_init_copy_check(clone, orig);
+ break;
+ case T_MODULE:
+ rb_module_check_initializable(clone);
+ break;
+ default:
+ break;
+ }
+ if (!OBJ_INIT_COPY(clone, orig)) return clone;
+
+ /* cloned flag is refer at constant inline cache
+ * see vm_get_const_key_cref() in vm_insnhelper.c
+ */
+ FL_SET(clone, RCLASS_CLONED);
+ FL_SET(orig , RCLASS_CLONED);
+
+ if (!FL_TEST(CLASS_OF(clone), FL_SINGLETON)) {
+ RBASIC_SET_CLASS(clone, rb_singleton_class_clone(orig));
+ rb_singleton_class_attached(METACLASS_OF(clone), (VALUE)clone);
+ }
+ RCLASS_ALLOCATOR(clone) = RCLASS_ALLOCATOR(orig);
+ copy_tables(clone, orig);
+ if (RCLASS_M_TBL(orig)) {
+ struct clone_method_arg arg;
+ arg.old_klass = orig;
+ arg.new_klass = clone;
+ RCLASS_M_TBL_INIT(clone);
+ rb_id_table_foreach(RCLASS_M_TBL(orig), clone_method_i, &arg);
+ }
+
+ if (RCLASS_ORIGIN(orig) == orig) {
+ RCLASS_SET_SUPER(clone, RCLASS_SUPER(orig));
+ }
else {
- /* copy singleton(unnamed) class */
- NEWOBJ(clone, struct RClass);
- CLONESETUP(clone, klass);
+ VALUE p = RCLASS_SUPER(orig);
+ VALUE orig_origin = RCLASS_ORIGIN(orig);
+ VALUE prev_clone_p = clone;
+ VALUE origin_stack = rb_ary_hidden_new(2);
+ VALUE origin[2];
+ VALUE clone_p = 0;
+ long origin_len;
+ int add_subclass;
+ VALUE clone_origin;
+
+ ensure_origin(clone);
+ clone_origin = RCLASS_ORIGIN(clone);
+
+ while (p && p != orig_origin) {
+ if (BUILTIN_TYPE(p) != T_ICLASS) {
+ rb_bug("non iclass between module/class and origin");
+ }
+ clone_p = class_alloc(RBASIC(p)->flags, METACLASS_OF(p));
+ RCLASS_SET_SUPER(prev_clone_p, clone_p);
+ prev_clone_p = clone_p;
+ RCLASS_M_TBL(clone_p) = RCLASS_M_TBL(p);
+ RCLASS_CONST_TBL(clone_p) = RCLASS_CONST_TBL(p);
+ RCLASS_ALLOCATOR(clone_p) = RCLASS_ALLOCATOR(p);
+ if (RB_TYPE_P(clone, T_CLASS)) {
+ RCLASS_SET_INCLUDER(clone_p, clone);
+ }
+ add_subclass = TRUE;
+ if (p != RCLASS_ORIGIN(p)) {
+ origin[0] = clone_p;
+ origin[1] = RCLASS_ORIGIN(p);
+ rb_ary_cat(origin_stack, origin, 2);
+ }
+ else if ((origin_len = RARRAY_LEN(origin_stack)) > 1 &&
+ RARRAY_AREF(origin_stack, origin_len - 1) == p) {
+ RCLASS_SET_ORIGIN(RARRAY_AREF(origin_stack, (origin_len -= 2)), clone_p);
+ RICLASS_SET_ORIGIN_SHARED_MTBL(clone_p);
+ rb_ary_resize(origin_stack, origin_len);
+ add_subclass = FALSE;
+ }
+ if (add_subclass) {
+ rb_module_add_to_subclasses_list(METACLASS_OF(p), clone_p);
+ }
+ p = RCLASS_SUPER(p);
+ }
+
+ if (p == orig_origin) {
+ if (clone_p) {
+ RCLASS_SET_SUPER(clone_p, clone_origin);
+ RCLASS_SET_SUPER(clone_origin, RCLASS_SUPER(orig_origin));
+ }
+ copy_tables(clone_origin, orig_origin);
+ if (RCLASS_M_TBL(orig_origin)) {
+ struct clone_method_arg arg;
+ arg.old_klass = orig;
+ arg.new_klass = clone;
+ RCLASS_M_TBL_INIT(clone_origin);
+ rb_id_table_foreach(RCLASS_M_TBL(orig_origin), clone_method_i, &arg);
+ }
+ }
+ else {
+ rb_bug("no origin for class that has origin");
+ }
+
+ rb_class_update_superclasses(clone);
+ }
- clone->super = RCLASS(klass)->super;
- clone->iv_tbl = 0;
- clone->m_tbl = 0;
- clone->m_tbl = st_init_numtable();
- st_foreach(RCLASS(klass)->m_tbl, clone_method, clone->m_tbl);
- FL_SET(clone, FL_SINGLETON);
- return (VALUE)clone;
+ return clone;
+}
+
+VALUE
+rb_singleton_class_clone(VALUE obj)
+{
+ return rb_singleton_class_clone_and_attach(obj, Qundef);
+}
+
+// Clone and return the singleton class of `obj` if it has been created and is attached to `obj`.
+VALUE
+rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)
+{
+ const VALUE klass = METACLASS_OF(obj);
+
+ // Note that `rb_singleton_class()` can create situations where `klass` is
+ // attached to an object other than `obj`. In which case `obj` does not have
+ // a material singleton class attached yet and there is no singleton class
+ // to clone.
+ if (!(FL_TEST(klass, FL_SINGLETON) && rb_attr_get(klass, id_attached) == obj)) {
+ // nothing to clone
+ return klass;
+ }
+ else {
+ /* copy singleton(unnamed) class */
+ bool klass_of_clone_is_new;
+ VALUE clone = class_alloc(RBASIC(klass)->flags, 0);
+
+ if (BUILTIN_TYPE(obj) == T_CLASS) {
+ klass_of_clone_is_new = true;
+ RBASIC_SET_CLASS(clone, clone);
+ }
+ else {
+ VALUE klass_metaclass_clone = rb_singleton_class_clone(klass);
+ // When `METACLASS_OF(klass) == klass_metaclass_clone`, it means the
+ // recursive call did not clone `METACLASS_OF(klass)`.
+ klass_of_clone_is_new = (METACLASS_OF(klass) != klass_metaclass_clone);
+ RBASIC_SET_CLASS(clone, klass_metaclass_clone);
+ }
+
+ RCLASS_SET_SUPER(clone, RCLASS_SUPER(klass));
+ RCLASS_ALLOCATOR(clone) = RCLASS_ALLOCATOR(klass);
+ rb_iv_tbl_copy(clone, klass);
+ if (RCLASS_CONST_TBL(klass)) {
+ struct clone_const_arg arg;
+ arg.tbl = RCLASS_CONST_TBL(clone) = rb_id_table_create(0);
+ arg.klass = clone;
+ rb_id_table_foreach(RCLASS_CONST_TBL(klass), clone_const_i, &arg);
+ }
+ if (!UNDEF_P(attach)) {
+ rb_singleton_class_attached(clone, attach);
+ }
+ RCLASS_M_TBL_INIT(clone);
+ {
+ struct clone_method_arg arg;
+ arg.old_klass = klass;
+ arg.new_klass = clone;
+ rb_id_table_foreach(RCLASS_M_TBL(klass), clone_method_i, &arg);
+ }
+ if (klass_of_clone_is_new) {
+ rb_singleton_class_attached(METACLASS_OF(clone), clone);
+ }
+ FL_SET(clone, FL_SINGLETON);
+
+ return clone;
}
}
void
-rb_singleton_class_attached(klass, obj)
- VALUE klass, obj;
+rb_singleton_class_attached(VALUE klass, VALUE obj)
{
- if (FL_TEST(klass, FL_SINGLETON))
- rb_iv_set(klass, "__attached__", obj);
+ if (FL_TEST(klass, FL_SINGLETON)) {
+ rb_class_ivar_set(klass, id_attached, obj);
+ }
}
-VALUE
-rb_define_class_id(id, super)
- ID id;
+/*!
+ * whether k is a meta^(n)-class of Class class
+ * @retval 1 if \a k is a meta^(n)-class of Class class (n >= 0)
+ * @retval 0 otherwise
+ */
+#define META_CLASS_OF_CLASS_CLASS_P(k) (METACLASS_OF(k) == (k))
+
+static int
+rb_singleton_class_has_metaclass_p(VALUE sklass)
+{
+ return rb_attr_get(METACLASS_OF(sklass), id_attached) == sklass;
+}
+
+int
+rb_singleton_class_internal_p(VALUE sklass)
+{
+ return (RB_TYPE_P(rb_attr_get(sklass, id_attached), T_CLASS) &&
+ !rb_singleton_class_has_metaclass_p(sklass));
+}
+
+/*!
+ * whether k has a metaclass
+ * @retval 1 if \a k has a metaclass
+ * @retval 0 otherwise
+ */
+#define HAVE_METACLASS_P(k) \
+ (FL_TEST(METACLASS_OF(k), FL_SINGLETON) && \
+ rb_singleton_class_has_metaclass_p(k))
+
+/*!
+ * ensures \a klass belongs to its own eigenclass.
+ * @return the eigenclass of \a klass
+ * @post \a klass belongs to the returned eigenclass.
+ * i.e. the attached object of the eigenclass is \a klass.
+ * @note this macro creates a new eigenclass if necessary.
+ */
+#define ENSURE_EIGENCLASS(klass) \
+ (HAVE_METACLASS_P(klass) ? METACLASS_OF(klass) : make_metaclass(klass))
+
+
+/*!
+ * Creates a metaclass of \a klass
+ * \param klass a class
+ * \return created metaclass for the class
+ * \pre \a klass is a Class object
+ * \pre \a klass has no singleton class.
+ * \post the class of \a klass is the returned class.
+ * \post the returned class is meta^(n+1)-class when \a klass is a meta^(n)-klass for n >= 0
+ */
+static inline VALUE
+make_metaclass(VALUE klass)
+{
VALUE super;
+ VALUE metaclass = rb_class_boot(Qundef);
+
+ FL_SET(metaclass, FL_SINGLETON);
+ rb_singleton_class_attached(metaclass, klass);
+
+ if (META_CLASS_OF_CLASS_CLASS_P(klass)) {
+ SET_METACLASS_OF(klass, metaclass);
+ SET_METACLASS_OF(metaclass, metaclass);
+ }
+ else {
+ VALUE tmp = METACLASS_OF(klass); /* for a meta^(n)-class klass, tmp is meta^(n)-class of Class class */
+ SET_METACLASS_OF(klass, metaclass);
+ SET_METACLASS_OF(metaclass, ENSURE_EIGENCLASS(tmp));
+ }
+
+ super = RCLASS_SUPER(klass);
+ while (RB_TYPE_P(super, T_ICLASS)) super = RCLASS_SUPER(super);
+ RCLASS_SET_SUPER(metaclass, super ? ENSURE_EIGENCLASS(super) : rb_cClass);
+
+ // Full class ancestry may not have been filled until we reach here.
+ rb_class_update_superclasses(METACLASS_OF(metaclass));
+
+ return metaclass;
+}
+
+/*!
+ * Creates a singleton class for \a obj.
+ * \pre \a obj must not a immediate nor a special const.
+ * \pre \a obj must not a Class object.
+ * \pre \a obj has no singleton class.
+ */
+static inline VALUE
+make_singleton_class(VALUE obj)
+{
+ VALUE orig_class = METACLASS_OF(obj);
+ VALUE klass = rb_class_boot(orig_class);
+
+ FL_SET(klass, FL_SINGLETON);
+ RBASIC_SET_CLASS(obj, klass);
+ rb_singleton_class_attached(klass, obj);
+
+ SET_METACLASS_OF(klass, METACLASS_OF(rb_class_real(orig_class)));
+ return klass;
+}
+
+
+static VALUE
+boot_defclass(const char *name, VALUE super)
+{
+ VALUE obj = rb_class_boot(super);
+ ID id = rb_intern(name);
+
+ rb_const_set((rb_cObject ? rb_cObject : obj), id, obj);
+ rb_vm_add_root_module(obj);
+ return obj;
+}
+
+/***********************************************************************
+ *
+ * Document-class: Refinement
+ *
+ * Refinement is a class of the +self+ (current context) inside +refine+
+ * statement. It allows to import methods from other modules, see #import_methods.
+ */
+
+#if 0 /* for RDoc */
+/*
+ * Document-method: Refinement#import_methods
+ *
+ * call-seq:
+ * import_methods(module, ...) -> self
+ *
+ * Imports methods from modules. Unlike Module#include,
+ * Refinement#import_methods copies methods and adds them into the refinement,
+ * so the refinement is activated in the imported methods.
+ *
+ * Note that due to method copying, only methods defined in Ruby code can be imported.
+ *
+ * module StrUtils
+ * def indent(level)
+ * ' ' * level + self
+ * end
+ * end
+ *
+ * module M
+ * refine String do
+ * import_methods StrUtils
+ * end
+ * end
+ *
+ * using M
+ * "foo".indent(3)
+ * #=> " foo"
+ *
+ * module M
+ * refine String do
+ * import_methods Enumerable
+ * # Can't import method which is not defined with Ruby code: Enumerable#drop
+ * end
+ * end
+ *
+ */
+
+static VALUE
+refinement_import_methods(int argc, VALUE *argv, VALUE refinement)
+{
+}
+# endif
+
+void
+Init_class_hierarchy(void)
+{
+ rb_cBasicObject = boot_defclass("BasicObject", 0);
+ rb_cObject = boot_defclass("Object", rb_cBasicObject);
+ rb_gc_register_mark_object(rb_cObject);
+
+ /* resolve class name ASAP for order-independence */
+ rb_set_class_path_string(rb_cObject, rb_cObject, rb_fstring_lit("Object"));
+
+ rb_cModule = boot_defclass("Module", rb_cObject);
+ rb_cClass = boot_defclass("Class", rb_cModule);
+ rb_cRefinement = boot_defclass("Refinement", rb_cModule);
+
+#if 0 /* for RDoc */
+ // we pretend it to be public, otherwise RDoc will ignore it
+ rb_define_method(rb_cRefinement, "import_methods", refinement_import_methods, -1);
+#endif
+
+ rb_const_set(rb_cObject, rb_intern_const("BasicObject"), rb_cBasicObject);
+ RBASIC_SET_CLASS(rb_cClass, rb_cClass);
+ RBASIC_SET_CLASS(rb_cModule, rb_cClass);
+ RBASIC_SET_CLASS(rb_cObject, rb_cClass);
+ RBASIC_SET_CLASS(rb_cRefinement, rb_cClass);
+ RBASIC_SET_CLASS(rb_cBasicObject, rb_cClass);
+
+ ENSURE_EIGENCLASS(rb_cRefinement);
+}
+
+
+/*!
+ * \internal
+ * Creates a new *singleton class* for an object.
+ *
+ * \pre \a obj has no singleton class.
+ * \note DO NOT USE the function in an extension libraries. Use \ref rb_singleton_class.
+ * \param obj An object.
+ * \param unused ignored.
+ * \return The singleton class of the object.
+ */
+VALUE
+rb_make_metaclass(VALUE obj, VALUE unused)
+{
+ if (BUILTIN_TYPE(obj) == T_CLASS) {
+ return make_metaclass(obj);
+ }
+ else {
+ return make_singleton_class(obj);
+ }
+}
+
+VALUE
+rb_define_class_id(ID id, VALUE super)
{
VALUE klass;
if (!super) super = rb_cObject;
klass = rb_class_new(super);
- rb_name_class(klass, id);
- /* make metaclass */
- RBASIC(klass)->klass = rb_singleton_class_new(RBASIC(super)->klass);
- rb_singleton_class_attached(RBASIC(klass)->klass, klass);
- rb_funcall(super, rb_intern("inherited"), 1, klass);
+ rb_make_metaclass(klass, METACLASS_OF(super));
return klass;
}
+
+/*!
+ * Calls Class#inherited.
+ * \param super A class which will be called #inherited.
+ * NULL means Object class.
+ * \param klass A Class object which derived from \a super
+ * \return the value \c Class#inherited's returns
+ * \pre Each of \a super and \a klass must be a \c Class object.
+ */
+MJIT_FUNC_EXPORTED VALUE
+rb_class_inherited(VALUE super, VALUE klass)
+{
+ ID inherited;
+ if (!super) super = rb_cObject;
+ CONST_ID(inherited, "inherited");
+ return rb_funcall(super, inherited, 1, klass);
+}
+
VALUE
-rb_define_class(name, super)
- const char *name;
- VALUE super;
+rb_define_class(const char *name, VALUE super)
{
VALUE klass;
ID id;
id = rb_intern(name);
+ if (rb_const_defined(rb_cObject, id)) {
+ klass = rb_const_get(rb_cObject, id);
+ if (!RB_TYPE_P(klass, T_CLASS)) {
+ rb_raise(rb_eTypeError, "%s is not a class (%"PRIsVALUE")",
+ name, rb_obj_class(klass));
+ }
+ if (rb_class_real(RCLASS_SUPER(klass)) != super) {
+ rb_raise(rb_eTypeError, "superclass mismatch for class %s", name);
+ }
+
+ /* Class may have been defined in Ruby and not pin-rooted */
+ rb_vm_add_root_module(klass);
+ return klass;
+ }
+ if (!super) {
+ rb_raise(rb_eArgError, "no super class for `%s'", name);
+ }
klass = rb_define_class_id(id, super);
-
- st_add_direct(rb_class_tbl, id, klass);
+ rb_vm_add_root_module(klass);
+ rb_const_set(rb_cObject, id, klass);
+ rb_class_inherited(super, klass);
return klass;
}
VALUE
-rb_define_class_under(outer, name, super)
- VALUE outer;
- const char *name;
- VALUE super;
+rb_define_class_under(VALUE outer, const char *name, VALUE super)
+{
+ return rb_define_class_id_under(outer, rb_intern(name), super);
+}
+
+VALUE
+rb_define_class_id_under_no_pin(VALUE outer, ID id, VALUE super)
{
VALUE klass;
- ID id;
- id = rb_intern(name);
+ if (rb_const_defined_at(outer, id)) {
+ klass = rb_const_get_at(outer, id);
+ if (!RB_TYPE_P(klass, T_CLASS)) {
+ rb_raise(rb_eTypeError, "%"PRIsVALUE"::%"PRIsVALUE" is not a class"
+ " (%"PRIsVALUE")",
+ outer, rb_id2str(id), rb_obj_class(klass));
+ }
+ if (rb_class_real(RCLASS_SUPER(klass)) != super) {
+ rb_raise(rb_eTypeError, "superclass mismatch for class "
+ "%"PRIsVALUE"::%"PRIsVALUE""
+ " (%"PRIsVALUE" is given but was %"PRIsVALUE")",
+ outer, rb_id2str(id), RCLASS_SUPER(klass), super);
+ }
+
+ return klass;
+ }
+ if (!super) {
+ rb_raise(rb_eArgError, "no super class for `%"PRIsVALUE"::%"PRIsVALUE"'",
+ rb_class_path(outer), rb_id2str(id));
+ }
klass = rb_define_class_id(id, super);
+ rb_set_class_path_string(klass, outer, rb_id2str(id));
rb_const_set(outer, id, klass);
- rb_set_class_path(klass, outer, name);
+ rb_class_inherited(super, klass);
return klass;
}
VALUE
-rb_module_new()
+rb_define_class_id_under(VALUE outer, ID id, VALUE super)
{
- NEWOBJ(mdl, struct RClass);
- OBJSETUP(mdl, rb_cModule, T_MODULE);
+ VALUE klass = rb_define_class_id_under_no_pin(outer, id, super);
+ rb_vm_add_root_module(klass);
+ return klass;
+}
- mdl->super = 0;
- mdl->iv_tbl = 0;
- mdl->m_tbl = 0;
- mdl->m_tbl = st_init_numtable();
+VALUE
+rb_module_s_alloc(VALUE klass)
+{
+ VALUE mod = class_alloc(T_MODULE, klass);
+ RCLASS_M_TBL_INIT(mod);
+ FL_SET(mod, RMODULE_ALLOCATED_BUT_NOT_INITIALIZED);
+ return mod;
+}
+static inline VALUE
+module_new(VALUE klass)
+{
+ VALUE mdl = class_alloc(T_MODULE, klass);
+ RCLASS_M_TBL_INIT(mdl);
return (VALUE)mdl;
}
VALUE
-rb_define_module_id(id)
- ID id;
+rb_module_new(void)
{
- VALUE mdl;
+ return module_new(rb_cModule);
+}
- mdl = rb_module_new();
- rb_name_class(mdl, id);
+VALUE
+rb_refinement_new(void)
+{
+ return module_new(rb_cRefinement);
+}
- return mdl;
+// Kept for compatibility. Use rb_module_new() instead.
+VALUE
+rb_define_module_id(ID id)
+{
+ return rb_module_new();
}
VALUE
-rb_define_module(name)
- const char *name;
+rb_define_module(const char *name)
{
VALUE module;
ID id;
id = rb_intern(name);
- module = rb_define_module_id(id);
- st_add_direct(rb_class_tbl, id, module);
+ if (rb_const_defined(rb_cObject, id)) {
+ module = rb_const_get(rb_cObject, id);
+ if (!RB_TYPE_P(module, T_MODULE)) {
+ rb_raise(rb_eTypeError, "%s is not a module (%"PRIsVALUE")",
+ name, rb_obj_class(module));
+ }
+ /* Module may have been defined in Ruby and not pin-rooted */
+ rb_vm_add_root_module(module);
+ return module;
+ }
+ module = rb_module_new();
+ rb_vm_add_root_module(module);
+ rb_const_set(rb_cObject, id, module);
return module;
}
VALUE
-rb_define_module_under(outer, name)
- VALUE outer;
- const char *name;
+rb_define_module_under(VALUE outer, const char *name)
+{
+ return rb_define_module_id_under(outer, rb_intern(name));
+}
+
+VALUE
+rb_define_module_id_under(VALUE outer, ID id)
{
VALUE module;
- ID id;
- id = rb_intern(name);
- module = rb_define_module_id(id);
+ if (rb_const_defined_at(outer, id)) {
+ module = rb_const_get_at(outer, id);
+ if (!RB_TYPE_P(module, T_MODULE)) {
+ rb_raise(rb_eTypeError, "%"PRIsVALUE"::%"PRIsVALUE" is not a module"
+ " (%"PRIsVALUE")",
+ outer, rb_id2str(id), rb_obj_class(module));
+ }
+ /* Module may have been defined in Ruby and not pin-rooted */
+ rb_gc_register_mark_object(module);
+ return module;
+ }
+ module = rb_module_new();
rb_const_set(outer, id, module);
- rb_set_class_path(module, outer, name);
+ rb_set_class_path_string(module, outer, rb_id2str(id));
+ rb_gc_register_mark_object(module);
return module;
}
-static VALUE
-include_class_new(module, super)
- VALUE module, super;
+VALUE
+rb_include_class_new(VALUE module, VALUE super)
{
- NEWOBJ(klass, struct RClass);
- OBJSETUP(klass, rb_cClass, T_ICLASS);
+ VALUE klass = class_alloc(T_ICLASS, rb_cClass);
- if (!RCLASS(module)->iv_tbl) {
- RCLASS(module)->iv_tbl = st_init_numtable();
- }
- klass->iv_tbl = RCLASS(module)->iv_tbl;
- klass->m_tbl = RCLASS(module)->m_tbl;
- klass->super = super;
- if (TYPE(module) == T_ICLASS) {
- RBASIC(klass)->klass = RBASIC(module)->klass;
+ RCLASS_M_TBL(klass) = RCLASS_M_TBL(module);
+
+ RCLASS_SET_ORIGIN(klass, klass);
+ if (BUILTIN_TYPE(module) == T_ICLASS) {
+ module = METACLASS_OF(module);
}
- else {
- RBASIC(klass)->klass = module;
+ RUBY_ASSERT(!RB_TYPE_P(module, T_ICLASS));
+ if (!RCLASS_CONST_TBL(module)) {
+ RCLASS_CONST_TBL(module) = rb_id_table_create(0);
}
+ RCLASS_CVC_TBL(klass) = RCLASS_CVC_TBL(module);
+ RCLASS_CONST_TBL(klass) = RCLASS_CONST_TBL(module);
+
+ RCLASS_SET_SUPER(klass, super);
+ RBASIC_SET_CLASS(klass, module);
+
return (VALUE)klass;
}
+static int include_modules_at(const VALUE klass, VALUE c, VALUE module, int search_super);
+
+static void
+ensure_includable(VALUE klass, VALUE module)
+{
+ rb_class_modify_check(klass);
+ Check_Type(module, T_MODULE);
+ rb_module_set_initialized(module);
+ if (!NIL_P(rb_refinement_module_get_refined_class(module))) {
+ rb_raise(rb_eArgError, "refinement module is not allowed");
+ }
+}
+
void
-rb_include_module(klass, module)
- VALUE klass, module;
+rb_include_module(VALUE klass, VALUE module)
{
- VALUE p;
+ int changed = 0;
+
+ ensure_includable(klass, module);
+
+ changed = include_modules_at(klass, RCLASS_ORIGIN(klass), module, TRUE);
+ if (changed < 0)
+ rb_raise(rb_eArgError, "cyclic include detected");
+
+ if (RB_TYPE_P(klass, T_MODULE)) {
+ rb_subclass_entry_t *iclass = RCLASS_SUBCLASSES(klass);
+ // skip the placeholder subclass entry at the head of the list
+ if (iclass) {
+ RUBY_ASSERT(!iclass->klass);
+ iclass = iclass->next;
+ }
+
+ while (iclass) {
+ int do_include = 1;
+ VALUE check_class = iclass->klass;
+ /* During lazy sweeping, iclass->klass could be a dead object that
+ * has not yet been swept. */
+ if (!rb_objspace_garbage_object_p(check_class)) {
+ while (check_class) {
+ RUBY_ASSERT(!rb_objspace_garbage_object_p(check_class));
+
+ if (RB_TYPE_P(check_class, T_ICLASS) &&
+ (METACLASS_OF(check_class) == module)) {
+ do_include = 0;
+ }
+ check_class = RCLASS_SUPER(check_class);
+ }
+
+ if (do_include) {
+ include_modules_at(iclass->klass, RCLASS_ORIGIN(iclass->klass), module, TRUE);
+ }
+ }
+
+ iclass = iclass->next;
+ }
+ }
+}
- if (NIL_P(module)) return;
- if (klass == module) return;
+static enum rb_id_table_iterator_result
+add_refined_method_entry_i(ID key, VALUE value, void *data)
+{
+ rb_add_refined_method_entry((VALUE)data, key);
+ return ID_TABLE_CONTINUE;
+}
- switch (TYPE(module)) {
- case T_MODULE:
- case T_CLASS:
- case T_ICLASS:
- break;
- default:
- Check_Type(module, T_MODULE);
+static enum rb_id_table_iterator_result
+clear_module_cache_i(ID id, VALUE val, void *data)
+{
+ VALUE klass = (VALUE)data;
+ rb_clear_method_cache(klass, id);
+ return ID_TABLE_CONTINUE;
+}
+
+static bool
+module_in_super_chain(const VALUE klass, VALUE module)
+{
+ struct rb_id_table *const klass_m_tbl = RCLASS_M_TBL(RCLASS_ORIGIN(klass));
+ if (klass_m_tbl) {
+ while (module) {
+ if (klass_m_tbl == RCLASS_M_TBL(module))
+ return true;
+ module = RCLASS_SUPER(module);
+ }
}
+ return false;
+}
+
+// For each ID key in the class constant table, we're going to clear the VM's
+// inline constant caches associated with it.
+static enum rb_id_table_iterator_result
+clear_constant_cache_i(ID id, VALUE value, void *data)
+{
+ rb_clear_constant_cache_for_id(id);
+ return ID_TABLE_CONTINUE;
+}
+
+static int
+do_include_modules_at(const VALUE klass, VALUE c, VALUE module, int search_super, bool check_cyclic)
+{
+ VALUE p, iclass, origin_stack = 0;
+ int method_changed = 0;
+ long origin_len;
+ VALUE klass_origin = RCLASS_ORIGIN(klass);
+ VALUE original_klass = klass;
+
+ if (check_cyclic && module_in_super_chain(klass, module))
+ return -1;
while (module) {
- /* ignore if the module included already in superclasses */
- for (p = RCLASS(klass)->super; p; p = RCLASS(p)->super) {
- if (BUILTIN_TYPE(p) == T_ICLASS &&
- RCLASS(p)->m_tbl == RCLASS(module)->m_tbl) {
- if (RCLASS(module)->super) {
- rb_include_module(p, RCLASS(module)->super);
- }
- return;
- }
- }
- RCLASS(klass)->super =
- include_class_new(module, RCLASS(klass)->super);
- klass = RCLASS(klass)->super;
- module = RCLASS(module)->super;
+ int c_seen = FALSE;
+ int superclass_seen = FALSE;
+ struct rb_id_table *tbl;
+
+ if (klass == c) {
+ c_seen = TRUE;
+ }
+ if (klass_origin != c || search_super) {
+ /* ignore if the module included already in superclasses for include,
+ * ignore if the module included before origin class for prepend
+ */
+ for (p = RCLASS_SUPER(klass); p; p = RCLASS_SUPER(p)) {
+ int type = BUILTIN_TYPE(p);
+ if (klass_origin == p && !search_super)
+ break;
+ if (c == p)
+ c_seen = TRUE;
+ if (type == T_ICLASS) {
+ if (RCLASS_M_TBL(p) == RCLASS_M_TBL(module)) {
+ if (!superclass_seen && c_seen) {
+ c = p; /* move insertion point */
+ }
+ goto skip;
+ }
+ }
+ else if (type == T_CLASS) {
+ superclass_seen = TRUE;
+ }
+ }
+ }
+
+ VALUE super_class = RCLASS_SUPER(c);
+
+ // invalidate inline method cache
+ RB_DEBUG_COUNTER_INC(cvar_include_invalidate);
+ ruby_vm_global_cvar_state++;
+ tbl = RCLASS_M_TBL(module);
+ if (tbl && rb_id_table_size(tbl)) {
+ if (search_super) { // include
+ if (super_class && !RB_TYPE_P(super_class, T_MODULE)) {
+ rb_id_table_foreach(tbl, clear_module_cache_i, (void *)super_class);
+ }
+ }
+ else { // prepend
+ if (!RB_TYPE_P(original_klass, T_MODULE)) {
+ rb_id_table_foreach(tbl, clear_module_cache_i, (void *)original_klass);
+ }
+ }
+ method_changed = 1;
+ }
+
+ // setup T_ICLASS for the include/prepend module
+ iclass = rb_include_class_new(module, super_class);
+ c = RCLASS_SET_SUPER(c, iclass);
+ RCLASS_SET_INCLUDER(iclass, klass);
+ if (module != RCLASS_ORIGIN(module)) {
+ if (!origin_stack) origin_stack = rb_ary_hidden_new(2);
+ VALUE origin[2] = {iclass, RCLASS_ORIGIN(module)};
+ rb_ary_cat(origin_stack, origin, 2);
+ }
+ else if (origin_stack && (origin_len = RARRAY_LEN(origin_stack)) > 1 &&
+ RARRAY_AREF(origin_stack, origin_len - 1) == module) {
+ RCLASS_SET_ORIGIN(RARRAY_AREF(origin_stack, (origin_len -= 2)), iclass);
+ RICLASS_SET_ORIGIN_SHARED_MTBL(iclass);
+ rb_ary_resize(origin_stack, origin_len);
+ }
+
+ VALUE m = module;
+ if (BUILTIN_TYPE(m) == T_ICLASS) m = METACLASS_OF(m);
+ rb_module_add_to_subclasses_list(m, iclass);
+
+ if (BUILTIN_TYPE(klass) == T_MODULE && FL_TEST(klass, RMODULE_IS_REFINEMENT)) {
+ VALUE refined_class =
+ rb_refinement_module_get_refined_class(klass);
+
+ rb_id_table_foreach(RCLASS_M_TBL(module), add_refined_method_entry_i, (void *)refined_class);
+ RUBY_ASSERT(BUILTIN_TYPE(c) == T_MODULE);
+ }
+
+ tbl = RCLASS_CONST_TBL(module);
+ if (tbl && rb_id_table_size(tbl))
+ rb_id_table_foreach(tbl, clear_constant_cache_i, NULL);
+ skip:
+ module = RCLASS_SUPER(module);
}
- rb_clear_cache();
+
+ return method_changed;
+}
+
+static int
+include_modules_at(const VALUE klass, VALUE c, VALUE module, int search_super)
+{
+ return do_include_modules_at(klass, c, module, search_super, true);
}
+static enum rb_id_table_iterator_result
+move_refined_method(ID key, VALUE value, void *data)
+{
+ rb_method_entry_t *me = (rb_method_entry_t *)value;
+
+ if (me->def->type == VM_METHOD_TYPE_REFINED) {
+ VALUE klass = (VALUE)data;
+ struct rb_id_table *tbl = RCLASS_M_TBL(klass);
+
+ if (me->def->body.refined.orig_me) {
+ const rb_method_entry_t *orig_me = me->def->body.refined.orig_me, *new_me;
+ RB_OBJ_WRITE(me, &me->def->body.refined.orig_me, NULL);
+ new_me = rb_method_entry_clone(me);
+ rb_method_table_insert(klass, tbl, key, new_me);
+ rb_method_entry_copy(me, orig_me);
+ return ID_TABLE_CONTINUE;
+ }
+ else {
+ rb_method_table_insert(klass, tbl, key, me);
+ return ID_TABLE_DELETE;
+ }
+ }
+ else {
+ return ID_TABLE_CONTINUE;
+ }
+}
+
+static enum rb_id_table_iterator_result
+cache_clear_refined_method(ID key, VALUE value, void *data)
+{
+ rb_method_entry_t *me = (rb_method_entry_t *) value;
+
+ if (me->def->type == VM_METHOD_TYPE_REFINED && me->def->body.refined.orig_me) {
+ VALUE klass = (VALUE)data;
+ rb_clear_method_cache(klass, me->called_id);
+ }
+ // Refined method entries without an orig_me is going to stay in the method
+ // table of klass, like before the move, so no need to clear the cache.
+
+ return ID_TABLE_CONTINUE;
+}
+
+static bool
+ensure_origin(VALUE klass)
+{
+ VALUE origin = RCLASS_ORIGIN(klass);
+ if (origin == klass) {
+ origin = class_alloc(T_ICLASS, klass);
+ RCLASS_SET_SUPER(origin, RCLASS_SUPER(klass));
+ RCLASS_SET_SUPER(klass, origin);
+ RCLASS_SET_ORIGIN(klass, origin);
+ RCLASS_M_TBL(origin) = RCLASS_M_TBL(klass);
+ RCLASS_M_TBL_INIT(klass);
+ rb_id_table_foreach(RCLASS_M_TBL(origin), cache_clear_refined_method, (void *)klass);
+ rb_id_table_foreach(RCLASS_M_TBL(origin), move_refined_method, (void *)klass);
+ return true;
+ }
+ return false;
+}
+
+void
+rb_prepend_module(VALUE klass, VALUE module)
+{
+ int changed;
+ bool klass_had_no_origin;
+
+ ensure_includable(klass, module);
+ if (module_in_super_chain(klass, module))
+ rb_raise(rb_eArgError, "cyclic prepend detected");
+
+ klass_had_no_origin = ensure_origin(klass);
+ changed = do_include_modules_at(klass, klass, module, FALSE, false);
+ RUBY_ASSERT(changed >= 0); // already checked for cyclic prepend above
+ if (changed) {
+ rb_vm_check_redefinition_by_prepend(klass);
+ }
+ if (RB_TYPE_P(klass, T_MODULE)) {
+ rb_subclass_entry_t *iclass = RCLASS_SUBCLASSES(klass);
+ // skip the placeholder subclass entry at the head of the list if it exists
+ if (iclass) {
+ RUBY_ASSERT(!iclass->klass);
+ iclass = iclass->next;
+ }
+
+ VALUE klass_origin = RCLASS_ORIGIN(klass);
+ struct rb_id_table *klass_m_tbl = RCLASS_M_TBL(klass);
+ struct rb_id_table *klass_origin_m_tbl = RCLASS_M_TBL(klass_origin);
+ while (iclass) {
+ /* During lazy sweeping, iclass->klass could be a dead object that
+ * has not yet been swept. */
+ if (!rb_objspace_garbage_object_p(iclass->klass)) {
+ const VALUE subclass = iclass->klass;
+ if (klass_had_no_origin && klass_origin_m_tbl == RCLASS_M_TBL(subclass)) {
+ // backfill an origin iclass to handle refinements and future prepends
+ rb_id_table_foreach(RCLASS_M_TBL(subclass), clear_module_cache_i, (void *)subclass);
+ RCLASS_M_TBL(subclass) = klass_m_tbl;
+ VALUE origin = rb_include_class_new(klass_origin, RCLASS_SUPER(subclass));
+ RCLASS_SET_SUPER(subclass, origin);
+ RCLASS_SET_INCLUDER(origin, RCLASS_INCLUDER(subclass));
+ RCLASS_SET_ORIGIN(subclass, origin);
+ RICLASS_SET_ORIGIN_SHARED_MTBL(origin);
+ }
+ include_modules_at(subclass, subclass, module, FALSE);
+ }
+
+ iclass = iclass->next;
+ }
+ }
+}
+
+/*
+ * call-seq:
+ * mod.included_modules -> array
+ *
+ * Returns the list of modules included or prepended in <i>mod</i>
+ * or one of <i>mod</i>'s ancestors.
+ *
+ * module Sub
+ * end
+ *
+ * module Mixin
+ * prepend Sub
+ * end
+ *
+ * module Outer
+ * include Mixin
+ * end
+ *
+ * Mixin.included_modules #=> [Sub]
+ * Outer.included_modules #=> [Sub, Mixin]
+ */
+
VALUE
-rb_mod_included_modules(mod)
- VALUE mod;
+rb_mod_included_modules(VALUE mod)
{
VALUE ary = rb_ary_new();
VALUE p;
-
- for (p = RCLASS(mod)->super; p; p = RCLASS(p)->super) {
- if (BUILTIN_TYPE(p) == T_ICLASS) {
- rb_ary_push(ary, RBASIC(p)->klass);
- }
+ VALUE origin = RCLASS_ORIGIN(mod);
+
+ for (p = RCLASS_SUPER(mod); p; p = RCLASS_SUPER(p)) {
+ if (p != origin && RCLASS_ORIGIN(p) == p && BUILTIN_TYPE(p) == T_ICLASS) {
+ VALUE m = METACLASS_OF(p);
+ if (RB_TYPE_P(m, T_MODULE))
+ rb_ary_push(ary, m);
+ }
}
return ary;
}
+/*
+ * call-seq:
+ * mod.include?(module) -> true or false
+ *
+ * Returns <code>true</code> if <i>module</i> is included
+ * or prepended in <i>mod</i> or one of <i>mod</i>'s ancestors.
+ *
+ * module A
+ * end
+ * class B
+ * include A
+ * end
+ * class C < B
+ * end
+ * B.include?(A) #=> true
+ * C.include?(A) #=> true
+ * A.include?(A) #=> false
+ */
+
VALUE
-rb_mod_ancestors(mod)
- VALUE mod;
+rb_mod_include_p(VALUE mod, VALUE mod2)
{
- VALUE ary = rb_ary_new();
VALUE p;
- for (p = mod; p; p = RCLASS(p)->super) {
- if (FL_TEST(p, FL_SINGLETON))
- continue;
- if (BUILTIN_TYPE(p) == T_ICLASS) {
- rb_ary_push(ary, RBASIC(p)->klass);
- }
- else {
- rb_ary_push(ary, p);
- }
+ Check_Type(mod2, T_MODULE);
+ for (p = RCLASS_SUPER(mod); p; p = RCLASS_SUPER(p)) {
+ if (BUILTIN_TYPE(p) == T_ICLASS && !FL_TEST(p, RICLASS_IS_ORIGIN)) {
+ if (METACLASS_OF(p) == mod2) return Qtrue;
+ }
}
- return ary;
+ return Qfalse;
}
-static int
-ins_methods_i(key, body, ary)
- ID key;
- NODE *body;
- VALUE ary;
+/*
+ * call-seq:
+ * mod.ancestors -> array
+ *
+ * Returns a list of modules included/prepended in <i>mod</i>
+ * (including <i>mod</i> itself).
+ *
+ * module Mod
+ * include Math
+ * include Comparable
+ * prepend Enumerable
+ * end
+ *
+ * Mod.ancestors #=> [Enumerable, Mod, Comparable, Math]
+ * Math.ancestors #=> [Math]
+ * Enumerable.ancestors #=> [Enumerable]
+ */
+
+VALUE
+rb_mod_ancestors(VALUE mod)
{
- if ((body->nd_noex&(NOEX_PRIVATE|NOEX_PROTECTED)) == 0) {
- VALUE name = rb_str_new2(rb_id2name(key));
+ VALUE p, ary = rb_ary_new();
+ VALUE refined_class = Qnil;
+ if (BUILTIN_TYPE(mod) == T_MODULE && FL_TEST(mod, RMODULE_IS_REFINEMENT)) {
+ refined_class = rb_refinement_module_get_refined_class(mod);
+ }
- if (!rb_ary_includes(ary, name)) {
- if (!body->nd_body) {
- rb_ary_push(ary, Qnil);
- }
- rb_ary_push(ary, name);
- }
+ for (p = mod; p; p = RCLASS_SUPER(p)) {
+ if (p == refined_class) break;
+ if (p != RCLASS_ORIGIN(p)) continue;
+ if (BUILTIN_TYPE(p) == T_ICLASS) {
+ rb_ary_push(ary, METACLASS_OF(p));
+ }
+ else {
+ rb_ary_push(ary, p);
+ }
}
- else if (body->nd_body && nd_type(body->nd_body) == NODE_ZSUPER) {
- rb_ary_push(ary, Qnil);
- rb_ary_push(ary, rb_str_new2(rb_id2name(key)));
+ return ary;
+}
+
+struct subclass_traverse_data
+{
+ VALUE buffer;
+ long count;
+ long maxcount;
+ bool immediate_only;
+};
+
+static void
+class_descendants_recursive(VALUE klass, VALUE v)
+{
+ struct subclass_traverse_data *data = (struct subclass_traverse_data *) v;
+
+ if (BUILTIN_TYPE(klass) == T_CLASS && !FL_TEST(klass, FL_SINGLETON)) {
+ if (data->buffer && data->count < data->maxcount && !rb_objspace_garbage_object_p(klass)) {
+ // assumes that this does not cause GC as long as the length does not exceed the capacity
+ rb_ary_push(data->buffer, klass);
+ }
+ data->count++;
+ if (!data->immediate_only) {
+ rb_class_foreach_subclass(klass, class_descendants_recursive, v);
+ }
+ }
+ else {
+ rb_class_foreach_subclass(klass, class_descendants_recursive, v);
}
- return ST_CONTINUE;
}
-static int
-ins_methods_prot_i(key, body, ary)
- ID key;
- NODE *body;
- VALUE ary;
+static VALUE
+class_descendants(VALUE klass, bool immediate_only)
{
- if (!body->nd_body) {
- rb_ary_push(ary, Qnil);
- rb_ary_push(ary, rb_str_new2(rb_id2name(key)));
+ struct subclass_traverse_data data = { Qfalse, 0, -1, immediate_only };
+
+ // estimate the count of subclasses
+ rb_class_foreach_subclass(klass, class_descendants_recursive, (VALUE) &data);
+
+ // the following allocation may cause GC which may change the number of subclasses
+ data.buffer = rb_ary_new_capa(data.count);
+ data.maxcount = data.count;
+ data.count = 0;
+
+ size_t gc_count = rb_gc_count();
+
+ // enumerate subclasses
+ rb_class_foreach_subclass(klass, class_descendants_recursive, (VALUE) &data);
+
+ if (gc_count != rb_gc_count()) {
+ rb_bug("GC must not occur during the subclass iteration of Class#descendants");
}
- else if (body->nd_noex & NOEX_PROTECTED) {
- VALUE name = rb_str_new2(rb_id2name(key));
- if (!rb_ary_includes(ary, name)) {
- rb_ary_push(ary, name);
- }
+ return data.buffer;
+}
+
+/*
+ * call-seq:
+ * subclasses -> array
+ *
+ * Returns an array of classes where the receiver is the
+ * direct superclass of the class, excluding singleton classes.
+ * The order of the returned array is not defined.
+ *
+ * class A; end
+ * class B < A; end
+ * class C < B; end
+ * class D < A; end
+ *
+ * A.subclasses #=> [D, B]
+ * B.subclasses #=> [C]
+ * C.subclasses #=> []
+ *
+ * Anonymous subclasses (not associated with a constant) are
+ * returned, too:
+ *
+ * c = Class.new(A)
+ * A.subclasses # => [#<Class:0x00007f003c77bd78>, D, B]
+ *
+ * Note that the parent does not hold references to subclasses
+ * and doesn't prevent them from being garbage collected. This
+ * means that the subclass might disappear when all references
+ * to it are dropped:
+ *
+ * # drop the reference to subclass, it can be garbage-collected now
+ * c = nil
+ *
+ * A.subclasses
+ * # It can be
+ * # => [#<Class:0x00007f003c77bd78>, D, B]
+ * # ...or just
+ * # => [D, B]
+ * # ...depending on whether garbage collector was run
+ */
+
+VALUE
+rb_class_subclasses(VALUE klass)
+{
+ return class_descendants(klass, true);
+}
+
+/*
+ * call-seq:
+ * attached_object -> object
+ *
+ * Returns the object for which the receiver is the singleton class.
+ *
+ * Raises an TypeError if the class is not a singleton class.
+ *
+ * class Foo; end
+ *
+ * Foo.singleton_class.attached_object #=> Foo
+ * Foo.attached_object #=> TypeError: `Foo' is not a singleton class
+ * Foo.new.singleton_class.attached_object #=> #<Foo:0x000000010491a370>
+ * TrueClass.attached_object #=> TypeError: `TrueClass' is not a singleton class
+ * NilClass.attached_object #=> TypeError: `NilClass' is not a singleton class
+ */
+
+VALUE
+rb_class_attached_object(VALUE klass)
+{
+ if (!FL_TEST(klass, FL_SINGLETON)) {
+ rb_raise(rb_eTypeError, "`%"PRIsVALUE"' is not a singleton class", klass);
}
- else if (nd_type(body->nd_body) == NODE_ZSUPER) {
- rb_ary_push(ary, Qnil);
- rb_ary_push(ary, rb_str_new2(rb_id2name(key)));
+
+ return rb_attr_get(klass, id_attached);
+}
+
+static void
+ins_methods_push(st_data_t name, st_data_t ary)
+{
+ rb_ary_push((VALUE)ary, ID2SYM((ID)name));
+}
+
+static int
+ins_methods_i(st_data_t name, st_data_t type, st_data_t ary)
+{
+ switch ((rb_method_visibility_t)type) {
+ case METHOD_VISI_UNDEF:
+ case METHOD_VISI_PRIVATE:
+ break;
+ default: /* everything but private */
+ ins_methods_push(name, ary);
+ break;
}
return ST_CONTINUE;
}
static int
-ins_methods_priv_i(key, body, ary)
- ID key;
- NODE *body;
- VALUE ary;
+ins_methods_type_i(st_data_t name, st_data_t type, st_data_t ary, rb_method_visibility_t visi)
{
- if (!body->nd_body) {
- rb_ary_push(ary, Qnil);
- rb_ary_push(ary, rb_str_new2(rb_id2name(key)));
+ if ((rb_method_visibility_t)type == visi) {
+ ins_methods_push(name, ary);
}
- else if (body->nd_noex & NOEX_PRIVATE) {
- VALUE name = rb_str_new2(rb_id2name(key));
+ return ST_CONTINUE;
+}
- if (!rb_ary_includes(ary, name)) {
- rb_ary_push(ary, name);
- }
+static int
+ins_methods_prot_i(st_data_t name, st_data_t type, st_data_t ary)
+{
+ return ins_methods_type_i(name, type, ary, METHOD_VISI_PROTECTED);
+}
+
+static int
+ins_methods_priv_i(st_data_t name, st_data_t type, st_data_t ary)
+{
+ return ins_methods_type_i(name, type, ary, METHOD_VISI_PRIVATE);
+}
+
+static int
+ins_methods_pub_i(st_data_t name, st_data_t type, st_data_t ary)
+{
+ return ins_methods_type_i(name, type, ary, METHOD_VISI_PUBLIC);
+}
+
+static int
+ins_methods_undef_i(st_data_t name, st_data_t type, st_data_t ary)
+{
+ return ins_methods_type_i(name, type, ary, METHOD_VISI_UNDEF);
+}
+
+struct method_entry_arg {
+ st_table *list;
+ int recur;
+};
+
+static enum rb_id_table_iterator_result
+method_entry_i(ID key, VALUE value, void *data)
+{
+ const rb_method_entry_t *me = (const rb_method_entry_t *)value;
+ struct method_entry_arg *arg = (struct method_entry_arg *)data;
+ rb_method_visibility_t type;
+
+ if (me->def->type == VM_METHOD_TYPE_REFINED) {
+ VALUE owner = me->owner;
+ me = rb_resolve_refined_method(Qnil, me);
+ if (!me) return ID_TABLE_CONTINUE;
+ if (!arg->recur && me->owner != owner) return ID_TABLE_CONTINUE;
}
- else if (nd_type(body->nd_body) == NODE_ZSUPER) {
- rb_ary_push(ary, Qnil);
- rb_ary_push(ary, rb_str_new2(rb_id2name(key)));
+ if (!st_is_member(arg->list, key)) {
+ if (UNDEFINED_METHOD_ENTRY_P(me)) {
+ type = METHOD_VISI_UNDEF; /* none */
+ }
+ else {
+ type = METHOD_ENTRY_VISI(me);
+ RUBY_ASSERT(type != METHOD_VISI_UNDEF);
+ }
+ st_add_direct(arg->list, key, (st_data_t)type);
}
- return ST_CONTINUE;
+ return ID_TABLE_CONTINUE;
+}
+
+static void
+add_instance_method_list(VALUE mod, struct method_entry_arg *me_arg)
+{
+ struct rb_id_table *m_tbl = RCLASS_M_TBL(mod);
+ if (!m_tbl) return;
+ rb_id_table_foreach(m_tbl, method_entry_i, me_arg);
+}
+
+static bool
+particular_class_p(VALUE mod)
+{
+ if (!mod) return false;
+ if (FL_TEST(mod, FL_SINGLETON)) return true;
+ if (BUILTIN_TYPE(mod) == T_ICLASS) return true;
+ return false;
}
static VALUE
-method_list(mod, option, func)
- VALUE mod;
- int option;
- int (*func)();
+class_instance_method_list(int argc, const VALUE *argv, VALUE mod, int obj, int (*func) (st_data_t, st_data_t, st_data_t))
{
VALUE ary;
- VALUE klass;
- VALUE *p, *q, *pend;
-
- if (!OBJ_TAINTED(mod) && rb_safe_level() >= 4)
- rb_raise(rb_eSecurityError, "Insecure: can't get metainfo");
- ary = rb_ary_new();
- for (klass = mod; klass; klass = RCLASS(klass)->super) {
- st_foreach(RCLASS(klass)->m_tbl, func, ary);
- if (!option) break;
- }
- p = q = RARRAY(ary)->ptr; pend = p + RARRAY(ary)->len;
- while (p < pend) {
- if (*p == Qnil) {
- p+=2;
- continue;
- }
- *q++ = *p++;
- }
- RARRAY(ary)->len = q - RARRAY(ary)->ptr;
+ int recur = TRUE, prepended = 0;
+ struct method_entry_arg me_arg;
+
+ if (rb_check_arity(argc, 0, 1)) recur = RTEST(argv[0]);
+
+ me_arg.list = st_init_numtable();
+ me_arg.recur = recur;
+
+ if (obj) {
+ for (; particular_class_p(mod); mod = RCLASS_SUPER(mod)) {
+ add_instance_method_list(mod, &me_arg);
+ }
+ }
+
+ if (!recur && RCLASS_ORIGIN(mod) != mod) {
+ mod = RCLASS_ORIGIN(mod);
+ prepended = 1;
+ }
+
+ for (; mod; mod = RCLASS_SUPER(mod)) {
+ add_instance_method_list(mod, &me_arg);
+ if (BUILTIN_TYPE(mod) == T_ICLASS && !prepended) continue;
+ if (!recur) break;
+ }
+ ary = rb_ary_new2(me_arg.list->num_entries);
+ st_foreach(me_arg.list, func, ary);
+ st_free_table(me_arg.list);
+
return ary;
}
+/*
+ * call-seq:
+ * mod.instance_methods(include_super=true) -> array
+ *
+ * Returns an array containing the names of the public and protected instance
+ * methods in the receiver. For a module, these are the public and protected methods;
+ * for a class, they are the instance (not singleton) methods. If the optional
+ * parameter is <code>false</code>, the methods of any ancestors are not included.
+ *
+ * module A
+ * def method1() end
+ * end
+ * class B
+ * include A
+ * def method2() end
+ * end
+ * class C < B
+ * def method3() end
+ * end
+ *
+ * A.instance_methods(false) #=> [:method1]
+ * B.instance_methods(false) #=> [:method2]
+ * B.instance_methods(true).include?(:method1) #=> true
+ * C.instance_methods(false) #=> [:method3]
+ * C.instance_methods.include?(:method2) #=> true
+ *
+ * Note that method visibility changes in the current class, as well as aliases,
+ * are considered as methods of the current class by this method:
+ *
+ * class C < B
+ * alias method4 method2
+ * protected :method2
+ * end
+ * C.instance_methods(false).sort #=> [:method2, :method3, :method4]
+ */
+
VALUE
-rb_class_instance_methods(argc, argv, mod)
- int argc;
- VALUE *argv;
- VALUE mod;
+rb_class_instance_methods(int argc, const VALUE *argv, VALUE mod)
{
- VALUE option;
+ return class_instance_method_list(argc, argv, mod, 0, ins_methods_i);
+}
- rb_scan_args(argc, argv, "01", &option);
- return method_list(mod, RTEST(option), ins_methods_i);
+/*
+ * call-seq:
+ * mod.protected_instance_methods(include_super=true) -> array
+ *
+ * Returns a list of the protected instance methods defined in
+ * <i>mod</i>. If the optional parameter is <code>false</code>, the
+ * methods of any ancestors are not included.
+ */
+
+VALUE
+rb_class_protected_instance_methods(int argc, const VALUE *argv, VALUE mod)
+{
+ return class_instance_method_list(argc, argv, mod, 0, ins_methods_prot_i);
}
+/*
+ * call-seq:
+ * mod.private_instance_methods(include_super=true) -> array
+ *
+ * Returns a list of the private instance methods defined in
+ * <i>mod</i>. If the optional parameter is <code>false</code>, the
+ * methods of any ancestors are not included.
+ *
+ * module Mod
+ * def method1() end
+ * private :method1
+ * def method2() end
+ * end
+ * Mod.instance_methods #=> [:method2]
+ * Mod.private_instance_methods #=> [:method1]
+ */
+
VALUE
-rb_class_protected_instance_methods(argc, argv, mod)
- int argc;
- VALUE *argv;
- VALUE mod;
+rb_class_private_instance_methods(int argc, const VALUE *argv, VALUE mod)
{
- VALUE option;
+ return class_instance_method_list(argc, argv, mod, 0, ins_methods_priv_i);
+}
- rb_scan_args(argc, argv, "01", &option);
- return method_list(mod, RTEST(option), ins_methods_prot_i);
+/*
+ * call-seq:
+ * mod.public_instance_methods(include_super=true) -> array
+ *
+ * Returns a list of the public instance methods defined in <i>mod</i>.
+ * If the optional parameter is <code>false</code>, the methods of
+ * any ancestors are not included.
+ */
+
+VALUE
+rb_class_public_instance_methods(int argc, const VALUE *argv, VALUE mod)
+{
+ return class_instance_method_list(argc, argv, mod, 0, ins_methods_pub_i);
}
+/*
+ * call-seq:
+ * mod.undefined_instance_methods -> array
+ *
+ * Returns a list of the undefined instance methods defined in <i>mod</i>.
+ * The undefined methods of any ancestors are not included.
+ */
+
VALUE
-rb_class_private_instance_methods(argc, argv, mod)
- int argc;
- VALUE *argv;
- VALUE mod;
+rb_class_undefined_instance_methods(VALUE mod)
{
- VALUE option;
+ VALUE include_super = Qfalse;
+ return class_instance_method_list(1, &include_super, mod, 0, ins_methods_undef_i);
+}
+
+/*
+ * call-seq:
+ * obj.methods(regular=true) -> array
+ *
+ * Returns a list of the names of public and protected methods of
+ * <i>obj</i>. This will include all the methods accessible in
+ * <i>obj</i>'s ancestors.
+ * If the optional parameter is <code>false</code>, it
+ * returns an array of <i>obj</i>'s public and protected singleton methods,
+ * the array will not include methods in modules included in <i>obj</i>.
+ *
+ * class Klass
+ * def klass_method()
+ * end
+ * end
+ * k = Klass.new
+ * k.methods[0..9] #=> [:klass_method, :nil?, :===,
+ * # :==~, :!, :eql?
+ * # :hash, :<=>, :class, :singleton_class]
+ * k.methods.length #=> 56
+ *
+ * k.methods(false) #=> []
+ * def k.singleton_method; end
+ * k.methods(false) #=> [:singleton_method]
+ *
+ * module M123; def m123; end end
+ * k.extend M123
+ * k.methods(false) #=> [:singleton_method]
+ */
- rb_scan_args(argc, argv, "01", &option);
- return method_list(mod, RTEST(option), ins_methods_priv_i);
+VALUE
+rb_obj_methods(int argc, const VALUE *argv, VALUE obj)
+{
+ rb_check_arity(argc, 0, 1);
+ if (argc > 0 && !RTEST(argv[0])) {
+ return rb_obj_singleton_methods(argc, argv, obj);
+ }
+ return class_instance_method_list(argc, argv, CLASS_OF(obj), 1, ins_methods_i);
}
+/*
+ * call-seq:
+ * obj.protected_methods(all=true) -> array
+ *
+ * Returns the list of protected methods accessible to <i>obj</i>. If
+ * the <i>all</i> parameter is set to <code>false</code>, only those methods
+ * in the receiver will be listed.
+ */
+
VALUE
-rb_obj_singleton_methods(obj)
- VALUE obj;
+rb_obj_protected_methods(int argc, const VALUE *argv, VALUE obj)
{
- VALUE ary;
- VALUE klass;
- VALUE *p, *q, *pend;
+ return class_instance_method_list(argc, argv, CLASS_OF(obj), 1, ins_methods_prot_i);
+}
- if (rb_safe_level() >= 4 && !OBJ_TAINTED(obj))
- rb_raise(rb_eSecurityError, "Insecure: can't get metainfo");
- ary = rb_ary_new();
+/*
+ * call-seq:
+ * obj.private_methods(all=true) -> array
+ *
+ * Returns the list of private methods accessible to <i>obj</i>. If
+ * the <i>all</i> parameter is set to <code>false</code>, only those methods
+ * in the receiver will be listed.
+ */
+
+VALUE
+rb_obj_private_methods(int argc, const VALUE *argv, VALUE obj)
+{
+ return class_instance_method_list(argc, argv, CLASS_OF(obj), 1, ins_methods_priv_i);
+}
+
+/*
+ * call-seq:
+ * obj.public_methods(all=true) -> array
+ *
+ * Returns the list of public methods accessible to <i>obj</i>. If
+ * the <i>all</i> parameter is set to <code>false</code>, only those methods
+ * in the receiver will be listed.
+ */
+
+VALUE
+rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj)
+{
+ return class_instance_method_list(argc, argv, CLASS_OF(obj), 1, ins_methods_pub_i);
+}
+
+/*
+ * call-seq:
+ * obj.singleton_methods(all=true) -> array
+ *
+ * Returns an array of the names of singleton methods for <i>obj</i>.
+ * If the optional <i>all</i> parameter is true, the list will include
+ * methods in modules included in <i>obj</i>.
+ * Only public and protected singleton methods are returned.
+ *
+ * module Other
+ * def three() end
+ * end
+ *
+ * class Single
+ * def Single.four() end
+ * end
+ *
+ * a = Single.new
+ *
+ * def a.one()
+ * end
+ *
+ * class << a
+ * include Other
+ * def two()
+ * end
+ * end
+ *
+ * Single.singleton_methods #=> [:four]
+ * a.singleton_methods(false) #=> [:two, :one]
+ * a.singleton_methods #=> [:two, :one, :three]
+ */
+
+VALUE
+rb_obj_singleton_methods(int argc, const VALUE *argv, VALUE obj)
+{
+ VALUE ary, klass, origin;
+ struct method_entry_arg me_arg;
+ struct rb_id_table *mtbl;
+ int recur = TRUE;
+
+ if (rb_check_arity(argc, 0, 1)) recur = RTEST(argv[0]);
+ if (RB_TYPE_P(obj, T_CLASS) && FL_TEST(obj, FL_SINGLETON)) {
+ rb_singleton_class(obj);
+ }
klass = CLASS_OF(obj);
- while (klass && FL_TEST(klass, FL_SINGLETON)) {
- st_foreach(RCLASS(klass)->m_tbl, ins_methods_i, ary);
- klass = RCLASS(klass)->super;
+ origin = RCLASS_ORIGIN(klass);
+ me_arg.list = st_init_numtable();
+ me_arg.recur = recur;
+ if (klass && FL_TEST(klass, FL_SINGLETON)) {
+ if ((mtbl = RCLASS_M_TBL(origin)) != 0) rb_id_table_foreach(mtbl, method_entry_i, &me_arg);
+ klass = RCLASS_SUPER(klass);
}
- p = q = RARRAY(ary)->ptr; pend = p + RARRAY(ary)->len;
- while (p < pend) {
- if (*p == Qnil) {
- p+=2;
- continue;
- }
- *q++ = *p++;
+ if (recur) {
+ while (klass && (FL_TEST(klass, FL_SINGLETON) || RB_TYPE_P(klass, T_ICLASS))) {
+ if (klass != origin && (mtbl = RCLASS_M_TBL(klass)) != 0) rb_id_table_foreach(mtbl, method_entry_i, &me_arg);
+ klass = RCLASS_SUPER(klass);
+ }
}
- RARRAY(ary)->len = q - RARRAY(ary)->ptr;
+ ary = rb_ary_new2(me_arg.list->num_entries);
+ st_foreach(me_arg.list, ins_methods_i, ary);
+ st_free_table(me_arg.list);
return ary;
}
+/*!
+ * \}
+ */
+/*!
+ * \addtogroup defmethod
+ * \{
+ */
+
+#ifdef rb_define_method_id
+#undef rb_define_method_id
+#endif
void
-rb_define_method_id(klass, name, func, argc)
- VALUE klass;
- ID name;
- VALUE (*func)();
- int argc;
+rb_define_method_id(VALUE klass, ID mid, VALUE (*func)(ANYARGS), int argc)
{
- rb_add_method(klass, name, NEW_CFUNC(func,argc), NOEX_PUBLIC|NOEX_CFUNC);
+ rb_add_method_cfunc(klass, mid, func, argc, METHOD_VISI_PUBLIC);
}
+#ifdef rb_define_method
+#undef rb_define_method
+#endif
void
-rb_define_method(klass, name, func, argc)
- VALUE klass;
- const char *name;
- VALUE (*func)();
- int argc;
+rb_define_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
{
- ID id = rb_intern(name);
+ rb_add_method_cfunc(klass, rb_intern(name), func, argc, METHOD_VISI_PUBLIC);
+}
- rb_add_method(klass, id, NEW_CFUNC(func, argc),
- ((name[0] == 'i' && id == rb_intern("initialize"))?
- NOEX_PRIVATE:NOEX_PUBLIC)|NOEX_CFUNC);
+#ifdef rb_define_protected_method
+#undef rb_define_protected_method
+#endif
+void
+rb_define_protected_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
+{
+ rb_add_method_cfunc(klass, rb_intern(name), func, argc, METHOD_VISI_PROTECTED);
}
+#ifdef rb_define_private_method
+#undef rb_define_private_method
+#endif
void
-rb_define_protected_method(klass, name, func, argc)
- VALUE klass;
- const char *name;
- VALUE (*func)();
- int argc;
+rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
{
- rb_add_method(klass, rb_intern(name), NEW_CFUNC(func, argc),
- NOEX_PROTECTED|NOEX_CFUNC);
+ rb_add_method_cfunc(klass, rb_intern(name), func, argc, METHOD_VISI_PRIVATE);
}
void
-rb_define_private_method(klass, name, func, argc)
- VALUE klass;
- const char *name;
- VALUE (*func)();
- int argc;
+rb_undef_method(VALUE klass, const char *name)
{
- rb_add_method(klass, rb_intern(name), NEW_CFUNC(func, argc),
- NOEX_PRIVATE|NOEX_CFUNC);
+ rb_add_method(klass, rb_intern(name), VM_METHOD_TYPE_UNDEF, 0, METHOD_VISI_UNDEF);
+}
+
+static enum rb_id_table_iterator_result
+undef_method_i(ID name, VALUE value, void *data)
+{
+ VALUE klass = (VALUE)data;
+ rb_add_method(klass, name, VM_METHOD_TYPE_UNDEF, 0, METHOD_VISI_UNDEF);
+ return ID_TABLE_CONTINUE;
}
void
-rb_undef_method(klass, name)
- VALUE klass;
- const char *name;
+rb_undef_methods_from(VALUE klass, VALUE super)
{
- rb_add_method(klass, rb_intern(name), 0, NOEX_UNDEF);
+ struct rb_id_table *mtbl = RCLASS_M_TBL(super);
+ if (mtbl) {
+ rb_id_table_foreach(mtbl, undef_method_i, (void *)klass);
+ }
}
-#define SPECIAL_SINGLETON(x,c) if (obj == (x)) {\
- if (!FL_TEST(c, FL_SINGLETON)) {\
- c = rb_singleton_class_new(c);\
- rb_singleton_class_attached(c,obj);\
- }\
- return c;\
+/*!
+ * \}
+ */
+/*!
+ * \addtogroup class
+ * \{
+ */
+
+static inline VALUE
+special_singleton_class_of(VALUE obj)
+{
+ switch (obj) {
+ case Qnil: return rb_cNilClass;
+ case Qfalse: return rb_cFalseClass;
+ case Qtrue: return rb_cTrueClass;
+ default: return Qnil;
+ }
}
VALUE
-rb_singleton_class(obj)
- VALUE obj;
+rb_special_singleton_class(VALUE obj)
+{
+ return special_singleton_class_of(obj);
+}
+
+/*!
+ * \internal
+ * Returns the singleton class of \a obj. Creates it if necessary.
+ *
+ * \note DO NOT expose the returned singleton class to
+ * outside of class.c.
+ * Use \ref rb_singleton_class instead for
+ * consistency of the metaclass hierarchy.
+ */
+static VALUE
+singleton_class_of(VALUE obj)
{
VALUE klass;
- if (FIXNUM_P(obj) || SYMBOL_P(obj)) {
- rb_raise(rb_eTypeError, "can't define singleton");
- }
- if (rb_special_const_p(obj)) {
- SPECIAL_SINGLETON(Qnil, rb_cNilClass);
- SPECIAL_SINGLETON(Qfalse, rb_cFalseClass);
- SPECIAL_SINGLETON(Qtrue, rb_cTrueClass);
- rb_bug("unknown immediate %d", obj);
+ switch (TYPE(obj)) {
+ case T_FIXNUM:
+ case T_BIGNUM:
+ case T_FLOAT:
+ case T_SYMBOL:
+ rb_raise(rb_eTypeError, "can't define singleton");
+
+ case T_FALSE:
+ case T_TRUE:
+ case T_NIL:
+ klass = special_singleton_class_of(obj);
+ if (NIL_P(klass))
+ rb_bug("unknown immediate %p", (void *)obj);
+ return klass;
+
+ case T_STRING:
+ if (FL_TEST_RAW(obj, RSTRING_FSTR)) {
+ rb_raise(rb_eTypeError, "can't define singleton");
+ }
}
- DEFER_INTS;
- if (FL_TEST(RBASIC(obj)->klass, FL_SINGLETON)) {
- klass = RBASIC(obj)->klass;
+ klass = METACLASS_OF(obj);
+ if (!(FL_TEST(klass, FL_SINGLETON) &&
+ rb_attr_get(klass, id_attached) == obj)) {
+ klass = rb_make_metaclass(obj, klass);
}
- else {
- klass = rb_singleton_class_new(RBASIC(obj)->klass);
- RBASIC(obj)->klass = klass;
- rb_singleton_class_attached(klass, obj);
- }
- if (OBJ_TAINTED(obj)) {
- OBJ_TAINT(klass);
+
+ RB_FL_SET_RAW(klass, RB_OBJ_FROZEN_RAW(obj));
+
+ return klass;
+}
+
+void
+rb_freeze_singleton_class(VALUE x)
+{
+ /* should not propagate to meta-meta-class, and so on */
+ if (!(RBASIC(x)->flags & FL_SINGLETON)) {
+ VALUE klass = RBASIC_CLASS(x);
+ if (klass && // no class when hidden from ObjectSpace
+ FL_TEST(klass, (FL_SINGLETON|FL_FREEZE)) == FL_SINGLETON) {
+ OBJ_FREEZE_RAW(klass);
+ }
}
- else {
- FL_UNSET(klass, FL_TAINT);
+}
+
+/*!
+ * Returns the singleton class of \a obj, or nil if obj is not a
+ * singleton object.
+ *
+ * \param obj an arbitrary object.
+ * \return the singleton class or nil.
+ */
+VALUE
+rb_singleton_class_get(VALUE obj)
+{
+ VALUE klass;
+
+ if (SPECIAL_CONST_P(obj)) {
+ return rb_special_singleton_class(obj);
}
- if (OBJ_FROZEN(obj)) OBJ_FREEZE(klass);
- ALLOW_INTS;
+ klass = METACLASS_OF(obj);
+ if (!FL_TEST(klass, FL_SINGLETON)) return Qnil;
+ if (rb_attr_get(klass, id_attached) != obj) return Qnil;
+ return klass;
+}
+
+VALUE
+rb_singleton_class(VALUE obj)
+{
+ VALUE klass = singleton_class_of(obj);
+
+ /* ensures an exposed class belongs to its own eigenclass */
+ if (RB_TYPE_P(obj, T_CLASS)) (void)ENSURE_EIGENCLASS(klass);
return klass;
}
+/*!
+ * \}
+ */
+
+/*!
+ * \addtogroup defmethod
+ * \{
+ */
+
+#ifdef rb_define_singleton_method
+#undef rb_define_singleton_method
+#endif
void
-rb_define_singleton_method(obj, name, func, argc)
- VALUE obj;
- const char *name;
- VALUE (*func)();
- int argc;
+rb_define_singleton_method(VALUE obj, const char *name, VALUE (*func)(ANYARGS), int argc)
{
- rb_define_method(rb_singleton_class(obj), name, func, argc);
+ rb_define_method(singleton_class_of(obj), name, func, argc);
}
+#ifdef rb_define_module_function
+#undef rb_define_module_function
+#endif
void
-rb_define_module_function(module, name, func, argc)
- VALUE module;
- const char *name;
- VALUE (*func)();
- int argc;
+rb_define_module_function(VALUE module, const char *name, VALUE (*func)(ANYARGS), int argc)
{
rb_define_private_method(module, name, func, argc);
rb_define_singleton_method(module, name, func, argc);
}
+#ifdef rb_define_global_function
+#undef rb_define_global_function
+#endif
void
-rb_define_global_function(name, func, argc)
- const char *name;
- VALUE (*func)();
- int argc;
+rb_define_global_function(const char *name, VALUE (*func)(ANYARGS), int argc)
{
rb_define_module_function(rb_mKernel, name, func, argc);
}
void
-rb_define_alias(klass, name1, name2)
- VALUE klass;
- const char *name1, *name2;
+rb_define_alias(VALUE klass, const char *name1, const char *name2)
{
rb_alias(klass, rb_intern(name1), rb_intern(name2));
}
void
-rb_define_attr(klass, name, read, write)
- VALUE klass;
- const char *name;
- int read, write;
+rb_define_attr(VALUE klass, const char *name, int read, int write)
{
- rb_attr(klass, rb_intern(name), read, write, Qfalse);
+ rb_attr(klass, rb_intern(name), read, write, FALSE);
}
-#ifdef HAVE_STDARG_PROTOTYPES
-#include <stdarg.h>
-#define va_init_list(a,b) va_start(a,b)
-#else
-#include <varargs.h>
-#define va_init_list(a,b) va_start(a)
-#endif
+MJIT_FUNC_EXPORTED VALUE
+rb_keyword_error_new(const char *error, VALUE keys)
+{
+ long i = 0, len = RARRAY_LEN(keys);
+ VALUE error_message = rb_sprintf("%s keyword%.*s", error, len > 1, "s");
+
+ if (len > 0) {
+ rb_str_cat_cstr(error_message, ": ");
+ while (1) {
+ const VALUE k = RARRAY_AREF(keys, i);
+ rb_str_append(error_message, rb_inspect(k));
+ if (++i >= len) break;
+ rb_str_cat_cstr(error_message, ", ");
+ }
+ }
+
+ return rb_exc_new_str(rb_eArgError, error_message);
+}
+
+NORETURN(static void rb_keyword_error(const char *error, VALUE keys));
+static void
+rb_keyword_error(const char *error, VALUE keys)
+{
+ rb_exc_raise(rb_keyword_error_new(error, keys));
+}
+
+NORETURN(static void unknown_keyword_error(VALUE hash, const ID *table, int keywords));
+static void
+unknown_keyword_error(VALUE hash, const ID *table, int keywords)
+{
+ int i;
+ for (i = 0; i < keywords; i++) {
+ st_data_t key = ID2SYM(table[i]);
+ rb_hash_stlike_delete(hash, &key, NULL);
+ }
+ rb_keyword_error("unknown", rb_hash_keys(hash));
+}
+
+
+static int
+separate_symbol(st_data_t key, st_data_t value, st_data_t arg)
+{
+ VALUE *kwdhash = (VALUE *)arg;
+ if (!SYMBOL_P(key)) kwdhash++;
+ if (!*kwdhash) *kwdhash = rb_hash_new();
+ rb_hash_aset(*kwdhash, (VALUE)key, (VALUE)value);
+ return ST_CONTINUE;
+}
+
+VALUE
+rb_extract_keywords(VALUE *orighash)
+{
+ VALUE parthash[2] = {0, 0};
+ VALUE hash = *orighash;
+
+ if (RHASH_EMPTY_P(hash)) {
+ *orighash = 0;
+ return hash;
+ }
+ rb_hash_foreach(hash, separate_symbol, (st_data_t)&parthash);
+ *orighash = parthash[1];
+ if (parthash[1] && RBASIC_CLASS(hash) != rb_cHash) {
+ RBASIC_SET_CLASS(parthash[1], RBASIC_CLASS(hash));
+ }
+ return parthash[0];
+}
int
-#ifdef HAVE_STDARG_PROTOTYPES
-rb_scan_args(int argc, VALUE *argv, const char *fmt, ...)
-#else
-rb_scan_args(argc, argv, fmt, va_alist)
- int argc;
- VALUE *argv;
- const char *fmt;
- va_dcl
-#endif
+rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *values)
{
- int n, i = 0;
- const char *p = fmt;
- VALUE *var;
- va_list vargs;
+ int i = 0, j;
+ int rest = 0;
+ VALUE missing = Qnil;
+ st_data_t key;
- va_init_list(vargs, fmt);
+#define extract_kwarg(keyword, val) \
+ (key = (st_data_t)(keyword), values ? \
+ (rb_hash_stlike_delete(keyword_hash, &key, &(val)) || ((val) = Qundef, 0)) : \
+ rb_hash_stlike_lookup(keyword_hash, key, NULL))
- if (*p == '*') goto rest_arg;
+ if (NIL_P(keyword_hash)) keyword_hash = 0;
- if (ISDIGIT(*p)) {
- n = *p - '0';
- if (n > argc)
- rb_raise(rb_eArgError, "wrong # of arguments (%d for %d)", argc, n);
- for (i=0; i<n; i++) {
- var = va_arg(vargs, VALUE*);
- if (var) *var = argv[i];
- }
- p++;
+ if (optional < 0) {
+ rest = 1;
+ optional = -1-optional;
}
- else {
- goto error;
+ if (required) {
+ for (; i < required; i++) {
+ VALUE keyword = ID2SYM(table[i]);
+ if (keyword_hash) {
+ if (extract_kwarg(keyword, values[i])) {
+ continue;
+ }
+ }
+ if (NIL_P(missing)) missing = rb_ary_hidden_new(1);
+ rb_ary_push(missing, keyword);
+ }
+ if (!NIL_P(missing)) {
+ rb_keyword_error("missing", missing);
+ }
+ }
+ j = i;
+ if (optional && keyword_hash) {
+ for (i = 0; i < optional; i++) {
+ if (extract_kwarg(ID2SYM(table[required+i]), values[required+i])) {
+ j++;
+ }
+ }
}
+ if (!rest && keyword_hash) {
+ if (RHASH_SIZE(keyword_hash) > (unsigned int)(values ? 0 : j)) {
+ unknown_keyword_error(keyword_hash, table, required+optional);
+ }
+ }
+ if (values && !keyword_hash) {
+ for (i = 0; i < required + optional; i++) {
+ values[i] = Qundef;
+ }
+ }
+ return j;
+#undef extract_kwarg
+}
+
+struct rb_scan_args_t {
+ int kw_flag;
+ int n_lead;
+ int n_opt;
+ int n_trail;
+ bool f_var;
+ bool f_hash;
+ bool f_block;
+};
+
+static void
+rb_scan_args_parse(int kw_flag, const char *fmt, struct rb_scan_args_t *arg)
+{
+ const char *p = fmt;
+
+ memset(arg, 0, sizeof(*arg));
+ arg->kw_flag = kw_flag;
if (ISDIGIT(*p)) {
- n = i + *p - '0';
- for (; i<n; i++) {
- var = va_arg(vargs, VALUE*);
- if (argc > i) {
- if (var) *var = argv[i];
- }
- else {
- if (var) *var = Qnil;
- }
- }
- p++;
- }
-
- if(*p == '*') {
- rest_arg:
- var = va_arg(vargs, VALUE*);
- if (argc > i) {
- if (var) *var = rb_ary_new4(argc-i, argv+i);
- i = argc;
- }
- else {
- if (var) *var = rb_ary_new();
- }
- p++;
+ arg->n_lead = *p - '0';
+ p++;
+ if (ISDIGIT(*p)) {
+ arg->n_opt = *p - '0';
+ p++;
+ }
+ }
+ if (*p == '*') {
+ arg->f_var = 1;
+ p++;
+ }
+ if (ISDIGIT(*p)) {
+ arg->n_trail = *p - '0';
+ p++;
+ }
+ if (*p == ':') {
+ arg->f_hash = 1;
+ p++;
}
-
if (*p == '&') {
- var = va_arg(vargs, VALUE*);
- if (rb_block_given_p()) {
- *var = rb_f_lambda();
- }
- else {
- *var = Qnil;
- }
- p++;
+ arg->f_block = 1;
+ p++;
}
- va_end(vargs);
-
if (*p != '\0') {
- goto error;
+ rb_fatal("bad scan arg format: %s", fmt);
}
+}
- if (argc > i) {
- rb_raise(rb_eArgError, "wrong # of arguments(%d for %d)", argc, i);
+static int
+rb_scan_args_assign(const struct rb_scan_args_t *arg, int argc, const VALUE *const argv, va_list vargs)
+{
+ int i, argi = 0;
+ VALUE *var, hash = Qnil;
+#define rb_scan_args_next_param() va_arg(vargs, VALUE *)
+ const int kw_flag = arg->kw_flag;
+ const int n_lead = arg->n_lead;
+ const int n_opt = arg->n_opt;
+ const int n_trail = arg->n_trail;
+ const int n_mand = n_lead + n_trail;
+ const bool f_var = arg->f_var;
+ const bool f_hash = arg->f_hash;
+ const bool f_block = arg->f_block;
+
+ /* capture an option hash - phase 1: pop from the argv */
+ if (f_hash && argc > 0) {
+ VALUE last = argv[argc - 1];
+ if (rb_scan_args_keyword_p(kw_flag, last)) {
+ hash = rb_hash_dup(last);
+ argc--;
+ }
}
- return argc;
+ if (argc < n_mand) {
+ goto argc_error;
+ }
- error:
- rb_fatal("bad scan arg format: %s", fmt);
- return 0;
+ /* capture leading mandatory arguments */
+ for (i = 0; i < n_lead; i++) {
+ var = rb_scan_args_next_param();
+ if (var) *var = argv[argi];
+ argi++;
+ }
+ /* capture optional arguments */
+ for (i = 0; i < n_opt; i++) {
+ var = rb_scan_args_next_param();
+ if (argi < argc - n_trail) {
+ if (var) *var = argv[argi];
+ argi++;
+ }
+ else {
+ if (var) *var = Qnil;
+ }
+ }
+ /* capture variable length arguments */
+ if (f_var) {
+ int n_var = argc - argi - n_trail;
+
+ var = rb_scan_args_next_param();
+ if (0 < n_var) {
+ if (var) *var = rb_ary_new_from_values(n_var, &argv[argi]);
+ argi += n_var;
+ }
+ else {
+ if (var) *var = rb_ary_new();
+ }
+ }
+ /* capture trailing mandatory arguments */
+ for (i = 0; i < n_trail; i++) {
+ var = rb_scan_args_next_param();
+ if (var) *var = argv[argi];
+ argi++;
+ }
+ /* capture an option hash - phase 2: assignment */
+ if (f_hash) {
+ var = rb_scan_args_next_param();
+ if (var) *var = hash;
+ }
+ /* capture iterator block */
+ if (f_block) {
+ var = rb_scan_args_next_param();
+ if (rb_block_given_p()) {
+ *var = rb_block_proc();
+ }
+ else {
+ *var = Qnil;
+ }
+ }
+
+ if (argi == argc) {
+ return argc;
+ }
+
+ argc_error:
+ return -(argc + 1);
+#undef rb_scan_args_next_param
}
+
+static int
+rb_scan_args_result(const struct rb_scan_args_t *const arg, int argc)
+{
+ const int n_lead = arg->n_lead;
+ const int n_opt = arg->n_opt;
+ const int n_trail = arg->n_trail;
+ const int n_mand = n_lead + n_trail;
+ const bool f_var = arg->f_var;
+
+ if (argc >= 0) {
+ return argc;
+ }
+
+ argc = -argc - 1;
+ rb_error_arity(argc, n_mand, f_var ? UNLIMITED_ARGUMENTS : n_mand + n_opt);
+ UNREACHABLE_RETURN(-1);
+}
+
+#undef rb_scan_args
+int
+rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)
+{
+ va_list vargs;
+ struct rb_scan_args_t arg;
+ rb_scan_args_parse(RB_SCAN_ARGS_PASS_CALLED_KEYWORDS, fmt, &arg);
+ va_start(vargs,fmt);
+ argc = rb_scan_args_assign(&arg, argc, argv, vargs);
+ va_end(vargs);
+ return rb_scan_args_result(&arg, argc);
+}
+
+#undef rb_scan_args_kw
+int
+rb_scan_args_kw(int kw_flag, int argc, const VALUE *argv, const char *fmt, ...)
+{
+ va_list vargs;
+ struct rb_scan_args_t arg;
+ rb_scan_args_parse(kw_flag, fmt, &arg);
+ va_start(vargs,fmt);
+ argc = rb_scan_args_assign(&arg, argc, argv, vargs);
+ va_end(vargs);
+ return rb_scan_args_result(&arg, argc);
+}
+
+/*!
+ * \}
+ */
diff --git a/common.mk b/common.mk
new file mode 100644
index 0000000000..126053c9c8
--- /dev/null
+++ b/common.mk
@@ -0,0 +1,18378 @@
+# -*- mode: makefile-gmake; indent-tabs-mode: t -*-
+
+bin: $(PROGRAM) $(WPROGRAM)
+lib: $(LIBRUBY)
+dll: $(LIBRUBY_SO)
+
+.SUFFIXES: .rbinc .rb .inc .h .c .y .i .$(ASMEXT) .$(DTRACE_EXT)
+
+# V=0 quiet, V=1 verbose. other values don't work.
+V = 0
+V0 = $(V:0=)
+Q1 = $(V:1=)
+Q = $(Q1:0=@)
+ECHO0 = $(ECHO1:0=echo)
+ECHO = @$(ECHO0)
+
+mflags = $(MFLAGS)
+gnumake_recursive =
+enable_shared = $(ENABLE_SHARED:no=)
+
+UNICODE_VERSION = 15.0.0
+UNICODE_EMOJI_VERSION_0 = $(UNICODE_VERSION)///
+UNICODE_EMOJI_VERSION_1 = $(UNICODE_EMOJI_VERSION_0:.0///=)
+UNICODE_EMOJI_VERSION = $(UNICODE_EMOJI_VERSION_1:///=)
+UNICODE_BETA = NO
+
+### set the following environment variable or uncomment the line if
+### the Unicode data files should be updated completely on every update ('make up',...).
+# ALWAYS_UPDATE_UNICODE = yes
+UNICODE_DATA_DIR = enc/unicode/data/$(UNICODE_VERSION)/ucd
+UNICODE_SRC_DATA_DIR = $(srcdir)/$(UNICODE_DATA_DIR)
+UNICODE_SRC_EMOJI_DATA_DIR = $(srcdir)/enc/unicode/data/emoji/$(UNICODE_EMOJI_VERSION)
+UNICODE_HDR_DIR = $(srcdir)/enc/unicode/$(UNICODE_VERSION)
+UNICODE_DATA_HEADERS = \
+ $(UNICODE_HDR_DIR)/casefold.h \
+ $(UNICODE_HDR_DIR)/name2ctype.h \
+ $(empty)
+
+RUBY_RELEASE_DATE = $(RUBY_RELEASE_YEAR)-$(RUBY_RELEASE_MONTH)-$(RUBY_RELEASE_DAY)
+RUBYLIB = $(PATH_SEPARATOR)
+RUBYOPT = -
+RUN_OPTS = --disable-gems
+
+# GITPULLOPTIONS = --no-tags
+
+INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir) -I$(UNICODE_HDR_DIR) $(incflags)
+
+GEM_HOME =
+GEM_PATH =
+GEM_VENDOR =
+
+BENCHMARK_DRIVER_GIT_URL = https://github.com/benchmark-driver/benchmark-driver
+BENCHMARK_DRIVER_GIT_REF = v0.16.0
+SIMPLECOV_GIT_URL = https://github.com/colszowka/simplecov.git
+SIMPLECOV_GIT_REF = v0.17.0
+SIMPLECOV_HTML_GIT_URL = https://github.com/colszowka/simplecov-html.git
+SIMPLECOV_HTML_GIT_REF = v0.10.2
+DOCLIE_GIT_URL = https://github.com/ms-ati/docile.git
+DOCLIE_GIT_REF = v1.3.2
+
+STATIC_RUBY = static-ruby
+
+TIMESTAMPDIR = $(EXTOUT)/.timestamp
+RUBYCOMMONDIR = $(EXTOUT)/common
+EXTCONF = extconf.rb
+LIBRUBY_EXTS = ./.libruby-with-ext.time
+REVISION_H = ./.revision.time
+PLATFORM_D = $(TIMESTAMPDIR)/.$(PLATFORM_DIR).time
+ENC_TRANS_D = $(TIMESTAMPDIR)/.enc-trans.time
+RDOC = $(XRUBY) "$(srcdir)/libexec/rdoc" --root "$(srcdir)" --encoding=UTF-8 --all
+RDOCOUT = $(EXTOUT)/rdoc
+HTMLOUT = $(EXTOUT)/html
+CAPIOUT = doc/capi
+INSTALL_DOC_OPTS = --rdoc-output="$(RDOCOUT)" --html-output="$(HTMLOUT)"
+RDOC_GEN_OPTS = --page-dir "$(srcdir)/doc" --no-force-update \
+ --title "Documentation for Ruby $(RUBY_API_VERSION)" \
+ --main README.md
+
+INITOBJS = dmyext.$(OBJEXT) dmyenc.$(OBJEXT)
+NORMALMAINOBJ = main.$(OBJEXT)
+MAINOBJ = $(NORMALMAINOBJ)
+DLDOBJS = $(INITOBJS)
+EXTSOLIBS =
+MINIOBJS = $(ARCHMINIOBJS) miniinit.$(OBJEXT) dmyext.$(OBJEXT)
+ENC_MK = enc.mk
+MAKE_ENC = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \
+ RUBY="$(BOOTSTRAPRUBY)" MINIRUBY="$(BOOTSTRAPRUBY)" $(mflags)
+
+COMMONOBJS = array.$(OBJEXT) \
+ ast.$(OBJEXT) \
+ bignum.$(OBJEXT) \
+ class.$(OBJEXT) \
+ compar.$(OBJEXT) \
+ compile.$(OBJEXT) \
+ complex.$(OBJEXT) \
+ cont.$(OBJEXT) \
+ debug.$(OBJEXT) \
+ debug_counter.$(OBJEXT) \
+ dir.$(OBJEXT) \
+ dln_find.$(OBJEXT) \
+ encoding.$(OBJEXT) \
+ enum.$(OBJEXT) \
+ enumerator.$(OBJEXT) \
+ error.$(OBJEXT) \
+ eval.$(OBJEXT) \
+ file.$(OBJEXT) \
+ gc.$(OBJEXT) \
+ hash.$(OBJEXT) \
+ inits.$(OBJEXT) \
+ io.$(OBJEXT) \
+ io_buffer.$(OBJEXT) \
+ iseq.$(OBJEXT) \
+ load.$(OBJEXT) \
+ marshal.$(OBJEXT) \
+ math.$(OBJEXT) \
+ memory_view.$(OBJEXT) \
+ mjit.$(OBJEXT) \
+ mjit_c.$(OBJEXT) \
+ node.$(OBJEXT) \
+ numeric.$(OBJEXT) \
+ object.$(OBJEXT) \
+ pack.$(OBJEXT) \
+ parse.$(OBJEXT) \
+ proc.$(OBJEXT) \
+ process.$(OBJEXT) \
+ ractor.$(OBJEXT) \
+ random.$(OBJEXT) \
+ range.$(OBJEXT) \
+ rational.$(OBJEXT) \
+ re.$(OBJEXT) \
+ regcomp.$(OBJEXT) \
+ regenc.$(OBJEXT) \
+ regerror.$(OBJEXT) \
+ regexec.$(OBJEXT) \
+ regparse.$(OBJEXT) \
+ regsyntax.$(OBJEXT) \
+ ruby.$(OBJEXT) \
+ scheduler.$(OBJEXT) \
+ shape.$(OBJEXT) \
+ signal.$(OBJEXT) \
+ sprintf.$(OBJEXT) \
+ st.$(OBJEXT) \
+ strftime.$(OBJEXT) \
+ string.$(OBJEXT) \
+ struct.$(OBJEXT) \
+ symbol.$(OBJEXT) \
+ thread.$(OBJEXT) \
+ time.$(OBJEXT) \
+ transcode.$(OBJEXT) \
+ transient_heap.$(OBJEXT) \
+ util.$(OBJEXT) \
+ variable.$(OBJEXT) \
+ version.$(OBJEXT) \
+ vm.$(OBJEXT) \
+ vm_backtrace.$(OBJEXT) \
+ vm_dump.$(OBJEXT) \
+ vm_sync.$(OBJEXT) \
+ vm_trace.$(OBJEXT) \
+ $(YJIT_OBJ) \
+ $(COROUTINE_OBJ) \
+ $(DTRACE_OBJ) \
+ $(BUILTIN_ENCOBJS) \
+ $(BUILTIN_TRANSOBJS) \
+ $(MISSING)
+
+EXPORTOBJS = $(DLNOBJ) \
+ localeinit.$(OBJEXT) \
+ loadpath.$(OBJEXT) \
+ $(COMMONOBJS)
+
+OBJS = $(EXPORTOBJS) builtin.$(OBJEXT)
+ALLOBJS = $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(INITOBJS)
+
+GOLFOBJS = goruby.$(OBJEXT)
+
+DEFAULT_PRELUDES = $(GEM_PRELUDE)
+PRELUDE_SCRIPTS = $(DEFAULT_PRELUDES)
+GEM_PRELUDE =
+PRELUDES = {$(srcdir)}miniprelude.c
+GOLFPRELUDES = {$(srcdir)}golf_prelude.c
+
+SCRIPT_ARGS = --dest-dir="$(DESTDIR)" \
+ --extout="$(EXTOUT)" \
+ --ext-build-dir="./ext" \
+ --mflags="$(MFLAGS)" \
+ --make-flags="$(MAKEFLAGS)"
+EXTMK_ARGS = $(SCRIPT_ARGS) --extension $(EXTS) --extstatic $(EXTSTATIC) \
+ --make-flags="V=$(V) MINIRUBY='$(MINIRUBY)'" \
+ --gnumake=$(gnumake) --extflags="$(EXTLDFLAGS)" \
+ --
+INSTRUBY = $(SUDO) $(INSTRUBY_ENV) $(RUNRUBY) -r./$(arch)-fake $(tooldir)/rbinstall.rb
+INSTRUBY_ARGS = $(SCRIPT_ARGS) \
+ --data-mode=$(INSTALL_DATA_MODE) \
+ --prog-mode=$(INSTALL_PROG_MODE) \
+ --installed-list $(INSTALLED_LIST) \
+ --mantype="$(MANTYPE)" \
+ $(INSTRUBY_OPTS)
+INSTALL_PROG_MODE = 0755
+INSTALL_DATA_MODE = 0644
+
+BOOTSTRAPRUBY_COMMAND = $(BOOTSTRAPRUBY) $(BOOTSTRAPRUBY_OPT)
+TESTSDIR = $(srcdir)/test
+TOOL_TESTSDIR = $(tooldir)/test
+TEST_EXCLUDES = --excludes-dir=$(TESTSDIR)/excludes --name=!/memory_leak/
+TESTWORKDIR = testwork
+TESTOPTS = $(RUBY_TESTOPTS)
+
+TESTRUN_SCRIPT = $(srcdir)/test.rb
+
+COMPILE_PRELUDE = $(tooldir)/generic_erb.rb $(srcdir)/template/prelude.c.tmpl \
+ $(tooldir)/ruby_vm/helpers/c_escape.rb
+
+SHOWFLAGS = $(no_silence:no=showflags)
+
+MAKE_LINK = $(MINIRUBY) -rfileutils -e "include FileUtils::Verbose" \
+ -e "src, dest = ARGV" \
+ -e "exit if File.identical?(src, dest) or cmp(src, dest) rescue nil" \
+ -e "def noraise; yield; rescue; rescue NotImplementedError; end" \
+ -e "noraise {ln_sf('../'*dest.count('/')+src, dest)} or" \
+ -e "noraise {ln(src, dest)} or" \
+ -e "cp(src, dest)"
+
+# For release builds
+YJIT_RUSTC_ARGS = --crate-name=yjit \
+ --crate-type=staticlib \
+ --edition=2021 \
+ -g \
+ -C opt-level=3 \
+ -C overflow-checks=on \
+ '--out-dir=$(CARGO_TARGET_DIR)/release/' \
+ $(top_srcdir)/yjit/src/lib.rs
+
+all: $(SHOWFLAGS) main docs
+
+main: $(SHOWFLAGS) exts $(ENCSTATIC:static=lib)encs
+ @$(NULLCMD)
+
+main: $(srcdir)/lib/ruby_vm/mjit/instruction.rb
+srcs: $(srcdir)/lib/ruby_vm/mjit/instruction.rb
+$(srcdir)/lib/ruby_vm/mjit/instruction.rb: $(tooldir)/insns2vm.rb $(tooldir)/ruby_vm/views/lib/ruby_vm/mjit/instruction.rb.erb $(srcdir)/insns.def
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) -Ku $(tooldir)/insns2vm.rb --basedir="$(srcdir)" $(INSNS2VMOPT) $@
+
+mjit-headers: $(MJIT_SUPPORT)-mjit-headers
+no-mjit-headers: PHONY
+yes-mjit-headers: mjit_config.h PHONY
+
+mjit.$(OBJEXT): mjit_config.h
+mjit_config.h: Makefile
+
+.PHONY: mjit-bindgen
+mjit-bindgen:
+ $(Q) $(BASERUBY) -rrubygems -C $(srcdir)/tool/mjit bindgen.rb $(CURDIR)
+
+# These rules using MJIT_HEADER_SUFFIX must be in common.mk, not
+# Makefile.in, in order to override the macro in defs/universal.mk.
+
+# Other `-Dxxx`s preceding `-DMJIT_HEADER` will be removed in transform_mjit_header.rb.
+# So `-DMJIT_HEADER` should be passed first when rb_mjit_header.h is generated.
+$(TIMESTAMPDIR)/$(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).time: probes.h vm.$(OBJEXT) \
+ $(TIMESTAMPDIR)/$(arch)/.time $(tooldir)/mjit_tabs.rb $(PREP) $(RBCONFIG)
+ $(ECHO) building $(@F:.time=.h)
+ $(Q)$(MINIRUBY) $(tooldir)/mjit_tabs.rb "$(MJIT_TABS)" \
+ $(CPP) -DMJIT_HEADER $(MJIT_HEADER_FLAGS) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(srcdir)/vm.c $(CPPOUTFLAG)$(@F:.time=.h).new
+ $(Q) $(IFCHANGE) "--timestamp=$@" $(@F:.time=.h) $(@F:.time=.h).new
+
+$(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).h: $(TIMESTAMPDIR)/$(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).time
+
+$(MJIT_MIN_HEADER:.h=)$(MJIT_HEADER_SUFFIX).h: \
+ $(TIMESTAMPDIR)/$(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).time \
+ $(tooldir)/transform_mjit_header.rb $(PREP) \
+ $(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).h
+ $(ECHO) building $@
+ $(Q)$(MINIRUBY) $(tooldir)/transform_mjit_header.rb "$(CC) $(CFLAGS) -w" $(MJIT_HEADER:.h=)$(MJIT_HEADER_ARCH).h $@
+ $(Q) $(MAKEDIRS) $(MJIT_HEADER_INSTALL_DIR)
+ $(Q) $(MAKE_LINK) $@ $(MJIT_HEADER_INSTALL_DIR)/$(@F)
+
+.PHONY: showflags
+exts enc trans: $(SHOWFLAGS)
+showflags:
+ $(MESSAGE_BEGIN) \
+ " BASERUBY = $(BASERUBY)" \
+ " CC = $(CC)" \
+ " LD = $(LD)" \
+ " LDSHARED = $(LDSHARED)" \
+ " CFLAGS = $(CFLAGS)" \
+ " XCFLAGS = $(XCFLAGS)" \
+ " CPPFLAGS = $(CPPFLAGS)" \
+ " DLDFLAGS = $(DLDFLAGS)" \
+ " SOLIBS = $(SOLIBS)" \
+ " LANG = $(LANG)" \
+ " LC_ALL = $(LC_ALL)" \
+ " LC_CTYPE = $(LC_CTYPE)" \
+ " MFLAGS = $(MFLAGS)" \
+ " RUSTC = $(RUSTC)" \
+ " YJIT_RUSTC_ARGS = $(YJIT_RUSTC_ARGS)" \
+ $(MESSAGE_END)
+ -@$(CC_VERSION)
+
+.PHONY: showconfig
+showconfig:
+ @$(ECHO_BEGIN) \
+ $(configure_args) \
+ $(ECHO_END)
+
+EXTS_NOTE = -f $(EXTS_MK) $(mflags) RUBY="$(MINIRUBY)" top_srcdir="$(srcdir)" note
+
+exts: build-ext
+
+EXTS_MK = exts.mk
+$(EXTS_MK): ext/configure-ext.mk $(srcdir)/template/exts.mk.tmpl \
+ $(TIMESTAMPDIR)/$(arch)/.time $(TIMESTAMPDIR)/.RUBYCOMMONDIR.time
+ $(Q)$(MAKE) -f ext/configure-ext.mk $(mflags) V=$(V) EXTSTATIC=$(EXTSTATIC) \
+ gnumake=$(gnumake) MINIRUBY="$(MINIRUBY)" \
+ EXTLDFLAGS="$(EXTLDFLAGS)" srcdir="$(srcdir)"
+ $(ECHO) generating makefile $@
+ $(Q)$(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ -c \
+ $(srcdir)/template/exts.mk.tmpl --gnumake=$(gnumake) --configure-exts=ext/configure-ext.mk
+
+ext/configure-ext.mk: $(PREP) all-incs $(MKFILES) $(RBCONFIG) $(LIBRUBY) \
+ $(srcdir)/template/configure-ext.mk.tmpl
+ $(ECHO) generating makefiles $@
+ $(Q)$(MAKEDIRS) $(@D)
+ $(Q)$(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ -c \
+ $(srcdir)/template/$(@F).tmpl --srcdir="$(srcdir)" \
+ --miniruby="$(MINIRUBY)" --script-args='$(SCRIPT_ARGS)'
+
+configure-ext: $(EXTS_MK)
+
+build-ext: $(EXTS_MK)
+ $(Q)$(MAKE) -f $(EXTS_MK) $(mflags) libdir="$(libdir)" LIBRUBY_EXTS=$(LIBRUBY_EXTS) \
+ EXTENCS="$(ENCOBJS)" MINIRUBY="$(MINIRUBY)" UPDATE_LIBRARIES=no $(EXTSTATIC)
+ $(Q)$(MAKE) $(EXTS_NOTE)
+
+exts-note: $(EXTS_MK)
+ $(Q)$(MAKE) $(EXTS_NOTE)
+
+ext/extinit.c: $(srcdir)/template/extinit.c.tmpl $(PREP)
+ $(MAKEDIRS) $(@D)
+ $(Q)$(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ -c \
+ $(srcdir)/template/extinit.c.tmpl $(EXTINITS)
+
+prog: program wprogram
+programs: $(PROGRAM) $(WPROGRAM) $(arch)-fake.rb
+
+$(PREP): $(MKFILES)
+
+miniruby$(EXEEXT): config.status $(ALLOBJS) $(ARCHFILE)
+
+objs: $(ALLOBJS)
+
+GORUBY = go$(RUBY_INSTALL_NAME)
+GOLF = $(GORUBY)
+golf: $(GOLF)
+$(GOLF): $(LIBRUBY) $(GOLFOBJS) PHONY
+ $(Q) $(MAKE) $(mflags) \
+ GOLF=_dummy_golf_target_to_avoid_conflict_just_in_case_ \
+ MAINOBJ=goruby.$(OBJEXT) \
+ PROGRAM=$(GORUBY)$(EXEEXT) \
+ V=$(V) \
+ program
+capi: $(CAPIOUT)/.timestamp PHONY
+
+$(CAPIOUT)/.timestamp: Doxyfile $(PREP)
+ $(Q) $(MAKEDIRS) "$(@D)"
+ $(ECHO) generating capi
+ -$(Q) $(DOXYGEN) -b
+ $(Q) $(MINIRUBY) -e 'File.open(ARGV[0], "w"){'"|f|"' f.puts(Time.now)}' "$@"
+
+Doxyfile: $(srcdir)/template/Doxyfile.tmpl $(PREP) $(tooldir)/generic_erb.rb $(RBCONFIG)
+ $(ECHO) generating $@
+ $(Q) $(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ $(srcdir)/template/Doxyfile.tmpl \
+ --srcdir="$(srcdir)" --miniruby="$(MINIRUBY)"
+
+program: $(SHOWFLAGS) $(PROGRAM)
+wprogram: $(SHOWFLAGS) $(WPROGRAM)
+mini: PHONY miniruby$(EXEEXT)
+
+$(PROGRAM) $(WPROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP)
+
+$(LIBRUBY_A): $(LIBRUBY_A_OBJS) $(MAINOBJ) $(INITOBJS) $(ARCHFILE)
+
+$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(LIBRUBY_A) $(PREP) $(BUILTIN_ENCOBJS)
+
+$(LIBRUBY_EXTS):
+ @$(NULLCMD) > $@
+
+$(STATIC_RUBY)$(EXEEXT): $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A)
+ $(Q)$(RM) $@
+ $(PURIFY) $(CC) $(MAINOBJ) $(DLDOBJS) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)$@ $(LDFLAGS) $(XLDFLAGS)
+
+ruby.imp: $(COMMONOBJS)
+ $(Q){ \
+ $(NM) -Pgp $(COMMONOBJS) | \
+ awk 'BEGIN{print "#!"}; $$2~/^[A-TV-Z]$$/&&$$1!~/^$(SYMBOL_PREFIX)(Init_|InitVM_|ruby_static_id_|.*_threadptr_|rb_ec_)|^\./{print $$1}'; \
+ ($(CHDIR) $(srcdir) && \
+ exec sed -n '/^MJIT_FUNC_EXPORTED/!d;N;s/.*\n\(rb_[a-zA-Z_0-9]*\).*/$(SYMBOL_PREFIX)\1/p' cont.c gc.c thread*c vm*.c) \
+ } | \
+ sort -u -o $@
+
+install: install-$(INSTALLDOC)
+docs: $(DOCTARGETS)
+pkgconfig-data: $(ruby_pc)
+$(ruby_pc): $(srcdir)/template/ruby.pc.in config.status
+
+install-all: docs pre-install-all do-install-all post-install-all
+pre-install-all:: all pre-install-local pre-install-ext pre-install-gem pre-install-doc
+do-install-all: pre-install-all
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all $(INSTALL_DOC_OPTS)
+post-install-all:: post-install-local post-install-ext post-install-gem post-install-doc
+ @$(NULLCMD)
+
+install-nodoc: pre-install-nodoc do-install-nodoc post-install-nodoc
+pre-install-nodoc:: pre-install-local pre-install-ext pre-install-gem
+do-install-nodoc: main pre-install-nodoc
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all --exclude=doc
+post-install-nodoc:: post-install-local post-install-ext post-install-gem
+
+install-local: pre-install-local do-install-local post-install-local
+pre-install-local:: pre-install-bin pre-install-lib pre-install-man
+do-install-local: $(PROGRAM) pre-install-local
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=local
+post-install-local:: post-install-bin post-install-lib post-install-man
+
+install-ext: pre-install-ext do-install-ext post-install-ext
+pre-install-ext:: pre-install-ext-arch pre-install-ext-comm
+do-install-ext: exts pre-install-ext
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext
+post-install-ext:: post-install-ext-arch post-install-ext-comm
+
+install-arch: pre-install-arch do-install-arch post-install-arch
+pre-install-arch:: pre-install-bin pre-install-ext-arch
+do-install-arch: main do-install-arch
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=arch
+post-install-arch:: post-install-bin post-install-ext-arch
+
+install-comm: pre-install-comm do-install-comm post-install-comm
+pre-install-comm:: pre-install-lib pre-install-ext-comm pre-install-man
+do-install-comm: $(PREP) pre-install-comm
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=lib --install=ext-comm --install=man
+post-install-comm:: post-install-lib post-install-ext-comm post-install-man
+
+install-bin: pre-install-bin do-install-bin post-install-bin
+pre-install-bin:: install-prereq
+do-install-bin: $(PROGRAM) pre-install-bin
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=bin
+post-install-bin::
+ @$(NULLCMD)
+
+install-lib: pre-install-lib do-install-lib post-install-lib
+pre-install-lib:: install-prereq
+do-install-lib: $(PREP) pre-install-lib
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=lib
+post-install-lib::
+ @$(NULLCMD)
+
+install-ext-comm: pre-install-ext-comm do-install-ext-comm post-install-ext-comm
+pre-install-ext-comm:: install-prereq
+do-install-ext-comm: exts pre-install-ext-comm
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext-comm
+post-install-ext-comm::
+ @$(NULLCMD)
+
+install-ext-arch: pre-install-ext-arch do-install-ext-arch post-install-ext-arch
+pre-install-ext-arch:: install-prereq
+do-install-ext-arch: exts pre-install-ext-arch
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext-arch
+post-install-ext-arch::
+ @$(NULLCMD)
+
+install-man: pre-install-man do-install-man post-install-man
+pre-install-man:: install-prereq
+do-install-man: $(PREP) pre-install-man
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=man
+post-install-man::
+ @$(NULLCMD)
+
+install-capi: capi pre-install-capi do-install-capi post-install-capi
+pre-install-capi:: install-prereq
+do-install-capi: $(PREP) pre-install-capi
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=capi
+post-install-capi::
+ @$(NULLCMD)
+
+what-where: no-install
+no-install: no-install-$(INSTALLDOC)
+what-where-all: no-install-all
+no-install-all: pre-no-install-all dont-install-all post-no-install-all
+pre-no-install-all:: pre-no-install-local pre-no-install-ext pre-no-install-doc
+dont-install-all: $(PROGRAM)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all $(INSTALL_DOC_OPTS)
+post-no-install-all:: post-no-install-local post-no-install-ext post-no-install-doc
+ @$(NULLCMD)
+
+uninstall: $(INSTALLED_LIST) sudo-precheck
+ $(Q)$(SUDO) $(MINIRUBY) $(tooldir)/rbuninstall.rb --destdir=$(DESTDIR) $(INSTALLED_LIST)
+
+reinstall: all uninstall install
+
+what-where-nodoc: no-install-nodoc
+no-install-nodoc: pre-no-install-nodoc dont-install-nodoc post-no-install-nodoc
+pre-no-install-nodoc:: pre-no-install-local pre-no-install-ext
+dont-install-nodoc: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --exclude=doc
+post-no-install-nodoc:: post-no-install-local post-no-install-ext
+
+what-where-local: no-install-local
+no-install-local: pre-no-install-local dont-install-local post-no-install-local
+pre-no-install-local:: pre-no-install-bin pre-no-install-lib pre-no-install-man
+dont-install-local: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=local
+post-no-install-local:: post-no-install-bin post-no-install-lib post-no-install-man
+
+what-where-ext: no-install-ext
+no-install-ext: pre-no-install-ext dont-install-ext post-no-install-ext
+pre-no-install-ext:: pre-no-install-ext-arch pre-no-install-ext-comm
+dont-install-ext: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext
+post-no-install-ext:: post-no-install-ext-arch post-no-install-ext-comm
+
+what-where-arch: no-install-arch
+no-install-arch: pre-no-install-arch dont-install-arch post-no-install-arch
+pre-no-install-arch:: pre-no-install-bin pre-no-install-ext-arch
+dont-install-arch: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=bin --install=ext-arch
+post-no-install-arch:: post-no-install-lib post-no-install-man post-no-install-ext-arch
+
+what-where-comm: no-install-comm
+no-install-comm: pre-no-install-comm dont-install-comm post-no-install-comm
+pre-no-install-comm:: pre-no-install-lib pre-no-install-ext-comm pre-no-install-man
+dont-install-comm: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=lib --install=ext-comm --install=man
+post-no-install-comm:: post-no-install-lib post-no-install-ext-comm post-no-install-man
+
+what-where-bin: no-install-bin
+no-install-bin: pre-no-install-bin dont-install-bin post-no-install-bin
+pre-no-install-bin:: install-prereq
+dont-install-bin: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=bin
+post-no-install-bin::
+ @$(NULLCMD)
+
+what-where-lib: no-install-lib
+no-install-lib: pre-no-install-lib dont-install-lib post-no-install-lib
+pre-no-install-lib:: install-prereq
+dont-install-lib: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=lib
+post-no-install-lib::
+ @$(NULLCMD)
+
+what-where-ext-comm: no-install-ext-comm
+no-install-ext-comm: pre-no-install-ext-comm dont-install-ext-comm post-no-install-ext-comm
+pre-no-install-ext-comm:: install-prereq
+dont-install-ext-comm: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext-comm
+post-no-install-ext-comm::
+ @$(NULLCMD)
+
+what-where-ext-arch: no-install-ext-arch
+no-install-ext-arch: pre-no-install-ext-arch dont-install-ext-arch post-no-install-ext-arch
+pre-no-install-ext-arch:: install-prereq
+dont-install-ext-arch: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext-arch
+post-no-install-ext-arch::
+ @$(NULLCMD)
+
+what-where-man: no-install-man
+no-install-man: pre-no-install-man dont-install-man post-no-install-man
+pre-no-install-man:: install-prereq
+dont-install-man: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=man
+post-no-install-man::
+ @$(NULLCMD)
+
+install-doc: rdoc pre-install-doc do-install-doc post-install-doc
+pre-install-doc:: install-prereq
+do-install-doc: $(PROGRAM) pre-install-doc
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=rdoc $(INSTALL_DOC_OPTS)
+post-install-doc::
+ @$(NULLCMD)
+
+install-gem: pre-install-gem do-install-gem post-install-gem
+pre-install-gem:: prepare-gems pre-install-bin pre-install-lib pre-install-man
+do-install-gem: $(PROGRAM) pre-install-gem
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=gem
+post-install-gem::
+ @$(NULLCMD)
+
+install-dbg: pre-install-dbg do-install-dbg post-install-dbg
+pre-install-dbg::
+do-install-dbg: $(PROGRAM) pre-install-dbg
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=dbg
+post-install-dbg::
+ @$(NULLCMD)
+
+rdoc: PHONY main
+ @echo Generating RDoc documentation
+ $(Q) $(RDOC) --ri --op "$(RDOCOUT)" $(RDOC_GEN_OPTS) $(RDOCFLAGS) "$(srcdir)"
+
+html: PHONY main
+ @echo Generating RDoc HTML files
+ $(Q) $(RDOC) --op "$(HTMLOUT)" $(RDOC_GEN_OPTS) $(RDOCFLAGS) "$(srcdir)"
+
+rdoc-coverage: PHONY main
+ @echo Generating RDoc coverage report
+ $(Q) $(RDOC) --quiet -C $(RDOCFLAGS) "$(srcdir)"
+
+RDOCBENCHOUT=/tmp/rdocbench
+
+GCBENCH_ITEM=null
+
+gcbench: PHONY
+ $(Q) $(XRUBY) "$(srcdir)/benchmark/gc/gcbench.rb" $(GCBENCH_ITEM)
+
+gcbench-rdoc: PHONY
+ $(Q) $(XRUBY) "$(srcdir)/benchmark/gc/gcbench.rb" rdoc
+
+nodoc: PHONY
+
+what-where-doc: no-install-doc
+no-install-doc: pre-no-install-doc dont-install-doc post-no-install-doc
+pre-no-install-doc:: install-prereq
+dont-install-doc:: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=rdoc $(INSTALL_DOC_OPTS)
+post-no-install-doc::
+ @$(NULLCMD)
+
+CLEAR_INSTALLED_LIST = clear-installed-list
+
+install-prereq: $(CLEAR_INSTALLED_LIST) yes-fake sudo-precheck PHONY
+
+clear-installed-list: PHONY
+ @> $(INSTALLED_LIST) set MAKE="$(MAKE)"
+
+clean: clean-ext clean-enc clean-golf clean-docs clean-extout clean-local clean-platform clean-spec
+clean-local:: clean-runnable
+ $(Q)$(RM) $(OBJS) $(MINIOBJS) $(INITOBJS) $(MAINOBJ) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY) $(LIBRUBY_ALIASES)
+ $(Q)$(RM) $(PROGRAM) $(WPROGRAM) miniruby$(EXEEXT) dmyext.$(OBJEXT) dmyenc.$(OBJEXT) $(ARCHFILE) .*.time
+ $(Q)$(RM) y.tab.c y.output encdb.h transdb.h config.log rbconfig.rb $(ruby_pc) $(COROUTINE_H:/Context.h=/.time)
+ $(Q)$(RM) probes.h probes.$(OBJEXT) probes.stamp ruby-glommed.$(OBJEXT) ruby.imp ChangeLog $(STATIC_RUBY)$(EXEEXT)
+ $(Q)$(RM) GNUmakefile.old Makefile.old $(arch)-fake.rb bisect.sh $(ENC_TRANS_D) builtin_binary.inc
+ -$(Q)$(RMALL) yjit/target
+ -$(Q) $(RMDIR) enc/jis enc/trans enc $(COROUTINE_H:/Context.h=) coroutine yjit 2> $(NULL) || $(NULLCMD)
+
+bin/clean-runnable:: PHONY
+ $(Q)$(CHDIR) bin 2>$(NULL) && $(RM) $(PROGRAM) $(WPROGRAM) $(GORUBY)$(EXEEXT) bin/*.$(DLEXT) 2>$(NULL) || $(NULLCMD)
+lib/clean-runnable:: PHONY
+ $(Q)$(CHDIR) lib 2>$(NULL) && $(RM) $(LIBRUBY_A) $(LIBRUBY) $(LIBRUBY_ALIASES) $(RUBY_BASE_NAME)/$(RUBY_PROGRAM_VERSION) $(RUBY_BASE_NAME)/vendor_ruby 2>$(NULL) || $(NULLCMD)
+clean-runnable:: bin/clean-runnable lib/clean-runnable PHONY
+ $(Q)$(RMDIR) lib/$(RUBY_BASE_NAME) lib bin 2>$(NULL) || $(NULLCMD)
+clean-ext:: PHONY
+clean-golf: PHONY
+ $(Q)$(RM) $(GORUBY)$(EXEEXT) $(GOLFOBJS)
+clean-rdoc: PHONY
+clean-html: PHONY
+clean-capi: PHONY
+clean-platform: PHONY
+clean-extout: PHONY
+ -$(Q)$(RMDIR) $(EXTOUT)/$(arch) $(RUBYCOMMONDIR) $(EXTOUT) 2> $(NULL) || $(NULLCMD)
+clean-docs: clean-rdoc clean-html clean-capi
+clean-spec: PHONY
+clean-rubyspec: clean-spec
+
+distclean: distclean-ext distclean-enc distclean-golf distclean-docs distclean-extout distclean-local distclean-platform distclean-spec
+distclean-local:: clean-local
+ $(Q)$(RM) $(MKFILES) yasmdata.rb *.inc $(PRELUDES) *.rbinc
+ $(Q)$(RM) config.cache config.status config.status.lineno
+ $(Q)$(RM) *~ *.bak *.stackdump core *.core gmon.out $(PREP)
+ -$(Q)$(RMALL) $(srcdir)/autom4te.cache
+distclean-ext:: PHONY
+distclean-golf: clean-golf
+distclean-rdoc: clean-rdoc
+distclean-html: clean-html
+distclean-capi: clean-capi
+distclean-docs: clean-docs
+distclean-extout: clean-extout
+distclean-platform: clean-platform
+distclean-spec: clean-spec
+distclean-rubyspec: distclean-spec
+
+realclean:: realclean-ext realclean-local realclean-enc realclean-golf realclean-extout
+realclean-local:: distclean-local realclean-srcs-local
+
+clean-srcs:: clean-srcs-local clean-srcs-ext
+realclean-srcs:: realclean-srcs-local realclean-srcs-ext
+
+clean-srcs-local::
+ $(Q)$(RM) parse.c parse.h lex.c enc/trans/newline.c revision.h
+ $(Q)$(RM) id.c id.h probes.dmyh probes.h
+ $(Q)$(RM) encdb.h transdb.h verconf.h ruby-runner.h
+ $(Q)$(RM) mjit_config.h rb_mjit_header.h
+ $(Q)$(RM) $(MJIT_MIN_HEADER) $(MJIT_MIN_HEADER:.h=)$(MJIT_HEADER_SUFFIX:%=*).h
+
+realclean-srcs-local:: clean-srcs-local
+ $(Q)$(CHDIR) $(srcdir) && $(RM) \
+ parse.c parse.h lex.c enc/trans/newline.c $(PRELUDES) revision.h \
+ id.c id.h probes.dmyh configure aclocal.m4 tool/config.guess tool/config.sub gems/*.gem \
+ || $(NULLCMD)
+
+clean-srcs-ext::
+realclean-srcs-ext:: clean-srcs-ext
+
+realclean-ext:: PHONY
+realclean-golf: distclean-golf
+ $(Q)$(RM) $(GOLFPRELUDES)
+realclean-rdoc: distclean-rdoc
+realclean-html: distclean-html
+realclean-capi: distclean-capi
+realclean-docs: distclean-docs
+realclean-extout: distclean-extout
+realclean-platform: distclean-platform
+realclean-spec: distclean-spec
+realclean-rubyspec: realclean-spec
+
+clean-ext:: ext/clean .bundle/clean timestamp/clean
+distclean-ext:: ext/distclean .bundle/distclean timestamp/distclean
+realclean-ext:: ext/realclean .bundle/realclean timestamp/realclean
+
+ext/clean.mk ext/distclean.mk ext/realclean.mk::
+ext/clean:: ext/clean.mk
+ext/distclean:: ext/distclean.mk
+ext/realclean:: ext/realclean.mk
+
+timestamp/clean:: ext/clean .bundle/clean
+timestamp/distclean:: ext/distclean .bundle/distclean
+timestamp/realclean:: ext/realclean .bundle/realclean
+
+timestamp/clean timestamp/distclean timestamp/realclean::
+ $(Q)$(RM) $(TIMESTAMPDIR)/.*.time $(TIMESTAMPDIR)/$(arch)/.time
+ $(Q)$(RMDIRS) $(TIMESTAMPDIR)/$(arch) $(TIMESTAMPDIR) 2> $(NULL) || $(NULLCMD)
+
+clean-ext::
+ -$(Q)$(RM) ext/extinit.$(OBJEXT)
+
+distclean-ext realclean-ext::
+ -$(Q)$(RM) $(EXTS_MK) ext/extinit.* ext/configure-ext.mk
+ -$(Q)$(RMDIR) ext 2> $(NULL) || $(NULLCMD)
+
+clean-enc distclean-enc realclean-enc: PHONY
+
+clean-enc: clean-enc.d
+
+clean-enc.d: PHONY
+ $(Q)$(RM) $(ENC_TRANS_D)
+ -$(Q) $(RMDIR) enc/jis enc/trans enc 2> $(NULL) || $(NULLCMD)
+
+clean-rdoc distclean-rdoc realclean-rdoc:
+ @echo $(@:-rdoc=ing) rdoc
+ $(Q)$(RMALL) $(RDOCOUT)
+
+clean-html distclean-html realclean-html:
+ @echo $(@:-html=ing) HTML
+ $(Q)$(RMALL) $(HTMLOUT)
+
+clean-capi distclean-capi realclean-capi:
+ @echo $(@:-capi=ing) capi
+ $(Q)$(RMALL) $(CAPIOUT)
+
+clean-platform distclean-platform realclean-platform:
+ $(Q) $(RM) $(PLATFORM_D)
+ -$(Q) $(RMDIR) $(PLATFORM_DIR) 2> $(NULL) || $(NULLCMD)
+
+RUBYSPEC_CAPIEXT = spec/ruby/optional/capi/ext
+clean-spec: PHONY
+ -$(Q) $(RM) $(RUBYSPEC_CAPIEXT)/*.$(OBJEXT) $(RUBYSPEC_CAPIEXT)/*.$(DLEXT)
+ -$(Q) $(RMDIRS) $(RUBYSPEC_CAPIEXT) 2> $(NULL) || $(NULLCMD)
+ -$(Q) $(RMALL) rubyspec_temp
+
+check: main $(DOT_WAIT) test $(DOT_WAIT) test-tool $(DOT_WAIT) test-all
+ $(ECHO) check succeeded
+ -$(Q) : : "run only on sh"; \
+ if [ x"$(GIT)" != x ] && $(CHDIR) "$(srcdir)" && \
+ b=`$(GIT) symbolic-ref --short HEAD 2>&1` && \
+ u=`$(GIT) branch --list --format='%(upstream:short)' $$b`; then \
+ set -x; $(GIT) --no-pager log --format=oneline -G '^ *# *include *("|<ruby)' $$u..HEAD --; \
+ fi
+check-ruby: test test-ruby
+
+fake: $(CROSS_COMPILING)-fake
+yes-fake: $(arch)-fake.rb $(RBCONFIG) PHONY
+no-fake -fake: PHONY
+
+$(HAVE_BASERUBY:no=)$(arch)-fake.rb: miniruby$(EXEEXT)
+
+# actually depending on other headers more.
+$(arch:noarch=ignore)-fake.rb: $(top_srcdir)/revision.h $(top_srcdir)/version.h $(srcdir)/version.c
+$(arch:noarch=ignore)-fake.rb: {$(VPATH)}id.h {$(VPATH)}vm_opts.h
+
+$(arch:noarch=ignore)-fake.rb: $(srcdir)/template/fake.rb.in $(tooldir)/generic_erb.rb
+ $(ECHO) generating $@
+ $(Q) $(CPP) -DRUBY_EXPORT $(INCFLAGS) $(CPPFLAGS) "$(srcdir)/version.c" | \
+ $(BOOTSTRAPRUBY) "$(tooldir)/generic_erb.rb" -o $@ "$(srcdir)/template/fake.rb.in" \
+ i=- srcdir="$(srcdir)" BASERUBY="$(BASERUBY)" \
+ LIBPATHENV="$(LIBPATHENV)" PRELOADENV="$(PRELOADENV)" LIBRUBY_SO="$(LIBRUBY_SO)"
+
+noarch-fake.rb: # prerequisite of yes-fake
+ $(Q) exit > $@
+
+btest: $(TEST_RUNNABLE)-btest
+no-btest: PHONY
+yes-btest: yes-fake miniruby$(EXEEXT) PHONY
+ $(ACTIONS_GROUP)
+ $(Q)$(gnumake_recursive)$(exec) $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(BTESTRUBY) $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(BTESTS)
+ $(ACTIONS_ENDGROUP)
+
+btest-ruby: $(TEST_RUNNABLE)-btest-ruby
+no-btest-ruby: PHONY
+yes-btest-ruby: prog PHONY
+ $(ACTIONS_GROUP)
+ $(Q)$(gnumake_recursive)$(exec) $(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) -I$(srcdir)/lib $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(BTESTS)
+ $(ACTIONS_ENDGROUP)
+
+rtest: yes-fake miniruby$(EXEEXT) PHONY
+ $(ACTIONS_GROUP)
+ $(Q)$(exec) $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(BTESTRUBY) $(RUN_OPTS)" --sets=ractor -v
+ $(ACTIONS_ENDGROUP)
+
+test-basic: $(TEST_RUNNABLE)-test-basic
+no-test-basic: PHONY
+yes-test-basic: prog PHONY
+ $(ACTIONS_GROUP)
+ $(Q)$(exec) $(RUNRUBY) "$(srcdir)/basictest/runner.rb" --run-opt=$(RUN_OPTS) $(OPTS) $(TESTOPTS)
+ $(ACTIONS_ENDGROUP)
+
+test-knownbugs: test-knownbug
+test-knownbug: $(TEST_RUNNABLE)-test-knownbug
+no-test-knownbug: PHONY
+yes-test-knownbug: prog PHONY
+ $(ACTIONS_GROUP)
+ -$(exec) $(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(srcdir)/KNOWNBUGS.rb
+ $(ACTIONS_ENDGROUP)
+
+test-testframework: $(TEST_RUNNABLE)-test-testframework
+yes-test-testframework: prog PHONY
+ $(ACTIONS_GROUP)
+ $(gnumake_recursive)$(Q)$(exec) $(RUNRUBY) "$(TOOL_TESTSDIR)/runner.rb" --ruby="$(RUNRUBY)" $(TESTOPTS) testunit
+ $(ACTIONS_ENDGROUP)
+no-test-testframework: PHONY
+
+test-tool: $(TEST_RUNNABLE)-test-tool
+yes-test-tool: prog PHONY
+ $(ACTIONS_GROUP)
+ $(gnumake_recursive)$(Q)$(exec) $(RUNRUBY) "$(TOOL_TESTSDIR)/runner.rb" --ruby="$(RUNRUBY)" $(TESTOPTS)
+ $(ACTIONS_ENDGROUP)
+no-test-tool: PHONY
+
+test-sample: test-basic # backward compatibility for mswin-build
+test-short: btest-ruby $(DOT_WAIT) test-knownbug $(DOT_WAIT) test-basic
+test: test-short
+
+# $ make test-all TESTOPTS="--help" displays more detail
+# for example, make test-all TESTOPTS="-j2 -v -n test-name -- test-file-name"
+test-all: $(TEST_RUNNABLE)-test-all
+yes-test-all: programs PHONY
+ $(ACTIONS_GROUP)
+ $(gnumake_recursive)$(Q)$(exec) $(RUNRUBY) "$(TESTSDIR)/runner.rb" --ruby="$(RUNRUBY)" $(TEST_EXCLUDES) $(TESTOPTS) $(TESTS)
+ $(ACTIONS_ENDGROUP)
+TESTS_BUILD = mkmf
+no-test-all: PHONY
+ $(gnumake_recursive)$(MINIRUBY) -I"$(srcdir)/lib" "$(TESTSDIR)/runner.rb" $(TESTOPTS) $(TESTS_BUILD)
+
+test-almost: test-all
+yes-test-almost: yes-test-all
+no-test-almost: no-test-all
+
+test-ruby: $(TEST_RUNNABLE)-test-ruby
+no-test-ruby: PHONY
+yes-test-ruby: prog encs PHONY
+ $(gnumake_recursive)$(RUNRUBY) "$(TESTSDIR)/runner.rb" $(TEST_EXCLUDES) $(TESTOPTS) -- ruby -ext-
+
+extconf: $(PREP)
+ $(Q) $(MAKEDIRS) "$(EXTCONFDIR)"
+ $(RUNRUBY) -C "$(EXTCONFDIR)" $(EXTCONF) $(EXTCONFARGS)
+
+rbconfig.rb: $(RBCONFIG)
+
+$(HAVE_BASERUBY:no=)$(RBCONFIG)$(HAVE_BASERUBY:no=): $(PREP)
+$(RBCONFIG): $(tooldir)/mkconfig.rb config.status $(srcdir)/version.h $(srcdir)/common.mk
+ $(Q)$(BOOTSTRAPRUBY) -n \
+ -e 'BEGIN{version=ARGV.shift;mis=ARGV.dup}' \
+ -e 'END{abort "UNICODE version mismatch: #{mis}" unless mis.empty?}' \
+ -e '(mis.delete(ARGF.path); ARGF.close) if /ONIG_UNICODE_VERSION_STRING +"#{Regexp.quote(version)}"/o' \
+ $(UNICODE_VERSION) $(UNICODE_DATA_HEADERS)
+ $(Q)$(BOOTSTRAPRUBY) $(tooldir)/mkconfig.rb \
+ -arch=$(arch) -version=$(RUBY_PROGRAM_VERSION) \
+ -install_name=$(RUBY_INSTALL_NAME) \
+ -so_name=$(RUBY_SO_NAME) \
+ -unicode_version=$(UNICODE_VERSION) \
+ -unicode_emoji_version=$(UNICODE_EMOJI_VERSION) \
+ > rbconfig.tmp
+ $(IFCHANGE) "--timestamp=$@" rbconfig.rb rbconfig.tmp
+
+test-rubyspec: test-spec
+yes-test-rubyspec: yes-test-spec
+
+test-spec-precheck: programs yes-fake
+
+test-spec: $(TEST_RUNNABLE)-test-spec
+yes-test-spec: test-spec-precheck
+ $(ACTIONS_GROUP)
+ $(gnumake_recursive)$(Q) \
+ $(RUNRUBY) -r./$(arch)-fake $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT) $(SPECOPTS)
+ $(ACTIONS_ENDGROUP)
+no-test-spec:
+
+check: $(DOT_WAIT) test-spec
+
+RUNNABLE = $(LIBRUBY_RELATIVE:no=un)-runnable
+runnable: $(RUNNABLE) prog $(tooldir)/mkrunnable.rb PHONY
+ $(Q) $(MINIRUBY) $(tooldir)/mkrunnable.rb -v $(EXTOUT)
+yes-runnable: PHONY
+
+encs: enc trans
+libencs: libenc libtrans
+encs enc trans libencs libenc libtrans: $(SHOWFLAGS) $(ENC_MK) $(LIBRUBY) $(PREP) PHONY
+ $(ECHO) making $@
+ $(Q) $(MAKE) $(MAKE_ENC) $@
+
+
+libenc enc: {$(VPATH)}encdb.h
+libtrans trans: {$(VPATH)}transdb.h
+
+ENC_HEADERS = $(srcdir)/enc/jis/props.h
+# Use MINIRUBY which loads fake.rb for cross compiling
+$(ENC_MK): $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc/depend \
+ $(srcdir)/enc/encinit.c.erb $(ENC_HEADERS) $(srcdir)/lib/mkmf.rb $(RBCONFIG) $(HAVE_BASERUBY)-fake
+ $(ECHO) generating $@
+ $(Q) $(BOOTSTRAPRUBY_COMMAND) $(srcdir)/enc/make_encmake.rb \
+ --builtin-encs="$(BUILTIN_ENCOBJS)" --builtin-transes="$(BUILTIN_TRANSOBJS)" --module$(ENCSTATIC) $(ENCS) $@
+
+.PRECIOUS: $(MKFILES)
+
+.PHONY: PHONY all fake prereq incs srcs preludes help
+.PHONY: test install install-nodoc install-doc dist
+.PHONY: loadpath golf capi rdoc install-prereq clear-installed-list
+.PHONY: clean clean-ext clean-local clean-enc clean-golf clean-rdoc clean-html clean-extout
+.PHONY: distclean distclean-ext distclean-local distclean-enc distclean-golf distclean-extout
+.PHONY: realclean realclean-ext realclean-local realclean-enc realclean-golf realclean-extout
+.PHONY: exam check test test-short test-all btest btest-ruby test-basic test-knownbug
+.PHONY: run runruby parse benchmark gdb gdb-ruby
+.PHONY: update-mspec update-rubyspec test-rubyspec test-spec
+.PHONY: touch-unicode-files
+
+PHONY:
+
+{$(VPATH)}parse.c: {$(VPATH)}parse.y $(tooldir)/ytab.sed {$(VPATH)}id.h
+{$(VPATH)}parse.h: {$(VPATH)}parse.c
+
+{$(srcdir)}.y.c:
+ $(ECHO) generating $@
+ $(Q)$(BASERUBY) $(tooldir)/id2token.rb $(SRC_FILE) > parse.tmp.y
+ $(Q)$(YACC) -d $(YFLAGS) -o y.tab.c parse.tmp.y
+ $(Q)$(RM) parse.tmp.y
+ $(Q)sed -f $(tooldir)/ytab.sed -e "/^#/s|parse\.tmp\.[iy]|$(SRC_FILE)|" -e "/^#/s!y\.tab\.c!$@!" y.tab.c > $@.new
+ $(Q)$(MV) $@.new $@
+ $(Q)sed -e "/^#line.*y\.tab\.h/d;/^#line.*parse.*\.y/d" y.tab.h > $(@:.c=.h)
+ $(Q)$(RM) y.tab.c y.tab.h
+
+$(PLATFORM_D):
+ $(Q) $(MAKEDIRS) $(PLATFORM_DIR) $(@D)
+ @$(NULLCMD) > $@
+
+exe/$(PROGRAM): ruby-runner.c ruby-runner.h exe/.time $(PREP) {$(VPATH)}config.h
+ $(Q) $(CC) $(CFLAGS) $(INCFLAGS) $(CPPFLAGS) -DRUBY_INSTALL_NAME=$(@F) $(COUTFLAG)ruby-runner.$(OBJEXT) -c $(CSRCFLAG)$(srcdir)/ruby-runner.c
+ $(Q) $(PURIFY) $(CC) $(CFLAGS) $(LDFLAGS) $(OUTFLAG)$@ ruby-runner.$(OBJEXT) $(LIBS)
+ $(Q) $(POSTLINK)
+ $(Q) $(BOOTSTRAPRUBY) \
+ -e 'prog, dest, inst = ARGV; dest += "/ruby"' \
+ -e 'exit unless prog==inst' \
+ -e 'unless prog=="ruby"' \
+ -e ' begin File.unlink(dest); rescue Errno::ENOENT; end' \
+ -e ' File.symlink(prog, dest)' \
+ -e 'end' \
+ $(@F) $(@D) $(RUBY_INSTALL_NAME)$(EXEEXT)
+
+exe/.time:
+ $(Q) $(MAKEDIRS) $(@D)
+ @$(NULLCMD) > $@
+
+$(BUILTIN_ENCOBJS) $(BUILTIN_TRANSOBJS): $(ENC_TRANS_D)
+
+$(ENC_TRANS_D):
+ $(Q) $(MAKEDIRS) enc/trans $(@D)
+ @$(NULLCMD) > $@
+
+$(TIMESTAMPDIR)/$(arch)/.time:
+ $(Q)$(MAKEDIRS) $(@D) $(EXTOUT)/$(arch)
+ @$(NULLCMD) > $@
+
+$(TIMESTAMPDIR)/.RUBYCOMMONDIR.time:
+ $(Q)$(MAKEDIRS) $(@D) $(RUBYCOMMONDIR)
+ @$(NULLCMD) > $@
+
+###
+CCAN_DIR = {$(VPATH)}ccan
+
+RUBY_H_INCLUDES = {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}defines.h \
+ {$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}st.h \
+ {$(VPATH)}assert.h {$(VPATH)}subst.h
+
+###
+
+acosh.$(OBJEXT): {$(VPATH)}acosh.c
+alloca.$(OBJEXT): {$(VPATH)}alloca.c {$(VPATH)}config.h
+cbrt.$(OBJEXT): {$(VPATH)}cbrt.c
+close.$(OBJEXT): {$(VPATH)}close.c
+crypt.$(OBJEXT): {$(VPATH)}crypt.c {$(VPATH)}crypt.h {$(VPATH)}missing/des_tables.c
+erf.$(OBJEXT): {$(VPATH)}erf.c
+explicit_bzero.$(OBJEXT): {$(VPATH)}explicit_bzero.c
+ffs.$(OBJEXT): {$(VPATH)}ffs.c
+flock.$(OBJEXT): {$(VPATH)}flock.c
+hypot.$(OBJEXT): {$(VPATH)}hypot.c
+langinfo.$(OBJEXT): {$(VPATH)}langinfo.c
+lgamma_r.$(OBJEXT): {$(VPATH)}lgamma_r.c
+memcmp.$(OBJEXT): {$(VPATH)}memcmp.c
+memmove.$(OBJEXT): {$(VPATH)}memmove.c
+nan.$(OBJEXT): {$(VPATH)}nan.c
+nextafter.$(OBJEXT): {$(VPATH)}nextafter.c
+procstat_vm.$(OBJEXT): {$(VPATH)}procstat_vm.c
+setproctitle.$(OBJEXT): {$(VPATH)}setproctitle.c
+strchr.$(OBJEXT): {$(VPATH)}strchr.c
+strerror.$(OBJEXT): {$(VPATH)}strerror.c
+strlcat.$(OBJEXT): {$(VPATH)}strlcat.c
+strlcpy.$(OBJEXT): {$(VPATH)}strlcpy.c
+strstr.$(OBJEXT): {$(VPATH)}strstr.c
+tgamma.$(OBJEXT): {$(VPATH)}tgamma.c
+
+.coroutine_obj $(COROUTINE_OBJ): \
+ {$(VPATH)}$(COROUTINE_SRC) \
+ $(COROUTINE_H:/Context.h=/.time)
+$(COROUTINE_H:/Context.h=/.time):
+ $(Q) $(MAKEDIRS) $(@D)
+ @$(NULLCMD) > $@
+
+###
+
+# dependencies for generated C sources.
+parse.$(OBJEXT): {$(VPATH)}parse.c
+miniprelude.$(OBJEXT): {$(VPATH)}miniprelude.c
+
+# dependencies for optional sources.
+compile.$(OBJEXT): {$(VPATH)}opt_sc.inc {$(VPATH)}optunifs.inc
+
+win32/win32.$(OBJEXT): {$(VPATH)}win32/win32.c {$(VPATH)}win32/file.h \
+ {$(VPATH)}dln.h {$(VPATH)}dln_find.c {$(VPATH)}encindex.h \
+ {$(VPATH)}internal.h {$(VPATH)}util.h $(RUBY_H_INCLUDES) \
+ {$(VPATH)}vm.h $(PLATFORM_D)
+win32/file.$(OBJEXT): {$(VPATH)}win32/file.c {$(VPATH)}win32/file.h \
+ $(RUBY_H_INCLUDES) $(PLATFORM_D)
+
+$(NEWLINE_C): $(srcdir)/enc/trans/newline.trans $(tooldir)/transcode-tblgen.rb
+ $(Q) $(MAKEDIRS) $(@D)
+ $(Q) $(BASERUBY) "$(tooldir)/transcode-tblgen.rb" -vo $@ $(srcdir)/enc/trans/newline.trans
+enc/trans/newline.$(OBJEXT): $(NEWLINE_C)
+
+verconf.h: $(srcdir)/template/verconf.h.tmpl $(tooldir)/generic_erb.rb $(RBCONFIG)
+ $(ECHO) creating $@
+ $(Q) $(BOOTSTRAPRUBY) "$(tooldir)/generic_erb.rb" -o $@ $(srcdir)/template/verconf.h.tmpl
+
+ruby-glommed.$(OBJEXT): $(OBJS)
+
+$(OBJS): {$(VPATH)}config.h {$(VPATH)}missing.h
+
+INSNS2VMOPT = --srcdir="$(srcdir)"
+
+srcs_vpath = {$(VPATH)}
+
+inc_common_headers = $(tooldir)/ruby_vm/views/_copyright.erb $(tooldir)/ruby_vm/views/_notice.erb
+$(srcs_vpath)opt_sc.inc: $(tooldir)/ruby_vm/views/opt_sc.inc.erb $(inc_common_headers)
+$(srcs_vpath)optinsn.inc: $(tooldir)/ruby_vm/views/optinsn.inc.erb $(inc_common_headers)
+$(srcs_vpath)optunifs.inc: $(tooldir)/ruby_vm/views/optunifs.inc.erb $(inc_common_headers)
+$(srcs_vpath)insns.inc: $(tooldir)/ruby_vm/views/insns.inc.erb $(inc_common_headers)
+$(srcs_vpath)insns_info.inc: $(tooldir)/ruby_vm/views/insns_info.inc.erb $(inc_common_headers) \
+ $(tooldir)/ruby_vm/views/_insn_type_chars.erb $(tooldir)/ruby_vm/views/_insn_name_info.erb \
+ $(tooldir)/ruby_vm/views/_insn_len_info.erb $(tooldir)/ruby_vm/views/_insn_operand_info.erb \
+ $(tooldir)/ruby_vm/views/_attributes.erb $(tooldir)/ruby_vm/views/_comptime_insn_stack_increase.erb \
+ $(tooldir)/ruby_vm/views/_insn_sp_pc_dependency.erb
+$(srcs_vpath)vmtc.inc: $(tooldir)/ruby_vm/views/vmtc.inc.erb $(inc_common_headers)
+$(srcs_vpath)vm.inc: $(tooldir)/ruby_vm/views/vm.inc.erb $(inc_common_headers) \
+ $(tooldir)/ruby_vm/views/_insn_entry.erb $(tooldir)/ruby_vm/views/_trace_instruction.erb
+$(srcs_vpath)mjit_sp_inc.inc: $(tooldir)/ruby_vm/views/mjit_sp_inc.inc.erb
+
+BUILTIN_RB_SRCS = \
+ $(srcdir)/ast.rb \
+ $(srcdir)/dir.rb \
+ $(srcdir)/gc.rb \
+ $(srcdir)/numeric.rb \
+ $(srcdir)/io.rb \
+ $(srcdir)/marshal.rb \
+ $(srcdir)/mjit.rb \
+ $(srcdir)/mjit_c.rb \
+ $(srcdir)/pack.rb \
+ $(srcdir)/trace_point.rb \
+ $(srcdir)/warning.rb \
+ $(srcdir)/array.rb \
+ $(srcdir)/kernel.rb \
+ $(srcdir)/ractor.rb \
+ $(srcdir)/symbol.rb \
+ $(srcdir)/timev.rb \
+ $(srcdir)/thread_sync.rb \
+ $(srcdir)/nilclass.rb \
+ $(srcdir)/prelude.rb \
+ $(srcdir)/gem_prelude.rb \
+ $(srcdir)/yjit.rb \
+ $(empty)
+BUILTIN_RB_INCS = $(BUILTIN_RB_SRCS:.rb=.rbinc)
+
+common-srcs: $(srcs_vpath)parse.c $(srcs_vpath)lex.c $(srcs_vpath)enc/trans/newline.c $(srcs_vpath)id.c \
+ $(BUILTIN_RB_INCS) \
+ srcs-lib srcs-ext incs preludes
+
+missing-srcs: $(srcdir)/missing/des_tables.c
+
+srcs: common-srcs missing-srcs srcs-enc
+
+EXT_SRCS = $(srcdir)/ext/ripper/ripper.c \
+ $(srcdir)/ext/rbconfig/sizeof/sizes.c \
+ $(srcdir)/ext/rbconfig/sizeof/limits.c \
+ $(srcdir)/ext/socket/constdefs.c \
+ $(srcdir)/ext/etc/constdefs.h \
+ # EXT_SRCS
+
+srcs-ext: $(EXT_SRCS)
+realclean-srcs-ext::
+ $(Q)$(RM) $(EXT_SRCS)
+
+EXTRA_SRCS = $(srcdir)/ext/json/parser/parser.c \
+ $(srcdir)/ext/date/zonetab.h \
+ $(empty)
+
+srcs-extra: $(EXTRA_SRCS)
+realclean-srcs-extra::
+ $(Q)$(RM) $(EXTRA_SRCS)
+
+LIB_SRCS = $(srcdir)/lib/unicode_normalize/tables.rb
+
+srcs-lib: $(LIB_SRCS)
+
+srcs-enc: $(ENC_MK)
+ $(ECHO) making srcs under enc
+ $(Q) $(MAKE) $(MAKE_ENC) srcs
+
+all-incs: incs {$(VPATH)}encdb.h {$(VPATH)}transdb.h
+incs: $(INSNS) {$(VPATH)}node_name.inc {$(VPATH)}known_errors.inc \
+ {$(VPATH)}vm_call_iseq_optimized.inc $(srcdir)/revision.h \
+ $(REVISION_H) \
+ $(UNICODE_DATA_HEADERS) $(ENC_HEADERS) \
+ {$(VPATH)}id.h {$(VPATH)}probes.dmyh
+
+insns: $(INSNS)
+
+id.h: $(tooldir)/generic_erb.rb $(srcdir)/template/id.h.tmpl $(srcdir)/defs/id.def
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb --output=$@ \
+ $(srcdir)/template/id.h.tmpl
+
+id.c: $(tooldir)/generic_erb.rb $(srcdir)/template/id.c.tmpl $(srcdir)/defs/id.def
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb --output=$@ \
+ $(srcdir)/template/id.c.tmpl
+
+node_name.inc: $(tooldir)/node_name.rb $(srcdir)/node.h
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) -n $(tooldir)/node_name.rb < $(srcdir)/node.h > $@
+
+encdb.h: $(RBCONFIG) $(tooldir)/generic_erb.rb $(srcdir)/template/encdb.h.tmpl
+ $(ECHO) generating $@
+ $(Q) $(BOOTSTRAPRUBY) $(tooldir)/generic_erb.rb -c -o $@ $(srcdir)/template/encdb.h.tmpl $(srcdir)/enc enc
+
+transdb.h: $(RBCONFIG) srcs-enc $(tooldir)/generic_erb.rb $(srcdir)/template/transdb.h.tmpl
+ $(ECHO) generating $@
+ $(Q) $(BOOTSTRAPRUBY) $(tooldir)/generic_erb.rb -c -o $@ $(srcdir)/template/transdb.h.tmpl $(srcdir)/enc/trans enc/trans
+
+enc/encinit.c: $(ENC_MK) $(srcdir)/enc/encinit.c.erb
+
+known_errors.inc: $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb -c -o $@ $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
+
+vm_call_iseq_optimized.inc: $(srcdir)/template/call_iseq_optimized.inc.tmpl
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb -c -o $@ $(srcdir)/template/call_iseq_optimized.inc.tmpl
+
+$(MINIPRELUDE_C): $(COMPILE_PRELUDE) $(BUILTIN_RB_SRCS)
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb -I$(srcdir) -o $@ \
+ $(srcdir)/template/prelude.c.tmpl $(BUILTIN_RB_SRCS)
+
+$(GOLF_PRELUDE_C): $(COMPILE_PRELUDE) {$(srcdir)}golf_prelude.rb
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb -I$(srcdir) -c -o $@ \
+ $(srcdir)/template/prelude.c.tmpl golf_prelude.rb
+
+MAINCPPFLAGS = $(ENABLE_DEBUG_ENV:yes=-DRUBY_DEBUG_ENV=1)
+
+$(MAINOBJ): $(srcdir)/$(MAINSRC)
+ $(ECHO) compiling $(srcdir)/$(MAINSRC)
+ $(Q) $(CC) $(MAINCPPFLAGS) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$(srcdir)/$(MAINSRC)
+
+{$(VPATH)}probes.dmyh: {$(srcdir)}probes.d $(tooldir)/gen_dummy_probes.rb
+
+probes.dmyh:
+ $(BASERUBY) $(tooldir)/gen_dummy_probes.rb $(srcdir)/probes.d > $@
+
+probes.h: {$(VPATH)}probes.$(DTRACE_EXT)
+
+prereq: incs srcs preludes PHONY
+
+preludes: {$(VPATH)}miniprelude.c
+preludes: {$(srcdir)}golf_prelude.c
+
+{$(srcdir)}.rb.rbinc:
+ $(ECHO) making $@
+ $(Q) $(BASERUBY) $(tooldir)/mk_builtin_loader.rb $<
+
+builtin_binary.inc: $(PREP) $(BUILTIN_RB_SRCS) $(srcdir)/template/builtin_binary.inc.tmpl
+ $(Q) $(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ \
+ $(srcdir)/template/builtin_binary.inc.tmpl -- --cross=$(CROSS_COMPILING)
+
+$(BUILTIN_RB_INCS): $(top_srcdir)/tool/mk_builtin_loader.rb
+
+$(srcdir)/revision.h$(no_baseruby:no=~disabled~): $(REVISION_H)
+
+$(REVISION_H)$(no_baseruby:no=~disabled~):
+ $(Q) $(BASERUBY) $(tooldir)/file2lastrev.rb -q --revision.h --srcdir="$(srcdir)" --output=revision.h --timestamp=$@
+$(REVISION_H)$(yes_baseruby:yes=~disabled~):
+ $(Q) exit > $@
+
+$(srcdir)/ext/ripper/ripper.c: $(srcdir)/ext/ripper/tools/preproc.rb $(srcdir)/parse.y $(srcdir)/defs/id.def $(srcdir)/ext/ripper/depend
+ $(ECHO) generating $@
+ $(Q) $(CHDIR) $(@D) && \
+ $(CAT_DEPEND) depend | \
+ $(exec) $(MAKE) -f - $(mflags) \
+ Q=$(Q) ECHO=$(ECHO) RM="$(RM1)" BISON="$(YACC)" top_srcdir=../.. srcdir=. VPATH=../.. \
+ RUBY="$(BASERUBY)" PATH_SEPARATOR="$(PATH_SEPARATOR)" LANG=C
+
+$(srcdir)/ext/json/parser/parser.c: $(srcdir)/ext/json/parser/parser.rl $(srcdir)/ext/json/parser/prereq.mk
+ $(ECHO) generating $@
+ $(Q) $(CHDIR) $(@D) && $(exec) $(MAKE) -f prereq.mk $(mflags) \
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=. VPATH=../../.. BASERUBY="$(BASERUBY)"
+
+$(srcdir)/ext/date/zonetab.h: $(srcdir)/ext/date/zonetab.list $(srcdir)/ext/date/prereq.mk
+ $(ECHO) generating $@
+ $(Q) $(CHDIR) $(@D) && $(exec) $(MAKE) -f prereq.mk $(mflags) \
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. BASERUBY="$(BASERUBY)"
+
+$(srcdir)/ext/rbconfig/sizeof/sizes.c: $(srcdir)/ext/rbconfig/sizeof/depend \
+ $(tooldir)/generic_erb.rb $(srcdir)/template/sizes.c.tmpl $(srcdir)/configure.ac
+ $(ECHO) generating $@
+ $(Q) $(CHDIR) $(@D) && \
+ $(CAT_DEPEND) depend | \
+ $(exec) $(MAKE) -f - $(mflags) \
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=. VPATH=../../.. RUBY="$(BASERUBY)" $(@F)
+
+$(srcdir)/ext/rbconfig/sizeof/limits.c: $(srcdir)/ext/rbconfig/sizeof/depend \
+ $(tooldir)/generic_erb.rb $(srcdir)/template/limits.c.tmpl
+ $(ECHO) generating $@
+ $(Q) $(CHDIR) $(@D) && \
+ $(CAT_DEPEND) depend | \
+ $(exec) $(MAKE) -f - $(mflags) \
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=. VPATH=../../.. RUBY="$(BASERUBY)" $(@F)
+
+$(srcdir)/ext/socket/constdefs.c: $(srcdir)/ext/socket/depend
+ $(Q) $(CHDIR) $(@D) && \
+ $(CAT_DEPEND) depend | \
+ $(exec) $(MAKE) -f - $(mflags) \
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. RUBY="$(BASERUBY)"
+
+$(srcdir)/ext/etc/constdefs.h: $(srcdir)/ext/etc/depend
+ $(Q) $(CHDIR) $(@D) && \
+ $(CAT_DEPEND) depend | \
+ $(exec) $(MAKE) -f - $(mflags) \
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. RUBY="$(BASERUBY)"
+
+##
+
+run: yes-fake miniruby$(EXEEXT) PHONY
+ $(BTESTRUBY) $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+
+runruby: $(PROGRAM) PHONY
+ RUBY_ON_BUG='gdb -x $(srcdir)/.gdbinit -p' $(RUNRUBY) $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+
+runirb: $(PROGRAM) PHONY
+ RUBY_ON_BUG='gdb -x $(srcdir)/.gdbinit -p' $(RUNRUBY) $(RUNOPT0) -r irb -e 'IRB.start("make runirb")' $(RUNOPT)
+
+parse: yes-fake miniruby$(EXEEXT) PHONY
+ $(BTESTRUBY) --dump=parsetree_with_comment,insns $(TESTRUN_SCRIPT)
+
+bisect: PHONY
+ $(tooldir)/bisect.sh miniruby $(srcdir)
+
+bisect-ruby: PHONY
+ $(tooldir)/bisect.sh ruby $(srcdir)
+
+COMPARE_RUBY = $(BASERUBY)
+BENCH_RUBY = $(RUNRUBY)
+BENCH_OPTS = --output=markdown --output-compare -v
+ITEM =
+ARGS = $$(find $(srcdir)/benchmark -maxdepth 1 -name '$(ITEM)' -o -name '*$(ITEM)*.yml' -o -name '*$(ITEM)*.rb' | sort)
+OPTS =
+
+# See benchmark/README.md for details.
+benchmark: miniruby$(EXEEXT) update-benchmark-driver PHONY
+ $(BASERUBY) -rrubygems -I$(srcdir)/benchmark/lib $(srcdir)/benchmark/benchmark-driver/exe/benchmark-driver \
+ --executables="compare-ruby::$(COMPARE_RUBY) -I$(EXTOUT)/common --disable-gem" \
+ --executables="built-ruby::$(BENCH_RUBY) --disable-gem" \
+ $(BENCH_OPTS) $(ARGS) $(OPTS)
+
+run.gdb:
+ echo set breakpoint pending on > run.gdb
+ echo b rb_assert_failure >> run.gdb
+ echo b rb_bug >> run.gdb
+ echo b ruby_debug_breakpoint >> run.gdb
+ echo '# handle SIGINT nostop' >> run.gdb
+ echo '# handle SIGPIPE nostop' >> run.gdb
+ echo '# b rb_longjmp' >> run.gdb
+ echo source $(srcdir)/breakpoints.gdb >> run.gdb
+ echo source $(srcdir)/.gdbinit >> run.gdb
+ echo 'set $$_exitcode = -999' >> run.gdb
+ echo run >> run.gdb
+ echo 'if $$_exitcode != -999' >> run.gdb
+ echo ' quit' >> run.gdb
+ echo end >> run.gdb
+
+
+gdb: miniruby$(EXEEXT) run.gdb PHONY
+ gdb -x run.gdb --quiet --args $(MINIRUBY) $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+
+gdb-ruby: $(PROGRAM) run.gdb PHONY
+ $(Q) $(RUNRUBY_COMMAND) $(RUNRUBY_DEBUGGER) -- $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+
+LLDB_INIT = command script import -r $(srcdir)/misc/lldb_cruby.py
+
+lldb: miniruby$(EXEEXT) PHONY
+ lldb -o '$(LLDB_INIT)' miniruby$(EXEEXT) -- $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+
+lldb-ruby: $(PROGRAM) PHONY
+ lldb $(enable_shared:yes=-o 'target modules add ${LIBRUBY_SO}') -o '$(LLDB_INIT)' $(PROGRAM) -- $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+
+DISTPKGS = gzip,zip,all
+PKGSDIR = tmp
+dist:
+ $(BASERUBY) $(V0:1=-v) $(tooldir)/make-snapshot \
+ -srcdir=$(srcdir) -packages=$(DISTPKGS) \
+ -unicode-version=$(UNICODE_VERSION) \
+ $(DISTOPTS) $(PKGSDIR) $(RELNAME)
+
+up:: update-remote
+
+up::
+ -$(Q)$(MAKE) $(mflags) Q=$(Q) REVISION_FORCE=PHONY ALWAYS_UPDATE_UNICODE= after-update
+
+yes::
+no::
+
+after-update:: common-srcs
+after-update:: $(REVISION_H)
+after-update:: extract-extlibs
+after-update:: extract-gems
+
+update-src::
+ $(Q) $(RM) $(REVISION_H) revision.h "$(srcdir)/$(REVISION_H)" "$(srcdir)/revision.h"
+ $(Q) exit > "$(srcdir)/revision.h"
+
+update-remote:: update-src update-download
+update-download:: $(ALWAYS_UPDATE_UNICODE:yes=update-unicode)
+update-download:: update-gems
+update-download:: download-extlibs
+
+update-mspec:
+update-rubyspec:
+
+update-config_files: PHONY
+ $(Q) $(BASERUBY) -C "$(srcdir)" tool/downloader.rb -d tool --cache-dir=$(CACHE_DIR) -e gnu \
+ config.guess config.sub
+
+refresh-gems: update-bundled_gems prepare-gems
+prepare-gems: $(HAVE_BASERUBY:yes=update-gems) $(HAVE_BASERUBY:yes=extract-gems)
+extract-gems: $(HAVE_BASERUBY:yes=update-gems)
+
+update-gems$(gnumake:yes=-sequential): PHONY
+ $(ECHO) Downloading bundled gem files...
+ $(Q) $(BASERUBY) -C "$(srcdir)" \
+ -I./tool -rdownloader -answ \
+ -e 'gem, ver = *$$F' \
+ -e 'next if !ver or /^#/=~gem' \
+ -e 'old = Dir.glob("gems/#{gem}-*.gem")' \
+ -e 'gem = "#{gem}-#{ver}.gem"' \
+ -e 'Downloader::RubyGems.download(gem, "gems", nil) and' \
+ -e '(old.delete("gems/#{gem}"); !old.empty?) and' \
+ -e 'File.unlink(*old) and' \
+ -e 'FileUtils.rm_rf(old.map{'"|n|"'n.chomp(".gem")})' \
+ gems/bundled_gems
+
+extract-gems$(gnumake:yes=-sequential): PHONY
+ $(ECHO) Extracting bundled gem files...
+ $(Q) $(BASERUBY) -C "$(srcdir)" \
+ -Itool/lib -rfileutils -rbundled_gem -answ \
+ -e 'BEGIN {d = ".bundle/gems"}' \
+ -e 'gem, ver, _, rev = *$$F' \
+ -e 'next if !ver or /^#/=~gem' \
+ -e 'g = "#{gem}-#{ver}"' \
+ -e 'if File.directory?("#{d}/#{g}")' \
+ -e 'elsif rev and File.exist?(gs = "gems/src/#{gem}/#{gem}.gemspec")' \
+ -e 'BundledGem.copy(gs, ".bundle")' \
+ -e 'else' \
+ -e 'BundledGem.unpack("gems/#{g}.gem", ".bundle")' \
+ -e 'end' \
+ gems/bundled_gems
+
+outdate-bundled-gems: PHONY
+ $(Q) $(BASERUBY) $(tooldir)/$@.rb --make="$(MAKE)" --mflags="$(MFLAGS)" "$(srcdir)"
+
+update-bundled_gems: PHONY
+ $(Q) $(RUNRUBY) -rrubygems \
+ $(tooldir)/update-bundled_gems.rb \
+ "$(srcdir)/gems/bundled_gems" | \
+ $(IFCHANGE) "$(srcdir)/gems/bundled_gems" -
+ $(GIT) -C "$(srcdir)" diff --no-ext-diff --ignore-submodules --exit-code || \
+ $(GIT) -C "$(srcdir)" commit -m "Update bundled_gems" gems/bundled_gems
+
+PRECHECK_BUNDLED_GEMS = test-bundled-gems-precheck
+test-bundled-gems-precheck: $(TEST_RUNNABLE)-test-bundled-gems-precheck
+yes-test-bundled-gems-precheck: main
+no-test-bundled-gems-precheck:
+
+test-bundled-gems-fetch: yes-test-bundled-gems-fetch
+yes-test-bundled-gems-fetch:
+ $(ACTIONS_GROUP)
+ $(Q) $(BASERUBY) -C $(srcdir)/gems ../tool/fetch-bundled_gems.rb src bundled_gems
+ $(ACTIONS_ENDGROUP)
+no-test-bundled-gems-fetch:
+
+test-bundled-gems-prepare: $(PRECHECK_BUNDLED_GEMS) test-bundled-gems-fetch
+test-bundled-gems-prepare: $(TEST_RUNNABLE)-test-bundled-gems-prepare
+no-test-bundled-gems-prepare: no-test-bundled-gems-precheck
+yes-test-bundled-gems-prepare: yes-test-bundled-gems-precheck
+ $(ACTIONS_GROUP)
+ $(XRUBY) -C "$(srcdir)" bin/gem install --no-document \
+ --install-dir .bundle --conservative "bundler" "minitest:~> 5" "test-unit" "rake" "hoe" "rexml" "json-schema:5.1.0" "test-unit-rr"
+ $(ACTIONS_ENDGROUP)
+
+PREPARE_BUNDLED_GEMS = test-bundled-gems-prepare
+test-bundled-gems: $(TEST_RUNNABLE)-test-bundled-gems
+yes-test-bundled-gems: test-bundled-gems-run
+no-test-bundled-gems:
+
+# Override this to allow failure of specific gems on CI
+# TEST_BUNDLED_GEMS_ALLOW_FAILURES =
+
+BUNDLED_GEMS =
+test-bundled-gems-run: $(PREPARE_BUNDLED_GEMS)
+ $(gnumake_recursive)$(Q) $(XRUBY) $(tooldir)/test-bundled-gems.rb $(BUNDLED_GEMS)
+
+test-syntax-suggest-precheck: $(TEST_RUNNABLE)-test-syntax-suggest-precheck
+no-test-syntax-suggest-precheck:
+yes-test-syntax-suggest-precheck: main
+
+test-syntax-suggest-prepare: $(TEST_RUNNABLE)-test-syntax-suggest-prepare
+no-test-syntax-suggest-prepare: no-test-syntax-suggest-precheck
+yes-test-syntax-suggest-prepare: yes-test-syntax-suggest-precheck
+ $(ACTIONS_GROUP)
+ $(XRUBY) -C "$(srcdir)" bin/gem install --no-document \
+ --install-dir .bundle --conservative "bundler" "rake" "rspec:~> 3" #"ruby-prof"
+ $(ACTIONS_ENDGROUP)
+
+RSPECOPTS =
+SYNTAX_SUGGEST_SPECS =
+PREPARE_SYNTAX_SUGGEST = test-syntax-suggest-prepare
+test-syntax-suggest: $(TEST_RUNNABLE)-test-syntax-suggest
+yes-test-syntax-suggest: yes-$(PREPARE_SYNTAX_SUGGEST)
+ $(XRUBY) -C $(srcdir) -Ispec/syntax_suggest .bundle/bin/rspec \
+ --require spec_helper $(RSPECOPTS) spec/syntax_suggest/$(SYNTAX_SUGGEST_SPECS)
+no-test-syntax-suggest:
+
+check: $(DOT_WAIT) $(TEST_RUNNABLE)-$(PREPARE_SYNTAX_SUGGEST) test-syntax-suggest
+
+test-bundler-precheck: $(TEST_RUNNABLE)-test-bundler-precheck
+no-test-bundler-precheck:
+yes-test-bundler-precheck: main $(arch)-fake.rb
+
+no-test-bundler-prepare: no-test-bundler-precheck
+yes-test-bundler-prepare: yes-test-bundler-precheck
+ $(ACTIONS_GROUP)
+ $(XRUBY) -C $(srcdir) -Ilib \
+ -e 'ENV["GEM_HOME"] = File.expand_path(".bundle")' \
+ -e 'ENV["BUNDLE_APP_CONFIG"] = File.expand_path(".bundle")' \
+ -e 'ENV["BUNDLE_PATH__SYSTEM"] = "true"' \
+ -e 'ENV["BUNDLE_WITHOUT"] = "lint doc"' \
+ -e 'load "spec/bundler/support/bundle.rb"' -- install --gemfile=tool/bundler/dev_gems.rb
+ $(ACTIONS_ENDGROUP)
+
+RSPECOPTS =
+BUNDLER_SPECS =
+test-bundler: $(TEST_RUNNABLE)-test-bundler
+yes-test-bundler: yes-test-bundler-prepare
+ $(gnumake_recursive)$(XRUBY) \
+ -r./$(arch)-fake \
+ -e "exec(*ARGV)" -- \
+ $(XRUBY) -C $(srcdir) -Ispec/bundler .bundle/bin/rspec \
+ --require spec_helper $(RSPECOPTS) spec/bundler/$(BUNDLER_SPECS)
+no-test-bundler:
+
+PARALLELRSPECOPTS = --runtime-log $(srcdir)/tmp/parallel_runtime_rspec.log
+test-bundler-parallel: $(TEST_RUNNABLE)-test-bundler-parallel
+yes-test-bundler-parallel: yes-test-bundler-prepare
+ $(gnumake_recursive)$(XRUBY) \
+ -r./$(arch)-fake \
+ -e "ARGV[-1] = File.expand_path(ARGV[-1])" \
+ -e "exec(*ARGV)" -- \
+ $(XRUBY) -I$(srcdir)/spec/bundler \
+ -e "ENV['PARALLEL_TESTS_EXECUTABLE'] = ARGV.shift" \
+ -e "load ARGV.shift" \
+ "$(XRUBY) -C $(srcdir) -Ispec/bundler .bundle/bin/rspec" \
+ $(srcdir)/.bundle/bin/parallel_rspec \
+ -o "--require spec_helper" \
+ $(PARALLELRSPECOPTS) $(srcdir)/spec/bundler/$(BUNDLER_SPECS)
+no-test-bundler-parallel:
+
+# The annocheck supports ELF format binaries compiled for any OS and for any
+# architecture. It is designed to be independent of the host OS and the
+# architecture. The test-annocheck.sh requires docker or podman.
+test-annocheck: $(PROGRAM)
+ $(tooldir)/test-annocheck.sh $(PROGRAM)
+
+GEM = up
+sync-default-gems:
+ $(Q) $(XRUBY) -C "$(srcdir)" tool/sync_default_gems.rb $(GEM)
+
+UNICODE_FILES = $(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \
+ $(UNICODE_SRC_DATA_DIR)/CompositionExclusions.txt \
+ $(UNICODE_SRC_DATA_DIR)/NormalizationTest.txt \
+ $(UNICODE_SRC_DATA_DIR)/CaseFolding.txt \
+ $(UNICODE_SRC_DATA_DIR)/SpecialCasing.txt \
+ $(empty)
+
+UNICODE_PROPERTY_FILES = \
+ $(UNICODE_SRC_DATA_DIR)/Blocks.txt \
+ $(UNICODE_SRC_DATA_DIR)/DerivedAge.txt \
+ $(UNICODE_SRC_DATA_DIR)/DerivedCoreProperties.txt \
+ $(UNICODE_SRC_DATA_DIR)/PropList.txt \
+ $(UNICODE_SRC_DATA_DIR)/PropertyAliases.txt \
+ $(UNICODE_SRC_DATA_DIR)/PropertyValueAliases.txt \
+ $(UNICODE_SRC_DATA_DIR)/Scripts.txt \
+ $(empty)
+
+UNICODE_AUXILIARY_FILES = \
+ $(UNICODE_SRC_DATA_DIR)/auxiliary/GraphemeBreakProperty.txt \
+ $(UNICODE_SRC_DATA_DIR)/auxiliary/GraphemeBreakTest.txt \
+ $(empty)
+
+UNICODE_UCD_EMOJI_FILES = \
+ $(UNICODE_SRC_DATA_DIR)/emoji/emoji-data.txt \
+ $(UNICODE_SRC_DATA_DIR)/emoji/emoji-variation-sequences.txt \
+ $(empty)
+
+UNICODE_EMOJI_FILES = \
+ $(UNICODE_SRC_EMOJI_DATA_DIR)/emoji-sequences.txt \
+ $(UNICODE_SRC_EMOJI_DATA_DIR)/emoji-test.txt \
+ $(UNICODE_SRC_EMOJI_DATA_DIR)/emoji-zwj-sequences.txt \
+ $(empty)
+
+update-unicode: $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES) \
+ $(UNICODE_AUXILIARY_FILES) $(UNICODE_UCD_EMOJI_FILES) $(UNICODE_EMOJI_FILES)
+
+CACHE_DIR = $(srcdir)/.downloaded-cache
+UNICODE_DOWNLOADER_ALWAYS_UPDATE = $(ALWAYS_UPDATE_UNICODE:yes=--always)
+UNICODE_DOWNLOADER = \
+ $(BASERUBY) $(tooldir)/downloader.rb \
+ --cache-dir=$(CACHE_DIR) \
+ --exist $(UNICODE_DOWNLOADER_ALWAYS_UPDATE:no=) \
+ unicode --unicode-beta=$(UNICODE_BETA)
+UNICODE_DOWNLOAD = \
+ $(UNICODE_DOWNLOADER) \
+ -d $(UNICODE_SRC_DATA_DIR) \
+ -p $(UNICODE_VERSION)/ucd
+UNICODE_AUXILIARY_DOWNLOAD = \
+ $(UNICODE_DOWNLOADER) \
+ -d $(UNICODE_SRC_DATA_DIR)/auxiliary \
+ -p $(UNICODE_VERSION)/ucd/auxiliary
+UNICODE_UCD_EMOJI_DOWNLOAD = \
+ $(UNICODE_DOWNLOADER) \
+ -d $(UNICODE_SRC_DATA_DIR)/emoji \
+ -p $(UNICODE_VERSION)/ucd/emoji
+UNICODE_EMOJI_DOWNLOAD = \
+ $(UNICODE_DOWNLOADER) \
+ -d $(UNICODE_SRC_EMOJI_DATA_DIR) \
+ -p emoji/$(UNICODE_EMOJI_VERSION)
+
+update-unicode-files: $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES)
+$(UNICODE_FILES) $(UNICODE_PROPERTY_FILES):
+ $(ECHO) Downloading Unicode $(UNICODE_VERSION) data and property files...
+ $(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)"
+ $(Q) $(UNICODE_DOWNLOAD) $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES)
+
+update-unicode-auxiliary-files: $(UNICODE_AUXILIARY_FILES)
+$(UNICODE_AUXILIARY_FILES):
+ $(ECHO) Downloading Unicode $(UNICODE_VERSION) auxiliary files...
+ $(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)/auxiliary"
+ $(Q) $(UNICODE_AUXILIARY_DOWNLOAD) $(UNICODE_AUXILIARY_FILES)
+
+update-unicode-ucd-emoji-files: $(UNICODE_UCD_EMOJI_FILES)
+$(UNICODE_UCD_EMOJI_FILES):
+ $(ECHO) Downloading Unicode UCD emoji $(UNICODE_EMOJI_VERSION) files...
+ $(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)/emoji"
+ $(Q) $(UNICODE_UCD_EMOJI_DOWNLOAD) $(UNICODE_UCD_EMOJI_FILES)
+
+update-unicode-emoji-files: $(UNICODE_EMOJI_FILES)
+$(UNICODE_EMOJI_FILES):
+ $(ECHO) Downloading Unicode emoji $(UNICODE_EMOJI_VERSION) files...
+ $(Q) $(MAKEDIRS) "$(UNICODE_SRC_EMOJI_DATA_DIR)"
+ $(Q) $(UNICODE_EMOJI_DOWNLOAD) $(UNICODE_EMOJI_FILES)
+
+$(srcdir)/lib/unicode_normalize/tables.rb: \
+ $(UNICODE_SRC_DATA_DIR)/$(HAVE_BASERUBY:yes=.unicode-tables.time)
+
+$(UNICODE_SRC_DATA_DIR)/$(ALWAYS_UPDATE_UNICODE:yes=.unicode-tables.time): \
+ $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES) \
+ $(UNICODE_AUXILIARY_FILES) $(UNICODE_UCD_EMOJI_FILES) $(UNICODE_EMOJI_FILES)
+
+touch-unicode-files:
+ $(MAKEDIRS) $(UNICODE_SRC_DATA_DIR)
+ $(Q) $(TOUCH) $(UNICODE_SRC_DATA_DIR)/.unicode-tables.time $(UNICODE_DATA_HEADERS)
+
+UNICODE_TABLES_DATA_FILES = \
+ $(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \
+ $(UNICODE_SRC_DATA_DIR)/CompositionExclusions.txt \
+ $(empty)
+
+UNICODE_TABLES_DEPENDENTS_1 = none$(ALWAYS_UPDATE_UNICODE)
+UNICODE_TABLES_DEPENDENTS = $(UNICODE_TABLES_DEPENDENTS_1:noneyes=force)
+UNICODE_TABLES_TIMESTAMP = yes
+$(UNICODE_SRC_DATA_DIR)/.unicode-tables.$(UNICODE_TABLES_DEPENDENTS:none=time):
+ $(Q) $(MAKEDIRS) $(@D)
+ $(Q) exit > $(@) || $(NULLCMD)
+$(UNICODE_SRC_DATA_DIR)/.unicode-tables.$(UNICODE_TABLES_DEPENDENTS:force=time): \
+ $(tooldir)/generic_erb.rb \
+ $(srcdir)/template/unicode_norm_gen.tmpl \
+ $(UNICODE_TABLES_DATA_FILES) \
+ $(order_only) \
+ $(UNICODE_SRC_DATA_DIR)
+ $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb \
+ -c $(UNICODE_TABLES_TIMESTAMP:yes=-t$@) \
+ -o $(srcdir)/lib/unicode_normalize/tables.rb \
+ -I $(srcdir) \
+ $(srcdir)/template/unicode_norm_gen.tmpl \
+ $(UNICODE_DATA_DIR) lib/unicode_normalize
+
+$(UNICODE_SRC_DATA_DIR):
+ $(gnumake_recursive)$(Q) $(MAKEDIRS) $@
+
+$(UNICODE_HDR_DIR)/$(ALWAYS_UPDATE_UNICODE:yes=name2ctype.h): \
+ $(tooldir)/enc-unicode.rb \
+ $(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \
+ $(UNICODE_AUXILIARY_FILES) \
+ $(UNICODE_PROPERTY_FILES) \
+ $(UNICODE_UCD_EMOJI_FILES) \
+ $(UNICODE_EMOJI_FILES)
+
+$(UNICODE_HDR_DIR)/name2ctype.h:
+ $(MAKEDIRS) $(@D)
+ $(BOOTSTRAPRUBY) $(tooldir)/enc-unicode.rb --header \
+ $(UNICODE_SRC_DATA_DIR) $(UNICODE_SRC_EMOJI_DATA_DIR) > $@.new
+ $(MV) $@.new $@
+
+# the next non-comment line was:
+# $(UNICODE_HDR_DIR)/casefold.h: $(tooldir)/enc-case-folding.rb \
+# but was changed to make sure CI works on systems that don't have gperf
+unicode-up: $(UNICODE_DATA_HEADERS)
+
+$(UNICODE_HDR_DIR)/$(ALWAYS_UPDATE_UNICODE:yes=casefold.h): \
+ $(tooldir)/enc-case-folding.rb \
+ $(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \
+ $(UNICODE_SRC_DATA_DIR)/SpecialCasing.txt \
+ $(UNICODE_SRC_DATA_DIR)/CaseFolding.txt
+
+$(UNICODE_HDR_DIR)/casefold.h:
+ $(MAKEDIRS) $(@D)
+ $(Q) $(BASERUBY) $(tooldir)/enc-case-folding.rb \
+ --output-file=$@ \
+ --mapping-data-directory=$(UNICODE_SRC_DATA_DIR)
+
+download-extlibs:
+ $(Q) $(BASERUBY) -C $(srcdir) -w tool/extlibs.rb --download ext
+
+extract-extlibs:
+ $(Q) $(BASERUBY) -C $(srcdir) -w tool/extlibs.rb --all ext
+
+clean-extlibs:
+ $(Q) $(RMALL) $(srcdir)/.downloaded-cache
+
+clean-gems:
+ $(Q) $(RM) gems/*.gem
+
+CLEAN_CACHE = clean-extlibs
+
+info: info-program info-libruby_a info-libruby_so info-arch
+info-program: PHONY
+ @echo PROGRAM=$(PROGRAM)
+info-libruby_a: PHONY
+ @echo LIBRUBY_A=$(LIBRUBY_A)
+info-libruby_so: PHONY
+ @echo LIBRUBY_SO=$(LIBRUBY_SO)
+info-arch: PHONY
+ @echo arch=$(arch)
+
+exam: check
+
+love: sudo-precheck up all test exam install
+ @echo love is all you need
+
+great: exam
+
+yes-test-all no-test-all: sudo-precheck
+
+sudo-precheck: PHONY
+ @$(SUDO) echo > $(NULL)
+
+update-man-date: PHONY
+ -$(Q) $(BASERUBY) -I"$(tooldir)/lib" -rvcs -i -p \
+ -e 'BEGIN{@vcs=VCS.detect(ARGV.shift)}' \
+ -e '$$_.sub!(/^(\.Dd ).*/){$$1+@vcs.modified(ARGF.path).strftime("%B %d, %Y")}' \
+ "$(srcdir)" "$(srcdir)"/man/*.1
+
+.PHONY: ChangeLog
+ChangeLog:
+ $(ECHO) Generating $@
+ -$(Q) $(BASERUBY) -I"$(tooldir)/lib" -rvcs \
+ -e 'VCS.detect(ARGV[0]).export_changelog("@", nil, nil, ARGV[1])' \
+ "$(srcdir)" $@
+
+HELP_EXTRA_TASKS = ""
+
+help: PHONY
+ $(MESSAGE_BEGIN) \
+ " Makefile of Ruby" \
+ "" \
+ "targets:" \
+ " all (default): builds all of below" \
+ " miniruby: builds only miniruby" \
+ " encs: builds encodings" \
+ " exts: builds extensions" \
+ " main: builds encodings, extensions and ruby" \
+ " docs: builds documents" \
+ " install-capi: builds C API documents" \
+ " run: runs test.rb by miniruby" \
+ " runruby: runs test.rb by ruby you just built" \
+ " gdb: runs test.rb by miniruby under gdb" \
+ " gdb-ruby: runs test.rb by ruby under gdb" \
+ " check: equals make test test-tool test-all test-spec" \
+ " test: ruby core tests [BTESTS=<bootstraptest files>]" \
+ " test-all: all ruby tests [TESTOPTS=-j4 TESTS=<test files>]" \
+ " test-spec: run the Ruby spec suite [SPECOPTS=<specs, opts>]" \
+ " test-bundler: run the Bundler spec" \
+ " test-bundler-parallel: run the Bundler spec with parallel" \
+ " test-bundled-gems: run the test suite of bundled gems" \
+ " test-tool: tests under the tool/test" \
+ " update-gems: download files of the bundled gems" \
+ " update-bundled_gems: update the latest version of bundled gems" \
+ " sync-default-gems: sync default gems from upstream [GEM=<gem_name git_ref>]" \
+ " up: update local copy and autogenerated files" \
+ " benchmark: benchmark this ruby and COMPARE_RUBY." \
+ " gcbench: gc benchmark [GCBENCH_ITEM=<item_name>]" \
+ " install: install all ruby distributions" \
+ " install-nodoc: install without rdoc" \
+ " install-cross: install cross compiling stuff" \
+ " clean: clean for tarball" \
+ " distclean: clean for repository" \
+ " golf: build goruby for golfers" \
+ $(HELP_EXTRA_TASKS) \
+ "see DeveloperHowto for more detail: " \
+ " https://bugs.ruby-lang.org/projects/ruby/wiki/DeveloperHowto" \
+ $(MESSAGE_END)
+
+$(CROSS_COMPILING:yes=)builtin.$(OBJEXT): {$(VPATH)}mini_builtin.c
+$(CROSS_COMPILING:yes=)builtin.$(OBJEXT): {$(VPATH)}miniprelude.c
+
+# AUTOGENERATED DEPENDENCIES START
+addr2line.$(OBJEXT): {$(VPATH)}addr2line.c
+addr2line.$(OBJEXT): {$(VPATH)}addr2line.h
+addr2line.$(OBJEXT): {$(VPATH)}assert.h
+addr2line.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+addr2line.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+addr2line.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+addr2line.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+addr2line.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+addr2line.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+addr2line.$(OBJEXT): {$(VPATH)}config.h
+addr2line.$(OBJEXT): {$(VPATH)}defines.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/assume.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/cast.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/config.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/dosish.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+addr2line.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+addr2line.$(OBJEXT): {$(VPATH)}missing.h
+array.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+array.$(OBJEXT): $(top_srcdir)/internal/array.h
+array.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+array.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+array.$(OBJEXT): $(top_srcdir)/internal/bits.h
+array.$(OBJEXT): $(top_srcdir)/internal/class.h
+array.$(OBJEXT): $(top_srcdir)/internal/compar.h
+array.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+array.$(OBJEXT): $(top_srcdir)/internal/enum.h
+array.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+array.$(OBJEXT): $(top_srcdir)/internal/gc.h
+array.$(OBJEXT): $(top_srcdir)/internal/hash.h
+array.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+array.$(OBJEXT): $(top_srcdir)/internal/object.h
+array.$(OBJEXT): $(top_srcdir)/internal/proc.h
+array.$(OBJEXT): $(top_srcdir)/internal/rational.h
+array.$(OBJEXT): $(top_srcdir)/internal/serial.h
+array.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+array.$(OBJEXT): $(top_srcdir)/internal/variable.h
+array.$(OBJEXT): $(top_srcdir)/internal/vm.h
+array.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+array.$(OBJEXT): {$(VPATH)}array.c
+array.$(OBJEXT): {$(VPATH)}array.rbinc
+array.$(OBJEXT): {$(VPATH)}assert.h
+array.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+array.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+array.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+array.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+array.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+array.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+array.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+array.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+array.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+array.$(OBJEXT): {$(VPATH)}builtin.h
+array.$(OBJEXT): {$(VPATH)}config.h
+array.$(OBJEXT): {$(VPATH)}constant.h
+array.$(OBJEXT): {$(VPATH)}debug_counter.h
+array.$(OBJEXT): {$(VPATH)}defines.h
+array.$(OBJEXT): {$(VPATH)}encoding.h
+array.$(OBJEXT): {$(VPATH)}id.h
+array.$(OBJEXT): {$(VPATH)}id_table.h
+array.$(OBJEXT): {$(VPATH)}intern.h
+array.$(OBJEXT): {$(VPATH)}internal.h
+array.$(OBJEXT): {$(VPATH)}internal/abi.h
+array.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+array.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+array.$(OBJEXT): {$(VPATH)}internal/assume.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+array.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+array.$(OBJEXT): {$(VPATH)}internal/cast.h
+array.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+array.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+array.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+array.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+array.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+array.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+array.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+array.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+array.$(OBJEXT): {$(VPATH)}internal/config.h
+array.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+array.$(OBJEXT): {$(VPATH)}internal/core.h
+array.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+array.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+array.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+array.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+array.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+array.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+array.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+array.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+array.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+array.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+array.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+array.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+array.$(OBJEXT): {$(VPATH)}internal/ctype.h
+array.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+array.$(OBJEXT): {$(VPATH)}internal/dosish.h
+array.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+array.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+array.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+array.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+array.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+array.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+array.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+array.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+array.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+array.$(OBJEXT): {$(VPATH)}internal/error.h
+array.$(OBJEXT): {$(VPATH)}internal/eval.h
+array.$(OBJEXT): {$(VPATH)}internal/event.h
+array.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+array.$(OBJEXT): {$(VPATH)}internal/gc.h
+array.$(OBJEXT): {$(VPATH)}internal/glob.h
+array.$(OBJEXT): {$(VPATH)}internal/globals.h
+array.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+array.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+array.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+array.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+array.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+array.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+array.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+array.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+array.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+array.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+array.$(OBJEXT): {$(VPATH)}internal/iterator.h
+array.$(OBJEXT): {$(VPATH)}internal/memory.h
+array.$(OBJEXT): {$(VPATH)}internal/method.h
+array.$(OBJEXT): {$(VPATH)}internal/module.h
+array.$(OBJEXT): {$(VPATH)}internal/newobj.h
+array.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+array.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+array.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+array.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+array.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+array.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+array.$(OBJEXT): {$(VPATH)}internal/symbol.h
+array.$(OBJEXT): {$(VPATH)}internal/value.h
+array.$(OBJEXT): {$(VPATH)}internal/value_type.h
+array.$(OBJEXT): {$(VPATH)}internal/variable.h
+array.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+array.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+array.$(OBJEXT): {$(VPATH)}missing.h
+array.$(OBJEXT): {$(VPATH)}onigmo.h
+array.$(OBJEXT): {$(VPATH)}oniguruma.h
+array.$(OBJEXT): {$(VPATH)}probes.dmyh
+array.$(OBJEXT): {$(VPATH)}probes.h
+array.$(OBJEXT): {$(VPATH)}ruby_assert.h
+array.$(OBJEXT): {$(VPATH)}shape.h
+array.$(OBJEXT): {$(VPATH)}st.h
+array.$(OBJEXT): {$(VPATH)}subst.h
+array.$(OBJEXT): {$(VPATH)}transient_heap.h
+array.$(OBJEXT): {$(VPATH)}util.h
+ast.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+ast.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+ast.$(OBJEXT): $(CCAN_DIR)/list/list.h
+ast.$(OBJEXT): $(CCAN_DIR)/str/str.h
+ast.$(OBJEXT): $(hdrdir)/ruby.h
+ast.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+ast.$(OBJEXT): $(top_srcdir)/internal/array.h
+ast.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+ast.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+ast.$(OBJEXT): $(top_srcdir)/internal/gc.h
+ast.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+ast.$(OBJEXT): $(top_srcdir)/internal/parse.h
+ast.$(OBJEXT): $(top_srcdir)/internal/serial.h
+ast.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+ast.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+ast.$(OBJEXT): $(top_srcdir)/internal/variable.h
+ast.$(OBJEXT): $(top_srcdir)/internal/vm.h
+ast.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+ast.$(OBJEXT): {$(VPATH)}assert.h
+ast.$(OBJEXT): {$(VPATH)}ast.c
+ast.$(OBJEXT): {$(VPATH)}ast.rbinc
+ast.$(OBJEXT): {$(VPATH)}atomic.h
+ast.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+ast.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+ast.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+ast.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+ast.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+ast.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+ast.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+ast.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+ast.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+ast.$(OBJEXT): {$(VPATH)}builtin.h
+ast.$(OBJEXT): {$(VPATH)}config.h
+ast.$(OBJEXT): {$(VPATH)}constant.h
+ast.$(OBJEXT): {$(VPATH)}defines.h
+ast.$(OBJEXT): {$(VPATH)}encoding.h
+ast.$(OBJEXT): {$(VPATH)}id.h
+ast.$(OBJEXT): {$(VPATH)}id_table.h
+ast.$(OBJEXT): {$(VPATH)}intern.h
+ast.$(OBJEXT): {$(VPATH)}internal.h
+ast.$(OBJEXT): {$(VPATH)}internal/abi.h
+ast.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+ast.$(OBJEXT): {$(VPATH)}internal/assume.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+ast.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+ast.$(OBJEXT): {$(VPATH)}internal/cast.h
+ast.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+ast.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+ast.$(OBJEXT): {$(VPATH)}internal/config.h
+ast.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+ast.$(OBJEXT): {$(VPATH)}internal/core.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+ast.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+ast.$(OBJEXT): {$(VPATH)}internal/ctype.h
+ast.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+ast.$(OBJEXT): {$(VPATH)}internal/dosish.h
+ast.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+ast.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+ast.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+ast.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+ast.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+ast.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+ast.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+ast.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+ast.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+ast.$(OBJEXT): {$(VPATH)}internal/error.h
+ast.$(OBJEXT): {$(VPATH)}internal/eval.h
+ast.$(OBJEXT): {$(VPATH)}internal/event.h
+ast.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+ast.$(OBJEXT): {$(VPATH)}internal/gc.h
+ast.$(OBJEXT): {$(VPATH)}internal/glob.h
+ast.$(OBJEXT): {$(VPATH)}internal/globals.h
+ast.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+ast.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+ast.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+ast.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+ast.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+ast.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+ast.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+ast.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+ast.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+ast.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+ast.$(OBJEXT): {$(VPATH)}internal/iterator.h
+ast.$(OBJEXT): {$(VPATH)}internal/memory.h
+ast.$(OBJEXT): {$(VPATH)}internal/method.h
+ast.$(OBJEXT): {$(VPATH)}internal/module.h
+ast.$(OBJEXT): {$(VPATH)}internal/newobj.h
+ast.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+ast.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+ast.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+ast.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+ast.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+ast.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+ast.$(OBJEXT): {$(VPATH)}internal/symbol.h
+ast.$(OBJEXT): {$(VPATH)}internal/value.h
+ast.$(OBJEXT): {$(VPATH)}internal/value_type.h
+ast.$(OBJEXT): {$(VPATH)}internal/variable.h
+ast.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+ast.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+ast.$(OBJEXT): {$(VPATH)}iseq.h
+ast.$(OBJEXT): {$(VPATH)}method.h
+ast.$(OBJEXT): {$(VPATH)}missing.h
+ast.$(OBJEXT): {$(VPATH)}node.h
+ast.$(OBJEXT): {$(VPATH)}onigmo.h
+ast.$(OBJEXT): {$(VPATH)}oniguruma.h
+ast.$(OBJEXT): {$(VPATH)}ruby_assert.h
+ast.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+ast.$(OBJEXT): {$(VPATH)}shape.h
+ast.$(OBJEXT): {$(VPATH)}st.h
+ast.$(OBJEXT): {$(VPATH)}subst.h
+ast.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+ast.$(OBJEXT): {$(VPATH)}thread_native.h
+ast.$(OBJEXT): {$(VPATH)}util.h
+ast.$(OBJEXT): {$(VPATH)}vm_core.h
+ast.$(OBJEXT): {$(VPATH)}vm_opts.h
+bignum.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/bits.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/class.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/complex.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/gc.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/object.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/serial.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/variable.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/vm.h
+bignum.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+bignum.$(OBJEXT): {$(VPATH)}assert.h
+bignum.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+bignum.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+bignum.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+bignum.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+bignum.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+bignum.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+bignum.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+bignum.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+bignum.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+bignum.$(OBJEXT): {$(VPATH)}bignum.c
+bignum.$(OBJEXT): {$(VPATH)}config.h
+bignum.$(OBJEXT): {$(VPATH)}constant.h
+bignum.$(OBJEXT): {$(VPATH)}defines.h
+bignum.$(OBJEXT): {$(VPATH)}id.h
+bignum.$(OBJEXT): {$(VPATH)}id_table.h
+bignum.$(OBJEXT): {$(VPATH)}intern.h
+bignum.$(OBJEXT): {$(VPATH)}internal.h
+bignum.$(OBJEXT): {$(VPATH)}internal/abi.h
+bignum.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+bignum.$(OBJEXT): {$(VPATH)}internal/assume.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+bignum.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+bignum.$(OBJEXT): {$(VPATH)}internal/cast.h
+bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+bignum.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+bignum.$(OBJEXT): {$(VPATH)}internal/config.h
+bignum.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+bignum.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+bignum.$(OBJEXT): {$(VPATH)}internal/ctype.h
+bignum.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+bignum.$(OBJEXT): {$(VPATH)}internal/dosish.h
+bignum.$(OBJEXT): {$(VPATH)}internal/error.h
+bignum.$(OBJEXT): {$(VPATH)}internal/eval.h
+bignum.$(OBJEXT): {$(VPATH)}internal/event.h
+bignum.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+bignum.$(OBJEXT): {$(VPATH)}internal/gc.h
+bignum.$(OBJEXT): {$(VPATH)}internal/glob.h
+bignum.$(OBJEXT): {$(VPATH)}internal/globals.h
+bignum.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+bignum.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+bignum.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+bignum.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+bignum.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+bignum.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+bignum.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+bignum.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+bignum.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+bignum.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+bignum.$(OBJEXT): {$(VPATH)}internal/iterator.h
+bignum.$(OBJEXT): {$(VPATH)}internal/memory.h
+bignum.$(OBJEXT): {$(VPATH)}internal/method.h
+bignum.$(OBJEXT): {$(VPATH)}internal/module.h
+bignum.$(OBJEXT): {$(VPATH)}internal/newobj.h
+bignum.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+bignum.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+bignum.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+bignum.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+bignum.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+bignum.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+bignum.$(OBJEXT): {$(VPATH)}internal/symbol.h
+bignum.$(OBJEXT): {$(VPATH)}internal/value.h
+bignum.$(OBJEXT): {$(VPATH)}internal/value_type.h
+bignum.$(OBJEXT): {$(VPATH)}internal/variable.h
+bignum.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+bignum.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+bignum.$(OBJEXT): {$(VPATH)}missing.h
+bignum.$(OBJEXT): {$(VPATH)}ruby_assert.h
+bignum.$(OBJEXT): {$(VPATH)}shape.h
+bignum.$(OBJEXT): {$(VPATH)}st.h
+bignum.$(OBJEXT): {$(VPATH)}subst.h
+bignum.$(OBJEXT): {$(VPATH)}thread.h
+bignum.$(OBJEXT): {$(VPATH)}util.h
+builtin.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+builtin.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+builtin.$(OBJEXT): $(CCAN_DIR)/list/list.h
+builtin.$(OBJEXT): $(CCAN_DIR)/str/str.h
+builtin.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+builtin.$(OBJEXT): $(top_srcdir)/internal/array.h
+builtin.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+builtin.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+builtin.$(OBJEXT): $(top_srcdir)/internal/gc.h
+builtin.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+builtin.$(OBJEXT): $(top_srcdir)/internal/serial.h
+builtin.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+builtin.$(OBJEXT): $(top_srcdir)/internal/variable.h
+builtin.$(OBJEXT): $(top_srcdir)/internal/vm.h
+builtin.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+builtin.$(OBJEXT): {$(VPATH)}assert.h
+builtin.$(OBJEXT): {$(VPATH)}atomic.h
+builtin.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+builtin.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+builtin.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+builtin.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+builtin.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+builtin.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+builtin.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+builtin.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+builtin.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+builtin.$(OBJEXT): {$(VPATH)}builtin.c
+builtin.$(OBJEXT): {$(VPATH)}builtin.h
+builtin.$(OBJEXT): {$(VPATH)}builtin_binary.inc
+builtin.$(OBJEXT): {$(VPATH)}config.h
+builtin.$(OBJEXT): {$(VPATH)}constant.h
+builtin.$(OBJEXT): {$(VPATH)}defines.h
+builtin.$(OBJEXT): {$(VPATH)}id.h
+builtin.$(OBJEXT): {$(VPATH)}id_table.h
+builtin.$(OBJEXT): {$(VPATH)}intern.h
+builtin.$(OBJEXT): {$(VPATH)}internal.h
+builtin.$(OBJEXT): {$(VPATH)}internal/abi.h
+builtin.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+builtin.$(OBJEXT): {$(VPATH)}internal/assume.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+builtin.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+builtin.$(OBJEXT): {$(VPATH)}internal/cast.h
+builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+builtin.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+builtin.$(OBJEXT): {$(VPATH)}internal/config.h
+builtin.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+builtin.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+builtin.$(OBJEXT): {$(VPATH)}internal/ctype.h
+builtin.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+builtin.$(OBJEXT): {$(VPATH)}internal/dosish.h
+builtin.$(OBJEXT): {$(VPATH)}internal/error.h
+builtin.$(OBJEXT): {$(VPATH)}internal/eval.h
+builtin.$(OBJEXT): {$(VPATH)}internal/event.h
+builtin.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+builtin.$(OBJEXT): {$(VPATH)}internal/gc.h
+builtin.$(OBJEXT): {$(VPATH)}internal/glob.h
+builtin.$(OBJEXT): {$(VPATH)}internal/globals.h
+builtin.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+builtin.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+builtin.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+builtin.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+builtin.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+builtin.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+builtin.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+builtin.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+builtin.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+builtin.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+builtin.$(OBJEXT): {$(VPATH)}internal/iterator.h
+builtin.$(OBJEXT): {$(VPATH)}internal/memory.h
+builtin.$(OBJEXT): {$(VPATH)}internal/method.h
+builtin.$(OBJEXT): {$(VPATH)}internal/module.h
+builtin.$(OBJEXT): {$(VPATH)}internal/newobj.h
+builtin.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+builtin.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+builtin.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+builtin.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+builtin.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+builtin.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+builtin.$(OBJEXT): {$(VPATH)}internal/symbol.h
+builtin.$(OBJEXT): {$(VPATH)}internal/value.h
+builtin.$(OBJEXT): {$(VPATH)}internal/value_type.h
+builtin.$(OBJEXT): {$(VPATH)}internal/variable.h
+builtin.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+builtin.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+builtin.$(OBJEXT): {$(VPATH)}iseq.h
+builtin.$(OBJEXT): {$(VPATH)}method.h
+builtin.$(OBJEXT): {$(VPATH)}missing.h
+builtin.$(OBJEXT): {$(VPATH)}node.h
+builtin.$(OBJEXT): {$(VPATH)}ruby_assert.h
+builtin.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+builtin.$(OBJEXT): {$(VPATH)}shape.h
+builtin.$(OBJEXT): {$(VPATH)}st.h
+builtin.$(OBJEXT): {$(VPATH)}subst.h
+builtin.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+builtin.$(OBJEXT): {$(VPATH)}thread_native.h
+builtin.$(OBJEXT): {$(VPATH)}vm_core.h
+builtin.$(OBJEXT): {$(VPATH)}vm_opts.h
+class.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+class.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+class.$(OBJEXT): $(CCAN_DIR)/list/list.h
+class.$(OBJEXT): $(CCAN_DIR)/str/str.h
+class.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+class.$(OBJEXT): $(top_srcdir)/internal/array.h
+class.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+class.$(OBJEXT): $(top_srcdir)/internal/class.h
+class.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+class.$(OBJEXT): $(top_srcdir)/internal/eval.h
+class.$(OBJEXT): $(top_srcdir)/internal/gc.h
+class.$(OBJEXT): $(top_srcdir)/internal/hash.h
+class.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+class.$(OBJEXT): $(top_srcdir)/internal/object.h
+class.$(OBJEXT): $(top_srcdir)/internal/serial.h
+class.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+class.$(OBJEXT): $(top_srcdir)/internal/string.h
+class.$(OBJEXT): $(top_srcdir)/internal/variable.h
+class.$(OBJEXT): $(top_srcdir)/internal/vm.h
+class.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+class.$(OBJEXT): {$(VPATH)}assert.h
+class.$(OBJEXT): {$(VPATH)}atomic.h
+class.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+class.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+class.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+class.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+class.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+class.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+class.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+class.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+class.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+class.$(OBJEXT): {$(VPATH)}class.c
+class.$(OBJEXT): {$(VPATH)}config.h
+class.$(OBJEXT): {$(VPATH)}constant.h
+class.$(OBJEXT): {$(VPATH)}debug_counter.h
+class.$(OBJEXT): {$(VPATH)}defines.h
+class.$(OBJEXT): {$(VPATH)}encoding.h
+class.$(OBJEXT): {$(VPATH)}id.h
+class.$(OBJEXT): {$(VPATH)}id_table.h
+class.$(OBJEXT): {$(VPATH)}intern.h
+class.$(OBJEXT): {$(VPATH)}internal.h
+class.$(OBJEXT): {$(VPATH)}internal/abi.h
+class.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+class.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+class.$(OBJEXT): {$(VPATH)}internal/assume.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+class.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+class.$(OBJEXT): {$(VPATH)}internal/cast.h
+class.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+class.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+class.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+class.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+class.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+class.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+class.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+class.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+class.$(OBJEXT): {$(VPATH)}internal/config.h
+class.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+class.$(OBJEXT): {$(VPATH)}internal/core.h
+class.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+class.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+class.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+class.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+class.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+class.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+class.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+class.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+class.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+class.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+class.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+class.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+class.$(OBJEXT): {$(VPATH)}internal/ctype.h
+class.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+class.$(OBJEXT): {$(VPATH)}internal/dosish.h
+class.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+class.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+class.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+class.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+class.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+class.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+class.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+class.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+class.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+class.$(OBJEXT): {$(VPATH)}internal/error.h
+class.$(OBJEXT): {$(VPATH)}internal/eval.h
+class.$(OBJEXT): {$(VPATH)}internal/event.h
+class.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+class.$(OBJEXT): {$(VPATH)}internal/gc.h
+class.$(OBJEXT): {$(VPATH)}internal/glob.h
+class.$(OBJEXT): {$(VPATH)}internal/globals.h
+class.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+class.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+class.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+class.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+class.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+class.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+class.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+class.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+class.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+class.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+class.$(OBJEXT): {$(VPATH)}internal/iterator.h
+class.$(OBJEXT): {$(VPATH)}internal/memory.h
+class.$(OBJEXT): {$(VPATH)}internal/method.h
+class.$(OBJEXT): {$(VPATH)}internal/module.h
+class.$(OBJEXT): {$(VPATH)}internal/newobj.h
+class.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+class.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+class.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+class.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+class.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+class.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+class.$(OBJEXT): {$(VPATH)}internal/symbol.h
+class.$(OBJEXT): {$(VPATH)}internal/value.h
+class.$(OBJEXT): {$(VPATH)}internal/value_type.h
+class.$(OBJEXT): {$(VPATH)}internal/variable.h
+class.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+class.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+class.$(OBJEXT): {$(VPATH)}method.h
+class.$(OBJEXT): {$(VPATH)}missing.h
+class.$(OBJEXT): {$(VPATH)}node.h
+class.$(OBJEXT): {$(VPATH)}onigmo.h
+class.$(OBJEXT): {$(VPATH)}oniguruma.h
+class.$(OBJEXT): {$(VPATH)}ruby_assert.h
+class.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+class.$(OBJEXT): {$(VPATH)}shape.h
+class.$(OBJEXT): {$(VPATH)}st.h
+class.$(OBJEXT): {$(VPATH)}subst.h
+class.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+class.$(OBJEXT): {$(VPATH)}thread_native.h
+class.$(OBJEXT): {$(VPATH)}vm_core.h
+class.$(OBJEXT): {$(VPATH)}vm_opts.h
+compar.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+compar.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+compar.$(OBJEXT): $(top_srcdir)/internal/compar.h
+compar.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+compar.$(OBJEXT): $(top_srcdir)/internal/error.h
+compar.$(OBJEXT): $(top_srcdir)/internal/serial.h
+compar.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+compar.$(OBJEXT): $(top_srcdir)/internal/string.h
+compar.$(OBJEXT): $(top_srcdir)/internal/vm.h
+compar.$(OBJEXT): {$(VPATH)}assert.h
+compar.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+compar.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+compar.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+compar.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+compar.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+compar.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+compar.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+compar.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+compar.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+compar.$(OBJEXT): {$(VPATH)}compar.c
+compar.$(OBJEXT): {$(VPATH)}config.h
+compar.$(OBJEXT): {$(VPATH)}defines.h
+compar.$(OBJEXT): {$(VPATH)}encoding.h
+compar.$(OBJEXT): {$(VPATH)}id.h
+compar.$(OBJEXT): {$(VPATH)}intern.h
+compar.$(OBJEXT): {$(VPATH)}internal.h
+compar.$(OBJEXT): {$(VPATH)}internal/abi.h
+compar.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+compar.$(OBJEXT): {$(VPATH)}internal/assume.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+compar.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+compar.$(OBJEXT): {$(VPATH)}internal/cast.h
+compar.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+compar.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+compar.$(OBJEXT): {$(VPATH)}internal/config.h
+compar.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+compar.$(OBJEXT): {$(VPATH)}internal/core.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+compar.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+compar.$(OBJEXT): {$(VPATH)}internal/ctype.h
+compar.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+compar.$(OBJEXT): {$(VPATH)}internal/dosish.h
+compar.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+compar.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+compar.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+compar.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+compar.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+compar.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+compar.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+compar.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+compar.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+compar.$(OBJEXT): {$(VPATH)}internal/error.h
+compar.$(OBJEXT): {$(VPATH)}internal/eval.h
+compar.$(OBJEXT): {$(VPATH)}internal/event.h
+compar.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+compar.$(OBJEXT): {$(VPATH)}internal/gc.h
+compar.$(OBJEXT): {$(VPATH)}internal/glob.h
+compar.$(OBJEXT): {$(VPATH)}internal/globals.h
+compar.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+compar.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+compar.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+compar.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+compar.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+compar.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+compar.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+compar.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+compar.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+compar.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+compar.$(OBJEXT): {$(VPATH)}internal/iterator.h
+compar.$(OBJEXT): {$(VPATH)}internal/memory.h
+compar.$(OBJEXT): {$(VPATH)}internal/method.h
+compar.$(OBJEXT): {$(VPATH)}internal/module.h
+compar.$(OBJEXT): {$(VPATH)}internal/newobj.h
+compar.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+compar.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+compar.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+compar.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+compar.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+compar.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+compar.$(OBJEXT): {$(VPATH)}internal/symbol.h
+compar.$(OBJEXT): {$(VPATH)}internal/value.h
+compar.$(OBJEXT): {$(VPATH)}internal/value_type.h
+compar.$(OBJEXT): {$(VPATH)}internal/variable.h
+compar.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+compar.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+compar.$(OBJEXT): {$(VPATH)}missing.h
+compar.$(OBJEXT): {$(VPATH)}onigmo.h
+compar.$(OBJEXT): {$(VPATH)}oniguruma.h
+compar.$(OBJEXT): {$(VPATH)}st.h
+compar.$(OBJEXT): {$(VPATH)}subst.h
+compile.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+compile.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+compile.$(OBJEXT): $(CCAN_DIR)/list/list.h
+compile.$(OBJEXT): $(CCAN_DIR)/str/str.h
+compile.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+compile.$(OBJEXT): $(top_srcdir)/internal/array.h
+compile.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+compile.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+compile.$(OBJEXT): $(top_srcdir)/internal/bits.h
+compile.$(OBJEXT): $(top_srcdir)/internal/class.h
+compile.$(OBJEXT): $(top_srcdir)/internal/compile.h
+compile.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+compile.$(OBJEXT): $(top_srcdir)/internal/complex.h
+compile.$(OBJEXT): $(top_srcdir)/internal/encoding.h
+compile.$(OBJEXT): $(top_srcdir)/internal/error.h
+compile.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+compile.$(OBJEXT): $(top_srcdir)/internal/gc.h
+compile.$(OBJEXT): $(top_srcdir)/internal/hash.h
+compile.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+compile.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+compile.$(OBJEXT): $(top_srcdir)/internal/object.h
+compile.$(OBJEXT): $(top_srcdir)/internal/rational.h
+compile.$(OBJEXT): $(top_srcdir)/internal/re.h
+compile.$(OBJEXT): $(top_srcdir)/internal/serial.h
+compile.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+compile.$(OBJEXT): $(top_srcdir)/internal/string.h
+compile.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+compile.$(OBJEXT): $(top_srcdir)/internal/thread.h
+compile.$(OBJEXT): $(top_srcdir)/internal/variable.h
+compile.$(OBJEXT): $(top_srcdir)/internal/vm.h
+compile.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+compile.$(OBJEXT): {$(VPATH)}assert.h
+compile.$(OBJEXT): {$(VPATH)}atomic.h
+compile.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+compile.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+compile.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+compile.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+compile.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+compile.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+compile.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+compile.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+compile.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+compile.$(OBJEXT): {$(VPATH)}builtin.h
+compile.$(OBJEXT): {$(VPATH)}compile.c
+compile.$(OBJEXT): {$(VPATH)}config.h
+compile.$(OBJEXT): {$(VPATH)}constant.h
+compile.$(OBJEXT): {$(VPATH)}debug_counter.h
+compile.$(OBJEXT): {$(VPATH)}defines.h
+compile.$(OBJEXT): {$(VPATH)}encindex.h
+compile.$(OBJEXT): {$(VPATH)}encoding.h
+compile.$(OBJEXT): {$(VPATH)}gc.h
+compile.$(OBJEXT): {$(VPATH)}id.h
+compile.$(OBJEXT): {$(VPATH)}id_table.h
+compile.$(OBJEXT): {$(VPATH)}insns.def
+compile.$(OBJEXT): {$(VPATH)}insns.inc
+compile.$(OBJEXT): {$(VPATH)}insns_info.inc
+compile.$(OBJEXT): {$(VPATH)}intern.h
+compile.$(OBJEXT): {$(VPATH)}internal.h
+compile.$(OBJEXT): {$(VPATH)}internal/abi.h
+compile.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+compile.$(OBJEXT): {$(VPATH)}internal/assume.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+compile.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+compile.$(OBJEXT): {$(VPATH)}internal/cast.h
+compile.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+compile.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+compile.$(OBJEXT): {$(VPATH)}internal/config.h
+compile.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+compile.$(OBJEXT): {$(VPATH)}internal/core.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+compile.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+compile.$(OBJEXT): {$(VPATH)}internal/ctype.h
+compile.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+compile.$(OBJEXT): {$(VPATH)}internal/dosish.h
+compile.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+compile.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+compile.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+compile.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+compile.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+compile.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+compile.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+compile.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+compile.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+compile.$(OBJEXT): {$(VPATH)}internal/error.h
+compile.$(OBJEXT): {$(VPATH)}internal/eval.h
+compile.$(OBJEXT): {$(VPATH)}internal/event.h
+compile.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+compile.$(OBJEXT): {$(VPATH)}internal/gc.h
+compile.$(OBJEXT): {$(VPATH)}internal/glob.h
+compile.$(OBJEXT): {$(VPATH)}internal/globals.h
+compile.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+compile.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+compile.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+compile.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+compile.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+compile.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+compile.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+compile.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+compile.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+compile.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+compile.$(OBJEXT): {$(VPATH)}internal/iterator.h
+compile.$(OBJEXT): {$(VPATH)}internal/memory.h
+compile.$(OBJEXT): {$(VPATH)}internal/method.h
+compile.$(OBJEXT): {$(VPATH)}internal/module.h
+compile.$(OBJEXT): {$(VPATH)}internal/newobj.h
+compile.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+compile.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+compile.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+compile.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+compile.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+compile.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+compile.$(OBJEXT): {$(VPATH)}internal/symbol.h
+compile.$(OBJEXT): {$(VPATH)}internal/value.h
+compile.$(OBJEXT): {$(VPATH)}internal/value_type.h
+compile.$(OBJEXT): {$(VPATH)}internal/variable.h
+compile.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+compile.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+compile.$(OBJEXT): {$(VPATH)}iseq.h
+compile.$(OBJEXT): {$(VPATH)}method.h
+compile.$(OBJEXT): {$(VPATH)}missing.h
+compile.$(OBJEXT): {$(VPATH)}node.h
+compile.$(OBJEXT): {$(VPATH)}onigmo.h
+compile.$(OBJEXT): {$(VPATH)}oniguruma.h
+compile.$(OBJEXT): {$(VPATH)}optinsn.inc
+compile.$(OBJEXT): {$(VPATH)}re.h
+compile.$(OBJEXT): {$(VPATH)}regex.h
+compile.$(OBJEXT): {$(VPATH)}ruby_assert.h
+compile.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+compile.$(OBJEXT): {$(VPATH)}shape.h
+compile.$(OBJEXT): {$(VPATH)}st.h
+compile.$(OBJEXT): {$(VPATH)}subst.h
+compile.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+compile.$(OBJEXT): {$(VPATH)}thread_native.h
+compile.$(OBJEXT): {$(VPATH)}util.h
+compile.$(OBJEXT): {$(VPATH)}vm_callinfo.h
+compile.$(OBJEXT): {$(VPATH)}vm_core.h
+compile.$(OBJEXT): {$(VPATH)}vm_debug.h
+compile.$(OBJEXT): {$(VPATH)}vm_opts.h
+complex.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+complex.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+complex.$(OBJEXT): $(CCAN_DIR)/list/list.h
+complex.$(OBJEXT): $(CCAN_DIR)/str/str.h
+complex.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+complex.$(OBJEXT): $(top_srcdir)/internal/array.h
+complex.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+complex.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+complex.$(OBJEXT): $(top_srcdir)/internal/bits.h
+complex.$(OBJEXT): $(top_srcdir)/internal/class.h
+complex.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+complex.$(OBJEXT): $(top_srcdir)/internal/complex.h
+complex.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+complex.$(OBJEXT): $(top_srcdir)/internal/gc.h
+complex.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+complex.$(OBJEXT): $(top_srcdir)/internal/math.h
+complex.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+complex.$(OBJEXT): $(top_srcdir)/internal/object.h
+complex.$(OBJEXT): $(top_srcdir)/internal/rational.h
+complex.$(OBJEXT): $(top_srcdir)/internal/serial.h
+complex.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+complex.$(OBJEXT): $(top_srcdir)/internal/variable.h
+complex.$(OBJEXT): $(top_srcdir)/internal/vm.h
+complex.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+complex.$(OBJEXT): {$(VPATH)}assert.h
+complex.$(OBJEXT): {$(VPATH)}atomic.h
+complex.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+complex.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+complex.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+complex.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+complex.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+complex.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+complex.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+complex.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+complex.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+complex.$(OBJEXT): {$(VPATH)}complex.c
+complex.$(OBJEXT): {$(VPATH)}config.h
+complex.$(OBJEXT): {$(VPATH)}constant.h
+complex.$(OBJEXT): {$(VPATH)}defines.h
+complex.$(OBJEXT): {$(VPATH)}id.h
+complex.$(OBJEXT): {$(VPATH)}id_table.h
+complex.$(OBJEXT): {$(VPATH)}intern.h
+complex.$(OBJEXT): {$(VPATH)}internal.h
+complex.$(OBJEXT): {$(VPATH)}internal/abi.h
+complex.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+complex.$(OBJEXT): {$(VPATH)}internal/assume.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+complex.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+complex.$(OBJEXT): {$(VPATH)}internal/cast.h
+complex.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+complex.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+complex.$(OBJEXT): {$(VPATH)}internal/config.h
+complex.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+complex.$(OBJEXT): {$(VPATH)}internal/core.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+complex.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+complex.$(OBJEXT): {$(VPATH)}internal/ctype.h
+complex.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+complex.$(OBJEXT): {$(VPATH)}internal/dosish.h
+complex.$(OBJEXT): {$(VPATH)}internal/error.h
+complex.$(OBJEXT): {$(VPATH)}internal/eval.h
+complex.$(OBJEXT): {$(VPATH)}internal/event.h
+complex.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+complex.$(OBJEXT): {$(VPATH)}internal/gc.h
+complex.$(OBJEXT): {$(VPATH)}internal/glob.h
+complex.$(OBJEXT): {$(VPATH)}internal/globals.h
+complex.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+complex.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+complex.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+complex.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+complex.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+complex.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+complex.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+complex.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+complex.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+complex.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+complex.$(OBJEXT): {$(VPATH)}internal/iterator.h
+complex.$(OBJEXT): {$(VPATH)}internal/memory.h
+complex.$(OBJEXT): {$(VPATH)}internal/method.h
+complex.$(OBJEXT): {$(VPATH)}internal/module.h
+complex.$(OBJEXT): {$(VPATH)}internal/newobj.h
+complex.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+complex.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+complex.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+complex.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+complex.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+complex.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+complex.$(OBJEXT): {$(VPATH)}internal/symbol.h
+complex.$(OBJEXT): {$(VPATH)}internal/value.h
+complex.$(OBJEXT): {$(VPATH)}internal/value_type.h
+complex.$(OBJEXT): {$(VPATH)}internal/variable.h
+complex.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+complex.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+complex.$(OBJEXT): {$(VPATH)}method.h
+complex.$(OBJEXT): {$(VPATH)}missing.h
+complex.$(OBJEXT): {$(VPATH)}node.h
+complex.$(OBJEXT): {$(VPATH)}ruby_assert.h
+complex.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+complex.$(OBJEXT): {$(VPATH)}shape.h
+complex.$(OBJEXT): {$(VPATH)}st.h
+complex.$(OBJEXT): {$(VPATH)}subst.h
+complex.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+complex.$(OBJEXT): {$(VPATH)}thread_native.h
+complex.$(OBJEXT): {$(VPATH)}vm_core.h
+complex.$(OBJEXT): {$(VPATH)}vm_opts.h
+cont.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+cont.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+cont.$(OBJEXT): $(CCAN_DIR)/list/list.h
+cont.$(OBJEXT): $(CCAN_DIR)/str/str.h
+cont.$(OBJEXT): $(hdrdir)/ruby.h
+cont.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+cont.$(OBJEXT): $(top_srcdir)/internal/array.h
+cont.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+cont.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+cont.$(OBJEXT): $(top_srcdir)/internal/cont.h
+cont.$(OBJEXT): $(top_srcdir)/internal/error.h
+cont.$(OBJEXT): $(top_srcdir)/internal/gc.h
+cont.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+cont.$(OBJEXT): $(top_srcdir)/internal/proc.h
+cont.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+cont.$(OBJEXT): $(top_srcdir)/internal/serial.h
+cont.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+cont.$(OBJEXT): $(top_srcdir)/internal/string.h
+cont.$(OBJEXT): $(top_srcdir)/internal/variable.h
+cont.$(OBJEXT): $(top_srcdir)/internal/vm.h
+cont.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+cont.$(OBJEXT): {$(VPATH)}$(COROUTINE_H)
+cont.$(OBJEXT): {$(VPATH)}assert.h
+cont.$(OBJEXT): {$(VPATH)}atomic.h
+cont.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+cont.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+cont.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+cont.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+cont.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+cont.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+cont.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+cont.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+cont.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+cont.$(OBJEXT): {$(VPATH)}config.h
+cont.$(OBJEXT): {$(VPATH)}constant.h
+cont.$(OBJEXT): {$(VPATH)}cont.c
+cont.$(OBJEXT): {$(VPATH)}debug_counter.h
+cont.$(OBJEXT): {$(VPATH)}defines.h
+cont.$(OBJEXT): {$(VPATH)}encoding.h
+cont.$(OBJEXT): {$(VPATH)}eval_intern.h
+cont.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
+cont.$(OBJEXT): {$(VPATH)}gc.h
+cont.$(OBJEXT): {$(VPATH)}id.h
+cont.$(OBJEXT): {$(VPATH)}id_table.h
+cont.$(OBJEXT): {$(VPATH)}intern.h
+cont.$(OBJEXT): {$(VPATH)}internal.h
+cont.$(OBJEXT): {$(VPATH)}internal/abi.h
+cont.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+cont.$(OBJEXT): {$(VPATH)}internal/assume.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+cont.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+cont.$(OBJEXT): {$(VPATH)}internal/cast.h
+cont.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+cont.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+cont.$(OBJEXT): {$(VPATH)}internal/config.h
+cont.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+cont.$(OBJEXT): {$(VPATH)}internal/core.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+cont.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+cont.$(OBJEXT): {$(VPATH)}internal/ctype.h
+cont.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+cont.$(OBJEXT): {$(VPATH)}internal/dosish.h
+cont.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+cont.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+cont.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+cont.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+cont.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+cont.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+cont.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+cont.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+cont.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+cont.$(OBJEXT): {$(VPATH)}internal/error.h
+cont.$(OBJEXT): {$(VPATH)}internal/eval.h
+cont.$(OBJEXT): {$(VPATH)}internal/event.h
+cont.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+cont.$(OBJEXT): {$(VPATH)}internal/gc.h
+cont.$(OBJEXT): {$(VPATH)}internal/glob.h
+cont.$(OBJEXT): {$(VPATH)}internal/globals.h
+cont.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+cont.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+cont.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+cont.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+cont.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+cont.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+cont.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+cont.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+cont.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+cont.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+cont.$(OBJEXT): {$(VPATH)}internal/iterator.h
+cont.$(OBJEXT): {$(VPATH)}internal/memory.h
+cont.$(OBJEXT): {$(VPATH)}internal/method.h
+cont.$(OBJEXT): {$(VPATH)}internal/module.h
+cont.$(OBJEXT): {$(VPATH)}internal/newobj.h
+cont.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+cont.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+cont.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+cont.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+cont.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+cont.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+cont.$(OBJEXT): {$(VPATH)}internal/symbol.h
+cont.$(OBJEXT): {$(VPATH)}internal/value.h
+cont.$(OBJEXT): {$(VPATH)}internal/value_type.h
+cont.$(OBJEXT): {$(VPATH)}internal/variable.h
+cont.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+cont.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+cont.$(OBJEXT): {$(VPATH)}iseq.h
+cont.$(OBJEXT): {$(VPATH)}method.h
+cont.$(OBJEXT): {$(VPATH)}missing.h
+cont.$(OBJEXT): {$(VPATH)}mjit.h
+cont.$(OBJEXT): {$(VPATH)}node.h
+cont.$(OBJEXT): {$(VPATH)}onigmo.h
+cont.$(OBJEXT): {$(VPATH)}oniguruma.h
+cont.$(OBJEXT): {$(VPATH)}ractor.h
+cont.$(OBJEXT): {$(VPATH)}ractor_core.h
+cont.$(OBJEXT): {$(VPATH)}ruby_assert.h
+cont.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+cont.$(OBJEXT): {$(VPATH)}shape.h
+cont.$(OBJEXT): {$(VPATH)}st.h
+cont.$(OBJEXT): {$(VPATH)}subst.h
+cont.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+cont.$(OBJEXT): {$(VPATH)}thread_native.h
+cont.$(OBJEXT): {$(VPATH)}vm_core.h
+cont.$(OBJEXT): {$(VPATH)}vm_debug.h
+cont.$(OBJEXT): {$(VPATH)}vm_opts.h
+cont.$(OBJEXT): {$(VPATH)}vm_sync.h
+cont.$(OBJEXT): {$(VPATH)}yjit.h
+debug.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+debug.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+debug.$(OBJEXT): $(CCAN_DIR)/list/list.h
+debug.$(OBJEXT): $(CCAN_DIR)/str/str.h
+debug.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+debug.$(OBJEXT): $(top_srcdir)/internal/array.h
+debug.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+debug.$(OBJEXT): $(top_srcdir)/internal/class.h
+debug.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+debug.$(OBJEXT): $(top_srcdir)/internal/gc.h
+debug.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+debug.$(OBJEXT): $(top_srcdir)/internal/serial.h
+debug.$(OBJEXT): $(top_srcdir)/internal/signal.h
+debug.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+debug.$(OBJEXT): $(top_srcdir)/internal/variable.h
+debug.$(OBJEXT): $(top_srcdir)/internal/vm.h
+debug.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+debug.$(OBJEXT): {$(VPATH)}assert.h
+debug.$(OBJEXT): {$(VPATH)}atomic.h
+debug.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+debug.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+debug.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+debug.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+debug.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+debug.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+debug.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+debug.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+debug.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+debug.$(OBJEXT): {$(VPATH)}config.h
+debug.$(OBJEXT): {$(VPATH)}constant.h
+debug.$(OBJEXT): {$(VPATH)}debug.c
+debug.$(OBJEXT): {$(VPATH)}debug_counter.h
+debug.$(OBJEXT): {$(VPATH)}defines.h
+debug.$(OBJEXT): {$(VPATH)}encindex.h
+debug.$(OBJEXT): {$(VPATH)}encoding.h
+debug.$(OBJEXT): {$(VPATH)}eval_intern.h
+debug.$(OBJEXT): {$(VPATH)}gc.h
+debug.$(OBJEXT): {$(VPATH)}id.h
+debug.$(OBJEXT): {$(VPATH)}id_table.h
+debug.$(OBJEXT): {$(VPATH)}intern.h
+debug.$(OBJEXT): {$(VPATH)}internal.h
+debug.$(OBJEXT): {$(VPATH)}internal/abi.h
+debug.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+debug.$(OBJEXT): {$(VPATH)}internal/assume.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+debug.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+debug.$(OBJEXT): {$(VPATH)}internal/cast.h
+debug.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+debug.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+debug.$(OBJEXT): {$(VPATH)}internal/config.h
+debug.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+debug.$(OBJEXT): {$(VPATH)}internal/core.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+debug.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+debug.$(OBJEXT): {$(VPATH)}internal/ctype.h
+debug.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+debug.$(OBJEXT): {$(VPATH)}internal/dosish.h
+debug.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+debug.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+debug.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+debug.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+debug.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+debug.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+debug.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+debug.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+debug.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+debug.$(OBJEXT): {$(VPATH)}internal/error.h
+debug.$(OBJEXT): {$(VPATH)}internal/eval.h
+debug.$(OBJEXT): {$(VPATH)}internal/event.h
+debug.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+debug.$(OBJEXT): {$(VPATH)}internal/gc.h
+debug.$(OBJEXT): {$(VPATH)}internal/glob.h
+debug.$(OBJEXT): {$(VPATH)}internal/globals.h
+debug.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+debug.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+debug.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+debug.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+debug.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+debug.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+debug.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+debug.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+debug.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+debug.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+debug.$(OBJEXT): {$(VPATH)}internal/iterator.h
+debug.$(OBJEXT): {$(VPATH)}internal/memory.h
+debug.$(OBJEXT): {$(VPATH)}internal/method.h
+debug.$(OBJEXT): {$(VPATH)}internal/module.h
+debug.$(OBJEXT): {$(VPATH)}internal/newobj.h
+debug.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+debug.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+debug.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+debug.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+debug.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+debug.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+debug.$(OBJEXT): {$(VPATH)}internal/symbol.h
+debug.$(OBJEXT): {$(VPATH)}internal/value.h
+debug.$(OBJEXT): {$(VPATH)}internal/value_type.h
+debug.$(OBJEXT): {$(VPATH)}internal/variable.h
+debug.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+debug.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+debug.$(OBJEXT): {$(VPATH)}io.h
+debug.$(OBJEXT): {$(VPATH)}method.h
+debug.$(OBJEXT): {$(VPATH)}missing.h
+debug.$(OBJEXT): {$(VPATH)}node.h
+debug.$(OBJEXT): {$(VPATH)}onigmo.h
+debug.$(OBJEXT): {$(VPATH)}oniguruma.h
+debug.$(OBJEXT): {$(VPATH)}ractor.h
+debug.$(OBJEXT): {$(VPATH)}ractor_core.h
+debug.$(OBJEXT): {$(VPATH)}ruby_assert.h
+debug.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+debug.$(OBJEXT): {$(VPATH)}shape.h
+debug.$(OBJEXT): {$(VPATH)}st.h
+debug.$(OBJEXT): {$(VPATH)}subst.h
+debug.$(OBJEXT): {$(VPATH)}symbol.h
+debug.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+debug.$(OBJEXT): {$(VPATH)}thread_native.h
+debug.$(OBJEXT): {$(VPATH)}util.h
+debug.$(OBJEXT): {$(VPATH)}vm_callinfo.h
+debug.$(OBJEXT): {$(VPATH)}vm_core.h
+debug.$(OBJEXT): {$(VPATH)}vm_debug.h
+debug.$(OBJEXT): {$(VPATH)}vm_opts.h
+debug_counter.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+debug_counter.$(OBJEXT): {$(VPATH)}assert.h
+debug_counter.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+debug_counter.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+debug_counter.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+debug_counter.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+debug_counter.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+debug_counter.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+debug_counter.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+debug_counter.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+debug_counter.$(OBJEXT): {$(VPATH)}config.h
+debug_counter.$(OBJEXT): {$(VPATH)}debug_counter.c
+debug_counter.$(OBJEXT): {$(VPATH)}debug_counter.h
+debug_counter.$(OBJEXT): {$(VPATH)}defines.h
+debug_counter.$(OBJEXT): {$(VPATH)}intern.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/abi.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/assume.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/cast.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/config.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/ctype.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/dosish.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/error.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/eval.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/event.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/gc.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/glob.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/globals.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/iterator.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/memory.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/method.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/module.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/newobj.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/symbol.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/value.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/value_type.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/variable.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+debug_counter.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+debug_counter.$(OBJEXT): {$(VPATH)}missing.h
+debug_counter.$(OBJEXT): {$(VPATH)}st.h
+debug_counter.$(OBJEXT): {$(VPATH)}subst.h
+debug_counter.$(OBJEXT): {$(VPATH)}thread_native.h
+dir.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+dir.$(OBJEXT): $(top_srcdir)/internal/array.h
+dir.$(OBJEXT): $(top_srcdir)/internal/class.h
+dir.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+dir.$(OBJEXT): $(top_srcdir)/internal/dir.h
+dir.$(OBJEXT): $(top_srcdir)/internal/encoding.h
+dir.$(OBJEXT): $(top_srcdir)/internal/error.h
+dir.$(OBJEXT): $(top_srcdir)/internal/file.h
+dir.$(OBJEXT): $(top_srcdir)/internal/gc.h
+dir.$(OBJEXT): $(top_srcdir)/internal/io.h
+dir.$(OBJEXT): $(top_srcdir)/internal/object.h
+dir.$(OBJEXT): $(top_srcdir)/internal/serial.h
+dir.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+dir.$(OBJEXT): $(top_srcdir)/internal/string.h
+dir.$(OBJEXT): $(top_srcdir)/internal/variable.h
+dir.$(OBJEXT): $(top_srcdir)/internal/vm.h
+dir.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+dir.$(OBJEXT): {$(VPATH)}assert.h
+dir.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+dir.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+dir.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+dir.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+dir.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+dir.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+dir.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+dir.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+dir.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+dir.$(OBJEXT): {$(VPATH)}builtin.h
+dir.$(OBJEXT): {$(VPATH)}config.h
+dir.$(OBJEXT): {$(VPATH)}constant.h
+dir.$(OBJEXT): {$(VPATH)}defines.h
+dir.$(OBJEXT): {$(VPATH)}dir.c
+dir.$(OBJEXT): {$(VPATH)}dir.rbinc
+dir.$(OBJEXT): {$(VPATH)}encindex.h
+dir.$(OBJEXT): {$(VPATH)}encoding.h
+dir.$(OBJEXT): {$(VPATH)}id.h
+dir.$(OBJEXT): {$(VPATH)}id_table.h
+dir.$(OBJEXT): {$(VPATH)}intern.h
+dir.$(OBJEXT): {$(VPATH)}internal.h
+dir.$(OBJEXT): {$(VPATH)}internal/abi.h
+dir.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+dir.$(OBJEXT): {$(VPATH)}internal/assume.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+dir.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+dir.$(OBJEXT): {$(VPATH)}internal/cast.h
+dir.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+dir.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+dir.$(OBJEXT): {$(VPATH)}internal/config.h
+dir.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+dir.$(OBJEXT): {$(VPATH)}internal/core.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+dir.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+dir.$(OBJEXT): {$(VPATH)}internal/ctype.h
+dir.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+dir.$(OBJEXT): {$(VPATH)}internal/dosish.h
+dir.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+dir.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+dir.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+dir.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+dir.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+dir.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+dir.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+dir.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+dir.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+dir.$(OBJEXT): {$(VPATH)}internal/error.h
+dir.$(OBJEXT): {$(VPATH)}internal/eval.h
+dir.$(OBJEXT): {$(VPATH)}internal/event.h
+dir.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+dir.$(OBJEXT): {$(VPATH)}internal/gc.h
+dir.$(OBJEXT): {$(VPATH)}internal/glob.h
+dir.$(OBJEXT): {$(VPATH)}internal/globals.h
+dir.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+dir.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+dir.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+dir.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+dir.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+dir.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+dir.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+dir.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+dir.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+dir.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+dir.$(OBJEXT): {$(VPATH)}internal/iterator.h
+dir.$(OBJEXT): {$(VPATH)}internal/memory.h
+dir.$(OBJEXT): {$(VPATH)}internal/method.h
+dir.$(OBJEXT): {$(VPATH)}internal/module.h
+dir.$(OBJEXT): {$(VPATH)}internal/newobj.h
+dir.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+dir.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+dir.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+dir.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+dir.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+dir.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+dir.$(OBJEXT): {$(VPATH)}internal/symbol.h
+dir.$(OBJEXT): {$(VPATH)}internal/value.h
+dir.$(OBJEXT): {$(VPATH)}internal/value_type.h
+dir.$(OBJEXT): {$(VPATH)}internal/variable.h
+dir.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+dir.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+dir.$(OBJEXT): {$(VPATH)}io.h
+dir.$(OBJEXT): {$(VPATH)}missing.h
+dir.$(OBJEXT): {$(VPATH)}onigmo.h
+dir.$(OBJEXT): {$(VPATH)}oniguruma.h
+dir.$(OBJEXT): {$(VPATH)}shape.h
+dir.$(OBJEXT): {$(VPATH)}st.h
+dir.$(OBJEXT): {$(VPATH)}subst.h
+dir.$(OBJEXT): {$(VPATH)}thread.h
+dir.$(OBJEXT): {$(VPATH)}util.h
+dln.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+dln.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+dln.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+dln.$(OBJEXT): {$(VPATH)}assert.h
+dln.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+dln.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+dln.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+dln.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+dln.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+dln.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+dln.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+dln.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+dln.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+dln.$(OBJEXT): {$(VPATH)}config.h
+dln.$(OBJEXT): {$(VPATH)}defines.h
+dln.$(OBJEXT): {$(VPATH)}dln.c
+dln.$(OBJEXT): {$(VPATH)}dln.h
+dln.$(OBJEXT): {$(VPATH)}intern.h
+dln.$(OBJEXT): {$(VPATH)}internal.h
+dln.$(OBJEXT): {$(VPATH)}internal/abi.h
+dln.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+dln.$(OBJEXT): {$(VPATH)}internal/assume.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+dln.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+dln.$(OBJEXT): {$(VPATH)}internal/cast.h
+dln.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+dln.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+dln.$(OBJEXT): {$(VPATH)}internal/config.h
+dln.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+dln.$(OBJEXT): {$(VPATH)}internal/core.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+dln.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+dln.$(OBJEXT): {$(VPATH)}internal/ctype.h
+dln.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+dln.$(OBJEXT): {$(VPATH)}internal/dosish.h
+dln.$(OBJEXT): {$(VPATH)}internal/error.h
+dln.$(OBJEXT): {$(VPATH)}internal/eval.h
+dln.$(OBJEXT): {$(VPATH)}internal/event.h
+dln.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+dln.$(OBJEXT): {$(VPATH)}internal/gc.h
+dln.$(OBJEXT): {$(VPATH)}internal/glob.h
+dln.$(OBJEXT): {$(VPATH)}internal/globals.h
+dln.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+dln.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+dln.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+dln.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+dln.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+dln.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+dln.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+dln.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+dln.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+dln.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+dln.$(OBJEXT): {$(VPATH)}internal/iterator.h
+dln.$(OBJEXT): {$(VPATH)}internal/memory.h
+dln.$(OBJEXT): {$(VPATH)}internal/method.h
+dln.$(OBJEXT): {$(VPATH)}internal/module.h
+dln.$(OBJEXT): {$(VPATH)}internal/newobj.h
+dln.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+dln.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+dln.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+dln.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+dln.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+dln.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+dln.$(OBJEXT): {$(VPATH)}internal/symbol.h
+dln.$(OBJEXT): {$(VPATH)}internal/value.h
+dln.$(OBJEXT): {$(VPATH)}internal/value_type.h
+dln.$(OBJEXT): {$(VPATH)}internal/variable.h
+dln.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+dln.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+dln.$(OBJEXT): {$(VPATH)}missing.h
+dln.$(OBJEXT): {$(VPATH)}st.h
+dln.$(OBJEXT): {$(VPATH)}subst.h
+dln_find.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+dln_find.$(OBJEXT): {$(VPATH)}assert.h
+dln_find.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+dln_find.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+dln_find.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+dln_find.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+dln_find.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+dln_find.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+dln_find.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+dln_find.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+dln_find.$(OBJEXT): {$(VPATH)}config.h
+dln_find.$(OBJEXT): {$(VPATH)}defines.h
+dln_find.$(OBJEXT): {$(VPATH)}dln.h
+dln_find.$(OBJEXT): {$(VPATH)}dln_find.c
+dln_find.$(OBJEXT): {$(VPATH)}intern.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/abi.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/assume.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/cast.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/config.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/ctype.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/dosish.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/error.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/eval.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/event.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/gc.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/glob.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/globals.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/iterator.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/memory.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/method.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/module.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/newobj.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/symbol.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/value.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/value_type.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/variable.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+dln_find.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+dln_find.$(OBJEXT): {$(VPATH)}missing.h
+dln_find.$(OBJEXT): {$(VPATH)}st.h
+dln_find.$(OBJEXT): {$(VPATH)}subst.h
+dmydln.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+dmydln.$(OBJEXT): {$(VPATH)}assert.h
+dmydln.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+dmydln.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+dmydln.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+dmydln.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+dmydln.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+dmydln.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+dmydln.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+dmydln.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+dmydln.$(OBJEXT): {$(VPATH)}config.h
+dmydln.$(OBJEXT): {$(VPATH)}defines.h
+dmydln.$(OBJEXT): {$(VPATH)}dmydln.c
+dmydln.$(OBJEXT): {$(VPATH)}intern.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/abi.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/assume.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/cast.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/config.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/ctype.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/dosish.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/error.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/eval.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/event.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/gc.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/glob.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/globals.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/iterator.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/memory.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/method.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/module.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/newobj.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/symbol.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/value.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/value_type.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/variable.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+dmydln.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+dmydln.$(OBJEXT): {$(VPATH)}missing.h
+dmydln.$(OBJEXT): {$(VPATH)}st.h
+dmydln.$(OBJEXT): {$(VPATH)}subst.h
+dmyenc.$(OBJEXT): {$(VPATH)}dmyenc.c
+dmyext.$(OBJEXT): {$(VPATH)}dmyext.c
+enc/ascii.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+enc/ascii.$(OBJEXT): {$(VPATH)}assert.h
+enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+enc/ascii.$(OBJEXT): {$(VPATH)}config.h
+enc/ascii.$(OBJEXT): {$(VPATH)}defines.h
+enc/ascii.$(OBJEXT): {$(VPATH)}enc/ascii.c
+enc/ascii.$(OBJEXT): {$(VPATH)}encindex.h
+enc/ascii.$(OBJEXT): {$(VPATH)}encoding.h
+enc/ascii.$(OBJEXT): {$(VPATH)}intern.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/assume.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/cast.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/config.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/ctype.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/dosish.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/error.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/eval.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/event.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/gc.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/glob.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/globals.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/iterator.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/memory.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/method.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/module.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/newobj.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/symbol.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/value.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/value_type.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/variable.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+enc/ascii.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+enc/ascii.$(OBJEXT): {$(VPATH)}missing.h
+enc/ascii.$(OBJEXT): {$(VPATH)}onigmo.h
+enc/ascii.$(OBJEXT): {$(VPATH)}oniguruma.h
+enc/ascii.$(OBJEXT): {$(VPATH)}regenc.h
+enc/ascii.$(OBJEXT): {$(VPATH)}st.h
+enc/ascii.$(OBJEXT): {$(VPATH)}subst.h
+enc/trans/newline.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}assert.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}config.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}defines.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}enc/trans/newline.c
+enc/trans/newline.$(OBJEXT): {$(VPATH)}intern.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/assume.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/cast.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/config.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/ctype.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/dosish.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/error.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/eval.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/event.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/gc.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/glob.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/globals.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/iterator.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/memory.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/method.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/module.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/newobj.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/symbol.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/value.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/value_type.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/variable.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}missing.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}st.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}subst.h
+enc/trans/newline.$(OBJEXT): {$(VPATH)}transcode_data.h
+enc/unicode.$(OBJEXT): $(UNICODE_HDR_DIR)/casefold.h
+enc/unicode.$(OBJEXT): $(UNICODE_HDR_DIR)/name2ctype.h
+enc/unicode.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+enc/unicode.$(OBJEXT): {$(VPATH)}assert.h
+enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+enc/unicode.$(OBJEXT): {$(VPATH)}config.h
+enc/unicode.$(OBJEXT): {$(VPATH)}defines.h
+enc/unicode.$(OBJEXT): {$(VPATH)}enc/unicode.c
+enc/unicode.$(OBJEXT): {$(VPATH)}intern.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/assume.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/cast.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/config.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/ctype.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/dosish.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/error.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/eval.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/event.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/gc.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/glob.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/globals.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/iterator.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/memory.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/method.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/module.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/newobj.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/symbol.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/value.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/value_type.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/variable.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+enc/unicode.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+enc/unicode.$(OBJEXT): {$(VPATH)}missing.h
+enc/unicode.$(OBJEXT): {$(VPATH)}onigmo.h
+enc/unicode.$(OBJEXT): {$(VPATH)}regenc.h
+enc/unicode.$(OBJEXT): {$(VPATH)}regint.h
+enc/unicode.$(OBJEXT): {$(VPATH)}st.h
+enc/unicode.$(OBJEXT): {$(VPATH)}subst.h
+enc/us_ascii.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}assert.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}config.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}defines.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}enc/us_ascii.c
+enc/us_ascii.$(OBJEXT): {$(VPATH)}encindex.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}encoding.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}intern.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/assume.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/cast.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/config.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/ctype.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/dosish.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/error.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/eval.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/event.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/gc.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/glob.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/globals.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/iterator.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/memory.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/method.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/module.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/newobj.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/symbol.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/value.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/value_type.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/variable.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}missing.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}onigmo.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}oniguruma.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}regenc.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}st.h
+enc/us_ascii.$(OBJEXT): {$(VPATH)}subst.h
+enc/utf_8.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}assert.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}config.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}defines.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}enc/utf_8.c
+enc/utf_8.$(OBJEXT): {$(VPATH)}encindex.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}encoding.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}intern.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/assume.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/cast.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/config.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/ctype.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/dosish.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/error.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/eval.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/event.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/gc.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/glob.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/globals.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/iterator.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/memory.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/method.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/module.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/newobj.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/symbol.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/value.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/value_type.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/variable.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}missing.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}onigmo.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}oniguruma.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}regenc.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}st.h
+enc/utf_8.$(OBJEXT): {$(VPATH)}subst.h
+encoding.$(OBJEXT): $(hdrdir)/ruby.h
+encoding.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/class.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/enc.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/encoding.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/error.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/gc.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/inits.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/load.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/object.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/serial.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/string.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/variable.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/vm.h
+encoding.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+encoding.$(OBJEXT): {$(VPATH)}assert.h
+encoding.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+encoding.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+encoding.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+encoding.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+encoding.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+encoding.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+encoding.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+encoding.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+encoding.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+encoding.$(OBJEXT): {$(VPATH)}config.h
+encoding.$(OBJEXT): {$(VPATH)}constant.h
+encoding.$(OBJEXT): {$(VPATH)}debug_counter.h
+encoding.$(OBJEXT): {$(VPATH)}defines.h
+encoding.$(OBJEXT): {$(VPATH)}encindex.h
+encoding.$(OBJEXT): {$(VPATH)}encoding.c
+encoding.$(OBJEXT): {$(VPATH)}encoding.h
+encoding.$(OBJEXT): {$(VPATH)}id_table.h
+encoding.$(OBJEXT): {$(VPATH)}intern.h
+encoding.$(OBJEXT): {$(VPATH)}internal.h
+encoding.$(OBJEXT): {$(VPATH)}internal/abi.h
+encoding.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+encoding.$(OBJEXT): {$(VPATH)}internal/assume.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+encoding.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+encoding.$(OBJEXT): {$(VPATH)}internal/cast.h
+encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+encoding.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+encoding.$(OBJEXT): {$(VPATH)}internal/config.h
+encoding.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+encoding.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+encoding.$(OBJEXT): {$(VPATH)}internal/ctype.h
+encoding.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+encoding.$(OBJEXT): {$(VPATH)}internal/dosish.h
+encoding.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+encoding.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+encoding.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+encoding.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+encoding.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+encoding.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+encoding.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+encoding.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+encoding.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+encoding.$(OBJEXT): {$(VPATH)}internal/error.h
+encoding.$(OBJEXT): {$(VPATH)}internal/eval.h
+encoding.$(OBJEXT): {$(VPATH)}internal/event.h
+encoding.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+encoding.$(OBJEXT): {$(VPATH)}internal/gc.h
+encoding.$(OBJEXT): {$(VPATH)}internal/glob.h
+encoding.$(OBJEXT): {$(VPATH)}internal/globals.h
+encoding.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+encoding.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+encoding.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+encoding.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+encoding.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+encoding.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+encoding.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+encoding.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+encoding.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+encoding.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+encoding.$(OBJEXT): {$(VPATH)}internal/iterator.h
+encoding.$(OBJEXT): {$(VPATH)}internal/memory.h
+encoding.$(OBJEXT): {$(VPATH)}internal/method.h
+encoding.$(OBJEXT): {$(VPATH)}internal/module.h
+encoding.$(OBJEXT): {$(VPATH)}internal/newobj.h
+encoding.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+encoding.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+encoding.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+encoding.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+encoding.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+encoding.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+encoding.$(OBJEXT): {$(VPATH)}internal/symbol.h
+encoding.$(OBJEXT): {$(VPATH)}internal/value.h
+encoding.$(OBJEXT): {$(VPATH)}internal/value_type.h
+encoding.$(OBJEXT): {$(VPATH)}internal/variable.h
+encoding.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+encoding.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+encoding.$(OBJEXT): {$(VPATH)}missing.h
+encoding.$(OBJEXT): {$(VPATH)}onigmo.h
+encoding.$(OBJEXT): {$(VPATH)}oniguruma.h
+encoding.$(OBJEXT): {$(VPATH)}regenc.h
+encoding.$(OBJEXT): {$(VPATH)}ruby_assert.h
+encoding.$(OBJEXT): {$(VPATH)}shape.h
+encoding.$(OBJEXT): {$(VPATH)}st.h
+encoding.$(OBJEXT): {$(VPATH)}subst.h
+encoding.$(OBJEXT): {$(VPATH)}util.h
+encoding.$(OBJEXT): {$(VPATH)}vm_debug.h
+encoding.$(OBJEXT): {$(VPATH)}vm_sync.h
+enum.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+enum.$(OBJEXT): $(top_srcdir)/internal/array.h
+enum.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+enum.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+enum.$(OBJEXT): $(top_srcdir)/internal/bits.h
+enum.$(OBJEXT): $(top_srcdir)/internal/class.h
+enum.$(OBJEXT): $(top_srcdir)/internal/compar.h
+enum.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+enum.$(OBJEXT): $(top_srcdir)/internal/enum.h
+enum.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+enum.$(OBJEXT): $(top_srcdir)/internal/gc.h
+enum.$(OBJEXT): $(top_srcdir)/internal/hash.h
+enum.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+enum.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+enum.$(OBJEXT): $(top_srcdir)/internal/object.h
+enum.$(OBJEXT): $(top_srcdir)/internal/proc.h
+enum.$(OBJEXT): $(top_srcdir)/internal/rational.h
+enum.$(OBJEXT): $(top_srcdir)/internal/re.h
+enum.$(OBJEXT): $(top_srcdir)/internal/serial.h
+enum.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+enum.$(OBJEXT): $(top_srcdir)/internal/variable.h
+enum.$(OBJEXT): $(top_srcdir)/internal/vm.h
+enum.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+enum.$(OBJEXT): {$(VPATH)}assert.h
+enum.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+enum.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+enum.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+enum.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+enum.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+enum.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+enum.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+enum.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+enum.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+enum.$(OBJEXT): {$(VPATH)}config.h
+enum.$(OBJEXT): {$(VPATH)}constant.h
+enum.$(OBJEXT): {$(VPATH)}defines.h
+enum.$(OBJEXT): {$(VPATH)}encoding.h
+enum.$(OBJEXT): {$(VPATH)}enum.c
+enum.$(OBJEXT): {$(VPATH)}id.h
+enum.$(OBJEXT): {$(VPATH)}id_table.h
+enum.$(OBJEXT): {$(VPATH)}intern.h
+enum.$(OBJEXT): {$(VPATH)}internal.h
+enum.$(OBJEXT): {$(VPATH)}internal/abi.h
+enum.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+enum.$(OBJEXT): {$(VPATH)}internal/assume.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+enum.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+enum.$(OBJEXT): {$(VPATH)}internal/cast.h
+enum.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+enum.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+enum.$(OBJEXT): {$(VPATH)}internal/config.h
+enum.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+enum.$(OBJEXT): {$(VPATH)}internal/core.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+enum.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+enum.$(OBJEXT): {$(VPATH)}internal/ctype.h
+enum.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+enum.$(OBJEXT): {$(VPATH)}internal/dosish.h
+enum.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+enum.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+enum.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+enum.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+enum.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+enum.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+enum.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+enum.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+enum.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+enum.$(OBJEXT): {$(VPATH)}internal/error.h
+enum.$(OBJEXT): {$(VPATH)}internal/eval.h
+enum.$(OBJEXT): {$(VPATH)}internal/event.h
+enum.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+enum.$(OBJEXT): {$(VPATH)}internal/gc.h
+enum.$(OBJEXT): {$(VPATH)}internal/glob.h
+enum.$(OBJEXT): {$(VPATH)}internal/globals.h
+enum.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+enum.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+enum.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+enum.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+enum.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+enum.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+enum.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+enum.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+enum.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+enum.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+enum.$(OBJEXT): {$(VPATH)}internal/iterator.h
+enum.$(OBJEXT): {$(VPATH)}internal/memory.h
+enum.$(OBJEXT): {$(VPATH)}internal/method.h
+enum.$(OBJEXT): {$(VPATH)}internal/module.h
+enum.$(OBJEXT): {$(VPATH)}internal/newobj.h
+enum.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+enum.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+enum.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+enum.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+enum.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+enum.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+enum.$(OBJEXT): {$(VPATH)}internal/symbol.h
+enum.$(OBJEXT): {$(VPATH)}internal/value.h
+enum.$(OBJEXT): {$(VPATH)}internal/value_type.h
+enum.$(OBJEXT): {$(VPATH)}internal/variable.h
+enum.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+enum.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+enum.$(OBJEXT): {$(VPATH)}missing.h
+enum.$(OBJEXT): {$(VPATH)}onigmo.h
+enum.$(OBJEXT): {$(VPATH)}oniguruma.h
+enum.$(OBJEXT): {$(VPATH)}ruby_assert.h
+enum.$(OBJEXT): {$(VPATH)}shape.h
+enum.$(OBJEXT): {$(VPATH)}st.h
+enum.$(OBJEXT): {$(VPATH)}subst.h
+enum.$(OBJEXT): {$(VPATH)}symbol.h
+enum.$(OBJEXT): {$(VPATH)}util.h
+enumerator.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+enumerator.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+enumerator.$(OBJEXT): $(CCAN_DIR)/list/list.h
+enumerator.$(OBJEXT): $(CCAN_DIR)/str/str.h
+enumerator.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/array.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/bits.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/class.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/enumerator.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/error.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/gc.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/hash.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/range.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/rational.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/serial.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/string.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/struct.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/vm.h
+enumerator.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+enumerator.$(OBJEXT): {$(VPATH)}assert.h
+enumerator.$(OBJEXT): {$(VPATH)}atomic.h
+enumerator.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+enumerator.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+enumerator.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+enumerator.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+enumerator.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+enumerator.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+enumerator.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+enumerator.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+enumerator.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+enumerator.$(OBJEXT): {$(VPATH)}config.h
+enumerator.$(OBJEXT): {$(VPATH)}defines.h
+enumerator.$(OBJEXT): {$(VPATH)}encoding.h
+enumerator.$(OBJEXT): {$(VPATH)}enumerator.c
+enumerator.$(OBJEXT): {$(VPATH)}id.h
+enumerator.$(OBJEXT): {$(VPATH)}id_table.h
+enumerator.$(OBJEXT): {$(VPATH)}intern.h
+enumerator.$(OBJEXT): {$(VPATH)}internal.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/abi.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/assume.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/cast.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/config.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/ctype.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/dosish.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/error.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/eval.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/event.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/gc.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/glob.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/globals.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/iterator.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/memory.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/method.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/module.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/newobj.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/symbol.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/value.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/value_type.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/variable.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+enumerator.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+enumerator.$(OBJEXT): {$(VPATH)}method.h
+enumerator.$(OBJEXT): {$(VPATH)}missing.h
+enumerator.$(OBJEXT): {$(VPATH)}node.h
+enumerator.$(OBJEXT): {$(VPATH)}onigmo.h
+enumerator.$(OBJEXT): {$(VPATH)}oniguruma.h
+enumerator.$(OBJEXT): {$(VPATH)}ruby_assert.h
+enumerator.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+enumerator.$(OBJEXT): {$(VPATH)}shape.h
+enumerator.$(OBJEXT): {$(VPATH)}st.h
+enumerator.$(OBJEXT): {$(VPATH)}subst.h
+enumerator.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+enumerator.$(OBJEXT): {$(VPATH)}thread_native.h
+enumerator.$(OBJEXT): {$(VPATH)}vm_core.h
+enumerator.$(OBJEXT): {$(VPATH)}vm_opts.h
+error.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+error.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+error.$(OBJEXT): $(CCAN_DIR)/list/list.h
+error.$(OBJEXT): $(CCAN_DIR)/str/str.h
+error.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+error.$(OBJEXT): $(top_srcdir)/internal/array.h
+error.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+error.$(OBJEXT): $(top_srcdir)/internal/class.h
+error.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+error.$(OBJEXT): $(top_srcdir)/internal/error.h
+error.$(OBJEXT): $(top_srcdir)/internal/eval.h
+error.$(OBJEXT): $(top_srcdir)/internal/gc.h
+error.$(OBJEXT): $(top_srcdir)/internal/hash.h
+error.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+error.$(OBJEXT): $(top_srcdir)/internal/io.h
+error.$(OBJEXT): $(top_srcdir)/internal/load.h
+error.$(OBJEXT): $(top_srcdir)/internal/object.h
+error.$(OBJEXT): $(top_srcdir)/internal/serial.h
+error.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+error.$(OBJEXT): $(top_srcdir)/internal/string.h
+error.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+error.$(OBJEXT): $(top_srcdir)/internal/thread.h
+error.$(OBJEXT): $(top_srcdir)/internal/variable.h
+error.$(OBJEXT): $(top_srcdir)/internal/vm.h
+error.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+error.$(OBJEXT): {$(VPATH)}assert.h
+error.$(OBJEXT): {$(VPATH)}atomic.h
+error.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+error.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+error.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+error.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+error.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+error.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+error.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+error.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+error.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+error.$(OBJEXT): {$(VPATH)}builtin.h
+error.$(OBJEXT): {$(VPATH)}config.h
+error.$(OBJEXT): {$(VPATH)}constant.h
+error.$(OBJEXT): {$(VPATH)}defines.h
+error.$(OBJEXT): {$(VPATH)}encoding.h
+error.$(OBJEXT): {$(VPATH)}error.c
+error.$(OBJEXT): {$(VPATH)}id.h
+error.$(OBJEXT): {$(VPATH)}id_table.h
+error.$(OBJEXT): {$(VPATH)}intern.h
+error.$(OBJEXT): {$(VPATH)}internal.h
+error.$(OBJEXT): {$(VPATH)}internal/abi.h
+error.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+error.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+error.$(OBJEXT): {$(VPATH)}internal/assume.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+error.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+error.$(OBJEXT): {$(VPATH)}internal/cast.h
+error.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+error.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+error.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+error.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+error.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+error.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+error.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+error.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+error.$(OBJEXT): {$(VPATH)}internal/config.h
+error.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+error.$(OBJEXT): {$(VPATH)}internal/core.h
+error.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+error.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+error.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+error.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+error.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+error.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+error.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+error.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+error.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+error.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+error.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+error.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+error.$(OBJEXT): {$(VPATH)}internal/ctype.h
+error.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+error.$(OBJEXT): {$(VPATH)}internal/dosish.h
+error.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+error.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+error.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+error.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+error.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+error.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+error.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+error.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+error.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+error.$(OBJEXT): {$(VPATH)}internal/error.h
+error.$(OBJEXT): {$(VPATH)}internal/eval.h
+error.$(OBJEXT): {$(VPATH)}internal/event.h
+error.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+error.$(OBJEXT): {$(VPATH)}internal/gc.h
+error.$(OBJEXT): {$(VPATH)}internal/glob.h
+error.$(OBJEXT): {$(VPATH)}internal/globals.h
+error.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+error.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+error.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+error.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+error.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+error.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+error.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+error.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+error.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+error.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+error.$(OBJEXT): {$(VPATH)}internal/iterator.h
+error.$(OBJEXT): {$(VPATH)}internal/memory.h
+error.$(OBJEXT): {$(VPATH)}internal/method.h
+error.$(OBJEXT): {$(VPATH)}internal/module.h
+error.$(OBJEXT): {$(VPATH)}internal/newobj.h
+error.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+error.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+error.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+error.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+error.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+error.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+error.$(OBJEXT): {$(VPATH)}internal/symbol.h
+error.$(OBJEXT): {$(VPATH)}internal/value.h
+error.$(OBJEXT): {$(VPATH)}internal/value_type.h
+error.$(OBJEXT): {$(VPATH)}internal/variable.h
+error.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+error.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+error.$(OBJEXT): {$(VPATH)}io.h
+error.$(OBJEXT): {$(VPATH)}known_errors.inc
+error.$(OBJEXT): {$(VPATH)}method.h
+error.$(OBJEXT): {$(VPATH)}missing.h
+error.$(OBJEXT): {$(VPATH)}node.h
+error.$(OBJEXT): {$(VPATH)}onigmo.h
+error.$(OBJEXT): {$(VPATH)}oniguruma.h
+error.$(OBJEXT): {$(VPATH)}ruby_assert.h
+error.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+error.$(OBJEXT): {$(VPATH)}shape.h
+error.$(OBJEXT): {$(VPATH)}st.h
+error.$(OBJEXT): {$(VPATH)}subst.h
+error.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+error.$(OBJEXT): {$(VPATH)}thread_native.h
+error.$(OBJEXT): {$(VPATH)}vm_core.h
+error.$(OBJEXT): {$(VPATH)}vm_opts.h
+error.$(OBJEXT): {$(VPATH)}warning.rbinc
+eval.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+eval.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+eval.$(OBJEXT): $(CCAN_DIR)/list/list.h
+eval.$(OBJEXT): $(CCAN_DIR)/str/str.h
+eval.$(OBJEXT): $(hdrdir)/ruby.h
+eval.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+eval.$(OBJEXT): $(top_srcdir)/internal/array.h
+eval.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+eval.$(OBJEXT): $(top_srcdir)/internal/class.h
+eval.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+eval.$(OBJEXT): $(top_srcdir)/internal/cont.h
+eval.$(OBJEXT): $(top_srcdir)/internal/error.h
+eval.$(OBJEXT): $(top_srcdir)/internal/eval.h
+eval.$(OBJEXT): $(top_srcdir)/internal/gc.h
+eval.$(OBJEXT): $(top_srcdir)/internal/hash.h
+eval.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+eval.$(OBJEXT): $(top_srcdir)/internal/inits.h
+eval.$(OBJEXT): $(top_srcdir)/internal/io.h
+eval.$(OBJEXT): $(top_srcdir)/internal/object.h
+eval.$(OBJEXT): $(top_srcdir)/internal/serial.h
+eval.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+eval.$(OBJEXT): $(top_srcdir)/internal/string.h
+eval.$(OBJEXT): $(top_srcdir)/internal/thread.h
+eval.$(OBJEXT): $(top_srcdir)/internal/variable.h
+eval.$(OBJEXT): $(top_srcdir)/internal/vm.h
+eval.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+eval.$(OBJEXT): {$(VPATH)}assert.h
+eval.$(OBJEXT): {$(VPATH)}atomic.h
+eval.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+eval.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+eval.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+eval.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+eval.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+eval.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+eval.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+eval.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+eval.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+eval.$(OBJEXT): {$(VPATH)}config.h
+eval.$(OBJEXT): {$(VPATH)}constant.h
+eval.$(OBJEXT): {$(VPATH)}debug_counter.h
+eval.$(OBJEXT): {$(VPATH)}defines.h
+eval.$(OBJEXT): {$(VPATH)}encoding.h
+eval.$(OBJEXT): {$(VPATH)}eval.c
+eval.$(OBJEXT): {$(VPATH)}eval_error.c
+eval.$(OBJEXT): {$(VPATH)}eval_intern.h
+eval.$(OBJEXT): {$(VPATH)}eval_jump.c
+eval.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
+eval.$(OBJEXT): {$(VPATH)}gc.h
+eval.$(OBJEXT): {$(VPATH)}id.h
+eval.$(OBJEXT): {$(VPATH)}id_table.h
+eval.$(OBJEXT): {$(VPATH)}intern.h
+eval.$(OBJEXT): {$(VPATH)}internal.h
+eval.$(OBJEXT): {$(VPATH)}internal/abi.h
+eval.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+eval.$(OBJEXT): {$(VPATH)}internal/assume.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+eval.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+eval.$(OBJEXT): {$(VPATH)}internal/cast.h
+eval.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+eval.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+eval.$(OBJEXT): {$(VPATH)}internal/config.h
+eval.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+eval.$(OBJEXT): {$(VPATH)}internal/core.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+eval.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+eval.$(OBJEXT): {$(VPATH)}internal/ctype.h
+eval.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+eval.$(OBJEXT): {$(VPATH)}internal/dosish.h
+eval.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+eval.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+eval.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+eval.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+eval.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+eval.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+eval.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+eval.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+eval.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+eval.$(OBJEXT): {$(VPATH)}internal/error.h
+eval.$(OBJEXT): {$(VPATH)}internal/eval.h
+eval.$(OBJEXT): {$(VPATH)}internal/event.h
+eval.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+eval.$(OBJEXT): {$(VPATH)}internal/gc.h
+eval.$(OBJEXT): {$(VPATH)}internal/glob.h
+eval.$(OBJEXT): {$(VPATH)}internal/globals.h
+eval.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+eval.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+eval.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+eval.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+eval.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+eval.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+eval.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+eval.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+eval.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+eval.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+eval.$(OBJEXT): {$(VPATH)}internal/iterator.h
+eval.$(OBJEXT): {$(VPATH)}internal/memory.h
+eval.$(OBJEXT): {$(VPATH)}internal/method.h
+eval.$(OBJEXT): {$(VPATH)}internal/module.h
+eval.$(OBJEXT): {$(VPATH)}internal/newobj.h
+eval.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+eval.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+eval.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+eval.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+eval.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+eval.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+eval.$(OBJEXT): {$(VPATH)}internal/symbol.h
+eval.$(OBJEXT): {$(VPATH)}internal/value.h
+eval.$(OBJEXT): {$(VPATH)}internal/value_type.h
+eval.$(OBJEXT): {$(VPATH)}internal/variable.h
+eval.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+eval.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+eval.$(OBJEXT): {$(VPATH)}io.h
+eval.$(OBJEXT): {$(VPATH)}iseq.h
+eval.$(OBJEXT): {$(VPATH)}method.h
+eval.$(OBJEXT): {$(VPATH)}missing.h
+eval.$(OBJEXT): {$(VPATH)}mjit.h
+eval.$(OBJEXT): {$(VPATH)}node.h
+eval.$(OBJEXT): {$(VPATH)}onigmo.h
+eval.$(OBJEXT): {$(VPATH)}oniguruma.h
+eval.$(OBJEXT): {$(VPATH)}probes.dmyh
+eval.$(OBJEXT): {$(VPATH)}probes.h
+eval.$(OBJEXT): {$(VPATH)}probes_helper.h
+eval.$(OBJEXT): {$(VPATH)}ractor.h
+eval.$(OBJEXT): {$(VPATH)}ractor_core.h
+eval.$(OBJEXT): {$(VPATH)}ruby_assert.h
+eval.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+eval.$(OBJEXT): {$(VPATH)}shape.h
+eval.$(OBJEXT): {$(VPATH)}st.h
+eval.$(OBJEXT): {$(VPATH)}subst.h
+eval.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+eval.$(OBJEXT): {$(VPATH)}thread_native.h
+eval.$(OBJEXT): {$(VPATH)}vm.h
+eval.$(OBJEXT): {$(VPATH)}vm_core.h
+eval.$(OBJEXT): {$(VPATH)}vm_debug.h
+eval.$(OBJEXT): {$(VPATH)}vm_opts.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}config.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}explicit_bzero.c
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/config.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+explicit_bzero.$(OBJEXT): {$(VPATH)}missing.h
+file.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+file.$(OBJEXT): $(top_srcdir)/internal/array.h
+file.$(OBJEXT): $(top_srcdir)/internal/class.h
+file.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+file.$(OBJEXT): $(top_srcdir)/internal/dir.h
+file.$(OBJEXT): $(top_srcdir)/internal/error.h
+file.$(OBJEXT): $(top_srcdir)/internal/file.h
+file.$(OBJEXT): $(top_srcdir)/internal/gc.h
+file.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+file.$(OBJEXT): $(top_srcdir)/internal/io.h
+file.$(OBJEXT): $(top_srcdir)/internal/load.h
+file.$(OBJEXT): $(top_srcdir)/internal/object.h
+file.$(OBJEXT): $(top_srcdir)/internal/process.h
+file.$(OBJEXT): $(top_srcdir)/internal/serial.h
+file.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+file.$(OBJEXT): $(top_srcdir)/internal/string.h
+file.$(OBJEXT): $(top_srcdir)/internal/thread.h
+file.$(OBJEXT): $(top_srcdir)/internal/variable.h
+file.$(OBJEXT): $(top_srcdir)/internal/vm.h
+file.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+file.$(OBJEXT): {$(VPATH)}assert.h
+file.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+file.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+file.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+file.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+file.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+file.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+file.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+file.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+file.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+file.$(OBJEXT): {$(VPATH)}config.h
+file.$(OBJEXT): {$(VPATH)}constant.h
+file.$(OBJEXT): {$(VPATH)}defines.h
+file.$(OBJEXT): {$(VPATH)}dln.h
+file.$(OBJEXT): {$(VPATH)}encindex.h
+file.$(OBJEXT): {$(VPATH)}encoding.h
+file.$(OBJEXT): {$(VPATH)}file.c
+file.$(OBJEXT): {$(VPATH)}id.h
+file.$(OBJEXT): {$(VPATH)}id_table.h
+file.$(OBJEXT): {$(VPATH)}intern.h
+file.$(OBJEXT): {$(VPATH)}internal.h
+file.$(OBJEXT): {$(VPATH)}internal/abi.h
+file.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+file.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+file.$(OBJEXT): {$(VPATH)}internal/assume.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+file.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+file.$(OBJEXT): {$(VPATH)}internal/cast.h
+file.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+file.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+file.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+file.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+file.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+file.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+file.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+file.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+file.$(OBJEXT): {$(VPATH)}internal/config.h
+file.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+file.$(OBJEXT): {$(VPATH)}internal/core.h
+file.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+file.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+file.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+file.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+file.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+file.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+file.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+file.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+file.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+file.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+file.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+file.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+file.$(OBJEXT): {$(VPATH)}internal/ctype.h
+file.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+file.$(OBJEXT): {$(VPATH)}internal/dosish.h
+file.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+file.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+file.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+file.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+file.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+file.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+file.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+file.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+file.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+file.$(OBJEXT): {$(VPATH)}internal/error.h
+file.$(OBJEXT): {$(VPATH)}internal/eval.h
+file.$(OBJEXT): {$(VPATH)}internal/event.h
+file.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+file.$(OBJEXT): {$(VPATH)}internal/gc.h
+file.$(OBJEXT): {$(VPATH)}internal/glob.h
+file.$(OBJEXT): {$(VPATH)}internal/globals.h
+file.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+file.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+file.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+file.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+file.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+file.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+file.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+file.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+file.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+file.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+file.$(OBJEXT): {$(VPATH)}internal/iterator.h
+file.$(OBJEXT): {$(VPATH)}internal/memory.h
+file.$(OBJEXT): {$(VPATH)}internal/method.h
+file.$(OBJEXT): {$(VPATH)}internal/module.h
+file.$(OBJEXT): {$(VPATH)}internal/newobj.h
+file.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+file.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+file.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+file.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+file.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+file.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+file.$(OBJEXT): {$(VPATH)}internal/symbol.h
+file.$(OBJEXT): {$(VPATH)}internal/value.h
+file.$(OBJEXT): {$(VPATH)}internal/value_type.h
+file.$(OBJEXT): {$(VPATH)}internal/variable.h
+file.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+file.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+file.$(OBJEXT): {$(VPATH)}io.h
+file.$(OBJEXT): {$(VPATH)}missing.h
+file.$(OBJEXT): {$(VPATH)}onigmo.h
+file.$(OBJEXT): {$(VPATH)}oniguruma.h
+file.$(OBJEXT): {$(VPATH)}shape.h
+file.$(OBJEXT): {$(VPATH)}st.h
+file.$(OBJEXT): {$(VPATH)}subst.h
+file.$(OBJEXT): {$(VPATH)}thread.h
+file.$(OBJEXT): {$(VPATH)}util.h
+gc.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+gc.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+gc.$(OBJEXT): $(CCAN_DIR)/list/list.h
+gc.$(OBJEXT): $(CCAN_DIR)/str/str.h
+gc.$(OBJEXT): $(hdrdir)/ruby.h
+gc.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+gc.$(OBJEXT): $(top_srcdir)/internal/array.h
+gc.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+gc.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+gc.$(OBJEXT): $(top_srcdir)/internal/bits.h
+gc.$(OBJEXT): $(top_srcdir)/internal/class.h
+gc.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+gc.$(OBJEXT): $(top_srcdir)/internal/complex.h
+gc.$(OBJEXT): $(top_srcdir)/internal/cont.h
+gc.$(OBJEXT): $(top_srcdir)/internal/error.h
+gc.$(OBJEXT): $(top_srcdir)/internal/eval.h
+gc.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+gc.$(OBJEXT): $(top_srcdir)/internal/gc.h
+gc.$(OBJEXT): $(top_srcdir)/internal/hash.h
+gc.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+gc.$(OBJEXT): $(top_srcdir)/internal/io.h
+gc.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+gc.$(OBJEXT): $(top_srcdir)/internal/object.h
+gc.$(OBJEXT): $(top_srcdir)/internal/proc.h
+gc.$(OBJEXT): $(top_srcdir)/internal/rational.h
+gc.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+gc.$(OBJEXT): $(top_srcdir)/internal/serial.h
+gc.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+gc.$(OBJEXT): $(top_srcdir)/internal/string.h
+gc.$(OBJEXT): $(top_srcdir)/internal/struct.h
+gc.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+gc.$(OBJEXT): $(top_srcdir)/internal/thread.h
+gc.$(OBJEXT): $(top_srcdir)/internal/variable.h
+gc.$(OBJEXT): $(top_srcdir)/internal/vm.h
+gc.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+gc.$(OBJEXT): {$(VPATH)}assert.h
+gc.$(OBJEXT): {$(VPATH)}atomic.h
+gc.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+gc.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+gc.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+gc.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+gc.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+gc.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+gc.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+gc.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+gc.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+gc.$(OBJEXT): {$(VPATH)}builtin.h
+gc.$(OBJEXT): {$(VPATH)}config.h
+gc.$(OBJEXT): {$(VPATH)}constant.h
+gc.$(OBJEXT): {$(VPATH)}debug.h
+gc.$(OBJEXT): {$(VPATH)}debug_counter.h
+gc.$(OBJEXT): {$(VPATH)}defines.h
+gc.$(OBJEXT): {$(VPATH)}encoding.h
+gc.$(OBJEXT): {$(VPATH)}eval_intern.h
+gc.$(OBJEXT): {$(VPATH)}gc.c
+gc.$(OBJEXT): {$(VPATH)}gc.h
+gc.$(OBJEXT): {$(VPATH)}gc.rbinc
+gc.$(OBJEXT): {$(VPATH)}id.h
+gc.$(OBJEXT): {$(VPATH)}id_table.h
+gc.$(OBJEXT): {$(VPATH)}intern.h
+gc.$(OBJEXT): {$(VPATH)}internal.h
+gc.$(OBJEXT): {$(VPATH)}internal/abi.h
+gc.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+gc.$(OBJEXT): {$(VPATH)}internal/assume.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+gc.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+gc.$(OBJEXT): {$(VPATH)}internal/cast.h
+gc.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+gc.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+gc.$(OBJEXT): {$(VPATH)}internal/config.h
+gc.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+gc.$(OBJEXT): {$(VPATH)}internal/core.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+gc.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+gc.$(OBJEXT): {$(VPATH)}internal/ctype.h
+gc.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+gc.$(OBJEXT): {$(VPATH)}internal/dosish.h
+gc.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+gc.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+gc.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+gc.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+gc.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+gc.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+gc.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+gc.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+gc.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+gc.$(OBJEXT): {$(VPATH)}internal/error.h
+gc.$(OBJEXT): {$(VPATH)}internal/eval.h
+gc.$(OBJEXT): {$(VPATH)}internal/event.h
+gc.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+gc.$(OBJEXT): {$(VPATH)}internal/gc.h
+gc.$(OBJEXT): {$(VPATH)}internal/glob.h
+gc.$(OBJEXT): {$(VPATH)}internal/globals.h
+gc.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+gc.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+gc.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+gc.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+gc.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+gc.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+gc.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+gc.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+gc.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+gc.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+gc.$(OBJEXT): {$(VPATH)}internal/iterator.h
+gc.$(OBJEXT): {$(VPATH)}internal/memory.h
+gc.$(OBJEXT): {$(VPATH)}internal/method.h
+gc.$(OBJEXT): {$(VPATH)}internal/module.h
+gc.$(OBJEXT): {$(VPATH)}internal/newobj.h
+gc.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+gc.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+gc.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+gc.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+gc.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+gc.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+gc.$(OBJEXT): {$(VPATH)}internal/symbol.h
+gc.$(OBJEXT): {$(VPATH)}internal/value.h
+gc.$(OBJEXT): {$(VPATH)}internal/value_type.h
+gc.$(OBJEXT): {$(VPATH)}internal/variable.h
+gc.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+gc.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+gc.$(OBJEXT): {$(VPATH)}io.h
+gc.$(OBJEXT): {$(VPATH)}iseq.h
+gc.$(OBJEXT): {$(VPATH)}method.h
+gc.$(OBJEXT): {$(VPATH)}missing.h
+gc.$(OBJEXT): {$(VPATH)}mjit.h
+gc.$(OBJEXT): {$(VPATH)}node.h
+gc.$(OBJEXT): {$(VPATH)}onigmo.h
+gc.$(OBJEXT): {$(VPATH)}oniguruma.h
+gc.$(OBJEXT): {$(VPATH)}probes.dmyh
+gc.$(OBJEXT): {$(VPATH)}probes.h
+gc.$(OBJEXT): {$(VPATH)}ractor.h
+gc.$(OBJEXT): {$(VPATH)}ractor_core.h
+gc.$(OBJEXT): {$(VPATH)}re.h
+gc.$(OBJEXT): {$(VPATH)}regenc.h
+gc.$(OBJEXT): {$(VPATH)}regex.h
+gc.$(OBJEXT): {$(VPATH)}regint.h
+gc.$(OBJEXT): {$(VPATH)}ruby_assert.h
+gc.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+gc.$(OBJEXT): {$(VPATH)}shape.h
+gc.$(OBJEXT): {$(VPATH)}st.h
+gc.$(OBJEXT): {$(VPATH)}subst.h
+gc.$(OBJEXT): {$(VPATH)}symbol.h
+gc.$(OBJEXT): {$(VPATH)}thread.h
+gc.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+gc.$(OBJEXT): {$(VPATH)}thread_native.h
+gc.$(OBJEXT): {$(VPATH)}transient_heap.h
+gc.$(OBJEXT): {$(VPATH)}util.h
+gc.$(OBJEXT): {$(VPATH)}vm_callinfo.h
+gc.$(OBJEXT): {$(VPATH)}vm_core.h
+gc.$(OBJEXT): {$(VPATH)}vm_debug.h
+gc.$(OBJEXT): {$(VPATH)}vm_opts.h
+gc.$(OBJEXT): {$(VPATH)}vm_sync.h
+goruby.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+goruby.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+goruby.$(OBJEXT): $(CCAN_DIR)/list/list.h
+goruby.$(OBJEXT): $(CCAN_DIR)/str/str.h
+goruby.$(OBJEXT): $(hdrdir)/ruby.h
+goruby.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+goruby.$(OBJEXT): $(top_srcdir)/internal/array.h
+goruby.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+goruby.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+goruby.$(OBJEXT): $(top_srcdir)/internal/gc.h
+goruby.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+goruby.$(OBJEXT): $(top_srcdir)/internal/serial.h
+goruby.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+goruby.$(OBJEXT): $(top_srcdir)/internal/variable.h
+goruby.$(OBJEXT): $(top_srcdir)/internal/vm.h
+goruby.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+goruby.$(OBJEXT): {$(VPATH)}assert.h
+goruby.$(OBJEXT): {$(VPATH)}atomic.h
+goruby.$(OBJEXT): {$(VPATH)}backward.h
+goruby.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+goruby.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+goruby.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+goruby.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+goruby.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+goruby.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+goruby.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+goruby.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+goruby.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+goruby.$(OBJEXT): {$(VPATH)}config.h
+goruby.$(OBJEXT): {$(VPATH)}constant.h
+goruby.$(OBJEXT): {$(VPATH)}defines.h
+goruby.$(OBJEXT): {$(VPATH)}golf_prelude.c
+goruby.$(OBJEXT): {$(VPATH)}goruby.c
+goruby.$(OBJEXT): {$(VPATH)}id.h
+goruby.$(OBJEXT): {$(VPATH)}id_table.h
+goruby.$(OBJEXT): {$(VPATH)}intern.h
+goruby.$(OBJEXT): {$(VPATH)}internal.h
+goruby.$(OBJEXT): {$(VPATH)}internal/abi.h
+goruby.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+goruby.$(OBJEXT): {$(VPATH)}internal/assume.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/nonstring.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+goruby.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+goruby.$(OBJEXT): {$(VPATH)}internal/cast.h
+goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+goruby.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+goruby.$(OBJEXT): {$(VPATH)}internal/config.h
+goruby.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+goruby.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+goruby.$(OBJEXT): {$(VPATH)}internal/ctype.h
+goruby.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+goruby.$(OBJEXT): {$(VPATH)}internal/dosish.h
+goruby.$(OBJEXT): {$(VPATH)}internal/error.h
+goruby.$(OBJEXT): {$(VPATH)}internal/eval.h
+goruby.$(OBJEXT): {$(VPATH)}internal/event.h
+goruby.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+goruby.$(OBJEXT): {$(VPATH)}internal/gc.h
+goruby.$(OBJEXT): {$(VPATH)}internal/glob.h
+goruby.$(OBJEXT): {$(VPATH)}internal/globals.h
+goruby.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+goruby.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+goruby.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+goruby.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+goruby.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+goruby.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+goruby.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+goruby.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+goruby.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+goruby.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+goruby.$(OBJEXT): {$(VPATH)}internal/iterator.h
+goruby.$(OBJEXT): {$(VPATH)}internal/memory.h
+goruby.$(OBJEXT): {$(VPATH)}internal/method.h
+goruby.$(OBJEXT): {$(VPATH)}internal/module.h
+goruby.$(OBJEXT): {$(VPATH)}internal/newobj.h
+goruby.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+goruby.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+goruby.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+goruby.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+goruby.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+goruby.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+goruby.$(OBJEXT): {$(VPATH)}internal/symbol.h
+goruby.$(OBJEXT): {$(VPATH)}internal/value.h
+goruby.$(OBJEXT): {$(VPATH)}internal/value_type.h
+goruby.$(OBJEXT): {$(VPATH)}internal/variable.h
+goruby.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+goruby.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+goruby.$(OBJEXT): {$(VPATH)}iseq.h
+goruby.$(OBJEXT): {$(VPATH)}main.c
+goruby.$(OBJEXT): {$(VPATH)}method.h
+goruby.$(OBJEXT): {$(VPATH)}missing.h
+goruby.$(OBJEXT): {$(VPATH)}node.h
+goruby.$(OBJEXT): {$(VPATH)}ruby_assert.h
+goruby.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+goruby.$(OBJEXT): {$(VPATH)}shape.h
+goruby.$(OBJEXT): {$(VPATH)}st.h
+goruby.$(OBJEXT): {$(VPATH)}subst.h
+goruby.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+goruby.$(OBJEXT): {$(VPATH)}thread_native.h
+goruby.$(OBJEXT): {$(VPATH)}vm_core.h
+goruby.$(OBJEXT): {$(VPATH)}vm_debug.h
+goruby.$(OBJEXT): {$(VPATH)}vm_opts.h
+hash.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+hash.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+hash.$(OBJEXT): $(CCAN_DIR)/list/list.h
+hash.$(OBJEXT): $(CCAN_DIR)/str/str.h
+hash.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+hash.$(OBJEXT): $(top_srcdir)/internal/array.h
+hash.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+hash.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+hash.$(OBJEXT): $(top_srcdir)/internal/bits.h
+hash.$(OBJEXT): $(top_srcdir)/internal/class.h
+hash.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+hash.$(OBJEXT): $(top_srcdir)/internal/cont.h
+hash.$(OBJEXT): $(top_srcdir)/internal/error.h
+hash.$(OBJEXT): $(top_srcdir)/internal/gc.h
+hash.$(OBJEXT): $(top_srcdir)/internal/hash.h
+hash.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+hash.$(OBJEXT): $(top_srcdir)/internal/object.h
+hash.$(OBJEXT): $(top_srcdir)/internal/proc.h
+hash.$(OBJEXT): $(top_srcdir)/internal/serial.h
+hash.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+hash.$(OBJEXT): $(top_srcdir)/internal/string.h
+hash.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+hash.$(OBJEXT): $(top_srcdir)/internal/thread.h
+hash.$(OBJEXT): $(top_srcdir)/internal/time.h
+hash.$(OBJEXT): $(top_srcdir)/internal/variable.h
+hash.$(OBJEXT): $(top_srcdir)/internal/vm.h
+hash.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+hash.$(OBJEXT): {$(VPATH)}assert.h
+hash.$(OBJEXT): {$(VPATH)}atomic.h
+hash.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+hash.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+hash.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+hash.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+hash.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+hash.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+hash.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+hash.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+hash.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+hash.$(OBJEXT): {$(VPATH)}config.h
+hash.$(OBJEXT): {$(VPATH)}constant.h
+hash.$(OBJEXT): {$(VPATH)}debug_counter.h
+hash.$(OBJEXT): {$(VPATH)}defines.h
+hash.$(OBJEXT): {$(VPATH)}encoding.h
+hash.$(OBJEXT): {$(VPATH)}hash.c
+hash.$(OBJEXT): {$(VPATH)}id.h
+hash.$(OBJEXT): {$(VPATH)}id_table.h
+hash.$(OBJEXT): {$(VPATH)}intern.h
+hash.$(OBJEXT): {$(VPATH)}internal.h
+hash.$(OBJEXT): {$(VPATH)}internal/abi.h
+hash.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+hash.$(OBJEXT): {$(VPATH)}internal/assume.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+hash.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+hash.$(OBJEXT): {$(VPATH)}internal/cast.h
+hash.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+hash.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+hash.$(OBJEXT): {$(VPATH)}internal/config.h
+hash.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+hash.$(OBJEXT): {$(VPATH)}internal/core.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+hash.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+hash.$(OBJEXT): {$(VPATH)}internal/ctype.h
+hash.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+hash.$(OBJEXT): {$(VPATH)}internal/dosish.h
+hash.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+hash.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+hash.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+hash.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+hash.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+hash.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+hash.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+hash.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+hash.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+hash.$(OBJEXT): {$(VPATH)}internal/error.h
+hash.$(OBJEXT): {$(VPATH)}internal/eval.h
+hash.$(OBJEXT): {$(VPATH)}internal/event.h
+hash.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+hash.$(OBJEXT): {$(VPATH)}internal/gc.h
+hash.$(OBJEXT): {$(VPATH)}internal/glob.h
+hash.$(OBJEXT): {$(VPATH)}internal/globals.h
+hash.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+hash.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+hash.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+hash.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+hash.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+hash.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+hash.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+hash.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+hash.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+hash.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+hash.$(OBJEXT): {$(VPATH)}internal/iterator.h
+hash.$(OBJEXT): {$(VPATH)}internal/memory.h
+hash.$(OBJEXT): {$(VPATH)}internal/method.h
+hash.$(OBJEXT): {$(VPATH)}internal/module.h
+hash.$(OBJEXT): {$(VPATH)}internal/newobj.h
+hash.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+hash.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+hash.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+hash.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+hash.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+hash.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+hash.$(OBJEXT): {$(VPATH)}internal/symbol.h
+hash.$(OBJEXT): {$(VPATH)}internal/value.h
+hash.$(OBJEXT): {$(VPATH)}internal/value_type.h
+hash.$(OBJEXT): {$(VPATH)}internal/variable.h
+hash.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+hash.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+hash.$(OBJEXT): {$(VPATH)}iseq.h
+hash.$(OBJEXT): {$(VPATH)}method.h
+hash.$(OBJEXT): {$(VPATH)}missing.h
+hash.$(OBJEXT): {$(VPATH)}node.h
+hash.$(OBJEXT): {$(VPATH)}onigmo.h
+hash.$(OBJEXT): {$(VPATH)}oniguruma.h
+hash.$(OBJEXT): {$(VPATH)}probes.dmyh
+hash.$(OBJEXT): {$(VPATH)}probes.h
+hash.$(OBJEXT): {$(VPATH)}ractor.h
+hash.$(OBJEXT): {$(VPATH)}ruby_assert.h
+hash.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+hash.$(OBJEXT): {$(VPATH)}shape.h
+hash.$(OBJEXT): {$(VPATH)}st.h
+hash.$(OBJEXT): {$(VPATH)}subst.h
+hash.$(OBJEXT): {$(VPATH)}symbol.h
+hash.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+hash.$(OBJEXT): {$(VPATH)}thread_native.h
+hash.$(OBJEXT): {$(VPATH)}transient_heap.h
+hash.$(OBJEXT): {$(VPATH)}util.h
+hash.$(OBJEXT): {$(VPATH)}vm_core.h
+hash.$(OBJEXT): {$(VPATH)}vm_debug.h
+hash.$(OBJEXT): {$(VPATH)}vm_opts.h
+hash.$(OBJEXT): {$(VPATH)}vm_sync.h
+inits.$(OBJEXT): $(hdrdir)/ruby.h
+inits.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+inits.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+inits.$(OBJEXT): $(top_srcdir)/internal/inits.h
+inits.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+inits.$(OBJEXT): {$(VPATH)}assert.h
+inits.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+inits.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+inits.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+inits.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+inits.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+inits.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+inits.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+inits.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+inits.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+inits.$(OBJEXT): {$(VPATH)}builtin.h
+inits.$(OBJEXT): {$(VPATH)}config.h
+inits.$(OBJEXT): {$(VPATH)}defines.h
+inits.$(OBJEXT): {$(VPATH)}inits.c
+inits.$(OBJEXT): {$(VPATH)}intern.h
+inits.$(OBJEXT): {$(VPATH)}internal/abi.h
+inits.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+inits.$(OBJEXT): {$(VPATH)}internal/assume.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+inits.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+inits.$(OBJEXT): {$(VPATH)}internal/cast.h
+inits.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+inits.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+inits.$(OBJEXT): {$(VPATH)}internal/config.h
+inits.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+inits.$(OBJEXT): {$(VPATH)}internal/core.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+inits.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+inits.$(OBJEXT): {$(VPATH)}internal/ctype.h
+inits.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+inits.$(OBJEXT): {$(VPATH)}internal/dosish.h
+inits.$(OBJEXT): {$(VPATH)}internal/error.h
+inits.$(OBJEXT): {$(VPATH)}internal/eval.h
+inits.$(OBJEXT): {$(VPATH)}internal/event.h
+inits.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+inits.$(OBJEXT): {$(VPATH)}internal/gc.h
+inits.$(OBJEXT): {$(VPATH)}internal/glob.h
+inits.$(OBJEXT): {$(VPATH)}internal/globals.h
+inits.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+inits.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+inits.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+inits.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+inits.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+inits.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+inits.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+inits.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+inits.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+inits.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+inits.$(OBJEXT): {$(VPATH)}internal/iterator.h
+inits.$(OBJEXT): {$(VPATH)}internal/memory.h
+inits.$(OBJEXT): {$(VPATH)}internal/method.h
+inits.$(OBJEXT): {$(VPATH)}internal/module.h
+inits.$(OBJEXT): {$(VPATH)}internal/newobj.h
+inits.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+inits.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+inits.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+inits.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+inits.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+inits.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+inits.$(OBJEXT): {$(VPATH)}internal/symbol.h
+inits.$(OBJEXT): {$(VPATH)}internal/value.h
+inits.$(OBJEXT): {$(VPATH)}internal/value_type.h
+inits.$(OBJEXT): {$(VPATH)}internal/variable.h
+inits.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+inits.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+inits.$(OBJEXT): {$(VPATH)}missing.h
+inits.$(OBJEXT): {$(VPATH)}prelude.rbinc
+inits.$(OBJEXT): {$(VPATH)}st.h
+inits.$(OBJEXT): {$(VPATH)}subst.h
+io.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+io.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+io.$(OBJEXT): $(CCAN_DIR)/list/list.h
+io.$(OBJEXT): $(CCAN_DIR)/str/str.h
+io.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+io.$(OBJEXT): $(top_srcdir)/internal/array.h
+io.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+io.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+io.$(OBJEXT): $(top_srcdir)/internal/bits.h
+io.$(OBJEXT): $(top_srcdir)/internal/class.h
+io.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+io.$(OBJEXT): $(top_srcdir)/internal/encoding.h
+io.$(OBJEXT): $(top_srcdir)/internal/error.h
+io.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+io.$(OBJEXT): $(top_srcdir)/internal/gc.h
+io.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+io.$(OBJEXT): $(top_srcdir)/internal/inits.h
+io.$(OBJEXT): $(top_srcdir)/internal/io.h
+io.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+io.$(OBJEXT): $(top_srcdir)/internal/object.h
+io.$(OBJEXT): $(top_srcdir)/internal/process.h
+io.$(OBJEXT): $(top_srcdir)/internal/serial.h
+io.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+io.$(OBJEXT): $(top_srcdir)/internal/string.h
+io.$(OBJEXT): $(top_srcdir)/internal/thread.h
+io.$(OBJEXT): $(top_srcdir)/internal/transcode.h
+io.$(OBJEXT): $(top_srcdir)/internal/variable.h
+io.$(OBJEXT): $(top_srcdir)/internal/vm.h
+io.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+io.$(OBJEXT): {$(VPATH)}assert.h
+io.$(OBJEXT): {$(VPATH)}atomic.h
+io.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+io.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+io.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+io.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+io.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+io.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+io.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+io.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+io.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+io.$(OBJEXT): {$(VPATH)}builtin.h
+io.$(OBJEXT): {$(VPATH)}config.h
+io.$(OBJEXT): {$(VPATH)}constant.h
+io.$(OBJEXT): {$(VPATH)}defines.h
+io.$(OBJEXT): {$(VPATH)}dln.h
+io.$(OBJEXT): {$(VPATH)}encindex.h
+io.$(OBJEXT): {$(VPATH)}encoding.h
+io.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
+io.$(OBJEXT): {$(VPATH)}id.h
+io.$(OBJEXT): {$(VPATH)}id_table.h
+io.$(OBJEXT): {$(VPATH)}intern.h
+io.$(OBJEXT): {$(VPATH)}internal.h
+io.$(OBJEXT): {$(VPATH)}internal/abi.h
+io.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+io.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+io.$(OBJEXT): {$(VPATH)}internal/assume.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+io.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+io.$(OBJEXT): {$(VPATH)}internal/cast.h
+io.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+io.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+io.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+io.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+io.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+io.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+io.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+io.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+io.$(OBJEXT): {$(VPATH)}internal/config.h
+io.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+io.$(OBJEXT): {$(VPATH)}internal/core.h
+io.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+io.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+io.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+io.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+io.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+io.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+io.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+io.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+io.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+io.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+io.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+io.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+io.$(OBJEXT): {$(VPATH)}internal/ctype.h
+io.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+io.$(OBJEXT): {$(VPATH)}internal/dosish.h
+io.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+io.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+io.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+io.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+io.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+io.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+io.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+io.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+io.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+io.$(OBJEXT): {$(VPATH)}internal/error.h
+io.$(OBJEXT): {$(VPATH)}internal/eval.h
+io.$(OBJEXT): {$(VPATH)}internal/event.h
+io.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+io.$(OBJEXT): {$(VPATH)}internal/gc.h
+io.$(OBJEXT): {$(VPATH)}internal/glob.h
+io.$(OBJEXT): {$(VPATH)}internal/globals.h
+io.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+io.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+io.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+io.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+io.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+io.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+io.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+io.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+io.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+io.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+io.$(OBJEXT): {$(VPATH)}internal/iterator.h
+io.$(OBJEXT): {$(VPATH)}internal/memory.h
+io.$(OBJEXT): {$(VPATH)}internal/method.h
+io.$(OBJEXT): {$(VPATH)}internal/module.h
+io.$(OBJEXT): {$(VPATH)}internal/newobj.h
+io.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+io.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+io.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+io.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+io.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+io.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+io.$(OBJEXT): {$(VPATH)}internal/symbol.h
+io.$(OBJEXT): {$(VPATH)}internal/value.h
+io.$(OBJEXT): {$(VPATH)}internal/value_type.h
+io.$(OBJEXT): {$(VPATH)}internal/variable.h
+io.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+io.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+io.$(OBJEXT): {$(VPATH)}io.c
+io.$(OBJEXT): {$(VPATH)}io.h
+io.$(OBJEXT): {$(VPATH)}io.rbinc
+io.$(OBJEXT): {$(VPATH)}io/buffer.h
+io.$(OBJEXT): {$(VPATH)}method.h
+io.$(OBJEXT): {$(VPATH)}missing.h
+io.$(OBJEXT): {$(VPATH)}node.h
+io.$(OBJEXT): {$(VPATH)}onigmo.h
+io.$(OBJEXT): {$(VPATH)}oniguruma.h
+io.$(OBJEXT): {$(VPATH)}ractor.h
+io.$(OBJEXT): {$(VPATH)}ruby_assert.h
+io.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+io.$(OBJEXT): {$(VPATH)}shape.h
+io.$(OBJEXT): {$(VPATH)}st.h
+io.$(OBJEXT): {$(VPATH)}subst.h
+io.$(OBJEXT): {$(VPATH)}thread.h
+io.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+io.$(OBJEXT): {$(VPATH)}thread_native.h
+io.$(OBJEXT): {$(VPATH)}util.h
+io.$(OBJEXT): {$(VPATH)}vm_core.h
+io.$(OBJEXT): {$(VPATH)}vm_opts.h
+io_buffer.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/array.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/bits.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/error.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/serial.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/string.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/thread.h
+io_buffer.$(OBJEXT): $(top_srcdir)/internal/vm.h
+io_buffer.$(OBJEXT): {$(VPATH)}assert.h
+io_buffer.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+io_buffer.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+io_buffer.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+io_buffer.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+io_buffer.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+io_buffer.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+io_buffer.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+io_buffer.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+io_buffer.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+io_buffer.$(OBJEXT): {$(VPATH)}config.h
+io_buffer.$(OBJEXT): {$(VPATH)}defines.h
+io_buffer.$(OBJEXT): {$(VPATH)}encoding.h
+io_buffer.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
+io_buffer.$(OBJEXT): {$(VPATH)}intern.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/abi.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/assume.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/cast.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/config.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/ctype.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/dosish.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/error.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/eval.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/event.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/gc.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/glob.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/globals.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/iterator.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/memory.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/method.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/module.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/newobj.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/symbol.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/value.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/value_type.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/variable.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+io_buffer.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+io_buffer.$(OBJEXT): {$(VPATH)}io.h
+io_buffer.$(OBJEXT): {$(VPATH)}io/buffer.h
+io_buffer.$(OBJEXT): {$(VPATH)}io_buffer.c
+io_buffer.$(OBJEXT): {$(VPATH)}missing.h
+io_buffer.$(OBJEXT): {$(VPATH)}onigmo.h
+io_buffer.$(OBJEXT): {$(VPATH)}oniguruma.h
+io_buffer.$(OBJEXT): {$(VPATH)}st.h
+io_buffer.$(OBJEXT): {$(VPATH)}subst.h
+iseq.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+iseq.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+iseq.$(OBJEXT): $(CCAN_DIR)/list/list.h
+iseq.$(OBJEXT): $(CCAN_DIR)/str/str.h
+iseq.$(OBJEXT): $(hdrdir)/ruby.h
+iseq.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/array.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/bits.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/class.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/compile.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/error.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/file.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/gc.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/hash.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/parse.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/serial.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/string.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/thread.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/variable.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/vm.h
+iseq.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+iseq.$(OBJEXT): {$(VPATH)}assert.h
+iseq.$(OBJEXT): {$(VPATH)}atomic.h
+iseq.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+iseq.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+iseq.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+iseq.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+iseq.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+iseq.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+iseq.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+iseq.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+iseq.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+iseq.$(OBJEXT): {$(VPATH)}builtin.h
+iseq.$(OBJEXT): {$(VPATH)}config.h
+iseq.$(OBJEXT): {$(VPATH)}constant.h
+iseq.$(OBJEXT): {$(VPATH)}debug_counter.h
+iseq.$(OBJEXT): {$(VPATH)}defines.h
+iseq.$(OBJEXT): {$(VPATH)}encoding.h
+iseq.$(OBJEXT): {$(VPATH)}eval_intern.h
+iseq.$(OBJEXT): {$(VPATH)}gc.h
+iseq.$(OBJEXT): {$(VPATH)}id.h
+iseq.$(OBJEXT): {$(VPATH)}id_table.h
+iseq.$(OBJEXT): {$(VPATH)}insns.def
+iseq.$(OBJEXT): {$(VPATH)}insns.inc
+iseq.$(OBJEXT): {$(VPATH)}insns_info.inc
+iseq.$(OBJEXT): {$(VPATH)}intern.h
+iseq.$(OBJEXT): {$(VPATH)}internal.h
+iseq.$(OBJEXT): {$(VPATH)}internal/abi.h
+iseq.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+iseq.$(OBJEXT): {$(VPATH)}internal/assume.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+iseq.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+iseq.$(OBJEXT): {$(VPATH)}internal/cast.h
+iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+iseq.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+iseq.$(OBJEXT): {$(VPATH)}internal/config.h
+iseq.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+iseq.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+iseq.$(OBJEXT): {$(VPATH)}internal/ctype.h
+iseq.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+iseq.$(OBJEXT): {$(VPATH)}internal/dosish.h
+iseq.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+iseq.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+iseq.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+iseq.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+iseq.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+iseq.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+iseq.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+iseq.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+iseq.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+iseq.$(OBJEXT): {$(VPATH)}internal/error.h
+iseq.$(OBJEXT): {$(VPATH)}internal/eval.h
+iseq.$(OBJEXT): {$(VPATH)}internal/event.h
+iseq.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+iseq.$(OBJEXT): {$(VPATH)}internal/gc.h
+iseq.$(OBJEXT): {$(VPATH)}internal/glob.h
+iseq.$(OBJEXT): {$(VPATH)}internal/globals.h
+iseq.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+iseq.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+iseq.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+iseq.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+iseq.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+iseq.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+iseq.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+iseq.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+iseq.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+iseq.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+iseq.$(OBJEXT): {$(VPATH)}internal/iterator.h
+iseq.$(OBJEXT): {$(VPATH)}internal/memory.h
+iseq.$(OBJEXT): {$(VPATH)}internal/method.h
+iseq.$(OBJEXT): {$(VPATH)}internal/module.h
+iseq.$(OBJEXT): {$(VPATH)}internal/newobj.h
+iseq.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+iseq.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+iseq.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+iseq.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+iseq.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+iseq.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+iseq.$(OBJEXT): {$(VPATH)}internal/symbol.h
+iseq.$(OBJEXT): {$(VPATH)}internal/value.h
+iseq.$(OBJEXT): {$(VPATH)}internal/value_type.h
+iseq.$(OBJEXT): {$(VPATH)}internal/variable.h
+iseq.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+iseq.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+iseq.$(OBJEXT): {$(VPATH)}iseq.c
+iseq.$(OBJEXT): {$(VPATH)}iseq.h
+iseq.$(OBJEXT): {$(VPATH)}method.h
+iseq.$(OBJEXT): {$(VPATH)}missing.h
+iseq.$(OBJEXT): {$(VPATH)}mjit.h
+iseq.$(OBJEXT): {$(VPATH)}node.h
+iseq.$(OBJEXT): {$(VPATH)}node_name.inc
+iseq.$(OBJEXT): {$(VPATH)}onigmo.h
+iseq.$(OBJEXT): {$(VPATH)}oniguruma.h
+iseq.$(OBJEXT): {$(VPATH)}ractor.h
+iseq.$(OBJEXT): {$(VPATH)}ruby_assert.h
+iseq.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+iseq.$(OBJEXT): {$(VPATH)}shape.h
+iseq.$(OBJEXT): {$(VPATH)}st.h
+iseq.$(OBJEXT): {$(VPATH)}subst.h
+iseq.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+iseq.$(OBJEXT): {$(VPATH)}thread_native.h
+iseq.$(OBJEXT): {$(VPATH)}util.h
+iseq.$(OBJEXT): {$(VPATH)}vm_callinfo.h
+iseq.$(OBJEXT): {$(VPATH)}vm_core.h
+iseq.$(OBJEXT): {$(VPATH)}vm_opts.h
+iseq.$(OBJEXT): {$(VPATH)}yjit.h
+load.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+load.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+load.$(OBJEXT): $(CCAN_DIR)/list/list.h
+load.$(OBJEXT): $(CCAN_DIR)/str/str.h
+load.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+load.$(OBJEXT): $(top_srcdir)/internal/array.h
+load.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+load.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+load.$(OBJEXT): $(top_srcdir)/internal/dir.h
+load.$(OBJEXT): $(top_srcdir)/internal/error.h
+load.$(OBJEXT): $(top_srcdir)/internal/file.h
+load.$(OBJEXT): $(top_srcdir)/internal/gc.h
+load.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+load.$(OBJEXT): $(top_srcdir)/internal/load.h
+load.$(OBJEXT): $(top_srcdir)/internal/parse.h
+load.$(OBJEXT): $(top_srcdir)/internal/serial.h
+load.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+load.$(OBJEXT): $(top_srcdir)/internal/string.h
+load.$(OBJEXT): $(top_srcdir)/internal/thread.h
+load.$(OBJEXT): $(top_srcdir)/internal/variable.h
+load.$(OBJEXT): $(top_srcdir)/internal/vm.h
+load.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+load.$(OBJEXT): {$(VPATH)}assert.h
+load.$(OBJEXT): {$(VPATH)}atomic.h
+load.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+load.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+load.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+load.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+load.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+load.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+load.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+load.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+load.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+load.$(OBJEXT): {$(VPATH)}config.h
+load.$(OBJEXT): {$(VPATH)}constant.h
+load.$(OBJEXT): {$(VPATH)}darray.h
+load.$(OBJEXT): {$(VPATH)}defines.h
+load.$(OBJEXT): {$(VPATH)}dln.h
+load.$(OBJEXT): {$(VPATH)}encoding.h
+load.$(OBJEXT): {$(VPATH)}eval_intern.h
+load.$(OBJEXT): {$(VPATH)}id.h
+load.$(OBJEXT): {$(VPATH)}id_table.h
+load.$(OBJEXT): {$(VPATH)}intern.h
+load.$(OBJEXT): {$(VPATH)}internal.h
+load.$(OBJEXT): {$(VPATH)}internal/abi.h
+load.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+load.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+load.$(OBJEXT): {$(VPATH)}internal/assume.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+load.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+load.$(OBJEXT): {$(VPATH)}internal/cast.h
+load.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+load.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+load.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+load.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+load.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+load.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+load.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+load.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+load.$(OBJEXT): {$(VPATH)}internal/config.h
+load.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+load.$(OBJEXT): {$(VPATH)}internal/core.h
+load.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+load.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+load.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+load.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+load.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+load.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+load.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+load.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+load.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+load.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+load.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+load.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+load.$(OBJEXT): {$(VPATH)}internal/ctype.h
+load.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+load.$(OBJEXT): {$(VPATH)}internal/dosish.h
+load.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+load.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+load.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+load.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+load.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+load.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+load.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+load.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+load.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+load.$(OBJEXT): {$(VPATH)}internal/error.h
+load.$(OBJEXT): {$(VPATH)}internal/eval.h
+load.$(OBJEXT): {$(VPATH)}internal/event.h
+load.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+load.$(OBJEXT): {$(VPATH)}internal/gc.h
+load.$(OBJEXT): {$(VPATH)}internal/glob.h
+load.$(OBJEXT): {$(VPATH)}internal/globals.h
+load.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+load.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+load.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+load.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+load.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+load.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+load.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+load.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+load.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+load.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+load.$(OBJEXT): {$(VPATH)}internal/iterator.h
+load.$(OBJEXT): {$(VPATH)}internal/memory.h
+load.$(OBJEXT): {$(VPATH)}internal/method.h
+load.$(OBJEXT): {$(VPATH)}internal/module.h
+load.$(OBJEXT): {$(VPATH)}internal/newobj.h
+load.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+load.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+load.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+load.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+load.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+load.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+load.$(OBJEXT): {$(VPATH)}internal/symbol.h
+load.$(OBJEXT): {$(VPATH)}internal/value.h
+load.$(OBJEXT): {$(VPATH)}internal/value_type.h
+load.$(OBJEXT): {$(VPATH)}internal/variable.h
+load.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+load.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+load.$(OBJEXT): {$(VPATH)}iseq.h
+load.$(OBJEXT): {$(VPATH)}load.c
+load.$(OBJEXT): {$(VPATH)}method.h
+load.$(OBJEXT): {$(VPATH)}missing.h
+load.$(OBJEXT): {$(VPATH)}node.h
+load.$(OBJEXT): {$(VPATH)}onigmo.h
+load.$(OBJEXT): {$(VPATH)}oniguruma.h
+load.$(OBJEXT): {$(VPATH)}probes.dmyh
+load.$(OBJEXT): {$(VPATH)}probes.h
+load.$(OBJEXT): {$(VPATH)}ruby_assert.h
+load.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+load.$(OBJEXT): {$(VPATH)}shape.h
+load.$(OBJEXT): {$(VPATH)}st.h
+load.$(OBJEXT): {$(VPATH)}subst.h
+load.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+load.$(OBJEXT): {$(VPATH)}thread_native.h
+load.$(OBJEXT): {$(VPATH)}util.h
+load.$(OBJEXT): {$(VPATH)}vm_core.h
+load.$(OBJEXT): {$(VPATH)}vm_opts.h
+loadpath.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+loadpath.$(OBJEXT): $(hdrdir)/ruby/version.h
+loadpath.$(OBJEXT): $(top_srcdir)/version.h
+loadpath.$(OBJEXT): {$(VPATH)}assert.h
+loadpath.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+loadpath.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+loadpath.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+loadpath.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+loadpath.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+loadpath.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+loadpath.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+loadpath.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+loadpath.$(OBJEXT): {$(VPATH)}config.h
+loadpath.$(OBJEXT): {$(VPATH)}defines.h
+loadpath.$(OBJEXT): {$(VPATH)}intern.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/abi.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/assume.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/cast.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/config.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/ctype.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/dosish.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/error.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/eval.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/event.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/gc.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/glob.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/globals.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/iterator.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/memory.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/method.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/module.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/newobj.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/symbol.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/value.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/value_type.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/variable.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+loadpath.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+loadpath.$(OBJEXT): {$(VPATH)}loadpath.c
+loadpath.$(OBJEXT): {$(VPATH)}missing.h
+loadpath.$(OBJEXT): {$(VPATH)}st.h
+loadpath.$(OBJEXT): {$(VPATH)}subst.h
+loadpath.$(OBJEXT): {$(VPATH)}verconf.h
+localeinit.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+localeinit.$(OBJEXT): {$(VPATH)}assert.h
+localeinit.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+localeinit.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+localeinit.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+localeinit.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+localeinit.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+localeinit.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+localeinit.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+localeinit.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+localeinit.$(OBJEXT): {$(VPATH)}config.h
+localeinit.$(OBJEXT): {$(VPATH)}defines.h
+localeinit.$(OBJEXT): {$(VPATH)}encindex.h
+localeinit.$(OBJEXT): {$(VPATH)}encoding.h
+localeinit.$(OBJEXT): {$(VPATH)}intern.h
+localeinit.$(OBJEXT): {$(VPATH)}internal.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/abi.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/assume.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/cast.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/config.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/ctype.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/dosish.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/error.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/eval.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/event.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/gc.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/glob.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/globals.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/iterator.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/memory.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/method.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/module.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/newobj.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/symbol.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/value.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/value_type.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/variable.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+localeinit.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+localeinit.$(OBJEXT): {$(VPATH)}localeinit.c
+localeinit.$(OBJEXT): {$(VPATH)}missing.h
+localeinit.$(OBJEXT): {$(VPATH)}onigmo.h
+localeinit.$(OBJEXT): {$(VPATH)}oniguruma.h
+localeinit.$(OBJEXT): {$(VPATH)}st.h
+localeinit.$(OBJEXT): {$(VPATH)}subst.h
+main.$(OBJEXT): $(hdrdir)/ruby.h
+main.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+main.$(OBJEXT): {$(VPATH)}assert.h
+main.$(OBJEXT): {$(VPATH)}backward.h
+main.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+main.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+main.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+main.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+main.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+main.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+main.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+main.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+main.$(OBJEXT): {$(VPATH)}config.h
+main.$(OBJEXT): {$(VPATH)}defines.h
+main.$(OBJEXT): {$(VPATH)}intern.h
+main.$(OBJEXT): {$(VPATH)}internal/abi.h
+main.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+main.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+main.$(OBJEXT): {$(VPATH)}internal/assume.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+main.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+main.$(OBJEXT): {$(VPATH)}internal/cast.h
+main.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+main.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+main.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+main.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+main.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+main.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+main.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+main.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+main.$(OBJEXT): {$(VPATH)}internal/config.h
+main.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+main.$(OBJEXT): {$(VPATH)}internal/core.h
+main.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+main.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+main.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+main.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+main.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+main.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+main.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+main.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+main.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+main.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+main.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+main.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+main.$(OBJEXT): {$(VPATH)}internal/ctype.h
+main.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+main.$(OBJEXT): {$(VPATH)}internal/dosish.h
+main.$(OBJEXT): {$(VPATH)}internal/error.h
+main.$(OBJEXT): {$(VPATH)}internal/eval.h
+main.$(OBJEXT): {$(VPATH)}internal/event.h
+main.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+main.$(OBJEXT): {$(VPATH)}internal/gc.h
+main.$(OBJEXT): {$(VPATH)}internal/glob.h
+main.$(OBJEXT): {$(VPATH)}internal/globals.h
+main.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+main.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+main.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+main.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+main.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+main.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+main.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+main.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+main.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+main.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+main.$(OBJEXT): {$(VPATH)}internal/iterator.h
+main.$(OBJEXT): {$(VPATH)}internal/memory.h
+main.$(OBJEXT): {$(VPATH)}internal/method.h
+main.$(OBJEXT): {$(VPATH)}internal/module.h
+main.$(OBJEXT): {$(VPATH)}internal/newobj.h
+main.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+main.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+main.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+main.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+main.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+main.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+main.$(OBJEXT): {$(VPATH)}internal/symbol.h
+main.$(OBJEXT): {$(VPATH)}internal/value.h
+main.$(OBJEXT): {$(VPATH)}internal/value_type.h
+main.$(OBJEXT): {$(VPATH)}internal/variable.h
+main.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+main.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+main.$(OBJEXT): {$(VPATH)}main.c
+main.$(OBJEXT): {$(VPATH)}missing.h
+main.$(OBJEXT): {$(VPATH)}st.h
+main.$(OBJEXT): {$(VPATH)}subst.h
+main.$(OBJEXT): {$(VPATH)}vm_debug.h
+marshal.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+marshal.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+marshal.$(OBJEXT): $(CCAN_DIR)/list/list.h
+marshal.$(OBJEXT): $(CCAN_DIR)/str/str.h
+marshal.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/array.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/bits.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/class.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/encoding.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/error.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/gc.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/hash.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/object.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/serial.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/string.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/struct.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/util.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/variable.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/vm.h
+marshal.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+marshal.$(OBJEXT): {$(VPATH)}assert.h
+marshal.$(OBJEXT): {$(VPATH)}atomic.h
+marshal.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+marshal.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+marshal.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+marshal.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+marshal.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+marshal.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+marshal.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+marshal.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+marshal.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+marshal.$(OBJEXT): {$(VPATH)}builtin.h
+marshal.$(OBJEXT): {$(VPATH)}config.h
+marshal.$(OBJEXT): {$(VPATH)}constant.h
+marshal.$(OBJEXT): {$(VPATH)}defines.h
+marshal.$(OBJEXT): {$(VPATH)}encindex.h
+marshal.$(OBJEXT): {$(VPATH)}encoding.h
+marshal.$(OBJEXT): {$(VPATH)}id.h
+marshal.$(OBJEXT): {$(VPATH)}id_table.h
+marshal.$(OBJEXT): {$(VPATH)}intern.h
+marshal.$(OBJEXT): {$(VPATH)}internal.h
+marshal.$(OBJEXT): {$(VPATH)}internal/abi.h
+marshal.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+marshal.$(OBJEXT): {$(VPATH)}internal/assume.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/nonstring.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+marshal.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+marshal.$(OBJEXT): {$(VPATH)}internal/cast.h
+marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+marshal.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+marshal.$(OBJEXT): {$(VPATH)}internal/config.h
+marshal.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+marshal.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+marshal.$(OBJEXT): {$(VPATH)}internal/ctype.h
+marshal.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+marshal.$(OBJEXT): {$(VPATH)}internal/dosish.h
+marshal.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+marshal.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+marshal.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+marshal.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+marshal.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+marshal.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+marshal.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+marshal.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+marshal.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+marshal.$(OBJEXT): {$(VPATH)}internal/error.h
+marshal.$(OBJEXT): {$(VPATH)}internal/eval.h
+marshal.$(OBJEXT): {$(VPATH)}internal/event.h
+marshal.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+marshal.$(OBJEXT): {$(VPATH)}internal/gc.h
+marshal.$(OBJEXT): {$(VPATH)}internal/glob.h
+marshal.$(OBJEXT): {$(VPATH)}internal/globals.h
+marshal.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+marshal.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+marshal.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+marshal.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+marshal.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+marshal.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+marshal.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+marshal.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+marshal.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+marshal.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+marshal.$(OBJEXT): {$(VPATH)}internal/iterator.h
+marshal.$(OBJEXT): {$(VPATH)}internal/memory.h
+marshal.$(OBJEXT): {$(VPATH)}internal/method.h
+marshal.$(OBJEXT): {$(VPATH)}internal/module.h
+marshal.$(OBJEXT): {$(VPATH)}internal/newobj.h
+marshal.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+marshal.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+marshal.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+marshal.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+marshal.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+marshal.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+marshal.$(OBJEXT): {$(VPATH)}internal/symbol.h
+marshal.$(OBJEXT): {$(VPATH)}internal/value.h
+marshal.$(OBJEXT): {$(VPATH)}internal/value_type.h
+marshal.$(OBJEXT): {$(VPATH)}internal/variable.h
+marshal.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+marshal.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+marshal.$(OBJEXT): {$(VPATH)}io.h
+marshal.$(OBJEXT): {$(VPATH)}marshal.c
+marshal.$(OBJEXT): {$(VPATH)}marshal.rbinc
+marshal.$(OBJEXT): {$(VPATH)}method.h
+marshal.$(OBJEXT): {$(VPATH)}missing.h
+marshal.$(OBJEXT): {$(VPATH)}node.h
+marshal.$(OBJEXT): {$(VPATH)}onigmo.h
+marshal.$(OBJEXT): {$(VPATH)}oniguruma.h
+marshal.$(OBJEXT): {$(VPATH)}ruby_assert.h
+marshal.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+marshal.$(OBJEXT): {$(VPATH)}shape.h
+marshal.$(OBJEXT): {$(VPATH)}st.h
+marshal.$(OBJEXT): {$(VPATH)}subst.h
+marshal.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+marshal.$(OBJEXT): {$(VPATH)}thread_native.h
+marshal.$(OBJEXT): {$(VPATH)}util.h
+marshal.$(OBJEXT): {$(VPATH)}vm_core.h
+marshal.$(OBJEXT): {$(VPATH)}vm_opts.h
+math.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+math.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+math.$(OBJEXT): $(top_srcdir)/internal/class.h
+math.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+math.$(OBJEXT): $(top_srcdir)/internal/complex.h
+math.$(OBJEXT): $(top_srcdir)/internal/gc.h
+math.$(OBJEXT): $(top_srcdir)/internal/math.h
+math.$(OBJEXT): $(top_srcdir)/internal/object.h
+math.$(OBJEXT): $(top_srcdir)/internal/serial.h
+math.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+math.$(OBJEXT): $(top_srcdir)/internal/variable.h
+math.$(OBJEXT): $(top_srcdir)/internal/vm.h
+math.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+math.$(OBJEXT): {$(VPATH)}assert.h
+math.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+math.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+math.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+math.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+math.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+math.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+math.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+math.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+math.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+math.$(OBJEXT): {$(VPATH)}config.h
+math.$(OBJEXT): {$(VPATH)}constant.h
+math.$(OBJEXT): {$(VPATH)}defines.h
+math.$(OBJEXT): {$(VPATH)}id_table.h
+math.$(OBJEXT): {$(VPATH)}intern.h
+math.$(OBJEXT): {$(VPATH)}internal.h
+math.$(OBJEXT): {$(VPATH)}internal/abi.h
+math.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+math.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+math.$(OBJEXT): {$(VPATH)}internal/assume.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+math.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+math.$(OBJEXT): {$(VPATH)}internal/cast.h
+math.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+math.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+math.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+math.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+math.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+math.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+math.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+math.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+math.$(OBJEXT): {$(VPATH)}internal/config.h
+math.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+math.$(OBJEXT): {$(VPATH)}internal/core.h
+math.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+math.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+math.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+math.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+math.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+math.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+math.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+math.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+math.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+math.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+math.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+math.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+math.$(OBJEXT): {$(VPATH)}internal/ctype.h
+math.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+math.$(OBJEXT): {$(VPATH)}internal/dosish.h
+math.$(OBJEXT): {$(VPATH)}internal/error.h
+math.$(OBJEXT): {$(VPATH)}internal/eval.h
+math.$(OBJEXT): {$(VPATH)}internal/event.h
+math.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+math.$(OBJEXT): {$(VPATH)}internal/gc.h
+math.$(OBJEXT): {$(VPATH)}internal/glob.h
+math.$(OBJEXT): {$(VPATH)}internal/globals.h
+math.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+math.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+math.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+math.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+math.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+math.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+math.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+math.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+math.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+math.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+math.$(OBJEXT): {$(VPATH)}internal/iterator.h
+math.$(OBJEXT): {$(VPATH)}internal/memory.h
+math.$(OBJEXT): {$(VPATH)}internal/method.h
+math.$(OBJEXT): {$(VPATH)}internal/module.h
+math.$(OBJEXT): {$(VPATH)}internal/newobj.h
+math.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+math.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+math.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+math.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+math.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+math.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+math.$(OBJEXT): {$(VPATH)}internal/symbol.h
+math.$(OBJEXT): {$(VPATH)}internal/value.h
+math.$(OBJEXT): {$(VPATH)}internal/value_type.h
+math.$(OBJEXT): {$(VPATH)}internal/variable.h
+math.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+math.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+math.$(OBJEXT): {$(VPATH)}math.c
+math.$(OBJEXT): {$(VPATH)}missing.h
+math.$(OBJEXT): {$(VPATH)}shape.h
+math.$(OBJEXT): {$(VPATH)}st.h
+math.$(OBJEXT): {$(VPATH)}subst.h
+memory_view.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+memory_view.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+memory_view.$(OBJEXT): $(top_srcdir)/internal/gc.h
+memory_view.$(OBJEXT): $(top_srcdir)/internal/hash.h
+memory_view.$(OBJEXT): $(top_srcdir)/internal/variable.h
+memory_view.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+memory_view.$(OBJEXT): {$(VPATH)}assert.h
+memory_view.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+memory_view.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+memory_view.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+memory_view.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+memory_view.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+memory_view.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+memory_view.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+memory_view.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+memory_view.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+memory_view.$(OBJEXT): {$(VPATH)}config.h
+memory_view.$(OBJEXT): {$(VPATH)}constant.h
+memory_view.$(OBJEXT): {$(VPATH)}debug_counter.h
+memory_view.$(OBJEXT): {$(VPATH)}defines.h
+memory_view.$(OBJEXT): {$(VPATH)}id_table.h
+memory_view.$(OBJEXT): {$(VPATH)}intern.h
+memory_view.$(OBJEXT): {$(VPATH)}internal.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/abi.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/assume.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/cast.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/config.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/ctype.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/dosish.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/error.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/eval.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/event.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/gc.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/glob.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/globals.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/iterator.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/memory.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/method.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/module.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/newobj.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/symbol.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/value.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/value_type.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/variable.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+memory_view.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+memory_view.$(OBJEXT): {$(VPATH)}memory_view.c
+memory_view.$(OBJEXT): {$(VPATH)}memory_view.h
+memory_view.$(OBJEXT): {$(VPATH)}missing.h
+memory_view.$(OBJEXT): {$(VPATH)}shape.h
+memory_view.$(OBJEXT): {$(VPATH)}st.h
+memory_view.$(OBJEXT): {$(VPATH)}subst.h
+memory_view.$(OBJEXT): {$(VPATH)}util.h
+memory_view.$(OBJEXT): {$(VPATH)}vm_debug.h
+memory_view.$(OBJEXT): {$(VPATH)}vm_sync.h
+miniinit.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+miniinit.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+miniinit.$(OBJEXT): $(CCAN_DIR)/list/list.h
+miniinit.$(OBJEXT): $(CCAN_DIR)/str/str.h
+miniinit.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+miniinit.$(OBJEXT): $(srcdir)/mjit_c.rb
+miniinit.$(OBJEXT): $(top_srcdir)/internal/array.h
+miniinit.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+miniinit.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+miniinit.$(OBJEXT): $(top_srcdir)/internal/gc.h
+miniinit.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+miniinit.$(OBJEXT): $(top_srcdir)/internal/serial.h
+miniinit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+miniinit.$(OBJEXT): $(top_srcdir)/internal/variable.h
+miniinit.$(OBJEXT): $(top_srcdir)/internal/vm.h
+miniinit.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+miniinit.$(OBJEXT): {$(VPATH)}array.rb
+miniinit.$(OBJEXT): {$(VPATH)}assert.h
+miniinit.$(OBJEXT): {$(VPATH)}ast.rb
+miniinit.$(OBJEXT): {$(VPATH)}atomic.h
+miniinit.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+miniinit.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+miniinit.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+miniinit.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+miniinit.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+miniinit.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+miniinit.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+miniinit.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+miniinit.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+miniinit.$(OBJEXT): {$(VPATH)}builtin.h
+miniinit.$(OBJEXT): {$(VPATH)}config.h
+miniinit.$(OBJEXT): {$(VPATH)}constant.h
+miniinit.$(OBJEXT): {$(VPATH)}defines.h
+miniinit.$(OBJEXT): {$(VPATH)}dir.rb
+miniinit.$(OBJEXT): {$(VPATH)}encoding.h
+miniinit.$(OBJEXT): {$(VPATH)}gc.rb
+miniinit.$(OBJEXT): {$(VPATH)}gem_prelude.rb
+miniinit.$(OBJEXT): {$(VPATH)}id.h
+miniinit.$(OBJEXT): {$(VPATH)}id_table.h
+miniinit.$(OBJEXT): {$(VPATH)}intern.h
+miniinit.$(OBJEXT): {$(VPATH)}internal.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/abi.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/assume.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/nonstring.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/cast.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/config.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/ctype.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/dosish.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/error.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/eval.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/event.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/gc.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/glob.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/globals.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/iterator.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/memory.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/method.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/module.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/newobj.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/symbol.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/value.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/value_type.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/variable.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+miniinit.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+miniinit.$(OBJEXT): {$(VPATH)}io.rb
+miniinit.$(OBJEXT): {$(VPATH)}iseq.h
+miniinit.$(OBJEXT): {$(VPATH)}kernel.rb
+miniinit.$(OBJEXT): {$(VPATH)}marshal.rb
+miniinit.$(OBJEXT): {$(VPATH)}method.h
+miniinit.$(OBJEXT): {$(VPATH)}mini_builtin.c
+miniinit.$(OBJEXT): {$(VPATH)}miniinit.c
+miniinit.$(OBJEXT): {$(VPATH)}miniprelude.c
+miniinit.$(OBJEXT): {$(VPATH)}missing.h
+miniinit.$(OBJEXT): {$(VPATH)}mjit.rb
+miniinit.$(OBJEXT): {$(VPATH)}mjit_c.rb
+miniinit.$(OBJEXT): {$(VPATH)}nilclass.rb
+miniinit.$(OBJEXT): {$(VPATH)}node.h
+miniinit.$(OBJEXT): {$(VPATH)}numeric.rb
+miniinit.$(OBJEXT): {$(VPATH)}onigmo.h
+miniinit.$(OBJEXT): {$(VPATH)}oniguruma.h
+miniinit.$(OBJEXT): {$(VPATH)}pack.rb
+miniinit.$(OBJEXT): {$(VPATH)}prelude.rb
+miniinit.$(OBJEXT): {$(VPATH)}ractor.rb
+miniinit.$(OBJEXT): {$(VPATH)}ruby_assert.h
+miniinit.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+miniinit.$(OBJEXT): {$(VPATH)}shape.h
+miniinit.$(OBJEXT): {$(VPATH)}st.h
+miniinit.$(OBJEXT): {$(VPATH)}subst.h
+miniinit.$(OBJEXT): {$(VPATH)}symbol.rb
+miniinit.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+miniinit.$(OBJEXT): {$(VPATH)}thread_native.h
+miniinit.$(OBJEXT): {$(VPATH)}thread_sync.rb
+miniinit.$(OBJEXT): {$(VPATH)}timev.rb
+miniinit.$(OBJEXT): {$(VPATH)}trace_point.rb
+miniinit.$(OBJEXT): {$(VPATH)}vm_core.h
+miniinit.$(OBJEXT): {$(VPATH)}vm_opts.h
+miniinit.$(OBJEXT): {$(VPATH)}warning.rb
+miniinit.$(OBJEXT): {$(VPATH)}yjit.rb
+mjit.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+mjit.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+mjit.$(OBJEXT): $(CCAN_DIR)/list/list.h
+mjit.$(OBJEXT): $(CCAN_DIR)/str/str.h
+mjit.$(OBJEXT): $(hdrdir)/ruby.h
+mjit.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+mjit.$(OBJEXT): $(hdrdir)/ruby/version.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/array.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/class.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/cmdlineopt.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/compile.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/cont.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/file.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/gc.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/hash.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/process.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/serial.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/variable.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/vm.h
+mjit.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+mjit.$(OBJEXT): {$(VPATH)}assert.h
+mjit.$(OBJEXT): {$(VPATH)}atomic.h
+mjit.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+mjit.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+mjit.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+mjit.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+mjit.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+mjit.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+mjit.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+mjit.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+mjit.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+mjit.$(OBJEXT): {$(VPATH)}builtin.h
+mjit.$(OBJEXT): {$(VPATH)}config.h
+mjit.$(OBJEXT): {$(VPATH)}constant.h
+mjit.$(OBJEXT): {$(VPATH)}debug.h
+mjit.$(OBJEXT): {$(VPATH)}debug_counter.h
+mjit.$(OBJEXT): {$(VPATH)}defines.h
+mjit.$(OBJEXT): {$(VPATH)}dln.h
+mjit.$(OBJEXT): {$(VPATH)}encoding.h
+mjit.$(OBJEXT): {$(VPATH)}gc.h
+mjit.$(OBJEXT): {$(VPATH)}id.h
+mjit.$(OBJEXT): {$(VPATH)}id_table.h
+mjit.$(OBJEXT): {$(VPATH)}insns.def
+mjit.$(OBJEXT): {$(VPATH)}insns.inc
+mjit.$(OBJEXT): {$(VPATH)}insns_info.inc
+mjit.$(OBJEXT): {$(VPATH)}intern.h
+mjit.$(OBJEXT): {$(VPATH)}internal.h
+mjit.$(OBJEXT): {$(VPATH)}internal/abi.h
+mjit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+mjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+mjit.$(OBJEXT): {$(VPATH)}internal/assume.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+mjit.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+mjit.$(OBJEXT): {$(VPATH)}internal/cast.h
+mjit.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+mjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+mjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+mjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+mjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+mjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+mjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+mjit.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+mjit.$(OBJEXT): {$(VPATH)}internal/config.h
+mjit.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+mjit.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+mjit.$(OBJEXT): {$(VPATH)}internal/ctype.h
+mjit.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+mjit.$(OBJEXT): {$(VPATH)}internal/dosish.h
+mjit.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+mjit.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+mjit.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+mjit.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+mjit.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+mjit.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+mjit.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+mjit.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+mjit.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+mjit.$(OBJEXT): {$(VPATH)}internal/error.h
+mjit.$(OBJEXT): {$(VPATH)}internal/eval.h
+mjit.$(OBJEXT): {$(VPATH)}internal/event.h
+mjit.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+mjit.$(OBJEXT): {$(VPATH)}internal/gc.h
+mjit.$(OBJEXT): {$(VPATH)}internal/glob.h
+mjit.$(OBJEXT): {$(VPATH)}internal/globals.h
+mjit.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+mjit.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+mjit.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+mjit.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+mjit.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+mjit.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+mjit.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+mjit.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+mjit.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+mjit.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+mjit.$(OBJEXT): {$(VPATH)}internal/iterator.h
+mjit.$(OBJEXT): {$(VPATH)}internal/memory.h
+mjit.$(OBJEXT): {$(VPATH)}internal/method.h
+mjit.$(OBJEXT): {$(VPATH)}internal/module.h
+mjit.$(OBJEXT): {$(VPATH)}internal/newobj.h
+mjit.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+mjit.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+mjit.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+mjit.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+mjit.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+mjit.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+mjit.$(OBJEXT): {$(VPATH)}internal/symbol.h
+mjit.$(OBJEXT): {$(VPATH)}internal/value.h
+mjit.$(OBJEXT): {$(VPATH)}internal/value_type.h
+mjit.$(OBJEXT): {$(VPATH)}internal/variable.h
+mjit.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+mjit.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+mjit.$(OBJEXT): {$(VPATH)}iseq.h
+mjit.$(OBJEXT): {$(VPATH)}method.h
+mjit.$(OBJEXT): {$(VPATH)}missing.h
+mjit.$(OBJEXT): {$(VPATH)}mjit.c
+mjit.$(OBJEXT): {$(VPATH)}mjit.h
+mjit.$(OBJEXT): {$(VPATH)}mjit.rbinc
+mjit.$(OBJEXT): {$(VPATH)}mjit_c.h
+mjit.$(OBJEXT): {$(VPATH)}mjit_config.h
+mjit.$(OBJEXT): {$(VPATH)}node.h
+mjit.$(OBJEXT): {$(VPATH)}onigmo.h
+mjit.$(OBJEXT): {$(VPATH)}oniguruma.h
+mjit.$(OBJEXT): {$(VPATH)}ractor.h
+mjit.$(OBJEXT): {$(VPATH)}ractor_core.h
+mjit.$(OBJEXT): {$(VPATH)}ruby_assert.h
+mjit.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+mjit.$(OBJEXT): {$(VPATH)}shape.h
+mjit.$(OBJEXT): {$(VPATH)}st.h
+mjit.$(OBJEXT): {$(VPATH)}subst.h
+mjit.$(OBJEXT): {$(VPATH)}thread.h
+mjit.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+mjit.$(OBJEXT): {$(VPATH)}thread_native.h
+mjit.$(OBJEXT): {$(VPATH)}util.h
+mjit.$(OBJEXT): {$(VPATH)}vm_callinfo.h
+mjit.$(OBJEXT): {$(VPATH)}vm_core.h
+mjit.$(OBJEXT): {$(VPATH)}vm_debug.h
+mjit.$(OBJEXT): {$(VPATH)}vm_opts.h
+mjit.$(OBJEXT): {$(VPATH)}vm_sync.h
+mjit.$(OBJEXT): {$(VPATH)}yjit.h
+mjit_c.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+mjit_c.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+mjit_c.$(OBJEXT): $(CCAN_DIR)/list/list.h
+mjit_c.$(OBJEXT): $(CCAN_DIR)/str/str.h
+mjit_c.$(OBJEXT): $(hdrdir)/ruby.h
+mjit_c.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+mjit_c.$(OBJEXT): $(srcdir)/mjit_c.rb
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/array.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/class.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/compile.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/gc.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/hash.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/object.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/serial.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/variable.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/vm.h
+mjit_c.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+mjit_c.$(OBJEXT): {$(VPATH)}assert.h
+mjit_c.$(OBJEXT): {$(VPATH)}atomic.h
+mjit_c.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+mjit_c.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+mjit_c.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+mjit_c.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+mjit_c.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+mjit_c.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+mjit_c.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+mjit_c.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+mjit_c.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+mjit_c.$(OBJEXT): {$(VPATH)}builtin.h
+mjit_c.$(OBJEXT): {$(VPATH)}config.h
+mjit_c.$(OBJEXT): {$(VPATH)}constant.h
+mjit_c.$(OBJEXT): {$(VPATH)}debug_counter.h
+mjit_c.$(OBJEXT): {$(VPATH)}defines.h
+mjit_c.$(OBJEXT): {$(VPATH)}id.h
+mjit_c.$(OBJEXT): {$(VPATH)}id_table.h
+mjit_c.$(OBJEXT): {$(VPATH)}insns.def
+mjit_c.$(OBJEXT): {$(VPATH)}insns.inc
+mjit_c.$(OBJEXT): {$(VPATH)}insns_info.inc
+mjit_c.$(OBJEXT): {$(VPATH)}intern.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/abi.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/assume.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/cast.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/config.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/ctype.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/dosish.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/error.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/eval.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/event.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/gc.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/glob.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/globals.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/iterator.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/memory.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/method.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/module.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/newobj.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/symbol.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/value.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/value_type.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/variable.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+mjit_c.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+mjit_c.$(OBJEXT): {$(VPATH)}iseq.h
+mjit_c.$(OBJEXT): {$(VPATH)}method.h
+mjit_c.$(OBJEXT): {$(VPATH)}missing.h
+mjit_c.$(OBJEXT): {$(VPATH)}mjit.h
+mjit_c.$(OBJEXT): {$(VPATH)}mjit_c.c
+mjit_c.$(OBJEXT): {$(VPATH)}mjit_c.h
+mjit_c.$(OBJEXT): {$(VPATH)}mjit_c.rb
+mjit_c.$(OBJEXT): {$(VPATH)}mjit_c.rbinc
+mjit_c.$(OBJEXT): {$(VPATH)}mjit_sp_inc.inc
+mjit_c.$(OBJEXT): {$(VPATH)}node.h
+mjit_c.$(OBJEXT): {$(VPATH)}ruby_assert.h
+mjit_c.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+mjit_c.$(OBJEXT): {$(VPATH)}shape.h
+mjit_c.$(OBJEXT): {$(VPATH)}st.h
+mjit_c.$(OBJEXT): {$(VPATH)}subst.h
+mjit_c.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+mjit_c.$(OBJEXT): {$(VPATH)}thread_native.h
+mjit_c.$(OBJEXT): {$(VPATH)}vm_callinfo.h
+mjit_c.$(OBJEXT): {$(VPATH)}vm_core.h
+mjit_c.$(OBJEXT): {$(VPATH)}vm_exec.h
+mjit_c.$(OBJEXT): {$(VPATH)}vm_insnhelper.h
+mjit_c.$(OBJEXT): {$(VPATH)}vm_opts.h
+mjit_c.$(OBJEXT): {$(VPATH)}yjit.h
+node.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+node.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+node.$(OBJEXT): $(CCAN_DIR)/list/list.h
+node.$(OBJEXT): $(CCAN_DIR)/str/str.h
+node.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+node.$(OBJEXT): $(top_srcdir)/internal/array.h
+node.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+node.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+node.$(OBJEXT): $(top_srcdir)/internal/gc.h
+node.$(OBJEXT): $(top_srcdir)/internal/hash.h
+node.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+node.$(OBJEXT): $(top_srcdir)/internal/serial.h
+node.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+node.$(OBJEXT): $(top_srcdir)/internal/variable.h
+node.$(OBJEXT): $(top_srcdir)/internal/vm.h
+node.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+node.$(OBJEXT): {$(VPATH)}assert.h
+node.$(OBJEXT): {$(VPATH)}atomic.h
+node.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+node.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+node.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+node.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+node.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+node.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+node.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+node.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+node.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+node.$(OBJEXT): {$(VPATH)}config.h
+node.$(OBJEXT): {$(VPATH)}constant.h
+node.$(OBJEXT): {$(VPATH)}defines.h
+node.$(OBJEXT): {$(VPATH)}id.h
+node.$(OBJEXT): {$(VPATH)}id_table.h
+node.$(OBJEXT): {$(VPATH)}intern.h
+node.$(OBJEXT): {$(VPATH)}internal.h
+node.$(OBJEXT): {$(VPATH)}internal/abi.h
+node.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+node.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+node.$(OBJEXT): {$(VPATH)}internal/assume.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+node.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+node.$(OBJEXT): {$(VPATH)}internal/cast.h
+node.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+node.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+node.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+node.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+node.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+node.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+node.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+node.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+node.$(OBJEXT): {$(VPATH)}internal/config.h
+node.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+node.$(OBJEXT): {$(VPATH)}internal/core.h
+node.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+node.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+node.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+node.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+node.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+node.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+node.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+node.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+node.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+node.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+node.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+node.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+node.$(OBJEXT): {$(VPATH)}internal/ctype.h
+node.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+node.$(OBJEXT): {$(VPATH)}internal/dosish.h
+node.$(OBJEXT): {$(VPATH)}internal/error.h
+node.$(OBJEXT): {$(VPATH)}internal/eval.h
+node.$(OBJEXT): {$(VPATH)}internal/event.h
+node.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+node.$(OBJEXT): {$(VPATH)}internal/gc.h
+node.$(OBJEXT): {$(VPATH)}internal/glob.h
+node.$(OBJEXT): {$(VPATH)}internal/globals.h
+node.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+node.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+node.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+node.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+node.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+node.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+node.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+node.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+node.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+node.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+node.$(OBJEXT): {$(VPATH)}internal/iterator.h
+node.$(OBJEXT): {$(VPATH)}internal/memory.h
+node.$(OBJEXT): {$(VPATH)}internal/method.h
+node.$(OBJEXT): {$(VPATH)}internal/module.h
+node.$(OBJEXT): {$(VPATH)}internal/newobj.h
+node.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+node.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+node.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+node.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+node.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+node.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+node.$(OBJEXT): {$(VPATH)}internal/symbol.h
+node.$(OBJEXT): {$(VPATH)}internal/value.h
+node.$(OBJEXT): {$(VPATH)}internal/value_type.h
+node.$(OBJEXT): {$(VPATH)}internal/variable.h
+node.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+node.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+node.$(OBJEXT): {$(VPATH)}method.h
+node.$(OBJEXT): {$(VPATH)}missing.h
+node.$(OBJEXT): {$(VPATH)}node.c
+node.$(OBJEXT): {$(VPATH)}node.h
+node.$(OBJEXT): {$(VPATH)}ruby_assert.h
+node.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+node.$(OBJEXT): {$(VPATH)}shape.h
+node.$(OBJEXT): {$(VPATH)}st.h
+node.$(OBJEXT): {$(VPATH)}subst.h
+node.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+node.$(OBJEXT): {$(VPATH)}thread_native.h
+node.$(OBJEXT): {$(VPATH)}vm_core.h
+node.$(OBJEXT): {$(VPATH)}vm_opts.h
+numeric.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/array.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/bits.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/class.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/complex.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/enumerator.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/gc.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/hash.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/object.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/rational.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/serial.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/string.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/util.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/variable.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/vm.h
+numeric.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+numeric.$(OBJEXT): {$(VPATH)}assert.h
+numeric.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+numeric.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+numeric.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+numeric.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+numeric.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+numeric.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+numeric.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+numeric.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+numeric.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+numeric.$(OBJEXT): {$(VPATH)}builtin.h
+numeric.$(OBJEXT): {$(VPATH)}config.h
+numeric.$(OBJEXT): {$(VPATH)}constant.h
+numeric.$(OBJEXT): {$(VPATH)}defines.h
+numeric.$(OBJEXT): {$(VPATH)}encoding.h
+numeric.$(OBJEXT): {$(VPATH)}id.h
+numeric.$(OBJEXT): {$(VPATH)}id_table.h
+numeric.$(OBJEXT): {$(VPATH)}intern.h
+numeric.$(OBJEXT): {$(VPATH)}internal.h
+numeric.$(OBJEXT): {$(VPATH)}internal/abi.h
+numeric.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+numeric.$(OBJEXT): {$(VPATH)}internal/assume.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+numeric.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+numeric.$(OBJEXT): {$(VPATH)}internal/cast.h
+numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+numeric.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+numeric.$(OBJEXT): {$(VPATH)}internal/config.h
+numeric.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+numeric.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+numeric.$(OBJEXT): {$(VPATH)}internal/ctype.h
+numeric.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+numeric.$(OBJEXT): {$(VPATH)}internal/dosish.h
+numeric.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+numeric.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+numeric.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+numeric.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+numeric.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+numeric.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+numeric.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+numeric.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+numeric.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+numeric.$(OBJEXT): {$(VPATH)}internal/error.h
+numeric.$(OBJEXT): {$(VPATH)}internal/eval.h
+numeric.$(OBJEXT): {$(VPATH)}internal/event.h
+numeric.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+numeric.$(OBJEXT): {$(VPATH)}internal/gc.h
+numeric.$(OBJEXT): {$(VPATH)}internal/glob.h
+numeric.$(OBJEXT): {$(VPATH)}internal/globals.h
+numeric.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+numeric.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+numeric.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+numeric.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+numeric.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+numeric.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+numeric.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+numeric.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+numeric.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+numeric.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+numeric.$(OBJEXT): {$(VPATH)}internal/iterator.h
+numeric.$(OBJEXT): {$(VPATH)}internal/memory.h
+numeric.$(OBJEXT): {$(VPATH)}internal/method.h
+numeric.$(OBJEXT): {$(VPATH)}internal/module.h
+numeric.$(OBJEXT): {$(VPATH)}internal/newobj.h
+numeric.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+numeric.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+numeric.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+numeric.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+numeric.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+numeric.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+numeric.$(OBJEXT): {$(VPATH)}internal/symbol.h
+numeric.$(OBJEXT): {$(VPATH)}internal/value.h
+numeric.$(OBJEXT): {$(VPATH)}internal/value_type.h
+numeric.$(OBJEXT): {$(VPATH)}internal/variable.h
+numeric.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+numeric.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+numeric.$(OBJEXT): {$(VPATH)}missing.h
+numeric.$(OBJEXT): {$(VPATH)}numeric.c
+numeric.$(OBJEXT): {$(VPATH)}numeric.rbinc
+numeric.$(OBJEXT): {$(VPATH)}onigmo.h
+numeric.$(OBJEXT): {$(VPATH)}oniguruma.h
+numeric.$(OBJEXT): {$(VPATH)}ruby_assert.h
+numeric.$(OBJEXT): {$(VPATH)}shape.h
+numeric.$(OBJEXT): {$(VPATH)}st.h
+numeric.$(OBJEXT): {$(VPATH)}subst.h
+numeric.$(OBJEXT): {$(VPATH)}util.h
+object.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+object.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+object.$(OBJEXT): $(CCAN_DIR)/list/list.h
+object.$(OBJEXT): $(CCAN_DIR)/str/str.h
+object.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+object.$(OBJEXT): $(top_srcdir)/internal/array.h
+object.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+object.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+object.$(OBJEXT): $(top_srcdir)/internal/bits.h
+object.$(OBJEXT): $(top_srcdir)/internal/class.h
+object.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+object.$(OBJEXT): $(top_srcdir)/internal/error.h
+object.$(OBJEXT): $(top_srcdir)/internal/eval.h
+object.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+object.$(OBJEXT): $(top_srcdir)/internal/gc.h
+object.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+object.$(OBJEXT): $(top_srcdir)/internal/inits.h
+object.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+object.$(OBJEXT): $(top_srcdir)/internal/object.h
+object.$(OBJEXT): $(top_srcdir)/internal/serial.h
+object.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+object.$(OBJEXT): $(top_srcdir)/internal/string.h
+object.$(OBJEXT): $(top_srcdir)/internal/struct.h
+object.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+object.$(OBJEXT): $(top_srcdir)/internal/variable.h
+object.$(OBJEXT): $(top_srcdir)/internal/vm.h
+object.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+object.$(OBJEXT): {$(VPATH)}assert.h
+object.$(OBJEXT): {$(VPATH)}atomic.h
+object.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+object.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+object.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+object.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+object.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+object.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+object.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+object.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+object.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+object.$(OBJEXT): {$(VPATH)}builtin.h
+object.$(OBJEXT): {$(VPATH)}config.h
+object.$(OBJEXT): {$(VPATH)}constant.h
+object.$(OBJEXT): {$(VPATH)}defines.h
+object.$(OBJEXT): {$(VPATH)}encoding.h
+object.$(OBJEXT): {$(VPATH)}id.h
+object.$(OBJEXT): {$(VPATH)}id_table.h
+object.$(OBJEXT): {$(VPATH)}intern.h
+object.$(OBJEXT): {$(VPATH)}internal.h
+object.$(OBJEXT): {$(VPATH)}internal/abi.h
+object.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+object.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+object.$(OBJEXT): {$(VPATH)}internal/assume.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+object.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+object.$(OBJEXT): {$(VPATH)}internal/cast.h
+object.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+object.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+object.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+object.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+object.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+object.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+object.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+object.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+object.$(OBJEXT): {$(VPATH)}internal/config.h
+object.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+object.$(OBJEXT): {$(VPATH)}internal/core.h
+object.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+object.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+object.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+object.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+object.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+object.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+object.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+object.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+object.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+object.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+object.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+object.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+object.$(OBJEXT): {$(VPATH)}internal/ctype.h
+object.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+object.$(OBJEXT): {$(VPATH)}internal/dosish.h
+object.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+object.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+object.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+object.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+object.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+object.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+object.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+object.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+object.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+object.$(OBJEXT): {$(VPATH)}internal/error.h
+object.$(OBJEXT): {$(VPATH)}internal/eval.h
+object.$(OBJEXT): {$(VPATH)}internal/event.h
+object.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+object.$(OBJEXT): {$(VPATH)}internal/gc.h
+object.$(OBJEXT): {$(VPATH)}internal/glob.h
+object.$(OBJEXT): {$(VPATH)}internal/globals.h
+object.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+object.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+object.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+object.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+object.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+object.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+object.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+object.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+object.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+object.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+object.$(OBJEXT): {$(VPATH)}internal/iterator.h
+object.$(OBJEXT): {$(VPATH)}internal/memory.h
+object.$(OBJEXT): {$(VPATH)}internal/method.h
+object.$(OBJEXT): {$(VPATH)}internal/module.h
+object.$(OBJEXT): {$(VPATH)}internal/newobj.h
+object.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+object.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+object.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+object.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+object.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+object.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+object.$(OBJEXT): {$(VPATH)}internal/symbol.h
+object.$(OBJEXT): {$(VPATH)}internal/value.h
+object.$(OBJEXT): {$(VPATH)}internal/value_type.h
+object.$(OBJEXT): {$(VPATH)}internal/variable.h
+object.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+object.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+object.$(OBJEXT): {$(VPATH)}kernel.rbinc
+object.$(OBJEXT): {$(VPATH)}method.h
+object.$(OBJEXT): {$(VPATH)}missing.h
+object.$(OBJEXT): {$(VPATH)}nilclass.rbinc
+object.$(OBJEXT): {$(VPATH)}node.h
+object.$(OBJEXT): {$(VPATH)}object.c
+object.$(OBJEXT): {$(VPATH)}onigmo.h
+object.$(OBJEXT): {$(VPATH)}oniguruma.h
+object.$(OBJEXT): {$(VPATH)}probes.dmyh
+object.$(OBJEXT): {$(VPATH)}probes.h
+object.$(OBJEXT): {$(VPATH)}ruby_assert.h
+object.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+object.$(OBJEXT): {$(VPATH)}shape.h
+object.$(OBJEXT): {$(VPATH)}st.h
+object.$(OBJEXT): {$(VPATH)}subst.h
+object.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+object.$(OBJEXT): {$(VPATH)}thread_native.h
+object.$(OBJEXT): {$(VPATH)}util.h
+object.$(OBJEXT): {$(VPATH)}variable.h
+object.$(OBJEXT): {$(VPATH)}vm_core.h
+object.$(OBJEXT): {$(VPATH)}vm_opts.h
+pack.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+pack.$(OBJEXT): $(top_srcdir)/internal/array.h
+pack.$(OBJEXT): $(top_srcdir)/internal/bits.h
+pack.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+pack.$(OBJEXT): $(top_srcdir)/internal/gc.h
+pack.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+pack.$(OBJEXT): $(top_srcdir)/internal/string.h
+pack.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+pack.$(OBJEXT): $(top_srcdir)/internal/variable.h
+pack.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+pack.$(OBJEXT): {$(VPATH)}assert.h
+pack.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+pack.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+pack.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+pack.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+pack.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+pack.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+pack.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+pack.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+pack.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+pack.$(OBJEXT): {$(VPATH)}builtin.h
+pack.$(OBJEXT): {$(VPATH)}config.h
+pack.$(OBJEXT): {$(VPATH)}constant.h
+pack.$(OBJEXT): {$(VPATH)}defines.h
+pack.$(OBJEXT): {$(VPATH)}encoding.h
+pack.$(OBJEXT): {$(VPATH)}id_table.h
+pack.$(OBJEXT): {$(VPATH)}intern.h
+pack.$(OBJEXT): {$(VPATH)}internal.h
+pack.$(OBJEXT): {$(VPATH)}internal/abi.h
+pack.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+pack.$(OBJEXT): {$(VPATH)}internal/assume.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+pack.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+pack.$(OBJEXT): {$(VPATH)}internal/cast.h
+pack.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+pack.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+pack.$(OBJEXT): {$(VPATH)}internal/config.h
+pack.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+pack.$(OBJEXT): {$(VPATH)}internal/core.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+pack.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+pack.$(OBJEXT): {$(VPATH)}internal/ctype.h
+pack.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+pack.$(OBJEXT): {$(VPATH)}internal/dosish.h
+pack.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+pack.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+pack.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+pack.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+pack.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+pack.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+pack.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+pack.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+pack.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+pack.$(OBJEXT): {$(VPATH)}internal/error.h
+pack.$(OBJEXT): {$(VPATH)}internal/eval.h
+pack.$(OBJEXT): {$(VPATH)}internal/event.h
+pack.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+pack.$(OBJEXT): {$(VPATH)}internal/gc.h
+pack.$(OBJEXT): {$(VPATH)}internal/glob.h
+pack.$(OBJEXT): {$(VPATH)}internal/globals.h
+pack.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+pack.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+pack.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+pack.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+pack.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+pack.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+pack.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+pack.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+pack.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+pack.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+pack.$(OBJEXT): {$(VPATH)}internal/iterator.h
+pack.$(OBJEXT): {$(VPATH)}internal/memory.h
+pack.$(OBJEXT): {$(VPATH)}internal/method.h
+pack.$(OBJEXT): {$(VPATH)}internal/module.h
+pack.$(OBJEXT): {$(VPATH)}internal/newobj.h
+pack.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+pack.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+pack.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+pack.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+pack.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+pack.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+pack.$(OBJEXT): {$(VPATH)}internal/symbol.h
+pack.$(OBJEXT): {$(VPATH)}internal/value.h
+pack.$(OBJEXT): {$(VPATH)}internal/value_type.h
+pack.$(OBJEXT): {$(VPATH)}internal/variable.h
+pack.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+pack.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+pack.$(OBJEXT): {$(VPATH)}missing.h
+pack.$(OBJEXT): {$(VPATH)}onigmo.h
+pack.$(OBJEXT): {$(VPATH)}oniguruma.h
+pack.$(OBJEXT): {$(VPATH)}pack.c
+pack.$(OBJEXT): {$(VPATH)}pack.rbinc
+pack.$(OBJEXT): {$(VPATH)}shape.h
+pack.$(OBJEXT): {$(VPATH)}st.h
+pack.$(OBJEXT): {$(VPATH)}subst.h
+pack.$(OBJEXT): {$(VPATH)}util.h
+parse.$(OBJEXT): $(hdrdir)/ruby.h
+parse.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+parse.$(OBJEXT): $(top_srcdir)/internal/array.h
+parse.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+parse.$(OBJEXT): $(top_srcdir)/internal/bits.h
+parse.$(OBJEXT): $(top_srcdir)/internal/compile.h
+parse.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+parse.$(OBJEXT): $(top_srcdir)/internal/complex.h
+parse.$(OBJEXT): $(top_srcdir)/internal/encoding.h
+parse.$(OBJEXT): $(top_srcdir)/internal/error.h
+parse.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+parse.$(OBJEXT): $(top_srcdir)/internal/gc.h
+parse.$(OBJEXT): $(top_srcdir)/internal/hash.h
+parse.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+parse.$(OBJEXT): $(top_srcdir)/internal/io.h
+parse.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+parse.$(OBJEXT): $(top_srcdir)/internal/parse.h
+parse.$(OBJEXT): $(top_srcdir)/internal/rational.h
+parse.$(OBJEXT): $(top_srcdir)/internal/re.h
+parse.$(OBJEXT): $(top_srcdir)/internal/serial.h
+parse.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+parse.$(OBJEXT): $(top_srcdir)/internal/string.h
+parse.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+parse.$(OBJEXT): $(top_srcdir)/internal/thread.h
+parse.$(OBJEXT): $(top_srcdir)/internal/variable.h
+parse.$(OBJEXT): $(top_srcdir)/internal/vm.h
+parse.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+parse.$(OBJEXT): {$(VPATH)}assert.h
+parse.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+parse.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+parse.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+parse.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+parse.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+parse.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+parse.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+parse.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+parse.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+parse.$(OBJEXT): {$(VPATH)}config.h
+parse.$(OBJEXT): {$(VPATH)}constant.h
+parse.$(OBJEXT): {$(VPATH)}defines.h
+parse.$(OBJEXT): {$(VPATH)}defs/keywords
+parse.$(OBJEXT): {$(VPATH)}encoding.h
+parse.$(OBJEXT): {$(VPATH)}id.h
+parse.$(OBJEXT): {$(VPATH)}id_table.h
+parse.$(OBJEXT): {$(VPATH)}intern.h
+parse.$(OBJEXT): {$(VPATH)}internal.h
+parse.$(OBJEXT): {$(VPATH)}internal/abi.h
+parse.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+parse.$(OBJEXT): {$(VPATH)}internal/assume.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+parse.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+parse.$(OBJEXT): {$(VPATH)}internal/cast.h
+parse.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+parse.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+parse.$(OBJEXT): {$(VPATH)}internal/config.h
+parse.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+parse.$(OBJEXT): {$(VPATH)}internal/core.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+parse.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+parse.$(OBJEXT): {$(VPATH)}internal/ctype.h
+parse.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+parse.$(OBJEXT): {$(VPATH)}internal/dosish.h
+parse.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+parse.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+parse.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+parse.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+parse.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+parse.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+parse.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+parse.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+parse.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+parse.$(OBJEXT): {$(VPATH)}internal/error.h
+parse.$(OBJEXT): {$(VPATH)}internal/eval.h
+parse.$(OBJEXT): {$(VPATH)}internal/event.h
+parse.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+parse.$(OBJEXT): {$(VPATH)}internal/gc.h
+parse.$(OBJEXT): {$(VPATH)}internal/glob.h
+parse.$(OBJEXT): {$(VPATH)}internal/globals.h
+parse.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+parse.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+parse.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+parse.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+parse.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+parse.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+parse.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+parse.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+parse.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+parse.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+parse.$(OBJEXT): {$(VPATH)}internal/iterator.h
+parse.$(OBJEXT): {$(VPATH)}internal/memory.h
+parse.$(OBJEXT): {$(VPATH)}internal/method.h
+parse.$(OBJEXT): {$(VPATH)}internal/module.h
+parse.$(OBJEXT): {$(VPATH)}internal/newobj.h
+parse.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+parse.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+parse.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+parse.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+parse.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+parse.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+parse.$(OBJEXT): {$(VPATH)}internal/symbol.h
+parse.$(OBJEXT): {$(VPATH)}internal/value.h
+parse.$(OBJEXT): {$(VPATH)}internal/value_type.h
+parse.$(OBJEXT): {$(VPATH)}internal/variable.h
+parse.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+parse.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+parse.$(OBJEXT): {$(VPATH)}io.h
+parse.$(OBJEXT): {$(VPATH)}lex.c
+parse.$(OBJEXT): {$(VPATH)}missing.h
+parse.$(OBJEXT): {$(VPATH)}node.h
+parse.$(OBJEXT): {$(VPATH)}onigmo.h
+parse.$(OBJEXT): {$(VPATH)}oniguruma.h
+parse.$(OBJEXT): {$(VPATH)}parse.c
+parse.$(OBJEXT): {$(VPATH)}parse.h
+parse.$(OBJEXT): {$(VPATH)}parse.y
+parse.$(OBJEXT): {$(VPATH)}probes.dmyh
+parse.$(OBJEXT): {$(VPATH)}probes.h
+parse.$(OBJEXT): {$(VPATH)}ractor.h
+parse.$(OBJEXT): {$(VPATH)}regenc.h
+parse.$(OBJEXT): {$(VPATH)}regex.h
+parse.$(OBJEXT): {$(VPATH)}ruby_assert.h
+parse.$(OBJEXT): {$(VPATH)}shape.h
+parse.$(OBJEXT): {$(VPATH)}st.h
+parse.$(OBJEXT): {$(VPATH)}subst.h
+parse.$(OBJEXT): {$(VPATH)}symbol.h
+parse.$(OBJEXT): {$(VPATH)}util.h
+proc.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+proc.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+proc.$(OBJEXT): $(CCAN_DIR)/list/list.h
+proc.$(OBJEXT): $(CCAN_DIR)/str/str.h
+proc.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+proc.$(OBJEXT): $(top_srcdir)/internal/array.h
+proc.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+proc.$(OBJEXT): $(top_srcdir)/internal/class.h
+proc.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+proc.$(OBJEXT): $(top_srcdir)/internal/error.h
+proc.$(OBJEXT): $(top_srcdir)/internal/eval.h
+proc.$(OBJEXT): $(top_srcdir)/internal/gc.h
+proc.$(OBJEXT): $(top_srcdir)/internal/hash.h
+proc.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+proc.$(OBJEXT): $(top_srcdir)/internal/object.h
+proc.$(OBJEXT): $(top_srcdir)/internal/proc.h
+proc.$(OBJEXT): $(top_srcdir)/internal/serial.h
+proc.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+proc.$(OBJEXT): $(top_srcdir)/internal/string.h
+proc.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+proc.$(OBJEXT): $(top_srcdir)/internal/variable.h
+proc.$(OBJEXT): $(top_srcdir)/internal/vm.h
+proc.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+proc.$(OBJEXT): {$(VPATH)}assert.h
+proc.$(OBJEXT): {$(VPATH)}atomic.h
+proc.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+proc.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+proc.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+proc.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+proc.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+proc.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+proc.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+proc.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+proc.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+proc.$(OBJEXT): {$(VPATH)}config.h
+proc.$(OBJEXT): {$(VPATH)}constant.h
+proc.$(OBJEXT): {$(VPATH)}defines.h
+proc.$(OBJEXT): {$(VPATH)}encoding.h
+proc.$(OBJEXT): {$(VPATH)}eval_intern.h
+proc.$(OBJEXT): {$(VPATH)}gc.h
+proc.$(OBJEXT): {$(VPATH)}id.h
+proc.$(OBJEXT): {$(VPATH)}id_table.h
+proc.$(OBJEXT): {$(VPATH)}intern.h
+proc.$(OBJEXT): {$(VPATH)}internal.h
+proc.$(OBJEXT): {$(VPATH)}internal/abi.h
+proc.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+proc.$(OBJEXT): {$(VPATH)}internal/assume.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+proc.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+proc.$(OBJEXT): {$(VPATH)}internal/cast.h
+proc.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+proc.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+proc.$(OBJEXT): {$(VPATH)}internal/config.h
+proc.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+proc.$(OBJEXT): {$(VPATH)}internal/core.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+proc.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+proc.$(OBJEXT): {$(VPATH)}internal/ctype.h
+proc.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+proc.$(OBJEXT): {$(VPATH)}internal/dosish.h
+proc.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+proc.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+proc.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+proc.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+proc.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+proc.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+proc.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+proc.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+proc.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+proc.$(OBJEXT): {$(VPATH)}internal/error.h
+proc.$(OBJEXT): {$(VPATH)}internal/eval.h
+proc.$(OBJEXT): {$(VPATH)}internal/event.h
+proc.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+proc.$(OBJEXT): {$(VPATH)}internal/gc.h
+proc.$(OBJEXT): {$(VPATH)}internal/glob.h
+proc.$(OBJEXT): {$(VPATH)}internal/globals.h
+proc.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+proc.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+proc.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+proc.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+proc.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+proc.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+proc.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+proc.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+proc.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+proc.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+proc.$(OBJEXT): {$(VPATH)}internal/iterator.h
+proc.$(OBJEXT): {$(VPATH)}internal/memory.h
+proc.$(OBJEXT): {$(VPATH)}internal/method.h
+proc.$(OBJEXT): {$(VPATH)}internal/module.h
+proc.$(OBJEXT): {$(VPATH)}internal/newobj.h
+proc.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+proc.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+proc.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+proc.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+proc.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+proc.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+proc.$(OBJEXT): {$(VPATH)}internal/symbol.h
+proc.$(OBJEXT): {$(VPATH)}internal/value.h
+proc.$(OBJEXT): {$(VPATH)}internal/value_type.h
+proc.$(OBJEXT): {$(VPATH)}internal/variable.h
+proc.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+proc.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+proc.$(OBJEXT): {$(VPATH)}iseq.h
+proc.$(OBJEXT): {$(VPATH)}method.h
+proc.$(OBJEXT): {$(VPATH)}missing.h
+proc.$(OBJEXT): {$(VPATH)}node.h
+proc.$(OBJEXT): {$(VPATH)}onigmo.h
+proc.$(OBJEXT): {$(VPATH)}oniguruma.h
+proc.$(OBJEXT): {$(VPATH)}proc.c
+proc.$(OBJEXT): {$(VPATH)}ruby_assert.h
+proc.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+proc.$(OBJEXT): {$(VPATH)}shape.h
+proc.$(OBJEXT): {$(VPATH)}st.h
+proc.$(OBJEXT): {$(VPATH)}subst.h
+proc.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+proc.$(OBJEXT): {$(VPATH)}thread_native.h
+proc.$(OBJEXT): {$(VPATH)}vm_core.h
+proc.$(OBJEXT): {$(VPATH)}vm_opts.h
+proc.$(OBJEXT): {$(VPATH)}yjit.h
+process.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+process.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+process.$(OBJEXT): $(CCAN_DIR)/list/list.h
+process.$(OBJEXT): $(CCAN_DIR)/str/str.h
+process.$(OBJEXT): $(hdrdir)/ruby.h
+process.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+process.$(OBJEXT): $(top_srcdir)/internal/array.h
+process.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+process.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+process.$(OBJEXT): $(top_srcdir)/internal/bits.h
+process.$(OBJEXT): $(top_srcdir)/internal/class.h
+process.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+process.$(OBJEXT): $(top_srcdir)/internal/dir.h
+process.$(OBJEXT): $(top_srcdir)/internal/error.h
+process.$(OBJEXT): $(top_srcdir)/internal/eval.h
+process.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+process.$(OBJEXT): $(top_srcdir)/internal/gc.h
+process.$(OBJEXT): $(top_srcdir)/internal/hash.h
+process.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+process.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+process.$(OBJEXT): $(top_srcdir)/internal/object.h
+process.$(OBJEXT): $(top_srcdir)/internal/process.h
+process.$(OBJEXT): $(top_srcdir)/internal/serial.h
+process.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+process.$(OBJEXT): $(top_srcdir)/internal/string.h
+process.$(OBJEXT): $(top_srcdir)/internal/thread.h
+process.$(OBJEXT): $(top_srcdir)/internal/time.h
+process.$(OBJEXT): $(top_srcdir)/internal/variable.h
+process.$(OBJEXT): $(top_srcdir)/internal/vm.h
+process.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+process.$(OBJEXT): {$(VPATH)}assert.h
+process.$(OBJEXT): {$(VPATH)}atomic.h
+process.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+process.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+process.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+process.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+process.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+process.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+process.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+process.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+process.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+process.$(OBJEXT): {$(VPATH)}config.h
+process.$(OBJEXT): {$(VPATH)}constant.h
+process.$(OBJEXT): {$(VPATH)}debug_counter.h
+process.$(OBJEXT): {$(VPATH)}defines.h
+process.$(OBJEXT): {$(VPATH)}dln.h
+process.$(OBJEXT): {$(VPATH)}encoding.h
+process.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
+process.$(OBJEXT): {$(VPATH)}hrtime.h
+process.$(OBJEXT): {$(VPATH)}id.h
+process.$(OBJEXT): {$(VPATH)}id_table.h
+process.$(OBJEXT): {$(VPATH)}intern.h
+process.$(OBJEXT): {$(VPATH)}internal.h
+process.$(OBJEXT): {$(VPATH)}internal/abi.h
+process.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+process.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+process.$(OBJEXT): {$(VPATH)}internal/assume.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+process.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+process.$(OBJEXT): {$(VPATH)}internal/cast.h
+process.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+process.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+process.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+process.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+process.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+process.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+process.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+process.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+process.$(OBJEXT): {$(VPATH)}internal/config.h
+process.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+process.$(OBJEXT): {$(VPATH)}internal/core.h
+process.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+process.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+process.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+process.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+process.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+process.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+process.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+process.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+process.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+process.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+process.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+process.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+process.$(OBJEXT): {$(VPATH)}internal/ctype.h
+process.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+process.$(OBJEXT): {$(VPATH)}internal/dosish.h
+process.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+process.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+process.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+process.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+process.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+process.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+process.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+process.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+process.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+process.$(OBJEXT): {$(VPATH)}internal/error.h
+process.$(OBJEXT): {$(VPATH)}internal/eval.h
+process.$(OBJEXT): {$(VPATH)}internal/event.h
+process.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+process.$(OBJEXT): {$(VPATH)}internal/gc.h
+process.$(OBJEXT): {$(VPATH)}internal/glob.h
+process.$(OBJEXT): {$(VPATH)}internal/globals.h
+process.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+process.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+process.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+process.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+process.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+process.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+process.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+process.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+process.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+process.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+process.$(OBJEXT): {$(VPATH)}internal/iterator.h
+process.$(OBJEXT): {$(VPATH)}internal/memory.h
+process.$(OBJEXT): {$(VPATH)}internal/method.h
+process.$(OBJEXT): {$(VPATH)}internal/module.h
+process.$(OBJEXT): {$(VPATH)}internal/newobj.h
+process.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+process.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+process.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+process.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+process.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+process.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+process.$(OBJEXT): {$(VPATH)}internal/symbol.h
+process.$(OBJEXT): {$(VPATH)}internal/value.h
+process.$(OBJEXT): {$(VPATH)}internal/value_type.h
+process.$(OBJEXT): {$(VPATH)}internal/variable.h
+process.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+process.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+process.$(OBJEXT): {$(VPATH)}io.h
+process.$(OBJEXT): {$(VPATH)}method.h
+process.$(OBJEXT): {$(VPATH)}missing.h
+process.$(OBJEXT): {$(VPATH)}mjit.h
+process.$(OBJEXT): {$(VPATH)}node.h
+process.$(OBJEXT): {$(VPATH)}onigmo.h
+process.$(OBJEXT): {$(VPATH)}oniguruma.h
+process.$(OBJEXT): {$(VPATH)}process.c
+process.$(OBJEXT): {$(VPATH)}ractor.h
+process.$(OBJEXT): {$(VPATH)}ruby_assert.h
+process.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+process.$(OBJEXT): {$(VPATH)}shape.h
+process.$(OBJEXT): {$(VPATH)}st.h
+process.$(OBJEXT): {$(VPATH)}subst.h
+process.$(OBJEXT): {$(VPATH)}thread.h
+process.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+process.$(OBJEXT): {$(VPATH)}thread_native.h
+process.$(OBJEXT): {$(VPATH)}util.h
+process.$(OBJEXT): {$(VPATH)}vm_core.h
+process.$(OBJEXT): {$(VPATH)}vm_opts.h
+ractor.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+ractor.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+ractor.$(OBJEXT): $(CCAN_DIR)/list/list.h
+ractor.$(OBJEXT): $(CCAN_DIR)/str/str.h
+ractor.$(OBJEXT): $(hdrdir)/ruby.h
+ractor.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/array.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/bits.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/complex.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/error.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/gc.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/hash.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/rational.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/serial.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/string.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/struct.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/thread.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/variable.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/vm.h
+ractor.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+ractor.$(OBJEXT): {$(VPATH)}assert.h
+ractor.$(OBJEXT): {$(VPATH)}atomic.h
+ractor.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+ractor.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+ractor.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+ractor.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+ractor.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+ractor.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+ractor.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+ractor.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+ractor.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+ractor.$(OBJEXT): {$(VPATH)}builtin.h
+ractor.$(OBJEXT): {$(VPATH)}config.h
+ractor.$(OBJEXT): {$(VPATH)}constant.h
+ractor.$(OBJEXT): {$(VPATH)}debug_counter.h
+ractor.$(OBJEXT): {$(VPATH)}defines.h
+ractor.$(OBJEXT): {$(VPATH)}encoding.h
+ractor.$(OBJEXT): {$(VPATH)}gc.h
+ractor.$(OBJEXT): {$(VPATH)}id.h
+ractor.$(OBJEXT): {$(VPATH)}id_table.h
+ractor.$(OBJEXT): {$(VPATH)}intern.h
+ractor.$(OBJEXT): {$(VPATH)}internal.h
+ractor.$(OBJEXT): {$(VPATH)}internal/abi.h
+ractor.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+ractor.$(OBJEXT): {$(VPATH)}internal/assume.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+ractor.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+ractor.$(OBJEXT): {$(VPATH)}internal/cast.h
+ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+ractor.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+ractor.$(OBJEXT): {$(VPATH)}internal/config.h
+ractor.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+ractor.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+ractor.$(OBJEXT): {$(VPATH)}internal/ctype.h
+ractor.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+ractor.$(OBJEXT): {$(VPATH)}internal/dosish.h
+ractor.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+ractor.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+ractor.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+ractor.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+ractor.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+ractor.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+ractor.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+ractor.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+ractor.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+ractor.$(OBJEXT): {$(VPATH)}internal/error.h
+ractor.$(OBJEXT): {$(VPATH)}internal/eval.h
+ractor.$(OBJEXT): {$(VPATH)}internal/event.h
+ractor.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+ractor.$(OBJEXT): {$(VPATH)}internal/gc.h
+ractor.$(OBJEXT): {$(VPATH)}internal/glob.h
+ractor.$(OBJEXT): {$(VPATH)}internal/globals.h
+ractor.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+ractor.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+ractor.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+ractor.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+ractor.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+ractor.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+ractor.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+ractor.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+ractor.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+ractor.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+ractor.$(OBJEXT): {$(VPATH)}internal/iterator.h
+ractor.$(OBJEXT): {$(VPATH)}internal/memory.h
+ractor.$(OBJEXT): {$(VPATH)}internal/method.h
+ractor.$(OBJEXT): {$(VPATH)}internal/module.h
+ractor.$(OBJEXT): {$(VPATH)}internal/newobj.h
+ractor.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+ractor.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+ractor.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+ractor.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+ractor.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+ractor.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+ractor.$(OBJEXT): {$(VPATH)}internal/symbol.h
+ractor.$(OBJEXT): {$(VPATH)}internal/value.h
+ractor.$(OBJEXT): {$(VPATH)}internal/value_type.h
+ractor.$(OBJEXT): {$(VPATH)}internal/variable.h
+ractor.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+ractor.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+ractor.$(OBJEXT): {$(VPATH)}method.h
+ractor.$(OBJEXT): {$(VPATH)}missing.h
+ractor.$(OBJEXT): {$(VPATH)}mjit.h
+ractor.$(OBJEXT): {$(VPATH)}node.h
+ractor.$(OBJEXT): {$(VPATH)}onigmo.h
+ractor.$(OBJEXT): {$(VPATH)}oniguruma.h
+ractor.$(OBJEXT): {$(VPATH)}ractor.c
+ractor.$(OBJEXT): {$(VPATH)}ractor.h
+ractor.$(OBJEXT): {$(VPATH)}ractor.rbinc
+ractor.$(OBJEXT): {$(VPATH)}ractor_core.h
+ractor.$(OBJEXT): {$(VPATH)}ruby_assert.h
+ractor.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+ractor.$(OBJEXT): {$(VPATH)}shape.h
+ractor.$(OBJEXT): {$(VPATH)}st.h
+ractor.$(OBJEXT): {$(VPATH)}subst.h
+ractor.$(OBJEXT): {$(VPATH)}thread.h
+ractor.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+ractor.$(OBJEXT): {$(VPATH)}thread_native.h
+ractor.$(OBJEXT): {$(VPATH)}transient_heap.h
+ractor.$(OBJEXT): {$(VPATH)}variable.h
+ractor.$(OBJEXT): {$(VPATH)}vm_core.h
+ractor.$(OBJEXT): {$(VPATH)}vm_debug.h
+ractor.$(OBJEXT): {$(VPATH)}vm_opts.h
+ractor.$(OBJEXT): {$(VPATH)}vm_sync.h
+ractor.$(OBJEXT): {$(VPATH)}yjit.h
+random.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+random.$(OBJEXT): $(top_srcdir)/internal/array.h
+random.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+random.$(OBJEXT): $(top_srcdir)/internal/bits.h
+random.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+random.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+random.$(OBJEXT): $(top_srcdir)/internal/gc.h
+random.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+random.$(OBJEXT): $(top_srcdir)/internal/random.h
+random.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+random.$(OBJEXT): $(top_srcdir)/internal/serial.h
+random.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+random.$(OBJEXT): $(top_srcdir)/internal/variable.h
+random.$(OBJEXT): $(top_srcdir)/internal/vm.h
+random.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+random.$(OBJEXT): {$(VPATH)}assert.h
+random.$(OBJEXT): {$(VPATH)}atomic.h
+random.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+random.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+random.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+random.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+random.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+random.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+random.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+random.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+random.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+random.$(OBJEXT): {$(VPATH)}config.h
+random.$(OBJEXT): {$(VPATH)}constant.h
+random.$(OBJEXT): {$(VPATH)}defines.h
+random.$(OBJEXT): {$(VPATH)}id_table.h
+random.$(OBJEXT): {$(VPATH)}intern.h
+random.$(OBJEXT): {$(VPATH)}internal.h
+random.$(OBJEXT): {$(VPATH)}internal/abi.h
+random.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+random.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+random.$(OBJEXT): {$(VPATH)}internal/assume.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+random.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+random.$(OBJEXT): {$(VPATH)}internal/cast.h
+random.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+random.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+random.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+random.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+random.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+random.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+random.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+random.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+random.$(OBJEXT): {$(VPATH)}internal/config.h
+random.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+random.$(OBJEXT): {$(VPATH)}internal/core.h
+random.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+random.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+random.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+random.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+random.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+random.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+random.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+random.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+random.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+random.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+random.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+random.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+random.$(OBJEXT): {$(VPATH)}internal/ctype.h
+random.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+random.$(OBJEXT): {$(VPATH)}internal/dosish.h
+random.$(OBJEXT): {$(VPATH)}internal/error.h
+random.$(OBJEXT): {$(VPATH)}internal/eval.h
+random.$(OBJEXT): {$(VPATH)}internal/event.h
+random.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+random.$(OBJEXT): {$(VPATH)}internal/gc.h
+random.$(OBJEXT): {$(VPATH)}internal/glob.h
+random.$(OBJEXT): {$(VPATH)}internal/globals.h
+random.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+random.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+random.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+random.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+random.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+random.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+random.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+random.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+random.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+random.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+random.$(OBJEXT): {$(VPATH)}internal/iterator.h
+random.$(OBJEXT): {$(VPATH)}internal/memory.h
+random.$(OBJEXT): {$(VPATH)}internal/method.h
+random.$(OBJEXT): {$(VPATH)}internal/module.h
+random.$(OBJEXT): {$(VPATH)}internal/newobj.h
+random.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+random.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+random.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+random.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+random.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+random.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+random.$(OBJEXT): {$(VPATH)}internal/symbol.h
+random.$(OBJEXT): {$(VPATH)}internal/value.h
+random.$(OBJEXT): {$(VPATH)}internal/value_type.h
+random.$(OBJEXT): {$(VPATH)}internal/variable.h
+random.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+random.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+random.$(OBJEXT): {$(VPATH)}missing.h
+random.$(OBJEXT): {$(VPATH)}mt19937.c
+random.$(OBJEXT): {$(VPATH)}ractor.h
+random.$(OBJEXT): {$(VPATH)}random.c
+random.$(OBJEXT): {$(VPATH)}random.h
+random.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+random.$(OBJEXT): {$(VPATH)}shape.h
+random.$(OBJEXT): {$(VPATH)}siphash.c
+random.$(OBJEXT): {$(VPATH)}siphash.h
+random.$(OBJEXT): {$(VPATH)}st.h
+random.$(OBJEXT): {$(VPATH)}subst.h
+range.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+range.$(OBJEXT): $(top_srcdir)/internal/array.h
+range.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+range.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+range.$(OBJEXT): $(top_srcdir)/internal/bits.h
+range.$(OBJEXT): $(top_srcdir)/internal/compar.h
+range.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+range.$(OBJEXT): $(top_srcdir)/internal/enum.h
+range.$(OBJEXT): $(top_srcdir)/internal/enumerator.h
+range.$(OBJEXT): $(top_srcdir)/internal/error.h
+range.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+range.$(OBJEXT): $(top_srcdir)/internal/gc.h
+range.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+range.$(OBJEXT): $(top_srcdir)/internal/range.h
+range.$(OBJEXT): $(top_srcdir)/internal/serial.h
+range.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+range.$(OBJEXT): $(top_srcdir)/internal/string.h
+range.$(OBJEXT): $(top_srcdir)/internal/struct.h
+range.$(OBJEXT): $(top_srcdir)/internal/vm.h
+range.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+range.$(OBJEXT): {$(VPATH)}assert.h
+range.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+range.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+range.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+range.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+range.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+range.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+range.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+range.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+range.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+range.$(OBJEXT): {$(VPATH)}config.h
+range.$(OBJEXT): {$(VPATH)}defines.h
+range.$(OBJEXT): {$(VPATH)}encoding.h
+range.$(OBJEXT): {$(VPATH)}id.h
+range.$(OBJEXT): {$(VPATH)}intern.h
+range.$(OBJEXT): {$(VPATH)}internal.h
+range.$(OBJEXT): {$(VPATH)}internal/abi.h
+range.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+range.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+range.$(OBJEXT): {$(VPATH)}internal/assume.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+range.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+range.$(OBJEXT): {$(VPATH)}internal/cast.h
+range.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+range.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+range.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+range.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+range.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+range.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+range.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+range.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+range.$(OBJEXT): {$(VPATH)}internal/config.h
+range.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+range.$(OBJEXT): {$(VPATH)}internal/core.h
+range.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+range.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+range.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+range.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+range.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+range.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+range.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+range.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+range.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+range.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+range.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+range.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+range.$(OBJEXT): {$(VPATH)}internal/ctype.h
+range.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+range.$(OBJEXT): {$(VPATH)}internal/dosish.h
+range.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+range.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+range.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+range.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+range.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+range.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+range.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+range.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+range.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+range.$(OBJEXT): {$(VPATH)}internal/error.h
+range.$(OBJEXT): {$(VPATH)}internal/eval.h
+range.$(OBJEXT): {$(VPATH)}internal/event.h
+range.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+range.$(OBJEXT): {$(VPATH)}internal/gc.h
+range.$(OBJEXT): {$(VPATH)}internal/glob.h
+range.$(OBJEXT): {$(VPATH)}internal/globals.h
+range.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+range.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+range.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+range.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+range.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+range.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+range.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+range.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+range.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+range.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+range.$(OBJEXT): {$(VPATH)}internal/iterator.h
+range.$(OBJEXT): {$(VPATH)}internal/memory.h
+range.$(OBJEXT): {$(VPATH)}internal/method.h
+range.$(OBJEXT): {$(VPATH)}internal/module.h
+range.$(OBJEXT): {$(VPATH)}internal/newobj.h
+range.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+range.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+range.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+range.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+range.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+range.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+range.$(OBJEXT): {$(VPATH)}internal/symbol.h
+range.$(OBJEXT): {$(VPATH)}internal/value.h
+range.$(OBJEXT): {$(VPATH)}internal/value_type.h
+range.$(OBJEXT): {$(VPATH)}internal/variable.h
+range.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+range.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+range.$(OBJEXT): {$(VPATH)}missing.h
+range.$(OBJEXT): {$(VPATH)}onigmo.h
+range.$(OBJEXT): {$(VPATH)}oniguruma.h
+range.$(OBJEXT): {$(VPATH)}range.c
+range.$(OBJEXT): {$(VPATH)}shape.h
+range.$(OBJEXT): {$(VPATH)}st.h
+range.$(OBJEXT): {$(VPATH)}subst.h
+rational.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+rational.$(OBJEXT): $(top_srcdir)/internal/array.h
+rational.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+rational.$(OBJEXT): $(top_srcdir)/internal/bits.h
+rational.$(OBJEXT): $(top_srcdir)/internal/class.h
+rational.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+rational.$(OBJEXT): $(top_srcdir)/internal/complex.h
+rational.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+rational.$(OBJEXT): $(top_srcdir)/internal/gc.h
+rational.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+rational.$(OBJEXT): $(top_srcdir)/internal/object.h
+rational.$(OBJEXT): $(top_srcdir)/internal/rational.h
+rational.$(OBJEXT): $(top_srcdir)/internal/serial.h
+rational.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+rational.$(OBJEXT): $(top_srcdir)/internal/variable.h
+rational.$(OBJEXT): $(top_srcdir)/internal/vm.h
+rational.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+rational.$(OBJEXT): {$(VPATH)}assert.h
+rational.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+rational.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+rational.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+rational.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+rational.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+rational.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+rational.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+rational.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+rational.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+rational.$(OBJEXT): {$(VPATH)}config.h
+rational.$(OBJEXT): {$(VPATH)}constant.h
+rational.$(OBJEXT): {$(VPATH)}defines.h
+rational.$(OBJEXT): {$(VPATH)}id.h
+rational.$(OBJEXT): {$(VPATH)}id_table.h
+rational.$(OBJEXT): {$(VPATH)}intern.h
+rational.$(OBJEXT): {$(VPATH)}internal.h
+rational.$(OBJEXT): {$(VPATH)}internal/abi.h
+rational.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+rational.$(OBJEXT): {$(VPATH)}internal/assume.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+rational.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+rational.$(OBJEXT): {$(VPATH)}internal/cast.h
+rational.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+rational.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+rational.$(OBJEXT): {$(VPATH)}internal/config.h
+rational.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+rational.$(OBJEXT): {$(VPATH)}internal/core.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+rational.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+rational.$(OBJEXT): {$(VPATH)}internal/ctype.h
+rational.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+rational.$(OBJEXT): {$(VPATH)}internal/dosish.h
+rational.$(OBJEXT): {$(VPATH)}internal/error.h
+rational.$(OBJEXT): {$(VPATH)}internal/eval.h
+rational.$(OBJEXT): {$(VPATH)}internal/event.h
+rational.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+rational.$(OBJEXT): {$(VPATH)}internal/gc.h
+rational.$(OBJEXT): {$(VPATH)}internal/glob.h
+rational.$(OBJEXT): {$(VPATH)}internal/globals.h
+rational.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+rational.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+rational.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+rational.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+rational.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+rational.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+rational.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+rational.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+rational.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+rational.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+rational.$(OBJEXT): {$(VPATH)}internal/iterator.h
+rational.$(OBJEXT): {$(VPATH)}internal/memory.h
+rational.$(OBJEXT): {$(VPATH)}internal/method.h
+rational.$(OBJEXT): {$(VPATH)}internal/module.h
+rational.$(OBJEXT): {$(VPATH)}internal/newobj.h
+rational.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+rational.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+rational.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+rational.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+rational.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+rational.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+rational.$(OBJEXT): {$(VPATH)}internal/symbol.h
+rational.$(OBJEXT): {$(VPATH)}internal/value.h
+rational.$(OBJEXT): {$(VPATH)}internal/value_type.h
+rational.$(OBJEXT): {$(VPATH)}internal/variable.h
+rational.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+rational.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+rational.$(OBJEXT): {$(VPATH)}missing.h
+rational.$(OBJEXT): {$(VPATH)}rational.c
+rational.$(OBJEXT): {$(VPATH)}ruby_assert.h
+rational.$(OBJEXT): {$(VPATH)}shape.h
+rational.$(OBJEXT): {$(VPATH)}st.h
+rational.$(OBJEXT): {$(VPATH)}subst.h
+re.$(OBJEXT): $(hdrdir)/ruby.h
+re.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+re.$(OBJEXT): $(top_srcdir)/internal/array.h
+re.$(OBJEXT): $(top_srcdir)/internal/bits.h
+re.$(OBJEXT): $(top_srcdir)/internal/class.h
+re.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+re.$(OBJEXT): $(top_srcdir)/internal/encoding.h
+re.$(OBJEXT): $(top_srcdir)/internal/gc.h
+re.$(OBJEXT): $(top_srcdir)/internal/hash.h
+re.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+re.$(OBJEXT): $(top_srcdir)/internal/object.h
+re.$(OBJEXT): $(top_srcdir)/internal/ractor.h
+re.$(OBJEXT): $(top_srcdir)/internal/re.h
+re.$(OBJEXT): $(top_srcdir)/internal/serial.h
+re.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+re.$(OBJEXT): $(top_srcdir)/internal/string.h
+re.$(OBJEXT): $(top_srcdir)/internal/time.h
+re.$(OBJEXT): $(top_srcdir)/internal/variable.h
+re.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+re.$(OBJEXT): {$(VPATH)}assert.h
+re.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+re.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+re.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+re.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+re.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+re.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+re.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+re.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+re.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+re.$(OBJEXT): {$(VPATH)}config.h
+re.$(OBJEXT): {$(VPATH)}constant.h
+re.$(OBJEXT): {$(VPATH)}defines.h
+re.$(OBJEXT): {$(VPATH)}encindex.h
+re.$(OBJEXT): {$(VPATH)}encoding.h
+re.$(OBJEXT): {$(VPATH)}hrtime.h
+re.$(OBJEXT): {$(VPATH)}id_table.h
+re.$(OBJEXT): {$(VPATH)}intern.h
+re.$(OBJEXT): {$(VPATH)}internal.h
+re.$(OBJEXT): {$(VPATH)}internal/abi.h
+re.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+re.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+re.$(OBJEXT): {$(VPATH)}internal/assume.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+re.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+re.$(OBJEXT): {$(VPATH)}internal/cast.h
+re.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+re.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+re.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+re.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+re.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+re.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+re.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+re.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+re.$(OBJEXT): {$(VPATH)}internal/config.h
+re.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+re.$(OBJEXT): {$(VPATH)}internal/core.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h
+re.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+re.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+re.$(OBJEXT): {$(VPATH)}internal/ctype.h
+re.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+re.$(OBJEXT): {$(VPATH)}internal/dosish.h
+re.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+re.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+re.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+re.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+re.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+re.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+re.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+re.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+re.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+re.$(OBJEXT): {$(VPATH)}internal/error.h
+re.$(OBJEXT): {$(VPATH)}internal/eval.h
+re.$(OBJEXT): {$(VPATH)}internal/event.h
+re.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+re.$(OBJEXT): {$(VPATH)}internal/gc.h
+re.$(OBJEXT): {$(VPATH)}internal/glob.h
+re.$(OBJEXT): {$(VPATH)}internal/globals.h
+re.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+re.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+re.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+re.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+re.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+re.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+re.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+re.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+re.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+re.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+re.$(OBJEXT): {$(VPATH)}internal/iterator.h
+re.$(OBJEXT): {$(VPATH)}internal/memory.h
+re.$(OBJEXT): {$(VPATH)}internal/method.h
+re.$(OBJEXT): {$(VPATH)}internal/module.h
+re.$(OBJEXT): {$(VPATH)}internal/newobj.h
+re.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+re.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+re.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+re.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+re.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+re.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+re.$(OBJEXT): {$(VPATH)}internal/symbol.h
+re.$(OBJEXT): {$(VPATH)}internal/value.h
+re.$(OBJEXT): {$(VPATH)}internal/value_type.h
+re.$(OBJEXT): {$(VPATH)}internal/variable.h
+re.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+re.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+re.$(OBJEXT): {$(VPATH)}missing.h
+re.$(OBJEXT): {$(VPATH)}onigmo.h
+re.$(OBJEXT): {$(VPATH)}oniguruma.h
+re.$(OBJEXT): {$(VPATH)}re.c
+re.$(OBJEXT): {$(VPATH)}re.h
+re.$(OBJEXT): {$(VPATH)}regenc.h
+re.$(OBJEXT): {$(VPATH)}regex.h
+re.$(OBJEXT): {$(VPATH)}regint.h
+re.$(OBJEXT): {$(VPATH)}shape.h
+re.$(OBJEXT): {$(VPATH)}st.h
+re.$(OBJEXT): {$(VPATH)}subst.h
+re.$(OBJEXT): {$(VPATH)}util.h
+regcomp.$(OBJEXT): $(hdrdir)/ruby.h
+regcomp.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+regcomp.$(OBJEXT): {$(VPATH)}assert.h
+regcomp.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+regcomp.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+regcomp.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+regcomp.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+regcomp.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+regcomp.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+regcomp.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+regcomp.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+regcomp.$(OBJEXT): {$(VPATH)}config.h
+regcomp.$(OBJEXT): {$(VPATH)}defines.h
+regcomp.$(OBJEXT): {$(VPATH)}intern.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/abi.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/assume.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/cast.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/config.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/ctype.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/dosish.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/error.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/eval.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/event.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/gc.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/glob.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/globals.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/iterator.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/memory.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/method.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/module.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/newobj.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/symbol.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/value.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/value_type.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/variable.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+regcomp.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+regcomp.$(OBJEXT): {$(VPATH)}missing.h
+regcomp.$(OBJEXT): {$(VPATH)}onigmo.h
+regcomp.$(OBJEXT): {$(VPATH)}regcomp.c
+regcomp.$(OBJEXT): {$(VPATH)}regenc.h
+regcomp.$(OBJEXT): {$(VPATH)}regint.h
+regcomp.$(OBJEXT): {$(VPATH)}regparse.h
+regcomp.$(OBJEXT): {$(VPATH)}st.h
+regcomp.$(OBJEXT): {$(VPATH)}subst.h
+regenc.$(OBJEXT): $(hdrdir)/ruby.h
+regenc.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+regenc.$(OBJEXT): {$(VPATH)}assert.h
+regenc.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+regenc.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+regenc.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+regenc.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+regenc.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+regenc.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+regenc.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+regenc.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+regenc.$(OBJEXT): {$(VPATH)}config.h
+regenc.$(OBJEXT): {$(VPATH)}defines.h
+regenc.$(OBJEXT): {$(VPATH)}intern.h
+regenc.$(OBJEXT): {$(VPATH)}internal/abi.h
+regenc.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+regenc.$(OBJEXT): {$(VPATH)}internal/assume.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+regenc.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+regenc.$(OBJEXT): {$(VPATH)}internal/cast.h
+regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+regenc.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+regenc.$(OBJEXT): {$(VPATH)}internal/config.h
+regenc.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+regenc.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+regenc.$(OBJEXT): {$(VPATH)}internal/ctype.h
+regenc.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+regenc.$(OBJEXT): {$(VPATH)}internal/dosish.h
+regenc.$(OBJEXT): {$(VPATH)}internal/error.h
+regenc.$(OBJEXT): {$(VPATH)}internal/eval.h
+regenc.$(OBJEXT): {$(VPATH)}internal/event.h
+regenc.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+regenc.$(OBJEXT): {$(VPATH)}internal/gc.h
+regenc.$(OBJEXT): {$(VPATH)}internal/glob.h
+regenc.$(OBJEXT): {$(VPATH)}internal/globals.h
+regenc.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+regenc.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+regenc.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+regenc.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+regenc.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+regenc.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+regenc.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+regenc.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+regenc.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+regenc.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+regenc.$(OBJEXT): {$(VPATH)}internal/iterator.h
+regenc.$(OBJEXT): {$(VPATH)}internal/memory.h
+regenc.$(OBJEXT): {$(VPATH)}internal/method.h
+regenc.$(OBJEXT): {$(VPATH)}internal/module.h
+regenc.$(OBJEXT): {$(VPATH)}internal/newobj.h
+regenc.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+regenc.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+regenc.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+regenc.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+regenc.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+regenc.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+regenc.$(OBJEXT): {$(VPATH)}internal/symbol.h
+regenc.$(OBJEXT): {$(VPATH)}internal/value.h
+regenc.$(OBJEXT): {$(VPATH)}internal/value_type.h
+regenc.$(OBJEXT): {$(VPATH)}internal/variable.h
+regenc.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+regenc.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+regenc.$(OBJEXT): {$(VPATH)}missing.h
+regenc.$(OBJEXT): {$(VPATH)}onigmo.h
+regenc.$(OBJEXT): {$(VPATH)}regenc.c
+regenc.$(OBJEXT): {$(VPATH)}regenc.h
+regenc.$(OBJEXT): {$(VPATH)}regint.h
+regenc.$(OBJEXT): {$(VPATH)}st.h
+regenc.$(OBJEXT): {$(VPATH)}subst.h
+regerror.$(OBJEXT): $(hdrdir)/ruby.h
+regerror.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+regerror.$(OBJEXT): {$(VPATH)}assert.h
+regerror.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+regerror.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+regerror.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+regerror.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+regerror.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+regerror.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+regerror.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+regerror.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+regerror.$(OBJEXT): {$(VPATH)}config.h
+regerror.$(OBJEXT): {$(VPATH)}defines.h
+regerror.$(OBJEXT): {$(VPATH)}intern.h
+regerror.$(OBJEXT): {$(VPATH)}internal/abi.h
+regerror.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+regerror.$(OBJEXT): {$(VPATH)}internal/assume.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+regerror.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+regerror.$(OBJEXT): {$(VPATH)}internal/cast.h
+regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+regerror.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+regerror.$(OBJEXT): {$(VPATH)}internal/config.h
+regerror.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+regerror.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+regerror.$(OBJEXT): {$(VPATH)}internal/ctype.h
+regerror.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+regerror.$(OBJEXT): {$(VPATH)}internal/dosish.h
+regerror.$(OBJEXT): {$(VPATH)}internal/error.h
+regerror.$(OBJEXT): {$(VPATH)}internal/eval.h
+regerror.$(OBJEXT): {$(VPATH)}internal/event.h
+regerror.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+regerror.$(OBJEXT): {$(VPATH)}internal/gc.h
+regerror.$(OBJEXT): {$(VPATH)}internal/glob.h
+regerror.$(OBJEXT): {$(VPATH)}internal/globals.h
+regerror.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+regerror.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+regerror.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+regerror.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+regerror.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+regerror.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+regerror.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+regerror.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+regerror.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+regerror.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+regerror.$(OBJEXT): {$(VPATH)}internal/iterator.h
+regerror.$(OBJEXT): {$(VPATH)}internal/memory.h
+regerror.$(OBJEXT): {$(VPATH)}internal/method.h
+regerror.$(OBJEXT): {$(VPATH)}internal/module.h
+regerror.$(OBJEXT): {$(VPATH)}internal/newobj.h
+regerror.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+regerror.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+regerror.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+regerror.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+regerror.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+regerror.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+regerror.$(OBJEXT): {$(VPATH)}internal/symbol.h
+regerror.$(OBJEXT): {$(VPATH)}internal/value.h
+regerror.$(OBJEXT): {$(VPATH)}internal/value_type.h
+regerror.$(OBJEXT): {$(VPATH)}internal/variable.h
+regerror.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+regerror.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+regerror.$(OBJEXT): {$(VPATH)}missing.h
+regerror.$(OBJEXT): {$(VPATH)}onigmo.h
+regerror.$(OBJEXT): {$(VPATH)}regenc.h
+regerror.$(OBJEXT): {$(VPATH)}regerror.c
+regerror.$(OBJEXT): {$(VPATH)}regint.h
+regerror.$(OBJEXT): {$(VPATH)}st.h
+regerror.$(OBJEXT): {$(VPATH)}subst.h
+regexec.$(OBJEXT): $(hdrdir)/ruby.h
+regexec.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+regexec.$(OBJEXT): {$(VPATH)}assert.h
+regexec.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+regexec.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+regexec.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+regexec.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+regexec.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+regexec.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+regexec.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+regexec.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+regexec.$(OBJEXT): {$(VPATH)}config.h
+regexec.$(OBJEXT): {$(VPATH)}defines.h
+regexec.$(OBJEXT): {$(VPATH)}intern.h
+regexec.$(OBJEXT): {$(VPATH)}internal/abi.h
+regexec.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+regexec.$(OBJEXT): {$(VPATH)}internal/assume.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+regexec.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+regexec.$(OBJEXT): {$(VPATH)}internal/cast.h
+regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+regexec.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+regexec.$(OBJEXT): {$(VPATH)}internal/config.h
+regexec.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+regexec.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+regexec.$(OBJEXT): {$(VPATH)}internal/ctype.h
+regexec.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+regexec.$(OBJEXT): {$(VPATH)}internal/dosish.h
+regexec.$(OBJEXT): {$(VPATH)}internal/error.h
+regexec.$(OBJEXT): {$(VPATH)}internal/eval.h
+regexec.$(OBJEXT): {$(VPATH)}internal/event.h
+regexec.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+regexec.$(OBJEXT): {$(VPATH)}internal/gc.h
+regexec.$(OBJEXT): {$(VPATH)}internal/glob.h
+regexec.$(OBJEXT): {$(VPATH)}internal/globals.h
+regexec.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+regexec.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+regexec.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+regexec.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+regexec.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+regexec.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+regexec.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+regexec.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+regexec.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+regexec.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+regexec.$(OBJEXT): {$(VPATH)}internal/iterator.h
+regexec.$(OBJEXT): {$(VPATH)}internal/memory.h
+regexec.$(OBJEXT): {$(VPATH)}internal/method.h
+regexec.$(OBJEXT): {$(VPATH)}internal/module.h
+regexec.$(OBJEXT): {$(VPATH)}internal/newobj.h
+regexec.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+regexec.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+regexec.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+regexec.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+regexec.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+regexec.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+regexec.$(OBJEXT): {$(VPATH)}internal/symbol.h
+regexec.$(OBJEXT): {$(VPATH)}internal/value.h
+regexec.$(OBJEXT): {$(VPATH)}internal/value_type.h
+regexec.$(OBJEXT): {$(VPATH)}internal/variable.h
+regexec.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+regexec.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+regexec.$(OBJEXT): {$(VPATH)}missing.h
+regexec.$(OBJEXT): {$(VPATH)}onigmo.h
+regexec.$(OBJEXT): {$(VPATH)}regenc.h
+regexec.$(OBJEXT): {$(VPATH)}regexec.c
+regexec.$(OBJEXT): {$(VPATH)}regint.h
+regexec.$(OBJEXT): {$(VPATH)}st.h
+regexec.$(OBJEXT): {$(VPATH)}subst.h
+regparse.$(OBJEXT): $(hdrdir)/ruby.h
+regparse.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+regparse.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+regparse.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+regparse.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+regparse.$(OBJEXT): {$(VPATH)}assert.h
+regparse.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+regparse.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+regparse.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+regparse.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+regparse.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+regparse.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+regparse.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+regparse.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+regparse.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+regparse.$(OBJEXT): {$(VPATH)}config.h
+regparse.$(OBJEXT): {$(VPATH)}defines.h
+regparse.$(OBJEXT): {$(VPATH)}intern.h
+regparse.$(OBJEXT): {$(VPATH)}internal/abi.h
+regparse.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+regparse.$(OBJEXT): {$(VPATH)}internal/assume.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+regparse.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+regparse.$(OBJEXT): {$(VPATH)}internal/cast.h
+regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+regparse.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+regparse.$(OBJEXT): {$(VPATH)}internal/config.h
+regparse.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+regparse.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+regparse.$(OBJEXT): {$(VPATH)}internal/ctype.h
+regparse.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+regparse.$(OBJEXT): {$(VPATH)}internal/dosish.h
+regparse.$(OBJEXT): {$(VPATH)}internal/error.h
+regparse.$(OBJEXT): {$(VPATH)}internal/eval.h
+regparse.$(OBJEXT): {$(VPATH)}internal/event.h
+regparse.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+regparse.$(OBJEXT): {$(VPATH)}internal/gc.h
+regparse.$(OBJEXT): {$(VPATH)}internal/glob.h
+regparse.$(OBJEXT): {$(VPATH)}internal/globals.h
+regparse.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+regparse.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+regparse.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+regparse.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+regparse.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+regparse.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+regparse.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+regparse.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+regparse.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+regparse.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+regparse.$(OBJEXT): {$(VPATH)}internal/iterator.h
+regparse.$(OBJEXT): {$(VPATH)}internal/memory.h
+regparse.$(OBJEXT): {$(VPATH)}internal/method.h
+regparse.$(OBJEXT): {$(VPATH)}internal/module.h
+regparse.$(OBJEXT): {$(VPATH)}internal/newobj.h
+regparse.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+regparse.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+regparse.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+regparse.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+regparse.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+regparse.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+regparse.$(OBJEXT): {$(VPATH)}internal/symbol.h
+regparse.$(OBJEXT): {$(VPATH)}internal/value.h
+regparse.$(OBJEXT): {$(VPATH)}internal/value_type.h
+regparse.$(OBJEXT): {$(VPATH)}internal/variable.h
+regparse.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+regparse.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+regparse.$(OBJEXT): {$(VPATH)}missing.h
+regparse.$(OBJEXT): {$(VPATH)}onigmo.h
+regparse.$(OBJEXT): {$(VPATH)}regenc.h
+regparse.$(OBJEXT): {$(VPATH)}regint.h
+regparse.$(OBJEXT): {$(VPATH)}regparse.c
+regparse.$(OBJEXT): {$(VPATH)}regparse.h
+regparse.$(OBJEXT): {$(VPATH)}st.h
+regparse.$(OBJEXT): {$(VPATH)}subst.h
+regsyntax.$(OBJEXT): $(hdrdir)/ruby.h
+regsyntax.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+regsyntax.$(OBJEXT): {$(VPATH)}assert.h
+regsyntax.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+regsyntax.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+regsyntax.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+regsyntax.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+regsyntax.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+regsyntax.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+regsyntax.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+regsyntax.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+regsyntax.$(OBJEXT): {$(VPATH)}config.h
+regsyntax.$(OBJEXT): {$(VPATH)}defines.h
+regsyntax.$(OBJEXT): {$(VPATH)}intern.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/abi.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/assume.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/cast.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/config.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/ctype.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/dosish.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/error.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/eval.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/event.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/gc.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/glob.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/globals.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/iterator.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/memory.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/method.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/module.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/newobj.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/symbol.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/value.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/value_type.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/variable.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+regsyntax.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+regsyntax.$(OBJEXT): {$(VPATH)}missing.h
+regsyntax.$(OBJEXT): {$(VPATH)}onigmo.h
+regsyntax.$(OBJEXT): {$(VPATH)}regenc.h
+regsyntax.$(OBJEXT): {$(VPATH)}regint.h
+regsyntax.$(OBJEXT): {$(VPATH)}regsyntax.c
+regsyntax.$(OBJEXT): {$(VPATH)}st.h
+regsyntax.$(OBJEXT): {$(VPATH)}subst.h
+ruby-runner.$(OBJEXT): {$(VPATH)}config.h
+ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+ruby-runner.$(OBJEXT): {$(VPATH)}internal/config.h
+ruby-runner.$(OBJEXT): {$(VPATH)}ruby-runner.c
+ruby-runner.$(OBJEXT): {$(VPATH)}ruby-runner.h
+ruby.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+ruby.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+ruby.$(OBJEXT): $(CCAN_DIR)/list/list.h
+ruby.$(OBJEXT): $(CCAN_DIR)/str/str.h
+ruby.$(OBJEXT): $(hdrdir)/ruby.h
+ruby.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+ruby.$(OBJEXT): $(hdrdir)/ruby/version.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/array.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/class.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/cmdlineopt.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/cont.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/error.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/file.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/gc.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/inits.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/io.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/load.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/loadpath.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/missing.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/object.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/parse.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/process.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/serial.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/string.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/variable.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/vm.h
+ruby.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+ruby.$(OBJEXT): {$(VPATH)}assert.h
+ruby.$(OBJEXT): {$(VPATH)}atomic.h
+ruby.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+ruby.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+ruby.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+ruby.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+ruby.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+ruby.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+ruby.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+ruby.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+ruby.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+ruby.$(OBJEXT): {$(VPATH)}config.h
+ruby.$(OBJEXT): {$(VPATH)}constant.h
+ruby.$(OBJEXT): {$(VPATH)}debug_counter.h
+ruby.$(OBJEXT): {$(VPATH)}defines.h
+ruby.$(OBJEXT): {$(VPATH)}dln.h
+ruby.$(OBJEXT): {$(VPATH)}encoding.h
+ruby.$(OBJEXT): {$(VPATH)}eval_intern.h
+ruby.$(OBJEXT): {$(VPATH)}id.h
+ruby.$(OBJEXT): {$(VPATH)}id_table.h
+ruby.$(OBJEXT): {$(VPATH)}intern.h
+ruby.$(OBJEXT): {$(VPATH)}internal.h
+ruby.$(OBJEXT): {$(VPATH)}internal/abi.h
+ruby.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+ruby.$(OBJEXT): {$(VPATH)}internal/assume.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+ruby.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+ruby.$(OBJEXT): {$(VPATH)}internal/cast.h
+ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+ruby.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+ruby.$(OBJEXT): {$(VPATH)}internal/config.h
+ruby.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+ruby.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+ruby.$(OBJEXT): {$(VPATH)}internal/ctype.h
+ruby.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+ruby.$(OBJEXT): {$(VPATH)}internal/dosish.h
+ruby.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+ruby.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+ruby.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+ruby.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+ruby.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+ruby.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+ruby.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+ruby.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+ruby.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+ruby.$(OBJEXT): {$(VPATH)}internal/error.h
+ruby.$(OBJEXT): {$(VPATH)}internal/eval.h
+ruby.$(OBJEXT): {$(VPATH)}internal/event.h
+ruby.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+ruby.$(OBJEXT): {$(VPATH)}internal/gc.h
+ruby.$(OBJEXT): {$(VPATH)}internal/glob.h
+ruby.$(OBJEXT): {$(VPATH)}internal/globals.h
+ruby.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+ruby.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+ruby.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+ruby.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+ruby.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+ruby.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+ruby.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+ruby.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+ruby.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+ruby.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+ruby.$(OBJEXT): {$(VPATH)}internal/iterator.h
+ruby.$(OBJEXT): {$(VPATH)}internal/memory.h
+ruby.$(OBJEXT): {$(VPATH)}internal/method.h
+ruby.$(OBJEXT): {$(VPATH)}internal/module.h
+ruby.$(OBJEXT): {$(VPATH)}internal/newobj.h
+ruby.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+ruby.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+ruby.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+ruby.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+ruby.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+ruby.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+ruby.$(OBJEXT): {$(VPATH)}internal/symbol.h
+ruby.$(OBJEXT): {$(VPATH)}internal/value.h
+ruby.$(OBJEXT): {$(VPATH)}internal/value_type.h
+ruby.$(OBJEXT): {$(VPATH)}internal/variable.h
+ruby.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+ruby.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+ruby.$(OBJEXT): {$(VPATH)}io.h
+ruby.$(OBJEXT): {$(VPATH)}iseq.h
+ruby.$(OBJEXT): {$(VPATH)}method.h
+ruby.$(OBJEXT): {$(VPATH)}missing.h
+ruby.$(OBJEXT): {$(VPATH)}mjit.h
+ruby.$(OBJEXT): {$(VPATH)}node.h
+ruby.$(OBJEXT): {$(VPATH)}onigmo.h
+ruby.$(OBJEXT): {$(VPATH)}oniguruma.h
+ruby.$(OBJEXT): {$(VPATH)}ruby.c
+ruby.$(OBJEXT): {$(VPATH)}ruby_assert.h
+ruby.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+ruby.$(OBJEXT): {$(VPATH)}shape.h
+ruby.$(OBJEXT): {$(VPATH)}st.h
+ruby.$(OBJEXT): {$(VPATH)}subst.h
+ruby.$(OBJEXT): {$(VPATH)}thread.h
+ruby.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+ruby.$(OBJEXT): {$(VPATH)}thread_native.h
+ruby.$(OBJEXT): {$(VPATH)}util.h
+ruby.$(OBJEXT): {$(VPATH)}vm_core.h
+ruby.$(OBJEXT): {$(VPATH)}vm_opts.h
+ruby.$(OBJEXT): {$(VPATH)}yjit.h
+scheduler.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+scheduler.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+scheduler.$(OBJEXT): $(CCAN_DIR)/list/list.h
+scheduler.$(OBJEXT): $(CCAN_DIR)/str/str.h
+scheduler.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+scheduler.$(OBJEXT): $(top_srcdir)/internal/array.h
+scheduler.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+scheduler.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+scheduler.$(OBJEXT): $(top_srcdir)/internal/gc.h
+scheduler.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+scheduler.$(OBJEXT): $(top_srcdir)/internal/serial.h
+scheduler.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+scheduler.$(OBJEXT): $(top_srcdir)/internal/thread.h
+scheduler.$(OBJEXT): $(top_srcdir)/internal/variable.h
+scheduler.$(OBJEXT): $(top_srcdir)/internal/vm.h
+scheduler.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+scheduler.$(OBJEXT): {$(VPATH)}assert.h
+scheduler.$(OBJEXT): {$(VPATH)}atomic.h
+scheduler.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+scheduler.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+scheduler.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+scheduler.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+scheduler.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+scheduler.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+scheduler.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+scheduler.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+scheduler.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+scheduler.$(OBJEXT): {$(VPATH)}config.h
+scheduler.$(OBJEXT): {$(VPATH)}constant.h
+scheduler.$(OBJEXT): {$(VPATH)}defines.h
+scheduler.$(OBJEXT): {$(VPATH)}encoding.h
+scheduler.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
+scheduler.$(OBJEXT): {$(VPATH)}id.h
+scheduler.$(OBJEXT): {$(VPATH)}id_table.h
+scheduler.$(OBJEXT): {$(VPATH)}intern.h
+scheduler.$(OBJEXT): {$(VPATH)}internal.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/abi.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/assume.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/cast.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/config.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/ctype.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/dosish.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/error.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/eval.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/event.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/gc.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/glob.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/globals.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/iterator.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/memory.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/method.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/module.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/newobj.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/symbol.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/value.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/value_type.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/variable.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+scheduler.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+scheduler.$(OBJEXT): {$(VPATH)}io.h
+scheduler.$(OBJEXT): {$(VPATH)}io/buffer.h
+scheduler.$(OBJEXT): {$(VPATH)}method.h
+scheduler.$(OBJEXT): {$(VPATH)}missing.h
+scheduler.$(OBJEXT): {$(VPATH)}node.h
+scheduler.$(OBJEXT): {$(VPATH)}onigmo.h
+scheduler.$(OBJEXT): {$(VPATH)}oniguruma.h
+scheduler.$(OBJEXT): {$(VPATH)}ruby_assert.h
+scheduler.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+scheduler.$(OBJEXT): {$(VPATH)}scheduler.c
+scheduler.$(OBJEXT): {$(VPATH)}shape.h
+scheduler.$(OBJEXT): {$(VPATH)}st.h
+scheduler.$(OBJEXT): {$(VPATH)}subst.h
+scheduler.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+scheduler.$(OBJEXT): {$(VPATH)}thread_native.h
+scheduler.$(OBJEXT): {$(VPATH)}vm_core.h
+scheduler.$(OBJEXT): {$(VPATH)}vm_opts.h
+setproctitle.$(OBJEXT): $(hdrdir)/ruby.h
+setproctitle.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+setproctitle.$(OBJEXT): {$(VPATH)}assert.h
+setproctitle.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+setproctitle.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+setproctitle.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+setproctitle.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+setproctitle.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+setproctitle.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+setproctitle.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+setproctitle.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+setproctitle.$(OBJEXT): {$(VPATH)}config.h
+setproctitle.$(OBJEXT): {$(VPATH)}defines.h
+setproctitle.$(OBJEXT): {$(VPATH)}intern.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/abi.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/assume.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/cast.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/config.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/ctype.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/dosish.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/error.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/eval.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/event.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/gc.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/glob.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/globals.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/iterator.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/memory.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/method.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/module.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/newobj.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/symbol.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/value.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/value_type.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/variable.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+setproctitle.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+setproctitle.$(OBJEXT): {$(VPATH)}missing.h
+setproctitle.$(OBJEXT): {$(VPATH)}setproctitle.c
+setproctitle.$(OBJEXT): {$(VPATH)}st.h
+setproctitle.$(OBJEXT): {$(VPATH)}subst.h
+setproctitle.$(OBJEXT): {$(VPATH)}util.h
+shape.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+shape.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+shape.$(OBJEXT): $(CCAN_DIR)/list/list.h
+shape.$(OBJEXT): $(CCAN_DIR)/str/str.h
+shape.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+shape.$(OBJEXT): $(top_srcdir)/internal/array.h
+shape.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+shape.$(OBJEXT): $(top_srcdir)/internal/class.h
+shape.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+shape.$(OBJEXT): $(top_srcdir)/internal/gc.h
+shape.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+shape.$(OBJEXT): $(top_srcdir)/internal/serial.h
+shape.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+shape.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+shape.$(OBJEXT): $(top_srcdir)/internal/variable.h
+shape.$(OBJEXT): $(top_srcdir)/internal/vm.h
+shape.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+shape.$(OBJEXT): {$(VPATH)}assert.h
+shape.$(OBJEXT): {$(VPATH)}atomic.h
+shape.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+shape.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+shape.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+shape.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+shape.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+shape.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+shape.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+shape.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+shape.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+shape.$(OBJEXT): {$(VPATH)}config.h
+shape.$(OBJEXT): {$(VPATH)}constant.h
+shape.$(OBJEXT): {$(VPATH)}debug_counter.h
+shape.$(OBJEXT): {$(VPATH)}defines.h
+shape.$(OBJEXT): {$(VPATH)}encoding.h
+shape.$(OBJEXT): {$(VPATH)}gc.h
+shape.$(OBJEXT): {$(VPATH)}id.h
+shape.$(OBJEXT): {$(VPATH)}id_table.h
+shape.$(OBJEXT): {$(VPATH)}intern.h
+shape.$(OBJEXT): {$(VPATH)}internal.h
+shape.$(OBJEXT): {$(VPATH)}internal/abi.h
+shape.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+shape.$(OBJEXT): {$(VPATH)}internal/assume.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+shape.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+shape.$(OBJEXT): {$(VPATH)}internal/cast.h
+shape.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+shape.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+shape.$(OBJEXT): {$(VPATH)}internal/config.h
+shape.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+shape.$(OBJEXT): {$(VPATH)}internal/core.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+shape.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+shape.$(OBJEXT): {$(VPATH)}internal/ctype.h
+shape.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+shape.$(OBJEXT): {$(VPATH)}internal/dosish.h
+shape.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+shape.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+shape.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+shape.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+shape.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+shape.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+shape.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+shape.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+shape.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+shape.$(OBJEXT): {$(VPATH)}internal/error.h
+shape.$(OBJEXT): {$(VPATH)}internal/eval.h
+shape.$(OBJEXT): {$(VPATH)}internal/event.h
+shape.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+shape.$(OBJEXT): {$(VPATH)}internal/gc.h
+shape.$(OBJEXT): {$(VPATH)}internal/glob.h
+shape.$(OBJEXT): {$(VPATH)}internal/globals.h
+shape.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+shape.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+shape.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+shape.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+shape.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+shape.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+shape.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+shape.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+shape.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+shape.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+shape.$(OBJEXT): {$(VPATH)}internal/iterator.h
+shape.$(OBJEXT): {$(VPATH)}internal/memory.h
+shape.$(OBJEXT): {$(VPATH)}internal/method.h
+shape.$(OBJEXT): {$(VPATH)}internal/module.h
+shape.$(OBJEXT): {$(VPATH)}internal/newobj.h
+shape.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+shape.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+shape.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+shape.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+shape.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+shape.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+shape.$(OBJEXT): {$(VPATH)}internal/symbol.h
+shape.$(OBJEXT): {$(VPATH)}internal/value.h
+shape.$(OBJEXT): {$(VPATH)}internal/value_type.h
+shape.$(OBJEXT): {$(VPATH)}internal/variable.h
+shape.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+shape.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+shape.$(OBJEXT): {$(VPATH)}method.h
+shape.$(OBJEXT): {$(VPATH)}missing.h
+shape.$(OBJEXT): {$(VPATH)}node.h
+shape.$(OBJEXT): {$(VPATH)}onigmo.h
+shape.$(OBJEXT): {$(VPATH)}oniguruma.h
+shape.$(OBJEXT): {$(VPATH)}ruby_assert.h
+shape.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+shape.$(OBJEXT): {$(VPATH)}shape.c
+shape.$(OBJEXT): {$(VPATH)}shape.h
+shape.$(OBJEXT): {$(VPATH)}st.h
+shape.$(OBJEXT): {$(VPATH)}subst.h
+shape.$(OBJEXT): {$(VPATH)}symbol.h
+shape.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+shape.$(OBJEXT): {$(VPATH)}thread_native.h
+shape.$(OBJEXT): {$(VPATH)}variable.h
+shape.$(OBJEXT): {$(VPATH)}vm_core.h
+shape.$(OBJEXT): {$(VPATH)}vm_debug.h
+shape.$(OBJEXT): {$(VPATH)}vm_opts.h
+shape.$(OBJEXT): {$(VPATH)}vm_sync.h
+signal.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+signal.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+signal.$(OBJEXT): $(CCAN_DIR)/list/list.h
+signal.$(OBJEXT): $(CCAN_DIR)/str/str.h
+signal.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+signal.$(OBJEXT): $(top_srcdir)/internal/array.h
+signal.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+signal.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+signal.$(OBJEXT): $(top_srcdir)/internal/eval.h
+signal.$(OBJEXT): $(top_srcdir)/internal/gc.h
+signal.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+signal.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+signal.$(OBJEXT): $(top_srcdir)/internal/serial.h
+signal.$(OBJEXT): $(top_srcdir)/internal/signal.h
+signal.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+signal.$(OBJEXT): $(top_srcdir)/internal/string.h
+signal.$(OBJEXT): $(top_srcdir)/internal/thread.h
+signal.$(OBJEXT): $(top_srcdir)/internal/variable.h
+signal.$(OBJEXT): $(top_srcdir)/internal/vm.h
+signal.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+signal.$(OBJEXT): {$(VPATH)}assert.h
+signal.$(OBJEXT): {$(VPATH)}atomic.h
+signal.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+signal.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+signal.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+signal.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+signal.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+signal.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+signal.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+signal.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+signal.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+signal.$(OBJEXT): {$(VPATH)}config.h
+signal.$(OBJEXT): {$(VPATH)}constant.h
+signal.$(OBJEXT): {$(VPATH)}debug_counter.h
+signal.$(OBJEXT): {$(VPATH)}defines.h
+signal.$(OBJEXT): {$(VPATH)}encoding.h
+signal.$(OBJEXT): {$(VPATH)}eval_intern.h
+signal.$(OBJEXT): {$(VPATH)}id.h
+signal.$(OBJEXT): {$(VPATH)}id_table.h
+signal.$(OBJEXT): {$(VPATH)}intern.h
+signal.$(OBJEXT): {$(VPATH)}internal.h
+signal.$(OBJEXT): {$(VPATH)}internal/abi.h
+signal.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+signal.$(OBJEXT): {$(VPATH)}internal/assume.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/nonstring.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+signal.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+signal.$(OBJEXT): {$(VPATH)}internal/cast.h
+signal.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+signal.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+signal.$(OBJEXT): {$(VPATH)}internal/config.h
+signal.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+signal.$(OBJEXT): {$(VPATH)}internal/core.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+signal.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+signal.$(OBJEXT): {$(VPATH)}internal/ctype.h
+signal.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+signal.$(OBJEXT): {$(VPATH)}internal/dosish.h
+signal.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+signal.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+signal.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+signal.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+signal.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+signal.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+signal.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+signal.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+signal.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+signal.$(OBJEXT): {$(VPATH)}internal/error.h
+signal.$(OBJEXT): {$(VPATH)}internal/eval.h
+signal.$(OBJEXT): {$(VPATH)}internal/event.h
+signal.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+signal.$(OBJEXT): {$(VPATH)}internal/gc.h
+signal.$(OBJEXT): {$(VPATH)}internal/glob.h
+signal.$(OBJEXT): {$(VPATH)}internal/globals.h
+signal.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+signal.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+signal.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+signal.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+signal.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+signal.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+signal.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+signal.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+signal.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+signal.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+signal.$(OBJEXT): {$(VPATH)}internal/iterator.h
+signal.$(OBJEXT): {$(VPATH)}internal/memory.h
+signal.$(OBJEXT): {$(VPATH)}internal/method.h
+signal.$(OBJEXT): {$(VPATH)}internal/module.h
+signal.$(OBJEXT): {$(VPATH)}internal/newobj.h
+signal.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+signal.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+signal.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+signal.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+signal.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+signal.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+signal.$(OBJEXT): {$(VPATH)}internal/symbol.h
+signal.$(OBJEXT): {$(VPATH)}internal/value.h
+signal.$(OBJEXT): {$(VPATH)}internal/value_type.h
+signal.$(OBJEXT): {$(VPATH)}internal/variable.h
+signal.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+signal.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+signal.$(OBJEXT): {$(VPATH)}method.h
+signal.$(OBJEXT): {$(VPATH)}missing.h
+signal.$(OBJEXT): {$(VPATH)}node.h
+signal.$(OBJEXT): {$(VPATH)}onigmo.h
+signal.$(OBJEXT): {$(VPATH)}oniguruma.h
+signal.$(OBJEXT): {$(VPATH)}ractor.h
+signal.$(OBJEXT): {$(VPATH)}ractor_core.h
+signal.$(OBJEXT): {$(VPATH)}ruby_assert.h
+signal.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+signal.$(OBJEXT): {$(VPATH)}shape.h
+signal.$(OBJEXT): {$(VPATH)}signal.c
+signal.$(OBJEXT): {$(VPATH)}st.h
+signal.$(OBJEXT): {$(VPATH)}subst.h
+signal.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+signal.$(OBJEXT): {$(VPATH)}thread_native.h
+signal.$(OBJEXT): {$(VPATH)}vm_core.h
+signal.$(OBJEXT): {$(VPATH)}vm_debug.h
+signal.$(OBJEXT): {$(VPATH)}vm_opts.h
+sprintf.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/bits.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/class.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/error.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/gc.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/hash.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/object.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/serial.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/string.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/variable.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/vm.h
+sprintf.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+sprintf.$(OBJEXT): {$(VPATH)}assert.h
+sprintf.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+sprintf.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+sprintf.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+sprintf.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+sprintf.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+sprintf.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+sprintf.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+sprintf.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+sprintf.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+sprintf.$(OBJEXT): {$(VPATH)}config.h
+sprintf.$(OBJEXT): {$(VPATH)}constant.h
+sprintf.$(OBJEXT): {$(VPATH)}defines.h
+sprintf.$(OBJEXT): {$(VPATH)}encoding.h
+sprintf.$(OBJEXT): {$(VPATH)}id.h
+sprintf.$(OBJEXT): {$(VPATH)}id_table.h
+sprintf.$(OBJEXT): {$(VPATH)}intern.h
+sprintf.$(OBJEXT): {$(VPATH)}internal.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/abi.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/assume.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/cast.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/config.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/ctype.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/dosish.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/error.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/eval.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/event.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/gc.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/glob.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/globals.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/iterator.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/memory.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/method.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/module.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/newobj.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/symbol.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/value.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/value_type.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/variable.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+sprintf.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+sprintf.$(OBJEXT): {$(VPATH)}missing.h
+sprintf.$(OBJEXT): {$(VPATH)}onigmo.h
+sprintf.$(OBJEXT): {$(VPATH)}oniguruma.h
+sprintf.$(OBJEXT): {$(VPATH)}re.h
+sprintf.$(OBJEXT): {$(VPATH)}regex.h
+sprintf.$(OBJEXT): {$(VPATH)}shape.h
+sprintf.$(OBJEXT): {$(VPATH)}sprintf.c
+sprintf.$(OBJEXT): {$(VPATH)}st.h
+sprintf.$(OBJEXT): {$(VPATH)}subst.h
+sprintf.$(OBJEXT): {$(VPATH)}util.h
+sprintf.$(OBJEXT): {$(VPATH)}vsnprintf.c
+st.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+st.$(OBJEXT): $(top_srcdir)/internal/bits.h
+st.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+st.$(OBJEXT): $(top_srcdir)/internal/hash.h
+st.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+st.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+st.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+st.$(OBJEXT): {$(VPATH)}assert.h
+st.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+st.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+st.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+st.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+st.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+st.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+st.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+st.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+st.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+st.$(OBJEXT): {$(VPATH)}config.h
+st.$(OBJEXT): {$(VPATH)}defines.h
+st.$(OBJEXT): {$(VPATH)}intern.h
+st.$(OBJEXT): {$(VPATH)}internal.h
+st.$(OBJEXT): {$(VPATH)}internal/abi.h
+st.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+st.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+st.$(OBJEXT): {$(VPATH)}internal/assume.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+st.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+st.$(OBJEXT): {$(VPATH)}internal/cast.h
+st.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+st.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+st.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+st.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+st.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+st.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+st.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+st.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+st.$(OBJEXT): {$(VPATH)}internal/config.h
+st.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+st.$(OBJEXT): {$(VPATH)}internal/core.h
+st.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+st.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+st.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+st.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+st.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+st.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+st.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+st.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+st.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+st.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+st.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+st.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+st.$(OBJEXT): {$(VPATH)}internal/ctype.h
+st.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+st.$(OBJEXT): {$(VPATH)}internal/dosish.h
+st.$(OBJEXT): {$(VPATH)}internal/error.h
+st.$(OBJEXT): {$(VPATH)}internal/eval.h
+st.$(OBJEXT): {$(VPATH)}internal/event.h
+st.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+st.$(OBJEXT): {$(VPATH)}internal/gc.h
+st.$(OBJEXT): {$(VPATH)}internal/glob.h
+st.$(OBJEXT): {$(VPATH)}internal/globals.h
+st.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+st.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+st.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+st.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+st.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+st.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+st.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+st.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+st.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+st.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+st.$(OBJEXT): {$(VPATH)}internal/iterator.h
+st.$(OBJEXT): {$(VPATH)}internal/memory.h
+st.$(OBJEXT): {$(VPATH)}internal/method.h
+st.$(OBJEXT): {$(VPATH)}internal/module.h
+st.$(OBJEXT): {$(VPATH)}internal/newobj.h
+st.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+st.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+st.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+st.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+st.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+st.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+st.$(OBJEXT): {$(VPATH)}internal/symbol.h
+st.$(OBJEXT): {$(VPATH)}internal/value.h
+st.$(OBJEXT): {$(VPATH)}internal/value_type.h
+st.$(OBJEXT): {$(VPATH)}internal/variable.h
+st.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+st.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+st.$(OBJEXT): {$(VPATH)}missing.h
+st.$(OBJEXT): {$(VPATH)}ruby_assert.h
+st.$(OBJEXT): {$(VPATH)}st.c
+st.$(OBJEXT): {$(VPATH)}st.h
+st.$(OBJEXT): {$(VPATH)}subst.h
+strftime.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+strftime.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+strftime.$(OBJEXT): $(top_srcdir)/internal/encoding.h
+strftime.$(OBJEXT): $(top_srcdir)/internal/serial.h
+strftime.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+strftime.$(OBJEXT): $(top_srcdir)/internal/string.h
+strftime.$(OBJEXT): $(top_srcdir)/internal/vm.h
+strftime.$(OBJEXT): {$(VPATH)}assert.h
+strftime.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+strftime.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+strftime.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+strftime.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+strftime.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+strftime.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+strftime.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+strftime.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+strftime.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+strftime.$(OBJEXT): {$(VPATH)}config.h
+strftime.$(OBJEXT): {$(VPATH)}defines.h
+strftime.$(OBJEXT): {$(VPATH)}encoding.h
+strftime.$(OBJEXT): {$(VPATH)}intern.h
+strftime.$(OBJEXT): {$(VPATH)}internal.h
+strftime.$(OBJEXT): {$(VPATH)}internal/abi.h
+strftime.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+strftime.$(OBJEXT): {$(VPATH)}internal/assume.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+strftime.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+strftime.$(OBJEXT): {$(VPATH)}internal/cast.h
+strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+strftime.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+strftime.$(OBJEXT): {$(VPATH)}internal/config.h
+strftime.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+strftime.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+strftime.$(OBJEXT): {$(VPATH)}internal/ctype.h
+strftime.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+strftime.$(OBJEXT): {$(VPATH)}internal/dosish.h
+strftime.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+strftime.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+strftime.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+strftime.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+strftime.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+strftime.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+strftime.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+strftime.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+strftime.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+strftime.$(OBJEXT): {$(VPATH)}internal/error.h
+strftime.$(OBJEXT): {$(VPATH)}internal/eval.h
+strftime.$(OBJEXT): {$(VPATH)}internal/event.h
+strftime.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+strftime.$(OBJEXT): {$(VPATH)}internal/gc.h
+strftime.$(OBJEXT): {$(VPATH)}internal/glob.h
+strftime.$(OBJEXT): {$(VPATH)}internal/globals.h
+strftime.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+strftime.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+strftime.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+strftime.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+strftime.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+strftime.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+strftime.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+strftime.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+strftime.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+strftime.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+strftime.$(OBJEXT): {$(VPATH)}internal/iterator.h
+strftime.$(OBJEXT): {$(VPATH)}internal/memory.h
+strftime.$(OBJEXT): {$(VPATH)}internal/method.h
+strftime.$(OBJEXT): {$(VPATH)}internal/module.h
+strftime.$(OBJEXT): {$(VPATH)}internal/newobj.h
+strftime.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+strftime.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+strftime.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+strftime.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+strftime.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+strftime.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+strftime.$(OBJEXT): {$(VPATH)}internal/symbol.h
+strftime.$(OBJEXT): {$(VPATH)}internal/value.h
+strftime.$(OBJEXT): {$(VPATH)}internal/value_type.h
+strftime.$(OBJEXT): {$(VPATH)}internal/variable.h
+strftime.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+strftime.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+strftime.$(OBJEXT): {$(VPATH)}missing.h
+strftime.$(OBJEXT): {$(VPATH)}onigmo.h
+strftime.$(OBJEXT): {$(VPATH)}oniguruma.h
+strftime.$(OBJEXT): {$(VPATH)}st.h
+strftime.$(OBJEXT): {$(VPATH)}strftime.c
+strftime.$(OBJEXT): {$(VPATH)}subst.h
+strftime.$(OBJEXT): {$(VPATH)}timev.h
+strftime.$(OBJEXT): {$(VPATH)}util.h
+string.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+string.$(OBJEXT): $(top_srcdir)/internal/array.h
+string.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+string.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+string.$(OBJEXT): $(top_srcdir)/internal/bits.h
+string.$(OBJEXT): $(top_srcdir)/internal/class.h
+string.$(OBJEXT): $(top_srcdir)/internal/compar.h
+string.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+string.$(OBJEXT): $(top_srcdir)/internal/encoding.h
+string.$(OBJEXT): $(top_srcdir)/internal/error.h
+string.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+string.$(OBJEXT): $(top_srcdir)/internal/gc.h
+string.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+string.$(OBJEXT): $(top_srcdir)/internal/object.h
+string.$(OBJEXT): $(top_srcdir)/internal/proc.h
+string.$(OBJEXT): $(top_srcdir)/internal/re.h
+string.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+string.$(OBJEXT): $(top_srcdir)/internal/serial.h
+string.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+string.$(OBJEXT): $(top_srcdir)/internal/string.h
+string.$(OBJEXT): $(top_srcdir)/internal/transcode.h
+string.$(OBJEXT): $(top_srcdir)/internal/variable.h
+string.$(OBJEXT): $(top_srcdir)/internal/vm.h
+string.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+string.$(OBJEXT): {$(VPATH)}assert.h
+string.$(OBJEXT): {$(VPATH)}atomic.h
+string.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+string.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+string.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+string.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+string.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+string.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+string.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+string.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+string.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+string.$(OBJEXT): {$(VPATH)}config.h
+string.$(OBJEXT): {$(VPATH)}constant.h
+string.$(OBJEXT): {$(VPATH)}debug_counter.h
+string.$(OBJEXT): {$(VPATH)}defines.h
+string.$(OBJEXT): {$(VPATH)}encindex.h
+string.$(OBJEXT): {$(VPATH)}encoding.h
+string.$(OBJEXT): {$(VPATH)}gc.h
+string.$(OBJEXT): {$(VPATH)}id.h
+string.$(OBJEXT): {$(VPATH)}id_table.h
+string.$(OBJEXT): {$(VPATH)}intern.h
+string.$(OBJEXT): {$(VPATH)}internal.h
+string.$(OBJEXT): {$(VPATH)}internal/abi.h
+string.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+string.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+string.$(OBJEXT): {$(VPATH)}internal/assume.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/nonstring.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+string.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+string.$(OBJEXT): {$(VPATH)}internal/cast.h
+string.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+string.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+string.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+string.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+string.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+string.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+string.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+string.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+string.$(OBJEXT): {$(VPATH)}internal/config.h
+string.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+string.$(OBJEXT): {$(VPATH)}internal/core.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h
+string.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+string.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+string.$(OBJEXT): {$(VPATH)}internal/ctype.h
+string.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+string.$(OBJEXT): {$(VPATH)}internal/dosish.h
+string.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+string.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+string.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+string.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+string.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+string.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+string.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+string.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+string.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+string.$(OBJEXT): {$(VPATH)}internal/error.h
+string.$(OBJEXT): {$(VPATH)}internal/eval.h
+string.$(OBJEXT): {$(VPATH)}internal/event.h
+string.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+string.$(OBJEXT): {$(VPATH)}internal/gc.h
+string.$(OBJEXT): {$(VPATH)}internal/glob.h
+string.$(OBJEXT): {$(VPATH)}internal/globals.h
+string.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+string.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+string.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+string.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+string.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+string.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+string.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+string.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+string.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+string.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+string.$(OBJEXT): {$(VPATH)}internal/iterator.h
+string.$(OBJEXT): {$(VPATH)}internal/memory.h
+string.$(OBJEXT): {$(VPATH)}internal/method.h
+string.$(OBJEXT): {$(VPATH)}internal/module.h
+string.$(OBJEXT): {$(VPATH)}internal/newobj.h
+string.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+string.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+string.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+string.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+string.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+string.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+string.$(OBJEXT): {$(VPATH)}internal/symbol.h
+string.$(OBJEXT): {$(VPATH)}internal/value.h
+string.$(OBJEXT): {$(VPATH)}internal/value_type.h
+string.$(OBJEXT): {$(VPATH)}internal/variable.h
+string.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+string.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+string.$(OBJEXT): {$(VPATH)}missing.h
+string.$(OBJEXT): {$(VPATH)}onigmo.h
+string.$(OBJEXT): {$(VPATH)}oniguruma.h
+string.$(OBJEXT): {$(VPATH)}probes.dmyh
+string.$(OBJEXT): {$(VPATH)}probes.h
+string.$(OBJEXT): {$(VPATH)}re.h
+string.$(OBJEXT): {$(VPATH)}regex.h
+string.$(OBJEXT): {$(VPATH)}ruby_assert.h
+string.$(OBJEXT): {$(VPATH)}shape.h
+string.$(OBJEXT): {$(VPATH)}st.h
+string.$(OBJEXT): {$(VPATH)}string.c
+string.$(OBJEXT): {$(VPATH)}subst.h
+string.$(OBJEXT): {$(VPATH)}thread_native.h
+string.$(OBJEXT): {$(VPATH)}util.h
+string.$(OBJEXT): {$(VPATH)}vm_debug.h
+string.$(OBJEXT): {$(VPATH)}vm_sync.h
+strlcat.$(OBJEXT): {$(VPATH)}config.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/config.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+strlcat.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+strlcat.$(OBJEXT): {$(VPATH)}missing.h
+strlcat.$(OBJEXT): {$(VPATH)}strlcat.c
+strlcpy.$(OBJEXT): {$(VPATH)}config.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/config.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+strlcpy.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+strlcpy.$(OBJEXT): {$(VPATH)}missing.h
+strlcpy.$(OBJEXT): {$(VPATH)}strlcpy.c
+struct.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+struct.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+struct.$(OBJEXT): $(CCAN_DIR)/list/list.h
+struct.$(OBJEXT): $(CCAN_DIR)/str/str.h
+struct.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+struct.$(OBJEXT): $(top_srcdir)/internal/array.h
+struct.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+struct.$(OBJEXT): $(top_srcdir)/internal/class.h
+struct.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+struct.$(OBJEXT): $(top_srcdir)/internal/error.h
+struct.$(OBJEXT): $(top_srcdir)/internal/gc.h
+struct.$(OBJEXT): $(top_srcdir)/internal/hash.h
+struct.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+struct.$(OBJEXT): $(top_srcdir)/internal/object.h
+struct.$(OBJEXT): $(top_srcdir)/internal/proc.h
+struct.$(OBJEXT): $(top_srcdir)/internal/serial.h
+struct.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+struct.$(OBJEXT): $(top_srcdir)/internal/string.h
+struct.$(OBJEXT): $(top_srcdir)/internal/struct.h
+struct.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+struct.$(OBJEXT): $(top_srcdir)/internal/variable.h
+struct.$(OBJEXT): $(top_srcdir)/internal/vm.h
+struct.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+struct.$(OBJEXT): {$(VPATH)}assert.h
+struct.$(OBJEXT): {$(VPATH)}atomic.h
+struct.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+struct.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+struct.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+struct.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+struct.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+struct.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+struct.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+struct.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+struct.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+struct.$(OBJEXT): {$(VPATH)}builtin.h
+struct.$(OBJEXT): {$(VPATH)}config.h
+struct.$(OBJEXT): {$(VPATH)}constant.h
+struct.$(OBJEXT): {$(VPATH)}defines.h
+struct.$(OBJEXT): {$(VPATH)}encoding.h
+struct.$(OBJEXT): {$(VPATH)}id.h
+struct.$(OBJEXT): {$(VPATH)}id_table.h
+struct.$(OBJEXT): {$(VPATH)}intern.h
+struct.$(OBJEXT): {$(VPATH)}internal.h
+struct.$(OBJEXT): {$(VPATH)}internal/abi.h
+struct.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+struct.$(OBJEXT): {$(VPATH)}internal/assume.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+struct.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+struct.$(OBJEXT): {$(VPATH)}internal/cast.h
+struct.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+struct.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+struct.$(OBJEXT): {$(VPATH)}internal/config.h
+struct.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+struct.$(OBJEXT): {$(VPATH)}internal/core.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+struct.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+struct.$(OBJEXT): {$(VPATH)}internal/ctype.h
+struct.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+struct.$(OBJEXT): {$(VPATH)}internal/dosish.h
+struct.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+struct.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+struct.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+struct.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+struct.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+struct.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+struct.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+struct.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+struct.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+struct.$(OBJEXT): {$(VPATH)}internal/error.h
+struct.$(OBJEXT): {$(VPATH)}internal/eval.h
+struct.$(OBJEXT): {$(VPATH)}internal/event.h
+struct.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+struct.$(OBJEXT): {$(VPATH)}internal/gc.h
+struct.$(OBJEXT): {$(VPATH)}internal/glob.h
+struct.$(OBJEXT): {$(VPATH)}internal/globals.h
+struct.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+struct.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+struct.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+struct.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+struct.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+struct.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+struct.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+struct.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+struct.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+struct.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+struct.$(OBJEXT): {$(VPATH)}internal/iterator.h
+struct.$(OBJEXT): {$(VPATH)}internal/memory.h
+struct.$(OBJEXT): {$(VPATH)}internal/method.h
+struct.$(OBJEXT): {$(VPATH)}internal/module.h
+struct.$(OBJEXT): {$(VPATH)}internal/newobj.h
+struct.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+struct.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+struct.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+struct.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+struct.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+struct.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+struct.$(OBJEXT): {$(VPATH)}internal/symbol.h
+struct.$(OBJEXT): {$(VPATH)}internal/value.h
+struct.$(OBJEXT): {$(VPATH)}internal/value_type.h
+struct.$(OBJEXT): {$(VPATH)}internal/variable.h
+struct.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+struct.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+struct.$(OBJEXT): {$(VPATH)}method.h
+struct.$(OBJEXT): {$(VPATH)}missing.h
+struct.$(OBJEXT): {$(VPATH)}node.h
+struct.$(OBJEXT): {$(VPATH)}onigmo.h
+struct.$(OBJEXT): {$(VPATH)}oniguruma.h
+struct.$(OBJEXT): {$(VPATH)}ruby_assert.h
+struct.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+struct.$(OBJEXT): {$(VPATH)}shape.h
+struct.$(OBJEXT): {$(VPATH)}st.h
+struct.$(OBJEXT): {$(VPATH)}struct.c
+struct.$(OBJEXT): {$(VPATH)}subst.h
+struct.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+struct.$(OBJEXT): {$(VPATH)}thread_native.h
+struct.$(OBJEXT): {$(VPATH)}transient_heap.h
+struct.$(OBJEXT): {$(VPATH)}vm_core.h
+struct.$(OBJEXT): {$(VPATH)}vm_opts.h
+symbol.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/class.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/error.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/gc.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/hash.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/object.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/serial.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/string.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/variable.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/vm.h
+symbol.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+symbol.$(OBJEXT): {$(VPATH)}assert.h
+symbol.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+symbol.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+symbol.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+symbol.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+symbol.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+symbol.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+symbol.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+symbol.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+symbol.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+symbol.$(OBJEXT): {$(VPATH)}builtin.h
+symbol.$(OBJEXT): {$(VPATH)}config.h
+symbol.$(OBJEXT): {$(VPATH)}constant.h
+symbol.$(OBJEXT): {$(VPATH)}debug_counter.h
+symbol.$(OBJEXT): {$(VPATH)}defines.h
+symbol.$(OBJEXT): {$(VPATH)}encoding.h
+symbol.$(OBJEXT): {$(VPATH)}gc.h
+symbol.$(OBJEXT): {$(VPATH)}id.c
+symbol.$(OBJEXT): {$(VPATH)}id.h
+symbol.$(OBJEXT): {$(VPATH)}id_table.c
+symbol.$(OBJEXT): {$(VPATH)}id_table.h
+symbol.$(OBJEXT): {$(VPATH)}intern.h
+symbol.$(OBJEXT): {$(VPATH)}internal.h
+symbol.$(OBJEXT): {$(VPATH)}internal/abi.h
+symbol.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+symbol.$(OBJEXT): {$(VPATH)}internal/assume.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/nonstring.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+symbol.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+symbol.$(OBJEXT): {$(VPATH)}internal/cast.h
+symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+symbol.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+symbol.$(OBJEXT): {$(VPATH)}internal/config.h
+symbol.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+symbol.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+symbol.$(OBJEXT): {$(VPATH)}internal/ctype.h
+symbol.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+symbol.$(OBJEXT): {$(VPATH)}internal/dosish.h
+symbol.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+symbol.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+symbol.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+symbol.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+symbol.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+symbol.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+symbol.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+symbol.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+symbol.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+symbol.$(OBJEXT): {$(VPATH)}internal/error.h
+symbol.$(OBJEXT): {$(VPATH)}internal/eval.h
+symbol.$(OBJEXT): {$(VPATH)}internal/event.h
+symbol.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+symbol.$(OBJEXT): {$(VPATH)}internal/gc.h
+symbol.$(OBJEXT): {$(VPATH)}internal/glob.h
+symbol.$(OBJEXT): {$(VPATH)}internal/globals.h
+symbol.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+symbol.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+symbol.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+symbol.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+symbol.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+symbol.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+symbol.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+symbol.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+symbol.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+symbol.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+symbol.$(OBJEXT): {$(VPATH)}internal/iterator.h
+symbol.$(OBJEXT): {$(VPATH)}internal/memory.h
+symbol.$(OBJEXT): {$(VPATH)}internal/method.h
+symbol.$(OBJEXT): {$(VPATH)}internal/module.h
+symbol.$(OBJEXT): {$(VPATH)}internal/newobj.h
+symbol.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+symbol.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+symbol.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+symbol.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+symbol.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+symbol.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+symbol.$(OBJEXT): {$(VPATH)}internal/symbol.h
+symbol.$(OBJEXT): {$(VPATH)}internal/value.h
+symbol.$(OBJEXT): {$(VPATH)}internal/value_type.h
+symbol.$(OBJEXT): {$(VPATH)}internal/variable.h
+symbol.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+symbol.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+symbol.$(OBJEXT): {$(VPATH)}missing.h
+symbol.$(OBJEXT): {$(VPATH)}onigmo.h
+symbol.$(OBJEXT): {$(VPATH)}oniguruma.h
+symbol.$(OBJEXT): {$(VPATH)}probes.dmyh
+symbol.$(OBJEXT): {$(VPATH)}probes.h
+symbol.$(OBJEXT): {$(VPATH)}ruby_assert.h
+symbol.$(OBJEXT): {$(VPATH)}shape.h
+symbol.$(OBJEXT): {$(VPATH)}st.h
+symbol.$(OBJEXT): {$(VPATH)}subst.h
+symbol.$(OBJEXT): {$(VPATH)}symbol.c
+symbol.$(OBJEXT): {$(VPATH)}symbol.h
+symbol.$(OBJEXT): {$(VPATH)}symbol.rb
+symbol.$(OBJEXT): {$(VPATH)}symbol.rbinc
+symbol.$(OBJEXT): {$(VPATH)}vm_debug.h
+symbol.$(OBJEXT): {$(VPATH)}vm_sync.h
+thread.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+thread.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+thread.$(OBJEXT): $(CCAN_DIR)/list/list.h
+thread.$(OBJEXT): $(CCAN_DIR)/str/str.h
+thread.$(OBJEXT): $(hdrdir)/ruby.h
+thread.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+thread.$(OBJEXT): $(top_srcdir)/internal/array.h
+thread.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+thread.$(OBJEXT): $(top_srcdir)/internal/bits.h
+thread.$(OBJEXT): $(top_srcdir)/internal/class.h
+thread.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+thread.$(OBJEXT): $(top_srcdir)/internal/cont.h
+thread.$(OBJEXT): $(top_srcdir)/internal/error.h
+thread.$(OBJEXT): $(top_srcdir)/internal/gc.h
+thread.$(OBJEXT): $(top_srcdir)/internal/hash.h
+thread.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+thread.$(OBJEXT): $(top_srcdir)/internal/io.h
+thread.$(OBJEXT): $(top_srcdir)/internal/object.h
+thread.$(OBJEXT): $(top_srcdir)/internal/proc.h
+thread.$(OBJEXT): $(top_srcdir)/internal/serial.h
+thread.$(OBJEXT): $(top_srcdir)/internal/signal.h
+thread.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+thread.$(OBJEXT): $(top_srcdir)/internal/string.h
+thread.$(OBJEXT): $(top_srcdir)/internal/thread.h
+thread.$(OBJEXT): $(top_srcdir)/internal/time.h
+thread.$(OBJEXT): $(top_srcdir)/internal/variable.h
+thread.$(OBJEXT): $(top_srcdir)/internal/vm.h
+thread.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+thread.$(OBJEXT): {$(VPATH)}assert.h
+thread.$(OBJEXT): {$(VPATH)}atomic.h
+thread.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+thread.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+thread.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+thread.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+thread.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+thread.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+thread.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+thread.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+thread.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+thread.$(OBJEXT): {$(VPATH)}builtin.h
+thread.$(OBJEXT): {$(VPATH)}config.h
+thread.$(OBJEXT): {$(VPATH)}constant.h
+thread.$(OBJEXT): {$(VPATH)}debug.h
+thread.$(OBJEXT): {$(VPATH)}debug_counter.h
+thread.$(OBJEXT): {$(VPATH)}defines.h
+thread.$(OBJEXT): {$(VPATH)}encoding.h
+thread.$(OBJEXT): {$(VPATH)}eval_intern.h
+thread.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
+thread.$(OBJEXT): {$(VPATH)}gc.h
+thread.$(OBJEXT): {$(VPATH)}hrtime.h
+thread.$(OBJEXT): {$(VPATH)}id.h
+thread.$(OBJEXT): {$(VPATH)}id_table.h
+thread.$(OBJEXT): {$(VPATH)}intern.h
+thread.$(OBJEXT): {$(VPATH)}internal.h
+thread.$(OBJEXT): {$(VPATH)}internal/abi.h
+thread.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+thread.$(OBJEXT): {$(VPATH)}internal/assume.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+thread.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+thread.$(OBJEXT): {$(VPATH)}internal/cast.h
+thread.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+thread.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+thread.$(OBJEXT): {$(VPATH)}internal/config.h
+thread.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+thread.$(OBJEXT): {$(VPATH)}internal/core.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+thread.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+thread.$(OBJEXT): {$(VPATH)}internal/ctype.h
+thread.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+thread.$(OBJEXT): {$(VPATH)}internal/dosish.h
+thread.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+thread.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+thread.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+thread.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+thread.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+thread.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+thread.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+thread.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+thread.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+thread.$(OBJEXT): {$(VPATH)}internal/error.h
+thread.$(OBJEXT): {$(VPATH)}internal/eval.h
+thread.$(OBJEXT): {$(VPATH)}internal/event.h
+thread.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+thread.$(OBJEXT): {$(VPATH)}internal/gc.h
+thread.$(OBJEXT): {$(VPATH)}internal/glob.h
+thread.$(OBJEXT): {$(VPATH)}internal/globals.h
+thread.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+thread.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+thread.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+thread.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+thread.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+thread.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+thread.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+thread.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+thread.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+thread.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+thread.$(OBJEXT): {$(VPATH)}internal/iterator.h
+thread.$(OBJEXT): {$(VPATH)}internal/memory.h
+thread.$(OBJEXT): {$(VPATH)}internal/method.h
+thread.$(OBJEXT): {$(VPATH)}internal/module.h
+thread.$(OBJEXT): {$(VPATH)}internal/newobj.h
+thread.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+thread.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+thread.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+thread.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+thread.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+thread.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+thread.$(OBJEXT): {$(VPATH)}internal/symbol.h
+thread.$(OBJEXT): {$(VPATH)}internal/value.h
+thread.$(OBJEXT): {$(VPATH)}internal/value_type.h
+thread.$(OBJEXT): {$(VPATH)}internal/variable.h
+thread.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+thread.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+thread.$(OBJEXT): {$(VPATH)}io.h
+thread.$(OBJEXT): {$(VPATH)}iseq.h
+thread.$(OBJEXT): {$(VPATH)}method.h
+thread.$(OBJEXT): {$(VPATH)}missing.h
+thread.$(OBJEXT): {$(VPATH)}mjit.h
+thread.$(OBJEXT): {$(VPATH)}node.h
+thread.$(OBJEXT): {$(VPATH)}onigmo.h
+thread.$(OBJEXT): {$(VPATH)}oniguruma.h
+thread.$(OBJEXT): {$(VPATH)}ractor.h
+thread.$(OBJEXT): {$(VPATH)}ractor_core.h
+thread.$(OBJEXT): {$(VPATH)}ruby_assert.h
+thread.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+thread.$(OBJEXT): {$(VPATH)}shape.h
+thread.$(OBJEXT): {$(VPATH)}st.h
+thread.$(OBJEXT): {$(VPATH)}subst.h
+thread.$(OBJEXT): {$(VPATH)}thread.c
+thread.$(OBJEXT): {$(VPATH)}thread.h
+thread.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).c
+thread.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+thread.$(OBJEXT): {$(VPATH)}thread_native.h
+thread.$(OBJEXT): {$(VPATH)}thread_sync.c
+thread.$(OBJEXT): {$(VPATH)}thread_sync.rbinc
+thread.$(OBJEXT): {$(VPATH)}timev.h
+thread.$(OBJEXT): {$(VPATH)}vm_core.h
+thread.$(OBJEXT): {$(VPATH)}vm_debug.h
+thread.$(OBJEXT): {$(VPATH)}vm_opts.h
+thread.$(OBJEXT): {$(VPATH)}vm_sync.h
+time.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+time.$(OBJEXT): $(top_srcdir)/internal/array.h
+time.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+time.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+time.$(OBJEXT): $(top_srcdir)/internal/bits.h
+time.$(OBJEXT): $(top_srcdir)/internal/compar.h
+time.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+time.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+time.$(OBJEXT): $(top_srcdir)/internal/gc.h
+time.$(OBJEXT): $(top_srcdir)/internal/hash.h
+time.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+time.$(OBJEXT): $(top_srcdir)/internal/rational.h
+time.$(OBJEXT): $(top_srcdir)/internal/serial.h
+time.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+time.$(OBJEXT): $(top_srcdir)/internal/string.h
+time.$(OBJEXT): $(top_srcdir)/internal/time.h
+time.$(OBJEXT): $(top_srcdir)/internal/variable.h
+time.$(OBJEXT): $(top_srcdir)/internal/vm.h
+time.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+time.$(OBJEXT): {$(VPATH)}assert.h
+time.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+time.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+time.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+time.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+time.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+time.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+time.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+time.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+time.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+time.$(OBJEXT): {$(VPATH)}builtin.h
+time.$(OBJEXT): {$(VPATH)}config.h
+time.$(OBJEXT): {$(VPATH)}constant.h
+time.$(OBJEXT): {$(VPATH)}defines.h
+time.$(OBJEXT): {$(VPATH)}encoding.h
+time.$(OBJEXT): {$(VPATH)}id.h
+time.$(OBJEXT): {$(VPATH)}id_table.h
+time.$(OBJEXT): {$(VPATH)}intern.h
+time.$(OBJEXT): {$(VPATH)}internal.h
+time.$(OBJEXT): {$(VPATH)}internal/abi.h
+time.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+time.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+time.$(OBJEXT): {$(VPATH)}internal/assume.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+time.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+time.$(OBJEXT): {$(VPATH)}internal/cast.h
+time.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+time.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+time.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+time.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+time.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+time.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+time.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+time.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+time.$(OBJEXT): {$(VPATH)}internal/config.h
+time.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+time.$(OBJEXT): {$(VPATH)}internal/core.h
+time.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+time.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+time.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+time.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+time.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+time.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+time.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+time.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+time.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+time.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+time.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+time.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+time.$(OBJEXT): {$(VPATH)}internal/ctype.h
+time.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+time.$(OBJEXT): {$(VPATH)}internal/dosish.h
+time.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+time.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+time.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+time.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+time.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+time.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+time.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+time.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+time.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+time.$(OBJEXT): {$(VPATH)}internal/error.h
+time.$(OBJEXT): {$(VPATH)}internal/eval.h
+time.$(OBJEXT): {$(VPATH)}internal/event.h
+time.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+time.$(OBJEXT): {$(VPATH)}internal/gc.h
+time.$(OBJEXT): {$(VPATH)}internal/glob.h
+time.$(OBJEXT): {$(VPATH)}internal/globals.h
+time.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+time.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+time.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+time.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+time.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+time.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+time.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+time.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+time.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+time.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+time.$(OBJEXT): {$(VPATH)}internal/iterator.h
+time.$(OBJEXT): {$(VPATH)}internal/memory.h
+time.$(OBJEXT): {$(VPATH)}internal/method.h
+time.$(OBJEXT): {$(VPATH)}internal/module.h
+time.$(OBJEXT): {$(VPATH)}internal/newobj.h
+time.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+time.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+time.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+time.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+time.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+time.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+time.$(OBJEXT): {$(VPATH)}internal/symbol.h
+time.$(OBJEXT): {$(VPATH)}internal/value.h
+time.$(OBJEXT): {$(VPATH)}internal/value_type.h
+time.$(OBJEXT): {$(VPATH)}internal/variable.h
+time.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+time.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+time.$(OBJEXT): {$(VPATH)}missing.h
+time.$(OBJEXT): {$(VPATH)}onigmo.h
+time.$(OBJEXT): {$(VPATH)}oniguruma.h
+time.$(OBJEXT): {$(VPATH)}ruby_assert.h
+time.$(OBJEXT): {$(VPATH)}shape.h
+time.$(OBJEXT): {$(VPATH)}st.h
+time.$(OBJEXT): {$(VPATH)}subst.h
+time.$(OBJEXT): {$(VPATH)}time.c
+time.$(OBJEXT): {$(VPATH)}timev.h
+time.$(OBJEXT): {$(VPATH)}timev.rbinc
+transcode.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/array.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/class.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/gc.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/inits.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/object.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/serial.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/string.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/transcode.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/variable.h
+transcode.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+transcode.$(OBJEXT): {$(VPATH)}assert.h
+transcode.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+transcode.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+transcode.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+transcode.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+transcode.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+transcode.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+transcode.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+transcode.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+transcode.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+transcode.$(OBJEXT): {$(VPATH)}config.h
+transcode.$(OBJEXT): {$(VPATH)}constant.h
+transcode.$(OBJEXT): {$(VPATH)}defines.h
+transcode.$(OBJEXT): {$(VPATH)}encoding.h
+transcode.$(OBJEXT): {$(VPATH)}id.h
+transcode.$(OBJEXT): {$(VPATH)}id_table.h
+transcode.$(OBJEXT): {$(VPATH)}intern.h
+transcode.$(OBJEXT): {$(VPATH)}internal.h
+transcode.$(OBJEXT): {$(VPATH)}internal/abi.h
+transcode.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+transcode.$(OBJEXT): {$(VPATH)}internal/assume.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+transcode.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+transcode.$(OBJEXT): {$(VPATH)}internal/cast.h
+transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+transcode.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+transcode.$(OBJEXT): {$(VPATH)}internal/config.h
+transcode.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+transcode.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+transcode.$(OBJEXT): {$(VPATH)}internal/ctype.h
+transcode.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+transcode.$(OBJEXT): {$(VPATH)}internal/dosish.h
+transcode.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+transcode.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+transcode.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+transcode.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+transcode.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+transcode.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+transcode.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+transcode.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+transcode.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+transcode.$(OBJEXT): {$(VPATH)}internal/error.h
+transcode.$(OBJEXT): {$(VPATH)}internal/eval.h
+transcode.$(OBJEXT): {$(VPATH)}internal/event.h
+transcode.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+transcode.$(OBJEXT): {$(VPATH)}internal/gc.h
+transcode.$(OBJEXT): {$(VPATH)}internal/glob.h
+transcode.$(OBJEXT): {$(VPATH)}internal/globals.h
+transcode.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+transcode.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+transcode.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+transcode.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+transcode.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+transcode.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+transcode.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+transcode.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+transcode.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+transcode.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+transcode.$(OBJEXT): {$(VPATH)}internal/iterator.h
+transcode.$(OBJEXT): {$(VPATH)}internal/memory.h
+transcode.$(OBJEXT): {$(VPATH)}internal/method.h
+transcode.$(OBJEXT): {$(VPATH)}internal/module.h
+transcode.$(OBJEXT): {$(VPATH)}internal/newobj.h
+transcode.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+transcode.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+transcode.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+transcode.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+transcode.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+transcode.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+transcode.$(OBJEXT): {$(VPATH)}internal/symbol.h
+transcode.$(OBJEXT): {$(VPATH)}internal/value.h
+transcode.$(OBJEXT): {$(VPATH)}internal/value_type.h
+transcode.$(OBJEXT): {$(VPATH)}internal/variable.h
+transcode.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+transcode.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+transcode.$(OBJEXT): {$(VPATH)}missing.h
+transcode.$(OBJEXT): {$(VPATH)}onigmo.h
+transcode.$(OBJEXT): {$(VPATH)}oniguruma.h
+transcode.$(OBJEXT): {$(VPATH)}shape.h
+transcode.$(OBJEXT): {$(VPATH)}st.h
+transcode.$(OBJEXT): {$(VPATH)}subst.h
+transcode.$(OBJEXT): {$(VPATH)}transcode.c
+transcode.$(OBJEXT): {$(VPATH)}transcode_data.h
+transient_heap.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+transient_heap.$(OBJEXT): $(top_srcdir)/internal/array.h
+transient_heap.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+transient_heap.$(OBJEXT): $(top_srcdir)/internal/gc.h
+transient_heap.$(OBJEXT): $(top_srcdir)/internal/hash.h
+transient_heap.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+transient_heap.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+transient_heap.$(OBJEXT): $(top_srcdir)/internal/struct.h
+transient_heap.$(OBJEXT): $(top_srcdir)/internal/variable.h
+transient_heap.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+transient_heap.$(OBJEXT): {$(VPATH)}assert.h
+transient_heap.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+transient_heap.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+transient_heap.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+transient_heap.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+transient_heap.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+transient_heap.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+transient_heap.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+transient_heap.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+transient_heap.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+transient_heap.$(OBJEXT): {$(VPATH)}config.h
+transient_heap.$(OBJEXT): {$(VPATH)}constant.h
+transient_heap.$(OBJEXT): {$(VPATH)}debug.h
+transient_heap.$(OBJEXT): {$(VPATH)}debug_counter.h
+transient_heap.$(OBJEXT): {$(VPATH)}defines.h
+transient_heap.$(OBJEXT): {$(VPATH)}gc.h
+transient_heap.$(OBJEXT): {$(VPATH)}id_table.h
+transient_heap.$(OBJEXT): {$(VPATH)}intern.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/abi.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/assume.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/cast.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/config.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/ctype.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/dosish.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/error.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/eval.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/event.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/gc.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/glob.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/globals.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/iterator.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/memory.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/method.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/module.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/newobj.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/symbol.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/value.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/value_type.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/variable.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+transient_heap.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+transient_heap.$(OBJEXT): {$(VPATH)}missing.h
+transient_heap.$(OBJEXT): {$(VPATH)}ruby_assert.h
+transient_heap.$(OBJEXT): {$(VPATH)}shape.h
+transient_heap.$(OBJEXT): {$(VPATH)}st.h
+transient_heap.$(OBJEXT): {$(VPATH)}subst.h
+transient_heap.$(OBJEXT): {$(VPATH)}transient_heap.c
+transient_heap.$(OBJEXT): {$(VPATH)}transient_heap.h
+transient_heap.$(OBJEXT): {$(VPATH)}vm_debug.h
+transient_heap.$(OBJEXT): {$(VPATH)}vm_sync.h
+util.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+util.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+util.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+util.$(OBJEXT): $(top_srcdir)/internal/util.h
+util.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+util.$(OBJEXT): {$(VPATH)}assert.h
+util.$(OBJEXT): {$(VPATH)}atomic.h
+util.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+util.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+util.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+util.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+util.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+util.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+util.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+util.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+util.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+util.$(OBJEXT): {$(VPATH)}config.h
+util.$(OBJEXT): {$(VPATH)}defines.h
+util.$(OBJEXT): {$(VPATH)}dtoa.c
+util.$(OBJEXT): {$(VPATH)}intern.h
+util.$(OBJEXT): {$(VPATH)}internal.h
+util.$(OBJEXT): {$(VPATH)}internal/abi.h
+util.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+util.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+util.$(OBJEXT): {$(VPATH)}internal/assume.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+util.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+util.$(OBJEXT): {$(VPATH)}internal/cast.h
+util.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+util.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+util.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+util.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+util.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+util.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+util.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+util.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+util.$(OBJEXT): {$(VPATH)}internal/config.h
+util.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+util.$(OBJEXT): {$(VPATH)}internal/core.h
+util.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+util.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+util.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+util.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+util.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+util.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+util.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+util.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+util.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+util.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+util.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+util.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+util.$(OBJEXT): {$(VPATH)}internal/ctype.h
+util.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+util.$(OBJEXT): {$(VPATH)}internal/dosish.h
+util.$(OBJEXT): {$(VPATH)}internal/error.h
+util.$(OBJEXT): {$(VPATH)}internal/eval.h
+util.$(OBJEXT): {$(VPATH)}internal/event.h
+util.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+util.$(OBJEXT): {$(VPATH)}internal/gc.h
+util.$(OBJEXT): {$(VPATH)}internal/glob.h
+util.$(OBJEXT): {$(VPATH)}internal/globals.h
+util.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+util.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+util.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+util.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+util.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+util.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+util.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+util.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+util.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+util.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+util.$(OBJEXT): {$(VPATH)}internal/iterator.h
+util.$(OBJEXT): {$(VPATH)}internal/memory.h
+util.$(OBJEXT): {$(VPATH)}internal/method.h
+util.$(OBJEXT): {$(VPATH)}internal/module.h
+util.$(OBJEXT): {$(VPATH)}internal/newobj.h
+util.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+util.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+util.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+util.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+util.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+util.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+util.$(OBJEXT): {$(VPATH)}internal/symbol.h
+util.$(OBJEXT): {$(VPATH)}internal/value.h
+util.$(OBJEXT): {$(VPATH)}internal/value_type.h
+util.$(OBJEXT): {$(VPATH)}internal/variable.h
+util.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+util.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+util.$(OBJEXT): {$(VPATH)}missing.h
+util.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+util.$(OBJEXT): {$(VPATH)}st.h
+util.$(OBJEXT): {$(VPATH)}subst.h
+util.$(OBJEXT): {$(VPATH)}util.c
+util.$(OBJEXT): {$(VPATH)}util.h
+variable.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+variable.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+variable.$(OBJEXT): $(CCAN_DIR)/list/list.h
+variable.$(OBJEXT): $(CCAN_DIR)/str/str.h
+variable.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+variable.$(OBJEXT): $(top_srcdir)/internal/array.h
+variable.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+variable.$(OBJEXT): $(top_srcdir)/internal/class.h
+variable.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+variable.$(OBJEXT): $(top_srcdir)/internal/error.h
+variable.$(OBJEXT): $(top_srcdir)/internal/eval.h
+variable.$(OBJEXT): $(top_srcdir)/internal/gc.h
+variable.$(OBJEXT): $(top_srcdir)/internal/hash.h
+variable.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+variable.$(OBJEXT): $(top_srcdir)/internal/object.h
+variable.$(OBJEXT): $(top_srcdir)/internal/re.h
+variable.$(OBJEXT): $(top_srcdir)/internal/serial.h
+variable.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+variable.$(OBJEXT): $(top_srcdir)/internal/string.h
+variable.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+variable.$(OBJEXT): $(top_srcdir)/internal/thread.h
+variable.$(OBJEXT): $(top_srcdir)/internal/variable.h
+variable.$(OBJEXT): $(top_srcdir)/internal/vm.h
+variable.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+variable.$(OBJEXT): {$(VPATH)}assert.h
+variable.$(OBJEXT): {$(VPATH)}atomic.h
+variable.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+variable.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+variable.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+variable.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+variable.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+variable.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+variable.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+variable.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+variable.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+variable.$(OBJEXT): {$(VPATH)}config.h
+variable.$(OBJEXT): {$(VPATH)}constant.h
+variable.$(OBJEXT): {$(VPATH)}debug_counter.h
+variable.$(OBJEXT): {$(VPATH)}defines.h
+variable.$(OBJEXT): {$(VPATH)}encoding.h
+variable.$(OBJEXT): {$(VPATH)}id.h
+variable.$(OBJEXT): {$(VPATH)}id_table.h
+variable.$(OBJEXT): {$(VPATH)}intern.h
+variable.$(OBJEXT): {$(VPATH)}internal.h
+variable.$(OBJEXT): {$(VPATH)}internal/abi.h
+variable.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+variable.$(OBJEXT): {$(VPATH)}internal/assume.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+variable.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+variable.$(OBJEXT): {$(VPATH)}internal/cast.h
+variable.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+variable.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+variable.$(OBJEXT): {$(VPATH)}internal/config.h
+variable.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+variable.$(OBJEXT): {$(VPATH)}internal/core.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+variable.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+variable.$(OBJEXT): {$(VPATH)}internal/ctype.h
+variable.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+variable.$(OBJEXT): {$(VPATH)}internal/dosish.h
+variable.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+variable.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+variable.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+variable.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+variable.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+variable.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+variable.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+variable.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+variable.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+variable.$(OBJEXT): {$(VPATH)}internal/error.h
+variable.$(OBJEXT): {$(VPATH)}internal/eval.h
+variable.$(OBJEXT): {$(VPATH)}internal/event.h
+variable.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+variable.$(OBJEXT): {$(VPATH)}internal/gc.h
+variable.$(OBJEXT): {$(VPATH)}internal/glob.h
+variable.$(OBJEXT): {$(VPATH)}internal/globals.h
+variable.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+variable.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+variable.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+variable.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+variable.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+variable.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+variable.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+variable.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+variable.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+variable.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+variable.$(OBJEXT): {$(VPATH)}internal/iterator.h
+variable.$(OBJEXT): {$(VPATH)}internal/memory.h
+variable.$(OBJEXT): {$(VPATH)}internal/method.h
+variable.$(OBJEXT): {$(VPATH)}internal/module.h
+variable.$(OBJEXT): {$(VPATH)}internal/newobj.h
+variable.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+variable.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+variable.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+variable.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+variable.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+variable.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+variable.$(OBJEXT): {$(VPATH)}internal/symbol.h
+variable.$(OBJEXT): {$(VPATH)}internal/value.h
+variable.$(OBJEXT): {$(VPATH)}internal/value_type.h
+variable.$(OBJEXT): {$(VPATH)}internal/variable.h
+variable.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+variable.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+variable.$(OBJEXT): {$(VPATH)}method.h
+variable.$(OBJEXT): {$(VPATH)}missing.h
+variable.$(OBJEXT): {$(VPATH)}node.h
+variable.$(OBJEXT): {$(VPATH)}onigmo.h
+variable.$(OBJEXT): {$(VPATH)}oniguruma.h
+variable.$(OBJEXT): {$(VPATH)}ractor.h
+variable.$(OBJEXT): {$(VPATH)}ractor_core.h
+variable.$(OBJEXT): {$(VPATH)}ruby_assert.h
+variable.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+variable.$(OBJEXT): {$(VPATH)}shape.h
+variable.$(OBJEXT): {$(VPATH)}st.h
+variable.$(OBJEXT): {$(VPATH)}subst.h
+variable.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+variable.$(OBJEXT): {$(VPATH)}thread_native.h
+variable.$(OBJEXT): {$(VPATH)}transient_heap.h
+variable.$(OBJEXT): {$(VPATH)}util.h
+variable.$(OBJEXT): {$(VPATH)}variable.c
+variable.$(OBJEXT): {$(VPATH)}variable.h
+variable.$(OBJEXT): {$(VPATH)}vm_core.h
+variable.$(OBJEXT): {$(VPATH)}vm_debug.h
+variable.$(OBJEXT): {$(VPATH)}vm_opts.h
+variable.$(OBJEXT): {$(VPATH)}vm_sync.h
+version.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+version.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+version.$(OBJEXT): $(CCAN_DIR)/list/list.h
+version.$(OBJEXT): $(CCAN_DIR)/str/str.h
+version.$(OBJEXT): $(hdrdir)/ruby.h
+version.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+version.$(OBJEXT): $(hdrdir)/ruby/version.h
+version.$(OBJEXT): $(top_srcdir)/internal/array.h
+version.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+version.$(OBJEXT): $(top_srcdir)/internal/cmdlineopt.h
+version.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+version.$(OBJEXT): $(top_srcdir)/internal/gc.h
+version.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+version.$(OBJEXT): $(top_srcdir)/internal/serial.h
+version.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+version.$(OBJEXT): $(top_srcdir)/internal/variable.h
+version.$(OBJEXT): $(top_srcdir)/internal/vm.h
+version.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+version.$(OBJEXT): $(top_srcdir)/version.h
+version.$(OBJEXT): {$(VPATH)}assert.h
+version.$(OBJEXT): {$(VPATH)}atomic.h
+version.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+version.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+version.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+version.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+version.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+version.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+version.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+version.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+version.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+version.$(OBJEXT): {$(VPATH)}config.h
+version.$(OBJEXT): {$(VPATH)}constant.h
+version.$(OBJEXT): {$(VPATH)}debug_counter.h
+version.$(OBJEXT): {$(VPATH)}defines.h
+version.$(OBJEXT): {$(VPATH)}id.h
+version.$(OBJEXT): {$(VPATH)}id_table.h
+version.$(OBJEXT): {$(VPATH)}intern.h
+version.$(OBJEXT): {$(VPATH)}internal.h
+version.$(OBJEXT): {$(VPATH)}internal/abi.h
+version.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+version.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+version.$(OBJEXT): {$(VPATH)}internal/assume.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+version.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+version.$(OBJEXT): {$(VPATH)}internal/cast.h
+version.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+version.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+version.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+version.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+version.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+version.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+version.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+version.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+version.$(OBJEXT): {$(VPATH)}internal/config.h
+version.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+version.$(OBJEXT): {$(VPATH)}internal/core.h
+version.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+version.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+version.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+version.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+version.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+version.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+version.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+version.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+version.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+version.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+version.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+version.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+version.$(OBJEXT): {$(VPATH)}internal/ctype.h
+version.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+version.$(OBJEXT): {$(VPATH)}internal/dosish.h
+version.$(OBJEXT): {$(VPATH)}internal/error.h
+version.$(OBJEXT): {$(VPATH)}internal/eval.h
+version.$(OBJEXT): {$(VPATH)}internal/event.h
+version.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+version.$(OBJEXT): {$(VPATH)}internal/gc.h
+version.$(OBJEXT): {$(VPATH)}internal/glob.h
+version.$(OBJEXT): {$(VPATH)}internal/globals.h
+version.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+version.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+version.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+version.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+version.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+version.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+version.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+version.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+version.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+version.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+version.$(OBJEXT): {$(VPATH)}internal/iterator.h
+version.$(OBJEXT): {$(VPATH)}internal/memory.h
+version.$(OBJEXT): {$(VPATH)}internal/method.h
+version.$(OBJEXT): {$(VPATH)}internal/module.h
+version.$(OBJEXT): {$(VPATH)}internal/newobj.h
+version.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+version.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+version.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+version.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+version.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+version.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+version.$(OBJEXT): {$(VPATH)}internal/symbol.h
+version.$(OBJEXT): {$(VPATH)}internal/value.h
+version.$(OBJEXT): {$(VPATH)}internal/value_type.h
+version.$(OBJEXT): {$(VPATH)}internal/variable.h
+version.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+version.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+version.$(OBJEXT): {$(VPATH)}method.h
+version.$(OBJEXT): {$(VPATH)}missing.h
+version.$(OBJEXT): {$(VPATH)}mjit.h
+version.$(OBJEXT): {$(VPATH)}node.h
+version.$(OBJEXT): {$(VPATH)}revision.h
+version.$(OBJEXT): {$(VPATH)}ruby_assert.h
+version.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+version.$(OBJEXT): {$(VPATH)}shape.h
+version.$(OBJEXT): {$(VPATH)}st.h
+version.$(OBJEXT): {$(VPATH)}subst.h
+version.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+version.$(OBJEXT): {$(VPATH)}thread_native.h
+version.$(OBJEXT): {$(VPATH)}version.c
+version.$(OBJEXT): {$(VPATH)}vm_core.h
+version.$(OBJEXT): {$(VPATH)}vm_opts.h
+version.$(OBJEXT): {$(VPATH)}yjit.h
+vm.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+vm.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+vm.$(OBJEXT): $(CCAN_DIR)/list/list.h
+vm.$(OBJEXT): $(CCAN_DIR)/str/str.h
+vm.$(OBJEXT): $(hdrdir)/ruby.h
+vm.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+vm.$(OBJEXT): $(top_srcdir)/internal/array.h
+vm.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+vm.$(OBJEXT): $(top_srcdir)/internal/bignum.h
+vm.$(OBJEXT): $(top_srcdir)/internal/bits.h
+vm.$(OBJEXT): $(top_srcdir)/internal/class.h
+vm.$(OBJEXT): $(top_srcdir)/internal/compar.h
+vm.$(OBJEXT): $(top_srcdir)/internal/compile.h
+vm.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+vm.$(OBJEXT): $(top_srcdir)/internal/cont.h
+vm.$(OBJEXT): $(top_srcdir)/internal/error.h
+vm.$(OBJEXT): $(top_srcdir)/internal/eval.h
+vm.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+vm.$(OBJEXT): $(top_srcdir)/internal/gc.h
+vm.$(OBJEXT): $(top_srcdir)/internal/hash.h
+vm.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+vm.$(OBJEXT): $(top_srcdir)/internal/inits.h
+vm.$(OBJEXT): $(top_srcdir)/internal/numeric.h
+vm.$(OBJEXT): $(top_srcdir)/internal/object.h
+vm.$(OBJEXT): $(top_srcdir)/internal/parse.h
+vm.$(OBJEXT): $(top_srcdir)/internal/proc.h
+vm.$(OBJEXT): $(top_srcdir)/internal/random.h
+vm.$(OBJEXT): $(top_srcdir)/internal/re.h
+vm.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+vm.$(OBJEXT): $(top_srcdir)/internal/serial.h
+vm.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+vm.$(OBJEXT): $(top_srcdir)/internal/string.h
+vm.$(OBJEXT): $(top_srcdir)/internal/struct.h
+vm.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+vm.$(OBJEXT): $(top_srcdir)/internal/thread.h
+vm.$(OBJEXT): $(top_srcdir)/internal/variable.h
+vm.$(OBJEXT): $(top_srcdir)/internal/vm.h
+vm.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+vm.$(OBJEXT): {$(VPATH)}assert.h
+vm.$(OBJEXT): {$(VPATH)}atomic.h
+vm.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+vm.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+vm.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+vm.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+vm.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+vm.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+vm.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+vm.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+vm.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+vm.$(OBJEXT): {$(VPATH)}builtin.h
+vm.$(OBJEXT): {$(VPATH)}config.h
+vm.$(OBJEXT): {$(VPATH)}constant.h
+vm.$(OBJEXT): {$(VPATH)}debug_counter.h
+vm.$(OBJEXT): {$(VPATH)}defines.h
+vm.$(OBJEXT): {$(VPATH)}defs/opt_operand.def
+vm.$(OBJEXT): {$(VPATH)}encoding.h
+vm.$(OBJEXT): {$(VPATH)}eval_intern.h
+vm.$(OBJEXT): {$(VPATH)}gc.h
+vm.$(OBJEXT): {$(VPATH)}id.h
+vm.$(OBJEXT): {$(VPATH)}id_table.h
+vm.$(OBJEXT): {$(VPATH)}insns.def
+vm.$(OBJEXT): {$(VPATH)}insns.inc
+vm.$(OBJEXT): {$(VPATH)}insns_info.inc
+vm.$(OBJEXT): {$(VPATH)}intern.h
+vm.$(OBJEXT): {$(VPATH)}internal.h
+vm.$(OBJEXT): {$(VPATH)}internal/abi.h
+vm.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+vm.$(OBJEXT): {$(VPATH)}internal/assume.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+vm.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+vm.$(OBJEXT): {$(VPATH)}internal/cast.h
+vm.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+vm.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+vm.$(OBJEXT): {$(VPATH)}internal/config.h
+vm.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+vm.$(OBJEXT): {$(VPATH)}internal/core.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+vm.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+vm.$(OBJEXT): {$(VPATH)}internal/ctype.h
+vm.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+vm.$(OBJEXT): {$(VPATH)}internal/dosish.h
+vm.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+vm.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+vm.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+vm.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+vm.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+vm.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+vm.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+vm.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+vm.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+vm.$(OBJEXT): {$(VPATH)}internal/error.h
+vm.$(OBJEXT): {$(VPATH)}internal/eval.h
+vm.$(OBJEXT): {$(VPATH)}internal/event.h
+vm.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+vm.$(OBJEXT): {$(VPATH)}internal/gc.h
+vm.$(OBJEXT): {$(VPATH)}internal/glob.h
+vm.$(OBJEXT): {$(VPATH)}internal/globals.h
+vm.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+vm.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+vm.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+vm.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+vm.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+vm.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+vm.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+vm.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+vm.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+vm.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+vm.$(OBJEXT): {$(VPATH)}internal/iterator.h
+vm.$(OBJEXT): {$(VPATH)}internal/memory.h
+vm.$(OBJEXT): {$(VPATH)}internal/method.h
+vm.$(OBJEXT): {$(VPATH)}internal/module.h
+vm.$(OBJEXT): {$(VPATH)}internal/newobj.h
+vm.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+vm.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+vm.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+vm.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+vm.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+vm.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+vm.$(OBJEXT): {$(VPATH)}internal/symbol.h
+vm.$(OBJEXT): {$(VPATH)}internal/value.h
+vm.$(OBJEXT): {$(VPATH)}internal/value_type.h
+vm.$(OBJEXT): {$(VPATH)}internal/variable.h
+vm.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+vm.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+vm.$(OBJEXT): {$(VPATH)}iseq.h
+vm.$(OBJEXT): {$(VPATH)}method.h
+vm.$(OBJEXT): {$(VPATH)}missing.h
+vm.$(OBJEXT): {$(VPATH)}mjit.h
+vm.$(OBJEXT): {$(VPATH)}node.h
+vm.$(OBJEXT): {$(VPATH)}onigmo.h
+vm.$(OBJEXT): {$(VPATH)}oniguruma.h
+vm.$(OBJEXT): {$(VPATH)}probes.dmyh
+vm.$(OBJEXT): {$(VPATH)}probes.h
+vm.$(OBJEXT): {$(VPATH)}probes_helper.h
+vm.$(OBJEXT): {$(VPATH)}ractor.h
+vm.$(OBJEXT): {$(VPATH)}ractor_core.h
+vm.$(OBJEXT): {$(VPATH)}ruby_assert.h
+vm.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+vm.$(OBJEXT): {$(VPATH)}shape.h
+vm.$(OBJEXT): {$(VPATH)}st.h
+vm.$(OBJEXT): {$(VPATH)}subst.h
+vm.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+vm.$(OBJEXT): {$(VPATH)}thread_native.h
+vm.$(OBJEXT): {$(VPATH)}variable.h
+vm.$(OBJEXT): {$(VPATH)}vm.c
+vm.$(OBJEXT): {$(VPATH)}vm.h
+vm.$(OBJEXT): {$(VPATH)}vm.inc
+vm.$(OBJEXT): {$(VPATH)}vm_args.c
+vm.$(OBJEXT): {$(VPATH)}vm_call_iseq_optimized.inc
+vm.$(OBJEXT): {$(VPATH)}vm_callinfo.h
+vm.$(OBJEXT): {$(VPATH)}vm_core.h
+vm.$(OBJEXT): {$(VPATH)}vm_debug.h
+vm.$(OBJEXT): {$(VPATH)}vm_eval.c
+vm.$(OBJEXT): {$(VPATH)}vm_exec.c
+vm.$(OBJEXT): {$(VPATH)}vm_exec.h
+vm.$(OBJEXT): {$(VPATH)}vm_insnhelper.c
+vm.$(OBJEXT): {$(VPATH)}vm_insnhelper.h
+vm.$(OBJEXT): {$(VPATH)}vm_method.c
+vm.$(OBJEXT): {$(VPATH)}vm_opts.h
+vm.$(OBJEXT): {$(VPATH)}vm_sync.h
+vm.$(OBJEXT): {$(VPATH)}vmtc.inc
+vm.$(OBJEXT): {$(VPATH)}yjit.h
+vm_backtrace.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+vm_backtrace.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+vm_backtrace.$(OBJEXT): $(CCAN_DIR)/list/list.h
+vm_backtrace.$(OBJEXT): $(CCAN_DIR)/str/str.h
+vm_backtrace.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/array.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/error.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/gc.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/serial.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/string.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/variable.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/vm.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}assert.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}atomic.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}config.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}constant.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}debug.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}defines.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}encoding.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}eval_intern.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}id.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}id_table.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}intern.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/abi.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/assume.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/cast.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/config.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/ctype.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/dosish.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/error.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/eval.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/event.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/gc.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/glob.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/globals.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/iterator.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/memory.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/method.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/module.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/newobj.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/symbol.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/value.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/value_type.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/variable.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}iseq.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}method.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}missing.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}node.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}onigmo.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}oniguruma.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}ruby_assert.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}shape.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}st.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}subst.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+vm_backtrace.$(OBJEXT): {$(VPATH)}thread_native.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}vm_backtrace.c
+vm_backtrace.$(OBJEXT): {$(VPATH)}vm_core.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}vm_opts.h
+vm_dump.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+vm_dump.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+vm_dump.$(OBJEXT): $(CCAN_DIR)/list/list.h
+vm_dump.$(OBJEXT): $(CCAN_DIR)/str/str.h
+vm_dump.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+vm_dump.$(OBJEXT): $(top_srcdir)/internal/array.h
+vm_dump.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+vm_dump.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+vm_dump.$(OBJEXT): $(top_srcdir)/internal/gc.h
+vm_dump.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+vm_dump.$(OBJEXT): $(top_srcdir)/internal/serial.h
+vm_dump.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+vm_dump.$(OBJEXT): $(top_srcdir)/internal/variable.h
+vm_dump.$(OBJEXT): $(top_srcdir)/internal/vm.h
+vm_dump.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+vm_dump.$(OBJEXT): {$(VPATH)}addr2line.h
+vm_dump.$(OBJEXT): {$(VPATH)}assert.h
+vm_dump.$(OBJEXT): {$(VPATH)}atomic.h
+vm_dump.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+vm_dump.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+vm_dump.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+vm_dump.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+vm_dump.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+vm_dump.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+vm_dump.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+vm_dump.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+vm_dump.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+vm_dump.$(OBJEXT): {$(VPATH)}config.h
+vm_dump.$(OBJEXT): {$(VPATH)}constant.h
+vm_dump.$(OBJEXT): {$(VPATH)}defines.h
+vm_dump.$(OBJEXT): {$(VPATH)}gc.h
+vm_dump.$(OBJEXT): {$(VPATH)}id.h
+vm_dump.$(OBJEXT): {$(VPATH)}id_table.h
+vm_dump.$(OBJEXT): {$(VPATH)}intern.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/abi.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/assume.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/cast.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/config.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/ctype.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/dosish.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/error.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/eval.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/event.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/gc.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/glob.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/globals.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/iterator.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/memory.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/method.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/module.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/newobj.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/symbol.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/value.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/value_type.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/variable.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+vm_dump.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+vm_dump.$(OBJEXT): {$(VPATH)}iseq.h
+vm_dump.$(OBJEXT): {$(VPATH)}method.h
+vm_dump.$(OBJEXT): {$(VPATH)}missing.h
+vm_dump.$(OBJEXT): {$(VPATH)}node.h
+vm_dump.$(OBJEXT): {$(VPATH)}procstat_vm.c
+vm_dump.$(OBJEXT): {$(VPATH)}ractor.h
+vm_dump.$(OBJEXT): {$(VPATH)}ractor_core.h
+vm_dump.$(OBJEXT): {$(VPATH)}ruby_assert.h
+vm_dump.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+vm_dump.$(OBJEXT): {$(VPATH)}shape.h
+vm_dump.$(OBJEXT): {$(VPATH)}st.h
+vm_dump.$(OBJEXT): {$(VPATH)}subst.h
+vm_dump.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+vm_dump.$(OBJEXT): {$(VPATH)}thread_native.h
+vm_dump.$(OBJEXT): {$(VPATH)}vm_core.h
+vm_dump.$(OBJEXT): {$(VPATH)}vm_debug.h
+vm_dump.$(OBJEXT): {$(VPATH)}vm_dump.c
+vm_dump.$(OBJEXT): {$(VPATH)}vm_opts.h
+vm_sync.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+vm_sync.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+vm_sync.$(OBJEXT): $(CCAN_DIR)/list/list.h
+vm_sync.$(OBJEXT): $(CCAN_DIR)/str/str.h
+vm_sync.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+vm_sync.$(OBJEXT): $(top_srcdir)/internal/array.h
+vm_sync.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+vm_sync.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+vm_sync.$(OBJEXT): $(top_srcdir)/internal/gc.h
+vm_sync.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+vm_sync.$(OBJEXT): $(top_srcdir)/internal/serial.h
+vm_sync.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+vm_sync.$(OBJEXT): $(top_srcdir)/internal/variable.h
+vm_sync.$(OBJEXT): $(top_srcdir)/internal/vm.h
+vm_sync.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+vm_sync.$(OBJEXT): {$(VPATH)}assert.h
+vm_sync.$(OBJEXT): {$(VPATH)}atomic.h
+vm_sync.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+vm_sync.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+vm_sync.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+vm_sync.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+vm_sync.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+vm_sync.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+vm_sync.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+vm_sync.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+vm_sync.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+vm_sync.$(OBJEXT): {$(VPATH)}config.h
+vm_sync.$(OBJEXT): {$(VPATH)}constant.h
+vm_sync.$(OBJEXT): {$(VPATH)}debug_counter.h
+vm_sync.$(OBJEXT): {$(VPATH)}defines.h
+vm_sync.$(OBJEXT): {$(VPATH)}gc.h
+vm_sync.$(OBJEXT): {$(VPATH)}id.h
+vm_sync.$(OBJEXT): {$(VPATH)}id_table.h
+vm_sync.$(OBJEXT): {$(VPATH)}intern.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/abi.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/assume.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/cast.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/config.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/ctype.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/dosish.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/error.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/eval.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/event.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/gc.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/glob.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/globals.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/iterator.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/memory.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/method.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/module.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/newobj.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/symbol.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/value.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/value_type.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/variable.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+vm_sync.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+vm_sync.$(OBJEXT): {$(VPATH)}method.h
+vm_sync.$(OBJEXT): {$(VPATH)}missing.h
+vm_sync.$(OBJEXT): {$(VPATH)}node.h
+vm_sync.$(OBJEXT): {$(VPATH)}ractor.h
+vm_sync.$(OBJEXT): {$(VPATH)}ractor_core.h
+vm_sync.$(OBJEXT): {$(VPATH)}ruby_assert.h
+vm_sync.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+vm_sync.$(OBJEXT): {$(VPATH)}shape.h
+vm_sync.$(OBJEXT): {$(VPATH)}st.h
+vm_sync.$(OBJEXT): {$(VPATH)}subst.h
+vm_sync.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+vm_sync.$(OBJEXT): {$(VPATH)}thread_native.h
+vm_sync.$(OBJEXT): {$(VPATH)}vm_core.h
+vm_sync.$(OBJEXT): {$(VPATH)}vm_debug.h
+vm_sync.$(OBJEXT): {$(VPATH)}vm_opts.h
+vm_sync.$(OBJEXT): {$(VPATH)}vm_sync.c
+vm_sync.$(OBJEXT): {$(VPATH)}vm_sync.h
+vm_trace.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+vm_trace.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+vm_trace.$(OBJEXT): $(CCAN_DIR)/list/list.h
+vm_trace.$(OBJEXT): $(CCAN_DIR)/str/str.h
+vm_trace.$(OBJEXT): $(hdrdir)/ruby.h
+vm_trace.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/array.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/gc.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/hash.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/serial.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/symbol.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/variable.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/vm.h
+vm_trace.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+vm_trace.$(OBJEXT): {$(VPATH)}assert.h
+vm_trace.$(OBJEXT): {$(VPATH)}atomic.h
+vm_trace.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+vm_trace.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+vm_trace.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+vm_trace.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+vm_trace.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+vm_trace.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+vm_trace.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+vm_trace.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+vm_trace.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+vm_trace.$(OBJEXT): {$(VPATH)}builtin.h
+vm_trace.$(OBJEXT): {$(VPATH)}config.h
+vm_trace.$(OBJEXT): {$(VPATH)}constant.h
+vm_trace.$(OBJEXT): {$(VPATH)}debug.h
+vm_trace.$(OBJEXT): {$(VPATH)}debug_counter.h
+vm_trace.$(OBJEXT): {$(VPATH)}defines.h
+vm_trace.$(OBJEXT): {$(VPATH)}encoding.h
+vm_trace.$(OBJEXT): {$(VPATH)}eval_intern.h
+vm_trace.$(OBJEXT): {$(VPATH)}id.h
+vm_trace.$(OBJEXT): {$(VPATH)}id_table.h
+vm_trace.$(OBJEXT): {$(VPATH)}intern.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/abi.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/assume.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/cast.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/config.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/ctype.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/dosish.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/error.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/eval.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/event.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/gc.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/glob.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/globals.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/iterator.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/memory.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/method.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/module.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/newobj.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/symbol.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/value.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/value_type.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/variable.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+vm_trace.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+vm_trace.$(OBJEXT): {$(VPATH)}iseq.h
+vm_trace.$(OBJEXT): {$(VPATH)}method.h
+vm_trace.$(OBJEXT): {$(VPATH)}missing.h
+vm_trace.$(OBJEXT): {$(VPATH)}mjit.h
+vm_trace.$(OBJEXT): {$(VPATH)}node.h
+vm_trace.$(OBJEXT): {$(VPATH)}onigmo.h
+vm_trace.$(OBJEXT): {$(VPATH)}oniguruma.h
+vm_trace.$(OBJEXT): {$(VPATH)}ractor.h
+vm_trace.$(OBJEXT): {$(VPATH)}ruby_assert.h
+vm_trace.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+vm_trace.$(OBJEXT): {$(VPATH)}shape.h
+vm_trace.$(OBJEXT): {$(VPATH)}st.h
+vm_trace.$(OBJEXT): {$(VPATH)}subst.h
+vm_trace.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+vm_trace.$(OBJEXT): {$(VPATH)}thread_native.h
+vm_trace.$(OBJEXT): {$(VPATH)}trace_point.rbinc
+vm_trace.$(OBJEXT): {$(VPATH)}vm_core.h
+vm_trace.$(OBJEXT): {$(VPATH)}vm_opts.h
+vm_trace.$(OBJEXT): {$(VPATH)}vm_trace.c
+vm_trace.$(OBJEXT): {$(VPATH)}yjit.h
+yjit.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+yjit.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+yjit.$(OBJEXT): $(CCAN_DIR)/list/list.h
+yjit.$(OBJEXT): $(CCAN_DIR)/str/str.h
+yjit.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/array.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/class.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/compile.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/cont.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/gc.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/hash.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/serial.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/string.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/variable.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/vm.h
+yjit.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+yjit.$(OBJEXT): {$(VPATH)}assert.h
+yjit.$(OBJEXT): {$(VPATH)}atomic.h
+yjit.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+yjit.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+yjit.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+yjit.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+yjit.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+yjit.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+yjit.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+yjit.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+yjit.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+yjit.$(OBJEXT): {$(VPATH)}builtin.h
+yjit.$(OBJEXT): {$(VPATH)}config.h
+yjit.$(OBJEXT): {$(VPATH)}constant.h
+yjit.$(OBJEXT): {$(VPATH)}debug.h
+yjit.$(OBJEXT): {$(VPATH)}debug_counter.h
+yjit.$(OBJEXT): {$(VPATH)}defines.h
+yjit.$(OBJEXT): {$(VPATH)}encoding.h
+yjit.$(OBJEXT): {$(VPATH)}gc.h
+yjit.$(OBJEXT): {$(VPATH)}id.h
+yjit.$(OBJEXT): {$(VPATH)}id_table.h
+yjit.$(OBJEXT): {$(VPATH)}insns.def
+yjit.$(OBJEXT): {$(VPATH)}insns.inc
+yjit.$(OBJEXT): {$(VPATH)}insns_info.inc
+yjit.$(OBJEXT): {$(VPATH)}intern.h
+yjit.$(OBJEXT): {$(VPATH)}internal.h
+yjit.$(OBJEXT): {$(VPATH)}internal/abi.h
+yjit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+yjit.$(OBJEXT): {$(VPATH)}internal/assume.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+yjit.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+yjit.$(OBJEXT): {$(VPATH)}internal/cast.h
+yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+yjit.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+yjit.$(OBJEXT): {$(VPATH)}internal/config.h
+yjit.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+yjit.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+yjit.$(OBJEXT): {$(VPATH)}internal/ctype.h
+yjit.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+yjit.$(OBJEXT): {$(VPATH)}internal/dosish.h
+yjit.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+yjit.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+yjit.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+yjit.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+yjit.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+yjit.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+yjit.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+yjit.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+yjit.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+yjit.$(OBJEXT): {$(VPATH)}internal/error.h
+yjit.$(OBJEXT): {$(VPATH)}internal/eval.h
+yjit.$(OBJEXT): {$(VPATH)}internal/event.h
+yjit.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+yjit.$(OBJEXT): {$(VPATH)}internal/gc.h
+yjit.$(OBJEXT): {$(VPATH)}internal/glob.h
+yjit.$(OBJEXT): {$(VPATH)}internal/globals.h
+yjit.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+yjit.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+yjit.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+yjit.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+yjit.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+yjit.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+yjit.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+yjit.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/gc.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+yjit.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+yjit.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+yjit.$(OBJEXT): {$(VPATH)}internal/iterator.h
+yjit.$(OBJEXT): {$(VPATH)}internal/memory.h
+yjit.$(OBJEXT): {$(VPATH)}internal/method.h
+yjit.$(OBJEXT): {$(VPATH)}internal/module.h
+yjit.$(OBJEXT): {$(VPATH)}internal/newobj.h
+yjit.$(OBJEXT): {$(VPATH)}internal/rgengc.h
+yjit.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+yjit.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+yjit.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+yjit.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+yjit.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+yjit.$(OBJEXT): {$(VPATH)}internal/symbol.h
+yjit.$(OBJEXT): {$(VPATH)}internal/value.h
+yjit.$(OBJEXT): {$(VPATH)}internal/value_type.h
+yjit.$(OBJEXT): {$(VPATH)}internal/variable.h
+yjit.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+yjit.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+yjit.$(OBJEXT): {$(VPATH)}iseq.h
+yjit.$(OBJEXT): {$(VPATH)}method.h
+yjit.$(OBJEXT): {$(VPATH)}missing.h
+yjit.$(OBJEXT): {$(VPATH)}node.h
+yjit.$(OBJEXT): {$(VPATH)}onigmo.h
+yjit.$(OBJEXT): {$(VPATH)}oniguruma.h
+yjit.$(OBJEXT): {$(VPATH)}probes.dmyh
+yjit.$(OBJEXT): {$(VPATH)}probes.h
+yjit.$(OBJEXT): {$(VPATH)}probes_helper.h
+yjit.$(OBJEXT): {$(VPATH)}ruby_assert.h
+yjit.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+yjit.$(OBJEXT): {$(VPATH)}shape.h
+yjit.$(OBJEXT): {$(VPATH)}st.h
+yjit.$(OBJEXT): {$(VPATH)}subst.h
+yjit.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+yjit.$(OBJEXT): {$(VPATH)}thread_native.h
+yjit.$(OBJEXT): {$(VPATH)}vm_callinfo.h
+yjit.$(OBJEXT): {$(VPATH)}vm_core.h
+yjit.$(OBJEXT): {$(VPATH)}vm_debug.h
+yjit.$(OBJEXT): {$(VPATH)}vm_insnhelper.h
+yjit.$(OBJEXT): {$(VPATH)}vm_opts.h
+yjit.$(OBJEXT): {$(VPATH)}vm_sync.h
+yjit.$(OBJEXT): {$(VPATH)}yjit.c
+yjit.$(OBJEXT): {$(VPATH)}yjit.h
+yjit.$(OBJEXT): {$(VPATH)}yjit.rbinc
+# AUTOGENERATED DEPENDENCIES END
diff --git a/compar.c b/compar.c
index 3cebc30a80..040f77975e 100644
--- a/compar.c
+++ b/compar.c
@@ -3,109 +3,305 @@
compar.c -
$Author$
- $Date$
created at: Thu Aug 26 14:39:48 JST 1993
- Copyright (C) 1993-2000 Yukihiro Matsumoto
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
**********************************************************************/
-#include "ruby.h"
+#include "id.h"
+#include "internal.h"
+#include "internal/compar.h"
+#include "internal/error.h"
+#include "internal/vm.h"
+#include "ruby/ruby.h"
VALUE rb_mComparable;
-static ID cmp;
-
static VALUE
-cmp_eq(a)
- VALUE *a;
+rb_cmp(VALUE x, VALUE y)
+{
+ return rb_funcallv(x, idCmp, 1, &y);
+}
+
+void
+rb_cmperr(VALUE x, VALUE y)
{
- VALUE c = rb_funcall(a[0], cmp, 1, a[1]);
- int t = NUM2INT(c);
+ VALUE classname;
- if (t == 0) return Qtrue;
- return Qfalse;
+ if (SPECIAL_CONST_P(y) || BUILTIN_TYPE(y) == T_FLOAT) {
+ classname = rb_inspect(y);
+ }
+ else {
+ classname = rb_obj_class(y);
+ }
+ rb_raise(rb_eArgError, "comparison of %"PRIsVALUE" with %"PRIsVALUE" failed",
+ rb_obj_class(x), classname);
}
static VALUE
-cmp_failed()
+invcmp_recursive(VALUE x, VALUE y, int recursive)
+{
+ if (recursive) return Qnil;
+ return rb_cmp(y, x);
+}
+
+VALUE
+rb_invcmp(VALUE x, VALUE y)
{
- return Qfalse;
+ VALUE invcmp = rb_exec_recursive(invcmp_recursive, x, y);
+ if (NIL_OR_UNDEF_P(invcmp)) {
+ return Qnil;
+ }
+ else {
+ int result = -rb_cmpint(invcmp, x, y);
+ return INT2FIX(result);
+ }
}
static VALUE
-cmp_equal(x, y)
- VALUE x, y;
+cmp_eq_recursive(VALUE arg1, VALUE arg2, int recursive)
{
- VALUE a[2];
+ if (recursive) return Qnil;
+ return rb_cmp(arg1, arg2);
+}
+
+/*
+ * call-seq:
+ * obj == other -> true or false
+ *
+ * Compares two objects based on the receiver's <code><=></code>
+ * method, returning true if it returns 0. Also returns true if
+ * _obj_ and _other_ are the same object.
+ */
+static VALUE
+cmp_equal(VALUE x, VALUE y)
+{
+ VALUE c;
if (x == y) return Qtrue;
- a[0] = x; a[1] = y;
- return rb_rescue2(cmp_eq, (VALUE)a, cmp_failed, 0,
- rb_eStandardError, rb_eNameError, 0);
+ c = rb_exec_recursive_paired_outer(cmp_eq_recursive, x, y, y);
+
+ if (NIL_P(c)) return Qfalse;
+ return RBOOL(rb_cmpint(c, x, y) == 0);
}
-static VALUE
-cmp_gt(x, y)
- VALUE x, y;
+static int
+cmpint(VALUE x, VALUE y)
{
- VALUE c = rb_funcall(x, cmp, 1, y);
- int t = NUM2INT(c);
-
- if (t > 0) return Qtrue;
- return Qfalse;
+ return rb_cmpint(rb_cmp(x, y), x, y);
}
+/*
+ * call-seq:
+ * obj > other -> true or false
+ *
+ * Compares two objects based on the receiver's <code><=></code>
+ * method, returning true if it returns a value greater than 0.
+ */
+
static VALUE
-cmp_ge(x, y)
- VALUE x, y;
+cmp_gt(VALUE x, VALUE y)
{
- VALUE c = rb_funcall(x, cmp, 1, y);
- int t = NUM2INT(c);
-
- if (t >= 0) return Qtrue;
- return Qfalse;
+ return RBOOL(cmpint(x, y) > 0);
}
+/*
+ * call-seq:
+ * obj >= other -> true or false
+ *
+ * Compares two objects based on the receiver's <code><=></code>
+ * method, returning true if it returns a value greater than or equal to 0.
+ */
+
static VALUE
-cmp_lt(x, y)
- VALUE x, y;
+cmp_ge(VALUE x, VALUE y)
{
- VALUE c = rb_funcall(x, cmp, 1, y);
- int t = NUM2INT(c);
+ return RBOOL(cmpint(x, y) >= 0);
+}
+
+/*
+ * call-seq:
+ * obj < other -> true or false
+ *
+ * Compares two objects based on the receiver's <code><=></code>
+ * method, returning true if it returns a value less than 0.
+ */
- if (t < 0) return Qtrue;
- return Qfalse;
+static VALUE
+cmp_lt(VALUE x, VALUE y)
+{
+ return RBOOL(cmpint(x, y) < 0);
}
+/*
+ * call-seq:
+ * obj <= other -> true or false
+ *
+ * Compares two objects based on the receiver's <code><=></code>
+ * method, returning true if it returns a value less than or equal to 0.
+ */
+
static VALUE
-cmp_le(x, y)
- VALUE x, y;
+cmp_le(VALUE x, VALUE y)
{
- VALUE c = rb_funcall(x, cmp, 1, y);
- int t = NUM2INT(c);
+ return RBOOL(cmpint(x, y) <= 0);
+}
- if (t <= 0) return Qtrue;
- return Qfalse;
+/*
+ * call-seq:
+ * obj.between?(min, max) -> true or false
+ *
+ * Returns <code>false</code> if _obj_ <code><=></code> _min_ is less
+ * than zero or if _obj_ <code><=></code> _max_ is greater than zero,
+ * <code>true</code> otherwise.
+ *
+ * 3.between?(1, 5) #=> true
+ * 6.between?(1, 5) #=> false
+ * 'cat'.between?('ant', 'dog') #=> true
+ * 'gnu'.between?('ant', 'dog') #=> false
+ *
+ */
+
+static VALUE
+cmp_between(VALUE x, VALUE min, VALUE max)
+{
+ return RBOOL((cmpint(x, min) >= 0 && cmpint(x, max) <= 0));
}
+/*
+ * call-seq:
+ * obj.clamp(min, max) -> obj
+ * obj.clamp(range) -> obj
+ *
+ * In <code>(min, max)</code> form, returns _min_ if _obj_
+ * <code><=></code> _min_ is less than zero, _max_ if _obj_
+ * <code><=></code> _max_ is greater than zero, and _obj_
+ * otherwise.
+ *
+ * 12.clamp(0, 100) #=> 12
+ * 523.clamp(0, 100) #=> 100
+ * -3.123.clamp(0, 100) #=> 0
+ *
+ * 'd'.clamp('a', 'f') #=> 'd'
+ * 'z'.clamp('a', 'f') #=> 'f'
+ *
+ * In <code>(range)</code> form, returns _range.begin_ if _obj_
+ * <code><=></code> _range.begin_ is less than zero, _range.end_
+ * if _obj_ <code><=></code> _range.end_ is greater than zero, and
+ * _obj_ otherwise.
+ *
+ * 12.clamp(0..100) #=> 12
+ * 523.clamp(0..100) #=> 100
+ * -3.123.clamp(0..100) #=> 0
+ *
+ * 'd'.clamp('a'..'f') #=> 'd'
+ * 'z'.clamp('a'..'f') #=> 'f'
+ *
+ * If _range.begin_ is +nil+, it is considered smaller than _obj_,
+ * and if _range.end_ is +nil+, it is considered greater than
+ * _obj_.
+ *
+ * -20.clamp(0..) #=> 0
+ * 523.clamp(..100) #=> 100
+ *
+ * When _range.end_ is excluded and not +nil+, an exception is
+ * raised.
+ *
+ * 100.clamp(0...100) # ArgumentError
+ */
+
static VALUE
-cmp_between(x, min, max)
- VALUE x, min, max;
+cmp_clamp(int argc, VALUE *argv, VALUE x)
{
- VALUE c = rb_funcall(x, cmp, 1, min);
- long t = NUM2LONG(c);
- if (t < 0) return Qfalse;
-
- c = rb_funcall(x, cmp, 1, max);
- t = NUM2LONG(c);
- if (t > 0) return Qfalse;
- return Qtrue;
+ VALUE min, max;
+ int c, excl = 0;
+
+ if (rb_scan_args(argc, argv, "11", &min, &max) == 1) {
+ VALUE range = min;
+ if (!rb_range_values(range, &min, &max, &excl)) {
+ rb_raise(rb_eTypeError, "wrong argument type %s (expected Range)",
+ rb_builtin_class_name(range));
+ }
+ if (!NIL_P(max)) {
+ if (excl) rb_raise(rb_eArgError, "cannot clamp with an exclusive range");
+ }
+ }
+ if (!NIL_P(min) && !NIL_P(max) && cmpint(min, max) > 0) {
+ rb_raise(rb_eArgError, "min argument must be smaller than max argument");
+ }
+
+ if (!NIL_P(min)) {
+ c = cmpint(x, min);
+ if (c == 0) return x;
+ if (c < 0) return min;
+ }
+ if (!NIL_P(max)) {
+ c = cmpint(x, max);
+ if (c > 0) return max;
+ }
+ return x;
}
+/*
+ * The Comparable mixin is used by classes whose objects may be
+ * ordered. The class must define the <code><=></code> operator,
+ * which compares the receiver against another object, returning a
+ * value less than 0, returning 0, or returning a value greater than 0,
+ * depending on whether the receiver is less than, equal to,
+ * or greater than the other object. If the other object is not
+ * comparable then the <code><=></code> operator should return +nil+.
+ * Comparable uses <code><=></code> to implement the conventional
+ * comparison operators (<code><</code>, <code><=</code>,
+ * <code>==</code>, <code>>=</code>, and <code>></code>) and the
+ * method <code>between?</code>.
+ *
+ * class SizeMatters
+ * include Comparable
+ * attr :str
+ * def <=>(other)
+ * str.size <=> other.str.size
+ * end
+ * def initialize(str)
+ * @str = str
+ * end
+ * def inspect
+ * @str
+ * end
+ * end
+ *
+ * s1 = SizeMatters.new("Z")
+ * s2 = SizeMatters.new("YY")
+ * s3 = SizeMatters.new("XXX")
+ * s4 = SizeMatters.new("WWWW")
+ * s5 = SizeMatters.new("VVVVV")
+ *
+ * s1 < s2 #=> true
+ * s4.between?(s1, s3) #=> false
+ * s4.between?(s3, s5) #=> true
+ * [ s3, s2, s5, s4, s1 ].sort #=> [Z, YY, XXX, WWWW, VVVVV]
+ *
+ * == What's Here
+ *
+ * \Module \Comparable provides these methods, all of which use method <tt><=></tt>:
+ *
+ * - #<: Returns whether +self+ is less than the given object.
+ * - #<=: Returns whether +self+ is less than or equal to the given object.
+ * - #==: Returns whether +self+ is equal to the given object.
+ * - #>: Returns whether +self+ is greater than or equal to the given object.
+ * - #>=: Returns whether +self+ is greater than the given object.
+ * - #between?: Returns +true+ if +self+ is between two given objects.
+ * - #clamp: For given objects +min+ and +max+, or range <tt>(min..max)</tt>, returns:
+ *
+ * - +min+ if <tt>(self <=> min) < 0</tt>.
+ * - +max+ if <tt>(self <=> max) > 0</tt>.
+ * - +self+ otherwise.
+ *
+ */
+
void
-Init_Comparable()
+Init_Comparable(void)
{
rb_mComparable = rb_define_module("Comparable");
rb_define_method(rb_mComparable, "==", cmp_equal, 1);
@@ -114,6 +310,5 @@ Init_Comparable()
rb_define_method(rb_mComparable, "<", cmp_lt, 1);
rb_define_method(rb_mComparable, "<=", cmp_le, 1);
rb_define_method(rb_mComparable, "between?", cmp_between, 2);
-
- cmp = rb_intern("<=>");
+ rb_define_method(rb_mComparable, "clamp", cmp_clamp, -1);
}
diff --git a/compile.c b/compile.c
new file mode 100644
index 0000000000..0452305923
--- /dev/null
+++ b/compile.c
@@ -0,0 +1,13380 @@
+/**********************************************************************
+
+ compile.c - ruby node tree -> VM instruction sequence
+
+ $Author$
+ created at: 04/01/01 03:42:15 JST
+
+ Copyright (C) 2004-2007 Koichi Sasada
+
+**********************************************************************/
+
+#include "ruby/internal/config.h"
+#include <math.h>
+
+#ifdef HAVE_DLADDR
+# include <dlfcn.h>
+#endif
+
+#include "encindex.h"
+#include "gc.h"
+#include "id_table.h"
+#include "internal.h"
+#include "internal/array.h"
+#include "internal/compile.h"
+#include "internal/complex.h"
+#include "internal/encoding.h"
+#include "internal/error.h"
+#include "internal/hash.h"
+#include "internal/numeric.h"
+#include "internal/object.h"
+#include "internal/rational.h"
+#include "internal/re.h"
+#include "internal/symbol.h"
+#include "internal/thread.h"
+#include "internal/variable.h"
+#include "iseq.h"
+#include "ruby/re.h"
+#include "ruby/util.h"
+#include "vm_core.h"
+#include "vm_callinfo.h"
+#include "vm_debug.h"
+
+#include "builtin.h"
+#include "insns.inc"
+#include "insns_info.inc"
+
+#undef RUBY_UNTYPED_DATA_WARNING
+#define RUBY_UNTYPED_DATA_WARNING 0
+
+#define FIXNUM_INC(n, i) ((n)+(INT2FIX(i)&~FIXNUM_FLAG))
+#define FIXNUM_OR(n, i) ((n)|INT2FIX(i))
+
+typedef struct iseq_link_element {
+ enum {
+ ISEQ_ELEMENT_ANCHOR,
+ ISEQ_ELEMENT_LABEL,
+ ISEQ_ELEMENT_INSN,
+ ISEQ_ELEMENT_ADJUST,
+ ISEQ_ELEMENT_TRACE,
+ } type;
+ struct iseq_link_element *next;
+ struct iseq_link_element *prev;
+} LINK_ELEMENT;
+
+typedef struct iseq_link_anchor {
+ LINK_ELEMENT anchor;
+ LINK_ELEMENT *last;
+} LINK_ANCHOR;
+
+typedef enum {
+ LABEL_RESCUE_NONE,
+ LABEL_RESCUE_BEG,
+ LABEL_RESCUE_END,
+ LABEL_RESCUE_TYPE_MAX
+} LABEL_RESCUE_TYPE;
+
+typedef struct iseq_label_data {
+ LINK_ELEMENT link;
+ int label_no;
+ int position;
+ int sc_state;
+ int sp;
+ int refcnt;
+ unsigned int set: 1;
+ unsigned int rescued: 2;
+ unsigned int unremovable: 1;
+} LABEL;
+
+typedef struct iseq_insn_data {
+ LINK_ELEMENT link;
+ enum ruby_vminsn_type insn_id;
+ int operand_size;
+ int sc_state;
+ VALUE *operands;
+ struct {
+ int line_no;
+ int node_id;
+ rb_event_flag_t events;
+ } insn_info;
+} INSN;
+
+typedef struct iseq_adjust_data {
+ LINK_ELEMENT link;
+ LABEL *label;
+ int line_no;
+} ADJUST;
+
+typedef struct iseq_trace_data {
+ LINK_ELEMENT link;
+ rb_event_flag_t event;
+ long data;
+} TRACE;
+
+struct ensure_range {
+ LABEL *begin;
+ LABEL *end;
+ struct ensure_range *next;
+};
+
+struct iseq_compile_data_ensure_node_stack {
+ const NODE *ensure_node;
+ struct iseq_compile_data_ensure_node_stack *prev;
+ struct ensure_range *erange;
+};
+
+const ID rb_iseq_shared_exc_local_tbl[] = {idERROR_INFO};
+
+/**
+ * debug function(macro) interface depend on CPDEBUG
+ * if it is less than 0, runtime option is in effect.
+ *
+ * debug level:
+ * 0: no debug output
+ * 1: show node type
+ * 2: show node important parameters
+ * ...
+ * 5: show other parameters
+ * 10: show every AST array
+ */
+
+#ifndef CPDEBUG
+#define CPDEBUG 0
+#endif
+
+#if CPDEBUG >= 0
+#define compile_debug CPDEBUG
+#else
+#define compile_debug ISEQ_COMPILE_DATA(iseq)->option->debug_level
+#endif
+
+#if CPDEBUG
+
+#define compile_debug_print_indent(level) \
+ ruby_debug_print_indent((level), compile_debug, gl_node_level * 2)
+
+#define debugp(header, value) (void) \
+ (compile_debug_print_indent(1) && \
+ ruby_debug_print_value(1, compile_debug, (header), (value)))
+
+#define debugi(header, id) (void) \
+ (compile_debug_print_indent(1) && \
+ ruby_debug_print_id(1, compile_debug, (header), (id)))
+
+#define debugp_param(header, value) (void) \
+ (compile_debug_print_indent(1) && \
+ ruby_debug_print_value(1, compile_debug, (header), (value)))
+
+#define debugp_verbose(header, value) (void) \
+ (compile_debug_print_indent(2) && \
+ ruby_debug_print_value(2, compile_debug, (header), (value)))
+
+#define debugp_verbose_node(header, value) (void) \
+ (compile_debug_print_indent(10) && \
+ ruby_debug_print_value(10, compile_debug, (header), (value)))
+
+#define debug_node_start(node) ((void) \
+ (compile_debug_print_indent(1) && \
+ (ruby_debug_print_node(1, CPDEBUG, "", (const NODE *)(node)), gl_node_level)), \
+ gl_node_level++)
+
+#define debug_node_end() gl_node_level --
+
+#else
+
+#define debugi(header, id) ((void)0)
+#define debugp(header, value) ((void)0)
+#define debugp_verbose(header, value) ((void)0)
+#define debugp_verbose_node(header, value) ((void)0)
+#define debugp_param(header, value) ((void)0)
+#define debug_node_start(node) ((void)0)
+#define debug_node_end() ((void)0)
+#endif
+
+#if CPDEBUG > 1 || CPDEBUG < 0
+#undef printf
+#define printf ruby_debug_printf
+#define debugs if (compile_debug_print_indent(1)) ruby_debug_printf
+#define debug_compile(msg, v) ((void)(compile_debug_print_indent(1) && fputs((msg), stderr)), (v))
+#else
+#define debugs if(0)printf
+#define debug_compile(msg, v) (v)
+#endif
+
+#define LVAR_ERRINFO (1)
+
+/* create new label */
+#define NEW_LABEL(l) new_label_body(iseq, (l))
+#define LABEL_FORMAT "<L%03d>"
+
+#define NEW_ISEQ(node, name, type, line_no) \
+ new_child_iseq(iseq, (node), rb_fstring(name), 0, (type), (line_no))
+
+#define NEW_CHILD_ISEQ(node, name, type, line_no) \
+ new_child_iseq(iseq, (node), rb_fstring(name), iseq, (type), (line_no))
+
+/* add instructions */
+#define ADD_SEQ(seq1, seq2) \
+ APPEND_LIST((seq1), (seq2))
+
+/* add an instruction */
+#define ADD_INSN(seq, line_node, insn) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_body(iseq, (line_node), BIN(insn), 0))
+
+/* insert an instruction before next */
+#define INSERT_BEFORE_INSN(next, line_node, insn) \
+ ELEM_INSERT_PREV(&(next)->link, (LINK_ELEMENT *) new_insn_body(iseq, (line_node), BIN(insn), 0))
+
+/* insert an instruction after prev */
+#define INSERT_AFTER_INSN(prev, line_node, insn) \
+ ELEM_INSERT_NEXT(&(prev)->link, (LINK_ELEMENT *) new_insn_body(iseq, (line_node), BIN(insn), 0))
+
+/* add an instruction with some operands (1, 2, 3, 5) */
+#define ADD_INSN1(seq, line_node, insn, op1) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) \
+ new_insn_body(iseq, (line_node), BIN(insn), 1, (VALUE)(op1)))
+
+/* insert an instruction with some operands (1, 2, 3, 5) before next */
+#define INSERT_BEFORE_INSN1(next, line_node, insn, op1) \
+ ELEM_INSERT_PREV(&(next)->link, (LINK_ELEMENT *) \
+ new_insn_body(iseq, (line_node), BIN(insn), 1, (VALUE)(op1)))
+
+/* insert an instruction with some operands (1, 2, 3, 5) after prev */
+#define INSERT_AFTER_INSN1(prev, line_node, insn, op1) \
+ ELEM_INSERT_NEXT(&(prev)->link, (LINK_ELEMENT *) \
+ new_insn_body(iseq, (line_node), BIN(insn), 1, (VALUE)(op1)))
+
+#define LABEL_REF(label) ((label)->refcnt++)
+
+/* add an instruction with label operand (alias of ADD_INSN1) */
+#define ADD_INSNL(seq, line_node, insn, label) (ADD_INSN1(seq, line_node, insn, label), LABEL_REF(label))
+
+#define ADD_INSN2(seq, line_node, insn, op1, op2) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) \
+ new_insn_body(iseq, (line_node), BIN(insn), 2, (VALUE)(op1), (VALUE)(op2)))
+
+#define ADD_INSN3(seq, line_node, insn, op1, op2, op3) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) \
+ new_insn_body(iseq, (line_node), BIN(insn), 3, (VALUE)(op1), (VALUE)(op2), (VALUE)(op3)))
+
+/* Specific Insn factory */
+#define ADD_SEND(seq, line_node, id, argc) \
+ ADD_SEND_R((seq), (line_node), (id), (argc), NULL, (VALUE)INT2FIX(0), NULL)
+
+#define ADD_SEND_WITH_FLAG(seq, line_node, id, argc, flag) \
+ ADD_SEND_R((seq), (line_node), (id), (argc), NULL, (VALUE)(flag), NULL)
+
+#define ADD_SEND_WITH_BLOCK(seq, line_node, id, argc, block) \
+ ADD_SEND_R((seq), (line_node), (id), (argc), (block), (VALUE)INT2FIX(0), NULL)
+
+#define ADD_CALL_RECEIVER(seq, line_node) \
+ ADD_INSN((seq), (line_node), putself)
+
+#define ADD_CALL(seq, line_node, id, argc) \
+ ADD_SEND_R((seq), (line_node), (id), (argc), NULL, (VALUE)INT2FIX(VM_CALL_FCALL), NULL)
+
+#define ADD_CALL_WITH_BLOCK(seq, line_node, id, argc, block) \
+ ADD_SEND_R((seq), (line_node), (id), (argc), (block), (VALUE)INT2FIX(VM_CALL_FCALL), NULL)
+
+#define ADD_SEND_R(seq, line_node, id, argc, block, flag, keywords) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_send(iseq, (line_node), (id), (VALUE)(argc), (block), (VALUE)(flag), (keywords)))
+
+#define ADD_TRACE(seq, event) \
+ ADD_ELEM((seq), (LINK_ELEMENT *)new_trace_body(iseq, (event), 0))
+#define ADD_TRACE_WITH_DATA(seq, event, data) \
+ ADD_ELEM((seq), (LINK_ELEMENT *)new_trace_body(iseq, (event), (data)))
+
+static void iseq_add_getlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NODE *const line_node, int idx, int level);
+static void iseq_add_setlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NODE *const line_node, int idx, int level);
+
+#define ADD_GETLOCAL(seq, line_node, idx, level) iseq_add_getlocal(iseq, (seq), (line_node), (idx), (level))
+#define ADD_SETLOCAL(seq, line_node, idx, level) iseq_add_setlocal(iseq, (seq), (line_node), (idx), (level))
+
+/* add label */
+#define ADD_LABEL(seq, label) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) (label))
+
+#define APPEND_LABEL(seq, before, label) \
+ APPEND_ELEM((seq), (before), (LINK_ELEMENT *) (label))
+
+#define ADD_ADJUST(seq, line_node, label) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), nd_line(line_node)))
+
+#define ADD_ADJUST_RESTORE(seq, label) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), -1))
+
+#define LABEL_UNREMOVABLE(label) \
+ ((label) ? (LABEL_REF(label), (label)->unremovable=1) : 0)
+#define ADD_CATCH_ENTRY(type, ls, le, iseqv, lc) do { \
+ VALUE _e = rb_ary_new3(5, (type), \
+ (VALUE)(ls) | 1, (VALUE)(le) | 1, \
+ (VALUE)(iseqv), (VALUE)(lc) | 1); \
+ LABEL_UNREMOVABLE(ls); \
+ LABEL_REF(le); \
+ LABEL_REF(lc); \
+ if (NIL_P(ISEQ_COMPILE_DATA(iseq)->catch_table_ary)) \
+ RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->catch_table_ary, rb_ary_hidden_new(3)); \
+ rb_ary_push(ISEQ_COMPILE_DATA(iseq)->catch_table_ary, freeze_hide_obj(_e)); \
+} while (0)
+
+/* compile node */
+#define COMPILE(anchor, desc, node) \
+ (debug_compile("== " desc "\n", \
+ iseq_compile_each(iseq, (anchor), (node), 0)))
+
+/* compile node, this node's value will be popped */
+#define COMPILE_POPPED(anchor, desc, node) \
+ (debug_compile("== " desc "\n", \
+ iseq_compile_each(iseq, (anchor), (node), 1)))
+
+/* compile node, which is popped when 'popped' is true */
+#define COMPILE_(anchor, desc, node, popped) \
+ (debug_compile("== " desc "\n", \
+ iseq_compile_each(iseq, (anchor), (node), (popped))))
+
+#define COMPILE_RECV(anchor, desc, node) \
+ (private_recv_p(node) ? \
+ (ADD_INSN(anchor, node, putself), VM_CALL_FCALL) : \
+ COMPILE(anchor, desc, node->nd_recv) ? 0 : -1)
+
+#define OPERAND_AT(insn, idx) \
+ (((INSN*)(insn))->operands[(idx)])
+
+#define INSN_OF(insn) \
+ (((INSN*)(insn))->insn_id)
+
+#define IS_INSN(link) ((link)->type == ISEQ_ELEMENT_INSN)
+#define IS_LABEL(link) ((link)->type == ISEQ_ELEMENT_LABEL)
+#define IS_ADJUST(link) ((link)->type == ISEQ_ELEMENT_ADJUST)
+#define IS_TRACE(link) ((link)->type == ISEQ_ELEMENT_TRACE)
+#define IS_INSN_ID(iobj, insn) (INSN_OF(iobj) == BIN(insn))
+#define IS_NEXT_INSN_ID(link, insn) \
+ ((link)->next && IS_INSN((link)->next) && IS_INSN_ID((link)->next, insn))
+
+/* error */
+#if CPDEBUG > 0
+RBIMPL_ATTR_NORETURN()
+#endif
+RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 4)
+static void
+append_compile_error(const rb_iseq_t *iseq, int line, const char *fmt, ...)
+{
+ VALUE err_info = ISEQ_COMPILE_DATA(iseq)->err_info;
+ VALUE file = rb_iseq_path(iseq);
+ VALUE err = err_info == Qtrue ? Qfalse : err_info;
+ va_list args;
+
+ va_start(args, fmt);
+ err = rb_syntax_error_append(err, file, line, -1, NULL, fmt, args);
+ va_end(args);
+ if (NIL_P(err_info)) {
+ RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->err_info, err);
+ rb_set_errinfo(err);
+ }
+ else if (!err_info) {
+ RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->err_info, Qtrue);
+ }
+ if (compile_debug) {
+ if (SPECIAL_CONST_P(err)) err = rb_eSyntaxError;
+ rb_exc_fatal(err);
+ }
+}
+
+#if 0
+static void
+compile_bug(rb_iseq_t *iseq, int line, const char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ rb_report_bug_valist(rb_iseq_path(iseq), line, fmt, args);
+ va_end(args);
+ abort();
+}
+#endif
+
+#define COMPILE_ERROR append_compile_error
+
+#define ERROR_ARGS_AT(n) iseq, nd_line(n),
+#define ERROR_ARGS ERROR_ARGS_AT(node)
+
+#define EXPECT_NODE(prefix, node, ndtype, errval) \
+do { \
+ const NODE *error_node = (node); \
+ enum node_type error_type = nd_type(error_node); \
+ if (error_type != (ndtype)) { \
+ COMPILE_ERROR(ERROR_ARGS_AT(error_node) \
+ prefix ": " #ndtype " is expected, but %s", \
+ ruby_node_name(error_type)); \
+ return errval; \
+ } \
+} while (0)
+
+#define EXPECT_NODE_NONULL(prefix, parent, ndtype, errval) \
+do { \
+ COMPILE_ERROR(ERROR_ARGS_AT(parent) \
+ prefix ": must be " #ndtype ", but 0"); \
+ return errval; \
+} while (0)
+
+#define UNKNOWN_NODE(prefix, node, errval) \
+do { \
+ const NODE *error_node = (node); \
+ COMPILE_ERROR(ERROR_ARGS_AT(error_node) prefix ": unknown node (%s)", \
+ ruby_node_name(nd_type(error_node))); \
+ return errval; \
+} while (0)
+
+#define COMPILE_OK 1
+#define COMPILE_NG 0
+
+#define CHECK(sub) if (!(sub)) {BEFORE_RETURN;return COMPILE_NG;}
+#define NO_CHECK(sub) (void)(sub)
+#define BEFORE_RETURN
+
+/* leave name uninitialized so that compiler warn if INIT_ANCHOR is
+ * missing */
+#define DECL_ANCHOR(name) \
+ LINK_ANCHOR name[1] = {{{ISEQ_ELEMENT_ANCHOR,},}}
+#define INIT_ANCHOR(name) \
+ (name->last = &name->anchor)
+
+static inline VALUE
+freeze_hide_obj(VALUE obj)
+{
+ OBJ_FREEZE(obj);
+ RBASIC_CLEAR_CLASS(obj);
+ return obj;
+}
+
+#include "optinsn.inc"
+#if OPT_INSTRUCTIONS_UNIFICATION
+#include "optunifs.inc"
+#endif
+
+/* for debug */
+#if CPDEBUG < 0
+#define ISEQ_ARG iseq,
+#define ISEQ_ARG_DECLARE rb_iseq_t *iseq,
+#else
+#define ISEQ_ARG
+#define ISEQ_ARG_DECLARE
+#endif
+
+#if CPDEBUG
+#define gl_node_level ISEQ_COMPILE_DATA(iseq)->node_level
+#endif
+
+static void dump_disasm_list_with_cursor(const LINK_ELEMENT *link, const LINK_ELEMENT *curr, const LABEL *dest);
+static void dump_disasm_list(const LINK_ELEMENT *elem);
+
+static int insn_data_length(INSN *iobj);
+static int calc_sp_depth(int depth, INSN *iobj);
+
+static INSN *new_insn_body(rb_iseq_t *iseq, const NODE *const line_node, enum ruby_vminsn_type insn_id, int argc, ...);
+static LABEL *new_label_body(rb_iseq_t *iseq, long line);
+static ADJUST *new_adjust_body(rb_iseq_t *iseq, LABEL *label, int line);
+static TRACE *new_trace_body(rb_iseq_t *iseq, rb_event_flag_t event, long data);
+
+
+static int iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *anchor, const NODE *n, int);
+static int iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
+static int iseq_setup_insn(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
+static int iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
+static int iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
+
+static int iseq_set_local_table(rb_iseq_t *iseq, const rb_ast_id_table_t *tbl);
+static int iseq_set_exception_local_table(rb_iseq_t *iseq);
+static int iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *const anchor, const NODE *const node);
+
+static int iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
+static int iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
+static int iseq_set_exception_table(rb_iseq_t *iseq);
+static int iseq_set_optargs_table(rb_iseq_t *iseq);
+
+static int compile_defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE needstr);
+static int compile_hash(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, int method_call_keywords, int popped);
+
+/*
+ * To make Array to LinkedList, use link_anchor
+ */
+
+static void
+verify_list(ISEQ_ARG_DECLARE const char *info, LINK_ANCHOR *const anchor)
+{
+#if CPDEBUG
+ int flag = 0;
+ LINK_ELEMENT *list, *plist;
+
+ if (!compile_debug) return;
+
+ list = anchor->anchor.next;
+ plist = &anchor->anchor;
+ while (list) {
+ if (plist != list->prev) {
+ flag += 1;
+ }
+ plist = list;
+ list = list->next;
+ }
+
+ if (anchor->last != plist && anchor->last != 0) {
+ flag |= 0x70000;
+ }
+
+ if (flag != 0) {
+ rb_bug("list verify error: %08x (%s)", flag, info);
+ }
+#endif
+}
+#if CPDEBUG < 0
+#define verify_list(info, anchor) verify_list(iseq, (info), (anchor))
+#endif
+
+static void
+verify_call_cache(rb_iseq_t *iseq)
+{
+#if CPDEBUG
+ VALUE *original = rb_iseq_original_iseq(iseq);
+ size_t i = 0;
+ while (i < ISEQ_BODY(iseq)->iseq_size) {
+ VALUE insn = original[i];
+ const char *types = insn_op_types(insn);
+
+ for (int j=0; types[j]; j++) {
+ if (types[j] == TS_CALLDATA) {
+ struct rb_call_data *cd = (struct rb_call_data *)original[i+j+1];
+ const struct rb_callinfo *ci = cd->ci;
+ const struct rb_callcache *cc = cd->cc;
+ if (cc != vm_cc_empty()) {
+ vm_ci_dump(ci);
+ rb_bug("call cache is not initialized by vm_cc_empty()");
+ }
+ }
+ }
+ i += insn_len(insn);
+ }
+
+ for (unsigned int i=0; i<ISEQ_BODY(iseq)->ci_size; i++) {
+ struct rb_call_data *cd = &ISEQ_BODY(iseq)->call_data[i];
+ const struct rb_callinfo *ci = cd->ci;
+ const struct rb_callcache *cc = cd->cc;
+ if (cc != NULL && cc != vm_cc_empty()) {
+ vm_ci_dump(ci);
+ rb_bug("call cache is not initialized by vm_cc_empty()");
+ }
+ }
+#endif
+}
+
+/*
+ * elem1, elem2 => elem1, elem2, elem
+ */
+static void
+ADD_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *const anchor, LINK_ELEMENT *elem)
+{
+ elem->prev = anchor->last;
+ anchor->last->next = elem;
+ anchor->last = elem;
+ verify_list("add", anchor);
+}
+
+/*
+ * elem1, before, elem2 => elem1, before, elem, elem2
+ */
+static void
+APPEND_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *const anchor, LINK_ELEMENT *before, LINK_ELEMENT *elem)
+{
+ elem->prev = before;
+ elem->next = before->next;
+ elem->next->prev = elem;
+ before->next = elem;
+ if (before == anchor->last) anchor->last = elem;
+ verify_list("add", anchor);
+}
+#if CPDEBUG < 0
+#define ADD_ELEM(anchor, elem) ADD_ELEM(iseq, (anchor), (elem))
+#define APPEND_ELEM(anchor, before, elem) APPEND_ELEM(iseq, (anchor), (before), (elem))
+#endif
+
+static int
+branch_coverage_valid_p(rb_iseq_t *iseq, int first_line)
+{
+ if (!ISEQ_COVERAGE(iseq)) return 0;
+ if (!ISEQ_BRANCH_COVERAGE(iseq)) return 0;
+ if (first_line <= 0) return 0;
+ return 1;
+}
+
+static VALUE
+decl_branch_base(rb_iseq_t *iseq, const NODE *node, const char *type)
+{
+ const int first_lineno = nd_first_lineno(node), first_column = nd_first_column(node);
+ const int last_lineno = nd_last_lineno(node), last_column = nd_last_column(node);
+
+ if (!branch_coverage_valid_p(iseq, first_lineno)) return Qundef;
+
+ /*
+ * if !structure[node]
+ * structure[node] = [type, first_lineno, first_column, last_lineno, last_column, branches = {}]
+ * else
+ * branches = structure[node][5]
+ * end
+ */
+
+ VALUE structure = RARRAY_AREF(ISEQ_BRANCH_COVERAGE(iseq), 0);
+ VALUE key = (VALUE)node | 1; // FIXNUM for hash key
+ VALUE branch_base = rb_hash_aref(structure, key);
+ VALUE branches;
+
+ if (NIL_P(branch_base)) {
+ branch_base = rb_ary_hidden_new(6);
+ rb_hash_aset(structure, key, branch_base);
+ rb_ary_push(branch_base, ID2SYM(rb_intern(type)));
+ rb_ary_push(branch_base, INT2FIX(first_lineno));
+ rb_ary_push(branch_base, INT2FIX(first_column));
+ rb_ary_push(branch_base, INT2FIX(last_lineno));
+ rb_ary_push(branch_base, INT2FIX(last_column));
+ branches = rb_hash_new();
+ rb_obj_hide(branches);
+ rb_ary_push(branch_base, branches);
+ }
+ else {
+ branches = RARRAY_AREF(branch_base, 5);
+ }
+
+ return branches;
+}
+
+static NODE
+generate_dummy_line_node(int lineno, int node_id)
+{
+ NODE dummy = { 0 };
+ nd_set_line(&dummy, lineno);
+ nd_set_node_id(&dummy, node_id);
+ return dummy;
+}
+
+static void
+add_trace_branch_coverage(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NODE *node, int branch_id, const char *type, VALUE branches)
+{
+ const int first_lineno = nd_first_lineno(node), first_column = nd_first_column(node);
+ const int last_lineno = nd_last_lineno(node), last_column = nd_last_column(node);
+
+ if (!branch_coverage_valid_p(iseq, first_lineno)) return;
+
+ /*
+ * if !branches[branch_id]
+ * branches[branch_id] = [type, first_lineno, first_column, last_lineno, last_column, counter_idx]
+ * else
+ * counter_idx= branches[branch_id][5]
+ * end
+ */
+
+ VALUE key = INT2FIX(branch_id);
+ VALUE branch = rb_hash_aref(branches, key);
+ long counter_idx;
+
+ if (NIL_P(branch)) {
+ branch = rb_ary_hidden_new(6);
+ rb_hash_aset(branches, key, branch);
+ rb_ary_push(branch, ID2SYM(rb_intern(type)));
+ rb_ary_push(branch, INT2FIX(first_lineno));
+ rb_ary_push(branch, INT2FIX(first_column));
+ rb_ary_push(branch, INT2FIX(last_lineno));
+ rb_ary_push(branch, INT2FIX(last_column));
+ VALUE counters = RARRAY_AREF(ISEQ_BRANCH_COVERAGE(iseq), 1);
+ counter_idx = RARRAY_LEN(counters);
+ rb_ary_push(branch, LONG2FIX(counter_idx));
+ rb_ary_push(counters, INT2FIX(0));
+ }
+ else {
+ counter_idx = FIX2LONG(RARRAY_AREF(branch, 5));
+ }
+
+ ADD_TRACE_WITH_DATA(seq, RUBY_EVENT_COVERAGE_BRANCH, counter_idx);
+
+ NODE dummy_line_node = generate_dummy_line_node(last_lineno, nd_node_id(node));
+ ADD_INSN(seq, &dummy_line_node, nop);
+}
+
+#define ISEQ_LAST_LINE(iseq) (ISEQ_COMPILE_DATA(iseq)->last_line)
+
+static int
+validate_label(st_data_t name, st_data_t label, st_data_t arg)
+{
+ rb_iseq_t *iseq = (rb_iseq_t *)arg;
+ LABEL *lobj = (LABEL *)label;
+ if (!lobj->link.next) {
+ do {
+ COMPILE_ERROR(iseq, lobj->position,
+ "%"PRIsVALUE": undefined label",
+ rb_sym2str((VALUE)name));
+ } while (0);
+ }
+ return ST_CONTINUE;
+}
+
+static void
+validate_labels(rb_iseq_t *iseq, st_table *labels_table)
+{
+ st_foreach(labels_table, validate_label, (st_data_t)iseq);
+ st_free_table(labels_table);
+}
+
+VALUE
+rb_iseq_compile_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func * ifunc)
+{
+ DECL_ANCHOR(ret);
+ INIT_ANCHOR(ret);
+
+ (*ifunc->func)(iseq, ret, ifunc->data);
+
+ NODE dummy_line_node = generate_dummy_line_node(ISEQ_COMPILE_DATA(iseq)->last_line, -1);
+ ADD_INSN(ret, &dummy_line_node, leave);
+
+ CHECK(iseq_setup_insn(iseq, ret));
+ return iseq_setup(iseq, ret);
+}
+
+VALUE
+rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node)
+{
+ DECL_ANCHOR(ret);
+ INIT_ANCHOR(ret);
+
+ if (IMEMO_TYPE_P(node, imemo_ifunc)) {
+ rb_raise(rb_eArgError, "unexpected imemo_ifunc");
+ }
+
+ if (node == 0) {
+ NO_CHECK(COMPILE(ret, "nil", node));
+ iseq_set_local_table(iseq, 0);
+ }
+ /* assume node is T_NODE */
+ else if (nd_type_p(node, NODE_SCOPE)) {
+ /* iseq type of top, method, class, block */
+ iseq_set_local_table(iseq, node->nd_tbl);
+ iseq_set_arguments(iseq, ret, node->nd_args);
+
+ switch (ISEQ_BODY(iseq)->type) {
+ case ISEQ_TYPE_BLOCK:
+ {
+ LABEL *start = ISEQ_COMPILE_DATA(iseq)->start_label = NEW_LABEL(0);
+ LABEL *end = ISEQ_COMPILE_DATA(iseq)->end_label = NEW_LABEL(0);
+
+ start->rescued = LABEL_RESCUE_BEG;
+ end->rescued = LABEL_RESCUE_END;
+
+ ADD_TRACE(ret, RUBY_EVENT_B_CALL);
+ NODE dummy_line_node = generate_dummy_line_node(ISEQ_BODY(iseq)->location.first_lineno, -1);
+ ADD_INSN (ret, &dummy_line_node, nop);
+ ADD_LABEL(ret, start);
+ CHECK(COMPILE(ret, "block body", node->nd_body));
+ ADD_LABEL(ret, end);
+ ADD_TRACE(ret, RUBY_EVENT_B_RETURN);
+ ISEQ_COMPILE_DATA(iseq)->last_line = ISEQ_BODY(iseq)->location.code_location.end_pos.lineno;
+
+ /* wide range catch handler must put at last */
+ ADD_CATCH_ENTRY(CATCH_TYPE_REDO, start, end, NULL, start);
+ ADD_CATCH_ENTRY(CATCH_TYPE_NEXT, start, end, NULL, end);
+ break;
+ }
+ case ISEQ_TYPE_CLASS:
+ {
+ ADD_TRACE(ret, RUBY_EVENT_CLASS);
+ CHECK(COMPILE(ret, "scoped node", node->nd_body));
+ ADD_TRACE(ret, RUBY_EVENT_END);
+ ISEQ_COMPILE_DATA(iseq)->last_line = nd_line(node);
+ break;
+ }
+ case ISEQ_TYPE_METHOD:
+ {
+ ISEQ_COMPILE_DATA(iseq)->root_node = node->nd_body;
+ ADD_TRACE(ret, RUBY_EVENT_CALL);
+ CHECK(COMPILE(ret, "scoped node", node->nd_body));
+ ISEQ_COMPILE_DATA(iseq)->root_node = node->nd_body;
+ ADD_TRACE(ret, RUBY_EVENT_RETURN);
+ ISEQ_COMPILE_DATA(iseq)->last_line = nd_line(node);
+ break;
+ }
+ default: {
+ CHECK(COMPILE(ret, "scoped node", node->nd_body));
+ break;
+ }
+ }
+ }
+ else {
+ const char *m;
+#define INVALID_ISEQ_TYPE(type) \
+ ISEQ_TYPE_##type: m = #type; goto invalid_iseq_type
+ switch (ISEQ_BODY(iseq)->type) {
+ case INVALID_ISEQ_TYPE(METHOD);
+ case INVALID_ISEQ_TYPE(CLASS);
+ case INVALID_ISEQ_TYPE(BLOCK);
+ case INVALID_ISEQ_TYPE(EVAL);
+ case INVALID_ISEQ_TYPE(MAIN);
+ case INVALID_ISEQ_TYPE(TOP);
+#undef INVALID_ISEQ_TYPE /* invalid iseq types end */
+ case ISEQ_TYPE_RESCUE:
+ iseq_set_exception_local_table(iseq);
+ CHECK(COMPILE(ret, "rescue", node));
+ break;
+ case ISEQ_TYPE_ENSURE:
+ iseq_set_exception_local_table(iseq);
+ CHECK(COMPILE_POPPED(ret, "ensure", node));
+ break;
+ case ISEQ_TYPE_PLAIN:
+ CHECK(COMPILE(ret, "ensure", node));
+ break;
+ default:
+ COMPILE_ERROR(ERROR_ARGS "unknown scope: %d", ISEQ_BODY(iseq)->type);
+ return COMPILE_NG;
+ invalid_iseq_type:
+ COMPILE_ERROR(ERROR_ARGS "compile/ISEQ_TYPE_%s should not be reached", m);
+ return COMPILE_NG;
+ }
+ }
+
+ if (ISEQ_BODY(iseq)->type == ISEQ_TYPE_RESCUE || ISEQ_BODY(iseq)->type == ISEQ_TYPE_ENSURE) {
+ NODE dummy_line_node = generate_dummy_line_node(0, -1);
+ ADD_GETLOCAL(ret, &dummy_line_node, LVAR_ERRINFO, 0);
+ ADD_INSN1(ret, &dummy_line_node, throw, INT2FIX(0) /* continue throw */ );
+ }
+ else {
+ NODE dummy_line_node = generate_dummy_line_node(ISEQ_COMPILE_DATA(iseq)->last_line, -1);
+ ADD_INSN(ret, &dummy_line_node, leave);
+ }
+
+#if OPT_SUPPORT_JOKE
+ if (ISEQ_COMPILE_DATA(iseq)->labels_table) {
+ st_table *labels_table = ISEQ_COMPILE_DATA(iseq)->labels_table;
+ ISEQ_COMPILE_DATA(iseq)->labels_table = 0;
+ validate_labels(iseq, labels_table);
+ }
+#endif
+ CHECK(iseq_setup_insn(iseq, ret));
+ return iseq_setup(iseq, ret);
+}
+
+static int
+rb_iseq_translate_threaded_code(rb_iseq_t *iseq)
+{
+#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE
+ const void * const *table = rb_vm_get_insns_address_table();
+ unsigned int i;
+ VALUE *encoded = (VALUE *)ISEQ_BODY(iseq)->iseq_encoded;
+
+ for (i = 0; i < ISEQ_BODY(iseq)->iseq_size; /* */ ) {
+ int insn = (int)ISEQ_BODY(iseq)->iseq_encoded[i];
+ int len = insn_len(insn);
+ encoded[i] = (VALUE)table[insn];
+ i += len;
+ }
+ FL_SET((VALUE)iseq, ISEQ_TRANSLATED);
+#endif
+ return COMPILE_OK;
+}
+
+VALUE *
+rb_iseq_original_iseq(const rb_iseq_t *iseq) /* cold path */
+{
+ VALUE *original_code;
+
+ if (ISEQ_ORIGINAL_ISEQ(iseq)) return ISEQ_ORIGINAL_ISEQ(iseq);
+ original_code = ISEQ_ORIGINAL_ISEQ_ALLOC(iseq, ISEQ_BODY(iseq)->iseq_size);
+ MEMCPY(original_code, ISEQ_BODY(iseq)->iseq_encoded, VALUE, ISEQ_BODY(iseq)->iseq_size);
+
+#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE
+ {
+ unsigned int i;
+
+ for (i = 0; i < ISEQ_BODY(iseq)->iseq_size; /* */ ) {
+ const void *addr = (const void *)original_code[i];
+ const int insn = rb_vm_insn_addr2insn(addr);
+
+ original_code[i] = insn;
+ i += insn_len(insn);
+ }
+ }
+#endif
+ return original_code;
+}
+
+/*********************************************/
+/* definition of data structure for compiler */
+/*********************************************/
+
+/*
+ * On 32-bit SPARC, GCC by default generates SPARC V7 code that may require
+ * 8-byte word alignment. On the other hand, Oracle Solaris Studio seems to
+ * generate SPARCV8PLUS code with unaligned memory access instructions.
+ * That is why the STRICT_ALIGNMENT is defined only with GCC.
+ */
+#if defined(__sparc) && SIZEOF_VOIDP == 4 && defined(__GNUC__)
+ #define STRICT_ALIGNMENT
+#endif
+
+/*
+ * Some OpenBSD platforms (including sparc64) require strict alignment.
+ */
+#if defined(__OpenBSD__)
+ #include <sys/endian.h>
+ #ifdef __STRICT_ALIGNMENT
+ #define STRICT_ALIGNMENT
+ #endif
+#endif
+
+#ifdef STRICT_ALIGNMENT
+ #if defined(HAVE_TRUE_LONG_LONG) && SIZEOF_LONG_LONG > SIZEOF_VALUE
+ #define ALIGNMENT_SIZE SIZEOF_LONG_LONG
+ #else
+ #define ALIGNMENT_SIZE SIZEOF_VALUE
+ #endif
+ #define PADDING_SIZE_MAX ((size_t)((ALIGNMENT_SIZE) - 1))
+ #define ALIGNMENT_SIZE_MASK PADDING_SIZE_MAX
+ /* Note: ALIGNMENT_SIZE == (2 ** N) is expected. */
+#else
+ #define PADDING_SIZE_MAX 0
+#endif /* STRICT_ALIGNMENT */
+
+#ifdef STRICT_ALIGNMENT
+/* calculate padding size for aligned memory access */
+static size_t
+calc_padding(void *ptr, size_t size)
+{
+ size_t mis;
+ size_t padding = 0;
+
+ mis = (size_t)ptr & ALIGNMENT_SIZE_MASK;
+ if (mis > 0) {
+ padding = ALIGNMENT_SIZE - mis;
+ }
+/*
+ * On 32-bit sparc or equivalents, when a single VALUE is requested
+ * and padding == sizeof(VALUE), it is clear that no padding is needed.
+ */
+#if ALIGNMENT_SIZE > SIZEOF_VALUE
+ if (size == sizeof(VALUE) && padding == sizeof(VALUE)) {
+ padding = 0;
+ }
+#endif
+
+ return padding;
+}
+#endif /* STRICT_ALIGNMENT */
+
+static void *
+compile_data_alloc_with_arena(struct iseq_compile_data_storage **arena, size_t size)
+{
+ void *ptr = 0;
+ struct iseq_compile_data_storage *storage = *arena;
+#ifdef STRICT_ALIGNMENT
+ size_t padding = calc_padding((void *)&storage->buff[storage->pos], size);
+#else
+ const size_t padding = 0; /* expected to be optimized by compiler */
+#endif /* STRICT_ALIGNMENT */
+
+ if (size >= INT_MAX - padding) rb_memerror();
+ if (storage->pos + size + padding > storage->size) {
+ unsigned int alloc_size = storage->size;
+
+ while (alloc_size < size + PADDING_SIZE_MAX) {
+ if (alloc_size >= INT_MAX / 2) rb_memerror();
+ alloc_size *= 2;
+ }
+ storage->next = (void *)ALLOC_N(char, alloc_size +
+ offsetof(struct iseq_compile_data_storage, buff));
+ storage = *arena = storage->next;
+ storage->next = 0;
+ storage->pos = 0;
+ storage->size = alloc_size;
+#ifdef STRICT_ALIGNMENT
+ padding = calc_padding((void *)&storage->buff[storage->pos], size);
+#endif /* STRICT_ALIGNMENT */
+ }
+
+#ifdef STRICT_ALIGNMENT
+ storage->pos += (int)padding;
+#endif /* STRICT_ALIGNMENT */
+
+ ptr = (void *)&storage->buff[storage->pos];
+ storage->pos += (int)size;
+ return ptr;
+}
+
+static void *
+compile_data_alloc(rb_iseq_t *iseq, size_t size)
+{
+ struct iseq_compile_data_storage ** arena = &ISEQ_COMPILE_DATA(iseq)->node.storage_current;
+ return compile_data_alloc_with_arena(arena, size);
+}
+
+static inline void *
+compile_data_alloc2(rb_iseq_t *iseq, size_t x, size_t y)
+{
+ size_t size = rb_size_mul_or_raise(x, y, rb_eRuntimeError);
+ return compile_data_alloc(iseq, size);
+}
+
+static inline void *
+compile_data_calloc2(rb_iseq_t *iseq, size_t x, size_t y)
+{
+ size_t size = rb_size_mul_or_raise(x, y, rb_eRuntimeError);
+ void *p = compile_data_alloc(iseq, size);
+ memset(p, 0, size);
+ return p;
+}
+
+static INSN *
+compile_data_alloc_insn(rb_iseq_t *iseq)
+{
+ struct iseq_compile_data_storage ** arena = &ISEQ_COMPILE_DATA(iseq)->insn.storage_current;
+ return (INSN *)compile_data_alloc_with_arena(arena, sizeof(INSN));
+}
+
+static LABEL *
+compile_data_alloc_label(rb_iseq_t *iseq)
+{
+ return (LABEL *)compile_data_alloc(iseq, sizeof(LABEL));
+}
+
+static ADJUST *
+compile_data_alloc_adjust(rb_iseq_t *iseq)
+{
+ return (ADJUST *)compile_data_alloc(iseq, sizeof(ADJUST));
+}
+
+static TRACE *
+compile_data_alloc_trace(rb_iseq_t *iseq)
+{
+ return (TRACE *)compile_data_alloc(iseq, sizeof(TRACE));
+}
+
+/*
+ * elem1, elemX => elem1, elem2, elemX
+ */
+static void
+ELEM_INSERT_NEXT(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)
+{
+ elem2->next = elem1->next;
+ elem2->prev = elem1;
+ elem1->next = elem2;
+ if (elem2->next) {
+ elem2->next->prev = elem2;
+ }
+}
+
+/*
+ * elem1, elemX => elemX, elem2, elem1
+ */
+static void
+ELEM_INSERT_PREV(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)
+{
+ elem2->prev = elem1->prev;
+ elem2->next = elem1;
+ elem1->prev = elem2;
+ if (elem2->prev) {
+ elem2->prev->next = elem2;
+ }
+}
+
+/*
+ * elemX, elem1, elemY => elemX, elem2, elemY
+ */
+static void
+ELEM_REPLACE(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)
+{
+ elem2->prev = elem1->prev;
+ elem2->next = elem1->next;
+ if (elem1->prev) {
+ elem1->prev->next = elem2;
+ }
+ if (elem1->next) {
+ elem1->next->prev = elem2;
+ }
+}
+
+static void
+ELEM_REMOVE(LINK_ELEMENT *elem)
+{
+ elem->prev->next = elem->next;
+ if (elem->next) {
+ elem->next->prev = elem->prev;
+ }
+}
+
+static LINK_ELEMENT *
+FIRST_ELEMENT(const LINK_ANCHOR *const anchor)
+{
+ return anchor->anchor.next;
+}
+
+static LINK_ELEMENT *
+LAST_ELEMENT(LINK_ANCHOR *const anchor)
+{
+ return anchor->last;
+}
+
+static LINK_ELEMENT *
+ELEM_FIRST_INSN(LINK_ELEMENT *elem)
+{
+ while (elem) {
+ switch (elem->type) {
+ case ISEQ_ELEMENT_INSN:
+ case ISEQ_ELEMENT_ADJUST:
+ return elem;
+ default:
+ elem = elem->next;
+ }
+ }
+ return NULL;
+}
+
+static int
+LIST_INSN_SIZE_ONE(const LINK_ANCHOR *const anchor)
+{
+ LINK_ELEMENT *first_insn = ELEM_FIRST_INSN(FIRST_ELEMENT(anchor));
+ if (first_insn != NULL &&
+ ELEM_FIRST_INSN(first_insn->next) == NULL) {
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+}
+
+static int
+LIST_INSN_SIZE_ZERO(const LINK_ANCHOR *const anchor)
+{
+ if (ELEM_FIRST_INSN(FIRST_ELEMENT(anchor)) == NULL) {
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+}
+
+/*
+ * anc1: e1, e2, e3
+ * anc2: e4, e5
+ *#=>
+ * anc1: e1, e2, e3, e4, e5
+ * anc2: e4, e5 (broken)
+ */
+static void
+APPEND_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *const anc1, LINK_ANCHOR *const anc2)
+{
+ if (anc2->anchor.next) {
+ anc1->last->next = anc2->anchor.next;
+ anc2->anchor.next->prev = anc1->last;
+ anc1->last = anc2->last;
+ }
+ verify_list("append", anc1);
+}
+#if CPDEBUG < 0
+#define APPEND_LIST(anc1, anc2) APPEND_LIST(iseq, (anc1), (anc2))
+#endif
+
+#if CPDEBUG && 0
+static void
+debug_list(ISEQ_ARG_DECLARE LINK_ANCHOR *const anchor, LINK_ELEMENT *cur)
+{
+ LINK_ELEMENT *list = FIRST_ELEMENT(anchor);
+ printf("----\n");
+ printf("anch: %p, frst: %p, last: %p\n", (void *)&anchor->anchor,
+ (void *)anchor->anchor.next, (void *)anchor->last);
+ while (list) {
+ printf("curr: %p, next: %p, prev: %p, type: %d\n", (void *)list, (void *)list->next,
+ (void *)list->prev, (int)list->type);
+ list = list->next;
+ }
+ printf("----\n");
+
+ dump_disasm_list_with_cursor(anchor->anchor.next, cur, 0);
+ verify_list("debug list", anchor);
+}
+#if CPDEBUG < 0
+#define debug_list(anc, cur) debug_list(iseq, (anc), (cur))
+#endif
+#else
+#define debug_list(anc, cur) ((void)0)
+#endif
+
+static TRACE *
+new_trace_body(rb_iseq_t *iseq, rb_event_flag_t event, long data)
+{
+ TRACE *trace = compile_data_alloc_trace(iseq);
+
+ trace->link.type = ISEQ_ELEMENT_TRACE;
+ trace->link.next = NULL;
+ trace->event = event;
+ trace->data = data;
+
+ return trace;
+}
+
+static LABEL *
+new_label_body(rb_iseq_t *iseq, long line)
+{
+ LABEL *labelobj = compile_data_alloc_label(iseq);
+
+ labelobj->link.type = ISEQ_ELEMENT_LABEL;
+ labelobj->link.next = 0;
+
+ labelobj->label_no = ISEQ_COMPILE_DATA(iseq)->label_no++;
+ labelobj->sc_state = 0;
+ labelobj->sp = -1;
+ labelobj->refcnt = 0;
+ labelobj->set = 0;
+ labelobj->rescued = LABEL_RESCUE_NONE;
+ labelobj->unremovable = 0;
+ return labelobj;
+}
+
+static ADJUST *
+new_adjust_body(rb_iseq_t *iseq, LABEL *label, int line)
+{
+ ADJUST *adjust = compile_data_alloc_adjust(iseq);
+ adjust->link.type = ISEQ_ELEMENT_ADJUST;
+ adjust->link.next = 0;
+ adjust->label = label;
+ adjust->line_no = line;
+ LABEL_UNREMOVABLE(label);
+ return adjust;
+}
+
+static void
+iseq_insn_each_markable_object(INSN *insn, void (*func)(VALUE *, VALUE), VALUE data)
+{
+ const char *types = insn_op_types(insn->insn_id);
+ for (int j = 0; types[j]; j++) {
+ char type = types[j];
+ switch (type) {
+ case TS_CDHASH:
+ case TS_ISEQ:
+ case TS_VALUE:
+ case TS_IC: // constant path array
+ case TS_CALLDATA: // ci is stored.
+ func(&OPERAND_AT(insn, j), data);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+static void
+iseq_insn_each_object_write_barrier(VALUE *obj_ptr, VALUE iseq)
+{
+ RB_OBJ_WRITTEN(iseq, Qundef, *obj_ptr);
+}
+
+static INSN *
+new_insn_core(rb_iseq_t *iseq, const NODE *line_node,
+ int insn_id, int argc, VALUE *argv)
+{
+ INSN *iobj = compile_data_alloc_insn(iseq);
+
+ /* printf("insn_id: %d, line: %d\n", insn_id, nd_line(line_node)); */
+
+ iobj->link.type = ISEQ_ELEMENT_INSN;
+ iobj->link.next = 0;
+ iobj->insn_id = insn_id;
+ iobj->insn_info.line_no = nd_line(line_node);
+ iobj->insn_info.node_id = nd_node_id(line_node);
+ iobj->insn_info.events = 0;
+ iobj->operands = argv;
+ iobj->operand_size = argc;
+ iobj->sc_state = 0;
+
+ iseq_insn_each_markable_object(iobj, iseq_insn_each_object_write_barrier, (VALUE)iseq);
+
+ return iobj;
+}
+
+static INSN *
+new_insn_body(rb_iseq_t *iseq, const NODE *const line_node, enum ruby_vminsn_type insn_id, int argc, ...)
+{
+ VALUE *operands = 0;
+ va_list argv;
+ if (argc > 0) {
+ int i;
+ va_start(argv, argc);
+ operands = compile_data_alloc2(iseq, sizeof(VALUE), argc);
+ for (i = 0; i < argc; i++) {
+ VALUE v = va_arg(argv, VALUE);
+ operands[i] = v;
+ }
+ va_end(argv);
+ }
+ return new_insn_core(iseq, line_node, insn_id, argc, operands);
+}
+
+static const struct rb_callinfo *
+new_callinfo(rb_iseq_t *iseq, ID mid, int argc, unsigned int flag, struct rb_callinfo_kwarg *kw_arg, int has_blockiseq)
+{
+ VM_ASSERT(argc >= 0);
+
+ if (!(flag & (VM_CALL_ARGS_SPLAT | VM_CALL_ARGS_BLOCKARG | VM_CALL_KW_SPLAT)) &&
+ kw_arg == NULL && !has_blockiseq) {
+ flag |= VM_CALL_ARGS_SIMPLE;
+ }
+
+ if (kw_arg) {
+ flag |= VM_CALL_KWARG;
+ argc += kw_arg->keyword_len;
+ }
+
+ ISEQ_BODY(iseq)->ci_size++;
+ const struct rb_callinfo *ci = vm_ci_new(mid, flag, argc, kw_arg);
+ RB_OBJ_WRITTEN(iseq, Qundef, ci);
+ return ci;
+}
+
+static INSN *
+new_insn_send(rb_iseq_t *iseq, const NODE *const line_node, ID id, VALUE argc, const rb_iseq_t *blockiseq, VALUE flag, struct rb_callinfo_kwarg *keywords)
+{
+ VALUE *operands = compile_data_calloc2(iseq, sizeof(VALUE), 2);
+ VALUE ci = (VALUE)new_callinfo(iseq, id, FIX2INT(argc), FIX2INT(flag), keywords, blockiseq != NULL);
+ operands[0] = ci;
+ operands[1] = (VALUE)blockiseq;
+ if (blockiseq) {
+ RB_OBJ_WRITTEN(iseq, Qundef, blockiseq);
+ }
+ INSN *insn = new_insn_core(iseq, line_node, BIN(send), 2, operands);
+ RB_OBJ_WRITTEN(iseq, Qundef, ci);
+ RB_GC_GUARD(ci);
+ return insn;
+}
+
+static rb_iseq_t *
+new_child_iseq(rb_iseq_t *iseq, const NODE *const node,
+ VALUE name, const rb_iseq_t *parent, enum rb_iseq_type type, int line_no)
+{
+ rb_iseq_t *ret_iseq;
+ rb_ast_body_t ast;
+
+ ast.root = node;
+ ast.compile_option = 0;
+ ast.script_lines = ISEQ_BODY(iseq)->variable.script_lines;
+
+ debugs("[new_child_iseq]> ---------------------------------------\n");
+ int isolated_depth = ISEQ_COMPILE_DATA(iseq)->isolated_depth;
+ ret_iseq = rb_iseq_new_with_opt(&ast, name,
+ rb_iseq_path(iseq), rb_iseq_realpath(iseq),
+ line_no, parent,
+ isolated_depth ? isolated_depth + 1 : 0,
+ type, ISEQ_COMPILE_DATA(iseq)->option);
+ debugs("[new_child_iseq]< ---------------------------------------\n");
+ return ret_iseq;
+}
+
+static rb_iseq_t *
+new_child_iseq_with_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func *ifunc,
+ VALUE name, const rb_iseq_t *parent, enum rb_iseq_type type, int line_no)
+{
+ rb_iseq_t *ret_iseq;
+
+ debugs("[new_child_iseq_with_callback]> ---------------------------------------\n");
+ ret_iseq = rb_iseq_new_with_callback(ifunc, name,
+ rb_iseq_path(iseq), rb_iseq_realpath(iseq),
+ line_no, parent, type, ISEQ_COMPILE_DATA(iseq)->option);
+ debugs("[new_child_iseq_with_callback]< ---------------------------------------\n");
+ return ret_iseq;
+}
+
+static void
+set_catch_except_p(struct rb_iseq_constant_body *body)
+{
+ body->catch_except_p = true;
+ if (body->parent_iseq != NULL) {
+ set_catch_except_p(ISEQ_BODY(body->parent_iseq));
+ }
+}
+
+/* Set body->catch_except_p to true if the ISeq may catch an exception. If it is false,
+ JIT-ed code may be optimized. If we are extremely conservative, we should set true
+ if catch table exists. But we want to optimize while loop, which always has catch
+ table entries for break/next/redo.
+
+ So this function sets true for limited ISeqs with break/next/redo catch table entries
+ whose child ISeq would really raise an exception. */
+static void
+update_catch_except_flags(struct rb_iseq_constant_body *body)
+{
+ unsigned int pos;
+ size_t i;
+ int insn;
+ const struct iseq_catch_table *ct = body->catch_table;
+
+ /* This assumes that a block has parent_iseq which may catch an exception from the block, and that
+ BREAK/NEXT/REDO catch table entries are used only when `throw` insn is used in the block. */
+ pos = 0;
+ while (pos < body->iseq_size) {
+ insn = rb_vm_insn_decode(body->iseq_encoded[pos]);
+ if (insn == BIN(throw)) {
+ set_catch_except_p(body);
+ break;
+ }
+ pos += insn_len(insn);
+ }
+
+ if (ct == NULL)
+ return;
+
+ for (i = 0; i < ct->size; i++) {
+ const struct iseq_catch_table_entry *entry =
+ UNALIGNED_MEMBER_PTR(ct, entries[i]);
+ if (entry->type != CATCH_TYPE_BREAK
+ && entry->type != CATCH_TYPE_NEXT
+ && entry->type != CATCH_TYPE_REDO) {
+ body->catch_except_p = true;
+ break;
+ }
+ }
+}
+
+static void
+iseq_insert_nop_between_end_and_cont(rb_iseq_t *iseq)
+{
+ VALUE catch_table_ary = ISEQ_COMPILE_DATA(iseq)->catch_table_ary;
+ if (NIL_P(catch_table_ary)) return;
+ unsigned int i, tlen = (unsigned int)RARRAY_LEN(catch_table_ary);
+ const VALUE *tptr = RARRAY_CONST_PTR_TRANSIENT(catch_table_ary);
+ for (i = 0; i < tlen; i++) {
+ const VALUE *ptr = RARRAY_CONST_PTR_TRANSIENT(tptr[i]);
+ LINK_ELEMENT *end = (LINK_ELEMENT *)(ptr[2] & ~1);
+ LINK_ELEMENT *cont = (LINK_ELEMENT *)(ptr[4] & ~1);
+ LINK_ELEMENT *e;
+
+ enum rb_catch_type ct = (enum rb_catch_type)(ptr[0] & 0xffff);
+
+ if (ct != CATCH_TYPE_BREAK
+ && ct != CATCH_TYPE_NEXT
+ && ct != CATCH_TYPE_REDO) {
+
+ for (e = end; e && (IS_LABEL(e) || IS_TRACE(e)); e = e->next) {
+ if (e == cont) {
+ NODE dummy_line_node = generate_dummy_line_node(0, -1);
+ INSN *nop = new_insn_core(iseq, &dummy_line_node, BIN(nop), 0, 0);
+ ELEM_INSERT_NEXT(end, &nop->link);
+ break;
+ }
+ }
+ }
+ }
+}
+
+static int
+iseq_setup_insn(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
+{
+ if (RTEST(ISEQ_COMPILE_DATA(iseq)->err_info))
+ return COMPILE_NG;
+
+ /* debugs("[compile step 2] (iseq_array_to_linkedlist)\n"); */
+
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+
+ debugs("[compile step 3.1 (iseq_optimize)]\n");
+ iseq_optimize(iseq, anchor);
+
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+
+ if (ISEQ_COMPILE_DATA(iseq)->option->instructions_unification) {
+ debugs("[compile step 3.2 (iseq_insns_unification)]\n");
+ iseq_insns_unification(iseq, anchor);
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+ }
+
+ if (ISEQ_COMPILE_DATA(iseq)->option->stack_caching) {
+ debugs("[compile step 3.3 (iseq_set_sequence_stackcaching)]\n");
+ iseq_set_sequence_stackcaching(iseq, anchor);
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+ }
+
+ debugs("[compile step 3.4 (iseq_insert_nop_between_end_and_cont)]\n");
+ iseq_insert_nop_between_end_and_cont(iseq);
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+
+ return COMPILE_OK;
+}
+
+static int
+iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
+{
+ if (RTEST(ISEQ_COMPILE_DATA(iseq)->err_info))
+ return COMPILE_NG;
+
+ debugs("[compile step 4.1 (iseq_set_sequence)]\n");
+ if (!iseq_set_sequence(iseq, anchor)) return COMPILE_NG;
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+
+ debugs("[compile step 4.2 (iseq_set_exception_table)]\n");
+ if (!iseq_set_exception_table(iseq)) return COMPILE_NG;
+
+ debugs("[compile step 4.3 (set_optargs_table)] \n");
+ if (!iseq_set_optargs_table(iseq)) return COMPILE_NG;
+
+ debugs("[compile step 5 (iseq_translate_threaded_code)] \n");
+ if (!rb_iseq_translate_threaded_code(iseq)) return COMPILE_NG;
+
+ debugs("[compile step 6 (update_catch_except_flags)] \n");
+ update_catch_except_flags(ISEQ_BODY(iseq));
+
+ debugs("[compile step 6.1 (remove unused catch tables)] \n");
+ if (!ISEQ_BODY(iseq)->catch_except_p && ISEQ_BODY(iseq)->catch_table) {
+ xfree(ISEQ_BODY(iseq)->catch_table);
+ ISEQ_BODY(iseq)->catch_table = NULL;
+ }
+
+#if VM_INSN_INFO_TABLE_IMPL == 2
+ if (ISEQ_BODY(iseq)->insns_info.succ_index_table == NULL) {
+ debugs("[compile step 7 (rb_iseq_insns_info_encode_positions)] \n");
+ rb_iseq_insns_info_encode_positions(iseq);
+ }
+#endif
+
+ if (compile_debug > 1) {
+ VALUE str = rb_iseq_disasm(iseq);
+ printf("%s\n", StringValueCStr(str));
+ }
+ verify_call_cache(iseq);
+ debugs("[compile step: finish]\n");
+
+ return COMPILE_OK;
+}
+
+static int
+iseq_set_exception_local_table(rb_iseq_t *iseq)
+{
+ ISEQ_BODY(iseq)->local_table_size = numberof(rb_iseq_shared_exc_local_tbl);
+ ISEQ_BODY(iseq)->local_table = rb_iseq_shared_exc_local_tbl;
+ return COMPILE_OK;
+}
+
+static int
+get_lvar_level(const rb_iseq_t *iseq)
+{
+ int lev = 0;
+ while (iseq != ISEQ_BODY(iseq)->local_iseq) {
+ lev++;
+ iseq = ISEQ_BODY(iseq)->parent_iseq;
+ }
+ return lev;
+}
+
+static int
+get_dyna_var_idx_at_raw(const rb_iseq_t *iseq, ID id)
+{
+ unsigned int i;
+
+ for (i = 0; i < ISEQ_BODY(iseq)->local_table_size; i++) {
+ if (ISEQ_BODY(iseq)->local_table[i] == id) {
+ return (int)i;
+ }
+ }
+ return -1;
+}
+
+static int
+get_local_var_idx(const rb_iseq_t *iseq, ID id)
+{
+ int idx = get_dyna_var_idx_at_raw(ISEQ_BODY(iseq)->local_iseq, id);
+
+ if (idx < 0) {
+ COMPILE_ERROR(iseq, ISEQ_LAST_LINE(iseq),
+ "get_local_var_idx: %d", idx);
+ }
+
+ return idx;
+}
+
+static int
+get_dyna_var_idx(const rb_iseq_t *iseq, ID id, int *level, int *ls)
+{
+ int lv = 0, idx = -1;
+ const rb_iseq_t *const topmost_iseq = iseq;
+
+ while (iseq) {
+ idx = get_dyna_var_idx_at_raw(iseq, id);
+ if (idx >= 0) {
+ break;
+ }
+ iseq = ISEQ_BODY(iseq)->parent_iseq;
+ lv++;
+ }
+
+ if (idx < 0) {
+ COMPILE_ERROR(topmost_iseq, ISEQ_LAST_LINE(topmost_iseq),
+ "get_dyna_var_idx: -1");
+ }
+
+ *level = lv;
+ *ls = ISEQ_BODY(iseq)->local_table_size;
+ return idx;
+}
+
+static int
+iseq_local_block_param_p(const rb_iseq_t *iseq, unsigned int idx, unsigned int level)
+{
+ const struct rb_iseq_constant_body *body;
+ while (level > 0) {
+ iseq = ISEQ_BODY(iseq)->parent_iseq;
+ level--;
+ }
+ body = ISEQ_BODY(iseq);
+ if (body->local_iseq == iseq && /* local variables */
+ body->param.flags.has_block &&
+ body->local_table_size - body->param.block_start == idx) {
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+}
+
+static int
+iseq_block_param_id_p(const rb_iseq_t *iseq, ID id, int *pidx, int *plevel)
+{
+ int level, ls;
+ int idx = get_dyna_var_idx(iseq, id, &level, &ls);
+ if (iseq_local_block_param_p(iseq, ls - idx, level)) {
+ *pidx = ls - idx;
+ *plevel = level;
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+}
+
+static void
+access_outer_variables(const rb_iseq_t *iseq, int level, ID id, bool write)
+{
+ int isolated_depth = ISEQ_COMPILE_DATA(iseq)->isolated_depth;
+
+ if (isolated_depth && level >= isolated_depth) {
+ if (id == rb_intern("yield")) {
+ COMPILE_ERROR(iseq, ISEQ_LAST_LINE(iseq), "can not yield from isolated Proc");
+ }
+ else {
+ COMPILE_ERROR(iseq, ISEQ_LAST_LINE(iseq), "can not access variable `%s' from isolated Proc", rb_id2name(id));
+ }
+ }
+
+ for (int i=0; i<level; i++) {
+ VALUE val;
+ struct rb_id_table *ovs = ISEQ_BODY(iseq)->outer_variables;
+
+ if (!ovs) {
+ ovs = ISEQ_BODY(iseq)->outer_variables = rb_id_table_create(8);
+ }
+
+ if (rb_id_table_lookup(ISEQ_BODY(iseq)->outer_variables, id, &val)) {
+ if (write && !val) {
+ rb_id_table_insert(ISEQ_BODY(iseq)->outer_variables, id, Qtrue);
+ }
+ }
+ else {
+ rb_id_table_insert(ISEQ_BODY(iseq)->outer_variables, id, RBOOL(write));
+ }
+
+ iseq = ISEQ_BODY(iseq)->parent_iseq;
+ }
+}
+
+static ID
+iseq_lvar_id(const rb_iseq_t *iseq, int idx, int level)
+{
+ for (int i=0; i<level; i++) {
+ iseq = ISEQ_BODY(iseq)->parent_iseq;
+ }
+
+ ID id = ISEQ_BODY(iseq)->local_table[ISEQ_BODY(iseq)->local_table_size - idx];
+ // fprintf(stderr, "idx:%d level:%d ID:%s\n", idx, level, rb_id2name(id));
+ return id;
+}
+
+static void
+iseq_add_getlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NODE *const line_node, int idx, int level)
+{
+ if (iseq_local_block_param_p(iseq, idx, level)) {
+ ADD_INSN2(seq, line_node, getblockparam, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
+ }
+ else {
+ ADD_INSN2(seq, line_node, getlocal, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
+ }
+ if (level > 0) access_outer_variables(iseq, level, iseq_lvar_id(iseq, idx, level), Qfalse);
+}
+
+static void
+iseq_add_setlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NODE *const line_node, int idx, int level)
+{
+ if (iseq_local_block_param_p(iseq, idx, level)) {
+ ADD_INSN2(seq, line_node, setblockparam, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
+ }
+ else {
+ ADD_INSN2(seq, line_node, setlocal, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
+ }
+ if (level > 0) access_outer_variables(iseq, level, iseq_lvar_id(iseq, idx, level), Qtrue);
+}
+
+
+
+static void
+iseq_calc_param_size(rb_iseq_t *iseq)
+{
+ struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+ if (body->param.flags.has_opt ||
+ body->param.flags.has_post ||
+ body->param.flags.has_rest ||
+ body->param.flags.has_block ||
+ body->param.flags.has_kw ||
+ body->param.flags.has_kwrest) {
+
+ if (body->param.flags.has_block) {
+ body->param.size = body->param.block_start + 1;
+ }
+ else if (body->param.flags.has_kwrest) {
+ body->param.size = body->param.keyword->rest_start + 1;
+ }
+ else if (body->param.flags.has_kw) {
+ body->param.size = body->param.keyword->bits_start + 1;
+ }
+ else if (body->param.flags.has_post) {
+ body->param.size = body->param.post_start + body->param.post_num;
+ }
+ else if (body->param.flags.has_rest) {
+ body->param.size = body->param.rest_start + 1;
+ }
+ else if (body->param.flags.has_opt) {
+ body->param.size = body->param.lead_num + body->param.opt_num;
+ }
+ else {
+ UNREACHABLE;
+ }
+ }
+ else {
+ body->param.size = body->param.lead_num;
+ }
+}
+
+static int
+iseq_set_arguments_keywords(rb_iseq_t *iseq, LINK_ANCHOR *const optargs,
+ const struct rb_args_info *args, int arg_size)
+{
+ const NODE *node = args->kw_args;
+ struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+ struct rb_iseq_param_keyword *keyword;
+ const VALUE default_values = rb_ary_hidden_new(1);
+ const VALUE complex_mark = rb_str_tmp_new(0);
+ int kw = 0, rkw = 0, di = 0, i;
+
+ body->param.flags.has_kw = TRUE;
+ body->param.keyword = keyword = ZALLOC_N(struct rb_iseq_param_keyword, 1);
+
+ while (node) {
+ kw++;
+ node = node->nd_next;
+ }
+ arg_size += kw;
+ keyword->bits_start = arg_size++;
+
+ node = args->kw_args;
+ while (node) {
+ const NODE *val_node = node->nd_body->nd_value;
+ VALUE dv;
+
+ if (val_node == NODE_SPECIAL_REQUIRED_KEYWORD) {
+ ++rkw;
+ }
+ else {
+ switch (nd_type(val_node)) {
+ case NODE_LIT:
+ dv = val_node->nd_lit;
+ break;
+ case NODE_NIL:
+ dv = Qnil;
+ break;
+ case NODE_TRUE:
+ dv = Qtrue;
+ break;
+ case NODE_FALSE:
+ dv = Qfalse;
+ break;
+ default:
+ NO_CHECK(COMPILE_POPPED(optargs, "kwarg", node)); /* nd_type_p(node, NODE_KW_ARG) */
+ dv = complex_mark;
+ }
+
+ keyword->num = ++di;
+ rb_ary_push(default_values, dv);
+ }
+
+ node = node->nd_next;
+ }
+
+ keyword->num = kw;
+
+ if (args->kw_rest_arg->nd_vid != 0) {
+ keyword->rest_start = arg_size++;
+ body->param.flags.has_kwrest = TRUE;
+ }
+ keyword->required_num = rkw;
+ keyword->table = &body->local_table[keyword->bits_start - keyword->num];
+
+ {
+ VALUE *dvs = ALLOC_N(VALUE, RARRAY_LEN(default_values));
+
+ for (i = 0; i < RARRAY_LEN(default_values); i++) {
+ VALUE dv = RARRAY_AREF(default_values, i);
+ if (dv == complex_mark) dv = Qundef;
+ if (!SPECIAL_CONST_P(dv)) {
+ RB_OBJ_WRITTEN(iseq, Qundef, dv);
+ }
+ dvs[i] = dv;
+ }
+
+ keyword->default_values = dvs;
+ }
+ return arg_size;
+}
+
+static int
+iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *const optargs, const NODE *const node_args)
+{
+ debugs("iseq_set_arguments: %s\n", node_args ? "" : "0");
+
+ if (node_args) {
+ struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+ struct rb_args_info *args = node_args->nd_ainfo;
+ ID rest_id = 0;
+ int last_comma = 0;
+ ID block_id = 0;
+ int arg_size;
+
+ EXPECT_NODE("iseq_set_arguments", node_args, NODE_ARGS, COMPILE_NG);
+
+ body->param.flags.ruby2_keywords = args->ruby2_keywords;
+ body->param.lead_num = arg_size = (int)args->pre_args_num;
+ if (body->param.lead_num > 0) body->param.flags.has_lead = TRUE;
+ debugs(" - argc: %d\n", body->param.lead_num);
+
+ rest_id = args->rest_arg;
+ if (rest_id == NODE_SPECIAL_EXCESSIVE_COMMA) {
+ last_comma = 1;
+ rest_id = 0;
+ }
+ block_id = args->block_arg;
+
+ if (args->opt_args) {
+ const NODE *node = args->opt_args;
+ LABEL *label;
+ VALUE labels = rb_ary_hidden_new(1);
+ VALUE *opt_table;
+ int i = 0, j;
+
+ while (node) {
+ label = NEW_LABEL(nd_line(node));
+ rb_ary_push(labels, (VALUE)label | 1);
+ ADD_LABEL(optargs, label);
+ NO_CHECK(COMPILE_POPPED(optargs, "optarg", node->nd_body));
+ node = node->nd_next;
+ i += 1;
+ }
+
+ /* last label */
+ label = NEW_LABEL(nd_line(node_args));
+ rb_ary_push(labels, (VALUE)label | 1);
+ ADD_LABEL(optargs, label);
+
+ opt_table = ALLOC_N(VALUE, i+1);
+
+ MEMCPY(opt_table, RARRAY_CONST_PTR_TRANSIENT(labels), VALUE, i+1);
+ for (j = 0; j < i+1; j++) {
+ opt_table[j] &= ~1;
+ }
+ rb_ary_clear(labels);
+
+ body->param.flags.has_opt = TRUE;
+ body->param.opt_num = i;
+ body->param.opt_table = opt_table;
+ arg_size += i;
+ }
+
+ if (rest_id) {
+ body->param.rest_start = arg_size++;
+ body->param.flags.has_rest = TRUE;
+ assert(body->param.rest_start != -1);
+ }
+
+ if (args->first_post_arg) {
+ body->param.post_start = arg_size;
+ body->param.post_num = args->post_args_num;
+ body->param.flags.has_post = TRUE;
+ arg_size += args->post_args_num;
+
+ if (body->param.flags.has_rest) { /* TODO: why that? */
+ body->param.post_start = body->param.rest_start + 1;
+ }
+ }
+
+ if (args->kw_args) {
+ arg_size = iseq_set_arguments_keywords(iseq, optargs, args, arg_size);
+ }
+ else if (args->kw_rest_arg) {
+ struct rb_iseq_param_keyword *keyword = ZALLOC_N(struct rb_iseq_param_keyword, 1);
+ keyword->rest_start = arg_size++;
+ body->param.keyword = keyword;
+ body->param.flags.has_kwrest = TRUE;
+ }
+ else if (args->no_kwarg) {
+ body->param.flags.accepts_no_kwarg = TRUE;
+ }
+
+ if (block_id) {
+ body->param.block_start = arg_size++;
+ body->param.flags.has_block = TRUE;
+ }
+
+ iseq_calc_param_size(iseq);
+ body->param.size = arg_size;
+
+ if (args->pre_init) { /* m_init */
+ NO_CHECK(COMPILE_POPPED(optargs, "init arguments (m)", args->pre_init));
+ }
+ if (args->post_init) { /* p_init */
+ NO_CHECK(COMPILE_POPPED(optargs, "init arguments (p)", args->post_init));
+ }
+
+ if (body->type == ISEQ_TYPE_BLOCK) {
+ if (body->param.flags.has_opt == FALSE &&
+ body->param.flags.has_post == FALSE &&
+ body->param.flags.has_rest == FALSE &&
+ body->param.flags.has_kw == FALSE &&
+ body->param.flags.has_kwrest == FALSE) {
+
+ if (body->param.lead_num == 1 && last_comma == 0) {
+ /* {|a|} */
+ body->param.flags.ambiguous_param0 = TRUE;
+ }
+ }
+ }
+ }
+
+ return COMPILE_OK;
+}
+
+static int
+iseq_set_local_table(rb_iseq_t *iseq, const rb_ast_id_table_t *tbl)
+{
+ unsigned int size = tbl ? tbl->size : 0;
+
+ if (size > 0) {
+ ID *ids = (ID *)ALLOC_N(ID, size);
+ MEMCPY(ids, tbl->ids, ID, size);
+ ISEQ_BODY(iseq)->local_table = ids;
+ }
+ ISEQ_BODY(iseq)->local_table_size = size;
+
+ debugs("iseq_set_local_table: %u\n", ISEQ_BODY(iseq)->local_table_size);
+ return COMPILE_OK;
+}
+
+int
+rb_iseq_cdhash_cmp(VALUE val, VALUE lit)
+{
+ int tval, tlit;
+
+ if (val == lit) {
+ return 0;
+ }
+ else if ((tlit = OBJ_BUILTIN_TYPE(lit)) == -1) {
+ return val != lit;
+ }
+ else if ((tval = OBJ_BUILTIN_TYPE(val)) == -1) {
+ return -1;
+ }
+ else if (tlit != tval) {
+ return -1;
+ }
+ else if (tlit == T_SYMBOL) {
+ return val != lit;
+ }
+ else if (tlit == T_STRING) {
+ return rb_str_hash_cmp(lit, val);
+ }
+ else if (tlit == T_BIGNUM) {
+ long x = FIX2LONG(rb_big_cmp(lit, val));
+
+ /* Given lit and val are both Bignum, x must be -1, 0, 1.
+ * There is no need to call rb_fix2int here. */
+ RUBY_ASSERT((x == 1) || (x == 0) || (x == -1));
+ return (int)x;
+ }
+ else if (tlit == T_FLOAT) {
+ return rb_float_cmp(lit, val);
+ }
+ else if (tlit == T_RATIONAL) {
+ const struct RRational *rat1 = RRATIONAL(val);
+ const struct RRational *rat2 = RRATIONAL(lit);
+ return rb_iseq_cdhash_cmp(rat1->num, rat2->num) || rb_iseq_cdhash_cmp(rat1->den, rat2->den);
+ }
+ else if (tlit == T_COMPLEX) {
+ const struct RComplex *comp1 = RCOMPLEX(val);
+ const struct RComplex *comp2 = RCOMPLEX(lit);
+ return rb_iseq_cdhash_cmp(comp1->real, comp2->real) || rb_iseq_cdhash_cmp(comp1->imag, comp2->imag);
+ }
+ else if (tlit == T_REGEXP) {
+ return rb_reg_equal(val, lit) ? 0 : -1;
+ }
+ else {
+ UNREACHABLE_RETURN(-1);
+ }
+}
+
+st_index_t
+rb_iseq_cdhash_hash(VALUE a)
+{
+ switch (OBJ_BUILTIN_TYPE(a)) {
+ case -1:
+ case T_SYMBOL:
+ return (st_index_t)a;
+ case T_STRING:
+ return rb_str_hash(a);
+ case T_BIGNUM:
+ return FIX2LONG(rb_big_hash(a));
+ case T_FLOAT:
+ return rb_dbl_long_hash(RFLOAT_VALUE(a));
+ case T_RATIONAL:
+ return rb_rational_hash(a);
+ case T_COMPLEX:
+ return rb_complex_hash(a);
+ case T_REGEXP:
+ return NUM2LONG(rb_reg_hash(a));
+ default:
+ UNREACHABLE_RETURN(0);
+ }
+}
+
+static const struct st_hash_type cdhash_type = {
+ rb_iseq_cdhash_cmp,
+ rb_iseq_cdhash_hash,
+};
+
+struct cdhash_set_label_struct {
+ VALUE hash;
+ int pos;
+ int len;
+};
+
+static int
+cdhash_set_label_i(VALUE key, VALUE val, VALUE ptr)
+{
+ struct cdhash_set_label_struct *data = (struct cdhash_set_label_struct *)ptr;
+ LABEL *lobj = (LABEL *)(val & ~1);
+ rb_hash_aset(data->hash, key, INT2FIX(lobj->position - (data->pos+data->len)));
+ return ST_CONTINUE;
+}
+
+
+static inline VALUE
+get_ivar_ic_value(rb_iseq_t *iseq,ID id)
+{
+ return INT2FIX(ISEQ_BODY(iseq)->ivc_size++);
+}
+
+static inline VALUE
+get_cvar_ic_value(rb_iseq_t *iseq,ID id)
+{
+ VALUE val;
+ struct rb_id_table *tbl = ISEQ_COMPILE_DATA(iseq)->ivar_cache_table;
+ if (tbl) {
+ if (rb_id_table_lookup(tbl,id,&val)) {
+ return val;
+ }
+ }
+ else {
+ tbl = rb_id_table_create(1);
+ ISEQ_COMPILE_DATA(iseq)->ivar_cache_table = tbl;
+ }
+ val = INT2FIX(ISEQ_BODY(iseq)->icvarc_size++);
+ rb_id_table_insert(tbl,id,val);
+ return val;
+}
+
+#define BADINSN_DUMP(anchor, list, dest) \
+ dump_disasm_list_with_cursor(FIRST_ELEMENT(anchor), list, dest)
+
+#define BADINSN_ERROR \
+ (xfree(generated_iseq), \
+ xfree(insns_info), \
+ BADINSN_DUMP(anchor, list, NULL), \
+ COMPILE_ERROR)
+
+static int
+fix_sp_depth(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
+{
+ int stack_max = 0, sp = 0, line = 0;
+ LINK_ELEMENT *list;
+
+ for (list = FIRST_ELEMENT(anchor); list; list = list->next) {
+ if (IS_LABEL(list)) {
+ LABEL *lobj = (LABEL *)list;
+ lobj->set = TRUE;
+ }
+ }
+
+ for (list = FIRST_ELEMENT(anchor); list; list = list->next) {
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ int j, len, insn;
+ const char *types;
+ VALUE *operands;
+ INSN *iobj = (INSN *)list;
+
+ /* update sp */
+ sp = calc_sp_depth(sp, iobj);
+ if (sp < 0) {
+ BADINSN_DUMP(anchor, list, NULL);
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "argument stack underflow (%d)", sp);
+ return -1;
+ }
+ if (sp > stack_max) {
+ stack_max = sp;
+ }
+
+ line = iobj->insn_info.line_no;
+ /* fprintf(stderr, "insn: %-16s, sp: %d\n", insn_name(iobj->insn_id), sp); */
+ operands = iobj->operands;
+ insn = iobj->insn_id;
+ types = insn_op_types(insn);
+ len = insn_len(insn);
+
+ /* operand check */
+ if (iobj->operand_size != len - 1) {
+ /* printf("operand size miss! (%d, %d)\n", iobj->operand_size, len); */
+ BADINSN_DUMP(anchor, list, NULL);
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "operand size miss! (%d for %d)",
+ iobj->operand_size, len - 1);
+ return -1;
+ }
+
+ for (j = 0; types[j]; j++) {
+ if (types[j] == TS_OFFSET) {
+ /* label(destination position) */
+ LABEL *lobj = (LABEL *)operands[j];
+ if (!lobj->set) {
+ BADINSN_DUMP(anchor, list, NULL);
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "unknown label: "LABEL_FORMAT, lobj->label_no);
+ return -1;
+ }
+ if (lobj->sp == -1) {
+ lobj->sp = sp;
+ }
+ else if (lobj->sp != sp) {
+ debugs("%s:%d: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
+ RSTRING_PTR(rb_iseq_path(iseq)), line,
+ lobj->label_no, lobj->sp, sp);
+ }
+ }
+ }
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ LABEL *lobj = (LABEL *)list;
+ if (lobj->sp == -1) {
+ lobj->sp = sp;
+ }
+ else {
+ if (lobj->sp != sp) {
+ debugs("%s:%d: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
+ RSTRING_PTR(rb_iseq_path(iseq)), line,
+ lobj->label_no, lobj->sp, sp);
+ }
+ sp = lobj->sp;
+ }
+ break;
+ }
+ case ISEQ_ELEMENT_TRACE:
+ {
+ /* ignore */
+ break;
+ }
+ case ISEQ_ELEMENT_ADJUST:
+ {
+ ADJUST *adjust = (ADJUST *)list;
+ int orig_sp = sp;
+
+ sp = adjust->label ? adjust->label->sp : 0;
+ if (adjust->line_no != -1 && orig_sp - sp < 0) {
+ BADINSN_DUMP(anchor, list, NULL);
+ COMPILE_ERROR(iseq, adjust->line_no,
+ "iseq_set_sequence: adjust bug %d < %d",
+ orig_sp, sp);
+ return -1;
+ }
+ break;
+ }
+ default:
+ BADINSN_DUMP(anchor, list, NULL);
+ COMPILE_ERROR(iseq, line, "unknown list type: %d", list->type);
+ return -1;
+ }
+ }
+ return stack_max;
+}
+
+static int
+add_insn_info(struct iseq_insn_info_entry *insns_info, unsigned int *positions,
+ int insns_info_index, int code_index, const INSN *iobj)
+{
+ if (insns_info_index == 0 ||
+ insns_info[insns_info_index-1].line_no != iobj->insn_info.line_no ||
+#ifdef USE_ISEQ_NODE_ID
+ insns_info[insns_info_index-1].node_id != iobj->insn_info.node_id ||
+#endif
+ insns_info[insns_info_index-1].events != iobj->insn_info.events) {
+ insns_info[insns_info_index].line_no = iobj->insn_info.line_no;
+#ifdef USE_ISEQ_NODE_ID
+ insns_info[insns_info_index].node_id = iobj->insn_info.node_id;
+#endif
+ insns_info[insns_info_index].events = iobj->insn_info.events;
+ positions[insns_info_index] = code_index;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static int
+add_adjust_info(struct iseq_insn_info_entry *insns_info, unsigned int *positions,
+ int insns_info_index, int code_index, const ADJUST *adjust)
+{
+ insns_info[insns_info_index].line_no = adjust->line_no;
+ insns_info[insns_info_index].events = 0;
+ positions[insns_info_index] = code_index;
+ return TRUE;
+}
+
+static ID *
+array_to_idlist(VALUE arr)
+{
+ RUBY_ASSERT(RB_TYPE_P(arr, T_ARRAY));
+ long size = RARRAY_LEN(arr);
+ ID *ids = (ID *)ALLOC_N(ID, size + 1);
+ for (int i = 0; i < size; i++) {
+ VALUE sym = RARRAY_AREF(arr, i);
+ ids[i] = SYM2ID(sym);
+ }
+ ids[size] = 0;
+ return ids;
+}
+
+static VALUE
+idlist_to_array(const ID *ids)
+{
+ VALUE arr = rb_ary_new();
+ while (*ids) {
+ rb_ary_push(arr, ID2SYM(*ids++));
+ }
+ return arr;
+}
+
+/**
+ ruby insn object list -> raw instruction sequence
+ */
+static int
+iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
+{
+ struct iseq_insn_info_entry *insns_info;
+ struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+ unsigned int *positions;
+ LINK_ELEMENT *list;
+ VALUE *generated_iseq;
+ rb_event_flag_t events = 0;
+ long data = 0;
+
+ int insn_num, code_index, insns_info_index, sp = 0;
+ int stack_max = fix_sp_depth(iseq, anchor);
+
+ if (stack_max < 0) return COMPILE_NG;
+
+ /* fix label position */
+ insn_num = code_index = 0;
+ for (list = FIRST_ELEMENT(anchor); list; list = list->next) {
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ INSN *iobj = (INSN *)list;
+ /* update sp */
+ sp = calc_sp_depth(sp, iobj);
+ insn_num++;
+ events = iobj->insn_info.events |= events;
+ if (ISEQ_COVERAGE(iseq)) {
+ if (ISEQ_LINE_COVERAGE(iseq) && (events & RUBY_EVENT_COVERAGE_LINE) &&
+ !(rb_get_coverage_mode() & COVERAGE_TARGET_ONESHOT_LINES)) {
+ int line = iobj->insn_info.line_no - 1;
+ if (line >= 0 && line < RARRAY_LEN(ISEQ_LINE_COVERAGE(iseq))) {
+ RARRAY_ASET(ISEQ_LINE_COVERAGE(iseq), line, INT2FIX(0));
+ }
+ }
+ if (ISEQ_BRANCH_COVERAGE(iseq) && (events & RUBY_EVENT_COVERAGE_BRANCH)) {
+ while (RARRAY_LEN(ISEQ_PC2BRANCHINDEX(iseq)) <= code_index) {
+ rb_ary_push(ISEQ_PC2BRANCHINDEX(iseq), Qnil);
+ }
+ RARRAY_ASET(ISEQ_PC2BRANCHINDEX(iseq), code_index, INT2FIX(data));
+ }
+ }
+ code_index += insn_data_length(iobj);
+ events = 0;
+ data = 0;
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ LABEL *lobj = (LABEL *)list;
+ lobj->position = code_index;
+ if (lobj->sp != sp) {
+ debugs("%s: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
+ RSTRING_PTR(rb_iseq_path(iseq)),
+ lobj->label_no, lobj->sp, sp);
+ }
+ sp = lobj->sp;
+ break;
+ }
+ case ISEQ_ELEMENT_TRACE:
+ {
+ TRACE *trace = (TRACE *)list;
+ events |= trace->event;
+ if (trace->event & RUBY_EVENT_COVERAGE_BRANCH) data = trace->data;
+ break;
+ }
+ case ISEQ_ELEMENT_ADJUST:
+ {
+ ADJUST *adjust = (ADJUST *)list;
+ if (adjust->line_no != -1) {
+ int orig_sp = sp;
+ sp = adjust->label ? adjust->label->sp : 0;
+ if (orig_sp - sp > 0) {
+ if (orig_sp - sp > 1) code_index++; /* 1 operand */
+ code_index++; /* insn */
+ insn_num++;
+ }
+ }
+ break;
+ }
+ default: break;
+ }
+ }
+
+ /* make instruction sequence */
+ generated_iseq = ALLOC_N(VALUE, code_index);
+ insns_info = ALLOC_N(struct iseq_insn_info_entry, insn_num);
+ positions = ALLOC_N(unsigned int, insn_num);
+ body->is_entries = ZALLOC_N(union iseq_inline_storage_entry, ISEQ_IS_SIZE(body));
+ body->call_data = ZALLOC_N(struct rb_call_data, body->ci_size);
+ ISEQ_COMPILE_DATA(iseq)->ci_index = 0;
+
+ // Calculate the bitmask buffer size.
+ // Round the generated_iseq size up to the nearest multiple
+ // of the number of bits in an unsigned long.
+
+ // Allocate enough room for the bitmask list
+ iseq_bits_t * mark_offset_bits;
+ int code_size = code_index;
+
+ iseq_bits_t tmp[1] = {0};
+ bool needs_bitmap = false;
+
+ if (ISEQ_MBITS_BUFLEN(code_index) == 1) {
+ mark_offset_bits = tmp;
+ }
+ else {
+ mark_offset_bits = ZALLOC_N(iseq_bits_t, ISEQ_MBITS_BUFLEN(code_index));
+ }
+
+ list = FIRST_ELEMENT(anchor);
+ insns_info_index = code_index = sp = 0;
+
+ while (list) {
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ int j, len, insn;
+ const char *types;
+ VALUE *operands;
+ INSN *iobj = (INSN *)list;
+
+ /* update sp */
+ sp = calc_sp_depth(sp, iobj);
+ /* fprintf(stderr, "insn: %-16s, sp: %d\n", insn_name(iobj->insn_id), sp); */
+ operands = iobj->operands;
+ insn = iobj->insn_id;
+ generated_iseq[code_index] = insn;
+ types = insn_op_types(insn);
+ len = insn_len(insn);
+
+ for (j = 0; types[j]; j++) {
+ char type = types[j];
+
+ /* printf("--> [%c - (%d-%d)]\n", type, k, j); */
+ switch (type) {
+ case TS_OFFSET:
+ {
+ /* label(destination position) */
+ LABEL *lobj = (LABEL *)operands[j];
+ generated_iseq[code_index + 1 + j] = lobj->position - (code_index + len);
+ break;
+ }
+ case TS_CDHASH:
+ {
+ VALUE map = operands[j];
+ struct cdhash_set_label_struct data;
+ data.hash = map;
+ data.pos = code_index;
+ data.len = len;
+ rb_hash_foreach(map, cdhash_set_label_i, (VALUE)&data);
+
+ rb_hash_rehash(map);
+ freeze_hide_obj(map);
+ generated_iseq[code_index + 1 + j] = map;
+ ISEQ_MBITS_SET(mark_offset_bits, code_index + 1 + j);
+ RB_OBJ_WRITTEN(iseq, Qundef, map);
+ needs_bitmap = true;
+ break;
+ }
+ case TS_LINDEX:
+ case TS_NUM: /* ulong */
+ generated_iseq[code_index + 1 + j] = FIX2INT(operands[j]);
+ break;
+ case TS_ISEQ: /* iseq */
+ case TS_VALUE: /* VALUE */
+ {
+ VALUE v = operands[j];
+ generated_iseq[code_index + 1 + j] = v;
+ /* to mark ruby object */
+ if (!SPECIAL_CONST_P(v)) {
+ RB_OBJ_WRITTEN(iseq, Qundef, v);
+ ISEQ_MBITS_SET(mark_offset_bits, code_index + 1 + j);
+ needs_bitmap = true;
+ }
+ break;
+ }
+ /* [ TS_IVC | TS_ICVARC | TS_ISE | TS_IC ] */
+ case TS_IC: /* inline cache: constants */
+ {
+ unsigned int ic_index = ISEQ_COMPILE_DATA(iseq)->ic_index++;
+ IC ic = &ISEQ_IS_ENTRY_START(body, type)[ic_index].ic_cache;
+ if (UNLIKELY(ic_index >= body->ic_size)) {
+ BADINSN_DUMP(anchor, &iobj->link, 0);
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "iseq_set_sequence: ic_index overflow: index: %d, size: %d",
+ ic_index, ISEQ_IS_SIZE(body));
+ }
+
+ ic->segments = array_to_idlist(operands[j]);
+
+ generated_iseq[code_index + 1 + j] = (VALUE)ic;
+ }
+ break;
+ case TS_IVC: /* inline ivar cache */
+ {
+ unsigned int ic_index = FIX2UINT(operands[j]);
+
+ IVC cache = ((IVC)&body->is_entries[ic_index]);
+
+ if (insn == BIN(setinstancevariable)) {
+ cache->iv_set_name = SYM2ID(operands[j - 1]);
+ }
+ else {
+ cache->iv_set_name = 0;
+ }
+
+ vm_ic_attr_index_initialize(cache, INVALID_SHAPE_ID);
+ }
+ case TS_ISE: /* inline storage entry: `once` insn */
+ case TS_ICVARC: /* inline cvar cache */
+ {
+ unsigned int ic_index = FIX2UINT(operands[j]);
+ IC ic = &ISEQ_IS_ENTRY_START(body, type)[ic_index].ic_cache;
+ if (UNLIKELY(ic_index >= ISEQ_IS_SIZE(body))) {
+ BADINSN_DUMP(anchor, &iobj->link, 0);
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "iseq_set_sequence: ic_index overflow: index: %d, size: %d",
+ ic_index, ISEQ_IS_SIZE(body));
+ }
+ generated_iseq[code_index + 1 + j] = (VALUE)ic;
+
+ break;
+ }
+ case TS_CALLDATA:
+ {
+ const struct rb_callinfo *source_ci = (const struct rb_callinfo *)operands[j];
+ struct rb_call_data *cd = &body->call_data[ISEQ_COMPILE_DATA(iseq)->ci_index++];
+ assert(ISEQ_COMPILE_DATA(iseq)->ci_index <= body->ci_size);
+ cd->ci = source_ci;
+ cd->cc = vm_cc_empty();
+ generated_iseq[code_index + 1 + j] = (VALUE)cd;
+ break;
+ }
+ case TS_ID: /* ID */
+ generated_iseq[code_index + 1 + j] = SYM2ID(operands[j]);
+ break;
+ case TS_FUNCPTR:
+ generated_iseq[code_index + 1 + j] = operands[j];
+ break;
+ case TS_BUILTIN:
+ generated_iseq[code_index + 1 + j] = operands[j];
+ break;
+ default:
+ BADINSN_ERROR(iseq, iobj->insn_info.line_no,
+ "unknown operand type: %c", type);
+ return COMPILE_NG;
+ }
+ }
+ if (add_insn_info(insns_info, positions, insns_info_index, code_index, iobj)) insns_info_index++;
+ code_index += len;
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ LABEL *lobj = (LABEL *)list;
+ if (lobj->sp != sp) {
+ debugs("%s: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
+ RSTRING_PTR(rb_iseq_path(iseq)),
+ lobj->label_no, lobj->sp, sp);
+ }
+ sp = lobj->sp;
+ break;
+ }
+ case ISEQ_ELEMENT_ADJUST:
+ {
+ ADJUST *adjust = (ADJUST *)list;
+ int orig_sp = sp;
+
+ if (adjust->label) {
+ sp = adjust->label->sp;
+ }
+ else {
+ sp = 0;
+ }
+
+ if (adjust->line_no != -1) {
+ const int diff = orig_sp - sp;
+ if (diff > 0) {
+ if (insns_info_index == 0) {
+ COMPILE_ERROR(iseq, adjust->line_no,
+ "iseq_set_sequence: adjust bug (ISEQ_ELEMENT_ADJUST must not be the first in iseq)");
+ }
+ if (add_adjust_info(insns_info, positions, insns_info_index, code_index, adjust)) insns_info_index++;
+ }
+ if (diff > 1) {
+ generated_iseq[code_index++] = BIN(adjuststack);
+ generated_iseq[code_index++] = orig_sp - sp;
+ }
+ else if (diff == 1) {
+ generated_iseq[code_index++] = BIN(pop);
+ }
+ else if (diff < 0) {
+ int label_no = adjust->label ? adjust->label->label_no : -1;
+ xfree(generated_iseq);
+ xfree(insns_info);
+ xfree(positions);
+ if (ISEQ_MBITS_BUFLEN(code_size) > 1) {
+ xfree(mark_offset_bits);
+ }
+ debug_list(anchor, list);
+ COMPILE_ERROR(iseq, adjust->line_no,
+ "iseq_set_sequence: adjust bug to %d %d < %d",
+ label_no, orig_sp, sp);
+ return COMPILE_NG;
+ }
+ }
+ break;
+ }
+ default:
+ /* ignore */
+ break;
+ }
+ list = list->next;
+ }
+
+ body->iseq_encoded = (void *)generated_iseq;
+ body->iseq_size = code_index;
+ body->stack_max = stack_max;
+
+ if (ISEQ_MBITS_BUFLEN(body->iseq_size) == 1) {
+ body->mark_bits.single = mark_offset_bits[0];
+ }
+ else {
+ if (needs_bitmap) {
+ body->mark_bits.list = mark_offset_bits;
+ }
+ else {
+ body->mark_bits.list = 0;
+ ruby_xfree(mark_offset_bits);
+ }
+ }
+
+ /* get rid of memory leak when REALLOC failed */
+ body->insns_info.body = insns_info;
+ body->insns_info.positions = positions;
+
+ REALLOC_N(insns_info, struct iseq_insn_info_entry, insns_info_index);
+ body->insns_info.body = insns_info;
+ REALLOC_N(positions, unsigned int, insns_info_index);
+ body->insns_info.positions = positions;
+ body->insns_info.size = insns_info_index;
+
+ return COMPILE_OK;
+}
+
+static int
+label_get_position(LABEL *lobj)
+{
+ return lobj->position;
+}
+
+static int
+label_get_sp(LABEL *lobj)
+{
+ return lobj->sp;
+}
+
+static int
+iseq_set_exception_table(rb_iseq_t *iseq)
+{
+ const VALUE *tptr, *ptr;
+ unsigned int tlen, i;
+ struct iseq_catch_table_entry *entry;
+
+ ISEQ_BODY(iseq)->catch_table = NULL;
+
+ VALUE catch_table_ary = ISEQ_COMPILE_DATA(iseq)->catch_table_ary;
+ if (NIL_P(catch_table_ary)) return COMPILE_OK;
+ tlen = (int)RARRAY_LEN(catch_table_ary);
+ tptr = RARRAY_CONST_PTR_TRANSIENT(catch_table_ary);
+
+ if (tlen > 0) {
+ struct iseq_catch_table *table = xmalloc(iseq_catch_table_bytes(tlen));
+ table->size = tlen;
+
+ for (i = 0; i < table->size; i++) {
+ ptr = RARRAY_CONST_PTR_TRANSIENT(tptr[i]);
+ entry = UNALIGNED_MEMBER_PTR(table, entries[i]);
+ entry->type = (enum rb_catch_type)(ptr[0] & 0xffff);
+ entry->start = label_get_position((LABEL *)(ptr[1] & ~1));
+ entry->end = label_get_position((LABEL *)(ptr[2] & ~1));
+ entry->iseq = (rb_iseq_t *)ptr[3];
+ RB_OBJ_WRITTEN(iseq, Qundef, entry->iseq);
+
+ /* stack depth */
+ if (ptr[4]) {
+ LABEL *lobj = (LABEL *)(ptr[4] & ~1);
+ entry->cont = label_get_position(lobj);
+ entry->sp = label_get_sp(lobj);
+
+ /* TODO: Dirty Hack! Fix me */
+ if (entry->type == CATCH_TYPE_RESCUE ||
+ entry->type == CATCH_TYPE_BREAK ||
+ entry->type == CATCH_TYPE_NEXT) {
+ entry->sp--;
+ }
+ }
+ else {
+ entry->cont = 0;
+ }
+ }
+ ISEQ_BODY(iseq)->catch_table = table;
+ RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->catch_table_ary, 0); /* free */
+ }
+
+ RB_GC_GUARD(catch_table_ary);
+
+ return COMPILE_OK;
+}
+
+/*
+ * set optional argument table
+ * def foo(a, b=expr1, c=expr2)
+ * =>
+ * b:
+ * expr1
+ * c:
+ * expr2
+ */
+static int
+iseq_set_optargs_table(rb_iseq_t *iseq)
+{
+ int i;
+ VALUE *opt_table = (VALUE *)ISEQ_BODY(iseq)->param.opt_table;
+
+ if (ISEQ_BODY(iseq)->param.flags.has_opt) {
+ for (i = 0; i < ISEQ_BODY(iseq)->param.opt_num + 1; i++) {
+ opt_table[i] = label_get_position((LABEL *)opt_table[i]);
+ }
+ }
+ return COMPILE_OK;
+}
+
+static LINK_ELEMENT *
+get_destination_insn(INSN *iobj)
+{
+ LABEL *lobj = (LABEL *)OPERAND_AT(iobj, 0);
+ LINK_ELEMENT *list;
+ rb_event_flag_t events = 0;
+
+ list = lobj->link.next;
+ while (list) {
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ case ISEQ_ELEMENT_ADJUST:
+ goto found;
+ case ISEQ_ELEMENT_LABEL:
+ /* ignore */
+ break;
+ case ISEQ_ELEMENT_TRACE:
+ {
+ TRACE *trace = (TRACE *)list;
+ events |= trace->event;
+ }
+ break;
+ default: break;
+ }
+ list = list->next;
+ }
+ found:
+ if (list && IS_INSN(list)) {
+ INSN *iobj = (INSN *)list;
+ iobj->insn_info.events |= events;
+ }
+ return list;
+}
+
+static LINK_ELEMENT *
+get_next_insn(INSN *iobj)
+{
+ LINK_ELEMENT *list = iobj->link.next;
+
+ while (list) {
+ if (IS_INSN(list) || IS_ADJUST(list)) {
+ return list;
+ }
+ list = list->next;
+ }
+ return 0;
+}
+
+static LINK_ELEMENT *
+get_prev_insn(INSN *iobj)
+{
+ LINK_ELEMENT *list = iobj->link.prev;
+
+ while (list) {
+ if (IS_INSN(list) || IS_ADJUST(list)) {
+ return list;
+ }
+ list = list->prev;
+ }
+ return 0;
+}
+
+static void
+unref_destination(INSN *iobj, int pos)
+{
+ LABEL *lobj = (LABEL *)OPERAND_AT(iobj, pos);
+ --lobj->refcnt;
+ if (!lobj->refcnt) ELEM_REMOVE(&lobj->link);
+}
+
+static void
+replace_destination(INSN *dobj, INSN *nobj)
+{
+ VALUE n = OPERAND_AT(nobj, 0);
+ LABEL *dl = (LABEL *)OPERAND_AT(dobj, 0);
+ LABEL *nl = (LABEL *)n;
+ --dl->refcnt;
+ ++nl->refcnt;
+ OPERAND_AT(dobj, 0) = n;
+ if (!dl->refcnt) ELEM_REMOVE(&dl->link);
+}
+
+static LABEL*
+find_destination(INSN *i)
+{
+ int pos, len = insn_len(i->insn_id);
+ for (pos = 0; pos < len; ++pos) {
+ if (insn_op_types(i->insn_id)[pos] == TS_OFFSET) {
+ return (LABEL *)OPERAND_AT(i, pos);
+ }
+ }
+ return 0;
+}
+
+static int
+remove_unreachable_chunk(rb_iseq_t *iseq, LINK_ELEMENT *i)
+{
+ LINK_ELEMENT *first = i, *end;
+ int *unref_counts = 0, nlabels = ISEQ_COMPILE_DATA(iseq)->label_no;
+
+ if (!i) return 0;
+ unref_counts = ALLOCA_N(int, nlabels);
+ MEMZERO(unref_counts, int, nlabels);
+ end = i;
+ do {
+ LABEL *lab;
+ if (IS_INSN(i)) {
+ if (IS_INSN_ID(i, leave)) {
+ end = i;
+ break;
+ }
+ else if ((lab = find_destination((INSN *)i)) != 0) {
+ unref_counts[lab->label_no]++;
+ }
+ }
+ else if (IS_LABEL(i)) {
+ lab = (LABEL *)i;
+ if (lab->unremovable) return 0;
+ if (lab->refcnt > unref_counts[lab->label_no]) {
+ if (i == first) return 0;
+ break;
+ }
+ continue;
+ }
+ else if (IS_TRACE(i)) {
+ /* do nothing */
+ }
+ else if (IS_ADJUST(i)) {
+ return 0;
+ }
+ end = i;
+ } while ((i = i->next) != 0);
+ i = first;
+ do {
+ if (IS_INSN(i)) {
+ struct rb_iseq_constant_body *body = ISEQ_BODY(iseq);
+ VALUE insn = INSN_OF(i);
+ int pos, len = insn_len(insn);
+ for (pos = 0; pos < len; ++pos) {
+ switch (insn_op_types(insn)[pos]) {
+ case TS_OFFSET:
+ unref_destination((INSN *)i, pos);
+ break;
+ case TS_CALLDATA:
+ --(body->ci_size);
+ break;
+ }
+ }
+ }
+ ELEM_REMOVE(i);
+ } while ((i != end) && (i = i->next) != 0);
+ return 1;
+}
+
+static int
+iseq_pop_newarray(rb_iseq_t *iseq, INSN *iobj)
+{
+ switch (OPERAND_AT(iobj, 0)) {
+ case INT2FIX(0): /* empty array */
+ ELEM_REMOVE(&iobj->link);
+ return TRUE;
+ case INT2FIX(1): /* single element array */
+ ELEM_REMOVE(&iobj->link);
+ return FALSE;
+ default:
+ iobj->insn_id = BIN(adjuststack);
+ return TRUE;
+ }
+}
+
+static int
+is_frozen_putstring(INSN *insn, VALUE *op)
+{
+ if (IS_INSN_ID(insn, putstring)) {
+ *op = OPERAND_AT(insn, 0);
+ return 1;
+ }
+ else if (IS_INSN_ID(insn, putobject)) { /* frozen_string_literal */
+ *op = OPERAND_AT(insn, 0);
+ return RB_TYPE_P(*op, T_STRING);
+ }
+ return 0;
+}
+
+static int
+optimize_checktype(rb_iseq_t *iseq, INSN *iobj)
+{
+ /*
+ * putobject obj
+ * dup
+ * checktype T_XXX
+ * branchif l1
+ * l2:
+ * ...
+ * l1:
+ *
+ * => obj is a T_XXX
+ *
+ * putobject obj (T_XXX)
+ * jump L1
+ * L1:
+ *
+ * => obj is not a T_XXX
+ *
+ * putobject obj (T_XXX)
+ * jump L2
+ * L2:
+ */
+ int line, node_id;
+ INSN *niobj, *ciobj, *dup = 0;
+ LABEL *dest = 0;
+ VALUE type;
+
+ switch (INSN_OF(iobj)) {
+ case BIN(putstring):
+ type = INT2FIX(T_STRING);
+ break;
+ case BIN(putnil):
+ type = INT2FIX(T_NIL);
+ break;
+ case BIN(putobject):
+ type = INT2FIX(TYPE(OPERAND_AT(iobj, 0)));
+ break;
+ default: return FALSE;
+ }
+
+ ciobj = (INSN *)get_next_insn(iobj);
+ if (IS_INSN_ID(ciobj, jump)) {
+ ciobj = (INSN *)get_next_insn((INSN*)OPERAND_AT(ciobj, 0));
+ }
+ if (IS_INSN_ID(ciobj, dup)) {
+ ciobj = (INSN *)get_next_insn(dup = ciobj);
+ }
+ if (!ciobj || !IS_INSN_ID(ciobj, checktype)) return FALSE;
+ niobj = (INSN *)get_next_insn(ciobj);
+ if (!niobj) {
+ /* TODO: putobject true/false */
+ return FALSE;
+ }
+ switch (INSN_OF(niobj)) {
+ case BIN(branchif):
+ if (OPERAND_AT(ciobj, 0) == type) {
+ dest = (LABEL *)OPERAND_AT(niobj, 0);
+ }
+ break;
+ case BIN(branchunless):
+ if (OPERAND_AT(ciobj, 0) != type) {
+ dest = (LABEL *)OPERAND_AT(niobj, 0);
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ line = ciobj->insn_info.line_no;
+ node_id = ciobj->insn_info.node_id;
+ NODE dummy_line_node = generate_dummy_line_node(line, node_id);
+ if (!dest) {
+ if (niobj->link.next && IS_LABEL(niobj->link.next)) {
+ dest = (LABEL *)niobj->link.next; /* reuse label */
+ }
+ else {
+ dest = NEW_LABEL(line);
+ ELEM_INSERT_NEXT(&niobj->link, &dest->link);
+ }
+ }
+ INSERT_AFTER_INSN1(iobj, &dummy_line_node, jump, dest);
+ LABEL_REF(dest);
+ if (!dup) INSERT_AFTER_INSN(iobj, &dummy_line_node, pop);
+ return TRUE;
+}
+
+static const struct rb_callinfo *
+ci_flag_set(const rb_iseq_t *iseq, const struct rb_callinfo *ci, unsigned int add)
+{
+ const struct rb_callinfo *nci = vm_ci_new(vm_ci_mid(ci),
+ vm_ci_flag(ci) | add,
+ vm_ci_argc(ci),
+ vm_ci_kwarg(ci));
+ RB_OBJ_WRITTEN(iseq, ci, nci);
+ return nci;
+}
+
+static const struct rb_callinfo *
+ci_argc_set(const rb_iseq_t *iseq, const struct rb_callinfo *ci, int argc)
+{
+ const struct rb_callinfo *nci = vm_ci_new(vm_ci_mid(ci),
+ vm_ci_flag(ci),
+ argc,
+ vm_ci_kwarg(ci));
+ RB_OBJ_WRITTEN(iseq, ci, nci);
+ return nci;
+}
+
+static int
+iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcallopt)
+{
+ INSN *const iobj = (INSN *)list;
+
+ again:
+ optimize_checktype(iseq, iobj);
+
+ if (IS_INSN_ID(iobj, jump)) {
+ INSN *niobj, *diobj, *piobj;
+ diobj = (INSN *)get_destination_insn(iobj);
+ niobj = (INSN *)get_next_insn(iobj);
+
+ if (diobj == niobj) {
+ /*
+ * jump LABEL
+ * LABEL:
+ * =>
+ * LABEL:
+ */
+ unref_destination(iobj, 0);
+ ELEM_REMOVE(&iobj->link);
+ return COMPILE_OK;
+ }
+ else if (iobj != diobj && IS_INSN(&diobj->link) &&
+ IS_INSN_ID(diobj, jump) &&
+ OPERAND_AT(iobj, 0) != OPERAND_AT(diobj, 0) &&
+ diobj->insn_info.events == 0) {
+ /*
+ * useless jump elimination:
+ * jump LABEL1
+ * ...
+ * LABEL1:
+ * jump LABEL2
+ *
+ * => in this case, first jump instruction should jump to
+ * LABEL2 directly
+ */
+ replace_destination(iobj, diobj);
+ remove_unreachable_chunk(iseq, iobj->link.next);
+ goto again;
+ }
+ else if (IS_INSN_ID(diobj, leave)) {
+ /*
+ * jump LABEL
+ * ...
+ * LABEL:
+ * leave
+ * =>
+ * leave
+ * ...
+ * LABEL:
+ * leave
+ */
+ /* replace */
+ unref_destination(iobj, 0);
+ iobj->insn_id = BIN(leave);
+ iobj->operand_size = 0;
+ iobj->insn_info = diobj->insn_info;
+ goto again;
+ }
+ else if (IS_INSN(iobj->link.prev) &&
+ (piobj = (INSN *)iobj->link.prev) &&
+ (IS_INSN_ID(piobj, branchif) ||
+ IS_INSN_ID(piobj, branchunless))) {
+ INSN *pdiobj = (INSN *)get_destination_insn(piobj);
+ if (niobj == pdiobj) {
+ int refcnt = IS_LABEL(piobj->link.next) ?
+ ((LABEL *)piobj->link.next)->refcnt : 0;
+ /*
+ * useless jump elimination (if/unless destination):
+ * if L1
+ * jump L2
+ * L1:
+ * ...
+ * L2:
+ *
+ * ==>
+ * unless L2
+ * L1:
+ * ...
+ * L2:
+ */
+ piobj->insn_id = (IS_INSN_ID(piobj, branchif))
+ ? BIN(branchunless) : BIN(branchif);
+ replace_destination(piobj, iobj);
+ if (refcnt <= 1) {
+ ELEM_REMOVE(&iobj->link);
+ }
+ else {
+ /* TODO: replace other branch destinations too */
+ }
+ return COMPILE_OK;
+ }
+ else if (diobj == pdiobj) {
+ /*
+ * useless jump elimination (if/unless before jump):
+ * L1:
+ * ...
+ * if L1
+ * jump L1
+ *
+ * ==>
+ * L1:
+ * ...
+ * pop
+ * jump L1
+ */
+ NODE dummy_line_node = generate_dummy_line_node(iobj->insn_info.line_no, iobj->insn_info.node_id);
+ INSN *popiobj = new_insn_core(iseq, &dummy_line_node, BIN(pop), 0, 0);
+ ELEM_REPLACE(&piobj->link, &popiobj->link);
+ }
+ }
+ if (remove_unreachable_chunk(iseq, iobj->link.next)) {
+ goto again;
+ }
+ }
+
+ /*
+ * putstring "beg"
+ * putstring "end"
+ * newrange excl
+ *
+ * ==>
+ *
+ * putobject "beg".."end"
+ */
+ if (IS_INSN_ID(iobj, newrange)) {
+ INSN *const range = iobj;
+ INSN *beg, *end;
+ VALUE str_beg, str_end;
+
+ if ((end = (INSN *)get_prev_insn(range)) != 0 &&
+ is_frozen_putstring(end, &str_end) &&
+ (beg = (INSN *)get_prev_insn(end)) != 0 &&
+ is_frozen_putstring(beg, &str_beg)) {
+ int excl = FIX2INT(OPERAND_AT(range, 0));
+ VALUE lit_range = rb_range_new(str_beg, str_end, excl);
+
+ ELEM_REMOVE(&beg->link);
+ ELEM_REMOVE(&end->link);
+ range->insn_id = BIN(putobject);
+ OPERAND_AT(range, 0) = lit_range;
+ RB_OBJ_WRITTEN(iseq, Qundef, lit_range);
+ }
+ }
+
+ if (IS_INSN_ID(iobj, leave)) {
+ remove_unreachable_chunk(iseq, iobj->link.next);
+ }
+
+ /*
+ * ...
+ * duparray [...]
+ * concatarray
+ * =>
+ * ...
+ * putobject [...]
+ * concatarray
+ */
+ if (IS_INSN_ID(iobj, duparray)) {
+ LINK_ELEMENT *next = iobj->link.next;
+ if (IS_INSN(next) && IS_INSN_ID(next, concatarray)) {
+ iobj->insn_id = BIN(putobject);
+ }
+ }
+
+ if (IS_INSN_ID(iobj, branchif) ||
+ IS_INSN_ID(iobj, branchnil) ||
+ IS_INSN_ID(iobj, branchunless)) {
+ /*
+ * if L1
+ * ...
+ * L1:
+ * jump L2
+ * =>
+ * if L2
+ */
+ INSN *nobj = (INSN *)get_destination_insn(iobj);
+
+ /* This is super nasty hack!!!
+ *
+ * This jump-jump optimization may ignore event flags of the jump
+ * instruction being skipped. Actually, Line 2 TracePoint event
+ * is never fired in the following code:
+ *
+ * 1: raise if 1 == 2
+ * 2: while true
+ * 3: break
+ * 4: end
+ *
+ * This is critical for coverage measurement. [Bug #15980]
+ *
+ * This is a stopgap measure: stop the jump-jump optimization if
+ * coverage measurement is enabled and if the skipped instruction
+ * has any event flag.
+ *
+ * Note that, still, TracePoint Line event does not occur on Line 2.
+ * This should be fixed in future.
+ */
+ int stop_optimization =
+ ISEQ_COVERAGE(iseq) && ISEQ_LINE_COVERAGE(iseq) &&
+ nobj->link.type == ISEQ_ELEMENT_INSN &&
+ nobj->insn_info.events;
+ if (!stop_optimization) {
+ INSN *pobj = (INSN *)iobj->link.prev;
+ int prev_dup = 0;
+ if (pobj) {
+ if (!IS_INSN(&pobj->link))
+ pobj = 0;
+ else if (IS_INSN_ID(pobj, dup))
+ prev_dup = 1;
+ }
+
+ for (;;) {
+ if (IS_INSN(&nobj->link) && IS_INSN_ID(nobj, jump)) {
+ replace_destination(iobj, nobj);
+ }
+ else if (prev_dup && IS_INSN_ID(nobj, dup) &&
+ !!(nobj = (INSN *)nobj->link.next) &&
+ /* basic blocks, with no labels in the middle */
+ nobj->insn_id == iobj->insn_id) {
+ /*
+ * dup
+ * if L1
+ * ...
+ * L1:
+ * dup
+ * if L2
+ * =>
+ * dup
+ * if L2
+ * ...
+ * L1:
+ * dup
+ * if L2
+ */
+ replace_destination(iobj, nobj);
+ }
+ else if (pobj) {
+ /*
+ * putnil
+ * if L1
+ * =>
+ * # nothing
+ *
+ * putobject true
+ * if L1
+ * =>
+ * jump L1
+ *
+ * putstring ".."
+ * if L1
+ * =>
+ * jump L1
+ *
+ * putstring ".."
+ * dup
+ * if L1
+ * =>
+ * putstring ".."
+ * jump L1
+ *
+ */
+ int cond;
+ if (prev_dup && IS_INSN(pobj->link.prev)) {
+ pobj = (INSN *)pobj->link.prev;
+ }
+ if (IS_INSN_ID(pobj, putobject)) {
+ cond = (IS_INSN_ID(iobj, branchif) ?
+ OPERAND_AT(pobj, 0) != Qfalse :
+ IS_INSN_ID(iobj, branchunless) ?
+ OPERAND_AT(pobj, 0) == Qfalse :
+ FALSE);
+ }
+ else if (IS_INSN_ID(pobj, putstring) ||
+ IS_INSN_ID(pobj, duparray) ||
+ IS_INSN_ID(pobj, newarray)) {
+ cond = IS_INSN_ID(iobj, branchif);
+ }
+ else if (IS_INSN_ID(pobj, putnil)) {
+ cond = !IS_INSN_ID(iobj, branchif);
+ }
+ else break;
+ if (prev_dup || !IS_INSN_ID(pobj, newarray)) {
+ ELEM_REMOVE(iobj->link.prev);
+ }
+ else if (!iseq_pop_newarray(iseq, pobj)) {
+ NODE dummy_line_node = generate_dummy_line_node(pobj->insn_info.line_no, pobj->insn_info.node_id);
+ pobj = new_insn_core(iseq, &dummy_line_node, BIN(pop), 0, NULL);
+ ELEM_INSERT_PREV(&iobj->link, &pobj->link);
+ }
+ if (cond) {
+ if (prev_dup) {
+ NODE dummy_line_node = generate_dummy_line_node(pobj->insn_info.line_no, pobj->insn_info.node_id);
+ pobj = new_insn_core(iseq, &dummy_line_node, BIN(putnil), 0, NULL);
+ ELEM_INSERT_NEXT(&iobj->link, &pobj->link);
+ }
+ iobj->insn_id = BIN(jump);
+ goto again;
+ }
+ else {
+ unref_destination(iobj, 0);
+ ELEM_REMOVE(&iobj->link);
+ }
+ break;
+ }
+ else break;
+ nobj = (INSN *)get_destination_insn(nobj);
+ }
+ }
+ }
+
+ if (IS_INSN_ID(iobj, pop)) {
+ /*
+ * putself / putnil / putobject obj / putstring "..."
+ * pop
+ * =>
+ * # do nothing
+ */
+ LINK_ELEMENT *prev = iobj->link.prev;
+ if (IS_INSN(prev)) {
+ enum ruby_vminsn_type previ = ((INSN *)prev)->insn_id;
+ if (previ == BIN(putobject) || previ == BIN(putnil) ||
+ previ == BIN(putself) || previ == BIN(putstring) ||
+ previ == BIN(dup) ||
+ previ == BIN(getlocal) ||
+ previ == BIN(getblockparam) ||
+ previ == BIN(getblockparamproxy) ||
+ /* getinstancevariable may issue a warning */
+ previ == BIN(duparray)) {
+ /* just push operand or static value and pop soon, no
+ * side effects */
+ ELEM_REMOVE(prev);
+ ELEM_REMOVE(&iobj->link);
+ }
+ else if (previ == BIN(newarray) && iseq_pop_newarray(iseq, (INSN*)prev)) {
+ ELEM_REMOVE(&iobj->link);
+ }
+ else if (previ == BIN(concatarray)) {
+ INSN *piobj = (INSN *)prev;
+ NODE dummy_line_node = generate_dummy_line_node(piobj->insn_info.line_no, piobj->insn_info.node_id);
+ INSERT_BEFORE_INSN1(piobj, &dummy_line_node, splatarray, Qfalse);
+ INSN_OF(piobj) = BIN(pop);
+ }
+ else if (previ == BIN(concatstrings)) {
+ if (OPERAND_AT(prev, 0) == INT2FIX(1)) {
+ ELEM_REMOVE(prev);
+ }
+ else {
+ ELEM_REMOVE(&iobj->link);
+ INSN_OF(prev) = BIN(adjuststack);
+ }
+ }
+ }
+ }
+
+ if (IS_INSN_ID(iobj, newarray) ||
+ IS_INSN_ID(iobj, duparray) ||
+ IS_INSN_ID(iobj, expandarray) ||
+ IS_INSN_ID(iobj, concatarray) ||
+ IS_INSN_ID(iobj, splatarray) ||
+ 0) {
+ /*
+ * newarray N
+ * splatarray
+ * =>
+ * newarray N
+ * newarray always puts an array
+ */
+ LINK_ELEMENT *next = iobj->link.next;
+ if (IS_INSN(next) && IS_INSN_ID(next, splatarray)) {
+ /* remove splatarray following always-array insn */
+ ELEM_REMOVE(next);
+ }
+ }
+
+ if (IS_INSN_ID(iobj, newarray)) {
+ LINK_ELEMENT *next = iobj->link.next;
+ if (IS_INSN(next) && IS_INSN_ID(next, expandarray) &&
+ OPERAND_AT(next, 1) == INT2FIX(0)) {
+ VALUE op1, op2;
+ op1 = OPERAND_AT(iobj, 0);
+ op2 = OPERAND_AT(next, 0);
+ ELEM_REMOVE(next);
+
+ if (op1 == op2) {
+ /*
+ * newarray 2
+ * expandarray 2, 0
+ * =>
+ * swap
+ */
+ if (op1 == INT2FIX(2)) {
+ INSN_OF(iobj) = BIN(swap);
+ iobj->operand_size = 0;
+ }
+ /*
+ * newarray X
+ * expandarray X, 0
+ * =>
+ * opt_reverse X
+ */
+ else {
+ INSN_OF(iobj) = BIN(opt_reverse);
+ }
+ }
+ else {
+ NODE dummy_line_node = generate_dummy_line_node(iobj->insn_info.line_no, iobj->insn_info.node_id);
+ long diff = FIX2LONG(op1) - FIX2LONG(op2);
+ INSN_OF(iobj) = BIN(opt_reverse);
+ OPERAND_AT(iobj, 0) = OPERAND_AT(next, 0);
+
+ if (op1 > op2) {
+ /* X > Y
+ * newarray X
+ * expandarray Y, 0
+ * =>
+ * pop * (Y-X)
+ * opt_reverse Y
+ */
+ for (; diff > 0; diff--) {
+ INSERT_BEFORE_INSN(iobj, &dummy_line_node, pop);
+ }
+ }
+ else { /* (op1 < op2) */
+ /* X < Y
+ * newarray X
+ * expandarray Y, 0
+ * =>
+ * putnil * (Y-X)
+ * opt_reverse Y
+ */
+ for (; diff < 0; diff++) {
+ INSERT_BEFORE_INSN(iobj, &dummy_line_node, putnil);
+ }
+ }
+ }
+ }
+ }
+
+ if (IS_INSN_ID(iobj, duparray)) {
+ LINK_ELEMENT *next = iobj->link.next;
+ /*
+ * duparray obj
+ * expandarray X, 0
+ * =>
+ * putobject obj
+ * expandarray X, 0
+ */
+ if (IS_INSN(next) && IS_INSN_ID(next, expandarray)) {
+ INSN_OF(iobj) = BIN(putobject);
+ }
+ }
+
+ if (IS_INSN_ID(iobj, anytostring)) {
+ LINK_ELEMENT *next = iobj->link.next;
+ /*
+ * anytostring
+ * concatstrings 1
+ * =>
+ * anytostring
+ */
+ if (IS_INSN(next) && IS_INSN_ID(next, concatstrings) &&
+ OPERAND_AT(next, 0) == INT2FIX(1)) {
+ ELEM_REMOVE(next);
+ }
+ }
+
+ if (IS_INSN_ID(iobj, putstring) ||
+ (IS_INSN_ID(iobj, putobject) && RB_TYPE_P(OPERAND_AT(iobj, 0), T_STRING))) {
+ /*
+ * putstring ""
+ * concatstrings N
+ * =>
+ * concatstrings N-1
+ */
+ if (IS_NEXT_INSN_ID(&iobj->link, concatstrings) &&
+ RSTRING_LEN(OPERAND_AT(iobj, 0)) == 0) {
+ INSN *next = (INSN *)iobj->link.next;
+ if ((OPERAND_AT(next, 0) = FIXNUM_INC(OPERAND_AT(next, 0), -1)) == INT2FIX(1)) {
+ ELEM_REMOVE(&next->link);
+ }
+ ELEM_REMOVE(&iobj->link);
+ }
+ }
+
+ if (IS_INSN_ID(iobj, concatstrings)) {
+ /*
+ * concatstrings N
+ * concatstrings M
+ * =>
+ * concatstrings N+M-1
+ */
+ LINK_ELEMENT *next = iobj->link.next;
+ INSN *jump = 0;
+ if (IS_INSN(next) && IS_INSN_ID(next, jump))
+ next = get_destination_insn(jump = (INSN *)next);
+ if (IS_INSN(next) && IS_INSN_ID(next, concatstrings)) {
+ int n = FIX2INT(OPERAND_AT(iobj, 0)) + FIX2INT(OPERAND_AT(next, 0)) - 1;
+ OPERAND_AT(iobj, 0) = INT2FIX(n);
+ if (jump) {
+ LABEL *label = ((LABEL *)OPERAND_AT(jump, 0));
+ if (!--label->refcnt) {
+ ELEM_REMOVE(&label->link);
+ }
+ else {
+ label = NEW_LABEL(0);
+ OPERAND_AT(jump, 0) = (VALUE)label;
+ }
+ label->refcnt++;
+ ELEM_INSERT_NEXT(next, &label->link);
+ CHECK(iseq_peephole_optimize(iseq, get_next_insn(jump), do_tailcallopt));
+ }
+ else {
+ ELEM_REMOVE(next);
+ }
+ }
+ }
+
+ if (do_tailcallopt &&
+ (IS_INSN_ID(iobj, send) ||
+ IS_INSN_ID(iobj, opt_aref_with) ||
+ IS_INSN_ID(iobj, opt_aset_with) ||
+ IS_INSN_ID(iobj, invokesuper))) {
+ /*
+ * send ...
+ * leave
+ * =>
+ * send ..., ... | VM_CALL_TAILCALL, ...
+ * leave # unreachable
+ */
+ INSN *piobj = NULL;
+ if (iobj->link.next) {
+ LINK_ELEMENT *next = iobj->link.next;
+ do {
+ if (!IS_INSN(next)) {
+ next = next->next;
+ continue;
+ }
+ switch (INSN_OF(next)) {
+ case BIN(nop):
+ next = next->next;
+ break;
+ case BIN(jump):
+ /* if cond
+ * return tailcall
+ * end
+ */
+ next = get_destination_insn((INSN *)next);
+ break;
+ case BIN(leave):
+ piobj = iobj;
+ /* fall through */
+ default:
+ next = NULL;
+ break;
+ }
+ } while (next);
+ }
+
+ if (piobj) {
+ const struct rb_callinfo *ci = (struct rb_callinfo *)OPERAND_AT(piobj, 0);
+ if (IS_INSN_ID(piobj, send) ||
+ IS_INSN_ID(piobj, invokesuper)) {
+ if (OPERAND_AT(piobj, 1) == 0) { /* no blockiseq */
+ ci = ci_flag_set(iseq, ci, VM_CALL_TAILCALL);
+ OPERAND_AT(piobj, 0) = (VALUE)ci;
+ RB_OBJ_WRITTEN(iseq, Qundef, ci);
+ }
+ }
+ else {
+ ci = ci_flag_set(iseq, ci, VM_CALL_TAILCALL);
+ OPERAND_AT(piobj, 0) = (VALUE)ci;
+ RB_OBJ_WRITTEN(iseq, Qundef, ci);
+ }
+ }
+ }
+
+ if (IS_INSN_ID(iobj, dup)) {
+ if (IS_NEXT_INSN_ID(&iobj->link, setlocal)) {
+ LINK_ELEMENT *set1 = iobj->link.next, *set2 = NULL;
+
+ /*
+ * dup
+ * setlocal x, y
+ * setlocal x, y
+ * =>
+ * dup
+ * setlocal x, y
+ */
+ if (IS_NEXT_INSN_ID(set1, setlocal)) {
+ set2 = set1->next;
+ if (OPERAND_AT(set1, 0) == OPERAND_AT(set2, 0) &&
+ OPERAND_AT(set1, 1) == OPERAND_AT(set2, 1)) {
+ ELEM_REMOVE(set1);
+ ELEM_REMOVE(&iobj->link);
+ }
+ }
+
+ /*
+ * dup
+ * setlocal x, y
+ * dup
+ * setlocal x, y
+ * =>
+ * dup
+ * setlocal x, y
+ */
+ else if (IS_NEXT_INSN_ID(set1, dup) &&
+ IS_NEXT_INSN_ID(set1->next, setlocal)) {
+ set2 = set1->next->next;
+ if (OPERAND_AT(set1, 0) == OPERAND_AT(set2, 0) &&
+ OPERAND_AT(set1, 1) == OPERAND_AT(set2, 1)) {
+ ELEM_REMOVE(set1->next);
+ ELEM_REMOVE(set2);
+ }
+ }
+ }
+ }
+
+ /*
+ * getlocal x, y
+ * dup
+ * setlocal x, y
+ * =>
+ * dup
+ */
+ if (IS_INSN_ID(iobj, getlocal)) {
+ LINK_ELEMENT *niobj = &iobj->link;
+ if (IS_NEXT_INSN_ID(niobj, dup)) {
+ niobj = niobj->next;
+ }
+ if (IS_NEXT_INSN_ID(niobj, setlocal)) {
+ LINK_ELEMENT *set1 = niobj->next;
+ if (OPERAND_AT(iobj, 0) == OPERAND_AT(set1, 0) &&
+ OPERAND_AT(iobj, 1) == OPERAND_AT(set1, 1)) {
+ ELEM_REMOVE(set1);
+ ELEM_REMOVE(niobj);
+ }
+ }
+ }
+
+ /*
+ * opt_invokebuiltin_delegate
+ * trace
+ * leave
+ * =>
+ * opt_invokebuiltin_delegate_leave
+ * trace
+ * leave
+ */
+ if (IS_INSN_ID(iobj, opt_invokebuiltin_delegate)) {
+ if (IS_TRACE(iobj->link.next)) {
+ if (IS_NEXT_INSN_ID(iobj->link.next, leave)) {
+ iobj->insn_id = BIN(opt_invokebuiltin_delegate_leave);
+ }
+ }
+ }
+
+ /*
+ * getblockparam
+ * branchif / branchunless
+ * =>
+ * getblockparamproxy
+ * branchif / branchunless
+ */
+ if (IS_INSN_ID(iobj, getblockparam)) {
+ if (IS_NEXT_INSN_ID(&iobj->link, branchif) || IS_NEXT_INSN_ID(&iobj->link, branchunless)) {
+ iobj->insn_id = BIN(getblockparamproxy);
+ }
+ }
+
+ return COMPILE_OK;
+}
+
+static int
+insn_set_specialized_instruction(rb_iseq_t *iseq, INSN *iobj, int insn_id)
+{
+ iobj->insn_id = insn_id;
+ iobj->operand_size = insn_len(insn_id) - 1;
+ iobj->insn_info.events |= RUBY_EVENT_C_CALL | RUBY_EVENT_C_RETURN;
+
+ if (insn_id == BIN(opt_neq)) {
+ VALUE original_ci = iobj->operands[0];
+ iobj->operand_size = 2;
+ iobj->operands = compile_data_calloc2(iseq, iobj->operand_size, sizeof(VALUE));
+ iobj->operands[0] = (VALUE)new_callinfo(iseq, idEq, 1, 0, NULL, FALSE);
+ iobj->operands[1] = original_ci;
+ }
+
+ return COMPILE_OK;
+}
+
+static int
+iseq_specialized_instruction(rb_iseq_t *iseq, INSN *iobj)
+{
+ if (IS_INSN_ID(iobj, newarray) && iobj->link.next &&
+ IS_INSN(iobj->link.next)) {
+ /*
+ * [a, b, ...].max/min -> a, b, c, opt_newarray_max/min
+ */
+ INSN *niobj = (INSN *)iobj->link.next;
+ if (IS_INSN_ID(niobj, send)) {
+ const struct rb_callinfo *ci = (struct rb_callinfo *)OPERAND_AT(niobj, 0);
+ if ((vm_ci_flag(ci) & VM_CALL_ARGS_SIMPLE) && vm_ci_argc(ci) == 0) {
+ switch (vm_ci_mid(ci)) {
+ case idMax:
+ iobj->insn_id = BIN(opt_newarray_max);
+ ELEM_REMOVE(&niobj->link);
+ return COMPILE_OK;
+ case idMin:
+ iobj->insn_id = BIN(opt_newarray_min);
+ ELEM_REMOVE(&niobj->link);
+ return COMPILE_OK;
+ }
+ }
+ }
+ }
+
+ if (IS_INSN_ID(iobj, send)) {
+ const struct rb_callinfo *ci = (struct rb_callinfo *)OPERAND_AT(iobj, 0);
+ const rb_iseq_t *blockiseq = (rb_iseq_t *)OPERAND_AT(iobj, 1);
+
+#define SP_INSN(opt) insn_set_specialized_instruction(iseq, iobj, BIN(opt_##opt))
+ if (vm_ci_flag(ci) & VM_CALL_ARGS_SIMPLE) {
+ switch (vm_ci_argc(ci)) {
+ case 0:
+ switch (vm_ci_mid(ci)) {
+ case idLength: SP_INSN(length); return COMPILE_OK;
+ case idSize: SP_INSN(size); return COMPILE_OK;
+ case idEmptyP: SP_INSN(empty_p);return COMPILE_OK;
+ case idNilP: SP_INSN(nil_p); return COMPILE_OK;
+ case idSucc: SP_INSN(succ); return COMPILE_OK;
+ case idNot: SP_INSN(not); return COMPILE_OK;
+ }
+ break;
+ case 1:
+ switch (vm_ci_mid(ci)) {
+ case idPLUS: SP_INSN(plus); return COMPILE_OK;
+ case idMINUS: SP_INSN(minus); return COMPILE_OK;
+ case idMULT: SP_INSN(mult); return COMPILE_OK;
+ case idDIV: SP_INSN(div); return COMPILE_OK;
+ case idMOD: SP_INSN(mod); return COMPILE_OK;
+ case idEq: SP_INSN(eq); return COMPILE_OK;
+ case idNeq: SP_INSN(neq); return COMPILE_OK;
+ case idEqTilde:SP_INSN(regexpmatch2);return COMPILE_OK;
+ case idLT: SP_INSN(lt); return COMPILE_OK;
+ case idLE: SP_INSN(le); return COMPILE_OK;
+ case idGT: SP_INSN(gt); return COMPILE_OK;
+ case idGE: SP_INSN(ge); return COMPILE_OK;
+ case idLTLT: SP_INSN(ltlt); return COMPILE_OK;
+ case idAREF: SP_INSN(aref); return COMPILE_OK;
+ case idAnd: SP_INSN(and); return COMPILE_OK;
+ case idOr: SP_INSN(or); return COMPILE_OK;
+ }
+ break;
+ case 2:
+ switch (vm_ci_mid(ci)) {
+ case idASET: SP_INSN(aset); return COMPILE_OK;
+ }
+ break;
+ }
+ }
+
+ if ((vm_ci_flag(ci) & VM_CALL_ARGS_BLOCKARG) == 0 && blockiseq == NULL) {
+ iobj->insn_id = BIN(opt_send_without_block);
+ iobj->operand_size = insn_len(iobj->insn_id) - 1;
+ }
+ }
+#undef SP_INSN
+
+ return COMPILE_OK;
+}
+
+static inline int
+tailcallable_p(rb_iseq_t *iseq)
+{
+ switch (ISEQ_BODY(iseq)->type) {
+ case ISEQ_TYPE_TOP:
+ case ISEQ_TYPE_EVAL:
+ case ISEQ_TYPE_MAIN:
+ /* not tail callable because cfp will be over popped */
+ case ISEQ_TYPE_RESCUE:
+ case ISEQ_TYPE_ENSURE:
+ /* rescue block can't tail call because of errinfo */
+ return FALSE;
+ default:
+ return TRUE;
+ }
+}
+
+static int
+iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
+{
+ LINK_ELEMENT *list;
+ const int do_peepholeopt = ISEQ_COMPILE_DATA(iseq)->option->peephole_optimization;
+ const int do_tailcallopt = tailcallable_p(iseq) &&
+ ISEQ_COMPILE_DATA(iseq)->option->tailcall_optimization;
+ const int do_si = ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction;
+ const int do_ou = ISEQ_COMPILE_DATA(iseq)->option->operands_unification;
+ int rescue_level = 0;
+ int tailcallopt = do_tailcallopt;
+
+ list = FIRST_ELEMENT(anchor);
+
+ int do_block_optimization = 0;
+
+ if (ISEQ_BODY(iseq)->type == ISEQ_TYPE_BLOCK && !ISEQ_BODY(iseq)->catch_except_p) {
+ do_block_optimization = 1;
+ }
+
+ while (list) {
+ if (IS_INSN(list)) {
+ if (do_peepholeopt) {
+ iseq_peephole_optimize(iseq, list, tailcallopt);
+ }
+ if (do_si) {
+ iseq_specialized_instruction(iseq, (INSN *)list);
+ }
+ if (do_ou) {
+ insn_operands_unification((INSN *)list);
+ }
+
+ if (do_block_optimization) {
+ INSN * item = (INSN *)list;
+ if (IS_INSN_ID(item, jump)) {
+ do_block_optimization = 0;
+ }
+ }
+ }
+ if (IS_LABEL(list)) {
+ switch (((LABEL *)list)->rescued) {
+ case LABEL_RESCUE_BEG:
+ rescue_level++;
+ tailcallopt = FALSE;
+ break;
+ case LABEL_RESCUE_END:
+ if (!--rescue_level) tailcallopt = do_tailcallopt;
+ break;
+ }
+ }
+ list = list->next;
+ }
+
+ if (do_block_optimization) {
+ LINK_ELEMENT * le = FIRST_ELEMENT(anchor)->next;
+ if (IS_INSN(le) && IS_INSN_ID((INSN *)le, nop)) {
+ ELEM_REMOVE(le);
+ }
+ }
+ return COMPILE_OK;
+}
+
+#if OPT_INSTRUCTIONS_UNIFICATION
+static INSN *
+new_unified_insn(rb_iseq_t *iseq,
+ int insn_id, int size, LINK_ELEMENT *seq_list)
+{
+ INSN *iobj = 0;
+ LINK_ELEMENT *list = seq_list;
+ int i, argc = 0;
+ VALUE *operands = 0, *ptr = 0;
+
+
+ /* count argc */
+ for (i = 0; i < size; i++) {
+ iobj = (INSN *)list;
+ argc += iobj->operand_size;
+ list = list->next;
+ }
+
+ if (argc > 0) {
+ ptr = operands = compile_data_alloc2(iseq, sizeof(VALUE), argc);
+ }
+
+ /* copy operands */
+ list = seq_list;
+ for (i = 0; i < size; i++) {
+ iobj = (INSN *)list;
+ MEMCPY(ptr, iobj->operands, VALUE, iobj->operand_size);
+ ptr += iobj->operand_size;
+ list = list->next;
+ }
+
+ NODE dummy_line_node = generate_dummy_line_node(iobj->insn_info.line_no, iobj->insn_info.node_id);
+ return new_insn_core(iseq, &dummy_line_node, insn_id, argc, operands);
+}
+#endif
+
+/*
+ * This scheme can get more performance if do this optimize with
+ * label address resolving.
+ * It's future work (if compile time was bottle neck).
+ */
+static int
+iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
+{
+#if OPT_INSTRUCTIONS_UNIFICATION
+ LINK_ELEMENT *list;
+ INSN *iobj, *niobj;
+ int id, k;
+ intptr_t j;
+
+ list = FIRST_ELEMENT(anchor);
+ while (list) {
+ if (IS_INSN(list)) {
+ iobj = (INSN *)list;
+ id = iobj->insn_id;
+ if (unified_insns_data[id] != 0) {
+ const int *const *entry = unified_insns_data[id];
+ for (j = 1; j < (intptr_t)entry[0]; j++) {
+ const int *unified = entry[j];
+ LINK_ELEMENT *li = list->next;
+ for (k = 2; k < unified[1]; k++) {
+ if (!IS_INSN(li) ||
+ ((INSN *)li)->insn_id != unified[k]) {
+ goto miss;
+ }
+ li = li->next;
+ }
+ /* matched */
+ niobj =
+ new_unified_insn(iseq, unified[0], unified[1] - 1,
+ list);
+
+ /* insert to list */
+ niobj->link.prev = (LINK_ELEMENT *)iobj->link.prev;
+ niobj->link.next = li;
+ if (li) {
+ li->prev = (LINK_ELEMENT *)niobj;
+ }
+
+ list->prev->next = (LINK_ELEMENT *)niobj;
+ list = (LINK_ELEMENT *)niobj;
+ break;
+ miss:;
+ }
+ }
+ }
+ list = list->next;
+ }
+#endif
+ return COMPILE_OK;
+}
+
+#if OPT_STACK_CACHING
+
+#define SC_INSN(insn, stat) sc_insn_info[(insn)][(stat)]
+#define SC_NEXT(insn) sc_insn_next[(insn)]
+
+#include "opt_sc.inc"
+
+static int
+insn_set_sc_state(rb_iseq_t *iseq, const LINK_ELEMENT *anchor, INSN *iobj, int state)
+{
+ int nstate;
+ int insn_id;
+
+ insn_id = iobj->insn_id;
+ iobj->insn_id = SC_INSN(insn_id, state);
+ nstate = SC_NEXT(iobj->insn_id);
+
+ if (insn_id == BIN(jump) ||
+ insn_id == BIN(branchif) || insn_id == BIN(branchunless)) {
+ LABEL *lobj = (LABEL *)OPERAND_AT(iobj, 0);
+
+ if (lobj->sc_state != 0) {
+ if (lobj->sc_state != nstate) {
+ BADINSN_DUMP(anchor, iobj, lobj);
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "insn_set_sc_state error: %d at "LABEL_FORMAT
+ ", %d expected\n",
+ lobj->sc_state, lobj->label_no, nstate);
+ return COMPILE_NG;
+ }
+ }
+ else {
+ lobj->sc_state = nstate;
+ }
+ if (insn_id == BIN(jump)) {
+ nstate = SCS_XX;
+ }
+ }
+ else if (insn_id == BIN(leave)) {
+ nstate = SCS_XX;
+ }
+
+ return nstate;
+}
+
+static int
+label_set_sc_state(LABEL *lobj, int state)
+{
+ if (lobj->sc_state != 0) {
+ if (lobj->sc_state != state) {
+ state = lobj->sc_state;
+ }
+ }
+ else {
+ lobj->sc_state = state;
+ }
+
+ return state;
+}
+
+
+#endif
+
+static int
+iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
+{
+#if OPT_STACK_CACHING
+ LINK_ELEMENT *list;
+ int state, insn_id;
+
+ /* initialize */
+ state = SCS_XX;
+ list = FIRST_ELEMENT(anchor);
+ /* dump_disasm_list(list); */
+
+ /* for each list element */
+ while (list) {
+ redo_point:
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ INSN *iobj = (INSN *)list;
+ insn_id = iobj->insn_id;
+
+ /* dump_disasm_list(list); */
+
+ switch (insn_id) {
+ case BIN(nop):
+ {
+ /* exception merge point */
+ if (state != SCS_AX) {
+ NODE dummy_line_node = generate_dummy_line_node(0, -1);
+ INSN *rpobj =
+ new_insn_body(iseq, &dummy_line_node, BIN(reput), 0);
+
+ /* replace this insn */
+ ELEM_REPLACE(list, (LINK_ELEMENT *)rpobj);
+ list = (LINK_ELEMENT *)rpobj;
+ goto redo_point;
+ }
+ break;
+ }
+ case BIN(swap):
+ {
+ if (state == SCS_AB || state == SCS_BA) {
+ state = (state == SCS_AB ? SCS_BA : SCS_AB);
+
+ ELEM_REMOVE(list);
+ list = list->next;
+ goto redo_point;
+ }
+ break;
+ }
+ case BIN(pop):
+ {
+ switch (state) {
+ case SCS_AX:
+ case SCS_BX:
+ state = SCS_XX;
+ break;
+ case SCS_AB:
+ state = SCS_AX;
+ break;
+ case SCS_BA:
+ state = SCS_BX;
+ break;
+ case SCS_XX:
+ goto normal_insn;
+ default:
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "unreachable");
+ return COMPILE_NG;
+ }
+ /* remove useless pop */
+ ELEM_REMOVE(list);
+ list = list->next;
+ goto redo_point;
+ }
+ default:;
+ /* none */
+ } /* end of switch */
+ normal_insn:
+ state = insn_set_sc_state(iseq, anchor, iobj, state);
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ LABEL *lobj;
+ lobj = (LABEL *)list;
+
+ state = label_set_sc_state(lobj, state);
+ }
+ default:
+ break;
+ }
+ list = list->next;
+ }
+#endif
+ return COMPILE_OK;
+}
+
+static int
+all_string_result_p(const NODE *node)
+{
+ if (!node) return FALSE;
+ switch (nd_type(node)) {
+ case NODE_STR: case NODE_DSTR:
+ return TRUE;
+ case NODE_IF: case NODE_UNLESS:
+ if (!node->nd_body || !node->nd_else) return FALSE;
+ if (all_string_result_p(node->nd_body))
+ return all_string_result_p(node->nd_else);
+ return FALSE;
+ case NODE_AND: case NODE_OR:
+ if (!node->nd_2nd)
+ return all_string_result_p(node->nd_1st);
+ if (!all_string_result_p(node->nd_1st))
+ return FALSE;
+ return all_string_result_p(node->nd_2nd);
+ default:
+ return FALSE;
+ }
+}
+
+static int
+compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int *cntp)
+{
+ const NODE *list = node->nd_next;
+ VALUE lit = node->nd_lit;
+ LINK_ELEMENT *first_lit = 0;
+ int cnt = 0;
+
+ debugp_param("nd_lit", lit);
+ if (!NIL_P(lit)) {
+ cnt++;
+ if (!RB_TYPE_P(lit, T_STRING)) {
+ COMPILE_ERROR(ERROR_ARGS "dstr: must be string: %s",
+ rb_builtin_type_name(TYPE(lit)));
+ return COMPILE_NG;
+ }
+ lit = rb_fstring(lit);
+ ADD_INSN1(ret, node, putobject, lit);
+ RB_OBJ_WRITTEN(iseq, Qundef, lit);
+ if (RSTRING_LEN(lit) == 0) first_lit = LAST_ELEMENT(ret);
+ }
+
+ while (list) {
+ const NODE *const head = list->nd_head;
+ if (nd_type_p(head, NODE_STR)) {
+ lit = rb_fstring(head->nd_lit);
+ ADD_INSN1(ret, head, putobject, lit);
+ RB_OBJ_WRITTEN(iseq, Qundef, lit);
+ lit = Qnil;
+ }
+ else {
+ CHECK(COMPILE(ret, "each string", head));
+ }
+ cnt++;
+ list = list->nd_next;
+ }
+ if (NIL_P(lit) && first_lit) {
+ ELEM_REMOVE(first_lit);
+ --cnt;
+ }
+ *cntp = cnt;
+
+ return COMPILE_OK;
+}
+
+static int
+compile_block(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, int popped)
+{
+ while (node && nd_type_p(node, NODE_BLOCK)) {
+ CHECK(COMPILE_(ret, "BLOCK body", node->nd_head,
+ (node->nd_next ? 1 : popped)));
+ node = node->nd_next;
+ }
+ if (node) {
+ CHECK(COMPILE_(ret, "BLOCK next", node->nd_next, popped));
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_dstr(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node)
+{
+ int cnt;
+ if (!node->nd_next) {
+ VALUE lit = rb_fstring(node->nd_lit);
+ ADD_INSN1(ret, node, putstring, lit);
+ RB_OBJ_WRITTEN(iseq, Qundef, lit);
+ }
+ else {
+ CHECK(compile_dstr_fragments(iseq, ret, node, &cnt));
+ ADD_INSN1(ret, node, concatstrings, INT2FIX(cnt));
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_dregx(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node)
+{
+ int cnt;
+ CHECK(compile_dstr_fragments(iseq, ret, node, &cnt));
+ ADD_INSN2(ret, node, toregexp, INT2FIX(node->nd_cflag), INT2FIX(cnt));
+ return COMPILE_OK;
+}
+
+static int
+compile_flip_flop(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int again,
+ LABEL *then_label, LABEL *else_label)
+{
+ const int line = nd_line(node);
+ LABEL *lend = NEW_LABEL(line);
+ rb_num_t cnt = ISEQ_FLIP_CNT_INCREMENT(ISEQ_BODY(iseq)->local_iseq)
+ + VM_SVAR_FLIPFLOP_START;
+ VALUE key = INT2FIX(cnt);
+
+ ADD_INSN2(ret, node, getspecial, key, INT2FIX(0));
+ ADD_INSNL(ret, node, branchif, lend);
+
+ /* *flip == 0 */
+ CHECK(COMPILE(ret, "flip2 beg", node->nd_beg));
+ ADD_INSNL(ret, node, branchunless, else_label);
+ ADD_INSN1(ret, node, putobject, Qtrue);
+ ADD_INSN1(ret, node, setspecial, key);
+ if (!again) {
+ ADD_INSNL(ret, node, jump, then_label);
+ }
+
+ /* *flip == 1 */
+ ADD_LABEL(ret, lend);
+ CHECK(COMPILE(ret, "flip2 end", node->nd_end));
+ ADD_INSNL(ret, node, branchunless, then_label);
+ ADD_INSN1(ret, node, putobject, Qfalse);
+ ADD_INSN1(ret, node, setspecial, key);
+ ADD_INSNL(ret, node, jump, then_label);
+
+ return COMPILE_OK;
+}
+
+static int
+compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *cond,
+ LABEL *then_label, LABEL *else_label)
+{
+ again:
+ switch (nd_type(cond)) {
+ case NODE_AND:
+ {
+ LABEL *label = NEW_LABEL(nd_line(cond));
+ CHECK(compile_branch_condition(iseq, ret, cond->nd_1st, label,
+ else_label));
+ if (!label->refcnt) {
+ ADD_INSN(ret, cond, putnil);
+ break;
+ }
+ ADD_LABEL(ret, label);
+ cond = cond->nd_2nd;
+ goto again;
+ }
+ case NODE_OR:
+ {
+ LABEL *label = NEW_LABEL(nd_line(cond));
+ CHECK(compile_branch_condition(iseq, ret, cond->nd_1st, then_label,
+ label));
+ if (!label->refcnt) {
+ ADD_INSN(ret, cond, putnil);
+ break;
+ }
+ ADD_LABEL(ret, label);
+ cond = cond->nd_2nd;
+ goto again;
+ }
+ case NODE_LIT: /* NODE_LIT is always true */
+ case NODE_TRUE:
+ case NODE_STR:
+ case NODE_ZLIST:
+ case NODE_LAMBDA:
+ /* printf("useless condition eliminate (%s)\n", ruby_node_name(nd_type(cond))); */
+ ADD_INSNL(ret, cond, jump, then_label);
+ return COMPILE_OK;
+ case NODE_FALSE:
+ case NODE_NIL:
+ /* printf("useless condition eliminate (%s)\n", ruby_node_name(nd_type(cond))); */
+ ADD_INSNL(ret, cond, jump, else_label);
+ return COMPILE_OK;
+ case NODE_LIST:
+ case NODE_ARGSCAT:
+ case NODE_DREGX:
+ case NODE_DSTR:
+ CHECK(COMPILE_POPPED(ret, "branch condition", cond));
+ ADD_INSNL(ret, cond, jump, then_label);
+ return COMPILE_OK;
+ case NODE_FLIP2:
+ CHECK(compile_flip_flop(iseq, ret, cond, TRUE, then_label, else_label));
+ return COMPILE_OK;
+ case NODE_FLIP3:
+ CHECK(compile_flip_flop(iseq, ret, cond, FALSE, then_label, else_label));
+ return COMPILE_OK;
+ case NODE_DEFINED:
+ CHECK(compile_defined_expr(iseq, ret, cond, Qfalse));
+ break;
+ default:
+ CHECK(COMPILE(ret, "branch condition", cond));
+ break;
+ }
+
+ ADD_INSNL(ret, cond, branchunless, else_label);
+ ADD_INSNL(ret, cond, jump, then_label);
+ return COMPILE_OK;
+}
+
+#define HASH_BRACE 1
+
+static int
+keyword_node_p(const NODE *const node)
+{
+ return nd_type_p(node, NODE_HASH) && (node->nd_brace & HASH_BRACE) != HASH_BRACE;
+}
+
+static int
+compile_keyword_arg(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
+ const NODE *const root_node,
+ struct rb_callinfo_kwarg **const kw_arg_ptr,
+ unsigned int *flag)
+{
+ if (kw_arg_ptr == NULL) return FALSE;
+
+ if (root_node->nd_head && nd_type_p(root_node->nd_head, NODE_LIST)) {
+ const NODE *node = root_node->nd_head;
+ int seen_nodes = 0;
+
+ while (node) {
+ const NODE *key_node = node->nd_head;
+ seen_nodes++;
+
+ assert(nd_type_p(node, NODE_LIST));
+ if (key_node && nd_type_p(key_node, NODE_LIT) && SYMBOL_P(key_node->nd_lit)) {
+ /* can be keywords */
+ }
+ else {
+ if (flag) {
+ *flag |= VM_CALL_KW_SPLAT;
+ if (seen_nodes > 1 || node->nd_next->nd_next) {
+ /* A new hash will be created for the keyword arguments
+ * in this case, so mark the method as passing mutable
+ * keyword splat.
+ */
+ *flag |= VM_CALL_KW_SPLAT_MUT;
+ }
+ }
+ return FALSE;
+ }
+ node = node->nd_next; /* skip value node */
+ node = node->nd_next;
+ }
+
+ /* may be keywords */
+ node = root_node->nd_head;
+ {
+ int len = (int)node->nd_alen / 2;
+ struct rb_callinfo_kwarg *kw_arg =
+ rb_xmalloc_mul_add(len, sizeof(VALUE), sizeof(struct rb_callinfo_kwarg));
+ VALUE *keywords = kw_arg->keywords;
+ int i = 0;
+ kw_arg->keyword_len = len;
+
+ *kw_arg_ptr = kw_arg;
+
+ for (i=0; node != NULL; i++, node = node->nd_next->nd_next) {
+ const NODE *key_node = node->nd_head;
+ const NODE *val_node = node->nd_next->nd_head;
+ keywords[i] = key_node->nd_lit;
+ NO_CHECK(COMPILE(ret, "keyword values", val_node));
+ }
+ assert(i == len);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static int
+compile_args(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node,
+ struct rb_callinfo_kwarg **keywords_ptr, unsigned int *flag)
+{
+ int len = 0;
+
+ for (; node; len++, node = node->nd_next) {
+ if (CPDEBUG > 0) {
+ EXPECT_NODE("compile_args", node, NODE_LIST, -1);
+ }
+
+ if (node->nd_next == NULL && keyword_node_p(node->nd_head)) { /* last node */
+ if (compile_keyword_arg(iseq, ret, node->nd_head, keywords_ptr, flag)) {
+ len--;
+ }
+ else {
+ compile_hash(iseq, ret, node->nd_head, TRUE, FALSE);
+ }
+ }
+ else {
+ NO_CHECK(COMPILE_(ret, "array element", node->nd_head, FALSE));
+ }
+ }
+
+ return len;
+}
+
+static inline int
+static_literal_node_p(const NODE *node, const rb_iseq_t *iseq)
+{
+ switch (nd_type(node)) {
+ case NODE_LIT:
+ case NODE_NIL:
+ case NODE_TRUE:
+ case NODE_FALSE:
+ return TRUE;
+ case NODE_STR:
+ return ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal;
+ default:
+ return FALSE;
+ }
+}
+
+static inline VALUE
+static_literal_value(const NODE *node, rb_iseq_t *iseq)
+{
+ switch (nd_type(node)) {
+ case NODE_NIL:
+ return Qnil;
+ case NODE_TRUE:
+ return Qtrue;
+ case NODE_FALSE:
+ return Qfalse;
+ case NODE_STR:
+ if (ISEQ_COMPILE_DATA(iseq)->option->debug_frozen_string_literal || RTEST(ruby_debug)) {
+ VALUE lit;
+ VALUE debug_info = rb_ary_new_from_args(2, rb_iseq_path(iseq), INT2FIX((int)nd_line(node)));
+ lit = rb_str_dup(node->nd_lit);
+ rb_ivar_set(lit, id_debug_created_info, rb_obj_freeze(debug_info));
+ return rb_str_freeze(lit);
+ }
+ else {
+ return rb_fstring(node->nd_lit);
+ }
+ default:
+ return node->nd_lit;
+ }
+}
+
+static int
+compile_array(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, int popped)
+{
+ const NODE *line_node = node;
+
+ if (nd_type_p(node, NODE_ZLIST)) {
+ if (!popped) {
+ ADD_INSN1(ret, line_node, newarray, INT2FIX(0));
+ }
+ return 0;
+ }
+
+ EXPECT_NODE("compile_array", node, NODE_LIST, -1);
+
+ if (popped) {
+ for (; node; node = node->nd_next) {
+ NO_CHECK(COMPILE_(ret, "array element", node->nd_head, popped));
+ }
+ return 1;
+ }
+
+ /* Compilation of an array literal.
+ * The following code is essentially the same as:
+ *
+ * for (int count = 0; node; count++; node->nd_next) {
+ * compile(node->nd_head);
+ * }
+ * ADD_INSN(newarray, count);
+ *
+ * However, there are three points.
+ *
+ * - The code above causes stack overflow for a big string literal.
+ * The following limits the stack length up to max_stack_len.
+ *
+ * [x1,x2,...,x10000] =>
+ * push x1 ; push x2 ; ...; push x256; newarray 256;
+ * push x257; push x258; ...; push x512; newarray 256; concatarray;
+ * push x513; push x514; ...; push x768; newarray 256; concatarray;
+ * ...
+ *
+ * - Long subarray can be optimized by pre-allocating a hidden array.
+ *
+ * [1,2,3,...,100] =>
+ * duparray [1,2,3,...,100]
+ *
+ * [x, 1,2,3,...,100, z] =>
+ * push x; newarray 1;
+ * putobject [1,2,3,...,100] (<- hidden array); concatarray;
+ * push z; newarray 1; concatarray
+ *
+ * - If the last element is a keyword, newarraykwsplat should be emitted
+ * to check and remove empty keyword arguments hash from array.
+ * (Note: a keyword is NODE_HASH which is not static_literal_node_p.)
+ *
+ * [1,2,3,**kw] =>
+ * putobject 1; putobject 2; putobject 3; push kw; newarraykwsplat
+ */
+
+ const int max_stack_len = 0x100;
+ const int min_tmp_ary_len = 0x40;
+ int stack_len = 0;
+ int first_chunk = 1;
+
+ /* Convert pushed elements to an array, and concatarray if needed */
+#define FLUSH_CHUNK(newarrayinsn) \
+ if (stack_len) { \
+ ADD_INSN1(ret, line_node, newarrayinsn, INT2FIX(stack_len)); \
+ if (!first_chunk) ADD_INSN(ret, line_node, concatarray); \
+ first_chunk = stack_len = 0; \
+ }
+
+ while (node) {
+ int count = 1;
+
+ /* pre-allocation check (this branch can be omittable) */
+ if (static_literal_node_p(node->nd_head, iseq)) {
+ /* count the elements that are optimizable */
+ const NODE *node_tmp = node->nd_next;
+ for (; node_tmp && static_literal_node_p(node_tmp->nd_head, iseq); node_tmp = node_tmp->nd_next)
+ count++;
+
+ if ((first_chunk && stack_len == 0 && !node_tmp) || count >= min_tmp_ary_len) {
+ /* The literal contains only optimizable elements, or the subarray is long enough */
+ VALUE ary = rb_ary_hidden_new(count);
+
+ /* Create a hidden array */
+ for (; count; count--, node = node->nd_next)
+ rb_ary_push(ary, static_literal_value(node->nd_head, iseq));
+ OBJ_FREEZE(ary);
+
+ /* Emit optimized code */
+ FLUSH_CHUNK(newarray);
+ if (first_chunk) {
+ ADD_INSN1(ret, line_node, duparray, ary);
+ first_chunk = 0;
+ }
+ else {
+ ADD_INSN1(ret, line_node, putobject, ary);
+ ADD_INSN(ret, line_node, concatarray);
+ }
+ RB_OBJ_WRITTEN(iseq, Qundef, ary);
+ }
+ }
+
+ /* Base case: Compile "count" elements */
+ for (; count; count--, node = node->nd_next) {
+ if (CPDEBUG > 0) {
+ EXPECT_NODE("compile_array", node, NODE_LIST, -1);
+ }
+
+ NO_CHECK(COMPILE_(ret, "array element", node->nd_head, 0));
+ stack_len++;
+
+ if (!node->nd_next && keyword_node_p(node->nd_head)) {
+ /* Reached the end, and the last element is a keyword */
+ FLUSH_CHUNK(newarraykwsplat);
+ return 1;
+ }
+
+ /* If there are many pushed elements, flush them to avoid stack overflow */
+ if (stack_len >= max_stack_len) FLUSH_CHUNK(newarray);
+ }
+ }
+
+ FLUSH_CHUNK(newarray);
+#undef FLUSH_CHUNK
+ return 1;
+}
+
+/* Compile an array containing the single element represented by node */
+static int
+compile_array_1(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node)
+{
+ if (static_literal_node_p(node, iseq)) {
+ VALUE ary = rb_ary_hidden_new(1);
+ rb_ary_push(ary, static_literal_value(node, iseq));
+ OBJ_FREEZE(ary);
+
+ ADD_INSN1(ret, node, duparray, ary);
+ }
+ else {
+ CHECK(COMPILE_(ret, "array element", node, FALSE));
+ if (keyword_node_p(node)) {
+ ADD_INSN1(ret, node, newarraykwsplat, INT2FIX(1));
+ }
+ else {
+ ADD_INSN1(ret, node, newarray, INT2FIX(1));
+ }
+ }
+
+ return 1;
+}
+
+static inline int
+static_literal_node_pair_p(const NODE *node, const rb_iseq_t *iseq)
+{
+ return node->nd_head && static_literal_node_p(node->nd_head, iseq) && static_literal_node_p(node->nd_next->nd_head, iseq);
+}
+
+static int
+compile_hash(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, int method_call_keywords, int popped)
+{
+ const NODE *line_node = node;
+
+ node = node->nd_head;
+
+ if (!node || nd_type_p(node, NODE_ZLIST)) {
+ if (!popped) {
+ ADD_INSN1(ret, line_node, newhash, INT2FIX(0));
+ }
+ return 0;
+ }
+
+ EXPECT_NODE("compile_hash", node, NODE_LIST, -1);
+
+ if (popped) {
+ for (; node; node = node->nd_next) {
+ NO_CHECK(COMPILE_(ret, "hash element", node->nd_head, popped));
+ }
+ return 1;
+ }
+
+ /* Compilation of a hash literal (or keyword arguments).
+ * This is very similar to compile_array, but there are some differences:
+ *
+ * - It contains key-value pairs. So we need to take every two elements.
+ * We can assume that the length is always even.
+ *
+ * - Merging is done by a method call (id_core_hash_merge_ptr).
+ * Sometimes we need to insert the receiver, so "anchor" is needed.
+ * In addition, a method call is much slower than concatarray.
+ * So it pays only when the subsequence is really long.
+ * (min_tmp_hash_len must be much larger than min_tmp_ary_len.)
+ *
+ * - We need to handle keyword splat: **kw.
+ * For **kw, the key part (node->nd_head) is NULL, and the value part
+ * (node->nd_next->nd_head) is "kw".
+ * The code is a bit difficult to avoid hash allocation for **{}.
+ */
+
+ const int max_stack_len = 0x100;
+ const int min_tmp_hash_len = 0x800;
+ int stack_len = 0;
+ int first_chunk = 1;
+ DECL_ANCHOR(anchor);
+ INIT_ANCHOR(anchor);
+
+ /* Convert pushed elements to a hash, and merge if needed */
+#define FLUSH_CHUNK() \
+ if (stack_len) { \
+ if (first_chunk) { \
+ APPEND_LIST(ret, anchor); \
+ ADD_INSN1(ret, line_node, newhash, INT2FIX(stack_len)); \
+ } \
+ else { \
+ ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE)); \
+ ADD_INSN(ret, line_node, swap); \
+ APPEND_LIST(ret, anchor); \
+ ADD_SEND(ret, line_node, id_core_hash_merge_ptr, INT2FIX(stack_len + 1)); \
+ } \
+ INIT_ANCHOR(anchor); \
+ first_chunk = stack_len = 0; \
+ }
+
+ while (node) {
+ int count = 1;
+
+ /* pre-allocation check (this branch can be omittable) */
+ if (static_literal_node_pair_p(node, iseq)) {
+ /* count the elements that are optimizable */
+ const NODE *node_tmp = node->nd_next->nd_next;
+ for (; node_tmp && static_literal_node_pair_p(node_tmp, iseq); node_tmp = node_tmp->nd_next->nd_next)
+ count++;
+
+ if ((first_chunk && stack_len == 0 && !node_tmp) || count >= min_tmp_hash_len) {
+ /* The literal contains only optimizable elements, or the subsequence is long enough */
+ VALUE ary = rb_ary_hidden_new(count);
+
+ /* Create a hidden hash */
+ for (; count; count--, node = node->nd_next->nd_next) {
+ VALUE elem[2];
+ elem[0] = static_literal_value(node->nd_head, iseq);
+ elem[1] = static_literal_value(node->nd_next->nd_head, iseq);
+ rb_ary_cat(ary, elem, 2);
+ }
+ VALUE hash = rb_hash_new_with_size(RARRAY_LEN(ary) / 2);
+ rb_hash_bulk_insert(RARRAY_LEN(ary), RARRAY_CONST_PTR_TRANSIENT(ary), hash);
+ hash = rb_obj_hide(hash);
+ OBJ_FREEZE(hash);
+
+ /* Emit optimized code */
+ FLUSH_CHUNK();
+ if (first_chunk) {
+ ADD_INSN1(ret, line_node, duphash, hash);
+ first_chunk = 0;
+ }
+ else {
+ ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN(ret, line_node, swap);
+
+ ADD_INSN1(ret, line_node, putobject, hash);
+
+ ADD_SEND(ret, line_node, id_core_hash_merge_kwd, INT2FIX(2));
+ }
+ RB_OBJ_WRITTEN(iseq, Qundef, hash);
+ }
+ }
+
+ /* Base case: Compile "count" elements */
+ for (; count; count--, node = node->nd_next->nd_next) {
+
+ if (CPDEBUG > 0) {
+ EXPECT_NODE("compile_hash", node, NODE_LIST, -1);
+ }
+
+ if (node->nd_head) {
+ /* Normal key-value pair */
+ NO_CHECK(COMPILE_(anchor, "hash key element", node->nd_head, 0));
+ NO_CHECK(COMPILE_(anchor, "hash value element", node->nd_next->nd_head, 0));
+ stack_len += 2;
+
+ /* If there are many pushed elements, flush them to avoid stack overflow */
+ if (stack_len >= max_stack_len) FLUSH_CHUNK();
+ }
+ else {
+ /* kwsplat case: foo(..., **kw, ...) */
+ FLUSH_CHUNK();
+
+ const NODE *kw = node->nd_next->nd_head;
+ int empty_kw = nd_type_p(kw, NODE_LIT) && RB_TYPE_P(kw->nd_lit, T_HASH); /* foo( ..., **{}, ...) */
+ int first_kw = first_chunk && stack_len == 0; /* foo(1,2,3, **kw, ...) */
+ int last_kw = !node->nd_next->nd_next; /* foo( ..., **kw) */
+ int only_kw = last_kw && first_kw; /* foo(1,2,3, **kw) */
+
+ if (empty_kw) {
+ if (only_kw && method_call_keywords) {
+ /* **{} appears at the only keyword argument in method call,
+ * so it won't be modified.
+ * kw is a special NODE_LIT that contains a special empty hash,
+ * so this emits: putobject {}.
+ * This is only done for method calls and not for literal hashes,
+ * because literal hashes should always result in a new hash.
+ */
+ NO_CHECK(COMPILE(ret, "keyword splat", kw));
+ }
+ else if (first_kw) {
+ /* **{} appears as the first keyword argument, so it may be modified.
+ * We need to create a fresh hash object.
+ */
+ ADD_INSN1(ret, line_node, newhash, INT2FIX(0));
+ }
+ /* Any empty keyword splats that are not the first can be ignored.
+ * since merging an empty hash into the existing hash is the same
+ * as not merging it. */
+ }
+ else {
+ if (only_kw && method_call_keywords) {
+ /* **kw is only keyword argument in method call.
+ * Use directly. This will be not be flagged as mutable.
+ * This is only done for method calls and not for literal hashes,
+ * because literal hashes should always result in a new hash.
+ */
+ NO_CHECK(COMPILE(ret, "keyword splat", kw));
+ }
+ else {
+ /* There is more than one keyword argument, or this is not a method
+ * call. In that case, we need to add an empty hash (if first keyword),
+ * or merge the hash to the accumulated hash (if not the first keyword).
+ */
+ ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ if (first_kw) ADD_INSN1(ret, line_node, newhash, INT2FIX(0));
+ else ADD_INSN(ret, line_node, swap);
+
+ NO_CHECK(COMPILE(ret, "keyword splat", kw));
+
+ ADD_SEND(ret, line_node, id_core_hash_merge_kwd, INT2FIX(2));
+ }
+ }
+
+ first_chunk = 0;
+ }
+ }
+ }
+
+ FLUSH_CHUNK();
+#undef FLUSH_CHUNK
+ return 1;
+}
+
+VALUE
+rb_node_case_when_optimizable_literal(const NODE *const node)
+{
+ switch (nd_type(node)) {
+ case NODE_LIT: {
+ VALUE v = node->nd_lit;
+ double ival;
+ if (RB_FLOAT_TYPE_P(v) &&
+ modf(RFLOAT_VALUE(v), &ival) == 0.0) {
+ return FIXABLE(ival) ? LONG2FIX((long)ival) : rb_dbl2big(ival);
+ }
+ if (RB_TYPE_P(v, T_RATIONAL) || RB_TYPE_P(v, T_COMPLEX)) {
+ return Qundef;
+ }
+ if (SYMBOL_P(v) || rb_obj_is_kind_of(v, rb_cNumeric)) {
+ return v;
+ }
+ break;
+ }
+ case NODE_NIL:
+ return Qnil;
+ case NODE_TRUE:
+ return Qtrue;
+ case NODE_FALSE:
+ return Qfalse;
+ case NODE_STR:
+ return rb_fstring(node->nd_lit);
+ }
+ return Qundef;
+}
+
+static int
+when_vals(rb_iseq_t *iseq, LINK_ANCHOR *const cond_seq, const NODE *vals,
+ LABEL *l1, int only_special_literals, VALUE literals)
+{
+ while (vals) {
+ const NODE *val = vals->nd_head;
+ VALUE lit = rb_node_case_when_optimizable_literal(val);
+
+ if (UNDEF_P(lit)) {
+ only_special_literals = 0;
+ }
+ else if (NIL_P(rb_hash_lookup(literals, lit))) {
+ rb_hash_aset(literals, lit, (VALUE)(l1) | 1);
+ }
+
+ if (nd_type_p(val, NODE_STR)) {
+ debugp_param("nd_lit", val->nd_lit);
+ lit = rb_fstring(val->nd_lit);
+ ADD_INSN1(cond_seq, val, putobject, lit);
+ RB_OBJ_WRITTEN(iseq, Qundef, lit);
+ }
+ else {
+ if (!COMPILE(cond_seq, "when cond", val)) return -1;
+ }
+
+ // Emit patern === target
+ ADD_INSN1(cond_seq, vals, topn, INT2FIX(1));
+ ADD_CALL(cond_seq, vals, idEqq, INT2FIX(1));
+ ADD_INSNL(cond_seq, val, branchif, l1);
+ vals = vals->nd_next;
+ }
+ return only_special_literals;
+}
+
+static int
+when_splat_vals(rb_iseq_t *iseq, LINK_ANCHOR *const cond_seq, const NODE *vals,
+ LABEL *l1, int only_special_literals, VALUE literals)
+{
+ const NODE *line_node = vals;
+
+ switch (nd_type(vals)) {
+ case NODE_LIST:
+ if (when_vals(iseq, cond_seq, vals, l1, only_special_literals, literals) < 0)
+ return COMPILE_NG;
+ break;
+ case NODE_SPLAT:
+ ADD_INSN (cond_seq, line_node, dup);
+ CHECK(COMPILE(cond_seq, "when splat", vals->nd_head));
+ ADD_INSN1(cond_seq, line_node, splatarray, Qfalse);
+ ADD_INSN1(cond_seq, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE | VM_CHECKMATCH_ARRAY));
+ ADD_INSNL(cond_seq, line_node, branchif, l1);
+ break;
+ case NODE_ARGSCAT:
+ CHECK(when_splat_vals(iseq, cond_seq, vals->nd_head, l1, only_special_literals, literals));
+ CHECK(when_splat_vals(iseq, cond_seq, vals->nd_body, l1, only_special_literals, literals));
+ break;
+ case NODE_ARGSPUSH:
+ CHECK(when_splat_vals(iseq, cond_seq, vals->nd_head, l1, only_special_literals, literals));
+ ADD_INSN (cond_seq, line_node, dup);
+ CHECK(COMPILE(cond_seq, "when argspush body", vals->nd_body));
+ ADD_INSN1(cond_seq, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE));
+ ADD_INSNL(cond_seq, line_node, branchif, l1);
+ break;
+ default:
+ ADD_INSN (cond_seq, line_node, dup);
+ CHECK(COMPILE(cond_seq, "when val", vals));
+ ADD_INSN1(cond_seq, line_node, splatarray, Qfalse);
+ ADD_INSN1(cond_seq, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE | VM_CHECKMATCH_ARRAY));
+ ADD_INSNL(cond_seq, line_node, branchif, l1);
+ break;
+ }
+ return COMPILE_OK;
+}
+
+/* Multiple Assignment Handling
+ *
+ * In order to handle evaluation of multiple assignment such that the left hand side
+ * is evaluated before the right hand side, we need to process the left hand side
+ * and see if there are any attributes that need to be assigned, or constants set
+ * on explicit objects. If so, we add instructions to evaluate the receiver of
+ * any assigned attributes or constants before we process the right hand side.
+ *
+ * For a multiple assignment such as:
+ *
+ * l1.m1, l2[0] = r3, r4
+ *
+ * We start off evaluating l1 and l2, then we evaluate r3 and r4, then we
+ * assign the result of r3 to l1.m1, and then the result of r4 to l2.m2.
+ * On the VM stack, this looks like:
+ *
+ * self # putself
+ * l1 # send
+ * l1, self # putself
+ * l1, l2 # send
+ * l1, l2, 0 # putobject 0
+ * l1, l2, 0, [r3, r4] # after evaluation of RHS
+ * l1, l2, 0, [r3, r4], r4, r3 # expandarray
+ * l1, l2, 0, [r3, r4], r4, r3, l1 # topn 5
+ * l1, l2, 0, [r3, r4], r4, l1, r3 # swap
+ * l1, l2, 0, [r3, r4], r4, m1= # send
+ * l1, l2, 0, [r3, r4], r4 # pop
+ * l1, l2, 0, [r3, r4], r4, l2 # topn 3
+ * l1, l2, 0, [r3, r4], r4, l2, 0 # topn 3
+ * l1, l2, 0, [r3, r4], r4, l2, 0, r4 # topn 2
+ * l1, l2, 0, [r3, r4], r4, []= # send
+ * l1, l2, 0, [r3, r4], r4 # pop
+ * l1, l2, 0, [r3, r4] # pop
+ * [r3, r4], l2, 0, [r3, r4] # setn 3
+ * [r3, r4], l2, 0 # pop
+ * [r3, r4], l2 # pop
+ * [r3, r4] # pop
+ *
+ * This is made more complex when you have to handle splats, post args,
+ * and arbitrary levels of nesting. You need to keep track of the total
+ * number of attributes to set, and for each attribute, how many entries
+ * are on the stack before the final attribute, in order to correctly
+ * calculate the topn value to use to get the receiver of the attribute
+ * setter method.
+ *
+ * A brief description of the VM stack for simple multiple assignment
+ * with no splat (rhs_array will not be present if the return value of
+ * the multiple assignment is not needed):
+ *
+ * lhs_attr1, lhs_attr2, ..., rhs_array, ..., rhs_arg2, rhs_arg1
+ *
+ * For multiple assignment with splats, while processing the part before
+ * the splat (splat+post here is an array of the splat and the post arguments):
+ *
+ * lhs_attr1, lhs_attr2, ..., rhs_array, splat+post, ..., rhs_arg2, rhs_arg1
+ *
+ * When processing the splat and post arguments:
+ *
+ * lhs_attr1, lhs_attr2, ..., rhs_array, ..., post_arg2, post_arg1, splat
+ *
+ * When processing nested multiple assignment, existing values on the stack
+ * are kept. So for:
+ *
+ * (l1.m1, l2.m2), l3.m3, l4* = [r1, r2], r3, r4
+ *
+ * The stack layout would be the following before processing the nested
+ * multiple assignment:
+ *
+ * l1, l2, [[r1, r2], r3, r4], [r4], r3, [r1, r2]
+ *
+ * In order to handle this correctly, we need to keep track of the nesting
+ * level for each attribute assignment, as well as the attribute number
+ * (left hand side attributes are processed left to right) and number of
+ * arguments to pass to the setter method. struct masgn_lhs_node tracks
+ * this information.
+ *
+ * We also need to track information for the entire multiple assignment, such
+ * as the total number of arguments, and the current nesting level, to
+ * handle both nested multiple assignment as well as cases where the
+ * rhs is not needed. We also need to keep track of all attribute
+ * assignments in this, which we do using a linked listed. struct masgn_state
+ * tracks this information.
+ */
+
+struct masgn_lhs_node {
+ INSN *before_insn;
+ struct masgn_lhs_node *next;
+ const NODE *line_node;
+ int argn;
+ int num_args;
+ int lhs_pos;
+};
+
+struct masgn_state {
+ struct masgn_lhs_node *first_memo;
+ struct masgn_lhs_node *last_memo;
+ int lhs_level;
+ int num_args;
+ bool nested;
+};
+
+static int
+add_masgn_lhs_node(struct masgn_state *state, int lhs_pos, const NODE *line_node, int argc, INSN *before_insn)
+{
+ if (!state) {
+ rb_bug("no masgn_state");
+ }
+
+ struct masgn_lhs_node *memo;
+ memo = malloc(sizeof(struct masgn_lhs_node));
+ if (!memo) {
+ return COMPILE_NG;
+ }
+
+ memo->before_insn = before_insn;
+ memo->line_node = line_node;
+ memo->argn = state->num_args + 1;
+ memo->num_args = argc;
+ state->num_args += argc;
+ memo->lhs_pos = lhs_pos;
+ memo->next = NULL;
+ if (!state->first_memo) {
+ state->first_memo = memo;
+ }
+ else {
+ state->last_memo->next = memo;
+ }
+ state->last_memo = memo;
+
+ return COMPILE_OK;
+}
+
+static int compile_massign0(rb_iseq_t *iseq, LINK_ANCHOR *const pre, LINK_ANCHOR *const rhs, LINK_ANCHOR *const lhs, LINK_ANCHOR *const post, const NODE *const node, struct masgn_state *state, int popped);
+
+static int
+compile_massign_lhs(rb_iseq_t *iseq, LINK_ANCHOR *const pre, LINK_ANCHOR *const rhs, LINK_ANCHOR *const lhs, LINK_ANCHOR *const post, const NODE *const node, struct masgn_state *state, int lhs_pos)
+{
+ switch (nd_type(node)) {
+ case NODE_ATTRASGN: {
+ INSN *iobj;
+ const NODE *line_node = node;
+
+ CHECK(COMPILE_POPPED(pre, "masgn lhs (NODE_ATTRASGN)", node));
+
+ bool safenav_call = false;
+ LINK_ELEMENT *insn_element = LAST_ELEMENT(pre);
+ iobj = (INSN *)get_prev_insn((INSN *)insn_element); /* send insn */
+ ASSUME(iobj);
+ ELEM_REMOVE(insn_element);
+ if (!IS_INSN_ID(iobj, send)) {
+ safenav_call = true;
+ iobj = (INSN *)get_prev_insn(iobj);
+ ELEM_INSERT_NEXT(&iobj->link, insn_element);
+ }
+ (pre->last = iobj->link.prev)->next = 0;
+
+ const struct rb_callinfo *ci = (struct rb_callinfo *)OPERAND_AT(iobj, 0);
+ int argc = vm_ci_argc(ci) + 1;
+ ci = ci_argc_set(iseq, ci, argc);
+ OPERAND_AT(iobj, 0) = (VALUE)ci;
+ RB_OBJ_WRITTEN(iseq, Qundef, ci);
+
+ if (argc == 1) {
+ ADD_INSN(lhs, line_node, swap);
+ }
+ else {
+ ADD_INSN1(lhs, line_node, topn, INT2FIX(argc));
+ }
+
+ if (!add_masgn_lhs_node(state, lhs_pos, line_node, argc, (INSN *)LAST_ELEMENT(lhs))) {
+ return COMPILE_NG;
+ }
+
+ iobj->link.prev = lhs->last;
+ lhs->last->next = &iobj->link;
+ for (lhs->last = &iobj->link; lhs->last->next; lhs->last = lhs->last->next);
+ if (vm_ci_flag(ci) & VM_CALL_ARGS_SPLAT) {
+ int argc = vm_ci_argc(ci);
+ ci = ci_argc_set(iseq, ci, argc - 1);
+ OPERAND_AT(iobj, 0) = (VALUE)ci;
+ RB_OBJ_WRITTEN(iseq, Qundef, iobj);
+ INSERT_BEFORE_INSN1(iobj, line_node, newarray, INT2FIX(1));
+ INSERT_BEFORE_INSN(iobj, line_node, concatarray);
+ }
+ if (!safenav_call) {
+ ADD_INSN(lhs, line_node, pop);
+ if (argc != 1) {
+ ADD_INSN(lhs, line_node, pop);
+ }
+ }
+ for (int i=0; i < argc; i++) {
+ ADD_INSN(post, line_node, pop);
+ }
+ break;
+ }
+ case NODE_MASGN: {
+ DECL_ANCHOR(nest_rhs);
+ INIT_ANCHOR(nest_rhs);
+ DECL_ANCHOR(nest_lhs);
+ INIT_ANCHOR(nest_lhs);
+
+ int prev_level = state->lhs_level;
+ bool prev_nested = state->nested;
+ state->nested = 1;
+ state->lhs_level = lhs_pos - 1;
+ CHECK(compile_massign0(iseq, pre, nest_rhs, nest_lhs, post, node, state, 1));
+ state->lhs_level = prev_level;
+ state->nested = prev_nested;
+
+ ADD_SEQ(lhs, nest_rhs);
+ ADD_SEQ(lhs, nest_lhs);
+ break;
+ }
+ case NODE_CDECL:
+ if (!node->nd_vid) {
+ /* Special handling only needed for expr::C, not for C */
+ INSN *iobj;
+
+ CHECK(COMPILE_POPPED(pre, "masgn lhs (NODE_CDECL)", node));
+
+ LINK_ELEMENT *insn_element = LAST_ELEMENT(pre);
+ iobj = (INSN *)insn_element; /* setconstant insn */
+ ELEM_REMOVE((LINK_ELEMENT *)get_prev_insn((INSN *)get_prev_insn(iobj)));
+ ELEM_REMOVE((LINK_ELEMENT *)get_prev_insn(iobj));
+ ELEM_REMOVE(insn_element);
+ pre->last = iobj->link.prev;
+ ADD_ELEM(lhs, (LINK_ELEMENT *)iobj);
+
+ if (!add_masgn_lhs_node(state, lhs_pos, node, 1, (INSN *)LAST_ELEMENT(lhs))) {
+ return COMPILE_NG;
+ }
+
+ ADD_INSN(post, node, pop);
+ break;
+ }
+ /* Fallthrough */
+ default: {
+ DECL_ANCHOR(anchor);
+ INIT_ANCHOR(anchor);
+ CHECK(COMPILE_POPPED(anchor, "masgn lhs", node));
+ ELEM_REMOVE(FIRST_ELEMENT(anchor));
+ ADD_SEQ(lhs, anchor);
+ }
+ }
+
+ return COMPILE_OK;
+}
+
+static int
+compile_massign_opt_lhs(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *lhsn)
+{
+ if (lhsn) {
+ CHECK(compile_massign_opt_lhs(iseq, ret, lhsn->nd_next));
+ CHECK(compile_massign_lhs(iseq, ret, ret, ret, ret, lhsn->nd_head, NULL, 0));
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_massign_opt(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
+ const NODE *rhsn, const NODE *orig_lhsn)
+{
+ VALUE mem[64];
+ const int memsize = numberof(mem);
+ int memindex = 0;
+ int llen = 0, rlen = 0;
+ int i;
+ const NODE *lhsn = orig_lhsn;
+
+#define MEMORY(v) { \
+ int i; \
+ if (memindex == memsize) return 0; \
+ for (i=0; i<memindex; i++) { \
+ if (mem[i] == (v)) return 0; \
+ } \
+ mem[memindex++] = (v); \
+}
+
+ if (rhsn == 0 || !nd_type_p(rhsn, NODE_LIST)) {
+ return 0;
+ }
+
+ while (lhsn) {
+ const NODE *ln = lhsn->nd_head;
+ switch (nd_type(ln)) {
+ case NODE_LASGN:
+ MEMORY(ln->nd_vid);
+ break;
+ case NODE_DASGN:
+ case NODE_IASGN:
+ case NODE_CVASGN:
+ MEMORY(ln->nd_vid);
+ break;
+ default:
+ return 0;
+ }
+ lhsn = lhsn->nd_next;
+ llen++;
+ }
+
+ while (rhsn) {
+ if (llen <= rlen) {
+ NO_CHECK(COMPILE_POPPED(ret, "masgn val (popped)", rhsn->nd_head));
+ }
+ else {
+ NO_CHECK(COMPILE(ret, "masgn val", rhsn->nd_head));
+ }
+ rhsn = rhsn->nd_next;
+ rlen++;
+ }
+
+ if (llen > rlen) {
+ for (i=0; i<llen-rlen; i++) {
+ ADD_INSN(ret, orig_lhsn, putnil);
+ }
+ }
+
+ compile_massign_opt_lhs(iseq, ret, orig_lhsn);
+ return 1;
+}
+
+static int
+compile_massign0(rb_iseq_t *iseq, LINK_ANCHOR *const pre, LINK_ANCHOR *const rhs, LINK_ANCHOR *const lhs, LINK_ANCHOR *const post, const NODE *const node, struct masgn_state *state, int popped)
+{
+ const NODE *rhsn = node->nd_value;
+ const NODE *splatn = node->nd_args;
+ const NODE *lhsn = node->nd_head;
+ const NODE *lhsn_count = lhsn;
+ int lhs_splat = (splatn && NODE_NAMED_REST_P(splatn)) ? 1 : 0;
+
+ int llen = 0;
+ int lpos = 0;
+ int expand = 1;
+
+ while (lhsn_count) {
+ llen++;
+ lhsn_count = lhsn_count->nd_next;
+ }
+ while (lhsn) {
+ CHECK(compile_massign_lhs(iseq, pre, rhs, lhs, post, lhsn->nd_head, state, (llen - lpos) + lhs_splat + state->lhs_level));
+ lpos++;
+ lhsn = lhsn->nd_next;
+ }
+
+ if (lhs_splat) {
+ if (nd_type_p(splatn, NODE_POSTARG)) {
+ /*a, b, *r, p1, p2 */
+ const NODE *postn = splatn->nd_2nd;
+ const NODE *restn = splatn->nd_1st;
+ int plen = (int)postn->nd_alen;
+ int ppos = 0;
+ int flag = 0x02 | (NODE_NAMED_REST_P(restn) ? 0x01 : 0x00);
+
+ ADD_INSN2(lhs, splatn, expandarray, INT2FIX(plen), INT2FIX(flag));
+
+ if (NODE_NAMED_REST_P(restn)) {
+ CHECK(compile_massign_lhs(iseq, pre, rhs, lhs, post, restn, state, 1 + plen + state->lhs_level));
+ }
+ while (postn) {
+ CHECK(compile_massign_lhs(iseq, pre, rhs, lhs, post, postn->nd_head, state, (plen - ppos) + state->lhs_level));
+ ppos++;
+ postn = postn->nd_next;
+ }
+ }
+ else {
+ /* a, b, *r */
+ CHECK(compile_massign_lhs(iseq, pre, rhs, lhs, post, splatn, state, 1 + state->lhs_level));
+ }
+ }
+
+
+ if (!state->nested) {
+ NO_CHECK(COMPILE(rhs, "normal masgn rhs", rhsn));
+ }
+
+ if (!popped) {
+ ADD_INSN(rhs, node, dup);
+ }
+ if (expand) {
+ ADD_INSN2(rhs, node, expandarray, INT2FIX(llen), INT2FIX(lhs_splat));
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_massign(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ if (!popped || node->nd_args || !compile_massign_opt(iseq, ret, node->nd_value, node->nd_head)) {
+ struct masgn_state state;
+ state.lhs_level = popped ? 0 : 1;
+ state.nested = 0;
+ state.num_args = 0;
+ state.first_memo = NULL;
+ state.last_memo = NULL;
+
+ DECL_ANCHOR(pre);
+ INIT_ANCHOR(pre);
+ DECL_ANCHOR(rhs);
+ INIT_ANCHOR(rhs);
+ DECL_ANCHOR(lhs);
+ INIT_ANCHOR(lhs);
+ DECL_ANCHOR(post);
+ INIT_ANCHOR(post);
+ int ok = compile_massign0(iseq, pre, rhs, lhs, post, node, &state, popped);
+
+ struct masgn_lhs_node *memo = state.first_memo, *tmp_memo;
+ while (memo) {
+ VALUE topn_arg = INT2FIX((state.num_args - memo->argn) + memo->lhs_pos);
+ for (int i = 0; i < memo->num_args; i++) {
+ INSERT_BEFORE_INSN1(memo->before_insn, memo->line_node, topn, topn_arg);
+ }
+ tmp_memo = memo->next;
+ free(memo);
+ memo = tmp_memo;
+ }
+ CHECK(ok);
+
+ ADD_SEQ(ret, pre);
+ ADD_SEQ(ret, rhs);
+ ADD_SEQ(ret, lhs);
+ if (!popped && state.num_args >= 1) {
+ /* make sure rhs array is returned before popping */
+ ADD_INSN1(ret, node, setn, INT2FIX(state.num_args));
+ }
+ ADD_SEQ(ret, post);
+ }
+ return COMPILE_OK;
+}
+
+static VALUE
+collect_const_segments(rb_iseq_t *iseq, const NODE *node)
+{
+ VALUE arr = rb_ary_new();
+ for (;;) {
+ switch (nd_type(node)) {
+ case NODE_CONST:
+ rb_ary_unshift(arr, ID2SYM(node->nd_vid));
+ return arr;
+ case NODE_COLON3:
+ rb_ary_unshift(arr, ID2SYM(node->nd_mid));
+ rb_ary_unshift(arr, ID2SYM(idNULL));
+ return arr;
+ case NODE_COLON2:
+ rb_ary_unshift(arr, ID2SYM(node->nd_mid));
+ node = node->nd_head;
+ break;
+ default:
+ return Qfalse;
+ }
+ }
+}
+
+static int
+compile_const_prefix(rb_iseq_t *iseq, const NODE *const node,
+ LINK_ANCHOR *const pref, LINK_ANCHOR *const body)
+{
+ switch (nd_type(node)) {
+ case NODE_CONST:
+ debugi("compile_const_prefix - colon", node->nd_vid);
+ ADD_INSN1(body, node, putobject, Qtrue);
+ ADD_INSN1(body, node, getconstant, ID2SYM(node->nd_vid));
+ break;
+ case NODE_COLON3:
+ debugi("compile_const_prefix - colon3", node->nd_mid);
+ ADD_INSN(body, node, pop);
+ ADD_INSN1(body, node, putobject, rb_cObject);
+ ADD_INSN1(body, node, putobject, Qtrue);
+ ADD_INSN1(body, node, getconstant, ID2SYM(node->nd_mid));
+ break;
+ case NODE_COLON2:
+ CHECK(compile_const_prefix(iseq, node->nd_head, pref, body));
+ debugi("compile_const_prefix - colon2", node->nd_mid);
+ ADD_INSN1(body, node, putobject, Qfalse);
+ ADD_INSN1(body, node, getconstant, ID2SYM(node->nd_mid));
+ break;
+ default:
+ CHECK(COMPILE(pref, "const colon2 prefix", node));
+ break;
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_cpath(LINK_ANCHOR *const ret, rb_iseq_t *iseq, const NODE *cpath)
+{
+ if (nd_type_p(cpath, NODE_COLON3)) {
+ /* toplevel class ::Foo */
+ ADD_INSN1(ret, cpath, putobject, rb_cObject);
+ return VM_DEFINECLASS_FLAG_SCOPED;
+ }
+ else if (cpath->nd_head) {
+ /* Bar::Foo */
+ NO_CHECK(COMPILE(ret, "nd_else->nd_head", cpath->nd_head));
+ return VM_DEFINECLASS_FLAG_SCOPED;
+ }
+ else {
+ /* class at cbase Foo */
+ ADD_INSN1(ret, cpath, putspecialobject,
+ INT2FIX(VM_SPECIAL_OBJECT_CONST_BASE));
+ return 0;
+ }
+}
+
+static inline int
+private_recv_p(const NODE *node)
+{
+ if (nd_type_p(node->nd_recv, NODE_SELF)) {
+ NODE *self = node->nd_recv;
+ return self->nd_state != 0;
+ }
+ return 0;
+}
+
+static void
+defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
+ const NODE *const node, LABEL **lfinish, VALUE needstr);
+
+static int
+compile_call(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, const enum node_type type, const NODE *const line_node, int popped, bool assume_receiver);
+
+static void
+defined_expr0(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
+ const NODE *const node, LABEL **lfinish, VALUE needstr,
+ bool keep_result)
+{
+ enum defined_type expr_type = DEFINED_NOT_DEFINED;
+ enum node_type type;
+ const int line = nd_line(node);
+ const NODE *line_node = node;
+
+ switch (type = nd_type(node)) {
+
+ /* easy literals */
+ case NODE_NIL:
+ expr_type = DEFINED_NIL;
+ break;
+ case NODE_SELF:
+ expr_type = DEFINED_SELF;
+ break;
+ case NODE_TRUE:
+ expr_type = DEFINED_TRUE;
+ break;
+ case NODE_FALSE:
+ expr_type = DEFINED_FALSE;
+ break;
+
+ case NODE_LIST:{
+ const NODE *vals = node;
+
+ do {
+ defined_expr0(iseq, ret, vals->nd_head, lfinish, Qfalse, false);
+
+ if (!lfinish[1]) {
+ lfinish[1] = NEW_LABEL(line);
+ }
+ ADD_INSNL(ret, line_node, branchunless, lfinish[1]);
+ } while ((vals = vals->nd_next) != NULL);
+ }
+ /* fall through */
+ case NODE_STR:
+ case NODE_LIT:
+ case NODE_ZLIST:
+ case NODE_AND:
+ case NODE_OR:
+ default:
+ expr_type = DEFINED_EXPR;
+ break;
+
+ /* variables */
+ case NODE_LVAR:
+ case NODE_DVAR:
+ expr_type = DEFINED_LVAR;
+ break;
+
+#define PUSH_VAL(type) (needstr == Qfalse ? Qtrue : rb_iseq_defined_string(type))
+ case NODE_IVAR:
+ ADD_INSN(ret, line_node, putnil);
+ ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_IVAR),
+ ID2SYM(node->nd_vid), PUSH_VAL(DEFINED_IVAR));
+ return;
+
+ case NODE_GVAR:
+ ADD_INSN(ret, line_node, putnil);
+ ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_GVAR),
+ ID2SYM(node->nd_entry), PUSH_VAL(DEFINED_GVAR));
+ return;
+
+ case NODE_CVAR:
+ ADD_INSN(ret, line_node, putnil);
+ ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_CVAR),
+ ID2SYM(node->nd_vid), PUSH_VAL(DEFINED_CVAR));
+ return;
+
+ case NODE_CONST:
+ ADD_INSN(ret, line_node, putnil);
+ ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_CONST),
+ ID2SYM(node->nd_vid), PUSH_VAL(DEFINED_CONST));
+ return;
+ case NODE_COLON2:
+ if (!lfinish[1]) {
+ lfinish[1] = NEW_LABEL(line);
+ }
+ defined_expr0(iseq, ret, node->nd_head, lfinish, Qfalse, false);
+ ADD_INSNL(ret, line_node, branchunless, lfinish[1]);
+ NO_CHECK(COMPILE(ret, "defined/colon2#nd_head", node->nd_head));
+
+ if (rb_is_const_id(node->nd_mid)) {
+ ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_CONST_FROM),
+ ID2SYM(node->nd_mid), PUSH_VAL(DEFINED_CONST));
+ }
+ else {
+ ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_METHOD),
+ ID2SYM(node->nd_mid), PUSH_VAL(DEFINED_METHOD));
+ }
+ return;
+ case NODE_COLON3:
+ ADD_INSN1(ret, line_node, putobject, rb_cObject);
+ ADD_INSN3(ret, line_node, defined,
+ INT2FIX(DEFINED_CONST_FROM), ID2SYM(node->nd_mid), PUSH_VAL(DEFINED_CONST));
+ return;
+
+ /* method dispatch */
+ case NODE_CALL:
+ case NODE_OPCALL:
+ case NODE_VCALL:
+ case NODE_FCALL:
+ case NODE_ATTRASGN:{
+ const int explicit_receiver =
+ (type == NODE_CALL || type == NODE_OPCALL ||
+ (type == NODE_ATTRASGN && !private_recv_p(node)));
+
+ if (node->nd_args || explicit_receiver) {
+ if (!lfinish[1]) {
+ lfinish[1] = NEW_LABEL(line);
+ }
+ if (!lfinish[2]) {
+ lfinish[2] = NEW_LABEL(line);
+ }
+ }
+ if (node->nd_args) {
+ defined_expr0(iseq, ret, node->nd_args, lfinish, Qfalse, false);
+ ADD_INSNL(ret, line_node, branchunless, lfinish[1]);
+ }
+ if (explicit_receiver) {
+ defined_expr0(iseq, ret, node->nd_recv, lfinish, Qfalse, true);
+ switch (nd_type(node->nd_recv)) {
+ case NODE_CALL:
+ case NODE_OPCALL:
+ case NODE_VCALL:
+ case NODE_FCALL:
+ case NODE_ATTRASGN:
+ ADD_INSNL(ret, line_node, branchunless, lfinish[2]);
+ compile_call(iseq, ret, node->nd_recv, nd_type(node->nd_recv), line_node, 0, true);
+ break;
+ default:
+ ADD_INSNL(ret, line_node, branchunless, lfinish[1]);
+ NO_CHECK(COMPILE(ret, "defined/recv", node->nd_recv));
+ break;
+ }
+ if (keep_result) {
+ ADD_INSN(ret, line_node, dup);
+ }
+ ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_METHOD),
+ ID2SYM(node->nd_mid), PUSH_VAL(DEFINED_METHOD));
+ }
+ else {
+ ADD_INSN(ret, line_node, putself);
+ if (keep_result) {
+ ADD_INSN(ret, line_node, dup);
+ }
+ ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_FUNC),
+ ID2SYM(node->nd_mid), PUSH_VAL(DEFINED_METHOD));
+ }
+ return;
+ }
+
+ case NODE_YIELD:
+ ADD_INSN(ret, line_node, putnil);
+ ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_YIELD), 0,
+ PUSH_VAL(DEFINED_YIELD));
+ return;
+
+ case NODE_BACK_REF:
+ case NODE_NTH_REF:
+ ADD_INSN(ret, line_node, putnil);
+ ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_REF),
+ INT2FIX((node->nd_nth << 1) | (type == NODE_BACK_REF)),
+ PUSH_VAL(DEFINED_GVAR));
+ return;
+
+ case NODE_SUPER:
+ case NODE_ZSUPER:
+ ADD_INSN(ret, line_node, putnil);
+ ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_ZSUPER), 0,
+ PUSH_VAL(DEFINED_ZSUPER));
+ return;
+
+#undef PUSH_VAL
+ case NODE_OP_ASGN1:
+ case NODE_OP_ASGN2:
+ case NODE_OP_ASGN_OR:
+ case NODE_OP_ASGN_AND:
+ case NODE_MASGN:
+ case NODE_LASGN:
+ case NODE_DASGN:
+ case NODE_GASGN:
+ case NODE_IASGN:
+ case NODE_CDECL:
+ case NODE_CVASGN:
+ expr_type = DEFINED_ASGN;
+ break;
+ }
+
+ assert(expr_type != DEFINED_NOT_DEFINED);
+
+ if (needstr != Qfalse) {
+ VALUE str = rb_iseq_defined_string(expr_type);
+ ADD_INSN1(ret, line_node, putobject, str);
+ }
+ else {
+ ADD_INSN1(ret, line_node, putobject, Qtrue);
+ }
+}
+
+static void
+build_defined_rescue_iseq(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const void *unused)
+{
+ NODE dummy_line_node = generate_dummy_line_node(0, -1);
+ ADD_INSN(ret, &dummy_line_node, putnil);
+ iseq_set_exception_local_table(iseq);
+}
+
+static void
+defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
+ const NODE *const node, LABEL **lfinish, VALUE needstr)
+{
+ LINK_ELEMENT *lcur = ret->last;
+ defined_expr0(iseq, ret, node, lfinish, needstr, false);
+ if (lfinish[1]) {
+ int line = nd_line(node);
+ LABEL *lstart = NEW_LABEL(line);
+ LABEL *lend = NEW_LABEL(line);
+ const rb_iseq_t *rescue;
+ struct rb_iseq_new_with_callback_callback_func *ifunc =
+ rb_iseq_new_with_callback_new_callback(build_defined_rescue_iseq, NULL);
+ rescue = new_child_iseq_with_callback(iseq, ifunc,
+ rb_str_concat(rb_str_new2("defined guard in "),
+ ISEQ_BODY(iseq)->location.label),
+ iseq, ISEQ_TYPE_RESCUE, 0);
+ lstart->rescued = LABEL_RESCUE_BEG;
+ lend->rescued = LABEL_RESCUE_END;
+ APPEND_LABEL(ret, lcur, lstart);
+ ADD_LABEL(ret, lend);
+ ADD_CATCH_ENTRY(CATCH_TYPE_RESCUE, lstart, lend, rescue, lfinish[1]);
+ }
+}
+
+static int
+compile_defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE needstr)
+{
+ const int line = nd_line(node);
+ const NODE *line_node = node;
+ if (!node->nd_head) {
+ VALUE str = rb_iseq_defined_string(DEFINED_NIL);
+ ADD_INSN1(ret, line_node, putobject, str);
+ }
+ else {
+ LABEL *lfinish[3];
+ LINK_ELEMENT *last = ret->last;
+ lfinish[0] = NEW_LABEL(line);
+ lfinish[1] = 0;
+ lfinish[2] = 0;
+ defined_expr(iseq, ret, node->nd_head, lfinish, needstr);
+ if (lfinish[1]) {
+ ELEM_INSERT_NEXT(last, &new_insn_body(iseq, line_node, BIN(putnil), 0)->link);
+ ADD_INSN(ret, line_node, swap);
+ if (lfinish[2]) {
+ ADD_LABEL(ret, lfinish[2]);
+ }
+ ADD_INSN(ret, line_node, pop);
+ ADD_LABEL(ret, lfinish[1]);
+ }
+ ADD_LABEL(ret, lfinish[0]);
+ }
+ return COMPILE_OK;
+}
+
+static VALUE
+make_name_for_block(const rb_iseq_t *orig_iseq)
+{
+ int level = 1;
+ const rb_iseq_t *iseq = orig_iseq;
+
+ if (ISEQ_BODY(orig_iseq)->parent_iseq != 0) {
+ while (ISEQ_BODY(orig_iseq)->local_iseq != iseq) {
+ if (ISEQ_BODY(iseq)->type == ISEQ_TYPE_BLOCK) {
+ level++;
+ }
+ iseq = ISEQ_BODY(iseq)->parent_iseq;
+ }
+ }
+
+ if (level == 1) {
+ return rb_sprintf("block in %"PRIsVALUE, ISEQ_BODY(iseq)->location.label);
+ }
+ else {
+ return rb_sprintf("block (%d levels) in %"PRIsVALUE, level, ISEQ_BODY(iseq)->location.label);
+ }
+}
+
+static void
+push_ensure_entry(rb_iseq_t *iseq,
+ struct iseq_compile_data_ensure_node_stack *enl,
+ struct ensure_range *er, const NODE *const node)
+{
+ enl->ensure_node = node;
+ enl->prev = ISEQ_COMPILE_DATA(iseq)->ensure_node_stack; /* prev */
+ enl->erange = er;
+ ISEQ_COMPILE_DATA(iseq)->ensure_node_stack = enl;
+}
+
+static void
+add_ensure_range(rb_iseq_t *iseq, struct ensure_range *erange,
+ LABEL *lstart, LABEL *lend)
+{
+ struct ensure_range *ne =
+ compile_data_alloc(iseq, sizeof(struct ensure_range));
+
+ while (erange->next != 0) {
+ erange = erange->next;
+ }
+ ne->next = 0;
+ ne->begin = lend;
+ ne->end = erange->end;
+ erange->end = lstart;
+
+ erange->next = ne;
+}
+
+static bool
+can_add_ensure_iseq(const rb_iseq_t *iseq)
+{
+ struct iseq_compile_data_ensure_node_stack *e;
+ if (ISEQ_COMPILE_DATA(iseq)->in_rescue && (e = ISEQ_COMPILE_DATA(iseq)->ensure_node_stack) != NULL) {
+ while (e) {
+ if (e->ensure_node) return false;
+ e = e->prev;
+ }
+ }
+ return true;
+}
+
+static void
+add_ensure_iseq(LINK_ANCHOR *const ret, rb_iseq_t *iseq, int is_return)
+{
+ assert(can_add_ensure_iseq(iseq));
+
+ struct iseq_compile_data_ensure_node_stack *enlp =
+ ISEQ_COMPILE_DATA(iseq)->ensure_node_stack;
+ struct iseq_compile_data_ensure_node_stack *prev_enlp = enlp;
+ DECL_ANCHOR(ensure);
+
+ INIT_ANCHOR(ensure);
+ while (enlp) {
+ if (enlp->erange != NULL) {
+ DECL_ANCHOR(ensure_part);
+ LABEL *lstart = NEW_LABEL(0);
+ LABEL *lend = NEW_LABEL(0);
+ INIT_ANCHOR(ensure_part);
+
+ add_ensure_range(iseq, enlp->erange, lstart, lend);
+
+ ISEQ_COMPILE_DATA(iseq)->ensure_node_stack = enlp->prev;
+ ADD_LABEL(ensure_part, lstart);
+ NO_CHECK(COMPILE_POPPED(ensure_part, "ensure part", enlp->ensure_node));
+ ADD_LABEL(ensure_part, lend);
+ ADD_SEQ(ensure, ensure_part);
+ }
+ else {
+ if (!is_return) {
+ break;
+ }
+ }
+ enlp = enlp->prev;
+ }
+ ISEQ_COMPILE_DATA(iseq)->ensure_node_stack = prev_enlp;
+ ADD_SEQ(ret, ensure);
+}
+
+static int
+check_keyword(const NODE *node)
+{
+ /* This check is essentially a code clone of compile_keyword_arg. */
+
+ if (nd_type_p(node, NODE_LIST)) {
+ while (node->nd_next) {
+ node = node->nd_next;
+ }
+ node = node->nd_head;
+ }
+
+ return keyword_node_p(node);
+}
+
+static VALUE
+setup_args_core(rb_iseq_t *iseq, LINK_ANCHOR *const args, const NODE *argn,
+ int dup_rest, unsigned int *flag, struct rb_callinfo_kwarg **keywords)
+{
+ if (argn) {
+ switch (nd_type(argn)) {
+ case NODE_SPLAT: {
+ NO_CHECK(COMPILE(args, "args (splat)", argn->nd_head));
+ ADD_INSN1(args, argn, splatarray, RBOOL(dup_rest));
+ if (flag) *flag |= VM_CALL_ARGS_SPLAT;
+ return INT2FIX(1);
+ }
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH: {
+ int next_is_list = (nd_type_p(argn->nd_head, NODE_LIST));
+ VALUE argc = setup_args_core(iseq, args, argn->nd_head, 1, NULL, NULL);
+ if (nd_type_p(argn->nd_body, NODE_LIST)) {
+ /* This branch is needed to avoid "newarraykwsplat" [Bug #16442] */
+ int rest_len = compile_args(iseq, args, argn->nd_body, NULL, NULL);
+ ADD_INSN1(args, argn, newarray, INT2FIX(rest_len));
+ }
+ else {
+ NO_CHECK(COMPILE(args, "args (cat: splat)", argn->nd_body));
+ }
+ if (flag) {
+ *flag |= VM_CALL_ARGS_SPLAT;
+ /* This is a dirty hack. It traverses the AST twice.
+ * In a long term, it should be fixed by a redesign of keyword arguments */
+ if (check_keyword(argn->nd_body))
+ *flag |= VM_CALL_KW_SPLAT;
+ }
+ if (nd_type_p(argn, NODE_ARGSCAT)) {
+ if (next_is_list) {
+ ADD_INSN1(args, argn, splatarray, Qtrue);
+ return INT2FIX(FIX2INT(argc) + 1);
+ }
+ else {
+ ADD_INSN1(args, argn, splatarray, Qfalse);
+ ADD_INSN(args, argn, concatarray);
+ return argc;
+ }
+ }
+ else {
+ ADD_INSN1(args, argn, newarray, INT2FIX(1));
+ ADD_INSN(args, argn, concatarray);
+ return argc;
+ }
+ }
+ case NODE_LIST: {
+ int len = compile_args(iseq, args, argn, keywords, flag);
+ return INT2FIX(len);
+ }
+ default: {
+ UNKNOWN_NODE("setup_arg", argn, Qnil);
+ }
+ }
+ }
+ return INT2FIX(0);
+}
+
+static VALUE
+setup_args(rb_iseq_t *iseq, LINK_ANCHOR *const args, const NODE *argn,
+ unsigned int *flag, struct rb_callinfo_kwarg **keywords)
+{
+ VALUE ret;
+ if (argn && nd_type_p(argn, NODE_BLOCK_PASS)) {
+ unsigned int dup_rest = 1;
+ DECL_ANCHOR(arg_block);
+ INIT_ANCHOR(arg_block);
+ NO_CHECK(COMPILE(arg_block, "block", argn->nd_body));
+
+ *flag |= VM_CALL_ARGS_BLOCKARG;
+
+ if (LIST_INSN_SIZE_ONE(arg_block)) {
+ LINK_ELEMENT *elem = FIRST_ELEMENT(arg_block);
+ if (IS_INSN(elem)) {
+ INSN *iobj = (INSN *)elem;
+ if (iobj->insn_id == BIN(getblockparam)) {
+ iobj->insn_id = BIN(getblockparamproxy);
+ }
+ dup_rest = 0;
+ }
+ }
+ ret = setup_args_core(iseq, args, argn->nd_head, dup_rest, flag, keywords);
+ ADD_SEQ(args, arg_block);
+ }
+ else {
+ ret = setup_args_core(iseq, args, argn, 0, flag, keywords);
+ }
+ return ret;
+}
+
+static void
+build_postexe_iseq(rb_iseq_t *iseq, LINK_ANCHOR *ret, const void *ptr)
+{
+ const NODE *body = ptr;
+ int line = nd_line(body);
+ VALUE argc = INT2FIX(0);
+ const rb_iseq_t *block = NEW_CHILD_ISEQ(body, make_name_for_block(ISEQ_BODY(iseq)->parent_iseq), ISEQ_TYPE_BLOCK, line);
+
+ ADD_INSN1(ret, body, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_CALL_WITH_BLOCK(ret, body, id_core_set_postexe, argc, block);
+ RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)block);
+ iseq_set_local_table(iseq, 0);
+}
+
+static void
+compile_named_capture_assign(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node)
+{
+ const NODE *vars;
+ LINK_ELEMENT *last;
+ int line = nd_line(node);
+ const NODE *line_node = node;
+ LABEL *fail_label = NEW_LABEL(line), *end_label = NEW_LABEL(line);
+
+#if !(defined(NAMED_CAPTURE_BY_SVAR) && NAMED_CAPTURE_BY_SVAR-0)
+ ADD_INSN1(ret, line_node, getglobal, ID2SYM(idBACKREF));
+#else
+ ADD_INSN2(ret, line_node, getspecial, INT2FIX(1) /* '~' */, INT2FIX(0));
+#endif
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSNL(ret, line_node, branchunless, fail_label);
+
+ for (vars = node; vars; vars = vars->nd_next) {
+ INSN *cap;
+ if (vars->nd_next) {
+ ADD_INSN(ret, line_node, dup);
+ }
+ last = ret->last;
+ NO_CHECK(COMPILE_POPPED(ret, "capture", vars->nd_head));
+ last = last->next; /* putobject :var */
+ cap = new_insn_send(iseq, line_node, idAREF, INT2FIX(1),
+ NULL, INT2FIX(0), NULL);
+ ELEM_INSERT_PREV(last->next, (LINK_ELEMENT *)cap);
+#if !defined(NAMED_CAPTURE_SINGLE_OPT) || NAMED_CAPTURE_SINGLE_OPT-0
+ if (!vars->nd_next && vars == node) {
+ /* only one name */
+ DECL_ANCHOR(nom);
+
+ INIT_ANCHOR(nom);
+ ADD_INSNL(nom, line_node, jump, end_label);
+ ADD_LABEL(nom, fail_label);
+# if 0 /* $~ must be MatchData or nil */
+ ADD_INSN(nom, line_node, pop);
+ ADD_INSN(nom, line_node, putnil);
+# endif
+ ADD_LABEL(nom, end_label);
+ (nom->last->next = cap->link.next)->prev = nom->last;
+ (cap->link.next = nom->anchor.next)->prev = &cap->link;
+ return;
+ }
+#endif
+ }
+ ADD_INSNL(ret, line_node, jump, end_label);
+ ADD_LABEL(ret, fail_label);
+ ADD_INSN(ret, line_node, pop);
+ for (vars = node; vars; vars = vars->nd_next) {
+ last = ret->last;
+ NO_CHECK(COMPILE_POPPED(ret, "capture", vars->nd_head));
+ last = last->next; /* putobject :var */
+ ((INSN*)last)->insn_id = BIN(putnil);
+ ((INSN*)last)->operand_size = 0;
+ }
+ ADD_LABEL(ret, end_label);
+}
+
+static int
+optimizable_range_item_p(const NODE *n)
+{
+ if (!n) return FALSE;
+ switch (nd_type(n)) {
+ case NODE_LIT:
+ return RB_INTEGER_TYPE_P(n->nd_lit);
+ case NODE_NIL:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+static int
+compile_if(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped, const enum node_type type)
+{
+ struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+ const NODE *const node_body = type == NODE_IF ? node->nd_body : node->nd_else;
+ const NODE *const node_else = type == NODE_IF ? node->nd_else : node->nd_body;
+
+ const int line = nd_line(node);
+ const NODE *line_node = node;
+ DECL_ANCHOR(cond_seq);
+ DECL_ANCHOR(then_seq);
+ DECL_ANCHOR(else_seq);
+ LABEL *then_label, *else_label, *end_label;
+ VALUE branches = Qfalse;
+ int ci_size;
+ VALUE catch_table = ISEQ_COMPILE_DATA(iseq)->catch_table_ary;
+ long catch_table_size = NIL_P(catch_table) ? 0 : RARRAY_LEN(catch_table);
+
+ INIT_ANCHOR(cond_seq);
+ INIT_ANCHOR(then_seq);
+ INIT_ANCHOR(else_seq);
+ then_label = NEW_LABEL(line);
+ else_label = NEW_LABEL(line);
+ end_label = 0;
+
+ compile_branch_condition(iseq, cond_seq, node->nd_cond,
+ then_label, else_label);
+
+ ci_size = body->ci_size;
+ CHECK(COMPILE_(then_seq, "then", node_body, popped));
+ catch_table = ISEQ_COMPILE_DATA(iseq)->catch_table_ary;
+ if (!then_label->refcnt) {
+ body->ci_size = ci_size;
+ if (!NIL_P(catch_table)) rb_ary_set_len(catch_table, catch_table_size);
+ }
+ else {
+ if (!NIL_P(catch_table)) catch_table_size = RARRAY_LEN(catch_table);
+ }
+
+ ci_size = body->ci_size;
+ CHECK(COMPILE_(else_seq, "else", node_else, popped));
+ catch_table = ISEQ_COMPILE_DATA(iseq)->catch_table_ary;
+ if (!else_label->refcnt) {
+ body->ci_size = ci_size;
+ if (!NIL_P(catch_table)) rb_ary_set_len(catch_table, catch_table_size);
+ }
+ else {
+ if (!NIL_P(catch_table)) catch_table_size = RARRAY_LEN(catch_table);
+ }
+
+ ADD_SEQ(ret, cond_seq);
+
+ if (then_label->refcnt && else_label->refcnt) {
+ branches = decl_branch_base(iseq, node, type == NODE_IF ? "if" : "unless");
+ }
+
+ if (then_label->refcnt) {
+ ADD_LABEL(ret, then_label);
+ if (else_label->refcnt) {
+ add_trace_branch_coverage(
+ iseq,
+ ret,
+ node_body ? node_body : node,
+ 0,
+ type == NODE_IF ? "then" : "else",
+ branches);
+ end_label = NEW_LABEL(line);
+ ADD_INSNL(then_seq, line_node, jump, end_label);
+ if (!popped) {
+ ADD_INSN(then_seq, line_node, pop);
+ }
+ }
+ ADD_SEQ(ret, then_seq);
+ }
+
+ if (else_label->refcnt) {
+ ADD_LABEL(ret, else_label);
+ if (then_label->refcnt) {
+ add_trace_branch_coverage(
+ iseq,
+ ret,
+ node_else ? node_else : node,
+ 1,
+ type == NODE_IF ? "else" : "then",
+ branches);
+ }
+ ADD_SEQ(ret, else_seq);
+ }
+
+ if (end_label) {
+ ADD_LABEL(ret, end_label);
+ }
+
+ return COMPILE_OK;
+}
+
+static int
+compile_case(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const orig_node, int popped)
+{
+ const NODE *vals;
+ const NODE *node = orig_node;
+ LABEL *endlabel, *elselabel;
+ DECL_ANCHOR(head);
+ DECL_ANCHOR(body_seq);
+ DECL_ANCHOR(cond_seq);
+ int only_special_literals = 1;
+ VALUE literals = rb_hash_new();
+ int line;
+ enum node_type type;
+ const NODE *line_node;
+ VALUE branches = Qfalse;
+ int branch_id = 0;
+
+ INIT_ANCHOR(head);
+ INIT_ANCHOR(body_seq);
+ INIT_ANCHOR(cond_seq);
+
+ RHASH_TBL_RAW(literals)->type = &cdhash_type;
+
+ CHECK(COMPILE(head, "case base", node->nd_head));
+
+ branches = decl_branch_base(iseq, node, "case");
+
+ node = node->nd_body;
+ EXPECT_NODE("NODE_CASE", node, NODE_WHEN, COMPILE_NG);
+ type = nd_type(node);
+ line = nd_line(node);
+ line_node = node;
+
+ endlabel = NEW_LABEL(line);
+ elselabel = NEW_LABEL(line);
+
+ ADD_SEQ(ret, head); /* case VAL */
+
+ while (type == NODE_WHEN) {
+ LABEL *l1;
+
+ l1 = NEW_LABEL(line);
+ ADD_LABEL(body_seq, l1);
+ ADD_INSN(body_seq, line_node, pop);
+ add_trace_branch_coverage(
+ iseq,
+ body_seq,
+ node->nd_body ? node->nd_body : node,
+ branch_id++,
+ "when",
+ branches);
+ CHECK(COMPILE_(body_seq, "when body", node->nd_body, popped));
+ ADD_INSNL(body_seq, line_node, jump, endlabel);
+
+ vals = node->nd_head;
+ if (vals) {
+ switch (nd_type(vals)) {
+ case NODE_LIST:
+ only_special_literals = when_vals(iseq, cond_seq, vals, l1, only_special_literals, literals);
+ if (only_special_literals < 0) return COMPILE_NG;
+ break;
+ case NODE_SPLAT:
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH:
+ only_special_literals = 0;
+ CHECK(when_splat_vals(iseq, cond_seq, vals, l1, only_special_literals, literals));
+ break;
+ default:
+ UNKNOWN_NODE("NODE_CASE", vals, COMPILE_NG);
+ }
+ }
+ else {
+ EXPECT_NODE_NONULL("NODE_CASE", node, NODE_LIST, COMPILE_NG);
+ }
+
+ node = node->nd_next;
+ if (!node) {
+ break;
+ }
+ type = nd_type(node);
+ line = nd_line(node);
+ line_node = node;
+ }
+ /* else */
+ if (node) {
+ ADD_LABEL(cond_seq, elselabel);
+ ADD_INSN(cond_seq, line_node, pop);
+ add_trace_branch_coverage(iseq, cond_seq, node, branch_id, "else", branches);
+ CHECK(COMPILE_(cond_seq, "else", node, popped));
+ ADD_INSNL(cond_seq, line_node, jump, endlabel);
+ }
+ else {
+ debugs("== else (implicit)\n");
+ ADD_LABEL(cond_seq, elselabel);
+ ADD_INSN(cond_seq, orig_node, pop);
+ add_trace_branch_coverage(iseq, cond_seq, orig_node, branch_id, "else", branches);
+ if (!popped) {
+ ADD_INSN(cond_seq, orig_node, putnil);
+ }
+ ADD_INSNL(cond_seq, orig_node, jump, endlabel);
+ }
+
+ if (only_special_literals && ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction) {
+ ADD_INSN(ret, orig_node, dup);
+ ADD_INSN2(ret, orig_node, opt_case_dispatch, literals, elselabel);
+ RB_OBJ_WRITTEN(iseq, Qundef, literals);
+ LABEL_REF(elselabel);
+ }
+
+ ADD_SEQ(ret, cond_seq);
+ ADD_SEQ(ret, body_seq);
+ ADD_LABEL(ret, endlabel);
+ return COMPILE_OK;
+}
+
+static int
+compile_case2(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const orig_node, int popped)
+{
+ const NODE *vals;
+ const NODE *val;
+ const NODE *node = orig_node->nd_body;
+ LABEL *endlabel;
+ DECL_ANCHOR(body_seq);
+ VALUE branches = Qfalse;
+ int branch_id = 0;
+
+ branches = decl_branch_base(iseq, orig_node, "case");
+
+ INIT_ANCHOR(body_seq);
+ endlabel = NEW_LABEL(nd_line(node));
+
+ while (node && nd_type_p(node, NODE_WHEN)) {
+ const int line = nd_line(node);
+ LABEL *l1 = NEW_LABEL(line);
+ ADD_LABEL(body_seq, l1);
+ add_trace_branch_coverage(
+ iseq,
+ body_seq,
+ node->nd_body ? node->nd_body : node,
+ branch_id++,
+ "when",
+ branches);
+ CHECK(COMPILE_(body_seq, "when", node->nd_body, popped));
+ ADD_INSNL(body_seq, node, jump, endlabel);
+
+ vals = node->nd_head;
+ if (!vals) {
+ EXPECT_NODE_NONULL("NODE_WHEN", node, NODE_LIST, COMPILE_NG);
+ }
+ switch (nd_type(vals)) {
+ case NODE_LIST:
+ while (vals) {
+ LABEL *lnext;
+ val = vals->nd_head;
+ lnext = NEW_LABEL(nd_line(val));
+ debug_compile("== when2\n", (void)0);
+ CHECK(compile_branch_condition(iseq, ret, val, l1, lnext));
+ ADD_LABEL(ret, lnext);
+ vals = vals->nd_next;
+ }
+ break;
+ case NODE_SPLAT:
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH:
+ ADD_INSN(ret, vals, putnil);
+ CHECK(COMPILE(ret, "when2/cond splat", vals));
+ ADD_INSN1(ret, vals, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_WHEN | VM_CHECKMATCH_ARRAY));
+ ADD_INSNL(ret, vals, branchif, l1);
+ break;
+ default:
+ UNKNOWN_NODE("NODE_WHEN", vals, COMPILE_NG);
+ }
+ node = node->nd_next;
+ }
+ /* else */
+ add_trace_branch_coverage(
+ iseq,
+ ret,
+ node ? node : orig_node,
+ branch_id,
+ "else",
+ branches);
+ CHECK(COMPILE_(ret, "else", node, popped));
+ ADD_INSNL(ret, orig_node, jump, endlabel);
+
+ ADD_SEQ(ret, body_seq);
+ ADD_LABEL(ret, endlabel);
+ return COMPILE_OK;
+}
+
+static int iseq_compile_pattern_match(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *unmatched, bool in_single_pattern, bool in_alt_pattern, int base_index, bool use_deconstructed_cache);
+
+static int iseq_compile_pattern_constant(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *match_failed, bool in_single_pattern, int base_index);
+static int iseq_compile_array_deconstruct(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *deconstruct, LABEL *deconstructed, LABEL *match_failed, LABEL *type_error, bool in_single_pattern, int base_index, bool use_deconstructed_cache);
+static int iseq_compile_pattern_set_general_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE errmsg, int base_index);
+static int iseq_compile_pattern_set_length_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE errmsg, VALUE pattern_length, int base_index);
+static int iseq_compile_pattern_set_eqq_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int base_index);
+
+#define CASE3_BI_OFFSET_DECONSTRUCTED_CACHE 0
+#define CASE3_BI_OFFSET_ERROR_STRING 1
+#define CASE3_BI_OFFSET_KEY_ERROR_P 2
+#define CASE3_BI_OFFSET_KEY_ERROR_MATCHEE 3
+#define CASE3_BI_OFFSET_KEY_ERROR_KEY 4
+
+static int
+iseq_compile_pattern_each(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *matched, LABEL *unmatched, bool in_single_pattern, bool in_alt_pattern, int base_index, bool use_deconstructed_cache)
+{
+ const int line = nd_line(node);
+ const NODE *line_node = node;
+
+ switch (nd_type(node)) {
+ case NODE_ARYPTN: {
+ /*
+ * if pattern.use_rest_num?
+ * rest_num = 0
+ * end
+ * if pattern.has_constant_node?
+ * unless pattern.constant === obj
+ * goto match_failed
+ * end
+ * end
+ * unless obj.respond_to?(:deconstruct)
+ * goto match_failed
+ * end
+ * d = obj.deconstruct
+ * unless Array === d
+ * goto type_error
+ * end
+ * min_argc = pattern.pre_args_num + pattern.post_args_num
+ * if pattern.has_rest_arg?
+ * unless d.length >= min_argc
+ * goto match_failed
+ * end
+ * else
+ * unless d.length == min_argc
+ * goto match_failed
+ * end
+ * end
+ * pattern.pre_args_num.each do |i|
+ * unless pattern.pre_args[i].match?(d[i])
+ * goto match_failed
+ * end
+ * end
+ * if pattern.use_rest_num?
+ * rest_num = d.length - min_argc
+ * if pattern.has_rest_arg? && pattern.has_rest_arg_id # not `*`, but `*rest`
+ * unless pattern.rest_arg.match?(d[pattern.pre_args_num, rest_num])
+ * goto match_failed
+ * end
+ * end
+ * end
+ * pattern.post_args_num.each do |i|
+ * j = pattern.pre_args_num + i
+ * j += rest_num
+ * unless pattern.post_args[i].match?(d[j])
+ * goto match_failed
+ * end
+ * end
+ * goto matched
+ * type_error:
+ * FrozenCore.raise TypeError
+ * match_failed:
+ * goto unmatched
+ */
+ struct rb_ary_pattern_info *apinfo = node->nd_apinfo;
+ const NODE *args = apinfo->pre_args;
+ const int pre_args_num = apinfo->pre_args ? rb_long2int(apinfo->pre_args->nd_alen) : 0;
+ const int post_args_num = apinfo->post_args ? rb_long2int(apinfo->post_args->nd_alen) : 0;
+
+ const int min_argc = pre_args_num + post_args_num;
+ const int use_rest_num = apinfo->rest_arg && (NODE_NAMED_REST_P(apinfo->rest_arg) ||
+ (!NODE_NAMED_REST_P(apinfo->rest_arg) && post_args_num > 0));
+
+ LABEL *match_failed, *type_error, *deconstruct, *deconstructed;
+ int i;
+ match_failed = NEW_LABEL(line);
+ type_error = NEW_LABEL(line);
+ deconstruct = NEW_LABEL(line);
+ deconstructed = NEW_LABEL(line);
+
+ if (use_rest_num) {
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(0)); /* allocate stack for rest_num */
+ ADD_INSN(ret, line_node, swap);
+ if (base_index) {
+ base_index++;
+ }
+ }
+
+ CHECK(iseq_compile_pattern_constant(iseq, ret, node, match_failed, in_single_pattern, base_index));
+
+ CHECK(iseq_compile_array_deconstruct(iseq, ret, node, deconstruct, deconstructed, match_failed, type_error, in_single_pattern, base_index, use_deconstructed_cache));
+
+ ADD_INSN(ret, line_node, dup);
+ ADD_SEND(ret, line_node, idLength, INT2FIX(0));
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(min_argc));
+ ADD_SEND(ret, line_node, apinfo->rest_arg ? idGE : idEq, INT2FIX(1)); // (1)
+ if (in_single_pattern) {
+ CHECK(iseq_compile_pattern_set_length_errmsg(iseq, ret, node,
+ apinfo->rest_arg ? rb_fstring_lit("%p length mismatch (given %p, expected %p+)") :
+ rb_fstring_lit("%p length mismatch (given %p, expected %p)"),
+ INT2FIX(min_argc), base_index + 1 /* (1) */));
+ }
+ ADD_INSNL(ret, line_node, branchunless, match_failed);
+
+ for (i = 0; i < pre_args_num; i++) {
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(i));
+ ADD_SEND(ret, line_node, idAREF, INT2FIX(1)); // (2)
+ CHECK(iseq_compile_pattern_match(iseq, ret, args->nd_head, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (2) */, false));
+ args = args->nd_next;
+ }
+
+ if (apinfo->rest_arg) {
+ if (NODE_NAMED_REST_P(apinfo->rest_arg)) {
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(pre_args_num));
+ ADD_INSN1(ret, line_node, topn, INT2FIX(1));
+ ADD_SEND(ret, line_node, idLength, INT2FIX(0));
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(min_argc));
+ ADD_SEND(ret, line_node, idMINUS, INT2FIX(1));
+ ADD_INSN1(ret, line_node, setn, INT2FIX(4));
+ ADD_SEND(ret, line_node, idAREF, INT2FIX(2)); // (3)
+
+ CHECK(iseq_compile_pattern_match(iseq, ret, apinfo->rest_arg, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (3) */, false));
+ }
+ else {
+ if (post_args_num > 0) {
+ ADD_INSN(ret, line_node, dup);
+ ADD_SEND(ret, line_node, idLength, INT2FIX(0));
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(min_argc));
+ ADD_SEND(ret, line_node, idMINUS, INT2FIX(1));
+ ADD_INSN1(ret, line_node, setn, INT2FIX(2));
+ ADD_INSN(ret, line_node, pop);
+ }
+ }
+ }
+
+ args = apinfo->post_args;
+ for (i = 0; i < post_args_num; i++) {
+ ADD_INSN(ret, line_node, dup);
+
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(pre_args_num + i));
+ ADD_INSN1(ret, line_node, topn, INT2FIX(3));
+ ADD_SEND(ret, line_node, idPLUS, INT2FIX(1));
+
+ ADD_SEND(ret, line_node, idAREF, INT2FIX(1)); // (4)
+ CHECK(iseq_compile_pattern_match(iseq, ret, args->nd_head, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (4) */, false));
+ args = args->nd_next;
+ }
+
+ ADD_INSN(ret, line_node, pop);
+ if (use_rest_num) {
+ ADD_INSN(ret, line_node, pop);
+ }
+ ADD_INSNL(ret, line_node, jump, matched);
+ ADD_INSN(ret, line_node, putnil);
+ if (use_rest_num) {
+ ADD_INSN(ret, line_node, putnil);
+ }
+
+ ADD_LABEL(ret, type_error);
+ ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line_node, putobject, rb_eTypeError);
+ ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("deconstruct must return Array"));
+ ADD_SEND(ret, line_node, id_core_raise, INT2FIX(2));
+ ADD_INSN(ret, line_node, pop);
+
+ ADD_LABEL(ret, match_failed);
+ ADD_INSN(ret, line_node, pop);
+ if (use_rest_num) {
+ ADD_INSN(ret, line_node, pop);
+ }
+ ADD_INSNL(ret, line_node, jump, unmatched);
+
+ break;
+ }
+ case NODE_FNDPTN: {
+ /*
+ * if pattern.has_constant_node?
+ * unless pattern.constant === obj
+ * goto match_failed
+ * end
+ * end
+ * unless obj.respond_to?(:deconstruct)
+ * goto match_failed
+ * end
+ * d = obj.deconstruct
+ * unless Array === d
+ * goto type_error
+ * end
+ * unless d.length >= pattern.args_num
+ * goto match_failed
+ * end
+ *
+ * begin
+ * len = d.length
+ * limit = d.length - pattern.args_num
+ * i = 0
+ * while i <= limit
+ * if pattern.args_num.times.all? {|j| pattern.args[j].match?(d[i+j]) }
+ * if pattern.has_pre_rest_arg_id
+ * unless pattern.pre_rest_arg.match?(d[0, i])
+ * goto find_failed
+ * end
+ * end
+ * if pattern.has_post_rest_arg_id
+ * unless pattern.post_rest_arg.match?(d[i+pattern.args_num, len])
+ * goto find_failed
+ * end
+ * end
+ * goto find_succeeded
+ * end
+ * i+=1
+ * end
+ * find_failed:
+ * goto match_failed
+ * find_succeeded:
+ * end
+ *
+ * goto matched
+ * type_error:
+ * FrozenCore.raise TypeError
+ * match_failed:
+ * goto unmatched
+ */
+ struct rb_fnd_pattern_info *fpinfo = node->nd_fpinfo;
+ const NODE *args = fpinfo->args;
+ const int args_num = fpinfo->args ? rb_long2int(fpinfo->args->nd_alen) : 0;
+
+ LABEL *match_failed, *type_error, *deconstruct, *deconstructed;
+ match_failed = NEW_LABEL(line);
+ type_error = NEW_LABEL(line);
+ deconstruct = NEW_LABEL(line);
+ deconstructed = NEW_LABEL(line);
+
+ CHECK(iseq_compile_pattern_constant(iseq, ret, node, match_failed, in_single_pattern, base_index));
+
+ CHECK(iseq_compile_array_deconstruct(iseq, ret, node, deconstruct, deconstructed, match_failed, type_error, in_single_pattern, base_index, use_deconstructed_cache));
+
+ ADD_INSN(ret, line_node, dup);
+ ADD_SEND(ret, line_node, idLength, INT2FIX(0));
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(args_num));
+ ADD_SEND(ret, line_node, idGE, INT2FIX(1)); // (1)
+ if (in_single_pattern) {
+ CHECK(iseq_compile_pattern_set_length_errmsg(iseq, ret, node, rb_fstring_lit("%p length mismatch (given %p, expected %p+)"), INT2FIX(args_num), base_index + 1 /* (1) */));
+ }
+ ADD_INSNL(ret, line_node, branchunless, match_failed);
+
+ {
+ LABEL *while_begin = NEW_LABEL(nd_line(node));
+ LABEL *next_loop = NEW_LABEL(nd_line(node));
+ LABEL *find_succeeded = NEW_LABEL(line);
+ LABEL *find_failed = NEW_LABEL(nd_line(node));
+ int j;
+
+ ADD_INSN(ret, line_node, dup); /* allocate stack for len */
+ ADD_SEND(ret, line_node, idLength, INT2FIX(0)); // (2)
+
+ ADD_INSN(ret, line_node, dup); /* allocate stack for limit */
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(args_num));
+ ADD_SEND(ret, line_node, idMINUS, INT2FIX(1)); // (3)
+
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(0)); /* allocate stack for i */ // (4)
+
+ ADD_LABEL(ret, while_begin);
+
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSN1(ret, line_node, topn, INT2FIX(2));
+ ADD_SEND(ret, line_node, idLE, INT2FIX(1));
+ ADD_INSNL(ret, line_node, branchunless, find_failed);
+
+ for (j = 0; j < args_num; j++) {
+ ADD_INSN1(ret, line_node, topn, INT2FIX(3));
+ ADD_INSN1(ret, line_node, topn, INT2FIX(1));
+ if (j != 0) {
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(j));
+ ADD_SEND(ret, line_node, idPLUS, INT2FIX(1));
+ }
+ ADD_SEND(ret, line_node, idAREF, INT2FIX(1)); // (5)
+
+ CHECK(iseq_compile_pattern_match(iseq, ret, args->nd_head, next_loop, in_single_pattern, in_alt_pattern, base_index + 4 /* (2), (3), (4), (5) */, false));
+ args = args->nd_next;
+ }
+
+ if (NODE_NAMED_REST_P(fpinfo->pre_rest_arg)) {
+ ADD_INSN1(ret, line_node, topn, INT2FIX(3));
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(0));
+ ADD_INSN1(ret, line_node, topn, INT2FIX(2));
+ ADD_SEND(ret, line_node, idAREF, INT2FIX(2)); // (6)
+ CHECK(iseq_compile_pattern_match(iseq, ret, fpinfo->pre_rest_arg, find_failed, in_single_pattern, in_alt_pattern, base_index + 4 /* (2), (3), (4), (6) */, false));
+ }
+ if (NODE_NAMED_REST_P(fpinfo->post_rest_arg)) {
+ ADD_INSN1(ret, line_node, topn, INT2FIX(3));
+ ADD_INSN1(ret, line_node, topn, INT2FIX(1));
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(args_num));
+ ADD_SEND(ret, line_node, idPLUS, INT2FIX(1));
+ ADD_INSN1(ret, line_node, topn, INT2FIX(3));
+ ADD_SEND(ret, line_node, idAREF, INT2FIX(2)); // (7)
+ CHECK(iseq_compile_pattern_match(iseq, ret, fpinfo->post_rest_arg, find_failed, in_single_pattern, in_alt_pattern, base_index + 4 /* (2), (3),(4), (7) */, false));
+ }
+ ADD_INSNL(ret, line_node, jump, find_succeeded);
+
+ ADD_LABEL(ret, next_loop);
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(1));
+ ADD_SEND(ret, line_node, idPLUS, INT2FIX(1));
+ ADD_INSNL(ret, line_node, jump, while_begin);
+
+ ADD_LABEL(ret, find_failed);
+ ADD_INSN1(ret, line_node, adjuststack, INT2FIX(3));
+ if (in_single_pattern) {
+ ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("%p does not match to find pattern"));
+ ADD_INSN1(ret, line_node, topn, INT2FIX(2));
+ ADD_SEND(ret, line_node, id_core_sprintf, INT2FIX(2)); // (8)
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 1 /* (8) */)); // (9)
+
+ ADD_INSN1(ret, line_node, putobject, Qfalse);
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 2 /* (8), (9) */));
+
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSN(ret, line_node, pop);
+ }
+ ADD_INSNL(ret, line_node, jump, match_failed);
+ ADD_INSN1(ret, line_node, dupn, INT2FIX(3));
+
+ ADD_LABEL(ret, find_succeeded);
+ ADD_INSN1(ret, line_node, adjuststack, INT2FIX(3));
+ }
+
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSNL(ret, line_node, jump, matched);
+ ADD_INSN(ret, line_node, putnil);
+
+ ADD_LABEL(ret, type_error);
+ ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line_node, putobject, rb_eTypeError);
+ ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("deconstruct must return Array"));
+ ADD_SEND(ret, line_node, id_core_raise, INT2FIX(2));
+ ADD_INSN(ret, line_node, pop);
+
+ ADD_LABEL(ret, match_failed);
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSNL(ret, line_node, jump, unmatched);
+
+ break;
+ }
+ case NODE_HSHPTN: {
+ /*
+ * keys = nil
+ * if pattern.has_kw_args_node? && !pattern.has_kw_rest_arg_node?
+ * keys = pattern.kw_args_node.keys
+ * end
+ * if pattern.has_constant_node?
+ * unless pattern.constant === obj
+ * goto match_failed
+ * end
+ * end
+ * unless obj.respond_to?(:deconstruct_keys)
+ * goto match_failed
+ * end
+ * d = obj.deconstruct_keys(keys)
+ * unless Hash === d
+ * goto type_error
+ * end
+ * if pattern.has_kw_rest_arg_node?
+ * d = d.dup
+ * end
+ * if pattern.has_kw_args_node?
+ * pattern.kw_args_node.each |k,|
+ * unless d.key?(k)
+ * goto match_failed
+ * end
+ * end
+ * pattern.kw_args_node.each |k, pat|
+ * if pattern.has_kw_rest_arg_node?
+ * unless pat.match?(d.delete(k))
+ * goto match_failed
+ * end
+ * else
+ * unless pat.match?(d[k])
+ * goto match_failed
+ * end
+ * end
+ * end
+ * else
+ * unless d.empty?
+ * goto match_failed
+ * end
+ * end
+ * if pattern.has_kw_rest_arg_node?
+ * if pattern.no_rest_keyword?
+ * unless d.empty?
+ * goto match_failed
+ * end
+ * else
+ * unless pattern.kw_rest_arg_node.match?(d)
+ * goto match_failed
+ * end
+ * end
+ * end
+ * goto matched
+ * type_error:
+ * FrozenCore.raise TypeError
+ * match_failed:
+ * goto unmatched
+ */
+ LABEL *match_failed, *type_error;
+ VALUE keys = Qnil;
+
+ match_failed = NEW_LABEL(line);
+ type_error = NEW_LABEL(line);
+
+ if (node->nd_pkwargs && !node->nd_pkwrestarg) {
+ const NODE *kw_args = node->nd_pkwargs->nd_head;
+ keys = rb_ary_new_capa(kw_args ? kw_args->nd_alen/2 : 0);
+ while (kw_args) {
+ rb_ary_push(keys, kw_args->nd_head->nd_lit);
+ kw_args = kw_args->nd_next->nd_next;
+ }
+ }
+
+ CHECK(iseq_compile_pattern_constant(iseq, ret, node, match_failed, in_single_pattern, base_index));
+
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSN1(ret, line_node, putobject, ID2SYM(rb_intern("deconstruct_keys")));
+ ADD_SEND(ret, line_node, idRespond_to, INT2FIX(1)); // (1)
+ if (in_single_pattern) {
+ CHECK(iseq_compile_pattern_set_general_errmsg(iseq, ret, node, rb_fstring_lit("%p does not respond to #deconstruct_keys"), base_index + 1 /* (1) */));
+ }
+ ADD_INSNL(ret, line_node, branchunless, match_failed);
+
+ if (NIL_P(keys)) {
+ ADD_INSN(ret, line_node, putnil);
+ }
+ else {
+ ADD_INSN1(ret, line_node, duparray, keys);
+ RB_OBJ_WRITTEN(iseq, Qundef, rb_obj_hide(keys));
+ }
+ ADD_SEND(ret, line_node, rb_intern("deconstruct_keys"), INT2FIX(1)); // (2)
+
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSN1(ret, line_node, checktype, INT2FIX(T_HASH));
+ ADD_INSNL(ret, line_node, branchunless, type_error);
+
+ if (node->nd_pkwrestarg) {
+ ADD_SEND(ret, line_node, rb_intern("dup"), INT2FIX(0));
+ }
+
+ if (node->nd_pkwargs) {
+ int i;
+ int keys_num;
+ const NODE *args;
+ args = node->nd_pkwargs->nd_head;
+ if (args) {
+ DECL_ANCHOR(match_values);
+ INIT_ANCHOR(match_values);
+ keys_num = rb_long2int(args->nd_alen) / 2;
+ for (i = 0; i < keys_num; i++) {
+ NODE *key_node = args->nd_head;
+ NODE *value_node = args->nd_next->nd_head;
+ VALUE key;
+
+ if (!nd_type_p(key_node, NODE_LIT)) {
+ UNKNOWN_NODE("NODE_IN", key_node, COMPILE_NG);
+ }
+ key = key_node->nd_lit;
+
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSN1(ret, line_node, putobject, key);
+ ADD_SEND(ret, line_node, rb_intern("key?"), INT2FIX(1)); // (3)
+ if (in_single_pattern) {
+ LABEL *match_succeeded;
+ match_succeeded = NEW_LABEL(line);
+
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSNL(ret, line_node, branchif, match_succeeded);
+
+ ADD_INSN1(ret, line_node, putobject, rb_str_freeze(rb_sprintf("key not found: %+"PRIsVALUE, key))); // (4)
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 2 /* (3), (4) */));
+ ADD_INSN1(ret, line_node, putobject, Qtrue); // (5)
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 3 /* (3), (4), (5) */));
+ ADD_INSN1(ret, line_node, topn, INT2FIX(3)); // (6)
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_MATCHEE + 4 /* (3), (4), (5), (6) */));
+ ADD_INSN1(ret, line_node, putobject, key); // (7)
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_KEY + 5 /* (3), (4), (5), (6), (7) */));
+
+ ADD_INSN1(ret, line_node, adjuststack, INT2FIX(4));
+
+ ADD_LABEL(ret, match_succeeded);
+ }
+ ADD_INSNL(ret, line_node, branchunless, match_failed);
+
+ ADD_INSN(match_values, line_node, dup);
+ ADD_INSN1(match_values, line_node, putobject, key);
+ ADD_SEND(match_values, line_node, node->nd_pkwrestarg ? rb_intern("delete") : idAREF, INT2FIX(1)); // (8)
+ CHECK(iseq_compile_pattern_match(iseq, match_values, value_node, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (8) */, false));
+ args = args->nd_next->nd_next;
+ }
+ ADD_SEQ(ret, match_values);
+ }
+ }
+ else {
+ ADD_INSN(ret, line_node, dup);
+ ADD_SEND(ret, line_node, idEmptyP, INT2FIX(0)); // (9)
+ if (in_single_pattern) {
+ CHECK(iseq_compile_pattern_set_general_errmsg(iseq, ret, node, rb_fstring_lit("%p is not empty"), base_index + 1 /* (9) */));
+ }
+ ADD_INSNL(ret, line_node, branchunless, match_failed);
+ }
+
+ if (node->nd_pkwrestarg) {
+ if (node->nd_pkwrestarg == NODE_SPECIAL_NO_REST_KEYWORD) {
+ ADD_INSN(ret, line_node, dup);
+ ADD_SEND(ret, line_node, idEmptyP, INT2FIX(0)); // (10)
+ if (in_single_pattern) {
+ CHECK(iseq_compile_pattern_set_general_errmsg(iseq, ret, node, rb_fstring_lit("rest of %p is not empty"), base_index + 1 /* (10) */));
+ }
+ ADD_INSNL(ret, line_node, branchunless, match_failed);
+ }
+ else {
+ ADD_INSN(ret, line_node, dup); // (11)
+ CHECK(iseq_compile_pattern_match(iseq, ret, node->nd_pkwrestarg, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (11) */, false));
+ }
+ }
+
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSNL(ret, line_node, jump, matched);
+ ADD_INSN(ret, line_node, putnil);
+
+ ADD_LABEL(ret, type_error);
+ ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line_node, putobject, rb_eTypeError);
+ ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("deconstruct_keys must return Hash"));
+ ADD_SEND(ret, line_node, id_core_raise, INT2FIX(2));
+ ADD_INSN(ret, line_node, pop);
+
+ ADD_LABEL(ret, match_failed);
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSNL(ret, line_node, jump, unmatched);
+ break;
+ }
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_XSTR:
+ case NODE_DSTR:
+ case NODE_DSYM:
+ case NODE_DREGX:
+ case NODE_LIST:
+ case NODE_ZLIST:
+ case NODE_LAMBDA:
+ case NODE_DOT2:
+ case NODE_DOT3:
+ case NODE_CONST:
+ case NODE_LVAR:
+ case NODE_DVAR:
+ case NODE_IVAR:
+ case NODE_CVAR:
+ case NODE_GVAR:
+ case NODE_TRUE:
+ case NODE_FALSE:
+ case NODE_SELF:
+ case NODE_NIL:
+ case NODE_COLON2:
+ case NODE_COLON3:
+ case NODE_BEGIN:
+ CHECK(COMPILE(ret, "case in literal", node)); // (1)
+ if (in_single_pattern) {
+ ADD_INSN1(ret, line_node, dupn, INT2FIX(2));
+ }
+ ADD_INSN1(ret, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE)); // (2)
+ if (in_single_pattern) {
+ CHECK(iseq_compile_pattern_set_eqq_errmsg(iseq, ret, node, base_index + 2 /* (1), (2) */));
+ }
+ ADD_INSNL(ret, line_node, branchif, matched);
+ ADD_INSNL(ret, line_node, jump, unmatched);
+ break;
+ case NODE_LASGN: {
+ struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+ ID id = node->nd_vid;
+ int idx = ISEQ_BODY(body->local_iseq)->local_table_size - get_local_var_idx(iseq, id);
+
+ if (in_alt_pattern) {
+ const char *name = rb_id2name(id);
+ if (name && strlen(name) > 0 && name[0] != '_') {
+ COMPILE_ERROR(ERROR_ARGS "illegal variable in alternative pattern (%"PRIsVALUE")",
+ rb_id2str(id));
+ return COMPILE_NG;
+ }
+ }
+
+ ADD_SETLOCAL(ret, line_node, idx, get_lvar_level(iseq));
+ ADD_INSNL(ret, line_node, jump, matched);
+ break;
+ }
+ case NODE_DASGN: {
+ int idx, lv, ls;
+ ID id = node->nd_vid;
+
+ idx = get_dyna_var_idx(iseq, id, &lv, &ls);
+
+ if (in_alt_pattern) {
+ const char *name = rb_id2name(id);
+ if (name && strlen(name) > 0 && name[0] != '_') {
+ COMPILE_ERROR(ERROR_ARGS "illegal variable in alternative pattern (%"PRIsVALUE")",
+ rb_id2str(id));
+ return COMPILE_NG;
+ }
+ }
+
+ if (idx < 0) {
+ COMPILE_ERROR(ERROR_ARGS "NODE_DASGN: unknown id (%"PRIsVALUE")",
+ rb_id2str(id));
+ return COMPILE_NG;
+ }
+ ADD_SETLOCAL(ret, line_node, ls - idx, lv);
+ ADD_INSNL(ret, line_node, jump, matched);
+ break;
+ }
+ case NODE_IF:
+ case NODE_UNLESS: {
+ LABEL *match_failed;
+ match_failed = unmatched;
+ CHECK(iseq_compile_pattern_match(iseq, ret, node->nd_body, unmatched, in_single_pattern, in_alt_pattern, base_index, use_deconstructed_cache));
+ CHECK(COMPILE(ret, "case in if", node->nd_cond));
+ if (in_single_pattern) {
+ LABEL *match_succeeded;
+ match_succeeded = NEW_LABEL(line);
+
+ ADD_INSN(ret, line_node, dup);
+ if (nd_type_p(node, NODE_IF)) {
+ ADD_INSNL(ret, line_node, branchif, match_succeeded);
+ }
+ else {
+ ADD_INSNL(ret, line_node, branchunless, match_succeeded);
+ }
+
+ ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("guard clause does not return true")); // (1)
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 1 /* (1) */)); // (2)
+ ADD_INSN1(ret, line_node, putobject, Qfalse);
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 2 /* (1), (2) */));
+
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSN(ret, line_node, pop);
+
+ ADD_LABEL(ret, match_succeeded);
+ }
+ if (nd_type_p(node, NODE_IF)) {
+ ADD_INSNL(ret, line_node, branchunless, match_failed);
+ }
+ else {
+ ADD_INSNL(ret, line_node, branchif, match_failed);
+ }
+ ADD_INSNL(ret, line_node, jump, matched);
+ break;
+ }
+ case NODE_HASH: {
+ NODE *n;
+ LABEL *match_failed;
+ match_failed = NEW_LABEL(line);
+
+ n = node->nd_head;
+ if (! (nd_type_p(n, NODE_LIST) && n->nd_alen == 2)) {
+ COMPILE_ERROR(ERROR_ARGS "unexpected node");
+ return COMPILE_NG;
+ }
+
+ ADD_INSN(ret, line_node, dup); // (1)
+ CHECK(iseq_compile_pattern_match(iseq, ret, n->nd_head, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (1) */, use_deconstructed_cache));
+ CHECK(iseq_compile_pattern_each(iseq, ret, n->nd_next->nd_head, matched, match_failed, in_single_pattern, in_alt_pattern, base_index, false));
+ ADD_INSN(ret, line_node, putnil);
+
+ ADD_LABEL(ret, match_failed);
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSNL(ret, line_node, jump, unmatched);
+ break;
+ }
+ case NODE_OR: {
+ LABEL *match_succeeded, *fin;
+ match_succeeded = NEW_LABEL(line);
+ fin = NEW_LABEL(line);
+
+ ADD_INSN(ret, line_node, dup); // (1)
+ CHECK(iseq_compile_pattern_each(iseq, ret, node->nd_1st, match_succeeded, fin, in_single_pattern, true, base_index + 1 /* (1) */, use_deconstructed_cache));
+ ADD_LABEL(ret, match_succeeded);
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSNL(ret, line_node, jump, matched);
+ ADD_INSN(ret, line_node, putnil);
+ ADD_LABEL(ret, fin);
+ CHECK(iseq_compile_pattern_each(iseq, ret, node->nd_2nd, matched, unmatched, in_single_pattern, true, base_index, use_deconstructed_cache));
+ break;
+ }
+ default:
+ UNKNOWN_NODE("NODE_IN", node, COMPILE_NG);
+ }
+ return COMPILE_OK;
+}
+
+static int
+iseq_compile_pattern_match(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *unmatched, bool in_single_pattern, bool in_alt_pattern, int base_index, bool use_deconstructed_cache)
+{
+ LABEL *fin = NEW_LABEL(nd_line(node));
+ CHECK(iseq_compile_pattern_each(iseq, ret, node, fin, unmatched, in_single_pattern, in_alt_pattern, base_index, use_deconstructed_cache));
+ ADD_LABEL(ret, fin);
+ return COMPILE_OK;
+}
+
+static int
+iseq_compile_pattern_constant(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *match_failed, bool in_single_pattern, int base_index)
+{
+ const NODE *line_node = node;
+
+ if (node->nd_pconst) {
+ ADD_INSN(ret, line_node, dup); // (1)
+ CHECK(COMPILE(ret, "constant", node->nd_pconst)); // (2)
+ if (in_single_pattern) {
+ ADD_INSN1(ret, line_node, dupn, INT2FIX(2));
+ }
+ ADD_INSN1(ret, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE)); // (3)
+ if (in_single_pattern) {
+ CHECK(iseq_compile_pattern_set_eqq_errmsg(iseq, ret, node, base_index + 3 /* (1), (2), (3) */));
+ }
+ ADD_INSNL(ret, line_node, branchunless, match_failed);
+ }
+ return COMPILE_OK;
+}
+
+
+static int
+iseq_compile_array_deconstruct(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *deconstruct, LABEL *deconstructed, LABEL *match_failed, LABEL *type_error, bool in_single_pattern, int base_index, bool use_deconstructed_cache)
+{
+ const NODE *line_node = node;
+
+ // NOTE: this optimization allows us to re-use the #deconstruct value
+ // (or its absence).
+ if (use_deconstructed_cache) {
+ // If value is nil then we haven't tried to deconstruct
+ ADD_INSN1(ret, line_node, topn, INT2FIX(base_index + CASE3_BI_OFFSET_DECONSTRUCTED_CACHE));
+ ADD_INSNL(ret, line_node, branchnil, deconstruct);
+
+ // If false then the value is not deconstructable
+ ADD_INSN1(ret, line_node, topn, INT2FIX(base_index + CASE3_BI_OFFSET_DECONSTRUCTED_CACHE));
+ ADD_INSNL(ret, line_node, branchunless, match_failed);
+
+ // Drop value, add deconstructed to the stack and jump
+ ADD_INSN(ret, line_node, pop); // (1)
+ ADD_INSN1(ret, line_node, topn, INT2FIX(base_index + CASE3_BI_OFFSET_DECONSTRUCTED_CACHE - 1 /* (1) */));
+ ADD_INSNL(ret, line_node, jump, deconstructed);
+ }
+ else {
+ ADD_INSNL(ret, line_node, jump, deconstruct);
+ }
+
+ ADD_LABEL(ret, deconstruct);
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSN1(ret, line_node, putobject, ID2SYM(rb_intern("deconstruct")));
+ ADD_SEND(ret, line_node, idRespond_to, INT2FIX(1)); // (2)
+
+ // Cache the result of respond_to? (in case it's false is stays there, if true - it's overwritten after #deconstruct)
+ if (use_deconstructed_cache) {
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_DECONSTRUCTED_CACHE + 1 /* (2) */));
+ }
+
+ if (in_single_pattern) {
+ CHECK(iseq_compile_pattern_set_general_errmsg(iseq, ret, node, rb_fstring_lit("%p does not respond to #deconstruct"), base_index + 1 /* (2) */));
+ }
+
+ ADD_INSNL(ret, line_node, branchunless, match_failed);
+
+ ADD_SEND(ret, line_node, rb_intern("deconstruct"), INT2FIX(0));
+
+ // Cache the result (if it's cacheable - currently, only top-level array patterns)
+ if (use_deconstructed_cache) {
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_DECONSTRUCTED_CACHE));
+ }
+
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSN1(ret, line_node, checktype, INT2FIX(T_ARRAY));
+ ADD_INSNL(ret, line_node, branchunless, type_error);
+
+ ADD_LABEL(ret, deconstructed);
+
+ return COMPILE_OK;
+}
+
+static int
+iseq_compile_pattern_set_general_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE errmsg, int base_index)
+{
+ /*
+ * if match_succeeded?
+ * goto match_succeeded
+ * end
+ * error_string = FrozenCore.sprintf(errmsg, matchee)
+ * key_error_p = false
+ * match_succeeded:
+ */
+ const int line = nd_line(node);
+ const NODE *line_node = node;
+ LABEL *match_succeeded = NEW_LABEL(line);
+
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSNL(ret, line_node, branchif, match_succeeded);
+
+ ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line_node, putobject, errmsg);
+ ADD_INSN1(ret, line_node, topn, INT2FIX(3));
+ ADD_SEND(ret, line_node, id_core_sprintf, INT2FIX(2)); // (1)
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 1 /* (1) */)); // (2)
+
+ ADD_INSN1(ret, line_node, putobject, Qfalse);
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 2 /* (1), (2) */));
+
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSN(ret, line_node, pop);
+ ADD_LABEL(ret, match_succeeded);
+
+ return COMPILE_OK;
+}
+
+static int
+iseq_compile_pattern_set_length_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE errmsg, VALUE pattern_length, int base_index)
+{
+ /*
+ * if match_succeeded?
+ * goto match_succeeded
+ * end
+ * error_string = FrozenCore.sprintf(errmsg, matchee, matchee.length, pat.length)
+ * key_error_p = false
+ * match_succeeded:
+ */
+ const int line = nd_line(node);
+ const NODE *line_node = node;
+ LABEL *match_succeeded = NEW_LABEL(line);
+
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSNL(ret, line_node, branchif, match_succeeded);
+
+ ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line_node, putobject, errmsg);
+ ADD_INSN1(ret, line_node, topn, INT2FIX(3));
+ ADD_INSN(ret, line_node, dup);
+ ADD_SEND(ret, line_node, idLength, INT2FIX(0));
+ ADD_INSN1(ret, line_node, putobject, pattern_length);
+ ADD_SEND(ret, line_node, id_core_sprintf, INT2FIX(4)); // (1)
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 1 /* (1) */)); // (2)
+
+ ADD_INSN1(ret, line_node, putobject, Qfalse);
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 2/* (1), (2) */));
+
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSN(ret, line_node, pop);
+ ADD_LABEL(ret, match_succeeded);
+
+ return COMPILE_OK;
+}
+
+static int
+iseq_compile_pattern_set_eqq_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int base_index)
+{
+ /*
+ * if match_succeeded?
+ * goto match_succeeded
+ * end
+ * error_string = FrozenCore.sprintf("%p === %p does not return true", pat, matchee)
+ * key_error_p = false
+ * match_succeeded:
+ */
+ const int line = nd_line(node);
+ const NODE *line_node = node;
+ LABEL *match_succeeded = NEW_LABEL(line);
+
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSNL(ret, line_node, branchif, match_succeeded);
+
+ ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("%p === %p does not return true"));
+ ADD_INSN1(ret, line_node, topn, INT2FIX(3));
+ ADD_INSN1(ret, line_node, topn, INT2FIX(5));
+ ADD_SEND(ret, line_node, id_core_sprintf, INT2FIX(3)); // (1)
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 1 /* (1) */)); // (2)
+
+ ADD_INSN1(ret, line_node, putobject, Qfalse);
+ ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 2 /* (1), (2) */));
+
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSN(ret, line_node, pop);
+
+ ADD_LABEL(ret, match_succeeded);
+ ADD_INSN1(ret, line_node, setn, INT2FIX(2));
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSN(ret, line_node, pop);
+
+ return COMPILE_OK;
+}
+
+static int
+compile_case3(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const orig_node, int popped)
+{
+ const NODE *pattern;
+ const NODE *node = orig_node;
+ LABEL *endlabel, *elselabel;
+ DECL_ANCHOR(head);
+ DECL_ANCHOR(body_seq);
+ DECL_ANCHOR(cond_seq);
+ int line;
+ enum node_type type;
+ const NODE *line_node;
+ VALUE branches = 0;
+ int branch_id = 0;
+ bool single_pattern;
+
+ INIT_ANCHOR(head);
+ INIT_ANCHOR(body_seq);
+ INIT_ANCHOR(cond_seq);
+
+ branches = decl_branch_base(iseq, node, "case");
+
+ node = node->nd_body;
+ EXPECT_NODE("NODE_CASE3", node, NODE_IN, COMPILE_NG);
+ type = nd_type(node);
+ line = nd_line(node);
+ line_node = node;
+ single_pattern = !node->nd_next;
+
+ endlabel = NEW_LABEL(line);
+ elselabel = NEW_LABEL(line);
+
+ if (single_pattern) {
+ /* allocate stack for ... */
+ ADD_INSN(head, line_node, putnil); /* key_error_key */
+ ADD_INSN(head, line_node, putnil); /* key_error_matchee */
+ ADD_INSN1(head, line_node, putobject, Qfalse); /* key_error_p */
+ ADD_INSN(head, line_node, putnil); /* error_string */
+ }
+ ADD_INSN(head, line_node, putnil); /* allocate stack for cached #deconstruct value */
+
+ CHECK(COMPILE(head, "case base", orig_node->nd_head));
+
+ ADD_SEQ(ret, head); /* case VAL */
+
+ while (type == NODE_IN) {
+ LABEL *l1;
+
+ if (branch_id) {
+ ADD_INSN(body_seq, line_node, putnil);
+ }
+ l1 = NEW_LABEL(line);
+ ADD_LABEL(body_seq, l1);
+ ADD_INSN1(body_seq, line_node, adjuststack, INT2FIX(single_pattern ? 6 : 2));
+ add_trace_branch_coverage(
+ iseq,
+ body_seq,
+ node->nd_body ? node->nd_body : node,
+ branch_id++,
+ "in",
+ branches);
+ CHECK(COMPILE_(body_seq, "in body", node->nd_body, popped));
+ ADD_INSNL(body_seq, line_node, jump, endlabel);
+
+ pattern = node->nd_head;
+ if (pattern) {
+ int pat_line = nd_line(pattern);
+ LABEL *next_pat = NEW_LABEL(pat_line);
+ ADD_INSN (cond_seq, pattern, dup); /* dup case VAL */
+ // NOTE: set base_index (it's "under" the matchee value, so it's position is 2)
+ CHECK(iseq_compile_pattern_each(iseq, cond_seq, pattern, l1, next_pat, single_pattern, false, 2, true));
+ ADD_LABEL(cond_seq, next_pat);
+ LABEL_UNREMOVABLE(next_pat);
+ }
+ else {
+ COMPILE_ERROR(ERROR_ARGS "unexpected node");
+ return COMPILE_NG;
+ }
+
+ node = node->nd_next;
+ if (!node) {
+ break;
+ }
+ type = nd_type(node);
+ line = nd_line(node);
+ line_node = node;
+ }
+ /* else */
+ if (node) {
+ ADD_LABEL(cond_seq, elselabel);
+ ADD_INSN(cond_seq, line_node, pop);
+ ADD_INSN(cond_seq, line_node, pop); /* discard cached #deconstruct value */
+ add_trace_branch_coverage(iseq, cond_seq, node, branch_id, "else", branches);
+ CHECK(COMPILE_(cond_seq, "else", node, popped));
+ ADD_INSNL(cond_seq, line_node, jump, endlabel);
+ ADD_INSN(cond_seq, line_node, putnil);
+ if (popped) {
+ ADD_INSN(cond_seq, line_node, putnil);
+ }
+ }
+ else {
+ debugs("== else (implicit)\n");
+ ADD_LABEL(cond_seq, elselabel);
+ add_trace_branch_coverage(iseq, cond_seq, orig_node, branch_id, "else", branches);
+ ADD_INSN1(cond_seq, orig_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+
+ if (single_pattern) {
+ /*
+ * if key_error_p
+ * FrozenCore.raise NoMatchingPatternKeyError.new(FrozenCore.sprintf("%p: %s", case_val, error_string), matchee: key_error_matchee, key: key_error_key)
+ * else
+ * FrozenCore.raise NoMatchingPatternError, FrozenCore.sprintf("%p: %s", case_val, error_string)
+ * end
+ */
+ LABEL *key_error, *fin;
+ struct rb_callinfo_kwarg *kw_arg;
+
+ key_error = NEW_LABEL(line);
+ fin = NEW_LABEL(line);
+
+ kw_arg = rb_xmalloc_mul_add(2, sizeof(VALUE), sizeof(struct rb_callinfo_kwarg));
+ kw_arg->keyword_len = 2;
+ kw_arg->keywords[0] = ID2SYM(rb_intern("matchee"));
+ kw_arg->keywords[1] = ID2SYM(rb_intern("key"));
+
+ ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(CASE3_BI_OFFSET_KEY_ERROR_P + 2));
+ ADD_INSNL(cond_seq, orig_node, branchif, key_error);
+ ADD_INSN1(cond_seq, orig_node, putobject, rb_eNoMatchingPatternError);
+ ADD_INSN1(cond_seq, orig_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(cond_seq, orig_node, putobject, rb_fstring_lit("%p: %s"));
+ ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(4)); /* case VAL */
+ ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(CASE3_BI_OFFSET_ERROR_STRING + 6));
+ ADD_SEND(cond_seq, orig_node, id_core_sprintf, INT2FIX(3));
+ ADD_SEND(cond_seq, orig_node, id_core_raise, INT2FIX(2));
+ ADD_INSNL(cond_seq, orig_node, jump, fin);
+
+ ADD_LABEL(cond_seq, key_error);
+ ADD_INSN1(cond_seq, orig_node, putobject, rb_eNoMatchingPatternKeyError);
+ ADD_INSN1(cond_seq, orig_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(cond_seq, orig_node, putobject, rb_fstring_lit("%p: %s"));
+ ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(4)); /* case VAL */
+ ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(CASE3_BI_OFFSET_ERROR_STRING + 6));
+ ADD_SEND(cond_seq, orig_node, id_core_sprintf, INT2FIX(3));
+ ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(CASE3_BI_OFFSET_KEY_ERROR_MATCHEE + 4));
+ ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(CASE3_BI_OFFSET_KEY_ERROR_KEY + 5));
+ ADD_SEND_R(cond_seq, orig_node, rb_intern("new"), INT2FIX(1), NULL, INT2FIX(VM_CALL_KWARG), kw_arg);
+ ADD_SEND(cond_seq, orig_node, id_core_raise, INT2FIX(1));
+
+ ADD_LABEL(cond_seq, fin);
+ }
+ else {
+ ADD_INSN1(cond_seq, orig_node, putobject, rb_eNoMatchingPatternError);
+ ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(2));
+ ADD_SEND(cond_seq, orig_node, id_core_raise, INT2FIX(2));
+ }
+ ADD_INSN1(cond_seq, orig_node, adjuststack, INT2FIX(single_pattern ? 7 : 3));
+ if (!popped) {
+ ADD_INSN(cond_seq, orig_node, putnil);
+ }
+ ADD_INSNL(cond_seq, orig_node, jump, endlabel);
+ ADD_INSN1(cond_seq, orig_node, dupn, INT2FIX(single_pattern ? 5 : 1));
+ if (popped) {
+ ADD_INSN(cond_seq, line_node, putnil);
+ }
+ }
+
+ ADD_SEQ(ret, cond_seq);
+ ADD_SEQ(ret, body_seq);
+ ADD_LABEL(ret, endlabel);
+ return COMPILE_OK;
+}
+
+#undef CASE3_BI_OFFSET_DECONSTRUCTED_CACHE
+#undef CASE3_BI_OFFSET_ERROR_STRING
+#undef CASE3_BI_OFFSET_KEY_ERROR_P
+#undef CASE3_BI_OFFSET_KEY_ERROR_MATCHEE
+#undef CASE3_BI_OFFSET_KEY_ERROR_KEY
+
+static int
+compile_loop(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped, const enum node_type type)
+{
+ const int line = (int)nd_line(node);
+ const NODE *line_node = node;
+
+ LABEL *prev_start_label = ISEQ_COMPILE_DATA(iseq)->start_label;
+ LABEL *prev_end_label = ISEQ_COMPILE_DATA(iseq)->end_label;
+ LABEL *prev_redo_label = ISEQ_COMPILE_DATA(iseq)->redo_label;
+ int prev_loopval_popped = ISEQ_COMPILE_DATA(iseq)->loopval_popped;
+ VALUE branches = Qfalse;
+
+ struct iseq_compile_data_ensure_node_stack enl;
+
+ LABEL *next_label = ISEQ_COMPILE_DATA(iseq)->start_label = NEW_LABEL(line); /* next */
+ LABEL *redo_label = ISEQ_COMPILE_DATA(iseq)->redo_label = NEW_LABEL(line); /* redo */
+ LABEL *break_label = ISEQ_COMPILE_DATA(iseq)->end_label = NEW_LABEL(line); /* break */
+ LABEL *end_label = NEW_LABEL(line);
+ LABEL *adjust_label = NEW_LABEL(line);
+
+ LABEL *next_catch_label = NEW_LABEL(line);
+ LABEL *tmp_label = NULL;
+
+ ISEQ_COMPILE_DATA(iseq)->loopval_popped = 0;
+ push_ensure_entry(iseq, &enl, NULL, NULL);
+
+ if (node->nd_state == 1) {
+ ADD_INSNL(ret, line_node, jump, next_label);
+ }
+ else {
+ tmp_label = NEW_LABEL(line);
+ ADD_INSNL(ret, line_node, jump, tmp_label);
+ }
+ ADD_LABEL(ret, adjust_label);
+ ADD_INSN(ret, line_node, putnil);
+ ADD_LABEL(ret, next_catch_label);
+ ADD_INSN(ret, line_node, pop);
+ ADD_INSNL(ret, line_node, jump, next_label);
+ if (tmp_label) ADD_LABEL(ret, tmp_label);
+
+ ADD_LABEL(ret, redo_label);
+ branches = decl_branch_base(iseq, node, type == NODE_WHILE ? "while" : "until");
+ add_trace_branch_coverage(
+ iseq,
+ ret,
+ node->nd_body ? node->nd_body : node,
+ 0,
+ "body",
+ branches);
+ CHECK(COMPILE_POPPED(ret, "while body", node->nd_body));
+ ADD_LABEL(ret, next_label); /* next */
+
+ if (type == NODE_WHILE) {
+ compile_branch_condition(iseq, ret, node->nd_cond,
+ redo_label, end_label);
+ }
+ else {
+ /* until */
+ compile_branch_condition(iseq, ret, node->nd_cond,
+ end_label, redo_label);
+ }
+
+ ADD_LABEL(ret, end_label);
+ ADD_ADJUST_RESTORE(ret, adjust_label);
+
+ if (UNDEF_P(node->nd_state)) {
+ /* ADD_INSN(ret, line_node, putundef); */
+ COMPILE_ERROR(ERROR_ARGS "unsupported: putundef");
+ return COMPILE_NG;
+ }
+ else {
+ ADD_INSN(ret, line_node, putnil);
+ }
+
+ ADD_LABEL(ret, break_label); /* break */
+
+ if (popped) {
+ ADD_INSN(ret, line_node, pop);
+ }
+
+ ADD_CATCH_ENTRY(CATCH_TYPE_BREAK, redo_label, break_label, NULL,
+ break_label);
+ ADD_CATCH_ENTRY(CATCH_TYPE_NEXT, redo_label, break_label, NULL,
+ next_catch_label);
+ ADD_CATCH_ENTRY(CATCH_TYPE_REDO, redo_label, break_label, NULL,
+ ISEQ_COMPILE_DATA(iseq)->redo_label);
+
+ ISEQ_COMPILE_DATA(iseq)->start_label = prev_start_label;
+ ISEQ_COMPILE_DATA(iseq)->end_label = prev_end_label;
+ ISEQ_COMPILE_DATA(iseq)->redo_label = prev_redo_label;
+ ISEQ_COMPILE_DATA(iseq)->loopval_popped = prev_loopval_popped;
+ ISEQ_COMPILE_DATA(iseq)->ensure_node_stack = ISEQ_COMPILE_DATA(iseq)->ensure_node_stack->prev;
+ return COMPILE_OK;
+}
+
+static int
+compile_iter(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const int line = nd_line(node);
+ const NODE *line_node = node;
+ const rb_iseq_t *prevblock = ISEQ_COMPILE_DATA(iseq)->current_block;
+ LABEL *retry_label = NEW_LABEL(line);
+ LABEL *retry_end_l = NEW_LABEL(line);
+ const rb_iseq_t *child_iseq;
+
+ ADD_LABEL(ret, retry_label);
+ if (nd_type_p(node, NODE_FOR)) {
+ CHECK(COMPILE(ret, "iter caller (for)", node->nd_iter));
+
+ ISEQ_COMPILE_DATA(iseq)->current_block = child_iseq =
+ NEW_CHILD_ISEQ(node->nd_body, make_name_for_block(iseq),
+ ISEQ_TYPE_BLOCK, line);
+ ADD_SEND_WITH_BLOCK(ret, line_node, idEach, INT2FIX(0), child_iseq);
+ }
+ else {
+ ISEQ_COMPILE_DATA(iseq)->current_block = child_iseq =
+ NEW_CHILD_ISEQ(node->nd_body, make_name_for_block(iseq),
+ ISEQ_TYPE_BLOCK, line);
+ CHECK(COMPILE(ret, "iter caller", node->nd_iter));
+ }
+
+ {
+ // We need to put the label "retry_end_l" immediately after the last "send" instruction.
+ // This because vm_throw checks if the break cont is equal to the index of next insn of the "send".
+ // (Otherwise, it is considered "break from proc-closure". See "TAG_BREAK" handling in "vm_throw_start".)
+ //
+ // Normally, "send" instruction is at the last.
+ // However, qcall under branch coverage measurement adds some instructions after the "send".
+ //
+ // Note that "invokesuper" appears instead of "send".
+ INSN *iobj;
+ LINK_ELEMENT *last_elem = LAST_ELEMENT(ret);
+ iobj = IS_INSN(last_elem) ? (INSN*) last_elem : (INSN*) get_prev_insn((INSN*) last_elem);
+ while (INSN_OF(iobj) != BIN(send) && INSN_OF(iobj) != BIN(invokesuper)) {
+ iobj = (INSN*) get_prev_insn(iobj);
+ }
+ ELEM_INSERT_NEXT(&iobj->link, (LINK_ELEMENT*) retry_end_l);
+
+ // LINK_ANCHOR has a pointer to the last element, but ELEM_INSERT_NEXT does not update it
+ // even if we add an insn to the last of LINK_ANCHOR. So this updates it manually.
+ if (&iobj->link == LAST_ELEMENT(ret)) {
+ ret->last = (LINK_ELEMENT*) retry_end_l;
+ }
+ }
+
+ if (popped) {
+ ADD_INSN(ret, line_node, pop);
+ }
+
+ ISEQ_COMPILE_DATA(iseq)->current_block = prevblock;
+
+ ADD_CATCH_ENTRY(CATCH_TYPE_BREAK, retry_label, retry_end_l, child_iseq, retry_end_l);
+ return COMPILE_OK;
+}
+
+static int
+compile_for_masgn(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ /* massign to var in "for"
+ * (args.length == 1 && Array.try_convert(args[0])) || args
+ */
+ const NODE *line_node = node;
+ const NODE *var = node->nd_var;
+ LABEL *not_single = NEW_LABEL(nd_line(var));
+ LABEL *not_ary = NEW_LABEL(nd_line(var));
+ CHECK(COMPILE(ret, "for var", var));
+ ADD_INSN(ret, line_node, dup);
+ ADD_CALL(ret, line_node, idLength, INT2FIX(0));
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(1));
+ ADD_CALL(ret, line_node, idEq, INT2FIX(1));
+ ADD_INSNL(ret, line_node, branchunless, not_single);
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSN1(ret, line_node, putobject, INT2FIX(0));
+ ADD_CALL(ret, line_node, idAREF, INT2FIX(1));
+ ADD_INSN1(ret, line_node, putobject, rb_cArray);
+ ADD_INSN(ret, line_node, swap);
+ ADD_CALL(ret, line_node, rb_intern("try_convert"), INT2FIX(1));
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSNL(ret, line_node, branchunless, not_ary);
+ ADD_INSN(ret, line_node, swap);
+ ADD_LABEL(ret, not_ary);
+ ADD_INSN(ret, line_node, pop);
+ ADD_LABEL(ret, not_single);
+ return COMPILE_OK;
+}
+
+static int
+compile_break(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const NODE *line_node = node;
+ unsigned long throw_flag = 0;
+
+ if (ISEQ_COMPILE_DATA(iseq)->redo_label != 0 && can_add_ensure_iseq(iseq)) {
+ /* while/until */
+ LABEL *splabel = NEW_LABEL(0);
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line_node, ISEQ_COMPILE_DATA(iseq)->redo_label);
+ CHECK(COMPILE_(ret, "break val (while/until)", node->nd_stts,
+ ISEQ_COMPILE_DATA(iseq)->loopval_popped));
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_INSNL(ret, line_node, jump, ISEQ_COMPILE_DATA(iseq)->end_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+
+ if (!popped) {
+ ADD_INSN(ret, line_node, putnil);
+ }
+ }
+ else {
+ const rb_iseq_t *ip = iseq;
+
+ while (ip) {
+ if (!ISEQ_COMPILE_DATA(ip)) {
+ ip = 0;
+ break;
+ }
+
+ if (ISEQ_COMPILE_DATA(ip)->redo_label != 0) {
+ throw_flag = VM_THROW_NO_ESCAPE_FLAG;
+ }
+ else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_BLOCK) {
+ throw_flag = 0;
+ }
+ else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_EVAL) {
+ COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with break");
+ return COMPILE_NG;
+ }
+ else {
+ ip = ISEQ_BODY(ip)->parent_iseq;
+ continue;
+ }
+
+ /* escape from block */
+ CHECK(COMPILE(ret, "break val (block)", node->nd_stts));
+ ADD_INSN1(ret, line_node, throw, INT2FIX(throw_flag | TAG_BREAK));
+ if (popped) {
+ ADD_INSN(ret, line_node, pop);
+ }
+ return COMPILE_OK;
+ }
+ COMPILE_ERROR(ERROR_ARGS "Invalid break");
+ return COMPILE_NG;
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_next(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const NODE *line_node = node;
+ unsigned long throw_flag = 0;
+
+ if (ISEQ_COMPILE_DATA(iseq)->redo_label != 0 && can_add_ensure_iseq(iseq)) {
+ LABEL *splabel = NEW_LABEL(0);
+ debugs("next in while loop\n");
+ ADD_LABEL(ret, splabel);
+ CHECK(COMPILE(ret, "next val/valid syntax?", node->nd_stts));
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_ADJUST(ret, line_node, ISEQ_COMPILE_DATA(iseq)->redo_label);
+ ADD_INSNL(ret, line_node, jump, ISEQ_COMPILE_DATA(iseq)->start_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+ if (!popped) {
+ ADD_INSN(ret, line_node, putnil);
+ }
+ }
+ else if (ISEQ_COMPILE_DATA(iseq)->end_label && can_add_ensure_iseq(iseq)) {
+ LABEL *splabel = NEW_LABEL(0);
+ debugs("next in block\n");
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line_node, ISEQ_COMPILE_DATA(iseq)->start_label);
+ CHECK(COMPILE(ret, "next val", node->nd_stts));
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_INSNL(ret, line_node, jump, ISEQ_COMPILE_DATA(iseq)->end_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+
+ if (!popped) {
+ ADD_INSN(ret, line_node, putnil);
+ }
+ }
+ else {
+ const rb_iseq_t *ip = iseq;
+
+ while (ip) {
+ if (!ISEQ_COMPILE_DATA(ip)) {
+ ip = 0;
+ break;
+ }
+
+ throw_flag = VM_THROW_NO_ESCAPE_FLAG;
+ if (ISEQ_COMPILE_DATA(ip)->redo_label != 0) {
+ /* while loop */
+ break;
+ }
+ else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_BLOCK) {
+ break;
+ }
+ else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_EVAL) {
+ COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with next");
+ return COMPILE_NG;
+ }
+
+ ip = ISEQ_BODY(ip)->parent_iseq;
+ }
+ if (ip != 0) {
+ CHECK(COMPILE(ret, "next val", node->nd_stts));
+ ADD_INSN1(ret, line_node, throw, INT2FIX(throw_flag | TAG_NEXT));
+
+ if (popped) {
+ ADD_INSN(ret, line_node, pop);
+ }
+ }
+ else {
+ COMPILE_ERROR(ERROR_ARGS "Invalid next");
+ return COMPILE_NG;
+ }
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_redo(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const NODE *line_node = node;
+
+ if (ISEQ_COMPILE_DATA(iseq)->redo_label && can_add_ensure_iseq(iseq)) {
+ LABEL *splabel = NEW_LABEL(0);
+ debugs("redo in while");
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line_node, ISEQ_COMPILE_DATA(iseq)->redo_label);
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_INSNL(ret, line_node, jump, ISEQ_COMPILE_DATA(iseq)->redo_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+ if (!popped) {
+ ADD_INSN(ret, line_node, putnil);
+ }
+ }
+ else if (ISEQ_BODY(iseq)->type != ISEQ_TYPE_EVAL && ISEQ_COMPILE_DATA(iseq)->start_label && can_add_ensure_iseq(iseq)) {
+ LABEL *splabel = NEW_LABEL(0);
+
+ debugs("redo in block");
+ ADD_LABEL(ret, splabel);
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_ADJUST(ret, line_node, ISEQ_COMPILE_DATA(iseq)->start_label);
+ ADD_INSNL(ret, line_node, jump, ISEQ_COMPILE_DATA(iseq)->start_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+
+ if (!popped) {
+ ADD_INSN(ret, line_node, putnil);
+ }
+ }
+ else {
+ const rb_iseq_t *ip = iseq;
+
+ while (ip) {
+ if (!ISEQ_COMPILE_DATA(ip)) {
+ ip = 0;
+ break;
+ }
+
+ if (ISEQ_COMPILE_DATA(ip)->redo_label != 0) {
+ break;
+ }
+ else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_BLOCK) {
+ break;
+ }
+ else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_EVAL) {
+ COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with redo");
+ return COMPILE_NG;
+ }
+
+ ip = ISEQ_BODY(ip)->parent_iseq;
+ }
+ if (ip != 0) {
+ ADD_INSN(ret, line_node, putnil);
+ ADD_INSN1(ret, line_node, throw, INT2FIX(VM_THROW_NO_ESCAPE_FLAG | TAG_REDO));
+
+ if (popped) {
+ ADD_INSN(ret, line_node, pop);
+ }
+ }
+ else {
+ COMPILE_ERROR(ERROR_ARGS "Invalid redo");
+ return COMPILE_NG;
+ }
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_retry(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const NODE *line_node = node;
+
+ if (ISEQ_BODY(iseq)->type == ISEQ_TYPE_RESCUE) {
+ ADD_INSN(ret, line_node, putnil);
+ ADD_INSN1(ret, line_node, throw, INT2FIX(TAG_RETRY));
+
+ if (popped) {
+ ADD_INSN(ret, line_node, pop);
+ }
+ }
+ else {
+ COMPILE_ERROR(ERROR_ARGS "Invalid retry");
+ return COMPILE_NG;
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_rescue(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const int line = nd_line(node);
+ const NODE *line_node = node;
+ LABEL *lstart = NEW_LABEL(line);
+ LABEL *lend = NEW_LABEL(line);
+ LABEL *lcont = NEW_LABEL(line);
+ const rb_iseq_t *rescue = NEW_CHILD_ISEQ(node->nd_resq,
+ rb_str_concat(rb_str_new2("rescue in "),
+ ISEQ_BODY(iseq)->location.label),
+ ISEQ_TYPE_RESCUE, line);
+
+ lstart->rescued = LABEL_RESCUE_BEG;
+ lend->rescued = LABEL_RESCUE_END;
+ ADD_LABEL(ret, lstart);
+
+ bool prev_in_rescue = ISEQ_COMPILE_DATA(iseq)->in_rescue;
+ ISEQ_COMPILE_DATA(iseq)->in_rescue = true;
+ {
+ CHECK(COMPILE(ret, "rescue head", node->nd_head));
+ }
+ ISEQ_COMPILE_DATA(iseq)->in_rescue = prev_in_rescue;
+
+ ADD_LABEL(ret, lend);
+ if (node->nd_else) {
+ ADD_INSN(ret, line_node, pop);
+ CHECK(COMPILE(ret, "rescue else", node->nd_else));
+ }
+ ADD_INSN(ret, line_node, nop);
+ ADD_LABEL(ret, lcont);
+
+ if (popped) {
+ ADD_INSN(ret, line_node, pop);
+ }
+
+ /* register catch entry */
+ ADD_CATCH_ENTRY(CATCH_TYPE_RESCUE, lstart, lend, rescue, lcont);
+ ADD_CATCH_ENTRY(CATCH_TYPE_RETRY, lend, lcont, NULL, lstart);
+ return COMPILE_OK;
+}
+
+static int
+compile_resbody(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const int line = nd_line(node);
+ const NODE *line_node = node;
+ const NODE *resq = node;
+ const NODE *narg;
+ LABEL *label_miss, *label_hit;
+
+ while (resq) {
+ label_miss = NEW_LABEL(line);
+ label_hit = NEW_LABEL(line);
+
+ narg = resq->nd_args;
+ if (narg) {
+ switch (nd_type(narg)) {
+ case NODE_LIST:
+ while (narg) {
+ ADD_GETLOCAL(ret, line_node, LVAR_ERRINFO, 0);
+ CHECK(COMPILE(ret, "rescue arg", narg->nd_head));
+ ADD_INSN1(ret, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));
+ ADD_INSNL(ret, line_node, branchif, label_hit);
+ narg = narg->nd_next;
+ }
+ break;
+ case NODE_SPLAT:
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH:
+ ADD_GETLOCAL(ret, line_node, LVAR_ERRINFO, 0);
+ CHECK(COMPILE(ret, "rescue/cond splat", narg));
+ ADD_INSN1(ret, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE | VM_CHECKMATCH_ARRAY));
+ ADD_INSNL(ret, line_node, branchif, label_hit);
+ break;
+ default:
+ UNKNOWN_NODE("NODE_RESBODY", narg, COMPILE_NG);
+ }
+ }
+ else {
+ ADD_GETLOCAL(ret, line_node, LVAR_ERRINFO, 0);
+ ADD_INSN1(ret, line_node, putobject, rb_eStandardError);
+ ADD_INSN1(ret, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));
+ ADD_INSNL(ret, line_node, branchif, label_hit);
+ }
+ ADD_INSNL(ret, line_node, jump, label_miss);
+ ADD_LABEL(ret, label_hit);
+ CHECK(COMPILE(ret, "resbody body", resq->nd_body));
+ if (ISEQ_COMPILE_DATA(iseq)->option->tailcall_optimization) {
+ ADD_INSN(ret, line_node, nop);
+ }
+ ADD_INSN(ret, line_node, leave);
+ ADD_LABEL(ret, label_miss);
+ resq = resq->nd_head;
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_ensure(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const int line = nd_line(node);
+ const NODE *line_node = node;
+ DECL_ANCHOR(ensr);
+ const rb_iseq_t *ensure = NEW_CHILD_ISEQ(node->nd_ensr,
+ rb_str_concat(rb_str_new2 ("ensure in "), ISEQ_BODY(iseq)->location.label),
+ ISEQ_TYPE_ENSURE, line);
+ LABEL *lstart = NEW_LABEL(line);
+ LABEL *lend = NEW_LABEL(line);
+ LABEL *lcont = NEW_LABEL(line);
+ LINK_ELEMENT *last;
+ int last_leave = 0;
+ struct ensure_range er;
+ struct iseq_compile_data_ensure_node_stack enl;
+ struct ensure_range *erange;
+
+ INIT_ANCHOR(ensr);
+ CHECK(COMPILE_POPPED(ensr, "ensure ensr", node->nd_ensr));
+ last = ensr->last;
+ last_leave = last && IS_INSN(last) && IS_INSN_ID(last, leave);
+
+ er.begin = lstart;
+ er.end = lend;
+ er.next = 0;
+ push_ensure_entry(iseq, &enl, &er, node->nd_ensr);
+
+ ADD_LABEL(ret, lstart);
+ CHECK(COMPILE_(ret, "ensure head", node->nd_head, (popped | last_leave)));
+ ADD_LABEL(ret, lend);
+ ADD_SEQ(ret, ensr);
+ if (!popped && last_leave) ADD_INSN(ret, line_node, putnil);
+ ADD_LABEL(ret, lcont);
+ if (last_leave) ADD_INSN(ret, line_node, pop);
+
+ erange = ISEQ_COMPILE_DATA(iseq)->ensure_node_stack->erange;
+ if (lstart->link.next != &lend->link) {
+ while (erange) {
+ ADD_CATCH_ENTRY(CATCH_TYPE_ENSURE, erange->begin, erange->end,
+ ensure, lcont);
+ erange = erange->next;
+ }
+ }
+
+ ISEQ_COMPILE_DATA(iseq)->ensure_node_stack = enl.prev;
+ return COMPILE_OK;
+}
+
+static int
+compile_return(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const NODE *line_node = node;
+
+ if (iseq) {
+ enum rb_iseq_type type = ISEQ_BODY(iseq)->type;
+ const rb_iseq_t *is = iseq;
+ enum rb_iseq_type t = type;
+ const NODE *retval = node->nd_stts;
+ LABEL *splabel = 0;
+
+ while (t == ISEQ_TYPE_RESCUE || t == ISEQ_TYPE_ENSURE) {
+ if (!(is = ISEQ_BODY(is)->parent_iseq)) break;
+ t = ISEQ_BODY(is)->type;
+ }
+ switch (t) {
+ case ISEQ_TYPE_TOP:
+ case ISEQ_TYPE_MAIN:
+ if (retval) {
+ rb_warn("argument of top-level return is ignored");
+ }
+ if (is == iseq) {
+ /* plain top-level, leave directly */
+ type = ISEQ_TYPE_METHOD;
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (type == ISEQ_TYPE_METHOD) {
+ splabel = NEW_LABEL(0);
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line_node, 0);
+ }
+
+ CHECK(COMPILE(ret, "return nd_stts (return val)", retval));
+
+ if (type == ISEQ_TYPE_METHOD && can_add_ensure_iseq(iseq)) {
+ add_ensure_iseq(ret, iseq, 1);
+ ADD_TRACE(ret, RUBY_EVENT_RETURN);
+ ADD_INSN(ret, line_node, leave);
+ ADD_ADJUST_RESTORE(ret, splabel);
+
+ if (!popped) {
+ ADD_INSN(ret, line_node, putnil);
+ }
+ }
+ else {
+ ADD_INSN1(ret, line_node, throw, INT2FIX(TAG_RETURN));
+ if (popped) {
+ ADD_INSN(ret, line_node, pop);
+ }
+ }
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_evstr(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ CHECK(COMPILE_(ret, "nd_body", node, popped));
+
+ if (!popped && !all_string_result_p(node)) {
+ const NODE *line_node = node;
+ const unsigned int flag = VM_CALL_FCALL;
+
+ // Note, this dup could be removed if we are willing to change anytostring. It pops
+ // two VALUEs off the stack when it could work by replacing the top most VALUE.
+ ADD_INSN(ret, line_node, dup);
+ ADD_INSN1(ret, line_node, objtostring, new_callinfo(iseq, idTo_s, 0, flag, NULL, FALSE));
+ ADD_INSN(ret, line_node, anytostring);
+ }
+ return COMPILE_OK;
+}
+
+static void
+compile_lvar(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *line_node, ID id)
+{
+ int idx = ISEQ_BODY(ISEQ_BODY(iseq)->local_iseq)->local_table_size - get_local_var_idx(iseq, id);
+
+ debugs("id: %s idx: %d\n", rb_id2name(id), idx);
+ ADD_GETLOCAL(ret, line_node, idx, get_lvar_level(iseq));
+}
+
+static LABEL *
+qcall_branch_start(rb_iseq_t *iseq, LINK_ANCHOR *const recv, VALUE *branches, const NODE *node, const NODE *line_node)
+{
+ LABEL *else_label = NEW_LABEL(nd_line(line_node));
+ VALUE br = 0;
+
+ br = decl_branch_base(iseq, node, "&.");
+ *branches = br;
+ ADD_INSN(recv, line_node, dup);
+ ADD_INSNL(recv, line_node, branchnil, else_label);
+ add_trace_branch_coverage(iseq, recv, node, 0, "then", br);
+ return else_label;
+}
+
+static void
+qcall_branch_end(rb_iseq_t *iseq, LINK_ANCHOR *const ret, LABEL *else_label, VALUE branches, const NODE *node, const NODE *line_node)
+{
+ LABEL *end_label;
+ if (!else_label) return;
+ end_label = NEW_LABEL(nd_line(line_node));
+ ADD_INSNL(ret, line_node, jump, end_label);
+ ADD_LABEL(ret, else_label);
+ add_trace_branch_coverage(iseq, ret, node, 1, "else", branches);
+ ADD_LABEL(ret, end_label);
+}
+
+static int
+compile_call_precheck_freeze(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, const NODE *line_node, int popped)
+{
+ /* optimization shortcut
+ * "literal".freeze -> opt_str_freeze("literal")
+ */
+ if (node->nd_recv && nd_type_p(node->nd_recv, NODE_STR) &&
+ (node->nd_mid == idFreeze || node->nd_mid == idUMinus) &&
+ node->nd_args == NULL &&
+ ISEQ_COMPILE_DATA(iseq)->current_block == NULL &&
+ ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction) {
+ VALUE str = rb_fstring(node->nd_recv->nd_lit);
+ if (node->nd_mid == idUMinus) {
+ ADD_INSN2(ret, line_node, opt_str_uminus, str,
+ new_callinfo(iseq, idUMinus, 0, 0, NULL, FALSE));
+ }
+ else {
+ ADD_INSN2(ret, line_node, opt_str_freeze, str,
+ new_callinfo(iseq, idFreeze, 0, 0, NULL, FALSE));
+ }
+ RB_OBJ_WRITTEN(iseq, Qundef, str);
+ if (popped) {
+ ADD_INSN(ret, line_node, pop);
+ }
+ return TRUE;
+ }
+ /* optimization shortcut
+ * obj["literal"] -> opt_aref_with(obj, "literal")
+ */
+ if (node->nd_mid == idAREF && !private_recv_p(node) && node->nd_args &&
+ nd_type_p(node->nd_args, NODE_LIST) && node->nd_args->nd_alen == 1 &&
+ nd_type_p(node->nd_args->nd_head, NODE_STR) &&
+ ISEQ_COMPILE_DATA(iseq)->current_block == NULL &&
+ !ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal &&
+ ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction) {
+ VALUE str = rb_fstring(node->nd_args->nd_head->nd_lit);
+ CHECK(COMPILE(ret, "recv", node->nd_recv));
+ ADD_INSN2(ret, line_node, opt_aref_with, str,
+ new_callinfo(iseq, idAREF, 1, 0, NULL, FALSE));
+ RB_OBJ_WRITTEN(iseq, Qundef, str);
+ if (popped) {
+ ADD_INSN(ret, line_node, pop);
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static int
+iseq_has_builtin_function_table(const rb_iseq_t *iseq)
+{
+ return ISEQ_COMPILE_DATA(iseq)->builtin_function_table != NULL;
+}
+
+static const struct rb_builtin_function *
+iseq_builtin_function_lookup(const rb_iseq_t *iseq, const char *name)
+{
+ int i;
+ const struct rb_builtin_function *table = ISEQ_COMPILE_DATA(iseq)->builtin_function_table;
+ for (i=0; table[i].index != -1; i++) {
+ if (strcmp(table[i].name, name) == 0) {
+ return &table[i];
+ }
+ }
+ return NULL;
+}
+
+static const char *
+iseq_builtin_function_name(const enum node_type type, const NODE *recv, ID mid)
+{
+ const char *name = rb_id2name(mid);
+ static const char prefix[] = "__builtin_";
+ const size_t prefix_len = sizeof(prefix) - 1;
+
+ switch (type) {
+ case NODE_CALL:
+ if (recv) {
+ switch (nd_type(recv)) {
+ case NODE_VCALL:
+ if (recv->nd_mid == rb_intern("__builtin")) {
+ return name;
+ }
+ break;
+ case NODE_CONST:
+ if (recv->nd_vid == rb_intern("Primitive")) {
+ return name;
+ }
+ break;
+ default: break;
+ }
+ }
+ break;
+ case NODE_VCALL:
+ case NODE_FCALL:
+ if (UNLIKELY(strncmp(prefix, name, prefix_len) == 0)) {
+ return &name[prefix_len];
+ }
+ break;
+ default: break;
+ }
+ return NULL;
+}
+
+static int
+delegate_call_p(const rb_iseq_t *iseq, unsigned int argc, const LINK_ANCHOR *args, unsigned int *pstart_index)
+{
+
+ if (argc == 0) {
+ *pstart_index = 0;
+ return TRUE;
+ }
+ else if (argc <= ISEQ_BODY(iseq)->local_table_size) {
+ unsigned int start=0;
+
+ // local_table: [p1, p2, p3, l1, l2, l3]
+ // arguments: [p3, l1, l2] -> 2
+ for (start = 0;
+ argc + start <= ISEQ_BODY(iseq)->local_table_size;
+ start++) {
+ const LINK_ELEMENT *elem = FIRST_ELEMENT(args);
+
+ for (unsigned int i=start; i-start<argc; i++) {
+ if (IS_INSN(elem) &&
+ INSN_OF(elem) == BIN(getlocal)) {
+ int local_index = FIX2INT(OPERAND_AT(elem, 0));
+ int local_level = FIX2INT(OPERAND_AT(elem, 1));
+
+ if (local_level == 0) {
+ unsigned int index = ISEQ_BODY(iseq)->local_table_size - (local_index - VM_ENV_DATA_SIZE + 1);
+ if (0) { // for debug
+ fprintf(stderr, "lvar:%s (%d), id:%s (%d) local_index:%d, local_size:%d\n",
+ rb_id2name(ISEQ_BODY(iseq)->local_table[i]), i,
+ rb_id2name(ISEQ_BODY(iseq)->local_table[index]), index,
+ local_index, (int)ISEQ_BODY(iseq)->local_table_size);
+ }
+ if (i == index) {
+ elem = elem->next;
+ continue; /* for */
+ }
+ else {
+ goto next;
+ }
+ }
+ else {
+ goto fail; // level != 0 is unsupported
+ }
+ }
+ else {
+ goto fail; // insn is not a getlocal
+ }
+ }
+ goto success;
+ next:;
+ }
+ fail:
+ return FALSE;
+ success:
+ *pstart_index = start;
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+}
+
+static int
+compile_builtin_arg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, const NODE *line_node, int popped)
+{
+ if (!node) goto no_arg;
+ if (!nd_type_p(node, NODE_LIST)) goto bad_arg;
+ if (node->nd_next) goto too_many_arg;
+ node = node->nd_head;
+ if (!node) goto no_arg;
+ if (!nd_type_p(node, NODE_LIT)) goto bad_arg;
+ VALUE name = node->nd_lit;
+ if (!SYMBOL_P(name)) goto non_symbol_arg;
+ if (!popped) {
+ compile_lvar(iseq, ret, line_node, SYM2ID(name));
+ }
+ return COMPILE_OK;
+ no_arg:
+ COMPILE_ERROR(ERROR_ARGS "arg!: no argument");
+ return COMPILE_NG;
+ too_many_arg:
+ COMPILE_ERROR(ERROR_ARGS "arg!: too many argument");
+ return COMPILE_NG;
+ non_symbol_arg:
+ COMPILE_ERROR(ERROR_ARGS "non symbol argument to arg!: %s",
+ rb_builtin_class_name(name));
+ return COMPILE_NG;
+ bad_arg:
+ UNKNOWN_NODE("arg!", node, COMPILE_NG);
+}
+
+static NODE *
+mandatory_node(const rb_iseq_t *iseq, const NODE *cond_node)
+{
+ const NODE *node = ISEQ_COMPILE_DATA(iseq)->root_node;
+ if (nd_type(node) == NODE_IF && node->nd_cond == cond_node) {
+ return node->nd_body;
+ }
+ else {
+ rb_bug("mandatory_node: can't find mandatory node");
+ }
+}
+
+static int
+compile_builtin_mandatory_only_method(rb_iseq_t *iseq, const NODE *node, const NODE *line_node)
+{
+ // arguments
+ struct rb_args_info args = {
+ .pre_args_num = ISEQ_BODY(iseq)->param.lead_num,
+ };
+ NODE args_node;
+ rb_node_init(&args_node, NODE_ARGS, 0, 0, (VALUE)&args);
+
+ // local table without non-mandatory parameters
+ const int skip_local_size = ISEQ_BODY(iseq)->param.size - ISEQ_BODY(iseq)->param.lead_num;
+ const int table_size = ISEQ_BODY(iseq)->local_table_size - skip_local_size;
+
+ VALUE idtmp = 0;
+ rb_ast_id_table_t *tbl = ALLOCV(idtmp, sizeof(rb_ast_id_table_t) + table_size * sizeof(ID));
+ tbl->size = table_size;
+
+ int i;
+
+ // lead parameters
+ for (i=0; i<ISEQ_BODY(iseq)->param.lead_num; i++) {
+ tbl->ids[i] = ISEQ_BODY(iseq)->local_table[i];
+ }
+ // local variables
+ for (; i<table_size; i++) {
+ tbl->ids[i] = ISEQ_BODY(iseq)->local_table[i + skip_local_size];
+ }
+
+ NODE scope_node;
+ rb_node_init(&scope_node, NODE_SCOPE, (VALUE)tbl, (VALUE)mandatory_node(iseq, node), (VALUE)&args_node);
+
+ rb_ast_body_t ast = {
+ .root = &scope_node,
+ .compile_option = 0,
+ .script_lines = ISEQ_BODY(iseq)->variable.script_lines,
+ };
+
+ int prev_inline_index = GET_VM()->builtin_inline_index;
+
+ ISEQ_BODY(iseq)->mandatory_only_iseq =
+ rb_iseq_new_with_opt(&ast, rb_iseq_base_label(iseq),
+ rb_iseq_path(iseq), rb_iseq_realpath(iseq),
+ nd_line(line_node), NULL, 0,
+ ISEQ_TYPE_METHOD, ISEQ_COMPILE_DATA(iseq)->option);
+
+ GET_VM()->builtin_inline_index = prev_inline_index;
+ ALLOCV_END(idtmp);
+ return COMPILE_OK;
+}
+
+static int
+compile_builtin_function_call(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, const NODE *line_node, int popped,
+ const rb_iseq_t *parent_block, LINK_ANCHOR *args, const char *builtin_func)
+{
+ NODE *args_node = node->nd_args;
+
+ if (parent_block != NULL) {
+ COMPILE_ERROR(iseq, nd_line(line_node), "should not call builtins here.");
+ return COMPILE_NG;
+ }
+ else {
+# define BUILTIN_INLINE_PREFIX "_bi"
+ char inline_func[DECIMAL_SIZE_OF_BITS(sizeof(int) * CHAR_BIT) + sizeof(BUILTIN_INLINE_PREFIX)];
+ bool cconst = false;
+ retry:;
+ const struct rb_builtin_function *bf = iseq_builtin_function_lookup(iseq, builtin_func);
+
+ if (bf == NULL) {
+ if (strcmp("cstmt!", builtin_func) == 0 ||
+ strcmp("cexpr!", builtin_func) == 0) {
+ // ok
+ }
+ else if (strcmp("cconst!", builtin_func) == 0) {
+ cconst = true;
+ }
+ else if (strcmp("cinit!", builtin_func) == 0) {
+ // ignore
+ GET_VM()->builtin_inline_index++;
+ return COMPILE_OK;
+ }
+ else if (strcmp("attr!", builtin_func) == 0) {
+ // There's only "inline" attribute for now
+ ISEQ_BODY(iseq)->builtin_inline_p = true;
+ return COMPILE_OK;
+ }
+ else if (strcmp("arg!", builtin_func) == 0) {
+ return compile_builtin_arg(iseq, ret, args_node, line_node, popped);
+ }
+ else if (strcmp("mandatory_only?", builtin_func) == 0) {
+ if (popped) {
+ rb_bug("mandatory_only? should be in if condition");
+ }
+ else if (!LIST_INSN_SIZE_ZERO(ret)) {
+ rb_bug("mandatory_only? should be put on top");
+ }
+
+ ADD_INSN1(ret, line_node, putobject, Qfalse);
+ return compile_builtin_mandatory_only_method(iseq, node, line_node);
+ }
+ else if (1) {
+ rb_bug("can't find builtin function:%s", builtin_func);
+ }
+ else {
+ COMPILE_ERROR(ERROR_ARGS "can't find builtin function:%s", builtin_func);
+ return COMPILE_NG;
+ }
+
+ if (GET_VM()->builtin_inline_index == INT_MAX) {
+ rb_bug("builtin inline function index overflow:%s", builtin_func);
+ }
+ int inline_index = GET_VM()->builtin_inline_index++;
+ snprintf(inline_func, sizeof(inline_func), BUILTIN_INLINE_PREFIX "%d", inline_index);
+ builtin_func = inline_func;
+ args_node = NULL;
+ goto retry;
+ }
+
+ if (cconst) {
+ typedef VALUE(*builtin_func0)(void *, VALUE);
+ VALUE const_val = (*(builtin_func0)bf->func_ptr)(NULL, Qnil);
+ ADD_INSN1(ret, line_node, putobject, const_val);
+ return COMPILE_OK;
+ }
+
+ // fprintf(stderr, "func_name:%s -> %p\n", builtin_func, bf->func_ptr);
+
+ unsigned int flag = 0;
+ struct rb_callinfo_kwarg *keywords = NULL;
+ VALUE argc = setup_args(iseq, args, args_node, &flag, &keywords);
+
+ if (FIX2INT(argc) != bf->argc) {
+ COMPILE_ERROR(ERROR_ARGS "argc is not match for builtin function:%s (expect %d but %d)",
+ builtin_func, bf->argc, FIX2INT(argc));
+ return COMPILE_NG;
+ }
+
+ unsigned int start_index;
+ if (delegate_call_p(iseq, FIX2INT(argc), args, &start_index)) {
+ ADD_INSN2(ret, line_node, opt_invokebuiltin_delegate, bf, INT2FIX(start_index));
+ }
+ else {
+ ADD_SEQ(ret, args);
+ ADD_INSN1(ret, line_node, invokebuiltin, bf);
+ }
+
+ if (popped) ADD_INSN(ret, line_node, pop);
+ return COMPILE_OK;
+ }
+}
+
+static int
+compile_call(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, const enum node_type type, const NODE *const line_node, int popped, bool assume_receiver)
+{
+ /* call: obj.method(...)
+ * fcall: func(...)
+ * vcall: func
+ */
+ DECL_ANCHOR(recv);
+ DECL_ANCHOR(args);
+ ID mid = node->nd_mid;
+ VALUE argc;
+ unsigned int flag = 0;
+ struct rb_callinfo_kwarg *keywords = NULL;
+ const rb_iseq_t *parent_block = ISEQ_COMPILE_DATA(iseq)->current_block;
+ LABEL *else_label = NULL;
+ VALUE branches = Qfalse;
+
+ ISEQ_COMPILE_DATA(iseq)->current_block = NULL;
+
+ INIT_ANCHOR(recv);
+ INIT_ANCHOR(args);
+#if OPT_SUPPORT_JOKE
+ if (nd_type_p(node, NODE_VCALL)) {
+ ID id_bitblt;
+ ID id_answer;
+
+ CONST_ID(id_bitblt, "bitblt");
+ CONST_ID(id_answer, "the_answer_to_life_the_universe_and_everything");
+
+ if (mid == id_bitblt) {
+ ADD_INSN(ret, line_node, bitblt);
+ return COMPILE_OK;
+ }
+ else if (mid == id_answer) {
+ ADD_INSN(ret, line_node, answer);
+ return COMPILE_OK;
+ }
+ }
+ /* only joke */
+ {
+ ID goto_id;
+ ID label_id;
+
+ CONST_ID(goto_id, "__goto__");
+ CONST_ID(label_id, "__label__");
+
+ if (nd_type_p(node, NODE_FCALL) &&
+ (mid == goto_id || mid == label_id)) {
+ LABEL *label;
+ st_data_t data;
+ st_table *labels_table = ISEQ_COMPILE_DATA(iseq)->labels_table;
+ VALUE label_name;
+
+ if (!labels_table) {
+ labels_table = st_init_numtable();
+ ISEQ_COMPILE_DATA(iseq)->labels_table = labels_table;
+ }
+ if (nd_type_p(node->nd_args->nd_head, NODE_LIT) &&
+ SYMBOL_P(node->nd_args->nd_head->nd_lit)) {
+
+ label_name = node->nd_args->nd_head->nd_lit;
+ if (!st_lookup(labels_table, (st_data_t)label_name, &data)) {
+ label = NEW_LABEL(nd_line(line_node));
+ label->position = nd_line(line_node);
+ st_insert(labels_table, (st_data_t)label_name, (st_data_t)label);
+ }
+ else {
+ label = (LABEL *)data;
+ }
+ }
+ else {
+ COMPILE_ERROR(ERROR_ARGS "invalid goto/label format");
+ return COMPILE_NG;
+ }
+
+ if (mid == goto_id) {
+ ADD_INSNL(ret, line_node, jump, label);
+ }
+ else {
+ ADD_LABEL(ret, label);
+ }
+ return COMPILE_OK;
+ }
+ }
+#endif
+
+ const char *builtin_func;
+ if (UNLIKELY(iseq_has_builtin_function_table(iseq)) &&
+ (builtin_func = iseq_builtin_function_name(type, node->nd_recv, mid)) != NULL) {
+ return compile_builtin_function_call(iseq, ret, node, line_node, popped, parent_block, args, builtin_func);
+ }
+
+ /* receiver */
+ if (!assume_receiver) {
+ if (type == NODE_CALL || type == NODE_OPCALL || type == NODE_QCALL) {
+ int idx, level;
+
+ if (mid == idCall &&
+ nd_type_p(node->nd_recv, NODE_LVAR) &&
+ iseq_block_param_id_p(iseq, node->nd_recv->nd_vid, &idx, &level)) {
+ ADD_INSN2(recv, node->nd_recv, getblockparamproxy, INT2FIX(idx + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
+ }
+ else if (private_recv_p(node)) {
+ ADD_INSN(recv, node, putself);
+ flag |= VM_CALL_FCALL;
+ }
+ else {
+ CHECK(COMPILE(recv, "recv", node->nd_recv));
+ }
+
+ if (type == NODE_QCALL) {
+ else_label = qcall_branch_start(iseq, recv, &branches, node, line_node);
+ }
+ }
+ else if (type == NODE_FCALL || type == NODE_VCALL) {
+ ADD_CALL_RECEIVER(recv, line_node);
+ }
+ }
+
+ /* args */
+ if (type != NODE_VCALL) {
+ argc = setup_args(iseq, args, node->nd_args, &flag, &keywords);
+ CHECK(!NIL_P(argc));
+ }
+ else {
+ argc = INT2FIX(0);
+ }
+
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, args);
+
+ debugp_param("call args argc", argc);
+ debugp_param("call method", ID2SYM(mid));
+
+ switch ((int)type) {
+ case NODE_VCALL:
+ flag |= VM_CALL_VCALL;
+ /* VCALL is funcall, so fall through */
+ case NODE_FCALL:
+ flag |= VM_CALL_FCALL;
+ }
+
+ ADD_SEND_R(ret, line_node, mid, argc, parent_block, INT2FIX(flag), keywords);
+
+ qcall_branch_end(iseq, ret, else_label, branches, node, line_node);
+ if (popped) {
+ ADD_INSN(ret, line_node, pop);
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_op_asgn1(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const int line = nd_line(node);
+ VALUE argc;
+ unsigned int flag = 0;
+ int asgnflag = 0;
+ ID id = node->nd_mid;
+ int boff = 0;
+
+ /*
+ * a[x] (op)= y
+ *
+ * nil # nil
+ * eval a # nil a
+ * eval x # nil a x
+ * dupn 2 # nil a x a x
+ * send :[] # nil a x a[x]
+ * eval y # nil a x a[x] y
+ * send op # nil a x ret
+ * setn 3 # ret a x ret
+ * send []= # ret ?
+ * pop # ret
+ */
+
+ /*
+ * nd_recv[nd_args->nd_body] (nd_mid)= nd_args->nd_head;
+ * NODE_OP_ASGN nd_recv
+ * nd_args->nd_head
+ * nd_args->nd_body
+ * nd_mid
+ */
+
+ if (!popped) {
+ ADD_INSN(ret, node, putnil);
+ }
+ asgnflag = COMPILE_RECV(ret, "NODE_OP_ASGN1 recv", node);
+ CHECK(asgnflag != -1);
+ switch (nd_type(node->nd_args->nd_head)) {
+ case NODE_ZLIST:
+ argc = INT2FIX(0);
+ break;
+ case NODE_BLOCK_PASS:
+ boff = 1;
+ /* fall through */
+ default:
+ argc = setup_args(iseq, ret, node->nd_args->nd_head, &flag, NULL);
+ CHECK(!NIL_P(argc));
+ }
+ ADD_INSN1(ret, node, dupn, FIXNUM_INC(argc, 1 + boff));
+ flag |= asgnflag;
+ ADD_SEND_WITH_FLAG(ret, node, idAREF, argc, INT2FIX(flag));
+
+ if (id == idOROP || id == idANDOP) {
+ /* a[x] ||= y or a[x] &&= y
+
+ unless/if a[x]
+ a[x]= y
+ else
+ nil
+ end
+ */
+ LABEL *label = NEW_LABEL(line);
+ LABEL *lfin = NEW_LABEL(line);
+
+ ADD_INSN(ret, node, dup);
+ if (id == idOROP) {
+ ADD_INSNL(ret, node, branchif, label);
+ }
+ else { /* idANDOP */
+ ADD_INSNL(ret, node, branchunless, label);
+ }
+ ADD_INSN(ret, node, pop);
+
+ CHECK(COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body));
+ if (!popped) {
+ ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 2+boff));
+ }
+ if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN1(ret, node, newarray, INT2FIX(1));
+ if (boff > 0) {
+ ADD_INSN1(ret, node, dupn, INT2FIX(3));
+ ADD_INSN(ret, node, swap);
+ ADD_INSN(ret, node, pop);
+ }
+ ADD_INSN(ret, node, concatarray);
+ if (boff > 0) {
+ ADD_INSN1(ret, node, setn, INT2FIX(3));
+ ADD_INSN(ret, node, pop);
+ ADD_INSN(ret, node, pop);
+ }
+ ADD_SEND_WITH_FLAG(ret, node, idASET, argc, INT2FIX(flag));
+ }
+ else {
+ if (boff > 0)
+ ADD_INSN(ret, node, swap);
+ ADD_SEND_WITH_FLAG(ret, node, idASET, FIXNUM_INC(argc, 1), INT2FIX(flag));
+ }
+ ADD_INSN(ret, node, pop);
+ ADD_INSNL(ret, node, jump, lfin);
+ ADD_LABEL(ret, label);
+ if (!popped) {
+ ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 2+boff));
+ }
+ ADD_INSN1(ret, node, adjuststack, FIXNUM_INC(argc, 2+boff));
+ ADD_LABEL(ret, lfin);
+ }
+ else {
+ CHECK(COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body));
+ ADD_SEND(ret, node, id, INT2FIX(1));
+ if (!popped) {
+ ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 2+boff));
+ }
+ if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN1(ret, node, newarray, INT2FIX(1));
+ if (boff > 0) {
+ ADD_INSN1(ret, node, dupn, INT2FIX(3));
+ ADD_INSN(ret, node, swap);
+ ADD_INSN(ret, node, pop);
+ }
+ ADD_INSN(ret, node, concatarray);
+ if (boff > 0) {
+ ADD_INSN1(ret, node, setn, INT2FIX(3));
+ ADD_INSN(ret, node, pop);
+ ADD_INSN(ret, node, pop);
+ }
+ ADD_SEND_WITH_FLAG(ret, node, idASET, argc, INT2FIX(flag));
+ }
+ else {
+ if (boff > 0)
+ ADD_INSN(ret, node, swap);
+ ADD_SEND_WITH_FLAG(ret, node, idASET, FIXNUM_INC(argc, 1), INT2FIX(flag));
+ }
+ ADD_INSN(ret, node, pop);
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_op_asgn2(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const int line = nd_line(node);
+ ID atype = node->nd_next->nd_mid;
+ ID vid = node->nd_next->nd_vid, aid = rb_id_attrset(vid);
+ int asgnflag;
+ LABEL *lfin = NEW_LABEL(line);
+ LABEL *lcfin = NEW_LABEL(line);
+ LABEL *lskip = 0;
+ /*
+ class C; attr_accessor :c; end
+ r = C.new
+ r.a &&= v # asgn2
+
+ eval r # r
+ dup # r r
+ eval r.a # r o
+
+ # or
+ dup # r o o
+ if lcfin # r o
+ pop # r
+ eval v # r v
+ swap # v r
+ topn 1 # v r v
+ send a= # v ?
+ jump lfin # v ?
+
+ lcfin: # r o
+ swap # o r
+
+ lfin: # o ?
+ pop # o
+
+ # or (popped)
+ if lcfin # r
+ eval v # r v
+ send a= # ?
+ jump lfin # ?
+
+ lcfin: # r
+
+ lfin: # ?
+ pop #
+
+ # and
+ dup # r o o
+ unless lcfin
+ pop # r
+ eval v # r v
+ swap # v r
+ topn 1 # v r v
+ send a= # v ?
+ jump lfin # v ?
+
+ # others
+ eval v # r o v
+ send ?? # r w
+ send a= # w
+
+ */
+
+ asgnflag = COMPILE_RECV(ret, "NODE_OP_ASGN2#recv", node);
+ CHECK(asgnflag != -1);
+ if (node->nd_next->nd_aid) {
+ lskip = NEW_LABEL(line);
+ ADD_INSN(ret, node, dup);
+ ADD_INSNL(ret, node, branchnil, lskip);
+ }
+ ADD_INSN(ret, node, dup);
+ ADD_SEND_WITH_FLAG(ret, node, vid, INT2FIX(0), INT2FIX(asgnflag));
+
+ if (atype == idOROP || atype == idANDOP) {
+ if (!popped) {
+ ADD_INSN(ret, node, dup);
+ }
+ if (atype == idOROP) {
+ ADD_INSNL(ret, node, branchif, lcfin);
+ }
+ else { /* idANDOP */
+ ADD_INSNL(ret, node, branchunless, lcfin);
+ }
+ if (!popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ CHECK(COMPILE(ret, "NODE_OP_ASGN2 val", node->nd_value));
+ if (!popped) {
+ ADD_INSN(ret, node, swap);
+ ADD_INSN1(ret, node, topn, INT2FIX(1));
+ }
+ ADD_SEND_WITH_FLAG(ret, node, aid, INT2FIX(1), INT2FIX(asgnflag));
+ ADD_INSNL(ret, node, jump, lfin);
+
+ ADD_LABEL(ret, lcfin);
+ if (!popped) {
+ ADD_INSN(ret, node, swap);
+ }
+
+ ADD_LABEL(ret, lfin);
+ }
+ else {
+ CHECK(COMPILE(ret, "NODE_OP_ASGN2 val", node->nd_value));
+ ADD_SEND(ret, node, atype, INT2FIX(1));
+ if (!popped) {
+ ADD_INSN(ret, node, swap);
+ ADD_INSN1(ret, node, topn, INT2FIX(1));
+ }
+ ADD_SEND_WITH_FLAG(ret, node, aid, INT2FIX(1), INT2FIX(asgnflag));
+ }
+ if (lskip && popped) {
+ ADD_LABEL(ret, lskip);
+ }
+ ADD_INSN(ret, node, pop);
+ if (lskip && !popped) {
+ ADD_LABEL(ret, lskip);
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_op_cdecl(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const int line = nd_line(node);
+ LABEL *lfin = 0;
+ LABEL *lassign = 0;
+ ID mid;
+
+ switch (nd_type(node->nd_head)) {
+ case NODE_COLON3:
+ ADD_INSN1(ret, node, putobject, rb_cObject);
+ break;
+ case NODE_COLON2:
+ CHECK(COMPILE(ret, "NODE_OP_CDECL/colon2#nd_head", node->nd_head->nd_head));
+ break;
+ default:
+ COMPILE_ERROR(ERROR_ARGS "%s: invalid node in NODE_OP_CDECL",
+ ruby_node_name(nd_type(node->nd_head)));
+ return COMPILE_NG;
+ }
+ mid = node->nd_head->nd_mid;
+ /* cref */
+ if (node->nd_aid == idOROP) {
+ lassign = NEW_LABEL(line);
+ ADD_INSN(ret, node, dup); /* cref cref */
+ ADD_INSN3(ret, node, defined, INT2FIX(DEFINED_CONST_FROM),
+ ID2SYM(mid), Qtrue); /* cref bool */
+ ADD_INSNL(ret, node, branchunless, lassign); /* cref */
+ }
+ ADD_INSN(ret, node, dup); /* cref cref */
+ ADD_INSN1(ret, node, putobject, Qtrue);
+ ADD_INSN1(ret, node, getconstant, ID2SYM(mid)); /* cref obj */
+
+ if (node->nd_aid == idOROP || node->nd_aid == idANDOP) {
+ lfin = NEW_LABEL(line);
+ if (!popped) ADD_INSN(ret, node, dup); /* cref [obj] obj */
+ if (node->nd_aid == idOROP)
+ ADD_INSNL(ret, node, branchif, lfin);
+ else /* idANDOP */
+ ADD_INSNL(ret, node, branchunless, lfin);
+ /* cref [obj] */
+ if (!popped) ADD_INSN(ret, node, pop); /* cref */
+ if (lassign) ADD_LABEL(ret, lassign);
+ CHECK(COMPILE(ret, "NODE_OP_CDECL#nd_value", node->nd_value));
+ /* cref value */
+ if (popped)
+ ADD_INSN1(ret, node, topn, INT2FIX(1)); /* cref value cref */
+ else {
+ ADD_INSN1(ret, node, dupn, INT2FIX(2)); /* cref value cref value */
+ ADD_INSN(ret, node, swap); /* cref value value cref */
+ }
+ ADD_INSN1(ret, node, setconstant, ID2SYM(mid)); /* cref [value] */
+ ADD_LABEL(ret, lfin); /* cref [value] */
+ if (!popped) ADD_INSN(ret, node, swap); /* [value] cref */
+ ADD_INSN(ret, node, pop); /* [value] */
+ }
+ else {
+ CHECK(COMPILE(ret, "NODE_OP_CDECL#nd_value", node->nd_value));
+ /* cref obj value */
+ ADD_CALL(ret, node, node->nd_aid, INT2FIX(1));
+ /* cref value */
+ ADD_INSN(ret, node, swap); /* value cref */
+ if (!popped) {
+ ADD_INSN1(ret, node, topn, INT2FIX(1)); /* value cref value */
+ ADD_INSN(ret, node, swap); /* value value cref */
+ }
+ ADD_INSN1(ret, node, setconstant, ID2SYM(mid));
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_op_log(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped, const enum node_type type)
+{
+ const int line = nd_line(node);
+ LABEL *lfin = NEW_LABEL(line);
+ LABEL *lassign;
+
+ if (type == NODE_OP_ASGN_OR && !nd_type_p(node->nd_head, NODE_IVAR)) {
+ LABEL *lfinish[2];
+ lfinish[0] = lfin;
+ lfinish[1] = 0;
+ defined_expr(iseq, ret, node->nd_head, lfinish, Qfalse);
+ lassign = lfinish[1];
+ if (!lassign) {
+ lassign = NEW_LABEL(line);
+ }
+ ADD_INSNL(ret, node, branchunless, lassign);
+ }
+ else {
+ lassign = NEW_LABEL(line);
+ }
+
+ CHECK(COMPILE(ret, "NODE_OP_ASGN_AND/OR#nd_head", node->nd_head));
+
+ if (!popped) {
+ ADD_INSN(ret, node, dup);
+ }
+
+ if (type == NODE_OP_ASGN_AND) {
+ ADD_INSNL(ret, node, branchunless, lfin);
+ }
+ else {
+ ADD_INSNL(ret, node, branchif, lfin);
+ }
+
+ if (!popped) {
+ ADD_INSN(ret, node, pop);
+ }
+
+ ADD_LABEL(ret, lassign);
+ CHECK(COMPILE_(ret, "NODE_OP_ASGN_AND/OR#nd_value", node->nd_value, popped));
+ ADD_LABEL(ret, lfin);
+ return COMPILE_OK;
+}
+
+static int
+compile_super(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped, const enum node_type type)
+{
+ struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+ DECL_ANCHOR(args);
+ int argc;
+ unsigned int flag = 0;
+ struct rb_callinfo_kwarg *keywords = NULL;
+ const rb_iseq_t *parent_block = ISEQ_COMPILE_DATA(iseq)->current_block;
+
+ INIT_ANCHOR(args);
+ ISEQ_COMPILE_DATA(iseq)->current_block = NULL;
+ if (type == NODE_SUPER) {
+ VALUE vargc = setup_args(iseq, args, node->nd_args, &flag, &keywords);
+ CHECK(!NIL_P(vargc));
+ argc = FIX2INT(vargc);
+ }
+ else {
+ /* NODE_ZSUPER */
+ int i;
+ const rb_iseq_t *liseq = body->local_iseq;
+ const struct rb_iseq_constant_body *const local_body = ISEQ_BODY(liseq);
+ const struct rb_iseq_param_keyword *const local_kwd = local_body->param.keyword;
+ int lvar_level = get_lvar_level(iseq);
+
+ argc = local_body->param.lead_num;
+
+ /* normal arguments */
+ for (i = 0; i < local_body->param.lead_num; i++) {
+ int idx = local_body->local_table_size - i;
+ ADD_GETLOCAL(args, node, idx, lvar_level);
+ }
+
+ if (local_body->param.flags.has_opt) {
+ /* optional arguments */
+ int j;
+ for (j = 0; j < local_body->param.opt_num; j++) {
+ int idx = local_body->local_table_size - (i + j);
+ ADD_GETLOCAL(args, node, idx, lvar_level);
+ }
+ i += j;
+ argc = i;
+ }
+ if (local_body->param.flags.has_rest) {
+ /* rest argument */
+ int idx = local_body->local_table_size - local_body->param.rest_start;
+ ADD_GETLOCAL(args, node, idx, lvar_level);
+ ADD_INSN1(args, node, splatarray, Qfalse);
+
+ argc = local_body->param.rest_start + 1;
+ flag |= VM_CALL_ARGS_SPLAT;
+ }
+ if (local_body->param.flags.has_post) {
+ /* post arguments */
+ int post_len = local_body->param.post_num;
+ int post_start = local_body->param.post_start;
+
+ if (local_body->param.flags.has_rest) {
+ int j;
+ for (j=0; j<post_len; j++) {
+ int idx = local_body->local_table_size - (post_start + j);
+ ADD_GETLOCAL(args, node, idx, lvar_level);
+ }
+ ADD_INSN1(args, node, newarray, INT2FIX(j));
+ ADD_INSN (args, node, concatarray);
+ /* argc is settled at above */
+ }
+ else {
+ int j;
+ for (j=0; j<post_len; j++) {
+ int idx = local_body->local_table_size - (post_start + j);
+ ADD_GETLOCAL(args, node, idx, lvar_level);
+ }
+ argc = post_len + post_start;
+ }
+ }
+
+ if (local_body->param.flags.has_kw) { /* TODO: support keywords */
+ int local_size = local_body->local_table_size;
+ argc++;
+
+ ADD_INSN1(args, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+
+ if (local_body->param.flags.has_kwrest) {
+ int idx = local_body->local_table_size - local_kwd->rest_start;
+ ADD_GETLOCAL(args, node, idx, lvar_level);
+ if (local_kwd->num > 0) {
+ ADD_SEND (args, node, rb_intern("dup"), INT2FIX(0));
+ flag |= VM_CALL_KW_SPLAT_MUT;
+ }
+ }
+ else {
+ ADD_INSN1(args, node, newhash, INT2FIX(0));
+ flag |= VM_CALL_KW_SPLAT_MUT;
+ }
+ for (i = 0; i < local_kwd->num; ++i) {
+ ID id = local_kwd->table[i];
+ int idx = local_size - get_local_var_idx(liseq, id);
+ ADD_INSN1(args, node, putobject, ID2SYM(id));
+ ADD_GETLOCAL(args, node, idx, lvar_level);
+ }
+ ADD_SEND(args, node, id_core_hash_merge_ptr, INT2FIX(i * 2 + 1));
+ if (local_body->param.flags.has_rest) {
+ ADD_INSN1(args, node, newarray, INT2FIX(1));
+ ADD_INSN (args, node, concatarray);
+ --argc;
+ }
+ flag |= VM_CALL_KW_SPLAT;
+ }
+ else if (local_body->param.flags.has_kwrest) {
+ int idx = local_body->local_table_size - local_kwd->rest_start;
+ ADD_GETLOCAL(args, node, idx, lvar_level);
+
+ if (local_body->param.flags.has_rest) {
+ ADD_INSN1(args, node, newarray, INT2FIX(1));
+ ADD_INSN (args, node, concatarray);
+ }
+ else {
+ argc++;
+ }
+ flag |= VM_CALL_KW_SPLAT;
+ }
+ }
+
+ flag |= VM_CALL_SUPER | VM_CALL_FCALL;
+ if (type == NODE_ZSUPER) flag |= VM_CALL_ZSUPER;
+ ADD_INSN(ret, node, putself);
+ ADD_SEQ(ret, args);
+ ADD_INSN2(ret, node, invokesuper,
+ new_callinfo(iseq, 0, argc, flag, keywords, parent_block != NULL),
+ parent_block);
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_yield(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ DECL_ANCHOR(args);
+ VALUE argc;
+ unsigned int flag = 0;
+ struct rb_callinfo_kwarg *keywords = NULL;
+
+ INIT_ANCHOR(args);
+
+ switch (ISEQ_BODY(ISEQ_BODY(iseq)->local_iseq)->type) {
+ case ISEQ_TYPE_TOP:
+ case ISEQ_TYPE_MAIN:
+ case ISEQ_TYPE_CLASS:
+ COMPILE_ERROR(ERROR_ARGS "Invalid yield");
+ return COMPILE_NG;
+ default: /* valid */;
+ }
+
+ if (node->nd_head) {
+ argc = setup_args(iseq, args, node->nd_head, &flag, &keywords);
+ CHECK(!NIL_P(argc));
+ }
+ else {
+ argc = INT2FIX(0);
+ }
+
+ ADD_SEQ(ret, args);
+ ADD_INSN1(ret, node, invokeblock, new_callinfo(iseq, 0, FIX2INT(argc), flag, keywords, FALSE));
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+
+ int level = 0;
+ const rb_iseq_t *tmp_iseq = iseq;
+ for (; tmp_iseq != ISEQ_BODY(iseq)->local_iseq; level++ ) {
+ tmp_iseq = ISEQ_BODY(tmp_iseq)->parent_iseq;
+ }
+ if (level > 0) access_outer_variables(iseq, level, rb_intern("yield"), true);
+
+ return COMPILE_OK;
+}
+
+static int
+compile_match(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped, const enum node_type type)
+{
+ DECL_ANCHOR(recv);
+ DECL_ANCHOR(val);
+
+ INIT_ANCHOR(recv);
+ INIT_ANCHOR(val);
+ switch ((int)type) {
+ case NODE_MATCH:
+ ADD_INSN1(recv, node, putobject, node->nd_lit);
+ ADD_INSN2(val, node, getspecial, INT2FIX(0),
+ INT2FIX(0));
+ break;
+ case NODE_MATCH2:
+ CHECK(COMPILE(recv, "receiver", node->nd_recv));
+ CHECK(COMPILE(val, "value", node->nd_value));
+ break;
+ case NODE_MATCH3:
+ CHECK(COMPILE(recv, "receiver", node->nd_value));
+ CHECK(COMPILE(val, "value", node->nd_recv));
+ break;
+ }
+
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, val);
+ ADD_SEND(ret, node, idEqTilde, INT2FIX(1));
+
+ if (node->nd_args) {
+ compile_named_capture_assign(iseq, ret, node->nd_args);
+ }
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_colon2(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ if (rb_is_const_id(node->nd_mid)) {
+ /* constant */
+ VALUE segments;
+ if (ISEQ_COMPILE_DATA(iseq)->option->inline_const_cache &&
+ (segments = collect_const_segments(iseq, node))) {
+ ISEQ_BODY(iseq)->ic_size++;
+ ADD_INSN1(ret, node, opt_getconstant_path, segments);
+ RB_OBJ_WRITTEN(iseq, Qundef, segments);
+ }
+ else {
+ /* constant */
+ DECL_ANCHOR(pref);
+ DECL_ANCHOR(body);
+
+ INIT_ANCHOR(pref);
+ INIT_ANCHOR(body);
+ CHECK(compile_const_prefix(iseq, node, pref, body));
+ if (LIST_INSN_SIZE_ZERO(pref)) {
+ ADD_INSN(ret, node, putnil);
+ ADD_SEQ(ret, body);
+ }
+ else {
+ ADD_SEQ(ret, pref);
+ ADD_SEQ(ret, body);
+ }
+ }
+ }
+ else {
+ /* function call */
+ ADD_CALL_RECEIVER(ret, node);
+ CHECK(COMPILE(ret, "colon2#nd_head", node->nd_head));
+ ADD_CALL(ret, node, node->nd_mid, INT2FIX(1));
+ }
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_colon3(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ debugi("colon3#nd_mid", node->nd_mid);
+
+ /* add cache insn */
+ if (ISEQ_COMPILE_DATA(iseq)->option->inline_const_cache) {
+ ISEQ_BODY(iseq)->ic_size++;
+ VALUE segments = rb_ary_new_from_args(2, ID2SYM(idNULL), ID2SYM(node->nd_mid));
+ ADD_INSN1(ret, node, opt_getconstant_path, segments);
+ RB_OBJ_WRITTEN(iseq, Qundef, segments);
+ }
+ else {
+ ADD_INSN1(ret, node, putobject, rb_cObject);
+ ADD_INSN1(ret, node, putobject, Qtrue);
+ ADD_INSN1(ret, node, getconstant, ID2SYM(node->nd_mid));
+ }
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_dots(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped, const int excl)
+{
+ VALUE flag = INT2FIX(excl);
+ const NODE *b = node->nd_beg;
+ const NODE *e = node->nd_end;
+
+ if (optimizable_range_item_p(b) && optimizable_range_item_p(e)) {
+ if (!popped) {
+ VALUE bv = nd_type_p(b, NODE_LIT) ? b->nd_lit : Qnil;
+ VALUE ev = nd_type_p(e, NODE_LIT) ? e->nd_lit : Qnil;
+ VALUE val = rb_range_new(bv, ev, excl);
+ ADD_INSN1(ret, node, putobject, val);
+ RB_OBJ_WRITTEN(iseq, Qundef, val);
+ }
+ }
+ else {
+ CHECK(COMPILE_(ret, "min", b, popped));
+ CHECK(COMPILE_(ret, "max", e, popped));
+ if (!popped) {
+ ADD_INSN1(ret, node, newrange, flag);
+ }
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_errinfo(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ if (!popped) {
+ if (ISEQ_BODY(iseq)->type == ISEQ_TYPE_RESCUE) {
+ ADD_GETLOCAL(ret, node, LVAR_ERRINFO, 0);
+ }
+ else {
+ const rb_iseq_t *ip = iseq;
+ int level = 0;
+ while (ip) {
+ if (ISEQ_BODY(ip)->type == ISEQ_TYPE_RESCUE) {
+ break;
+ }
+ ip = ISEQ_BODY(ip)->parent_iseq;
+ level++;
+ }
+ if (ip) {
+ ADD_GETLOCAL(ret, node, LVAR_ERRINFO, level);
+ }
+ else {
+ ADD_INSN(ret, node, putnil);
+ }
+ }
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_kw_arg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+ LABEL *end_label = NEW_LABEL(nd_line(node));
+ const NODE *default_value = node->nd_body->nd_value;
+
+ if (default_value == NODE_SPECIAL_REQUIRED_KEYWORD) {
+ /* required argument. do nothing */
+ COMPILE_ERROR(ERROR_ARGS "unreachable");
+ return COMPILE_NG;
+ }
+ else if (nd_type_p(default_value, NODE_LIT) ||
+ nd_type_p(default_value, NODE_NIL) ||
+ nd_type_p(default_value, NODE_TRUE) ||
+ nd_type_p(default_value, NODE_FALSE)) {
+ COMPILE_ERROR(ERROR_ARGS "unreachable");
+ return COMPILE_NG;
+ }
+ else {
+ /* if keywordcheck(_kw_bits, nth_keyword)
+ * kw = default_value
+ * end
+ */
+ int kw_bits_idx = body->local_table_size - body->param.keyword->bits_start;
+ int keyword_idx = body->param.keyword->num;
+
+ ADD_INSN2(ret, node, checkkeyword, INT2FIX(kw_bits_idx + VM_ENV_DATA_SIZE - 1), INT2FIX(keyword_idx));
+ ADD_INSNL(ret, node, branchif, end_label);
+ CHECK(COMPILE_POPPED(ret, "keyword default argument", node->nd_body));
+ ADD_LABEL(ret, end_label);
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_attrasgn(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ DECL_ANCHOR(recv);
+ DECL_ANCHOR(args);
+ unsigned int flag = 0;
+ ID mid = node->nd_mid;
+ VALUE argc;
+ LABEL *else_label = NULL;
+ VALUE branches = Qfalse;
+
+ /* optimization shortcut
+ * obj["literal"] = value -> opt_aset_with(obj, "literal", value)
+ */
+ if (!ISEQ_COMPILE_DATA(iseq)->in_masgn &&
+ mid == idASET && !private_recv_p(node) && node->nd_args &&
+ nd_type_p(node->nd_args, NODE_LIST) && node->nd_args->nd_alen == 2 &&
+ nd_type_p(node->nd_args->nd_head, NODE_STR) &&
+ ISEQ_COMPILE_DATA(iseq)->current_block == NULL &&
+ !ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal &&
+ ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction)
+ {
+ VALUE str = rb_fstring(node->nd_args->nd_head->nd_lit);
+ CHECK(COMPILE(ret, "recv", node->nd_recv));
+ CHECK(COMPILE(ret, "value", node->nd_args->nd_next->nd_head));
+ if (!popped) {
+ ADD_INSN(ret, node, swap);
+ ADD_INSN1(ret, node, topn, INT2FIX(1));
+ }
+ ADD_INSN2(ret, node, opt_aset_with, str,
+ new_callinfo(iseq, idASET, 2, 0, NULL, FALSE));
+ RB_OBJ_WRITTEN(iseq, Qundef, str);
+ ADD_INSN(ret, node, pop);
+ return COMPILE_OK;
+ }
+
+ INIT_ANCHOR(recv);
+ INIT_ANCHOR(args);
+ argc = setup_args(iseq, args, node->nd_args, &flag, NULL);
+ CHECK(!NIL_P(argc));
+
+ int asgnflag = COMPILE_RECV(recv, "recv", node);
+ CHECK(asgnflag != -1);
+ flag |= (unsigned int)asgnflag;
+
+ debugp_param("argc", argc);
+ debugp_param("nd_mid", ID2SYM(mid));
+
+ if (!rb_is_attrset_id(mid)) {
+ /* safe nav attr */
+ mid = rb_id_attrset(mid);
+ else_label = qcall_branch_start(iseq, recv, &branches, node, node);
+ }
+ if (!popped) {
+ ADD_INSN(ret, node, putnil);
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, args);
+
+ if (flag & VM_CALL_ARGS_BLOCKARG) {
+ ADD_INSN1(ret, node, topn, INT2FIX(1));
+ if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN1(ret, node, putobject, INT2FIX(-1));
+ ADD_SEND_WITH_FLAG(ret, node, idAREF, INT2FIX(1), INT2FIX(asgnflag));
+ }
+ ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 3));
+ ADD_INSN (ret, node, pop);
+ }
+ else if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN(ret, node, dup);
+ ADD_INSN1(ret, node, putobject, INT2FIX(-1));
+ ADD_SEND_WITH_FLAG(ret, node, idAREF, INT2FIX(1), INT2FIX(asgnflag));
+ ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 2));
+ ADD_INSN (ret, node, pop);
+ }
+ else {
+ ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 1));
+ }
+ }
+ else {
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, args);
+ }
+ ADD_SEND_WITH_FLAG(ret, node, mid, argc, INT2FIX(flag));
+ qcall_branch_end(iseq, ret, else_label, branches, node, node);
+ ADD_INSN(ret, node, pop);
+ return COMPILE_OK;
+}
+
+static int iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped);
+/**
+ compile each node
+
+ self: InstructionSequence
+ node: Ruby compiled node
+ popped: This node will be popped
+ */
+static int
+iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, const NODE *node, int popped)
+{
+ if (node == 0) {
+ if (!popped) {
+ int lineno = ISEQ_COMPILE_DATA(iseq)->last_line;
+ if (lineno == 0) lineno = FIX2INT(rb_iseq_first_lineno(iseq));
+ debugs("node: NODE_NIL(implicit)\n");
+ NODE dummy_line_node = generate_dummy_line_node(lineno, -1);
+ ADD_INSN(ret, &dummy_line_node, putnil);
+ }
+ return COMPILE_OK;
+ }
+ return iseq_compile_each0(iseq, ret, node, popped);
+}
+
+static int
+iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+{
+ const int line = (int)nd_line(node);
+ const enum node_type type = nd_type(node);
+ struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+
+ if (ISEQ_COMPILE_DATA(iseq)->last_line == line) {
+ /* ignore */
+ }
+ else {
+ if (node->flags & NODE_FL_NEWLINE) {
+ int event = RUBY_EVENT_LINE;
+ ISEQ_COMPILE_DATA(iseq)->last_line = line;
+ if (ISEQ_COVERAGE(iseq) && ISEQ_LINE_COVERAGE(iseq)) {
+ event |= RUBY_EVENT_COVERAGE_LINE;
+ }
+ ADD_TRACE(ret, event);
+ }
+ }
+
+ debug_node_start(node);
+#undef BEFORE_RETURN
+#define BEFORE_RETURN debug_node_end()
+
+ switch (type) {
+ case NODE_BLOCK:
+ CHECK(compile_block(iseq, ret, node, popped));
+ break;
+ case NODE_IF:
+ case NODE_UNLESS:
+ CHECK(compile_if(iseq, ret, node, popped, type));
+ break;
+ case NODE_CASE:
+ CHECK(compile_case(iseq, ret, node, popped));
+ break;
+ case NODE_CASE2:
+ CHECK(compile_case2(iseq, ret, node, popped));
+ break;
+ case NODE_CASE3:
+ CHECK(compile_case3(iseq, ret, node, popped));
+ break;
+ case NODE_WHILE:
+ case NODE_UNTIL:
+ CHECK(compile_loop(iseq, ret, node, popped, type));
+ break;
+ case NODE_FOR:
+ case NODE_ITER:
+ CHECK(compile_iter(iseq, ret, node, popped));
+ break;
+ case NODE_FOR_MASGN:
+ CHECK(compile_for_masgn(iseq, ret, node, popped));
+ break;
+ case NODE_BREAK:
+ CHECK(compile_break(iseq, ret, node, popped));
+ break;
+ case NODE_NEXT:
+ CHECK(compile_next(iseq, ret, node, popped));
+ break;
+ case NODE_REDO:
+ CHECK(compile_redo(iseq, ret, node, popped));
+ break;
+ case NODE_RETRY:
+ CHECK(compile_retry(iseq, ret, node, popped));
+ break;
+ case NODE_BEGIN:{
+ CHECK(COMPILE_(ret, "NODE_BEGIN", node->nd_body, popped));
+ break;
+ }
+ case NODE_RESCUE:
+ CHECK(compile_rescue(iseq, ret, node, popped));
+ break;
+ case NODE_RESBODY:
+ CHECK(compile_resbody(iseq, ret, node, popped));
+ break;
+ case NODE_ENSURE:
+ CHECK(compile_ensure(iseq, ret, node, popped));
+ break;
+
+ case NODE_AND:
+ case NODE_OR:{
+ LABEL *end_label = NEW_LABEL(line);
+ CHECK(COMPILE(ret, "nd_1st", node->nd_1st));
+ if (!popped) {
+ ADD_INSN(ret, node, dup);
+ }
+ if (type == NODE_AND) {
+ ADD_INSNL(ret, node, branchunless, end_label);
+ }
+ else {
+ ADD_INSNL(ret, node, branchif, end_label);
+ }
+ if (!popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ CHECK(COMPILE_(ret, "nd_2nd", node->nd_2nd, popped));
+ ADD_LABEL(ret, end_label);
+ break;
+ }
+
+ case NODE_MASGN:{
+ bool prev_in_masgn = ISEQ_COMPILE_DATA(iseq)->in_masgn;
+ ISEQ_COMPILE_DATA(iseq)->in_masgn = true;
+ compile_massign(iseq, ret, node, popped);
+ ISEQ_COMPILE_DATA(iseq)->in_masgn = prev_in_masgn;
+ break;
+ }
+
+ case NODE_LASGN:{
+ ID id = node->nd_vid;
+ int idx = ISEQ_BODY(body->local_iseq)->local_table_size - get_local_var_idx(iseq, id);
+
+ debugs("lvar: %s idx: %d\n", rb_id2name(id), idx);
+ CHECK(COMPILE(ret, "rvalue", node->nd_value));
+
+ if (!popped) {
+ ADD_INSN(ret, node, dup);
+ }
+ ADD_SETLOCAL(ret, node, idx, get_lvar_level(iseq));
+ break;
+ }
+ case NODE_DASGN: {
+ int idx, lv, ls;
+ ID id = node->nd_vid;
+ CHECK(COMPILE(ret, "dvalue", node->nd_value));
+ debugi("dassn id", rb_id2str(id) ? id : '*');
+
+ if (!popped) {
+ ADD_INSN(ret, node, dup);
+ }
+
+ idx = get_dyna_var_idx(iseq, id, &lv, &ls);
+
+ if (idx < 0) {
+ COMPILE_ERROR(ERROR_ARGS "NODE_DASGN: unknown id (%"PRIsVALUE")",
+ rb_id2str(id));
+ goto ng;
+ }
+ ADD_SETLOCAL(ret, node, ls - idx, lv);
+ break;
+ }
+ case NODE_GASGN:{
+ CHECK(COMPILE(ret, "lvalue", node->nd_value));
+
+ if (!popped) {
+ ADD_INSN(ret, node, dup);
+ }
+ ADD_INSN1(ret, node, setglobal, ID2SYM(node->nd_entry));
+ break;
+ }
+ case NODE_IASGN:{
+ CHECK(COMPILE(ret, "lvalue", node->nd_value));
+ if (!popped) {
+ ADD_INSN(ret, node, dup);
+ }
+ ADD_INSN2(ret, node, setinstancevariable,
+ ID2SYM(node->nd_vid),
+ get_ivar_ic_value(iseq,node->nd_vid));
+ break;
+ }
+ case NODE_CDECL:{
+ if (node->nd_vid) {
+ CHECK(COMPILE(ret, "lvalue", node->nd_value));
+
+ if (!popped) {
+ ADD_INSN(ret, node, dup);
+ }
+
+ ADD_INSN1(ret, node, putspecialobject,
+ INT2FIX(VM_SPECIAL_OBJECT_CONST_BASE));
+ ADD_INSN1(ret, node, setconstant, ID2SYM(node->nd_vid));
+ }
+ else {
+ compile_cpath(ret, iseq, node->nd_else);
+ CHECK(COMPILE(ret, "lvalue", node->nd_value));
+ ADD_INSN(ret, node, swap);
+
+ if (!popped) {
+ ADD_INSN1(ret, node, topn, INT2FIX(1));
+ ADD_INSN(ret, node, swap);
+ }
+
+ ADD_INSN1(ret, node, setconstant, ID2SYM(node->nd_else->nd_mid));
+ }
+ break;
+ }
+ case NODE_CVASGN:{
+ CHECK(COMPILE(ret, "cvasgn val", node->nd_value));
+ if (!popped) {
+ ADD_INSN(ret, node, dup);
+ }
+ ADD_INSN2(ret, node, setclassvariable,
+ ID2SYM(node->nd_vid),
+ get_cvar_ic_value(iseq,node->nd_vid));
+ break;
+ }
+ case NODE_OP_ASGN1:
+ CHECK(compile_op_asgn1(iseq, ret, node, popped));
+ break;
+ case NODE_OP_ASGN2:
+ CHECK(compile_op_asgn2(iseq, ret, node, popped));
+ break;
+ case NODE_OP_CDECL:
+ CHECK(compile_op_cdecl(iseq, ret, node, popped));
+ break;
+ case NODE_OP_ASGN_AND:
+ case NODE_OP_ASGN_OR:
+ CHECK(compile_op_log(iseq, ret, node, popped, type));
+ break;
+ case NODE_CALL: /* obj.foo */
+ case NODE_OPCALL: /* foo[] */
+ if (compile_call_precheck_freeze(iseq, ret, node, node, popped) == TRUE) {
+ break;
+ }
+ case NODE_QCALL: /* obj&.foo */
+ case NODE_FCALL: /* foo() */
+ case NODE_VCALL: /* foo (variable or call) */
+ if (compile_call(iseq, ret, node, type, node, popped, false) == COMPILE_NG) {
+ goto ng;
+ }
+ break;
+ case NODE_SUPER:
+ case NODE_ZSUPER:
+ CHECK(compile_super(iseq, ret, node, popped, type));
+ break;
+ case NODE_LIST:{
+ CHECK(compile_array(iseq, ret, node, popped) >= 0);
+ break;
+ }
+ case NODE_ZLIST:{
+ if (!popped) {
+ ADD_INSN1(ret, node, newarray, INT2FIX(0));
+ }
+ break;
+ }
+ case NODE_VALUES:{
+ const NODE *n = node;
+ if (popped) {
+ COMPILE_ERROR(ERROR_ARGS "NODE_VALUES: must not be popped");
+ }
+ while (n) {
+ CHECK(COMPILE(ret, "values item", n->nd_head));
+ n = n->nd_next;
+ }
+ ADD_INSN1(ret, node, newarray, INT2FIX(node->nd_alen));
+ break;
+ }
+ case NODE_HASH:
+ CHECK(compile_hash(iseq, ret, node, FALSE, popped) >= 0);
+ break;
+ case NODE_RETURN:
+ CHECK(compile_return(iseq, ret, node, popped));
+ break;
+ case NODE_YIELD:
+ CHECK(compile_yield(iseq, ret, node, popped));
+ break;
+ case NODE_LVAR:{
+ if (!popped) {
+ compile_lvar(iseq, ret, node, node->nd_vid);
+ }
+ break;
+ }
+ case NODE_DVAR:{
+ int lv, idx, ls;
+ debugi("nd_vid", node->nd_vid);
+ if (!popped) {
+ idx = get_dyna_var_idx(iseq, node->nd_vid, &lv, &ls);
+ if (idx < 0) {
+ COMPILE_ERROR(ERROR_ARGS "unknown dvar (%"PRIsVALUE")",
+ rb_id2str(node->nd_vid));
+ goto ng;
+ }
+ ADD_GETLOCAL(ret, node, ls - idx, lv);
+ }
+ break;
+ }
+ case NODE_GVAR:{
+ ADD_INSN1(ret, node, getglobal, ID2SYM(node->nd_entry));
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_IVAR:{
+ debugi("nd_vid", node->nd_vid);
+ if (!popped) {
+ ADD_INSN2(ret, node, getinstancevariable,
+ ID2SYM(node->nd_vid),
+ get_ivar_ic_value(iseq,node->nd_vid));
+ }
+ break;
+ }
+ case NODE_CONST:{
+ debugi("nd_vid", node->nd_vid);
+
+ if (ISEQ_COMPILE_DATA(iseq)->option->inline_const_cache) {
+ body->ic_size++;
+ VALUE segments = rb_ary_new_from_args(1, ID2SYM(node->nd_vid));
+ ADD_INSN1(ret, node, opt_getconstant_path, segments);
+ RB_OBJ_WRITTEN(iseq, Qundef, segments);
+ }
+ else {
+ ADD_INSN(ret, node, putnil);
+ ADD_INSN1(ret, node, putobject, Qtrue);
+ ADD_INSN1(ret, node, getconstant, ID2SYM(node->nd_vid));
+ }
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_CVAR:{
+ if (!popped) {
+ ADD_INSN2(ret, node, getclassvariable,
+ ID2SYM(node->nd_vid),
+ get_cvar_ic_value(iseq,node->nd_vid));
+ }
+ break;
+ }
+ case NODE_NTH_REF:{
+ if (!popped) {
+ if (!node->nd_nth) {
+ ADD_INSN(ret, node, putnil);
+ break;
+ }
+ ADD_INSN2(ret, node, getspecial, INT2FIX(1) /* '~' */,
+ INT2FIX(node->nd_nth << 1));
+ }
+ break;
+ }
+ case NODE_BACK_REF:{
+ if (!popped) {
+ ADD_INSN2(ret, node, getspecial, INT2FIX(1) /* '~' */,
+ INT2FIX(0x01 | (node->nd_nth << 1)));
+ }
+ break;
+ }
+ case NODE_MATCH:
+ case NODE_MATCH2:
+ case NODE_MATCH3:
+ CHECK(compile_match(iseq, ret, node, popped, type));
+ break;
+ case NODE_LIT:{
+ debugp_param("lit", node->nd_lit);
+ if (!popped) {
+ if (UNLIKELY(node->nd_lit == rb_mRubyVMFrozenCore)) {
+ ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE)); // [Bug #20569]
+ }
+ else {
+ ADD_INSN1(ret, node, putobject, node->nd_lit);
+ }
+ RB_OBJ_WRITTEN(iseq, Qundef, node->nd_lit);
+ }
+ break;
+ }
+ case NODE_STR:{
+ debugp_param("nd_lit", node->nd_lit);
+ if (!popped) {
+ VALUE lit = node->nd_lit;
+ if (!ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal) {
+ lit = rb_fstring(lit);
+ ADD_INSN1(ret, node, putstring, lit);
+ RB_OBJ_WRITTEN(iseq, Qundef, lit);
+ }
+ else {
+ if (ISEQ_COMPILE_DATA(iseq)->option->debug_frozen_string_literal || RTEST(ruby_debug)) {
+ VALUE debug_info = rb_ary_new_from_args(2, rb_iseq_path(iseq), INT2FIX(line));
+ lit = rb_str_dup(lit);
+ rb_ivar_set(lit, id_debug_created_info, rb_obj_freeze(debug_info));
+ lit = rb_str_freeze(lit);
+ }
+ else {
+ lit = rb_fstring(lit);
+ }
+ ADD_INSN1(ret, node, putobject, lit);
+ RB_OBJ_WRITTEN(iseq, Qundef, lit);
+ }
+ }
+ break;
+ }
+ case NODE_DSTR:{
+ compile_dstr(iseq, ret, node);
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_XSTR:{
+ ADD_CALL_RECEIVER(ret, node);
+ VALUE str = rb_fstring(node->nd_lit);
+ ADD_INSN1(ret, node, putobject, str);
+ RB_OBJ_WRITTEN(iseq, Qundef, str);
+ ADD_CALL(ret, node, idBackquote, INT2FIX(1));
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_DXSTR:{
+ ADD_CALL_RECEIVER(ret, node);
+ compile_dstr(iseq, ret, node);
+ ADD_CALL(ret, node, idBackquote, INT2FIX(1));
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_EVSTR:
+ CHECK(compile_evstr(iseq, ret, node->nd_body, popped));
+ break;
+ case NODE_DREGX:{
+ compile_dregx(iseq, ret, node);
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_ONCE:{
+ int ic_index = body->ise_size++;
+ const rb_iseq_t *block_iseq;
+ block_iseq = NEW_CHILD_ISEQ(node->nd_body, make_name_for_block(iseq), ISEQ_TYPE_PLAIN, line);
+
+ ADD_INSN2(ret, node, once, block_iseq, INT2FIX(ic_index));
+ RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)block_iseq);
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_ARGSCAT:{
+ if (popped) {
+ CHECK(COMPILE(ret, "argscat head", node->nd_head));
+ ADD_INSN1(ret, node, splatarray, Qfalse);
+ ADD_INSN(ret, node, pop);
+ CHECK(COMPILE(ret, "argscat body", node->nd_body));
+ ADD_INSN1(ret, node, splatarray, Qfalse);
+ ADD_INSN(ret, node, pop);
+ }
+ else {
+ CHECK(COMPILE(ret, "argscat head", node->nd_head));
+ CHECK(COMPILE(ret, "argscat body", node->nd_body));
+ ADD_INSN(ret, node, concatarray);
+ }
+ break;
+ }
+ case NODE_ARGSPUSH:{
+ if (popped) {
+ CHECK(COMPILE(ret, "argspush head", node->nd_head));
+ ADD_INSN1(ret, node, splatarray, Qfalse);
+ ADD_INSN(ret, node, pop);
+ CHECK(COMPILE_(ret, "argspush body", node->nd_body, popped));
+ }
+ else {
+ CHECK(COMPILE(ret, "argspush head", node->nd_head));
+ CHECK(compile_array_1(iseq, ret, node->nd_body));
+ ADD_INSN(ret, node, concatarray);
+ }
+ break;
+ }
+ case NODE_SPLAT:{
+ CHECK(COMPILE(ret, "splat", node->nd_head));
+ ADD_INSN1(ret, node, splatarray, Qtrue);
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_DEFN:{
+ ID mid = node->nd_mid;
+ const rb_iseq_t *method_iseq = NEW_ISEQ(node->nd_defn,
+ rb_id2str(mid),
+ ISEQ_TYPE_METHOD, line);
+
+ debugp_param("defn/iseq", rb_iseqw_new(method_iseq));
+ ADD_INSN2(ret, node, definemethod, ID2SYM(mid), method_iseq);
+ RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)method_iseq);
+
+ if (!popped) {
+ ADD_INSN1(ret, node, putobject, ID2SYM(mid));
+ }
+
+ break;
+ }
+ case NODE_DEFS:{
+ ID mid = node->nd_mid;
+ const rb_iseq_t * singleton_method_iseq = NEW_ISEQ(node->nd_defn,
+ rb_id2str(mid),
+ ISEQ_TYPE_METHOD, line);
+
+ debugp_param("defs/iseq", rb_iseqw_new(singleton_method_iseq));
+ CHECK(COMPILE(ret, "defs: recv", node->nd_recv));
+ ADD_INSN2(ret, node, definesmethod, ID2SYM(mid), singleton_method_iseq);
+ RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)singleton_method_iseq);
+
+ if (!popped) {
+ ADD_INSN1(ret, node, putobject, ID2SYM(mid));
+ }
+ break;
+ }
+ case NODE_ALIAS:{
+ ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
+ CHECK(COMPILE(ret, "alias arg1", node->nd_1st));
+ CHECK(COMPILE(ret, "alias arg2", node->nd_2nd));
+ ADD_SEND(ret, node, id_core_set_method_alias, INT2FIX(3));
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_VALIAS:{
+ ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, node, putobject, ID2SYM(node->nd_alias));
+ ADD_INSN1(ret, node, putobject, ID2SYM(node->nd_orig));
+ ADD_SEND(ret, node, id_core_set_variable_alias, INT2FIX(2));
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_UNDEF:{
+ ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
+ CHECK(COMPILE(ret, "undef arg", node->nd_undef));
+ ADD_SEND(ret, node, id_core_undef_method, INT2FIX(2));
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_CLASS:{
+ const rb_iseq_t *class_iseq = NEW_CHILD_ISEQ(node->nd_body,
+ rb_str_freeze(rb_sprintf("<class:%"PRIsVALUE">", rb_id2str(node->nd_cpath->nd_mid))),
+ ISEQ_TYPE_CLASS, line);
+ const int flags = VM_DEFINECLASS_TYPE_CLASS |
+ (node->nd_super ? VM_DEFINECLASS_FLAG_HAS_SUPERCLASS : 0) |
+ compile_cpath(ret, iseq, node->nd_cpath);
+
+ CHECK(COMPILE(ret, "super", node->nd_super));
+ ADD_INSN3(ret, node, defineclass, ID2SYM(node->nd_cpath->nd_mid), class_iseq, INT2FIX(flags));
+ RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)class_iseq);
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_MODULE:{
+ const rb_iseq_t *module_iseq = NEW_CHILD_ISEQ(node->nd_body,
+ rb_str_freeze(rb_sprintf("<module:%"PRIsVALUE">", rb_id2str(node->nd_cpath->nd_mid))),
+ ISEQ_TYPE_CLASS, line);
+ const int flags = VM_DEFINECLASS_TYPE_MODULE |
+ compile_cpath(ret, iseq, node->nd_cpath);
+
+ ADD_INSN (ret, node, putnil); /* dummy */
+ ADD_INSN3(ret, node, defineclass, ID2SYM(node->nd_cpath->nd_mid), module_iseq, INT2FIX(flags));
+ RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)module_iseq);
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_SCLASS:{
+ ID singletonclass;
+ const rb_iseq_t *singleton_class = NEW_ISEQ(node->nd_body, rb_fstring_lit("singleton class"),
+ ISEQ_TYPE_CLASS, line);
+
+ CHECK(COMPILE(ret, "sclass#recv", node->nd_recv));
+ ADD_INSN (ret, node, putnil);
+ CONST_ID(singletonclass, "singletonclass");
+ ADD_INSN3(ret, node, defineclass,
+ ID2SYM(singletonclass), singleton_class,
+ INT2FIX(VM_DEFINECLASS_TYPE_SINGLETON_CLASS));
+ RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)singleton_class);
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_COLON2:
+ CHECK(compile_colon2(iseq, ret, node, popped));
+ break;
+ case NODE_COLON3:
+ CHECK(compile_colon3(iseq, ret, node, popped));
+ break;
+ case NODE_DOT2:
+ CHECK(compile_dots(iseq, ret, node, popped, FALSE));
+ break;
+ case NODE_DOT3:
+ CHECK(compile_dots(iseq, ret, node, popped, TRUE));
+ break;
+ case NODE_FLIP2:
+ case NODE_FLIP3:{
+ LABEL *lend = NEW_LABEL(line);
+ LABEL *ltrue = NEW_LABEL(line);
+ LABEL *lfalse = NEW_LABEL(line);
+ CHECK(compile_flip_flop(iseq, ret, node, type == NODE_FLIP2,
+ ltrue, lfalse));
+ ADD_LABEL(ret, ltrue);
+ ADD_INSN1(ret, node, putobject, Qtrue);
+ ADD_INSNL(ret, node, jump, lend);
+ ADD_LABEL(ret, lfalse);
+ ADD_INSN1(ret, node, putobject, Qfalse);
+ ADD_LABEL(ret, lend);
+ break;
+ }
+ case NODE_SELF:{
+ if (!popped) {
+ ADD_INSN(ret, node, putself);
+ }
+ break;
+ }
+ case NODE_NIL:{
+ if (!popped) {
+ ADD_INSN(ret, node, putnil);
+ }
+ break;
+ }
+ case NODE_TRUE:{
+ if (!popped) {
+ ADD_INSN1(ret, node, putobject, Qtrue);
+ }
+ break;
+ }
+ case NODE_FALSE:{
+ if (!popped) {
+ ADD_INSN1(ret, node, putobject, Qfalse);
+ }
+ break;
+ }
+ case NODE_ERRINFO:
+ CHECK(compile_errinfo(iseq, ret, node, popped));
+ break;
+ case NODE_DEFINED:
+ if (!popped) {
+ CHECK(compile_defined_expr(iseq, ret, node, Qtrue));
+ }
+ break;
+ case NODE_POSTEXE:{
+ /* compiled to:
+ * ONCE{ rb_mRubyVMFrozenCore::core#set_postexe{ ... } }
+ */
+ int is_index = body->ise_size++;
+ struct rb_iseq_new_with_callback_callback_func *ifunc =
+ rb_iseq_new_with_callback_new_callback(build_postexe_iseq, node->nd_body);
+ const rb_iseq_t *once_iseq =
+ new_child_iseq_with_callback(iseq, ifunc,
+ rb_fstring(make_name_for_block(iseq)), iseq, ISEQ_TYPE_BLOCK, line);
+
+ ADD_INSN2(ret, node, once, once_iseq, INT2FIX(is_index));
+ RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)once_iseq);
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_KW_ARG:
+ CHECK(compile_kw_arg(iseq, ret, node, popped));
+ break;
+ case NODE_DSYM:{
+ compile_dstr(iseq, ret, node);
+ if (!popped) {
+ ADD_INSN(ret, node, intern);
+ }
+ else {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ case NODE_ATTRASGN:
+ CHECK(compile_attrasgn(iseq, ret, node, popped));
+ break;
+ case NODE_LAMBDA:{
+ /* compile same as lambda{...} */
+ const rb_iseq_t *block = NEW_CHILD_ISEQ(node->nd_body, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);
+ VALUE argc = INT2FIX(0);
+
+ ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_CALL_WITH_BLOCK(ret, node, idLambda, argc, block);
+ RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)block);
+
+ if (popped) {
+ ADD_INSN(ret, node, pop);
+ }
+ break;
+ }
+ default:
+ UNKNOWN_NODE("iseq_compile_each", node, COMPILE_NG);
+ ng:
+ debug_node_end();
+ return COMPILE_NG;
+ }
+
+ debug_node_end();
+ return COMPILE_OK;
+}
+
+/***************************/
+/* instruction information */
+/***************************/
+
+static int
+insn_data_length(INSN *iobj)
+{
+ return insn_len(iobj->insn_id);
+}
+
+static int
+calc_sp_depth(int depth, INSN *insn)
+{
+ return comptime_insn_stack_increase(depth, insn->insn_id, insn->operands);
+}
+
+static VALUE
+opobj_inspect(VALUE obj)
+{
+ if (!SPECIAL_CONST_P(obj) && !RBASIC_CLASS(obj)) {
+ switch (BUILTIN_TYPE(obj)) {
+ case T_STRING:
+ obj = rb_str_new_cstr(RSTRING_PTR(obj));
+ break;
+ case T_ARRAY:
+ obj = rb_ary_dup(obj);
+ break;
+ default:
+ break;
+ }
+ }
+ return rb_inspect(obj);
+}
+
+
+
+static VALUE
+insn_data_to_s_detail(INSN *iobj)
+{
+ VALUE str = rb_sprintf("%-20s ", insn_name(iobj->insn_id));
+
+ if (iobj->operands) {
+ const char *types = insn_op_types(iobj->insn_id);
+ int j;
+
+ for (j = 0; types[j]; j++) {
+ char type = types[j];
+
+ switch (type) {
+ case TS_OFFSET: /* label(destination position) */
+ {
+ LABEL *lobj = (LABEL *)OPERAND_AT(iobj, j);
+ rb_str_catf(str, LABEL_FORMAT, lobj->label_no);
+ break;
+ }
+ break;
+ case TS_ISEQ: /* iseq */
+ {
+ rb_iseq_t *iseq = (rb_iseq_t *)OPERAND_AT(iobj, j);
+ VALUE val = Qnil;
+ if (0 && iseq) { /* TODO: invalidate now */
+ val = (VALUE)iseq;
+ }
+ rb_str_concat(str, opobj_inspect(val));
+ }
+ break;
+ case TS_LINDEX:
+ case TS_NUM: /* ulong */
+ case TS_VALUE: /* VALUE */
+ {
+ VALUE v = OPERAND_AT(iobj, j);
+ if (!CLASS_OF(v))
+ rb_str_cat2(str, "<hidden>");
+ else {
+ rb_str_concat(str, opobj_inspect(v));
+ }
+ break;
+ }
+ case TS_ID: /* ID */
+ rb_str_concat(str, opobj_inspect(OPERAND_AT(iobj, j)));
+ break;
+ case TS_IC: /* inline cache */
+ rb_str_concat(str, opobj_inspect(OPERAND_AT(iobj, j)));
+ break;
+ case TS_IVC: /* inline ivar cache */
+ rb_str_catf(str, "<ivc:%d>", FIX2INT(OPERAND_AT(iobj, j)));
+ break;
+ case TS_ICVARC: /* inline cvar cache */
+ rb_str_catf(str, "<icvarc:%d>", FIX2INT(OPERAND_AT(iobj, j)));
+ break;
+ case TS_ISE: /* inline storage entry */
+ rb_str_catf(str, "<ise:%d>", FIX2INT(OPERAND_AT(iobj, j)));
+ break;
+ case TS_CALLDATA: /* we store these as call infos at compile time */
+ {
+ const struct rb_callinfo *ci = (struct rb_callinfo *)OPERAND_AT(iobj, j);
+ rb_str_cat2(str, "<calldata:");
+ if (vm_ci_mid(ci)) rb_str_catf(str, "%"PRIsVALUE, rb_id2str(vm_ci_mid(ci)));
+ rb_str_catf(str, ", %d>", vm_ci_argc(ci));
+ break;
+ }
+ case TS_CDHASH: /* case/when condition cache */
+ rb_str_cat2(str, "<ch>");
+ break;
+ case TS_FUNCPTR:
+ {
+ void *func = (void *)OPERAND_AT(iobj, j);
+#ifdef HAVE_DLADDR
+ Dl_info info;
+ if (dladdr(func, &info) && info.dli_sname) {
+ rb_str_cat2(str, info.dli_sname);
+ break;
+ }
+#endif
+ rb_str_catf(str, "<%p>", func);
+ }
+ break;
+ case TS_BUILTIN:
+ rb_str_cat2(str, "<TS_BUILTIN>");
+ break;
+ default:{
+ rb_raise(rb_eSyntaxError, "unknown operand type: %c", type);
+ }
+ }
+ if (types[j + 1]) {
+ rb_str_cat2(str, ", ");
+ }
+ }
+ }
+ return str;
+}
+
+static void
+dump_disasm_list(const LINK_ELEMENT *link)
+{
+ dump_disasm_list_with_cursor(link, NULL, NULL);
+}
+
+static void
+dump_disasm_list_with_cursor(const LINK_ELEMENT *link, const LINK_ELEMENT *curr, const LABEL *dest)
+{
+ int pos = 0;
+ INSN *iobj;
+ LABEL *lobj;
+ VALUE str;
+
+ printf("-- raw disasm--------\n");
+
+ while (link) {
+ if (curr) printf(curr == link ? "*" : " ");
+ switch (link->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ iobj = (INSN *)link;
+ str = insn_data_to_s_detail(iobj);
+ printf(" %04d %-65s(%4u)\n", pos, StringValueCStr(str), iobj->insn_info.line_no);
+ pos += insn_data_length(iobj);
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ lobj = (LABEL *)link;
+ printf(LABEL_FORMAT" [sp: %d]%s\n", lobj->label_no, lobj->sp,
+ dest == lobj ? " <---" : "");
+ break;
+ }
+ case ISEQ_ELEMENT_TRACE:
+ {
+ TRACE *trace = (TRACE *)link;
+ printf(" trace: %0x\n", trace->event);
+ break;
+ }
+ case ISEQ_ELEMENT_ADJUST:
+ {
+ ADJUST *adjust = (ADJUST *)link;
+ printf(" adjust: [label: %d]\n", adjust->label ? adjust->label->label_no : -1);
+ break;
+ }
+ default:
+ /* ignore */
+ rb_raise(rb_eSyntaxError, "dump_disasm_list error: %ld\n", FIX2LONG(link->type));
+ }
+ link = link->next;
+ }
+ printf("---------------------\n");
+ fflush(stdout);
+}
+
+const char *
+rb_insns_name(int i)
+{
+ return insn_name(i);
+}
+
+VALUE
+rb_insns_name_array(void)
+{
+ VALUE ary = rb_ary_new_capa(VM_INSTRUCTION_SIZE);
+ int i;
+ for (i = 0; i < VM_INSTRUCTION_SIZE; i++) {
+ rb_ary_push(ary, rb_fstring_cstr(insn_name(i)));
+ }
+ return rb_obj_freeze(ary);
+}
+
+static LABEL *
+register_label(rb_iseq_t *iseq, struct st_table *labels_table, VALUE obj)
+{
+ LABEL *label = 0;
+ st_data_t tmp;
+ obj = rb_to_symbol_type(obj);
+
+ if (st_lookup(labels_table, obj, &tmp) == 0) {
+ label = NEW_LABEL(0);
+ st_insert(labels_table, obj, (st_data_t)label);
+ }
+ else {
+ label = (LABEL *)tmp;
+ }
+ LABEL_REF(label);
+ return label;
+}
+
+static VALUE
+get_exception_sym2type(VALUE sym)
+{
+ static VALUE symRescue, symEnsure, symRetry;
+ static VALUE symBreak, symRedo, symNext;
+
+ if (symRescue == 0) {
+ symRescue = ID2SYM(rb_intern_const("rescue"));
+ symEnsure = ID2SYM(rb_intern_const("ensure"));
+ symRetry = ID2SYM(rb_intern_const("retry"));
+ symBreak = ID2SYM(rb_intern_const("break"));
+ symRedo = ID2SYM(rb_intern_const("redo"));
+ symNext = ID2SYM(rb_intern_const("next"));
+ }
+
+ if (sym == symRescue) return CATCH_TYPE_RESCUE;
+ if (sym == symEnsure) return CATCH_TYPE_ENSURE;
+ if (sym == symRetry) return CATCH_TYPE_RETRY;
+ if (sym == symBreak) return CATCH_TYPE_BREAK;
+ if (sym == symRedo) return CATCH_TYPE_REDO;
+ if (sym == symNext) return CATCH_TYPE_NEXT;
+ rb_raise(rb_eSyntaxError, "invalid exception symbol: %+"PRIsVALUE, sym);
+ return 0;
+}
+
+static int
+iseq_build_from_ary_exception(rb_iseq_t *iseq, struct st_table *labels_table,
+ VALUE exception)
+{
+ int i;
+
+ for (i=0; i<RARRAY_LEN(exception); i++) {
+ const rb_iseq_t *eiseq;
+ VALUE v, type;
+ LABEL *lstart, *lend, *lcont;
+ unsigned int sp;
+
+ v = rb_to_array_type(RARRAY_AREF(exception, i));
+ if (RARRAY_LEN(v) != 6) {
+ rb_raise(rb_eSyntaxError, "wrong exception entry");
+ }
+ type = get_exception_sym2type(RARRAY_AREF(v, 0));
+ if (NIL_P(RARRAY_AREF(v, 1))) {
+ eiseq = NULL;
+ }
+ else {
+ eiseq = rb_iseqw_to_iseq(rb_iseq_load(RARRAY_AREF(v, 1), (VALUE)iseq, Qnil));
+ }
+
+ lstart = register_label(iseq, labels_table, RARRAY_AREF(v, 2));
+ lend = register_label(iseq, labels_table, RARRAY_AREF(v, 3));
+ lcont = register_label(iseq, labels_table, RARRAY_AREF(v, 4));
+ sp = NUM2UINT(RARRAY_AREF(v, 5));
+
+ /* TODO: Dirty Hack! Fix me */
+ if (type == CATCH_TYPE_RESCUE ||
+ type == CATCH_TYPE_BREAK ||
+ type == CATCH_TYPE_NEXT) {
+ ++sp;
+ }
+
+ lcont->sp = sp;
+
+ ADD_CATCH_ENTRY(type, lstart, lend, eiseq, lcont);
+
+ RB_GC_GUARD(v);
+ }
+ return COMPILE_OK;
+}
+
+static struct st_table *
+insn_make_insn_table(void)
+{
+ struct st_table *table;
+ int i;
+ table = st_init_numtable_with_size(VM_INSTRUCTION_SIZE);
+
+ for (i=0; i<VM_INSTRUCTION_SIZE; i++) {
+ st_insert(table, ID2SYM(rb_intern_const(insn_name(i))), i);
+ }
+
+ return table;
+}
+
+static const rb_iseq_t *
+iseq_build_load_iseq(const rb_iseq_t *iseq, VALUE op)
+{
+ VALUE iseqw;
+ const rb_iseq_t *loaded_iseq;
+
+ if (RB_TYPE_P(op, T_ARRAY)) {
+ iseqw = rb_iseq_load(op, (VALUE)iseq, Qnil);
+ }
+ else if (CLASS_OF(op) == rb_cISeq) {
+ iseqw = op;
+ }
+ else {
+ rb_raise(rb_eSyntaxError, "ISEQ is required");
+ }
+
+ loaded_iseq = rb_iseqw_to_iseq(iseqw);
+ return loaded_iseq;
+}
+
+static VALUE
+iseq_build_callinfo_from_hash(rb_iseq_t *iseq, VALUE op)
+{
+ ID mid = 0;
+ int orig_argc = 0;
+ unsigned int flag = 0;
+ struct rb_callinfo_kwarg *kw_arg = 0;
+
+ if (!NIL_P(op)) {
+ VALUE vmid = rb_hash_aref(op, ID2SYM(rb_intern_const("mid")));
+ VALUE vflag = rb_hash_aref(op, ID2SYM(rb_intern_const("flag")));
+ VALUE vorig_argc = rb_hash_aref(op, ID2SYM(rb_intern_const("orig_argc")));
+ VALUE vkw_arg = rb_hash_aref(op, ID2SYM(rb_intern_const("kw_arg")));
+
+ if (!NIL_P(vmid)) mid = SYM2ID(vmid);
+ if (!NIL_P(vflag)) flag = NUM2UINT(vflag);
+ if (!NIL_P(vorig_argc)) orig_argc = FIX2INT(vorig_argc);
+
+ if (!NIL_P(vkw_arg)) {
+ int i;
+ int len = RARRAY_LENINT(vkw_arg);
+ size_t n = rb_callinfo_kwarg_bytes(len);
+
+ kw_arg = xmalloc(n);
+ kw_arg->keyword_len = len;
+ for (i = 0; i < len; i++) {
+ VALUE kw = RARRAY_AREF(vkw_arg, i);
+ SYM2ID(kw); /* make immortal */
+ kw_arg->keywords[i] = kw;
+ }
+ }
+ }
+
+ const struct rb_callinfo *ci = new_callinfo(iseq, mid, orig_argc, flag, kw_arg, (flag & VM_CALL_ARGS_SIMPLE) == 0);
+ RB_OBJ_WRITTEN(iseq, Qundef, ci);
+ return (VALUE)ci;
+}
+
+static rb_event_flag_t
+event_name_to_flag(VALUE sym)
+{
+#define CHECK_EVENT(ev) if (sym == ID2SYM(rb_intern_const(#ev))) return ev;
+ CHECK_EVENT(RUBY_EVENT_LINE);
+ CHECK_EVENT(RUBY_EVENT_CLASS);
+ CHECK_EVENT(RUBY_EVENT_END);
+ CHECK_EVENT(RUBY_EVENT_CALL);
+ CHECK_EVENT(RUBY_EVENT_RETURN);
+ CHECK_EVENT(RUBY_EVENT_B_CALL);
+ CHECK_EVENT(RUBY_EVENT_B_RETURN);
+#undef CHECK_EVENT
+ return RUBY_EVENT_NONE;
+}
+
+static int
+iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *const anchor,
+ VALUE body, VALUE node_ids, VALUE labels_wrapper)
+{
+ /* TODO: body should be frozen */
+ long i, len = RARRAY_LEN(body);
+ struct st_table *labels_table = DATA_PTR(labels_wrapper);
+ int j;
+ int line_no = 0, node_id = -1, insn_idx = 0;
+ int ret = COMPILE_OK;
+
+ /*
+ * index -> LABEL *label
+ */
+ static struct st_table *insn_table;
+
+ if (insn_table == 0) {
+ insn_table = insn_make_insn_table();
+ }
+
+ for (i=0; i<len; i++) {
+ VALUE obj = RARRAY_AREF(body, i);
+
+ if (SYMBOL_P(obj)) {
+ rb_event_flag_t event;
+ if ((event = event_name_to_flag(obj)) != RUBY_EVENT_NONE) {
+ ADD_TRACE(anchor, event);
+ }
+ else {
+ LABEL *label = register_label(iseq, labels_table, obj);
+ ADD_LABEL(anchor, label);
+ }
+ }
+ else if (FIXNUM_P(obj)) {
+ line_no = NUM2INT(obj);
+ }
+ else if (RB_TYPE_P(obj, T_ARRAY)) {
+ VALUE *argv = 0;
+ int argc = RARRAY_LENINT(obj) - 1;
+ st_data_t insn_id;
+ VALUE insn;
+
+ if (node_ids) {
+ node_id = NUM2INT(rb_ary_entry(node_ids, insn_idx++));
+ }
+
+ insn = (argc < 0) ? Qnil : RARRAY_AREF(obj, 0);
+ if (st_lookup(insn_table, (st_data_t)insn, &insn_id) == 0) {
+ /* TODO: exception */
+ COMPILE_ERROR(iseq, line_no,
+ "unknown instruction: %+"PRIsVALUE, insn);
+ ret = COMPILE_NG;
+ break;
+ }
+
+ if (argc != insn_len((VALUE)insn_id)-1) {
+ COMPILE_ERROR(iseq, line_no,
+ "operand size mismatch");
+ ret = COMPILE_NG;
+ break;
+ }
+
+ if (argc > 0) {
+ argv = compile_data_calloc2(iseq, sizeof(VALUE), argc);
+
+ // add element before operand setup to make GC root
+ NODE dummy_line_node = generate_dummy_line_node(line_no, node_id);
+ ADD_ELEM(anchor,
+ (LINK_ELEMENT*)new_insn_core(iseq, &dummy_line_node,
+ (enum ruby_vminsn_type)insn_id, argc, argv));
+
+ for (j=0; j<argc; j++) {
+ VALUE op = rb_ary_entry(obj, j+1);
+ switch (insn_op_type((VALUE)insn_id, j)) {
+ case TS_OFFSET: {
+ LABEL *label = register_label(iseq, labels_table, op);
+ argv[j] = (VALUE)label;
+ break;
+ }
+ case TS_LINDEX:
+ case TS_NUM:
+ (void)NUM2INT(op);
+ argv[j] = op;
+ break;
+ case TS_VALUE:
+ argv[j] = op;
+ RB_OBJ_WRITTEN(iseq, Qundef, op);
+ break;
+ case TS_ISEQ:
+ {
+ if (op != Qnil) {
+ VALUE v = (VALUE)iseq_build_load_iseq(iseq, op);
+ argv[j] = v;
+ RB_OBJ_WRITTEN(iseq, Qundef, v);
+ }
+ else {
+ argv[j] = 0;
+ }
+ }
+ break;
+ case TS_ISE:
+ argv[j] = op;
+ if (NUM2UINT(op) >= ISEQ_BODY(iseq)->ise_size) {
+ ISEQ_BODY(iseq)->ise_size = NUM2INT(op) + 1;
+ }
+ break;
+ case TS_IC:
+ {
+ VALUE segments = rb_ary_new();
+ op = rb_to_array_type(op);
+
+ for (int i = 0; i < RARRAY_LEN(op); i++) {
+ VALUE sym = RARRAY_AREF(op, i);
+ sym = rb_to_symbol_type(sym);
+ rb_ary_push(segments, sym);
+ }
+
+ RB_GC_GUARD(op);
+ argv[j] = segments;
+ RB_OBJ_WRITTEN(iseq, Qundef, segments);
+ ISEQ_BODY(iseq)->ic_size++;
+ }
+ break;
+ case TS_IVC: /* inline ivar cache */
+ argv[j] = op;
+ if (NUM2UINT(op) >= ISEQ_BODY(iseq)->ivc_size) {
+ ISEQ_BODY(iseq)->ivc_size = NUM2INT(op) + 1;
+ }
+ break;
+ case TS_ICVARC: /* inline cvar cache */
+ argv[j] = op;
+ if (NUM2UINT(op) >= ISEQ_BODY(iseq)->icvarc_size) {
+ ISEQ_BODY(iseq)->icvarc_size = NUM2INT(op) + 1;
+ }
+ break;
+ case TS_CALLDATA:
+ argv[j] = iseq_build_callinfo_from_hash(iseq, op);
+ break;
+ case TS_ID:
+ argv[j] = rb_to_symbol_type(op);
+ break;
+ case TS_CDHASH:
+ {
+ int i;
+ VALUE map = rb_hash_new_with_size(RARRAY_LEN(op)/2);
+
+ RHASH_TBL_RAW(map)->type = &cdhash_type;
+ op = rb_to_array_type(op);
+ for (i=0; i<RARRAY_LEN(op); i+=2) {
+ VALUE key = RARRAY_AREF(op, i);
+ VALUE sym = RARRAY_AREF(op, i+1);
+ LABEL *label =
+ register_label(iseq, labels_table, sym);
+ rb_hash_aset(map, key, (VALUE)label | 1);
+ }
+ RB_GC_GUARD(op);
+ argv[j] = map;
+ RB_OBJ_WRITTEN(iseq, Qundef, map);
+ }
+ break;
+ case TS_FUNCPTR:
+ {
+#if SIZEOF_VALUE <= SIZEOF_LONG
+ long funcptr = NUM2LONG(op);
+#else
+ LONG_LONG funcptr = NUM2LL(op);
+#endif
+ argv[j] = (VALUE)funcptr;
+ }
+ break;
+ default:
+ rb_raise(rb_eSyntaxError, "unknown operand: %c", insn_op_type((VALUE)insn_id, j));
+ }
+ }
+ }
+ else {
+ NODE dummy_line_node = generate_dummy_line_node(line_no, node_id);
+ ADD_ELEM(anchor,
+ (LINK_ELEMENT*)new_insn_core(iseq, &dummy_line_node,
+ (enum ruby_vminsn_type)insn_id, argc, NULL));
+ }
+ }
+ else {
+ rb_raise(rb_eTypeError, "unexpected object for instruction");
+ }
+ }
+ DATA_PTR(labels_wrapper) = 0;
+ validate_labels(iseq, labels_table);
+ if (!ret) return ret;
+ return iseq_setup(iseq, anchor);
+}
+
+#define CHECK_ARRAY(v) rb_to_array_type(v)
+#define CHECK_SYMBOL(v) rb_to_symbol_type(v)
+
+static int
+int_param(int *dst, VALUE param, VALUE sym)
+{
+ VALUE val = rb_hash_aref(param, sym);
+ if (FIXNUM_P(val)) {
+ *dst = FIX2INT(val);
+ return TRUE;
+ }
+ else if (!NIL_P(val)) {
+ rb_raise(rb_eTypeError, "invalid %+"PRIsVALUE" Fixnum: %+"PRIsVALUE,
+ sym, val);
+ }
+ return FALSE;
+}
+
+static const struct rb_iseq_param_keyword *
+iseq_build_kw(rb_iseq_t *iseq, VALUE params, VALUE keywords)
+{
+ int i, j;
+ int len = RARRAY_LENINT(keywords);
+ int default_len;
+ VALUE key, sym, default_val;
+ VALUE *dvs;
+ ID *ids;
+ struct rb_iseq_param_keyword *keyword = ZALLOC(struct rb_iseq_param_keyword);
+
+ ISEQ_BODY(iseq)->param.flags.has_kw = TRUE;
+
+ keyword->num = len;
+#define SYM(s) ID2SYM(rb_intern_const(#s))
+ (void)int_param(&keyword->bits_start, params, SYM(kwbits));
+ i = keyword->bits_start - keyword->num;
+ ids = (ID *)&ISEQ_BODY(iseq)->local_table[i];
+#undef SYM
+
+ /* required args */
+ for (i = 0; i < len; i++) {
+ VALUE val = RARRAY_AREF(keywords, i);
+
+ if (!SYMBOL_P(val)) {
+ goto default_values;
+ }
+ ids[i] = SYM2ID(val);
+ keyword->required_num++;
+ }
+
+ default_values: /* note: we intentionally preserve `i' from previous loop */
+ default_len = len - i;
+ if (default_len == 0) {
+ keyword->table = ids;
+ return keyword;
+ }
+ else if (default_len < 0) {
+ UNREACHABLE;
+ }
+
+ dvs = ALLOC_N(VALUE, (unsigned int)default_len);
+
+ for (j = 0; i < len; i++, j++) {
+ key = RARRAY_AREF(keywords, i);
+ CHECK_ARRAY(key);
+
+ switch (RARRAY_LEN(key)) {
+ case 1:
+ sym = RARRAY_AREF(key, 0);
+ default_val = Qundef;
+ break;
+ case 2:
+ sym = RARRAY_AREF(key, 0);
+ default_val = RARRAY_AREF(key, 1);
+ break;
+ default:
+ rb_raise(rb_eTypeError, "keyword default has unsupported len %+"PRIsVALUE, key);
+ }
+ ids[i] = SYM2ID(sym);
+ dvs[j] = default_val;
+ }
+
+ keyword->table = ids;
+ keyword->default_values = dvs;
+
+ return keyword;
+}
+
+static void
+iseq_insn_each_object_mark(VALUE *obj_ptr, VALUE _)
+{
+ rb_gc_mark(*obj_ptr);
+}
+
+void
+rb_iseq_mark_insn_storage(struct iseq_compile_data_storage *storage)
+{
+ INSN *iobj = 0;
+ size_t size = sizeof(INSN);
+ unsigned int pos = 0;
+
+ while (storage) {
+#ifdef STRICT_ALIGNMENT
+ size_t padding = calc_padding((void *)&storage->buff[pos], size);
+#else
+ const size_t padding = 0; /* expected to be optimized by compiler */
+#endif /* STRICT_ALIGNMENT */
+ size_t offset = pos + size + padding;
+ if (offset > storage->size || offset > storage->pos) {
+ pos = 0;
+ storage = storage->next;
+ }
+ else {
+#ifdef STRICT_ALIGNMENT
+ pos += (int)padding;
+#endif /* STRICT_ALIGNMENT */
+
+ iobj = (INSN *)&storage->buff[pos];
+
+ if (iobj->operands) {
+ iseq_insn_each_markable_object(iobj, iseq_insn_each_object_mark, (VALUE)0);
+ }
+ pos += (int)size;
+ }
+ }
+}
+
+void
+rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE params,
+ VALUE exception, VALUE body)
+{
+#define SYM(s) ID2SYM(rb_intern_const(#s))
+ int i, len;
+ unsigned int arg_size, local_size, stack_max;
+ ID *tbl;
+ struct st_table *labels_table = st_init_numtable();
+ VALUE labels_wrapper = Data_Wrap_Struct(0, rb_mark_set, st_free_table, labels_table);
+ VALUE arg_opt_labels = rb_hash_aref(params, SYM(opt));
+ VALUE keywords = rb_hash_aref(params, SYM(keyword));
+ VALUE sym_arg_rest = ID2SYM(rb_intern_const("#arg_rest"));
+ DECL_ANCHOR(anchor);
+ INIT_ANCHOR(anchor);
+
+ len = RARRAY_LENINT(locals);
+ ISEQ_BODY(iseq)->local_table_size = len;
+ ISEQ_BODY(iseq)->local_table = tbl = len > 0 ? (ID *)ALLOC_N(ID, ISEQ_BODY(iseq)->local_table_size) : NULL;
+
+ for (i = 0; i < len; i++) {
+ VALUE lv = RARRAY_AREF(locals, i);
+
+ if (sym_arg_rest == lv) {
+ tbl[i] = 0;
+ }
+ else {
+ tbl[i] = FIXNUM_P(lv) ? (ID)FIX2LONG(lv) : SYM2ID(CHECK_SYMBOL(lv));
+ }
+ }
+
+#define INT_PARAM(F) int_param(&ISEQ_BODY(iseq)->param.F, params, SYM(F))
+ if (INT_PARAM(lead_num)) {
+ ISEQ_BODY(iseq)->param.flags.has_lead = TRUE;
+ }
+ if (INT_PARAM(post_num)) ISEQ_BODY(iseq)->param.flags.has_post = TRUE;
+ if (INT_PARAM(post_start)) ISEQ_BODY(iseq)->param.flags.has_post = TRUE;
+ if (INT_PARAM(rest_start)) ISEQ_BODY(iseq)->param.flags.has_rest = TRUE;
+ if (INT_PARAM(block_start)) ISEQ_BODY(iseq)->param.flags.has_block = TRUE;
+#undef INT_PARAM
+ {
+#define INT_PARAM(F) F = (int_param(&x, misc, SYM(F)) ? (unsigned int)x : 0)
+ int x;
+ INT_PARAM(arg_size);
+ INT_PARAM(local_size);
+ INT_PARAM(stack_max);
+#undef INT_PARAM
+ }
+
+ VALUE node_ids = Qfalse;
+#ifdef USE_ISEQ_NODE_ID
+ node_ids = rb_hash_aref(misc, ID2SYM(rb_intern("node_ids")));
+ if (!RB_TYPE_P(node_ids, T_ARRAY)) {
+ rb_raise(rb_eTypeError, "node_ids is not an array");
+ }
+#endif
+
+ if (RB_TYPE_P(arg_opt_labels, T_ARRAY)) {
+ len = RARRAY_LENINT(arg_opt_labels);
+ ISEQ_BODY(iseq)->param.flags.has_opt = !!(len - 1 >= 0);
+
+ if (ISEQ_BODY(iseq)->param.flags.has_opt) {
+ VALUE *opt_table = ALLOC_N(VALUE, len);
+
+ for (i = 0; i < len; i++) {
+ VALUE ent = RARRAY_AREF(arg_opt_labels, i);
+ LABEL *label = register_label(iseq, labels_table, ent);
+ opt_table[i] = (VALUE)label;
+ }
+
+ ISEQ_BODY(iseq)->param.opt_num = len - 1;
+ ISEQ_BODY(iseq)->param.opt_table = opt_table;
+ }
+ }
+ else if (!NIL_P(arg_opt_labels)) {
+ rb_raise(rb_eTypeError, ":opt param is not an array: %+"PRIsVALUE,
+ arg_opt_labels);
+ }
+
+ if (RB_TYPE_P(keywords, T_ARRAY)) {
+ ISEQ_BODY(iseq)->param.keyword = iseq_build_kw(iseq, params, keywords);
+ }
+ else if (!NIL_P(keywords)) {
+ rb_raise(rb_eTypeError, ":keywords param is not an array: %+"PRIsVALUE,
+ keywords);
+ }
+
+ if (Qtrue == rb_hash_aref(params, SYM(ambiguous_param0))) {
+ ISEQ_BODY(iseq)->param.flags.ambiguous_param0 = TRUE;
+ }
+
+ if (int_param(&i, params, SYM(kwrest))) {
+ struct rb_iseq_param_keyword *keyword = (struct rb_iseq_param_keyword *)ISEQ_BODY(iseq)->param.keyword;
+ if (keyword == NULL) {
+ ISEQ_BODY(iseq)->param.keyword = keyword = ZALLOC(struct rb_iseq_param_keyword);
+ }
+ keyword->rest_start = i;
+ ISEQ_BODY(iseq)->param.flags.has_kwrest = TRUE;
+ }
+#undef SYM
+ iseq_calc_param_size(iseq);
+
+ /* exception */
+ iseq_build_from_ary_exception(iseq, labels_table, exception);
+
+ /* body */
+ iseq_build_from_ary_body(iseq, anchor, body, node_ids, labels_wrapper);
+
+ ISEQ_BODY(iseq)->param.size = arg_size;
+ ISEQ_BODY(iseq)->local_table_size = local_size;
+ ISEQ_BODY(iseq)->stack_max = stack_max;
+}
+
+/* for parser */
+
+int
+rb_dvar_defined(ID id, const rb_iseq_t *iseq)
+{
+ if (iseq) {
+ const struct rb_iseq_constant_body *body = ISEQ_BODY(iseq);
+ while (body->type == ISEQ_TYPE_BLOCK ||
+ body->type == ISEQ_TYPE_RESCUE ||
+ body->type == ISEQ_TYPE_ENSURE ||
+ body->type == ISEQ_TYPE_EVAL ||
+ body->type == ISEQ_TYPE_MAIN
+ ) {
+ unsigned int i;
+
+ for (i = 0; i < body->local_table_size; i++) {
+ if (body->local_table[i] == id) {
+ return 1;
+ }
+ }
+ iseq = body->parent_iseq;
+ body = ISEQ_BODY(iseq);
+ }
+ }
+ return 0;
+}
+
+int
+rb_local_defined(ID id, const rb_iseq_t *iseq)
+{
+ if (iseq) {
+ unsigned int i;
+ const struct rb_iseq_constant_body *const body = ISEQ_BODY(ISEQ_BODY(iseq)->local_iseq);
+
+ for (i=0; i<body->local_table_size; i++) {
+ if (body->local_table[i] == id) {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+/* ISeq binary format */
+
+#ifndef IBF_ISEQ_DEBUG
+#define IBF_ISEQ_DEBUG 0
+#endif
+
+#ifndef IBF_ISEQ_ENABLE_LOCAL_BUFFER
+#define IBF_ISEQ_ENABLE_LOCAL_BUFFER 0
+#endif
+
+typedef unsigned int ibf_offset_t;
+#define IBF_OFFSET(ptr) ((ibf_offset_t)(VALUE)(ptr))
+
+#define IBF_MAJOR_VERSION ISEQ_MAJOR_VERSION
+#ifdef RUBY_DEVEL
+#define IBF_DEVEL_VERSION 4
+#define IBF_MINOR_VERSION (ISEQ_MINOR_VERSION * 10000 + IBF_DEVEL_VERSION)
+#else
+#define IBF_MINOR_VERSION ISEQ_MINOR_VERSION
+#endif
+
+struct ibf_header {
+ char magic[4]; /* YARB */
+ unsigned int major_version;
+ unsigned int minor_version;
+ unsigned int size;
+ unsigned int extra_size;
+
+ unsigned int iseq_list_size;
+ unsigned int global_object_list_size;
+ ibf_offset_t iseq_list_offset;
+ ibf_offset_t global_object_list_offset;
+};
+
+struct ibf_dump_buffer {
+ VALUE str;
+ st_table *obj_table; /* obj -> obj number */
+};
+
+struct ibf_dump {
+ st_table *iseq_table; /* iseq -> iseq number */
+ struct ibf_dump_buffer global_buffer;
+ struct ibf_dump_buffer *current_buffer;
+};
+
+struct ibf_load_buffer {
+ const char *buff;
+ ibf_offset_t size;
+
+ VALUE obj_list; /* [obj0, ...] */
+ unsigned int obj_list_size;
+ ibf_offset_t obj_list_offset;
+};
+
+struct ibf_load {
+ const struct ibf_header *header;
+ VALUE iseq_list; /* [iseq0, ...] */
+ struct ibf_load_buffer global_buffer;
+ VALUE loader_obj;
+ rb_iseq_t *iseq;
+ VALUE str;
+ struct ibf_load_buffer *current_buffer;
+};
+
+struct pinned_list {
+ long size;
+ VALUE * buffer;
+};
+
+static void
+pinned_list_mark(void *ptr)
+{
+ long i;
+ struct pinned_list *list = (struct pinned_list *)ptr;
+ for (i = 0; i < list->size; i++) {
+ if (list->buffer[i]) {
+ rb_gc_mark(list->buffer[i]);
+ }
+ }
+}
+
+static void
+pinned_list_free(void *ptr)
+{
+ struct pinned_list *list = (struct pinned_list *)ptr;
+ xfree(list->buffer);
+ xfree(ptr);
+}
+
+static size_t
+pinned_list_memsize(const void *ptr)
+{
+ struct pinned_list *list = (struct pinned_list *)ptr;
+ return sizeof(struct pinned_list) + (list->size * sizeof(VALUE *));
+}
+
+static const rb_data_type_t pinned_list_type = {
+ "pinned_list",
+ {pinned_list_mark, pinned_list_free, pinned_list_memsize,},
+ 0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
+};
+
+static VALUE
+pinned_list_fetch(VALUE list, long offset)
+{
+ struct pinned_list * ptr;
+
+ TypedData_Get_Struct(list, struct pinned_list, &pinned_list_type, ptr);
+
+ if (offset >= ptr->size) {
+ rb_raise(rb_eIndexError, "object index out of range: %ld", offset);
+ }
+
+ return ptr->buffer[offset];
+}
+
+static void
+pinned_list_store(VALUE list, long offset, VALUE object)
+{
+ struct pinned_list * ptr;
+
+ TypedData_Get_Struct(list, struct pinned_list, &pinned_list_type, ptr);
+
+ if (offset >= ptr->size) {
+ rb_raise(rb_eIndexError, "object index out of range: %ld", offset);
+ }
+
+ RB_OBJ_WRITE(list, &ptr->buffer[offset], object);
+}
+
+static VALUE
+pinned_list_new(long size)
+{
+ struct pinned_list * ptr;
+ VALUE obj_list =
+ TypedData_Make_Struct(0, struct pinned_list, &pinned_list_type, ptr);
+
+ ptr->buffer = xcalloc(size, sizeof(VALUE));
+ ptr->size = size;
+
+ return obj_list;
+}
+
+static ibf_offset_t
+ibf_dump_pos(struct ibf_dump *dump)
+{
+ long pos = RSTRING_LEN(dump->current_buffer->str);
+#if SIZEOF_LONG > SIZEOF_INT
+ if (pos >= UINT_MAX) {
+ rb_raise(rb_eRuntimeError, "dump size exceeds");
+ }
+#endif
+ return (unsigned int)pos;
+}
+
+static void
+ibf_dump_align(struct ibf_dump *dump, size_t align)
+{
+ ibf_offset_t pos = ibf_dump_pos(dump);
+ if (pos % align) {
+ static const char padding[sizeof(VALUE)];
+ size_t size = align - ((size_t)pos % align);
+#if SIZEOF_LONG > SIZEOF_INT
+ if (pos + size >= UINT_MAX) {
+ rb_raise(rb_eRuntimeError, "dump size exceeds");
+ }
+#endif
+ for (; size > sizeof(padding); size -= sizeof(padding)) {
+ rb_str_cat(dump->current_buffer->str, padding, sizeof(padding));
+ }
+ rb_str_cat(dump->current_buffer->str, padding, size);
+ }
+}
+
+static ibf_offset_t
+ibf_dump_write(struct ibf_dump *dump, const void *buff, unsigned long size)
+{
+ ibf_offset_t pos = ibf_dump_pos(dump);
+ rb_str_cat(dump->current_buffer->str, (const char *)buff, size);
+ /* TODO: overflow check */
+ return pos;
+}
+
+static ibf_offset_t
+ibf_dump_write_byte(struct ibf_dump *dump, unsigned char byte)
+{
+ return ibf_dump_write(dump, &byte, sizeof(unsigned char));
+}
+
+static void
+ibf_dump_overwrite(struct ibf_dump *dump, void *buff, unsigned int size, long offset)
+{
+ VALUE str = dump->current_buffer->str;
+ char *ptr = RSTRING_PTR(str);
+ if ((unsigned long)(size + offset) > (unsigned long)RSTRING_LEN(str))
+ rb_bug("ibf_dump_overwrite: overflow");
+ memcpy(ptr + offset, buff, size);
+}
+
+static const void *
+ibf_load_ptr(const struct ibf_load *load, ibf_offset_t *offset, int size)
+{
+ ibf_offset_t beg = *offset;
+ *offset += size;
+ return load->current_buffer->buff + beg;
+}
+
+static void *
+ibf_load_alloc(const struct ibf_load *load, ibf_offset_t offset, size_t x, size_t y)
+{
+ void *buff = ruby_xmalloc2(x, y);
+ size_t size = x * y;
+ memcpy(buff, load->current_buffer->buff + offset, size);
+ return buff;
+}
+
+#define IBF_W_ALIGN(type) (RUBY_ALIGNOF(type) > 1 ? ibf_dump_align(dump, RUBY_ALIGNOF(type)) : (void)0)
+
+#define IBF_W(b, type, n) (IBF_W_ALIGN(type), (type *)(VALUE)IBF_WP(b, type, n))
+#define IBF_WV(variable) ibf_dump_write(dump, &(variable), sizeof(variable))
+#define IBF_WP(b, type, n) ibf_dump_write(dump, (b), sizeof(type) * (n))
+#define IBF_R(val, type, n) (type *)ibf_load_alloc(load, IBF_OFFSET(val), sizeof(type), (n))
+#define IBF_ZERO(variable) memset(&(variable), 0, sizeof(variable))
+
+static int
+ibf_table_lookup(struct st_table *table, st_data_t key)
+{
+ st_data_t val;
+
+ if (st_lookup(table, key, &val)) {
+ return (int)val;
+ }
+ else {
+ return -1;
+ }
+}
+
+static int
+ibf_table_find_or_insert(struct st_table *table, st_data_t key)
+{
+ int index = ibf_table_lookup(table, key);
+
+ if (index < 0) { /* not found */
+ index = (int)table->num_entries;
+ st_insert(table, key, (st_data_t)index);
+ }
+
+ return index;
+}
+
+/* dump/load generic */
+
+static void ibf_dump_object_list(struct ibf_dump *dump, ibf_offset_t *obj_list_offset, unsigned int *obj_list_size);
+
+static VALUE ibf_load_object(const struct ibf_load *load, VALUE object_index);
+static rb_iseq_t *ibf_load_iseq(const struct ibf_load *load, const rb_iseq_t *index_iseq);
+
+static st_table *
+ibf_dump_object_table_new(void)
+{
+ st_table *obj_table = st_init_numtable(); /* need free */
+ st_insert(obj_table, (st_data_t)Qnil, (st_data_t)0); /* 0th is nil */
+
+ return obj_table;
+}
+
+static VALUE
+ibf_dump_object(struct ibf_dump *dump, VALUE obj)
+{
+ return ibf_table_find_or_insert(dump->current_buffer->obj_table, (st_data_t)obj);
+}
+
+static VALUE
+ibf_dump_id(struct ibf_dump *dump, ID id)
+{
+ if (id == 0 || rb_id2name(id) == NULL) {
+ return 0;
+ }
+ return ibf_dump_object(dump, rb_id2sym(id));
+}
+
+static ID
+ibf_load_id(const struct ibf_load *load, const ID id_index)
+{
+ if (id_index == 0) {
+ return 0;
+ }
+ VALUE sym = ibf_load_object(load, id_index);
+ return rb_sym2id(sym);
+}
+
+/* dump/load: code */
+
+static ibf_offset_t ibf_dump_iseq_each(struct ibf_dump *dump, const rb_iseq_t *iseq);
+
+static int
+ibf_dump_iseq(struct ibf_dump *dump, const rb_iseq_t *iseq)
+{
+ if (iseq == NULL) {
+ return -1;
+ }
+ else {
+ return ibf_table_find_or_insert(dump->iseq_table, (st_data_t)iseq);
+ }
+}
+
+static unsigned char
+ibf_load_byte(const struct ibf_load *load, ibf_offset_t *offset)
+{
+ if (*offset >= load->current_buffer->size) { rb_raise(rb_eRuntimeError, "invalid bytecode"); }
+ return (unsigned char)load->current_buffer->buff[(*offset)++];
+}
+
+/*
+ * Small uint serialization
+ * 0x00000000_00000000 - 0x00000000_0000007f: 1byte | XXXX XXX1 |
+ * 0x00000000_00000080 - 0x00000000_00003fff: 2byte | XXXX XX10 | XXXX XXXX |
+ * 0x00000000_00004000 - 0x00000000_001fffff: 3byte | XXXX X100 | XXXX XXXX | XXXX XXXX |
+ * 0x00000000_00020000 - 0x00000000_0fffffff: 4byte | XXXX 1000 | XXXX XXXX | XXXX XXXX | XXXX XXXX |
+ * ...
+ * 0x00010000_00000000 - 0x00ffffff_ffffffff: 8byte | 1000 0000 | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX |
+ * 0x01000000_00000000 - 0xffffffff_ffffffff: 9byte | 0000 0000 | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX |
+ */
+static void
+ibf_dump_write_small_value(struct ibf_dump *dump, VALUE x)
+{
+ if (sizeof(VALUE) > 8 || CHAR_BIT != 8) {
+ ibf_dump_write(dump, &x, sizeof(VALUE));
+ return;
+ }
+
+ enum { max_byte_length = sizeof(VALUE) + 1 };
+
+ unsigned char bytes[max_byte_length];
+ ibf_offset_t n;
+
+ for (n = 0; n < sizeof(VALUE) && (x >> (7 - n)); n++, x >>= 8) {
+ bytes[max_byte_length - 1 - n] = (unsigned char)x;
+ }
+
+ x <<= 1;
+ x |= 1;
+ x <<= n;
+ bytes[max_byte_length - 1 - n] = (unsigned char)x;
+ n++;
+
+ ibf_dump_write(dump, bytes + max_byte_length - n, n);
+}
+
+static VALUE
+ibf_load_small_value(const struct ibf_load *load, ibf_offset_t *offset)
+{
+ if (sizeof(VALUE) > 8 || CHAR_BIT != 8) {
+ union { char s[sizeof(VALUE)]; VALUE v; } x;
+
+ memcpy(x.s, load->current_buffer->buff + *offset, sizeof(VALUE));
+ *offset += sizeof(VALUE);
+
+ return x.v;
+ }
+
+ enum { max_byte_length = sizeof(VALUE) + 1 };
+
+ const unsigned char *buffer = (const unsigned char *)load->current_buffer->buff;
+ const unsigned char c = buffer[*offset];
+
+ ibf_offset_t n =
+ c & 1 ? 1 :
+ c == 0 ? 9 : ntz_int32(c) + 1;
+ VALUE x = (VALUE)c >> n;
+
+ if (*offset + n > load->current_buffer->size) {
+ rb_raise(rb_eRuntimeError, "invalid byte sequence");
+ }
+
+ ibf_offset_t i;
+ for (i = 1; i < n; i++) {
+ x <<= 8;
+ x |= (VALUE)buffer[*offset + i];
+ }
+
+ *offset += n;
+ return x;
+}
+
+static void
+ibf_dump_builtin(struct ibf_dump *dump, const struct rb_builtin_function *bf)
+{
+ // short: index
+ // short: name.length
+ // bytes: name
+ // // omit argc (only verify with name)
+ ibf_dump_write_small_value(dump, (VALUE)bf->index);
+
+ size_t len = strlen(bf->name);
+ ibf_dump_write_small_value(dump, (VALUE)len);
+ ibf_dump_write(dump, bf->name, len);
+}
+
+static const struct rb_builtin_function *
+ibf_load_builtin(const struct ibf_load *load, ibf_offset_t *offset)
+{
+ int i = (int)ibf_load_small_value(load, offset);
+ int len = (int)ibf_load_small_value(load, offset);
+ const char *name = (char *)ibf_load_ptr(load, offset, len);
+
+ if (0) {
+ fprintf(stderr, "%.*s!!\n", len, name);
+ }
+
+ const struct rb_builtin_function *table = GET_VM()->builtin_function_table;
+ if (table == NULL) rb_raise(rb_eArgError, "builtin function table is not provided");
+ if (strncmp(table[i].name, name, len) != 0) {
+ rb_raise(rb_eArgError, "builtin function index (%d) mismatch (expect %s but %s)", i, name, table[i].name);
+ }
+ // fprintf(stderr, "load-builtin: name:%s(%d)\n", table[i].name, table[i].argc);
+
+ return &table[i];
+}
+
+static ibf_offset_t
+ibf_dump_code(struct ibf_dump *dump, const rb_iseq_t *iseq)
+{
+ const struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+ const int iseq_size = body->iseq_size;
+ int code_index;
+ const VALUE *orig_code = rb_iseq_original_iseq(iseq);
+
+ ibf_offset_t offset = ibf_dump_pos(dump);
+
+ for (code_index=0; code_index<iseq_size;) {
+ const VALUE insn = orig_code[code_index++];
+ const char *types = insn_op_types(insn);
+ int op_index;
+
+ /* opcode */
+ if (insn >= 0x100) { rb_raise(rb_eRuntimeError, "invalid instruction"); }
+ ibf_dump_write_small_value(dump, insn);
+
+ /* operands */
+ for (op_index=0; types[op_index]; op_index++, code_index++) {
+ VALUE op = orig_code[code_index];
+ VALUE wv;
+
+ switch (types[op_index]) {
+ case TS_CDHASH:
+ case TS_VALUE:
+ wv = ibf_dump_object(dump, op);
+ break;
+ case TS_ISEQ:
+ wv = (VALUE)ibf_dump_iseq(dump, (const rb_iseq_t *)op);
+ break;
+ case TS_IC:
+ {
+ IC ic = (IC)op;
+ VALUE arr = idlist_to_array(ic->segments);
+ wv = ibf_dump_object(dump, arr);
+ }
+ break;
+ case TS_ISE:
+ case TS_IVC:
+ case TS_ICVARC:
+ {
+ union iseq_inline_storage_entry *is = (union iseq_inline_storage_entry *)op;
+ wv = is - ISEQ_IS_ENTRY_START(body, types[op_index]);
+ }
+ break;
+ case TS_CALLDATA:
+ {
+ goto skip_wv;
+ }
+ case TS_ID:
+ wv = ibf_dump_id(dump, (ID)op);
+ break;
+ case TS_FUNCPTR:
+ rb_raise(rb_eRuntimeError, "TS_FUNCPTR is not supported");
+ goto skip_wv;
+ case TS_BUILTIN:
+ ibf_dump_builtin(dump, (const struct rb_builtin_function *)op);
+ goto skip_wv;
+ default:
+ wv = op;
+ break;
+ }
+ ibf_dump_write_small_value(dump, wv);
+ skip_wv:;
+ }
+ assert(insn_len(insn) == op_index+1);
+ }
+
+ return offset;
+}
+
+static VALUE *
+ibf_load_code(const struct ibf_load *load, rb_iseq_t *iseq, ibf_offset_t bytecode_offset, ibf_offset_t bytecode_size, unsigned int iseq_size)
+{
+ VALUE iseqv = (VALUE)iseq;
+ unsigned int code_index;
+ ibf_offset_t reading_pos = bytecode_offset;
+ VALUE *code = ALLOC_N(VALUE, iseq_size);
+
+ struct rb_iseq_constant_body *load_body = ISEQ_BODY(iseq);
+ struct rb_call_data *cd_entries = load_body->call_data;
+ int ic_index = 0;
+
+ iseq_bits_t * mark_offset_bits;
+
+ iseq_bits_t tmp[1] = {0};
+
+ if (ISEQ_MBITS_BUFLEN(iseq_size) == 1) {
+ mark_offset_bits = tmp;
+ }
+ else {
+ mark_offset_bits = ZALLOC_N(iseq_bits_t, ISEQ_MBITS_BUFLEN(iseq_size));
+ }
+ bool needs_bitmap = false;
+
+ for (code_index=0; code_index<iseq_size;) {
+ /* opcode */
+ const VALUE insn = code[code_index] = ibf_load_small_value(load, &reading_pos);
+ const char *types = insn_op_types(insn);
+ int op_index;
+
+ code_index++;
+
+ /* operands */
+ for (op_index=0; types[op_index]; op_index++, code_index++) {
+ const char operand_type = types[op_index];
+ switch (operand_type) {
+ case TS_VALUE:
+ {
+ VALUE op = ibf_load_small_value(load, &reading_pos);
+ VALUE v = ibf_load_object(load, op);
+ code[code_index] = v;
+ if (!SPECIAL_CONST_P(v)) {
+ RB_OBJ_WRITTEN(iseqv, Qundef, v);
+ ISEQ_MBITS_SET(mark_offset_bits, code_index);
+ needs_bitmap = true;
+ }
+ break;
+ }
+ case TS_CDHASH:
+ {
+ VALUE op = ibf_load_small_value(load, &reading_pos);
+ VALUE v = ibf_load_object(load, op);
+ v = rb_hash_dup(v); // hash dumped as frozen
+ RHASH_TBL_RAW(v)->type = &cdhash_type;
+ rb_hash_rehash(v); // hash function changed
+ freeze_hide_obj(v);
+
+ // Overwrite the existing hash in the object list. This
+ // is to keep the object alive during load time.
+ // [Bug #17984] [ruby-core:104259]
+ pinned_list_store(load->current_buffer->obj_list, (long)op, v);
+
+ code[code_index] = v;
+ ISEQ_MBITS_SET(mark_offset_bits, code_index);
+ RB_OBJ_WRITTEN(iseqv, Qundef, v);
+ needs_bitmap = true;
+ break;
+ }
+ case TS_ISEQ:
+ {
+ VALUE op = (VALUE)ibf_load_small_value(load, &reading_pos);
+ VALUE v = (VALUE)ibf_load_iseq(load, (const rb_iseq_t *)op);
+ code[code_index] = v;
+ if (!SPECIAL_CONST_P(v)) {
+ RB_OBJ_WRITTEN(iseqv, Qundef, v);
+ ISEQ_MBITS_SET(mark_offset_bits, code_index);
+ needs_bitmap = true;
+ }
+ break;
+ }
+ case TS_IC:
+ {
+ VALUE op = ibf_load_small_value(load, &reading_pos);
+ VALUE arr = ibf_load_object(load, op);
+
+ IC ic = &ISEQ_IS_IC_ENTRY(load_body, ic_index++);
+ ic->segments = array_to_idlist(arr);
+
+ code[code_index] = (VALUE)ic;
+ }
+ break;
+ case TS_ISE:
+ case TS_ICVARC:
+ case TS_IVC:
+ {
+ unsigned int op = (unsigned int)ibf_load_small_value(load, &reading_pos);
+
+ ISE ic = ISEQ_IS_ENTRY_START(load_body, operand_type) + op;
+ code[code_index] = (VALUE)ic;
+
+ if (operand_type == TS_IVC) {
+ IVC cache = (IVC)ic;
+
+ if (insn == BIN(setinstancevariable)) {
+ ID iv_name = (ID)code[code_index - 1];
+ cache->iv_set_name = iv_name;
+ }
+ else {
+ cache->iv_set_name = 0;
+ }
+
+ vm_ic_attr_index_initialize(cache, INVALID_SHAPE_ID);
+ }
+
+ }
+ break;
+ case TS_CALLDATA:
+ {
+ code[code_index] = (VALUE)cd_entries++;
+ }
+ break;
+ case TS_ID:
+ {
+ VALUE op = ibf_load_small_value(load, &reading_pos);
+ code[code_index] = ibf_load_id(load, (ID)(VALUE)op);
+ }
+ break;
+ case TS_FUNCPTR:
+ rb_raise(rb_eRuntimeError, "TS_FUNCPTR is not supported");
+ break;
+ case TS_BUILTIN:
+ code[code_index] = (VALUE)ibf_load_builtin(load, &reading_pos);
+ break;
+ default:
+ code[code_index] = ibf_load_small_value(load, &reading_pos);
+ continue;
+ }
+ }
+ if (insn_len(insn) != op_index+1) {
+ rb_raise(rb_eRuntimeError, "operand size mismatch");
+ }
+ }
+
+ load_body->iseq_encoded = code;
+ load_body->iseq_size = code_index;
+
+ if (ISEQ_MBITS_BUFLEN(load_body->iseq_size) == 1) {
+ load_body->mark_bits.single = mark_offset_bits[0];
+ }
+ else {
+ if (needs_bitmap) {
+ load_body->mark_bits.list = mark_offset_bits;
+ }
+ else {
+ load_body->mark_bits.list = 0;
+ ruby_xfree(mark_offset_bits);
+ }
+ }
+
+ assert(code_index == iseq_size);
+ assert(reading_pos == bytecode_offset + bytecode_size);
+ return code;
+}
+
+static ibf_offset_t
+ibf_dump_param_opt_table(struct ibf_dump *dump, const rb_iseq_t *iseq)
+{
+ int opt_num = ISEQ_BODY(iseq)->param.opt_num;
+
+ if (opt_num > 0) {
+ IBF_W_ALIGN(VALUE);
+ return ibf_dump_write(dump, ISEQ_BODY(iseq)->param.opt_table, sizeof(VALUE) * (opt_num + 1));
+ }
+ else {
+ return ibf_dump_pos(dump);
+ }
+}
+
+static VALUE *
+ibf_load_param_opt_table(const struct ibf_load *load, ibf_offset_t opt_table_offset, int opt_num)
+{
+ if (opt_num > 0) {
+ VALUE *table = ALLOC_N(VALUE, opt_num+1);
+ MEMCPY(table, load->current_buffer->buff + opt_table_offset, VALUE, opt_num+1);
+ return table;
+ }
+ else {
+ return NULL;
+ }
+}
+
+static ibf_offset_t
+ibf_dump_param_keyword(struct ibf_dump *dump, const rb_iseq_t *iseq)
+{
+ const struct rb_iseq_param_keyword *kw = ISEQ_BODY(iseq)->param.keyword;
+
+ if (kw) {
+ struct rb_iseq_param_keyword dump_kw = *kw;
+ int dv_num = kw->num - kw->required_num;
+ ID *ids = kw->num > 0 ? ALLOCA_N(ID, kw->num) : NULL;
+ VALUE *dvs = dv_num > 0 ? ALLOCA_N(VALUE, dv_num) : NULL;
+ int i;
+
+ for (i=0; i<kw->num; i++) ids[i] = (ID)ibf_dump_id(dump, kw->table[i]);
+ for (i=0; i<dv_num; i++) dvs[i] = (VALUE)ibf_dump_object(dump, kw->default_values[i]);
+
+ dump_kw.table = IBF_W(ids, ID, kw->num);
+ dump_kw.default_values = IBF_W(dvs, VALUE, dv_num);
+ IBF_W_ALIGN(struct rb_iseq_param_keyword);
+ return ibf_dump_write(dump, &dump_kw, sizeof(struct rb_iseq_param_keyword) * 1);
+ }
+ else {
+ return 0;
+ }
+}
+
+static const struct rb_iseq_param_keyword *
+ibf_load_param_keyword(const struct ibf_load *load, ibf_offset_t param_keyword_offset)
+{
+ if (param_keyword_offset) {
+ struct rb_iseq_param_keyword *kw = IBF_R(param_keyword_offset, struct rb_iseq_param_keyword, 1);
+ ID *ids = IBF_R(kw->table, ID, kw->num);
+ int dv_num = kw->num - kw->required_num;
+ VALUE *dvs = IBF_R(kw->default_values, VALUE, dv_num);
+ int i;
+
+ for (i=0; i<kw->num; i++) {
+ ids[i] = ibf_load_id(load, ids[i]);
+ }
+ for (i=0; i<dv_num; i++) {
+ dvs[i] = ibf_load_object(load, dvs[i]);
+ }
+
+ kw->table = ids;
+ kw->default_values = dvs;
+ return kw;
+ }
+ else {
+ return NULL;
+ }
+}
+
+static ibf_offset_t
+ibf_dump_insns_info_body(struct ibf_dump *dump, const rb_iseq_t *iseq)
+{
+ ibf_offset_t offset = ibf_dump_pos(dump);
+ const struct iseq_insn_info_entry *entries = ISEQ_BODY(iseq)->insns_info.body;
+
+ unsigned int i;
+ for (i = 0; i < ISEQ_BODY(iseq)->insns_info.size; i++) {
+ ibf_dump_write_small_value(dump, entries[i].line_no);
+#ifdef USE_ISEQ_NODE_ID
+ ibf_dump_write_small_value(dump, entries[i].node_id);
+#endif
+ ibf_dump_write_small_value(dump, entries[i].events);
+ }
+
+ return offset;
+}
+
+static struct iseq_insn_info_entry *
+ibf_load_insns_info_body(const struct ibf_load *load, ibf_offset_t body_offset, unsigned int size)
+{
+ ibf_offset_t reading_pos = body_offset;
+ struct iseq_insn_info_entry *entries = ALLOC_N(struct iseq_insn_info_entry, size);
+
+ unsigned int i;
+ for (i = 0; i < size; i++) {
+ entries[i].line_no = (int)ibf_load_small_value(load, &reading_pos);
+#ifdef USE_ISEQ_NODE_ID
+ entries[i].node_id = (int)ibf_load_small_value(load, &reading_pos);
+#endif
+ entries[i].events = (rb_event_flag_t)ibf_load_small_value(load, &reading_pos);
+ }
+
+ return entries;
+}
+
+static ibf_offset_t
+ibf_dump_insns_info_positions(struct ibf_dump *dump, const unsigned int *positions, unsigned int size)
+{
+ ibf_offset_t offset = ibf_dump_pos(dump);
+
+ unsigned int last = 0;
+ unsigned int i;
+ for (i = 0; i < size; i++) {
+ ibf_dump_write_small_value(dump, positions[i] - last);
+ last = positions[i];
+ }
+
+ return offset;
+}
+
+static unsigned int *
+ibf_load_insns_info_positions(const struct ibf_load *load, ibf_offset_t positions_offset, unsigned int size)
+{
+ ibf_offset_t reading_pos = positions_offset;
+ unsigned int *positions = ALLOC_N(unsigned int, size);
+
+ unsigned int last = 0;
+ unsigned int i;
+ for (i = 0; i < size; i++) {
+ positions[i] = last + (unsigned int)ibf_load_small_value(load, &reading_pos);
+ last = positions[i];
+ }
+
+ return positions;
+}
+
+static ibf_offset_t
+ibf_dump_local_table(struct ibf_dump *dump, const rb_iseq_t *iseq)
+{
+ const struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+ const int size = body->local_table_size;
+ ID *table = ALLOCA_N(ID, size);
+ int i;
+
+ for (i=0; i<size; i++) {
+ table[i] = ibf_dump_id(dump, body->local_table[i]);
+ }
+
+ IBF_W_ALIGN(ID);
+ return ibf_dump_write(dump, table, sizeof(ID) * size);
+}
+
+static ID *
+ibf_load_local_table(const struct ibf_load *load, ibf_offset_t local_table_offset, int size)
+{
+ if (size > 0) {
+ ID *table = IBF_R(local_table_offset, ID, size);
+ int i;
+
+ for (i=0; i<size; i++) {
+ table[i] = ibf_load_id(load, table[i]);
+ }
+ return table;
+ }
+ else {
+ return NULL;
+ }
+}
+
+static ibf_offset_t
+ibf_dump_catch_table(struct ibf_dump *dump, const rb_iseq_t *iseq)
+{
+ const struct iseq_catch_table *table = ISEQ_BODY(iseq)->catch_table;
+
+ if (table) {
+ int *iseq_indices = ALLOCA_N(int, table->size);
+ unsigned int i;
+
+ for (i=0; i<table->size; i++) {
+ iseq_indices[i] = ibf_dump_iseq(dump, table->entries[i].iseq);
+ }
+
+ const ibf_offset_t offset = ibf_dump_pos(dump);
+
+ for (i=0; i<table->size; i++) {
+ ibf_dump_write_small_value(dump, iseq_indices[i]);
+ ibf_dump_write_small_value(dump, table->entries[i].type);
+ ibf_dump_write_small_value(dump, table->entries[i].start);
+ ibf_dump_write_small_value(dump, table->entries[i].end);
+ ibf_dump_write_small_value(dump, table->entries[i].cont);
+ ibf_dump_write_small_value(dump, table->entries[i].sp);
+ }
+ return offset;
+ }
+ else {
+ return ibf_dump_pos(dump);
+ }
+}
+
+static struct iseq_catch_table *
+ibf_load_catch_table(const struct ibf_load *load, ibf_offset_t catch_table_offset, unsigned int size)
+{
+ if (size) {
+ struct iseq_catch_table *table = ruby_xmalloc(iseq_catch_table_bytes(size));
+ table->size = size;
+
+ ibf_offset_t reading_pos = catch_table_offset;
+
+ unsigned int i;
+ for (i=0; i<table->size; i++) {
+ int iseq_index = (int)ibf_load_small_value(load, &reading_pos);
+ table->entries[i].type = (enum rb_catch_type)ibf_load_small_value(load, &reading_pos);
+ table->entries[i].start = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ table->entries[i].end = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ table->entries[i].cont = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ table->entries[i].sp = (unsigned int)ibf_load_small_value(load, &reading_pos);
+
+ table->entries[i].iseq = ibf_load_iseq(load, (const rb_iseq_t *)(VALUE)iseq_index);
+ }
+ return table;
+ }
+ else {
+ return NULL;
+ }
+}
+
+static ibf_offset_t
+ibf_dump_ci_entries(struct ibf_dump *dump, const rb_iseq_t *iseq)
+{
+ const struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
+ const unsigned int ci_size = body->ci_size;
+ const struct rb_call_data *cds = body->call_data;
+
+ ibf_offset_t offset = ibf_dump_pos(dump);
+
+ unsigned int i;
+
+ for (i = 0; i < ci_size; i++) {
+ const struct rb_callinfo *ci = cds[i].ci;
+ if (ci != NULL) {
+ ibf_dump_write_small_value(dump, ibf_dump_id(dump, vm_ci_mid(ci)));
+ ibf_dump_write_small_value(dump, vm_ci_flag(ci));
+ ibf_dump_write_small_value(dump, vm_ci_argc(ci));
+
+ const struct rb_callinfo_kwarg *kwarg = vm_ci_kwarg(ci);
+ if (kwarg) {
+ int len = kwarg->keyword_len;
+ ibf_dump_write_small_value(dump, len);
+ for (int j=0; j<len; j++) {
+ VALUE keyword = ibf_dump_object(dump, kwarg->keywords[j]);
+ ibf_dump_write_small_value(dump, keyword);
+ }
+ }
+ else {
+ ibf_dump_write_small_value(dump, 0);
+ }
+ }
+ else {
+ // TODO: truncate NULL ci from call_data.
+ ibf_dump_write_small_value(dump, (VALUE)-1);
+ }
+ }
+
+ return offset;
+}
+
+static enum rb_id_table_iterator_result
+dump_outer_variable(ID id, VALUE val, void *dump)
+{
+ ibf_dump_write_small_value(dump, ibf_dump_id(dump, id));
+ ibf_dump_write_small_value(dump, val);
+
+ return ID_TABLE_CONTINUE;
+}
+
+static ibf_offset_t
+ibf_dump_outer_variables(struct ibf_dump *dump, const rb_iseq_t *iseq)
+{
+ struct rb_id_table * ovs = ISEQ_BODY(iseq)->outer_variables;
+
+ ibf_offset_t offset = ibf_dump_pos(dump);
+
+ if (ovs) {
+ ibf_dump_write_small_value(dump, (VALUE)rb_id_table_size(ovs));
+ rb_id_table_foreach(ovs, dump_outer_variable, (void *)dump);
+ }
+ else {
+ ibf_dump_write_small_value(dump, (VALUE)0);
+ }
+
+ return offset;
+}
+
+/* note that we dump out rb_call_info but load back rb_call_data */
+static void
+ibf_load_ci_entries(const struct ibf_load *load,
+ ibf_offset_t ci_entries_offset,
+ unsigned int ci_size,
+ struct rb_call_data **cd_ptr)
+{
+ ibf_offset_t reading_pos = ci_entries_offset;
+
+ unsigned int i;
+
+ struct rb_call_data *cds = ZALLOC_N(struct rb_call_data, ci_size);
+ *cd_ptr = cds;
+
+ for (i = 0; i < ci_size; i++) {
+ VALUE mid_index = ibf_load_small_value(load, &reading_pos);
+ if (mid_index != (VALUE)-1) {
+ ID mid = ibf_load_id(load, mid_index);
+ unsigned int flag = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ unsigned int argc = (unsigned int)ibf_load_small_value(load, &reading_pos);
+
+ struct rb_callinfo_kwarg *kwarg = NULL;
+ int kwlen = (int)ibf_load_small_value(load, &reading_pos);
+ if (kwlen > 0) {
+ kwarg = rb_xmalloc_mul_add(kwlen, sizeof(VALUE), sizeof(struct rb_callinfo_kwarg));
+ kwarg->keyword_len = kwlen;
+ for (int j=0; j<kwlen; j++) {
+ VALUE keyword = ibf_load_small_value(load, &reading_pos);
+ kwarg->keywords[j] = ibf_load_object(load, keyword);
+ }
+ }
+
+ cds[i].ci = vm_ci_new(mid, flag, argc, kwarg);
+ RB_OBJ_WRITTEN(load->iseq, Qundef, cds[i].ci);
+ cds[i].cc = vm_cc_empty();
+ }
+ else {
+ // NULL ci
+ cds[i].ci = NULL;
+ cds[i].cc = NULL;
+ }
+ }
+}
+
+static struct rb_id_table *
+ibf_load_outer_variables(const struct ibf_load * load, ibf_offset_t outer_variables_offset)
+{
+ ibf_offset_t reading_pos = outer_variables_offset;
+
+ struct rb_id_table *tbl = NULL;
+
+ size_t table_size = (size_t)ibf_load_small_value(load, &reading_pos);
+
+ if (table_size > 0) {
+ tbl = rb_id_table_create(table_size);
+ }
+
+ for (size_t i = 0; i < table_size; i++) {
+ ID key = ibf_load_id(load, (ID)ibf_load_small_value(load, &reading_pos));
+ VALUE value = ibf_load_small_value(load, &reading_pos);
+ if (!key) key = rb_make_temporary_id(i);
+ rb_id_table_insert(tbl, key, value);
+ }
+
+ return tbl;
+}
+
+static ibf_offset_t
+ibf_dump_iseq_each(struct ibf_dump *dump, const rb_iseq_t *iseq)
+{
+ assert(dump->current_buffer == &dump->global_buffer);
+
+ unsigned int *positions;
+
+ const struct rb_iseq_constant_body *body = ISEQ_BODY(iseq);
+
+ const VALUE location_pathobj_index = ibf_dump_object(dump, body->location.pathobj); /* TODO: freeze */
+ const VALUE location_base_label_index = ibf_dump_object(dump, body->location.base_label);
+ const VALUE location_label_index = ibf_dump_object(dump, body->location.label);
+
+#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
+ ibf_offset_t iseq_start = ibf_dump_pos(dump);
+
+ struct ibf_dump_buffer *saved_buffer = dump->current_buffer;
+ struct ibf_dump_buffer buffer;
+ buffer.str = rb_str_new(0, 0);
+ buffer.obj_table = ibf_dump_object_table_new();
+ dump->current_buffer = &buffer;
+#endif
+
+ const ibf_offset_t bytecode_offset = ibf_dump_code(dump, iseq);
+ const ibf_offset_t bytecode_size = ibf_dump_pos(dump) - bytecode_offset;
+ const ibf_offset_t param_opt_table_offset = ibf_dump_param_opt_table(dump, iseq);
+ const ibf_offset_t param_keyword_offset = ibf_dump_param_keyword(dump, iseq);
+ const ibf_offset_t insns_info_body_offset = ibf_dump_insns_info_body(dump, iseq);
+
+ positions = rb_iseq_insns_info_decode_positions(ISEQ_BODY(iseq));
+ const ibf_offset_t insns_info_positions_offset = ibf_dump_insns_info_positions(dump, positions, body->insns_info.size);
+ ruby_xfree(positions);
+
+ const ibf_offset_t local_table_offset = ibf_dump_local_table(dump, iseq);
+ const unsigned int catch_table_size = body->catch_table ? body->catch_table->size : 0;
+ const ibf_offset_t catch_table_offset = ibf_dump_catch_table(dump, iseq);
+ const int parent_iseq_index = ibf_dump_iseq(dump, ISEQ_BODY(iseq)->parent_iseq);
+ const int local_iseq_index = ibf_dump_iseq(dump, ISEQ_BODY(iseq)->local_iseq);
+ const int mandatory_only_iseq_index = ibf_dump_iseq(dump, ISEQ_BODY(iseq)->mandatory_only_iseq);
+ const ibf_offset_t ci_entries_offset = ibf_dump_ci_entries(dump, iseq);
+ const ibf_offset_t outer_variables_offset = ibf_dump_outer_variables(dump, iseq);
+
+#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
+ ibf_offset_t local_obj_list_offset;
+ unsigned int local_obj_list_size;
+
+ ibf_dump_object_list(dump, &local_obj_list_offset, &local_obj_list_size);
+#endif
+
+ ibf_offset_t body_offset = ibf_dump_pos(dump);
+
+ /* dump the constant body */
+ unsigned int param_flags =
+ (body->param.flags.has_lead << 0) |
+ (body->param.flags.has_opt << 1) |
+ (body->param.flags.has_rest << 2) |
+ (body->param.flags.has_post << 3) |
+ (body->param.flags.has_kw << 4) |
+ (body->param.flags.has_kwrest << 5) |
+ (body->param.flags.has_block << 6) |
+ (body->param.flags.ambiguous_param0 << 7) |
+ (body->param.flags.accepts_no_kwarg << 8) |
+ (body->param.flags.ruby2_keywords << 9);
+
+#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
+# define IBF_BODY_OFFSET(x) (x)
+#else
+# define IBF_BODY_OFFSET(x) (body_offset - (x))
+#endif
+
+ ibf_dump_write_small_value(dump, body->type);
+ ibf_dump_write_small_value(dump, body->iseq_size);
+ ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(bytecode_offset));
+ ibf_dump_write_small_value(dump, bytecode_size);
+ ibf_dump_write_small_value(dump, param_flags);
+ ibf_dump_write_small_value(dump, body->param.size);
+ ibf_dump_write_small_value(dump, body->param.lead_num);
+ ibf_dump_write_small_value(dump, body->param.opt_num);
+ ibf_dump_write_small_value(dump, body->param.rest_start);
+ ibf_dump_write_small_value(dump, body->param.post_start);
+ ibf_dump_write_small_value(dump, body->param.post_num);
+ ibf_dump_write_small_value(dump, body->param.block_start);
+ ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(param_opt_table_offset));
+ ibf_dump_write_small_value(dump, param_keyword_offset);
+ ibf_dump_write_small_value(dump, location_pathobj_index);
+ ibf_dump_write_small_value(dump, location_base_label_index);
+ ibf_dump_write_small_value(dump, location_label_index);
+ ibf_dump_write_small_value(dump, body->location.first_lineno);
+ ibf_dump_write_small_value(dump, body->location.node_id);
+ ibf_dump_write_small_value(dump, body->location.code_location.beg_pos.lineno);
+ ibf_dump_write_small_value(dump, body->location.code_location.beg_pos.column);
+ ibf_dump_write_small_value(dump, body->location.code_location.end_pos.lineno);
+ ibf_dump_write_small_value(dump, body->location.code_location.end_pos.column);
+ ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(insns_info_body_offset));
+ ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(insns_info_positions_offset));
+ ibf_dump_write_small_value(dump, body->insns_info.size);
+ ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(local_table_offset));
+ ibf_dump_write_small_value(dump, catch_table_size);
+ ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(catch_table_offset));
+ ibf_dump_write_small_value(dump, parent_iseq_index);
+ ibf_dump_write_small_value(dump, local_iseq_index);
+ ibf_dump_write_small_value(dump, mandatory_only_iseq_index);
+ ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(ci_entries_offset));
+ ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(outer_variables_offset));
+ ibf_dump_write_small_value(dump, body->variable.flip_count);
+ ibf_dump_write_small_value(dump, body->local_table_size);
+ ibf_dump_write_small_value(dump, body->ivc_size);
+ ibf_dump_write_small_value(dump, body->icvarc_size);
+ ibf_dump_write_small_value(dump, body->ise_size);
+ ibf_dump_write_small_value(dump, body->ic_size);
+ ibf_dump_write_small_value(dump, body->ci_size);
+ ibf_dump_write_small_value(dump, body->stack_max);
+ ibf_dump_write_small_value(dump, body->catch_except_p);
+ ibf_dump_write_small_value(dump, body->builtin_inline_p);
+
+#undef IBF_BODY_OFFSET
+
+#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
+ ibf_offset_t iseq_length_bytes = ibf_dump_pos(dump);
+
+ dump->current_buffer = saved_buffer;
+ ibf_dump_write(dump, RSTRING_PTR(buffer.str), iseq_length_bytes);
+
+ ibf_offset_t offset = ibf_dump_pos(dump);
+ ibf_dump_write_small_value(dump, iseq_start);
+ ibf_dump_write_small_value(dump, iseq_length_bytes);
+ ibf_dump_write_small_value(dump, body_offset);
+
+ ibf_dump_write_small_value(dump, local_obj_list_offset);
+ ibf_dump_write_small_value(dump, local_obj_list_size);
+
+ st_free_table(buffer.obj_table); // TODO: this leaks in case of exception
+
+ return offset;
+#else
+ return body_offset;
+#endif
+}
+
+static VALUE
+ibf_load_location_str(const struct ibf_load *load, VALUE str_index)
+{
+ VALUE str = ibf_load_object(load, str_index);
+ if (str != Qnil) {
+ str = rb_fstring(str);
+ }
+ return str;
+}
+
+static void
+ibf_load_iseq_each(struct ibf_load *load, rb_iseq_t *iseq, ibf_offset_t offset)
+{
+ struct rb_iseq_constant_body *load_body = ISEQ_BODY(iseq) = rb_iseq_constant_body_alloc();
+
+ ibf_offset_t reading_pos = offset;
+
+#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
+ struct ibf_load_buffer *saved_buffer = load->current_buffer;
+ load->current_buffer = &load->global_buffer;
+
+ const ibf_offset_t iseq_start = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
+ const ibf_offset_t iseq_length_bytes = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
+ const ibf_offset_t body_offset = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
+
+ struct ibf_load_buffer buffer;
+ buffer.buff = load->global_buffer.buff + iseq_start;
+ buffer.size = iseq_length_bytes;
+ buffer.obj_list_offset = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
+ buffer.obj_list_size = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
+ buffer.obj_list = pinned_list_new(buffer.obj_list_size);
+
+ load->current_buffer = &buffer;
+ reading_pos = body_offset;
+#endif
+
+#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
+# define IBF_BODY_OFFSET(x) (x)
+#else
+# define IBF_BODY_OFFSET(x) (offset - (x))
+#endif
+
+ const unsigned int type = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ const unsigned int iseq_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ const ibf_offset_t bytecode_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
+ const ibf_offset_t bytecode_size = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
+ const unsigned int param_flags = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ const unsigned int param_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ const int param_lead_num = (int)ibf_load_small_value(load, &reading_pos);
+ const int param_opt_num = (int)ibf_load_small_value(load, &reading_pos);
+ const int param_rest_start = (int)ibf_load_small_value(load, &reading_pos);
+ const int param_post_start = (int)ibf_load_small_value(load, &reading_pos);
+ const int param_post_num = (int)ibf_load_small_value(load, &reading_pos);
+ const int param_block_start = (int)ibf_load_small_value(load, &reading_pos);
+ const ibf_offset_t param_opt_table_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
+ const ibf_offset_t param_keyword_offset = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
+ const VALUE location_pathobj_index = ibf_load_small_value(load, &reading_pos);
+ const VALUE location_base_label_index = ibf_load_small_value(load, &reading_pos);
+ const VALUE location_label_index = ibf_load_small_value(load, &reading_pos);
+ const int location_first_lineno = (int)ibf_load_small_value(load, &reading_pos);
+ const int location_node_id = (int)ibf_load_small_value(load, &reading_pos);
+ const int location_code_location_beg_pos_lineno = (int)ibf_load_small_value(load, &reading_pos);
+ const int location_code_location_beg_pos_column = (int)ibf_load_small_value(load, &reading_pos);
+ const int location_code_location_end_pos_lineno = (int)ibf_load_small_value(load, &reading_pos);
+ const int location_code_location_end_pos_column = (int)ibf_load_small_value(load, &reading_pos);
+ const ibf_offset_t insns_info_body_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
+ const ibf_offset_t insns_info_positions_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
+ const unsigned int insns_info_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ const ibf_offset_t local_table_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
+ const unsigned int catch_table_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ const ibf_offset_t catch_table_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
+ const int parent_iseq_index = (int)ibf_load_small_value(load, &reading_pos);
+ const int local_iseq_index = (int)ibf_load_small_value(load, &reading_pos);
+ const int mandatory_only_iseq_index = (int)ibf_load_small_value(load, &reading_pos);
+ const ibf_offset_t ci_entries_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
+ const ibf_offset_t outer_variables_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
+ const rb_snum_t variable_flip_count = (rb_snum_t)ibf_load_small_value(load, &reading_pos);
+ const unsigned int local_table_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
+
+ const unsigned int ivc_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ const unsigned int icvarc_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ const unsigned int ise_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ const unsigned int ic_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
+
+ const unsigned int ci_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ const unsigned int stack_max = (unsigned int)ibf_load_small_value(load, &reading_pos);
+ const char catch_except_p = (char)ibf_load_small_value(load, &reading_pos);
+ const bool builtin_inline_p = (bool)ibf_load_small_value(load, &reading_pos);
+
+ // setup fname and dummy frame
+ VALUE path = ibf_load_object(load, location_pathobj_index);
+ {
+ VALUE realpath = Qnil;
+
+ if (RB_TYPE_P(path, T_STRING)) {
+ realpath = path = rb_fstring(path);
+ }
+ else if (RB_TYPE_P(path, T_ARRAY)) {
+ VALUE pathobj = path;
+ if (RARRAY_LEN(pathobj) != 2) {
+ rb_raise(rb_eRuntimeError, "path object size mismatch");
+ }
+ path = rb_fstring(RARRAY_AREF(pathobj, 0));
+ realpath = RARRAY_AREF(pathobj, 1);
+ if (!NIL_P(realpath)) {
+ if (!RB_TYPE_P(realpath, T_STRING)) {
+ rb_raise(rb_eArgError, "unexpected realpath %"PRIxVALUE
+ "(%x), path=%+"PRIsVALUE,
+ realpath, TYPE(realpath), path);
+ }
+ realpath = rb_fstring(realpath);
+ }
+ }
+ else {
+ rb_raise(rb_eRuntimeError, "unexpected path object");
+ }
+ rb_iseq_pathobj_set(iseq, path, realpath);
+ }
+
+ // push dummy frame
+ rb_execution_context_t *ec = GET_EC();
+ VALUE dummy_frame = rb_vm_push_frame_fname(ec, path);
+
+#undef IBF_BODY_OFFSET
+
+ load_body->type = type;
+ load_body->stack_max = stack_max;
+ load_body->param.flags.has_lead = (param_flags >> 0) & 1;
+ load_body->param.flags.has_opt = (param_flags >> 1) & 1;
+ load_body->param.flags.has_rest = (param_flags >> 2) & 1;
+ load_body->param.flags.has_post = (param_flags >> 3) & 1;
+ load_body->param.flags.has_kw = FALSE;
+ load_body->param.flags.has_kwrest = (param_flags >> 5) & 1;
+ load_body->param.flags.has_block = (param_flags >> 6) & 1;
+ load_body->param.flags.ambiguous_param0 = (param_flags >> 7) & 1;
+ load_body->param.flags.accepts_no_kwarg = (param_flags >> 8) & 1;
+ load_body->param.flags.ruby2_keywords = (param_flags >> 9) & 1;
+ load_body->param.size = param_size;
+ load_body->param.lead_num = param_lead_num;
+ load_body->param.opt_num = param_opt_num;
+ load_body->param.rest_start = param_rest_start;
+ load_body->param.post_start = param_post_start;
+ load_body->param.post_num = param_post_num;
+ load_body->param.block_start = param_block_start;
+ load_body->local_table_size = local_table_size;
+ load_body->ci_size = ci_size;
+ load_body->insns_info.size = insns_info_size;
+
+ ISEQ_COVERAGE_SET(iseq, Qnil);
+ ISEQ_ORIGINAL_ISEQ_CLEAR(iseq);
+ load_body->variable.flip_count = variable_flip_count;
+ load_body->variable.script_lines = Qnil;
+
+ load_body->location.first_lineno = location_first_lineno;
+ load_body->location.node_id = location_node_id;
+ load_body->location.code_location.beg_pos.lineno = location_code_location_beg_pos_lineno;
+ load_body->location.code_location.beg_pos.column = location_code_location_beg_pos_column;
+ load_body->location.code_location.end_pos.lineno = location_code_location_end_pos_lineno;
+ load_body->location.code_location.end_pos.column = location_code_location_end_pos_column;
+ load_body->catch_except_p = catch_except_p;
+ load_body->builtin_inline_p = builtin_inline_p;
+
+ load_body->ivc_size = ivc_size;
+ load_body->icvarc_size = icvarc_size;
+ load_body->ise_size = ise_size;
+ load_body->ic_size = ic_size;
+ load_body->is_entries = ZALLOC_N(union iseq_inline_storage_entry, ISEQ_IS_SIZE(load_body));
+ ibf_load_ci_entries(load, ci_entries_offset, ci_size, &load_body->call_data);
+ load_body->outer_variables = ibf_load_outer_variables(load, outer_variables_offset);
+ load_body->param.opt_table = ibf_load_param_opt_table(load, param_opt_table_offset, param_opt_num);
+ load_body->param.keyword = ibf_load_param_keyword(load, param_keyword_offset);
+ load_body->param.flags.has_kw = (param_flags >> 4) & 1;
+ load_body->insns_info.body = ibf_load_insns_info_body(load, insns_info_body_offset, insns_info_size);
+ load_body->insns_info.positions = ibf_load_insns_info_positions(load, insns_info_positions_offset, insns_info_size);
+ load_body->local_table = ibf_load_local_table(load, local_table_offset, local_table_size);
+ load_body->catch_table = ibf_load_catch_table(load, catch_table_offset, catch_table_size);
+ load_body->parent_iseq = ibf_load_iseq(load, (const rb_iseq_t *)(VALUE)parent_iseq_index);
+ load_body->local_iseq = ibf_load_iseq(load, (const rb_iseq_t *)(VALUE)local_iseq_index);
+ load_body->mandatory_only_iseq = ibf_load_iseq(load, (const rb_iseq_t *)(VALUE)mandatory_only_iseq_index);
+
+ ibf_load_code(load, iseq, bytecode_offset, bytecode_size, iseq_size);
+#if VM_INSN_INFO_TABLE_IMPL == 2
+ rb_iseq_insns_info_encode_positions(iseq);
+#endif
+
+ rb_iseq_translate_threaded_code(iseq);
+
+#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
+ load->current_buffer = &load->global_buffer;
+#endif
+
+ RB_OBJ_WRITE(iseq, &load_body->location.base_label, ibf_load_location_str(load, location_base_label_index));
+ RB_OBJ_WRITE(iseq, &load_body->location.label, ibf_load_location_str(load, location_label_index));
+
+#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
+ load->current_buffer = saved_buffer;
+#endif
+ verify_call_cache(iseq);
+
+ RB_GC_GUARD(dummy_frame);
+ rb_vm_pop_frame_no_int(ec);
+}
+
+struct ibf_dump_iseq_list_arg
+{
+ struct ibf_dump *dump;
+ VALUE offset_list;
+};
+
+static int
+ibf_dump_iseq_list_i(st_data_t key, st_data_t val, st_data_t ptr)
+{
+ const rb_iseq_t *iseq = (const rb_iseq_t *)key;
+ struct ibf_dump_iseq_list_arg *args = (struct ibf_dump_iseq_list_arg *)ptr;
+
+ ibf_offset_t offset = ibf_dump_iseq_each(args->dump, iseq);
+ rb_ary_push(args->offset_list, UINT2NUM(offset));
+
+ return ST_CONTINUE;
+}
+
+static void
+ibf_dump_iseq_list(struct ibf_dump *dump, struct ibf_header *header)
+{
+ VALUE offset_list = rb_ary_hidden_new(dump->iseq_table->num_entries);
+
+ struct ibf_dump_iseq_list_arg args;
+ args.dump = dump;
+ args.offset_list = offset_list;
+
+ st_foreach(dump->iseq_table, ibf_dump_iseq_list_i, (st_data_t)&args);
+
+ st_index_t i;
+ st_index_t size = dump->iseq_table->num_entries;
+ ibf_offset_t *offsets = ALLOCA_N(ibf_offset_t, size);
+
+ for (i = 0; i < size; i++) {
+ offsets[i] = NUM2UINT(RARRAY_AREF(offset_list, i));
+ }
+
+ ibf_dump_align(dump, sizeof(ibf_offset_t));
+ header->iseq_list_offset = ibf_dump_write(dump, offsets, sizeof(ibf_offset_t) * size);
+ header->iseq_list_size = (unsigned int)size;
+}
+
+#define IBF_OBJECT_INTERNAL FL_PROMOTED0
+
+/*
+ * Binary format
+ * - ibf_object_header
+ * - ibf_object_xxx (xxx is type)
+ */
+
+struct ibf_object_header {
+ unsigned int type: 5;
+ unsigned int special_const: 1;
+ unsigned int frozen: 1;
+ unsigned int internal: 1;
+};
+
+enum ibf_object_class_index {
+ IBF_OBJECT_CLASS_OBJECT,
+ IBF_OBJECT_CLASS_ARRAY,
+ IBF_OBJECT_CLASS_STANDARD_ERROR,
+ IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_ERROR,
+ IBF_OBJECT_CLASS_TYPE_ERROR,
+ IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_KEY_ERROR,
+};
+
+struct ibf_object_regexp {
+ long srcstr;
+ char option;
+};
+
+struct ibf_object_hash {
+ long len;
+ long keyval[FLEX_ARY_LEN];
+};
+
+struct ibf_object_struct_range {
+ long class_index;
+ long len;
+ long beg;
+ long end;
+ int excl;
+};
+
+struct ibf_object_bignum {
+ ssize_t slen;
+ BDIGIT digits[FLEX_ARY_LEN];
+};
+
+enum ibf_object_data_type {
+ IBF_OBJECT_DATA_ENCODING,
+};
+
+struct ibf_object_complex_rational {
+ long a, b;
+};
+
+struct ibf_object_symbol {
+ long str;
+};
+
+#define IBF_ALIGNED_OFFSET(align, offset) /* offset > 0 */ \
+ ((((offset) - 1) / (align) + 1) * (align))
+#define IBF_OBJBODY(type, offset) (const type *)\
+ ibf_load_check_offset(load, IBF_ALIGNED_OFFSET(RUBY_ALIGNOF(type), offset))
+
+static const void *
+ibf_load_check_offset(const struct ibf_load *load, size_t offset)
+{
+ if (offset >= load->current_buffer->size) {
+ rb_raise(rb_eIndexError, "object offset out of range: %"PRIdSIZE, offset);
+ }
+ return load->current_buffer->buff + offset;
+}
+
+NORETURN(static void ibf_dump_object_unsupported(struct ibf_dump *dump, VALUE obj));
+
+static void
+ibf_dump_object_unsupported(struct ibf_dump *dump, VALUE obj)
+{
+ char buff[0x100];
+ rb_raw_obj_info(buff, sizeof(buff), obj);
+ rb_raise(rb_eNotImpError, "ibf_dump_object_unsupported: %s", buff);
+}
+
+NORETURN(static VALUE ibf_load_object_unsupported(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset));
+
+static VALUE
+ibf_load_object_unsupported(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ rb_raise(rb_eArgError, "unsupported");
+ UNREACHABLE_RETURN(Qnil);
+}
+
+static void
+ibf_dump_object_class(struct ibf_dump *dump, VALUE obj)
+{
+ enum ibf_object_class_index cindex;
+ if (obj == rb_cObject) {
+ cindex = IBF_OBJECT_CLASS_OBJECT;
+ }
+ else if (obj == rb_cArray) {
+ cindex = IBF_OBJECT_CLASS_ARRAY;
+ }
+ else if (obj == rb_eStandardError) {
+ cindex = IBF_OBJECT_CLASS_STANDARD_ERROR;
+ }
+ else if (obj == rb_eNoMatchingPatternError) {
+ cindex = IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_ERROR;
+ }
+ else if (obj == rb_eTypeError) {
+ cindex = IBF_OBJECT_CLASS_TYPE_ERROR;
+ }
+ else if (obj == rb_eNoMatchingPatternKeyError) {
+ cindex = IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_KEY_ERROR;
+ }
+ else {
+ rb_obj_info_dump(obj);
+ rb_p(obj);
+ rb_bug("unsupported class");
+ }
+ ibf_dump_write_small_value(dump, (VALUE)cindex);
+}
+
+static VALUE
+ibf_load_object_class(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ enum ibf_object_class_index cindex = (enum ibf_object_class_index)ibf_load_small_value(load, &offset);
+
+ switch (cindex) {
+ case IBF_OBJECT_CLASS_OBJECT:
+ return rb_cObject;
+ case IBF_OBJECT_CLASS_ARRAY:
+ return rb_cArray;
+ case IBF_OBJECT_CLASS_STANDARD_ERROR:
+ return rb_eStandardError;
+ case IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_ERROR:
+ return rb_eNoMatchingPatternError;
+ case IBF_OBJECT_CLASS_TYPE_ERROR:
+ return rb_eTypeError;
+ case IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_KEY_ERROR:
+ return rb_eNoMatchingPatternKeyError;
+ }
+
+ rb_raise(rb_eArgError, "ibf_load_object_class: unknown class (%d)", (int)cindex);
+}
+
+
+static void
+ibf_dump_object_float(struct ibf_dump *dump, VALUE obj)
+{
+ double dbl = RFLOAT_VALUE(obj);
+ (void)IBF_W(&dbl, double, 1);
+}
+
+static VALUE
+ibf_load_object_float(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ const double *dblp = IBF_OBJBODY(double, offset);
+ return DBL2NUM(*dblp);
+}
+
+static void
+ibf_dump_object_string(struct ibf_dump *dump, VALUE obj)
+{
+ long encindex = (long)rb_enc_get_index(obj);
+ long len = RSTRING_LEN(obj);
+ const char *ptr = RSTRING_PTR(obj);
+
+ if (encindex > RUBY_ENCINDEX_BUILTIN_MAX) {
+ rb_encoding *enc = rb_enc_from_index((int)encindex);
+ const char *enc_name = rb_enc_name(enc);
+ encindex = RUBY_ENCINDEX_BUILTIN_MAX + ibf_dump_object(dump, rb_str_new2(enc_name));
+ }
+
+ ibf_dump_write_small_value(dump, encindex);
+ ibf_dump_write_small_value(dump, len);
+ IBF_WP(ptr, char, len);
+}
+
+static VALUE
+ibf_load_object_string(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ ibf_offset_t reading_pos = offset;
+
+ int encindex = (int)ibf_load_small_value(load, &reading_pos);
+ const long len = (long)ibf_load_small_value(load, &reading_pos);
+ const char *ptr = load->current_buffer->buff + reading_pos;
+
+ if (encindex > RUBY_ENCINDEX_BUILTIN_MAX) {
+ VALUE enc_name_str = ibf_load_object(load, encindex - RUBY_ENCINDEX_BUILTIN_MAX);
+ encindex = rb_enc_find_index(RSTRING_PTR(enc_name_str));
+ }
+
+ VALUE str;
+ if (header->frozen && !header->internal) {
+ str = rb_enc_interned_str(ptr, len, rb_enc_from_index(encindex));
+ }
+ else {
+ str = rb_enc_str_new(ptr, len, rb_enc_from_index(encindex));
+
+ if (header->internal) rb_obj_hide(str);
+ if (header->frozen) str = rb_fstring(str);
+ }
+ return str;
+}
+
+static void
+ibf_dump_object_regexp(struct ibf_dump *dump, VALUE obj)
+{
+ VALUE srcstr = RREGEXP_SRC(obj);
+ struct ibf_object_regexp regexp;
+ regexp.option = (char)rb_reg_options(obj);
+ regexp.srcstr = (long)ibf_dump_object(dump, srcstr);
+
+ ibf_dump_write_byte(dump, (unsigned char)regexp.option);
+ ibf_dump_write_small_value(dump, regexp.srcstr);
+}
+
+static VALUE
+ibf_load_object_regexp(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ struct ibf_object_regexp regexp;
+ regexp.option = ibf_load_byte(load, &offset);
+ regexp.srcstr = ibf_load_small_value(load, &offset);
+
+ VALUE srcstr = ibf_load_object(load, regexp.srcstr);
+ VALUE reg = rb_reg_compile(srcstr, (int)regexp.option, NULL, 0);
+
+ if (header->internal) rb_obj_hide(reg);
+ if (header->frozen) rb_obj_freeze(reg);
+
+ return reg;
+}
+
+static void
+ibf_dump_object_array(struct ibf_dump *dump, VALUE obj)
+{
+ long i, len = RARRAY_LEN(obj);
+ ibf_dump_write_small_value(dump, len);
+ for (i=0; i<len; i++) {
+ long index = (long)ibf_dump_object(dump, RARRAY_AREF(obj, i));
+ ibf_dump_write_small_value(dump, index);
+ }
+}
+
+static VALUE
+ibf_load_object_array(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ ibf_offset_t reading_pos = offset;
+
+ const long len = (long)ibf_load_small_value(load, &reading_pos);
+
+ VALUE ary = header->internal ? rb_ary_hidden_new(len) : rb_ary_new_capa(len);
+ int i;
+
+ for (i=0; i<len; i++) {
+ const VALUE index = ibf_load_small_value(load, &reading_pos);
+ rb_ary_push(ary, ibf_load_object(load, index));
+ }
+
+ if (header->frozen) rb_obj_freeze(ary);
+
+ return ary;
+}
+
+static int
+ibf_dump_object_hash_i(st_data_t key, st_data_t val, st_data_t ptr)
+{
+ struct ibf_dump *dump = (struct ibf_dump *)ptr;
+
+ VALUE key_index = ibf_dump_object(dump, (VALUE)key);
+ VALUE val_index = ibf_dump_object(dump, (VALUE)val);
+
+ ibf_dump_write_small_value(dump, key_index);
+ ibf_dump_write_small_value(dump, val_index);
+ return ST_CONTINUE;
+}
+
+static void
+ibf_dump_object_hash(struct ibf_dump *dump, VALUE obj)
+{
+ long len = RHASH_SIZE(obj);
+ ibf_dump_write_small_value(dump, (VALUE)len);
+
+ if (len > 0) rb_hash_foreach(obj, ibf_dump_object_hash_i, (VALUE)dump);
+}
+
+static VALUE
+ibf_load_object_hash(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ long len = (long)ibf_load_small_value(load, &offset);
+ VALUE obj = rb_hash_new_with_size(len);
+ int i;
+
+ for (i = 0; i < len; i++) {
+ VALUE key_index = ibf_load_small_value(load, &offset);
+ VALUE val_index = ibf_load_small_value(load, &offset);
+
+ VALUE key = ibf_load_object(load, key_index);
+ VALUE val = ibf_load_object(load, val_index);
+ rb_hash_aset(obj, key, val);
+ }
+ rb_hash_rehash(obj);
+
+ if (header->internal) rb_obj_hide(obj);
+ if (header->frozen) rb_obj_freeze(obj);
+
+ return obj;
+}
+
+static void
+ibf_dump_object_struct(struct ibf_dump *dump, VALUE obj)
+{
+ if (rb_obj_is_kind_of(obj, rb_cRange)) {
+ struct ibf_object_struct_range range;
+ VALUE beg, end;
+ IBF_ZERO(range);
+ range.len = 3;
+ range.class_index = 0;
+
+ rb_range_values(obj, &beg, &end, &range.excl);
+ range.beg = (long)ibf_dump_object(dump, beg);
+ range.end = (long)ibf_dump_object(dump, end);
+
+ IBF_W_ALIGN(struct ibf_object_struct_range);
+ IBF_WV(range);
+ }
+ else {
+ rb_raise(rb_eNotImpError, "ibf_dump_object_struct: unsupported class %"PRIsVALUE,
+ rb_class_name(CLASS_OF(obj)));
+ }
+}
+
+static VALUE
+ibf_load_object_struct(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ const struct ibf_object_struct_range *range = IBF_OBJBODY(struct ibf_object_struct_range, offset);
+ VALUE beg = ibf_load_object(load, range->beg);
+ VALUE end = ibf_load_object(load, range->end);
+ VALUE obj = rb_range_new(beg, end, range->excl);
+ if (header->internal) rb_obj_hide(obj);
+ if (header->frozen) rb_obj_freeze(obj);
+ return obj;
+}
+
+static void
+ibf_dump_object_bignum(struct ibf_dump *dump, VALUE obj)
+{
+ ssize_t len = BIGNUM_LEN(obj);
+ ssize_t slen = BIGNUM_SIGN(obj) > 0 ? len : len * -1;
+ BDIGIT *d = BIGNUM_DIGITS(obj);
+
+ (void)IBF_W(&slen, ssize_t, 1);
+ IBF_WP(d, BDIGIT, len);
+}
+
+static VALUE
+ibf_load_object_bignum(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ const struct ibf_object_bignum *bignum = IBF_OBJBODY(struct ibf_object_bignum, offset);
+ int sign = bignum->slen > 0;
+ ssize_t len = sign > 0 ? bignum->slen : -1 * bignum->slen;
+ VALUE obj = rb_integer_unpack(bignum->digits, len * 2, 2, 0,
+ INTEGER_PACK_LITTLE_ENDIAN | (sign == 0 ? INTEGER_PACK_NEGATIVE : 0));
+ if (header->internal) rb_obj_hide(obj);
+ if (header->frozen) rb_obj_freeze(obj);
+ return obj;
+}
+
+static void
+ibf_dump_object_data(struct ibf_dump *dump, VALUE obj)
+{
+ if (rb_data_is_encoding(obj)) {
+ rb_encoding *enc = rb_to_encoding(obj);
+ const char *name = rb_enc_name(enc);
+ long len = strlen(name) + 1;
+ long data[2];
+ data[0] = IBF_OBJECT_DATA_ENCODING;
+ data[1] = len;
+ (void)IBF_W(data, long, 2);
+ IBF_WP(name, char, len);
+ }
+ else {
+ ibf_dump_object_unsupported(dump, obj);
+ }
+}
+
+static VALUE
+ibf_load_object_data(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ const long *body = IBF_OBJBODY(long, offset);
+ const enum ibf_object_data_type type = (enum ibf_object_data_type)body[0];
+ /* const long len = body[1]; */
+ const char *data = (const char *)&body[2];
+
+ switch (type) {
+ case IBF_OBJECT_DATA_ENCODING:
+ {
+ VALUE encobj = rb_enc_from_encoding(rb_enc_find(data));
+ return encobj;
+ }
+ }
+
+ return ibf_load_object_unsupported(load, header, offset);
+}
+
+static void
+ibf_dump_object_complex_rational(struct ibf_dump *dump, VALUE obj)
+{
+ long data[2];
+ data[0] = (long)ibf_dump_object(dump, RCOMPLEX(obj)->real);
+ data[1] = (long)ibf_dump_object(dump, RCOMPLEX(obj)->imag);
+
+ (void)IBF_W(data, long, 2);
+}
+
+static VALUE
+ibf_load_object_complex_rational(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ const struct ibf_object_complex_rational *nums = IBF_OBJBODY(struct ibf_object_complex_rational, offset);
+ VALUE a = ibf_load_object(load, nums->a);
+ VALUE b = ibf_load_object(load, nums->b);
+ VALUE obj = header->type == T_COMPLEX ?
+ rb_complex_new(a, b) : rb_rational_new(a, b);
+
+ if (header->internal) rb_obj_hide(obj);
+ if (header->frozen) rb_obj_freeze(obj);
+ return obj;
+}
+
+static void
+ibf_dump_object_symbol(struct ibf_dump *dump, VALUE obj)
+{
+ ibf_dump_object_string(dump, rb_sym2str(obj));
+}
+
+static VALUE
+ibf_load_object_symbol(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
+{
+ ibf_offset_t reading_pos = offset;
+
+ int encindex = (int)ibf_load_small_value(load, &reading_pos);
+ const long len = (long)ibf_load_small_value(load, &reading_pos);
+ const char *ptr = load->current_buffer->buff + reading_pos;
+
+ if (encindex > RUBY_ENCINDEX_BUILTIN_MAX) {
+ VALUE enc_name_str = ibf_load_object(load, encindex - RUBY_ENCINDEX_BUILTIN_MAX);
+ encindex = rb_enc_find_index(RSTRING_PTR(enc_name_str));
+ }
+
+ ID id = rb_intern3(ptr, len, rb_enc_from_index(encindex));
+ return ID2SYM(id);
+}
+
+typedef void (*ibf_dump_object_function)(struct ibf_dump *dump, VALUE obj);
+static ibf_dump_object_function dump_object_functions[RUBY_T_MASK+1] = {
+ ibf_dump_object_unsupported, /* T_NONE */
+ ibf_dump_object_unsupported, /* T_OBJECT */
+ ibf_dump_object_class, /* T_CLASS */
+ ibf_dump_object_unsupported, /* T_MODULE */
+ ibf_dump_object_float, /* T_FLOAT */
+ ibf_dump_object_string, /* T_STRING */
+ ibf_dump_object_regexp, /* T_REGEXP */
+ ibf_dump_object_array, /* T_ARRAY */
+ ibf_dump_object_hash, /* T_HASH */
+ ibf_dump_object_struct, /* T_STRUCT */
+ ibf_dump_object_bignum, /* T_BIGNUM */
+ ibf_dump_object_unsupported, /* T_FILE */
+ ibf_dump_object_data, /* T_DATA */
+ ibf_dump_object_unsupported, /* T_MATCH */
+ ibf_dump_object_complex_rational, /* T_COMPLEX */
+ ibf_dump_object_complex_rational, /* T_RATIONAL */
+ ibf_dump_object_unsupported, /* 0x10 */
+ ibf_dump_object_unsupported, /* 0x11 T_NIL */
+ ibf_dump_object_unsupported, /* 0x12 T_TRUE */
+ ibf_dump_object_unsupported, /* 0x13 T_FALSE */
+ ibf_dump_object_symbol, /* 0x14 T_SYMBOL */
+ ibf_dump_object_unsupported, /* T_FIXNUM */
+ ibf_dump_object_unsupported, /* T_UNDEF */
+ ibf_dump_object_unsupported, /* 0x17 */
+ ibf_dump_object_unsupported, /* 0x18 */
+ ibf_dump_object_unsupported, /* 0x19 */
+ ibf_dump_object_unsupported, /* T_IMEMO 0x1a */
+ ibf_dump_object_unsupported, /* T_NODE 0x1b */
+ ibf_dump_object_unsupported, /* T_ICLASS 0x1c */
+ ibf_dump_object_unsupported, /* T_ZOMBIE 0x1d */
+ ibf_dump_object_unsupported, /* 0x1e */
+ ibf_dump_object_unsupported, /* 0x1f */
+};
+
+static void
+ibf_dump_object_object_header(struct ibf_dump *dump, const struct ibf_object_header header)
+{
+ unsigned char byte =
+ (header.type << 0) |
+ (header.special_const << 5) |
+ (header.frozen << 6) |
+ (header.internal << 7);
+
+ IBF_WV(byte);
+}
+
+static struct ibf_object_header
+ibf_load_object_object_header(const struct ibf_load *load, ibf_offset_t *offset)
+{
+ unsigned char byte = ibf_load_byte(load, offset);
+
+ struct ibf_object_header header;
+ header.type = (byte >> 0) & 0x1f;
+ header.special_const = (byte >> 5) & 0x01;
+ header.frozen = (byte >> 6) & 0x01;
+ header.internal = (byte >> 7) & 0x01;
+
+ return header;
+}
+
+static ibf_offset_t
+ibf_dump_object_object(struct ibf_dump *dump, VALUE obj)
+{
+ struct ibf_object_header obj_header;
+ ibf_offset_t current_offset;
+ IBF_ZERO(obj_header);
+ obj_header.type = TYPE(obj);
+
+ IBF_W_ALIGN(ibf_offset_t);
+ current_offset = ibf_dump_pos(dump);
+
+ if (SPECIAL_CONST_P(obj) &&
+ ! (SYMBOL_P(obj) ||
+ RB_FLOAT_TYPE_P(obj))) {
+ obj_header.special_const = TRUE;
+ obj_header.frozen = TRUE;
+ obj_header.internal = TRUE;
+ ibf_dump_object_object_header(dump, obj_header);
+ ibf_dump_write_small_value(dump, obj);
+ }
+ else {
+ obj_header.internal = SPECIAL_CONST_P(obj) ? FALSE : (RBASIC_CLASS(obj) == 0) ? TRUE : FALSE;
+ obj_header.special_const = FALSE;
+ obj_header.frozen = FL_TEST(obj, FL_FREEZE) ? TRUE : FALSE;
+ ibf_dump_object_object_header(dump, obj_header);
+ (*dump_object_functions[obj_header.type])(dump, obj);
+ }
+
+ return current_offset;
+}
+
+typedef VALUE (*ibf_load_object_function)(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset);
+static ibf_load_object_function load_object_functions[RUBY_T_MASK+1] = {
+ ibf_load_object_unsupported, /* T_NONE */
+ ibf_load_object_unsupported, /* T_OBJECT */
+ ibf_load_object_class, /* T_CLASS */
+ ibf_load_object_unsupported, /* T_MODULE */
+ ibf_load_object_float, /* T_FLOAT */
+ ibf_load_object_string, /* T_STRING */
+ ibf_load_object_regexp, /* T_REGEXP */
+ ibf_load_object_array, /* T_ARRAY */
+ ibf_load_object_hash, /* T_HASH */
+ ibf_load_object_struct, /* T_STRUCT */
+ ibf_load_object_bignum, /* T_BIGNUM */
+ ibf_load_object_unsupported, /* T_FILE */
+ ibf_load_object_data, /* T_DATA */
+ ibf_load_object_unsupported, /* T_MATCH */
+ ibf_load_object_complex_rational, /* T_COMPLEX */
+ ibf_load_object_complex_rational, /* T_RATIONAL */
+ ibf_load_object_unsupported, /* 0x10 */
+ ibf_load_object_unsupported, /* T_NIL */
+ ibf_load_object_unsupported, /* T_TRUE */
+ ibf_load_object_unsupported, /* T_FALSE */
+ ibf_load_object_symbol,
+ ibf_load_object_unsupported, /* T_FIXNUM */
+ ibf_load_object_unsupported, /* T_UNDEF */
+ ibf_load_object_unsupported, /* 0x17 */
+ ibf_load_object_unsupported, /* 0x18 */
+ ibf_load_object_unsupported, /* 0x19 */
+ ibf_load_object_unsupported, /* T_IMEMO 0x1a */
+ ibf_load_object_unsupported, /* T_NODE 0x1b */
+ ibf_load_object_unsupported, /* T_ICLASS 0x1c */
+ ibf_load_object_unsupported, /* T_ZOMBIE 0x1d */
+ ibf_load_object_unsupported, /* 0x1e */
+ ibf_load_object_unsupported, /* 0x1f */
+};
+
+static VALUE
+ibf_load_object(const struct ibf_load *load, VALUE object_index)
+{
+ if (object_index == 0) {
+ return Qnil;
+ }
+ else {
+ VALUE obj = pinned_list_fetch(load->current_buffer->obj_list, (long)object_index);
+ if (!obj) {
+ ibf_offset_t *offsets = (ibf_offset_t *)(load->current_buffer->obj_list_offset + load->current_buffer->buff);
+ ibf_offset_t offset = offsets[object_index];
+ const struct ibf_object_header header = ibf_load_object_object_header(load, &offset);
+
+#if IBF_ISEQ_DEBUG
+ fprintf(stderr, "ibf_load_object: list=%#x offsets=%p offset=%#x\n",
+ load->current_buffer->obj_list_offset, (void *)offsets, offset);
+ fprintf(stderr, "ibf_load_object: type=%#x special=%d frozen=%d internal=%d\n",
+ header.type, header.special_const, header.frozen, header.internal);
+#endif
+ if (offset >= load->current_buffer->size) {
+ rb_raise(rb_eIndexError, "object offset out of range: %u", offset);
+ }
+
+ if (header.special_const) {
+ ibf_offset_t reading_pos = offset;
+
+ obj = ibf_load_small_value(load, &reading_pos);
+ }
+ else {
+ obj = (*load_object_functions[header.type])(load, &header, offset);
+ }
+
+ pinned_list_store(load->current_buffer->obj_list, (long)object_index, obj);
+ }
+#if IBF_ISEQ_DEBUG
+ fprintf(stderr, "ibf_load_object: index=%#"PRIxVALUE" obj=%#"PRIxVALUE"\n",
+ object_index, obj);
+#endif
+ return obj;
+ }
+}
+
+struct ibf_dump_object_list_arg
+{
+ struct ibf_dump *dump;
+ VALUE offset_list;
+};
+
+static int
+ibf_dump_object_list_i(st_data_t key, st_data_t val, st_data_t ptr)
+{
+ VALUE obj = (VALUE)key;
+ struct ibf_dump_object_list_arg *args = (struct ibf_dump_object_list_arg *)ptr;
+
+ ibf_offset_t offset = ibf_dump_object_object(args->dump, obj);
+ rb_ary_push(args->offset_list, UINT2NUM(offset));
+
+ return ST_CONTINUE;
+}
+
+static void
+ibf_dump_object_list(struct ibf_dump *dump, ibf_offset_t *obj_list_offset, unsigned int *obj_list_size)
+{
+ st_table *obj_table = dump->current_buffer->obj_table;
+ VALUE offset_list = rb_ary_hidden_new(obj_table->num_entries);
+
+ struct ibf_dump_object_list_arg args;
+ args.dump = dump;
+ args.offset_list = offset_list;
+
+ st_foreach(obj_table, ibf_dump_object_list_i, (st_data_t)&args);
+
+ IBF_W_ALIGN(ibf_offset_t);
+ *obj_list_offset = ibf_dump_pos(dump);
+
+ st_index_t size = obj_table->num_entries;
+ st_index_t i;
+
+ for (i=0; i<size; i++) {
+ ibf_offset_t offset = NUM2UINT(RARRAY_AREF(offset_list, i));
+ IBF_WV(offset);
+ }
+
+ *obj_list_size = (unsigned int)size;
+}
+
+static void
+ibf_dump_mark(void *ptr)
+{
+ struct ibf_dump *dump = (struct ibf_dump *)ptr;
+ rb_gc_mark(dump->global_buffer.str);
+
+ rb_mark_set(dump->global_buffer.obj_table);
+ rb_mark_set(dump->iseq_table);
+}
+
+static void
+ibf_dump_free(void *ptr)
+{
+ struct ibf_dump *dump = (struct ibf_dump *)ptr;
+ if (dump->global_buffer.obj_table) {
+ st_free_table(dump->global_buffer.obj_table);
+ dump->global_buffer.obj_table = 0;
+ }
+ if (dump->iseq_table) {
+ st_free_table(dump->iseq_table);
+ dump->iseq_table = 0;
+ }
+ ruby_xfree(dump);
+}
+
+static size_t
+ibf_dump_memsize(const void *ptr)
+{
+ struct ibf_dump *dump = (struct ibf_dump *)ptr;
+ size_t size = sizeof(*dump);
+ if (dump->iseq_table) size += st_memsize(dump->iseq_table);
+ if (dump->global_buffer.obj_table) size += st_memsize(dump->global_buffer.obj_table);
+ return size;
+}
+
+static const rb_data_type_t ibf_dump_type = {
+ "ibf_dump",
+ {ibf_dump_mark, ibf_dump_free, ibf_dump_memsize,},
+ 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
+};
+
+static void
+ibf_dump_setup(struct ibf_dump *dump, VALUE dumper_obj)
+{
+ dump->global_buffer.obj_table = NULL; // GC may run before a value is assigned
+ dump->iseq_table = NULL;
+
+ RB_OBJ_WRITE(dumper_obj, &dump->global_buffer.str, rb_str_new(0, 0));
+ dump->global_buffer.obj_table = ibf_dump_object_table_new();
+ dump->iseq_table = st_init_numtable(); /* need free */
+
+ dump->current_buffer = &dump->global_buffer;
+}
+
+VALUE
+rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt)
+{
+ struct ibf_dump *dump;
+ struct ibf_header header = {{0}};
+ VALUE dump_obj;
+ VALUE str;
+
+ if (ISEQ_BODY(iseq)->parent_iseq != NULL ||
+ ISEQ_BODY(iseq)->local_iseq != iseq) {
+ rb_raise(rb_eRuntimeError, "should be top of iseq");
+ }
+ if (RTEST(ISEQ_COVERAGE(iseq))) {
+ rb_raise(rb_eRuntimeError, "should not compile with coverage");
+ }
+
+ dump_obj = TypedData_Make_Struct(0, struct ibf_dump, &ibf_dump_type, dump);
+ ibf_dump_setup(dump, dump_obj);
+
+ ibf_dump_write(dump, &header, sizeof(header));
+ ibf_dump_write(dump, RUBY_PLATFORM, strlen(RUBY_PLATFORM) + 1);
+ ibf_dump_iseq(dump, iseq);
+
+ header.magic[0] = 'Y'; /* YARB */
+ header.magic[1] = 'A';
+ header.magic[2] = 'R';
+ header.magic[3] = 'B';
+ header.major_version = IBF_MAJOR_VERSION;
+ header.minor_version = IBF_MINOR_VERSION;
+ ibf_dump_iseq_list(dump, &header);
+ ibf_dump_object_list(dump, &header.global_object_list_offset, &header.global_object_list_size);
+ header.size = ibf_dump_pos(dump);
+
+ if (RTEST(opt)) {
+ VALUE opt_str = opt;
+ const char *ptr = StringValuePtr(opt_str);
+ header.extra_size = RSTRING_LENINT(opt_str);
+ ibf_dump_write(dump, ptr, header.extra_size);
+ }
+ else {
+ header.extra_size = 0;
+ }
+
+ ibf_dump_overwrite(dump, &header, sizeof(header), 0);
+
+ str = dump->global_buffer.str;
+ ibf_dump_free(dump);
+ DATA_PTR(dump_obj) = NULL;
+ RB_GC_GUARD(dump_obj);
+ return str;
+}
+
+static const ibf_offset_t *
+ibf_iseq_list(const struct ibf_load *load)
+{
+ return (const ibf_offset_t *)(load->global_buffer.buff + load->header->iseq_list_offset);
+}
+
+void
+rb_ibf_load_iseq_complete(rb_iseq_t *iseq)
+{
+ struct ibf_load *load = RTYPEDDATA_DATA(iseq->aux.loader.obj);
+ rb_iseq_t *prev_src_iseq = load->iseq;
+ ibf_offset_t offset = ibf_iseq_list(load)[iseq->aux.loader.index];
+ load->iseq = iseq;
+#if IBF_ISEQ_DEBUG
+ fprintf(stderr, "rb_ibf_load_iseq_complete: index=%#x offset=%#x size=%#x\n",
+ iseq->aux.loader.index, offset,
+ load->header->size);
+#endif
+ ibf_load_iseq_each(load, iseq, offset);
+ ISEQ_COMPILE_DATA_CLEAR(iseq);
+ FL_UNSET((VALUE)iseq, ISEQ_NOT_LOADED_YET);
+ rb_iseq_init_trace(iseq);
+ load->iseq = prev_src_iseq;
+}
+
+#if USE_LAZY_LOAD
+MJIT_FUNC_EXPORTED const rb_iseq_t *
+rb_iseq_complete(const rb_iseq_t *iseq)
+{
+ rb_ibf_load_iseq_complete((rb_iseq_t *)iseq);
+ return iseq;
+}
+#endif
+
+static rb_iseq_t *
+ibf_load_iseq(const struct ibf_load *load, const rb_iseq_t *index_iseq)
+{
+ int iseq_index = (int)(VALUE)index_iseq;
+
+#if IBF_ISEQ_DEBUG
+ fprintf(stderr, "ibf_load_iseq: index_iseq=%p iseq_list=%p\n",
+ (void *)index_iseq, (void *)load->iseq_list);
+#endif
+ if (iseq_index == -1) {
+ return NULL;
+ }
+ else {
+ VALUE iseqv = pinned_list_fetch(load->iseq_list, iseq_index);
+
+#if IBF_ISEQ_DEBUG
+ fprintf(stderr, "ibf_load_iseq: iseqv=%p\n", (void *)iseqv);
+#endif
+ if (iseqv) {
+ return (rb_iseq_t *)iseqv;
+ }
+ else {
+ rb_iseq_t *iseq = iseq_imemo_alloc();
+#if IBF_ISEQ_DEBUG
+ fprintf(stderr, "ibf_load_iseq: new iseq=%p\n", (void *)iseq);
+#endif
+ FL_SET((VALUE)iseq, ISEQ_NOT_LOADED_YET);
+ iseq->aux.loader.obj = load->loader_obj;
+ iseq->aux.loader.index = iseq_index;
+#if IBF_ISEQ_DEBUG
+ fprintf(stderr, "ibf_load_iseq: iseq=%p loader_obj=%p index=%d\n",
+ (void *)iseq, (void *)load->loader_obj, iseq_index);
+#endif
+ pinned_list_store(load->iseq_list, iseq_index, (VALUE)iseq);
+
+#if !USE_LAZY_LOAD
+#if IBF_ISEQ_DEBUG
+ fprintf(stderr, "ibf_load_iseq: loading iseq=%p\n", (void *)iseq);
+#endif
+ rb_ibf_load_iseq_complete(iseq);
+#else
+ if (GET_VM()->builtin_function_table) {
+ rb_ibf_load_iseq_complete(iseq);
+ }
+#endif /* !USE_LAZY_LOAD */
+
+#if IBF_ISEQ_DEBUG
+ fprintf(stderr, "ibf_load_iseq: iseq=%p loaded %p\n",
+ (void *)iseq, (void *)load->iseq);
+#endif
+ return iseq;
+ }
+ }
+}
+
+static void
+ibf_load_setup_bytes(struct ibf_load *load, VALUE loader_obj, const char *bytes, size_t size)
+{
+ load->loader_obj = loader_obj;
+ load->global_buffer.buff = bytes;
+ load->header = (struct ibf_header *)load->global_buffer.buff;
+ load->global_buffer.size = load->header->size;
+ load->global_buffer.obj_list_offset = load->header->global_object_list_offset;
+ load->global_buffer.obj_list_size = load->header->global_object_list_size;
+ RB_OBJ_WRITE(loader_obj, &load->iseq_list, pinned_list_new(load->header->iseq_list_size));
+ RB_OBJ_WRITE(loader_obj, &load->global_buffer.obj_list, pinned_list_new(load->global_buffer.obj_list_size));
+ load->iseq = NULL;
+
+ load->current_buffer = &load->global_buffer;
+
+ if (size < load->header->size) {
+ rb_raise(rb_eRuntimeError, "broken binary format");
+ }
+ if (strncmp(load->header->magic, "YARB", 4) != 0) {
+ rb_raise(rb_eRuntimeError, "unknown binary format");
+ }
+ if (load->header->major_version != IBF_MAJOR_VERSION ||
+ load->header->minor_version != IBF_MINOR_VERSION) {
+ rb_raise(rb_eRuntimeError, "unmatched version file (%u.%u for %u.%u)",
+ load->header->major_version, load->header->minor_version, IBF_MAJOR_VERSION, IBF_MINOR_VERSION);
+ }
+ if (strcmp(load->global_buffer.buff + sizeof(struct ibf_header), RUBY_PLATFORM) != 0) {
+ rb_raise(rb_eRuntimeError, "unmatched platform");
+ }
+ if (load->header->iseq_list_offset % RUBY_ALIGNOF(ibf_offset_t)) {
+ rb_raise(rb_eArgError, "unaligned iseq list offset: %u",
+ load->header->iseq_list_offset);
+ }
+ if (load->global_buffer.obj_list_offset % RUBY_ALIGNOF(ibf_offset_t)) {
+ rb_raise(rb_eArgError, "unaligned object list offset: %u",
+ load->global_buffer.obj_list_offset);
+ }
+}
+
+static void
+ibf_load_setup(struct ibf_load *load, VALUE loader_obj, VALUE str)
+{
+ if (RSTRING_LENINT(str) < (int)sizeof(struct ibf_header)) {
+ rb_raise(rb_eRuntimeError, "broken binary format");
+ }
+
+#if USE_LAZY_LOAD
+ str = rb_str_new(RSTRING_PTR(str), RSTRING_LEN(str));
+#endif
+
+ ibf_load_setup_bytes(load, loader_obj, StringValuePtr(str), RSTRING_LEN(str));
+ RB_OBJ_WRITE(loader_obj, &load->str, str);
+}
+
+static void
+ibf_loader_mark(void *ptr)
+{
+ struct ibf_load *load = (struct ibf_load *)ptr;
+ rb_gc_mark(load->str);
+ rb_gc_mark(load->iseq_list);
+ rb_gc_mark(load->global_buffer.obj_list);
+}
+
+static void
+ibf_loader_free(void *ptr)
+{
+ struct ibf_load *load = (struct ibf_load *)ptr;
+ ruby_xfree(load);
+}
+
+static size_t
+ibf_loader_memsize(const void *ptr)
+{
+ return sizeof(struct ibf_load);
+}
+
+static const rb_data_type_t ibf_load_type = {
+ "ibf_loader",
+ {ibf_loader_mark, ibf_loader_free, ibf_loader_memsize,},
+ 0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
+};
+
+const rb_iseq_t *
+rb_iseq_ibf_load(VALUE str)
+{
+ struct ibf_load *load;
+ rb_iseq_t *iseq;
+ VALUE loader_obj = TypedData_Make_Struct(0, struct ibf_load, &ibf_load_type, load);
+
+ ibf_load_setup(load, loader_obj, str);
+ iseq = ibf_load_iseq(load, 0);
+
+ RB_GC_GUARD(loader_obj);
+ return iseq;
+}
+
+const rb_iseq_t *
+rb_iseq_ibf_load_bytes(const char *bytes, size_t size)
+{
+ struct ibf_load *load;
+ rb_iseq_t *iseq;
+ VALUE loader_obj = TypedData_Make_Struct(0, struct ibf_load, &ibf_load_type, load);
+
+ ibf_load_setup_bytes(load, loader_obj, bytes, size);
+ iseq = ibf_load_iseq(load, 0);
+
+ RB_GC_GUARD(loader_obj);
+ return iseq;
+}
+
+VALUE
+rb_iseq_ibf_load_extra_data(VALUE str)
+{
+ struct ibf_load *load;
+ VALUE loader_obj = TypedData_Make_Struct(0, struct ibf_load, &ibf_load_type, load);
+ VALUE extra_str;
+
+ ibf_load_setup(load, loader_obj, str);
+ extra_str = rb_str_new(load->global_buffer.buff + load->header->size, load->header->extra_size);
+ RB_GC_GUARD(loader_obj);
+ return extra_str;
+}
diff --git a/complex.c b/complex.c
new file mode 100644
index 0000000000..a227cb0a58
--- /dev/null
+++ b/complex.c
@@ -0,0 +1,2424 @@
+/*
+ complex.c: Coded by Tadayoshi Funaba 2008-2012
+
+ This implementation is based on Keiju Ishitsuka's Complex library
+ which is written in ruby.
+*/
+
+#include "ruby/internal/config.h"
+
+#if defined _MSC_VER
+/* Microsoft Visual C does not define M_PI and others by default */
+# define _USE_MATH_DEFINES 1
+#endif
+
+#include <ctype.h>
+#include <math.h>
+
+#include "id.h"
+#include "internal.h"
+#include "internal/array.h"
+#include "internal/class.h"
+#include "internal/complex.h"
+#include "internal/math.h"
+#include "internal/numeric.h"
+#include "internal/object.h"
+#include "internal/rational.h"
+#include "ruby_assert.h"
+
+#define ZERO INT2FIX(0)
+#define ONE INT2FIX(1)
+#define TWO INT2FIX(2)
+#if USE_FLONUM
+#define RFLOAT_0 DBL2NUM(0)
+#else
+static VALUE RFLOAT_0;
+#endif
+
+VALUE rb_cComplex;
+
+static ID id_abs, id_arg,
+ id_denominator, id_numerator,
+ id_real_p, id_i_real, id_i_imag,
+ id_finite_p, id_infinite_p, id_rationalize,
+ id_PI;
+#define id_to_i idTo_i
+#define id_to_r idTo_r
+#define id_negate idUMinus
+#define id_expt idPow
+#define id_to_f idTo_f
+#define id_quo idQuo
+#define id_fdiv idFdiv
+
+#define fun1(n) \
+inline static VALUE \
+f_##n(VALUE x)\
+{\
+ return rb_funcall(x, id_##n, 0);\
+}
+
+#define fun2(n) \
+inline static VALUE \
+f_##n(VALUE x, VALUE y)\
+{\
+ return rb_funcall(x, id_##n, 1, y);\
+}
+
+#define PRESERVE_SIGNEDZERO
+
+inline static VALUE
+f_add(VALUE x, VALUE y)
+{
+ if (RB_INTEGER_TYPE_P(x) &&
+ LIKELY(rb_method_basic_definition_p(rb_cInteger, idPLUS))) {
+ if (FIXNUM_ZERO_P(x))
+ return y;
+ if (FIXNUM_ZERO_P(y))
+ return x;
+ return rb_int_plus(x, y);
+ }
+ else if (RB_FLOAT_TYPE_P(x) &&
+ LIKELY(rb_method_basic_definition_p(rb_cFloat, idPLUS))) {
+ if (FIXNUM_ZERO_P(y))
+ return x;
+ return rb_float_plus(x, y);
+ }
+ else if (RB_TYPE_P(x, T_RATIONAL) &&
+ LIKELY(rb_method_basic_definition_p(rb_cRational, idPLUS))) {
+ if (FIXNUM_ZERO_P(y))
+ return x;
+ return rb_rational_plus(x, y);
+ }
+
+ return rb_funcall(x, '+', 1, y);
+}
+
+inline static VALUE
+f_div(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(y) && FIX2LONG(y) == 1)
+ return x;
+ return rb_funcall(x, '/', 1, y);
+}
+
+inline static int
+f_gt_p(VALUE x, VALUE y)
+{
+ if (RB_INTEGER_TYPE_P(x)) {
+ if (FIXNUM_P(x) && FIXNUM_P(y))
+ return (SIGNED_VALUE)x > (SIGNED_VALUE)y;
+ return RTEST(rb_int_gt(x, y));
+ }
+ else if (RB_FLOAT_TYPE_P(x))
+ return RTEST(rb_float_gt(x, y));
+ else if (RB_TYPE_P(x, T_RATIONAL)) {
+ int const cmp = rb_cmpint(rb_rational_cmp(x, y), x, y);
+ return cmp > 0;
+ }
+ return RTEST(rb_funcall(x, '>', 1, y));
+}
+
+inline static VALUE
+f_mul(VALUE x, VALUE y)
+{
+ if (RB_INTEGER_TYPE_P(x) &&
+ LIKELY(rb_method_basic_definition_p(rb_cInteger, idMULT))) {
+ if (FIXNUM_ZERO_P(y))
+ return ZERO;
+ if (FIXNUM_ZERO_P(x) && RB_INTEGER_TYPE_P(y))
+ return ZERO;
+ if (x == ONE) return y;
+ if (y == ONE) return x;
+ return rb_int_mul(x, y);
+ }
+ else if (RB_FLOAT_TYPE_P(x) &&
+ LIKELY(rb_method_basic_definition_p(rb_cFloat, idMULT))) {
+ if (y == ONE) return x;
+ return rb_float_mul(x, y);
+ }
+ else if (RB_TYPE_P(x, T_RATIONAL) &&
+ LIKELY(rb_method_basic_definition_p(rb_cRational, idMULT))) {
+ if (y == ONE) return x;
+ return rb_rational_mul(x, y);
+ }
+ else if (LIKELY(rb_method_basic_definition_p(CLASS_OF(x), idMULT))) {
+ if (y == ONE) return x;
+ }
+ return rb_funcall(x, '*', 1, y);
+}
+
+inline static VALUE
+f_sub(VALUE x, VALUE y)
+{
+ if (FIXNUM_ZERO_P(y) &&
+ LIKELY(rb_method_basic_definition_p(CLASS_OF(x), idMINUS))) {
+ return x;
+ }
+ return rb_funcall(x, '-', 1, y);
+}
+
+inline static VALUE
+f_abs(VALUE x)
+{
+ if (RB_INTEGER_TYPE_P(x)) {
+ return rb_int_abs(x);
+ }
+ else if (RB_FLOAT_TYPE_P(x)) {
+ return rb_float_abs(x);
+ }
+ else if (RB_TYPE_P(x, T_RATIONAL)) {
+ return rb_rational_abs(x);
+ }
+ else if (RB_TYPE_P(x, T_COMPLEX)) {
+ return rb_complex_abs(x);
+ }
+ return rb_funcall(x, id_abs, 0);
+}
+
+static VALUE numeric_arg(VALUE self);
+static VALUE float_arg(VALUE self);
+
+inline static VALUE
+f_arg(VALUE x)
+{
+ if (RB_INTEGER_TYPE_P(x)) {
+ return numeric_arg(x);
+ }
+ else if (RB_FLOAT_TYPE_P(x)) {
+ return float_arg(x);
+ }
+ else if (RB_TYPE_P(x, T_RATIONAL)) {
+ return numeric_arg(x);
+ }
+ else if (RB_TYPE_P(x, T_COMPLEX)) {
+ return rb_complex_arg(x);
+ }
+ return rb_funcall(x, id_arg, 0);
+}
+
+inline static VALUE
+f_numerator(VALUE x)
+{
+ if (RB_TYPE_P(x, T_RATIONAL)) {
+ return RRATIONAL(x)->num;
+ }
+ if (RB_FLOAT_TYPE_P(x)) {
+ return rb_float_numerator(x);
+ }
+ return x;
+}
+
+inline static VALUE
+f_denominator(VALUE x)
+{
+ if (RB_TYPE_P(x, T_RATIONAL)) {
+ return RRATIONAL(x)->den;
+ }
+ if (RB_FLOAT_TYPE_P(x)) {
+ return rb_float_denominator(x);
+ }
+ return INT2FIX(1);
+}
+
+inline static VALUE
+f_negate(VALUE x)
+{
+ if (RB_INTEGER_TYPE_P(x)) {
+ return rb_int_uminus(x);
+ }
+ else if (RB_FLOAT_TYPE_P(x)) {
+ return rb_float_uminus(x);
+ }
+ else if (RB_TYPE_P(x, T_RATIONAL)) {
+ return rb_rational_uminus(x);
+ }
+ else if (RB_TYPE_P(x, T_COMPLEX)) {
+ return rb_complex_uminus(x);
+ }
+ return rb_funcall(x, id_negate, 0);
+}
+
+static bool nucomp_real_p(VALUE self);
+
+static inline bool
+f_real_p(VALUE x)
+{
+ if (RB_INTEGER_TYPE_P(x)) {
+ return true;
+ }
+ else if (RB_FLOAT_TYPE_P(x)) {
+ return true;
+ }
+ else if (RB_TYPE_P(x, T_RATIONAL)) {
+ return true;
+ }
+ else if (RB_TYPE_P(x, T_COMPLEX)) {
+ return nucomp_real_p(x);
+ }
+ return rb_funcall(x, id_real_p, 0);
+}
+
+inline static VALUE
+f_to_i(VALUE x)
+{
+ if (RB_TYPE_P(x, T_STRING))
+ return rb_str_to_inum(x, 10, 0);
+ return rb_funcall(x, id_to_i, 0);
+}
+
+inline static VALUE
+f_to_f(VALUE x)
+{
+ if (RB_TYPE_P(x, T_STRING))
+ return DBL2NUM(rb_str_to_dbl(x, 0));
+ return rb_funcall(x, id_to_f, 0);
+}
+
+fun1(to_r)
+
+inline static int
+f_eqeq_p(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(x) && FIXNUM_P(y))
+ return x == y;
+ else if (RB_FLOAT_TYPE_P(x) || RB_FLOAT_TYPE_P(y))
+ return NUM2DBL(x) == NUM2DBL(y);
+ return (int)rb_equal(x, y);
+}
+
+fun2(expt)
+fun2(fdiv)
+
+static VALUE
+f_quo(VALUE x, VALUE y)
+{
+ if (RB_INTEGER_TYPE_P(x))
+ return rb_numeric_quo(x, y);
+ if (RB_FLOAT_TYPE_P(x))
+ return rb_float_div(x, y);
+ if (RB_TYPE_P(x, T_RATIONAL))
+ return rb_numeric_quo(x, y);
+
+ return rb_funcallv(x, id_quo, 1, &y);
+}
+
+inline static int
+f_negative_p(VALUE x)
+{
+ if (RB_INTEGER_TYPE_P(x))
+ return INT_NEGATIVE_P(x);
+ else if (RB_FLOAT_TYPE_P(x))
+ return RFLOAT_VALUE(x) < 0.0;
+ else if (RB_TYPE_P(x, T_RATIONAL))
+ return INT_NEGATIVE_P(RRATIONAL(x)->num);
+ return rb_num_negative_p(x);
+}
+
+#define f_positive_p(x) (!f_negative_p(x))
+
+inline static bool
+f_zero_p(VALUE x)
+{
+ if (RB_FLOAT_TYPE_P(x)) {
+ return FLOAT_ZERO_P(x);
+ }
+ else if (RB_INTEGER_TYPE_P(x)) {
+ return FIXNUM_ZERO_P(x);
+ }
+ else if (RB_TYPE_P(x, T_RATIONAL)) {
+ const VALUE num = RRATIONAL(x)->num;
+ return FIXNUM_ZERO_P(num);
+ }
+ return rb_equal(x, ZERO) != 0;
+}
+
+#define f_nonzero_p(x) (!f_zero_p(x))
+
+static inline bool
+always_finite_type_p(VALUE x)
+{
+ if (FIXNUM_P(x)) return true;
+ if (FLONUM_P(x)) return true; /* Infinity can't be a flonum */
+ return (RB_INTEGER_TYPE_P(x) || RB_TYPE_P(x, T_RATIONAL));
+}
+
+inline static int
+f_finite_p(VALUE x)
+{
+ if (always_finite_type_p(x)) {
+ return TRUE;
+ }
+ else if (RB_FLOAT_TYPE_P(x)) {
+ return isfinite(RFLOAT_VALUE(x));
+ }
+ return RTEST(rb_funcallv(x, id_finite_p, 0, 0));
+}
+
+inline static int
+f_infinite_p(VALUE x)
+{
+ if (always_finite_type_p(x)) {
+ return FALSE;
+ }
+ else if (RB_FLOAT_TYPE_P(x)) {
+ return isinf(RFLOAT_VALUE(x));
+ }
+ return RTEST(rb_funcallv(x, id_infinite_p, 0, 0));
+}
+
+inline static int
+f_kind_of_p(VALUE x, VALUE c)
+{
+ return (int)rb_obj_is_kind_of(x, c);
+}
+
+inline static int
+k_numeric_p(VALUE x)
+{
+ return f_kind_of_p(x, rb_cNumeric);
+}
+
+#define k_exact_p(x) (!RB_FLOAT_TYPE_P(x))
+
+#define k_exact_zero_p(x) (k_exact_p(x) && f_zero_p(x))
+
+#define get_dat1(x) \
+ struct RComplex *dat = RCOMPLEX(x)
+
+#define get_dat2(x,y) \
+ struct RComplex *adat = RCOMPLEX(x), *bdat = RCOMPLEX(y)
+
+inline static VALUE
+nucomp_s_new_internal(VALUE klass, VALUE real, VALUE imag)
+{
+ NEWOBJ_OF(obj, struct RComplex, klass, T_COMPLEX | (RGENGC_WB_PROTECTED_COMPLEX ? FL_WB_PROTECTED : 0));
+
+ RCOMPLEX_SET_REAL(obj, real);
+ RCOMPLEX_SET_IMAG(obj, imag);
+ OBJ_FREEZE_RAW((VALUE)obj);
+
+ return (VALUE)obj;
+}
+
+static VALUE
+nucomp_s_alloc(VALUE klass)
+{
+ return nucomp_s_new_internal(klass, ZERO, ZERO);
+}
+
+inline static VALUE
+f_complex_new_bang1(VALUE klass, VALUE x)
+{
+ assert(!RB_TYPE_P(x, T_COMPLEX));
+ return nucomp_s_new_internal(klass, x, ZERO);
+}
+
+inline static VALUE
+f_complex_new_bang2(VALUE klass, VALUE x, VALUE y)
+{
+ assert(!RB_TYPE_P(x, T_COMPLEX));
+ assert(!RB_TYPE_P(y, T_COMPLEX));
+ return nucomp_s_new_internal(klass, x, y);
+}
+
+WARN_UNUSED_RESULT(inline static VALUE nucomp_real_check(VALUE num));
+inline static VALUE
+nucomp_real_check(VALUE num)
+{
+ if (!RB_INTEGER_TYPE_P(num) &&
+ !RB_FLOAT_TYPE_P(num) &&
+ !RB_TYPE_P(num, T_RATIONAL)) {
+ if (RB_TYPE_P(num, T_COMPLEX) && nucomp_real_p(num)) {
+ VALUE real = RCOMPLEX(num)->real;
+ assert(!RB_TYPE_P(real, T_COMPLEX));
+ return real;
+ }
+ if (!k_numeric_p(num) || !f_real_p(num))
+ rb_raise(rb_eTypeError, "not a real");
+ }
+ return num;
+}
+
+inline static VALUE
+nucomp_s_canonicalize_internal(VALUE klass, VALUE real, VALUE imag)
+{
+ int complex_r, complex_i;
+ complex_r = RB_TYPE_P(real, T_COMPLEX);
+ complex_i = RB_TYPE_P(imag, T_COMPLEX);
+ if (!complex_r && !complex_i) {
+ return nucomp_s_new_internal(klass, real, imag);
+ }
+ else if (!complex_r) {
+ get_dat1(imag);
+
+ return nucomp_s_new_internal(klass,
+ f_sub(real, dat->imag),
+ f_add(ZERO, dat->real));
+ }
+ else if (!complex_i) {
+ get_dat1(real);
+
+ return nucomp_s_new_internal(klass,
+ dat->real,
+ f_add(dat->imag, imag));
+ }
+ else {
+ get_dat2(real, imag);
+
+ return nucomp_s_new_internal(klass,
+ f_sub(adat->real, bdat->imag),
+ f_add(adat->imag, bdat->real));
+ }
+}
+
+/*
+ * call-seq:
+ * Complex.rect(real[, imag]) -> complex
+ * Complex.rectangular(real[, imag]) -> complex
+ *
+ * Returns a complex object which denotes the given rectangular form.
+ *
+ * Complex.rectangular(1, 2) #=> (1+2i)
+ */
+static VALUE
+nucomp_s_new(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE real, imag;
+
+ switch (rb_scan_args(argc, argv, "11", &real, &imag)) {
+ case 1:
+ real = nucomp_real_check(real);
+ imag = ZERO;
+ break;
+ default:
+ real = nucomp_real_check(real);
+ imag = nucomp_real_check(imag);
+ break;
+ }
+
+ return nucomp_s_new_internal(klass, real, imag);
+}
+
+inline static VALUE
+f_complex_new2(VALUE klass, VALUE x, VALUE y)
+{
+ if (RB_TYPE_P(x, T_COMPLEX)) {
+ get_dat1(x);
+ x = dat->real;
+ y = f_add(dat->imag, y);
+ }
+ return nucomp_s_canonicalize_internal(klass, x, y);
+}
+
+static VALUE nucomp_convert(VALUE klass, VALUE a1, VALUE a2, int raise);
+static VALUE nucomp_s_convert(int argc, VALUE *argv, VALUE klass);
+
+/*
+ * call-seq:
+ * Complex(x[, y], exception: true) -> numeric or nil
+ *
+ * Returns x+i*y;
+ *
+ * Complex(1, 2) #=> (1+2i)
+ * Complex('1+2i') #=> (1+2i)
+ * Complex(nil) #=> TypeError
+ * Complex(1, nil) #=> TypeError
+ *
+ * Complex(1, nil, exception: false) #=> nil
+ * Complex('1+2', exception: false) #=> nil
+ *
+ * Syntax of string form:
+ *
+ * string form = extra spaces , complex , extra spaces ;
+ * complex = real part | [ sign ] , imaginary part
+ * | real part , sign , imaginary part
+ * | rational , "@" , rational ;
+ * real part = rational ;
+ * imaginary part = imaginary unit | unsigned rational , imaginary unit ;
+ * rational = [ sign ] , unsigned rational ;
+ * unsigned rational = numerator | numerator , "/" , denominator ;
+ * numerator = integer part | fractional part | integer part , fractional part ;
+ * denominator = digits ;
+ * integer part = digits ;
+ * fractional part = "." , digits , [ ( "e" | "E" ) , [ sign ] , digits ] ;
+ * imaginary unit = "i" | "I" | "j" | "J" ;
+ * sign = "-" | "+" ;
+ * digits = digit , { digit | "_" , digit };
+ * digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
+ * extra spaces = ? \s* ? ;
+ *
+ * See String#to_c.
+ */
+static VALUE
+nucomp_f_complex(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE a1, a2, opts = Qnil;
+ int raise = TRUE;
+
+ if (rb_scan_args(argc, argv, "11:", &a1, &a2, &opts) == 1) {
+ a2 = Qundef;
+ }
+ if (!NIL_P(opts)) {
+ raise = rb_opts_exception_p(opts, raise);
+ }
+ if (argc > 0 && CLASS_OF(a1) == rb_cComplex && UNDEF_P(a2)) {
+ return a1;
+ }
+ return nucomp_convert(rb_cComplex, a1, a2, raise);
+}
+
+#define imp1(n) \
+inline static VALUE \
+m_##n##_bang(VALUE x)\
+{\
+ return rb_math_##n(x);\
+}
+
+imp1(cos)
+imp1(cosh)
+imp1(exp)
+
+static VALUE
+m_log_bang(VALUE x)
+{
+ return rb_math_log(1, &x);
+}
+
+imp1(sin)
+imp1(sinh)
+
+static VALUE
+m_cos(VALUE x)
+{
+ if (!RB_TYPE_P(x, T_COMPLEX))
+ return m_cos_bang(x);
+ {
+ get_dat1(x);
+ return f_complex_new2(rb_cComplex,
+ f_mul(m_cos_bang(dat->real),
+ m_cosh_bang(dat->imag)),
+ f_mul(f_negate(m_sin_bang(dat->real)),
+ m_sinh_bang(dat->imag)));
+ }
+}
+
+static VALUE
+m_sin(VALUE x)
+{
+ if (!RB_TYPE_P(x, T_COMPLEX))
+ return m_sin_bang(x);
+ {
+ get_dat1(x);
+ return f_complex_new2(rb_cComplex,
+ f_mul(m_sin_bang(dat->real),
+ m_cosh_bang(dat->imag)),
+ f_mul(m_cos_bang(dat->real),
+ m_sinh_bang(dat->imag)));
+ }
+}
+
+static VALUE
+f_complex_polar_real(VALUE klass, VALUE x, VALUE y)
+{
+ if (f_zero_p(x) || f_zero_p(y)) {
+ return nucomp_s_new_internal(klass, x, RFLOAT_0);
+ }
+ if (RB_FLOAT_TYPE_P(y)) {
+ const double arg = RFLOAT_VALUE(y);
+ if (arg == M_PI) {
+ x = f_negate(x);
+ y = RFLOAT_0;
+ }
+ else if (arg == M_PI_2) {
+ y = x;
+ x = RFLOAT_0;
+ }
+ else if (arg == M_PI_2+M_PI) {
+ y = f_negate(x);
+ x = RFLOAT_0;
+ }
+ else if (RB_FLOAT_TYPE_P(x)) {
+ const double abs = RFLOAT_VALUE(x);
+ const double real = abs * cos(arg), imag = abs * sin(arg);
+ x = DBL2NUM(real);
+ y = DBL2NUM(imag);
+ }
+ else {
+ const double ax = sin(arg), ay = cos(arg);
+ y = f_mul(x, DBL2NUM(ax));
+ x = f_mul(x, DBL2NUM(ay));
+ }
+ return nucomp_s_new_internal(klass, x, y);
+ }
+ return nucomp_s_canonicalize_internal(klass,
+ f_mul(x, m_cos(y)),
+ f_mul(x, m_sin(y)));
+}
+
+static VALUE
+f_complex_polar(VALUE klass, VALUE x, VALUE y)
+{
+ x = nucomp_real_check(x);
+ y = nucomp_real_check(y);
+ return f_complex_polar_real(klass, x, y);
+}
+
+#ifdef HAVE___COSPI
+# define cospi(x) __cospi(x)
+#else
+# define cospi(x) cos((x) * M_PI)
+#endif
+#ifdef HAVE___SINPI
+# define sinpi(x) __sinpi(x)
+#else
+# define sinpi(x) sin((x) * M_PI)
+#endif
+/* returns a Complex or Float of ang*PI-rotated abs */
+VALUE
+rb_dbl_complex_new_polar_pi(double abs, double ang)
+{
+ double fi;
+ const double fr = modf(ang, &fi);
+ int pos = fr == +0.5;
+
+ if (pos || fr == -0.5) {
+ if ((modf(fi / 2.0, &fi) != fr) ^ pos) abs = -abs;
+ return rb_complex_new(RFLOAT_0, DBL2NUM(abs));
+ }
+ else if (fr == 0.0) {
+ if (modf(fi / 2.0, &fi) != 0.0) abs = -abs;
+ return DBL2NUM(abs);
+ }
+ else {
+ const double real = abs * cospi(ang), imag = abs * sinpi(ang);
+ return rb_complex_new(DBL2NUM(real), DBL2NUM(imag));
+ }
+}
+
+/*
+ * call-seq:
+ * Complex.polar(abs[, arg]) -> complex
+ *
+ * Returns a complex object which denotes the given polar form.
+ *
+ * Complex.polar(3, 0) #=> (3.0+0.0i)
+ * Complex.polar(3, Math::PI/2) #=> (1.836909530733566e-16+3.0i)
+ * Complex.polar(3, Math::PI) #=> (-3.0+3.673819061467132e-16i)
+ * Complex.polar(3, -Math::PI/2) #=> (1.836909530733566e-16-3.0i)
+ */
+static VALUE
+nucomp_s_polar(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE abs, arg;
+
+ argc = rb_scan_args(argc, argv, "11", &abs, &arg);
+ abs = nucomp_real_check(abs);
+ if (argc == 2) {
+ arg = nucomp_real_check(arg);
+ }
+ else {
+ arg = ZERO;
+ }
+ return f_complex_polar_real(klass, abs, arg);
+}
+
+/*
+ * call-seq:
+ * cmp.real -> real
+ *
+ * Returns the real part.
+ *
+ * Complex(7).real #=> 7
+ * Complex(9, -4).real #=> 9
+ */
+VALUE
+rb_complex_real(VALUE self)
+{
+ get_dat1(self);
+ return dat->real;
+}
+
+/*
+ * call-seq:
+ * cmp.imag -> real
+ * cmp.imaginary -> real
+ *
+ * Returns the imaginary part.
+ *
+ * Complex(7).imaginary #=> 0
+ * Complex(9, -4).imaginary #=> -4
+ */
+VALUE
+rb_complex_imag(VALUE self)
+{
+ get_dat1(self);
+ return dat->imag;
+}
+
+/*
+ * call-seq:
+ * -cmp -> complex
+ *
+ * Returns negation of the value.
+ *
+ * -Complex(1, 2) #=> (-1-2i)
+ */
+VALUE
+rb_complex_uminus(VALUE self)
+{
+ get_dat1(self);
+ return f_complex_new2(CLASS_OF(self),
+ f_negate(dat->real), f_negate(dat->imag));
+}
+
+/*
+ * call-seq:
+ * cmp + numeric -> complex
+ *
+ * Performs addition.
+ *
+ * Complex(2, 3) + Complex(2, 3) #=> (4+6i)
+ * Complex(900) + Complex(1) #=> (901+0i)
+ * Complex(-2, 9) + Complex(-9, 2) #=> (-11+11i)
+ * Complex(9, 8) + 4 #=> (13+8i)
+ * Complex(20, 9) + 9.8 #=> (29.8+9i)
+ */
+VALUE
+rb_complex_plus(VALUE self, VALUE other)
+{
+ if (RB_TYPE_P(other, T_COMPLEX)) {
+ VALUE real, imag;
+
+ get_dat2(self, other);
+
+ real = f_add(adat->real, bdat->real);
+ imag = f_add(adat->imag, bdat->imag);
+
+ return f_complex_new2(CLASS_OF(self), real, imag);
+ }
+ if (k_numeric_p(other) && f_real_p(other)) {
+ get_dat1(self);
+
+ return f_complex_new2(CLASS_OF(self),
+ f_add(dat->real, other), dat->imag);
+ }
+ return rb_num_coerce_bin(self, other, '+');
+}
+
+/*
+ * call-seq:
+ * cmp - numeric -> complex
+ *
+ * Performs subtraction.
+ *
+ * Complex(2, 3) - Complex(2, 3) #=> (0+0i)
+ * Complex(900) - Complex(1) #=> (899+0i)
+ * Complex(-2, 9) - Complex(-9, 2) #=> (7+7i)
+ * Complex(9, 8) - 4 #=> (5+8i)
+ * Complex(20, 9) - 9.8 #=> (10.2+9i)
+ */
+VALUE
+rb_complex_minus(VALUE self, VALUE other)
+{
+ if (RB_TYPE_P(other, T_COMPLEX)) {
+ VALUE real, imag;
+
+ get_dat2(self, other);
+
+ real = f_sub(adat->real, bdat->real);
+ imag = f_sub(adat->imag, bdat->imag);
+
+ return f_complex_new2(CLASS_OF(self), real, imag);
+ }
+ if (k_numeric_p(other) && f_real_p(other)) {
+ get_dat1(self);
+
+ return f_complex_new2(CLASS_OF(self),
+ f_sub(dat->real, other), dat->imag);
+ }
+ return rb_num_coerce_bin(self, other, '-');
+}
+
+static VALUE
+safe_mul(VALUE a, VALUE b, bool az, bool bz)
+{
+ double v;
+ if (!az && bz && RB_FLOAT_TYPE_P(a) && (v = RFLOAT_VALUE(a), !isnan(v))) {
+ a = signbit(v) ? DBL2NUM(-1.0) : DBL2NUM(1.0);
+ }
+ if (!bz && az && RB_FLOAT_TYPE_P(b) && (v = RFLOAT_VALUE(b), !isnan(v))) {
+ b = signbit(v) ? DBL2NUM(-1.0) : DBL2NUM(1.0);
+ }
+ return f_mul(a, b);
+}
+
+static void
+comp_mul(VALUE areal, VALUE aimag, VALUE breal, VALUE bimag, VALUE *real, VALUE *imag)
+{
+ bool arzero = f_zero_p(areal);
+ bool aizero = f_zero_p(aimag);
+ bool brzero = f_zero_p(breal);
+ bool bizero = f_zero_p(bimag);
+ *real = f_sub(safe_mul(areal, breal, arzero, brzero),
+ safe_mul(aimag, bimag, aizero, bizero));
+ *imag = f_add(safe_mul(areal, bimag, arzero, bizero),
+ safe_mul(aimag, breal, aizero, brzero));
+}
+
+/*
+ * call-seq:
+ * cmp * numeric -> complex
+ *
+ * Performs multiplication.
+ *
+ * Complex(2, 3) * Complex(2, 3) #=> (-5+12i)
+ * Complex(900) * Complex(1) #=> (900+0i)
+ * Complex(-2, 9) * Complex(-9, 2) #=> (0-85i)
+ * Complex(9, 8) * 4 #=> (36+32i)
+ * Complex(20, 9) * 9.8 #=> (196.0+88.2i)
+ */
+VALUE
+rb_complex_mul(VALUE self, VALUE other)
+{
+ if (RB_TYPE_P(other, T_COMPLEX)) {
+ VALUE real, imag;
+ get_dat2(self, other);
+
+ comp_mul(adat->real, adat->imag, bdat->real, bdat->imag, &real, &imag);
+
+ return f_complex_new2(CLASS_OF(self), real, imag);
+ }
+ if (k_numeric_p(other) && f_real_p(other)) {
+ get_dat1(self);
+
+ return f_complex_new2(CLASS_OF(self),
+ f_mul(dat->real, other),
+ f_mul(dat->imag, other));
+ }
+ return rb_num_coerce_bin(self, other, '*');
+}
+
+inline static VALUE
+f_divide(VALUE self, VALUE other,
+ VALUE (*func)(VALUE, VALUE), ID id)
+{
+ if (RB_TYPE_P(other, T_COMPLEX)) {
+ VALUE r, n, x, y;
+ int flo;
+ get_dat2(self, other);
+
+ flo = (RB_FLOAT_TYPE_P(adat->real) || RB_FLOAT_TYPE_P(adat->imag) ||
+ RB_FLOAT_TYPE_P(bdat->real) || RB_FLOAT_TYPE_P(bdat->imag));
+
+ if (f_gt_p(f_abs(bdat->real), f_abs(bdat->imag))) {
+ r = (*func)(bdat->imag, bdat->real);
+ n = f_mul(bdat->real, f_add(ONE, f_mul(r, r)));
+ x = (*func)(f_add(adat->real, f_mul(adat->imag, r)), n);
+ y = (*func)(f_sub(adat->imag, f_mul(adat->real, r)), n);
+ }
+ else {
+ r = (*func)(bdat->real, bdat->imag);
+ n = f_mul(bdat->imag, f_add(ONE, f_mul(r, r)));
+ x = (*func)(f_add(f_mul(adat->real, r), adat->imag), n);
+ y = (*func)(f_sub(f_mul(adat->imag, r), adat->real), n);
+ }
+ if (!flo) {
+ x = rb_rational_canonicalize(x);
+ y = rb_rational_canonicalize(y);
+ }
+ return f_complex_new2(CLASS_OF(self), x, y);
+ }
+ if (k_numeric_p(other) && f_real_p(other)) {
+ VALUE x, y;
+ get_dat1(self);
+ x = rb_rational_canonicalize((*func)(dat->real, other));
+ y = rb_rational_canonicalize((*func)(dat->imag, other));
+ return f_complex_new2(CLASS_OF(self), x, y);
+ }
+ return rb_num_coerce_bin(self, other, id);
+}
+
+#define rb_raise_zerodiv() rb_raise(rb_eZeroDivError, "divided by 0")
+
+/*
+ * call-seq:
+ * cmp / numeric -> complex
+ * cmp.quo(numeric) -> complex
+ *
+ * Performs division.
+ *
+ * Complex(2, 3) / Complex(2, 3) #=> ((1/1)+(0/1)*i)
+ * Complex(900) / Complex(1) #=> ((900/1)+(0/1)*i)
+ * Complex(-2, 9) / Complex(-9, 2) #=> ((36/85)-(77/85)*i)
+ * Complex(9, 8) / 4 #=> ((9/4)+(2/1)*i)
+ * Complex(20, 9) / 9.8 #=> (2.0408163265306123+0.9183673469387754i)
+ */
+VALUE
+rb_complex_div(VALUE self, VALUE other)
+{
+ return f_divide(self, other, f_quo, id_quo);
+}
+
+#define nucomp_quo rb_complex_div
+
+/*
+ * call-seq:
+ * cmp.fdiv(numeric) -> complex
+ *
+ * Performs division as each part is a float, never returns a float.
+ *
+ * Complex(11, 22).fdiv(3) #=> (3.6666666666666665+7.333333333333333i)
+ */
+static VALUE
+nucomp_fdiv(VALUE self, VALUE other)
+{
+ return f_divide(self, other, f_fdiv, id_fdiv);
+}
+
+inline static VALUE
+f_reciprocal(VALUE x)
+{
+ return f_quo(ONE, x);
+}
+
+/*
+ * call-seq:
+ * cmp ** numeric -> complex
+ *
+ * Performs exponentiation.
+ *
+ * Complex('i') ** 2 #=> (-1+0i)
+ * Complex(-8) ** Rational(1, 3) #=> (1.0000000000000002+1.7320508075688772i)
+ */
+VALUE
+rb_complex_pow(VALUE self, VALUE other)
+{
+ if (k_numeric_p(other) && k_exact_zero_p(other))
+ return f_complex_new_bang1(CLASS_OF(self), ONE);
+
+ if (RB_TYPE_P(other, T_RATIONAL) && RRATIONAL(other)->den == LONG2FIX(1))
+ other = RRATIONAL(other)->num; /* c14n */
+
+ if (RB_TYPE_P(other, T_COMPLEX)) {
+ get_dat1(other);
+
+ if (k_exact_zero_p(dat->imag))
+ other = dat->real; /* c14n */
+ }
+
+ if (RB_TYPE_P(other, T_COMPLEX)) {
+ VALUE r, theta, nr, ntheta;
+
+ get_dat1(other);
+
+ r = f_abs(self);
+ theta = f_arg(self);
+
+ nr = m_exp_bang(f_sub(f_mul(dat->real, m_log_bang(r)),
+ f_mul(dat->imag, theta)));
+ ntheta = f_add(f_mul(theta, dat->real),
+ f_mul(dat->imag, m_log_bang(r)));
+ return f_complex_polar(CLASS_OF(self), nr, ntheta);
+ }
+ if (FIXNUM_P(other)) {
+ long n = FIX2LONG(other);
+ if (n == 0) {
+ return nucomp_s_new_internal(CLASS_OF(self), ONE, ZERO);
+ }
+ if (n < 0) {
+ self = f_reciprocal(self);
+ other = rb_int_uminus(other);
+ n = -n;
+ }
+ {
+ get_dat1(self);
+ VALUE xr = dat->real, xi = dat->imag, zr = xr, zi = xi;
+
+ if (f_zero_p(xi)) {
+ zr = rb_num_pow(zr, other);
+ }
+ else if (f_zero_p(xr)) {
+ zi = rb_num_pow(zi, other);
+ if (n & 2) zi = f_negate(zi);
+ if (!(n & 1)) {
+ VALUE tmp = zr;
+ zr = zi;
+ zi = tmp;
+ }
+ }
+ else {
+ while (--n) {
+ long q, r;
+
+ for (; q = n / 2, r = n % 2, r == 0; n = q) {
+ VALUE tmp = f_sub(f_mul(xr, xr), f_mul(xi, xi));
+ xi = f_mul(f_mul(TWO, xr), xi);
+ xr = tmp;
+ }
+ comp_mul(zr, zi, xr, xi, &zr, &zi);
+ }
+ }
+ return nucomp_s_new_internal(CLASS_OF(self), zr, zi);
+ }
+ }
+ if (k_numeric_p(other) && f_real_p(other)) {
+ VALUE r, theta;
+
+ if (RB_BIGNUM_TYPE_P(other))
+ rb_warn("in a**b, b may be too big");
+
+ r = f_abs(self);
+ theta = f_arg(self);
+
+ return f_complex_polar(CLASS_OF(self), f_expt(r, other),
+ f_mul(theta, other));
+ }
+ return rb_num_coerce_bin(self, other, id_expt);
+}
+
+/*
+ * call-seq:
+ * cmp == object -> true or false
+ *
+ * Returns true if cmp equals object numerically.
+ *
+ * Complex(2, 3) == Complex(2, 3) #=> true
+ * Complex(5) == 5 #=> true
+ * Complex(0) == 0.0 #=> true
+ * Complex('1/3') == 0.33 #=> false
+ * Complex('1/2') == '1/2' #=> false
+ */
+static VALUE
+nucomp_eqeq_p(VALUE self, VALUE other)
+{
+ if (RB_TYPE_P(other, T_COMPLEX)) {
+ get_dat2(self, other);
+
+ return RBOOL(f_eqeq_p(adat->real, bdat->real) &&
+ f_eqeq_p(adat->imag, bdat->imag));
+ }
+ if (k_numeric_p(other) && f_real_p(other)) {
+ get_dat1(self);
+
+ return RBOOL(f_eqeq_p(dat->real, other) && f_zero_p(dat->imag));
+ }
+ return RBOOL(f_eqeq_p(other, self));
+}
+
+static bool
+nucomp_real_p(VALUE self)
+{
+ get_dat1(self);
+ return f_zero_p(dat->imag);
+}
+
+/*
+ * call-seq:
+ * cmp <=> object -> 0, 1, -1, or nil
+ *
+ * If +cmp+'s imaginary part is zero, and +object+ is also a
+ * real number (or a Complex number where the imaginary part is zero),
+ * compare the real part of +cmp+ to object. Otherwise, return nil.
+ *
+ * Complex(2, 3) <=> Complex(2, 3) #=> nil
+ * Complex(2, 3) <=> 1 #=> nil
+ * Complex(2) <=> 1 #=> 1
+ * Complex(2) <=> 2 #=> 0
+ * Complex(2) <=> 3 #=> -1
+ */
+static VALUE
+nucomp_cmp(VALUE self, VALUE other)
+{
+ if (!k_numeric_p(other)) {
+ return rb_num_coerce_cmp(self, other, idCmp);
+ }
+ if (!nucomp_real_p(self)) {
+ return Qnil;
+ }
+ if (RB_TYPE_P(other, T_COMPLEX)) {
+ if (nucomp_real_p(other)) {
+ get_dat2(self, other);
+ return rb_funcall(adat->real, idCmp, 1, bdat->real);
+ }
+ }
+ else {
+ get_dat1(self);
+ if (f_real_p(other)) {
+ return rb_funcall(dat->real, idCmp, 1, other);
+ }
+ else {
+ return rb_num_coerce_cmp(dat->real, other, idCmp);
+ }
+ }
+ return Qnil;
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_coerce(VALUE self, VALUE other)
+{
+ if (RB_TYPE_P(other, T_COMPLEX))
+ return rb_assoc_new(other, self);
+ if (k_numeric_p(other) && f_real_p(other))
+ return rb_assoc_new(f_complex_new_bang1(CLASS_OF(self), other), self);
+
+ rb_raise(rb_eTypeError, "%"PRIsVALUE" can't be coerced into %"PRIsVALUE,
+ rb_obj_class(other), rb_obj_class(self));
+ return Qnil;
+}
+
+/*
+ * call-seq:
+ * cmp.abs -> real
+ * cmp.magnitude -> real
+ *
+ * Returns the absolute part of its polar form.
+ *
+ * Complex(-1).abs #=> 1
+ * Complex(3.0, -4.0).abs #=> 5.0
+ */
+VALUE
+rb_complex_abs(VALUE self)
+{
+ get_dat1(self);
+
+ if (f_zero_p(dat->real)) {
+ VALUE a = f_abs(dat->imag);
+ if (RB_FLOAT_TYPE_P(dat->real) && !RB_FLOAT_TYPE_P(dat->imag))
+ a = f_to_f(a);
+ return a;
+ }
+ if (f_zero_p(dat->imag)) {
+ VALUE a = f_abs(dat->real);
+ if (!RB_FLOAT_TYPE_P(dat->real) && RB_FLOAT_TYPE_P(dat->imag))
+ a = f_to_f(a);
+ return a;
+ }
+ return rb_math_hypot(dat->real, dat->imag);
+}
+
+/*
+ * call-seq:
+ * cmp.abs2 -> real
+ *
+ * Returns square of the absolute value.
+ *
+ * Complex(-1).abs2 #=> 1
+ * Complex(3.0, -4.0).abs2 #=> 25.0
+ */
+static VALUE
+nucomp_abs2(VALUE self)
+{
+ get_dat1(self);
+ return f_add(f_mul(dat->real, dat->real),
+ f_mul(dat->imag, dat->imag));
+}
+
+/*
+ * call-seq:
+ * cmp.arg -> float
+ * cmp.angle -> float
+ * cmp.phase -> float
+ *
+ * Returns the angle part of its polar form.
+ *
+ * Complex.polar(3, Math::PI/2).arg #=> 1.5707963267948966
+ */
+VALUE
+rb_complex_arg(VALUE self)
+{
+ get_dat1(self);
+ return rb_math_atan2(dat->imag, dat->real);
+}
+
+/*
+ * call-seq:
+ * cmp.rect -> array
+ * cmp.rectangular -> array
+ *
+ * Returns an array; [cmp.real, cmp.imag].
+ *
+ * Complex(1, 2).rectangular #=> [1, 2]
+ */
+static VALUE
+nucomp_rect(VALUE self)
+{
+ get_dat1(self);
+ return rb_assoc_new(dat->real, dat->imag);
+}
+
+/*
+ * call-seq:
+ * cmp.polar -> array
+ *
+ * Returns an array; [cmp.abs, cmp.arg].
+ *
+ * Complex(1, 2).polar #=> [2.23606797749979, 1.1071487177940904]
+ */
+static VALUE
+nucomp_polar(VALUE self)
+{
+ return rb_assoc_new(f_abs(self), f_arg(self));
+}
+
+/*
+ * call-seq:
+ * cmp.conj -> complex
+ * cmp.conjugate -> complex
+ *
+ * Returns the complex conjugate.
+ *
+ * Complex(1, 2).conjugate #=> (1-2i)
+ */
+VALUE
+rb_complex_conjugate(VALUE self)
+{
+ get_dat1(self);
+ return f_complex_new2(CLASS_OF(self), dat->real, f_negate(dat->imag));
+}
+
+/*
+ * call-seq:
+ * Complex(1).real? -> false
+ * Complex(1, 2).real? -> false
+ *
+ * Returns false, even if the complex number has no imaginary part.
+ */
+static VALUE
+nucomp_real_p_m(VALUE self)
+{
+ return Qfalse;
+}
+
+/*
+ * call-seq:
+ * cmp.denominator -> integer
+ *
+ * Returns the denominator (lcm of both denominator - real and imag).
+ *
+ * See numerator.
+ */
+static VALUE
+nucomp_denominator(VALUE self)
+{
+ get_dat1(self);
+ return rb_lcm(f_denominator(dat->real), f_denominator(dat->imag));
+}
+
+/*
+ * call-seq:
+ * cmp.numerator -> numeric
+ *
+ * Returns the numerator.
+ *
+ * 1 2 3+4i <- numerator
+ * - + -i -> ----
+ * 2 3 6 <- denominator
+ *
+ * c = Complex('1/2+2/3i') #=> ((1/2)+(2/3)*i)
+ * n = c.numerator #=> (3+4i)
+ * d = c.denominator #=> 6
+ * n / d #=> ((1/2)+(2/3)*i)
+ * Complex(Rational(n.real, d), Rational(n.imag, d))
+ * #=> ((1/2)+(2/3)*i)
+ * See denominator.
+ */
+static VALUE
+nucomp_numerator(VALUE self)
+{
+ VALUE cd;
+
+ get_dat1(self);
+
+ cd = nucomp_denominator(self);
+ return f_complex_new2(CLASS_OF(self),
+ f_mul(f_numerator(dat->real),
+ f_div(cd, f_denominator(dat->real))),
+ f_mul(f_numerator(dat->imag),
+ f_div(cd, f_denominator(dat->imag))));
+}
+
+/* :nodoc: */
+st_index_t
+rb_complex_hash(VALUE self)
+{
+ st_index_t v, h[2];
+ VALUE n;
+
+ get_dat1(self);
+ n = rb_hash(dat->real);
+ h[0] = NUM2LONG(n);
+ n = rb_hash(dat->imag);
+ h[1] = NUM2LONG(n);
+ v = rb_memhash(h, sizeof(h));
+ return v;
+}
+
+static VALUE
+nucomp_hash(VALUE self)
+{
+ return ST2FIX(rb_complex_hash(self));
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_eql_p(VALUE self, VALUE other)
+{
+ if (RB_TYPE_P(other, T_COMPLEX)) {
+ get_dat2(self, other);
+
+ return RBOOL((CLASS_OF(adat->real) == CLASS_OF(bdat->real)) &&
+ (CLASS_OF(adat->imag) == CLASS_OF(bdat->imag)) &&
+ f_eqeq_p(self, other));
+
+ }
+ return Qfalse;
+}
+
+inline static int
+f_signbit(VALUE x)
+{
+ if (RB_FLOAT_TYPE_P(x)) {
+ double f = RFLOAT_VALUE(x);
+ return !isnan(f) && signbit(f);
+ }
+ return f_negative_p(x);
+}
+
+inline static int
+f_tpositive_p(VALUE x)
+{
+ return !f_signbit(x);
+}
+
+static VALUE
+f_format(VALUE self, VALUE (*func)(VALUE))
+{
+ VALUE s;
+ int impos;
+
+ get_dat1(self);
+
+ impos = f_tpositive_p(dat->imag);
+
+ s = (*func)(dat->real);
+ rb_str_cat2(s, !impos ? "-" : "+");
+
+ rb_str_concat(s, (*func)(f_abs(dat->imag)));
+ if (!rb_isdigit(RSTRING_PTR(s)[RSTRING_LEN(s) - 1]))
+ rb_str_cat2(s, "*");
+ rb_str_cat2(s, "i");
+
+ return s;
+}
+
+/*
+ * call-seq:
+ * cmp.to_s -> string
+ *
+ * Returns the value as a string.
+ *
+ * Complex(2).to_s #=> "2+0i"
+ * Complex('-8/6').to_s #=> "-4/3+0i"
+ * Complex('1/2i').to_s #=> "0+1/2i"
+ * Complex(0, Float::INFINITY).to_s #=> "0+Infinity*i"
+ * Complex(Float::NAN, Float::NAN).to_s #=> "NaN+NaN*i"
+ */
+static VALUE
+nucomp_to_s(VALUE self)
+{
+ return f_format(self, rb_String);
+}
+
+/*
+ * call-seq:
+ * cmp.inspect -> string
+ *
+ * Returns the value as a string for inspection.
+ *
+ * Complex(2).inspect #=> "(2+0i)"
+ * Complex('-8/6').inspect #=> "((-4/3)+0i)"
+ * Complex('1/2i').inspect #=> "(0+(1/2)*i)"
+ * Complex(0, Float::INFINITY).inspect #=> "(0+Infinity*i)"
+ * Complex(Float::NAN, Float::NAN).inspect #=> "(NaN+NaN*i)"
+ */
+static VALUE
+nucomp_inspect(VALUE self)
+{
+ VALUE s;
+
+ s = rb_usascii_str_new2("(");
+ rb_str_concat(s, f_format(self, rb_inspect));
+ rb_str_cat2(s, ")");
+
+ return s;
+}
+
+#define FINITE_TYPE_P(v) (RB_INTEGER_TYPE_P(v) || RB_TYPE_P(v, T_RATIONAL))
+
+/*
+ * call-seq:
+ * cmp.finite? -> true or false
+ *
+ * Returns +true+ if +cmp+'s real and imaginary parts are both finite numbers,
+ * otherwise returns +false+.
+ */
+static VALUE
+rb_complex_finite_p(VALUE self)
+{
+ get_dat1(self);
+
+ return RBOOL(f_finite_p(dat->real) && f_finite_p(dat->imag));
+}
+
+/*
+ * call-seq:
+ * cmp.infinite? -> nil or 1
+ *
+ * Returns +1+ if +cmp+'s real or imaginary part is an infinite number,
+ * otherwise returns +nil+.
+ *
+ * For example:
+ *
+ * (1+1i).infinite? #=> nil
+ * (Float::INFINITY + 1i).infinite? #=> 1
+ */
+static VALUE
+rb_complex_infinite_p(VALUE self)
+{
+ get_dat1(self);
+
+ if (!f_infinite_p(dat->real) && !f_infinite_p(dat->imag)) {
+ return Qnil;
+ }
+ return ONE;
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_dumper(VALUE self)
+{
+ return self;
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_loader(VALUE self, VALUE a)
+{
+ get_dat1(self);
+
+ RCOMPLEX_SET_REAL(dat, rb_ivar_get(a, id_i_real));
+ RCOMPLEX_SET_IMAG(dat, rb_ivar_get(a, id_i_imag));
+ OBJ_FREEZE_RAW(self);
+
+ return self;
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_marshal_dump(VALUE self)
+{
+ VALUE a;
+ get_dat1(self);
+
+ a = rb_assoc_new(dat->real, dat->imag);
+ rb_copy_generic_ivar(a, self);
+ return a;
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_marshal_load(VALUE self, VALUE a)
+{
+ Check_Type(a, T_ARRAY);
+ if (RARRAY_LEN(a) != 2)
+ rb_raise(rb_eArgError, "marshaled complex must have an array whose length is 2 but %ld", RARRAY_LEN(a));
+ rb_ivar_set(self, id_i_real, RARRAY_AREF(a, 0));
+ rb_ivar_set(self, id_i_imag, RARRAY_AREF(a, 1));
+ return self;
+}
+
+VALUE
+rb_complex_raw(VALUE x, VALUE y)
+{
+ return nucomp_s_new_internal(rb_cComplex, x, y);
+}
+
+VALUE
+rb_complex_new(VALUE x, VALUE y)
+{
+ return nucomp_s_canonicalize_internal(rb_cComplex, x, y);
+}
+
+VALUE
+rb_complex_new_polar(VALUE x, VALUE y)
+{
+ return f_complex_polar(rb_cComplex, x, y);
+}
+
+VALUE
+rb_complex_polar(VALUE x, VALUE y)
+{
+ return rb_complex_new_polar(x, y);
+}
+
+VALUE
+rb_Complex(VALUE x, VALUE y)
+{
+ VALUE a[2];
+ a[0] = x;
+ a[1] = y;
+ return nucomp_s_convert(2, a, rb_cComplex);
+}
+
+VALUE
+rb_dbl_complex_new(double real, double imag)
+{
+ return rb_complex_raw(DBL2NUM(real), DBL2NUM(imag));
+}
+
+/*
+ * call-seq:
+ * cmp.to_i -> integer
+ *
+ * Returns the value as an integer if possible (the imaginary part
+ * should be exactly zero).
+ *
+ * Complex(1, 0).to_i #=> 1
+ * Complex(1, 0.0).to_i # RangeError
+ * Complex(1, 2).to_i # RangeError
+ */
+static VALUE
+nucomp_to_i(VALUE self)
+{
+ get_dat1(self);
+
+ if (!k_exact_zero_p(dat->imag)) {
+ rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Integer",
+ self);
+ }
+ return f_to_i(dat->real);
+}
+
+/*
+ * call-seq:
+ * cmp.to_f -> float
+ *
+ * Returns the value as a float if possible (the imaginary part should
+ * be exactly zero).
+ *
+ * Complex(1, 0).to_f #=> 1.0
+ * Complex(1, 0.0).to_f # RangeError
+ * Complex(1, 2).to_f # RangeError
+ */
+static VALUE
+nucomp_to_f(VALUE self)
+{
+ get_dat1(self);
+
+ if (!k_exact_zero_p(dat->imag)) {
+ rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Float",
+ self);
+ }
+ return f_to_f(dat->real);
+}
+
+/*
+ * call-seq:
+ * cmp.to_r -> rational
+ *
+ * Returns the value as a rational if possible (the imaginary part
+ * should be exactly zero).
+ *
+ * Complex(1, 0).to_r #=> (1/1)
+ * Complex(1, 0.0).to_r # RangeError
+ * Complex(1, 2).to_r # RangeError
+ *
+ * See rationalize.
+ */
+static VALUE
+nucomp_to_r(VALUE self)
+{
+ get_dat1(self);
+
+ if (!k_exact_zero_p(dat->imag)) {
+ rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Rational",
+ self);
+ }
+ return f_to_r(dat->real);
+}
+
+/*
+ * call-seq:
+ * cmp.rationalize([eps]) -> rational
+ *
+ * Returns the value as a rational if possible (the imaginary part
+ * should be exactly zero).
+ *
+ * Complex(1.0/3, 0).rationalize #=> (1/3)
+ * Complex(1, 0.0).rationalize # RangeError
+ * Complex(1, 2).rationalize # RangeError
+ *
+ * See to_r.
+ */
+static VALUE
+nucomp_rationalize(int argc, VALUE *argv, VALUE self)
+{
+ get_dat1(self);
+
+ rb_check_arity(argc, 0, 1);
+
+ if (!k_exact_zero_p(dat->imag)) {
+ rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Rational",
+ self);
+ }
+ return rb_funcallv(dat->real, id_rationalize, argc, argv);
+}
+
+/*
+ * call-seq:
+ * complex.to_c -> self
+ *
+ * Returns self.
+ *
+ * Complex(2).to_c #=> (2+0i)
+ * Complex(-8, 6).to_c #=> (-8+6i)
+ */
+static VALUE
+nucomp_to_c(VALUE self)
+{
+ return self;
+}
+
+/*
+ * call-seq:
+ * nil.to_c -> (0+0i)
+ *
+ * Returns zero as a complex.
+ */
+static VALUE
+nilclass_to_c(VALUE self)
+{
+ return rb_complex_new1(INT2FIX(0));
+}
+
+/*
+ * call-seq:
+ * num.to_c -> complex
+ *
+ * Returns the value as a complex.
+ */
+static VALUE
+numeric_to_c(VALUE self)
+{
+ return rb_complex_new1(self);
+}
+
+inline static int
+issign(int c)
+{
+ return (c == '-' || c == '+');
+}
+
+static int
+read_sign(const char **s,
+ char **b)
+{
+ int sign = '?';
+
+ if (issign(**s)) {
+ sign = **b = **s;
+ (*s)++;
+ (*b)++;
+ }
+ return sign;
+}
+
+inline static int
+isdecimal(int c)
+{
+ return isdigit((unsigned char)c);
+}
+
+static int
+read_digits(const char **s, int strict,
+ char **b)
+{
+ int us = 1;
+
+ if (!isdecimal(**s))
+ return 0;
+
+ while (isdecimal(**s) || **s == '_') {
+ if (**s == '_') {
+ if (us) {
+ if (strict) return 0;
+ break;
+ }
+ us = 1;
+ }
+ else {
+ **b = **s;
+ (*b)++;
+ us = 0;
+ }
+ (*s)++;
+ }
+ if (us)
+ do {
+ (*s)--;
+ } while (**s == '_');
+ return 1;
+}
+
+inline static int
+islettere(int c)
+{
+ return (c == 'e' || c == 'E');
+}
+
+static int
+read_num(const char **s, int strict,
+ char **b)
+{
+ if (**s != '.') {
+ if (!read_digits(s, strict, b))
+ return 0;
+ }
+
+ if (**s == '.') {
+ **b = **s;
+ (*s)++;
+ (*b)++;
+ if (!read_digits(s, strict, b)) {
+ (*b)--;
+ return 0;
+ }
+ }
+
+ if (islettere(**s)) {
+ **b = **s;
+ (*s)++;
+ (*b)++;
+ read_sign(s, b);
+ if (!read_digits(s, strict, b)) {
+ (*b)--;
+ return 0;
+ }
+ }
+ return 1;
+}
+
+inline static int
+read_den(const char **s, int strict,
+ char **b)
+{
+ if (!read_digits(s, strict, b))
+ return 0;
+ return 1;
+}
+
+static int
+read_rat_nos(const char **s, int strict,
+ char **b)
+{
+ if (!read_num(s, strict, b))
+ return 0;
+ if (**s == '/') {
+ **b = **s;
+ (*s)++;
+ (*b)++;
+ if (!read_den(s, strict, b)) {
+ (*b)--;
+ return 0;
+ }
+ }
+ return 1;
+}
+
+static int
+read_rat(const char **s, int strict,
+ char **b)
+{
+ read_sign(s, b);
+ if (!read_rat_nos(s, strict, b))
+ return 0;
+ return 1;
+}
+
+inline static int
+isimagunit(int c)
+{
+ return (c == 'i' || c == 'I' ||
+ c == 'j' || c == 'J');
+}
+
+static VALUE
+str2num(char *s)
+{
+ if (strchr(s, '/'))
+ return rb_cstr_to_rat(s, 0);
+ if (strpbrk(s, ".eE"))
+ return DBL2NUM(rb_cstr_to_dbl(s, 0));
+ return rb_cstr_to_inum(s, 10, 0);
+}
+
+static int
+read_comp(const char **s, int strict,
+ VALUE *ret, char **b)
+{
+ char *bb;
+ int sign;
+ VALUE num, num2;
+
+ bb = *b;
+
+ sign = read_sign(s, b);
+
+ if (isimagunit(**s)) {
+ (*s)++;
+ num = INT2FIX((sign == '-') ? -1 : + 1);
+ *ret = rb_complex_new2(ZERO, num);
+ return 1; /* e.g. "i" */
+ }
+
+ if (!read_rat_nos(s, strict, b)) {
+ **b = '\0';
+ num = str2num(bb);
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "-" */
+ }
+ **b = '\0';
+ num = str2num(bb);
+
+ if (isimagunit(**s)) {
+ (*s)++;
+ *ret = rb_complex_new2(ZERO, num);
+ return 1; /* e.g. "3i" */
+ }
+
+ if (**s == '@') {
+ int st;
+
+ (*s)++;
+ bb = *b;
+ st = read_rat(s, strict, b);
+ **b = '\0';
+ if (strlen(bb) < 1 ||
+ !isdecimal(*(bb + strlen(bb) - 1))) {
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "1@-" */
+ }
+ num2 = str2num(bb);
+ *ret = rb_complex_new_polar(num, num2);
+ if (!st)
+ return 0; /* e.g. "1@2." */
+ else
+ return 1; /* e.g. "1@2" */
+ }
+
+ if (issign(**s)) {
+ bb = *b;
+ sign = read_sign(s, b);
+ if (isimagunit(**s))
+ num2 = INT2FIX((sign == '-') ? -1 : + 1);
+ else {
+ if (!read_rat_nos(s, strict, b)) {
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "1+xi" */
+ }
+ **b = '\0';
+ num2 = str2num(bb);
+ }
+ if (!isimagunit(**s)) {
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "1+3x" */
+ }
+ (*s)++;
+ *ret = rb_complex_new2(num, num2);
+ return 1; /* e.g. "1+2i" */
+ }
+ /* !(@, - or +) */
+ {
+ *ret = rb_complex_new2(num, ZERO);
+ return 1; /* e.g. "3" */
+ }
+}
+
+inline static void
+skip_ws(const char **s)
+{
+ while (isspace((unsigned char)**s))
+ (*s)++;
+}
+
+static int
+parse_comp(const char *s, int strict, VALUE *num)
+{
+ char *buf, *b;
+ VALUE tmp;
+ int ret = 1;
+
+ buf = ALLOCV_N(char, tmp, strlen(s) + 1);
+ b = buf;
+
+ skip_ws(&s);
+ if (!read_comp(&s, strict, num, &b)) {
+ ret = 0;
+ }
+ else {
+ skip_ws(&s);
+
+ if (strict)
+ if (*s != '\0')
+ ret = 0;
+ }
+ ALLOCV_END(tmp);
+
+ return ret;
+}
+
+static VALUE
+string_to_c_strict(VALUE self, int raise)
+{
+ char *s;
+ VALUE num;
+
+ rb_must_asciicompat(self);
+
+ s = RSTRING_PTR(self);
+
+ if (!s || memchr(s, '\0', RSTRING_LEN(self))) {
+ if (!raise) return Qnil;
+ rb_raise(rb_eArgError, "string contains null byte");
+ }
+
+ if (s && s[RSTRING_LEN(self)]) {
+ rb_str_modify(self);
+ s = RSTRING_PTR(self);
+ s[RSTRING_LEN(self)] = '\0';
+ }
+
+ if (!s)
+ s = (char *)"";
+
+ if (!parse_comp(s, 1, &num)) {
+ if (!raise) return Qnil;
+ rb_raise(rb_eArgError, "invalid value for convert(): %+"PRIsVALUE,
+ self);
+ }
+
+ return num;
+}
+
+/*
+ * call-seq:
+ * str.to_c -> complex
+ *
+ * Returns a complex which denotes the string form. The parser
+ * ignores leading whitespaces and trailing garbage. Any digit
+ * sequences can be separated by an underscore. Returns zero for null
+ * or garbage string.
+ *
+ * '9'.to_c #=> (9+0i)
+ * '2.5'.to_c #=> (2.5+0i)
+ * '2.5/1'.to_c #=> ((5/2)+0i)
+ * '-3/2'.to_c #=> ((-3/2)+0i)
+ * '-i'.to_c #=> (0-1i)
+ * '45i'.to_c #=> (0+45i)
+ * '3-4i'.to_c #=> (3-4i)
+ * '-4e2-4e-2i'.to_c #=> (-400.0-0.04i)
+ * '-0.0-0.0i'.to_c #=> (-0.0-0.0i)
+ * '1/2+3/4i'.to_c #=> ((1/2)+(3/4)*i)
+ * 'ruby'.to_c #=> (0+0i)
+ *
+ * Polar form:
+ * include Math
+ * "1.0@0".to_c #=> (1+0.0i)
+ * "1.0@#{PI/2}".to_c #=> (0.0+1i)
+ * "1.0@#{PI}".to_c #=> (-1+0.0i)
+ *
+ * See Kernel.Complex.
+ */
+static VALUE
+string_to_c(VALUE self)
+{
+ char *s;
+ VALUE num;
+
+ rb_must_asciicompat(self);
+
+ s = RSTRING_PTR(self);
+
+ if (s && s[RSTRING_LEN(self)]) {
+ rb_str_modify(self);
+ s = RSTRING_PTR(self);
+ s[RSTRING_LEN(self)] = '\0';
+ }
+
+ if (!s)
+ s = (char *)"";
+
+ (void)parse_comp(s, 0, &num);
+
+ return num;
+}
+
+static VALUE
+to_complex(VALUE val)
+{
+ return rb_convert_type(val, T_COMPLEX, "Complex", "to_c");
+}
+
+static VALUE
+nucomp_convert(VALUE klass, VALUE a1, VALUE a2, int raise)
+{
+ if (NIL_P(a1) || NIL_P(a2)) {
+ if (!raise) return Qnil;
+ rb_raise(rb_eTypeError, "can't convert nil into Complex");
+ }
+
+ if (RB_TYPE_P(a1, T_STRING)) {
+ a1 = string_to_c_strict(a1, raise);
+ if (NIL_P(a1)) return Qnil;
+ }
+
+ if (RB_TYPE_P(a2, T_STRING)) {
+ a2 = string_to_c_strict(a2, raise);
+ if (NIL_P(a2)) return Qnil;
+ }
+
+ if (RB_TYPE_P(a1, T_COMPLEX)) {
+ {
+ get_dat1(a1);
+
+ if (k_exact_zero_p(dat->imag))
+ a1 = dat->real;
+ }
+ }
+
+ if (RB_TYPE_P(a2, T_COMPLEX)) {
+ {
+ get_dat1(a2);
+
+ if (k_exact_zero_p(dat->imag))
+ a2 = dat->real;
+ }
+ }
+
+ if (RB_TYPE_P(a1, T_COMPLEX)) {
+ if (UNDEF_P(a2) || (k_exact_zero_p(a2)))
+ return a1;
+ }
+
+ if (UNDEF_P(a2)) {
+ if (k_numeric_p(a1) && !f_real_p(a1))
+ return a1;
+ /* should raise exception for consistency */
+ if (!k_numeric_p(a1)) {
+ if (!raise) {
+ a1 = rb_protect(to_complex, a1, NULL);
+ rb_set_errinfo(Qnil);
+ return a1;
+ }
+ return to_complex(a1);
+ }
+ }
+ else {
+ if ((k_numeric_p(a1) && k_numeric_p(a2)) &&
+ (!f_real_p(a1) || !f_real_p(a2)))
+ return f_add(a1,
+ f_mul(a2,
+ f_complex_new_bang2(rb_cComplex, ZERO, ONE)));
+ }
+
+ {
+ int argc;
+ VALUE argv2[2];
+ argv2[0] = a1;
+ if (UNDEF_P(a2)) {
+ argv2[1] = Qnil;
+ argc = 1;
+ }
+ else {
+ if (!raise && !RB_INTEGER_TYPE_P(a2) && !RB_FLOAT_TYPE_P(a2) && !RB_TYPE_P(a2, T_RATIONAL))
+ return Qnil;
+ argv2[1] = a2;
+ argc = 2;
+ }
+ return nucomp_s_new(argc, argv2, klass);
+ }
+}
+
+static VALUE
+nucomp_s_convert(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE a1, a2;
+
+ if (rb_scan_args(argc, argv, "11", &a1, &a2) == 1) {
+ a2 = Qundef;
+ }
+
+ return nucomp_convert(klass, a1, a2, TRUE);
+}
+
+/*
+ * call-seq:
+ * num.abs2 -> real
+ *
+ * Returns square of self.
+ */
+static VALUE
+numeric_abs2(VALUE self)
+{
+ return f_mul(self, self);
+}
+
+/*
+ * call-seq:
+ * num.arg -> 0 or float
+ * num.angle -> 0 or float
+ * num.phase -> 0 or float
+ *
+ * Returns 0 if the value is positive, pi otherwise.
+ */
+static VALUE
+numeric_arg(VALUE self)
+{
+ if (f_positive_p(self))
+ return INT2FIX(0);
+ return DBL2NUM(M_PI);
+}
+
+/*
+ * call-seq:
+ * num.rect -> array
+ * num.rectangular -> array
+ *
+ * Returns an array; [num, 0].
+ */
+static VALUE
+numeric_rect(VALUE self)
+{
+ return rb_assoc_new(self, INT2FIX(0));
+}
+
+/*
+ * call-seq:
+ * num.polar -> array
+ *
+ * Returns an array; [num.abs, num.arg].
+ */
+static VALUE
+numeric_polar(VALUE self)
+{
+ VALUE abs, arg;
+
+ if (RB_INTEGER_TYPE_P(self)) {
+ abs = rb_int_abs(self);
+ arg = numeric_arg(self);
+ }
+ else if (RB_FLOAT_TYPE_P(self)) {
+ abs = rb_float_abs(self);
+ arg = float_arg(self);
+ }
+ else if (RB_TYPE_P(self, T_RATIONAL)) {
+ abs = rb_rational_abs(self);
+ arg = numeric_arg(self);
+ }
+ else {
+ abs = f_abs(self);
+ arg = f_arg(self);
+ }
+ return rb_assoc_new(abs, arg);
+}
+
+/*
+ * call-seq:
+ * flo.arg -> 0 or float
+ * flo.angle -> 0 or float
+ * flo.phase -> 0 or float
+ *
+ * Returns 0 if the value is positive, pi otherwise.
+ */
+static VALUE
+float_arg(VALUE self)
+{
+ if (isnan(RFLOAT_VALUE(self)))
+ return self;
+ if (f_tpositive_p(self))
+ return INT2FIX(0);
+ return rb_const_get(rb_mMath, id_PI);
+}
+
+/*
+ * A complex number can be represented as a paired real number with
+ * imaginary unit; a+bi. Where a is real part, b is imaginary part
+ * and i is imaginary unit. Real a equals complex a+0i
+ * mathematically.
+ *
+ * You can create a \Complex object explicitly with:
+ *
+ * - A {complex literal}[rdoc-ref:syntax/literals.rdoc@Complex+Literals].
+ *
+ * You can convert certain objects to \Complex objects with:
+ *
+ * - \Method #Complex.
+ *
+ * Complex object can be created as literal, and also by using
+ * Kernel#Complex, Complex::rect, Complex::polar or to_c method.
+ *
+ * 2+1i #=> (2+1i)
+ * Complex(1) #=> (1+0i)
+ * Complex(2, 3) #=> (2+3i)
+ * Complex.polar(2, 3) #=> (-1.9799849932008908+0.2822400161197344i)
+ * 3.to_c #=> (3+0i)
+ *
+ * You can also create complex object from floating-point numbers or
+ * strings.
+ *
+ * Complex(0.3) #=> (0.3+0i)
+ * Complex('0.3-0.5i') #=> (0.3-0.5i)
+ * Complex('2/3+3/4i') #=> ((2/3)+(3/4)*i)
+ * Complex('1@2') #=> (-0.4161468365471424+0.9092974268256817i)
+ *
+ * 0.3.to_c #=> (0.3+0i)
+ * '0.3-0.5i'.to_c #=> (0.3-0.5i)
+ * '2/3+3/4i'.to_c #=> ((2/3)+(3/4)*i)
+ * '1@2'.to_c #=> (-0.4161468365471424+0.9092974268256817i)
+ *
+ * A complex object is either an exact or an inexact number.
+ *
+ * Complex(1, 1) / 2 #=> ((1/2)+(1/2)*i)
+ * Complex(1, 1) / 2.0 #=> (0.5+0.5i)
+ */
+void
+Init_Complex(void)
+{
+ VALUE compat;
+ id_abs = rb_intern_const("abs");
+ id_arg = rb_intern_const("arg");
+ id_denominator = rb_intern_const("denominator");
+ id_numerator = rb_intern_const("numerator");
+ id_real_p = rb_intern_const("real?");
+ id_i_real = rb_intern_const("@real");
+ id_i_imag = rb_intern_const("@image"); /* @image, not @imag */
+ id_finite_p = rb_intern_const("finite?");
+ id_infinite_p = rb_intern_const("infinite?");
+ id_rationalize = rb_intern_const("rationalize");
+ id_PI = rb_intern_const("PI");
+
+ rb_cComplex = rb_define_class("Complex", rb_cNumeric);
+
+ rb_define_alloc_func(rb_cComplex, nucomp_s_alloc);
+ rb_undef_method(CLASS_OF(rb_cComplex), "allocate");
+
+ rb_undef_method(CLASS_OF(rb_cComplex), "new");
+
+ rb_define_singleton_method(rb_cComplex, "rectangular", nucomp_s_new, -1);
+ rb_define_singleton_method(rb_cComplex, "rect", nucomp_s_new, -1);
+ rb_define_singleton_method(rb_cComplex, "polar", nucomp_s_polar, -1);
+
+ rb_define_global_function("Complex", nucomp_f_complex, -1);
+
+ rb_undef_methods_from(rb_cComplex, RCLASS_ORIGIN(rb_mComparable));
+ rb_undef_method(rb_cComplex, "%");
+ rb_undef_method(rb_cComplex, "div");
+ rb_undef_method(rb_cComplex, "divmod");
+ rb_undef_method(rb_cComplex, "floor");
+ rb_undef_method(rb_cComplex, "ceil");
+ rb_undef_method(rb_cComplex, "modulo");
+ rb_undef_method(rb_cComplex, "remainder");
+ rb_undef_method(rb_cComplex, "round");
+ rb_undef_method(rb_cComplex, "step");
+ rb_undef_method(rb_cComplex, "truncate");
+ rb_undef_method(rb_cComplex, "i");
+
+ rb_define_method(rb_cComplex, "real", rb_complex_real, 0);
+ rb_define_method(rb_cComplex, "imaginary", rb_complex_imag, 0);
+ rb_define_method(rb_cComplex, "imag", rb_complex_imag, 0);
+
+ rb_define_method(rb_cComplex, "-@", rb_complex_uminus, 0);
+ rb_define_method(rb_cComplex, "+", rb_complex_plus, 1);
+ rb_define_method(rb_cComplex, "-", rb_complex_minus, 1);
+ rb_define_method(rb_cComplex, "*", rb_complex_mul, 1);
+ rb_define_method(rb_cComplex, "/", rb_complex_div, 1);
+ rb_define_method(rb_cComplex, "quo", nucomp_quo, 1);
+ rb_define_method(rb_cComplex, "fdiv", nucomp_fdiv, 1);
+ rb_define_method(rb_cComplex, "**", rb_complex_pow, 1);
+
+ rb_define_method(rb_cComplex, "==", nucomp_eqeq_p, 1);
+ rb_define_method(rb_cComplex, "<=>", nucomp_cmp, 1);
+ rb_define_method(rb_cComplex, "coerce", nucomp_coerce, 1);
+
+ rb_define_method(rb_cComplex, "abs", rb_complex_abs, 0);
+ rb_define_method(rb_cComplex, "magnitude", rb_complex_abs, 0);
+ rb_define_method(rb_cComplex, "abs2", nucomp_abs2, 0);
+ rb_define_method(rb_cComplex, "arg", rb_complex_arg, 0);
+ rb_define_method(rb_cComplex, "angle", rb_complex_arg, 0);
+ rb_define_method(rb_cComplex, "phase", rb_complex_arg, 0);
+ rb_define_method(rb_cComplex, "rectangular", nucomp_rect, 0);
+ rb_define_method(rb_cComplex, "rect", nucomp_rect, 0);
+ rb_define_method(rb_cComplex, "polar", nucomp_polar, 0);
+ rb_define_method(rb_cComplex, "conjugate", rb_complex_conjugate, 0);
+ rb_define_method(rb_cComplex, "conj", rb_complex_conjugate, 0);
+
+ rb_define_method(rb_cComplex, "real?", nucomp_real_p_m, 0);
+
+ rb_define_method(rb_cComplex, "numerator", nucomp_numerator, 0);
+ rb_define_method(rb_cComplex, "denominator", nucomp_denominator, 0);
+
+ rb_define_method(rb_cComplex, "hash", nucomp_hash, 0);
+ rb_define_method(rb_cComplex, "eql?", nucomp_eql_p, 1);
+
+ rb_define_method(rb_cComplex, "to_s", nucomp_to_s, 0);
+ rb_define_method(rb_cComplex, "inspect", nucomp_inspect, 0);
+
+ rb_undef_method(rb_cComplex, "positive?");
+ rb_undef_method(rb_cComplex, "negative?");
+
+ rb_define_method(rb_cComplex, "finite?", rb_complex_finite_p, 0);
+ rb_define_method(rb_cComplex, "infinite?", rb_complex_infinite_p, 0);
+
+ rb_define_private_method(rb_cComplex, "marshal_dump", nucomp_marshal_dump, 0);
+ /* :nodoc: */
+ compat = rb_define_class_under(rb_cComplex, "compatible", rb_cObject);
+ rb_define_private_method(compat, "marshal_load", nucomp_marshal_load, 1);
+ rb_marshal_define_compat(rb_cComplex, compat, nucomp_dumper, nucomp_loader);
+
+ rb_define_method(rb_cComplex, "to_i", nucomp_to_i, 0);
+ rb_define_method(rb_cComplex, "to_f", nucomp_to_f, 0);
+ rb_define_method(rb_cComplex, "to_r", nucomp_to_r, 0);
+ rb_define_method(rb_cComplex, "rationalize", nucomp_rationalize, -1);
+ rb_define_method(rb_cComplex, "to_c", nucomp_to_c, 0);
+ rb_define_method(rb_cNilClass, "to_c", nilclass_to_c, 0);
+ rb_define_method(rb_cNumeric, "to_c", numeric_to_c, 0);
+
+ rb_define_method(rb_cString, "to_c", string_to_c, 0);
+
+ rb_define_private_method(CLASS_OF(rb_cComplex), "convert", nucomp_s_convert, -1);
+
+ rb_define_method(rb_cNumeric, "abs2", numeric_abs2, 0);
+ rb_define_method(rb_cNumeric, "arg", numeric_arg, 0);
+ rb_define_method(rb_cNumeric, "angle", numeric_arg, 0);
+ rb_define_method(rb_cNumeric, "phase", numeric_arg, 0);
+ rb_define_method(rb_cNumeric, "rectangular", numeric_rect, 0);
+ rb_define_method(rb_cNumeric, "rect", numeric_rect, 0);
+ rb_define_method(rb_cNumeric, "polar", numeric_polar, 0);
+
+ rb_define_method(rb_cFloat, "arg", float_arg, 0);
+ rb_define_method(rb_cFloat, "angle", float_arg, 0);
+ rb_define_method(rb_cFloat, "phase", float_arg, 0);
+
+ /*
+ * The imaginary unit.
+ */
+ rb_define_const(rb_cComplex, "I",
+ f_complex_new_bang2(rb_cComplex, ZERO, ONE));
+
+#if !USE_FLONUM
+ rb_gc_register_mark_object(RFLOAT_0 = DBL2NUM(0.0));
+#endif
+
+ rb_provide("complex.so"); /* for backward compatibility */
+}
diff --git a/config.guess b/config.guess
deleted file mode 100644
index e1fe8d1562..0000000000
--- a/config.guess
+++ /dev/null
@@ -1,1116 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999
-# Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Written by Per Bothner <bothner@cygnus.com>.
-# The master version of this file is at the FSF in /home/gd/gnu/lib.
-# Please send patches to the Autoconf mailing list <autoconf@gnu.org>.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
-
-# Use $HOST_CC if defined. $CC may point to a cross-compiler
-if test x"$CC_FOR_BUILD" = x; then
- if test x"$HOST_CC" != x; then
- CC_FOR_BUILD="$HOST_CC"
- else
- if test x"$CC" != x; then
- CC_FOR_BUILD="$CC"
- else
- CC_FOR_BUILD=cc
- fi
- fi
-fi
-
-# Modified for Human68k by K.Okabe 1997.07.09
-# Last change: 1997.07.09
-
-case "$KSH_VERSION" in
-*X6*)
- echo m68k-sharp-human
- exit 0 ;;
-*)
- ;;
-esac
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 8/24/94.)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-dummy=dummy-$$
-trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:OS/2:*:*)
- echo "i386-pc-os2_emx"
- exit 0;;
- alpha:OSF1:*:*)
- if test $UNAME_RELEASE = "V4.0"; then
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- cat <<EOF >$dummy.s
- .globl main
- .ent main
-main:
- .frame \$30,0,\$26,0
- .prologue 0
- .long 0x47e03d80 # implver $0
- lda \$2,259
- .long 0x47e20c21 # amask $2,$1
- srl \$1,8,\$2
- sll \$2,2,\$2
- sll \$0,3,\$0
- addl \$1,\$0,\$0
- addl \$2,\$0,\$0
- ret \$31,(\$26),1
- .end main
-EOF
- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
- if test "$?" = 0 ; then
- ./$dummy
- case "$?" in
- 7)
- UNAME_MACHINE="alpha"
- ;;
- 15)
- UNAME_MACHINE="alphaev5"
- ;;
- 14)
- UNAME_MACHINE="alphaev56"
- ;;
- 10)
- UNAME_MACHINE="alphapca56"
- ;;
- 16)
- UNAME_MACHINE="alphaev6"
- ;;
- esac
- fi
- rm -f $dummy.s $dummy
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit 0 ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit 0 ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-cbm-sysv4
- exit 0;;
- amiga:NetBSD:*:*)
- echo m68k-cbm-netbsd${UNAME_RELEASE}
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
- arc64:OpenBSD:*:*)
- echo mips64el-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hkmips:OpenBSD:*:*)
- echo mips-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- pmax:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mips-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- wgrisc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
- arm32:NetBSD:*:*)
- echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- SR2?01:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit 0 ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit 0 ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit 0 ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
- atari*:NetBSD:*:*)
- echo m68k-atari-netbsd${UNAME_RELEASE}
- exit 0 ;;
- atari*:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit 0 ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit 0 ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
- sun3*:NetBSD:*:*)
- echo m68k-sun-netbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3*:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:NetBSD:*:*)
- echo m68k-apple-netbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
- macppc:NetBSD:*:*)
- echo powerpc-apple-netbsd${UNAME_RELEASE}
- exit 0 ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit 0 ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy \
- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit 0 ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit 0 ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit 0 ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit 0 ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
- -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit 0 ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit 0 ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit 0 ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit 0 ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit 0 ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i?86:AIX:*:*)
- echo i386-ibm-aix
- exit 0 ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo rs6000-ibm-aix3.2.5
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit 0 ;;
- *:AIX:*:4)
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
- if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=4.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit 0 ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit 0 ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit 0 ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit 0 ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit 0 ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit 0 ;;
- 9000/[34678]??:HP-UX:*:*)
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- sed 's/^ //' << EOF >$dummy.c
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- ($CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
- rm -f $dummy.c $dummy
- esac
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
- 3050*:HI-UX:*:*)
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit 0 ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
- *9??*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit 0 ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit 0 ;;
- i?86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit 0 ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit 0 ;;
- hppa*:OpenBSD:*:*)
- echo hppa-unknown-openbsd
- exit 0 ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit 0 ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit 0 ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit 0 ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
- CRAY*X-MP:*:*:*)
- echo xmp-cray-unicos
- exit 0 ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE}
- exit 0 ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
- exit 0 ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE}
- exit 0 ;;
- CRAY*T3E:*:*:*)
- echo t3e-cray-unicosmk${UNAME_RELEASE}
- exit 0 ;;
- CRAY-2:*:*:*)
- echo cray2-cray-unicos
- exit 0 ;;
- F300:UNIX_System_V:*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
- F301:UNIX_System_V:*:*)
- echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
- exit 0 ;;
- hp3[0-9][05]:NetBSD:*:*)
- echo m68k-hp-netbsd${UNAME_RELEASE}
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- i?86:BSD/386:*:* | i?86:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:FreeBSD:*:*)
- if test -x /usr/bin/objformat; then
- if test "elf" = "`/usr/bin/objformat`"; then
- echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
- exit 0
- fi
- fi
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- *:NetBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- *:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- *:*:*BOW*:*)
- echo i386-pc-bow
- exit 0 ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
- i*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit 0 ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i386-pc-interix
- exit 0 ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit 0 ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- *:GNU:*:*)
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
- *:Linux:*:*)
- # uname on the ARM produces all sorts of strangeness, and we need to
- # filter it out.
- case "$UNAME_MACHINE" in
- armv*) UNAME_MACHINE=$UNAME_MACHINE ;;
- arm* | sa110*) UNAME_MACHINE="arm" ;;
- esac
-
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- ld_help_string=`cd /; ld --help 2>&1`
- ld_supported_emulations=`echo $ld_help_string \
- | sed -ne '/supported emulations:/!d
- s/[ ][ ]*/ /g
- s/.*supported emulations: *//
- s/ .*//
- p'`
- case "$ld_supported_emulations" in
- i?86linux) echo "${UNAME_MACHINE}-pc-linux-aout" ; exit 0 ;;
- i?86coff) echo "${UNAME_MACHINE}-pc-linux-coff" ; exit 0 ;;
- sparclinux) echo "${UNAME_MACHINE}-unknown-linux-aout" ; exit 0 ;;
- armlinux) echo "${UNAME_MACHINE}-unknown-linux-aout" ; exit 0 ;;
- m68klinux) echo "${UNAME_MACHINE}-unknown-linux-aout" ; exit 0 ;;
- elf32ppc)
- # Determine Lib Version
- cat >$dummy.c <<EOF
-#include <features.h>
-#if defined(__GLIBC__)
-extern char __libc_version[];
-extern char __libc_release[];
-#endif
-main(argc, argv)
- int argc;
- char *argv[];
-{
-#if defined(__GLIBC__)
- printf("%s %s\n", __libc_version, __libc_release);
-#else
- printf("unkown\n");
-#endif
- return 0;
-}
-EOF
- LIBC=""
- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
- if test "$?" = 0 ; then
- ./$dummy | grep 1\.99 > /dev/null
- if test "$?" = 0 ; then
- LIBC="libc1"
- fi
- fi
- rm -f $dummy.c $dummy
- echo powerpc-unknown-linux-${LIBC} ; exit 0 ;;
- esac
-
- if test "${UNAME_MACHINE}" = "alpha" ; then
- sed 's/^ //' <<EOF >$dummy.s
- .globl main
- .ent main
- main:
- .frame \$30,0,\$26,0
- .prologue 0
- .long 0x47e03d80 # implver $0
- lda \$2,259
- .long 0x47e20c21 # amask $2,$1
- srl \$1,8,\$2
- sll \$2,2,\$2
- sll \$0,3,\$0
- addl \$1,\$0,\$0
- addl \$2,\$0,\$0
- ret \$31,(\$26),1
- .end main
-EOF
- LIBC=""
- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
- if test "$?" = 0 ; then
- ./$dummy
- case "$?" in
- 7)
- UNAME_MACHINE="alpha"
- ;;
- 15)
- UNAME_MACHINE="alphaev5"
- ;;
- 14)
- UNAME_MACHINE="alphaev56"
- ;;
- 10)
- UNAME_MACHINE="alphapca56"
- ;;
- 16)
- UNAME_MACHINE="alphaev6"
- ;;
- esac
-
- objdump --private-headers $dummy | \
- grep ld.so.1 > /dev/null
- if test "$?" = 0 ; then
- LIBC="-libc1"
- fi
- fi
- rm -f $dummy.s $dummy
- echo ${UNAME_MACHINE}-unknown-linux{LIBC} ; exit 0
- elif test "${UNAME_MACHINE}" = "mips" ; then
- cat >$dummy.c <<EOF
-#ifdef __cplusplus
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
-#ifdef __MIPSEB__
- printf ("%s-unknown-linux\n", argv[1]);
-#endif
-#ifdef __MIPSEL__
- printf ("%sel-unknown-linux\n", argv[1]);
-#endif
- return 0;
-}
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- else
- # Either a pre-BFD a.out linker (linux-oldld)
- # or one that does not give us useful --help.
- # GCC wants to distinguish between linux-oldld and linux-aout.
- # If ld does not provide *any* "supported emulations:"
- # that means it is oldld.
- echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
- test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-oldld" && exit 0
-
- case "${UNAME_MACHINE}" in
- i?86)
- VENDOR=pc;
- ;;
- *)
- VENDOR=unknown;
- ;;
- esac
- # Determine whether the default compiler is a.out or elf
- cat >$dummy.c <<EOF
-#include <features.h>
-#ifdef __cplusplus
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
-#ifdef __ELF__
-# ifdef __GLIBC__
-# if __GLIBC__ >= 2
- printf ("%s-${VENDOR}-linux\n", argv[1]);
-# else
- printf ("%s-${VENDOR}-linux-libc1\n", argv[1]);
-# endif
-# else
- printf ("%s-${VENDOR}-linux-libc1\n", argv[1]);
-# endif
-#else
- printf ("%s-${VENDOR}-linux-aout\n", argv[1]);
-#endif
- return 0;
-}
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- fi ;;
-# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
-# are messed up and put the nodename in both sysname and nodename.
- i?86:DYNIX/ptx:4*:*)
- echo i386-sequent-sysv4
- exit 0 ;;
- i?86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
- i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- i?86:*:5:7*)
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) && UNAME_MACHINE=i586
- (/bin/uname -X|egrep '^Machine.*Pent.*II' >/dev/null) && UNAME_MACHINE=i686
- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) && UNAME_MACHINE=i585
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}${UNAME_VERSION}-sysv${UNAME_RELEASE}
- exit 0 ;;
- i?86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit 0 ;;
- i?86:UnixWare:*:*)
- if /bin/uname -X 2>/dev/null >/dev/null ; then
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- fi
- echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION}
- exit 0 ;;
- pc:*:*:*)
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit 0 ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit 0 ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit 0 ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit 0 ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3${OS_REL} && exit 0
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
- m68*:LynxOS:2.*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
- i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit 0 ;;
- PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit 0 ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit 0 ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit 0 ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
- news*:NEWS-OS:*:6*)
- echo mips-sony-newsos6
- exit 0 ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv`echo ${UNAME_RELEASE} | sed -n 's/\([.0-9]*\).*/\1/p'`
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- DS/90*:*:*:V20*)
- echo sparc-fujitsu-uxpds
- exit 0 ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit 0 ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit 0 ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit 0 ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit 0 ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Darwin:*:*)
- echo `uname -p`-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-#if !defined (ultrix)
- printf ("vax-dec-bsd\n"); exit (0);
-#else
- printf ("vax-dec-ultrix\n"); exit (0);
-#endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
-rm -f $dummy.c $dummy
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit 0 ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- c34*)
- echo c34-convex-bsd
- exit 0 ;;
- c38*)
- echo c38-convex-bsd
- exit 0 ;;
- c4*)
- echo c4-convex-bsd
- exit 0 ;;
- esac
-fi
-
-#echo '(Unable to guess system type)' 1>&2
-
-exit 1
diff --git a/config.sub b/config.sub
deleted file mode 100644
index 5a8f983c3a..0000000000
--- a/config.sub
+++ /dev/null
@@ -1,1228 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script, version 1.1.
-# Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc.
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-if [ x$1 = x ]
-then
- echo Configuration name missing. 1>&2
- echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
- echo "or $0 ALIAS" 1>&2
- echo where ALIAS is a recognized configuration type. 1>&2
- exit 1
-fi
-
-# First pass through any local machine types.
-case $1 in
- *local*)
- echo $1
- exit 0
- ;;
- *)
- ;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- linux*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple)
- os=
- basic_machine=$1
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=vxworks
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
- | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
- | 580 | i960 | h8300 \
- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
- | alpha | alphaev[4-7] | alphaev56 | alphapca5[67] \
- | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \
- | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \
- | mips64orion | mips64orionel | mipstx39 | mipstx39el \
- | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
- | mips64vr5000 | miprs64vr5000el \
- | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
- | thumb | d10v)
- basic_machine=$basic_machine-unknown
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65)
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i[34567]86)
- basic_machine=$basic_machine-pc
- ;;
- i[3456]86-TOWNS*)
- basic_machine=`echo $basic_machine | sed -e 's/-TOWNS.*/-TOWNS/'`
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
- | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
- | xmp-* | ymp-* \
- | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \
- | alpha-* | alphaev[4-7]-* | alphaev56-* | alphapca5[67]-* \
- | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
- | clipper-* | orion-* \
- | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
- | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
- | mips64el-* | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
- | mipstx39-* | mipstx39el-* \
- | f301-* | armv*-* | t3e-* \
- | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
- | thumb-* | v850-* | d30v-* | tic30-* | c30-* )
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-cbm
- ;;
- amigaos | amigados)
- basic_machine=m68k-cbm
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-cbm
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- cray2)
- basic_machine=cray2-cray
- os=-unicos
- ;;
- [ctj]90-cray)
- basic_machine=c90-cray
- os=-unicos
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- os=-mvs
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i[34567]86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i[34567]86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i[34567]86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i[34567]86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- i386-go32 | go32)
- basic_machine=i386-unknown
- os=-go32
- ;;
- i386-mingw32 | mingw32)
- basic_machine=i386-unknown
- os=-mingw32
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | *MiNT)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mipsel*-linux*)
- basic_machine=mipsel-unknown
- os=-linux
- ;;
- mips*-linux*)
- basic_machine=mips-unknown
- os=-linux
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- msdos)
- basic_machine=i386-unknown
- os=-msdos
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- hpcmips*-*)
- basic_machine=hpcmips-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-corel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pentium | p5 | k5 | k6 | nexen)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexen-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=rs6000-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sparclite-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=t3e-cray
- os=-unicos
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- xmp)
- basic_machine=xmp-cray
- os=-unicos
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- mips)
- if [ x$os = x-linux ]; then
- basic_machine=mips-unknown
- else
- basic_machine=mips-mips
- fi
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sparc | sparcv9)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- c4x*)
- basic_machine=c4x-none
- os=-coff
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -rhapsody* | -openstep* | -oskit* \
- | -darwin*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
- | -macos* | -mpw* | -magic* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -*MiNT)
- os=-mint
- ;;
- -uxpds)
- os=-uxpds
- ;;
- -human)
- ;;
- -beos)
- os=-beos
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-corel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-ibm)
- os=-aix
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f301-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -vxsim* | -vxworks*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -*MiNT)
- vendor=atari
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000000..220392d120
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,4570 @@
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT
+{
+AC_CONFIG_AUX_DIR(tool)
+
+AC_PREREQ(2.67)
+
+tooldir="$srcdir/tool"
+
+AC_DISABLE_OPTION_CHECKING
+
+m4_include([tool/m4/_colorize_result_prepare.m4])dnl
+m4_include([tool/m4/ac_msg_result.m4])dnl
+m4_include([tool/m4/colorize_result.m4])dnl
+m4_include([tool/m4/ruby_append_option.m4])dnl
+m4_include([tool/m4/ruby_append_options.m4])dnl
+m4_include([tool/m4/ruby_check_builtin_func.m4])dnl
+m4_include([tool/m4/ruby_check_builtin_setjmp.m4])dnl
+m4_include([tool/m4/ruby_check_printf_prefix.m4])dnl
+m4_include([tool/m4/ruby_check_setjmp.m4])dnl
+m4_include([tool/m4/ruby_check_signedness.m4])dnl
+m4_include([tool/m4/ruby_check_sizeof.m4])dnl
+m4_include([tool/m4/ruby_check_sysconf.m4])dnl
+m4_include([tool/m4/ruby_cppoutfile.m4])dnl
+m4_include([tool/m4/ruby_decl_attribute.m4])dnl
+m4_include([tool/m4/ruby_default_arch.m4])dnl
+m4_include([tool/m4/ruby_define_if.m4])dnl
+m4_include([tool/m4/ruby_defint.m4])dnl
+m4_include([tool/m4/ruby_dtrace_available.m4])dnl
+m4_include([tool/m4/ruby_dtrace_postprocess.m4])dnl
+m4_include([tool/m4/ruby_func_attribute.m4])dnl
+m4_include([tool/m4/ruby_mingw32.m4])dnl
+m4_include([tool/m4/ruby_prepend_option.m4])dnl
+m4_include([tool/m4/ruby_prog_gnu_ld.m4])dnl
+m4_include([tool/m4/ruby_prog_makedirs.m4])dnl
+m4_include([tool/m4/ruby_replace_funcs.m4])dnl
+m4_include([tool/m4/ruby_replace_type.m4])dnl
+m4_include([tool/m4/ruby_require_funcs.m4])dnl
+m4_include([tool/m4/ruby_rm_recursive.m4])dnl
+m4_include([tool/m4/ruby_setjmp_type.m4])dnl
+m4_include([tool/m4/ruby_stack_grow_direction.m4])dnl
+m4_include([tool/m4/ruby_thread.m4])dnl
+m4_include([tool/m4/ruby_try_cflags.m4])dnl
+m4_include([tool/m4/ruby_try_cxxflags.m4])dnl
+m4_include([tool/m4/ruby_try_ldflags.m4])dnl
+m4_include([tool/m4/ruby_universal_arch.m4])dnl
+m4_include([tool/m4/ruby_wasm_tools.m4])dnl
+m4_include([tool/m4/ruby_werror_flag.m4])dnl
+
+AC_ARG_VAR([cflags], [additional CFLAGS (ignored when CFLAGS is given)])dnl
+AC_ARG_VAR([cppflags], [additional CPPFLAGS (ignored when CPPFLAGS is given)])dnl
+AC_ARG_VAR([cxxflags], [additional CXXFLAGS (ignored when CXXFLAGS is given)])dnl
+
+: "environment section" && {
+HAVE_BASERUBY=yes
+BASERUBY_VERSION=
+AC_ARG_WITH(baseruby,
+ AS_HELP_STRING([--with-baseruby=RUBY], [use RUBY as baseruby; RUBY is the pathname of ruby]),
+ [AS_CASE(["$withval"],
+ [*ruby*],[BASERUBY=$withval],
+ [no],[HAVE_BASERUBY=no],
+ [AC_MSG_ERROR(need ruby)])
+ ],
+ [
+ AC_PATH_PROG([BASERUBY], [ruby], [false])
+ ])
+# BASERUBY must be >= 2.2.0. Note that `"2.2.0" > "2.2"` is true.
+AS_IF([test "$HAVE_BASERUBY" != no -a "`RUBYOPT=- $BASERUBY --disable=gems -e 'print 42 if RUBY_VERSION > "2.2"' 2>/dev/null`" = 42], [
+ AS_CASE(["$build_os"], [mingw*], [
+ # Can MSys shell run a command with a drive letter?
+ RUBYOPT=- `cygpath -ma "$BASERUBY"` --disable=gems -e exit 2>/dev/null || HAVE_BASERUBY=no
+ ])
+ BASERUBY="$BASERUBY --disable=gems"
+ BASERUBY_VERSION=`$BASERUBY -v`
+ $BASERUBY -C "$srcdir" tool/downloader.rb -d tool -e gnu config.guess config.sub >&AS_MESSAGE_FD
+], [
+ HAVE_BASERUBY=no
+])
+AS_IF([test "$HAVE_BASERUBY" = no], [
+ AS_IF([test "$cross_compiling" = yes], [AC_MSG_ERROR([executable host ruby is required for cross-compiling])])
+ BASERUBY="echo executable host ruby is required. use --with-baseruby option.; false"
+])
+AC_SUBST(BASERUBY)
+AC_SUBST(HAVE_BASERUBY)
+
+: ${GIT=git}
+HAVE_GIT=yes
+AC_ARG_WITH(git,
+ AS_HELP_STRING([--without-git], [never use git]),
+ [AS_CASE([$withval],
+ [no], [GIT=never-use HAVE_GIT=no],
+ [yes], [],
+ [GIT=$withval])])
+AS_IF([test x"$HAVE_GIT" = xyes], [command -v "$GIT" > /dev/null || HAVE_GIT=no])
+AC_SUBST(GIT)
+AC_SUBST(HAVE_GIT)
+
+eval `sed -n -e ['s/^@%:@define RUBY_[A-Z_]*VERSION_\([A-Z][A-Z][A-Z_0-9]*\) \([0-9][0-9]*\)$/\1=\2/p'] \
+ -e ['s/^@%:@define \(RUBY_ABI_VERSION\) \([0-9][0-9]*\).*/\1=\2/p'] \
+ -e ['s/^@%:@define \(RUBY_PATCHLEVEL\) \(.*\)/\1=\2/p'] \
+ $srcdir/include/ruby/internal/abi.h \
+ $srcdir/include/ruby/version.h $srcdir/version.h`
+for v in MAJOR MINOR TEENY; do
+ AS_IF([eval "test \"\$$v\" = ''"], [
+ AC_MSG_ERROR(could not determine $v number from version.h)
+ ])
+done
+AC_SUBST(MAJOR)
+AC_SUBST(MINOR)
+AC_SUBST(TEENY)
+AC_SUBST(RUBY_API_VERSION, '$(MAJOR).$(MINOR)')
+AC_SUBST(RUBY_PROGRAM_VERSION, '$(MAJOR).$(MINOR).$(TEENY)')
+AS_CASE([$RUBY_PATCHLEVEL], [-*], [
+ AC_DEFINE_UNQUOTED(RUBY_ABI_VERSION, [${RUBY_ABI_VERSION}])
+], [RUBY_ABI_VERSION=])
+
+AS_IF([test "$program_prefix" = NONE], [
+ program_prefix=
+])
+AS_IF([test "$prefix" -ef .], [
+ AC_MSG_ERROR(--prefix cannot be the current working directory.)
+])
+RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
+RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
+AC_SUBST(RUBY_BASE_NAME)
+AC_SUBST(RUBYW_BASE_NAME)
+AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}')
+
+dnl checks for alternative programs
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+AS_CASE(["$target_cpu-$target_os"],
+ [aarch64-darwin*], [
+ target_cpu=arm64
+ AS_CASE(["$target_vendor"], [unknown], [
+ target_vendor=apple
+ target=${target%%-unknown-*}-apple-${target@%:@*-unknown-}
+ ])
+ target="arm64-${target@%:@aarch64-}"
+ AS_IF([test -n "$target_alias"], [target_alias="arm64-${target_alias@%:@aarch64-}"])
+ ])
+
+AC_ARG_PROGRAM
+RUBY_RM_RECURSIVE
+AC_ARG_WITH(gcc,
+ AS_HELP_STRING([--without-gcc], [never use gcc]),
+ [
+ AS_CASE([$withval],
+ [no], [: ${CC=cc}],
+ [yes], [: ${CC=gcc}],
+ [CC=$withval])])
+dnl If the user switches compilers, we can't believe the cache
+AS_IF([test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"], [
+ AC_MSG_ERROR(cached CC is different -- throw away $cache_file
+(it is also a good idea to do 'make clean' before compiling))
+])
+
+RUBY_WASM_TOOLS
+
+AS_CASE(["${build_os}"],
+[linux*|cygwin*|msys*], [
+ # Naruse prefers GCC on Linux
+ AC_CHECK_TOOLS([CC], [gcc clang cc])
+],
+[solaris*], [
+ # Clang on Solaris is largely untested.
+ # https://bugs.ruby-lang.org/issues/17949
+ AC_CHECK_TOOLS([CC], [cc gcc])
+], [
+ # OpenBSD wants to prefer cc over gcc.
+ # See https://github.com/ruby/ruby/pull/2443
+ AC_CHECK_TOOLS([CC], [cl.exe clang cc gcc c99 /usr/ucb/cc])
+])
+
+AC_ARG_VAR([AR], [Archiver command])
+AC_ARG_VAR([AS], [Assembler command])
+AC_ARG_VAR([CC], [C compiler command])
+AC_ARG_VAR([CXX], [C++ compiler command])
+AC_ARG_VAR([LD], [Linker command])
+AC_ARG_VAR([NM], [Symbol list command])
+AC_ARG_VAR([OBJCOPY], [Objcopy command])
+AC_ARG_VAR([OBJDUMP], [Objdump command])
+AC_ARG_VAR([RANLIB], [Ranlib command])
+AC_ARG_VAR([STRIP], [Strip command])
+
+# We don't want to bother things like `ccache gcc`, `clang -shared-libgcc`, ...
+set rb_dummy ${CC}
+rb_CC=$2
+AC_DEFUN([RUBY_CHECK_PROG_FOR_CC], [
+ rb_prog=`echo "${rb_CC}" | sed "$2"`
+ AC_CHECK_PROG([$1], [$rb_prog], [$rb_prog])
+])
+AS_CASE(["/${rb_CC} "],
+[*@<:@\ /@:>@"cc "*], [
+ # Don't try g++/clang++ when CC=cc
+ AC_CHECK_PROGS([CXX], [cl.exe CC c++])
+],
+[*icc*], [
+ # Intel C++ has interprocedural optimizations. It tends to come with its
+ # own linker etc.
+ RUBY_CHECK_PROG_FOR_CC([AR], [s/icc/xiar/])
+ RUBY_CHECK_PROG_FOR_CC([CXX], [s/icc/icpc/])
+ RUBY_CHECK_PROG_FOR_CC([LD], [s/icc/xild/])
+],
+[*gcc*], [
+ # Ditto for GCC.
+ RUBY_CHECK_PROG_FOR_CC([LD], [s/gcc/ld/])
+ RUBY_CHECK_PROG_FOR_CC([AR], [s/gcc/gcc-ar/])
+ RUBY_CHECK_PROG_FOR_CC([CXX], [s/gcc/g++/])
+ RUBY_CHECK_PROG_FOR_CC([NM], [s/gcc/gcc-nm/])
+ RUBY_CHECK_PROG_FOR_CC([RANLIB], [s/gcc/gcc-ranlib/])
+],
+[*clang*], [
+ # Ditto for LLVM. Note however that llvm-as is a LLVM-IR to LLVM bitcode
+ # assembler that does not target your machine native binary.
+
+ # Xcode has its own version tools that may be incompatible with
+ # genuine LLVM tools, use the tools in the same directory.
+
+ AS_IF([$rb_CC -E -dM -xc - < /dev/null | grep -F __apple_build_version__ > /dev/null],
+ [llvm_prefix=], [llvm_prefix=llvm-])
+ # AC_PREPROC_IFELSE cannot be used before AC_USE_SYSTEM_EXTENSIONS
+
+ RUBY_CHECK_PROG_FOR_CC([LD], [s/clang/ld/]) # ... maybe try lld ?
+ RUBY_CHECK_PROG_FOR_CC([AR], [s/clang/${llvm_prefix}ar/])
+# RUBY_CHECK_PROG_FOR_CC([AS], [s/clang/${llvm_prefix}as/])
+ RUBY_CHECK_PROG_FOR_CC([CXX], [s/clang/clang++/])
+ RUBY_CHECK_PROG_FOR_CC([NM], [s/clang/${llvm_prefix}nm/])
+ RUBY_CHECK_PROG_FOR_CC([OBJCOPY], [s/clang/${llvm_prefix}objcopy/])
+ RUBY_CHECK_PROG_FOR_CC([OBJDUMP], [s/clang/${llvm_prefix}objdump/])
+ RUBY_CHECK_PROG_FOR_CC([RANLIB], [s/clang/${llvm_prefix}ranlib/])
+ RUBY_CHECK_PROG_FOR_CC([STRIP], [s/clang/${llvm_prefix}strip/])
+])
+AS_UNSET(rb_CC)
+AS_UNSET(rb_dummy)
+
+AS_CASE(["${build_os}"],
+[solaris*], [
+ AC_PATH_TOOL([LD], [ld], [/usr/ccs/bin/ld], [/usr/ccs/bin:$PATH])
+],
+[aix*], [
+ AC_PATH_TOOL([NM], [nm], [/usr/ccs/bin/nm], [/usr/ccs/bin:$PATH])
+])
+AS_CASE(["${target_os}"],
+[cygwin*|msys*|mingw*], [
+ ac_cv_prog_ac_ct_OBJCOPY=":"
+])
+
+rb_test_CFLAGS=${CFLAGS+yes}
+rb_test_CXXFLAGS=${CXXFLAGS+yes}
+
+# BSD's ports and MacPorts prefix GNU binutils with 'g'
+
+dnl Seems necessarily in order to add -std=gnu99 option for gcc 4.9.
+m4_version_prereq([2.70], [AC_PROG_CC], [AC_PROG_CC_C99])
+
+AC_PROG_CXX
+AC_PROG_CPP
+AC_PROG_RANLIB
+AC_CHECK_TOOLS([AR], [gar ar])
+AC_CHECK_TOOLS([AS], [gas as])
+AC_CHECK_TOOLS([LD], [gld ld]) # ... try gold ?
+AC_CHECK_TOOLS([NM], [gnm nm])
+AC_CHECK_TOOLS([OBJCOPY], [gobjcopy objcopy])
+AC_CHECK_TOOLS([OBJDUMP], [gobjdump objdump])
+AC_CHECK_TOOLS([STRIP], [gstrip strip], [:])
+
+AS_IF([test ! $rb_test_CFLAGS], [AS_UNSET(CFLAGS)]); AS_UNSET(rb_test_CFLAGS)
+AS_IF([test ! $rb_test_CXXFLAGS], [AS_UNSET(CXXFLAGS)]); AS_UNSET(rb_save_CXXFLAGS)
+
+AS_IF([test "${CXX}" = "g++" -a -z "${GXX}"], [
+ # AC_PROG_CXX sets $CXX to "g++" when it purposefully finds that there is
+ # _no_ g++. This brain-damaged design must be worked around. Thankfully,
+ # similar thing doesn't happen for AC_PROG_CC.
+ rb_there_is_in_fact_no_gplusplus_but_autoconf_is_cheating_us=true
+])
+
+test x"$target_alias" = x &&
+target_os=`echo $target_os | sed 's/linux-gnu$/linux/;s/linux-gnu/linux-/'`
+ac_install_sh='' # unusable for extension libraries.
+
+AC_ARG_WITH(os-version-style,
+ AS_HELP_STRING([--with-os-version-style=TYPE],
+ [OS version number for target and target_os [[full]]]
+ [(full|teeny|minor+0|minor|major+0|major|none)]),
+ [os_version_style=$withval],
+ [os_version_style=full
+ AS_CASE($target_os, [[*[0-9].*]],
+ [AS_CASE([`/usr/bin/ruby -e 'puts RUBY_PLATFORM' 2>/dev/null`],
+ [[*-*[0-9].*.0]], [os_version_style=minor+0],
+ [[*-*[0-9].*.*]], [os_version_style=full],
+ [[*-*[0-9].0] ], [os_version_style=major+0],
+ [[*-*[0-9].*] ], [os_version_style=minor],
+ [[*-*[0-9]] ], [os_version_style=major],
+ )])
+ ])
+os_version_style_transform=
+AS_CASE("${os_version_style}",
+ [full|teeny], [],
+ [minor+0], [os_version_style_transform=['s/\([0-9]\.[0-9][0-9]*\)\.[0-9][.0-9]*$/\1.0/']],
+ [minor], [os_version_style_transform=['s/\([0-9]\.[0-9][0-9]*\)\.[0-9][.0-9]*$/\1/']],
+ [major+0], [os_version_style_transform=['s/\([0-9]\)\.[0-9][.0-9]*$/\1.0/']],
+ [major], [os_version_style_transform=['s/\([0-9]\)\.[0-9][.0-9]*$/\1/']],
+ [none], [os_version_style_transform=['s/[0-9]*\.[0-9][.0-9]*$//']],
+ [AC_MSG_ERROR(unknown --with-os-version-style: $withval)])
+AS_IF([test -z "$target_alias" -a -n "$os_version_style_transform"],
+ [
+ target=`echo ${target} | sed "$os_version_style_transform"`
+ target_os=`echo ${target_os} | sed "$os_version_style_transform"`
+ ])
+
+AC_ARG_WITH(arch,
+ AS_HELP_STRING([--with-arch=ARCHS],
+ [build an Apple/NeXT Multi Architecture Binary (MAB);
+ ARCHS is a comma-delimited list of architectures for
+ which to build; if this option is disabled or omitted
+ entirely, then the package will be built only for the
+ target platform]),
+ [target_archs="$withval"], [unset target_archs])
+
+AC_ARG_ENABLE(load-relative,
+ AS_HELP_STRING([--enable-load-relative], [resolve load paths at run time]),
+ [load_relative=$enableval])
+
+# checks for UNIX variants that set C preprocessor variables
+AC_USE_SYSTEM_EXTENSIONS
+
+dnl Checks for programs.
+
+cflagspat=
+test -z "$optflags" ||
+ cflagspat="$cflagspat;s|"`eval echo '"'"${optflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
+test -z "$debugflags" ||
+ cflagspat="$cflagspat;s|"`eval echo '"'"${debugflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
+test -z "$warnflags" ||
+ cflagspat="$cflagspat;s|"`eval echo '"'"${warnflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
+AS_IF([test -z "${CFLAGS+set}"], [
+ cflags=`echo " $cflags " | sed "$cflagspat;s/^ *//;s/ *$//"`
+ orig_cflags="$cflags"
+ cflags="$cflags "'${optflags} ${debugflags} ${warnflags}'
+])
+dnl AS_IF([test -z "${CXXFLAGS+set}"], [
+dnl cxxflags=`echo " $cxxflags " | sed "$cflagspat;s/^ *//;s/ *$//"`
+dnl orig_cxxflags="$cxxflags"
+dnl cxxflags="$cxxflags "'${optflags} ${debugflags} ${warnflags}'
+dnl ])
+
+AS_CASE(["$host_os:$build_os"],
+[darwin*:darwin*], [
+ # Following Apple deployed clang are broken
+ # clang version 1.0 (http://llvm.org/svn/llvm-project/cfe/tags/Apple/clang-23 exported)
+ # Apple clang version 2.0 (tags/Apple/clang-137) (based on LLVM 2.9svn)
+ # Apple clang version 2.1 (tags/Apple/clang-163.7.1) (based on LLVM 3.0svn)
+ AC_PREPROC_IFELSE(
+ [AC_LANG_PROGRAM([
+ @%:@if defined __APPLE_CC__ && defined __clang_major__ && __clang_major__ < 3
+ @%:@error premature clang
+ @%:@endif
+ ])],
+ [],
+ [AC_MSG_ERROR([clang version 3.0 or later is required])])
+])
+
+AS_CASE(["$target_os"],
+[darwin*], [
+ AC_MSG_CHECKING(if minimum required OS X version is supported)
+ AC_PREPROC_IFELSE([AC_LANG_SOURCE([[@%:@include <AvailabilityMacros.h>
+ @%:@if MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_5
+ @%:@error pre OS X 10.5
+ [!<===== pre OS X 10.5 =====>]
+ @%:@endif
+ ]])],
+ [AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)
+ AC_MSG_ERROR([Unsupported OS X version is required])])
+])
+
+RUBY_MINGW32
+AC_SUBST(GCC)
+AC_SUBST(LD)
+AS_IF([test "$GCC" = yes], [
+ linker_flag=-Wl,
+ : ${optflags=-O3}
+ gcc_major=`echo =__GNUC__ | $CC -E -xc - | sed '/^=/!d;s///'`
+ gcc_minor=`echo =__GNUC_MINOR__ | $CC -E -xc - | sed '/^=/!d;s///'`
+ test -n "$gcc_major" || gcc_major=0
+ test -n "$gcc_minor" || gcc_minor=0
+ icc_version=`echo =__ICC | $CC -E -xc - | sed '/^=/!d;s///;/^__ICC/d'`
+ test -n "$icc_version" || icc_version=0
+ # RUBY_APPEND_OPTIONS(XCFLAGS, ["-include ruby/config.h" "-include ruby/missing.h"])
+
+ AS_IF([test "$gcc_major" -lt 4], [
+ AC_MSG_ERROR([too old GCC: $gcc_major.$gcc_minor])
+ ])
+
+ AC_CACHE_CHECK([if thread-local storage is supported], [rb_cv_tls_supported],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[int __thread conftest;]])],
+ [rb_cv_tls_supported=yes],
+ [rb_cv_tls_supported=no])])
+ AS_IF([test x"$rb_cv_tls_supported" != xyes],
+ [AC_DEFINE(RB_THREAD_LOCAL_SPECIFIER_IS_UNSUPPORTED)])
+], [
+ linker_flag=
+])
+
+RUBY_PROG_GNU_LD
+RUBY_CPPOUTFILE
+
+: ${OUTFLAG='-o '}
+: ${COUTFLAG=${OUTFLAG}}
+: ${CSRCFLAG=''}
+AC_SUBST(OUTFLAG)
+AC_SUBST(COUTFLAG)
+AC_SUBST(CSRCFLAG)
+
+: ${MJIT_CC=$CC}
+AS_IF([test "x$cross_compiling" = xno], [
+ AC_PATH_PROG([MJIT_CC], ${MJIT_CC})
+
+ # if $CC is in /usr/lib/ccache/$CC, search original $CC (disable ccache)
+ AS_IF([echo $RUBY_DEBUG | grep ci > /dev/null &&
+ echo $MJIT_CC | grep ^/usr/lib/ccache > /dev/null], [
+ PATH=`echo $PATH | sed "s/\/usr\/lib\/ccache://"` MJIT_CC=`which $CC`])
+
+ AS_CASE([$target_os],
+ [*mingw*], [command -v cygpath > /dev/null && MJIT_CC=`cygpath -ma $MJIT_CC`])
+ shift 2
+ MJIT_CC="$MJIT_CC${1+ }$*"
+])
+
+AS_CASE(["$build_os"],
+ [darwin1*.*], [
+ # Xcode linker warns for deprecated architecture and wrongly
+ # installed TBD files.
+ CC_WRAPPER=""
+ echo 'int main(void) {return 0;}' > conftest.c
+ AS_IF([$CC -framework Foundation -o conftest conftest.c 2>&1 |
+ grep '^ld: warning: text-based stub file' >/dev/null], [
+ CC_WRAPPER=`cd -P "${tooldir}" && pwd`/darwin-cc
+ CC="$CC_WRAPPER $CC"
+ ])
+ rm -fr conftest*
+ ])
+AS_CASE(["$target_os"],
+ [wasi*], [
+ # Clang linker automatically uses wasm-opt with -O if it found.
+ # https://github.com/llvm/llvm-project/blob/812828984c10857a4cd260eb638c52a4411f9143/clang/lib/Driver/ToolChains/WebAssembly.cpp#L95-L118
+ # However optimization before asyncify causes misoptimization,
+ # so wrap clang to insert our fake wasm-opt, which does nothing, in PATH.
+ CC_WRAPPER=`cd -P "${tooldir}" && pwd`/wasm-clangw
+ CC="$CC_WRAPPER $CC"
+ ])
+
+cc_version=
+for option in --version -v -V -qversion; do
+ cc_version_message=`$CC $option 2>&1`
+ cc_version_status=$?
+ AS_CASE($cc_version_status, [0], [:], [continue])
+ AS_CASE($cc_version_message, [*Warning*], [continue])
+ cc_version='$(CC) '$option
+ break
+done
+AC_SUBST(CC_VERSION, $cc_version)
+AC_SUBST(CC_VERSION_MESSAGE, $cc_version_message)
+
+: ${DLDFLAGS="$LDFLAGS"}
+
+RUBY_UNIVERSAL_ARCH
+AS_IF([test "$target_cpu" != "$host_cpu" -a "$GCC" = yes -a "$cross_compiling" = no -a "${universal_binary:-no}" = no], [
+ RUBY_DEFAULT_ARCH("$target_cpu")
+])
+host_os=$target_os
+host_vendor=$target_vendor
+host_cpu=$target_cpu
+host=$target
+host_alias=$target_alias
+
+AC_CACHE_CHECK([for $AR flags], [rb_cv_arflags], [
+ AS_IF([$AR rcD conftest.a > /dev/null 2>&1 && rm conftest.a],
+ [rb_cv_arflags=rcD], [rb_cv_arflags=rcu])
+])
+AC_SUBST(ARFLAGS, ["$rb_cv_arflags "])
+AC_SUBST(ASFLAGS)
+
+AS_CASE(["$target_os"],
+[cygwin*|msys*|mingw*], [
+ AC_CHECK_TOOL(WINDRES, windres)
+ AC_CHECK_TOOL(DLLWRAP, dllwrap)
+ target=`echo $target | sed "s/^$target_cpu-/-/"`
+ target_alias=`echo $target_alias | sed "s/^$target_cpu-/-/"`
+ target_cpu=`echo $target_cpu | sed s/i.86/i386/`
+ AS_CASE(["$target"], [-*], [ target="$target_cpu${target}"])
+ AS_CASE(["$target_alias"], [-*], [ target_alias="$target_cpu${target_alias}"])
+ AS_CASE(["$target_os"],
+ [mingw*], [
+ test "$rb_cv_msvcrt" = "" && unset rb_cv_msvcrt
+ AC_CACHE_CHECK(for mingw32 runtime DLL, rb_cv_msvcrt, [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <stdio.h>]],
+ [[FILE* volatile f = stdin; return 0;]])],
+ [rb_cv_msvcrt=`$OBJDUMP -p conftest$ac_exeext |
+ tr A-Z a-z |
+ sed -n '/^[[ ]]*dll name: \(msvc.*\)\.dll$/{s//\1/p;q;};
+ /^[[ ]]*dll name: \(ucrtbase\|api-ms-win-crt-.*\)\.dll$/{s//ucrt/p;q;}'`],
+ [rb_cv_msvcrt=msvcrt])
+ test "$rb_cv_msvcrt" = "" && rb_cv_msvcrt=msvcrt])
+ RT_VER=`echo "$rb_cv_msvcrt" | tr -cd [0-9]`
+ test "$RT_VER" = "" && RT_VER=60
+ test "$rb_cv_msvcrt" = "ucrt" && RT_VER=140
+ AC_DEFINE_UNQUOTED(RUBY_MSVCRT_VERSION, $RT_VER)
+ sysconfdir=
+ ])
+ rb_cv_binary_elf=no
+ : ${enable_shared=yes}
+ ],
+[hiuxmpp*], [AC_DEFINE(__HIUX_MPP__)]) # by TOYODA Eizi <toyoda@npd.kishou.go.jp>
+
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+
+AS_CASE(["$target_os"],[openbsd*],[
+ ac_cv_path_mkdir="mkdir"
+])
+
+RUBY_PROG_MAKEDIRS
+
+AC_CHECK_PROG([DTRACE], [${ac_tool_prefix}dtrace], [${ac_tool_prefix}dtrace])
+AS_IF([test "$cross_compiling:$ac_cv_prog_DTRACE" = no: -a -n "$ac_tool_prefix"], [
+ AC_CHECK_PROG([DTRACE], [dtrace], [dtrace])
+])
+
+AC_CHECK_PROGS(DOT, dot)
+AC_CHECK_PROGS(DOXYGEN, doxygen)
+
+tool_warned=$ac_tool_warned ac_tool_warned=no
+AC_CHECK_TOOL(PKG_CONFIG, pkg-config)
+ac_tool_warned=$tool_warned
+AS_IF([test -z "$PKG_CONFIG"], [],
+["$PKG_CONFIG" --print-errors --version > /dev/null 2>&1], [],
+[
+ unset ac_cv_prog_PKG_CONFIG
+ PKG_CONFIG=
+ AC_MSG_WARN([$PKG_CONFIG does not work; ignore])
+])
+
+AC_MSG_CHECKING([whether it is Android])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ @%:@ifndef __ANDROID__
+ @%:@error Not android
+ @%:@endif
+]], [[]])],
+[
+ AC_MSG_RESULT(yes)
+ target_os=${target_os}-android
+ AS_IF([test "x$cross_compiling" = xno], [
+ AC_MSG_CHECKING([for Android API version])
+ # hacky workaround: https://github.com/termux/termux-packages/issues/6176
+ rb_android_api=`getprop ro.build.version.sdk`
+ AC_MSG_RESULT($rb_android_api)
+ RUBY_APPEND_OPTIONS(CPPFLAGS, -D__ANDROID_API__=$rb_android_api -Wno-macro-redefined)
+ ])
+],
+[AC_MSG_RESULT(no)])
+
+AC_SUBST(RM, ['rm -f'])
+AC_SUBST(CP, ['cp'])
+RMDIRS='$(top_srcdir)/tool/rmdirs'
+RMDIR=rmdir
+mkdir "rmdirs_$$_test" "rmdirs_$$_test/a"
+rmdir --ignore-fail-on-non-empty "rmdirs_$$_test" 2>/dev/null &&
+RMDIR='rmdir --ignore-fail-on-non-empty'
+$RMDIR -p "rmdirs_$$_test/a" 2>/dev/null &&
+{ test -d "rmdirs_$$_test" || RMDIRS="$RMDIR -p"; }
+rmdir "rmdirs_$$_test/a" "rmdirs_$$_test" 2>/dev/null
+AC_SUBST(RMDIR)
+AC_SUBST(RMDIRS)
+AC_SUBST(RMALL, ['rm -fr'])
+
+AC_MSG_CHECKING([for cd using physical directory])
+rm -fr conf$$.dir
+mkdir conf$$.dir &&
+(cd conf$$.dir && mkdir src build && cd src &&
+$as_ln_s ../build . > /dev/null 2>&1 && cd build &&
+for chdir in 'cd -P' 'PWD= cd'; do
+ /bin/sh -c "$chdir ../src && echo '$chdir' > cdcmd" 2> /dev/null && break
+done)
+AS_IF([test -f conf$$.dir/src/cdcmd], [
+ read CHDIR < conf$$.dir/src/cdcmd 2> /dev/null
+], [
+ CHDIR=cd
+])
+rm -fr conf$$.dir
+AC_MSG_RESULT([$CHDIR])
+AC_SUBST(CHDIR)
+}
+
+: "compiler section" && {
+RUBY_WERROR_FLAG([
+ AC_MSG_CHECKING([whether CFLAGS is valid])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+ [AC_MSG_RESULT(yes)],
+ [
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([something wrong with CFLAGS="$CFLAGS"])
+ ]
+ )
+
+ AC_MSG_CHECKING([whether LDFLAGS is valid])
+ {
+ mkdir tmp.$$.try_link &&
+ cd tmp.$$.try_link &&
+ cp ../confdefs.h . &&
+ echo '<?xml?><plist><dict><key>CFBundleIdentifier</key><string></string></dict></plist>' > Info.plist &&
+ :
+ } || AC_MSG_ERROR([failed to make temporary directory])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+ [AC_MSG_RESULT(yes)],
+ [
+ cd .. && rm -fr tmp.$$.try_link
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([something wrong with LDFLAGS="$LDFLAGS"])
+ ]
+ )
+ cd .. && rm -fr tmp.$$.try_link
+])
+
+: "rpath" && {
+ AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf,
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[
+ AS_CASE(["`head -1 conftest$EXEEXT | tr -dc '\177ELF' | tr '\177' .`"],
+ [.ELF*], [rb_cv_binary_elf=yes], [rb_cv_binary_elf=no])],
+ [rb_cv_binary_elf=no])])
+
+ rpathflag=''
+ AS_IF([test x"${RPATHFLAG=}" = x], [
+ AS_CASE(["$target_os"],
+ [aix*], [rpathflag='-blibpath:'],
+ [for rpathflag in "-rpath " -R; do
+ AS_CASE("$rpathflag",
+ [*" "], [AS_CASE(["${linker_flag}"],
+ [*,], [rpathflag=`echo "$rpathflag" | tr ' ' ,`])])
+ rpathflag="${linker_flag}${rpathflag}"
+ RUBY_TRY_LDFLAGS([${rpathflag}.], [], [rpathflag=])
+ AS_IF([test "x${rpathflag}" != x], [break])
+ done])
+ ], [
+ rpathflag=`echo "$RPATHFLAG" | sed 's/%.*//'`
+ ])
+
+ AC_ARG_ENABLE(rpath,
+ AS_HELP_STRING([--enable-rpath], [embed run path into extension libraries.
+ enabled by default on ELF platforms]),
+ [enable_rpath=$enableval], [enable_rpath="$rb_cv_binary_elf"])
+
+ AS_IF([test "$enable_rpath:${RPATHFLAG}" = yes:], [
+ RPATHFLAG="${rpathflag:+ ${rpathflag}%1\$-s}"
+ ])
+ AS_CASE([${RPATHFLAG}],[*'%1$'*],[: ${LIBPATHFLAG=' -L%1$-s'}],[: ${LIBPATHFLAG=' -L%s'}])
+}
+
+RUBY_TRY_LDFLAGS(-fdeclspec, [fdeclspec=yes], [fdeclspec=no])
+AS_IF([test "$fdeclspec" = yes], [
+ RUBY_APPEND_OPTIONS(CFLAGS, -fdeclspec)
+ RUBY_APPEND_OPTIONS(cflags, -fdeclspec)
+ RUBY_APPEND_OPTIONS(orig_cflags, -fdeclspec)
+])
+RUBY_TRY_CXXFLAGS(-fdeclspec, [fdeclspec=yes], [fdeclspec=no])
+AS_IF([test "$fdeclspec" = yes], [
+ RUBY_APPEND_OPTIONS(CXXFLAGS, -fdeclspec)
+])
+
+AC_ARG_ENABLE(devel,
+ AS_HELP_STRING([--enable-devel], [enable development build]),
+ [RUBY_DEVEL=$enableval],
+ [AS_IF([test "x${RUBY_DEVEL-no}" != xyes], [RUBY_DEVEL=])]
+)dnl
+AC_SUBST(RUBY_DEVEL)
+particular_werror_flags=${RUBY_DEVEL:-no}
+AC_ARG_ENABLE(werror,
+ AS_HELP_STRING([--disable-werror],
+ [don't make warnings into errors
+ even if a compiler support -Werror feature
+ [[disabled by default unless development version]]]),
+ [particular_werror_flags=$enableval])
+
+rb_cv_warnflags="$warnflags"
+AS_CASE(["$GCC:${warnflags+set}:${extra_warnflags:+set}:"],
+[yes::*|yes:*:set:], [# GCC && (!warnflags || extra_warnflags)
+ AS_IF([test $gcc_major -le 6], [
+ extra_warnflags="$extra_warnflags -Wno-maybe-uninitialized"
+ ])
+ # ICC doesn't support -Werror=
+ AS_IF([test $icc_version -gt 0], [
+ particular_werror_flags=no
+ ])
+ for wflag in \
+ -Werror=extra-tokens \
+ -Werror=deprecated-declarations \
+ -Werror=division-by-zero -Werror=div-by-zero \
+ -Werror=duplicated-cond \
+ -Werror=implicit-function-declaration \
+ -Werror=implicit-int \
+ -Werror=misleading-indentation \
+ -Werror=pointer-arith \
+ -Werror=shorten-64-to-32 \
+ -Werror=write-strings \
+ -Werror=old-style-definition \
+ -Wimplicit-fallthrough=0 \
+ -Wmissing-noreturn \
+ -Wno-cast-function-type \
+ -Wno-constant-logical-operand \
+ -Wno-long-long \
+ -Wno-missing-field-initializers \
+ -Wno-overlength-strings \
+ -Wno-packed-bitfield-compat \
+ -Wno-parentheses-equality \
+ -Wno-self-assign \
+ -Wno-tautological-compare \
+ -Wno-unused-parameter \
+ -Wno-unused-value \
+ -Wsuggest-attribute=format \
+ -Wsuggest-attribute=noreturn \
+ -Wunused-variable \
+ -diag-disable=175,188,1684,2259,2312 \
+ $extra_warnflags \
+ ; do
+ AS_IF([test "$particular_werror_flags" != yes], [
+ wflag=`echo x$wflag | sed 's/^x-Werror=/-W/;s/^x//'`
+ ])
+ ok=no
+ RUBY_TRY_CFLAGS($wflag, [
+ RUBY_APPEND_OPTIONS(warnflags, $wflag)
+ ok=yes
+ ])
+ AS_CASE([$ok:$wflag], [no:-Werror=*], [
+ wflag=`echo x$wflag | sed 's/^x-Werror=/-W/'`
+ RUBY_TRY_CFLAGS($wflag, [
+ RUBY_APPEND_OPTIONS(warnflags, $wflag)
+ particular_werror_flags=no
+ ])
+ ])
+ done
+ AS_IF([test "$particular_werror_flags" = "yes"], [
+ wflag=-Werror=undef
+ ], [
+ wflag=-Wundef
+ ])
+ RUBY_TRY_CFLAGS($wflag, [
+ RUBY_APPEND_OPTIONS(warnflags, $wflag)
+ ], [], [
+ @%:@if !defined(RUBY_CONFIG_TEST_NEVER_DEFINED_SYMBOL)
+ @%:@elif RUBY_CONFIG_TEST_NEVER_DEFINED_SYMBOL
+ @%:@endif
+ ])
+ AS_CASE([" $warnflags "],[*" -Wno-missing-field-initializers "*], [wflag="-Wall -Wextra"],
+ [wflag=-Wall])
+ RUBY_TRY_CFLAGS($wflag, [warnflags="$wflag${warnflags+ $warnflags}"])
+ # Disable warnflags while conftest. -Werror=* flags might make bad OS capability guess.
+ rb_cv_warnflags="$warnflags"
+ warnflags=
+])
+RUBY_TRY_CFLAGS(-Qunused-arguments, [RUBY_APPEND_OPTIONS(rb_cv_wsuppress_flags, -Qunused-arguments)])
+AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([
+@%:@if !(defined(__SUNPRO_C)||defined(__SUNPRO_CC))
+@%:@error not sunpro
+@%:@endif],[])], [
+ for e in \
+ E_STATEMENT_NOT_REACHED \
+ E_INIT_SIGN_EXTEND \
+ E_INIT_DOES_NOT_FIT \
+ E_INITIALIZATION_TYPE_MISMATCH
+ do
+ RUBY_TRY_CFLAGS([-erroff=${e}], [
+ RUBY_APPEND_OPTIONS(rb_cv_warnflags, [-erroff=${e}])
+ ])
+ done
+])
+
+AC_ARG_WITH(compress-debug-sections,
+ AS_HELP_STRING([--with-compress-debug-sections=type],
+ [enable debug section compression]),
+ [compress_debug_sections=$withval], [compress_debug_sections=])
+
+AS_IF([test "$GCC" = yes], [
+ # -D_FORTIFY_SOURCE
+ # When defined _FORTIFY_SOURCE, glibc enables some additional sanity
+ # argument check. The performance drop is very little and Ubuntu enables
+ # _FORTIFY_SOURCE=2 by default. So, let's support it for protecting us from
+ # a mistake of silly C extensions.
+
+ # TODO: check if link succeeds with _FORTIFY_SOURCE=2.
+ AS_CASE(["$target_os"],
+ [mingw*], [
+ fortify_source=no
+ ])
+ AC_ARG_ENABLE(fortify_source,
+ AS_HELP_STRING([--disable-fortify-source],
+ [disable -D_FORTIFY_SOURCE=2 option, which causes link error on mingw]),
+ [fortify_source=$enableval])
+ AS_IF([test "x$fortify_source" != xno], [
+ RUBY_TRY_CFLAGS([$optflags -D_FORTIFY_SOURCE=2],
+ [RUBY_APPEND_OPTION(XCFLAGS, -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2)], [],
+ [@%:@include <stdio.h>])
+ ])
+
+ : ${MJIT_HEADER_FLAGS='-P -dD'}
+
+ # -fstack-protector
+ AS_CASE(["$target_os"],
+ [emscripten*|wasi*], [
+ stack_protector=no
+ ])
+ AS_IF([test -z "${stack_protector+set}"], [
+ AS_FOR(option, opt, [-fstack-protector-strong -fstack-protector], [
+ RUBY_TRY_CFLAGS(option, [stack_protector=yes])
+ AS_IF([test "x$stack_protector" = xyes], [
+ RUBY_TRY_LDFLAGS(option, [], [stack_protector=])
+ ])
+ AS_IF([test "x$stack_protector" = xyes], [stack_protector=option; break])
+ ])
+ ])
+ AC_MSG_CHECKING([for -fstack-protector])
+ AC_MSG_RESULT(["$stack_protector"])
+ AS_CASE(["$stack_protector"], [-*], [
+ RUBY_APPEND_OPTION(XCFLAGS, $stack_protector)
+ RUBY_APPEND_OPTION(XLDFLAGS, $stack_protector)
+ RUBY_APPEND_OPTION(LDFLAGS, $stack_protector)
+ ])
+
+ # aarch64 branch protection
+ AS_CASE(["$target_cpu"], [aarch64], [
+ AS_FOR(option, opt, [-mbranch-protection=pac-ret -msign-return-address=all], [
+ RUBY_TRY_CFLAGS(option, [branch_protection=yes], [branch_protection=no])
+ AS_IF([test "x$branch_protection" = xyes], [
+ RUBY_APPEND_OPTION(XCFLAGS, option)
+ break
+ ])
+ ])
+ ])
+
+ AS_CASE("${compress_debug_sections:-zlib}",
+ [none|no], [], [
+ RUBY_TRY_LDFLAGS(${linker_flag}--compress-debug-sections=${compress_debug_sections:-zlib},
+ [compress_debug_sections=${compress_debug_sections:-zlib}],
+ [compress_debug_sections=no])
+ ])
+ AS_IF([test "x$compress_debug_sections" != xno], [
+ RUBY_APPEND_OPTION(DLDFLAGS, ${linker_flag}--compress-debug-sections=$compress_debug_sections)
+ ])
+
+ AS_CASE(["$target_os"],[mingw*], [
+ # On Windows platforms, system provided headers are VC++
+ # optimized. That is, C++ habits are often contaminated into
+ # various headers. Most frequent situation is the use of //
+ # comments. We bypass ANSI C mode for them. Otherwise
+ # extension libs cannot include those headers.
+
+ # Since math.h in some mingw64 wrongly declares frexp and modf
+ # to be pure, the variables pointed by the second arguments are
+ # considered uninitialized unexpectedly.
+ AC_CACHE_CHECK([whether frexp and modf are broken],
+ rb_cv_mingw64_broken_frexp_modf,
+ [
+ save_CFLAGS="$CFLAGS"
+ AS_IF([test "$particular_werror_flags" = "yes"], [
+ CFLAGS="$CFLAGS -Werror=uninitialized"
+ ], [
+ CFLAGS="$CFLAGS -Werror -Wuninitialized"
+ ])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>
+ int foo(double x)
+ {
+ int exp;
+ frexp(x, &exp);
+ return exp;
+ }]], [[if (foo(0.0)) return 1;]])],
+ [rb_cv_mingw64_broken_frexp_modf=no],
+ [rb_cv_mingw64_broken_frexp_modf=yes])
+ CFLAGS="$save_CFLAGS"
+ ])
+ AS_IF([test "$rb_cv_mingw64_broken_frexp_modf" = yes], [
+ AC_DEFINE(RUBY_MINGW64_BROKEN_FREXP_MODF)
+ ])
+ ],
+ [cygwin*|msys*|darwin*|netbsd*], [
+ # need lgamma_r()
+ ])
+
+ # suppress annoying -Wstrict-overflow warnings
+ RUBY_TRY_CFLAGS(-fno-strict-overflow, [RUBY_APPEND_OPTION(XCFLAGS, -fno-strict-overflow)])
+
+ test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-ggdb3, [debugflags=-ggdb3])}
+ test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-ggdb, [debugflags=-ggdb])}
+ test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-g3, [debugflags=-g3])}
+])
+test $ac_cv_prog_cc_g = yes && : ${debugflags=-g}
+
+AS_IF([test "$GCC" = ""], [
+ AS_CASE(["$target_os"],[aix*],[warnflags="$warnflags -qinfo=por" rb_cv_warnflags="$rb_cv_warnflags -qinfo=por"])
+])
+AS_IF([test "$GCC" = yes], [
+ RUBY_TRY_CFLAGS(-fvisibility=hidden, [visibility_option=yes], [visibility_option=no])
+ AC_SUBST(WERRORFLAG, "-Werror")
+ AS_IF([test "$visibility_option" = yes], [
+ RUBY_APPEND_OPTION(XCFLAGS, -fvisibility=hidden)
+ AC_DEFINE(RUBY_SYMBOL_EXPORT_BEGIN, [_Pragma("GCC visibility push(default)")])
+ AC_DEFINE(RUBY_SYMBOL_EXPORT_END, [_Pragma("GCC visibility pop")])
+ ], [
+ RUBY_TRY_LDFLAGS([-Wl,-unexported_symbol,_Init_*], [visibility_option=ld], [visibility_option=no])
+ ])
+ test "$visibility_option" = no || OBJCOPY=:
+])
+
+AS_IF([test "$GCC" = yes], [
+ # optflags
+
+ AS_CASE(["$target_os"], [mingw*], [
+ RUBY_TRY_CFLAGS(-fno-omit-frame-pointer, [optflags="${optflags+$optflags }-fno-omit-frame-pointer"])
+ RUBY_TRY_CFLAGS(-static-libgcc, [static_libgcc=yes], [static_libgcc=no])
+ AS_IF([test "$static_libgcc" = yes], [
+ RUBY_APPEND_OPTION(EXTLDFLAGS, -static-libgcc)
+ ])
+ ])
+
+ # disable fast-math
+ for oflag in -fno-fast-math; do
+ RUBY_TRY_CFLAGS($oflag, [RUBY_APPEND_OPTION(optflags, $oflag)])
+ done
+ for oflag in -fexcess-precision=standard -fp-model\ precise; do
+ RUBY_TRY_CFLAGS($oflag, [RUBY_APPEND_OPTION(XCFLAGS, $oflag)])
+ done
+])
+
+AS_CASE(["$target_cpu"], [[i[3-6]86*]], [
+ AC_CACHE_CHECK([for __sync_val_compare_and_swap], [rb_cv_gcc_compiler_cas], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned long atomic_var;]],
+ [[__sync_val_compare_and_swap(&atomic_var, 0, 1);]])],
+ [rb_cv_gcc_compiler_cas=yes],
+ [
+ save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -march=i486"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned long atomic_var;]],
+ [[__sync_val_compare_and_swap(&atomic_var, 0, 1);]])],
+ [rb_cv_gcc_compiler_cas=i486],
+ [rb_cv_gcc_compiler_cas=no])
+ CFLAGS="$save_CFLAGS"
+ ])
+ ])
+ AS_IF([test "$rb_cv_gcc_compiler_cas" = i486], [ARCH_FLAG="-march=i486"])
+])
+
+OPT_DIR=
+AC_ARG_WITH([gmp-dir],
+ AS_HELP_STRING([--with-gmp-dir=DIR],
+ [specify the prefix directory where gmp is installed]),
+ [OPT_DIR="${OPT_DIR:+$OPT_DIR$PATH_SEPARATOR}$withval"], [])
+AC_ARG_WITH([gmp],
+ [AS_HELP_STRING([--without-gmp],
+ [disable GNU GMP to accelerate Bignum operations])],
+ [], [with_gmp=yes])
+
+AC_ARG_WITH(opt-dir,
+ AS_HELP_STRING([--with-opt-dir=DIR-LIST],
+ [add optional headers and libraries directories separated by $PATH_SEPARATOR]),
+ [OPT_DIR="${OPT_DIR:+$OPT_DIR$PATH_SEPARATOR}$withval"], [])
+
+AS_IF([test "x$OPT_DIR" != x], [
+ val=`IFS="$PATH_SEPARATOR"
+ for dir in $OPT_DIR; do
+ test -z "$dir" && continue
+ echo x ${LIBPATHFLAG} ${RPATHFLAG} |
+ sed "s/^x *//;s${IFS}"'%1\\$-s'"${IFS}${dir}/lib${IFS}g;s${IFS}%s${IFS}${dir}/lib${IFS}g"
+ done | tr '\012' ' ' | sed 's/ *$//'`
+ LDFLAGS="${LDFLAGS:+$LDFLAGS }$val"
+ DLDFLAGS="${DLDFLAGS:+$DLDFLAGS }$val"
+ LDFLAGS_OPTDIR="$val"
+ INCFLAGS="${INCFLAGS:+$INCFLAGS }"`echo "$OPT_DIR" | tr "${PATH_SEPARATOR}" '\012' |
+ sed '/^$/d;s|^|-I|;s|$|/include|' | tr '\012' ' ' | sed 's/ *$//'`
+])
+AC_SUBST(incflags, "$INCFLAGS")
+
+test -z "${ac_env_CFLAGS_set}" -a -n "${cflags+set}" && eval CFLAGS="\"$cflags $ARCH_FLAG\""
+test -z "${ac_env_CXXFLAGS_set}" -a -n "${cxxflags+set}" && eval CXXFLAGS="\"$cxxflags $ARCH_FLAG\""
+}
+
+AC_CACHE_CHECK([whether compiler has statement and declarations in expressions],
+ rb_cv_have_stmt_and_decl_in_expr,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[ __extension__ ({ int a = 0; a; }); ]])],
+ [rb_cv_have_stmt_and_decl_in_expr=yes],
+ [rb_cv_have_stmt_and_decl_in_expr=no])])
+AS_IF([test "$rb_cv_have_stmt_and_decl_in_expr" = yes], [
+ AC_DEFINE(HAVE_STMT_AND_DECL_IN_EXPR)
+])
+
+: "header and library section" && {
+AC_ARG_WITH(winnt-ver,
+ AS_HELP_STRING([--with-winnt-ver=0xXXXX], [target Windows NT version (default to 0x0600)]),
+ [with_winnt_ver="$withval"], [with_winnt_ver="0x0600"])
+AS_CASE(["$target_os"],
+[mingw*], [
+ RUBY_APPEND_OPTION(CPPFLAGS, -D_WIN32_WINNT=$with_winnt_ver)
+ RUBY_APPEND_OPTION(CPPFLAGS, -D__MINGW_USE_VC2005_COMPAT)
+])
+
+RUBY_THREAD
+
+dnl Checks for libraries.
+AS_CASE(["$target_os"],[*bsd*|dragonfly*],[],[ac_cv_func_daemon=no])
+
+AS_CASE(["$target_os"], [*android*], [
+ AS_CASE(["$target_cpu"], [arm*], [
+ ac_cv_func___builtin_setjmp=no
+ ])
+])
+
+AS_UNSET(ORIG_LIBS)
+POSTLINK=:
+AC_SUBST(POSTLINK)
+cleanlibs=
+AC_SUBST(cleanlibs)
+AS_CASE(["$target_os"],
+[nextstep*], [ ],
+[openstep*], [ ],
+[rhapsody*], [ ],
+[darwin*], [
+ ORIG_LIBS="$LIBS"
+ RUBY_PREPEND_OPTION(LIBS, -lobjc)
+ RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT)
+ AC_CACHE_CHECK([whether syscall(2) is deprecated], rb_cv_syscall_deprecated,
+ [RUBY_WERROR_FLAG([
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <unistd.h>]],
+ [[if (syscall(0)) return 1;]])],
+ [rb_cv_syscall_deprecated=no],
+ [rb_cv_syscall_deprecated=yes])])])
+ AS_IF([test $rb_cv_syscall_deprecated = yes], [
+ ac_cv_func___syscall=no
+ ac_cv_func_syscall=no
+ ac_cv_header_sys_syscall_h=no
+ ac_cv_header_syscall_h=no
+ ])
+ ac_cv_func_getcontext=no
+ ac_cv_func_setcontext=no
+ ac_cv_type_getgroups=gid_t # getgroups() on Rosetta fills garbage
+ ac_cv_lib_crypt_crypt=no
+ ac_cv_func_fdatasync=no # Mac OS X wrongly reports it has fdatasync()
+ ac_cv_func_vfork=no
+ AS_IF([test $gcc_major -eq 4 -a $gcc_minor -lt 3], [
+ ac_cv_func___builtin_setjmp=no
+ ])
+ with_setjmp_type=sigsetjmp # to hijack SIGCHLD handler
+ AC_CACHE_CHECK(for broken crypt with 8bit chars, rb_cv_broken_crypt,
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+void
+broken_crypt(const char *salt, const char *buf1, const char *buf2)
+{
+#if 0
+ printf("%.2x%.2x: %s -> %s\n", (unsigned char)salt[0], (unsigned char)salt[1],
+ buf1+2, buf2+2);
+#endif
+}
+
+int
+main()
+{
+ int i;
+ char salt[2], buf[256], *s;
+ for (i = 0; i < 128*128; i++) {
+ salt[0] = 0x80 | (i & 0x7f);
+ salt[1] = 0x80 | (i >> 7);
+ strcpy(buf, crypt("", salt));
+ if (strcmp(buf, s = crypt("", salt))) {
+ broken_crypt(salt, buf, s);
+ return 1;
+ }
+ }
+ salt[0] = salt[1] = ' ';
+ strcpy(buf, crypt("", salt));
+ salt[0] = salt[1] = 0x80 | ' ';
+ if (strcmp(buf, s = crypt("", salt))) {
+ broken_crypt(salt, buf, s);
+ return 1;
+ }
+ return 0;
+}
+]])],
+ rb_cv_broken_crypt=no,
+ rb_cv_broken_crypt=yes,
+ rb_cv_broken_crypt=yes)])
+ AS_IF([test "$rb_cv_broken_crypt" = yes], [
+ AC_DEFINE(BROKEN_CRYPT, 1)
+ ])
+ POSTLINK=""
+ AC_CHECK_PROGS(codesign, codesign)
+ AC_CHECK_PROGS(dsymutil, dsymutil)
+ AS_IF([test -n "$codesign"], [
+ POSTLINK="{ test -z '\$(RUBY_CODESIGN)' || $codesign -s '\$(RUBY_CODESIGN)' -f \$@; }${POSTLINK:+; $POSTLINK}"
+ ])
+ AS_IF([test -n "$dsymutil"], [
+ POSTLINK="$dsymutil \$@${POSTLINK:+; $POSTLINK}"
+ ])
+ AS_IF([test -n "${POSTLINK}"], [
+ LINK_SO="$LINK_SO
+\$(POSTLINK)"
+ ])
+ AC_CHECK_HEADERS(crt_externs.h, [], [], [
+ #include <crt_externs.h>
+ ])
+ cleanlibs='$(TARGET_SO).dSYM'
+ ],
+[solaris*], [ LIBS="-lm $LIBS"
+ ac_cv_func_vfork=no
+ AC_MSG_CHECKING(whether _XOPEN_SOURCE is already given)
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
+ #ifndef _XOPEN_SOURCE
+ #error _XOPEN_SOURCE is not defined
+ #endif
+ ]], [[]])],
+ [given_xopen_source=yes], [given_xopen_source=no])
+ AC_MSG_RESULT($given_xopen_source)
+ AS_IF([test $given_xopen_source = no], [
+ AC_MSG_CHECKING(appropriate _XOPEN_SOURCE value to define)
+ define_xopen_source=""
+ for tmp_xpg in 7 6 5; do
+ AS_IF([test x"$define_xopen_source" != x], [
+ break
+ ])
+ RUBY_WERROR_FLAG([AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #define _XOPEN_SOURCE ${tmp_xpg}00
+ #include <unistd.h>
+ #ifndef _XPG${tmp_xpg}
+ #error _XPG${tmp_xpg} should be defined by _XOPEN_SOURCE=${tmp_xpg}00
+ #endif
+ ]], [[]])],
+ [define_xopen_source=${tmp_xpg}00], [])
+ ])
+ done
+ AS_IF([test x"$define_xopen_source" = x], [
+ define_xopen_source=no
+ ])
+ AC_MSG_RESULT($define_xopen_source)
+ AS_IF([test x"$define_xopen_source" != xno], [
+ RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE=$define_xopen_source)
+ # _XOPEN_SOURCE should not be defined for C++ on Solaris.
+ RUBY_APPEND_OPTIONS(CXXFLAGS, -U_XOPEN_SOURCE)
+ ])
+ ])
+ AC_CHECK_TYPES([caddr_t],[],[],[@%:@include <sys/types.h>])
+ AC_CACHE_CHECK([whether madvise declaration is needed], rb_cv_madvice_prototype_using_caddr_t,
+ [RUBY_WERROR_FLAG([AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ @%:@include <sys/unistd.h>
+ @%:@include <sys/mman.h>
+ @%:@include <sys/types.h>
+ extern int madvise(caddr_t, size_t, int);
+ ]], [[]])],
+ [rb_cv_madvice_prototype_using_caddr_t=yes], [rb_cv_madvice_prototype_using_caddr_t=no])
+ ])
+ ])
+ AS_IF([test $rb_cv_madvice_prototype_using_caddr_t = yes], [AC_DEFINE(NEED_MADVICE_PROTOTYPE_USING_CADDR_T, 1)])
+ ],
+[haiku*], [
+ LIBS="$LIBS" # m lib is include in root
+ ],
+[cygwin*|msys*], [
+ ac_cv_header_langinfo_h=yes
+ RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE -D_GNU_SOURCE)
+ AC_CHECK_FUNCS(cygwin_conv_path)
+ AC_LIBOBJ([langinfo])
+ ],
+[mingw*], [ LIBS="-lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt $LIBS"
+ ac_cv_header_pwd_h=no
+ ac_cv_header_utime_h=no
+ ac_cv_header_sys_ioctl_h=no
+ ac_cv_header_sys_param_h=no
+ ac_cv_header_sys_resource_h=no
+ ac_cv_header_sys_select_h=no
+ ac_cv_header_sys_time_h=no
+ ac_cv_header_sys_times_h=no
+ ac_cv_header_sys_socket_h=no
+ ac_cv_func_execv=yes
+ ac_cv_func_lstat=yes
+ ac_cv_func_times=yes
+ ac_cv_func_waitpid=yes
+ ac_cv_func_fsync=yes
+ ac_cv_func_seekdir=yes
+ ac_cv_func_telldir=yes
+ ac_cv_func_lchown=yes
+ ac_cv_func_link=yes
+ ac_cv_func_readlink=yes
+ ac_cv_func_shutdown=yes
+ ac_cv_func_symlink=yes
+ ac_cv_lib_crypt_crypt=no
+ ac_cv_func_getpgrp_void=no
+ ac_cv_func_memcmp_working=yes
+ ac_cv_lib_dl_dlopen=no
+ rb_cv_negative_time_t=yes
+ ac_cv_func_fcntl=yes
+ ac_cv_func_flock=yes
+ ac_cv_func_gmtime_r=yes
+ rb_cv_large_fd_select=yes
+ ac_cv_type_struct_timeval=yes
+ ac_cv_func_malloc_usable_size=no
+ ac_cv_type_off_t=yes
+ ac_cv_sizeof_off_t=8
+ AS_IF([test "$target_cpu" = x64], [
+ ac_cv_func___builtin_setjmp=yes
+ ac_cv_func_round=no
+ ])
+ ac_cv_func_tgamma=no
+ AC_CHECK_TYPE([NET_LUID], [], [],
+ [@%:@include <winsock2.h>
+ @%:@include <iphlpapi.h>])
+ AS_IF([test x"$ac_cv_type_NET_LUID" = xyes], [
+ AC_DEFINE(HAVE_TYPE_NET_LUID, 1)
+ ])
+ AC_CHECK_FUNCS(_gmtime64_s)
+ AC_CHECK_FUNCS(_wfreopen_s)
+ AC_LIBOBJ([langinfo])
+ ],
+[bsdi*], [ LIBS="-lm $LIBS"
+ AC_DEFINE(BROKEN_SETREUID, 1)
+ AC_DEFINE(BROKEN_SETREGID, 1)
+ ac_cv_sizeof_rlim_t=8],
+[freebsd*], [ LIBS="-lm $LIBS"
+ ac_cv_func_getpeername=no
+ ac_cv_func_getsockname=no
+ ac_cv_func_shutdown=no
+ ac_cv_func_close=no
+ ],
+[netbsd*], [ LIBS="-lm $LIBS"
+ ],
+[dragonfly*], [ LIBS="-lm $LIBS"
+ ],
+[aix*],[ LIBS="-lm $LIBS"
+ ac_cv_func_round=no
+ ac_cv_func___builtin_setjmp=no
+ ],
+[linux*],[ LIBS="-lm $LIBS"
+ # __builtin_longjmp in ppc64* Linux does not restore
+ # the TOC register (r2), which is problematic
+ # when a global exit happens from JITted .so code.
+ AS_CASE(["$target_cpu"], [powerpc64*], [
+ ac_cv_func___builtin_setjmp=no
+ ])
+ # With gcc-8's -fcf-protection, MJIT's __builtin_longjmp fails.
+ AS_CASE(["$CC $CFLAGS "], [*" -fcf-protection "*], [cf_protection=yes], [cf_protection=no])
+ AS_IF([test "$cf_protection" = yes], [
+ ac_cv_func___builtin_setjmp=no
+ ])
+ ],
+[emscripten*], [LIBS="-lm -lc $LIBS"
+ RUBY_APPEND_OPTIONS(LDFLAGS, "-sALLOW_MEMORY_GROWTH=1")
+ RUBY_APPEND_OPTIONS(LDFLAGS, "-sASYNCIFY")
+ RUBY_APPEND_OPTIONS(LDFLAGS, "-sFORCE_FILESYSTEM=1")
+ ac_cv_func_shutdown=no
+ ],
+[wasi*],[ LIBS="-lm -lwasi-emulated-mman -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks $LIBS"
+ RUBY_APPEND_OPTIONS(CFLAGS, -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_MMAN -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_PROCESS_CLOCKS)
+ RUBY_APPEND_OPTIONS(CPPFLAGS, -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_MMAN -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_PROCESS_CLOCKS)
+ POSTLINK="\$(WASMOPT) --asyncify \$(wasmoptflags) --pass-arg=asyncify-ignore-imports -o \$@ \$@${POSTLINK:+; $POSTLINK}"
+ # wasi-libc's sys/socket.h is not compatible with -std=gnu99,
+ # so re-declare shutdown in include/ruby/missing.h
+ ac_cv_func_shutdown=no
+ ],
+[ LIBS="-lm $LIBS"])
+: ${ORIG_LIBS=$LIBS}
+
+AS_IF([test -n "${rb_there_is_in_fact_no_gplusplus_but_autoconf_is_cheating_us}"], [
+ AC_MSG_NOTICE([Test skipped due to lack of a C++ compiler.])
+],
+[test -n "${CXX}"], [
+ RUBY_WERROR_FLAG([
+ AC_MSG_CHECKING([whether CXXFLAGS is valid])
+ AC_LANG_PUSH(C++)
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <cstdio>]], [[]])],
+ [AC_MSG_RESULT(yes)],[
+ AC_MSG_RESULT(no)
+ # The message mentions CXXFLAGS, but CPPFLAGS might also affects.
+ AC_MSG_WARN([something wrong with CXXFLAGS="$CXXFLAGS"])
+ CXX=false
+ ])
+ AC_LANG_POP(C++)
+ ])
+])
+
+AC_CHECK_LIB(crypt, crypt) # glibc (GNU/Linux, GNU/Hurd, GNU/kFreeBSD)
+AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
+AC_CHECK_LIB(socket, shutdown) # SunOS/Solaris
+
+dnl Checks for header files.
+AC_HEADER_DIRENT
+dnl AC_HEADER_STDC has been checked in AC_USE_SYSTEM_EXTENSIONS
+AC_HEADER_STDBOOL
+AC_HEADER_SYS_WAIT
+
+AC_CHECK_HEADERS([afunix.h], [], [],
+[#ifdef _WIN32
+# include <winsock2.h>
+#endif
+])
+AC_CHECK_HEADERS(atomic.h)
+AC_CHECK_HEADERS(copyfile.h)
+AC_CHECK_HEADERS(direct.h)
+AC_CHECK_HEADERS(grp.h)
+AC_CHECK_HEADERS(fcntl.h)
+AC_CHECK_HEADERS(float.h)
+AC_CHECK_HEADERS(ieeefp.h)
+AC_CHECK_HEADERS(intrinsics.h)
+AC_CHECK_HEADERS(langinfo.h)
+AC_CHECK_HEADERS(limits.h)
+AC_CHECK_HEADERS(locale.h)
+AC_CHECK_HEADERS(malloc.h)
+AC_CHECK_HEADERS(malloc/malloc.h)
+AC_CHECK_HEADERS(malloc_np.h)
+AC_CHECK_HEADERS(net/socket.h)
+AC_CHECK_HEADERS(process.h)
+AC_CHECK_HEADERS(pwd.h)
+AC_CHECK_HEADERS(sanitizer/asan_interface.h)
+AC_CHECK_HEADERS(sanitizer/msan_interface.h)
+AC_CHECK_HEADERS(setjmpex.h)
+AC_CHECK_HEADERS(stdalign.h)
+AC_CHECK_HEADERS(stdio.h)
+AC_CHECK_HEADERS(sys/attr.h)
+AC_CHECK_HEADERS(sys/eventfd.h)
+AC_CHECK_HEADERS(sys/fcntl.h)
+AC_CHECK_HEADERS(sys/file.h)
+AC_CHECK_HEADERS(sys/id.h)
+AC_CHECK_HEADERS(sys/ioctl.h)
+AC_CHECK_HEADERS(sys/mkdev.h)
+AC_CHECK_HEADERS(sys/param.h)
+AC_CHECK_HEADERS(sys/prctl.h)
+AC_CHECK_HEADERS(sys/random.h)
+AC_CHECK_HEADERS(sys/resource.h)
+AC_CHECK_HEADERS(sys/select.h)
+AC_CHECK_HEADERS(sys/sendfile.h)
+AC_CHECK_HEADERS(sys/socket.h)
+AC_CHECK_HEADERS(sys/syscall.h)
+AC_CHECK_HEADERS(sys/sysmacros.h)
+AC_CHECK_HEADERS(sys/time.h)
+AC_CHECK_HEADERS(sys/times.h)
+AC_CHECK_HEADERS(sys/uio.h)
+AC_CHECK_HEADERS(sys/utime.h)
+AC_CHECK_HEADERS(syscall.h)
+AC_CHECK_HEADERS(time.h)
+AC_CHECK_HEADERS(ucontext.h)
+AC_CHECK_HEADERS(utime.h)
+AC_CHECK_HEADERS(stdatomic.h)
+
+AS_CASE("$target_cpu", [x64|x86_64|i[3-6]86*], [
+ AC_CHECK_HEADERS(x86intrin.h)
+])
+RUBY_UNIVERSAL_CHECK_HEADER([x86_64, i386], x86intrin.h)
+
+AS_IF([test "x$with_gmp" != xno],
+ [AC_CHECK_HEADERS(gmp.h)
+ AS_IF([test "x$ac_cv_header_gmp_h" != xno],
+ AC_SEARCH_LIBS([__gmpz_init], [gmp],
+ [AC_DEFINE(HAVE_LIBGMP, 1)]))])
+
+AC_ARG_WITH([jemalloc],
+ [AS_HELP_STRING([--with-jemalloc],[use jemalloc allocator])],
+ [with_jemalloc=$withval], [with_jemalloc=no])
+AS_IF([test "x$with_jemalloc" != xno],[
+ # find jemalloc header first
+ save_CPPFLAGS="${CPPFLAGS}"
+ CPPFLAGS="${INCFLAGS} ${CPPFLAGS}"
+ malloc_header=
+ AC_CHECK_HEADER(jemalloc/jemalloc.h, [malloc_header=jemalloc/jemalloc.h], [
+ AC_CHECK_HEADER(jemalloc.h, [malloc_header=jemalloc.h])
+ ])
+ AS_IF([test "$malloc_header" != ""], [
+ AC_DEFINE_UNQUOTED(RUBY_ALTERNATIVE_MALLOC_HEADER, [<$malloc_header>])
+ ])
+ save_LIBS="$LIBS"
+ AC_CACHE_CHECK([for jemalloc library], rb_cv_jemalloc_library, [
+ rb_cv_jemalloc_library=no
+ # try [with mangle, without mangle] x [no more additional
+ # libraries, adding jemalloc] combination, using the jemalloc
+ # header found above.
+ for mangle in '' mangle; do
+ for lib in '' -ljemalloc; do
+ LIBS="${lib:+$lib }$LIBS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([${mangle:+@%:@define JEMALLOC_MANGLE 1}
+ @%:@include <stdio.h>
+ @%:@ifdef RUBY_ALTERNATIVE_MALLOC_HEADER
+ @%:@include RUBY_ALTERNATIVE_MALLOC_HEADER
+ @%:@else
+ extern const char *malloc_conf;
+ @%:@endif],
+ [/* access at runtime not to be optimized away */
+ if (malloc_conf) printf("malloc_conf=%s\n", malloc_conf);])],
+ [rb_cv_jemalloc_library="${lib:-none required}${mangle:+ with mangle}"])
+ LIBS="$save_LIBS"
+ test "${rb_cv_jemalloc_library}" = no || break 2
+ done
+ done
+ ])
+ CPPFLAGS="${save_CPPFLAGS}"
+ unset save_CPPFLAGS
+ with_jemalloc=${rb_cv_jemalloc_library}
+ AS_CASE(["$with_jemalloc"],
+ [no],
+ [AC_MSG_ERROR([jemalloc requested but not found])],
+ [-l*], [
+ set dummy $with_jemalloc
+ LIBS="$2 $LIBS"
+ DLDLIBS="$2${DLDLIBS:+ $DLDLIBS}" # probably needed also in extension libraries
+ ])
+ AS_CASE(["$with_jemalloc"],
+ [*" with mangle"], [
+ AC_DEFINE(JEMALLOC_MANGLE)
+ ])
+ AC_DEFINE(HAVE_MALLOC_CONF)
+ ac_cv_func_malloc_usable_size=yes
+]) # with_jemalloc
+
+dnl check for large file stuff
+mv confdefs.h confdefs1.h
+: > confdefs.h
+AC_SYS_LARGEFILE
+# On 32-bit Solaris, it is safe to define _LARGEFILE_SOURCE
+# which is not added by AC_SYS_LARGEFILE.
+AS_IF([test x"$enable_largefile" != xno], [
+ AS_CASE(["$target_os"], [solaris*], [
+ AC_MSG_CHECKING([wheather _LARGEFILE_SOURCE should be defined])
+ AS_CASE(["${ac_cv_sys_file_offset_bits}:${ac_cv_sys_large_files}"],
+ ["64:"|"64:no"|"64:unknown"], [
+ # insert _LARGEFILE_SOURCE before _FILE_OFFSET_BITS line
+ # that is the same order as "getconf LFS_CFLAGS" output
+ mv confdefs.h largefile0.h
+ : > confdefs.h
+ AC_DEFINE(_LARGEFILE_SOURCE)
+ cat largefile0.h >> confdefs.h
+ rm largefile0.h
+ AC_MSG_RESULT([yes])
+ ], [AC_MSG_RESULT([no])])
+ ])
+])
+mv confdefs.h largefile.h
+mv confdefs1.h confdefs.h
+cat largefile.h >> confdefs.h
+
+AS_CASE(["$target_os"],
+ [aix*], [
+ AS_CASE(["$target_cpu:$ac_cv_sys_large_files"],
+ [ppc64:*|powerpc64:*], [],
+ [*:no|*:unknown], [],
+ [
+ # AIX currently does not support a 32-bit call to posix_fadvise()
+ # if _LARGE_FILES is defined.
+ ac_cv_func_posix_fadvise=no
+ ])
+ ])
+
+AC_C_BIGENDIAN([], [], [], [AC_DEFINE(AC_APPLE_UNIVERSAL_BUILD, 1)])
+AC_C_CONST
+AC_C_CHAR_UNSIGNED
+AC_C_INLINE
+AC_C_VOLATILE
+AC_C_TYPEOF
+AC_C_RESTRICT
+
+AS_CASE(":$ac_cv_c_const:$ac_cv_c_volatile:",
+ [*:no:*], [AC_MSG_ERROR(ANSI C-conforming const and volatile are mandatory)])
+
+AC_CHECK_TYPES([long long, off_t])
+
+AC_CACHE_CHECK([char bit], [rb_cv_char_bit],
+ [test "$universal_binary" = yes && cross_compiling=yes
+ AC_COMPUTE_INT([rb_cv_char_bit], [CHAR_BIT],
+ [AC_INCLUDES_DEFAULT([@%:@include <limits.h>])], [rb_cv_char_bit=8])
+ test "$universal_binary" = yes && cross_compiling=$real_cross_compiling])
+
+RUBY_CHECK_SIZEOF(int, [], [ILP])
+RUBY_CHECK_SIZEOF(short)
+RUBY_CHECK_SIZEOF(long, [int], [ILP LP])
+RUBY_CHECK_SIZEOF(long long)
+RUBY_CHECK_SIZEOF(__int64, [8], [ILP LP])
+RUBY_CHECK_SIZEOF(__int128, [16], [ILP LP])
+RUBY_CHECK_SIZEOF(off_t)
+RUBY_CHECK_SIZEOF(void*, [int long "long long"], [ILP LP LLP])
+RUBY_CHECK_SIZEOF(float)
+RUBY_CHECK_SIZEOF(double)
+RUBY_CHECK_SIZEOF(time_t, [long "long long"], [], [@%:@include <time.h>])
+RUBY_CHECK_SIZEOF(clock_t, [], [], [@%:@include <time.h>])
+
+AC_CACHE_CHECK(packed struct attribute, rb_cv_packed_struct,
+ [rb_cv_packed_struct=no
+ for mac in \
+ "__pragma(pack(push, 1)) x __pragma(pack(pop))" \
+ "x __attribute__((packed))" \
+ ; do
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@define PACKED_STRUCT(x) $mac
+ PACKED_STRUCT(struct { int a; });]], [[]])],
+ [rb_cv_packed_struct=$mac; break])
+ done])
+AS_IF([test "$rb_cv_packed_struct" != no], [
+ AC_DEFINE_UNQUOTED([PACKED_STRUCT(x)], [$rb_cv_packed_struct])
+ RUBY_TRY_CFLAGS(-Wno-address-of-packed-member, [AC_DEFINE(USE_UNALIGNED_MEMBER_ACCESS)])
+], [
+ AC_DEFINE_UNQUOTED([PACKED_STRUCT(x)], x)
+])
+
+AS_IF([test "x$ac_cv_type_long_long" = xyes], [
+ RUBY_CHECK_PRINTF_PREFIX(long long, ll I64, LL)
+], [test "x$ac_cv_type___int64" = xyes], [
+ RUBY_CHECK_PRINTF_PREFIX(__int64, ll I64, LL)
+])
+
+RUBY_REPLACE_TYPE(pid_t, int, PIDT)
+RUBY_REPLACE_TYPE(uid_t, int, UIDT)
+RUBY_REPLACE_TYPE(gid_t, int, GIDT)
+RUBY_REPLACE_TYPE(time_t, [], TIMET, [@%:@include <time.h>])
+RUBY_REPLACE_TYPE(dev_t, [int long "long long"], DEVT)
+RUBY_REPLACE_TYPE(mode_t, ["unsigned short" "unsigned int" long], MODET, [@%:@include <sys/stat.h>])
+RUBY_REPLACE_TYPE(rlim_t, [int long "long long"], RLIM, [
+@%:@ifdef HAVE_SYS_TYPES_H
+@%:@include <sys/types.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TYPES_H
+@%:@include <sys/time.h>
+@%:@endif
+@%:@include <sys/resource.h>
+])
+RUBY_REPLACE_TYPE(off_t, [], OFFT)
+RUBY_REPLACE_TYPE(clockid_t, [], CLOCKID, [@%:@ifdef HAVE_TIME_H
+@%:@ include <time.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TIME_H
+@%:@ include <sys/time.h>
+@%:@endif])
+
+# __VA_ARGS__ is also tested in AC_PROG_CC_C99 since autoconf 2.60a (around
+# 2006). The check below is redundant and should always success. Remain not
+# deleted for backward compat.
+AC_CACHE_CHECK(for variable length macro, rb_cv_va_args_macro,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+int foo(const char*);
+@%:@define FOO(...) foo(@%:@__VA_ARGS__)
+]], [[FOO(1);FOO(1,2);FOO(1,2,3);]])],
+ rb_cv_va_args_macro=yes,
+ rb_cv_va_args_macro=no)])
+AS_IF([test "$rb_cv_va_args_macro" = yes], [
+ AC_DEFINE(HAVE_VA_ARGS_MACRO)
+])
+
+# We want C11's `_Alignof`. GCC (and alike) have `__alignof__`, which behave
+# slightly differently than the C11's. We cannot use `__alignof__` for our
+# purpose. The problem is, however, that old gcc and old clang had both
+# implemented `_Alignof` as a synonym of `__alignof__`. They are not what we
+# want. We have to check sanity.
+#
+# See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023
+# See also: https://bugs.llvm.org/show_bug.cgi?id=26547
+AC_CACHE_CHECK([if _Alignof() works], rb_cv_have__alignof,[
+ rb_cv_have__alignof=no
+ RUBY_WERROR_FLAG([
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ @%:@ifdef HAVE_STDALIGN_H
+ @%:@include <stdalign.h>
+ @%:@endif
+ @%:@ifdef STDC_HEADERS
+ @%:@include <stddef.h>
+ @%:@endif
+ @%:@ifndef __GNUC__
+ @%:@define __extension__
+ @%:@endif
+ ]], [[
+ typedef struct conftest_tag {
+ char _;
+ double d;
+ } T;
+ static int conftest_ary@<:@
+ offsetof(T, d) == __extension__ _Alignof(double)
+ ? 1 : -1
+ @:>@;
+ return conftest_ary@<:@0@:>@;
+ ]])],[
+ rb_cv_have__alignof=yes
+ ],[])
+ ])
+])
+AS_IF([test "$rb_cv_have__alignof" != no], [
+ AC_DEFINE(HAVE__ALIGNOF)
+])
+
+RUBY_FUNC_ATTRIBUTE(__const__, CONSTFUNC)
+RUBY_FUNC_ATTRIBUTE(__pure__, PUREFUNC)
+RUBY_FUNC_ATTRIBUTE(__noreturn__, NORETURN)
+RUBY_FUNC_ATTRIBUTE(__deprecated__, DEPRECATED)
+RUBY_FUNC_ATTRIBUTE(__deprecated__("by "@%:@n), DEPRECATED_BY(n,x), rb_cv_func_deprecated_by)
+RUBY_FUNC_ATTRIBUTE(__noinline__, NOINLINE)
+RUBY_FUNC_ATTRIBUTE(__always_inline__, ALWAYS_INLINE)
+RUBY_FUNC_ATTRIBUTE(__no_sanitize__(san), NO_SANITIZE(san, x), rb_cv_func_no_sanitize)
+RUBY_FUNC_ATTRIBUTE(__no_sanitize_address__, NO_SANITIZE_ADDRESS)
+RUBY_FUNC_ATTRIBUTE(__no_address_safety_analysis__, NO_ADDRESS_SAFETY_ANALYSIS)
+RUBY_FUNC_ATTRIBUTE(__warn_unused_result__, WARN_UNUSED_RESULT)
+RUBY_FUNC_ATTRIBUTE(__unused__, MAYBE_UNUSED)
+RUBY_FUNC_ATTRIBUTE(__error__ mesg, ERRORFUNC(mesg,x), rb_cv_func___error__)
+RUBY_FUNC_ATTRIBUTE(__warning__ mesg, WARNINGFUNC(mesg,x), rb_cv_func___warning__)
+RUBY_FUNC_ATTRIBUTE(__weak__, WEAK, rb_cv_func_weak)
+AS_IF([test "$rb_cv_func_weak" != x], [
+ AC_DEFINE(HAVE_FUNC_WEAK)
+])
+
+AC_CACHE_CHECK([for __attribute__((__depreacted__(msg))) in C++],
+ rb_cv_CentOS6_CXX_workaround,
+ RUBY_WERROR_FLAG([
+ AC_LANG_PUSH([C++])
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [],
+ [__attribute__((__deprecated__("message"))) int conftest(...);])],
+ [rb_cv_CentOS6_CXX_workaround=yes],
+ [rb_cv_CentOS6_CXX_workaround=no])
+ AC_LANG_POP()]))
+AS_IF([test "$rb_cv_CentOS6_CXX_workaround" != no],[
+ AC_DEFINE([RUBY_CXX_DEPRECATED(msg)],
+ [__attribute__((__deprecated__(msg)))])])
+
+AC_CACHE_CHECK([for std::nullptr_t], rb_cv_CXX_nullptr, [
+ AC_LANG_PUSH([C++])
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [@%:@include <cstddef>],
+ [static std::nullptr_t const *const conftest = nullptr;])],
+ [rb_cv_CXX_nullptr=yes],
+ [rb_cv_CXX_nullptr=no])
+ AC_LANG_POP()])
+AS_IF([test "$rb_cv_CXX_nullptr" != no],[AC_DEFINE(HAVE_NULLPTR)])
+
+if_i386=${universal_binary+[defined __i386__]}
+RUBY_FUNC_ATTRIBUTE(__stdcall__, FUNC_STDCALL, rb_cv_func_stdcall, ${if_i386})
+RUBY_FUNC_ATTRIBUTE(__cdecl__, FUNC_CDECL, rb_cv_func_cdecl, ${if_i386})
+RUBY_FUNC_ATTRIBUTE(__fastcall__, FUNC_FASTCALL, rb_cv_func_fastcall, ${if_i386})
+RUBY_FUNC_ATTRIBUTE(__optimize__("O0"), FUNC_UNOPTIMIZED, rb_cv_func_unoptimized)
+RUBY_FUNC_ATTRIBUTE(__optimize__("-Os","-fomit-frame-pointer"), FUNC_MINIMIZED, rb_cv_func_minimized)
+
+AS_IF([test "$GCC" = yes], [
+ AC_CACHE_CHECK([for function alias], [rb_cv_gcc_function_alias],
+ [rb_cv_gcc_function_alias=no
+ for a in alias weak,alias; do
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[void foo(void) {}
+ void bar(void) __attribute__(($a("foo")));]], [[bar()]])],
+ [rb_cv_gcc_function_alias=$a; break])
+ done])
+ AS_IF([test "$rb_cv_gcc_function_alias" != no], [
+ AC_DEFINE(HAVE_ATTRIBUTE_FUNCTION_ALIAS)
+ AC_DEFINE_UNQUOTED([RUBY_ALIAS_FUNCTION_TYPE(type, prot, name, args)],
+ [type prot __attribute__(($rb_cv_gcc_function_alias(@%:@name)));])
+ AC_DEFINE_UNQUOTED([RUBY_ALIAS_FUNCTION_VOID(prot, name, args)],
+ [RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args)])
+ ])
+])
+
+{
+ AC_CACHE_CHECK([for __atomic builtins], [rb_cv_gcc_atomic_builtins], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned int atomic_var;]],
+ [[
+ __atomic_exchange_n(&atomic_var, 0, __ATOMIC_SEQ_CST);
+ __atomic_exchange_n(&atomic_var, 1, __ATOMIC_SEQ_CST);
+ __atomic_fetch_add(&atomic_var, 1, __ATOMIC_SEQ_CST);
+ __atomic_fetch_sub(&atomic_var, 1, __ATOMIC_SEQ_CST);
+ __atomic_or_fetch(&atomic_var, 1, __ATOMIC_SEQ_CST);
+ ]])],
+ [rb_cv_gcc_atomic_builtins=yes],
+ [rb_cv_gcc_atomic_builtins=no])])
+ AS_IF([test "$rb_cv_gcc_atomic_builtins" = yes], [
+ AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS)
+ ])
+
+ AC_CACHE_CHECK([for __sync builtins], [rb_cv_gcc_sync_builtins], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned int atomic_var;]],
+ [[
+ __sync_lock_test_and_set(&atomic_var, 0);
+ __sync_lock_test_and_set(&atomic_var, 1);
+ __sync_fetch_and_add(&atomic_var, 1);
+ __sync_fetch_and_sub(&atomic_var, 1);
+ __sync_or_and_fetch(&atomic_var, 1);
+ __sync_val_compare_and_swap(&atomic_var, 0, 1);
+ ]])],
+ [rb_cv_gcc_sync_builtins=yes],
+ [rb_cv_gcc_sync_builtins=no])])
+ AS_IF([test "$rb_cv_gcc_sync_builtins" = yes], [
+ AC_DEFINE(HAVE_GCC_SYNC_BUILTINS)
+ ])
+
+ AC_CACHE_CHECK(for __builtin_unreachable, rb_cv_func___builtin_unreachable,
+ [RUBY_WERROR_FLAG(
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[volatile int zero;]],
+ [[if (zero) __builtin_unreachable();]])],
+ [rb_cv_func___builtin_unreachable=yes],
+ [rb_cv_func___builtin_unreachable=no])
+ ])
+ ])
+ AS_IF([test "$rb_cv_func___builtin_unreachable" = yes], [
+ AC_DEFINE(HAVE___BUILTIN_UNREACHABLE)
+ ])
+
+ AC_CACHE_CHECK(for __assume, rb_cv_func___assume,
+ [RUBY_WERROR_FLAG([
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
+ [[__assume(1);]])],
+ [rb_cv_func___assume=yes],
+ [rb_cv_func___assume=no])
+ ])
+ ])
+ AS_IF([test "$rb_cv_func___assume" = yes], [
+ AC_DEFINE(HAVE___ASSUME)
+ ])
+}
+
+AC_CACHE_CHECK(for exported function attribute, rb_cv_func_exported, [
+rb_cv_func_exported=no
+RUBY_WERROR_FLAG([
+for mac in '__attribute__ ((__visibility__("default")))' '__declspec(dllexport)'; do
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@define RUBY_FUNC_EXPORTED $mac extern
+ RUBY_FUNC_EXPORTED void conftest_attribute_check(void);]], [[]])],
+ [rb_cv_func_exported="$mac"; break])
+done
+])])
+AS_IF([test "$rb_cv_func_exported" != no], [
+ AC_DEFINE_UNQUOTED(RUBY_FUNC_EXPORTED, [$rb_cv_func_exported extern])
+])
+RUBY_DECL_ATTRIBUTE([__nonnull__(n)], [RUBY_FUNC_NONNULL(n,x)], [rb_cv_func_nonnull],
+ [], [function], [
+@%:@define x int conftest_attribute_check(void *p)
+@%:@define n 1
+])
+
+RUBY_APPEND_OPTION(XCFLAGS, -DRUBY_EXPORT)
+
+AC_ARG_ENABLE(mathn,
+ AS_HELP_STRING([--enable-mathn], [enable canonicalization for mathn]),
+ [AC_MSG_ERROR([mathn support has been dropped])])
+
+AC_CACHE_CHECK(for function name string predefined identifier,
+ rb_cv_function_name_string,
+ [AS_CASE(["$target_os"],[openbsd*],[
+ rb_cv_function_name_string=__func__
+ ],[
+ rb_cv_function_name_string=no
+ RUBY_WERROR_FLAG([
+ for func in __func__ __FUNCTION__; do
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <stdio.h>]],
+ [[puts($func);]])],
+ [rb_cv_function_name_string=$func
+ break])
+ done
+ ])])]
+)
+AS_IF([test "$rb_cv_function_name_string" != no], [
+ AC_DEFINE_UNQUOTED(RUBY_FUNCTION_NAME_STRING, [$rb_cv_function_name_string])
+])
+
+AC_CACHE_CHECK(if enum over int is allowed, rb_cv_enum_over_int, [
+ rb_cv_enum_over_int=no
+ AS_IF([test "x$ac_cv_type_long_long" = xyes], [
+ type="unsigned long long" max="ULLONG_MAX"
+ ], [
+ type="unsigned long" max="ULONG_MAX"
+ ])
+ RUBY_WERROR_FLAG([
+ AC_COMPILE_IFELSE([
+ AC_LANG_BOOL_COMPILE_TRY([
+ @%:@include <limits.h>
+ enum {conftest_max = $max};
+ ], [
+ (conftest_max == $max) &&
+ (sizeof(conftest_max) == sizeof($type))
+ ]
+ )],
+ [rb_cv_enum_over_int=yes],
+ [rb_cv_enum_over_int=no]
+ )
+ ])
+])
+AS_IF([test $rb_cv_enum_over_int = yes], [
+ AC_DEFINE(ENUM_OVER_INT, 1)
+])
+
+dnl Check whether we need to define sys_nerr locally
+AC_CHECK_DECLS([sys_nerr], [], [], [$ac_includes_default
+@%:@include <errno.h>])
+
+AC_CHECK_DECLS([getenv])
+
+AS_CASE(["$target_cpu"],
+[alpha*|sh4|sh4el|sh4eb], [AS_CASE(["$target_os"::"$GCC"],
+ [*::yes], # gcc
+ [CFLAGS="-mieee $CFLAGS"],
+ [osf*], # ccc
+ [CFLAGS="-ieee $CFLAGS"],
+ )],
+[sparc*], [AC_LIBOBJ([sparc])])
+
+ac_cv_header_net_socket_h=${ac_cv_header_net_socket_h=no}
+AS_IF([test "$ac_cv_header_net_socket_h" = yes], [
+ ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=no}
+], [
+ ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=yes}
+])
+
+
+AC_TYPE_SIZE_T
+RUBY_CHECK_SIGNEDNESS(size_t, [AC_MSG_ERROR(size_t is signed)], [],
+ [@%:@include <sys/types.h>])
+RUBY_CHECK_SIZEOF(size_t, [int long void*], [], [@%:@include <sys/types.h>])
+RUBY_CHECK_SIZEOF(ptrdiff_t, size_t, [], [@%:@include <stddef.h>])
+RUBY_CHECK_SIZEOF(dev_t)
+RUBY_CHECK_PRINTF_PREFIX(size_t, z)
+RUBY_CHECK_PRINTF_PREFIX(ptrdiff_t, t)
+AC_CHECK_MEMBERS([struct stat.st_blksize])
+AC_CHECK_MEMBERS([struct stat.st_blocks])
+AC_CHECK_MEMBERS([struct stat.st_rdev])
+RUBY_CHECK_SIZEOF([struct stat.st_size], [off_t int long "long long"], [], [@%:@include <sys/stat.h>])
+AS_IF([test "$ac_cv_member_struct_stat_st_blocks" = yes], [
+ RUBY_CHECK_SIZEOF([struct stat.st_blocks], [off_t int long "long long"], [], [@%:@include <sys/stat.h>])
+])
+RUBY_CHECK_SIZEOF([struct stat.st_ino], [long "long long"], [], [@%:@include <sys/stat.h>])
+RUBY_CHECK_SIZEOF([struct stat.st_dev], [dev_t int long "long long"], [], [@%:@include <sys/stat.h>])
+AS_IF([test "$ac_cv_member_struct_stat_st_rdev" = yes], [
+ RUBY_CHECK_SIZEOF([struct stat.st_rdev], [dev_t int long "long long"], [], [@%:@include <sys/stat.h>])
+])
+AC_CHECK_MEMBERS([struct stat.st_atim])
+AC_CHECK_MEMBERS([struct stat.st_atimespec])
+AC_CHECK_MEMBERS([struct stat.st_atimensec])
+AC_CHECK_MEMBERS([struct stat.st_mtim])
+AC_CHECK_MEMBERS([struct stat.st_mtimespec])
+AC_CHECK_MEMBERS([struct stat.st_mtimensec])
+AC_CHECK_MEMBERS([struct stat.st_ctim])
+AC_CHECK_MEMBERS([struct stat.st_ctimespec])
+AC_CHECK_MEMBERS([struct stat.st_ctimensec])
+AC_CHECK_MEMBERS([struct stat.st_birthtimespec])
+AS_IF([test "x$ac_cv_member_struct_stat_st_birthtimespec" != xyes],
+ [AC_CHECK_MEMBERS([struct statx.stx_btime])])
+
+AC_CHECK_TYPES([struct timeval], [], [], [@%:@ifdef HAVE_TIME_H
+@%:@include <time.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TIME_H
+@%:@include <sys/time.h>
+@%:@endif])
+
+AS_IF([test "${ac_cv_type_struct_timeval}" = yes], [
+ RUBY_CHECK_SIZEOF([struct timeval.tv_sec], [time_t long "long long"], [],
+ [@%:@ifdef HAVE_TIME_H
+@%:@include <time.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TIME_H
+@%:@include <sys/time.h>
+@%:@endif])
+ AS_CASE(${ac_cv_sizeof_struct_timeval_tv_sec},
+ [SIZEOF_INT], [t=int],
+ [SIZEOF_LONG], [t=long],
+ [SIZEOF_LONG_LONG], [t=LONG_LONG],
+ [t=])
+ AS_IF([test "${t}" != ""], [
+ AC_DEFINE_UNQUOTED(TYPEOF_TIMEVAL_TV_SEC, [$t])
+ ])
+])
+
+AC_CHECK_TYPES([struct timespec], [], [], [@%:@ifdef HAVE_TIME_H
+@%:@include <time.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TIME_H
+@%:@include <sys/time.h>
+@%:@endif])
+
+AC_CHECK_TYPES([struct timezone], [], [], [@%:@ifdef HAVE_TIME_H
+@%:@ include <time.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TIME_H
+@%:@ include <sys/time.h>
+@%:@endif])
+
+AC_CACHE_VAL([rb_cv_large_fd_select],
+ [AC_CHECK_TYPE(fd_mask, [rb_cv_large_fd_select=yes], [rb_cv_large_fd_select=no], [AC_INCLUDES_DEFAULT([])
+@%:@ifdef HAVE_SYS_SELECT_H
+@%:@ include <sys/select.h>
+@%:@endif])])
+AS_IF([test "$rb_cv_large_fd_select" = yes], [
+ AC_DEFINE(HAVE_RB_FD_INIT, 1)
+])
+
+RUBY_DEFINT(int8_t, 1)
+RUBY_DEFINT(uint8_t, 1, unsigned)
+RUBY_DEFINT(int16_t, 2)
+RUBY_DEFINT(uint16_t, 2, unsigned)
+RUBY_DEFINT(int32_t, 4)
+RUBY_DEFINT(uint32_t, 4, unsigned)
+RUBY_DEFINT(int64_t, 8)
+RUBY_DEFINT(uint64_t, 8, unsigned)
+RUBY_DEFINT(int128_t, 16)
+RUBY_DEFINT(uint128_t, 16, unsigned)
+RUBY_DEFINT(intptr_t, void*)
+RUBY_DEFINT(uintptr_t, void*, unsigned)
+AS_IF([test "x$rb_cv_type_intptr_t" != xno], [
+ RUBY_CHECK_PRINTF_PREFIX(intptr_t, '' ll I64 l, PTR)
+])
+RUBY_DEFINT(ssize_t, size_t, [], [@%:@include <sys/types.h>]) dnl may differ from int, so not use AC_TYPE_SSIZE_T.
+AS_IF([test "x$rb_cv_type_int64_t" != xno], [
+ RUBY_CHECK_PRINTF_PREFIX(int64_t, ll I64 l, 64)
+])
+
+AC_CACHE_CHECK(for stack end address, rb_cv_stack_end_address,
+[rb_cv_stack_end_address=no
+ AC_LINK_IFELSE([AC_LANG_PROGRAM(
+ [[extern void *__libc_stack_end;]],
+ [[if (!__libc_stack_end) return 1;]])],
+ [rb_cv_stack_end_address="__libc_stack_end"])
+])
+AS_IF([test $rb_cv_stack_end_address != no], [
+ AC_DEFINE_UNQUOTED(STACK_END_ADDRESS, $rb_cv_stack_end_address)
+])
+
+dnl Checks for library functions.
+AC_TYPE_GETGROUPS
+AS_CASE(["${target_cpu}-${target_os}:${target_archs}"],
+[powerpc*-darwin*], [
+ AC_LIBSOURCES(alloca.c)
+ AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}])
+ AC_DEFINE(C_ALLOCA)
+ AC_DEFINE_UNQUOTED(alloca, alloca)
+ ],
+[universal-darwin*:*ppc*], [
+ AC_LIBSOURCES(alloca.c)
+ AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}])
+ RUBY_DEFINE_IF([defined __POWERPC__], C_ALLOCA, 1) # Darwin defines __POWERPC__ for ppc and ppc64 both
+ RUBY_DEFINE_IF([defined __POWERPC__], alloca, alloca)
+ ],
+[
+ AC_FUNC_ALLOCA
+ ])
+AS_IF([test "x$ALLOCA" = "x"], [
+ AC_CACHE_CHECK([for dynamic size alloca], rb_cv_dynamic_alloca, [
+ for chk in ok __chkstk; do
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ @%:@ifdef HAVE_ALLOCA_H
+ @%:@include <alloca.h>
+ @%:@endif
+ void $chk() {}
+ int dynamic_alloca_test;
+ int dynamic_alloca_result;]],
+ [[dynamic_alloca_result = alloca(dynamic_alloca_test) != 0;]])],
+ [rb_cv_dynamic_alloca=$chk; break])
+ done])
+ AS_IF([test "x$rb_cv_dynamic_alloca" = "x__chkstk"], [
+ AC_DEFINE_UNQUOTED(RUBY_ALLOCA_CHKSTK, _$rb_cv_dynamic_alloca)
+ AS_CASE("$target_cpu",
+ [x64|x86_64], [
+ AC_SUBST([ALLOCA], [\${LIBOBJDIR}x86_64-chkstk.${ac_objext}])
+ ],)
+ ])
+])
+AC_FUNC_MEMCMP
+
+AS_CASE(["$target_os"],[freebsd*],[
+ AC_DEFINE(BROKEN_CLOSE)
+ AC_REPLACE_FUNCS(close)
+ ])
+
+# dup and dup2 are always available except for WASI
+AS_CASE(["$target_os"],
+ [wasi*], [],
+ [
+ RUBY_REQUIRE_FUNCS(dup dup2)
+ ]
+)
+
+AC_REPLACE_FUNCS(acosh)
+AC_REPLACE_FUNCS(cbrt)
+AC_REPLACE_FUNCS(crypt)
+AC_REPLACE_FUNCS(erf)
+AC_REPLACE_FUNCS(explicit_bzero)
+AC_REPLACE_FUNCS(ffs)
+AC_REPLACE_FUNCS(flock)
+AC_REPLACE_FUNCS(hypot)
+AC_REPLACE_FUNCS(lgamma_r)
+AC_REPLACE_FUNCS(memmove)
+AC_REPLACE_FUNCS(nan)
+AC_REPLACE_FUNCS(nextafter)
+AC_REPLACE_FUNCS(setproctitle)
+AC_REPLACE_FUNCS(strchr)
+AC_REPLACE_FUNCS(strerror)
+AC_REPLACE_FUNCS(strlcat)
+AC_REPLACE_FUNCS(strlcpy)
+AC_REPLACE_FUNCS(strstr)
+AC_REPLACE_FUNCS(tgamma)
+
+AC_DEFINE(HAVE_ISFINITE) # C99; backward compatibility
+
+# for missing/setproctitle.c
+AS_CASE(["$target_os"],
+[aix* | k*bsd*-gnu | kopensolaris*-gnu | linux* | darwin*], [AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)],
+[])
+AC_CHECK_HEADERS(sys/pstat.h)
+
+
+AC_DEFINE(HAVE_SIGNBIT) # C99; backward compatibility
+
+AC_FUNC_FORK
+
+AC_CHECK_FUNCS(__syscall)
+AC_CHECK_FUNCS(_longjmp) # used for AC_ARG_WITH(setjmp-type)
+# we don't use _setjmp if _longjmp doesn't exist.
+test x$ac_cv_func__longjmp = xno && ac_cv_func__setjmp=no
+AC_CHECK_FUNCS(arc4random_buf)
+AC_CHECK_FUNCS(atan2l atan2f)
+AC_CHECK_DECLS(atomic_signal_fence, [], [], [#include <stdatomic.h>])
+AC_CHECK_FUNCS(chmod)
+AC_CHECK_FUNCS(chown)
+AC_CHECK_FUNCS(chroot)
+AC_CHECK_FUNCS(chsize)
+AC_CHECK_FUNCS(clock_gettime)
+AC_CHECK_FUNCS(copy_file_range)
+AC_CHECK_FUNCS(cosh)
+AC_CHECK_FUNCS(crypt_r)
+AC_CHECK_FUNCS(daemon)
+AC_CHECK_FUNCS(dirfd)
+AC_CHECK_FUNCS(dl_iterate_phdr)
+AC_CHECK_FUNCS(dlopen)
+AC_CHECK_FUNCS(dladdr)
+AC_CHECK_FUNCS(dup3)
+AC_CHECK_FUNCS(eaccess)
+AC_CHECK_FUNCS(endgrent)
+AC_CHECK_FUNCS(eventfd)
+AC_CHECK_FUNCS(execl)
+AC_CHECK_FUNCS(execle)
+AC_CHECK_FUNCS(execv)
+AC_CHECK_FUNCS(execve)
+AC_CHECK_FUNCS(explicit_memset)
+AC_CHECK_FUNCS(fcopyfile)
+AC_CHECK_FUNCS(fchmod)
+AC_CHECK_FUNCS(fchown)
+AC_CHECK_FUNCS(fcntl)
+AC_CHECK_FUNCS(fdatasync)
+AC_CHECK_FUNCS(fdopendir)
+AC_CHECK_FUNCS(fgetattrlist)
+AC_CHECK_FUNCS(fmod)
+AC_CHECK_FUNCS(fstatat)
+AC_CHECK_FUNCS(fsync)
+AC_CHECK_FUNCS(ftruncate)
+AC_CHECK_FUNCS(ftruncate64) # used for Win32 platform
+AC_CHECK_FUNCS(getattrlist)
+AC_CHECK_FUNCS(getcwd)
+AC_CHECK_FUNCS(getegid)
+AC_CHECK_FUNCS(getentropy)
+AC_CHECK_FUNCS(geteuid)
+AC_CHECK_FUNCS(getgid)
+AC_CHECK_FUNCS(getgidx)
+AC_CHECK_FUNCS(getgrnam)
+AC_CHECK_FUNCS(getgrnam_r)
+AC_CHECK_FUNCS(getgroups)
+AC_CHECK_FUNCS(getlogin)
+AC_CHECK_FUNCS(getlogin_r)
+AC_CHECK_FUNCS(getpgid)
+AC_CHECK_FUNCS(getpgrp)
+AC_CHECK_FUNCS(getppid)
+AC_CHECK_FUNCS(getpriority)
+AC_CHECK_FUNCS(getpwnam)
+AC_CHECK_FUNCS(getpwnam_r)
+AC_CHECK_FUNCS(getpwuid)
+AC_CHECK_FUNCS(getpwuid_r)
+AC_CHECK_FUNCS(getrandom)
+AC_CHECK_FUNCS(getresgid)
+AC_CHECK_FUNCS(getresuid)
+AC_CHECK_FUNCS(getrlimit)
+AC_CHECK_FUNCS(getsid)
+AC_CHECK_FUNCS(gettimeofday) # for making ac_cv_func_gettimeofday
+AC_CHECK_FUNCS(getuid)
+AC_CHECK_FUNCS(getuidx)
+AC_CHECK_FUNCS(gmtime_r)
+AC_CHECK_FUNCS(grantpt)
+AC_CHECK_FUNCS(initgroups)
+AC_CHECK_FUNCS(ioctl)
+AC_CHECK_FUNCS(isfinite)
+AC_CHECK_FUNCS(issetugid)
+AC_CHECK_FUNCS(kill)
+AC_CHECK_FUNCS(killpg)
+AC_CHECK_FUNCS(lchmod)
+AC_CHECK_FUNCS(lchown)
+AC_CHECK_FUNCS(link)
+AC_CHECK_FUNCS(llabs)
+AC_CHECK_FUNCS(lockf)
+AC_CHECK_FUNCS(log2)
+AC_CHECK_FUNCS(lstat)
+AC_CHECK_FUNCS(lutimes)
+AC_CHECK_FUNCS(malloc_usable_size)
+AC_CHECK_FUNCS(malloc_size)
+AC_CHECK_FUNCS(mblen)
+AC_CHECK_FUNCS(memalign)
+AC_CHECK_FUNCS(memset_s)
+AC_CHECK_FUNCS(writev)
+AC_CHECK_FUNCS(memrchr)
+AC_CHECK_FUNCS(memmem)
+AC_CHECK_FUNCS(mkfifo)
+AC_CHECK_FUNCS(mknod)
+AC_CHECK_FUNCS(mktime)
+AC_CHECK_FUNCS(mmap)
+AC_CHECK_FUNCS(mremap)
+AC_CHECK_FUNCS(openat)
+AC_CHECK_FUNCS(pclose)
+AC_CHECK_FUNCS(pipe)
+AC_CHECK_FUNCS(pipe2)
+AC_CHECK_FUNCS(poll)
+AC_CHECK_FUNCS(popen)
+AC_CHECK_FUNCS(posix_fadvise)
+AC_CHECK_FUNCS(posix_madvise)
+AC_CHECK_FUNCS(posix_memalign)
+AC_CHECK_FUNCS(ppoll)
+AC_CHECK_FUNCS(pread)
+AC_CHECK_FUNCS(pwrite)
+AC_CHECK_FUNCS(qsort_r)
+AC_CHECK_FUNCS(qsort_s)
+AC_CHECK_FUNCS(readlink)
+AC_CHECK_FUNCS(realpath)
+AC_CHECK_FUNCS(round)
+AC_CHECK_FUNCS(sched_getaffinity)
+AC_CHECK_FUNCS(seekdir)
+AC_CHECK_FUNCS(select_large_fdset)
+AC_CHECK_FUNCS(sendfile)
+AC_CHECK_FUNCS(setegid)
+AC_CHECK_FUNCS(setenv)
+AC_CHECK_FUNCS(seteuid)
+AC_CHECK_FUNCS(setgid)
+AC_CHECK_FUNCS(setgroups)
+AC_CHECK_FUNCS(setpgid)
+AC_CHECK_FUNCS(setpgrp)
+AC_CHECK_FUNCS(setregid)
+AC_CHECK_FUNCS(setresgid)
+AC_CHECK_FUNCS(setresuid)
+AC_CHECK_FUNCS(setreuid)
+AC_CHECK_FUNCS(setrgid)
+AC_CHECK_FUNCS(setrlimit)
+AC_CHECK_FUNCS(setruid)
+AC_CHECK_FUNCS(setsid)
+AC_CHECK_FUNCS(setuid)
+AC_CHECK_FUNCS(shutdown)
+AC_CHECK_FUNCS(sigaction)
+AC_CHECK_FUNCS(sigaltstack)
+AC_CHECK_FUNCS(sigprocmask)
+AC_CHECK_FUNCS(sinh)
+AC_CHECK_FUNCS(spawnv)
+AC_CHECK_FUNCS(symlink)
+AC_CHECK_FUNCS(syscall)
+AC_CHECK_FUNCS(sysconf)
+AC_CHECK_FUNCS(system)
+AC_CHECK_FUNCS(tanh)
+AC_CHECK_FUNCS(telldir)
+AC_CHECK_FUNCS(timegm)
+AC_CHECK_FUNCS(times)
+AC_CHECK_FUNCS(truncate)
+AC_CHECK_FUNCS(truncate64) # used for Win32
+AC_CHECK_FUNCS(tzset)
+AC_CHECK_FUNCS(umask)
+AC_CHECK_FUNCS(unsetenv)
+AC_CHECK_FUNCS(utimensat)
+AC_CHECK_FUNCS(utimes)
+AC_CHECK_FUNCS(wait4)
+AC_CHECK_FUNCS(waitpid)
+AC_CHECK_FUNCS(__cospi)
+AC_CHECK_FUNCS(__sinpi)
+
+AS_IF([test "x$ac_cv_member_struct_statx_stx_btime" = xyes],
+ [AC_CHECK_FUNCS(statx)])
+
+AS_CASE(["$ac_cv_func_memset_s:$ac_cv_func_qsort_s"], [*yes*],
+ [RUBY_DEFINE_IF([!defined __STDC_WANT_LIB_EXT1__], [__STDC_WANT_LIB_EXT1__], 1)])
+
+AS_IF([test "$ac_cv_func_getcwd" = yes], [
+ AC_CACHE_CHECK(if getcwd allocates buffer if NULL is given, [rb_cv_getcwd_malloc],
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+@%:@include <stddef.h>
+@%:@include <stdio.h>
+@%:@ifdef HAVE_UNISTD_H
+@%:@include <unistd.h>
+@%:@endif
+@%:@ifndef EXIT_SUCCESS
+@%:@define EXIT_SUCCESS 0
+@%:@endif
+@%:@ifndef EXIT_FAILURE
+@%:@define EXIT_FAILURE 1
+@%:@endif
+
+int
+main(int argc, char **argv)
+{
+ if (!getcwd(NULL, 0)) return EXIT_FAILURE;
+ return EXIT_SUCCESS;
+}
+]])],
+ rb_cv_getcwd_malloc=yes,
+ rb_cv_getcwd_malloc=no,
+ AS_CASE($target_os,
+ [linux*|darwin*|*bsd|cygwin*|msys*|mingw*|mswin*],
+ [rb_cv_getcwd_malloc=yes],
+ [rb_cv_getcwd_malloc=no]))])
+ AS_IF([test "$rb_cv_getcwd_malloc" = no], [AC_DEFINE(NO_GETCWD_MALLOC, 1)])
+])
+
+AS_IF([test "$ac_cv_func_crypt_r" = yes],
+ [AC_CHECK_HEADERS(crypt.h)])
+AS_IF([test "$ac_cv_func_crypt_r:$ac_cv_header_crypt_h" = yes:yes],
+ [AC_CHECK_MEMBERS([struct crypt_data.initialized], [], [],
+ [AC_INCLUDES_DEFAULT([@%:@include <crypt.h>])])])
+
+RUBY_CHECK_BUILTIN_FUNC(__builtin_alloca_with_align, [__builtin_alloca_with_align(1, 4096)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_assume_aligned, [__builtin_assume_aligned((void*)32, 32)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap16, [__builtin_bswap16(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap32, [__builtin_bswap32(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap64, [__builtin_bswap64(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_popcount, [__builtin_popcount(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_popcountll, [__builtin_popcountll(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_clz, [__builtin_clz(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_clzl, [__builtin_clzl(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_clzll, [__builtin_clzll(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_ctz, [__builtin_ctz(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_ctzll, [__builtin_ctzll(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_add_overflow, [int x;__builtin_add_overflow(0,0,&x)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_sub_overflow, [int x;__builtin_sub_overflow(0,0,&x)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_mul_overflow, [int x;__builtin_mul_overflow(0,0,&x)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_mul_overflow_p, [__builtin_mul_overflow_p(0,0,(int)0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_constant_p, [__builtin_constant_p(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_choose_expr, [
+ [int x[__extension__(__builtin_choose_expr(1, 1, -1))]];
+ [int y[__extension__(__builtin_choose_expr(0, -1, 1))]];
+ ])
+AS_IF([test x$rb_cv_builtin___builtin_choose_expr = xyes], [
+ RUBY_CHECK_BUILTIN_FUNC(__builtin_choose_expr_constant_p, [
+ [int x[__extension__(__builtin_choose_expr(__builtin_constant_p(1), 1, -1))]];
+ [int y[__extension__(__builtin_choose_expr(__builtin_constant_p(foo), -1, 1))]];
+ ])
+])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_types_compatible_p, [__builtin_types_compatible_p(int, int)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_trap, [__builtin_trap()])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_expect, [__builtin_expect(0, 0)])
+
+AS_IF([test "$ac_cv_func_qsort_r" != no], [
+ AC_CACHE_CHECK(whether qsort_r is GNU version, rb_cv_gnu_qsort_r,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+@%:@include <stdlib.h>
+void (qsort_r)(void *base, size_t nmemb, size_t size,
+ int (*compar)(const void *, const void *, void *),
+ void *arg);
+]], [[ ]])],
+ [rb_cv_gnu_qsort_r=yes],
+ [rb_cv_gnu_qsort_r=no])
+ ])
+ AC_CACHE_CHECK(whether qsort_r is BSD version, rb_cv_bsd_qsort_r,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+@%:@include <stdlib.h>
+void (qsort_r)(void *base, size_t nmemb, size_t size,
+ void *arg, int (*compar)(void *, const void *, const void *));
+]], [[ ]])],
+ [rb_cv_bsd_qsort_r=yes],
+ [rb_cv_bsd_qsort_r=no])
+ ])
+ AS_CASE("$rb_cv_gnu_qsort_r:$rb_cv_bsd_qsort_r",
+ [yes:no], [
+ AC_DEFINE(HAVE_GNU_QSORT_R, 1)
+ ],
+ [no:yes], [
+ AC_DEFINE(HAVE_BSD_QSORT_R, 1)
+ ])
+])
+
+AC_CACHE_CHECK(whether atan2 handles Inf as C99, rb_cv_atan2_inf_c99, [
+ AS_IF([test $ac_cv_func_atan2f:$ac_cv_func_atan2l = yes:yes], [
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+@%:@include <math.h>
+@%:@ifdef HAVE_UNISTD_H
+@%:@include <unistd.h>
+@%:@endif
+@%:@ifndef EXIT_SUCCESS
+@%:@define EXIT_SUCCESS 0
+@%:@endif
+@%:@ifndef EXIT_FAILURE
+@%:@define EXIT_FAILURE 1
+@%:@endif
+
+int
+main(int argc, char **argv)
+{
+ if (fabs(atan2(INFINITY, INFINITY) - M_PI_4) <= 0.01) return EXIT_SUCCESS;
+ return EXIT_FAILURE;
+}
+]])],
+ [rb_cv_atan2_inf_c99=yes],
+ [rb_cv_atan2_inf_c99=no],
+ [AS_CASE($target_os, [mingw*|mswin*], [rb_cv_atan2_inf_c99=no], [rb_cv_atan2_inf_c99=yes])]
+ )
+ ], [rb_cv_atan2_inf_c99=no])
+])
+AS_IF([test "x$rb_cv_atan2_inf_c99" = xyes], [AC_DEFINE(ATAN2_INF_C99)])
+
+# Some platform need -lrt for clock_gettime, but the other don't.
+AS_IF([test x"$ac_cv_func_clock_gettime" != xyes], [
+ # glibc 2.17 moves clock_* functions from librt to the main C library.
+ # https://sourceware.org/legacy-ml/libc-announce/2012/msg00001.html
+ AC_CHECK_LIB(rt, clock_gettime)
+ AS_IF([test x"$ac_cv_lib_rt_clock_gettime" = xyes], [
+ AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
+ ])
+])
+AC_CHECK_FUNCS(clock_getres) # clock_getres should be tested after clock_gettime test including librt test.
+AC_CHECK_LIB([rt], [timer_create])
+AC_CHECK_LIB([rt], [timer_settime])
+AS_IF([test x"$ac_cv_lib_rt_timer_create" = xyes], [
+ AC_DEFINE(HAVE_TIMER_CREATE, 1)
+])
+AS_IF([test x"$ac_cv_lib_rt_timer_settime" = xyes], [
+ AC_DEFINE(HAVE_TIMER_SETTIME, 1)
+])
+
+AC_CACHE_CHECK(for unsetenv returns a value, rb_cv_unsetenv_return_value,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <stdlib.h>
+]], [[int v = unsetenv("foo");]])],
+ rb_cv_unsetenv_return_value=yes,
+ rb_cv_unsetenv_return_value=no)])
+AS_IF([test "$rb_cv_unsetenv_return_value" = no], [
+ AC_DEFINE(VOID_UNSETENV)
+])
+
+# End of setjmp check.
+
+AC_ARG_ENABLE(setreuid,
+ AS_HELP_STRING([--enable-setreuid], [use setreuid()/setregid() according to need even if obsolete]),
+ [use_setreuid=$enableval])
+AS_IF([test "$use_setreuid" = yes], [
+ AC_DEFINE(USE_SETREUID)
+ AC_DEFINE(USE_SETREGID)
+])
+AC_STRUCT_TIMEZONE
+AC_CACHE_CHECK(for struct tm.tm_gmtoff, rb_cv_member_struct_tm_tm_gmtoff,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+@%:@define _BSD_SOURCE
+@%:@define _DEFAULT_SOURCE
+@%:@include <time.h>
+ ]],
+ [[struct tm t; t.tm_gmtoff = 3600;]])],
+ [rb_cv_member_struct_tm_tm_gmtoff=yes],
+ [rb_cv_member_struct_tm_tm_gmtoff=no])])
+AS_IF([test "$rb_cv_member_struct_tm_tm_gmtoff" = yes], [
+ AC_DEFINE(HAVE_STRUCT_TM_TM_GMTOFF)
+])
+AC_CACHE_CHECK(for external int daylight, rb_cv_have_daylight,
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>
+ int i;]],
+ [[i = daylight;]])],
+ rb_cv_have_daylight=yes,
+ rb_cv_have_daylight=no)])
+AS_IF([test "$rb_cv_have_daylight" = yes], [
+ AC_DEFINE(HAVE_DAYLIGHT)
+])
+
+AC_CACHE_CHECK(for negative time_t for gmtime(3), rb_cv_negative_time_t,
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <stdlib.h>
+#include <time.h>
+
+void
+check(tm, y, m, d, h, s)
+ struct tm *tm;
+ int y, m, d, h, s;
+{
+ if (!tm ||
+ tm->tm_year != y ||
+ tm->tm_mon != m-1 ||
+ tm->tm_mday != d ||
+ tm->tm_hour != h ||
+ tm->tm_sec != s) {
+ exit(1);
+ }
+}
+
+int
+main()
+{
+ time_t t = -1;
+ struct tm *tm;
+
+ check(gmtime(&t), 69, 12, 31, 23, 59);
+ t = ~(time_t)0 << 31;
+ check(gmtime(&t), 1, 12, 13, 20, 52);
+ return 0;
+}
+]])],
+ rb_cv_negative_time_t=yes,
+ rb_cv_negative_time_t=no,
+ rb_cv_negative_time_t=yes)])
+AS_IF([test "$rb_cv_negative_time_t" = yes], [
+ AC_DEFINE(NEGATIVE_TIME_T)
+])
+
+# [ruby-dev:40910] overflow of time on FreeBSD
+# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=145341
+AC_CACHE_CHECK(for localtime(3) overflow correctly, rb_cv_localtime_overflow,
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <stdlib.h>
+#include <time.h>
+
+void
+check(time_t t1)
+{
+ struct tm *tm;
+ time_t t2;
+ tm = localtime(&t1);
+ if (!tm)
+ return; /* overflow detected. ok. */
+ t2 = mktime(tm);
+ if (t1 == t2)
+ return; /* round-trip. ok. */
+ exit(1);
+}
+
+int
+main()
+{
+ time_t t;
+ if (~(time_t)0 <= 0) {
+ t = (((time_t)1) << (sizeof(time_t) * 8 - 2));
+ t |= t - 1;
+ }
+ else {
+ t = ~(time_t)0;
+ }
+ check(t);
+ return 0;
+}
+]])],
+ rb_cv_localtime_overflow=yes,
+ rb_cv_localtime_overflow=no,
+ rb_cv_localtime_overflow=no)])
+AS_IF([test "$rb_cv_localtime_overflow" = no], [
+ AC_DEFINE(LOCALTIME_OVERFLOW_PROBLEM)
+])
+
+AS_IF([test "$ac_cv_func_sigprocmask" = yes && test "$ac_cv_func_sigaction" = yes], [
+ AC_DEFINE(POSIX_SIGNAL)
+], [
+ AC_CHECK_FUNCS(sigsetmask)
+ AC_CACHE_CHECK(for BSD signal semantics, rb_cv_bsd_signal,
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <signal.h>
+
+void
+sig_handler(dummy)
+ int dummy;
+{
+}
+
+int
+main()
+{
+ signal(SIGINT, sig_handler);
+ kill(getpid(), SIGINT);
+ kill(getpid(), SIGINT);
+ return 0;
+}
+]])],
+ rb_cv_bsd_signal=yes,
+ rb_cv_bsd_signal=no,
+ rb_cv_bsd_signal=$ac_cv_func_sigsetmask)])
+ AS_IF([test "$rb_cv_bsd_signal" = yes], [
+ AC_DEFINE(BSD_SIGNAL)
+ ])
+])
+
+AC_CHECK_TYPES([sig_t],[],[],[@%:@include <signal.h>])
+
+AS_IF([test "$ac_cv_func_getpgid" = no], [
+ # AC_FUNC_GETPGRP fails when cross-compiling with old autoconf.
+ # autoconf is changed between 2.52d and 2.52f?
+ # https://lists.gnu.org/archive/html/bug-gnu-utils/2001-09/msg00181.html
+ # "autoconf cleanup for AC_FUNC_GETPGRP and GETPGRP_VOID"
+AC_FUNC_GETPGRP
+])
+AS_IF([test "$ac_cv_func_setpgid:$ac_cv_func_setpgrp" = no:yes], [
+ # AC_FUNC_SETPGRP fails when cross-compiling. (until autoconf 2.69?)
+ # https://lists.gnu.org/archive/html/bug-autoconf/2013-02/msg00002.html
+ # "AC_FUNC_SETPGRP fails to work properly when cross-compiling"
+AC_FUNC_SETPGRP
+])
+
+AS_IF([test x"$ac_cv_func_dirfd" = xno], [
+ AS_CASE(["$target_os"],[solaris*],
+ [AC_CHECK_MEMBERS([DIR.d_fd, DIR.dd_fd],,,[
+#include <sys/types.h>
+#include <dirent.h>
+])])
+])
+
+AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign,
+ [AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([], [(-1==(-1>>1))])],
+ rb_cv_rshift_sign=yes,
+ rb_cv_rshift_sign=no)])
+AS_IF([test "$rb_cv_rshift_sign" = yes], [
+ AC_DEFINE(RSHIFT(x,y), ((x)>>(int)(y)))
+], [
+ AC_DEFINE(RSHIFT(x,y), (((x)<0) ? ~((~(x))>>(int)(y)) : (x)>>(int)(y)))
+])
+
+AS_IF([test "$ac_cv_func_copy_file_range" = no], [
+ AC_CACHE_CHECK([for copy_file_range],
+ rb_cv_use_copy_file_range,
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#ifndef O_TMPFILE
+ #define O_TMPFILE __O_TMPFILE
+#endif
+
+int
+main()
+{
+#ifdef __NR_copy_file_range
+ int ret, fd_in, fd_out;
+ fd_in = open("/tmp", O_TMPFILE|O_RDWR, S_IRUSR);
+ fd_out = open("/tmp", O_TMPFILE|O_WRONLY, S_IWUSR);
+ ret = syscall(__NR_copy_file_range, fd_in, NULL, fd_out, NULL, 0, 0);
+ close(fd_in);
+ close(fd_out);
+ if (ret == -1) { return 1; }
+ return 0;
+#else
+ return 1;
+#endif
+}
+ ]])],
+ [rb_cv_use_copy_file_range=yes],
+ [rb_cv_use_copy_file_range=no],
+ [rb_cv_use_copy_file_range=no])])
+])
+AS_CASE(["$ac_cv_func_copy_file_range:$rb_cv_use_copy_file_range"], [*yes*], [
+ AC_DEFINE(USE_COPY_FILE_RANGE)
+])
+
+AS_CASE(["$ac_cv_func_gettimeofday:$ac_cv_func_clock_gettime"],
+[*yes*], [],
+[
+ AC_MSG_ERROR(clock_gettime() or gettimeofday() must exist)
+])
+
+AS_IF([test "$ac_cv_func_sysconf" = yes], [
+ RUBY_CHECK_SYSCONF(CLK_TCK)
+])
+
+AS_IF([test "${universal_binary-no}" = yes ], [
+ archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'`
+ save_CFLAGS="$CFLAGS" new_cflags=`echo "$CFLAGS" | sed "s|$archflagpat"'||'`
+ save_LDFLAGS="$LDFLAGS" new_ldflags=`echo "$LDFLAGS" | sed "s|$archflagpat"'||'`
+ stack_dir=
+ for archs in ${universal_archnames}; do
+ archs=`echo $archs | sed 's/=.*//'`
+ CFLAGS="$new_cflags -arch $archs"
+ LDFLAGS="$new_ldflags -arch $archs"
+ RUBY_STACK_GROW_DIRECTION($archs, dir)
+ AS_IF([test x$stack_dir = x], [
+ stack_dir=$dir
+ ], [test x$stack_dir != x$dir], [
+ stack_dir=no
+ ])
+ done
+ CFLAGS="$save_CFLAGS" LDFLAGS="$save_LDFLAGS"
+ AS_IF([test x$stack_dir = xno], [
+ for archs in ${universal_archnames}; do
+ archs=`echo $archs | sed 's/=.*//'`
+ eval dir=\$[rb_cv_stack_grow_dir_]AS_TR_SH([$archs])
+ RUBY_DEFINE_IF([defined __${archs}__], STACK_GROW_DIRECTION, $dir)
+ done
+ ], [
+ AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $stack_dir)
+ ])
+], [
+ RUBY_STACK_GROW_DIRECTION($target_cpu, dir)
+ AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $dir)
+])
+
+AC_ARG_WITH(coroutine,
+ AS_HELP_STRING([--with-coroutine=IMPLEMENTATION], [specify the coroutine implementation to use]),
+ [coroutine_type=$withval], [coroutine_type=])
+AS_CASE([$coroutine_type], [yes|''], [
+ coroutine_type=
+ AS_CASE(["$target_cpu-$target_os"],
+ [universal-darwin*], [
+ coroutine_type=universal
+ ],
+ [x*64-darwin*], [
+ coroutine_type=amd64
+ ],
+ [arm64-darwin*], [
+ coroutine_type=arm64
+ ],
+ # Correct target name is powerpc*-, but Ruby seems to prefer ppc*-.
+ # Notice that Darwin PPC ABI differs from AIX and ELF.
+ # Adding PPC targets for AIX, *BSD and *Linux will require separate implementations.
+ [powerpc-darwin*|ppc-darwin*], [
+ coroutine_type=ppc
+ ],
+ [powerpc64-darwin*|ppc64-darwin*], [
+ coroutine_type=ppc64
+ ],
+ [x*64-linux*], [
+ AS_CASE(["$ac_cv_sizeof_voidp"],
+ [8], [ coroutine_type=amd64 ],
+ [4], [ coroutine_type=x86 ],
+ dnl unknown pointer size, bail out as no Context.h soon.
+ )
+ ],
+ [*86-linux*], [
+ coroutine_type=x86
+ ],
+ [x64-mingw*], [
+ coroutine_type=win64
+ ],
+ [*86-mingw*], [
+ coroutine_type=win32
+ ],
+ [arm*-linux*], [
+ coroutine_type=arm32
+ ],
+ [aarch64-linux*], [
+ coroutine_type=arm64
+ ],
+ [powerpc64le-linux*], [
+ coroutine_type=ppc64le
+ ],
+ [riscv64-linux*], [
+ coroutine_type=riscv64
+ ],
+ [x86_64-freebsd*], [
+ coroutine_type=amd64
+ ],
+ [i386-freebsd*], [
+ coroutine_type=x86
+ ],
+ [aarch64-freebsd*], [
+ coroutine_type=arm64
+ ],
+ [x86_64-netbsd*], [
+ coroutine_type=amd64
+ ],
+ [i386-netbsd*], [
+ coroutine_type=x86
+ ],
+ [aarch64-netbsd*], [
+ coroutine_type=arm64
+ ],
+ [x86_64-openbsd*], [
+ coroutine_type=amd64
+ ],
+ [i386-openbsd*], [
+ coroutine_type=x86
+ ],
+ [*-openbsd*], [
+ coroutine_type=pthread
+ ],
+ [x86_64-dragonfly*], [
+ coroutine_type=amd64
+ ],
+ [*-haiku*], [
+ coroutine_type=pthread
+ ],
+ [*-emscripten*], [
+ coroutine_type=emscripten
+ ],
+ [*-wasi*], [
+ coroutine_type=asyncify
+ ],
+ [
+ AC_CHECK_FUNCS([getcontext swapcontext makecontext],
+ [coroutine_type=ucontext],
+ [coroutine_type=pthread; break]
+ )
+ ]
+ )
+ AC_MSG_CHECKING(native coroutine implementation for ${target_cpu}-${target_os})
+ AC_MSG_RESULT(${coroutine_type})
+])
+COROUTINE_H=coroutine/$coroutine_type/Context.h
+AS_IF([test ! -f "$srcdir/$COROUTINE_H"],
+ [AC_MSG_ERROR('$coroutine_type' is not supported as coroutine)])
+COROUTINE_SRC=coroutine/$coroutine_type/Context.c
+AS_IF([test ! -f "$srcdir/$COROUTINE_SRC"],
+ [COROUTINE_SRC=coroutine/$coroutine_type/Context.'$(ASMEXT)'])
+AC_DEFINE_UNQUOTED(COROUTINE_H, ["$COROUTINE_H"])
+AC_SUBST(X_COROUTINE_H, [$COROUTINE_H])
+AC_SUBST(X_COROUTINE_SRC, [$COROUTINE_SRC])
+
+AS_IF([test "$THREAD_MODEL" = pthread], [
+ AC_CACHE_CHECK([whether pthread_t is scalar type], [rb_cv_scalar_pthread_t], [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ @%:@include <pthread.h>
+ ]], [[
+ pthread_t thread_id;
+ thread_id = 0;
+ if (!thread_id) return 0;
+ ]])],[rb_cv_scalar_pthread_t=yes],[rb_cv_scalar_pthread_t=no])
+ ])
+ AS_IF([test x"$rb_cv_scalar_pthread_t" = xyes], [
+ : # RUBY_CHECK_SIZEOF(pthread_t, [void* int long], [], [@%:@include <pthread.h>])
+ ], [
+ AC_DEFINE(NON_SCALAR_THREAD_ID)
+ ])
+ AC_CHECK_FUNCS(sched_yield pthread_attr_setinheritsched \
+ pthread_attr_get_np pthread_attr_getstack pthread_attr_getguardsize \
+ pthread_get_stackaddr_np pthread_get_stacksize_np \
+ thr_stksegment pthread_stackseg_np pthread_getthrds_np \
+ pthread_condattr_setclock \
+ pthread_setname_np pthread_set_name_np)
+ AS_CASE(["$target_os"],[emscripten*],[ac_cv_func_pthread_sigmask=no],[AC_CHECK_FUNCS(pthread_sigmask)])
+ AS_CASE(["$target_os"],[aix*],[ac_cv_func_pthread_getattr_np=no],[AC_CHECK_FUNCS(pthread_getattr_np)])
+ set_current_thread_name=
+ AS_IF([test "$ac_cv_func_pthread_setname_np" = yes], [
+ AC_CACHE_CHECK([arguments of pthread_setname_np], [rb_cv_func_pthread_setname_np_arguments],
+ [rb_cv_func_pthread_setname_np_arguments=
+ # Linux,AIX, (pthread_self(), name)
+ # NetBSD (pthread_self(), \"%s\", name)
+ # Darwin (name)
+ for mac in \
+ "(pthread_self(), name)" \
+ "(pthread_self(), \"%s\", name)" \
+ "(name)" \
+ ; do
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ @%:@include <pthread.h>
+ @%:@ifdef HAVE_PTHREAD_NP_H
+ @%:@include <pthread_np.h>
+ @%:@endif
+ @%:@define SET_THREAD_NAME(name) pthread_setname_np${mac}
+ ]],
+ [[if (SET_THREAD_NAME("conftest")) return 1;]])],
+ [rb_cv_func_pthread_setname_np_arguments="${mac}"
+ break])
+ done
+ ]
+ )
+ AS_IF([test -n "${rb_cv_func_pthread_setname_np_arguments}"], [
+ set_current_thread_name="pthread_setname_np${rb_cv_func_pthread_setname_np_arguments}"
+ ])
+ ], [test "$ac_cv_func_pthread_set_name_np" = yes], [
+ set_current_thread_name="pthread_set_name_np(pthread_self(), name)"
+ ])
+ AS_IF([test -n "$set_current_thread_name"], [
+ AC_DEFINE_UNQUOTED(SET_CURRENT_THREAD_NAME(name), $set_current_thread_name)
+ AS_CASE([$set_current_thread_name],
+ [*'pthread_self()'*], [
+ set_another_thread_name=`echo "$set_current_thread_name" | sed 's/pthread_self()/thid/'`
+ AC_DEFINE_UNQUOTED(SET_ANOTHER_THREAD_NAME(thid,name), $set_another_thread_name)
+ ])
+ ])
+])
+
+AS_IF([test x"$ac_cv_header_ucontext_h" = xno], [
+ AC_CACHE_CHECK([if signal.h defines ucontext_t], [rb_cv_ucontext_in_signal_h],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <signal.h>]],
+ [[size_t size = sizeof(ucontext_t);]])],
+ [rb_cv_ucontext_in_signal_h=yes], [rb_cv_ucontext_in_signal_h=no])])
+ AS_IF([test x"$rb_cv_ucontext_in_signal_h" = xyes], [
+ AC_DEFINE_UNQUOTED(UCONTEXT_IN_SIGNAL_H, 1)
+ ])
+])
+AS_IF([test x"$ac_cv_header_ucontext_h" = xyes -o x"$rb_cv_ucontext_in_signal_h" = xyes], [
+ AC_CACHE_CHECK([if mcontext_t is a pointer], [rb_cv_mcontext_t_ptr],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ @%:@include <signal.h>
+ @%:@ifdef HAVE_UCONTEXT_H
+ @%:@include <ucontext.h>
+ @%:@endif
+ mcontext_t test(mcontext_t mc) {return mc+1;}
+ ]],
+ [[test(0);]])],
+ [rb_cv_mcontext_t_ptr=yes], [rb_cv_mcontext_t_ptr=no])])
+ AS_IF([test x"$rb_cv_mcontext_t_ptr" = xyes], [
+ AC_DEFINE_UNQUOTED(DEFINE_MCONTEXT_PTR(mc, uc), mcontext_t mc = (uc)->uc_mcontext)
+ ], [
+ AC_DEFINE_UNQUOTED(DEFINE_MCONTEXT_PTR(mc, uc), mcontext_t *mc = &(uc)->uc_mcontext)
+ ])
+ AS_IF([test x"$THREAD_MODEL" = xpthread], [
+ AC_CHECK_FUNCS(getcontext setcontext)
+ ])
+])
+
+AS_IF([test "$ac_cv_func_fork_works" = "yes" -a x"$THREAD_MODEL" = xpthread], [
+ AC_CACHE_CHECK([if fork works with pthread], rb_cv_fork_with_pthread,
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <stdlib.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <signal.h>
+#ifndef EXIT_SUCCESS
+#define EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+#define EXIT_FAILURE 1
+#endif
+
+void *
+thread_func(void *dmy)
+{
+ return dmy;
+}
+
+int
+use_threads(void)
+{
+ pthread_t tid;
+ if (pthread_create(&tid, 0, thread_func, 0) != 0) {
+ return -1;
+ }
+ if (pthread_join(tid, 0) != 0) {
+ return -1;
+ }
+ return 0;
+}
+
+int
+main(int argc, char *argv[])
+{
+ pid_t pid;
+ if (use_threads()) return EXIT_FAILURE;
+ pid = fork();
+
+ if (pid) {
+ int loc;
+ sleep(1);
+ if (waitpid(pid, &loc, WNOHANG) == 0) {
+ kill(pid, SIGKILL);
+ return EXIT_FAILURE;
+ }
+ if (!WIFEXITED(loc) || WEXITSTATUS(loc) != EXIT_SUCCESS)
+ return EXIT_FAILURE;
+ }
+ else {
+ if (use_threads()) return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}]])],
+ rb_cv_fork_with_pthread=yes,
+ rb_cv_fork_with_pthread=no,
+ rb_cv_fork_with_pthread=yes)])
+ test x$rb_cv_fork_with_pthread = xyes || AC_DEFINE(CANNOT_FORK_WITH_PTHREAD)
+])
+
+AC_CHECK_HEADERS([sys/user.h])
+AS_IF([test "x$ac_cv_func_mmap" = xyes], [
+ AC_CACHE_CHECK([whether PAGE_SIZE is compile-time const], rb_cv_const_page_size,
+ [malloc_headers=`sed -n '/MALLOC_HEADERS_BEGIN/,/MALLOC_HEADERS_END/p' ${srcdir}/gc.c`
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$malloc_headers
+ typedef char conftest_page[PAGE_SIZE];
+ ]], [[]])],
+ [rb_cv_const_page_size=yes],
+ [rb_cv_const_page_size=no])])
+])
+AS_IF([test "x$rb_cv_const_page_size" = xyes],
+ [AC_DEFINE(HAVE_CONST_PAGE_SIZE, 1)],
+ [AC_DEFINE(HAVE_CONST_PAGE_SIZE, 0)]
+)
+
+AS_IF([test "x$ac_cv_func_ioctl" = xyes], [
+ AC_CACHE_CHECK([ioctl request type], rb_cv_ioctl_request_type,
+ [rb_cv_ioctl_request_type=no
+ dnl corresponding NUM2IOCTLREQ needs to be defined
+ for type in "unsigned long:ULONG_MAX" int:INT_MAX; do
+ max=`echo $type | sed 's/.*://'`
+ type=`echo $type | sed 's/:.*//'`
+ RUBY_WERROR_FLAG([
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ @%:@include <limits.h>
+ @%:@include <sys/types.h>
+ @%:@if defined(HAVE_SYS_IOCTL_H) && !defined(_WIN32)
+ @%:@include <sys/ioctl.h>
+ @%:@endif
+ ]], [[
+ $type req = $max;
+ if (ioctl(0, req)) {/* do nothing*/};
+ ]])],
+ [rb_cv_ioctl_request_type="$type"])
+ ])
+ test "x$rb_cv_ioctl_request_type" = xno || break
+ done])
+ AS_CASE(["$rb_cv_ioctl_request_type"], [no|int], [],
+ ["unsigned long"], [
+ AC_DEFINE_UNQUOTED(IOCTL_REQ_TYPE, [$rb_cv_ioctl_request_type])
+ AC_DEFINE_UNQUOTED(NUM2IOCTLREQ(num), [NUM2ULONG(num)])
+ ])
+])
+
+}
+
+: "runtime section" && {
+dnl wheather use dln_a_out or not
+AC_ARG_WITH(dln-a-out,
+ AS_HELP_STRING([--with-dln-a-out], [dln_a_out is deprecated]),
+ [
+ AS_CASE([$withval],
+ [yes], [
+ AC_MSG_ERROR(dln_a_out no longer supported)
+ ])
+])
+
+AS_IF([test "$rb_cv_binary_elf" = yes], [
+ AC_DEFINE(USE_ELF)
+ AC_CHECK_HEADERS([elf.h elf_abi.h])
+ AS_IF([test $ac_cv_header_elf_h = yes -o $ac_cv_header_elf_abi_h = yes], [
+ AC_LIBOBJ([addr2line])
+ AC_CHECK_LIB([z], [uncompress])
+ ])
+])
+
+AC_CHECK_HEADERS([mach-o/loader.h])
+AS_IF([test "$ac_cv_header_mach_o_loader_h" = yes], [
+ AC_LIBOBJ([addr2line])
+])
+
+AS_CASE(["$target_os"],
+[linux* | gnu* | k*bsd*-gnu | bsdi* | kopensolaris*-gnu], [
+ AS_IF([test "$rb_cv_binary_elf" = no], [
+ AC_MSG_ERROR(Not ELF)
+ ], [
+ LDFLAGS="$LDFLAGS -rdynamic"
+ ])])
+LIBEXT=a
+
+AC_ARG_WITH(mjit-tabs,
+ AS_HELP_STRING([--without-mjit-tabs], [expand tabs in mjit header]),
+ [AS_IF([test $withval = no], [MJIT_TABS=false])])
+AC_SUBST(MJIT_TABS)dnl
+AC_SUBST(DLDFLAGS)dnl
+AC_SUBST(ARCH_FLAG)dnl
+AC_SUBST(MJIT_HEADER_FLAGS)dnl
+AC_SUBST(MJIT_HEADER_INSTALL_DIR)dnl
+AC_SUBST(MJIT_CC)dnl
+AS_CASE(["$GCC:$target_os"],
+ [yes:aix*], [mjit_std_cflag="-std=gnu99"],
+ [mjit_std_cflag=])
+AC_SUBST(MJIT_CFLAGS, [${MJIT_CFLAGS-"-w ${mjit_std_cflag} ${orig_cflags}"}])dnl
+AC_SUBST(MJIT_OPTFLAGS, [${MJIT_OPTFLAGS-'$(optflags)'}])dnl
+AC_SUBST(MJIT_DEBUGFLAGS, [${MJIT_DEBUGFLAGS-'$(debugflags)'}])dnl
+AC_SUBST(MJIT_LDSHARED)dnl
+
+AC_SUBST(STATIC)dnl
+AC_SUBST(CCDLFLAGS)dnl
+AC_SUBST(LDSHARED)dnl
+AC_SUBST(LDSHAREDXX)dnl
+AC_SUBST(DLEXT)dnl
+AC_SUBST(LIBEXT)dnl
+AC_SUBST(ASMEXT, S)dnl
+
+STATIC=
+
+: "dlopen" && {
+ rb_cv_dlopen=unknown
+ AC_MSG_CHECKING(whether OS depend dynamic link works)
+ AS_IF([test "$GCC" = yes], [
+ AS_CASE(["$target_os"],
+ [darwin*], [
+ # The -fno-common is needed if we wish to embed the Ruby interpreter
+ # into a plugin module of some project (as opposed to embedding it
+ # within the project's application). The -I/usr/local/include is
+ # needed because CPP as discovered by configure (cc -E -traditional)
+ # fails to consult /usr/local/include by default. This causes
+ # mkmf.rb's have_header() to fail if the desired resource happens to be
+ # installed in the /usr/local tree.
+ RUBY_APPEND_OPTION(CCDLFLAGS, -fno-common)],
+ [bsdi*|cygwin*|msys*|mingw*|aix*|interix*], [ ],
+ [
+ RUBY_APPEND_OPTION(CCDLFLAGS, -fPIC)])
+ ], [
+ AS_CASE(["$target_os"],
+ [solaris*|irix*], [CCDLFLAGS="$CCDLFLAGS -KPIC"],
+ [sunos*], [CCDLFLAGS="$CCDLFLAGS -PIC"],
+ [esix*|uxpds*], [CCDLFLAGS="$CCDLFLAGS -KPIC"],
+ [: ${CCDLFLAGS=""}])
+ ])
+}
+
+EXTSTATIC=
+AC_SUBST(EXTSTATIC)dnl
+AC_ARG_WITH(static-linked-ext,
+ AS_HELP_STRING([--with-static-linked-ext], [link external modules statically]),
+ [AS_CASE([$withval],[yes],[STATIC=;EXTSTATIC=static],[no],[],[EXTSTATIC="$withval"])])
+AS_CASE([",$EXTSTATIC,"], [,static,|*,enc,*], [
+ ENCOBJS='enc/encinit.$(OBJEXT) enc/libenc.$(LIBEXT) enc/libtrans.$(LIBEXT)'
+ EXTOBJS='ext/extinit.$(OBJEXT)'
+ AC_DEFINE_UNQUOTED(EXTSTATIC, 1)
+ AC_SUBST(ENCSTATIC, static)
+], [
+ ENCOBJS='dmyenc.$(OBJEXT)'
+ EXTOBJS='dmyext.$(OBJEXT)'
+])
+AC_SUBST(ENCOBJS)
+AC_SUBST(EXTOBJS)
+
+: "rpath" && {
+ AS_CASE(["$target_os"],
+ [solaris*], [ AS_IF([test "$GCC" = yes], [
+ : ${LDSHARED='$(CC) -shared'}
+ AS_IF([test "$rb_cv_prog_gnu_ld" = yes], [
+ LDFLAGS="$LDFLAGS -Wl,-E"
+ ])
+ ], [
+ : ${LDSHARED='$(CC) -G'}
+ ])
+ AS_IF([test "$ac_cv_sizeof_voidp" = 8], [
+ : ${LIBPATHENV=LD_LIBRARY_PATH_64}
+ : ${PRELOADENV=LD_PRELOAD_64}
+ ], [
+ : ${LIBPATHENV=LD_LIBRARY_PATH_32}
+ : ${PRELOADENV=LD_PRELOAD_32}
+ ])
+ rb_cv_dlopen=yes],
+ [sunos*], [ : ${LDSHARED='$(LD) -assert nodefinitions'}
+ rb_cv_dlopen=yes],
+ [irix*], [ : ${LDSHARED='$(LD) -shared'}
+ rb_cv_dlopen=yes],
+ [sysv4*], [ : ${LDSHARED='$(LD) -G'}
+ rb_cv_dlopen=yes],
+ [nto-qnx*], [ : ${LDSHARED='$(CC) -shared'}
+ rb_cv_dlopen=yes],
+ [esix*|uxpds*], [ : ${LDSHARED='$(LD) -G'}
+ rb_cv_dlopen=yes],
+ [osf*], [ : ${LDSHARED='$(LD) -shared -expect_unresolved "*"'}
+ rb_cv_dlopen=yes],
+ [bsdi3*], [ AS_CASE(["$CC"],
+ [*shlicc*], [ : ${LDSHARED='$(CC) -r'}
+ rb_cv_dlopen=yes])],
+ [linux* | gnu* | k*bsd*-gnu | netbsd* | bsdi* | kopensolaris*-gnu | haiku*], [
+ : ${LDSHARED='$(CC) -shared'}
+ AS_IF([test "$rb_cv_binary_elf" = yes], [
+ LDFLAGS="$LDFLAGS -Wl,-export-dynamic"
+ ])
+ rb_cv_dlopen=yes],
+ [interix*], [ : ${LDSHARED='$(CC) -shared'}
+ XLDFLAGS="$XLDFLAGS -Wl,-E"
+ rb_cv_dlopen=yes],
+ [freebsd*|dragonfly*], [
+ : ${LDSHARED='$(CC) -shared'}
+ AS_IF([test "$rb_cv_binary_elf" = yes], [
+ LDFLAGS="$LDFLAGS -rdynamic"
+ DLDFLAGS="$DLDFLAGS "'-Wl,-soname,$@'
+ ], [
+ test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED='$(LD) -Bshareable'
+ ])
+ rb_cv_dlopen=yes],
+ [openbsd*|mirbsd*], [ : ${LDSHARED='$(CC) -shared ${CCDLFLAGS}'}
+ AS_IF([test "$rb_cv_binary_elf" = yes], [
+ LDFLAGS="$LDFLAGS -Wl,-E"
+ ])
+ rb_cv_dlopen=yes],
+ [darwin*], [ : ${LDSHARED='$(CC) -dynamic -bundle'}
+ : ${DLDSHARED='$(CC) -dynamiclib'}
+ : ${LDFLAGS=""}
+ : ${LIBPATHENV=DYLD_LIBRARY_PATH}
+ : ${PRELOADENV=DYLD_INSERT_LIBRARIES}
+ AS_IF([test x"$enable_shared" = xyes], [
+ # Resolve symbols from libruby.dylib when --enable-shared
+ EXTDLDFLAGS='$(LIBRUBYARG_SHARED)'
+ ], [test "x$EXTSTATIC" = x], [
+ # When building exts as bundles, a mach-o bundle needs to know its loader
+ # program to bind symbols from the ruby executable
+ EXTDLDFLAGS="-bundle_loader '\$(BUILTRUBY)'"
+ ])
+ rb_cv_dlopen=yes],
+ [aix*], [ : ${LDSHARED='$(CC)'}
+ AS_IF([test "$GCC" = yes], [
+ LDSHARED="$LDSHARED ${linker_flag}-G -shared"
+ ], [
+ LDSHARED="$LDSHARED ${linker_flag}-G"
+ ])
+ EXTDLDFLAGS='-e$(TARGET_ENTRY)'
+ XLDFLAGS="${linker_flag}"'-bE:$(ARCHFILE)'" ${linker_flag}-brtl"
+ XLDFLAGS="$XLDFLAGS ${linker_flag}-blibpath:${prefix}/lib:${LIBPATH:-/usr/lib:/lib}"
+ : ${ARCHFILE="ruby.imp"}
+ TRY_LINK='$(CC) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS)'
+ TRY_LINK="$TRY_LINK"' $(CFLAGS) $(src) $(LIBPATH) $(LDFLAGS) $(LOCAL_LIBS) $(LIBS)'
+ : ${LIBPATHENV=LIBPATH}
+ : ${PRELOADENV=LDR_PRELOAD}
+ rb_cv_dlopen=yes],
+ [nto-qnx*], [ DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
+ : ${LDSHARED='$(LD) -Bshareable -x'}
+ LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
+ rb_cv_dlopen=yes],
+ [cygwin*|msys*|mingw*], [
+ : ${LDSHARED='$(CC) -shared'}
+ XLDFLAGS="$XLDFLAGS -Wl,--stack,0x00200000,--enable-auto-import"
+ DLDFLAGS="${DLDFLAGS} -Wl,--enable-auto-image-base,--enable-auto-import"
+ : ${LIBPATHENV=PATH}
+ : ${PRELOADENV=""}
+ rb_cv_dlopen=yes],
+ [hiuxmpp], [ : ${LDSHARED='$(LD) -r'}],
+ [atheos*], [ : ${LDSHARED='$(CC) -shared'}
+ rb_cv_dlopen=yes],
+ [ : ${LDSHARED='$(LD)'}])
+ AC_MSG_RESULT($rb_cv_dlopen)
+}
+
+AS_IF([test "$rb_cv_dlopen" = yes], [
+ AS_CASE(["$target_os"],
+ [darwin*], [
+ AC_SUBST(ADDITIONAL_DLDFLAGS, "")
+ for flag in \
+ "-multiply_defined suppress" \
+ "-undefined dynamic_lookup" \
+ ; do
+ test "x${linker_flag}" = x || flag="${linker_flag}`echo ${flag} | tr ' ' ,`"
+ RUBY_TRY_LDFLAGS([$flag], [], [flag=])
+ AS_IF([test x"$flag" = x], [continue])
+
+ AC_MSG_CHECKING([whether $flag is accepted for bundle])
+ : > conftest.c
+ AS_IF([${LDSHARED%%'$(CC)'*}$CC${LDSHARED@%:@*'$(CC)'} -o conftest.bundle $flag conftest.c >/dev/null 2>conftest.err &&
+ test ! -s conftest.err], [
+ AC_MSG_RESULT([yes])
+ RUBY_APPEND_OPTIONS(DLDFLAGS, [$flag])
+ ], [
+ AC_MSG_RESULT([no])
+ RUBY_APPEND_OPTIONS(ADDITIONAL_DLDFLAGS, [$flag])
+ ])
+ rm -fr conftest.*
+ done
+ ])
+])
+
+AS_IF([test "${LDSHAREDXX}" = ""], [
+ AS_CASE(["${LDSHARED}"],
+ [*'$(CC)'*], [
+ LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\$(CC)/$(CXX)/'`
+ ],
+ [*'${CC}'*], [
+ LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\${CC}/${CXX}/'`
+ ],
+ [*$CC*], [
+ LDSHAREDXX=`echo "${LDSHARED}" | sed "s|$CC|$CXX|"`
+ ],
+ [ld" "*], [
+ ])
+])
+
+AC_SUBST(LINK_SO)
+AC_SUBST(LIBPATHFLAG)
+AC_SUBST(RPATHFLAG)
+AC_SUBST(LIBPATHENV, "${LIBPATHENV-LD_LIBRARY_PATH}")
+AC_SUBST(PRELOADENV, "${PRELOADENV-LD_PRELOAD}")
+AC_SUBST(TRY_LINK)
+
+AS_CASE(["$target_os"],
+[freebsd*], [
+ AC_CHECK_LIB([procstat], [procstat_open_sysctl])
+ AS_IF([test "x$ac_cv_lib_procstat_procstat_open_sysctl" = xyes], [
+ AC_CHECK_FUNCS(procstat_getvmmap)
+ ])
+ ])
+AS_CASE(["$target_cpu-$target_os"],
+[*-darwin*], [
+ AC_CHECK_HEADERS([libproc.h])
+ AC_CHECK_HEADERS([execinfo.h])
+ AS_IF([test "x$ac_cv_header_execinfo_h" = xyes], [
+ AC_CHECK_LIB([execinfo], [backtrace])
+ AC_CHECK_HEADERS([libunwind.h])
+
+ AC_CHECK_HEADERS([mach/task.h mach/mach_init.h mach/mach_port.h])
+ AS_IF([ test \
+ "x${ac_cv_header_mach_task_h}" = xyes -a \
+ "x${ac_cv_header_mach_mach_init_h}" = xyes -a \
+ "x${ac_cv_header_mach_mach_port_h}" = xyes \
+ ], [
+ AC_DEFINE([HAVE_MACH_TASK_EXCEPTION_PORTS], [1])
+ ])
+ ])],
+[*-freebsd*|x86_64-netbsd*], [
+ AC_CHECK_HEADERS([execinfo.h])
+ AS_IF([test "x$ac_cv_header_execinfo_h" = xyes], [
+ AC_CHECK_LIB([execinfo], [backtrace])
+ AC_CHECK_LIB([unwind], [unw_backtrace])
+ ])])
+AC_CHECK_FUNCS(backtrace)
+
+AS_IF([test "x$ac_cv_func_backtrace" = xyes], [
+ AC_CACHE_CHECK(for broken backtrace, rb_cv_broken_backtrace,
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <signal.h>
+#include <execinfo.h>
+
+]`grep '^@%:@ *define *RUBY_SIGALTSTACK_SIZE' ${srcdir}/signal.c`[
+#define TRACE_SIZE 256
+
+void sigsegv(int signum, siginfo_t *info, void *ctx){
+ void *trace[TRACE_SIZE];
+ int n = backtrace(trace, TRACE_SIZE);
+ if (n > 0) {
+ /*fprintf(stdout, "backtrace:%d\n",n);*/
+ } else {
+ _exit(EXIT_FAILURE);
+ }
+ _exit(EXIT_SUCCESS);
+}
+int
+main(void)
+{
+ volatile int *a = NULL;
+ stack_t ss;
+ struct sigaction sa;
+
+ ss.ss_sp = malloc(RUBY_SIGALTSTACK_SIZE);
+ if (ss.ss_sp == NULL) {
+ fprintf(stderr, "cannot allocate memory for sigaltstack\n");
+ return EXIT_FAILURE;
+ }
+ ss.ss_size = RUBY_SIGALTSTACK_SIZE;
+ ss.ss_flags = 0;
+ if (sigaltstack(&ss, NULL) == -1) {
+ fprintf(stderr, "sigaltstack failed\n");
+ return EXIT_FAILURE;
+ }
+ memset(&sa, 0, sizeof(struct sigaction));
+ sigemptyset(&sa.sa_mask);
+ sa.sa_sigaction = sigsegv;
+ sa.sa_flags |= SA_SIGINFO;
+ sa.sa_flags |= SA_ONSTACK;
+ sigaction(SIGSEGV, &sa, NULL);
+ a[0] = 1;
+ return EXIT_SUCCESS;
+}
+]])],
+ rb_cv_broken_backtrace=no,
+ rb_cv_broken_backtrace=yes,
+ rb_cv_broken_backtrace=no)])
+ AS_IF([test "$rb_cv_broken_backtrace" = yes], [
+ AC_DEFINE(BROKEN_BACKTRACE, 1)
+ ])
+])
+
+AC_ARG_WITH(valgrind,
+ AS_HELP_STRING([--without-valgrind],[disable valgrind memcheck support]),
+ [], with_valgrind=yes)
+AS_IF([test x$with_valgrind != xno],
+ [AC_CHECK_HEADERS(valgrind/memcheck.h)])
+
+: "dlext & soext" && {
+ AS_CASE(["$target_os"],
+ [darwin*], [
+ SOEXT=dylib
+ DLEXT=bundle],
+ [cygwin*|msys*|mingw*|*djgpp*], [
+ LOAD_RELATIVE=1
+ SOEXT=dll
+ DLEXT=so],
+ [
+ DLEXT=so])
+: ${SOEXT="${DLEXT}"}
+AC_SUBST(SOEXT)
+}
+
+AS_IF([test "$rb_cv_dlopen:$load_relative" = yes:yes], [
+ AS_IF([test "$ac_cv_func_dladdr" = yes], [
+ LOAD_RELATIVE=1
+ ])
+])
+AS_IF([test x"$LOAD_RELATIVE" = x1], [
+ load_relative=yes
+], [
+ unset load_relative
+])
+
+len=2 # .rb
+n=`expr "$DLEXT" : '.*'`; test "$n" -gt "$len" && len=$n
+AC_DEFINE_UNQUOTED(DLEXT_MAXLEN, `expr $len + 1`)
+test ".$DLEXT" = "." || AC_DEFINE_UNQUOTED(DLEXT, ".$DLEXT")
+AC_SUBST(DLEXT)
+
+: "strip" && {
+ AC_MSG_CHECKING([for $STRIP flags])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM], [AS_IF(
+ ["${STRIP}" -A -n conftest$ac_exeext 2>/dev/null], [
+ AC_MSG_RESULT([-A -n])
+ STRIP="${STRIP} -A -n"
+ ],
+ ["${STRIP}" -S -x conftest$ac_exeext 2>/dev/null], [
+ AC_MSG_RESULT([-S -x])
+ STRIP="${STRIP} -S -x"
+ ], [
+ AC_MSG_RESULT([none needed])
+ ])
+ ])
+}
+
+AC_ARG_WITH(ext,
+ AS_HELP_STRING([--with-ext=EXTS],
+ [pass to --with-ext option of extmk.rb]))
+AC_ARG_WITH(out-ext,
+ AS_HELP_STRING([--with-out-ext=EXTS],
+ [pass to --without-ext option of extmk.rb]))
+AC_ARG_WITH(setup,
+ AS_HELP_STRING([--with-setup=SETUP], [use extension libraries setup]),
+ [setup=$withval])
+AS_IF([test -n "$setup"], [
+ AS_IF([! test -f "ext/$setup" -o -f "$srcdir/ext/$setup"], [
+ AC_MSG_ERROR(Setup file $setup not found under ext or $srcdir/ext)
+ ])
+], [test -f "$srcdir/ext/Setup.$target_os"], [
+ setup="Setup.$target_os"
+], [
+ setup=
+ for file in "$srcdir"/ext/Setup.*; do
+ AS_CASE(["$file"], [*~|*.bak|*.orig|*.rej|*.tmp], [continue])
+ setup=`basename "$file"`
+ AS_CASE(["$target_os"], [`expr "$setup" : 'Setup.\(.*\)'`*], [break])
+ platform=`sed '/^option *platform */!d;s///;s/|/*|/g;q' "$file"`
+ AS_IF([test "x$platform" != x], [
+ eval "AS_CASE([\"\$target_os\"], [$platform*], [break])"
+ ])
+ setup=
+ done
+ : ${setup:=Setup}
+])
+AC_SUBST(setup)
+
+rubylibprefix='${libdir}/${RUBY_BASE_NAME}'
+AC_ARG_WITH(rubylibprefix,
+ AS_HELP_STRING([--with-rubylibprefix=DIR], [prefix for ruby libraries [[LIBDIR/RUBY_BASE_NAME]]]),
+ [AS_IF([test "x$withval" = xno], [
+ AC_MSG_ERROR([No ruby, No libprefix])
+ ])
+ rubylibprefix="$withval"])
+AC_SUBST(rubylibprefix)
+
+AS_IF([test x"${exec_prefix}" != xNONE], [
+ RUBY_EXEC_PREFIX="$exec_prefix"
+], [test x"$prefix" != xNONE], [
+ RUBY_EXEC_PREFIX="$prefix"
+], [
+ RUBY_EXEC_PREFIX=$ac_default_prefix
+])
+pat=`echo "${RUBY_EXEC_PREFIX}" | tr -c '\012' .`'\(.*\)'
+for var in bindir includedir libdir rubylibprefix; do
+ eval val='"$'$var'"'
+ AS_CASE(["$val"], ["${RUBY_EXEC_PREFIX}"*], [val='${exec_prefix}'"`expr \"$val\" : \"$pat\"`"])
+ eval $var='"$val"'
+done
+
+BTESTRUBY='$(MINIRUBY)'
+AS_IF([test x"$cross_compiling" = xyes], [
+ test x"$MINIRUBY" = x && MINIRUBY="${RUBY-$BASERUBY} -I`$CHDIR .; pwd` "-r'$(arch)-fake'
+ XRUBY_LIBDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["libdir"]']`
+ XRUBY_RUBYLIBDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["rubylibdir"]']`
+ XRUBY_RUBYHDRDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["rubyhdrdir"]']`
+ AC_SUBST(XRUBY_LIBDIR)
+ AC_SUBST(XRUBY_RUBYLIBDIR)
+ AC_SUBST(XRUBY_RUBYHDRDIR)
+ PREP='$(arch)-fake.rb'
+ AS_CASE(["$enable_shared:$EXTSTATIC:$target_os"], [no::darwin*], [
+ # darwin target requires miniruby for linking ext bundles
+ PREP="$PREP"' miniruby$(EXEEXT)'
+ ])
+ RUNRUBY_COMMAND='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`'
+ RUNRUBY='$(RUNRUBY_COMMAND)'
+ XRUBY='$(MINIRUBY)'
+ TEST_RUNNABLE=no
+ CROSS_COMPILING=yes
+ AC_DEFINE(CROSS_COMPILING, 1)
+], [
+ MINIRUBY='./miniruby$(EXEEXT) -I$(srcdir)/lib -I.'
+ MINIRUBY="$MINIRUBY"' -I$(EXTOUT)/common'
+ PREP='miniruby$(EXEEXT)'
+ RUNRUBY_COMMAND='$(MINIRUBY) $(tooldir)/runruby.rb --extout=$(EXTOUT) $(RUNRUBYOPT)'
+ RUNRUBY='$(RUNRUBY_COMMAND) --'
+ XRUBY='$(RUNRUBY)'
+ TEST_RUNNABLE=yes
+ CROSS_COMPILING=no
+])
+AC_SUBST(TEST_RUNNABLE)
+AC_SUBST(CROSS_COMPILING)
+AC_SUBST(MINIRUBY)
+AC_SUBST(BTESTRUBY)
+AC_SUBST(PREP)
+AC_SUBST(RUNRUBY_COMMAND)
+AC_SUBST(RUNRUBY)
+AC_SUBST(XRUBY)
+AC_SUBST(EXTOUT, [${EXTOUT=.ext}])
+
+FIRSTMAKEFILE=""
+LIBRUBY_A='lib$(RUBY_SO_NAME)-static.a'
+LIBRUBY='$(LIBRUBY_A)'
+LIBRUBYARG_STATIC='-l$(RUBY_SO_NAME)-static'
+LIBRUBYARG='$(LIBRUBYARG_STATIC)'
+SOLIBS='$(MAINLIBS)'
+
+AS_CASE(["$target_os"],
+ [cygwin*|msys*|mingw*|haiku*|darwin*], [
+ : ${DLDLIBS=""}
+ ],
+ [
+ DLDLIBS="${DLDLIBS:+$DLDLIBS }-lc"
+ ])
+
+AC_ARG_ENABLE(multiarch,
+ AS_HELP_STRING([--enable-multiarch], [enable multiarch compatible directories]),
+ [multiarch=], [unset multiarch])
+AS_IF([test ${multiarch+set}], [
+ AC_DEFINE(ENABLE_MULTIARCH)
+ MJIT_HEADER_INSTALL_DIR=include/'${arch}/${RUBY_VERSION_NAME}'
+], [
+ MJIT_HEADER_INSTALL_DIR=include/'${RUBY_VERSION_NAME}/${arch}'
+])
+
+archlibdir='${libdir}/${arch}'
+sitearchlibdir='${libdir}/${sitearch}'
+archincludedir='${includedir}/${arch}'
+sitearchincludedir='${includedir}/${sitearch}'
+
+AC_ARG_WITH(soname,
+ AS_HELP_STRING([--with-soname=SONAME], [base name of shared library]),
+ [RUBY_SO_NAME=$withval],
+ [
+ AS_CASE(["$target_os"],
+ [darwin*], [
+ RUBY_SO_NAME='$(RUBY_BASE_NAME).$(RUBY_API_VERSION)'
+ ],
+ [cygwin*], [
+ RUBY_SO_NAME='$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)0'
+ ],
+ [mingw*], [
+ RUBY_SO_NAME="${rb_cv_msvcrt}"'-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)0'
+ AS_IF([test x"${target_cpu}" != xi386], [
+ RUBY_SO_NAME="${target_cpu}-${RUBY_SO_NAME}"
+ ])
+ ],
+ [RUBY_SO_NAME='$(RUBY_BASE_NAME)'])
+ ])
+
+LIBRUBY_LDSHARED=${DLDSHARED=${LDSHARED}}
+LIBRUBY_DLDFLAGS=$DLDFLAGS
+LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(RUBY_PROGRAM_VERSION)'
+LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(RUBY_API_VERSION)'
+LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).$(SOEXT)'
+ENABLE_SHARED=no
+
+AC_ARG_ENABLE(shared,
+ AS_HELP_STRING([--enable-shared], [build a shared library for Ruby]),
+ [enable_shared=$enableval])
+libprefix=${multiarch+'$(archlibdir)'}${multiarch-'$(libdir)'}
+LIBRUBY_RELATIVE=${load_relative-no}
+AS_CASE("$enable_shared", [yes], [
+ LIBRUBY='$(LIBRUBY_SO)'
+ LIBRUBYARG_SHARED='-l$(RUBY_SO_NAME)'
+ LIBRUBYARG='$(LIBRUBYARG_SHARED)'
+ LIBRUBY_RELATIVE=no
+ test -z "$CCDLFLAGS" || CFLAGS="$CFLAGS $CCDLFLAGS"
+ ENABLE_SHARED=yes
+
+ # libdir can be overridden in config.site file (on OpenSUSE at least).
+ libdir_basename=lib
+ AS_IF([test "$bindir" = '${exec_prefix}/bin'], [
+ AS_CASE(["$libdir"], ['${exec_prefix}/'*], [libdir_basename=`basename "$libdir"`])
+ ])
+ AC_DEFINE_UNQUOTED(LIBDIR_BASENAME, ["${libdir_basename}"])
+ libdir_basename="${libdir_basename}"${multiarch+'/${arch}'}
+
+ # Debian bullseye reportedly has its ld(1) patched, which breaks
+ # --enable-shared --with-jemalloc combination. We might have to deal with
+ # the ld(1) change sooner or later, but in the meantime let us force it
+ # the old way.
+ #
+ # See https://github.com/ruby/ruby/pull/4627
+ RUBY_TRY_LDFLAGS([${linker_flag}--no-as-needed], [no_as_needed=yes], [no_as_needed=no])
+ AS_IF([test "$no_as_needed" = yes], [
+ RUBY_APPEND_OPTIONS(LDFLAGS, [${linker_flag}--no-as-needed])
+ ])
+
+ AS_CASE(["$target_os"],
+ [freebsd*|dragonfly*], [],
+ [
+ AS_IF([test "$GCC" = yes], [
+ RUBY_TRY_LDFLAGS([${linker_flag}--no-undefined], [no_undefined=yes], [no_undefined=no])
+ AS_IF([test "no_undefined" = yes], [
+ RUBY_APPEND_OPTION(EXTLDFLAGS, [${linker_flag}--no-undefined])
+ ])
+ ])
+ ])
+
+ AS_CASE(["$target_os"],
+ [sunos4*], [
+ LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)'
+ ],
+ [linux* | gnu* | k*bsd*-gnu | atheos* | kopensolaris*-gnu | haiku*], [
+ RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ['-Wl,-soname,$(LIBRUBY_SONAME)' "$LDFLAGS_OPTDIR"])
+ LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)'
+ AS_IF([test "$load_relative" = yes], [
+ libprefix="'\$\${ORIGIN}/../${libdir_basename}'"
+ LIBRUBY_RPATHFLAGS="-Wl,-rpath,${libprefix}"
+ LIBRUBY_RELATIVE=yes
+ ])
+ ],
+ [freebsd*|dragonfly*], [
+ LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)$(MINOR)'
+ LIBRUBY_SONAME='$(LIBRUBY_SO)'
+ AS_IF([test "$rb_cv_binary_elf" != "yes" ], [
+ LIBRUBY_SO="$LIBRUBY_SO.\$(TEENY)"
+ LIBRUBY_ALIASES=''
+ ], [test "$load_relative" = yes], [
+ libprefix="'\$\$ORIGIN/../${libdir_basename}'"
+ LIBRUBY_RPATHFLAGS="-Wl,-rpath,${libprefix}"
+ LIBRUBY_RELATIVE=yes
+ ])
+ ],
+ [netbsd*], [
+ LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)$(MINOR)'
+ LIBRUBY_SO="${LIBRUBY_SONAME}"'.$(TEENY)'
+ RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ['-Wl,-soname,$(LIBRUBY_SONAME)' "$LDFLAGS_OPTDIR"])
+ AS_IF([test "$rb_cv_binary_elf" = yes], [ # ELF platforms
+ LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)'
+ ], [ # a.out platforms
+ LIBRUBY_ALIASES=""
+ ])
+ ],
+ [openbsd*|mirbsd*], [
+ LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR).'`expr ${MINOR} \* 10 + ${TEENY}`
+ ],
+ [solaris*], [
+ LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)'
+ LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(RUBY_PROGRAM_VERSION)'
+ LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)'
+ RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ["${linker_flag}-h${linker_flag:+,}"'$(@F)'])
+ AS_IF([test "$load_relative" = yes], [
+ libprefix="'\$\$ORIGIN/../${libdir_basename}'"
+ LIBRUBY_RPATHFLAGS="-R${libprefix}"
+ LIBRUBY_RELATIVE=yes
+ ], [
+ LIBRUBY_RPATHFLAGS='-R${libdir}'
+ ])
+ ],
+ [aix*], [
+ RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ["${linker_flag}-bnoentry" "$XLDFLAGS" "$LDFLAGS_OPTDIR"])
+ LIBRUBYARG_SHARED='-L${libdir} -l${RUBY_SO_NAME}'
+ LIBS="$LIBS -lm -lc"
+ ],
+ [darwin*], [
+ LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT)'
+ LIBRUBY_SONAME='$(LIBRUBY_SO)'
+ LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).$(SOEXT)'
+ AS_IF([test "$load_relative" = yes], [
+ libprefix="@executable_path/../${libdir_basename}"
+ LIBRUBY_RELATIVE=yes
+ ])
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS -install_name ${libprefix}"'/$(LIBRUBY_SONAME)'
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-compatibility_version $(RUBY_API_VERSION)'
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-current_version $(RUBY_PROGRAM_VERSION)'
+ AS_IF([test "$visibility_option" = ld], [
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,_Init_*'
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,_ruby_static_id_*'
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,*_threadptr_*'
+ ])
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "' $(XLDFLAGS)'
+ ],
+ [interix*], [
+ LIBRUBYARG_SHARED='-L. -L${libdir} -l$(RUBY_SO_NAME)'
+ ],
+ [cygwin*|msys*|mingw*|mswin*], [
+ LIBRUBY_RELATIVE=yes
+ ])
+], [
+ LIBRUBYARG_SHARED=
+
+ # enable PIE if possible
+ AC_ARG_ENABLE(pie,
+ AS_HELP_STRING([--disable-pie], [disable PIE feature]),
+ [pie=$enableval], [pie=])
+ AS_IF([test "$GCC" = yes -a -z "$EXTSTATIC" -a "x$pie" != xno], [
+ RUBY_TRY_CFLAGS(-fPIE, [pie=yes], [pie=no])
+ AS_IF([test "$pie" = yes], [
+ # Use -fPIE when testing -pie. RUBY_TRY_LDFLAGS sets
+ # $save_CFLAGS internally, so set other name here.
+ save_CFLAGS_before_pie="$CFLAGS"
+ CFLAGS="$CFLAGS -fPIE"
+
+ # gcc need -pie but clang need -Wl,-pie.
+ for pie in -pie -Wl,-pie; do
+ RUBY_TRY_LDFLAGS([$pie], [], [pie=])
+ AS_IF([test "x$pie" != x], [
+ RUBY_APPEND_OPTION(XCFLAGS, -fPIE)
+ RUBY_APPEND_OPTION(XLDFLAGS, $pie)
+ break
+ ])
+ done
+ CFLAGS="$save_CFLAGS_before_pie"
+ ])
+ ])
+])
+AS_IF([test "$enable_rpath" = yes], [
+ test -z "$LIBRUBY_RPATHFLAGS" || LIBRUBY_RPATHFLAGS="$LIBRUBY_RPATHFLAGS "
+ rpathflag="${RPATHFLAG}"
+ AS_CASE(["${cross_compiling}${load_relative}"], [*yes*], [], [rpathflag="$RPATHFLAG$LIBPATHFLAG"])
+ rpathflag=`IFS="$PATH_SEPARATOR"
+ echo x "$rpathflag" |
+ sed "s/^x *//;s${IFS}"'%1\\$-s'"${IFS}${libprefix}${IFS}g;s${IFS}%s${IFS}${libprefix}${IFS}g"
+ `
+ LIBRUBY_RPATHFLAGS="$LIBRUBY_RPATHFLAGS${rpathflag}"
+ LIBRUBYARG_SHARED="$LIBRUBY_RPATHFLAGS $LIBRUBYARG_SHARED"
+ LIBRUBYARG_STATIC="$LIBRUBY_RPATHFLAGS $LIBRUBYARG_STATIC"
+])
+AC_SUBST(LIBRUBY_RELATIVE)
+
+LDFLAGS="-L. $LDFLAGS"
+AC_SUBST(ARCHFILE)
+
+AS_IF([test "$EXEEXT" = .exe], [
+ EXECUTABLE_EXTS='".exe",".com",".cmd",".bat"'
+ AC_DEFINE_UNQUOTED(EXECUTABLE_EXTS, $EXECUTABLE_EXTS)
+ EXECUTABLE_EXTS=`echo $EXECUTABLE_EXTS | tr -d '"' | tr , ' '`
+ AC_SUBST(EXECUTABLE_EXTS)
+])
+
+AS_CASE("$cross_compiling:${LIBPATHENV}", [yes:* | no:], [], [
+ AC_MSG_CHECKING(whether wrapper for $LIBPATHENV is needed)
+ AS_IF([env ${LIBPATHENV}=/lib /bin/sh -c ': ${'${LIBPATHENV}'?}' 2>/dev/null],
+ [AC_MSG_RESULT(no)],
+ [AC_SUBST(XRUBY_LIBPATHENV_WRAPPER, 'exe/$(PROGRAM)')
+ AC_MSG_RESULT(yes)]
+ )
+])
+
+AC_ARG_ENABLE(dtrace,
+ AS_HELP_STRING([--enable-dtrace],
+ [enable DTrace for tracing inside ruby. enabled by default on systems having dtrace]),
+ [enable_dtrace=$enableval], [enable_dtrace=auto])
+
+LIBRUBY_A_OBJS='$(OBJS)'
+DTRACE_REBUILD=
+AS_CASE(["${enable_dtrace}"],
+[yes|auto], [
+ RUBY_DTRACE_AVAILABLE()
+], [
+ rb_cv_dtrace_available=no
+])
+AS_CASE(["$target_os"],[freebsd*],[
+ rb_cv_dtrace_available=no
+ ])
+AS_IF([test "${enable_dtrace}" = yes], [dnl
+ AS_IF([test -z "$DTRACE"], [dnl
+ AC_MSG_ERROR([dtrace(1) is missing])
+ ], [test "$cross_compiling" = yes], [dnl
+ AC_MSG_ERROR([--enable-dtrace, however, cross compiling])
+ ], [test "${rb_cv_dtrace_available}" = "no"], [dnl
+ AC_MSG_ERROR([--enable-dtrace, however, USDT is not available])
+ ])
+])
+AS_CASE([$rb_cv_dtrace_available],
+[yes*], [dnl
+ RUBY_DTRACE_POSTPROCESS()
+ AS_IF([test "$rb_cv_prog_dtrace_g" != no], [dnl
+ DTRACE_OBJ='probes.$(OBJEXT)'
+ ])
+ AS_IF([test "$rb_cv_prog_dtrace_g" = rebuild], [dnl
+ DTRACE_REBUILD=yes
+ LIBRUBY_A_OBJS='$(DTRACE_GLOMMED_OBJ)'
+ ])
+ AS_CASE("${target_os}", [freebsd*], [dnl
+ # FreeBSD's dtrace requires libelf
+ LIBS="-lelf $LIBS"
+ ])
+ DTRACE_EXT=d
+], [dnl
+ enable_dtrace=no
+ DTRACE_EXT=dmyh
+])
+AC_SUBST(DTRACE_EXT)
+AC_SUBST(DTRACE_OBJ)
+AC_SUBST(DTRACE_REBUILD)
+AC_SUBST(DTRACE_OPT)
+AC_SUBST(LIBRUBY_A_OBJS)
+
+AC_ARG_ENABLE(gcov,
+ AS_HELP_STRING([--enable-gcov], [enable coverage measurement by gcov]),
+ [gcov=yes])
+AS_IF([test x"$gcov" = xyes], [
+ CFLAGS="$CFLAGS -coverage"
+ LDFLAGS="$LDFLAGS -coverage"
+])
+
+RUBY_SETJMP_TYPE
+}
+
+: "build section" && {
+dnl build rdoc index if requested
+RDOCTARGET=""
+CAPITARGET=""
+AC_ARG_ENABLE(install-doc,
+ AS_HELP_STRING([--disable-install-doc], [do not install either rdoc indexes or C API documents during install]),
+ [install_doc=$enableval], [install_doc=yes])
+AC_ARG_WITH(rdoc,
+ AS_HELP_STRING([--with-rdoc=ri,html], [comma/space separated list of RDoc formats to install]),
+ [install_rdoc=`echo ,$withval, | sed 'y/,/ /;s/ ri / rdoc /;s/^ *//;s/ *$//'`], [
+AC_ARG_ENABLE(install-rdoc,
+ AS_HELP_STRING([--disable-install-rdoc], [do not install rdoc indexes during install]),
+ [install_rdoc=$enableval], [install_rdoc=yes])
+])
+AC_ARG_ENABLE(install-capi,
+ AS_HELP_STRING([--disable-install-capi], [do not install C API documents during install]),
+ [install_capi=$enableval], [install_capi=no])
+
+AS_IF([test "$install_doc" != no], [
+ AS_CASE(["$install_rdoc"],
+ [yes], [
+ RDOCTARGET="rdoc"
+ ],
+ [all], [
+ RDOCTARGET="rdoc html"
+ ],
+ [no|''], [
+ RDOCTARGET="nodoc"
+ ],
+ [
+ RDOCTARGET="$install_rdoc"
+ ])
+ AS_IF([test "$install_capi" != no -a -n "$DOXYGEN"], [
+ CAPITARGET="capi"
+ ], [
+ CAPITARGET="nodoc"
+ ])
+], [
+ RDOCTARGET="nodoc"
+ CAPITARGET="nodoc"
+])
+
+AC_SUBST(RDOCTARGET)
+AC_SUBST(CAPITARGET)
+
+AS_CASE(["$RDOCTARGET:$CAPITARGET"],[nodoc:nodoc],[INSTALLDOC=nodoc],[INSTALLDOC=all])
+AC_SUBST(INSTALLDOC)
+
+AC_ARG_ENABLE(jit-support,
+ AS_HELP_STRING([--disable-jit-support], [disable JIT features]),
+ [MJIT_SUPPORT=$enableval],
+ [AS_CASE(["$target_os"],
+ [wasi | mingw* | solaris*], [MJIT_SUPPORT=no],
+ [MJIT_SUPPORT=yes]
+ )])
+
+AS_IF([test x"$MJIT_SUPPORT" = "xyes"],
+ [AC_DEFINE(USE_MJIT, 1)],
+ [AC_DEFINE(USE_MJIT, 0)])
+
+AC_SUBST(MJIT_SUPPORT)
+
+AC_CHECK_PROG(RUSTC, [rustc], [rustc], [no]) dnl no ac_tool_prefix
+
+dnl check if rustc is recent enough to build YJIT (rustc >= 1.58.0)
+YJIT_RUSTC_OK=no
+AS_IF([test "$RUSTC" != "no"],
+ AC_MSG_CHECKING([whether ${RUSTC} works for YJIT])
+ YJIT_TARGET_ARCH=
+ AS_CASE(["$target_cpu"],
+ [arm64|aarch64], [YJIT_TARGET_ARCH=aarch64],
+ [x86_64], [YJIT_TARGET_ARCH=x86_64],
+ )
+ dnl Fails in case rustc target doesn't match ruby target.
+ dnl Can happen on Rosetta, for example.
+ AS_IF([echo "#[cfg(target_arch = \"$YJIT_TARGET_ARCH\")] fn main() { let x = 1; format!(\"{x}\"); }" |
+ $RUSTC - --emit asm=/dev/null 2>/dev/null],
+ [YJIT_RUSTC_OK=yes]
+ )
+ AC_MSG_RESULT($YJIT_RUSTC_OK)
+)
+
+dnl check if we can build YJIT on this target platform
+dnl we can't easily cross-compile with rustc so we don't support that
+YJIT_TARGET_OK=no
+AS_IF([test "$cross_compiling" = no],
+ AS_CASE(["$target_cpu-$target_os"],
+ [*android*], [
+ YJIT_TARGET_OK=no
+ ],
+ [arm64-darwin*|aarch64-darwin*|x86_64-darwin*], [
+ YJIT_TARGET_OK=yes
+ ],
+ [arm64-*linux*|aarch64-*linux*|x86_64-*linux*], [
+ YJIT_TARGET_OK=yes
+ ],
+ [arm64-*bsd*|aarch64-*bsd*|x86_64-*bsd*], [
+ YJIT_TARGET_OK=yes
+ ]
+ )
+)
+
+dnl build YJIT in release mode if rustc >= 1.58.0 is present and we are on a supported platform
+AC_ARG_ENABLE(yjit,
+ AS_HELP_STRING([--enable-yjit],
+ [enable in-process JIT compiler that requires Rust build tools. enabled by default on supported platforms if rustc 1.58.0+ is available]),
+ [YJIT_SUPPORT=$enableval],
+ [AS_CASE(["$enable_jit_support:$YJIT_TARGET_OK:$YJIT_RUSTC_OK"],
+ [yes:yes:yes|:yes:yes], [
+ YJIT_SUPPORT=yes
+ ],
+ [YJIT_SUPPORT=no]
+ )]
+)
+
+CARGO=
+CARGO_BUILD_ARGS=
+YJIT_LIBS=
+AS_CASE(["${YJIT_SUPPORT}"],
+[yes|dev|stats|dev_nodebug], [
+ AS_IF([test x"$enable_jit_support" = "xno"],
+ AC_MSG_ERROR([--disable-jit-support but --enable-yjit. YJIT requires JIT support])
+ )
+ AS_IF([test x"$RUSTC" = "xno"],
+ AC_MSG_ERROR([rustc is required. Installation instructions available at https://www.rust-lang.org/tools/install])
+ )
+
+ AS_CASE(["${YJIT_SUPPORT}"],
+ [yes], [
+ rb_rust_target_subdir=release
+ ],
+ [dev], [
+ rb_rust_target_subdir=debug
+ CARGO_BUILD_ARGS='--features stats,disasm'
+ AC_DEFINE(RUBY_DEBUG, 1)
+ ],
+ [dev_nodebug], [
+ rb_rust_target_subdir=dev_nodebug
+ CARGO_BUILD_ARGS='--profile dev_nodebug --features stats,disasm'
+ ],
+ [stats], [
+ rb_rust_target_subdir=stats
+ CARGO_BUILD_ARGS='--profile stats --features stats'
+ AC_DEFINE(YJIT_STATS, 1)
+ ])
+
+ AS_IF([test -n "${CARGO_BUILD_ARGS}"], [
+ AC_CHECK_TOOL(CARGO, [cargo], [no])
+ AS_IF([test x"$CARGO" = "xno"],
+ AC_MSG_ERROR([cargo is required. Installation instructions available at https://www.rust-lang.org/tools/install])
+ ]))
+
+ YJIT_LIBS="yjit/target/${rb_rust_target_subdir}/libyjit.a"
+ AS_CASE(["$target_os"],[openbsd*],[
+ # Link libc++abi (which requires libpthread) for _Unwind_* functions needed by yjit
+ LDFLAGS="$LDFLAGS -lpthread -lc++abi"
+ ])
+ YJIT_OBJ='yjit.$(OBJEXT)'
+ AS_IF([test x"$YJIT_SUPPORT" != "xyes" ], [
+ AC_DEFINE_UNQUOTED(YJIT_SUPPORT, [$YJIT_SUPPORT])
+ ])
+ AC_DEFINE(USE_YJIT, 1)
+], [AC_DEFINE(USE_YJIT, 0)])
+
+dnl These variables end up in ::RbConfig::CONFIG
+AC_SUBST(YJIT_SUPPORT)dnl what flavor of YJIT the Ruby build includes
+AC_SUBST(RUSTC)dnl Rust compiler command
+AC_SUBST(CARGO)dnl Cargo command for Rust builds
+AC_SUBST(CARGO_BUILD_ARGS)dnl for selecting Rust build profiles
+AC_SUBST(YJIT_LIBS)dnl for optionally building the Rust parts of YJIT
+AC_SUBST(YJIT_OBJ)dnl for optionally building the C parts of YJIT
+
+AC_ARG_ENABLE(install-static-library,
+ AS_HELP_STRING([--disable-install-static-library], [do not install static ruby library]),
+ [INSTALL_STATIC_LIBRARY=$enableval
+ AS_IF([test x"$enable_shared" = xno -a x"$INSTALL_STATIC_LIBRARY" = xno],
+ [AC_MSG_ERROR([must install either static or shared library])],
+ [])],
+ AS_IF([test x"$enable_shared" = xyes],
+ [INSTALL_STATIC_LIBRARY=no],
+ [INSTALL_STATIC_LIBRARY=yes]))
+AC_SUBST(INSTALL_STATIC_LIBRARY)
+
+AC_CACHE_CHECK([for prefix of external symbols], rb_cv_symbol_prefix, [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[extern void conftest_external(void) {}]], [[]])],[
+ rb_cv_symbol_prefix=`$NM conftest.$ac_objext |
+ sed -n ['/.*T[ ]\([^ ]*\)conftest_external.*/!d;s//\1/p;q']`
+ ],
+ [rb_cv_symbol_prefix=''])
+ test -n "$rb_cv_symbol_prefix" || rb_cv_symbol_prefix=NONE
+])
+SYMBOL_PREFIX="$rb_cv_symbol_prefix"
+test "x$SYMBOL_PREFIX" = xNONE && SYMBOL_PREFIX=''
+DLNOBJ=dln.o
+AC_ARG_ENABLE(dln,
+ AS_HELP_STRING([--disable-dln], [disable dynamic link feature]),
+ [test "$enableval" = yes || DLNOBJ=dmydln.o])
+AC_SUBST(DLNOBJ)
+MINIDLNOBJ=dmydln.o
+
+AS_CASE(["$target_os"],
+ [linux*], [
+ ],
+ [netbsd*], [
+ RUBY_APPEND_OPTION(CFLAGS, -pipe)
+ ],
+ [darwin*], [
+ RUBY_APPEND_OPTION(CFLAGS, -pipe)
+ AC_MSG_CHECKING([whether Security framework is needed])
+ AC_COMPILE_IFELSE([
+ AC_LANG_BOOL_COMPILE_TRY([
+@%:@include <AvailabilityMacros.h>
+enum {
+ least = MAC_OS_X_VERSION_10_7, /* just fail if undefined */
+ required = MAC_OS_X_VERSION_MIN_REQUIRED,
+ upper /* bigger than MIN_REQUIRED, or */
+@%:@ifdef MAC_OS_X_VERSION_10_10
+ = MAC_OS_X_VERSION_10_10
+@%:@endif
+};],
+ [required >= least && required < upper])],
+ [dnl
+ AC_MSG_RESULT(yes)
+ RUBY_APPEND_OPTION(XLDFLAGS, [-framework Security])
+ RUBY_APPEND_OPTION(LIBRUBYARG_STATIC, [-framework Security])
+ ],dnl
+ [dnl
+ AC_MSG_RESULT(no)
+ ]dnl
+ )
+ RUBY_APPEND_OPTION(XLDFLAGS, [-framework CoreFoundation])
+ RUBY_APPEND_OPTION(LIBRUBYARG_STATIC, [-framework CoreFoundation])
+ ],
+ [osf*], [
+ AS_IF([test "$GCC" != "yes" ], [
+ # compile something small: taint.c is fine for this.
+ # the main point is the '-v' flag of 'cc'.
+ AS_CASE(["`cc -v -I. -c main.c -o /tmp/main.o 2>&1`"],
+ [*/gemc_cc*], [ # we have the new DEC GEM CC
+ CFLAGS="$CFLAGS -oldc"
+ ],
+ [ # we have the old MIPS CC
+ ])
+ # cleanup
+ rm -f /tmp/main.o
+ CFLAGS="$CFLAGS -std"
+ ])
+ ],
+ [cygwin*|msys*|mingw*], [
+ LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)'
+ AS_CASE(["$target_os"],
+ [cygwin*], [
+ AS_IF([test x"$enable_shared" = xyes], [
+ LIBRUBY_SO='cyg$(RUBY_SO_NAME)'.dll
+ LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)'
+ ])
+ ],
+ [mingw*], [
+ AS_IF([test x"$enable_shared" = xyes], [
+ LIBRUBY_SO='$(RUBY_SO_NAME)'.dll
+ LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)'
+ ])
+ EXPORT_PREFIX=' '
+ EXTDLDFLAGS='$(DEFFILE)'
+ AC_LIBOBJ([win32/win32])
+ AC_LIBOBJ([win32/file])
+ COMMON_LIBS=m
+# COMMON_MACROS="WIN32_LEAN_AND_MEAN="
+ COMMON_HEADERS="winsock2.h windows.h"
+ PLATFORM_DIR=win32
+ ])
+ LIBRUBY_ALIASES=''
+ FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in
+ AS_IF([test x"$enable_shared" = xyes], [
+ LIBRUBY='lib$(RUBY_SO_NAME).dll.a'
+ ], [
+ LIBRUBY_SO=dummy
+ LIBRUBY='lib$(RUBY_SO_NAME).a'
+ LIBRUBYARG='-l$(RUBY_SO_NAME)'
+ ])
+ ],
+ [wasi*], [
+ FIRSTMAKEFILE=GNUmakefile:wasm/GNUmakefile.in
+ AC_LIBOBJ([wasm/missing])
+ AC_LIBOBJ([wasm/runtime])
+ AC_LIBOBJ([wasm/fiber])
+ AC_LIBOBJ([wasm/machine])
+ AC_LIBOBJ([wasm/setjmp])
+ AC_LIBOBJ([wasm/machine_core])
+ AC_LIBOBJ([wasm/setjmp_core])
+ PLATFORM_DIR=wasm
+])
+
+MINIOBJS="$MINIDLNOBJ"
+
+AC_ARG_ENABLE(debug-env,
+ AS_HELP_STRING([--enable-debug-env], [enable RUBY_DEBUG environment variable]),
+ [AC_SUBST(ENABLE_DEBUG_ENV, yes)])
+
+AS_CASE(["$FIRSTMAKEFILE"], [*GNUmakefile:*], [gnumake=yes], [
+ AC_MSG_CHECKING([if ${MAKE-make} is GNU make])
+ mkdir conftest.dir
+ echo "all:; @echo yes" > conftest.dir/GNUmakefile
+ echo "all:; @echo no" > conftest.dir/Makefile
+ gnumake=`(cd conftest.dir; ${MAKE-make})`
+ rm -fr conftest.dir
+ AS_CASE(["$gnumake"],
+ [*yes*], [
+ FIRSTMAKEFILE=GNUmakefile:template/GNUmakefile.in
+ gnumake=yes],
+ [
+ gnumake=no])
+ AC_MSG_RESULT($gnumake)
+])
+AS_IF([test "$gnumake" = yes], [ NULLCMD=: ], [
+ AC_MSG_CHECKING([for safe null command for ${MAKE-make}])
+ mkdir conftest.dir
+ NULLCMD=
+ for cmd in : true; do
+ echo 'A=1' > conftest.dir/Makefile
+ echo 'B=$(A:1=@'$cmd')' >> conftest.dir/Makefile
+ echo 'all:; $B 1 2 3 4 5 6 7 8 9' >> conftest.dir/Makefile
+ AS_IF([(cd conftest.dir; ${MAKE-make} >/dev/null 2>/dev/null)], [
+ NULLCMD=$cmd
+ break
+ ])
+ done
+ rm -fr conftest.dir
+ AS_IF([test -z "$NULLCMD"], [
+ AC_MSG_ERROR(no candidate for safe null command)
+ ])
+ AC_MSG_RESULT($NULLCMD)
+])
+AC_SUBST(NULLCMD)
+
+AS_IF([test "${universal_binary-no}" = yes ], [
+ AC_CACHE_CHECK([for architecture macros], rb_cv_architecture_macros, [
+ mv confdefs.h confdefs1.h
+ : > confdefs.h
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@if defined __`echo ${universal_archnames} |
+ sed 's/=[^ ]*//g;s/ /__ || defined __/g'`__
+@%:@else
+@%:@error
+>>>>>><<<<<<
+@%:@endif]], [[]])],[
+ rb_cv_architecture_macros=yes
+ mv -f confdefs1.h confdefs.h
+], [
+ rb_cv_architecture_macros=no
+ archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'`
+ new_cflags=`echo "$CFLAGS" | sed "s|$archflagpat"'||'`
+ for archs in ${universal_archnames}; do
+ cpu=${archs@%:@*=}
+ archs=${archs%=*}
+ CFLAGS="$new_cflags -arch $archs"
+ archs="__${archs}__"
+ AC_MSG_CHECKING([for macro ${archs} on ${cpu}])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@ifndef ${archs}
+@%:@error
+@%:@endif]], [[]])],
+ [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
+ done
+ mv -f confdefs1.h confdefs.h
+ AC_MSG_ERROR([failed])
+ ])])
+ AC_CACHE_CHECK(whether __ARCHITECTURE__ is available, rb_cv_architecture_available,
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <stdio.h>
+ const char arch[[]] = __ARCHITECTURE__;]], [[puts(arch);]])],
+ [rb_cv_architecture_available=yes], [rb_cv_architecture_available=no]))
+])
+
+: ${MJIT_LDSHARED=`echo "$LDSHARED" | sed ['s|\$(LD)|'"${LD}"'|g;s|\$(CC)|$(MJIT_CC)|g']`}
+
+MAINLIBS="$LIBS"
+LIBS=$ORIG_LIBS
+AS_IF([test -n "${LIBS}"], [
+ libspat=`echo "${LIBS}" | sed 's/[[][|.*$^]]/\\&/g;s/^ */ /;s/^ *$/ /'`
+ MAINFLAGS=`echo " $MAINLIBS " | sed "s|$libspat"'||;s/^ *//;s/ *$//'`
+])
+LIBRUBYARG_STATIC="${LIBRUBYARG_STATIC} \$(MAINLIBS)"
+CPPFLAGS="$CPPFLAGS "'$(DEFS)'
+test -z "$CPPFLAGS" || CPPFLAGS="$CPPFLAGS "; CPPFLAGS="$CPPFLAGS"'${cppflags}'
+AS_IF([test -n "${cflags+set}"], [
+ cflagspat=`eval echo '"'"${cflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/^ *$/ /'`
+ CFLAGS=`echo " $CFLAGS " | sed "s|$cflagspat"'|${cflags}|;s/^ *//;s/ *$//'`
+])
+AS_IF([test -n "${cxxflags+set}"], [
+ cxxflagspat=`eval echo '"'"${cxxflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/^ *$/ /'`
+ CXXFLAGS=`echo " $CXXFLAGS " | sed "s|$cxxflagspat"'|${cxxflags}|;s/^ *//;s/ *$//'`
+])
+AS_IF([test "${ARCH_FLAG}"], [
+ archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'`
+ CFLAGS=`echo "$CFLAGS" | sed "s| *$archflagpat"'||'`
+ CXXFLAGS=`echo "$CXXFLAGS" | sed "s| *$archflagpat"'||'`
+ LDFLAGS=`echo "$LDFLAGS" | sed "s| *$archflagpat"'||'`
+])
+rb_cv_warnflags=`echo "$rb_cv_warnflags" | sed 's/^ *//;s/ *$//'`
+warnflags="$rb_cv_warnflags"
+AC_SUBST(cppflags)dnl
+AC_SUBST(cflags, ["${orig_cflags:+$orig_cflags }"'${optflags} ${debugflags} ${warnflags}'])dnl
+AC_SUBST(cxxflags)dnl
+AC_SUBST(optflags)dnl
+AC_SUBST(debugflags)dnl
+AC_SUBST(warnflags)dnl
+AC_SUBST(strict_warnflags)dnl
+AC_SUBST(XCFLAGS)dnl
+AC_SUBST(XLDFLAGS)dnl
+AC_SUBST(EXTLDFLAGS)dnl
+AC_SUBST(EXTDLDFLAGS)dnl
+AC_SUBST(LIBRUBY_LDSHARED)
+AC_SUBST(LIBRUBY_DLDFLAGS)
+AC_SUBST(RUBY_INSTALL_NAME)
+AC_SUBST(rubyw_install_name)
+AC_SUBST(RUBYW_INSTALL_NAME)
+AC_SUBST(RUBY_SO_NAME)
+AC_SUBST(LIBRUBY_A)
+AC_SUBST(LIBRUBY_SO)
+AC_SUBST(LIBRUBY_SONAME)
+AC_SUBST(LIBRUBY_ALIASES)
+AC_SUBST(LIBRUBY)
+AC_SUBST(LIBRUBYARG)
+AC_SUBST(LIBRUBYARG_STATIC)
+AC_SUBST(LIBRUBYARG_SHARED)
+AC_SUBST(SOLIBS)
+AC_SUBST(DLDLIBS)
+AC_SUBST(DLDSHARED)
+AC_SUBST(ENABLE_SHARED)
+AC_SUBST(MAINLIBS)
+AC_SUBST(COMMON_LIBS)
+AC_SUBST(COMMON_MACROS)
+AC_SUBST(COMMON_HEADERS)
+AC_SUBST(EXPORT_PREFIX)
+AC_SUBST(SYMBOL_PREFIX)
+AC_SUBST(MINIOBJS)
+AC_SUBST(THREAD_MODEL)
+AC_SUBST(COROUTINE_TYPE, ${coroutine_type})
+AC_SUBST(PLATFORM_DIR)
+
+firstmf=`echo $FIRSTMAKEFILE | sed 's/:.*//'`
+firsttmpl=`echo $FIRSTMAKEFILE | sed 's/.*://'`
+MAKEFILES="Makefile $firstmf"
+MAKEFILES="`echo $MAKEFILES`"
+AC_SUBST(MAKEFILES)
+
+ri_prefix=
+test "$program_prefix" != NONE &&
+ ri_prefix=$program_prefix
+
+ri_suffix=
+test "$program_suffix" != NONE &&
+ ri_suffix=$program_suffix
+
+RUBY_INSTALL_NAME="${ri_prefix}"'$(RUBY_BASE_NAME)'"${ri_suffix}"
+AS_CASE(["$target_os"],
+ [cygwin*|msys*|mingw*], [
+ RUBYW_INSTALL_NAME="${ri_prefix}"'$(RUBYW_BASE_NAME)'"${ri_suffix}"
+ rubyw_install_name='$(RUBYW_INSTALL_NAME)'
+ ])
+
+rubylibdir='${rubylibprefix}/${ruby_version}'
+rubyarchdir=${multiarch+'${rubyarchprefix}/${ruby_version}'}${multiarch-'${rubylibdir}/${arch}'}
+
+rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
+AC_ARG_WITH(rubyarchprefix,
+ AS_HELP_STRING([--with-rubyarchprefix=DIR],
+ [prefix for architecture dependent ruby libraries [[RUBYLIBPREFIX/ARCH]]]),
+ [rubyarchprefix="$withval"])
+AC_SUBST(rubyarchprefix)
+
+rubysitearchprefix=${multiarch+'${sitearchlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${sitearch}'}
+AC_ARG_WITH(rubysitearchprefix,
+ AS_HELP_STRING([--with-rubysitearchprefix=DIR],
+ [prefix for architecture dependent site libraries [[RUBYLIBPREFIX/SITEARCH]]]),
+ [rubysitearchprefix="$withval"])
+AC_SUBST(rubysitearchprefix)
+
+RI_BASE_NAME=`echo ${RUBY_BASE_NAME} | sed 's/ruby/ri/'`
+ridir='${datarootdir}/${RI_BASE_NAME}'
+AC_ARG_WITH(ridir,
+ AS_HELP_STRING([--with-ridir=DIR], [ri documentation [[DATAROOTDIR/ri]]]),
+ [ridir=$withval])
+AC_SUBST(ridir)
+AC_SUBST(RI_BASE_NAME)
+
+AC_ARG_WITH(ruby-version,
+ AS_HELP_STRING([--with-ruby-version=STR], [ruby version string for version specific directories [[full]] (full|minor|STR)]),
+ [ruby_version=$withval],
+ [ruby_version=full])
+unset RUBY_LIB_VERSION
+unset RUBY_LIB_VERSION_STYLE
+AS_CASE(["$ruby_version"],
+ [full], [RUBY_LIB_VERSION_STYLE='3 /* full */'],
+ [minor], [RUBY_LIB_VERSION_STYLE='2 /* minor */'])
+AS_IF([test ${RUBY_LIB_VERSION_STYLE+set}], [
+ {
+ echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
+ echo '@%:@include "confdefs.h"'
+ echo '#define STRINGIZE(x) x'
+ test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
+ echo '#include "version.h"'
+ echo 'ruby_version=RUBY_LIB_VERSION'
+ } > conftest.c
+ ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`"
+ eval $ruby_version
+], [test -z "${ruby_version}"], [
+ AC_MSG_ERROR([No ruby version, No place for bundled libraries])
+], [
+ RUBY_LIB_VERSION="${ruby_version}"
+])
+AC_SUBST(RUBY_LIB_VERSION_STYLE)
+AC_SUBST(RUBY_LIB_VERSION)
+
+AC_ARG_WITH(sitedir,
+ AS_HELP_STRING([--with-sitedir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]], "no" to disable site directory]),
+ [sitedir=$withval],
+ [sitedir='${rubylibprefix}/site_ruby'])
+sitelibdir='${sitedir}/${ruby_version}'
+
+AC_ARG_WITH(sitearchdir,
+ AS_HELP_STRING([--with-sitearchdir=DIR],
+ [architecture dependent site libraries in DIR [[SITEDIR/SITEARCH]], "no" to disable site directory]),
+ [sitearchdir=$withval],
+ [sitearchdir=${multiarch+'${rubysitearchprefix}/site_ruby/${ruby_version}'}${multiarch-'${sitelibdir}/${sitearch}'}])
+
+AC_ARG_WITH(vendordir,
+ AS_HELP_STRING([--with-vendordir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]], "no" to disable vendor directory]),
+ [vendordir=$withval],
+ [vendordir='${rubylibprefix}/vendor_ruby'])
+vendorlibdir='${vendordir}/${ruby_version}'
+
+AC_ARG_WITH(vendorarchdir,
+ AS_HELP_STRING([--with-vendorarchdir=DIR],
+ [architecture dependent vendor libraries in DIR [[VENDORDIR/SITEARCH]], "no" to disable vendor directory]),
+ [vendorarchdir=$withval],
+ [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby/${ruby_version}'}${multiarch-'${vendorlibdir}/${sitearch}'}])
+
+AS_IF([test "${LOAD_RELATIVE+set}"], [
+ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
+ RUBY_EXEC_PREFIX=''
+])
+
+AC_SUBST(RUBY_EXEC_PREFIX)
+
+AC_SUBST(libdirname, ${multiarch+arch}libdir)
+AC_SUBST(archlibdir)dnl
+AC_SUBST(sitearchlibdir)dnl
+AC_SUBST(archincludedir)dnl
+AC_SUBST(sitearchincludedir)dnl
+AC_SUBST(arch)dnl
+AC_SUBST(sitearch)dnl
+AC_SUBST(ruby_version)dnl
+AC_SUBST(rubylibdir)dnl
+AC_SUBST(rubyarchdir)dnl
+AC_SUBST(sitedir)dnl
+AC_SUBST(sitelibdir)dnl
+AC_SUBST(sitearchdir)dnl
+AC_SUBST(vendordir)dnl
+AC_SUBST(vendorlibdir)dnl
+AC_SUBST(vendorarchdir)dnl
+
+AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
+AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
+
+AS_IF([test "${universal_binary-no}" = yes ], [
+ arch="universal-${target_os}"
+ AS_IF([test "${rb_cv_architecture_available}" = yes], [
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM_CPU, __ARCHITECTURE__)
+ ], [
+ for archs in ${universal_archnames}; do
+ cpu=`echo $archs | sed 's/.*=//'`
+ archs=`echo $archs | sed 's/=.*//'`
+ RUBY_DEFINE_IF([defined __${archs}__ &&! defined RUBY_PLATFORM_CPU], RUBY_PLATFORM_CPU, ["${cpu}"])
+ done
+ ])
+ ints='long int short'
+ test "$ac_cv_type_long_long" = yes && ints="'long long' $ints"
+ AC_SUBST(UNIVERSAL_ARCHNAMES, "${universal_archnames}")
+ AC_SUBST(UNIVERSAL_INTS, "${ints}")
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM_OS, "${target_os}")
+ AC_DEFINE_UNQUOTED(RUBY_ARCH, "universal-" RUBY_PLATFORM_OS)
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "universal." RUBY_PLATFORM_CPU "-" RUBY_PLATFORM_OS)
+], [
+ AS_IF([test "${target_os}-${rb_cv_msvcrt}" = "mingw32-ucrt" ], [
+ arch="${target_cpu}-mingw-ucrt"
+ ], [
+ arch="${target_cpu}-${target_os}"
+ ])
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "$arch")
+])
+
+unset sitearch
+AS_CASE(["$target_os"],[mingw*],[sitearch="$target_cpu-$rb_cv_msvcrt"])
+: ${sitearch='${arch}'}
+
+AC_ARG_WITH(search-path,
+ AS_HELP_STRING([--with-search-path=DIR], [specify the additional search path]),
+ [search_path=$withval])
+AS_IF([test "$search_path" != ""], [
+ AC_SUBST(RUBY_SEARCH_PATH, $search_path)
+])
+
+AC_ARG_WITH(rubyhdrdir,
+ AS_HELP_STRING([--with-rubyhdrdir=DIR], [core headers in DIR [[INCLUDEDIR/RUBY_BASE_NAME-RUBY_VERSION]]]),
+ [rubyhdrdir=$withval],
+ [rubyhdrdir='${includedir}/${RUBY_VERSION_NAME}'])
+
+AC_ARG_WITH(rubyarchhdrdir,
+ AS_HELP_STRING([--with-rubyarchhdrdir=DIR],
+ [architecture dependent core headers in DIR [[$(rubyhdrdir)/$(arch)]]]),
+ [rubyarchhdrdir=$withval],
+ [rubyarchhdrdir=${multiarch+'${archincludedir}/${RUBY_VERSION_NAME}'}${multiarch-'${rubyhdrdir}/${arch}'}])
+
+AC_ARG_WITH(sitehdrdir,
+ AS_HELP_STRING([--with-sitehdrdir=DIR], [core site headers in DIR [[RUBYHDRDIR/site_ruby]]]),
+ [sitehdrdir=$withval],
+ [sitehdrdir='${rubyhdrdir}/site_ruby'])
+
+AC_ARG_WITH(sitearchhdrdir,
+ AS_HELP_STRING([--with-sitearchhdrdir=DIR],
+ [architecture dependent core site headers in DIR [[RUBYHDRDIR/site_ruby]]]),
+ [sitearchhdrdir=$withval],
+ [sitearchhdrdir=${multiarch+'${sitearchincludedir}/${RUBY_VERSION_NAME}/site_ruby'}${multiarch-'${sitehdrdir}/${sitearch}'}])
+
+AC_ARG_WITH(vendorhdrdir,
+ AS_HELP_STRING([--with-vendorhdrdir=DIR], [core vendor headers in DIR [[RUBYHDRDIR/vendor_ruby]]]),
+ [vendorhdrdir=$withval],
+ [vendorhdrdir='${rubyhdrdir}/vendor_ruby'])
+
+AC_ARG_WITH(vendorarchhdrdir,
+ AS_HELP_STRING([--with-vendorarchhdrdir=DIR],
+ [architecture dependent core vendor headers in DIR [[RUBYHDRDIR/vendor_ruby]]]),
+ [vendorarchhdrdir=$withval],
+ [vendorarchhdrdir=${multiarch+'${sitearchincludedir}/${RUBY_VERSION_NAME}/vendor_ruby'}${multiarch-'${vendorhdrdir}/${sitearch}'}])
+
+AC_SUBST(rubyhdrdir)dnl
+AC_SUBST(sitehdrdir)dnl
+AC_SUBST(vendorhdrdir)dnl
+AC_SUBST(rubyarchhdrdir)dnl
+AC_SUBST(sitearchhdrdir)dnl
+AC_SUBST(vendorarchhdrdir)dnl
+
+AC_ARG_WITH(mantype,
+ AS_HELP_STRING([--with-mantype=TYPE], [specify man page type; TYPE is one of man and doc]),
+ [
+ AS_CASE(["$withval"],
+ [man|man.gz|man.bz2|doc|doc.gz|doc.bz2], [MANTYPE=$withval],
+ [AC_MSG_ERROR(invalid man type: $withval)])
+ ])
+AS_IF([test -z "$MANTYPE"], [
+ dnl Looks for nroff with -mdoc support.
+ AC_CACHE_VAL([ac_cv_path_NROFF], [
+ AC_PATH_PROGS_FEATURE_CHECK([NROFF],
+ [nroff awf mandoc],
+ [$ac_path_NROFF -mdoc ${srcdir}/man/ruby.1 \
+ >/dev/null 2>&1 &&
+ ac_cv_path_NROFF=$ac_path_NROFF \
+ ac_path_NROFF_found=:],
+ [], ["/usr/bin:/usr/ucb"]
+ )
+ ])
+ AS_IF([test -n "$ac_cv_path_NROFF"], [
+ MANTYPE=doc
+ ], [
+ MANTYPE=man
+ ])
+])
+AC_SUBST(MANTYPE)
+
+MKMF_VERBOSE=0
+AC_ARG_ENABLE(mkmf-verbose,
+ AS_HELP_STRING([--enable-mkmf-verbose], [enable verbose in mkmf]),
+ [MKMF_VERBOSE=1],
+ [MKMF_VERBOSE=0])
+AC_SUBST(MKMF_VERBOSE)
+
+AC_ARG_ENABLE(rubygems,
+ AS_HELP_STRING([--disable-rubygems], [disable rubygems by default]),
+ [enable_rubygems="$enableval"], [enable_rubygems=yes])
+AS_IF([test x"$enable_rubygems" = xno], [
+ USE_RUBYGEMS=no
+], [
+ USE_RUBYGEMS=yes
+])
+AC_SUBST(USE_RUBYGEMS)
+
+arch_hdrdir="${EXTOUT}/include/${arch}/ruby"
+AS_MKDIR_P("${arch_hdrdir}")
+config_h="${arch_hdrdir}/config.h"
+guard=INCLUDE_RUBY_CONFIG_H
+{
+ echo "#ifndef $guard"
+ echo "#define $guard 1"
+ grep -v "^#define PACKAGE_" confdefs.h
+ echo "#endif /* $guard */"
+} | tr -d '\015' |
+(
+ AS_IF([test "x$CONFIGURE_TTY" = xyes], [color=--color], [color=])
+ exec ${SHELL} ${tooldir}/ifchange $color "${config_h}" -
+) >&AS_MESSAGE_FD || AC_MSG_ERROR([failed to create ${config_h}])
+tr -d '\015' < largefile.h > confdefs.h
+rm largefile.h
+
+BUILTIN_ENCS=["`sed -n -e '/^BUILTIN_ENCS[ ]*=/{' \
+ -e s/// -e :l -e '/\\\\$/N' -e 's/\\\\\\n/ /' -e 't l' -e p \
+ -e '}' "${srcdir}/enc/Makefile.in"`"]
+BUILTIN_ENCOBJS=
+for e in $BUILTIN_ENCS; do BUILTIN_ENCOBJS="$BUILTIN_ENCOBJS "`echo $e | sed 's/\.c$/.$(OBJEXT)/'`; done
+AC_SUBST(BUILTIN_ENCOBJS)
+
+BUILTIN_TRANSES=["`sed -n -e '/^BUILTIN_TRANSES[ ]*=/{' \
+ -e s/// -e :l -e '/\\\\$/N' -e 's/\\\\\\n/ /' -e 't l' -e p \
+ -e '}' "${srcdir}/enc/Makefile.in"`"]
+BUILTIN_TRANSSRCS=
+BUILTIN_TRANSOBJS=
+for e in $BUILTIN_TRANSES; do
+ BUILTIN_TRANSSRCS="$BUILTIN_TRANSSRCS "`echo $e | sed 's/\.trans$/.c/'`
+ BUILTIN_TRANSOBJS="$BUILTIN_TRANSOBJS "`echo $e | sed 's/\.trans$/.$(OBJEXT)/'`
+done
+AC_SUBST(BUILTIN_TRANSSRCS)
+AC_SUBST(BUILTIN_TRANSOBJS)
+
+PACKAGE=$RUBY_BASE_NAME
+AC_SUBST(PACKAGE)
+AS_MESSAGE([$PACKAGE library version = $ruby_version])
+
+AS_IF([test x"$CC_WRAPPER" != x], [
+ CC='$(CC_WRAPPER) '"${CC@%:@$CC_WRAPPER }"
+ CPP='$(CC_WRAPPER) '"${CPP@%:@$CC_WRAPPER }"
+ XCC_WRAPPER="$CC_WRAPPER"
+])
+AC_SUBST(CC_WRAPPER, '')
+AC_SUBST(XCC_WRAPPER)
+
+AS_CASE([" $CPP "], [*" $CC "*], [CPP=`echo " $CPP " | sed "s| $CC |"' $(CC) |;s/^ *//;s/ *$//'`])
+
+AS_IF([test ! -f "$srcdir/revision.h"], [
+ AS_IF([test "x$HAVE_BASERUBY" = xyes], [
+ ${BASERUBY} -C "$srcdir" tool/file2lastrev.rb -q --revision.h > "$srcdir/revision.h"
+ ], [
+ touch "$srcdir/revision.h"
+ ])
+])
+
+AS_IF([test x"$firstmf" != x], [
+ AC_CONFIG_FILES($firstmf:$firsttmpl, [], [firstmf="$firstmf" firsttmpl="$firsttmpl"])
+])
+AC_CONFIG_FILES(Makefile:template/Makefile.in, [
+ tmpmk=confmk$$.tmp
+ {
+ AS_IF([test ${VCS+set}], [
+ :
+ ], [git_dir=`$GIT --work-tree="$srcdir" --git-dir="$srcdir/.git" rev-parse --git-dir 2>/dev/null`], [
+ VCS='$(GIT)'
+ ], [
+ VCS='echo cannot'
+ ])
+ AS_CASE("$VCS",
+ ['$(GIT)'|git], [VCSUP='$(VCS) pull --rebase $(GITPULLOPTIONS)'],
+ [VCSUP='$(VCS)'])
+ for f in "$srcdir/version.h" "$srcdir/revision.h"; do
+ test -f "$f" || continue
+ sed -n \
+ -e '[/^@%:@define \(RUBY_RELEASE_[A-Z]*\) \([0-9][0-9]*\)/]{' \
+ -e 's//\1 = \2/' \
+ -e '[s/ \([0-9]\)$/ 0\1/]' \
+ -e p \
+ -e '}' "$f"
+ done
+ sed '/^MISSING/s/\$U\././g;/^VCS *=/s#@VCS@#'"$VCS"'#;/^VCSUP *=/s#@VCSUP@#'"$VCSUP"'#' Makefile
+ echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
+ AS_IF([test "$gnumake" != yes], [
+ echo ['$(MKFILES): $(srcdir)/common.mk']
+ sed ['s/{\$([^(){}]*)[^{}]*}//g'] ${srcdir}/common.mk
+ AS_IF([test "$YJIT_SUPPORT" = yes], [
+ cat ${srcdir}/yjit/not_gmake.mk
+ echo ['$(MKFILES): ${srcdir}/yjit/not_gmake.mk']
+ ])
+ ], [
+ echo 'distclean-local::; @$(RM) GNUmakefile uncommon.mk'
+ ])
+ } > $tmpmk && AS_IF([! grep '^ruby:' $tmpmk > /dev/null], [
+ AS_IF([test "${gnumake}" = yes], [
+ tmpgmk=confgmk$$.tmp
+ {
+ echo "include $tmpmk"
+ echo "-include uncommon.mk"
+ } > $tmpgmk
+ ], [
+ tmpgmk=$tmpmk
+ ]) &&
+ test -z "`${MAKE-make} -f $tmpgmk info-program | grep '^PROGRAM=ruby$'`" &&
+ echo 'ruby: $(PROGRAM);' >> $tmpmk
+ test "$tmpmk" = "$tmpgmk" || rm -f "$tmpgmk"
+ ]) && mv -f $tmpmk Makefile],
+[EXEEXT='$EXEEXT' MAKE='${MAKE-make}' gnumake='$gnumake' GIT='$GIT' YJIT_SUPPORT='$YJIT_SUPPORT'])
+
+AC_ARG_WITH([ruby-pc],
+ AS_HELP_STRING([--with-ruby-pc=FILENAME], [pc file basename]),
+ [ruby_pc="$withval"],
+ [ruby_pc="${RUBY_BASE_NAME}-${MAJOR}.${MINOR}.pc"])
+AC_SUBST(ruby_pc)
+AC_SUBST(exec, [exec])
+
+AC_ARG_WITH(destdir,
+ AS_HELP_STRING([--with-destdir=DESTDIR], [specify default directory to install]),
+ [DESTDIR="$withval"])
+AC_SUBST(DESTDIR)
+
+AC_OUTPUT
+}
+}
+
+AS_IF([test "$silent" = yes], [], [
+AS_IF([${FOLD+:} false], [], [
+AS_IF([test "`echo abcdefg hijklmno | fold -s -w10 | sed 1d`" = hijklmno], [FOLD="fold"], [FOLD=])
+])
+fold_width=`expr $COLUMNS - 30 2>/dev/null` || fold_width=50
+AS_REQUIRE_SHELL_FN([config_summary],
+ [AS_FUNCTION_DESCRIBE([config_summary], [NAME, VAL], [configuration summary])],
+ [AS_IF([test -z "$2"], [], [
+ AS_ECHO_N([" * $1: "]) | dd bs=1 count=26 2>/dev/null
+ AS_IF([test "$FOLD"], [
+ echo "$2" | fold -s -w$fold_width |
+ sed '1!s/^/ /;$!s/$/\\/'
+ ], [echo "$2"])
+ ])]
+)
+
+AS_IF([test $install_doc = yes],
+ [DOCTARGETS=`echo " $RDOCTARGET $CAPITARGET " | sed 's/ nodoc //g;s/^ *//;s/ *$//'`],
+ [DOCTARGETS=no])
+echo "---"
+echo "Configuration summary for $RUBY_BASE_NAME version $MAJOR.$MINOR.$TEENY"
+echo ""
+config_summary "Installation prefix" "$prefix"
+config_summary "exec prefix" "$exec_prefix"
+config_summary "arch" "$arch"
+config_summary "site arch" "$sitearch"
+config_summary "RUBY_BASE_NAME" "$RUBY_BASE_NAME"
+config_summary "enable shared" "$enable_shared"
+config_summary "ruby lib prefix" "$rubylibprefix"
+config_summary "site libraries path" "$rubysitearchprefix"
+config_summary "vendor path" "$vendordir"
+config_summary "target OS" "$target_os"
+config_summary "compiler" "$CC"
+config_summary "with thread" "$THREAD_MODEL"
+config_summary "with coroutine" "$coroutine_type"
+config_summary "enable shared libs" "$ENABLE_SHARED"
+config_summary "dynamic library ext" "$DLEXT"
+config_summary "CFLAGS" "$cflags"
+config_summary "CPPFLAGS" "$cppflags"
+config_summary "LDFLAGS" "$LDFLAGS"
+config_summary "DLDFLAGS" "$DLDFLAGS"
+config_summary "optflags" "$optflags"
+config_summary "debugflags" "$debugflags"
+config_summary "warnflags" "$warnflags"
+config_summary "strip command" "$STRIP"
+config_summary "install doc" "$DOCTARGETS"
+config_summary "MJIT support" "$MJIT_SUPPORT"
+config_summary "YJIT support" "$YJIT_SUPPORT"
+config_summary "man page type" "$MANTYPE"
+config_summary "search path" "$search_path"
+config_summary "static-linked-ext" ${EXTSTATIC:+"yes"}
+config_summary "BASERUBY -v" "$BASERUBY_VERSION"
+echo ""
+echo "---"
+])
diff --git a/configure.in b/configure.in
deleted file mode 100644
index 806e0869cf..0000000000
--- a/configure.in
+++ /dev/null
@@ -1,965 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(ruby.h)
-
-rb_version=`grep RUBY_VERSION $srcdir/version.h`
-MAJOR=`expr "$rb_version" : '#define RUBY_VERSION "\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*"'`
-MINOR=`expr "$rb_version" : '#define RUBY_VERSION "[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*"'`
-TEENY=`expr "$rb_version" : '#define RUBY_VERSION "[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\)"'`
-AC_SUBST(MAJOR)
-AC_SUBST(MINOR)
-AC_SUBST(TEENY)
-dnl checks for alternative programs
-AC_ARG_WITH(gcc, [--without-gcc never use gcc], [
- case $withval in
- no) CC=cc
- without_gcc=yes;;
- yes) CC=gcc
- without_gcc=no;;
- *) CC=$withval
- without_gcc=$withval;;
- esac], [without_gcc=no])
-dnl If the user switches compilers, we can't believe the cache
-if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
-then
- AC_ERROR(cached CC is different -- throw away $cache_file
-(it is also a good idea to do 'make clean' before compiling))
-fi
-
-AC_CANONICAL_HOST
-AC_CANONICAL_TARGET
-AC_CANONICAL_BUILD
-
-dnl checks for fat-binary
-fat_binary=no
-AC_ARG_ENABLE(fat-binary,
- [--enable-fat-binary build a NeXT/Apple Multi Architecture Binary. ],
- [fat_binary=$enableval])
- if test "$fat_binary" = yes ; then
-
- AC_MSG_CHECKING(target architecture)
-
- case "$target_os" in
- rhapsody*)
- echo -n "MacOS X Server: "
- if test "$TARGET_ARCHS" = "" ; then
- TARGET_ARCHS="ppc i386"
- fi
- ;;
- nextstep*|openstep*)
- echo -n "NeXTSTEP/OPENSTEP: "
- if test "$TARGET_ARCHS" = "" ; then
- if test `/usr/bin/arch` = "m68k" ; then
- TARGET_ARCHS="m68k i486"
- else # Black and Native one
- TARGET_ARCHS="m68k `/usr/bin/arch`"
- fi
- fi
- # to ensure AC_HEADER_SYS_WAIT works
- AC_DEFINE(_POSIX_SOURCE)
- ;;
- macos*|darwin*)
- echo -n "MacOS X (Darwin): "
- if test "$TARGET_ARCHS" = "" ; then
- TARGET_ARCHS="ppc i386"
- fi
- ;;
- esac
- # /usr/lib/arch_tool -archify_list $TARGET_ARCHS
- for archs in $TARGET_ARCHS
- do
- ARCH_FLAG="$ARCH_FLAG -arch $archs "
- echo -n " $archs"
- done
- AC_DEFINE(NEXT_FAT_BINARY)
- echo "."
-fi
-
-AC_ARG_PROGRAM
-
-dnl Checks for programs.
-
-if test x"${build}" != x"${host}"; then
- AC_CHECK_TOOL(CC, gcc)
-fi
-AC_PROG_CC
-AC_PROG_GCC_TRADITIONAL
-
-AC_PROG_YACC
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-AC_CHECK_TOOL(AR, ar)
-AC_CHECK_PROGS(AR, ar aal, ar)
-
-case "$target_os" in
- cygwin*|mingw*)
- AC_CHECK_TOOL(NM, nm)
- AC_CHECK_TOOL(DLLWRAP, dllwrap)
- AC_CHECK_TOOL(AS, as)
- AC_CHECK_TOOL(DLLTOOL, dlltool)
- AC_CHECK_TOOL(WINDRES, windres)
- ;;
-esac
-
-AC_PROG_LN_S
-AC_PROG_MAKE_SET
-
-# checks for UNIX variants that set C preprocessor variables
-AC_AIX
-AC_MINIX
-
-AC_EXEEXT
-AC_OBJEXT
-
-AC_CHECK_SIZEOF(int, 4)
-AC_CHECK_SIZEOF(short, 2)
-AC_CHECK_SIZEOF(long, 4)
-AC_CHECK_SIZEOF(void*, 4)
-AC_CHECK_SIZEOF(float, 4)
-AC_CHECK_SIZEOF(double, 8)
-
-AC_CACHE_CHECK(for prototypes, rb_cv_have_prototypes,
- [AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],
- rb_cv_have_prototypes=yes,
- rb_cv_have_prototypes=no)])
-if test "$rb_cv_have_prototypes" = yes; then
- AC_DEFINE(HAVE_PROTOTYPES)
-fi
-
-AC_CACHE_CHECK(token paste string, rb_cv_tokenpaste,
- [AC_TRY_COMPILE([#define paste(a,b) a##b],
- [int xy = 1; return paste(x,y);],
- rb_cv_tokenpaste=ansi,
- rb_cv_tokenpaste=knr)])
-if test "$rb_cv_tokenpaste" = ansi; then
- AC_DEFINE(TOKEN_PASTE(x,y),[x##y])
-else
- AC_DEFINE(TOKEN_PASTE(x,y),[x/**/y])
-fi
-
-AC_CACHE_CHECK(for variable length prototypes and stdarg.h, rb_cv_stdarg,
- [AC_TRY_COMPILE([
-#include <stdarg.h>
-int foo(int x, ...) {
- va_list va;
- va_start(va, x);
- va_arg(va, int);
- va_arg(va, char *);
- va_arg(va, double);
- return 0;
-}
-], [return foo(10, "", 3.14);],
- rb_cv_stdarg=yes,
- rb_cv_stdarg=no)])
-if test "$rb_cv_stdarg" = yes; then
- AC_DEFINE(HAVE_STDARG_PROTOTYPES)
-fi
-
-AC_CACHE_CHECK(for gcc attribute noreturn, rb_cv_have_attr_noreturn,
- [AC_TRY_COMPILE([void exit(int x) __attribute__ ((noreturn));], [],
- rb_cv_have_attr_noreturn=yes,
- rb_cv_have_attr_noreturn=no)])
-if test "$rb_cv_have_attr_noreturn" = yes; then
- AC_DEFINE(HAVE_ATTR_NORETURN)
-fi
-
-dnl Checks for libraries.
-case "$target_os" in
-nextstep*) ;;
-openstep*) ;;
-rhapsody*) ;;
-darwin*) LIBS="-lobjc $LIBS";;
-human*) ac_cv_func_getpgrp_void=yes;;
-beos*) ;;
-cygwin*) rb_cv_have_daylight=no;;
-mingw*) LIBS="-lwsock32 -lmsvcrt $LIBS"
- ac_cv_header_a_out_h=no
- ac_cv_header_pwd_h=no
- ac_cv_header_utime_h=no
- ac_cv_header_sys_ioctl_h=no
- ac_cv_header_sys_param_h=no
- ac_cv_header_sys_resource_h=no
- ac_cv_header_sys_select_h=no
- ac_cv_header_sys_times_h=no
- ac_cv_func_times=yes;;
-os2_emx*) LIBS="-lm $LIBS"
- ac_cv_lib_dir_opendir=no;;
-freebsd*) LIBS="-lm $LIBS"
- AC_CACHE_CHECK([whether -lxpg4 has to be linked],
- rb_cv_lib_xpg4_needed,
- [AC_TRY_CPP([
-#include <osreldate.h>
-#if __FreeBSD_version < 400020 || \
- (__FreeBSD_version >= 500000 && __FreeBSD_version < 500005)
-#error needs libxpg4
-#endif
- ],
- rb_cv_lib_xpg4_needed=no,
- rb_cv_lib_xpg4_needed=yes,
- rb_cv_lib_xpg4_needed=yes)])
- if test "$rb_cv_lib_xpg4_needed" = yes; then
- AC_CHECK_LIB(xpg4, setlocale)
- fi
- ;;
-*) LIBS="-lm $LIBS";;
-esac
-AC_CHECK_LIB(crypt, crypt)
-AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
-AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
-
-dnl Checks for header files.
-AC_HEADER_DIRENT
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(stdlib.h string.h unistd.h limits.h sys/file.h sys/ioctl.h\
- fcntl.h sys/fcntl.h sys/select.h sys/time.h sys/times.h sys/param.h\
- syscall.h pwd.h a.out.h utime.h memory.h direct.h sys/resource.h)
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_TYPE_UID_T
-AC_TYPE_SIZE_T
-AC_STRUCT_ST_BLKSIZE
-save_LIBOJBS="$LIBOBJS"
-AC_STRUCT_ST_BLOCKS
-LIBOBJS="$save_LIBOBJS"
-AC_STRUCT_ST_RDEV
-
-dnl Checks for library functions.
-AC_TYPE_GETGROUPS
-AC_TYPE_SIGNAL
-AC_FUNC_ALLOCA
-AC_FUNC_VFORK
-AC_FUNC_MEMCMP
-AC_REPLACE_FUNCS(dup2 memmove mkdir strcasecmp strncasecmp strerror strftime\
- strchr strstr strtoul crypt flock vsnprintf\
- isinf isnan finite)
-AC_CHECK_FUNCS(fmod killpg drand48 random wait4 waitpid syscall getcwd chroot\
- truncate chsize times utimes fcntl lockf lstat symlink readlink\
- setitimer setruid seteuid setreuid setrgid setegid setregid pause\
- getpgrp setpgrp getpgid setpgid getgroups getpriority getrlimit\
- dlopen sigprocmask sigaction _setjmp setsid telldir seekdir)
-AC_STRUCT_TIMEZONE
-AC_CACHE_CHECK(for external int daylight, rb_cv_have_daylight,
- [AC_TRY_LINK([#include <time.h>
- int i;],
- [i = daylight;],
- rb_cv_have_daylight=yes,
- rb_cv_have_daylight=no)])
-if test "$rb_cv_have_daylight" = yes; then
- AC_DEFINE(HAVE_DAYLIGHT)
-fi
-
-if test "$ac_cv_func_sigprocmask" = yes && test "$ac_cv_func_sigaction" = yes; then
- AC_DEFINE(POSIX_SIGNAL)
-else
- AC_CACHE_CHECK(for BSD signal semantics, rb_cv_bsd_signal,
- [AC_TRY_RUN([
-#include <stdio.h>
-#include <signal.h>
-
-void
-sig_handler(dummy)
- int dummy;
-{
-}
-
-int
-main()
-{
- signal(SIGINT, sig_handler);
- kill(getpid(), SIGINT);
- kill(getpid(), SIGINT);
- return 0;
-}
-],
- rb_cv_bsd_signal=yes,
- rb_cv_bsd_signal=no,
- rb_cv_bsd_signal=no)])
- if test "$rb_cv_bsd_signal" = yes; then
- AC_DEFINE(BSD_SIGNAL)
- fi
-fi
-
-AC_FUNC_GETPGRP
-AC_FUNC_SETPGRP
-
-AC_CACHE_CHECK(for working strtod, rb_cv_func_strtod,
-[AC_TRY_RUN([
-double strtod ();
-int
-main()
-{
- {
- /* Some versions of Linux strtod mis-parse strings with leading '+'. */
- char *string = " +69";
- char *term;
- double value;
- value = strtod(string, &term);
- if (value != 69 || term != (string + 4))
- exit(1);
- }
-
- {
- /* Under Solaris 2.4, strtod returns the wrong value for the
- terminating character under some conditions. */
- char *string = "NaN";
- char *term;
- strtod(string, &term);
- if (term != string && *(term - 1) == 0)
- exit(1);
- }
- exit(0);
-}
-], rb_cv_func_strtod=yes, rb_cv_func_strtod=no, rb_cv_func_strtod=no)])
-test $rb_cv_func_strtod = no && LIBOBJS="$LIBOBJS strtod.o"
-
-AC_C_BIGENDIAN
-AC_C_CONST
-AC_C_CHAR_UNSIGNED
-
-AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign,
- [AC_TRY_RUN([
-int
-main()
-{
- if (-1==(-1>>1))
- return 0;
- return 1;
-}
-],
- rb_cv_rshift_sign=yes,
- rb_cv_rshift_sign=no,
- rb_cv_rshift_sign=yes)])
-if test "$rb_cv_rshift_sign" = yes; then
- AC_DEFINE(RSHIFT(x,y), ((x)>>(int)y))
-else
- AC_DEFINE(RSHIFT(x,y), (((x)<0) ? ~((~(x))>>y) : (x)>>y))
-fi
-
-AC_MSG_CHECKING(count field in FILE structures)
-AC_CACHE_VAL(rb_cv_fcnt,
-[AC_TRY_COMPILE([#include <stdio.h>],
- [FILE *f = stdin; f->_cnt = 0;], rb_cv_fcnt="_cnt", )
-if test "$rb_cv_fcnt" = ""; then
- AC_TRY_COMPILE([#include <stdio.h>],
- [FILE *f = stdin; f->__cnt = 0;], rb_cv_fcnt="__cnt", )
-fi
-if test "$rb_cv_fcnt" = ""; then
- AC_TRY_COMPILE([#include <stdio.h>],
- [FILE *f = stdin; f->_r = 0;], rb_cv_fcnt="_r", )
-fi
-if test "$rb_cv_fcnt" = ""; then
- AC_TRY_COMPILE([#include <stdio.h>],
- [FILE *f = stdin; f->readCount = 0;],
- rb_cv_fcnt="readCount", )
-fi
-dnl for emx0.9c
-if test "$rb_cv_fcnt" = ""; then
- AC_TRY_COMPILE([#include <stdio.h>],
- [FILE *f = stdin; f->_rcount = 0;],
- rb_cv_fcnt="_rcount", rb_cv_fcnt="not found")
-fi])
-if test "$rb_cv_fcnt" = "not found"; then
- AC_MSG_RESULT([not found(OK if using GNU libc)])
-else
- AC_MSG_RESULT($rb_cv_fcnt)
- AC_DEFINE_UNQUOTED(FILE_COUNT, $rb_cv_fcnt)
-fi
-
-dnl default value for $KANJI
-DEFAULT_KCODE="KCODE_NONE"
-
-AC_ARG_WITH(default-kcode,
- [--with-default-kcode=CODE specify default value for \$KCODE (utf8|euc|sjis|none)],
- [case $withval in
- utf8) DEFAULT_KCODE="KCODE_UTF8";;
- euc) DEFAULT_KCODE="KCODE_EUC";;
- sjis) DEFAULT_KCODE="KCODE_SJIS";;
- none) DEFAULT_KCODE="KCODE_NONE";;
- *) AC_MSG_WARN($withval is not valid kcode; ignored);;
- esac])
-AC_DEFINE_UNQUOTED(DEFAULT_KCODE, $DEFAULT_KCODE)
-
-dnl wheather use dln_a_out ot not
-AC_ARG_WITH(dln-a-out,
- [--with-dln-a-out use dln_a_out if possible], [
- case $withval in
- yes) with_dln_a_out=yes;;
- *) with_dln_a_out=no;;
- esac], [with_dln_a_out=no])
-
-AC_SUBST(XLDFLAGS)dnl
-
-AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf,
-[AC_TRY_RUN([
-/* Test for whether ELF binaries are produced */
-#include <fcntl.h>
-#include <stdlib.h>
-main() {
- char buffer[4];
- int i=open("conftest",O_RDONLY);
- if(i==-1)
- exit(1); /* fail */
- if(read(i,&buffer[0],4)<4)
- exit(1); /* fail */
- if(buffer[0] != 127 || buffer[1] != 'E' ||
- buffer[2] != 'L' || buffer[3] != 'F')
- exit(1); /* fail */
- exit(0); /* succeed (yes, it's ELF) */
-}
-],
-rb_cv_binary_elf=yes,
-rb_cv_binary_elf=no,
-rb_cv_binary_elf=yes)])
-
-if test "$rb_cv_binary_elf" = yes; then
- AC_DEFINE(USE_ELF)
-fi
-
-case "$target_os" in
- linux*)
- if test "$rb_cv_binary_elf" = no; then
- with_dln_a_out=yes
- target_os=${target_os}-a_out
- else
- LDFLAGS="-rdynamic"
- fi;;
-netbsd*)
- if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
- then
- netbsd_elf=yes
- else
- netbsd_elf=no
- fi
- ;;
-esac
-
-AC_SUBST(DLDFLAGS)dnl
-
-AC_SUBST(STATIC)dnl
-AC_SUBST(CCDLFLAGS)dnl
-AC_SUBST(LDSHARED)dnl
-AC_SUBST(DLEXT)dnl
-AC_SUBST(DLEXT2)dnl
-
-STATIC=
-
-if test "$with_dln_a_out" != yes; then
- rb_cv_dlopen=unknown
- AC_MSG_CHECKING(whether OS depend dynamic link works)
- if test "$GCC" = yes; then
- case "$target_os" in
- nextstep*) ;;
- openstep*) ;;
- rhapsody*) ;;
- darwin*) ;;
- human*) ;;
- bsdi*) ;;
- beos*) ;;
- cygwin*) ;;
- mingw*) ;;
- netbsd*) CCDLFLAGS=-fpic
- case "$target_cpu" in
- mips*) CCDLFLAGS=-fPIC ;;
- sparc) CCDLFLAGS=-fPIC ;;
- *) ;;
- esac ;;
- *) CCDLFLAGS=-fPIC;;
- esac
- else
- case "$target_os" in
- hpux*) CCDLFLAGS='+z';;
- solaris*|irix*) CCDLFLAGS='-KPIC' ;;
- sunos*) CCDLFLAGS='-PIC' ;;
- esix*|uxpds*) CCDLFLAGS='-KPIC' ;;
- *) CCDLFLAGS='' ;;
- esac
- fi
-
- case "$target_os" in
- hpux*) DLDFLAGS="-E"
- LDSHARED='ld -b'
- LDFLAGS="-Wl,-E"
- rb_cv_dlopen=yes;;
- solaris*) if test "$GCC" = yes; then
- LDSHARED='$(CC) -Wl,-G'
- `$CC --print-prog-name=ld` -v 2>&1 | grep "GNU ld" > /dev/null && LDFLAGS="-Wl,-E"
- else
- LDSHARED='ld -G'
- fi
- rb_cv_dlopen=yes;;
- sunos*) LDSHARED='ld -assert nodefinitions'
- rb_cv_dlopen=yes;;
- irix*) LDSHARED='ld -shared'
- rb_cv_dlopen=yes;;
- sysv4*) LDSHARED='ld -G'
- rb_cv_dlopen=yes;;
- esix*|uxpds*) LDSHARED="ld -G"
- rb_cv_dlopen=yes ;;
- osf*) LDSHARED="$CC -shared"
- rb_cv_dlopen=yes ;;
- linux*) LDSHARED="$CC -shared"
- rb_cv_dlopen=yes ;;
- freebsd*) LDSHARED="$CC -shared"
- if test "$rb_cv_binary_elf" = yes; then
- LDFLAGS="-rdynamic"
- DLDFLAGS='-Wl,-soname,$(.TARGET)'
- else
- test "$GCC" = yes && `$CC --print-prog-name=ld` -v 2>&1 | grep "GNU ld" > /dev/null || LDSHARED="ld -Bshareable"
- fi
- rb_cv_dlopen=yes ;;
- netbsd*) LDSHARED="ld -shared"
- if test "$rb_cv_binary_elf" = yes; then
- LDFLAGS="-export-dynamic"
- fi
- rb_cv_dlopen=yes ;;
- openbsd*) LDSHARED="ld -Bforcearchive -Bshareable"
- rb_cv_dlopen=yes ;;
- bsdi3*) case "$CC" in
- *shlicc*) LDSHARED="$CC -r"
- rb_cv_dlopen=yes ;;
- esac ;;
- bsdi*) LDSHARED="ld -shared"
- LDFLAGS='-rdynamic -Wl,-rpath,$(prefix)/lib/ruby/$(MAJOR).$(MINOR)/i386-bsdi4.0'
- rb_cv_dlopen=yes ;;
- nextstep*) LDSHARED='cc -r -nostdlib'
- LDFLAGS="-u libsys_s"
- DLDFLAGS="$ARCH_FLAG"
- rb_cv_dlopen=yes ;;
- openstep*) LDSHARED='cc -dynamic -bundle -undefined suppress'
- LDFLAGS=""
- DLDFLAGS="$ARCH_FLAG"
- rb_cv_dlopen=yes ;;
- rhapsody*) LDSHARED='cc -dynamic -bundle -undefined suppress'
- LDFLAGS=""
- DLDFLAGS="$ARCH_FLAG"
- rb_cv_dlopen=yes ;;
- darwin*) LDSHARED='cc -dynamic -bundle -undefined suppress'
- LDFLAGS=""
- DLDFLAGS="$ARCH_FLAG"
- rb_cv_dlopen=yes ;;
- aix*) LDSHARED='/usr/ccs/bin/ld'
- XLDFLAGS='-Wl,-bE:ruby.imp'
- DLDFLAGS='-brtl -eInit_$(TARGET) -bI:$(topdir)/ruby.imp -bM:SRE -T512 -H512 -lc'
- LDFLAGS="-brtl"
- rb_cv_dlopen=yes ;;
-
- human*) DLDFLAGS=''
- LDSHARED=''
- LDFLAGS=''
- rb_cv_dlopen=yes ;;
- beos*) case "$target_cpu" in
- powerpc*)
- LDSHARED="ld -xms"
- DLDFLAGS='-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
- ;;
- i586*)
- LDSHARED="ld -shared"
- DLDFLAGS="-L/boot/develop/lib/x86 -lbe -lroot"
- ;;
- esac
- rb_cv_dlopen=yes ;;
- cygwin*|mingw*) : ${LDSHARED="${DLLWRAP} --target=${target_os} --as=${AS} --dlltool-name=${DLLTOOL} --driver-name=${CC} --export-all -s"}
- rb_cv_dlopen=yes ;;
- *) LDSHARED='ld' ;;
- esac
- AC_MSG_RESULT($rb_cv_dlopen)
-fi
-
-dln_a_out_works=no
-if test "$ac_cv_header_a_out_h" = yes; then
- if test "$with_dln_a_out" = yes || test "$rb_cv_dlopen" = unknown; then
- cat confdefs.h > config.h
- AC_CACHE_CHECK(whether matz's dln works, rb_cv_dln_a_out,
- [AC_TRY_COMPILE([
-#define USE_DLN_A_OUT
-#include "dln.c"
-],
- [],
- rb_cv_dln_a_out=yes,
- rb_cv_dln_a_out=no)])
- if test "$rb_cv_dln_a_out" = yes; then
- dln_a_out_works=yes
- AC_DEFINE(USE_DLN_A_OUT)
- fi
- fi
-fi
-
-if test "$dln_a_out_works" = yes; then
- if test "$GCC" = yes; then
- STATIC=-static
- else
- STATIC=-Bstatic
- fi
- DLEXT=so
- AC_DEFINE(DLEXT, ".so")
- CCDLFLAGS=
-else
- case "$target_os" in
- hpux*) DLEXT=sl
- AC_DEFINE(DLEXT, ".sl");;
- nextstep*) DLEXT=bundle
- AC_DEFINE(DLEXT, ".bundle");;
- openstep*) DLEXT=bundle
- AC_DEFINE(DLEXT, ".bundle");;
- rhapsody*) DLEXT=bundle
- AC_DEFINE(DLEXT, ".bundle");;
- darwin*) DLEXT=bundle
- AC_DEFINE(DLEXT, ".bundle");;
- os2_emx*) DLEXT=dll
- AC_DEFINE(DLEXT, ".dll");;
- cygwin*|mingw*) DLEXT=so
- AC_DEFINE(DLEXT, ".so")
- DLEXT2=dll
- AC_DEFINE(DLEXT2, ".dll");;
- *) DLEXT=so
- AC_DEFINE(DLEXT, ".so");;
- esac
-fi
-
-AC_SUBST(STRIP)dnl
-if test "$with_dln_a_out" = yes; then
- STRIP=true
-else
- STRIP=strip
-fi
-
-case "$target_os" in
- linux*)
- STRIP='strip -S -x';;
- nextstep*)
- STRIP='strip -A -n';;
- openstep*)
- STRIP='strip -A -n';;
- rhapsody*)
- STRIP='strip -A -n';;
- darwin*)
- STRIP='strip -A -n';;
-esac
-
-EXTSTATIC=
-AC_SUBST(EXTSTATIC)dnl
-AC_ARG_WITH(static-linked-ext,
- [--with-static-linked-ext link external modules statically],
- [case $withval in
- yes) STATIC=
- EXTSTATIC=static;;
- *) ;;
- esac])
-
-case "$target_os" in
- human*)
- AC_CHECK_LIB(signal, _harderr)
- AC_CHECK_LIB(hmem, hmemset)
- AC_CHECK_FUNCS(select gettimeofday)
- AC_CACHE_CHECK(whether PD libc _dtos18 fail to convert big number,
- rb_cv_missing__dtos18,
- [AC_TRY_RUN(
-changequote(<<, >>)dnl
-<<
-#include <stdio.h>
-main ()
-{
- char buf[256];
- sprintf (buf, "%g", 1e+300);
- exit (strcmp (buf, "1e+300") ? 0 : 1);
-}
->>,
-changequote([, ])dnl
-rb_cv_missing__dtos18=yes, rb_cv_missing__dtos18=no, rb_cv_missing__dtos18=no)])
- if test "$rb_cv_missing__dtos18" = yes; then
- AC_DEFINE(MISSING__DTOS18)
- fi
- AC_CACHE_CHECK(whether PD libc fconvert fail to round,
- rb_cv_missing_fconvert,
- [AC_TRY_RUN(
-changequote(<<, >>)dnl
-<<
-#include <stdio.h>
-#include <math.h>
-main ()
-{
- char buf[256];
- sprintf (buf, "%f", log(exp(1.0)));
- exit (strcmp (buf, "1.000000") ? 0 : 1);
-}
->>,
-changequote([, ])dnl
-rb_cv_missing_fconvert=yes, rb_cv_missing_fconvert=no, rb_cv_missing_fconvert=no)])
- if test "$rb_cv_missing_fconvert" = yes; then
- AC_DEFINE(MISSING_FCONVERT)
- fi
- LIBOBJS="$LIBOBJS x68.o"
- CFLAGS="$CFLAGS -fansi-only -cc1-stack=262144 -cpp-stack=2694144"
- EXEEXT=.x
- OBJEXT=o
- setup=Setup.x68
- ;;
- dnl OS/2 environment w/ Autoconf 2.1x for EMX
- os2_emx)
- LIBOBJS="$LIBOBJS os2.$OBJEXT"
- setup=Setup.emx
- ;;
- *djgpp*)
- setup=Setup.dj
- ;;
- *)
- setup=Setup
- ;;
-esac
-
-AC_SUBST(setup)
-
-if test "$prefix" = NONE; then
- prefix=$ac_default_prefix
-fi
-
-if test "$fat_binary" = yes ; then
- CFLAGS="$CFLAGS $ARCH_FLAG"
-fi
-
-if test x"$cross_compiling" = xyes; then
- MINIRUBY="ruby -I`pwd` -rfake"
- PREP=fake.rb
-else
- MINIRUBY='./miniruby$(EXEEXT)'
- PREP=''
-fi
-AC_SUBST(MINIRUBY)
-AC_SUBST(PREP)
-
-FIRSTMAKEFILE=""
-LIBRUBY_A='lib$(RUBY_INSTALL_NAME).a'
-LIBRUBY='$(LIBRUBY_A)'
-LIBRUBYARG='$(LIBRUBY_A)'
-SOLIBS=
-
-case "$target_os" in
- cygwin*|mingw*|beos*|openstep*|nextstep*|rhapsody*|darwin*|os2_emx*)
- DLDLIBS=""
- ;;
- *)
- DLDLIBS="-lc"
- ;;
-esac
-
-LIBRUBY_LDSHARED=$LDSHARED
-LIBRUBY_DLDFLAGS=$DLDFLAGS
-LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).so.$(MAJOR).$(MINOR).$(TEENY)'
-LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).so'
-ENABLE_SHARED=no
-
-AC_ARG_ENABLE(enable-shared,
- [--enable-shared build a shared library for Ruby. ],
- [enable_shared=$enableval])
-if test "$enable_shared" = 'yes'; then
- LIBRUBY='$(LIBRUBY_SO)'
- LIBRUBYARG='-L. -l$(RUBY_INSTALL_NAME)'
- CFLAGS="$CFLAGS $CCDLFLAGS"
- ENABLE_SHARED=yes
- case "$target_os" in
- sunos4*)
- LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_INSTALL_NAME).so'
- ;;
- linux*)
- LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_INSTALL_NAME).so.$(MAJOR).$(MINOR)'
- LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_INSTALL_NAME).so'
- ;;
- freebsd*)
- LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).so.$(MAJOR)$(MINOR)'
- if test "$rb_cv_binary_elf" != "yes" ; then
- LIBRUBY_SO="$LIBRUBY_SO.\$(TEENY)"
- LIBRUBY_ALIASES=''
- fi
- ;;
- netbsd*)
- LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).so.$(MAJOR).$(MINOR)'
- if test "$rb_cv_binary_elf" = yes; then # ELF platforms
- LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).so.$(MAJOR) lib$(RUBY_INSTALL_NAME).so'
- else
- LIBRUBY_ALIASES= # a.out platforms
- fi
- ;;
- solaris*)
- XLDFLAGS='-R${prefix}/lib'
- ;;
- hpux*)
- XLDFLAGS='-Wl,+s,+b,$(prefix)/lib'
- LIBRUBY_SO='lib$(RUBY_INSTALL_NAME).sl.$(MAJOR).$(MINOR).$(TEENY)'
- LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).sl.$(MAJOR).$(MINOR) lib$(RUBY_INSTALL_NAME).sl'
- ;;
- aix*)
- if test "$GCC" = yes; then
- LIBRUBY_LDSHARED='$(CC) -shared'
- LIBRUBY_DLDFLAGS='-Wl,-bE:ruby.imp'
- else
- LIBRUBY_LDSHARED='/usr/ccs/bin/ld'
- LIBRUBY_DLDFLAGS='-bE:ruby.imp -bM:SRE -bnoentry'
- fi
- LIBRUBYARG='-L${prefix}/lib -Wl,lib$(RUBY_INSTALL_NAME).so'
- SOLIBS='-lm -lc'
- ;;
- beos*)
- case "$target_cpu" in
- powerpc*)
- LIBRUBY_DLDFLAGS='-f ruby.exp -lnet -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
- ;;
- esac
- ;;
- *)
- ;;
- esac
-fi
-
-case "$target_os" in
- nextstep*)
- CFLAGS="$CFLAGS -pipe"
- ;;
- openstep*)
- CFLAGS="$CFLAGS -pipe"
- ;;
- rhapsody*)
- CFLAGS="$CFLAGS -pipe -no-precomp"
- ;;
- darwin*)
- CFLAGS="$CFLAGS -pipe -no-precomp"
- ;;
- os2_emx)
- CFLAGS="$CFLAGS -DOS2"
- ;;
- osf*)
- if test "$without_gcc" = "no" ; then
- CFLAGS="$CFLAGS -ansi"
- else
- # compile something small: taint.c is fine for this.
- # the main point is the '-v' flag of 'cc'.
- case "`cc -v -I. -c main.c -o /tmp/main.o 2>&1`" in
- */gemc_cc*) # we have the new DEC GEM CC
- CFLAGS="$CFLAGS -oldc"
- ;;
- *) # we have the old MIPS CC
- ;;
- esac
- # cleanup
- rm -f /tmp/main.o
- CFLAGS="$CFLAGS -std"
- fi
- ;;
- beos*)
- case "$target_cpu" in
- powerpc*)
- CFLAGS="$CFLAGS -relax_pointers"
- ;;
- esac
- ;;
- cygwin*|mingw*)
- RUBY_SO_NAME=$target_os-'$(RUBY_INSTALL_NAME)'${MAJOR}${MINOR}
- if test x"$enable_shared" = xyes; then
- LIBRUBY_SO='$(RUBY_SO_NAME)'.dll
- LIBRUBY_DLDFLAGS='--dllname=$@ --output-lib=$(LIBRUBY) --add-stdcall-alias --def=$(RUBYDEF)'
- else
- LIBRUBY_SO=dummy
- LIBRUBY_DLDFLAGS='--output-exp=$(RUBY_INSTALL_NAME).exp --dllname=$(RUBY_INSTALL_NAME)$(EXEEXT) --output-lib=$(LIBRUBY) --add-stdcall-alias --def=$(RUBYDEF)'
- fi
- LIBRUBY_ALIASES=''
- LIBRUBY_A='lib$(RUBY_INSTALL_NAME)s.a'
- LIBRUBY='lib$(RUBY_SO_NAME).a'
- LIBRUBYARG='-L. -l$(RUBY_SO_NAME)'
- FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in
- SOLIBS='$(LIBS)'
- case "$target_os" in
- cygwin*)
- LIBOBJS="$LIBOBJS strftime.o"
- CCDLFLAGS=-DUSEIMPORTLIB ;;
- mingw*)
- LIBOBJS="$LIBOBJS win32.o"
- CFLAGS="-DNT -D__MSVCRT__ $CFLAGS"
- CCDLFLAGS=-DIMPORT ;;
- esac
- ;;
- *)
- ;;
-esac
-
-AC_SUBST(LIBRUBY_LDSHARED)
-AC_SUBST(LIBRUBY_DLDFLAGS)
-AC_SUBST(RUBY_INSTALL_NAME)
-AC_SUBST(RUBY_SO_NAME)
-AC_SUBST(LIBRUBY_A)
-AC_SUBST(LIBRUBY_SO)
-AC_SUBST(LIBRUBY_ALIASES)
-AC_SUBST(LIBRUBY)
-AC_SUBST(LIBRUBYARG)
-AC_SUBST(SOLIBS)
-AC_SUBST(DLDLIBS)
-AC_SUBST(ENABLE_SHARED)
-
-ri_prefix=
-test "$program_prefix" != NONE &&
- ri_prefix=$program_prefix
-
-ri_suffix=
-test "$program_suffix" != NONE &&
- ri_suffix=$program_suffix
-
-RUBY_INSTALL_NAME="${ri_prefix}ruby${ri_suffix}"
-case "$target_os" in
- cygwin*|mingw*|*djgpp*|os2_emx*)
- RUBY_LIB_PREFIX="/lib/ruby"
- ;;
- *)
- RUBY_LIB_PREFIX="${prefix}/lib/ruby"
- ;;
-esac
-RUBY_LIB_PATH="${RUBY_LIB_PREFIX}/${MAJOR}.${MINOR}"
-
-AC_ARG_WITH(sitedir,
- [--with-sitedir=DIR site libraries in DIR [PREFIX/lib/ruby/site_ruby]],
- [sitedir=$withval],
- [sitedir='${prefix}/lib/ruby/site_ruby'])
-SITE_DIR="`eval \"echo ${sitedir}\"`"
-case "$target_os" in
- cygwin*|mingw*|*djgpp*|os2_emx*)
- RUBY_SITE_LIB_PATH="`expr "$SITE_DIR" : "$prefix\(/.*\)"`" ||
- RUBY_SITE_LIB_PATH="$SITE_DIR";;
- *)
- RUBY_SITE_LIB_PATH="$SITE_DIR";;
-esac
-RUBY_SITE_LIB_PATH2="${RUBY_SITE_LIB_PATH}/${MAJOR}.${MINOR}"
-
-AC_DEFINE_UNQUOTED(RUBY_LIB, "${RUBY_LIB_PATH}")
-AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, "${RUBY_SITE_LIB_PATH}")
-AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, "${RUBY_SITE_LIB_PATH2}")
-
-AC_SUBST(arch)dnl
-AC_SUBST(sitedir)dnl
-
-configure_args=$ac_configure_args
-AC_SUBST(configure_args)dnl
-
-if test "$fat_binary" = yes ; then
- arch="fat-${target_os}"
-
- AC_DEFINE_UNQUOTED(RUBY_THIN_ARCHLIB,
- "${RUBY_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}")
-
- AC_DEFINE_UNQUOTED(RUBY_SITE_THIN_ARCHLIB,
- "${RUBY_SITE_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}")
- AC_DEFINE_UNQUOTED(RUBY_PLATFORM, __ARCHITECTURE__ "-${target_os}")
-else
- arch="${target_cpu}-${target_os}"
- AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "${arch}")
-fi
-
-AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH}/${arch}")
-AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH2}/${arch}")
-
-AC_ARG_WITH(search-path,
- [--with-search-path=DIR specify the additional search path],
- [search_path=$withval])
-if test "$search_path" != ""; then
- AC_DEFINE_UNQUOTED(RUBY_SEARCH_PATH,"$search_path")
-fi
-
-echo "creating config.h"
-tr -d '\015' < confdefs.h > config.h
-
-AC_OUTPUT($FIRSTMAKEFILE Makefile ext/extmk.rb)
diff --git a/constant.h b/constant.h
new file mode 100644
index 0000000000..e0d36909e1
--- /dev/null
+++ b/constant.h
@@ -0,0 +1,55 @@
+#ifndef CONSTANT_H
+#define CONSTANT_H
+/**********************************************************************
+
+ constant.h -
+
+ $Author$
+ created at: Sun Nov 15 00:09:33 2009
+
+ Copyright (C) 2009 Yusuke Endoh
+
+**********************************************************************/
+#include "ruby/ruby.h"
+#include "id_table.h"
+
+typedef enum {
+ CONST_DEPRECATED = 0x100,
+
+ CONST_VISIBILITY_MASK = 0xff,
+ CONST_PUBLIC = 0x00,
+ CONST_PRIVATE,
+ CONST_VISIBILITY_MAX
+} rb_const_flag_t;
+
+#define RB_CONST_PRIVATE_P(ce) \
+ (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PRIVATE)
+#define RB_CONST_PUBLIC_P(ce) \
+ (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PUBLIC)
+
+#define RB_CONST_DEPRECATED_P(ce) \
+ ((ce)->flag & CONST_DEPRECATED)
+
+typedef struct rb_const_entry_struct {
+ rb_const_flag_t flag;
+ int line;
+ VALUE value; /* should be mark */
+ VALUE file; /* should be mark */
+} rb_const_entry_t;
+
+VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj);
+VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj);
+VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj);
+void rb_free_const_table(struct rb_id_table *tbl);
+VALUE rb_const_source_location(VALUE, ID);
+
+MJIT_SYMBOL_EXPORT_BEGIN
+int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
+rb_const_entry_t *rb_const_lookup(VALUE klass, ID id);
+VALUE rb_public_const_get_at(VALUE klass, ID id);
+VALUE rb_public_const_get_from(VALUE klass, ID id);
+int rb_public_const_defined_from(VALUE klass, ID id);
+VALUE rb_const_source_location_at(VALUE, ID);
+MJIT_SYMBOL_EXPORT_END
+
+#endif /* CONSTANT_H */
diff --git a/cont.c b/cont.c
new file mode 100644
index 0000000000..5375d1945b
--- /dev/null
+++ b/cont.c
@@ -0,0 +1,3422 @@
+/**********************************************************************
+
+ cont.c -
+
+ $Author$
+ created at: Thu May 23 09:03:43 2007
+
+ Copyright (C) 2007 Koichi Sasada
+
+**********************************************************************/
+
+#include "ruby/internal/config.h"
+
+#ifndef _WIN32
+#include <unistd.h>
+#include <sys/mman.h>
+#endif
+
+// On Solaris, madvise() is NOT declared for SUS (XPG4v2) or later,
+// but MADV_* macros are defined when __EXTENSIONS__ is defined.
+#ifdef NEED_MADVICE_PROTOTYPE_USING_CADDR_T
+#include <sys/types.h>
+extern int madvise(caddr_t, size_t, int);
+#endif
+
+#include COROUTINE_H
+
+#include "eval_intern.h"
+#include "gc.h"
+#include "internal.h"
+#include "internal/cont.h"
+#include "internal/error.h"
+#include "internal/proc.h"
+#include "internal/sanitizers.h"
+#include "internal/warnings.h"
+#include "ruby/fiber/scheduler.h"
+#include "mjit.h"
+#include "yjit.h"
+#include "vm_core.h"
+#include "vm_sync.h"
+#include "id_table.h"
+#include "ractor_core.h"
+
+static const int DEBUG = 0;
+
+#define RB_PAGE_SIZE (pagesize)
+#define RB_PAGE_MASK (~(RB_PAGE_SIZE - 1))
+static long pagesize;
+
+static const rb_data_type_t cont_data_type, fiber_data_type;
+static VALUE rb_cContinuation;
+static VALUE rb_cFiber;
+static VALUE rb_eFiberError;
+#ifdef RB_EXPERIMENTAL_FIBER_POOL
+static VALUE rb_cFiberPool;
+#endif
+
+#define CAPTURE_JUST_VALID_VM_STACK 1
+
+// Defined in `coroutine/$arch/Context.h`:
+#ifdef COROUTINE_LIMITED_ADDRESS_SPACE
+#define FIBER_POOL_ALLOCATION_FREE
+#define FIBER_POOL_INITIAL_SIZE 8
+#define FIBER_POOL_ALLOCATION_MAXIMUM_SIZE 32
+#else
+#define FIBER_POOL_INITIAL_SIZE 32
+#define FIBER_POOL_ALLOCATION_MAXIMUM_SIZE 1024
+#endif
+#ifdef RB_EXPERIMENTAL_FIBER_POOL
+#define FIBER_POOL_ALLOCATION_FREE
+#endif
+
+#define jit_cont_enabled (mjit_enabled || rb_yjit_enabled_p())
+
+enum context_type {
+ CONTINUATION_CONTEXT = 0,
+ FIBER_CONTEXT = 1
+};
+
+struct cont_saved_vm_stack {
+ VALUE *ptr;
+#ifdef CAPTURE_JUST_VALID_VM_STACK
+ size_t slen; /* length of stack (head of ec->vm_stack) */
+ size_t clen; /* length of control frames (tail of ec->vm_stack) */
+#endif
+};
+
+struct fiber_pool;
+
+// Represents a single stack.
+struct fiber_pool_stack {
+ // A pointer to the memory allocation (lowest address) for the stack.
+ void * base;
+
+ // The current stack pointer, taking into account the direction of the stack.
+ void * current;
+
+ // The size of the stack excluding any guard pages.
+ size_t size;
+
+ // The available stack capacity w.r.t. the current stack offset.
+ size_t available;
+
+ // The pool this stack should be allocated from.
+ struct fiber_pool * pool;
+
+ // If the stack is allocated, the allocation it came from.
+ struct fiber_pool_allocation * allocation;
+};
+
+// A linked list of vacant (unused) stacks.
+// This structure is stored in the first page of a stack if it is not in use.
+// @sa fiber_pool_vacancy_pointer
+struct fiber_pool_vacancy {
+ // Details about the vacant stack:
+ struct fiber_pool_stack stack;
+
+ // The vacancy linked list.
+#ifdef FIBER_POOL_ALLOCATION_FREE
+ struct fiber_pool_vacancy * previous;
+#endif
+ struct fiber_pool_vacancy * next;
+};
+
+// Manages singly linked list of mapped regions of memory which contains 1 more more stack:
+//
+// base = +-------------------------------+-----------------------+ +
+// |VM Stack |VM Stack | | |
+// | | | | |
+// | | | | |
+// +-------------------------------+ | |
+// |Machine Stack |Machine Stack | | |
+// | | | | |
+// | | | | |
+// | | | . . . . | | size
+// | | | | |
+// | | | | |
+// | | | | |
+// | | | | |
+// | | | | |
+// +-------------------------------+ | |
+// |Guard Page |Guard Page | | |
+// +-------------------------------+-----------------------+ v
+//
+// +------------------------------------------------------->
+//
+// count
+//
+struct fiber_pool_allocation {
+ // A pointer to the memory mapped region.
+ void * base;
+
+ // The size of the individual stacks.
+ size_t size;
+
+ // The stride of individual stacks (including any guard pages or other accounting details).
+ size_t stride;
+
+ // The number of stacks that were allocated.
+ size_t count;
+
+#ifdef FIBER_POOL_ALLOCATION_FREE
+ // The number of stacks used in this allocation.
+ size_t used;
+#endif
+
+ struct fiber_pool * pool;
+
+ // The allocation linked list.
+#ifdef FIBER_POOL_ALLOCATION_FREE
+ struct fiber_pool_allocation * previous;
+#endif
+ struct fiber_pool_allocation * next;
+};
+
+// A fiber pool manages vacant stacks to reduce the overhead of creating fibers.
+struct fiber_pool {
+ // A singly-linked list of allocations which contain 1 or more stacks each.
+ struct fiber_pool_allocation * allocations;
+
+ // Provides O(1) stack "allocation":
+ struct fiber_pool_vacancy * vacancies;
+
+ // The size of the stack allocations (excluding any guard page).
+ size_t size;
+
+ // The total number of stacks that have been allocated in this pool.
+ size_t count;
+
+ // The initial number of stacks to allocate.
+ size_t initial_count;
+
+ // Whether to madvise(free) the stack or not:
+ int free_stacks;
+
+ // The number of stacks that have been used in this pool.
+ size_t used;
+
+ // The amount to allocate for the vm_stack:
+ size_t vm_stack_size;
+};
+
+// Continuation contexts used by JITs
+struct rb_jit_cont {
+ rb_execution_context_t *ec; // continuation ec
+ struct rb_jit_cont *prev, *next; // used to form lists
+};
+
+// Doubly linked list for enumerating all on-stack ISEQs.
+static struct rb_jit_cont *first_jit_cont;
+
+typedef struct rb_context_struct {
+ enum context_type type;
+ int argc;
+ int kw_splat;
+ VALUE self;
+ VALUE value;
+
+ struct cont_saved_vm_stack saved_vm_stack;
+
+ struct {
+ VALUE *stack;
+ VALUE *stack_src;
+ size_t stack_size;
+ } machine;
+ rb_execution_context_t saved_ec;
+ rb_jmpbuf_t jmpbuf;
+ rb_ensure_entry_t *ensure_array;
+ struct rb_jit_cont *jit_cont; // Continuation contexts for JITs
+} rb_context_t;
+
+
+/*
+ * Fiber status:
+ * [Fiber.new] ------> FIBER_CREATED
+ * | [Fiber#resume]
+ * v
+ * +--> FIBER_RESUMED ----+
+ * [Fiber#resume] | | [Fiber.yield] |
+ * | v |
+ * +-- FIBER_SUSPENDED | [Terminate]
+ * |
+ * FIBER_TERMINATED <-+
+ */
+enum fiber_status {
+ FIBER_CREATED,
+ FIBER_RESUMED,
+ FIBER_SUSPENDED,
+ FIBER_TERMINATED
+};
+
+#define FIBER_CREATED_P(fiber) ((fiber)->status == FIBER_CREATED)
+#define FIBER_RESUMED_P(fiber) ((fiber)->status == FIBER_RESUMED)
+#define FIBER_SUSPENDED_P(fiber) ((fiber)->status == FIBER_SUSPENDED)
+#define FIBER_TERMINATED_P(fiber) ((fiber)->status == FIBER_TERMINATED)
+#define FIBER_RUNNABLE_P(fiber) (FIBER_CREATED_P(fiber) || FIBER_SUSPENDED_P(fiber))
+
+struct rb_fiber_struct {
+ rb_context_t cont;
+ VALUE first_proc;
+ struct rb_fiber_struct *prev;
+ struct rb_fiber_struct *resuming_fiber;
+
+ BITFIELD(enum fiber_status, status, 2);
+ /* Whether the fiber is allowed to implicitly yield. */
+ unsigned int yielding : 1;
+ unsigned int blocking : 1;
+
+ struct coroutine_context context;
+ struct fiber_pool_stack stack;
+};
+
+static struct fiber_pool shared_fiber_pool = {NULL, NULL, 0, 0, 0, 0};
+
+static ID fiber_initialize_keywords[3] = {0};
+
+/*
+ * FreeBSD require a first (i.e. addr) argument of mmap(2) is not NULL
+ * if MAP_STACK is passed.
+ * https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=158755
+ */
+#if defined(MAP_STACK) && !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__)
+#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON | MAP_STACK)
+#else
+#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON)
+#endif
+
+#define ERRNOMSG strerror(errno)
+
+// Locates the stack vacancy details for the given stack.
+inline static struct fiber_pool_vacancy *
+fiber_pool_vacancy_pointer(void * base, size_t size)
+{
+ STACK_GROW_DIR_DETECTION;
+
+ return (struct fiber_pool_vacancy *)(
+ (char*)base + STACK_DIR_UPPER(0, size - RB_PAGE_SIZE)
+ );
+}
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+// Compute the base pointer for a vacant stack, for the area which can be poisoned.
+inline static void *
+fiber_pool_stack_poison_base(struct fiber_pool_stack * stack)
+{
+ STACK_GROW_DIR_DETECTION;
+
+ return (char*)stack->base + STACK_DIR_UPPER(RB_PAGE_SIZE, 0);
+}
+
+// Compute the size of the vacant stack, for the area that can be poisoned.
+inline static size_t
+fiber_pool_stack_poison_size(struct fiber_pool_stack * stack)
+{
+ return stack->size - RB_PAGE_SIZE;
+}
+#endif
+
+// Reset the current stack pointer and available size of the given stack.
+inline static void
+fiber_pool_stack_reset(struct fiber_pool_stack * stack)
+{
+ STACK_GROW_DIR_DETECTION;
+
+ stack->current = (char*)stack->base + STACK_DIR_UPPER(0, stack->size);
+ stack->available = stack->size;
+}
+
+// A pointer to the base of the current unused portion of the stack.
+inline static void *
+fiber_pool_stack_base(struct fiber_pool_stack * stack)
+{
+ STACK_GROW_DIR_DETECTION;
+
+ VM_ASSERT(stack->current);
+
+ return STACK_DIR_UPPER(stack->current, (char*)stack->current - stack->available);
+}
+
+// Allocate some memory from the stack. Used to allocate vm_stack inline with machine stack.
+// @sa fiber_initialize_coroutine
+inline static void *
+fiber_pool_stack_alloca(struct fiber_pool_stack * stack, size_t offset)
+{
+ STACK_GROW_DIR_DETECTION;
+
+ if (DEBUG) fprintf(stderr, "fiber_pool_stack_alloca(%p): %"PRIuSIZE"/%"PRIuSIZE"\n", (void*)stack, offset, stack->available);
+ VM_ASSERT(stack->available >= offset);
+
+ // The pointer to the memory being allocated:
+ void * pointer = STACK_DIR_UPPER(stack->current, (char*)stack->current - offset);
+
+ // Move the stack pointer:
+ stack->current = STACK_DIR_UPPER((char*)stack->current + offset, (char*)stack->current - offset);
+ stack->available -= offset;
+
+ return pointer;
+}
+
+// Reset the current stack pointer and available size of the given stack.
+inline static void
+fiber_pool_vacancy_reset(struct fiber_pool_vacancy * vacancy)
+{
+ fiber_pool_stack_reset(&vacancy->stack);
+
+ // Consume one page of the stack because it's used for the vacancy list:
+ fiber_pool_stack_alloca(&vacancy->stack, RB_PAGE_SIZE);
+}
+
+inline static struct fiber_pool_vacancy *
+fiber_pool_vacancy_push(struct fiber_pool_vacancy * vacancy, struct fiber_pool_vacancy * head)
+{
+ vacancy->next = head;
+
+#ifdef FIBER_POOL_ALLOCATION_FREE
+ if (head) {
+ head->previous = vacancy;
+ vacancy->previous = NULL;
+ }
+#endif
+
+ return vacancy;
+}
+
+#ifdef FIBER_POOL_ALLOCATION_FREE
+static void
+fiber_pool_vacancy_remove(struct fiber_pool_vacancy * vacancy)
+{
+ if (vacancy->next) {
+ vacancy->next->previous = vacancy->previous;
+ }
+
+ if (vacancy->previous) {
+ vacancy->previous->next = vacancy->next;
+ }
+ else {
+ // It's the head of the list:
+ vacancy->stack.pool->vacancies = vacancy->next;
+ }
+}
+
+inline static struct fiber_pool_vacancy *
+fiber_pool_vacancy_pop(struct fiber_pool * pool)
+{
+ struct fiber_pool_vacancy * vacancy = pool->vacancies;
+
+ if (vacancy) {
+ fiber_pool_vacancy_remove(vacancy);
+ }
+
+ return vacancy;
+}
+#else
+inline static struct fiber_pool_vacancy *
+fiber_pool_vacancy_pop(struct fiber_pool * pool)
+{
+ struct fiber_pool_vacancy * vacancy = pool->vacancies;
+
+ if (vacancy) {
+ pool->vacancies = vacancy->next;
+ }
+
+ return vacancy;
+}
+#endif
+
+// Initialize the vacant stack. The [base, size] allocation should not include the guard page.
+// @param base The pointer to the lowest address of the allocated memory.
+// @param size The size of the allocated memory.
+inline static struct fiber_pool_vacancy *
+fiber_pool_vacancy_initialize(struct fiber_pool * fiber_pool, struct fiber_pool_vacancy * vacancies, void * base, size_t size)
+{
+ struct fiber_pool_vacancy * vacancy = fiber_pool_vacancy_pointer(base, size);
+
+ vacancy->stack.base = base;
+ vacancy->stack.size = size;
+
+ fiber_pool_vacancy_reset(vacancy);
+
+ vacancy->stack.pool = fiber_pool;
+
+ return fiber_pool_vacancy_push(vacancy, vacancies);
+}
+
+// Allocate a maximum of count stacks, size given by stride.
+// @param count the number of stacks to allocate / were allocated.
+// @param stride the size of the individual stacks.
+// @return [void *] the allocated memory or NULL if allocation failed.
+inline static void *
+fiber_pool_allocate_memory(size_t * count, size_t stride)
+{
+ // We use a divide-by-2 strategy to try and allocate memory. We are trying
+ // to allocate `count` stacks. In normal situation, this won't fail. But
+ // if we ran out of address space, or we are allocating more memory than
+ // the system would allow (e.g. overcommit * physical memory + swap), we
+ // divide count by two and try again. This condition should only be
+ // encountered in edge cases, but we handle it here gracefully.
+ while (*count > 1) {
+#if defined(_WIN32)
+ void * base = VirtualAlloc(0, (*count)*stride, MEM_COMMIT, PAGE_READWRITE);
+
+ if (!base) {
+ *count = (*count) >> 1;
+ }
+ else {
+ return base;
+ }
+#else
+ errno = 0;
+ void * base = mmap(NULL, (*count)*stride, PROT_READ | PROT_WRITE, FIBER_STACK_FLAGS, -1, 0);
+
+ if (base == MAP_FAILED) {
+ // If the allocation fails, count = count / 2, and try again.
+ *count = (*count) >> 1;
+ }
+ else {
+#if defined(MADV_FREE_REUSE)
+ // On Mac MADV_FREE_REUSE is necessary for the task_info api
+ // to keep the accounting accurate as possible when a page is marked as reusable
+ // it can possibly not occurring at first call thus re-iterating if necessary.
+ while (madvise(base, (*count)*stride, MADV_FREE_REUSE) == -1 && errno == EAGAIN);
+#endif
+ return base;
+ }
+#endif
+ }
+
+ return NULL;
+}
+
+// Given an existing fiber pool, expand it by the specified number of stacks.
+// @param count the maximum number of stacks to allocate.
+// @return the allocated fiber pool.
+// @sa fiber_pool_allocation_free
+static struct fiber_pool_allocation *
+fiber_pool_expand(struct fiber_pool * fiber_pool, size_t count)
+{
+ STACK_GROW_DIR_DETECTION;
+
+ size_t size = fiber_pool->size;
+ size_t stride = size + RB_PAGE_SIZE;
+
+ // Allocate the memory required for the stacks:
+ void * base = fiber_pool_allocate_memory(&count, stride);
+
+ if (base == NULL) {
+ rb_raise(rb_eFiberError, "can't alloc machine stack to fiber (%"PRIuSIZE" x %"PRIuSIZE" bytes): %s", count, size, ERRNOMSG);
+ }
+
+ struct fiber_pool_vacancy * vacancies = fiber_pool->vacancies;
+ struct fiber_pool_allocation * allocation = RB_ALLOC(struct fiber_pool_allocation);
+
+ // Initialize fiber pool allocation:
+ allocation->base = base;
+ allocation->size = size;
+ allocation->stride = stride;
+ allocation->count = count;
+#ifdef FIBER_POOL_ALLOCATION_FREE
+ allocation->used = 0;
+#endif
+ allocation->pool = fiber_pool;
+
+ if (DEBUG) {
+ fprintf(stderr, "fiber_pool_expand(%"PRIuSIZE"): %p, %"PRIuSIZE"/%"PRIuSIZE" x [%"PRIuSIZE":%"PRIuSIZE"]\n",
+ count, (void*)fiber_pool, fiber_pool->used, fiber_pool->count, size, fiber_pool->vm_stack_size);
+ }
+
+ // Iterate over all stacks, initializing the vacancy list:
+ for (size_t i = 0; i < count; i += 1) {
+ void * base = (char*)allocation->base + (stride * i);
+ void * page = (char*)base + STACK_DIR_UPPER(size, 0);
+
+#if defined(_WIN32)
+ DWORD old_protect;
+
+ if (!VirtualProtect(page, RB_PAGE_SIZE, PAGE_READWRITE | PAGE_GUARD, &old_protect)) {
+ VirtualFree(allocation->base, 0, MEM_RELEASE);
+ rb_raise(rb_eFiberError, "can't set a guard page: %s", ERRNOMSG);
+ }
+#else
+ if (mprotect(page, RB_PAGE_SIZE, PROT_NONE) < 0) {
+ munmap(allocation->base, count*stride);
+ rb_raise(rb_eFiberError, "can't set a guard page: %s", ERRNOMSG);
+ }
+#endif
+
+ vacancies = fiber_pool_vacancy_initialize(
+ fiber_pool, vacancies,
+ (char*)base + STACK_DIR_UPPER(0, RB_PAGE_SIZE),
+ size
+ );
+
+#ifdef FIBER_POOL_ALLOCATION_FREE
+ vacancies->stack.allocation = allocation;
+#endif
+ }
+
+ // Insert the allocation into the head of the pool:
+ allocation->next = fiber_pool->allocations;
+
+#ifdef FIBER_POOL_ALLOCATION_FREE
+ if (allocation->next) {
+ allocation->next->previous = allocation;
+ }
+
+ allocation->previous = NULL;
+#endif
+
+ fiber_pool->allocations = allocation;
+ fiber_pool->vacancies = vacancies;
+ fiber_pool->count += count;
+
+ return allocation;
+}
+
+// Initialize the specified fiber pool with the given number of stacks.
+// @param vm_stack_size The size of the vm stack to allocate.
+static void
+fiber_pool_initialize(struct fiber_pool * fiber_pool, size_t size, size_t count, size_t vm_stack_size)
+{
+ VM_ASSERT(vm_stack_size < size);
+
+ fiber_pool->allocations = NULL;
+ fiber_pool->vacancies = NULL;
+ fiber_pool->size = ((size / RB_PAGE_SIZE) + 1) * RB_PAGE_SIZE;
+ fiber_pool->count = 0;
+ fiber_pool->initial_count = count;
+ fiber_pool->free_stacks = 1;
+ fiber_pool->used = 0;
+
+ fiber_pool->vm_stack_size = vm_stack_size;
+
+ fiber_pool_expand(fiber_pool, count);
+}
+
+#ifdef FIBER_POOL_ALLOCATION_FREE
+// Free the list of fiber pool allocations.
+static void
+fiber_pool_allocation_free(struct fiber_pool_allocation * allocation)
+{
+ STACK_GROW_DIR_DETECTION;
+
+ VM_ASSERT(allocation->used == 0);
+
+ if (DEBUG) fprintf(stderr, "fiber_pool_allocation_free: %p base=%p count=%"PRIuSIZE"\n", (void*)allocation, allocation->base, allocation->count);
+
+ size_t i;
+ for (i = 0; i < allocation->count; i += 1) {
+ void * base = (char*)allocation->base + (allocation->stride * i) + STACK_DIR_UPPER(0, RB_PAGE_SIZE);
+
+ struct fiber_pool_vacancy * vacancy = fiber_pool_vacancy_pointer(base, allocation->size);
+
+ // Pop the vacant stack off the free list:
+ fiber_pool_vacancy_remove(vacancy);
+ }
+
+#ifdef _WIN32
+ VirtualFree(allocation->base, 0, MEM_RELEASE);
+#else
+ munmap(allocation->base, allocation->stride * allocation->count);
+#endif
+
+ if (allocation->previous) {
+ allocation->previous->next = allocation->next;
+ }
+ else {
+ // We are the head of the list, so update the pool:
+ allocation->pool->allocations = allocation->next;
+ }
+
+ if (allocation->next) {
+ allocation->next->previous = allocation->previous;
+ }
+
+ allocation->pool->count -= allocation->count;
+
+ ruby_xfree(allocation);
+}
+#endif
+
+// Acquire a stack from the given fiber pool. If none are available, allocate more.
+static struct fiber_pool_stack
+fiber_pool_stack_acquire(struct fiber_pool * fiber_pool)
+{
+ struct fiber_pool_vacancy * vacancy = fiber_pool_vacancy_pop(fiber_pool);
+
+ if (DEBUG) fprintf(stderr, "fiber_pool_stack_acquire: %p used=%"PRIuSIZE"\n", (void*)fiber_pool->vacancies, fiber_pool->used);
+
+ if (!vacancy) {
+ const size_t maximum = FIBER_POOL_ALLOCATION_MAXIMUM_SIZE;
+ const size_t minimum = fiber_pool->initial_count;
+
+ size_t count = fiber_pool->count;
+ if (count > maximum) count = maximum;
+ if (count < minimum) count = minimum;
+
+ fiber_pool_expand(fiber_pool, count);
+
+ // The free list should now contain some stacks:
+ VM_ASSERT(fiber_pool->vacancies);
+
+ vacancy = fiber_pool_vacancy_pop(fiber_pool);
+ }
+
+ VM_ASSERT(vacancy);
+ VM_ASSERT(vacancy->stack.base);
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+ __asan_unpoison_memory_region(fiber_pool_stack_poison_base(&vacancy->stack), fiber_pool_stack_poison_size(&vacancy->stack));
+#endif
+
+ // Take the top item from the free list:
+ fiber_pool->used += 1;
+
+#ifdef FIBER_POOL_ALLOCATION_FREE
+ vacancy->stack.allocation->used += 1;
+#endif
+
+ fiber_pool_stack_reset(&vacancy->stack);
+
+ return vacancy->stack;
+}
+
+// We advise the operating system that the stack memory pages are no longer being used.
+// This introduce some performance overhead but allows system to relaim memory when there is pressure.
+static inline void
+fiber_pool_stack_free(struct fiber_pool_stack * stack)
+{
+ void * base = fiber_pool_stack_base(stack);
+ size_t size = stack->available;
+
+ // If this is not true, the vacancy information will almost certainly be destroyed:
+ VM_ASSERT(size <= (stack->size - RB_PAGE_SIZE));
+
+ if (DEBUG) fprintf(stderr, "fiber_pool_stack_free: %p+%"PRIuSIZE" [base=%p, size=%"PRIuSIZE"]\n", base, size, stack->base, stack->size);
+
+ // The pages being used by the stack can be returned back to the system.
+ // That doesn't change the page mapping, but it does allow the system to
+ // reclaim the physical memory.
+ // Since we no longer care about the data itself, we don't need to page
+ // out to disk, since that is costly. Not all systems support that, so
+ // we try our best to select the most efficient implementation.
+ // In addition, it's actually slightly desirable to not do anything here,
+ // but that results in higher memory usage.
+
+#ifdef __wasi__
+ // WebAssembly doesn't support madvise, so we just don't do anything.
+#elif VM_CHECK_MODE > 0 && defined(MADV_DONTNEED)
+ // This immediately discards the pages and the memory is reset to zero.
+ madvise(base, size, MADV_DONTNEED);
+#elif defined(MADV_FREE_REUSABLE)
+ // Darwin / macOS / iOS.
+ // Acknowledge the kernel down to the task info api we make this
+ // page reusable for future use.
+ // As for MADV_FREE_REUSE below we ensure in the rare occasions the task was not
+ // completed at the time of the call to re-iterate.
+ while (madvise(base, size, MADV_FREE_REUSABLE) == -1 && errno == EAGAIN);
+#elif defined(MADV_FREE)
+ // Recent Linux.
+ madvise(base, size, MADV_FREE);
+#elif defined(MADV_DONTNEED)
+ // Old Linux.
+ madvise(base, size, MADV_DONTNEED);
+#elif defined(POSIX_MADV_DONTNEED)
+ // Solaris?
+ posix_madvise(base, size, POSIX_MADV_DONTNEED);
+#elif defined(_WIN32)
+ VirtualAlloc(base, size, MEM_RESET, PAGE_READWRITE);
+ // Not available in all versions of Windows.
+ //DiscardVirtualMemory(base, size);
+#endif
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+ __asan_poison_memory_region(fiber_pool_stack_poison_base(stack), fiber_pool_stack_poison_size(stack));
+#endif
+}
+
+// Release and return a stack to the vacancy list.
+static void
+fiber_pool_stack_release(struct fiber_pool_stack * stack)
+{
+ struct fiber_pool * pool = stack->pool;
+ struct fiber_pool_vacancy * vacancy = fiber_pool_vacancy_pointer(stack->base, stack->size);
+
+ if (DEBUG) fprintf(stderr, "fiber_pool_stack_release: %p used=%"PRIuSIZE"\n", stack->base, stack->pool->used);
+
+ // Copy the stack details into the vacancy area:
+ vacancy->stack = *stack;
+ // After this point, be careful about updating/using state in stack, since it's copied to the vacancy area.
+
+ // Reset the stack pointers and reserve space for the vacancy data:
+ fiber_pool_vacancy_reset(vacancy);
+
+ // Push the vacancy into the vancancies list:
+ pool->vacancies = fiber_pool_vacancy_push(vacancy, pool->vacancies);
+ pool->used -= 1;
+
+#ifdef FIBER_POOL_ALLOCATION_FREE
+ struct fiber_pool_allocation * allocation = stack->allocation;
+
+ allocation->used -= 1;
+
+ // Release address space and/or dirty memory:
+ if (allocation->used == 0) {
+ fiber_pool_allocation_free(allocation);
+ }
+ else if (stack->pool->free_stacks) {
+ fiber_pool_stack_free(&vacancy->stack);
+ }
+#else
+ // This is entirely optional, but clears the dirty flag from the stack
+ // memory, so it won't get swapped to disk when there is memory pressure:
+ if (stack->pool->free_stacks) {
+ fiber_pool_stack_free(&vacancy->stack);
+ }
+#endif
+}
+
+static inline void
+ec_switch(rb_thread_t *th, rb_fiber_t *fiber)
+{
+ rb_execution_context_t *ec = &fiber->cont.saved_ec;
+ rb_ractor_set_current_ec(th->ractor, th->ec = ec);
+ // ruby_current_execution_context_ptr = th->ec = ec;
+
+ /*
+ * timer-thread may set trap interrupt on previous th->ec at any time;
+ * ensure we do not delay (or lose) the trap interrupt handling.
+ */
+ if (th->vm->ractor.main_thread == th &&
+ rb_signal_buff_size() > 0) {
+ RUBY_VM_SET_TRAP_INTERRUPT(ec);
+ }
+
+ VM_ASSERT(ec->fiber_ptr->cont.self == 0 || ec->vm_stack != NULL);
+}
+
+static inline void
+fiber_restore_thread(rb_thread_t *th, rb_fiber_t *fiber)
+{
+ ec_switch(th, fiber);
+ VM_ASSERT(th->ec->fiber_ptr == fiber);
+}
+
+static COROUTINE
+fiber_entry(struct coroutine_context * from, struct coroutine_context * to)
+{
+ rb_fiber_t *fiber = to->argument;
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+ // Address sanitizer will copy the previous stack base and stack size into
+ // the "from" fiber. `coroutine_initialize_main` doesn't generally know the
+ // stack bounds (base + size). Therefore, the main fiber `stack_base` and
+ // `stack_size` will be NULL/0. It's specifically important in that case to
+ // get the (base+size) of the previous fiber and save it, so that later when
+ // we return to the main coroutine, we don't supply (NULL, 0) to
+ // __sanitizer_start_switch_fiber which royally messes up the internal state
+ // of ASAN and causes (sometimes) the following message:
+ // "WARNING: ASan is ignoring requested __asan_handle_no_return"
+ __sanitizer_finish_switch_fiber(to->fake_stack, (const void**)&from->stack_base, &from->stack_size);
+#endif
+
+ rb_thread_t *thread = fiber->cont.saved_ec.thread_ptr;
+
+#ifdef COROUTINE_PTHREAD_CONTEXT
+ ruby_thread_set_native(thread);
+#endif
+
+ fiber_restore_thread(thread, fiber);
+
+ rb_fiber_start(fiber);
+
+#ifndef COROUTINE_PTHREAD_CONTEXT
+ VM_UNREACHABLE(fiber_entry);
+#endif
+}
+
+// Initialize a fiber's coroutine's machine stack and vm stack.
+static VALUE *
+fiber_initialize_coroutine(rb_fiber_t *fiber, size_t * vm_stack_size)
+{
+ struct fiber_pool * fiber_pool = fiber->stack.pool;
+ rb_execution_context_t *sec = &fiber->cont.saved_ec;
+ void * vm_stack = NULL;
+
+ VM_ASSERT(fiber_pool != NULL);
+
+ fiber->stack = fiber_pool_stack_acquire(fiber_pool);
+ vm_stack = fiber_pool_stack_alloca(&fiber->stack, fiber_pool->vm_stack_size);
+ *vm_stack_size = fiber_pool->vm_stack_size;
+
+ coroutine_initialize(&fiber->context, fiber_entry, fiber_pool_stack_base(&fiber->stack), fiber->stack.available);
+
+ // The stack for this execution context is the one we allocated:
+ sec->machine.stack_start = fiber->stack.current;
+ sec->machine.stack_maxsize = fiber->stack.available;
+
+ fiber->context.argument = (void*)fiber;
+
+ return vm_stack;
+}
+
+// Release the stack from the fiber, it's execution context, and return it to
+// the fiber pool.
+static void
+fiber_stack_release(rb_fiber_t * fiber)
+{
+ rb_execution_context_t *ec = &fiber->cont.saved_ec;
+
+ if (DEBUG) fprintf(stderr, "fiber_stack_release: %p, stack.base=%p\n", (void*)fiber, fiber->stack.base);
+
+ // Return the stack back to the fiber pool if it wasn't already:
+ if (fiber->stack.base) {
+ fiber_pool_stack_release(&fiber->stack);
+ fiber->stack.base = NULL;
+ }
+
+ // The stack is no longer associated with this execution context:
+ rb_ec_clear_vm_stack(ec);
+}
+
+static const char *
+fiber_status_name(enum fiber_status s)
+{
+ switch (s) {
+ case FIBER_CREATED: return "created";
+ case FIBER_RESUMED: return "resumed";
+ case FIBER_SUSPENDED: return "suspended";
+ case FIBER_TERMINATED: return "terminated";
+ }
+ VM_UNREACHABLE(fiber_status_name);
+ return NULL;
+}
+
+static void
+fiber_verify(const rb_fiber_t *fiber)
+{
+#if VM_CHECK_MODE > 0
+ VM_ASSERT(fiber->cont.saved_ec.fiber_ptr == fiber);
+
+ switch (fiber->status) {
+ case FIBER_RESUMED:
+ VM_ASSERT(fiber->cont.saved_ec.vm_stack != NULL);
+ break;
+ case FIBER_SUSPENDED:
+ VM_ASSERT(fiber->cont.saved_ec.vm_stack != NULL);
+ break;
+ case FIBER_CREATED:
+ case FIBER_TERMINATED:
+ /* TODO */
+ break;
+ default:
+ VM_UNREACHABLE(fiber_verify);
+ }
+#endif
+}
+
+inline static void
+fiber_status_set(rb_fiber_t *fiber, enum fiber_status s)
+{
+ // if (DEBUG) fprintf(stderr, "fiber: %p, status: %s -> %s\n", (void *)fiber, fiber_status_name(fiber->status), fiber_status_name(s));
+ VM_ASSERT(!FIBER_TERMINATED_P(fiber));
+ VM_ASSERT(fiber->status != s);
+ fiber_verify(fiber);
+ fiber->status = s;
+}
+
+static rb_context_t *
+cont_ptr(VALUE obj)
+{
+ rb_context_t *cont;
+
+ TypedData_Get_Struct(obj, rb_context_t, &cont_data_type, cont);
+
+ return cont;
+}
+
+static rb_fiber_t *
+fiber_ptr(VALUE obj)
+{
+ rb_fiber_t *fiber;
+
+ TypedData_Get_Struct(obj, rb_fiber_t, &fiber_data_type, fiber);
+ if (!fiber) rb_raise(rb_eFiberError, "uninitialized fiber");
+
+ return fiber;
+}
+
+NOINLINE(static VALUE cont_capture(volatile int *volatile stat));
+
+#define THREAD_MUST_BE_RUNNING(th) do { \
+ if (!(th)->ec->tag) rb_raise(rb_eThreadError, "not running thread"); \
+ } while (0)
+
+rb_thread_t*
+rb_fiber_threadptr(const rb_fiber_t *fiber)
+{
+ return fiber->cont.saved_ec.thread_ptr;
+}
+
+static VALUE
+cont_thread_value(const rb_context_t *cont)
+{
+ return cont->saved_ec.thread_ptr->self;
+}
+
+static void
+cont_compact(void *ptr)
+{
+ rb_context_t *cont = ptr;
+
+ if (cont->self) {
+ cont->self = rb_gc_location(cont->self);
+ }
+ cont->value = rb_gc_location(cont->value);
+ rb_execution_context_update(&cont->saved_ec);
+}
+
+static void
+cont_mark(void *ptr)
+{
+ rb_context_t *cont = ptr;
+
+ RUBY_MARK_ENTER("cont");
+ if (cont->self) {
+ rb_gc_mark_movable(cont->self);
+ }
+ rb_gc_mark_movable(cont->value);
+
+ rb_execution_context_mark(&cont->saved_ec);
+ rb_gc_mark(cont_thread_value(cont));
+
+ if (cont->saved_vm_stack.ptr) {
+#ifdef CAPTURE_JUST_VALID_VM_STACK
+ rb_gc_mark_locations(cont->saved_vm_stack.ptr,
+ cont->saved_vm_stack.ptr + cont->saved_vm_stack.slen + cont->saved_vm_stack.clen);
+#else
+ rb_gc_mark_locations(cont->saved_vm_stack.ptr,
+ cont->saved_vm_stack.ptr, cont->saved_ec.stack_size);
+#endif
+ }
+
+ if (cont->machine.stack) {
+ if (cont->type == CONTINUATION_CONTEXT) {
+ /* cont */
+ rb_gc_mark_locations(cont->machine.stack,
+ cont->machine.stack + cont->machine.stack_size);
+ }
+ else {
+ /* fiber */
+ const rb_fiber_t *fiber = (rb_fiber_t*)cont;
+
+ if (!FIBER_TERMINATED_P(fiber)) {
+ rb_gc_mark_locations(cont->machine.stack,
+ cont->machine.stack + cont->machine.stack_size);
+ }
+ }
+ }
+
+ RUBY_MARK_LEAVE("cont");
+}
+
+#if 0
+static int
+fiber_is_root_p(const rb_fiber_t *fiber)
+{
+ return fiber == fiber->cont.saved_ec.thread_ptr->root_fiber;
+}
+#endif
+
+static void jit_cont_free(struct rb_jit_cont *cont);
+
+static void
+cont_free(void *ptr)
+{
+ rb_context_t *cont = ptr;
+
+ RUBY_FREE_ENTER("cont");
+
+ if (cont->type == CONTINUATION_CONTEXT) {
+ ruby_xfree(cont->saved_ec.vm_stack);
+ ruby_xfree(cont->ensure_array);
+ RUBY_FREE_UNLESS_NULL(cont->machine.stack);
+ }
+ else {
+ rb_fiber_t *fiber = (rb_fiber_t*)cont;
+ coroutine_destroy(&fiber->context);
+ fiber_stack_release(fiber);
+ }
+
+ RUBY_FREE_UNLESS_NULL(cont->saved_vm_stack.ptr);
+
+ if (jit_cont_enabled) {
+ VM_ASSERT(cont->jit_cont != NULL);
+ jit_cont_free(cont->jit_cont);
+ }
+ /* free rb_cont_t or rb_fiber_t */
+ ruby_xfree(ptr);
+ RUBY_FREE_LEAVE("cont");
+}
+
+static size_t
+cont_memsize(const void *ptr)
+{
+ const rb_context_t *cont = ptr;
+ size_t size = 0;
+
+ size = sizeof(*cont);
+ if (cont->saved_vm_stack.ptr) {
+#ifdef CAPTURE_JUST_VALID_VM_STACK
+ size_t n = (cont->saved_vm_stack.slen + cont->saved_vm_stack.clen);
+#else
+ size_t n = cont->saved_ec.vm_stack_size;
+#endif
+ size += n * sizeof(*cont->saved_vm_stack.ptr);
+ }
+
+ if (cont->machine.stack) {
+ size += cont->machine.stack_size * sizeof(*cont->machine.stack);
+ }
+
+ return size;
+}
+
+void
+rb_fiber_update_self(rb_fiber_t *fiber)
+{
+ if (fiber->cont.self) {
+ fiber->cont.self = rb_gc_location(fiber->cont.self);
+ }
+ else {
+ rb_execution_context_update(&fiber->cont.saved_ec);
+ }
+}
+
+void
+rb_fiber_mark_self(const rb_fiber_t *fiber)
+{
+ if (fiber->cont.self) {
+ rb_gc_mark_movable(fiber->cont.self);
+ }
+ else {
+ rb_execution_context_mark(&fiber->cont.saved_ec);
+ }
+}
+
+static void
+fiber_compact(void *ptr)
+{
+ rb_fiber_t *fiber = ptr;
+ fiber->first_proc = rb_gc_location(fiber->first_proc);
+
+ if (fiber->prev) rb_fiber_update_self(fiber->prev);
+
+ cont_compact(&fiber->cont);
+ fiber_verify(fiber);
+}
+
+static void
+fiber_mark(void *ptr)
+{
+ rb_fiber_t *fiber = ptr;
+ RUBY_MARK_ENTER("cont");
+ fiber_verify(fiber);
+ rb_gc_mark_movable(fiber->first_proc);
+ if (fiber->prev) rb_fiber_mark_self(fiber->prev);
+ cont_mark(&fiber->cont);
+ RUBY_MARK_LEAVE("cont");
+}
+
+static void
+fiber_free(void *ptr)
+{
+ rb_fiber_t *fiber = ptr;
+ RUBY_FREE_ENTER("fiber");
+
+ if (DEBUG) fprintf(stderr, "fiber_free: %p[%p]\n", (void *)fiber, fiber->stack.base);
+
+ if (fiber->cont.saved_ec.local_storage) {
+ rb_id_table_free(fiber->cont.saved_ec.local_storage);
+ }
+
+ cont_free(&fiber->cont);
+ RUBY_FREE_LEAVE("fiber");
+}
+
+static size_t
+fiber_memsize(const void *ptr)
+{
+ const rb_fiber_t *fiber = ptr;
+ size_t size = sizeof(*fiber);
+ const rb_execution_context_t *saved_ec = &fiber->cont.saved_ec;
+ const rb_thread_t *th = rb_ec_thread_ptr(saved_ec);
+
+ /*
+ * vm.c::thread_memsize already counts th->ec->local_storage
+ */
+ if (saved_ec->local_storage && fiber != th->root_fiber) {
+ size += rb_id_table_memsize(saved_ec->local_storage);
+ size += rb_obj_memsize_of(saved_ec->storage);
+ }
+
+ size += cont_memsize(&fiber->cont);
+ return size;
+}
+
+VALUE
+rb_obj_is_fiber(VALUE obj)
+{
+ return RBOOL(rb_typeddata_is_kind_of(obj, &fiber_data_type));
+}
+
+static void
+cont_save_machine_stack(rb_thread_t *th, rb_context_t *cont)
+{
+ size_t size;
+
+ SET_MACHINE_STACK_END(&th->ec->machine.stack_end);
+
+ if (th->ec->machine.stack_start > th->ec->machine.stack_end) {
+ size = cont->machine.stack_size = th->ec->machine.stack_start - th->ec->machine.stack_end;
+ cont->machine.stack_src = th->ec->machine.stack_end;
+ }
+ else {
+ size = cont->machine.stack_size = th->ec->machine.stack_end - th->ec->machine.stack_start;
+ cont->machine.stack_src = th->ec->machine.stack_start;
+ }
+
+ if (cont->machine.stack) {
+ REALLOC_N(cont->machine.stack, VALUE, size);
+ }
+ else {
+ cont->machine.stack = ALLOC_N(VALUE, size);
+ }
+
+ FLUSH_REGISTER_WINDOWS;
+ asan_unpoison_memory_region(cont->machine.stack_src, size, false);
+ MEMCPY(cont->machine.stack, cont->machine.stack_src, VALUE, size);
+}
+
+static const rb_data_type_t cont_data_type = {
+ "continuation",
+ {cont_mark, cont_free, cont_memsize, cont_compact},
+ 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
+};
+
+static inline void
+cont_save_thread(rb_context_t *cont, rb_thread_t *th)
+{
+ rb_execution_context_t *sec = &cont->saved_ec;
+
+ VM_ASSERT(th->status == THREAD_RUNNABLE);
+
+ /* save thread context */
+ *sec = *th->ec;
+
+ /* saved_ec->machine.stack_end should be NULL */
+ /* because it may happen GC afterward */
+ sec->machine.stack_end = NULL;
+}
+
+static rb_nativethread_lock_t jit_cont_lock;
+
+// Register a new continuation with execution context `ec`. Return JIT info about
+// the continuation.
+static struct rb_jit_cont *
+jit_cont_new(rb_execution_context_t *ec)
+{
+ struct rb_jit_cont *cont;
+
+ // We need to use calloc instead of something like ZALLOC to avoid triggering GC here.
+ // When this function is called from rb_thread_alloc through rb_threadptr_root_fiber_setup,
+ // the thread is still being prepared and marking it causes SEGV.
+ cont = calloc(1, sizeof(struct rb_jit_cont));
+ if (cont == NULL)
+ rb_memerror();
+ cont->ec = ec;
+
+ rb_native_mutex_lock(&jit_cont_lock);
+ if (first_jit_cont == NULL) {
+ cont->next = cont->prev = NULL;
+ }
+ else {
+ cont->prev = NULL;
+ cont->next = first_jit_cont;
+ first_jit_cont->prev = cont;
+ }
+ first_jit_cont = cont;
+ rb_native_mutex_unlock(&jit_cont_lock);
+
+ return cont;
+}
+
+// Unregister continuation `cont`.
+static void
+jit_cont_free(struct rb_jit_cont *cont)
+{
+ if (!cont) return;
+
+ rb_native_mutex_lock(&jit_cont_lock);
+ if (cont == first_jit_cont) {
+ first_jit_cont = cont->next;
+ if (first_jit_cont != NULL)
+ first_jit_cont->prev = NULL;
+ }
+ else {
+ cont->prev->next = cont->next;
+ if (cont->next != NULL)
+ cont->next->prev = cont->prev;
+ }
+ rb_native_mutex_unlock(&jit_cont_lock);
+
+ free(cont);
+}
+
+// Call a given callback against all on-stack ISEQs.
+void
+rb_jit_cont_each_iseq(rb_iseq_callback callback, void *data)
+{
+ struct rb_jit_cont *cont;
+ for (cont = first_jit_cont; cont != NULL; cont = cont->next) {
+ if (cont->ec->vm_stack == NULL)
+ continue;
+
+ const rb_control_frame_t *cfp;
+ for (cfp = RUBY_VM_END_CONTROL_FRAME(cont->ec) - 1; ; cfp = RUBY_VM_NEXT_CONTROL_FRAME(cfp)) {
+ const rb_iseq_t *iseq;
+ if (cfp->pc && (iseq = cfp->iseq) != NULL && imemo_type((VALUE)iseq) == imemo_iseq) {
+ callback(iseq, data);
+ }
+
+ if (cfp == cont->ec->cfp)
+ break; // reached the most recent cfp
+ }
+ }
+}
+
+// Finish working with jit_cont.
+void
+rb_jit_cont_finish(void)
+{
+ if (!jit_cont_enabled)
+ return;
+
+ struct rb_jit_cont *cont, *next;
+ for (cont = first_jit_cont; cont != NULL; cont = next) {
+ next = cont->next;
+ free(cont); // Don't use xfree because it's allocated by calloc.
+ }
+ rb_native_mutex_destroy(&jit_cont_lock);
+}
+
+static void
+cont_init_jit_cont(rb_context_t *cont)
+{
+ VM_ASSERT(cont->jit_cont == NULL);
+ if (jit_cont_enabled) {
+ cont->jit_cont = jit_cont_new(&(cont->saved_ec));
+ }
+}
+
+struct rb_execution_context_struct *
+rb_fiberptr_get_ec(struct rb_fiber_struct *fiber)
+{
+ return &fiber->cont.saved_ec;
+}
+
+static void
+cont_init(rb_context_t *cont, rb_thread_t *th)
+{
+ /* save thread context */
+ cont_save_thread(cont, th);
+ cont->saved_ec.thread_ptr = th;
+ cont->saved_ec.local_storage = NULL;
+ cont->saved_ec.local_storage_recursive_hash = Qnil;
+ cont->saved_ec.local_storage_recursive_hash_for_trace = Qnil;
+ cont_init_jit_cont(cont);
+}
+
+static rb_context_t *
+cont_new(VALUE klass)
+{
+ rb_context_t *cont;
+ volatile VALUE contval;
+ rb_thread_t *th = GET_THREAD();
+
+ THREAD_MUST_BE_RUNNING(th);
+ contval = TypedData_Make_Struct(klass, rb_context_t, &cont_data_type, cont);
+ cont->self = contval;
+ cont_init(cont, th);
+ return cont;
+}
+
+VALUE
+rb_fiberptr_self(struct rb_fiber_struct *fiber)
+{
+ return fiber->cont.self;
+}
+
+unsigned int
+rb_fiberptr_blocking(struct rb_fiber_struct *fiber)
+{
+ return fiber->blocking;
+}
+
+// Start working with jit_cont.
+void
+rb_jit_cont_init(void)
+{
+ if (!jit_cont_enabled)
+ return;
+
+ rb_native_mutex_initialize(&jit_cont_lock);
+ cont_init_jit_cont(&GET_EC()->fiber_ptr->cont);
+}
+
+#if 0
+void
+show_vm_stack(const rb_execution_context_t *ec)
+{
+ VALUE *p = ec->vm_stack;
+ while (p < ec->cfp->sp) {
+ fprintf(stderr, "%3d ", (int)(p - ec->vm_stack));
+ rb_obj_info_dump(*p);
+ p++;
+ }
+}
+
+void
+show_vm_pcs(const rb_control_frame_t *cfp,
+ const rb_control_frame_t *end_of_cfp)
+{
+ int i=0;
+ while (cfp != end_of_cfp) {
+ int pc = 0;
+ if (cfp->iseq) {
+ pc = cfp->pc - ISEQ_BODY(cfp->iseq)->iseq_encoded;
+ }
+ fprintf(stderr, "%2d pc: %d\n", i++, pc);
+ cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
+ }
+}
+#endif
+
+static VALUE
+cont_capture(volatile int *volatile stat)
+{
+ rb_context_t *volatile cont;
+ rb_thread_t *th = GET_THREAD();
+ volatile VALUE contval;
+ const rb_execution_context_t *ec = th->ec;
+
+ THREAD_MUST_BE_RUNNING(th);
+ rb_vm_stack_to_heap(th->ec);
+ cont = cont_new(rb_cContinuation);
+ contval = cont->self;
+
+#ifdef CAPTURE_JUST_VALID_VM_STACK
+ cont->saved_vm_stack.slen = ec->cfp->sp - ec->vm_stack;
+ cont->saved_vm_stack.clen = ec->vm_stack + ec->vm_stack_size - (VALUE*)ec->cfp;
+ cont->saved_vm_stack.ptr = ALLOC_N(VALUE, cont->saved_vm_stack.slen + cont->saved_vm_stack.clen);
+ MEMCPY(cont->saved_vm_stack.ptr,
+ ec->vm_stack,
+ VALUE, cont->saved_vm_stack.slen);
+ MEMCPY(cont->saved_vm_stack.ptr + cont->saved_vm_stack.slen,
+ (VALUE*)ec->cfp,
+ VALUE,
+ cont->saved_vm_stack.clen);
+#else
+ cont->saved_vm_stack.ptr = ALLOC_N(VALUE, ec->vm_stack_size);
+ MEMCPY(cont->saved_vm_stack.ptr, ec->vm_stack, VALUE, ec->vm_stack_size);
+#endif
+ // At this point, `cfp` is valid but `vm_stack` should be cleared:
+ rb_ec_set_vm_stack(&cont->saved_ec, NULL, 0);
+ VM_ASSERT(cont->saved_ec.cfp != NULL);
+ cont_save_machine_stack(th, cont);
+
+ /* backup ensure_list to array for search in another context */
+ {
+ rb_ensure_list_t *p;
+ int size = 0;
+ rb_ensure_entry_t *entry;
+ for (p=th->ec->ensure_list; p; p=p->next)
+ size++;
+ entry = cont->ensure_array = ALLOC_N(rb_ensure_entry_t,size+1);
+ for (p=th->ec->ensure_list; p; p=p->next) {
+ if (!p->entry.marker)
+ p->entry.marker = rb_ary_hidden_new(0); /* dummy object */
+ *entry++ = p->entry;
+ }
+ entry->marker = 0;
+ }
+
+ if (ruby_setjmp(cont->jmpbuf)) {
+ VALUE value;
+
+ VAR_INITIALIZED(cont);
+ value = cont->value;
+ if (cont->argc == -1) rb_exc_raise(value);
+ cont->value = Qnil;
+ *stat = 1;
+ return value;
+ }
+ else {
+ *stat = 0;
+ return contval;
+ }
+}
+
+static inline void
+cont_restore_thread(rb_context_t *cont)
+{
+ rb_thread_t *th = GET_THREAD();
+
+ /* restore thread context */
+ if (cont->type == CONTINUATION_CONTEXT) {
+ /* continuation */
+ rb_execution_context_t *sec = &cont->saved_ec;
+ rb_fiber_t *fiber = NULL;
+
+ if (sec->fiber_ptr != NULL) {
+ fiber = sec->fiber_ptr;
+ }
+ else if (th->root_fiber) {
+ fiber = th->root_fiber;
+ }
+
+ if (fiber && th->ec != &fiber->cont.saved_ec) {
+ ec_switch(th, fiber);
+ }
+
+ if (th->ec->trace_arg != sec->trace_arg) {
+ rb_raise(rb_eRuntimeError, "can't call across trace_func");
+ }
+
+ /* copy vm stack */
+#ifdef CAPTURE_JUST_VALID_VM_STACK
+ MEMCPY(th->ec->vm_stack,
+ cont->saved_vm_stack.ptr,
+ VALUE, cont->saved_vm_stack.slen);
+ MEMCPY(th->ec->vm_stack + th->ec->vm_stack_size - cont->saved_vm_stack.clen,
+ cont->saved_vm_stack.ptr + cont->saved_vm_stack.slen,
+ VALUE, cont->saved_vm_stack.clen);
+#else
+ MEMCPY(th->ec->vm_stack, cont->saved_vm_stack.ptr, VALUE, sec->vm_stack_size);
+#endif
+ /* other members of ec */
+
+ th->ec->cfp = sec->cfp;
+ th->ec->raised_flag = sec->raised_flag;
+ th->ec->tag = sec->tag;
+ th->ec->root_lep = sec->root_lep;
+ th->ec->root_svar = sec->root_svar;
+ th->ec->ensure_list = sec->ensure_list;
+ th->ec->errinfo = sec->errinfo;
+
+ VM_ASSERT(th->ec->vm_stack != NULL);
+ }
+ else {
+ /* fiber */
+ fiber_restore_thread(th, (rb_fiber_t*)cont);
+ }
+}
+
+NOINLINE(static void fiber_setcontext(rb_fiber_t *new_fiber, rb_fiber_t *old_fiber));
+
+static void
+fiber_setcontext(rb_fiber_t *new_fiber, rb_fiber_t *old_fiber)
+{
+ rb_thread_t *th = GET_THREAD();
+
+ /* save old_fiber's machine stack - to ensure efficient garbage collection */
+ if (!FIBER_TERMINATED_P(old_fiber)) {
+ STACK_GROW_DIR_DETECTION;
+ SET_MACHINE_STACK_END(&th->ec->machine.stack_end);
+ if (STACK_DIR_UPPER(0, 1)) {
+ old_fiber->cont.machine.stack_size = th->ec->machine.stack_start - th->ec->machine.stack_end;
+ old_fiber->cont.machine.stack = th->ec->machine.stack_end;
+ }
+ else {
+ old_fiber->cont.machine.stack_size = th->ec->machine.stack_end - th->ec->machine.stack_start;
+ old_fiber->cont.machine.stack = th->ec->machine.stack_start;
+ }
+ }
+
+ /* exchange machine_stack_start between old_fiber and new_fiber */
+ old_fiber->cont.saved_ec.machine.stack_start = th->ec->machine.stack_start;
+
+ /* old_fiber->machine.stack_end should be NULL */
+ old_fiber->cont.saved_ec.machine.stack_end = NULL;
+
+ // if (DEBUG) fprintf(stderr, "fiber_setcontext: %p[%p] -> %p[%p]\n", (void*)old_fiber, old_fiber->stack.base, (void*)new_fiber, new_fiber->stack.base);
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+ __sanitizer_start_switch_fiber(FIBER_TERMINATED_P(old_fiber) ? NULL : &old_fiber->context.fake_stack, new_fiber->context.stack_base, new_fiber->context.stack_size);
+#endif
+
+ /* swap machine context */
+ struct coroutine_context * from = coroutine_transfer(&old_fiber->context, &new_fiber->context);
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+ __sanitizer_finish_switch_fiber(old_fiber->context.fake_stack, NULL, NULL);
+#endif
+
+ if (from == NULL) {
+ rb_syserr_fail(errno, "coroutine_transfer");
+ }
+
+ /* restore thread context */
+ fiber_restore_thread(th, old_fiber);
+
+ // It's possible to get here, and new_fiber is already freed.
+ // if (DEBUG) fprintf(stderr, "fiber_setcontext: %p[%p] <- %p[%p]\n", (void*)old_fiber, old_fiber->stack.base, (void*)new_fiber, new_fiber->stack.base);
+}
+
+NOINLINE(NORETURN(static void cont_restore_1(rb_context_t *)));
+
+static void
+cont_restore_1(rb_context_t *cont)
+{
+ cont_restore_thread(cont);
+
+ /* restore machine stack */
+#if defined(_M_AMD64) && !defined(__MINGW64__)
+ {
+ /* workaround for x64 SEH */
+ jmp_buf buf;
+ setjmp(buf);
+ _JUMP_BUFFER *bp = (void*)&cont->jmpbuf;
+ bp->Frame = ((_JUMP_BUFFER*)((void*)&buf))->Frame;
+ }
+#endif
+ if (cont->machine.stack_src) {
+ FLUSH_REGISTER_WINDOWS;
+ MEMCPY(cont->machine.stack_src, cont->machine.stack,
+ VALUE, cont->machine.stack_size);
+ }
+
+ ruby_longjmp(cont->jmpbuf, 1);
+}
+
+NORETURN(NOINLINE(static void cont_restore_0(rb_context_t *, VALUE *)));
+
+static void
+cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
+{
+ if (cont->machine.stack_src) {
+#ifdef HAVE_ALLOCA
+#define STACK_PAD_SIZE 1
+#else
+#define STACK_PAD_SIZE 1024
+#endif
+ VALUE space[STACK_PAD_SIZE];
+
+#if !STACK_GROW_DIRECTION
+ if (addr_in_prev_frame > &space[0]) {
+ /* Stack grows downward */
+#endif
+#if STACK_GROW_DIRECTION <= 0
+ volatile VALUE *const end = cont->machine.stack_src;
+ if (&space[0] > end) {
+# ifdef HAVE_ALLOCA
+ volatile VALUE *sp = ALLOCA_N(VALUE, &space[0] - end);
+ // We need to make sure that the stack pointer is moved,
+ // but some compilers may remove the allocation by optimization.
+ // We hope that the following read/write will prevent such an optimization.
+ *sp = Qfalse;
+ space[0] = *sp;
+# else
+ cont_restore_0(cont, &space[0]);
+# endif
+ }
+#endif
+#if !STACK_GROW_DIRECTION
+ }
+ else {
+ /* Stack grows upward */
+#endif
+#if STACK_GROW_DIRECTION >= 0
+ volatile VALUE *const end = cont->machine.stack_src + cont->machine.stack_size;
+ if (&space[STACK_PAD_SIZE] < end) {
+# ifdef HAVE_ALLOCA
+ volatile VALUE *sp = ALLOCA_N(VALUE, end - &space[STACK_PAD_SIZE]);
+ space[0] = *sp;
+# else
+ cont_restore_0(cont, &space[STACK_PAD_SIZE-1]);
+# endif
+ }
+#endif
+#if !STACK_GROW_DIRECTION
+ }
+#endif
+ }
+ cont_restore_1(cont);
+}
+
+/*
+ * Document-class: Continuation
+ *
+ * Continuation objects are generated by Kernel#callcc,
+ * after having +require+d <i>continuation</i>. They hold
+ * a return address and execution context, allowing a nonlocal return
+ * to the end of the #callcc block from anywhere within a
+ * program. Continuations are somewhat analogous to a structured
+ * version of C's <code>setjmp/longjmp</code> (although they contain
+ * more state, so you might consider them closer to threads).
+ *
+ * For instance:
+ *
+ * require "continuation"
+ * arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ]
+ * callcc{|cc| $cc = cc}
+ * puts(message = arr.shift)
+ * $cc.call unless message =~ /Max/
+ *
+ * <em>produces:</em>
+ *
+ * Freddie
+ * Herbie
+ * Ron
+ * Max
+ *
+ * Also you can call callcc in other methods:
+ *
+ * require "continuation"
+ *
+ * def g
+ * arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ]
+ * cc = callcc { |cc| cc }
+ * puts arr.shift
+ * return cc, arr.size
+ * end
+ *
+ * def f
+ * c, size = g
+ * c.call(c) if size > 1
+ * end
+ *
+ * f
+ *
+ * This (somewhat contrived) example allows the inner loop to abandon
+ * processing early:
+ *
+ * require "continuation"
+ * callcc {|cont|
+ * for i in 0..4
+ * print "#{i}: "
+ * for j in i*5...(i+1)*5
+ * cont.call() if j == 17
+ * printf "%3d", j
+ * end
+ * end
+ * }
+ * puts
+ *
+ * <em>produces:</em>
+ *
+ * 0: 0 1 2 3 4
+ * 1: 5 6 7 8 9
+ * 2: 10 11 12 13 14
+ * 3: 15 16
+ */
+
+/*
+ * call-seq:
+ * callcc {|cont| block } -> obj
+ *
+ * Generates a Continuation object, which it passes to
+ * the associated block. You need to <code>require
+ * 'continuation'</code> before using this method. Performing a
+ * <em>cont</em><code>.call</code> will cause the #callcc
+ * to return (as will falling through the end of the block). The
+ * value returned by the #callcc is the value of the
+ * block, or the value passed to <em>cont</em><code>.call</code>. See
+ * class Continuation for more details. Also see
+ * Kernel#throw for an alternative mechanism for
+ * unwinding a call stack.
+ */
+
+static VALUE
+rb_callcc(VALUE self)
+{
+ volatile int called;
+ volatile VALUE val = cont_capture(&called);
+
+ if (called) {
+ return val;
+ }
+ else {
+ return rb_yield(val);
+ }
+}
+
+static VALUE
+make_passing_arg(int argc, const VALUE *argv)
+{
+ switch (argc) {
+ case -1:
+ return argv[0];
+ case 0:
+ return Qnil;
+ case 1:
+ return argv[0];
+ default:
+ return rb_ary_new4(argc, argv);
+ }
+}
+
+typedef VALUE e_proc(VALUE);
+
+/* CAUTION!! : Currently, error in rollback_func is not supported */
+/* same as rb_protect if set rollback_func to NULL */
+void
+ruby_register_rollback_func_for_ensure(e_proc *ensure_func, e_proc *rollback_func)
+{
+ st_table **table_p = &GET_VM()->ensure_rollback_table;
+ if (UNLIKELY(*table_p == NULL)) {
+ *table_p = st_init_numtable();
+ }
+ st_insert(*table_p, (st_data_t)ensure_func, (st_data_t)rollback_func);
+}
+
+static inline e_proc *
+lookup_rollback_func(e_proc *ensure_func)
+{
+ st_table *table = GET_VM()->ensure_rollback_table;
+ st_data_t val;
+ if (table && st_lookup(table, (st_data_t)ensure_func, &val))
+ return (e_proc *) val;
+ return (e_proc *) Qundef;
+}
+
+
+static inline void
+rollback_ensure_stack(VALUE self,rb_ensure_list_t *current,rb_ensure_entry_t *target)
+{
+ rb_ensure_list_t *p;
+ rb_ensure_entry_t *entry;
+ size_t i, j;
+ size_t cur_size;
+ size_t target_size;
+ size_t base_point;
+ e_proc *func;
+
+ cur_size = 0;
+ for (p=current; p; p=p->next)
+ cur_size++;
+ target_size = 0;
+ for (entry=target; entry->marker; entry++)
+ target_size++;
+
+ /* search common stack point */
+ p = current;
+ base_point = cur_size;
+ while (base_point) {
+ if (target_size >= base_point &&
+ p->entry.marker == target[target_size - base_point].marker)
+ break;
+ base_point --;
+ p = p->next;
+ }
+
+ /* rollback function check */
+ for (i=0; i < target_size - base_point; i++) {
+ if (!lookup_rollback_func(target[i].e_proc)) {
+ rb_raise(rb_eRuntimeError, "continuation called from out of critical rb_ensure scope");
+ }
+ }
+ /* pop ensure stack */
+ while (cur_size > base_point) {
+ /* escape from ensure block */
+ (*current->entry.e_proc)(current->entry.data2);
+ current = current->next;
+ cur_size--;
+ }
+ /* push ensure stack */
+ for (j = 0; j < i; j++) {
+ func = lookup_rollback_func(target[i - j - 1].e_proc);
+ if (!UNDEF_P((VALUE)func)) {
+ (*func)(target[i - j - 1].data2);
+ }
+ }
+}
+
+NORETURN(static VALUE rb_cont_call(int argc, VALUE *argv, VALUE contval));
+
+/*
+ * call-seq:
+ * cont.call(args, ...)
+ * cont[args, ...]
+ *
+ * Invokes the continuation. The program continues from the end of
+ * the #callcc block. If no arguments are given, the original #callcc
+ * returns +nil+. If one argument is given, #callcc returns
+ * it. Otherwise, an array containing <i>args</i> is returned.
+ *
+ * callcc {|cont| cont.call } #=> nil
+ * callcc {|cont| cont.call 1 } #=> 1
+ * callcc {|cont| cont.call 1, 2, 3 } #=> [1, 2, 3]
+ */
+
+static VALUE
+rb_cont_call(int argc, VALUE *argv, VALUE contval)
+{
+ rb_context_t *cont = cont_ptr(contval);
+ rb_thread_t *th = GET_THREAD();
+
+ if (cont_thread_value(cont) != th->self) {
+ rb_raise(rb_eRuntimeError, "continuation called across threads");
+ }
+ if (cont->saved_ec.fiber_ptr) {
+ if (th->ec->fiber_ptr != cont->saved_ec.fiber_ptr) {
+ rb_raise(rb_eRuntimeError, "continuation called across fiber");
+ }
+ }
+ rollback_ensure_stack(contval, th->ec->ensure_list, cont->ensure_array);
+
+ cont->argc = argc;
+ cont->value = make_passing_arg(argc, argv);
+
+ cont_restore_0(cont, &contval);
+ UNREACHABLE_RETURN(Qnil);
+}
+
+/*********/
+/* fiber */
+/*********/
+
+/*
+ * Document-class: Fiber
+ *
+ * Fibers are primitives for implementing light weight cooperative
+ * concurrency in Ruby. Basically they are a means of creating code blocks
+ * that can be paused and resumed, much like threads. The main difference
+ * is that they are never preempted and that the scheduling must be done by
+ * the programmer and not the VM.
+ *
+ * As opposed to other stackless light weight concurrency models, each fiber
+ * comes with a stack. This enables the fiber to be paused from deeply
+ * nested function calls within the fiber block. See the ruby(1)
+ * manpage to configure the size of the fiber stack(s).
+ *
+ * When a fiber is created it will not run automatically. Rather it must
+ * be explicitly asked to run using the Fiber#resume method.
+ * The code running inside the fiber can give up control by calling
+ * Fiber.yield in which case it yields control back to caller (the
+ * caller of the Fiber#resume).
+ *
+ * Upon yielding or termination the Fiber returns the value of the last
+ * executed expression
+ *
+ * For instance:
+ *
+ * fiber = Fiber.new do
+ * Fiber.yield 1
+ * 2
+ * end
+ *
+ * puts fiber.resume
+ * puts fiber.resume
+ * puts fiber.resume
+ *
+ * <em>produces</em>
+ *
+ * 1
+ * 2
+ * FiberError: dead fiber called
+ *
+ * The Fiber#resume method accepts an arbitrary number of parameters,
+ * if it is the first call to #resume then they will be passed as
+ * block arguments. Otherwise they will be the return value of the
+ * call to Fiber.yield
+ *
+ * Example:
+ *
+ * fiber = Fiber.new do |first|
+ * second = Fiber.yield first + 2
+ * end
+ *
+ * puts fiber.resume 10
+ * puts fiber.resume 1_000_000
+ * puts fiber.resume "The fiber will be dead before I can cause trouble"
+ *
+ * <em>produces</em>
+ *
+ * 12
+ * 1000000
+ * FiberError: dead fiber called
+ *
+ * == Non-blocking Fibers
+ *
+ * The concept of <em>non-blocking fiber</em> was introduced in Ruby 3.0.
+ * A non-blocking fiber, when reaching a operation that would normally block
+ * the fiber (like <code>sleep</code>, or wait for another process or I/O)
+ * will yield control to other fibers and allow the <em>scheduler</em> to
+ * handle blocking and waking up (resuming) this fiber when it can proceed.
+ *
+ * For a Fiber to behave as non-blocking, it need to be created in Fiber.new with
+ * <tt>blocking: false</tt> (which is the default), and Fiber.scheduler
+ * should be set with Fiber.set_scheduler. If Fiber.scheduler is not set in
+ * the current thread, blocking and non-blocking fibers' behavior is identical.
+ *
+ * Ruby doesn't provide a scheduler class: it is expected to be implemented by
+ * the user and correspond to Fiber::Scheduler.
+ *
+ * There is also Fiber.schedule method, which is expected to immediately perform
+ * the given block in a non-blocking manner. Its actual implementation is up to
+ * the scheduler.
+ *
+ */
+
+static const rb_data_type_t fiber_data_type = {
+ "fiber",
+ {fiber_mark, fiber_free, fiber_memsize, fiber_compact,},
+ 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
+};
+
+static VALUE
+fiber_alloc(VALUE klass)
+{
+ return TypedData_Wrap_Struct(klass, &fiber_data_type, 0);
+}
+
+static rb_fiber_t*
+fiber_t_alloc(VALUE fiber_value, unsigned int blocking)
+{
+ rb_fiber_t *fiber;
+ rb_thread_t *th = GET_THREAD();
+
+ if (DATA_PTR(fiber_value) != 0) {
+ rb_raise(rb_eRuntimeError, "cannot initialize twice");
+ }
+
+ THREAD_MUST_BE_RUNNING(th);
+ fiber = ZALLOC(rb_fiber_t);
+ fiber->cont.self = fiber_value;
+ fiber->cont.type = FIBER_CONTEXT;
+ fiber->blocking = blocking;
+ cont_init(&fiber->cont, th);
+
+ fiber->cont.saved_ec.fiber_ptr = fiber;
+ rb_ec_clear_vm_stack(&fiber->cont.saved_ec);
+
+ fiber->prev = NULL;
+
+ /* fiber->status == 0 == CREATED
+ * So that we don't need to set status: fiber_status_set(fiber, FIBER_CREATED); */
+ VM_ASSERT(FIBER_CREATED_P(fiber));
+
+ DATA_PTR(fiber_value) = fiber;
+
+ return fiber;
+}
+
+static rb_fiber_t *
+root_fiber_alloc(rb_thread_t *th)
+{
+ VALUE fiber_value = fiber_alloc(rb_cFiber);
+ rb_fiber_t *fiber = th->ec->fiber_ptr;
+
+ VM_ASSERT(DATA_PTR(fiber_value) == NULL);
+ VM_ASSERT(fiber->cont.type == FIBER_CONTEXT);
+ VM_ASSERT(FIBER_RESUMED_P(fiber));
+
+ th->root_fiber = fiber;
+ DATA_PTR(fiber_value) = fiber;
+ fiber->cont.self = fiber_value;
+
+ coroutine_initialize_main(&fiber->context);
+
+ return fiber;
+}
+
+static inline rb_fiber_t*
+fiber_current(void)
+{
+ rb_execution_context_t *ec = GET_EC();
+ if (ec->fiber_ptr->cont.self == 0) {
+ root_fiber_alloc(rb_ec_thread_ptr(ec));
+ }
+ return ec->fiber_ptr;
+}
+
+static inline VALUE
+current_fiber_storage(void)
+{
+ rb_execution_context_t *ec = GET_EC();
+ return ec->storage;
+}
+
+static inline VALUE
+inherit_fiber_storage(void)
+{
+ return rb_obj_dup(current_fiber_storage());
+}
+
+static inline void
+fiber_storage_set(struct rb_fiber_struct *fiber, VALUE storage)
+{
+ fiber->cont.saved_ec.storage = storage;
+}
+
+static inline VALUE
+fiber_storage_get(rb_fiber_t *fiber)
+{
+ VALUE storage = fiber->cont.saved_ec.storage;
+ if (storage == Qnil) {
+ storage = rb_hash_new();
+ fiber_storage_set(fiber, storage);
+ }
+ return storage;
+}
+
+static void
+storage_access_must_be_from_same_fiber(VALUE self)
+{
+ rb_fiber_t *fiber = fiber_ptr(self);
+ rb_fiber_t *current = fiber_current();
+ if (fiber != current) {
+ rb_raise(rb_eArgError, "Fiber storage can only be accessed from the Fiber it belongs to");
+ }
+}
+
+/**
+ * call-seq: fiber.storage -> hash (dup)
+ *
+ * Returns a copy of the storage hash for the fiber. The method can only be called on the
+ * Fiber.current.
+ */
+static VALUE
+rb_fiber_storage_get(VALUE self)
+{
+ storage_access_must_be_from_same_fiber(self);
+ return rb_obj_dup(fiber_storage_get(fiber_ptr(self)));
+}
+
+static int
+fiber_storage_validate_each(VALUE key, VALUE value, VALUE _argument)
+{
+ Check_Type(key, T_SYMBOL);
+
+ return ST_CONTINUE;
+}
+
+static void
+fiber_storage_validate(VALUE value)
+{
+ // nil is an allowed value and will be lazily initialized.
+ if (value == Qnil) return;
+
+ if (!RB_TYPE_P(value, T_HASH)) {
+ rb_raise(rb_eTypeError, "storage must be a hash");
+ }
+
+ if (RB_OBJ_FROZEN(value)) {
+ rb_raise(rb_eFrozenError, "storage must not be frozen");
+ }
+
+ rb_hash_foreach(value, fiber_storage_validate_each, Qundef);
+}
+
+/**
+ * call-seq: fiber.storage = hash
+ *
+ * Sets the storage hash for the fiber. This feature is experimental
+ * and may change in the future. The method can only be called on the
+ * Fiber.current.
+ *
+ * You should be careful about using this method as you may inadvertently clear
+ * important fiber-storage state. You should mostly prefer to assign specific
+ * keys in the storage using Fiber::[]=.
+ *
+ * You can also use <tt>Fiber.new(storage: nil)</tt> to create a fiber with an empty
+ * storage.
+ *
+ * Example:
+ *
+ * while request = request_queue.pop
+ * # Reset the per-request state:
+ * Fiber.current.storage = nil
+ * handle_request(request)
+ * end
+ */
+static VALUE
+rb_fiber_storage_set(VALUE self, VALUE value)
+{
+ if (rb_warning_category_enabled_p(RB_WARN_CATEGORY_EXPERIMENTAL)) {
+ rb_category_warn(RB_WARN_CATEGORY_EXPERIMENTAL,
+ "Fiber#storage= is experimental and may be removed in the future!");
+ }
+
+ storage_access_must_be_from_same_fiber(self);
+ fiber_storage_validate(value);
+
+ fiber_ptr(self)->cont.saved_ec.storage = rb_obj_dup(value);
+ return value;
+}
+
+/**
+ * call-seq: Fiber[key] -> value
+ *
+ * Returns the value of the fiber storage variable identified by +key+.
+ *
+ * The +key+ must be a symbol, and the value is set by Fiber#[]= or
+ * Fiber#store.
+ *
+ * See also Fiber::[]=.
+ */
+static VALUE
+rb_fiber_storage_aref(VALUE class, VALUE key)
+{
+ Check_Type(key, T_SYMBOL);
+
+ VALUE storage = fiber_storage_get(fiber_current());
+
+ if (storage == Qnil) return Qnil;
+
+ return rb_hash_aref(storage, key);
+}
+
+/**
+ * call-seq: Fiber[key] = value
+ *
+ * Assign +value+ to the fiber storage variable identified by +key+.
+ * The variable is created if it doesn't exist.
+ *
+ * +key+ must be a Symbol, otherwise a TypeError is raised.
+ *
+ * See also Fiber::[].
+ */
+static VALUE
+rb_fiber_storage_aset(VALUE class, VALUE key, VALUE value)
+{
+ Check_Type(key, T_SYMBOL);
+
+ VALUE storage = fiber_storage_get(fiber_current());
+
+ return rb_hash_aset(storage, key, value);
+}
+
+static VALUE
+fiber_initialize(VALUE self, VALUE proc, struct fiber_pool * fiber_pool, unsigned int blocking, VALUE storage)
+{
+ if (storage == Qundef || storage == Qtrue) {
+ // The default, inherit storage (dup) from the current fiber:
+ storage = inherit_fiber_storage();
+ }
+ else /* nil, hash, etc. */ {
+ fiber_storage_validate(storage);
+ storage = rb_obj_dup(storage);
+ }
+
+ rb_fiber_t *fiber = fiber_t_alloc(self, blocking);
+
+ fiber->cont.saved_ec.storage = storage;
+ fiber->first_proc = proc;
+ fiber->stack.base = NULL;
+ fiber->stack.pool = fiber_pool;
+
+ return self;
+}
+
+static void
+fiber_prepare_stack(rb_fiber_t *fiber)
+{
+ rb_context_t *cont = &fiber->cont;
+ rb_execution_context_t *sec = &cont->saved_ec;
+
+ size_t vm_stack_size = 0;
+ VALUE *vm_stack = fiber_initialize_coroutine(fiber, &vm_stack_size);
+
+ /* initialize cont */
+ cont->saved_vm_stack.ptr = NULL;
+ rb_ec_initialize_vm_stack(sec, vm_stack, vm_stack_size / sizeof(VALUE));
+
+ sec->tag = NULL;
+ sec->local_storage = NULL;
+ sec->local_storage_recursive_hash = Qnil;
+ sec->local_storage_recursive_hash_for_trace = Qnil;
+}
+
+static struct fiber_pool *
+rb_fiber_pool_default(VALUE pool)
+{
+ return &shared_fiber_pool;
+}
+
+VALUE rb_fiber_inherit_storage(struct rb_execution_context_struct *ec, struct rb_fiber_struct *fiber)
+{
+ VALUE storage = rb_obj_dup(ec->storage);
+ fiber->cont.saved_ec.storage = storage;
+ return storage;
+}
+
+/* :nodoc: */
+static VALUE
+rb_fiber_initialize_kw(int argc, VALUE* argv, VALUE self, int kw_splat)
+{
+ VALUE pool = Qnil;
+ VALUE blocking = Qfalse;
+ VALUE storage = Qundef;
+
+ if (kw_splat != RB_NO_KEYWORDS) {
+ VALUE options = Qnil;
+ VALUE arguments[3] = {Qundef};
+
+ argc = rb_scan_args_kw(kw_splat, argc, argv, ":", &options);
+ rb_get_kwargs(options, fiber_initialize_keywords, 0, 3, arguments);
+
+ if (!UNDEF_P(arguments[0])) {
+ blocking = arguments[0];
+ }
+
+ if (!UNDEF_P(arguments[1])) {
+ pool = arguments[1];
+ }
+
+ storage = arguments[2];
+ }
+
+ return fiber_initialize(self, rb_block_proc(), rb_fiber_pool_default(pool), RTEST(blocking), storage);
+}
+
+/*
+ * call-seq:
+ * Fiber.new(blocking: false, storage: true) { |*args| ... } -> fiber
+ *
+ * Creates new Fiber. Initially, the fiber is not running and can be resumed
+ * with #resume. Arguments to the first #resume call will be passed to the
+ * block:
+ *
+ * f = Fiber.new do |initial|
+ * current = initial
+ * loop do
+ * puts "current: #{current.inspect}"
+ * current = Fiber.yield
+ * end
+ * end
+ * f.resume(100) # prints: current: 100
+ * f.resume(1, 2, 3) # prints: current: [1, 2, 3]
+ * f.resume # prints: current: nil
+ * # ... and so on ...
+ *
+ * If <tt>blocking: false</tt> is passed to <tt>Fiber.new</tt>, _and_ current
+ * thread has a Fiber.scheduler defined, the Fiber becomes non-blocking (see
+ * "Non-blocking Fibers" section in class docs).
+ *
+ * If the <tt>storage</tt> is unspecified, the default is to inherit a copy of
+ * the storage from the current fiber. This is the same as specifying
+ * <tt>storage: true</tt>.
+ *
+ * Fiber[:x] = 1
+ * Fiber.new do
+ * Fiber[:x] # => 1
+ * Fiber[:x] = 2
+ * end.resume
+ * Fiber[:x] # => 1
+ *
+ * If the given <tt>storage</tt> is <tt>nil</tt>, this function will lazy
+ * initialize the internal storage, which starts as an empty hash.
+ *
+ * Fiber[:x] = "Hello World"
+ * Fiber.new(storage: nil) do
+ * Fiber[:x] # nil
+ * end
+ *
+ * Otherwise, the given <tt>storage</tt> is used as the new fiber's storage,
+ * and it must be an instance of Hash.
+ *
+ * Explicitly using <tt>storage: true</tt> is currently experimental and may
+ * change in the future.
+ */
+static VALUE
+rb_fiber_initialize(int argc, VALUE* argv, VALUE self)
+{
+ return rb_fiber_initialize_kw(argc, argv, self, rb_keyword_given_p());
+}
+
+VALUE
+rb_fiber_new_storage(rb_block_call_func_t func, VALUE obj, VALUE storage)
+{
+ return fiber_initialize(fiber_alloc(rb_cFiber), rb_proc_new(func, obj), rb_fiber_pool_default(Qnil), 0, storage);
+}
+
+VALUE
+rb_fiber_new(rb_block_call_func_t func, VALUE obj)
+{
+ return rb_fiber_new_storage(func, obj, Qtrue);
+}
+
+static VALUE
+rb_fiber_s_schedule_kw(int argc, VALUE* argv, int kw_splat)
+{
+ rb_thread_t * th = GET_THREAD();
+ VALUE scheduler = th->scheduler;
+ VALUE fiber = Qnil;
+
+ if (scheduler != Qnil) {
+ fiber = rb_fiber_scheduler_fiber(scheduler, argc, argv, kw_splat);
+ }
+ else {
+ rb_raise(rb_eRuntimeError, "No scheduler is available!");
+ }
+
+ return fiber;
+}
+
+/*
+ * call-seq:
+ * Fiber.schedule { |*args| ... } -> fiber
+ *
+ * The method is <em>expected</em> to immediately run the provided block of code in a
+ * separate non-blocking fiber.
+ *
+ * puts "Go to sleep!"
+ *
+ * Fiber.set_scheduler(MyScheduler.new)
+ *
+ * Fiber.schedule do
+ * puts "Going to sleep"
+ * sleep(1)
+ * puts "I slept well"
+ * end
+ *
+ * puts "Wakey-wakey, sleepyhead"
+ *
+ * Assuming MyScheduler is properly implemented, this program will produce:
+ *
+ * Go to sleep!
+ * Going to sleep
+ * Wakey-wakey, sleepyhead
+ * ...1 sec pause here...
+ * I slept well
+ *
+ * ...e.g. on the first blocking operation inside the Fiber (<tt>sleep(1)</tt>),
+ * the control is yielded to the outside code (main fiber), and <em>at the end
+ * of that execution</em>, the scheduler takes care of properly resuming all the
+ * blocked fibers.
+ *
+ * Note that the behavior described above is how the method is <em>expected</em>
+ * to behave, actual behavior is up to the current scheduler's implementation of
+ * Fiber::Scheduler#fiber method. Ruby doesn't enforce this method to
+ * behave in any particular way.
+ *
+ * If the scheduler is not set, the method raises
+ * <tt>RuntimeError (No scheduler is available!)</tt>.
+ *
+ */
+static VALUE
+rb_fiber_s_schedule(int argc, VALUE *argv, VALUE obj)
+{
+ return rb_fiber_s_schedule_kw(argc, argv, rb_keyword_given_p());
+}
+
+/*
+ * call-seq:
+ * Fiber.scheduler -> obj or nil
+ *
+ * Returns the Fiber scheduler, that was last set for the current thread with Fiber.set_scheduler.
+ * Returns +nil+ if no scheduler is set (which is the default), and non-blocking fibers'
+ * behavior is the same as blocking.
+ * (see "Non-blocking fibers" section in class docs for details about the scheduler concept).
+ *
+ */
+static VALUE
+rb_fiber_s_scheduler(VALUE klass)
+{
+ return rb_fiber_scheduler_get();
+}
+
+/*
+ * call-seq:
+ * Fiber.current_scheduler -> obj or nil
+ *
+ * Returns the Fiber scheduler, that was last set for the current thread with Fiber.set_scheduler
+ * if and only if the current fiber is non-blocking.
+ *
+ */
+static VALUE
+rb_fiber_current_scheduler(VALUE klass)
+{
+ return rb_fiber_scheduler_current();
+}
+
+/*
+ * call-seq:
+ * Fiber.set_scheduler(scheduler) -> scheduler
+ *
+ * Sets the Fiber scheduler for the current thread. If the scheduler is set, non-blocking
+ * fibers (created by Fiber.new with <tt>blocking: false</tt>, or by Fiber.schedule)
+ * call that scheduler's hook methods on potentially blocking operations, and the current
+ * thread will call scheduler's +close+ method on finalization (allowing the scheduler to
+ * properly manage all non-finished fibers).
+ *
+ * +scheduler+ can be an object of any class corresponding to Fiber::Scheduler. Its
+ * implementation is up to the user.
+ *
+ * See also the "Non-blocking fibers" section in class docs.
+ *
+ */
+static VALUE
+rb_fiber_set_scheduler(VALUE klass, VALUE scheduler)
+{
+ return rb_fiber_scheduler_set(scheduler);
+}
+
+NORETURN(static void rb_fiber_terminate(rb_fiber_t *fiber, int need_interrupt, VALUE err));
+
+void
+rb_fiber_start(rb_fiber_t *fiber)
+{
+ rb_thread_t * volatile th = fiber->cont.saved_ec.thread_ptr;
+
+ rb_proc_t *proc;
+ enum ruby_tag_type state;
+ int need_interrupt = TRUE;
+
+ VM_ASSERT(th->ec == GET_EC());
+ VM_ASSERT(FIBER_RESUMED_P(fiber));
+
+ if (fiber->blocking) {
+ th->blocking += 1;
+ }
+
+ EC_PUSH_TAG(th->ec);
+ if ((state = EC_EXEC_TAG()) == TAG_NONE) {
+ rb_context_t *cont = &VAR_FROM_MEMORY(fiber)->cont;
+ int argc;
+ const VALUE *argv, args = cont->value;
+ GetProcPtr(fiber->first_proc, proc);
+ argv = (argc = cont->argc) > 1 ? RARRAY_CONST_PTR(args) : &args;
+ cont->value = Qnil;
+ th->ec->errinfo = Qnil;
+ th->ec->root_lep = rb_vm_proc_local_ep(fiber->first_proc);
+ th->ec->root_svar = Qfalse;
+
+ EXEC_EVENT_HOOK(th->ec, RUBY_EVENT_FIBER_SWITCH, th->self, 0, 0, 0, Qnil);
+ cont->value = rb_vm_invoke_proc(th->ec, proc, argc, argv, cont->kw_splat, VM_BLOCK_HANDLER_NONE);
+ }
+ EC_POP_TAG();
+
+ VALUE err = Qfalse;
+ if (state) {
+ err = th->ec->errinfo;
+ VM_ASSERT(FIBER_RESUMED_P(fiber));
+
+ if (state == TAG_RAISE) {
+ // noop...
+ }
+ else if (state == TAG_FATAL) {
+ rb_threadptr_pending_interrupt_enque(th, err);
+ }
+ else {
+ err = rb_vm_make_jump_tag_but_local_jump(state, err);
+ }
+ need_interrupt = TRUE;
+ }
+
+ rb_fiber_terminate(fiber, need_interrupt, err);
+}
+
+// Set up a "root fiber", which is the fiber that every Ractor has.
+void
+rb_threadptr_root_fiber_setup(rb_thread_t *th)
+{
+ rb_fiber_t *fiber = ruby_mimmalloc(sizeof(rb_fiber_t));
+ if (!fiber) {
+ rb_bug("%s", strerror(errno)); /* ... is it possible to call rb_bug here? */
+ }
+ MEMZERO(fiber, rb_fiber_t, 1);
+ fiber->cont.type = FIBER_CONTEXT;
+ fiber->cont.saved_ec.fiber_ptr = fiber;
+ fiber->cont.saved_ec.thread_ptr = th;
+ fiber->blocking = 1;
+ fiber_status_set(fiber, FIBER_RESUMED); /* skip CREATED */
+ th->ec = &fiber->cont.saved_ec;
+ // When rb_threadptr_root_fiber_setup is called for the first time, mjit_enabled and
+ // rb_yjit_enabled_p() are still false. So this does nothing and rb_jit_cont_init() that is
+ // called later will take care of it. However, you still have to call cont_init_jit_cont()
+ // here for other Ractors, which are not initialized by rb_jit_cont_init().
+ cont_init_jit_cont(&fiber->cont);
+}
+
+void
+rb_threadptr_root_fiber_release(rb_thread_t *th)
+{
+ if (th->root_fiber) {
+ /* ignore. A root fiber object will free th->ec */
+ }
+ else {
+ rb_execution_context_t *ec = GET_EC();
+
+ VM_ASSERT(th->ec->fiber_ptr->cont.type == FIBER_CONTEXT);
+ VM_ASSERT(th->ec->fiber_ptr->cont.self == 0);
+
+ if (th->ec == ec) {
+ rb_ractor_set_current_ec(th->ractor, NULL);
+ }
+ fiber_free(th->ec->fiber_ptr);
+ th->ec = NULL;
+ }
+}
+
+void
+rb_threadptr_root_fiber_terminate(rb_thread_t *th)
+{
+ rb_fiber_t *fiber = th->ec->fiber_ptr;
+
+ fiber->status = FIBER_TERMINATED;
+
+ // The vm_stack is `alloca`ed on the thread stack, so it's gone too:
+ rb_ec_clear_vm_stack(th->ec);
+}
+
+static inline rb_fiber_t*
+return_fiber(bool terminate)
+{
+ rb_fiber_t *fiber = fiber_current();
+ rb_fiber_t *prev = fiber->prev;
+
+ if (prev) {
+ fiber->prev = NULL;
+ prev->resuming_fiber = NULL;
+ return prev;
+ }
+ else {
+ if (!terminate) {
+ rb_raise(rb_eFiberError, "attempt to yield on a not resumed fiber");
+ }
+
+ rb_thread_t *th = GET_THREAD();
+ rb_fiber_t *root_fiber = th->root_fiber;
+
+ VM_ASSERT(root_fiber != NULL);
+
+ // search resuming fiber
+ for (fiber = root_fiber; fiber->resuming_fiber; fiber = fiber->resuming_fiber) {
+ }
+
+ return fiber;
+ }
+}
+
+VALUE
+rb_fiber_current(void)
+{
+ return fiber_current()->cont.self;
+}
+
+// Prepare to execute next_fiber on the given thread.
+static inline void
+fiber_store(rb_fiber_t *next_fiber, rb_thread_t *th)
+{
+ rb_fiber_t *fiber;
+
+ if (th->ec->fiber_ptr != NULL) {
+ fiber = th->ec->fiber_ptr;
+ }
+ else {
+ /* create root fiber */
+ fiber = root_fiber_alloc(th);
+ }
+
+ if (FIBER_CREATED_P(next_fiber)) {
+ fiber_prepare_stack(next_fiber);
+ }
+
+ VM_ASSERT(FIBER_RESUMED_P(fiber) || FIBER_TERMINATED_P(fiber));
+ VM_ASSERT(FIBER_RUNNABLE_P(next_fiber));
+
+ if (FIBER_RESUMED_P(fiber)) fiber_status_set(fiber, FIBER_SUSPENDED);
+
+ fiber_status_set(next_fiber, FIBER_RESUMED);
+ fiber_setcontext(next_fiber, fiber);
+}
+
+static inline VALUE
+fiber_switch(rb_fiber_t *fiber, int argc, const VALUE *argv, int kw_splat, rb_fiber_t *resuming_fiber, bool yielding)
+{
+ VALUE value;
+ rb_context_t *cont = &fiber->cont;
+ rb_thread_t *th = GET_THREAD();
+
+ /* make sure the root_fiber object is available */
+ if (th->root_fiber == NULL) root_fiber_alloc(th);
+
+ if (th->ec->fiber_ptr == fiber) {
+ /* ignore fiber context switch
+ * because destination fiber is the same as current fiber
+ */
+ return make_passing_arg(argc, argv);
+ }
+
+ if (cont_thread_value(cont) != th->self) {
+ rb_raise(rb_eFiberError, "fiber called across threads");
+ }
+
+ if (FIBER_TERMINATED_P(fiber)) {
+ value = rb_exc_new2(rb_eFiberError, "dead fiber called");
+
+ if (!FIBER_TERMINATED_P(th->ec->fiber_ptr)) {
+ rb_exc_raise(value);
+ VM_UNREACHABLE(fiber_switch);
+ }
+ else {
+ /* th->ec->fiber_ptr is also dead => switch to root fiber */
+ /* (this means we're being called from rb_fiber_terminate, */
+ /* and the terminated fiber's return_fiber() is already dead) */
+ VM_ASSERT(FIBER_SUSPENDED_P(th->root_fiber));
+
+ cont = &th->root_fiber->cont;
+ cont->argc = -1;
+ cont->value = value;
+
+ fiber_setcontext(th->root_fiber, th->ec->fiber_ptr);
+
+ VM_UNREACHABLE(fiber_switch);
+ }
+ }
+
+ VM_ASSERT(FIBER_RUNNABLE_P(fiber));
+
+ rb_fiber_t *current_fiber = fiber_current();
+
+ VM_ASSERT(!current_fiber->resuming_fiber);
+
+ if (resuming_fiber) {
+ current_fiber->resuming_fiber = resuming_fiber;
+ fiber->prev = fiber_current();
+ fiber->yielding = 0;
+ }
+
+ VM_ASSERT(!current_fiber->yielding);
+ if (yielding) {
+ current_fiber->yielding = 1;
+ }
+
+ if (current_fiber->blocking) {
+ th->blocking -= 1;
+ }
+
+ cont->argc = argc;
+ cont->kw_splat = kw_splat;
+ cont->value = make_passing_arg(argc, argv);
+
+ fiber_store(fiber, th);
+
+ // We cannot free the stack until the pthread is joined:
+#ifndef COROUTINE_PTHREAD_CONTEXT
+ if (resuming_fiber && FIBER_TERMINATED_P(fiber)) {
+ fiber_stack_release(fiber);
+ }
+#endif
+
+ if (fiber_current()->blocking) {
+ th->blocking += 1;
+ }
+
+ RUBY_VM_CHECK_INTS(th->ec);
+
+ EXEC_EVENT_HOOK(th->ec, RUBY_EVENT_FIBER_SWITCH, th->self, 0, 0, 0, Qnil);
+
+ current_fiber = th->ec->fiber_ptr;
+ value = current_fiber->cont.value;
+ if (current_fiber->cont.argc == -1) rb_exc_raise(value);
+ return value;
+}
+
+VALUE
+rb_fiber_transfer(VALUE fiber_value, int argc, const VALUE *argv)
+{
+ return fiber_switch(fiber_ptr(fiber_value), argc, argv, RB_NO_KEYWORDS, NULL, false);
+}
+
+/*
+ * call-seq:
+ * fiber.blocking? -> true or false
+ *
+ * Returns +true+ if +fiber+ is blocking and +false+ otherwise.
+ * Fiber is non-blocking if it was created via passing <tt>blocking: false</tt>
+ * to Fiber.new, or via Fiber.schedule.
+ *
+ * Note that, even if the method returns +false+, the fiber behaves differently
+ * only if Fiber.scheduler is set in the current thread.
+ *
+ * See the "Non-blocking fibers" section in class docs for details.
+ *
+ */
+VALUE
+rb_fiber_blocking_p(VALUE fiber)
+{
+ return RBOOL(fiber_ptr(fiber)->blocking);
+}
+
+static VALUE
+fiber_blocking_yield(VALUE fiber_value)
+{
+ rb_fiber_t *fiber = fiber_ptr(fiber_value);
+ rb_thread_t * volatile th = fiber->cont.saved_ec.thread_ptr;
+
+ // fiber->blocking is `unsigned int : 1`, so we use it as a boolean:
+ fiber->blocking = 1;
+
+ // Once the fiber is blocking, and current, we increment the thread blocking state:
+ th->blocking += 1;
+
+ return rb_yield(fiber_value);
+}
+
+static VALUE
+fiber_blocking_ensure(VALUE fiber_value)
+{
+ rb_fiber_t *fiber = fiber_ptr(fiber_value);
+ rb_thread_t * volatile th = fiber->cont.saved_ec.thread_ptr;
+
+ // We are no longer blocking:
+ fiber->blocking = 0;
+ th->blocking -= 1;
+
+ return Qnil;
+}
+
+/*
+ * call-seq:
+ * Fiber.blocking{|fiber| ...} -> result
+ *
+ * Forces the fiber to be blocking for the duration of the block. Returns the
+ * result of the block.
+ *
+ * See the "Non-blocking fibers" section in class docs for details.
+ *
+ */
+VALUE
+rb_fiber_blocking(VALUE class)
+{
+ VALUE fiber_value = rb_fiber_current();
+ rb_fiber_t *fiber = fiber_ptr(fiber_value);
+
+ // If we are already blocking, this is essentially a no-op:
+ if (fiber->blocking) {
+ return rb_yield(fiber_value);
+ }
+ else {
+ return rb_ensure(fiber_blocking_yield, fiber_value, fiber_blocking_ensure, fiber_value);
+ }
+}
+
+/*
+ * call-seq:
+ * Fiber.blocking? -> false or 1
+ *
+ * Returns +false+ if the current fiber is non-blocking.
+ * Fiber is non-blocking if it was created via passing <tt>blocking: false</tt>
+ * to Fiber.new, or via Fiber.schedule.
+ *
+ * If the current Fiber is blocking, the method returns 1.
+ * Future developments may allow for situations where larger integers
+ * could be returned.
+ *
+ * Note that, even if the method returns +false+, Fiber behaves differently
+ * only if Fiber.scheduler is set in the current thread.
+ *
+ * See the "Non-blocking fibers" section in class docs for details.
+ *
+ */
+static VALUE
+rb_fiber_s_blocking_p(VALUE klass)
+{
+ rb_thread_t *thread = GET_THREAD();
+ unsigned blocking = thread->blocking;
+
+ if (blocking == 0)
+ return Qfalse;
+
+ return INT2NUM(blocking);
+}
+
+void
+rb_fiber_close(rb_fiber_t *fiber)
+{
+ fiber_status_set(fiber, FIBER_TERMINATED);
+}
+
+static void
+rb_fiber_terminate(rb_fiber_t *fiber, int need_interrupt, VALUE error)
+{
+ VALUE value = fiber->cont.value;
+
+ VM_ASSERT(FIBER_RESUMED_P(fiber));
+ rb_fiber_close(fiber);
+
+ fiber->cont.machine.stack = NULL;
+ fiber->cont.machine.stack_size = 0;
+
+ rb_fiber_t *next_fiber = return_fiber(true);
+
+ if (need_interrupt) RUBY_VM_SET_INTERRUPT(&next_fiber->cont.saved_ec);
+
+ if (RTEST(error))
+ fiber_switch(next_fiber, -1, &error, RB_NO_KEYWORDS, NULL, false);
+ else
+ fiber_switch(next_fiber, 1, &value, RB_NO_KEYWORDS, NULL, false);
+ ruby_stop(0);
+}
+
+static VALUE
+fiber_resume_kw(rb_fiber_t *fiber, int argc, const VALUE *argv, int kw_splat)
+{
+ rb_fiber_t *current_fiber = fiber_current();
+
+ if (argc == -1 && FIBER_CREATED_P(fiber)) {
+ rb_raise(rb_eFiberError, "cannot raise exception on unborn fiber");
+ }
+ else if (FIBER_TERMINATED_P(fiber)) {
+ rb_raise(rb_eFiberError, "attempt to resume a terminated fiber");
+ }
+ else if (fiber == current_fiber) {
+ rb_raise(rb_eFiberError, "attempt to resume the current fiber");
+ }
+ else if (fiber->prev != NULL) {
+ rb_raise(rb_eFiberError, "attempt to resume a resumed fiber (double resume)");
+ }
+ else if (fiber->resuming_fiber) {
+ rb_raise(rb_eFiberError, "attempt to resume a resuming fiber");
+ }
+ else if (fiber->prev == NULL &&
+ (!fiber->yielding && fiber->status != FIBER_CREATED)) {
+ rb_raise(rb_eFiberError, "attempt to resume a transferring fiber");
+ }
+
+ return fiber_switch(fiber, argc, argv, kw_splat, fiber, false);
+}
+
+VALUE
+rb_fiber_resume_kw(VALUE self, int argc, const VALUE *argv, int kw_splat)
+{
+ return fiber_resume_kw(fiber_ptr(self), argc, argv, kw_splat);
+}
+
+VALUE
+rb_fiber_resume(VALUE self, int argc, const VALUE *argv)
+{
+ return fiber_resume_kw(fiber_ptr(self), argc, argv, RB_NO_KEYWORDS);
+}
+
+VALUE
+rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat)
+{
+ return fiber_switch(return_fiber(false), argc, argv, kw_splat, NULL, true);
+}
+
+VALUE
+rb_fiber_yield(int argc, const VALUE *argv)
+{
+ return fiber_switch(return_fiber(false), argc, argv, RB_NO_KEYWORDS, NULL, true);
+}
+
+void
+rb_fiber_reset_root_local_storage(rb_thread_t *th)
+{
+ if (th->root_fiber && th->root_fiber != th->ec->fiber_ptr) {
+ th->ec->local_storage = th->root_fiber->cont.saved_ec.local_storage;
+ }
+}
+
+/*
+ * call-seq:
+ * fiber.alive? -> true or false
+ *
+ * Returns true if the fiber can still be resumed (or transferred
+ * to). After finishing execution of the fiber block this method will
+ * always return +false+.
+ */
+VALUE
+rb_fiber_alive_p(VALUE fiber_value)
+{
+ return RBOOL(!FIBER_TERMINATED_P(fiber_ptr(fiber_value)));
+}
+
+/*
+ * call-seq:
+ * fiber.resume(args, ...) -> obj
+ *
+ * Resumes the fiber from the point at which the last Fiber.yield was
+ * called, or starts running it if it is the first call to
+ * #resume. Arguments passed to resume will be the value of the
+ * Fiber.yield expression or will be passed as block parameters to
+ * the fiber's block if this is the first #resume.
+ *
+ * Alternatively, when resume is called it evaluates to the arguments passed
+ * to the next Fiber.yield statement inside the fiber's block
+ * or to the block value if it runs to completion without any
+ * Fiber.yield
+ */
+static VALUE
+rb_fiber_m_resume(int argc, VALUE *argv, VALUE fiber)
+{
+ return rb_fiber_resume_kw(fiber, argc, argv, rb_keyword_given_p());
+}
+
+/*
+ * call-seq:
+ * fiber.backtrace -> array
+ * fiber.backtrace(start) -> array
+ * fiber.backtrace(start, count) -> array
+ * fiber.backtrace(start..end) -> array
+ *
+ * Returns the current execution stack of the fiber. +start+, +count+ and +end+ allow
+ * to select only parts of the backtrace.
+ *
+ * def level3
+ * Fiber.yield
+ * end
+ *
+ * def level2
+ * level3
+ * end
+ *
+ * def level1
+ * level2
+ * end
+ *
+ * f = Fiber.new { level1 }
+ *
+ * # It is empty before the fiber started
+ * f.backtrace
+ * #=> []
+ *
+ * f.resume
+ *
+ * f.backtrace
+ * #=> ["test.rb:2:in `yield'", "test.rb:2:in `level3'", "test.rb:6:in `level2'", "test.rb:10:in `level1'", "test.rb:13:in `block in <main>'"]
+ * p f.backtrace(1) # start from the item 1
+ * #=> ["test.rb:2:in `level3'", "test.rb:6:in `level2'", "test.rb:10:in `level1'", "test.rb:13:in `block in <main>'"]
+ * p f.backtrace(2, 2) # start from item 2, take 2
+ * #=> ["test.rb:6:in `level2'", "test.rb:10:in `level1'"]
+ * p f.backtrace(1..3) # take items from 1 to 3
+ * #=> ["test.rb:2:in `level3'", "test.rb:6:in `level2'", "test.rb:10:in `level1'"]
+ *
+ * f.resume
+ *
+ * # It is nil after the fiber is finished
+ * f.backtrace
+ * #=> nil
+ *
+ */
+static VALUE
+rb_fiber_backtrace(int argc, VALUE *argv, VALUE fiber)
+{
+ return rb_vm_backtrace(argc, argv, &fiber_ptr(fiber)->cont.saved_ec);
+}
+
+/*
+ * call-seq:
+ * fiber.backtrace_locations -> array
+ * fiber.backtrace_locations(start) -> array
+ * fiber.backtrace_locations(start, count) -> array
+ * fiber.backtrace_locations(start..end) -> array
+ *
+ * Like #backtrace, but returns each line of the execution stack as a
+ * Thread::Backtrace::Location. Accepts the same arguments as #backtrace.
+ *
+ * f = Fiber.new { Fiber.yield }
+ * f.resume
+ * loc = f.backtrace_locations.first
+ * loc.label #=> "yield"
+ * loc.path #=> "test.rb"
+ * loc.lineno #=> 1
+ *
+ *
+ */
+static VALUE
+rb_fiber_backtrace_locations(int argc, VALUE *argv, VALUE fiber)
+{
+ return rb_vm_backtrace_locations(argc, argv, &fiber_ptr(fiber)->cont.saved_ec);
+}
+
+/*
+ * call-seq:
+ * fiber.transfer(args, ...) -> obj
+ *
+ * Transfer control to another fiber, resuming it from where it last
+ * stopped or starting it if it was not resumed before. The calling
+ * fiber will be suspended much like in a call to
+ * Fiber.yield.
+ *
+ * The fiber which receives the transfer call treats it much like
+ * a resume call. Arguments passed to transfer are treated like those
+ * passed to resume.
+ *
+ * The two style of control passing to and from fiber (one is #resume and
+ * Fiber::yield, another is #transfer to and from fiber) can't be freely
+ * mixed.
+ *
+ * * If the Fiber's lifecycle had started with transfer, it will never
+ * be able to yield or be resumed control passing, only
+ * finish or transfer back. (It still can resume other fibers that
+ * are allowed to be resumed.)
+ * * If the Fiber's lifecycle had started with resume, it can yield
+ * or transfer to another Fiber, but can receive control back only
+ * the way compatible with the way it was given away: if it had
+ * transferred, it only can be transferred back, and if it had
+ * yielded, it only can be resumed back. After that, it again can
+ * transfer or yield.
+ *
+ * If those rules are broken FiberError is raised.
+ *
+ * For an individual Fiber design, yield/resume is easier to use
+ * (the Fiber just gives away control, it doesn't need to think
+ * about who the control is given to), while transfer is more flexible
+ * for complex cases, allowing to build arbitrary graphs of Fibers
+ * dependent on each other.
+ *
+ *
+ * Example:
+ *
+ * manager = nil # For local var to be visible inside worker block
+ *
+ * # This fiber would be started with transfer
+ * # It can't yield, and can't be resumed
+ * worker = Fiber.new { |work|
+ * puts "Worker: starts"
+ * puts "Worker: Performed #{work.inspect}, transferring back"
+ * # Fiber.yield # this would raise FiberError: attempt to yield on a not resumed fiber
+ * # manager.resume # this would raise FiberError: attempt to resume a resumed fiber (double resume)
+ * manager.transfer(work.capitalize)
+ * }
+ *
+ * # This fiber would be started with resume
+ * # It can yield or transfer, and can be transferred
+ * # back or resumed
+ * manager = Fiber.new {
+ * puts "Manager: starts"
+ * puts "Manager: transferring 'something' to worker"
+ * result = worker.transfer('something')
+ * puts "Manager: worker returned #{result.inspect}"
+ * # worker.resume # this would raise FiberError: attempt to resume a transferring fiber
+ * Fiber.yield # this is OK, the fiber transferred from and to, now it can yield
+ * puts "Manager: finished"
+ * }
+ *
+ * puts "Starting the manager"
+ * manager.resume
+ * puts "Resuming the manager"
+ * # manager.transfer # this would raise FiberError: attempt to transfer to a yielding fiber
+ * manager.resume
+ *
+ * <em>produces</em>
+ *
+ * Starting the manager
+ * Manager: starts
+ * Manager: transferring 'something' to worker
+ * Worker: starts
+ * Worker: Performed "something", transferring back
+ * Manager: worker returned "Something"
+ * Resuming the manager
+ * Manager: finished
+ *
+ */
+static VALUE
+rb_fiber_m_transfer(int argc, VALUE *argv, VALUE self)
+{
+ return rb_fiber_transfer_kw(self, argc, argv, rb_keyword_given_p());
+}
+
+static VALUE
+fiber_transfer_kw(rb_fiber_t *fiber, int argc, const VALUE *argv, int kw_splat)
+{
+ if (fiber->resuming_fiber) {
+ rb_raise(rb_eFiberError, "attempt to transfer to a resuming fiber");
+ }
+
+ if (fiber->yielding) {
+ rb_raise(rb_eFiberError, "attempt to transfer to a yielding fiber");
+ }
+
+ return fiber_switch(fiber, argc, argv, kw_splat, NULL, false);
+}
+
+VALUE
+rb_fiber_transfer_kw(VALUE self, int argc, const VALUE *argv, int kw_splat)
+{
+ return fiber_transfer_kw(fiber_ptr(self), argc, argv, kw_splat);
+}
+
+/*
+ * call-seq:
+ * Fiber.yield(args, ...) -> obj
+ *
+ * Yields control back to the context that resumed the fiber, passing
+ * along any arguments that were passed to it. The fiber will resume
+ * processing at this point when #resume is called next.
+ * Any arguments passed to the next #resume will be the value that
+ * this Fiber.yield expression evaluates to.
+ */
+static VALUE
+rb_fiber_s_yield(int argc, VALUE *argv, VALUE klass)
+{
+ return rb_fiber_yield_kw(argc, argv, rb_keyword_given_p());
+}
+
+static VALUE
+fiber_raise(rb_fiber_t *fiber, int argc, const VALUE *argv)
+{
+ VALUE exception = rb_make_exception(argc, argv);
+
+ if (fiber->resuming_fiber) {
+ rb_raise(rb_eFiberError, "attempt to raise a resuming fiber");
+ }
+ else if (FIBER_SUSPENDED_P(fiber) && !fiber->yielding) {
+ return fiber_transfer_kw(fiber, -1, &exception, RB_NO_KEYWORDS);
+ }
+ else {
+ return fiber_resume_kw(fiber, -1, &exception, RB_NO_KEYWORDS);
+ }
+}
+
+VALUE
+rb_fiber_raise(VALUE fiber, int argc, const VALUE *argv)
+{
+ return fiber_raise(fiber_ptr(fiber), argc, argv);
+}
+
+/*
+ * call-seq:
+ * fiber.raise -> obj
+ * fiber.raise(string) -> obj
+ * fiber.raise(exception [, string [, array]]) -> obj
+ *
+ * Raises an exception in the fiber at the point at which the last
+ * +Fiber.yield+ was called. If the fiber has not been started or has
+ * already run to completion, raises +FiberError+. If the fiber is
+ * yielding, it is resumed. If it is transferring, it is transferred into.
+ * But if it is resuming, raises +FiberError+.
+ *
+ * With no arguments, raises a +RuntimeError+. With a single +String+
+ * argument, raises a +RuntimeError+ with the string as a message. Otherwise,
+ * the first parameter should be the name of an +Exception+ class (or an
+ * object that returns an +Exception+ object when sent an +exception+
+ * message). The optional second parameter sets the message associated with
+ * the exception, and the third parameter is an array of callback information.
+ * Exceptions are caught by the +rescue+ clause of <code>begin...end</code>
+ * blocks.
+ */
+static VALUE
+rb_fiber_m_raise(int argc, VALUE *argv, VALUE self)
+{
+ return rb_fiber_raise(self, argc, argv);
+}
+
+/*
+ * call-seq:
+ * Fiber.current -> fiber
+ *
+ * Returns the current fiber. If you are not running in the context of
+ * a fiber this method will return the root fiber.
+ */
+static VALUE
+rb_fiber_s_current(VALUE klass)
+{
+ return rb_fiber_current();
+}
+
+static VALUE
+fiber_to_s(VALUE fiber_value)
+{
+ const rb_fiber_t *fiber = fiber_ptr(fiber_value);
+ const rb_proc_t *proc;
+ char status_info[0x20];
+
+ if (fiber->resuming_fiber) {
+ snprintf(status_info, 0x20, " (%s by resuming)", fiber_status_name(fiber->status));
+ }
+ else {
+ snprintf(status_info, 0x20, " (%s)", fiber_status_name(fiber->status));
+ }
+
+ if (!rb_obj_is_proc(fiber->first_proc)) {
+ VALUE str = rb_any_to_s(fiber_value);
+ strlcat(status_info, ">", sizeof(status_info));
+ rb_str_set_len(str, RSTRING_LEN(str)-1);
+ rb_str_cat_cstr(str, status_info);
+ return str;
+ }
+ GetProcPtr(fiber->first_proc, proc);
+ return rb_block_to_s(fiber_value, &proc->block, status_info);
+}
+
+#ifdef HAVE_WORKING_FORK
+void
+rb_fiber_atfork(rb_thread_t *th)
+{
+ if (th->root_fiber) {
+ if (&th->root_fiber->cont.saved_ec != th->ec) {
+ th->root_fiber = th->ec->fiber_ptr;
+ }
+ th->root_fiber->prev = 0;
+ }
+}
+#endif
+
+#ifdef RB_EXPERIMENTAL_FIBER_POOL
+static void
+fiber_pool_free(void *ptr)
+{
+ struct fiber_pool * fiber_pool = ptr;
+ RUBY_FREE_ENTER("fiber_pool");
+
+ fiber_pool_allocation_free(fiber_pool->allocations);
+ ruby_xfree(fiber_pool);
+
+ RUBY_FREE_LEAVE("fiber_pool");
+}
+
+static size_t
+fiber_pool_memsize(const void *ptr)
+{
+ const struct fiber_pool * fiber_pool = ptr;
+ size_t size = sizeof(*fiber_pool);
+
+ size += fiber_pool->count * fiber_pool->size;
+
+ return size;
+}
+
+static const rb_data_type_t FiberPoolDataType = {
+ "fiber_pool",
+ {NULL, fiber_pool_free, fiber_pool_memsize,},
+ 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
+};
+
+static VALUE
+fiber_pool_alloc(VALUE klass)
+{
+ struct fiber_pool *fiber_pool;
+
+ return TypedData_Make_Struct(klass, struct fiber_pool, &FiberPoolDataType, fiber_pool);
+}
+
+static VALUE
+rb_fiber_pool_initialize(int argc, VALUE* argv, VALUE self)
+{
+ rb_thread_t *th = GET_THREAD();
+ VALUE size = Qnil, count = Qnil, vm_stack_size = Qnil;
+ struct fiber_pool * fiber_pool = NULL;
+
+ // Maybe these should be keyword arguments.
+ rb_scan_args(argc, argv, "03", &size, &count, &vm_stack_size);
+
+ if (NIL_P(size)) {
+ size = SIZET2NUM(th->vm->default_params.fiber_machine_stack_size);
+ }
+
+ if (NIL_P(count)) {
+ count = INT2NUM(128);
+ }
+
+ if (NIL_P(vm_stack_size)) {
+ vm_stack_size = SIZET2NUM(th->vm->default_params.fiber_vm_stack_size);
+ }
+
+ TypedData_Get_Struct(self, struct fiber_pool, &FiberPoolDataType, fiber_pool);
+
+ fiber_pool_initialize(fiber_pool, NUM2SIZET(size), NUM2SIZET(count), NUM2SIZET(vm_stack_size));
+
+ return self;
+}
+#endif
+
+/*
+ * Document-class: FiberError
+ *
+ * Raised when an invalid operation is attempted on a Fiber, in
+ * particular when attempting to call/resume a dead fiber,
+ * attempting to yield from the root fiber, or calling a fiber across
+ * threads.
+ *
+ * fiber = Fiber.new{}
+ * fiber.resume #=> nil
+ * fiber.resume #=> FiberError: dead fiber called
+ */
+
+void
+Init_Cont(void)
+{
+ rb_thread_t *th = GET_THREAD();
+ size_t vm_stack_size = th->vm->default_params.fiber_vm_stack_size;
+ size_t machine_stack_size = th->vm->default_params.fiber_machine_stack_size;
+ size_t stack_size = machine_stack_size + vm_stack_size;
+
+#ifdef _WIN32
+ SYSTEM_INFO info;
+ GetSystemInfo(&info);
+ pagesize = info.dwPageSize;
+#else /* not WIN32 */
+ pagesize = sysconf(_SC_PAGESIZE);
+#endif
+ SET_MACHINE_STACK_END(&th->ec->machine.stack_end);
+
+ fiber_pool_initialize(&shared_fiber_pool, stack_size, FIBER_POOL_INITIAL_SIZE, vm_stack_size);
+
+ fiber_initialize_keywords[0] = rb_intern_const("blocking");
+ fiber_initialize_keywords[1] = rb_intern_const("pool");
+ fiber_initialize_keywords[2] = rb_intern_const("storage");
+
+ const char *fiber_shared_fiber_pool_free_stacks = getenv("RUBY_SHARED_FIBER_POOL_FREE_STACKS");
+ if (fiber_shared_fiber_pool_free_stacks) {
+ shared_fiber_pool.free_stacks = atoi(fiber_shared_fiber_pool_free_stacks);
+ }
+
+ rb_cFiber = rb_define_class("Fiber", rb_cObject);
+ rb_define_alloc_func(rb_cFiber, fiber_alloc);
+ rb_eFiberError = rb_define_class("FiberError", rb_eStandardError);
+ rb_define_singleton_method(rb_cFiber, "yield", rb_fiber_s_yield, -1);
+ rb_define_singleton_method(rb_cFiber, "current", rb_fiber_s_current, 0);
+ rb_define_singleton_method(rb_cFiber, "blocking", rb_fiber_blocking, 0);
+ rb_define_singleton_method(rb_cFiber, "[]", rb_fiber_storage_aref, 1);
+ rb_define_singleton_method(rb_cFiber, "[]=", rb_fiber_storage_aset, 2);
+
+ rb_define_method(rb_cFiber, "initialize", rb_fiber_initialize, -1);
+ rb_define_method(rb_cFiber, "blocking?", rb_fiber_blocking_p, 0);
+ rb_define_method(rb_cFiber, "storage", rb_fiber_storage_get, 0);
+ rb_define_method(rb_cFiber, "storage=", rb_fiber_storage_set, 1);
+ rb_define_method(rb_cFiber, "resume", rb_fiber_m_resume, -1);
+ rb_define_method(rb_cFiber, "raise", rb_fiber_m_raise, -1);
+ rb_define_method(rb_cFiber, "backtrace", rb_fiber_backtrace, -1);
+ rb_define_method(rb_cFiber, "backtrace_locations", rb_fiber_backtrace_locations, -1);
+ rb_define_method(rb_cFiber, "to_s", fiber_to_s, 0);
+ rb_define_alias(rb_cFiber, "inspect", "to_s");
+ rb_define_method(rb_cFiber, "transfer", rb_fiber_m_transfer, -1);
+ rb_define_method(rb_cFiber, "alive?", rb_fiber_alive_p, 0);
+
+ rb_define_singleton_method(rb_cFiber, "blocking?", rb_fiber_s_blocking_p, 0);
+ rb_define_singleton_method(rb_cFiber, "scheduler", rb_fiber_s_scheduler, 0);
+ rb_define_singleton_method(rb_cFiber, "set_scheduler", rb_fiber_set_scheduler, 1);
+ rb_define_singleton_method(rb_cFiber, "current_scheduler", rb_fiber_current_scheduler, 0);
+
+ rb_define_singleton_method(rb_cFiber, "schedule", rb_fiber_s_schedule, -1);
+
+#ifdef RB_EXPERIMENTAL_FIBER_POOL
+ rb_cFiberPool = rb_define_class_under(rb_cFiber, "Pool", rb_cObject);
+ rb_define_alloc_func(rb_cFiberPool, fiber_pool_alloc);
+ rb_define_method(rb_cFiberPool, "initialize", rb_fiber_pool_initialize, -1);
+#endif
+
+ rb_provide("fiber.so");
+}
+
+RUBY_SYMBOL_EXPORT_BEGIN
+
+void
+ruby_Init_Continuation_body(void)
+{
+ rb_cContinuation = rb_define_class("Continuation", rb_cObject);
+ rb_undef_alloc_func(rb_cContinuation);
+ rb_undef_method(CLASS_OF(rb_cContinuation), "new");
+ rb_define_method(rb_cContinuation, "call", rb_cont_call, -1);
+ rb_define_method(rb_cContinuation, "[]", rb_cont_call, -1);
+ rb_define_global_function("callcc", rb_callcc, 0);
+}
+
+RUBY_SYMBOL_EXPORT_END
diff --git a/coroutine/amd64/Context.S b/coroutine/amd64/Context.S
new file mode 100644
index 0000000000..d50732adbc
--- /dev/null
+++ b/coroutine/amd64/Context.S
@@ -0,0 +1,46 @@
+##
+## This file is part of the "Coroutine" project and released under the MIT License.
+##
+## Created by Samuel Williams on 10/5/2018.
+## Copyright, 2018, by Samuel Williams.
+##
+
+#define TOKEN_PASTE(x,y) x##y
+#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
+
+.text
+
+.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
+PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
+
+ # Save caller state
+ pushq %rbp
+ pushq %rbx
+ pushq %r12
+ pushq %r13
+ pushq %r14
+ pushq %r15
+
+ # Save caller stack pointer
+ movq %rsp, (%rdi)
+
+ # Restore callee stack pointer
+ movq (%rsi), %rsp
+
+ # Restore callee state
+ popq %r15
+ popq %r14
+ popq %r13
+ popq %r12
+ popq %rbx
+ popq %rbp
+
+ # Put the first argument into the return value
+ movq %rdi, %rax
+
+ # We pop the return address and jump to it
+ ret
+
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__ELF__)
+.section .note.GNU-stack,"",%progbits
+#endif
diff --git a/coroutine/amd64/Context.h b/coroutine/amd64/Context.h
new file mode 100644
index 0000000000..44daa4e01a
--- /dev/null
+++ b/coroutine/amd64/Context.h
@@ -0,0 +1,85 @@
+#ifndef COROUTINE_AMD64_CONTEXT_H
+#define COROUTINE_AMD64_CONTEXT_H 1
+
+/*
+ * This file is part of the "Coroutine" project and released under the MIT License.
+ *
+ * Created by Samuel Williams on 10/5/2018.
+ * Copyright, 2018, by Samuel Williams.
+*/
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define COROUTINE __attribute__((noreturn)) void
+
+enum {COROUTINE_REGISTERS = 6};
+
+#if defined(__SANITIZE_ADDRESS__)
+ #define COROUTINE_SANITIZE_ADDRESS
+#elif defined(__has_feature)
+ #if __has_feature(address_sanitizer)
+ #define COROUTINE_SANITIZE_ADDRESS
+ #endif
+#endif
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+#include <sanitizer/common_interface_defs.h>
+#include <sanitizer/asan_interface.h>
+#endif
+
+struct coroutine_context
+{
+ void **stack_pointer;
+ void *argument;
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+ void *fake_stack;
+ void *stack_base;
+ size_t stack_size;
+#endif
+};
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ context->stack_pointer = NULL;
+}
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+ context->fake_stack = NULL;
+ context->stack_base = stack;
+ context->stack_size = size;
+#endif
+
+ // Stack grows down. Force 16-byte alignment.
+ char * top = (char*)stack + size;
+ context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
+
+ *--context->stack_pointer = NULL;
+ *--context->stack_pointer = (void*)start;
+
+ context->stack_pointer -= COROUTINE_REGISTERS;
+ memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
+}
+
+struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+ context->stack_pointer = NULL;
+}
+
+#endif /* COROUTINE_AMD64_CONTEXT_H */
diff --git a/coroutine/arm32/Context.S b/coroutine/arm32/Context.S
new file mode 100644
index 0000000000..1850c4c408
--- /dev/null
+++ b/coroutine/arm32/Context.S
@@ -0,0 +1,33 @@
+##
+## This file is part of the "Coroutine" project and released under the MIT License.
+##
+## Created by Samuel Williams on 10/5/2018.
+## Copyright, 2018, by Samuel Williams.
+##
+
+#define TOKEN_PASTE(x,y) x##y
+#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
+
+.file "Context.S"
+.text
+.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
+.align 2
+.type PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer),%function
+.syntax unified
+
+PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
+ # Save caller state (8 registers + return address)
+ push {r4-r11,lr}
+
+ # Save caller stack pointer
+ str sp, [r0]
+
+ # Restore callee stack pointer
+ ldr sp, [r1]
+
+ # Restore callee state (8 registers program counter)
+ pop {r4-r11,pc}
+
+#if defined(__linux__) && defined(__ELF__)
+.section .note.GNU-stack,"",%progbits
+#endif
diff --git a/coroutine/arm32/Context.h b/coroutine/arm32/Context.h
new file mode 100644
index 0000000000..09410eb25d
--- /dev/null
+++ b/coroutine/arm32/Context.h
@@ -0,0 +1,59 @@
+#ifndef COROUTINE_ARM32_CONTEXT_H
+#define COROUTINE_ARM32_CONTEXT_H 1
+
+/*
+ * This file is part of the "Coroutine" project and released under the MIT License.
+ *
+ * Created by Samuel Williams on 10/5/2018.
+ * Copyright, 2018, by Samuel Williams.
+*/
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define COROUTINE __attribute__((noreturn)) void
+#define COROUTINE_LIMITED_ADDRESS_SPACE
+
+enum {COROUTINE_REGISTERS = 8};
+
+struct coroutine_context
+{
+ void **stack_pointer;
+ void *argument;
+};
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ context->stack_pointer = NULL;
+}
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+ // Stack grows down. Force 16-byte alignment.
+ char * top = (char*)stack + size;
+ context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
+
+ *--context->stack_pointer = (void*)start;
+
+ context->stack_pointer -= COROUTINE_REGISTERS;
+ memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
+}
+
+struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+}
+
+#endif /* COROUTINE_ARM32_CONTEXT_H */
diff --git a/coroutine/arm64/Context.S b/coroutine/arm64/Context.S
new file mode 100644
index 0000000000..07d50d30df
--- /dev/null
+++ b/coroutine/arm64/Context.S
@@ -0,0 +1,73 @@
+##
+## This file is part of the "Coroutine" project and released under the MIT License.
+##
+## Created by Samuel Williams on 10/5/2018.
+## Copyright, 2018, by Samuel Williams.
+##
+
+#define TOKEN_PASTE(x,y) x##y
+#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
+
+#if defined(__APPLE__)
+#define x29 fp
+#define x30 lr
+.text
+.p2align 2
+#else
+.text
+.align 2
+#endif
+
+.global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
+PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
+
+ # Make space on the stack for caller registers
+ sub sp, sp, 0xb0
+
+ # Save caller registers
+ stp d8, d9, [sp, 0x00]
+ stp d10, d11, [sp, 0x10]
+ stp d12, d13, [sp, 0x20]
+ stp d14, d15, [sp, 0x30]
+ stp x19, x20, [sp, 0x40]
+ stp x21, x22, [sp, 0x50]
+ stp x23, x24, [sp, 0x60]
+ stp x25, x26, [sp, 0x70]
+ stp x27, x28, [sp, 0x80]
+ stp x29, x30, [sp, 0x90]
+
+ # Save return address
+ str x30, [sp, 0xa0]
+
+ # Save stack pointer to x0 (first argument)
+ mov x2, sp
+ str x2, [x0, 0]
+
+ # Load stack pointer from x1 (second argument)
+ ldr x3, [x1, 0]
+ mov sp, x3
+
+ # Restore caller registers
+ ldp d8, d9, [sp, 0x00]
+ ldp d10, d11, [sp, 0x10]
+ ldp d12, d13, [sp, 0x20]
+ ldp d14, d15, [sp, 0x30]
+ ldp x19, x20, [sp, 0x40]
+ ldp x21, x22, [sp, 0x50]
+ ldp x23, x24, [sp, 0x60]
+ ldp x25, x26, [sp, 0x70]
+ ldp x27, x28, [sp, 0x80]
+ ldp x29, x30, [sp, 0x90]
+
+ # Load return address into x4
+ ldr x4, [sp, 0xa0]
+
+ # Pop stack frame
+ add sp, sp, 0xb0
+
+ # Jump to return address (in x4)
+ ret x4
+
+#if defined(__linux__) && defined(__ELF__)
+.section .note.GNU-stack,"",%progbits
+#endif
diff --git a/coroutine/arm64/Context.h b/coroutine/arm64/Context.h
new file mode 100644
index 0000000000..1472621f48
--- /dev/null
+++ b/coroutine/arm64/Context.h
@@ -0,0 +1,83 @@
+#ifndef COROUTINE_ARM64_CONTEXT_H
+#define COROUTINE_ARM64_CONTEXT_H 1
+
+/*
+ * This file is part of the "Coroutine" project and released under the MIT License.
+ *
+ * Created by Samuel Williams on 10/5/2018.
+ * Copyright, 2018, by Samuel Williams.
+*/
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define COROUTINE __attribute__((noreturn)) void
+
+enum {COROUTINE_REGISTERS = 0xb0 / 8};
+
+#if defined(__SANITIZE_ADDRESS__)
+ #define COROUTINE_SANITIZE_ADDRESS
+#elif defined(__has_feature)
+ #if __has_feature(address_sanitizer)
+ #define COROUTINE_SANITIZE_ADDRESS
+ #endif
+#endif
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+#include <sanitizer/common_interface_defs.h>
+#include <sanitizer/asan_interface.h>
+#endif
+
+struct coroutine_context
+{
+ void **stack_pointer;
+ void *argument;
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+ void *fake_stack;
+ void *stack_base;
+ size_t stack_size;
+#endif
+};
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ context->stack_pointer = NULL;
+}
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+#if defined(COROUTINE_SANITIZE_ADDRESS)
+ context->fake_stack = NULL;
+ context->stack_base = stack;
+ context->stack_size = size;
+#endif
+
+ // Stack grows down. Force 16-byte alignment.
+ char * top = (char*)stack + size;
+ context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
+
+ context->stack_pointer -= COROUTINE_REGISTERS;
+ memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
+
+ context->stack_pointer[0xa0 / 8] = (void*)start;
+}
+
+struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+}
+
+#endif /* COROUTINE_ARM64_CONTEXT_H */
diff --git a/coroutine/asyncify/Context.c b/coroutine/asyncify/Context.c
new file mode 100644
index 0000000000..303e5f4429
--- /dev/null
+++ b/coroutine/asyncify/Context.c
@@ -0,0 +1,10 @@
+#include "Context.h"
+
+void coroutine_trampoline(void * _start, void * _context)
+{
+ coroutine_start start = (coroutine_start)_start;
+ struct coroutine_context * context = _context;
+ rb_wasm_set_stack_pointer(context->current_sp);
+
+ start(context->from, context);
+}
diff --git a/coroutine/asyncify/Context.h b/coroutine/asyncify/Context.h
new file mode 100644
index 0000000000..71791a4004
--- /dev/null
+++ b/coroutine/asyncify/Context.h
@@ -0,0 +1,93 @@
+#ifndef COROUTINE_ASYNCIFY_CONTEXT_H
+#define COROUTINE_ASYNCIFY_CONTEXT_H
+
+/*
+ This is a coroutine implementation based on Binaryen's Asyncify transformation for WebAssembly.
+
+ This implementation is built on low-level ucontext-like API in wasm/fiber.c
+ This file is an adapter for the common coroutine interface and for stack manipulation.
+ wasm/fiber.c doesn't take care of stack to avoid duplicate management with this adapter.
+
+ * See also: wasm/fiber.c
+*/
+
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include "wasm/asyncify.h"
+#include "wasm/machine.h"
+#include "wasm/fiber.h"
+
+#define COROUTINE void __attribute__((__noreturn__))
+
+static const int ASYNCIFY_CORO_DEBUG = 0;
+
+struct coroutine_context
+{
+ rb_wasm_fiber_context fc;
+ void *argument;
+ struct coroutine_context *from;
+
+ void *current_sp;
+ void *stack_base;
+ size_t size;
+};
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+COROUTINE coroutine_trampoline(void * _start, void * _context);
+
+static inline void coroutine_initialize_main(struct coroutine_context * context)
+{
+ if (ASYNCIFY_CORO_DEBUG) fprintf(stderr, "[%s] entry (context = %p)\n", __func__, context);
+ // NULL fiber entry means it's the main fiber, and handled specially.
+ rb_wasm_init_context(&context->fc, NULL, NULL, NULL);
+ // mark the main fiber has already started
+ context->fc.is_started = true;
+}
+
+static inline void coroutine_initialize(struct coroutine_context *context, coroutine_start start, void *stack, size_t size)
+{
+ // Linear stack pointer must be always aligned down to 16 bytes.
+ // https://github.com/WebAssembly/tool-conventions/blob/c74267a5897c1bdc9aa60adeaf41816387d3cd12/BasicCABI.md#the-linear-stack
+ uintptr_t sp = ((uintptr_t)stack + size) & ~0xF;
+ if (ASYNCIFY_CORO_DEBUG) fprintf(stderr, "[%s] entry (context = %p, stack = %p ... %p)\n", __func__, context, stack, (char *)sp);
+ rb_wasm_init_context(&context->fc, coroutine_trampoline, start, context);
+ // record the initial stack pointer position to restore it after resumption
+ context->current_sp = (char *)sp;
+ context->stack_base = stack;
+ context->size = size;
+}
+
+static inline struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target)
+{
+ if (ASYNCIFY_CORO_DEBUG) fprintf(stderr, "[%s] entry (current = %p, target = %p)\n", __func__, current, target);
+ struct coroutine_context * previous = target->from;
+
+ target->from = current;
+ if (ASYNCIFY_CORO_DEBUG) fprintf(stderr, "[%s] current->current_sp = %p -> %p\n", __func__, current->current_sp, rb_wasm_get_stack_pointer());
+ // record the current stack pointer position to restore it after resumption
+ current->current_sp = rb_wasm_get_stack_pointer();
+
+ // suspend the current coroutine and resume another coroutine
+
+ rb_wasm_swapcontext(&current->fc, &target->fc);
+
+ // after the original coroutine resumed
+
+ rb_wasm_set_stack_pointer(current->current_sp);
+
+ target->from = previous;
+
+ return target;
+}
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+ if (ASYNCIFY_CORO_DEBUG) fprintf(stderr, "[%s] entry (context = %p)\n", __func__, context);
+ context->stack_base = NULL;
+ context->size = 0;
+ context->from = NULL;
+}
+
+#endif /* COROUTINE_ASYNCIFY_CONTEXT_H */
diff --git a/coroutine/emscripten/Context.c b/coroutine/emscripten/Context.c
new file mode 100644
index 0000000000..75c088daaa
--- /dev/null
+++ b/coroutine/emscripten/Context.c
@@ -0,0 +1,8 @@
+#include "Context.h"
+
+void coroutine_trampoline(void * _context)
+{
+ struct coroutine_context * context = _context;
+
+ context->entry_func(context->from, context);
+}
diff --git a/coroutine/emscripten/Context.h b/coroutine/emscripten/Context.h
new file mode 100644
index 0000000000..361e241685
--- /dev/null
+++ b/coroutine/emscripten/Context.h
@@ -0,0 +1,77 @@
+#ifndef COROUTINE_EMSCRIPTEN_CONTEXT_H
+#define COROUTINE_EMSCRIPTEN_CONTEXT_H 1
+
+/* An experimental coroutine wrapper for emscripten
+ * Contact on Yusuke Endoh if you encounter any problem about this
+ */
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <emscripten/fiber.h>
+
+#define COROUTINE __attribute__((noreturn)) void
+
+#if INTPTR_MAX <= INT32_MAX
+#define COROUTINE_LIMITED_ADDRESS_SPACE
+#endif
+
+struct coroutine_context;
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+struct coroutine_context
+{
+ emscripten_fiber_t state;
+ coroutine_start entry_func;
+ struct coroutine_context * from;
+ void *argument;
+};
+
+COROUTINE coroutine_trampoline(void * _context);
+
+#define MAIN_ASYNCIFY_STACK_SIZE 65536
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ static char asyncify_stack[MAIN_ASYNCIFY_STACK_SIZE];
+ emscripten_fiber_init_from_current_context(&context->state, asyncify_stack, MAIN_ASYNCIFY_STACK_SIZE);
+}
+#undef MAIN_ASYNCIFY_STACK_SIZE
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+ uintptr_t addr = (uintptr_t)stack;
+ size_t offset = addr & 0xF;
+ void *c_stack = (void*)((addr + 0xF) & ~0xF);
+ size -= offset;
+ size_t c_stack_size = (size / 2) & ~0xF;
+ void *asyncify_stack = (void*)((uintptr_t)c_stack + c_stack_size);
+ size_t asyncify_stack_size = size - c_stack_size;
+ context->entry_func = start;
+
+ emscripten_fiber_init(&context->state, coroutine_trampoline, context, c_stack, c_stack_size, asyncify_stack, asyncify_stack_size);
+}
+
+static inline struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target)
+{
+ struct coroutine_context * previous = target->from;
+
+ target->from = current;
+ emscripten_fiber_swap(&current->state, &target->state);
+ target->from = previous;
+
+ return target;
+}
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+ context->from = NULL;
+}
+
+#endif /* COROUTINE_EMSCRIPTEN_CONTEXT_H */
diff --git a/coroutine/ppc/Context.S b/coroutine/ppc/Context.S
new file mode 100644
index 0000000000..cdda93e179
--- /dev/null
+++ b/coroutine/ppc/Context.S
@@ -0,0 +1,90 @@
+; Based on the code by Samuel Williams. Created by Sergey Fedorov on 04/06/2022.
+; Credits to Samuel Williams, Rei Odaira and Iain Sandoe. Errors, if any, are mine.
+; Some relevant examples: https://github.com/gcc-mirror/gcc/blob/master/libphobos/libdruntime/config/powerpc/switchcontext.S
+; https://github.com/gcc-mirror/gcc/blob/master/libgcc/config/rs6000/darwin-gpsave.S
+; https://www.ibm.com/docs/en/aix/7.2?topic=epilogs-saving-gprs-only
+; ppc32 version may be re-written compactly with stmw/lwm, but the code wonʼt be faster, see: https://github.com/ruby/ruby/pull/5927#issuecomment-1139730541
+
+; Notice that this code is only for Darwin (macOS). Darwin ABI differs from AIX and ELF.
+; To add support for AIX, *BSD or *Linux, please make separate implementations.
+
+#define TOKEN_PASTE(x,y) x##y
+#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
+
+.machine ppc7400 ; = G4, Rosetta
+.text
+
+.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
+.align 2
+
+PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
+ ; Make space on the stack for caller registers
+ ; (Should we rather use red zone? See libphobos example.)
+ subi r1,r1,80
+
+ ; Get LR
+ mflr r0
+
+ ; Save caller registers
+ stw r31,0(r1)
+ stw r30,4(r1)
+ stw r29,8(r1)
+ stw r28,12(r1)
+ stw r27,16(r1)
+ stw r26,20(r1)
+ stw r25,24(r1)
+ stw r24,28(r1)
+ stw r23,32(r1)
+ stw r22,36(r1)
+ stw r21,40(r1)
+ stw r20,44(r1)
+ stw r19,48(r1)
+ stw r18,52(r1)
+ stw r17,56(r1)
+ stw r16,60(r1)
+ stw r15,64(r1)
+ stw r14,68(r1)
+ stw r13,72(r1)
+
+ ; Save return address
+ ; Possibly should rather be saved into linkage area, see libphobos and IBM docs
+ stw r0,76(r1)
+
+ ; Save stack pointer to first argument
+ stw r1,0(r3)
+
+ ; Load stack pointer from second argument
+ lwz r1,0(r4)
+
+ ; Load return address
+ lwz r0,76(r1)
+
+ ; Restore caller registers
+ lwz r13,72(r1)
+ lwz r14,68(r1)
+ lwz r15,64(r1)
+ lwz r16,60(r1)
+ lwz r17,56(r1)
+ lwz r18,52(r1)
+ lwz r19,48(r1)
+ lwz r20,44(r1)
+ lwz r21,40(r1)
+ lwz r22,36(r1)
+ lwz r23,32(r1)
+ lwz r24,28(r1)
+ lwz r25,24(r1)
+ lwz r26,20(r1)
+ lwz r27,16(r1)
+ lwz r28,12(r1)
+ lwz r29,8(r1)
+ lwz r30,4(r1)
+ lwz r31,0(r1)
+
+ ; Set LR
+ mtlr r0
+
+ ; Pop stack frame
+ addi r1,r1,80
+
+ ; Jump to return address
+ blr
diff --git a/coroutine/ppc/Context.h b/coroutine/ppc/Context.h
new file mode 100644
index 0000000000..1fce112579
--- /dev/null
+++ b/coroutine/ppc/Context.h
@@ -0,0 +1,58 @@
+#ifndef COROUTINE_PPC_CONTEXT_H
+#define COROUTINE_PPC_CONTEXT_H 1
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define COROUTINE __attribute__((noreturn)) void
+#define COROUTINE_LIMITED_ADDRESS_SPACE
+
+enum {
+ COROUTINE_REGISTERS =
+ 20 /* 19 general purpose registers (r13–r31) and 1 return address */
+ + 4 /* space for fiber_entry() to store the link register */
+};
+
+struct coroutine_context
+{
+ void **stack_pointer;
+ void *argument;
+};
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ context->stack_pointer = NULL;
+}
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+ // Stack grows down. Force 16-byte alignment.
+ char * top = (char*)stack + size;
+ context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
+
+ context->stack_pointer -= COROUTINE_REGISTERS;
+ memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
+
+ /* Skip a global prologue that sets the TOC register */
+ context->stack_pointer[19] = ((char*)start) + 8;
+}
+
+struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+ context->stack_pointer = NULL;
+}
+
+#endif /* COROUTINE_PPC_CONTEXT_H */
diff --git a/coroutine/ppc64/Context.S b/coroutine/ppc64/Context.S
new file mode 100644
index 0000000000..f8561e0e7d
--- /dev/null
+++ b/coroutine/ppc64/Context.S
@@ -0,0 +1,89 @@
+; Based on the code by Samuel Williams. Created by Sergey Fedorov on 04/06/2022.
+; Credits to Samuel Williams, Rei Odaira and Iain Sandoe. Errors, if any, are mine.
+; Some relevant examples: https://github.com/gcc-mirror/gcc/blob/master/libphobos/libdruntime/config/powerpc/switchcontext.S
+; https://github.com/gcc-mirror/gcc/blob/master/libgcc/config/rs6000/darwin-gpsave.S
+; https://www.ibm.com/docs/en/aix/7.2?topic=epilogs-saving-gprs-only
+
+; Notice that this code is only for Darwin (macOS). Darwin ABI differs from AIX and ELF.
+; To add support for AIX, *BSD or *Linux, please make separate implementations.
+
+#define TOKEN_PASTE(x,y) x##y
+#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
+
+.machine ppc64 ; = G5
+.text
+
+.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
+.align 2
+
+PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
+ ; Make space on the stack for caller registers
+ ; (Should we rather use red zone? See libphobos example.)
+ subi r1,r1,160
+
+ ; Get LR
+ mflr r0
+
+ ; Save caller registers
+ std r31,0(r1)
+ std r30,8(r1)
+ std r29,16(r1)
+ std r28,24(r1)
+ std r27,32(r1)
+ std r26,40(r1)
+ std r25,48(r1)
+ std r24,56(r1)
+ std r23,64(r1)
+ std r22,72(r1)
+ std r21,80(r1)
+ std r20,88(r1)
+ std r19,96(r1)
+ std r18,104(r1)
+ std r17,112(r1)
+ std r16,120(r1)
+ std r15,128(r1)
+ std r14,136(r1)
+ std r13,144(r1)
+
+ ; Save return address
+ ; Possibly should rather be saved into linkage area, see libphobos and IBM docs
+ std r0,152(r1)
+
+ ; Save stack pointer to first argument
+ std r1,0(r3)
+
+ ; Load stack pointer from second argument
+ ld r1,0(r4)
+
+ ; Load return address
+ ld r0,152(r1)
+
+ ; Restore caller registers
+ ld r13,144(r1)
+ ld r14,136(r1)
+ ld r15,128(r1)
+ ld r16,120(r1)
+ ld r17,112(r1)
+ ld r18,104(r1)
+ ld r19,96(r1)
+ ld r20,88(r1)
+ ld r21,80(r1)
+ ld r22,72(r1)
+ ld r23,64(r1)
+ ld r24,56(r1)
+ ld r25,48(r1)
+ ld r26,40(r1)
+ ld r27,32(r1)
+ ld r28,24(r1)
+ ld r29,16(r1)
+ ld r30,8(r1)
+ ld r31,0(r1)
+
+ ; Set LR
+ mtlr r0
+
+ ; Pop stack frame
+ addi r1,r1,160
+
+ ; Jump to return address
+ blr
diff --git a/coroutine/ppc64/Context.h b/coroutine/ppc64/Context.h
new file mode 100644
index 0000000000..3e6f77f55a
--- /dev/null
+++ b/coroutine/ppc64/Context.h
@@ -0,0 +1,57 @@
+#ifndef COROUTINE_PPC64_CONTEXT_H
+#define COROUTINE_PPC64_CONTEXT_H 1
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define COROUTINE __attribute__((noreturn)) void
+
+enum {
+ COROUTINE_REGISTERS =
+ 20 /* 19 general purpose registers (r13–r31) and 1 return address */
+ + 4 /* space for fiber_entry() to store the link register */
+};
+
+struct coroutine_context
+{
+ void **stack_pointer;
+ void *argument;
+};
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ context->stack_pointer = NULL;
+}
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+ // Stack grows down. Force 16-byte alignment.
+ char * top = (char*)stack + size;
+ context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
+
+ context->stack_pointer -= COROUTINE_REGISTERS;
+ memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
+
+ /* Skip a global prologue that sets the TOC register */
+ context->stack_pointer[19] = ((char*)start) + 8;
+}
+
+struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+ context->stack_pointer = NULL;
+}
+
+#endif /* COROUTINE_PPC64_CONTEXT_H */
diff --git a/coroutine/ppc64le/Context.S b/coroutine/ppc64le/Context.S
new file mode 100644
index 0000000000..61be9efcf0
--- /dev/null
+++ b/coroutine/ppc64le/Context.S
@@ -0,0 +1,75 @@
+#define TOKEN_PASTE(x,y) x##y
+#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
+
+.text
+.align 2
+
+.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
+.type PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer), @function
+PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
+ # Make space on the stack for caller registers
+ addi 1,1,-152
+
+ # Save caller registers
+ std 14,0(1)
+ std 15,8(1)
+ std 16,16(1)
+ std 17,24(1)
+ std 18,32(1)
+ std 19,40(1)
+ std 20,48(1)
+ std 21,56(1)
+ std 22,64(1)
+ std 23,72(1)
+ std 24,80(1)
+ std 25,88(1)
+ std 26,96(1)
+ std 27,104(1)
+ std 28,112(1)
+ std 29,120(1)
+ std 30,128(1)
+ std 31,136(1)
+
+ # Save return address
+ mflr 0
+ std 0,144(1)
+
+ # Save stack pointer to first argument
+ std 1,0(3)
+
+ # Load stack pointer from second argument
+ ld 1,0(4)
+
+ # Restore caller registers
+ ld 14,0(1)
+ ld 15,8(1)
+ ld 16,16(1)
+ ld 17,24(1)
+ ld 18,32(1)
+ ld 19,40(1)
+ ld 20,48(1)
+ ld 21,56(1)
+ ld 22,64(1)
+ ld 23,72(1)
+ ld 24,80(1)
+ ld 25,88(1)
+ ld 26,96(1)
+ ld 27,104(1)
+ ld 28,112(1)
+ ld 29,120(1)
+ ld 30,128(1)
+ ld 31,136(1)
+
+ # Load return address
+ ld 0,144(1)
+ mtlr 0
+
+ # Pop stack frame
+ addi 1,1,152
+
+ # Jump to return address
+ blr
+
+#if defined(__linux__) && defined(__ELF__)
+.section .note.GNU-stack,"",%progbits
+#endif
diff --git a/coroutine/ppc64le/Context.h b/coroutine/ppc64le/Context.h
new file mode 100644
index 0000000000..fbfaa2ee63
--- /dev/null
+++ b/coroutine/ppc64le/Context.h
@@ -0,0 +1,57 @@
+#ifndef COROUTINE_PPC64LE_CONTEXT_H
+#define COROUTINE_PPC64LE_CONTEXT_H 1
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define COROUTINE __attribute__((noreturn)) void
+
+enum {
+ COROUTINE_REGISTERS =
+ 19 /* 18 general purpose registers (r14-r31) and 1 return address */
+ + 4 /* space for fiber_entry() to store the link register */
+};
+
+struct coroutine_context
+{
+ void **stack_pointer;
+ void *argument;
+};
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ context->stack_pointer = NULL;
+}
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+ // Stack grows down. Force 16-byte alignment.
+ char * top = (char*)stack + size;
+ context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
+
+ context->stack_pointer -= COROUTINE_REGISTERS;
+ memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
+
+ /* Skip a global prologue that sets the TOC register */
+ context->stack_pointer[18] = ((char*)start) + 8;
+}
+
+struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+ context->stack_pointer = NULL;
+}
+
+#endif /* COROUTINE_PPC64LE_CONTEXT_H */
diff --git a/coroutine/pthread/Context.c b/coroutine/pthread/Context.c
new file mode 100644
index 0000000000..38774cda0b
--- /dev/null
+++ b/coroutine/pthread/Context.c
@@ -0,0 +1,272 @@
+/*
+ * This file is part of the "Coroutine" project and released under the MIT License.
+ *
+ * Created by Samuel Williams on 24/6/2021.
+ * Copyright, 2021, by Samuel Williams.
+*/
+
+#include "Context.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+
+static const int DEBUG = 0;
+
+static
+int check(const char * message, int result) {
+ if (result) {
+ switch (result) {
+ case EDEADLK:
+ if (DEBUG) fprintf(stderr, "deadlock detected result=%d errno=%d\n", result, errno);
+ break;
+ default:
+ if (DEBUG) fprintf(stderr, "error detected result=%d errno=%d\n", result, errno);
+ perror(message);
+ }
+ }
+
+ assert(result == 0);
+
+ return result;
+}
+
+void coroutine_initialize_main(struct coroutine_context * context) {
+ context->id = pthread_self();
+
+ check("coroutine_initialize_main:pthread_cond_init",
+ pthread_cond_init(&context->schedule, NULL)
+ );
+
+ context->shared = (struct coroutine_shared*)malloc(sizeof(struct coroutine_shared));
+ assert(context->shared);
+
+ context->shared->main = context;
+ context->shared->count = 1;
+
+ if (DEBUG) {
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
+
+ check("coroutine_initialize_main:pthread_mutex_init",
+ pthread_mutex_init(&context->shared->guard, &attr)
+ );
+ } else {
+ check("coroutine_initialize_main:pthread_mutex_init",
+ pthread_mutex_init(&context->shared->guard, NULL)
+ );
+ }
+}
+
+static
+void coroutine_release(struct coroutine_context *context) {
+ if (context->shared) {
+ size_t count = (context->shared->count -= 1);
+
+ if (count == 0) {
+ if (DEBUG) fprintf(stderr, "coroutine_release:pthread_mutex_destroy(%p)\n", &context->shared->guard);
+ pthread_mutex_destroy(&context->shared->guard);
+ free(context->shared);
+ }
+
+ context->shared = NULL;
+
+ if (DEBUG) fprintf(stderr, "coroutine_release:pthread_cond_destroy(%p)\n", &context->schedule);
+ pthread_cond_destroy(&context->schedule);
+ }
+}
+
+void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+ // We will create the thread when we first transfer, but save the details now:
+ context->shared = NULL;
+ context->start = start;
+ context->stack = stack;
+ context->size = size;
+}
+
+static
+int is_locked(pthread_mutex_t * mutex) {
+ int result = pthread_mutex_trylock(mutex);
+
+ // If we could successfully lock the mutex:
+ if (result == 0) {
+ pthread_mutex_unlock(mutex);
+ // We could lock the mutex, so it wasn't locked:
+ return 0;
+ } else {
+ // Otherwise we couldn't lock it because it's already locked:
+ return 1;
+ }
+}
+
+static
+void coroutine_guard_unlock(void * _context)
+{
+ struct coroutine_context * context = _context;
+
+ if (DEBUG) fprintf(stderr, "coroutine_guard_unlock:pthread_mutex_unlock\n");
+
+ check("coroutine_guard_unlock:pthread_mutex_unlock",
+ pthread_mutex_unlock(&context->shared->guard)
+ );
+}
+
+static
+void coroutine_wait(struct coroutine_context *context)
+{
+ if (DEBUG) fprintf(stderr, "coroutine_wait:pthread_mutex_lock(guard=%p is_locked=%d)\n", &context->shared->guard, is_locked(&context->shared->guard));
+ check("coroutine_wait:pthread_mutex_lock",
+ pthread_mutex_lock(&context->shared->guard)
+ );
+
+ if (DEBUG) fprintf(stderr, "coroutine_wait:pthread_mutex_unlock(guard)\n");
+ pthread_mutex_unlock(&context->shared->guard);
+}
+
+static
+void coroutine_trampoline_cleanup(void *_context) {
+ struct coroutine_context * context = _context;
+ coroutine_release(context);
+}
+
+void * coroutine_trampoline(void * _context)
+{
+ struct coroutine_context * context = _context;
+ assert(context->shared);
+
+ pthread_cleanup_push(coroutine_trampoline_cleanup, context);
+
+ coroutine_wait(context);
+
+ context->start(context->from, context);
+
+ pthread_cleanup_pop(1);
+
+ return NULL;
+}
+
+static
+int coroutine_create_thread(struct coroutine_context *context)
+{
+ int result;
+
+ pthread_attr_t attr;
+ result = pthread_attr_init(&attr);
+ if (result != 0) {
+ return result;
+ }
+
+ result = pthread_attr_setstack(&attr, context->stack, (size_t)context->size);
+ if (result != 0) {
+ pthread_attr_destroy(&attr);
+ return result;
+ }
+
+ result = pthread_cond_init(&context->schedule, NULL);
+ if (result != 0) {
+ pthread_attr_destroy(&attr);
+ return result;
+ }
+
+ result = pthread_create(&context->id, &attr, coroutine_trampoline, context);
+ if (result != 0) {
+ pthread_attr_destroy(&attr);
+ if (DEBUG) fprintf(stderr, "coroutine_create_thread:pthread_cond_destroy(%p)\n", &context->schedule);
+ pthread_cond_destroy(&context->schedule);
+ return result;
+ }
+
+ context->shared->count += 1;
+
+ return result;
+}
+
+struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target)
+{
+ assert(current->shared);
+
+ struct coroutine_context * previous = target->from;
+ target->from = current;
+
+ if (DEBUG) fprintf(stderr, "coroutine_transfer:pthread_mutex_lock(guard=%p is_locked=%d)\n", &current->shared->guard, is_locked(&current->shared->guard));
+ pthread_mutex_lock(&current->shared->guard);
+ pthread_cleanup_push(coroutine_guard_unlock, current);
+
+ // First transfer:
+ if (target->shared == NULL) {
+ target->shared = current->shared;
+
+ if (DEBUG) fprintf(stderr, "coroutine_transfer:coroutine_create_thread...\n");
+ if (coroutine_create_thread(target)) {
+ if (DEBUG) fprintf(stderr, "coroutine_transfer:coroutine_create_thread failed\n");
+ target->shared = NULL;
+ target->from = previous;
+ return NULL;
+ }
+ } else {
+ if (DEBUG) fprintf(stderr, "coroutine_transfer:pthread_cond_signal(target)\n");
+ pthread_cond_signal(&target->schedule);
+ }
+
+ // A side effect of acting upon a cancellation request while in a condition wait is that the mutex is (in effect) re-acquired before calling the first cancellation cleanup handler. If cancelled, pthread_cond_wait immediately invokes cleanup handlers.
+ if (DEBUG) fprintf(stderr, "coroutine_transfer:pthread_cond_wait(schedule=%p, guard=%p, is_locked=%d)\n", &current->schedule, &current->shared->guard, is_locked(&current->shared->guard));
+ check("coroutine_transfer:pthread_cond_wait",
+ pthread_cond_wait(&current->schedule, &current->shared->guard)
+ );
+
+ if (DEBUG) fprintf(stderr, "coroutine_transfer:pthread_cleanup_pop\n");
+ pthread_cleanup_pop(1);
+
+#ifdef __FreeBSD__
+ // Apparently required for FreeBSD:
+ pthread_testcancel();
+#endif
+
+ target->from = previous;
+
+ return target;
+}
+
+static
+void coroutine_join(struct coroutine_context * context) {
+ if (DEBUG) fprintf(stderr, "coroutine_join:pthread_cancel\n");
+ int result = pthread_cancel(context->id);
+ if (result == -1 && errno == ESRCH) {
+ // The thread may be dead due to fork, so it cannot be joined and this doesn't represent a real error:
+ return;
+ }
+
+ check("coroutine_join:pthread_cancel", result);
+
+ if (DEBUG) fprintf(stderr, "coroutine_join:pthread_join\n");
+ check("coroutine_join:pthread_join",
+ pthread_join(context->id, NULL)
+ );
+
+ if (DEBUG) fprintf(stderr, "coroutine_join:pthread_join done\n");
+}
+
+void coroutine_destroy(struct coroutine_context * context)
+{
+ if (DEBUG) fprintf(stderr, "coroutine_destroy\n");
+
+ assert(context);
+
+ // We are already destroyed or never created:
+ if (context->shared == NULL) return;
+
+ if (context == context->shared->main) {
+ context->shared->main = NULL;
+ coroutine_release(context);
+ } else {
+ coroutine_join(context);
+ assert(context->shared == NULL);
+ }
+}
diff --git a/coroutine/pthread/Context.h b/coroutine/pthread/Context.h
new file mode 100644
index 0000000000..6d551ee9df
--- /dev/null
+++ b/coroutine/pthread/Context.h
@@ -0,0 +1,63 @@
+/*
+ * This file is part of the "Coroutine" project and released under the MIT License.
+ *
+ * Created by Samuel Williams on 24/6/2021.
+ * Copyright, 2021, by Samuel Williams.
+*/
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <pthread.h>
+
+#define COROUTINE void
+
+#define COROUTINE_PTHREAD_CONTEXT
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#if INTPTR_MAX <= INT32_MAX
+#define COROUTINE_LIMITED_ADDRESS_SPACE
+#endif
+#endif
+
+struct coroutine_context;
+
+struct coroutine_shared
+{
+ pthread_mutex_t guard;
+ struct coroutine_context * main;
+
+ size_t count;
+};
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+struct coroutine_context
+{
+ struct coroutine_shared * shared;
+
+ coroutine_start start;
+ void *argument;
+
+ void *stack;
+ size_t size;
+
+ pthread_t id;
+ pthread_cond_t schedule;
+ struct coroutine_context * from;
+};
+
+void coroutine_initialize_main(struct coroutine_context * context);
+
+void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+);
+
+struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
+
+void coroutine_destroy(struct coroutine_context * context);
diff --git a/coroutine/riscv64/Context.S b/coroutine/riscv64/Context.S
new file mode 100644
index 0000000000..cc4e872f84
--- /dev/null
+++ b/coroutine/riscv64/Context.S
@@ -0,0 +1,87 @@
+#define TOKEN_PASTE(x,y) x##y
+#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
+
+.text
+.align 2
+
+.global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
+PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
+
+ # Make space on the stack for caller registers
+ addi sp, sp, -0xd0
+
+ # Save caller registers
+ sd s0, 0x00(sp)
+ sd s1, 0x08(sp)
+ sd s2, 0x10(sp)
+ sd s3, 0x18(sp)
+ sd s4, 0x20(sp)
+ sd s5, 0x28(sp)
+ sd s6, 0x30(sp)
+ sd s7, 0x38(sp)
+ sd s8, 0x40(sp)
+ sd s9, 0x48(sp)
+ sd s10, 0x50(sp)
+ sd s11, 0x58(sp)
+ fsd fs0, 0x60(sp)
+ fsd fs1, 0x68(sp)
+ fsd fs2, 0x70(sp)
+ fsd fs3, 0x78(sp)
+ fsd fs4, 0x80(sp)
+ fsd fs5, 0x88(sp)
+ fsd fs6, 0x90(sp)
+ fsd fs7, 0x98(sp)
+ fsd fs8, 0xa0(sp)
+ fsd fs9, 0xa8(sp)
+ fsd fs10, 0xb0(sp)
+ fsd fs11, 0xb8(sp)
+
+ # Save return address
+ sd ra, 0xc0(sp)
+
+ # Save stack pointer to a0 (first argument)
+ mv a2, sp
+ sd a2, (a0)
+
+ # Load stack pointer from a1 (second argument)
+ ld a3, (a1)
+ mv sp, a3
+
+ # Restore caller registers
+ ld s0, 0x00(sp)
+ ld s1, 0x08(sp)
+ ld s2, 0x10(sp)
+ ld s3, 0x18(sp)
+ ld s4, 0x20(sp)
+ ld s5, 0x28(sp)
+ ld s6, 0x30(sp)
+ ld s7, 0x38(sp)
+ ld s8, 0x40(sp)
+ ld s9, 0x48(sp)
+ ld s10, 0x50(sp)
+ ld s11, 0x58(sp)
+ fld fs0, 0x60(sp)
+ fld fs1, 0x68(sp)
+ fld fs2, 0x70(sp)
+ fld fs3, 0x78(sp)
+ fld fs4, 0x80(sp)
+ fld fs5, 0x88(sp)
+ fld fs6, 0x90(sp)
+ fld fs7, 0x98(sp)
+ fld fs8, 0xa0(sp)
+ fld fs9, 0xa8(sp)
+ fld fs10, 0xb0(sp)
+ fld fs11, 0xb8(sp)
+
+ # Load return address
+ ld ra, 0xc0(sp)
+
+ # Pop stack frame
+ addi sp, sp, 0xd0
+
+ # Jump to return address
+ ret
+
+#if defined(__linux__) && defined(__ELF__)
+.section .note.GNU-stack,"",%progbits
+#endif
diff --git a/coroutine/riscv64/Context.h b/coroutine/riscv64/Context.h
new file mode 100644
index 0000000000..9ce1140e0b
--- /dev/null
+++ b/coroutine/riscv64/Context.h
@@ -0,0 +1,46 @@
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define COROUTINE __attribute__((noreturn)) void
+
+enum {COROUTINE_REGISTERS = 0xd0 / 8};
+
+struct coroutine_context
+{
+ void **stack_pointer;
+ void *argument;
+};
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ context->stack_pointer = NULL;
+}
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+ // Stack grows down. Force 16-byte alignment.
+ char * top = (char*)stack + size;
+ context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
+
+ context->stack_pointer -= COROUTINE_REGISTERS;
+ memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
+
+ context->stack_pointer[0xc0 / 8] = (void*)start;
+}
+
+struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+}
diff --git a/coroutine/ucontext/Context.c b/coroutine/ucontext/Context.c
new file mode 100644
index 0000000000..5d728d554d
--- /dev/null
+++ b/coroutine/ucontext/Context.c
@@ -0,0 +1,23 @@
+/*
+ * This file is part of the "Coroutine" project and released under the MIT License.
+ *
+ * Created by Samuel Williams on 24/6/2019.
+ * Copyright, 2019, by Samuel Williams.
+*/
+
+/* According to Solaris' ucontext.h, makecontext, etc. are removed in SUSv4.
+ * To enable the prototype declarations, we need to define __EXTENSIONS__.
+ */
+#if defined(__sun) && !defined(__EXTENSIONS__)
+#define __EXTENSIONS__
+#endif
+
+#include "Context.h"
+
+void coroutine_trampoline(void * _start, void * _context)
+{
+ coroutine_start start = (coroutine_start)_start;
+ struct coroutine_context * context = _context;
+
+ start(context->from, context);
+}
diff --git a/coroutine/ucontext/Context.h b/coroutine/ucontext/Context.h
new file mode 100644
index 0000000000..d338d8de60
--- /dev/null
+++ b/coroutine/ucontext/Context.h
@@ -0,0 +1,79 @@
+#ifndef COROUTINE_UCONTEXT_CONTEXT_H
+#define COROUTINE_UCONTEXT_CONTEXT_H 1
+
+/*
+ * This file is part of the "Coroutine" project and released under the MIT License.
+ *
+ * Created by Samuel Williams on 24/6/2019.
+ * Copyright, 2019, by Samuel Williams.
+*/
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <ucontext.h>
+
+#define COROUTINE __attribute__((noreturn)) void
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#if INTPTR_MAX <= INT32_MAX
+#define COROUTINE_LIMITED_ADDRESS_SPACE
+#endif
+#endif
+
+struct coroutine_context
+{
+ ucontext_t state;
+ struct coroutine_context * from;
+ void *argument;
+};
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+COROUTINE coroutine_trampoline(void * _start, void * _context);
+
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ context->from = NULL;
+ getcontext(&context->state);
+}
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+ coroutine_initialize_main(context);
+
+ context->state.uc_stack.ss_size = size;
+ // Despite what it's called, this is not actually a stack pointer. It points to the address of the stack allocation (the lowest address).
+ context->state.uc_stack.ss_sp = (char*)stack;
+ context->state.uc_stack.ss_flags = 0;
+ context->state.uc_link = NULL;
+
+ makecontext(&context->state, (void(*)(void))coroutine_trampoline, 2, (void*)start, (void*)context);
+}
+
+static inline struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target)
+{
+ struct coroutine_context * previous = target->from;
+
+ target->from = current;
+ swapcontext(&current->state, &target->state);
+ target->from = previous;
+
+ return target;
+}
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+ context->state.uc_stack.ss_sp = NULL;
+ context->state.uc_stack.ss_size = 0;
+ context->from = NULL;
+}
+
+#endif /* COROUTINE_UCONTEXT_CONTEXT_H */
diff --git a/coroutine/universal/Context.S b/coroutine/universal/Context.S
new file mode 100644
index 0000000000..11c80a7927
--- /dev/null
+++ b/coroutine/universal/Context.S
@@ -0,0 +1,16 @@
+#if 0
+#elif defined __x86_64__
+# include "coroutine/amd64/Context.S"
+#elif defined __i386__
+# include "coroutine/x86/Context.S"
+#elif defined __ppc__
+# include "coroutine/ppc/Context.S"
+#elif defined __ppc64__ && defined(WORDS_BIGENDIAN)
+# include "coroutine/ppc64/Context.S"
+#elif defined __ppc64__ && !defined(WORDS_BIGENDIAN)
+# include "coroutine/ppc64le/Context.S"
+#elif defined __arm64__
+# include "coroutine/arm64/Context.S"
+#else
+# error "Unsupported CPU"
+#endif
diff --git a/coroutine/universal/Context.h b/coroutine/universal/Context.h
new file mode 100644
index 0000000000..ec4d2f484a
--- /dev/null
+++ b/coroutine/universal/Context.h
@@ -0,0 +1,21 @@
+#ifndef COROUTINE_UNIVERSAL_CONTEXT_H
+#define COROUTINE_UNIVERSAL_CONTEXT_H 1
+
+#if 0
+#elif defined __x86_64__
+# include "coroutine/amd64/Context.h"
+#elif defined __i386__
+# include "coroutine/x86/Context.h"
+#elif defined __ppc__
+# include "coroutine/ppc/Context.h"
+#elif defined __ppc64__ && defined(WORDS_BIGENDIAN)
+# include "coroutine/ppc64/Context.h"
+#elif defined __ppc64__ && !defined(WORDS_BIGENDIAN)
+# include "coroutine/ppc64le/Context.h"
+#elif defined __arm64__
+# include "coroutine/arm64/Context.h"
+#else
+# error "Unsupported CPU"
+#endif
+
+#endif /* COROUTINE_UNIVERSAL_CONTEXT_H */
diff --git a/coroutine/win32/Context.S b/coroutine/win32/Context.S
new file mode 100644
index 0000000000..d14bf435e8
--- /dev/null
+++ b/coroutine/win32/Context.S
@@ -0,0 +1,47 @@
+##
+## This file is part of the "Coroutine" project and released under the MIT License.
+##
+## Created by Lars Kanis on 06/06/2019.
+##
+
+.text
+
+# Using fastcall is a big win (and it's the same as how x64 works).
+# In coroutine transfer, the arguments are passed in ecx and edx. We don't need
+# to touch these in order to pass them to the destination coroutine.
+
+.globl @coroutine_transfer@8
+@coroutine_transfer@8:
+ # Save the thread information block:
+ pushl %fs:0
+ pushl %fs:4
+ pushl %fs:8
+
+ # Save caller registers:
+ pushl %ebp
+ pushl %ebx
+ pushl %edi
+ pushl %esi
+
+ # Save caller stack pointer:
+ movl %esp, (%ecx)
+
+ # Restore callee stack pointer:
+ movl (%edx), %esp
+
+ # Restore callee stack:
+ popl %esi
+ popl %edi
+ popl %ebx
+ popl %ebp
+
+ # Restore the thread information block:
+ popl %fs:8
+ popl %fs:4
+ popl %fs:0
+
+ # Save the first argument as the return value:
+ movl %ecx, %eax
+
+ # Jump to the address on the stack:
+ ret
diff --git a/coroutine/win32/Context.asm b/coroutine/win32/Context.asm
new file mode 100644
index 0000000000..f8f431239b
--- /dev/null
+++ b/coroutine/win32/Context.asm
@@ -0,0 +1,55 @@
+;;
+;; This file is part of the "Coroutine" project and released under the MIT License.
+;;
+;; Created by Samuel Williams on 10/5/2018.
+;; Copyright, 2018, by Samuel Williams.
+;;
+
+.386
+.model flat
+
+.code
+
+assume fs:nothing
+
+; Using fastcall is a big win (and it's the same has how x64 works).
+; In coroutine transfer, the arguments are passed in ecx and edx. We don't need
+; to touch these in order to pass them to the destination coroutine.
+
+@coroutine_transfer@8 proc
+ ; Save the thread information block:
+ push fs:[0]
+ push fs:[4]
+ push fs:[8]
+
+ ; Save caller registers:
+ push ebp
+ push ebx
+ push edi
+ push esi
+
+ ; Save caller stack pointer:
+ mov dword ptr [ecx], esp
+
+ ; Restore callee stack pointer:
+ mov esp, dword ptr [edx]
+
+ ; Restore callee stack:
+ pop esi
+ pop edi
+ pop ebx
+ pop ebp
+
+ ; Restore the thread information block:
+ pop fs:[8]
+ pop fs:[4]
+ pop fs:[0]
+
+ ; Save the first argument as the return value:
+ mov eax, dword ptr ecx
+
+ ; Jump to the address on the stack:
+ ret
+@coroutine_transfer@8 endp
+
+end
diff --git a/coroutine/win32/Context.h b/coroutine/win32/Context.h
new file mode 100644
index 0000000000..902fd1246f
--- /dev/null
+++ b/coroutine/win32/Context.h
@@ -0,0 +1,65 @@
+#ifndef COROUTINE_WIN32_CONTEXT_H
+#define COROUTINE_WIN32_CONTEXT_H 1
+
+/*
+ * This file is part of the "Coroutine" project and released under the MIT License.
+ *
+ * Created by Samuel Williams on 10/5/2018.
+ * Copyright, 2018, by Samuel Williams.
+*/
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define COROUTINE __declspec(noreturn) void __fastcall
+#define COROUTINE_LIMITED_ADDRESS_SPACE
+
+/* This doesn't include thread information block */
+enum {COROUTINE_REGISTERS = 4};
+
+struct coroutine_context
+{
+ void **stack_pointer;
+ void *argument;
+};
+
+typedef void(__fastcall * coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ context->stack_pointer = NULL;
+}
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+ // Stack grows down. Force 16-byte alignment.
+ char * top = (char*)stack + size;
+ context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
+
+ *--context->stack_pointer = (void*)start;
+
+ /* Windows Thread Information Block */
+ *--context->stack_pointer = (void*)0xFFFFFFFF; /* fs:[0] */
+ *--context->stack_pointer = (void*)top; /* fs:[4] */
+ *--context->stack_pointer = (void*)stack; /* fs:[8] */
+
+ context->stack_pointer -= COROUTINE_REGISTERS;
+ memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
+}
+
+struct coroutine_context * __fastcall coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+}
+
+#endif /* COROUTINE_WIN32_CONTEXT_H */
diff --git a/coroutine/win64/Context.S b/coroutine/win64/Context.S
new file mode 100644
index 0000000000..e0ee38e006
--- /dev/null
+++ b/coroutine/win64/Context.S
@@ -0,0 +1,77 @@
+##
+## This file is part of the "Coroutine" project and released under the MIT License.
+##
+## Created by Samuel Williams on 4/11/2018.
+## Copyright, 2018, by Samuel Williams.
+##
+
+.text
+
+.globl coroutine_transfer
+coroutine_transfer:
+ # Save the thread information block:
+ pushq %gs:8
+ pushq %gs:16
+
+ # Save caller registers:
+ pushq %rbp
+ pushq %rbx
+ pushq %rdi
+ pushq %rsi
+ pushq %r12
+ pushq %r13
+ pushq %r14
+ pushq %r15
+
+ movaps %xmm15, -168(%rsp)
+ movaps %xmm14, -152(%rsp)
+ movaps %xmm13, -136(%rsp)
+ movaps %xmm12, -120(%rsp)
+ movaps %xmm11, -104(%rsp)
+ movaps %xmm10, -88(%rsp)
+ movaps %xmm9, -72(%rsp)
+ movaps %xmm8, -56(%rsp)
+ movaps %xmm7, -40(%rsp)
+ movaps %xmm6, -24(%rsp)
+
+ # Save caller stack pointer:
+ mov %rsp, (%rcx)
+
+ # Restore callee stack pointer:
+ mov (%rdx), %rsp
+
+ movaps -24(%rsp), %xmm6
+ movaps -40(%rsp), %xmm7
+ movaps -56(%rsp), %xmm8
+ movaps -72(%rsp), %xmm9
+ movaps -88(%rsp), %xmm10
+ movaps -104(%rsp), %xmm11
+ movaps -120(%rsp), %xmm12
+ movaps -136(%rsp), %xmm13
+ movaps -152(%rsp), %xmm14
+ movaps -168(%rsp), %xmm15
+
+ # Restore callee stack:
+ popq %r15
+ popq %r14
+ popq %r13
+ popq %r12
+ popq %rsi
+ popq %rdi
+ popq %rbx
+ popq %rbp
+
+ # Restore the thread information block:
+ popq %gs:16
+ popq %gs:8
+
+ # Put the first argument into the return value:
+ mov %rcx, %rax
+
+ # We pop the return address and jump to it:
+ ret
+
+.globl coroutine_trampoline
+coroutine_trampoline:
+ # Do not remove this. This forces 16-byte alignment when entering the coroutine.
+ ret
diff --git a/coroutine/win64/Context.asm b/coroutine/win64/Context.asm
new file mode 100644
index 0000000000..8c4dea1c93
--- /dev/null
+++ b/coroutine/win64/Context.asm
@@ -0,0 +1,79 @@
+;;
+;; This file is part of the "Coroutine" project and released under the MIT License.
+;;
+;; Created by Samuel Williams on 10/5/2018.
+;; Copyright, 2018, by Samuel Williams.
+;;
+
+.code
+
+coroutine_transfer proc
+ ; Save the thread information block:
+ push qword ptr gs:[8]
+ push qword ptr gs:[16]
+
+ ; Save caller registers:
+ push rbp
+ push rbx
+ push rdi
+ push rsi
+ push r12
+ push r13
+ push r14
+ push r15
+
+ movaps [rsp - 24], xmm6
+ movaps [rsp - 40], xmm7
+ movaps [rsp - 56], xmm8
+ movaps [rsp - 72], xmm9
+ movaps [rsp - 88], xmm10
+ movaps [rsp - 104], xmm11
+ movaps [rsp - 120], xmm12
+ movaps [rsp - 136], xmm13
+ movaps [rsp - 152], xmm14
+ movaps [rsp - 168], xmm15
+
+ ; Save caller stack pointer:
+ mov [rcx], rsp
+
+ ; Restore callee stack pointer:
+ mov rsp, [rdx]
+
+ movaps xmm15, [rsp - 168]
+ movaps xmm14, [rsp - 152]
+ movaps xmm13, [rsp - 136]
+ movaps xmm12, [rsp - 120]
+ movaps xmm11, [rsp - 104]
+ movaps xmm10, [rsp - 88]
+ movaps xmm9, [rsp - 72]
+ movaps xmm8, [rsp - 56]
+ movaps xmm7, [rsp - 40]
+ movaps xmm6, [rsp - 24]
+
+ ; Restore callee stack:
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop rsi
+ pop rdi
+ pop rbx
+ pop rbp
+
+ ; Restore the thread information block:
+ pop qword ptr gs:[16]
+ pop qword ptr gs:[8]
+
+ ; Put the first argument into the return value:
+ mov rax, rcx
+
+ ; We pop the return address and jump to it:
+ ret
+coroutine_transfer endp
+
+coroutine_trampoline proc
+ ; Do not remove this. This forces 16-byte alignment when entering the coroutine.
+ ret
+coroutine_trampoline endp
+
+end
diff --git a/coroutine/win64/Context.h b/coroutine/win64/Context.h
new file mode 100644
index 0000000000..aaa4caeaf9
--- /dev/null
+++ b/coroutine/win64/Context.h
@@ -0,0 +1,75 @@
+#ifndef COROUTINE_WIN64_CONTEXT_H
+#define COROUTINE_WIN64_CONTEXT_H 1
+
+/*
+ * This file is part of the "Coroutine" project and released under the MIT License.
+ *
+ * Created by Samuel Williams on 10/5/2018.
+ * Copyright, 2018, by Samuel Williams.
+*/
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define COROUTINE __declspec(noreturn) void
+
+enum {
+ COROUTINE_REGISTERS = 8,
+ COROUTINE_XMM_REGISTERS = 1+10*2,
+};
+
+struct coroutine_context
+{
+ void **stack_pointer;
+ void *argument;
+};
+
+typedef void(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
+
+void coroutine_trampoline();
+
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ context->stack_pointer = NULL;
+}
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+ // Stack grows down. Force 16-byte alignment.
+ char * top = (char*)stack + size;
+ context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
+
+ /* Win64 ABI requires space for arguments */
+ context->stack_pointer -= 4;
+
+ /* Return address */
+ *--context->stack_pointer = 0;
+ *--context->stack_pointer = (void*)start;
+ *--context->stack_pointer = (void*)coroutine_trampoline;
+
+ /* Windows Thread Information Block */
+ /* *--context->stack_pointer = 0; */ /* gs:[0x00] is not used */
+ *--context->stack_pointer = (void*)top; /* gs:[0x08] */
+ *--context->stack_pointer = (void*)stack; /* gs:[0x10] */
+
+ context->stack_pointer -= COROUTINE_REGISTERS;
+ memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
+ memset(context->stack_pointer - COROUTINE_XMM_REGISTERS, 0, sizeof(void*) * COROUTINE_XMM_REGISTERS);
+}
+
+struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+}
+
+#endif /* COROUTINE_WIN64_CONTEXT_H */
diff --git a/coroutine/x86/Context.S b/coroutine/x86/Context.S
new file mode 100644
index 0000000000..f06a417084
--- /dev/null
+++ b/coroutine/x86/Context.S
@@ -0,0 +1,42 @@
+##
+## This file is part of the "Coroutine" project and released under the MIT License.
+##
+## Created by Samuel Williams on 3/11/2018.
+## Copyright, 2018, by Samuel Williams.
+##
+
+#define TOKEN_PASTE(x,y) x##y
+#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
+
+.text
+
+.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
+PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
+
+ # Save caller registers
+ pushl %ebp
+ pushl %ebx
+ pushl %edi
+ pushl %esi
+
+ # Save caller stack pointer
+ movl %esp, (%ecx)
+
+ # Restore callee stack pointer
+ movl (%edx), %esp
+
+ # Restore callee stack
+ popl %esi
+ popl %edi
+ popl %ebx
+ popl %ebp
+
+ # Save the first argument as the return value
+ movl %ecx, %eax
+
+ # Jump to the address on the stack
+ ret
+
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__ELF__)
+.section .note.GNU-stack,"",%progbits
+#endif
diff --git a/coroutine/x86/Context.h b/coroutine/x86/Context.h
new file mode 100644
index 0000000000..d98eaf6486
--- /dev/null
+++ b/coroutine/x86/Context.h
@@ -0,0 +1,61 @@
+#ifndef COROUTINE_X86_CONTEXT_H
+#define COROUTINE_X86_CONTEXT_H 1
+
+/*
+ * This file is part of the "Coroutine" project and released under the MIT License.
+ *
+ * Created by Samuel Williams on 3/11/2018.
+ * Copyright, 2018, by Samuel Williams.
+*/
+
+#pragma once
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#define COROUTINE __attribute__((noreturn, fastcall)) void
+#define COROUTINE_LIMITED_ADDRESS_SPACE
+
+enum {COROUTINE_REGISTERS = 4};
+
+struct coroutine_context
+{
+ void **stack_pointer;
+ void *argument;
+};
+
+typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self) __attribute__((fastcall));
+
+static inline void coroutine_initialize_main(struct coroutine_context * context) {
+ context->stack_pointer = NULL;
+}
+
+static inline void coroutine_initialize(
+ struct coroutine_context *context,
+ coroutine_start start,
+ void *stack,
+ size_t size
+) {
+ assert(start && stack && size >= 1024);
+
+ // Stack grows down. Force 16-byte alignment.
+ char * top = (char*)stack + size;
+ context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
+
+ *--context->stack_pointer = NULL;
+ *--context->stack_pointer = (void*)start;
+
+ context->stack_pointer -= COROUTINE_REGISTERS;
+ memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
+}
+
+struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target) __attribute__((fastcall));
+
+static inline void coroutine_destroy(struct coroutine_context * context)
+{
+ context->stack_pointer = NULL;
+}
+
+#endif /* COROUTINE_X86_CONTEXT_H */
diff --git a/coverage/README b/coverage/README
new file mode 100644
index 0000000000..a4c3dfcb03
--- /dev/null
+++ b/coverage/README
@@ -0,0 +1,17 @@
+Usage
+
+The make task `update-coverage' retrieves simplecov for coverage report.
+
+COVERAGE=1 make test-all TESTS=test/cgi
+
+it generates test coverage to coverage directory.
+
+Limitation
+
+ * test_coverage.rb and test_process.rb broke test suit with SimpleCov
+ * some tests failed randomly.
+
+TODO
+
+ * more reduce bundled simplecov(additional configuration, formatter, etc.)
+ * measure rubyspec coverage
diff --git a/cygwin/GNUmakefile.in b/cygwin/GNUmakefile.in
index 2dd44042c2..f342d2fcf7 100644
--- a/cygwin/GNUmakefile.in
+++ b/cygwin/GNUmakefile.in
@@ -1,41 +1,107 @@
+gnumake = yes
+
include Makefile
-ENABLE_SHARED=@ENABLE_SHARED@
+MUNICODE_FLAG := $(if $(filter mingw%,$(target_os)),-municode)
+override EXE_LDFLAGS += $(MUNICODE_FLAG)
+
+DLLWRAP = @DLLWRAP@ --target=$(target_os) --driver-name="$(CC)"
+windres-cpp := $(CPP) -xc
+windres-cpp := --preprocessor=$(firstword $(windres-cpp)) \
+ $(addprefix --preprocessor-arg=,$(wordlist 2,$(words $(windres-cpp)),$(windres-cpp)))
+WINDRES = @WINDRES@ $(windres-cpp) -DRC_INVOKED
+STRIP = @STRIP@
+
+ifeq ($(target_os),cygwin)
+ DLL_BASE_NAME := $(LIBRUBY_SO:.dll=)
+else
+ DLL_BASE_NAME := $(RUBY_SO_NAME)
+ DLLWRAP += -mno-cygwin
+ VPATH := $(VPATH):$(srcdir)/win32
+ ifneq ($(filter -flto%,$(LDFLAGS)),)
+ miniruby$(EXEEXT): XLDFLAGS += -Wno-maybe-uninitialized
+ endif
+endif
-ifneq (,$(findstring no, $(ENABLE_SHARED)))
- EXTOBJS = $(RUBY_INSTALL_NAME).exp
+ifneq ($(ENABLE_SHARED),yes)
+ RUBY_EXP = $(RUBY_INSTALL_NAME).exp
+ EXTOBJS = $(RUBY_EXP)
LIBRUBYARG = $(LIBRUBY_A)
+ LIBRUBY_SO =
endif
-ifneq (,$(findstring ruby, $(RUBY_INSTALL_NAME)))
- RUBYW_INSTALL_NAME = $(subst ruby,rubyw,$(RUBY_INSTALL_NAME))
-else
+ifeq ($(RUBY_INSTALL_NAME),ruby)
RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME)w
+else
+ RUBYW_INSTALL_NAME = $(subst ruby,rubyw,$(RUBY_INSTALL_NAME))
endif
+
WPROGRAM = $(RUBYW_INSTALL_NAME)$(EXEEXT)
-RUBYDEF = $(RUBY_INSTALL_NAME).def
-SOLIBS := $(LIBRUBY_SO).res.@OBJEXT@ $(SOLIBS)
-EXTOBJS += $(@:$(EXEEXT)=.res.@OBJEXT@)
-$(LIBRUBY_SO): $(RUBYDEF) $(LIBRUBY_SO).res.@OBJEXT@
-$(LIBRUBY): $(LIBRUBY_SO)
+include $(srcdir)/template/GNUmakefile.in
+
+SOLIBS := $(DLL_BASE_NAME).res.$(OBJEXT) $(SOLIBS)
+override EXTOBJS += $(if $(filter-out $(RUBYW_INSTALL_NAME),$(@:$(EXEEXT)=)),$(RUBY_INSTALL_NAME),$(@:$(EXEEXT)=)).res.$(OBJEXT)
+RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(DLL_BASE_NAME).rc
+RUBYDEF = $(DLL_BASE_NAME).def
+
+ruby: $(PROGRAM)
+rubyw: $(WPROGRAM)
-%.res.@OBJEXT@: %.rc
- @WINDRES@ --include-dir . --include-dir $(<D) --include-dir $(srcdir)/win32 $< $@
+$(LIBRUBY): $(RUBY_EXP) $(LIBRUBY_SO)
+$(RUBY_EXP) $(LIBRUBY_SO): $(DLL_BASE_NAME).res.$(OBJEXT)
-$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(LIBRUBY_SO).rc: rbconfig.rb
- @@MINIRUBY@ $(srcdir)/win32/resource.rb \
+%.res.$(OBJEXT): %.rc
+ $(ECHO) compiling $@
+ $(Q) $(WINDRES) --include-dir . --include-dir $(<D) --include-dir $(srcdir)/win32 $< $@
+
+%.rc: $(BOOTSTRAPRUBY_FAKE) $(RBCONFIG) $(srcdir)/revision.h $(srcdir)/win32/resource.rb
+ $(ECHO) generating $@
+ $(Q) $(BOOTSTRAPRUBY_COMMAND) $(srcdir)/win32/resource.rb \
-ruby_name=$(RUBY_INSTALL_NAME) -rubyw_name=$(RUBYW_INSTALL_NAME) \
- -so_name=$(LIBRUBY_SO) \
+ -so_name=$(DLL_BASE_NAME) -output=$(*F) \
. $(icondirs) $(srcdir)/win32
-$(PROGRAM): $(RUBY_INSTALL_NAME).res.@OBJEXT@
-$(WPROGRAM): $(RUBYW_INSTALL_NAME).res.@OBJEXT@
+$(PROGRAM): $(RUBY_INSTALL_NAME).res.$(OBJEXT)
+$(WPROGRAM): $(RUBYW_INSTALL_NAME).res.$(OBJEXT)
@rm -f $@
- $(PURIFY) $(CC) -mwindows -e _mainCRTStartup $(LDFLAGS) $(XLDFLAGS) \
+ $(ECHO) linking $@
+ $(Q) $(PURIFY) $(CC) $(MUNICODE_FLAG) -mwindows -e $(SYMBOL_PREFIX)mainCRTStartup $(LDFLAGS) $(XLDFLAGS) \
$(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@
+$(STUBPROGRAM): $(RUBY_INSTALL_NAME).res.$(OBJEXT)
+
+$(RUBY_EXP): $(LIBRUBY_A)
+ $(ECHO) creating $@
+ $(Q) $(DLLWRAP) \
+ --output-exp=$(RUBY_EXP) \
+ --export-all $(LIBRUBY_A) $(LIBS) -o $(PROGRAM)
+ $(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) dmyext.o $(SOLIBS) -o $(PROGRAM)
+ @rm -f $(PROGRAM)
+
+GNUmakefile: $(srcdir)/cygwin/GNUmakefile.in
+
+ifeq ($(target_os),mingw32)
+$(OBJS) $(MAINOBJ): win32.h
+
+dir.$(OBJEXT) win32/win32.$(OBJEXT): win32/dir.h
+file.$(OBJEXT) win32/win32.$(OBJEXT): win32/file.h
+
+MSYS2_ARG_CONV_EXCL_PARAM = --exclude=;--name=
+
+yes-test-ruby: export MSYS2_ARG_CONV_EXCL=$(MSYS2_ARG_CONV_EXCL_PARAM)
+yes-test-all: export MSYS2_ARG_CONV_EXCL=$(MSYS2_ARG_CONV_EXCL_PARAM)
+yes-test-almost: export MSYS2_ARG_CONV_EXCL=$(MSYS2_ARG_CONV_EXCL_PARAM)
+test/% spec/%/ spec/%_spec.rb: export MSYS2_ARG_CONV_EXCL=$(MSYS2_ARG_CONV_EXCL_PARAM)
+
+endif
+
+$(LIBRUBY_SO): $(RUBYDEF)
+
+$(RUBYDEF): $(LIBRUBY_A) $(PREP) $(BOOTSTRAPRUBY_FAKE) $(RBCONFIG)
+ $(ECHO) generating $@
+ $(Q) $(BOOTSTRAPRUBY_COMMAND) $(srcdir)/win32/mkexports.rb -output=$@ $(LIBRUBY_A)
-$(RUBYDEF): $(LIBRUBY_A)
- echo EXPORTS > $(RUBYDEF)
- @NM@ --extern-only --defined-only $(LIBRUBY_A) | \
- @MINIRUBY@ -ne 'puts $$1 if / [CDT] _(.*)$$/' >> $(RUBYDEF)
+clean-local::
+ @$(RM) $(RUBYDEF)
+ @$(RM) $(RUBY_EXP) $(RCFILES:.rc=.res.$(OBJEXT))
+ @$(RM) $(RCFILES)
diff --git a/darray.h b/darray.h
new file mode 100644
index 0000000000..c9a53f1e01
--- /dev/null
+++ b/darray.h
@@ -0,0 +1,179 @@
+#ifndef RUBY_DARRAY_H
+#define RUBY_DARRAY_H
+
+#include <stdint.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+// Type for a dynamic array. Use to declare a dynamic array.
+// It is a pointer so it fits in st_table nicely. Designed
+// to be fairly type-safe.
+//
+// NULL is a valid empty dynamic array.
+//
+// Example:
+// rb_darray(char) char_array = NULL;
+// rb_darray_append(&char_array, 'e');
+// printf("pushed %c\n", *rb_darray_ref(char_array, 0));
+// rb_darray_free(char_array);
+//
+#define rb_darray(T) struct { rb_darray_meta_t meta; T data[]; } *
+
+// Copy an element out of the array. Warning: not bounds checked.
+//
+// T rb_darray_get(rb_darray(T) ary, size_t idx);
+//
+#define rb_darray_get(ary, idx) ((ary)->data[(idx)])
+
+// Assign to an element. Warning: not bounds checked.
+//
+// void rb_darray_set(rb_darray(T) ary, size_t idx, T element);
+//
+#define rb_darray_set(ary, idx, element) ((ary)->data[(idx)] = (element))
+
+// Get a pointer to an element. Warning: not bounds checked.
+//
+// T *rb_darray_ref(rb_darray(T) ary, size_t idx);
+//
+#define rb_darray_ref(ary, idx) (&((ary)->data[(idx)]))
+
+// Copy a new element into the array. ptr_to_ary is evaluated multiple times.
+//
+// void rb_darray_append(rb_darray(T) *ptr_to_ary, T element);
+//
+#define rb_darray_append(ptr_to_ary, element) do { \
+ rb_darray_ensure_space((ptr_to_ary), sizeof(**(ptr_to_ary)), \
+ sizeof((*(ptr_to_ary))->data[0])); \
+ rb_darray_set(*(ptr_to_ary), \
+ (*(ptr_to_ary))->meta.size, \
+ (element)); \
+ (*(ptr_to_ary))->meta.size++; \
+} while (0)
+
+
+// Last element of the array
+//
+#define rb_darray_back(ary) ((ary)->data[(ary)->meta.size - 1])
+
+// Remove the last element of the array.
+//
+#define rb_darray_pop_back(ary) ((ary)->meta.size--)
+
+// Remove element at idx and replace it by the last element
+#define rb_darray_remove_unordered(ary, idx) do { \
+ rb_darray_set(ary, idx, rb_darray_back(ary)); \
+ rb_darray_pop_back(ary); \
+} while (0);
+
+// Iterate over items of the array in a for loop
+//
+#define rb_darray_foreach(ary, idx_name, elem_ptr_var) \
+ for (size_t idx_name = 0; idx_name < rb_darray_size(ary) && ((elem_ptr_var) = rb_darray_ref(ary, idx_name)); ++idx_name)
+
+// Iterate over valid indicies in the array in a for loop
+//
+#define rb_darray_for(ary, idx_name) \
+ for (size_t idx_name = 0; idx_name < rb_darray_size(ary); ++idx_name)
+
+// Make a dynamic array of a certain size. All bytes backing the elements are set to zero.
+//
+// Note that NULL is a valid empty dynamic array.
+//
+// void rb_darray_make(rb_darray(T) *ptr_to_ary, size_t size);
+//
+#define rb_darray_make(ptr_to_ary, size) \
+ rb_darray_make_impl((ptr_to_ary), size, sizeof(**(ptr_to_ary)), \
+ sizeof((*(ptr_to_ary))->data[0]))
+
+#define rb_darray_data_ptr(ary) ((ary)->data)
+
+// Set the size of the array to zero without freeing the backing memory.
+// Allows reusing the same array.
+//
+#define rb_darray_clear(ary) (ary->meta.size = 0)
+
+typedef struct rb_darray_meta {
+ size_t size;
+ size_t capa;
+} rb_darray_meta_t;
+
+// Get the size of the dynamic array.
+//
+static inline size_t
+rb_darray_size(const void *ary)
+{
+ const rb_darray_meta_t *meta = ary;
+ return meta ? meta->size : 0;
+}
+
+// Get the capacity of the dynamic array.
+//
+static inline size_t
+rb_darray_capa(const void *ary)
+{
+ const rb_darray_meta_t *meta = ary;
+ return meta ? meta->capa : 0;
+}
+
+// Free the dynamic array.
+//
+static inline void
+rb_darray_free(void *ary)
+{
+ rb_darray_meta_t *meta = ary;
+ ruby_sized_xfree(ary, meta->capa);
+}
+
+// Internal function
+// Ensure there is space for one more element.
+// Note: header_size can be bigger than sizeof(rb_darray_meta_t) when T is __int128_t, for example.
+static inline void
+rb_darray_ensure_space(void *ptr_to_ary, size_t header_size, size_t element_size)
+{
+ rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary;
+ rb_darray_meta_t *meta = *ptr_to_ptr_to_meta;
+ size_t current_capa = rb_darray_capa(meta);
+ if (rb_darray_size(meta) < current_capa) return;
+
+ // Double the capacity
+ size_t new_capa = current_capa == 0 ? 1 : current_capa * 2;
+
+ rb_darray_meta_t *doubled_ary = rb_xrealloc_mul_add(meta, new_capa, element_size, header_size);
+ // rb_xrealloc functions guarantee that NULL is not returned
+ assert(doubled_ary != NULL);
+
+ if (meta == NULL) {
+ // First allocation. Initialize size. On subsequence allocations
+ // realloc takes care of carrying over the size.
+ doubled_ary->size = 0;
+ }
+
+ doubled_ary->capa = new_capa;
+
+ // We don't have access to the type of the dynamic array in function context.
+ // Write out result with memcpy to avoid strict aliasing issue.
+ memcpy(ptr_to_ary, &doubled_ary, sizeof(doubled_ary));
+}
+
+static inline void
+rb_darray_make_impl(void *ptr_to_ary, size_t array_size, size_t header_size, size_t element_size)
+{
+ rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary;
+ if (array_size == 0) {
+ *ptr_to_ptr_to_meta = NULL;
+ return;
+ }
+
+ rb_darray_meta_t *meta = rb_xcalloc_mul_add(array_size, element_size, header_size);
+ // rb_xcalloc functions guarantee that NULL is not returned
+ assert(meta != NULL);
+
+ meta->size = array_size;
+ meta->capa = array_size;
+
+ // We don't have access to the type of the dynamic array in function context.
+ // Write out result with memcpy to avoid strict aliasing issue.
+ memcpy(ptr_to_ary, &meta, sizeof(meta));
+}
+
+#endif /* RUBY_DARRAY_H */
diff --git a/debug.c b/debug.c
new file mode 100644
index 0000000000..3dd0f71906
--- /dev/null
+++ b/debug.c
@@ -0,0 +1,633 @@
+/**********************************************************************
+
+ debug.c -
+
+ $Author$
+ created at: 04/08/25 02:31:54 JST
+
+ Copyright (C) 2004-2007 Koichi Sasada
+
+**********************************************************************/
+
+#include "ruby/internal/config.h"
+
+#include <stdio.h>
+
+#include "eval_intern.h"
+#include "encindex.h"
+#include "id.h"
+#include "internal/signal.h"
+#include "ruby/encoding.h"
+#include "ruby/io.h"
+#include "ruby/ruby.h"
+#include "ruby/util.h"
+#include "symbol.h"
+#include "vm_core.h"
+#include "vm_debug.h"
+#include "vm_callinfo.h"
+#include "ruby/thread_native.h"
+#include "ractor_core.h"
+
+/* This is the only place struct RIMemo is actually used */
+struct RIMemo {
+ VALUE flags;
+ VALUE v0;
+ VALUE v1;
+ VALUE v2;
+ VALUE v3;
+};
+
+/* for gdb */
+const union {
+ enum ruby_special_consts special_consts;
+ enum ruby_value_type value_type;
+ enum ruby_tag_type tag_type;
+ enum node_type node_type;
+ enum ruby_method_ids method_ids;
+ enum ruby_id_types id_types;
+ enum ruby_fl_type fl_types;
+ enum ruby_fl_ushift fl_ushift;
+ enum ruby_encoding_consts encoding_consts;
+ enum ruby_coderange_type enc_coderange_types;
+ enum ruby_econv_flag_type econv_flag_types;
+ rb_econv_result_t econv_result;
+ enum ruby_preserved_encindex encoding_index;
+ enum ruby_robject_flags robject_flags;
+#if !USE_RVARGC
+ enum ruby_robject_consts robject_consts;
+#endif
+ enum ruby_rmodule_flags rmodule_flags;
+ enum ruby_rstring_flags rstring_flags;
+#if !USE_RVARGC
+ enum ruby_rstring_consts rstring_consts;
+#endif
+ enum ruby_rarray_flags rarray_flags;
+ enum ruby_rarray_consts rarray_consts;
+ enum {
+ RUBY_FMODE_READABLE = FMODE_READABLE,
+ RUBY_FMODE_WRITABLE = FMODE_WRITABLE,
+ RUBY_FMODE_READWRITE = FMODE_READWRITE,
+ RUBY_FMODE_BINMODE = FMODE_BINMODE,
+ RUBY_FMODE_SYNC = FMODE_SYNC,
+ RUBY_FMODE_TTY = FMODE_TTY,
+ RUBY_FMODE_DUPLEX = FMODE_DUPLEX,
+ RUBY_FMODE_APPEND = FMODE_APPEND,
+ RUBY_FMODE_CREATE = FMODE_CREATE,
+ RUBY_FMODE_NOREVLOOKUP = 0x00000100,
+ RUBY_FMODE_TRUNC = FMODE_TRUNC,
+ RUBY_FMODE_TEXTMODE = FMODE_TEXTMODE,
+ RUBY_FMODE_PREP = 0x00010000,
+ RUBY_FMODE_SETENC_BY_BOM = FMODE_SETENC_BY_BOM,
+ RUBY_FMODE_UNIX = 0x00200000,
+ RUBY_FMODE_INET = 0x00400000,
+ RUBY_FMODE_INET6 = 0x00800000,
+
+ RUBY_NODE_TYPESHIFT = NODE_TYPESHIFT,
+ RUBY_NODE_TYPEMASK = NODE_TYPEMASK,
+ RUBY_NODE_LSHIFT = NODE_LSHIFT,
+ RUBY_NODE_FL_NEWLINE = NODE_FL_NEWLINE
+ } various;
+ union {
+ enum imemo_type types;
+ enum {RUBY_IMEMO_MASK = IMEMO_MASK} mask;
+ struct RIMemo *ptr;
+ } imemo;
+ struct RSymbol *symbol_ptr;
+ enum vm_call_flag_bits vm_call_flags;
+} ruby_dummy_gdb_enums;
+
+const SIGNED_VALUE RUBY_NODE_LMASK = NODE_LMASK;
+
+int
+ruby_debug_print_indent(int level, int debug_level, int indent_level)
+{
+ if (level < debug_level) {
+ fprintf(stderr, "%*s", indent_level, "");
+ fflush(stderr);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void
+ruby_debug_printf(const char *format, ...)
+{
+ va_list ap;
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+}
+
+#include "gc.h"
+
+VALUE
+ruby_debug_print_value(int level, int debug_level, const char *header, VALUE obj)
+{
+ if (level < debug_level) {
+ char buff[0x100];
+ rb_raw_obj_info(buff, 0x100, obj);
+
+ fprintf(stderr, "DBG> %s: %s\n", header, buff);
+ fflush(stderr);
+ }
+ return obj;
+}
+
+void
+ruby_debug_print_v(VALUE v)
+{
+ ruby_debug_print_value(0, 1, "", v);
+}
+
+ID
+ruby_debug_print_id(int level, int debug_level, const char *header, ID id)
+{
+ if (level < debug_level) {
+ fprintf(stderr, "DBG> %s: %s\n", header, rb_id2name(id));
+ fflush(stderr);
+ }
+ return id;
+}
+
+NODE *
+ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node)
+{
+ if (level < debug_level) {
+ fprintf(stderr, "DBG> %s: %s (%u)\n", header,
+ ruby_node_name(nd_type(node)), nd_line(node));
+ }
+ return (NODE *)node;
+}
+
+void
+ruby_debug_breakpoint(void)
+{
+ /* */
+}
+
+#if defined _WIN32
+# if RUBY_MSVCRT_VERSION >= 80
+extern int ruby_w32_rtc_error;
+# endif
+#endif
+#if defined _WIN32 || defined __CYGWIN__
+#include <windows.h>
+UINT ruby_w32_codepage[2];
+#endif
+extern int ruby_rgengc_debug;
+extern int ruby_on_ci;
+
+int
+ruby_env_debug_option(const char *str, int len, void *arg)
+{
+ int ov;
+ size_t retlen;
+ unsigned long n;
+#define SET_WHEN(name, var, val) do { \
+ if (len == sizeof(name) - 1 && \
+ strncmp(str, (name), len) == 0) { \
+ (var) = (val); \
+ return 1; \
+ } \
+ } while (0)
+#define NAME_MATCH_VALUE(name) \
+ ((size_t)len >= sizeof(name)-1 && \
+ strncmp(str, (name), sizeof(name)-1) == 0 && \
+ ((len == sizeof(name)-1 && !(len = 0)) || \
+ (str[sizeof(name)-1] == '=' && \
+ (str += sizeof(name), len -= sizeof(name), 1))))
+#define SET_UINT(val) do { \
+ n = ruby_scan_digits(str, len, 10, &retlen, &ov); \
+ if (!ov && retlen) { \
+ val = (unsigned int)n; \
+ } \
+ str += retlen; \
+ len -= retlen; \
+ } while (0)
+#define SET_UINT_LIST(name, vals, num) do { \
+ int i; \
+ for (i = 0; i < (num); ++i) { \
+ SET_UINT((vals)[i]); \
+ if (!len || *str != ':') break; \
+ ++str; \
+ --len; \
+ } \
+ if (len > 0) { \
+ fprintf(stderr, "ignored "name" option: `%.*s'\n", len, str); \
+ } \
+ } while (0)
+#define SET_WHEN_UINT(name, vals, num, req) \
+ if (NAME_MATCH_VALUE(name)) SET_UINT_LIST(name, vals, num);
+
+ SET_WHEN("gc_stress", *ruby_initial_gc_stress_ptr, Qtrue);
+ SET_WHEN("core", ruby_enable_coredump, 1);
+ SET_WHEN("ci", ruby_on_ci, 1);
+ if (NAME_MATCH_VALUE("rgengc")) {
+ if (!len) ruby_rgengc_debug = 1;
+ else SET_UINT_LIST("rgengc", &ruby_rgengc_debug, 1);
+ return 1;
+ }
+#if defined _WIN32
+# if RUBY_MSVCRT_VERSION >= 80
+ SET_WHEN("rtc_error", ruby_w32_rtc_error, 1);
+# endif
+#endif
+#if defined _WIN32 || defined __CYGWIN__
+ if (NAME_MATCH_VALUE("codepage")) {
+ if (!len) fprintf(stderr, "missing codepage argument");
+ else SET_UINT_LIST("codepage", ruby_w32_codepage, numberof(ruby_w32_codepage));
+ return 1;
+ }
+#endif
+ return 0;
+}
+
+static void
+set_debug_option(const char *str, int len, void *arg)
+{
+ if (!ruby_env_debug_option(str, len, arg)) {
+ fprintf(stderr, "unexpected debug option: %.*s\n", len, str);
+ }
+}
+
+#if USE_RUBY_DEBUG_LOG
+static void setup_debug_log(void);
+#else
+#define setup_debug_log()
+#endif
+
+void
+ruby_set_debug_option(const char *str)
+{
+ ruby_each_words(str, set_debug_option, 0);
+ setup_debug_log();
+}
+
+#if USE_RUBY_DEBUG_LOG
+
+// RUBY_DEBUG_LOG features
+// See vm_debug.h comments for details.
+
+#define MAX_DEBUG_LOG 0x1000
+#define MAX_DEBUG_LOG_MESSAGE_LEN 0x0200
+#define MAX_DEBUG_LOG_FILTER_LEN 0x0020
+#define MAX_DEBUG_LOG_FILTER_NUM 0x0010
+
+enum ruby_debug_log_mode ruby_debug_log_mode;
+
+struct debug_log_filter {
+ enum debug_log_filter_type {
+ dlf_all,
+ dlf_file, // "file:..."
+ dlf_func, // "func:..."
+ } type;
+ bool negative;
+ char str[MAX_DEBUG_LOG_FILTER_LEN];
+};
+
+static const char *dlf_type_names[] = {
+ "all",
+ "file",
+ "func",
+};
+
+static struct {
+ char *mem;
+ unsigned int cnt;
+ struct debug_log_filter filters[MAX_DEBUG_LOG_FILTER_NUM];
+ unsigned int filters_num;
+ rb_nativethread_lock_t lock;
+ FILE *output;
+} debug_log;
+
+static char *
+RUBY_DEBUG_LOG_MEM_ENTRY(unsigned int index)
+{
+ return &debug_log.mem[MAX_DEBUG_LOG_MESSAGE_LEN * index];
+}
+
+static enum debug_log_filter_type
+filter_type(const char *str, int *skiplen)
+{
+ if (strncmp(str, "file:", 5) == 0) {
+ *skiplen = 5;
+ return dlf_file;
+ }
+ else if(strncmp(str, "func:", 5) == 0) {
+ *skiplen = 5;
+ return dlf_func;
+ }
+ else {
+ *skiplen = 0;
+ return dlf_all;
+ }
+}
+
+static void
+setup_debug_log_filter(void)
+{
+ const char *filter_config = getenv("RUBY_DEBUG_LOG_FILTER");
+
+ if (filter_config && strlen(filter_config) > 0) {
+ unsigned int i;
+ for (i=0; i<MAX_DEBUG_LOG_FILTER_NUM && filter_config; i++) {
+ size_t len;
+ const char *str = filter_config;
+ const char *p;
+
+ if ((p = strchr(str, ',')) == NULL) {
+ len = strlen(str);
+ filter_config = NULL;
+ }
+ else {
+ len = p - str - 1; // 1 is ','
+ filter_config = p + 1;
+ }
+
+ // positive/negative
+ if (*str == '-') {
+ debug_log.filters[i].negative = true;
+ str++;
+ }
+ else if (*str == '+') {
+ // negative is false on default.
+ str++;
+ }
+
+ // type
+ int skiplen;
+ debug_log.filters[i].type = filter_type(str, &skiplen);
+ len -= skiplen;
+
+ if (len >= MAX_DEBUG_LOG_FILTER_LEN) {
+ fprintf(stderr, "too long: %s (max:%d)\n", str, MAX_DEBUG_LOG_FILTER_LEN - 1);
+ exit(1);
+ }
+
+ // body
+ strncpy(debug_log.filters[i].str, str + skiplen, len);
+ debug_log.filters[i].str[len] = 0;
+ }
+ debug_log.filters_num = i;
+
+ for (i=0; i<debug_log.filters_num; i++) {
+ fprintf(stderr, "RUBY_DEBUG_LOG_FILTER[%d]=%s (%s%s)\n", i,
+ debug_log.filters[i].str,
+ debug_log.filters[i].negative ? "-" : "",
+ dlf_type_names[debug_log.filters[i].type]);
+ }
+ }
+}
+
+static void
+setup_debug_log(void)
+{
+ // check RUBY_DEBUG_LOG
+ const char *log_config = getenv("RUBY_DEBUG_LOG");
+ if (log_config && strlen(log_config) > 0) {
+ if (strcmp(log_config, "mem") == 0) {
+ debug_log.mem = (char *)malloc(MAX_DEBUG_LOG * MAX_DEBUG_LOG_MESSAGE_LEN);
+ if (debug_log.mem == NULL) {
+ fprintf(stderr, "setup_debug_log failed (can't allocate memory)\n");
+ exit(1);
+ }
+ ruby_debug_log_mode |= ruby_debug_log_memory;
+ }
+ else if (strcmp(log_config, "stderr") == 0) {
+ ruby_debug_log_mode |= ruby_debug_log_stderr;
+ }
+ else {
+ ruby_debug_log_mode |= ruby_debug_log_file;
+ if ((debug_log.output = fopen(log_config, "w")) == NULL) {
+ fprintf(stderr, "can not open %s for RUBY_DEBUG_LOG\n", log_config);
+ exit(1);
+ }
+ setvbuf(debug_log.output, NULL, _IONBF, 0);
+ }
+
+ fprintf(stderr, "RUBY_DEBUG_LOG=%s %s%s%s\n", log_config,
+ (ruby_debug_log_mode & ruby_debug_log_memory) ? "[mem]" : "",
+ (ruby_debug_log_mode & ruby_debug_log_stderr) ? "[stderr]" : "",
+ (ruby_debug_log_mode & ruby_debug_log_file) ? "[file]" : "");
+ rb_nativethread_lock_initialize(&debug_log.lock);
+
+ setup_debug_log_filter();
+ }
+}
+
+static bool
+check_filter(const char *str, const struct debug_log_filter *filter, bool *state)
+{
+ if (filter->negative) {
+ if (strstr(str, filter->str) == NULL) {
+ *state = true;
+ return false;
+ }
+ else {
+ *state = false;
+ return true;
+ }
+ }
+ else {
+ if (strstr(str, filter->str) != NULL) {
+ *state = true;
+ return true;
+ }
+ else {
+ *state = false;
+ return false;
+ }
+ }
+}
+
+//
+// RUBY_DEBUG_LOG_FILTER=-foo,-bar,baz,boo
+// returns true if
+// (func_name or file_name) doesn't contain foo
+// and
+// (func_name or file_name) doesn't contain bar
+// and
+// (func_name or file_name) contains baz or boo
+//
+// RUBY_DEBUG_LOG_FILTER=foo,bar,-baz,-boo
+// retunrs true if
+// (func_name or file_name) contains foo or bar
+// or
+// (func_name or file_name) doesn't contain baz and
+// (func_name or file_name) doesn't contain boo and
+//
+// You can specify "file:" (ex file:foo) or "func:" (ex func:foo)
+// prefixes to specify the filter for.
+//
+bool
+ruby_debug_log_filter(const char *func_name, const char *file_name)
+{
+ if (debug_log.filters_num > 0) {
+ bool state = false;
+
+ for (unsigned int i = 0; i<debug_log.filters_num; i++) {
+ const struct debug_log_filter *filter = &debug_log.filters[i];
+
+ switch (filter->type) {
+ case dlf_all:
+ if (check_filter(func_name, filter, &state)) return state;
+ if (check_filter(file_name, filter, &state)) return state;
+ break;
+ case dlf_func:
+ if (check_filter(func_name, filter, &state)) return state;
+ break;
+ case dlf_file:
+ if (check_filter(file_name, filter, &state)) return state;
+ break;
+ }
+ }
+ return state;
+ }
+ else {
+ return true;
+ }
+}
+
+static const char *
+pretty_filename(const char *path)
+{
+ // basename is one idea.
+ const char *s;
+ while ((s = strchr(path, '/')) != NULL) {
+ path = s+1;
+ }
+ return path;
+}
+
+#undef ruby_debug_log
+void
+ruby_debug_log(const char *file, int line, const char *func_name, const char *fmt, ...)
+{
+ char buff[MAX_DEBUG_LOG_MESSAGE_LEN] = {0};
+ int len = 0;
+ int r = 0;
+
+ // message title
+ if (func_name && len < MAX_DEBUG_LOG_MESSAGE_LEN) {
+ r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN, "%s\t", func_name);
+ if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
+ len += r;
+ }
+
+ // message
+ if (fmt && len < MAX_DEBUG_LOG_MESSAGE_LEN) {
+ va_list args;
+ va_start(args, fmt);
+ r = vsnprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, fmt, args);
+ va_end(args);
+ if (r < 0) rb_bug("ruby_debug_log vsnprintf() returns %d", r);
+ len += r;
+ }
+
+ // optional information
+
+ // C location
+ if (file && len < MAX_DEBUG_LOG_MESSAGE_LEN) {
+ r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN, "\t%s:%d", pretty_filename(file), line);
+ if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
+ len += r;
+ }
+
+ if (rb_current_execution_context(false)) {
+ // Ruby location
+ int ruby_line;
+ const char *ruby_file = rb_source_location_cstr(&ruby_line);
+ if (len < MAX_DEBUG_LOG_MESSAGE_LEN) {
+ if (ruby_file) {
+ r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, "\t%s:%d", pretty_filename(ruby_file), ruby_line);
+ }
+ else {
+ r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, "\t");
+ }
+ if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
+ len += r;
+ }
+
+ // ractor information
+ if (ruby_single_main_ractor == NULL) {
+ rb_ractor_t *cr = GET_RACTOR();
+ if (r && len < MAX_DEBUG_LOG_MESSAGE_LEN) {
+ r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, "\tr:#%u/%u",
+ (unsigned int)rb_ractor_id(cr), GET_VM()->ractor.cnt);
+ if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
+ len += r;
+ }
+ }
+
+ // thread information
+ const rb_thread_t *th = GET_THREAD();
+ if (r && len < MAX_DEBUG_LOG_MESSAGE_LEN) {
+ r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, "\tth:%u", rb_th_serial(th));
+ if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
+ len += r;
+ }
+ }
+
+ rb_nativethread_lock_lock(&debug_log.lock);
+ {
+ unsigned int cnt = debug_log.cnt++;
+
+ if (ruby_debug_log_mode & ruby_debug_log_memory) {
+ unsigned int index = cnt % MAX_DEBUG_LOG;
+ char *dst = RUBY_DEBUG_LOG_MEM_ENTRY(index);
+ strncpy(dst, buff, MAX_DEBUG_LOG_MESSAGE_LEN);
+ }
+ if (ruby_debug_log_mode & ruby_debug_log_stderr) {
+ fprintf(stderr, "%4u: %s\n", cnt, buff);
+ }
+ if (ruby_debug_log_mode & ruby_debug_log_file) {
+ fprintf(debug_log.output, "%u\t%s\n", cnt, buff);
+ }
+ }
+ rb_nativethread_lock_unlock(&debug_log.lock);
+}
+
+// for debugger
+static void
+debug_log_dump(FILE *out, unsigned int n)
+{
+ if (ruby_debug_log_mode & ruby_debug_log_memory) {
+ unsigned int size = debug_log.cnt > MAX_DEBUG_LOG ? MAX_DEBUG_LOG : debug_log.cnt;
+ unsigned int current_index = debug_log.cnt % MAX_DEBUG_LOG;
+ if (n == 0) n = size;
+ if (n > size) n = size;
+
+ for (unsigned int i=0; i<n; i++) {
+ int index = current_index - size + i;
+ if (index < 0) index += MAX_DEBUG_LOG;
+ VM_ASSERT(index <= MAX_DEBUG_LOG);
+ const char *mesg = RUBY_DEBUG_LOG_MEM_ENTRY(index);;
+ fprintf(out, "%4u: %s\n", debug_log.cnt - size + i, mesg);
+ }
+ }
+ else {
+ fprintf(stderr, "RUBY_DEBUG_LOG=mem is not specified.");
+ }
+}
+
+// for debuggers
+
+void
+ruby_debug_log_print(unsigned int n)
+{
+ debug_log_dump(stderr, n);
+}
+
+void
+ruby_debug_log_dump(const char *fname, unsigned int n)
+{
+ FILE *fp = fopen(fname, "w");
+ if (fp == NULL) {
+ fprintf(stderr, "can't open %s. give up.\n", fname);
+ }
+ else {
+ debug_log_dump(fp, n);
+ fclose(fp);
+ }
+}
+#endif // #if USE_RUBY_DEBUG_LOG
diff --git a/debug_counter.c b/debug_counter.c
new file mode 100644
index 0000000000..463bebf849
--- /dev/null
+++ b/debug_counter.c
@@ -0,0 +1,152 @@
+/**********************************************************************
+
+ debug_counter.c -
+
+ created at: Tue Feb 21 16:51:18 2017
+
+ Copyright (C) 2017 Koichi Sasada
+
+**********************************************************************/
+
+#include "debug_counter.h"
+#include "internal.h"
+#include <stdio.h>
+#include <locale.h>
+#include "ruby/thread_native.h"
+
+#if USE_DEBUG_COUNTER
+
+const char *const rb_debug_counter_names[] = {
+#define DEBUG_COUNTER_NAME_EMPTY "" /* Suppress -Wstring-concatenation */
+ DEBUG_COUNTER_NAME_EMPTY
+#undef DEBUG_COUNTER_NAME_EMPTY
+#define RB_DEBUG_COUNTER(name) #name,
+#include "debug_counter.h"
+#undef RB_DEBUG_COUNTER
+};
+
+MJIT_SYMBOL_EXPORT_BEGIN
+size_t rb_debug_counter[numberof(rb_debug_counter_names)];
+void rb_debug_counter_add_atomic(enum rb_debug_counter_type type, int add);
+MJIT_SYMBOL_EXPORT_END
+
+static rb_nativethread_lock_t debug_counter_lock;
+
+__attribute__((constructor))
+static void
+debug_counter_setup(void)
+{
+ rb_nativethread_lock_initialize(&debug_counter_lock);
+}
+
+void
+rb_debug_counter_add_atomic(enum rb_debug_counter_type type, int add)
+{
+ rb_nativethread_lock_lock(&debug_counter_lock);
+ {
+ rb_debug_counter[(int)type] += add;
+ }
+ rb_nativethread_lock_unlock(&debug_counter_lock);
+}
+
+static int debug_counter_disable_show_at_exit = 0;
+
+// note that this operation is not atomic.
+void
+ruby_debug_counter_reset(void)
+{
+ for (int i = 0; i < RB_DEBUG_COUNTER_MAX; i++) {
+ rb_debug_counter[i] = 0;
+ }
+}
+
+// note that this operation is not atomic.
+size_t
+ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr)
+{
+ int i;
+ if (names_ptr != NULL) {
+ for (i=0; i<RB_DEBUG_COUNTER_MAX; i++) {
+ names_ptr[i] = rb_debug_counter_names[i];
+ }
+ }
+ if (counters_ptr != NULL) {
+ for (i=0; i<RB_DEBUG_COUNTER_MAX; i++) {
+ counters_ptr[i] = rb_debug_counter[i];
+ }
+ }
+
+ return RB_DEBUG_COUNTER_MAX;
+}
+
+void
+ruby_debug_counter_show_at_exit(int enable)
+{
+ debug_counter_disable_show_at_exit = !enable;
+}
+
+void
+rb_debug_counter_show_results(const char *msg)
+{
+ const char *env = getenv("RUBY_DEBUG_COUNTER_DISABLE");
+
+ setlocale(LC_NUMERIC, "");
+
+ if (env == NULL || strcmp("1", env) != 0) {
+ int i;
+ fprintf(stderr, "[RUBY_DEBUG_COUNTER]\t%d %s\n", getpid(), msg);
+ for (i=0; i<RB_DEBUG_COUNTER_MAX; i++) {
+ fprintf(stderr, "[RUBY_DEBUG_COUNTER]\t%-30s\t%'14"PRIuSIZE"\n",
+ rb_debug_counter_names[i],
+ rb_debug_counter[i]);
+ }
+ }
+}
+
+VALUE
+rb_debug_counter_show(RB_UNUSED_VAR(VALUE klass))
+{
+ rb_debug_counter_show_results("show_debug_counters");
+ ruby_debug_counter_show_at_exit(FALSE);
+ return Qnil;
+}
+
+VALUE
+rb_debug_counter_reset(RB_UNUSED_VAR(VALUE klass))
+{
+ ruby_debug_counter_reset();
+ return Qnil;
+}
+
+__attribute__((destructor))
+static void
+debug_counter_show_results_at_exit(void)
+{
+ if (debug_counter_disable_show_at_exit == 0) {
+ rb_debug_counter_show_results("normal exit.");
+ }
+}
+
+#else
+
+void
+rb_debug_counter_show_results(const char *msg)
+{
+}
+
+size_t
+ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr)
+{
+ return 0;
+}
+void
+ruby_debug_counter_reset(void)
+{
+}
+
+void
+ruby_debug_counter_show_at_exit(int enable)
+{
+}
+
+#endif /* USE_DEBUG_COUNTER */
diff --git a/debug_counter.h b/debug_counter.h
new file mode 100644
index 0000000000..6e0b8dee60
--- /dev/null
+++ b/debug_counter.h
@@ -0,0 +1,434 @@
+/**********************************************************************
+
+ debug_counter.h -
+
+ created at: Tue Feb 21 16:51:18 2017
+
+ Copyright (C) 2017 Koichi Sasada
+
+**********************************************************************/
+
+#ifndef USE_DEBUG_COUNTER
+#define USE_DEBUG_COUNTER 0
+#endif
+
+#ifdef RB_DEBUG_COUNTER
+
+// method cache (IMC: inline method cache)
+RB_DEBUG_COUNTER(mc_inline_hit) // IMC hit
+RB_DEBUG_COUNTER(mc_inline_miss_klass) // IMC miss by different class
+RB_DEBUG_COUNTER(mc_inline_miss_invalidated) // IMC miss by invalidated ME
+RB_DEBUG_COUNTER(mc_inline_miss_empty) // IMC miss because prev is empty slot
+RB_DEBUG_COUNTER(mc_inline_miss_same_cc) // IMC miss, but same CC
+RB_DEBUG_COUNTER(mc_inline_miss_same_cme) // IMC miss, but same CME
+RB_DEBUG_COUNTER(mc_inline_miss_same_def) // IMC miss, but same definition
+RB_DEBUG_COUNTER(mc_inline_miss_diff) // IMC miss, different methods
+
+RB_DEBUG_COUNTER(cvar_write_inline_hit) // cvar cache hit on write
+RB_DEBUG_COUNTER(cvar_read_inline_hit) // cvar cache hit on read
+RB_DEBUG_COUNTER(cvar_inline_miss) // miss inline cache
+RB_DEBUG_COUNTER(cvar_class_invalidate) // invalidate cvar cache when define a cvar that's defined on a subclass
+RB_DEBUG_COUNTER(cvar_include_invalidate) // invalidate cvar cache on module include or prepend
+
+RB_DEBUG_COUNTER(mc_cme_complement) // number of acquiring complement CME
+RB_DEBUG_COUNTER(mc_cme_complement_hit) // number of cache hit for complemented CME
+
+RB_DEBUG_COUNTER(mc_search) // count for method lookup in class tree
+RB_DEBUG_COUNTER(mc_search_notfound) // method lookup, but not found
+RB_DEBUG_COUNTER(mc_search_super) // total traversed classes
+
+// callinfo
+RB_DEBUG_COUNTER(ci_packed) // number of packed CI
+RB_DEBUG_COUNTER(ci_kw) // non-packed CI w/ keywords
+RB_DEBUG_COUNTER(ci_nokw) // non-packed CI w/o keywords
+RB_DEBUG_COUNTER(ci_runtime) // creating temporary CI
+
+// callcache
+RB_DEBUG_COUNTER(cc_new) // number of CC
+RB_DEBUG_COUNTER(cc_temp) // dummy CC (stack-allocated)
+RB_DEBUG_COUNTER(cc_found_in_ccs) // count for CC lookup success in CCS
+RB_DEBUG_COUNTER(cc_not_found_in_ccs) // count for CC lookup success in CCS
+
+RB_DEBUG_COUNTER(cc_ent_invalidate) // count for invalidating cc (cc->klass = 0)
+RB_DEBUG_COUNTER(cc_cme_invalidate) // count for invalidating CME
+
+RB_DEBUG_COUNTER(cc_invalidate_leaf) // count for invalidating klass if klass has no-subclasses
+RB_DEBUG_COUNTER(cc_invalidate_leaf_ccs) // corresponding CCS
+RB_DEBUG_COUNTER(cc_invalidate_leaf_callable) // complimented cache (no-subclasses)
+RB_DEBUG_COUNTER(cc_invalidate_tree) // count for invalidating klass if klass has subclasses
+RB_DEBUG_COUNTER(cc_invalidate_tree_cme) // cme if cme is found in this class or superclasses
+RB_DEBUG_COUNTER(cc_invalidate_tree_callable) // complimented cache (subclasses)
+RB_DEBUG_COUNTER(cc_invalidate_negative) // count for invalidating negative cache
+
+RB_DEBUG_COUNTER(ccs_free) // count for free'ing ccs
+RB_DEBUG_COUNTER(ccs_maxlen) // maximum length of ccs
+RB_DEBUG_COUNTER(ccs_found) // count for finding corresponding ccs on method lookup
+RB_DEBUG_COUNTER(ccs_not_found) // count for not found corresponding ccs on method lookup
+
+// vm_eval.c
+RB_DEBUG_COUNTER(call0_public)
+RB_DEBUG_COUNTER(call0_other)
+RB_DEBUG_COUNTER(gccct_hit)
+RB_DEBUG_COUNTER(gccct_miss)
+RB_DEBUG_COUNTER(gccct_null)
+
+// iseq
+RB_DEBUG_COUNTER(iseq_num) // number of total created iseq
+RB_DEBUG_COUNTER(iseq_cd_num) // number of total created cd (call_data)
+
+/*
+ * call cache fastpath usage
+ */
+RB_DEBUG_COUNTER(ccf_general)
+RB_DEBUG_COUNTER(ccf_iseq_setup)
+RB_DEBUG_COUNTER(ccf_iseq_setup_0start)
+RB_DEBUG_COUNTER(ccf_iseq_setup_tailcall_0start)
+RB_DEBUG_COUNTER(ccf_iseq_fix) /* several functions created with tool/mk_call_iseq_optimized.rb */
+RB_DEBUG_COUNTER(ccf_iseq_opt) /* has_opt == TRUE (has optional parameters), but other flags are FALSE */
+RB_DEBUG_COUNTER(ccf_iseq_kw1) /* vm_call_iseq_setup_kwparm_kwarg() */
+RB_DEBUG_COUNTER(ccf_iseq_kw2) /* vm_call_iseq_setup_kwparm_nokwarg() */
+RB_DEBUG_COUNTER(ccf_cfunc)
+RB_DEBUG_COUNTER(ccf_cfunc_with_frame)
+RB_DEBUG_COUNTER(ccf_ivar) /* attr_reader */
+RB_DEBUG_COUNTER(ccf_attrset) /* attr_writer */
+RB_DEBUG_COUNTER(ccf_method_missing)
+RB_DEBUG_COUNTER(ccf_zsuper)
+RB_DEBUG_COUNTER(ccf_bmethod)
+RB_DEBUG_COUNTER(ccf_opt_send)
+RB_DEBUG_COUNTER(ccf_opt_call)
+RB_DEBUG_COUNTER(ccf_opt_block_call)
+RB_DEBUG_COUNTER(ccf_opt_struct_aref)
+RB_DEBUG_COUNTER(ccf_opt_struct_aset)
+RB_DEBUG_COUNTER(ccf_super_method)
+
+/*
+ * control frame push counts.
+ *
+ * * frame_push: frame push counts.
+ * * frame_push_*: frame push counts per each type.
+ * * frame_R2R: Ruby frame to Ruby frame
+ * * frame_R2C: Ruby frame to C frame
+ * * frame_C2C: C frame to C frame
+ * * frame_C2R: C frame to Ruby frame
+ */
+RB_DEBUG_COUNTER(frame_push)
+RB_DEBUG_COUNTER(frame_push_method)
+RB_DEBUG_COUNTER(frame_push_block)
+RB_DEBUG_COUNTER(frame_push_class)
+RB_DEBUG_COUNTER(frame_push_top)
+RB_DEBUG_COUNTER(frame_push_cfunc)
+RB_DEBUG_COUNTER(frame_push_ifunc)
+RB_DEBUG_COUNTER(frame_push_eval)
+RB_DEBUG_COUNTER(frame_push_rescue)
+RB_DEBUG_COUNTER(frame_push_dummy)
+
+RB_DEBUG_COUNTER(frame_R2R)
+RB_DEBUG_COUNTER(frame_R2C)
+RB_DEBUG_COUNTER(frame_C2C)
+RB_DEBUG_COUNTER(frame_C2R)
+
+/* instance variable counts
+ *
+ * * ivar_get_ic_hit/miss: ivar_get inline cache (ic) hit/miss counts (VM insn)
+ * * ivar_get_ic_miss_unset: ... by unset (VM insn)
+ * * ivar_get_ic_miss_noobject: ... by "not T_OBJECT" (VM insn)
+ * * ivar_set_...: same counts with ivar_set (VM insn)
+ * * ivar_get/set_base: call counts of "rb_ivar_get/set()".
+ * because of (1) ic miss.
+ * (2) direct call by C extensions.
+ */
+RB_DEBUG_COUNTER(ivar_get_ic_hit)
+RB_DEBUG_COUNTER(ivar_get_ic_miss)
+RB_DEBUG_COUNTER(ivar_get_ic_miss_noobject)
+RB_DEBUG_COUNTER(ivar_set_ic_hit)
+RB_DEBUG_COUNTER(ivar_set_ic_miss)
+RB_DEBUG_COUNTER(ivar_set_ic_miss_iv_hit)
+RB_DEBUG_COUNTER(ivar_set_ic_miss_noobject)
+RB_DEBUG_COUNTER(ivar_get_base)
+RB_DEBUG_COUNTER(ivar_set_base)
+RB_DEBUG_COUNTER(ivar_get_ic_miss_set)
+RB_DEBUG_COUNTER(ivar_get_cc_miss_set)
+RB_DEBUG_COUNTER(ivar_get_ic_miss_unset)
+RB_DEBUG_COUNTER(ivar_get_cc_miss_unset)
+
+/* local variable counts
+ *
+ * * lvar_get: total lvar get counts (VM insn)
+ * * lvar_get_dynamic: lvar get counts if accessing upper env (VM insn)
+ * * lvar_set*: same as "get"
+ * * lvar_set_slowpath: counts using vm_env_write_slowpath()
+ */
+RB_DEBUG_COUNTER(lvar_get)
+RB_DEBUG_COUNTER(lvar_get_dynamic)
+RB_DEBUG_COUNTER(lvar_set)
+RB_DEBUG_COUNTER(lvar_set_dynamic)
+RB_DEBUG_COUNTER(lvar_set_slowpath)
+
+/* GC counts:
+ *
+ * * count: simple count
+ * * _minor: minor gc
+ * * _major: major gc
+ * * other suffix is corresponding to last_gc_info or
+ * gc_profile_record_flag in gc.c.
+ */
+RB_DEBUG_COUNTER(gc_count)
+RB_DEBUG_COUNTER(gc_minor_newobj)
+RB_DEBUG_COUNTER(gc_minor_malloc)
+RB_DEBUG_COUNTER(gc_minor_method)
+RB_DEBUG_COUNTER(gc_minor_capi)
+RB_DEBUG_COUNTER(gc_minor_stress)
+RB_DEBUG_COUNTER(gc_major_nofree)
+RB_DEBUG_COUNTER(gc_major_oldgen)
+RB_DEBUG_COUNTER(gc_major_shady)
+RB_DEBUG_COUNTER(gc_major_force)
+RB_DEBUG_COUNTER(gc_major_oldmalloc)
+
+RB_DEBUG_COUNTER(gc_enter_start)
+RB_DEBUG_COUNTER(gc_enter_mark_continue)
+RB_DEBUG_COUNTER(gc_enter_sweep_continue)
+RB_DEBUG_COUNTER(gc_enter_rest)
+RB_DEBUG_COUNTER(gc_enter_finalizer)
+
+RB_DEBUG_COUNTER(gc_isptr_trial)
+RB_DEBUG_COUNTER(gc_isptr_range)
+RB_DEBUG_COUNTER(gc_isptr_align)
+RB_DEBUG_COUNTER(gc_isptr_maybe)
+
+/* object allocation counts:
+ *
+ * * obj_newobj: newobj counts
+ * * obj_newobj_slowpath: newobj with slowpath counts
+ * * obj_newobj_wb_unprotected: newobj for wb_unprotected.
+ * * obj_free: obj_free() counts
+ * * obj_promote: promoted counts (oldgen)
+ * * obj_wb_unprotect: wb unprotect counts
+ *
+ * * obj_[type]_[attr]: *free'ed counts* for each type.
+ * Note that it is not a allocated counts.
+ * * [type]
+ * * _obj: T_OBJECT
+ * * _str: T_STRING
+ * * _ary: T_ARRAY
+ * * _xxx: T_XXX (hash, struct, ...)
+ *
+ * * [attr]
+ * * _ptr: R?? is not embed.
+ * * _embed: R?? is embed.
+ * * _transient: R?? uses transient heap.
+ * * type specific attr.
+ * * str_shared: str is shared.
+ * * str_nofree: nofree
+ * * str_fstr: fstr
+ * * hash_empty: hash is empty
+ * * hash_1_4: has 1 to 4 entries
+ * * hash_5_8: has 5 to 8 entries
+ * * hash_g8: has n entries (n>8)
+ * * match_under4: has under 4 oniguruma regions allocated
+ * * match_ge4: has n regions allocated (4<=n<8)
+ * * match_ge8: has n regions allocated (8<=n)
+ * * data_empty: T_DATA but no memory free.
+ * * data_xfree: free'ed by xfree().
+ * * data_imm_free: free'ed immediately.
+ * * data_zombie: free'ed with zombie.
+ * * imemo_*: T_IMEMO with each type.
+ */
+RB_DEBUG_COUNTER(obj_newobj)
+RB_DEBUG_COUNTER(obj_newobj_slowpath)
+RB_DEBUG_COUNTER(obj_newobj_wb_unprotected)
+RB_DEBUG_COUNTER(obj_free)
+RB_DEBUG_COUNTER(obj_promote)
+RB_DEBUG_COUNTER(obj_wb_unprotect)
+
+RB_DEBUG_COUNTER(obj_obj_embed)
+RB_DEBUG_COUNTER(obj_obj_transient)
+RB_DEBUG_COUNTER(obj_obj_ptr)
+RB_DEBUG_COUNTER(obj_obj_too_complex)
+
+RB_DEBUG_COUNTER(obj_str_ptr)
+RB_DEBUG_COUNTER(obj_str_embed)
+RB_DEBUG_COUNTER(obj_str_shared)
+RB_DEBUG_COUNTER(obj_str_nofree)
+RB_DEBUG_COUNTER(obj_str_fstr)
+
+RB_DEBUG_COUNTER(obj_ary_embed)
+RB_DEBUG_COUNTER(obj_ary_transient)
+RB_DEBUG_COUNTER(obj_ary_ptr)
+RB_DEBUG_COUNTER(obj_ary_extracapa)
+/*
+ ary_shared_create: shared ary by Array#dup and so on.
+ ary_shared: finished in shard.
+ ary_shared_root_occupied: shared_root but has only 1 refcnt.
+ The number (ary_shared - ary_shared_root_occupied) is meaningful.
+ */
+RB_DEBUG_COUNTER(obj_ary_shared_create)
+RB_DEBUG_COUNTER(obj_ary_shared)
+RB_DEBUG_COUNTER(obj_ary_shared_root_occupied)
+
+RB_DEBUG_COUNTER(obj_hash_empty)
+RB_DEBUG_COUNTER(obj_hash_1)
+RB_DEBUG_COUNTER(obj_hash_2)
+RB_DEBUG_COUNTER(obj_hash_3)
+RB_DEBUG_COUNTER(obj_hash_4)
+RB_DEBUG_COUNTER(obj_hash_5_8)
+RB_DEBUG_COUNTER(obj_hash_g8)
+
+RB_DEBUG_COUNTER(obj_hash_null)
+RB_DEBUG_COUNTER(obj_hash_ar)
+RB_DEBUG_COUNTER(obj_hash_st)
+RB_DEBUG_COUNTER(obj_hash_transient)
+RB_DEBUG_COUNTER(obj_hash_force_convert)
+
+RB_DEBUG_COUNTER(obj_struct_embed)
+RB_DEBUG_COUNTER(obj_struct_transient)
+RB_DEBUG_COUNTER(obj_struct_ptr)
+
+RB_DEBUG_COUNTER(obj_data_empty)
+RB_DEBUG_COUNTER(obj_data_xfree)
+RB_DEBUG_COUNTER(obj_data_imm_free)
+RB_DEBUG_COUNTER(obj_data_zombie)
+
+RB_DEBUG_COUNTER(obj_match_under4)
+RB_DEBUG_COUNTER(obj_match_ge4)
+RB_DEBUG_COUNTER(obj_match_ge8)
+RB_DEBUG_COUNTER(obj_match_ptr)
+
+RB_DEBUG_COUNTER(obj_iclass_ptr)
+RB_DEBUG_COUNTER(obj_class_ptr)
+RB_DEBUG_COUNTER(obj_module_ptr)
+
+RB_DEBUG_COUNTER(obj_bignum_ptr)
+RB_DEBUG_COUNTER(obj_bignum_embed)
+RB_DEBUG_COUNTER(obj_float)
+RB_DEBUG_COUNTER(obj_complex)
+RB_DEBUG_COUNTER(obj_rational)
+
+RB_DEBUG_COUNTER(obj_regexp_ptr)
+RB_DEBUG_COUNTER(obj_file_ptr)
+RB_DEBUG_COUNTER(obj_symbol)
+
+RB_DEBUG_COUNTER(obj_imemo_ment)
+RB_DEBUG_COUNTER(obj_imemo_iseq)
+RB_DEBUG_COUNTER(obj_imemo_env)
+RB_DEBUG_COUNTER(obj_imemo_tmpbuf)
+RB_DEBUG_COUNTER(obj_imemo_ast)
+RB_DEBUG_COUNTER(obj_imemo_cref)
+RB_DEBUG_COUNTER(obj_imemo_svar)
+RB_DEBUG_COUNTER(obj_imemo_throw_data)
+RB_DEBUG_COUNTER(obj_imemo_ifunc)
+RB_DEBUG_COUNTER(obj_imemo_memo)
+RB_DEBUG_COUNTER(obj_imemo_parser_strterm)
+RB_DEBUG_COUNTER(obj_imemo_callinfo)
+RB_DEBUG_COUNTER(obj_imemo_callcache)
+RB_DEBUG_COUNTER(obj_imemo_constcache)
+
+/* ar_table */
+RB_DEBUG_COUNTER(artable_hint_hit)
+RB_DEBUG_COUNTER(artable_hint_miss)
+RB_DEBUG_COUNTER(artable_hint_notfound)
+
+/* heap function counts
+ *
+ * * heap_xmalloc/realloc/xfree: call counts
+ */
+RB_DEBUG_COUNTER(heap_xmalloc)
+RB_DEBUG_COUNTER(heap_xrealloc)
+RB_DEBUG_COUNTER(heap_xfree)
+
+/* transient_heap */
+RB_DEBUG_COUNTER(theap_alloc)
+RB_DEBUG_COUNTER(theap_alloc_fail)
+RB_DEBUG_COUNTER(theap_evacuate)
+
+// VM sync
+RB_DEBUG_COUNTER(vm_sync_lock)
+RB_DEBUG_COUNTER(vm_sync_lock_enter)
+RB_DEBUG_COUNTER(vm_sync_lock_enter_nb)
+RB_DEBUG_COUNTER(vm_sync_lock_enter_cr)
+RB_DEBUG_COUNTER(vm_sync_barrier)
+
+/* load (not implemented yet) */
+/*
+RB_DEBUG_COUNTER(load_files)
+RB_DEBUG_COUNTER(load_path_is_not_realpath)
+*/
+#endif
+
+#ifndef RUBY_DEBUG_COUNTER_H
+#define RUBY_DEBUG_COUNTER_H 1
+
+#include "ruby/internal/config.h"
+#include <stddef.h> /* for size_t */
+#include "ruby/ruby.h" /* for VALUE */
+
+#if !defined(__GNUC__) && USE_DEBUG_COUNTER
+#error "USE_DEBUG_COUNTER is not supported by other than __GNUC__"
+#endif
+
+enum rb_debug_counter_type {
+#define RB_DEBUG_COUNTER(name) RB_DEBUG_COUNTER_##name,
+#include __FILE__
+ RB_DEBUG_COUNTER_MAX
+#undef RB_DEBUG_COUNTER
+};
+
+#if USE_DEBUG_COUNTER
+extern size_t rb_debug_counter[];
+RUBY_EXTERN struct rb_ractor_struct *ruby_single_main_ractor;
+RUBY_EXTERN void rb_debug_counter_add_atomic(enum rb_debug_counter_type type, int add);
+
+inline static int
+rb_debug_counter_add(enum rb_debug_counter_type type, int add, int cond)
+{
+ if (cond) {
+ if (ruby_single_main_ractor != NULL) {
+ rb_debug_counter[(int)type] += add;
+ }
+ else {
+ rb_debug_counter_add_atomic(type, add);
+ }
+ }
+ return cond;
+}
+
+inline static int
+rb_debug_counter_max(enum rb_debug_counter_type type, unsigned int num)
+{
+ // TODO: sync
+ if (rb_debug_counter[(int)type] < num) {
+ rb_debug_counter[(int)type] = num;
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
+VALUE rb_debug_counter_reset(VALUE klass);
+VALUE rb_debug_counter_show(VALUE klass);
+
+#define RB_DEBUG_COUNTER_INC(type) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, 1)
+#define RB_DEBUG_COUNTER_INC_UNLESS(type, cond) (!rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, !(cond)))
+#define RB_DEBUG_COUNTER_INC_IF(type, cond) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, !!(cond))
+#define RB_DEBUG_COUNTER_ADD(type, num) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, (num), 1)
+#define RB_DEBUG_COUNTER_SETMAX(type, num) rb_debug_counter_max(RB_DEBUG_COUNTER_##type, (unsigned int)(num))
+
+#else
+#define RB_DEBUG_COUNTER_INC(type) ((void)0)
+#define RB_DEBUG_COUNTER_INC_UNLESS(type, cond) (!!(cond))
+#define RB_DEBUG_COUNTER_INC_IF(type, cond) (!!(cond))
+#define RB_DEBUG_COUNTER_ADD(type, num) ((void)0)
+#define RB_DEBUG_COUNTER_SETMAX(type, num) 0
+#endif
+
+void rb_debug_counter_show_results(const char *msg);
+
+RUBY_SYMBOL_EXPORT_BEGIN
+
+size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr);
+void ruby_debug_counter_reset(void);
+void ruby_debug_counter_show_at_exit(int enable);
+
+RUBY_SYMBOL_EXPORT_END
+
+#endif /* RUBY_DEBUG_COUNTER_H */
diff --git a/defines.h b/defines.h
deleted file mode 100644
index fefddee23b..0000000000
--- a/defines.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/************************************************
-
- defines.h -
-
- $Author$
- $Date$
- created at: Wed May 18 00:21:44 JST 1994
-
-************************************************/
-#ifndef DEFINES_H
-#define DEFINES_H
-
-#define RUBY
-
-/* define RUBY_USE_EUC/SJIS for default kanji-code */
-#ifndef DEFAULT_KCODE
-#if defined(MSDOS) || defined(__CYGWIN__) || defined(__human68k__) || defined(__MACOS__) || defined(__EMX__) || defined(OS2) || defined(NT)
-#define DEFAULT_KCODE KCODE_SJIS
-#else
-#define DEFAULT_KCODE KCODE_EUC
-#endif
-#endif
-
-#ifdef NeXT
-#define DYNAMIC_ENDIAN /* determine endian at runtime */
-#ifndef __APPLE__
-#define S_IXUSR _S_IXUSR /* execute/search permission, owner */
-#endif
-#define S_IXGRP 0000010 /* execute/search permission, group */
-#define S_IXOTH 0000001 /* execute/search permission, other */
-
-#define HAVE_SYS_WAIT_H /* configure fails to find this */
-#endif /* NeXT */
-
-#ifdef NT
-#include "win32/win32.h"
-#endif
-
-#if defined __CYGWIN__
-# undef EXTERN
-# if defined USEIMPORTLIB
-# define EXTERN extern __declspec(dllimport)
-# else
-# define EXTERN extern __declspec(dllexport)
-# endif
-#endif
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
-
-#ifdef sparc
-#define FLUSH_REGISTER_WINDOWS asm("ta 3")
-#else
-#define FLUSH_REGISTER_WINDOWS /* empty */
-#endif
-
-#if defined(MSDOS) || defined(_WIN32) || defined(__human68k__) || defined(__EMX__)
-#define DOSISH 1
-#endif
-
-#if defined(MSDOS) || defined(NT) || defined(__human68k__) || defined(OS2)
-#define PATH_SEP ";"
-#elif defined(riscos)
-#define PATH_SEP ","
-#else
-#define PATH_SEP ":"
-#endif
-#define PATH_SEP_CHAR PATH_SEP[0]
-
-#if defined(__human68k__)
-#undef HAVE_RANDOM
-#undef HAVE_SETITIMER
-#endif
-
-#if defined(DJGPP) || defined(__BOW__) || defined __CYGWIN__
-#undef HAVE_SETITIMER
-#endif
-
-#ifndef RUBY_PLATFORM
-#define RUBY_PLATFORM "unknown-unknown"
-#endif
-
-#endif
diff --git a/defs/gmake.mk b/defs/gmake.mk
new file mode 100644
index 0000000000..54fef6685f
--- /dev/null
+++ b/defs/gmake.mk
@@ -0,0 +1,482 @@
+# -*- mode: makefile-gmake; indent-tabs-mode: t -*-
+
+reconfig config.status: export MAKE:=$(MAKE)
+override gnumake_recursive := $(if $(findstring n,$(firstword $(MFLAGS))),,+)
+override mflags := $(filter-out -j%,$(MFLAGS))
+MSPECOPT += $(if $(filter -j%,$(MFLAGS)),-j)
+nproc = $(subst -j,,$(filter -j%,$(MFLAGS)))
+
+ifeq ($(GITHUB_ACTIONS),true)
+override ACTIONS_GROUP = @echo "\#\#[group]$(patsubst yes-%,%,$@)"
+override ACTIONS_ENDGROUP = @echo "\#\#[endgroup]"
+endif
+
+ifneq ($(filter darwin%,$(target_os)),)
+# Remove debug option not to generate thousands of .dSYM
+MJIT_DEBUGFLAGS := $(filter-out -g%,$(MJIT_DEBUGFLAGS))
+
+INSTRUBY_ENV += SDKROOT=
+endif
+INSTRUBY_ARGS += --gnumake
+
+ifeq ($(DOT_WAIT),)
+CHECK_TARGETS := great exam love check test check% test% btest%
+# expand test targets, and those dependents
+TEST_TARGETS := $(filter $(CHECK_TARGETS),$(MAKECMDGOALS))
+TEST_DEPENDS := $(filter-out commit $(TEST_TARGETS),$(MAKECMDGOALS))
+TEST_TARGETS := $(patsubst great,exam,$(TEST_TARGETS))
+TEST_DEPENDS := $(filter-out great $(TEST_TARGETS),$(TEST_DEPENDS))
+TEST_TARGETS := $(patsubst exam,check,$(TEST_TARGETS))
+TEST_TARGETS := $(patsubst check,test-syntax-suggest test-spec test-all test-tool test-short,$(TEST_TARGETS))
+TEST_TARGETS := $(patsubst test-rubyspec,test-spec,$(TEST_TARGETS))
+TEST_DEPENDS := $(filter-out exam check test-spec $(TEST_TARGETS),$(TEST_DEPENDS))
+TEST_TARGETS := $(patsubst love,check,$(TEST_TARGETS))
+TEST_DEPENDS := $(filter-out love $(TEST_TARGETS),$(TEST_DEPENDS))
+TEST_TARGETS := $(patsubst test-almost,test-all,$(patsubst check-%,test test-%,$(TEST_TARGETS)))
+TEST_DEPENDS := $(filter-out test-all $(TEST_TARGETS),$(TEST_DEPENDS))
+TEST_TARGETS := $(patsubst test,test-short,$(TEST_TARGETS))
+TEST_DEPENDS := $(filter-out test $(TEST_TARGETS),$(TEST_DEPENDS))
+TEST_TARGETS := $(patsubst test-short,btest-ruby test-knownbug test-basic,$(TEST_TARGETS))
+TEST_TARGETS := $(patsubst test-bundled-gems,test-bundled-gems-run,$(TEST_TARGETS))
+TEST_TARGETS := $(patsubst test-bundled-gems-run,test-bundled-gems-run $(PREPARE_BUNDLED_GEMS),$(TEST_TARGETS))
+TEST_TARGETS := $(patsubst test-bundled-gems-prepare,test-bundled-gems-prepare $(PRECHECK_BUNDLED_GEMS) test-bundled-gems-fetch,$(TEST_TARGETS))
+TEST_TARGETS := $(patsubst test-syntax-suggest,test-syntax-suggest $(PREPARE_SYNTAX_SUGGEST),$(TEST_TARGETS))
+TEST_DEPENDS := $(filter-out test-short $(TEST_TARGETS),$(TEST_DEPENDS))
+TEST_DEPENDS += $(if $(filter great exam love check,$(MAKECMDGOALS)),all exts)
+endif
+
+in-srcdir := $(if $(filter-out .,$(srcdir)),$(CHDIR) $(srcdir) &&)
+
+ifeq ($(if $(filter all main exts enc trans libencs libenc libtrans \
+ prog program ruby ruby$(EXEEXT) \
+ wprogram rubyw rubyw$(EXEEXT) \
+ miniruby$(EXEEXT) mini,\
+ $(MAKECMDGOALS)),,$(MAKECMDGOALS)),)
+-include $(SHOWFLAGS)
+endif
+
+ifneq ($(filter universal-%,$(arch)),)
+define archcmd
+%.$(1).S: %.c
+ @$$(ECHO) translating $$< with $(2)
+ $$(Q) $$(CC) $$(CFLAGS_NO_ARCH) $(2) $$(XCFLAGS) $$(CPPFLAGS) $$(COUTFLAG)$$@ -S $$<
+
+%.S: %.$(1).S
+
+%.$(1).i: %.c
+ @$$(ECHO) preprocessing $$< with $(2)
+ $$(Q) $$(CPP) $$(warnflags) $(2) $$(XCFLAGS) $$(CPPFLAGS) $$(COUTFLAG)$$@ -E $$< > $$@
+
+%.i: %.$(1).i
+endef
+
+$(foreach arch,$(arch_flags),\
+ $(eval $(call archcmd,$(patsubst -arch=%,%,$(value arch)),$(patsubst -arch=%,-arch %,$(value arch)))))
+endif
+
+ifeq ($(DOT_WAIT),)
+.PHONY: $(addprefix yes-,$(TEST_TARGETS))
+
+ifneq ($(filter-out btest%,$(TEST_TARGETS)),)
+$(addprefix yes-,$(TEST_TARGETS)): $(TEST_DEPENDS)
+endif
+
+ORDERED_TEST_TARGETS := $(filter $(TEST_TARGETS), \
+ btest-ruby test-knownbug test-basic \
+ test-testframework test-tool test-ruby test-all \
+ test-spec test-syntax-suggest-prepare test-syntax-suggest \
+ test-bundler-prepare test-bundler test-bundler-parallel \
+ test-bundled-gems-precheck test-bundled-gems-fetch \
+ test-bundled-gems-prepare test-bundled-gems-run \
+ )
+prev_test := $(if $(filter test-spec,$(ORDERED_TEST_TARGETS)),test-spec-precheck)
+$(foreach test,$(ORDERED_TEST_TARGETS), \
+ $(eval yes-$(value test) no-$(value test): $(value prev_test)); \
+ $(eval prev_test := $(value test)))
+endif
+
+ifneq ($(if $(filter install,$(MAKECMDGOALS)),$(filter uninstall,$(MAKECMDGOALS))),)
+install-targets := $(filter install uninstall,$(MAKECMDGOALS))
+$(word 1,$(install-targets)): $(word 0,$(install-targets))
+endif
+
+ifneq ($(filter reinstall,$(MAKECMDGOALS)),)
+install-prereq: uninstall
+uninstall sudo-precheck: all $(if $(filter all,$(INSTALLDOC)),docs)
+endif
+
+ifneq ($(filter love,$(MAKECMDGOALS)),)
+showflags: up
+sudo-precheck: test yes-test-testframework no-test-testframework
+install-prereq: sudo-precheck
+yes-test-all no-test-all: install
+endif
+yes-test-bundler-parallel: PARALLELRSPECOPTS += $(if $(nproc),-n$(shell expr $(nproc) + $(nproc) / 2))
+
+# Cross reference needs to parse all files at once
+love install reinstall: RDOCFLAGS = --force-update
+
+ifneq ($(if $(filter -flto%,$(CFLAGS)),$(subst darwin,,$(arch)),$(arch)),$(arch))
+override EXE_LDFLAGS = $(filter-out -g%,$(LDFLAGS))
+endif
+
+$(srcdir)/missing/des_tables.c: $(srcdir)/missing/crypt.c
+ifeq ($(if $(filter yes,$(CROSS_COMPILING)),,$(CC)),)
+ touch $@
+else
+ @$(ECHO) building make_des_table
+ $(CC) $(INCFLAGS) $(CPPFLAGS) -DDUMP $(EXE_LDFLAGS) $(XLDFLAGS) $(LIBS) -omake_des_table $(srcdir)/missing/crypt.c
+ @[ -x ./make_des_table ]
+ @$(ECHO) generating $@
+ $(Q) $(MAKEDIRS) $(@D)
+ $(Q) ./make_des_table > $@.new
+ $(Q) mv $@.new $@
+ $(Q) $(RMALL) make_des_table*
+endif
+
+config.status: $(wildcard config.cache)
+
+STUBPROGRAM = rubystub$(EXEEXT)
+IGNOREDPATTERNS = %~ .% %.orig %.rej \#%\#
+SCRIPTBINDIR := $(if $(EXEEXT),,exec/)
+SCRIPTPROGRAMS = $(addprefix $(SCRIPTBINDIR),$(addsuffix $(EXEEXT),$(filter-out $(IGNOREDPATTERNS),$(notdir $(wildcard $(srcdir)/bin/*)))))
+
+stub: $(STUBPROGRAM)
+scriptbin: $(SCRIPTPROGRAMS)
+ifneq ($(STUBPROGRAM),rubystub)
+rubystub: $(STUBPROGRAM)
+endif
+
+$(SCRIPTPROGRAMS): $(STUBPROGRAM)
+
+$(STUBPROGRAM): rubystub.$(OBJEXT) $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP)
+
+rubystub$(EXEEXT):
+ @rm -f $@
+ $(ECHO) linking $@
+ $(Q) $(PURIFY) $(CC) $(EXE_LDFLAGS) $(XLDFLAGS) rubystub.$(OBJEXT) $(EXTOBJS) $(LIBRUBYARG) $(MAINLIBS) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@
+ $(Q) $(POSTLINK)
+ $(if $(STRIP),$(Q) $(STRIP) $@)
+
+$(SCRIPTBINDIR)%$(EXEEXT): bin/% $(STUBPROGRAM) \
+ $(if $(SCRIPTBINDIR),$(TIMESTAMPDIR)/.exec.time)
+ $(ECHO) generating $@
+ $(Q) { cat $(STUBPROGRAM); echo; sed -e '1{' -e '/^#!.*ruby/!i\' -e '#!/bin/ruby' -e '}' $<; } > $@
+ $(Q) chmod +x $@
+ $(Q) $(POSTLINK)
+
+$(SCRIPTBINDIR):
+ $(Q) mkdir $@
+
+.PHONY: commit
+commit: $(if $(filter commit,$(MAKECMDGOALS)),$(filter-out commit,$(MAKECMDGOALS))) up
+ @$(BASERUBY) -C "$(srcdir)" -I./tool/lib -rvcs -e 'VCS.detect(".").commit'
+ +$(Q) \
+ { \
+ $(in-srcdir) \
+ exec sed -f tool/prereq.status defs/gmake.mk template/Makefile.in common.mk; \
+ } | \
+ $(MAKE) $(mflags) Q=$(Q) ECHO=$(ECHO) srcdir="$(srcdir)" srcs_vpath="" CHDIR="$(CHDIR)" \
+ BOOTSTRAPRUBY="$(BOOTSTRAPRUBY)" MINIRUBY="$(BASERUBY)" BASERUBY="$(BASERUBY)" \
+ VCSUP="" ENC_MK=.top-enc.mk REVISION_FORCE=PHONY CONFIGURE="$(CONFIGURE)" -f - \
+ update-src srcs all-incs
+
+GITHUB_RUBY_URL = https://github.com/ruby/ruby
+PR =
+
+COMMIT_GPG_SIGN = $(shell $(GIT) -C "$(srcdir)" config commit.gpgsign)
+REMOTE_GITHUB_URL = $(shell $(GIT) -C "$(srcdir)" config remote.github.url)
+COMMITS_NOTES = commits
+
+.PHONY: fetch-github
+fetch-github:
+ $(call fetch-github,$(PR))
+
+define fetch-github
+ $(if $(1),,\
+ echo "usage:"; echo " make $@ PR=1234"; \
+ exit 1; \
+ )
+ $(eval REMOTE_GITHUB_URL := $(REMOTE_GITHUB_URL))
+ $(if $(REMOTE_GITHUB_URL),,
+ echo adding $(GITHUB_RUBY_URL) as remote github
+ $(GIT) -C "$(srcdir)" remote add github $(GITHUB_RUBY_URL)
+ $(GIT) -C "$(srcdir)" config --add remote.github.fetch +refs/notes/$(COMMITS_NOTES):refs/notes/$(COMMITS_NOTES)
+ $(eval REMOTE_GITHUB_URL := $(GITHUB_RUBY_URL))
+ )
+ $(if $(shell $(GIT) -C "$(srcdir)" rev-parse "github/pull/$(1)/head" -- 2> /dev/null),
+ $(GIT) -C "$(srcdir)" branch -f "gh-$(1)" "github/pull/$(1)/head",
+ $(GIT) -C "$(srcdir)" fetch -f github "pull/$(1)/head:gh-$(1)"
+ )
+endef
+
+.PHONY: checkout-github
+checkout-github: fetch-github
+ $(GIT) -C "$(srcdir)" checkout "gh-$(PR)"
+
+.PHONY: update-github
+update-github: fetch-github
+ $(eval PULL_REQUEST_API := https://api.github.com/repos/ruby/ruby/pulls/$(PR))
+ $(eval PULL_REQUEST_FORK_BRANCH := $(shell \
+ curl -s $(if $(GITHUB_TOKEN),-H "Authorization: bearer $(GITHUB_TOKEN)") $(PULL_REQUEST_API) | \
+ $(BASERUBY) -rjson -e 'JSON.parse(STDIN.read)["head"].tap { |h| print "#{h["repo"]["full_name"]} #{h["ref"]}" }' \
+ ))
+ $(eval FORK_REPO := $(word 1,$(PULL_REQUEST_FORK_BRANCH)))
+ $(eval PR_BRANCH := $(word 2,$(PULL_REQUEST_FORK_BRANCH)))
+
+ $(eval GITHUB_UPDATE_WORKTREE := $(shell mktemp -d "$(srcdir)/gh-$(PR)-XXXXXX"))
+ $(GIT) -C "$(srcdir)" worktree add $(notdir $(GITHUB_UPDATE_WORKTREE)) "gh-$(PR)"
+ $(GIT) -C "$(GITHUB_UPDATE_WORKTREE)" merge master --no-edit
+ @$(BASERUBY) -e 'print "Are you sure to push this to PR=$(PR)? [Y/n]: "; exit(gets.chomp != "n")'
+ $(GIT) -C "$(srcdir)" remote add fork-$(PR) git@github.com:$(FORK_REPO).git
+ $(GIT) -C "$(GITHUB_UPDATE_WORKTREE)" push fork-$(PR) gh-$(PR):$(PR_BRANCH)
+ $(GIT) -C "$(srcdir)" remote rm fork-$(PR)
+ $(GIT) -C "$(srcdir)" worktree remove $(notdir $(GITHUB_UPDATE_WORKTREE))
+ $(GIT) -C "$(srcdir)" branch -D gh-$(PR)
+
+.PHONY: pull-github
+pull-github: fetch-github
+ $(call pull-github,$(PR))
+
+define pull-github
+ $(eval GITHUB_MERGE_BASE := $(shell $(GIT) -C "$(srcdir)" log -1 --format=format:%H))
+ $(eval GITHUB_MERGE_BRANCH := $(shell $(GIT) -C "$(srcdir)" symbolic-ref --short HEAD))
+ $(eval GITHUB_MERGE_WORKTREE := $(shell mktemp -d "$(srcdir)/gh-$(1)-XXXXXX"))
+ $(GIT) -C "$(srcdir)" worktree prune
+ $(GIT) -C "$(srcdir)" worktree add $(notdir $(GITHUB_MERGE_WORKTREE)) "gh-$(1)"
+ $(GIT) -C "$(GITHUB_MERGE_WORKTREE)" rebase $(GITHUB_MERGE_BRANCH)
+ $(eval COMMIT_GPG_SIGN := $(COMMIT_GPG_SIGN))
+ $(if $(filter true,$(COMMIT_GPG_SIGN)), \
+ $(GIT) -C "$(GITHUB_MERGE_WORKTREE)" rebase --exec "$(GIT) commit --amend --no-edit -S" "$(GITHUB_MERGE_BASE)"; \
+ )
+ $(GIT) -C "$(GITHUB_MERGE_WORKTREE)" rebase --exec "$(GIT) notes add --message 'Merged: $(GITHUB_RUBY_URL)/pull/$(1)'" "$(GITHUB_MERGE_BASE)"
+endef
+
+.PHONY: fetch-github-%
+fetch-github-%:
+ $(call fetch-github,$*)
+
+.PHONY: checkout-github-%
+checkout-github-%: fetch-github-%
+ $(GIT) -C "$(srcdir)" checkout "gh-$*"
+
+.PHONY: pr-% pull-github-%
+pr-% pull-github-%: fetch-github-%
+ $(call pull-github,$*)
+
+HELP_EXTRA_TASKS = \
+ " checkout-github: checkout GitHub Pull Request [PR=1234]" \
+ " pull-github: rebase GitHub Pull Request to new worktree [PR=1234]" \
+ " update-github: merge master branch and push it to Pull Request [PR=1234]" \
+ ""
+
+# 1. squeeze spaces
+# 2. strip and skip comment/empty lines
+# 3. "gem x.y.z URL xxxxxx" -> "gem|x.y.z|xxxxxx|URL"
+# 4. "gem x.y.z URL" -> "gem-x.y.z"
+bundled-gems := $(shell sed \
+ -e 's/[ ][ ]*/ /g' \
+ -e 's/^ //;/\#/d;s/ *$$//;/^$$/d' \
+ $(if $(filter yes,$(HAVE_GIT)), \
+ -e 's/^\(.*\) \(.*\) \(.*\) \(.*\)/\1|\2|\4|\3/' \
+ ) \
+ -e 's/ /-/;s/ .*//' \
+ $(srcdir)/gems/bundled_gems)
+
+bundled-gems-rev := $(filter-out $(subst |,,$(bundled-gems)),$(bundled-gems))
+bundled-gems := $(filter-out $(bundled-gems-rev),$(bundled-gems))
+
+# calls $(1) with name, version, revision, URL
+foreach-bundled-gems-rev = \
+ $(foreach g,$(bundled-gems-rev),$(call foreach-bundled-gems-rev-0,$(1),$(subst |, ,$(value g))))
+foreach-bundled-gems-rev-0 = \
+ $(call $(1),$(word 1,$(2)),$(word 2,$(2)),$(word 3,$(2)),$(word 4,$(2)))
+bundled-gem-gemfile = $(srcdir)/gems/$(1)-$(2).gem
+bundled-gem-srcdir = $(srcdir)/gems/src/$(1)
+bundled-gem-extracted = $(srcdir)/.bundle/gems/$(1)-$(2)
+
+update-gems: | $(patsubst %,$(srcdir)/gems/%.gem,$(bundled-gems))
+update-gems: | $(call foreach-bundled-gems-rev,bundled-gem-gemfile)
+update-gems: | $(call foreach-bundled-gems-rev,bundled-gem-srcdir)
+
+test-bundler-precheck: | $(srcdir)/.bundle/cache
+
+$(srcdir)/.bundle/cache:
+ $(MAKEDIRS) $(@D) $(CACHE_DIR)
+ $(LN_S) ../.downloaded-cache $@
+
+$(srcdir)/gems/%.gem:
+ $(ECHO) Downloading bundled gem $*...
+ $(Q) $(BASERUBY) -C "$(srcdir)" \
+ -I./tool -rdownloader \
+ -e 'gem = "$(@F)"' \
+ -e 'old = Dir.glob("gems/"+gem.sub(/-[^-]*$$/, "-*.gem"))' \
+ -e 'Downloader::RubyGems.download(gem, "gems", nil) and' \
+ -e '(old.delete("gems/#{gem}"); !old.empty?) and' \
+ -e 'File.unlink(*old) and' \
+ -e 'FileUtils.rm_rf(old.map{'"|n|"'n.chomp(".gem")})'
+
+extract-gems: | $(patsubst %,$(srcdir)/.bundle/gems/%,$(bundled-gems))
+extract-gems: | $(call foreach-bundled-gems-rev,bundled-gem-extracted)
+
+$(srcdir)/.bundle/gems/%: $(srcdir)/gems/%.gem | .bundle/gems
+ $(ECHO) Extracting bundle gem $*...
+ $(Q) $(BASERUBY) -C "$(srcdir)" \
+ -Itool/lib -rbundled_gem \
+ -e 'BundledGem.unpack("gems/$(@F).gem", ".bundle")'
+
+define copy-gem
+$(srcdir)/gems/src/$(1): | $(srcdir)/gems/src
+ $(ECHO) Cloning $(4)
+ $(Q) $(GIT) clone $(4) $$(@)
+
+$(srcdir)/.bundle/gems/$(1)-$(2): | $(srcdir)/gems/src/$(1) .bundle/gems
+ $(ECHO) Copying $(1)@$(3) to $$(@F)
+ $(Q) $(CHDIR) "$(srcdir)/gems/src/$(1)" && \
+ $(GIT) fetch origin $(3) && \
+ $(GIT) checkout --detach $(3) && \
+ :
+ $(Q) $(BASERUBY) -C "$(srcdir)" \
+ -Itool/lib -rbundled_gem \
+ -e 'BundledGem.copy("gems/src/$(1)/$(1).gemspec", ".bundle")'
+
+endef
+define copy-gem-0
+$(eval $(call copy-gem,$(1),$(2),$(3),$(4)))
+endef
+
+$(call foreach-bundled-gems-rev,copy-gem-0)
+
+$(srcdir)/gems/src:
+ $(MAKEDIRS) $@
+
+$(srcdir)/.bundle/gems:
+ $(MAKEDIRS) $@
+
+ifneq ($(filter update-bundled_gems refresh-gems,$(MAKECMDGOALS)),)
+update-gems: update-bundled_gems
+endif
+
+ifeq ($(filter 0 1,$(words $(arch_flags))),)
+$(foreach x,$(patsubst -arch=%,%,$(arch_flags)), \
+ $(eval $$(MJIT_HEADER:.h=)-$(value x).h \
+ $$(MJIT_MIN_HEADER:.h=)-$(value x).h \
+ $$(TIMESTAMPDIR)/$$(MJIT_HEADER:.h=)-$(value x).time \
+ : ARCH_FLAG := -arch $(value x)))
+
+$(foreach x,$(patsubst -arch=%,%,$(arch_flags)), \
+ $(eval $$(MJIT_HEADER:.h=)-$(value x).h: \
+ $$(TIMESTAMPDIR)/$$(MJIT_HEADER:.h=)-$(value x).time))
+
+mjit_min_headers := $(patsubst -arch=%,$(MJIT_MIN_HEADER:.h=-%.h),$(arch_flags))
+$(MJIT_MIN_HEADER): $(mjit_min_headers) $(PREP)
+ @ set -e; set $(patsubst -arch=%,%,$(arch_flags)); \
+ cd $(@D); h=$(@F:.h=); \
+ exec > $(@F).new; \
+ echo '#if 0'; \
+ for arch; do\
+ echo "#elif defined __$${arch}__"; \
+ echo "# include \"$$h-$$arch.h\""; \
+ done; \
+ echo "#else"; echo "# error unsupported platform"; echo "#endif"
+ $(IFCHANGE) $@ $@.new
+ $(Q) $(MAKEDIRS) $(MJIT_HEADER_INSTALL_DIR)
+ $(Q) $(MAKE_LINK) $@ $(MJIT_HEADER_INSTALL_DIR)/$(@F)
+
+endif
+
+.SECONDARY: update-unicode-files
+.SECONDARY: update-unicode-auxiliary-files
+.SECONDARY: update-unicode-ucd-emoji-files
+.SECONDARY: update-unicode-emoji-files
+
+ifeq ($(HAVE_GIT),yes)
+REVISION_LATEST := $(shell $(CHDIR) $(srcdir) && $(GIT) log -1 --format=%H 2>/dev/null)
+else
+REVISION_LATEST := update
+endif
+REVISION_IN_HEADER := $(shell sed -n 's/^\#define RUBY_FULL_REVISION "\(.*\)"/\1/p' $(wildcard $(srcdir)/revision.h revision.h) /dev/null 2>/dev/null)
+ifeq ($(REVISION_IN_HEADER),)
+REVISION_IN_HEADER := none
+endif
+ifneq ($(REVISION_IN_HEADER),$(REVISION_LATEST))
+$(REVISION_H): PHONY
+endif
+
+include $(top_srcdir)/yjit/yjit.mk
+
+# Query on the generated rdoc
+#
+# $ make rdoc:Integer#+
+rdoc\:%: PHONY
+ $(Q)$(RUNRUBY) $(srcdir)/libexec/ri --no-standard-docs --doc-dir=$(RDOCOUT) $(patsubst rdoc:%,%,$@)
+
+test_%.rb test/%: programs PHONY
+ $(Q)$(exec) $(RUNRUBY) "$(TESTSDIR)/runner.rb" --ruby="$(RUNRUBY)" $(TEST_EXCLUDES) $(TESTOPTS) -- $(patsubst test/%,%,$@)
+
+spec/bundler/%: PHONY
+ $(Q)$(exec) $(XRUBY) -C $(srcdir) -Ispec/bundler .bundle/bin/rspec --require spec_helper $(RSPECOPTS) $@
+
+spec/bundler: test-bundler-parallel
+ $(Q)$(NULLCMD)
+
+# workaround to avoid matching non ruby files with "spec/%/" under GNU make 3.81
+spec/%_spec.c:
+ $(empty)
+$(srcdir)/$(RUBYSPEC_CAPIEXT)/rubyspec.h:
+ $(empty)
+
+benchmark/%: miniruby$(EXEEXT) update-benchmark-driver PHONY
+ $(Q)$(BASERUBY) -rrubygems -I$(srcdir)/benchmark/lib $(srcdir)/benchmark/benchmark-driver/exe/benchmark-driver \
+ --executables="compare-ruby::$(COMPARE_RUBY) -I$(EXTOUT)/common --disable-gem" \
+ --executables="built-ruby::$(BENCH_RUBY) --disable-gem" \
+ $(srcdir)/$@ $(BENCH_OPTS) $(OPTS)
+
+clean-srcs-ext::
+ $(Q)$(RM) $(patsubst $(srcdir)/%,%,$(EXT_SRCS))
+
+clean-srcs-extra::
+ $(Q)$(RM) $(patsubst $(srcdir)/%,%,$(EXTRA_SRCS))
+
+ifneq ($(filter $(VCS),git),)
+update-src::
+ @$(BASERUBY) $(tooldir)/lib/colorize.rb pass "Latest commit hash = $(shell $(filter-out svn,$(VCS)) -C $(srcdir) rev-parse --short=10 HEAD)"
+endif
+
+# Update dependencies and commit the updates to the current branch.
+update-deps:
+ $(eval update_deps := $(shell date +update-deps-%Y%m%d))
+ $(eval deps_dir := $(shell mktemp -d)/$(update_deps))
+ $(eval GIT_DIR := $(shell $(GIT) -C $(srcdir) rev-parse --absolute-git-dir))
+ $(GIT) --git-dir=$(GIT_DIR) worktree add $(deps_dir)
+ cp $(tooldir)/config.guess $(tooldir)/config.sub $(deps_dir)/tool
+ [ -f config.status ] && cp config.status $(deps_dir)
+ cd $(deps_dir) && autoconf && \
+ exec ./configure -q -C --enable-load-relative --disable-install-doc --disable-rubygems 'optflags=-O0' 'debugflags=-save-temps=obj -g'
+ $(RUNRUBY) -C $(deps_dir) tool/update-deps --fix
+ $(GIT) -C $(deps_dir) diff --no-ext-diff --ignore-submodules --exit-code || \
+ $(GIT) -C $(deps_dir) commit --all --message='Update dependencies'
+ $(GIT) --git-dir=$(GIT_DIR) worktree remove $(deps_dir)
+ $(RMDIR) $(dir $(deps_dir))
+ $(GIT) --git-dir=$(GIT_DIR) merge --no-edit --ff-only $(update_deps)
+ $(GIT) --git-dir=$(GIT_DIR) branch --delete $(update_deps)
+
+# order-only-prerequisites doesn't work for $(RUBYSPEC_CAPIEXT)
+# because the same named directory exists in the source tree.
+$(RUBYSPEC_CAPIEXT)/%.$(DLEXT): $(srcdir)/$(RUBYSPEC_CAPIEXT)/%.c $(srcdir)/$(RUBYSPEC_CAPIEXT)/rubyspec.h $(RUBY_H_INCLUDES) $(LIBRUBY)
+ $(ECHO) building $@
+ $(Q) $(MAKEDIRS) $(@D)
+ $(Q) $(DLDSHARED) $(XDLDFLAGS) $(XLDFLAGS) $(LDFLAGS) $(INCFLAGS) $(CPPFLAGS) $(OUTFLAG)$@ $< $(LIBRUBYARG)
+ $(Q) $(RMALL) $@.*
+
+rubyspec-capiext: $(patsubst %.c,$(RUBYSPEC_CAPIEXT)/%.$(DLEXT),$(notdir $(wildcard $(srcdir)/$(RUBYSPEC_CAPIEXT)/*.c)))
+ @ $(NULLCMD)
+
+ifeq ($(ENABLE_SHARED),yes)
+exts: rubyspec-capiext
+endif
+
+spec/%/ spec/%_spec.rb: programs exts PHONY
+ +$(RUNRUBY) -r./$(arch)-fake $(srcdir)/spec/mspec/bin/mspec-run -B $(srcdir)/spec/default.mspec $(SPECOPTS) $(patsubst %,$(srcdir)/%,$@)
+
+ruby.pc: $(filter-out ruby.pc,$(ruby_pc))
diff --git a/defs/id.def b/defs/id.def
new file mode 100644
index 0000000000..ebf00506ea
--- /dev/null
+++ b/defs/id.def
@@ -0,0 +1,219 @@
+# -*- mode: ruby; coding: us-ascii -*-
+firstline, predefined = __LINE__+1, %[\
+ max
+ min
+ freeze
+ nil?
+ inspect
+ intern
+ object_id
+ const_added
+ const_missing
+ method_missing MethodMissing
+ method_added
+ singleton_method_added
+ method_removed
+ singleton_method_removed
+ method_undefined
+ singleton_method_undefined
+ length
+ size
+ gets
+ succ
+ each
+ proc
+ lambda
+ send
+ __send__
+ __attached__
+ __recursive_key__
+ initialize
+ initialize_copy
+ initialize_clone
+ initialize_dup
+ to_int
+ to_ary
+ to_str
+ to_sym
+ to_hash
+ to_proc
+ to_io
+ to_a
+ to_s
+ to_i
+ to_f
+ to_r
+ bt
+ bt_locations
+ call
+ mesg
+ exception
+ locals
+ not NOT
+ and AND
+ or OR
+ div
+ divmod
+ fdiv
+ quo
+ name
+ nil
+ path
+
+ _ UScore
+
+ # MUST be successive
+ _1 NUMPARAM_1
+ _2 NUMPARAM_2
+ _3 NUMPARAM_3
+ _4 NUMPARAM_4
+ _5 NUMPARAM_5
+ _6 NUMPARAM_6
+ _7 NUMPARAM_7
+ _8 NUMPARAM_8
+ _9 NUMPARAM_9
+
+ "/*NULL*/" NULL
+ empty?
+ eql?
+ default
+ respond_to? Respond_to
+ respond_to_missing? Respond_to_missing
+ <IFUNC>
+ <CFUNC>
+ core#set_method_alias
+ core#set_variable_alias
+ core#undef_method
+ core#define_method
+ core#define_singleton_method
+ core#set_postexe
+ core#hash_merge_ptr
+ core#hash_merge_kwd
+ core#raise
+ core#sprintf
+
+ - debug#created_info
+
+ $_ LASTLINE
+ $~ BACKREF
+ $! ERROR_INFO
+]
+
+# VM ID OP Parser Token
+token_ops = %[\
+ Dot2 .. DOT2
+ Dot3 ... DOT3
+ BDot2 .. BDOT2
+ BDot3 ... BDOT3
+ UPlus +@ UPLUS
+ UMinus -@ UMINUS
+ Pow ** POW
+ Cmp <=> CMP
+ PLUS +
+ MINUS -
+ MULT *
+ DIV /
+ MOD %
+ LTLT << LSHFT
+ GTGT >> RSHFT
+ LT <
+ LE <= LEQ
+ GT >
+ GE >= GEQ
+ Eq == EQ
+ Eqq === EQQ
+ Neq != NEQ
+ Not !
+ And &
+ Or |
+ Backquote `
+ EqTilde =~ MATCH
+ NeqTilde !~ NMATCH
+ AREF []
+ ASET []=
+ COLON2 ::
+ ANDOP &&
+ OROP ||
+ ANDDOT &.
+]
+
+class KeywordError < RuntimeError
+ def self.raise(mesg, line)
+ super(self, mesg, ["#{__FILE__}:#{line}", *caller])
+ end
+end
+
+def id2varname(token, prefix = nil)
+ if /#/ =~ token
+ token = "_#{token.gsub(/\W+/, '_')}"
+ else
+ token = token.sub(/\?/, 'P')
+ token = prefix + token if prefix
+ token.sub!(/\A[a-z]/) {$&.upcase}
+ token.sub!(/\A\$/, "_G_")
+ token.sub!(/\A@@/, "_C_")
+ token.sub!(/\A@/, "_I_")
+ token.gsub!(/\W+/, "")
+ end
+ token
+end
+
+predefined_ids = {}
+preserved_ids = []
+local_ids = []
+instance_ids = []
+global_ids = []
+const_ids = []
+class_ids = []
+attrset_ids = []
+token_op_ids = []
+names = {}
+predefined.split(/^/).each_with_index do |line, num|
+ next if /^#/ =~ line
+ line.sub!(/\s+#.*/, '')
+ name, token = line.split
+ next unless name
+ token = id2varname(token || name)
+ if name == '-'
+ preserved_ids << token
+ next
+ end
+ if prev = names[name]
+ KeywordError.raise("#{name} is already registered at line #{prev+firstline}", firstline+num)
+ end
+ if prev = predefined_ids[token]
+ KeywordError.raise("#{token} is already used for #{prev} at line #{names[prev]+firstline}", firstline+num)
+ end
+ names[name] = num
+ case name
+ when /\A[A-Z]\w*\z/; const_ids
+ when /\A(?!\d)\w+\z/; local_ids
+ when /\A\$(?:\d+|(?!\d)\w+|\W)\z/; global_ids
+ when /\A@@(?!\d)\w+\z/; class_ids
+ when /\A@(?!\d)\w+\z/; instance_ids
+ when /\A((?!\d)\w+)=\z/; attrset_ids
+ else preserved_ids
+ end << token
+ predefined_ids[token] = name
+end
+index = 127
+token_ops.split(/^/).each do |line|
+ next if /^#/ =~ line
+ line.sub!(/\s+#.*/, '')
+ id, op, token = line.split
+ next unless id and op
+ token ||= (id unless /\A\W\z/ =~ op)
+ token_op_ids << [id, op, token, (index += 1 if token)]
+end
+{
+ "LOCAL" => local_ids,
+ "INSTANCE" => instance_ids,
+ "GLOBAL" => global_ids,
+ "CONST" => const_ids,
+ "CLASS" => class_ids,
+ "ATTRSET" => attrset_ids,
+ :preserved => preserved_ids,
+ :predefined => predefined_ids,
+ :token_op => token_op_ids,
+ :last_token => index,
+}
diff --git a/defs/keywords b/defs/keywords
new file mode 100644
index 0000000000..a1b1f4f60f
--- /dev/null
+++ b/defs/keywords
@@ -0,0 +1,53 @@
+%{
+struct kwtable {short name, id[2], state;};
+const struct kwtable *rb_reserved_word(const char *, unsigned int);
+#ifndef RIPPER
+static const struct kwtable *reserved_word(register const char *str, register size_t len);
+#define rb_reserved_word(str, len) reserved_word(str, len)
+%}
+
+struct kwtable;
+%%
+__ENCODING__, {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END
+__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
+__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
+BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
+END, {keyword_END, keyword_END}, EXPR_END
+alias, {keyword_alias, keyword_alias}, EXPR_FNAME|EXPR_FITEM
+and, {keyword_and, keyword_and}, EXPR_VALUE
+begin, {keyword_begin, keyword_begin}, EXPR_BEG
+break, {keyword_break, keyword_break}, EXPR_MID
+case, {keyword_case, keyword_case}, EXPR_VALUE
+class, {keyword_class, keyword_class}, EXPR_CLASS
+def, {keyword_def, keyword_def}, EXPR_FNAME
+defined?, {keyword_defined, keyword_defined}, EXPR_ARG
+do, {keyword_do, keyword_do}, EXPR_BEG
+else, {keyword_else, keyword_else}, EXPR_BEG
+elsif, {keyword_elsif, keyword_elsif}, EXPR_VALUE
+end, {keyword_end, keyword_end}, EXPR_END
+ensure, {keyword_ensure, keyword_ensure}, EXPR_BEG
+false, {keyword_false, keyword_false}, EXPR_END
+for, {keyword_for, keyword_for}, EXPR_VALUE
+if, {keyword_if, modifier_if}, EXPR_VALUE
+in, {keyword_in, keyword_in}, EXPR_VALUE
+module, {keyword_module, keyword_module}, EXPR_VALUE
+next, {keyword_next, keyword_next}, EXPR_MID
+nil, {keyword_nil, keyword_nil}, EXPR_END
+not, {keyword_not, keyword_not}, EXPR_ARG
+or, {keyword_or, keyword_or}, EXPR_VALUE
+redo, {keyword_redo, keyword_redo}, EXPR_END
+rescue, {keyword_rescue, modifier_rescue}, EXPR_MID
+retry, {keyword_retry, keyword_retry}, EXPR_END
+return, {keyword_return, keyword_return}, EXPR_MID
+self, {keyword_self, keyword_self}, EXPR_END
+super, {keyword_super, keyword_super}, EXPR_ARG
+then, {keyword_then, keyword_then}, EXPR_BEG
+true, {keyword_true, keyword_true}, EXPR_END
+undef, {keyword_undef, keyword_undef}, EXPR_FNAME|EXPR_FITEM
+unless, {keyword_unless, modifier_unless}, EXPR_VALUE
+until, {keyword_until, modifier_until}, EXPR_VALUE
+when, {keyword_when, keyword_when}, EXPR_VALUE
+while, {keyword_while, modifier_while}, EXPR_VALUE
+yield, {keyword_yield, keyword_yield}, EXPR_ARG
+%%
+#endif
diff --git a/defs/known_errors.def b/defs/known_errors.def
new file mode 100644
index 0000000000..e9694cfbda
--- /dev/null
+++ b/defs/known_errors.def
@@ -0,0 +1,157 @@
+E2BIG
+EACCES
+EADDRINUSE
+EADDRNOTAVAIL
+EADV
+EAFNOSUPPORT
+EAGAIN
+EALREADY
+EAUTH
+EBADARCH
+EBADE
+EBADEXEC
+EBADF
+EBADFD
+EBADMACHO
+EBADMSG
+EBADR
+EBADRPC
+EBADRQC
+EBADSLT
+EBFONT
+EBUSY
+ECANCELED
+ECAPMODE
+ECHILD
+ECHRNG
+ECOMM
+ECONNABORTED
+ECONNREFUSED
+ECONNRESET
+EDEADLK
+EDEADLOCK
+EDESTADDRREQ
+EDEVERR
+EDOM
+EDOOFUS
+EDOTDOT
+EDQUOT
+EEXIST
+EFAULT
+EFBIG
+EFTYPE
+EHOSTDOWN
+EHOSTUNREACH
+EHWPOISON
+EIDRM
+EILSEQ
+EINPROGRESS
+EINTR
+EINVAL
+EIO
+EIPSEC
+EISCONN
+EISDIR
+EISNAM
+EKEYEXPIRED
+EKEYREJECTED
+EKEYREVOKED
+EL2HLT
+EL2NSYNC
+EL3HLT
+EL3RST
+ELAST
+ELIBACC
+ELIBBAD
+ELIBEXEC
+ELIBMAX
+ELIBSCN
+ELNRNG
+ELOOP
+EMEDIUMTYPE
+EMFILE
+EMLINK
+EMSGSIZE
+EMULTIHOP
+ENAMETOOLONG
+ENAVAIL
+ENEEDAUTH
+ENETDOWN
+ENETRESET
+ENETUNREACH
+ENFILE
+ENOANO
+ENOATTR
+ENOBUFS
+ENOCSI
+ENODATA
+ENODEV
+ENOENT
+ENOEXEC
+ENOKEY
+ENOLCK
+ENOLINK
+ENOMEDIUM
+ENOMEM
+ENOMSG
+ENONET
+ENOPKG
+ENOPOLICY
+ENOPROTOOPT
+ENOSPC
+ENOSR
+ENOSTR
+ENOSYS
+ENOTBLK
+ENOTCAPABLE
+ENOTCONN
+ENOTDIR
+ENOTEMPTY
+ENOTNAM
+ENOTRECOVERABLE
+ENOTSOCK
+ENOTSUP
+ENOTTY
+ENOTUNIQ
+ENXIO
+EOPNOTSUPP
+EOVERFLOW
+EOWNERDEAD
+EPERM
+EPFNOSUPPORT
+EPIPE
+EPROCLIM
+EPROCUNAVAIL
+EPROGMISMATCH
+EPROGUNAVAIL
+EPROTO
+EPROTONOSUPPORT
+EPROTOTYPE
+EPWROFF
+EQFULL
+ERANGE
+EREMCHG
+EREMOTE
+EREMOTEIO
+ERESTART
+ERFKILL
+EROFS
+ERPCMISMATCH
+ESHLIBVERS
+ESHUTDOWN
+ESOCKTNOSUPPORT
+ESPIPE
+ESRCH
+ESRMNT
+ESTALE
+ESTRPIPE
+ETIME
+ETIMEDOUT
+ETOOMANYREFS
+ETXTBSY
+EUCLEAN
+EUNATCH
+EUSERS
+EWOULDBLOCK
+EXDEV
+EXFULL
diff --git a/defs/lex.c.src b/defs/lex.c.src
new file mode 100644
index 0000000000..a1b1f4f60f
--- /dev/null
+++ b/defs/lex.c.src
@@ -0,0 +1,53 @@
+%{
+struct kwtable {short name, id[2], state;};
+const struct kwtable *rb_reserved_word(const char *, unsigned int);
+#ifndef RIPPER
+static const struct kwtable *reserved_word(register const char *str, register size_t len);
+#define rb_reserved_word(str, len) reserved_word(str, len)
+%}
+
+struct kwtable;
+%%
+__ENCODING__, {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END
+__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
+__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
+BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
+END, {keyword_END, keyword_END}, EXPR_END
+alias, {keyword_alias, keyword_alias}, EXPR_FNAME|EXPR_FITEM
+and, {keyword_and, keyword_and}, EXPR_VALUE
+begin, {keyword_begin, keyword_begin}, EXPR_BEG
+break, {keyword_break, keyword_break}, EXPR_MID
+case, {keyword_case, keyword_case}, EXPR_VALUE
+class, {keyword_class, keyword_class}, EXPR_CLASS
+def, {keyword_def, keyword_def}, EXPR_FNAME
+defined?, {keyword_defined, keyword_defined}, EXPR_ARG
+do, {keyword_do, keyword_do}, EXPR_BEG
+else, {keyword_else, keyword_else}, EXPR_BEG
+elsif, {keyword_elsif, keyword_elsif}, EXPR_VALUE
+end, {keyword_end, keyword_end}, EXPR_END
+ensure, {keyword_ensure, keyword_ensure}, EXPR_BEG
+false, {keyword_false, keyword_false}, EXPR_END
+for, {keyword_for, keyword_for}, EXPR_VALUE
+if, {keyword_if, modifier_if}, EXPR_VALUE
+in, {keyword_in, keyword_in}, EXPR_VALUE
+module, {keyword_module, keyword_module}, EXPR_VALUE
+next, {keyword_next, keyword_next}, EXPR_MID
+nil, {keyword_nil, keyword_nil}, EXPR_END
+not, {keyword_not, keyword_not}, EXPR_ARG
+or, {keyword_or, keyword_or}, EXPR_VALUE
+redo, {keyword_redo, keyword_redo}, EXPR_END
+rescue, {keyword_rescue, modifier_rescue}, EXPR_MID
+retry, {keyword_retry, keyword_retry}, EXPR_END
+return, {keyword_return, keyword_return}, EXPR_MID
+self, {keyword_self, keyword_self}, EXPR_END
+super, {keyword_super, keyword_super}, EXPR_ARG
+then, {keyword_then, keyword_then}, EXPR_BEG
+true, {keyword_true, keyword_true}, EXPR_END
+undef, {keyword_undef, keyword_undef}, EXPR_FNAME|EXPR_FITEM
+unless, {keyword_unless, modifier_unless}, EXPR_VALUE
+until, {keyword_until, modifier_until}, EXPR_VALUE
+when, {keyword_when, keyword_when}, EXPR_VALUE
+while, {keyword_while, modifier_while}, EXPR_VALUE
+yield, {keyword_yield, keyword_yield}, EXPR_ARG
+%%
+#endif
diff --git a/defs/opt_insn_unif.def b/defs/opt_insn_unif.def
new file mode 100644
index 0000000000..31ae2eb6a1
--- /dev/null
+++ b/defs/opt_insn_unif.def
@@ -0,0 +1,27 @@
+#
+# a definition of instruction unification
+#
+#
+
+__END__
+
+putobject putobject
+putobject putstring
+putobject setlocal
+
+putstring putstring
+putstring putobject
+putstring setlocal
+
+# putnil end
+
+dup setlocal
+
+# from tarai
+getlocal getlocal
+# getlocal send
+
+# from tak, ackermann
+getlocal putobject
+
+
diff --git a/defs/opt_operand.def b/defs/opt_operand.def
new file mode 100644
index 0000000000..887e3da49a
--- /dev/null
+++ b/defs/opt_operand.def
@@ -0,0 +1,22 @@
+#
+# configuration file for operand union optimization
+#
+# format:
+# [insn name] op1, op2 ...
+#
+# wildcard: *
+#
+
+getlocal *, 0
+getlocal *, 1
+setlocal *, 0
+setlocal *, 1
+
+putobject INT2FIX(0)
+putobject INT2FIX(1)
+
+__END__
+
+putobject Qtrue
+putobject Qfalse
+
diff --git a/defs/separated_version.mk b/defs/separated_version.mk
new file mode 100644
index 0000000000..72ee093da7
--- /dev/null
+++ b/defs/separated_version.mk
@@ -0,0 +1,38 @@
+# ******** FOR DEVELEPERS ONLY ********
+# Separate version.o into a shared library which varies every
+# revisions, in order to make the rest shareable.
+
+include $(firstword $(wildcard GNUmakefile Makefile))
+
+ifneq ($(filter @executable_path/%,$(DLDFLAGS)),)
+RUBY_VERSION_SO = $(subst ruby,ruby_version,$(LIBRUBY_SO))
+RUBY_VERSION_DLDFLAGS := $(patsubst @executable_path/%/$(LIBRUBY_SO),@loader_path/$(RUBY_VERSION_SO),$(DLDFLAGS)) -exported_symbol=Init_version
+else ifneq ($(findstring -soname,$(DLDFLAGS)),)
+RUBY_VERSION_SO = $(subst ruby,ruby_version,$(LIBRUBY_SO))
+RUBY_VERSION_DLDFLAGS := $(subst ruby,ruby_version,$(DLDFLAGS)) -Wl,-rpath-link,'$${ORIGIN}'
+else
+ERROR
+endif
+
+ifneq ($(RUBY_VERSION_SO),)
+
+version.$(OBJEXT): XCFLAGS := $(subst -fvisibility=hidden,,$(XCFLAGS))
+
+MINIOBJS += version.$(OBJEXT)
+DLDOBJS += $(RUBY_VERSION_SO)
+LIBRUBYARG_SHARED := -lruby_version $(LIBRUBYARG_SHARED)
+$(LIBRUBY_SO): COMMONOBJS := $(filter-out version.$(OBJEXT),$(COMMONOBJS))
+$(LIBRUBY_A): COMMONOBJS := $(sort version.$(OBJEXT) $(COMMONOBJS))
+
+$(LIBRUBY_SO): $(RUBY_VERSION_SO)
+
+$(RUBY_VERSION_SO): version.$(OBJEXT)
+ $(ECHO) linking shared-library $@
+ $(LDSHARED) $(RUBY_VERSION_DLDFLAGS) version.$(OBJEXT) $(OUTFLAG)$@
+ -$(Q) $(MINIRUBY) -e 'ARGV.each{|link|' \
+ -e 'File.delete link rescue nil' \
+ -e 'File.symlink "$(RUBY_VERSION_SO)", link' \
+ -e '}' \
+ $(subst ruby,ruby_version,$(LIBRUBY_ALIASES)) || true
+
+endif
diff --git a/defs/universal.mk b/defs/universal.mk
new file mode 100644
index 0000000000..c34a31b356
--- /dev/null
+++ b/defs/universal.mk
@@ -0,0 +1,5 @@
+arch_flags := $(filter -arch=%,$(subst -arch ,-arch=,$(ARCH_FLAG)))
+ifeq ($(filter 0 1,$(words $(arch_flags))),)
+override MJIT_HEADER_SUFFIX = -%
+override MJIT_HEADER_ARCH = -$(word 2,$(ARCH_FLAG))
+endif
diff --git a/dir.c b/dir.c
index efb28e6848..3f73f83fc5 100644
--- a/dir.c
+++ b/dir.c
@@ -3,819 +3,3378 @@
dir.c -
$Author$
- $Date$
created at: Wed Jan 5 09:51:01 JST 1994
- Copyright (C) 1993-2000 Yukihiro Matsumoto
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
Copyright (C) 2000 Network Applied Communication Laboratory, Inc.
Copyright (C) 2000 Information-technology Promotion Agency, Japan
**********************************************************************/
-#include "ruby.h"
+#include "ruby/internal/config.h"
+#include <ctype.h>
+#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
-#ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#else
-# define MAXPATHLEN 1024
-#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
-#if HAVE_DIRENT_H
+#ifndef O_CLOEXEC
+# define O_CLOEXEC 0
+#endif
+
+#ifndef USE_OPENDIR_AT
+# if defined(HAVE_FDOPENDIR) && defined(HAVE_DIRFD) && \
+ defined(HAVE_OPENAT) && defined(HAVE_FSTATAT)
+# define USE_OPENDIR_AT 1
+# else
+# define USE_OPENDIR_AT 0
+# endif
+#endif
+
+#if USE_OPENDIR_AT
+# include <fcntl.h>
+#endif
+
+#undef HAVE_DIRENT_NAMLEN
+#if defined HAVE_DIRENT_H && !defined _WIN32
# include <dirent.h>
# define NAMLEN(dirent) strlen((dirent)->d_name)
-#elif HAVE_DIRECT_H
+#elif defined HAVE_DIRECT_H && !defined _WIN32
# include <direct.h>
# define NAMLEN(dirent) strlen((dirent)->d_name)
#else
# define dirent direct
# define NAMLEN(dirent) (dirent)->d_namlen
-# if HAVE_SYS_NDIR_H
+# define HAVE_DIRENT_NAMLEN 1
+# ifdef HAVE_SYS_NDIR_H
# include <sys/ndir.h>
# endif
-# if HAVE_SYS_DIR_H
+# ifdef HAVE_SYS_DIR_H
# include <sys/dir.h>
# endif
-# if HAVE_NDIR_H
+# ifdef HAVE_NDIR_H
# include <ndir.h>
# endif
-# if defined(NT) && defined(_MSC_VER)
-# include "missing/dir.h"
+# ifdef _WIN32
+# include "win32/dir.h"
# endif
#endif
-#include <errno.h>
-
#ifndef HAVE_STDLIB_H
char *getenv();
#endif
#ifndef HAVE_STRING_H
-char *strchr _((char*,char));
+char *strchr(char*,char);
#endif
-#include <ctype.h>
+#ifdef HAVE_SYS_ATTR_H
+#include <sys/attr.h>
+#endif
-#define FNM_NOESCAPE 0x01
-#define FNM_PATHNAME 0x02
-#define FNM_PERIOD 0x04
-#define FNM_NOCASE 0x08
+#define USE_NAME_ON_FS_REAL_BASENAME 1 /* platform dependent APIs to
+ * get real basenames */
+#define USE_NAME_ON_FS_BY_FNMATCH 2 /* select the matching
+ * basename by fnmatch */
+
+#ifdef HAVE_GETATTRLIST
+# define USE_NAME_ON_FS USE_NAME_ON_FS_REAL_BASENAME
+# define RUP32(size) ((size)+3/4)
+# define SIZEUP32(type) RUP32(sizeof(type))
+#elif defined _WIN32
+# define USE_NAME_ON_FS USE_NAME_ON_FS_REAL_BASENAME
+#elif defined DOSISH
+# define USE_NAME_ON_FS USE_NAME_ON_FS_BY_FNMATCH
+#else
+# define USE_NAME_ON_FS 0
+#endif
-#define FNM_NOMATCH 1
-#define FNM_ERROR 2
+#ifdef __APPLE__
+# define NORMALIZE_UTF8PATH 1
+# include <sys/param.h>
+# include <sys/mount.h>
+# include <sys/vnode.h>
+#else
+# define NORMALIZE_UTF8PATH 0
+#endif
-#define downcase(c) (nocase && isupper(c) ? tolower(c) : (c))
+#include "encindex.h"
+#include "id.h"
+#include "internal.h"
+#include "internal/array.h"
+#include "internal/dir.h"
+#include "internal/encoding.h"
+#include "internal/error.h"
+#include "internal/file.h"
+#include "internal/gc.h"
+#include "internal/io.h"
+#include "internal/object.h"
+#include "internal/vm.h"
+#include "ruby/encoding.h"
+#include "ruby/ruby.h"
+#include "ruby/thread.h"
+#include "ruby/util.h"
+#include "builtin.h"
+
+#ifndef AT_FDCWD
+# define AT_FDCWD -1
+#endif
-#if defined DOSISH
-#define isdirsep(c) ((c) == '/' || (c) == '\\')
-static char *
-find_dirsep(s)
- char *s;
+#define vm_initialized rb_cThread
+
+/* define system APIs */
+#ifdef _WIN32
+# undef chdir
+# define chdir(p) rb_w32_uchdir(p)
+# undef mkdir
+# define mkdir(p, m) rb_w32_umkdir((p), (m))
+# undef rmdir
+# define rmdir(p) rb_w32_urmdir(p)
+# undef opendir
+# define opendir(p) rb_w32_uopendir(p)
+# define ruby_getcwd() rb_w32_ugetcwd(NULL, 0)
+# define IS_WIN32 1
+#else
+# define IS_WIN32 0
+#endif
+
+#if NORMALIZE_UTF8PATH
+# if defined HAVE_FGETATTRLIST || !defined HAVE_GETATTRLIST
+# define need_normalization(dirp, path) need_normalization(dirp)
+# else
+# define need_normalization(dirp, path) need_normalization(path)
+# endif
+static inline int
+need_normalization(DIR *dirp, const char *path)
+{
+# if defined HAVE_FGETATTRLIST || defined HAVE_GETATTRLIST
+ u_int32_t attrbuf[SIZEUP32(fsobj_tag_t)];
+ struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, ATTR_CMN_OBJTAG,};
+# if defined HAVE_FGETATTRLIST
+ int ret = fgetattrlist(dirfd(dirp), &al, attrbuf, sizeof(attrbuf), 0);
+# else
+ int ret = getattrlist(path, &al, attrbuf, sizeof(attrbuf), 0);
+# endif
+ if (!ret) {
+ const fsobj_tag_t *tag = (void *)(attrbuf+1);
+ switch (*tag) {
+ case VT_HFS:
+ case VT_CIFS:
+ return TRUE;
+ }
+ }
+# endif
+ return FALSE;
+}
+
+static inline int
+has_nonascii(const char *ptr, size_t len)
{
- while (*s) {
- if (isdirsep(*s))
- return s;
- s++;
+ while (len > 0) {
+ if (!ISASCII(*ptr)) return 1;
+ ptr++;
+ --len;
}
return 0;
}
+
+# define IF_NORMALIZE_UTF8PATH(something) something
#else
-#define isdirsep(c) ((c) == '/')
-#define find_dirsep(s) strchr(s, '/')
+# define IF_NORMALIZE_UTF8PATH(something) /* nothing */
#endif
+#if defined(IFTODT) && defined(DT_UNKNOWN)
+# define EMULATE_IFTODT 0
+#else
+# define EMULATE_IFTODT 1
+#endif
+
+#if EMULATE_IFTODT
+# define IFTODT(m) (((m) & S_IFMT) / ((~S_IFMT & (S_IFMT-1)) + 1))
+#endif
+
+typedef enum {
+#if !EMULATE_IFTODT
+ path_exist = DT_UNKNOWN,
+ path_directory = DT_DIR,
+ path_regular = DT_REG,
+ path_symlink = DT_LNK,
+#else
+ path_exist,
+ path_directory = IFTODT(S_IFDIR),
+ path_regular = IFTODT(S_IFREG),
+ path_symlink = IFTODT(S_IFLNK),
+#endif
+ path_noent = -1,
+ path_unknown = -2
+} rb_pathtype_t;
+
+#define FNM_NOESCAPE 0x01
+#define FNM_PATHNAME 0x02
+#define FNM_DOTMATCH 0x04
+#define FNM_CASEFOLD 0x08
+#define FNM_EXTGLOB 0x10
+#if CASEFOLD_FILESYSTEM
+#define FNM_SYSCASE FNM_CASEFOLD
+#else
+#define FNM_SYSCASE 0
+#endif
+#ifdef _WIN32
+#define FNM_SHORTNAME 0x20
+#else
+#define FNM_SHORTNAME 0
+#endif
+#define FNM_GLOB_NOSORT 0x40
+#define FNM_GLOB_SKIPDOT 0x80
+
+#define FNM_NOMATCH 1
+#define FNM_ERROR 2
+
+# define Next(p, e, enc) ((p)+ rb_enc_mbclen((p), (e), (enc)))
+# define Inc(p, e, enc) ((p) = Next((p), (e), (enc)))
+
static char *
-range(pat, test, flags)
- char *pat;
- char test;
- int flags;
+bracket(
+ const char *p, /* pattern (next to '[') */
+ const char *pend,
+ const char *s, /* string */
+ const char *send,
+ int flags,
+ rb_encoding *enc)
{
- int not, ok = 0;
- int nocase = flags & FNM_NOCASE;
- int escape = !(flags & FNM_NOESCAPE);
+ const int nocase = flags & FNM_CASEFOLD;
+ const int escape = !(flags & FNM_NOESCAPE);
+ unsigned int c1, c2;
+ int r;
+ int ok = 0, not = 0;
+
+ if (p >= pend) return NULL;
+ if (*p == '!' || *p == '^') {
+ not = 1;
+ p++;
+ }
- not = *pat == '!' || *pat == '^';
- if (not)
- pat++;
-
- test = downcase(test);
-
- while (*pat) {
- int cstart, cend;
- cstart = cend = *pat++;
- if (cstart == ']')
- return ok == not ? 0 : pat;
- else if (escape && cstart == '\\')
- cstart = cend = *pat++;
- if (*pat == '-' && pat[1] != ']') {
- if (escape && pat[1] == '\\')
- pat++;
- cend = pat[1];
- if (!cend)
- return 0;
- pat += 2;
- }
- if (downcase(cstart) <= test && test <= downcase(cend))
- ok = 1;
+ while (*p != ']') {
+ const char *t1 = p;
+ if (escape && *t1 == '\\')
+ t1++;
+ if (!*t1)
+ return NULL;
+ p = t1 + (r = rb_enc_mbclen(t1, pend, enc));
+ if (p >= pend) return NULL;
+ if (p[0] == '-' && p[1] != ']') {
+ const char *t2 = p + 1;
+ int r2;
+ if (escape && *t2 == '\\')
+ t2++;
+ if (!*t2)
+ return NULL;
+ p = t2 + (r2 = rb_enc_mbclen(t2, pend, enc));
+ if (ok) continue;
+ if ((r <= (send-s) && memcmp(t1, s, r) == 0) ||
+ (r2 <= (send-s) && memcmp(t2, s, r2) == 0)) {
+ ok = 1;
+ continue;
+ }
+ c1 = rb_enc_codepoint(s, send, enc);
+ if (nocase) c1 = rb_enc_toupper(c1, enc);
+ c2 = rb_enc_codepoint(t1, pend, enc);
+ if (nocase) c2 = rb_enc_toupper(c2, enc);
+ if (c1 < c2) continue;
+ c2 = rb_enc_codepoint(t2, pend, enc);
+ if (nocase) c2 = rb_enc_toupper(c2, enc);
+ if (c1 > c2) continue;
+ }
+ else {
+ if (ok) continue;
+ if (r <= (send-s) && memcmp(t1, s, r) == 0) {
+ ok = 1;
+ continue;
+ }
+ if (!nocase) continue;
+ c1 = rb_enc_toupper(rb_enc_codepoint(s, send, enc), enc);
+ c2 = rb_enc_toupper(rb_enc_codepoint(p, pend, enc), enc);
+ if (c1 != c2) continue;
+ }
+ ok = 1;
}
- return 0;
+
+ return ok == not ? NULL : (char *)p + 1;
}
-#define PERIOD(s) (period && *(s) == '.' && \
- ((s) == string || pathname && isdirsep(*(s))))
+/* If FNM_PATHNAME is set, only path element will be matched. (up to '/' or '\0')
+ Otherwise, entire string will be matched.
+ End marker itself won't be compared.
+ And if function succeeds, *pcur reaches end marker.
+*/
+#define UNESCAPE(p) (escape && *(p) == '\\' ? (p) + 1 : (p))
+#define ISEND(p) (!*(p) || (pathname && *(p) == '/'))
+#define RETURN(val) return *pcur = p, *scur = s, (val);
+
static int
-fnmatch(pat, string, flags)
- char *pat;
- char *string;
- int flags;
+fnmatch_helper(
+ const char **pcur, /* pattern */
+ const char **scur, /* string */
+ int flags,
+ rb_encoding *enc)
{
- int c;
- int test;
- char *s = string;
- int escape = !(flags & FNM_NOESCAPE);
- int pathname = flags & FNM_PATHNAME;
- int period = flags & FNM_PERIOD;
- int nocase = flags & FNM_NOCASE;
-
- while (c = *pat++) {
- switch (c) {
- case '?':
- if (!*s || pathname && isdirsep(*s) || PERIOD(s))
- return FNM_NOMATCH;
- s++;
- break;
- case '*':
- while ((c = *pat++) == '*')
- ;
-
- if (PERIOD(s))
- return FNM_NOMATCH;
-
- if (!c) {
- if (pathname && find_dirsep(s))
- return FNM_NOMATCH;
- else
- return 0;
- }
- else if (pathname && isdirsep(c)) {
- s = find_dirsep(s);
- if (s)
- break;
- return FNM_NOMATCH;
- }
-
- test = escape && c == '\\' ? *pat : c;
- test = downcase(test);
- pat--;
- while (*s) {
- if ((c == '[' || downcase(*s) == test) &&
- !fnmatch(pat, s, flags & ~FNM_PERIOD))
- return 0;
- else if (pathname && isdirsep(*s))
- break;
- s++;
- }
- return FNM_NOMATCH;
-
- case '[':
- if (!*s || pathname && isdirsep(*s) || PERIOD(s))
- return FNM_NOMATCH;
- pat = range(pat, *s, flags);
- if (!pat)
- return FNM_NOMATCH;
- s++;
- break;
-
- case '\\':
- if (escape
-#if defined DOSISH
- && *pat && strchr("*?[\\", *pat)
-#endif
- ) {
- c = *pat;
- if (!c)
- c = '\\';
- else
- pat++;
- }
- /* FALLTHROUGH */
-
- default:
-#if defined DOSISH
- if (pathname && isdirsep(c) && isdirsep(*s))
- ;
- else
-#endif
- if(downcase(c) != downcase(*s))
- return FNM_NOMATCH;
- s++;
- break;
- }
+ const int period = !(flags & FNM_DOTMATCH);
+ const int pathname = flags & FNM_PATHNAME;
+ const int escape = !(flags & FNM_NOESCAPE);
+ const int nocase = flags & FNM_CASEFOLD;
+
+ const char *ptmp = 0;
+ const char *stmp = 0;
+
+ const char *p = *pcur;
+ const char *pend = p + strlen(p);
+ const char *s = *scur;
+ const char *send = s + strlen(s);
+
+ int r;
+
+ if (period && *s == '.' && *UNESCAPE(p) != '.') /* leading period */
+ RETURN(FNM_NOMATCH);
+
+ while (1) {
+ switch (*p) {
+ case '*':
+ do { p++; } while (*p == '*');
+ if (ISEND(UNESCAPE(p))) {
+ p = UNESCAPE(p);
+ RETURN(0);
+ }
+ if (ISEND(s))
+ RETURN(FNM_NOMATCH);
+ ptmp = p;
+ stmp = s;
+ continue;
+
+ case '?':
+ if (ISEND(s))
+ RETURN(FNM_NOMATCH);
+ p++;
+ Inc(s, send, enc);
+ continue;
+
+ case '[': {
+ const char *t;
+ if (ISEND(s))
+ RETURN(FNM_NOMATCH);
+ if ((t = bracket(p + 1, pend, s, send, flags, enc)) != 0) {
+ p = t;
+ Inc(s, send, enc);
+ continue;
+ }
+ goto failed;
+ }
+ }
+
+ /* ordinary */
+ p = UNESCAPE(p);
+ if (ISEND(s))
+ RETURN(ISEND(p) ? 0 : FNM_NOMATCH);
+ if (ISEND(p))
+ goto failed;
+ r = rb_enc_precise_mbclen(p, pend, enc);
+ if (!MBCLEN_CHARFOUND_P(r))
+ goto failed;
+ if (r <= (send-s) && memcmp(p, s, r) == 0) {
+ p += r;
+ s += r;
+ continue;
+ }
+ if (!nocase) goto failed;
+ if (rb_enc_toupper(rb_enc_codepoint(p, pend, enc), enc) !=
+ rb_enc_toupper(rb_enc_codepoint(s, send, enc), enc))
+ goto failed;
+ p += r;
+ Inc(s, send, enc);
+ continue;
+
+ failed: /* try next '*' position */
+ if (ptmp && stmp) {
+ p = ptmp;
+ Inc(stmp, send, enc); /* !ISEND(*stmp) */
+ s = stmp;
+ continue;
+ }
+ RETURN(FNM_NOMATCH);
+ }
+}
+
+static int
+fnmatch(
+ const char *pattern,
+ rb_encoding *enc,
+ const char *string,
+ int flags)
+{
+ const char *p = pattern;
+ const char *s = string;
+ const char *send = s + strlen(string);
+ const int period = !(flags & FNM_DOTMATCH);
+ const int pathname = flags & FNM_PATHNAME;
+
+ const char *ptmp = 0;
+ const char *stmp = 0;
+
+ if (pathname) {
+ while (1) {
+ if (p[0] == '*' && p[1] == '*' && p[2] == '/') {
+ do { p += 3; } while (p[0] == '*' && p[1] == '*' && p[2] == '/');
+ ptmp = p;
+ stmp = s;
+ }
+ if (fnmatch_helper(&p, &s, flags, enc) == 0) {
+ while (*s && *s != '/') Inc(s, send, enc);
+ if (*p && *s) {
+ p++;
+ s++;
+ continue;
+ }
+ if (!*p && !*s)
+ return 0;
+ }
+ /* failed : try next recursion */
+ if (ptmp && stmp && !(period && *stmp == '.')) {
+ while (*stmp && *stmp != '/') Inc(stmp, send, enc);
+ if (*stmp) {
+ p = ptmp;
+ stmp++;
+ s = stmp;
+ continue;
+ }
+ }
+ return FNM_NOMATCH;
+ }
}
- return !*s ? 0 : FNM_NOMATCH;
+ else
+ return fnmatch_helper(&p, &s, flags, enc);
}
VALUE rb_cDir;
-static void
-free_dir(dir)
+struct dir_data {
DIR *dir;
+ const VALUE path;
+ rb_encoding *enc;
+};
+
+static void
+dir_mark(void *ptr)
+{
+ struct dir_data *dir = ptr;
+ rb_gc_mark(dir->path);
+}
+
+static void
+dir_free(void *ptr)
+{
+ struct dir_data *dir = ptr;
+
+ if (dir->dir) closedir(dir->dir);
+ xfree(dir);
+}
+
+static size_t
+dir_memsize(const void *ptr)
{
- if (dir) closedir(dir);
+ return sizeof(struct dir_data);
}
-static VALUE dir_close _((VALUE));
+static const rb_data_type_t dir_data_type = {
+ "dir",
+ {dir_mark, dir_free, dir_memsize,},
+ 0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
+};
+
+static VALUE dir_close(VALUE);
static VALUE
-dir_s_new(argc, argv, klass)
- int argc;
- VALUE *argv;
- VALUE klass;
+dir_s_alloc(VALUE klass)
{
- VALUE obj = Data_Wrap_Struct(klass, 0, free_dir, 0);
+ struct dir_data *dirp;
+ VALUE obj = TypedData_Make_Struct(klass, struct dir_data, &dir_data_type, dirp);
- rb_obj_call_init(obj, argc, argv);
+ dirp->dir = NULL;
+ RB_OBJ_WRITE(obj, &dirp->path, Qnil);
+ dirp->enc = NULL;
return obj;
}
-static VALUE
-dir_initialize(dir, dirname)
- VALUE dir, dirname;
+static void *
+nogvl_opendir(void *ptr)
{
- DIR *dirp;
+ const char *path = ptr;
- Check_SafeStr(dirname);
- if (DATA_PTR(dir)) closedir(DATA_PTR(dir));
- DATA_PTR(dir) = NULL;
- dirp = opendir(RSTRING(dirname)->ptr);
- if (dirp == NULL) {
- if (errno == EMFILE || errno == ENFILE) {
- rb_gc();
- dirp = opendir(RSTRING(dirname)->ptr);
- }
- if (dirp == NULL) {
- rb_sys_fail(RSTRING(dirname)->ptr);
- }
- }
- DATA_PTR(dir) = dirp;
+ return (void *)opendir(path);
+}
+
+static DIR *
+opendir_without_gvl(const char *path)
+{
+ if (vm_initialized) {
+ union { const void *in; void *out; } u;
+
+ u.in = path;
+
+ return rb_thread_call_without_gvl(nogvl_opendir, u.out, RUBY_UBF_IO, 0);
+ }
+ else
+ return opendir(path);
+}
+
+static VALUE
+dir_initialize(rb_execution_context_t *ec, VALUE dir, VALUE dirname, VALUE enc)
+{
+ struct dir_data *dp;
+ VALUE orig;
+ const char *path;
+ rb_encoding *fsenc = NIL_P(enc) ? rb_filesystem_encoding() : rb_to_encoding(enc);
+
+ FilePathValue(dirname);
+ orig = rb_str_dup_frozen(dirname);
+ dirname = rb_str_encode_ospath(dirname);
+ dirname = rb_str_dup_frozen(dirname);
+
+ TypedData_Get_Struct(dir, struct dir_data, &dir_data_type, dp);
+ if (dp->dir) closedir(dp->dir);
+ dp->dir = NULL;
+ RB_OBJ_WRITE(dir, &dp->path, Qnil);
+ dp->enc = fsenc;
+ path = RSTRING_PTR(dirname);
+ dp->dir = opendir_without_gvl(path);
+ if (dp->dir == NULL) {
+ int e = errno;
+ if (rb_gc_for_fd(e)) {
+ dp->dir = opendir_without_gvl(path);
+ }
+#ifdef HAVE_GETATTRLIST
+ else if (e == EIO) {
+ u_int32_t attrbuf[1];
+ struct attrlist al = {ATTR_BIT_MAP_COUNT, 0};
+ if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW) == 0) {
+ dp->dir = opendir_without_gvl(path);
+ }
+ }
+#endif
+ if (dp->dir == NULL) {
+ RB_GC_GUARD(dirname);
+ rb_syserr_fail_path(e, orig);
+ }
+ }
+ RB_OBJ_WRITE(dir, &dp->path, orig);
return dir;
}
static VALUE
-dir_s_open(klass, dirname)
- VALUE klass, dirname;
+dir_s_open(rb_execution_context_t *ec, VALUE klass, VALUE dirname, VALUE enc)
{
- VALUE dir = Data_Wrap_Struct(klass, 0, free_dir, 0);
+ struct dir_data *dp;
+ VALUE dir = TypedData_Make_Struct(klass, struct dir_data, &dir_data_type, dp);
- dir_initialize(dir, dirname);
- if (rb_block_given_p()) {
- rb_ensure(rb_yield, dir, dir_close, dir);
- return Qnil;
- }
+ dir_initialize(ec, dir, dirname, enc);
return dir;
}
+static VALUE
+dir_s_close(rb_execution_context_t *ec, VALUE klass, VALUE dir)
+{
+ return dir_close(dir);
+}
+
+NORETURN(static void dir_closed(void));
+
static void
-dir_closed()
+dir_closed(void)
{
rb_raise(rb_eIOError, "closed directory");
}
-#define GetDIR(obj, dirp) {\
- Data_Get_Struct(obj, DIR, dirp);\
- if (dirp == NULL) dir_closed();\
+static struct dir_data *
+dir_get(VALUE dir)
+{
+ rb_check_frozen(dir);
+ return rb_check_typeddata(dir, &dir_data_type);
+}
+
+static struct dir_data *
+dir_check(VALUE dir)
+{
+ struct dir_data *dirp = dir_get(dir);
+ if (!dirp->dir) dir_closed();
+ return dirp;
+}
+
+#define GetDIR(obj, dirp) ((dirp) = dir_check(obj))
+
+
+/*
+ * call-seq:
+ * dir.inspect -> string
+ *
+ * Return a string describing this Dir object.
+ */
+static VALUE
+dir_inspect(VALUE dir)
+{
+ struct dir_data *dirp;
+
+ TypedData_Get_Struct(dir, struct dir_data, &dir_data_type, dirp);
+ if (!NIL_P(dirp->path)) {
+ VALUE str = rb_str_new_cstr("#<");
+ rb_str_append(str, rb_class_name(CLASS_OF(dir)));
+ rb_str_cat2(str, ":");
+ rb_str_append(str, dirp->path);
+ rb_str_cat2(str, ">");
+ return str;
+ }
+ return rb_funcallv(dir, idTo_s, 0, 0);
}
+/* Workaround for Solaris 10 that does not have dirfd.
+ Note: Solaris 11 (POSIX.1-2008 compliant) has dirfd(3C).
+ */
+#if defined(__sun) && !defined(HAVE_DIRFD)
+# if defined(HAVE_DIR_D_FD)
+# define dirfd(x) ((x)->d_fd)
+# define HAVE_DIRFD 1
+# elif defined(HAVE_DIR_DD_FD)
+# define dirfd(x) ((x)->dd_fd)
+# define HAVE_DIRFD 1
+# endif
+#endif
+
+#ifdef HAVE_DIRFD
+/*
+ * call-seq:
+ * dir.fileno -> integer
+ *
+ * Returns the file descriptor used in <em>dir</em>.
+ *
+ * d = Dir.new("..")
+ * d.fileno #=> 8
+ *
+ * This method uses dirfd() function defined by POSIX 2008.
+ * NotImplementedError is raised on other platforms, such as Windows,
+ * which doesn't provide the function.
+ *
+ */
static VALUE
-dir_read(dir)
- VALUE dir;
+dir_fileno(VALUE dir)
{
- DIR *dirp;
+ struct dir_data *dirp;
+ int fd;
+
+ GetDIR(dir, dirp);
+ fd = dirfd(dirp->dir);
+ if (fd == -1)
+ rb_sys_fail("dirfd");
+ return INT2NUM(fd);
+}
+#else
+#define dir_fileno rb_f_notimplement
+#endif
+
+/*
+ * call-seq:
+ * dir.path -> string or nil
+ * dir.to_path -> string or nil
+ *
+ * Returns the path parameter passed to <em>dir</em>'s constructor.
+ *
+ * d = Dir.new("..")
+ * d.path #=> ".."
+ */
+static VALUE
+dir_path(VALUE dir)
+{
+ struct dir_data *dirp;
+
+ TypedData_Get_Struct(dir, struct dir_data, &dir_data_type, dirp);
+ if (NIL_P(dirp->path)) return Qnil;
+ return rb_str_dup(dirp->path);
+}
+
+#if defined _WIN32
+static int
+fundamental_encoding_p(rb_encoding *enc)
+{
+ switch (rb_enc_to_index(enc)) {
+ case ENCINDEX_ASCII_8BIT:
+ case ENCINDEX_US_ASCII:
+ case ENCINDEX_UTF_8:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+# define READDIR(dir, enc) rb_w32_readdir((dir), (enc))
+#else
+# define READDIR(dir, enc) readdir((dir))
+#endif
+
+/* safe to use without GVL */
+static int
+to_be_skipped(const struct dirent *dp)
+{
+ const char *name = dp->d_name;
+ if (name[0] != '.') return FALSE;
+#ifdef HAVE_DIRENT_NAMLEN
+ switch (NAMLEN(dp)) {
+ case 2:
+ if (name[1] != '.') return FALSE;
+ case 1:
+ return TRUE;
+ default:
+ break;
+ }
+#else
+ if (!name[1]) return TRUE;
+ if (name[1] != '.') return FALSE;
+ if (!name[2]) return TRUE;
+#endif
+ return FALSE;
+}
+
+/*
+ * call-seq:
+ * dir.read -> string or nil
+ *
+ * Reads the next entry from <em>dir</em> and returns it as a string.
+ * Returns <code>nil</code> at the end of the stream.
+ *
+ * d = Dir.new("testdir")
+ * d.read #=> "."
+ * d.read #=> ".."
+ * d.read #=> "config.h"
+ */
+static VALUE
+dir_read(VALUE dir)
+{
+ struct dir_data *dirp;
struct dirent *dp;
GetDIR(dir, dirp);
errno = 0;
- dp = readdir(dirp);
- if (dp)
- return rb_tainted_str_new(dp->d_name, NAMLEN(dp));
- else if (errno == 0) { /* end of stream */
- return Qnil;
+ if ((dp = READDIR(dirp->dir, dirp->enc)) != NULL) {
+ return rb_external_str_new_with_enc(dp->d_name, NAMLEN(dp), dirp->enc);
}
else {
- rb_sys_fail(0);
+ int e = errno;
+ if (e != 0) rb_syserr_fail(e, 0);
+ return Qnil; /* end of stream */
}
- return Qnil; /* not reached */
}
+static VALUE dir_each_entry(VALUE, VALUE (*)(VALUE, VALUE), VALUE, int);
+
static VALUE
-dir_each(dir)
- VALUE dir;
+dir_yield(VALUE arg, VALUE path)
{
- DIR *dirp;
+ return rb_yield(path);
+}
+
+/*
+ * call-seq:
+ * dir.each { |filename| block } -> dir
+ * dir.each -> an_enumerator
+ *
+ * Calls the block once for each entry in this directory, passing the
+ * filename of each entry as a parameter to the block.
+ *
+ * If no block is given, an enumerator is returned instead.
+ *
+ * d = Dir.new("testdir")
+ * d.each {|x| puts "Got #{x}" }
+ *
+ * <em>produces:</em>
+ *
+ * Got .
+ * Got ..
+ * Got config.h
+ * Got main.rb
+ */
+static VALUE
+dir_each(VALUE dir)
+{
+ RETURN_ENUMERATOR(dir, 0, 0);
+ return dir_each_entry(dir, dir_yield, Qnil, FALSE);
+}
+
+static VALUE
+dir_each_entry(VALUE dir, VALUE (*each)(VALUE, VALUE), VALUE arg, int children_only)
+{
+ struct dir_data *dirp;
struct dirent *dp;
+ IF_NORMALIZE_UTF8PATH(int norm_p);
GetDIR(dir, dirp);
- for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
- rb_yield(rb_tainted_str_new(dp->d_name, NAMLEN(dp)));
- if (DATA_PTR(dir) == NULL) dir_closed();
+ rewinddir(dirp->dir);
+ IF_NORMALIZE_UTF8PATH(norm_p = need_normalization(dirp->dir, RSTRING_PTR(dirp->path)));
+ while ((dp = READDIR(dirp->dir, dirp->enc)) != NULL) {
+ const char *name = dp->d_name;
+ size_t namlen = NAMLEN(dp);
+ VALUE path;
+
+ if (children_only && name[0] == '.') {
+ if (namlen == 1) continue; /* current directory */
+ if (namlen == 2 && name[1] == '.') continue; /* parent directory */
+ }
+#if NORMALIZE_UTF8PATH
+ if (norm_p && has_nonascii(name, namlen) &&
+ !NIL_P(path = rb_str_normalize_ospath(name, namlen))) {
+ path = rb_external_str_with_enc(path, dirp->enc);
+ }
+ else
+#endif
+ path = rb_external_str_new_with_enc(name, namlen, dirp->enc);
+ (*each)(arg, path);
}
return dir;
}
+#ifdef HAVE_TELLDIR
+/*
+ * call-seq:
+ * dir.pos -> integer
+ * dir.tell -> integer
+ *
+ * Returns the current position in <em>dir</em>. See also Dir#seek.
+ *
+ * d = Dir.new("testdir")
+ * d.tell #=> 0
+ * d.read #=> "."
+ * d.tell #=> 12
+ */
static VALUE
-dir_tell(dir)
- VALUE dir;
+dir_tell(VALUE dir)
{
-#ifdef HAVE_TELLDIR
- DIR *dirp;
+ struct dir_data *dirp;
long pos;
GetDIR(dir, dirp);
- pos = telldir(dirp);
+ pos = telldir(dirp->dir);
return rb_int2inum(pos);
+}
#else
- rb_notimplement();
+#define dir_tell rb_f_notimplement
#endif
-}
+#ifdef HAVE_SEEKDIR
+/*
+ * call-seq:
+ * dir.seek( integer ) -> dir
+ *
+ * Seeks to a particular location in <em>dir</em>. <i>integer</i>
+ * must be a value returned by Dir#tell.
+ *
+ * d = Dir.new("testdir") #=> #<Dir:0x401b3c40>
+ * d.read #=> "."
+ * i = d.tell #=> 12
+ * d.read #=> ".."
+ * d.seek(i) #=> #<Dir:0x401b3c40>
+ * d.read #=> ".."
+ */
static VALUE
-dir_seek(dir, pos)
- VALUE dir, pos;
+dir_seek(VALUE dir, VALUE pos)
{
- DIR *dirp;
+ struct dir_data *dirp;
+ long p = NUM2LONG(pos);
-#ifdef HAVE_SEEKDIR
GetDIR(dir, dirp);
- seekdir(dirp, NUM2INT(pos));
+ seekdir(dirp->dir, p);
return dir;
+}
#else
- rb_notimplement();
+#define dir_seek rb_f_notimplement
#endif
+
+#ifdef HAVE_SEEKDIR
+/*
+ * call-seq:
+ * dir.pos = integer -> integer
+ *
+ * Synonym for Dir#seek, but returns the position parameter.
+ *
+ * d = Dir.new("testdir") #=> #<Dir:0x401b3c40>
+ * d.read #=> "."
+ * i = d.pos #=> 12
+ * d.read #=> ".."
+ * d.pos = i #=> 12
+ * d.read #=> ".."
+ */
+static VALUE
+dir_set_pos(VALUE dir, VALUE pos)
+{
+ dir_seek(dir, pos);
+ return pos;
}
+#else
+#define dir_set_pos rb_f_notimplement
+#endif
+/*
+ * call-seq:
+ * dir.rewind -> dir
+ *
+ * Repositions <em>dir</em> to the first entry.
+ *
+ * d = Dir.new("testdir")
+ * d.read #=> "."
+ * d.rewind #=> #<Dir:0x401b3fb0>
+ * d.read #=> "."
+ */
static VALUE
-dir_rewind(dir)
- VALUE dir;
+dir_rewind(VALUE dir)
{
- DIR *dirp;
+ struct dir_data *dirp;
GetDIR(dir, dirp);
- rewinddir(dirp);
+ rewinddir(dirp->dir);
return dir;
}
+/*
+ * call-seq:
+ * dir.close -> nil
+ *
+ * Closes the directory stream.
+ * Calling this method on closed Dir object is ignored since Ruby 2.3.
+ *
+ * d = Dir.new("testdir")
+ * d.close #=> nil
+ */
static VALUE
-dir_close(dir)
- VALUE dir;
+dir_close(VALUE dir)
{
- DIR *dirp;
+ struct dir_data *dirp;
- Data_Get_Struct(dir, DIR, dirp);
- if (dirp == NULL) dir_closed();
- closedir(dirp);
- DATA_PTR(dir) = NULL;
+ dirp = dir_get(dir);
+ if (!dirp->dir) return Qnil;
+ closedir(dirp->dir);
+ dirp->dir = NULL;
return Qnil;
}
+static void *
+nogvl_chdir(void *ptr)
+{
+ const char *path = ptr;
+
+ return (void *)(VALUE)chdir(path);
+}
+
+static void
+dir_chdir(VALUE path)
+{
+ if (chdir(RSTRING_PTR(path)) < 0)
+ rb_sys_fail_path(path);
+}
+
+static int chdir_blocking = 0;
+static VALUE chdir_thread = Qnil;
+
+struct chdir_data {
+ VALUE old_path, new_path;
+ int done;
+};
+
static VALUE
-dir_s_chdir(argc, argv, obj)
- int argc;
- VALUE *argv;
- VALUE obj;
+chdir_yield(VALUE v)
{
- VALUE path;
- char *dist = "";
+ struct chdir_data *args = (void *)v;
+ dir_chdir(args->new_path);
+ args->done = TRUE;
+ chdir_blocking++;
+ if (NIL_P(chdir_thread))
+ chdir_thread = rb_thread_current();
+ return rb_yield(args->new_path);
+}
- rb_secure(2);
- if (rb_scan_args(argc, argv, "01", &path) == 1) {
- Check_SafeStr(path);
- dist = RSTRING(path)->ptr;
+static VALUE
+chdir_restore(VALUE v)
+{
+ struct chdir_data *args = (void *)v;
+ if (args->done) {
+ chdir_blocking--;
+ if (chdir_blocking == 0)
+ chdir_thread = Qnil;
+ dir_chdir(args->old_path);
+ }
+ return Qnil;
+}
+
+/*
+ * call-seq:
+ * Dir.chdir( [ string] ) -> 0
+ * Dir.chdir( [ string] ) {| path | block } -> anObject
+ *
+ * Changes the current working directory of the process to the given
+ * string. When called without an argument, changes the directory to
+ * the value of the environment variable <code>HOME</code>, or
+ * <code>LOGDIR</code>. SystemCallError (probably Errno::ENOENT) if
+ * the target directory does not exist.
+ *
+ * If a block is given, it is passed the name of the new current
+ * directory, and the block is executed with that as the current
+ * directory. The original working directory is restored when the block
+ * exits. The return value of <code>chdir</code> is the value of the
+ * block. <code>chdir</code> blocks can be nested, but in a
+ * multi-threaded program an error will be raised if a thread attempts
+ * to open a <code>chdir</code> block while another thread has one
+ * open or a call to <code>chdir</code> without a block occurs inside
+ * a block passed to <code>chdir</code> (even in the same thread).
+ *
+ * Dir.chdir("/var/spool/mail")
+ * puts Dir.pwd
+ * Dir.chdir("/tmp") do
+ * puts Dir.pwd
+ * Dir.chdir("/usr") do
+ * puts Dir.pwd
+ * end
+ * puts Dir.pwd
+ * end
+ * puts Dir.pwd
+ *
+ * <em>produces:</em>
+ *
+ * /var/spool/mail
+ * /tmp
+ * /usr
+ * /tmp
+ * /var/spool/mail
+ */
+static VALUE
+dir_s_chdir(int argc, VALUE *argv, VALUE obj)
+{
+ VALUE path = Qnil;
+
+ if (rb_check_arity(argc, 0, 1) == 1) {
+ path = rb_str_encode_ospath(rb_get_path(argv[0]));
}
else {
- dist = getenv("HOME");
- if (!dist) {
- dist = getenv("LOGDIR");
- }
+ const char *dist = getenv("HOME");
+ if (!dist) {
+ dist = getenv("LOGDIR");
+ if (!dist) rb_raise(rb_eArgError, "HOME/LOGDIR not set");
+ }
+ path = rb_str_new2(dist);
+ }
+
+ if (chdir_blocking > 0) {
+ if (rb_thread_current() != chdir_thread)
+ rb_raise(rb_eRuntimeError, "conflicting chdir during another chdir block");
+ if (!rb_block_given_p())
+ rb_warn("conflicting chdir during another chdir block");
}
- if (chdir(dist) < 0)
- rb_sys_fail(dist);
+ if (rb_block_given_p()) {
+ struct chdir_data args;
+
+ args.old_path = rb_str_encode_ospath(rb_dir_getwd());
+ args.new_path = path;
+ args.done = FALSE;
+ return rb_ensure(chdir_yield, (VALUE)&args, chdir_restore, (VALUE)&args);
+ }
+ else {
+ char *p = RSTRING_PTR(path);
+ int r = (int)(VALUE)rb_thread_call_without_gvl(nogvl_chdir, p,
+ RUBY_UBF_IO, 0);
+ if (r < 0)
+ rb_sys_fail_path(path);
+ }
return INT2FIX(0);
}
-static VALUE
-dir_s_getwd(dir)
- VALUE dir;
+#ifndef _WIN32
+VALUE
+rb_dir_getwd_ospath(void)
{
- char path[MAXPATHLEN];
-
-#ifdef HAVE_GETCWD
- if (getcwd(path, sizeof(path)) == 0) rb_sys_fail(path);
+ char *path;
+ VALUE cwd;
+ VALUE path_guard;
+
+#undef RUBY_UNTYPED_DATA_WARNING
+#define RUBY_UNTYPED_DATA_WARNING 0
+ path_guard = Data_Wrap_Struct((VALUE)0, NULL, RUBY_DEFAULT_FREE, NULL);
+ path = ruby_getcwd();
+ DATA_PTR(path_guard) = path;
+#ifdef __APPLE__
+ cwd = rb_str_normalize_ospath(path, strlen(path));
#else
- extern char *getwd();
- if (getwd(path) == 0) rb_sys_fail(path);
+ cwd = rb_str_new2(path);
#endif
+ DATA_PTR(path_guard) = 0;
- return rb_tainted_str_new2(path);
+ xfree(path);
+ return cwd;
}
+#endif
+VALUE
+rb_dir_getwd(void)
+{
+ rb_encoding *fs = rb_filesystem_encoding();
+ int fsenc = rb_enc_to_index(fs);
+ VALUE cwd = rb_dir_getwd_ospath();
+
+ switch (fsenc) {
+ case ENCINDEX_US_ASCII:
+ fsenc = ENCINDEX_ASCII_8BIT;
+ case ENCINDEX_ASCII_8BIT:
+ break;
+#if defined _WIN32 || defined __APPLE__
+ default:
+ return rb_str_conv_enc(cwd, NULL, fs);
+#endif
+ }
+ return rb_enc_associate_index(cwd, fsenc);
+}
+
+/*
+ * call-seq:
+ * Dir.getwd -> string
+ * Dir.pwd -> string
+ *
+ * Returns the path to the current working directory of this process as
+ * a string.
+ *
+ * Dir.chdir("/tmp") #=> 0
+ * Dir.getwd #=> "/tmp"
+ * Dir.pwd #=> "/tmp"
+ */
static VALUE
-dir_s_chroot(dir, path)
- VALUE dir, path;
+dir_s_getwd(VALUE dir)
{
-#if defined(HAVE_CHROOT) && !defined(__CHECKER__)
- rb_secure(2);
- Check_SafeStr(path);
+ return rb_dir_getwd();
+}
- if (chroot(RSTRING(path)->ptr) == -1)
- rb_sys_fail(RSTRING(path)->ptr);
+static VALUE
+check_dirname(VALUE dir)
+{
+ VALUE d = dir;
+ char *path, *pend;
+ long len;
+ rb_encoding *enc;
+
+ FilePathValue(d);
+ enc = rb_enc_get(d);
+ RSTRING_GETMEM(d, path, len);
+ pend = path + len;
+ pend = rb_enc_path_end(rb_enc_path_skip_prefix(path, pend, enc), pend, enc);
+ if (pend - path < len) {
+ d = rb_str_subseq(d, 0, pend - path);
+ StringValueCStr(d);
+ }
+ return rb_str_encode_ospath(d);
+}
+
+#if defined(HAVE_CHROOT)
+/*
+ * call-seq:
+ * Dir.chroot( string ) -> 0
+ *
+ * Changes this process's idea of the file system root. Only a
+ * privileged process may make this call. Not available on all
+ * platforms. On Unix systems, see <code>chroot(2)</code> for more
+ * information.
+ */
+static VALUE
+dir_s_chroot(VALUE dir, VALUE path)
+{
+ path = check_dirname(path);
+ if (chroot(RSTRING_PTR(path)) == -1)
+ rb_sys_fail_path(path);
return INT2FIX(0);
+}
#else
- rb_notimplement();
- return Qnil; /* not reached */
+#define dir_s_chroot rb_f_notimplement
#endif
+
+struct mkdir_arg {
+ const char *path;
+ mode_t mode;
+};
+
+static void *
+nogvl_mkdir(void *ptr)
+{
+ struct mkdir_arg *m = ptr;
+
+ return (void *)(VALUE)mkdir(m->path, m->mode);
}
+/*
+ * call-seq:
+ * Dir.mkdir( string [, integer] ) -> 0
+ *
+ * Makes a new directory named by <i>string</i>, with permissions
+ * specified by the optional parameter <i>anInteger</i>. The
+ * permissions may be modified by the value of File::umask, and are
+ * ignored on NT. Raises a SystemCallError if the directory cannot be
+ * created. See also the discussion of permissions in the class
+ * documentation for File.
+ *
+ * Dir.mkdir(File.join(Dir.home, ".foo"), 0700) #=> 0
+ *
+ */
static VALUE
-dir_s_mkdir(argc, argv, obj)
- int argc;
- VALUE *argv;
- VALUE obj;
+dir_s_mkdir(int argc, VALUE *argv, VALUE obj)
{
+ struct mkdir_arg m;
VALUE path, vmode;
- int mode;
+ int r;
if (rb_scan_args(argc, argv, "11", &path, &vmode) == 2) {
- mode = NUM2INT(vmode);
+ m.mode = NUM2MODET(vmode);
}
else {
- mode = 0777;
+ m.mode = 0777;
}
- Check_SafeStr(path);
- rb_secure(2);
-#if !defined(NT)
- if (mkdir(RSTRING(path)->ptr, mode) == -1)
- rb_sys_fail(RSTRING(path)->ptr);
-#else
- if (mkdir(RSTRING(path)->ptr) == -1)
- rb_sys_fail(RSTRING(path)->ptr);
-#endif
+ path = check_dirname(path);
+ m.path = RSTRING_PTR(path);
+ r = (int)(VALUE)rb_thread_call_without_gvl(nogvl_mkdir, &m, RUBY_UBF_IO, 0);
+ if (r < 0)
+ rb_sys_fail_path(path);
return INT2FIX(0);
}
+static void *
+nogvl_rmdir(void *ptr)
+{
+ const char *path = ptr;
+
+ return (void *)(VALUE)rmdir(path);
+}
+
+/*
+ * call-seq:
+ * Dir.delete( string ) -> 0
+ * Dir.rmdir( string ) -> 0
+ * Dir.unlink( string ) -> 0
+ *
+ * Deletes the named directory. Raises a subclass of SystemCallError
+ * if the directory isn't empty.
+ */
static VALUE
-dir_s_rmdir(obj, dir)
- VALUE obj, dir;
+dir_s_rmdir(VALUE obj, VALUE dir)
{
- Check_SafeStr(dir);
- rb_secure(2);
- if (rmdir(RSTRING(dir)->ptr) < 0)
- rb_sys_fail(RSTRING(dir)->ptr);
+ const char *p;
+ int r;
+
+ dir = check_dirname(dir);
+ p = RSTRING_PTR(dir);
+ r = (int)(VALUE)rb_thread_call_without_gvl(nogvl_rmdir, (void *)p, RUBY_UBF_IO, 0);
+ if (r < 0)
+ rb_sys_fail_path(dir);
return INT2FIX(0);
}
-/* Return nonzero if S has any special globbing chars in it. */
+struct warning_args {
+#ifdef RUBY_FUNCTION_NAME_STRING
+ const char *func;
+#endif
+ const char *mesg;
+ rb_encoding *enc;
+};
+
+#ifndef RUBY_FUNCTION_NAME_STRING
+#define sys_enc_warning_in(func, mesg, enc) sys_enc_warning(mesg, enc)
+#endif
+
+static VALUE
+sys_warning_1(VALUE mesg)
+{
+ const struct warning_args *arg = (struct warning_args *)mesg;
+#ifdef RUBY_FUNCTION_NAME_STRING
+ rb_sys_enc_warning(arg->enc, "%s: %s", arg->func, arg->mesg);
+#else
+ rb_sys_enc_warning(arg->enc, "%s", arg->mesg);
+#endif
+ return Qnil;
+}
+
+static void
+sys_enc_warning_in(const char *func, const char *mesg, rb_encoding *enc)
+{
+ struct warning_args arg;
+#ifdef RUBY_FUNCTION_NAME_STRING
+ arg.func = func;
+#endif
+ arg.mesg = mesg;
+ arg.enc = enc;
+ rb_protect(sys_warning_1, (VALUE)&arg, 0);
+}
+
+#define GLOB_VERBOSE (1U << (sizeof(int) * CHAR_BIT - 1))
+#define sys_warning(val, enc) \
+ ((flags & GLOB_VERBOSE) ? sys_enc_warning_in(RUBY_FUNCTION_NAME_STRING, (val), (enc)) :(void)0)
+
+static inline size_t
+glob_alloc_size(size_t x, size_t y)
+{
+ size_t z;
+ if (rb_mul_size_overflow(x, y, SSIZE_MAX, &z)) {
+ rb_memerror(); /* or...? */
+ }
+ else {
+ return z;
+ }
+}
+
+static inline void *
+glob_alloc_n(size_t x, size_t y)
+{
+ return malloc(glob_alloc_size(x, y));
+}
+
+static inline void *
+glob_realloc_n(void *p, size_t x, size_t y)
+{
+ return realloc(p, glob_alloc_size(x, y));
+}
+
+#define GLOB_ALLOC(type) ((type *)malloc(sizeof(type)))
+#define GLOB_ALLOC_N(type, n) ((type *)glob_alloc_n(sizeof(type), n))
+#define GLOB_REALLOC(ptr, size) realloc((ptr), (size))
+#define GLOB_REALLOC_N(ptr, n) glob_realloc_n(ptr, sizeof(*(ptr)), n)
+#define GLOB_FREE(ptr) free(ptr)
+#define GLOB_JUMP_TAG(status) (((status) == -1) ? rb_memerror() : rb_jump_tag(status))
+
+/*
+ * ENOTDIR can be returned by stat(2) if a non-leaf element of the path
+ * is not a directory.
+ */
+ALWAYS_INLINE(static int to_be_ignored(int e));
+static inline int
+to_be_ignored(int e)
+{
+ return e == ENOENT || e == ENOTDIR;
+}
+
+#ifdef _WIN32
+#define STAT(p, s) rb_w32_ustati128((p), (s))
+#undef lstat
+#define lstat(p, s) rb_w32_ulstati128((p), (s))
+#else
+#define STAT(p, s) stat((p), (s))
+#endif
+
+typedef int ruby_glob_errfunc(const char*, VALUE, const void*, int);
+typedef struct {
+ ruby_glob_func *match;
+ ruby_glob_errfunc *error;
+} ruby_glob_funcs_t;
+
+static const char *
+at_subpath(int fd, size_t baselen, const char *path)
+{
+#if USE_OPENDIR_AT
+ if (fd != (int)AT_FDCWD && baselen > 0) {
+ path += baselen;
+ if (*path == '/') ++path;
+ }
+#endif
+ return *path ? path : ".";
+}
+
+/* System call with warning */
+static int
+do_stat(int fd, size_t baselen, const char *path, struct stat *pst, int flags, rb_encoding *enc)
+{
+#if USE_OPENDIR_AT
+ int ret = fstatat(fd, at_subpath(fd, baselen, path), pst, 0);
+#else
+ int ret = STAT(path, pst);
+#endif
+ if (ret < 0 && !to_be_ignored(errno))
+ sys_warning(path, enc);
+
+ return ret;
+}
+
+#if defined HAVE_LSTAT || defined lstat || USE_OPENDIR_AT
static int
-has_magic(s, send)
- char *s, *send;
+do_lstat(int fd, size_t baselen, const char *path, struct stat *pst, int flags, rb_encoding *enc)
+{
+#if USE_OPENDIR_AT
+ int ret = fstatat(fd, at_subpath(fd, baselen, path), pst, AT_SYMLINK_NOFOLLOW);
+#else
+ int ret = lstat(path, pst);
+#endif
+ if (ret < 0 && !to_be_ignored(errno))
+ sys_warning(path, enc);
+
+ return ret;
+}
+#else
+#define do_lstat do_stat
+#endif
+
+struct opendir_at_arg {
+ int basefd;
+ const char *path;
+};
+
+static void *
+with_gvl_gc_for_fd(void *ptr)
+{
+ int *e = ptr;
+
+ return (void *)RBOOL(rb_gc_for_fd(*e));
+}
+
+static int
+gc_for_fd_with_gvl(int e)
+{
+ if (vm_initialized)
+ return (int)(VALUE)rb_thread_call_with_gvl(with_gvl_gc_for_fd, &e);
+ else
+ return RBOOL(rb_gc_for_fd(e));
+}
+
+static void *
+nogvl_opendir_at(void *ptr)
+{
+ const struct opendir_at_arg *oaa = ptr;
+ DIR *dirp;
+
+#if USE_OPENDIR_AT
+ const int opendir_flags = (O_RDONLY|O_CLOEXEC|
+# ifdef O_DIRECTORY
+ O_DIRECTORY|
+# endif /* O_DIRECTORY */
+ 0);
+ int fd = openat(oaa->basefd, oaa->path, opendir_flags);
+
+ dirp = fd >= 0 ? fdopendir(fd) : 0;
+ if (!dirp) {
+ int e = errno;
+
+ switch (gc_for_fd_with_gvl(e)) {
+ default:
+ if (fd < 0) fd = openat(oaa->basefd, oaa->path, opendir_flags);
+ if (fd >= 0) dirp = fdopendir(fd);
+ if (dirp) return dirp;
+
+ e = errno;
+ /* fallthrough*/
+ case 0:
+ if (fd >= 0) close(fd);
+ errno = e;
+ }
+ }
+#else /* !USE_OPENDIR_AT */
+ dirp = opendir(oaa->path);
+ if (!dirp && gc_for_fd_with_gvl(errno))
+ dirp = opendir(oaa->path);
+#endif /* !USE_OPENDIR_AT */
+
+ return dirp;
+}
+
+static DIR *
+opendir_at(int basefd, const char *path)
+{
+ struct opendir_at_arg oaa;
+
+ oaa.basefd = basefd;
+ oaa.path = path;
+
+ if (vm_initialized)
+ return rb_thread_call_without_gvl(nogvl_opendir_at, &oaa, RUBY_UBF_IO, 0);
+ else
+ return nogvl_opendir_at(&oaa);
+}
+
+static DIR *
+do_opendir(const int basefd, size_t baselen, const char *path, int flags, rb_encoding *enc,
+ ruby_glob_errfunc *errfunc, VALUE arg, int *status)
+{
+ DIR *dirp;
+#ifdef _WIN32
+ VALUE tmp = 0;
+ if (!fundamental_encoding_p(enc)) {
+ tmp = rb_enc_str_new(path, strlen(path), enc);
+ tmp = rb_str_encode_ospath(tmp);
+ path = RSTRING_PTR(tmp);
+ }
+#endif
+ dirp = opendir_at(basefd, at_subpath(basefd, baselen, path));
+ if (!dirp) {
+ int e = errno;
+
+ *status = 0;
+ if (!to_be_ignored(e)) {
+ if (errfunc) {
+ *status = (*errfunc)(path, arg, enc, e);
+ }
+ else {
+ sys_warning(path, enc);
+ }
+ }
+ }
+#ifdef _WIN32
+ if (tmp) rb_str_resize(tmp, 0); /* GC guard */
+#endif
+
+ return dirp;
+}
+
+/* Globing pattern */
+enum glob_pattern_type { PLAIN, ALPHA, BRACE, MAGICAL, RECURSIVE, MATCH_ALL, MATCH_DIR };
+
+/* Return nonzero if S has any special globbing chars in it. */
+static enum glob_pattern_type
+has_magic(const char *p, const char *pend, int flags, rb_encoding *enc)
+{
+ const int escape = !(flags & FNM_NOESCAPE);
+ int hasalpha = 0;
+ int hasmagical = 0;
+
+ register char c;
+
+ while (p < pend && (c = *p++) != 0) {
+ switch (c) {
+ case '{':
+ return BRACE;
+
+ case '*':
+ case '?':
+ case '[':
+ hasmagical = 1;
+ break;
+
+ case '\\':
+ if (escape && p++ >= pend)
+ continue;
+ break;
+
+#ifdef _WIN32
+ case '.':
+ break;
+
+ case '~':
+ hasalpha = 1;
+ break;
+#endif
+ default:
+ if (IS_WIN32 || ISALPHA(c)) {
+ hasalpha = 1;
+ }
+ break;
+ }
+
+ p = Next(p-1, pend, enc);
+ }
+
+ return hasmagical ? MAGICAL : hasalpha ? ALPHA : PLAIN;
+}
+
+/* Find separator in globbing pattern. */
+static char *
+find_dirsep(const char *p, const char *pend, int flags, rb_encoding *enc)
{
- register char *p = s;
+ const int escape = !(flags & FNM_NOESCAPE);
+
register char c;
int open = 0;
- while ((c = *p++) != '\0') {
- switch (c) {
- case '?':
- case '*':
- return Qtrue;
+ while ((c = *p++) != 0) {
+ switch (c) {
+ case '[':
+ open = 1;
+ continue;
+ case ']':
+ open = 0;
+ continue;
+
+ case '{':
+ open = 1;
+ continue;
+ case '}':
+ open = 0;
+ continue;
+
+ case '/':
+ if (!open)
+ return (char *)p-1;
+ continue;
+
+ case '\\':
+ if (escape && !(c = *p++))
+ return (char *)p-1;
+ continue;
+ }
+
+ p = Next(p-1, pend, enc);
+ }
- case '[': /* Only accept an open brace if there is a close */
- open++; /* brace to match it. Bracket expressions must be */
- continue; /* complete, according to Posix.2 */
- case ']':
- if (open)
- return Qtrue;
- continue;
+ return (char *)p-1;
+}
- case '\\':
- if (*p++ == '\0')
- return Qfalse;
- }
+/* Remove escaping backslashes */
+static char *
+remove_backslashes(char *p, register const char *pend, rb_encoding *enc)
+{
+ char *t = p;
+ char *s = p;
- if (send && p >= send) break;
+ while (*p) {
+ if (*p == '\\') {
+ if (t != s)
+ memmove(t, s, p - s);
+ t += p - s;
+ s = ++p;
+ if (!*p) break;
+ }
+ Inc(p, pend, enc);
}
- return Qfalse;
+
+ while (*p++);
+
+ if (t != s)
+ memmove(t, s, p - s); /* move '\0' too */
+
+ return p;
}
-static char*
-extract_path(p, pend)
- char *p, *pend;
+struct glob_pattern {
+ char *str;
+ enum glob_pattern_type type;
+ struct glob_pattern *next;
+};
+
+static void glob_free_pattern(struct glob_pattern *list);
+
+static struct glob_pattern *
+glob_make_pattern(const char *p, const char *e, int flags, rb_encoding *enc)
{
- char *alloc;
- int len;
+ struct glob_pattern *list, *tmp, **tail = &list;
+ int dirsep = 0; /* pattern is terminated with '/' */
+ int recursive = 0;
+
+ while (p < e && *p) {
+ tmp = GLOB_ALLOC(struct glob_pattern);
+ if (!tmp) goto error;
+ if (p + 2 < e && p[0] == '*' && p[1] == '*' && p[2] == '/') {
+ /* fold continuous RECURSIVEs (needed in glob_helper) */
+ do { p += 3; while (*p == '/') p++; } while (p[0] == '*' && p[1] == '*' && p[2] == '/');
+ tmp->type = RECURSIVE;
+ tmp->str = 0;
+ dirsep = 1;
+ recursive = 1;
+ }
+ else {
+ const char *m = find_dirsep(p, e, flags, enc);
+ const enum glob_pattern_type magic = has_magic(p, m, flags, enc);
+ const enum glob_pattern_type non_magic = (USE_NAME_ON_FS || FNM_SYSCASE) ? PLAIN : ALPHA;
+ char *buf;
+
+ if (!(FNM_SYSCASE || magic > non_magic) && !recursive && *m) {
+ const char *m2;
+ while (has_magic(m+1, m2 = find_dirsep(m+1, e, flags, enc), flags, enc) <= non_magic &&
+ *m2) {
+ m = m2;
+ }
+ }
+ buf = GLOB_ALLOC_N(char, m-p+1);
+ if (!buf) {
+ GLOB_FREE(tmp);
+ goto error;
+ }
+ memcpy(buf, p, m-p);
+ buf[m-p] = '\0';
+ tmp->type = magic > MAGICAL ? MAGICAL : magic > non_magic ? magic : PLAIN;
+ tmp->str = buf;
+ if (*m) {
+ dirsep = 1;
+ p = m + 1;
+ }
+ else {
+ dirsep = 0;
+ p = m;
+ }
+ }
+ *tail = tmp;
+ tail = &tmp->next;
+ }
- len = pend - p;
- alloc = ALLOC_N(char, len+1);
- memcpy(alloc, p, len);
- if (len > 1 && pend[-1] == '/') {
- alloc[len-1] = 0;
+ tmp = GLOB_ALLOC(struct glob_pattern);
+ if (!tmp) {
+ goto error;
}
- else {
- alloc[len] = 0;
+ tmp->type = dirsep ? MATCH_DIR : MATCH_ALL;
+ tmp->str = 0;
+ *tail = tmp;
+ tmp->next = 0;
+
+ return list;
+
+ error:
+ *tail = 0;
+ glob_free_pattern(list);
+ return 0;
+}
+
+static void
+glob_free_pattern(struct glob_pattern *list)
+{
+ while (list) {
+ struct glob_pattern *tmp = list;
+ list = list->next;
+ if (tmp->str)
+ GLOB_FREE(tmp->str);
+ GLOB_FREE(tmp);
}
+}
+
+static char *
+join_path(const char *path, size_t len, int dirsep, const char *name, size_t namlen)
+{
+ char *buf = GLOB_ALLOC_N(char, len+namlen+(dirsep?1:0)+1);
- return alloc;
+ if (!buf) return 0;
+ memcpy(buf, path, len);
+ if (dirsep) {
+ buf[len++] = '/';
+ }
+ memcpy(buf+len, name, namlen);
+ buf[len+namlen] = '\0';
+ return buf;
}
-static char*
-extract_elem(path)
- char *path;
+#ifdef HAVE_GETATTRLIST
+# if defined HAVE_FGETATTRLIST
+# define is_case_sensitive(dirp, path) is_case_sensitive(dirp)
+# else
+# define is_case_sensitive(dirp, path) is_case_sensitive(path)
+# endif
+static int
+is_case_sensitive(DIR *dirp, const char *path)
{
- char *pend;
+ struct {
+ u_int32_t length;
+ vol_capabilities_attr_t cap[1];
+ } __attribute__((aligned(4), packed)) attrbuf[1];
+ struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, 0, ATTR_VOL_INFO|ATTR_VOL_CAPABILITIES};
+ const vol_capabilities_attr_t *const cap = attrbuf[0].cap;
+ const int idx = VOL_CAPABILITIES_FORMAT;
+ const uint32_t mask = VOL_CAP_FMT_CASE_SENSITIVE;
+
+# if defined HAVE_FGETATTRLIST
+ if (fgetattrlist(dirfd(dirp), &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW))
+ return -1;
+# else
+ if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW))
+ return -1;
+# endif
+ if (!(cap->valid[idx] & mask))
+ return -1;
+ return (cap->capabilities[idx] & mask) != 0;
+}
- pend = strchr(path, '/');
- if (!pend) pend = path + strlen(path);
+static char *
+replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p, int flags, rb_pathtype_t *type)
+{
+ struct {
+ u_int32_t length;
+ attrreference_t ref[1];
+ fsobj_type_t objtype;
+ char path[MAXPATHLEN * 3];
+ } __attribute__((aligned(4), packed)) attrbuf[1];
+ struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, ATTR_CMN_NAME|ATTR_CMN_OBJTYPE};
+ const attrreference_t *const ar = attrbuf[0].ref;
+ const char *name;
+ long len;
+ char *tmp;
+ IF_NORMALIZE_UTF8PATH(VALUE utf8str = Qnil);
+
+ *type = path_noent;
+ if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW)) {
+ if (!to_be_ignored(errno))
+ sys_warning(path, enc);
+ return path;
+ }
+
+ switch (attrbuf[0].objtype) {
+ case VREG: *type = path_regular; break;
+ case VDIR: *type = path_directory; break;
+ case VLNK: *type = path_symlink; break;
+ default: *type = path_exist; break;
+ }
+ name = (char *)ar + ar->attr_dataoffset;
+ len = (long)ar->attr_length - 1;
+ if (name + len > (char *)attrbuf + sizeof(attrbuf))
+ return path;
+
+# if NORMALIZE_UTF8PATH
+ if (norm_p && has_nonascii(name, len)) {
+ if (!NIL_P(utf8str = rb_str_normalize_ospath(name, len))) {
+ RSTRING_GETMEM(utf8str, name, len);
+ }
+ }
+# endif
- return extract_path(path, pend);
+ tmp = GLOB_REALLOC(path, base + len + 1);
+ if (tmp) {
+ path = tmp;
+ memcpy(path + base, name, len);
+ path[base + len] = '\0';
+ }
+ IF_NORMALIZE_UTF8PATH(if (!NIL_P(utf8str)) rb_str_resize(utf8str, 0));
+ return path;
+}
+#elif defined _WIN32
+VALUE rb_w32_conv_from_wchar(const WCHAR *wstr, rb_encoding *enc);
+int rb_w32_reparse_symlink_p(const WCHAR *path);
+
+static char *
+replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p, int flags, rb_pathtype_t *type)
+{
+ char *plainname = path;
+ volatile VALUE tmp = 0;
+ WIN32_FIND_DATAW fd;
+ WIN32_FILE_ATTRIBUTE_DATA fa;
+ WCHAR *wplain;
+ HANDLE h = INVALID_HANDLE_VALUE;
+ long wlen;
+ int e = 0;
+ if (!fundamental_encoding_p(enc)) {
+ tmp = rb_enc_str_new_cstr(plainname, enc);
+ tmp = rb_str_encode_ospath(tmp);
+ plainname = RSTRING_PTR(tmp);
+ }
+ wplain = rb_w32_mbstr_to_wstr(CP_UTF8, plainname, -1, &wlen);
+ if (tmp) rb_str_resize(tmp, 0);
+ if (!wplain) return path;
+ if (GetFileAttributesExW(wplain, GetFileExInfoStandard, &fa)) {
+ h = FindFirstFileW(wplain, &fd);
+ e = rb_w32_map_errno(GetLastError());
+ }
+ if (fa.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
+ if (!rb_w32_reparse_symlink_p(wplain))
+ fa.dwFileAttributes &= ~FILE_ATTRIBUTE_REPARSE_POINT;
+ }
+ free(wplain);
+ if (h == INVALID_HANDLE_VALUE) {
+ *type = path_noent;
+ if (e && !to_be_ignored(e)) {
+ errno = e;
+ sys_warning(path, enc);
+ }
+ return path;
+ }
+ FindClose(h);
+ *type =
+ (fa.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) ? path_symlink :
+ (fa.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? path_directory :
+ path_regular;
+ if (tmp) {
+ char *buf;
+ tmp = rb_w32_conv_from_wchar(fd.cFileName, enc);
+ wlen = RSTRING_LEN(tmp);
+ buf = GLOB_REALLOC(path, base + wlen + 1);
+ if (buf) {
+ path = buf;
+ memcpy(path + base, RSTRING_PTR(tmp), wlen);
+ path[base + wlen] = 0;
+ }
+ rb_str_resize(tmp, 0);
+ }
+ else {
+ char *utf8filename;
+ wlen = WideCharToMultiByte(CP_UTF8, 0, fd.cFileName, -1, NULL, 0, NULL, NULL);
+ utf8filename = GLOB_REALLOC(0, wlen);
+ if (utf8filename) {
+ char *buf;
+ WideCharToMultiByte(CP_UTF8, 0, fd.cFileName, -1, utf8filename, wlen, NULL, NULL);
+ buf = GLOB_REALLOC(path, base + wlen + 1);
+ if (buf) {
+ path = buf;
+ memcpy(path + base, utf8filename, wlen);
+ path[base + wlen] = 0;
+ }
+ GLOB_FREE(utf8filename);
+ }
+ }
+ return path;
}
+#elif USE_NAME_ON_FS == USE_NAME_ON_FS_REAL_BASENAME
+# error not implemented
+#endif
#ifndef S_ISDIR
-# define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR)
+# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
-void
-rb_glob(path, func, arg)
- char *path;
- void (*func)();
+#ifndef S_ISLNK
+# ifndef S_IFLNK
+# define S_ISLNK(m) (0)
+# else
+# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+# endif
+#endif
+
+struct glob_args {
+ void (*func)(const char *, VALUE, void *);
+ const char *path;
+ const char *base;
+ size_t baselen;
+ VALUE value;
+ rb_encoding *enc;
+};
+
+#define glob_call_func(func, path, arg, enc) (*(func))((path), (arg), (void *)(enc))
+
+static VALUE
+glob_func_caller(VALUE val)
+{
+ struct glob_args *args = (struct glob_args *)val;
+
+ glob_call_func(args->func, args->path, args->value, args->enc);
+ return Qnil;
+}
+
+struct glob_error_args {
+ const char *path;
+ rb_encoding *enc;
+ int error;
+};
+
+static VALUE
+glob_func_warning(VALUE val)
+{
+ struct glob_error_args *arg = (struct glob_error_args *)val;
+ rb_syserr_enc_warning(arg->error, arg->enc, "%s", arg->path);
+ return Qnil;
+}
+
+#if 0
+static int
+rb_glob_warning(const char *path, VALUE a, const void *enc, int error)
+{
+ int status;
+ struct glob_error_args args;
+
+ args.path = path;
+ args.enc = enc;
+ args.error = error;
+ rb_protect(glob_func_warning, (VALUE)&args, &status);
+ return status;
+}
+#endif
+
+NORETURN(static VALUE glob_func_error(VALUE val));
+
+static VALUE
+glob_func_error(VALUE val)
+{
+ struct glob_error_args *arg = (struct glob_error_args *)val;
+ VALUE path = rb_enc_str_new_cstr(arg->path, arg->enc);
+ rb_syserr_fail_str(arg->error, path);
+ UNREACHABLE_RETURN(Qnil);
+}
+
+static int
+rb_glob_error(const char *path, VALUE a, const void *enc, int error)
+{
+ int status;
+ struct glob_error_args args;
+ VALUE (*errfunc)(VALUE) = glob_func_error;
+
+ switch (error) {
+ case EACCES:
+#ifdef ENOTCAPABLE
+ case ENOTCAPABLE:
+#endif
+ errfunc = glob_func_warning;
+ }
+ args.path = path;
+ args.enc = enc;
+ args.error = error;
+ rb_protect(errfunc, (VALUE)&args, &status);
+ return status;
+}
+
+typedef struct rb_dirent {
+ long d_namlen;
+ const char *d_name;
+#ifdef _WIN32
+ const char *d_altname;
+#endif