{B:	rooto:"YARD::CodeObjects::RootObject:@childrenIC:&YARD::CodeObjects::CodeObjectList[
o:#YARD::CodeObjects::ClassObject;IC;[
o:&YARD::CodeObjects::ConstantObject:@files[[I"lib/colors.rb:ETi:@current_file_has_commentsF:
@name:COLORS:@source_type:	ruby:@visibility:public:
@tags[�:@docstrings{�:@docstringIC:YARD::Docstring"�;T;[�:@ref_tags[�:	@allI"�;T:@unresolved_reference0:@object@
:@namespace@:
@pathI"Colors::COLORS;F:@sourceI"ZCOLORS = { red: 31, green: 32, yellow: 33, blue: 34, purple: 35, cyan: 36, white: 0 };T:@valueI"Q{ red: 31, green: 32, yellow: 33, blue: 34, purple: 35, cyan: 36, white: 0 };T:
@dynamicTo:$YARD::CodeObjects::MethodObject:@module_functionF:@scope:
class;;;I"Colors.enabled?;F:@parameters[�;[[@
i
;
F;:
enabled?;;;[�;{�;IC;"�;T;[o:YARD::Tags::Tag
:@tag_nameI"return;F:
@text@;0:@types[I"Boolean;T;@;[�;@;0;@:@ref_tag_recurse_counti�;@:@explicitT;I" def enabled?
  @enabled
end;T:@signatureI"def enabled?;T; To;!;"F;#;$;;;I"Colors.enabled=;F;%[[I"
value;T0;[[@
i;
F;:
enabled=;;;[�;{�;IC;"�;T;[�;[�;@;0;@';+i�;@;,T;I"/def enabled=(value)
  @enabled = value
end;T;-I"def enabled=(value);T; To;!;"F;#;$;;;I"Colors.color;F;%[[I"num;T0[I"string;T0;[[@
i;
F;:
color;;;[�;{�;IC;"�;T;[�;[�;@;0;@5;+i�;@;,T;I"Wdef color(num, string)
  @enabled ? "#{code(num)}#{string}#{code(0)}" : string
end;T;-I"def color(num, string);T; To;!;"F;#;$;;;I"Colors.code;F;%[[I"num;T0;[[@
i;
F;:	code;;;[�;{�;IC;"�;T;[�;[�;@;0;@E;+i�;@;,T;I"%def code(num)
  "\e[#{num}m"
end;T;-I"def code(num);T; T:@owner@:@class_mixinsIC;[�;1@:@instance_mixinsIC;[�;1@:@attributesIC:SymbolHash{;$IC;5{�:@symbolize_valueT:
instanceIC;5{�;6T;6T:
@aliases{�:@groups[�;[[@
i;
F;:Colors;;;;;[�;{�;IC;"�;T;[�;[�;@;0;@;+i�;@;I"Colors;F:@superclasso:YARD::CodeObjects::Proxy:@orignamespace0:@origname0:
@imethod0;:Object;@:	@obj0:
@type;$o:$YARD::CodeObjects::ModuleObject;IC;[o;!;"F;#;7;;;I"Debugging#let_vars_hash;F;%[�;[[I"lib/binding.rb;Ti;
F;:let_vars_hash;;;[�;{�;IC;"�;T;[�;[�;@;0;@e;+i�;@c;,T;I"�def let_vars_hash
  memoized_values = self.receiver.instance_variable_get(:@__memoized)&.instance_variable_get(:@memoized)
  memoized_values && !memoized_values.empty? ? memoized_values.dup : {}
end;T;-I"def let_vars_hash;T; T;1@c;2IC;[�;1@c;3IC;[�;1@c;4IC;5{;$IC;5{�;6T;7IC;5{�;6T;6T;8{�;9[�;[[@ji;
F;:Debugging;;;;;[�;{�;IC;"�;T;[�;[�;@;0;@c;+i�;@;I"Debugging;Fo;	;IC;[�;1@|;2IC;[�;1@|;3IC;[o;<;=0;>0;?0;;E;@;A@c;B:module;1@|;4IC;5{;$IC;5{�;6T;7IC;5{�;6T;6T;8{�;9[�;[[@ji
;
F;:Binding;;;;;[�;{�;IC;"�;T;[�;[�;@;0;@|;+i�;@;I"Binding;F;;o;<;=0;>0;?0;;@;@;A0;B;$o;	;IC;[3o;!;"F;#;$;;;I"EnhancedErrors.enabled;F;%[�;[[I"lib/enhanced_errors.rb;Ti;
T;:enabled;;;[�;{�;IC;"1Indicates whether EnhancedErrors is enabled.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"Boolean;T;@�;[�;I"DIndicates whether EnhancedErrors is enabled.

@return [Boolean];T;0;@�:@hash_flagF:@line_rangeo:
Range:	exclF:
begini:endi;@�;I"def enabled
  @enabled
end;T;-I"def enabled;T; To;!;"F;#;$;;;I"EnhancedErrors.enabled=;F;%[[I"
value;T0;[[@�i;
T;;.;;;[�;{�;IC;"1Indicates whether EnhancedErrors is enabled.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"Boolean;T;@�;[�;@�;0;@�;IF;J@�;@�;I"/def enabled=(value)
  @enabled = value
end;T;-I"def enabled=(value);T; To;!;"F;#;$;;;I"EnhancedErrors.trace;F;%[�;[[@�i;
T;:
trace;;;[�;{�;IC;"7The TracePoint object used for tracing exceptions.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"TracePoint;TI"nil;T;@�;[�;I"RThe TracePoint object used for tracing exceptions.

@return [TracePoint, nil];T;0;@�;IF;Jo;K;LF;Mi;Ni;@�;I"def trace
  @trace
end;T;-I"def trace;T; To;!;"F;#;$;;;I"EnhancedErrors.trace=;F;%[[@�0;[[@�i;
T;:trace=;;;[�;{�;IC;"7The TracePoint object used for tracing exceptions.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"TracePoint;TI"nil;T;@�;[�;@�;0;@�;IF;J@�;@�;I"+def trace=(value)
  @trace = value
end;T;-I"def trace=(value);T; To;!;"F;#;$;;;I" EnhancedErrors.config_block;F;%[�;[[@�i;
T;:config_block;;;[�;{�;IC;"9The configuration block provided during enhancement.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"	Proc;TI"nil;T;@�;[�;I"NThe configuration block provided during enhancement.

@return [Proc, nil];T;0;@�;IF;Jo;K;LF;Mi;Ni;@�;I")def config_block
  @config_block
end;T;-I"def config_block;T; To;!;"F;#;$;;;I"!EnhancedErrors.config_block=;F;%[[@�0;[[@�i;
T;:config_block=;;;[�;{�;IC;"9The configuration block provided during enhancement.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"	Proc;TI"nil;T;@�;[�;@�;0;@�;IF;J@�;@�;I"9def config_block=(value)
  @config_block = value
end;T;-I"def config_block=(value);T; To;!;"F;#;$;;;I"EnhancedErrors.max_length;F;%[[I"
value;TI"nil;T;[[@�i$[@�ih;
T;:max_length;;;[�;{�;IC;"IGets or sets the maximum length for the formatted exception message.;T;[o;'
;(I"
param;F;)I"EThe desired maximum length. If `nil`, returns the current value.;T;I"
value;T;*[I"Integer;TI"nil;T;@o;'
;(I"return;F;)I"2The maximum length for the formatted message.;T;0;*[I"Integer;T;@;[�;I"�Gets or sets the maximum length for the formatted exception message.

@param value [Integer, nil] The desired maximum length. If `nil`, returns the current value.
@return [Integer] The maximum length for the formatted message.;T;0;@;+i�;IF;Jo;K;LF;Mid;Nig;@�;,T;I"%def max_length
  @max_length
end;T;-I"def max_length;T; To;!;"F;#;$;;;I"EnhancedErrors.max_length=;F;%[[@�0;[[@�i$;
T;:max_length=;;;[�;{�;IC;";The maximum length of the formatted exception message.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"Integer;T;@$;[�;I"NThe maximum length of the formatted exception message.

@return [Integer];T;0;@$;IF;Jo;K;LF;Mi!;Ni#;@�;I"5def max_length=(value)
  @max_length = value
end;T;-I"def max_length=(value);T; To;!;"F;#;$;;;I"#EnhancedErrors.on_capture_hook;F;%[�;[[@�i);
T;:on_capture_hook;;;[�;{�;IC;"5Hook to modify binding information upon capture.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"	Proc;TI"nil;T;@8;[�;I"JHook to modify binding information upon capture.

@return [Proc, nil];T;0;@8;IF;Jo;K;LF;Mi&;Ni(;@�;I"/def on_capture_hook
  @on_capture_hook
end;T;-I"def on_capture_hook;T; To;!;"F;#;$;;;I"$EnhancedErrors.on_capture_hook=;F;%[[@�0;[[@�i);
T;:on_capture_hook=;;;[�;{�;IC;"5Hook to modify binding information upon capture.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"	Proc;TI"nil;T;@L;[�;@H;0;@L;IF;J@I;@�;I"?def on_capture_hook=(value)
  @on_capture_hook = value
end;T;-I" def on_capture_hook=(value);T; To;!;"F;#;$;;;I")EnhancedErrors.capture_let_variables;F;%[[I"
value;TI"nil;T;[[@�i.[@�iu;
T;:capture_let_variables;;;[�;{�;IC;";Gets or sets whether to capture RSpec `let` variables.;T;[o;'
;(I"
param;F;)I"<The desired state. If `nil`, returns the current value.;T;I"
value;T;*[I"Boolean;TI"nil;T;@_o;'
;(I"return;F;)I"6Whether RSpec `let` variables are being captured.;T;0;*[I"Boolean;T;@_;[�;I"�Gets or sets whether to capture RSpec `let` variables.

@param value [Boolean, nil] The desired state. If `nil`, returns the current value.
@return [Boolean] Whether RSpec `let` variables are being captured.;T;0;@_;+i�;IF;Jo;K;LF;Miq;Nit;@�;,T;I";def capture_let_variables
  @capture_let_variables
end;T;-I"def capture_let_variables;T; To;!;"F;#;$;;;I"*EnhancedErrors.capture_let_variables=;F;%[[@�0;[[@�i.;
T;:capture_let_variables=;;;[�;{�;IC;";Determines whether RSpec `let` variables are captured.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"Boolean;T;@};[�;I"NDetermines whether RSpec `let` variables are captured.

@return [Boolean];T;0;@};IF;Jo;K;LF;Mi+;Ni-;@�;I"Kdef capture_let_variables=(value)
  @capture_let_variables = value
end;T;-I"&def capture_let_variables=(value);T; To;!;"F;#;$;;;I"(EnhancedErrors.eligible_for_capture;F;%[[I"&block;T0;[[@�i3[@�i�;
T;:eligible_for_capture;;;[�;{�;IC;"ISets or retrieves the eligibility criteria for capturing exceptions.;T;[o;'
;(I"yieldparam;F;)I"The exception to evaluate.;T;I"exception;T;*[I"Exception;T;@�o;'
;(I"return;F;)I""The current eligibility proc.;T;0;*[I"	Proc;T;@�;[�;I"�Sets or retrieves the eligibility criteria for capturing exceptions.

@yieldparam exception [Exception] The exception to evaluate.
@return [Proc] The current eligibility proc.;T;0;@�;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"9def eligible_for_capture
  @eligible_for_capture
end;T;-I"def eligible_for_capture;T; To;!;"F;#;$;;;I")EnhancedErrors.eligible_for_capture=;F;%[[@�0;[[@�i3;
T;:eligible_for_capture=;;;[�;{�;IC;"DA proc that determines if an exception is eligible for capture.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"	Proc;TI"nil;T;@�;[�;I"YA proc that determines if an exception is eligible for capture.

@return [Proc, nil];T;0;@�;IF;Jo;K;LF;Mi0;Ni2;@�;I"Idef eligible_for_capture=(value)
  @eligible_for_capture = value
end;T;-I"%def eligible_for_capture=(value);T; To;!;"F;#;$;;;I"EnhancedErrors.skip_list;F;%[�;[[@�i8[@�i|;
T;:skip_list;;;[�;{�;IC;"]Retrieves the current skip list, initializing it with default values if not already set.;T;[o;'
;(I"return;F;)I"The current skip list.;T;0;*[I"Set<Symbol>;T;@�;[�;I"�Retrieves the current skip list, initializing it with default values if not already set.

@return [Set<Symbol>] The current skip list.;T;0;@�;+i�;IF;Jo;K;LF;Mi~;Ni{;@�;,T;I"#def skip_list
  @skip_list
end;T;-I"def skip_list;T; To;!;"F;#;$;;;I"EnhancedErrors.skip_list=;F;%[[@�0;[[@�i8;
T;:skip_list=;;;[�;{�;IC;"AA set of variable names to exclude from binding information.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"Set<Symbol>;T;@�;[�;I"XA set of variable names to exclude from binding information.

@return [Set<Symbol>];T;0;@�;IF;Jo;K;LF;Mi5;Ni7;@�;I"3def skip_list=(value)
  @skip_list = value
end;T;-I"def skip_list=(value);T; To;
;[[@�i=;
T;:GEMS_REGEX;;;;;[�;{�;IC;".Regular expression to identify gem paths.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"Regexp;T;@�;[�;I"@Regular expression to identify gem paths.

@return [Regexp];T;0;@�;IF;Jo;K;LF;Mi:;Ni<;@�;I"EnhancedErrors::GEMS_REGEX;F;I"&GEMS_REGEX = %r{[\/\\]gems[\/\\]};T;I"%r{[\/\\]gems[\/\\]};T; To;
;[[@�iB;
T;:DEFAULT_MAX_LENGTH;;;;;[�;{�;IC;"AThe default maximum length for formatted exception messages.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"Integer;T;@�;[�;I"TThe default maximum length for formatted exception messages.

@return [Integer];T;0;@�;IF;Jo;K;LF;Mi?;NiA;@�;I"'EnhancedErrors::DEFAULT_MAX_LENGTH;F;I"DEFAULT_MAX_LENGTH = 2500;T;I"	2500;T; To;
;[[@�iG;
T;:RSPEC_SKIP_LIST;;;;;[�;{�;IC;"8A set of RSpec-specific instance variables to skip.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"Set<Symbol>;T;@;[�;I"OA set of RSpec-specific instance variables to skip.

@return [Set<Symbol>];T;0;@;IF;Jo;K;LF;MiD;NiF;@�;I"$EnhancedErrors::RSPEC_SKIP_LIST;F;I"�RSPEC_SKIP_LIST = Set.new([
  :@fixture_cache,
  :@fixture_cache_key,
  :@fixture_connection_pools,
  :@connection_subscriber,
  :@saved_pool_configs,
  :@loaded_fixtures,
  :@matcher_definitions,
]);T;I"�Set.new([
  :@fixture_cache,
  :@fixture_cache_key,
  :@fixture_connection_pools,
  :@connection_subscriber,
  :@saved_pool_configs,
  :@loaded_fixtures,
  :@matcher_definitions,
]);T; To;
;[[@�iT;
T;:RAILS_SKIP_LIST;;;;;[�;{�;IC;"8A set of Rails-specific instance variables to skip.
;T;[o;'
;(I"return;F;)I"�;T;0;*[I"Set<Symbol>;T;@ ;[�;I"OA set of Rails-specific instance variables to skip.

@return [Set<Symbol>];T;0;@ ;IF;Jo;K;LF;MiQ;NiS;@�;I"$EnhancedErrors::RAILS_SKIP_LIST;F;I"ARAILS_SKIP_LIST = Set.new([
  :@new_record,
  :@attributes,
  :@association_cache,
  :@readonly,
  :@previously_new_record,
  :@destroyed,
  :@marked_for_destruction,
  :@destroyed_by_association,
  :@primary_key,
  :@strict_loading,
  :@strict_loading_mode,
  :@mutations_before_last_save,
  :@mutations_from_database
]);T;I"/Set.new([
  :@new_record,
  :@attributes,
  :@association_cache,
  :@readonly,
  :@previously_new_record,
  :@destroyed,
  :@marked_for_destruction,
  :@destroyed_by_association,
  :@primary_key,
  :@strict_loading,
  :@strict_loading_mode,
  :@mutations_before_last_save,
  :@mutations_from_database
]);T; To;!;"F;#;$;;;I"%EnhancedErrors.default_skip_list;F;%[�;[[@�i�;
T;:default_skip_list;;;[�;{�;IC;"UInitializes the default skip list by merging Rails and RSpec specific variables.;T;[o;'
;(I"return;F;)I"The default skip list.;T;0;*[I"Set<Symbol>;T;@2;[�;I"~Initializes the default skip list by merging Rails and RSpec specific variables.

@return [Set<Symbol>] The default skip list.;T;0;@2;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"Pdef default_skip_list
  Set.new(RAILS_SKIP_LIST).merge(RSPEC_SKIP_LIST)
end;T;-I"def default_skip_list;T; To;!;"F;#;$;;;I"$EnhancedErrors.add_to_skip_list;F;%[[I"
*vars;T0;[[@�i�;
T;:add_to_skip_list;;;[�;{�;IC;"NAdds variables to the skip list to exclude them from binding information.;T;[o;'
;(I"
param;F;)I"0The variable names to add to the skip list.;T;I"	vars;T;*[I"Symbol;T;@Eo;'
;(I"return;F;)I"The updated skip list.;T;0;*[I"Set<Symbol>;T;@E;[�;I"�Adds variables to the skip list to exclude them from binding information.

@param vars [Symbol] The variable names to add to the skip list.
@return [Set<Symbol>] The updated skip list.;T;0;@E;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"<def add_to_skip_list(*vars)
  skip_list.merge(vars)
end;T;-I" def add_to_skip_list(*vars);T; To;!;"F;#;$;;;I"EnhancedErrors.enhance!;F;%[	[I"
enabled:;TI"	true;T[I"debug:;TI"
false;T[I"**options;T0[I"&block;T0;[[@�i�;
T;:
enhance!;;;[�;{�;IC;"UEnhances the exception handling by setting up tracing and configuration options.;T;[
o;'
;(I"
param;F;)I"&Whether to enable EnhancedErrors.;T;I"enabled;T;*[I"Boolean;T;@`o;'
;(I"
param;F;)I""Whether to enable debug mode.;T;I"
debug;T;*[I"Boolean;T;@`o;'
;(I"
param;F;)I"&Additional configuration options.;T;I"options;T;*[I"	Hash;T;@`o;'
;(I"
yield;F;)I"*A block for additional configuration.;T;0;*[I"	void;T;@`o;'
;(I"return;F;)I"�;T;0;*[I"	void;T;@`;[�;I"<Enhances the exception handling by setting up tracing and configuration options.

@param enabled [Boolean] Whether to enable EnhancedErrors.
@param debug [Boolean] Whether to enable debug mode.
@param options [Hash] Additional configuration options.
@yield [void] A block for additional configuration.
@return [void];T;0;@`;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"�def enhance!(enabled: true, debug: false, **options, &block)
  @output_format = nil
  @eligible_for_capture = nil
  @original_global_variables = nil
  if enabled == false
    @original_global_variables = nil
    @enabled = false
    @trace.disable if @trace
  else
    @enabled = true
    @debug = debug
    @original_global_variables = global_variables

    options.each do |key, value|
      setter_method = "#{key}="
      if respond_to?(setter_method)
        send(setter_method, value)
      elsif respond_to?(key)
        send(key, value)
      else
        # Ignore unknown options or handle as needed
      end
    end

    @config_block = block_given? ? block : nil
    instance_eval(&@config_block) if @config_block

    start_tracing
  end
end;T;-I"Adef enhance!(enabled: true, debug: false, **options, &block);T; To;!;"F;#;$;;;I"EnhancedErrors.on_capture;F;%[[I"&block;T0;[[@�i�;
T;:on_capture;;;[�;{�;IC;"KSets or retrieves the hook to modify binding information upon capture.;T;[o;'
;(I"yieldparam;F;)I"&The binding information captured.;T;I"binding_info;T;*[I"	Hash;T;@�o;'
;(I"return;F;)I"!The current on_capture hook.;T;0;*[I"	Proc;T;@�;[�;I"�Sets or retrieves the hook to modify binding information upon capture.

@yieldparam binding_info [Hash] The binding information captured.
@return [Proc] The current on_capture hook.;T;0;@�;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"�def on_capture(&block)
  if block_given?
    @on_capture_hook = block
  else
    @on_capture_hook ||= method(:default_on_capture)
  end
end;T;-I"def on_capture(&block);T; To;!;"F;#;$;;;I"EnhancedErrors.on_capture=;F;%[[I"
value;T0;[[@�i�;
T;:on_capture=;;;[�;{�;IC;"Sets the on_capture hook.;T;[o;'
;(I"
param;F;)I",The proc to set as the on_capture hook.;T;I"
value;T;*[I"	Proc;T;@�o;'
;(I"return;F;)I"#The newly set on_capture hook.;T;0;*[I"	Proc;T;@�;[�;I"�Sets the on_capture hook.

@param value [Proc] The proc to set as the on_capture hook.
@return [Proc] The newly set on_capture hook.;T;0;@�;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I">def on_capture=(value)
  self.on_capture_hook = value
end;T;-I"def on_capture=(value);T; To;!;"F;#;$;;;I"EnhancedErrors.on_format;F;%[[I"&block;T0;[[@�i�;
T;:on_format;;;[�;{�;IC;"GSets or retrieves the hook to modify formatted exception messages.;T;[o;'
;(I"yieldparam;F;)I"%The formatted exception message.;T;I"formatted_string;T;*[I"String;T;@�o;'
;(I"return;F;)I" The current on_format hook.;T;0;*[I"	Proc;T;@�;[�;I"�Sets or retrieves the hook to modify formatted exception messages.

@yieldparam formatted_string [String] The formatted exception message.
@return [Proc] The current on_format hook.;T;0;@�;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"�def on_format(&block)
  if block_given?
    @on_format_hook = block
  else
    @on_format_hook ||= method(:default_on_format)
  end
end;T;-I"def on_format(&block);T; To;!;"F;#;$;;;I"EnhancedErrors.on_format=;F;%[[I"
value;T0;[[@�i�;
T;:on_format=;;;[�;{�;IC;"Sets the on_format hook.;T;[o;'
;(I"
param;F;)I"+The proc to set as the on_format hook.;T;I"
value;T;*[I"	Proc;T;@�o;'
;(I"return;F;)I""The newly set on_format hook.;T;0;*[I"	Proc;T;@�;[�;I"�Sets the on_format hook.

@param value [Proc] The proc to set as the on_format hook.
@return [Proc] The newly set on_format hook.;T;0;@�;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"8def on_format=(value)
  @on_format_hook = value
end;T;-I"def on_format=(value);T; To;!;"F;#;$;;;I"EnhancedErrors.format;F;%[[I"captured_bindings;TI"[];T[I"output_format;TI"'get_default_format_for_environment;T;[[@�i�;
T;:format;;;[�;{�;IC;"ZFormats the captured binding information into a string based on the specified format.;T;[o;'
;(I"
param;F;)I"/The array of captured binding information.;T;I"captured_bindings;T;*[I"Array<Hash>;T;@�o;'
;(I"
param;F;)I"6The format to use (:json, :plaintext, :terminal).;T;I"output_format;T;*[I"Symbol;T;@�o;'
;(I"return;F;)I"%The formatted exception message.;T;0;*[I"String;T;@�;[�;I"*Formats the captured binding information into a string based on the specified format.

@param captured_bindings [Array<Hash>] The array of captured binding information.
@param output_format [Symbol] The format to use (:json, :plaintext, :terminal).
@return [String] The formatted exception message.;T;0;@�;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"!def format(captured_bindings = [], output_format = get_default_format_for_environment)
  result = binding_infos_array_to_string(captured_bindings, output_format)
  if @on_format_hook
    result = @on_format_hook.call(result)
  else
    result = default_on_format(result)
  end
  result
end;T;-I"[def format(captured_bindings = [], output_format = get_default_format_for_environment);T; To;!;"F;#;$;;;I"1EnhancedErrors.binding_infos_array_to_string;F;%[[I"captured_bindings;T0[I"format;TI":terminal;T;[[@�i�;
T;:"binding_infos_array_to_string;;;[�;{�;IC;"MConverts an array of binding information hashes into a formatted string.;T;[o;'
;(I"
param;F;)I"&The array of binding information.;T;I"captured_bindings;T;*[I"Array<Hash>;T;@%o;'
;(I"
param;F;)I"6The format to use (:json, :plaintext, :terminal).;T;I"format;T;*[I"Symbol;T;@%o;'
;(I"return;F;)I"DThe formatted string representation of the binding information.;T;0;*[I"String;T;@%;[�;I",Converts an array of binding information hashes into a formatted string.

@param captured_bindings [Array<Hash>] The array of binding information.
@param format [Symbol] The format to use (:json, :plaintext, :terminal).
@return [String] The formatted string representation of the binding information.;T;0;@%;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"<def binding_infos_array_to_string(captured_bindings, format = :terminal)
  case format
  when :json
    Colors.enabled = false
    JSON.pretty_generate(captured_bindings)
  when :plaintext
    Colors.enabled = false
    captured_bindings.map { |binding_info| binding_info_string(binding_info) }.join("\n")
  when :terminal
    Colors.enabled = true
    captured_bindings.map { |binding_info| binding_info_string(binding_info) }.join("\n")
  else
    Colors.enabled = false
    captured_bindings.map { |binding_info| binding_info_string(binding_info) }.join("\n")
  end
end;T;-I"Mdef binding_infos_array_to_string(captured_bindings, format = :terminal);T; To;!;"F;#;$;;;I"6EnhancedErrors.get_default_format_for_environment;F;%[�;[[@�i;
T;:'get_default_format_for_environment;;;[�;{�;IC;"KDetermines the default output format based on the current environment.;T;[o;'
;(I"return;F;)I"7The default format (:json, :plaintext, :terminal).;T;0;*[I"Symbol;T;@I;[�;I"�Determines the default output format based on the current environment.

@return [Symbol] The default format (:json, :plaintext, :terminal).;T;0;@I;+i�;IF;Jo;K;LF;Mi;Ni;@�;,T;I"def get_default_format_for_environment
  return @output_format unless @output_format.nil?
  env = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
  @output_format = case env
                   when 'development', 'test'
                     if running_in_ci?
                       :plaintext
                     else
                       :terminal
                     end
                   when 'production'
                     :json
                   else
                     :terminal
                   end
end;T;-I"+def get_default_format_for_environment;T; To;!;"F;#;$;;;I""EnhancedErrors.running_in_ci?;F;%[�;[[@�i%;
T;:running_in_ci?;;;[�;{�;IC;"PChecks if the code is running in a Continuous Integration (CI) environment.;T;[o;'
;(I"return;F;)I"0`true` if running in CI, otherwise `false`.;T;0;*[I"Boolean;T;@\;[�;I"�Checks if the code is running in a Continuous Integration (CI) environment.

@return [Boolean] `true` if running in CI, otherwise `false`.;T;0;@\;+i�;IF;Jo;K;LF;Mi";Ni$;@�;,T;I"�def running_in_ci?
  return @running_in_ci if defined?(@running_in_ci)
  ci_env_vars = {
    'CI' => ENV['CI'],
    'JENKINS' => ENV['JENKINS'],
    'GITHUB_ACTIONS' => ENV['GITHUB_ACTIONS'],
    'CIRCLECI' => ENV['CIRCLECI'],
    'TRAVIS' => ENV['TRAVIS'],
    'APPVEYOR' => ENV['APPVEYOR'],
    'GITLAB_CI' => ENV['GITLAB_CI']
  }
  @running_in_ci = ci_env_vars.any? { |_, value| value.to_s.downcase == 'true' }
end;T;-I"def running_in_ci?;T; To;!;"F;#;$;;;I"#EnhancedErrors.apply_skip_list;F;%[[I"binding_info;T0;[[@�i7;
T;:apply_skip_list;;;[�;{�;IC;"^Applies the skip list to the captured binding information, excluding specified variables.;T;[o;'
;(I"
param;F;)I"'The binding information to filter.;T;I"binding_info;T;*[I"	Hash;T;@oo;'
;(I"return;F;)I"&The filtered binding information.;T;0;*[I"	Hash;T;@o;[�;I"�Applies the skip list to the captured binding information, excluding specified variables.

@param binding_info [Hash] The binding information to filter.
@return [Hash] The filtered binding information.;T;0;@o;+i�;IF;Jo;K;LF;Mi3;Ni6;@�;,T;I"edef apply_skip_list(binding_info)
  unless @debug
    variables = binding_info[:variables]
    variables[:instances]&.reject! { |var, _| skip_list.include?(var) || var.to_s.start_with?('@__') }
    variables[:locals]&.reject! { |var, _| skip_list.include?(var) }
    variables[:globals]&.reject! { |var, _| skip_list.include?(var) }
  end
  binding_info
end;T;-I"&def apply_skip_list(binding_info);T; To;!;"F;#;$;;;I"+EnhancedErrors.validate_binding_format;F;%[[I"binding_info;T0;[[@�iE;
T;:validate_binding_format;;;[�;{�;IC;">Validates the format of the captured binding information.;T;[o;'
;(I"
param;F;)I")The binding information to validate.;T;I"binding_info;T;*[I"	Hash;T;@�o;'
;(I"return;F;)I";The validated binding information or `nil` if invalid.;T;0;*[I"	Hash;TI"nil;T;@�;[�;I"�Validates the format of the captured binding information.

@param binding_info [Hash] The binding information to validate.
@return [Hash, nil] The validated binding information or `nil` if invalid.;T;0;@�;+i�;IF;Jo;K;LF;MiA;NiD;@�;,T;I"�def validate_binding_format(binding_info)
  unless binding_info.keys.include?(:capture_type) && binding_info[:variables].is_a?(Hash)
    puts "Invalid binding_info format."
    return nil
  end
  binding_info
end;T;-I".def validate_binding_format(binding_info);T; To;!;"F;#;$;;;I"'EnhancedErrors.binding_info_string;F;%[[I"binding_info;T0;[[@�iQ;
T;:binding_info_string;;;[�;{�;IC;"OFormats a single binding information hash into a string with colorization.;T;[o;'
;(I"
param;F;)I"'The binding information to format.;T;I"binding_info;T;*[I"	Hash;T;@�o;'
;(I"return;F;)I"The formatted string.;T;0;*[I"String;T;@�;[�;I"�Formats a single binding information hash into a string with colorization.

@param binding_info [Hash] The binding information to format.
@return [String] The formatted string.;T;0;@�;+i�;IF;Jo;K;LF;MiM;NiP;@�;,T;I".def binding_info_string(binding_info)
  result = "\n#{Colors.green("#{binding_info[:capture_type].capitalize}: ")}#{Colors.blue(binding_info[:source])}"

  result += method_and_args_desc(binding_info[:method_and_args])

  variables = binding_info[:variables] || {}

  if variables[:locals] && !variables[:locals].empty?
    result += "\n#{Colors.green('Locals:')}\n#{variable_description(variables[:locals])}"
  end

  instance_vars_to_display = variables[:instances] || {}


  if instance_vars_to_display && !instance_vars_to_display.empty?
    result += "\n#{Colors.green('Instances:')}\n#{variable_description(instance_vars_to_display)}"
  end

  if variables[:lets] && !variables[:lets].empty?
    result += "\n#{Colors.green('Let Variables:')}\n#{variable_description(variables[:lets])}"
  end

  if variables[:globals] && !variables[:globals].empty?
    result += "\n#{Colors.green('Globals:')}\n#{variable_description(variables[:globals])}"
  end

  if result.length > max_length
    result = result[0...max_length] + "... (truncated)"
  end
  result + "\n\n"
end;T;-I"*def binding_info_string(binding_info);T; To;!;"F;#;$;:private;I"!EnhancedErrors.start_tracing;F;%[�;[[@�iv;
T;:start_tracing;;;[�;{�;IC;"OStarts the TracePoint for capturing exceptions based on configured events.;T;[o;'
;(I"return;F;)I"�;T;0;*[I"	void;T;@�;[�;I"_Starts the TracePoint for capturing exceptions based on configured events.

@return [void];T;0;@�;+i�;IF;Jo;K;LF;Mis;Niu;@�;,T;I"Udef start_tracing
  return if @trace && @trace.enabled?

  events = [:raise]
  events << :rescue if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.3.0')

  @trace = TracePoint.new(*events) do |tp|
    exception = tp.raised_exception
    capture_me = EnhancedErrors.eligible_for_capture.call(exception)

    next unless capture_me

    next if Thread.current[:enhanced_errors_processing]
    Thread.current[:enhanced_errors_processing] = true

    exception = tp.raised_exception
    binding_context = tp.binding

    unless exception.instance_variable_defined?(:@binding_infos)
      exception.instance_variable_set(:@binding_infos, [])
      exception.extend(ErrorEnhancements)
    end

    method_name = tp.method_id
    method_and_args = {
      object_name: determine_object_name(tp, method_name),
      args: extract_arguments(tp, method_name)
    }

    locals = binding_context.local_variables.map { |var|
      [var, binding_context.local_variable_get(var)]
    }.to_h

    instance_vars = binding_context.receiver.instance_variables

    instances = instance_vars.map { |var|
      [var, (binding_context.receiver.instance_variable_get(var) rescue "#<Error getting instance variable: #{$!.message}>")]
    }.to_h

    # Extract 'let' variables from :@__memoized (RSpec specific)
    lets = {}
    if capture_let_variables && instance_vars.include?(:@__memoized)
      outer_memoized = binding_context.receiver.instance_variable_get(:@__memoized)
      memoized = outer_memoized.instance_variable_get(:@memoized) if outer_memoized.respond_to?(:instance_variable_get)
      if memoized.is_a?(Hash)
        lets = memoized&.transform_keys(&:to_sym)
      end
    end

    globals = {}
    # Capture global variables
    if @debug
      globals = (global_variables - @original_global_variables).map { |var|
        [var, get_global_variable_value(var)]
      }.to_h
      puts "Global Variables: #{globals.inspect}"
    end

    capture_type = tp.event.to_s  # 'raise' or 'rescue'
    location = "#{tp.path}:#{tp.lineno}"

    binding_info = {
      source: location,
      object: tp.self,
      library: !!GEMS_REGEX.match?(location),
      method_and_args: method_and_args,
      test_name: test_name,
      variables: {
        locals: locals,
        instances: instances,
        lets: lets,
        globals: globals
      },
      exception: exception.class.name,
      capture_type: capture_type
    }

    if on_capture_hook
      binding_info = on_capture_hook.call(binding_info)
    else
      binding_info = default_on_capture(binding_info)
    end

    binding_info = validate_binding_format(binding_info)

    if binding_info
      exception.instance_variable_get(:@binding_infos) << binding_info
    else
      puts "Invalid binding_info returned from on_capture, skipping."
    end
  ensure
    Thread.current[:enhanced_errors_processing] = false
  end

  @trace.enable
end;T;-I"def start_tracing;T; To;!;"F;#;$;;o;I"EnhancedErrors.test_name;F;%[�;[[@�i�;
T;:test_name;;;[�;{�;IC;">Retrieves the current test name from RSpec, if available.;T;[o;'
;(I"return;F;)I"=The current test name or `nil` if not in a test context.;T;0;*[I"String;TI"nil;T;@�;[�;I"�Retrieves the current test name from RSpec, if available.

@return [String, nil] The current test name or `nil` if not in a test context.;T;0;@�;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"adef test_name
  return RSpec&.current_example&.full_description if defined?(RSpec)
  nil
end;T;-I"def test_name;T; To;!;"F;#;$;;o;I"%EnhancedErrors.extract_arguments;F;%[[I"tp;T0[I"method_name;T0;[[@�i�;
T;:extract_arguments;;;[�;{�;IC;";Extracts method arguments from the TracePoint binding.;T;[o;'
;(I"
param;F;)I"The current TracePoint.;T;I"tp;T;*[I"TracePoint;T;@�o;'
;(I"
param;F;)I"The name of the method.;T;I"method_name;T;*[I"Symbol;T;@�o;'
;(I"return;F;)I"5A string representation of the method arguments.;T;0;*[I"String;T;@�;[�;I"�Extracts method arguments from the TracePoint binding.

@param tp [TracePoint] The current TracePoint.
@param method_name [Symbol] The name of the method.
@return [String] A string representation of the method arguments.;T;0;@�;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"Pdef extract_arguments(tp, method_name)
  return '' unless method_name
  begin
    bind = tp.binding
    unbound_method = tp.defined_class.instance_method(method_name)
    method_obj = unbound_method.bind(tp.self)
    parameters = method_obj.parameters
    locals = bind.local_variables

    parameters.map do |(type, name)|
      value = locals.include?(name) ? bind.local_variable_get(name) : nil
      "#{name}=#{value.inspect}"
    rescue => e
      "#{name}=#<Error getting argument: #{e.message}>"
    end.join(", ")
  rescue => e
    "#<Error getting arguments: #{e.message}>"
  end
end;T;-I"+def extract_arguments(tp, method_name);T; To;!;"F;#;$;;o;I")EnhancedErrors.determine_object_name;F;%[[I"tp;T0[I"method_name;T0;[[@�i�;
T;:determine_object_name;;;[�;{�;IC;"HDetermines the object name based on the TracePoint and method name.;T;[o;'
;(I"
param;F;)I"The current TracePoint.;T;I"tp;T;*[I"TracePoint;T;@o;'
;(I"
param;F;)I"The name of the method.;T;I"method_name;T;*[I"Symbol;T;@o;'
;(I"return;F;)I"The formatted object name.;T;0;*[I"String;T;@;[�;I"�Determines the object name based on the TracePoint and method name.

@param tp [TracePoint] The current TracePoint.
@param method_name [Symbol] The name of the method.
@return [String] The formatted object name.;T;0;@;+i�;IF;Jo;K;LF;Mi�;Ni�;@�;,T;I"def determine_object_name(tp, method_name)
  if tp.self.is_a?(Class) && tp.self.singleton_class == tp.defined_class
    "#{tp.self}.#{method_name}"
  else
    "#{tp.self.class.name}##{method_name}"
  end
rescue => e
  "#<Error inspecting value: #{e.message}>"
end;T;-I"/def determine_object_name(tp, method_name);T; To;!;"F;#;$;;o;I"-EnhancedErrors.get_global_variable_value;F;%[[I"var;T0;[[@�i;
T;:get_global_variable_value;;;[�;{�;IC;":Retrieves the value of a global variable by its name.;T;[o;'
;(I"
param;F;)I"%The name of the global variable.;T;I"var;T;*[I"Symbol;T;@.o;'
;(I"return;F;)I":The value of the global variable or an error message.;T;0;*[I"Object;TI"String;T;@.;[�;I"�Retrieves the value of a global variable by its name.

@param var [Symbol] The name of the global variable.
@return [Object, String] The value of the global variable or an error message.;T;0;@.;+i�;IF;Jo;K;LF;Mi;Ni
;@�;,T;I"�def get_global_variable_value(var)
  begin
    var.is_a?(Symbol) ? eval("#{var}") : nil
  rescue => e
    "#<Error getting value: #{e.message}>"
  end
end;T;-I"'def get_global_variable_value(var);T; To;!;"F;#;$;;o;I"(EnhancedErrors.method_and_args_desc;F;%[[I"method_info;T0;[[@�i;
T;:method_and_args_desc;;;[�;{�;IC;"6Generates a description for method and arguments.;T;[o;'
;(I"
param;F;)I"4Information about the method and its arguments.;T;I"method_info;T;*[I"	Hash;T;@Jo;'
;(I"return;F;)I"The formatted description.;T;0;*[I"String;T;@J;[�;I"�Generates a description for method and arguments.

@param method_info [Hash] Information about the method and its arguments.
@return [String] The formatted description.;T;0;@J;+i�;IF;Jo;K;LF;Mi;Ni;@�;,T;I"1def method_and_args_desc(method_info)
  return '' unless method_info[:object_name] != '' || method_info[:args]&.length.to_i > 0
  arg_str = method_info[:args]
  arg_str = "(#{arg_str})" if arg_str != ""
  str = method_info[:object_name] + arg_str
  "\n#{Colors.green('Method: ')}#{Colors.blue(str)}\n"
end;T;-I"*def method_and_args_desc(method_info);T; To;!;"F;#;$;;o;I"(EnhancedErrors.variable_description;F;%[[I"vars_hash;T0;[[@�i#;
T;:variable_description;;;[�;{�;IC;">Generates a formatted description for a set of variables.;T;[o;'
;(I"
param;F;)I"/A hash of variable names and their values.;T;I"vars_hash;T;*[I"	Hash;T;@eo;'
;(I"return;F;)I")The formatted variables description.;T;0;*[I"String;T;@e;[�;I"�Generates a formatted description for a set of variables.

@param vars_hash [Hash] A hash of variable names and their values.
@return [String] The formatted variables description.;T;0;@e;+i�;IF;Jo;K;LF;Mi;Ni";@�;,T;I"�def variable_description(vars_hash)
  vars_hash.map do |name, value|
    "  #{Colors.purple(name)}: #{format_variable(value)}\n"
  end.join
end;T;-I"(def variable_description(vars_hash);T; To;!;"F;#;$;;o;I"#EnhancedErrors.format_variable;F;%[[I"
variable;T0;[[@�i-;
T;:format_variable;;;[�;{�;IC;"TFormats a variable for display, using `awesome_print` if available and enabled.;T;[o;'
;(I"
param;F;)I"The variable to format.;T;I"
variable;T;*[I"Object;T;@�o;'
;(I"return;F;)I"The formatted variable.;T;0;*[I"String;T;@�;[�;I"�Formats a variable for display, using `awesome_print` if available and enabled.

@param variable [Object] The variable to format.
@return [String] The formatted variable.;T;0;@�;+i�;IF;Jo;K;LF;Mi);Ni,;@�;,T;I"wdef format_variable(variable)
  (awesome_print_available? && Colors.enabled?) ? variable.ai : variable.inspect
end;T;-I""def format_variable(variable);T; To;!;"F;#;$;;o;I",EnhancedErrors.awesome_print_available?;F;%[�;[[@�i4;
T;:awesome_print_available?;;;[�;{�;IC;"3Checks if the `AwesomePrint` gem is available.;T;[o;'
;(I"return;F;)I">`true` if `AwesomePrint` is available, otherwise `false`.;T;0;*[I"Boolean;T;@�;[�;I"{Checks if the `AwesomePrint` gem is available.

@return [Boolean] `true` if `AwesomePrint` is available, otherwise `false`.;T;0;@�;+i�;IF;Jo;K;LF;Mi1;Ni3;@�;,T;I"�def awesome_print_available?
  return @awesome_print_available unless @awesome_print_available.nil?
  @awesome_print_available = defined?(AwesomePrint)
end;T;-I"!def awesome_print_available?;T; To;!;"F;#;$;;o;I"%EnhancedErrors.default_on_format;F;%[[I"string;T0;[[@�i=;
T;:default_on_format;;;[�;{�;IC;"3Default implementation for the on_format hook.;T;[o;'
;(I"
param;F;)I"%The formatted exception message.;T;I"string;T;*[I"String;T;@�o;'
;(I"return;F;)I"&The unmodified exception message.;T;0;*[I"String;T;@�;[�;I"�Default implementation for the on_format hook.

@param string [String] The formatted exception message.
@return [String] The unmodified exception message.;T;0;@�;+i�;IF;Jo;K;LF;Mi9;Ni<;@�;,T;I"/def default_on_format(string)
  string
end;T;-I""def default_on_format(string);T; To;!;"F;#;$;;o;I"&EnhancedErrors.default_on_capture;F;%[[I"binding_info;T0;[[@�iE;
T;:default_on_capture;;;[�;{�;IC;"LDefault implementation for the on_capture hook, applying the skip list.;T;[o;'
;(I"
param;F;)I"&The captured binding information.;T;I"binding_info;T;*[I"	Hash;T;@�o;'
;(I"return;F;)I"&The filtered binding information.;T;0;*[I"	Hash;T;@�;[�;I"�Default implementation for the on_capture hook, applying the skip list.

@param binding_info [Hash] The captured binding information.
@return [Hash] The filtered binding information.;T;0;@�;+i�;IF;Jo;K;LF;MiA;NiD;@�;,T;I"�def default_on_capture(binding_info)
  # Use this to clean up the captured bindings
  EnhancedErrors.apply_skip_list(binding_info)
end;T;-I")def default_on_capture(binding_info);T; To;!;"F;#;$;;o;I"0EnhancedErrors.default_eligible_for_capture;F;%[[I"exception;T0;[[@�iN;
T;:!default_eligible_for_capture;;;[�;{�;IC;"8Default eligibility check for capturing exceptions.;T;[o;'
;(I"
param;F;)I"The exception to evaluate.;T;I"exception;T;*[I"Exception;T;@�o;'
;(I"return;F;)I"C`true` if the exception should be captured, otherwise `false`.;T;0;*[I"Boolean;T;@�;[�;I"�Default eligibility check for capturing exceptions.

@param exception [Exception] The exception to evaluate.
@return [Boolean] `true` if the exception should be captured, otherwise `false`.;T;0;@�;+i�;IF;Jo;K;LF;MiJ;NiM;@�;,T;I";def default_eligible_for_capture(exception)
  true
end;T;-I"0def default_eligible_for_capture(exception);T; T;1@�;2IC;[�;1@�;3IC;[�;1@�;4IC;5{;$IC;5{
;HIC;5{:	read@�:
write@�;6T;OIC;5{;|@�;}@�;6T;QIC;5{;|@�;}@�;6T;SIC;5{;|@;}@$;6T;UIC;5{;|@8;}@L;6T;WIC;5{;|@_;}@};6T;YIC;5{;|@�;}@�;6T;[IC;5{;|@�;}@�;6T;6T;7IC;5{�;6T;6T;8{�;9[�;[[@�i;
T;:EnhancedErrors;;;;;[�;{�;IC;"The EnhancedErrors class provides mechanisms to enhance exception handling by capturing
additional context such as binding information, variables, and method arguments when exceptions are raised.
It offers customization options for formatting and filtering captured data.;T;[�;[�;I"The EnhancedErrors class provides mechanisms to enhance exception handling by capturing
additional context such as binding information, variables, and method arguments when exceptions are raised.
It offers customization options for formatting and filtering captured data.;T;0;@�;+i�;IF;Jo;K;LF;Mi
;Ni;@;I"EnhancedErrors;F;;o;<;=0;>0;?0;;@;@;A0;B;$o;C;IC;[o;!;"F;#;7;;;I"ErrorEnhancements#message;F;%[�;[[I"lib/error_enhancements.rb;Ti;
F;:message;;;[�;{�;IC;"�;T;[�;[�;@;0;@;+i�;@;,T;I"�def message
  original_message = super()
  "#{original_message}#{variables_message}"
rescue => e
  puts "Error in message method: #{e.message}"
  original_message
end;T;-I"def message;T; To;!;"F;#;7;;;I"(ErrorEnhancements#variables_message;F;%[�;[[@ i;
F;:variables_message;;;[�;{�;IC;"�;T;[�;[�;@;0;@(;+i�;@;,T;I":def variables_message
  @variables_message ||= begin
                           bindings_of_interest = []
                           if defined?(@binding_infos) && @binding_infos && !@binding_infos.empty?
                             bindings_of_interest = select_binding_infos(@binding_infos)
                           end
                           EnhancedErrors.format(bindings_of_interest)
                         rescue => e
                           puts "Error in variables_message: #{e.message}"
                           ""
                         end
end;T;-I"def variables_message;T; To;!;"F;#;7;;o;I"+ErrorEnhancements#select_binding_infos;F;%[[I"binding_infos;T0;[[@ i;
F;:select_binding_infos;;;[�;{�;IC;"�;T;[�;[�;@;0;@4;+i�;@;,T;I"�def select_binding_infos(binding_infos)
  # Preference:
  # Grab the first raise binding that isn't a library (gem) binding.
  # If there are only library bindings, grab the first one.
  # Grab the last rescue binding if we have one

  bindings_of_interest = []
  binding_infos.each do |info|
    if info[:capture_type] == 'raise' && !info[:library]
      bindings_of_interest << info
      break
    end
  end

  if bindings_of_interest.empty?
    bindings_of_interest << binding_infos.first if binding_infos.first
  end

  # find the last rescue binding if there is one
  binding_infos.reverse.each do |info|
    if info[:capture_type] == 'rescue'
      bindings_of_interest << info
      break
    end
  end
  bindings_of_interest
end;T;-I",def select_binding_infos(binding_infos);T; T;1@;2IC;[�;1@;3IC;[�;1@;4IC;5{;$IC;5{�;6T;7IC;5{�;6T;6T;8{�;9[�;[[@ i;
F;:ErrorEnhancements;;;;;[�;{�;IC;"�;T;[�;[�;@;0;@;+i�;@;I"ErrorEnhancements;F;1@;2IC;[�;1@;3IC;[�;1@;4IC;5{;$IC;5{�;6T;7IC;5{�;6T;6T;8{�;9[�;[�;
F;;�;;;;;[�;{�;IC;"�;T;[�;[�;@;0;@;+i�;0;@;:@:Colors::COLORS@
:Colors.enabled?@:Colors.enabled=@':Colors.color@5:Colors.code@E;E@c:Debugging#let_vars_hash@e;G@|;~@�:EnhancedErrors.enabled@�:EnhancedErrors.enabled=@�:EnhancedErrors.trace@�:EnhancedErrors.trace=@�: EnhancedErrors.config_block@�:!EnhancedErrors.config_block=@�:EnhancedErrors.max_length@:EnhancedErrors.max_length=@$:#EnhancedErrors.on_capture_hook@8:$EnhancedErrors.on_capture_hook=@L:)EnhancedErrors.capture_let_variables@_:*EnhancedErrors.capture_let_variables=@}:(EnhancedErrors.eligible_for_capture@�:)EnhancedErrors.eligible_for_capture=@�:EnhancedErrors.skip_list@�:EnhancedErrors.skip_list=@�:EnhancedErrors::GEMS_REGEX@�:'EnhancedErrors::DEFAULT_MAX_LENGTH@�:$EnhancedErrors::RSPEC_SKIP_LIST@:$EnhancedErrors::RAILS_SKIP_LIST@ :%EnhancedErrors.default_skip_list@2:$EnhancedErrors.add_to_skip_list@E:EnhancedErrors.enhance!@`:EnhancedErrors.on_capture@�:EnhancedErrors.on_capture=@�:EnhancedErrors.on_format@�:EnhancedErrors.on_format=@�:EnhancedErrors.format@�:1EnhancedErrors.binding_infos_array_to_string@%:6EnhancedErrors.get_default_format_for_environment@I:"EnhancedErrors.running_in_ci?@\:#EnhancedErrors.apply_skip_list@o:+EnhancedErrors.validate_binding_format@�:'EnhancedErrors.binding_info_string@�:!EnhancedErrors.start_tracing@�:EnhancedErrors.test_name@�:%EnhancedErrors.extract_arguments@�:)EnhancedErrors.determine_object_name@:-EnhancedErrors.get_global_variable_value@.:(EnhancedErrors.method_and_args_desc@J:(EnhancedErrors.variable_description@e:#EnhancedErrors.format_variable@�:,EnhancedErrors.awesome_print_available?@�:%EnhancedErrors.default_on_format@�:&EnhancedErrors.default_on_capture@�:0EnhancedErrors.default_eligible_for_capture@�;}@:ErrorEnhancements#message@:(ErrorEnhancements#variables_message@(:+ErrorEnhancements#select_binding_infos@4