a82a2cc Ticket 49139 - Import libsds and nunc-stans for bundling

Authored and Committed by William Brown 7 years ago
221 files changed. 26674 lines added. 83 lines removed.
docs/job-safety.md
file added
+90
docs/nunc-stans-job-states.png
file added
+0
docs/slapi.doxy.in
file added
+2368
ldap/servers/slapd/dse.c
file modified
+8 -6
m4/doxygen.m4
file added
+16
m4/event.m4
file added
+51
m4/nunc-stans.m4
file removed
-76
src/libsds/README.md
file added
+30
src/libsds/external/liblfds710/GNUmakefile
file added
+15
src/libsds/external/liblfds710/build/gcc_gnumake_kbuild/Kbuild
file added
+86
src/libsds/external/liblfds710/build/msvc_gnumake/liblfds710.def
file added
+75
src/libsds/external/liblfds710/build/msvc_gnumake/makefile
file added
+113
src/libsds/external/liblfds710/build/wdk_7.1/dirs
file added
+3
src/libsds/external/liblfds710/build/wdk_7.1/driver_entry_renamed_to_avoid_compiler_warning.c
file added
+23
src/libsds/external/liblfds710/build/wdk_7.1/liblfds710.def
file added
+75
src/libsds/external/liblfds710/build/wdk_7.1/readme_before_win_kernel_build.txt
file added
+32
src/libsds/external/liblfds710/build/wdk_7.1/runme_before_win_kernel_dynamic_lib_build.bat
file added
+24
src/libsds/external/liblfds710/build/wdk_7.1/runme_before_win_kernel_static_lib_build.bat
file added
+23
src/libsds/external/liblfds710/build/wdk_7.1/sources.dynamic
file added
+66
src/libsds/external/liblfds710/build/wdk_7.1/sources.static
file added
+64
src/libsds/external/liblfds710/inc/liblfds710.h
file added
+33
src/libsds/external/liblfds710/inc/liblfds710/lfds710_btree_addonly_unbalanced.h
file added
+121
src/libsds/external/liblfds710/inc/liblfds710/lfds710_freelist.h
file added
+70
src/libsds/external/liblfds710/inc/liblfds710/lfds710_hash_addonly.h
file added
+136
src/libsds/external/liblfds710/inc/liblfds710/lfds710_list_addonly_singlylinked_ordered.h
file added
+87
src/libsds/external/liblfds710/inc/liblfds710/lfds710_list_addonly_singlylinked_unordered.h
file added
+90
src/libsds/external/liblfds710/inc/liblfds710/lfds710_misc.h
file added
+233
src/libsds/external/liblfds710/inc/liblfds710/lfds710_porting_abstraction_layer_compiler.h
file added
+446
src/libsds/external/liblfds710/inc/liblfds710/lfds710_porting_abstraction_layer_operating_system.h
file added
+86
src/libsds/external/liblfds710/inc/liblfds710/lfds710_porting_abstraction_layer_processor.h
file added
+459
src/libsds/external/liblfds710/inc/liblfds710/lfds710_prng.h
file added
+74
src/libsds/external/liblfds710/inc/liblfds710/lfds710_queue_bounded_manyproducer_manyconsumer.h
file added
+66
src/libsds/external/liblfds710/inc/liblfds710/lfds710_queue_bounded_singleproducer_singleconsumer.h
file added
+59
src/libsds/external/liblfds710/inc/liblfds710/lfds710_queue_unbounded_manyproducer_manyconsumer.h
file added
+62
src/libsds/external/liblfds710/inc/liblfds710/lfds710_ringbuffer.h
file added
+66
src/libsds/external/liblfds710/inc/liblfds710/lfds710_stack.h
file added
+58
src/libsds/external/liblfds710/obj/lfds710_btree_addonly_unbalanced_cleanup.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_btree_addonly_unbalanced_get.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_btree_addonly_unbalanced_init.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_btree_addonly_unbalanced_insert.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_btree_addonly_unbalanced_query.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_freelist_cleanup.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_freelist_init.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_freelist_pop.d
file added
+19
src/libsds/external/liblfds710/obj/lfds710_freelist_push.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_freelist_query.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_hash_addonly_cleanup.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_hash_addonly_get.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_hash_addonly_init.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_hash_addonly_insert.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_hash_addonly_iterate.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_hash_addonly_query.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_list_addonly_singlylinked_ordered_cleanup.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_list_addonly_singlylinked_ordered_get.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_list_addonly_singlylinked_ordered_init.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_list_addonly_singlylinked_ordered_insert.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_list_addonly_singlylinked_ordered_query.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_list_addonly_singlylinked_unordered_cleanup.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_list_addonly_singlylinked_unordered_get.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_list_addonly_singlylinked_unordered_init.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_list_addonly_singlylinked_unordered_insert.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_list_addonly_singlylinked_unordered_query.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_misc_globals.d
file added
+19
src/libsds/external/liblfds710/obj/lfds710_misc_internal_backoff_init.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_misc_query.d
file added
+19
src/libsds/external/liblfds710/obj/lfds710_prng_init.d
file added
+19
src/libsds/external/liblfds710/obj/lfds710_queue_bounded_manyproducer_manyconsumer_cleanup.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_bounded_manyproducer_manyconsumer_dequeue.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_bounded_manyproducer_manyconsumer_enqueue.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_bounded_manyproducer_manyconsumer_init.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_bounded_manyproducer_manyconsumer_query.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_bounded_singleproducer_singleconsumer_cleanup.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_bounded_singleproducer_singleconsumer_dequeue.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_bounded_singleproducer_singleconsumer_enqueue.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_bounded_singleproducer_singleconsumer_init.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_bounded_singleproducer_singleconsumer_query.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_unbounded_manyproducer_manyconsumer_cleanup.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_unbounded_manyproducer_manyconsumer_dequeue.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_unbounded_manyproducer_manyconsumer_enqueue.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_unbounded_manyproducer_manyconsumer_init.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_queue_unbounded_manyproducer_manyconsumer_query.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_ringbuffer_cleanup.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_ringbuffer_init.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_ringbuffer_query.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_ringbuffer_read.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_ringbuffer_write.d
file added
+20
src/libsds/external/liblfds710/obj/lfds710_stack_cleanup.d
file added
+19
src/libsds/external/liblfds710/obj/lfds710_stack_init.d
file added
+19
src/libsds/external/liblfds710/obj/lfds710_stack_pop.d
file added
+19
src/libsds/external/liblfds710/obj/lfds710_stack_push.d
file added
+19
src/libsds/external/liblfds710/obj/lfds710_stack_query.d
file added
+19
src/libsds/external/liblfds710/src/lfds710_btree_addonly_unbalanced/lfds710_btree_addonly_unbalanced_cleanup.c
file added
+117
src/libsds/external/liblfds710/src/lfds710_btree_addonly_unbalanced/lfds710_btree_addonly_unbalanced_get.c
file added
+482
src/libsds/external/liblfds710/src/lfds710_btree_addonly_unbalanced/lfds710_btree_addonly_unbalanced_init.c
file added
+33
src/libsds/external/liblfds710/src/lfds710_btree_addonly_unbalanced/lfds710_btree_addonly_unbalanced_insert.c
file added
+158
src/libsds/external/liblfds710/src/lfds710_btree_addonly_unbalanced/lfds710_btree_addonly_unbalanced_internal.h
file added
+23
src/libsds/external/liblfds710/src/lfds710_btree_addonly_unbalanced/lfds710_btree_addonly_unbalanced_query.c
file added
+126
src/libsds/external/liblfds710/src/lfds710_freelist/lfds710_freelist_cleanup.c
file added
+36
src/libsds/external/liblfds710/src/lfds710_freelist/lfds710_freelist_init.c
file added
+48
src/libsds/external/liblfds710/src/lfds710_freelist/lfds710_freelist_internal.h
file added
+7
src/libsds/external/liblfds710/src/lfds710_freelist/lfds710_freelist_pop.c
file added
+89
src/libsds/external/liblfds710/src/lfds710_freelist/lfds710_freelist_push.c
file added
+123
src/libsds/external/liblfds710/src/lfds710_freelist/lfds710_freelist_query.c
file added
+152
src/libsds/external/liblfds710/src/lfds710_hash_addonly/lfds710_hash_addonly_cleanup.c
file added
+63
src/libsds/external/liblfds710/src/lfds710_hash_addonly/lfds710_hash_addonly_get.c
file added
+47
src/libsds/external/liblfds710/src/lfds710_hash_addonly/lfds710_hash_addonly_init.c
file added
+54
src/libsds/external/liblfds710/src/lfds710_hash_addonly/lfds710_hash_addonly_insert.c
file added
+60
src/libsds/external/liblfds710/src/lfds710_hash_addonly/lfds710_hash_addonly_internal.h
file added
+5
src/libsds/external/liblfds710/src/lfds710_hash_addonly/lfds710_hash_addonly_iterate.c
file added
+60
src/libsds/external/liblfds710/src/lfds710_hash_addonly/lfds710_hash_addonly_query.c
file added
+119
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_ordered/lfds710_list_addonly_singlylinked_ordered_cleanup.c
file added
+37
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_ordered/lfds710_list_addonly_singlylinked_ordered_get.c
file added
+29
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_ordered/lfds710_list_addonly_singlylinked_ordered_init.c
file added
+38
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_ordered/lfds710_list_addonly_singlylinked_ordered_insert.c
file added
+136
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_ordered/lfds710_list_addonly_singlylinked_ordered_internal.h
file added
+5
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_ordered/lfds710_list_addonly_singlylinked_ordered_query.c
file added
+128
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_unordered/lfds710_list_addonly_singlylinked_unordered_cleanup.c
file added
+37
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_unordered/lfds710_list_addonly_singlylinked_unordered_get.c
file added
+33
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_unordered/lfds710_list_addonly_singlylinked_unordered_init.c
file added
+35
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_unordered/lfds710_list_addonly_singlylinked_unordered_insert.c
file added
+193
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_unordered/lfds710_list_addonly_singlylinked_unordered_internal.h
file added
+5
src/libsds/external/liblfds710/src/lfds710_list_addonly_singlylinked_unordered/lfds710_list_addonly_singlylinked_unordered_query.c
file added
+128
src/libsds/external/liblfds710/src/lfds710_misc/lfds710_misc_globals.c
file added
+14
src/libsds/external/liblfds710/src/lfds710_misc/lfds710_misc_globals.gcno
file added
+1
src/libsds/external/liblfds710/src/lfds710_misc/lfds710_misc_internal.h
file added
+5
src/libsds/external/liblfds710/src/lfds710_misc/lfds710_misc_internal_backoff_init.c
file added
+22
src/libsds/external/liblfds710/src/lfds710_misc/lfds710_misc_internal_backoff_init.gcno
file added
+0
src/libsds/external/liblfds710/src/lfds710_misc/lfds710_misc_query.c
file added
+38
src/libsds/external/liblfds710/src/lfds710_prng/lfds710_prng_init.c
file added
+42
src/libsds/external/liblfds710/src/lfds710_prng/lfds710_prng_internal.h
file added
+5
src/libsds/external/liblfds710/src/lfds710_queue_bounded_manyproducer_manyconsumer/lfds710_queue_bounded_manyproducer_manyconsumer_cleanup.c
file added
+27
src/libsds/external/liblfds710/src/lfds710_queue_bounded_manyproducer_manyconsumer/lfds710_queue_bounded_manyproducer_manyconsumer_dequeue.c
file added
+86
src/libsds/external/liblfds710/src/lfds710_queue_bounded_manyproducer_manyconsumer/lfds710_queue_bounded_manyproducer_manyconsumer_enqueue.c
file added
+84
src/libsds/external/liblfds710/src/lfds710_queue_bounded_manyproducer_manyconsumer/lfds710_queue_bounded_manyproducer_manyconsumer_init.c
file added
+42
src/libsds/external/liblfds710/src/lfds710_queue_bounded_manyproducer_manyconsumer/lfds710_queue_bounded_manyproducer_manyconsumer_internal.h
file added
+5
src/libsds/external/liblfds710/src/lfds710_queue_bounded_manyproducer_manyconsumer/lfds710_queue_bounded_manyproducer_manyconsumer_query.c
file added
+129
src/libsds/external/liblfds710/src/lfds710_queue_bounded_singleproducer_singleconsumer/lfds710_queue_bounded_singleproducer_singleconsumer_cleanup.c
file added
+30
src/libsds/external/liblfds710/src/lfds710_queue_bounded_singleproducer_singleconsumer/lfds710_queue_bounded_singleproducer_singleconsumer_dequeue.c
file added
+41
src/libsds/external/liblfds710/src/lfds710_queue_bounded_singleproducer_singleconsumer/lfds710_queue_bounded_singleproducer_singleconsumer_enqueue.c
file added
+38
src/libsds/external/liblfds710/src/lfds710_queue_bounded_singleproducer_singleconsumer/lfds710_queue_bounded_singleproducer_singleconsumer_init.c
file added
+63
src/libsds/external/liblfds710/src/lfds710_queue_bounded_singleproducer_singleconsumer/lfds710_queue_bounded_singleproducer_singleconsumer_internal.h
file added
+5
src/libsds/external/liblfds710/src/lfds710_queue_bounded_singleproducer_singleconsumer/lfds710_queue_bounded_singleproducer_singleconsumer_query.c
file added
+87
src/libsds/external/liblfds710/src/lfds710_queue_unbounded_manyproducer_manyconsumer/lfds710_queue_unbounded_manyproducer_manyconsumer_cleanup.c
file added
+48
src/libsds/external/liblfds710/src/lfds710_queue_unbounded_manyproducer_manyconsumer/lfds710_queue_unbounded_manyproducer_manyconsumer_cleanup.gcno
file added
+0
src/libsds/external/liblfds710/src/lfds710_queue_unbounded_manyproducer_manyconsumer/lfds710_queue_unbounded_manyproducer_manyconsumer_dequeue.c
file added
+128
src/libsds/external/liblfds710/src/lfds710_queue_unbounded_manyproducer_manyconsumer/lfds710_queue_unbounded_manyproducer_manyconsumer_dequeue.gcno
file added
+0
src/libsds/external/liblfds710/src/lfds710_queue_unbounded_manyproducer_manyconsumer/lfds710_queue_unbounded_manyproducer_manyconsumer_enqueue.c
file added
+96
src/libsds/external/liblfds710/src/lfds710_queue_unbounded_manyproducer_manyconsumer/lfds710_queue_unbounded_manyproducer_manyconsumer_enqueue.gcno
file added
+0
src/libsds/external/liblfds710/src/lfds710_queue_unbounded_manyproducer_manyconsumer/lfds710_queue_unbounded_manyproducer_manyconsumer_init.c
file added
+50
src/libsds/external/liblfds710/src/lfds710_queue_unbounded_manyproducer_manyconsumer/lfds710_queue_unbounded_manyproducer_manyconsumer_init.gcno
file added
+0
src/libsds/external/liblfds710/src/lfds710_queue_unbounded_manyproducer_manyconsumer/lfds710_queue_unbounded_manyproducer_manyconsumer_internal.h
file added
+14
src/libsds/external/liblfds710/src/lfds710_queue_unbounded_manyproducer_manyconsumer/lfds710_queue_unbounded_manyproducer_manyconsumer_query.c
file added
+133
src/libsds/external/liblfds710/src/lfds710_queue_unbounded_manyproducer_manyconsumer/lfds710_queue_unbounded_manyproducer_manyconsumer_query.gcno
file added
+0
src/libsds/external/liblfds710/src/lfds710_ringbuffer/lfds710_ringbuffer_cleanup.c
file added
+92
src/libsds/external/liblfds710/src/lfds710_ringbuffer/lfds710_ringbuffer_init.c
file added
+42
src/libsds/external/liblfds710/src/lfds710_ringbuffer/lfds710_ringbuffer_internal.h
file added
+5
src/libsds/external/liblfds710/src/lfds710_ringbuffer/lfds710_ringbuffer_query.c
file added
+81
src/libsds/external/liblfds710/src/lfds710_ringbuffer/lfds710_ringbuffer_read.c
file added
+43
src/libsds/external/liblfds710/src/lfds710_ringbuffer/lfds710_ringbuffer_write.c
file added
+77
src/libsds/external/liblfds710/src/lfds710_stack/lfds710_stack_cleanup.c
file added
+36
src/libsds/external/liblfds710/src/lfds710_stack/lfds710_stack_init.c
file added
+31
src/libsds/external/liblfds710/src/lfds710_stack/lfds710_stack_internal.h
file added
+5
src/libsds/external/liblfds710/src/lfds710_stack/lfds710_stack_pop.c
file added
+57
src/libsds/external/liblfds710/src/lfds710_stack/lfds710_stack_push.c
file added
+47
src/libsds/external/liblfds710/src/lfds710_stack/lfds710_stack_query.c
file added
+130
src/libsds/external/liblfds710/src/liblfds710_internal.h
file added
+102
src/libsds/include/sds.h
file added
+1328
src/libsds/sds/bpt/bpt.c
file added
+386
src/libsds/sds/bpt/bpt.h
file added
+91
src/libsds/sds/bpt/common.c
file added
+788
src/libsds/sds/bpt/list.c
file added
+54
src/libsds/sds/bpt/map.c
file added
+361
src/libsds/sds/bpt/search.c
file added
+128
src/libsds/sds/bpt/set.c
file added
+272
src/libsds/sds/bpt/verify.c
file added
+72
src/libsds/sds/bpt_cow/atomic.c
file added
+97
src/libsds/sds/bpt_cow/bpt_cow.c
file added
+582
src/libsds/sds/bpt_cow/bpt_cow.h
file added
+47
src/libsds/sds/bpt_cow/delete.c
file added
+94
src/libsds/sds/bpt_cow/insert.c
file added
+155
src/libsds/sds/bpt_cow/node.c
file added
+252
src/libsds/sds/bpt_cow/search.c
file added
+80
src/libsds/sds/bpt_cow/txn.c
file added
+471
src/libsds/sds/bpt_cow/verify.c
file added
+228
src/libsds/sds/core/crc32c.c
file added
+151
src/libsds/sds/core/utils.c
file added
+124
src/libsds/sds/queue/lqueue.c
file added
+238
src/libsds/sds/queue/queue.c
file added
+120
src/libsds/sds/queue/queue.h
file added
+13
src/libsds/sds/queue/tqueue.c
file added
+64
src/libsds/sds/sds_internal.h
file added
+33
src/libsds/test/benchmark.c
file added
+591
src/libsds/test/benchmark.h
file added
+21
src/libsds/test/benchmark_par.c
file added
+644
src/libsds/test/benchmark_par.h
file added
+73
src/libsds/test/benchmark_parwrap.c
file added
+311
src/libsds/test/test_fixtures.c
file added
+201
src/libsds/test/test_sds.c
file added
+22
src/libsds/test/test_sds.h
file added
+262
src/libsds/test/test_sds_bpt.c
file added
+983
src/libsds/test/test_sds_cow.c
file added
+613
src/libsds/test/test_sds_lqueue.c
file added
+210
src/libsds/test/test_sds_queue.c
file added
+171
src/libsds/test/test_sds_set.c
file added
+372
src/libsds/test/test_sds_tqueue.c
file added
+197
src/nunc-stans/README.md
file added
+11
src/nunc-stans/include/nunc-stans.h
file added
+883
src/nunc-stans/ns/ns_event_fw.h
file added
+177
src/nunc-stans/ns/ns_event_fw_event.c
file added
+343
src/nunc-stans/ns/ns_event_fw_tevent.c
file added
+332
src/nunc-stans/ns/ns_private.h
file added
+106
src/nunc-stans/ns/ns_thrpool.c
file added
+1584
src/nunc-stans/ns/ns_tls.c
file added
+291
src/nunc-stans/ns/ns_tls.h
file added
+49
src/nunc-stans/test/test_nuncstans.c
file added
+418
src/nunc-stans/test/test_nuncstans_stress.c
file added
+558
src/pkgconfig/dirsrv.pc.in
file added
+7
src/pkgconfig/libsds.pc.in
file added
+12
src/pkgconfig/nunc-stans.pc.in
file added
+11
test/libslapd/operation/v3_compat.c
file modified
+3 -1
test/libslapd/pblock/v3_compat.c
file modified
+3 -0
    Ticket 49139 - Import libsds and nunc-stans for bundling
    
    Fix Description:  In order to improve our build, we are importing
    our libraries to our source tree. This import includes the datastructure
    and nunc-stans library that we use. These are imported from:
    
    ssh://git@pagure.io/nunc-stans.git
    commit 4998c860699983814f4b7a2cb7a0a4b12880564a
    
    ssh://git@pagure.io/libsds.git
    commit 9afd57c07657bb8ee63f7dabc587189ff94b7f06
    
    https://pagure.io/389-ds-base/issue/49139
    
    Author: wibrown
    
    Review by: mreynolds, vashirov (Thanks!)
    
        
file added
+90
empty file added
file added
+2368
file modified
+8 -6
file added
+16
file added
+51
file removed
-76
file added
+30