PHP 8.1.33
Preview: class-wp-hook.php Size: 15.63 KB
/home/jambtst2015/public_html/cccng.org/wp-includes/class-wp-hook.php

<?php
/**
 * Plugin API: WP_Hook class
 *
 * @package WordPress
 * @subpackage Plugin
 * @since 4.7.0
 */

/**
 * Core class used to implement action and filter hook functionality.
 *
 * @since 4.7.0
 *
 * @see Iterator
 * @see ArrayAccess
 */
#[AllowDynamicProperties]
final class WP_Hook implements Iterator, ArrayAccess {

	/**
	 * Hook callbacks.
	 *
	 * @since 4.7.0
	 * @var array
	 */
	public $callbacks = array();

	/**
	 * Priorities list.
	 *
	 * @since 6.4.0
	 * @var array
	 */
	protected $priorities = array();

	/**
	 * The priority keys of actively running iterations of a hook.
	 *
	 * @since 4.7.0
	 * @var array
	 */
	private $iterations = array();

	/**
	 * The current priority of actively running iterations of a hook.
	 *
	 * @since 4.7.0
	 * @var array
	 */
	private $current_priority = array();

	/**
	 * Number of levels this hook can be recursively called.
	 *
	 * @since 4.7.0
	 * @var int
	 */
	private $nesting_level = 0;

	/**
	 * Flag for if we're currently doing an action, rather than a filter.
	 *
	 * @since 4.7.0
	 * @var bool
	 */
	private $doing_action = false;

	/**
	 * Adds a callback function to a filter hook.
	 *
	 * @since 4.7.0
	 *
	 * @param string   $hook_name     The name of the filter to add the callback to.
	 * @param callable $callback      The callback to be run when the filter is applied.
	 * @param int      $priority      The order in which the functions associated with a particular filter
	 *                                are executed. Lower numbers correspond with earlier execution,
	 *                                and functions with the same priority are executed in the order
	 *                                in which they were added to the filter.
	 * @param int      $accepted_args The number of arguments the function accepts.
	 */
	public function add_filter( $hook_name, $callback, $priority, $accepted_args ) {
		$idx = _wp_filter_build_unique_id( $hook_name, $callback, $priority );

		$priority_existed = isset( $this->callbacks[ $priority ] );

		$this->callbacks[ $priority ][ $idx ] = array(
			'function'      => $callback,
			'accepted_args' => (int) $accepted_args,
		);

		// If we're adding a new priority to the list, put them back in sorted order.
		if ( ! $priority_existed && count( $this->callbacks ) > 1 ) {
			ksort( $this->callbacks, SORT_NUMERIC );
		}

		$this->priorities = array_keys( $this->callbacks );

		if ( $this->nesting_level > 0 ) {
			$this->resort_active_iterations( $priority, $priority_existed );
		}
	}

	/**
	 * Handles resetting callback priority keys mid-iteration.
	 *
	 * @since 4.7.0
	 *
	 * @param false|int $new_priority     Optional. The priority of the new filter being added. Default false,
	 *                                    for no priority being added.
	 * @param bool      $priority_existed Optional. Flag for whether the priority already existed before the new
	 *                                    filter was added. Default false.
	 */
	private function resort_active_iterations( $new_priority = false, $priority_existed = false ) {
		$new_priorities = $this->priorities;

		// If there are no remaining hooks, clear out all running iterations.
		if ( ! $new_priorities ) {
			foreach ( $this->iterations as $index => $iteration ) {
				$this->iterations[ $index ] = $new_priorities;
			}

			return;
		}

		$min = min( $new_priorities );

		foreach ( $this->iterations as $index => &$iteration ) {
			$current = current( $iteration );

			// If we're already at the end of this iteration, just leave the array pointer where it is.
			if ( false === $current ) {
				continue;
			}

			$iteration = $new_priorities;

			if ( $current < $min ) {
				array_unshift( $iteration, $current );
				continue;
			}

			while ( current( $iteration ) < $current ) {
				if ( false === next( $iteration ) ) {
					break;
				}
			}

			// If we have a new priority that didn't exist, but ::apply_filters() or ::do_action() thinks it's the current priority...
			if ( $new_priority === $this->current_priority[ $index ] && ! $priority_existed ) {
				/*
				 * ...and the new priority is the same as what $this->iterations thinks is the previous
				 * priority, we need to move back to it.
				 */

				if ( false === current( $iteration ) ) {
					// If we've already moved off the end of the array, go back to the last element.
					$prev = end( $iteration );
				} else {
					// Otherwise, just go back to the previous element.
					$prev = prev( $iteration );
				}

				if ( false === $prev ) {
					// Start of the array. Reset, and go about our day.
					reset( $iteration );
				} elseif ( $new_priority !== $prev ) {
					// Previous wasn't the same. Move forward again.
					next( $iteration );
				}
			}
		}

		unset( $iteration );
	}

	/**
	 * Removes a callback function from a filter hook.
	 *
	 * @since 4.7.0
	 *
	 * @param string                $hook_name The filter hook to which the function to be removed is hooked.
	 * @param callable|string|array $callback  The callback to be removed from running when the filter is applied.
	 *                                         This method can be called unconditionally to speculatively remove
	 *                                         a callback that may or may not exist.
	 * @param int                   $priority  The exact priority used when adding the original filter callback.
	 * @return bool Whether the callback existed before it was removed.
	 */
	public function remove_filter( $hook_name, $callback, $priority ) {
		$function_key = _wp_filter_build_unique_id( $hook_name, $callback, $priority );

		$exists = isset( $this->callbacks[ $priority ][ $function_key ] );

		if ( $exists ) {
			unset( $this->callbacks[ $priority ][ $function_key ] );

			if ( ! $this->callbacks[ $priority ] ) {
				unset( $this->callbacks[ $priority ] );

				$this->priorities = array_keys( $this->callbacks );

				if ( $this->nesting_level > 0 ) {
					$this->resort_active_iterations();
				}
			}
		}

		return $exists;
	}

	/**
	 * Checks if a specific callback has been registered for this hook.
	 *
	 * When using the `$callback` argument, this function may return a non-boolean value
	 * that evaluates to false (e.g. 0), so use the `===` operator for testing the return value.
	 *
	 * @since 4.7.0
	 *
	 * @param string                      $hook_name Optional. The name of the filter hook. Default empty.
	 * @param callable|string|array|false $callback  Optional. The callback to check for.
	 *                                               This method can be called unconditionally to speculatively check
	 *                                               a callback that may or may not exist. Default false.
	 * @return bool|int If `$callback` is omitted, returns boolean for whether the hook has
	 *                  anything registered. When checking a specific function, the priority
	 *                  of that hook is returned, or false if the function is not attached.
	 */
	public function has_filter( $hook_name = '', $callback = false ) {
		if ( false === $callback ) {
			return $this->has_filters();
		}

		$function_key = _wp_filter_build_unique_id( $hook_name, $callback, false );

		if ( ! $function_key ) {
			return false;
		}

		foreach ( $this->callbacks as $priority => $callbacks ) {
			if ( isset( $callbacks[ $function_key ] ) ) {
				return $priority;
			}
		}

		return false;
	}

	/**
	 * Checks if any callbacks have been registered for this hook.
	 *
	 * @since 4.7.0
	 *
	 * @return bool True if callbacks have been registered for the current hook, otherwise false.
	 */
	public function has_filters() {
		foreach ( $this->callbacks as $callbacks ) {
			if ( $callbacks ) {
				return true;
			}
		}

		return false;
	}

	/**
	 * Removes all callbacks from the current filter.
	 *
	 * @since 4.7.0
	 *
	 * @param int|false $priority Optional. The priority number to remove. Default false.
	 */
	public function remove_all_filters( $priority = false ) {
		if ( ! $this->callbacks ) {
			return;
		}

		if ( false === $priority ) {
			$this->callbacks  = array();
			$this->priorities = array();
		} elseif ( isset( $this->callbacks[ $priority ] ) ) {
			unset( $this->callbacks[ $priority ] );
			$this->priorities = array_keys( $this->callbacks );
		}

		if ( $this->nesting_level > 0 ) {
			$this->resort_active_iterations();
		}
	}

	/**
	 * Calls the callback functions that have been added to a filter hook.
	 *
	 * @since 4.7.0
	 *
	 * @param mixed $value The value to filter.
	 * @param array $args  Additional parameters to pass to the callback functions.
	 *                     This array is expected to include $value at index 0.
	 * @return mixed The filtered value after all hooked functions are applied to it.
	 */
	public function apply_filters( $value, $args ) {
		if ( ! $this->callbacks ) {
			return $value;
		}

		$nesting_level = $this->nesting_level++;

		$this->iterations[ $nesting_level ] = $this->priorities;

		$num_args = count( $args );

		do {
			$this->current_priority[ $nesting_level ] = current( $this->iterations[ $nesting_level ] );

			$priority = $this->current_priority[ $nesting_level ];

			foreach ( $this->callbacks[ $priority ] as $the_ ) {
				if ( ! $this->doing_action ) {
					$args[0] = $value;
				}

				// Avoid the array_slice() if possible.
				if ( 0 === $the_['accepted_args'] ) {
					$value = call_user_func( $the_['function'] );
				} elseif ( $the_['accepted_args'] >= $num_args ) {
					$value = call_user_func_array( $the_['function'], $args );
				} else {
					$value = call_user_func_array( $the_['function'], array_slice( $args, 0, $the_['accepted_args'] ) );
				}
			}
		} while ( false !== next( $this->iterations[ $nesting_level ] ) );

		unset( $this->iterations[ $nesting_level ] );
		unset( $this->current_priority[ $nesting_level ] );

		--$this->nesting_level;

		return $value;
	}

	/**
	 * Calls the callback functions that have been added to an action hook.
	 *
	 * @since 4.7.0
	 *
	 * @param array $args Parameters to pass to the callback functions.
	 */
	public function do_action( $args ) {
		$this->doing_action = true;
		$this->apply_filters( '', $args );

		// If there are recursive calls to the current action, we haven't finished it until we get to the last one.
		if ( ! $this->nesting_level ) {
			$this->doing_action = false;
		}
	}

	/**
	 * Processes the functions hooked into the 'all' hook.
	 *
	 * @since 4.7.0
	 *
	 * @param array $args Arguments to pass to the hook callbacks. Passed by reference.
	 */
	public function do_all_hook( &$args ) {
		$nesting_level                      = $this->nesting_level++;
		$this->iterations[ $nesting_level ] = $this->priorities;

		do {
			$priority = current( $this->iterations[ $nesting_level ] );

			foreach ( $this->callbacks[ $priority ] as $the_ ) {
				call_user_func_array( $the_['function'], $args );
			}
		} while ( false !== next( $this->iterations[ $nesting_level ] ) );

		unset( $this->iterations[ $nesting_level ] );
		--$this->nesting_level;
	}

	/**
	 * Return the current priority level of the currently running iteration of the hook.
	 *
	 * @since 4.7.0
	 *
	 * @return int|false If the hook is running, return the current priority level.
	 *                   If it isn't running, return false.
	 */
	public function current_priority() {
		if ( false === current( $this->iterations ) ) {
			return false;
		}

		return current( current( $this->iterations ) );
	}

	/**
	 * Normalizes filters set up before WordPress has initialized to WP_Hook objects.
	 *
	 * The `$filters` parameter should be an array keyed by hook name, with values
	 * containing either:
	 *
	 *  - A `WP_Hook` instance
	 *  - An array of callbacks keyed by their priorities
	 *
	 * Examples:
	 *
	 *     $filters = array(
	 *         'wp_fatal_error_handler_enabled' => array(
	 *             10 => array(
	 *                 array(
	 *                     'accepted_args' => 0,
	 *                     'function'      => function() {
	 *                         return false;
	 *                     },
	 *                 ),
	 *             ),
	 *         ),
	 *     );
	 *
	 * @since 4.7.0
	 *
	 * @param array $filters Filters to normalize. See documentation above for details.
	 * @return WP_Hook[] Array of normalized filters.
	 */
	public static function build_preinitialized_hooks( $filters ) {
		/** @var WP_Hook[] $normalized */
		$normalized = array();

		foreach ( $filters as $hook_name => $callback_groups ) {
			if ( $callback_groups instanceof WP_Hook ) {
				$normalized[ $hook_name ] = $callback_groups;
				continue;
			}

			$hook = new WP_Hook();

			// Loop through callback groups.
			foreach ( $callback_groups as $priority => $callbacks ) {

				// Loop through callbacks.
				foreach ( $callbacks as $cb ) {
					$hook->add_filter( $hook_name, $cb['function'], $priority, $cb['accepted_args'] );
				}
			}

			$normalized[ $hook_name ] = $hook;
		}

		return $normalized;
	}

	/**
	 * Determines whether an offset value exists.
	 *
	 * @since 4.7.0
	 *
	 * @link https://www.php.net/manual/en/arrayaccess.offsetexists.php
	 *
	 * @param mixed $offset An offset to check for.
	 * @return bool True if the offset exists, false otherwise.
	 */
	#[ReturnTypeWillChange]
	public function offsetExists( $offset ) {
		return isset( $this->callbacks[ $offset ] );
	}

	/**
	 * Retrieves a value at a specified offset.
	 *
	 * @since 4.7.0
	 *
	 * @link https://www.php.net/manual/en/arrayaccess.offsetget.php
	 *
	 * @param mixed $offset The offset to retrieve.
	 * @return mixed If set, the value at the specified offset, null otherwise.
	 */
	#[ReturnTypeWillChange]
	public function offsetGet( $offset ) {
		return isset( $this->callbacks[ $offset ] ) ? $this->callbacks[ $offset ] : null;
	}

	/**
	 * Sets a value at a specified offset.
	 *
	 * @since 4.7.0
	 *
	 * @link https://www.php.net/manual/en/arrayaccess.offsetset.php
	 *
	 * @param mixed $offset The offset to assign the value to.
	 * @param mixed $value The value to set.
	 */
	#[ReturnTypeWillChange]
	public function offsetSet( $offset, $value ) {
		if ( is_null( $offset ) ) {
			$this->callbacks[] = $value;
		} else {
			$this->callbacks[ $offset ] = $value;
		}

		$this->priorities = array_keys( $this->callbacks );
	}

	/**
	 * Unsets a specified offset.
	 *
	 * @since 4.7.0
	 *
	 * @link https://www.php.net/manual/en/arrayaccess.offsetunset.php
	 *
	 * @param mixed $offset The offset to unset.
	 */
	#[ReturnTypeWillChange]
	public function offsetUnset( $offset ) {
		unset( $this->callbacks[ $offset ] );
		$this->priorities = array_keys( $this->callbacks );
	}

	/**
	 * Returns the current element.
	 *
	 * @since 4.7.0
	 *
	 * @link https://www.php.net/manual/en/iterator.current.php
	 *
	 * @return array Of callbacks at current priority.
	 */
	#[ReturnTypeWillChange]
	public function current() {
		return current( $this->callbacks );
	}

	/**
	 * Moves forward to the next element.
	 *
	 * @since 4.7.0
	 *
	 * @link https://www.php.net/manual/en/iterator.next.php
	 *
	 * @return array Of callbacks at next priority.
	 */
	#[ReturnTypeWillChange]
	public function next() {
		return next( $this->callbacks );
	}

	/**
	 * Returns the key of the current element.
	 *
	 * @since 4.7.0
	 *
	 * @link https://www.php.net/manual/en/iterator.key.php
	 *
	 * @return mixed Returns current priority on success, or NULL on failure
	 */
	#[ReturnTypeWillChange]
	public function key() {
		return key( $this->callbacks );
	}

	/**
	 * Checks if current position is valid.
	 *
	 * @since 4.7.0
	 *
	 * @link https://www.php.net/manual/en/iterator.valid.php
	 *
	 * @return bool Whether the current position is valid.
	 */
	#[ReturnTypeWillChange]
	public function valid() {
		return key( $this->callbacks ) !== null;
	}

	/**
	 * Rewinds the Iterator to the first element.
	 *
	 * @since 4.7.0
	 *
	 * @link https://www.php.net/manual/en/iterator.rewind.php
	 */
	#[ReturnTypeWillChange]
	public function rewind() {
		reset( $this->callbacks );
	}
}

Directory Contents

Dirs: 28 × Files: 246

Name Size Perms Modified Actions
assets DIR
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
- drwxr-xr-x 2025-01-08 23:48:29
Edit Download
- drwxr-xr-x 2025-01-02 17:22:28
Edit Download
- drwxr-xr-x 2025-10-09 00:34:40
Edit Download
blocks DIR
- drwxr-xr-x 2025-10-08 17:06:31
Edit Download
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
css DIR
- drwxr-xr-x 2025-10-08 17:06:31
Edit Download
customize DIR
- drwxr-xr-x 2025-10-08 22:19:28
Edit Download
fonts DIR
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
html-api DIR
- drwxr-xr-x 2024-12-30 14:22:59
Edit Download
ID3 DIR
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
images DIR
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
- drwxr-xr-x 2025-01-09 15:17:10
Edit Download
IXR DIR
- drwxr-xr-x 2025-10-11 15:34:53
Edit Download
js DIR
- drwxr-xr-x 2025-10-11 12:38:21
Edit Download
l10n DIR
- drwxr-xr-x 2025-01-04 06:36:15
Edit Download
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
PHPMailer DIR
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
pomo DIR
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
Requests DIR
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
rest-api DIR
- drwxr-xr-x 2025-01-10 13:41:30
Edit Download
SimplePie DIR
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
sitemaps DIR
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
Text DIR
- drwxr-xr-x 2024-12-30 07:14:41
Edit Download
- drwxr-xr-x 2025-10-08 16:50:59
Edit Download
widgets DIR
- drwxr-xr-x 2025-10-10 19:12:25
Edit Download
134 B lrw-r--r-- 2025-10-13 16:14:41
Edit Download
36.24 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
11.79 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
18.51 KB lrw-r--r-- 2023-05-15 03:28:24
Edit Download
5.46 KB lrw-r--r-- 2024-06-12 22:14:14
Edit Download
28.12 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
316 B lrw-r--r-- 2021-08-11 18:38:02
Edit Download
12.90 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
60.46 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
15.00 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
110.40 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
12.47 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
15.07 KB lrw-r--r-- 2024-03-23 23:50:12
Edit Download
5.83 KB lrw-r--r-- 2022-10-11 03:52:12
Edit Download
13.16 KB lrw-r--r-- 2022-10-11 03:52:12
Edit Download
33.71 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
41.72 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
55.67 KB lrw-r--r-- 2023-09-26 09:57:12
Edit Download
12.53 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
28.92 KB lrw-r--r-- 2024-04-27 00:32:14
Edit Download
539 B lrw-r--r-- 2024-12-17 21:37:28
Edit Download
367 B lrw-r--r-- 2022-06-17 20:50:14
Edit Download
2.55 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
42.66 KB lrw-r--r-- 2023-02-04 00:05:20
Edit Download
401 B lrw-r--r-- 2022-06-17 20:50:14
Edit Download
6.61 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
664 B lrw-r--r-- 2020-07-21 22:28:02
Edit Download
20.63 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
2.18 KB lrw-r--r-- 2023-04-05 22:42:26
Edit Download
453 B lrw-r--r-- 2024-12-17 21:37:28
Edit Download
457 B lrw-r--r-- 2021-01-27 00:15:58
Edit Download
36.83 KB lrw-r--r-- 2023-02-04 00:05:20
Edit Download
2.41 KB lrw-r--r-- 2023-09-14 22:16:20
Edit Download
8.28 KB lrw-r--r-- 2023-09-08 19:02:24
Edit Download
13.89 KB lrw-r--r-- 2024-03-19 01:16:14
Edit Download
11.76 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
2.65 KB lrw-r--r-- 2023-09-14 22:16:20
Edit Download
7.43 KB lrw-r--r-- 2023-09-14 22:16:20
Edit Download
17.46 KB lrw-r--r-- 2024-07-19 02:15:14
Edit Download
5.14 KB lrw-r--r-- 2022-09-13 01:17:14
Edit Download
16.70 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
8.26 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
2.92 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
1.32 KB lrw-r--r-- 2022-09-13 01:17:14
Edit Download
4.65 KB lrw-r--r-- 2023-11-02 09:34:24
Edit Download
11.62 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
2.50 KB lrw-r--r-- 2023-06-27 10:15:38
Edit Download
1.97 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
11.26 KB lrw-r--r-- 2024-05-03 05:39:16
Edit Download
5.25 KB lrw-r--r-- 2022-09-13 01:17:14
Edit Download
10.53 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
6.25 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
5.49 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
1.99 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
7.06 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
4.90 KB lrw-r--r-- 2023-10-12 22:04:34
Edit Download
16.86 KB lrw-r--r-- 2024-05-02 09:31:10
Edit Download
22.50 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
3.99 KB lrw-r--r-- 2023-08-22 03:21:20
Edit Download
47.26 KB lrw-r--r-- 2024-06-22 02:56:14
Edit Download
9.22 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
25.25 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
197.84 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
56.31 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
10.46 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
10.95 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
29.26 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
70.52 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
34.89 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
14.78 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
2.57 KB lrw-r--r-- 2022-11-26 01:42:16
Edit Download
39.83 KB lrw-r--r-- 2024-06-14 21:48:12
Edit Download
70.64 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
15.56 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
7.33 KB lrw-r--r-- 2023-02-22 03:09:20
Edit Download
253 B lrw-r--r-- 2024-12-17 21:37:28
Edit Download
7.96 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
3.10 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
969 B lrw-r--r-- 2024-12-17 21:37:28
Edit Download
15.63 KB lrw-r--r-- 2023-09-18 22:11:18
Edit Download
7.22 KB lrw-r--r-- 2023-06-25 02:47:24
Edit Download
12.25 KB lrw-r--r-- 2023-09-22 03:59:12
Edit Download
6.53 KB lrw-r--r-- 2023-06-23 00:27:24
Edit Download
3.42 KB lrw-r--r-- 2022-09-13 01:17:14
Edit Download
5.84 KB lrw-r--r-- 2023-06-23 00:06:26
Edit Download
1.97 KB lrw-r--r-- 2022-12-16 08:02:18
Edit Download
4.30 KB lrw-r--r-- 2023-10-11 16:35:26
Edit Download
2.91 KB lrw-r--r-- 2022-09-13 01:17:14
Edit Download
16.46 KB lrw-r--r-- 2023-09-22 03:59:12
Edit Download
40.60 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
19.69 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
33.92 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
17.12 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
7.27 KB lrw-r--r-- 2024-02-28 09:08:16
Edit Download
6.62 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
16.49 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
1.79 KB lrw-r--r-- 2024-02-06 11:55:14
Edit Download
29.82 KB lrw-r--r-- 2024-04-23 05:55:08
Edit Download
6.67 KB lrw-r--r-- 2023-05-11 20:45:24
Edit Download
9.00 KB lrw-r--r-- 2023-10-06 23:36:22
Edit Download
19.39 KB lrw-r--r-- 2024-06-22 02:56:14
Edit Download
12.01 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
17.11 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
6.74 KB lrw-r--r-- 2024-03-06 15:35:12
Edit Download
30.87 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
4.99 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
3.71 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
24.72 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
29.96 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
6.34 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
154.32 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
6.72 KB lrw-r--r-- 2022-10-04 13:29:14
Edit Download
10.92 KB lrw-r--r-- 2023-05-03 01:15:22
Edit Download
4.77 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
3.38 KB lrw-r--r-- 2022-09-13 01:17:14
Edit Download
11.18 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
62.20 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
2.46 KB lrw-r--r-- 2023-09-08 19:02:24
Edit Download
8.38 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
19.01 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
27.68 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
7.15 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
3.33 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
1.87 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
30.88 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
7.28 KB lrw-r--r-- 2022-09-13 01:17:14
Edit Download
7.35 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
10.75 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
19.10 KB lrw-r--r-- 2024-02-17 08:17:12
Edit Download
18.12 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
39.91 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
5.17 KB lrw-r--r-- 2022-09-13 01:17:14
Edit Download
979 B lrw-r--r-- 2024-02-15 05:57:10
Edit Download
18.44 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
10.24 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
1.77 KB lrw-r--r-- 2024-06-04 21:25:14
Edit Download
34.90 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
7.19 KB lrw-r--r-- 2024-06-06 17:32:16
Edit Download
159.71 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
64.27 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
27.95 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
4.69 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
2.92 KB lrw-r--r-- 2019-01-09 15:34:50
Edit Download
42.63 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
2.25 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
22.46 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
13.01 KB lrw-r--r-- 2024-08-08 05:17:10
Edit Download
3.27 KB lrw-r--r-- 2022-09-13 01:17:14
Edit Download
18.00 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
210.39 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
25.70 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
115.51 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
373 B lrw-r--r-- 2022-09-20 23:47:12
Edit Download
343 B lrw-r--r-- 2022-09-20 23:47:12
Edit Download
338 B lrw-r--r-- 2022-09-20 23:47:12
Edit Download
100.69 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
128.46 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
15.99 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
41.66 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
400 B lrw-r--r-- 2022-06-17 20:50:14
Edit Download
11.10 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
35.84 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
2.24 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
187.07 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
338 B lrw-r--r-- 2022-06-17 20:50:14
Edit Download
37.28 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
4.02 KB lrw-r--r-- 2023-05-03 01:15:22
Edit Download
10.64 KB lrw-r--r-- 2025-10-12 18:26:19
Edit Download
5.38 KB lrw-r--r-- 2024-03-04 23:11:10
Edit Download
3.05 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
2.61 KB lrw-r--r-- 2020-01-29 11:15:18
Edit Download
1.16 KB lrw-r--r-- 2020-01-29 11:15:18
Edit Download
4.04 KB lrw-r--r-- 2024-03-04 23:11:10
Edit Download
3.71 KB lrw-r--r-- 2020-01-29 11:15:18
Edit Download
22.86 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
9.52 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
334.88 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
280.81 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
14.22 KB lrw-r--r-- 2024-05-27 06:21:14
Edit Download
8.38 KB lrw-r--r-- 2024-05-27 06:21:14
Edit Download
168.46 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
20.76 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
24.72 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
5.72 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
4.63 KB lrw-r--r-- 2023-07-11 08:08:26
Edit Download
72.73 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
66.92 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
154.10 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
55.12 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
162 B lrw-r--r-- 2019-10-09 02:49:04
Edit Download
61.58 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
215.33 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
63.71 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
25.24 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
4.81 KB lrw-r--r-- 2024-06-14 06:20:14
Edit Download
6.48 KB lrw-r--r-- 2023-02-24 11:53:20
Edit Download
21.25 KB lrw-r--r-- 2024-04-13 03:17:14
Edit Download
2.68 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
89.44 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
19.42 KB lrw-r--r-- 2024-03-26 02:49:18
Edit Download
3.69 KB lrw-r--r-- 2023-05-02 20:56:24
Edit Download
4.10 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
40.35 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
25.38 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
43.33 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
100.65 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
6.18 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
119.82 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
34.63 KB lrw-r--r-- 2023-06-08 17:24:22
Edit Download
6.94 KB lrw-r--r-- 2024-05-28 01:59:16
Edit Download
67.04 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
10.62 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
284.88 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
36.17 KB lrw-r--r-- 2023-08-24 18:31:16
Edit Download
200 B lrw-r--r-- 2020-11-12 21:47:08
Edit Download
200 B lrw-r--r-- 2020-11-12 21:47:08
Edit Download
97.91 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
30.02 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
19.08 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
5.06 KB lrw-r--r-- 2022-04-07 01:03:04
Edit Download
255 B lrw-r--r-- 2020-11-17 09:22:06
Edit Download
22.57 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
130.14 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
7.53 KB lrw-r--r-- 2024-12-17 21:37:28
Edit Download
258 B lrw-r--r-- 2020-02-06 17:03:12
Edit Download
23.49 KB lrw-r--r-- 2024-05-25 12:34:12
Edit Download
3.16 KB lrw-r--r-- 2021-05-16 03:08:06
Edit Download
8.36 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
441 B lrw-r--r-- 2020-11-12 21:47:08
Edit Download
7.39 KB lrw-r--r-- 2024-05-03 14:17:12
Edit Download
172.10 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
544 B lrw-r--r-- 2023-10-01 09:52:28
Edit Download
2.94 KB lrw-r--r-- 2020-05-26 19:07:10
Edit Download
23.59 KB lrw-r--r-- 2024-02-22 05:56:08
Edit Download
1.49 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
2.77 KB lrw-r--r-- 2023-12-08 17:02:24
Edit Download
6.09 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
8.50 KB lrw-r--r-- 2024-06-12 15:41:14
Edit Download
131.16 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
36.62 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
171.70 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
6.41 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
1.06 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
69.06 KB lrw-r--r-- 2025-10-08 17:06:31
Edit Download
445 B lrw-r--r-- 2022-07-22 08:15:12
Edit Download
799 B lrw-r--r-- 2025-10-08 17:06:31
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).